diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm
index 99020ec7df..f1e4d4468b 100644
--- a/code/modules/vehicles/mecha/_mecha.dm
+++ b/code/modules/vehicles/mecha/_mecha.dm
@@ -272,7 +272,7 @@
/obj/vehicle/sealed/mecha/proc/update_part_values() ///Updates the values given by scanning module and capacitor tier, called when a part is removed or inserted.
if(scanmod)
- normal_step_energy_drain = 20 - (5 * scanmod.rating) //10 is normal, so on lowest part its worse, on second its ok and on higher its real good up to 0 on best
+ normal_step_energy_drain = initial(normal_step_energy_drain) * (1.5 / (scanmod.rating - 0.5)) //movement power cost is 3x of default at T1, 1x at T2, 0.6x at T3 and 0.4x at T4
step_energy_drain = normal_step_energy_drain
else
normal_step_energy_drain = 500
@@ -641,6 +641,9 @@
if(!Process_Spacemove(direction))
return FALSE
if(!has_charge(step_energy_drain))
+ if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_MECHA_MESSAGE))
+ to_chat(occupants, "[icon2html(src, occupants)]Insufficient power to move!")
+ TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MESSAGE, 2 SECONDS)
return FALSE
if(zoom_mode)
to_chat(occupants, "[icon2html(src, occupants)]Unable to move while in zoom mode!")
@@ -651,7 +654,7 @@
if(!scanmod || !capacitor)
to_chat(occupants, "[icon2html(src, occupants)]Missing [scanmod? "capacitor" : "scanning module"].")
return FALSE
- if(lavaland_only && is_mining_level(z))
+ if(lavaland_only && !is_mining_level(z))
to_chat(occupants, "[icon2html(src, occupants)]Invalid Environment.")
return FALSE
@@ -683,6 +686,7 @@
return TRUE
set_glide_size(DELAY_TO_GLIDE_SIZE(movedelay))
+ use_power(step_energy_drain)
//Otherwise just walk normally
. = step(src,direction, dir)
diff --git a/code/modules/vehicles/mecha/combat/gygax.dm b/code/modules/vehicles/mecha/combat/gygax.dm
index 29746a5fc7..ae7f846142 100644
--- a/code/modules/vehicles/mecha/combat/gygax.dm
+++ b/code/modules/vehicles/mecha/combat/gygax.dm
@@ -9,12 +9,13 @@
deflect_chance = 5
armor = list(MELEE = 25, BULLET = 20, LASER = 30, ENERGY = 15, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100)
max_temperature = 25000
- leg_overload_coeff = 80
+ leg_overload_coeff = 300
+ overload_step_energy_drain_min = 300
force = 25
wreckage = /obj/structure/mecha_wreckage/gygax
internal_damage_threshold = 35
max_equip = 3
- step_energy_drain = 3
+ normal_step_energy_drain = 3
/obj/vehicle/sealed/mecha/combat/gygax/dark
desc = "A lightweight exosuit, painted in a dark scheme. This model appears to have some modifications."
@@ -24,7 +25,8 @@
deflect_chance = 20
armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 35, BOMB = 20, BIO = 0, RAD =20, FIRE = 100, ACID = 100)
max_temperature = 35000
- leg_overload_coeff = 70
+ leg_overload_coeff = 100
+ overload_step_energy_drain_min = 100
force = 30
operation_req_access = list(ACCESS_SYNDICATE)
internals_req_access = list(ACCESS_SYNDICATE)
diff --git a/code/modules/vehicles/mecha/combat/medigax.dm b/code/modules/vehicles/mecha/combat/medigax.dm
index 6b2f54a976..ec38dd37db 100644
--- a/code/modules/vehicles/mecha/combat/medigax.dm
+++ b/code/modules/vehicles/mecha/combat/medigax.dm
@@ -11,7 +11,7 @@
max_temperature = 25000
wreckage = /obj/structure/mecha_wreckage/odysseus
internal_damage_threshold = 35
- step_energy_drain = 6
+ normal_step_energy_drain = 6
infra_luminosity = 6
internals_req_access = list(ACCESS_ROBOTICS, ACCESS_MEDICAL)
diff --git a/code/modules/vehicles/mecha/combat/phazon.dm b/code/modules/vehicles/mecha/combat/phazon.dm
index c964b17e36..fad2b0783c 100644
--- a/code/modules/vehicles/mecha/combat/phazon.dm
+++ b/code/modules/vehicles/mecha/combat/phazon.dm
@@ -4,7 +4,7 @@
icon_state = "phazon"
movedelay = 2
dir_in = 2 //Facing South.
- step_energy_drain = 3
+ normal_step_energy_drain = 3
max_integrity = 200
deflect_chance = 30
armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 30, BIO = 0, RAD = 50, FIRE = 100, ACID = 100)
diff --git a/code/modules/vehicles/mecha/combat/reticence.dm b/code/modules/vehicles/mecha/combat/reticence.dm
index b0c8b07aaf..300023b7ab 100644
--- a/code/modules/vehicles/mecha/combat/reticence.dm
+++ b/code/modules/vehicles/mecha/combat/reticence.dm
@@ -14,7 +14,7 @@
mecha_flags = CANSTRAFE | IS_ENCLOSED | HAS_LIGHTS
internal_damage_threshold = 25
max_equip = 2
- step_energy_drain = 3
+ normal_step_energy_drain = 3
color = "#87878715"
stepsound = null
turnsound = null
diff --git a/code/modules/vehicles/mecha/medical/odysseus.dm b/code/modules/vehicles/mecha/medical/odysseus.dm
index bd415cd64f..dd693f9dbb 100644
--- a/code/modules/vehicles/mecha/medical/odysseus.dm
+++ b/code/modules/vehicles/mecha/medical/odysseus.dm
@@ -9,7 +9,7 @@
wreckage = /obj/structure/mecha_wreckage/odysseus
internal_damage_threshold = 35
deflect_chance = 15
- step_energy_drain = 6
+ normal_step_energy_drain = 6
internals_req_access = list(ACCESS_ROBOTICS, ACCESS_MEDICAL)
/obj/vehicle/sealed/mecha/medical/odysseus/moved_inside(mob/living/carbon/human/H)
diff --git a/code/modules/vehicles/mecha/working/ripley.dm b/code/modules/vehicles/mecha/working/ripley.dm
index 965cdbedd9..40b2e61402 100644
--- a/code/modules/vehicles/mecha/working/ripley.dm
+++ b/code/modules/vehicles/mecha/working/ripley.dm
@@ -96,7 +96,7 @@
movedelay = 4
lights_power = 7
wreckage = /obj/structure/mecha_wreckage/ripley/deathripley
- step_energy_drain = 0
+ normal_step_energy_drain = 0
enclosed = TRUE
enter_delay = 40
silicon_icon_state = null