diff --git a/_maps/shuttles/emergency_clown.dmm b/_maps/shuttles/emergency_clown.dmm
index 074fab38c2f..d788c96d3b7 100644
--- a/_maps/shuttles/emergency_clown.dmm
+++ b/_maps/shuttles/emergency_clown.dmm
@@ -145,7 +145,7 @@
},
/area/shuttle/escape)
"az" = (
-/turf/open/chasm/straight_down/lava_land_surface,
+/turf/open/chasm/straight_down/lava_land_surface/normal_air,
/area/shuttle/escape)
"aA" = (
/turf/open/floor/noslip,
diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm
index 76301f15c84..11b6b3e7096 100644
--- a/code/game/objects/effects/effect_system/effect_system.dm
+++ b/code/game/objects/effects/effect_system/effect_system.dm
@@ -53,19 +53,23 @@ would spawn and follow the beaker, even if it is carried or thrown.
for(var/i in 1 to number)
if(total_effects > 20)
return
- spawn(0)
- if(holder)
- location = get_turf(holder)
- var/obj/effect/E = PoolOrNew(effect_type, location)
- total_effects++
- var/direction
- if(cardinals)
- direction = pick(cardinal)
- else
- direction = pick(alldirs)
- var/steps_amt = pick(1,2,3)
- for(var/j in 1 to steps_amt)
- sleep(5)
- step(E,direction)
- spawn(20)
- total_effects--
\ No newline at end of file
+ addtimer(src, "generate_effect", 0)
+
+/datum/effect_system/proc/generate_effect()
+ if(holder)
+ location = get_turf(holder)
+ var/obj/effect/E = PoolOrNew(effect_type, location)
+ total_effects++
+ var/direction
+ if(cardinals)
+ direction = pick(cardinal)
+ else
+ direction = pick(alldirs)
+ var/steps_amt = pick(1,2,3)
+ for(var/j in 1 to steps_amt)
+ sleep(5)
+ step(E,direction)
+ addtimer(src, "decrement_total_effect", 20)
+
+/datum/effect_system/proc/decrement_total_effect()
+ total_effects--
diff --git a/code/game/objects/effects/effect_system/effects_explosion.dm b/code/game/objects/effects/effect_system/effects_explosion.dm
index 2c3445fbcea..2c5c635c69c 100644
--- a/code/game/objects/effects/effect_system/effects_explosion.dm
+++ b/code/game/objects/effects/effect_system/effects_explosion.dm
@@ -6,8 +6,7 @@
/obj/effect/particle_effect/expl_particles/New()
..()
- spawn (15)
- qdel(src)
+ QDEL_IN(src, 15)
/datum/effect_system/expl_particles
number = 10
@@ -34,9 +33,7 @@
/obj/effect/explosion/New()
..()
- spawn (10)
- qdel(src)
- return
+ QDEL_IN(src, 10)
/datum/effect_system/explosion
@@ -54,4 +51,4 @@
spawn(5)
var/datum/effect_system/smoke_spread/S = new
S.set_up(2, location)
- S.start()
\ No newline at end of file
+ S.start()
diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm
index dc51de0ad58..7ca593e3c3e 100644
--- a/code/game/objects/effects/effect_system/effects_foam.dm
+++ b/code/game/objects/effects/effect_system/effects_foam.dm
@@ -44,9 +44,7 @@
M.metal = metal
M.updateicon()
flick("[icon_state]-disolve", src)
- spawn(5)
- qdel(src)
-
+ QDEL_IN(src, 5)
/obj/effect/particle_effect/foam/process()
lifetime--
@@ -220,7 +218,6 @@
/obj/structure/foamedmetal/attack_paw(mob/user)
attack_hand(user)
- return
/obj/structure/foamedmetal/attack_animal(mob/living/simple_animal/user)
@@ -283,4 +280,4 @@
/obj/structure/foamedmetal/CanAtmosPass()
- return !density
\ No newline at end of file
+ return !density
diff --git a/code/game/objects/effects/effect_system/effects_other.dm b/code/game/objects/effects/effect_system/effects_other.dm
index a22c44614f4..099847c5f7b 100644
--- a/code/game/objects/effects/effect_system/effects_other.dm
+++ b/code/game/objects/effects/effect_system/effects_other.dm
@@ -101,8 +101,6 @@
flashing = flash
flashing_factor = flash_fact
- return
-
/datum/effect_system/reagents_explosion/start()
if(explosion_message)
location.visible_message("The solution violently explodes!", \
diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index c772aa1246a..1c2bd7c4b8e 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -39,10 +39,8 @@
/obj/effect/particle_effect/smoke/proc/kill_smoke()
STOP_PROCESSING(SSobj, src)
- spawn(0)
- fade_out()
- spawn(10)
- qdel(src)
+ addtimer(src, "fade_out", 0)
+ QDEL_IN(src, 10)
/obj/effect/particle_effect/smoke/process()
lifetime--
@@ -63,11 +61,13 @@
if(C.smoke_delay)
return 0
C.smoke_delay++
- spawn(10)
- if(C)
- C.smoke_delay = 0
+ addtimer(src, "remove_smoke_delay", 10, FALSE, C)
return 1
+/obj/effect/particle_effect/smoke/proc/remove_smoke_delay(mob/living/carbon/C)
+ if(C)
+ C.smoke_delay = 0
+
/obj/effect/particle_effect/smoke/proc/spread_smoke()
var/turf/t_loc = get_turf(src)
var/list/newsmokes = list()
@@ -178,7 +178,6 @@
L.ExtinguishMob()
for(var/obj/item/Item in T)
Item.extinguish()
- return
/datum/effect_system/smoke_spread/freezing/set_up(radius = 5, loca, blasting = 0)
..()
diff --git a/code/game/objects/effects/effect_system/effects_sparks.dm b/code/game/objects/effects/effect_system/effects_sparks.dm
index e3583e79b85..6488083cd4c 100644
--- a/code/game/objects/effects/effect_system/effects_sparks.dm
+++ b/code/game/objects/effects/effect_system/effects_sparks.dm
@@ -18,8 +18,7 @@
var/turf/T = src.loc
if (istype(T, /turf))
T.hotspot_expose(1000,100)
- spawn(20)
- qdel(src)
+ QDEL_IN(src, 20)
/obj/effect/particle_effect/sparks/Destroy()
var/turf/T = src.loc
@@ -44,4 +43,4 @@
icon_state = "electricity"
/datum/effect_system/lightning_spread
- effect_type = /obj/effect/particle_effect/sparks/electricity
\ No newline at end of file
+ effect_type = /obj/effect/particle_effect/sparks/electricity
diff --git a/code/game/objects/effects/effect_system/effects_water.dm b/code/game/objects/effects/effect_system/effects_water.dm
index cd55f1291a4..e12894d970e 100644
--- a/code/game/objects/effects/effect_system/effects_water.dm
+++ b/code/game/objects/effects/effect_system/effects_water.dm
@@ -9,8 +9,7 @@
/obj/effect/particle_effect/water/New()
..()
- spawn( 70 )
- qdel(src)
+ QDEL_IN(src, 70)
/obj/effect/particle_effect/water/Move(turf/newloc)
if (--src.life < 1)
@@ -48,8 +47,7 @@ steam.start() -- spawns the effect
/obj/effect/particle_effect/steam/New()
..()
- spawn(20)
- qdel(src)
+ QDEL_IN(src, 20)
/datum/effect_system/steam_spread
effect_type = /obj/effect/particle_effect/steam
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index a7cb2620390..a5b03d4fceb 100755
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -333,11 +333,12 @@
var/ash_type = /obj/effect/decal/cleanable/ash
/obj/item/toy/snappop/proc/pop_burst(var/n=3, var/c=1)
- var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
+ var/datum/effect_system/spark_spread/s = new()
s.set_up(n, c, src)
s.start()
new ash_type(loc)
- visible_message("[src.name] explodes!","You hear a snap!")
+ visible_message("[src] explodes!",
+ "You hear a snap!")
playsound(src, 'sound/effects/snap.ogg', 50, 1)
qdel(src)