From f1c5f816ac6efcb5ddab8744eaff87f09f8d4ccb Mon Sep 17 00:00:00 2001 From: Mykhailo Bykhovtsev Date: Sat, 26 Oct 2019 07:57:41 -0700 Subject: [PATCH] Tesla Fix (#7256) bugfix: "Tesla no longer melts ashes, emitter beams, its own energy balls and accelerated particles." Fixes #7249 bugfix: "Tesla now properly consumes accelerated particles." --- code/datums/beam.dm | 3 ++ code/game/objects/effects/decals/misc.dm | 3 ++ code/modules/power/tesla/energy_ball.dm | 22 +++++++++++++ html/changelogs/Sindorman-tesla.yml | 42 ++++++++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 html/changelogs/Sindorman-tesla.yml diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 12774f86e7a..2cc1e625a0c 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -144,6 +144,9 @@ blend_mode = BLEND_ADD var/datum/beam/owner +/obj/effect/ebeam/tesla_act() + return + /obj/effect/ebeam/Destroy() owner = null return ..() diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index d38656217ef..370592c5c59 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -1,3 +1,6 @@ +/obj/effect/decal/tesla_act() + return + /obj/effect/decal/point name = "arrow" desc = "It's an arrow hanging in mid-air. There may be a wizard about." diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 687d8e53eb8..e359d3d358e 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -24,6 +24,7 @@ var/produced_power var/energy_to_raise = 32 var/energy_to_lower = -20 + var/list/immune_things = list(/obj/effect/projectile/muzzle/emitter, /obj/effect/ebeam, /obj/effect/decal/cleanable/ash, /obj/singularity) /obj/singularity/energy_ball/ex_act(severity, target) return @@ -199,19 +200,37 @@ /obj/singularity/energy_ball/Collide(atom/A) + if(check_for_immune(A)) + return if(isliving(A)) dust_mobs(A) else if(isobj(A)) + if(istype(A, /obj/effect/accelerated_particle)) + consume(A) + return var/obj/O = A O.tesla_act(0, TRUE) /obj/singularity/energy_ball/CollidedWith(atom/A) + if(check_for_immune(A)) + return if(isliving(A)) dust_mobs(A) else if(isobj(A)) + if(istype(A, /obj/effect/accelerated_particle)) + consume(A) + return var/obj/O = A O.tesla_act(0, TRUE) +/obj/singularity/energy_ball/proc/check_for_immune(var/O) + if(!O) + return FALSE + for(var/v in immune_things) + if(istype(O, v)) + return TRUE + return FALSE + /obj/singularity/energy_ball/Move(NewLoc, Dir) . = ..() for(var/v in view(0, loc)) @@ -249,6 +268,9 @@ var/mob/living/carbon/C = A C.dust() +/obj/singularity/energy_ball/tesla_act() + return + /proc/tesla_zap(atom/source, zap_range = 3, power, explosive = FALSE, stun_mobs = TRUE) . = source.dir if(power < 1000) diff --git a/html/changelogs/Sindorman-tesla.yml b/html/changelogs/Sindorman-tesla.yml new file mode 100644 index 00000000000..002a8b9464d --- /dev/null +++ b/html/changelogs/Sindorman-tesla.yml @@ -0,0 +1,42 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: PoZe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Tesla no longer melts ashes, emitter beams, its own energy balls and accelerated particles." + - bugfix: "Tesla now properly consumes accelerated particles."