From ce77c610285df8789850e1dde2909d3f4da8650b Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Fri, 10 Jul 2015 22:35:41 +1200 Subject: [PATCH] Projectile visual bug fixes - Fixed visible beam projectile - Fixed additional tracers overlaying impact effects --- code/modules/projectiles/effects.dm | 4 ++-- code/modules/projectiles/projectile.dm | 20 +++++++++++-------- code/modules/projectiles/projectile/beams.dm | 1 + .../changelogs/Loganbacca-projectilefixes.yml | 4 ++++ 4 files changed, 19 insertions(+), 10 deletions(-) create mode 100644 html/changelogs/Loganbacca-projectilefixes.yml diff --git a/code/modules/projectiles/effects.dm b/code/modules/projectiles/effects.dm index d765e353dab..7874eeb383d 100644 --- a/code/modules/projectiles/effects.dm +++ b/code/modules/projectiles/effects.dm @@ -11,8 +11,8 @@ if(istype(M)) transform = M -/obj/effect/projectile/proc/activate() - spawn(3) +/obj/effect/projectile/proc/activate(var/kill_delay = 3) + spawn(kill_delay) qdel(src) //see effect_system.dm - sets loc to null and lets GC handle removing these effects return diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 82b07b21c5e..9feebbd64b3 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -296,25 +296,26 @@ before_move() Move(location.return_turf()) - if(first_step) - muzzle_effect(effect_transform) - first_step = 0 - else - tracer_effect(effect_transform) - if(!bumped && !isturf(original)) if(loc == get_turf(original)) if(!(original in permutated)) if(Bump(original)) return + if(first_step) + muzzle_effect(effect_transform) + first_step = 0 + else if(!bumped) + tracer_effect(effect_transform) + if(!hitscan) sleep(step_delay) //add delay between movement iterations if it's not a hitscan weapon /obj/item/projectile/proc/process_step(first_step = 0) - + return /obj/item/projectile/proc/before_move() + return /obj/item/projectile/proc/setup_trajectory() // trajectory dispersion @@ -355,7 +356,10 @@ P.set_transform(M) P.pixel_x = location.pixel_x P.pixel_y = location.pixel_y - P.activate() + if(!hitscan) + P.activate(step_delay) //if not a hitscan projectile, remove after a single delay + else + P.activate() /obj/item/projectile/proc/impact_effect(var/matrix/M) if(ispath(tracer_type)) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index eb515298ef3..8aa493404ae 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -8,6 +8,7 @@ eyeblur = 4 var/frequency = 1 hitscan = 1 + invisibility = 101 //beam projectiles are invisible as they are rendered by the effect engine muzzle_type = /obj/effect/projectile/laser/muzzle tracer_type = /obj/effect/projectile/laser/tracer diff --git a/html/changelogs/Loganbacca-projectilefixes.yml b/html/changelogs/Loganbacca-projectilefixes.yml new file mode 100644 index 00000000000..ec05a99f6eb --- /dev/null +++ b/html/changelogs/Loganbacca-projectilefixes.yml @@ -0,0 +1,4 @@ +author: Loganbacca +delete-after: True +changes: + - bugfix: "Fixed visual bugs with projectile effects."