One way I could suggest is to use other entity for the shocked, burnt, frozen etc animations while the character is invisible. This is great if you're using generic FX for those states.
Here's an example:
Code:
anim burn
delay 1
landframe 3 dust
offset 80 90
frame data/chars/misc/empty.gif
delay 30
@cmd spawnBind "ReactFX" 0 0 1 1 4
sound data/chars/bard/sounds/Pain.wav
frame data/chars/misc/empty.gif
delay 300
frame data/chars/misc/empty.gif
delay 20
frame data/chars/bard/fall4.png
anim shock
delay 1
landframe 3 dust
offset 80 90
frame data/chars/misc/empty.gif
delay 30
@cmd spawnBind "ReactFX" 0 0 1 1 4
sound data/chars/bard/sounds/Pain.wav
frame data/chars/misc/empty.gif
delay 300
frame data/chars/misc/empty.gif
delay 20
frame data/chars/bard/fall4.png
In this example, she plays blank sprite aka invisible when ReactFX is spawnbound to her. IOW players will see ReactFX instead of her when these animations are played. She
reappears when she landed, just about the same time ReactFX removes itself.
This is ReactFX:
Code:
name ReactFX
type none
gfxshadow 1
subject_to_platform 1
subject_to_wall 1
subject_to_hole 1
no_adjust_base 0
palette none
anim bpain
@script
if(frame == 9){
void self = getlocalvar("self");
killentity(self);
}
@end_script
loop 1
delay 5
offset 50 103
frame data/chars/misc/burn/fire01.gif
frame data/chars/misc/burn/fire02.gif
frame data/chars/misc/burn/fire03.gif
frame data/chars/misc/burn/fire04.gif #
frame data/chars/misc/burn/fire01.gif
frame data/chars/misc/burn/fire02.gif
frame data/chars/misc/burn/fire03.gif
frame data/chars/misc/burn/fire04.gif #
frame data/chars/misc/burn/fire01.gif
frame data/chars/misc/burn/fire02.gif
frame data/chars/misc/burn/fire03.gif
frame data/chars/misc/burn/fire04.gif #
anim burn
@script
if(frame > 2){
void self = getlocalvar("self");
int y = getentityproperty(self, "a");
int b = getentityproperty(self, "base");
if(y <= b+5){
killentity(self);
}
}
@end_script
loop 1 3 7
delay 1
offset 35 70
frame data/chars/misc/burn/burn1.gif
delay 5
frame data/chars/misc/burn/burn1.gif
frame data/chars/misc/burn/burn2.gif
frame data/chars/misc/burn/burn3.gif
frame data/chars/misc/burn/burn2.gif #
frame data/chars/misc/burn/burn1.gif
frame data/chars/misc/burn/burn2.gif
frame data/chars/misc/burn/burn3.gif
frame data/chars/misc/burn/burn2.gif #
anim fall5
@script
if(frame > 2){
void self = getlocalvar("self");
int y = getentityproperty(self, "a");
int b = getentityproperty(self, "base");
if(y <= b+5){
killentity(self);
}
}
@end_script
loop 1 3 7
delay 1
offset 35 70
frame data/chars/misc/burn/burn1.gif
delay 5
frame data/chars/misc/burn/burn1.gif
frame data/chars/misc/burn/burn2.gif
frame data/chars/misc/burn/burn3.gif
frame data/chars/misc/burn/burn2.gif #
frame data/chars/misc/burn/burn1.gif
frame data/chars/misc/burn/burn2.gif
frame data/chars/misc/burn/burn3.gif
frame data/chars/misc/burn/burn2.gif #
anim spain
@script
if(frame == 9){
void self = getlocalvar("self");
killentity(self);
}
@end_script
loop 1
delay 5
offset 50 115
frame data/chars/misc/shock/ele1.gif
frame data/chars/misc/shock/ele2.gif
frame data/chars/misc/shock/ele1.gif
frame data/chars/misc/shock/ele2.gif #
frame data/chars/misc/shock/ele1.gif
frame data/chars/misc/shock/ele2.gif
frame data/chars/misc/shock/ele1.gif
frame data/chars/misc/shock/ele2.gif #
frame data/chars/misc/shock/ele1.gif
frame data/chars/misc/shock/ele2.gif
frame data/chars/misc/shock/ele1.gif
frame data/chars/misc/shock/ele2.gif #
anim shock
@script
if(frame > 2){
void self = getlocalvar("self");
int y = getentityproperty(self, "a");
int b = getentityproperty(self, "base");
if(y <= b+5){
killentity(self);
}
}
@end_script
loop 1 3 6
delay 1
offset 220 166
frame data/chars/misc/shock/shom01.gif
delay 4
frame data/chars/misc/shock/shom01.gif
frame data/chars/misc/shock/shom02.gif
frame data/chars/misc/shock/shom03.gif #
frame data/chars/misc/shock/shom01.gif
frame data/chars/misc/shock/shom02.gif
frame data/chars/misc/shock/shom03.gif #
frame data/chars/misc/shock/shom01.gif
frame data/chars/misc/shock/shom02.gif
frame data/chars/misc/shock/shom03.gif #
anim fall6
@script
if(frame > 2){
void self = getlocalvar("self");
int y = getentityproperty(self, "a");
int b = getentityproperty(self, "base");
if(y <= b+5){
killentity(self);
}
}
@end_script
loop 1 3 6
delay 1
offset 220 166
frame data/chars/misc/shock/shom01.gif
delay 4
frame data/chars/misc/shock/shom01.gif
frame data/chars/misc/shock/shom02.gif
frame data/chars/misc/shock/shom03.gif #
frame data/chars/misc/shock/shom01.gif
frame data/chars/misc/shock/shom02.gif
frame data/chars/misc/shock/shom03.gif #
frame data/chars/misc/shock/shom01.gif
frame data/chars/misc/shock/shom02.gif
frame data/chars/misc/shock/shom03.gif #
Yes, ReactFX has more animations than just BURN and SHOCK cause it's also used for respective animations.