mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-09 06:04:23 +01:00
[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:
@@ -29,5 +29,4 @@
|
||||
flag = BULLET
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
|
||||
weaken = 5
|
||||
stun = 5
|
||||
weaken = 10 SECONDS
|
||||
|
||||
@@ -84,8 +84,7 @@
|
||||
|
||||
/obj/item/projectile/bullet/sniper
|
||||
damage = 70
|
||||
stun = 5
|
||||
weaken = 5
|
||||
weaken = 10 SECONDS
|
||||
armour_penetration = 50
|
||||
|
||||
/obj/item/ammo_box/magazine/sniper_rounds/antimatter
|
||||
@@ -129,13 +128,12 @@
|
||||
/obj/item/projectile/bullet/sniper/soporific
|
||||
armour_penetration = 0
|
||||
nodamage = 1
|
||||
stun = 0
|
||||
weaken = 0
|
||||
|
||||
/obj/item/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = 0, hit_zone)
|
||||
if((blocked != 100) && istype(target, /mob/living))
|
||||
var/mob/living/L = target
|
||||
L.SetSleeping(20)
|
||||
L.SetSleeping(40 SECONDS)
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -158,8 +156,7 @@
|
||||
/obj/item/projectile/bullet/sniper/haemorrhage
|
||||
armour_penetration = 25
|
||||
damage = 45
|
||||
stun = 3
|
||||
weaken = 3
|
||||
weaken = 6 SECONDS
|
||||
|
||||
/obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone)
|
||||
if((blocked != 100) && iscarbon(target))
|
||||
@@ -188,7 +185,6 @@
|
||||
name = "penetrator round"
|
||||
damage = 60
|
||||
forcedodge = 1
|
||||
stun = 0
|
||||
dismemberment = 0
|
||||
weaken = 0
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
hitsound = 'sound/weapons/sear.ogg'
|
||||
hitsound_wall = 'sound/weapons/effects/searwall.ogg'
|
||||
flag = "laser"
|
||||
eyeblur = 2
|
||||
eyeblur = 4 SECONDS
|
||||
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
|
||||
is_reflectable = TRUE
|
||||
light_range = 2
|
||||
|
||||
@@ -21,18 +21,18 @@
|
||||
/obj/item/projectile/bullet/weakbullet/booze/on_hit(atom/target, blocked = 0)
|
||||
if(..(target, blocked))
|
||||
var/mob/living/M = target
|
||||
M.AdjustDizzy(20)
|
||||
M.AdjustSlur(20)
|
||||
M.AdjustConfused(20)
|
||||
M.AdjustEyeBlurry(20)
|
||||
M.AdjustDrowsy(20)
|
||||
M.AdjustDizzy(40 SECONDS)
|
||||
M.AdjustSlur(40 SECONDS)
|
||||
M.AdjustConfused(40 SECONDS)
|
||||
M.AdjustEyeBlurry(40 SECONDS)
|
||||
M.AdjustDrowsy(40 SECONDS)
|
||||
for(var/datum/reagent/consumable/ethanol/A in M.reagents.reagent_list)
|
||||
M.AdjustParalysis(2)
|
||||
M.AdjustDizzy(10)
|
||||
M.AdjustSlur(10)
|
||||
M.AdjustConfused(10)
|
||||
M.AdjustEyeBlurry(10)
|
||||
M.AdjustDrowsy(10)
|
||||
M.AdjustParalysis(4 SECONDS)
|
||||
M.AdjustDizzy(20 SECONDS)
|
||||
M.AdjustSlur(20 SECONDS)
|
||||
M.AdjustConfused(20 SECONDS)
|
||||
M.AdjustEyeBlurry(20 SECONDS)
|
||||
M.AdjustDrowsy(20 SECONDS)
|
||||
A.volume += 5 //Because we can
|
||||
|
||||
/obj/item/projectile/bullet/weakbullet2
|
||||
@@ -113,7 +113,7 @@
|
||||
/obj/item/projectile/bullet/pellet/assassination/on_hit(atom/target, blocked = 0)
|
||||
if(..(target, blocked))
|
||||
var/mob/living/M = target
|
||||
M.AdjustSilence(2) // HELP MIME KILLING ME IN MAINT
|
||||
M.AdjustSilence(4 SECONDS) // HELP MIME KILLING ME IN MAINT
|
||||
|
||||
/obj/item/projectile/bullet/pellet/overload/on_hit(atom/target, blocked = 0)
|
||||
..()
|
||||
@@ -158,10 +158,9 @@
|
||||
/obj/item/projectile/bullet/stunshot //taser slugs for shotguns, nothing special
|
||||
name = "stunshot"
|
||||
damage = 5
|
||||
stun = 5
|
||||
weaken = 5
|
||||
stutter = 5
|
||||
jitter = 20
|
||||
weaken = 10 SECONDS
|
||||
stutter = 10 SECONDS
|
||||
jitter = 40 SECONDS
|
||||
range = 7
|
||||
icon_state = "spark"
|
||||
color = "#FFFF00"
|
||||
@@ -186,8 +185,7 @@
|
||||
icon = 'icons/obj/meteor.dmi'
|
||||
icon_state = "dust"
|
||||
damage = 30
|
||||
stun = 1
|
||||
weaken = 4
|
||||
weaken = 8 SECONDS
|
||||
hitsound = 'sound/effects/meteorimpact.ogg'
|
||||
|
||||
/obj/item/projectile/bullet/meteorshot/on_hit(atom/target, blocked = 0)
|
||||
@@ -211,7 +209,7 @@
|
||||
if(special_effects)
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/M = target
|
||||
M.Silence(10)
|
||||
M.Silence(20 SECONDS)
|
||||
else if(istype(target, /obj/mecha/combat/honker))
|
||||
var/obj/mecha/chassis = target
|
||||
chassis.occupant_message("A mimetech anti-honk bullet has hit \the [chassis]!")
|
||||
@@ -278,7 +276,7 @@
|
||||
icon_state = "neurotoxin"
|
||||
damage = 5
|
||||
damage_type = TOX
|
||||
weaken = 5
|
||||
weaken = 10 SECONDS
|
||||
|
||||
/obj/item/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = 0)
|
||||
if(isalien(target))
|
||||
|
||||
@@ -11,10 +11,9 @@
|
||||
icon_state = "spark"
|
||||
color = "#FFFF00"
|
||||
nodamage = 1
|
||||
stun = 5
|
||||
weaken = 5
|
||||
stutter = 5
|
||||
jitter = 20
|
||||
weaken = 10 SECONDS
|
||||
stutter = 10 SECONDS
|
||||
jitter = 40 SECONDS
|
||||
hitsound = 'sound/weapons/tase.ogg'
|
||||
range = 7
|
||||
//Damage will be handled on the MOB side, to prevent window shattering.
|
||||
@@ -30,7 +29,7 @@
|
||||
C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
else if(C.status_flags & CANWEAKEN)
|
||||
spawn(5)
|
||||
C.do_jitter_animation(jitter)
|
||||
C.Jitter(jitter)
|
||||
|
||||
/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet
|
||||
do_sparks(1, 1, src)
|
||||
@@ -51,9 +50,9 @@
|
||||
damage_type = TOX
|
||||
nodamage = FALSE
|
||||
stamina = 60
|
||||
eyeblur = 10
|
||||
weaken = 1
|
||||
slur = 5
|
||||
eyeblur = 20 SECONDS
|
||||
weaken = 2 SECONDS
|
||||
slur = 10 SECONDS
|
||||
|
||||
/obj/item/projectile/energy/bolt/large
|
||||
damage = 20
|
||||
@@ -85,8 +84,8 @@
|
||||
damage = 60
|
||||
damage_type = BURN
|
||||
range = 9
|
||||
weaken = 1 //This is going to knock you off your feet
|
||||
eyeblur = 5
|
||||
weaken = 2 SECONDS //This is going to knock you off your feet
|
||||
eyeblur = 10 SECONDS
|
||||
speed = 2
|
||||
alwayslog = TRUE
|
||||
|
||||
@@ -126,7 +125,7 @@
|
||||
add_attack_logs(src, M, "Hit heavily by [src]")
|
||||
if(floored)
|
||||
to_chat(M, "<span class='userdanger'>You see a flash of briliant blue light as [src] explodes, knocking you to the ground and burning you!</span>")
|
||||
M.Weaken(1)
|
||||
M.Weaken(2 SECONDS)
|
||||
else
|
||||
to_chat(M, "<span class='userdanger'>You see a flash of briliant blue light as [src] explodes, burning you!</span>")
|
||||
else
|
||||
|
||||
@@ -336,8 +336,8 @@
|
||||
name = "magical banana"
|
||||
icon = 'icons/obj/hydroponics/harvest.dmi'
|
||||
icon_state = "banana"
|
||||
var/slip_stun = 5
|
||||
var/slip_weaken = 5
|
||||
var/slip_stun = 10 SECONDS
|
||||
var/slip_weaken = 10 SECONDS
|
||||
hitsound = 'sound/items/bikehorn.ogg'
|
||||
|
||||
/obj/item/projectile/magic/slipping/New()
|
||||
@@ -347,18 +347,18 @@
|
||||
/obj/item/projectile/magic/slipping/on_hit(atom/target, blocked = 0)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
H.slip(src, slip_stun, slip_weaken, 0, FALSE, TRUE) //Slips even with noslips/magboots on. NO ESCAPE!
|
||||
H.slip(src, slip_weaken, 0, FALSE, TRUE) //Slips even with noslips/magboots on. NO ESCAPE!
|
||||
else if(isrobot(target)) //You think you're safe, cyborg? FOOL!
|
||||
var/mob/living/silicon/robot/R = target
|
||||
if(!R.incapacitated())
|
||||
to_chat(target, "<span class='warning'>You get splatted by [src], HONKING your sensors!</span>")
|
||||
R.Stun(slip_stun)
|
||||
else if(ismob(target))
|
||||
var/mob/M = target
|
||||
if(!M.stunned)
|
||||
else if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(!L.IsStunned())
|
||||
to_chat(target, "<span class='notice'>You get splatted by [src].</span>")
|
||||
M.Weaken(slip_weaken)
|
||||
M.Stun(slip_stun)
|
||||
L.Weaken(slip_weaken)
|
||||
L.Stun(slip_stun)
|
||||
. = ..()
|
||||
|
||||
/obj/item/projectile/magic/arcane_barrage
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/M = target
|
||||
M.adjustBrainLoss(20)
|
||||
M.AdjustHallucinate(20)
|
||||
M.AdjustHallucinate(20 SECONDS)
|
||||
|
||||
/obj/item/projectile/clown
|
||||
name = "snap-pop"
|
||||
@@ -194,7 +194,7 @@
|
||||
/obj/item/projectile/bullet/frag12
|
||||
name ="explosive slug"
|
||||
damage = 15
|
||||
weaken = 1
|
||||
weaken = 2 SECONDS
|
||||
alwayslog = TRUE
|
||||
|
||||
/obj/item/projectile/bullet/frag12/on_hit(atom/target, blocked = 0)
|
||||
|
||||
Reference in New Issue
Block a user