diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index df8021fb13e..d3c7b9765cb 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -151,7 +151,7 @@ if(buckled) addtimer(src, "checkBuckled", 1, TRUE) if(buckled_mob) - addtimer(src, "checkBuckledMob", 1, TRUE) + addtimer(buckled_mob, "checkBuckled", 1, TRUE) if(pulling) addtimer(src, "checkPull", 1, TRUE) . = ..() @@ -159,19 +159,6 @@ reset_perspective(destination) update_canmove() //if the mob was asleep inside a container and then got forceMoved out we need to make them fall. -/mob/living/proc/checkBuckled() - if(!(buckled in loc)) - buckled.unbuckle_mob(src, force=1) - -/mob/living/proc/checkBuckledMob() - // in lieu of "unbuckle_all_mobs" - if(!(buckled_mob in loc)) - unbuckle_mob(buckled_mob, force=1) - -/mob/living/proc/checkPull() - if(!(pulling in orange(1))) - stop_pulling() - //called when src is thrown into hit_atom /atom/movable/proc/throw_impact(atom/hit_atom, var/speed) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 0297a372dff..e3506dfaa33 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -113,3 +113,7 @@ "You hear metal clanking.") add_fingerprint(user) return M + +/mob/living/proc/checkBuckled() + if(buckled && !(buckled in loc)) + buckled.unbuckle_mob(src, force=1) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ddb4d2beb60..44ba3cb99c3 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -894,45 +894,6 @@ var/list/slot_equipment_priority = list( \ if(!Adjacent(usr)) return show_inv(usr) -//this and stop_pulling really ought to be /mob/living procs -/mob/proc/start_pulling(atom/movable/AM) - if(src == AM) // Trying to pull yourself is a shortcut to stop pulling - stop_pulling() - return - if(!AM || !isturf(AM.loc)) //if there's no object or the object being pulled is inside something: abort! - return - if(!(AM.anchored)) - AM.add_fingerprint(src) - - // If we're pulling something then drop what we're currently pulling and pull this instead. - if(pulling) - // Are we trying to pull something we are already pulling? Then just stop here, no need to continue. - if(AM == pulling) - return - stop_pulling() - - src.pulling = AM - AM.pulledby = src - if(pullin) - pullin.update_icon(src) - if(ismob(AM)) - var/mob/M = AM - if(!iscarbon(src)) - M.LAssailant = null - else - M.LAssailant = usr - -/mob/verb/stop_pulling() - - set name = "Stop Pulling" - set category = "IC" - - if(pulling) - pulling.pulledby = null - pulling = null - if(pullin) - pullin.update_icon(src) - /mob/proc/can_use_hands() return diff --git a/code/modules/mob/pulling.dm b/code/modules/mob/pulling.dm new file mode 100644 index 00000000000..062688fd791 --- /dev/null +++ b/code/modules/mob/pulling.dm @@ -0,0 +1,41 @@ +//this and stop_pulling really ought to be /mob/living procs +/mob/proc/start_pulling(atom/movable/AM) + if(src == AM) // Trying to pull yourself is a shortcut to stop pulling + stop_pulling() + return + if(!AM || !isturf(AM.loc)) //if there's no object or the object being pulled is inside something: abort! + return + if(!(AM.anchored)) + AM.add_fingerprint(src) + + // If we're pulling something then drop what we're currently pulling and pull this instead. + if(pulling) + // Are we trying to pull something we are already pulling? Then just stop here, no need to continue. + if(AM == pulling) + return + stop_pulling() + + src.pulling = AM + AM.pulledby = src + if(pullin) + pullin.update_icon(src) + if(ismob(AM)) + var/mob/M = AM + if(!iscarbon(src)) + M.LAssailant = null + else + M.LAssailant = usr + +/mob/verb/stop_pulling() + set name = "Stop Pulling" + set category = "IC" + + if(pulling) + pulling.pulledby = null + pulling = null + if(pullin) + pullin.update_icon(src) + +/mob/living/proc/checkPull() + if(pulling && !(pulling in orange(1))) + stop_pulling() diff --git a/paradise.dme b/paradise.dme index e18f8500930..b4cc54915fe 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1442,6 +1442,7 @@ #include "code\modules\mob\mob_helpers.dm" #include "code\modules\mob\mob_movement.dm" #include "code\modules\mob\mob_transformation_simple.dm" +#include "code\modules\mob\pulling.dm" #include "code\modules\mob\say.dm" #include "code\modules\mob\status_procs.dm" #include "code\modules\mob\transform_procs.dm"