diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index f99937ca2eb3..a9e6debcf958 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -527,6 +527,8 @@
target = safepick(oview(1,src))
if(!melee_can_hit || !istype(target, /atom))
return
+ if(equipment_disabled)
+ return
target.mech_melee_attack(src)
melee_can_hit = 0
spawn(melee_cooldown)
@@ -669,11 +671,12 @@
if(..()) //mech was thrown
return
if(bumpsmash && occupant) //Need a pilot to push the PUNCH button.
- if(nextsmash < world.time)
- obstacle.mech_melee_attack(src)
- nextsmash = world.time + smashcooldown
- if(!obstacle || obstacle.CanPass(src,newloc))
- step(src,dir)
+ if(!equipment_disabled)
+ if(nextsmash < world.time)
+ obstacle.mech_melee_attack(src)
+ nextsmash = world.time + smashcooldown
+ if(!obstacle || obstacle.CanPass(src,newloc))
+ step(src,dir)
if(isobj(obstacle))
var/obj/O = obstacle
if(!O.anchored)
diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm
index 30d5b8266fa6..5d3131a162f6 100644
--- a/code/game/mecha/mecha_actions.dm
+++ b/code/game/mecha/mecha_actions.dm
@@ -191,6 +191,8 @@
button_icon_state = "mech_overload_off"
/datum/action/innate/mecha/mech_overload_mode/Activate(forced_state = null)
+ if(chassis.equipment_disabled)
+ return
if(!owner || !chassis || chassis.occupant != owner)
return
if(!isnull(forced_state))
@@ -207,7 +209,7 @@
chassis.occupant_message("You enable leg actuators overload.")
else
chassis.leg_overload_mode = 0
- chassis.bumpsmash = 0
+ chassis.bumpsmash = initial(chassis.bumpsmash)
chassis.step_in = initial(chassis.step_in)
chassis.step_energy_drain = chassis.normal_step_energy_drain
chassis.occupant_message("You disable leg actuators overload.")
diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm
index 0ae356f905c6..eacbeaf79e70 100644
--- a/code/game/mecha/mecha_defense.dm
+++ b/code/game/mecha/mecha_defense.dm
@@ -157,6 +157,7 @@
occupant?.update_mouse_pointer()
if(!equipment_disabled && occupant) //prevent spamming this message with back-to-back EMPs
to_chat(occupant, "Error -- Connection to equipment control unit has been lost.")
+ overload_action.Activate(0)
addtimer(CALLBACK(src, /obj/mecha/proc/restore_equipment), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
equipment_disabled = 1
@@ -375,4 +376,4 @@
WR.crowbar_salvage += internal_tank
internal_tank.forceMove(WR)
cell = null
- . = ..()
\ No newline at end of file
+ . = ..()