Skip to content

Commit

Permalink
Updates the drowned sisters and penitent girl
Browse files Browse the repository at this point in the history
  • Loading branch information
Coxswain-Navigator committed Oct 21, 2023
1 parent ef4645c commit 9ef4956
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
ABNORMALITY_WORK_ATTACHMENT = 50,
ABNORMALITY_WORK_REPRESSION = 20
)
work_damage_amount = 1 //Calculated later
start_qliphoth = 3
work_damage_amount = 5 //Calculated later
work_damage_type = WHITE_DAMAGE
pixel_x = -32
base_pixel_x = -32
Expand All @@ -25,15 +26,65 @@
gift_type = /datum/ego_gifts/sorority
abnormality_origin = ABNORMALITY_ORIGIN_WONDERLAB

var/breaching = FALSE

/mob/living/simple_animal/hostile/abnormality/drownedsisters/AttemptWork(mob/living/carbon/human/user, work_type)
//Deals scaling work damage based off your stats.
//Work Mechanics
/mob/living/simple_animal/hostile/abnormality/drownedsisters/AttemptWork(mob/living/carbon/human/user, work_type) //Deals scaling work damage based off your stats.
if(breaching)
return FALSE
work_damage_amount = (get_attribute_level(user, PRUDENCE_ATTRIBUTE) -60) * -0.5
work_damage_amount = max(1, work_damage_amount) //So you don't get healing
return TRUE
work_damage_amount = max(5, work_damage_amount) //So you don't get healing
return ..()

/mob/living/simple_animal/hostile/abnormality/drownedsisters/PostWorkEffect(mob/living/carbon/human/user, work_type, pe, work_time)
// okay so according to the lore you're not really supposed to remember the stories she says so we're going to make it so your sanity goes back up
if(!user.sanity_lost && pe != 0)
user.adjustSanityLoss(-get_attribute_level(user, PRUDENCE_ATTRIBUTE))
..()
switch(work_type)
if(ABNORMALITY_WORK_INSTINCT)
datum_reference.qliphoth_change(-1)
if(ABNORMALITY_WORK_ATTACHMENT)
if(datum_reference.qliphoth_meter == 3)
FloodRoom()
else
datum_reference.qliphoth_change(1)
return

//Breaches
/mob/living/simple_animal/hostile/abnormality/drownedsisters/ZeroQliphoth(mob/living/carbon/human/user)
datum_reference.qliphoth_change(3)
if(!user)
return
to_chat(user, "<span class='userdanger'>You are attacked by an invisible assailant!</span>")
playsound(get_turf(src), 'sound/abnormalities/jangsan/tigerbite.ogg', 75, 0)
user.apply_damage(200, RED_DAMAGE, null, user.run_armor_check(null, BLACK_DAMAGE))
if(user.health < 0 || user.stat == DEAD)
user.gib()
return

/mob/living/simple_animal/hostile/abnormality/drownedsisters/proc/FloodRoom() //Qliphoth Went over max
breaching = TRUE
for(var/turf/open/T in view(7, src))
new /obj/effect/temp_visual/water_waves(T)
playsound(get_turf(src), 'sound/abnormalities/piscinemermaid/waterjump.ogg', 75, 0)
var/list/teleport_potential = list()
for(var/turf/T in GLOB.department_centers)
teleport_potential += T
if(!LAZYLEN(teleport_potential))
return
for(var/mob/living/carbon/human/H in view(7, src))
var/turf/teleport_target = pick(teleport_potential)
TeleportPerson(H, teleport_target)
sleep(5 SECONDS)
datum_reference.qliphoth_meter = 3
death()

/mob/living/simple_animal/hostile/abnormality/drownedsisters/proc/TeleportPerson(mob/living/carbon/human/H, turf/teleport_target)
set waitfor = FALSE
to_chat(H, "<span class='userdanger'>You can't breathe!</span>")
H.AdjustSleeping(10 SECONDS)
animate(H, alpha = 0, time = 2 SECONDS)
sleep(2 SECONDS)
H.forceMove(get_turf(teleport_target)) // See ya!
animate(H, alpha = 255, time = 0 SECONDS)
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#define STATUS_EFFECT_PENITENCE /datum/status_effect/penitence
//Sorry Lads, not much I can do here - Kirie
//I tried to improve it. - Coxswain
/mob/living/simple_animal/hostile/abnormality/penitentgirl
name = "Penitent Girl"
desc = "A girl with hair flowing over her eyes."
Expand All @@ -25,38 +26,83 @@
gift_type = /datum/ego_gifts/sorrow
abnormality_origin = ABNORMALITY_ORIGIN_WONDERLAB


//Work Mechanics
/mob/living/simple_animal/hostile/abnormality/penitentgirl/AttemptWork(mob/living/carbon/human/user, work_type)
//Temp too high, random damage type time.
if(get_attribute_level(user, TEMPERANCE_ATTRIBUTE) >= 40)
//Prudence too high, random damage type time.
if(get_attribute_level(user, PRUDENCE_ATTRIBUTE) >= 40)
work_damage_type = pick(WHITE_DAMAGE, RED_DAMAGE, BLACK_DAMAGE, PALE_DAMAGE)
return TRUE

/mob/living/simple_animal/hostile/abnormality/penitentgirl/PostWorkEffect(mob/living/carbon/human/user, work_type, pe, work_time)
// you are going to cut your own leg off
if(get_attribute_level(user, TEMPERANCE_ATTRIBUTE) < 40)
user.apply_status_effect(STATUS_EFFECT_PENITENCE)
to_chat(user, "<span class='danger'>Something feels strange.</span>") //I have to write something here
if((get_attribute_level(user, TEMPERANCE_ATTRIBUTE) < 40) && (get_attribute_level(user, PRUDENCE_ATTRIBUTE) < 40))
user.apply_damage(250, WHITE_DAMAGE, null, user.run_armor_check(null, WHITE_DAMAGE), spread_damage = TRUE)//DIE!
work_damage_type = initial(work_damage_type)

if(user.sanity_lost)
user.apply_status_effect(STATUS_EFFECT_PENITENCE)
user.say("Please, chop off my feet!")
QDEL_NULL(user.ai_controller)
user.ai_controller = /datum/ai_controller/insane/wander/penitence
user.InitializeAIController()
user.apply_status_effect(/datum/status_effect/panicked_type/wander/penitence)


//Status Effect
/datum/status_effect/penitence
id = "penitence"
status_type = STATUS_EFFECT_UNIQUE
duration = 600 //You will die 60 seconds from now
duration = 600 //Cut off your own legs after 60 seconds if you are still insane
alert_type = null

/datum/status_effect/penitence/on_apply()
. = ..()
if(!ishuman(owner))
return FALSE //Autoremoves it
owner.add_overlay(mutable_appearance('icons/mob/clothing/feet.dmi', "red_shoes", -ABOVE_MOB_LAYER)) //Yes I am reusing assets! No, I am not sorry!

/datum/status_effect/penitence/on_remove()
. = ..()
owner.cut_overlay(mutable_appearance('icons/mob/clothing/feet.dmi', "red_shoes", -ABOVE_MOB_LAYER))
if(ishuman(owner))
var/mob/living/carbon/human/user = owner
if(!user.sanity_lost) //Are we still insane? If not, we get to keep our legs.
return
if(HAS_TRAIT(user, TRAIT_NODISMEMBER))
return
var/obj/item/bodypart/l_leg = user.get_bodypart(BODY_ZONE_L_LEG)
var/obj/item/bodypart/r_leg = user.get_bodypart(BODY_ZONE_R_LEG)
var/did_the_thing = (l_leg?.dismember() && r_leg?.dismember()) //not all limbs can be removed, so important to check that we did. the. thing.
if(!did_the_thing)
return
to_chat(user, "<span class='userdanger'>You need to rip them off NOW!</span>") //I have to write something here
if(user.stat < UNCONSCIOUS) //Not unconscious/dead
user.say("I did it! I am finally rid of those shoes!")
user.adjustBruteLoss(300)//DIE! For real, this time.

/datum/status_effect/penitence/tick()
if(!ishuman(owner))
return
var/mob/living/carbon/human/user = owner
if(!user.sanity_lost && !QDELETED(user))
qdel(src)
else
user.emote("spin")

#undef STATUS_EFFECT_PENITENCE

//Sanity Lines
// Insanity lines
/datum/ai_controller/insane/wander/penitence
lines_type = /datum/ai_behavior/say_line/insanity_penitence

/datum/ai_behavior/say_line/insanity_penitence
lines = list(
"Do you want to dance?",
"Why do I want to dance? Why do you want to live?",
"Check out these moves!",
"Hahaha...",
"I feel so alive!"
)

/datum/status_effect/panicked_type/wander/penitence
icon = "penitence"
10 changes: 7 additions & 3 deletions code/modules/paperwork/records/info/teth.dm
Original file line number Diff line number Diff line change
Expand Up @@ -161,15 +161,19 @@
abno_type = /mob/living/simple_animal/hostile/abnormality/penitentgirl
abno_code = "T-01-115"
abno_info = list(
"When an Agent, who had Temperance Level 1, completed the work process, they eventually cut off their own feet.",
"When an Agent, who had Temperance Level 2 or higher, started the work process, Penitent Girl’s work damage type changed.")
"When an Agent, who had Temperance and Prudence Level 1, completed the work process, the employee began to panic, and started dancing frantically. When left alone for too long. the employee cut off their own feet.",
"When an Agent, who had Prudence Level 2 or higher, started the work process, Penitent Girl’s work damage type changed.")

//Drowned Sisters
/obj/item/paper/fluff/info/teth/drowned
abno_type = /mob/living/simple_animal/hostile/abnormality/drownedsisters
abno_code = "T-01-133"
abno_info = list(
"The work damage done to the employee working on The Drowned Sisters increased inversely to their Prudence.",
"When the Employee perfomed instinct work, the Qliphoth counter lowered.",
"When the Qliphoth counter reached zero, the employee mysteriously died on the spot. An autopsy revealed scratch marks from an incredibly large feline.",
"When the Employee perfomed attachment work, the Qliphoth counter increased.",
"If the Qliphoth counter increased while already at its maximum, the cell was flooded with water. Any employees inside eventually awoke somewhere else in the facility.",
"The work damage done to the employee working on The Drowned Sisters increased immensely when Prudence was low, especially below level 2.",
"After work was completed, the employee was unable to recall their conversation with The Drowned Sisters. It was found that the employee’s sanity was slightly restored.")

//Void Dream
Expand Down
Binary file modified icons/effects/effects.dmi
Binary file not shown.

0 comments on commit 9ef4956

Please sign in to comment.