[Ready] Refactors stuns and status effects. (#17579)

* Fixes reviver runtime

* Confusion status effect

* Dizzy status effect

* Drowsiness status effect

* decaying -> transient

* Drunkenness status effect

* why use timer when SSfastprocessing work good

* stuns (mostly)

* weaken and immobalise

* stun/weaken times

* update_flags redundancies.

* Slowed()

* Silence + fixes transient decay

* Jittery

* sleeping

* Paralyze -> weaken

* Cult sluring

* paralyse

* Stammer

* slurring + projectile cleanups

* losebreath

* Hallucination

* forgor this

* eyeblurry

* eye blind

* Druggy

* affected didn't like my spacing

* review pass

* second review pass

* some cleanups

* documentation and signal framework

* confusion fix

* Fixes spec_stun

* rejuv fix

* removes a TODO

* conflicted myself

* fixes

* self review

* review

* removes TODOs

* adminfreeze

* TM fixes

* hallucination fix + others

* tones down alchol and runtime fixes

* confusion overlay suggestion

* more fixes

* runtime fix

* losebreath fix

* clamp => directional bounded sum

* steel review

* oops

Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>

* reduces the dizziness cycle rate

* borg hotfix

* sanctified decursening

Co-authored-by: mochi <1496804+dearmochi@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
This commit is contained in:
Charlie
2022-05-24 16:35:26 +01:00
committed by GitHub
co-authored by SteelSlayer mochi
parent b32fb92770
commit 0f7a8707ef
311 changed files with 2268 additions and 2155 deletions
@@ -60,7 +60,7 @@
for(var/obj/item/grab/G in user.grabbed_by)
var/mob/living/carbon/M = G.assailant
user.visible_message("<span class='warning'>[user] spits acid at [M]'s face and slips out of their grab!</span>")
M.Stun(1) //Drops the grab
M.Stun(2 SECONDS) //Drops the grab
M.apply_damage(5, BURN, "head", M.run_armor_check("head", "melee"))
user.SetStunned(0) //This only triggers if they are grabbed, to have them break out of the grab, without the large stun time. If you use biodegrade as an antistun without being grabbed, it will not work
user.SetWeakened(0)
@@ -22,15 +22,15 @@
explosion(get_turf(user),0,0,2,0,silent=1)
for(var/mob/living/carbon/human/H in range(2,user))
to_chat(H, "<span class='userdanger'>You are blinded by a shower of blood!</span>")
H.Stun(1)
H.EyeBlurry(20)
H.Stun(2 SECONDS)
H.EyeBlurry(40 SECONDS)
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(istype(E))
E.receive_damage(5, 1)
H.AdjustConfused(3)
H.AdjustConfused(6 SECONDS)
for(var/mob/living/silicon/S in range(2,user))
to_chat(S, "<span class='userdanger'>Your sensors are disabled by a shower of blood!</span>")
S.Weaken(3)
S.Weaken(6 SECONDS)
var/new_location = user.drop_location()
spawn(5) // So it's not killed in explosion
var/mob/living/simple_animal/hostile/headslug/crab = new(new_location)
@@ -11,7 +11,7 @@
for(var/obj/item/grab/G in user.grabbed_by)
var/mob/living/carbon/M = G.assailant
user.visible_message("<span class='warning'>[user] suddenly hits [M] in the face and slips out of their grab!</span>")
M.Stun(1) //Drops the grab
M.Stun(2 SECONDS) //Drops the grab
M.apply_damage(5, BRUTE, "head", M.run_armor_check("head", "melee"))
playsound(user.loc, 'sound/weapons/punch1.ogg', 25, 1, -1)
user.revive()
@@ -17,14 +17,14 @@
continue
if(!M.mind || !M.mind.changeling)
M.AdjustEarDamage(0, 30)
M.AdjustConfused(20)
M.Jitter(50)
M.AdjustConfused(40 SECONDS)
M.Jitter(100 SECONDS)
else
SEND_SOUND(M, sound('sound/effects/screech.ogg'))
if(issilicon(M))
SEND_SOUND(M, sound('sound/weapons/flash.ogg'))
M.Weaken(rand(5,10))
M.Weaken(rand(10 SECONDS, 20 SECONDS))
for(var/obj/machinery/light/L in range(4, user))
L.on = 1
@@ -35,8 +35,8 @@
var/datum/changeling/changeling = user.mind.changeling
to_chat(user, "<span class='notice'>We tighten our grip. We must hold still....</span>")
target.do_jitter_animation(500)
user.do_jitter_animation(500)
target.Jitter(1000 SECONDS)
user.Jitter(1000 SECONDS)
if(!do_mob(user, target, 10 SECONDS))
to_chat(user, "<span class='warning'>The body swap has been interrupted!</span>")
@@ -62,7 +62,7 @@
GLOB.non_respawnable_keys -= ghost.ckey //they have a new body, let them be able to re-enter their corpse if they die
user.key = ghost.key
qdel(ghost)
user.Paralyse(2)
user.Paralyse(4 SECONDS)
target.add_language("Changeling")
user.remove_language("Changeling")
user.regenerate_icons()
@@ -97,7 +97,7 @@
/datum/action/changeling/sting/mute/sting_action(mob/user, mob/living/carbon/target)
add_attack_logs(user, target, "Mute sting (changeling)")
target.AdjustSilence(30)
target.AdjustSilence(60 SECONDS)
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]"))
return 1
@@ -114,8 +114,8 @@
add_attack_logs(user, target, "Blind sting (changeling)")
to_chat(target, "<span class='danger'>Your eyes burn horrifically!</span>")
target.become_nearsighted(EYE_DAMAGE)
target.EyeBlind(20)
target.EyeBlurry(40)
target.EyeBlind(40 SECONDS)
target.EyeBlurry(80 SECONDS)
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]"))
return 1
@@ -132,7 +132,7 @@
add_attack_logs(user, target, "LSD sting (changeling)")
spawn(rand(300,600))
if(target)
target.Hallucinate(400)
target.Hallucinate(400 SECONDS)
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]"))
return 1