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