proc/RemoveEffect(var/atom/Loc,var/Effect)
for(var/O in Loc.overlays) if(O:name==Effect) Loc.overlays.Remove(O)
for(var/O in Loc.underlays) if(O:name==Effect) Loc.underlays.Remove(O)
proc/ShowEffect(var/atom/movable/Loc,var/Effect,var/Repeat=0,var/OffX=0,var/OffY=0,var/RandomOffset=0,var/Dir,var/IconFile,var/Layer="overlays",var/TagName,var/Blend,var/Alpha,var/Color)
var/obj/Effect/O=new
if(Dir) O.dir=Dir
else O.dir=SOUTH
O.pixel_x=Loc.bound_x-8;O.pixel_y=Loc.bound_y
if(RandomOffset) {O.pixel_x=Loc.bound_x-8+rand(-OffX,OffX);O.pixel_y=Loc.bound_y+rand(-OffY,OffY)}
O.name="[initial(O.name)]: [Effect]"
O.icon_state="[Effect]"
O.PxLocate(Loc)//______________________control line
if(ismob(Loc))
if(Layer=="overlays") Loc.overlays.Add(O)
// if(!Repeat)
// spawn(20) RemoveEffect(Loc,O.name)
mob/Player/Click()
ShowEffect(src,"[pick("Boom","PoisonCloud","recovery")]")
Problem description:
I don't understand why when i try animate any anim in player overlays it wont work.
When i clicked on Richard we can see one boom animation - from "control line"
but when i change icon_state - attack, it's play from player overlays.
I need play it one time from player overlays, couse when i move my player animation stay at player old location. And it isn't look good.
Two, you're dramatically over-complicating things, I suggest reading up on the animate() proc.