From 22c68fea7f7f3b031c744f94ebfebf115bfe2f85 Mon Sep 17 00:00:00 2001 From: Theos Date: Sat, 16 May 2020 02:28:42 -0400 Subject: [PATCH 1/4] mechs can't punch while EMPed --- code/game/mecha/mecha.dm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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) From 5daa1c9b748488e4699f88fb76c841f4a8703d2a Mon Sep 17 00:00:00 2001 From: Theos Date: Sat, 16 May 2020 02:29:32 -0400 Subject: [PATCH 2/4] fuck (#8520) * gygax can't meme while EMPed * no mech overload while EMPed --- code/game/mecha/mecha_actions.dm | 2 ++ code/game/mecha/mecha_defense.dm | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index 30d5b8266fa6..fcaab3a2a45c 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(equipment_disabled) + return if(!owner || !chassis || chassis.occupant != owner) return if(!isnull(forced_state)) 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 + . = ..() From 16064ecbe7118ec9ac02b39e7dd52f47d1351f80 Mon Sep 17 00:00:00 2001 From: Theos Date: Sat, 16 May 2020 02:31:43 -0400 Subject: [PATCH 3/4] some mechs have bumpsmash on by default and the actions are global so --- code/game/mecha/mecha_actions.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index fcaab3a2a45c..14b1fb480909 100644 --- a/code/game/mecha/mecha_actions.dm +++ b/code/game/mecha/mecha_actions.dm @@ -209,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.") From 8ddaa25c828b6a2971c029a724893840926b48e0 Mon Sep 17 00:00:00 2001 From: Theos Date: Sat, 16 May 2020 05:29:00 -0400 Subject: [PATCH 4/4] Update mecha_actions.dm --- code/game/mecha/mecha_actions.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index 14b1fb480909..5d3131a162f6 100644 --- a/code/game/mecha/mecha_actions.dm +++ b/code/game/mecha/mecha_actions.dm @@ -191,7 +191,7 @@ button_icon_state = "mech_overload_off" /datum/action/innate/mecha/mech_overload_mode/Activate(forced_state = null) - if(equipment_disabled) + if(chassis.equipment_disabled) return if(!owner || !chassis || chassis.occupant != owner) return