From a58cfbc078314473aabae83cf231f1c3a581ff07 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sat, 31 Dec 2016 21:50:49 -0800 Subject: [PATCH 1/4] Shuttles no longer disable buckling --- code/game/atoms_movable.dm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index f45f2daa07b..96502659778 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -148,12 +148,6 @@ return 1 /mob/living/forceMove(atom/destination) - stop_pulling() - if(buckled) - buckled.unbuckle_mob(src,force=1) - // in lieu of "unbuckle_all_mobs" - if(buckled_mob) - unbuckle_mob(buckled_mob,force=1) . = ..() if(client) reset_perspective(destination) From dac358f6a6eaf410f6eb2d7e8c63a8f348d693d3 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sun, 1 Jan 2017 13:49:03 -0800 Subject: [PATCH 2/4] Implements Krausus' Suggestion --- code/game/atoms_movable.dm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 96502659778..df8021fb13e 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -148,11 +148,31 @@ return 1 /mob/living/forceMove(atom/destination) + if(buckled) + addtimer(src, "checkBuckled", 1, TRUE) + if(buckled_mob) + addtimer(src, "checkBuckledMob", 1, TRUE) + if(pulling) + addtimer(src, "checkPull", 1, TRUE) . = ..() if(client) 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) if(istype(hit_atom,/mob/living)) From d79c42fa1e4a1d5005df823898bfa5e2d73c1dd0 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sun, 1 Jan 2017 21:46:55 -0800 Subject: [PATCH 3/4] Shifts the checking procs to appropriate regions --- code/game/atoms_movable.dm | 15 +------------ code/game/objects/buckling.dm | 4 ++++ code/modules/mob/mob.dm | 39 --------------------------------- code/modules/mob/pulling.dm | 41 +++++++++++++++++++++++++++++++++++ paradise.dme | 1 + 5 files changed, 47 insertions(+), 53 deletions(-) create mode 100644 code/modules/mob/pulling.dm 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" From ff91d4818a02448e8560674daef4c83c6d6b8092 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sun, 1 Jan 2017 21:53:31 -0800 Subject: [PATCH 4/4] Picky nits --- code/game/atoms_movable.dm | 6 +++--- code/game/objects/buckling.dm | 2 +- code/modules/mob/pulling.dm | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index d3c7b9765cb..107e8aee518 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -149,11 +149,11 @@ /mob/living/forceMove(atom/destination) if(buckled) - addtimer(src, "checkBuckled", 1, TRUE) + addtimer(src, "check_buckled", 1, TRUE) if(buckled_mob) - addtimer(buckled_mob, "checkBuckled", 1, TRUE) + addtimer(buckled_mob, "check_buckled", 1, TRUE) if(pulling) - addtimer(src, "checkPull", 1, TRUE) + addtimer(src, "check_pull", 1, TRUE) . = ..() if(client) reset_perspective(destination) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index e3506dfaa33..ea692339ac3 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -114,6 +114,6 @@ add_fingerprint(user) return M -/mob/living/proc/checkBuckled() +/mob/living/proc/check_buckled() if(buckled && !(buckled in loc)) buckled.unbuckle_mob(src, force=1) diff --git a/code/modules/mob/pulling.dm b/code/modules/mob/pulling.dm index 062688fd791..6a6a66675b0 100644 --- a/code/modules/mob/pulling.dm +++ b/code/modules/mob/pulling.dm @@ -36,6 +36,6 @@ if(pullin) pullin.update_icon(src) -/mob/living/proc/checkPull() +/mob/living/proc/check_pull() if(pulling && !(pulling in orange(1))) stop_pulling()