mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-30 15:37:36 +01:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user