From 02bd5929eee188d6fe7a002cf4d7b23c5abd7d6b Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Sat, 28 Mar 2026 11:51:19 -0700 Subject: [PATCH] [MIRROR] Fixes tesla_zap proc (#12609) Co-authored-by: Cameron Lennox --- code/game/objects/structures/flora/trees.dm | 4 -- code/modules/admin/verbs/lightning_strike.dm | 2 +- code/modules/power/gravitygenerator_vr.dm | 4 -- code/modules/power/port_gen_vr.dm | 12 ---- code/modules/power/tesla/coil.dm | 18 ------ code/modules/power/tesla/generator.dm | 4 -- code/modules/power/tesla/tesla_act.dm | 62 ++++++++++++++++---- 7 files changed, 53 insertions(+), 53 deletions(-) diff --git a/code/game/objects/structures/flora/trees.dm b/code/game/objects/structures/flora/trees.dm index 0fa0da72a2..d773786962 100644 --- a/code/game/objects/structures/flora/trees.dm +++ b/code/game/objects/structures/flora/trees.dm @@ -124,10 +124,6 @@ if(Proj.get_structure_damage()) adjust_health(-Proj.get_structure_damage(), TRUE) -/obj/structure/flora/tree/tesla_act(power, explosive, current_jumps) - adjust_health(-power / 100, TRUE) // Kills most trees in one lightning strike. - ..() - /obj/structure/flora/tree/get_description_interaction() var/list/results = list() diff --git a/code/modules/admin/verbs/lightning_strike.dm b/code/modules/admin/verbs/lightning_strike.dm index 13f428841e..2f5a4f1637 100644 --- a/code/modules/admin/verbs/lightning_strike.dm +++ b/code/modules/admin/verbs/lightning_strike.dm @@ -73,7 +73,7 @@ ADMIN_VERB(admin_lightning_strike, R_FUN, "Lightning Strike", "Causes lightning coil.tesla_act(LIGHTNING_POWER, TRUE, current_jumps = 1) else // Striking the turf directly. - tesla_zap(T, zap_range = LIGHTNING_ZAP_RANGE, power = LIGHTNING_POWER, explosive = FALSE, stun_mobs = TRUE, current_jumps = 1) + tesla_zap(T, zap_range = LIGHTNING_ZAP_RANGE, power = LIGHTNING_POWER, explosive = FALSE, stun_mobs = TRUE, current_jumps = MAXIMUM_TESLA_JUMPS - 1) //This ensures it can only jump to the closest thing and that's it. No more jumps after that. // Some extra effects. // Some apply to those within zap range, others if they were a bit farther away. diff --git a/code/modules/power/gravitygenerator_vr.dm b/code/modules/power/gravitygenerator_vr.dm index dbf04f3776..d451477df4 100644 --- a/code/modules/power/gravitygenerator_vr.dm +++ b/code/modules/power/gravitygenerator_vr.dm @@ -38,10 +38,6 @@ GLOBAL_LIST_EMPTY(gravity_generators) if(prob(20)) set_broken() -/obj/machinery/gravity_generator/tesla_act(power, explosive, current_jumps) - ..() - qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over - /obj/machinery/gravity_generator/update_icon() icon_state = "[get_status()]_[sprite_number]" diff --git a/code/modules/power/port_gen_vr.dm b/code/modules/power/port_gen_vr.dm index a80db0fa5d..fe548c3e44 100644 --- a/code/modules/power/port_gen_vr.dm +++ b/code/modules/power/port_gen_vr.dm @@ -297,10 +297,6 @@ /obj/machinery/power/rtg/abductor/fire_act(exposed_temperature, exposed_volume) asplod() -/obj/machinery/power/rtg/abductor/tesla_act(power, explosive, current_jumps) - ..() //extend the zap - asplod() - // Comes with an installed cell /obj/machinery/power/rtg/abductor/built icon_state = "core" @@ -355,10 +351,6 @@ /obj/machinery/power/rtg/kugelblitz/fire_act(exposed_temperature, exposed_volume) asplod() -/obj/machinery/power/rtg/kugelblitz/tesla_act(power, explosive, current_jumps) - ..() //extend the zap - asplod() - /obj/machinery/power/rtg/kugelblitz/bullet_act(obj/item/projectile/Proj) . = ..() if(istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) && Proj.damage >= 20) @@ -620,10 +612,6 @@ /obj/machinery/power/rtg/antimatter_core/fire_act(exposed_temperature, exposed_volume) return -/obj/machinery/power/rtg/antimatter_core/tesla_act(power, explosive, current_jumps) - ..() //extend the zap - asplod() - /obj/machinery/power/rtg/antimatter_core/bullet_act(obj/item/projectile/Proj) . = ..() if(istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) && Proj.damage >= 20) diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index 1fc16efea2..a9369a897a 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -153,18 +153,6 @@ return ..() -/obj/machinery/power/tesla_coil/tesla_act(power, explosive, current_jumps) - if(anchored && !panel_open) - being_shocked = TRUE - coil_act(power, explosive, current_jumps) - //addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) - spawn(zap_cooldown) reset_shocked() - else if(anchored && panel_open) //Doing maintenance. Just act like a grounding rod. - being_shocked = TRUE - spawn(zap_cooldown) reset_shocked() - else - ..() - /obj/machinery/power/tesla_coil/proc/coil_act(power, explosive, current_jumps) var/power_produced = power / power_loss add_avail(power_produced*input_power_multiplier) @@ -384,12 +372,6 @@ return ..() -/obj/machinery/power/grounding_rod/tesla_act(power, explosive, current_jumps) - if(anchored && !panel_open) - flick("grounding_rodhit", src) - else - ..() - //Mapspawn variants of each. /obj/machinery/power/tesla_coil/pre_mapped anchored = TRUE diff --git a/code/modules/power/tesla/generator.dm b/code/modules/power/tesla/generator.dm index 2ec8768ede..de948b96de 100644 --- a/code/modules/power/tesla/generator.dm +++ b/code/modules/power/tesla/generator.dm @@ -5,9 +5,5 @@ icon_state = "TheSingGen" creation_type = /obj/singularity/energy_ball -/obj/machinery/the_singularitygen/tesla/tesla_act(power, explosive = FALSE, current_jumps) - if(explosive) - energy += power - /obj/machinery/the_singularitygen/tesla/pre_mapped anchored = TRUE diff --git a/code/modules/power/tesla/tesla_act.dm b/code/modules/power/tesla/tesla_act.dm index 96c56cbe8f..7405777120 100644 --- a/code/modules/power/tesla/tesla_act.dm +++ b/code/modules/power/tesla/tesla_act.dm @@ -2,10 +2,10 @@ // Vars and Default tesla_act behavior //////////////////////////////////////// -/obj/proc/tesla_act(power, explosive = FALSE, current_jumps) +/obj/proc/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) being_shocked = TRUE var/power_bounced = power / 2 - tesla_zap(src, 3, power_bounced, current_jumps) + tesla_zap(src, zap_range = 3, power = power_bounced, explosive = explosive, current_jumps = current_jumps) //addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) //schedule_task_with_source_in(10, src, PROC_REF(reset_shocked)) spawn(10) reset_shocked() @@ -15,16 +15,16 @@ // Overrides for behavior on specific types -/obj/structure/blob/tesla_act(power, explosive, current_jumps) +/obj/structure/blob/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) ..() adjust_integrity(-power/400) -/obj/machinery/nuclearbomb/tesla_act(power, explosive, current_jumps) +/obj/machinery/nuclearbomb/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) ..() if(explosive) qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over -/obj/machinery/tesla_act(power, explosive, current_jumps) +/obj/machinery/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) ..() if(prob(85) && explosive) explosion(loc, 0, 2, 4, /*flame_range = 2,*/ adminlog = FALSE/*, smoke = FALSE*/) // VOREStation Edit - No devastation range @@ -33,13 +33,13 @@ else ex_act(2) -/obj/machinery/camera/tesla_act(power, explosive, current_jumps)//EMP proof upgrade also makes it tesla immune +/obj/machinery/camera/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) //EMP proof upgrade also makes it tesla immune if(isEmpProof()) return ..() qdel(src) //to prevent bomb testing camera from exploding over and over forever -/obj/machinery/light/tesla_act(power, explosive, current_jumps) +/obj/machinery/light/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) if(explosive) explosion(loc, 0, 0, 0/*, flame_range = 5*/, adminlog = FALSE) qdel(src) @@ -47,16 +47,58 @@ on = TRUE broken() -/obj/structure/closet/tesla_act(power, explosive, current_jumps) +/obj/structure/closet/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) ..() //extend the zap visible_message(span_danger("[src] is blown apart by the bolt of electricity!"), span_danger("You hear a metallic screeching sound.")) dump_contents() qdel(src) -/obj/structure/reagent_dispensers/fueltank/tesla_act(power, explosive, current_jumps) +/obj/structure/reagent_dispensers/fueltank/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) ..() //extend the zap explode() -/obj/mecha/tesla_act(power, explosive = FALSE, current_jumps) +/obj/mecha/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) ..() take_damage(power / 200, "energy") // A surface lightning strike will do 100 damage. + +/obj/structure/flora/tree/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) + adjust_health(-power / 100, TRUE) // Kills most trees in one lightning strike. + ..() + +/obj/machinery/gravity_generator/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) + ..() + qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over + +/obj/machinery/power/rtg/abductor/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) + ..() //extend the zap + asplod() + +/obj/machinery/power/rtg/kugelblitz/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) + ..() //extend the zap + asplod() + +/obj/machinery/power/rtg/antimatter_core/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) + ..() //extend the zap + asplod() + +/obj/machinery/the_singularitygen/tesla/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) + if(explosive) + energy += power + +/obj/machinery/power/tesla_coil/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) + if(anchored && !panel_open) + being_shocked = TRUE + coil_act(power, explosive, current_jumps) + //addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) + spawn(zap_cooldown) reset_shocked() + else if(anchored && panel_open) //Doing maintenance. Just act like a grounding rod. + being_shocked = TRUE + spawn(zap_cooldown) reset_shocked() + else + ..() + +/obj/machinery/power/grounding_rod/tesla_act(power, explosive = FALSE, current_jumps = current_jumps) + if(anchored && !panel_open) + flick("grounding_rodhit", src) + else + ..()