Datumizes changelings and refactors related code (#17774)

* it's finally here

unfucks tgui

* oops, I don't want to change the mode

* charlie and moxian review

* charlie review II + some GC fixes

* rebase to fix conflicts + tgui bundle deconflict

* charlie review III + affected review

* final? tweaks
This commit is contained in:
SteelSlayer
2022-06-18 20:55:49 +01:00
committed by GitHub
parent 0dc7d74cdc
commit c3fcf3e256
62 changed files with 1100 additions and 1129 deletions
+11 -7
View File
@@ -358,34 +358,38 @@
tick_interval = 4 SECONDS
alert_type = null
var/stacks = 0
/// A reference to the changeling's changeling antag datum.
var/datum/antagonist/changeling/cling
/datum/status_effect/speedlegs/on_apply()
ADD_TRAIT(owner, TRAIT_GOTTAGOFAST, "changeling")
cling = owner.mind.has_antag_datum(/datum/antagonist/changeling)
ADD_TRAIT(owner, TRAIT_GOTTAGOFAST, CHANGELING_TRAIT)
return TRUE
/datum/status_effect/speedlegs/tick()
if(owner.stat || owner.staminaloss >= 90 || owner.mind.changeling.chem_charges <= (stacks + 1) * 3)
if(owner.stat || owner.staminaloss >= 90 || cling.chem_charges <= (stacks + 1) * 3)
to_chat(owner, "<span class='danger'>Our muscles relax without the energy to strengthen them.</span>")
owner.Weaken(6 SECONDS)
owner.remove_status_effect(STATUS_EFFECT_SPEEDLEGS)
qdel(src)
else
stacks++
owner.mind.changeling.chem_charges -= stacks * 3 //At first the changeling may regenerate chemicals fast enough to nullify fatigue, but it will stack
cling.chem_charges -= stacks * 3 //At first the changeling may regenerate chemicals fast enough to nullify fatigue, but it will stack
if(stacks == 7) //Warning message that the stacks are getting too high
to_chat(owner, "<span class='warning'>Our legs are really starting to hurt...</span>")
/datum/status_effect/speedlegs/before_remove()
if(stacks < 3 && !(owner.stat || owner.staminaloss >= 90 || owner.mind.changeling.chem_charges <= (stacks + 1) * 3)) //We don't want people to turn it on and off fast, however, we need it forced off if the 3 later conditions are met.
if(stacks < 3 && !(owner.stat || owner.staminaloss >= 90 || cling.chem_charges <= (stacks + 1) * 3)) //We don't want people to turn it on and off fast, however, we need it forced off if the 3 later conditions are met.
to_chat(owner, "<span class='notice'>Our muscles just tensed up, they will not relax so fast.</span>")
return FALSE
return TRUE
/datum/status_effect/speedlegs/on_remove()
REMOVE_TRAIT(owner, TRAIT_GOTTAGOFAST, "changeling")
REMOVE_TRAIT(owner, TRAIT_GOTTAGOFAST, CHANGELING_TRAIT)
if(!owner.IsWeakened())
to_chat(owner, "<span class='notice'>Our muscles relax.</span>")
if(stacks >= 7)
to_chat(owner, "<span class='danger'>We collapse in exhaustion.</span>")
owner.Weaken(6 SECONDS)
owner.emote("gasp")
owner.mind.changeling.geneticdamage += stacks
cling.genetic_damage += stacks
cling = null