diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm
index 8aa85620dae..2916a460256 100644
--- a/code/_onclick/telekinesis.dm
+++ b/code/_onclick/telekinesis.dm
@@ -170,17 +170,7 @@ var/const/tk_maxrange = 15
/obj/item/tk_grab/proc/apply_focus_overlay()
if(!focus)
return
- var/obj/effect/overlay/O = new /obj/effect/overlay(locate(focus.x,focus.y,focus.z))
- O.name = "sparkles"
- O.anchored = 1
- O.density = 0
- O.layer = FLY_LAYER
- O.setDir(pick(cardinal))
- O.icon = 'icons/effects/effects.dmi'
- O.icon_state = "nothing"
- flick("empdisable",O)
- spawn(5)
- qdel(O)
+ PoolOrNew(/obj/effect/overlay/temp/telekinesis, get_turf(focus))
/obj/item/tk_grab/update_icon()
diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index 2047e97f5c5..085704ba88b 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -150,6 +150,10 @@
/obj/effect/overlay/temp/dir_setting/wraith/out
icon_state = "phase_shift"
+/obj/effect/overlay/temp/dir_setting/tailsweep
+ icon_state = "tailsweep"
+ duration = 4
+
/obj/effect/overlay/temp/wizard
name = "water"
icon = 'icons/mob/mob.dmi'
@@ -403,6 +407,16 @@
duration = 6
+/obj/effect/overlay/temp/gravpush
+ name = "gravity wave"
+ icon_state = "shieldsparkles"
+ duration = 5
+
+/obj/effect/overlay/temp/telekinesis
+ name = "telekinetic force"
+ icon_state = "empdisable"
+ duration = 5
+
/obj/effect/overlay/temp/emp
name = "emp sparks"
icon_state = "empdisable"
@@ -435,30 +449,6 @@
icon_state = dust_icon // Before ..() so the correct icon is flick()'d
..()
-/obj/effect/overlay/temp/sparkle
- icon = 'icons/effects/effects.dmi'
- icon_state = "shieldsparkles"
- mouse_opacity = 0
- density = 0
- duration = 10
- var/atom/movable/attached_to
-
-/obj/effect/overlay/temp/sparkle/New(atom/movable/AM)
- ..()
- if(istype(AM))
- attached_to = AM
- attached_to.overlays += src
-
-/obj/effect/overlay/temp/sparkle/Destroy()
- if(attached_to)
- attached_to.overlays -= src
- attached_to = null
- . = ..()
-
-/obj/effect/overlay/temp/sparkle/tailsweep
- icon_state = "tailsweep"
-
-
/obj/effect/overlay/temp/heal //color is white by default, set to whatever is needed
name = "healing glow"
icon_state = "heal"
@@ -498,7 +488,6 @@
duration = 6
/obj/effect/overlay/temp/impact_effect
- icon = 'icons/effects/effects.dmi'
icon_state = "impact_bullet"
duration = 5
diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm
index daf1eeecc7e..c0632662c8d 100644
--- a/code/modules/admin/fun_balloon.dm
+++ b/code/modules/admin/fun_balloon.dm
@@ -57,11 +57,10 @@
var/mob/living/body = pick_n_take(bodies)
body << "Your mob has been taken over by a ghost!"
- message_admins("[key_name_admin(ghost)] has taken control \
- of ([key_name_admin(body)])")
+ message_admins("[key_name_admin(ghost)] has taken control of ([key_name_admin(body)])")
body.ghostize(0)
body.key = ghost.key
- PoolOrNew(/obj/effect/overlay/temp/sparkle, body)
+ PoolOrNew(/obj/effect/overlay/temp/gravpush, get_turf(body))
/obj/effect/fun_balloon/sentience/emergency_shuttle
name = "shuttle sentience fun balloon"
@@ -80,7 +79,7 @@
/obj/effect/fun_balloon/scatter/effect()
for(var/mob/living/M in range(effect_range, get_turf(src)))
var/turf/T = find_safe_turf()
- PoolOrNew(/obj/effect/overlay/temp/sparkle, M)
+ PoolOrNew(/obj/effect/overlay/temp/gravpush, get_turf(M))
M.forceMove(T)
M << "Pop!"
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index d2738021640..e8830ec1a8f 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -247,10 +247,7 @@
var/throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(A, src)))
A.throw_at(throwtarget,power+1,1)
for(var/turf/F in range(T,power))
- var/obj/effect/overlay/gravfield = new /obj/effect/overlay{icon='icons/effects/effects.dmi'; icon_state="shieldsparkles"; mouse_opacity=0; density=0}()
- F.overlays += gravfield
- spawn(5)
- F.overlays -= gravfield
+ PoolOrNew(/obj/effect/overlay/temp/gravpush, F)
/obj/item/projectile/gravityattract
name = "attraction bolt"
@@ -277,10 +274,7 @@
continue
A.throw_at(T, power+1, 1)
for(var/turf/F in range(T,power))
- var/obj/effect/overlay/gravfield = new /obj/effect/overlay{icon='icons/effects/effects.dmi'; icon_state="shieldsparkles"; mouse_opacity=0; density=0}()
- F.overlays += gravfield
- spawn(5)
- F.overlays -= gravfield
+ PoolOrNew(/obj/effect/overlay/temp/gravpush, F)
/obj/item/projectile/gravitychaos
name = "gravitational blast"
@@ -307,8 +301,5 @@
continue
A.throw_at(get_edge_target_turf(A, pick(cardinal)), power+1, 1)
for(var/turf/Z in range(T,power))
- var/obj/effect/overlay/gravfield = new /obj/effect/overlay{icon='icons/effects/effects.dmi'; icon_state="shieldsparkles"; mouse_opacity=0; density=0}()
- Z.overlays += gravfield
- spawn(5)
- Z.overlays -= gravfield
+ PoolOrNew(/obj/effect/overlay/temp/gravpush, Z)
diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm
index c1707ef8f8c..b5ca5146578 100644
--- a/code/modules/spells/spell_types/wizard.dm
+++ b/code/modules/spells/spell_types/wizard.dm
@@ -311,7 +311,7 @@
selection_type = "view"
sound = 'sound/magic/Repulse.ogg'
var/maxthrow = 5
- var/sparkle_path = /obj/effect/overlay/temp/sparkle
+ var/sparkle_path = /obj/effect/overlay/temp/gravpush
action_icon_state = "repulse"
@@ -324,11 +324,11 @@
for(var/atom/movable/AM in T)
thrownatoms += AM
- for(var/atom/movable/AM in thrownatoms)
- if(AM == user || AM.anchored) continue
+ for(var/am in thrownatoms)
+ var/atom/movable/AM = am
+ if(AM == user || AM.anchored)
+ continue
- // created sparkles will disappear on their own
- PoolOrNew(sparkle_path, AM)
throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(AM, user)))
distfromcaster = get_dist(user, AM)
if(distfromcaster == 0)
@@ -338,6 +338,7 @@
M.adjustBruteLoss(5)
M << "You're slammed into the floor by [user]!"
else
+ PoolOrNew(sparkle_path, list(get_turf(AM), get_dir(user, AM))) //created sparkles will disappear on their own
if(isliving(AM))
var/mob/living/M = AM
M.Weaken(stun_amt)
@@ -353,7 +354,7 @@
range = 2
cooldown_min = 150
invocation_type = "none"
- sparkle_path = /obj/effect/overlay/temp/sparkle/tailsweep
+ sparkle_path = /obj/effect/overlay/temp/dir_setting/tailsweep
action_icon_state = "tailsweep"
action_background_icon_state = "bg_alien"
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index 3f3afd64fab..ea80c330be9 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ