fixes stake embedding (#1366)

* fixes stake embedding
This commit is contained in:
John Willard
2025-03-24 13:38:27 -04:00
committed by GitHub
parent 6dde67af07
commit b1a56569f2

View File

@@ -111,7 +111,7 @@
attack_verb_continuous = list("staked", "stabbed", "tore into")
attack_verb_simple = list("staked", "stabbed", "tore into")
sharpness = SHARP_EDGED
embed_data = /datum/embedding/stake
embed_type = /datum/embedding/stake
force = 6
throwforce = 10
max_integrity = 30
@@ -126,9 +126,6 @@
. = ..()
if(.)
return
// Invalid Target, or not targetting the chest?
if(check_zone(user.zone_selected) != BODY_ZONE_CHEST)
return
if(target == user)
return
if(!target.can_be_staked()) // Oops! Can't.
@@ -142,21 +139,22 @@
playsound(user, 'sound/effects/magic/Demon_consume.ogg', 50, 1)
if(!do_after(user, staketime, target, extra_checks = CALLBACK(target, TYPE_PROC_REF(/mob/living/carbon, can_be_staked)))) // user / target / time / uninterruptable / show progress bar / extra checks
return
playsound(get_turf(target), 'sound/effects/splat.ogg', 40, 1)
var/obj/item/bodypart/chest = target.get_bodypart(BODY_ZONE_CHEST)
get_embed()?.embed_into(victim = target, target_limb = chest)
// Drop & Embed Stake
user.visible_message(
span_danger("[user.name] drives the [src] into [target]'s chest!"),
span_danger("You drive the [src] into [target]'s chest!"),
)
playsound(get_turf(target), 'sound/effects/splat.ogg', 40, 1)
if(get_embed()?.try_embed(target.get_bodypart(BODY_ZONE_CHEST), TRUE, TRUE)) //and if it embeds successfully in their chest, cause a lot of pain
target.apply_damage(max(10, force * 1.2), BRUTE, BODY_ZONE_CHEST, wound_bonus = 0, sharpness = TRUE)
if(QDELETED(src)) // in case trying to embed it caused its deletion (say, if it's DROPDEL)
return
if(!target.mind)
return
var/datum/antagonist/bloodsucker/bloodsuckerdatum = target.mind.has_antag_datum(/datum/antagonist/bloodsucker)
if(bloodsuckerdatum)
// If DEAD or TORPID... Kill Bloodsucker!
if(!bloodsuckerdatum)
return
if(target.StakeCanKillMe())
bloodsuckerdatum.FinalDeath()
else