diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 614cee7d234..c09a99c1d2a 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -515,23 +515,6 @@ proc/GaussRand(var/sigma)
proc/GaussRandRound(var/sigma,var/roundto)
return round(GaussRand(sigma),roundto)
-proc/anim(turf/location as turf,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.dir = 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)
-
//Will return the contents of an atom recursivly to a depth of 'searchDepth'
/atom/proc/GetAllContents(searchDepth = 5)
var/list/toReturn = list()
diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm
index eba4da0fe65..18c2aab62e4 100644
--- a/code/_onclick/telekinesis.dm
+++ b/code/_onclick/telekinesis.dm
@@ -180,18 +180,7 @@ var/const/tk_maxrange = 15
/obj/item/tk_grab/proc/apply_focus_overlay()
if(!focus)
return
- // Oh jeez ow
- 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.dir = pick(cardinal)
- O.icon = 'icons/effects/effects.dmi'
- O.icon_state = "nothing"
- flick("empdisable",O)
- spawn(5)
- qdel(O)
+ new /obj/effect/overlay/temp/telekinesis(get_turf(focus))
/obj/item/tk_grab/proc/form_grab(mob/user, obj/target)
user.put_in_active_hand(src)
diff --git a/code/datums/spells/construct_spells.dm b/code/datums/spells/construct_spells.dm
index c110b6a2a9a..7ec21d50f33 100644
--- a/code/datums/spells/construct_spells.dm
+++ b/code/datums/spells/construct_spells.dm
@@ -110,10 +110,11 @@
invocation_type = "none"
range = -1
include_user = 1
- phaseshift = 1
jaunt_duration = 50 //in deciseconds
centcom_cancast = 0 //Stop people from getting to centcom
-
+ jaunt_in_time = 12
+ jaunt_in_type = /obj/effect/overlay/temp/dir_setting/wraith
+ jaunt_out_type = /obj/effect/overlay/temp/dir_setting/wraith/out
/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser
name = "Lesser Magic Missile"
diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm
index 89b3ec3994a..e1bc6aea70d 100644
--- a/code/datums/spells/ethereal_jaunt.dm
+++ b/code/datums/spells/ethereal_jaunt.dm
@@ -13,109 +13,89 @@
nonabstract_req = 1
centcom_cancast = 0 //Prevent people from getting to centcom
- var phaseshift = 0
var/jaunt_duration = 50 //in deciseconds
+ var/jaunt_in_time = 5
+ var/jaunt_in_type = /obj/effect/overlay/temp/wizard
+ var/jaunt_out_type = /obj/effect/overlay/temp/wizard/out
action_icon_state = "jaunt"
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/cast(list/targets, mob/user = usr) //magnets, so mostly hardcoded
+ playsound(get_turf(user), 'sound/magic/Ethereal_Enter.ogg', 50, 1, -1)
for(var/mob/living/target in targets)
if(!target.can_safely_leave_loc()) // No more brainmobs hopping out of their brains
to_chat(target, "You are somehow too bound to your current location to abandon it.")
continue
- spawn(0)
+ addtimer(src, "do_jaunt", 0, FALSE, target)
- if(target.buckled)
- var/obj/structure/stool/bed/buckled_to = target.buckled.
- buckled_to.unbuckle_mob()
+/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/do_jaunt(mob/living/target)
+ target.notransform = 1
+ var/turf/mobloc = get_turf(target)
+ var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt(mobloc)
+ new jaunt_out_type(mobloc, target.dir)
+ target.ExtinguishMob()
+ target.forceMove(holder)
+ target.reset_perspective(holder)
+ target.notransform=0 //mob is safely inside holder now, no need for protection.
+ jaunt_steam(mobloc)
- var/mobloc = get_turf(target.loc)
- var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt( mobloc )
- var/atom/movable/overlay/animation = new /atom/movable/overlay( mobloc )
- animation.name = "water"
- animation.density = 0
- animation.anchored = 1
- animation.icon = 'icons/mob/mob.dmi'
- animation.icon_state = "liquify"
- animation.layer = 5
- animation.master = holder
- target.ExtinguishMob()
- if(target.buckled)
- target.buckled.unbuckle_mob()
- if(phaseshift == 1)
- animation.dir = target.dir
- flick("phase_shift",animation)
- target.loc = holder
- target.client.eye = holder
- sleep(jaunt_duration)
- mobloc = get_turf(target.loc)
- animation.loc = mobloc
- target.canmove = 0
- sleep(20)
- animation.dir = target.dir
- flick("phase_shift2",animation)
- sleep(5)
- if(!target.Move(mobloc))
- for(var/direction in list(1,2,4,8,5,6,9,10))
- var/turf/T = get_step(mobloc, direction)
- if(T)
- if(target.Move(T))
- break
- target.canmove = 1
- target.client.eye = target
- qdel(animation)
- qdel(holder)
- else
- flick("liquify",animation)
- target.loc = holder
- target.client.eye = holder
- var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread()
- steam.set_up(10, 0, mobloc)
- steam.start()
- sleep(jaunt_duration)
- mobloc = get_turf(target.loc)
- animation.loc = mobloc
- steam.location = mobloc
- steam.start()
- target.canmove = 0
- sleep(20)
- flick("reappear",animation)
- sleep(5)
- if(!target.Move(mobloc))
- for(var/direction in list(1,2,4,8,5,6,9,10))
- var/turf/T = get_step(mobloc, direction)
- if(T)
- if(target.Move(T))
- break
- target.canmove = 1
- target.client.eye = target
- qdel(animation)
- qdel(holder)
+ sleep(jaunt_duration)
+
+ if(target.loc != holder) //mob warped out of the warp
+ qdel(holder)
+ return
+ mobloc = get_turf(target.loc)
+ jaunt_steam(mobloc)
+ target.canmove = 0
+ holder.reappearing = 1
+ playsound(get_turf(target), 'sound/magic/Ethereal_Exit.ogg', 50, 1, -1)
+ sleep(25 - jaunt_in_time)
+ new jaunt_in_type(mobloc, holder.dir)
+ target.setDir(holder.dir)
+ sleep(jaunt_in_time)
+ qdel(holder)
+ if(!qdeleted(target))
+ if(mobloc.density)
+ for(var/direction in alldirs)
+ var/turf/T = get_step(mobloc, direction)
+ if(T)
+ if(target.Move(T))
+ break
+ target.canmove = 1
+
+/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/jaunt_steam(mobloc)
+ var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread()
+ steam.set_up(10, 0, mobloc)
+ steam.start()
/obj/effect/dummy/spell_jaunt
name = "water"
icon = 'icons/effects/effects.dmi'
icon_state = "nothing"
- var/canmove = 1
+ var/reappearing = 0
+ var/movedelay = 0
+ var/movespeed = 2
density = 0
anchored = 1
+ invisibility = 60
burn_state = LAVA_PROOF
/obj/effect/dummy/spell_jaunt/Destroy()
// Eject contents if deleted somehow
for(var/atom/movable/AM in src)
- AM.loc = get_turf(src)
+ AM.forceMove(get_turf(src))
return ..()
-/obj/effect/dummy/spell_jaunt/relaymove(var/mob/user, direction)
- if(!src.canmove) return
+/obj/effect/dummy/spell_jaunt/relaymove(mob/user, direction)
+ if((movedelay > world.time) || reappearing || !direction)
+ return
var/turf/newLoc = get_step(src,direction)
+ setDir(direction)
if(!(newLoc.flags & NOJAUNT))
- loc = newLoc
+ forceMove(newLoc)
else
to_chat(user, "Some strange aura is blocking the way!")
- src.canmove = 0
- spawn(2) src.canmove = 1
+ movedelay = world.time + movespeed
/obj/effect/dummy/spell_jaunt/ex_act(blah)
return
diff --git a/code/datums/spells/wizard.dm b/code/datums/spells/wizard.dm
index f8394771263..dc0217f3152 100644
--- a/code/datums/spells/wizard.dm
+++ b/code/datums/spells/wizard.dm
@@ -25,7 +25,7 @@
proj_trail_icon_state = "magicmd"
action_icon_state = "magicm"
-
+
sound = 'sound/magic/MAGIC_MISSILE.ogg'
/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile
@@ -97,7 +97,7 @@
emp_heavy = 6
emp_light = 10
-
+
sound = 'sound/magic/Disable_Tech.ogg'
/obj/effect/proc_holder/spell/targeted/turf_teleport/blink
@@ -123,7 +123,7 @@
centcom_cancast = 0 //prevent people from getting to centcom
action_icon_state = "blink"
-
+
sound1 = 'sound/magic/blink.ogg'
sound2 = 'sound/magic/blink.ogg'
@@ -144,7 +144,7 @@
smoke_amt = 5
action_icon_state = "spell_teleport"
-
+
sound1 = 'sound/magic/Teleport_diss.ogg'
sound2 = 'sound/magic/Teleport_app.ogg'
@@ -194,7 +194,7 @@
summon_type = list(/mob/living/simple_animal/hostile/carp)
cast_sound = 'sound/magic/Summon_Karp.ogg'
-
+
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct
name = "Artificer"
desc = "This spell conjures a construct which may be controlled by Shades"
@@ -334,7 +334,7 @@
cooldown_min = 150
selection_type = "view"
var/maxthrow = 5
-
+ var/sparkle_path = /obj/effect/overlay/temp/gravpush
action_icon_state = "repulse"
sound = 'sound/magic/Repulse.ogg'
@@ -347,16 +347,13 @@
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
- var/obj/effect/overlay/targeteffect = new /obj/effect/overlay{icon='icons/effects/effects.dmi'; icon_state="shieldsparkles"; mouse_opacity=0; density = 0}()
- AM.overlays += targeteffect
throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(AM, user)))
distfromcaster = get_dist(user, AM)
- spawn(10)
- AM.overlays -= targeteffect
- qdel(targeteffect)
if(distfromcaster == 0)
if(istype(AM, /mob/living))
var/mob/living/M = AM
@@ -364,11 +361,13 @@
M.adjustBruteLoss(5)
to_chat(M, "You're slammed into the floor by a mystical force!")
else
+ new sparkle_path(get_turf(AM), get_dir(user, AM)) //created sparkles will disappear on their own
if(istype(AM, /mob/living))
var/mob/living/M = AM
M.Weaken(2)
to_chat(M, "You're thrown back by a mystical force!")
- spawn(0) AM.throw_at(throwtarget, ((Clamp((maxthrow - (Clamp(distfromcaster - 2, 0, distfromcaster))), 3, maxthrow))), 1)//So stuff gets tossed around at the same time.
+ spawn(0)
+ AM.throw_at(throwtarget, ((Clamp((maxthrow - (Clamp(distfromcaster - 2, 0, distfromcaster))), 3, maxthrow))), 1)//So stuff gets tossed around at the same time.
/obj/effect/proc_holder/spell/targeted/sacred_flame
name = "Sacred Flame"
diff --git a/code/game/dna/genes/monkey.dm b/code/game/dna/genes/monkey.dm
index 52cd4226327..33a0f74668c 100644
--- a/code/game/dna/genes/monkey.dm
+++ b/code/game/dna/genes/monkey.dm
@@ -25,13 +25,8 @@
H.icon = null
H.invisibility = 101
- var/atom/movable/overlay/animation = new /atom/movable/overlay(H.loc)
- animation.icon_state = "blank"
- animation.icon = 'icons/mob/mob.dmi'
- animation.master = H
- flick("h2monkey", animation)
+ new /obj/effect/overlay/temp/monkeyify(H.loc)
sleep(22)
- qdel(animation)
H.SetStunned(0)
H.invisibility = initial(H.invisibility)
@@ -68,13 +63,8 @@
H.icon = null
H.invisibility = 101
- var/atom/movable/overlay/animation = new /atom/movable/overlay(H.loc)
- animation.icon_state = "blank"
- animation.icon = 'icons/mob/mob.dmi'
- animation.master = H
- flick("monkey2h", animation)
+ new /obj/effect/overlay/temp/monkeyify/humanify(H.loc)
sleep(22)
- qdel(animation)
H.SetStunned(0)
H.invisibility = initial(H.invisibility)
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 61f436806a6..18055c27634 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -329,14 +329,14 @@
if(uses <= 0)
icon_state ="shifter_drained"
playsound(mobloc, "sparks", 50, 1)
- new /obj/effect/overlay/temp/dir_setting/cult/phase/out(mobloc)
+ new /obj/effect/overlay/temp/dir_setting/cult/phase/out(mobloc, C.dir)
var/atom/movable/pulled = handle_teleport_grab(destination, C)
C.forceMove(destination)
if(pulled)
C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull
- new /obj/effect/overlay/temp/dir_setting/cult/phase(destination)
+ new /obj/effect/overlay/temp/dir_setting/cult/phase(destination, C.dir)
playsound(destination, 'sound/effects/phasein.ogg', 25, 1)
playsound(destination, "sparks", 50, 1)
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index a221ddadd55..a61fbdb3062 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
@@ -54,9 +54,7 @@
stealth_active = 1
if(ishuman(loc))
var/mob/living/carbon/human/M = src.loc
- spawn(0)
- anim(M.loc,M,'icons/mob/mob.dmi',,"cloak",,M.dir)
-
+ new /obj/effect/overlay/temp/dir_setting/ninja/cloak(get_turf(M), M.dir)
M.name_override = disguise.name
M.icon = disguise.icon
M.icon_state = disguise.icon_state
@@ -70,8 +68,7 @@
stealth_active = 0
if(ishuman(loc))
var/mob/living/carbon/human/M = src.loc
- spawn(0)
- anim(M.loc,M,'icons/mob/mob.dmi',,"uncloak",,M.dir)
+ new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(M), M.dir)
M.name_override = null
M.overlays.Cut()
M.regenerate_icons()
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
index e03a5bf9666..1c6b06a9c7e 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
@@ -15,15 +15,13 @@
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)
+ new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir)
to_chat(target, "The instability of the warp leaves you disoriented!")
target.Stun(3)
/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)
+ new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir)
Warp(target)
/obj/machinery/abductor/pad/proc/MobToLoc(place,mob/living/target)
@@ -31,7 +29,7 @@
sleep(80)
flick("alien-pad", src)
target.forceMove(place)
- anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
+ new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir)
/obj/machinery/abductor/pad/proc/PadToLoc(place)
new/obj/effect/overlay/temp/teleport_abductor(place)
@@ -39,9 +37,7 @@
flick("alien-pad", src)
for(var/mob/living/target in src.loc)
target.forceMove(place)
- spawn(0)
- anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
-
+ new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(target), target.dir)
/obj/effect/overlay/temp/teleport_abductor
name = "Huh"
diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm
index 28ca711946a..28456e39984 100644
--- a/code/game/gamemodes/miniantags/morph/morph.dm
+++ b/code/game/gamemodes/miniantags/morph/morph.dm
@@ -108,8 +108,6 @@
morphed = 0
form = null
- //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/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
index 0f30880a57f..04e87285e38 100644
--- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm
+++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
@@ -54,6 +54,57 @@
randomdir = FALSE
layer = MOB_LAYER - 0.2
+/obj/effect/overlay/temp/dir_setting/ninja
+ name = "ninja shadow"
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "uncloak"
+ duration = 9
+
+/obj/effect/overlay/temp/dir_setting/ninja/cloak
+ icon_state = "cloak"
+
+/obj/effect/overlay/temp/dir_setting/ninja/shadow
+ icon_state = "shadow"
+
+/obj/effect/overlay/temp/dir_setting/ninja/phase
+ name = "ninja energy"
+ icon_state = "phasein"
+
+/obj/effect/overlay/temp/dir_setting/ninja/phase/out
+ icon_state = "phaseout"
+
+/obj/effect/overlay/temp/dir_setting/wraith
+ name = "blood"
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "phase_shift2"
+ duration = 12
+
+/obj/effect/overlay/temp/dir_setting/wraith/out
+ icon_state = "phase_shift"
+
+/obj/effect/overlay/temp/wizard
+ name = "water"
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "reappear"
+ duration = 5
+
+/obj/effect/overlay/temp/wizard/out
+ icon_state = "liquify"
+ duration = 12
+
+/obj/effect/overlay/temp/monkeyify
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "h2monkey"
+ duration = 22
+
+/obj/effect/overlay/temp/monkeyify/humanify
+ icon_state = "monkey2h"
+
+/obj/effect/overlay/temp/borgflash
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "blspell"
+ duration = 5
+
/obj/effect/overlay/temp/guardian
randomdir = FALSE
@@ -91,6 +142,16 @@
icon_state = "purplecrack"
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 = 'icons/effects/effects.dmi'
@@ -134,3 +195,14 @@
icon_state = "explosionfast"
duration = 4
+/obj/effect/overlay/temp/heart
+ name = "heart"
+ icon = 'icons/mob/animal.dmi'
+ icon_state = "heart"
+ duration = 25
+
+/obj/effect/overlay/temp/heart/New(loc)
+ ..()
+ pixel_x = rand(-4,4)
+ pixel_y = rand(-4,4)
+ animate(src, pixel_y = pixel_y + 32, alpha = 0, time = 25)
diff --git a/code/game/objects/effects/temporary_visuals/temporary_visual.dm b/code/game/objects/effects/temporary_visuals/temporary_visual.dm
index f43e41d79a7..552371e9be2 100644
--- a/code/game/objects/effects/temporary_visuals/temporary_visual.dm
+++ b/code/game/objects/effects/temporary_visuals/temporary_visual.dm
@@ -10,8 +10,6 @@
if(randomdir)
setDir(pick(cardinal))
- flick("[icon_state]", src) //Because we might be pulling it from a pool, flick whatever icon it uses so it starts at the start of the icon's animation.
-
QDEL_IN(src, duration)
/obj/effect/overlay/temp/singularity_act()
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 52472afcb3d..d449993b0c1 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -179,21 +179,11 @@
/obj/item/device/flash/cyborg/attack(mob/living/M, mob/user)
..()
- cyborg_flash_animation(user)
+ new /obj/effect/overlay/temp/borgflash(get_turf(src))
/obj/item/device/flash/cyborg/attack_self(mob/user)
..()
- cyborg_flash_animation(user)
-
-/obj/item/device/flash/cyborg/proc/cyborg_flash_animation(var/mob/living/user)
- var/atom/movable/overlay/animation = new(user.loc)
- animation.layer = user.layer + 1
- animation.icon_state = "blank"
- animation.icon = 'icons/mob/mob.dmi'
- animation.master = user
- flick("blspell", animation)
- sleep(5)
- qdel(animation)
+ new /obj/effect/overlay/temp/borgflash(get_turf(src))
/obj/item/device/flash/memorizer
name = "memorizer"
diff --git a/code/game/objects/structures/misc.dm b/code/game/objects/structures/misc.dm
index bab097c2e87..a344c4c8f18 100644
--- a/code/game/objects/structures/misc.dm
+++ b/code/game/objects/structures/misc.dm
@@ -46,8 +46,7 @@
playsound(user.loc, 'sound/effects/phasein.ogg', 25, 1)
playsound(user.loc, 'sound/effects/sparks2.ogg', 50, 1)
- anim(user.loc,user,'icons/mob/mob.dmi',,"phasein",,user.dir)
-
+ new /obj/effect/overlay/temp/dir_setting/ninja/phase(get_turf(user), user.dir)
to_chat(user, "VOID-Shift translocation successful")
if("No")
diff --git a/code/modules/clothing/spacesuits/rig/modules/ninja.dm b/code/modules/clothing/spacesuits/rig/modules/ninja.dm
index 6f9b1589e5a..79e73c7c086 100644
--- a/code/modules/clothing/spacesuits/rig/modules/ninja.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/ninja.dm
@@ -40,8 +40,6 @@
to_chat(H, "You are now invisible to normal detection.")
H.invisibility = INVISIBILITY_LEVEL_TWO
- anim(get_turf(H), H, 'icons/effects/effects.dmi', "electricity",null,20,null)
-
H.visible_message("[H.name] vanishes into thin air!",1)
/obj/item/rig_module/stealth_field/deactivate()
@@ -54,8 +52,7 @@
to_chat(H, "You are now visible.")
H.invisibility = 0
- anim(get_turf(H), H,'icons/mob/mob.dmi',,"uncloak",,H.dir)
- anim(get_turf(H), H, 'icons/effects/effects.dmi', "electricity",null,20,null)
+ new /obj/effect/overlay/temp/dir_setting/ninja(get_turf(H), H.dir)
for(var/mob/O in oviewers(H))
O.show_message("[H.name] appears from thin air!",1)
@@ -85,7 +82,7 @@
holder.spark_system.start()
playsound(T, 'sound/effects/phasein.ogg', 25, 1)
playsound(T, 'sound/effects/sparks2.ogg', 50, 1)
- anim(T,M,'icons/mob/mob.dmi',,"phasein",,M.dir)
+ new /obj/effect/overlay/temp/dir_setting/ninja/phase(T, M.dir)
/obj/item/rig_module/teleporter/proc/phase_out(var/mob/M,var/turf/T)
@@ -93,7 +90,7 @@
return
playsound(T, "sparks", 50, 1)
- anim(T,M,'icons/mob/mob.dmi',,"phaseout",,M.dir)
+ new /obj/effect/overlay/temp/dir_setting/ninja/phase/out(T, M.dir)
/obj/item/rig_module/teleporter/engage(var/atom/target, var/notify_ai)
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index 727318ac2c7..295969c6ded 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -563,7 +563,7 @@
if(change)
if(change > 0)
if(M && stat != DEAD) // Added check to see if this mob (the corgi) is dead to fix issue 2454
- flick_overlay(image('icons/mob/animal.dmi',src,"heart-ani2",MOB_LAYER+1), list(M.client), 20)
+ new /obj/effect/overlay/temp/heart(loc)
custom_emote(1, "yaps happily!")
else
if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case)
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 20e08001754..1244bc71fea 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -203,9 +203,9 @@
if(isobj(mob.loc) || ismob(mob.loc)) //Inside an object, tell it we moved
var/atom/O = mob.loc
return O.relaymove(mob, direct)
-
+
if(!mob.Process_Spacemove(direct))
- return 0
+ return 0
if(mob.restrained()) // Why being pulled while cuffed prevents you from moving
for(var/mob/M in orange(1, mob))
@@ -252,7 +252,7 @@
return
spawn(1)
M.other_mobs = null
- M.animate_movement = 2
+ M.animate_movement = 2
return
else if(mob.confused)
@@ -361,13 +361,12 @@
spawn(0)
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)
+ new /obj/effect/overlay/temp/dir_setting/ninja/shadow(T, L.dir)
limit--
- if(limit<=0) break
+ if(limit<=0)
+ break
else
- spawn(0)
- anim(mobloc,mob,'icons/mob/mob.dmi',,"shadow",,L.dir)
+ new /obj/effect/overlay/temp/dir_setting/ninja/shadow(mobloc, L.dir)
L.forceMove(get_step(L, direct))
L.dir = direct
if(3) //Incorporeal move, but blocked by holy-watered tiles
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index 5acd22f9883..1e7437ec2c6 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ
diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi
index 7fd515c8924..e725d44a541 100644
Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ
diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi
index d32275dc52b..0cccb3ffddf 100644
Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ