More Zombie Tweaks (#25789)

* lmao

* text fix

* lol
This commit is contained in:
Contrabang
2024-06-12 22:02:53 +00:00
committed by GitHub
parent e7e340598c
commit a7c273463d
12 changed files with 47 additions and 31 deletions
+3
View File
@@ -29,6 +29,7 @@
return
zombie_rejuv()
to_chat(zomboid, "<span class='zombielarge'>We... Awaken...</span>")
zomboid.notify_ghost_cloning("Your zombie body has risen again, re-enter your corpse to continue the feast!", source = zomboid)
// If no client, but they were a player thats not SSD (debrained, revived but hasn't returned to body, etc)
if(zomboid.stat != CONSCIOUS || HAS_TRAIT(zomboid, TRAIT_HANDS_BLOCKED))
@@ -128,6 +129,8 @@
target = pick(targets)
if(zomboid.Adjacent(target) && safe_active_hand(zomboid))
if(!zomboid.get_active_hand())
zomboid.put_in_hands(new /obj/item/zombie_claw())
zomboid.a_intent = INTENT_HARM
zomboid.ClickOn(target)
return
+6 -3
View File
@@ -89,14 +89,17 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease))
stage = min(stage, max_stages)
if(!cure && prob(stage_prob))
handle_stage_advance(cure)
return handle_cure_testing(cure)
/datum/disease/proc/handle_stage_advance(has_cure = FALSE)
if(!has_cure && prob(stage_prob))
stage = min(stage + 1, max_stages)
if(!discovered && stage >= CEILING(max_stages * discovery_threshold, 1)) // Once we reach a late enough stage, medical HUDs can pick us up even if we regress
discovered = TRUE
affected_mob.med_hud_set_status()
return handle_cure_testing(cure)
/datum/disease/proc/handle_cure_testing(has_cure = FALSE)
if(has_cure && prob(cure_chance))
stage = max(stage - 1, 1)
+16 -7
View File
@@ -13,10 +13,12 @@
allow_dead = TRUE
disease_flags = CAN_CARRY
virus_heal_resistant = TRUE
stage_prob = 1
stage_prob = 100 // It isn't actually 100%, but is instead based on a timer
cure_chance = 80
/// How far this particular virus is in being cured (0-4)
var/cure_stage = 0
/// Cooldown until the virus can advance to the next stage
COOLDOWN_DECLARE(stage_timer)
/datum/disease/zombie/stage_act()
if(stage == 8)
@@ -34,7 +36,7 @@
SSticker.mode.zombie_infected -= affected_mob
if(affected_mob.reagents.has_reagent("zombiecure4"))
return
handle_rot(TRUE)
handle_rot()
stage = 7
return FALSE
SSticker.mode.zombie_infected |= affected_mob
@@ -79,17 +81,24 @@
if(stage == 6 && !affected_mob.reagents.has_reagent("zombiecure3")) // cure 3 can delay it, but not cure it
if(prob(10))
to_chat(affected_mob, "<span class='danger zombie'>You feel your flesh rotting.</span>")
handle_rot()
if(prob(10) || affected_mob.stat != DEAD)
handle_rot()
if(7)
if(!handle_rot(TRUE))
if(!handle_rot())
stage = 6
return
/datum/disease/zombie/handle_stage_advance(has_cure = FALSE)
if(!stage_timer)
COOLDOWN_START(src, stage_timer, 1 MINUTES) // for the first infection
if(affected_mob.stat != DEAD || !prob(30)) // when the body is dead, it always has a 30% chance to advance regardless
if(!COOLDOWN_FINISHED(src, stage_timer))
return
COOLDOWN_START(src, stage_timer, 1 MINUTES)
..()
/datum/disease/zombie/proc/handle_rot(forced = FALSE)
if(!prob(20) && !forced && affected_mob.stat != DEAD)
return FALSE
/datum/disease/zombie/proc/handle_rot()
var/mob/living/carbon/human/H = affected_mob
if(!istype(H))
return FALSE