[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
+2 -2
View File
@@ -814,7 +814,7 @@ GLOBAL_LIST_EMPTY(multiverse)
GiveHint(target)
else if(is_pointed(I))
to_chat(target, "<span class='userdanger'>You feel a stabbing pain in [parse_zone(user.zone_selected)]!</span>")
target.Weaken(2)
target.Weaken(4 SECONDS)
GiveHint(target)
else if(istype(I,/obj/item/bikehorn))
to_chat(target, "<span class='userdanger'>HONK</span>")
@@ -886,7 +886,7 @@ GLOBAL_LIST_EMPTY(multiverse)
GiveHint(target)
if("head")
to_chat(user, "<span class='notice'>You smack the doll's head with your hand.</span>")
target.Dizzy(10)
target.Dizzy(20 SECONDS)
to_chat(target, "<span class='warning'>You suddenly feel as if your head was hit with a hammer!</span>")
GiveHint(target,user)
cooldown = world.time + cooldown_time
+4 -4
View File
@@ -61,14 +61,14 @@
item_state = "fleshtostone"
/obj/item/melee/touch_attack/fleshtostone/afterattack(atom/target, mob/living/carbon/user, proximity)
if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //getting hard after touching yourself would also be bad
if(!proximity || target == user || !isliving(target) || !iscarbon(user) || user.lying || user.handcuffed) //getting hard after touching yourself would also be bad
return
if(user.lying || user.handcuffed)
to_chat(user, "<span class='warning'>You can't reach out!</span>")
return
var/mob/M = target
M.Stun(2)
new /obj/structure/closet/statue(M.loc, M)
var/mob/living/L = target
L.Stun(4 SECONDS)
new /obj/structure/closet/statue(L.loc, L)
..()
/obj/item/melee/touch_attack/fake_disintegrate
+9 -9
View File
@@ -67,12 +67,12 @@
return ..()
//////////////////////////////Capturing////////////////////////////////////////////////////////
/obj/item/soulstone/attack(mob/living/carbon/human/M, mob/user)
/obj/item/soulstone/attack(mob/living/carbon/human/M, mob/living/user)
if(M == user)
return
if(!can_use(user))
user.Weaken(5)
user.Weaken(10 SECONDS)
user.emote("scream")
to_chat(user, "<span class='userdanger'>Your body is wracked with debilitating pain!</span>")
return
@@ -203,12 +203,12 @@
else
..()
/obj/item/soulstone/attack_self(mob/user)
/obj/item/soulstone/attack_self(mob/living/user)
if(!in_range(src, user))
return
if(!can_use(user))
user.Weaken(5)
user.Weaken(10 SECONDS)
user.emote("scream")
to_chat(user, "<span class='userdanger'>Your body is wracked with debilitating pain!</span>")
return
@@ -249,12 +249,12 @@
. += "<span class='cultitalic'>A <b>Wraith</b>, which does high damage and can jaunt through walls, though it is quite fragile.</span>"
. += "<span class='cultitalic'>A <b>Juggernaut</b>, which is very hard to kill and can produce temporary walls, but is slow.</span>"
/obj/structure/constructshell/attackby(obj/item/I, mob/user, params)
/obj/structure/constructshell/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/soulstone))
var/obj/item/soulstone/SS = I
if(!SS.can_use(user))
to_chat(user, "<span class='danger'>An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell.</span>")
user.Confused(10)
user.Confused(20 SECONDS)
return
SS.transfer_soul("CONSTRUCT", src, user)
SS.was_used()
@@ -263,7 +263,7 @@
////////////////////////////Proc for moving soul in and out off stone//////////////////////////////////////
// this whole proc is pain
/obj/item/soulstone/proc/transfer_soul(choice, target, mob/user)
/obj/item/soulstone/proc/transfer_soul(choice, target, mob/living/user)
switch(choice)
if("FORCE")
var/mob/living/T = target
@@ -272,7 +272,7 @@
init_shade(T, user)
else // Poll ghosts
to_chat(user, "<span class='userdanger'>Capture failed!</span> The soul has already fled its mortal frame. You attempt to bring it back...")
T.Paralyse(20)
T.Paralyse(40 SECONDS)
if(!get_cult_ghost(T, user, TRUE))
T.dust() //If we can't get a ghost, kill the sacrifice anyway.
@@ -296,7 +296,7 @@
if("SHADE")
var/mob/living/simple_animal/shade/T = target
if(!can_use(user))
user.Weaken(5)
user.Weaken(10 SECONDS)
to_chat(user, "<span class='userdanger'>Your body is wracked with debilitating pain!</span>")
return
if(T.stat == DEAD)
+7 -5
View File
@@ -971,10 +971,12 @@
icon_state = "bookblind"
desc = "This book looks blurry, no matter how you look at it."
/obj/item/spellbook/oneuse/blind/recoil(mob/user as mob)
/obj/item/spellbook/oneuse/blind/recoil(mob/user)
..()
to_chat(user, "<span class='warning'>You go blind!</span>")
user.EyeBlind(10)
if(isliving(user))
var/mob/living/L = user
to_chat(user, "<span class='warning'>You go blind!</span>")
L.EyeBlind(20 SECONDS)
/obj/item/spellbook/oneuse/mindswap
spell = /obj/effect/proc_holder/spell/mind_transfer
@@ -1027,10 +1029,10 @@
icon_state = "bookknock"
desc = "This book is hard to hold closed properly."
/obj/item/spellbook/oneuse/knock/recoil(mob/user as mob)
/obj/item/spellbook/oneuse/knock/recoil(mob/living/user)
..()
to_chat(user, "<span class='warning'>You're knocked down!</span>")
user.Weaken(20)
user.Weaken(40 SECONDS)
/obj/item/spellbook/oneuse/horsemask
spell = /obj/effect/proc_holder/spell/horsemask