あ、すみません、今間違いに気付きました。
IF SPVAR(SP,0)==1 && !SPANIM(SP) THEN
↓
IF SPVAR(SP,0)==1 && !SPCHK(SP) THEN
(消滅の方も同じく)
で、
&&!ではなく、!SPCHK(SP)がセットです。
「!」は否定形で、
SPCHK(SP)だと、「SPANIMしていたら」ですが、
!SPCHK(SP)だと、「SPANIMしていなかったら」という意味です。
撃沈アニメが終わったら爆発アニメ、
爆発アニメが終わったら消滅、と順番に処理させる訳です。
自作を呼び出すなら、1つ1つ呼びますよね。
FOR I=o TO 511
IF SPUSED(I) && ENE[oo,0]==1 THEN ENE_MOVE I
みたいに。
でもSPFUNCは
SPFUNC oo,ENE_MOVE
としておけば、「CALL SPRITE」された時に、一斉に実行されます。
で、それだと「DEF ENE_MOVE」内でのSP番号が分からないので、
SP=CALLIDX
みたいなのを最初に書くわけです。
で、そのSPに対して処理すれば、ENE_MOVEに飛ぶべきSPキャラ全てに対して同じ処理が行われます。