diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm
index 0af2d8f78c..754be9d817 100644
--- a/code/datums/components/tackle.dm
+++ b/code/datums/components/tackle.dm
@@ -143,8 +143,6 @@
return
var/mob/living/carbon/target = hit
- var/mob/living/carbon/human/T = target
- var/mob/living/carbon/human/S = user
var/roll = rollTackle(target)
user.tackling = FALSE
@@ -190,9 +188,9 @@
target.adjustStaminaLoss(40)
target.Paralyze(5)
target.Knockdown(30)
- if(ishuman(target) && ishuman(user))
- S.dna.species.grab(S, T)
- S.setGrabState(GRAB_PASSIVE)
+ if(ishuman(target) && iscarbon(user))
+ target.grabbedby(user)
+ target.grippedby(user, instant = TRUE)
if(5 to INFINITY) // absolutely BODIED
user.visible_message("[user] lands a monster tackle on [target], knocking [target.p_them()] senseless and applying an aggressive pin!", "You land a monster tackle on [target], knocking [target.p_them()] senseless and applying an aggressive pin!", target)
@@ -203,11 +201,11 @@
target.adjustStaminaLoss(40)
target.Paralyze(5)
target.Knockdown(30)
- if(ishuman(target) && ishuman(user))
+ if(ishuman(target) && iscarbon(user))
target.grabbedby(user)
- target.grippedby(user, instant = TRUE) //instant aggro grab
+ target.grippedby(user, instant = TRUE)
- SEND_SIGNAL(user, COMSIG_CARBON_TACKLED, "tackle completed")
+ SEND_SIGNAL(user, COMSIG_CARBON_TACKLED, roll)
return COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH
/**
diff --git a/code/modules/antagonists/bloodsucker/powers/lunge.dm b/code/modules/antagonists/bloodsucker/powers/lunge.dm
index d40627f493..b8dcc29022 100644
--- a/code/modules/antagonists/bloodsucker/powers/lunge.dm
+++ b/code/modules/antagonists/bloodsucker/powers/lunge.dm
@@ -13,7 +13,11 @@
/datum/action/bloodsucker/lunge/New()
. = ..()
- RegisterSignal(owner, COMSIG_CARBON_TACKLED, .proc/Delayed_DeactivatePower)
+
+
+/datum/action/bloodsucker/lunge/Destroy()
+ . = ..()
+ UnregisterSignal(owner, COMSIG_CARBON_TACKLED)
/datum/action/bloodsucker/lunge/ActivatePower()
var/mob/living/user = owner
@@ -26,13 +30,15 @@
T.skill_mod = 5
T.min_distance = 2
active = TRUE
+ RegisterSignal(user, COMSIG_CARBON_TACKLED, .proc/DeactivatePower)
while(B && ContinueActive(user))
B.AddBloodVolume(-0.1)
sleep(5)
-/datum/action/bloodsucker/lunge/proc/Delayed_DeactivatePower()
+/*/datum/action/bloodsucker/lunge/proc/Delayed_DeactivatePower()
addtimer(CALLBACK(src, .proc/DeactivatePower), 1 SECONDS, TIMER_UNIQUE)
-
+*/
/datum/action/bloodsucker/lunge/DeactivatePower(mob/living/user = owner)
. = ..()
qdel(user.GetComponent(/datum/component/tackler))
+ UnregisterSignal(user, COMSIG_CARBON_TACKLED)