Skip to content

Commit

Permalink
changes for necrotic metabolism
Browse files Browse the repository at this point in the history
  • Loading branch information
zeskorion committed Jan 17, 2024
1 parent ce648d3 commit 58b1516
Show file tree
Hide file tree
Showing 40 changed files with 190 additions and 100 deletions.
2 changes: 2 additions & 0 deletions code/datums/diseases/advance/symptoms/alcohol.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
return
var/mob/living/carbon/M = A.affected_mob
var/list/warningstrings = list()
if(M.stat == DEAD)
return
switch(A.stage + severity)
if(6 to 7)
warningstrings = list("You feel drunk", "You feel a bit woozy")
Expand Down
8 changes: 5 additions & 3 deletions code/datums/diseases/advance/symptoms/beesymptom.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
prefixes = list("Hive ")
bodies = list("Bees", "Hive")
threshold_desc = "<b>Resistance 12:</b> The bees become symbiotic with the host, synthesizing honey and no longer stinging the stomach lining, and no longer attacking the host. Bees will also contain honey, unless transmission exceeds 10.<br>\
<b>Transmission 10:</b> Bees now contain a completely random toxin."
<b>Transmission 8:</b> Bees now contain a completely random toxin."

/datum/symptom/beesease/severityset(datum/disease/advance/A)
. = ..()
if(A.transmission >= 10)
if(A.transmission >= 8)
severity += 2
if(A.resistance >= 12)
severity -= 4
Expand All @@ -28,13 +28,15 @@
return
if(A.resistance >= 12)
honey = TRUE
if(A.transmission >= 10)
if(A.transmission >= 8)
toxic_bees = TRUE

/datum/symptom/beesease/Activate(datum/disease/advance/A)
if(!..())
return
var/mob/living/M = A.affected_mob
if(M.stat == DEAD)
return
switch(A.stage)
if(2)
if(prob(2))
Expand Down
2 changes: 2 additions & 0 deletions code/datums/diseases/advance/symptoms/blobspores.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
if(!..())
return
var/mob/living/M = A.affected_mob
if(M.stat == DEAD)
return
switch(A.stage)
if(1)
if(prob(2))
Expand Down
10 changes: 6 additions & 4 deletions code/datums/diseases/advance/symptoms/braindamage.dm
Original file line number Diff line number Diff line change
Expand Up @@ -36,20 +36,22 @@
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1)
if(prob(10))
if(prob(10) && M.stat != DEAD)
to_chat(M, "<span class='notice'>Your head feels strange...</span>")
if(2, 3)
if(prob(10))
if(prob(10) && M.stat != DEAD)
to_chat(M, "<span class='danger'>Your brain begins hurting...</span>")
if(4, 5)
if(lethal)
if(prob(35))
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, (rand(5,90)), 200)
to_chat(M, "<span class='danger'>Your brain hurts immensely!</span>")
if(M.stat != DEAD)
to_chat(M, "<span class='danger'>Your brain hurts immensely!</span>")
else
if(prob(35))
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, (rand(5,90)), 120)
to_chat(M, "<span class='danger'>Your head hurts immensely!</span>")
if(M.stat != DEAD)
to_chat(M, "<span class='danger'>Your head hurts immensely!</span>")
if(moretrauma && A.stage == 5)
givetrauma(A, 10)

Expand Down
3 changes: 2 additions & 1 deletion code/datums/diseases/advance/symptoms/choking.dm
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,9 @@ Bonus
if(!..())
return
var/mob/living/M = A.affected_mob
if(HAS_TRAIT(M, TRAIT_NOBREATH)) //if they don't breath, why would being unable to breath kill them?
if(HAS_TRAIT(M, TRAIT_NOBREATH) || M.stat == DEAD) //if they don't breath, why would being unable to breath kill them?
return

switch(A.stage)
if(3, 4)
to_chat(M, "<span class='warning'><b>[pick("Your windpipe feels thin.", "Your lungs feel small.")]</span>")
Expand Down
24 changes: 14 additions & 10 deletions code/datums/diseases/advance/symptoms/clockwork.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
var/mob/living/carbon/human/H = A.affected_mob
switch(A.stage)
if(3, 4)
if(replaceorgans)
if(replaceorgans && H.stat <= DEAD)
to_chat(H, "<span class='warning'><b>[pick("You feel a grinding pain in your abdomen.", "You exhale a jet of steam.")]</span>")
if(5)
if(replaceorgans || replacebody)
Expand Down Expand Up @@ -78,7 +78,7 @@
else
var/obj/item/organ/stomach/clockwork/organ = new()
organ.Insert(H, TRUE, FALSE)
if(prob(40))
if(prob(40) && H.stat != DEAD)
to_chat(H, "<span class='userdanger'>You feel a stabbing pain in your abdomen!</span>")
H.emote("scream")
return TRUE
Expand All @@ -87,14 +87,15 @@
if(robustbits)
organ.damage_multiplier = 0.5
organ.Insert(H, TRUE, FALSE)
to_chat(H, "<span class='warning'>Your ears pop.</span>")
if(H.stat != DEAD)
to_chat(H, "<span class='warning'>Your ears pop.</span>")
return TRUE
if(ORGAN_SLOT_EYES)
var/obj/item/organ/eyes/robotic/clockwork/organ = new()
if(robustbits)
organ.flash_protect = 1
organ.Insert(H, TRUE, FALSE)
if(prob(40))
if(prob(40) && H.stat != DEAD)
to_chat(H, "<span class='userdanger'>You feel a stabbing pain in your eyeballs!</span>")
H.emote("scream")
return TRUE
Expand All @@ -110,22 +111,23 @@
organ.BZ_trip_balls_min = 15
organ.gas_stimulation_min = 15
organ.Insert(H, TRUE, FALSE)
if(prob(40))
if(prob(40) && H.stat != DEAD)
to_chat(H, "<span class='userdanger'>You feel a stabbing pain in your chest!</span>")
H.emote("scream")
return TRUE
if(ORGAN_SLOT_HEART)
var/obj/item/organ/heart/clockwork/organ = new()
organ.Insert(H, TRUE, FALSE)
to_chat(H, "<span class='userdanger'>You feel a stabbing pain in your chest!</span>")
H.emote("scream")
if(H.stat != DEAD)
to_chat(H, "<span class='userdanger'>You feel a stabbing pain in your chest!</span>")
H.emote("scream")
return TRUE
if(ORGAN_SLOT_LIVER)
var/obj/item/organ/liver/clockwork/organ = new()
if(robustbits)
organ.toxTolerance = 7
organ.Insert(H, TRUE, FALSE)
if(prob(40))
if(prob(40) && H.stat <= DEAD)
to_chat(H, "<span class='userdanger'>You feel a stabbing pain in your abdomen!</span>")
H.emote("scream")
return TRUE
Expand All @@ -147,7 +149,8 @@
if(robustbits)
organ.flight_level = WINGS_FLYING
organ.Insert(H, TRUE, FALSE)
to_chat(H, "<span class='warning'>Your wings feel stiff.</span>")
if(H.stat <= DEAD)
to_chat(H, "<span class='warning'>Your wings feel stiff.</span>")
return TRUE
if(replacebody)
for(var/obj/item/bodypart/O in H.bodyparts)
Expand Down Expand Up @@ -219,7 +222,8 @@
var/mob/living/carbon/human/H = A.affected_mob
REMOVE_TRAIT(H, TRAIT_NANITECOMPATIBLE, DISEASE_TRAIT)
if(A.stage >= 5 && (replaceorgans || replacebody)) //sorry. no disease quartets allowed
to_chat(H, "<span class='userdanger'>You feel lighter and springier as your innards lose their clockwork facade.</span>")
if(H.stat != DEAD)
to_chat(H, "<span class='userdanger'>You feel lighter and springier as your innards lose their clockwork facade.</span>")
H.dna.species.regenerate_organs(H, replace_current = TRUE)
for(var/obj/item/bodypart/O in H.bodyparts)
if(!IS_ORGANIC_LIMB(O))
Expand Down
2 changes: 2 additions & 0 deletions code/datums/diseases/advance/symptoms/cockroach.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
if(!..())
return
var/mob/living/M = A.affected_mob
if(M.stat == DEAD)
return
switch(A.stage)
if(2)
if(prob(50))
Expand Down
2 changes: 2 additions & 0 deletions code/datums/diseases/advance/symptoms/confusion.dm
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ Bonus
if(!..())
return
var/mob/living/carbon/M = A.affected_mob
if(M.stat == DEAD)
return
switch(A.stage)
if(1, 2, 3, 4)
if(prob(base_message_chance) && !suppress_warning)
Expand Down
2 changes: 2 additions & 0 deletions code/datums/diseases/advance/symptoms/cough.dm
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ BONUS
if(!..())
return
var/mob/living/M = A.affected_mob
if(M.stat == DEAD)
return
switch(A.stage)
if(1, 2, 3)
if(prob(base_message_chance) && !suppress_warning)
Expand Down
2 changes: 2 additions & 0 deletions code/datums/diseases/advance/symptoms/deafness.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ Bonus
if(!..())
return
var/mob/living/carbon/M = A.affected_mob
if(M.stat == DEAD)
return
switch(A.stage)
if(3, 4)
if(prob(base_message_chance) && !suppress_warning)
Expand Down
2 changes: 2 additions & 0 deletions code/datums/diseases/advance/symptoms/fever.dm
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ Bonus
if(!..())
return
var/mob/living/carbon/M = A.affected_mob
if(M.stat == DEAD)
return
if(!unsafe || A.stage < 4)
to_chat(M, "<span class='warning'>[pick("You feel hot.", "You feel like you're burning.")]</span>")
else
Expand Down
30 changes: 17 additions & 13 deletions code/datums/diseases/advance/symptoms/fire.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,18 +55,20 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(3)
if(prob(base_message_chance) && !suppress_warning)
if(prob(base_message_chance) && !suppress_warning && M.stat != DEAD)
to_chat(M, "<span class='warning'>[pick("You feel hot.", "You hear a crackling noise.", "You smell smoke.")]</span>")
if(4)
Firestacks_stage_4(M, A)
M.IgniteMob()
to_chat(M, "<span class='userdanger'>Your skin bursts into flames!</span>")
M.emote("scream")
if(M.stat != DEAD)
to_chat(M, "<span class='userdanger'>Your skin bursts into flames!</span>")
M.emote("scream")
if(5)
Firestacks_stage_5(M, A)
M.IgniteMob()
to_chat(M, "<span class='userdanger'>Your skin erupts into an inferno!</span>")
M.emote("scream")
if(M.stat != DEAD)
to_chat(M, "<span class='userdanger'>Your skin erupts into an inferno!</span>")
M.emote("scream")

/datum/symptom/fire/proc/Firestacks_stage_4(mob/living/M, datum/disease/advance/A)
M.adjust_fire_stacks(1 * power)
Expand Down Expand Up @@ -153,37 +155,39 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(3)
if(prob(base_message_chance))
if(prob(base_message_chance) && M.stat <= DEAD)
to_chat(M, "<span class='warning'>[pick("Your veins boil.", "You feel hot.", "You smell meat cooking.")]</span>")
if(4)
if(M.fire_stacks < 0)
M.visible_message("<span class='warning'>[M]'s sweat sizzles and pops on contact with water!</span>")
explosion(get_turf(M),-1,(-1 + explosion_power),(2 * explosion_power))
Alkali_fire_stage_4(M, A)
M.IgniteMob()
to_chat(M, "<span class='userdanger'>Your sweat bursts into flames!</span>")
M.emote("scream")
if(M.stat != DEAD)
to_chat(M, "<span class='userdanger'>Your sweat bursts into flames!</span>")
M.emote("scream")
if(5)
if(M.fire_stacks < 0)
if(M.fire_stacks < 0 && M.stat <= DEAD)
M.visible_message("<span class='warning'>[M]'s sweat sizzles and pops on contact with water!</span>")
explosion(get_turf(M),-1,(-1 + explosion_power),(2 * explosion_power))
Alkali_fire_stage_5(M, A)
M.IgniteMob()
to_chat(M, "<span class='userdanger'>Your skin erupts into an inferno!</span>")
M.emote("scream")
if(M.stat != DEAD)
to_chat(M, "<span class='userdanger'>Your skin erupts into an inferno!</span>")
M.emote("scream")

/datum/symptom/alkali/proc/Alkali_fire_stage_4(mob/living/M, datum/disease/advance/A)
var/get_stacks = 6 * power
M.adjust_fire_stacks(get_stacks)
M.take_overall_damage(burn = get_stacks / 2, required_status = BODYTYPE_ORGANIC)
if(chems)
if(chems && M.stat != DEAD)
M.reagents.add_reagent(/datum/reagent/clf3, 2 * power)
return 1

/datum/symptom/alkali/proc/Alkali_fire_stage_5(mob/living/M, datum/disease/advance/A)
var/get_stacks = 8 * power
M.adjust_fire_stacks(get_stacks)
M.take_overall_damage(burn = get_stacks, required_status = BODYTYPE_ORGANIC)
if(chems)
if(chems && M.stat != DEAD)
M.reagents.add_reagent_list(list(/datum/reagent/napalm = 4 * power, /datum/reagent/clf3 = 4 * power))
return 1
9 changes: 5 additions & 4 deletions code/datums/diseases/advance/symptoms/flesh_eating.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,11 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(2,3)
if(prob(base_message_chance))
if(prob(base_message_chance) && M.stat != DEAD)
to_chat(M, "<span class='warning'>[pick("You feel a sudden pain across your body.", "Drops of blood appear suddenly on your skin.")]</span>")
if(4,5)
to_chat(M, "<span class='userdanger'>[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]</span>")
if(M.stat != DEAD)
to_chat(M, "<span class='userdanger'>[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]</span>")
Flesheat(M, A)

/datum/symptom/flesh_eating/proc/Flesheat(mob/living/M, datum/disease/advance/A)
Expand Down Expand Up @@ -145,13 +146,13 @@ Bonus
if(2,3)
if(MOB_UNDEAD in M.mob_biotypes)//i dont wanna do it like this but i gotta
return
if(prob(base_message_chance) && !suppress_warning)
if(prob(base_message_chance) && !suppress_warning && M.stat != DEAD)
to_chat(M, "<span class='warning'>[pick("You feel your body break apart.", "Your skin rubs off like dust.")]</span>")
if(4,5)
Flesh_death(M, A)
if(MOB_UNDEAD in M.mob_biotypes) //ditto
return
if(prob(base_message_chance / 2)) //reduce spam
if(prob(base_message_chance / 2) && M.stat != DEAD) //reduce spam
to_chat(M, "<span class='userdanger'>[pick("You feel your muscles weakening.", "Some of your skin detaches itself.", "You feel sandy.")]</span>")

/datum/symptom/flesh_death/proc/Flesh_death(mob/living/M, datum/disease/advance/A)
Expand Down
2 changes: 1 addition & 1 deletion code/datums/diseases/advance/symptoms/genetics.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Bonus
if(!..())
return
var/mob/living/carbon/C = A.affected_mob
if(!C.has_dna())
if(!C.has_dna() || C.stat == DEAD)
return
switch(A.stage)
if(4, 5)
Expand Down
2 changes: 2 additions & 0 deletions code/datums/diseases/advance/symptoms/hallucigen.dm
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ Bonus
if(!..())
return
var/mob/living/carbon/M = A.affected_mob
if(M.stat == DEAD)
return
var/list/healthy_messages = list("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.",\
"Your eyes feel great.", "You are now blinking manually.", "You don't feel the need to blink.")
switch(A.stage)
Expand Down
2 changes: 2 additions & 0 deletions code/datums/diseases/advance/symptoms/headache.dm
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ BONUS
if(!..())
return
var/mob/living/M = A.affected_mob
if(M.stat == DEAD)
return
if(power < 2)
if(prob(base_message_chance) || A.stage >=4)
to_chat(M, "<span class='warning'>[pick("Your head hurts.", "Your head pounds.")]</span>")
Expand Down

0 comments on commit 58b1516

Please sign in to comment.