From 40aff440ab64258f1b83ef899ae1045a6400f971 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Sun, 8 May 2016 18:30:37 -0700 Subject: [PATCH 1/6] makes tesla fuck shit up --- code/game/machinery/machinery.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 77028a43d1a..63223fab193 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -464,10 +464,8 @@ Class Procs: /obj/machinery/tesla_act(var/power) ..() if(prob(85)) - emp_act(2) + explosion(src.loc,1,2,4,flame_range = 2) else if(prob(50)) - ex_act(3) - else if(prob(90)) - ex_act(2) + emp_act(2) else - ex_act(1) + ex_act(2) From 86aeb632056b340191db1076edcbd62104dfff41 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Tue, 23 Aug 2016 18:17:55 -0700 Subject: [PATCH 2/6] three months in the making --- code/game/machinery/machinery.dm | 2 +- .../effects/effect_system/effects_explosion.dm | 5 +++++ code/game/objects/explosion.dm | 13 +++++++++---- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 870423677ac..2635f07fd4f 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -466,7 +466,7 @@ Class Procs: /obj/machinery/tesla_act(var/power) ..() if(prob(85)) - explosion(src.loc,1,2,4,flame_range = 2) + explosion(src.loc,1,2,4,flame_range = 2, adminlog = 0, smoke = 0) else if(prob(50)) emp_act(2) else diff --git a/code/game/objects/effects/effect_system/effects_explosion.dm b/code/game/objects/effects/effect_system/effects_explosion.dm index 2c5c635c69c..c8d54842b6c 100644 --- a/code/game/objects/effects/effect_system/effects_explosion.dm +++ b/code/game/objects/effects/effect_system/effects_explosion.dm @@ -48,6 +48,11 @@ var/datum/effect_system/expl_particles/P = new/datum/effect_system/expl_particles() P.set_up(10, 0, location) P.start() + +/datum/effect_system/explosion/smoke + +/datum/effect_system/explosion/smoke/start() + ..() spawn(5) var/datum/effect_system/smoke_spread/S = new S.set_up(2, location) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 6ca8e7598e8..248a17a77f0 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -1,6 +1,6 @@ //TODO: Flash range does nothing currently -/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0) +/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0, smoke = 1) set waitfor = 0 src = null //so we don't abort once src is deleted epicenter = get_turf(epicenter) @@ -70,9 +70,14 @@ SSmachine.postpone(postponeCycles) if(heavy_impact_range > 1) - var/datum/effect_system/explosion/E = new/datum/effect_system/explosion() - E.set_up(epicenter) - E.start() + if(smoke) + var/datum/effect_system/explosion/smoke/E = new/datum/effect_system/explosion/smoke() + E.set_up(epicenter) + E.start() + else + var/datum/effect_system/explosion/E = new/datum/effect_system/explosion() + E.set_up(epicenter) + E.start() var/x0 = epicenter.x var/y0 = epicenter.y From 438d8d8047a41091a88986a1df81e2e383fa800f Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Wed, 24 Aug 2016 19:23:18 -0700 Subject: [PATCH 3/6] a few tweaks - makes tesla bomb immune so it wont destroy itself - makes lights spew fire when they explode instead of the regular explosion - makes cameras with EMP immunity also have tesla immunity tesla can now keep itself fully contained (at least on box) --- code/game/machinery/camera/camera.dm | 4 ++++ code/modules/power/lighting.dm | 4 ++++ code/modules/power/tesla/energy_ball.dm | 3 +++ 3 files changed, 11 insertions(+) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 7c935e85a5d..0bc318a5494 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -105,6 +105,10 @@ O << "The screen bursts into static." ..() +/obj/machinery/camera/tesla_act(var/power)//EMP proof upgrade also makes it tesla immune + if(isEmpProof()) + return + ..() /obj/machinery/camera/blob_act(obj/effect/blob/B) if(B && B.loc == loc) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 7b2f9cab0f8..68c06b4cb51 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -535,6 +535,10 @@ else flicker() +/obj/machinery/light/tesla_act(var/power) + explosion(src.loc,0,0,0,flame_range = 5, adminlog = 0) + qdel(src) + // called when area power state changes /obj/machinery/light/power_change() var/area/A = get_area(src) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 1b7e68f0d0c..ee835dac8fb 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -38,6 +38,9 @@ var/list/blacklisted_tesla_types = typecacheof(list(/obj/machinery/atmospherics, var/energy_to_raise = 32 var/energy_to_lower = -20 +/obj/singularity/energy_ball/ex_act(severity, target) + return + /obj/singularity/energy_ball/Destroy() if(orbiting && istype(orbiting, /obj/singularity/energy_ball)) var/obj/singularity/energy_ball/EB = orbiting From 08ecbf63ee65eb6ceee5cc480162bbdb976f26c3 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Sat, 27 Aug 2016 13:37:28 -0700 Subject: [PATCH 4/6] fixes grilles exploding machines --- code/game/objects/structures/grille.dm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 49015bdfc2e..6f92b8c0657 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -264,8 +264,17 @@ var/turf/T = get_turf(src) var/obj/structure/cable/C = T.get_cable_node() if(C) - playsound(src.loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 3, C.powernet.avail * 0.08) //ZAP for 1/5000 of the amount of power, which is from 15-25 with 200000W + var/mob/living/closest_mob + for(var/A in oview(src, 3)) + if(istype(A, /mob/living)) + var/dist = get_dist(src, A) + if(dist <= 3) + closest_mob = A + if(closest_mob) + var/shock_damage = C.powernet.avail * 0.08 + src.Beam(closest_mob, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5) + closest_mob.electrocute_act(shock_damage, src, 1, tesla_shock = 1)//ZAP for 1/5000 of the amount of power, which is from 15-25 with 200000W + playsound(src.loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5) take_damage(tforce) /obj/structure/grille/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) From 58f43daee326133bb2a92219993ec7a40c282e7a Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Sat, 27 Aug 2016 15:20:25 -0700 Subject: [PATCH 5/6] makes nuke and grav gen properly destroy when zapped --- code/game/gamemodes/nuclear/nuclearbomb.dm | 3 +++ code/modules/power/gravitygenerator.dm | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 969a310c9dc..88aed68a67e 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -401,6 +401,9 @@ var/bomb_set return . = ..() +/obj/machinery/nuclearbomb/tesla_act(var/power) + ..() + qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over #define NUKERANGE 127 /obj/machinery/nuclearbomb/proc/explode() diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index a5471f8667e..d1623868bbd 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -36,6 +36,11 @@ var/const/GRAV_NEEDS_WRENCH = 3 if(prob(20)) set_broken() +/obj/machinery/gravity_generator/tesla_act(var/power) + ..() + set_broken() + 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]" From a8f893d34355f344523b5c1f39109d1877f4e933 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Sat, 27 Aug 2016 15:38:44 -0700 Subject: [PATCH 6/6] fixes runtime with grav gen --- code/modules/power/gravitygenerator.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index d1623868bbd..80b96c18152 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -38,7 +38,6 @@ var/const/GRAV_NEEDS_WRENCH = 3 /obj/machinery/gravity_generator/tesla_act(var/power) ..() - set_broken() qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over /obj/machinery/gravity_generator/update_icon()