diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index bd59e863303b4..1556c834e497d 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -24,6 +24,7 @@ #define STUN "stun" #define WEAKEN "weaken" +#define KNOCKDOWN "knockdown" #define PARALYZE "paralize" #define IRRADIATE "irradiate" #define STUTTER "stutter" diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm index 7215d031c4a80..8db63983c0900 100644 --- a/code/modules/mining/lavaland/loot/tendril_loot.dm +++ b/code/modules/mining/lavaland/loot/tendril_loot.dm @@ -380,7 +380,8 @@ armour_penetration = 100 damage_type = BRUTE hitsound = 'sound/effects/splat.ogg' - weaken = 6 SECONDS + weaken = 1 SECONDS + knockdown = 6 SECONDS /obj/item/projectile/hook/fire(setAngle) if(firer) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 2b715724d76d2..1ff68e08ac3c4 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -83,6 +83,8 @@ Stun(effect * blocked) if(WEAKEN) Weaken(effect * blocked) + if(KNOCKDOWN) + KnockDown(effect * blocked) if(PARALYZE) Paralyse(effect * blocked) if(IRRADIATE) @@ -101,13 +103,15 @@ updatehealth("apply effect") return TRUE -/mob/living/proc/apply_effects(stun = 0, weaken = 0, paralyze = 0, irradiate = 0, slur = 0, stutter = 0, eyeblur = 0, drowsy = 0, blocked = 0, stamina = 0, jitter = 0) +/mob/living/proc/apply_effects(stun = 0, weaken = 0, knockdown = 0, paralyze = 0, irradiate = 0, slur = 0, stutter = 0, eyeblur = 0, drowsy = 0, blocked = 0, stamina = 0, jitter = 0) if(blocked >= 100) return FALSE if(stun) apply_effect(stun, STUN, blocked) if(weaken) apply_effect(weaken, WEAKEN, blocked) + if(knockdown) + apply_effect(knockdown, KNOCKDOWN, blocked) if(paralyze) apply_effect(paralyze, PARALYZE, blocked) if(irradiate) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 2840b3c94126b..6fdb6dba2a55a 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -45,6 +45,7 @@ //Effects var/stun = 0 var/weaken = 0 + var/knockdown = 0 var/paralyze = 0 var/irradiate = 0 var/stutter = 0 @@ -176,7 +177,7 @@ if(!log_override && firer && !alwayslog) add_attack_logs(firer, L, "Shot with a [type][additional_log_text]") - return L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter) + return L.apply_effects(stun, weaken, knockdown, paralyze, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter) /obj/item/projectile/proc/get_splatter_blockage(turf/step_over, atom/target, splatter_dir, target_loca) //Check whether the place we want to splatter blood is blocked (i.e. by windows). var/turf/step_cardinal = !(splatter_dir in list(NORTH, SOUTH, EAST, WEST)) ? get_step(target_loca, get_cardinal_dir(target_loca, step_over)) : null