I think youve overcomplicated it. Just follow along for a sec. A is the original value that will change, and the B is the storage and wont.
A=A
B=A
A=random number
as long as you dont have somthing like that in a loop, then it will work out. If it is a loop, it wont work because B will keep on equalling A. And then loosing what A was originally. So, you have to find a way to only set the value of B at one time.
To play a sprite once, you gotta do somthing with the number of frames and playing. I dont usually use animated sprites, but ill take a look around....
Uh... YOu need to know the total amount of frames, and do somthing like this i guess, i havnt tested this, so I dont know if it will work...
Lets say my animation has 16 frames, its a 4X4
do
if sprite frame(1)<>16 and spriteplayed=0
`sprite num, start frame, end frame, delay between frames
play sprite 1,0,16,30
else
spriteplayed=1
endif
sync
loop
I have no clue if that will work...