diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm
index 6592bb3e229..763269c2af7 100644
--- a/code/_onclick/hud/alien.dm
+++ b/code/_onclick/hud/alien.dm
@@ -135,10 +135,9 @@
nightvisionicon.name = "night vision"
nightvisionicon.screen_loc = ui_alien_nightvision
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = 'icons/mob/screen1_alien.dmi'
- mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
+ mymob.pullin.update_icon(mymob)
mymob.pullin.screen_loc = ui_pull_resist
alien_plasma_display = new /obj/screen()
@@ -171,4 +170,4 @@
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, nightvisionicon, mymob.pullin, alien_plasma_display, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += src.adding + src.other
- mymob.client.screen += mymob.client.void
\ No newline at end of file
+ mymob.client.screen += mymob.client.void
\ No newline at end of file
diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm
index f24d8c29c0c..4c9b7b651c1 100644
--- a/code/_onclick/hud/alien_larva.dm
+++ b/code/_onclick/hud/alien_larva.dm
@@ -56,10 +56,9 @@
nightvisionicon.name = "night vision"
nightvisionicon.screen_loc = ui_alien_nightvision
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = 'icons/mob/screen1_alien.dmi'
- mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
+ mymob.pullin.update_icon(mymob)
mymob.pullin.screen_loc = ui_pull_resist
mymob.blind = new /obj/screen()
@@ -69,7 +68,7 @@
mymob.blind.screen_loc = "CENTER-7,CENTER-7"
mymob.blind.layer = 0
mymob.blind.mouse_opacity = 0
-
+
mymob.flash = new /obj/screen()
mymob.flash.icon = 'icons/mob/screen1_alien.dmi'
mymob.flash.icon_state = "blank"
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 138af2ed822..f55951b5f37 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -422,10 +422,9 @@
mymob.nutrition_icon.name = "nutrition"
mymob.nutrition_icon.screen_loc = ui_nutrition
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = ui_style
- mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
+ mymob.pullin.update_icon(mymob)
mymob.pullin.screen_loc = ui_pull_resist
src.hotkeybuttons += mymob.pullin
diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm
index e9f98c60b97..fce38a8b465 100644
--- a/code/_onclick/hud/monkey.dm
+++ b/code/_onclick/hud/monkey.dm
@@ -233,10 +233,9 @@
mymob.nutrition_icon.name = "nutrition"
mymob.nutrition_icon.screen_loc = ui_nutrition
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = ui_style
- mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
+ mymob.pullin.update_icon(mymob)
mymob.pullin.screen_loc = ui_pull_resist
src.hotkeybuttons += mymob.pullin
@@ -299,6 +298,6 @@
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.healthdoll, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, mymob.gun_setting_icon) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach )
mymob.client.screen += src.adding + src.hotkeybuttons
- mymob.client.screen += mymob.client.void
+ mymob.client.screen += mymob.client.void
return
diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm
index a17611c99ff..e2923055324 100644
--- a/code/_onclick/hud/other_mobs.dm
+++ b/code/_onclick/hud/other_mobs.dm
@@ -18,10 +18,9 @@
mymob.healths.name = "health"
mymob.healths.screen_loc = ui_health
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = 'icons/mob/screen1_corgi.dmi'
- mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
+ mymob.pullin.update_icon(mymob)
mymob.pullin.screen_loc = ui_construct_pull
mymob.oxygen = new /obj/screen()
@@ -67,4 +66,4 @@
mymob.client.screen = list()
mymob.client.screen += list(blobpwrdisplay, blobhealthdisplay)
- mymob.client.screen += mymob.client.void
\ No newline at end of file
+ mymob.client.screen += mymob.client.void
\ No newline at end of file
diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm
index 7fe1f4594e3..bd782657ce9 100644
--- a/code/_onclick/hud/robot.dm
+++ b/code/_onclick/hud/robot.dm
@@ -125,10 +125,9 @@
mymob.fire.name = "fire"
mymob.fire.screen_loc = ui_fire
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = 'icons/mob/screen1_robot.dmi'
- mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
+ mymob.pullin.update_icon(mymob)
mymob.pullin.screen_loc = ui_borg_pull
mymob.blind = new /obj/screen()
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index ea5202fd03f..4b46be13722 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -170,6 +170,21 @@
overlays.Cut()
overlays += image('icons/mob/zone_sel.dmi', "[selecting]")
+/obj/screen/pull
+ name = "stop pulling"
+ icon = 'icons/mob/screen1_Midnight.dmi'
+ icon_state = "pull"
+
+/obj/screen/pull/Click()
+ usr.stop_pulling()
+
+/obj/screen/pull/update_icon(mob/mymob)
+ if(!mymob) return
+ if(mymob.pulling)
+ icon_state = "pull"
+ else
+ icon_state = "pull0"
+
/obj/screen/Click(location, control, params)
if(!usr) return 1
@@ -347,9 +362,6 @@
if("disarm")
usr.a_intent = I_DISARM
usr.hud_used.action_intent.icon_state = "intent_disarm"
-
- if("pull")
- usr.stop_pulling()
if("throw")
if(!usr.stat && isturf(usr.loc) && !usr.restrained())
usr:toggle_throw_mode()
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index cc5481e9be4..47a47cbd7e5 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -89,7 +89,6 @@
add_cell()
add_iterators()
removeVerb(/obj/mecha/verb/disconnect_from_port)
- removeVerb(/atom/movable/verb/pull)
log_message("[src.name] created.")
loc.Entered(src)
mechas_list += src //global mech list
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 38f67bf51be..2f0d1567624 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -7,8 +7,6 @@
var/propelled = 0 // Check for fire-extinguisher-driven chairs
/obj/structure/stool/bed/chair/New()
- if(anchored)
- src.verbs -= /atom/movable/verb/pull
..()
spawn(3) //sorry. i don't think there's a better way to do this.
handle_rotation()
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index 26757340fc8..d565f163781 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -210,26 +210,7 @@ var/list/wood_icons = list("wood","wood-broken")
var/obj/item/stack/tile/light/T = floor_tile
T.on = !T.on
update_icon()
- if ((!( user.canmove ) || user.restrained() || !( user.pulling )))
- return
- if (user.pulling.anchored || !isturf(user.pulling.loc))
- return
- if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
- return
- if (ismob(user.pulling))
- var/mob/M = user.pulling
-
-// if(M==user) //temporary hack to stop runtimes. ~Carn
-// user.stop_pulling() //but...fixed the root of the problem
-// return //shoudn't be needed now, unless somebody fucks with pulling again.
-
- var/mob/t = M.pulling
- M.stop_pulling()
- step(user.pulling, get_dir(user.pulling.loc, src))
- M.start_pulling(t)
- else
- step(user.pulling, get_dir(user.pulling.loc, src))
- return
+ ..()
/turf/simulated/floor/proc/gets_drilled()
return
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 30f3e69a5ad..699569bfe87 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -277,6 +277,7 @@
user << "\blue You push the wall but nothing happens!"
playsound(src, 'sound/weapons/Genhit.ogg', 25, 1)
src.add_fingerprint(user)
+ ..()
return
/turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm
index 09656143c3c..c7b992ec9b0 100644
--- a/code/game/turfs/simulated/walls_reinforced.dm
+++ b/code/game/turfs/simulated/walls_reinforced.dm
@@ -31,6 +31,7 @@
user << "\blue You push the wall but nothing happens!"
playsound(src, 'sound/weapons/Genhit.ogg', 25, 1)
src.add_fingerprint(user)
+ ..()
return
diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm
index 9cafaf48198..d2b75dd22c6 100644
--- a/code/game/turfs/space/space.dm
+++ b/code/game/turfs/space/space.dm
@@ -31,23 +31,6 @@
else
set_light(0)
-/turf/space/attack_hand(mob/user as mob)
- if ((user.restrained() || !( user.pulling )))
- return
- if (user.pulling.anchored || !isturf(user.pulling.loc))
- return
- if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
- return
- if (ismob(user.pulling))
- var/mob/M = user.pulling
- var/atom/movable/t = M.pulling
- M.stop_pulling()
- step(user.pulling, get_dir(user.pulling.loc, src))
- M.start_pulling(t)
- else
- step(user.pulling, get_dir(user.pulling.loc, src))
- return
-
/turf/space/attackby(obj/item/C as obj, mob/user as mob, params)
if (istype(C, /obj/item/stack/rods))
@@ -87,10 +70,10 @@
/turf/space/Entered(atom/movable/A as mob|obj)
..()
- if ((!(A) || src != A.loc))
+ if ((!(A) || src != A.loc))
return
- if(destination_z)
+ if(destination_z)
A.x = destination_x
A.y = destination_y
A.z = destination_z
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 09890dc7617..db30837c83d 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -52,6 +52,9 @@
..()
return QDEL_HINT_HARDDEL_NOW
+/turf/attack_hand(mob/user as mob)
+ user.Move_Pulled(src)
+
/turf/ex_act(severity)
return 0
diff --git a/code/game/turfs/unsimulated/floor.dm b/code/game/turfs/unsimulated/floor.dm
index cd36c4a1bb5..b10885c7467 100644
--- a/code/game/turfs/unsimulated/floor.dm
+++ b/code/game/turfs/unsimulated/floor.dm
@@ -3,23 +3,6 @@
icon = 'icons/turf/floors.dmi'
icon_state = "Floor3"
-/turf/unsimulated/floor/attack_hand(var/mob/user as mob)
- if ((!( user.canmove ) || user.restrained() || !( user.pulling )))
- return
- if (user.pulling.anchored || !isturf(user.pulling.loc))
- return
- if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
- return
- if (ismob(user.pulling))
- var/mob/M = user.pulling
- var/mob/t = M.pulling
- M.stop_pulling()
- step(user.pulling, get_dir(user.pulling.loc, src))
- M.start_pulling(t)
- else
- step(user.pulling, get_dir(user.pulling.loc, src))
- return
-
/turf/unsimulated/floor/grass
icon_state = "grass1"
diff --git a/code/game/vehicles/vehicle.dm b/code/game/vehicles/vehicle.dm
index a61015cf6d6..04413a62f44 100644
--- a/code/game/vehicles/vehicle.dm
+++ b/code/game/vehicles/vehicle.dm
@@ -74,7 +74,6 @@
add_cell()
add_iterators()
removeVerb(/obj/mecha/verb/disconnect_from_port)
- removeVerb(/atom/movable/verb/pull)
log_message("[src.name]'s functions initialised. Work protocols active - Entering IDLE mode.")
loc.Entered(src)
return
diff --git a/code/game/verbs/atom_verbs.dm b/code/game/verbs/atom_verbs.dm
deleted file mode 100644
index 4f77bf52f4c..00000000000
--- a/code/game/verbs/atom_verbs.dm
+++ /dev/null
@@ -1,8 +0,0 @@
-/atom/movable/verb/pull()
- set name = "Pull"
- set category = null
- set src in oview(1)
-
- if(Adjacent(usr))
- usr.start_pulling(src)
- return
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index ce94cb4c8a2..2b6407398d2 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -230,13 +230,6 @@
else
healths.icon_state = "health6"
- if(pullin)
- if(pulling)
- pullin.icon_state = "pull"
- else
- pullin.icon_state = "pull0"
-
-
if (toxin) toxin.icon_state = "tox[toxins_alert ? 1 : 0]"
if (oxygen) oxygen.icon_state = "oxy[oxygen_alert ? 1 : 0]"
if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]"
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 8967e1519d6..a1f7c39281d 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1289,12 +1289,6 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
if(pressure)
pressure.icon_state = "pressure[pressure_alert]"
- if(pullin)
- if(pulling) pullin.icon_state = "pull1"
- else pullin.icon_state = "pull0"
-// if(rest) //Not used with new UI
-// if(resting || lying || sleeping) rest.icon_state = "rest1"
-// else rest.icon_state = "rest0"
if(toxin)
if(hal_screwyhud == 4 || toxins_alert) toxin.icon_state = "tox1"
else toxin.icon_state = "tox0"
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index f3cb5145f78..3d7f30d87ff 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -26,6 +26,16 @@
current << "\red The fog clouding your mind clears. You remember nothing from the moment you were implanted until now..(You don't remember who enslaved you)"
*/
+//mob verbs are a lot faster than object verbs
+//for more info on why this is not atom/pull, see examinate() in mob.dm
+/mob/living/verb/pulled(atom/movable/AM as mob|obj in oview(1))
+ set name = "Pull"
+ set category = "Object"
+
+ if(AM.Adjacent(src))
+ src.start_pulling(AM)
+ return
+
//same as above
/mob/living/pointed(atom/A as mob|obj|turf in view())
if(src.stat || !src.canmove || src.restrained())
diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm
index 6a157225c2c..ef0e1f712f8 100644
--- a/code/modules/mob/living/silicon/ai/freelook/eye.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm
@@ -42,10 +42,6 @@
set src = usr.contents
return 0
-/mob/aiEye/pull()
- set popup_menu = 0
- set src = usr.contents
- return 0
// Use this when setting the aiEye's location.
// It will also stream the chunk that the new loc is in.
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index 5113c719dbb..4d0fc33ca06 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -65,7 +65,7 @@
for(var/V in components)
var/datum/robot_component/C = components[V]
C.consume_power()
-
+
var/amt = Clamp((lamp_intensity - 2) * 2,1,cell.charge) //Always try to use at least one charge per tick, but allow it to completely drain the cell.
cell.use(amt) //Usage table: 1/tick if off/lowest setting, 4 = 4/tick, 6 = 8/tick, 8 = 12/tick, 10 = 16/tick
@@ -287,7 +287,6 @@
src.bodytemp.icon_state = "temp-2"
- if(src.pullin) src.pullin.icon_state = "pull[src.pulling ? 1 : 0]"
//Oxygen and fire does nothing yet!!
// if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]"
// if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]"
diff --git a/code/modules/mob/living/simple_animal/bees.dm b/code/modules/mob/living/simple_animal/bees.dm
index 6d5cd3ba6bd..a7d07c8485c 100644
--- a/code/modules/mob/living/simple_animal/bees.dm
+++ b/code/modules/mob/living/simple_animal/bees.dm
@@ -30,7 +30,6 @@
/mob/living/simple_animal/bee/New(loc, var/obj/machinery/apiary/new_parent)
..()
parent = new_parent
- verbs -= /atom/movable/verb/pull
/mob/living/simple_animal/bee/Destroy()
if(parent)
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index aa5568aafbd..b7e705e2079 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -38,9 +38,6 @@
if(fire)
if(fire_alert) fire.icon_state = "fire[fire_alert]" //fire_alert is either 0 if no alert, 1 for heat and 2 for cold.
else fire.icon_state = "fire0"
- if(pullin)
- if(pulling) pullin.icon_state = "pull1"
- else pullin.icon_state = "pull0"
if(oxygen)
if(oxygen_alert) oxygen.icon_state = "oxy1"
else oxygen.icon_state = "oxy0"
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 084ff2d3935..10157afd00a 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -844,6 +844,30 @@ var/list/slot_equipment_priority = list( \
if(istype(M,/mob/living/silicon/ai)) return
show_inv(usr)
+//this and stop_pulling really ought to be /mob/living procs
+/mob/proc/start_pulling(atom/movable/AM)
+ if ( !AM || !src || src==AM || !isturf(AM.loc) ) //if there's no person pulling OR the person is pulling themself 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()
@@ -853,37 +877,8 @@ var/list/slot_equipment_priority = list( \
if(pulling)
pulling.pulledby = null
pulling = null
-
-/mob/proc/start_pulling(var/atom/movable/AM)
-
- if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort!
- return
-
- if (AM.anchored)
- usr << "It won't budge!"
- return
-
- var/mob/M = AM
- if(ismob(AM))
- if(!iscarbon(src))
- M.LAssailant = null
- else
- M.LAssailant = usr
-
- if(pulling)
- var/pulling_old = pulling
- stop_pulling()
- // Are we pulling the same thing twice? Just stop pulling.
- if(pulling_old == AM)
- return
-
- src.pulling = AM
- AM.pulledby = src
-
- //Attempted fix for people flying away through space when cuffed and dragged.
- if(ismob(AM))
- var/mob/pulled = AM
- pulled.inertia_dir = 0
+ if(pullin)
+ pullin.update_icon(src)
/mob/proc/can_use_hands()
return
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index f62186ba2f6..d8586c243c5 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -447,5 +447,27 @@
/mob/proc/mob_negates_gravity()
return 0
+/mob/proc/Move_Pulled(atom/A)
+ if (!canmove || restrained() || !pulling)
+ return
+ if (pulling.anchored)
+ return
+ if (!pulling.Adjacent(src))
+ return
+ if (A == loc && pulling.density)
+ return
+ if (!Process_Spacemove(get_dir(pulling.loc, A)))
+ return
+ if (ismob(pulling))
+ var/mob/M = pulling
+ var/atom/movable/t = M.pulling
+ M.stop_pulling()
+ step(pulling, get_dir(pulling.loc, A))
+ if(M)
+ M.start_pulling(t)
+ else
+ step(pulling, get_dir(pulling.loc, A))
+ return
+
/mob/proc/update_gravity()
return
diff --git a/code/modules/power/engine.dm b/code/modules/power/engine.dm
index 614a7393d9a..1d7a97406e4 100644
--- a/code/modules/power/engine.dm
+++ b/code/modules/power/engine.dm
@@ -1,20 +1,6 @@
/turf/simulated/floor/engine/attack_hand(var/mob/user as mob)
- if ((!( user.canmove ) || user.restrained() || !( user.pulling )))
- return
- if (user.pulling.anchored)
- return
- if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
- return
- if (ismob(user.pulling))
- var/mob/M = user.pulling
- var/atom/movable/t = M.pulling
- M.stop_pulling()
- step(user.pulling, get_dir(user.pulling.loc, src))
- M.start_pulling(t)
- else
- step(user.pulling, get_dir(user.pulling.loc, src))
- return
+ user.Move_Pulled(src)
/turf/simulated/floor/engine/ex_act(severity)
switch(severity)
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index d736b89ce4c..c4ba69dc71a 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -124,21 +124,7 @@
// attack with hand, move pulled object onto conveyor
/obj/machinery/conveyor/attack_hand(mob/user as mob)
- if ((!( user.canmove ) || user.restrained() || !( user.pulling )))
- return
- if (user.pulling.anchored)
- return
- if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
- return
- if (ismob(user.pulling))
- var/mob/M = user.pulling
- M.stop_pulling()
- step(user.pulling, get_dir(user.pulling.loc, src))
- user.stop_pulling()
- else
- step(user.pulling, get_dir(user.pulling.loc, src))
- user.stop_pulling()
- return
+ user.Move_Pulled(src)
// make the conveyor broken
diff --git a/code/modules/vehicle/train/trains/ambulance.dm b/code/modules/vehicle/train/trains/ambulance.dm
index fea50fba521..f7094f10ad8 100644
--- a/code/modules/vehicle/train/trains/ambulance.dm
+++ b/code/modules/vehicle/train/trains/ambulance.dm
@@ -33,7 +33,6 @@
/obj/vehicle/train/ambulance/engine/New()
..()
cell = new /obj/item/weapon/stock_parts/cell/high
- verbs -= /atom/movable/verb/pull
key = new()
/obj/vehicle/train/ambulance/engine/Move()
diff --git a/code/modules/vehicle/train/trains/cargo/cargo_train.dm b/code/modules/vehicle/train/trains/cargo/cargo_train.dm
index 338432fabad..5933ada33d5 100644
--- a/code/modules/vehicle/train/trains/cargo/cargo_train.dm
+++ b/code/modules/vehicle/train/trains/cargo/cargo_train.dm
@@ -41,7 +41,6 @@
/obj/vehicle/train/cargo/engine/New()
..()
cell = new /obj/item/weapon/stock_parts/cell/high
- verbs -= /atom/movable/verb/pull
key = new()
var/image/I = new(icon = 'icons/obj/vehicles.dmi', icon_state = "cargo_engine_overlay", layer = src.layer + 0.2) //over mobs
overlays += I
@@ -279,10 +278,5 @@
if(!lead && !tow)
anchored = 0
- if(verbs.Find(/atom/movable/verb/pull))
- return
- else
- verbs += /atom/movable/verb/pull
else
- anchored = 1
- verbs -= /atom/movable/verb/pull
+ anchored = 1
\ No newline at end of file
diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi
index 38fc4dd06be..b6a84df335a 100644
Binary files a/icons/mob/screen1.dmi and b/icons/mob/screen1.dmi differ
diff --git a/icons/mob/screen1_Midnight.dmi b/icons/mob/screen1_Midnight.dmi
index 89723dc9363..808734a832e 100644
Binary files a/icons/mob/screen1_Midnight.dmi and b/icons/mob/screen1_Midnight.dmi differ
diff --git a/icons/mob/screen1_NinjaHUD.dmi b/icons/mob/screen1_NinjaHUD.dmi
index d4f554a0aa4..bbbf743533e 100644
Binary files a/icons/mob/screen1_NinjaHUD.dmi and b/icons/mob/screen1_NinjaHUD.dmi differ
diff --git a/icons/mob/screen1_Orange.dmi b/icons/mob/screen1_Orange.dmi
index bda7f98857b..15964ad65d0 100644
Binary files a/icons/mob/screen1_Orange.dmi and b/icons/mob/screen1_Orange.dmi differ
diff --git a/icons/mob/screen1_Vampire.dmi b/icons/mob/screen1_Vampire.dmi
index a5026a36fa2..6a30aa697d8 100644
Binary files a/icons/mob/screen1_Vampire.dmi and b/icons/mob/screen1_Vampire.dmi differ
diff --git a/icons/mob/screen1_White.dmi b/icons/mob/screen1_White.dmi
index b96463eee2b..b474f443445 100644
Binary files a/icons/mob/screen1_White.dmi and b/icons/mob/screen1_White.dmi differ
diff --git a/icons/mob/screen1_corgi.dmi b/icons/mob/screen1_corgi.dmi
index cfe8f62efa5..dafa9ae2b44 100644
Binary files a/icons/mob/screen1_corgi.dmi and b/icons/mob/screen1_corgi.dmi differ
diff --git a/icons/mob/screen1_old.dmi b/icons/mob/screen1_old.dmi
index 51dce681bf7..7da629f1dae 100644
Binary files a/icons/mob/screen1_old.dmi and b/icons/mob/screen1_old.dmi differ
diff --git a/icons/mob/screen1_robot.dmi b/icons/mob/screen1_robot.dmi
index cc2051ee1ce..9188e33ff5f 100644
Binary files a/icons/mob/screen1_robot.dmi and b/icons/mob/screen1_robot.dmi differ
diff --git a/paradise.dme b/paradise.dme
index 34ed30b4905..9139152a4c1 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -882,7 +882,6 @@
#include "code\game\vehicles\spacepods\parts.dm"
#include "code\game\vehicles\spacepods\pod_fabricator.dm"
#include "code\game\vehicles\spacepods\spacepod.dm"
-#include "code\game\verbs\atom_verbs.dm"
#include "code\game\verbs\ooc.dm"
#include "code\game\verbs\suicide.dm"
#include "code\game\verbs\who.dm"