mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 21:12:24 +01:00
Fixes mech chargers (#22486)
Fixes mech chargers being impossible to deconstruct or upgrade. Fixes mech charger upgrades doing nothing. Adds a pre-filled rapid part exchanger for testing machine upgrades, or maybe spawning as loot. <img width="435" height="159" alt="image" src="https://github.com/user-attachments/assets/ca534837-ef29-44ff-b9cb-c4fb107e6f99" />
This commit is contained in:
@@ -12,9 +12,14 @@
|
||||
var/mob/living/heavy_vehicle/charging
|
||||
var/base_charge_rate = 90 KILO WATTS
|
||||
var/repair_power_usage = 15 KILO WATTS // Per 1 HP of health.
|
||||
var/repair = 0
|
||||
var/repair
|
||||
var/charge
|
||||
|
||||
var/charge_per_capacitor_rating = 0.5
|
||||
var/charge_per_scanner_rating = 0.25
|
||||
var/repair_per_scanner_rating = 0.25
|
||||
var/repair_per_manipulator_rating = 0.5
|
||||
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/mech_recharger,
|
||||
/obj/item/stock_parts/capacitor = 2,
|
||||
@@ -26,7 +31,11 @@
|
||||
. += ..()
|
||||
. += "Upgraded <b>capacitors</b> will increase charging rate."
|
||||
. += "Upgraded <b>scanning modules</b> will increase both charging rate and repair speed."
|
||||
. += SPAN_NOTICE(" - The current charge speed is <b>[active_power_usage / 1000]</b> kW")
|
||||
. += "Upgraded <b>manipulators</b> will increase repair speed."
|
||||
if(repair > 0)
|
||||
. += SPAN_NOTICE(" - The current repair speed is <b>[repair]</b> HP per second</b>")
|
||||
. += SPAN_NOTICE(" - The current repair power usage is <b>[(repair_power_usage * repair) / 1000]</b> kW")
|
||||
|
||||
/obj/structure/machinery/mech_recharger/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -50,19 +59,30 @@
|
||||
if(gone == charging)
|
||||
stop_charging()
|
||||
|
||||
/obj/structure/machinery/mech_recharger/attackby(obj/item/attacking_item, mob/user)
|
||||
if(default_part_replacement(user, attacking_item))
|
||||
return TRUE
|
||||
else if(default_deconstruction_screwdriver(user, attacking_item))
|
||||
return TRUE
|
||||
else if(default_deconstruction_crowbar(user, attacking_item))
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/structure/machinery/mech_recharger/RefreshParts()
|
||||
..()
|
||||
charge = 0
|
||||
repair = -5
|
||||
charge = -0.25
|
||||
repair = -1.75
|
||||
|
||||
for(var/obj/item/stock_parts/P in component_parts)
|
||||
for(var/obj/item/stock_parts/P in component_parts) //Charges at 315 kW and repairs at 2 HP/s fully upgraded.
|
||||
if(iscapacitor(P))
|
||||
charge += P.rating * 20
|
||||
charge += P.rating * charge_per_capacitor_rating
|
||||
else if(isscanner(P))
|
||||
charge += P.rating * 5
|
||||
repair += P.rating
|
||||
charge += P.rating * charge_per_scanner_rating
|
||||
repair += P.rating * repair_per_scanner_rating
|
||||
else if(ismanipulator(P))
|
||||
repair += P.rating * 2
|
||||
repair += P.rating * repair_per_manipulator_rating
|
||||
|
||||
change_power_consumption(initial(base_charge_rate) * charge, POWER_USE_ACTIVE)
|
||||
|
||||
/obj/structure/machinery/mech_recharger/process()
|
||||
if(!charging)
|
||||
@@ -81,9 +101,9 @@
|
||||
stop_charging()
|
||||
return
|
||||
|
||||
var/remaining_energy = active_power_usage
|
||||
var/remaining_energy = active_power_usage * charge
|
||||
|
||||
if(repair && !fully_repaired())
|
||||
if(repair > 0 && !fully_repaired())
|
||||
for(var/obj/item/mech_component/MC in charging)
|
||||
if(MC)
|
||||
MC.repair_brute_damage(repair)
|
||||
|
||||
Reference in New Issue
Block a user