diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm
index 10fa54a7167..fe23d6e5657 100644
--- a/code/game/mecha/combat/combat.dm
+++ b/code/game/mecha/combat/combat.dm
@@ -170,8 +170,8 @@
if(usr in range(1))
usr.pulling = null
// usr.client.eye = src
- usr.loc = src
src.occupant = usr
+ usr.loc = src
src.add_fingerprint(usr)
if(usr.client)
usr.client.mouse_pointer_icon = file("icons/misc/mecha_mouse.dmi")
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 786fad5f40e..0c1368c5dfb 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -53,13 +53,15 @@
..()
var/mob/M = src.mob
if(M && istype(M.loc, /obj/mecha))
+ if(!location) return
if(M.stat>0) return
if(!istype(object,/atom)) return
var/obj/mecha/Mech = M.loc
Mech.click_action(object)
-/obj/mecha/proc/click_action(target)
+/obj/mecha/proc/click_action(atom/target)
+ if(!istype(target,/turf) && !istype(target.loc,/turf)) return
if(!src.occupant) return
if(state || !cell || cell.charge<=0) return
if(src == target) return
@@ -406,8 +408,8 @@
if(usr in range(1))
usr.pulling = null
// usr.client.eye = src
- usr.loc = src
src.occupant = usr
+ usr.loc = src
src.add_fingerprint(usr)
return
@@ -626,4 +628,3 @@
-
diff --git a/code/game/mecha/working/tools/tools.dm b/code/game/mecha/working/tools/tools.dm
index 3465bf978f7..48b3729506e 100644
--- a/code/game/mecha/working/tools/tools.dm
+++ b/code/game/mecha/working/tools/tools.dm
@@ -56,15 +56,15 @@
if(!O.anchored)
if(chassis.cargo.len < chassis.cargo_capacity)
chassis.occupant << "You lift [target] and start to load it into cargo compartment."
- chassis.visible_message("[chassis] lifts [target] and start to load it into cargo compartment.")
+ chassis.visible_message("[chassis] lifts [target] and starts to load it into cargo compartment.")
tool_ready = 0
chassis.cell.use(energy_drain)
O.anchored = 1
var/T = chassis.loc
spawn(tool_cooldown)
if(T == chassis.loc && src == chassis.selected_tool)
- O.loc = chassis
chassis.cargo += O
+ O.loc = chassis
O.anchored = 0
chassis.occupant << "\blue [target] succesfully loaded."
else
@@ -105,8 +105,8 @@
if(!..()) return
tool_ready = 0
chassis.cell.use(energy_drain)
- chassis.visible_message("\red [chassis] starts to drill [target]", "You hear the drill.")
- chassis.occupant << "\red You start to drill [target]"
+ chassis.visible_message("[chassis] starts to drill [target]", "You hear the drill.")
+ chassis.occupant << "You start to drill [target]"
var/T = chassis.loc
spawn(tool_cooldown)
if(T == chassis.loc && src == chassis.selected_tool)
diff --git a/code/game/mecha/working/working.dm b/code/game/mecha/working/working.dm
index fdf3535a070..7d79cca121b 100644
--- a/code/game/mecha/working/working.dm
+++ b/code/game/mecha/working/working.dm
@@ -11,15 +11,14 @@
internals_req_access = list(access_engine)
-/obj/mecha/working/melee_action(atom/target)
+/obj/mecha/working/melee_action(atom/target as obj|mob|turf)
if(selected_tool)
selected_tool.action(target)
return
-/obj/mecha/working/range_action(atom/target)
+/obj/mecha/working/range_action(atom/target as obj|mob|turf)
return
-
/obj/mecha/working/Topic(href, href_list)
..()
if(href_list["drop_from_cargo"])