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