diff --git a/code/datums/components/jetpack.dm b/code/datums/components/jetpack.dm index 71dc9b4c5a6..629953f16e0 100644 --- a/code/datums/components/jetpack.dm +++ b/code/datums/components/jetpack.dm @@ -78,27 +78,25 @@ trail.auto_process = FALSE trail.set_up(moving) -/datum/component/jetpack/proc/activate(datum/source) +/datum/component/jetpack/proc/activate(datum/source, mob/user) SIGNAL_HANDLER - var/mob/moving = get_mover.Invoke() - if(!thrust(moving)) + if(!thrust(user)) return return_flag trail.start() - RegisterSignal(moving, COMSIG_MOVABLE_MOVED, PROC_REF(move_react)) - RegisterSignal(moving, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(pre_move_react)) - RegisterSignal(moving, COMSIG_MOVABLE_SPACEMOVE, PROC_REF(spacemove_react)) - RegisterSignal(moving, COMSIG_MOVABLE_DRIFT_VISUAL_ATTEMPT, PROC_REF(block_starting_visuals)) - RegisterSignal(moving, COMSIG_MOVABLE_DRIFT_BLOCK_INPUT, PROC_REF(ignore_ending_block)) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(move_react)) + RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(pre_move_react)) + RegisterSignal(user, COMSIG_MOVABLE_SPACEMOVE, PROC_REF(spacemove_react)) + RegisterSignal(user, COMSIG_MOVABLE_DRIFT_VISUAL_ATTEMPT, PROC_REF(block_starting_visuals)) + RegisterSignal(user, COMSIG_MOVABLE_DRIFT_BLOCK_INPUT, PROC_REF(ignore_ending_block)) -/datum/component/jetpack/proc/deactivate(datum/source) +/datum/component/jetpack/proc/deactivate(datum/source, mob/user) SIGNAL_HANDLER - var/mob/moving = get_mover.Invoke() - if(moving) - UnregisterSignal(moving, COMSIG_MOVABLE_MOVED) - UnregisterSignal(moving, COMSIG_MOVABLE_PRE_MOVE) - UnregisterSignal(moving, COMSIG_MOVABLE_SPACEMOVE) - UnregisterSignal(moving, COMSIG_MOVABLE_DRIFT_VISUAL_ATTEMPT) - UnregisterSignal(moving, COMSIG_MOVABLE_DRIFT_BLOCK_INPUT) + if(user) + UnregisterSignal(user, COMSIG_MOVABLE_MOVED) + UnregisterSignal(user, COMSIG_MOVABLE_PRE_MOVE) + UnregisterSignal(user, COMSIG_MOVABLE_SPACEMOVE) + UnregisterSignal(user, COMSIG_MOVABLE_DRIFT_VISUAL_ATTEMPT) + UnregisterSignal(user, COMSIG_MOVABLE_DRIFT_BLOCK_INPUT) QDEL_NULL(trail) //delete AFTER unregistering the mob, otherwise you'll get runtimes. /datum/component/jetpack/proc/move_react(mob/user) @@ -118,6 +116,8 @@ /datum/component/jetpack/proc/pre_move_react(mob/user) SIGNAL_HANDLER + if(!trail) + return FALSE trail.oldposition = get_turf(user) /datum/component/jetpack/proc/spacemove_react(mob/user, movement_dir, continuous_move) diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index 592b4b6606c..39f6608e8a3 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -86,7 +86,7 @@ icon_state = "[initial(icon_state)][on ? "-on" : ""]" /obj/item/tank/jetpack/proc/turn_on(mob/user) - if(SEND_SIGNAL(src, COMSIG_JETPACK_ACTIVATED) & JETPACK_ACTIVATION_FAILED) + if(SEND_SIGNAL(src, COMSIG_JETPACK_ACTIVATED, user) & JETPACK_ACTIVATION_FAILED) return FALSE on = TRUE update_icon(UPDATE_ICON_STATE) @@ -95,7 +95,7 @@ return TRUE /obj/item/tank/jetpack/proc/turn_off(mob/user) - SEND_SIGNAL(src, COMSIG_JETPACK_DEACTIVATED) + SEND_SIGNAL(src, COMSIG_JETPACK_DEACTIVATED, user) on = FALSE set_stabilizers(FALSE) update_icon(UPDATE_ICON_STATE)