Skip to content

Commit

Permalink
move stop pulling logic
Browse files Browse the repository at this point in the history
  • Loading branch information
fira committed Nov 5, 2023
1 parent d587c68 commit cd8e217
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 24 deletions.
28 changes: 28 additions & 0 deletions code/modules/mob/mob.dm
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,34 @@

return do_pull(AM, lunge, no_msg)

/mob/proc/stop_pulling()
if(!pulling)
return

REMOVE_TRAIT(pulling, TRAIT_FLOORED, CHOKEHOLD_TRAIT)
var/mob/M = pulling
pulling.pulledby = null
pulling = null

grab_level = 0
if(client)
client.recalculate_move_delay()
// When you stop pulling a mob after you move a tile with it your next movement will still include
// the grab delay so we have to fix it here (we love code)
client.next_movement = world.time + client.move_delay
if(hud_used && hud_used.pull_icon)
hud_used.pull_icon.icon_state = "pull0"
if(istype(r_hand, /obj/item/grab))
temp_drop_inv_item(r_hand)
else if(istype(l_hand, /obj/item/grab))
temp_drop_inv_item(l_hand)
if(istype(M))
if(M.client)
//resist_grab uses long movement cooldown durations to prevent message spam
//so we must undo it here so the victim can move right away
M.client.next_movement = world.time
M.update_transform(TRUE)

/mob/living/vv_get_header()
. = ..()
var/refid = REF(src)
Expand Down
25 changes: 1 addition & 24 deletions code/modules/mob/mob_verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -221,27 +221,4 @@
set name = "Stop Pulling"
set category = "IC"

if(pulling)
REMOVE_TRAIT(pulling, TRAIT_FLOORED, CHOKEHOLD_TRAIT)
var/mob/M = pulling
pulling.pulledby = null
pulling = null

grab_level = 0
if(client)
client.recalculate_move_delay()
// When you stop pulling a mob after you move a tile with it your next movement will still include
// the grab delay so we have to fix it here (we love code)
client.next_movement = world.time + client.move_delay
if(hud_used && hud_used.pull_icon)
hud_used.pull_icon.icon_state = "pull0"
if(istype(r_hand, /obj/item/grab))
temp_drop_inv_item(r_hand)
else if(istype(l_hand, /obj/item/grab))
temp_drop_inv_item(l_hand)
if(istype(M))
if(M.client)
//resist_grab uses long movement cooldown durations to prevent message spam
//so we must undo it here so the victim can move right away
M.client.next_movement = world.time
M.update_transform(TRUE)
stop_pulling()

0 comments on commit cd8e217

Please sign in to comment.