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"