diff --git a/src/b_bot.c b/src/b_bot.c index af57d65ecf6e3c24e725ed38b9533b9ab6509763..407a96c8b32b925e448226fb7351c4a27e34e4b6 100644 --- a/src/b_bot.c +++ b/src/b_bot.c @@ -624,7 +624,7 @@ void B_HandleFlightIndicator(player_t *player) } // if the mobj isn't a flight indicator, let's not mess with it - if (tails->hnext->type != MT_OVERLAY || (tails->hnext->state != states+S_FLIGHTINDICATOR)) + if (tails->hnext->type != MT_OVERLAY || (tails->hnext->state->num != S_FLIGHTINDICATOR)) return; // if it shouldn't exist, remove it diff --git a/src/deh_lua.c b/src/deh_lua.c index 1dcf0f13c3889508705c26f7bbd6bb62b941b78b..ee02746c20968ed154f74d01b6937853a78913bc 100644 --- a/src/deh_lua.c +++ b/src/deh_lua.c @@ -83,18 +83,9 @@ static inline int lib_freeslot(lua_State *L) } else if (fastcmp(type, "S")) { - statenum_t i; - for (i = 0; i < NUMSTATEFREESLOTS; i++) - if (!FREE_STATES[i]) { - CONS_Printf("State S_%s allocated.\n",word); - FREE_STATES[i] = Z_Malloc(strlen(word)+1, PU_STATIC, NULL); - strcpy(FREE_STATES[i],word); - lua_pushinteger(L, S_FIRSTFREESLOT + i); - r++; - break; - } - if (i == NUMSTATEFREESLOTS) - CONS_Alert(CONS_WARNING, "Ran out of free State slots!\n"); + CONS_Printf("State S_%s allocated.\n",word); + lua_pushinteger(L, P_AllocateState(Z_StrDup(va("S_%s", word)))); + r++; } else if (fastcmp(type, "MT")) { @@ -406,25 +397,21 @@ static int ScanConstants(lua_State *L, boolean mathlib, const char *word) return 0; } else if (fastncmp("S_",word,2)) { - p = word+2; - for (i = 0; i < NUMSTATEFREESLOTS; i++) { - if (!FREE_STATES[i]) - break; - if (fastcmp(p, FREE_STATES[i])) { - CacheAndPushConstant(L, word, S_FIRSTFREESLOT+i); - return 1; - } - } - for (i = 0; i < S_FIRSTFREESLOT; i++) - if (fastcmp(p, STATE_LIST[i]+2)) { + for (i = 0; (UINT32)i < numstates; i++) + { + if (fastcmp(word, states[i]->name)) + { CacheAndPushConstant(L, word, i); return 1; } + } return luaL_error(L, "state '%s' does not exist.\n", word); } else if (fastncmp("MT_",word,3)) { - for (i = 0; (size_t)i < nummobjinfo; i++) { - if (fastcmp(word, mobjinfo[i]->name)) { + for (i = 0; (UINT32)i < nummobjinfo; i++) + { + if (fastcmp(word, mobjinfo[i]->name)) + { CacheAndPushConstant(L, word, i); return 1; } diff --git a/src/deh_soc.c b/src/deh_soc.c index 9c07a38f1df4194599fa2e7f9468e9832a178f48..c62082f29fe0cfcef103269fad5f2127dd2c6a86 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -459,12 +459,8 @@ void readfreeslots(MYFILE *f) } else if (fastcmp(type, "S")) { - for (i = 0; i < NUMSTATEFREESLOTS; i++) - if (!FREE_STATES[i]) { - FREE_STATES[i] = Z_Malloc(strlen(word)+1, PU_STATIC, NULL); - strcpy(FREE_STATES[i],word); - break; - } + CONS_Printf("State S_%s allocated.\n",word); + P_AllocateState(Z_StrDup(va("S_%s", word))); } else if (fastcmp(type, "MT")) { @@ -2760,27 +2756,27 @@ void readframe(MYFILE *f, INT32 num) if (fastcmp(word1, "SPRITENUMBER") || fastcmp(word1, "SPRITENAME")) { - states[num].sprite = get_sprite(word2); + states[num]->sprite = get_sprite(word2); } else if (fastcmp(word1, "SPRITESUBNUMBER") || fastcmp(word1, "SPRITEFRAME")) { - states[num].frame = (INT32)get_number(word2); // So the FF_ flags get calculated + states[num]->frame = (INT32)get_number(word2); // So the FF_ flags get calculated } else if (fastcmp(word1, "DURATION")) { - states[num].tics = (INT32)get_number(word2); // So TICRATE can be used + states[num]->tics = (INT32)get_number(word2); // So TICRATE can be used } else if (fastcmp(word1, "NEXT")) { - states[num].nextstate = get_state(word2); + states[num]->nextstate = get_state(word2); } else if (fastcmp(word1, "VAR1")) { - states[num].var1 = (INT32)get_number(word2); + states[num]->var1 = (INT32)get_number(word2); } else if (fastcmp(word1, "VAR2")) { - states[num].var2 = (INT32)get_number(word2); + states[num]->var2 = (INT32)get_number(word2); } else if (fastcmp(word1, "ACTION")) { @@ -2803,20 +2799,20 @@ void readframe(MYFILE *f, INT32 num) for (z = 0; actionpointers[z].name; z++) { - if (actionpointers[z].action.acv == states[num].action.acv) + if (actionpointers[z].action.acv == states[num]->action.acv) break; } z = 0; - found = LUA_SetLuaAction(&states[num], actiontocompare); + found = LUA_SetLuaAction(states[num], actiontocompare); if (!found) while (actionpointers[z].name) { if (fastcmp(actiontocompare, actionpointers[z].name)) { - states[num].action = actionpointers[z].action; - states[num].action.acv = actionpointers[z].action.acv; // assign - states[num].action.acp1 = actionpointers[z].action.acp1; + states[num]->action = actionpointers[z].action; + states[num]->action.acv = actionpointers[z].action.acv; // assign + states[num]->action.acp1 = actionpointers[z].action.acp1; found = true; break; } @@ -4113,11 +4109,12 @@ void readwipes(MYFILE *f) mobjtype_t get_mobjtype(const char *word) { // Returns the value of MT_ enumerations - mobjtype_t i; + UINT32 i; if (*word >= '0' && *word <= '9') return atoi(word); I_Assert(fastncmp("MT_",word,3)); - for (i = 0; i < nummobjinfo; i++) { + for (i = 0; i < nummobjinfo; i++) + { if (fastcmp(word, mobjinfo[i]->name)) return i; } @@ -4127,20 +4124,14 @@ mobjtype_t get_mobjtype(const char *word) statenum_t get_state(const char *word) { // Returns the value of S_ enumerations - statenum_t i; + UINT32 i; if (*word >= '0' && *word <= '9') return atoi(word); - if (fastncmp("S_",word,2)) - word += 2; // take off the S_ - for (i = 0; i < NUMSTATEFREESLOTS; i++) { - if (!FREE_STATES[i]) - break; - if (fastcmp(word, FREE_STATES[i])) - return S_FIRSTFREESLOT+i; - } - for (i = 0; i < S_FIRSTFREESLOT; i++) - if (fastcmp(word, STATE_LIST[i]+2)) + for (i = 0; i < numstates; i++) + { + if (fastcmp(word, states[i]->name)) return i; + } deh_warning("Couldn't find state named 'S_%s'",word); return S_NULL; } diff --git a/src/deh_tables.c b/src/deh_tables.c index 82523caffbf233916853db3a27afceb6b7200857..de24c1b3ab7a5433d8e888ad6c521c9bc32a3164 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -28,7 +28,6 @@ #include "deh_tables.h" -char *FREE_STATES[NUMSTATEFREESLOTS]; char *FREE_SKINCOLORS[NUMCOLORFREESLOTS]; bitarray_t used_spr[BIT_ARRAY_SIZE(NUMSPRITEFREESLOTS)]; // Sprite freeslots in use @@ -346,3990 +345,6 @@ actionpointer_t actionpointers[] = {{NULL}, NULL}, }; -//////////////////////////////////////////////////////////////////////////////// -// CRAZY LIST OF STATE NAMES AND ALL FROM HERE DOWN -// TODO: Make this all a seperate file or something, like part of info.c?? -// TODO: Read the list from a text lump in a WAD as necessary instead -// or something, don't just keep it all in memory like this. -// TODO: Make the lists public so we can start using actual mobj -// and state names in warning and error messages! :D - -// RegEx to generate this from info.h: ^\tS_([^,]+), --> \t"S_\1", -// I am leaving the prefixes solely for clarity to programmers, -// because sadly no one remembers this place while searching for full state names. -const char *const STATE_LIST[] = { // array length left dynamic for sanity testing later. - "S_NULL", - "S_UNKNOWN", - "S_INVISIBLE", // state for invisible sprite - - "S_SPAWNSTATE", - "S_SEESTATE", - "S_MELEESTATE", - "S_MISSILESTATE", - "S_DEATHSTATE", - "S_XDEATHSTATE", - "S_RAISESTATE", - - // Thok - "S_THOK", - - // Player - "S_PLAY_STND", - "S_PLAY_WAIT", - "S_PLAY_WALK", - "S_PLAY_SKID", - "S_PLAY_RUN", - "S_PLAY_DASH", - "S_PLAY_PAIN", - "S_PLAY_STUN", - "S_PLAY_DEAD", - "S_PLAY_DRWN", - "S_PLAY_ROLL", - "S_PLAY_GASP", - "S_PLAY_JUMP", - "S_PLAY_SPRING", - "S_PLAY_FALL", - "S_PLAY_EDGE", - "S_PLAY_RIDE", - - // CA2_SPINDASH - "S_PLAY_SPINDASH", - - // CA_FLY/SWIM - "S_PLAY_FLY", - "S_PLAY_SWIM", - "S_PLAY_FLY_TIRED", - - // CA_GLIDEANDCLIMB - "S_PLAY_GLIDE", - "S_PLAY_GLIDE_LANDING", - "S_PLAY_CLING", - "S_PLAY_CLIMB", - - // CA_FLOAT/CA_SLOWFALL - "S_PLAY_FLOAT", - "S_PLAY_FLOAT_RUN", - - // CA_BOUNCE - "S_PLAY_BOUNCE", - "S_PLAY_BOUNCE_LANDING", - - // CA2_GUNSLINGER - "S_PLAY_FIRE", - "S_PLAY_FIRE_FINISH", - - // CA_TWINSPIN - "S_PLAY_TWINSPIN", - - // CA2_MELEE - "S_PLAY_MELEE", - "S_PLAY_MELEE_FINISH", - "S_PLAY_MELEE_LANDING", - - // SF_SUPER - "S_PLAY_SUPER_TRANS1", - "S_PLAY_SUPER_TRANS2", - "S_PLAY_SUPER_TRANS3", - "S_PLAY_SUPER_TRANS4", - "S_PLAY_SUPER_TRANS5", - "S_PLAY_SUPER_TRANS6", - - // technically the player goes here but it's an infinite tic state - "S_OBJPLACE_DUMMY", - - // 1-Up Box Sprites overlay (uses player sprite) - "S_PLAY_BOX1", - "S_PLAY_BOX2", - "S_PLAY_ICON1", - "S_PLAY_ICON2", - "S_PLAY_ICON3", - - // Level end sign overlay (uses player sprite) - "S_PLAY_SIGN", - - // NiGHTS character (uses player sprite) - "S_PLAY_NIGHTS_TRANS1", - "S_PLAY_NIGHTS_TRANS2", - "S_PLAY_NIGHTS_TRANS3", - "S_PLAY_NIGHTS_TRANS4", - "S_PLAY_NIGHTS_TRANS5", - "S_PLAY_NIGHTS_TRANS6", - "S_PLAY_NIGHTS_STAND", - "S_PLAY_NIGHTS_FLOAT", - "S_PLAY_NIGHTS_FLY", - "S_PLAY_NIGHTS_DRILL", - "S_PLAY_NIGHTS_STUN", - "S_PLAY_NIGHTS_PULL", - "S_PLAY_NIGHTS_ATTACK", - - // c: - "S_TAILSOVERLAY_STAND", - "S_TAILSOVERLAY_0DEGREES", - "S_TAILSOVERLAY_PLUS30DEGREES", - "S_TAILSOVERLAY_PLUS60DEGREES", - "S_TAILSOVERLAY_MINUS30DEGREES", - "S_TAILSOVERLAY_MINUS60DEGREES", - "S_TAILSOVERLAY_RUN", - "S_TAILSOVERLAY_FLY", - "S_TAILSOVERLAY_TIRE", - "S_TAILSOVERLAY_PAIN", - "S_TAILSOVERLAY_GASP", - "S_TAILSOVERLAY_EDGE", - "S_TAILSOVERLAY_DASH", - - // [: - "S_JETFUMEFLASH", - - // Blue Crawla - "S_POSS_STND", - "S_POSS_RUN1", - "S_POSS_RUN2", - "S_POSS_RUN3", - "S_POSS_RUN4", - "S_POSS_RUN5", - "S_POSS_RUN6", - - // Red Crawla - "S_SPOS_STND", - "S_SPOS_RUN1", - "S_SPOS_RUN2", - "S_SPOS_RUN3", - "S_SPOS_RUN4", - "S_SPOS_RUN5", - "S_SPOS_RUN6", - - // Greenflower Fish - "S_FISH1", - "S_FISH2", - "S_FISH3", - "S_FISH4", - - // Buzz (Gold) - "S_BUZZLOOK1", - "S_BUZZLOOK2", - "S_BUZZFLY1", - "S_BUZZFLY2", - - // Buzz (Red) - "S_RBUZZLOOK1", - "S_RBUZZLOOK2", - "S_RBUZZFLY1", - "S_RBUZZFLY2", - - // Jetty-Syn Bomber - "S_JETBLOOK1", - "S_JETBLOOK2", - "S_JETBZOOM1", - "S_JETBZOOM2", - - // Jetty-Syn Gunner - "S_JETGLOOK1", - "S_JETGLOOK2", - "S_JETGZOOM1", - "S_JETGZOOM2", - "S_JETGSHOOT1", - "S_JETGSHOOT2", - - // Crawla Commander - "S_CCOMMAND1", - "S_CCOMMAND2", - "S_CCOMMAND3", - "S_CCOMMAND4", - - // Deton - "S_DETON1", - "S_DETON2", - "S_DETON3", - "S_DETON4", - "S_DETON5", - "S_DETON6", - "S_DETON7", - "S_DETON8", - "S_DETON9", - "S_DETON10", - "S_DETON11", - "S_DETON12", - "S_DETON13", - "S_DETON14", - "S_DETON15", - - // Skim Mine Dropper - "S_SKIM1", - "S_SKIM2", - "S_SKIM3", - "S_SKIM4", - - // THZ Turret - "S_TURRET", - "S_TURRETFIRE", - "S_TURRETSHOCK1", - "S_TURRETSHOCK2", - "S_TURRETSHOCK3", - "S_TURRETSHOCK4", - "S_TURRETSHOCK5", - "S_TURRETSHOCK6", - "S_TURRETSHOCK7", - "S_TURRETSHOCK8", - "S_TURRETSHOCK9", - - // Popup Turret - "S_TURRETLOOK", - "S_TURRETSEE", - "S_TURRETPOPUP1", - "S_TURRETPOPUP2", - "S_TURRETPOPUP3", - "S_TURRETPOPUP4", - "S_TURRETPOPUP5", - "S_TURRETPOPUP6", - "S_TURRETPOPUP7", - "S_TURRETPOPUP8", - "S_TURRETSHOOT", - "S_TURRETPOPDOWN1", - "S_TURRETPOPDOWN2", - "S_TURRETPOPDOWN3", - "S_TURRETPOPDOWN4", - "S_TURRETPOPDOWN5", - "S_TURRETPOPDOWN6", - "S_TURRETPOPDOWN7", - "S_TURRETPOPDOWN8", - - // Spincushion - "S_SPINCUSHION_LOOK", - "S_SPINCUSHION_CHASE1", - "S_SPINCUSHION_CHASE2", - "S_SPINCUSHION_CHASE3", - "S_SPINCUSHION_CHASE4", - "S_SPINCUSHION_AIM1", - "S_SPINCUSHION_AIM2", - "S_SPINCUSHION_AIM3", - "S_SPINCUSHION_AIM4", - "S_SPINCUSHION_AIM5", - "S_SPINCUSHION_SPIN1", - "S_SPINCUSHION_SPIN2", - "S_SPINCUSHION_SPIN3", - "S_SPINCUSHION_SPIN4", - "S_SPINCUSHION_STOP1", - "S_SPINCUSHION_STOP2", - "S_SPINCUSHION_STOP3", - "S_SPINCUSHION_STOP4", - - // Crushstacean - "S_CRUSHSTACEAN_ROAM1", - "S_CRUSHSTACEAN_ROAM2", - "S_CRUSHSTACEAN_ROAM3", - "S_CRUSHSTACEAN_ROAM4", - "S_CRUSHSTACEAN_ROAMPAUSE", - "S_CRUSHSTACEAN_PUNCH1", - "S_CRUSHSTACEAN_PUNCH2", - "S_CRUSHCLAW_AIM", - "S_CRUSHCLAW_OUT", - "S_CRUSHCLAW_STAY", - "S_CRUSHCLAW_IN", - "S_CRUSHCLAW_WAIT", - "S_CRUSHCHAIN", - - // Banpyura - "S_BANPYURA_ROAM1", - "S_BANPYURA_ROAM2", - "S_BANPYURA_ROAM3", - "S_BANPYURA_ROAM4", - "S_BANPYURA_ROAMPAUSE", - "S_CDIAG1", - "S_CDIAG2", - "S_CDIAG3", - "S_CDIAG4", - "S_CDIAG5", - "S_CDIAG6", - "S_CDIAG7", - "S_CDIAG8", - - // Jet Jaw - "S_JETJAW_ROAM1", - "S_JETJAW_ROAM2", - "S_JETJAW_ROAM3", - "S_JETJAW_ROAM4", - "S_JETJAW_ROAM5", - "S_JETJAW_ROAM6", - "S_JETJAW_ROAM7", - "S_JETJAW_ROAM8", - "S_JETJAW_CHOMP1", - "S_JETJAW_CHOMP2", - "S_JETJAW_CHOMP3", - "S_JETJAW_CHOMP4", - "S_JETJAW_CHOMP5", - "S_JETJAW_CHOMP6", - "S_JETJAW_CHOMP7", - "S_JETJAW_CHOMP8", - "S_JETJAW_CHOMP9", - "S_JETJAW_CHOMP10", - "S_JETJAW_CHOMP11", - "S_JETJAW_CHOMP12", - "S_JETJAW_CHOMP13", - "S_JETJAW_CHOMP14", - "S_JETJAW_CHOMP15", - "S_JETJAW_CHOMP16", - "S_JETJAW_SOUND", - - // Snailer - "S_SNAILER1", - "S_SNAILER_FLICKY", - - // Vulture - "S_VULTURE_STND", - "S_VULTURE_DRIFT", - "S_VULTURE_ZOOM1", - "S_VULTURE_ZOOM2", - "S_VULTURE_STUNNED", - - // Pointy - "S_POINTY1", - "S_POINTYBALL1", - - // Robo-Hood - "S_ROBOHOOD_LOOK", - "S_ROBOHOOD_STAND", - "S_ROBOHOOD_FIRE1", - "S_ROBOHOOD_FIRE2", - "S_ROBOHOOD_JUMP1", - "S_ROBOHOOD_JUMP2", - "S_ROBOHOOD_JUMP3", - - // Castlebot Facestabber - "S_FACESTABBER_STND1", - "S_FACESTABBER_STND2", - "S_FACESTABBER_STND3", - "S_FACESTABBER_STND4", - "S_FACESTABBER_STND5", - "S_FACESTABBER_STND6", - "S_FACESTABBER_CHARGE1", - "S_FACESTABBER_CHARGE2", - "S_FACESTABBER_CHARGE3", - "S_FACESTABBER_CHARGE4", - "S_FACESTABBER_PAIN", - "S_FACESTABBER_DIE1", - "S_FACESTABBER_DIE2", - "S_FACESTABBER_DIE3", - "S_FACESTABBERSPEAR", - - // Egg Guard - "S_EGGGUARD_STND", - "S_EGGGUARD_WALK1", - "S_EGGGUARD_WALK2", - "S_EGGGUARD_WALK3", - "S_EGGGUARD_WALK4", - "S_EGGGUARD_MAD1", - "S_EGGGUARD_MAD2", - "S_EGGGUARD_MAD3", - "S_EGGGUARD_RUN1", - "S_EGGGUARD_RUN2", - "S_EGGGUARD_RUN3", - "S_EGGGUARD_RUN4", - - // Egg Shield for Egg Guard - "S_EGGSHIELD", - "S_EGGSHIELDBREAK", - - // Green Snapper - "S_SNAPPER_SPAWN", - "S_SNAPPER_SPAWN2", - "S_GSNAPPER_STND", - "S_GSNAPPER1", - "S_GSNAPPER2", - "S_GSNAPPER3", - "S_GSNAPPER4", - "S_SNAPPER_XPLD", - "S_SNAPPER_LEG", - "S_SNAPPER_LEGRAISE", - "S_SNAPPER_HEAD", - - // Minus - "S_MINUS_INIT", - "S_MINUS_STND", - "S_MINUS_DIGGING1", - "S_MINUS_DIGGING2", - "S_MINUS_DIGGING3", - "S_MINUS_DIGGING4", - "S_MINUS_BURST0", - "S_MINUS_BURST1", - "S_MINUS_BURST2", - "S_MINUS_BURST3", - "S_MINUS_BURST4", - "S_MINUS_BURST5", - "S_MINUS_POPUP", - "S_MINUS_AERIAL1", - "S_MINUS_AERIAL2", - "S_MINUS_AERIAL3", - "S_MINUS_AERIAL4", - - // Minus dirt - "S_MINUSDIRT1", - "S_MINUSDIRT2", - "S_MINUSDIRT3", - "S_MINUSDIRT4", - "S_MINUSDIRT5", - "S_MINUSDIRT6", - "S_MINUSDIRT7", - - // Spring Shell - "S_SSHELL_STND", - "S_SSHELL_RUN1", - "S_SSHELL_RUN2", - "S_SSHELL_RUN3", - "S_SSHELL_RUN4", - "S_SSHELL_SPRING1", - "S_SSHELL_SPRING2", - "S_SSHELL_SPRING3", - "S_SSHELL_SPRING4", - - // Spring Shell (yellow) - "S_YSHELL_STND", - "S_YSHELL_RUN1", - "S_YSHELL_RUN2", - "S_YSHELL_RUN3", - "S_YSHELL_RUN4", - "S_YSHELL_SPRING1", - "S_YSHELL_SPRING2", - "S_YSHELL_SPRING3", - "S_YSHELL_SPRING4", - - // Unidus - "S_UNIDUS_STND", - "S_UNIDUS_RUN", - "S_UNIDUS_BALL", - - // Canarivore - "S_CANARIVORE_LOOK", - "S_CANARIVORE_AWAKEN1", - "S_CANARIVORE_AWAKEN2", - "S_CANARIVORE_AWAKEN3", - "S_CANARIVORE_GAS1", - "S_CANARIVORE_GAS2", - "S_CANARIVORE_GAS3", - "S_CANARIVORE_GAS4", - "S_CANARIVORE_GAS5", - "S_CANARIVORE_GASREPEAT", - "S_CANARIVORE_CLOSE1", - "S_CANARIVORE_CLOSE2", - "S_CANARIVOREGAS_1", - "S_CANARIVOREGAS_2", - "S_CANARIVOREGAS_3", - "S_CANARIVOREGAS_4", - "S_CANARIVOREGAS_5", - "S_CANARIVOREGAS_6", - "S_CANARIVOREGAS_7", - "S_CANARIVOREGAS_8", - - // Pyre Fly - "S_PYREFLY_FLY", - "S_PYREFLY_BURN", - "S_PYREFIRE1", - "S_PYREFIRE2", - - // Pterabyte - "S_PTERABYTESPAWNER", - "S_PTERABYTEWAYPOINT", - "S_PTERABYTE_FLY1", - "S_PTERABYTE_FLY2", - "S_PTERABYTE_FLY3", - "S_PTERABYTE_FLY4", - "S_PTERABYTE_SWOOPDOWN", - "S_PTERABYTE_SWOOPUP", - - // Dragonbomber - "S_DRAGONBOMBER", - "S_DRAGONWING1", - "S_DRAGONWING2", - "S_DRAGONWING3", - "S_DRAGONWING4", - "S_DRAGONTAIL_LOADED", - "S_DRAGONTAIL_EMPTY", - "S_DRAGONTAIL_EMPTYLOOP", - "S_DRAGONTAIL_RELOAD", - "S_DRAGONMINE", - "S_DRAGONMINE_LAND1", - "S_DRAGONMINE_LAND2", - "S_DRAGONMINE_SLOWFLASH1", - "S_DRAGONMINE_SLOWFLASH2", - "S_DRAGONMINE_SLOWLOOP", - "S_DRAGONMINE_FASTFLASH1", - "S_DRAGONMINE_FASTFLASH2", - "S_DRAGONMINE_FASTLOOP", - - // Boss Explosion - "S_BOSSEXPLODE", - - // S3&K Boss Explosion - "S_SONIC3KBOSSEXPLOSION1", - "S_SONIC3KBOSSEXPLOSION2", - "S_SONIC3KBOSSEXPLOSION3", - "S_SONIC3KBOSSEXPLOSION4", - "S_SONIC3KBOSSEXPLOSION5", - "S_SONIC3KBOSSEXPLOSION6", - - "S_JETFUME1", - - // Boss 1 - "S_EGGMOBILE_STND", - "S_EGGMOBILE_ROFL", - "S_EGGMOBILE_LATK1", - "S_EGGMOBILE_LATK2", - "S_EGGMOBILE_LATK3", - "S_EGGMOBILE_LATK4", - "S_EGGMOBILE_LATK5", - "S_EGGMOBILE_LATK6", - "S_EGGMOBILE_LATK7", - "S_EGGMOBILE_LATK8", - "S_EGGMOBILE_LATK9", - "S_EGGMOBILE_RATK1", - "S_EGGMOBILE_RATK2", - "S_EGGMOBILE_RATK3", - "S_EGGMOBILE_RATK4", - "S_EGGMOBILE_RATK5", - "S_EGGMOBILE_RATK6", - "S_EGGMOBILE_RATK7", - "S_EGGMOBILE_RATK8", - "S_EGGMOBILE_RATK9", - "S_EGGMOBILE_PANIC1", - "S_EGGMOBILE_PANIC2", - "S_EGGMOBILE_PANIC3", - "S_EGGMOBILE_PANIC4", - "S_EGGMOBILE_PANIC5", - "S_EGGMOBILE_PANIC6", - "S_EGGMOBILE_PANIC7", - "S_EGGMOBILE_PANIC8", - "S_EGGMOBILE_PANIC9", - "S_EGGMOBILE_PANIC10", - "S_EGGMOBILE_PANIC11", - "S_EGGMOBILE_PANIC12", - "S_EGGMOBILE_PANIC13", - "S_EGGMOBILE_PANIC14", - "S_EGGMOBILE_PANIC15", - "S_EGGMOBILE_PAIN", - "S_EGGMOBILE_PAIN2", - "S_EGGMOBILE_DIE1", - "S_EGGMOBILE_DIE2", - "S_EGGMOBILE_DIE3", - "S_EGGMOBILE_DIE4", - "S_EGGMOBILE_FLEE1", - "S_EGGMOBILE_FLEE2", - "S_EGGMOBILE_BALL", - "S_EGGMOBILE_TARGET", - - "S_BOSSEGLZ1", - "S_BOSSEGLZ2", - - // Boss 2 - "S_EGGMOBILE2_STND", - "S_EGGMOBILE2_POGO1", - "S_EGGMOBILE2_POGO2", - "S_EGGMOBILE2_POGO3", - "S_EGGMOBILE2_POGO4", - "S_EGGMOBILE2_POGO5", - "S_EGGMOBILE2_POGO6", - "S_EGGMOBILE2_POGO7", - "S_EGGMOBILE2_PAIN", - "S_EGGMOBILE2_PAIN2", - "S_EGGMOBILE2_DIE1", - "S_EGGMOBILE2_DIE2", - "S_EGGMOBILE2_DIE3", - "S_EGGMOBILE2_DIE4", - "S_EGGMOBILE2_FLEE1", - "S_EGGMOBILE2_FLEE2", - - "S_BOSSTANK1", - "S_BOSSTANK2", - "S_BOSSSPIGOT", - - // Boss 2 Goop - "S_GOOP1", - "S_GOOP2", - "S_GOOP3", - "S_GOOPTRAIL", - - // Boss 3 - "S_EGGMOBILE3_STND", - "S_EGGMOBILE3_SHOCK", - "S_EGGMOBILE3_ATK1", - "S_EGGMOBILE3_ATK2", - "S_EGGMOBILE3_ATK3A", - "S_EGGMOBILE3_ATK3B", - "S_EGGMOBILE3_ATK3C", - "S_EGGMOBILE3_ATK3D", - "S_EGGMOBILE3_ATK4", - "S_EGGMOBILE3_ATK5", - "S_EGGMOBILE3_ROFL", - "S_EGGMOBILE3_PAIN", - "S_EGGMOBILE3_PAIN2", - "S_EGGMOBILE3_DIE1", - "S_EGGMOBILE3_DIE2", - "S_EGGMOBILE3_DIE3", - "S_EGGMOBILE3_DIE4", - "S_EGGMOBILE3_FLEE1", - "S_EGGMOBILE3_FLEE2", - - // Boss 3 Pinch - "S_FAKEMOBILE_INIT", - "S_FAKEMOBILE", - "S_FAKEMOBILE_ATK1", - "S_FAKEMOBILE_ATK2", - "S_FAKEMOBILE_ATK3A", - "S_FAKEMOBILE_ATK3B", - "S_FAKEMOBILE_ATK3C", - "S_FAKEMOBILE_ATK3D", - "S_FAKEMOBILE_DIE1", - "S_FAKEMOBILE_DIE2", - - "S_BOSSSEBH1", - "S_BOSSSEBH2", - - // Boss 3 Shockwave - "S_SHOCKWAVE1", - "S_SHOCKWAVE2", - - // Boss 4 - "S_EGGMOBILE4_STND", - "S_EGGMOBILE4_LATK1", - "S_EGGMOBILE4_LATK2", - "S_EGGMOBILE4_LATK3", - "S_EGGMOBILE4_LATK4", - "S_EGGMOBILE4_LATK5", - "S_EGGMOBILE4_LATK6", - "S_EGGMOBILE4_RATK1", - "S_EGGMOBILE4_RATK2", - "S_EGGMOBILE4_RATK3", - "S_EGGMOBILE4_RATK4", - "S_EGGMOBILE4_RATK5", - "S_EGGMOBILE4_RATK6", - "S_EGGMOBILE4_RAISE1", - "S_EGGMOBILE4_RAISE2", - "S_EGGMOBILE4_PAIN1", - "S_EGGMOBILE4_PAIN2", - "S_EGGMOBILE4_DIE1", - "S_EGGMOBILE4_DIE2", - "S_EGGMOBILE4_DIE3", - "S_EGGMOBILE4_DIE4", - "S_EGGMOBILE4_FLEE1", - "S_EGGMOBILE4_FLEE2", - "S_EGGMOBILE4_MACE", - "S_EGGMOBILE4_MACE_DIE1", - "S_EGGMOBILE4_MACE_DIE2", - "S_EGGMOBILE4_MACE_DIE3", - - // Boss 4 jet flame - "S_JETFLAME", - - // Boss 4 Spectator Eggrobo - "S_EGGROBO1_STND", - "S_EGGROBO1_BSLAP1", - "S_EGGROBO1_BSLAP2", - "S_EGGROBO1_PISSED", - - // Boss 4 Spectator Eggrobo jet flame - "S_EGGROBOJET", - - // Boss 5 - "S_FANG_SETUP", - "S_FANG_INTRO0", - "S_FANG_INTRO1", - "S_FANG_INTRO2", - "S_FANG_INTRO3", - "S_FANG_INTRO4", - "S_FANG_INTRO5", - "S_FANG_INTRO6", - "S_FANG_INTRO7", - "S_FANG_INTRO8", - "S_FANG_INTRO9", - "S_FANG_INTRO10", - "S_FANG_INTRO11", - "S_FANG_INTRO12", - "S_FANG_CLONE1", - "S_FANG_CLONE2", - "S_FANG_CLONE3", - "S_FANG_CLONE4", - "S_FANG_IDLE0", - "S_FANG_IDLE1", - "S_FANG_IDLE2", - "S_FANG_IDLE3", - "S_FANG_IDLE4", - "S_FANG_IDLE5", - "S_FANG_IDLE6", - "S_FANG_IDLE7", - "S_FANG_IDLE8", - "S_FANG_PAIN1", - "S_FANG_PAIN2", - "S_FANG_PATHINGSTART1", - "S_FANG_PATHINGSTART2", - "S_FANG_PATHING", - "S_FANG_BOUNCE1", - "S_FANG_BOUNCE2", - "S_FANG_BOUNCE3", - "S_FANG_BOUNCE4", - "S_FANG_FALL1", - "S_FANG_FALL2", - "S_FANG_CHECKPATH1", - "S_FANG_CHECKPATH2", - "S_FANG_PATHINGCONT1", - "S_FANG_PATHINGCONT2", - "S_FANG_PATHINGCONT3", - "S_FANG_SKID1", - "S_FANG_SKID2", - "S_FANG_SKID3", - "S_FANG_CHOOSEATTACK", - "S_FANG_FIRESTART1", - "S_FANG_FIRESTART2", - "S_FANG_FIRE1", - "S_FANG_FIRE2", - "S_FANG_FIRE3", - "S_FANG_FIRE4", - "S_FANG_FIREREPEAT", - "S_FANG_LOBSHOT0", - "S_FANG_LOBSHOT1", - "S_FANG_LOBSHOT2", - "S_FANG_WAIT1", - "S_FANG_WAIT2", - "S_FANG_WALLHIT", - "S_FANG_PINCHPATHINGSTART1", - "S_FANG_PINCHPATHINGSTART2", - "S_FANG_PINCHPATHING", - "S_FANG_PINCHBOUNCE0", - "S_FANG_PINCHBOUNCE1", - "S_FANG_PINCHBOUNCE2", - "S_FANG_PINCHBOUNCE3", - "S_FANG_PINCHBOUNCE4", - "S_FANG_PINCHFALL0", - "S_FANG_PINCHFALL1", - "S_FANG_PINCHFALL2", - "S_FANG_PINCHSKID1", - "S_FANG_PINCHSKID2", - "S_FANG_PINCHLOBSHOT0", - "S_FANG_PINCHLOBSHOT1", - "S_FANG_PINCHLOBSHOT2", - "S_FANG_PINCHLOBSHOT3", - "S_FANG_PINCHLOBSHOT4", - "S_FANG_DIE1", - "S_FANG_DIE2", - "S_FANG_DIE3", - "S_FANG_DIE4", - "S_FANG_DIE5", - "S_FANG_DIE6", - "S_FANG_DIE7", - "S_FANG_DIE8", - "S_FANG_FLEEPATHING1", - "S_FANG_FLEEPATHING2", - "S_FANG_FLEEBOUNCE1", - "S_FANG_FLEEBOUNCE2", - "S_FANG_KO", - - "S_BROKENROBOTRANDOM", - "S_BROKENROBOTA", - "S_BROKENROBOTB", - "S_BROKENROBOTC", - "S_BROKENROBOTD", - "S_BROKENROBOTE", - "S_BROKENROBOTF", - - "S_ALART1", - "S_ALART2", - - "S_VWREF", - "S_VWREB", - - "S_PROJECTORLIGHT1", - "S_PROJECTORLIGHT2", - "S_PROJECTORLIGHT3", - "S_PROJECTORLIGHT4", - "S_PROJECTORLIGHT5", - - "S_FBOMB1", - "S_FBOMB2", - "S_FBOMB_EXPL1", - "S_FBOMB_EXPL2", - "S_FBOMB_EXPL3", - "S_FBOMB_EXPL4", - "S_FBOMB_EXPL5", - "S_FBOMB_EXPL6", - "S_TNTDUST_1", - "S_TNTDUST_2", - "S_TNTDUST_3", - "S_TNTDUST_4", - "S_TNTDUST_5", - "S_TNTDUST_6", - "S_TNTDUST_7", - "S_TNTDUST_8", - "S_FSGNA", - "S_FSGNB", - "S_FSGNC", - "S_FSGND", - - // Black Eggman (Boss 7) - "S_BLACKEGG_STND", - "S_BLACKEGG_STND2", - "S_BLACKEGG_WALK1", - "S_BLACKEGG_WALK2", - "S_BLACKEGG_WALK3", - "S_BLACKEGG_WALK4", - "S_BLACKEGG_WALK5", - "S_BLACKEGG_WALK6", - "S_BLACKEGG_SHOOT1", - "S_BLACKEGG_SHOOT2", - "S_BLACKEGG_PAIN1", - "S_BLACKEGG_PAIN2", - "S_BLACKEGG_PAIN3", - "S_BLACKEGG_PAIN4", - "S_BLACKEGG_PAIN5", - "S_BLACKEGG_PAIN6", - "S_BLACKEGG_PAIN7", - "S_BLACKEGG_PAIN8", - "S_BLACKEGG_PAIN9", - "S_BLACKEGG_PAIN10", - "S_BLACKEGG_PAIN11", - "S_BLACKEGG_PAIN12", - "S_BLACKEGG_PAIN13", - "S_BLACKEGG_PAIN14", - "S_BLACKEGG_PAIN15", - "S_BLACKEGG_PAIN16", - "S_BLACKEGG_PAIN17", - "S_BLACKEGG_PAIN18", - "S_BLACKEGG_PAIN19", - "S_BLACKEGG_PAIN20", - "S_BLACKEGG_PAIN21", - "S_BLACKEGG_PAIN22", - "S_BLACKEGG_PAIN23", - "S_BLACKEGG_PAIN24", - "S_BLACKEGG_PAIN25", - "S_BLACKEGG_PAIN26", - "S_BLACKEGG_PAIN27", - "S_BLACKEGG_PAIN28", - "S_BLACKEGG_PAIN29", - "S_BLACKEGG_PAIN30", - "S_BLACKEGG_PAIN31", - "S_BLACKEGG_PAIN32", - "S_BLACKEGG_PAIN33", - "S_BLACKEGG_PAIN34", - "S_BLACKEGG_PAIN35", - "S_BLACKEGG_HITFACE1", - "S_BLACKEGG_HITFACE2", - "S_BLACKEGG_HITFACE3", - "S_BLACKEGG_HITFACE4", - "S_BLACKEGG_DIE1", - "S_BLACKEGG_DIE2", - "S_BLACKEGG_DIE3", - "S_BLACKEGG_DIE4", - "S_BLACKEGG_DIE5", - "S_BLACKEGG_MISSILE1", - "S_BLACKEGG_MISSILE2", - "S_BLACKEGG_MISSILE3", - "S_BLACKEGG_GOOP", - "S_BLACKEGG_JUMP1", - "S_BLACKEGG_JUMP2", - "S_BLACKEGG_DESTROYPLAT1", - "S_BLACKEGG_DESTROYPLAT2", - "S_BLACKEGG_DESTROYPLAT3", - - "S_BLACKEGG_HELPER", // Collision helper - - "S_BLACKEGG_GOOP1", - "S_BLACKEGG_GOOP2", - "S_BLACKEGG_GOOP3", - "S_BLACKEGG_GOOP4", - "S_BLACKEGG_GOOP5", - "S_BLACKEGG_GOOP6", - "S_BLACKEGG_GOOP7", - - "S_BLACKEGG_MISSILE", - - // New Very-Last-Minute 2.1 Brak Eggman (Cy-Brak-demon) - "S_CYBRAKDEMON_IDLE", - "S_CYBRAKDEMON_WALK1", - "S_CYBRAKDEMON_WALK2", - "S_CYBRAKDEMON_WALK3", - "S_CYBRAKDEMON_WALK4", - "S_CYBRAKDEMON_WALK5", - "S_CYBRAKDEMON_WALK6", - "S_CYBRAKDEMON_CHOOSE_ATTACK1", - "S_CYBRAKDEMON_MISSILE_ATTACK1", // Aim - "S_CYBRAKDEMON_MISSILE_ATTACK2", // Fire - "S_CYBRAKDEMON_MISSILE_ATTACK3", // Aim - "S_CYBRAKDEMON_MISSILE_ATTACK4", // Fire - "S_CYBRAKDEMON_MISSILE_ATTACK5", // Aim - "S_CYBRAKDEMON_MISSILE_ATTACK6", // Fire - "S_CYBRAKDEMON_FLAME_ATTACK1", // Reset - "S_CYBRAKDEMON_FLAME_ATTACK2", // Aim - "S_CYBRAKDEMON_FLAME_ATTACK3", // Fire - "S_CYBRAKDEMON_FLAME_ATTACK4", // Loop - "S_CYBRAKDEMON_CHOOSE_ATTACK2", - "S_CYBRAKDEMON_VILE_ATTACK1", - "S_CYBRAKDEMON_VILE_ATTACK2", - "S_CYBRAKDEMON_VILE_ATTACK3", - "S_CYBRAKDEMON_VILE_ATTACK4", - "S_CYBRAKDEMON_VILE_ATTACK5", - "S_CYBRAKDEMON_VILE_ATTACK6", - "S_CYBRAKDEMON_NAPALM_ATTACK1", - "S_CYBRAKDEMON_NAPALM_ATTACK2", - "S_CYBRAKDEMON_NAPALM_ATTACK3", - "S_CYBRAKDEMON_FINISH_ATTACK1", // If just attacked, remove MF2_FRET w/out going back to spawnstate - "S_CYBRAKDEMON_FINISH_ATTACK2", // Force a delay between attacks so you don't get bombarded with them back-to-back - "S_CYBRAKDEMON_PAIN1", - "S_CYBRAKDEMON_PAIN2", - "S_CYBRAKDEMON_PAIN3", - "S_CYBRAKDEMON_DIE1", - "S_CYBRAKDEMON_DIE2", - "S_CYBRAKDEMON_DIE3", - "S_CYBRAKDEMON_DIE4", - "S_CYBRAKDEMON_DIE5", - "S_CYBRAKDEMON_DIE6", - "S_CYBRAKDEMON_DIE7", - "S_CYBRAKDEMON_DIE8", - "S_CYBRAKDEMON_DEINVINCIBLERIZE", - "S_CYBRAKDEMON_INVINCIBLERIZE", - - "S_CYBRAKDEMONMISSILE", - "S_CYBRAKDEMONMISSILE_EXPLODE1", - "S_CYBRAKDEMONMISSILE_EXPLODE2", - "S_CYBRAKDEMONMISSILE_EXPLODE3", - - "S_CYBRAKDEMONFLAMESHOT_FLY1", - "S_CYBRAKDEMONFLAMESHOT_FLY2", - "S_CYBRAKDEMONFLAMESHOT_FLY3", - "S_CYBRAKDEMONFLAMESHOT_DIE", - - "S_CYBRAKDEMONFLAMEREST", - - "S_CYBRAKDEMONELECTRICBARRIER_INIT1", - "S_CYBRAKDEMONELECTRICBARRIER_INIT2", - "S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND", - "S_CYBRAKDEMONELECTRICBARRIER1", - "S_CYBRAKDEMONELECTRICBARRIER2", - "S_CYBRAKDEMONELECTRICBARRIER3", - "S_CYBRAKDEMONELECTRICBARRIER4", - "S_CYBRAKDEMONELECTRICBARRIER5", - "S_CYBRAKDEMONELECTRICBARRIER6", - "S_CYBRAKDEMONELECTRICBARRIER7", - "S_CYBRAKDEMONELECTRICBARRIER8", - "S_CYBRAKDEMONELECTRICBARRIER9", - "S_CYBRAKDEMONELECTRICBARRIER10", - "S_CYBRAKDEMONELECTRICBARRIER11", - "S_CYBRAKDEMONELECTRICBARRIER12", - "S_CYBRAKDEMONELECTRICBARRIER13", - "S_CYBRAKDEMONELECTRICBARRIER14", - "S_CYBRAKDEMONELECTRICBARRIER15", - "S_CYBRAKDEMONELECTRICBARRIER16", - "S_CYBRAKDEMONELECTRICBARRIER17", - "S_CYBRAKDEMONELECTRICBARRIER18", - "S_CYBRAKDEMONELECTRICBARRIER19", - "S_CYBRAKDEMONELECTRICBARRIER20", - "S_CYBRAKDEMONELECTRICBARRIER21", - "S_CYBRAKDEMONELECTRICBARRIER22", - "S_CYBRAKDEMONELECTRICBARRIER23", - "S_CYBRAKDEMONELECTRICBARRIER24", - "S_CYBRAKDEMONELECTRICBARRIER_DIE1", - "S_CYBRAKDEMONELECTRICBARRIER_DIE2", - "S_CYBRAKDEMONELECTRICBARRIER_DIE3", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM2", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM3", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM4", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM5", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM6", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM7", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM8", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM9", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM10", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM11", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL", - "S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP", - "S_CYBRAKDEMONELECTRICBARRIER_REVIVE1", - "S_CYBRAKDEMONELECTRICBARRIER_REVIVE2", - "S_CYBRAKDEMONELECTRICBARRIER_REVIVE3", - - "S_CYBRAKDEMONTARGETRETICULE1", - "S_CYBRAKDEMONTARGETRETICULE2", - "S_CYBRAKDEMONTARGETRETICULE3", - "S_CYBRAKDEMONTARGETRETICULE4", - "S_CYBRAKDEMONTARGETRETICULE5", - "S_CYBRAKDEMONTARGETRETICULE6", - "S_CYBRAKDEMONTARGETRETICULE7", - "S_CYBRAKDEMONTARGETRETICULE8", - "S_CYBRAKDEMONTARGETRETICULE9", - "S_CYBRAKDEMONTARGETRETICULE10", - "S_CYBRAKDEMONTARGETRETICULE11", - "S_CYBRAKDEMONTARGETRETICULE12", - "S_CYBRAKDEMONTARGETRETICULE13", - "S_CYBRAKDEMONTARGETRETICULE14", - - "S_CYBRAKDEMONTARGETDOT", - - "S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1", - "S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2", - "S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3", - "S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4", - "S_CYBRAKDEMONNAPALMBOMBLARGE_DIE1", // Explode - "S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2", // Outer ring - "S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3", // Center - "S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4", // Sound - - "S_CYBRAKDEMONNAPALMBOMBSMALL", - "S_CYBRAKDEMONNAPALMBOMBSMALL_DIE1", // Explode - "S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2", // Outer ring - "S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3", // Inner ring - "S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4", // Center - "S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5", // Sound - - "S_CYBRAKDEMONNAPALMFLAME_FLY1", - "S_CYBRAKDEMONNAPALMFLAME_FLY2", - "S_CYBRAKDEMONNAPALMFLAME_FLY3", - "S_CYBRAKDEMONNAPALMFLAME_FLY4", - "S_CYBRAKDEMONNAPALMFLAME_FLY5", - "S_CYBRAKDEMONNAPALMFLAME_FLY6", - "S_CYBRAKDEMONNAPALMFLAME_DIE", - - "S_CYBRAKDEMONVILEEXPLOSION1", - "S_CYBRAKDEMONVILEEXPLOSION2", - "S_CYBRAKDEMONVILEEXPLOSION3", - - // Metal Sonic (Race) - "S_METALSONIC_RACE", - // Metal Sonic (Battle) - "S_METALSONIC_FLOAT", - "S_METALSONIC_VECTOR", - "S_METALSONIC_STUN", - "S_METALSONIC_RAISE", - "S_METALSONIC_GATHER", - "S_METALSONIC_DASH", - "S_METALSONIC_BOUNCE", - "S_METALSONIC_BADBOUNCE", - "S_METALSONIC_SHOOT", - "S_METALSONIC_PAIN", - "S_METALSONIC_DEATH1", - "S_METALSONIC_DEATH2", - "S_METALSONIC_DEATH3", - "S_METALSONIC_DEATH4", - "S_METALSONIC_FLEE1", - "S_METALSONIC_FLEE2", - - "S_MSSHIELD_F1", - "S_MSSHIELD_F2", - - // Ring - "S_RING", - - // Blue Sphere for special stages - "S_BLUESPHERE", - "S_BLUESPHEREBONUS", - "S_BLUESPHERESPARK", - - // Bomb Sphere - "S_BOMBSPHERE1", - "S_BOMBSPHERE2", - "S_BOMBSPHERE3", - "S_BOMBSPHERE4", - - // NiGHTS Chip - "S_NIGHTSCHIP", - "S_NIGHTSCHIPBONUS", - - // NiGHTS Star - "S_NIGHTSSTAR", - "S_NIGHTSSTARXMAS", - - // Gravity Wells for special stages - "S_GRAVWELLGREEN", - "S_GRAVWELLRED", - - // Individual Team Rings - "S_TEAMRING", - - // Special Stage Token - "S_TOKEN", - - // CTF Flags - "S_REDFLAG", - "S_BLUEFLAG", - - // Emblem - "S_EMBLEM1", - "S_EMBLEM2", - "S_EMBLEM3", - "S_EMBLEM4", - "S_EMBLEM5", - "S_EMBLEM6", - "S_EMBLEM7", - "S_EMBLEM8", - "S_EMBLEM9", - "S_EMBLEM10", - "S_EMBLEM11", - "S_EMBLEM12", - "S_EMBLEM13", - "S_EMBLEM14", - "S_EMBLEM15", - "S_EMBLEM16", - "S_EMBLEM17", - "S_EMBLEM18", - "S_EMBLEM19", - "S_EMBLEM20", - "S_EMBLEM21", - "S_EMBLEM22", - "S_EMBLEM23", - "S_EMBLEM24", - "S_EMBLEM25", - "S_EMBLEM26", - - // Chaos Emeralds - "S_CEMG1", - "S_CEMG2", - "S_CEMG3", - "S_CEMG4", - "S_CEMG5", - "S_CEMG6", - "S_CEMG7", - - // Emerald hunt shards - "S_SHRD1", - "S_SHRD2", - "S_SHRD3", - - // Bubble Source - "S_BUBBLES1", - "S_BUBBLES2", - "S_BUBBLES3", - "S_BUBBLES4", - - // Level End Sign - "S_SIGN", - "S_SIGNSPIN1", - "S_SIGNSPIN2", - "S_SIGNSPIN3", - "S_SIGNSPIN4", - "S_SIGNSPIN5", - "S_SIGNSPIN6", - "S_SIGNPLAYER", - "S_SIGNSLOW", - "S_SIGNSTOP", - "S_SIGNBOARD", - "S_EGGMANSIGN", - "S_CLEARSIGN", - - // Spike Ball - "S_SPIKEBALL1", - "S_SPIKEBALL2", - "S_SPIKEBALL3", - "S_SPIKEBALL4", - "S_SPIKEBALL5", - "S_SPIKEBALL6", - "S_SPIKEBALL7", - "S_SPIKEBALL8", - - // Elemental Shield's Spawn - "S_SPINFIRE1", - "S_SPINFIRE2", - "S_SPINFIRE3", - "S_SPINFIRE4", - "S_SPINFIRE5", - "S_SPINFIRE6", - - "S_TEAM_SPINFIRE1", - "S_TEAM_SPINFIRE2", - "S_TEAM_SPINFIRE3", - "S_TEAM_SPINFIRE4", - "S_TEAM_SPINFIRE5", - "S_TEAM_SPINFIRE6", - - // Spikes - "S_SPIKE1", - "S_SPIKE2", - "S_SPIKE3", - "S_SPIKE4", - "S_SPIKE5", - "S_SPIKE6", - "S_SPIKED1", - "S_SPIKED2", - - // Wall spikes - "S_WALLSPIKE1", - "S_WALLSPIKE2", - "S_WALLSPIKE3", - "S_WALLSPIKE4", - "S_WALLSPIKE5", - "S_WALLSPIKE6", - "S_WALLSPIKEBASE", - "S_WALLSPIKED1", - "S_WALLSPIKED2", - - // Starpost - "S_STARPOST_IDLE", - "S_STARPOST_FLASH", - "S_STARPOST_STARTSPIN", - "S_STARPOST_SPIN", - "S_STARPOST_ENDSPIN", - - // Big floating mine - "S_BIGMINE_IDLE", - "S_BIGMINE_ALERT1", - "S_BIGMINE_ALERT2", - "S_BIGMINE_ALERT3", - "S_BIGMINE_SET1", - "S_BIGMINE_SET2", - "S_BIGMINE_SET3", - "S_BIGMINE_BLAST1", - "S_BIGMINE_BLAST2", - "S_BIGMINE_BLAST3", - "S_BIGMINE_BLAST4", - "S_BIGMINE_BLAST5", - - // Cannon Launcher - "S_CANNONLAUNCHER1", - "S_CANNONLAUNCHER2", - "S_CANNONLAUNCHER3", - - // Monitor Miscellany - "S_BOXSPARKLE1", - "S_BOXSPARKLE2", - "S_BOXSPARKLE3", - "S_BOXSPARKLE4", - - "S_BOX_FLICKER", - "S_BOX_POP1", - "S_BOX_POP2", - - "S_GOLDBOX_FLICKER", - "S_GOLDBOX_OFF1", - "S_GOLDBOX_OFF2", - "S_GOLDBOX_OFF3", - "S_GOLDBOX_OFF4", - "S_GOLDBOX_OFF5", - "S_GOLDBOX_OFF6", - "S_GOLDBOX_OFF7", - - // Monitor States (one per box) - "S_MYSTERY_BOX", - "S_RING_BOX", - "S_PITY_BOX", - "S_ATTRACT_BOX", - "S_FORCE_BOX", - "S_ARMAGEDDON_BOX", - "S_WHIRLWIND_BOX", - "S_ELEMENTAL_BOX", - "S_SNEAKERS_BOX", - "S_INVULN_BOX", - "S_1UP_BOX", - "S_EGGMAN_BOX", - "S_MIXUP_BOX", - "S_GRAVITY_BOX", - "S_RECYCLER_BOX", - "S_SCORE1K_BOX", - "S_SCORE10K_BOX", - "S_FLAMEAURA_BOX", - "S_BUBBLEWRAP_BOX", - "S_THUNDERCOIN_BOX", - - // Gold Repeat Monitor States (one per box) - "S_PITY_GOLDBOX", - "S_ATTRACT_GOLDBOX", - "S_FORCE_GOLDBOX", - "S_ARMAGEDDON_GOLDBOX", - "S_WHIRLWIND_GOLDBOX", - "S_ELEMENTAL_GOLDBOX", - "S_SNEAKERS_GOLDBOX", - "S_INVULN_GOLDBOX", - "S_EGGMAN_GOLDBOX", - "S_GRAVITY_GOLDBOX", - "S_FLAMEAURA_GOLDBOX", - "S_BUBBLEWRAP_GOLDBOX", - "S_THUNDERCOIN_GOLDBOX", - - // Team Ring Boxes (these are special) - "S_RING_REDBOX1", - "S_RING_REDBOX2", - "S_REDBOX_POP1", - "S_REDBOX_POP2", - - "S_RING_BLUEBOX1", - "S_RING_BLUEBOX2", - "S_BLUEBOX_POP1", - "S_BLUEBOX_POP2", - - // Box Icons -- 2 states each, animation and action - "S_RING_ICON1", - "S_RING_ICON2", - - "S_PITY_ICON1", - "S_PITY_ICON2", - - "S_ATTRACT_ICON1", - "S_ATTRACT_ICON2", - - "S_FORCE_ICON1", - "S_FORCE_ICON2", - - "S_ARMAGEDDON_ICON1", - "S_ARMAGEDDON_ICON2", - - "S_WHIRLWIND_ICON1", - "S_WHIRLWIND_ICON2", - - "S_ELEMENTAL_ICON1", - "S_ELEMENTAL_ICON2", - - "S_SNEAKERS_ICON1", - "S_SNEAKERS_ICON2", - - "S_INVULN_ICON1", - "S_INVULN_ICON2", - - "S_1UP_ICON1", - "S_1UP_ICON2", - - "S_EGGMAN_ICON1", - "S_EGGMAN_ICON2", - - "S_MIXUP_ICON1", - "S_MIXUP_ICON2", - - "S_GRAVITY_ICON1", - "S_GRAVITY_ICON2", - - "S_RECYCLER_ICON1", - "S_RECYCLER_ICON2", - - "S_SCORE1K_ICON1", - "S_SCORE1K_ICON2", - - "S_SCORE10K_ICON1", - "S_SCORE10K_ICON2", - - "S_FLAMEAURA_ICON1", - "S_FLAMEAURA_ICON2", - - "S_BUBBLEWRAP_ICON1", - "S_BUBBLEWRAP_ICON2", - - "S_THUNDERCOIN_ICON1", - "S_THUNDERCOIN_ICON2", - - // --- - - "S_ROCKET", - - "S_LASER", - "S_LASER2", - "S_LASERFLASH", - - "S_LASERFLAME1", - "S_LASERFLAME2", - "S_LASERFLAME3", - "S_LASERFLAME4", - "S_LASERFLAME5", - - "S_TORPEDO", - - "S_ENERGYBALL1", - "S_ENERGYBALL2", - - // Skim Mine, also used by Jetty-Syn bomber - "S_MINE1", - "S_MINE_BOOM1", - "S_MINE_BOOM2", - "S_MINE_BOOM3", - "S_MINE_BOOM4", - - // Jetty-Syn Bullet - "S_JETBULLET1", - "S_JETBULLET2", - - "S_TURRETLASER", - "S_TURRETLASEREXPLODE1", - "S_TURRETLASEREXPLODE2", - - // Cannonball - "S_CANNONBALL1", - - // Arrow - "S_ARROW", - "S_ARROWBONK", - - // Glaregoyle Demon fire - "S_DEMONFIRE", - - // The letter - "S_LETTER", - - // Tutorial Scenery - "S_TUTORIALLEAF1", - "S_TUTORIALLEAF2", - "S_TUTORIALLEAF3", - "S_TUTORIALLEAF4", - "S_TUTORIALLEAF5", - "S_TUTORIALLEAF6", - "S_TUTORIALLEAF7", - "S_TUTORIALLEAF8", - "S_TUTORIALLEAF9", - "S_TUTORIALLEAF10", - "S_TUTORIALLEAF11", - "S_TUTORIALLEAF12", - "S_TUTORIALLEAF13", - "S_TUTORIALLEAF14", - "S_TUTORIALLEAF15", - "S_TUTORIALLEAF16", - "S_TUTORIALFLOWER1", - "S_TUTORIALFLOWER2", - "S_TUTORIALFLOWER3", - "S_TUTORIALFLOWER4", - "S_TUTORIALFLOWER5", - "S_TUTORIALFLOWER6", - "S_TUTORIALFLOWER7", - "S_TUTORIALFLOWER8", - "S_TUTORIALFLOWER9", - "S_TUTORIALFLOWER10", - "S_TUTORIALFLOWER11", - "S_TUTORIALFLOWER12", - "S_TUTORIALFLOWER13", - "S_TUTORIALFLOWER14", - "S_TUTORIALFLOWER15", - "S_TUTORIALFLOWER16", - "S_TUTORIALFLOWERF1", - "S_TUTORIALFLOWERF2", - "S_TUTORIALFLOWERF3", - "S_TUTORIALFLOWERF4", - "S_TUTORIALFLOWERF5", - "S_TUTORIALFLOWERF6", - "S_TUTORIALFLOWERF7", - "S_TUTORIALFLOWERF8", - "S_TUTORIALFLOWERF9", - "S_TUTORIALFLOWERF10", - "S_TUTORIALFLOWERF11", - "S_TUTORIALFLOWERF12", - "S_TUTORIALFLOWERF13", - "S_TUTORIALFLOWERF14", - "S_TUTORIALFLOWERF15", - "S_TUTORIALFLOWERF16", - - // GFZ flowers - "S_GFZFLOWERA", - "S_GFZFLOWERB", - "S_GFZFLOWERC", - - "S_BLUEBERRYBUSH", - "S_BERRYBUSH", - "S_BUSH", - - // Trees (both GFZ and misc) - "S_GFZTREE", - "S_GFZBERRYTREE", - "S_GFZCHERRYTREE", - "S_CHECKERTREE", - "S_CHECKERSUNSETTREE", - "S_FHZTREE", // Frozen Hillside - "S_FHZPINKTREE", - "S_POLYGONTREE", - "S_BUSHTREE", - "S_BUSHREDTREE", - "S_SPRINGTREE", - - // THZ flowers - "S_THZFLOWERA", // THZ1 Steam flower - "S_THZFLOWERB", // THZ1 Spin flower (red) - "S_THZFLOWERC", // THZ1 Spin flower (yellow) - - // THZ Steam Whistle tree/bush - "S_THZTREE", - "S_THZTREEBRANCH1", - "S_THZTREEBRANCH2", - "S_THZTREEBRANCH3", - "S_THZTREEBRANCH4", - "S_THZTREEBRANCH5", - "S_THZTREEBRANCH6", - "S_THZTREEBRANCH7", - "S_THZTREEBRANCH8", - "S_THZTREEBRANCH9", - "S_THZTREEBRANCH10", - "S_THZTREEBRANCH11", - "S_THZTREEBRANCH12", - "S_THZTREEBRANCH13", - - // THZ Alarm - "S_ALARM1", - - // Deep Sea Gargoyle - "S_GARGOYLE", - "S_BIGGARGOYLE", - - // DSZ Seaweed - "S_SEAWEED1", - "S_SEAWEED2", - "S_SEAWEED3", - "S_SEAWEED4", - "S_SEAWEED5", - "S_SEAWEED6", - - // Dripping Water - "S_DRIPA1", - "S_DRIPA2", - "S_DRIPA3", - "S_DRIPA4", - "S_DRIPB1", - "S_DRIPC1", - "S_DRIPC2", - - // Coral - "S_CORAL1", - "S_CORAL2", - "S_CORAL3", - "S_CORAL4", - "S_CORAL5", - - // Blue Crystal - "S_BLUECRYSTAL1", - - // Kelp, - "S_KELP", - - // Animated algae - "S_ANIMALGAETOP1", - "S_ANIMALGAETOP2", - "S_ANIMALGAESEG", - - // DSZ Stalagmites - "S_DSZSTALAGMITE", - "S_DSZ2STALAGMITE", - - // DSZ Light beam - "S_LIGHTBEAM1", - "S_LIGHTBEAM2", - "S_LIGHTBEAM3", - "S_LIGHTBEAM4", - "S_LIGHTBEAM5", - "S_LIGHTBEAM6", - "S_LIGHTBEAM7", - "S_LIGHTBEAM8", - "S_LIGHTBEAM9", - "S_LIGHTBEAM10", - "S_LIGHTBEAM11", - "S_LIGHTBEAM12", - - // CEZ Chain - "S_CEZCHAIN", - - // Flame - "S_FLAME", - "S_FLAMEPARTICLE", - "S_FLAMEREST", - - // Eggman Statue - "S_EGGSTATUE1", - - // CEZ hidden sling - "S_SLING1", - "S_SLING2", - - // CEZ maces and chains - "S_SMALLMACECHAIN", - "S_BIGMACECHAIN", - "S_SMALLMACE", - "S_BIGMACE", - "S_SMALLGRABCHAIN", - "S_BIGGRABCHAIN", - - // Blue spring on a ball - "S_BLUESPRINGBALL", - "S_BLUESPRINGBALL2", - "S_BLUESPRINGBALL3", - "S_BLUESPRINGBALL4", - "S_BLUESPRINGBALL5", - - // Yellow spring on a ball - "S_YELLOWSPRINGBALL", - "S_YELLOWSPRINGBALL2", - "S_YELLOWSPRINGBALL3", - "S_YELLOWSPRINGBALL4", - "S_YELLOWSPRINGBALL5", - - // Red spring on a ball - "S_REDSPRINGBALL", - "S_REDSPRINGBALL2", - "S_REDSPRINGBALL3", - "S_REDSPRINGBALL4", - "S_REDSPRINGBALL5", - - // Small Firebar - "S_SMALLFIREBAR1", - "S_SMALLFIREBAR2", - "S_SMALLFIREBAR3", - "S_SMALLFIREBAR4", - "S_SMALLFIREBAR5", - "S_SMALLFIREBAR6", - "S_SMALLFIREBAR7", - "S_SMALLFIREBAR8", - "S_SMALLFIREBAR9", - "S_SMALLFIREBAR10", - "S_SMALLFIREBAR11", - "S_SMALLFIREBAR12", - "S_SMALLFIREBAR13", - "S_SMALLFIREBAR14", - "S_SMALLFIREBAR15", - "S_SMALLFIREBAR16", - - // Big Firebar - "S_BIGFIREBAR1", - "S_BIGFIREBAR2", - "S_BIGFIREBAR3", - "S_BIGFIREBAR4", - "S_BIGFIREBAR5", - "S_BIGFIREBAR6", - "S_BIGFIREBAR7", - "S_BIGFIREBAR8", - "S_BIGFIREBAR9", - "S_BIGFIREBAR10", - "S_BIGFIREBAR11", - "S_BIGFIREBAR12", - "S_BIGFIREBAR13", - "S_BIGFIREBAR14", - "S_BIGFIREBAR15", - "S_BIGFIREBAR16", - - "S_CEZFLOWER", - "S_CEZPOLE", - "S_CEZBANNER1", - "S_CEZBANNER2", - "S_PINETREE", - "S_CEZBUSH1", - "S_CEZBUSH2", - "S_CANDLE", - "S_CANDLEPRICKET", - "S_FLAMEHOLDER", - "S_FIRETORCH", - "S_WAVINGFLAG", - "S_WAVINGFLAGSEG1", - "S_WAVINGFLAGSEG2", - "S_CRAWLASTATUE", - "S_FACESTABBERSTATUE", - "S_SUSPICIOUSFACESTABBERSTATUE_WAIT", - "S_SUSPICIOUSFACESTABBERSTATUE_BURST1", - "S_SUSPICIOUSFACESTABBERSTATUE_BURST2", - "S_BRAMBLES", - - // Big Tumbleweed - "S_BIGTUMBLEWEED", - "S_BIGTUMBLEWEED_ROLL1", - "S_BIGTUMBLEWEED_ROLL2", - "S_BIGTUMBLEWEED_ROLL3", - "S_BIGTUMBLEWEED_ROLL4", - "S_BIGTUMBLEWEED_ROLL5", - "S_BIGTUMBLEWEED_ROLL6", - "S_BIGTUMBLEWEED_ROLL7", - "S_BIGTUMBLEWEED_ROLL8", - - // Little Tumbleweed - "S_LITTLETUMBLEWEED", - "S_LITTLETUMBLEWEED_ROLL1", - "S_LITTLETUMBLEWEED_ROLL2", - "S_LITTLETUMBLEWEED_ROLL3", - "S_LITTLETUMBLEWEED_ROLL4", - "S_LITTLETUMBLEWEED_ROLL5", - "S_LITTLETUMBLEWEED_ROLL6", - "S_LITTLETUMBLEWEED_ROLL7", - "S_LITTLETUMBLEWEED_ROLL8", - - // Cacti - "S_CACTI1", - "S_CACTI2", - "S_CACTI3", - "S_CACTI4", - "S_CACTI5", - "S_CACTI6", - "S_CACTI7", - "S_CACTI8", - "S_CACTI9", - "S_CACTI10", - "S_CACTI11", - "S_CACTITINYSEG", - "S_CACTISMALLSEG", - - // Warning signs - "S_ARIDSIGN_CAUTION", - "S_ARIDSIGN_CACTI", - "S_ARIDSIGN_SHARPTURN", - - // Oil lamp - "S_OILLAMP", - "S_OILLAMPFLARE", - - // TNT barrel - "S_TNTBARREL_STND1", - "S_TNTBARREL_EXPL1", - "S_TNTBARREL_EXPL2", - "S_TNTBARREL_EXPL3", - "S_TNTBARREL_EXPL4", - "S_TNTBARREL_EXPL5", - "S_TNTBARREL_EXPL6", - "S_TNTBARREL_EXPL7", - "S_TNTBARREL_FLYING", - - // TNT proximity shell - "S_PROXIMITY_TNT", - "S_PROXIMITY_TNT_TRIGGER1", - "S_PROXIMITY_TNT_TRIGGER2", - "S_PROXIMITY_TNT_TRIGGER3", - "S_PROXIMITY_TNT_TRIGGER4", - "S_PROXIMITY_TNT_TRIGGER5", - "S_PROXIMITY_TNT_TRIGGER6", - "S_PROXIMITY_TNT_TRIGGER7", - "S_PROXIMITY_TNT_TRIGGER8", - "S_PROXIMITY_TNT_TRIGGER9", - "S_PROXIMITY_TNT_TRIGGER10", - "S_PROXIMITY_TNT_TRIGGER11", - "S_PROXIMITY_TNT_TRIGGER12", - "S_PROXIMITY_TNT_TRIGGER13", - "S_PROXIMITY_TNT_TRIGGER14", - "S_PROXIMITY_TNT_TRIGGER15", - "S_PROXIMITY_TNT_TRIGGER16", - "S_PROXIMITY_TNT_TRIGGER17", - "S_PROXIMITY_TNT_TRIGGER18", - "S_PROXIMITY_TNT_TRIGGER19", - "S_PROXIMITY_TNT_TRIGGER20", - "S_PROXIMITY_TNT_TRIGGER21", - "S_PROXIMITY_TNT_TRIGGER22", - "S_PROXIMITY_TNT_TRIGGER23", - - // Dust devil - "S_DUSTDEVIL", - "S_DUSTLAYER1", - "S_DUSTLAYER2", - "S_DUSTLAYER3", - "S_DUSTLAYER4", - "S_DUSTLAYER5", - "S_ARIDDUST1", - "S_ARIDDUST2", - "S_ARIDDUST3", - - // Minecart - "S_MINECART_IDLE", - "S_MINECART_DTH1", - "S_MINECARTEND", - "S_MINECARTSEG_FRONT", - "S_MINECARTSEG_BACK", - "S_MINECARTSEG_LEFT", - "S_MINECARTSEG_RIGHT", - "S_MINECARTSIDEMARK1", - "S_MINECARTSIDEMARK2", - "S_MINECARTSPARK", - - // Saloon door - "S_SALOONDOOR", - "S_SALOONDOORCENTER", - - // Train cameo - "S_TRAINCAMEOSPAWNER_1", - "S_TRAINCAMEOSPAWNER_2", - "S_TRAINCAMEOSPAWNER_3", - "S_TRAINCAMEOSPAWNER_4", - "S_TRAINCAMEOSPAWNER_5", - "S_TRAINPUFFMAKER", - - // Train - "S_TRAINDUST", - "S_TRAINSTEAM", - - // Flame jet - "S_FLAMEJETSTND", - "S_FLAMEJETSTART", - "S_FLAMEJETSTOP", - "S_FLAMEJETFLAME1", - "S_FLAMEJETFLAME2", - "S_FLAMEJETFLAME3", - "S_FLAMEJETFLAME4", - "S_FLAMEJETFLAME5", - "S_FLAMEJETFLAME6", - "S_FLAMEJETFLAME7", - "S_FLAMEJETFLAME8", - "S_FLAMEJETFLAME9", - - // Spinning flame jets - "S_FJSPINAXISA1", // Counter-clockwise - "S_FJSPINAXISA2", - "S_FJSPINAXISB1", // Clockwise - "S_FJSPINAXISB2", - - // Blade's flame - "S_FLAMEJETFLAMEB1", - "S_FLAMEJETFLAMEB2", - "S_FLAMEJETFLAMEB3", - - // Lavafall - "S_LAVAFALL_DORMANT", - "S_LAVAFALL_TELL", - "S_LAVAFALL_SHOOT", - "S_LAVAFALL_LAVA1", - "S_LAVAFALL_LAVA2", - "S_LAVAFALL_LAVA3", - "S_LAVAFALLROCK", - - // Rollout Rock - "S_ROLLOUTSPAWN", - "S_ROLLOUTROCK", - - // RVZ scenery - "S_BIGFERNLEAF", - "S_BIGFERN1", - "S_BIGFERN2", - "S_JUNGLEPALM", - "S_TORCHFLOWER", - "S_WALLVINE_LONG", - "S_WALLVINE_SHORT", - - // Glaregoyles - "S_GLAREGOYLE", - "S_GLAREGOYLE_CHARGE", - "S_GLAREGOYLE_BLINK", - "S_GLAREGOYLE_HOLD", - "S_GLAREGOYLE_FIRE", - "S_GLAREGOYLE_LOOP", - "S_GLAREGOYLE_COOLDOWN", - "S_GLAREGOYLEUP", - "S_GLAREGOYLEUP_CHARGE", - "S_GLAREGOYLEUP_BLINK", - "S_GLAREGOYLEUP_HOLD", - "S_GLAREGOYLEUP_FIRE", - "S_GLAREGOYLEUP_LOOP", - "S_GLAREGOYLEUP_COOLDOWN", - "S_GLAREGOYLEDOWN", - "S_GLAREGOYLEDOWN_CHARGE", - "S_GLAREGOYLEDOWN_BLINK", - "S_GLAREGOYLEDOWN_HOLD", - "S_GLAREGOYLEDOWN_FIRE", - "S_GLAREGOYLEDOWN_LOOP", - "S_GLAREGOYLEDOWN_COOLDOWN", - "S_GLAREGOYLELONG", - "S_GLAREGOYLELONG_CHARGE", - "S_GLAREGOYLELONG_BLINK", - "S_GLAREGOYLELONG_HOLD", - "S_GLAREGOYLELONG_FIRE", - "S_GLAREGOYLELONG_LOOP", - "S_GLAREGOYLELONG_COOLDOWN", - - // ATZ's Red Crystal/Target - "S_TARGET_IDLE", - "S_TARGET_HIT1", - "S_TARGET_HIT2", - "S_TARGET_RESPAWN", - "S_TARGET_ALLDONE", - - // ATZ's green flame - "S_GREENFLAME", - - // ATZ Blue Gargoyle - "S_BLUEGARGOYLE", - - // Stalagmites - "S_STG0", - "S_STG1", - "S_STG2", - "S_STG3", - "S_STG4", - "S_STG5", - "S_STG6", - "S_STG7", - "S_STG8", - "S_STG9", - - // Xmas-specific stuff - "S_XMASPOLE", - "S_CANDYCANE", - "S_SNOWMAN", // normal - "S_SNOWMANHAT", // with hat + scarf - "S_LAMPPOST1", // normal - "S_LAMPPOST2", // with snow - "S_HANGSTAR", - "S_MISTLETOE", - // Xmas GFZ bushes - "S_XMASBLUEBERRYBUSH", - "S_XMASBERRYBUSH", - "S_XMASBUSH", - // FHZ - "S_FHZICE1", - "S_FHZICE2", - "S_ROSY_IDLE1", - "S_ROSY_IDLE2", - "S_ROSY_IDLE3", - "S_ROSY_IDLE4", - "S_ROSY_JUMP", - "S_ROSY_WALK", - "S_ROSY_HUG", - "S_ROSY_PAIN", - "S_ROSY_STND", - "S_ROSY_UNHAPPY", - - // Halloween Scenery - // Pumpkins - "S_JACKO1", - "S_JACKO1OVERLAY_1", - "S_JACKO1OVERLAY_2", - "S_JACKO1OVERLAY_3", - "S_JACKO1OVERLAY_4", - "S_JACKO2", - "S_JACKO2OVERLAY_1", - "S_JACKO2OVERLAY_2", - "S_JACKO2OVERLAY_3", - "S_JACKO2OVERLAY_4", - "S_JACKO3", - "S_JACKO3OVERLAY_1", - "S_JACKO3OVERLAY_2", - "S_JACKO3OVERLAY_3", - "S_JACKO3OVERLAY_4", - // Dr Seuss Trees - "S_HHZTREE_TOP", - "S_HHZTREE_TRUNK", - "S_HHZTREE_LEAF", - // Mushroom - "S_HHZSHROOM_1", - "S_HHZSHROOM_2", - "S_HHZSHROOM_3", - "S_HHZSHROOM_4", - "S_HHZSHROOM_5", - "S_HHZSHROOM_6", - "S_HHZSHROOM_7", - "S_HHZSHROOM_8", - "S_HHZSHROOM_9", - "S_HHZSHROOM_10", - "S_HHZSHROOM_11", - "S_HHZSHROOM_12", - "S_HHZSHROOM_13", - "S_HHZSHROOM_14", - "S_HHZSHROOM_15", - "S_HHZSHROOM_16", - // Misc - "S_HHZGRASS", - "S_HHZTENT1", - "S_HHZTENT2", - "S_HHZSTALAGMITE_TALL", - "S_HHZSTALAGMITE_SHORT", - - // Botanic Serenity's loads of scenery states - "S_BSZTALLFLOWER_RED", - "S_BSZTALLFLOWER_PURPLE", - "S_BSZTALLFLOWER_BLUE", - "S_BSZTALLFLOWER_CYAN", - "S_BSZTALLFLOWER_YELLOW", - "S_BSZTALLFLOWER_ORANGE", - "S_BSZFLOWER_RED", - "S_BSZFLOWER_PURPLE", - "S_BSZFLOWER_BLUE", - "S_BSZFLOWER_CYAN", - "S_BSZFLOWER_YELLOW", - "S_BSZFLOWER_ORANGE", - "S_BSZSHORTFLOWER_RED", - "S_BSZSHORTFLOWER_PURPLE", - "S_BSZSHORTFLOWER_BLUE", - "S_BSZSHORTFLOWER_CYAN", - "S_BSZSHORTFLOWER_YELLOW", - "S_BSZSHORTFLOWER_ORANGE", - "S_BSZTULIP_RED", - "S_BSZTULIP_PURPLE", - "S_BSZTULIP_BLUE", - "S_BSZTULIP_CYAN", - "S_BSZTULIP_YELLOW", - "S_BSZTULIP_ORANGE", - "S_BSZCLUSTER_RED", - "S_BSZCLUSTER_PURPLE", - "S_BSZCLUSTER_BLUE", - "S_BSZCLUSTER_CYAN", - "S_BSZCLUSTER_YELLOW", - "S_BSZCLUSTER_ORANGE", - "S_BSZBUSH_RED", - "S_BSZBUSH_PURPLE", - "S_BSZBUSH_BLUE", - "S_BSZBUSH_CYAN", - "S_BSZBUSH_YELLOW", - "S_BSZBUSH_ORANGE", - "S_BSZVINE_RED", - "S_BSZVINE_PURPLE", - "S_BSZVINE_BLUE", - "S_BSZVINE_CYAN", - "S_BSZVINE_YELLOW", - "S_BSZVINE_ORANGE", - "S_BSZSHRUB", - "S_BSZCLOVER", - "S_BIG_PALMTREE_TRUNK", - "S_BIG_PALMTREE_TOP", - "S_PALMTREE_TRUNK", - "S_PALMTREE_TOP", - - "S_DBALL1", - "S_DBALL2", - "S_DBALL3", - "S_DBALL4", - "S_DBALL5", - "S_DBALL6", - "S_EGGSTATUE2", - - // Shield Orb - "S_ARMA1", - "S_ARMA2", - "S_ARMA3", - "S_ARMA4", - "S_ARMA5", - "S_ARMA6", - "S_ARMA7", - "S_ARMA8", - "S_ARMA9", - "S_ARMA10", - "S_ARMA11", - "S_ARMA12", - "S_ARMA13", - "S_ARMA14", - "S_ARMA15", - "S_ARMA16", - - "S_ARMF1", - "S_ARMF2", - "S_ARMF3", - "S_ARMF4", - "S_ARMF5", - "S_ARMF6", - "S_ARMF7", - "S_ARMF8", - "S_ARMF9", - "S_ARMF10", - "S_ARMF11", - "S_ARMF12", - "S_ARMF13", - "S_ARMF14", - "S_ARMF15", - "S_ARMF16", - "S_ARMF17", - "S_ARMF18", - "S_ARMF19", - "S_ARMF20", - "S_ARMF21", - "S_ARMF22", - "S_ARMF23", - "S_ARMF24", - "S_ARMF25", - "S_ARMF26", - "S_ARMF27", - "S_ARMF28", - "S_ARMF29", - "S_ARMF30", - "S_ARMF31", - "S_ARMF32", - - "S_ARMB1", - "S_ARMB2", - "S_ARMB3", - "S_ARMB4", - "S_ARMB5", - "S_ARMB6", - "S_ARMB7", - "S_ARMB8", - "S_ARMB9", - "S_ARMB10", - "S_ARMB11", - "S_ARMB12", - "S_ARMB13", - "S_ARMB14", - "S_ARMB15", - "S_ARMB16", - "S_ARMB17", - "S_ARMB18", - "S_ARMB19", - "S_ARMB20", - "S_ARMB21", - "S_ARMB22", - "S_ARMB23", - "S_ARMB24", - "S_ARMB25", - "S_ARMB26", - "S_ARMB27", - "S_ARMB28", - "S_ARMB29", - "S_ARMB30", - "S_ARMB31", - "S_ARMB32", - - "S_WIND1", - "S_WIND2", - "S_WIND3", - "S_WIND4", - "S_WIND5", - "S_WIND6", - "S_WIND7", - "S_WIND8", - - "S_MAGN1", - "S_MAGN2", - "S_MAGN3", - "S_MAGN4", - "S_MAGN5", - "S_MAGN6", - "S_MAGN7", - "S_MAGN8", - "S_MAGN9", - "S_MAGN10", - "S_MAGN11", - "S_MAGN12", - "S_MAGN13", - - "S_FORC1", - "S_FORC2", - "S_FORC3", - "S_FORC4", - "S_FORC5", - "S_FORC6", - "S_FORC7", - "S_FORC8", - "S_FORC9", - "S_FORC10", - - "S_FORC11", - "S_FORC12", - "S_FORC13", - "S_FORC14", - "S_FORC15", - "S_FORC16", - "S_FORC17", - "S_FORC18", - "S_FORC19", - "S_FORC20", - - "S_FORC21", - - "S_ELEM1", - "S_ELEM2", - "S_ELEM3", - "S_ELEM4", - "S_ELEM5", - "S_ELEM6", - "S_ELEM7", - "S_ELEM8", - "S_ELEM9", - "S_ELEM10", - "S_ELEM11", - "S_ELEM12", - - "S_ELEM13", - "S_ELEM14", - - "S_ELEMF1", - "S_ELEMF2", - "S_ELEMF3", - "S_ELEMF4", - "S_ELEMF5", - "S_ELEMF6", - "S_ELEMF7", - "S_ELEMF8", - "S_ELEMF9", - "S_ELEMF10", - - "S_PITY1", - "S_PITY2", - "S_PITY3", - "S_PITY4", - "S_PITY5", - "S_PITY6", - "S_PITY7", - "S_PITY8", - "S_PITY9", - "S_PITY10", - "S_PITY11", - "S_PITY12", - - "S_FIRS1", - "S_FIRS2", - "S_FIRS3", - "S_FIRS4", - "S_FIRS5", - "S_FIRS6", - "S_FIRS7", - "S_FIRS8", - "S_FIRS9", - - "S_FIRS10", - "S_FIRS11", - - "S_FIRSB1", - "S_FIRSB2", - "S_FIRSB3", - "S_FIRSB4", - "S_FIRSB5", - "S_FIRSB6", - "S_FIRSB7", - "S_FIRSB8", - "S_FIRSB9", - - "S_FIRSB10", - - "S_BUBS1", - "S_BUBS2", - "S_BUBS3", - "S_BUBS4", - "S_BUBS5", - "S_BUBS6", - "S_BUBS7", - "S_BUBS8", - "S_BUBS9", - - "S_BUBS10", - "S_BUBS11", - - "S_BUBSB1", - "S_BUBSB2", - "S_BUBSB3", - "S_BUBSB4", - - "S_BUBSB5", - "S_BUBSB6", - - "S_ZAPS1", - "S_ZAPS2", - "S_ZAPS3", - "S_ZAPS4", - "S_ZAPS5", - "S_ZAPS6", - "S_ZAPS7", - "S_ZAPS8", - "S_ZAPS9", - "S_ZAPS10", - "S_ZAPS11", - "S_ZAPS12", - "S_ZAPS13", // blank frame - "S_ZAPS14", - "S_ZAPS15", - "S_ZAPS16", - - "S_ZAPSB1", // blank frame - "S_ZAPSB2", - "S_ZAPSB3", - "S_ZAPSB4", - "S_ZAPSB5", - "S_ZAPSB6", - "S_ZAPSB7", - "S_ZAPSB8", - "S_ZAPSB9", - "S_ZAPSB10", - "S_ZAPSB11", // blank frame - - //Thunder spark - "S_THUNDERCOIN_SPARK", - - // Invincibility Sparkles - "S_IVSP", - - // Super Sonic Spark - "S_SSPK1", - "S_SSPK2", - "S_SSPK3", - "S_SSPK4", - "S_SSPK5", - - // Flicky-sized bubble - "S_FLICKY_BUBBLE", - - // Bluebird - "S_FLICKY_01_OUT", - "S_FLICKY_01_FLAP1", - "S_FLICKY_01_FLAP2", - "S_FLICKY_01_FLAP3", - "S_FLICKY_01_STAND", - "S_FLICKY_01_CENTER", - - // Rabbit - "S_FLICKY_02_OUT", - "S_FLICKY_02_AIM", - "S_FLICKY_02_HOP", - "S_FLICKY_02_UP", - "S_FLICKY_02_DOWN", - "S_FLICKY_02_STAND", - "S_FLICKY_02_CENTER", - - // Chicken - "S_FLICKY_03_OUT", - "S_FLICKY_03_AIM", - "S_FLICKY_03_HOP", - "S_FLICKY_03_UP", - "S_FLICKY_03_FLAP1", - "S_FLICKY_03_FLAP2", - "S_FLICKY_03_STAND", - "S_FLICKY_03_CENTER", - - // Seal - "S_FLICKY_04_OUT", - "S_FLICKY_04_AIM", - "S_FLICKY_04_HOP", - "S_FLICKY_04_UP", - "S_FLICKY_04_DOWN", - "S_FLICKY_04_SWIM1", - "S_FLICKY_04_SWIM2", - "S_FLICKY_04_SWIM3", - "S_FLICKY_04_SWIM4", - "S_FLICKY_04_STAND", - "S_FLICKY_04_CENTER", - - // Pig - "S_FLICKY_05_OUT", - "S_FLICKY_05_AIM", - "S_FLICKY_05_HOP", - "S_FLICKY_05_UP", - "S_FLICKY_05_DOWN", - "S_FLICKY_05_STAND", - "S_FLICKY_05_CENTER", - - // Chipmunk - "S_FLICKY_06_OUT", - "S_FLICKY_06_AIM", - "S_FLICKY_06_HOP", - "S_FLICKY_06_UP", - "S_FLICKY_06_DOWN", - "S_FLICKY_06_STAND", - "S_FLICKY_06_CENTER", - - // Penguin - "S_FLICKY_07_OUT", - "S_FLICKY_07_AIML", - "S_FLICKY_07_HOPL", - "S_FLICKY_07_UPL", - "S_FLICKY_07_DOWNL", - "S_FLICKY_07_AIMR", - "S_FLICKY_07_HOPR", - "S_FLICKY_07_UPR", - "S_FLICKY_07_DOWNR", - "S_FLICKY_07_SWIM1", - "S_FLICKY_07_SWIM2", - "S_FLICKY_07_SWIM3", - "S_FLICKY_07_STAND", - "S_FLICKY_07_CENTER", - - // Fish - "S_FLICKY_08_OUT", - "S_FLICKY_08_AIM", - "S_FLICKY_08_HOP", - "S_FLICKY_08_FLAP1", - "S_FLICKY_08_FLAP2", - "S_FLICKY_08_FLAP3", - "S_FLICKY_08_FLAP4", - "S_FLICKY_08_SWIM1", - "S_FLICKY_08_SWIM2", - "S_FLICKY_08_SWIM3", - "S_FLICKY_08_SWIM4", - "S_FLICKY_08_STAND", - "S_FLICKY_08_CENTER", - - // Ram - "S_FLICKY_09_OUT", - "S_FLICKY_09_AIM", - "S_FLICKY_09_HOP", - "S_FLICKY_09_UP", - "S_FLICKY_09_DOWN", - "S_FLICKY_09_STAND", - "S_FLICKY_09_CENTER", - - // Puffin - "S_FLICKY_10_OUT", - "S_FLICKY_10_FLAP1", - "S_FLICKY_10_FLAP2", - "S_FLICKY_10_STAND", - "S_FLICKY_10_CENTER", - - // Cow - "S_FLICKY_11_OUT", - "S_FLICKY_11_AIM", - "S_FLICKY_11_RUN1", - "S_FLICKY_11_RUN2", - "S_FLICKY_11_RUN3", - "S_FLICKY_11_STAND", - "S_FLICKY_11_CENTER", - - // Rat - "S_FLICKY_12_OUT", - "S_FLICKY_12_AIM", - "S_FLICKY_12_RUN1", - "S_FLICKY_12_RUN2", - "S_FLICKY_12_RUN3", - "S_FLICKY_12_STAND", - "S_FLICKY_12_CENTER", - - // Bear - "S_FLICKY_13_OUT", - "S_FLICKY_13_AIM", - "S_FLICKY_13_HOP", - "S_FLICKY_13_UP", - "S_FLICKY_13_DOWN", - "S_FLICKY_13_STAND", - "S_FLICKY_13_CENTER", - - // Dove - "S_FLICKY_14_OUT", - "S_FLICKY_14_FLAP1", - "S_FLICKY_14_FLAP2", - "S_FLICKY_14_FLAP3", - "S_FLICKY_14_STAND", - "S_FLICKY_14_CENTER", - - // Cat - "S_FLICKY_15_OUT", - "S_FLICKY_15_AIM", - "S_FLICKY_15_HOP", - "S_FLICKY_15_UP", - "S_FLICKY_15_DOWN", - "S_FLICKY_15_STAND", - "S_FLICKY_15_CENTER", - - // Canary - "S_FLICKY_16_OUT", - "S_FLICKY_16_FLAP1", - "S_FLICKY_16_FLAP2", - "S_FLICKY_16_FLAP3", - "S_FLICKY_16_STAND", - "S_FLICKY_16_CENTER", - - // Spider - "S_SECRETFLICKY_01_OUT", - "S_SECRETFLICKY_01_AIM", - "S_SECRETFLICKY_01_HOP", - "S_SECRETFLICKY_01_UP", - "S_SECRETFLICKY_01_DOWN", - "S_SECRETFLICKY_01_STAND", - "S_SECRETFLICKY_01_CENTER", - - // Bat - "S_SECRETFLICKY_02_OUT", - "S_SECRETFLICKY_02_FLAP1", - "S_SECRETFLICKY_02_FLAP2", - "S_SECRETFLICKY_02_FLAP3", - "S_SECRETFLICKY_02_STAND", - "S_SECRETFLICKY_02_CENTER", - - // Fan - "S_FAN", - "S_FAN2", - "S_FAN3", - "S_FAN4", - "S_FAN5", - - // Steam Riser - "S_STEAM1", - "S_STEAM2", - "S_STEAM3", - "S_STEAM4", - "S_STEAM5", - "S_STEAM6", - "S_STEAM7", - "S_STEAM8", - - // Bumpers - "S_BUMPER", - "S_BUMPERHIT", - - // Balloons - "S_BALLOON", - "S_BALLOONPOP1", - "S_BALLOONPOP2", - "S_BALLOONPOP3", - "S_BALLOONPOP4", - "S_BALLOONPOP5", - "S_BALLOONPOP6", - - // Yellow Spring - "S_YELLOWSPRING", - "S_YELLOWSPRING2", - "S_YELLOWSPRING3", - "S_YELLOWSPRING4", - "S_YELLOWSPRING5", - - // Red Spring - "S_REDSPRING", - "S_REDSPRING2", - "S_REDSPRING3", - "S_REDSPRING4", - "S_REDSPRING5", - - // Blue Spring - "S_BLUESPRING", - "S_BLUESPRING2", - "S_BLUESPRING3", - "S_BLUESPRING4", - "S_BLUESPRING5", - - // Yellow Diagonal Spring - "S_YDIAG1", - "S_YDIAG2", - "S_YDIAG3", - "S_YDIAG4", - "S_YDIAG5", - "S_YDIAG6", - "S_YDIAG7", - "S_YDIAG8", - - // Red Diagonal Spring - "S_RDIAG1", - "S_RDIAG2", - "S_RDIAG3", - "S_RDIAG4", - "S_RDIAG5", - "S_RDIAG6", - "S_RDIAG7", - "S_RDIAG8", - - // Blue Diagonal Spring - "S_BDIAG1", - "S_BDIAG2", - "S_BDIAG3", - "S_BDIAG4", - "S_BDIAG5", - "S_BDIAG6", - "S_BDIAG7", - "S_BDIAG8", - - // Yellow Side Spring - "S_YHORIZ1", - "S_YHORIZ2", - "S_YHORIZ3", - "S_YHORIZ4", - "S_YHORIZ5", - "S_YHORIZ6", - "S_YHORIZ7", - "S_YHORIZ8", - - // Red Side Spring - "S_RHORIZ1", - "S_RHORIZ2", - "S_RHORIZ3", - "S_RHORIZ4", - "S_RHORIZ5", - "S_RHORIZ6", - "S_RHORIZ7", - "S_RHORIZ8", - - // Blue Side Spring - "S_BHORIZ1", - "S_BHORIZ2", - "S_BHORIZ3", - "S_BHORIZ4", - "S_BHORIZ5", - "S_BHORIZ6", - "S_BHORIZ7", - "S_BHORIZ8", - - // Booster - "S_BOOSTERSOUND", - "S_YELLOWBOOSTERROLLER", - "S_YELLOWBOOSTERSEG_LEFT", - "S_YELLOWBOOSTERSEG_RIGHT", - "S_YELLOWBOOSTERSEG_FACE", - "S_REDBOOSTERROLLER", - "S_REDBOOSTERSEG_LEFT", - "S_REDBOOSTERSEG_RIGHT", - "S_REDBOOSTERSEG_FACE", - - // Rain - "S_RAIN1", - "S_RAINRETURN", - - // Snowflake - "S_SNOW1", - "S_SNOW2", - "S_SNOW3", - - // Water Splish - "S_SPLISH1", - "S_SPLISH2", - "S_SPLISH3", - "S_SPLISH4", - "S_SPLISH5", - "S_SPLISH6", - "S_SPLISH7", - "S_SPLISH8", - "S_SPLISH9", - - // Lava Splish - "S_LAVASPLISH", - - // added water splash - "S_SPLASH1", - "S_SPLASH2", - "S_SPLASH3", - - // lava/slime damage burn smoke - "S_SMOKE1", - "S_SMOKE2", - "S_SMOKE3", - "S_SMOKE4", - "S_SMOKE5", - - // Bubbles - "S_SMALLBUBBLE", - "S_MEDIUMBUBBLE", - "S_LARGEBUBBLE1", - "S_LARGEBUBBLE2", - "S_EXTRALARGEBUBBLE", // breathable - - "S_POP1", // Extra Large bubble goes POP! - - "S_WATERZAP", - - // Spindash dust - "S_SPINDUST1", - "S_SPINDUST2", - "S_SPINDUST3", - "S_SPINDUST4", - "S_SPINDUST_BUBBLE1", - "S_SPINDUST_BUBBLE2", - "S_SPINDUST_BUBBLE3", - "S_SPINDUST_BUBBLE4", - "S_SPINDUST_FIRE1", - "S_SPINDUST_FIRE2", - "S_SPINDUST_FIRE3", - "S_SPINDUST_FIRE4", - - "S_FOG1", - "S_FOG2", - "S_FOG3", - "S_FOG4", - "S_FOG5", - "S_FOG6", - "S_FOG7", - "S_FOG8", - "S_FOG9", - "S_FOG10", - "S_FOG11", - "S_FOG12", - "S_FOG13", - "S_FOG14", - - "S_SEED", - - "S_PARTICLE", - - // Score Logos - "S_SCRA", // 100 - "S_SCRB", // 200 - "S_SCRC", // 500 - "S_SCRD", // 1000 - "S_SCRE", // 10000 - "S_SCRF", // 400 (mario) - "S_SCRG", // 800 (mario) - "S_SCRH", // 2000 (mario) - "S_SCRI", // 4000 (mario) - "S_SCRJ", // 8000 (mario) - "S_SCRK", // 1UP (mario) - "S_SCRL", // 10 - - // Drowning Timer Numbers - "S_ZERO1", - "S_ONE1", - "S_TWO1", - "S_THREE1", - "S_FOUR1", - "S_FIVE1", - - "S_ZERO2", - "S_ONE2", - "S_TWO2", - "S_THREE2", - "S_FOUR2", - "S_FIVE2", - - "S_FLIGHTINDICATOR", - - "S_LOCKON1", - "S_LOCKON2", - "S_LOCKON3", - "S_LOCKON4", - "S_LOCKONINF1", - "S_LOCKONINF2", - "S_LOCKONINF3", - "S_LOCKONINF4", - - // Tag Sign - "S_TTAG", - - // Got Flag Sign - "S_GOTFLAG", - - // Finish flag - "S_FINISHFLAG", - - "S_CORK", - "S_LHRT", - - // Red Ring - "S_RRNG1", - "S_RRNG2", - "S_RRNG3", - "S_RRNG4", - "S_RRNG5", - "S_RRNG6", - "S_RRNG7", - - // Weapon Ring Ammo - "S_BOUNCERINGAMMO", - "S_RAILRINGAMMO", - "S_INFINITYRINGAMMO", - "S_AUTOMATICRINGAMMO", - "S_EXPLOSIONRINGAMMO", - "S_SCATTERRINGAMMO", - "S_GRENADERINGAMMO", - - // Weapon pickup - "S_BOUNCEPICKUP", - "S_BOUNCEPICKUPFADE1", - "S_BOUNCEPICKUPFADE2", - "S_BOUNCEPICKUPFADE3", - "S_BOUNCEPICKUPFADE4", - "S_BOUNCEPICKUPFADE5", - "S_BOUNCEPICKUPFADE6", - "S_BOUNCEPICKUPFADE7", - "S_BOUNCEPICKUPFADE8", - - "S_RAILPICKUP", - "S_RAILPICKUPFADE1", - "S_RAILPICKUPFADE2", - "S_RAILPICKUPFADE3", - "S_RAILPICKUPFADE4", - "S_RAILPICKUPFADE5", - "S_RAILPICKUPFADE6", - "S_RAILPICKUPFADE7", - "S_RAILPICKUPFADE8", - - "S_AUTOPICKUP", - "S_AUTOPICKUPFADE1", - "S_AUTOPICKUPFADE2", - "S_AUTOPICKUPFADE3", - "S_AUTOPICKUPFADE4", - "S_AUTOPICKUPFADE5", - "S_AUTOPICKUPFADE6", - "S_AUTOPICKUPFADE7", - "S_AUTOPICKUPFADE8", - - "S_EXPLODEPICKUP", - "S_EXPLODEPICKUPFADE1", - "S_EXPLODEPICKUPFADE2", - "S_EXPLODEPICKUPFADE3", - "S_EXPLODEPICKUPFADE4", - "S_EXPLODEPICKUPFADE5", - "S_EXPLODEPICKUPFADE6", - "S_EXPLODEPICKUPFADE7", - "S_EXPLODEPICKUPFADE8", - - "S_SCATTERPICKUP", - "S_SCATTERPICKUPFADE1", - "S_SCATTERPICKUPFADE2", - "S_SCATTERPICKUPFADE3", - "S_SCATTERPICKUPFADE4", - "S_SCATTERPICKUPFADE5", - "S_SCATTERPICKUPFADE6", - "S_SCATTERPICKUPFADE7", - "S_SCATTERPICKUPFADE8", - - "S_GRENADEPICKUP", - "S_GRENADEPICKUPFADE1", - "S_GRENADEPICKUPFADE2", - "S_GRENADEPICKUPFADE3", - "S_GRENADEPICKUPFADE4", - "S_GRENADEPICKUPFADE5", - "S_GRENADEPICKUPFADE6", - "S_GRENADEPICKUPFADE7", - "S_GRENADEPICKUPFADE8", - - // Thrown Weapon Rings - "S_THROWNBOUNCE1", - "S_THROWNBOUNCE2", - "S_THROWNBOUNCE3", - "S_THROWNBOUNCE4", - "S_THROWNBOUNCE5", - "S_THROWNBOUNCE6", - "S_THROWNBOUNCE7", - "S_THROWNINFINITY1", - "S_THROWNINFINITY2", - "S_THROWNINFINITY3", - "S_THROWNINFINITY4", - "S_THROWNINFINITY5", - "S_THROWNINFINITY6", - "S_THROWNINFINITY7", - "S_THROWNAUTOMATIC1", - "S_THROWNAUTOMATIC2", - "S_THROWNAUTOMATIC3", - "S_THROWNAUTOMATIC4", - "S_THROWNAUTOMATIC5", - "S_THROWNAUTOMATIC6", - "S_THROWNAUTOMATIC7", - "S_THROWNEXPLOSION1", - "S_THROWNEXPLOSION2", - "S_THROWNEXPLOSION3", - "S_THROWNEXPLOSION4", - "S_THROWNEXPLOSION5", - "S_THROWNEXPLOSION6", - "S_THROWNEXPLOSION7", - "S_THROWNGRENADE1", - "S_THROWNGRENADE2", - "S_THROWNGRENADE3", - "S_THROWNGRENADE4", - "S_THROWNGRENADE5", - "S_THROWNGRENADE6", - "S_THROWNGRENADE7", - "S_THROWNGRENADE8", - "S_THROWNGRENADE9", - "S_THROWNGRENADE10", - "S_THROWNGRENADE11", - "S_THROWNGRENADE12", - "S_THROWNGRENADE13", - "S_THROWNGRENADE14", - "S_THROWNGRENADE15", - "S_THROWNGRENADE16", - "S_THROWNGRENADE17", - "S_THROWNGRENADE18", - "S_THROWNSCATTER", - - "S_RINGEXPLODE", - - "S_COIN1", - "S_COIN2", - "S_COIN3", - "S_COINSPARKLE1", - "S_COINSPARKLE2", - "S_COINSPARKLE3", - "S_COINSPARKLE4", - "S_GOOMBA1", - "S_GOOMBA1B", - "S_GOOMBA2", - "S_GOOMBA3", - "S_GOOMBA4", - "S_GOOMBA5", - "S_GOOMBA6", - "S_GOOMBA7", - "S_GOOMBA8", - "S_GOOMBA9", - "S_GOOMBA_DEAD", - "S_BLUEGOOMBA1", - "S_BLUEGOOMBA1B", - "S_BLUEGOOMBA2", - "S_BLUEGOOMBA3", - "S_BLUEGOOMBA4", - "S_BLUEGOOMBA5", - "S_BLUEGOOMBA6", - "S_BLUEGOOMBA7", - "S_BLUEGOOMBA8", - "S_BLUEGOOMBA9", - "S_BLUEGOOMBA_DEAD", - - // Mario-specific stuff - "S_FIREFLOWER1", - "S_FIREFLOWER2", - "S_FIREFLOWER3", - "S_FIREFLOWER4", - "S_FIREBALL", - "S_FIREBALLTRAIL1", - "S_FIREBALLTRAIL2", - "S_SHELL", - "S_PUMA_START1", - "S_PUMA_START2", - "S_PUMA_UP1", - "S_PUMA_UP2", - "S_PUMA_UP3", - "S_PUMA_DOWN1", - "S_PUMA_DOWN2", - "S_PUMA_DOWN3", - "S_PUMATRAIL1", - "S_PUMATRAIL2", - "S_PUMATRAIL3", - "S_PUMATRAIL4", - "S_HAMMER", - "S_KOOPA1", - "S_KOOPA2", - "S_KOOPAFLAME1", - "S_KOOPAFLAME2", - "S_KOOPAFLAME3", - "S_AXE1", - "S_AXE2", - "S_AXE3", - "S_MARIOBUSH1", - "S_MARIOBUSH2", - "S_TOAD", - - // Nights-specific stuff - "S_NIGHTSDRONE_MAN1", - "S_NIGHTSDRONE_MAN2", - "S_NIGHTSDRONE_SPARKLING1", - "S_NIGHTSDRONE_SPARKLING2", - "S_NIGHTSDRONE_SPARKLING3", - "S_NIGHTSDRONE_SPARKLING4", - "S_NIGHTSDRONE_SPARKLING5", - "S_NIGHTSDRONE_SPARKLING6", - "S_NIGHTSDRONE_SPARKLING7", - "S_NIGHTSDRONE_SPARKLING8", - "S_NIGHTSDRONE_SPARKLING9", - "S_NIGHTSDRONE_SPARKLING10", - "S_NIGHTSDRONE_SPARKLING11", - "S_NIGHTSDRONE_SPARKLING12", - "S_NIGHTSDRONE_SPARKLING13", - "S_NIGHTSDRONE_SPARKLING14", - "S_NIGHTSDRONE_SPARKLING15", - "S_NIGHTSDRONE_SPARKLING16", - "S_NIGHTSDRONE_GOAL1", - "S_NIGHTSDRONE_GOAL2", - "S_NIGHTSDRONE_GOAL3", - "S_NIGHTSDRONE_GOAL4", - - "S_NIGHTSPARKLE1", - "S_NIGHTSPARKLE2", - "S_NIGHTSPARKLE3", - "S_NIGHTSPARKLE4", - "S_NIGHTSPARKLESUPER1", - "S_NIGHTSPARKLESUPER2", - "S_NIGHTSPARKLESUPER3", - "S_NIGHTSPARKLESUPER4", - "S_NIGHTSLOOPHELPER", - - // NiGHTS bumper - "S_NIGHTSBUMPER1", - "S_NIGHTSBUMPER2", - "S_NIGHTSBUMPER3", - "S_NIGHTSBUMPER4", - "S_NIGHTSBUMPER5", - "S_NIGHTSBUMPER6", - "S_NIGHTSBUMPER7", - "S_NIGHTSBUMPER8", - "S_NIGHTSBUMPER9", - "S_NIGHTSBUMPER10", - "S_NIGHTSBUMPER11", - "S_NIGHTSBUMPER12", - - "S_HOOP", - "S_HOOP_XMASA", - "S_HOOP_XMASB", - - "S_NIGHTSCORE10", - "S_NIGHTSCORE20", - "S_NIGHTSCORE30", - "S_NIGHTSCORE40", - "S_NIGHTSCORE50", - "S_NIGHTSCORE60", - "S_NIGHTSCORE70", - "S_NIGHTSCORE80", - "S_NIGHTSCORE90", - "S_NIGHTSCORE100", - "S_NIGHTSCORE10_2", - "S_NIGHTSCORE20_2", - "S_NIGHTSCORE30_2", - "S_NIGHTSCORE40_2", - "S_NIGHTSCORE50_2", - "S_NIGHTSCORE60_2", - "S_NIGHTSCORE70_2", - "S_NIGHTSCORE80_2", - "S_NIGHTSCORE90_2", - "S_NIGHTSCORE100_2", - - // NiGHTS Paraloop Powerups - "S_NIGHTSSUPERLOOP", - "S_NIGHTSDRILLREFILL", - "S_NIGHTSHELPER", - "S_NIGHTSEXTRATIME", - "S_NIGHTSLINKFREEZE", - "S_EGGCAPSULE", - - // Orbiting Chaos Emeralds - "S_ORBITEM1", - "S_ORBITEM2", - "S_ORBITEM3", - "S_ORBITEM4", - "S_ORBITEM5", - "S_ORBITEM6", - "S_ORBITEM7", - "S_ORBITEM8", - "S_ORBIDYA1", - "S_ORBIDYA2", - "S_ORBIDYA3", - "S_ORBIDYA4", - "S_ORBIDYA5", - - // "Flicky" helper - "S_NIGHTOPIANHELPER1", - "S_NIGHTOPIANHELPER2", - "S_NIGHTOPIANHELPER3", - "S_NIGHTOPIANHELPER4", - "S_NIGHTOPIANHELPER5", - "S_NIGHTOPIANHELPER6", - "S_NIGHTOPIANHELPER7", - "S_NIGHTOPIANHELPER8", - "S_NIGHTOPIANHELPER9", - - // Nightopian - "S_PIAN_LOOK1", - "S_PIAN_LOOK2", - "S_PIAN_LOOK3", - "S_PIAN_FLY1", - "S_PIAN_FLY2", - "S_PIAN_FLY3", - "S_PIAN_SING", - - // Shleep - "S_SHLEEP1", - "S_SHLEEP2", - "S_SHLEEP3", - "S_SHLEEP4", - "S_SHLEEPBOUNCE1", - "S_SHLEEPBOUNCE2", - "S_SHLEEPBOUNCE3", - - // Secret badniks and hazards, shhhh - "S_PENGUINATOR_LOOK", - "S_PENGUINATOR_WADDLE1", - "S_PENGUINATOR_WADDLE2", - "S_PENGUINATOR_WADDLE3", - "S_PENGUINATOR_WADDLE4", - "S_PENGUINATOR_SLIDE1", - "S_PENGUINATOR_SLIDE2", - "S_PENGUINATOR_SLIDE3", - "S_PENGUINATOR_SLIDE4", - "S_PENGUINATOR_SLIDE5", - - "S_POPHAT_LOOK", - "S_POPHAT_SHOOT1", - "S_POPHAT_SHOOT2", - "S_POPHAT_SHOOT3", - "S_POPHAT_SHOOT4", - "S_POPSHOT", - "S_POPSHOT_TRAIL", - - "S_HIVEELEMENTAL_LOOK", - "S_HIVEELEMENTAL_PREPARE1", - "S_HIVEELEMENTAL_PREPARE2", - "S_HIVEELEMENTAL_SHOOT1", - "S_HIVEELEMENTAL_SHOOT2", - "S_HIVEELEMENTAL_DORMANT", - "S_HIVEELEMENTAL_PAIN", - "S_HIVEELEMENTAL_DIE1", - "S_HIVEELEMENTAL_DIE2", - "S_HIVEELEMENTAL_DIE3", - - "S_BUMBLEBORE_SPAWN", - "S_BUMBLEBORE_LOOK1", - "S_BUMBLEBORE_LOOK2", - "S_BUMBLEBORE_FLY1", - "S_BUMBLEBORE_FLY2", - "S_BUMBLEBORE_RAISE", - "S_BUMBLEBORE_FALL1", - "S_BUMBLEBORE_FALL2", - "S_BUMBLEBORE_STUCK1", - "S_BUMBLEBORE_STUCK2", - "S_BUMBLEBORE_DIE", - - "S_BUGGLEIDLE", - "S_BUGGLEFLY", - - "S_SMASHSPIKE_FLOAT", - "S_SMASHSPIKE_EASE1", - "S_SMASHSPIKE_EASE2", - "S_SMASHSPIKE_FALL", - "S_SMASHSPIKE_STOMP1", - "S_SMASHSPIKE_STOMP2", - "S_SMASHSPIKE_RISE1", - "S_SMASHSPIKE_RISE2", - - "S_CACO_LOOK", - "S_CACO_WAKE1", - "S_CACO_WAKE2", - "S_CACO_WAKE3", - "S_CACO_WAKE4", - "S_CACO_ROAR", - "S_CACO_CHASE", - "S_CACO_CHASE_REPEAT", - "S_CACO_RANDOM", - "S_CACO_PREPARE_SOUND", - "S_CACO_PREPARE1", - "S_CACO_PREPARE2", - "S_CACO_PREPARE3", - "S_CACO_SHOOT_SOUND", - "S_CACO_SHOOT1", - "S_CACO_SHOOT2", - "S_CACO_CLOSE", - "S_CACO_DIE_FLAGS", - "S_CACO_DIE_GIB1", - "S_CACO_DIE_GIB2", - "S_CACO_DIE_SCREAM", - "S_CACO_DIE_SHATTER", - "S_CACO_DIE_FALL", - "S_CACOSHARD_RANDOMIZE", - "S_CACOSHARD1_1", - "S_CACOSHARD1_2", - "S_CACOSHARD2_1", - "S_CACOSHARD2_2", - "S_CACOFIRE1", - "S_CACOFIRE2", - "S_CACOFIRE3", - "S_CACOFIRE_EXPLODE1", - "S_CACOFIRE_EXPLODE2", - "S_CACOFIRE_EXPLODE3", - "S_CACOFIRE_EXPLODE4", - - "S_SPINBOBERT_MOVE_FLIPUP", - "S_SPINBOBERT_MOVE_UP", - "S_SPINBOBERT_MOVE_FLIPDOWN", - "S_SPINBOBERT_MOVE_DOWN", - "S_SPINBOBERT_FIRE_MOVE", - "S_SPINBOBERT_FIRE_GHOST", - "S_SPINBOBERT_FIRE_TRAIL1", - "S_SPINBOBERT_FIRE_TRAIL2", - "S_SPINBOBERT_FIRE_TRAIL3", - - "S_HANGSTER_LOOK", - "S_HANGSTER_SWOOP1", - "S_HANGSTER_SWOOP2", - "S_HANGSTER_ARC1", - "S_HANGSTER_ARC2", - "S_HANGSTER_ARC3", - "S_HANGSTER_FLY1", - "S_HANGSTER_FLY2", - "S_HANGSTER_FLY3", - "S_HANGSTER_FLY4", - "S_HANGSTER_FLYREPEAT", - "S_HANGSTER_ARCUP1", - "S_HANGSTER_ARCUP2", - "S_HANGSTER_ARCUP3", - "S_HANGSTER_RETURN1", - "S_HANGSTER_RETURN2", - "S_HANGSTER_RETURN3", - - "S_CRUMBLE1", - "S_CRUMBLE2", - - // Spark - "S_SPRK1", - "S_SPRK2", - "S_SPRK3", - - // Robot Explosion - "S_XPLD_FLICKY", - "S_XPLD1", - "S_XPLD2", - "S_XPLD3", - "S_XPLD4", - "S_XPLD5", - "S_XPLD6", - "S_XPLD_EGGTRAP", - - // Underwater Explosion - "S_WPLD1", - "S_WPLD2", - "S_WPLD3", - "S_WPLD4", - "S_WPLD5", - "S_WPLD6", - - "S_DUST1", - "S_DUST2", - "S_DUST3", - "S_DUST4", - - "S_ROCKSPAWN", - - "S_ROCKCRUMBLEA", - "S_ROCKCRUMBLEB", - "S_ROCKCRUMBLEC", - "S_ROCKCRUMBLED", - "S_ROCKCRUMBLEE", - "S_ROCKCRUMBLEF", - "S_ROCKCRUMBLEG", - "S_ROCKCRUMBLEH", - "S_ROCKCRUMBLEI", - "S_ROCKCRUMBLEJ", - "S_ROCKCRUMBLEK", - "S_ROCKCRUMBLEL", - "S_ROCKCRUMBLEM", - "S_ROCKCRUMBLEN", - "S_ROCKCRUMBLEO", - "S_ROCKCRUMBLEP", - - // Level debris - "S_GFZDEBRIS", - "S_BRICKDEBRIS", - "S_WOODDEBRIS", - "S_REDBRICKDEBRIS", - "S_BLUEBRICKDEBRIS", - "S_YELLOWBRICKDEBRIS", - - "S_NAMECHECK", -}; - -// RegEx to generate this from info.h: ^\tMT_([^,]+), --> \t"MT_\1", -// I am leaving the prefixes solely for clarity to programmers, -// because sadly no one remembers this place while searching for full state names. -const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity testing later. - "MT_NULL", - "MT_UNKNOWN", - - "MT_THOK", // Thok! mobj - "MT_PLAYER", - "MT_TAILSOVERLAY", // c: - "MT_METALJETFUME", - - // Enemies - "MT_BLUECRAWLA", // Crawla (Blue) - "MT_REDCRAWLA", // Crawla (Red) - "MT_GFZFISH", // SDURF - "MT_GOLDBUZZ", // Buzz (Gold) - "MT_REDBUZZ", // Buzz (Red) - "MT_JETTBOMBER", // Jetty-Syn Bomber - "MT_JETTGUNNER", // Jetty-Syn Gunner - "MT_CRAWLACOMMANDER", // Crawla Commander - "MT_DETON", // Deton - "MT_SKIM", // Skim mine dropper - "MT_TURRET", // Industrial Turret - "MT_POPUPTURRET", // Pop-Up Turret - "MT_SPINCUSHION", // Spincushion - "MT_CRUSHSTACEAN", // Crushstacean - "MT_CRUSHCLAW", // Big meaty claw - "MT_CRUSHCHAIN", // Chain - "MT_BANPYURA", // Banpyura - "MT_BANPSPRING", // Banpyura spring - "MT_JETJAW", // Jet Jaw - "MT_SNAILER", // Snailer - "MT_VULTURE", // BASH - "MT_POINTY", // Pointy - "MT_POINTYBALL", // Pointy Ball - "MT_ROBOHOOD", // Robo-Hood - "MT_FACESTABBER", // Castlebot Facestabber - "MT_FACESTABBERSPEAR", // Castlebot Facestabber spear aura - "MT_EGGGUARD", // Egg Guard - "MT_EGGSHIELD", // Egg Guard's shield - "MT_GSNAPPER", // Green Snapper - "MT_SNAPPER_LEG", // Green Snapper leg - "MT_SNAPPER_HEAD", // Green Snapper head - "MT_MINUS", // Minus - "MT_MINUSDIRT", // Minus dirt - "MT_SPRINGSHELL", // Spring Shell - "MT_YELLOWSHELL", // Spring Shell (yellow) - "MT_UNIDUS", // Unidus - "MT_UNIBALL", // Unidus Ball - "MT_CANARIVORE", // Canarivore - "MT_CANARIVORE_GAS", // Canarivore gas - "MT_PYREFLY", // Pyre Fly - "MT_PYREFLY_FIRE", // Pyre Fly fire - "MT_PTERABYTESPAWNER", // Pterabyte spawner - "MT_PTERABYTEWAYPOINT", // Pterabyte waypoint - "MT_PTERABYTE", // Pterabyte - "MT_DRAGONBOMBER", // Dragonbomber - "MT_DRAGONWING", // Dragonbomber wing - "MT_DRAGONTAIL", // Dragonbomber tail segment - "MT_DRAGONMINE", // Dragonbomber mine - - // Generic Boss Items - "MT_BOSSEXPLODE", - "MT_SONIC3KBOSSEXPLODE", - "MT_BOSSFLYPOINT", - "MT_EGGTRAP", - "MT_BOSS3WAYPOINT", - "MT_BOSS9GATHERPOINT", - "MT_BOSSJUNK", - - // Boss 1 - "MT_EGGMOBILE", - "MT_JETFUME1", - "MT_EGGMOBILE_BALL", - "MT_EGGMOBILE_TARGET", - "MT_EGGMOBILE_FIRE", - - // Boss 2 - "MT_EGGMOBILE2", - "MT_EGGMOBILE2_POGO", - "MT_GOOP", - "MT_GOOPTRAIL", - - // Boss 3 - "MT_EGGMOBILE3", - "MT_FAKEMOBILE", - "MT_SHOCKWAVE", - - // Boss 4 - "MT_EGGMOBILE4", - "MT_EGGMOBILE4_MACE", - "MT_JETFLAME", - "MT_EGGROBO1", - "MT_EGGROBO1JET", - - // Boss 5 - "MT_FANG", - "MT_BROKENROBOT", - "MT_VWREF", - "MT_VWREB", - "MT_PROJECTORLIGHT", - "MT_FBOMB", - "MT_TNTDUST", // also used by barrel - "MT_FSGNA", - "MT_FSGNB", - "MT_FANGWAYPOINT", - - // Black Eggman (Boss 7) - "MT_BLACKEGGMAN", - "MT_BLACKEGGMAN_HELPER", - "MT_BLACKEGGMAN_GOOPFIRE", - "MT_BLACKEGGMAN_MISSILE", - - // New Very-Last-Minute 2.1 Brak Eggman (Cy-Brak-demon) - "MT_CYBRAKDEMON", - "MT_CYBRAKDEMON_ELECTRIC_BARRIER", - "MT_CYBRAKDEMON_MISSILE", - "MT_CYBRAKDEMON_FLAMESHOT", - "MT_CYBRAKDEMON_FLAMEREST", - "MT_CYBRAKDEMON_TARGET_RETICULE", - "MT_CYBRAKDEMON_TARGET_DOT", - "MT_CYBRAKDEMON_NAPALM_BOMB_LARGE", - "MT_CYBRAKDEMON_NAPALM_BOMB_SMALL", - "MT_CYBRAKDEMON_NAPALM_FLAMES", - "MT_CYBRAKDEMON_VILE_EXPLOSION", - - // Metal Sonic (Boss 9) - "MT_METALSONIC_RACE", - "MT_METALSONIC_BATTLE", - "MT_MSSHIELD_FRONT", - "MT_MSGATHER", - - // Collectible Items - "MT_RING", - "MT_FLINGRING", // Lost ring - "MT_BLUESPHERE", // Blue sphere for special stages - "MT_FLINGBLUESPHERE", // Lost blue sphere - "MT_BOMBSPHERE", - "MT_REDTEAMRING", //Rings collectable by red team. - "MT_BLUETEAMRING", //Rings collectable by blue team. - "MT_TOKEN", // Special Stage token for special stage - "MT_REDFLAG", // Red CTF Flag - "MT_BLUEFLAG", // Blue CTF Flag - "MT_EMBLEM", - "MT_EMERALD1", - "MT_EMERALD2", - "MT_EMERALD3", - "MT_EMERALD4", - "MT_EMERALD5", - "MT_EMERALD6", - "MT_EMERALD7", - "MT_EMERHUNT", // Emerald Hunt - "MT_EMERALDSPAWN", // Emerald spawner w/ delay - "MT_FLINGEMERALD", // Lost emerald - - // Springs and others - "MT_FAN", - "MT_STEAM", - "MT_BUMPER", - "MT_BALLOON", - - "MT_YELLOWSPRING", - "MT_REDSPRING", - "MT_BLUESPRING", - "MT_YELLOWDIAG", - "MT_REDDIAG", - "MT_BLUEDIAG", - "MT_YELLOWHORIZ", - "MT_REDHORIZ", - "MT_BLUEHORIZ", - - "MT_BOOSTERSEG", - "MT_BOOSTERROLLER", - "MT_YELLOWBOOSTER", - "MT_REDBOOSTER", - - // Interactive Objects - "MT_BUBBLES", // Bubble source - "MT_SIGN", // Level end sign - "MT_SPIKEBALL", // Spike Ball - "MT_SPINFIRE", - "MT_SPIKE", - "MT_WALLSPIKE", - "MT_WALLSPIKEBASE", - "MT_STARPOST", - "MT_BIGMINE", - "MT_BLASTEXECUTOR", - "MT_CANNONLAUNCHER", - - // Monitor miscellany - "MT_BOXSPARKLE", - - // Monitor boxes -- regular - "MT_RING_BOX", - "MT_PITY_BOX", - "MT_ATTRACT_BOX", - "MT_FORCE_BOX", - "MT_ARMAGEDDON_BOX", - "MT_WHIRLWIND_BOX", - "MT_ELEMENTAL_BOX", - "MT_SNEAKERS_BOX", - "MT_INVULN_BOX", - "MT_1UP_BOX", - "MT_EGGMAN_BOX", - "MT_MIXUP_BOX", - "MT_MYSTERY_BOX", - "MT_GRAVITY_BOX", - "MT_RECYCLER_BOX", - "MT_SCORE1K_BOX", - "MT_SCORE10K_BOX", - "MT_FLAMEAURA_BOX", - "MT_BUBBLEWRAP_BOX", - "MT_THUNDERCOIN_BOX", - - // Monitor boxes -- repeating (big) boxes - "MT_PITY_GOLDBOX", - "MT_ATTRACT_GOLDBOX", - "MT_FORCE_GOLDBOX", - "MT_ARMAGEDDON_GOLDBOX", - "MT_WHIRLWIND_GOLDBOX", - "MT_ELEMENTAL_GOLDBOX", - "MT_SNEAKERS_GOLDBOX", - "MT_INVULN_GOLDBOX", - "MT_EGGMAN_GOLDBOX", - "MT_GRAVITY_GOLDBOX", - "MT_FLAMEAURA_GOLDBOX", - "MT_BUBBLEWRAP_GOLDBOX", - "MT_THUNDERCOIN_GOLDBOX", - - // Monitor boxes -- special - "MT_RING_REDBOX", - "MT_RING_BLUEBOX", - - // Monitor icons - "MT_RING_ICON", - "MT_PITY_ICON", - "MT_ATTRACT_ICON", - "MT_FORCE_ICON", - "MT_ARMAGEDDON_ICON", - "MT_WHIRLWIND_ICON", - "MT_ELEMENTAL_ICON", - "MT_SNEAKERS_ICON", - "MT_INVULN_ICON", - "MT_1UP_ICON", - "MT_EGGMAN_ICON", - "MT_MIXUP_ICON", - "MT_GRAVITY_ICON", - "MT_RECYCLER_ICON", - "MT_SCORE1K_ICON", - "MT_SCORE10K_ICON", - "MT_FLAMEAURA_ICON", - "MT_BUBBLEWRAP_ICON", - "MT_THUNDERCOIN_ICON", - - // Projectiles - "MT_ROCKET", - "MT_LASER", - "MT_TORPEDO", - "MT_TORPEDO2", // silent - "MT_ENERGYBALL", - "MT_MINE", // Skim/Jetty-Syn mine - "MT_JETTBULLET", // Jetty-Syn Bullet - "MT_TURRETLASER", - "MT_CANNONBALL", // Cannonball - "MT_CANNONBALLDECOR", // Decorative/still cannonball - "MT_ARROW", // Arrow - "MT_DEMONFIRE", // Glaregoyle fire - - // The letter - "MT_LETTER", - - // Tutorial Scenery - "MT_TUTORIALPLANT", - "MT_TUTORIALLEAF", - "MT_TUTORIALFLOWER", - "MT_TUTORIALFLOWERF", - - // Greenflower Scenery - "MT_GFZFLOWER1", - "MT_GFZFLOWER2", - "MT_GFZFLOWER3", - - "MT_BLUEBERRYBUSH", - "MT_BERRYBUSH", - "MT_BUSH", - - // Trees (both GFZ and misc) - "MT_GFZTREE", - "MT_GFZBERRYTREE", - "MT_GFZCHERRYTREE", - "MT_CHECKERTREE", - "MT_CHECKERSUNSETTREE", - "MT_FHZTREE", // Frozen Hillside - "MT_FHZPINKTREE", - "MT_POLYGONTREE", - "MT_BUSHTREE", - "MT_BUSHREDTREE", - "MT_SPRINGTREE", - - // Techno Hill Scenery - "MT_THZFLOWER1", - "MT_THZFLOWER2", - "MT_THZFLOWER3", - "MT_THZTREE", // Steam whistle tree/bush - "MT_THZTREEBRANCH", // branch of said tree - "MT_ALARM", - - // Deep Sea Scenery - "MT_GARGOYLE", // Deep Sea Gargoyle - "MT_BIGGARGOYLE", // Deep Sea Gargoyle (Big) - "MT_SEAWEED", // DSZ Seaweed - "MT_WATERDRIP", // Dripping Water source - "MT_WATERDROP", // Water drop from dripping water - "MT_CORAL1", // Coral - "MT_CORAL2", - "MT_CORAL3", - "MT_CORAL4", - "MT_CORAL5", - "MT_BLUECRYSTAL", // Blue Crystal - "MT_KELP", // Kelp - "MT_ANIMALGAETOP", // Animated algae top - "MT_ANIMALGAESEG", // Animated algae segment - "MT_DSZSTALAGMITE", // Deep Sea 1 Stalagmite - "MT_DSZ2STALAGMITE", // Deep Sea 2 Stalagmite - "MT_LIGHTBEAM", // DSZ Light beam - - // Castle Eggman Scenery - "MT_CHAIN", // CEZ Chain - "MT_FLAME", // Flame (has corona) - "MT_FLAMEPARTICLE", - "MT_EGGSTATUE", // Eggman Statue - "MT_MACEPOINT", // Mace rotation point - "MT_CHAINMACEPOINT", // Combination of chains and maces point - "MT_SPRINGBALLPOINT", // Spring ball point - "MT_CHAINPOINT", // Mace chain - "MT_HIDDEN_SLING", // Spin mace chain (activatable) - "MT_FIREBARPOINT", // Firebar - "MT_CUSTOMMACEPOINT", // Custom mace - "MT_SMALLMACECHAIN", // Small Mace Chain - "MT_BIGMACECHAIN", // Big Mace Chain - "MT_SMALLMACE", // Small Mace - "MT_BIGMACE", // Big Mace - "MT_SMALLGRABCHAIN", // Small Grab Chain - "MT_BIGGRABCHAIN", // Big Grab Chain - "MT_BLUESPRINGBALL", // Blue spring on a ball - "MT_YELLOWSPRINGBALL", // Yellow spring on a ball - "MT_REDSPRINGBALL", // Red spring on a ball - "MT_SMALLFIREBAR", // Small Firebar - "MT_BIGFIREBAR", // Big Firebar - "MT_CEZFLOWER", // Flower - "MT_CEZPOLE1", // Pole (with red banner) - "MT_CEZPOLE2", // Pole (with blue banner) - "MT_CEZBANNER1", // Banner (red) - "MT_CEZBANNER2", // Banner (blue) - "MT_PINETREE", // Pine Tree - "MT_CEZBUSH1", // Bush 1 - "MT_CEZBUSH2", // Bush 2 - "MT_CANDLE", // Candle - "MT_CANDLEPRICKET", // Candle pricket - "MT_FLAMEHOLDER", // Flame holder - "MT_FIRETORCH", // Fire torch - "MT_WAVINGFLAG1", // Waving flag (red) - "MT_WAVINGFLAG2", // Waving flag (blue) - "MT_WAVINGFLAGSEG1", // Waving flag segment (red) - "MT_WAVINGFLAGSEG2", // Waving flag segment (blue) - "MT_CRAWLASTATUE", // Crawla statue - "MT_FACESTABBERSTATUE", // Facestabber statue - "MT_SUSPICIOUSFACESTABBERSTATUE", // :eggthinking: - "MT_BRAMBLES", // Brambles - - // Arid Canyon Scenery - "MT_BIGTUMBLEWEED", - "MT_LITTLETUMBLEWEED", - "MT_CACTI1", // Tiny Red Flower Cactus - "MT_CACTI2", // Small Red Flower Cactus - "MT_CACTI3", // Tiny Blue Flower Cactus - "MT_CACTI4", // Small Blue Flower Cactus - "MT_CACTI5", // Prickly Pear - "MT_CACTI6", // Barrel Cactus - "MT_CACTI7", // Tall Barrel Cactus - "MT_CACTI8", // Armed Cactus - "MT_CACTI9", // Ball Cactus - "MT_CACTI10", // Tiny Cactus - "MT_CACTI11", // Small Cactus - "MT_CACTITINYSEG", // Tiny Cactus Segment - "MT_CACTISMALLSEG", // Small Cactus Segment - "MT_ARIDSIGN_CAUTION", // Caution Sign - "MT_ARIDSIGN_CACTI", // Cacti Sign - "MT_ARIDSIGN_SHARPTURN", // Sharp Turn Sign - "MT_OILLAMP", - "MT_TNTBARREL", - "MT_PROXIMITYTNT", - "MT_DUSTDEVIL", - "MT_DUSTLAYER", - "MT_ARIDDUST", - "MT_MINECART", - "MT_MINECARTSEG", - "MT_MINECARTSPAWNER", - "MT_MINECARTEND", - "MT_MINECARTENDSOLID", - "MT_MINECARTSIDEMARK", - "MT_MINECARTSPARK", - "MT_SALOONDOOR", - "MT_SALOONDOORCENTER", - "MT_TRAINCAMEOSPAWNER", - "MT_TRAINSEG", - "MT_TRAINDUSTSPAWNER", - "MT_TRAINSTEAMSPAWNER", - "MT_MINECARTSWITCHPOINT", - - // Red Volcano Scenery - "MT_FLAMEJET", - "MT_VERTICALFLAMEJET", - "MT_FLAMEJETFLAME", - - "MT_FJSPINAXISA", // Counter-clockwise - "MT_FJSPINAXISB", // Clockwise - - "MT_FLAMEJETFLAMEB", // Blade's flame - - "MT_LAVAFALL", - "MT_LAVAFALL_LAVA", - "MT_LAVAFALLROCK", - - "MT_ROLLOUTSPAWN", - "MT_ROLLOUTROCK", - - "MT_BIGFERNLEAF", - "MT_BIGFERN", - "MT_JUNGLEPALM", - "MT_TORCHFLOWER", - "MT_WALLVINE_LONG", - "MT_WALLVINE_SHORT", - - // Dark City Scenery - - // Egg Rock Scenery - - // Azure Temple Scenery - "MT_GLAREGOYLE", - "MT_GLAREGOYLEUP", - "MT_GLAREGOYLEDOWN", - "MT_GLAREGOYLELONG", - "MT_TARGET", // AKA Red Crystal - "MT_GREENFLAME", - "MT_BLUEGARGOYLE", - - // Stalagmites - "MT_STALAGMITE0", - "MT_STALAGMITE1", - "MT_STALAGMITE2", - "MT_STALAGMITE3", - "MT_STALAGMITE4", - "MT_STALAGMITE5", - "MT_STALAGMITE6", - "MT_STALAGMITE7", - "MT_STALAGMITE8", - "MT_STALAGMITE9", - - // Christmas Scenery - "MT_XMASPOLE", - "MT_CANDYCANE", - "MT_SNOWMAN", // normal - "MT_SNOWMANHAT", // with hat + scarf - "MT_LAMPPOST1", // normal - "MT_LAMPPOST2", // with snow - "MT_HANGSTAR", - "MT_MISTLETOE", - // Xmas GFZ bushes - "MT_XMASBLUEBERRYBUSH", - "MT_XMASBERRYBUSH", - "MT_XMASBUSH", - // FHZ - "MT_FHZICE1", - "MT_FHZICE2", - "MT_ROSY", - "MT_CDLHRT", - - // Halloween Scenery - // Pumpkins - "MT_JACKO1", - "MT_JACKO2", - "MT_JACKO3", - // Dr Seuss Trees - "MT_HHZTREE_TOP", - "MT_HHZTREE_PART", - // Misc - "MT_HHZSHROOM", - "MT_HHZGRASS", - "MT_HHZTENTACLE1", - "MT_HHZTENTACLE2", - "MT_HHZSTALAGMITE_TALL", - "MT_HHZSTALAGMITE_SHORT", - - // Botanic Serenity scenery - "MT_BSZTALLFLOWER_RED", - "MT_BSZTALLFLOWER_PURPLE", - "MT_BSZTALLFLOWER_BLUE", - "MT_BSZTALLFLOWER_CYAN", - "MT_BSZTALLFLOWER_YELLOW", - "MT_BSZTALLFLOWER_ORANGE", - "MT_BSZFLOWER_RED", - "MT_BSZFLOWER_PURPLE", - "MT_BSZFLOWER_BLUE", - "MT_BSZFLOWER_CYAN", - "MT_BSZFLOWER_YELLOW", - "MT_BSZFLOWER_ORANGE", - "MT_BSZSHORTFLOWER_RED", - "MT_BSZSHORTFLOWER_PURPLE", - "MT_BSZSHORTFLOWER_BLUE", - "MT_BSZSHORTFLOWER_CYAN", - "MT_BSZSHORTFLOWER_YELLOW", - "MT_BSZSHORTFLOWER_ORANGE", - "MT_BSZTULIP_RED", - "MT_BSZTULIP_PURPLE", - "MT_BSZTULIP_BLUE", - "MT_BSZTULIP_CYAN", - "MT_BSZTULIP_YELLOW", - "MT_BSZTULIP_ORANGE", - "MT_BSZCLUSTER_RED", - "MT_BSZCLUSTER_PURPLE", - "MT_BSZCLUSTER_BLUE", - "MT_BSZCLUSTER_CYAN", - "MT_BSZCLUSTER_YELLOW", - "MT_BSZCLUSTER_ORANGE", - "MT_BSZBUSH_RED", - "MT_BSZBUSH_PURPLE", - "MT_BSZBUSH_BLUE", - "MT_BSZBUSH_CYAN", - "MT_BSZBUSH_YELLOW", - "MT_BSZBUSH_ORANGE", - "MT_BSZVINE_RED", - "MT_BSZVINE_PURPLE", - "MT_BSZVINE_BLUE", - "MT_BSZVINE_CYAN", - "MT_BSZVINE_YELLOW", - "MT_BSZVINE_ORANGE", - "MT_BSZSHRUB", - "MT_BSZCLOVER", - "MT_BIG_PALMTREE_TRUNK", - "MT_BIG_PALMTREE_TOP", - "MT_PALMTREE_TRUNK", - "MT_PALMTREE_TOP", - - // Misc scenery - "MT_DBALL", - "MT_EGGSTATUE2", - - // Powerup Indicators - "MT_ELEMENTAL_ORB", // Elemental shield mobj - "MT_ATTRACT_ORB", // Attract shield mobj - "MT_FORCE_ORB", // Force shield mobj - "MT_ARMAGEDDON_ORB", // Armageddon shield mobj - "MT_WHIRLWIND_ORB", // Whirlwind shield mobj - "MT_PITY_ORB", // Pity shield mobj - "MT_FLAMEAURA_ORB", // Flame shield mobj - "MT_BUBBLEWRAP_ORB", // Bubble shield mobj - "MT_THUNDERCOIN_ORB", // Thunder shield mobj - "MT_THUNDERCOIN_SPARK", // Thunder spark - "MT_IVSP", // Invincibility sparkles - "MT_SUPERSPARK", // Super Sonic Spark - - // Flickies - "MT_FLICKY_01", // Bluebird - "MT_FLICKY_01_CENTER", - "MT_FLICKY_02", // Rabbit - "MT_FLICKY_02_CENTER", - "MT_FLICKY_03", // Chicken - "MT_FLICKY_03_CENTER", - "MT_FLICKY_04", // Seal - "MT_FLICKY_04_CENTER", - "MT_FLICKY_05", // Pig - "MT_FLICKY_05_CENTER", - "MT_FLICKY_06", // Chipmunk - "MT_FLICKY_06_CENTER", - "MT_FLICKY_07", // Penguin - "MT_FLICKY_07_CENTER", - "MT_FLICKY_08", // Fish - "MT_FLICKY_08_CENTER", - "MT_FLICKY_09", // Ram - "MT_FLICKY_09_CENTER", - "MT_FLICKY_10", // Puffin - "MT_FLICKY_10_CENTER", - "MT_FLICKY_11", // Cow - "MT_FLICKY_11_CENTER", - "MT_FLICKY_12", // Rat - "MT_FLICKY_12_CENTER", - "MT_FLICKY_13", // Bear - "MT_FLICKY_13_CENTER", - "MT_FLICKY_14", // Dove - "MT_FLICKY_14_CENTER", - "MT_FLICKY_15", // Cat - "MT_FLICKY_15_CENTER", - "MT_FLICKY_16", // Canary - "MT_FLICKY_16_CENTER", - "MT_SECRETFLICKY_01", // Spider - "MT_SECRETFLICKY_01_CENTER", - "MT_SECRETFLICKY_02", // Bat - "MT_SECRETFLICKY_02_CENTER", - "MT_SEED", - - // Environmental Effects - "MT_RAIN", // Rain - "MT_SNOWFLAKE", // Snowflake - "MT_SPLISH", // Water splish! - "MT_LAVASPLISH", // Lava splish! - "MT_SMOKE", - "MT_SMALLBUBBLE", // small bubble - "MT_MEDIUMBUBBLE", // medium bubble - "MT_EXTRALARGEBUBBLE", // extra large bubble - "MT_WATERZAP", - "MT_SPINDUST", // Spindash dust - "MT_TFOG", - "MT_PARTICLE", - "MT_PARTICLEGEN", // For fans, etc. - - // Game Indicators - "MT_SCORE", // score logo - "MT_DROWNNUMBERS", // Drowning Timer - "MT_GOTEMERALD", // Chaos Emerald (intangible) - "MT_LOCKON", // Target - "MT_LOCKONINF", // In-level Target - "MT_TAG", // Tag Sign - "MT_GOTFLAG", // Got Flag sign - "MT_FINISHFLAG", // Finish flag - - // Ambient Sounds - "MT_AMBIENT", - - "MT_CORK", - "MT_LHRT", - - // Ring Weapons - "MT_REDRING", - "MT_BOUNCERING", - "MT_RAILRING", - "MT_INFINITYRING", - "MT_AUTOMATICRING", - "MT_EXPLOSIONRING", - "MT_SCATTERRING", - "MT_GRENADERING", - - "MT_BOUNCEPICKUP", - "MT_RAILPICKUP", - "MT_AUTOPICKUP", - "MT_EXPLODEPICKUP", - "MT_SCATTERPICKUP", - "MT_GRENADEPICKUP", - - "MT_THROWNBOUNCE", - "MT_THROWNINFINITY", - "MT_THROWNAUTOMATIC", - "MT_THROWNSCATTER", - "MT_THROWNEXPLOSION", - "MT_THROWNGRENADE", - - // Mario-specific stuff - "MT_COIN", - "MT_FLINGCOIN", - "MT_GOOMBA", - "MT_BLUEGOOMBA", - "MT_FIREFLOWER", - "MT_FIREBALL", - "MT_FIREBALLTRAIL", - "MT_SHELL", - "MT_PUMA", - "MT_PUMATRAIL", - "MT_HAMMER", - "MT_KOOPA", - "MT_KOOPAFLAME", - "MT_AXE", - "MT_MARIOBUSH1", - "MT_MARIOBUSH2", - "MT_TOAD", - - // NiGHTS Stuff - "MT_AXIS", - "MT_AXISTRANSFER", - "MT_AXISTRANSFERLINE", - "MT_NIGHTSDRONE", - "MT_NIGHTSDRONE_MAN", - "MT_NIGHTSDRONE_SPARKLING", - "MT_NIGHTSDRONE_GOAL", - "MT_NIGHTSPARKLE", - "MT_NIGHTSLOOPHELPER", - "MT_NIGHTSBUMPER", // NiGHTS Bumper - "MT_HOOP", - "MT_HOOPCOLLIDE", // Collision detection for NiGHTS hoops - "MT_HOOPCENTER", // Center of a hoop - "MT_NIGHTSCORE", - "MT_NIGHTSCHIP", // NiGHTS Chip - "MT_FLINGNIGHTSCHIP", // Lost NiGHTS Chip - "MT_NIGHTSSTAR", // NiGHTS Star - "MT_FLINGNIGHTSSTAR", // Lost NiGHTS Star - "MT_NIGHTSSUPERLOOP", - "MT_NIGHTSDRILLREFILL", - "MT_NIGHTSHELPER", - "MT_NIGHTSEXTRATIME", - "MT_NIGHTSLINKFREEZE", - "MT_EGGCAPSULE", - "MT_IDEYAANCHOR", - "MT_NIGHTOPIANHELPER", // the actual helper object that orbits you - "MT_PIAN", // decorative singing friend - "MT_SHLEEP", // almost-decorative sleeping enemy - - // Secret badniks and hazards, shhhh - "MT_PENGUINATOR", - "MT_POPHAT", - "MT_POPSHOT", - "MT_POPSHOT_TRAIL", - - "MT_HIVEELEMENTAL", - "MT_BUMBLEBORE", - - "MT_BUGGLE", - - "MT_SMASHINGSPIKEBALL", - "MT_CACOLANTERN", - "MT_CACOSHARD", - "MT_CACOFIRE", - "MT_SPINBOBERT", - "MT_SPINBOBERT_FIRE1", - "MT_SPINBOBERT_FIRE2", - "MT_HANGSTER", - - // Utility Objects - "MT_TELEPORTMAN", - "MT_ALTVIEWMAN", - "MT_CRUMBLEOBJ", // Sound generator for crumbling platform - "MT_TUBEWAYPOINT", - "MT_PUSH", - "MT_GHOST", - "MT_OVERLAY", - "MT_ANGLEMAN", - "MT_POLYANCHOR", - "MT_POLYSPAWN", - - // Portal objects - "MT_SKYBOX", - - // Debris - "MT_SPARK", //spark - "MT_EXPLODE", // Robot Explosion - "MT_UWEXPLODE", // Underwater Explosion - "MT_DUST", - "MT_ROCKSPAWNER", - "MT_FALLINGROCK", - "MT_ROCKCRUMBLE1", - "MT_ROCKCRUMBLE2", - "MT_ROCKCRUMBLE3", - "MT_ROCKCRUMBLE4", - "MT_ROCKCRUMBLE5", - "MT_ROCKCRUMBLE6", - "MT_ROCKCRUMBLE7", - "MT_ROCKCRUMBLE8", - "MT_ROCKCRUMBLE9", - "MT_ROCKCRUMBLE10", - "MT_ROCKCRUMBLE11", - "MT_ROCKCRUMBLE12", - "MT_ROCKCRUMBLE13", - "MT_ROCKCRUMBLE14", - "MT_ROCKCRUMBLE15", - "MT_ROCKCRUMBLE16", - - // Level debris - "MT_GFZDEBRIS", - "MT_BRICKDEBRIS", - "MT_WOODDEBRIS", - "MT_REDBRICKDEBRIS", - "MT_BLUEBRICKDEBRIS", - "MT_YELLOWBRICKDEBRIS", - - "MT_NAMECHECK", - "MT_RAY", -}; - const char *const MOBJFLAG_LIST[] = { "SPECIAL", "SOLID", @@ -5811,13 +1826,9 @@ struct int_const_s const INT_CONST[] = { void DEH_TableCheck(void) { #if defined(_DEBUG) || defined(PARANOIA) - const size_t dehstates = sizeof(STATE_LIST)/sizeof(const char*); const size_t dehpowers = sizeof(POWERS_LIST)/sizeof(const char*); const size_t dehcolors = sizeof(COLOR_ENUMS)/sizeof(const char*); - if (dehstates != S_FIRSTFREESLOT) - I_Error("You forgot to update the Dehacked states list, you dolt!\n(%d states defined, versus %s in the Dehacked list)\n", S_FIRSTFREESLOT, sizeu1(dehstates)); - if (dehpowers != NUMPOWERS) I_Error("You forgot to update the Dehacked powers list, you dolt!\n(%d powers defined, versus %s in the Dehacked list)\n", NUMPOWERS, sizeu1(dehpowers)); diff --git a/src/deh_tables.h b/src/deh_tables.h index 61592e47ef9e991e66cfbb86bd66d767129cb709..4b4bc6ecdb90b3d7a49f79cc4305fe579789d7dd 100644 --- a/src/deh_tables.h +++ b/src/deh_tables.h @@ -20,12 +20,10 @@ // Free slot names // The crazy word-reading stuff uses these. -extern char *FREE_STATES[NUMSTATEFREESLOTS]; extern char *FREE_SKINCOLORS[NUMCOLORFREESLOTS]; extern bitarray_t used_spr[BIT_ARRAY_SIZE(NUMSPRITEFREESLOTS)]; // Sprite freeslots in use #define initfreeslots() {\ - memset(FREE_STATES, 0, sizeof(FREE_STATES));\ memset(FREE_SKINCOLORS, 0, sizeof(FREE_SKINCOLORS));\ memset(used_spr, 0, sizeof(used_spr));\ memset(actionsoverridden, LUA_REFNIL, sizeof(actionsoverridden));\ @@ -55,8 +53,6 @@ struct int_const_s { extern const char NIGHTSGRADE_LIST[]; extern struct flickytypes_s FLICKYTYPES[]; extern actionpointer_t actionpointers[]; // Array mapping action names to action functions. -extern const char *const STATE_LIST[]; -extern const char *const MOBJTYPE_LIST[]; extern const char *const MOBJFLAG_LIST[]; extern const char *const MOBJFLAG2_LIST[]; // \tMF2_(\S+).*// (.+) --> \t"\1", // \2 extern const char *const MOBJEFLAG_LIST[]; diff --git a/src/dehacked.c b/src/dehacked.c index 253c3c6861e1eb5327aa518b05522e71b32f9cdd..881bcee439cdaa2914a8c79671b37f34f86051f1 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -305,7 +305,7 @@ static void DEH_LoadDehackedFile(MYFILE *f, boolean mainfile) readthing(f, i); else { - deh_warning("Thing %d out of range (1 - %zu)", i, nummobjinfo-1); + deh_warning("Thing %d out of range (1 - %d)", i, nummobjinfo-1); ignorelines(f); } } @@ -441,11 +441,11 @@ static void DEH_LoadDehackedFile(MYFILE *f, boolean mainfile) { if (i == 0 && word2[0] != '0') // If word2 isn't a number i = get_state(word2); // find a state by name - if (i < NUMSTATES && i >= 0) + if ((UINT32)i < numstates && i >= 0) readframe(f, i); else { - deh_warning("Frame %d out of range (0 - %d)", i, NUMSTATES-1); + deh_warning("Frame %d out of range (0 - %d)", i, numstates-1); ignorelines(f); } } diff --git a/src/f_finale.c b/src/f_finale.c index 9ff50147e0bb36ae17d3c23672b82d6528f54871..99d5082c20700180018606e04269206dbf6eb2d1 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -4578,9 +4578,9 @@ void F_TextPromptDrawer(void) players[j].powers[pw_nocontrol] = 1;\ if (players[j].mo)\ {\ - if (players[j].mo->state == states+S_PLAY_STND && players[j].mo->tics != -1)\ + if (players[j].mo->state->num == S_PLAY_STND && players[j].mo->tics != -1)\ players[j].mo->tics++;\ - else if (players[j].mo->state == states+S_PLAY_WAIT)\ + else if (players[j].mo->state->num == S_PLAY_WAIT)\ P_SetMobjState(players[j].mo, S_PLAY_STND);\ }\ } diff --git a/src/g_demo.c b/src/g_demo.c index b60aadacc569657869fad932104149b4506dab58..21865c3c51368020f9c17cecd231550986e4a183 100644 --- a/src/g_demo.c +++ b/src/g_demo.c @@ -810,8 +810,8 @@ void G_GhostTicker(void) mobj = P_SpawnMobjFromMobj(g->mo, 0, 0, -FixedDiv(FixedMul(g->mo->info->height, g->mo->scale) - g->mo->height,3*FRACUNIT), MT_THOK); if (!P_MobjWasRemoved(mobj)) { - mobj->sprite = states[mobjinfo[type]->spawnstate].sprite; - mobj->frame = (states[mobjinfo[type]->spawnstate].frame & FF_FRAMEMASK) | tr_trans60<<FF_TRANSSHIFT; + mobj->sprite = states[mobjinfo[type]->spawnstate]->sprite; + mobj->frame = (states[mobjinfo[type]->spawnstate]->frame & FF_FRAMEMASK) | tr_trans60<<FF_TRANSSHIFT; mobj->color = g->mo->color; mobj->skin = g->mo->skin; P_SetScale(mobj, g->mo->scale, true); @@ -1116,8 +1116,8 @@ void G_ReadMetalTic(mobj_t *metal) mobj = P_SpawnMobjFromMobj(metal, 0, 0, -FixedDiv(FixedMul(metal->info->height, metal->scale) - metal->height,3*FRACUNIT), MT_THOK); if (!P_MobjWasRemoved(mobj)) { - mobj->sprite = states[mobjinfo[type]->spawnstate].sprite; - mobj->frame = states[mobjinfo[type]->spawnstate].frame; + mobj->sprite = states[mobjinfo[type]->spawnstate]->sprite; + mobj->frame = states[mobjinfo[type]->spawnstate]->frame; mobj->angle = metal->angle; mobj->color = metal->color; mobj->skin = metal->skin; @@ -2607,7 +2607,7 @@ void G_AddGhost(char *defdemoname) } gh->oldmo.color = gh->mo->color; - gh->mo->state = &states[S_PLAY_STND]; + gh->mo->state = states[S_PLAY_STND]; gh->mo->sprite = gh->mo->state->sprite; gh->mo->sprite2 = P_GetStateSprite2(gh->mo->state); gh->mo->frame = (gh->mo->state->frame & ~FF_FRAMEMASK) | P_GetSprite2StateFrame(gh->mo->state); diff --git a/src/hardware/hw_light.c b/src/hardware/hw_light.c index e7769edbd8da2dbaa38debfabae9a34f25d121ee..8dac9bb4218293a5f55bcb97e436ec05b89112d6 100644 --- a/src/hardware/hw_light.c +++ b/src/hardware/hw_light.c @@ -980,8 +980,8 @@ void HWR_DoCoronasLighting(FOutVector *outVerts, gl_vissprite_t *spr) //CONS_Debug(DBG_RENDER, "sprite (type): %d (%s)\n", spr->type, sprnames[spr->type]); p_lspr = t_lspr[spr->mobj->sprite]; - if ((spr->mobj->state>=&states[S_EXPLODE1] && spr->mobj->state<=&states[S_EXPLODE3]) - || (spr->mobj->state>=&states[S_FATSHOTX1] && spr->mobj->state<=&states[S_FATSHOTX3])) + if ((spr->mobj->state->num>=S_EXPLODE1 && spr->mobj->state->num<=S_EXPLODE3) + || (spr->mobj->state->num>=S_FATSHOTX1 && spr->mobj->state->num<=S_FATSHOTX3)) { p_lspr = &lspr[ROCKETEXP_L]; } diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index f533082f76e6db8af21e90c6dcf4f98949f7f532..518797ca5c3ae34f4b83200f3dcdf85400d719fe 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -4381,8 +4381,8 @@ static void HWR_ProjectSprite(mobj_t *thing) { CONS_Alert(CONS_ERROR, M_GetText("HWR_ProjectSprite: invalid sprite frame %s/%s for %s\n"), sizeu1(rot), sizeu2(sprdef->numframes), sprnames[thing->sprite]); - thing->sprite = states[S_UNKNOWN].sprite; - thing->frame = states[S_UNKNOWN].frame; + thing->sprite = states[S_UNKNOWN]->sprite; + thing->frame = states[S_UNKNOWN]->frame; sprdef = &sprites[thing->sprite]; #ifdef ROTSPRITE sprinfo = &spriteinfo[thing->sprite]; diff --git a/src/hardware/hw_md2.c b/src/hardware/hw_md2.c index 0bb8de851bd2ad1b1891b92322943df83d349539..456bbc173cfad66699b072bb71d48a9641177e86 100644 --- a/src/hardware/hw_md2.c +++ b/src/hardware/hw_md2.c @@ -1053,7 +1053,7 @@ static void HWR_GetBlendedTexture(patch_t *patch, patch_t *blendpatch, INT32 ski static boolean HWR_AllowModel(mobj_t *mobj) { // Signpost overlay. Not needed. - if (mobj->sprite2 == SPR2_SIGN || mobj->state-states == S_PLAY_SIGN) + if (mobj->sprite2 == SPR2_SIGN || mobj->state->num == S_PLAY_SIGN) return false; // Otherwise, render the model. @@ -1470,7 +1470,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr) if (spr2frames) { - UINT16 next_spr2 = P_GetStateSprite2(&states[spr->mobj->state->nextstate]); + UINT16 next_spr2 = P_GetStateSprite2(states[spr->mobj->state->nextstate]); // Add or remove SPR2F_SUPER based on certain conditions next_spr2 = P_ApplySuperFlagToSprite2(next_spr2, spr->mobj); @@ -1478,7 +1478,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr) if (HWR_CanInterpolateSprite2(spr2frames) && (spr->mobj->frame & FF_ANIMATE || (spr->mobj->state->nextstate != S_NULL - && states[spr->mobj->state->nextstate].sprite == SPR_PLAY + && states[spr->mobj->state->nextstate]->sprite == SPR_PLAY && ((P_GetSkinSprite2(spr->mobj->skin, next_spr2, spr->mobj->player) == spr->mobj->sprite2))))) { nextFrame = (spr->mobj->frame & FF_FRAMEMASK) + 1; @@ -1506,9 +1506,9 @@ boolean HWR_DrawModel(gl_vissprite_t *spr) } else { - if (spr->mobj->state->nextstate != S_NULL && states[spr->mobj->state->nextstate].sprite != SPR_NULL - && !(spr->mobj->player && (spr->mobj->state->nextstate == S_PLAY_WAIT) && spr->mobj->state == &states[S_PLAY_STND])) - nextFrame = (states[spr->mobj->state->nextstate].frame & FF_FRAMEMASK) % mod; + if (spr->mobj->state->nextstate != S_NULL && states[spr->mobj->state->nextstate]->sprite != SPR_NULL + && !(spr->mobj->player && (spr->mobj->state->nextstate == S_PLAY_WAIT) && spr->mobj->state == states[S_PLAY_STND])) + nextFrame = (states[spr->mobj->state->nextstate]->frame & FF_FRAMEMASK) % mod; } } } diff --git a/src/hu_stuff.c b/src/hu_stuff.c index 4e2f3d492974c0027c3b343a075018dc29682d33..91a37cb975485cda199e71cf1e56b0f44fa5277e 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -1800,7 +1800,7 @@ void HU_Drawer(void) // IN-LEVEL MULTIPLAYER RANKINGS //====================================================================== -#define supercheckdef (!(players[tab[i].num].charflags & SF_NOSUPERSPRITES) && ((players[tab[i].num].powers[pw_super] && players[tab[i].num].mo && (players[tab[i].num].mo->state < &states[S_PLAY_SUPER_TRANS1] || players[tab[i].num].mo->state >= &states[S_PLAY_SUPER_TRANS6])) || (players[tab[i].num].powers[pw_carry] == CR_NIGHTSMODE && skins[players[tab[i].num].skin]->flags & SF_SUPER))) +#define supercheckdef (!(players[tab[i].num].charflags & SF_NOSUPERSPRITES) && ((players[tab[i].num].powers[pw_super] && players[tab[i].num].mo && (players[tab[i].num].mo->state->num < S_PLAY_SUPER_TRANS1 || players[tab[i].num].mo->state->num >= S_PLAY_SUPER_TRANS6)) || (players[tab[i].num].powers[pw_carry] == CR_NIGHTSMODE && skins[players[tab[i].num].skin]->flags & SF_SUPER))) #define greycheckdef (players[tab[i].num].spectator || players[tab[i].num].playerstate == PST_DEAD || (G_IsSpecialStage(gamemap) && players[tab[i].num].exiting)) // diff --git a/src/info.c b/src/info.c index 95b7c94858790ef67633ed087a6cfc16872120d8..a7739820180003d875520e35fa87242781b12c8b 100644 --- a/src/info.c +++ b/src/info.c @@ -683,7 +683,7 @@ playersprite_t spr2defaults[NUMPLAYERSPRITES] = { }; // Doesn't work with g++, needs actionf_p1 (don't modify this comment) -state_t states[NUMSTATES] = +static const state_t startstates[] = { // frame is masked through FF_FRAMEMASK // FF_ANIMATE makes simple state animations (var1 #frames, var2 tic delay) @@ -692,3312 +692,3315 @@ state_t states[NUMSTATES] = // (or tr_trans10<<FF_TRANSSHIFT if you want to make it hard on yourself) // Keep this comment directly above S_NULL. - {SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL, 0}, // S_NULL - {SPR_UNKN, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_UNKNOWN - {SPR_NULL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_INVISIBLE - - {SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 0, 0, S_NULL, 0}, // S_SPAWNSTATE - {SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 1, 0, S_NULL, 0}, // S_SEESTATE - {SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 2, 0, S_NULL, 0}, // S_MELEESTATE - {SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 3, 0, S_NULL, 0}, // S_MISSILESTATE - {SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 4, 0, S_NULL, 0}, // S_DEATHSTATE - {SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 5, 0, S_NULL, 0}, // S_XDEATHSTATE - {SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 6, 0, S_NULL, 0}, // S_RAISESTATE + {"S_NULL", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL, 0}, + {"S_UNKNOWN", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_INVISIBLE", 0, SPR_NULL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + + {"S_SPAWNSTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 0, 0, S_NULL, 0}, + {"S_SEESTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 1, 0, S_NULL, 0}, + {"S_MELEESTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 2, 0, S_NULL, 0}, + {"S_MISSILESTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 3, 0, S_NULL, 0}, + {"S_DEATHSTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 4, 0, S_NULL, 0}, + {"S_XDEATHSTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 5, 0, S_NULL, 0}, + {"S_RAISESTATE", 0, SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 6, 0, S_NULL, 0}, // Thok - {SPR_THOK, FF_TRANS50, 8, {NULL}, 0, 0, S_NULL, 0}, // S_THOK + {"S_THOK", 0, SPR_THOK, FF_TRANS50, 8, {NULL}, 0, 0, S_NULL, 0}, // Player - {SPR_PLAY, SPR2_STND|FF_ANIMATE, 105, {NULL}, 0, 7, S_PLAY_WAIT, 0}, // S_PLAY_STND - {SPR_PLAY, SPR2_WAIT|FF_ANIMATE, -1, {NULL}, 0, 16, S_NULL, 0}, // S_PLAY_WAIT - {SPR_PLAY, SPR2_WALK, 4, {NULL}, 0, 0, S_PLAY_WALK, 0}, // S_PLAY_WALK - {SPR_PLAY, SPR2_SKID, 1, {NULL}, 0, 0, S_PLAY_WALK, 0}, // S_PLAY_SKID - {SPR_PLAY, SPR2_RUN , 2, {NULL}, 0, 0, S_PLAY_RUN, 0}, // S_PLAY_RUN - {SPR_PLAY, SPR2_DASH, 2, {NULL}, 0, 0, S_PLAY_DASH, 0}, // S_PLAY_DASH - {SPR_PLAY, SPR2_PAIN|FF_ANIMATE, 350, {NULL}, 0, 4, S_PLAY_FALL, 0}, // S_PLAY_PAIN - {SPR_PLAY, SPR2_STUN|FF_ANIMATE, 350, {NULL}, 0, 4, S_PLAY_FALL, 0}, // S_PLAY_STUN - {SPR_PLAY, SPR2_DEAD|FF_ANIMATE, -1, {NULL}, 0, 4, S_NULL, 0}, // S_PLAY_DEAD - {SPR_PLAY, SPR2_DRWN|FF_ANIMATE, -1, {NULL}, 0, 4, S_NULL, 0}, // S_PLAY_DRWN - {SPR_PLAY, SPR2_ROLL, 1, {NULL}, 0, 0, S_PLAY_ROLL, 0}, // S_PLAY_ROLL - {SPR_PLAY, SPR2_GASP|FF_ANIMATE, 14, {NULL}, 0, 4, S_PLAY_WALK, 0}, // S_PLAY_GASP - {SPR_PLAY, SPR2_JUMP, 1, {NULL}, 0, 0, S_PLAY_JUMP, 0}, // S_PLAY_JUMP - {SPR_PLAY, SPR2_SPNG, 2, {NULL}, 0, 0, S_PLAY_SPRING, 0}, // S_PLAY_SPRING - {SPR_PLAY, SPR2_FALL, 2, {NULL}, 0, 0, S_PLAY_FALL, 0}, // S_PLAY_FALL - {SPR_PLAY, SPR2_EDGE, 12, {NULL}, 0, 0, S_PLAY_EDGE, 0}, // S_PLAY_EDGE - {SPR_PLAY, SPR2_RIDE, 4, {NULL}, 0, 0, S_PLAY_RIDE, 0}, // S_PLAY_RIDE + {"S_PLAY_STND", 0, SPR_PLAY, SPR2_STND|FF_ANIMATE, 105, {NULL}, 0, 7, S_PLAY_WAIT, 0}, + {"S_PLAY_WAIT", 0, SPR_PLAY, SPR2_WAIT|FF_ANIMATE, -1, {NULL}, 0, 16, S_NULL, 0}, + {"S_PLAY_WALK", 0, SPR_PLAY, SPR2_WALK, 4, {NULL}, 0, 0, S_PLAY_WALK, 0}, + {"S_PLAY_SKID", 0, SPR_PLAY, SPR2_SKID, 1, {NULL}, 0, 0, S_PLAY_WALK, 0}, + {"S_PLAY_RUN", 0, SPR_PLAY, SPR2_RUN , 2, {NULL}, 0, 0, S_PLAY_RUN, 0}, + {"S_PLAY_DASH", 0, SPR_PLAY, SPR2_DASH, 2, {NULL}, 0, 0, S_PLAY_DASH, 0}, + {"S_PLAY_PAIN", 0, SPR_PLAY, SPR2_PAIN|FF_ANIMATE, 350, {NULL}, 0, 4, S_PLAY_FALL, 0}, + {"S_PLAY_STUN", 0, SPR_PLAY, SPR2_STUN|FF_ANIMATE, 350, {NULL}, 0, 4, S_PLAY_FALL, 0}, + {"S_PLAY_DEAD", 0, SPR_PLAY, SPR2_DEAD|FF_ANIMATE, -1, {NULL}, 0, 4, S_NULL, 0}, + {"S_PLAY_DRWN", 0, SPR_PLAY, SPR2_DRWN|FF_ANIMATE, -1, {NULL}, 0, 4, S_NULL, 0}, + {"S_PLAY_ROLL", 0, SPR_PLAY, SPR2_ROLL, 1, {NULL}, 0, 0, S_PLAY_ROLL, 0}, + {"S_PLAY_GASP", 0, SPR_PLAY, SPR2_GASP|FF_ANIMATE, 14, {NULL}, 0, 4, S_PLAY_WALK, 0}, + {"S_PLAY_JUMP", 0, SPR_PLAY, SPR2_JUMP, 1, {NULL}, 0, 0, S_PLAY_JUMP, 0}, + {"S_PLAY_SPRING", 0, SPR_PLAY, SPR2_SPNG, 2, {NULL}, 0, 0, S_PLAY_SPRING, 0}, + {"S_PLAY_FALL", 0, SPR_PLAY, SPR2_FALL, 2, {NULL}, 0, 0, S_PLAY_FALL, 0}, + {"S_PLAY_EDGE", 0, SPR_PLAY, SPR2_EDGE, 12, {NULL}, 0, 0, S_PLAY_EDGE, 0}, + {"S_PLAY_RIDE", 0, SPR_PLAY, SPR2_RIDE, 4, {NULL}, 0, 0, S_PLAY_RIDE, 0}, // CA2_SPINDASH - {SPR_PLAY, SPR2_SPIN, 2, {NULL}, 0, 0, S_PLAY_SPINDASH, 0}, // S_PLAY_SPINDASH + {"S_PLAY_SPINDASH", 0, SPR_PLAY, SPR2_SPIN, 2, {NULL}, 0, 0, S_PLAY_SPINDASH, 0}, // CA_FLY/CA_SWIM - {SPR_PLAY, SPR2_FLY , 2, {NULL}, 0, 0, S_PLAY_FLY, 0}, // S_PLAY_FLY - {SPR_PLAY, SPR2_SWIM, 4, {NULL}, 0, 0, S_PLAY_SWIM, 0}, // S_PLAY_SWIM - {SPR_PLAY, SPR2_TIRE, 12, {NULL}, 0, 0, S_PLAY_FLY_TIRED, 0}, // S_PLAY_FLY_TIRED + {"S_PLAY_FLY", 0, SPR_PLAY, SPR2_FLY , 2, {NULL}, 0, 0, S_PLAY_FLY, 0}, + {"S_PLAY_SWIM", 0, SPR_PLAY, SPR2_SWIM, 4, {NULL}, 0, 0, S_PLAY_SWIM, 0}, + {"S_PLAY_FLY_TIRED", 0, SPR_PLAY, SPR2_TIRE, 12, {NULL}, 0, 0, S_PLAY_FLY_TIRED, 0}, // CA_GLIDEANDCLIMB - {SPR_PLAY, SPR2_GLID, 2, {NULL}, 0, 0, S_PLAY_GLIDE, 0}, // S_PLAY_GLIDE - {SPR_PLAY, SPR2_LAND, 7, {NULL}, 0, 0, S_PLAY_STND, 0}, // S_PLAY_GLIDE_LANDING - {SPR_PLAY, SPR2_CLNG|FF_ANIMATE, -1, {NULL}, 0, 4, S_NULL, 0}, // S_PLAY_CLING - {SPR_PLAY, SPR2_CLMB, 5, {NULL}, 0, 0, S_PLAY_CLIMB, 0}, // S_PLAY_CLIMB + {"S_PLAY_GLIDE", 0, SPR_PLAY, SPR2_GLID, 2, {NULL}, 0, 0, S_PLAY_GLIDE, 0}, + {"S_PLAY_GLIDE_LANDING", 0, SPR_PLAY, SPR2_LAND, 7, {NULL}, 0, 0, S_PLAY_STND, 0}, + {"S_PLAY_CLING", 0, SPR_PLAY, SPR2_CLNG|FF_ANIMATE, -1, {NULL}, 0, 4, S_NULL, 0}, + {"S_PLAY_CLIMB", 0, SPR_PLAY, SPR2_CLMB, 5, {NULL}, 0, 0, S_PLAY_CLIMB, 0}, // CA_FLOAT/CA_SLOWFALL - {SPR_PLAY, SPR2_FLT , 7, {NULL}, 0, 0, S_PLAY_FLOAT, 0}, // S_PLAY_FLOAT - {SPR_PLAY, SPR2_FRUN, 7, {NULL}, 0, 0, S_PLAY_FLOAT_RUN, 0}, // S_PLAY_FLOAT_RUN + {"S_PLAY_FLOAT", 0, SPR_PLAY, SPR2_FLT , 7, {NULL}, 0, 0, S_PLAY_FLOAT, 0}, + {"S_PLAY_FLOAT_RUN", 0, SPR_PLAY, SPR2_FRUN, 7, {NULL}, 0, 0, S_PLAY_FLOAT_RUN, 0}, // CA_BOUNCE - {SPR_PLAY, SPR2_BNCE|FF_ANIMATE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_PLAY_BOUNCE - {SPR_PLAY, SPR2_LAND|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_BOUNCE, 0, S_PLAY_BOUNCE_LANDING, 0}, // S_PLAY_BOUNCE_LANDING + {"S_PLAY_BOUNCE", 0, SPR_PLAY, SPR2_BNCE|FF_ANIMATE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_PLAY_BOUNCE_LANDING", 0, SPR_PLAY, SPR2_LAND|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_BOUNCE, 0, S_PLAY_BOUNCE_LANDING, 0}, // CA2_GUNSLINGER - {SPR_PLAY, SPR2_FIRE|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_FIRE_FINISH, 0, S_PLAY_FIRE, 0}, // S_PLAY_FIRE - {SPR_PLAY, SPR2_FIRE, 15, {NULL}, S_PLAY_STND, 0, S_PLAY_STND, 0}, // S_PLAY_FIRE_FINISH + {"S_PLAY_FIRE", 0, SPR_PLAY, SPR2_FIRE|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_FIRE_FINISH, 0, S_PLAY_FIRE, 0}, + {"S_PLAY_FIRE_FINISH", 0, SPR_PLAY, SPR2_FIRE, 15, {NULL}, S_PLAY_STND, 0, S_PLAY_STND, 0}, // CA_TWINSPIN - {SPR_PLAY, SPR2_TWIN|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_JUMP, 0, S_PLAY_TWINSPIN, 0}, // S_PLAY_TWINSPIN + {"S_PLAY_TWINSPIN", 0, SPR_PLAY, SPR2_TWIN|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_JUMP, 0, S_PLAY_TWINSPIN, 0}, // CA2_MELEE - {SPR_PLAY, SPR2_MLEE|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_MELEE_FINISH, 0, S_PLAY_MELEE, 0}, // S_PLAY_MELEE - {SPR_PLAY, SPR2_MLEE, 70, {NULL}, 0, 0, S_PLAY_FALL, 0}, // S_PLAY_MELEE_FINISH - {SPR_PLAY, SPR2_MLEL, 35, {NULL}, 0, 0, S_PLAY_WALK, 0}, // S_PLAY_MELEE_LANDING + {"S_PLAY_MELEE", 0, SPR_PLAY, SPR2_MLEE|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_MELEE_FINISH, 0, S_PLAY_MELEE, 0}, + {"S_PLAY_MELEE_FINISH", 0, SPR_PLAY, SPR2_MLEE, 70, {NULL}, 0, 0, S_PLAY_FALL, 0}, + {"S_PLAY_MELEE_LANDING", 0, SPR_PLAY, SPR2_MLEL, 35, {NULL}, 0, 0, S_PLAY_WALK, 0}, // SF_SUPER - {SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_ANIMATE, 7, {NULL}, 0, 4, S_PLAY_SUPER_TRANS2, 0}, // S_PLAY_SUPER_TRANS1 - {SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER, 3, {NULL}, 0, 0, S_PLAY_SUPER_TRANS3, 0}, // S_PLAY_SUPER_TRANS2 - {SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_SUPER_TRANS4, 0}, // S_PLAY_SUPER_TRANS3 - {SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_SUPER_TRANS5, 0}, // S_PLAY_SUPER_TRANS4 - {SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_SUPER_TRANS6, 0}, // S_PLAY_SUPER_TRANS5 - {SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 19, {A_FadeOverlay}, 0, 0, S_PLAY_FALL, 0}, // S_PLAY_SUPER_TRANS6 + {"S_PLAY_SUPER_TRANS1", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_ANIMATE, 7, {NULL}, 0, 4, S_PLAY_SUPER_TRANS2, 0}, + {"S_PLAY_SUPER_TRANS2", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER, 3, {NULL}, 0, 0, S_PLAY_SUPER_TRANS3, 0}, + {"S_PLAY_SUPER_TRANS3", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_SUPER_TRANS4, 0}, + {"S_PLAY_SUPER_TRANS4", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_SUPER_TRANS5, 0}, + {"S_PLAY_SUPER_TRANS5", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_SUPER_TRANS6, 0}, + {"S_PLAY_SUPER_TRANS6", 0, SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 19, {A_FadeOverlay}, 0, 0, S_PLAY_FALL, 0}, - {SPR_NULL, 0, -1, {NULL}, 0, 0, S_OBJPLACE_DUMMY, 0}, //S_OBJPLACE_DUMMY + {"S_OBJPLACE_DUMMY", 0, SPR_NULL, 0, -1, {NULL}, 0, 0, S_OBJPLACE_DUMMY, 0}, // 1-Up box sprites (uses player sprite) - {SPR_PLAY, SPR2_LIFE, 2, {NULL}, 0, 18, S_PLAY_BOX2, 0}, // S_PLAY_BOX1 - {SPR_NULL, 0, 1, {NULL}, 0, 18, S_PLAY_BOX1, 0}, // S_PLAY_BOX2 - {SPR_PLAY, SPR2_LIFE, 4, {NULL}, 0, 4, S_PLAY_ICON2, 0}, // S_PLAY_ICON1 - {SPR_NULL, 0, 12, {NULL}, 0, 4, S_PLAY_ICON3, 0}, // S_PLAY_ICON2 - {SPR_PLAY, SPR2_LIFE, 20, {NULL}, 0, 4, S_NULL, 0}, // S_PLAY_ICON3 + {"S_PLAY_BOX1", 0, SPR_PLAY, SPR2_LIFE, 2, {NULL}, 0, 18, S_PLAY_BOX2, 0}, + {"S_PLAY_BOX2", 0, SPR_NULL, 0, 1, {NULL}, 0, 18, S_PLAY_BOX1, 0}, + {"S_PLAY_ICON1", 0, SPR_PLAY, SPR2_LIFE, 4, {NULL}, 0, 4, S_PLAY_ICON2, 0}, + {"S_PLAY_ICON2", 0, SPR_NULL, 0, 12, {NULL}, 0, 4, S_PLAY_ICON3, 0}, + {"S_PLAY_ICON3", 0, SPR_PLAY, SPR2_LIFE, 20, {NULL}, 0, 4, S_NULL, 0}, // Level end sign (uses player sprite) - {SPR_PLAY, SPR2_SIGN|FF_PAPERSPRITE, 2, {NULL}, 0, 29, S_PLAY_SIGN, 0}, // S_PLAY_SIGN + {"S_PLAY_SIGN", 0, SPR_PLAY, SPR2_SIGN|FF_PAPERSPRITE, 2, {NULL}, 0, 29, S_PLAY_SIGN, 0}, // NiGHTS Player, transforming - {SPR_PLAY, SPR2_TRNS|FF_ANIMATE, 7, {NULL}, 0, 4, S_PLAY_NIGHTS_TRANS2, 0}, // S_PLAY_NIGHTS_TRANS1 - {SPR_PLAY, SPR2_TRNS, 3, {NULL}, 0, 0, S_PLAY_NIGHTS_TRANS3, 0}, // S_PLAY_NIGHTS_TRANS2 - {SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_TRANS4, 0}, // S_PLAY_NIGHTS_TRANS3 - {SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_TRANS5, 0}, // S_PLAY_NIGHTS_TRANS4 - {SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_TRANS6, 0}, // S_PLAY_NIGHTS_TRANS5 - {SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 21, {A_FadeOverlay}, 2, 0, S_PLAY_NIGHTS_FLOAT, 0}, // S_PLAY_NIGHTS_TRANS5 + {"S_PLAY_NIGHTS_TRANS1", 0, SPR_PLAY, SPR2_TRNS|FF_ANIMATE, 7, {NULL}, 0, 4, S_PLAY_NIGHTS_TRANS2, 0}, + {"S_PLAY_NIGHTS_TRANS2", 0, SPR_PLAY, SPR2_TRNS, 3, {NULL}, 0, 0, S_PLAY_NIGHTS_TRANS3, 0}, + {"S_PLAY_NIGHTS_TRANS3", 0, SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_TRANS4, 0}, + {"S_PLAY_NIGHTS_TRANS4", 0, SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_TRANS5, 0}, + {"S_PLAY_NIGHTS_TRANS5", 0, SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_TRANS6, 0}, + {"S_PLAY_NIGHTS_TRANS5", 0, SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 21, {A_FadeOverlay}, 2, 0, S_PLAY_NIGHTS_FLOAT, 0}, // NiGHTS Player - {SPR_PLAY, SPR2_NSTD, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_STAND, 0}, // S_PLAY_NIGHTS_STAND - {SPR_PLAY, SPR2_NFLT, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_FLOAT, 0}, // S_PLAY_NIGHTS_FLOAT - {SPR_PLAY, SPR2_NFLY, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_FLY, 0}, // S_PLAY_NIGHTS_FLY - {SPR_PLAY, SPR2_NDRL, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_DRILL, 0}, // S_PLAY_NIGHTS_DRILL - {SPR_PLAY, SPR2_NSTN, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_STUN, 0}, // S_PLAY_NIGHTS_STUN - {SPR_PLAY, SPR2_NPUL, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_PULL, 0}, // S_PLAY_NIGHTS_PULL - {SPR_PLAY, SPR2_NATK, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_ATTACK, 0}, // S_PLAY_NIGHTS_ATTACK + {"S_PLAY_NIGHTS_STAND", 0, SPR_PLAY, SPR2_NSTD, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_STAND, 0}, + {"S_PLAY_NIGHTS_FLOAT", 0, SPR_PLAY, SPR2_NFLT, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_FLOAT, 0}, + {"S_PLAY_NIGHTS_FLY", 0, SPR_PLAY, SPR2_NFLY, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_FLY, 0}, + {"S_PLAY_NIGHTS_DRILL", 0, SPR_PLAY, SPR2_NDRL, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_DRILL, 0}, + {"S_PLAY_NIGHTS_STUN", 0, SPR_PLAY, SPR2_NSTN, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_STUN, 0}, + {"S_PLAY_NIGHTS_PULL", 0, SPR_PLAY, SPR2_NPUL, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_PULL, 0}, + {"S_PLAY_NIGHTS_ATTACK", 0, SPR_PLAY, SPR2_NATK, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_ATTACK, 0}, // c: - {SPR_PLAY, SPR2_TAL0|FF_SPR2MIDSTART, 5, {NULL}, 0, 0, S_TAILSOVERLAY_STAND, 0}, // S_TAILSOVERLAY_STAND - {SPR_PLAY, SPR2_TAL1|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_0DEGREES, 0}, // S_TAILSOVERLAY_0DEGREES - {SPR_PLAY, SPR2_TAL2|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS30DEGREES, 0}, // S_TAILSOVERLAY_PLUS30DEGREES - {SPR_PLAY, SPR2_TAL3|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS60DEGREES, 0}, // S_TAILSOVERLAY_PLUS60DEGREES - {SPR_PLAY, SPR2_TAL4|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS30DEGREES, 0}, // S_TAILSOVERLAY_MINUS30DEGREES - {SPR_PLAY, SPR2_TAL5|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS60DEGREES, 0}, // S_TAILSOVERLAY_MINUS60DEGREES - {SPR_PLAY, SPR2_TAL6|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_RUN, 0}, // S_TAILSOVERLAY_RUN - {SPR_PLAY, SPR2_TAL7|FF_SPR2MIDSTART, 4, {NULL}, 0, 0, S_TAILSOVERLAY_FLY, 0}, // S_TAILSOVERLAY_FLY - {SPR_PLAY, SPR2_TAL8|FF_SPR2MIDSTART, 4, {NULL}, 0, 0, S_TAILSOVERLAY_TIRE, 0}, // S_TAILSOVERLAY_TIRE - {SPR_PLAY, SPR2_TAL9|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PAIN, 0}, // S_TAILSOVERLAY_PAIN - {SPR_PLAY, SPR2_TALA|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_GASP, 0}, // S_TAILSOVERLAY_GASP - {SPR_PLAY, SPR2_TALB , 35, {NULL}, 0, 0, S_TAILSOVERLAY_EDGE, 0}, // S_TAILSOVERLAY_EDGE - {SPR_PLAY, SPR2_TALC|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_DASH, 0}, // S_TAILSOVERLAY_DASH + {"S_TAILSOVERLAY_STAND", 0, SPR_PLAY, SPR2_TAL0|FF_SPR2MIDSTART, 5, {NULL}, 0, 0, S_TAILSOVERLAY_STAND, 0}, + {"S_TAILSOVERLAY_0DEGREES", 0, SPR_PLAY, SPR2_TAL1|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_0DEGREES, 0}, + {"S_TAILSOVERLAY_PLUS30DEGREES", 0, SPR_PLAY, SPR2_TAL2|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS30DEGREES, 0}, + {"S_TAILSOVERLAY_PLUS60DEGREES", 0, SPR_PLAY, SPR2_TAL3|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS60DEGREES, 0}, + {"S_TAILSOVERLAY_MINUS30DEGREES", 0, SPR_PLAY, SPR2_TAL4|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS30DEGREES, 0}, + {"S_TAILSOVERLAY_MINUS60DEGREES", 0, SPR_PLAY, SPR2_TAL5|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS60DEGREES, 0}, + {"S_TAILSOVERLAY_RUN", 0, SPR_PLAY, SPR2_TAL6|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_RUN, 0}, + {"S_TAILSOVERLAY_FLY", 0, SPR_PLAY, SPR2_TAL7|FF_SPR2MIDSTART, 4, {NULL}, 0, 0, S_TAILSOVERLAY_FLY, 0}, + {"S_TAILSOVERLAY_TIRE", 0, SPR_PLAY, SPR2_TAL8|FF_SPR2MIDSTART, 4, {NULL}, 0, 0, S_TAILSOVERLAY_TIRE, 0}, + {"S_TAILSOVERLAY_PAIN", 0, SPR_PLAY, SPR2_TAL9|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PAIN, 0}, + {"S_TAILSOVERLAY_GASP", 0, SPR_PLAY, SPR2_TALA|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_GASP, 0}, + {"S_TAILSOVERLAY_EDGE", 0, SPR_PLAY, SPR2_TALB , 35, {NULL}, 0, 0, S_TAILSOVERLAY_EDGE, 0}, + {"S_TAILSOVERLAY_DASH", 0, SPR_PLAY, SPR2_TALC|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_DASH, 0}, // [: - {SPR_JETF, 3|FF_ANIMATE|FF_FULLBRIGHT, 2, {NULL}, 1, 1, S_JETFUME1, 0}, // S_JETFUMEFLASH + {"S_JETFUMEFLASH", 0, SPR_JETF, 3|FF_ANIMATE|FF_FULLBRIGHT, 2, {NULL}, 1, 1, S_JETFUME1, 0}, // Blue Crawla - {SPR_POSS, 0, 5, {A_Look}, 0, 0, S_POSS_STND, 0}, // S_POSS_STND - {SPR_POSS, 0, 3, {A_Chase}, 0, 0, S_POSS_RUN2, 0}, // S_POSS_RUN1 - {SPR_POSS, 1, 3, {A_Chase}, 0, 0, S_POSS_RUN3, 0}, // S_POSS_RUN2 - {SPR_POSS, 2, 3, {A_Chase}, 0, 0, S_POSS_RUN4, 0}, // S_POSS_RUN3 - {SPR_POSS, 3, 3, {A_Chase}, 0, 0, S_POSS_RUN5, 0}, // S_POSS_RUN4 - {SPR_POSS, 4, 3, {A_Chase}, 0, 0, S_POSS_RUN6, 0}, // S_POSS_RUN5 - {SPR_POSS, 5, 3, {A_Chase}, 0, 0, S_POSS_RUN1, 0}, // S_POSS_RUN6 + {"S_POSS_STND", 0, SPR_POSS, 0, 5, {A_Look}, 0, 0, S_POSS_STND, 0}, + {"S_POSS_RUN1", 0, SPR_POSS, 0, 3, {A_Chase}, 0, 0, S_POSS_RUN2, 0}, + {"S_POSS_RUN2", 0, SPR_POSS, 1, 3, {A_Chase}, 0, 0, S_POSS_RUN3, 0}, + {"S_POSS_RUN3", 0, SPR_POSS, 2, 3, {A_Chase}, 0, 0, S_POSS_RUN4, 0}, + {"S_POSS_RUN4", 0, SPR_POSS, 3, 3, {A_Chase}, 0, 0, S_POSS_RUN5, 0}, + {"S_POSS_RUN5", 0, SPR_POSS, 4, 3, {A_Chase}, 0, 0, S_POSS_RUN6, 0}, + {"S_POSS_RUN6", 0, SPR_POSS, 5, 3, {A_Chase}, 0, 0, S_POSS_RUN1, 0}, // Red Crawla - {SPR_SPOS, 0, 5, {A_Look}, 0, 0, S_SPOS_STND, 0}, // S_SPOS_STND - {SPR_SPOS, 0, 1, {A_Chase}, 0, 0, S_SPOS_RUN2, 0}, // S_SPOS_RUN1 - {SPR_SPOS, 1, 1, {A_Chase}, 0, 0, S_SPOS_RUN3, 0}, // S_SPOS_RUN2 - {SPR_SPOS, 2, 1, {A_Chase}, 0, 0, S_SPOS_RUN4, 0}, // S_SPOS_RUN3 - {SPR_SPOS, 3, 1, {A_Chase}, 0, 0, S_SPOS_RUN5, 0}, // S_SPOS_RUN4 - {SPR_SPOS, 4, 1, {A_Chase}, 0, 0, S_SPOS_RUN6, 0}, // S_SPOS_RUN5 - {SPR_SPOS, 5, 1, {A_Chase}, 0, 0, S_SPOS_RUN1, 0}, // S_SPOS_RUN6 + {"S_SPOS_STND", 0, SPR_SPOS, 0, 5, {A_Look}, 0, 0, S_SPOS_STND, 0}, + {"S_SPOS_RUN1", 0, SPR_SPOS, 0, 1, {A_Chase}, 0, 0, S_SPOS_RUN2, 0}, + {"S_SPOS_RUN2", 0, SPR_SPOS, 1, 1, {A_Chase}, 0, 0, S_SPOS_RUN3, 0}, + {"S_SPOS_RUN3", 0, SPR_SPOS, 2, 1, {A_Chase}, 0, 0, S_SPOS_RUN4, 0}, + {"S_SPOS_RUN4", 0, SPR_SPOS, 3, 1, {A_Chase}, 0, 0, S_SPOS_RUN5, 0}, + {"S_SPOS_RUN5", 0, SPR_SPOS, 4, 1, {A_Chase}, 0, 0, S_SPOS_RUN6, 0}, + {"S_SPOS_RUN6", 0, SPR_SPOS, 5, 1, {A_Chase}, 0, 0, S_SPOS_RUN1, 0}, // Greenflower Fish - {SPR_FISH, 1, 1, {NULL}, 0, 0, S_FISH2, 0}, // S_FISH1 - {SPR_FISH, 1, 1, {A_FishJump}, 0, 0, S_FISH1, 0}, // S_FISH2 - {SPR_FISH, 0, 1, {NULL}, 0, 0, S_FISH4, 0}, // S_FISH3 - {SPR_FISH, 0, 1, {A_FishJump}, 0, 0, S_FISH3, 0}, // S_FISH4 + {"S_FISH1", 0, SPR_FISH, 1, 1, {NULL}, 0, 0, S_FISH2, 0}, + {"S_FISH2", 0, SPR_FISH, 1, 1, {A_FishJump}, 0, 0, S_FISH1, 0}, + {"S_FISH3", 0, SPR_FISH, 0, 1, {NULL}, 0, 0, S_FISH4, 0}, + {"S_FISH4", 0, SPR_FISH, 0, 1, {A_FishJump}, 0, 0, S_FISH3, 0}, // Gold Buzz - {SPR_BUZZ, 0, 2, {A_Look}, 0, 0, S_BUZZLOOK2, 0}, // S_BUZZLOOK1 - {SPR_BUZZ, 1, 2, {A_Look}, 0, 0, S_BUZZLOOK1, 0}, // S_BUZZLOOK2 - {SPR_BUZZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_BUZZFLY2, 0}, // S_BUZZFLY1 - {SPR_BUZZ, 1, 2, {A_BuzzFly}, 0, 0, S_BUZZFLY1, 0}, // S_BUZZFLY2 + {"S_BUZZLOOK1", 0, SPR_BUZZ, 0, 2, {A_Look}, 0, 0, S_BUZZLOOK2, 0}, + {"S_BUZZLOOK2", 0, SPR_BUZZ, 1, 2, {A_Look}, 0, 0, S_BUZZLOOK1, 0}, + {"S_BUZZFLY1", 0, SPR_BUZZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_BUZZFLY2, 0}, + {"S_BUZZFLY2", 0, SPR_BUZZ, 1, 2, {A_BuzzFly}, 0, 0, S_BUZZFLY1, 0}, // Red Buzz - {SPR_RBUZ, 0, 2, {A_Look}, 0, 0, S_RBUZZLOOK2, 0}, // S_RBUZZLOOK1 - {SPR_RBUZ, 1, 2, {A_Look}, 0, 0, S_RBUZZLOOK1, 0}, // S_RBUZZLOOK2 - {SPR_RBUZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_RBUZZFLY2, 0}, // S_RBUZZFLY1 - {SPR_RBUZ, 1, 2, {A_BuzzFly}, 0, 0, S_RBUZZFLY1, 0}, // S_RBUZZFLY2 + {"S_RBUZZLOOK1", 0, SPR_RBUZ, 0, 2, {A_Look}, 0, 0, S_RBUZZLOOK2, 0}, + {"S_RBUZZLOOK2", 0, SPR_RBUZ, 1, 2, {A_Look}, 0, 0, S_RBUZZLOOK1, 0}, + {"S_RBUZZFLY1", 0, SPR_RBUZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_RBUZZFLY2, 0}, + {"S_RBUZZFLY2", 0, SPR_RBUZ, 1, 2, {A_BuzzFly}, 0, 0, S_RBUZZFLY1, 0}, // Jetty-Syn Bomber - {SPR_JETB, 0, 4, {A_Look}, 0, 0, S_JETBLOOK2, 0}, // S_JETBLOOK1 - {SPR_JETB, 1, 4, {A_Look}, 0, 0, S_JETBLOOK1, 0}, // S_JETBLOOK2 - {SPR_JETB, 0, 1, {A_JetbThink}, 0, 0, S_JETBZOOM2, 0}, // S_JETBZOOM1 - {SPR_JETB, 1, 1, {A_JetbThink}, 0, 0, S_JETBZOOM1, 0}, // S_JETBZOOM2 + {"S_JETBLOOK1", 0, SPR_JETB, 0, 4, {A_Look}, 0, 0, S_JETBLOOK2, 0}, + {"S_JETBLOOK2", 0, SPR_JETB, 1, 4, {A_Look}, 0, 0, S_JETBLOOK1, 0}, + {"S_JETBZOOM1", 0, SPR_JETB, 0, 1, {A_JetbThink}, 0, 0, S_JETBZOOM2, 0}, + {"S_JETBZOOM2", 0, SPR_JETB, 1, 1, {A_JetbThink}, 0, 0, S_JETBZOOM1, 0}, // Jetty-Syn Gunner - {SPR_JETG, 0, 4, {A_Look}, 0, 0, S_JETGLOOK2, 0}, // S_JETGLOOK1 - {SPR_JETG, 1, 4, {A_Look}, 0, 0, S_JETGLOOK1, 0}, // S_JETGLOOK2 - {SPR_JETG, 0, 1, {A_JetgThink}, 0, 0, S_JETGZOOM2, 0}, // S_JETGZOOM1 - {SPR_JETG, 1, 1, {A_JetgThink}, 0, 0, S_JETGZOOM1, 0}, // S_JETGZOOM2 - {SPR_JETG, 2, 1, {A_JetgShoot}, 0, 0, S_JETGSHOOT2, 0}, // S_JETGSHOOT1 - {SPR_JETG, 3, 1, {NULL}, 0, 0, S_JETGZOOM1, 0}, // S_JETGSHOOT2 + {"S_JETGLOOK1", 0, SPR_JETG, 0, 4, {A_Look}, 0, 0, S_JETGLOOK2, 0}, + {"S_JETGLOOK2", 0, SPR_JETG, 1, 4, {A_Look}, 0, 0, S_JETGLOOK1, 0}, + {"S_JETGZOOM1", 0, SPR_JETG, 0, 1, {A_JetgThink}, 0, 0, S_JETGZOOM2, 0}, + {"S_JETGZOOM2", 0, SPR_JETG, 1, 1, {A_JetgThink}, 0, 0, S_JETGZOOM1, 0}, + {"S_JETGSHOOT1", 0, SPR_JETG, 2, 1, {A_JetgShoot}, 0, 0, S_JETGSHOOT2, 0}, + {"S_JETGSHOOT2", 0, SPR_JETG, 3, 1, {NULL}, 0, 0, S_JETGZOOM1, 0}, // Crawla Commander - {SPR_CCOM, 0, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND2, 0}, // S_CCOMMAND1 - {SPR_CCOM, 1, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND1, 0}, // S_CCOMMAND2 - {SPR_CCOM, 2, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND4, 0}, // S_CCOMMAND3 - {SPR_CCOM, 3, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND3, 0}, // S_CCOMMAND4 + {"S_CCOMMAND1", 0, SPR_CCOM, 0, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND2, 0}, + {"S_CCOMMAND2", 0, SPR_CCOM, 1, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND1, 0}, + {"S_CCOMMAND3", 0, SPR_CCOM, 2, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND4, 0}, + {"S_CCOMMAND4", 0, SPR_CCOM, 3, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND3, 0}, // Deton - {SPR_DETN, 0, 35, {A_Look}, 0, 0, S_DETON1, 0}, // S_DETON1 - {SPR_DETN, 0, 1, {A_DetonChase}, 0, 0, S_DETON3, 0}, // S_DETON2 - {SPR_DETN, 1, 1, {A_DetonChase}, 0, 0, S_DETON4, 0}, // S_DETON3 - {SPR_DETN, 2, 1, {A_DetonChase}, 0, 0, S_DETON5, 0}, // S_DETON4 - {SPR_DETN, 3, 1, {A_DetonChase}, 0, 0, S_DETON6, 0}, // S_DETON5 - {SPR_DETN, 4, 1, {A_DetonChase}, 0, 0, S_DETON7, 0}, // S_DETON6 - {SPR_DETN, 5, 1, {A_DetonChase}, 0, 0, S_DETON8, 0}, // S_DETON7 - {SPR_DETN, 6, 1, {A_DetonChase}, 0, 0, S_DETON9, 0}, // S_DETON8 - {SPR_DETN, 7, 1, {A_DetonChase}, 0, 0, S_DETON10, 0}, // S_DETON9 - {SPR_DETN, 6, 1, {A_DetonChase}, 0, 0, S_DETON11, 0}, // S_DETON10 - {SPR_DETN, 5, 1, {A_DetonChase}, 0, 0, S_DETON12, 0}, // S_DETON11 - {SPR_DETN, 4, 1, {A_DetonChase}, 0, 0, S_DETON13, 0}, // S_DETON12 - {SPR_DETN, 3, 1, {A_DetonChase}, 0, 0, S_DETON14, 0}, // S_DETON13 - {SPR_DETN, 2, 1, {A_DetonChase}, 0, 0, S_DETON15, 0}, // S_DETON14 - {SPR_DETN, 1, 1, {A_DetonChase}, 0, 0, S_DETON2, 0}, // S_DETON15 + {"S_DETON1", 0, SPR_DETN, 0, 35, {A_Look}, 0, 0, S_DETON1, 0}, + {"S_DETON2", 0, SPR_DETN, 0, 1, {A_DetonChase}, 0, 0, S_DETON3, 0}, + {"S_DETON3", 0, SPR_DETN, 1, 1, {A_DetonChase}, 0, 0, S_DETON4, 0}, + {"S_DETON4", 0, SPR_DETN, 2, 1, {A_DetonChase}, 0, 0, S_DETON5, 0}, + {"S_DETON5", 0, SPR_DETN, 3, 1, {A_DetonChase}, 0, 0, S_DETON6, 0}, + {"S_DETON6", 0, SPR_DETN, 4, 1, {A_DetonChase}, 0, 0, S_DETON7, 0}, + {"S_DETON7", 0, SPR_DETN, 5, 1, {A_DetonChase}, 0, 0, S_DETON8, 0}, + {"S_DETON8", 0, SPR_DETN, 6, 1, {A_DetonChase}, 0, 0, S_DETON9, 0}, + {"S_DETON9", 0, SPR_DETN, 7, 1, {A_DetonChase}, 0, 0, S_DETON10, 0}, + {"S_DETON10", 0, SPR_DETN, 6, 1, {A_DetonChase}, 0, 0, S_DETON11, 0}, + {"S_DETON11", 0, SPR_DETN, 5, 1, {A_DetonChase}, 0, 0, S_DETON12, 0}, + {"S_DETON12", 0, SPR_DETN, 4, 1, {A_DetonChase}, 0, 0, S_DETON13, 0}, + {"S_DETON13", 0, SPR_DETN, 3, 1, {A_DetonChase}, 0, 0, S_DETON14, 0}, + {"S_DETON14", 0, SPR_DETN, 2, 1, {A_DetonChase}, 0, 0, S_DETON15, 0}, + {"S_DETON15", 0, SPR_DETN, 1, 1, {A_DetonChase}, 0, 0, S_DETON2, 0}, // Skim Mine Dropper - {SPR_SKIM, 0, 1, {A_SkimChase}, 0, 0, S_SKIM2, 0}, // S_SKIM1 - {SPR_SKIM, 0, 1, {A_SkimChase}, 0, 0, S_SKIM1, 0}, // S_SKIM2 - {SPR_SKIM, 0, 14, {NULL}, 0, 0, S_SKIM4, 0}, // S_SKIM3 - {SPR_SKIM, 0, 14, {A_DropMine}, 0, 0, S_SKIM1, 0}, // S_SKIM4 + {"S_SKIM1", 0, SPR_SKIM, 0, 1, {A_SkimChase}, 0, 0, S_SKIM2, 0}, + {"S_SKIM2", 0, SPR_SKIM, 0, 1, {A_SkimChase}, 0, 0, S_SKIM1, 0}, + {"S_SKIM3", 0, SPR_SKIM, 0, 14, {NULL}, 0, 0, S_SKIM4, 0}, + {"S_SKIM4", 0, SPR_SKIM, 0, 14, {A_DropMine}, 0, 0, S_SKIM1, 0}, // THZ Turret - {SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretStop}, 0, 0, S_TURRETFIRE, 0}, // S_TURRET - {SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretFire}, 0, 0, S_TURRET, 0}, // S_TURRETFIRE - {SPR_TRET, FF_FULLBRIGHT|1, 7, {A_Pain}, 0, 0, S_TURRETSHOCK2, 0}, // S_TURRETSHOCK1 - {SPR_TRET, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_TURRETSHOCK3, 0}, // S_TURRETSHOCK2 - {SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK4, 0}, // S_TURRETSHOCK3 - {SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK5, 0}, // S_TURRETSHOCK4 - {SPR_TRET, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_TURRETSHOCK6, 0}, // S_TURRETSHOCK5 - {SPR_TRET, FF_FULLBRIGHT|2, 7, {A_Pain}, 0, 0, S_TURRETSHOCK7, 0}, // S_TURRETSHOCK6 - {SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK8, 0}, // S_TURRETSHOCK7 - {SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK9, 0}, // S_TURRETSHOCK8 - {SPR_TRET, FF_FULLBRIGHT|4, 7, {A_LinedefExecuteFromArg}, 0, 0, S_XPLD1, 0}, // S_TURRETSHOCK9 - - {SPR_TURR, 0, 1, {A_Look}, 1, 0, S_TURRETPOPDOWN8, 0}, // S_TURRETLOOK - {SPR_TURR, 0, 0, {A_FaceTarget}, 0, 0, S_TURRETPOPUP1, 0}, // S_TURRETSEE - {SPR_TURR, 1, 2, {A_Pain}, 0, 0, S_TURRETPOPUP2, 0}, // S_TURRETPOPUP1 - {SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPUP3, 0}, // S_TURRETPOPUP2 - {SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPUP4, 0}, // S_TURRETPOPUP3 - {SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPUP5, 0}, // S_TURRETPOPUP4 - {SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPUP6, 0}, // S_TURRETPOPUP5 - {SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPUP7, 0}, // S_TURRETPOPUP6 - {SPR_TURR, 7, 2, {NULL}, 0, 0, S_TURRETPOPUP8, 0}, // S_TURRETPOPUP7 - {SPR_TURR, 8, 14,{NULL}, 0, 0, S_TURRETSHOOT, 0}, // S_TURRETPOPUP8 - {SPR_TURR, 8, 14,{A_JetgShoot}, 0, 0, S_TURRETPOPDOWN1, 0}, // S_TURRETSHOOT - {SPR_TURR, 7, 2, {A_Pain}, 0, 0, S_TURRETPOPDOWN2, 0}, // S_TURRETPOPDOWN1 - {SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPDOWN3, 0}, // S_TURRETPOPDOWN2 - {SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPDOWN4, 0}, // S_TURRETPOPDOWN3 - {SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPDOWN5, 0}, // S_TURRETPOPDOWN4 - {SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPDOWN6, 0}, // S_TURRETPOPDOWN5 - {SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPDOWN7, 0}, // S_TURRETPOPDOWN6 - {SPR_TURR, 1, 2, {NULL}, 0, 0, S_TURRETPOPDOWN8, 0}, // S_TURRETPOPDOWN7 - {SPR_TURR, 0, 69,{A_SetTics}, 0, 1, S_TURRETLOOK, 0}, // S_TURRETPOPDOWN8 + {"S_TURRET", 0, SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretStop}, 0, 0, S_TURRETFIRE, 0}, + {"S_TURRETFIRE", 0, SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretFire}, 0, 0, S_TURRET, 0}, + {"S_TURRETSHOCK1", 0, SPR_TRET, FF_FULLBRIGHT|1, 7, {A_Pain}, 0, 0, S_TURRETSHOCK2, 0}, + {"S_TURRETSHOCK2", 0, SPR_TRET, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_TURRETSHOCK3, 0}, + {"S_TURRETSHOCK3", 0, SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK4, 0}, + {"S_TURRETSHOCK4", 0, SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK5, 0}, + {"S_TURRETSHOCK5", 0, SPR_TRET, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_TURRETSHOCK6, 0}, + {"S_TURRETSHOCK6", 0, SPR_TRET, FF_FULLBRIGHT|2, 7, {A_Pain}, 0, 0, S_TURRETSHOCK7, 0}, + {"S_TURRETSHOCK7", 0, SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK8, 0}, + {"S_TURRETSHOCK8", 0, SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK9, 0}, + {"S_TURRETSHOCK9", 0, SPR_TRET, FF_FULLBRIGHT|4, 7, {A_LinedefExecuteFromArg}, 0, 0, S_XPLD1, 0}, + + {"S_TURRETLOOK", 0, SPR_TURR, 0, 1, {A_Look}, 1, 0, S_TURRETPOPDOWN8, 0}, + {"S_TURRETSEE", 0, SPR_TURR, 0, 0, {A_FaceTarget}, 0, 0, S_TURRETPOPUP1, 0}, + {"S_TURRETPOPUP1", 0, SPR_TURR, 1, 2, {A_Pain}, 0, 0, S_TURRETPOPUP2, 0}, + {"S_TURRETPOPUP2", 0, SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPUP3, 0}, + {"S_TURRETPOPUP3", 0, SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPUP4, 0}, + {"S_TURRETPOPUP4", 0, SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPUP5, 0}, + {"S_TURRETPOPUP5", 0, SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPUP6, 0}, + {"S_TURRETPOPUP6", 0, SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPUP7, 0}, + {"S_TURRETPOPUP7", 0, SPR_TURR, 7, 2, {NULL}, 0, 0, S_TURRETPOPUP8, 0}, + {"S_TURRETPOPUP8", 0, SPR_TURR, 8, 14,{NULL}, 0, 0, S_TURRETSHOOT, 0}, + {"S_TURRETSHOOT", 0, SPR_TURR, 8, 14,{A_JetgShoot}, 0, 0, S_TURRETPOPDOWN1, 0}, + {"S_TURRETPOPDOWN1", 0, SPR_TURR, 7, 2, {A_Pain}, 0, 0, S_TURRETPOPDOWN2, 0}, + {"S_TURRETPOPDOWN2", 0, SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPDOWN3, 0}, + {"S_TURRETPOPDOWN3", 0, SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPDOWN4, 0}, + {"S_TURRETPOPDOWN4", 0, SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPDOWN5, 0}, + {"S_TURRETPOPDOWN5", 0, SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPDOWN6, 0}, + {"S_TURRETPOPDOWN6", 0, SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPDOWN7, 0}, + {"S_TURRETPOPDOWN7", 0, SPR_TURR, 1, 2, {NULL}, 0, 0, S_TURRETPOPDOWN8, 0}, + {"S_TURRETPOPDOWN8", 0, SPR_TURR, 0, 69,{A_SetTics}, 0, 1, S_TURRETLOOK, 0}, // Spincushion - {SPR_SHRP, 0, 2, {A_Look}, 0, 0, S_SPINCUSHION_LOOK, 0}, // S_SPINCUSHION_LOOK - {SPR_SHRP, 1, 2, {A_SharpChase}, 0, 0, S_SPINCUSHION_CHASE2, 0}, // S_SPINCUSHION_CHASE1 - {SPR_SHRP, 2, 2, {A_SharpChase}, 0, 0, S_SPINCUSHION_CHASE3, 0}, // S_SPINCUSHION_CHASE2 - {SPR_SHRP, 3, 2, {A_SharpChase}, 0, 0, S_SPINCUSHION_CHASE4, 0}, // S_SPINCUSHION_CHASE3 - {SPR_SHRP, 0, 2, {A_SharpChase}, 0, 0, S_SPINCUSHION_CHASE1, 0}, // S_SPINCUSHION_CHASE4 - {SPR_SHRP, 0, 2, {NULL}, 0, 0, S_SPINCUSHION_AIM2, 0}, // S_SPINCUSHION_AIM1 - {SPR_SHRP, 4, 2, {NULL}, 0, 0, S_SPINCUSHION_AIM3, 0}, // S_SPINCUSHION_AIM2 - {SPR_SHRP, 5, 2, {A_SetObjectFlags}, MF_PAIN, 2, S_SPINCUSHION_AIM4, 0}, // S_SPINCUSHION_AIM3 - {SPR_SHRP, 6, 16, {A_MultiShotDist}, (MT_DUST<<16)|6, -32, S_SPINCUSHION_AIM5, 0}, // S_SPINCUSHION_AIM4 - {SPR_SHRP, 6, 0, {A_PlaySound}, sfx_shrpgo, 1, S_SPINCUSHION_SPIN1, 0}, // S_SPINCUSHION_AIM5 - {SPR_SHRP, 6, 1, {A_SharpSpin}, 0, 0, S_SPINCUSHION_SPIN2, 0}, // S_SPINCUSHION_SPIN1 - {SPR_SHRP, 8, 1, {A_SharpSpin}, 0, 0, S_SPINCUSHION_SPIN3, 0}, // S_SPINCUSHION_SPIN2 - {SPR_SHRP, 7, 1, {A_SharpSpin}, 0, 0, S_SPINCUSHION_SPIN4, 0}, // S_SPINCUSHION_SPIN3 - {SPR_SHRP, 8, 1, {A_SharpSpin}, MT_SPINDUST, 0, S_SPINCUSHION_SPIN1, 0}, // S_SPINCUSHION_SPIN4 - {SPR_SHRP, 6, 1, {A_PlaySound}, sfx_s3k69, 1, S_SPINCUSHION_STOP2, 0}, // S_SPINCUSHION_STOP1 - {SPR_SHRP, 6, 4, {A_SharpDecel}, 0, 0, S_SPINCUSHION_STOP2, 0}, // S_SPINCUSHION_STOP2 - {SPR_SHRP, 5, 4, {A_FaceTarget}, 0, 0, S_SPINCUSHION_STOP4, 0}, // S_SPINCUSHION_STOP3 - {SPR_SHRP, 4, 4, {A_SetObjectFlags}, MF_PAIN, 1, S_SPINCUSHION_LOOK, 0}, // S_SPINCUSHION_STOP4 + {"S_SPINCUSHION_LOOK", 0, SPR_SHRP, 0, 2, {A_Look}, 0, 0, S_SPINCUSHION_LOOK, 0}, + {"S_SPINCUSHION_CHASE1", 0, SPR_SHRP, 1, 2, {A_SharpChase}, 0, 0, S_SPINCUSHION_CHASE2, 0}, + {"S_SPINCUSHION_CHASE2", 0, SPR_SHRP, 2, 2, {A_SharpChase}, 0, 0, S_SPINCUSHION_CHASE3, 0}, + {"S_SPINCUSHION_CHASE3", 0, SPR_SHRP, 3, 2, {A_SharpChase}, 0, 0, S_SPINCUSHION_CHASE4, 0}, + {"S_SPINCUSHION_CHASE4", 0, SPR_SHRP, 0, 2, {A_SharpChase}, 0, 0, S_SPINCUSHION_CHASE1, 0}, + {"S_SPINCUSHION_AIM1", 0, SPR_SHRP, 0, 2, {NULL}, 0, 0, S_SPINCUSHION_AIM2, 0}, + {"S_SPINCUSHION_AIM2", 0, SPR_SHRP, 4, 2, {NULL}, 0, 0, S_SPINCUSHION_AIM3, 0}, + {"S_SPINCUSHION_AIM3", 0, SPR_SHRP, 5, 2, {A_SetObjectFlags}, MF_PAIN, 2, S_SPINCUSHION_AIM4, 0}, + {"S_SPINCUSHION_AIM4", 0, SPR_SHRP, 6, 16, {A_MultiShotDist}, (MT_DUST<<16)|6, -32, S_SPINCUSHION_AIM5, 0}, + {"S_SPINCUSHION_AIM5", 0, SPR_SHRP, 6, 0, {A_PlaySound}, sfx_shrpgo, 1, S_SPINCUSHION_SPIN1, 0}, + {"S_SPINCUSHION_SPIN1", 0, SPR_SHRP, 6, 1, {A_SharpSpin}, 0, 0, S_SPINCUSHION_SPIN2, 0}, + {"S_SPINCUSHION_SPIN2", 0, SPR_SHRP, 8, 1, {A_SharpSpin}, 0, 0, S_SPINCUSHION_SPIN3, 0}, + {"S_SPINCUSHION_SPIN3", 0, SPR_SHRP, 7, 1, {A_SharpSpin}, 0, 0, S_SPINCUSHION_SPIN4, 0}, + {"S_SPINCUSHION_SPIN4", 0, SPR_SHRP, 8, 1, {A_SharpSpin}, MT_SPINDUST, 0, S_SPINCUSHION_SPIN1, 0}, + {"S_SPINCUSHION_STOP1", 0, SPR_SHRP, 6, 1, {A_PlaySound}, sfx_s3k69, 1, S_SPINCUSHION_STOP2, 0}, + {"S_SPINCUSHION_STOP2", 0, SPR_SHRP, 6, 4, {A_SharpDecel}, 0, 0, S_SPINCUSHION_STOP2, 0}, + {"S_SPINCUSHION_STOP3", 0, SPR_SHRP, 5, 4, {A_FaceTarget}, 0, 0, S_SPINCUSHION_STOP4, 0}, + {"S_SPINCUSHION_STOP4", 0, SPR_SHRP, 4, 4, {A_SetObjectFlags}, MF_PAIN, 1, S_SPINCUSHION_LOOK, 0}, // Crushstacean - {SPR_CRAB, 0, 3, {A_CrushstaceanWalk}, 0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM2, 0}, // S_CRUSHSTACEAN_ROAM1 - {SPR_CRAB, 1, 3, {A_CrushstaceanWalk}, 0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM3, 0}, // S_CRUSHSTACEAN_ROAM2 - {SPR_CRAB, 0, 3, {A_CrushstaceanWalk}, 0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM4, 0}, // S_CRUSHSTACEAN_ROAM3 - {SPR_CRAB, 2, 3, {A_CrushstaceanWalk}, 0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM1, 0}, // S_CRUSHSTACEAN_ROAM4 - {SPR_CRAB, 0, 40, {NULL}, 0, 0, S_CRUSHSTACEAN_ROAM1, 0}, // S_CRUSHSTACEAN_ROAMPAUSE - {SPR_CRAB, 0, 10, {NULL}, 0, 0, S_CRUSHSTACEAN_PUNCH2, 0}, // S_CRUSHSTACEAN_PUNCH1 - {SPR_CRAB, 0, -1, {A_CrushstaceanPunch}, 0, 0, S_CRUSHSTACEAN_ROAMPAUSE, 0}, // S_CRUSHSTACEAN_PUNCH2 - {SPR_CRAB, 3, 1, {A_CrushclawAim}, 40, 20, S_CRUSHCLAW_AIM, 0}, // S_CRUSHCLAW_AIM - {SPR_CRAB, 3, 1, {A_CrushclawLaunch}, 0, S_CRUSHCLAW_STAY, S_CRUSHCLAW_OUT, 0}, // S_CRUSHCLAW_OUT - {SPR_CRAB, 3, 10, {NULL}, 0, 0, S_CRUSHCLAW_IN, 0}, // S_CRUSHCLAW_STAY - {SPR_CRAB, 3, 1, {A_CrushclawLaunch}, 1, S_CRUSHCLAW_WAIT, S_CRUSHCLAW_IN, 0}, // S_CRUSHCLAW_IN - {SPR_CRAB, 3, 37, {NULL}, 0, 0, S_CRUSHCLAW_AIM, 0}, // S_CRUSHCLAW_WAIT - {SPR_CRAB, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CRUSHCHAIN + {"S_CRUSHSTACEAN_ROAM1", 0, SPR_CRAB, 0, 3, {A_CrushstaceanWalk}, 0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM2, 0}, + {"S_CRUSHSTACEAN_ROAM2", 0, SPR_CRAB, 1, 3, {A_CrushstaceanWalk}, 0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM3, 0}, + {"S_CRUSHSTACEAN_ROAM3", 0, SPR_CRAB, 0, 3, {A_CrushstaceanWalk}, 0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM4, 0}, + {"S_CRUSHSTACEAN_ROAM4", 0, SPR_CRAB, 2, 3, {A_CrushstaceanWalk}, 0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM1, 0}, + {"S_CRUSHSTACEAN_ROAMPAUSE", 0, SPR_CRAB, 0, 40, {NULL}, 0, 0, S_CRUSHSTACEAN_ROAM1, 0}, + {"S_CRUSHSTACEAN_PUNCH1", 0, SPR_CRAB, 0, 10, {NULL}, 0, 0, S_CRUSHSTACEAN_PUNCH2, 0}, + {"S_CRUSHSTACEAN_PUNCH2", 0, SPR_CRAB, 0, -1, {A_CrushstaceanPunch}, 0, 0, S_CRUSHSTACEAN_ROAMPAUSE, 0}, + {"S_CRUSHCLAW_AIM", 0, SPR_CRAB, 3, 1, {A_CrushclawAim}, 40, 20, S_CRUSHCLAW_AIM, 0}, + {"S_CRUSHCLAW_OUT", 0, SPR_CRAB, 3, 1, {A_CrushclawLaunch}, 0, S_CRUSHCLAW_STAY, S_CRUSHCLAW_OUT, 0}, + {"S_CRUSHCLAW_STAY", 0, SPR_CRAB, 3, 10, {NULL}, 0, 0, S_CRUSHCLAW_IN, 0}, + {"S_CRUSHCLAW_IN", 0, SPR_CRAB, 3, 1, {A_CrushclawLaunch}, 1, S_CRUSHCLAW_WAIT, S_CRUSHCLAW_IN, 0}, + {"S_CRUSHCLAW_WAIT", 0, SPR_CRAB, 3, 37, {NULL}, 0, 0, S_CRUSHCLAW_AIM, 0}, + {"S_CRUSHCHAIN", 0, SPR_CRAB, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // Banpyura - {SPR_CR2B, 0, 3, {A_CrushstaceanWalk}, 0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM2, 0}, // S_BANPYURA_ROAM1 - {SPR_CR2B, 1, 3, {A_CrushstaceanWalk}, 0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM3, 0}, // S_BANPYURA_ROAM2 - {SPR_CR2B, 0, 3, {A_CrushstaceanWalk}, 0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM4, 0}, // S_BANPYURA_ROAM3 - {SPR_CR2B, 2, 3, {A_CrushstaceanWalk}, 0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM1, 0}, // S_BANPYURA_ROAM4 - {SPR_CR2B, 0, 40, {NULL}, 0, 0, S_BANPYURA_ROAM1, 0}, // S_BANPYURA_ROAMPAUSE - - {SPR_CSPR, 0, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1, 0}, // S_CDIAG1 - {SPR_CSPR, 1, 1, {A_Pain}, 0, 0, S_CDIAG3, 0}, // S_CDIAG2 - {SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG4, 0}, // S_CDIAG3 - {SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG5, 0}, // S_CDIAG4 - {SPR_CSPR, 4, 1, {A_CrushclawAim}, 50, 20, S_CDIAG6, 0}, // S_CDIAG5 - {SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG7, 0}, // S_CDIAG6 - {SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG8, 0}, // S_CDIAG7 - {SPR_CSPR, 1, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1, 0}, // S_CDIAG8 + {"S_BANPYURA_ROAM1", 0, SPR_CR2B, 0, 3, {A_CrushstaceanWalk}, 0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM2, 0}, + {"S_BANPYURA_ROAM2", 0, SPR_CR2B, 1, 3, {A_CrushstaceanWalk}, 0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM3, 0}, + {"S_BANPYURA_ROAM3", 0, SPR_CR2B, 0, 3, {A_CrushstaceanWalk}, 0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM4, 0}, + {"S_BANPYURA_ROAM4", 0, SPR_CR2B, 2, 3, {A_CrushstaceanWalk}, 0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM1, 0}, + {"S_BANPYURA_ROAMPAUSE", 0, SPR_CR2B, 0, 40, {NULL}, 0, 0, S_BANPYURA_ROAM1, 0}, + + {"S_CDIAG1", 0, SPR_CSPR, 0, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1, 0}, + {"S_CDIAG2", 0, SPR_CSPR, 1, 1, {A_Pain}, 0, 0, S_CDIAG3, 0}, + {"S_CDIAG3", 0, SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG4, 0}, + {"S_CDIAG4", 0, SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG5, 0}, + {"S_CDIAG5", 0, SPR_CSPR, 4, 1, {A_CrushclawAim}, 50, 20, S_CDIAG6, 0}, + {"S_CDIAG6", 0, SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG7, 0}, + {"S_CDIAG7", 0, SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG8, 0}, + {"S_CDIAG8", 0, SPR_CSPR, 1, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1, 0}, // Jet Jaw - {SPR_JJAW, 0, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM2, 0}, // S_JETJAW_ROAM1 - {SPR_JJAW, 0, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM3, 0}, // S_JETJAW_ROAM2 - {SPR_JJAW, 0, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM4, 0}, // S_JETJAW_ROAM3 - {SPR_JJAW, 0, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM5, 0}, // S_JETJAW_ROAM4 - {SPR_JJAW, 1, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM6, 0}, // S_JETJAW_ROAM5 - {SPR_JJAW, 1, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM7, 0}, // S_JETJAW_ROAM6 - {SPR_JJAW, 1, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM8, 0}, // S_JETJAW_ROAM7 - {SPR_JJAW, 1, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM1, 0}, // S_JETJAW_ROAM8 - {SPR_JJAW, 0, 1, {A_DualAction}, S_JETJAW_CHOMP16, S_JETJAW_SOUND, S_JETJAW_CHOMP2, 0}, // S_JETJAW_CHOMP1 - {SPR_JJAW, 0, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP3, 0}, // S_JETJAW_CHOMP2 - {SPR_JJAW, 0, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP4, 0}, // S_JETJAW_CHOMP3 - {SPR_JJAW, 0, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP5, 0}, // S_JETJAW_CHOMP4 - {SPR_JJAW, 1, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP6, 0}, // S_JETJAW_CHOMP5 - {SPR_JJAW, 1, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP7, 0}, // S_JETJAW_CHOMP6 - {SPR_JJAW, 1, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP8, 0}, // S_JETJAW_CHOMP7 - {SPR_JJAW, 1, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP9, 0}, // S_JETJAW_CHOMP8 - {SPR_JJAW, 2, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP10, 0}, // S_JETJAW_CHOMP9 - {SPR_JJAW, 2, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP11, 0}, // S_JETJAW_CHOMP10 - {SPR_JJAW, 2, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP12, 0}, // S_JETJAW_CHOMP11 - {SPR_JJAW, 2, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP13, 0}, // S_JETJAW_CHOMP12 - {SPR_JJAW, 3, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP14, 0}, // S_JETJAW_CHOMP13 - {SPR_JJAW, 3, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP15, 0}, // S_JETJAW_CHOMP14 - {SPR_JJAW, 3, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP16, 0}, // S_JETJAW_CHOMP15 - {SPR_JJAW, 3, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP1, 0}, // S_JETJAW_CHOMP16 - {SPR_JJAW, 0, 1, {A_PlayAttackSound}, 0, 0, S_JETJAW_SOUND, 0}, // S_JETJAW_SOUND + {"S_JETJAW_ROAM1", 0, SPR_JJAW, 0, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM2, 0}, + {"S_JETJAW_ROAM2", 0, SPR_JJAW, 0, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM3, 0}, + {"S_JETJAW_ROAM3", 0, SPR_JJAW, 0, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM4, 0}, + {"S_JETJAW_ROAM4", 0, SPR_JJAW, 0, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM5, 0}, + {"S_JETJAW_ROAM5", 0, SPR_JJAW, 1, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM6, 0}, + {"S_JETJAW_ROAM6", 0, SPR_JJAW, 1, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM7, 0}, + {"S_JETJAW_ROAM7", 0, SPR_JJAW, 1, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM8, 0}, + {"S_JETJAW_ROAM8", 0, SPR_JJAW, 1, 1, {A_JetJawRoam}, 0, 0, S_JETJAW_ROAM1, 0}, + {"S_JETJAW_CHOMP1", 0, SPR_JJAW, 0, 1, {A_DualAction}, S_JETJAW_CHOMP16, S_JETJAW_SOUND, S_JETJAW_CHOMP2, 0}, + {"S_JETJAW_CHOMP2", 0, SPR_JJAW, 0, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP3, 0}, + {"S_JETJAW_CHOMP3", 0, SPR_JJAW, 0, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP4, 0}, + {"S_JETJAW_CHOMP4", 0, SPR_JJAW, 0, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP5, 0}, + {"S_JETJAW_CHOMP5", 0, SPR_JJAW, 1, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP6, 0}, + {"S_JETJAW_CHOMP6", 0, SPR_JJAW, 1, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP7, 0}, + {"S_JETJAW_CHOMP7", 0, SPR_JJAW, 1, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP8, 0}, + {"S_JETJAW_CHOMP8", 0, SPR_JJAW, 1, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP9, 0}, + {"S_JETJAW_CHOMP9", 0, SPR_JJAW, 2, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP10, 0}, + {"S_JETJAW_CHOMP10", 0, SPR_JJAW, 2, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP11, 0}, + {"S_JETJAW_CHOMP11", 0, SPR_JJAW, 2, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP12, 0}, + {"S_JETJAW_CHOMP12", 0, SPR_JJAW, 2, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP13, 0}, + {"S_JETJAW_CHOMP13", 0, SPR_JJAW, 3, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP14, 0}, + {"S_JETJAW_CHOMP14", 0, SPR_JJAW, 3, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP15, 0}, + {"S_JETJAW_CHOMP15", 0, SPR_JJAW, 3, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP16, 0}, + {"S_JETJAW_CHOMP16", 0, SPR_JJAW, 3, 1, {A_JetJawChomp}, 0, 0, S_JETJAW_CHOMP1, 0}, + {"S_JETJAW_SOUND", 0, SPR_JJAW, 0, 1, {A_PlayAttackSound}, 0, 0, S_JETJAW_SOUND, 0}, // Snailer - {SPR_SNLR, 0, 1, {A_SnailerThink}, 0, 0, S_SNAILER1, 0}, // S_SNAILER1 - {SPR_BOM1, 0, 0, {A_FlickySpawn}, 1<<17, 0, S_XPLD1, 0}, // S_SNAILER_FLICKY + {"S_SNAILER1", 0, SPR_SNLR, 0, 1, {A_SnailerThink}, 0, 0, S_SNAILER1, 0}, + {"S_SNAILER_FLICKY", 0, SPR_BOM1, 0, 0, {A_FlickySpawn}, 1<<17, 0, S_XPLD1, 0}, // Vulture - {SPR_VLTR, 4, 35, {A_Look}, 1, 0, S_VULTURE_STND, 0}, // S_VULTURE_STND - {SPR_VLTR, 4, 3, {A_VultureHover}, 0, 0, S_VULTURE_DRIFT, 0}, // S_VULTURE_DRIFT - {SPR_VLTR, 0, 6, {A_VultureBlast}, 0, 0, S_VULTURE_ZOOM2, 0}, // S_VULTURE_ZOOM1 - {SPR_VLTR, 0, 3, {A_VultureFly}, 0, 0, S_VULTURE_ZOOM2, 0}, // S_VULTURE_ZOOM2 - {SPR_VLTR, 0, 3*TICRATE, {NULL}, 0, 0, S_VULTURE_DRIFT, 0}, // S_VULTURE_STUNNED + {"S_VULTURE_STND", 0, SPR_VLTR, 4, 35, {A_Look}, 1, 0, S_VULTURE_STND, 0}, + {"S_VULTURE_DRIFT", 0, SPR_VLTR, 4, 3, {A_VultureHover}, 0, 0, S_VULTURE_DRIFT, 0}, + {"S_VULTURE_ZOOM1", 0, SPR_VLTR, 0, 6, {A_VultureBlast}, 0, 0, S_VULTURE_ZOOM2, 0}, + {"S_VULTURE_ZOOM2", 0, SPR_VLTR, 0, 3, {A_VultureFly}, 0, 0, S_VULTURE_ZOOM2, 0}, + {"S_VULTURE_STUNNED", 0, SPR_VLTR, 0, 3*TICRATE, {NULL}, 0, 0, S_VULTURE_DRIFT, 0}, // Pointy - {SPR_PNTY, 0, 1, {A_PointyThink}, 0, 0, S_POINTY1, 0}, // S_POINTY1 + {"S_POINTY1", 0, SPR_PNTY, 0, 1, {A_PointyThink}, 0, 0, S_POINTY1, 0}, // Pointy Ball - {SPR_PNTY, 1, 1, {A_CheckBuddy}, 0, 0, S_POINTYBALL1, 0}, // S_POINTYBALL1 + {"S_POINTYBALL1", 0, SPR_PNTY, 1, 1, {A_CheckBuddy}, 0, 0, S_POINTYBALL1, 0}, // Robo-Hood - {SPR_ARCH, 0, 4, {A_Look}, 2048<<FRACBITS, 0, S_ROBOHOOD_LOOK, 0}, // S_ROBOHOOD_LOOK - {SPR_ARCH, 0, 1, {A_HoodThink}, 0, 0, S_ROBOHOOD_STAND, 0}, // S_ROBOHOOD_STAND - {SPR_ARCH, 2, TICRATE, {A_PlayActiveSound}, 0, 0, S_ROBOHOOD_FIRE2, 0}, // S_ROBOHOOD_FIRE1 - {SPR_ARCH, 2, 20, {A_HoodFire}, MT_ARROW, 0, S_ROBOHOOD_STAND, 0}, // S_ROBOHOOD_FIRE2 - {SPR_ARCH, 1, 1, {A_FaceTarget}, 0, 0, S_ROBOHOOD_JUMP2, 0}, // S_ROBOHOOD_JUMP1 - {SPR_ARCH, 1, 1, {A_BunnyHop}, 4, -10, S_ROBOHOOD_JUMP3, 0}, // S_ROBOHOOD_JUMP2 - {SPR_ARCH, 1, 1, {A_HoodFall}, 0, 0, S_ROBOHOOD_JUMP3, 0}, // S_ROBOHOOD_JUMP3 + {"S_ROBOHOOD_LOOK", 0, SPR_ARCH, 0, 4, {A_Look}, 2048<<FRACBITS, 0, S_ROBOHOOD_LOOK, 0}, + {"S_ROBOHOOD_STAND", 0, SPR_ARCH, 0, 1, {A_HoodThink}, 0, 0, S_ROBOHOOD_STAND, 0}, + {"S_ROBOHOOD_FIRE1", 0, SPR_ARCH, 2, TICRATE, {A_PlayActiveSound}, 0, 0, S_ROBOHOOD_FIRE2, 0}, + {"S_ROBOHOOD_FIRE2", 0, SPR_ARCH, 2, 20, {A_HoodFire}, MT_ARROW, 0, S_ROBOHOOD_STAND, 0}, + {"S_ROBOHOOD_JUMP1", 0, SPR_ARCH, 1, 1, {A_FaceTarget}, 0, 0, S_ROBOHOOD_JUMP2, 0}, + {"S_ROBOHOOD_JUMP2", 0, SPR_ARCH, 1, 1, {A_BunnyHop}, 4, -10, S_ROBOHOOD_JUMP3, 0}, + {"S_ROBOHOOD_JUMP3", 0, SPR_ARCH, 1, 1, {A_HoodFall}, 0, 0, S_ROBOHOOD_JUMP3, 0}, // Castlebot Facestabber - {SPR_CBFS, 0, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND2, 0}, // S_FACESTABBER_STND1 - {SPR_CBFS, 1, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND3, 0}, // S_FACESTABBER_STND2 - {SPR_CBFS, 2, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND4, 0}, // S_FACESTABBER_STND3 - {SPR_CBFS, 3, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND5, 0}, // S_FACESTABBER_STND4 - {SPR_CBFS, 4, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND6, 0}, // S_FACESTABBER_STND5 - {SPR_CBFS, 5, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND1, 0}, // S_FACESTABBER_STND6 - {SPR_CBFS, 0, 1, {A_FaceStabRev}, 20, S_FACESTABBER_CHARGE2, S_FACESTABBER_CHARGE1, 0}, // S_FACESTABBER_CHARGE1 - {SPR_CBFS, 0, 0, {A_FaceTarget}, 0, 0, S_FACESTABBER_CHARGE3, 0}, // S_FACESTABBER_CHARGE2 - {SPR_CBFS, 7, 1, {A_FaceStabHurl}, 6, S_FACESTABBER_CHARGE4, S_FACESTABBER_CHARGE3, 0}, // S_FACESTABBER_CHARGE3 - {SPR_CBFS, 7, 1, {A_FaceStabMiss}, 0, S_FACESTABBER_STND1, S_FACESTABBER_CHARGE4, 0}, // S_FACESTABBER_CHARGE4 - {SPR_CBFS, 0, 35, {A_Pain}, 0, 0, S_FACESTABBER_STND1, 0}, // S_FACESTABBER_PAIN - {SPR_CBFS, 0, 2, {A_BossScream}, 1, 0, S_FACESTABBER_DIE2, 0}, // S_FACESTABBER_DIE1 - {SPR_NULL, 0, 2, {A_BossScream}, 1, 0, S_FACESTABBER_DIE3, 0}, // S_FACESTABBER_DIE2 - {SPR_NULL, 0, 0, {A_Repeat}, 7, S_FACESTABBER_DIE1, S_XPLD_FLICKY, 0}, // S_FACESTABBER_DIE3 - - {SPR_STAB, FF_PAPERSPRITE|FF_TRANS50|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FACESTABBERSPEAR + {"S_FACESTABBER_STND1", 0, SPR_CBFS, 0, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND2, 0}, + {"S_FACESTABBER_STND2", 0, SPR_CBFS, 1, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND3, 0}, + {"S_FACESTABBER_STND3", 0, SPR_CBFS, 2, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND4, 0}, + {"S_FACESTABBER_STND4", 0, SPR_CBFS, 3, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND5, 0}, + {"S_FACESTABBER_STND5", 0, SPR_CBFS, 4, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND6, 0}, + {"S_FACESTABBER_STND6", 0, SPR_CBFS, 5, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND1, 0}, + {"S_FACESTABBER_CHARGE1", 0, SPR_CBFS, 0, 1, {A_FaceStabRev}, 20, S_FACESTABBER_CHARGE2, S_FACESTABBER_CHARGE1, 0}, + {"S_FACESTABBER_CHARGE2", 0, SPR_CBFS, 0, 0, {A_FaceTarget}, 0, 0, S_FACESTABBER_CHARGE3, 0}, + {"S_FACESTABBER_CHARGE3", 0, SPR_CBFS, 7, 1, {A_FaceStabHurl}, 6, S_FACESTABBER_CHARGE4, S_FACESTABBER_CHARGE3, 0}, + {"S_FACESTABBER_CHARGE4", 0, SPR_CBFS, 7, 1, {A_FaceStabMiss}, 0, S_FACESTABBER_STND1, S_FACESTABBER_CHARGE4, 0}, + {"S_FACESTABBER_PAIN", 0, SPR_CBFS, 0, 35, {A_Pain}, 0, 0, S_FACESTABBER_STND1, 0}, + {"S_FACESTABBER_DIE1", 0, SPR_CBFS, 0, 2, {A_BossScream}, 1, 0, S_FACESTABBER_DIE2, 0}, + {"S_FACESTABBER_DIE2", 0, SPR_NULL, 0, 2, {A_BossScream}, 1, 0, S_FACESTABBER_DIE3, 0}, + {"S_FACESTABBER_DIE3", 0, SPR_NULL, 0, 0, {A_Repeat}, 7, S_FACESTABBER_DIE1, S_XPLD_FLICKY, 0}, + + {"S_FACESTABBERSPEAR", 0, SPR_STAB, FF_PAPERSPRITE|FF_TRANS50|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // Egg Guard - {SPR_SPSH, 0, 1, {A_Look}, 0, 0, S_EGGGUARD_STND, 0}, // S_EGGGUARD_STND - {SPR_SPSH, 1, 3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK2, 0}, // S_EGGGUARD_WALK1 - {SPR_SPSH, 2, 3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK3, 0}, // S_EGGGUARD_WALK2 - {SPR_SPSH, 3, 3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK4, 0}, // S_EGGGUARD_WALK3 - {SPR_SPSH, 4, 3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK1, 0}, // S_EGGGUARD_WALK4 - {SPR_SPSH, 5, 5, {NULL}, 0, 0, S_EGGGUARD_MAD2, 0}, // S_EGGGUARD_MAD1 - {SPR_SPSH, 6, 5, {NULL}, 0, 0, S_EGGGUARD_MAD3, 0}, // S_EGGGUARD_MAD2 - {SPR_SPSH, 7, 15, {NULL}, 0, 0, S_EGGGUARD_RUN1, 0}, // S_EGGGUARD_MAD3 - {SPR_SPSH, 8, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN2, 0}, // S_EGGGUARD_RUN1 - {SPR_SPSH, 9, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN3, 0}, // S_EGGGUARD_RUN2 - {SPR_SPSH, 10, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN4, 0}, // S_EGGGUARD_RUN3 - {SPR_SPSH, 11, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN1, 0}, // S_EGGGUARD_RUN4 - - {SPR_ESHI, 0, 8, {A_EggShield}, 0, 0, S_EGGSHIELD, 0}, // S_EGGSHIELD - {SPR_ESHI, 0, TICRATE/2, {NULL}, 0, 0, S_NULL, 0}, // S_EGGSHIELDBREAK + {"S_EGGGUARD_STND", 0, SPR_SPSH, 0, 1, {A_Look}, 0, 0, S_EGGGUARD_STND, 0}, + {"S_EGGGUARD_WALK1", 0, SPR_SPSH, 1, 3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK2, 0}, + {"S_EGGGUARD_WALK2", 0, SPR_SPSH, 2, 3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK3, 0}, + {"S_EGGGUARD_WALK3", 0, SPR_SPSH, 3, 3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK4, 0}, + {"S_EGGGUARD_WALK4", 0, SPR_SPSH, 4, 3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK1, 0}, + {"S_EGGGUARD_MAD1", 0, SPR_SPSH, 5, 5, {NULL}, 0, 0, S_EGGGUARD_MAD2, 0}, + {"S_EGGGUARD_MAD2", 0, SPR_SPSH, 6, 5, {NULL}, 0, 0, S_EGGGUARD_MAD3, 0}, + {"S_EGGGUARD_MAD3", 0, SPR_SPSH, 7, 15, {NULL}, 0, 0, S_EGGGUARD_RUN1, 0}, + {"S_EGGGUARD_RUN1", 0, SPR_SPSH, 8, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN2, 0}, + {"S_EGGGUARD_RUN2", 0, SPR_SPSH, 9, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN3, 0}, + {"S_EGGGUARD_RUN3", 0, SPR_SPSH, 10, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN4, 0}, + {"S_EGGGUARD_RUN4", 0, SPR_SPSH, 11, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN1, 0}, + + {"S_EGGSHIELD", 0, SPR_ESHI, 0, 8, {A_EggShield}, 0, 0, S_EGGSHIELD, 0}, + {"S_EGGSHIELDBREAK", 0, SPR_ESHI, 0, TICRATE/2, {NULL}, 0, 0, S_NULL, 0}, // Green Snapper - {SPR_GSNP, 0, TICRATE, {NULL}, 0, 0, S_SNAPPER_SPAWN2, 0}, // S_SNAPPER_SPAWN - {SPR_GSNP, 0, 2, {A_SnapperSpawn}, MT_SNAPPER_LEG, MT_SNAPPER_HEAD, S_GSNAPPER_STND, 0}, // S_SNAPPER_SPAWN2 - {SPR_GSNP, 0, 1, {A_SnapperThinker}, 0, 0, S_GSNAPPER_STND, 0}, // S_GSNAPPER_STND - {SPR_GSNP, 0, 2, {A_Chase}, 0, 0, S_GSNAPPER2, 0}, // S_GSNAPPER1 - {SPR_GSNP, 1, 2, {A_Chase}, 0, 0, S_GSNAPPER3, 0}, // S_GSNAPPER2 - {SPR_GSNP, 2, 2, {A_Chase}, 0, 0, S_GSNAPPER4, 0}, // S_GSNAPPER3 - {SPR_GSNP, 3, 2, {A_Chase}, 0, 0, S_GSNAPPER1, 0}, // S_GSNAPPER4 - {SPR_GSNP, 0, 0, {A_KillSegments}, 0, 0, S_XPLD_FLICKY, 0}, // S_SNAPPER_XPLD - {SPR_GSNL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNAPPER_LEG - {SPR_GSNL, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNAPPER_LEGRAISE - {SPR_GSNH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNAPPER_HEAD + {"S_SNAPPER_SPAWN", 0, SPR_GSNP, 0, TICRATE, {NULL}, 0, 0, S_SNAPPER_SPAWN2, 0}, + {"S_SNAPPER_SPAWN2", 0, SPR_GSNP, 0, 2, {A_SnapperSpawn}, MT_SNAPPER_LEG, MT_SNAPPER_HEAD, S_GSNAPPER_STND, 0}, + {"S_GSNAPPER_STND", 0, SPR_GSNP, 0, 1, {A_SnapperThinker}, 0, 0, S_GSNAPPER_STND, 0}, + {"S_GSNAPPER1", 0, SPR_GSNP, 0, 2, {A_Chase}, 0, 0, S_GSNAPPER2, 0}, + {"S_GSNAPPER2", 0, SPR_GSNP, 1, 2, {A_Chase}, 0, 0, S_GSNAPPER3, 0}, + {"S_GSNAPPER3", 0, SPR_GSNP, 2, 2, {A_Chase}, 0, 0, S_GSNAPPER4, 0}, + {"S_GSNAPPER4", 0, SPR_GSNP, 3, 2, {A_Chase}, 0, 0, S_GSNAPPER1, 0}, + {"S_SNAPPER_XPLD", 0, SPR_GSNP, 0, 0, {A_KillSegments}, 0, 0, S_XPLD_FLICKY, 0}, + {"S_SNAPPER_LEG", 0, SPR_GSNL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SNAPPER_LEGRAISE", 0, SPR_GSNL, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SNAPPER_HEAD", 0, SPR_GSNH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Minus - {SPR_MNUD, 0, 1, {NULL}, 0, 0, S_MINUS_STND, 0}, // S_MINUS_INIT (required for objectplace to work) - {SPR_NULL, 0, 10, {A_Look}, 0, 0, S_MINUS_STND, 0}, // S_MINUS_STND - {SPR_NULL, 0, 1, {A_MinusDigging}, 1, 0, S_MINUS_DIGGING2, 0}, // S_MINUS_DIGGING1 - {SPR_NULL, 0, 1, {A_MinusDigging}, 0, 0, S_MINUS_DIGGING3, 0}, // S_MINUS_DIGGING2 - {SPR_NULL, 0, 1, {A_MinusDigging}, 0, 0, S_MINUS_DIGGING4, 0}, // S_MINUS_DIGGING3 - {SPR_NULL, 0, 1, {A_MinusDigging}, 0, 0, S_MINUS_DIGGING1, 0}, // S_MINUS_DIGGING4 - {SPR_NULL, 0, 25, {NULL}, 0, 0, S_MINUS_POPUP, 0}, // S_MINUS_BURST0 - {SPR_MNUD, FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST2, 0}, // S_MINUS_BURST1 - {SPR_MNUD, 1|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST3, 0}, // S_MINUS_BURST2 - {SPR_MNUD, 2|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST4, 0}, // S_MINUS_BURST3 - {SPR_MNUD, 3|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST5, 0}, // S_MINUS_BURST4 - {SPR_MNUD, 4|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUSDIRT2, 0}, // S_MINUS_BURST5 - {SPR_MNUS, 3, 1, {A_MinusPopup}, 0, 0, S_MINUS_AERIAL1, 0}, // S_MINUS_POPUP - {SPR_MNUS, 0, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL2, 0}, // S_MINUS_AERIAL1 - {SPR_MNUS, 1, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL3, 0}, // S_MINUS_AERIAL2 - {SPR_MNUS, 2, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL4, 0}, // S_MINUS_AERIAL3 - {SPR_MNUS, 3, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL1, 0}, // S_MINUS_AERIAL4 - - {SPR_MNUD, FF_ANIMATE, 6, {NULL}, 1, 5, S_MINUSDIRT2, 0}, // S_MINUSDIRT1 - {SPR_MNUD, 5, 8, {NULL}, 3, 5, S_MINUSDIRT3, 0}, // S_MINUSDIRT2 - {SPR_MNUD, 4, 8, {NULL}, 3, 5, S_MINUSDIRT4, 0}, // S_MINUSDIRT3 - {SPR_MNUD, 3, 8, {NULL}, 3, 5, S_MINUSDIRT5, 0}, // S_MINUSDIRT4 - {SPR_MNUD, 2, 8, {NULL}, 3, 5, S_MINUSDIRT6, 0}, // S_MINUSDIRT5 - {SPR_MNUD, 1, 8, {NULL}, 3, 5, S_MINUSDIRT7, 0}, // S_MINUSDIRT6 - {SPR_MNUD, 0, 8, {NULL}, 3, 5, S_NULL, 0}, // S_MINUSDIRT7 + {"S_MINUS_INIT", 0, SPR_MNUD, 0, 1, {NULL}, 0, 0, S_MINUS_STND, 0}, // (required for objectplace to work) + {"S_MINUS_STND", 0, SPR_NULL, 0, 10, {A_Look}, 0, 0, S_MINUS_STND, 0}, + {"S_MINUS_DIGGING1", 0, SPR_NULL, 0, 1, {A_MinusDigging}, 1, 0, S_MINUS_DIGGING2, 0}, + {"S_MINUS_DIGGING2", 0, SPR_NULL, 0, 1, {A_MinusDigging}, 0, 0, S_MINUS_DIGGING3, 0}, + {"S_MINUS_DIGGING3", 0, SPR_NULL, 0, 1, {A_MinusDigging}, 0, 0, S_MINUS_DIGGING4, 0}, + {"S_MINUS_DIGGING4", 0, SPR_NULL, 0, 1, {A_MinusDigging}, 0, 0, S_MINUS_DIGGING1, 0}, + {"S_MINUS_BURST0", 0, SPR_NULL, 0, 25, {NULL}, 0, 0, S_MINUS_POPUP, 0}, + {"S_MINUS_BURST1", 0, SPR_MNUD, FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST2, 0}, + {"S_MINUS_BURST2", 0, SPR_MNUD, 1|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST3, 0}, + {"S_MINUS_BURST3", 0, SPR_MNUD, 2|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST4, 0}, + {"S_MINUS_BURST4", 0, SPR_MNUD, 3|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST5, 0}, + {"S_MINUS_BURST5", 0, SPR_MNUD, 4|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUSDIRT2, 0}, + {"S_MINUS_POPUP", 0, SPR_MNUS, 3, 1, {A_MinusPopup}, 0, 0, S_MINUS_AERIAL1, 0}, + {"S_MINUS_AERIAL1", 0, SPR_MNUS, 0, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL2, 0}, + {"S_MINUS_AERIAL2", 0, SPR_MNUS, 1, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL3, 0}, + {"S_MINUS_AERIAL3", 0, SPR_MNUS, 2, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL4, 0}, + {"S_MINUS_AERIAL4", 0, SPR_MNUS, 3, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL1, 0}, + + {"S_MINUSDIRT1", 0, SPR_MNUD, FF_ANIMATE, 6, {NULL}, 1, 5, S_MINUSDIRT2, 0}, + {"S_MINUSDIRT2", 0, SPR_MNUD, 5, 8, {NULL}, 3, 5, S_MINUSDIRT3, 0}, + {"S_MINUSDIRT3", 0, SPR_MNUD, 4, 8, {NULL}, 3, 5, S_MINUSDIRT4, 0}, + {"S_MINUSDIRT4", 0, SPR_MNUD, 3, 8, {NULL}, 3, 5, S_MINUSDIRT5, 0}, + {"S_MINUSDIRT5", 0, SPR_MNUD, 2, 8, {NULL}, 3, 5, S_MINUSDIRT6, 0}, + {"S_MINUSDIRT6", 0, SPR_MNUD, 1, 8, {NULL}, 3, 5, S_MINUSDIRT7, 0}, + {"S_MINUSDIRT7", 0, SPR_MNUD, 0, 8, {NULL}, 3, 5, S_NULL, 0}, // Spring Shell - {SPR_SSHL, 0, 4, {A_Look}, 0, 0, S_SSHELL_STND, 0}, // S_SSHELL_STND - {SPR_SSHL, 0, 4, {A_Chase}, 0, 0, S_SSHELL_RUN2, 0}, // S_SSHELL_RUN1 - {SPR_SSHL, 1, 4, {A_Chase}, 0, 0, S_SSHELL_RUN3, 0}, // S_SSHELL_RUN2 - {SPR_SSHL, 2, 4, {A_Chase}, 0, 0, S_SSHELL_RUN4, 0}, // S_SSHELL_RUN3 - {SPR_SSHL, 3, 4, {A_Chase}, 0, 0, S_SSHELL_RUN1, 0}, // S_SSHELL_RUN4 - {SPR_SSHL, 7, 4, {A_Pain}, 0, 0, S_SSHELL_SPRING2, 0}, // S_SSHELL_SPRING1 - {SPR_SSHL, 6, 1, {NULL}, 0, 0, S_SSHELL_SPRING3, 0}, // S_SSHELL_SPRING2 - {SPR_SSHL, 5, 1, {NULL}, 0, 0, S_SSHELL_SPRING4, 0}, // S_SSHELL_SPRING3 - {SPR_SSHL, 4, 1, {NULL}, 0, 0, S_SSHELL_RUN1, 0}, // S_SSHELL_SPRING4 + {"S_SSHELL_STND", 0, SPR_SSHL, 0, 4, {A_Look}, 0, 0, S_SSHELL_STND, 0}, + {"S_SSHELL_RUN1", 0, SPR_SSHL, 0, 4, {A_Chase}, 0, 0, S_SSHELL_RUN2, 0}, + {"S_SSHELL_RUN2", 0, SPR_SSHL, 1, 4, {A_Chase}, 0, 0, S_SSHELL_RUN3, 0}, + {"S_SSHELL_RUN3", 0, SPR_SSHL, 2, 4, {A_Chase}, 0, 0, S_SSHELL_RUN4, 0}, + {"S_SSHELL_RUN4", 0, SPR_SSHL, 3, 4, {A_Chase}, 0, 0, S_SSHELL_RUN1, 0}, + {"S_SSHELL_SPRING1", 0, SPR_SSHL, 7, 4, {A_Pain}, 0, 0, S_SSHELL_SPRING2, 0}, + {"S_SSHELL_SPRING2", 0, SPR_SSHL, 6, 1, {NULL}, 0, 0, S_SSHELL_SPRING3, 0}, + {"S_SSHELL_SPRING3", 0, SPR_SSHL, 5, 1, {NULL}, 0, 0, S_SSHELL_SPRING4, 0}, + {"S_SSHELL_SPRING4", 0, SPR_SSHL, 4, 1, {NULL}, 0, 0, S_SSHELL_RUN1, 0}, // Spring Shell (yellow) - {SPR_SSHL, 8, 4, {A_Look}, 0, 0, S_YSHELL_STND, 0}, // S_YSHELL_STND - {SPR_SSHL, 8, 4, {A_Chase}, 0, 0, S_YSHELL_RUN2, 0}, // S_YSHELL_RUN1 - {SPR_SSHL, 9, 4, {A_Chase}, 0, 0, S_YSHELL_RUN3, 0}, // S_YSHELL_RUN2 - {SPR_SSHL, 10, 4, {A_Chase}, 0, 0, S_YSHELL_RUN4, 0}, // S_YSHELL_RUN3 - {SPR_SSHL, 11, 4, {A_Chase}, 0, 0, S_YSHELL_RUN1, 0}, // S_YSHELL_RUN4 - {SPR_SSHL, 15, 4, {A_Pain}, 0, 0, S_YSHELL_SPRING2, 0}, // S_YSHELL_SPRING1 - {SPR_SSHL, 14, 1, {NULL}, 0, 0, S_YSHELL_SPRING3, 0}, // S_YSHELL_SPRING2 - {SPR_SSHL, 13, 1, {NULL}, 0, 0, S_YSHELL_SPRING4, 0}, // S_YSHELL_SPRING3 - {SPR_SSHL, 12, 1, {NULL}, 0, 0, S_YSHELL_RUN1, 0}, // S_YSHELL_SPRING4 + {"S_YSHELL_STND", 0, SPR_SSHL, 8, 4, {A_Look}, 0, 0, S_YSHELL_STND, 0}, + {"S_YSHELL_RUN1", 0, SPR_SSHL, 8, 4, {A_Chase}, 0, 0, S_YSHELL_RUN2, 0}, + {"S_YSHELL_RUN2", 0, SPR_SSHL, 9, 4, {A_Chase}, 0, 0, S_YSHELL_RUN3, 0}, + {"S_YSHELL_RUN3", 0, SPR_SSHL, 10, 4, {A_Chase}, 0, 0, S_YSHELL_RUN4, 0}, + {"S_YSHELL_RUN4", 0, SPR_SSHL, 11, 4, {A_Chase}, 0, 0, S_YSHELL_RUN1, 0}, + {"S_YSHELL_SPRING1", 0, SPR_SSHL, 15, 4, {A_Pain}, 0, 0, S_YSHELL_SPRING2, 0}, + {"S_YSHELL_SPRING2", 0, SPR_SSHL, 14, 1, {NULL}, 0, 0, S_YSHELL_SPRING3, 0}, + {"S_YSHELL_SPRING3", 0, SPR_SSHL, 13, 1, {NULL}, 0, 0, S_YSHELL_SPRING4, 0}, + {"S_YSHELL_SPRING4", 0, SPR_SSHL, 12, 1, {NULL}, 0, 0, S_YSHELL_RUN1, 0}, // Unidus - {SPR_UNID, 0, 4, {A_Look}, 0, 0, S_UNIDUS_STND, 0}, // S_UNIDUS_STND - {SPR_UNID, 0, 1, {A_Chase}, 0, 0, S_UNIDUS_RUN , 0}, // S_UNIDUS_RUN - {SPR_UNID, 1, 1, {A_UnidusBall}, 1, 0, S_UNIDUS_BALL, 0}, // S_UNIDUS_BALL + {"S_UNIDUS_STND", 0, SPR_UNID, 0, 4, {A_Look}, 0, 0, S_UNIDUS_STND, 0}, + {"S_UNIDUS_RUN", 0, SPR_UNID, 0, 1, {A_Chase}, 0, 0, S_UNIDUS_RUN , 0}, + {"S_UNIDUS_BALL", 0, SPR_UNID, 1, 1, {A_UnidusBall}, 1, 0, S_UNIDUS_BALL, 0}, // Canarivore - {SPR_CANA, 0, 5, {A_Look}, 1200*FRACUNIT+1, 1, S_CANARIVORE_LOOK, 0}, // S_CANARIVORE_LOOK - {SPR_CANA, 0, 3, {A_PlaySound}, sfx_s3k76, 1, S_CANARIVORE_AWAKEN2, 0}, // S_CANARIVORE_AWAKEN1 - {SPR_CANA, 1, 5, {NULL}, 0, 0, S_CANARIVORE_AWAKEN3, 0}, // S_CANARIVORE_AWAKEN2 - {SPR_CANA, 2, 8, {NULL}, 0, 0, S_CANARIVORE_GAS1, 0}, // S_CANARIVORE_AWAKEN3 - {SPR_CANA, 2, 15, {A_PlaySound}, sfx_s3k93, 1, S_CANARIVORE_GAS2, 0}, // S_CANARIVORE_GAS1 - {SPR_CANA, 1, 4, {NULL}, 0, 0, S_CANARIVORE_GAS3, 0}, // S_CANARIVORE_GAS2 - {SPR_CANA, 2, 0, {A_PlaySound}, sfx_s3k97, 1, S_CANARIVORE_GAS4, 0}, // S_CANARIVORE_GAS3 - {SPR_CANA, 2, 5, {A_CanarivoreGas}, MT_CANARIVORE_GAS, 0, S_CANARIVORE_GAS5, 0}, // S_CANARIVORE_GAS4 - {SPR_CANA, 1, 5, {NULL}, 0, 0, S_CANARIVORE_GASREPEAT, 0}, // S_CANARIVORE_GAS5 - {SPR_CANA, 2, 0, {A_Repeat}, 6, S_CANARIVORE_GAS4, S_CANARIVORE_CLOSE1, 0}, // S_CANARIVORE_GASREPEAT - {SPR_CANA, 1, 8, {NULL}, 0, 0, S_CANARIVORE_CLOSE2, 0}, // S_CANARIVORE_CLOSE1 - {SPR_CANA, 0, 90, {NULL}, sfx_s3k5d, 1, S_CANARIVORE_LOOK, 0}, // S_CANARIVORE_CLOSE2 - - {SPR_CANG, 0|FF_TRANS90, 2, {NULL}, 0, 0, S_CANARIVOREGAS_2, 0}, // S_CANARIVOREGAS_1 - {SPR_CANG, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_CANARIVOREGAS_3, 0}, // S_CANARIVOREGAS_2 - {SPR_CANG, 0|FF_TRANS40, 10, {NULL}, 0, 0, S_CANARIVOREGAS_4, 0}, // S_CANARIVOREGAS_3 - {SPR_CANG, 0|FF_TRANS50, 10, {NULL}, 0, 0, S_CANARIVOREGAS_5, 0}, // S_CANARIVOREGAS_4 - {SPR_CANG, 0|FF_TRANS60, 10, {NULL}, 0, 0, S_CANARIVOREGAS_6, 0}, // S_CANARIVOREGAS_5 - {SPR_CANG, 0|FF_TRANS70, 10, {NULL}, 0, 0, S_CANARIVOREGAS_7, 0}, // S_CANARIVOREGAS_6 - {SPR_CANG, 0|FF_TRANS80, 10, {NULL}, 0, 0, S_CANARIVOREGAS_8, 0}, // S_CANARIVOREGAS_7 - {SPR_CANG, 0|FF_TRANS90, 10, {NULL}, 0, 0, S_NULL, 0}, // S_CANARIVOREGAS_8 + {"S_CANARIVORE_LOOK", 0, SPR_CANA, 0, 5, {A_Look}, 1200*FRACUNIT+1, 1, S_CANARIVORE_LOOK, 0}, + {"S_CANARIVORE_AWAKEN1", 0, SPR_CANA, 0, 3, {A_PlaySound}, sfx_s3k76, 1, S_CANARIVORE_AWAKEN2, 0}, + {"S_CANARIVORE_AWAKEN2", 0, SPR_CANA, 1, 5, {NULL}, 0, 0, S_CANARIVORE_AWAKEN3, 0}, + {"S_CANARIVORE_AWAKEN3", 0, SPR_CANA, 2, 8, {NULL}, 0, 0, S_CANARIVORE_GAS1, 0}, + {"S_CANARIVORE_GAS1", 0, SPR_CANA, 2, 15, {A_PlaySound}, sfx_s3k93, 1, S_CANARIVORE_GAS2, 0}, + {"S_CANARIVORE_GAS2", 0, SPR_CANA, 1, 4, {NULL}, 0, 0, S_CANARIVORE_GAS3, 0}, + {"S_CANARIVORE_GAS3", 0, SPR_CANA, 2, 0, {A_PlaySound}, sfx_s3k97, 1, S_CANARIVORE_GAS4, 0}, + {"S_CANARIVORE_GAS4", 0, SPR_CANA, 2, 5, {A_CanarivoreGas}, MT_CANARIVORE_GAS, 0, S_CANARIVORE_GAS5, 0}, + {"S_CANARIVORE_GAS5", 0, SPR_CANA, 1, 5, {NULL}, 0, 0, S_CANARIVORE_GASREPEAT, 0}, + {"S_CANARIVORE_GASREPEAT", 0, SPR_CANA, 2, 0, {A_Repeat}, 6, S_CANARIVORE_GAS4, S_CANARIVORE_CLOSE1, 0}, + {"S_CANARIVORE_CLOSE1", 0, SPR_CANA, 1, 8, {NULL}, 0, 0, S_CANARIVORE_CLOSE2, 0}, + {"S_CANARIVORE_CLOSE2", 0, SPR_CANA, 0, 90, {NULL}, sfx_s3k5d, 1, S_CANARIVORE_LOOK, 0}, + + {"S_CANARIVOREGAS_1", 0, SPR_CANG, 0|FF_TRANS90, 2, {NULL}, 0, 0, S_CANARIVOREGAS_2, 0}, + {"S_CANARIVOREGAS_2", 0, SPR_CANG, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_CANARIVOREGAS_3, 0}, + {"S_CANARIVOREGAS_3", 0, SPR_CANG, 0|FF_TRANS40, 10, {NULL}, 0, 0, S_CANARIVOREGAS_4, 0}, + {"S_CANARIVOREGAS_4", 0, SPR_CANG, 0|FF_TRANS50, 10, {NULL}, 0, 0, S_CANARIVOREGAS_5, 0}, + {"S_CANARIVOREGAS_5", 0, SPR_CANG, 0|FF_TRANS60, 10, {NULL}, 0, 0, S_CANARIVOREGAS_6, 0}, + {"S_CANARIVOREGAS_6", 0, SPR_CANG, 0|FF_TRANS70, 10, {NULL}, 0, 0, S_CANARIVOREGAS_7, 0}, + {"S_CANARIVOREGAS_7", 0, SPR_CANG, 0|FF_TRANS80, 10, {NULL}, 0, 0, S_CANARIVOREGAS_8, 0}, + {"S_CANARIVOREGAS_8", 0, SPR_CANG, 0|FF_TRANS90, 10, {NULL}, 0, 0, S_NULL, 0}, // Pyre Fly - {SPR_PYRE, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL, 0}, // S_PYREFLY_FLY - {SPR_PYRE, 4|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 3, 2, S_NULL, 0}, // S_PYREFLY_BURN - {SPR_FLAM, FF_FULLBRIGHT, 10, {NULL}, 0, 0, S_PYREFIRE2, 0}, // S_PYREFIRE1 - {SPR_FLAM, 1|FF_FULLBRIGHT, 10, {A_FireShrink}, 0, 16, S_NULL, 0}, // S_PYREFIRE2 + {"S_PYREFLY_FLY", 0, SPR_PYRE, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL, 0}, + {"S_PYREFLY_BURN", 0, SPR_PYRE, 4|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 3, 2, S_NULL, 0}, + {"S_PYREFIRE1", 0, SPR_FLAM, FF_FULLBRIGHT, 10, {NULL}, 0, 0, S_PYREFIRE2, 0}, + {"S_PYREFIRE2", 0, SPR_FLAM, 1|FF_FULLBRIGHT, 10, {A_FireShrink}, 0, 16, S_NULL, 0}, // Pterabyte - {SPR_NULL, 0, -1, {A_SpawnPterabytes}, 0, 0, S_PTERABYTESPAWNER, 0}, // S_PTERABYTESPAWNER - {SPR_NULL, 0, 1, {A_PterabyteHover}, 0, 0, S_PTERABYTEWAYPOINT, 0}, // S_PTERABYTEWAYPOINT - {SPR_PTER, 0, 6, {NULL}, 0, 0, S_PTERABYTE_FLY2, 0}, // S_PTERABYTE_FLY1 - {SPR_PTER, 1, 2, {NULL}, 0, 0, S_PTERABYTE_FLY3, 0}, // S_PTERABYTE_FLY2 - {SPR_PTER, 2, 6, {NULL}, 0, 0, S_PTERABYTE_FLY4, 0}, // S_PTERABYTE_FLY3 - {SPR_PTER, 3, 2, {NULL}, 0, 0, S_PTERABYTE_FLY1, 0}, // S_PTERABYTE_FLY4 - {SPR_PTER, 4, 1, {NULL}, 0, 0, S_PTERABYTE_SWOOPDOWN, 0}, // S_PTERABYTE_SWOOPDOWN - {SPR_PTER, 0, 1, {NULL}, 0, 0, S_PTERABYTE_SWOOPUP, 0}, // S_PTERABYTE_SWOOPUP + {"S_PTERABYTESPAWNER", 0, SPR_NULL, 0, -1, {A_SpawnPterabytes}, 0, 0, S_PTERABYTESPAWNER, 0}, + {"S_PTERABYTEWAYPOINT", 0, SPR_NULL, 0, 1, {A_PterabyteHover}, 0, 0, S_PTERABYTEWAYPOINT, 0}, + {"S_PTERABYTE_FLY1", 0, SPR_PTER, 0, 6, {NULL}, 0, 0, S_PTERABYTE_FLY2, 0}, + {"S_PTERABYTE_FLY2", 0, SPR_PTER, 1, 2, {NULL}, 0, 0, S_PTERABYTE_FLY3, 0}, + {"S_PTERABYTE_FLY3", 0, SPR_PTER, 2, 6, {NULL}, 0, 0, S_PTERABYTE_FLY4, 0}, + {"S_PTERABYTE_FLY4", 0, SPR_PTER, 3, 2, {NULL}, 0, 0, S_PTERABYTE_FLY1, 0}, + {"S_PTERABYTE_SWOOPDOWN", 0, SPR_PTER, 4, 1, {NULL}, 0, 0, S_PTERABYTE_SWOOPDOWN, 0}, + {"S_PTERABYTE_SWOOPUP", 0, SPR_PTER, 0, 1, {NULL}, 0, 0, S_PTERABYTE_SWOOPUP, 0}, // Dragonbomber - {SPR_DRAB, 0, -1, {A_DragonbomberSpawn}, 6, 0, S_NULL, 0}, // S_DRAGONBOMBER - {SPR_DRAB, FF_PAPERSPRITE|7, 1, {A_DragonWing}, 0, 0, S_DRAGONWING2, 0}, // S_DRAGONWING1 - {SPR_DRAB, FF_PAPERSPRITE|8, 1, {A_DragonWing}, 0, 0, S_DRAGONWING3, 0}, // S_DRAGONWING2 - {SPR_DRAB, FF_PAPERSPRITE|9, 1, {A_DragonWing}, 0, 0, S_DRAGONWING4, 0}, // S_DRAGONWING3 - {SPR_DRAB, FF_PAPERSPRITE|10, 1, {A_DragonWing}, 0, 0, S_DRAGONWING1, 0}, // S_DRAGONWING4 - {SPR_DRAB, 1, 1, {A_DragonSegment}, 0, 0, S_DRAGONTAIL_LOADED, 0}, // S_DRAGONTAIL_LOADED - {SPR_DRAB, 2, 1, {A_DragonSegment}, 0, 0, S_DRAGONTAIL_EMPTYLOOP, 0}, // S_DRAGONTAIL_EMPTY - {SPR_DRAB, 2, 0, {A_Repeat}, 3*TICRATE, S_DRAGONTAIL_EMPTY, S_DRAGONTAIL_RELOAD, 0}, // S_DRAGONTAIL_EMPTYLOOP - {SPR_DRAB, 1, 0, {A_PlayActiveSound}, 0, 0, S_DRAGONTAIL_LOADED, 0}, // S_DRAGONTAIL_RELOAD - {SPR_DRAB, 3, 1, {A_MinusCheck}, S_DRAGONMINE_LAND1, 0, S_DRAGONMINE, 0}, // S_DRAGONMINE - {SPR_DRAB, 4, 0, {A_PlayActiveSound}, 0, 0, S_DRAGONMINE_LAND2, 0}, // S_DRAGONMINE_LAND1 - {SPR_DRAB, 4, 2, {A_Thrust}, 0, 1, S_DRAGONMINE_SLOWFLASH1, 0}, // S_DRAGONMINE_LAND2 - {SPR_DRAB, 5, 11, {NULL}, 0, 0, S_DRAGONMINE_SLOWFLASH2, 0}, // S_DRAGONMINE_SLOWFLASH1 - {SPR_DRAB, FF_FULLBRIGHT|6, 1, {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_SLOWLOOP, 0}, // S_DRAGONMINE_SLOWFLASH2 - {SPR_DRAB, 5, 0, {A_Repeat}, 4, S_DRAGONMINE_SLOWFLASH1, S_DRAGONMINE_FASTFLASH1, 0}, // S_DRAGONMINE_SLOWLOOP - {SPR_DRAB, 5, 3, {NULL}, 0, 0, S_DRAGONMINE_FASTFLASH2, 0}, // S_DRAGONMINE_FASTFLASH1 - {SPR_DRAB, FF_FULLBRIGHT|6, 1, {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_FASTLOOP, 0}, // S_DRAGONMINE_FASTFLASH2 - {SPR_DRAB, 5, 0, {A_Repeat}, 5, S_DRAGONMINE_FASTFLASH1, S_DEATHSTATE, 0}, // S_DRAGONMINE_FASTLOOP + {"S_DRAGONBOMBER", 0, SPR_DRAB, 0, -1, {A_DragonbomberSpawn}, 6, 0, S_NULL, 0}, + {"S_DRAGONWING1", 0, SPR_DRAB, FF_PAPERSPRITE|7, 1, {A_DragonWing}, 0, 0, S_DRAGONWING2, 0}, + {"S_DRAGONWING2", 0, SPR_DRAB, FF_PAPERSPRITE|8, 1, {A_DragonWing}, 0, 0, S_DRAGONWING3, 0}, + {"S_DRAGONWING3", 0, SPR_DRAB, FF_PAPERSPRITE|9, 1, {A_DragonWing}, 0, 0, S_DRAGONWING4, 0}, + {"S_DRAGONWING4", 0, SPR_DRAB, FF_PAPERSPRITE|10, 1, {A_DragonWing}, 0, 0, S_DRAGONWING1, 0}, + {"S_DRAGONTAIL_LOADED", 0, SPR_DRAB, 1, 1, {A_DragonSegment}, 0, 0, S_DRAGONTAIL_LOADED, 0}, + {"S_DRAGONTAIL_EMPTY", 0, SPR_DRAB, 2, 1, {A_DragonSegment}, 0, 0, S_DRAGONTAIL_EMPTYLOOP, 0}, + {"S_DRAGONTAIL_EMPTYLOOP", 0, SPR_DRAB, 2, 0, {A_Repeat}, 3*TICRATE, S_DRAGONTAIL_EMPTY, S_DRAGONTAIL_RELOAD, 0}, + {"S_DRAGONTAIL_RELOAD", 0, SPR_DRAB, 1, 0, {A_PlayActiveSound}, 0, 0, S_DRAGONTAIL_LOADED, 0}, + {"S_DRAGONMINE", 0, SPR_DRAB, 3, 1, {A_MinusCheck}, S_DRAGONMINE_LAND1, 0, S_DRAGONMINE, 0}, + {"S_DRAGONMINE_LAND1", 0, SPR_DRAB, 4, 0, {A_PlayActiveSound}, 0, 0, S_DRAGONMINE_LAND2, 0}, + {"S_DRAGONMINE_LAND2", 0, SPR_DRAB, 4, 2, {A_Thrust}, 0, 1, S_DRAGONMINE_SLOWFLASH1, 0}, + {"S_DRAGONMINE_SLOWFLASH1", 0, SPR_DRAB, 5, 11, {NULL}, 0, 0, S_DRAGONMINE_SLOWFLASH2, 0}, + {"S_DRAGONMINE_SLOWFLASH2", 0, SPR_DRAB, FF_FULLBRIGHT|6, 1, {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_SLOWLOOP, 0}, + {"S_DRAGONMINE_SLOWLOOP", 0, SPR_DRAB, 5, 0, {A_Repeat}, 4, S_DRAGONMINE_SLOWFLASH1, S_DRAGONMINE_FASTFLASH1, 0}, + {"S_DRAGONMINE_FASTFLASH1", 0, SPR_DRAB, 5, 3, {NULL}, 0, 0, S_DRAGONMINE_FASTFLASH2, 0}, + {"S_DRAGONMINE_FASTFLASH2", 0, SPR_DRAB, FF_FULLBRIGHT|6, 1, {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_FASTLOOP, 0}, + {"S_DRAGONMINE_FASTLOOP", 0, SPR_DRAB, 5, 0, {A_Repeat}, 5, S_DRAGONMINE_FASTFLASH1, S_DEATHSTATE, 0}, // Boss Explosion - {SPR_BOM2, FF_FULLBRIGHT|FF_ANIMATE, (5*7), {NULL}, 6, 5, S_NULL, 0}, // S_BOSSEXPLODE + {"S_BOSSEXPLODE", 0, SPR_BOM2, FF_FULLBRIGHT|FF_ANIMATE, (5*7), {NULL}, 6, 5, S_NULL, 0}, // S3&K Boss Explosion - {SPR_BOM3, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION2, 0}, // S_SONIC3KBOSSEXPLOSION1 - {SPR_BOM3, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION3, 0}, // S_SONIC3KBOSSEXPLOSION2 - {SPR_BOM3, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION4, 0}, // S_SONIC3KBOSSEXPLOSION3 - {SPR_BOM3, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION5, 0}, // S_SONIC3KBOSSEXPLOSION4 - {SPR_BOM3, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION6, 0}, // S_SONIC3KBOSSEXPLOSION5 - {SPR_BOM3, FF_FULLBRIGHT|5, 4, {NULL}, 0, 0, S_NULL, 0}, // S_SONIC3KBOSSEXPLOSION6 + {"S_SONIC3KBOSSEXPLOSION1", 0, SPR_BOM3, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION2, 0}, + {"S_SONIC3KBOSSEXPLOSION2", 0, SPR_BOM3, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION3, 0}, + {"S_SONIC3KBOSSEXPLOSION3", 0, SPR_BOM3, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION4, 0}, + {"S_SONIC3KBOSSEXPLOSION4", 0, SPR_BOM3, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION5, 0}, + {"S_SONIC3KBOSSEXPLOSION5", 0, SPR_BOM3, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION6, 0}, + {"S_SONIC3KBOSSEXPLOSION6", 0, SPR_BOM3, FF_FULLBRIGHT|5, 4, {NULL}, 0, 0, S_NULL, 0}, - {SPR_JETF, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 2, 1, S_NULL, 0}, // S_JETFUME1 + {"S_JETFUME1", 0, SPR_JETF, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 2, 1, S_NULL, 0}, // Boss 1 - {SPR_EGGM, 0, 1, {A_Boss1Chase}, 0, 0, S_EGGMOBILE_STND, 0}, // S_EGGMOBILE_STND - {SPR_EGGM, FF_ANIMATE|17, 35, {A_FaceTarget}, 1, 2, S_EGGMOBILE_STND, 0}, // S_EGGMOBILE_ROFL - {SPR_EGGM, 1, 3, {A_FaceTarget}, 0, 0, S_EGGMOBILE_LATK2, 0}, // S_EGGMOBILE_LATK1 - {SPR_EGGM, 2, 15, {NULL}, 0, 0, S_EGGMOBILE_LATK3, 0}, // S_EGGMOBILE_LATK2 - {SPR_EGGM, 3, 2, {NULL}, 0, 0, S_EGGMOBILE_LATK4, 0}, // S_EGGMOBILE_LATK3 - {SPR_EGGM, 4, 2, {A_FaceTarget}, 0, 0, S_EGGMOBILE_LATK5, 0}, // S_EGGMOBILE_LATK4 - {SPR_EGGM, 6, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_LATK6, 0}, // S_EGGMOBILE_LATK5 - {SPR_EGGM, 5, 1, {A_Boss1Laser}, MT_LASER, 0, S_EGGMOBILE_LATK7, 0}, // S_EGGMOBILE_LATK6 - {SPR_EGGM, 6, 1, {A_Boss1Laser}, MT_LASER, (1<<16), S_EGGMOBILE_LATK8, 0}, // S_EGGMOBILE_LATK7 - {SPR_EGGM, 5, 0, {A_Repeat}, 45, S_EGGMOBILE_LATK6, S_EGGMOBILE_LATK9, 0}, // S_EGGMOBILE_LATK8 - {SPR_EGGM, 8, 2, {NULL}, 0, 0, S_EGGMOBILE_ROFL, 0}, // S_EGGMOBILE_LATK9 - {SPR_EGGM, 9, 3, {A_FaceTarget}, 0, 0, S_EGGMOBILE_RATK2, 0}, // S_EGGMOBILE_RATK1 - {SPR_EGGM, 10, 15, {NULL}, 0, 0, S_EGGMOBILE_RATK3, 0}, // S_EGGMOBILE_RATK2 - {SPR_EGGM, 11, 2, {NULL}, 0, 0, S_EGGMOBILE_RATK4, 0}, // S_EGGMOBILE_RATK3 - {SPR_EGGM, 12, 2, {A_FaceTarget}, 0, 0, S_EGGMOBILE_RATK5, 0}, // S_EGGMOBILE_RATK4 - {SPR_EGGM, 14, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_RATK6, 0}, // S_EGGMOBILE_RATK5 - {SPR_EGGM, 13, 1, {A_Boss1Laser}, MT_LASER, 1, S_EGGMOBILE_RATK7, 0}, // S_EGGMOBILE_RATK6 - {SPR_EGGM, 14, 1, {A_Boss1Laser}, MT_LASER, 1|(1<<16), S_EGGMOBILE_RATK8, 0}, // S_EGGMOBILE_RATK7 - {SPR_EGGM, 13, 0, {A_Repeat}, 45, S_EGGMOBILE_RATK6, S_EGGMOBILE_RATK9, 0}, // S_EGGMOBILE_RATK8 - {SPR_EGGM, 16, 2, {NULL}, 0, 0, S_EGGMOBILE_ROFL, 0}, // S_EGGMOBILE_RATK9 - {SPR_EGGM, 0, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_PANIC2, 0}, // S_EGGMOBILE_PANIC1 - {SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget}, 3, 4, S_EGGMOBILE_PANIC3, 0}, // S_EGGMOBILE_PANIC2 - {SPR_EGGM, 7, 1, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC4, 0}, // S_EGGMOBILE_PANIC3 - {SPR_EGGM, 6, 1, {A_Boss1Laser}, MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC5, 0}, // S_EGGMOBILE_PANIC4 - {SPR_EGGM, 6, 0, {A_Repeat}, 45, S_EGGMOBILE_PANIC3, S_EGGMOBILE_PANIC6, 0}, // S_EGGMOBILE_PANIC5 - {SPR_EGGM, 0, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_PANIC7, 0}, // S_EGGMOBILE_PANIC6 - {SPR_EGGM, FF_ANIMATE|9, 16, {A_FaceTarget}, 3, 4, S_EGGMOBILE_PANIC8, 0}, // S_EGGMOBILE_PANIC7 - {SPR_EGGM, 15, 1, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC9, 0}, // S_EGGMOBILE_PANIC8 - {SPR_EGGM, 14, 1, {A_Boss1Laser}, MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC10, 0}, // S_EGGMOBILE_PANIC9 - {SPR_EGGM, 14, 0, {A_Repeat}, 45, S_EGGMOBILE_PANIC8, S_EGGMOBILE_PANIC11, 0}, // S_EGGMOBILE_PANIC10 - {SPR_EGGM, 0, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_PANIC12, 0}, // S_EGGMOBILE_PANIC11 - {SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget}, 3, 4, S_EGGMOBILE_PANIC13, 0}, // S_EGGMOBILE_PANIC12 - {SPR_EGGM, 7, 1, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC14, 0}, // S_EGGMOBILE_PANIC13 - {SPR_EGGM, 6, 1, {A_Boss1Laser}, MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC15, 0}, // S_EGGMOBILE_PANIC14 - {SPR_EGGM, 6, 0, {A_Repeat}, 45, S_EGGMOBILE_PANIC13, S_EGGMOBILE_ROFL, 0}, // S_EGGMOBILE_PANIC15 - {SPR_EGGM, 19, 24, {A_Pain}, 0, 0, S_EGGMOBILE_PAIN2, 0}, // S_EGGMOBILE_PAIN - {SPR_EGGM, 19, 16, {A_SkullAttack}, 3, 1, S_EGGMOBILE_STND, 0}, // S_EGGMOBILE_PAIN2 - {SPR_EGGM, 20, 2, {A_Fall}, 17, 0, S_EGGMOBILE_DIE2, 0}, // S_EGGMOBILE_DIE1 - {SPR_EGGM, 20, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE3, 0}, // S_EGGMOBILE_DIE2 - {SPR_EGGM, 20, 0, {A_Repeat}, 17, S_EGGMOBILE_DIE2, S_EGGMOBILE_DIE4, 0}, // S_EGGMOBILE_DIE3 - {SPR_EGGM, 20, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, // S_EGGMOBILE_DIE4 - {SPR_EGGM, 21, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_FLEE2, 0}, // S_EGGMOBILE_FLEE1 - {SPR_EGGM, 22, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_FLEE1, 0}, // S_EGGMOBILE_FLEE2 - {SPR_UNID, 1, 1, {A_UnidusBall}, 2, 0, S_EGGMOBILE_BALL, 0}, // S_EGGMOBILE_BALL - {SPR_NULL, 0, 1, {A_FocusTarget}, 0, 0, S_EGGMOBILE_TARGET, 0}, // S_EGGMOBILE_TARGET - - {SPR_EGLZ, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSEGLZ1 - {SPR_EGLZ, 1, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSEGLZ2 + {"S_EGGMOBILE_STND", 0, SPR_EGGM, 0, 1, {A_Boss1Chase}, 0, 0, S_EGGMOBILE_STND, 0}, + {"S_EGGMOBILE_ROFL", 0, SPR_EGGM, FF_ANIMATE|17, 35, {A_FaceTarget}, 1, 2, S_EGGMOBILE_STND, 0}, + {"S_EGGMOBILE_LATK1", 0, SPR_EGGM, 1, 3, {A_FaceTarget}, 0, 0, S_EGGMOBILE_LATK2, 0}, + {"S_EGGMOBILE_LATK2", 0, SPR_EGGM, 2, 15, {NULL}, 0, 0, S_EGGMOBILE_LATK3, 0}, + {"S_EGGMOBILE_LATK3", 0, SPR_EGGM, 3, 2, {NULL}, 0, 0, S_EGGMOBILE_LATK4, 0}, + {"S_EGGMOBILE_LATK4", 0, SPR_EGGM, 4, 2, {A_FaceTarget}, 0, 0, S_EGGMOBILE_LATK5, 0}, + {"S_EGGMOBILE_LATK5", 0, SPR_EGGM, 6, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_LATK6, 0}, + {"S_EGGMOBILE_LATK6", 0, SPR_EGGM, 5, 1, {A_Boss1Laser}, MT_LASER, 0, S_EGGMOBILE_LATK7, 0}, + {"S_EGGMOBILE_LATK7", 0, SPR_EGGM, 6, 1, {A_Boss1Laser}, MT_LASER, (1<<16), S_EGGMOBILE_LATK8, 0}, + {"S_EGGMOBILE_LATK8", 0, SPR_EGGM, 5, 0, {A_Repeat}, 45, S_EGGMOBILE_LATK6, S_EGGMOBILE_LATK9, 0}, + {"S_EGGMOBILE_LATK9", 0, SPR_EGGM, 8, 2, {NULL}, 0, 0, S_EGGMOBILE_ROFL, 0}, + {"S_EGGMOBILE_RATK1", 0, SPR_EGGM, 9, 3, {A_FaceTarget}, 0, 0, S_EGGMOBILE_RATK2, 0}, + {"S_EGGMOBILE_RATK2", 0, SPR_EGGM, 10, 15, {NULL}, 0, 0, S_EGGMOBILE_RATK3, 0}, + {"S_EGGMOBILE_RATK3", 0, SPR_EGGM, 11, 2, {NULL}, 0, 0, S_EGGMOBILE_RATK4, 0}, + {"S_EGGMOBILE_RATK4", 0, SPR_EGGM, 12, 2, {A_FaceTarget}, 0, 0, S_EGGMOBILE_RATK5, 0}, + {"S_EGGMOBILE_RATK5", 0, SPR_EGGM, 14, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_RATK6, 0}, + {"S_EGGMOBILE_RATK6", 0, SPR_EGGM, 13, 1, {A_Boss1Laser}, MT_LASER, 1, S_EGGMOBILE_RATK7, 0}, + {"S_EGGMOBILE_RATK7", 0, SPR_EGGM, 14, 1, {A_Boss1Laser}, MT_LASER, 1|(1<<16), S_EGGMOBILE_RATK8, 0}, + {"S_EGGMOBILE_RATK8", 0, SPR_EGGM, 13, 0, {A_Repeat}, 45, S_EGGMOBILE_RATK6, S_EGGMOBILE_RATK9, 0}, + {"S_EGGMOBILE_RATK9", 0, SPR_EGGM, 16, 2, {NULL}, 0, 0, S_EGGMOBILE_ROFL, 0}, + {"S_EGGMOBILE_PANIC1", 0, SPR_EGGM, 0, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_PANIC2, 0}, + {"S_EGGMOBILE_PANIC2", 0, SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget}, 3, 4, S_EGGMOBILE_PANIC3, 0}, + {"S_EGGMOBILE_PANIC3", 0, SPR_EGGM, 7, 1, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC4, 0}, + {"S_EGGMOBILE_PANIC4", 0, SPR_EGGM, 6, 1, {A_Boss1Laser}, MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC5, 0}, + {"S_EGGMOBILE_PANIC5", 0, SPR_EGGM, 6, 0, {A_Repeat}, 45, S_EGGMOBILE_PANIC3, S_EGGMOBILE_PANIC6, 0}, + {"S_EGGMOBILE_PANIC6", 0, SPR_EGGM, 0, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_PANIC7, 0}, + {"S_EGGMOBILE_PANIC7", 0, SPR_EGGM, FF_ANIMATE|9, 16, {A_FaceTarget}, 3, 4, S_EGGMOBILE_PANIC8, 0}, + {"S_EGGMOBILE_PANIC8", 0, SPR_EGGM, 15, 1, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC9, 0}, + {"S_EGGMOBILE_PANIC9", 0, SPR_EGGM, 14, 1, {A_Boss1Laser}, MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC10, 0}, + {"S_EGGMOBILE_PANIC10", 0, SPR_EGGM, 14, 0, {A_Repeat}, 45, S_EGGMOBILE_PANIC8, S_EGGMOBILE_PANIC11, 0}, + {"S_EGGMOBILE_PANIC11", 0, SPR_EGGM, 0, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_PANIC12, 0}, + {"S_EGGMOBILE_PANIC12", 0, SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget}, 3, 4, S_EGGMOBILE_PANIC13, 0}, + {"S_EGGMOBILE_PANIC13", 0, SPR_EGGM, 7, 1, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC14, 0}, + {"S_EGGMOBILE_PANIC14", 0, SPR_EGGM, 6, 1, {A_Boss1Laser}, MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC15, 0}, + {"S_EGGMOBILE_PANIC15", 0, SPR_EGGM, 6, 0, {A_Repeat}, 45, S_EGGMOBILE_PANIC13, S_EGGMOBILE_ROFL, 0}, + {"S_EGGMOBILE_PAIN", 0, SPR_EGGM, 19, 24, {A_Pain}, 0, 0, S_EGGMOBILE_PAIN2, 0}, + {"S_EGGMOBILE_PAIN2", 0, SPR_EGGM, 19, 16, {A_SkullAttack}, 3, 1, S_EGGMOBILE_STND, 0}, + {"S_EGGMOBILE_DIE1", 0, SPR_EGGM, 20, 2, {A_Fall}, 17, 0, S_EGGMOBILE_DIE2, 0}, + {"S_EGGMOBILE_DIE2", 0, SPR_EGGM, 20, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE3, 0}, + {"S_EGGMOBILE_DIE3", 0, SPR_EGGM, 20, 0, {A_Repeat}, 17, S_EGGMOBILE_DIE2, S_EGGMOBILE_DIE4, 0}, + {"S_EGGMOBILE_DIE4", 0, SPR_EGGM, 20, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, + {"S_EGGMOBILE_FLEE1", 0, SPR_EGGM, 21, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_FLEE2, 0}, + {"S_EGGMOBILE_FLEE2", 0, SPR_EGGM, 22, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_FLEE1, 0}, + {"S_EGGMOBILE_BALL", 0, SPR_UNID, 1, 1, {A_UnidusBall}, 2, 0, S_EGGMOBILE_BALL, 0}, + {"S_EGGMOBILE_TARGET", 0, SPR_NULL, 0, 1, {A_FocusTarget}, 0, 0, S_EGGMOBILE_TARGET, 0}, + + {"S_BOSSEGLZ1", 0, SPR_EGLZ, 0, 35, {NULL}, 0, 0, S_NULL, 0}, + {"S_BOSSEGLZ2", 0, SPR_EGLZ, 1, 35, {NULL}, 0, 0, S_NULL, 0}, // Boss 2 - {SPR_EGGN, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGMOBILE2_STND - {SPR_EGGN, 1, 4, {NULL}, 0, 0, S_EGGMOBILE2_POGO2, 0}, // S_EGGMOBILE2_POGO1 - {SPR_EGGN, 0, 2, {A_Boss2PogoTarget}, 9*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO3, 0}, // S_EGGMOBILE2_POGO2 - {SPR_EGGN, 1, 2, {NULL}, 0, 0, S_EGGMOBILE2_POGO4, 0}, // S_EGGMOBILE2_POGO3 - {SPR_EGGN, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGMOBILE2_POGO4 - {SPR_EGGN, 1, 4, {NULL}, 0, 0, S_EGGMOBILE2_POGO6, 0}, // S_EGGMOBILE2_POGO5 - {SPR_EGGN, 0, 2, {A_Boss2PogoTarget}, 7*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO7, 0}, // S_EGGMOBILE2_POGO6 - {SPR_EGGN, 1, 2, {NULL}, 0, 0, S_EGGMOBILE2_POGO4, 0}, // S_EGGMOBILE2_POGO7 - {SPR_EGGN, 3, 24, {A_Boss2TakeDamage}, 24+TICRATE, 0, S_EGGMOBILE2_STND, 0}, // S_EGGMOBILE2_PAIN - {SPR_EGGN, 4, 24, {A_Boss2TakeDamage}, 24+TICRATE, 0, S_EGGMOBILE2_POGO4, 0}, // S_EGGMOBILE2_PAIN2 - {SPR_EGGN, 5, 2, {A_Fall}, 0, 0, S_EGGMOBILE2_DIE2, 0}, // S_EGGMOBILE2_DIE1 - {SPR_EGGN, 5, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE3, 0}, // S_EGGMOBILE2_DIE2 - {SPR_EGGN, 5, 0, {A_Repeat}, 17, S_EGGMOBILE2_DIE2, S_EGGMOBILE2_DIE4, 0}, // S_EGGMOBILE2_DIE3 - {SPR_EGGN, 5, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, // S_EGGMOBILE2_DIE4 - {SPR_EGGN, 6, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_FLEE2, 0}, // S_EGGMOBILE2_FLEE1 - {SPR_EGGN, 7, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_FLEE1, 0}, // S_EGGMOBILE2_FLEE2 - - {SPR_TANK, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSTANK1 - {SPR_TANK, 1, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSTANK2 - {SPR_TANK, 2, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSSPIGOT + {"S_EGGMOBILE2_STND", 0, SPR_EGGN, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EGGMOBILE2_POGO1", 0, SPR_EGGN, 1, 4, {NULL}, 0, 0, S_EGGMOBILE2_POGO2, 0}, + {"S_EGGMOBILE2_POGO2", 0, SPR_EGGN, 0, 2, {A_Boss2PogoTarget}, 9*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO3, 0}, + {"S_EGGMOBILE2_POGO3", 0, SPR_EGGN, 1, 2, {NULL}, 0, 0, S_EGGMOBILE2_POGO4, 0}, + {"S_EGGMOBILE2_POGO4", 0, SPR_EGGN, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EGGMOBILE2_POGO5", 0, SPR_EGGN, 1, 4, {NULL}, 0, 0, S_EGGMOBILE2_POGO6, 0}, + {"S_EGGMOBILE2_POGO6", 0, SPR_EGGN, 0, 2, {A_Boss2PogoTarget}, 7*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO7, 0}, + {"S_EGGMOBILE2_POGO7", 0, SPR_EGGN, 1, 2, {NULL}, 0, 0, S_EGGMOBILE2_POGO4, 0}, + {"S_EGGMOBILE2_PAIN", 0, SPR_EGGN, 3, 24, {A_Boss2TakeDamage}, 24+TICRATE, 0, S_EGGMOBILE2_STND, 0}, + {"S_EGGMOBILE2_PAIN2", 0, SPR_EGGN, 4, 24, {A_Boss2TakeDamage}, 24+TICRATE, 0, S_EGGMOBILE2_POGO4, 0}, + {"S_EGGMOBILE2_DIE1", 0, SPR_EGGN, 5, 2, {A_Fall}, 0, 0, S_EGGMOBILE2_DIE2, 0}, + {"S_EGGMOBILE2_DIE2", 0, SPR_EGGN, 5, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE3, 0}, + {"S_EGGMOBILE2_DIE3", 0, SPR_EGGN, 5, 0, {A_Repeat}, 17, S_EGGMOBILE2_DIE2, S_EGGMOBILE2_DIE4, 0}, + {"S_EGGMOBILE2_DIE4", 0, SPR_EGGN, 5, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, + {"S_EGGMOBILE2_FLEE1", 0, SPR_EGGN, 6, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_FLEE2, 0}, + {"S_EGGMOBILE2_FLEE2", 0, SPR_EGGN, 7, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_FLEE1, 0}, + + {"S_BOSSTANK1", 0, SPR_TANK, 0, 35, {NULL}, 0, 0, S_NULL, 0}, + {"S_BOSSTANK2", 0, SPR_TANK, 1, 35, {NULL}, 0, 0, S_NULL, 0}, + {"S_BOSSSPIGOT", 0, SPR_TANK, 2, 35, {NULL}, 0, 0, S_NULL, 0}, // Boss 2 Goop - {SPR_GOOP, 0, 2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP2, 0}, // S_GOOP1 - {SPR_GOOP, 1, 2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP1, 0}, // S_GOOP2 - {SPR_GOOP, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_GOOP3 - {SPR_GOOP, FF_ANIMATE|3, 11, {NULL}, 2, 6, S_NULL, 0}, // S_GOOPTRAIL + {"S_GOOP1", 0, SPR_GOOP, 0, 2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP2, 0}, + {"S_GOOP2", 0, SPR_GOOP, 1, 2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP1, 0}, + {"S_GOOP3", 0, SPR_GOOP, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_GOOPTRAIL", 0, SPR_GOOP, FF_ANIMATE|3, 11, {NULL}, 2, 6, S_NULL, 0}, // Boss 3 - {SPR_EGGO, 0, 1, {NULL}, 0, 0, S_EGGMOBILE3_STND, 0}, // S_EGGMOBILE3_STND - {SPR_EGGO, FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2, 0}, // S_EGGMOBILE3_SHOCK - {SPR_EGGO, 6|FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2, 0}, // S_EGGMOBILE3_ATK1 - {SPR_EGGO, 2, 2, {NULL}, 0, 0, S_EGGMOBILE3_ATK3A, 0}, // S_EGGMOBILE3_ATK2 - {SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 2, S_EGGMOBILE3_ATK3B, 0}, // S_EGGMOBILE3_ATK3A - {SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 4, S_EGGMOBILE3_ATK3C, 0}, // S_EGGMOBILE3_ATK3B - {SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 3, S_EGGMOBILE3_ATK3D, 0}, // S_EGGMOBILE3_ATK3C - {SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 5, S_EGGMOBILE3_ATK4, 0}, // S_EGGMOBILE3_ATK3D - {SPR_EGGO, 4, 2, {NULL}, 0, 0, S_EGGMOBILE3_ATK5, 0}, // S_EGGMOBILE3_ATK4 - {SPR_EGGO, 5, 2, {NULL}, 0, 0, S_EGGMOBILE3_ROFL, 0}, // S_EGGMOBILE3_ATK5 - {SPR_EGGO, 6|FF_ANIMATE, 60, {NULL}, 1, 2, S_EGGMOBILE3_STND, 0}, // S_EGGMOBILE3_ROFL - {SPR_EGGO, 8, 1, {A_Boss3TakeDamage}, 0, 0, S_EGGMOBILE3_PAIN2, 0}, // S_EGGMOBILE3_PAIN - {SPR_EGGO, 8, 23, {A_Pain}, 0, 0, S_EGGMOBILE3_STND, 0}, // S_EGGMOBILE3_PAIN2 - {SPR_EGGO, 9, 2, {A_Fall}, 0, 0, S_EGGMOBILE3_DIE2, 0}, // S_EGGMOBILE3_DIE1 - {SPR_EGGO, 9, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE3, 0}, // S_EGGMOBILE3_DIE2 - {SPR_EGGO, 9, 0, {A_Repeat}, 17, S_EGGMOBILE3_DIE2, S_EGGMOBILE3_DIE4, 0}, // S_EGGMOBILE3_DIE3 - {SPR_EGGO, 9, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, // S_EGGMOBILE3_DIE4 - {SPR_EGGO, 10, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_FLEE2, 0}, // S_EGGMOBILE3_FLEE1 - {SPR_EGGO, 11, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_FLEE1, 0}, // S_EGGMOBILE3_FLEE2 + {"S_EGGMOBILE3_STND", 0, SPR_EGGO, 0, 1, {NULL}, 0, 0, S_EGGMOBILE3_STND, 0}, + {"S_EGGMOBILE3_SHOCK", 0, SPR_EGGO, FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2, 0}, + {"S_EGGMOBILE3_ATK1", 0, SPR_EGGO, 6|FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2, 0}, + {"S_EGGMOBILE3_ATK2", 0, SPR_EGGO, 2, 2, {NULL}, 0, 0, S_EGGMOBILE3_ATK3A, 0}, + {"S_EGGMOBILE3_ATK3A", 0, SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 2, S_EGGMOBILE3_ATK3B, 0}, + {"S_EGGMOBILE3_ATK3B", 0, SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 4, S_EGGMOBILE3_ATK3C, 0}, + {"S_EGGMOBILE3_ATK3C", 0, SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 3, S_EGGMOBILE3_ATK3D, 0}, + {"S_EGGMOBILE3_ATK3D", 0, SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 5, S_EGGMOBILE3_ATK4, 0}, + {"S_EGGMOBILE3_ATK4", 0, SPR_EGGO, 4, 2, {NULL}, 0, 0, S_EGGMOBILE3_ATK5, 0}, + {"S_EGGMOBILE3_ATK5", 0, SPR_EGGO, 5, 2, {NULL}, 0, 0, S_EGGMOBILE3_ROFL, 0}, + {"S_EGGMOBILE3_ROFL", 0, SPR_EGGO, 6|FF_ANIMATE, 60, {NULL}, 1, 2, S_EGGMOBILE3_STND, 0}, + {"S_EGGMOBILE3_PAIN", 0, SPR_EGGO, 8, 1, {A_Boss3TakeDamage}, 0, 0, S_EGGMOBILE3_PAIN2, 0}, + {"S_EGGMOBILE3_PAIN2", 0, SPR_EGGO, 8, 23, {A_Pain}, 0, 0, S_EGGMOBILE3_STND, 0}, + {"S_EGGMOBILE3_DIE1", 0, SPR_EGGO, 9, 2, {A_Fall}, 0, 0, S_EGGMOBILE3_DIE2, 0}, + {"S_EGGMOBILE3_DIE2", 0, SPR_EGGO, 9, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE3, 0}, + {"S_EGGMOBILE3_DIE3", 0, SPR_EGGO, 9, 0, {A_Repeat}, 17, S_EGGMOBILE3_DIE2, S_EGGMOBILE3_DIE4, 0}, + {"S_EGGMOBILE3_DIE4", 0, SPR_EGGO, 9, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, + {"S_EGGMOBILE3_FLEE1", 0, SPR_EGGO, 10, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_FLEE2, 0}, + {"S_EGGMOBILE3_FLEE2", 0, SPR_EGGO, 11, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_FLEE1, 0}, // Boss 3 Pinch - {SPR_FAKE, 0, 1, {NULL}, 0, 0, S_FAKEMOBILE, 0}, // S_FAKEMOBILE_INIT - {SPR_FAKE, 0, 1, {A_Boss3Path}, 0, 0, S_FAKEMOBILE, 0}, // S_FAKEMOBILE - {SPR_FAKE, 0, 22, {NULL}, 0, 0, S_FAKEMOBILE_ATK2, 0}, // S_FAKEMOBILE_ATK1 - {SPR_FAKE, 0, 2, {NULL}, 0, 0, S_FAKEMOBILE_ATK3A, 0}, // S_FAKEMOBILE_ATK2 - {SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 2, S_FAKEMOBILE_ATK3B, 0}, // S_FAKEMOBILE_ATK3A - {SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 4, S_FAKEMOBILE_ATK3C, 0}, // S_FAKEMOBILE_ATK3B - {SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 3, S_FAKEMOBILE_ATK3D, 0}, // S_FAKEMOBILE_ATK3C - {SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 5, S_FAKEMOBILE, 0}, // S_FAKEMOBILE_ATK3D - {SPR_FAKE, 1, 1, {NULL}, 0, 0, S_FAKEMOBILE_DIE2, 0}, // S_FAKEMOBILE_DIE1 - {SPR_NULL, 0, 1, {NULL}, 0, 0, S_FAKEMOBILE_DIE1, 0}, // S_FAKEMOBILE_DIE2 - - {SPR_SEBH, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSSEBH1 - {SPR_SEBH, 1, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BOSSSEBH2 + {"S_FAKEMOBILE_INIT", 0, SPR_FAKE, 0, 1, {NULL}, 0, 0, S_FAKEMOBILE, 0}, + {"S_FAKEMOBILE", 0, SPR_FAKE, 0, 1, {A_Boss3Path}, 0, 0, S_FAKEMOBILE, 0}, + {"S_FAKEMOBILE_ATK1", 0, SPR_FAKE, 0, 22, {NULL}, 0, 0, S_FAKEMOBILE_ATK2, 0}, + {"S_FAKEMOBILE_ATK2", 0, SPR_FAKE, 0, 2, {NULL}, 0, 0, S_FAKEMOBILE_ATK3A, 0}, + {"S_FAKEMOBILE_ATK3A", 0, SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 2, S_FAKEMOBILE_ATK3B, 0}, + {"S_FAKEMOBILE_ATK3B", 0, SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 4, S_FAKEMOBILE_ATK3C, 0}, + {"S_FAKEMOBILE_ATK3C", 0, SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 3, S_FAKEMOBILE_ATK3D, 0}, + {"S_FAKEMOBILE_ATK3D", 0, SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 5, S_FAKEMOBILE, 0}, + {"S_FAKEMOBILE_DIE1", 0, SPR_FAKE, 1, 1, {NULL}, 0, 0, S_FAKEMOBILE_DIE2, 0}, + {"S_FAKEMOBILE_DIE2", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_FAKEMOBILE_DIE1, 0}, + + {"S_BOSSSEBH1", 0, SPR_SEBH, 0, 35, {NULL}, 0, 0, S_NULL, 0}, + {"S_BOSSSEBH2", 0, SPR_SEBH, 1, 35, {NULL}, 0, 0, S_NULL, 0}, // Boss 3 Shockwave - {SPR_SHCK, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE2, 0}, // S_SHOCKWAVE1 - {SPR_SHCK, 3|FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE1, 0}, // S_SHOCKWAVE2 + {"S_SHOCKWAVE1", 0, SPR_SHCK, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE2, 0}, + {"S_SHOCKWAVE2", 0, SPR_SHCK, 3|FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE1, 0}, // Boss 4 - {SPR_EGGP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGMOBILE4_STND - {SPR_EGGP, 1, 3, {NULL}, 0, 0, S_EGGMOBILE4_LATK2, 0}, // S_EGGMOBILE4_LATK1 - {SPR_EGGP, 2, 15, {NULL}, 0, 0, S_EGGMOBILE4_LATK3, 0}, // S_EGGMOBILE4_LATK2 - {SPR_EGGP, 3, 2, {NULL}, 0, 0, S_EGGMOBILE4_LATK4, 0}, // S_EGGMOBILE4_LATK3 - {SPR_EGGP, 4, 2, {NULL}, 0, 0, S_EGGMOBILE4_LATK5, 0}, // S_EGGMOBILE4_LATK4 - {SPR_EGGP, 5, 50, {A_Boss4Reverse}, sfx_mswing, 0, S_EGGMOBILE4_LATK6, 0}, // S_EGGMOBILE4_LATK5 - {SPR_EGGP, 6, 2, {NULL}, 0, 0, S_EGGMOBILE4_STND, 0}, // S_EGGMOBILE4_LATK6 - {SPR_EGGP, 7, 3, {NULL}, 0, 0, S_EGGMOBILE4_RATK2, 0}, // S_EGGMOBILE4_RATK1 - {SPR_EGGP, 8, 15, {NULL}, 0, 0, S_EGGMOBILE4_RATK3, 0}, // S_EGGMOBILE4_RATK2 - {SPR_EGGP, 9, 2, {NULL}, 0, 0, S_EGGMOBILE4_RATK4, 0}, // S_EGGMOBILE4_RATK3 - {SPR_EGGP,10, 2, {NULL}, 0, 0, S_EGGMOBILE4_RATK5, 0}, // S_EGGMOBILE4_RATK4 - {SPR_EGGP,11,150, {A_Boss4SpeedUp}, sfx_mswing, 0, S_EGGMOBILE4_RATK6, 0}, // S_EGGMOBILE4_RATK5 - {SPR_EGGP,12, 2, {NULL}, 0, 0, S_EGGMOBILE4_STND, 0}, // S_EGGMOBILE4_RATK6 - {SPR_EGGP,13, 20, {A_Boss4Raise}, sfx_doord1, 0, S_EGGMOBILE4_RAISE2, 0}, // S_EGGMOBILE4_RAISE1 - {SPR_EGGP,15|FF_ANIMATE, -1, {NULL}, 1, 10, S_NULL, 0}, // S_EGGMOBILE4_RAISE2 - {SPR_EGGP,13, 0, {A_Boss4Reverse}, sfx_alarm, sfx_s3k60, S_EGGMOBILE4_PAIN2, 0}, // S_EGGMOBILE4_PAIN1 - {SPR_EGGP,13, 24, {A_Pain}, 0, 0, S_EGGMOBILE4_STND, 0}, // S_EGGMOBILE4_PAIN2 - {SPR_EGGP,14, 2, {A_Fall}, 0, 0, S_EGGMOBILE4_DIE2, 0}, // S_EGGMOBILE4_DIE1 - {SPR_EGGP,14, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE3, 0}, // S_EGGMOBILE4_DIE2 - {SPR_EGGP,14, 0, {A_Repeat}, 17, S_EGGMOBILE4_DIE2, S_EGGMOBILE4_DIE4, 0}, // S_EGGMOBILE4_DIE3 - {SPR_EGGP,14, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, // S_EGGMOBILE4_DIE4 - {SPR_EGGP,15, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_FLEE2, 0}, // S_EGGMOBILE4_FLEE1 - {SPR_EGGP,16, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_FLEE1, 0}, // S_EGGMOBILE4_FLEE2 - {SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGMOBILE4_MACE - {SPR_BMCE, 0, 2, {A_BossScream}, 1, 0, S_EGGMOBILE4_MACE_DIE2, 0}, // S_EGGMOBILE4_MACE_DIE1 - {SPR_NULL, 0, 2, {A_BossScream}, 1, 0, S_EGGMOBILE4_MACE_DIE3, 0}, // S_EGGMOBILE4_MACE_DIE2 - {SPR_NULL, 0, 0, {A_Repeat}, 7, S_EGGMOBILE4_MACE_DIE1, S_SONIC3KBOSSEXPLOSION1, 0}, // S_EGGMOBILE4_MACE_DIE3 + {"S_EGGMOBILE4_STND", 0, SPR_EGGP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EGGMOBILE4_LATK1", 0, SPR_EGGP, 1, 3, {NULL}, 0, 0, S_EGGMOBILE4_LATK2, 0}, + {"S_EGGMOBILE4_LATK2", 0, SPR_EGGP, 2, 15, {NULL}, 0, 0, S_EGGMOBILE4_LATK3, 0}, + {"S_EGGMOBILE4_LATK3", 0, SPR_EGGP, 3, 2, {NULL}, 0, 0, S_EGGMOBILE4_LATK4, 0}, + {"S_EGGMOBILE4_LATK4", 0, SPR_EGGP, 4, 2, {NULL}, 0, 0, S_EGGMOBILE4_LATK5, 0}, + {"S_EGGMOBILE4_LATK5", 0, SPR_EGGP, 5, 50, {A_Boss4Reverse}, sfx_mswing, 0, S_EGGMOBILE4_LATK6, 0}, + {"S_EGGMOBILE4_LATK6", 0, SPR_EGGP, 6, 2, {NULL}, 0, 0, S_EGGMOBILE4_STND, 0}, + {"S_EGGMOBILE4_RATK1", 0, SPR_EGGP, 7, 3, {NULL}, 0, 0, S_EGGMOBILE4_RATK2, 0}, + {"S_EGGMOBILE4_RATK2", 0, SPR_EGGP, 8, 15, {NULL}, 0, 0, S_EGGMOBILE4_RATK3, 0}, + {"S_EGGMOBILE4_RATK3", 0, SPR_EGGP, 9, 2, {NULL}, 0, 0, S_EGGMOBILE4_RATK4, 0}, + {"S_EGGMOBILE4_RATK4", 0, SPR_EGGP,10, 2, {NULL}, 0, 0, S_EGGMOBILE4_RATK5, 0}, + {"S_EGGMOBILE4_RATK5", 0, SPR_EGGP,11,150, {A_Boss4SpeedUp}, sfx_mswing, 0, S_EGGMOBILE4_RATK6, 0}, + {"S_EGGMOBILE4_RATK6", 0, SPR_EGGP,12, 2, {NULL}, 0, 0, S_EGGMOBILE4_STND, 0}, + {"S_EGGMOBILE4_RAISE1", 0, SPR_EGGP,13, 20, {A_Boss4Raise}, sfx_doord1, 0, S_EGGMOBILE4_RAISE2, 0}, + {"S_EGGMOBILE4_RAISE2", 0, SPR_EGGP,15|FF_ANIMATE, -1, {NULL}, 1, 10, S_NULL, 0}, + {"S_EGGMOBILE4_PAIN1", 0, SPR_EGGP,13, 0, {A_Boss4Reverse}, sfx_alarm, sfx_s3k60, S_EGGMOBILE4_PAIN2, 0}, + {"S_EGGMOBILE4_PAIN2", 0, SPR_EGGP,13, 24, {A_Pain}, 0, 0, S_EGGMOBILE4_STND, 0}, + {"S_EGGMOBILE4_DIE1", 0, SPR_EGGP,14, 2, {A_Fall}, 0, 0, S_EGGMOBILE4_DIE2, 0}, + {"S_EGGMOBILE4_DIE2", 0, SPR_EGGP,14, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE3, 0}, + {"S_EGGMOBILE4_DIE3", 0, SPR_EGGP,14, 0, {A_Repeat}, 17, S_EGGMOBILE4_DIE2, S_EGGMOBILE4_DIE4, 0}, + {"S_EGGMOBILE4_DIE4", 0, SPR_EGGP,14, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, + {"S_EGGMOBILE4_FLEE1", 0, SPR_EGGP,15, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_FLEE2, 0}, + {"S_EGGMOBILE4_FLEE2", 0, SPR_EGGP,16, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_FLEE1, 0}, + {"S_EGGMOBILE4_MACE", 0, SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EGGMOBILE4_MACE_DIE1", 0, SPR_BMCE, 0, 2, {A_BossScream}, 1, 0, S_EGGMOBILE4_MACE_DIE2, 0}, + {"S_EGGMOBILE4_MACE_DIE2", 0, SPR_NULL, 0, 2, {A_BossScream}, 1, 0, S_EGGMOBILE4_MACE_DIE3, 0}, + {"S_EGGMOBILE4_MACE_DIE3", 0, SPR_NULL, 0, 0, {A_Repeat}, 7, S_EGGMOBILE4_MACE_DIE1, S_SONIC3KBOSSEXPLOSION1, 0}, // Boss 4 jet flame - {SPR_EFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 1, 1, S_NULL, 0}, // S_JETFLAME + {"S_JETFLAME", 0, SPR_EFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 1, 1, S_NULL, 0}, // Boss 4 Spectator Eggrobo - {SPR_EGR1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGROBO1_STND - {SPR_EGR1, 5, 2, {NULL}, 0, 0, S_EGGROBO1_BSLAP2, 0}, // S_EGGROBO1_BSLAP1 - {SPR_EGR1, FF_ANIMATE|6, 35, {NULL}, 1, 2, S_EGGROBO1_STND, 0}, // S_EGGROBO1_BSLAP2 - {SPR_EGR1, FF_ANIMATE|3, -1, {NULL}, 1, 2, S_NULL, 0}, // S_EGGROBO1_PISSED + {"S_EGGROBO1_STND", 0, SPR_EGR1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EGGROBO1_BSLAP1", 0, SPR_EGR1, 5, 2, {NULL}, 0, 0, S_EGGROBO1_BSLAP2, 0}, + {"S_EGGROBO1_BSLAP2", 0, SPR_EGR1, FF_ANIMATE|6, 35, {NULL}, 1, 2, S_EGGROBO1_STND, 0}, + {"S_EGGROBO1_PISSED", 0, SPR_EGR1, FF_ANIMATE|3, -1, {NULL}, 1, 2, S_NULL, 0}, // Boss 4 Spectator Eggrobo jet flame - {SPR_EFIR, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGROBOJET + {"S_EGGROBOJET", 0, SPR_EFIR, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL, 0}, // Boss 5 - {SPR_NULL, 0, 2, {A_CheckFlags2}, MF2_AMBUSH, S_FANG_IDLE0, S_FANG_INTRO0, 0}, // S_FANG_SETUP - - {SPR_NULL, 0, 2, {NULL}, 0, 0, S_FANG_INTRO1, 0}, // S_FANG_INTRO0 - {SPR_NULL, 0, 2, {A_Boss5MakeJunk}, -S_FANG_CLONE1, 0, S_FANG_INTRO2, 0}, // S_FANG_INTRO1 - {SPR_NULL, 0, 0, {A_Repeat}, 25, S_FANG_INTRO1, S_FANG_INTRO3, 0}, // S_FANG_INTRO2 - {SPR_NULL, 0, 0, {A_Boss5MakeJunk}, 0, 1, S_FANG_INTRO4, 0}, // S_FANG_INTRO3 - {SPR_FANG, 30, 1, {A_ZThrust}, 9, (1<<16)|1, S_FANG_INTRO5, 0}, // S_FANG_INTRO4 - {SPR_FANG, 27, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO6, 0}, // S_FANG_INTRO5 - {SPR_FANG, 28, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO7, 0}, // S_FANG_INTRO6 - {SPR_FANG, 29, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO8, 0}, // S_FANG_INTRO7 - {SPR_FANG, 30, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO5, 0}, // S_FANG_INTRO8 - {SPR_FANG, 23|FF_ANIMATE, 50, {NULL}, 1, 4, S_FANG_INTRO10, 0}, // S_FANG_INTRO9 - {SPR_FANG, 25, 5, {NULL}, 0, 0, S_FANG_INTRO11, 0}, // S_FANG_INTRO10 - {SPR_FANG, 26, 2, {A_Boss5MakeJunk}, S_BROKENROBOTD, 2, S_FANG_INTRO12, 0}, // S_FANG_INTRO11 - {SPR_FANG, 31|FF_ANIMATE, 50, {NULL}, 3, 4, S_FANG_IDLE1, 0}, // S_FANG_INTRO12 - - {SPR_FANG, 11, 2, {A_Boss5MakeJunk}, 0, -1, S_FANG_CLONE2, 0}, // S_FANG_CLONE1 - {SPR_FANG, 11, 0, {A_Repeat}, 49, S_FANG_CLONE1, S_FANG_CLONE3, 0}, // S_FANG_INTRO2 - {SPR_FANG, 12, 0, {A_SetObjectFlags}, MF_NOGRAVITY, 1, S_FANG_CLONE4, 0}, // S_FANG_CLONE3 - {SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_IDLE0, 0, S_FANG_CLONE4, 0}, // S_FANG_CLONE4 - - {SPR_FANG, 0, 0, {A_SetObjectFlags}, MF_NOCLIPTHING, 1, S_FANG_IDLE1, 0}, // S_FANG_IDLE0 - {SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE2, 0}, // S_FANG_IDLE1 - {SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE3, 0}, // S_FANG_IDLE2 - {SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE4, 0}, // S_FANG_IDLE3 - {SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE5, 0}, // S_FANG_IDLE4 - {SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE6, 0}, // S_FANG_IDLE5 - {SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE7, 0}, // S_FANG_IDLE6 - {SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE8, 0}, // S_FANG_IDLE7 - {SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE1, 0}, // S_FANG_IDLE8 - - {SPR_FANG, 14, 0, {A_DoNPCPain}, FRACUNIT, 0, S_FANG_PAIN2, 0}, // S_FANG_PAIN1 - {SPR_FANG, 14, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART1, S_FANG_PINCHPATHINGSTART1, S_FANG_PAIN2, 0}, // S_FANG_PAIN2 - - {SPR_FANG, 8, 0, {A_Boss5ExtraRepeat}, 5, 4, S_FANG_PATHINGSTART2, 0}, // S_FANG_PATHINGSTART1 - {SPR_FANG, 8, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHING, 0}, // S_FANG_PATHINGSTART2 - {SPR_FANG, 8, 0, {A_Boss5FindWaypoint}, 0, 0, S_FANG_BOUNCE1, 0}, // S_FANG_PATHING - - {SPR_FANG, 8, 2, {A_Thrust}, 0, 1, S_FANG_BOUNCE2, 0}, // S_FANG_BOUNCE1 - {SPR_FANG, 9, 2, {NULL}, 0, 0, S_FANG_BOUNCE3, 0}, // S_FANG_BOUNCE2 - {SPR_FANG, 10, 1, {A_Boss5Jump}, 0, 0, S_FANG_BOUNCE4, 0}, // S_FANG_BOUNCE3 - {SPR_FANG, 10, 1, {A_Boss5CheckFalling}, S_FANG_CHECKPATH1, S_FANG_FALL1, S_FANG_BOUNCE4, 0}, // S_FANG_BOUNCE4 - - {SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL2, 0}, // S_FANG_FALL1 - {SPR_FANG, 13, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL1, 0}, // S_FANG_FALL2 - - {SPR_FANG, 8, 0, {A_Boss5Calm}, 0, 0, S_FANG_CHECKPATH2, 0}, // S_FANG_CHECKPATH1 - {SPR_FANG, 8, 0, {A_Repeat}, 0, S_FANG_PATHINGCONT1, S_FANG_SKID1, 0}, // S_FANG_CHECKPATH2 - - {SPR_FANG, 9, 0, {A_Boss5PinchShot}, MT_FBOMB, -16, S_FANG_PATHINGCONT2, 0}, // S_FANG_PATHINGCONT1 - {SPR_FANG, 9, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHINGCONT3, 0}, // S_FANG_PATHINGCONT2 - {SPR_FANG, 9, 2, {A_Thrust}, 0, 1, S_FANG_PATHING, 0}, // S_FANG_PATHINGCONT3 - - {SPR_FANG, 4, 0, {A_PlayAttackSound}, 0, 0, S_FANG_SKID2, 0}, // S_FANG_SKID1 - {SPR_FANG, 4, 1, {A_DoNPCSkid}, S_FANG_SKID3, 0, S_FANG_SKID2, 0}, // S_FANG_SKID2 - {SPR_FANG, 4, 10, {NULL}, 0, 0, S_FANG_CHOOSEATTACK, 0}, // S_FANG_SKID3 - - {SPR_FANG, 0, 0, {A_RandomState}, S_FANG_LOBSHOT0, S_FANG_FIRESTART1, S_NULL, 0}, // S_FANG_CHOOSEATTACK - - {SPR_FANG, 5, 0, {A_PrepareRepeat}, 3, 0, S_FANG_FIRESTART2, 0}, // S_FANG_FIRESTART1 // Reset loop - {SPR_FANG, 5, 18, {A_LookForBetter}, 1, 0, S_FANG_FIRE1, 0}, // S_FANG_FIRESTART2 - {SPR_FANG, 5, 5, {A_FireShot}, MT_CORK, -16, S_FANG_FIRE2, 0}, // S_FANG_FIRE1 // Start of loop - {SPR_FANG, 6, 5, {NULL}, 0, 0, S_FANG_FIRE3, 0}, // S_FANG_FIRE2 - {SPR_FANG, 7, 5, {NULL}, 0, 0, S_FANG_FIRE4, 0}, // S_FANG_FIRE3 - {SPR_FANG, 5, 5, {NULL}, 2, 0, S_FANG_FIREREPEAT, 0}, // S_FANG_FIRE4 - {SPR_FANG, 5, 0, {A_Repeat}, 3, S_FANG_FIRE1, S_FANG_WAIT1, 0}, // S_FANG_FIREREPEAT // End of loop - - {SPR_FANG, 18, 16, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT1, 0}, // S_FANG_LOBSHOT0 - {SPR_FANG, 19, 2, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT2, 0}, // S_FANG_LOBSHOT1 - {SPR_FANG, 20, 18, {A_BrakLobShot}, MT_FBOMB, 32+(1<<16), S_FANG_WAIT1, 0}, // S_FANG_LOBSHOT2 - - {SPR_FANG, FF_ANIMATE|15, 70, {NULL}, 1, 5, S_FANG_WAIT2, 0}, // S_FANG_WAIT1 - {SPR_FANG, 0, 35, {A_Look}, 1, 0, S_FANG_IDLE1, 0}, // S_FANG_WAIT2 - - {SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART2, S_FANG_PINCHPATHINGSTART1, S_FANG_WALLHIT, 0}, // S_FANG_WALLHIT - - {SPR_FANG, 8, 0, {A_PrepareRepeat}, 1, 0, S_FANG_PINCHPATHINGSTART2, 0}, // S_FANG_PINCHPATHINGSTART1 - {SPR_FANG, 8, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PINCHPATHING, 0}, // S_FANG_PINCHPATHINGSTART2 - {SPR_FANG, 8, 0, {A_Boss5FindWaypoint}, 1, 0, S_FANG_PINCHBOUNCE0, 0}, // S_FANG_PINCHPATHING - {SPR_FANG, 8, 0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 2, S_FANG_PINCHBOUNCE1, 0}, // S_FANG_PINCHBOUNCE0 - {SPR_FANG, 8, 2, {A_Thrust}, 0, 1, S_FANG_PINCHBOUNCE2, 0}, // S_FANG_PINCHBOUNCE1 - {SPR_FANG, 9, 2, {NULL}, 0, 0, S_FANG_PINCHBOUNCE3, 0}, // S_FANG_PINCHBOUNCE2 - {SPR_FANG, 10, 2, {A_Boss5Jump}, 0, 0, S_FANG_PINCHBOUNCE4, 0}, // S_FANG_PINCHBOUNCE3 - {SPR_FANG, 10, 1, {A_Boss5CheckFalling}, S_FANG_PINCHSKID1, S_FANG_PINCHFALL0, S_FANG_PINCHBOUNCE4, 0}, // S_FANG_PINCHBOUNCE4 - {SPR_FANG, 12, 0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 1, S_FANG_PINCHFALL1, 0}, // S_FANG_PINCHFALL0 - {SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL2, 0}, // S_FANG_PINCHFALL1 - {SPR_FANG, 13, 1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL1, 0}, // S_FANG_PINCHFALL2 - {SPR_FANG, 4, 0, {A_PlayAttackSound}, 0, 0, S_FANG_PINCHSKID2, 0}, // S_FANG_PINCHSKID1 - {SPR_FANG, 4, 1, {A_DoNPCSkid}, S_FANG_PINCHLOBSHOT0, 0, S_FANG_PINCHSKID2, 0}, // S_FANG_PINCHSKID2 - {SPR_FANG, 18, 16, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT1, 0}, // S_FANG_PINCHLOBSHOT0 - {SPR_FANG, 19, 2, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT2, 0}, // S_FANG_PINCHLOBSHOT1 - {SPR_FANG, 20, 30, {A_Boss5MakeItRain}, MT_FBOMB, -16, S_FANG_PINCHLOBSHOT3, 0}, // S_FANG_PINCHLOBSHOT2 - {SPR_FANG, 20, 18, {A_LinedefExecuteFromArg}, 4, 0, S_FANG_PINCHLOBSHOT4, 0}, // S_FANG_PINCHLOBSHOT3 - {SPR_FANG, 0, 0, {A_Boss5Calm}, 0, 0, S_FANG_PATHINGSTART1, 0}, // S_FANG_PINCHLOBSHOT4 - - {SPR_FANG, 21, 0, {A_DoNPCPain}, 0, 0, S_FANG_DIE2, 0}, // S_FANG_DIE1 - {SPR_FANG, 21, 1, {A_Boss5CheckOnGround}, S_FANG_DIE3, 0, S_FANG_DIE2, 0}, // S_FANG_DIE2 - - {SPR_FANG, 22, 0, {A_Scream}, 0, 0, S_FANG_DIE4, 0}, // S_FANG_DIE3 - {SPR_FANG, 22, -1, {A_SetFuse}, 70, 0, S_FANG_DIE5, 0}, // S_FANG_DIE4 - - {SPR_FANG, 11, 0, {A_PlaySound}, sfx_jump, 0, S_FANG_DIE6, 0}, // S_FANG_DIE5 - {SPR_FANG, 11, 1, {A_ZThrust}, 6, (1<<16)|1, S_FANG_DIE7, 0}, // S_FANG_DIE6 - {SPR_FANG, 11, 1, {A_Boss5CheckFalling}, S_FANG_FLEEPATHING1, S_FANG_DIE8, S_FANG_DIE7, 0}, // S_FANG_DIE7 - {SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_FLEEPATHING1, 0, S_FANG_DIE8, 0}, // S_FANG_DIE8 - - {SPR_FANG, 9, 0, {A_PlayActiveSound}, 0, 0, S_FANG_FLEEPATHING2, 0}, // S_FANG_FLEEPATHING1 - {SPR_FANG, 8, 2, {A_Boss5FindWaypoint}, 2, 0, S_FANG_FLEEBOUNCE1, 0}, // S_FANG_FLEEPATHING2 - {SPR_FANG, 9, 2, {NULL}, 0, 0, S_FANG_FLEEBOUNCE2, 0}, // S_FANG_FLEEBOUNCE1 - {SPR_FANG, 10, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, // S_FANG_FLEEBOUNCE2 - - {SPR_FANG, 17, 7*TICRATE, {NULL}, 0, 0, S_NULL, 0}, // S_FANG_KO - - {SPR_NULL, 0, -1, {A_RandomStateRange}, S_BROKENROBOTA, S_BROKENROBOTF, S_NULL, 0}, // S_BROKENROBOTRANDOM - {SPR_BRKN, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTA - {SPR_BRKN, 4|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTB - {SPR_BRKN, 8|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTC - {SPR_BRKN, 12|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTD - {SPR_BRKN, 16|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTE - {SPR_BRKN, 20|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BROKENROBOTF - - {SPR_WHAT, FF_ANIMATE|FF_FULLBRIGHT, 4, {NULL}, 1, 2, S_ALART2, 0}, // S_ALART1 - {SPR_WHAT, 2|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL, 0}, // S_ALART2 - - {SPR_VWRE, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_VWREF - {SPR_VWRE, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_VWREB - - {SPR_PROJ, FF_TRANS20|FF_FULLBRIGHT, 4, {NULL}, 0, 0, S_PROJECTORLIGHT2, 0}, // S_PROJECTORLIGHT1 - {SPR_PROJ, 1|FF_TRANS40|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_PROJECTORLIGHT3, 0}, // S_PROJECTORLIGHT2 - {SPR_PROJ, 2|FF_TRANS20|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_PROJECTORLIGHT4, 0}, // S_PROJECTORLIGHT3 - {SPR_PROJ, 3|FF_TRANS40|FF_FULLBRIGHT, 2, {A_Repeat}, 39, S_PROJECTORLIGHT2, S_PROJECTORLIGHT5, 0}, // S_PROJECTORLIGHT4 - {SPR_PROJ, 4|FF_TRANS60|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_PROJECTORLIGHT5 - - {SPR_FBOM, 0, 1, {A_GhostMe}, 0, 0, S_FBOMB2, 0}, // S_FBOMB1 - {SPR_FBOM, 1, 1, {A_GhostMe}, 0, 0, S_FBOMB1, 0}, // S_FBOMB2 - {SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_FBOMB_EXPL2, 0}, // S_FBOMB_EXPL1 - {SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_Boss5BombExplode}, MT_TNTDUST, 0, S_FBOMB_EXPL3, 0}, // S_FBOMB_EXPL2 - {SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FBOMB_EXPL4, 0}, // S_FBOMB_EXPL3 - {SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL5, 0}, // S_FBOMB_EXPL4 - {SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL6, 0}, // S_FBOMB_EXPL5 - {SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL, 0}, // S_FBOMB_EXPL6 - {SPR_BARD, 0|FF_TRANS90, 2, {NULL}, 0, 0, S_TNTDUST_2, 0}, // S_TNTDUST_1 - {SPR_BARD, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_TNTDUST_3, 0}, // S_TNTDUST_2 - {SPR_BARD, 0|FF_TRANS40, 10, {NULL}, 0, 0, S_TNTDUST_4, 0}, // S_TNTDUST_3 - {SPR_BARD, 0|FF_TRANS50, 10, {NULL}, 0, 0, S_TNTDUST_5, 0}, // S_TNTDUST_4 - {SPR_BARD, 0|FF_TRANS60, 10, {NULL}, 0, 0, S_TNTDUST_6, 0}, // S_TNTDUST_5 - {SPR_BARD, 0|FF_TRANS70, 10, {NULL}, 0, 0, S_TNTDUST_7, 0}, // S_TNTDUST_6 - {SPR_BARD, 0|FF_TRANS80, 10, {NULL}, 0, 0, S_TNTDUST_8, 0}, // S_TNTDUST_7 - {SPR_BARD, 0|FF_TRANS90, 10, {NULL}, 0, 0, S_NULL, 0}, // S_TNTDUST_8 - {SPR_FSGN, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FSGNA - {SPR_FSGN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FSGNB - {SPR_FSGN, 2|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FSGNC - {SPR_FSGN, 3|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FSGND + {"S_FANG_SETUP", 0, SPR_NULL, 0, 2, {A_CheckFlags2}, MF2_AMBUSH, S_FANG_IDLE0, S_FANG_INTRO0, 0}, + + {"S_FANG_INTRO0", 0, SPR_NULL, 0, 2, {NULL}, 0, 0, S_FANG_INTRO1, 0}, + {"S_FANG_INTRO1", 0, SPR_NULL, 0, 2, {A_Boss5MakeJunk}, -S_FANG_CLONE1, 0, S_FANG_INTRO2, 0}, + {"S_FANG_INTRO2", 0, SPR_NULL, 0, 0, {A_Repeat}, 25, S_FANG_INTRO1, S_FANG_INTRO3, 0}, + {"S_FANG_INTRO3", 0, SPR_NULL, 0, 0, {A_Boss5MakeJunk}, 0, 1, S_FANG_INTRO4, 0}, + {"S_FANG_INTRO4", 0, SPR_FANG, 30, 1, {A_ZThrust}, 9, (1<<16)|1, S_FANG_INTRO5, 0}, + {"S_FANG_INTRO5", 0, SPR_FANG, 27, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO6, 0}, + {"S_FANG_INTRO6", 0, SPR_FANG, 28, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO7, 0}, + {"S_FANG_INTRO7", 0, SPR_FANG, 29, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO8, 0}, + {"S_FANG_INTRO8", 0, SPR_FANG, 30, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO5, 0}, + {"S_FANG_INTRO9", 0, SPR_FANG, 23|FF_ANIMATE, 50, {NULL}, 1, 4, S_FANG_INTRO10, 0}, + {"S_FANG_INTRO10", 0, SPR_FANG, 25, 5, {NULL}, 0, 0, S_FANG_INTRO11, 0}, + {"S_FANG_INTRO11", 0, SPR_FANG, 26, 2, {A_Boss5MakeJunk}, S_BROKENROBOTD, 2, S_FANG_INTRO12, 0}, + {"S_FANG_INTRO12", 0, SPR_FANG, 31|FF_ANIMATE, 50, {NULL}, 3, 4, S_FANG_IDLE1, 0}, + + {"S_FANG_CLONE1", 0, SPR_FANG, 11, 2, {A_Boss5MakeJunk}, 0, -1, S_FANG_CLONE2, 0}, + {"S_FANG_INTRO2", 0, SPR_FANG, 11, 0, {A_Repeat}, 49, S_FANG_CLONE1, S_FANG_CLONE3, 0}, + {"S_FANG_CLONE3", 0, SPR_FANG, 12, 0, {A_SetObjectFlags}, MF_NOGRAVITY, 1, S_FANG_CLONE4, 0}, + {"S_FANG_CLONE4", 0, SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_IDLE0, 0, S_FANG_CLONE4, 0}, + + {"S_FANG_IDLE0", 0, SPR_FANG, 0, 0, {A_SetObjectFlags}, MF_NOCLIPTHING, 1, S_FANG_IDLE1, 0}, + {"S_FANG_IDLE1", 0, SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE2, 0}, + {"S_FANG_IDLE2", 0, SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE3, 0}, + {"S_FANG_IDLE3", 0, SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE4, 0}, + {"S_FANG_IDLE4", 0, SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE5, 0}, + {"S_FANG_IDLE5", 0, SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE6, 0}, + {"S_FANG_IDLE6", 0, SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE7, 0}, + {"S_FANG_IDLE7", 0, SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE8, 0}, + {"S_FANG_IDLE8", 0, SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE1, 0}, + + {"S_FANG_PAIN1", 0, SPR_FANG, 14, 0, {A_DoNPCPain}, FRACUNIT, 0, S_FANG_PAIN2, 0}, + {"S_FANG_PAIN2", 0, SPR_FANG, 14, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART1, S_FANG_PINCHPATHINGSTART1, S_FANG_PAIN2, 0}, + + {"S_FANG_PATHINGSTART1", 0, SPR_FANG, 8, 0, {A_Boss5ExtraRepeat}, 5, 4, S_FANG_PATHINGSTART2, 0}, + {"S_FANG_PATHINGSTART2", 0, SPR_FANG, 8, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHING, 0}, + {"S_FANG_PATHING", 0, SPR_FANG, 8, 0, {A_Boss5FindWaypoint}, 0, 0, S_FANG_BOUNCE1, 0}, + + {"S_FANG_BOUNCE1", 0, SPR_FANG, 8, 2, {A_Thrust}, 0, 1, S_FANG_BOUNCE2, 0}, + {"S_FANG_BOUNCE2", 0, SPR_FANG, 9, 2, {NULL}, 0, 0, S_FANG_BOUNCE3, 0}, + {"S_FANG_BOUNCE3", 0, SPR_FANG, 10, 1, {A_Boss5Jump}, 0, 0, S_FANG_BOUNCE4, 0}, + {"S_FANG_BOUNCE4", 0, SPR_FANG, 10, 1, {A_Boss5CheckFalling}, S_FANG_CHECKPATH1, S_FANG_FALL1, S_FANG_BOUNCE4, 0}, + + {"S_FANG_FALL1", 0, SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL2, 0}, + {"S_FANG_FALL2", 0, SPR_FANG, 13, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL1, 0}, + + {"S_FANG_CHECKPATH1", 0, SPR_FANG, 8, 0, {A_Boss5Calm}, 0, 0, S_FANG_CHECKPATH2, 0}, + {"S_FANG_CHECKPATH2", 0, SPR_FANG, 8, 0, {A_Repeat}, 0, S_FANG_PATHINGCONT1, S_FANG_SKID1, 0}, + + {"S_FANG_PATHINGCONT1", 0, SPR_FANG, 9, 0, {A_Boss5PinchShot}, MT_FBOMB, -16, S_FANG_PATHINGCONT2, 0}, + {"S_FANG_PATHINGCONT2", 0, SPR_FANG, 9, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHINGCONT3, 0}, + {"S_FANG_PATHINGCONT3", 0, SPR_FANG, 9, 2, {A_Thrust}, 0, 1, S_FANG_PATHING, 0}, + + {"S_FANG_SKID1", 0, SPR_FANG, 4, 0, {A_PlayAttackSound}, 0, 0, S_FANG_SKID2, 0}, + {"S_FANG_SKID2", 0, SPR_FANG, 4, 1, {A_DoNPCSkid}, S_FANG_SKID3, 0, S_FANG_SKID2, 0}, + {"S_FANG_SKID3", 0, SPR_FANG, 4, 10, {NULL}, 0, 0, S_FANG_CHOOSEATTACK, 0}, + + {"S_FANG_CHOOSEATTACK", 0, SPR_FANG, 0, 0, {A_RandomState}, S_FANG_LOBSHOT0, S_FANG_FIRESTART1, S_NULL, 0}, + + {"S_FANG_FIRESTART1", 0, SPR_FANG, 5, 0, {A_PrepareRepeat}, 3, 0, S_FANG_FIRESTART2, 0}, // Reset loop + {"S_FANG_FIRESTART2", 0, SPR_FANG, 5, 18, {A_LookForBetter}, 1, 0, S_FANG_FIRE1, 0}, + {"S_FANG_FIRE1", 0, SPR_FANG, 5, 5, {A_FireShot}, MT_CORK, -16, S_FANG_FIRE2, 0}, // Start of loop + {"S_FANG_FIRE2", 0, SPR_FANG, 6, 5, {NULL}, 0, 0, S_FANG_FIRE3, 0}, + {"S_FANG_FIRE3", 0, SPR_FANG, 7, 5, {NULL}, 0, 0, S_FANG_FIRE4, 0}, + {"S_FANG_FIRE4", 0, SPR_FANG, 5, 5, {NULL}, 2, 0, S_FANG_FIREREPEAT, 0}, + {"S_FANG_FIREREPEAT", 0, SPR_FANG, 5, 0, {A_Repeat}, 3, S_FANG_FIRE1, S_FANG_WAIT1, 0}, // End of loop + + {"S_FANG_LOBSHOT0", 0, SPR_FANG, 18, 16, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT1, 0}, + {"S_FANG_LOBSHOT1", 0, SPR_FANG, 19, 2, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT2, 0}, + {"S_FANG_LOBSHOT2", 0, SPR_FANG, 20, 18, {A_BrakLobShot}, MT_FBOMB, 32+(1<<16), S_FANG_WAIT1, 0}, + + {"S_FANG_WAIT1", 0, SPR_FANG, FF_ANIMATE|15, 70, {NULL}, 1, 5, S_FANG_WAIT2, 0}, + {"S_FANG_WAIT2", 0, SPR_FANG, 0, 35, {A_Look}, 1, 0, S_FANG_IDLE1, 0}, + + {"S_FANG_WALLHIT", 0, SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART2, S_FANG_PINCHPATHINGSTART1, S_FANG_WALLHIT, 0}, + + {"S_FANG_PINCHPATHINGSTART1", 0, SPR_FANG, 8, 0, {A_PrepareRepeat}, 1, 0, S_FANG_PINCHPATHINGSTART2, 0}, + {"S_FANG_PINCHPATHINGSTART2", 0, SPR_FANG, 8, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PINCHPATHING, 0}, + {"S_FANG_PINCHPATHING", 0, SPR_FANG, 8, 0, {A_Boss5FindWaypoint}, 1, 0, S_FANG_PINCHBOUNCE0, 0}, + {"S_FANG_PINCHBOUNCE0", 0, SPR_FANG, 8, 0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 2, S_FANG_PINCHBOUNCE1, 0}, + {"S_FANG_PINCHBOUNCE1", 0, SPR_FANG, 8, 2, {A_Thrust}, 0, 1, S_FANG_PINCHBOUNCE2, 0}, + {"S_FANG_PINCHBOUNCE2", 0, SPR_FANG, 9, 2, {NULL}, 0, 0, S_FANG_PINCHBOUNCE3, 0}, + {"S_FANG_PINCHBOUNCE3", 0, SPR_FANG, 10, 2, {A_Boss5Jump}, 0, 0, S_FANG_PINCHBOUNCE4, 0}, + {"S_FANG_PINCHBOUNCE4", 0, SPR_FANG, 10, 1, {A_Boss5CheckFalling}, S_FANG_PINCHSKID1, S_FANG_PINCHFALL0, S_FANG_PINCHBOUNCE4, 0}, + {"S_FANG_PINCHFALL0", 0, SPR_FANG, 12, 0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 1, S_FANG_PINCHFALL1, 0}, + {"S_FANG_PINCHFALL1", 0, SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL2, 0}, + {"S_FANG_PINCHFALL2", 0, SPR_FANG, 13, 1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL1, 0}, + {"S_FANG_PINCHSKID1", 0, SPR_FANG, 4, 0, {A_PlayAttackSound}, 0, 0, S_FANG_PINCHSKID2, 0}, + {"S_FANG_PINCHSKID2", 0, SPR_FANG, 4, 1, {A_DoNPCSkid}, S_FANG_PINCHLOBSHOT0, 0, S_FANG_PINCHSKID2, 0}, + {"S_FANG_PINCHLOBSHOT0", 0, SPR_FANG, 18, 16, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT1, 0}, + {"S_FANG_PINCHLOBSHOT1", 0, SPR_FANG, 19, 2, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT2, 0}, + {"S_FANG_PINCHLOBSHOT2", 0, SPR_FANG, 20, 30, {A_Boss5MakeItRain}, MT_FBOMB, -16, S_FANG_PINCHLOBSHOT3, 0}, + {"S_FANG_PINCHLOBSHOT3", 0, SPR_FANG, 20, 18, {A_LinedefExecuteFromArg}, 4, 0, S_FANG_PINCHLOBSHOT4, 0}, + {"S_FANG_PINCHLOBSHOT4", 0, SPR_FANG, 0, 0, {A_Boss5Calm}, 0, 0, S_FANG_PATHINGSTART1, 0}, + + {"S_FANG_DIE1", 0, SPR_FANG, 21, 0, {A_DoNPCPain}, 0, 0, S_FANG_DIE2, 0}, + {"S_FANG_DIE2", 0, SPR_FANG, 21, 1, {A_Boss5CheckOnGround}, S_FANG_DIE3, 0, S_FANG_DIE2, 0}, + + {"S_FANG_DIE3", 0, SPR_FANG, 22, 0, {A_Scream}, 0, 0, S_FANG_DIE4, 0}, + {"S_FANG_DIE4", 0, SPR_FANG, 22, -1, {A_SetFuse}, 70, 0, S_FANG_DIE5, 0}, + + {"S_FANG_DIE5", 0, SPR_FANG, 11, 0, {A_PlaySound}, sfx_jump, 0, S_FANG_DIE6, 0}, + {"S_FANG_DIE6", 0, SPR_FANG, 11, 1, {A_ZThrust}, 6, (1<<16)|1, S_FANG_DIE7, 0}, + {"S_FANG_DIE7", 0, SPR_FANG, 11, 1, {A_Boss5CheckFalling}, S_FANG_FLEEPATHING1, S_FANG_DIE8, S_FANG_DIE7, 0}, + {"S_FANG_DIE8", 0, SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_FLEEPATHING1, 0, S_FANG_DIE8, 0}, + + {"S_FANG_FLEEPATHING1", 0, SPR_FANG, 9, 0, {A_PlayActiveSound}, 0, 0, S_FANG_FLEEPATHING2, 0}, + {"S_FANG_FLEEPATHING2", 0, SPR_FANG, 8, 2, {A_Boss5FindWaypoint}, 2, 0, S_FANG_FLEEBOUNCE1, 0}, + {"S_FANG_FLEEBOUNCE1", 0, SPR_FANG, 9, 2, {NULL}, 0, 0, S_FANG_FLEEBOUNCE2, 0}, + {"S_FANG_FLEEBOUNCE2", 0, SPR_FANG, 10, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, + + {"S_FANG_KO", 0, SPR_FANG, 17, 7*TICRATE, {NULL}, 0, 0, S_NULL, 0}, + + {"S_BROKENROBOTRANDOM", 0, SPR_NULL, 0, -1, {A_RandomStateRange}, S_BROKENROBOTA, S_BROKENROBOTF, S_NULL, 0}, + {"S_BROKENROBOTA", 0, SPR_BRKN, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, + {"S_BROKENROBOTB", 0, SPR_BRKN, 4|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, + {"S_BROKENROBOTC", 0, SPR_BRKN, 8|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, + {"S_BROKENROBOTD", 0, SPR_BRKN, 12|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, + {"S_BROKENROBOTE", 0, SPR_BRKN, 16|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, + {"S_BROKENROBOTF", 0, SPR_BRKN, 20|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL, 0}, + + {"S_ALART1", 0, SPR_WHAT, FF_ANIMATE|FF_FULLBRIGHT, 4, {NULL}, 1, 2, S_ALART2, 0}, + {"S_ALART2", 0, SPR_WHAT, 2|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL, 0}, + + {"S_VWREF", 0, SPR_VWRE, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_VWREB", 0, SPR_VWRE, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + + {"S_PROJECTORLIGHT1", 0, SPR_PROJ, FF_TRANS20|FF_FULLBRIGHT, 4, {NULL}, 0, 0, S_PROJECTORLIGHT2, 0}, + {"S_PROJECTORLIGHT2", 0, SPR_PROJ, 1|FF_TRANS40|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_PROJECTORLIGHT3, 0}, + {"S_PROJECTORLIGHT3", 0, SPR_PROJ, 2|FF_TRANS20|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_PROJECTORLIGHT4, 0}, + {"S_PROJECTORLIGHT4", 0, SPR_PROJ, 3|FF_TRANS40|FF_FULLBRIGHT, 2, {A_Repeat}, 39, S_PROJECTORLIGHT2, S_PROJECTORLIGHT5, 0}, + {"S_PROJECTORLIGHT5", 0, SPR_PROJ, 4|FF_TRANS60|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, + + {"S_FBOMB1", 0, SPR_FBOM, 0, 1, {A_GhostMe}, 0, 0, S_FBOMB2, 0}, + {"S_FBOMB2", 0, SPR_FBOM, 1, 1, {A_GhostMe}, 0, 0, S_FBOMB1, 0}, + {"S_FBOMB_EXPL1", 0, SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_FBOMB_EXPL2, 0}, + {"S_FBOMB_EXPL2", 0, SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_Boss5BombExplode}, MT_TNTDUST, 0, S_FBOMB_EXPL3, 0}, + {"S_FBOMB_EXPL3", 0, SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FBOMB_EXPL4, 0}, + {"S_FBOMB_EXPL4", 0, SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL5, 0}, + {"S_FBOMB_EXPL5", 0, SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL6, 0}, + {"S_FBOMB_EXPL6", 0, SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL, 0}, + {"S_TNTDUST_1", 0, SPR_BARD, 0|FF_TRANS90, 2, {NULL}, 0, 0, S_TNTDUST_2, 0}, + {"S_TNTDUST_2", 0, SPR_BARD, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_TNTDUST_3, 0}, + {"S_TNTDUST_3", 0, SPR_BARD, 0|FF_TRANS40, 10, {NULL}, 0, 0, S_TNTDUST_4, 0}, + {"S_TNTDUST_4", 0, SPR_BARD, 0|FF_TRANS50, 10, {NULL}, 0, 0, S_TNTDUST_5, 0}, + {"S_TNTDUST_5", 0, SPR_BARD, 0|FF_TRANS60, 10, {NULL}, 0, 0, S_TNTDUST_6, 0}, + {"S_TNTDUST_6", 0, SPR_BARD, 0|FF_TRANS70, 10, {NULL}, 0, 0, S_TNTDUST_7, 0}, + {"S_TNTDUST_7", 0, SPR_BARD, 0|FF_TRANS80, 10, {NULL}, 0, 0, S_TNTDUST_8, 0}, + {"S_TNTDUST_8", 0, SPR_BARD, 0|FF_TRANS90, 10, {NULL}, 0, 0, S_NULL, 0}, + {"S_FSGNA", 0, SPR_FSGN, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_FSGNB", 0, SPR_FSGN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_FSGNC", 0, SPR_FSGN, 2|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_FSGND", 0, SPR_FSGN, 3|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // Black Eggman (Boss 7) - {SPR_BRAK, 0, 1, {A_SetReactionTime}, 0, 0, S_BLACKEGG_STND2, 0}, // S_BLACKEGG_STND - {SPR_BRAK, 0, 7, {A_Look}, 1, 0, S_BLACKEGG_STND2, 0}, // S_BLACKEGG_STND2 - {SPR_BRAK, 1, 7, {NULL}, 0, 0, S_BLACKEGG_WALK2, 0}, // S_BLACKEGG_WALK1 - {SPR_BRAK, 2, 7, {NULL}, 0, 0, S_BLACKEGG_WALK3, 0}, // S_BLACKEGG_WALK2 - {SPR_BRAK, 3, 7, {A_PlaySound}, sfx_bestep, 0, S_BLACKEGG_WALK4, 0}, // S_BLACKEGG_WALK3 - {SPR_BRAK, 4, 7, {NULL}, 0, 0, S_BLACKEGG_WALK5, 0}, // S_BLACKEGG_WALK4 - {SPR_BRAK, 5, 7, {NULL}, 0, 0, S_BLACKEGG_WALK6, 0}, // S_BLACKEGG_WALK5 - {SPR_BRAK, 6, 7, {A_PlaySound}, sfx_bestp2, 0, S_BLACKEGG_WALK1, 0}, // S_BLACKEGG_WALK6 - {SPR_BRAK, 7, 3, {NULL}, 0, 0, S_BLACKEGG_SHOOT2, 0}, // S_BLACKEGG_SHOOT1 - {SPR_BRAK, 24, 1, {A_PlaySound}, sfx_befire, 0, S_BLACKEGG_SHOOT1, 0}, // S_BLACKEGG_SHOOT2 - - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN2, 0}, // S_BLACKEGG_PAIN1 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN3, 0}, // S_BLACKEGG_PAIN2 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN4, 0}, // S_BLACKEGG_PAIN3 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN5, 0}, // S_BLACKEGG_PAIN4 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN6, 0}, // S_BLACKEGG_PAIN5 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN7, 0}, // S_BLACKEGG_PAIN6 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN8, 0}, // S_BLACKEGG_PAIN7 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN9, 0}, // S_BLACKEGG_PAIN8 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN10, 0}, // S_BLACKEGG_PAIN9 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN11, 0}, // S_BLACKEGG_PAIN10 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN12, 0}, // S_BLACKEGG_PAIN11 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN13, 0}, // S_BLACKEGG_PAIN12 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN14, 0}, // S_BLACKEGG_PAIN13 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN15, 0}, // S_BLACKEGG_PAIN14 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN16, 0}, // S_BLACKEGG_PAIN15 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN17, 0}, // S_BLACKEGG_PAIN16 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN18, 0}, // S_BLACKEGG_PAIN17 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN19, 0}, // S_BLACKEGG_PAIN18 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN20, 0}, // S_BLACKEGG_PAIN19 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN21, 0}, // S_BLACKEGG_PAIN20 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN22, 0}, // S_BLACKEGG_PAIN21 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN23, 0}, // S_BLACKEGG_PAIN22 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN24, 0}, // S_BLACKEGG_PAIN23 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN25, 0}, // S_BLACKEGG_PAIN24 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN26, 0}, // S_BLACKEGG_PAIN25 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN27, 0}, // S_BLACKEGG_PAIN26 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN28, 0}, // S_BLACKEGG_PAIN27 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN29, 0}, // S_BLACKEGG_PAIN28 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN30, 0}, // S_BLACKEGG_PAIN29 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN31, 0}, // S_BLACKEGG_PAIN30 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN32, 0}, // S_BLACKEGG_PAIN31 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN33, 0}, // S_BLACKEGG_PAIN32 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN34, 0}, // S_BLACKEGG_PAIN33 - {SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN35, 0}, // S_BLACKEGG_PAIN34 - {SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_WALK1, 0}, // S_BLACKEGG_PAIN35 - - {SPR_BRAK, 9, 20, {NULL}, 0, 0, S_BLACKEGG_HITFACE2, 0}, // S_BLACKEGG_HITFACE1 - {SPR_BRAK, 10, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE3, 0}, // S_BLACKEGG_HITFACE2 - {SPR_BRAK, 11, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE4, 0}, // S_BLACKEGG_HITFACE3 - {SPR_BRAK, 12,14, {NULL}, 0, 0, S_BLACKEGG_PAIN1, 0}, // S_BLACKEGG_HITFACE4 - - {SPR_BRAK, 13, 14, {NULL}, 0, 0, S_BLACKEGG_DIE2, 0}, // S_BLACKEGG_DIE1 - {SPR_BRAK, 14, 7, {NULL}, 0, 0, S_BLACKEGG_DIE3, 0}, // S_BLACKEGG_DIE2 - {SPR_BRAK, 15, 5, {NULL}, 0, 0, S_BLACKEGG_DIE4, 0}, // S_BLACKEGG_DIE3 - {SPR_BRAK, 16, 3, {A_PlaySound}, sfx_bgxpld, 0, S_BLACKEGG_DIE5, 0}, // S_BLACKEGG_DIE4 - {SPR_BRAK, 17, -1, {NULL}, 0, 0, S_BLACKEGG_DIE5, 0}, // S_BLACKEGG_DIE5 - - {SPR_BRAK, 18, 14, {NULL}, 0, 0, S_BLACKEGG_MISSILE2, 0}, // S_BLACKEGG_MISSILE1 - {SPR_BRAK, 19, 5, {NULL}, 0, 0, S_BLACKEGG_MISSILE3, 0}, // S_BLACKEGG_MISSILE2 - {SPR_BRAK, 20, 35, {A_Boss7FireMissiles}, MT_BLACKEGGMAN_MISSILE, sfx_beshot, S_BLACKEGG_JUMP1, 0}, // S_BLACKEGG_MISSILE3 - - {SPR_BRAK, 21, -1, {NULL}, 0, 0, S_BLACKEGG_STND, 0}, // S_BLACKEGG_GOOP - - {SPR_BRAK, 22, 14, {A_PlaySound}, sfx_belnch, 0, S_BLACKEGG_JUMP2, 0}, // S_BLACKEGG_JUMP1 - {SPR_BRAK, 23, -1, {NULL}, 0, 0, S_BLACKEGG_WALK1, 0}, // S_BLACKEGG_JUMP2 - - {SPR_BRAK, 21, 3*TICRATE, {NULL}, 0, 0, S_BLACKEGG_DESTROYPLAT2, 0}, // S_BLACKEGG_DESTROYPLAT1 - {SPR_BRAK, 21, 1, {A_PlaySound}, sfx_s3k54, 0, S_BLACKEGG_DESTROYPLAT3, 0}, // S_BLACKEGG_DESTROYPLAT2 - {SPR_BRAK, 21, 14, {A_LinedefExecuteFromArg}, 5, 0, S_BLACKEGG_STND, 0}, // S_BLACKEGG_DESTROYPLAT3 - - {SPR_NULL, 0, 1, {A_CapeChase}, (160 - 20) << 16, 0, S_BLACKEGG_HELPER, 0}, // S_BLACKEGG_HELPER - - {SPR_BGOO, FF_TRANS50 , 2, {NULL}, 0, 0, S_BLACKEGG_GOOP2, 0}, // S_BLACKEGG_GOOP1 - {SPR_BGOO, FF_TRANS50|1, 2, {NULL}, 0, 0, S_BLACKEGG_GOOP1, 0}, // S_BLACKEGG_GOOP2 - {SPR_BGOO, FF_TRANS50|2, 6*TICRATE, {A_GoopSplat}, 0, 0, S_BLACKEGG_GOOP4, 0}, // S_BLACKEGG_GOOP3 - {SPR_BGOO, FF_TRANS60|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP5, 0}, // S_BLACKEGG_GOOP4 - {SPR_BGOO, FF_TRANS70|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP6, 0}, // S_BLACKEGG_GOOP5 - {SPR_BGOO, FF_TRANS80|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP7, 0}, // S_BLACKEGG_GOOP6 - {SPR_BGOO, FF_TRANS90|2, 4, {NULL}, 0, 0, S_NULL, 0}, // S_BLACKEGG_GOOP7 - - {SPR_BMSL, 0, 1, {NULL}, 0, 0, S_BLACKEGG_MISSILE, 0}, // S_BLACKEGG_MISSILE + {"S_BLACKEGG_STND", 0, SPR_BRAK, 0, 1, {A_SetReactionTime}, 0, 0, S_BLACKEGG_STND2, 0}, + {"S_BLACKEGG_STND2", 0, SPR_BRAK, 0, 7, {A_Look}, 1, 0, S_BLACKEGG_STND2, 0}, + {"S_BLACKEGG_WALK1", 0, SPR_BRAK, 1, 7, {NULL}, 0, 0, S_BLACKEGG_WALK2, 0}, + {"S_BLACKEGG_WALK2", 0, SPR_BRAK, 2, 7, {NULL}, 0, 0, S_BLACKEGG_WALK3, 0}, + {"S_BLACKEGG_WALK3", 0, SPR_BRAK, 3, 7, {A_PlaySound}, sfx_bestep, 0, S_BLACKEGG_WALK4, 0}, + {"S_BLACKEGG_WALK4", 0, SPR_BRAK, 4, 7, {NULL}, 0, 0, S_BLACKEGG_WALK5, 0}, + {"S_BLACKEGG_WALK5", 0, SPR_BRAK, 5, 7, {NULL}, 0, 0, S_BLACKEGG_WALK6, 0}, + {"S_BLACKEGG_WALK6", 0, SPR_BRAK, 6, 7, {A_PlaySound}, sfx_bestp2, 0, S_BLACKEGG_WALK1, 0}, + {"S_BLACKEGG_SHOOT1", 0, SPR_BRAK, 7, 3, {NULL}, 0, 0, S_BLACKEGG_SHOOT2, 0}, + {"S_BLACKEGG_SHOOT2", 0, SPR_BRAK, 24, 1, {A_PlaySound}, sfx_befire, 0, S_BLACKEGG_SHOOT1, 0}, + + {"S_BLACKEGG_PAIN1", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN2, 0}, + {"S_BLACKEGG_PAIN2", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN3, 0}, + {"S_BLACKEGG_PAIN3", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN4, 0}, + {"S_BLACKEGG_PAIN4", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN5, 0}, + {"S_BLACKEGG_PAIN5", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN6, 0}, + {"S_BLACKEGG_PAIN6", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN7, 0}, + {"S_BLACKEGG_PAIN7", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN8, 0}, + {"S_BLACKEGG_PAIN8", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN9, 0}, + {"S_BLACKEGG_PAIN9", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN10, 0}, + {"S_BLACKEGG_PAIN10", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN11, 0}, + {"S_BLACKEGG_PAIN11", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN12, 0}, + {"S_BLACKEGG_PAIN12", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN13, 0}, + {"S_BLACKEGG_PAIN13", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN14, 0}, + {"S_BLACKEGG_PAIN14", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN15, 0}, + {"S_BLACKEGG_PAIN15", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN16, 0}, + {"S_BLACKEGG_PAIN16", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN17, 0}, + {"S_BLACKEGG_PAIN17", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN18, 0}, + {"S_BLACKEGG_PAIN18", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN19, 0}, + {"S_BLACKEGG_PAIN19", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN20, 0}, + {"S_BLACKEGG_PAIN20", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN21, 0}, + {"S_BLACKEGG_PAIN21", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN22, 0}, + {"S_BLACKEGG_PAIN22", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN23, 0}, + {"S_BLACKEGG_PAIN23", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN24, 0}, + {"S_BLACKEGG_PAIN24", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN25, 0}, + {"S_BLACKEGG_PAIN25", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN26, 0}, + {"S_BLACKEGG_PAIN26", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN27, 0}, + {"S_BLACKEGG_PAIN27", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN28, 0}, + {"S_BLACKEGG_PAIN28", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN29, 0}, + {"S_BLACKEGG_PAIN29", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN30, 0}, + {"S_BLACKEGG_PAIN30", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN31, 0}, + {"S_BLACKEGG_PAIN31", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN32, 0}, + {"S_BLACKEGG_PAIN32", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN33, 0}, + {"S_BLACKEGG_PAIN33", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN34, 0}, + {"S_BLACKEGG_PAIN34", 0, SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN35, 0}, + {"S_BLACKEGG_PAIN35", 0, SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_WALK1, 0}, + + {"S_BLACKEGG_HITFACE1", 0, SPR_BRAK, 9, 20, {NULL}, 0, 0, S_BLACKEGG_HITFACE2, 0}, + {"S_BLACKEGG_HITFACE2", 0, SPR_BRAK, 10, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE3, 0}, + {"S_BLACKEGG_HITFACE3", 0, SPR_BRAK, 11, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE4, 0}, + {"S_BLACKEGG_HITFACE4", 0, SPR_BRAK, 12,14, {NULL}, 0, 0, S_BLACKEGG_PAIN1, 0}, + + {"S_BLACKEGG_DIE1", 0, SPR_BRAK, 13, 14, {NULL}, 0, 0, S_BLACKEGG_DIE2, 0}, + {"S_BLACKEGG_DIE2", 0, SPR_BRAK, 14, 7, {NULL}, 0, 0, S_BLACKEGG_DIE3, 0}, + {"S_BLACKEGG_DIE3", 0, SPR_BRAK, 15, 5, {NULL}, 0, 0, S_BLACKEGG_DIE4, 0}, + {"S_BLACKEGG_DIE4", 0, SPR_BRAK, 16, 3, {A_PlaySound}, sfx_bgxpld, 0, S_BLACKEGG_DIE5, 0}, + {"S_BLACKEGG_DIE5", 0, SPR_BRAK, 17, -1, {NULL}, 0, 0, S_BLACKEGG_DIE5, 0}, + + {"S_BLACKEGG_MISSILE1", 0, SPR_BRAK, 18, 14, {NULL}, 0, 0, S_BLACKEGG_MISSILE2, 0}, + {"S_BLACKEGG_MISSILE2", 0, SPR_BRAK, 19, 5, {NULL}, 0, 0, S_BLACKEGG_MISSILE3, 0}, + {"S_BLACKEGG_MISSILE3", 0, SPR_BRAK, 20, 35, {A_Boss7FireMissiles}, MT_BLACKEGGMAN_MISSILE, sfx_beshot, S_BLACKEGG_JUMP1, 0}, + + {"S_BLACKEGG_GOOP", 0, SPR_BRAK, 21, -1, {NULL}, 0, 0, S_BLACKEGG_STND, 0}, + + {"S_BLACKEGG_JUMP1", 0, SPR_BRAK, 22, 14, {A_PlaySound}, sfx_belnch, 0, S_BLACKEGG_JUMP2, 0}, + {"S_BLACKEGG_JUMP2", 0, SPR_BRAK, 23, -1, {NULL}, 0, 0, S_BLACKEGG_WALK1, 0}, + + {"S_BLACKEGG_DESTROYPLAT1", 0, SPR_BRAK, 21, 3*TICRATE, {NULL}, 0, 0, S_BLACKEGG_DESTROYPLAT2, 0}, + {"S_BLACKEGG_DESTROYPLAT2", 0, SPR_BRAK, 21, 1, {A_PlaySound}, sfx_s3k54, 0, S_BLACKEGG_DESTROYPLAT3, 0}, + {"S_BLACKEGG_DESTROYPLAT3", 0, SPR_BRAK, 21, 14, {A_LinedefExecuteFromArg}, 5, 0, S_BLACKEGG_STND, 0}, + + {"S_BLACKEGG_HELPER", 0, SPR_NULL, 0, 1, {A_CapeChase}, (160 - 20) << 16, 0, S_BLACKEGG_HELPER, 0}, + + {"S_BLACKEGG_GOOP1", 0, SPR_BGOO, FF_TRANS50 , 2, {NULL}, 0, 0, S_BLACKEGG_GOOP2, 0}, + {"S_BLACKEGG_GOOP2", 0, SPR_BGOO, FF_TRANS50|1, 2, {NULL}, 0, 0, S_BLACKEGG_GOOP1, 0}, + {"S_BLACKEGG_GOOP3", 0, SPR_BGOO, FF_TRANS50|2, 6*TICRATE, {A_GoopSplat}, 0, 0, S_BLACKEGG_GOOP4, 0}, + {"S_BLACKEGG_GOOP4", 0, SPR_BGOO, FF_TRANS60|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP5, 0}, + {"S_BLACKEGG_GOOP5", 0, SPR_BGOO, FF_TRANS70|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP6, 0}, + {"S_BLACKEGG_GOOP6", 0, SPR_BGOO, FF_TRANS80|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP7, 0}, + {"S_BLACKEGG_GOOP7", 0, SPR_BGOO, FF_TRANS90|2, 4, {NULL}, 0, 0, S_NULL, 0}, + + {"S_BLACKEGG_MISSILE", 0, SPR_BMSL, 0, 1, {NULL}, 0, 0, S_BLACKEGG_MISSILE, 0}, // New Very-Last-Minute 2.1 Brak Eggman (Cy-Brak-demon) - {SPR_BRAK, 0, 10, {A_Look}, 0, 0, S_CYBRAKDEMON_IDLE, 0}, // S_CYBRAKDEMON_IDLE - {SPR_BRAK, 1, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK2, 0}, // S_CYBRAKDEMON_WALK1 - {SPR_BRAK, 2, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK3, 0}, // S_CYBRAKDEMON_WALK2 - {SPR_BRAK, 3, 8, {A_BrakChase}, 3, sfx_bestep, S_CYBRAKDEMON_WALK4, 0}, // S_CYBRAKDEMON_WALK3 - {SPR_BRAK, 4, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK5, 0}, // S_CYBRAKDEMON_WALK4 - {SPR_BRAK, 5, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK6, 0}, // S_CYBRAKDEMON_WALK5 - {SPR_BRAK, 6, 8, {A_BrakChase}, 3, sfx_bestp2, S_CYBRAKDEMON_WALK1, 0}, // S_CYBRAKDEMON_WALK6 - {SPR_BRAK, 7, 6, {A_RandomState}, S_CYBRAKDEMON_MISSILE_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1, 0}, // S_CYBRAKDEMON_CHOOSE_ATTACK1 - {SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK2, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK1 // Aim - {SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK3, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK2 // Fire - {SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK4, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK3 // Aim - {SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK5, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK4 // Fire - {SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK6, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK5 // Aim - {SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_FINISH_ATTACK1, 0}, // S_CYBRAKDEMON_MISSILE_ATTACK6 // Fire - {SPR_BRAK, 7, 1, {A_Repeat}, 1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK2, 0}, // S_CYBRAKDEMON_FLAME_ATTACK1 // Reset - {SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FLAME_ATTACK3, 0}, // S_CYBRAKDEMON_FLAME_ATTACK2 // Aim - {SPR_BRAK, 26 + FF_FULLBRIGHT, 2, {A_BrakFireShot}, MT_CYBRAKDEMON_FLAMESHOT, 128, S_CYBRAKDEMON_FLAME_ATTACK4, 0}, // S_CYBRAKDEMON_FLAME_ATTACK3 // Fire - {SPR_BRAK, 7, 1, {A_Repeat}, 30, S_CYBRAKDEMON_FLAME_ATTACK3, S_CYBRAKDEMON_FINISH_ATTACK1, 0}, // S_CYBRAKDEMON_FLAME_ATTACK4 // Loop - {SPR_BRAK, 0, 6, {A_RandomState}, S_CYBRAKDEMON_VILE_ATTACK1, S_CYBRAKDEMON_NAPALM_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1, 0}, // S_CYBRAKDEMON_CHOOSE_ATTACK2 - {SPR_BRAK, 20, 0, {A_LinedefExecuteFromArg}, 5, 0, S_CYBRAKDEMON_VILE_ATTACK2, 0}, // S_CYBRAKDEMON_VILE_ATTACK1 - {SPR_BRAK, 20, 24, {A_VileTarget}, MT_CYBRAKDEMON_TARGET_RETICULE, 1, S_CYBRAKDEMON_VILE_ATTACK3, 0}, // S_CYBRAKDEMON_VILE_ATTACK2 - {SPR_BRAK, 19, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK4, 0}, // S_CYBRAKDEMON_VILE_ATTACK3 - {SPR_BRAK, 18, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK5, 0}, // S_CYBRAKDEMON_VILE_ATTACK4 - {SPR_BRAK, 8, 32, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK6, 0}, // S_CYBRAKDEMON_VILE_ATTACK5 - {SPR_BRAK, 20 + FF_FULLBRIGHT, 28, {A_VileAttack}, sfx_brakrx, MT_CYBRAKDEMON_VILE_EXPLOSION + (1<<16), S_CYBRAKDEMON_FINISH_ATTACK1, 0}, // S_CYBRAKDEMON_VILE_ATTACK6 - {SPR_BRAK, 0, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_NAPALM_ATTACK2, 0}, // S_CYBRAKDEMON_NAPALM_ATTACK1 - {SPR_BRAK, 21 + FF_FULLBRIGHT, 8, {A_BrakLobShot}, MT_CYBRAKDEMON_NAPALM_BOMB_LARGE, 96, S_CYBRAKDEMON_NAPALM_ATTACK3, 0}, // S_CYBRAKDEMON_NAPALM_ATTACK2 - {SPR_BRAK, 0, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FINISH_ATTACK1, 0}, // S_CYBRAKDEMON_NAPALM_ATTACK3 - {SPR_BRAK, 0, 0, {A_SetObjectFlags2}, MF2_FRET, 1, S_CYBRAKDEMON_FINISH_ATTACK2, 0}, // S_CYBRAKDEMON_FINISH_ATTACK1 // If just attacked, remove MF2_FRET w/out going back to spawnstate - {SPR_BRAK, 0, 0, {A_SetReactionTime}, 0, 0, S_CYBRAKDEMON_WALK1, 0}, // S_CYBRAKDEMON_FINISH_ATTACK2 // If just attacked, remove MF2_FRET w/out going back to spawnstate - {SPR_BRAK, 18, 24, {A_Pain}, 0, 0, S_CYBRAKDEMON_PAIN2, 0}, // S_CYBRAKDEMON_PAIN1 - {SPR_BRAK, 18, 0, {A_CheckHealth}, 3, S_CYBRAKDEMON_PAIN3, S_CYBRAKDEMON_CHOOSE_ATTACK1, 0}, // S_CYBRAKDEMON_PAIN2 - {SPR_BRAK, 18, 0, {A_LinedefExecuteFromArg}, 4, 0, S_CYBRAKDEMON_CHOOSE_ATTACK1, 0}, // S_CYBRAKDEMON_PAIN3 - {SPR_BRAK, 18, 1, {A_Repeat}, 1, S_CYBRAKDEMON_DIE1, S_CYBRAKDEMON_DIE2, 0}, // S_CYBRAKDEMON_DIE1 - {SPR_BRAK, 18, 2, {A_BossScream}, 2, 0, S_CYBRAKDEMON_DIE3, 0}, // S_CYBRAKDEMON_DIE2 - {SPR_BRAK, 18, 0, {A_Repeat}, 52, S_CYBRAKDEMON_DIE2, S_CYBRAKDEMON_DIE4, 0}, // S_CYBRAKDEMON_DIE3 - {SPR_BRAK, 13, 34, {A_BossDeath}, 0, 0, S_CYBRAKDEMON_DIE5, 0}, // S_CYBRAKDEMON_DIE4 - {SPR_BRAK, 14, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE6, 0}, // S_CYBRAKDEMON_DIE5 - {SPR_BRAK, 15, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE7, 0}, // S_CYBRAKDEMON_DIE6 - {SPR_BRAK, 16, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE8, 0}, // S_CYBRAKDEMON_DIE7 - {SPR_BRAK, 17, 34, {NULL}, sfx_befall, 0, S_CYBRAKDEMON_DIE8, 0}, // S_CYBRAKDEMON_DIE8 - {SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 2, S_CYBRAKDEMON_IDLE, 0}, // S_CYBRAKDEMON_DEINVINCIBLERIZE - {SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 1, S_CYBRAKDEMON_IDLE, 0}, // S_CYBRAKDEMON_INVINCIBLERIZE - - {SPR_RCKT, 0 + FF_FULLBRIGHT, 1, {A_SetObjectFlags2}, MF2_RAILRING, 2, S_CYBRAKDEMONMISSILE, 0}, // S_CYBRAKDEMONMISSILE - {SPR_RCKT, 1 + FF_FULLBRIGHT, 8, {A_Explode}, 0, 0, S_CYBRAKDEMONMISSILE_EXPLODE2, 0}, // S_CYBRAKDEMONMISSILE_EXPLODE1 //TODO: set missile mobj's "damage" to an appropriate radius - {SPR_RCKT, 2 + FF_FULLBRIGHT, 6, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (6<<16), 32 + (16<<16), S_CYBRAKDEMONMISSILE_EXPLODE3, 0}, // S_CYBRAKDEMONMISSILE_EXPLODE2 - {SPR_RCKT, 3 + FF_FULLBRIGHT, 4, {NULL}, 0, 0, S_NULL, 0}, // S_CYBRAKDEMONMISSILE_EXPLODE3 - - {SPR_FLME, FF_FULLBRIGHT , 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY2, 0}, // S_CYBRAKDEMONFLAMESHOT_FLY1 - {SPR_FLME, FF_FULLBRIGHT|1, 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3, 0}, // S_CYBRAKDEMONFLAMESHOT_FLY2 - {SPR_FLME, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3, 0}, // S_CYBRAKDEMONFLAMESHOT_FLY3 - {SPR_FLME, FF_FULLBRIGHT|2, 0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL, 0}, // S_CYBRAKDEMONFLAMESHOT_DIE - - {SPR_FLAM, FF_FULLBRIGHT, 1, {A_SetFuse}, 10*TICRATE, 0, S_FLAMEREST, 0}, // S_CYBRAKDEMONFLAMEREST - - {SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_INIT2, 0}, // S_CYBRAKDEMONELECTRICBARRIER_INIT1 - {SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_INVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND, 0}, // S_CYBRAKDEMONELECTRICBARRIER_INIT2 - {SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER1, 0}, // S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND - {SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER2, 0}, // S_CYBRAKDEMONELECTRICBARRIER1 - {SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER3, 0}, // S_CYBRAKDEMONELECTRICBARRIER2 - {SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER4, 0}, // S_CYBRAKDEMONELECTRICBARRIER3 - {SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER5, 0}, // S_CYBRAKDEMONELECTRICBARRIER4 - {SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER6, 0}, // S_CYBRAKDEMONELECTRICBARRIER5 - {SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER7, 0}, // S_CYBRAKDEMONELECTRICBARRIER6 - {SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER8, 0}, // S_CYBRAKDEMONELECTRICBARRIER7 - {SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER9, 0}, // S_CYBRAKDEMONELECTRICBARRIER8 - {SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER10, 0}, // S_CYBRAKDEMONELECTRICBARRIER9 - {SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER11, 0}, // S_CYBRAKDEMONELECTRICBARRIER10 - {SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER12, 0}, // S_CYBRAKDEMONELECTRICBARRIER11 - {SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER13, 0}, // S_CYBRAKDEMONELECTRICBARRIER12 - {SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER14, 0}, // S_CYBRAKDEMONELECTRICBARRIER13 - {SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER15, 0}, // S_CYBRAKDEMONELECTRICBARRIER14 - {SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER16, 0}, // S_CYBRAKDEMONELECTRICBARRIER15 - {SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER17, 0}, // S_CYBRAKDEMONELECTRICBARRIER16 - {SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER18, 0}, // S_CYBRAKDEMONELECTRICBARRIER17 - {SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER19, 0}, // S_CYBRAKDEMONELECTRICBARRIER18 - {SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER20, 0}, // S_CYBRAKDEMONELECTRICBARRIER19 - {SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER21, 0}, // S_CYBRAKDEMONELECTRICBARRIER20 - {SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER22, 0}, // S_CYBRAKDEMONELECTRICBARRIER21 - {SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER23, 0}, // S_CYBRAKDEMONELECTRICBARRIER22 - {SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER24, 0}, // S_CYBRAKDEMONELECTRICBARRIER23 - {SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND, 0}, // S_CYBRAKDEMONELECTRICBARRIER24 - {SPR_NULL, 0, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_DEINVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_DIE2, 0}, // S_CYBRAKDEMONELECTRICBARRIER_DIE1 - {SPR_NULL, 0, 0, {A_SetObjectFlags}, MF_PUSHABLE|MF_FIRE|MF_PAIN, 1, S_CYBRAKDEMONELECTRICBARRIER_DIE3, 0}, // S_CYBRAKDEMONELECTRICBARRIER_DIE2 - {SPR_NULL, 0, 20*TICRATE, {A_Scream}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, 0}, // S_CYBRAKDEMONELECTRICBARRIER_DIE3 - {SPR_NULL, 0, 0, {A_CheckRandom}, 10, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK, - {SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, - {SPR_NULL, 0, 0, {A_RandomStateRange}, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE, - {SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, - {SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM2, - {SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM3, - {SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM4, - {SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM5, - {SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM6, - {SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM7, - {SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM8, - {SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM9, - {SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM10, - {SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM11, - {SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12, - {SPR_NULL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL, - {SPR_NULL, 0, 0, {A_Repeat}, 5*TICRATE, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK, S_CYBRAKDEMONELECTRICBARRIER_REVIVE1, 0}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, - {SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE2, 0}, // S_CYBRAKDEMONELECTRICBARRIER_REVIVE1 - {SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE3, 0}, // S_CYBRAKDEMONELECTRICBARRIER_REVIVE2 - {SPR_NULL, 0, TICRATE, {A_PlaySound}, sfx_s3k79, 0, S_NULL, 0}, // S_CYBRAKDEMONELECTRICBARRIER_REVIVE3 - - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT , 1, {A_VileFire}, sfx_s3k9d, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE2, 0}, // S_CYBRAKDEMONTARGETRETICULE1 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE3, 0}, // S_CYBRAKDEMONTARGETRETICULE2 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|1, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE4, 0}, // S_CYBRAKDEMONTARGETRETICULE3 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE5, 0}, // S_CYBRAKDEMONTARGETRETICULE4 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|2, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE6, 0}, // S_CYBRAKDEMONTARGETRETICULE5 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE7, 0}, // S_CYBRAKDEMONTARGETRETICULE6 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|3, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE8, 0}, // S_CYBRAKDEMONTARGETRETICULE7 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE9, 0}, // S_CYBRAKDEMONTARGETRETICULE8 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|4, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE10, 0}, // S_CYBRAKDEMONTARGETRETICULE9 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE11, 0}, // S_CYBRAKDEMONTARGETRETICULE10 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|5, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE12, 0}, // S_CYBRAKDEMONTARGETRETICULE11 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE13, 0}, // S_CYBRAKDEMONTARGETRETICULE12 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT , 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE14, 0}, // S_CYBRAKDEMONTARGETRETICULE13 - {SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_Repeat}, 6, S_CYBRAKDEMONTARGETRETICULE2, S_NULL, 0}, // S_CYBRAKDEMONTARGETRETICULE14 - - {SPR_HOOP, FF_TRANS50|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_CYBRAKDEMONTARGETDOT - - {SPR_NPLM, 0, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1, - {SPR_NPLM, 1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2, - {SPR_NPLM, 2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3, - {SPR_NPLM, 3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4, - {SPR_NPLM, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE1, // Explode - {SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (6<<16), 256 + (48<<16), S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2, // Outer ring - {SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (1<<16), 32<<16, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3, // Center - {SPR_NULL, 0, 81, {A_Scream}, 0, 0, S_NULL, 0}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4, // Sound - - {SPR_MNPL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL, - {SPR_MNPL, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE1, // Explode - {SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (12<<16), 128 + (40<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2, // Outer ring - {SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (8<<16), 64 + (32<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3, // Inner ring - {SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (1<<16), 24<<16, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4, // Center - {SPR_NULL, 0, 24, {A_Scream}, 0, 0, S_NULL, 0}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5, // Sound - - {SPR_SFLM, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY2, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY1, - {SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY3, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY2, - {SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY4, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY3, - {SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY5, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY4, - {SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY6, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY5, - {SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY1, 0}, //S_CYBRAKDEMONNAPALMFLAME_FLY6, - {SPR_SFLM, FF_FULLBRIGHT, 0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL, 0}, //S_CYBRAKDEMONNAPALMFLAME_DIE, - - {SPR_NULL, 0, 1, {A_SetFuse}, TICRATE, 0, S_CYBRAKDEMONVILEEXPLOSION2, 0}, //S_CYBRAKDEMONVILEEXPLOSION1, - {SPR_NULL, 0, 0, {A_ScoreRise}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION3, 0}, //S_CYBRAKDEMONVILEEXPLOSION2, - {SPR_NULL, 0, 1, {A_BossScream}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION1, 0}, //S_CYBRAKDEMONVILEEXPLOSION3, + {"S_CYBRAKDEMON_IDLE", 0, SPR_BRAK, 0, 10, {A_Look}, 0, 0, S_CYBRAKDEMON_IDLE, 0}, + {"S_CYBRAKDEMON_WALK1", 0, SPR_BRAK, 1, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK2, 0}, + {"S_CYBRAKDEMON_WALK2", 0, SPR_BRAK, 2, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK3, 0}, + {"S_CYBRAKDEMON_WALK3", 0, SPR_BRAK, 3, 8, {A_BrakChase}, 3, sfx_bestep, S_CYBRAKDEMON_WALK4, 0}, + {"S_CYBRAKDEMON_WALK4", 0, SPR_BRAK, 4, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK5, 0}, + {"S_CYBRAKDEMON_WALK5", 0, SPR_BRAK, 5, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK6, 0}, + {"S_CYBRAKDEMON_WALK6", 0, SPR_BRAK, 6, 8, {A_BrakChase}, 3, sfx_bestp2, S_CYBRAKDEMON_WALK1, 0}, + {"S_CYBRAKDEMON_CHOOSE_ATTACK1", 0, SPR_BRAK, 7, 6, {A_RandomState}, S_CYBRAKDEMON_MISSILE_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1, 0}, + {"S_CYBRAKDEMON_MISSILE_ATTACK1", 0, SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK2, 0}, // Aim + {"S_CYBRAKDEMON_MISSILE_ATTACK2", 0, SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK3, 0}, // Fire + {"S_CYBRAKDEMON_MISSILE_ATTACK3", 0, SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK4, 0}, // Aim + {"S_CYBRAKDEMON_MISSILE_ATTACK4", 0, SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK5, 0}, // Fire + {"S_CYBRAKDEMON_MISSILE_ATTACK5", 0, SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK6, 0}, // Aim + {"S_CYBRAKDEMON_MISSILE_ATTACK6", 0, SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_FINISH_ATTACK1, 0}, // Fire + {"S_CYBRAKDEMON_FLAME_ATTACK1", 0, SPR_BRAK, 7, 1, {A_Repeat}, 1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK2, 0}, // Reset + {"S_CYBRAKDEMON_FLAME_ATTACK2", 0, SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FLAME_ATTACK3, 0}, // Aim + {"S_CYBRAKDEMON_FLAME_ATTACK3", 0, SPR_BRAK, 26 + FF_FULLBRIGHT, 2, {A_BrakFireShot}, MT_CYBRAKDEMON_FLAMESHOT, 128, S_CYBRAKDEMON_FLAME_ATTACK4, 0}, // Fire + {"S_CYBRAKDEMON_FLAME_ATTACK4", 0, SPR_BRAK, 7, 1, {A_Repeat}, 30, S_CYBRAKDEMON_FLAME_ATTACK3, S_CYBRAKDEMON_FINISH_ATTACK1, 0}, // Loop + {"S_CYBRAKDEMON_CHOOSE_ATTACK2", 0, SPR_BRAK, 0, 6, {A_RandomState}, S_CYBRAKDEMON_VILE_ATTACK1, S_CYBRAKDEMON_NAPALM_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1, 0}, + {"S_CYBRAKDEMON_VILE_ATTACK1", 0, SPR_BRAK, 20, 0, {A_LinedefExecuteFromArg}, 5, 0, S_CYBRAKDEMON_VILE_ATTACK2, 0}, + {"S_CYBRAKDEMON_VILE_ATTACK2", 0, SPR_BRAK, 20, 24, {A_VileTarget}, MT_CYBRAKDEMON_TARGET_RETICULE, 1, S_CYBRAKDEMON_VILE_ATTACK3, 0}, + {"S_CYBRAKDEMON_VILE_ATTACK3", 0, SPR_BRAK, 19, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK4, 0}, + {"S_CYBRAKDEMON_VILE_ATTACK4", 0, SPR_BRAK, 18, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK5, 0}, + {"S_CYBRAKDEMON_VILE_ATTACK5", 0, SPR_BRAK, 8, 32, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK6, 0}, + {"S_CYBRAKDEMON_VILE_ATTACK6", 0, SPR_BRAK, 20 + FF_FULLBRIGHT, 28, {A_VileAttack}, sfx_brakrx, MT_CYBRAKDEMON_VILE_EXPLOSION + (1<<16), S_CYBRAKDEMON_FINISH_ATTACK1, 0}, + {"S_CYBRAKDEMON_NAPALM_ATTACK1", 0, SPR_BRAK, 0, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_NAPALM_ATTACK2, 0}, + {"S_CYBRAKDEMON_NAPALM_ATTACK2", 0, SPR_BRAK, 21 + FF_FULLBRIGHT, 8, {A_BrakLobShot}, MT_CYBRAKDEMON_NAPALM_BOMB_LARGE, 96, S_CYBRAKDEMON_NAPALM_ATTACK3, 0}, + {"S_CYBRAKDEMON_NAPALM_ATTACK3", 0, SPR_BRAK, 0, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FINISH_ATTACK1, 0}, + {"S_CYBRAKDEMON_FINISH_ATTACK1", 0, SPR_BRAK, 0, 0, {A_SetObjectFlags2}, MF2_FRET, 1, S_CYBRAKDEMON_FINISH_ATTACK2, 0}, // If just attacked, remove MF2_FRET w/out going back to spawnstate + {"S_CYBRAKDEMON_FINISH_ATTACK2", 0, SPR_BRAK, 0, 0, {A_SetReactionTime}, 0, 0, S_CYBRAKDEMON_WALK1, 0}, // If just attacked, remove MF2_FRET w/out going back to spawnstate + {"S_CYBRAKDEMON_PAIN1", 0, SPR_BRAK, 18, 24, {A_Pain}, 0, 0, S_CYBRAKDEMON_PAIN2, 0}, + {"S_CYBRAKDEMON_PAIN2", 0, SPR_BRAK, 18, 0, {A_CheckHealth}, 3, S_CYBRAKDEMON_PAIN3, S_CYBRAKDEMON_CHOOSE_ATTACK1, 0}, + {"S_CYBRAKDEMON_PAIN3", 0, SPR_BRAK, 18, 0, {A_LinedefExecuteFromArg}, 4, 0, S_CYBRAKDEMON_CHOOSE_ATTACK1, 0}, + {"S_CYBRAKDEMON_DIE1", 0, SPR_BRAK, 18, 1, {A_Repeat}, 1, S_CYBRAKDEMON_DIE1, S_CYBRAKDEMON_DIE2, 0}, + {"S_CYBRAKDEMON_DIE2", 0, SPR_BRAK, 18, 2, {A_BossScream}, 2, 0, S_CYBRAKDEMON_DIE3, 0}, + {"S_CYBRAKDEMON_DIE3", 0, SPR_BRAK, 18, 0, {A_Repeat}, 52, S_CYBRAKDEMON_DIE2, S_CYBRAKDEMON_DIE4, 0}, + {"S_CYBRAKDEMON_DIE4", 0, SPR_BRAK, 13, 34, {A_BossDeath}, 0, 0, S_CYBRAKDEMON_DIE5, 0}, + {"S_CYBRAKDEMON_DIE5", 0, SPR_BRAK, 14, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE6, 0}, + {"S_CYBRAKDEMON_DIE6", 0, SPR_BRAK, 15, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE7, 0}, + {"S_CYBRAKDEMON_DIE7", 0, SPR_BRAK, 16, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE8, 0}, + {"S_CYBRAKDEMON_DIE8", 0, SPR_BRAK, 17, 34, {NULL}, sfx_befall, 0, S_CYBRAKDEMON_DIE8, 0}, + {"S_CYBRAKDEMON_DEINVINCIBLERIZE", 0, SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 2, S_CYBRAKDEMON_IDLE, 0}, + {"S_CYBRAKDEMON_INVINCIBLERIZE", 0, SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 1, S_CYBRAKDEMON_IDLE, 0}, + + {"S_CYBRAKDEMONMISSILE", 0, SPR_RCKT, 0 + FF_FULLBRIGHT, 1, {A_SetObjectFlags2}, MF2_RAILRING, 2, S_CYBRAKDEMONMISSILE, 0}, + {"S_CYBRAKDEMONMISSILE_EXPLODE1", 0, SPR_RCKT, 1 + FF_FULLBRIGHT, 8, {A_Explode}, 0, 0, S_CYBRAKDEMONMISSILE_EXPLODE2, 0}, //TODO: set missile mobj's "damage" to an appropriate radius + {"S_CYBRAKDEMONMISSILE_EXPLODE2", 0, SPR_RCKT, 2 + FF_FULLBRIGHT, 6, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (6<<16), 32 + (16<<16), S_CYBRAKDEMONMISSILE_EXPLODE3, 0}, + {"S_CYBRAKDEMONMISSILE_EXPLODE3", 0, SPR_RCKT, 3 + FF_FULLBRIGHT, 4, {NULL}, 0, 0, S_NULL, 0}, + + {"S_CYBRAKDEMONFLAMESHOT_FLY1", 0, SPR_FLME, FF_FULLBRIGHT , 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY2, 0}, + {"S_CYBRAKDEMONFLAMESHOT_FLY2", 0, SPR_FLME, FF_FULLBRIGHT|1, 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3, 0}, + {"S_CYBRAKDEMONFLAMESHOT_FLY3", 0, SPR_FLME, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3, 0}, + {"S_CYBRAKDEMONFLAMESHOT_DIE", 0, SPR_FLME, FF_FULLBRIGHT|2, 0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL, 0}, + + {"S_CYBRAKDEMONFLAMEREST", 0, SPR_FLAM, FF_FULLBRIGHT, 1, {A_SetFuse}, 10*TICRATE, 0, S_FLAMEREST, 0}, + + {"S_CYBRAKDEMONELECTRICBARRIER_INIT1", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_INIT2, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_INIT2", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_INVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER1, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER1", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER2, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER2", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER3, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER3", 0, SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER4, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER4", 0, SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER5, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER5", 0, SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER6, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER6", 0, SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER7, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER7", 0, SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER8, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER8", 0, SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER9, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER9", 0, SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER10, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER10", 0, SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER11, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER11", 0, SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER12, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER12", 0, SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER13, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER13", 0, SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER14, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER14", 0, SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER15, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER15", 0, SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER16, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER16", 0, SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER17, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER17", 0, SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER18, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER18", 0, SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER19, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER19", 0, SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER20, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER20", 0, SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER21, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER21", 0, SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER22, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER22", 0, SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER23, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER23", 0, SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER24, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER24", 0, SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_DIE1", 0, SPR_NULL, 0, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_DEINVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_DIE2, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_DIE2", 0, SPR_NULL, 0, 0, {A_SetObjectFlags}, MF_PUSHABLE|MF_FIRE|MF_PAIN, 1, S_CYBRAKDEMONELECTRICBARRIER_DIE3, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_DIE3", 0, SPR_NULL, 0, 20*TICRATE, {A_Scream}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK", 0, SPR_NULL, 0, 0, {A_CheckRandom}, 10, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS", 0, SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE", 0, SPR_NULL, 0, 0, {A_RandomStateRange}, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1", 0, SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM2", 0, SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM3", 0, SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM4", 0, SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM5", 0, SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM6", 0, SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM7", 0, SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM8", 0, SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM9", 0, SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM10", 0, SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM11", 0, SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12", 0, SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP", 0, SPR_NULL, 0, 0, {A_Repeat}, 5*TICRATE, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK, S_CYBRAKDEMONELECTRICBARRIER_REVIVE1, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_REVIVE1", 0, SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE2, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_REVIVE2", 0, SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE3, 0}, + {"S_CYBRAKDEMONELECTRICBARRIER_REVIVE3", 0, SPR_NULL, 0, TICRATE, {A_PlaySound}, sfx_s3k79, 0, S_NULL, 0}, + + {"S_CYBRAKDEMONTARGETRETICULE1", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT , 1, {A_VileFire}, sfx_s3k9d, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE2, 0}, + {"S_CYBRAKDEMONTARGETRETICULE2", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE3, 0}, + {"S_CYBRAKDEMONTARGETRETICULE3", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|1, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE4, 0}, + {"S_CYBRAKDEMONTARGETRETICULE4", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE5, 0}, + {"S_CYBRAKDEMONTARGETRETICULE5", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|2, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE6, 0}, + {"S_CYBRAKDEMONTARGETRETICULE6", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE7, 0}, + {"S_CYBRAKDEMONTARGETRETICULE7", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|3, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE8, 0}, + {"S_CYBRAKDEMONTARGETRETICULE8", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE9, 0}, + {"S_CYBRAKDEMONTARGETRETICULE9", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|4, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE10, 0}, + {"S_CYBRAKDEMONTARGETRETICULE10", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE11, 0}, + {"S_CYBRAKDEMONTARGETRETICULE11", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|5, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE12, 0}, + {"S_CYBRAKDEMONTARGETRETICULE12", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE13, 0}, + {"S_CYBRAKDEMONTARGETRETICULE13", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT , 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE14, 0}, + {"S_CYBRAKDEMONTARGETRETICULE14", 0, SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_Repeat}, 6, S_CYBRAKDEMONTARGETRETICULE2, S_NULL, 0}, + + {"S_CYBRAKDEMONTARGETDOT", 0, SPR_HOOP, FF_TRANS50|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, + + {"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1", 0, SPR_NPLM, 0, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2, 0}, + {"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2", 0, SPR_NPLM, 1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3, 0}, + {"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3", 0, SPR_NPLM, 2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4, 0}, + {"S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4", 0, SPR_NPLM, 3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1, 0}, + {"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE1", 0, SPR_NPLM, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2, 0}, // Explode + {"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2", 0, SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (6<<16), 256 + (48<<16), S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3, 0}, // Outer ring + {"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3", 0, SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (1<<16), 32<<16, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4, 0}, // Center + {"S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4", 0, SPR_NULL, 0, 81, {A_Scream}, 0, 0, S_NULL, 0}, // Sound + + {"S_CYBRAKDEMONNAPALMBOMBSMALL", 0, SPR_MNPL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL, 0}, + {"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE1", 0, SPR_MNPL, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2, 0}, // Explode + {"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2", 0, SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (12<<16), 128 + (40<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3, 0}, // Outer ring + {"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3", 0, SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (8<<16), 64 + (32<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4, 0}, // Inner ring + {"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4", 0, SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (1<<16), 24<<16, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5, 0}, // Center + {"S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5", 0, SPR_NULL, 0, 24, {A_Scream}, 0, 0, S_NULL, 0}, // Sound + + {"S_CYBRAKDEMONNAPALMFLAME_FLY1", 0, SPR_SFLM, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY2, 0}, + {"S_CYBRAKDEMONNAPALMFLAME_FLY2", 0, SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY3, 0}, + {"S_CYBRAKDEMONNAPALMFLAME_FLY3", 0, SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY4, 0}, + {"S_CYBRAKDEMONNAPALMFLAME_FLY4", 0, SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY5, 0}, + {"S_CYBRAKDEMONNAPALMFLAME_FLY5", 0, SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY6, 0}, + {"S_CYBRAKDEMONNAPALMFLAME_FLY6", 0, SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY1, 0}, + {"S_CYBRAKDEMONNAPALMFLAME_DIE", 0, SPR_SFLM, FF_FULLBRIGHT, 0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL, 0}, + + {"S_CYBRAKDEMONVILEEXPLOSION1", 0, SPR_NULL, 0, 1, {A_SetFuse}, TICRATE, 0, S_CYBRAKDEMONVILEEXPLOSION2, 0}, + {"S_CYBRAKDEMONVILEEXPLOSION2", 0, SPR_NULL, 0, 0, {A_ScoreRise}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION3, 0}, + {"S_CYBRAKDEMONVILEEXPLOSION3", 0, SPR_NULL, 0, 1, {A_BossScream}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION1, 0}, // Metal Sonic - {SPR_PLAY, SPR2_STND, -1, {NULL}, 0, 0, S_METALSONIC_RACE, 0}, // S_METALSONIC_RACE - - {SPR_METL, 4, -1, {NULL}, 0, 0, S_METALSONIC_FLOAT, 0}, // S_METALSONIC_FLOAT - {SPR_METL, 16|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_METALSONIC_STUN, 0}, // S_METALSONIC_VECTOR - {SPR_METL, 15, -1, {NULL}, 0, 0, S_METALSONIC_FLOAT, 0}, // S_METALSONIC_STUN - {SPR_METL, 17, 20, {NULL}, 0, 0, S_METALSONIC_GATHER, 0},// S_METALSONIC_RAISE - {SPR_METL, 18, -1, {NULL}, 0, 0, S_METALSONIC_FLOAT, 0}, // S_METALSONIC_GATHER - {SPR_METL, 6|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_BOUNCE, 0},// S_METALSONIC_DASH - {SPR_METL, 18|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_FLOAT, 0}, // S_METALSONIC_BOUNCE - {SPR_METL, 14, -1, {NULL}, 0, 0, S_METALSONIC_FLOAT, 0}, // S_METALSONIC_BADBOUNCE - {SPR_METL, 17, -1, {NULL}, 0, 0, S_METALSONIC_GATHER, 0},// S_METALSONIC_SHOOT - {SPR_METL, 15, 40, {A_Pain}, 0, 0, S_METALSONIC_FLOAT, 0}, // S_METALSONIC_PAIN - {SPR_METL, 17, 2, {A_Fall}, 0, 0, S_METALSONIC_DEATH2, 0},// S_METALSONIC_DEATH1 - {SPR_METL, 17, 4, {A_BossScream}, 0, 0, S_METALSONIC_DEATH3, 0},// S_METALSONIC_DEATH2 - {SPR_METL, 17, 0, {A_Repeat}, 17, S_METALSONIC_DEATH2, S_METALSONIC_DEATH4, 0}, // S_METALSONIC_DEATH3 - {SPR_METL, 17, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, // S_METALSONIC_DEATH4 - {SPR_METL, 15, 1, {A_BossScream}, 0, 0, S_METALSONIC_FLEE2, 0}, // S_METALSONIC_FLEE1 - {SPR_METL, 15, 7, {NULL}, 0, 0, S_METALSONIC_FLEE1, 0}, // S_METALSONIC_FLEE2 - - {SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30|FF_ANIMATE, -1, {NULL}, 11, 1, S_NULL, 0}, // S_MSSHIELD_F1 - {SPR_MSCF, FF_FULLBRIGHT|FF_ANIMATE|12, -1, {NULL}, 8, 2, S_NULL, 0}, // S_MSSHIELD_F2 + {"S_METALSONIC_RACE", 0, SPR_PLAY, SPR2_STND, -1, {NULL}, 0, 0, S_METALSONIC_RACE, 0}, + + {"S_METALSONIC_FLOAT", 0, SPR_METL, 4, -1, {NULL}, 0, 0, S_METALSONIC_FLOAT, 0}, + {"S_METALSONIC_VECTOR", 0, SPR_METL, 16|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_METALSONIC_STUN, 0}, + {"S_METALSONIC_STUN", 0, SPR_METL, 15, -1, {NULL}, 0, 0, S_METALSONIC_FLOAT, 0}, + {"S_METALSONIC_RAISE", 0, SPR_METL, 17, 20, {NULL}, 0, 0, S_METALSONIC_GATHER, 0}, + {"S_METALSONIC_GATHER", 0, SPR_METL, 18, -1, {NULL}, 0, 0, S_METALSONIC_FLOAT, 0}, + {"S_METALSONIC_DASH", 0, SPR_METL, 6|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_BOUNCE, 0}, + {"S_METALSONIC_BOUNCE", 0, SPR_METL, 18|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_FLOAT, 0}, + {"S_METALSONIC_BADBOUNCE", 0, SPR_METL, 14, -1, {NULL}, 0, 0, S_METALSONIC_FLOAT, 0}, + {"S_METALSONIC_SHOOT", 0, SPR_METL, 17, -1, {NULL}, 0, 0, S_METALSONIC_GATHER, 0}, + {"S_METALSONIC_PAIN", 0, SPR_METL, 15, 40, {A_Pain}, 0, 0, S_METALSONIC_FLOAT, 0}, + {"S_METALSONIC_DEATH1", 0, SPR_METL, 17, 2, {A_Fall}, 0, 0, S_METALSONIC_DEATH2, 0}, + {"S_METALSONIC_DEATH2", 0, SPR_METL, 17, 4, {A_BossScream}, 0, 0, S_METALSONIC_DEATH3, 0}, + {"S_METALSONIC_DEATH3", 0, SPR_METL, 17, 0, {A_Repeat}, 17, S_METALSONIC_DEATH2, S_METALSONIC_DEATH4, 0}, + {"S_METALSONIC_DEATH4", 0, SPR_METL, 17, -1, {A_BossDeath}, 0, 0, S_NULL, 0}, + {"S_METALSONIC_FLEE1", 0, SPR_METL, 15, 1, {A_BossScream}, 0, 0, S_METALSONIC_FLEE2, 0}, + {"S_METALSONIC_FLEE2", 0, SPR_METL, 15, 7, {NULL}, 0, 0, S_METALSONIC_FLEE1, 0}, + + {"S_MSSHIELD_F1", 0, SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30|FF_ANIMATE, -1, {NULL}, 11, 1, S_NULL, 0}, + {"S_MSSHIELD_F2", 0, SPR_MSCF, FF_FULLBRIGHT|FF_ANIMATE|12, -1, {NULL}, 8, 2, S_NULL, 0}, // Ring - {SPR_RING, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_RING, 0}, // S_RING + {"S_RING", 0, SPR_RING, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_RING, 0}, // Blue Sphere for special stages - {SPR_SPHR, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUESPHERE - {SPR_SPHR, FF_FULLBRIGHT + {"S_BLUESPHERE", 0, SPR_SPHR, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BLUESPHEREBONUS", 0, SPR_SPHR, FF_FULLBRIGHT #ifdef MANIASPHERES |FF_ANIMATE|FF_RANDOMANIM #endif - , -1, {NULL}, 1, 4, S_NULL, 0}, // S_BLUESPHEREBONUS - {SPR_SPHR, 0, 20, {NULL}, 0, 0, S_NULL, 0}, // S_BLUESPHERESPARK + , -1, {NULL}, 1, 4, S_NULL, 0}, + {"S_BLUESPHERESPARK", 0, SPR_SPHR, 0, 20, {NULL}, 0, 0, S_NULL, 0}, // Bomb Sphere - {SPR_SPHR, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_BOMBSPHERE2, 0}, // S_BOMBSPHERE1 - {SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE3, 0}, // S_BOMBSPHERE2 - {SPR_SPHR, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_BOMBSPHERE4, 0}, // S_BOMBSPHERE3 - {SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE1, 0}, // S_BOMBSPHERE4 + {"S_BOMBSPHERE1", 0, SPR_SPHR, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_BOMBSPHERE2, 0}, + {"S_BOMBSPHERE2", 0, SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE3, 0}, + {"S_BOMBSPHERE3", 0, SPR_SPHR, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_BOMBSPHERE4, 0}, + {"S_BOMBSPHERE4", 0, SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE1, 0}, // NiGHTS Chip - {SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 15, 2, S_NULL, 0}, // S_NIGHTSCHIP - {SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE|16, -1, {NULL}, 15, 2, S_NULL, 0}, // S_NIGHTSCHIPBONUS + {"S_NIGHTSCHIP", 0, SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 15, 2, S_NULL, 0}, + {"S_NIGHTSCHIPBONUS", 0, SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE|16, -1, {NULL}, 15, 2, S_NULL, 0}, // NiGHTS Star - {SPR_NSTR, FF_ANIMATE, -1, {NULL}, 14, 2, S_NULL, 0}, // S_NIGHTSSTAR - {SPR_NSTR, 15, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSSTARXMAS + {"S_NIGHTSSTAR", 0, SPR_NSTR, FF_ANIMATE, -1, {NULL}, 14, 2, S_NULL, 0}, + {"S_NIGHTSSTARXMAS", 0, SPR_NSTR, 15, -1, {NULL}, 0, 0, S_NULL, 0}, // Gravity Well sprites for Egg Rock's Special Stage - {SPR_GWLG, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, // S_GRAVWELLGREEN - {SPR_GWLR, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, // S_GRAVWELLRED + {"S_GRAVWELLGREEN", 0, SPR_GWLG, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, + {"S_GRAVWELLRED", 0, SPR_GWLR, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, // Individual Team Rings (now with shield attracting action! =P) - {SPR_TRNG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_TEAMRING, 0}, // S_TEAMRING + {"S_TEAMRING", 0, SPR_TRNG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_TEAMRING, 0}, // Special Stage Token - {SPR_TOKE, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 19, 1, S_TOKEN, 0}, // S_TOKEN + {"S_TOKEN", 0, SPR_TOKE, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 19, 1, S_TOKEN, 0}, // CTF Flags - {SPR_RFLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_REDFLAG - {SPR_BFLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUEFLAG + {"S_REDFLAG", 0, SPR_RFLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BLUEFLAG", 0, SPR_BFLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Emblem - {SPR_EMBM, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM1 - {SPR_EMBM, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM2 - {SPR_EMBM, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM3 - {SPR_EMBM, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM4 - {SPR_EMBM, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM5 - {SPR_EMBM, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM6 - {SPR_EMBM, 6, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM7 - {SPR_EMBM, 7, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM8 - {SPR_EMBM, 8, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM9 - {SPR_EMBM, 9, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM10 - {SPR_EMBM, 10, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM11 - {SPR_EMBM, 11, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM12 - {SPR_EMBM, 12, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM13 - {SPR_EMBM, 13, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM14 - {SPR_EMBM, 14, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM15 - {SPR_EMBM, 15, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM16 - {SPR_EMBM, 16, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM17 - {SPR_EMBM, 17, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM18 - {SPR_EMBM, 18, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM19 - {SPR_EMBM, 19, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM20 - {SPR_EMBM, 20, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM21 - {SPR_EMBM, 21, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM22 - {SPR_EMBM, 22, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM23 - {SPR_EMBM, 23, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM24 - {SPR_EMBM, 24, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM25 - {SPR_EMBM, 25, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EMBLEM26 + {"S_EMBLEM1", 0, SPR_EMBM, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM2", 0, SPR_EMBM, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM3", 0, SPR_EMBM, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM4", 0, SPR_EMBM, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM5", 0, SPR_EMBM, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM6", 0, SPR_EMBM, 5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM7", 0, SPR_EMBM, 6, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM8", 0, SPR_EMBM, 7, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM9", 0, SPR_EMBM, 8, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM10", 0, SPR_EMBM, 9, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM11", 0, SPR_EMBM, 10, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM12", 0, SPR_EMBM, 11, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM13", 0, SPR_EMBM, 12, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM14", 0, SPR_EMBM, 13, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM15", 0, SPR_EMBM, 14, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM16", 0, SPR_EMBM, 15, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM17", 0, SPR_EMBM, 16, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM18", 0, SPR_EMBM, 17, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM19", 0, SPR_EMBM, 18, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM20", 0, SPR_EMBM, 19, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM21", 0, SPR_EMBM, 20, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM22", 0, SPR_EMBM, 21, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM23", 0, SPR_EMBM, 22, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM24", 0, SPR_EMBM, 23, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM25", 0, SPR_EMBM, 24, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EMBLEM26", 0, SPR_EMBM, 25, -1, {NULL}, 0, 0, S_NULL, 0}, // Chaos Emeralds - {SPR_CEMG, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG1 - {SPR_CEMG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG2 - {SPR_CEMG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG3 - {SPR_CEMG, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG4 - {SPR_CEMG, FF_FULLBRIGHT|4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG5 - {SPR_CEMG, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG6 - {SPR_CEMG, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEMG7 + {"S_CEMG1", 0, SPR_CEMG, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CEMG2", 0, SPR_CEMG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CEMG3", 0, SPR_CEMG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CEMG4", 0, SPR_CEMG, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CEMG5", 0, SPR_CEMG, FF_FULLBRIGHT|4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CEMG6", 0, SPR_CEMG, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CEMG7", 0, SPR_CEMG, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL, 0}, // Emerald hunt shards - {SPR_SHRD, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SHRD1 - {SPR_SHRD, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SHRD2 - {SPR_SHRD, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SHRD3 + {"S_SHRD1", 0, SPR_SHRD, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SHRD2", 0, SPR_SHRD, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SHRD3", 0, SPR_SHRD, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // Bubble Source - {SPR_BBLS, 0, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES2, 0}, // S_BUBBLES1 - {SPR_BBLS, 1, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES3, 0}, // S_BUBBLES2 - {SPR_BBLS, 2, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES4, 0}, // S_BUBBLES3 - {SPR_BBLS, 3, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES1, 0}, // S_BUBBLES4 + {"S_BUBBLES1", 0, SPR_BBLS, 0, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES2, 0}, + {"S_BUBBLES2", 0, SPR_BBLS, 1, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES3, 0}, + {"S_BUBBLES3", 0, SPR_BBLS, 2, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES4, 0}, + {"S_BUBBLES4", 0, SPR_BBLS, 3, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES1, 0}, // Level End Sign - {SPR_SIGN, 0, -1, {A_SignPlayer}, -3, 0, S_NULL, 0}, // S_SIGN - {SPR_SIGN, 0, 1, {A_SignSpin}, 30, 0, S_SIGNSPIN2, 0}, // S_SIGNSPIN1 - {SPR_SIGN, 0, 0, {A_Repeat}, 4, S_SIGNSPIN1, S_SIGNSPIN3, 0}, // S_SIGNSPIN2 - {SPR_SIGN, 0, 0, {A_SignPlayer}, -2, 0, S_SIGNSPIN4, 0}, // S_SIGNSPIN3 - {SPR_SIGN, 0, 1, {A_SignSpin}, 30, 0, S_SIGNSPIN5, 0}, // S_SIGNSPIN4 - {SPR_SIGN, 0, 0, {A_Repeat}, 4, S_SIGNSPIN4, S_SIGNSPIN6, 0}, // S_SIGNSPIN5 - {SPR_SIGN, 0, 0, {A_SignPlayer}, -3, 0, S_SIGNSPIN1, 0}, // S_SIGNSPIN6 - {SPR_SIGN, 0, 1, {A_SignPlayer}, -1, 0, S_SIGNSLOW, 0}, // S_SIGNPLAYER - {SPR_SIGN, 0, 1, {A_SignSpin}, 30, 0, S_SIGNSLOW, 0}, // S_SIGNSLOW - {SPR_SIGN, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SIGNSTOP - {SPR_SIGN, FF_PAPERSPRITE| 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SIGNBOARD - {SPR_SIGN, FF_PAPERSPRITE| 1, -1, {NULL}, 0, 29, S_NULL, 0}, // S_EGGMANSIGN - {SPR_SIGN, FF_PAPERSPRITE|18, -1, {NULL}, 0, 29, S_NULL, 0}, // S_CLEARSIGN + {"S_SIGN", 0, SPR_SIGN, 0, -1, {A_SignPlayer}, -3, 0, S_NULL, 0}, + {"S_SIGNSPIN1", 0, SPR_SIGN, 0, 1, {A_SignSpin}, 30, 0, S_SIGNSPIN2, 0}, + {"S_SIGNSPIN2", 0, SPR_SIGN, 0, 0, {A_Repeat}, 4, S_SIGNSPIN1, S_SIGNSPIN3, 0}, + {"S_SIGNSPIN3", 0, SPR_SIGN, 0, 0, {A_SignPlayer}, -2, 0, S_SIGNSPIN4, 0}, + {"S_SIGNSPIN4", 0, SPR_SIGN, 0, 1, {A_SignSpin}, 30, 0, S_SIGNSPIN5, 0}, + {"S_SIGNSPIN5", 0, SPR_SIGN, 0, 0, {A_Repeat}, 4, S_SIGNSPIN4, S_SIGNSPIN6, 0}, + {"S_SIGNSPIN6", 0, SPR_SIGN, 0, 0, {A_SignPlayer}, -3, 0, S_SIGNSPIN1, 0}, + {"S_SIGNPLAYER", 0, SPR_SIGN, 0, 1, {A_SignPlayer}, -1, 0, S_SIGNSLOW, 0}, + {"S_SIGNSLOW", 0, SPR_SIGN, 0, 1, {A_SignSpin}, 30, 0, S_SIGNSLOW, 0}, + {"S_SIGNSTOP", 0, SPR_SIGN, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SIGNBOARD", 0, SPR_SIGN, FF_PAPERSPRITE| 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_EGGMANSIGN", 0, SPR_SIGN, FF_PAPERSPRITE| 1, -1, {NULL}, 0, 29, S_NULL, 0}, + {"S_CLEARSIGN", 0, SPR_SIGN, FF_PAPERSPRITE|18, -1, {NULL}, 0, 29, S_NULL, 0}, // Spike Ball - {SPR_SPIK, 0, 1, {NULL}, 0, 0, S_SPIKEBALL2, 0}, // S_SPIKEBALL1 - {SPR_SPIK, 1, 1, {NULL}, 0, 0, S_SPIKEBALL3, 0}, // S_SPIKEBALL2 - {SPR_SPIK, 2, 1, {NULL}, 0, 0, S_SPIKEBALL4, 0}, // S_SPIKEBALL3 - {SPR_SPIK, 3, 1, {NULL}, 0, 0, S_SPIKEBALL5, 0}, // S_SPIKEBALL4 - {SPR_SPIK, 4, 1, {NULL}, 0, 0, S_SPIKEBALL6, 0}, // S_SPIKEBALL5 - {SPR_SPIK, 5, 1, {NULL}, 0, 0, S_SPIKEBALL7, 0}, // S_SPIKEBALL6 - {SPR_SPIK, 6, 1, {NULL}, 0, 0, S_SPIKEBALL8, 0}, // S_SPIKEBALL7 - {SPR_SPIK, 7, 1, {NULL}, 0, 0, S_SPIKEBALL1, 0}, // S_SPIKEBALL8 + {"S_SPIKEBALL1", 0, SPR_SPIK, 0, 1, {NULL}, 0, 0, S_SPIKEBALL2, 0}, + {"S_SPIKEBALL2", 0, SPR_SPIK, 1, 1, {NULL}, 0, 0, S_SPIKEBALL3, 0}, + {"S_SPIKEBALL3", 0, SPR_SPIK, 2, 1, {NULL}, 0, 0, S_SPIKEBALL4, 0}, + {"S_SPIKEBALL4", 0, SPR_SPIK, 3, 1, {NULL}, 0, 0, S_SPIKEBALL5, 0}, + {"S_SPIKEBALL5", 0, SPR_SPIK, 4, 1, {NULL}, 0, 0, S_SPIKEBALL6, 0}, + {"S_SPIKEBALL6", 0, SPR_SPIK, 5, 1, {NULL}, 0, 0, S_SPIKEBALL7, 0}, + {"S_SPIKEBALL7", 0, SPR_SPIK, 6, 1, {NULL}, 0, 0, S_SPIKEBALL8, 0}, + {"S_SPIKEBALL8", 0, SPR_SPIK, 7, 1, {NULL}, 0, 0, S_SPIKEBALL1, 0}, // Elemental Shield's Spawn - {SPR_SFLM, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINFIRE2, 0}, // S_SPINFIRE1 - {SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_SPINFIRE3, 0}, // S_SPINFIRE2 - {SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SPINFIRE4, 0}, // S_SPINFIRE3 - {SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SPINFIRE5, 0}, // S_SPINFIRE4 - {SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_SPINFIRE6, 0}, // S_SPINFIRE5 - {SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_SPINFIRE1, 0}, // S_SPINFIRE6 - - {SPR_TFLM, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE2, 0}, // S_TEAM_SPINFIRE1 - {SPR_TFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE3, 0}, // S_TEAM_SPINFIRE2 - {SPR_TFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE4, 0}, // S_TEAM_SPINFIRE3 - {SPR_TFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE5, 0}, // S_TEAM_SPINFIRE4 - {SPR_TFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE6, 0}, // S_TEAM_SPINFIRE5 - {SPR_TFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE1, 0}, // S_TEAM_SPINFIRE6 + {"S_SPINFIRE1", 0, SPR_SFLM, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINFIRE2, 0}, + {"S_SPINFIRE2", 0, SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_SPINFIRE3, 0}, + {"S_SPINFIRE3", 0, SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SPINFIRE4, 0}, + {"S_SPINFIRE4", 0, SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SPINFIRE5, 0}, + {"S_SPINFIRE5", 0, SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_SPINFIRE6, 0}, + {"S_SPINFIRE6", 0, SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_SPINFIRE1, 0}, + + {"S_TEAM_SPINFIRE1", 0, SPR_TFLM, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE2, 0}, + {"S_TEAM_SPINFIRE2", 0, SPR_TFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE3, 0}, + {"S_TEAM_SPINFIRE3", 0, SPR_TFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE4, 0}, + {"S_TEAM_SPINFIRE4", 0, SPR_TFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE5, 0}, + {"S_TEAM_SPINFIRE5", 0, SPR_TFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE6, 0}, + {"S_TEAM_SPINFIRE6", 0, SPR_TFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE1, 0}, // Floor Spike - {SPR_USPK, 0,-1, {A_SpikeRetract}, 1, 0, S_SPIKE2, 0}, // S_SPIKE1 -- Fully extended - {SPR_USPK, 1, 2, {A_Pain}, 0, 0, S_SPIKE3, 0}, // S_SPIKE2 - {SPR_USPK, 2, 2, {NULL}, 0, 0, S_SPIKE4, 0}, // S_SPIKE3 - {SPR_USPK, 3,-1, {A_SpikeRetract}, 0, 0, S_SPIKE5, 0}, // S_SPIKE4 -- Fully retracted - {SPR_USPK, 2, 2, {A_Pain}, 0, 0, S_SPIKE6, 0}, // S_SPIKE5 - {SPR_USPK, 1, 2, {NULL}, 0, 0, S_SPIKE1, 0}, // S_SPIKE6 - {SPR_USPK, 4,-1, {NULL}, 0, 0, S_NULL, 0}, // S_SPIKED1 -- Busted spike particles - {SPR_USPK, 5,-1, {NULL}, 0, 0, S_NULL, 0}, // S_SPIKED2 + {"S_SPIKE1", 0, SPR_USPK, 0,-1, {A_SpikeRetract}, 1, 0, S_SPIKE2, 0}, // -- Fully extended + {"S_SPIKE2", 0, SPR_USPK, 1, 2, {A_Pain}, 0, 0, S_SPIKE3, 0}, + {"S_SPIKE3", 0, SPR_USPK, 2, 2, {NULL}, 0, 0, S_SPIKE4, 0}, + {"S_SPIKE4", 0, SPR_USPK, 3,-1, {A_SpikeRetract}, 0, 0, S_SPIKE5, 0}, // -- Fully retracted + {"S_SPIKE5", 0, SPR_USPK, 2, 2, {A_Pain}, 0, 0, S_SPIKE6, 0}, + {"S_SPIKE6", 0, SPR_USPK, 1, 2, {NULL}, 0, 0, S_SPIKE1, 0}, + {"S_SPIKED1", 0, SPR_USPK, 4,-1, {NULL}, 0, 0, S_NULL, 0}, // -- Busted spike particles + {"S_SPIKED2", 0, SPR_USPK, 5,-1, {NULL}, 0, 0, S_NULL, 0}, // Wall Spike - {SPR_WSPK, 0|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 1, 0, S_WALLSPIKE2, 0}, // S_WALLSPIKE1 -- Fully extended - {SPR_WSPK, 1|FF_PAPERSPRITE, 2, {A_Pain}, 0, 0, S_WALLSPIKE3, 0}, // S_WALLSPIKE2 - {SPR_WSPK, 2|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_WALLSPIKE4, 0}, // S_WALLSPIKE3 - {SPR_WSPK, 3|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 0, 0, S_WALLSPIKE5, 0}, // S_WALLSPIKE4 -- Fully retracted - {SPR_WSPK, 2|FF_PAPERSPRITE, 2, {A_Pain}, 0, 0, S_WALLSPIKE6, 0}, // S_WALLSPIKE5 - {SPR_WSPK, 1|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_WALLSPIKE1, 0}, // S_WALLSPIKE6 - {SPR_WSPB, 0|FF_PAPERSPRITE,-1, {NULL}, 0, 0, S_NULL, 0}, // S_WALLSPIKEBASE -- Base - {SPR_WSPK, 4,-1, {NULL}, 0, 0, S_NULL, 0}, // S_WALLSPIKED1 -- Busted spike particles - {SPR_WSPK, 5,-1, {NULL}, 0, 0, S_NULL, 0}, // S_WALLSPIKED2 + {"S_WALLSPIKE1", 0, SPR_WSPK, 0|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 1, 0, S_WALLSPIKE2, 0}, // -- Fully extended + {"S_WALLSPIKE2", 0, SPR_WSPK, 1|FF_PAPERSPRITE, 2, {A_Pain}, 0, 0, S_WALLSPIKE3, 0}, + {"S_WALLSPIKE3", 0, SPR_WSPK, 2|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_WALLSPIKE4, 0}, + {"S_WALLSPIKE4", 0, SPR_WSPK, 3|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 0, 0, S_WALLSPIKE5, 0}, // -- Fully retracted + {"S_WALLSPIKE5", 0, SPR_WSPK, 2|FF_PAPERSPRITE, 2, {A_Pain}, 0, 0, S_WALLSPIKE6, 0}, + {"S_WALLSPIKE6", 0, SPR_WSPK, 1|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_WALLSPIKE1, 0}, + {"S_WALLSPIKEBASE", 0, SPR_WSPB, 0|FF_PAPERSPRITE,-1, {NULL}, 0, 0, S_NULL, 0}, // -- Base + {"S_WALLSPIKED1", 0, SPR_WSPK, 4,-1, {NULL}, 0, 0, S_NULL, 0}, // -- Busted spike particles + {"S_WALLSPIKED2", 0, SPR_WSPK, 5,-1, {NULL}, 0, 0, S_NULL, 0}, // Starpost - {SPR_STPT, 0 , -1, {NULL}, 0, 0, S_NULL, 0}, // S_STARPOST_IDLE - {SPR_STPT, FF_ANIMATE|17, -1, {NULL}, 5, 1, S_NULL, 0}, // S_STARPOST_FLASH - {SPR_STPT, FF_ANIMATE|13, 2, {NULL}, 1, 1, S_STARPOST_SPIN, 0}, // S_STARPOST_STARTSPIN - {SPR_STPT, FF_ANIMATE|1 , 23, {NULL}, 11, 1, S_STARPOST_ENDSPIN, 0}, // S_STARPOST_SPIN - {SPR_STPT, FF_ANIMATE|15, 2, {NULL}, 1, 1, S_STARPOST_FLASH, 0}, // S_STARPOST_ENDSPIN + {"S_STARPOST_IDLE", 0, SPR_STPT, 0 , -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_STARPOST_FLASH", 0, SPR_STPT, FF_ANIMATE|17, -1, {NULL}, 5, 1, S_NULL, 0}, + {"S_STARPOST_STARTSPIN", 0, SPR_STPT, FF_ANIMATE|13, 2, {NULL}, 1, 1, S_STARPOST_SPIN, 0}, + {"S_STARPOST_SPIN", 0, SPR_STPT, FF_ANIMATE|1 , 23, {NULL}, 11, 1, S_STARPOST_ENDSPIN, 0}, + {"S_STARPOST_ENDSPIN", 0, SPR_STPT, FF_ANIMATE|15, 2, {NULL}, 1, 1, S_STARPOST_FLASH, 0}, // Big floating mine - {SPR_BMNE, 0, 2, {A_Look}, ((224<<FRACBITS)|1), 0, S_BIGMINE_IDLE, 0}, // S_BIGMINE_IDLE - {SPR_BMNE, 1, 2, {A_MineRange}, 112, 0, S_BIGMINE_ALERT2, 0}, // S_BIGMINE_ALERT1 - {SPR_BMNE, 2, 2, {A_MineRange}, 112, 0, S_BIGMINE_ALERT3, 0}, // S_BIGMINE_ALERT2 - {SPR_BMNE, 0, 1, {A_Look}, ((224<<FRACBITS)|1), 1, S_BIGMINE_IDLE, 0}, // S_BIGMINE_ALERT3 - {SPR_BMNE, 3, 25, {A_Pain}, 0, 0, S_BIGMINE_SET2, 0}, // S_BIGMINE_SET1 - {SPR_BMNE, 3, 10, {A_SetObjectFlags}, MF_SHOOTABLE, 1, S_BIGMINE_SET3, 0}, // S_BIGMINE_SET1 - {SPR_BMNE, 3, 1, {A_MineExplode}, 0, 0, S_BIGMINE_BLAST1, 0}, // S_BIGMINE_SET3 - {SPR_BMNB, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST2, 0}, // S_BIGMINE_BLAST1 - {SPR_BMNB, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST3, 0}, // S_BIGMINE_BLAST2 - {SPR_BMNB, 2|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST4, 0}, // S_BIGMINE_BLAST3 - {SPR_BMNB, 3|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST5, 0}, // S_BIGMINE_BLAST4 - {SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // S_BIGMINE_BLAST5 + {"S_BIGMINE_IDLE", 0, SPR_BMNE, 0, 2, {A_Look}, ((224<<FRACBITS)|1), 0, S_BIGMINE_IDLE, 0}, + {"S_BIGMINE_ALERT1", 0, SPR_BMNE, 1, 2, {A_MineRange}, 112, 0, S_BIGMINE_ALERT2, 0}, + {"S_BIGMINE_ALERT2", 0, SPR_BMNE, 2, 2, {A_MineRange}, 112, 0, S_BIGMINE_ALERT3, 0}, + {"S_BIGMINE_ALERT3", 0, SPR_BMNE, 0, 1, {A_Look}, ((224<<FRACBITS)|1), 1, S_BIGMINE_IDLE, 0}, + {"S_BIGMINE_SET1", 0, SPR_BMNE, 3, 25, {A_Pain}, 0, 0, S_BIGMINE_SET2, 0}, + {"S_BIGMINE_SET1", 0, SPR_BMNE, 3, 10, {A_SetObjectFlags}, MF_SHOOTABLE, 1, S_BIGMINE_SET3, 0}, + {"S_BIGMINE_SET3", 0, SPR_BMNE, 3, 1, {A_MineExplode}, 0, 0, S_BIGMINE_BLAST1, 0}, + {"S_BIGMINE_BLAST1", 0, SPR_BMNB, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST2, 0}, + {"S_BIGMINE_BLAST2", 0, SPR_BMNB, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST3, 0}, + {"S_BIGMINE_BLAST3", 0, SPR_BMNB, 2|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST4, 0}, + {"S_BIGMINE_BLAST4", 0, SPR_BMNB, 3|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST5, 0}, + {"S_BIGMINE_BLAST5", 0, SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // Cannon launcher - {SPR_NULL, 0, 1, {A_FindTarget}, MT_PLAYER, 0, S_CANNONLAUNCHER2, 0}, // S_CANNONLAUNCHER1 - {SPR_NULL, 0, 1, {A_LobShot}, MT_CANNONBALL, 4*TICRATE, S_CANNONLAUNCHER3, 0}, // S_CANNONLAUNCHER2 - {SPR_NULL, 0, 2, {A_SetRandomTics}, TICRATE/2, 3*TICRATE, S_CANNONLAUNCHER1, 0}, // S_CANNONLAUNCHER3 + {"S_CANNONLAUNCHER1", 0, SPR_NULL, 0, 1, {A_FindTarget}, MT_PLAYER, 0, S_CANNONLAUNCHER2, 0}, + {"S_CANNONLAUNCHER2", 0, SPR_NULL, 0, 1, {A_LobShot}, MT_CANNONBALL, 4*TICRATE, S_CANNONLAUNCHER3, 0}, + {"S_CANNONLAUNCHER3", 0, SPR_NULL, 0, 2, {A_SetRandomTics}, TICRATE/2, 3*TICRATE, S_CANNONLAUNCHER1, 0}, // Monitor Miscellany - {SPR_NSPK, 0, 16, {NULL}, 0, 0, S_BOXSPARKLE2, 0}, // S_BOXSPARKLE1 - {SPR_NSPK, 1, 12, {NULL}, 0, 0, S_BOXSPARKLE3, 0}, // S_BOXSPARKLE2 - {SPR_NSPK, 2, 8, {NULL}, 0, 0, S_BOXSPARKLE4, 0}, // S_BOXSPARKLE3 - {SPR_NSPK, 3, 4, {NULL}, 0, 0, S_NULL, 0}, // S_BOXSPARKLE4 - - {SPR_MSTV, 0, 1, {NULL}, 0, 0, S_SPAWNSTATE, 0}, // S_BOX_FLICKER - {SPR_MSTV, 0, 4, {A_MonitorPop}, 0, 0, S_BOX_POP2, 0}, // S_BOX_POP1 - {SPR_MSTV, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BOX_POP2 - - {SPR_XLTV, 0, 1, {NULL}, 0, 0, S_SPAWNSTATE, 0}, // S_GOLDBOX_FLICKER - {SPR_XLTV, 1, 89, {A_GoldMonitorPop}, 0, 0, S_GOLDBOX_OFF2, 0}, // S_GOLDBOX_OFF1 - {SPR_XLTV, 2, 4, {A_PlayAttackSound}, 0, 0, S_GOLDBOX_OFF3, 0}, // S_GOLDBOX_OFF2 - {SPR_XLTV, 3, 4, {NULL}, 0, 0, S_GOLDBOX_OFF4, 0}, // S_GOLDBOX_OFF3 - {SPR_XLTV, 4, 4, {NULL}, 0, 0, S_GOLDBOX_OFF5, 0}, // S_GOLDBOX_OFF4 - {SPR_XLTV, 5, 2, {NULL}, 0, 0, S_GOLDBOX_OFF6, 0}, // S_GOLDBOX_OFF5 - {SPR_XLTV, 6, 2, {NULL}, 0, 0, S_GOLDBOX_OFF7, 0}, // S_GOLDBOX_OFF6 - {SPR_XLTV, 6, 0, {A_GoldMonitorRestore}, 0, 0, S_SPAWNSTATE, 0}, // S_GOLDBOX_OFF7 + {"S_BOXSPARKLE1", 0, SPR_NSPK, 0, 16, {NULL}, 0, 0, S_BOXSPARKLE2, 0}, + {"S_BOXSPARKLE2", 0, SPR_NSPK, 1, 12, {NULL}, 0, 0, S_BOXSPARKLE3, 0}, + {"S_BOXSPARKLE3", 0, SPR_NSPK, 2, 8, {NULL}, 0, 0, S_BOXSPARKLE4, 0}, + {"S_BOXSPARKLE4", 0, SPR_NSPK, 3, 4, {NULL}, 0, 0, S_NULL, 0}, + + {"S_BOX_FLICKER", 0, SPR_MSTV, 0, 1, {NULL}, 0, 0, S_SPAWNSTATE, 0}, + {"S_BOX_POP1", 0, SPR_MSTV, 0, 4, {A_MonitorPop}, 0, 0, S_BOX_POP2, 0}, + {"S_BOX_POP2", 0, SPR_MSTV, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + + {"S_GOLDBOX_FLICKER", 0, SPR_XLTV, 0, 1, {NULL}, 0, 0, S_SPAWNSTATE, 0}, + {"S_GOLDBOX_OFF1", 0, SPR_XLTV, 1, 89, {A_GoldMonitorPop}, 0, 0, S_GOLDBOX_OFF2, 0}, + {"S_GOLDBOX_OFF2", 0, SPR_XLTV, 2, 4, {A_PlayAttackSound}, 0, 0, S_GOLDBOX_OFF3, 0}, + {"S_GOLDBOX_OFF3", 0, SPR_XLTV, 3, 4, {NULL}, 0, 0, S_GOLDBOX_OFF4, 0}, + {"S_GOLDBOX_OFF4", 0, SPR_XLTV, 4, 4, {NULL}, 0, 0, S_GOLDBOX_OFF5, 0}, + {"S_GOLDBOX_OFF5", 0, SPR_XLTV, 5, 2, {NULL}, 0, 0, S_GOLDBOX_OFF6, 0}, + {"S_GOLDBOX_OFF6", 0, SPR_XLTV, 6, 2, {NULL}, 0, 0, S_GOLDBOX_OFF7, 0}, + {"S_GOLDBOX_OFF7", 0, SPR_XLTV, 6, 0, {A_GoldMonitorRestore}, 0, 0, S_SPAWNSTATE, 0}, // Monitor States (one per box) - {SPR_TVMY, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_MYSTERY_BOX - {SPR_TVRI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_RING_BOX - {SPR_TVPI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_PITY_BOX - {SPR_TVAT, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_ATTRACT_BOX - {SPR_TVFO, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_FORCE_BOX - {SPR_TVAR, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_ARMAGEDDON_BOX - {SPR_TVWW, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_WHIRLWIND_BOX - {SPR_TVEL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_ELEMENTAL_BOX - {SPR_TVSS, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_SNEAKERS_BOX - {SPR_TVIV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_INVULN_BOX - {SPR_TV1U, 0, 2, {A_1upThinker}, 0, 0, S_BOX_FLICKER, 0}, // S_1UP_BOX - {SPR_TVEG, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_EGGMAN_BOX - {SPR_TVMX, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_MIXUP_BOX - {SPR_TVGV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_GRAVITY_BOX - {SPR_TVRC, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_RECYCLER_BOX - {SPR_TV1K, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_SCORE1K_BOX - {SPR_TVTK, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_SCORE10K_BOX - {SPR_TVFL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_FLAMEAURA_BOX - {SPR_TVBB, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_BUBBLEWRAP_BOX - {SPR_TVZP, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // S_THUNDERCOIN_BOX + {"S_MYSTERY_BOX", 0, SPR_TVMY, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_RING_BOX", 0, SPR_TVRI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_PITY_BOX", 0, SPR_TVPI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_ATTRACT_BOX", 0, SPR_TVAT, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_FORCE_BOX", 0, SPR_TVFO, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_ARMAGEDDON_BOX", 0, SPR_TVAR, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_WHIRLWIND_BOX", 0, SPR_TVWW, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_ELEMENTAL_BOX", 0, SPR_TVEL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_SNEAKERS_BOX", 0, SPR_TVSS, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_INVULN_BOX", 0, SPR_TVIV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_1UP_BOX", 0, SPR_TV1U, 0, 2, {A_1upThinker}, 0, 0, S_BOX_FLICKER, 0}, + {"S_EGGMAN_BOX", 0, SPR_TVEG, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_MIXUP_BOX", 0, SPR_TVMX, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_GRAVITY_BOX", 0, SPR_TVGV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_RECYCLER_BOX", 0, SPR_TVRC, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_SCORE1K_BOX", 0, SPR_TV1K, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_SCORE10K_BOX", 0, SPR_TVTK, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_FLAMEAURA_BOX", 0, SPR_TVFL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_BUBBLEWRAP_BOX", 0, SPR_TVBB, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, + {"S_THUNDERCOIN_BOX", 0, SPR_TVZP, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER, 0}, // Gold Repeat Monitor States (one per box) - {SPR_TVPI, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_PITY_GOLDBOX - {SPR_TVAT, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_ATTRACT_GOLDBOX - {SPR_TVFO, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_FORCE_GOLDBOX - {SPR_TVAR, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_ARMAGEDDON_GOLDBOX - {SPR_TVWW, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_WHIRLWIND_GOLDBOX - {SPR_TVEL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_ELEMENTAL_GOLDBOX - {SPR_TVSS, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_SNEAKERS_GOLDBOX - {SPR_TVIV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_INVULN_GOLDBOX - {SPR_TVEG, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_EGGMAN_GOLDBOX - {SPR_TVGV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_GRAVITY_GOLDBOX - {SPR_TVFL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_FLAMEAURA_GOLDBOX - {SPR_TVBB, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_BUBBLEWRAP_GOLDBOX - {SPR_TVZP, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // S_THUNDERCOIN_GOLDBOX + {"S_PITY_GOLDBOX", 0, SPR_TVPI, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_ATTRACT_GOLDBOX", 0, SPR_TVAT, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_FORCE_GOLDBOX", 0, SPR_TVFO, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_ARMAGEDDON_GOLDBOX", 0, SPR_TVAR, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_WHIRLWIND_GOLDBOX", 0, SPR_TVWW, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_ELEMENTAL_GOLDBOX", 0, SPR_TVEL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_SNEAKERS_GOLDBOX", 0, SPR_TVSS, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_INVULN_GOLDBOX", 0, SPR_TVIV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_EGGMAN_GOLDBOX", 0, SPR_TVEG, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_GRAVITY_GOLDBOX", 0, SPR_TVGV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_FLAMEAURA_GOLDBOX", 0, SPR_TVFL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_BUBBLEWRAP_GOLDBOX", 0, SPR_TVBB, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, + {"S_THUNDERCOIN_GOLDBOX", 0, SPR_TVZP, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER, 0}, // Team Ring Boxes (these are special) - {SPR_TRRI, 0, 2, {NULL}, 0, 0, S_RING_REDBOX2, 0}, // S_RING_REDBOX1 - {SPR_TRRI, 1, 1, {NULL}, 0, 0, S_RING_REDBOX1, 0}, // S_RING_REDBOX2 - {SPR_TRRI, 1, 4, {A_MonitorPop}, 0, 0, S_REDBOX_POP2, 0}, // S_REDBOX_POP1 - {SPR_TRRI, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_REDBOX_POP2 + {"S_RING_REDBOX1", 0, SPR_TRRI, 0, 2, {NULL}, 0, 0, S_RING_REDBOX2, 0}, + {"S_RING_REDBOX2", 0, SPR_TRRI, 1, 1, {NULL}, 0, 0, S_RING_REDBOX1, 0}, + {"S_REDBOX_POP1", 0, SPR_TRRI, 1, 4, {A_MonitorPop}, 0, 0, S_REDBOX_POP2, 0}, + {"S_REDBOX_POP2", 0, SPR_TRRI, 2, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_TBRI, 0, 2, {NULL}, 0, 0, S_RING_BLUEBOX2, 0}, // S_RING_BLUEBOX1 - {SPR_TBRI, 1, 1, {NULL}, 0, 0, S_RING_BLUEBOX1, 0}, // S_RING_BLUEBOX2 - {SPR_TBRI, 1, 4, {A_MonitorPop}, 0, 0, S_BLUEBOX_POP2, 0}, // S_BLUEBOX_POP1 - {SPR_TBRI, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUEBOX_POP2 + {"S_RING_BLUEBOX1", 0, SPR_TBRI, 0, 2, {NULL}, 0, 0, S_RING_BLUEBOX2, 0}, + {"S_RING_BLUEBOX2", 0, SPR_TBRI, 1, 1, {NULL}, 0, 0, S_RING_BLUEBOX1, 0}, + {"S_BLUEBOX_POP1", 0, SPR_TBRI, 1, 4, {A_MonitorPop}, 0, 0, S_BLUEBOX_POP2, 0}, + {"S_BLUEBOX_POP2", 0, SPR_TBRI, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // Box Icons -- 2 states each, animation and action - {SPR_TVRI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RING_ICON2, 0}, // S_RING_ICON1 - {SPR_TVRI, 2, 18, {A_RingBox}, 0, 0, S_NULL, 0}, // S_RING_ICON2 + {"S_RING_ICON1", 0, SPR_TVRI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RING_ICON2, 0}, + {"S_RING_ICON2", 0, SPR_TVRI, 2, 18, {A_RingBox}, 0, 0, S_NULL, 0}, - {SPR_TVPI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_PITY_ICON2, 0}, // S_PITY_ICON1 - {SPR_TVPI, 2, 18, {A_GiveShield}, SH_PITY, 0, S_NULL, 0}, // S_PITY_ICON2 + {"S_PITY_ICON1", 0, SPR_TVPI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_PITY_ICON2, 0}, + {"S_PITY_ICON2", 0, SPR_TVPI, 2, 18, {A_GiveShield}, SH_PITY, 0, S_NULL, 0}, - {SPR_TVAT, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ATTRACT_ICON2, 0}, // S_ATTRACT_ICON1 - {SPR_TVAT, 2, 18, {A_GiveShield}, SH_ATTRACT, 0, S_NULL, 0}, // S_ATTRACT_ICON2 + {"S_ATTRACT_ICON1", 0, SPR_TVAT, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ATTRACT_ICON2, 0}, + {"S_ATTRACT_ICON2", 0, SPR_TVAT, 2, 18, {A_GiveShield}, SH_ATTRACT, 0, S_NULL, 0}, - {SPR_TVFO, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FORCE_ICON2, 0}, // S_FORCE_ICON1 - {SPR_TVFO, 2, 18, {A_GiveShield}, SH_FORCE|1, 0, S_NULL, 0}, // S_FORCE_ICON2 + {"S_FORCE_ICON1", 0, SPR_TVFO, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FORCE_ICON2, 0}, + {"S_FORCE_ICON2", 0, SPR_TVFO, 2, 18, {A_GiveShield}, SH_FORCE|1, 0, S_NULL, 0}, - {SPR_TVAR, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ARMAGEDDON_ICON2, 0}, // S_ARMAGEDDON_ICON1 - {SPR_TVAR, 2, 18, {A_GiveShield}, SH_ARMAGEDDON, 0, S_NULL, 0}, // S_ARMAGEDDON_ICON2 + {"S_ARMAGEDDON_ICON1", 0, SPR_TVAR, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ARMAGEDDON_ICON2, 0}, + {"S_ARMAGEDDON_ICON2", 0, SPR_TVAR, 2, 18, {A_GiveShield}, SH_ARMAGEDDON, 0, S_NULL, 0}, - {SPR_TVWW, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_WHIRLWIND_ICON2, 0}, // S_WHIRLWIND_ICON1 - {SPR_TVWW, 2, 18, {A_GiveShield}, SH_WHIRLWIND, 0, S_NULL, 0}, // S_WHIRLWIND_ICON2 + {"S_WHIRLWIND_ICON1", 0, SPR_TVWW, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_WHIRLWIND_ICON2, 0}, + {"S_WHIRLWIND_ICON2", 0, SPR_TVWW, 2, 18, {A_GiveShield}, SH_WHIRLWIND, 0, S_NULL, 0}, - {SPR_TVEL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ELEMENTAL_ICON2, 0}, // S_ELEMENTAL_ICON1 - {SPR_TVEL, 2, 18, {A_GiveShield}, SH_ELEMENTAL, 0, S_NULL, 0}, // S_ELEMENTAL_ICON2 + {"S_ELEMENTAL_ICON1", 0, SPR_TVEL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ELEMENTAL_ICON2, 0}, + {"S_ELEMENTAL_ICON2", 0, SPR_TVEL, 2, 18, {A_GiveShield}, SH_ELEMENTAL, 0, S_NULL, 0}, - {SPR_TVSS, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SNEAKERS_ICON2, 0}, // S_SNEAKERS_ICON1 - {SPR_TVSS, 2, 18, {A_SuperSneakers}, 0, 0, S_NULL, 0}, // S_SNEAKERS_ICON2 + {"S_SNEAKERS_ICON1", 0, SPR_TVSS, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SNEAKERS_ICON2, 0}, + {"S_SNEAKERS_ICON2", 0, SPR_TVSS, 2, 18, {A_SuperSneakers}, 0, 0, S_NULL, 0}, - {SPR_TVIV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_INVULN_ICON2, 0}, // S_INVULN_ICON1 - {SPR_TVIV, 2, 18, {A_Invincibility}, 0, 0, S_NULL, 0}, // S_INVULN_ICON2 + {"S_INVULN_ICON1", 0, SPR_TVIV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_INVULN_ICON2, 0}, + {"S_INVULN_ICON2", 0, SPR_TVIV, 2, 18, {A_Invincibility}, 0, 0, S_NULL, 0}, - {SPR_TV1U, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_1UP_ICON2, 0}, // S_1UP_ICON1 - {SPR_TV1U, 2, 18, {A_ExtraLife}, 0, 0, S_NULL, 0}, // S_1UP_ICON2 + {"S_1UP_ICON1", 0, SPR_TV1U, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_1UP_ICON2, 0}, + {"S_1UP_ICON2", 0, SPR_TV1U, 2, 18, {A_ExtraLife}, 0, 0, S_NULL, 0}, - {SPR_TVEG, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_EGGMAN_ICON2, 0}, // S_EGGMAN_ICON1 - {SPR_TVEG, 2, 18, {A_EggmanBox}, 0, 0, S_NULL, 0}, // S_EGGMAN_ICON2 + {"S_EGGMAN_ICON1", 0, SPR_TVEG, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_EGGMAN_ICON2, 0}, + {"S_EGGMAN_ICON2", 0, SPR_TVEG, 2, 18, {A_EggmanBox}, 0, 0, S_NULL, 0}, - {SPR_TVMX, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_MIXUP_ICON2, 0}, // S_MIXUP_ICON1 - {SPR_TVMX, 2, 18, {A_MixUp}, 0, 0, S_NULL, 0}, // S_MIXUP_ICON2 + {"S_MIXUP_ICON1", 0, SPR_TVMX, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_MIXUP_ICON2, 0}, + {"S_MIXUP_ICON2", 0, SPR_TVMX, 2, 18, {A_MixUp}, 0, 0, S_NULL, 0}, - {SPR_TVGV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_GRAVITY_ICON2, 0}, // S_GRAVITY_ICON1 - {SPR_TVGV, 2, 18, {A_GravityBox}, 0, 0, S_NULL, 0}, // S_GRAVITY_ICON2 + {"S_GRAVITY_ICON1", 0, SPR_TVGV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_GRAVITY_ICON2, 0}, + {"S_GRAVITY_ICON2", 0, SPR_TVGV, 2, 18, {A_GravityBox}, 0, 0, S_NULL, 0}, - {SPR_TVRC, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RECYCLER_ICON2, 0}, // S_RECYCLER_ICON1 - {SPR_TVRC, 2, 18, {A_RecyclePowers}, 0, 0, S_NULL, 0}, // S_RECYCLER_ICON2 + {"S_RECYCLER_ICON1", 0, SPR_TVRC, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RECYCLER_ICON2, 0}, + {"S_RECYCLER_ICON2", 0, SPR_TVRC, 2, 18, {A_RecyclePowers}, 0, 0, S_NULL, 0}, - {SPR_TV1K, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE1K_ICON2, 0}, // S_SCORE1K_ICON1 - {SPR_TV1K, 2, 18, {A_AwardScore}, 0, 0, S_NULL, 0}, // S_SCORE1K_ICON2 + {"S_SCORE1K_ICON1", 0, SPR_TV1K, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE1K_ICON2, 0}, + {"S_SCORE1K_ICON2", 0, SPR_TV1K, 2, 18, {A_AwardScore}, 0, 0, S_NULL, 0}, - {SPR_TVTK, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE10K_ICON2, 0}, // S_SCORE10K_ICON1 - {SPR_TVTK, 2, 18, {A_AwardScore}, 0, 0, S_NULL, 0}, // S_SCORE10K_ICON2 + {"S_SCORE10K_ICON1", 0, SPR_TVTK, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE10K_ICON2, 0}, + {"S_SCORE10K_ICON2", 0, SPR_TVTK, 2, 18, {A_AwardScore}, 0, 0, S_NULL, 0}, - {SPR_TVFL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FLAMEAURA_ICON2, 0}, // S_FLAMEAURA_ICON1 - {SPR_TVFL, 2, 18, {A_GiveShield}, SH_FLAMEAURA, 0, S_NULL, 0}, // S_FLAMEAURA_ICON2 + {"S_FLAMEAURA_ICON1", 0, SPR_TVFL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FLAMEAURA_ICON2, 0}, + {"S_FLAMEAURA_ICON2", 0, SPR_TVFL, 2, 18, {A_GiveShield}, SH_FLAMEAURA, 0, S_NULL, 0}, - {SPR_TVBB, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_BUBBLEWRAP_ICON2, 0}, // S_BUBBLEWRAP_ICON1 - {SPR_TVBB, 2, 18, {A_GiveShield}, SH_BUBBLEWRAP, 0, S_NULL, 0}, // S_BUBBLEWRAP_ICON2 + {"S_BUBBLEWRAP_ICON1", 0, SPR_TVBB, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_BUBBLEWRAP_ICON2, 0}, + {"S_BUBBLEWRAP_ICON2", 0, SPR_TVBB, 2, 18, {A_GiveShield}, SH_BUBBLEWRAP, 0, S_NULL, 0}, - {SPR_TVZP, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_THUNDERCOIN_ICON2, 0}, // S_THUNDERCOIN_ICON1 - {SPR_TVZP, 2, 18, {A_GiveShield}, SH_THUNDERCOIN, 0, S_NULL, 0}, // S_THUNDERCOIN_ICON2 + {"S_THUNDERCOIN_ICON1", 0, SPR_TVZP, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_THUNDERCOIN_ICON2, 0}, + {"S_THUNDERCOIN_ICON2", 0, SPR_TVZP, 2, 18, {A_GiveShield}, SH_THUNDERCOIN, 0, S_NULL, 0}, // --- - {SPR_MISL, FF_FULLBRIGHT, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_ROCKET, 0}, // S_ROCKET + {"S_ROCKET", 0, SPR_MISL, FF_FULLBRIGHT, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_ROCKET, 0}, - {SPR_LASR, FF_FULLBRIGHT|0, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LASER - {SPR_LASR, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LASER2 - {SPR_LASR, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LASERFLASH + {"S_LASER", 0, SPR_LASR, FF_FULLBRIGHT|0, 2, {NULL}, 0, 0, S_NULL, 0}, + {"S_LASER2", 0, SPR_LASR, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_NULL, 0}, + {"S_LASERFLASH", 0, SPR_LASR, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL, 0}, - {SPR_LASF, FF_FULLBRIGHT|0, 2, {NULL}, 0, 0, S_LASERFLAME2, 0}, // S_LASERFLAME1 - {SPR_LASF, FF_FULLBRIGHT|1, 1, {A_ChangeHeight}, 156*FRACUNIT, 3, S_LASERFLAME3, 0}, // S_LASERFLAME2 - {SPR_LASF, FF_FULLBRIGHT|2, 0, {A_ChangeHeight}, 32*FRACUNIT, 3, S_LASERFLAME4, 0}, // S_LASERFLAME3 - {SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|2, 4, {NULL}, 1, 2, S_LASERFLAME5, 0}, // S_LASERFLAME4 - {SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|4, 28, {NULL}, 2, 2, S_NULL, 0}, // S_LASERFLAME5 + {"S_LASERFLAME1", 0, SPR_LASF, FF_FULLBRIGHT|0, 2, {NULL}, 0, 0, S_LASERFLAME2, 0}, + {"S_LASERFLAME2", 0, SPR_LASF, FF_FULLBRIGHT|1, 1, {A_ChangeHeight}, 156*FRACUNIT, 3, S_LASERFLAME3, 0}, + {"S_LASERFLAME3", 0, SPR_LASF, FF_FULLBRIGHT|2, 0, {A_ChangeHeight}, 32*FRACUNIT, 3, S_LASERFLAME4, 0}, + {"S_LASERFLAME4", 0, SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|2, 4, {NULL}, 1, 2, S_LASERFLAME5, 0}, + {"S_LASERFLAME5", 0, SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|4, 28, {NULL}, 2, 2, S_NULL, 0}, - {SPR_TORP, 0, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_TORPEDO, 0}, // S_TORPEDO + {"S_TORPEDO", 0, SPR_TORP, 0, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_TORPEDO, 0}, - {SPR_ENRG, FF_FULLBRIGHT|FF_TRANS30, 1, {NULL}, 0, 0, S_ENERGYBALL2, 0}, // S_ENERGYBALL1 - {SPR_NULL, 0, 1, {NULL}, 0, 0, S_ENERGYBALL1, 0}, // S_ENERGYBALL2 + {"S_ENERGYBALL1", 0, SPR_ENRG, FF_FULLBRIGHT|FF_TRANS30, 1, {NULL}, 0, 0, S_ENERGYBALL2, 0}, + {"S_ENERGYBALL2", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_ENERGYBALL1, 0}, // Skim Mine (also dropped by Jetty-Syn bomber) - {SPR_MINE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MINE1 - {SPR_MINE, 1, 1, {A_Fall}, 0, 0, S_MINE_BOOM2, 0}, // S_MINE_BOOM1 - {SPR_MINE, 2, 3, {A_Scream}, 0, 0, S_MINE_BOOM3, 0}, // S_MINE_BOOM2 - {SPR_MINE, 3, 3, {A_Explode}, 0, 0, S_MINE_BOOM4, 0}, // S_MINE_BOOM3 - {SPR_MINE, 4, 3, {NULL}, 0, 0, S_NULL, 0}, // S_MINE_BOOM4 + {"S_MINE1", 0, SPR_MINE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_MINE_BOOM1", 0, SPR_MINE, 1, 1, {A_Fall}, 0, 0, S_MINE_BOOM2, 0}, + {"S_MINE_BOOM2", 0, SPR_MINE, 2, 3, {A_Scream}, 0, 0, S_MINE_BOOM3, 0}, + {"S_MINE_BOOM3", 0, SPR_MINE, 3, 3, {A_Explode}, 0, 0, S_MINE_BOOM4, 0}, + {"S_MINE_BOOM4", 0, SPR_MINE, 4, 3, {NULL}, 0, 0, S_NULL, 0}, // Jetty-Syn Bullet - {SPR_JBUL, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_JETBULLET2, 0}, // S_JETBULLET1 - {SPR_JBUL, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_JETBULLET1, 0}, // S_JETBULLET2 + {"S_JETBULLET1", 0, SPR_JBUL, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_JETBULLET2, 0}, + {"S_JETBULLET2", 0, SPR_JBUL, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_JETBULLET1, 0}, - {SPR_TRLS, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_TURRETLASER, 0}, // S_TURRETLASER - {SPR_TRLS, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TURRETLASEREXPLODE2, 0}, // S_TURRETLASEREXPLODE1 - {SPR_TRLS, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL, 0}, // S_TURRETLASEREXPLODE2 + {"S_TURRETLASER", 0, SPR_TRLS, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_TURRETLASER, 0}, + {"S_TURRETLASEREXPLODE1", 0, SPR_TRLS, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TURRETLASEREXPLODE2, 0}, + {"S_TURRETLASEREXPLODE2", 0, SPR_TRLS, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL, 0}, - {SPR_CBLL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CANNONBALL1 + {"S_CANNONBALL1", 0, SPR_CBLL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_AROW, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ARROW - {SPR_AROW, FF_ANIMATE, TICRATE, {A_ArrowBonks}, 7, 2, S_NULL, 0}, // S_ARROWBONK + {"S_ARROW", 0, SPR_AROW, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_ARROWBONK", 0, SPR_AROW, FF_ANIMATE, TICRATE, {A_ArrowBonks}, 7, 2, S_NULL, 0}, - {SPR_CFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 5, 2, S_NULL, 0}, // S_DEMONFIRE + {"S_DEMONFIRE", 0, SPR_CFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 5, 2, S_NULL, 0}, - {SPR_LETR, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LETTER + {"S_LETTER", 0, SPR_LETR, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // Tutorial scenery - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF2, 0}, // S_TUTORIALLEAF1 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF3, 0}, // S_TUTORIALLEAF2 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF4, 0}, // S_TUTORIALLEAF3 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF5, 0}, // S_TUTORIALLEAF4 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF6, 0}, // S_TUTORIALLEAF5 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF7, 0}, // S_TUTORIALLEAF6 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF8, 0}, // S_TUTORIALLEAF7 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF9, 0}, // S_TUTORIALLEAF8 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF10, 0}, // S_TUTORIALLEAF9 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF11, 0}, // S_TUTORIALLEAF10 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF12, 0}, // S_TUTORIALLEAF11 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF13, 0}, // S_TUTORIALLEAF12 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF14, 0}, // S_TUTORIALLEAF13 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF15, 0}, // S_TUTORIALLEAF14 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF16, 0}, // S_TUTORIALLEAF15 - {SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF1, 0}, // S_TUTORIALLEAF16 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER2, 0}, // S_TUTORIALFLOWER1 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER3, 0}, // S_TUTORIALFLOWER2 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER4, 0}, // S_TUTORIALFLOWER3 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER5, 0}, // S_TUTORIALFLOWER4 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER6, 0}, // S_TUTORIALFLOWER5 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER7, 0}, // S_TUTORIALFLOWER6 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER8, 0}, // S_TUTORIALFLOWER7 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER9, 0}, // S_TUTORIALFLOWER8 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER10, 0}, // S_TUTORIALFLOWER9 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER11, 0}, // S_TUTORIALFLOWER10 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER12, 0}, // S_TUTORIALFLOWER11 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER13, 0}, // S_TUTORIALFLOWER12 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER14, 0}, // S_TUTORIALFLOWER13 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER15, 0}, // S_TUTORIALFLOWER14 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER16, 0}, // S_TUTORIALFLOWER15 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER1, 0}, // S_TUTORIALFLOWER16 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF2, 0}, // S_TUTORIALFLOWERF1 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF3, 0}, // S_TUTORIALFLOWERF2 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF4, 0}, // S_TUTORIALFLOWERF3 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF5, 0}, // S_TUTORIALFLOWERF4 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF6, 0}, // S_TUTORIALFLOWERF5 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF7, 0}, // S_TUTORIALFLOWERF6 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF8, 0}, // S_TUTORIALFLOWERF7 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF9, 0}, // S_TUTORIALFLOWERF8 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF10, 0}, // S_TUTORIALFLOWERF9 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF11, 0}, // S_TUTORIALFLOWERF10 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF12, 0}, // S_TUTORIALFLOWERF11 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF13, 0}, // S_TUTORIALFLOWERF12 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF14, 0}, // S_TUTORIALFLOWERF13 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF15, 0}, // S_TUTORIALFLOWERF14 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF16, 0}, // S_TUTORIALFLOWERF15 - {SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF1, 0}, // S_TUTORIALFLOWERF16 + {"S_TUTORIALLEAF1", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF2, 0}, + {"S_TUTORIALLEAF2", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF3, 0}, + {"S_TUTORIALLEAF3", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF4, 0}, + {"S_TUTORIALLEAF4", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF5, 0}, + {"S_TUTORIALLEAF5", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF6, 0}, + {"S_TUTORIALLEAF6", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF7, 0}, + {"S_TUTORIALLEAF7", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF8, 0}, + {"S_TUTORIALLEAF8", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF9, 0}, + {"S_TUTORIALLEAF9", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF10, 0}, + {"S_TUTORIALLEAF10", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF11, 0}, + {"S_TUTORIALLEAF11", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF12, 0}, + {"S_TUTORIALLEAF12", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF13, 0}, + {"S_TUTORIALLEAF13", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF14, 0}, + {"S_TUTORIALLEAF14", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF15, 0}, + {"S_TUTORIALLEAF15", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF16, 0}, + {"S_TUTORIALLEAF16", 0, SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF1, 0}, + {"S_TUTORIALFLOWER1", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER2, 0}, + {"S_TUTORIALFLOWER2", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER3, 0}, + {"S_TUTORIALFLOWER3", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER4, 0}, + {"S_TUTORIALFLOWER4", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER5, 0}, + {"S_TUTORIALFLOWER5", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER6, 0}, + {"S_TUTORIALFLOWER6", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER7, 0}, + {"S_TUTORIALFLOWER7", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER8, 0}, + {"S_TUTORIALFLOWER8", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER9, 0}, + {"S_TUTORIALFLOWER9", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER10, 0}, + {"S_TUTORIALFLOWER10", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER11, 0}, + {"S_TUTORIALFLOWER11", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER12, 0}, + {"S_TUTORIALFLOWER12", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER13, 0}, + {"S_TUTORIALFLOWER13", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER14, 0}, + {"S_TUTORIALFLOWER14", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER15, 0}, + {"S_TUTORIALFLOWER15", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER16, 0}, + {"S_TUTORIALFLOWER16", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER1, 0}, + {"S_TUTORIALFLOWERF1", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF2, 0}, + {"S_TUTORIALFLOWERF2", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF3, 0}, + {"S_TUTORIALFLOWERF3", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF4, 0}, + {"S_TUTORIALFLOWERF4", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF5, 0}, + {"S_TUTORIALFLOWERF5", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF6, 0}, + {"S_TUTORIALFLOWERF6", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF7, 0}, + {"S_TUTORIALFLOWERF7", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF8, 0}, + {"S_TUTORIALFLOWERF8", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF9, 0}, + {"S_TUTORIALFLOWERF9", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF10, 0}, + {"S_TUTORIALFLOWERF10", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF11, 0}, + {"S_TUTORIALFLOWERF11", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF12, 0}, + {"S_TUTORIALFLOWERF12", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF13, 0}, + {"S_TUTORIALFLOWERF13", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF14, 0}, + {"S_TUTORIALFLOWERF14", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF15, 0}, + {"S_TUTORIALFLOWERF15", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF16, 0}, + {"S_TUTORIALFLOWERF16", 0, SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF1, 0}, // GFZ flowers - {SPR_FWR1, FF_ANIMATE, -1, {NULL}, 7, 3, S_NULL, 0}, // S_GFZFLOWERA - {SPR_FWR2, FF_ANIMATE, -1, {NULL}, 19, 3, S_NULL, 0}, // S_GFZFLOWERB - {SPR_FWR3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_GFZFLOWERC + {"S_GFZFLOWERA", 0, SPR_FWR1, FF_ANIMATE, -1, {NULL}, 7, 3, S_NULL, 0}, + {"S_GFZFLOWERB", 0, SPR_FWR2, FF_ANIMATE, -1, {NULL}, 19, 3, S_NULL, 0}, + {"S_GFZFLOWERC", 0, SPR_FWR3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, - {SPR_BUS3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUEBERRYBUSH - {SPR_BUS1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BERRYBUSH - {SPR_BUS2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BUSH + {"S_BLUEBERRYBUSH", 0, SPR_BUS3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BERRYBUSH", 0, SPR_BUS1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BUSH", 0, SPR_BUS2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Trees - {SPR_TRE1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_GFZTREE - {SPR_TRE1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_GFZBERRYTREE - {SPR_TRE1, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_GFZCHERRYTREE - {SPR_TRE2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CHECKERTREE - {SPR_TRE2, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CHECKERSUNSETTREE - {SPR_TRE3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FHZTREE - {SPR_TRE3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FHZPINKTREE - {SPR_TRE4, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_POLYGONTREE - {SPR_TRE5, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BUSHTREE - {SPR_TRE5, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BUSHREDTREE - {SPR_TRE6, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SPRINGTREE + {"S_GFZTREE", 0, SPR_TRE1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_GFZBERRYTREE", 0, SPR_TRE1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_GFZCHERRYTREE", 0, SPR_TRE1, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CHECKERTREE", 0, SPR_TRE2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CHECKERSUNSETTREE", 0, SPR_TRE2, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_FHZTREE", 0, SPR_TRE3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_FHZPINKTREE", 0, SPR_TRE3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_POLYGONTREE", 0, SPR_TRE4, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BUSHTREE", 0, SPR_TRE5, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BUSHREDTREE", 0, SPR_TRE5, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SPRINGTREE", 0, SPR_TRE6, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // THZ flowers - {SPR_THZP, FF_ANIMATE, -1, {NULL}, 7, 4, S_NULL, 0}, // S_THZFLOWERA - {SPR_FWR5, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL, 0}, // S_THZFLOWERB - {SPR_FWR6, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL, 0}, // S_THZFLOWERC + {"S_THZFLOWERA", 0, SPR_THZP, FF_ANIMATE, -1, {NULL}, 7, 4, S_NULL, 0}, + {"S_THZFLOWERB", 0, SPR_FWR5, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL, 0}, + {"S_THZFLOWERC", 0, SPR_FWR6, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL, 0}, // THZ Steam Whistle tree/bush - {SPR_THZT, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_THZTREE - {SPR_THZT, 1|FF_PAPERSPRITE, 40, {NULL}, 0, 0, S_THZTREEBRANCH2, 0}, // S_THZTREEBRANCH1 - {SPR_THZT, 2|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH3, 0}, // S_THZTREEBRANCH2 - {SPR_THZT, 3|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH4, 0}, // S_THZTREEBRANCH3 - {SPR_THZT, 4|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH5, 0}, // S_THZTREEBRANCH4 - {SPR_THZT, 5|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH6, 0}, // S_THZTREEBRANCH5 - {SPR_THZT, 6|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH7, 0}, // S_THZTREEBRANCH6 - {SPR_THZT, 7|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH8, 0}, // S_THZTREEBRANCH7 - {SPR_THZT, 8|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH9, 0}, // S_THZTREEBRANCH8 - {SPR_THZT, 9|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH10, 0}, // S_THZTREEBRANCH9 - {SPR_THZT, 10|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH11, 0}, // S_THZTREEBRANCH10 - {SPR_THZT, 11|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH12, 0}, // S_THZTREEBRANCH11 - {SPR_THZT, 12|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH13, 0}, // S_THZTREEBRANCH12 - {SPR_THZT, 13|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH1, 0}, // S_THZTREEBRANCH13 + {"S_THZTREE", 0, SPR_THZT, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_THZTREEBRANCH1", 0, SPR_THZT, 1|FF_PAPERSPRITE, 40, {NULL}, 0, 0, S_THZTREEBRANCH2, 0}, + {"S_THZTREEBRANCH2", 0, SPR_THZT, 2|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH3, 0}, + {"S_THZTREEBRANCH3", 0, SPR_THZT, 3|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH4, 0}, + {"S_THZTREEBRANCH4", 0, SPR_THZT, 4|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH5, 0}, + {"S_THZTREEBRANCH5", 0, SPR_THZT, 5|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH6, 0}, + {"S_THZTREEBRANCH6", 0, SPR_THZT, 6|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH7, 0}, + {"S_THZTREEBRANCH7", 0, SPR_THZT, 7|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH8, 0}, + {"S_THZTREEBRANCH8", 0, SPR_THZT, 8|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH9, 0}, + {"S_THZTREEBRANCH9", 0, SPR_THZT, 9|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH10, 0}, + {"S_THZTREEBRANCH10", 0, SPR_THZT, 10|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH11, 0}, + {"S_THZTREEBRANCH11", 0, SPR_THZT, 11|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH12, 0}, + {"S_THZTREEBRANCH12", 0, SPR_THZT, 12|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH13, 0}, + {"S_THZTREEBRANCH13", 0, SPR_THZT, 13|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_THZTREEBRANCH1, 0}, // THZ Alarm - {SPR_ALRM, FF_FULLBRIGHT, 35, {A_Scream}, 0, 0, S_ALARM1, 0}, // S_ALARM1 + {"S_ALARM1", 0, SPR_ALRM, FF_FULLBRIGHT, 35, {A_Scream}, 0, 0, S_ALARM1, 0}, // Deep Sea Gargoyle - {SPR_GARG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_GARGOYLE - {SPR_GARG, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGGARGOYLE + {"S_GARGOYLE", 0, SPR_GARG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BIGGARGOYLE", 0, SPR_GARG, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // DSZ Seaweed - {SPR_SEWE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 26, 3, S_SEAWEED1, 0}, // S_SEAWEED1 - {SPR_SEWE, 1, 5, {NULL}, 0, 0, S_SEAWEED3, 0}, // S_SEAWEED2 - {SPR_SEWE, 2, 5, {NULL}, 0, 0, S_SEAWEED4, 0}, // S_SEAWEED3 - {SPR_SEWE, 3, 5, {NULL}, 0, 0, S_SEAWEED5, 0}, // S_SEAWEED4 - {SPR_SEWE, 4, 5, {NULL}, 0, 0, S_SEAWEED6, 0}, // S_SEAWEED5 - {SPR_SEWE, 5, 5, {NULL}, 0, 0, S_SEAWEED1, 0}, // S_SEAWEED6 + {"S_SEAWEED1", 0, SPR_SEWE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 26, 3, S_SEAWEED1, 0}, + {"S_SEAWEED2", 0, SPR_SEWE, 1, 5, {NULL}, 0, 0, S_SEAWEED3, 0}, + {"S_SEAWEED3", 0, SPR_SEWE, 2, 5, {NULL}, 0, 0, S_SEAWEED4, 0}, + {"S_SEAWEED4", 0, SPR_SEWE, 3, 5, {NULL}, 0, 0, S_SEAWEED5, 0}, + {"S_SEAWEED5", 0, SPR_SEWE, 4, 5, {NULL}, 0, 0, S_SEAWEED6, 0}, + {"S_SEAWEED6", 0, SPR_SEWE, 5, 5, {NULL}, 0, 0, S_SEAWEED1, 0}, // Dripping water - {SPR_NULL, FF_TRANS30 , 3*TICRATE, {NULL}, 0, 0, S_DRIPA2, 0}, // S_DRIPA1 - {SPR_DRIP, FF_TRANS30 , 2, {NULL}, 0, 0, S_DRIPA3, 0}, // S_DRIPA2 - {SPR_DRIP, FF_TRANS30|1, 2, {NULL}, 0, 0, S_DRIPA4, 0}, // S_DRIPA3 - {SPR_DRIP, FF_TRANS30|2, 2, {A_SpawnObjectRelative}, 0, MT_WATERDROP, S_DRIPA1, 0}, // S_DRIPA4 - {SPR_DRIP, FF_TRANS30|3, -1, {NULL}, 0, 0, S_DRIPB1, 0}, // S_DRIPB1 - {SPR_DRIP, FF_TRANS30|4, 1, {NULL}, 0, 0, S_DRIPC2, 0}, // S_DRIPC1 - {SPR_DRIP, FF_TRANS30|5, 1, {NULL}, 0, 0, S_NULL, 0}, // S_DRIPC2 + {"S_DRIPA1", 0, SPR_NULL, FF_TRANS30 , 3*TICRATE, {NULL}, 0, 0, S_DRIPA2, 0}, + {"S_DRIPA2", 0, SPR_DRIP, FF_TRANS30 , 2, {NULL}, 0, 0, S_DRIPA3, 0}, + {"S_DRIPA3", 0, SPR_DRIP, FF_TRANS30|1, 2, {NULL}, 0, 0, S_DRIPA4, 0}, + {"S_DRIPA4", 0, SPR_DRIP, FF_TRANS30|2, 2, {A_SpawnObjectRelative}, 0, MT_WATERDROP, S_DRIPA1, 0}, + {"S_DRIPB1", 0, SPR_DRIP, FF_TRANS30|3, -1, {NULL}, 0, 0, S_DRIPB1, 0}, + {"S_DRIPC1", 0, SPR_DRIP, FF_TRANS30|4, 1, {NULL}, 0, 0, S_DRIPC2, 0}, + {"S_DRIPC2", 0, SPR_DRIP, FF_TRANS30|5, 1, {NULL}, 0, 0, S_NULL, 0}, // Coral - {SPR_CORL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORAL1 - {SPR_CORL, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORAL2 - {SPR_CORL, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORAL3 - {SPR_CORL, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORAL4 - {SPR_CORL, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORAL5 + {"S_CORAL1", 0, SPR_CORL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CORAL2", 0, SPR_CORL, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CORAL3", 0, SPR_CORL, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CORAL4", 0, SPR_CORL, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CORAL5", 0, SPR_CORL, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // Blue Crystal - {SPR_BCRY, FF_TRANS30, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUECRYSTAL1 + {"S_BLUECRYSTAL1", 0, SPR_BCRY, FF_TRANS30, -1, {NULL}, 0, 0, S_NULL, 0}, // Kelp - {SPR_KELP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_KELP + {"S_KELP", 0, SPR_KELP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Animated algae - {SPR_ALGA, 0, 1, {A_ConnectToGround}, MT_ANIMALGAESEG, 0, S_ANIMALGAETOP2, 0}, // S_ANIMALGAETOP1 - {SPR_ALGA, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL, 0}, // S_ANIMALGAETOP2 - {SPR_ALGB, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL, 0}, // S_ANIMALGAESEG + {"S_ANIMALGAETOP1", 0, SPR_ALGA, 0, 1, {A_ConnectToGround}, MT_ANIMALGAESEG, 0, S_ANIMALGAETOP2, 0}, + {"S_ANIMALGAETOP2", 0, SPR_ALGA, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL, 0}, + {"S_ANIMALGAESEG", 0, SPR_ALGB, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL, 0}, // DSZ Stalagmites - {SPR_DSTG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_DSZSTALAGMITE - {SPR_DSTG, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_DSZ2STALAGMITE + {"S_DSZSTALAGMITE", 0, SPR_DSTG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_DSZ2STALAGMITE", 0, SPR_DSTG, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // DSZ Light beam - {SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {A_LightBeamReset}, 0, 0, S_LIGHTBEAM2, 0}, // S_LIGHTBEAM1 - {SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM3, 0}, // S_LIGHTBEAM2 - {SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM4, 0}, // S_LIGHTBEAM3 - {SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM5, 0}, // S_LIGHTBEAM4 - {SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM6, 0}, // S_LIGHTBEAM5 - {SPR_LIBE, 0|FF_TRANS30|FF_FULLBRIGHT|FF_PAPERSPRITE, 9, {NULL}, 0, 0, S_LIGHTBEAM7, 0}, // S_LIGHTBEAM6 - {SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM8, 0}, // S_LIGHTBEAM7 - {SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM9, 0}, // S_LIGHTBEAM8 - {SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM10, 0}, // S_LIGHTBEAM9 - {SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM11, 0}, // S_LIGHTBEAM10 - {SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM12, 0}, // S_LIGHTBEAM11 - {SPR_NULL, 0, 2, {A_SetRandomTics}, 4, 35, S_LIGHTBEAM1, 0}, // S_LIGHTBEAM12 + {"S_LIGHTBEAM1", 0, SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {A_LightBeamReset}, 0, 0, S_LIGHTBEAM2, 0}, + {"S_LIGHTBEAM2", 0, SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM3, 0}, + {"S_LIGHTBEAM3", 0, SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM4, 0}, + {"S_LIGHTBEAM4", 0, SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM5, 0}, + {"S_LIGHTBEAM5", 0, SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM6, 0}, + {"S_LIGHTBEAM6", 0, SPR_LIBE, 0|FF_TRANS30|FF_FULLBRIGHT|FF_PAPERSPRITE, 9, {NULL}, 0, 0, S_LIGHTBEAM7, 0}, + {"S_LIGHTBEAM7", 0, SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM8, 0}, + {"S_LIGHTBEAM8", 0, SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM9, 0}, + {"S_LIGHTBEAM9", 0, SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM10, 0}, + {"S_LIGHTBEAM10", 0, SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM11, 0}, + {"S_LIGHTBEAM11", 0, SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM12, 0}, + {"S_LIGHTBEAM12", 0, SPR_NULL, 0, 2, {A_SetRandomTics}, 4, 35, S_LIGHTBEAM1, 0}, // CEZ Chain - {SPR_CHAN, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZCHAIN + {"S_CEZCHAIN", 0, SPR_CHAN, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Flame - {SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE, 3*8, {A_FlameParticle}, 7, 3, S_FLAME, 0}, // S_FLAME - {SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE|8, TICRATE, {NULL}, 3, 3, S_NULL, 0}, // S_FLAMEPARTICLE - {SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 7, 3, S_NULL, 0}, // S_FLAMEREST + {"S_FLAME", 0, SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE, 3*8, {A_FlameParticle}, 7, 3, S_FLAME, 0}, + {"S_FLAMEPARTICLE", 0, SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE|8, TICRATE, {NULL}, 3, 3, S_NULL, 0}, + {"S_FLAMEREST", 0, SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 7, 3, S_NULL, 0}, // Eggman statue - {SPR_ESTA, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGSTATUE1 + {"S_EGGSTATUE1", 0, SPR_ESTA, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Hidden sling appears - {SPR_NULL, 0, -1, {NULL}, 0, 0, S_SLING2, 0}, // S_SLING1 - {SPR_NULL, 0, -1, {A_SlingAppear}, 0, 0, S_NULL, 0}, // S_SLING2 + {"S_SLING1", 0, SPR_NULL, 0, -1, {NULL}, 0, 0, S_SLING2, 0}, + {"S_SLING2", 0, SPR_NULL, 0, -1, {A_SlingAppear}, 0, 0, S_NULL, 0}, // CEZ maces and chains - {SPR_SMCH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SMALLMACECHAIN - {SPR_BMCH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGMACECHAIN - {SPR_SMCE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SMALLMACE - {SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGMACE - {SPR_SMCH, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SMALLGRABCHAIN - {SPR_BMCH, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGGRABCHAIN + {"S_SMALLMACECHAIN", 0, SPR_SMCH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BIGMACECHAIN", 0, SPR_BMCH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SMALLMACE", 0, SPR_SMCE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BIGMACE", 0, SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SMALLGRABCHAIN", 0, SPR_SMCH, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BIGGRABCHAIN", 0, SPR_BMCH, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // Blue spring on a ball - {SPR_BSPB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUESPRINGBALL - {SPR_BSPB, 4, 4, {A_Pain}, 0, 0, S_BLUESPRINGBALL3, 0}, // S_BLUESPRINGBALL2 - {SPR_BSPB, 3, 1, {NULL}, 0, 0, S_BLUESPRINGBALL4, 0}, // S_BLUESPRINGBALL3 - {SPR_BSPB, 2, 1, {NULL}, 0, 0, S_BLUESPRINGBALL5, 0}, // S_BLUESPRINGBALL4 - {SPR_BSPB, 1, 1, {NULL}, 0, 0, S_BLUESPRINGBALL, 0}, // S_BLUESPRINGBALL5 + {"S_BLUESPRINGBALL", 0, SPR_BSPB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BLUESPRINGBALL2", 0, SPR_BSPB, 4, 4, {A_Pain}, 0, 0, S_BLUESPRINGBALL3, 0}, + {"S_BLUESPRINGBALL3", 0, SPR_BSPB, 3, 1, {NULL}, 0, 0, S_BLUESPRINGBALL4, 0}, + {"S_BLUESPRINGBALL4", 0, SPR_BSPB, 2, 1, {NULL}, 0, 0, S_BLUESPRINGBALL5, 0}, + {"S_BLUESPRINGBALL5", 0, SPR_BSPB, 1, 1, {NULL}, 0, 0, S_BLUESPRINGBALL, 0}, // Yellow spring on a ball - {SPR_YSPB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_YELLOWSPRINGBALL - {SPR_YSPB, 4, 4, {A_Pain}, 0, 0, S_YELLOWSPRINGBALL3, 0}, // S_YELLOWSPRINGBALL2 - {SPR_YSPB, 3, 1, {NULL}, 0, 0, S_YELLOWSPRINGBALL4, 0}, // S_YELLOWSPRINGBALL3 - {SPR_YSPB, 2, 1, {NULL}, 0, 0, S_YELLOWSPRINGBALL5, 0}, // S_YELLOWSPRINGBALL4 - {SPR_YSPB, 1, 1, {NULL}, 0, 0, S_YELLOWSPRINGBALL, 0}, // S_YELLOWSPRINGBALL5 + {"S_YELLOWSPRINGBALL", 0, SPR_YSPB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_YELLOWSPRINGBALL2", 0, SPR_YSPB, 4, 4, {A_Pain}, 0, 0, S_YELLOWSPRINGBALL3, 0}, + {"S_YELLOWSPRINGBALL3", 0, SPR_YSPB, 3, 1, {NULL}, 0, 0, S_YELLOWSPRINGBALL4, 0}, + {"S_YELLOWSPRINGBALL4", 0, SPR_YSPB, 2, 1, {NULL}, 0, 0, S_YELLOWSPRINGBALL5, 0}, + {"S_YELLOWSPRINGBALL5", 0, SPR_YSPB, 1, 1, {NULL}, 0, 0, S_YELLOWSPRINGBALL, 0}, // Red spring on a ball - {SPR_RSPB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_REDSPRINGBALL - {SPR_RSPB, 4, 4, {A_Pain}, 0, 0, S_REDSPRINGBALL3, 0}, // S_REDSPRINGBALL2 - {SPR_RSPB, 3, 1, {NULL}, 0, 0, S_REDSPRINGBALL4, 0}, // S_REDSPRINGBALL3 - {SPR_RSPB, 2, 1, {NULL}, 0, 0, S_REDSPRINGBALL5, 0}, // S_REDSPRINGBALL4 - {SPR_RSPB, 1, 1, {NULL}, 0, 0, S_REDSPRINGBALL, 0}, // S_REDSPRINGBALL5 + {"S_REDSPRINGBALL", 0, SPR_RSPB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_REDSPRINGBALL2", 0, SPR_RSPB, 4, 4, {A_Pain}, 0, 0, S_REDSPRINGBALL3, 0}, + {"S_REDSPRINGBALL3", 0, SPR_RSPB, 3, 1, {NULL}, 0, 0, S_REDSPRINGBALL4, 0}, + {"S_REDSPRINGBALL4", 0, SPR_RSPB, 2, 1, {NULL}, 0, 0, S_REDSPRINGBALL5, 0}, + {"S_REDSPRINGBALL5", 0, SPR_RSPB, 1, 1, {NULL}, 0, 0, S_REDSPRINGBALL, 0}, // Small Firebar - {SPR_SFBR, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_SMALLFIREBAR2, 0}, // S_SMALLFIREBAR1 - {SPR_SFBR, FF_FULLBRIGHT| 1, 1, {NULL}, 0, 0, S_SMALLFIREBAR3, 0}, // S_SMALLFIREBAR2 - {SPR_SFBR, FF_FULLBRIGHT| 2, 1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR4, 0}, // S_SMALLFIREBAR3 - {SPR_SFBR, FF_FULLBRIGHT| 3, 1, {NULL}, 0, 0, S_SMALLFIREBAR5, 0}, // S_SMALLFIREBAR4 - {SPR_SFBR, FF_FULLBRIGHT| 4, 1, {NULL}, 0, 0, S_SMALLFIREBAR6, 0}, // S_SMALLFIREBAR5 - {SPR_SFBR, FF_FULLBRIGHT| 5, 1, {NULL}, 0, 0, S_SMALLFIREBAR7, 0}, // S_SMALLFIREBAR6 - {SPR_SFBR, FF_FULLBRIGHT| 6, 1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR8, 0}, // S_SMALLFIREBAR7 - {SPR_SFBR, FF_FULLBRIGHT| 7, 1, {NULL}, 0, 0, S_SMALLFIREBAR9, 0}, // S_SMALLFIREBAR8 - {SPR_SFBR, FF_FULLBRIGHT| 8, 1, {NULL}, 0, 0, S_SMALLFIREBAR10, 0}, // S_SMALLFIREBAR9 - {SPR_SFBR, FF_FULLBRIGHT| 9, 1, {NULL}, 0, 0, S_SMALLFIREBAR11, 0}, // S_SMALLFIREBAR10 - {SPR_SFBR, FF_FULLBRIGHT|10, 1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR12, 0}, // S_SMALLFIREBAR11 - {SPR_SFBR, FF_FULLBRIGHT|11, 1, {NULL}, 0, 0, S_SMALLFIREBAR13, 0}, // S_SMALLFIREBAR12 - {SPR_SFBR, FF_FULLBRIGHT|12, 1, {NULL}, 0, 0, S_SMALLFIREBAR14, 0}, // S_SMALLFIREBAR13 - {SPR_SFBR, FF_FULLBRIGHT|13, 1, {NULL}, 0, 0, S_SMALLFIREBAR15, 0}, // S_SMALLFIREBAR14 - {SPR_SFBR, FF_FULLBRIGHT|14, 1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR16, 0}, // S_SMALLFIREBAR15 - {SPR_SFBR, FF_FULLBRIGHT|15, 1, {NULL}, 0, 0, S_SMALLFIREBAR1, 0}, // S_SMALLFIREBAR16 + {"S_SMALLFIREBAR1", 0, SPR_SFBR, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_SMALLFIREBAR2, 0}, + {"S_SMALLFIREBAR2", 0, SPR_SFBR, FF_FULLBRIGHT| 1, 1, {NULL}, 0, 0, S_SMALLFIREBAR3, 0}, + {"S_SMALLFIREBAR3", 0, SPR_SFBR, FF_FULLBRIGHT| 2, 1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR4, 0}, + {"S_SMALLFIREBAR4", 0, SPR_SFBR, FF_FULLBRIGHT| 3, 1, {NULL}, 0, 0, S_SMALLFIREBAR5, 0}, + {"S_SMALLFIREBAR5", 0, SPR_SFBR, FF_FULLBRIGHT| 4, 1, {NULL}, 0, 0, S_SMALLFIREBAR6, 0}, + {"S_SMALLFIREBAR6", 0, SPR_SFBR, FF_FULLBRIGHT| 5, 1, {NULL}, 0, 0, S_SMALLFIREBAR7, 0}, + {"S_SMALLFIREBAR7", 0, SPR_SFBR, FF_FULLBRIGHT| 6, 1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR8, 0}, + {"S_SMALLFIREBAR8", 0, SPR_SFBR, FF_FULLBRIGHT| 7, 1, {NULL}, 0, 0, S_SMALLFIREBAR9, 0}, + {"S_SMALLFIREBAR9", 0, SPR_SFBR, FF_FULLBRIGHT| 8, 1, {NULL}, 0, 0, S_SMALLFIREBAR10, 0}, + {"S_SMALLFIREBAR10", 0, SPR_SFBR, FF_FULLBRIGHT| 9, 1, {NULL}, 0, 0, S_SMALLFIREBAR11, 0}, + {"S_SMALLFIREBAR11", 0, SPR_SFBR, FF_FULLBRIGHT|10, 1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR12, 0}, + {"S_SMALLFIREBAR12", 0, SPR_SFBR, FF_FULLBRIGHT|11, 1, {NULL}, 0, 0, S_SMALLFIREBAR13, 0}, + {"S_SMALLFIREBAR13", 0, SPR_SFBR, FF_FULLBRIGHT|12, 1, {NULL}, 0, 0, S_SMALLFIREBAR14, 0}, + {"S_SMALLFIREBAR14", 0, SPR_SFBR, FF_FULLBRIGHT|13, 1, {NULL}, 0, 0, S_SMALLFIREBAR15, 0}, + {"S_SMALLFIREBAR15", 0, SPR_SFBR, FF_FULLBRIGHT|14, 1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR16, 0}, + {"S_SMALLFIREBAR16", 0, SPR_SFBR, FF_FULLBRIGHT|15, 1, {NULL}, 0, 0, S_SMALLFIREBAR1, 0}, // Big Firebar - {SPR_BFBR, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGFIREBAR2, 0}, // S_BIGFIREBAR1 - {SPR_BFBR, FF_FULLBRIGHT| 1, 1, {NULL}, 0, 0, S_BIGFIREBAR3, 0}, // S_BIGFIREBAR2 - {SPR_BFBR, FF_FULLBRIGHT| 2, 1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR4, 0}, // S_BIGFIREBAR3 - {SPR_BFBR, FF_FULLBRIGHT| 3, 1, {NULL}, 0, 0, S_BIGFIREBAR5, 0}, // S_BIGFIREBAR4 - {SPR_BFBR, FF_FULLBRIGHT| 4, 1, {NULL}, 0, 0, S_BIGFIREBAR6, 0}, // S_BIGFIREBAR5 - {SPR_BFBR, FF_FULLBRIGHT| 5, 1, {NULL}, 0, 0, S_BIGFIREBAR7, 0}, // S_BIGFIREBAR6 - {SPR_BFBR, FF_FULLBRIGHT| 6, 1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR8, 0}, // S_BIGFIREBAR7 - {SPR_BFBR, FF_FULLBRIGHT| 7, 1, {NULL}, 0, 0, S_BIGFIREBAR9, 0}, // S_BIGFIREBAR8 - {SPR_BFBR, FF_FULLBRIGHT| 8, 1, {NULL}, 0, 0, S_BIGFIREBAR10, 0}, // S_BIGFIREBAR9 - {SPR_BFBR, FF_FULLBRIGHT| 9, 1, {NULL}, 0, 0, S_BIGFIREBAR11, 0}, // S_BIGFIREBAR10 - {SPR_BFBR, FF_FULLBRIGHT|10, 1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR12, 0}, // S_BIGFIREBAR11 - {SPR_BFBR, FF_FULLBRIGHT|11, 1, {NULL}, 0, 0, S_BIGFIREBAR13, 0}, // S_BIGFIREBAR12 - {SPR_BFBR, FF_FULLBRIGHT|12, 1, {NULL}, 0, 0, S_BIGFIREBAR14, 0}, // S_BIGFIREBAR13 - {SPR_BFBR, FF_FULLBRIGHT|13, 1, {NULL}, 0, 0, S_BIGFIREBAR15, 0}, // S_BIGFIREBAR14 - {SPR_BFBR, FF_FULLBRIGHT|14, 1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR16, 0}, // S_BIGFIREBAR15 - {SPR_BFBR, FF_FULLBRIGHT|15, 1, {NULL}, 0, 0, S_BIGFIREBAR1, 0}, // S_BIGFIREBAR16 + {"S_BIGFIREBAR1", 0, SPR_BFBR, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGFIREBAR2, 0}, + {"S_BIGFIREBAR2", 0, SPR_BFBR, FF_FULLBRIGHT| 1, 1, {NULL}, 0, 0, S_BIGFIREBAR3, 0}, + {"S_BIGFIREBAR3", 0, SPR_BFBR, FF_FULLBRIGHT| 2, 1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR4, 0}, + {"S_BIGFIREBAR4", 0, SPR_BFBR, FF_FULLBRIGHT| 3, 1, {NULL}, 0, 0, S_BIGFIREBAR5, 0}, + {"S_BIGFIREBAR5", 0, SPR_BFBR, FF_FULLBRIGHT| 4, 1, {NULL}, 0, 0, S_BIGFIREBAR6, 0}, + {"S_BIGFIREBAR6", 0, SPR_BFBR, FF_FULLBRIGHT| 5, 1, {NULL}, 0, 0, S_BIGFIREBAR7, 0}, + {"S_BIGFIREBAR7", 0, SPR_BFBR, FF_FULLBRIGHT| 6, 1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR8, 0}, + {"S_BIGFIREBAR8", 0, SPR_BFBR, FF_FULLBRIGHT| 7, 1, {NULL}, 0, 0, S_BIGFIREBAR9, 0}, + {"S_BIGFIREBAR9", 0, SPR_BFBR, FF_FULLBRIGHT| 8, 1, {NULL}, 0, 0, S_BIGFIREBAR10, 0}, + {"S_BIGFIREBAR10", 0, SPR_BFBR, FF_FULLBRIGHT| 9, 1, {NULL}, 0, 0, S_BIGFIREBAR11, 0}, + {"S_BIGFIREBAR11", 0, SPR_BFBR, FF_FULLBRIGHT|10, 1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR12, 0}, + {"S_BIGFIREBAR12", 0, SPR_BFBR, FF_FULLBRIGHT|11, 1, {NULL}, 0, 0, S_BIGFIREBAR13, 0}, + {"S_BIGFIREBAR13", 0, SPR_BFBR, FF_FULLBRIGHT|12, 1, {NULL}, 0, 0, S_BIGFIREBAR14, 0}, + {"S_BIGFIREBAR14", 0, SPR_BFBR, FF_FULLBRIGHT|13, 1, {NULL}, 0, 0, S_BIGFIREBAR15, 0}, + {"S_BIGFIREBAR15", 0, SPR_BFBR, FF_FULLBRIGHT|14, 1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR16, 0}, + {"S_BIGFIREBAR16", 0, SPR_BFBR, FF_FULLBRIGHT|15, 1, {NULL}, 0, 0, S_BIGFIREBAR1, 0}, - {SPR_FWR4, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZFLOWER - {SPR_BANR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZPOLE + {"S_CEZFLOWER", 0, SPR_FWR4, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CEZPOLE", 0, SPR_BANR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_BANR, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZBANNER1 - {SPR_BANR, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZBANNER2 + {"S_CEZBANNER1", 0, SPR_BANR, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CEZBANNER2", 0, SPR_BANR, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_PINE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_PINETREE - {SPR_CEZB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZBUSH1 - {SPR_CEZB, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CEZBUSH2 + {"S_PINETREE", 0, SPR_PINE, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CEZBUSH1", 0, SPR_CEZB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CEZBUSH2", 0, SPR_CEZB, 1, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_CNDL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CANDLE - {SPR_CNDL, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CANDLEPRICKET + {"S_CANDLE", 0, SPR_CNDL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CANDLEPRICKET", 0, SPR_CNDL, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_FLMH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FLAMEHOLDER + {"S_FLAMEHOLDER", 0, SPR_FLMH, 0, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_CTRC, FF_FULLBRIGHT|FF_ANIMATE, 8*3, {A_FlameParticle}, 3, 3, S_FIRETORCH, 0}, // S_FIRETORCH + {"S_FIRETORCH", 0, SPR_CTRC, FF_FULLBRIGHT|FF_ANIMATE, 8*3, {A_FlameParticle}, 3, 3, S_FIRETORCH, 0}, - {SPR_CFLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_WAVINGFLAG - {SPR_CFLG, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_WAVINGFLAGSEG1 - {SPR_CFLG, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_WAVINGFLAGSEG2 + {"S_WAVINGFLAG", 0, SPR_CFLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_WAVINGFLAGSEG1", 0, SPR_CFLG, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_WAVINGFLAGSEG2", 0, SPR_CFLG, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_CSTA, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CRAWLASTATUE + {"S_CRAWLASTATUE", 0, SPR_CSTA, 0, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_CBBS, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FACESTABBERSTATUE + {"S_FACESTABBERSTATUE", 0, SPR_CBBS, 0, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_CBBS, 0, 5, {A_Look}, 768*FRACUNIT, 0, S_SUSPICIOUSFACESTABBERSTATUE_WAIT, 0}, // S_SUSPICIOUSFACESTABBERSTATUE_WAIT - {SPR_CBBS, FF_ANIMATE, 23, {NULL}, 6, 1, S_SUSPICIOUSFACESTABBERSTATUE_BURST2, 0}, // S_SUSPICIOUSFACESTABBERSTATUE_BURST1 - {SPR_NULL, 0, 40, {A_StatueBurst}, MT_FACESTABBER, S_FACESTABBER_CHARGE2, S_NULL, 0}, // S_SUSPICIOUSFACESTABBERSTATUE_BURST2 + {"S_SUSPICIOUSFACESTABBERSTATUE_WAIT", 0, SPR_CBBS, 0, 5, {A_Look}, 768*FRACUNIT, 0, S_SUSPICIOUSFACESTABBERSTATUE_WAIT, 0}, + {"S_SUSPICIOUSFACESTABBERSTATUE_BURST1", 0, SPR_CBBS, FF_ANIMATE, 23, {NULL}, 6, 1, S_SUSPICIOUSFACESTABBERSTATUE_BURST2, 0}, + {"S_SUSPICIOUSFACESTABBERSTATUE_BURST2", 0, SPR_NULL, 0, 40, {A_StatueBurst}, MT_FACESTABBER, S_FACESTABBER_CHARGE2, S_NULL, 0}, - {SPR_CABR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BRAMBLES + {"S_BRAMBLES", 0, SPR_CABR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Big Tumbleweed - {SPR_BTBL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGTUMBLEWEED - {SPR_BTBL, 0, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL2, 0}, // S_BIGTUMBLEWEED_ROLL1 - {SPR_BTBL, 1, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL3, 0}, // S_BIGTUMBLEWEED_ROLL2 - {SPR_BTBL, 2, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL4, 0}, // S_BIGTUMBLEWEED_ROLL3 - {SPR_BTBL, 3, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL5, 0}, // S_BIGTUMBLEWEED_ROLL4 - {SPR_BTBL, 4, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL6, 0}, // S_BIGTUMBLEWEED_ROLL5 - {SPR_BTBL, 5, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL7, 0}, // S_BIGTUMBLEWEED_ROLL6 - {SPR_BTBL, 6, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL8, 0}, // S_BIGTUMBLEWEED_ROLL7 - {SPR_BTBL, 7, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL1, 0}, // S_BIGTUMBLEWEED_ROLL8 + {"S_BIGTUMBLEWEED", 0, SPR_BTBL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BIGTUMBLEWEED_ROLL1", 0, SPR_BTBL, 0, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL2, 0}, + {"S_BIGTUMBLEWEED_ROLL2", 0, SPR_BTBL, 1, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL3, 0}, + {"S_BIGTUMBLEWEED_ROLL3", 0, SPR_BTBL, 2, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL4, 0}, + {"S_BIGTUMBLEWEED_ROLL4", 0, SPR_BTBL, 3, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL5, 0}, + {"S_BIGTUMBLEWEED_ROLL5", 0, SPR_BTBL, 4, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL6, 0}, + {"S_BIGTUMBLEWEED_ROLL6", 0, SPR_BTBL, 5, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL7, 0}, + {"S_BIGTUMBLEWEED_ROLL7", 0, SPR_BTBL, 6, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL8, 0}, + {"S_BIGTUMBLEWEED_ROLL8", 0, SPR_BTBL, 7, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL1, 0}, // Little Tumbleweed - {SPR_STBL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LITTLETUMBLEWEED - {SPR_STBL, 0, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL2, 0}, // S_LITTLETUMBLEWEED_ROLL1 - {SPR_STBL, 1, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL3, 0}, // S_LITTLETUMBLEWEED_ROLL2 - {SPR_STBL, 2, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL4, 0}, // S_LITTLETUMBLEWEED_ROLL3 - {SPR_STBL, 3, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL5, 0}, // S_LITTLETUMBLEWEED_ROLL4 - {SPR_STBL, 4, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL6, 0}, // S_LITTLETUMBLEWEED_ROLL5 - {SPR_STBL, 5, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL7, 0}, // S_LITTLETUMBLEWEED_ROLL6 - {SPR_STBL, 6, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL8, 0}, // S_LITTLETUMBLEWEED_ROLL7 - {SPR_STBL, 7, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL1, 0}, // S_LITTLETUMBLEWEED_ROLL8 + {"S_LITTLETUMBLEWEED", 0, SPR_STBL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_LITTLETUMBLEWEED_ROLL1", 0, SPR_STBL, 0, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL2, 0}, + {"S_LITTLETUMBLEWEED_ROLL2", 0, SPR_STBL, 1, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL3, 0}, + {"S_LITTLETUMBLEWEED_ROLL3", 0, SPR_STBL, 2, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL4, 0}, + {"S_LITTLETUMBLEWEED_ROLL4", 0, SPR_STBL, 3, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL5, 0}, + {"S_LITTLETUMBLEWEED_ROLL5", 0, SPR_STBL, 4, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL6, 0}, + {"S_LITTLETUMBLEWEED_ROLL6", 0, SPR_STBL, 5, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL7, 0}, + {"S_LITTLETUMBLEWEED_ROLL7", 0, SPR_STBL, 6, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL8, 0}, + {"S_LITTLETUMBLEWEED_ROLL8", 0, SPR_STBL, 7, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL1, 0}, // Cacti - {SPR_CACT, 0, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0}, // S_CACTI1 - {SPR_CACT, 1, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0}, // S_CACTI2 - {SPR_CACT, 2, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0}, // S_CACTI3 - {SPR_CACT, 3, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0}, // S_CACTI4 - {SPR_CACT, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTI5 - {SPR_CACT, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTI6 - {SPR_CACT, 6, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTI7 - {SPR_CACT, 7, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTI8 - {SPR_CACT, 8, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTI9 - {SPR_CACT, 9, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0}, // S_CACTI10 - {SPR_CACT, 10, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0}, // S_CACTI11 - {SPR_CACT, 11, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTITINYSEG - {SPR_CACT, 12, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CACTISMALLSEG + {"S_CACTI1", 0, SPR_CACT, 0, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0}, + {"S_CACTI2", 0, SPR_CACT, 1, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0}, + {"S_CACTI3", 0, SPR_CACT, 2, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0}, + {"S_CACTI4", 0, SPR_CACT, 3, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0}, + {"S_CACTI5", 0, SPR_CACT, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CACTI6", 0, SPR_CACT, 5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CACTI7", 0, SPR_CACT, 6, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CACTI8", 0, SPR_CACT, 7, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CACTI9", 0, SPR_CACT, 8, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CACTI10", 0, SPR_CACT, 9, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL, 0}, + {"S_CACTI11", 0, SPR_CACT, 10, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL, 0}, + {"S_CACTITINYSEG", 0, SPR_CACT, 11, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CACTISMALLSEG", 0, SPR_CACT, 12, -1, {NULL}, 0, 0, S_NULL, 0}, // Warning Signs - {SPR_WWSG, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ARIDSIGN_CAUTION - {SPR_WWS2, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ARIDSIGN_CACTI - {SPR_WWS3, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ARIDSIGN_SHARPTURN + {"S_ARIDSIGN_CAUTION", 0, SPR_WWSG, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_ARIDSIGN_CACTI", 0, SPR_WWS2, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_ARIDSIGN_SHARPTURN", 0, SPR_WWS3, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // Oil lamp - {SPR_OILL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_OILLAMP - {SPR_OILF, FF_TRANS90|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_OILLAMPFLARE + {"S_OILLAMP", 0, SPR_OILL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_OILLAMPFLARE", 0, SPR_OILF, FF_TRANS90|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // TNT barrel - {SPR_BARR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_TNTBARREL_STND1 - {SPR_BARX, 0, 0, {A_RollAngle}, 0, 1, S_TNTBARREL_EXPL2, 0}, // S_TNTBARREL_EXPL1 - {SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_TNTBARREL_EXPL3, 0}, // S_TNTBARREL_EXPL2 - {SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_TNTExplode}, MT_TNTDUST, 0, S_TNTBARREL_EXPL4, 0}, // S_TNTBARREL_EXPL3 - {SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_TNTBARREL_EXPL5, 0}, // S_TNTBARREL_EXPL4 - {SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL6, 0}, // S_TNTBARREL_EXPL5 - {SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL7, 0}, // S_TNTBARREL_EXPL6 - {SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL, 0}, // S_TNTBARREL_EXPL7 + {"S_TNTBARREL_STND1", 0, SPR_BARR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_TNTBARREL_EXPL1", 0, SPR_BARX, 0, 0, {A_RollAngle}, 0, 1, S_TNTBARREL_EXPL2, 0}, + {"S_TNTBARREL_EXPL2", 0, SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_TNTBARREL_EXPL3, 0}, + {"S_TNTBARREL_EXPL3", 0, SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_TNTExplode}, MT_TNTDUST, 0, S_TNTBARREL_EXPL4, 0}, + {"S_TNTBARREL_EXPL4", 0, SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_TNTBARREL_EXPL5, 0}, + {"S_TNTBARREL_EXPL5", 0, SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL6, 0}, + {"S_TNTBARREL_EXPL6", 0, SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL7, 0}, + {"S_TNTBARREL_EXPL7", 0, SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL, 0}, #ifndef ROTSPRITE - {SPR_BARR, 1|FF_ANIMATE, -1, {NULL}, 7, 2, S_NULL, 0}, // S_TNTBARREL_FLYING + {"S_TNTBARREL_FLYING", 0, SPR_BARR, 1|FF_ANIMATE, -1, {NULL}, 7, 2, S_NULL, 0}, #else - {SPR_BARR, 1, 1, {A_RollAngle}, 14, 0, S_TNTBARREL_FLYING, 0}, // S_TNTBARREL_FLYING + {"S_TNTBARREL_FLYING", 0, SPR_BARR, 1, 1, {A_RollAngle}, 14, 0, S_TNTBARREL_FLYING, 0}, #endif // TNT proximity shell - {SPR_REMT, 0, 10, {A_Look}, 33554433, 0, S_PROXIMITY_TNT, 0}, // S_PROXIMITY_TNT - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER2, 0}, // S_PROXIMITY_TNT_TRIGGER1 - {SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER3, 0}, // S_PROXIMITY_TNT_TRIGGER2 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER4, 0}, // S_PROXIMITY_TNT_TRIGGER3 - {SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER5, 0}, // S_PROXIMITY_TNT_TRIGGER4 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER6, 0}, // S_PROXIMITY_TNT_TRIGGER5 - {SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER7, 0}, // S_PROXIMITY_TNT_TRIGGER6 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER8, 0}, // S_PROXIMITY_TNT_TRIGGER7 - {SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER9, 0}, // S_PROXIMITY_TNT_TRIGGER8 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER10, 0}, // S_PROXIMITY_TNT_TRIGGER9 - {SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER11, 0}, // S_PROXIMITY_TNT_TRIGGER10 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER12, 0}, // S_PROXIMITY_TNT_TRIGGER11 - {SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER13, 0}, // S_PROXIMITY_TNT_TRIGGER12 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER14, 0}, // S_PROXIMITY_TNT_TRIGGER13 - {SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER15, 0}, // S_PROXIMITY_TNT_TRIGGER14 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER16, 0}, // S_PROXIMITY_TNT_TRIGGER15 - {SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER17, 0}, // S_PROXIMITY_TNT_TRIGGER16 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER18, 0}, // S_PROXIMITY_TNT_TRIGGER17 - {SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER19, 0}, // S_PROXIMITY_TNT_TRIGGER18 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER20, 0}, // S_PROXIMITY_TNT_TRIGGER19 - {SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER21, 0}, // S_PROXIMITY_TNT_TRIGGER20 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER22, 0}, // S_PROXIMITY_TNT_TRIGGER21 - {SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER23, 0}, // S_PROXIMITY_TNT_TRIGGER22 - {SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_TNTBARREL_EXPL1, 0}, // S_PROXIMITY_TNT_TRIGGER23 + {"S_PROXIMITY_TNT", 0, SPR_REMT, 0, 10, {A_Look}, 33554433, 0, S_PROXIMITY_TNT, 0}, + {"S_PROXIMITY_TNT_TRIGGER1", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER2, 0}, + {"S_PROXIMITY_TNT_TRIGGER2", 0, SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER3, 0}, + {"S_PROXIMITY_TNT_TRIGGER3", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER4, 0}, + {"S_PROXIMITY_TNT_TRIGGER4", 0, SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER5, 0}, + {"S_PROXIMITY_TNT_TRIGGER5", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER6, 0}, + {"S_PROXIMITY_TNT_TRIGGER6", 0, SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER7, 0}, + {"S_PROXIMITY_TNT_TRIGGER7", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER8, 0}, + {"S_PROXIMITY_TNT_TRIGGER8", 0, SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER9, 0}, + {"S_PROXIMITY_TNT_TRIGGER9", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER10, 0}, + {"S_PROXIMITY_TNT_TRIGGER10", 0, SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER11, 0}, + {"S_PROXIMITY_TNT_TRIGGER11", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER12, 0}, + {"S_PROXIMITY_TNT_TRIGGER12", 0, SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER13, 0}, + {"S_PROXIMITY_TNT_TRIGGER13", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER14, 0}, + {"S_PROXIMITY_TNT_TRIGGER14", 0, SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER15, 0}, + {"S_PROXIMITY_TNT_TRIGGER15", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER16, 0}, + {"S_PROXIMITY_TNT_TRIGGER16", 0, SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER17, 0}, + {"S_PROXIMITY_TNT_TRIGGER17", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER18, 0}, + {"S_PROXIMITY_TNT_TRIGGER18", 0, SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER19, 0}, + {"S_PROXIMITY_TNT_TRIGGER19", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER20, 0}, + {"S_PROXIMITY_TNT_TRIGGER20", 0, SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER21, 0}, + {"S_PROXIMITY_TNT_TRIGGER21", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER22, 0}, + {"S_PROXIMITY_TNT_TRIGGER22", 0, SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER23, 0}, + {"S_PROXIMITY_TNT_TRIGGER23", 0, SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_TNTBARREL_EXPL1, 0}, // Dust devil - {SPR_NULL, 0, 1, {A_DustDevilThink}, 0, 0, S_DUSTDEVIL, 0}, //S_DUSTDEVIL - {SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 2 * TICRATE, {NULL}, 0, 0, S_DUSTLAYER2, 0}, // S_DUSTLAYER1 - {SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 5, {NULL}, 0, 0, S_DUSTLAYER3, 0}, // S_DUSTLAYER2 - {SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER4, 0}, // S_DUSTLAYER3 - {SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER5, 0}, // S_DUSTLAYER4 - {SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS90, 5, {NULL}, 0, 0, S_NULL, 0}, // S_DUSTLAYER5 - {SPR_ADST, 0|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0}, // S_ARIDDUST1 - {SPR_ADST, 3|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0}, // S_ARIDDUST2 - {SPR_ADST, 6|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0}, // S_ARIDDUST3 + {"S_DUSTDEVIL", 0, SPR_NULL, 0, 1, {A_DustDevilThink}, 0, 0, S_DUSTDEVIL, 0}, + {"S_DUSTLAYER1", 0, SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 2 * TICRATE, {NULL}, 0, 0, S_DUSTLAYER2, 0}, + {"S_DUSTLAYER2", 0, SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 5, {NULL}, 0, 0, S_DUSTLAYER3, 0}, + {"S_DUSTLAYER3", 0, SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER4, 0}, + {"S_DUSTLAYER4", 0, SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER5, 0}, + {"S_DUSTLAYER5", 0, SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS90, 5, {NULL}, 0, 0, S_NULL, 0}, + {"S_ARIDDUST1", 0, SPR_ADST, 0|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0}, + {"S_ARIDDUST2", 0, SPR_ADST, 3|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0}, + {"S_ARIDDUST3", 0, SPR_ADST, 6|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL, 0}, // Minecart - {SPR_NULL, 0, 1, {NULL}, 0, 0, S_MINECART_IDLE, 0}, // S_MINECART_IDLE - {SPR_NULL, 0, 0, {A_KillSegments}, 0, 0, S_TNTBARREL_EXPL4, 0}, // S_MINECART_DTH1 - {SPR_MCRT, 8|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MINECARTEND - {SPR_MCRT, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MINECARTSEG_FRONT - {SPR_MCRT, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MINECARTSEG_BACK - {SPR_MCRT, 2|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, // S_MINECARTSEG_LEFT - {SPR_MCRT, 5|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, // S_MINECARTSEG_RIGHT - {SPR_LCKN, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_MINECARTSIDEMARK1 - {SPR_LCKN, 0|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_MINECARTSIDEMARK2 - {SPR_MCSP, FF_FULLBRIGHT, 1, {A_MinecartSparkThink}, 0, 0, S_MINECARTSPARK, 0}, // S_MINECARTSPARK + {"S_MINECART_IDLE", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_MINECART_IDLE, 0}, + {"S_MINECART_DTH1", 0, SPR_NULL, 0, 0, {A_KillSegments}, 0, 0, S_TNTBARREL_EXPL4, 0}, + {"S_MINECARTEND", 0, SPR_MCRT, 8|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_MINECARTSEG_FRONT", 0, SPR_MCRT, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_MINECARTSEG_BACK", 0, SPR_MCRT, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_MINECARTSEG_LEFT", 0, SPR_MCRT, 2|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, + {"S_MINECARTSEG_RIGHT", 0, SPR_MCRT, 5|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, + {"S_MINECARTSIDEMARK1", 0, SPR_LCKN, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, + {"S_MINECARTSIDEMARK2", 0, SPR_LCKN, 0|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, + {"S_MINECARTSPARK", 0, SPR_MCSP, FF_FULLBRIGHT, 1, {A_MinecartSparkThink}, 0, 0, S_MINECARTSPARK, 0}, // Saloon door - {SPR_SALD, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SALOONDOOR - {SPR_NULL, 0, -1, {A_SaloonDoorSpawn}, MT_SALOONDOOR, 48, S_NULL, 0}, // S_SALOONDOORCENTER + {"S_SALOONDOOR", 0, SPR_SALD, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SALOONDOORCENTER", 0, SPR_NULL, 0, -1, {A_SaloonDoorSpawn}, MT_SALOONDOOR, 48, S_NULL, 0}, // Train cameo - {SPR_NULL, 0, -1, {NULL}, 0, 0, S_TRAINCAMEOSPAWNER_2, 0}, // S_TRAINCAMEOSPAWNER_1 - {SPR_NULL, 0, 14, {A_TrainCameo}, 20, 18, S_TRAINCAMEOSPAWNER_3, 0}, // S_TRAINCAMEOSPAWNER_2 - {SPR_NULL, 0, 1, {A_Repeat}, 1, 0, S_TRAINCAMEOSPAWNER_4, 0}, // S_TRAINCAMEOSPAWNER_3 - {SPR_NULL, 0, 18, {A_TrainCameo2}, 20, 44, S_TRAINCAMEOSPAWNER_5, 0}, // S_TRAINCAMEOSPAWNER_4 - {SPR_NULL, 0, 1, {A_Repeat}, 5, S_TRAINCAMEOSPAWNER_4, S_NULL, 0}, // S_TRAINCAMEOSPAWNER_5 - {SPR_NULL, 0, 2, {A_SmokeTrailer}, MT_SMOKE, 0, S_TRAINPUFFMAKER, 0}, // S_TRAINPUFFMAKER + {"S_TRAINCAMEOSPAWNER_1", 0, SPR_NULL, 0, -1, {NULL}, 0, 0, S_TRAINCAMEOSPAWNER_2, 0}, + {"S_TRAINCAMEOSPAWNER_2", 0, SPR_NULL, 0, 14, {A_TrainCameo}, 20, 18, S_TRAINCAMEOSPAWNER_3, 0}, + {"S_TRAINCAMEOSPAWNER_3", 0, SPR_NULL, 0, 1, {A_Repeat}, 1, 0, S_TRAINCAMEOSPAWNER_4, 0}, + {"S_TRAINCAMEOSPAWNER_4", 0, SPR_NULL, 0, 18, {A_TrainCameo2}, 20, 44, S_TRAINCAMEOSPAWNER_5, 0}, + {"S_TRAINCAMEOSPAWNER_5", 0, SPR_NULL, 0, 1, {A_Repeat}, 5, S_TRAINCAMEOSPAWNER_4, S_NULL, 0}, + {"S_TRAINPUFFMAKER", 0, SPR_NULL, 0, 2, {A_SmokeTrailer}, MT_SMOKE, 0, S_TRAINPUFFMAKER, 0}, - {SPR_ADST, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0}, // S_TRAINDUST - {SPR_STEA, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0}, // S_TRAINSTEAM + {"S_TRAINDUST", 0, SPR_ADST, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_TRAINSTEAM", 0, SPR_STEA, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0}, // Flame jet - {SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_FLAMEJETSTART, 0}, // S_FLAMEJETSTND - {SPR_NULL, 0, 3*TICRATE, {A_ToggleFlameJet}, 0, 0, S_FLAMEJETSTOP, 0}, // S_FLAMEJETSTART - {SPR_NULL, 0, 1, {A_ToggleFlameJet}, 0, 0, S_FLAMEJETSTND, 0}, // S_FLAMEJETSTOP - {SPR_FLME, FF_FULLBRIGHT , 4, {NULL}, 0, 0, S_FLAMEJETFLAME2, 0}, // S_FLAMEJETFLAME1 - {SPR_FLME, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_FLAMEJETFLAME3, 0}, // S_FLAMEJETFLAME2 - {SPR_FLME, FF_FULLBRIGHT|2, 11, {NULL}, 0, 0, S_NULL, 0}, // S_FLAMEJETFLAME3 - {SPR_FLME, FF_FULLBRIGHT|3, 4, {NULL}, 0, 0, S_FLAMEJETFLAME5, 0}, // S_FLAMEJETFLAME4 - {SPR_FLME, FF_FULLBRIGHT|4, 5, {NULL}, 0, 0, S_FLAMEJETFLAME6, 0}, // S_FLAMEJETFLAME5 - {SPR_FLME, FF_FULLBRIGHT|5, 11, {NULL}, 0, 0, S_NULL, 0}, // S_FLAMEJETFLAME6 - {SPR_FLME, FF_FULLBRIGHT|6, 4, {NULL}, 0, 0, S_FLAMEJETFLAME8, 0}, // S_FLAMEJETFLAME7 - {SPR_FLME, FF_FULLBRIGHT|7, 5, {NULL}, 0, 0, S_FLAMEJETFLAME9, 0}, // S_FLAMEJETFLAME8 - {SPR_FLME, FF_FULLBRIGHT|8, 11, {NULL}, 0, 0, S_NULL, 0}, // S_FLAMEJETFLAME9 + {"S_FLAMEJETSTND", 0, SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_FLAMEJETSTART, 0}, + {"S_FLAMEJETSTART", 0, SPR_NULL, 0, 3*TICRATE, {A_ToggleFlameJet}, 0, 0, S_FLAMEJETSTOP, 0}, + {"S_FLAMEJETSTOP", 0, SPR_NULL, 0, 1, {A_ToggleFlameJet}, 0, 0, S_FLAMEJETSTND, 0}, + {"S_FLAMEJETFLAME1", 0, SPR_FLME, FF_FULLBRIGHT , 4, {NULL}, 0, 0, S_FLAMEJETFLAME2, 0}, + {"S_FLAMEJETFLAME2", 0, SPR_FLME, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_FLAMEJETFLAME3, 0}, + {"S_FLAMEJETFLAME3", 0, SPR_FLME, FF_FULLBRIGHT|2, 11, {NULL}, 0, 0, S_NULL, 0}, + {"S_FLAMEJETFLAME4", 0, SPR_FLME, FF_FULLBRIGHT|3, 4, {NULL}, 0, 0, S_FLAMEJETFLAME5, 0}, + {"S_FLAMEJETFLAME5", 0, SPR_FLME, FF_FULLBRIGHT|4, 5, {NULL}, 0, 0, S_FLAMEJETFLAME6, 0}, + {"S_FLAMEJETFLAME6", 0, SPR_FLME, FF_FULLBRIGHT|5, 11, {NULL}, 0, 0, S_NULL, 0}, + {"S_FLAMEJETFLAME7", 0, SPR_FLME, FF_FULLBRIGHT|6, 4, {NULL}, 0, 0, S_FLAMEJETFLAME8, 0}, + {"S_FLAMEJETFLAME8", 0, SPR_FLME, FF_FULLBRIGHT|7, 5, {NULL}, 0, 0, S_FLAMEJETFLAME9, 0}, + {"S_FLAMEJETFLAME9", 0, SPR_FLME, FF_FULLBRIGHT|8, 11, {NULL}, 0, 0, S_NULL, 0}, // Spinning flame jets // A: Counter-clockwise - {SPR_NULL, 0, 1, {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISA2, 0}, // S_FJSPINAXISA1 - {SPR_NULL, 0, 2, {A_ChangeAngleRelative}, 6, 6, S_FJSPINAXISA1, 0}, // S_FJSPINAXISA2 + {"S_FJSPINAXISA1", 0, SPR_NULL, 0, 1, {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISA2, 0}, + {"S_FJSPINAXISA2", 0, SPR_NULL, 0, 2, {A_ChangeAngleRelative}, 6, 6, S_FJSPINAXISA1, 0}, // B: Clockwise - {SPR_NULL, 0, 1, {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISB2, 0}, // S_FJSPINAXISB1 - {SPR_NULL, 0, 2, {A_ChangeAngleRelative}, -6, -6, S_FJSPINAXISB1, 0}, // S_FJSPINAXISB2 + {"S_FJSPINAXISB1", 0, SPR_NULL, 0, 1, {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISB2, 0}, + {"S_FJSPINAXISB2", 0, SPR_NULL, 0, 2, {A_ChangeAngleRelative}, -6, -6, S_FJSPINAXISB1, 0}, // Blade's flame - {SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 5, S_FLAMEJETFLAMEB2, 0}, // S_FLAMEJETFLAMEB1 - {SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 7, S_FLAMEJETFLAMEB3, 0}, // S_FLAMEJETFLAMEB2 - {SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40|FF_ANIMATE, (12*7), {NULL}, 7, 12, S_NULL, 0}, // S_FLAMEJETFLAMEB3 + {"S_FLAMEJETFLAMEB1", 0, SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 5, S_FLAMEJETFLAMEB2, 0}, + {"S_FLAMEJETFLAMEB2", 0, SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 7, S_FLAMEJETFLAMEB3, 0}, + {"S_FLAMEJETFLAMEB3", 0, SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40|FF_ANIMATE, (12*7), {NULL}, 7, 12, S_NULL, 0}, // Lavafall - {SPR_LFAL, 5, 1, {NULL}, 0, 0, S_LAVAFALL_DORMANT, 0}, // S_LAVAFALL_DORMANT - {SPR_LFAL, 6|FF_ANIMATE, 4, {A_LavafallRocks}, 1, 2, S_LAVAFALL_TELL, 0}, // S_LAVAFALL_TELL - {SPR_LFAL, 9|FF_FULLBRIGHT|FF_ANIMATE, 2, {A_LavafallLava}, 1, 1, S_LAVAFALL_SHOOT, 0}, // S_LAVAFALL_SHOOT - {SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA2, 0}, // S_LAVAFALL_LAVA1 - {SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA1, 0}, // S_LAVAFALL_LAVA2 - {SPR_LFAL, 2|FF_FULLBRIGHT|FF_ANIMATE, 9, {NULL}, 2, 3, S_NULL, 0}, // S_LAVAFALL_LAVA3 - {SPR_LFAL, 11|FF_ANIMATE|FF_RANDOMANIM, 12, {NULL}, 3, 3, S_LAVAFALLROCK, 0}, // S_LAVAFALLROCK + {"S_LAVAFALL_DORMANT", 0, SPR_LFAL, 5, 1, {NULL}, 0, 0, S_LAVAFALL_DORMANT, 0}, + {"S_LAVAFALL_TELL", 0, SPR_LFAL, 6|FF_ANIMATE, 4, {A_LavafallRocks}, 1, 2, S_LAVAFALL_TELL, 0}, + {"S_LAVAFALL_SHOOT", 0, SPR_LFAL, 9|FF_FULLBRIGHT|FF_ANIMATE, 2, {A_LavafallLava}, 1, 1, S_LAVAFALL_SHOOT, 0}, + {"S_LAVAFALL_LAVA1", 0, SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA2, 0}, + {"S_LAVAFALL_LAVA2", 0, SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA1, 0}, + {"S_LAVAFALL_LAVA3", 0, SPR_LFAL, 2|FF_FULLBRIGHT|FF_ANIMATE, 9, {NULL}, 2, 3, S_NULL, 0}, + {"S_LAVAFALLROCK", 0, SPR_LFAL, 11|FF_ANIMATE|FF_RANDOMANIM, 12, {NULL}, 3, 3, S_LAVAFALLROCK, 0}, // Rollout Rock - {SPR_NULL, 0, 1, {A_RolloutSpawn}, 256*FRACUNIT, MT_ROLLOUTROCK, S_ROLLOUTSPAWN, 0}, // S_ROLLOUTSPAWN - {SPR_PUMI, 0, 1, {A_RolloutRock}, 63*FRACUNIT/64, 7*FRACUNIT/10, S_ROLLOUTROCK, 0}, // S_ROLLOUTROCK + {"S_ROLLOUTSPAWN", 0, SPR_NULL, 0, 1, {A_RolloutSpawn}, 256*FRACUNIT, MT_ROLLOUTROCK, S_ROLLOUTSPAWN, 0}, + {"S_ROLLOUTROCK", 0, SPR_PUMI, 0, 1, {A_RolloutRock}, 63*FRACUNIT/64, 7*FRACUNIT/10, S_ROLLOUTROCK, 0}, // RVZ scenery - {SPR_JPLA, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGFERNLEAF - {SPR_JPLA, 1, 1, {NULL}, 0, 0, S_BIGFERN2, 0}, // S_BIGFERN1 - {SPR_JPLA, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIGFERN2 - {SPR_JPLA, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_JUNGLEPALM - {SPR_TFLO, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_TORCHFLOWER, 0}, // S_TORCHFLOWER - {SPR_WVIN, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_WALLVINE_LONG - {SPR_WVIN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_WALLVINE_SHORT + {"S_BIGFERNLEAF", 0, SPR_JPLA, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BIGFERN1", 0, SPR_JPLA, 1, 1, {NULL}, 0, 0, S_BIGFERN2, 0}, + {"S_BIGFERN2", 0, SPR_JPLA, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_JUNGLEPALM", 0, SPR_JPLA, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_TORCHFLOWER", 0, SPR_TFLO, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_TORCHFLOWER, 0}, + {"S_WALLVINE_LONG", 0, SPR_WVIN, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_WALLVINE_SHORT", 0, SPR_WVIN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // Glaregoyles - {SPR_BGAR, 0, 22, {NULL}, 0, 0, S_GLAREGOYLE_CHARGE, 0}, // S_GLAREGOYLE - {SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLE_BLINK, 0}, // S_GLAREGOYLE_CHARGE - {SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLE_HOLD, 0}, // S_GLAREGOYLE_BLINK - {SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLE_FIRE, 0}, // S_GLAREGOYLE_HOLD - {SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLE_LOOP, 0}, // S_GLAREGOYLE_FIRE - {SPR_BGAR, 1, 0, {A_Repeat}, 3, S_GLAREGOYLE_FIRE, S_GLAREGOYLE_COOLDOWN, 0}, // S_GLAREGOYLE_LOOP - {SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLE, 0}, // S_GLAREGOYLE_COOLDOWN - - {SPR_BGAR, 0, 22, {NULL}, 0, 0, S_GLAREGOYLEUP_CHARGE, 0}, // S_GLAREGOYLEUP - {SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLEUP_BLINK, 0}, // S_GLAREGOYLEUP_CHARGE - {SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLEUP_HOLD, 0}, // S_GLAREGOYLEUP_BLINK - {SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLEUP_FIRE, 0}, // S_GLAREGOYLEUP_HOLD - {SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_LOOP, 0}, // S_GLAREGOYLEUP_FIRE - {SPR_BGAR, 1, 0, {A_Repeat}, 3, S_GLAREGOYLEUP_FIRE, S_GLAREGOYLEUP_COOLDOWN, 0}, // S_GLAREGOYLEUP_LOOP - {SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLEUP, 0}, // S_GLAREGOYLEUP_COOLDOWN - - {SPR_BGAR, 0, 22, {NULL}, 0, 0, S_GLAREGOYLEDOWN_CHARGE, 0}, // S_GLAREGOYLEDOWN - {SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLEDOWN_BLINK, 0}, // S_GLAREGOYLEDOWN_CHARGE - {SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLEDOWN_HOLD, 0}, // S_GLAREGOYLEDOWN_BLINK - {SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLEDOWN_FIRE, 0}, // S_GLAREGOYLEDOWN_HOLD - {SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_LOOP, 0}, // S_GLAREGOYLEDOWN_FIRE - {SPR_BGAR, 1, 0, {A_Repeat}, 3, S_GLAREGOYLEDOWN_FIRE, S_GLAREGOYLEDOWN_COOLDOWN, 0}, // S_GLAREGOYLEDOWN_LOOP - {SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLEDOWN, 0}, // S_GLAREGOYLEDOWN_COOLDOWN - - {SPR_BGAR, 0, 90, {NULL}, 0, 0, S_GLAREGOYLELONG_CHARGE, 0}, // S_GLAREGOYLELONG - {SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLELONG_BLINK, 0}, // S_GLAREGOYLELONG_CHARGE - {SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLELONG_HOLD, 0}, // S_GLAREGOYLELONG_BLINK - {SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLELONG_FIRE, 0}, // S_GLAREGOYLELONG_HOLD - {SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_LOOP, 0}, // S_GLAREGOYLELONG_FIRE - {SPR_BGAR, 1, 0, {A_Repeat}, 5, S_GLAREGOYLELONG_FIRE, S_GLAREGOYLELONG_COOLDOWN, 0}, // S_GLAREGOYLELONG_LOOP - {SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLELONG, 0}, // S_GLAREGOYLELONG_COOLDOWN + {"S_GLAREGOYLE", 0, SPR_BGAR, 0, 22, {NULL}, 0, 0, S_GLAREGOYLE_CHARGE, 0}, + {"S_GLAREGOYLE_CHARGE", 0, SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLE_BLINK, 0}, + {"S_GLAREGOYLE_BLINK", 0, SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLE_HOLD, 0}, + {"S_GLAREGOYLE_HOLD", 0, SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLE_FIRE, 0}, + {"S_GLAREGOYLE_FIRE", 0, SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLE_LOOP, 0}, + {"S_GLAREGOYLE_LOOP", 0, SPR_BGAR, 1, 0, {A_Repeat}, 3, S_GLAREGOYLE_FIRE, S_GLAREGOYLE_COOLDOWN, 0}, + {"S_GLAREGOYLE_COOLDOWN", 0, SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLE, 0}, + + {"S_GLAREGOYLEUP", 0, SPR_BGAR, 0, 22, {NULL}, 0, 0, S_GLAREGOYLEUP_CHARGE, 0}, + {"S_GLAREGOYLEUP_CHARGE", 0, SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLEUP_BLINK, 0}, + {"S_GLAREGOYLEUP_BLINK", 0, SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLEUP_HOLD, 0}, + {"S_GLAREGOYLEUP_HOLD", 0, SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLEUP_FIRE, 0}, + {"S_GLAREGOYLEUP_FIRE", 0, SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_LOOP, 0}, + {"S_GLAREGOYLEUP_LOOP", 0, SPR_BGAR, 1, 0, {A_Repeat}, 3, S_GLAREGOYLEUP_FIRE, S_GLAREGOYLEUP_COOLDOWN, 0}, + {"S_GLAREGOYLEUP_COOLDOWN", 0, SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLEUP, 0}, + + {"S_GLAREGOYLEDOWN", 0, SPR_BGAR, 0, 22, {NULL}, 0, 0, S_GLAREGOYLEDOWN_CHARGE, 0}, + {"S_GLAREGOYLEDOWN_CHARGE", 0, SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLEDOWN_BLINK, 0}, + {"S_GLAREGOYLEDOWN_BLINK", 0, SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLEDOWN_HOLD, 0}, + {"S_GLAREGOYLEDOWN_HOLD", 0, SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLEDOWN_FIRE, 0}, + {"S_GLAREGOYLEDOWN_FIRE", 0, SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_LOOP, 0}, + {"S_GLAREGOYLEDOWN_LOOP", 0, SPR_BGAR, 1, 0, {A_Repeat}, 3, S_GLAREGOYLEDOWN_FIRE, S_GLAREGOYLEDOWN_COOLDOWN, 0}, + {"S_GLAREGOYLEDOWN_COOLDOWN", 0, SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLEDOWN, 0}, + + {"S_GLAREGOYLELONG", 0, SPR_BGAR, 0, 90, {NULL}, 0, 0, S_GLAREGOYLELONG_CHARGE, 0}, + {"S_GLAREGOYLELONG_CHARGE", 0, SPR_BGAR, 2, 6, {NULL}, 0, 0, S_GLAREGOYLELONG_BLINK, 0}, + {"S_GLAREGOYLELONG_BLINK", 0, SPR_BGAR, FF_ANIMATE|1, 18, {NULL}, 1, 3, S_GLAREGOYLELONG_HOLD, 0}, + {"S_GLAREGOYLELONG_HOLD", 0, SPR_BGAR, 1, 9, {NULL}, 0, 0, S_GLAREGOYLELONG_FIRE, 0}, + {"S_GLAREGOYLELONG_FIRE", 0, SPR_BGAR, 1, 1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_LOOP, 0}, + {"S_GLAREGOYLELONG_LOOP", 0, SPR_BGAR, 1, 0, {A_Repeat}, 5, S_GLAREGOYLELONG_FIRE, S_GLAREGOYLELONG_COOLDOWN, 0}, + {"S_GLAREGOYLELONG_COOLDOWN", 0, SPR_BGAR, FF_ANIMATE|1, 15, {NULL}, 1, 9, S_GLAREGOYLELONG, 0}, // Target/Red Crystal - {SPR_RCRY, 0, -1, {NULL}, 0, 0, S_TARGET_IDLE, 0}, // S_TARGET_IDLE - {SPR_RCRY, FF_FULLBRIGHT|1, 0, {A_PlaySound}, sfx_ding, 1, S_TARGET_HIT2, 0}, // S_TARGET_HIT1 - {SPR_RCRY, FF_FULLBRIGHT|1, 45, {A_SetObjectFlags}, MF_PUSHABLE, 2, S_TARGET_RESPAWN, 0}, // S_TARGET_HIT2 - {SPR_RCRY, 1, 0, {A_SpawnObjectRelative}, 0, MT_TARGET, S_NULL, 0}, // S_TARGET_RESPAWN - {SPR_RCRY, FF_FULLBRIGHT|1, -1, {A_SetObjectFlags}, MF_PUSHABLE, 1, S_TARGET_ALLDONE, 0}, // S_TARGET_ALLDONE + {"S_TARGET_IDLE", 0, SPR_RCRY, 0, -1, {NULL}, 0, 0, S_TARGET_IDLE, 0}, + {"S_TARGET_HIT1", 0, SPR_RCRY, FF_FULLBRIGHT|1, 0, {A_PlaySound}, sfx_ding, 1, S_TARGET_HIT2, 0}, + {"S_TARGET_HIT2", 0, SPR_RCRY, FF_FULLBRIGHT|1, 45, {A_SetObjectFlags}, MF_PUSHABLE, 2, S_TARGET_RESPAWN, 0}, + {"S_TARGET_RESPAWN", 0, SPR_RCRY, 1, 0, {A_SpawnObjectRelative}, 0, MT_TARGET, S_NULL, 0}, + {"S_TARGET_ALLDONE", 0, SPR_RCRY, FF_FULLBRIGHT|1, -1, {A_SetObjectFlags}, MF_PUSHABLE, 1, S_TARGET_ALLDONE, 0}, // Green flame - {SPR_CFLM, FF_FULLBRIGHT|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 3, S_GREENFLAME, 0}, // S_GREENFLAME + {"S_GREENFLAME", 0, SPR_CFLM, FF_FULLBRIGHT|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 3, S_GREENFLAME, 0}, // ATZ Blue Gargoyle - {SPR_BGAR, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUEGARGOYLE + {"S_BLUEGARGOYLE", 0, SPR_BGAR, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // Stalagmites - {SPR_STLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG0 - {SPR_STLG, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG1 - {SPR_STLG, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG2 - {SPR_STLG, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG3 - {SPR_STLG, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG4 - {SPR_STLG, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG5 - {SPR_STLG, 6, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG6 - {SPR_STLG, 7, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG7 - {SPR_STLG, 8, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG8 - {SPR_STLG, 9, -1, {NULL}, 0, 0, S_NULL, 0}, // S_STG9 + {"S_STG0", 0, SPR_STLG, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_STG1", 0, SPR_STLG, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_STG2", 0, SPR_STLG, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_STG3", 0, SPR_STLG, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_STG4", 0, SPR_STLG, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_STG5", 0, SPR_STLG, 5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_STG6", 0, SPR_STLG, 6, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_STG7", 0, SPR_STLG, 7, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_STG8", 0, SPR_STLG, 8, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_STG9", 0, SPR_STLG, 9, -1, {NULL}, 0, 0, S_NULL, 0}, // Xmas-specific stuff - {SPR_XMS1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_XMASPOLE - {SPR_XMS2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CANDYCANE - {SPR_XMS3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNOWMAN - {SPR_XMS3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNOWMANHAT - {SPR_XMS4, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LAMPPOST1 - {SPR_XMS4, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LAMPPOST2 - {SPR_XMS5, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HANGSTAR - {SPR_XMS6, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MISTLETOE + {"S_XMASPOLE", 0, SPR_XMS1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_CANDYCANE", 0, SPR_XMS2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SNOWMAN", 0, SPR_XMS3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SNOWMANHAT", 0, SPR_XMS3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_LAMPPOST1", 0, SPR_XMS4, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_LAMPPOST2", 0, SPR_XMS4, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_HANGSTAR", 0, SPR_XMS5, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_MISTLETOE", 0, SPR_XMS6, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Xmas GFZ bushes - {SPR_BUS3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_XMASBLUEBERRYBUSH - {SPR_BUS1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_XMASBERRYBUSH - {SPR_BUS2, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_XMASBUSH + {"S_XMASBLUEBERRYBUSH", 0, SPR_BUS3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_XMASBERRYBUSH", 0, SPR_BUS1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_XMASBUSH", 0, SPR_BUS2, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // FHZ - {SPR_FHZI, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FHZICE1 - {SPR_FHZI, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FHZICE2 - {SPR_ROSY, 16, 8, {NULL}, 0, 0, S_ROSY_IDLE2, 0}, // S_ROSY_IDLE1 - {SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE3, 0}, // S_ROSY_IDLE2 - {SPR_ROSY, 18, 8, {NULL}, 0, 0, S_ROSY_IDLE4, 0}, // S_ROSY_IDLE3 - {SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE1, 0}, // S_ROSY_IDLE4 - {SPR_ROSY, 14, -1, {NULL}, 1, 0, S_NULL, 0}, // S_ROSY_JUMP - {SPR_ROSY, 5, -1, {NULL}, 7, 0, S_NULL, 0}, // S_ROSY_WALK - {SPR_ROSY, 19, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ROSY_HUG - {SPR_ROSY, 13, -1, {NULL}, 0, 0, S_NULL, 0}, // S_ROSY_PAIN - {SPR_ROSY, 1|FF_ANIMATE, -1, {NULL}, 3, 16, S_NULL, 0}, // S_ROSY_STND - {SPR_ROSY, 20|FF_ANIMATE, TICRATE, {NULL}, 3, 4, S_ROSY_WALK, 0}, // S_ROSY_UNHAPPY + {"S_FHZICE1", 0, SPR_FHZI, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_FHZICE2", 0, SPR_FHZI, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_ROSY_IDLE1", 0, SPR_ROSY, 16, 8, {NULL}, 0, 0, S_ROSY_IDLE2, 0}, + {"S_ROSY_IDLE2", 0, SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE3, 0}, + {"S_ROSY_IDLE3", 0, SPR_ROSY, 18, 8, {NULL}, 0, 0, S_ROSY_IDLE4, 0}, + {"S_ROSY_IDLE4", 0, SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE1, 0}, + {"S_ROSY_JUMP", 0, SPR_ROSY, 14, -1, {NULL}, 1, 0, S_NULL, 0}, + {"S_ROSY_WALK", 0, SPR_ROSY, 5, -1, {NULL}, 7, 0, S_NULL, 0}, + {"S_ROSY_HUG", 0, SPR_ROSY, 19, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_ROSY_PAIN", 0, SPR_ROSY, 13, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_ROSY_STND", 0, SPR_ROSY, 1|FF_ANIMATE, -1, {NULL}, 3, 16, S_NULL, 0}, + {"S_ROSY_UNHAPPY", 0, SPR_ROSY, 20|FF_ANIMATE, TICRATE, {NULL}, 3, 4, S_ROSY_WALK, 0}, // Halloween Scenery // Pumpkins - {SPR_PUMK, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_JACKO1 - {SPR_PUMK, 3|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_2, 0}, // S_JACKO1OVERLAY_1 - {SPR_PUMK, 4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_3, 0}, // S_JACKO1OVERLAY_2 - {SPR_PUMK, 5|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_4, 0}, // S_JACKO1OVERLAY_3 - {SPR_PUMK, 4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_1, 0}, // S_JACKO1OVERLAY_4 - {SPR_PUMK, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_JACKO2 - {SPR_PUMK, 6|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_2, 0}, // S_JACKO2OVERLAY_1 - {SPR_PUMK, 7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_3, 0}, // S_JACKO2OVERLAY_2 - {SPR_PUMK, 8|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_4, 0}, // S_JACKO2OVERLAY_3 - {SPR_PUMK, 7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_1, 0}, // S_JACKO2OVERLAY_4 - {SPR_PUMK, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_JACKO3 - {SPR_PUMK, 9|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_2, 0}, // S_JACKO3OVERLAY_1 - {SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_3, 0}, // S_JACKO3OVERLAY_2 - {SPR_PUMK, 11|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_4, 0}, // S_JACKO3OVERLAY_3 - {SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_1, 0}, // S_JACKO3OVERLAY_4 + {"S_JACKO1", 0, SPR_PUMK, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_JACKO1OVERLAY_1", 0, SPR_PUMK, 3|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_2, 0}, + {"S_JACKO1OVERLAY_2", 0, SPR_PUMK, 4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_3, 0}, + {"S_JACKO1OVERLAY_3", 0, SPR_PUMK, 5|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_4, 0}, + {"S_JACKO1OVERLAY_4", 0, SPR_PUMK, 4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_1, 0}, + {"S_JACKO2", 0, SPR_PUMK, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_JACKO2OVERLAY_1", 0, SPR_PUMK, 6|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_2, 0}, + {"S_JACKO2OVERLAY_2", 0, SPR_PUMK, 7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_3, 0}, + {"S_JACKO2OVERLAY_3", 0, SPR_PUMK, 8|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_4, 0}, + {"S_JACKO2OVERLAY_4", 0, SPR_PUMK, 7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_1, 0}, + {"S_JACKO3", 0, SPR_PUMK, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_JACKO3OVERLAY_1", 0, SPR_PUMK, 9|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_2, 0}, + {"S_JACKO3OVERLAY_2", 0, SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_3, 0}, + {"S_JACKO3OVERLAY_3", 0, SPR_PUMK, 11|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_4, 0}, + {"S_JACKO3OVERLAY_4", 0, SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_1, 0}, // Dr Seuss Trees - {SPR_HHPL, 2, -1, {A_ConnectToGround}, MT_HHZTREE_PART, 0, S_NULL, 0}, // S_HHZTREE_TOP, - {SPR_HHPL, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZTREE_TRUNK, - {SPR_HHPL, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZTREE_LEAF, + {"S_HHZTREE_TOP", 0, SPR_HHPL, 2, -1, {A_ConnectToGround}, MT_HHZTREE_PART, 0, S_NULL, 0}, + {"S_HHZTREE_TRUNK", 0, SPR_HHPL, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_HHZTREE_LEAF", 0, SPR_HHPL, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // Mushroom - {SPR_SHRM, 4, 3, {NULL}, 0, 0, S_HHZSHROOM_2, 0}, // S_HHZSHROOM_1, - {SPR_SHRM, 3, 3, {NULL}, 0, 0, S_HHZSHROOM_3, 0}, // S_HHZSHROOM_2, - {SPR_SHRM, 2, 2, {NULL}, 0, 0, S_HHZSHROOM_4, 0}, // S_HHZSHROOM_3, - {SPR_SHRM, 1, 1, {NULL}, 0, 0, S_HHZSHROOM_5, 0}, // S_HHZSHROOM_4, - {SPR_SHRM, 0, 1, {NULL}, 0, 0, S_HHZSHROOM_6, 0}, // S_HHZSHROOM_5, - {SPR_SHRM, 1, 4, {NULL}, 0, 0, S_HHZSHROOM_7, 0}, // S_HHZSHROOM_6, - {SPR_SHRM, 2, 2, {NULL}, 0, 0, S_HHZSHROOM_8, 0}, // S_HHZSHROOM_7, - {SPR_SHRM, 3, 3, {NULL}, 0, 0, S_HHZSHROOM_9, 0}, // S_HHZSHROOM_8, - {SPR_SHRM, 4, 3, {NULL}, 0, 0, S_HHZSHROOM_10, 0}, // S_HHZSHROOM_9, - {SPR_SHRM, 3, 3, {NULL}, 0, 0, S_HHZSHROOM_11, 0}, // S_HHZSHROOM_10, - {SPR_SHRM, 5, 2, {NULL}, 0, 0, S_HHZSHROOM_12, 0}, // S_HHZSHROOM_11, - {SPR_SHRM, 6, 1, {NULL}, 0, 0, S_HHZSHROOM_13, 0}, // S_HHZSHROOM_12, - {SPR_SHRM, 7, 1, {NULL}, 0, 0, S_HHZSHROOM_14, 0}, // S_HHZSHROOM_13, - {SPR_SHRM, 6, 4, {NULL}, 0, 0, S_HHZSHROOM_15, 0}, // S_HHZSHROOM_14, - {SPR_SHRM, 5, 2, {NULL}, 0, 0, S_HHZSHROOM_16, 0}, // S_HHZSHROOM_15, - {SPR_SHRM, 3, 3, {NULL}, 0, 0, S_HHZSHROOM_1, 0}, // S_HHZSHROOM_16, + {"S_HHZSHROOM_1", 0, SPR_SHRM, 4, 3, {NULL}, 0, 0, S_HHZSHROOM_2, 0}, + {"S_HHZSHROOM_2", 0, SPR_SHRM, 3, 3, {NULL}, 0, 0, S_HHZSHROOM_3, 0}, + {"S_HHZSHROOM_3", 0, SPR_SHRM, 2, 2, {NULL}, 0, 0, S_HHZSHROOM_4, 0}, + {"S_HHZSHROOM_4", 0, SPR_SHRM, 1, 1, {NULL}, 0, 0, S_HHZSHROOM_5, 0}, + {"S_HHZSHROOM_5", 0, SPR_SHRM, 0, 1, {NULL}, 0, 0, S_HHZSHROOM_6, 0}, + {"S_HHZSHROOM_6", 0, SPR_SHRM, 1, 4, {NULL}, 0, 0, S_HHZSHROOM_7, 0}, + {"S_HHZSHROOM_7", 0, SPR_SHRM, 2, 2, {NULL}, 0, 0, S_HHZSHROOM_8, 0}, + {"S_HHZSHROOM_8", 0, SPR_SHRM, 3, 3, {NULL}, 0, 0, S_HHZSHROOM_9, 0}, + {"S_HHZSHROOM_9", 0, SPR_SHRM, 4, 3, {NULL}, 0, 0, S_HHZSHROOM_10, 0}, + {"S_HHZSHROOM_10", 0, SPR_SHRM, 3, 3, {NULL}, 0, 0, S_HHZSHROOM_11, 0}, + {"S_HHZSHROOM_11", 0, SPR_SHRM, 5, 2, {NULL}, 0, 0, S_HHZSHROOM_12, 0}, + {"S_HHZSHROOM_12", 0, SPR_SHRM, 6, 1, {NULL}, 0, 0, S_HHZSHROOM_13, 0}, + {"S_HHZSHROOM_13", 0, SPR_SHRM, 7, 1, {NULL}, 0, 0, S_HHZSHROOM_14, 0}, + {"S_HHZSHROOM_14", 0, SPR_SHRM, 6, 4, {NULL}, 0, 0, S_HHZSHROOM_15, 0}, + {"S_HHZSHROOM_15", 0, SPR_SHRM, 5, 2, {NULL}, 0, 0, S_HHZSHROOM_16, 0}, + {"S_HHZSHROOM_16", 0, SPR_SHRM, 3, 3, {NULL}, 0, 0, S_HHZSHROOM_1, 0}, // Misc - {SPR_HHZM, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZGRASS, - {SPR_HHZM, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZTENT1, - {SPR_HHZM, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZTENT2, - {SPR_HHZM, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZSTALAGMITE_TALL, - {SPR_HHZM, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HHZSTALAGMITE_SHORT, + {"S_HHZGRASS", 0, SPR_HHZM, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_HHZTENT1", 0, SPR_HHZM, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_HHZTENT2", 0, SPR_HHZM, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_HHZSTALAGMITE_TALL", 0, SPR_HHZM, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_HHZSTALAGMITE_SHORT", 0, SPR_HHZM, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // Loads of Botanic Serenity bullshit - {SPR_BSZ1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_RED - {SPR_BSZ1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_PURPLE - {SPR_BSZ1, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_BLUE - {SPR_BSZ1, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_CYAN - {SPR_BSZ1, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_YELLOW - {SPR_BSZ1, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZTALLFLOWER_ORANGE - {SPR_BSZ2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_RED - {SPR_BSZ2, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_PURPLE - {SPR_BSZ2, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_BLUE - {SPR_BSZ2, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_CYAN - {SPR_BSZ2, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_YELLOW - {SPR_BSZ2, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZFLOWER_ORANGE - {SPR_BSZ3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_RED - {SPR_BSZ3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_PURPLE - {SPR_BSZ3, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_BLUE - {SPR_BSZ3, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_CYAN - {SPR_BSZ3, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_YELLOW - {SPR_BSZ3, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHORTFLOWER_ORANGE - {SPR_BST1, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_RED - {SPR_BST2, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_PURPLE - {SPR_BST3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_BLUE - {SPR_BST4, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_CYAN - {SPR_BST5, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_YELLOW - {SPR_BST6, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, // S_BSZTULIP_ORANGE - {SPR_BSZ5, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_RED - {SPR_BSZ5, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_PURPLE - {SPR_BSZ5, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_BLUE - {SPR_BSZ5, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_CYAN - {SPR_BSZ5, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_YELLOW - {SPR_BSZ5, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLUSTER_ORANGE - {SPR_BSZ6, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_RED - {SPR_BSZ6, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_PURPLE - {SPR_BSZ6, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_BLUE - {SPR_BSZ6, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_CYAN - {SPR_BSZ6, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_YELLOW - {SPR_BSZ6, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZBUSH_ORANGE - {SPR_BSZ7, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_RED - {SPR_BSZ7, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_PURPLE - {SPR_BSZ7, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_BLUE - {SPR_BSZ7, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_CYAN - {SPR_BSZ7, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_YELLOW - {SPR_BSZ7, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZVINE_ORANGE - {SPR_BSZ8, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZSHRUB - {SPR_BSZ8, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BSZCLOVER - {SPR_BSZ8, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BIG_PALMTREE_TRUNK - {SPR_BSZ8, 3, -1, {A_ConnectToGround}, MT_BIG_PALMTREE_TRUNK, 0, S_NULL, 0}, // S_BIG_PALMTREE_TOP - {SPR_BSZ8, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_PALMTREE_TRUNK - {SPR_BSZ8, 5, -1, {A_ConnectToGround}, MT_PALMTREE_TRUNK, 0, S_NULL, 0}, // S_PALMTREE_TOP + {"S_BSZTALLFLOWER_RED", 0, SPR_BSZ1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZTALLFLOWER_PURPLE", 0, SPR_BSZ1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZTALLFLOWER_BLUE", 0, SPR_BSZ1, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZTALLFLOWER_CYAN", 0, SPR_BSZ1, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZTALLFLOWER_YELLOW", 0, SPR_BSZ1, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZTALLFLOWER_ORANGE", 0, SPR_BSZ1, 5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZFLOWER_RED", 0, SPR_BSZ2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZFLOWER_PURPLE", 0, SPR_BSZ2, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZFLOWER_BLUE", 0, SPR_BSZ2, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZFLOWER_CYAN", 0, SPR_BSZ2, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZFLOWER_YELLOW", 0, SPR_BSZ2, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZFLOWER_ORANGE", 0, SPR_BSZ2, 5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZSHORTFLOWER_RED", 0, SPR_BSZ3, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZSHORTFLOWER_PURPLE", 0, SPR_BSZ3, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZSHORTFLOWER_BLUE", 0, SPR_BSZ3, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZSHORTFLOWER_CYAN", 0, SPR_BSZ3, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZSHORTFLOWER_YELLOW", 0, SPR_BSZ3, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZSHORTFLOWER_ORANGE", 0, SPR_BSZ3, 5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZTULIP_RED", 0, SPR_BST1, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, + {"S_BSZTULIP_PURPLE", 0, SPR_BST2, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, + {"S_BSZTULIP_BLUE", 0, SPR_BST3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, + {"S_BSZTULIP_CYAN", 0, SPR_BST4, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, + {"S_BSZTULIP_YELLOW", 0, SPR_BST5, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, + {"S_BSZTULIP_ORANGE", 0, SPR_BST6, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL, 0}, + {"S_BSZCLUSTER_RED", 0, SPR_BSZ5, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZCLUSTER_PURPLE", 0, SPR_BSZ5, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZCLUSTER_BLUE", 0, SPR_BSZ5, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZCLUSTER_CYAN", 0, SPR_BSZ5, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZCLUSTER_YELLOW", 0, SPR_BSZ5, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZCLUSTER_ORANGE", 0, SPR_BSZ5, 5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZBUSH_RED", 0, SPR_BSZ6, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZBUSH_PURPLE", 0, SPR_BSZ6, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZBUSH_BLUE", 0, SPR_BSZ6, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZBUSH_CYAN", 0, SPR_BSZ6, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZBUSH_YELLOW", 0, SPR_BSZ6, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZBUSH_ORANGE", 0, SPR_BSZ6, 5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZVINE_RED", 0, SPR_BSZ7, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZVINE_PURPLE", 0, SPR_BSZ7, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZVINE_BLUE", 0, SPR_BSZ7, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZVINE_CYAN", 0, SPR_BSZ7, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZVINE_YELLOW", 0, SPR_BSZ7, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZVINE_ORANGE", 0, SPR_BSZ7, 5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZSHRUB", 0, SPR_BSZ8, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BSZCLOVER", 0, SPR_BSZ8, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BIG_PALMTREE_TRUNK", 0, SPR_BSZ8, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BIG_PALMTREE_TOP", 0, SPR_BSZ8, 3, -1, {A_ConnectToGround}, MT_BIG_PALMTREE_TRUNK, 0, S_NULL, 0}, + {"S_PALMTREE_TRUNK", 0, SPR_BSZ8, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_PALMTREE_TOP", 0, SPR_BSZ8, 5, -1, {A_ConnectToGround}, MT_PALMTREE_TRUNK, 0, S_NULL, 0}, // Disco ball - {SPR_DBAL, FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_DBALL2, 0}, // S_DBALL1 - {SPR_DBAL, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_DBALL3, 0}, // S_DBALL2 - {SPR_DBAL, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_DBALL4, 0}, // S_DBALL3 - {SPR_DBAL, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_DBALL5, 0}, // S_DBALL4 - {SPR_DBAL, FF_FULLBRIGHT|4, 5, {NULL}, 0, 0, S_DBALL6, 0}, // S_DBALL5 - {SPR_DBAL, FF_FULLBRIGHT|5, 5, {NULL}, 0, 0, S_DBALL1, 0}, // S_DBALL6 + {"S_DBALL1", 0, SPR_DBAL, FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_DBALL2, 0}, + {"S_DBALL2", 0, SPR_DBAL, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_DBALL3, 0}, + {"S_DBALL3", 0, SPR_DBAL, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_DBALL4, 0}, + {"S_DBALL4", 0, SPR_DBAL, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_DBALL5, 0}, + {"S_DBALL5", 0, SPR_DBAL, FF_FULLBRIGHT|4, 5, {NULL}, 0, 0, S_DBALL6, 0}, + {"S_DBALL6", 0, SPR_DBAL, FF_FULLBRIGHT|5, 5, {NULL}, 0, 0, S_DBALL1, 0}, - {SPR_ESTA, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGSTATUE2 + {"S_EGGSTATUE2", 0, SPR_ESTA, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // Shield Orb - {SPR_ARMA, FF_TRANS40 , 2, {NULL}, 0, 0, S_ARMA2 , 0}, // S_ARMA1 - {SPR_ARMA, FF_TRANS40| 1, 2, {NULL}, 0, 0, S_ARMA3 , 0}, // S_ARMA2 - {SPR_ARMA, FF_TRANS40| 2, 2, {NULL}, 0, 0, S_ARMA4 , 0}, // S_ARMA3 - {SPR_ARMA, FF_TRANS40| 3, 2, {NULL}, 0, 0, S_ARMA5 , 0}, // S_ARMA4 - {SPR_ARMA, FF_TRANS40| 4, 2, {NULL}, 0, 0, S_ARMA6 , 0}, // S_ARMA5 - {SPR_ARMA, FF_TRANS40| 5, 2, {NULL}, 0, 0, S_ARMA7 , 0}, // S_ARMA6 - {SPR_ARMA, FF_TRANS40| 6, 2, {NULL}, 0, 0, S_ARMA8 , 0}, // S_ARMA7 - {SPR_ARMA, FF_TRANS40| 7, 2, {NULL}, 0, 0, S_ARMA9 , 0}, // S_ARMA8 - {SPR_ARMA, FF_TRANS40| 8, 2, {NULL}, 0, 0, S_ARMA10, 0}, // S_ARMA9 - {SPR_ARMA, FF_TRANS40| 9, 2, {NULL}, 0, 0, S_ARMA11, 0}, // S_ARMA10 - {SPR_ARMA, FF_TRANS40|10, 2, {NULL}, 0, 0, S_ARMA12, 0}, // S_ARMA11 - {SPR_ARMA, FF_TRANS40|11, 2, {NULL}, 0, 0, S_ARMA13, 0}, // S_ARMA12 - {SPR_ARMA, FF_TRANS40|12, 2, {NULL}, 0, 0, S_ARMA14, 0}, // S_ARMA13 - {SPR_ARMA, FF_TRANS40|13, 2, {NULL}, 0, 0, S_ARMA15, 0}, // S_ARMA14 - {SPR_ARMA, FF_TRANS40|14, 2, {NULL}, 0, 0, S_ARMA16, 0}, // S_ARMA15 - {SPR_ARMA, FF_TRANS40|15, 2, {NULL}, 0, 0, S_ARMA1 , 0}, // S_ARMA16 - - {SPR_ARMF, FF_FULLBRIGHT , 2, {NULL}, 0, 0, S_ARMF2 , 0}, // S_ARMF1 - {SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF3 , 0}, // S_ARMF2 - {SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF4 , 0}, // S_ARMF3 - {SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF5 , 0}, // S_ARMF4 - {SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF6 , 0}, // S_ARMF5 - {SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF7 , 0}, // S_ARMF6 - {SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF8 , 0}, // S_ARMF7 - {SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF9 , 0}, // S_ARMF8 - {SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF10, 0}, // S_ARMF9 - {SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF11, 0}, // S_ARMF10 - {SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF12, 0}, // S_ARMF11 - {SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF13, 0}, // S_ARMF12 - {SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF14, 0}, // S_ARMF13 - {SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF15, 0}, // S_ARMF14 - {SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF16, 0}, // S_ARMF15 - {SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF17, 0}, // S_ARMF16 - {SPR_ARMB, FF_FULLBRIGHT , 2, {NULL}, 0, 0, S_ARMF18, 0}, // S_ARMF17 - {SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF19, 0}, // S_ARMF18 - {SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF20, 0}, // S_ARMF19 - {SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF21, 0}, // S_ARMF20 - {SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF22, 0}, // S_ARMF21 - {SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF23, 0}, // S_ARMF22 - {SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF24, 0}, // S_ARMF23 - {SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF25, 0}, // S_ARMF24 - {SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF26, 0}, // S_ARMF25 - {SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF27, 0}, // S_ARMF26 - {SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF28, 0}, // S_ARMF27 - {SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF29, 0}, // S_ARMF28 - {SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF30, 0}, // S_ARMF29 - {SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF31, 0}, // S_ARMF30 - {SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF32, 0}, // S_ARMF31 - {SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF1 , 0}, // S_ARMF32 - - {SPR_ARMB, FF_FULLBRIGHT , 2, {NULL}, 1, 0, S_ARMB2 , 0}, // S_ARMB1 - {SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB3 , 0}, // S_ARMB2 - {SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB4 , 0}, // S_ARMB3 - {SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB5 , 0}, // S_ARMB4 - {SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB6 , 0}, // S_ARMB5 - {SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB7 , 0}, // S_ARMB6 - {SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB8 , 0}, // S_ARMB7 - {SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB9 , 0}, // S_ARMB8 - {SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB10, 0}, // S_ARMB9 - {SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB11, 0}, // S_ARMB10 - {SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB12, 0}, // S_ARMB11 - {SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB13, 0}, // S_ARMB12 - {SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB14, 0}, // S_ARMB13 - {SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB15, 0}, // S_ARMB14 - {SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB16, 0}, // S_ARMB15 - {SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB17, 0}, // S_ARMB16 - {SPR_ARMF, FF_FULLBRIGHT , 2, {NULL}, 1, 0, S_ARMB18, 0}, // S_ARMB17 - {SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB19, 0}, // S_ARMB18 - {SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB20, 0}, // S_ARMB19 - {SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB21, 0}, // S_ARMB20 - {SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB22, 0}, // S_ARMB21 - {SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB23, 0}, // S_ARMB22 - {SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB24, 0}, // S_ARMB23 - {SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB25, 0}, // S_ARMB24 - {SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB26, 0}, // S_ARMB25 - {SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB27, 0}, // S_ARMB26 - {SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB28, 0}, // S_ARMB27 - {SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB29, 0}, // S_ARMB28 - {SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB30, 0}, // S_ARMB29 - {SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB31, 0}, // S_ARMB30 - {SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB32, 0}, // S_ARMB31 - {SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB1 , 0}, // S_ARMB32 - - {SPR_WIND, FF_TRANS70 , 2, {NULL}, 0, 0, S_WIND2, 0}, // S_WIND1 - {SPR_WIND, FF_TRANS70|1, 2, {NULL}, 0, 0, S_WIND3, 0}, // S_WIND2 - {SPR_WIND, FF_TRANS70|2, 2, {NULL}, 0, 0, S_WIND4, 0}, // S_WIND3 - {SPR_WIND, FF_TRANS70|3, 2, {NULL}, 0, 0, S_WIND5, 0}, // S_WIND4 - {SPR_WIND, FF_TRANS70|4, 2, {NULL}, 0, 0, S_WIND6, 0}, // S_WIND5 - {SPR_WIND, FF_TRANS70|5, 2, {NULL}, 0, 0, S_WIND7, 0}, // S_WIND6 - {SPR_WIND, FF_TRANS70|6, 2, {NULL}, 0, 0, S_WIND8, 0}, // S_WIND7 - {SPR_WIND, FF_TRANS70|7, 2, {NULL}, 0, 0, S_WIND1, 0}, // S_WIND8 - - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40 , 2, {NULL}, 0, 0, S_MAGN2 , 0}, // S_MAGN1 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 1, 2, {NULL}, 0, 0, S_MAGN3 , 0}, // S_MAGN2 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 2, 2, {NULL}, 0, 0, S_MAGN4 , 0}, // S_MAGN3 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 3, 2, {NULL}, 0, 0, S_MAGN5 , 0}, // S_MAGN4 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 4, 2, {NULL}, 0, 0, S_MAGN6 , 0}, // S_MAGN5 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 5, 2, {NULL}, 0, 0, S_MAGN7 , 0}, // S_MAGN6 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 6, 2, {NULL}, 0, 0, S_MAGN8 , 0}, // S_MAGN7 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 7, 2, {NULL}, 0, 0, S_MAGN9 , 0}, // S_MAGN8 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 8, 2, {NULL}, 0, 0, S_MAGN10, 0}, // S_MAGN9 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_MAGN11, 0}, // S_MAGN10 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_MAGN12, 0}, // S_MAGN11 - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_MAGN1 , 0}, // S_MAGN12 - - {SPR_MAGN, FF_FULLBRIGHT|FF_TRANS10|12, 2, {NULL}, 0, 0, S_MAGN1 , 0}, // S_MAGN13 - - {SPR_FORC, FF_TRANS50 , 3, {NULL}, 0, 0, S_FORC2 , 0}, // S_FORC1 - {SPR_FORC, FF_TRANS50|1, 3, {NULL}, 0, 0, S_FORC3 , 0}, // S_FORC2 - {SPR_FORC, FF_TRANS50|2, 3, {NULL}, 0, 0, S_FORC4 , 0}, // S_FORC3 - {SPR_FORC, FF_TRANS50|3, 3, {NULL}, 0, 0, S_FORC5 , 0}, // S_FORC4 - {SPR_FORC, FF_TRANS50|4, 3, {NULL}, 0, 0, S_FORC6 , 0}, // S_FORC5 - {SPR_FORC, FF_TRANS50|5, 3, {NULL}, 0, 0, S_FORC7 , 0}, // S_FORC6 - {SPR_FORC, FF_TRANS50|6, 3, {NULL}, 0, 0, S_FORC8 , 0}, // S_FORC7 - {SPR_FORC, FF_TRANS50|7, 3, {NULL}, 0, 0, S_FORC9 , 0}, // S_FORC8 - {SPR_FORC, FF_TRANS50|8, 3, {NULL}, 0, 0, S_FORC10, 0}, // S_FORC9 - {SPR_FORC, FF_TRANS50|9, 3, {NULL}, 0, 0, S_FORC1 , 0}, // S_FORC10 - - {SPR_FORC, FF_TRANS50|10, 3, {NULL}, 0, 0, S_FORC12, 0}, // S_FORC11 - {SPR_FORC, FF_TRANS50|11, 3, {NULL}, 0, 0, S_FORC13, 0}, // S_FORC12 - {SPR_FORC, FF_TRANS50|12, 3, {NULL}, 0, 0, S_FORC14, 0}, // S_FORC13 - {SPR_FORC, FF_TRANS50|13, 3, {NULL}, 0, 0, S_FORC15, 0}, // S_FORC14 - {SPR_FORC, FF_TRANS50|14, 3, {NULL}, 0, 0, S_FORC16, 0}, // S_FORC15 - {SPR_FORC, FF_TRANS50|15, 3, {NULL}, 0, 0, S_FORC17, 0}, // S_FORC16 - {SPR_FORC, FF_TRANS50|16, 3, {NULL}, 0, 0, S_FORC18, 0}, // S_FORC17 - {SPR_FORC, FF_TRANS50|17, 3, {NULL}, 0, 0, S_FORC19, 0}, // S_FORC18 - {SPR_FORC, FF_TRANS50|18, 3, {NULL}, 0, 0, S_FORC20, 0}, // S_FORC19 - {SPR_FORC, FF_TRANS50|19, 3, {NULL}, 0, 0, S_FORC11, 0}, // S_FORC20 - - {SPR_FORC, FF_TRANS50|20, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FORC21 - - {SPR_ELEM, FF_TRANS50 , 4, {NULL}, 0, 0, S_ELEM2 , 0}, // S_ELEM1 - {SPR_ELEM, FF_TRANS50| 1, 4, {NULL}, 0, 0, S_ELEM3 , 0}, // S_ELEM2 - {SPR_ELEM, FF_TRANS50| 2, 4, {NULL}, 0, 0, S_ELEM4 , 0}, // S_ELEM3 - {SPR_ELEM, FF_TRANS50| 3, 4, {NULL}, 0, 0, S_ELEM5 , 0}, // S_ELEM4 - {SPR_ELEM, FF_TRANS50| 4, 4, {NULL}, 0, 0, S_ELEM6 , 0}, // S_ELEM5 - {SPR_ELEM, FF_TRANS50| 5, 4, {NULL}, 0, 0, S_ELEM7 , 0}, // S_ELEM6 - {SPR_ELEM, FF_TRANS50| 6, 4, {NULL}, 0, 0, S_ELEM8 , 0}, // S_ELEM7 - {SPR_ELEM, FF_TRANS50| 7, 4, {NULL}, 0, 0, S_ELEM9 , 0}, // S_ELEM8 - {SPR_ELEM, FF_TRANS50| 8, 4, {NULL}, 0, 0, S_ELEM10, 0}, // S_ELEM9 - {SPR_ELEM, FF_TRANS50| 9, 4, {NULL}, 0, 0, S_ELEM11, 0}, // S_ELEM10 - {SPR_ELEM, FF_TRANS50|10, 4, {NULL}, 0, 0, S_ELEM12, 0}, // S_ELEM11 - {SPR_ELEM, FF_TRANS50|11, 4, {NULL}, 0, 0, S_ELEM1 , 0}, // S_ELEM12 - - {SPR_NULL, 0, 1, {NULL}, 0, 0, S_ELEM14, 0}, // S_ELEM13 - {SPR_ELEM, FF_TRANS50|11, 1, {NULL}, 0, 0, S_ELEM1 , 0}, // S_ELEM14 - - {SPR_ELEM, FF_FULLBRIGHT|12, 3, {NULL}, 0, 0, S_ELEMF2 , 0}, // S_ELEMF1 - {SPR_ELEM, FF_FULLBRIGHT|13, 3, {NULL}, 0, 0, S_ELEMF3 , 0}, // S_ELEMF2 - {SPR_ELEM, FF_FULLBRIGHT|14, 3, {NULL}, 0, 0, S_ELEMF4 , 0}, // S_ELEMF3 - {SPR_ELEM, FF_FULLBRIGHT|15, 3, {NULL}, 0, 0, S_ELEMF5 , 0}, // S_ELEMF4 - {SPR_ELEM, FF_FULLBRIGHT|16, 3, {NULL}, 0, 0, S_ELEMF6 , 0}, // S_ELEMF5 - {SPR_ELEM, FF_FULLBRIGHT|17, 3, {NULL}, 0, 0, S_ELEMF7 , 0}, // S_ELEMF6 - {SPR_ELEM, FF_FULLBRIGHT|18, 3, {NULL}, 0, 0, S_ELEMF8 , 0}, // S_ELEMF7 - {SPR_ELEM, FF_FULLBRIGHT|19, 3, {NULL}, 0, 0, S_ELEMF1 , 0}, // S_ELEMF8 - - {SPR_ELEM, FF_FULLBRIGHT|20, 1, {NULL}, 0, 0, S_ELEMF10, 0}, // S_ELEMF9 - {SPR_NULL, 0, 1, {NULL}, 0, 0, S_ELEMF1 , 0}, // S_ELEMF10 - - {SPR_PITY, FF_TRANS30 , 2, {NULL}, 0, 0, S_PITY2, 0}, // S_PITY1 - {SPR_PITY, FF_TRANS30| 1, 2, {NULL}, 0, 0, S_PITY3, 0}, // S_PITY2 - {SPR_PITY, FF_TRANS30| 2, 2, {NULL}, 0, 0, S_PITY4, 0}, // S_PITY3 - {SPR_PITY, FF_TRANS30| 3, 2, {NULL}, 0, 0, S_PITY5, 0}, // S_PITY4 - {SPR_PITY, FF_TRANS30| 4, 2, {NULL}, 0, 0, S_PITY6, 0}, // S_PITY5 - {SPR_PITY, FF_TRANS30| 5, 2, {NULL}, 0, 0, S_PITY7, 0}, // S_PITY6 - {SPR_PITY, FF_TRANS30| 6, 2, {NULL}, 0, 0, S_PITY8, 0}, // S_PITY7 - {SPR_PITY, FF_TRANS30| 7, 2, {NULL}, 0, 0, S_PITY9, 0}, // S_PITY8 - {SPR_PITY, FF_TRANS30| 8, 2, {NULL}, 0, 0, S_PITY10, 0}, // S_PITY9 - {SPR_PITY, FF_TRANS30| 9, 2, {NULL}, 0, 0, S_PITY11, 0}, // S_PITY10 - {SPR_PITY, FF_TRANS30|10, 2, {NULL}, 0, 0, S_PITY12, 0}, // S_PITY11 - {SPR_PITY, FF_TRANS30|11, 2, {NULL}, 0, 0, S_PITY1, 0}, // S_PITY12 - - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40 , 2, {NULL}, 0, 0, S_FIRS2, 0}, // S_FIRS1 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|1, 2, {NULL}, 0, 0, S_FIRS3, 0}, // S_FIRS2 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|2, 2, {NULL}, 0, 0, S_FIRS4, 0}, // S_FIRS3 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|3, 2, {NULL}, 0, 0, S_FIRS5, 0}, // S_FIRS4 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|4, 2, {NULL}, 0, 0, S_FIRS6, 0}, // S_FIRS5 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|5, 2, {NULL}, 0, 0, S_FIRS7, 0}, // S_FIRS6 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|6, 2, {NULL}, 0, 0, S_FIRS8, 0}, // S_FIRS7 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|7, 2, {NULL}, 0, 0, S_FIRS9, 0}, // S_FIRS8 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|8, 2, {NULL}, 0, 0, S_FIRS1, 0}, // S_FIRS9 - - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|18, 1, {NULL}, 0, 0, S_FIRS11, 0}, // S_FIRS10 - {SPR_NULL, 0, 1, {NULL}, 0, 0, S_FIRS1 , 0}, // S_FIRS11 - - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_FIRSB2, 0}, // S_FIRSB1 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_FIRSB3, 0}, // S_FIRSB2 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_FIRSB4, 0}, // S_FIRSB3 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|12, 2, {NULL}, 0, 0, S_FIRSB5, 0}, // S_FIRSB4 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|13, 2, {NULL}, 0, 0, S_FIRSB6, 0}, // S_FIRSB5 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|14, 2, {NULL}, 0, 0, S_FIRSB7, 0}, // S_FIRSB6 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|15, 2, {NULL}, 0, 0, S_FIRSB8, 0}, // S_FIRSB7 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|16, 2, {NULL}, 0, 0, S_FIRSB9, 0}, // S_FIRSB8 - {SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|17, 2, {NULL}, 0, 0, S_FIRSB1, 0}, // S_FIRSB9 - - {SPR_NULL, 0, 2, {NULL}, 0, 0, S_FIRSB1 , 0}, // S_FIRSB10 - - {SPR_BUBS, FF_TRANS30 , 3, {NULL}, 0, 0, S_BUBS2, 0}, // S_BUBS1 - {SPR_BUBS, FF_TRANS30|1, 3, {NULL}, 0, 0, S_BUBS3, 0}, // S_BUBS2 - {SPR_BUBS, FF_TRANS30|2, 3, {NULL}, 0, 0, S_BUBS4, 0}, // S_BUBS3 - {SPR_BUBS, FF_TRANS30|3, 3, {NULL}, 0, 0, S_BUBS5, 0}, // S_BUBS4 - {SPR_BUBS, FF_TRANS30|4, 3, {NULL}, 0, 0, S_BUBS6, 0}, // S_BUBS5 - {SPR_BUBS, FF_TRANS30|5, 3, {NULL}, 0, 0, S_BUBS7, 0}, // S_BUBS6 - {SPR_BUBS, FF_TRANS30|6, 3, {NULL}, 0, 0, S_BUBS8, 0}, // S_BUBS7 - {SPR_BUBS, FF_TRANS30|7, 3, {NULL}, 0, 0, S_BUBS9, 0}, // S_BUBS8 - {SPR_BUBS, FF_TRANS30|8, 3, {NULL}, 0, 0, S_BUBS1, 0}, // S_BUBS9 - - {SPR_NULL, 0, 3, {NULL}, 0, 0, S_BUBS1, 0}, // S_BUBS10 - {SPR_NULL, 0, 4*3, {NULL}, 0, 0, S_BUBS1, 0}, // S_BUBS11 - - {SPR_BUBS, FF_TRANS30| 9, 3, {NULL}, 0, 0, S_BUBSB2, 0}, // S_BUBSB1 - {SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB3, 0}, // S_BUBSB2 - {SPR_BUBS, FF_TRANS30|11, 3, {NULL}, 0, 0, S_BUBSB4, 0}, // S_BUBSB3 - {SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB1, 0}, // S_BUBSB4 - - {SPR_BUBS, FF_TRANS30|12, 3, {NULL}, 0, 0, S_BUBSB3, 0}, // S_BUBSB5 - {SPR_BUBS, FF_TRANS30|13, 3, {NULL}, 0, 0, S_BUBSB5, 0}, // S_BUBSB6 - - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20 , 2, {NULL}, 0, 0, S_ZAPS2 , 0}, // S_ZAPS1 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1, 2, {NULL}, 0, 0, S_ZAPS3 , 0}, // S_ZAPS2 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2, 2, {NULL}, 0, 0, S_ZAPS4 , 0}, // S_ZAPS3 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3, 2, {NULL}, 0, 0, S_ZAPS5 , 0}, // S_ZAPS4 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4, 2, {NULL}, 0, 0, S_ZAPS6 , 0}, // S_ZAPS5 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5, 2, {NULL}, 0, 0, S_ZAPS7 , 0}, // S_ZAPS6 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6, 2, {NULL}, 0, 0, S_ZAPS8 , 0}, // S_ZAPS7 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7, 2, {NULL}, 0, 0, S_ZAPS9 , 0}, // S_ZAPS8 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8, 2, {NULL}, 0, 0, S_ZAPS10, 0}, // S_ZAPS9 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9, 2, {NULL}, 0, 0, S_ZAPS11, 0}, // S_ZAPS10 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10, 2, {NULL}, 0, 0, S_ZAPS12, 0}, // S_ZAPS11 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11, 2, {NULL}, 0, 0, S_ZAPS13, 0}, // S_ZAPS12 - {SPR_NULL, 0, 9*2, {NULL}, 0, 0, S_ZAPS14, 0}, // S_ZAPS13 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9, 2, {NULL}, 0, 0, S_ZAPS15, 0}, // S_ZAPS14 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10, 2, {NULL}, 0, 0, S_ZAPS16, 0}, // S_ZAPS15 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11, 2, {NULL}, 0, 0, S_ZAPS1 , 0}, // S_ZAPS16 - - {SPR_NULL, 0, 12*2, {NULL}, 0, 0, S_ZAPSB2 , 0}, // S_ZAPSB1 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8, 2, {NULL}, 0, 0, S_ZAPSB3 , 0}, // S_ZAPSB2 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7, 2, {NULL}, 0, 0, S_ZAPSB4 , 0}, // S_ZAPSB3 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6, 2, {NULL}, 0, 0, S_ZAPSB5 , 0}, // S_ZAPSB4 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5, 2, {NULL}, 0, 0, S_ZAPSB6 , 0}, // S_ZAPSB5 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4, 2, {NULL}, 0, 0, S_ZAPSB7 , 0}, // S_ZAPSB6 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3, 2, {NULL}, 0, 0, S_ZAPSB8 , 0}, // S_ZAPSB7 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2, 2, {NULL}, 0, 0, S_ZAPSB9 , 0}, // S_ZAPSB8 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1, 2, {NULL}, 0, 0, S_ZAPSB10, 0}, // S_ZAPSB9 - {SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20 , 2, {NULL}, 0, 0, S_ZAPSB11, 0}, // S_ZAPSB10 - {SPR_NULL, 0, 15*2, {NULL}, 0, 0, S_ZAPSB2 , 0}, // S_ZAPSB11 + {"S_ARMA1", 0, SPR_ARMA, FF_TRANS40 , 2, {NULL}, 0, 0, S_ARMA2 , 0}, + {"S_ARMA2", 0, SPR_ARMA, FF_TRANS40| 1, 2, {NULL}, 0, 0, S_ARMA3 , 0}, + {"S_ARMA3", 0, SPR_ARMA, FF_TRANS40| 2, 2, {NULL}, 0, 0, S_ARMA4 , 0}, + {"S_ARMA4", 0, SPR_ARMA, FF_TRANS40| 3, 2, {NULL}, 0, 0, S_ARMA5 , 0}, + {"S_ARMA5", 0, SPR_ARMA, FF_TRANS40| 4, 2, {NULL}, 0, 0, S_ARMA6 , 0}, + {"S_ARMA6", 0, SPR_ARMA, FF_TRANS40| 5, 2, {NULL}, 0, 0, S_ARMA7 , 0}, + {"S_ARMA7", 0, SPR_ARMA, FF_TRANS40| 6, 2, {NULL}, 0, 0, S_ARMA8 , 0}, + {"S_ARMA8", 0, SPR_ARMA, FF_TRANS40| 7, 2, {NULL}, 0, 0, S_ARMA9 , 0}, + {"S_ARMA9", 0, SPR_ARMA, FF_TRANS40| 8, 2, {NULL}, 0, 0, S_ARMA10, 0}, + {"S_ARMA10", 0, SPR_ARMA, FF_TRANS40| 9, 2, {NULL}, 0, 0, S_ARMA11, 0}, + {"S_ARMA11", 0, SPR_ARMA, FF_TRANS40|10, 2, {NULL}, 0, 0, S_ARMA12, 0}, + {"S_ARMA12", 0, SPR_ARMA, FF_TRANS40|11, 2, {NULL}, 0, 0, S_ARMA13, 0}, + {"S_ARMA13", 0, SPR_ARMA, FF_TRANS40|12, 2, {NULL}, 0, 0, S_ARMA14, 0}, + {"S_ARMA14", 0, SPR_ARMA, FF_TRANS40|13, 2, {NULL}, 0, 0, S_ARMA15, 0}, + {"S_ARMA15", 0, SPR_ARMA, FF_TRANS40|14, 2, {NULL}, 0, 0, S_ARMA16, 0}, + {"S_ARMA16", 0, SPR_ARMA, FF_TRANS40|15, 2, {NULL}, 0, 0, S_ARMA1 , 0}, + + {"S_ARMF1", 0, SPR_ARMF, FF_FULLBRIGHT , 2, {NULL}, 0, 0, S_ARMF2 , 0}, + {"S_ARMF2", 0, SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF3 , 0}, + {"S_ARMF3", 0, SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF4 , 0}, + {"S_ARMF4", 0, SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF5 , 0}, + {"S_ARMF5", 0, SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF6 , 0}, + {"S_ARMF6", 0, SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF7 , 0}, + {"S_ARMF7", 0, SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF8 , 0}, + {"S_ARMF8", 0, SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF9 , 0}, + {"S_ARMF9", 0, SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF10, 0}, + {"S_ARMF10", 0, SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF11, 0}, + {"S_ARMF11", 0, SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF12, 0}, + {"S_ARMF12", 0, SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF13, 0}, + {"S_ARMF13", 0, SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF14, 0}, + {"S_ARMF14", 0, SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF15, 0}, + {"S_ARMF15", 0, SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF16, 0}, + {"S_ARMF16", 0, SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF17, 0}, + {"S_ARMF17", 0, SPR_ARMB, FF_FULLBRIGHT , 2, {NULL}, 0, 0, S_ARMF18, 0}, + {"S_ARMF18", 0, SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF19, 0}, + {"S_ARMF19", 0, SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF20, 0}, + {"S_ARMF20", 0, SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF21, 0}, + {"S_ARMF21", 0, SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF22, 0}, + {"S_ARMF22", 0, SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF23, 0}, + {"S_ARMF23", 0, SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF24, 0}, + {"S_ARMF24", 0, SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF25, 0}, + {"S_ARMF25", 0, SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF26, 0}, + {"S_ARMF26", 0, SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF27, 0}, + {"S_ARMF27", 0, SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF28, 0}, + {"S_ARMF28", 0, SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF29, 0}, + {"S_ARMF29", 0, SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF30, 0}, + {"S_ARMF30", 0, SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF31, 0}, + {"S_ARMF31", 0, SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF32, 0}, + {"S_ARMF32", 0, SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF1 , 0}, + + {"S_ARMB1", 0, SPR_ARMB, FF_FULLBRIGHT , 2, {NULL}, 1, 0, S_ARMB2 , 0}, + {"S_ARMB2", 0, SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB3 , 0}, + {"S_ARMB3", 0, SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB4 , 0}, + {"S_ARMB4", 0, SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB5 , 0}, + {"S_ARMB5", 0, SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB6 , 0}, + {"S_ARMB6", 0, SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB7 , 0}, + {"S_ARMB7", 0, SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB8 , 0}, + {"S_ARMB8", 0, SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB9 , 0}, + {"S_ARMB9", 0, SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB10, 0}, + {"S_ARMB10", 0, SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB11, 0}, + {"S_ARMB11", 0, SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB12, 0}, + {"S_ARMB12", 0, SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB13, 0}, + {"S_ARMB13", 0, SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB14, 0}, + {"S_ARMB14", 0, SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB15, 0}, + {"S_ARMB15", 0, SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB16, 0}, + {"S_ARMB16", 0, SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB17, 0}, + {"S_ARMB17", 0, SPR_ARMF, FF_FULLBRIGHT , 2, {NULL}, 1, 0, S_ARMB18, 0}, + {"S_ARMB18", 0, SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB19, 0}, + {"S_ARMB19", 0, SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB20, 0}, + {"S_ARMB20", 0, SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB21, 0}, + {"S_ARMB21", 0, SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB22, 0}, + {"S_ARMB22", 0, SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB23, 0}, + {"S_ARMB23", 0, SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB24, 0}, + {"S_ARMB24", 0, SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB25, 0}, + {"S_ARMB25", 0, SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB26, 0}, + {"S_ARMB26", 0, SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB27, 0}, + {"S_ARMB27", 0, SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB28, 0}, + {"S_ARMB28", 0, SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB29, 0}, + {"S_ARMB29", 0, SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB30, 0}, + {"S_ARMB30", 0, SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB31, 0}, + {"S_ARMB31", 0, SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB32, 0}, + {"S_ARMB32", 0, SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB1 , 0}, + + {"S_WIND1", 0, SPR_WIND, FF_TRANS70 , 2, {NULL}, 0, 0, S_WIND2, 0}, + {"S_WIND2", 0, SPR_WIND, FF_TRANS70|1, 2, {NULL}, 0, 0, S_WIND3, 0}, + {"S_WIND3", 0, SPR_WIND, FF_TRANS70|2, 2, {NULL}, 0, 0, S_WIND4, 0}, + {"S_WIND4", 0, SPR_WIND, FF_TRANS70|3, 2, {NULL}, 0, 0, S_WIND5, 0}, + {"S_WIND5", 0, SPR_WIND, FF_TRANS70|4, 2, {NULL}, 0, 0, S_WIND6, 0}, + {"S_WIND6", 0, SPR_WIND, FF_TRANS70|5, 2, {NULL}, 0, 0, S_WIND7, 0}, + {"S_WIND7", 0, SPR_WIND, FF_TRANS70|6, 2, {NULL}, 0, 0, S_WIND8, 0}, + {"S_WIND8", 0, SPR_WIND, FF_TRANS70|7, 2, {NULL}, 0, 0, S_WIND1, 0}, + + {"S_MAGN1", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40 , 2, {NULL}, 0, 0, S_MAGN2 , 0}, + {"S_MAGN2", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 1, 2, {NULL}, 0, 0, S_MAGN3 , 0}, + {"S_MAGN3", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 2, 2, {NULL}, 0, 0, S_MAGN4 , 0}, + {"S_MAGN4", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 3, 2, {NULL}, 0, 0, S_MAGN5 , 0}, + {"S_MAGN5", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 4, 2, {NULL}, 0, 0, S_MAGN6 , 0}, + {"S_MAGN6", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 5, 2, {NULL}, 0, 0, S_MAGN7 , 0}, + {"S_MAGN7", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 6, 2, {NULL}, 0, 0, S_MAGN8 , 0}, + {"S_MAGN8", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 7, 2, {NULL}, 0, 0, S_MAGN9 , 0}, + {"S_MAGN9", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 8, 2, {NULL}, 0, 0, S_MAGN10, 0}, + {"S_MAGN10", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_MAGN11, 0}, + {"S_MAGN11", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_MAGN12, 0}, + {"S_MAGN12", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_MAGN1 , 0}, + + {"S_MAGN13", 0, SPR_MAGN, FF_FULLBRIGHT|FF_TRANS10|12, 2, {NULL}, 0, 0, S_MAGN1 , 0}, + + {"S_FORC1", 0, SPR_FORC, FF_TRANS50 , 3, {NULL}, 0, 0, S_FORC2 , 0}, + {"S_FORC2", 0, SPR_FORC, FF_TRANS50|1, 3, {NULL}, 0, 0, S_FORC3 , 0}, + {"S_FORC3", 0, SPR_FORC, FF_TRANS50|2, 3, {NULL}, 0, 0, S_FORC4 , 0}, + {"S_FORC4", 0, SPR_FORC, FF_TRANS50|3, 3, {NULL}, 0, 0, S_FORC5 , 0}, + {"S_FORC5", 0, SPR_FORC, FF_TRANS50|4, 3, {NULL}, 0, 0, S_FORC6 , 0}, + {"S_FORC6", 0, SPR_FORC, FF_TRANS50|5, 3, {NULL}, 0, 0, S_FORC7 , 0}, + {"S_FORC7", 0, SPR_FORC, FF_TRANS50|6, 3, {NULL}, 0, 0, S_FORC8 , 0}, + {"S_FORC8", 0, SPR_FORC, FF_TRANS50|7, 3, {NULL}, 0, 0, S_FORC9 , 0}, + {"S_FORC9", 0, SPR_FORC, FF_TRANS50|8, 3, {NULL}, 0, 0, S_FORC10, 0}, + {"S_FORC10", 0, SPR_FORC, FF_TRANS50|9, 3, {NULL}, 0, 0, S_FORC1 , 0}, + + {"S_FORC11", 0, SPR_FORC, FF_TRANS50|10, 3, {NULL}, 0, 0, S_FORC12, 0}, + {"S_FORC12", 0, SPR_FORC, FF_TRANS50|11, 3, {NULL}, 0, 0, S_FORC13, 0}, + {"S_FORC13", 0, SPR_FORC, FF_TRANS50|12, 3, {NULL}, 0, 0, S_FORC14, 0}, + {"S_FORC14", 0, SPR_FORC, FF_TRANS50|13, 3, {NULL}, 0, 0, S_FORC15, 0}, + {"S_FORC15", 0, SPR_FORC, FF_TRANS50|14, 3, {NULL}, 0, 0, S_FORC16, 0}, + {"S_FORC16", 0, SPR_FORC, FF_TRANS50|15, 3, {NULL}, 0, 0, S_FORC17, 0}, + {"S_FORC17", 0, SPR_FORC, FF_TRANS50|16, 3, {NULL}, 0, 0, S_FORC18, 0}, + {"S_FORC18", 0, SPR_FORC, FF_TRANS50|17, 3, {NULL}, 0, 0, S_FORC19, 0}, + {"S_FORC19", 0, SPR_FORC, FF_TRANS50|18, 3, {NULL}, 0, 0, S_FORC20, 0}, + {"S_FORC20", 0, SPR_FORC, FF_TRANS50|19, 3, {NULL}, 0, 0, S_FORC11, 0}, + + {"S_FORC21", 0, SPR_FORC, FF_TRANS50|20, -1, {NULL}, 0, 0, S_NULL, 0}, + + {"S_ELEM1", 0, SPR_ELEM, FF_TRANS50 , 4, {NULL}, 0, 0, S_ELEM2 , 0}, + {"S_ELEM2", 0, SPR_ELEM, FF_TRANS50| 1, 4, {NULL}, 0, 0, S_ELEM3 , 0}, + {"S_ELEM3", 0, SPR_ELEM, FF_TRANS50| 2, 4, {NULL}, 0, 0, S_ELEM4 , 0}, + {"S_ELEM4", 0, SPR_ELEM, FF_TRANS50| 3, 4, {NULL}, 0, 0, S_ELEM5 , 0}, + {"S_ELEM5", 0, SPR_ELEM, FF_TRANS50| 4, 4, {NULL}, 0, 0, S_ELEM6 , 0}, + {"S_ELEM6", 0, SPR_ELEM, FF_TRANS50| 5, 4, {NULL}, 0, 0, S_ELEM7 , 0}, + {"S_ELEM7", 0, SPR_ELEM, FF_TRANS50| 6, 4, {NULL}, 0, 0, S_ELEM8 , 0}, + {"S_ELEM8", 0, SPR_ELEM, FF_TRANS50| 7, 4, {NULL}, 0, 0, S_ELEM9 , 0}, + {"S_ELEM9", 0, SPR_ELEM, FF_TRANS50| 8, 4, {NULL}, 0, 0, S_ELEM10, 0}, + {"S_ELEM10", 0, SPR_ELEM, FF_TRANS50| 9, 4, {NULL}, 0, 0, S_ELEM11, 0}, + {"S_ELEM11", 0, SPR_ELEM, FF_TRANS50|10, 4, {NULL}, 0, 0, S_ELEM12, 0}, + {"S_ELEM12", 0, SPR_ELEM, FF_TRANS50|11, 4, {NULL}, 0, 0, S_ELEM1 , 0}, + + {"S_ELEM13", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_ELEM14, 0}, + {"S_ELEM14", 0, SPR_ELEM, FF_TRANS50|11, 1, {NULL}, 0, 0, S_ELEM1 , 0}, + + {"S_ELEMF1", 0, SPR_ELEM, FF_FULLBRIGHT|12, 3, {NULL}, 0, 0, S_ELEMF2 , 0}, + {"S_ELEMF2", 0, SPR_ELEM, FF_FULLBRIGHT|13, 3, {NULL}, 0, 0, S_ELEMF3 , 0}, + {"S_ELEMF3", 0, SPR_ELEM, FF_FULLBRIGHT|14, 3, {NULL}, 0, 0, S_ELEMF4 , 0}, + {"S_ELEMF4", 0, SPR_ELEM, FF_FULLBRIGHT|15, 3, {NULL}, 0, 0, S_ELEMF5 , 0}, + {"S_ELEMF5", 0, SPR_ELEM, FF_FULLBRIGHT|16, 3, {NULL}, 0, 0, S_ELEMF6 , 0}, + {"S_ELEMF6", 0, SPR_ELEM, FF_FULLBRIGHT|17, 3, {NULL}, 0, 0, S_ELEMF7 , 0}, + {"S_ELEMF7", 0, SPR_ELEM, FF_FULLBRIGHT|18, 3, {NULL}, 0, 0, S_ELEMF8 , 0}, + {"S_ELEMF8", 0, SPR_ELEM, FF_FULLBRIGHT|19, 3, {NULL}, 0, 0, S_ELEMF1 , 0}, + + {"S_ELEMF9", 0, SPR_ELEM, FF_FULLBRIGHT|20, 1, {NULL}, 0, 0, S_ELEMF10, 0}, + {"S_ELEMF10", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_ELEMF1 , 0}, + + {"S_PITY1", 0, SPR_PITY, FF_TRANS30 , 2, {NULL}, 0, 0, S_PITY2, 0}, + {"S_PITY2", 0, SPR_PITY, FF_TRANS30| 1, 2, {NULL}, 0, 0, S_PITY3, 0}, + {"S_PITY3", 0, SPR_PITY, FF_TRANS30| 2, 2, {NULL}, 0, 0, S_PITY4, 0}, + {"S_PITY4", 0, SPR_PITY, FF_TRANS30| 3, 2, {NULL}, 0, 0, S_PITY5, 0}, + {"S_PITY5", 0, SPR_PITY, FF_TRANS30| 4, 2, {NULL}, 0, 0, S_PITY6, 0}, + {"S_PITY6", 0, SPR_PITY, FF_TRANS30| 5, 2, {NULL}, 0, 0, S_PITY7, 0}, + {"S_PITY7", 0, SPR_PITY, FF_TRANS30| 6, 2, {NULL}, 0, 0, S_PITY8, 0}, + {"S_PITY8", 0, SPR_PITY, FF_TRANS30| 7, 2, {NULL}, 0, 0, S_PITY9, 0}, + {"S_PITY9", 0, SPR_PITY, FF_TRANS30| 8, 2, {NULL}, 0, 0, S_PITY10, 0}, + {"S_PITY10", 0, SPR_PITY, FF_TRANS30| 9, 2, {NULL}, 0, 0, S_PITY11, 0}, + {"S_PITY11", 0, SPR_PITY, FF_TRANS30|10, 2, {NULL}, 0, 0, S_PITY12, 0}, + {"S_PITY12", 0, SPR_PITY, FF_TRANS30|11, 2, {NULL}, 0, 0, S_PITY1, 0}, + + {"S_FIRS1", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40 , 2, {NULL}, 0, 0, S_FIRS2, 0}, + {"S_FIRS2", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|1, 2, {NULL}, 0, 0, S_FIRS3, 0}, + {"S_FIRS3", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|2, 2, {NULL}, 0, 0, S_FIRS4, 0}, + {"S_FIRS4", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|3, 2, {NULL}, 0, 0, S_FIRS5, 0}, + {"S_FIRS5", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|4, 2, {NULL}, 0, 0, S_FIRS6, 0}, + {"S_FIRS6", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|5, 2, {NULL}, 0, 0, S_FIRS7, 0}, + {"S_FIRS7", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|6, 2, {NULL}, 0, 0, S_FIRS8, 0}, + {"S_FIRS8", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|7, 2, {NULL}, 0, 0, S_FIRS9, 0}, + {"S_FIRS9", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|8, 2, {NULL}, 0, 0, S_FIRS1, 0}, + + {"S_FIRS10", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|18, 1, {NULL}, 0, 0, S_FIRS11, 0}, + {"S_FIRS11", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_FIRS1 , 0}, + + {"S_FIRSB1", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_FIRSB2, 0}, + {"S_FIRSB2", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_FIRSB3, 0}, + {"S_FIRSB3", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_FIRSB4, 0}, + {"S_FIRSB4", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|12, 2, {NULL}, 0, 0, S_FIRSB5, 0}, + {"S_FIRSB5", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|13, 2, {NULL}, 0, 0, S_FIRSB6, 0}, + {"S_FIRSB6", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|14, 2, {NULL}, 0, 0, S_FIRSB7, 0}, + {"S_FIRSB7", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|15, 2, {NULL}, 0, 0, S_FIRSB8, 0}, + {"S_FIRSB8", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|16, 2, {NULL}, 0, 0, S_FIRSB9, 0}, + {"S_FIRSB9", 0, SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|17, 2, {NULL}, 0, 0, S_FIRSB1, 0}, + + {"S_FIRSB10", 0, SPR_NULL, 0, 2, {NULL}, 0, 0, S_FIRSB1 , 0}, + + {"S_BUBS1", 0, SPR_BUBS, FF_TRANS30 , 3, {NULL}, 0, 0, S_BUBS2, 0}, + {"S_BUBS2", 0, SPR_BUBS, FF_TRANS30|1, 3, {NULL}, 0, 0, S_BUBS3, 0}, + {"S_BUBS3", 0, SPR_BUBS, FF_TRANS30|2, 3, {NULL}, 0, 0, S_BUBS4, 0}, + {"S_BUBS4", 0, SPR_BUBS, FF_TRANS30|3, 3, {NULL}, 0, 0, S_BUBS5, 0}, + {"S_BUBS5", 0, SPR_BUBS, FF_TRANS30|4, 3, {NULL}, 0, 0, S_BUBS6, 0}, + {"S_BUBS6", 0, SPR_BUBS, FF_TRANS30|5, 3, {NULL}, 0, 0, S_BUBS7, 0}, + {"S_BUBS7", 0, SPR_BUBS, FF_TRANS30|6, 3, {NULL}, 0, 0, S_BUBS8, 0}, + {"S_BUBS8", 0, SPR_BUBS, FF_TRANS30|7, 3, {NULL}, 0, 0, S_BUBS9, 0}, + {"S_BUBS9", 0, SPR_BUBS, FF_TRANS30|8, 3, {NULL}, 0, 0, S_BUBS1, 0}, + + {"S_BUBS10", 0, SPR_NULL, 0, 3, {NULL}, 0, 0, S_BUBS1, 0}, + {"S_BUBS11", 0, SPR_NULL, 0, 4*3, {NULL}, 0, 0, S_BUBS1, 0}, + + {"S_BUBSB1", 0, SPR_BUBS, FF_TRANS30| 9, 3, {NULL}, 0, 0, S_BUBSB2, 0}, + {"S_BUBSB2", 0, SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB3, 0}, + {"S_BUBSB3", 0, SPR_BUBS, FF_TRANS30|11, 3, {NULL}, 0, 0, S_BUBSB4, 0}, + {"S_BUBSB4", 0, SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB1, 0}, + + {"S_BUBSB5", 0, SPR_BUBS, FF_TRANS30|12, 3, {NULL}, 0, 0, S_BUBSB3, 0}, + {"S_BUBSB6", 0, SPR_BUBS, FF_TRANS30|13, 3, {NULL}, 0, 0, S_BUBSB5, 0}, + + {"S_ZAPS1", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20 , 2, {NULL}, 0, 0, S_ZAPS2 , 0}, + {"S_ZAPS2", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1, 2, {NULL}, 0, 0, S_ZAPS3 , 0}, + {"S_ZAPS3", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2, 2, {NULL}, 0, 0, S_ZAPS4 , 0}, + {"S_ZAPS4", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3, 2, {NULL}, 0, 0, S_ZAPS5 , 0}, + {"S_ZAPS5", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4, 2, {NULL}, 0, 0, S_ZAPS6 , 0}, + {"S_ZAPS6", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5, 2, {NULL}, 0, 0, S_ZAPS7 , 0}, + {"S_ZAPS7", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6, 2, {NULL}, 0, 0, S_ZAPS8 , 0}, + {"S_ZAPS8", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7, 2, {NULL}, 0, 0, S_ZAPS9 , 0}, + {"S_ZAPS9", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8, 2, {NULL}, 0, 0, S_ZAPS10, 0}, + {"S_ZAPS10", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9, 2, {NULL}, 0, 0, S_ZAPS11, 0}, + {"S_ZAPS11", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10, 2, {NULL}, 0, 0, S_ZAPS12, 0}, + {"S_ZAPS12", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11, 2, {NULL}, 0, 0, S_ZAPS13, 0}, + {"S_ZAPS13", 0, SPR_NULL, 0, 9*2, {NULL}, 0, 0, S_ZAPS14, 0}, + {"S_ZAPS14", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9, 2, {NULL}, 0, 0, S_ZAPS15, 0}, + {"S_ZAPS15", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10, 2, {NULL}, 0, 0, S_ZAPS16, 0}, + {"S_ZAPS16", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11, 2, {NULL}, 0, 0, S_ZAPS1 , 0}, + + {"S_ZAPSB1", 0, SPR_NULL, 0, 12*2, {NULL}, 0, 0, S_ZAPSB2 , 0}, + {"S_ZAPSB2", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8, 2, {NULL}, 0, 0, S_ZAPSB3 , 0}, + {"S_ZAPSB3", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7, 2, {NULL}, 0, 0, S_ZAPSB4 , 0}, + {"S_ZAPSB4", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6, 2, {NULL}, 0, 0, S_ZAPSB5 , 0}, + {"S_ZAPSB5", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5, 2, {NULL}, 0, 0, S_ZAPSB6 , 0}, + {"S_ZAPSB6", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4, 2, {NULL}, 0, 0, S_ZAPSB7 , 0}, + {"S_ZAPSB7", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3, 2, {NULL}, 0, 0, S_ZAPSB8 , 0}, + {"S_ZAPSB8", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2, 2, {NULL}, 0, 0, S_ZAPSB9 , 0}, + {"S_ZAPSB9", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1, 2, {NULL}, 0, 0, S_ZAPSB10, 0}, + {"S_ZAPSB10", 0, SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20 , 2, {NULL}, 0, 0, S_ZAPSB11, 0}, + {"S_ZAPSB11", 0, SPR_NULL, 0, 15*2, {NULL}, 0, 0, S_ZAPSB2 , 0}, // Thunder spark - {SPR_SSPK, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL, 0}, // S_THUNDERCOIN_SPARK + {"S_THUNDERCOIN_SPARK", 0, SPR_SSPK, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL, 0}, // Invincibility Sparkles - {SPR_IVSP, FF_ANIMATE|FF_FULLBRIGHT, 32, {NULL}, 31, 1, S_NULL, 0}, // S_IVSP + {"S_IVSP", 0, SPR_IVSP, FF_ANIMATE|FF_FULLBRIGHT, 32, {NULL}, 31, 1, S_NULL, 0}, // Super Sonic Spark - {SPR_SSPK, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK2, 0}, // S_SSPK1 - {SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK3, 0}, // S_SSPK2 - {SPR_SSPK, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK4, 0}, // S_SSPK3 - {SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK5, 0}, // S_SSPK4 - {SPR_SSPK, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_SSPK5 + {"S_SSPK1", 0, SPR_SSPK, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK2, 0}, + {"S_SSPK2", 0, SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK3, 0}, + {"S_SSPK3", 0, SPR_SSPK, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK4, 0}, + {"S_SSPK4", 0, SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK5, 0}, + {"S_SSPK5", 0, SPR_SSPK, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // Flicky-sized bubble - {SPR_FBUB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FLICKY_BUBBLE + {"S_FLICKY_BUBBLE", 0, SPR_FBUB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Bluebird - {SPR_FL01, 0, 2, {A_FlickyCheck}, S_FLICKY_01_FLAP1, S_FLICKY_01_FLAP1, S_FLICKY_01_OUT, 0}, // S_FLICKY_01_OUT - {SPR_FL01, 1, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_01_FLAP2, 0}, // S_FLICKY_01_FLAP1 - {SPR_FL01, 2, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_01_FLAP3, 0}, // S_FLICKY_01_FLAP2 - {SPR_FL01, 3, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_01_FLAP1, 0}, // S_FLICKY_01_FLAP3 - {SPR_FL01, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0}, // S_FLICKY_01_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_01, 384*FRACUNIT, S_FLICKY_01_CENTER, 0}, // S_FLICKY_01_CENTER + {"S_FLICKY_01_OUT", 0, SPR_FL01, 0, 2, {A_FlickyCheck}, S_FLICKY_01_FLAP1, S_FLICKY_01_FLAP1, S_FLICKY_01_OUT, 0}, + {"S_FLICKY_01_FLAP1", 0, SPR_FL01, 1, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_01_FLAP2, 0}, + {"S_FLICKY_01_FLAP2", 0, SPR_FL01, 2, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_01_FLAP3, 0}, + {"S_FLICKY_01_FLAP3", 0, SPR_FL01, 3, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_01_FLAP1, 0}, + {"S_FLICKY_01_STAND", 0, SPR_FL01, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0}, + {"S_FLICKY_01_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_01, 384*FRACUNIT, S_FLICKY_01_CENTER, 0}, // Rabbit - {SPR_FL02, 0, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, 0, S_FLICKY_02_OUT, 0}, // S_FLICKY_02_OUT - {SPR_FL02, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_02_HOP, 0}, // S_FLICKY_02_AIM - {SPR_FL02, 1, 1, {A_FlickyHop}, 6*FRACUNIT, 4*FRACUNIT, S_FLICKY_02_UP, 0}, // S_FLICKY_02_HOP - {SPR_FL02, 2, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, S_FLICKY_02_DOWN, S_FLICKY_02_UP, 0}, // S_FLICKY_02_UP - {SPR_FL02, 3, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, 0, S_FLICKY_02_DOWN, 0}, // S_FLICKY_02_DOWN - {SPR_FL02, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_02_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_02, 384*FRACUNIT, S_FLICKY_02_CENTER, 0}, // S_FLICKY_02_CENTER + {"S_FLICKY_02_OUT", 0, SPR_FL02, 0, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, 0, S_FLICKY_02_OUT, 0}, + {"S_FLICKY_02_AIM", 0, SPR_FL02, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_02_HOP, 0}, + {"S_FLICKY_02_HOP", 0, SPR_FL02, 1, 1, {A_FlickyHop}, 6*FRACUNIT, 4*FRACUNIT, S_FLICKY_02_UP, 0}, + {"S_FLICKY_02_UP", 0, SPR_FL02, 2, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, S_FLICKY_02_DOWN, S_FLICKY_02_UP, 0}, + {"S_FLICKY_02_DOWN", 0, SPR_FL02, 3, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, 0, S_FLICKY_02_DOWN, 0}, + {"S_FLICKY_02_STAND", 0, SPR_FL02, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_02_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_02, 384*FRACUNIT, S_FLICKY_02_CENTER, 0}, // Chicken - {SPR_FL03, 0, 2, {A_FlickyCheck}, S_FLICKY_03_AIM, S_FLICKY_03_FLAP1, S_FLICKY_03_OUT, 0}, // S_FLICKY_03_OUT - {SPR_FL03, 1, 1, {A_FlickyAim}, ANGLE_45, 32*FRACUNIT, S_FLICKY_03_HOP, 0}, // S_FLICKY_03_AIM - {SPR_FL03, 1, 1, {A_FlickyHop}, 7*FRACUNIT, 2*FRACUNIT, S_FLICKY_03_UP, 0}, // S_FLICKY_03_HOP - {SPR_FL03, 2, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, S_FLICKY_03_FLAP1, S_FLICKY_03_UP, 0}, // S_FLICKY_03_UP - {SPR_FL03, 3, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, 0, S_FLICKY_03_FLAP2, 0}, // S_FLICKY_03_FLAP1 - {SPR_FL03, 4, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, 0, S_FLICKY_03_FLAP1, 0}, // S_FLICKY_03_FLAP2 - {SPR_FL03, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_03_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_03, 384*FRACUNIT, S_FLICKY_03_CENTER, 0}, // S_FLICKY_03_CENTER + {"S_FLICKY_03_OUT", 0, SPR_FL03, 0, 2, {A_FlickyCheck}, S_FLICKY_03_AIM, S_FLICKY_03_FLAP1, S_FLICKY_03_OUT, 0}, + {"S_FLICKY_03_AIM", 0, SPR_FL03, 1, 1, {A_FlickyAim}, ANGLE_45, 32*FRACUNIT, S_FLICKY_03_HOP, 0}, + {"S_FLICKY_03_HOP", 0, SPR_FL03, 1, 1, {A_FlickyHop}, 7*FRACUNIT, 2*FRACUNIT, S_FLICKY_03_UP, 0}, + {"S_FLICKY_03_UP", 0, SPR_FL03, 2, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, S_FLICKY_03_FLAP1, S_FLICKY_03_UP, 0}, + {"S_FLICKY_03_FLAP1", 0, SPR_FL03, 3, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, 0, S_FLICKY_03_FLAP2, 0}, + {"S_FLICKY_03_FLAP2", 0, SPR_FL03, 4, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, 0, S_FLICKY_03_FLAP1, 0}, + {"S_FLICKY_03_STAND", 0, SPR_FL03, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_03_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_03, 384*FRACUNIT, S_FLICKY_03_CENTER, 0}, // Seal - {SPR_FL04, 0, 2, {A_FlickyCheck}, S_FLICKY_04_AIM, 0, S_FLICKY_04_OUT, 0}, // S_FLICKY_04_OUT - {SPR_FL04, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_04_HOP, 0}, // S_FLICKY_04_AIM - {SPR_FL04, 1, 1, {A_FlickyHop}, 3*FRACUNIT, 2*FRACUNIT, S_FLICKY_04_UP, 0}, // S_FLICKY_04_HOP - {SPR_FL04, 2, 4, {A_FlickyCheck}, S_FLICKY_04_AIM, S_FLICKY_04_DOWN, S_FLICKY_04_UP, 0}, // S_FLICKY_04_UP - {SPR_FL04, 3, 4, {A_FlickyCheck}, S_FLICKY_04_AIM, 0, S_FLICKY_04_DOWN, 0}, // S_FLICKY_04_DOWN - {SPR_FL04, 3, 4, {A_FlickyFly}, 2*FRACUNIT, 48*FRACUNIT, S_FLICKY_04_SWIM2, 0}, // S_FLICKY_04_SWIM1 - {SPR_FL04, 4, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM3, 0}, // S_FLICKY_04_SWIM2 - {SPR_FL04, 3, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM4, 0}, // S_FLICKY_04_SWIM3 - {SPR_FL04, 5, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM1, 0}, // S_FLICKY_04_SWIM4 - {SPR_FL04, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_04_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_04, 384*FRACUNIT, S_FLICKY_04_CENTER, 0}, // S_FLICKY_04_CENTER + {"S_FLICKY_04_OUT", 0, SPR_FL04, 0, 2, {A_FlickyCheck}, S_FLICKY_04_AIM, 0, S_FLICKY_04_OUT, 0}, + {"S_FLICKY_04_AIM", 0, SPR_FL04, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_04_HOP, 0}, + {"S_FLICKY_04_HOP", 0, SPR_FL04, 1, 1, {A_FlickyHop}, 3*FRACUNIT, 2*FRACUNIT, S_FLICKY_04_UP, 0}, + {"S_FLICKY_04_UP", 0, SPR_FL04, 2, 4, {A_FlickyCheck}, S_FLICKY_04_AIM, S_FLICKY_04_DOWN, S_FLICKY_04_UP, 0}, + {"S_FLICKY_04_DOWN", 0, SPR_FL04, 3, 4, {A_FlickyCheck}, S_FLICKY_04_AIM, 0, S_FLICKY_04_DOWN, 0}, + {"S_FLICKY_04_SWIM1", 0, SPR_FL04, 3, 4, {A_FlickyFly}, 2*FRACUNIT, 48*FRACUNIT, S_FLICKY_04_SWIM2, 0}, + {"S_FLICKY_04_SWIM2", 0, SPR_FL04, 4, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM3, 0}, + {"S_FLICKY_04_SWIM3", 0, SPR_FL04, 3, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM4, 0}, + {"S_FLICKY_04_SWIM4", 0, SPR_FL04, 5, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM1, 0}, + {"S_FLICKY_04_STAND", 0, SPR_FL04, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_04_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_04, 384*FRACUNIT, S_FLICKY_04_CENTER, 0}, // Pig - {SPR_FL05, 0, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, 0, S_FLICKY_05_OUT, 0}, // S_FLICKY_05_OUT - {SPR_FL05, 1, 1, {A_FlickyAim}, ANG20, 32*FRACUNIT, S_FLICKY_05_HOP, 0}, // S_FLICKY_05_AIM - {SPR_FL05, 1, 1, {A_FlickyHop}, 4*FRACUNIT, 3*FRACUNIT, S_FLICKY_05_UP, 0}, // S_FLICKY_05_HOP - {SPR_FL05, 2, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, S_FLICKY_05_DOWN, S_FLICKY_05_UP, 0}, // S_FLICKY_05_UP - {SPR_FL05, 3, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, 0, S_FLICKY_05_DOWN, 0}, // S_FLICKY_05_DOWN - {SPR_FL05, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_05_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_05, 384*FRACUNIT, S_FLICKY_05_CENTER, 0}, // S_FLICKY_05_CENTER + {"S_FLICKY_05_OUT", 0, SPR_FL05, 0, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, 0, S_FLICKY_05_OUT, 0}, + {"S_FLICKY_05_AIM", 0, SPR_FL05, 1, 1, {A_FlickyAim}, ANG20, 32*FRACUNIT, S_FLICKY_05_HOP, 0}, + {"S_FLICKY_05_HOP", 0, SPR_FL05, 1, 1, {A_FlickyHop}, 4*FRACUNIT, 3*FRACUNIT, S_FLICKY_05_UP, 0}, + {"S_FLICKY_05_UP", 0, SPR_FL05, 2, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, S_FLICKY_05_DOWN, S_FLICKY_05_UP, 0}, + {"S_FLICKY_05_DOWN", 0, SPR_FL05, 3, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, 0, S_FLICKY_05_DOWN, 0}, + {"S_FLICKY_05_STAND", 0, SPR_FL05, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_05_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_05, 384*FRACUNIT, S_FLICKY_05_CENTER, 0}, // Chipmunk - {SPR_FL06, 0, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, 0, S_FLICKY_06_OUT, 0}, // S_FLICKY_06_OUT - {SPR_FL06, 1, 1, {A_FlickyAim}, ANGLE_90, 32*FRACUNIT, S_FLICKY_06_HOP, 0}, // S_FLICKY_06_AIM - {SPR_FL06, 1, 1, {A_FlickyHop}, 5*FRACUNIT, 6*FRACUNIT, S_FLICKY_06_UP, 0}, // S_FLICKY_06_HOP - {SPR_FL06, 2, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, S_FLICKY_06_DOWN, S_FLICKY_06_UP, 0}, // S_FLICKY_06_UP - {SPR_FL06, 3, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, 0, S_FLICKY_06_DOWN, 0}, // S_FLICKY_06_DOWN - {SPR_FL06, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_06_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_06, 384*FRACUNIT, S_FLICKY_06_CENTER, 0}, // S_FLICKY_06_CENTER + {"S_FLICKY_06_OUT", 0, SPR_FL06, 0, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, 0, S_FLICKY_06_OUT, 0}, + {"S_FLICKY_06_AIM", 0, SPR_FL06, 1, 1, {A_FlickyAim}, ANGLE_90, 32*FRACUNIT, S_FLICKY_06_HOP, 0}, + {"S_FLICKY_06_HOP", 0, SPR_FL06, 1, 1, {A_FlickyHop}, 5*FRACUNIT, 6*FRACUNIT, S_FLICKY_06_UP, 0}, + {"S_FLICKY_06_UP", 0, SPR_FL06, 2, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, S_FLICKY_06_DOWN, S_FLICKY_06_UP, 0}, + {"S_FLICKY_06_DOWN", 0, SPR_FL06, 3, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, 0, S_FLICKY_06_DOWN, 0}, + {"S_FLICKY_06_STAND", 0, SPR_FL06, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_06_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_06, 384*FRACUNIT, S_FLICKY_06_CENTER, 0}, // Penguin - {SPR_FL07, 0, 2, {A_FlickyCheck}, S_FLICKY_07_AIML, 0, S_FLICKY_07_OUT, 0}, // S_FLICKY_07_OUT - {SPR_FL07, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_07_HOPL, 0}, // S_FLICKY_07_AIML - {SPR_FL07, 1, 1, {A_FlickyHop}, 4*FRACUNIT, 2*FRACUNIT, S_FLICKY_07_UPL, 0}, // S_FLICKY_07_HOPL - {SPR_FL07, 2, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR, S_FLICKY_07_DOWNL, S_FLICKY_07_UPL, 0}, // S_FLICKY_07_UPL - {SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR, 0, S_FLICKY_07_DOWNL, 0}, // S_FLICKY_07_DOWNL - {SPR_FL07, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_07_HOPR, 0}, // S_FLICKY_07_AIMR - {SPR_FL07, 1, 1, {A_FlickyHop}, 4*FRACUNIT, 2*FRACUNIT, S_FLICKY_07_UPR, 0}, // S_FLICKY_07_HOPR - {SPR_FL07, 3, 4, {A_FlickyCheck}, S_FLICKY_07_AIML, S_FLICKY_07_DOWNR, S_FLICKY_07_UPR, 0}, // S_FLICKY_07_UPR - {SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIML, 0, S_FLICKY_07_DOWNR, 0}, // S_FLICKY_07_DOWNR - {SPR_FL07, 4, 4, {A_FlickyFly}, 3*FRACUNIT, 72*FRACUNIT, S_FLICKY_07_SWIM2, 0}, // S_FLICKY_07_SWIM1 - {SPR_FL07, 5, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3, 0}, // S_FLICKY_07_SWIM2 - {SPR_FL07, 6, 4, {A_FlickyCoast}, 2*FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3, 0}, // S_FLICKY_07_SWIM3 - {SPR_FL07, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_07_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_07, 384*FRACUNIT, S_FLICKY_07_CENTER, 0}, // S_FLICKY_07_CENTER + {"S_FLICKY_07_OUT", 0, SPR_FL07, 0, 2, {A_FlickyCheck}, S_FLICKY_07_AIML, 0, S_FLICKY_07_OUT, 0}, + {"S_FLICKY_07_AIML", 0, SPR_FL07, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_07_HOPL, 0}, + {"S_FLICKY_07_HOPL", 0, SPR_FL07, 1, 1, {A_FlickyHop}, 4*FRACUNIT, 2*FRACUNIT, S_FLICKY_07_UPL, 0}, + {"S_FLICKY_07_UPL", 0, SPR_FL07, 2, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR, S_FLICKY_07_DOWNL, S_FLICKY_07_UPL, 0}, + {"S_FLICKY_07_DOWNL", 0, SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR, 0, S_FLICKY_07_DOWNL, 0}, + {"S_FLICKY_07_AIMR", 0, SPR_FL07, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_07_HOPR, 0}, + {"S_FLICKY_07_HOPR", 0, SPR_FL07, 1, 1, {A_FlickyHop}, 4*FRACUNIT, 2*FRACUNIT, S_FLICKY_07_UPR, 0}, + {"S_FLICKY_07_UPR", 0, SPR_FL07, 3, 4, {A_FlickyCheck}, S_FLICKY_07_AIML, S_FLICKY_07_DOWNR, S_FLICKY_07_UPR, 0}, + {"S_FLICKY_07_DOWNR", 0, SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIML, 0, S_FLICKY_07_DOWNR, 0}, + {"S_FLICKY_07_SWIM1", 0, SPR_FL07, 4, 4, {A_FlickyFly}, 3*FRACUNIT, 72*FRACUNIT, S_FLICKY_07_SWIM2, 0}, + {"S_FLICKY_07_SWIM2", 0, SPR_FL07, 5, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3, 0}, + {"S_FLICKY_07_SWIM3", 0, SPR_FL07, 6, 4, {A_FlickyCoast}, 2*FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3, 0}, + {"S_FLICKY_07_STAND", 0, SPR_FL07, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_07_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_07, 384*FRACUNIT, S_FLICKY_07_CENTER, 0}, // Fish - {SPR_FL08, 0, 2, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_OUT, 0}, // S_FLICKY_08_OUT - {SPR_FL08, 2, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_08_HOP, 0}, // S_FLICKY_08_AIM - {SPR_FL08, 2, 1, {A_FlickyFlounder}, 2*FRACUNIT, 1*FRACUNIT, S_FLICKY_08_FLAP1, 0}, // S_FLICKY_08_HOP - {SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_FLAP2, 0}, // S_FLICKY_08_FLAP1 - {SPR_FL08, 1, 4, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_FLAP3, 0}, // S_FLICKY_08_FLAP2 - {SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_FLAP4, 0}, // S_FLICKY_08_FLAP3 - {SPR_FL08, 2, 4, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_FLAP1, 0}, // S_FLICKY_08_FLAP4 - {SPR_FL08, 0, 4, {A_FlickyFly}, 3*FRACUNIT, 64*FRACUNIT, S_FLICKY_08_SWIM2, 0}, // S_FLICKY_08_SWIM1 - {SPR_FL08, 1, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM3, 0}, // S_FLICKY_08_SWIM2 - {SPR_FL08, 0, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4, 0}, // S_FLICKY_08_SWIM3 - {SPR_FL08, 2, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4, 0}, // S_FLICKY_08_SWIM4 - {SPR_FL08, FF_ANIMATE, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_08_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_08, 384*FRACUNIT, S_FLICKY_08_CENTER, 0}, // S_FLICKY_08_CENTER + {"S_FLICKY_08_OUT", 0, SPR_FL08, 0, 2, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_OUT, 0}, + {"S_FLICKY_08_AIM", 0, SPR_FL08, 2, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_08_HOP, 0}, + {"S_FLICKY_08_HOP", 0, SPR_FL08, 2, 1, {A_FlickyFlounder}, 2*FRACUNIT, 1*FRACUNIT, S_FLICKY_08_FLAP1, 0}, + {"S_FLICKY_08_FLAP1", 0, SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_FLAP2, 0}, + {"S_FLICKY_08_FLAP2", 0, SPR_FL08, 1, 4, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_FLAP3, 0}, + {"S_FLICKY_08_FLAP3", 0, SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_FLAP4, 0}, + {"S_FLICKY_08_FLAP4", 0, SPR_FL08, 2, 4, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_FLAP1, 0}, + {"S_FLICKY_08_SWIM1", 0, SPR_FL08, 0, 4, {A_FlickyFly}, 3*FRACUNIT, 64*FRACUNIT, S_FLICKY_08_SWIM2, 0}, + {"S_FLICKY_08_SWIM2", 0, SPR_FL08, 1, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM3, 0}, + {"S_FLICKY_08_SWIM3", 0, SPR_FL08, 0, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4, 0}, + {"S_FLICKY_08_SWIM4", 0, SPR_FL08, 2, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4, 0}, + {"S_FLICKY_08_STAND", 0, SPR_FL08, FF_ANIMATE, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_08_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_08, 384*FRACUNIT, S_FLICKY_08_CENTER, 0}, // Ram - {SPR_FL09, 0, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, 0, S_FLICKY_09_OUT, 0}, // S_FLICKY_09_OUT - {SPR_FL09, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_09_HOP, 0}, // S_FLICKY_09_AIM - {SPR_FL09, 1, 1, {A_FlickyHop}, 7*FRACUNIT, 2*FRACUNIT, S_FLICKY_09_UP, 0}, // S_FLICKY_09_HOP - {SPR_FL09, 2, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, S_FLICKY_09_DOWN, S_FLICKY_09_UP, 0}, // S_FLICKY_09_UP - {SPR_FL09, 3, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, 0, S_FLICKY_09_DOWN, 0}, // S_FLICKY_09_DOWN - {SPR_FL09, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_09_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_09, 384*FRACUNIT, S_FLICKY_09_CENTER, 0}, // S_FLICKY_09_CENTER + {"S_FLICKY_09_OUT", 0, SPR_FL09, 0, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, 0, S_FLICKY_09_OUT, 0}, + {"S_FLICKY_09_AIM", 0, SPR_FL09, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_09_HOP, 0}, + {"S_FLICKY_09_HOP", 0, SPR_FL09, 1, 1, {A_FlickyHop}, 7*FRACUNIT, 2*FRACUNIT, S_FLICKY_09_UP, 0}, + {"S_FLICKY_09_UP", 0, SPR_FL09, 2, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, S_FLICKY_09_DOWN, S_FLICKY_09_UP, 0}, + {"S_FLICKY_09_DOWN", 0, SPR_FL09, 3, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, 0, S_FLICKY_09_DOWN, 0}, + {"S_FLICKY_09_STAND", 0, SPR_FL09, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_09_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_09, 384*FRACUNIT, S_FLICKY_09_CENTER, 0}, // Puffin - {SPR_FL10, 0, 2, {A_FlickyCheck}, S_FLICKY_10_FLAP1, S_FLICKY_10_FLAP1, S_FLICKY_10_OUT, 0}, // S_FLICKY_10_OUT - {SPR_FL10, 1, 3, {A_FlickySoar}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_10_FLAP2, 0}, // S_FLICKY_10_FLAP1 - {SPR_FL10, 2, 3, {A_FlickySoar}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_10_FLAP1, 0}, // S_FLICKY_10_FLAP2 - {SPR_FL10, FF_ANIMATE|1, -1, {NULL}, 1, 3, S_NULL, 0}, // S_FLICKY_10_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_10, 384*FRACUNIT, S_FLICKY_10_CENTER, 0}, // S_FLICKY_10_CENTER + {"S_FLICKY_10_OUT", 0, SPR_FL10, 0, 2, {A_FlickyCheck}, S_FLICKY_10_FLAP1, S_FLICKY_10_FLAP1, S_FLICKY_10_OUT, 0}, + {"S_FLICKY_10_FLAP1", 0, SPR_FL10, 1, 3, {A_FlickySoar}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_10_FLAP2, 0}, + {"S_FLICKY_10_FLAP2", 0, SPR_FL10, 2, 3, {A_FlickySoar}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_10_FLAP1, 0}, + {"S_FLICKY_10_STAND", 0, SPR_FL10, FF_ANIMATE|1, -1, {NULL}, 1, 3, S_NULL, 0}, + {"S_FLICKY_10_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_10, 384*FRACUNIT, S_FLICKY_10_CENTER, 0}, // Cow - {SPR_FL11, 0, 2, {A_FlickyCheck}, S_FLICKY_11_AIM, 0, S_FLICKY_11_OUT, 0}, // S_FLICKY_11_OUT - {SPR_FL11, 1, 1, {A_FlickyAim}, ANGLE_90, 64*FRACUNIT, S_FLICKY_11_RUN1, 0}, // S_FLICKY_11_AIM - {SPR_FL11, 1, 3, {A_FlickyHop}, FRACUNIT/2, 2*FRACUNIT, S_FLICKY_11_RUN2, 0}, // S_FLICKY_11_RUN1 - {SPR_FL11, 2, 4, {A_FlickyHop}, FRACUNIT/2, 2*FRACUNIT, S_FLICKY_11_RUN3, 0}, // S_FLICKY_11_RUN2 - {SPR_FL11, 3, 4, {A_FlickyHop}, FRACUNIT/2, 2*FRACUNIT, S_FLICKY_11_AIM, 0}, // S_FLICKY_11_RUN3 - {SPR_FL11, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_11_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_11, 384*FRACUNIT, S_FLICKY_11_CENTER, 0}, // S_FLICKY_11_CENTER + {"S_FLICKY_11_OUT", 0, SPR_FL11, 0, 2, {A_FlickyCheck}, S_FLICKY_11_AIM, 0, S_FLICKY_11_OUT, 0}, + {"S_FLICKY_11_AIM", 0, SPR_FL11, 1, 1, {A_FlickyAim}, ANGLE_90, 64*FRACUNIT, S_FLICKY_11_RUN1, 0}, + {"S_FLICKY_11_RUN1", 0, SPR_FL11, 1, 3, {A_FlickyHop}, FRACUNIT/2, 2*FRACUNIT, S_FLICKY_11_RUN2, 0}, + {"S_FLICKY_11_RUN2", 0, SPR_FL11, 2, 4, {A_FlickyHop}, FRACUNIT/2, 2*FRACUNIT, S_FLICKY_11_RUN3, 0}, + {"S_FLICKY_11_RUN3", 0, SPR_FL11, 3, 4, {A_FlickyHop}, FRACUNIT/2, 2*FRACUNIT, S_FLICKY_11_AIM, 0}, + {"S_FLICKY_11_STAND", 0, SPR_FL11, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_11_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_11, 384*FRACUNIT, S_FLICKY_11_CENTER, 0}, // Rat - {SPR_FL12, 0, 2, {A_FlickyCheck}, S_FLICKY_12_AIM, 0, S_FLICKY_12_OUT, 0}, // S_FLICKY_12_OUT - {SPR_FL12, 1, 1, {A_FlickyAim}, ANGLE_90, 32*FRACUNIT, S_FLICKY_12_RUN1, 0}, // S_FLICKY_12_AIM - {SPR_FL12, 1, 2, {A_FlickyHop}, 1, 12*FRACUNIT, S_FLICKY_12_RUN2, 0}, // S_FLICKY_12_RUN1 - {SPR_FL12, 2, 3, {A_FlickyHop}, 1, 12*FRACUNIT, S_FLICKY_12_RUN3, 0}, // S_FLICKY_12_RUN2 - {SPR_FL12, 3, 3, {A_FlickyHop}, 1, 12*FRACUNIT, S_FLICKY_12_AIM, 0}, // S_FLICKY_12_RUN3 - {SPR_FL12, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_12_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_12, 384*FRACUNIT, S_FLICKY_12_CENTER, 0}, // S_FLICKY_12_CENTER + {"S_FLICKY_12_OUT", 0, SPR_FL12, 0, 2, {A_FlickyCheck}, S_FLICKY_12_AIM, 0, S_FLICKY_12_OUT, 0}, + {"S_FLICKY_12_AIM", 0, SPR_FL12, 1, 1, {A_FlickyAim}, ANGLE_90, 32*FRACUNIT, S_FLICKY_12_RUN1, 0}, + {"S_FLICKY_12_RUN1", 0, SPR_FL12, 1, 2, {A_FlickyHop}, 1, 12*FRACUNIT, S_FLICKY_12_RUN2, 0}, + {"S_FLICKY_12_RUN2", 0, SPR_FL12, 2, 3, {A_FlickyHop}, 1, 12*FRACUNIT, S_FLICKY_12_RUN3, 0}, + {"S_FLICKY_12_RUN3", 0, SPR_FL12, 3, 3, {A_FlickyHop}, 1, 12*FRACUNIT, S_FLICKY_12_AIM, 0}, + {"S_FLICKY_12_STAND", 0, SPR_FL12, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_12_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_12, 384*FRACUNIT, S_FLICKY_12_CENTER, 0}, // Bear - {SPR_FL13, 0, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, 0, S_FLICKY_13_OUT, 0}, // S_FLICKY_13_OUT - {SPR_FL13, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_13_HOP, 0}, // S_FLICKY_13_AIM - {SPR_FL13, 1, 1, {A_FlickyHop}, 5*FRACUNIT, 3*FRACUNIT, S_FLICKY_13_UP, 0}, // S_FLICKY_13_HOP - {SPR_FL13, 2, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, S_FLICKY_13_DOWN, S_FLICKY_13_UP, 0}, // S_FLICKY_13_UP - {SPR_FL13, 3, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, 0, S_FLICKY_13_DOWN, 0}, // S_FLICKY_13_DOWN - {SPR_FL13, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_13_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_13, 384*FRACUNIT, S_FLICKY_13_CENTER, 0}, // S_FLICKY_13_CENTER + {"S_FLICKY_13_OUT", 0, SPR_FL13, 0, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, 0, S_FLICKY_13_OUT, 0}, + {"S_FLICKY_13_AIM", 0, SPR_FL13, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_13_HOP, 0}, + {"S_FLICKY_13_HOP", 0, SPR_FL13, 1, 1, {A_FlickyHop}, 5*FRACUNIT, 3*FRACUNIT, S_FLICKY_13_UP, 0}, + {"S_FLICKY_13_UP", 0, SPR_FL13, 2, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, S_FLICKY_13_DOWN, S_FLICKY_13_UP, 0}, + {"S_FLICKY_13_DOWN", 0, SPR_FL13, 3, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, 0, S_FLICKY_13_DOWN, 0}, + {"S_FLICKY_13_STAND", 0, SPR_FL13, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_13_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_13, 384*FRACUNIT, S_FLICKY_13_CENTER, 0}, // Dove - {SPR_FL14, 0, 2, {A_FlickyCheck}, S_FLICKY_14_FLAP1, S_FLICKY_14_FLAP1, S_FLICKY_14_OUT, 0}, // S_FLICKY_14_OUT - {SPR_FL14, 1, 3, {A_FlickySoar}, 4*FRACUNIT, 32*FRACUNIT, S_FLICKY_14_FLAP2, 0}, // S_FLICKY_14_FLAP1 - {SPR_FL14, 2, 3, {A_FlickySoar}, 4*FRACUNIT, 32*FRACUNIT, S_FLICKY_14_FLAP3, 0}, // S_FLICKY_14_FLAP2 - {SPR_FL14, 3, 3, {A_FlickySoar}, 4*FRACUNIT, 32*FRACUNIT, S_FLICKY_14_FLAP1, 0}, // S_FLICKY_14_FLAP3 - {SPR_FL14, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0}, // S_FLICKY_14_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_14, 384*FRACUNIT, S_FLICKY_14_CENTER, 0}, // S_FLICKY_14_CENTER + {"S_FLICKY_14_OUT", 0, SPR_FL14, 0, 2, {A_FlickyCheck}, S_FLICKY_14_FLAP1, S_FLICKY_14_FLAP1, S_FLICKY_14_OUT, 0}, + {"S_FLICKY_14_FLAP1", 0, SPR_FL14, 1, 3, {A_FlickySoar}, 4*FRACUNIT, 32*FRACUNIT, S_FLICKY_14_FLAP2, 0}, + {"S_FLICKY_14_FLAP2", 0, SPR_FL14, 2, 3, {A_FlickySoar}, 4*FRACUNIT, 32*FRACUNIT, S_FLICKY_14_FLAP3, 0}, + {"S_FLICKY_14_FLAP3", 0, SPR_FL14, 3, 3, {A_FlickySoar}, 4*FRACUNIT, 32*FRACUNIT, S_FLICKY_14_FLAP1, 0}, + {"S_FLICKY_14_STAND", 0, SPR_FL14, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0}, + {"S_FLICKY_14_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_14, 384*FRACUNIT, S_FLICKY_14_CENTER, 0}, // Cat - {SPR_FL15, 0, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, 0, S_FLICKY_15_OUT, 0}, // S_FLICKY_15_OUT - {SPR_FL15, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_15_HOP, 0}, // S_FLICKY_15_AIM - {SPR_FL15, 1, 1, {A_FlickyFlounder}, 2*FRACUNIT, 6*FRACUNIT, S_FLICKY_15_UP, 0}, // S_FLICKY_15_HOP - {SPR_FL15, 2, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, S_FLICKY_15_DOWN, S_FLICKY_15_UP, 0}, // S_FLICKY_15_UP - {SPR_FL15, 3, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, 0, S_FLICKY_15_DOWN, 0}, // S_FLICKY_15_DOWN - {SPR_FL15, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_FLICKY_15_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_15, 384*FRACUNIT, S_FLICKY_15_CENTER, 0}, // S_FLICKY_15_CENTER + {"S_FLICKY_15_OUT", 0, SPR_FL15, 0, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, 0, S_FLICKY_15_OUT, 0}, + {"S_FLICKY_15_AIM", 0, SPR_FL15, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_FLICKY_15_HOP, 0}, + {"S_FLICKY_15_HOP", 0, SPR_FL15, 1, 1, {A_FlickyFlounder}, 2*FRACUNIT, 6*FRACUNIT, S_FLICKY_15_UP, 0}, + {"S_FLICKY_15_UP", 0, SPR_FL15, 2, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, S_FLICKY_15_DOWN, S_FLICKY_15_UP, 0}, + {"S_FLICKY_15_DOWN", 0, SPR_FL15, 3, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, 0, S_FLICKY_15_DOWN, 0}, + {"S_FLICKY_15_STAND", 0, SPR_FL15, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_FLICKY_15_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_15, 384*FRACUNIT, S_FLICKY_15_CENTER, 0}, // Canary - {SPR_FL16, 0, 2, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1, 0, S_FLICKY_16_OUT, 0}, // S_FLICKY_16_OUT - {SPR_FL16, 1, 3, {A_FlickyFly}, 4*FRACUNIT, 8*FRACUNIT, S_FLICKY_16_FLAP2, 0}, // S_FLICKY_16_FLAP1 - {SPR_FL16, 2, 3, {A_SetObjectFlags}, MF_NOGRAVITY, 1, S_FLICKY_16_FLAP3, 0}, // S_FLICKY_16_FLAP2 - {SPR_FL16, 3, 3, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1, 0, S_FLICKY_16_FLAP3, 0}, // S_FLICKY_16_FLAP3 - {SPR_FL16, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0}, // S_FLICKY_16_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_16, 384*FRACUNIT, S_FLICKY_16_CENTER, 0}, // S_FLICKY_16_CENTER + {"S_FLICKY_16_OUT", 0, SPR_FL16, 0, 2, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1, 0, S_FLICKY_16_OUT, 0}, + {"S_FLICKY_16_FLAP1", 0, SPR_FL16, 1, 3, {A_FlickyFly}, 4*FRACUNIT, 8*FRACUNIT, S_FLICKY_16_FLAP2, 0}, + {"S_FLICKY_16_FLAP2", 0, SPR_FL16, 2, 3, {A_SetObjectFlags}, MF_NOGRAVITY, 1, S_FLICKY_16_FLAP3, 0}, + {"S_FLICKY_16_FLAP3", 0, SPR_FL16, 3, 3, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1, 0, S_FLICKY_16_FLAP3, 0}, + {"S_FLICKY_16_STAND", 0, SPR_FL16, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL, 0}, + {"S_FLICKY_16_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_16, 384*FRACUNIT, S_FLICKY_16_CENTER, 0}, // Spider - {SPR_FS01, 0, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, 0, S_SECRETFLICKY_01_OUT, 0}, // S_SECRETFLICKY_01_OUT - {SPR_FS01, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_SECRETFLICKY_01_HOP, 0}, // S_SECRETFLICKY_01_AIM - {SPR_FS01, 1, 1, {A_FlickyFlounder}, 2*FRACUNIT, 6*FRACUNIT, S_SECRETFLICKY_01_UP, 0}, // S_SECRETFLICKY_01_HOP - {SPR_FS01, 2, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, S_SECRETFLICKY_01_DOWN, S_SECRETFLICKY_01_UP, 0}, // S_SECRETFLICKY_01_UP - {SPR_FS01, 3, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, 0, S_SECRETFLICKY_01_DOWN, 0}, // S_SECRETFLICKY_01_DOWN - {SPR_FS01, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, // S_SECRETFLICKY_01_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_01, 384*FRACUNIT, S_SECRETFLICKY_01_CENTER, 0}, // S_SECRETFLICKY_01_CENTER + {"S_SECRETFLICKY_01_OUT", 0, SPR_FS01, 0, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, 0, S_SECRETFLICKY_01_OUT, 0}, + {"S_SECRETFLICKY_01_AIM", 0, SPR_FS01, 1, 1, {A_FlickyAim}, ANG30, 32*FRACUNIT, S_SECRETFLICKY_01_HOP, 0}, + {"S_SECRETFLICKY_01_HOP", 0, SPR_FS01, 1, 1, {A_FlickyFlounder}, 2*FRACUNIT, 6*FRACUNIT, S_SECRETFLICKY_01_UP, 0}, + {"S_SECRETFLICKY_01_UP", 0, SPR_FS01, 2, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, S_SECRETFLICKY_01_DOWN, S_SECRETFLICKY_01_UP, 0}, + {"S_SECRETFLICKY_01_DOWN", 0, SPR_FS01, 3, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, 0, S_SECRETFLICKY_01_DOWN, 0}, + {"S_SECRETFLICKY_01_STAND", 0, SPR_FS01, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL, 0}, + {"S_SECRETFLICKY_01_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_01, 384*FRACUNIT, S_SECRETFLICKY_01_CENTER, 0}, // Bat - {SPR_FS02, 0, 2, {A_FlickyHeightCheck}, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_OUT, 0}, // S_SECRETFLICKY_02_OUT - {SPR_FS02, 1, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_SECRETFLICKY_02_FLAP2, 0}, // S_SECRETFLICKY_02_FLAP1 - {SPR_FS02, 2, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_SECRETFLICKY_02_FLAP3, 0}, // S_SECRETFLICKY_02_FLAP2 - {SPR_FS02, 3, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_SECRETFLICKY_02_FLAP1, 0}, // S_SECRETFLICKY_02_FLAP3 - {SPR_FS02, FF_ANIMATE|1, -1, {NULL}, 2, 2, S_NULL, 0}, // S_SECRETFLICKY_02_STAND - {SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_02, 384*FRACUNIT, S_SECRETFLICKY_02_CENTER, 0}, // S_SECRETFLICKY_02_CENTER + {"S_SECRETFLICKY_02_OUT", 0, SPR_FS02, 0, 2, {A_FlickyHeightCheck}, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_OUT, 0}, + {"S_SECRETFLICKY_02_FLAP1", 0, SPR_FS02, 1, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_SECRETFLICKY_02_FLAP2, 0}, + {"S_SECRETFLICKY_02_FLAP2", 0, SPR_FS02, 2, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_SECRETFLICKY_02_FLAP3, 0}, + {"S_SECRETFLICKY_02_FLAP3", 0, SPR_FS02, 3, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_SECRETFLICKY_02_FLAP1, 0}, + {"S_SECRETFLICKY_02_STAND", 0, SPR_FS02, FF_ANIMATE|1, -1, {NULL}, 2, 2, S_NULL, 0}, + {"S_SECRETFLICKY_02_CENTER", 0, SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_02, 384*FRACUNIT, S_SECRETFLICKY_02_CENTER, 0}, // Fan - {SPR_FANS, 0, 1, {A_FanBubbleSpawn}, 2048, 0, S_FAN2, 0}, // S_FAN - {SPR_FANS, 1, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN3, 0}, // S_FAN2 - {SPR_FANS, 2, 1, {A_FanBubbleSpawn}, 512, 0, S_FAN4, 0}, // S_FAN3 - {SPR_FANS, 3, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN5, 0}, // S_FAN4 - {SPR_FANS, 4, 1, {A_FanBubbleSpawn}, 512, 0, S_FAN, 0}, // S_FAN5 + {"S_FAN", 0, SPR_FANS, 0, 1, {A_FanBubbleSpawn}, 2048, 0, S_FAN2, 0}, + {"S_FAN2", 0, SPR_FANS, 1, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN3, 0}, + {"S_FAN3", 0, SPR_FANS, 2, 1, {A_FanBubbleSpawn}, 512, 0, S_FAN4, 0}, + {"S_FAN4", 0, SPR_FANS, 3, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN5, 0}, + {"S_FAN5", 0, SPR_FANS, 4, 1, {A_FanBubbleSpawn}, 512, 0, S_FAN, 0}, // Steam Riser - {SPR_STEM, 0, 2, {A_SetSolidSteam}, 0, 0, S_STEAM2, 0}, // S_STEAM1 - {SPR_STEM, 1, 2, {A_UnsetSolidSteam}, 0, 0, S_STEAM3, 0}, // S_STEAM2 - {SPR_STEM, 2, 2, {NULL}, 0, 0, S_STEAM4, 0}, // S_STEAM3 - {SPR_STEM, 3, 2, {NULL}, 0, 0, S_STEAM5, 0}, // S_STEAM4 - {SPR_STEM, 4, 2, {NULL}, 0, 0, S_STEAM6, 0}, // S_STEAM5 - {SPR_STEM, 5, 2, {NULL}, 0, 0, S_STEAM7, 0}, // S_STEAM6 - {SPR_STEM, 6, 2, {NULL}, 0, 0, S_STEAM8, 0}, // S_STEAM7 - {SPR_NULL, 0, 18, {NULL}, 0, 0, S_STEAM1, 0}, // S_STEAM8 + {"S_STEAM1", 0, SPR_STEM, 0, 2, {A_SetSolidSteam}, 0, 0, S_STEAM2, 0}, + {"S_STEAM2", 0, SPR_STEM, 1, 2, {A_UnsetSolidSteam}, 0, 0, S_STEAM3, 0}, + {"S_STEAM3", 0, SPR_STEM, 2, 2, {NULL}, 0, 0, S_STEAM4, 0}, + {"S_STEAM4", 0, SPR_STEM, 3, 2, {NULL}, 0, 0, S_STEAM5, 0}, + {"S_STEAM5", 0, SPR_STEM, 4, 2, {NULL}, 0, 0, S_STEAM6, 0}, + {"S_STEAM6", 0, SPR_STEM, 5, 2, {NULL}, 0, 0, S_STEAM7, 0}, + {"S_STEAM7", 0, SPR_STEM, 6, 2, {NULL}, 0, 0, S_STEAM8, 0}, + {"S_STEAM8", 0, SPR_NULL, 0, 18, {NULL}, 0, 0, S_STEAM1, 0}, // Bumpers - {SPR_BUMP, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 3, 4, S_NULL, 0}, // S_BUMPER - {SPR_BUMP, FF_ANIMATE|4, 12, {A_Pain}, 1, 3, S_BUMPER, 0}, //S_BUMPERHIT + {"S_BUMPER", 0, SPR_BUMP, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 3, 4, S_NULL, 0}, + {"S_BUMPERHIT", 0, SPR_BUMP, FF_ANIMATE|4, 12, {A_Pain}, 1, 3, S_BUMPER, 0}, // Balloons - {SPR_BLON, FF_ANIMATE, -1, {NULL}, 2, 5, S_NULL, 0}, // S_BALLOON - {SPR_BLON, 3, 0, {A_RemoteDamage}, 0, 1, S_BALLOONPOP2, 0}, // S_BALLOONPOP1 - {SPR_BLON, 3, 1, {A_Pain}, 0, 0, S_BALLOONPOP3, 0}, // S_BALLOONPOP2 - {SPR_BLON, 4, 1, {NULL}, 0, 0, S_BALLOONPOP4, 0}, // S_BALLOONPOP3 - {SPR_NULL, 0, TICRATE, {A_CheckFlags2}, MF2_AMBUSH, S_BALLOONPOP5, S_NULL, 0}, // S_BALLOONPOP4 - {SPR_NULL, 0, 15*TICRATE, {NULL}, 0, 0, S_BALLOONPOP6, 0}, // S_BALLOONPOP5 - {SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_NULL, 0}, // S_BALLOONPOP6 + {"S_BALLOON", 0, SPR_BLON, FF_ANIMATE, -1, {NULL}, 2, 5, S_NULL, 0}, + {"S_BALLOONPOP1", 0, SPR_BLON, 3, 0, {A_RemoteDamage}, 0, 1, S_BALLOONPOP2, 0}, + {"S_BALLOONPOP2", 0, SPR_BLON, 3, 1, {A_Pain}, 0, 0, S_BALLOONPOP3, 0}, + {"S_BALLOONPOP3", 0, SPR_BLON, 4, 1, {NULL}, 0, 0, S_BALLOONPOP4, 0}, + {"S_BALLOONPOP4", 0, SPR_NULL, 0, TICRATE, {A_CheckFlags2}, MF2_AMBUSH, S_BALLOONPOP5, S_NULL, 0}, + {"S_BALLOONPOP5", 0, SPR_NULL, 0, 15*TICRATE, {NULL}, 0, 0, S_BALLOONPOP6, 0}, + {"S_BALLOONPOP6", 0, SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_NULL, 0}, // Yellow Spring - {SPR_SPRY, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_YELLOWSPRING - {SPR_SPRY, 4, 4, {A_Pain}, 0, 0, S_YELLOWSPRING3, 0}, // S_YELLOWSPRING2 - {SPR_SPRY, 3, 1, {NULL}, 0, 0, S_YELLOWSPRING4, 0}, // S_YELLOWSPRING3 - {SPR_SPRY, 2, 1, {NULL}, 0, 0, S_YELLOWSPRING5, 0}, // S_YELLOWSPRING4 - {SPR_SPRY, 1, 1, {NULL}, 0, 0, S_YELLOWSPRING, 0}, // S_YELLOWSPRING5 + {"S_YELLOWSPRING", 0, SPR_SPRY, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_YELLOWSPRING2", 0, SPR_SPRY, 4, 4, {A_Pain}, 0, 0, S_YELLOWSPRING3, 0}, + {"S_YELLOWSPRING3", 0, SPR_SPRY, 3, 1, {NULL}, 0, 0, S_YELLOWSPRING4, 0}, + {"S_YELLOWSPRING4", 0, SPR_SPRY, 2, 1, {NULL}, 0, 0, S_YELLOWSPRING5, 0}, + {"S_YELLOWSPRING5", 0, SPR_SPRY, 1, 1, {NULL}, 0, 0, S_YELLOWSPRING, 0}, // Red Spring - {SPR_SPRR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_REDSPRING - {SPR_SPRR, 4, 4, {A_Pain}, 0, 0, S_REDSPRING3, 0}, // S_REDSPRING2 - {SPR_SPRR, 3, 1, {NULL}, 0, 0, S_REDSPRING4, 0}, // S_REDSPRING3 - {SPR_SPRR, 2, 1, {NULL}, 0, 0, S_REDSPRING5, 0}, // S_REDSPRING4 - {SPR_SPRR, 1, 1, {NULL}, 0, 0, S_REDSPRING, 0}, // S_REDSPRING5 + {"S_REDSPRING", 0, SPR_SPRR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_REDSPRING2", 0, SPR_SPRR, 4, 4, {A_Pain}, 0, 0, S_REDSPRING3, 0}, + {"S_REDSPRING3", 0, SPR_SPRR, 3, 1, {NULL}, 0, 0, S_REDSPRING4, 0}, + {"S_REDSPRING4", 0, SPR_SPRR, 2, 1, {NULL}, 0, 0, S_REDSPRING5, 0}, + {"S_REDSPRING5", 0, SPR_SPRR, 1, 1, {NULL}, 0, 0, S_REDSPRING, 0}, // Blue Spring - {SPR_SPRB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BLUESPRING - {SPR_SPRB, 4, 4, {A_Pain}, 0, 0, S_BLUESPRING3, 0}, // S_BLUESPRING2 - {SPR_SPRB, 3, 1, {NULL}, 0, 0, S_BLUESPRING4, 0}, // S_BLUESPRING3 - {SPR_SPRB, 2, 1, {NULL}, 0, 0, S_BLUESPRING5, 0}, // S_BLUESPRING4 - {SPR_SPRB, 1, 1, {NULL}, 0, 0, S_BLUESPRING, 0}, // S_BLUESPRING5 + {"S_BLUESPRING", 0, SPR_SPRB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BLUESPRING2", 0, SPR_SPRB, 4, 4, {A_Pain}, 0, 0, S_BLUESPRING3, 0}, + {"S_BLUESPRING3", 0, SPR_SPRB, 3, 1, {NULL}, 0, 0, S_BLUESPRING4, 0}, + {"S_BLUESPRING4", 0, SPR_SPRB, 2, 1, {NULL}, 0, 0, S_BLUESPRING5, 0}, + {"S_BLUESPRING5", 0, SPR_SPRB, 1, 1, {NULL}, 0, 0, S_BLUESPRING, 0}, // Yellow Diagonal Spring - {SPR_YSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_YDIAG1 - {SPR_YSPR, 1, 1, {A_Pain}, 0, 0, S_YDIAG3, 0}, // S_YDIAG2 - {SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG4, 0}, // S_YDIAG3 - {SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG5, 0}, // S_YDIAG4 - {SPR_YSPR, 4, 1, {NULL}, 0, 0, S_YDIAG6, 0}, // S_YDIAG5 - {SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG7, 0}, // S_YDIAG6 - {SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG8, 0}, // S_YDIAG7 - {SPR_YSPR, 1, 1, {NULL}, 0, 0, S_YDIAG1, 0}, // S_YDIAG8 + {"S_YDIAG1", 0, SPR_YSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_YDIAG2", 0, SPR_YSPR, 1, 1, {A_Pain}, 0, 0, S_YDIAG3, 0}, + {"S_YDIAG3", 0, SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG4, 0}, + {"S_YDIAG4", 0, SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG5, 0}, + {"S_YDIAG5", 0, SPR_YSPR, 4, 1, {NULL}, 0, 0, S_YDIAG6, 0}, + {"S_YDIAG6", 0, SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG7, 0}, + {"S_YDIAG7", 0, SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG8, 0}, + {"S_YDIAG8", 0, SPR_YSPR, 1, 1, {NULL}, 0, 0, S_YDIAG1, 0}, // Red Diagonal Spring - {SPR_RSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_RDIAG1 - {SPR_RSPR, 1, 1, {A_Pain}, 0, 0, S_RDIAG3, 0}, // S_RDIAG2 - {SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG4, 0}, // S_RDIAG3 - {SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG5, 0}, // S_RDIAG4 - {SPR_RSPR, 4, 1, {NULL}, 0, 0, S_RDIAG6, 0}, // S_RDIAG5 - {SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG7, 0}, // S_RDIAG6 - {SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG8, 0}, // S_RDIAG7 - {SPR_RSPR, 1, 1, {NULL}, 0, 0, S_RDIAG1, 0}, // S_RDIAG8 + {"S_RDIAG1", 0, SPR_RSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_RDIAG2", 0, SPR_RSPR, 1, 1, {A_Pain}, 0, 0, S_RDIAG3, 0}, + {"S_RDIAG3", 0, SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG4, 0}, + {"S_RDIAG4", 0, SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG5, 0}, + {"S_RDIAG5", 0, SPR_RSPR, 4, 1, {NULL}, 0, 0, S_RDIAG6, 0}, + {"S_RDIAG6", 0, SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG7, 0}, + {"S_RDIAG7", 0, SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG8, 0}, + {"S_RDIAG8", 0, SPR_RSPR, 1, 1, {NULL}, 0, 0, S_RDIAG1, 0}, // Blue Diagonal Spring - {SPR_BSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BDIAG1 - {SPR_BSPR, 1, 1, {A_Pain}, 0, 0, S_BDIAG3, 0}, // S_BDIAG2 - {SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG4, 0}, // S_BDIAG3 - {SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG5, 0}, // S_BDIAG4 - {SPR_BSPR, 4, 1, {NULL}, 0, 0, S_BDIAG6, 0}, // S_BDIAG5 - {SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG7, 0}, // S_BDIAG6 - {SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG8, 0}, // S_BDIAG7 - {SPR_BSPR, 1, 1, {NULL}, 0, 0, S_BDIAG1, 0}, // S_BDIAG8 + {"S_BDIAG1", 0, SPR_BSPR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BDIAG2", 0, SPR_BSPR, 1, 1, {A_Pain}, 0, 0, S_BDIAG3, 0}, + {"S_BDIAG3", 0, SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG4, 0}, + {"S_BDIAG4", 0, SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG5, 0}, + {"S_BDIAG5", 0, SPR_BSPR, 4, 1, {NULL}, 0, 0, S_BDIAG6, 0}, + {"S_BDIAG6", 0, SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG7, 0}, + {"S_BDIAG7", 0, SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG8, 0}, + {"S_BDIAG8", 0, SPR_BSPR, 1, 1, {NULL}, 0, 0, S_BDIAG1, 0}, // Yellow Side Spring - {SPR_SSWY, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_YHORIZ1 - {SPR_SSWY, 1, 1, {A_Pain}, 0, 0, S_YHORIZ3, 0}, // S_YHORIZ2 - {SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ4, 0}, // S_YHORIZ3 - {SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ5, 0}, // S_YHORIZ4 - {SPR_SSWY, 4, 1, {NULL}, 0, 0, S_YHORIZ6, 0}, // S_YHORIZ5 - {SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ7, 0}, // S_YHORIZ6 - {SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ8, 0}, // S_YHORIZ7 - {SPR_SSWY, 1, 1, {NULL}, 0, 0, S_YHORIZ1, 0}, // S_YHORIZ8 + {"S_YHORIZ1", 0, SPR_SSWY, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_YHORIZ2", 0, SPR_SSWY, 1, 1, {A_Pain}, 0, 0, S_YHORIZ3, 0}, + {"S_YHORIZ3", 0, SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ4, 0}, + {"S_YHORIZ4", 0, SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ5, 0}, + {"S_YHORIZ5", 0, SPR_SSWY, 4, 1, {NULL}, 0, 0, S_YHORIZ6, 0}, + {"S_YHORIZ6", 0, SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ7, 0}, + {"S_YHORIZ7", 0, SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ8, 0}, + {"S_YHORIZ8", 0, SPR_SSWY, 1, 1, {NULL}, 0, 0, S_YHORIZ1, 0}, // Red Side Spring - {SPR_SSWR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_RHORIZ1 - {SPR_SSWR, 1, 1, {A_Pain}, 0, 0, S_RHORIZ3, 0}, // S_RHORIZ2 - {SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ4, 0}, // S_RHORIZ3 - {SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ5, 0}, // S_RHORIZ4 - {SPR_SSWR, 4, 1, {NULL}, 0, 0, S_RHORIZ6, 0}, // S_RHORIZ5 - {SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ7, 0}, // S_RHORIZ6 - {SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ8, 0}, // S_RHORIZ7 - {SPR_SSWR, 1, 1, {NULL}, 0, 0, S_RHORIZ1, 0}, // S_RHORIZ8 + {"S_RHORIZ1", 0, SPR_SSWR, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_RHORIZ2", 0, SPR_SSWR, 1, 1, {A_Pain}, 0, 0, S_RHORIZ3, 0}, + {"S_RHORIZ3", 0, SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ4, 0}, + {"S_RHORIZ4", 0, SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ5, 0}, + {"S_RHORIZ5", 0, SPR_SSWR, 4, 1, {NULL}, 0, 0, S_RHORIZ6, 0}, + {"S_RHORIZ6", 0, SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ7, 0}, + {"S_RHORIZ7", 0, SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ8, 0}, + {"S_RHORIZ8", 0, SPR_SSWR, 1, 1, {NULL}, 0, 0, S_RHORIZ1, 0}, // Blue Side Spring - {SPR_SSWB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BHORIZ1 - {SPR_SSWB, 1, 1, {A_Pain}, 0, 0, S_BHORIZ3, 0}, // S_BHORIZ2 - {SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ4, 0}, // S_BHORIZ3 - {SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ5, 0}, // S_BHORIZ4 - {SPR_SSWB, 4, 1, {NULL}, 0, 0, S_BHORIZ6, 0}, // S_BHORIZ5 - {SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ7, 0}, // S_BHORIZ6 - {SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ8, 0}, // S_BHORIZ7 - {SPR_SSWB, 1, 1, {NULL}, 0, 0, S_BHORIZ1, 0}, // S_BHORIZ8 + {"S_BHORIZ1", 0, SPR_SSWB, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BHORIZ2", 0, SPR_SSWB, 1, 1, {A_Pain}, 0, 0, S_BHORIZ3, 0}, + {"S_BHORIZ3", 0, SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ4, 0}, + {"S_BHORIZ4", 0, SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ5, 0}, + {"S_BHORIZ5", 0, SPR_SSWB, 4, 1, {NULL}, 0, 0, S_BHORIZ6, 0}, + {"S_BHORIZ6", 0, SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ7, 0}, + {"S_BHORIZ7", 0, SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ8, 0}, + {"S_BHORIZ8", 0, SPR_SSWB, 1, 1, {NULL}, 0, 0, S_BHORIZ1, 0}, // Boosters - {SPR_NULL, 0, 1, {A_Pain}, 0, 0, S_INVISIBLE, 0}, // S_BOOSTERSOUND - {SPR_BSTY, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, // S_YELLOWBOOSTERROLLER - {SPR_BSTY, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, // S_YELLOWBOOSTERSEG_LEFT - {SPR_BSTY, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, // S_YELLOWBOOSTERSEG_RIGHT - {SPR_BSTY, 9|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_YELLOWBOOSTERSEG_FACE - {SPR_BSTR, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, // S_REDBOOSTERROLLER - {SPR_BSTR, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, // S_REDBOOSTERSEG_LEFT - {SPR_BSTR, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, // S_REDBOOSTERSEG_RIGHT - {SPR_BSTR, 9|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // S_REDBOOSTERSEG_FACE + {"S_BOOSTERSOUND", 0, SPR_NULL, 0, 1, {A_Pain}, 0, 0, S_INVISIBLE, 0}, + {"S_YELLOWBOOSTERROLLER", 0, SPR_BSTY, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, + {"S_YELLOWBOOSTERSEG_LEFT", 0, SPR_BSTY, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, + {"S_YELLOWBOOSTERSEG_RIGHT", 0, SPR_BSTY, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, + {"S_YELLOWBOOSTERSEG_FACE", 0, SPR_BSTY, 9|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_REDBOOSTERROLLER", 0, SPR_BSTR, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL, 0}, + {"S_REDBOOSTERSEG_LEFT", 0, SPR_BSTR, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, + {"S_REDBOOSTERSEG_RIGHT", 0, SPR_BSTR, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL, 0}, + {"S_REDBOOSTERSEG_FACE", 0, SPR_BSTR, 9|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL, 0}, // Rain - {SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0}, // S_RAIN1 - {SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, 1, {NULL}, 0, 0, S_RAIN1, 0}, // S_RAINRETURN + {"S_RAIN1", 0, SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_RAINRETURN", 0, SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, 1, {NULL}, 0, 0, S_RAIN1, 0}, // Snowflake - {SPR_SNO1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNOW1 - {SPR_SNO1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNOW2 - {SPR_SNO1, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SNOW3 + {"S_SNOW1", 0, SPR_SNO1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SNOW2", 0, SPR_SNO1, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_SNOW3", 0, SPR_SNO1, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // Water Splish - {SPR_SPLH, FF_TRANS50 , 2, {NULL}, 0, 0, S_SPLISH2, 0}, // S_SPLISH1 - {SPR_SPLH, FF_TRANS50|1, 2, {NULL}, 0, 0, S_SPLISH3, 0}, // S_SPLISH2 - {SPR_SPLH, FF_TRANS50|2, 2, {NULL}, 0, 0, S_SPLISH4, 0}, // S_SPLISH3 - {SPR_SPLH, FF_TRANS50|3, 2, {NULL}, 0, 0, S_SPLISH5, 0}, // S_SPLISH4 - {SPR_SPLH, FF_TRANS50|4, 2, {NULL}, 0, 0, S_SPLISH6, 0}, // S_SPLISH5 - {SPR_SPLH, FF_TRANS50|5, 2, {NULL}, 0, 0, S_SPLISH7, 0}, // S_SPLISH6 - {SPR_SPLH, FF_TRANS50|6, 2, {NULL}, 0, 0, S_SPLISH8, 0}, // S_SPLISH7 - {SPR_SPLH, FF_TRANS50|7, 2, {NULL}, 0, 0, S_SPLISH9, 0}, // S_SPLISH8 - {SPR_SPLH, FF_TRANS50|8, 2, {NULL}, 0, 0, S_NULL, 0}, // S_SPLISH9 + {"S_SPLISH1", 0, SPR_SPLH, FF_TRANS50 , 2, {NULL}, 0, 0, S_SPLISH2, 0}, + {"S_SPLISH2", 0, SPR_SPLH, FF_TRANS50|1, 2, {NULL}, 0, 0, S_SPLISH3, 0}, + {"S_SPLISH3", 0, SPR_SPLH, FF_TRANS50|2, 2, {NULL}, 0, 0, S_SPLISH4, 0}, + {"S_SPLISH4", 0, SPR_SPLH, FF_TRANS50|3, 2, {NULL}, 0, 0, S_SPLISH5, 0}, + {"S_SPLISH5", 0, SPR_SPLH, FF_TRANS50|4, 2, {NULL}, 0, 0, S_SPLISH6, 0}, + {"S_SPLISH6", 0, SPR_SPLH, FF_TRANS50|5, 2, {NULL}, 0, 0, S_SPLISH7, 0}, + {"S_SPLISH7", 0, SPR_SPLH, FF_TRANS50|6, 2, {NULL}, 0, 0, S_SPLISH8, 0}, + {"S_SPLISH8", 0, SPR_SPLH, FF_TRANS50|7, 2, {NULL}, 0, 0, S_SPLISH9, 0}, + {"S_SPLISH9", 0, SPR_SPLH, FF_TRANS50|8, 2, {NULL}, 0, 0, S_NULL, 0}, // Lava splish - {SPR_LSPL, FF_ANIMATE, 16, {NULL}, 7, 2, S_NULL, 0}, // S_LAVASPLISH + {"S_LAVASPLISH", 0, SPR_LSPL, FF_ANIMATE, 16, {NULL}, 7, 2, S_NULL, 0}, // Water Splash - {SPR_SPLA, FF_TRANS50 , 3, {NULL}, 0, 0, S_SPLASH2, 0}, // S_SPLASH1 - {SPR_SPLA, FF_TRANS70|1, 3, {NULL}, 0, 0, S_SPLASH3, 0}, // S_SPLASH2 - {SPR_SPLA, FF_TRANS90|2, 3, {NULL}, 0, 0, S_RAINRETURN, 0}, // S_SPLASH3 + {"S_SPLASH1", 0, SPR_SPLA, FF_TRANS50 , 3, {NULL}, 0, 0, S_SPLASH2, 0}, + {"S_SPLASH2", 0, SPR_SPLA, FF_TRANS70|1, 3, {NULL}, 0, 0, S_SPLASH3, 0}, + {"S_SPLASH3", 0, SPR_SPLA, FF_TRANS90|2, 3, {NULL}, 0, 0, S_RAINRETURN, 0}, // Smoke - {SPR_SMOK, FF_TRANS50 , 4, {NULL}, 0, 0, S_SMOKE2, 0}, // S_SMOKE1 - {SPR_SMOK, FF_TRANS50|1, 5, {NULL}, 0, 0, S_SMOKE3, 0}, // S_SMOKE2 - {SPR_SMOK, FF_TRANS50|2, 6, {NULL}, 0, 0, S_SMOKE4, 0}, // S_SMOKE3 - {SPR_SMOK, FF_TRANS50|3, 7, {NULL}, 0, 0, S_SMOKE5, 0}, // S_SMOKE4 - {SPR_SMOK, FF_TRANS50|4, 8, {NULL}, 0, 0, S_NULL, 0}, // S_SMOKE5 + {"S_SMOKE1", 0, SPR_SMOK, FF_TRANS50 , 4, {NULL}, 0, 0, S_SMOKE2, 0}, + {"S_SMOKE2", 0, SPR_SMOK, FF_TRANS50|1, 5, {NULL}, 0, 0, S_SMOKE3, 0}, + {"S_SMOKE3", 0, SPR_SMOK, FF_TRANS50|2, 6, {NULL}, 0, 0, S_SMOKE4, 0}, + {"S_SMOKE4", 0, SPR_SMOK, FF_TRANS50|3, 7, {NULL}, 0, 0, S_SMOKE5, 0}, + {"S_SMOKE5", 0, SPR_SMOK, FF_TRANS50|4, 8, {NULL}, 0, 0, S_NULL, 0}, // Bubbles - {SPR_BUBL, FF_TRANS50, 1, {A_BubbleRise}, 0, 1024, S_SMALLBUBBLE, 0}, // S_SMALLBUBBLE - {SPR_BUBL, FF_TRANS50|1, 1, {A_BubbleRise}, 0, 1024, S_MEDIUMBUBBLE, 0}, // S_MEDIUMBUBBLE + {"S_SMALLBUBBLE", 0, SPR_BUBL, FF_TRANS50, 1, {A_BubbleRise}, 0, 1024, S_SMALLBUBBLE, 0}, + {"S_MEDIUMBUBBLE", 0, SPR_BUBL, FF_TRANS50|1, 1, {A_BubbleRise}, 0, 1024, S_MEDIUMBUBBLE, 0}, // Extra Large Bubble (breathable) - {SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|2, 8, {A_BubbleRise}, 0, 1024, S_LARGEBUBBLE2, 0}, // S_LARGEBUBBLE1 - {SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|3, 8, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE, 0}, // S_LARGEBUBBLE2 - {SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|4, 16, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE, 0}, // S_EXTRALARGEBUBBLE + {"S_LARGEBUBBLE1", 0, SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|2, 8, {A_BubbleRise}, 0, 1024, S_LARGEBUBBLE2, 0}, + {"S_LARGEBUBBLE2", 0, SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|3, 8, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE, 0}, + {"S_EXTRALARGEBUBBLE", 0, SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|4, 16, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE, 0}, // Extra Large Bubble goes POP! - {SPR_BUBL, 5, 16, {NULL}, 0, 0, S_NULL, 0}, // S_POP1 + {"S_POP1", 0, SPR_BUBL, 5, 16, {NULL}, 0, 0, S_NULL, 0}, - {SPR_WZAP, FF_TRANS10|FF_ANIMATE|FF_RANDOMANIM, 4, {NULL}, 3, 2, S_NULL, 0}, // S_WATERZAP + {"S_WATERZAP", 0, SPR_WZAP, FF_TRANS10|FF_ANIMATE|FF_RANDOMANIM, 4, {NULL}, 3, 2, S_NULL, 0}, // Spindash dust - {SPR_DUST, 0, 7, {NULL}, 0, 0, S_SPINDUST2, 0}, // S_SPINDUST1 - {SPR_DUST, 1, 6, {NULL}, 0, 0, S_SPINDUST3, 0}, // S_SPINDUST2 - {SPR_DUST, FF_TRANS30|2, 4, {NULL}, 0, 0, S_SPINDUST4, 0}, // S_SPINDUST3 - {SPR_DUST, FF_TRANS60|3, 3, {NULL}, 0, 0, S_NULL, 0}, // S_SPINDUST4 - {SPR_BUBL, 0, 7, {NULL}, 0, 0, S_SPINDUST_BUBBLE2, 0}, // S_SPINDUST_BUBBLE1 - {SPR_BUBL, 0, 6, {NULL}, 0, 0, S_SPINDUST_BUBBLE3, 0}, // S_SPINDUST_BUBBLE2 - {SPR_BUBL, FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_BUBBLE4, 0}, // S_SPINDUST_BUBBLE3 - {SPR_BUBL, FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL, 0}, // S_SPINDUST_BUBBLE4 - {SPR_FPRT, FF_FULLBRIGHT|0, 7, {NULL}, 0, 0, S_SPINDUST_FIRE2, 0}, // S_SPINDUST_FIRE1 - {SPR_FPRT, FF_FULLBRIGHT|0, 6, {NULL}, 0, 0, S_SPINDUST_FIRE3, 0}, // S_SPINDUST_FIRE2 - {SPR_FPRT, FF_FULLBRIGHT|FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_FIRE4, 0}, // S_SPINDUST_FIRE3 - {SPR_FPRT, FF_FULLBRIGHT|FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL, 0}, // S_SPINDUST_FIRE4 - - - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50, 2, {NULL}, 0, 0, S_FOG2, 0}, // S_FOG1 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|1, 2, {NULL}, 0, 0, S_FOG3, 0}, // S_FOG2 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|2, 2, {NULL}, 0, 0, S_FOG4, 0}, // S_FOG3 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|3, 2, {NULL}, 0, 0, S_FOG5, 0}, // S_FOG4 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|4, 2, {NULL}, 0, 0, S_FOG6, 0}, // S_FOG5 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|5, 2, {NULL}, 0, 0, S_FOG7, 0}, // S_FOG6 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|6, 2, {NULL}, 0, 0, S_FOG8, 0}, // S_FOG7 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|7, 2, {NULL}, 0, 0, S_FOG9, 0}, // S_FOG8 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|8, 2, {NULL}, 0, 0, S_FOG10, 0}, // S_FOG9 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|9, 2, {NULL}, 0, 0, S_FOG11, 0}, // S_FOG10 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|10, 2, {NULL}, 0, 0, S_FOG12, 0}, // S_FOG11 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|11, 2, {NULL}, 0, 0, S_FOG13, 0}, // S_FOG12 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|12, 2, {NULL}, 0, 0, S_FOG14, 0}, // S_FOG13 - {SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|13, 2, {NULL}, 0, 0, S_NULL, 0}, // S_FOG14 + {"S_SPINDUST1", 0, SPR_DUST, 0, 7, {NULL}, 0, 0, S_SPINDUST2, 0}, + {"S_SPINDUST2", 0, SPR_DUST, 1, 6, {NULL}, 0, 0, S_SPINDUST3, 0}, + {"S_SPINDUST3", 0, SPR_DUST, FF_TRANS30|2, 4, {NULL}, 0, 0, S_SPINDUST4, 0}, + {"S_SPINDUST4", 0, SPR_DUST, FF_TRANS60|3, 3, {NULL}, 0, 0, S_NULL, 0}, + {"S_SPINDUST_BUBBLE1", 0, SPR_BUBL, 0, 7, {NULL}, 0, 0, S_SPINDUST_BUBBLE2, 0}, + {"S_SPINDUST_BUBBLE2", 0, SPR_BUBL, 0, 6, {NULL}, 0, 0, S_SPINDUST_BUBBLE3, 0}, + {"S_SPINDUST_BUBBLE3", 0, SPR_BUBL, FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_BUBBLE4, 0}, + {"S_SPINDUST_BUBBLE4", 0, SPR_BUBL, FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL, 0}, + {"S_SPINDUST_FIRE1", 0, SPR_FPRT, FF_FULLBRIGHT|0, 7, {NULL}, 0, 0, S_SPINDUST_FIRE2, 0}, + {"S_SPINDUST_FIRE2", 0, SPR_FPRT, FF_FULLBRIGHT|0, 6, {NULL}, 0, 0, S_SPINDUST_FIRE3, 0}, + {"S_SPINDUST_FIRE3", 0, SPR_FPRT, FF_FULLBRIGHT|FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_FIRE4, 0}, + {"S_SPINDUST_FIRE4", 0, SPR_FPRT, FF_FULLBRIGHT|FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL, 0}, + + + {"S_FOG1", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50, 2, {NULL}, 0, 0, S_FOG2, 0}, + {"S_FOG2", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|1, 2, {NULL}, 0, 0, S_FOG3, 0}, + {"S_FOG3", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|2, 2, {NULL}, 0, 0, S_FOG4, 0}, + {"S_FOG4", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|3, 2, {NULL}, 0, 0, S_FOG5, 0}, + {"S_FOG5", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|4, 2, {NULL}, 0, 0, S_FOG6, 0}, + {"S_FOG6", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|5, 2, {NULL}, 0, 0, S_FOG7, 0}, + {"S_FOG7", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|6, 2, {NULL}, 0, 0, S_FOG8, 0}, + {"S_FOG8", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|7, 2, {NULL}, 0, 0, S_FOG9, 0}, + {"S_FOG9", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|8, 2, {NULL}, 0, 0, S_FOG10, 0}, + {"S_FOG10", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|9, 2, {NULL}, 0, 0, S_FOG11, 0}, + {"S_FOG11", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|10, 2, {NULL}, 0, 0, S_FOG12, 0}, + {"S_FOG12", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|11, 2, {NULL}, 0, 0, S_FOG13, 0}, + {"S_FOG13", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|12, 2, {NULL}, 0, 0, S_FOG14, 0}, + {"S_FOG14", 0, SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|13, 2, {NULL}, 0, 0, S_NULL, 0}, // Flower Seed - {SPR_SEED, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 2, 2, S_NULL, 0}, // S_SEED + {"S_SEED", 0, SPR_SEED, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 2, 2, S_NULL, 0}, // Particle sprite - {SPR_PRTL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL, 0}, // S_PARTICLE - - {SPR_SCOR, 0, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRA - 100 - {SPR_SCOR, 1, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRB - 200 - {SPR_SCOR, 2, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRC - 500 - {SPR_SCOR, 3, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRD - 1000 - {SPR_SCOR, 4, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRE - 10000 - {SPR_SCOR, 5, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRF - 400 (mario mode) - {SPR_SCOR, 6, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRG - 800 (mario mode) - {SPR_SCOR, 7, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRH - 2000 (mario mode) - {SPR_SCOR, 8, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRI - 4000 (mario mode) - {SPR_SCOR, 9, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRJ - 8000 (mario mode) - {SPR_SCOR, 10, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRK - 1UP (mario mode) - {SPR_SCOR, 11, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // S_SCRL - 10 + {"S_PARTICLE", 0, SPR_PRTL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL, 0}, + + {"S_SCRA", 0, SPR_SCOR, 0, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 100 + {"S_SCRB", 0, SPR_SCOR, 1, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 200 + {"S_SCRC", 0, SPR_SCOR, 2, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 500 + {"S_SCRD", 0, SPR_SCOR, 3, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 1000 + {"S_SCRE", 0, SPR_SCOR, 4, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 10000 + {"S_SCRF", 0, SPR_SCOR, 5, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 400 (mario mode) + {"S_SCRG", 0, SPR_SCOR, 6, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 800 (mario mode) + {"S_SCRH", 0, SPR_SCOR, 7, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 2000 (mario mode) + {"S_SCRI", 0, SPR_SCOR, 8, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 4000 (mario mode) + {"S_SCRJ", 0, SPR_SCOR, 9, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 8000 (mario mode) + {"S_SCRK", 0, SPR_SCOR, 10, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 1UP (mario mode) + {"S_SCRL", 0, SPR_SCOR, 11, 32, {A_ScoreRise}, 0, 0, S_NULL, 0}, // - 10 // Drowning Timer Numbers - {SPR_DRWN, 0, 40, {NULL}, 0, 0, S_NULL, 0}, // S_ZERO1 - {SPR_DRWN, 1, 40, {NULL}, 0, 0, S_NULL, 0}, // S_ONE1 - {SPR_DRWN, 2, 40, {NULL}, 0, 0, S_NULL, 0}, // S_TWO1 - {SPR_DRWN, 3, 40, {NULL}, 0, 0, S_NULL, 0}, // S_THREE1 - {SPR_DRWN, 4, 40, {NULL}, 0, 0, S_NULL, 0}, // S_FOUR1 - {SPR_DRWN, 5, 40, {NULL}, 0, 0, S_NULL, 0}, // S_FIVE1 - - {SPR_DRWN, 6, 40, {NULL}, 0, 0, S_NULL, 0}, // S_ZERO2 - {SPR_DRWN, 7, 40, {NULL}, 0, 0, S_NULL, 0}, // S_ONE2 - {SPR_DRWN, 8, 40, {NULL}, 0, 0, S_NULL, 0}, // S_TWO2 - {SPR_DRWN, 9, 40, {NULL}, 0, 0, S_NULL, 0}, // S_THREE2 - {SPR_DRWN, 10, 40, {NULL}, 0, 0, S_NULL, 0}, // S_FOUR2 - {SPR_DRWN, 11, 40, {NULL}, 0, 0, S_NULL, 0}, // S_FIVE2 + {"S_ZERO1", 0, SPR_DRWN, 0, 40, {NULL}, 0, 0, S_NULL, 0}, + {"S_ONE1", 0, SPR_DRWN, 1, 40, {NULL}, 0, 0, S_NULL, 0}, + {"S_TWO1", 0, SPR_DRWN, 2, 40, {NULL}, 0, 0, S_NULL, 0}, + {"S_THREE1", 0, SPR_DRWN, 3, 40, {NULL}, 0, 0, S_NULL, 0}, + {"S_FOUR1", 0, SPR_DRWN, 4, 40, {NULL}, 0, 0, S_NULL, 0}, + {"S_FIVE1", 0, SPR_DRWN, 5, 40, {NULL}, 0, 0, S_NULL, 0}, + + {"S_ZERO2", 0, SPR_DRWN, 6, 40, {NULL}, 0, 0, S_NULL, 0}, + {"S_ONE2", 0, SPR_DRWN, 7, 40, {NULL}, 0, 0, S_NULL, 0}, + {"S_TWO2", 0, SPR_DRWN, 8, 40, {NULL}, 0, 0, S_NULL, 0}, + {"S_THREE2", 0, SPR_DRWN, 9, 40, {NULL}, 0, 0, S_NULL, 0}, + {"S_FOUR2", 0, SPR_DRWN, 10, 40, {NULL}, 0, 0, S_NULL, 0}, + {"S_FIVE2", 0, SPR_DRWN, 11, 40, {NULL}, 0, 0, S_NULL, 0}, // Flight indicator - {SPR_FLII, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 4, S_NULL, 0}, // S_FLIGHTINDICATOR + {"S_FLIGHTINDICATOR", 0, SPR_FLII, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 4, S_NULL, 0}, - {SPR_LCKN, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKON1 - {SPR_LCKN, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKON2 - {SPR_LCKN, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKON3 - {SPR_LCKN, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKON4 + {"S_LOCKON1", 0, SPR_LCKN, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, + {"S_LOCKON2", 0, SPR_LCKN, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, + {"S_LOCKON3", 0, SPR_LCKN, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, + {"S_LOCKON4", 0, SPR_LCKN, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, - {SPR_LCKN, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKONINF1 - {SPR_LCKN, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKONINF2 - {SPR_LCKN, 2|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKONINF3 - {SPR_LCKN, 3|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LOCKONINF4 + {"S_LOCKONINF1", 0, SPR_LCKN, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_LOCKONINF2", 0, SPR_LCKN, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_LOCKONINF3", 0, SPR_LCKN, 2|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_LOCKONINF4", 0, SPR_LCKN, 3|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_TTAG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL, 0}, // S_TTAG + {"S_TTAG", 0, SPR_TTAG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL, 0}, // CTF Sign - {SPR_GFLG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL, 0}, // S_GOTFLAG + {"S_GOTFLAG", 0, SPR_GFLG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL, 0}, // Finish flag - {SPR_FNSF, FF_TRANS30, -1, {NULL}, 0, 0, S_NULL, 0}, // S_FINISHFLAG + {"S_FINISHFLAG", 0, SPR_FNSF, FF_TRANS30, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_CORK, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_CORK - {SPR_LHRT, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_LHRT + {"S_CORK", 0, SPR_CORK, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_LHRT", 0, SPR_LHRT, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // Red Rings (thrown) - {SPR_RRNG, FF_FULLBRIGHT, 1, {A_ThrownRing}, 0, 0, S_RRNG2, 0}, // S_RRNG1 - {SPR_RRNG, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_RRNG3, 0}, // S_RRNG2 - {SPR_RRNG, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_RRNG4, 0}, // S_RRNG3 - {SPR_RRNG, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_RRNG5, 0}, // S_RRNG4 - {SPR_RRNG, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_RRNG6, 0}, // S_RRNG5 - {SPR_RRNG, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_RRNG7, 0}, // S_RRNG6 - {SPR_RRNG, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_RRNG1, 0}, // S_RRNG7 + {"S_RRNG1", 0, SPR_RRNG, FF_FULLBRIGHT, 1, {A_ThrownRing}, 0, 0, S_RRNG2, 0}, + {"S_RRNG2", 0, SPR_RRNG, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_RRNG3, 0}, + {"S_RRNG3", 0, SPR_RRNG, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_RRNG4, 0}, + {"S_RRNG4", 0, SPR_RRNG, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_RRNG5, 0}, + {"S_RRNG5", 0, SPR_RRNG, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_RRNG6, 0}, + {"S_RRNG6", 0, SPR_RRNG, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_RRNG7, 0}, + {"S_RRNG7", 0, SPR_RRNG, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_RRNG1, 0}, // Weapon Ring Ammo - {SPR_RNGB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_BOUNCERINGAMMO, 0}, // S_BOUNCERINGAMMO - {SPR_RNGR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_RAILRINGAMMO, 0}, // S_RAILRINGAMMO - {SPR_RNGI, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_INFINITYRINGAMMO, 0}, // S_INFINITYRINGAMMO - {SPR_RNGA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_AUTOMATICRINGAMMO, 0}, // S_AUTOMATICRINGAMMO - {SPR_RNGE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_EXPLOSIONRINGAMMO, 0}, // S_EXPLOSIONRINGAMMO - {SPR_RNGS, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_SCATTERRINGAMMO, 0}, // S_SCATTERRINGAMMO - {SPR_RNGG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_GRENADERINGAMMO, 0}, // S_GRENADERINGAMMO + {"S_BOUNCERINGAMMO", 0, SPR_RNGB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_BOUNCERINGAMMO, 0}, + {"S_RAILRINGAMMO", 0, SPR_RNGR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_RAILRINGAMMO, 0}, + {"S_INFINITYRINGAMMO", 0, SPR_RNGI, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_INFINITYRINGAMMO, 0}, + {"S_AUTOMATICRINGAMMO", 0, SPR_RNGA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_AUTOMATICRINGAMMO, 0}, + {"S_EXPLOSIONRINGAMMO", 0, SPR_RNGE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_EXPLOSIONRINGAMMO, 0}, + {"S_SCATTERRINGAMMO", 0, SPR_RNGS, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_SCATTERRINGAMMO, 0}, + {"S_GRENADERINGAMMO", 0, SPR_RNGG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_GRENADERINGAMMO, 0}, // Bounce Ring Pickup - {SPR_PIKB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_BOUNCEPICKUP, 0}, // S_BOUNCEPICKUP + {"S_BOUNCEPICKUP", 0, SPR_PIKB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_BOUNCEPICKUP, 0}, - {SPR_PIKB, 0, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE2, 0}, // S_BOUNCEPICKUPFADE1 - {SPR_PIKB, 2, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE3, 0}, // S_BOUNCEPICKUPFADE2 - {SPR_PIKB, 4, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE4, 0}, // S_BOUNCEPICKUPFADE3 - {SPR_PIKB, 6, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE5, 0}, // S_BOUNCEPICKUPFADE4 - {SPR_PIKB, 8, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE6, 0}, // S_BOUNCEPICKUPFADE5 - {SPR_PIKB, 10, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE7, 0}, // S_BOUNCEPICKUPFADE6 - {SPR_PIKB, 12, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE8, 0}, // S_BOUNCEPICKUPFADE7 - {SPR_PIKB, 14, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE1, 0}, // S_BOUNCEPICKUPFADE8 + {"S_BOUNCEPICKUPFADE1", 0, SPR_PIKB, 0, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE2, 0}, + {"S_BOUNCEPICKUPFADE2", 0, SPR_PIKB, 2, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE3, 0}, + {"S_BOUNCEPICKUPFADE3", 0, SPR_PIKB, 4, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE4, 0}, + {"S_BOUNCEPICKUPFADE4", 0, SPR_PIKB, 6, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE5, 0}, + {"S_BOUNCEPICKUPFADE5", 0, SPR_PIKB, 8, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE6, 0}, + {"S_BOUNCEPICKUPFADE6", 0, SPR_PIKB, 10, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE7, 0}, + {"S_BOUNCEPICKUPFADE7", 0, SPR_PIKB, 12, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE8, 0}, + {"S_BOUNCEPICKUPFADE8", 0, SPR_PIKB, 14, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE1, 0}, // Rail Ring Pickup - {SPR_PIKR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_RAILPICKUP, 0}, // S_RAILPICKUP + {"S_RAILPICKUP", 0, SPR_PIKR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_RAILPICKUP, 0}, - {SPR_PIKR, 0, 1, {NULL}, 0, 0, S_RAILPICKUPFADE2, 0}, // S_RAILPICKUPFADE1 - {SPR_PIKR, 2, 1, {NULL}, 0, 0, S_RAILPICKUPFADE3, 0}, // S_RAILPICKUPFADE2 - {SPR_PIKR, 4, 1, {NULL}, 0, 0, S_RAILPICKUPFADE4, 0}, // S_RAILPICKUPFADE3 - {SPR_PIKR, 6, 1, {NULL}, 0, 0, S_RAILPICKUPFADE5, 0}, // S_RAILPICKUPFADE4 - {SPR_PIKR, 8, 1, {NULL}, 0, 0, S_RAILPICKUPFADE6, 0}, // S_RAILPICKUPFADE5 - {SPR_PIKR, 10, 1, {NULL}, 0, 0, S_RAILPICKUPFADE7, 0}, // S_RAILPICKUPFADE6 - {SPR_PIKR, 12, 1, {NULL}, 0, 0, S_RAILPICKUPFADE8, 0}, // S_RAILPICKUPFADE7 - {SPR_PIKR, 14, 1, {NULL}, 0, 0, S_RAILPICKUPFADE1, 0}, // S_RAILPICKUPFADE8 + {"S_RAILPICKUPFADE1", 0, SPR_PIKR, 0, 1, {NULL}, 0, 0, S_RAILPICKUPFADE2, 0}, + {"S_RAILPICKUPFADE2", 0, SPR_PIKR, 2, 1, {NULL}, 0, 0, S_RAILPICKUPFADE3, 0}, + {"S_RAILPICKUPFADE3", 0, SPR_PIKR, 4, 1, {NULL}, 0, 0, S_RAILPICKUPFADE4, 0}, + {"S_RAILPICKUPFADE4", 0, SPR_PIKR, 6, 1, {NULL}, 0, 0, S_RAILPICKUPFADE5, 0}, + {"S_RAILPICKUPFADE5", 0, SPR_PIKR, 8, 1, {NULL}, 0, 0, S_RAILPICKUPFADE6, 0}, + {"S_RAILPICKUPFADE6", 0, SPR_PIKR, 10, 1, {NULL}, 0, 0, S_RAILPICKUPFADE7, 0}, + {"S_RAILPICKUPFADE7", 0, SPR_PIKR, 12, 1, {NULL}, 0, 0, S_RAILPICKUPFADE8, 0}, + {"S_RAILPICKUPFADE8", 0, SPR_PIKR, 14, 1, {NULL}, 0, 0, S_RAILPICKUPFADE1, 0}, // Auto Ring Pickup - {SPR_PIKA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_AUTOPICKUP, 0}, // S_AUTOPICKUP + {"S_AUTOPICKUP", 0, SPR_PIKA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_AUTOPICKUP, 0}, - {SPR_PIKA, 0, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE2, 0}, // S_AUTOPICKUPFADE1 - {SPR_PIKA, 2, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE3, 0}, // S_AUTOPICKUPFADE2 - {SPR_PIKA, 4, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE4, 0}, // S_AUTOPICKUPFADE3 - {SPR_PIKA, 6, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE5, 0}, // S_AUTOPICKUPFADE4 - {SPR_PIKA, 8, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE6, 0}, // S_AUTOPICKUPFADE5 - {SPR_PIKA, 10, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE7, 0}, // S_AUTOPICKUPFADE6 - {SPR_PIKA, 12, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE8, 0}, // S_AUTOPICKUPFADE7 - {SPR_PIKA, 14, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE1, 0}, // S_AUTOPICKUPFADE8 + {"S_AUTOPICKUPFADE1", 0, SPR_PIKA, 0, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE2, 0}, + {"S_AUTOPICKUPFADE2", 0, SPR_PIKA, 2, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE3, 0}, + {"S_AUTOPICKUPFADE3", 0, SPR_PIKA, 4, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE4, 0}, + {"S_AUTOPICKUPFADE4", 0, SPR_PIKA, 6, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE5, 0}, + {"S_AUTOPICKUPFADE5", 0, SPR_PIKA, 8, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE6, 0}, + {"S_AUTOPICKUPFADE6", 0, SPR_PIKA, 10, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE7, 0}, + {"S_AUTOPICKUPFADE7", 0, SPR_PIKA, 12, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE8, 0}, + {"S_AUTOPICKUPFADE8", 0, SPR_PIKA, 14, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE1, 0}, // Explode Ring Pickup - {SPR_PIKE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_EXPLODEPICKUP, 0}, // S_EXPLODEPICKUP + {"S_EXPLODEPICKUP", 0, SPR_PIKE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_EXPLODEPICKUP, 0}, - {SPR_PIKE, 0, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE2, 0}, // S_EXPLODEPICKUPFADE1 - {SPR_PIKE, 2, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE3, 0}, // S_EXPLODEPICKUPFADE2 - {SPR_PIKE, 4, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE4, 0}, // S_EXPLODEPICKUPFADE3 - {SPR_PIKE, 6, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE5, 0}, // S_EXPLODEPICKUPFADE4 - {SPR_PIKE, 8, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE6, 0}, // S_EXPLODEPICKUPFADE5 - {SPR_PIKE, 10, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE7, 0}, // S_EXPLODEPICKUPFADE6 - {SPR_PIKE, 12, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE8, 0}, // S_EXPLODEPICKUPFADE7 - {SPR_PIKE, 14, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE1, 0}, // S_EXPLODEPICKUPFADE8 + {"S_EXPLODEPICKUPFADE1", 0, SPR_PIKE, 0, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE2, 0}, + {"S_EXPLODEPICKUPFADE2", 0, SPR_PIKE, 2, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE3, 0}, + {"S_EXPLODEPICKUPFADE3", 0, SPR_PIKE, 4, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE4, 0}, + {"S_EXPLODEPICKUPFADE4", 0, SPR_PIKE, 6, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE5, 0}, + {"S_EXPLODEPICKUPFADE5", 0, SPR_PIKE, 8, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE6, 0}, + {"S_EXPLODEPICKUPFADE6", 0, SPR_PIKE, 10, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE7, 0}, + {"S_EXPLODEPICKUPFADE7", 0, SPR_PIKE, 12, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE8, 0}, + {"S_EXPLODEPICKUPFADE8", 0, SPR_PIKE, 14, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE1, 0}, // Scatter Ring Pickup - {SPR_PIKS, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_SCATTERPICKUP, 0}, // S_SCATTERPICKUP + {"S_SCATTERPICKUP", 0, SPR_PIKS, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_SCATTERPICKUP, 0}, - {SPR_PIKS, 0, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE2, 0}, // S_SCATTERPICKUPFADE1 - {SPR_PIKS, 2, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE3, 0}, // S_SCATTERPICKUPFADE2 - {SPR_PIKS, 4, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE4, 0}, // S_SCATTERPICKUPFADE3 - {SPR_PIKS, 6, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE5, 0}, // S_SCATTERPICKUPFADE4 - {SPR_PIKS, 8, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE6, 0}, // S_SCATTERPICKUPFADE5 - {SPR_PIKS, 10, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE7, 0}, // S_SCATTERPICKUPFADE6 - {SPR_PIKS, 12, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE8, 0}, // S_SCATTERPICKUPFADE7 - {SPR_PIKS, 14, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE1, 0}, // S_SCATTERPICKUPFADE8 + {"S_SCATTERPICKUPFADE1", 0, SPR_PIKS, 0, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE2, 0}, + {"S_SCATTERPICKUPFADE2", 0, SPR_PIKS, 2, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE3, 0}, + {"S_SCATTERPICKUPFADE3", 0, SPR_PIKS, 4, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE4, 0}, + {"S_SCATTERPICKUPFADE4", 0, SPR_PIKS, 6, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE5, 0}, + {"S_SCATTERPICKUPFADE5", 0, SPR_PIKS, 8, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE6, 0}, + {"S_SCATTERPICKUPFADE6", 0, SPR_PIKS, 10, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE7, 0}, + {"S_SCATTERPICKUPFADE7", 0, SPR_PIKS, 12, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE8, 0}, + {"S_SCATTERPICKUPFADE8", 0, SPR_PIKS, 14, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE1, 0}, // Grenade Ring Pickup - {SPR_PIKG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_GRENADEPICKUP, 0}, // S_GRENADEPICKUP + {"S_GRENADEPICKUP", 0, SPR_PIKG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_GRENADEPICKUP, 0}, - {SPR_PIKG, 0, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE2, 0}, // S_GRENADEPICKUPFADE1 - {SPR_PIKG, 2, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE3, 0}, // S_GRENADEPICKUPFADE2 - {SPR_PIKG, 4, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE4, 0}, // S_GRENADEPICKUPFADE3 - {SPR_PIKG, 6, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE5, 0}, // S_GRENADEPICKUPFADE4 - {SPR_PIKG, 8, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE6, 0}, // S_GRENADEPICKUPFADE5 - {SPR_PIKG, 10, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE7, 0}, // S_GRENADEPICKUPFADE6 - {SPR_PIKG, 12, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE8, 0}, // S_GRENADEPICKUPFADE7 - {SPR_PIKG, 14, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE1, 0}, // S_GRENADEPICKUPFADE8 + {"S_GRENADEPICKUPFADE1", 0, SPR_PIKG, 0, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE2, 0}, + {"S_GRENADEPICKUPFADE2", 0, SPR_PIKG, 2, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE3, 0}, + {"S_GRENADEPICKUPFADE3", 0, SPR_PIKG, 4, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE4, 0}, + {"S_GRENADEPICKUPFADE4", 0, SPR_PIKG, 6, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE5, 0}, + {"S_GRENADEPICKUPFADE5", 0, SPR_PIKG, 8, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE6, 0}, + {"S_GRENADEPICKUPFADE6", 0, SPR_PIKG, 10, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE7, 0}, + {"S_GRENADEPICKUPFADE7", 0, SPR_PIKG, 12, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE8, 0}, + {"S_GRENADEPICKUPFADE8", 0, SPR_PIKG, 14, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE1, 0}, // Thrown Weapon Rings - {SPR_RNGB, FF_FULLBRIGHT , 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE2, 0}, // S_THROWNBOUNCE1 - {SPR_RNGB, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE3, 0}, // S_THROWNBOUNCE2 - {SPR_RNGB, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE4, 0}, // S_THROWNBOUNCE3 - {SPR_RNGB, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE5, 0}, // S_THROWNBOUNCE4 - {SPR_RNGB, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE6, 0}, // S_THROWNBOUNCE5 - {SPR_RNGB, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE7, 0}, // S_THROWNBOUNCE6 - {SPR_RNGB, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE1, 0}, // S_THROWNBOUNCE7 - - {SPR_RNGI, FF_FULLBRIGHT , 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY2, 0}, // S_THROWNINFINITY1 - {SPR_RNGI, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY3, 0}, // S_THROWNINFINITY2 - {SPR_RNGI, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY4, 0}, // S_THROWNINFINITY3 - {SPR_RNGI, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY5, 0}, // S_THROWNINFINITY4 - {SPR_RNGI, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY6, 0}, // S_THROWNINFINITY5 - {SPR_RNGI, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY7, 0}, // S_THROWNINFINITY6 - {SPR_RNGI, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY1, 0}, // S_THROWNINFINITY7 - - {SPR_TAUT, FF_FULLBRIGHT , 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC2, 0}, // S_THROWNAUTOMATIC1 - {SPR_TAUT, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC3, 0}, // S_THROWNAUTOMATIC2 - {SPR_TAUT, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC4, 0}, // S_THROWNAUTOMATIC3 - {SPR_TAUT, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC5, 0}, // S_THROWNAUTOMATIC4 - {SPR_TAUT, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC6, 0}, // S_THROWNAUTOMATIC5 - {SPR_TAUT, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC7, 0}, // S_THROWNAUTOMATIC6 - {SPR_TAUT, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC1, 0}, // S_THROWNAUTOMATIC7 - - {SPR_RNGE, FF_FULLBRIGHT , 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION2, 0}, // S_THROWNEXPLOSION1 - {SPR_RNGE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION3, 0}, // S_THROWNEXPLOSION2 - {SPR_RNGE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION4, 0}, // S_THROWNEXPLOSION3 - {SPR_RNGE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION5, 0}, // S_THROWNEXPLOSION4 - {SPR_RNGE, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION6, 0}, // S_THROWNEXPLOSION5 - {SPR_RNGE, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION7, 0}, // S_THROWNEXPLOSION6 - {SPR_RNGE, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION1, 0}, // S_THROWNEXPLOSION7 - - {SPR_TGRE, FF_FULLBRIGHT , 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE2, 0}, // S_THROWNGRENADE1 - {SPR_TGRE, FF_FULLBRIGHT| 1, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE3, 0}, // S_THROWNGRENADE2 - {SPR_TGRE, FF_FULLBRIGHT| 2, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE4, 0}, // S_THROWNGRENADE3 - {SPR_TGRE, FF_FULLBRIGHT| 3, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE5, 0}, // S_THROWNGRENADE4 - {SPR_TGRE, FF_FULLBRIGHT| 4, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE6, 0}, // S_THROWNGRENADE5 - {SPR_TGRE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE7, 0}, // S_THROWNGRENADE6 - {SPR_TGRE, FF_FULLBRIGHT| 6, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE8, 0}, // S_THROWNGRENADE7 - {SPR_TGRE, FF_FULLBRIGHT| 7, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE9, 0}, // S_THROWNGRENADE8 - {SPR_TGRE, FF_FULLBRIGHT| 8, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE10, 0}, // S_THROWNGRENADE9 - {SPR_TGRE, FF_FULLBRIGHT| 9, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE11, 0}, // S_THROWNGRENADE10 - {SPR_TGRE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE12, 0}, // S_THROWNGRENADE11 - {SPR_TGRE, FF_FULLBRIGHT|11, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE13, 0}, // S_THROWNGRENADE12 - {SPR_TGRE, FF_FULLBRIGHT|12, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE14, 0}, // S_THROWNGRENADE13 - {SPR_TGRE, FF_FULLBRIGHT|13, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE15, 0}, // S_THROWNGRENADE14 - {SPR_TGRE, FF_FULLBRIGHT|14, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE16, 0}, // S_THROWNGRENADE15 - {SPR_TGRE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE17, 0}, // S_THROWNGRENADE16 - {SPR_TGRE, FF_FULLBRIGHT|16, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE18, 0}, // S_THROWNGRENADE17 - {SPR_TGRE, FF_FULLBRIGHT|17, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE1, 0}, // S_THROWNGRENADE18 - - {SPR_TSCR, FF_FULLBRIGHT, 1, {A_ThrownRing}, 0, 0, S_THROWNSCATTER, 0}, // S_THROWNSCATTER - - {SPR_NULL, 0, 1, {A_RingExplode}, 0, 0, S_XPLD1, 0}, // S_RINGEXPLODE + {"S_THROWNBOUNCE1", 0, SPR_RNGB, FF_FULLBRIGHT , 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE2, 0}, + {"S_THROWNBOUNCE2", 0, SPR_RNGB, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE3, 0}, + {"S_THROWNBOUNCE3", 0, SPR_RNGB, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE4, 0}, + {"S_THROWNBOUNCE4", 0, SPR_RNGB, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE5, 0}, + {"S_THROWNBOUNCE5", 0, SPR_RNGB, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE6, 0}, + {"S_THROWNBOUNCE6", 0, SPR_RNGB, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE7, 0}, + {"S_THROWNBOUNCE7", 0, SPR_RNGB, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE1, 0}, + + {"S_THROWNINFINITY1", 0, SPR_RNGI, FF_FULLBRIGHT , 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY2, 0}, + {"S_THROWNINFINITY2", 0, SPR_RNGI, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY3, 0}, + {"S_THROWNINFINITY3", 0, SPR_RNGI, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY4, 0}, + {"S_THROWNINFINITY4", 0, SPR_RNGI, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY5, 0}, + {"S_THROWNINFINITY5", 0, SPR_RNGI, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY6, 0}, + {"S_THROWNINFINITY6", 0, SPR_RNGI, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY7, 0}, + {"S_THROWNINFINITY7", 0, SPR_RNGI, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY1, 0}, + + {"S_THROWNAUTOMATIC1", 0, SPR_TAUT, FF_FULLBRIGHT , 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC2, 0}, + {"S_THROWNAUTOMATIC2", 0, SPR_TAUT, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC3, 0}, + {"S_THROWNAUTOMATIC3", 0, SPR_TAUT, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC4, 0}, + {"S_THROWNAUTOMATIC4", 0, SPR_TAUT, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC5, 0}, + {"S_THROWNAUTOMATIC5", 0, SPR_TAUT, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC6, 0}, + {"S_THROWNAUTOMATIC6", 0, SPR_TAUT, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC7, 0}, + {"S_THROWNAUTOMATIC7", 0, SPR_TAUT, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC1, 0}, + + {"S_THROWNEXPLOSION1", 0, SPR_RNGE, FF_FULLBRIGHT , 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION2, 0}, + {"S_THROWNEXPLOSION2", 0, SPR_RNGE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION3, 0}, + {"S_THROWNEXPLOSION3", 0, SPR_RNGE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION4, 0}, + {"S_THROWNEXPLOSION4", 0, SPR_RNGE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION5, 0}, + {"S_THROWNEXPLOSION5", 0, SPR_RNGE, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION6, 0}, + {"S_THROWNEXPLOSION6", 0, SPR_RNGE, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION7, 0}, + {"S_THROWNEXPLOSION7", 0, SPR_RNGE, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION1, 0}, + + {"S_THROWNGRENADE1", 0, SPR_TGRE, FF_FULLBRIGHT , 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE2, 0}, + {"S_THROWNGRENADE2", 0, SPR_TGRE, FF_FULLBRIGHT| 1, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE3, 0}, + {"S_THROWNGRENADE3", 0, SPR_TGRE, FF_FULLBRIGHT| 2, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE4, 0}, + {"S_THROWNGRENADE4", 0, SPR_TGRE, FF_FULLBRIGHT| 3, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE5, 0}, + {"S_THROWNGRENADE5", 0, SPR_TGRE, FF_FULLBRIGHT| 4, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE6, 0}, + {"S_THROWNGRENADE6", 0, SPR_TGRE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE7, 0}, + {"S_THROWNGRENADE7", 0, SPR_TGRE, FF_FULLBRIGHT| 6, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE8, 0}, + {"S_THROWNGRENADE8", 0, SPR_TGRE, FF_FULLBRIGHT| 7, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE9, 0}, + {"S_THROWNGRENADE9", 0, SPR_TGRE, FF_FULLBRIGHT| 8, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE10, 0}, + {"S_THROWNGRENADE10", 0, SPR_TGRE, FF_FULLBRIGHT| 9, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE11, 0}, + {"S_THROWNGRENADE11", 0, SPR_TGRE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE12, 0}, + {"S_THROWNGRENADE12", 0, SPR_TGRE, FF_FULLBRIGHT|11, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE13, 0}, + {"S_THROWNGRENADE13", 0, SPR_TGRE, FF_FULLBRIGHT|12, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE14, 0}, + {"S_THROWNGRENADE14", 0, SPR_TGRE, FF_FULLBRIGHT|13, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE15, 0}, + {"S_THROWNGRENADE15", 0, SPR_TGRE, FF_FULLBRIGHT|14, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE16, 0}, + {"S_THROWNGRENADE16", 0, SPR_TGRE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE17, 0}, + {"S_THROWNGRENADE17", 0, SPR_TGRE, FF_FULLBRIGHT|16, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE18, 0}, + {"S_THROWNGRENADE18", 0, SPR_TGRE, FF_FULLBRIGHT|17, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE1, 0}, + + {"S_THROWNSCATTER", 0, SPR_TSCR, FF_FULLBRIGHT, 1, {A_ThrownRing}, 0, 0, S_THROWNSCATTER, 0}, + + {"S_RINGEXPLODE", 0, SPR_NULL, 0, 1, {A_RingExplode}, 0, 0, S_XPLD1, 0}, // Coin - {SPR_COIN, FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_COIN2, 0}, // S_COIN1 - {SPR_COIN, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COIN3, 0}, // S_COIN2 - {SPR_COIN, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COIN1, 0}, // S_COIN3 + {"S_COIN1", 0, SPR_COIN, FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_COIN2, 0}, + {"S_COIN2", 0, SPR_COIN, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COIN3, 0}, + {"S_COIN3", 0, SPR_COIN, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COIN1, 0}, // Coin Sparkle - {SPR_CPRK, FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_COINSPARKLE2, 0}, // S_COINSPARKLE1 - {SPR_CPRK, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COINSPARKLE3, 0}, // S_COINSPARKLE2 - {SPR_CPRK, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COINSPARKLE4, 0}, // S_COINSPARKLE3 - {SPR_CPRK, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL, 0}, // S_COINSPARKLE4 + {"S_COINSPARKLE1", 0, SPR_CPRK, FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_COINSPARKLE2, 0}, + {"S_COINSPARKLE2", 0, SPR_CPRK, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COINSPARKLE3, 0}, + {"S_COINSPARKLE3", 0, SPR_CPRK, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COINSPARKLE4, 0}, + {"S_COINSPARKLE4", 0, SPR_CPRK, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL, 0}, // Goomba - {SPR_GOOM, 0, 6, {A_Look}, 0, 0, S_GOOMBA1B, 0}, // S_GOOMBA1 - {SPR_GOOM, 1, 6, {A_Look}, 0, 0, S_GOOMBA1, 0}, // S_GOOMBA1B - {SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA3, 0}, // S_GOOMBA2 - {SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA4, 0}, // S_GOOMBA3 - {SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA5, 0}, // S_GOOMBA4 - {SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA6, 0}, // S_GOOMBA5 - {SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA7, 0}, // S_GOOMBA6 - {SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA8, 0}, // S_GOOMBA7 - {SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA9, 0}, // S_GOOMBA8 - {SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA2, 0}, // S_GOOMBA9 - {SPR_GOOM, 2, 16, {A_Scream}, 0, 0, S_NULL, 0}, // S_GOOMBA_DEAD + {"S_GOOMBA1", 0, SPR_GOOM, 0, 6, {A_Look}, 0, 0, S_GOOMBA1B, 0}, + {"S_GOOMBA1B", 0, SPR_GOOM, 1, 6, {A_Look}, 0, 0, S_GOOMBA1, 0}, + {"S_GOOMBA2", 0, SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA3, 0}, + {"S_GOOMBA3", 0, SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA4, 0}, + {"S_GOOMBA4", 0, SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA5, 0}, + {"S_GOOMBA5", 0, SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA6, 0}, + {"S_GOOMBA6", 0, SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA7, 0}, + {"S_GOOMBA7", 0, SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA8, 0}, + {"S_GOOMBA8", 0, SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA9, 0}, + {"S_GOOMBA9", 0, SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA2, 0}, + {"S_GOOMBA_DEAD", 0, SPR_GOOM, 2, 16, {A_Scream}, 0, 0, S_NULL, 0}, // Blue Goomba - {SPR_BGOM, 0, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1B, 0}, // S_BLUEGOOMBA1 - {SPR_BGOM, 1, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1, 0}, // S_BLUEGOOMBA1B - {SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA3, 0}, // S_BLUEGOOMBA2 - {SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA4, 0}, // S_BLUEGOOMBA3 - {SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA5, 0}, // S_BLUEGOOMBA4 - {SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA6, 0}, // S_BLUEGOOMBA5 - {SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA7, 0}, // S_BLUEGOOMBA6 - {SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA8, 0}, // S_BLUEGOOMBA7 - {SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA9, 0}, // S_BLUEGOOMBA8 - {SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA2, 0}, // S_BLUEGOOMBA9 - {SPR_BGOM, 2, 16, {A_Scream}, 0, 0, S_NULL, 0}, // S_BLUEGOOMBA_DEAD + {"S_BLUEGOOMBA1", 0, SPR_BGOM, 0, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1B, 0}, + {"S_BLUEGOOMBA1B", 0, SPR_BGOM, 1, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1, 0}, + {"S_BLUEGOOMBA2", 0, SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA3, 0}, + {"S_BLUEGOOMBA3", 0, SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA4, 0}, + {"S_BLUEGOOMBA4", 0, SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA5, 0}, + {"S_BLUEGOOMBA5", 0, SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA6, 0}, + {"S_BLUEGOOMBA6", 0, SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA7, 0}, + {"S_BLUEGOOMBA7", 0, SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA8, 0}, + {"S_BLUEGOOMBA8", 0, SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA9, 0}, + {"S_BLUEGOOMBA9", 0, SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA2, 0}, + {"S_BLUEGOOMBA_DEAD", 0, SPR_BGOM, 2, 16, {A_Scream}, 0, 0, S_NULL, 0}, // Fire Flower - {SPR_FFWR, 0, 3, {NULL}, 0, 0, S_FIREFLOWER2, 0}, // S_FIREFLOWER1 - {SPR_FFWR, 1, 3, {NULL}, 0, 0, S_FIREFLOWER3, 0}, // S_FIREFLOWER2 - {SPR_FFWR, 2, 3, {NULL}, 0, 0, S_FIREFLOWER4, 0}, // S_FIREFLOWER3 - {SPR_FFWR, 3, 3, {NULL}, 0, 0, S_FIREFLOWER1, 0}, // S_FIREFLOWER4 + {"S_FIREFLOWER1", 0, SPR_FFWR, 0, 3, {NULL}, 0, 0, S_FIREFLOWER2, 0}, + {"S_FIREFLOWER2", 0, SPR_FFWR, 1, 3, {NULL}, 0, 0, S_FIREFLOWER3, 0}, + {"S_FIREFLOWER3", 0, SPR_FFWR, 2, 3, {NULL}, 0, 0, S_FIREFLOWER4, 0}, + {"S_FIREFLOWER4", 0, SPR_FFWR, 3, 3, {NULL}, 0, 0, S_FIREFLOWER1, 0}, // Thrown Mario Fireball - {SPR_FBLL, FF_FULLBRIGHT, 1, {A_SpawnObjectRelative}, 0, MT_FIREBALLTRAIL, S_FIREBALL, 0}, // S_FIREBALL - {SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 1, {A_SetScale}, FRACUNIT*3/4, 0, S_FIREBALLTRAIL2, 0}, // S_FIREBALLTRAIL1 - {SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 8, {A_SetScale}, FRACUNIT/6, 1, S_NULL, 0}, // S_FIREBALLTRAIL2 + {"S_FIREBALL", 0, SPR_FBLL, FF_FULLBRIGHT, 1, {A_SpawnObjectRelative}, 0, MT_FIREBALLTRAIL, S_FIREBALL, 0}, + {"S_FIREBALLTRAIL1", 0, SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 1, {A_SetScale}, FRACUNIT*3/4, 0, S_FIREBALLTRAIL2, 0}, + {"S_FIREBALLTRAIL2", 0, SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 8, {A_SetScale}, FRACUNIT/6, 1, S_NULL, 0}, // Turtle Shell - {SPR_SHLL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_SHELL + {"S_SHELL", 0, SPR_SHLL, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Puma (Mario fireball) - {SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_START2, 0}, // S_PUMA_START1 - {SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_PlaySound}, sfx_s3k70, 1 + (1<<16), S_PUMA_UP1, 0}, // S_PUMA_START2 - {SPR_PUMA, FF_FULLBRIGHT , 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP2, 0}, // S_PUMA_UP1 - {SPR_PUMA, FF_FULLBRIGHT|1, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP3, 0}, // S_PUMA_UP2 - {SPR_PUMA, FF_FULLBRIGHT|2, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP1, 0}, // S_PUMA_UP3 - {SPR_PUMA, FF_FULLBRIGHT|3, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN2, 0}, // S_PUMA_DOWN1 - {SPR_PUMA, FF_FULLBRIGHT|4, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN3, 0}, // S_PUMA_DOWN2 - {SPR_PUMA, FF_FULLBRIGHT|5, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN1, 0}, // S_PUMA_DOWN3 - - {SPR_PUMA, FF_FULLBRIGHT|FF_TRANS20|6, 4, {NULL}, 0, 0, S_PUMATRAIL2, 0}, // S_PUMATRAIL1 - {SPR_PUMA, FF_FULLBRIGHT|FF_TRANS40|6, 5, {A_SetScale}, FRACUNIT, 1, S_PUMATRAIL3, 0}, // S_PUMATRAIL2 - {SPR_PUMA, FF_FULLBRIGHT|FF_TRANS50|7, 4, {NULL}, 0, 0, S_PUMATRAIL4, 0}, // S_PUMATRAIL3 - {SPR_PUMA, FF_FULLBRIGHT|FF_TRANS60|8, 3, {NULL}, 0, 0, S_NULL, 0}, // S_PUMATRAIL4 + {"S_PUMA_START1", 0, SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_START2, 0}, + {"S_PUMA_START2", 0, SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_PlaySound}, sfx_s3k70, 1 + (1<<16), S_PUMA_UP1, 0}, + {"S_PUMA_UP1", 0, SPR_PUMA, FF_FULLBRIGHT , 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP2, 0}, + {"S_PUMA_UP2", 0, SPR_PUMA, FF_FULLBRIGHT|1, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP3, 0}, + {"S_PUMA_UP3", 0, SPR_PUMA, FF_FULLBRIGHT|2, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP1, 0}, + {"S_PUMA_DOWN1", 0, SPR_PUMA, FF_FULLBRIGHT|3, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN2, 0}, + {"S_PUMA_DOWN2", 0, SPR_PUMA, FF_FULLBRIGHT|4, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN3, 0}, + {"S_PUMA_DOWN3", 0, SPR_PUMA, FF_FULLBRIGHT|5, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN1, 0}, + + {"S_PUMATRAIL1", 0, SPR_PUMA, FF_FULLBRIGHT|FF_TRANS20|6, 4, {NULL}, 0, 0, S_PUMATRAIL2, 0}, + {"S_PUMATRAIL2", 0, SPR_PUMA, FF_FULLBRIGHT|FF_TRANS40|6, 5, {A_SetScale}, FRACUNIT, 1, S_PUMATRAIL3, 0}, + {"S_PUMATRAIL3", 0, SPR_PUMA, FF_FULLBRIGHT|FF_TRANS50|7, 4, {NULL}, 0, 0, S_PUMATRAIL4, 0}, + {"S_PUMATRAIL4", 0, SPR_PUMA, FF_FULLBRIGHT|FF_TRANS60|8, 3, {NULL}, 0, 0, S_NULL, 0}, // Hammer - {SPR_HAMM, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL, 0}, // S_HAMMER + {"S_HAMMER", 0, SPR_HAMM, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL, 0}, // Koopa - {SPR_KOOP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_KOOPA1 - {SPR_KOOP, 1, 24, {NULL}, 0, 0, S_KOOPA1, 0}, // S_KOOPA2 + {"S_KOOPA1", 0, SPR_KOOP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_KOOPA2", 0, SPR_KOOP, 1, 24, {NULL}, 0, 0, S_KOOPA1, 0}, - {SPR_BFLM, 0, 3,{NULL}, 0, 0, S_KOOPAFLAME2, 0}, // S_KOOPAFLAME1 - {SPR_BFLM, 1, 3,{NULL}, 0, 0, S_KOOPAFLAME3, 0}, // S_KOOPAFLAME2 - {SPR_BFLM, 2, 3,{NULL}, 0, 0, S_KOOPAFLAME1, 0}, // S_KOOPAFLAME3 + {"S_KOOPAFLAME1", 0, SPR_BFLM, 0, 3,{NULL}, 0, 0, S_KOOPAFLAME2, 0}, + {"S_KOOPAFLAME2", 0, SPR_BFLM, 1, 3,{NULL}, 0, 0, S_KOOPAFLAME3, 0}, + {"S_KOOPAFLAME3", 0, SPR_BFLM, 2, 3,{NULL}, 0, 0, S_KOOPAFLAME1, 0}, // Axe - {SPR_MAXE, 0, 3, {NULL}, 0, 0, S_AXE2, 0}, // S_AXE1 - {SPR_MAXE, 1, 3, {NULL}, 0, 0, S_AXE3, 0}, // S_AXE2 - {SPR_MAXE, 2, 3, {NULL}, 0, 0, S_AXE1, 0}, // S_AXE3 + {"S_AXE1", 0, SPR_MAXE, 0, 3, {NULL}, 0, 0, S_AXE2, 0}, + {"S_AXE2", 0, SPR_MAXE, 1, 3, {NULL}, 0, 0, S_AXE3, 0}, + {"S_AXE3", 0, SPR_MAXE, 2, 3, {NULL}, 0, 0, S_AXE1, 0}, - {SPR_MUS1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MARIOBUSH1 - {SPR_MUS2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_MARIOBUSH2 - {SPR_TOAD, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_TOAD + {"S_MARIOBUSH1", 0, SPR_MUS1, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_MARIOBUSH2", 0, SPR_MUS2, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_TOAD", 0, SPR_TOAD, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Nights Drone - {SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN2, 0}, // S_NIGHTSDRONE_MAN1 - {SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN1, 0}, // S_NIGHTSDRONE_MAN2 + {"S_NIGHTSDRONE_MAN1", 0, SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN2, 0}, + {"S_NIGHTSDRONE_MAN2", 0, SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN1, 0}, // Sparkling point (RETURN TO THE GOAL, etc) - {SPR_IVSP, 0, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING2, 0}, // S_NIGHTSDRONE_SPARKLING1 - {SPR_IVSP, 2, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING3, 0}, // S_NIGHTSDRONE_SPARKLING2 - {SPR_IVSP, 4, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING4, 0}, // S_NIGHTSDRONE_SPARKLING3 - {SPR_IVSP, 6, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING5, 0}, // S_NIGHTSDRONE_SPARKLING4 - {SPR_IVSP, 8, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING6, 0}, // S_NIGHTSDRONE_SPARKLING5 - {SPR_IVSP, 10, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING7, 0}, // S_NIGHTSDRONE_SPARKLING6 - {SPR_IVSP, 12, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING8, 0}, // S_NIGHTSDRONE_SPARKLING7 - {SPR_IVSP, 14, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING9, 0}, // S_NIGHTSDRONE_SPARKLING8 - {SPR_IVSP, 16, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING10, 0}, // S_NIGHTSDRONE_SPARKLING9 - {SPR_IVSP, 18, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING11, 0}, // S_NIGHTSDRONE_SPARKLING10 - {SPR_IVSP, 20, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING12, 0}, // S_NIGHTSDRONE_SPARKLING11 - {SPR_IVSP, 22, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING13, 0}, // S_NIGHTSDRONE_SPARKLING12 - {SPR_IVSP, 24, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING14, 0}, // S_NIGHTSDRONE_SPARKLING13 - {SPR_IVSP, 26, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING15, 0}, // S_NIGHTSDRONE_SPARKLING14 - {SPR_IVSP, 28, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING16, 0}, // S_NIGHTSDRONE_SPARKLING15 - {SPR_IVSP, 30, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING1, 0}, // S_NIGHTSDRONE_SPARKLING16 + {"S_NIGHTSDRONE_SPARKLING1", 0, SPR_IVSP, 0, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING2, 0}, + {"S_NIGHTSDRONE_SPARKLING2", 0, SPR_IVSP, 2, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING3, 0}, + {"S_NIGHTSDRONE_SPARKLING3", 0, SPR_IVSP, 4, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING4, 0}, + {"S_NIGHTSDRONE_SPARKLING4", 0, SPR_IVSP, 6, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING5, 0}, + {"S_NIGHTSDRONE_SPARKLING5", 0, SPR_IVSP, 8, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING6, 0}, + {"S_NIGHTSDRONE_SPARKLING6", 0, SPR_IVSP, 10, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING7, 0}, + {"S_NIGHTSDRONE_SPARKLING7", 0, SPR_IVSP, 12, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING8, 0}, + {"S_NIGHTSDRONE_SPARKLING8", 0, SPR_IVSP, 14, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING9, 0}, + {"S_NIGHTSDRONE_SPARKLING9", 0, SPR_IVSP, 16, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING10, 0}, + {"S_NIGHTSDRONE_SPARKLING10", 0, SPR_IVSP, 18, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING11, 0}, + {"S_NIGHTSDRONE_SPARKLING11", 0, SPR_IVSP, 20, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING12, 0}, + {"S_NIGHTSDRONE_SPARKLING12", 0, SPR_IVSP, 22, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING13, 0}, + {"S_NIGHTSDRONE_SPARKLING13", 0, SPR_IVSP, 24, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING14, 0}, + {"S_NIGHTSDRONE_SPARKLING14", 0, SPR_IVSP, 26, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING15, 0}, + {"S_NIGHTSDRONE_SPARKLING15", 0, SPR_IVSP, 28, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING16, 0}, + {"S_NIGHTSDRONE_SPARKLING16", 0, SPR_IVSP, 30, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING1, 0}, // NiGHTS GOAL banner (inside the sparkles!) - {SPR_GOAL, 0, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL2, 0}, // S_NIGHTSDRONE_GOAL1 - {SPR_GOAL, 1, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL3, 0}, // S_NIGHTSDRONE_GOAL2 - {SPR_GOAL, 2, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL4, 0}, // S_NIGHTSDRONE_GOAL3 - {SPR_GOAL, 3, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL1, 0}, // S_NIGHTSDRONE_GOAL4 + {"S_NIGHTSDRONE_GOAL1", 0, SPR_GOAL, 0, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL2, 0}, + {"S_NIGHTSDRONE_GOAL2", 0, SPR_GOAL, 1, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL3, 0}, + {"S_NIGHTSDRONE_GOAL3", 0, SPR_GOAL, 2, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL4, 0}, + {"S_NIGHTSDRONE_GOAL4", 0, SPR_GOAL, 3, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL1, 0}, // Nights Sparkle - {SPR_NSPK, FF_FULLBRIGHT, 140, {NULL}, 0, 0, S_NIGHTSPARKLE2, 0}, // S_NIGHTSPARKLE1 - {SPR_NSPK, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_NIGHTSPARKLE3, 0}, // S_NIGHTSPARKLE2 - {SPR_NSPK, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_NIGHTSPARKLE4, 0}, // S_NIGHTSPARKLE3 - {SPR_NSPK, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSPARKLE4 + {"S_NIGHTSPARKLE1", 0, SPR_NSPK, FF_FULLBRIGHT, 140, {NULL}, 0, 0, S_NIGHTSPARKLE2, 0}, + {"S_NIGHTSPARKLE2", 0, SPR_NSPK, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_NIGHTSPARKLE3, 0}, + {"S_NIGHTSPARKLE3", 0, SPR_NSPK, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_NIGHTSPARKLE4, 0}, + {"S_NIGHTSPARKLE4", 0, SPR_NSPK, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_NULL, 0}, // Red Sparkle - {SPR_NSPK, FF_FULLBRIGHT|4, 140, {NULL}, 0, 0, S_NIGHTSPARKLESUPER2, 0}, // S_NIGHTSPARKLESUPER1 - {SPR_NSPK, FF_FULLBRIGHT|5, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER3, 0}, // S_NIGHTSPARKLESUPER2 - {SPR_NSPK, FF_FULLBRIGHT|6, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER4, 0}, // S_NIGHTSPARKLESUPER3 - {SPR_NSPK, FF_FULLBRIGHT|7, 7, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSPARKLESUPER4 + {"S_NIGHTSPARKLESUPER1", 0, SPR_NSPK, FF_FULLBRIGHT|4, 140, {NULL}, 0, 0, S_NIGHTSPARKLESUPER2, 0}, + {"S_NIGHTSPARKLESUPER2", 0, SPR_NSPK, FF_FULLBRIGHT|5, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER3, 0}, + {"S_NIGHTSPARKLESUPER3", 0, SPR_NSPK, FF_FULLBRIGHT|6, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER4, 0}, + {"S_NIGHTSPARKLESUPER4", 0, SPR_NSPK, FF_FULLBRIGHT|7, 7, {NULL}, 0, 0, S_NULL, 0}, // Paraloop helper -- THIS IS WHAT DETERMINES THE TIMER NOW - {SPR_NULL, 0, 160, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSLOOPHELPER + {"S_NIGHTSLOOPHELPER", 0, SPR_NULL, 0, 160, {NULL}, 0, 0, S_NULL, 0}, // NiGHTS bumper - {SPR_NBMP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER1 - {SPR_NBMP, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER2 - {SPR_NBMP, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER3 - {SPR_NBMP, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER4 - {SPR_NBMP, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER5 - {SPR_NBMP, 5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER6 - {SPR_NBMP, 6, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER7 - {SPR_NBMP, 7, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER8 - {SPR_NBMP, 8, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER9 - {SPR_NBMP, 9, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER10 - {SPR_NBMP, 10, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER11 - {SPR_NBMP, 11, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSBUMPER12 - - {SPR_HOOP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HOOP - {SPR_HOOP, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HOOP_XMASA - {SPR_HOOP, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_HOOP_XMASB - - {SPR_NSCR, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE10 - {SPR_NSCR, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE20 - {SPR_NSCR, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE30 - {SPR_NSCR, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE40 - {SPR_NSCR, FF_FULLBRIGHT|4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE50 - {SPR_NSCR, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE60 - {SPR_NSCR, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE70 - {SPR_NSCR, FF_FULLBRIGHT|7, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE80 - {SPR_NSCR, FF_FULLBRIGHT|8, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE90 - {SPR_NSCR, FF_FULLBRIGHT|9, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE100 - {SPR_NSCR, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE10_2 - {SPR_NSCR, FF_FULLBRIGHT|11, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE20_2 - {SPR_NSCR, FF_FULLBRIGHT|12, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE30_2 - {SPR_NSCR, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE40_2 - {SPR_NSCR, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE50_2 - {SPR_NSCR, FF_FULLBRIGHT|15, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE60_2 - {SPR_NSCR, FF_FULLBRIGHT|16, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE70_2 - {SPR_NSCR, FF_FULLBRIGHT|17, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE80_2 - {SPR_NSCR, FF_FULLBRIGHT|18, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE90_2 - {SPR_NSCR, FF_FULLBRIGHT|19, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSCORE100_2 + {"S_NIGHTSBUMPER1", 0, SPR_NBMP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER2", 0, SPR_NBMP, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER3", 0, SPR_NBMP, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER4", 0, SPR_NBMP, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER5", 0, SPR_NBMP, 4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER6", 0, SPR_NBMP, 5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER7", 0, SPR_NBMP, 6, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER8", 0, SPR_NBMP, 7, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER9", 0, SPR_NBMP, 8, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER10", 0, SPR_NBMP, 9, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER11", 0, SPR_NBMP, 10, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSBUMPER12", 0, SPR_NBMP, 11, -1, {NULL}, 0, 0, S_NULL, 0}, + + {"S_HOOP", 0, SPR_HOOP, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_HOOP_XMASA", 0, SPR_HOOP, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_HOOP_XMASB", 0, SPR_HOOP, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + + {"S_NIGHTSCORE10", 0, SPR_NSCR, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE20", 0, SPR_NSCR, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE30", 0, SPR_NSCR, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE40", 0, SPR_NSCR, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE50", 0, SPR_NSCR, FF_FULLBRIGHT|4, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE60", 0, SPR_NSCR, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE70", 0, SPR_NSCR, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE80", 0, SPR_NSCR, FF_FULLBRIGHT|7, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE90", 0, SPR_NSCR, FF_FULLBRIGHT|8, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE100", 0, SPR_NSCR, FF_FULLBRIGHT|9, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE10_2", 0, SPR_NSCR, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE20_2", 0, SPR_NSCR, FF_FULLBRIGHT|11, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE30_2", 0, SPR_NSCR, FF_FULLBRIGHT|12, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE40_2", 0, SPR_NSCR, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE50_2", 0, SPR_NSCR, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE60_2", 0, SPR_NSCR, FF_FULLBRIGHT|15, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE70_2", 0, SPR_NSCR, FF_FULLBRIGHT|16, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE80_2", 0, SPR_NSCR, FF_FULLBRIGHT|17, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE90_2", 0, SPR_NSCR, FF_FULLBRIGHT|18, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSCORE100_2", 0, SPR_NSCR, FF_FULLBRIGHT|19, -1, {NULL}, 0, 0, S_NULL, 0}, // NiGHTS Paraloop Powerups - {SPR_NPRU, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSSUPERLOOP - {SPR_NPRU, 1, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSDRILLREFILL - {SPR_NPRU, 2, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSHELPER - {SPR_NPRU, 3, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSEXTRATIME - {SPR_NPRU, 4, -1, {NULL}, 0, 0, S_NULL, 0}, // S_NIGHTSLINKFREEZE + {"S_NIGHTSSUPERLOOP", 0, SPR_NPRU, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSDRILLREFILL", 0, SPR_NPRU, 1, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSHELPER", 0, SPR_NPRU, 2, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSEXTRATIME", 0, SPR_NPRU, 3, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_NIGHTSLINKFREEZE", 0, SPR_NPRU, 4, -1, {NULL}, 0, 0, S_NULL, 0}, - {SPR_CAPS, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_EGGCAPSULE + {"S_EGGCAPSULE", 0, SPR_CAPS, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // Orbiting Chaos Emeralds/Ideya for NiGHTS - {SPR_CEMG, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM1, 0}, // S_ORBITEM1 - {SPR_CEMG, FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM2, 0}, // S_ORBITEM2 - {SPR_CEMG, FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM3, 0}, // S_ORBITEM3 - {SPR_CEMG, FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM4, 0}, // S_ORBITEM4 - {SPR_CEMG, FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM5, 0}, // S_ORBITEM5 - {SPR_CEMG, FF_FULLBRIGHT|5, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM6, 0}, // S_ORBITEM6 - {SPR_CEMG, FF_FULLBRIGHT|6, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM7, 0}, // S_ORBITEM7 - {SPR_CEMG, FF_FULLBRIGHT|7, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM8, 0}, // S_ORBITEM8 - {SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA1, 0}, // S_ORBIDYA1 - {SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA2, 0}, // S_ORBIDYA2 - {SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA3, 0}, // S_ORBIDYA3 - {SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA4, 0}, // S_ORBIDYA4 - {SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA5, 0}, // S_ORBIDYA5 + {"S_ORBITEM1", 0, SPR_CEMG, FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM1, 0}, + {"S_ORBITEM2", 0, SPR_CEMG, FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM2, 0}, + {"S_ORBITEM3", 0, SPR_CEMG, FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM3, 0}, + {"S_ORBITEM4", 0, SPR_CEMG, FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM4, 0}, + {"S_ORBITEM5", 0, SPR_CEMG, FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM5, 0}, + {"S_ORBITEM6", 0, SPR_CEMG, FF_FULLBRIGHT|5, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM6, 0}, + {"S_ORBITEM7", 0, SPR_CEMG, FF_FULLBRIGHT|6, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM7, 0}, + {"S_ORBITEM8", 0, SPR_CEMG, FF_FULLBRIGHT|7, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM8, 0}, + {"S_ORBIDYA1", 0, SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA1, 0}, + {"S_ORBIDYA2", 0, SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA2, 0}, + {"S_ORBIDYA3", 0, SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA3, 0}, + {"S_ORBIDYA4", 0, SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA4, 0}, + {"S_ORBIDYA5", 0, SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA5, 0}, // Flicky helper for NiGHTS - {SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER2, 0}, // S_NIGHTOPIANHELPER1 - {SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER3, 0}, // S_NIGHTOPIANHELPER2 - {SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER4, 0}, // S_NIGHTOPIANHELPER3 - {SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER5, 0}, // S_NIGHTOPIANHELPER4 - {SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER6, 0}, // S_NIGHTOPIANHELPER5 - {SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER7, 0}, // S_NIGHTOPIANHELPER6 - {SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER8, 0}, // S_NIGHTOPIANHELPER7 - {SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER9, 0}, // S_NIGHTOPIANHELPER8 - {SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER1, 0}, // S_NIGHTOPIANHELPER9 + {"S_NIGHTOPIANHELPER1", 0, SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER2, 0}, + {"S_NIGHTOPIANHELPER2", 0, SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER3, 0}, + {"S_NIGHTOPIANHELPER3", 0, SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER4, 0}, + {"S_NIGHTOPIANHELPER4", 0, SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER5, 0}, + {"S_NIGHTOPIANHELPER5", 0, SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER6, 0}, + {"S_NIGHTOPIANHELPER6", 0, SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER7, 0}, + {"S_NIGHTOPIANHELPER7", 0, SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER8, 0}, + {"S_NIGHTOPIANHELPER8", 0, SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER9, 0}, + {"S_NIGHTOPIANHELPER9", 0, SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER1, 0}, // Nightopian - {SPR_NTPN, 0, 2, {A_Look}, 1, 1, S_PIAN_LOOK2, 0}, // S_PIAN_LOOK1 - {SPR_NTPN, 1, 2, {A_Look}, 1, 1, S_PIAN_LOOK3, 0}, // S_PIAN_LOOK2 - {SPR_NTPN, 2, 2, {A_Look}, 1, 1, S_PIAN_LOOK1, 0}, // S_PIAN_LOOK3 - {SPR_NTPN, 0, 2, {A_JetgThink}, 0, 0, S_PIAN_FLY2, 0}, // S_PIAN_FLY1 - {SPR_NTPN, 1, 2, {NULL}, 0, 0, S_PIAN_FLY3, 0}, // S_PIAN_FLY2 - {SPR_NTPN, 2, 2, {NULL}, 0, 0, S_PIAN_FLY1, 0}, // S_PIAN_FLY3 - {SPR_NTPN, 3|FF_ANIMATE, 24, {NULL}, 2, 2, S_PIAN_FLY1, 0}, // S_PIAN_SING + {"S_PIAN_LOOK1", 0, SPR_NTPN, 0, 2, {A_Look}, 1, 1, S_PIAN_LOOK2, 0}, + {"S_PIAN_LOOK2", 0, SPR_NTPN, 1, 2, {A_Look}, 1, 1, S_PIAN_LOOK3, 0}, + {"S_PIAN_LOOK3", 0, SPR_NTPN, 2, 2, {A_Look}, 1, 1, S_PIAN_LOOK1, 0}, + {"S_PIAN_FLY1", 0, SPR_NTPN, 0, 2, {A_JetgThink}, 0, 0, S_PIAN_FLY2, 0}, + {"S_PIAN_FLY2", 0, SPR_NTPN, 1, 2, {NULL}, 0, 0, S_PIAN_FLY3, 0}, + {"S_PIAN_FLY3", 0, SPR_NTPN, 2, 2, {NULL}, 0, 0, S_PIAN_FLY1, 0}, + {"S_PIAN_SING", 0, SPR_NTPN, 3|FF_ANIMATE, 24, {NULL}, 2, 2, S_PIAN_FLY1, 0}, // Shleep - {SPR_SHLP, 0, 15, {NULL}, 0, 0, S_SHLEEP2, 0}, // S_SHLEEP1 - {SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP3, 0}, // S_SHLEEP2 - {SPR_SHLP, 2, 15, {NULL}, 0, 0, S_SHLEEP4, 0}, // S_SHLEEP3 - {SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP1, 0}, // S_SHLEEP4 - {SPR_SHLP, 3, 1, {A_Scream}, 0, 0, S_SHLEEPBOUNCE2, 0}, // S_SHLEEPBOUNCE1 - {SPR_SHLP, 3, 1, {A_ZThrust}, 9, 0, S_SHLEEPBOUNCE3, 0}, // S_SHLEEPBOUNCE2 - {SPR_SHLP, 3, 400, {A_SetObjectFlags}, MF_SLIDEME|MF_ENEMY|MF_BOUNCE|MF_NOCLIP|MF_NOCLIPHEIGHT, 0, S_NULL, 0}, // S_SHLEEPBOUNCE3 + {"S_SHLEEP1", 0, SPR_SHLP, 0, 15, {NULL}, 0, 0, S_SHLEEP2, 0}, + {"S_SHLEEP2", 0, SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP3, 0}, + {"S_SHLEEP3", 0, SPR_SHLP, 2, 15, {NULL}, 0, 0, S_SHLEEP4, 0}, + {"S_SHLEEP4", 0, SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP1, 0}, + {"S_SHLEEPBOUNCE1", 0, SPR_SHLP, 3, 1, {A_Scream}, 0, 0, S_SHLEEPBOUNCE2, 0}, + {"S_SHLEEPBOUNCE2", 0, SPR_SHLP, 3, 1, {A_ZThrust}, 9, 0, S_SHLEEPBOUNCE3, 0}, + {"S_SHLEEPBOUNCE3", 0, SPR_SHLP, 3, 400, {A_SetObjectFlags}, MF_SLIDEME|MF_ENEMY|MF_BOUNCE|MF_NOCLIP|MF_NOCLIPHEIGHT, 0, S_NULL, 0}, // Secret badniks and hazards, shhhh - {SPR_PENG, 0, 2, {A_Look}, 0, 0, S_PENGUINATOR_LOOK, 0}, // S_PENGUINATOR_LOOK - {SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE2, 0}, // S_PENGUINATOR_WADDLE1 - {SPR_PENG, 1, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE3, 0}, // S_PENGUINATOR_WADDLE2 - {SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE4, 0}, // S_PENGUINATOR_WADDLE3 - {SPR_PENG, 2, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE1, 0}, // S_PENGUINATOR_WADDLE4 - {SPR_PENG, 0, 0, {A_FaceTarget}, 0, 0, S_PENGUINATOR_SLIDE2, 0}, // S_PENGUINATOR_SLIDE1 - {SPR_PENG, 3, 5, {A_BunnyHop}, 4, 10, S_PENGUINATOR_SLIDE3, 0}, // S_PENGUINATOR_SLIDE2 - {SPR_PENG, 4, 90, {A_PlayAttackSound}, 0, 0, S_PENGUINATOR_SLIDE4, 0}, // S_PENGUINATOR_SLIDE3 - {SPR_PENG, 3, 5, {A_Thrust}, 0, 1, S_PENGUINATOR_SLIDE5, 0}, // S_PENGUINATOR_SLIDE4 - {SPR_PENG, 0, 5, {A_FaceTarget}, 0, 0, S_PENGUINATOR_LOOK, 0}, // S_PENGUINATOR_SLIDE5 - - {SPR_POPH, 0, 2, {A_Look}, (2048<<16)|1, 0, S_POPHAT_LOOK, 0}, // S_POPHAT_LOOK - {SPR_POPH, 1, 0, {A_MultiShotDist}, (MT_SPINDUST<<16)|4, 24, S_POPHAT_SHOOT2, 0}, // S_POPHAT_SHOOT1 - {SPR_POPH, 1, 2, {A_LobShot}, MT_POPSHOT, (70<<16)|60, S_POPHAT_SHOOT3, 0}, // S_POPHAT_SHOOT2 - {SPR_POPH, 2, 1, {NULL}, 0, 0, S_POPHAT_SHOOT4, 0}, // S_POPHAT_SHOOT3 - {SPR_POPH, 0, 57, {NULL}, 0, 0, S_POPHAT_LOOK, 0}, // S_POPHAT_SHOOT4 - {SPR_POPH, 3, 3, {A_SpawnObjectRelative}, 0, MT_POPSHOT_TRAIL, S_POPSHOT, 0}, // S_POPSHOT - {SPR_NULL, 0, 2, {NULL}, 0, 0, S_SPINDUST1, 0}, // S_POPSHOT_TRAIL - - {SPR_HIVE, 0, 5, {A_Look}, 1, 1, S_HIVEELEMENTAL_LOOK, 0}, // S_HIVEELEMENTAL_LOOK - {SPR_HIVE, 0, 14, {A_PlaySound}, sfx_s3k76, 1, S_HIVEELEMENTAL_PREPARE2, 0}, // S_HIVEELEMENTAL_PREPARE1 - {SPR_HIVE, 0, 6, {A_PlaySound}, sfx_s3k8c, 1, S_HIVEELEMENTAL_SHOOT1, 0}, // S_HIVEELEMENTAL_PREPARE2 - {SPR_HIVE, 1, 4, {A_WhoCaresIfYourSonIsABee}, (MT_BUMBLEBORE<<16)|4, (1<<16)|32, S_HIVEELEMENTAL_SHOOT2, 0}, // S_HIVEELEMENTAL_SHOOT1 - {SPR_HIVE, 2, 2, {NULL}, 0, 0, S_HIVEELEMENTAL_DORMANT, 0}, // S_HIVEELEMENTAL_SHOOT2 - {SPR_HIVE, 0, 5, {A_ParentTriesToSleep}, S_HIVEELEMENTAL_PREPARE1, 0, S_HIVEELEMENTAL_DORMANT, 0}, // S_HIVEELEMENTAL_DORMANT - {SPR_HIVE, 3, 35, {A_Pain}, 0, 0, S_HIVEELEMENTAL_LOOK, 0}, // S_HIVEELEMENTAL_PAIN - {SPR_HIVE, 3, 2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE2, 0}, // S_HIVEELEMENTAL_DIE1 - {SPR_NULL, 0, 2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE3, 0}, // S_HIVEELEMENTAL_DIE2 - {SPR_NULL, 0, 0, {A_Repeat}, 7, S_HIVEELEMENTAL_DIE1, S_XPLD_FLICKY, 0}, // S_HIVEELEMENTAL_DIE3 - - {SPR_BUMB, 1, 10, {NULL}, 0, 0, S_BUMBLEBORE_LOOK1, 0}, // S_BUMBLEBORE_SPAWN - {SPR_BUMB, 0, 4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK2, 0}, // S_BUMBLEBORE_LOOK1 - {SPR_BUMB, 1, 4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK1, 0}, // S_BUMBLEBORE_LOOK2 - {SPR_BUMB, 0, 4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY2, 0}, // S_BUMBLEBORE_FLY1 - {SPR_BUMB, 1, 4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY1, 0}, // S_BUMBLEBORE_FLY2 - {SPR_BUMB, 2|FF_FULLBRIGHT, 12, {A_ZThrust}, 4, (1<<16)|1, S_BUMBLEBORE_FALL1, 0}, // S_BUMBLEBORE_RAISE - {SPR_BUMB, 2|FF_FULLBRIGHT, 0, {A_ZThrust}, -8, (1<<16)|1, S_BUMBLEBORE_FALL2, 0}, // S_BUMBLEBORE_FALL1 - {SPR_BUMB, 2|FF_FULLBRIGHT, 300, {NULL}, 0, 0, S_BUMBLEBORE_DIE, 0}, // S_BUMBLEBORE_FALL2 - {SPR_BUMB, 4, 3, {A_MultiShotDist}, (MT_DUST<<16)|6, -40, S_BUMBLEBORE_STUCK2, 0}, // S_BUMBLEBORE_STUCK1 - {SPR_BUMB, 5, 120, {NULL}, 0, 0, S_BUMBLEBORE_DIE, 0}, // S_BUMBLEBORE_STUCK2 - {SPR_BUMB, 5, 0, {A_CryingToMomma}, 0, 0, S_XPLD1, 0}, // S_BUMBLEBORE_DIE - - {SPR_BBUZ, 0, -1, {NULL}, 0, 0, S_NULL, 0}, // S_BUGGLEIDLE - {SPR_BBUZ, FF_ANIMATE, -1, {NULL}, 1, 2, S_NULL, 0}, // S_BUGGLEFLY - - {SPR_FMCE, 0, 20, {NULL}, 0, 0, S_SMASHSPIKE_EASE1, 0}, // S_SMASHSPIKE_FLOAT - {SPR_FMCE, 0, 4, {A_ZThrust}, 4, (1<<16)|1, S_SMASHSPIKE_EASE2, 0}, // S_SMASHSPIKE_EASE1 - {SPR_FMCE, 0, 4, {A_ZThrust}, 0, (1<<16)|1, S_SMASHSPIKE_FALL, 0}, // S_SMASHSPIKE_EASE2 - {SPR_FMCE, 0, 2, {A_ZThrust}, -6, 1, S_SMASHSPIKE_FALL, 0}, // S_SMASHSPIKE_FALL - {SPR_FMCE, 1, 2, {A_MultiShotDist}, (MT_DUST<<16)|10, -48, S_SMASHSPIKE_STOMP2, 0}, // S_SMASHSPIKE_STOMP1 - {SPR_FMCE, 2, 14, {NULL}, 0, 0, S_SMASHSPIKE_RISE1, 0}, // S_SMASHSPIKE_STOMP2 - {SPR_FMCE, 1, 2, {NULL}, 0, 0, S_SMASHSPIKE_RISE2, 0}, // S_SMASHSPIKE_RISE1 - {SPR_FMCE, 0, 2, {A_ZThrust}, 6, (1<<16)|1, S_SMASHSPIKE_RISE2, 0}, // S_SMASHSPIKE_RISE2 - - {SPR_CACO, 0, 5, {A_Look}, (1100<<16)|1, 0, S_CACO_LOOK, 0}, // S_CACO_LOOK - {SPR_CACO, 1, 0, {A_MultiShotDist}, (MT_DUST<<16)|7, -48, S_CACO_WAKE2, 0}, // S_CACO_WAKE1 - {SPR_CACO, 1, 10, {A_ZThrust}, 4, (1<<16)|1, S_CACO_WAKE3, 0}, // S_CACO_WAKE2 - {SPR_CACO, 2, 8, {A_ZThrust}, 2, (1<<16)|1, S_CACO_WAKE4, 0}, // S_CACO_WAKE3 - {SPR_CACO, 2, 4, {A_ZThrust}, 0, (1<<16)|1, S_CACO_ROAR, 0}, // S_CACO_WAKE4 - {SPR_CACO, 2, 10, {A_PlayActiveSound}, 0, 0, S_CACO_CHASE, 0}, // S_CACO_ROAR - {SPR_CACO, 2, 5, {A_JetChase}, 0, 0, S_CACO_CHASE_REPEAT, 0}, // S_CACO_CHASE - {SPR_CACO, 2, 0, {A_Repeat}, 5, S_CACO_CHASE, S_CACO_RANDOM, 0}, // S_CACO_CHASE_REPEAT - {SPR_CACO, 2, 0, {A_RandomState}, S_CACO_PREPARE_SOUND, S_CACO_CHASE, S_CACO_RANDOM, 0}, // S_CACO_RANDOM - {SPR_CACO, 2, 8, {A_PlaySound}, sfx_s3k95, 1, S_CACO_PREPARE1, 0}, // S_CACO_PREPARE_SOUND - {SPR_CACO, 3, 8, {NULL}, 0, 0, S_CACO_PREPARE2, 0}, // S_CACO_PREPARE1 - {SPR_CACO, 4|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_PREPARE3, 0}, // S_CACO_PREPARE2 - {SPR_CACO, 5|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_SHOOT_SOUND, 0}, // S_CACO_PREPARE3 - {SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_PlaySound}, sfx_s3k4e, 1, S_CACO_SHOOT1, 0}, // S_CACO_SHOOT_SOUND - {SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_CACOFIRE_EXPLODE1, S_CACO_SHOOT2, 0}, // S_CACO_SHOOT1 - {SPR_CACO, 4|FF_FULLBRIGHT, 6, {A_FireShot}, MT_CACOFIRE, -24, S_CACO_CLOSE, 0}, // S_CACO_SHOOT2 - {SPR_CACO, 3, 15, {NULL}, 0, 0, S_CACO_CHASE, 0}, // S_CACO_CLOSE - {SPR_CACO, 10, 0, {A_SetObjectFlags}, MF_NOBLOCKMAP, 0, S_CACO_DIE_GIB1, 0}, // S_CACO_DIE_FLAGS - {SPR_CACO, 10, 0, {A_NapalmScatter}, (7<<16)|MT_CACOSHARD, (30<<16)|20, S_CACO_DIE_GIB2, 0}, // S_CACO_DIE_GIB1 - {SPR_CACO, 10, 0, {A_NapalmScatter}, (10<<16)|MT_CACOSHARD, (24<<16)|32, S_CACO_DIE_SCREAM, 0}, // S_CACO_DIE_GIB2 - {SPR_CACO, 10, 0, {A_Scream}, 0, 0, S_CACO_DIE_SHATTER, 0}, // S_CACO_DIE_SCREAM - {SPR_CACO, 10, 0, {A_PlaySound}, sfx_pumpkn, 1, S_CACO_DIE_FALL, 0}, // S_CACO_DIE_SHATTER - {SPR_CACO, 10, 250, {A_FlickySpawn}, (1<<16), 0, S_NULL, 0}, // S_CACO_DIE_FALL - - {SPR_CACO, 6, 0, {A_RandomState}, S_CACOSHARD1_1, S_CACOSHARD2_1, S_NULL, 0}, // S_CACOSHARD_RANDOMIZE - {SPR_CACO, 6, 3, {NULL}, 0, 0, S_CACOSHARD1_2, 0}, // S_CACOSHARD1_1 - {SPR_CACO, 7, 3, {NULL}, 0, 0, S_CACOSHARD1_1, 0}, // S_CACOSHARD1_2 - {SPR_CACO, 8, 3, {NULL}, 0, 0, S_CACOSHARD2_2, 0}, // S_CACOSHARD2_1 - {SPR_CACO, 9, 3, {NULL}, 0, 0, S_CACOSHARD2_1, 0}, // S_CACOSHARD2_2 - {SPR_BAL2, FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE2, 0}, // S_CACOFIRE1 - {SPR_BAL2, 1|FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE3, 0}, // S_CACOFIRE2 - {SPR_BAL2, FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CACOFIRE1, 0}, // S_CACOFIRE3 - {SPR_BAL2, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE2, 0}, // S_CACOFIRE_EXPLODE1 - {SPR_BAL2, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE3, 0}, // S_CACOFIRE_EXPLODE2 - {SPR_BAL2, 4|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE4, 0}, // S_CACOFIRE_EXPLODE3 - {SPR_BAL2, 5|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_CACOFIRE_EXPLODE4 - - {SPR_SBOB, 1, 10, {A_ZThrust}, -2, (1<<16)|1, S_SPINBOBERT_MOVE_UP, 0}, // S_SPINBOBERT_MOVE_FLIPUP - {SPR_SBOB, 0, 45, {A_ZThrust}, 4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPDOWN, 0}, // S_SPINBOBERT_MOVE_UP - {SPR_SBOB, 1, 10, {A_ZThrust}, 2, (1<<16)|1, S_SPINBOBERT_MOVE_DOWN, 0}, // S_SPINBOBERT_MOVE_FLIPDOWN - {SPR_SBOB, 2, 45, {A_ZThrust}, -4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPUP, 0}, // S_SPINBOBERT_MOVE_DOWN - {SPR_SBSK, FF_FULLBRIGHT, 1, {A_RotateSpikeBall}, 0, 0, S_SPINBOBERT_FIRE_GHOST, 0}, // S_SPINBOBERT_FIRE_MOVE - {SPR_SBSK, FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_SPINBOBERT_FIRE_TRAIL1, S_SPINBOBERT_FIRE_MOVE, 0}, // S_SPINBOBERT_FIRE_GHOST - {SPR_SBFL, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL2, 0}, // S_SPINBOBERT_FIRE_TRAIL1 - {SPR_SBFL, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL3, 0}, // S_SPINBOBERT_FIRE_TRAIL2 - {SPR_SBFL, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, // S_SPINBOBERT_FIRE_TRAIL3 - - {SPR_HBAT, 0, 5, {A_Look}, (900<<16)|1, 0, S_HANGSTER_LOOK, 0}, // S_HANGSTER_LOOK - {SPR_HBAT, 1, 0, {A_MultiShotDist}, (MT_DUST<<16)|10, -34, S_HANGSTER_SWOOP2, 0}, // S_HANGSTER_SWOOP1 - {SPR_HBAT, 1, 2, {A_ZThrust}, -8, (1<<16)|1, S_HANGSTER_SWOOP2, 0}, // S_HANGSTER_SWOOP2 - {SPR_HBAT, 1, 6, {A_ZThrust}, -5, (1<<16), S_HANGSTER_ARC2, 0}, // S_HANGSTER_ARC1 - {SPR_HBAT, 1, 5, {A_ZThrust}, -2, (1<<16), S_HANGSTER_ARC3, 0}, // S_HANGSTER_ARC2 - {SPR_HBAT, 1, 1, {A_ZThrust}, 0, (1<<16), S_HANGSTER_FLY1, 0}, // S_HANGSTER_ARC3 - {SPR_HBAT, 1, 4, {A_Thrust}, 6, 1, S_HANGSTER_FLY2, 0}, // S_HANGSTER_FLY1 - {SPR_HBAT, 2, 1, {A_PlaySound}, sfx_s3k52, 1, S_HANGSTER_FLY3, 0}, // S_HANGSTER_FLY2 - {SPR_HBAT, 3, 4, {A_Thrust}, 6, 1, S_HANGSTER_FLY4, 0}, // S_HANGSTER_FLY3 - {SPR_HBAT, 2, 1, {A_Thrust}, 6, 1, S_HANGSTER_FLYREPEAT, 0}, // S_HANGSTER_FLY4 - {SPR_HBAT, 2, 0, {A_Repeat}, 12, S_HANGSTER_FLY1, S_HANGSTER_ARCUP1, 0}, // S_HANGSTER_FLYREPEAT - {SPR_HBAT, 1, 5, {A_ZThrust}, 2, (1<<16), S_HANGSTER_ARCUP2, 0}, // S_HANGSTER_ARCUP1 - {SPR_HBAT, 1, 6, {A_ZThrust}, 5, (1<<16), S_HANGSTER_ARCUP3, 0}, // S_HANGSTER_ARCUP2 - {SPR_HBAT, 1, 1, {A_ZThrust}, 0, (1<<16), S_HANGSTER_RETURN1, 0}, // S_HANGSTER_ARCUP3 - {SPR_HBAT, 1, 1, {A_ZThrust}, 8, (1<<16), S_HANGSTER_RETURN2, 0}, // S_HANGSTER_RETURN1 - {SPR_HBAT, 3, 1, {NULL}, 0, 0, S_HANGSTER_RETURN1, 0}, // S_HANGSTER_RETURN2 - {SPR_HBAT, 0, 15, {NULL}, 0, 0, S_HANGSTER_LOOK, 0}, // S_HANGSTER_RETURN3 - - {SPR_NULL, 0, 35, {NULL}, 0, 0, S_CRUMBLE2, 0}, // S_CRUMBLE1 - {SPR_NULL, 0, 105, {A_Scream}, 0, 0, S_NULL, 0}, // S_CRUMBLE2 + {"S_PENGUINATOR_LOOK", 0, SPR_PENG, 0, 2, {A_Look}, 0, 0, S_PENGUINATOR_LOOK, 0}, + {"S_PENGUINATOR_WADDLE1", 0, SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE2, 0}, + {"S_PENGUINATOR_WADDLE2", 0, SPR_PENG, 1, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE3, 0}, + {"S_PENGUINATOR_WADDLE3", 0, SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE4, 0}, + {"S_PENGUINATOR_WADDLE4", 0, SPR_PENG, 2, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE1, 0}, + {"S_PENGUINATOR_SLIDE1", 0, SPR_PENG, 0, 0, {A_FaceTarget}, 0, 0, S_PENGUINATOR_SLIDE2, 0}, + {"S_PENGUINATOR_SLIDE2", 0, SPR_PENG, 3, 5, {A_BunnyHop}, 4, 10, S_PENGUINATOR_SLIDE3, 0}, + {"S_PENGUINATOR_SLIDE3", 0, SPR_PENG, 4, 90, {A_PlayAttackSound}, 0, 0, S_PENGUINATOR_SLIDE4, 0}, + {"S_PENGUINATOR_SLIDE4", 0, SPR_PENG, 3, 5, {A_Thrust}, 0, 1, S_PENGUINATOR_SLIDE5, 0}, + {"S_PENGUINATOR_SLIDE5", 0, SPR_PENG, 0, 5, {A_FaceTarget}, 0, 0, S_PENGUINATOR_LOOK, 0}, + + {"S_POPHAT_LOOK", 0, SPR_POPH, 0, 2, {A_Look}, (2048<<16)|1, 0, S_POPHAT_LOOK, 0}, + {"S_POPHAT_SHOOT1", 0, SPR_POPH, 1, 0, {A_MultiShotDist}, (MT_SPINDUST<<16)|4, 24, S_POPHAT_SHOOT2, 0}, + {"S_POPHAT_SHOOT2", 0, SPR_POPH, 1, 2, {A_LobShot}, MT_POPSHOT, (70<<16)|60, S_POPHAT_SHOOT3, 0}, + {"S_POPHAT_SHOOT3", 0, SPR_POPH, 2, 1, {NULL}, 0, 0, S_POPHAT_SHOOT4, 0}, + {"S_POPHAT_SHOOT4", 0, SPR_POPH, 0, 57, {NULL}, 0, 0, S_POPHAT_LOOK, 0}, + {"S_POPSHOT", 0, SPR_POPH, 3, 3, {A_SpawnObjectRelative}, 0, MT_POPSHOT_TRAIL, S_POPSHOT, 0}, + {"S_POPSHOT_TRAIL", 0, SPR_NULL, 0, 2, {NULL}, 0, 0, S_SPINDUST1, 0}, + + {"S_HIVEELEMENTAL_LOOK", 0, SPR_HIVE, 0, 5, {A_Look}, 1, 1, S_HIVEELEMENTAL_LOOK, 0}, + {"S_HIVEELEMENTAL_PREPARE1", 0, SPR_HIVE, 0, 14, {A_PlaySound}, sfx_s3k76, 1, S_HIVEELEMENTAL_PREPARE2, 0}, + {"S_HIVEELEMENTAL_PREPARE2", 0, SPR_HIVE, 0, 6, {A_PlaySound}, sfx_s3k8c, 1, S_HIVEELEMENTAL_SHOOT1, 0}, + {"S_HIVEELEMENTAL_SHOOT1", 0, SPR_HIVE, 1, 4, {A_WhoCaresIfYourSonIsABee}, (MT_BUMBLEBORE<<16)|4, (1<<16)|32, S_HIVEELEMENTAL_SHOOT2, 0}, + {"S_HIVEELEMENTAL_SHOOT2", 0, SPR_HIVE, 2, 2, {NULL}, 0, 0, S_HIVEELEMENTAL_DORMANT, 0}, + {"S_HIVEELEMENTAL_DORMANT", 0, SPR_HIVE, 0, 5, {A_ParentTriesToSleep}, S_HIVEELEMENTAL_PREPARE1, 0, S_HIVEELEMENTAL_DORMANT, 0}, + {"S_HIVEELEMENTAL_PAIN", 0, SPR_HIVE, 3, 35, {A_Pain}, 0, 0, S_HIVEELEMENTAL_LOOK, 0}, + {"S_HIVEELEMENTAL_DIE1", 0, SPR_HIVE, 3, 2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE2, 0}, + {"S_HIVEELEMENTAL_DIE2", 0, SPR_NULL, 0, 2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE3, 0}, + {"S_HIVEELEMENTAL_DIE3", 0, SPR_NULL, 0, 0, {A_Repeat}, 7, S_HIVEELEMENTAL_DIE1, S_XPLD_FLICKY, 0}, + + {"S_BUMBLEBORE_SPAWN", 0, SPR_BUMB, 1, 10, {NULL}, 0, 0, S_BUMBLEBORE_LOOK1, 0}, + {"S_BUMBLEBORE_LOOK1", 0, SPR_BUMB, 0, 4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK2, 0}, + {"S_BUMBLEBORE_LOOK2", 0, SPR_BUMB, 1, 4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK1, 0}, + {"S_BUMBLEBORE_FLY1", 0, SPR_BUMB, 0, 4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY2, 0}, + {"S_BUMBLEBORE_FLY2", 0, SPR_BUMB, 1, 4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY1, 0}, + {"S_BUMBLEBORE_RAISE", 0, SPR_BUMB, 2|FF_FULLBRIGHT, 12, {A_ZThrust}, 4, (1<<16)|1, S_BUMBLEBORE_FALL1, 0}, + {"S_BUMBLEBORE_FALL1", 0, SPR_BUMB, 2|FF_FULLBRIGHT, 0, {A_ZThrust}, -8, (1<<16)|1, S_BUMBLEBORE_FALL2, 0}, + {"S_BUMBLEBORE_FALL2", 0, SPR_BUMB, 2|FF_FULLBRIGHT, 300, {NULL}, 0, 0, S_BUMBLEBORE_DIE, 0}, + {"S_BUMBLEBORE_STUCK1", 0, SPR_BUMB, 4, 3, {A_MultiShotDist}, (MT_DUST<<16)|6, -40, S_BUMBLEBORE_STUCK2, 0}, + {"S_BUMBLEBORE_STUCK2", 0, SPR_BUMB, 5, 120, {NULL}, 0, 0, S_BUMBLEBORE_DIE, 0}, + {"S_BUMBLEBORE_DIE", 0, SPR_BUMB, 5, 0, {A_CryingToMomma}, 0, 0, S_XPLD1, 0}, + + {"S_BUGGLEIDLE", 0, SPR_BBUZ, 0, -1, {NULL}, 0, 0, S_NULL, 0}, + {"S_BUGGLEFLY", 0, SPR_BBUZ, FF_ANIMATE, -1, {NULL}, 1, 2, S_NULL, 0}, + + {"S_SMASHSPIKE_FLOAT", 0, SPR_FMCE, 0, 20, {NULL}, 0, 0, S_SMASHSPIKE_EASE1, 0}, + {"S_SMASHSPIKE_EASE1", 0, SPR_FMCE, 0, 4, {A_ZThrust}, 4, (1<<16)|1, S_SMASHSPIKE_EASE2, 0}, + {"S_SMASHSPIKE_EASE2", 0, SPR_FMCE, 0, 4, {A_ZThrust}, 0, (1<<16)|1, S_SMASHSPIKE_FALL, 0}, + {"S_SMASHSPIKE_FALL", 0, SPR_FMCE, 0, 2, {A_ZThrust}, -6, 1, S_SMASHSPIKE_FALL, 0}, + {"S_SMASHSPIKE_STOMP1", 0, SPR_FMCE, 1, 2, {A_MultiShotDist}, (MT_DUST<<16)|10, -48, S_SMASHSPIKE_STOMP2, 0}, + {"S_SMASHSPIKE_STOMP2", 0, SPR_FMCE, 2, 14, {NULL}, 0, 0, S_SMASHSPIKE_RISE1, 0}, + {"S_SMASHSPIKE_RISE1", 0, SPR_FMCE, 1, 2, {NULL}, 0, 0, S_SMASHSPIKE_RISE2, 0}, + {"S_SMASHSPIKE_RISE2", 0, SPR_FMCE, 0, 2, {A_ZThrust}, 6, (1<<16)|1, S_SMASHSPIKE_RISE2, 0}, + + {"S_CACO_LOOK", 0, SPR_CACO, 0, 5, {A_Look}, (1100<<16)|1, 0, S_CACO_LOOK, 0}, + {"S_CACO_WAKE1", 0, SPR_CACO, 1, 0, {A_MultiShotDist}, (MT_DUST<<16)|7, -48, S_CACO_WAKE2, 0}, + {"S_CACO_WAKE2", 0, SPR_CACO, 1, 10, {A_ZThrust}, 4, (1<<16)|1, S_CACO_WAKE3, 0}, + {"S_CACO_WAKE3", 0, SPR_CACO, 2, 8, {A_ZThrust}, 2, (1<<16)|1, S_CACO_WAKE4, 0}, + {"S_CACO_WAKE4", 0, SPR_CACO, 2, 4, {A_ZThrust}, 0, (1<<16)|1, S_CACO_ROAR, 0}, + {"S_CACO_ROAR", 0, SPR_CACO, 2, 10, {A_PlayActiveSound}, 0, 0, S_CACO_CHASE, 0}, + {"S_CACO_CHASE", 0, SPR_CACO, 2, 5, {A_JetChase}, 0, 0, S_CACO_CHASE_REPEAT, 0}, + {"S_CACO_CHASE_REPEAT", 0, SPR_CACO, 2, 0, {A_Repeat}, 5, S_CACO_CHASE, S_CACO_RANDOM, 0}, + {"S_CACO_RANDOM", 0, SPR_CACO, 2, 0, {A_RandomState}, S_CACO_PREPARE_SOUND, S_CACO_CHASE, S_CACO_RANDOM, 0}, + {"S_CACO_PREPARE_SOUND", 0, SPR_CACO, 2, 8, {A_PlaySound}, sfx_s3k95, 1, S_CACO_PREPARE1, 0}, + {"S_CACO_PREPARE1", 0, SPR_CACO, 3, 8, {NULL}, 0, 0, S_CACO_PREPARE2, 0}, + {"S_CACO_PREPARE2", 0, SPR_CACO, 4|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_PREPARE3, 0}, + {"S_CACO_PREPARE3", 0, SPR_CACO, 5|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_SHOOT_SOUND, 0}, + {"S_CACO_SHOOT_SOUND", 0, SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_PlaySound}, sfx_s3k4e, 1, S_CACO_SHOOT1, 0}, + {"S_CACO_SHOOT1", 0, SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_CACOFIRE_EXPLODE1, S_CACO_SHOOT2, 0}, + {"S_CACO_SHOOT2", 0, SPR_CACO, 4|FF_FULLBRIGHT, 6, {A_FireShot}, MT_CACOFIRE, -24, S_CACO_CLOSE, 0}, + {"S_CACO_CLOSE", 0, SPR_CACO, 3, 15, {NULL}, 0, 0, S_CACO_CHASE, 0}, + {"S_CACO_DIE_FLAGS", 0, SPR_CACO, 10, 0, {A_SetObjectFlags}, MF_NOBLOCKMAP, 0, S_CACO_DIE_GIB1, 0}, + {"S_CACO_DIE_GIB1", 0, SPR_CACO, 10, 0, {A_NapalmScatter}, (7<<16)|MT_CACOSHARD, (30<<16)|20, S_CACO_DIE_GIB2, 0}, + {"S_CACO_DIE_GIB2", 0, SPR_CACO, 10, 0, {A_NapalmScatter}, (10<<16)|MT_CACOSHARD, (24<<16)|32, S_CACO_DIE_SCREAM, 0}, + {"S_CACO_DIE_SCREAM", 0, SPR_CACO, 10, 0, {A_Scream}, 0, 0, S_CACO_DIE_SHATTER, 0}, + {"S_CACO_DIE_SHATTER", 0, SPR_CACO, 10, 0, {A_PlaySound}, sfx_pumpkn, 1, S_CACO_DIE_FALL, 0}, + {"S_CACO_DIE_FALL", 0, SPR_CACO, 10, 250, {A_FlickySpawn}, (1<<16), 0, S_NULL, 0}, + + {"S_CACOSHARD_RANDOMIZE", 0, SPR_CACO, 6, 0, {A_RandomState}, S_CACOSHARD1_1, S_CACOSHARD2_1, S_NULL, 0}, + {"S_CACOSHARD1_1", 0, SPR_CACO, 6, 3, {NULL}, 0, 0, S_CACOSHARD1_2, 0}, + {"S_CACOSHARD1_2", 0, SPR_CACO, 7, 3, {NULL}, 0, 0, S_CACOSHARD1_1, 0}, + {"S_CACOSHARD2_1", 0, SPR_CACO, 8, 3, {NULL}, 0, 0, S_CACOSHARD2_2, 0}, + {"S_CACOSHARD2_2", 0, SPR_CACO, 9, 3, {NULL}, 0, 0, S_CACOSHARD2_1, 0}, + {"S_CACOFIRE1", 0, SPR_BAL2, FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE2, 0}, + {"S_CACOFIRE2", 0, SPR_BAL2, 1|FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE3, 0}, + {"S_CACOFIRE3", 0, SPR_BAL2, FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CACOFIRE1, 0}, + {"S_CACOFIRE_EXPLODE1", 0, SPR_BAL2, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE2, 0}, + {"S_CACOFIRE_EXPLODE2", 0, SPR_BAL2, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE3, 0}, + {"S_CACOFIRE_EXPLODE3", 0, SPR_BAL2, 4|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE4, 0}, + {"S_CACOFIRE_EXPLODE4", 0, SPR_BAL2, 5|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, + + {"S_SPINBOBERT_MOVE_FLIPUP", 0, SPR_SBOB, 1, 10, {A_ZThrust}, -2, (1<<16)|1, S_SPINBOBERT_MOVE_UP, 0}, + {"S_SPINBOBERT_MOVE_UP", 0, SPR_SBOB, 0, 45, {A_ZThrust}, 4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPDOWN, 0}, + {"S_SPINBOBERT_MOVE_FLIPDOWN", 0, SPR_SBOB, 1, 10, {A_ZThrust}, 2, (1<<16)|1, S_SPINBOBERT_MOVE_DOWN, 0}, + {"S_SPINBOBERT_MOVE_DOWN", 0, SPR_SBOB, 2, 45, {A_ZThrust}, -4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPUP, 0}, + {"S_SPINBOBERT_FIRE_MOVE", 0, SPR_SBSK, FF_FULLBRIGHT, 1, {A_RotateSpikeBall}, 0, 0, S_SPINBOBERT_FIRE_GHOST, 0}, + {"S_SPINBOBERT_FIRE_GHOST", 0, SPR_SBSK, FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_SPINBOBERT_FIRE_TRAIL1, S_SPINBOBERT_FIRE_MOVE, 0}, + {"S_SPINBOBERT_FIRE_TRAIL1", 0, SPR_SBFL, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL2, 0}, + {"S_SPINBOBERT_FIRE_TRAIL2", 0, SPR_SBFL, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL3, 0}, + {"S_SPINBOBERT_FIRE_TRAIL3", 0, SPR_SBFL, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL, 0}, + + {"S_HANGSTER_LOOK", 0, SPR_HBAT, 0, 5, {A_Look}, (900<<16)|1, 0, S_HANGSTER_LOOK, 0}, + {"S_HANGSTER_SWOOP1", 0, SPR_HBAT, 1, 0, {A_MultiShotDist}, (MT_DUST<<16)|10, -34, S_HANGSTER_SWOOP2, 0}, + {"S_HANGSTER_SWOOP2", 0, SPR_HBAT, 1, 2, {A_ZThrust}, -8, (1<<16)|1, S_HANGSTER_SWOOP2, 0}, + {"S_HANGSTER_ARC1", 0, SPR_HBAT, 1, 6, {A_ZThrust}, -5, (1<<16), S_HANGSTER_ARC2, 0}, + {"S_HANGSTER_ARC2", 0, SPR_HBAT, 1, 5, {A_ZThrust}, -2, (1<<16), S_HANGSTER_ARC3, 0}, + {"S_HANGSTER_ARC3", 0, SPR_HBAT, 1, 1, {A_ZThrust}, 0, (1<<16), S_HANGSTER_FLY1, 0}, + {"S_HANGSTER_FLY1", 0, SPR_HBAT, 1, 4, {A_Thrust}, 6, 1, S_HANGSTER_FLY2, 0}, + {"S_HANGSTER_FLY2", 0, SPR_HBAT, 2, 1, {A_PlaySound}, sfx_s3k52, 1, S_HANGSTER_FLY3, 0}, + {"S_HANGSTER_FLY3", 0, SPR_HBAT, 3, 4, {A_Thrust}, 6, 1, S_HANGSTER_FLY4, 0}, + {"S_HANGSTER_FLY4", 0, SPR_HBAT, 2, 1, {A_Thrust}, 6, 1, S_HANGSTER_FLYREPEAT, 0}, + {"S_HANGSTER_FLYREPEAT", 0, SPR_HBAT, 2, 0, {A_Repeat}, 12, S_HANGSTER_FLY1, S_HANGSTER_ARCUP1, 0}, + {"S_HANGSTER_ARCUP1", 0, SPR_HBAT, 1, 5, {A_ZThrust}, 2, (1<<16), S_HANGSTER_ARCUP2, 0}, + {"S_HANGSTER_ARCUP2", 0, SPR_HBAT, 1, 6, {A_ZThrust}, 5, (1<<16), S_HANGSTER_ARCUP3, 0}, + {"S_HANGSTER_ARCUP3", 0, SPR_HBAT, 1, 1, {A_ZThrust}, 0, (1<<16), S_HANGSTER_RETURN1, 0}, + {"S_HANGSTER_RETURN1", 0, SPR_HBAT, 1, 1, {A_ZThrust}, 8, (1<<16), S_HANGSTER_RETURN2, 0}, + {"S_HANGSTER_RETURN2", 0, SPR_HBAT, 3, 1, {NULL}, 0, 0, S_HANGSTER_RETURN1, 0}, + {"S_HANGSTER_RETURN3", 0, SPR_HBAT, 0, 15, {NULL}, 0, 0, S_HANGSTER_LOOK, 0}, + + {"S_CRUMBLE1", 0, SPR_NULL, 0, 35, {NULL}, 0, 0, S_CRUMBLE2, 0}, + {"S_CRUMBLE2", 0, SPR_NULL, 0, 105, {A_Scream}, 0, 0, S_NULL, 0}, // Spark - {SPR_NULL, 0, 1, {A_ModuloToState}, 2, S_SPRK2, S_SPRK3, 0}, // S_SPRK1 - {SPR_SPRK, FF_TRANS20|FF_ANIMATE|0, 18, {NULL}, 8, 2, S_NULL, 0}, // S_SPRK2 - {SPR_SPRK, FF_TRANS20|FF_ANIMATE|9, 18, {NULL}, 8, 2, S_NULL, 0}, // S_SPRK3 + {"S_SPRK1", 0, SPR_NULL, 0, 1, {A_ModuloToState}, 2, S_SPRK2, S_SPRK3, 0}, + {"S_SPRK2", 0, SPR_SPRK, FF_TRANS20|FF_ANIMATE|0, 18, {NULL}, 8, 2, S_NULL, 0}, + {"S_SPRK3", 0, SPR_SPRK, FF_TRANS20|FF_ANIMATE|9, 18, {NULL}, 8, 2, S_NULL, 0}, // Robot Explosion - {SPR_BOM1, 0, 0, {A_FlickySpawn}, 0, 0, S_XPLD1, 0}, // S_XPLD_FLICKY - {SPR_BOM1, 0, 2, {A_ShadowScream}, 0, 0, S_XPLD2, 0}, // S_XPLD1 - {SPR_BOM1, 1, 2, {NULL}, 0, 0, S_XPLD3, 0}, // S_XPLD2 - {SPR_BOM1, 2, 3, {NULL}, 0, 0, S_XPLD4, 0}, // S_XPLD3 - {SPR_BOM1, 3, 3, {NULL}, 0, 0, S_XPLD5, 0}, // S_XPLD4 - {SPR_BOM1, 4, 4, {NULL}, 0, 0, S_XPLD6, 0}, // S_XPLD5 - {SPR_BOM1, 5, 4, {NULL}, 0, 0, S_NULL, 0}, // S_XPLD6 + {"S_XPLD_FLICKY", 0, SPR_BOM1, 0, 0, {A_FlickySpawn}, 0, 0, S_XPLD1, 0}, + {"S_XPLD1", 0, SPR_BOM1, 0, 2, {A_ShadowScream}, 0, 0, S_XPLD2, 0}, + {"S_XPLD2", 0, SPR_BOM1, 1, 2, {NULL}, 0, 0, S_XPLD3, 0}, + {"S_XPLD3", 0, SPR_BOM1, 2, 3, {NULL}, 0, 0, S_XPLD4, 0}, + {"S_XPLD4", 0, SPR_BOM1, 3, 3, {NULL}, 0, 0, S_XPLD5, 0}, + {"S_XPLD5", 0, SPR_BOM1, 4, 4, {NULL}, 0, 0, S_XPLD6, 0}, + {"S_XPLD6", 0, SPR_BOM1, 5, 4, {NULL}, 0, 0, S_NULL, 0}, - {SPR_BOM1, FF_ANIMATE, 21, {NULL}, 5, 4, S_INVISIBLE, 0}, // S_XPLD_EGGTRAP + {"S_XPLD_EGGTRAP", 0, SPR_BOM1, FF_ANIMATE, 21, {NULL}, 5, 4, S_INVISIBLE, 0}, // Underwater Explosion - {SPR_BOM4, 0, 3, {A_ShadowScream}, 0, 0, S_WPLD2, 0}, // S_WPLD1 - {SPR_BOM4, 1, 3, {NULL}, 0, 0, S_WPLD3, 0}, // S_WPLD2 - {SPR_BOM4, 2, 3, {NULL}, 0, 0, S_WPLD4, 0}, // S_WPLD3 - {SPR_BOM4, 3, 3, {NULL}, 0, 0, S_WPLD5, 0}, // S_WPLD4 - {SPR_BOM4, 4, 3, {NULL}, 0, 0, S_WPLD6, 0}, // S_WPLD5 - {SPR_BOM4, 5, 3, {NULL}, 0, 0, S_NULL, 0}, // S_WPLD6 - - {SPR_DUST, FF_TRANS40, 4, {NULL}, 0, 0, S_DUST2, 0}, // S_DUST1 - {SPR_DUST, 1|FF_TRANS50, 5, {NULL}, 0, 0, S_DUST3, 0}, // S_DUST2 - {SPR_DUST, 2|FF_TRANS60, 3, {NULL}, 0, 0, S_DUST4, 0}, // S_DUST3 - {SPR_DUST, 3|FF_TRANS70, 2, {NULL}, 0, 0, S_NULL, 0}, // S_DUST4 - - {SPR_NULL, 0, 1, {A_RockSpawn}, 0, 0, S_ROCKSPAWN, 0}, // S_ROCKSPAWN - - {SPR_ROIA, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, // S_ROCKCRUMBLEA - {SPR_ROIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEB - {SPR_ROIC, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEC - {SPR_ROID, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLED - {SPR_ROIE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEE - {SPR_ROIF, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEF - {SPR_ROIG, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, // S_ROCKCRUMBLEG - {SPR_ROIH, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, // S_ROCKCRUMBLEH - {SPR_ROII, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEI - {SPR_ROIJ, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, // S_ROCKCRUMBLEJ - {SPR_ROIK, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, // S_ROCKCRUMBLEK - {SPR_ROIL, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEL - {SPR_ROIM, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEM - {SPR_ROIN, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEN - {SPR_ROIO, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEO - {SPR_ROIP, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, // S_ROCKCRUMBLEP - - {SPR_GFZD, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, // S_GFZDEBRIS - {SPR_BRIC, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL, 0}, // S_BRICKDEBRIS - {SPR_WDDB, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL, 0}, // S_WOODDEBRIS - {SPR_BRIR, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, // S_REDBRICKDEBRIS - {SPR_BRIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, // S_BLUEBRICKDEBRIS - {SPR_BRIY, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, // S_YELLOWBRICKDEBRIS - - {SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL, 0}, // S_NAMECHECK + {"S_WPLD1", 0, SPR_BOM4, 0, 3, {A_ShadowScream}, 0, 0, S_WPLD2, 0}, + {"S_WPLD2", 0, SPR_BOM4, 1, 3, {NULL}, 0, 0, S_WPLD3, 0}, + {"S_WPLD3", 0, SPR_BOM4, 2, 3, {NULL}, 0, 0, S_WPLD4, 0}, + {"S_WPLD4", 0, SPR_BOM4, 3, 3, {NULL}, 0, 0, S_WPLD5, 0}, + {"S_WPLD5", 0, SPR_BOM4, 4, 3, {NULL}, 0, 0, S_WPLD6, 0}, + {"S_WPLD6", 0, SPR_BOM4, 5, 3, {NULL}, 0, 0, S_NULL, 0}, + + {"S_DUST1", 0, SPR_DUST, FF_TRANS40, 4, {NULL}, 0, 0, S_DUST2, 0}, + {"S_DUST2", 0, SPR_DUST, 1|FF_TRANS50, 5, {NULL}, 0, 0, S_DUST3, 0}, + {"S_DUST3", 0, SPR_DUST, 2|FF_TRANS60, 3, {NULL}, 0, 0, S_DUST4, 0}, + {"S_DUST4", 0, SPR_DUST, 3|FF_TRANS70, 2, {NULL}, 0, 0, S_NULL, 0}, + + {"S_ROCKSPAWN", 0, SPR_NULL, 0, 1, {A_RockSpawn}, 0, 0, S_ROCKSPAWN, 0}, + + {"S_ROCKCRUMBLEA", 0, SPR_ROIA, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEB", 0, SPR_ROIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEC", 0, SPR_ROIC, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + {"S_ROCKCRUMBLED", 0, SPR_ROID, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEE", 0, SPR_ROIE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEF", 0, SPR_ROIF, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEG", 0, SPR_ROIG, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEH", 0, SPR_ROIH, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEI", 0, SPR_ROII, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEJ", 0, SPR_ROIJ, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEK", 0, SPR_ROIK, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEL", 0, SPR_ROIL, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEM", 0, SPR_ROIM, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEN", 0, SPR_ROIN, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEO", 0, SPR_ROIO, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + {"S_ROCKCRUMBLEP", 0, SPR_ROIP, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL, 0}, + + {"S_GFZDEBRIS", 0, SPR_GFZD, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, + {"S_BRICKDEBRIS", 0, SPR_BRIC, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL, 0}, + {"S_WOODDEBRIS", 0, SPR_WDDB, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL, 0}, + {"S_REDBRICKDEBRIS", 0, SPR_BRIR, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, + {"S_BLUEBRICKDEBRIS", 0, SPR_BRIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, + {"S_YELLOWBRICKDEBRIS", 0, SPR_BRIY, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL, 0}, + + {"S_NAMECHECK", 0, SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL, 0}, }; -static mobjinfo_t startmobjinfo[] = +state_t **states; +UINT32 numstates; + +static const mobjinfo_t startmobjinfo[] = { { "MT_NULL", @@ -22259,7 +22262,7 @@ static mobjinfo_t startmobjinfo[] = }; mobjinfo_t **mobjinfo; -size_t nummobjinfo; +UINT32 nummobjinfo; skincolor_t skincolors[MAXSKINCOLORS] = { {"None", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SKINCOLOR_NONE, 0, 0, false}, // SKINCOLOR_NONE @@ -22444,7 +22447,7 @@ skincolor_t skincolors[MAXSKINCOLORS] = { */ void P_PatchInfoTables(void) { - INT32 i; + UINT32 i; char *tempname; #if NUMSPRITEFREESLOTS > 9999 //tempname numbering actually starts at SPR_FIRSTFREESLOT, so the limit is actually 9999 + SPR_FIRSTFREESLOT-1, but the preprocessor doesn't understand enums, so its left at 9999 for safety @@ -22464,8 +22467,6 @@ void P_PatchInfoTables(void) t_lspr[i] = &lspr[NOLIGHT]; #endif } - sprnames[i][0] = '\0'; // i == NUMSPRITES - memset(&states[S_FIRSTFREESLOT], 0, sizeof (state_t) * NUMSTATEFREESLOTS); memset(&skincolors[SKINCOLOR_FIRSTFREESLOT], 0, sizeof (skincolor_t) * NUMCOLORFREESLOTS); for (i = SKINCOLOR_FIRSTFREESLOT; i <= SKINCOLOR_LASTFREESLOT; i++) { skincolors[i].accessible = false; @@ -22475,9 +22476,8 @@ void P_PatchInfoTables(void) #ifdef ALLOW_RESETDATA static char *sprnamesbackup; -static state_t *statesbackup; static skincolor_t *skincolorsbackup; -static size_t sprnamesbackupsize, statesbackupsize, skincolorsbackupsize; +static size_t sprnamesbackupsize, skincolorsbackupsize; #endif UINT32 P_AllocateMobjinfo(const char *name) @@ -22490,9 +22490,19 @@ UINT32 P_AllocateMobjinfo(const char *name) return nummobjinfo-1; } +UINT32 P_AllocateState(const char *name) +{ + states = Z_Realloc(states, sizeof(*states) * ++numstates, PU_STATIC, NULL); + states[numstates-1] = Z_Malloc(sizeof(state_t), PU_STATIC, NULL); + memset(states[numstates-1], 0, sizeof(state_t)); + states[numstates-1]->num = numstates-1; + states[numstates-1]->name = name; + return numstates-1; +} + UINT32 P_GetMobjinfoIndex(mobjinfo_t *info) { - size_t i; + UINT32 i; for (i = 0; i < nummobjinfo; i++) { if (mobjinfo[i] == info) @@ -22503,7 +22513,7 @@ UINT32 P_GetMobjinfoIndex(mobjinfo_t *info) void P_InitializeTables(void) { - size_t i; + UINT32 i; nummobjinfo = sizeof(startmobjinfo) / sizeof(startmobjinfo[0]); mobjinfo = Z_Malloc(sizeof(*mobjinfo) * nummobjinfo, PU_STATIC, NULL); for (i = 0; i < nummobjinfo; i++) @@ -22511,6 +22521,15 @@ void P_InitializeTables(void) mobjinfo[i] = Z_Malloc(sizeof(mobjinfo_t), PU_STATIC, NULL); memcpy(mobjinfo[i], &startmobjinfo[i], sizeof(mobjinfo_t)); } + + numstates = sizeof(startstates) / sizeof(startstates[0]); + states = Z_Malloc(sizeof(*states) * numstates, PU_STATIC, NULL); + for (i = 0; i < numstates; i++) + { + states[i] = Z_Malloc(sizeof(state_t), PU_STATIC, NULL); + memcpy(states[i], &startstates[i], sizeof(state_t)); + states[i]->num = i; + } } void P_BackupTables(void) @@ -22518,7 +22537,6 @@ void P_BackupTables(void) #ifdef ALLOW_RESETDATA // Allocate buffers in size equal to that of the uncompressed data to begin with sprnamesbackup = Z_Malloc(sizeof(sprnames), PU_STATIC, NULL); - statesbackup = Z_Malloc(sizeof(states), PU_STATIC, NULL); skincolorsbackup = Z_Malloc(sizeof(skincolors), PU_STATIC, NULL); // Sprite names @@ -22528,13 +22546,6 @@ void P_BackupTables(void) else M_Memcpy(sprnamesbackup, sprnames, sizeof(sprnames)); - // States - statesbackupsize = lzf_compress(states, sizeof(states), statesbackup, sizeof(states)); - if (statesbackupsize > 0) - statesbackup = Z_Realloc(statesbackup, statesbackupsize, PU_STATIC, NULL); - else - M_Memcpy(statesbackup, states, sizeof(states)); - //Skincolor info skincolorsbackupsize = lzf_compress(skincolors, sizeof(skincolors), skincolorsbackup, sizeof(skincolors)); if (skincolorsbackupsize > 0) @@ -22550,6 +22561,7 @@ void P_ResetData(INT32 flags) (void)flags; CONS_Alert(CONS_NOTICE, M_GetText("P_ResetData(): not supported in this build.\n")); #else + UINT32 i; if (flags & 1) { if (sprnamesbackupsize > 0) @@ -22560,15 +22572,15 @@ void P_ResetData(INT32 flags) if (flags & 2) { - if (statesbackupsize > 0) - lzf_decompress(statesbackup, statesbackupsize, states, sizeof(states)); - else - M_Memcpy(states, statesbackup, sizeof(statesbackup)); + for (i = 0; i < sizeof(startstates) / sizeof(startstates[0]); i++) + { + memcpy(states[i], &startstates[i], sizeof(state_t)); + states[i]->num = i; + } } if (flags & 4) { - size_t i; for (i = 0; i < sizeof(startmobjinfo) / sizeof(startmobjinfo[0]); i++) { memcpy(mobjinfo[i], &startmobjinfo[i], sizeof(mobjinfo_t)); diff --git a/src/info.h b/src/info.h index 63f48eb8d79106ebe5648b27bc852cad433c6519..0bf4d32541aa1a9e49493092fe336bf32e8537a1 100644 --- a/src/info.h +++ b/src/info.h @@ -574,7 +574,6 @@ extern int actionsoverridden[NUMACTIONS][MAX_ACTION_RECURSION]; // ratio of states to sprites to mobj types is roughly 6 : 1 : 1 #define NUMMOBJFREESLOTS 1024 #define NUMSPRITEFREESLOTS NUMMOBJFREESLOTS -#define NUMSTATEFREESLOTS (NUMMOBJFREESLOTS*8) #define MAXSPRITENAME 64 // Hey, moron! If you change this table, don't forget about sprnames in info.c and the sprite lights in hw_light.c! @@ -4365,14 +4364,12 @@ typedef enum state S_YELLOWBRICKDEBRIS, // for CEZ3 S_NAMECHECK, - - S_FIRSTFREESLOT, - S_LASTFREESLOT = S_FIRSTFREESLOT + NUMSTATEFREESLOTS - 1, - NUMSTATES } statenum_t; typedef struct { + const char *name; + UINT32 num; spritenum_t sprite; UINT32 frame; // we use the upper 16 bits for translucency and other shade effects INT32 tics; @@ -4383,7 +4380,9 @@ typedef struct UINT16 sprite2; } state_t; -extern state_t states[NUMSTATES]; +extern state_t **states; +extern UINT32 numstates; + extern char sprnames[NUMSPRITES + 1][MAXSPRITENAME + 1]; extern char spr2names[NUMPLAYERSPRITES][MAXSPRITENAME + 1]; extern playersprite_t spr2defaults[NUMPLAYERSPRITES]; @@ -5195,9 +5194,10 @@ typedef struct } mobjinfo_t; extern mobjinfo_t **mobjinfo; -extern size_t nummobjinfo; +extern UINT32 nummobjinfo; UINT32 P_AllocateMobjinfo(const char *name); +UINT32 P_AllocateState(const char *name); UINT32 P_GetMobjinfoIndex(mobjinfo_t *info); void P_InitializeTables(void); diff --git a/src/lua_baselib.c b/src/lua_baselib.c index ae6722c64ccbf33550297bcde600f1f1eb2e33be..5fefddb3e35d26109fa829f2475ad8d1d978864a 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -45,7 +45,7 @@ else if (hook_cmd_running)\ return luaL_error(L, "CMD building code should not call this function!"); #define NOSPAWNNULL if (type >= nummobjinfo)\ -return luaL_error(L, "mobj type %d out of range (0 - %zu)", type, nummobjinfo-1);\ +return luaL_error(L, "mobj type %d out of range (0 - %u)", type, nummobjinfo-1);\ else if (type == MT_NULL)\ {\ if (!nospawnnull_seen) {\ @@ -699,8 +699,8 @@ static int lib_pSpawnLockOn(lua_State *L) return LUA_ErrInvalid(L, "mobj_t"); if (!player) return LUA_ErrInvalid(L, "player_t"); - if (state >= NUMSTATES) - return luaL_error(L, "state %d out of range (0 - %d)", state, NUMSTATES-1); + if (state >= numstates) + return luaL_error(L, "state %d out of range (0 - %d)", state, numstates-1); if (P_IsLocalPlayer(player)) // Only display it on your own view. Don't display it for spectators { mobj_t *visual = P_SpawnMobj(lockon->x, lockon->y, lockon->z, MT_LOCKON); // positioning, flip handled in P_SceneryThinker @@ -893,8 +893,8 @@ static int lib_pSpawnParaloop(lua_State *L) NOHUD INLEVEL NOSPAWNNULL - if (nstate >= NUMSTATES) - return luaL_error(L, "state %d out of range (0 - %d)", nstate, NUMSTATES-1); + if (nstate >= numstates) + return luaL_error(L, "state %d out of range (0 - %d)", nstate, numstates-1); P_SpawnParaloop(x, y, z, radius, number, type, nstate, rotangle, spawncenter); P_SetTarget(&tmthing, ptmthing); return 0; @@ -2480,8 +2480,8 @@ static int lib_pSetMobjStateNF(lua_State *L) INLEVEL if (!mobj) return LUA_ErrInvalid(L, "mobj_t"); - if (state >= NUMSTATES) - return luaL_error(L, "state %d out of range (0 - %d)", state, NUMSTATES-1); + if (state >= numstates) + return luaL_error(L, "state %d out of range (0 - %d)", state, numstates-1); if (mobj->player && state == S_NULL) return luaL_error(L, "Attempt to remove player mobj with S_NULL."); lua_pushboolean(L, P_SetMobjStateNF(mobj, state)); @@ -3107,31 +3107,31 @@ static int lib_rSkinUsable(lua_State *L) static int lib_pGetStateSprite2(lua_State *L) { - int statenum = luaL_checkinteger(L, 1); - if (statenum < 0 || statenum >= NUMSTATES) - return luaL_error(L, "state %d out of range (0 - %d)", statenum, NUMSTATES-1); + UINT32 statenum = luaL_checkinteger(L, 1); + if (statenum >= numstates) + return luaL_error(L, "state %d out of range (0 - %d)", statenum, numstates-1); - lua_pushinteger(L, P_GetStateSprite2(&states[statenum])); + lua_pushinteger(L, P_GetStateSprite2(states[statenum])); return 1; } static int lib_pGetSprite2StateFrame(lua_State *L) { - int statenum = luaL_checkinteger(L, 1); - if (statenum < 0 || statenum >= NUMSTATES) - return luaL_error(L, "state %d out of range (0 - %d)", statenum, NUMSTATES-1); + UINT32 statenum = luaL_checkinteger(L, 1); + if (statenum >= numstates) + return luaL_error(L, "state %d out of range (0 - %d)", statenum, numstates-1); - lua_pushinteger(L, P_GetSprite2StateFrame(&states[statenum])); + lua_pushinteger(L, P_GetSprite2StateFrame(states[statenum])); return 1; } static int lib_pIsStateSprite2Super(lua_State *L) { - int statenum = luaL_checkinteger(L, 1); - if (statenum < 0 || statenum >= NUMSTATES) - return luaL_error(L, "state %d out of range (0 - %d)", statenum, NUMSTATES-1); + UINT32 statenum = luaL_checkinteger(L, 1); + if (statenum >= numstates) + return luaL_error(L, "state %d out of range (0 - %d)", statenum, numstates-1); - lua_pushboolean(L, P_IsStateSprite2Super(&states[statenum])); + lua_pushboolean(L, P_IsStateSprite2Super(states[statenum])); return 1; } diff --git a/src/lua_infolib.c b/src/lua_infolib.c index a687dad197adc979ba12f296d7ceab786baab581..ea9af1ee35e5152b0b89e1451d02b15a3a83d567 100644 --- a/src/lua_infolib.c +++ b/src/lua_infolib.c @@ -666,9 +666,9 @@ static int lib_getState(lua_State *L) lua_remove(L, 1); i = luaL_checkinteger(L, 1); - if (i >= NUMSTATES) - return luaL_error(L, "states[] index %d out of range (0 - %d)", i, NUMSTATES-1); - LUA_PushUserdata(L, &states[i], META_STATE); + if (i >= numstates) + return luaL_error(L, "states[] index %d out of range (0 - %u)", i, numstates-1); + LUA_PushUserdata(L, states[i], META_STATE); return 1; } @@ -676,12 +676,14 @@ static int lib_getState(lua_State *L) static int lib_setState(lua_State *L) { state_t *state; + UINT32 num; + const char *name; lua_remove(L, 1); // don't care about states[] userdata. { UINT32 i = luaL_checkinteger(L, 1); - if (i >= NUMSTATES) - return luaL_error(L, "states[] index %d out of range (0 - %d)", i, NUMSTATES-1); - state = &states[i]; // get the state to assign to. + if (i >= numstates) + return luaL_error(L, "states[] index %d out of range (0 - %u)", i, numstates-1); + state = states[i]; // get the state to assign to. } luaL_checktype(L, 2, LUA_TTABLE); // check that we've been passed a table. lua_remove(L, 1); // pop state num, don't need it any more. @@ -693,7 +695,11 @@ static int lib_setState(lua_State *L) return luaL_error(L, "Do not alter states in CMD building code!"); // clear the state to start with, in case of missing table elements + num = state->num; + name = state->name; memset(state,0,sizeof(state_t)); + state->num = num; + state->name = name; state->tics = -1; lua_pushnil(L); @@ -754,7 +760,7 @@ static int lib_setState(lua_State *L) state->var2 = (INT32)luaL_checkinteger(L, 3); } else if (i == 7 || (str && fastcmp(str, "nextstate"))) { value = luaL_checkinteger(L, 3); - if (value < S_NULL || value >= NUMSTATES) + if (value < S_NULL || (UINT32)value >= numstates) return luaL_error(L, "nextstate number %d is invalid.", value); state->nextstate = (statenum_t)value; } @@ -763,10 +769,10 @@ static int lib_setState(lua_State *L) return 0; } -// #states -> NUMSTATES +// #states -> numstates static int lib_statelen(lua_State *L) { - lua_pushinteger(L, NUMSTATES); + lua_pushinteger(L, numstates); return 1; } @@ -775,7 +781,7 @@ boolean LUA_SetLuaAction(void *stv, const char *action) state_t *st = (state_t *)stv; I_Assert(st != NULL); - //I_Assert(st >= states && st < states+NUMSTATES); // if you REALLY want to be paranoid... + //I_Assert(st >= states && st < states+numstates); // if you REALLY want to be paranoid... I_Assert(action != NULL); if (!gL) // Lua isn't loaded, @@ -998,7 +1004,7 @@ static int state_set(lua_State *L) st->var2 = (INT32)luaL_checknumber(L, 3); else if (fastcmp(field,"nextstate")) { value = luaL_checkinteger(L, 3); - if (value < S_NULL || value >= NUMSTATES) + if (value < S_NULL || (UINT32)value >= numstates) return luaL_error(L, "nextstate number %d is invalid.", value); st->nextstate = (statenum_t)value; } else @@ -1011,7 +1017,7 @@ static int state_set(lua_State *L) static int state_num(lua_State *L) { state_t *state = *((state_t **)luaL_checkudata(L, 1, META_STATE)); - lua_pushinteger(L, state-states); + lua_pushinteger(L, state->num); return 1; } @@ -1027,7 +1033,7 @@ static int lib_getMobjInfo(lua_State *L) i = luaL_checkinteger(L, 1); if (i >= nummobjinfo) - return luaL_error(L, "mobjinfo[] index %d out of range (0 - %zu)", i, nummobjinfo-1); + return luaL_error(L, "mobjinfo[] index %d out of range (0 - %d)", i, nummobjinfo-1); LUA_PushUserdata(L, mobjinfo[i], META_MOBJINFO); return 1; } @@ -1041,7 +1047,7 @@ static int lib_setMobjInfo(lua_State *L) { UINT32 i = luaL_checkinteger(L, 1); if (i >= nummobjinfo) - return luaL_error(L, "mobjinfo[] index %d out of range (0 - %zu)", i, nummobjinfo-1); + return luaL_error(L, "mobjinfo[] index %d out of range (0 - %d)", i, nummobjinfo-1); info = mobjinfo[i]; // get the mobjinfo to assign to. } luaL_checktype(L, 2, LUA_TTABLE); // check that we've been passed a table. @@ -1074,14 +1080,14 @@ static int lib_setMobjInfo(lua_State *L) info->doomednum = (INT32)luaL_checkinteger(L, 3); else if (i == 2 || (str && fastcmp(str,"spawnstate"))) { value = luaL_checkinteger(L, 3); - if (value < S_NULL || value >= NUMSTATES) + if (value < S_NULL || (UINT32)value >= numstates) return luaL_error(L, "spawnstate number %d is invalid.", value); info->spawnstate = (statenum_t)value; } else if (i == 3 || (str && fastcmp(str,"spawnhealth"))) info->spawnhealth = (INT32)luaL_checkinteger(L, 3); else if (i == 4 || (str && fastcmp(str,"seestate"))) { value = luaL_checkinteger(L, 3); - if (value < S_NULL || value >= NUMSTATES) + if (value < S_NULL || (UINT32)value >= numstates) return luaL_error(L, "seestate number %d is invalid.", value); info->seestate = (statenum_t)value; } else if (i == 5 || (str && fastcmp(str,"seesound"))) { diff --git a/src/lua_mobjlib.c b/src/lua_mobjlib.c index f3d28f4669c4c99818441f24a2b9aab4026d3044..3a768dac802f0b2785484a1866eddadde489528d 100644 --- a/src/lua_mobjlib.c +++ b/src/lua_mobjlib.c @@ -319,7 +319,7 @@ static int mobj_get(lua_State *L) lua_pushinteger(L, mo->tics); break; case mobj_state: // state number, not struct - lua_pushinteger(L, mo->state-states); + lua_pushinteger(L, mo->state->num); break; case mobj_flags: lua_pushinteger(L, mo->flags); @@ -759,7 +759,7 @@ static int mobj_set(lua_State *L) { mobjtype_t newtype = luaL_checkinteger(L, 3); if (newtype >= nummobjinfo) - return luaL_error(L, "mobj.type %d out of range (0 - %zu).", newtype, nummobjinfo-1); + return luaL_error(L, "mobj.type %d out of range (0 - %u).", newtype, nummobjinfo-1); mo->type = newtype; mo->info = mobjinfo[newtype]; P_SetScale(mo, mo->scale, false); diff --git a/src/lua_script.c b/src/lua_script.c index a3702ebedc332e5d853d14f3d334c132cd231562..4b2cfffca092cb4c4d97614eb3c1526c624ae50a 100644 --- a/src/lua_script.c +++ b/src/lua_script.c @@ -1216,7 +1216,7 @@ static UINT8 ArchiveValue(int TABLESINDEX, int myindex) { state_t *state = *((state_t **)lua_touserdata(gL, myindex)); WRITEUINT8(save_p, ARCH_STATE); - WRITEUINT16(save_p, state - states); + WRITEUINT32(save_p, state->num); break; } case ARCH_MOBJ: @@ -1594,7 +1594,7 @@ static UINT8 UnArchiveValue(int TABLESINDEX) LUA_PushUserdata(gL, mobjinfo[READUINT32(save_p)], META_MOBJINFO); break; case ARCH_STATE: - LUA_PushUserdata(gL, &states[READUINT16(save_p)], META_STATE); + LUA_PushUserdata(gL, states[READUINT32(save_p)], META_STATE); break; case ARCH_MOBJ: LUA_PushUserdata(gL, P_FindNewPosition(READUINT32(save_p)), META_MOBJ); diff --git a/src/m_cheat.c b/src/m_cheat.c index f6d160f4eb8eab841b6ed5caed49a98d82809771..12a6f4888c6f7320430e992276d0d00c4eb66394 100644 --- a/src/m_cheat.c +++ b/src/m_cheat.c @@ -999,22 +999,22 @@ static void OP_CycleThings(INT32 amt) (mobjinfo[op_currentthing]->doomednum == -1 || op_currentthing == MT_NIGHTSDRONE || mobjinfo[op_currentthing]->flags & (MF_AMBIENT|MF_NOSECTOR) - || (states[mobjinfo[op_currentthing]->spawnstate].sprite == SPR_NULL - && states[mobjinfo[op_currentthing]->seestate].sprite == SPR_NULL) + || (states[mobjinfo[op_currentthing]->spawnstate]->sprite == SPR_NULL + && states[mobjinfo[op_currentthing]->seestate]->sprite == SPR_NULL) ); amt -= add; } // HACK, minus has SPR_NULL sprite - if (states[mobjinfo[op_currentthing]->spawnstate].sprite == SPR_NULL) + if (states[mobjinfo[op_currentthing]->spawnstate]->sprite == SPR_NULL) { - states[S_OBJPLACE_DUMMY].sprite = states[mobjinfo[op_currentthing]->seestate].sprite; - states[S_OBJPLACE_DUMMY].frame = states[mobjinfo[op_currentthing]->seestate].frame; + states[S_OBJPLACE_DUMMY]->sprite = states[mobjinfo[op_currentthing]->seestate]->sprite; + states[S_OBJPLACE_DUMMY]->frame = states[mobjinfo[op_currentthing]->seestate]->frame; } else { - states[S_OBJPLACE_DUMMY].sprite = states[mobjinfo[op_currentthing]->spawnstate].sprite; - states[S_OBJPLACE_DUMMY].frame = states[mobjinfo[op_currentthing]->spawnstate].frame; + states[S_OBJPLACE_DUMMY]->sprite = states[mobjinfo[op_currentthing]->spawnstate]->sprite; + states[S_OBJPLACE_DUMMY]->frame = states[mobjinfo[op_currentthing]->spawnstate]->frame; } if (players[0].mo->eflags & MFE_VERTICALFLIP) // correct z when flipped players[0].mo->z += players[0].mo->height - FixedMul(mobjinfo[op_currentthing]->height, players[0].mo->scale); @@ -1522,7 +1522,7 @@ void Command_ObjectPlace_f(void) P_RestoreMusic(&players[0]); } else - op_oldstate = (statenum_t)(players[0].mo->state-states); + op_oldstate = (statenum_t)(players[0].mo->state->num); } if (thingarg < COM_Argc()) @@ -1557,7 +1557,7 @@ void Command_ObjectPlace_f(void) return; // If still in dummy state, get out of it. - if (players[0].mo->state == &states[S_OBJPLACE_DUMMY]) + if (players[0].mo->state == states[S_OBJPLACE_DUMMY]) P_SetMobjState(players[0].mo, op_oldstate); // Reset everything back to how it was before we entered objectplace. diff --git a/src/m_menu.c b/src/m_menu.c index 57543842db88e63836d8987336c39c3ae61b9f57..5928787e38c9818725963b9089e7d47ce7a065c7 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -12094,7 +12094,7 @@ static void M_SetPlayerSetupFollowItem(void) { case MT_TAILSOVERLAY: { - const state_t *state = &states[S_TAILSOVERLAY_MINUS30DEGREES]; + const state_t *state = states[S_TAILSOVERLAY_MINUS30DEGREES]; const UINT8 sprite2 = P_GetSkinSprite2(skins[setupm_fakeskin], state->frame & FF_FRAMEMASK, NULL); if (state->sprite != SPR_PLAY) @@ -12118,7 +12118,7 @@ static void M_SetPlayerSetupFollowItem(void) } case MT_METALJETFUME: { - const state_t *state = &states[S_JETFUME1]; + const state_t *state = states[S_JETFUME1]; if (!(state->frame & FF_ANIMATE)) break; diff --git a/src/netcode/d_clisrv.c b/src/netcode/d_clisrv.c index 2bf9d2dde7cb60266687282748142af5e676c917..d574e7a1dcd28006af57bc3fd2e0c57373096554 100644 --- a/src/netcode/d_clisrv.c +++ b/src/netcode/d_clisrv.c @@ -458,7 +458,7 @@ static void Got_KickCmd(UINT8 **p, INT32 playernum) if (!players[i].mo->state) CONS_Printf("State: S_NULL\n"); else - CONS_Printf("State: %d\n", (statenum_t)(players[i].mo->state-states)); + CONS_Printf("State: %d\n", (statenum_t)(players[i].mo->state->num)); } else CONS_Printf("Mobj: NULL\n"); @@ -1815,7 +1815,7 @@ INT16 Consistancy(void) ret += mo->target->flags; ret -= mo->target->flags2; ret += mo->target->eflags; - ret -= mo->target->state - states; + ret -= mo->target->state->num; ret += mo->target->tics; ret -= mo->target->sprite; ret += mo->target->frame; @@ -1835,14 +1835,14 @@ INT16 Consistancy(void) ret += mo->tracer->flags; ret -= mo->tracer->flags2; ret += mo->tracer->eflags; - ret -= mo->tracer->state - states; + ret -= mo->tracer->state->num; ret += mo->tracer->tics; ret -= mo->tracer->sprite; ret += mo->tracer->frame; } else ret ^= 0xAAAA; - ret -= mo->state - states; + ret -= mo->state->num; ret += mo->tics; ret -= mo->sprite; ret += mo->frame; diff --git a/src/p_enemy.c b/src/p_enemy.c index 199de4bc15789cb84aa30b88b561b14d95341a36..29348a0f4c9c3d2597a6d671669ab054254343d6 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -2148,7 +2148,7 @@ void A_CrushclawAim(mobj_t *actor) crab->y + P_ReturnThrustY(actor, actor->angle, locvar1*crab->scale), crab->z + locvar2*crab->scale); - if (!crab->target || !crab->info->missilestate || (statenum_t)(crab->state-states) == crab->info->missilestate) + if (!crab->target || !crab->info->missilestate || (statenum_t)(crab->state->num) == crab->info->missilestate) return; if (((ang + ANG1) < ANG2) || P_AproxDistance(crab->x - crab->target->x, crab->y - crab->target->y) < 333*crab->scale) @@ -2379,7 +2379,7 @@ static void P_VultureHoverParticle(mobj_t *actor) dust = P_SpawnMobj(px, py, pz, MT_ARIDDUST); if (!P_MobjWasRemoved(dust)) { - P_SetMobjState(dust, (statenum_t)(dust->state - states + P_RandomRange(0, 2))); + P_SetMobjState(dust, (statenum_t)(dust->state->num + P_RandomRange(0, 2))); P_Thrust(dust, angle, FixedDiv(12*FRACUNIT, max(FRACUNIT, fdist/2))); dust->momx += actor->momx; dust->momy += actor->momy; @@ -5017,7 +5017,7 @@ void A_FishJump(mobj_t *actor) } if (actor->momz < 0 - && (actor->state < &states[actor->info->meleestate] || actor->state > &states[actor->info->xdeathstate])) + && (actor->state->num < actor->info->meleestate || actor->state->num > actor->info->xdeathstate)) P_SetMobjStateNF(actor, actor->info->meleestate); } @@ -5261,7 +5261,7 @@ void A_SignSpin(mobj_t *actor) P_SetMobjState(actor, actor->info->deathstate); return; } - if ((statenum_t)(actor->state-states) != actor->info->painstate) + if ((statenum_t)(actor->state->num) != actor->info->painstate) P_SetMobjState(actor, actor->info->painstate); actor->movedir = min((mapangle - actor->angle) >> 2, actor->movedir); } @@ -5337,7 +5337,7 @@ void A_SignPlayer(mobj_t *actor) skin_t *skin = NULL; mobj_t *ov; UINT16 facecolor, signcolor = 0; - UINT32 signframe = states[actor->info->raisestate].frame; + UINT32 signframe = states[actor->info->raisestate]->frame; facecolor = signcolor = (UINT16)locvar2; @@ -5423,14 +5423,14 @@ void A_SignPlayer(mobj_t *actor) { ov->color = facecolor; ov->skin = skin; - if ((statenum_t)(ov->state-states) != actor->info->seestate) + if ((statenum_t)(ov->state->num) != actor->info->seestate) P_SetMobjState(ov, actor->info->seestate); // S_PLAY_SIGN } else // CLEAR! sign { ov->color = SKINCOLOR_NONE; ov->skin = NULL; // needs to be NULL in the case of SF_HIRES characters - if ((statenum_t)(ov->state-states) != actor->info->missilestate) + if ((statenum_t)(ov->state->num) != actor->info->missilestate) P_SetMobjState(ov, actor->info->missilestate); // S_CLEARSIGN } } @@ -5438,7 +5438,7 @@ void A_SignPlayer(mobj_t *actor) { ov->color = SKINCOLOR_NONE; ov->skin = NULL; - if ((statenum_t)(ov->state-states) != actor->info->meleestate) + if ((statenum_t)(ov->state->num) != actor->info->meleestate) P_SetMobjState(ov, actor->info->meleestate); // S_EGGMANSIGN if (!signcolor) signcolor = SKINCOLOR_CARBON; @@ -5954,7 +5954,7 @@ void A_ChickenCheck(mobj_t *actor) || (actor->eflags & MFE_VERTICALFLIP && actor->z + actor->height >= actor->ceilingz)) { if (!(actor->momx || actor->momy || actor->momz) - && actor->state > &states[actor->info->seestate]) + && actor->state > states[actor->info->seestate]) { A_Chase(actor); P_SetMobjState(actor, actor->info->seestate); @@ -6378,7 +6378,7 @@ void A_UnidusBall(mobj_t *actor) else if (locvar1 == 2) { boolean skull = (actor->target->flags2 & MF2_SKULLFLY) == MF2_SKULLFLY; - if (actor->target->state == &states[actor->target->info->painstate]) + if (actor->target->state == states[actor->target->info->painstate]) { P_KillMobj(actor, NULL, NULL, 0); return; @@ -6596,7 +6596,7 @@ void A_CrawlaCommanderThink(mobj_t *actor) if (P_LookForPlayers(actor, true, false, 0)) return; // got a new target - if (actor->state != &states[actor->info->spawnstate]) + if (actor->state != states[actor->info->spawnstate]) P_SetMobjState(actor, actor->info->spawnstate); return; } @@ -7496,7 +7496,7 @@ void A_Boss2Pogo(mobj_t *actor) if (actor->z <= actor->floorz + FixedMul(8*FRACUNIT, actor->scale) && actor->momz <= 0) { - if (actor->state != &states[actor->info->raisestate]) + if (actor->state != states[actor->info->raisestate]) P_SetMobjState(actor, actor->info->raisestate); // Pogo Mode } @@ -8402,7 +8402,7 @@ void A_Boss3Path(mobj_t *actor) if (P_MobjWasRemoved(actor)) return; - if (actor->tracer->state == &states[actor->tracer->info->missilestate]) + if (actor->tracer->state == states[actor->tracer->info->missilestate]) P_SetMobjState(actor, actor->info->missilestate); return; } @@ -9724,19 +9724,19 @@ void A_DualAction(mobj_t *actor) CONS_Debug(DBG_GAMELOGIC, "A_DualAction called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2); - var1 = states[locvar1].var1; - var2 = states[locvar1].var2; - astate = &states[locvar1]; + var1 = states[locvar1]->var1; + var2 = states[locvar1]->var2; + astate = states[locvar1]; CONS_Debug(DBG_GAMELOGIC, "A_DualAction: Calling First Action (state %d)...\n", locvar1); - states[locvar1].action.acp1(actor); + states[locvar1]->action.acp1(actor); - var1 = states[locvar2].var1; - var2 = states[locvar2].var2; - astate = &states[locvar2]; + var1 = states[locvar2]->var1; + var2 = states[locvar2]->var2; + astate = states[locvar2]; CONS_Debug(DBG_GAMELOGIC, "A_DualAction: Calling Second Action (state %d)...\n", locvar2); - states[locvar2].action.acp1(actor); + states[locvar2]->action.acp1(actor); } // Function: A_RemoteAction @@ -9813,13 +9813,13 @@ void A_RemoteAction(mobj_t *actor) if (actor->target) { // Steal the var1 and var2 from "locvar2" - var1 = states[locvar2].var1; - var2 = states[locvar2].var2; - astate = &states[locvar2]; + var1 = states[locvar2]->var1; + var2 = states[locvar2]->var2; + astate = states[locvar2]; CONS_Debug(DBG_GAMELOGIC, "A_RemoteAction: Calling action on %p\n" "var1 is %d\nvar2 is %d\n", actor->target, var1, var2); - states[locvar2].action.acp1(actor->target); + states[locvar2]->action.acp1(actor->target); } P_SetTarget(&actor->target, originaltarget); // Restore the original target. @@ -10959,13 +10959,13 @@ void A_CusValAction(mobj_t *actor) if (locvar2 == 5) { - var1 = states[locvar1].var1; + var1 = states[locvar1]->var1; var2 = (INT32)actor->cvmem; } else if (locvar2 == 4) { var1 = (INT32)actor->cvmem; - var2 = states[locvar1].var2; + var2 = states[locvar1]->var2; } else if (locvar2 == 3) { @@ -10979,17 +10979,17 @@ void A_CusValAction(mobj_t *actor) } else if (locvar2 == 1) { - var1 = states[locvar1].var1; + var1 = states[locvar1]->var1; var2 = (INT32)actor->cusval; } else { var1 = (INT32)actor->cusval; - var2 = states[locvar1].var2; + var2 = states[locvar1]->var2; } - astate = &states[locvar1]; - states[locvar1].action.acp1(actor); + astate = states[locvar1]; + states[locvar1]->action.acp1(actor); } // Function: A_ForceStop @@ -11098,31 +11098,31 @@ void A_InfoState(mobj_t *actor) switch (locvar1) { case 0: - if (actor->state != &states[actor->info->spawnstate]) + if (actor->state != states[actor->info->spawnstate]) P_SetMobjState(actor, actor->info->spawnstate); break; case 1: - if (actor->state != &states[actor->info->seestate]) + if (actor->state != states[actor->info->seestate]) P_SetMobjState(actor, actor->info->seestate); break; case 2: - if (actor->state != &states[actor->info->meleestate]) + if (actor->state != states[actor->info->meleestate]) P_SetMobjState(actor, actor->info->meleestate); break; case 3: - if (actor->state != &states[actor->info->missilestate]) + if (actor->state != states[actor->info->missilestate]) P_SetMobjState(actor, actor->info->missilestate); break; case 4: - if (actor->state != &states[actor->info->deathstate]) + if (actor->state != states[actor->info->deathstate]) P_SetMobjState(actor, actor->info->deathstate); break; case 5: - if (actor->state != &states[actor->info->xdeathstate]) + if (actor->state != states[actor->info->xdeathstate]) P_SetMobjState(actor, actor->info->xdeathstate); break; case 6: - if (actor->state != &states[actor->info->raisestate]) + if (actor->state != states[actor->info->raisestate]) P_SetMobjState(actor, actor->info->raisestate); break; default: @@ -13729,7 +13729,7 @@ void A_Boss5MakeJunk(mobj_t *actor) if (!P_MobjWasRemoved(broked)) { S_StartSound(broked, sfx_alart); - broked->fuse = states[S_FANG_INTRO12].tics+10; + broked->fuse = states[S_FANG_INTRO12]->tics+10; P_SetMobjState(broked, S_ALART1); } } @@ -14025,7 +14025,7 @@ static boolean PIT_TNTExplode(mobj_t *nearby) if (barrel->type == nearby->type) // nearby is also a barrel { - if (nearby->state == &states[nearby->info->spawnstate]) + if (nearby->state == states[nearby->info->spawnstate]) { if (barrel->info->attacksound) S_StartSound(nearby, barrel->info->attacksound); diff --git a/src/p_inter.c b/src/p_inter.c index fc137f7d70978c61a5591bd87582c810b3fe6ea7..30a02120539672740164c63939d829d501903dfe 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -412,13 +412,13 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) { if (special->type == MT_STEAM) { - if (player && player->mo->state == &states[player->mo->info->painstate]) // can't use gas jets when player is in pain! + if (player && player->mo->state == states[player->mo->info->painstate]) // can't use gas jets when player is in pain! return; fixed_t speed = special->info->mass; // gas jets use this for the vertical thrust SINT8 flipval = P_MobjFlip(special); // virtually everything here centers around the thruster's gravity, not the object's! - if (special->state != &states[S_STEAM1]) // Only when it bursts + if (special->state != states[S_STEAM1]) // Only when it bursts return; toucher->eflags |= MFE_SPRUNG; @@ -497,17 +497,17 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) && !(player->charability == CA_TWINSPIN && player->panim == PA_ABILITY) && !(player->charability2 == CA2_MELEE && player->panim == PA_ABILITY2)) { - if ((special->state == &states[S_FANG_BOUNCE3] - || special->state == &states[S_FANG_BOUNCE4] - || special->state == &states[S_FANG_PINCHBOUNCE3] - || special->state == &states[S_FANG_PINCHBOUNCE4]) + if ((special->state == states[S_FANG_BOUNCE3] + || special->state == states[S_FANG_BOUNCE4] + || special->state == states[S_FANG_PINCHBOUNCE3] + || special->state == states[S_FANG_PINCHBOUNCE4]) && P_MobjFlip(special)*((special->z + special->height/2) - (toucher->z + toucher->height/2)) > (toucher->height/2)) { P_DamageMobj(toucher, special, special, 1, 0); P_SetTarget(&special->tracer, toucher); - if (special->state == &states[S_FANG_PINCHBOUNCE3] - || special->state == &states[S_FANG_PINCHBOUNCE4]) + if (special->state == states[S_FANG_PINCHBOUNCE3] + || special->state == states[S_FANG_PINCHBOUNCE4]) P_SetMobjState(special, S_FANG_PINCHPATHINGSTART2); else { @@ -632,8 +632,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (special->type == MT_BLUESPHERE || special->type == MT_FLINGBLUESPHERE) { special->destscale = ((player->powers[pw_carry] == CR_NIGHTSMODE) ? 4 : 2)*special->scale; - if (states[special->info->deathstate].tics > 0) - special->scalespeed = FixedDiv(FixedDiv(special->destscale, special->scale), states[special->info->deathstate].tics<<FRACBITS); + if (states[special->info->deathstate]->tics > 0) + special->scalespeed = FixedDiv(FixedDiv(special->destscale, special->scale), states[special->info->deathstate]->tics<<FRACBITS); else special->scalespeed = 4*FRACUNIT/5; } @@ -1620,7 +1620,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) P_ResetPlayer(player); - if (special->target && special->target->state == &states[S_BLACKEGG_SHOOT1]) + if (special->target && special->target->state == states[S_BLACKEGG_SHOOT1]) { if (special->target->health <= 2 && P_RandomChance(FRACUNIT/2)) P_SetMobjState(special->target, special->target->info->missilestate); @@ -1671,7 +1671,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) return; case MT_EGGROBO1: - if (special->state == &states[special->info->deathstate]) + if (special->state == states[special->info->deathstate]) return; if (P_PlayerInPain(player)) return; @@ -1795,7 +1795,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) return; if (mariomode) return; - if (special->state-states != S_EXTRALARGEBUBBLE) + if (special->state->num != S_EXTRALARGEBUBBLE) return; // Don't grab the bubble during its spawn animation else if (toucher->eflags & MFE_VERTICALFLIP) { @@ -1819,7 +1819,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (!player->climbing) { - if (player->bot && player->bot != BOT_MPAI && toucher->state-states != S_PLAY_GASP) + if (player->bot && player->bot != BOT_MPAI && toucher->state->num != S_PLAY_GASP) S_StartSound(toucher, special->info->deathsound); // Force it to play a sound for bots P_SetMobjState(toucher, S_PLAY_GASP); P_ResetPlayer(player); @@ -1833,7 +1833,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) break; case MT_WATERDROP: - if (special->state == &states[special->info->spawnstate]) + if (special->state == states[special->info->spawnstate]) { special->z = toucher->z+toucher->height-FixedMul(8*FRACUNIT, special->scale); special->momz = 0; diff --git a/src/p_map.c b/src/p_map.c index 09ae7db2ff11fb5d650c0d540806143ab1a4205b..a0a0fe59cd2c1d56156f38182cf3284a08578637 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -480,7 +480,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object) final = true; springstate: - if ((statenum_t)(spring->state-states) < spring->info->raisestate) + if ((statenum_t)(spring->state->num) < spring->info->raisestate) { P_SetMobjState(spring, spring->info->raisestate); if (object->player && spring->reactiontime && !(spring->info->flags & MF_ENEMY)) @@ -509,7 +509,7 @@ static void P_DoFan(mobj_t *fan, mobj_t *object) fixed_t speed = fan->info->mass; // fans use this for the vertical thrust SINT8 flipval = P_MobjFlip(fan); // virtually everything here centers around the thruster's gravity, not the object's! - if (p && object->state == &states[object->info->painstate]) // can't use fans when player is in pain! + if (p && object->state == states[object->info->painstate]) // can't use fans when player is in pain! return; // is object's top below thruster's position? if not, calculate distance between their bottoms @@ -849,7 +849,7 @@ static unsigned PIT_DoCheckThing(mobj_t *thing) if (thing->type == MT_METALSONIC_BATTLE && (tmthing->flags & MF_MISSILE) && tmthing->target != thing - && thing->state == &states[thing->info->spawnstate]) + && thing->state == states[thing->info->spawnstate]) { blockdist = thing->radius + tmthing->radius; @@ -1113,7 +1113,7 @@ static unsigned PIT_DoCheckThing(mobj_t *thing) { if (!tmthing->momx && !tmthing->momy) return CHECKTHING_IGNORE; - if ((statenum_t)(thing->state-states) >= thing->info->meleestate) + if ((statenum_t)(thing->state->num) >= thing->info->meleestate) return CHECKTHING_IGNORE; if (thing->z > tmthing->z + tmthing->height) return CHECKTHING_NOCOLLIDE; // overhead @@ -1136,7 +1136,7 @@ static unsigned PIT_DoCheckThing(mobj_t *thing) { if (tmthing->extravalue1 <= 0) return CHECKTHING_IGNORE; - if ((statenum_t)(thing->state-states) >= thing->info->meleestate) + if ((statenum_t)(thing->state->num) >= thing->info->meleestate) return CHECKTHING_IGNORE; if (thing->z > tmthing->z + tmthing->height) return CHECKTHING_NOCOLLIDE; // overhead @@ -1287,7 +1287,7 @@ static unsigned PIT_DoCheckThing(mobj_t *thing) && thing->type == MT_BLACKEGGMAN && tmthing->target != thing) { // Not if Brak's already in pain - if (!(thing->state >= &states[S_BLACKEGG_PAIN1] && thing->state <= &states[S_BLACKEGG_PAIN35])) + if (!(thing->state->num >= S_BLACKEGG_PAIN1 && thing->state->num <= S_BLACKEGG_PAIN35)) P_SetMobjState(thing, thing->info->painstate); return CHECKTHING_DONE; } @@ -3040,7 +3040,7 @@ static boolean P_ThingHeightClip(mobj_t *thing) if (tmfloorz > oldfloorz+thing->height) return true; - bouncing = thing->player && thing->state-states == S_PLAY_BOUNCE_LANDING && P_IsObjectOnGround(thing); + bouncing = thing->player && thing->state->num == S_PLAY_BOUNCE_LANDING && P_IsObjectOnGround(thing); if ((onfloor || bouncing) && !(thing->flags & MF_NOGRAVITY) && floormoved) { diff --git a/src/p_mobj.c b/src/p_mobj.c index e6c3c94e9afdee7093604ee811a8162b6c47e0a1..b3cda85213434e1cb73413c084034cff64ae7151 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -59,11 +59,11 @@ void P_RunCachedActions(void) for (ac = actioncachehead.next; ac != &actioncachehead; ac = next) { - var1 = states[ac->statenum].var1; - var2 = states[ac->statenum].var2; - astate = &states[ac->statenum]; + var1 = states[ac->statenum]->var1; + var2 = states[ac->statenum]->var2; + astate = states[ac->statenum]; if (ac->mobj && !P_MobjWasRemoved(ac->mobj)) // just in case... - states[ac->statenum].action.acp1(ac->mobj); + states[ac->statenum]->action.acp1(ac->mobj); next = ac->next; Z_Free(ac); } @@ -207,11 +207,25 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) player_t *player = mobj->player; // remember states seen, to detect cycles: - static statenum_t seenstate_tab[NUMSTATES]; // fast transition table - statenum_t *seenstate = seenstate_tab; // pointer to table + static statenum_t *seenstate_tab; // fast transition table + static UINT32 numseenstate_tab; + statenum_t *seenstate; // pointer to table static INT32 recursion; // detects recursion statenum_t i; // initial state - statenum_t tempstate[NUMSTATES]; // for use with recursion + static statenum_t *tempstate; // for use with recursion + + if (tempstate == NULL || seenstate_tab == NULL || numseenstate_tab != numstates) + { + Z_Free(seenstate_tab); + Z_Malloc(sizeof(*seenstate_tab) * numstates, PU_CACHE_UNLOCKED, &seenstate_tab); + memset(seenstate_tab, 0, sizeof(*seenstate_tab) * numstates); + + Z_Free(tempstate); + Z_Malloc(sizeof(*tempstate) * numstates, PU_CACHE_UNLOCKED, &tempstate); + numseenstate_tab = numstates; + } + + seenstate = seenstate_tab; #ifdef PARANOIA if (player == NULL) @@ -239,15 +253,15 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) { if (state == S_PLAY_JUMP) { - if (player->mo->state-states == S_PLAY_WALK) + if (player->mo->state->num == S_PLAY_WALK) return P_SetPlayerMobjState(mobj, S_PLAY_FLOAT); return true; } - else if (player->mo->state-states == S_PLAY_FLOAT && state == S_PLAY_STND) + else if (player->mo->state->num == S_PLAY_FLOAT && state == S_PLAY_STND) return true; } // You were in pain state after taking a hit, and you're moving out of pain state now? - else if (mobj->state == &states[mobj->info->painstate] && player->powers[pw_flashing] == flashingtics && state != mobj->info->painstate) + else if (mobj->state == states[mobj->info->painstate] && player->powers[pw_flashing] == flashingtics && state != mobj->info->painstate) { // Start flashing, since you've landed. player->powers[pw_flashing] = flashingtics-1; @@ -323,7 +337,7 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) } if (recursion++) // if recursion detected, - memset(seenstate = tempstate, 0, sizeof tempstate); // clear state table + memset(seenstate = tempstate, 0, sizeof(*tempstate) * numstates); // clear state table i = state; @@ -336,7 +350,7 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) return false; } - st = &states[state]; + st = states[state]; mobj->state = st; mobj->tics = st->tics; @@ -456,7 +470,7 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) { if (st->frame & FF_SPR2ENDSTATE) // no frame advancement { - if (st->var1 == mobj->state-states) + if ((UINT32)st->var1 == mobj->state->num) frame--; else { @@ -515,23 +529,36 @@ static boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) return true; } - boolean P_SetMobjState(mobj_t *mobj, statenum_t state) { state_t *st; // remember states seen, to detect cycles: - static statenum_t seenstate_tab[NUMSTATES]; // fast transition table - statenum_t *seenstate = seenstate_tab; // pointer to table + static statenum_t *seenstate_tab; // fast transition table + static UINT32 numseenstate_tab; + statenum_t *seenstate; // pointer to table static INT32 recursion; // detects recursion statenum_t i = state; // initial state - statenum_t tempstate[NUMSTATES]; // for use with recursion + static statenum_t *tempstate; // for use with recursion + + if (tempstate == NULL || seenstate_tab == NULL || numseenstate_tab != numstates) + { + Z_Free(seenstate_tab); + Z_Malloc(sizeof(*seenstate_tab) * numstates, PU_CACHE_UNLOCKED, &seenstate_tab); + memset(seenstate_tab, 0, sizeof(*seenstate_tab) * numstates); + + Z_Free(tempstate); + Z_Malloc(sizeof(*tempstate) * numstates, PU_CACHE_UNLOCKED, &tempstate); + numseenstate_tab = numstates; + } + + seenstate = seenstate_tab; if (mobj->player != NULL) return P_SetPlayerMobjState(mobj, state); if (recursion++) // if recursion detected, - memset(seenstate = tempstate, 0, sizeof tempstate); // clear state table + memset(seenstate = tempstate, 0, sizeof(*tempstate) * numstates); // clear state table do { @@ -541,7 +568,7 @@ boolean P_SetMobjState(mobj_t *mobj, statenum_t state) return false; } - st = &states[state]; + st = states[state]; mobj->state = st; mobj->tics = st->tics; @@ -600,7 +627,7 @@ boolean P_SetMobjState(mobj_t *mobj, statenum_t state) { if (st->frame & FF_SPR2ENDSTATE) // no frame advancement { - if (st->var1 == mobj->state-states) + if ((UINT32)st->var1 == mobj->state->num) frame--; else { @@ -671,7 +698,7 @@ boolean P_SetMobjStateNF(mobj_t *mobj, statenum_t state) P_RemoveMobj(mobj); return false; } - st = &states[state]; + st = states[state]; mobj->state = st; mobj->tics = st->tics; mobj->sprite = st->sprite; @@ -690,7 +717,7 @@ static boolean P_SetPrecipMobjState(precipmobj_t *mobj, statenum_t state) P_RemovePrecipMobj(mobj); return false; } - st = &states[state]; + st = states[state]; mobj->state = st; mobj->tics = st->tics; mobj->sprite = st->sprite; @@ -3731,7 +3758,7 @@ static void P_PlayerMobjThinker(mobj_t *mobj) // momentum movement mobj->eflags &= ~MFE_JUSTSTEPPEDDOWN; - if (mobj->state-states == S_PLAY_BOUNCE_LANDING) + if (mobj->state->num == S_PLAY_BOUNCE_LANDING) goto animonly; // no need for checkposition - doesn't move at ALL // Zoom tube @@ -3883,7 +3910,7 @@ void P_RainThinker(precipmobj_t *mobj) { P_CycleStateAnimation((mobj_t *)mobj); - if (mobj->state != &states[S_RAIN1]) + if (mobj->state->num != states[S_RAIN1]->num) { // cycle through states, // calling action functions at transitions @@ -3896,7 +3923,7 @@ void P_RainThinker(precipmobj_t *mobj) if (!P_SetPrecipMobjState(mobj, mobj->state->nextstate)) return; - if (mobj->state != &states[S_RAINRETURN]) + if (mobj->state->num != states[S_RAINRETURN]->num) return; mobj->z = mobj->ceilingz; @@ -4098,8 +4125,8 @@ static void P_GenericBossThinker(mobj_t *mobj) // Don't call A_ functions here, let the SOC do the AI! - if (mobj->state == &states[mobj->info->meleestate] - || (mobj->state == &states[mobj->info->missilestate] + if (mobj->state == states[mobj->info->meleestate] + || (mobj->state == states[mobj->info->missilestate] && mobj->health > mobj->info->damage)) { mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->target->x, mobj->target->y); @@ -4144,11 +4171,11 @@ static void P_Boss1Thinker(mobj_t *mobj) if (dist > 0 && P_MobjFlip(mobj)*mobj->momz > 0) mobj->momz = FixedMul(mobj->momz, FRACUNIT - (dist>>12)); } - else if (mobj->state != &states[mobj->info->spawnstate] && mobj->health > 0 && mobj->flags & MF_FLOAT) + else if (mobj->state != states[mobj->info->spawnstate] && mobj->health > 0 && mobj->flags & MF_FLOAT) mobj->momz = FixedMul(mobj->momz,7*FRACUNIT/8); - if (mobj->state == &states[mobj->info->meleestate] - || (mobj->state == &states[mobj->info->missilestate] + if (mobj->state == states[mobj->info->meleestate] + || (mobj->state == states[mobj->info->missilestate] && mobj->health > mobj->info->damage)) { mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->target->x, mobj->target->y); @@ -4183,9 +4210,9 @@ static void P_Boss2Thinker(mobj_t *mobj) return; } - if (mobj->state == &states[mobj->info->spawnstate] && mobj->health > mobj->info->damage) + if (mobj->state == states[mobj->info->spawnstate] && mobj->health > mobj->info->damage) A_Boss2Chase(mobj); - else if (mobj->health > 0 && mobj->state != &states[mobj->info->painstate] && mobj->state != &states[mobjinfo[mobj->info->missilestate]->raisestate]) + else if (mobj->health > 0 && mobj->state != states[mobj->info->painstate] && mobj->state != states[mobjinfo[mobj->info->missilestate]->raisestate]) { mobj->flags &= ~MF_NOGRAVITY; A_Boss2Pogo(mobj); @@ -4205,7 +4232,7 @@ static void P_Boss2Thinker(mobj_t *mobj) // static void P_Boss3Thinker(mobj_t *mobj) { - if (mobj->state == &states[mobj->info->spawnstate]) + if (mobj->state == states[mobj->info->spawnstate]) mobj->flags2 &= ~MF2_FRET; if (mobj->flags2 & MF2_FRET) @@ -4218,7 +4245,7 @@ static void P_Boss3Thinker(mobj_t *mobj) mobj->movecount = 0; mobj->reactiontime = 0; - if (mobj->state < &states[mobj->info->xdeathstate]) + if (mobj->state < states[mobj->info->xdeathstate]) return; if (mobj->threshold == -1) @@ -4245,7 +4272,7 @@ static void P_Boss3Thinker(mobj_t *mobj) if (mobj->threshold >= curpath) mobj->threshold++; - if (mobj->state != &states[mobj->info->spawnstate]) + if (mobj->state != states[mobj->info->spawnstate]) P_SetMobjState(mobj, mobj->info->spawnstate); mobj->reactiontime--; @@ -4332,7 +4359,7 @@ static void P_Boss3Thinker(mobj_t *mobj) else if (mobj->movecount) // Firing mode { // Check if the attack animation is running. If not, play it. - if (mobj->state < &states[mobj->info->missilestate] || mobj->state > &states[mobj->info->raisestate]) + if (mobj->state < states[mobj->info->missilestate] || mobj->state > states[mobj->info->raisestate]) { // look for a new target P_BossTargetPlayer(mobj, true); @@ -4362,7 +4389,7 @@ static void P_Boss3Thinker(mobj_t *mobj) P_SetTarget(&mobj->target, NULL); - if (mobj->state != &states[mobj->info->spawnstate] && mobj->health > 0 + if (mobj->state != states[mobj->info->spawnstate] && mobj->health > 0 && !(mobj->flags2 & MF2_FRET)) P_SetMobjState(mobj, mobj->info->spawnstate); @@ -4633,7 +4660,7 @@ static void P_Boss4Thinker(mobj_t *mobj) { fixed_t movespeed = 0; - if ((statenum_t)(mobj->state-states) == mobj->info->spawnstate) + if ((statenum_t)(mobj->state->num) == mobj->info->spawnstate) { if (mobj->flags2 & MF2_FRET && (mobj->health > mobj->info->damage)) mobj->flags2 &= ~MF2_FRET; @@ -4897,7 +4924,7 @@ static void P_Boss4Thinker(mobj_t *mobj) } // Leave if animating. - if ((statenum_t)(mobj->state-states) != mobj->info->spawnstate) + if ((statenum_t)(mobj->state->num) != mobj->info->spawnstate) return; // Map allows us to get killed despite cage being down? @@ -4943,7 +4970,7 @@ static void P_Boss5Thinker(mobj_t *mobj) } return; } - if (mobj->state == &states[mobj->info->xdeathstate]) + if (mobj->state == states[mobj->info->xdeathstate]) mobj->momz -= (2*FRACUNIT)/3; else if (mobj->tracer && P_AproxDistance(mobj->tracer->x - mobj->x, mobj->tracer->y - mobj->y) < 2*mobj->radius) mobj->flags &= ~MF_NOCLIP; @@ -4951,16 +4978,16 @@ static void P_Boss5Thinker(mobj_t *mobj) else { if (mobj->flags2 & MF2_FRET && (leveltime & 1) - && mobj->state != &states[S_FANG_PAIN1] && mobj->state != &states[S_FANG_PAIN2]) + && mobj->state->num != states[S_FANG_PAIN1]->num && mobj->state->num != states[S_FANG_PAIN2]->num) mobj->flags2 |= MF2_DONTDRAW; else mobj->flags2 &= ~MF2_DONTDRAW; } - if (mobj->state == &states[S_FANG_BOUNCE3] - || mobj->state == &states[S_FANG_BOUNCE4] - || mobj->state == &states[S_FANG_PINCHBOUNCE3] - || mobj->state == &states[S_FANG_PINCHBOUNCE4]) + if (mobj->state->num == states[S_FANG_BOUNCE3]->num + || mobj->state->num == states[S_FANG_BOUNCE4]->num + || mobj->state->num == states[S_FANG_PINCHBOUNCE3]->num + || mobj->state->num == states[S_FANG_PINCHBOUNCE4]->num) { if (P_MobjFlip(mobj)*mobj->momz > 0 && abs(mobj->momx) < FRACUNIT/2 && abs(mobj->momy) < FRACUNIT/2 @@ -5004,19 +5031,19 @@ static void P_Boss7Thinker(mobj_t *mobj) } } - if (mobj->state == &states[S_BLACKEGG_STND] && mobj->tics == mobj->state->tics) + if (mobj->state->num == states[S_BLACKEGG_STND]->num && mobj->tics == mobj->state->tics) { mobj->reactiontime += P_RandomByte(); if (mobj->health <= mobj->info->damage) mobj->reactiontime /= 4; } - else if (mobj->state == &states[S_BLACKEGG_DIE4] && mobj->tics == mobj->state->tics) + else if (mobj->state->num == states[S_BLACKEGG_DIE4]->num && mobj->tics == mobj->state->tics) A_BossDeath(mobj); - else if (mobj->state >= &states[S_BLACKEGG_WALK1] - && mobj->state <= &states[S_BLACKEGG_WALK6]) + else if (mobj->state->num >= states[S_BLACKEGG_WALK1]->num + && mobj->state->num <= states[S_BLACKEGG_WALK6]->num) A_Boss7Chase(mobj); - else if (mobj->state == &states[S_BLACKEGG_PAIN1] && mobj->tics == mobj->state->tics) + else if (mobj->state->num == states[S_BLACKEGG_PAIN1]->num && mobj->tics == mobj->state->tics) { if (mobj->health > 0) mobj->health--; @@ -5041,7 +5068,7 @@ static void P_Boss7Thinker(mobj_t *mobj) } } } - else if (mobj->state == &states[S_BLACKEGG_PAIN35] && mobj->tics == 1) + else if (mobj->state->num == states[S_BLACKEGG_PAIN35]->num && mobj->tics == 1) { if (mobj->health == mobj->info->damage) { @@ -5052,7 +5079,7 @@ static void P_Boss7Thinker(mobj_t *mobj) P_LinedefExecute(mobj->spawnpoint->args[4], mobj, NULL); } } - else if (mobj->state == &states[S_BLACKEGG_HITFACE4] && mobj->tics == mobj->state->tics) + else if (mobj->state->num == states[S_BLACKEGG_HITFACE4]->num && mobj->tics == mobj->state->tics) { // This is where Black Eggman hits his face. // If a player is on top of him, the player gets hurt. @@ -5089,7 +5116,7 @@ static void P_Boss7Thinker(mobj_t *mobj) } } } - else if (mobj->state == &states[S_BLACKEGG_GOOP]) + else if (mobj->state->num == states[S_BLACKEGG_GOOP]->num) { // Lob cannon balls if (mobj->movecount-- <= 0 || !mobj->target) @@ -5108,7 +5135,7 @@ static void P_Boss7Thinker(mobj_t *mobj) S_StartSound(0, sfx_begoop); } } - else if (mobj->state == &states[S_BLACKEGG_SHOOT2]) + else if (mobj->state->num == states[S_BLACKEGG_SHOOT2]->num) { // Chaingun goop mobj_t *missile; @@ -5131,7 +5158,7 @@ static void P_Boss7Thinker(mobj_t *mobj) if (leveltime & 1) S_StartSound(0, sfx_beshot); } - else if (mobj->state == &states[S_BLACKEGG_JUMP1] && mobj->tics == 1) + else if (mobj->state->num == states[S_BLACKEGG_JUMP1]->num && mobj->tics == 1) { mobj_t *hitspot = NULL, *mo2; angle_t an; @@ -5254,7 +5281,7 @@ static void P_Boss7Thinker(mobj_t *mobj) // mobj->momz = 10*FRACUNIT; } - else if (mobj->state == &states[S_BLACKEGG_JUMP2] && mobj->z <= mobj->floorz) + else if (mobj->state->num == states[S_BLACKEGG_JUMP2]->num && mobj->z <= mobj->floorz) { // BANG! onto the ground INT32 i,j; @@ -5313,7 +5340,7 @@ static void P_Boss7Thinker(mobj_t *mobj) P_SetMobjState(mobj, mobj->info->spawnstate); } - else if (mobj->state == &states[mobj->info->deathstate] && mobj->tics == mobj->state->tics) + else if (mobj->state == states[mobj->info->deathstate] && mobj->tics == mobj->state->tics) S_StartSound(0, sfx_bedie1 + (P_RandomFixed() & 1)); } @@ -5333,7 +5360,7 @@ static void P_Boss7Thinker(mobj_t *mobj) // because I am a totally competent programmer who can do shit right. static void P_Boss9Thinker(mobj_t *mobj) { - if ((statenum_t)(mobj->state-states) == mobj->info->spawnstate) + if ((statenum_t)(mobj->state->num) == mobj->info->spawnstate) mobj->flags2 &= ~MF2_FRET; if (!mobj->tracer) @@ -5372,7 +5399,7 @@ static void P_Boss9Thinker(mobj_t *mobj) if (mobj->health <= 0) return; - if ((statenum_t)(mobj->state-states) == mobj->info->meleestate) + if ((statenum_t)(mobj->state->num) == mobj->info->meleestate) { P_InstaThrust(mobj, mobj->angle, -4*FRACUNIT); P_TryMove(mobj, mobj->x+mobj->momx, mobj->y+mobj->momy, true); @@ -5711,7 +5738,7 @@ static void P_Boss9Thinker(mobj_t *mobj) // Pinball attack! if (mobj->movecount == 3 && (mobj->movedir == 0 || mobj->movedir == 2)) { - if ((statenum_t)(mobj->state-states) != mobj->info->seestate) + if ((statenum_t)(mobj->state->num) != mobj->info->seestate) P_SetMobjState(mobj, mobj->info->seestate); if (mobj->movedir == 0) // mobj health == 1 P_InstaThrust(mobj, mobj->angle, 38*FRACUNIT); @@ -5829,7 +5856,7 @@ static void P_Boss9Thinker(mobj_t *mobj) else P_Thrust(mobj, R_PointToAngle2(0, 0, mobj->momx, mobj->momy), -6*FRACUNIT/8); } - if (mobj->state == states+mobj->info->raisestate) + if (mobj->state->num == mobj->info->raisestate) return; } @@ -5981,7 +6008,7 @@ static void P_Boss9Thinker(mobj_t *mobj) } // Idle AI - if (mobj->state == &states[mobj->info->spawnstate]) + if (mobj->state == states[mobj->info->spawnstate]) { fixed_t dist; @@ -7292,7 +7319,7 @@ static void P_RosySceneryThink(mobj_t *mobj) UINT8 i; fixed_t pdist = 1700*mobj->scale, work, actualwork; player_t *player = NULL; - statenum_t stat = (mobj->state - states); + statenum_t stat = (mobj->state->num); for (i = 0; i < MAXPLAYERS; i++) { if (!playeringame[i]) @@ -7606,7 +7633,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) && mobj->target->player && (mobj->target->player->powers[pw_shield] & SH_NOSTACK) == SH_ELEMENTAL */ && mobj->target->player->pflags & PF_SHIELDABILITY - && ((statenum_t)(mobj->tracer->state - states) < mobj->info->raisestate + && ((statenum_t)(mobj->tracer->state->num) < mobj->info->raisestate || (mobj->tracer->state->nextstate < mobj->info->raisestate && mobj->tracer->tics == 1))) { P_SetMobjState(mobj, mobj->info->painstate); @@ -7641,14 +7668,14 @@ static void P_MobjSceneryThink(mobj_t *mobj) case MT_FLAMEAURA_ORB: if (!(mobj->flags2 & MF2_SHIELD)) return; - if ((statenum_t)(mobj->state - states) < mobj->info->painstate) + if ((statenum_t)(mobj->state->num) < mobj->info->painstate) mobj->angle = mobj->target->angle; // implicitly okay because of P_AddShield if (mobj->tracer /* && mobj->target -- the following is implicit by P_AddShield && mobj->target->player && (mobj->target->player->powers[pw_shield] & SH_NOSTACK) == SH_FLAMEAURA */ && mobj->target->player->pflags & PF_SHIELDABILITY - && ((statenum_t)(mobj->tracer->state - states) < mobj->info->raisestate + && ((statenum_t)(mobj->tracer->state->num) < mobj->info->raisestate || (mobj->tracer->state->nextstate < mobj->info->raisestate && mobj->tracer->tics == 1))) { P_SetMobjState(mobj, mobj->info->painstate); @@ -7667,7 +7694,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) ) { if (mobj->target->player->pflags & PF_SHIELDABILITY - && ((statenum_t)(mobj->state - states) < mobj->info->painstate + && ((statenum_t)(mobj->state->num) < mobj->info->painstate || (mobj->state->nextstate < mobj->info->painstate && mobj->tics == 1))) { P_SetMobjState(mobj, mobj->info->painstate); @@ -7676,7 +7703,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) mobj->tracer->tics++; } else if (mobj->target->eflags & MFE_JUSTHITFLOOR - && (statenum_t)(mobj->state - states) == mobj->info->painstate) + && (statenum_t)(mobj->state->num) == mobj->info->painstate) { P_SetMobjState(mobj, mobj->info->painstate + 1); mobj->tics++; @@ -7835,7 +7862,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) case MT_BROKENROBOT: if (((!(mobj->eflags & MFE_VERTICALFLIP) && mobj->z <= P_FloorzAtPos(mobj->x, mobj->y, mobj->z, mobj->height)) || (mobj->eflags & MFE_VERTICALFLIP && mobj->z + mobj->height >= P_CeilingzAtPos(mobj->x, mobj->y, mobj->z, mobj->height))) - && mobj->state != &states[mobj->info->deathstate]) + && mobj->state != states[mobj->info->deathstate]) { P_SetMobjState(mobj, mobj->info->deathstate); return; @@ -8100,7 +8127,7 @@ static boolean P_MobjBossThink(mobj_t *mobj) if (mobj->momz && mobj->z + mobj->momz <= mobj->floorz) { S_StartSound(mobj, sfx_befall); - if (mobj->state != states + S_CYBRAKDEMON_DIE8) + if (mobj->state->num != S_CYBRAKDEMON_DIE8) P_SetMobjState(mobj, S_CYBRAKDEMON_DIE8); } } @@ -8353,7 +8380,7 @@ static void P_ArrowThink(mobj_t *mobj) static void P_BumbleboreThink(mobj_t *mobj) { - statenum_t st = mobj->state - states; + statenum_t st = mobj->state->num; if (st == S_BUMBLEBORE_FLY1 || st == S_BUMBLEBORE_FLY2) { if (!mobj->target) @@ -8396,7 +8423,7 @@ static void P_BumbleboreThink(mobj_t *mobj) static boolean P_HangsterThink(mobj_t *mobj) { - statenum_t st = mobj->state - states; + statenum_t st = mobj->state->num; //ghost image trail when flying down if (st == S_HANGSTER_SWOOP1 || st == S_HANGSTER_SWOOP2) { @@ -8503,7 +8530,7 @@ static boolean P_JetFume1Think(mobj_t *mobj) mobj->x = jetx; mobj->y = jety; mobj->destscale = mobj->target->scale; - if (!(dashmod && mobj->target->state == states + S_METALSONIC_BOUNCE)) + if (!(dashmod && mobj->target->state->num == S_METALSONIC_BOUNCE)) { mobj->destscale = (mobj->destscale + FixedDiv(R_PointToDist2(0, 0, mobj->target->momx, mobj->target->momy), 36*mobj->target->scale))/3; } @@ -8545,7 +8572,7 @@ static boolean P_EggRobo1Think(mobj_t *mobj) mobj->flags2 |= MF2_STRONGBOX; } - if (mobj->state == &states[mobj->info->deathstate]) // todo: make map actually set health to 0 for these + if (mobj->state == states[mobj->info->deathstate]) // todo: make map actually set health to 0 for these { if (mobj->movecount) { @@ -8583,11 +8610,11 @@ static boolean P_EggRobo1Think(mobj_t *mobj) } mobj->z = mobj->threshold + FixedMul(FINESINE(((leveltime + mobj->movecount)*ANG2 >> (ANGLETOFINESHIFT - 2)) & FINEMASK), 8*mobj->scale); - if (mobj->state != &states[mobj->info->meleestate]) + if (mobj->state != states[mobj->info->meleestate]) { boolean didmove = false; - if (mobj->state == &states[mobj->info->spawnstate]) + if (mobj->state == states[mobj->info->spawnstate]) { UINT8 i; fixed_t dist = INT32_MAX; @@ -8805,7 +8832,7 @@ static void P_NiGHTSDroneThink(mobj_t *mobj) // now toggle states! // GOAL mode? - if (sparkle->state >= &states[S_NIGHTSDRONE_SPARKLING1] && sparkle->state <= &states[S_NIGHTSDRONE_SPARKLING16]) + if (sparkle->state->num >= states[S_NIGHTSDRONE_SPARKLING1]->num && sparkle->state->num <= states[S_NIGHTSDRONE_SPARKLING16]->num) { INT32 i; boolean bonustime = false; @@ -8820,9 +8847,9 @@ static void P_NiGHTSDroneThink(mobj_t *mobj) if (!bonustime) { CONS_Debug(DBG_NIGHTSBASIC, "Removing goal post\n"); - if (goalpost && goalpost->state != &states[S_INVISIBLE]) + if (goalpost && goalpost->state->num != states[S_INVISIBLE]->num) P_SetMobjState(goalpost, S_INVISIBLE); - if (sparkle && sparkle->state != &states[S_INVISIBLE]) + if (sparkle && sparkle->state->num != states[S_INVISIBLE]->num) P_SetMobjState(sparkle, S_INVISIBLE); } } @@ -8876,9 +8903,9 @@ static void P_NiGHTSDroneThink(mobj_t *mobj) CONS_Debug(DBG_NIGHTSBASIC, "Adding goal post\n"); if (!(droneman->flags2 & MF2_DONTDRAW)) droneman->flags2 |= MF2_DONTDRAW; - if (goalpost->state == &states[S_INVISIBLE]) + if (goalpost->state->num == states[S_INVISIBLE]->num) P_SetMobjState(goalpost, mobjinfo[goalpost->type]->meleestate); - if (sparkle->state == &states[S_INVISIBLE]) + if (sparkle->state->num == states[S_INVISIBLE]->num) P_SetMobjState(sparkle, mobjinfo[sparkle->type]->meleestate); } else if (!G_IsSpecialStage(gamemap)) @@ -8893,11 +8920,11 @@ static void P_NiGHTSDroneThink(mobj_t *mobj) if (bonustime) { // show droneman if at least one player is non-nights - if (goalpost->state != &states[S_INVISIBLE]) + if (goalpost->state->num != states[S_INVISIBLE]->num) P_SetMobjState(goalpost, S_INVISIBLE); - if (sparkle->state != &states[S_INVISIBLE]) + if (sparkle->state->num != states[S_INVISIBLE]->num) P_SetMobjState(sparkle, S_INVISIBLE); - if (droneman->state != &states[mobjinfo[droneman->type]->meleestate]) + if (droneman->state != states[mobjinfo[droneman->type]->meleestate]) P_SetMobjState(droneman, mobjinfo[droneman->type]->meleestate); if (droneman->flags2 & MF2_DONTDRAW) droneman->flags2 &= ~MF2_DONTDRAW; @@ -9128,12 +9155,12 @@ static void P_PterabyteThink(mobj_t *mobj) if (mobj->reactiontime) return; - if (mobj->state - states == S_PTERABYTE_SWOOPDOWN) + if (mobj->state->num == S_PTERABYTE_SWOOPDOWN) { P_SetMobjState(mobj, S_PTERABYTE_SWOOPUP); mobj->reactiontime = mobj->movecount; } - else if (mobj->state - states == S_PTERABYTE_SWOOPUP) + else if (mobj->state->num == S_PTERABYTE_SWOOPUP) { P_SetMobjState(mobj, S_PTERABYTE_FLY1); mobj->extravalue1++; @@ -9166,7 +9193,7 @@ static void P_DragonbomberThink(mobj_t *mobj) if (mobj->threshold == 0) // if the timer hits 0, look for a mine to drop! { mobj_t *segment = mobj; - while (segment->tracer != NULL && !P_MobjWasRemoved(segment->tracer) && segment->tracer->state == &states[segment->tracer->info->spawnstate]) + while (segment->tracer != NULL && !P_MobjWasRemoved(segment->tracer) && segment->tracer->state == states[segment->tracer->info->spawnstate]) segment = segment->tracer; if (segment != mobj) // found an unactivated segment? { @@ -9206,7 +9233,7 @@ static void P_DragonbomberThink(mobj_t *mobj) } else // Can we find a player to chase? { - if (mobj->tracer == NULL || mobj->tracer->state != &states[mobj->tracer->info->spawnstate] + if (mobj->tracer == NULL || mobj->tracer->state != states[mobj->tracer->info->spawnstate] || !P_LookForPlayers(mobj, true, false, 2000*mobj->scale)) // if not, circle around the spawnpoint { if (!mobj->spawnpoint) // unless we don't have one, in which case uhhh just circle around wherever we currently are I guess?? @@ -9422,7 +9449,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (leveltime % mobj->info->painchance == 0) S_StartSound(mobj, mobj->info->activesound); - if ((statenum_t)(mobj->state - states) != mobj->info->seestate) + if ((statenum_t)(mobj->state->num) != mobj->info->seestate) P_SetMobjState(mobj, mobj->info->seestate); } else @@ -9432,7 +9459,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) mobj->momx >>= 1; mobj->momy >>= 1; mobj->momz >>= 1; - if ((statenum_t)(mobj->state - states) != mobj->info->spawnstate) + if ((statenum_t)(mobj->state->num) != mobj->info->spawnstate) P_SetMobjState(mobj, mobj->info->spawnstate); } } @@ -9493,11 +9520,11 @@ static boolean P_MobjRegularThink(mobj_t *mobj) } break; case MT_SPINCUSHION: - if (mobj->target && mobj->state - states >= S_SPINCUSHION_AIM1 && mobj->state - states <= S_SPINCUSHION_AIM5) + if (mobj->target && mobj->state->num >= S_SPINCUSHION_AIM1 && mobj->state->num <= S_SPINCUSHION_AIM5) mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->target->x, mobj->target->y); break; case MT_CRUSHCLAW: - if (mobj->state - states == S_CRUSHCLAW_STAY && mobj->target) + if (mobj->state->num == S_CRUSHCLAW_STAY && mobj->target) { mobj_t *chain = mobj->target->target; SINT8 sign = ((mobj->tics & 1) ? mobj->tics : -(SINT8)(mobj->tics)); @@ -9511,12 +9538,12 @@ static boolean P_MobjRegularThink(mobj_t *mobj) break; case MT_SMASHINGSPIKEBALL: mobj->momx = mobj->momy = 0; - if (mobj->state - states == S_SMASHSPIKE_FALL && P_IsObjectOnGround(mobj)) + if (mobj->state->num == S_SMASHSPIKE_FALL && P_IsObjectOnGround(mobj)) { P_SetMobjState(mobj, S_SMASHSPIKE_STOMP1); S_StartSound(mobj, sfx_spsmsh); } - else if (mobj->state - states == S_SMASHSPIKE_RISE2 && P_MobjFlip(mobj)*(mobj->z - mobj->movecount) >= 0) + else if (mobj->state->num == S_SMASHSPIKE_RISE2 && P_MobjFlip(mobj)*(mobj->z - mobj->movecount) >= 0) { mobj->momz = 0; P_SetMobjState(mobj, S_SMASHSPIKE_FLOAT); @@ -9555,8 +9582,8 @@ static boolean P_MobjRegularThink(mobj_t *mobj) case MT_EGGMOBILE2_POGO: if (!mobj->target || !mobj->target->health - || mobj->target->state == &states[mobj->target->info->spawnstate] - || mobj->target->state == &states[mobj->target->info->raisestate]) + || mobj->target->state == states[mobj->target->info->spawnstate] + || mobj->target->state == states[mobj->target->info->raisestate]) { P_RemoveMobj(mobj); return false; @@ -9736,7 +9763,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) mobj->momx = FixedMul(mobj->momx, (3*FRACUNIT)/4); // originally 50000 mobj->momy = FixedMul(mobj->momy, (3*FRACUNIT)/4); // same //mobj->momz = mobj->momz+P_MobjFlip(mobj)/3; // no meaningful change in value to be frank - if (mobj->state >= &states[S_SPINDUST_BUBBLE1] && mobj->state <= &states[S_SPINDUST_BUBBLE4]) // bubble dust! + if (mobj->state->num >= states[S_SPINDUST_BUBBLE1]->num && mobj->state->num <= states[S_SPINDUST_BUBBLE4]->num) // bubble dust! { P_MobjCheckWater(mobj); if (mobj->watertop != mobj->subsector->sector->floorheight - 1000*FRACUNIT @@ -10083,13 +10110,13 @@ static boolean P_FuseThink(mobj_t *mobj) P_RemoveMobj(mobj); return false; case MT_LAVAFALL: - if (mobj->state - states == S_LAVAFALL_DORMANT) + if (mobj->state->num == S_LAVAFALL_DORMANT) { mobj->fuse = 30; P_SetMobjState(mobj, S_LAVAFALL_TELL); S_StartSound(mobj, mobj->info->seesound); } - else if (mobj->state - states == S_LAVAFALL_TELL) + else if (mobj->state->num == S_LAVAFALL_TELL) { mobj->fuse = 40; P_SetMobjState(mobj, S_LAVAFALL_SHOOT); @@ -10663,7 +10690,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type, ...) // do not set the state with P_SetMobjState, // because action routines can not be called yet - st = &states[info->spawnstate]; + st = states[info->spawnstate]; mobj->state = st; mobj->tics = st->tics; @@ -11101,7 +11128,7 @@ static precipmobj_t *P_SpawnPrecipMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype // do not set the state with P_SetMobjState, // because action routines can not be called yet - st = &states[mobjinfo[type]->spawnstate]; + st = states[mobjinfo[type]->spawnstate]; mobj->state = st; mobj->tics = st->tics; diff --git a/src/p_saveg.c b/src/p_saveg.c index 5d9b3ec9020c1df0a309792dafc17c182b53790f..906fc17b964f8b49b3ebd4f8dc6ba767620f4eec 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -1878,7 +1878,7 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type) diff |= MD_HEALTH; if (mobj->reactiontime != mobj->info->reactiontime) diff |= MD_RTIME; - if ((statenum_t)(mobj->state-states) != mobj->info->spawnstate) + if ((statenum_t)(mobj->state->num) != mobj->info->spawnstate) diff |= MD_STATE; if (mobj->tics != mobj->state->tics) diff |= MD_TICS; @@ -2062,7 +2062,7 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type) if (diff & MD_RTIME) WRITEINT32(save_p, mobj->reactiontime); if (diff & MD_STATE) - WRITEUINT16(save_p, mobj->state-states); + WRITEUINT32(save_p, mobj->state->num); if (diff & MD_TICS) WRITEINT32(save_p, mobj->tics); if (diff & MD_SPRITE) { @@ -3088,9 +3088,9 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker) mobj->reactiontime = mobj->info->reactiontime; if (diff & MD_STATE) - mobj->state = &states[READUINT16(save_p)]; + mobj->state = states[READUINT32(save_p)]; else - mobj->state = &states[mobj->info->spawnstate]; + mobj->state = states[mobj->info->spawnstate]; if (diff & MD_TICS) mobj->tics = READINT32(save_p); else diff --git a/src/p_spec.c b/src/p_spec.c index 67c33f203101fb99c257311fa0807f0657125e7d..28f9859ab1c44d77400fda0ee64f59f85f8d19c6 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -2056,7 +2056,7 @@ void P_SwitchWeather(INT32 weathernum) if (weathernum == PRECIP_RAIN || weathernum == PRECIP_STORM || weathernum == PRECIP_STORM_NOSTRIKES) // Snow To Rain { precipmobj->flags = mobjinfo[MT_RAIN]->flags; - st = &states[mobjinfo[MT_RAIN]->spawnstate]; + st = states[mobjinfo[MT_RAIN]->spawnstate]; precipmobj->state = st; precipmobj->tics = st->tics; precipmobj->sprite = st->sprite; @@ -2082,7 +2082,7 @@ void P_SwitchWeather(INT32 weathernum) else z = 0; - st = &states[mobjinfo[MT_SNOWFLAKE]->spawnstate+z]; + st = states[mobjinfo[MT_SNOWFLAKE]->spawnstate+z]; precipmobj->state = st; precipmobj->tics = st->tics; precipmobj->sprite = st->sprite; @@ -2644,7 +2644,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) if (mo && !mo->player) { statenum_t state = line->stringargs[0] ? get_number(line->stringargs[0]) : S_NULL; - if (state >= 0 && state < NUMSTATES) + if (state >= 0 && state < numstates) P_SetMobjState(mo, state); } break; @@ -2906,7 +2906,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) case 442: // Calls P_SetMobjState on mobjs of a given type in the tagged sectors { const mobjtype_t type = line->stringargs[0] ? get_number(line->stringargs[0]) : MT_NULL; - statenum_t state = NUMSTATES; + statenum_t state = numstates; mobj_t *thing; if (type < 0 || type >= nummobjinfo) @@ -2916,7 +2916,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) { state = line->stringargs[1] ? get_number(line->stringargs[1]) : S_NULL; - if (state < 0 || state >= NUMSTATES) + if (state < 0 || state >= numstates) break; } @@ -3837,7 +3837,7 @@ void P_SetupSignExit(player_t *player) && !((gametyperules & GTR_FRIENDLY) && (netgame || multiplayer) && cv_exitmove.value)) P_SetTarget(&player->mo->target, thing); - if (thing->state != &states[thing->info->spawnstate]) + if (thing->state != states[thing->info->spawnstate]) continue; P_SetTarget(&thing->target, player->mo); @@ -3868,7 +3868,7 @@ void P_SetupSignExit(player_t *player) && !((gametyperules & GTR_FRIENDLY) && (netgame || multiplayer) && cv_exitmove.value)) P_SetTarget(&player->mo->target, thing); - if (thing->state != &states[thing->info->spawnstate]) + if (thing->state != states[thing->info->spawnstate]) continue; P_SetTarget(&thing->target, player->mo); @@ -4677,7 +4677,7 @@ static void P_ProcessZoomTube(player_t *player, mtag_t sectag, boolean end) player->pflags &= ~(PF_JUMPED|PF_NOJUMPDAMAGE|PF_GLIDING|PF_BOUNCING|PF_SLIDING|PF_CANCARRY); player->climbing = 0; - if (player->mo->state-states != S_PLAY_ROLL) + if (player->mo->state->num != S_PLAY_ROLL) { P_SetMobjState(player->mo, S_PLAY_ROLL); S_StartSound(player->mo, sfx_spin); @@ -4758,7 +4758,7 @@ static void P_ProcessRopeHang(player_t *player, mtag_t sectag) if (player->cmd.buttons & BT_SPIN) return; - if (!(player->pflags & PF_SLIDING) && player->mo->state == &states[player->mo->info->painstate]) + if (!(player->pflags & PF_SLIDING) && player->mo->state == states[player->mo->info->painstate]) return; if (player->exiting) @@ -8805,7 +8805,7 @@ void T_Pusher(pusher_t *p) if (thing->player && thing->player->powers[pw_carry] == CR_ROPEHANG) continue; - if (thing->player && (thing->state == &states[thing->info->painstate]) && (thing->player->powers[pw_flashing] > (flashingtics/4)*3 && thing->player->powers[pw_flashing] <= flashingtics)) + if (thing->player && (thing->state == states[thing->info->painstate]) && (thing->player->powers[pw_flashing] > (flashingtics/4)*3 && thing->player->powers[pw_flashing] <= flashingtics)) continue; inFOF = touching = moved = false; diff --git a/src/p_tick.c b/src/p_tick.c index 652b107055b8db11f7d25700c53781bbe301b0c1..88245675e983c7f43d792eaaa4c063b83889dac5 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -154,7 +154,7 @@ void Command_CountMobjs_f(void) i = atoi(COM_Argv(j)); if (i >= nummobjinfo) { - CONS_Printf(M_GetText("Object number %d out of range (max %zu).\n"), i, nummobjinfo-1); + CONS_Printf(M_GetText("Object number %d out of range (max %u).\n"), i, nummobjinfo-1); continue; } diff --git a/src/p_user.c b/src/p_user.c index 445e1246f86374521b2d17cf777a48aabc1b8b6c..503453b6227b8f21564d303c014e62204efee51c 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -977,10 +977,10 @@ pflags_t P_GetJumpFlags(player_t *player) boolean P_PlayerInPain(player_t *player) { // no silly, sliding isn't pain - if (!(player->pflags & PF_SLIDING) && player->mo->state == &states[player->mo->info->painstate] && player->powers[pw_flashing]) + if (!(player->pflags & PF_SLIDING) && player->mo->state == states[player->mo->info->painstate] && player->powers[pw_flashing]) return true; - if (player->mo->state == &states[S_PLAY_STUN]) + if (player->mo->state == states[S_PLAY_STUN]) return true; return false; @@ -1408,7 +1408,7 @@ void P_DoSuperDetransformation(player_t *player) player->powers[pw_flashing] = flashingtics-1; if (player->mo->sprite2 & SPR2F_SUPER) - P_SetMobjState(player->mo, player->mo->state-states); + P_SetMobjState(player->mo, player->mo->state->num); // Inform the netgame that the champion has fallen in the heat of battle. if (!G_CoopGametype()) @@ -2380,7 +2380,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) if (player->pflags & PF_BOUNCING) { - if (dorollstuff && player->mo->state-states != S_PLAY_BOUNCE_LANDING) + if (dorollstuff && player->mo->state->num != S_PLAY_BOUNCE_LANDING) { P_MobjCheckWater(player->mo); player->mo->momz *= -1; @@ -2417,9 +2417,9 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) player->pflags &= ~PF_GLIDING; } else if (player->charability == CA_GLIDEANDCLIMB && player->pflags & PF_THOKKED && !(player->pflags & (PF_JUMPED|PF_SHIELDABILITY)) - && (player->mo->floorz != player->mo->watertop) && player->mo->state-states == S_PLAY_FALL) + && (player->mo->floorz != player->mo->watertop) && player->mo->state->num == S_PLAY_FALL) { - if (player->mo->state-states != S_PLAY_GLIDE_LANDING) + if (player->mo->state->num != S_PLAY_GLIDE_LANDING) { P_ResetPlayer(player); P_SetMobjState(player->mo, S_PLAY_GLIDE_LANDING); @@ -2440,7 +2440,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) else if (player->charability2 == CA2_MELEE && ((player->panim == PA_ABILITY2) || (player->charability == CA_TWINSPIN && player->panim == PA_ABILITY && player->cmd.buttons & (BT_JUMP|BT_SPIN)))) { - if (player->mo->state-states != S_PLAY_MELEE_LANDING) + if (player->mo->state->num != S_PLAY_MELEE_LANDING) { mobjtype_t type = player->revitem; P_SetMobjState(player->mo, S_PLAY_MELEE_LANDING); @@ -2488,7 +2488,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) } } } - else if (player->charability == CA_GLIDEANDCLIMB && (player->mo->state-states == S_PLAY_GLIDE_LANDING)) + else if (player->charability == CA_GLIDEANDCLIMB && (player->mo->state->num == S_PLAY_GLIDE_LANDING)) ; else if (player->charability2 == CA2_GUNSLINGER && player->panim == PA_ABILITY2) ; @@ -2511,10 +2511,10 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) if (player->charflags & SF_DASHMODE && player->dashmode >= DASHMODE_THRESHOLD && player->panim != PA_DASH) P_SetMobjState(player->mo, S_PLAY_DASH); else if (player->speed >= runspd - && (player->panim != PA_RUN || player->mo->state-states == S_PLAY_FLOAT_RUN)) + && (player->panim != PA_RUN || player->mo->state->num == S_PLAY_FLOAT_RUN)) P_SetMobjState(player->mo, S_PLAY_RUN); else if ((player->rmomx || player->rmomy) - && (player->panim != PA_WALK || player->mo->state-states == S_PLAY_FLOAT)) + && (player->panim != PA_WALK || player->mo->state->num == S_PLAY_FLOAT)) P_SetMobjState(player->mo, S_PLAY_WALK); else if (!player->rmomx && !player->rmomy && player->panim != PA_IDLE) P_SetMobjState(player->mo, S_PLAY_STND); @@ -2524,10 +2524,10 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) if (player->charflags & SF_DASHMODE && player->dashmode >= DASHMODE_THRESHOLD && player->panim != PA_DASH) P_SetMobjState(player->mo, S_PLAY_DASH); else if (player->speed >= runspd - && (player->panim != PA_RUN || player->mo->state-states == S_PLAY_FLOAT_RUN)) + && (player->panim != PA_RUN || player->mo->state->num == S_PLAY_FLOAT_RUN)) P_SetMobjState(player->mo, S_PLAY_RUN); else if ((player->mo->momx || player->mo->momy) - && (player->panim != PA_WALK || player->mo->state-states == S_PLAY_FLOAT)) + && (player->panim != PA_WALK || player->mo->state->num == S_PLAY_FLOAT)) P_SetMobjState(player->mo, S_PLAY_WALK); else if (!player->mo->momx && !player->mo->momy && player->panim != PA_IDLE) P_SetMobjState(player->mo, S_PLAY_STND); @@ -3701,9 +3701,9 @@ static void P_DoClimbing(player_t *player) climb = false; if (player->climbing && climb && (player->mo->momx || player->mo->momy || player->mo->momz) - && player->mo->state-states != S_PLAY_CLIMB) + && player->mo->state->num != S_PLAY_CLIMB) P_SetMobjState(player->mo, S_PLAY_CLIMB); - else if ((!(player->mo->momx || player->mo->momy || player->mo->momz) || !climb) && player->mo->state-states != S_PLAY_CLING) + else if ((!(player->mo->momx || player->mo->momy || player->mo->momz) || !climb) && player->mo->state->num != S_PLAY_CLING) P_SetMobjState(player->mo, S_PLAY_CLING); if (!floorclimb) @@ -3736,9 +3736,9 @@ static void P_DoClimbing(player_t *player) climb = false; if (player->climbing && climb && (player->mo->momx || player->mo->momy || player->mo->momz) - && player->mo->state-states != S_PLAY_CLIMB) + && player->mo->state->num != S_PLAY_CLIMB) P_SetMobjState(player->mo, S_PLAY_CLIMB); - else if ((!(player->mo->momx || player->mo->momy || player->mo->momz) || !climb) && player->mo->state-states != S_PLAY_CLING) + else if ((!(player->mo->momx || player->mo->momy || player->mo->momz) || !climb) && player->mo->state->num != S_PLAY_CLING) P_SetMobjState(player->mo, S_PLAY_CLING); if (cmd->buttons & BT_SPIN && !(player->pflags & PF_JUMPSTASIS)) @@ -4379,8 +4379,8 @@ static void P_DoSuperStuff(player_t *player) { mobj_t *spark; ticcmd_t *cmd = &player->cmd; - if (player->mo->state >= &states[S_PLAY_SUPER_TRANS1] - && player->mo->state < &states[S_PLAY_SUPER_TRANS6]) + if (player->mo->state->num >= S_PLAY_SUPER_TRANS1 + && player->mo->state->num < S_PLAY_SUPER_TRANS6) return; // don't do anything right now, we're in the middle of transforming! if (player->powers[pw_carry] == CR_NIGHTSMODE) @@ -4401,7 +4401,7 @@ static void P_DoSuperStuff(player_t *player) G_GhostAddColor(GHC_SUPER); - if (player->mo->state == &states[S_PLAY_SUPER_TRANS6]) // stop here for now + if (player->mo->state == states[S_PLAY_SUPER_TRANS6]) // stop here for now return; // Deplete one ring every second while super @@ -4686,7 +4686,7 @@ static void P_DoSpinAbility(player_t *player, ticcmd_t *cmd) { boolean canstand = true; // can we stand on the ground? (mostly relevant for slopes) if (player->pflags & PF_STASIS - && (player->pflags & PF_JUMPSTASIS || player->mo->state-states != S_PLAY_GLIDE_LANDING)) + && (player->pflags & PF_JUMPSTASIS || player->mo->state->num != S_PLAY_GLIDE_LANDING)) return; if (cmd->buttons & BT_SPIN) @@ -4706,7 +4706,7 @@ static void P_DoSpinAbility(player_t *player, ticcmd_t *cmd) { case CA2_SPINDASH: // Spinning and Spindashing // Start revving - if ((cmd->buttons & BT_SPIN) && (player->speed < FixedMul(5<<FRACBITS, player->mo->scale) || player->mo->state - states == S_PLAY_GLIDE_LANDING) + if ((cmd->buttons & BT_SPIN) && (player->speed < FixedMul(5<<FRACBITS, player->mo->scale) || player->mo->state->num == S_PLAY_GLIDE_LANDING) && !player->mo->momz && onground && !(player->pflags & (PF_SPINDOWN|PF_SPINNING)) && canstand) { @@ -4996,7 +4996,7 @@ void P_DoBubbleBounce(player_t *player) // void P_DoAbilityBounce(player_t *player, boolean changemomz) { - if (player->mo->state-states == S_PLAY_BOUNCE_LANDING) + if (player->mo->state->num == S_PLAY_BOUNCE_LANDING) return; if (changemomz) @@ -6072,7 +6072,7 @@ static void P_3dMovement(player_t *player) // When sliding, don't allow forward/back if (player->pflags & PF_SLIDING) cmd->forwardmove = 0; - else if (onground && player->mo->state == states+S_PLAY_PAIN) + else if (onground && player->mo->state->num == S_PLAY_PAIN) P_SetMobjState(player->mo, S_PLAY_WALK); player->aiming = cmd->aiming<<FRACBITS; @@ -6125,7 +6125,7 @@ static void P_3dMovement(player_t *player) { if (player->pflags & PF_BOUNCING) { - if (player->mo->state-states == S_PLAY_BOUNCE_LANDING) + if (player->mo->state->num == S_PLAY_BOUNCE_LANDING) { thrustfactor = player->thrustfactor*8; acceleration = player->accelstart/8 + (FixedDiv(player->speed, player->mo->scale)>>FRACBITS) * player->acceleration/8; @@ -6878,10 +6878,10 @@ static void P_DoNiGHTSCapsule(player_t *player) { if (player->mo->momx || player->mo->momy || player->mo->momz) { - if (player->mo->state != &states[S_PLAY_NIGHTS_PULL]) + if (player->mo->state != states[S_PLAY_NIGHTS_PULL]) P_SetMobjState(player->mo, S_PLAY_NIGHTS_PULL); } - else if (player->mo->state != &states[S_PLAY_NIGHTS_ATTACK]) + else if (player->mo->state != states[S_PLAY_NIGHTS_ATTACK]) { S_StartSound(player->mo, sfx_spin); P_SetMobjState(player->mo, S_PLAY_NIGHTS_ATTACK); @@ -6897,7 +6897,7 @@ static void P_DoNiGHTSCapsule(player_t *player) if (!(player->charflags & SF_NONIGHTSROTATION)) { - if ((player->mo->state == &states[S_PLAY_NIGHTS_PULL]) + if ((player->mo->state == states[S_PLAY_NIGHTS_PULL]) && (player->mo->sprite2 == SPR2_NPUL)) player->mo->spriteroll -= ANG30; else @@ -7213,14 +7213,14 @@ static void P_NiGHTSMovement(player_t *player) && (players[i].capsule && players[i].capsule->reactiontime)) capsule = true; if (!capsule - && !(player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1] - && player->mo->state <= &states[S_PLAY_NIGHTS_TRANS6]) + && !(player->mo->state->num >= S_PLAY_NIGHTS_TRANS1 + && player->mo->state->num <= S_PLAY_NIGHTS_TRANS6) && !player->exiting) player->nightstime--; } else if (!(gametyperules & GTR_RACE) - && !(player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1] - && player->mo->state <= &states[S_PLAY_NIGHTS_TRANS6]) + && !(player->mo->state->num >= S_PLAY_NIGHTS_TRANS1 + && player->mo->state->num <= S_PLAY_NIGHTS_TRANS6) && !(player->capsule && player->capsule->reactiontime) && !player->exiting) player->nightstime--; @@ -7360,8 +7360,8 @@ static void P_NiGHTSMovement(player_t *player) return; } - if (player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1] - && player->mo->state <= &states[S_PLAY_NIGHTS_TRANS6]) + if (player->mo->state->num >= S_PLAY_NIGHTS_TRANS1 + && player->mo->state->num <= S_PLAY_NIGHTS_TRANS6) { player->mo->momx = player->mo->momy = player->mo->momz = 0; player->mo->spriteroll = 0; @@ -7380,14 +7380,14 @@ static void P_NiGHTSMovement(player_t *player) #if 0//def ROTSPRITE if (!(player->charflags & SF_NONIGHTSROTATION) && player->mo->momz) { - if (player->mo->state != &states[S_PLAY_NIGHTS_DRILL]) + if (player->mo->state != states[S_PLAY_NIGHTS_DRILL]) P_SetMobjState(player->mo, S_PLAY_NIGHTS_DRILL); player->mo->spriteroll = ANGLE_90; } else #endif { - if (player->mo->state != &states[S_PLAY_NIGHTS_FLOAT]) + if (player->mo->state != states[S_PLAY_NIGHTS_FLOAT]) P_SetMobjState(player->mo, S_PLAY_NIGHTS_FLOAT); player->drawangle += ANGLE_22h; } @@ -7719,7 +7719,7 @@ static void P_NiGHTSMovement(player_t *player) } } - if (player->mo->state != &states[flystate]) + if (player->mo->state != states[flystate]) P_SetMobjState(player->mo, flystate); if (player->charflags & SF_NONIGHTSROTATION) @@ -8019,7 +8019,7 @@ static void P_SkidStuff(player_t *player) // Spawn a particle every 3 tics. if (!(player->skidtime % 3)) { - if (player->mo->state-states == S_PLAY_GLIDE_LANDING) + if (player->mo->state->num == S_PLAY_GLIDE_LANDING) P_SpawnSkidDust(player, player->mo->radius, true); else P_SpawnSkidDust(player, 0, false); @@ -8039,7 +8039,7 @@ static void P_SkidStuff(player_t *player) // If your push angle is more than this close to a full 180 degrees, trigger a skid. if (dang > ANGLE_157h) { - if (player->mo->state-states != S_PLAY_SKID) + if (player->mo->state->num != S_PLAY_SKID) P_SetMobjState(player->mo, S_PLAY_SKID); player->mo->tics = player->skidtime = (player->mo->movefactor == FRACUNIT) ? TICRATE/2 : (FixedDiv(35<<(FRACBITS-1), FixedSqrt(player->mo->movefactor)))>>FRACBITS; S_StartSound(player->mo, sfx_skid); @@ -8064,7 +8064,7 @@ void P_MovePlayer(player_t *player) fixed_t runspd; - if (player->mo->state >= &states[S_PLAY_SUPER_TRANS1] && player->mo->state <= &states[S_PLAY_SUPER_TRANS6]) + if (player->mo->state->num >= S_PLAY_SUPER_TRANS1 && player->mo->state->num <= S_PLAY_SUPER_TRANS6) { player->mo->momx = player->mo->momy = player->mo->momz = 0; return; @@ -8085,7 +8085,7 @@ void P_MovePlayer(player_t *player) if ((player->powers[pw_carry] == CR_BRAKGOOP) || (player->pflags & PF_GLIDING && player->skidtime) || (player->charability2 == CA2_GUNSLINGER && player->panim == PA_ABILITY2) - || (player->charability2 == CA2_MELEE && player->mo->state-states == S_PLAY_MELEE_LANDING)) + || (player->charability2 == CA2_MELEE && player->mo->state->num == S_PLAY_MELEE_LANDING)) player->pflags |= PF_FULLSTASIS; else if (player->powers[pw_nocontrol]) { @@ -8094,7 +8094,7 @@ void P_MovePlayer(player_t *player) player->pflags |= PF_JUMPSTASIS; } - if (player->charability == CA_GLIDEANDCLIMB && player->mo->state-states == S_PLAY_GLIDE_LANDING) + if (player->charability == CA_GLIDEANDCLIMB && player->mo->state->num == S_PLAY_GLIDE_LANDING) { player->pflags |= PF_STASIS; } @@ -8312,9 +8312,9 @@ void P_MovePlayer(player_t *player) // Correct floating when ending up on the ground. if (onground) { - if (player->mo->state-states == S_PLAY_FLOAT) + if (player->mo->state->num == S_PLAY_FLOAT) P_SetMobjState(player->mo, S_PLAY_WALK); - else if (player->mo->state-states == S_PLAY_FLOAT_RUN) + else if (player->mo->state->num == S_PLAY_FLOAT_RUN) P_SetMobjState(player->mo, S_PLAY_RUN); } @@ -8380,7 +8380,7 @@ void P_MovePlayer(player_t *player) fixed_t glidespeed = player->actionspd; fixed_t momx = mo->momx - player->cmomx, momy = mo->momy - player->cmomy; angle_t angle, moveangle = R_PointToAngle2(0, 0, momx, momy); - boolean swimming = mo->state - states == S_PLAY_SWIM; + boolean swimming = mo->state->num == S_PLAY_SWIM; boolean in2d = mo->flags2 & MF2_TWOD || twodlevel; if (player->powers[pw_super] || player->powers[pw_sneakers]) @@ -8527,7 +8527,7 @@ void P_MovePlayer(player_t *player) } } } - else if (player->mo->state-states == S_PLAY_BOUNCE) + else if (player->mo->state->num == S_PLAY_BOUNCE) P_SetMobjState(player->mo, S_PLAY_FALL); // If you're running fast enough, you can create splashes as you run in shallow water. @@ -8571,7 +8571,7 @@ void P_MovePlayer(player_t *player) if (!(player->charability == CA_FLY || player->charability == CA_SWIM)) // why are you flying when you cannot fly?! { if (player->powers[pw_tailsfly] - || player->mo->state-states == S_PLAY_FLY_TIRED) + || player->mo->state->num == S_PLAY_FLY_TIRED) { if (onground) P_SetMobjState(player->mo, S_PLAY_WALK); @@ -8639,11 +8639,11 @@ void P_MovePlayer(player_t *player) else { // Tails-gets-tired Stuff - if (player->panim == PA_ABILITY && player->mo->state-states != S_PLAY_FLY_TIRED) + if (player->panim == PA_ABILITY && player->mo->state->num != S_PLAY_FLY_TIRED) P_SetMobjState(player->mo, S_PLAY_FLY_TIRED); if (player->charability == CA_FLY && (leveltime % 10 == 0) - && player->mo->state-states == S_PLAY_FLY_TIRED + && player->mo->state->num == S_PLAY_FLY_TIRED && !(player->mo->eflags & MFE_UNDERWATER) && !player->spectator) S_StartSound(player->mo, sfx_pudpud); @@ -8741,7 +8741,7 @@ void P_MovePlayer(player_t *player) } // Otherwise, face the direction you're travelling. else if (player->panim == PA_WALK || player->panim == PA_RUN || player->panim == PA_DASH || player->panim == PA_ROLL || player->panim == PA_JUMP - || (player->panim == PA_ABILITY && player->mo->state-states == S_PLAY_GLIDE)) + || (player->panim == PA_ABILITY && player->mo->state->num == S_PLAY_GLIDE)) player->mo->angle = R_PointToAngle2(0, 0, player->rmomx, player->rmomy); // Update the local angle control. @@ -9015,7 +9015,7 @@ static void P_DoRopeHang(player_t *player) return; } - if (player->mo->state-states != S_PLAY_RIDE) + if (player->mo->state->num != S_PLAY_RIDE) P_SetMobjState(player->mo, S_PLAY_RIDE); // If not allowed to move, we're done here. @@ -9953,8 +9953,8 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall && !(twodlevel || (mo->flags2 & MF2_TWOD))) sign = mo->target; else if ((player->powers[pw_carry] == CR_NIGHTSMODE) - && !(player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1] - && player->mo->state <= &states[S_PLAY_NIGHTS_TRANS6])) + && !(player->mo->state->num >= S_PLAY_NIGHTS_TRANS1 + && player->mo->state->num <= S_PLAY_NIGHTS_TRANS6)) { P_CalcChasePostImg(player, thiscam); return true; @@ -11271,7 +11271,7 @@ static void P_MinecartThink(player_t *player) } } - if (player->mo->state-states != S_PLAY_STND) + if (player->mo->state->num != S_PLAY_STND) { P_SetMobjState(player->mo, S_PLAY_STND); player->mo->tics = -1; @@ -11349,12 +11349,12 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails) } else if (player->panim == PA_PAIN) backwards /= 16; - else if (player->mo->state-states == S_PLAY_GASP) + else if (player->mo->state->num == S_PLAY_GASP) { backwards /= 16; zoffs += 12*FRACUNIT; } - else if (player->mo->state-states == S_PLAY_EDGE) + else if (player->mo->state->num == S_PLAY_EDGE) { backwards /= 16; zoffs = 3*FRACUNIT; @@ -11383,13 +11383,13 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails) } else if (player->panim == PA_SPRING || player->panim == PA_JUMP) chosenstate = S_TAILSOVERLAY_MINUS60DEGREES; - else if (player->panim == PA_FALL || player->mo->state-states == S_PLAY_RIDE) + else if (player->panim == PA_FALL || player->mo->state->num == S_PLAY_RIDE) chosenstate = S_TAILSOVERLAY_PLUS60DEGREES; else if (player->panim == PA_PAIN) chosenstate = S_TAILSOVERLAY_PAIN; - else if (player->mo->state-states == S_PLAY_GASP) + else if (player->mo->state->num == S_PLAY_GASP) chosenstate = S_TAILSOVERLAY_GASP; - else if (player->mo->state-states == S_PLAY_EDGE) + else if (player->mo->state->num == S_PLAY_EDGE) chosenstate = S_TAILSOVERLAY_EDGE; else if (player->panim == PA_DASH) chosenstate = S_TAILSOVERLAY_DASH; @@ -11397,7 +11397,7 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails) chosenstate = S_TAILSOVERLAY_RUN; else if (player->panim == PA_WALK) { - if (!smilesonground || player->mo->state-states == S_PLAY_SKID) + if (!smilesonground || player->mo->state->num == S_PLAY_SKID) chosenstate = S_TAILSOVERLAY_PLUS30DEGREES; else if (player->speed >= FixedMul(player->runspeed/2, player->mo->scale)) chosenstate = S_TAILSOVERLAY_0DEGREES; @@ -11425,10 +11425,10 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails) } else { - if (tails->state != &states[chosenstate]) + if (tails->state != states[chosenstate]) { - if (states[chosenstate].sprite == SPR_PLAY) - tails->sprite2 = P_GetSkinSprite2(((skin_t *)tails->skin), P_GetStateSprite2(&states[chosenstate]), player); + if (states[chosenstate]->sprite == SPR_PLAY) + tails->sprite2 = P_GetSkinSprite2(((skin_t *)tails->skin), P_GetStateSprite2(states[chosenstate]), player); P_SetMobjState(tails, chosenstate); } } @@ -11439,7 +11439,7 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails) #endif // animation... - if (player->panim == PA_SPRING || player->panim == PA_FALL || player->mo->state-states == S_PLAY_RIDE) + if (player->panim == PA_SPRING || player->panim == PA_FALL || player->mo->state->num == S_PLAY_RIDE) { if (FixedDiv(abs(player->mo->momz), player->mo->scale) < 20<<FRACBITS) ticnum = 2; @@ -11448,7 +11448,7 @@ void P_DoTailsOverlay(player_t *player, mobj_t *tails) } else if (player->panim == PA_PAIN) ticnum = 2; - else if (player->mo->state-states == S_PLAY_GASP) + else if (player->mo->state->num == S_PLAY_GASP) tails->tics = -1; else if (player->mo->sprite2 == SPR2_TIRE) ticnum = (doswim ? 2 : 4); @@ -11522,7 +11522,7 @@ void P_DoMetalJetFume(player_t *player, mobj_t *fume) panim_t panim = player->panim; tic_t dashmode = min(player->dashmode, DASHMODE_MAX); boolean underwater = mo->eflags & MFE_UNDERWATER; - statenum_t stat = fume->state-states; + statenum_t stat = fume->state->num; boolean resetinterp = false; if (panim != PA_WALK && panim != PA_RUN && panim != PA_DASH) // turn invisible when not in a coherent movement state @@ -12211,7 +12211,7 @@ void P_PlayerThink(player_t *player) diff = InvAngle(diff); if (diff > ANG10/2) { - statenum_t stat = player->mo->state-states; + statenum_t stat = player->mo->state->num; if (stat == S_PLAY_WAIT) P_SetMobjState(player->mo, S_PLAY_STND); else if (stat == S_PLAY_STND && player->mo->tics != -1) @@ -12239,7 +12239,7 @@ void P_PlayerThink(player_t *player) // fake skidding! see P_SkidStuff for reference on conditionals else if (!player->skidtime && !(player->mo->eflags & MFE_GOOWATER) && !(player->pflags & (PF_JUMPED|PF_SPINNING|PF_SLIDING)) && !(player->charflags & SF_NOSKID) && P_AproxDistance(player->mo->momx, player->mo->momy) >= FixedMul(player->runspeed, player->mo->scale)) // modified from player->runspeed/2 'cuz the skid was just TOO frequent ngl { - if (player->mo->state-states != S_PLAY_SKID) + if (player->mo->state->num != S_PLAY_SKID) P_SetMobjState(player->mo, S_PLAY_SKID); player->mo->tics = player->skidtime = (player->mo->movefactor == FRACUNIT) ? TICRATE/2 : (FixedDiv(35<<(FRACBITS-1), FixedSqrt(player->mo->movefactor)))>>FRACBITS; @@ -12417,15 +12417,15 @@ void P_PlayerThink(player_t *player) //pw_super acts as a timer now if (player->powers[pw_super] - && (player->mo->state < &states[S_PLAY_SUPER_TRANS1] - || player->mo->state > &states[S_PLAY_SUPER_TRANS6])) + && (player->mo->state->num < S_PLAY_SUPER_TRANS1 + || player->mo->state->num > S_PLAY_SUPER_TRANS6)) player->powers[pw_super]++; if (player->powers[pw_carry] == CR_BRAKGOOP) { if (!player->powers[pw_flashing]) { - if (player->mo->state != &states[S_PLAY_STND]) + if (player->mo->state != states[S_PLAY_STND]) P_SetMobjState(player->mo, S_PLAY_STND); else player->mo->tics = 2; @@ -12850,7 +12850,7 @@ void P_PlayerAfterThink(player_t *player) if (player->powers[pw_carry] == CR_PLAYER) { - if (player->mo->state-states != S_PLAY_RIDE) + if (player->mo->state->num != S_PLAY_RIDE) P_SetMobjState(player->mo, S_PLAY_RIDE); if (tails->player && (tails->skin && ((skin_t *)(tails->skin))->sprites[SPR2_SWIM].numframes) && (tails->eflags & MFE_UNDERWATER)) tails->player->powers[pw_tailsfly] = 0; @@ -12875,7 +12875,7 @@ void P_PlayerAfterThink(player_t *player) player->mo->z = item->z - FixedDiv(player->mo->height, 3*FRACUNIT/2); player->mo->momx = player->mo->momy = player->mo->momz = 0; P_SetThingPosition(player->mo); - if (player->mo->state-states != S_PLAY_RIDE) + if (player->mo->state->num != S_PLAY_RIDE) P_SetMobjState(player->mo, S_PLAY_RIDE); // Controllable missile @@ -13073,7 +13073,7 @@ void P_PlayerAfterThink(player_t *player) ptera->waterbottom >>= 1; ptera->cvmem >>= 1; - if (player->mo->state-states != S_PLAY_FALL) + if (player->mo->state->num != S_PLAY_FALL) P_SetMobjState(player->mo, S_PLAY_FALL); break; @@ -13201,8 +13201,8 @@ boolean P_PlayerFullbright(player_t *player) return (player->powers[pw_super] || ((player->powers[pw_carry] == CR_NIGHTSMODE && (player->charflags & (SF_SUPER|SF_NONIGHTSSUPER)) == SF_SUPER) // Super colours? Super bright! && (player->exiting - || !(player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1] - && player->mo->state < &states[S_PLAY_NIGHTS_TRANS6])))); // Note the < instead of <= + || !(player->mo->state->num >= S_PLAY_NIGHTS_TRANS1 + && player->mo->state->num < S_PLAY_NIGHTS_TRANS6)))); // Note the < instead of <= } #define JUMPCURLED(player) ((player->pflags & PF_JUMPED)\ @@ -13219,9 +13219,9 @@ boolean P_PlayerCanEnterSpinGaps(player_t *player) return false; return ((player->pflags & (PF_SPINNING|PF_SLIDING|PF_GLIDING)) // players who are spinning, sliding, or gliding - || (player->charability == CA_GLIDEANDCLIMB && player->mo->state-states == S_PLAY_GLIDE_LANDING) // players who are landing from a glide + || (player->charability == CA_GLIDEANDCLIMB && player->mo->state->num == S_PLAY_GLIDE_LANDING) // players who are landing from a glide || ((player->charflags & (SF_DASHMODE|SF_MACHINE)) == (SF_DASHMODE|SF_MACHINE) - && player->dashmode >= DASHMODE_THRESHOLD && player->mo->state-states == S_PLAY_DASH) // machine players in dashmode + && player->dashmode >= DASHMODE_THRESHOLD && player->mo->state->num == S_PLAY_DASH) // machine players in dashmode || JUMPCURLED(player)); // players who are jumpcurled, but only if they would normally jump that way } @@ -13229,13 +13229,13 @@ boolean P_PlayerCanEnterSpinGaps(player_t *player) boolean P_PlayerShouldUseSpinHeight(player_t *player) { return ((player->pflags & (PF_SPINNING|PF_SLIDING|PF_GLIDING)) - || (player->mo->state == &states[player->mo->info->painstate]) + || (player->mo->state == states[player->mo->info->painstate]) || (player->panim == PA_ROLL) - || ((player->powers[pw_tailsfly] || (player->charability == CA_FLY && player->mo->state-states == S_PLAY_FLY_TIRED)) + || ((player->powers[pw_tailsfly] || (player->charability == CA_FLY && player->mo->state->num == S_PLAY_FLY_TIRED)) && !(player->charflags & SF_NOJUMPSPIN)) - || (player->charability == CA_GLIDEANDCLIMB && player->mo->state-states == S_PLAY_GLIDE_LANDING) + || (player->charability == CA_GLIDEANDCLIMB && player->mo->state->num == S_PLAY_GLIDE_LANDING) || ((player->charflags & (SF_DASHMODE|SF_MACHINE)) == (SF_DASHMODE|SF_MACHINE) - && player->dashmode >= DASHMODE_THRESHOLD && player->mo->state-states == S_PLAY_DASH) + && player->dashmode >= DASHMODE_THRESHOLD && player->mo->state->num == S_PLAY_DASH) || JUMPCURLED(player)); } diff --git a/src/r_skins.c b/src/r_skins.c index d5531b72fe1b5629d31a389652fdd06a3ebfd43b..c09ff3417f9061f7ed96b70b6083d7c47bb3f219 100644 --- a/src/r_skins.c +++ b/src/r_skins.c @@ -481,7 +481,7 @@ static void SetSkin(player_t *player, INT32 skinnum) P_SetScale(player->mo, player->mo->scale, false); player->mo->radius = radius; - P_SetMobjState(player->mo, player->mo->state-states); // Prevent visual errors when switching between skins with differing number of frames + P_SetMobjState(player->mo, player->mo->state->num); // Prevent visual errors when switching between skins with differing number of frames } } diff --git a/src/r_things.c b/src/r_things.c index c46d8162460e6ac4df025457910f1eae92634628..8f70dfd9942f6c0d3ce2a949f98433a268f9eb77 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -1814,8 +1814,8 @@ static void R_ProjectSprite(mobj_t *thing) if (frame >= sprdef->numframes) { CONS_Alert(CONS_ERROR, M_GetText("R_ProjectSprite: invalid skins[\"%s\"].sprites[SPR2_%s] %sframe %s\n"), ((skin_t *)thing->skin)->name, spr2names[thing->sprite2 & SPR2F_MASK], (thing->sprite2 & SPR2F_SUPER) ? "super ": "", sizeu5(frame)); - thing->sprite = states[S_UNKNOWN].sprite; - thing->frame = states[S_UNKNOWN].frame; + thing->sprite = states[S_UNKNOWN]->sprite; + thing->frame = states[S_UNKNOWN]->frame; sprdef = &sprites[thing->sprite]; #ifdef ROTSPRITE sprinfo = &spriteinfo[thing->sprite]; @@ -1836,11 +1836,11 @@ static void R_ProjectSprite(mobj_t *thing) sizeu1(frame), sizeu2(sprdef->numframes), sprnames[thing->sprite]); if (thing->sprite == thing->state->sprite && thing->frame == thing->state->frame) { - thing->state->sprite = states[S_UNKNOWN].sprite; - thing->state->frame = states[S_UNKNOWN].frame; + thing->state->sprite = states[S_UNKNOWN]->sprite; + thing->state->frame = states[S_UNKNOWN]->frame; } - thing->sprite = states[S_UNKNOWN].sprite; - thing->frame = states[S_UNKNOWN].frame; + thing->sprite = states[S_UNKNOWN]->sprite; + thing->frame = states[S_UNKNOWN]->frame; sprdef = &sprites[thing->sprite]; sprinfo = &spriteinfo[thing->sprite]; frame = thing->frame&FF_FRAMEMASK; diff --git a/src/st_stuff.c b/src/st_stuff.c index 7df6f8848dd80c2cb0eb5839fd0389b7c86a3b8b..11e65c909a96860af3b53da9a76ee9ddfbd2dbd8 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -1939,7 +1939,7 @@ static void ST_drawNiGHTSHUD(void) ST_DrawTopLeftOverlayPatch(16, 8, nbracket); if (G_IsSpecialStage(gamemap)) ST_DrawTopLeftOverlayPatch(24, 16, ( - (stplyr->bonustime && (leveltime & 4) && (states[S_BLUESPHEREBONUS].frame & FF_ANIMATE)) ? nssbon : nsshud)); + (stplyr->bonustime && (leveltime & 4) && (states[S_BLUESPHEREBONUS]->frame & FF_ANIMATE)) ? nssbon : nsshud)); else ST_DrawTopLeftOverlayPatch(24, 16, *(((stplyr->bonustime) ? nbon : nhud)+((leveltime/2)%12)));