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