Skip to content

Commit

Permalink
runner pull changes
Browse files Browse the repository at this point in the history
  • Loading branch information
morrowwolf committed Oct 21, 2023
1 parent e96e65e commit 165cd6f
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 25 deletions.
3 changes: 3 additions & 0 deletions code/modules/mob/living/carbon/xenomorph/castes/Runner.dm
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@
return

if(pulling)
if(!current_target || get_dist(src, current_target) > 10)
INVOKE_ASYNC(src, PROC_REF(stop_pulling))
return ..()
if(can_move_and_apply_move_delay())
if(!Move(get_step(loc, pull_direction), pull_direction))
pull_direction = turn(pull_direction, pick(45, -45))
Expand Down
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

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)
M.update_canmove()

/mob/living/vv_get_header()
. = ..()
var/refid = REF(src)
Expand Down
27 changes: 2 additions & 25 deletions code/modules/mob/mob_verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -216,32 +216,9 @@



/mob/verb/stop_pulling()
/mob/verb/stop_pulling_verb()

set name = "Stop Pulling"
set category = "IC"

if(pulling)
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)
M.update_canmove()
stop_pulling()

0 comments on commit 165cd6f

Please sign in to comment.