From b263c37a709a5dc219304e4ee771d096fddfd5c7 Mon Sep 17 00:00:00 2001 From: Sishen Date: Sun, 30 Jun 2019 13:19:17 -0400 Subject: [PATCH] mech counterplay ahoy --- code/game/mecha/equipment/mecha_equipment.dm | 3 +++ code/game/mecha/mecha.dm | 13 ++++++++++--- code/game/mecha/mecha_construction_paths.dm | 4 ++-- code/game/mecha/mecha_control_console.dm | 15 +++++++++++---- code/game/mecha/mecha_defense.dm | 9 ++++++++- code/game/mecha/medical/medical.dm | 7 +------ code/game/mecha/working/working.dm | 3 --- icons/mecha/mecha_mouse-disable.dmi | Bin 0 -> 580 bytes 8 files changed, 35 insertions(+), 19 deletions(-) create mode 100644 icons/mecha/mecha_mouse-disable.dmi diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 8a5a83379d..23be95ff16 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -76,6 +76,9 @@ return 0 if(energy_drain && !chassis.has_charge(energy_drain)) return 0 + if(chassis.equipment_disabled) + to_chat(chassis.occupant, "Error -- Equipment control unit is unresponsive.") + return 0 return 1 /obj/item/mecha_parts/mecha_equipment/proc/action(atom/target) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 4700dda60d..549c22a12e 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -42,6 +42,7 @@ var/last_message = 0 var/add_req_access = 1 var/maint_access = 0 + var/equipment_disabled = 0 //disabled due to EMP var/dna_lock //dna-locking the mech var/list/proc_res = list() //stores proc owners, like proc_res["functionname"] = owner reference var/datum/effect_system/spark_spread/spark_system = new @@ -143,7 +144,6 @@ diag_hud_set_mechhealth() diag_hud_set_mechcell() diag_hud_set_mechstat() - diag_hud_set_mechtracking() /obj/mecha/get_cell() return cell @@ -205,6 +205,15 @@ GLOB.mechas_list -= src //global mech list return ..() +/obj/mecha/proc/restore_equipment() + equipment_disabled = 0 + if(istype(src, /obj/mecha/combat)) + mouse_pointer = 'icons/mecha/mecha_mouse.dmi' + if(occupant) + SEND_SOUND(occupant, sound('sound/items/timer.ogg', volume=50)) + to_chat(occupant, "Equipment control unit has been rebooted successfuly.") + occupant.update_mouse_pointer() + /obj/mecha/CheckParts(list/parts_list) ..() cell = locate(/obj/item/stock_parts/cell) in contents @@ -394,8 +403,6 @@ diag_hud_set_mechhealth() diag_hud_set_mechcell() diag_hud_set_mechstat() - diag_hud_set_mechtracking() - /obj/mecha/proc/drop_item()//Derpfix, but may be useful in future for engineering exosuits. return diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 714c66d032..3b957431f7 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -11,8 +11,8 @@ var/obj/mecha/M = new result(drop_location()) QDEL_NULL(M.cell) - var/atom/parent_atom = parent - M.CheckParts(parent_atom.contents) + var/obj/item/mecha_parts/chassis/parent_chassis = parent + M.CheckParts(parent_chassis.contents) SSblackbox.record_feedback("tally", "mechas_created", 1, M.name) QDEL_NULL(parent) diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 1524da42f2..c9a600c0ba 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -21,8 +21,8 @@ var/answer = TR.get_mecha_info() if(answer) dat += {"
[answer]
- Send message
- Show exosuit log | (EMP pulse)
"} + Send message
+ [TR.recharging?"Recharging EMP Pulse...
":"(EMP Pulse)
"]"} if(screen==1) dat += "

Log contents

" @@ -65,6 +65,7 @@ icon_state = "motion2" w_class = WEIGHT_CLASS_SMALL var/ai_beacon = FALSE //If this beacon allows for AI control. Exists to avoid using istype() on checking. + var/recharging = 0 /obj/item/mecha_parts/mecha_tracking/proc/get_mecha_info() if(!in_mecha()) @@ -102,10 +103,16 @@ return 0 /obj/item/mecha_parts/mecha_tracking/proc/shock() + if(recharging) + return var/obj/mecha/M = in_mecha() if(M) - M.emp_act(EMP_LIGHT) - qdel(src) + M.emp_act(EMP_HEAVY) + addtimer(CALLBACK(src, /obj/item/mecha_parts/mecha_tracking/proc/recharge), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) + recharging = 1 + +/obj/item/mecha_parts/mecha_tracking/proc/recharge() + recharging = 0 /obj/item/mecha_parts/mecha_tracking/proc/get_mecha_log() if(!ismecha(loc)) diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 367c750787..62a62b569d 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -149,7 +149,14 @@ use_power((cell.charge/3)/(severity*2)) take_damage(30 / severity, BURN, "energy", 1) log_message("EMP detected", color="red") - check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1) + + if(istype(src, /obj/mecha/combat)) + mouse_pointer = 'icons/mecha/mecha_mouse-disable.dmi' + 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.") + addtimer(CALLBACK(src, /obj/mecha/proc/restore_equipment), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) + equipment_disabled = 1 /obj/mecha/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature>max_temperature) diff --git a/code/game/mecha/medical/medical.dm b/code/game/mecha/medical/medical.dm index e86b5174cc..8b4e48cd3e 100644 --- a/code/game/mecha/medical/medical.dm +++ b/code/game/mecha/medical/medical.dm @@ -1,8 +1,3 @@ -/obj/mecha/medical/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) - - /obj/mecha/medical/mechturn(direction) setDir(direction) playsound(src,'sound/mecha/mechmove01.ogg',40,1) @@ -18,4 +13,4 @@ var/result = step_rand(src) if(result) playsound(src,'sound/mecha/mechstep.ogg',25,1) - return result \ No newline at end of file + return result diff --git a/code/game/mecha/working/working.dm b/code/game/mecha/working/working.dm index 498ccd94fa..c9e7d99ac0 100644 --- a/code/game/mecha/working/working.dm +++ b/code/game/mecha/working/working.dm @@ -1,6 +1,3 @@ /obj/mecha/working internal_damage_threshold = 60 -/obj/mecha/working/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/icons/mecha/mecha_mouse-disable.dmi b/icons/mecha/mecha_mouse-disable.dmi new file mode 100644 index 0000000000000000000000000000000000000000..48924c58c29288f4f3b410cdf0202279eeafeb88 GIT binary patch literal 580 zcmV-K0=xZ*P)xY$2S; zSOGMBg@te?<0HP)C=-l%dvq@RZEvqi6@qc|V8~GP6b>}a+0QCYW0}ENX#>I77q-kW zwi~OC1IVP0X}(qOXVAz@hD(M*CXCDSgv0wfd4EN9gG@Mm-Q8bkD*f^rs)S53_N|2h zsuMDU@emi+HW`+Uv|XLHnT<#AbHVzfTzmsp-KllC SpWS@`0000