diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 39892a67e3a..c4613f37345 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -496,25 +496,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
var/y=arcsin(x/sqrt(1+x*x))
return y
-
-/proc/anim(turf/location,target as mob|obj,a_icon,a_icon_state as text,flick_anim as text,sleeptime = 0,direction as num)
-//This proc throws up either an icon or an animation for a specified amount of time.
-//The variables should be apparent enough.
- var/atom/movable/overlay/animation = new(location)
- if(direction)
- animation.setDir(direction)
- animation.icon = a_icon
- animation.layer = target:layer+1
- if(a_icon_state)
- animation.icon_state = a_icon_state
- else
- animation.icon_state = "blank"
- animation.master = target
- flick(flick_anim, animation)
- sleep(max(sleeptime, 15))
- qdel(animation)
-
-
/atom/proc/GetAllContents()
var/list/processing_list = list(src)
var/list/assembled = list()
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
index 1e3a5428a10..4121f50a04d 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
@@ -16,13 +16,11 @@
flick("alien-pad", src)
for(var/mob/living/target in loc)
target.forceMove(teleport_target)
- spawn(0)
- anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
+ PoolOrNew(/obj/effect/overlay/temp/ninja, list(get_turf(target), target.dir))
/obj/machinery/abductor/pad/proc/Retrieve(mob/living/target)
flick("alien-pad", src)
- spawn(0)
- anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
+ PoolOrNew(/obj/effect/overlay/temp/ninja, list(get_turf(target), target.dir))
Warp(target)
/obj/machinery/abductor/pad/proc/MobToLoc(place,mob/living/target)
@@ -30,7 +28,7 @@
sleep(80)
flick("alien-pad", src)
target.forceMove(place)
- anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
+ PoolOrNew(/obj/effect/overlay/temp/ninja, list(get_turf(target), target.dir))
/obj/machinery/abductor/pad/proc/PadToLoc(place)
PoolOrNew(/obj/effect/overlay/temp/teleport_abductor, place)
@@ -38,8 +36,7 @@
flick("alien-pad", src)
for(var/mob/living/target in get_turf(src))
target.forceMove(place)
- spawn(0)
- anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
+ PoolOrNew(/obj/effect/overlay/temp/ninja, list(get_turf(target), target.dir))
/obj/effect/overlay/temp/teleport_abductor
diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm
index 1d98760553f..f1b34bdebf9 100644
--- a/code/game/gamemodes/miniantags/morph/morph.dm
+++ b/code/game/gamemodes/miniantags/morph/morph.dm
@@ -121,8 +121,6 @@
form = null
alpha = initial(alpha)
- //anim(loc,src,'icons/mob/mob.dmi',,"morph",,src.dir)
-
visible_message("[src] suddenly collapses in on itself, dissolving into a pile of green flesh!", \
"You reform to your normal body.")
name = initial(name)
diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index d0d79764c09..309f291ce90 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -122,6 +122,30 @@
randomdir = 0
duration = 6
+/obj/effect/overlay/temp/ninja
+ name = "ninja shadow"
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "uncloak"
+ randomdir = 0
+ duration = 9
+
+/obj/effect/overlay/temp/ninja/New(loc, set_dir)
+ ..()
+ setDir(set_dir)
+
+/obj/effect/overlay/temp/ninja/cloak
+ icon_state = "cloak"
+
+/obj/effect/overlay/temp/ninja/shadow
+ icon_state = "shadow"
+
+/obj/effect/overlay/temp/ninja/phase
+ name = "ninja energy"
+ icon_state = "phasein"
+
+/obj/effect/overlay/temp/ninja/phase/out
+ icon_state = "phaseout"
+
/obj/effect/overlay/temp/guardian
randomdir = 0
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 9cf04369356..cbd1ea113e1 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -236,14 +236,12 @@
L.loc = locate(locx,locy,mobloc.z)
var/limit = 2//For only two trailing shadows.
for(var/turf/T in getline(mobloc, L.loc))
- spawn(0)
- anim(T,L,'icons/mob/mob.dmi',,"shadow",,L.dir)
+ PoolOrNew(/obj/effect/overlay/temp/ninja/shadow, list(T, L.dir))
limit--
if(limit<=0)
break
else
- spawn(0)
- anim(mobloc,mob,'icons/mob/mob.dmi',,"shadow",,L.dir)
+ PoolOrNew(/obj/effect/overlay/temp/ninja/shadow, list(mobloc, L.dir))
L.loc = get_step(L, direct)
L.setDir(direct)
if(3) //Incorporeal move, but blocked by holy-watered tiles and salt piles.
diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
index 04c0c796f23..85d3b67bdc5 100644
--- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
@@ -76,28 +76,23 @@ It is possible to destroy the net by the occupant or someone else.
continue
M.unEquip(W)
- spawn(0)
- playsound(M.loc, 'sound/effects/sparks4.ogg', 50, 1)
- anim(M.loc,M,'icons/mob/mob.dmi',,"phaseout",,M.dir)
+ playsound(M.loc, 'sound/effects/sparks4.ogg', 50, 1)
+ PoolOrNew(/obj/effect/overlay/temp/ninja/phase/out, list(get_turf(M), M.dir))
- M.loc = pick(holdingfacility)//Throw mob in to the holding facility.
+ visible_message("[M] suddenly vanishes!")
+ M.forceMove(pick(holdingfacility)) //Throw mob in to the holding facility.
M << "You appear in a strange place!"
- spawn(0)
- var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
- spark_system.set_up(5, 0, M.loc)
- spark_system.start()
- playsound(M.loc, 'sound/effects/phasein.ogg', 25, 1)
- playsound(M.loc, 'sound/effects/sparks2.ogg', 50, 1)
- anim(M.loc,M,'icons/mob/mob.dmi',,"phasein",,M.dir)
- qdel(src)//Wait for everything to finish, delete the net. Else it will stop everything once net is deleted, including the spawn(0).
-
- for(var/mob/O in viewers(src, 3))
- O.show_message("[M] vanishes!", 1, "You hear sparks flying!", 2)
-
if(!isnull(master))//As long as they still exist.
master << "SUCCESS: transport procedure of \the [affecting] complete."
M.notransform = 0
+ var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
+ spark_system.set_up(5, 0, M.loc)
+ spark_system.start()
+ playsound(M.loc, 'sound/effects/phasein.ogg', 25, 1)
+ playsound(M.loc, 'sound/effects/sparks2.ogg', 50, 1)
+ PoolOrNew(/obj/effect/overlay/temp/ninja/phase, list(get_turf(M), M.dir))
+ qdel(src)
else//And they are free.
M << "You are free of the net!"
diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm
index d8a8b642777..e3e92c467d7 100644
--- a/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm
@@ -31,22 +31,19 @@ Contents:
var/turf/destination = get_teleport_loc(H.loc,H,9,1,3,1,0,1)
var/turf/mobloc = get_turf(H.loc)//Safety
- if(destination&&istype(mobloc, /turf))//So we don't teleport out of containers
- spawn(0)
- playsound(H.loc, "sparks", 50, 1)
- anim(mobloc,src,'icons/mob/mob.dmi',,"phaseout",,H.dir)
+ if(destination && isturf(mobloc))//So we don't teleport out of containers
+ playsound(H.loc, "sparks", 50, 1)
+ PoolOrNew(/obj/effect/overlay/temp/ninja/phase/out, list(get_turf(H), H.dir))
handle_teleport_grab(destination, H)
H.loc = destination
- spawn(0)
- spark_system.start()
- playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1)
- playsound(H.loc, "sparks", 50, 1)
- anim(H.loc,H,'icons/mob/mob.dmi',,"phasein",,H.dir)
+ spark_system.start()
+ playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1)
+ playsound(H.loc, "sparks", 50, 1)
+ PoolOrNew(/obj/effect/overlay/temp/ninja/phase, list(get_turf(H), H.dir))
- spawn(0)
- destination.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf
+ destination.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf
s_coold = 1
else
H << "The VOID-shift device is malfunctioning, teleportation failed."
@@ -63,22 +60,19 @@ Contents:
if(!ninjacost(200,N_STEALTH_CANCEL))
var/mob/living/carbon/human/H = affecting
var/turf/mobloc = get_turf(H.loc)//To make sure that certain things work properly below.
- if((!T.density)&&istype(mobloc, /turf))
- spawn(0)
- playsound(H.loc, 'sound/effects/sparks4.ogg', 50, 1)
- anim(mobloc,src,'icons/mob/mob.dmi',,"phaseout",,H.dir)
+ if(T.density && isturf(mobloc))
+ playsound(H.loc, "sparks", 50, 1)
+ PoolOrNew(/obj/effect/overlay/temp/ninja/phase/out, list(get_turf(H), H.dir))
handle_teleport_grab(T, H)
H.loc = T
- spawn(0)
- spark_system.start()
- playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1)
- playsound(H.loc, 'sound/effects/sparks2.ogg', 50, 1)
- anim(H.loc,H,'icons/mob/mob.dmi',,"phasein",,H.dir)
+ spark_system.start()
+ playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1)
+ playsound(H.loc, "sparks", 50, 1)
+ PoolOrNew(/obj/effect/overlay/temp/ninja/phase, list(get_turf(H), H.dir))
- spawn(0)//Any living mobs in teleport area are gibbed.
- T.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf
+ T.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf
s_coold = 1
else
H << "You cannot teleport into solid walls or from solid matter"