// SONIC ROBO BLAST 2 //----------------------------------------------------------------------------- // Copyright (C) 1993-1996 by id Software, Inc. // Copyright (C) 1998-2000 by DooM Legacy Team. // Copyright (C) 1999-2016 by Sonic Team Junior. // // This program is free software distributed under the // terms of the GNU General Public License, version 2. // See the 'LICENSE' file for more details. //----------------------------------------------------------------------------- /// \file info.h /// \brief Thing frame/state LUT #ifndef __INFO__ #define __INFO__ // Needed for action function pointer handling. #include "d_think.h" #include "sounds.h" #include "m_fixed.h" // dehacked.c now has lists for the more named enums! PLEASE keep them up to date! // For great modding!! // IMPORTANT NOTE: If you add/remove from this list of action // functions, don't forget to update them in dehacked.c! void A_Explode(); void A_Pain(); void A_Fall(); void A_MonitorPop(); void A_GoldMonitorPop(); void A_GoldMonitorRestore(); void A_GoldMonitorSparkle(); void A_Look(); void A_Chase(); void A_FaceStabChase(); void A_FaceTarget(); void A_FaceTracer(); void A_Scream(); void A_BossDeath(); void A_CustomPower(); // Use this for a custom power void A_GiveWeapon(); // Gives the player weapon(s) void A_RingBox(); // Obtained Ring Box Tails void A_Invincibility(); // Obtained Invincibility Box void A_SuperSneakers(); // Obtained Super Sneakers Box void A_BunnyHop(); // have bunny hop tails void A_BubbleSpawn(); // Randomly spawn bubbles void A_FanBubbleSpawn(); void A_BubbleRise(); // Bubbles float to surface void A_BubbleCheck(); // Don't draw if not underwater void A_AwardScore(); void A_ExtraLife(); // Extra Life void A_GiveShield(); // Obtained Shield void A_GravityBox(); void A_ScoreRise(); // Rise the score logo void A_ParticleSpawn(); void A_AttractChase(); // Ring Chase void A_DropMine(); // Drop Mine from Skim or Jetty-Syn Bomber void A_FishJump(); // Fish Jump void A_ThrownRing(); // Sparkle trail for red ring void A_SetSolidSteam(); void A_UnsetSolidSteam(); void A_SignPlayer(); void A_OverlayThink(); void A_JetChase(); void A_JetbThink(); // Jetty-Syn Bomber Thinker void A_JetgThink(); // Jetty-Syn Gunner Thinker void A_JetgShoot(); // Jetty-Syn Shoot Function void A_ShootBullet(); // JetgShoot without reactiontime setting void A_MinusDigging(); void A_MinusPopup(); void A_MinusCheck(); void A_ChickenCheck(); void A_MouseThink(); // Mouse Thinker void A_DetonChase(); // Deton Chaser void A_CapeChase(); // Fake little Super Sonic cape void A_RotateSpikeBall(); // Spike ball rotation void A_SlingAppear(); void A_UnidusBall(); void A_RockSpawn(); void A_SetFuse(); void A_CrawlaCommanderThink(); // Crawla Commander void A_SmokeTrailer(); void A_RingExplode(); void A_OldRingExplode(); void A_MixUp(); void A_RecyclePowers(); void A_BossScream(); void A_Boss2TakeDamage(); void A_GoopSplat(); void A_Boss2PogoSFX(); void A_Boss2PogoTarget(); void A_EggmanBox(); void A_TurretFire(); void A_SuperTurretFire(); void A_TurretStop(); void A_JetJawRoam(); void A_JetJawChomp(); void A_PointyThink(); void A_CheckBuddy(); void A_HoodThink(); void A_ArrowCheck(); void A_SnailerThink(); void A_SharpChase(); void A_SharpSpin(); void A_VultureVtol(); void A_VultureCheck(); void A_SkimChase(); void A_SkullAttack(); void A_LobShot(); void A_FireShot(); void A_SuperFireShot(); void A_BossFireShot(); void A_Boss7FireMissiles(); void A_Boss1Laser(); void A_FocusTarget(); void A_Boss4Reverse(); void A_Boss4SpeedUp(); void A_Boss4Raise(); void A_SparkFollow(); void A_BuzzFly(); void A_GuardChase(); void A_EggShield(); void A_SetReactionTime(); void A_Boss1Spikeballs(); void A_Boss3TakeDamage(); void A_Boss3Path(); void A_LinedefExecute(); void A_PlaySeeSound(); void A_PlayAttackSound(); void A_PlayActiveSound(); void A_1upThinker(); void A_BossZoom(); //Unused void A_Boss1Chase(); void A_Boss2Chase(); void A_Boss2Pogo(); void A_Boss7Chase(); void A_BossJetFume(); void A_SpawnObjectAbsolute(); void A_SpawnObjectRelative(); void A_ChangeAngleRelative(); void A_ChangeAngleAbsolute(); void A_PlaySound(); void A_FindTarget(); void A_FindTracer(); void A_SetTics(); void A_SetRandomTics(); void A_ChangeColorRelative(); void A_ChangeColorAbsolute(); void A_MoveRelative(); void A_MoveAbsolute(); void A_Thrust(); void A_ZThrust(); void A_SetTargetsTarget(); void A_SetObjectFlags(); void A_SetObjectFlags2(); void A_RandomState(); void A_RandomStateRange(); void A_DualAction(); void A_RemoteAction(); void A_ToggleFlameJet(); void A_OrbitNights(); void A_GhostMe(); void A_SetObjectState(); void A_SetObjectTypeState(); void A_KnockBack(); void A_PushAway(); void A_RingDrain(); void A_SplitShot(); void A_MissileSplit(); void A_MultiShot(); void A_InstaLoop(); void A_Custom3DRotate(); void A_SearchForPlayers(); void A_CheckRandom(); void A_CheckTargetRings(); void A_CheckRings(); void A_CheckTotalRings(); void A_CheckHealth(); void A_CheckRange(); void A_CheckHeight(); void A_CheckTrueRange(); void A_CheckThingCount(); void A_CheckAmbush(); void A_CheckCustomValue(); void A_CheckCusValMemo(); void A_SetCustomValue(); void A_UseCusValMemo(); void A_RelayCustomValue(); void A_CusValAction(); void A_ForceStop(); void A_ForceWin(); void A_SpikeRetract(); void A_InfoState(); void A_Repeat(); void A_SetScale(); void A_RemoteDamage(); void A_HomingChase(); void A_TrapShot(); void A_VileTarget(); void A_VileAttack(); void A_VileFire(); void A_BrakChase(); void A_BrakFireShot(); void A_BrakLobShot(); void A_NapalmScatter(); void A_SpawnFreshCopy(); void A_FlickySpawn(); void A_FlickyAim(); void A_FlickyFly(); void A_FlickySoar(); void A_FlickyCoast(); void A_FlickyHop(); void A_FlickyFlounder(); void A_FlickyCheck(); void A_FlickyHeightCheck(); void A_FlickyFlutter(); void A_FlameParticle(); // ratio of states to sprites to mobj types is roughly 6 : 1 : 1 #define NUMMOBJFREESLOTS 256 #define NUMSPRITEFREESLOTS NUMMOBJFREESLOTS #define NUMSTATEFREESLOTS (NUMMOBJFREESLOTS*8) // Hey, moron! If you change this table, don't forget about sprnames in info.c and the sprite lights in hw_light.c! typedef enum sprite { SPR_NULL, // invisible object SPR_UNKN, SPR_THOK, // Thok! mobj SPR_PLAY, // Enemies SPR_POSS, SPR_SPOS, SPR_FISH, // Greenflower Fish SPR_BUZZ, // Buzz (Gold) SPR_RBUZ, // Buzz (Red) SPR_JETB, // Jetty-Syn Bomber SPR_JETW, // Jetty-Syn Water Bomber SPR_JETG, // Jetty-Syn Gunner SPR_CCOM, // Crawla Commander SPR_DETN, // Deton SPR_SKIM, // Skim mine dropper SPR_TRET, SPR_TURR, // Pop-Up Turret SPR_SHRP, // Sharp SPR_JJAW, // Jet Jaw SPR_SNLR, // Snailer SPR_VLTR, // Vulture SPR_PNTY, // Pointy SPR_ARCH, // Robo-Hood SPR_CBFS, // CastleBot FaceStabber (Egg Knight?) SPR_SPSH, // Egg Guard SPR_ESHI, // Egg Shield for Egg Guard SPR_GSNP, // Green Snapper SPR_MNUS, // Minus SPR_SSHL, // Spring Shell SPR_UNID, // Unidus SPR_BBUZ, // AquaBuzz, for Azure Temple // Generic Boss Items SPR_JETF, // Boss jet fumes // Boss 1 (Greenflower) SPR_EGGM, // Boss 2 (Techno Hill) SPR_EGGN, // Boss 2 SPR_TNKA, // Boss 2 Tank 1 SPR_TNKB, // Boss 2 Tank 2 SPR_SPNK, // Boss 2 Spigot SPR_GOOP, // Boss 2 Goop // Boss 3 (Deep Sea) SPR_EGGO, // Boss 3 SPR_PRPL, // Boss 3 Propeller SPR_FAKE, // Boss 3 Fakemobile // Boss 4 (Castle Eggman) SPR_EGGP, SPR_EFIR, // Boss 4 jet flame // Boss 5 (Arid Canyon) SPR_EGGQ, // Boss 6 (Red Volcano) SPR_EGGR, // Boss 7 (Dark City) SPR_BRAK, SPR_BGOO, // Goop SPR_BMSL, // Boss 8 (Egg Rock) SPR_EGGT, // Cy-Brak-Demon; uses SPR_BRAK as well, but has some extras SPR_RCKT, // Rockets! SPR_ELEC, // Electricity! SPR_TARG, // Targeting reticules! SPR_NPLM, // Big napalm bombs! SPR_MNPL, // Mini napalm bombs! // Metal Sonic SPR_METL, SPR_MSCF, SPR_MSCB, // Collectible Items SPR_RING, SPR_TRNG, // Team Rings SPR_TOKE, // Special Stage Token SPR_RFLG, // Red CTF Flag SPR_BFLG, // Blue CTF Flag SPR_NWNG, // NiGHTS Wing collectable item. SPR_EMBM, // Emblem SPR_CEMG, // Chaos Emeralds SPR_EMER, // Emerald Hunt // Interactive Objects SPR_FANS, SPR_BBLS, // water bubble source SPR_SIGN, // Level end sign SPR_STEM, // Steam riser SPR_SPIK, // Spike Ball SPR_SFLM, // Spin fire SPR_USPK, // Floor spike SPR_WSPK, // Wall spike SPR_WSPB, // Wall spike base SPR_STPT, // Starpost SPR_BMNE, // Big floating mine // Monitor Boxes SPR_MSTV, // MiSc TV sprites SPR_XLTV, // eXtra Large TV sprites SPR_TRRI, // Red team: 10 RIngs SPR_TBRI, // Blue team: 10 RIngs SPR_TVRI, // 10 RIng SPR_TVPI, // PIty shield SPR_TVAT, // ATtraction shield SPR_TVFO, // FOrce shield SPR_TVAR, // ARmageddon shield SPR_TVWW, // WhirlWind shield SPR_TVEL, // ELemental shield SPR_TVSS, // Super Sneakers SPR_TVIV, // InVincibility SPR_TV1U, // 1Up SPR_TV1P, // 1uP (textless) SPR_TVEG, // EGgman SPR_TVMX, // MiXup SPR_TVMY, // MYstery SPR_TVGV, // GraVity boots SPR_TVRC, // ReCycler SPR_TV1K, // 1,000 points (1 K) SPR_TVTK, // 10,000 points (Ten K) SPR_TVFL, // FLame shield SPR_TVBB, // BuBble shield SPR_TVZP, // Thunder shield (ZaP) // Projectiles SPR_MISL, SPR_TORP, // Torpedo SPR_ENRG, // Energy ball SPR_MINE, // Skim mine SPR_JBUL, // Jetty-Syn Bullet SPR_TRLS, SPR_CBLL, // Cannonball SPR_AROW, // Arrow SPR_CFIR, // Colored fire of various sorts // Greenflower Scenery SPR_FWR1, SPR_FWR2, // GFZ Sunflower SPR_FWR3, // GFZ budding flower SPR_FWR4, SPR_BUS1, // GFZ Bush w/ berries SPR_BUS2, // GFZ Bush w/o berries // Trees (both GFZ and misc) SPR_TRE1, // GFZ SPR_TRE2, // Checker SPR_TRE3, // Frozen Hillside SPR_TRE4, // Polygon SPR_TRE5, // Bush tree // Techno Hill Scenery SPR_THZP, // THZ1 Flower SPR_FWR5, // Another flower SPR_ALRM, // THZ2 Alarm // Deep Sea Scenery SPR_GARG, // Deep Sea Gargoyle SPR_SEWE, // Deep Sea Seaweed SPR_DRIP, // Dripping water SPR_CRL1, // Coral 1 SPR_CRL2, // Coral 2 SPR_CRL3, // Coral 3 SPR_BCRY, // Blue Crystal // Castle Eggman Scenery SPR_CHAN, // CEZ Chain SPR_FLAM, // Flame SPR_ESTA, // Eggman esta una estatua! SPR_SMCH, // Small Mace Chain SPR_BMCH, // Big Mace Chain SPR_SMCE, // Small Mace SPR_BMCE, // Big Mace SPR_YSPB, // Yellow spring on a ball SPR_RSPB, // Red spring on a ball SPR_SFBR, // Small Firebar SPR_BFBR, // Big Firebar // Arid Canyon Scenery SPR_BTBL, // Big tumbleweed SPR_STBL, // Small tumbleweed SPR_CACT, // Cacti sprites // Red Volcano Scenery SPR_FLME, // Flame jet SPR_DFLM, // Blade's flame // Dark City Scenery // Egg Rock Scenery // Christmas Scenery SPR_XMS1, // Christmas Pole SPR_XMS2, // Candy Cane SPR_XMS3, // Snowman SPR_XMS4, // Lamppost SPR_XMS5, // Hanging Star // Botanic Serenity Scenery SPR_BSZ1, // Tall flowers SPR_BSZ2, // Medium flowers SPR_BSZ3, // Small flowers SPR_BSZ4, // Tulip SPR_BSZ5, // Cluster of Tulips SPR_BSZ6, // Bush SPR_BSZ7, // Vine SPR_BSZ8, // Misc things // Misc Scenery SPR_STLG, // Stalagmites SPR_DBAL, // Disco SPR_RCRY, // ATZ Red Crystal (Target) // Powerup Indicators SPR_ARMA, // Armageddon Shield Orb SPR_ARMF, // Armageddon Shield Ring, Front SPR_ARMB, // Armageddon Shield Ring, Back SPR_WIND, // Whirlwind Shield Orb SPR_MAGN, // Attract Shield Orb SPR_ELEM, // Elemental Shield Orb SPR_FORC, // Force Shield Orb SPR_PITY, // Pity Shield Orb SPR_FIRS, // Flame Shield Orb SPR_BUBS, // Bubble Shield Orb SPR_ZAPS, // Thunder Shield Orb SPR_IVSP, // invincibility sparkles SPR_SSPK, // Super Sonic Spark SPR_GOAL, // Special Stage goal (here because lol NiGHTS) // Flickies SPR_FBUB, // Flicky-sized bubble SPR_FL01, // Bluebird SPR_FL02, // Rabbit SPR_FL03, // Chicken SPR_FL04, // Seal SPR_FL05, // Pig SPR_FL06, // Chipmunk SPR_FL07, // Penguin SPR_FL08, // Fish SPR_FL09, // Ram SPR_FL10, // Puffin SPR_FL11, // Cow SPR_FL12, // Rat SPR_FL13, // Bear SPR_FL14, // Dove SPR_FL15, // Cat SPR_FL16, // Canary // Springs SPR_SPRY, // yellow spring SPR_SPRR, // red spring SPR_SPRB, // Blue springs SPR_YSPR, // Yellow Diagonal Spring SPR_RSPR, // Red Diagonal Spring SPR_SSWY, // Yellow Side Spring SPR_SSWR, // Red Side Spring SPR_SSWB, // Blue Side Spring // Environmental Effects SPR_RAIN, // Rain SPR_SNO1, // Snowflake SPR_SPLH, // Water Splish SPR_SPLA, // Water Splash SPR_SMOK, SPR_BUBL, // Bubble SPR_WZAP, SPR_DUST, // Spindash dust SPR_FPRT, // Spindash dust (flame) SPR_TFOG, // Teleport Fog SPR_SEED, // Sonic CD flower seed SPR_PRTL, // Particle (for fans, etc.) // Game Indicators SPR_SCOR, // Score logo SPR_DRWN, // Drowning Timer SPR_LCKN, // Target SPR_TTAG, // Tag Sign SPR_GFLG, // Got Flag sign SPR_CORK, // Ring Weapons SPR_RRNG, // Red Ring SPR_RNGB, // Bounce Ring SPR_RNGR, // Rail Ring SPR_RNGI, // Infinity Ring SPR_RNGA, // Automatic Ring SPR_RNGE, // Explosion Ring SPR_RNGS, // Scatter Ring SPR_RNGG, // Grenade Ring SPR_PIKB, // Bounce Ring Pickup SPR_PIKR, // Rail Ring Pickup SPR_PIKA, // Automatic Ring Pickup SPR_PIKE, // Explosion Ring Pickup SPR_PIKS, // Scatter Ring Pickup SPR_PIKG, // Grenade Ring Pickup SPR_TAUT, // Thrown Automatic Ring SPR_TGRE, // Thrown Grenade Ring SPR_TSCR, // Thrown Scatter Ring // Mario-specific stuff SPR_COIN, SPR_CPRK, SPR_GOOM, SPR_BGOM, SPR_FFWR, SPR_FBLL, SPR_SHLL, SPR_PUMA, SPR_HAMM, SPR_KOOP, SPR_BFLM, SPR_MAXE, SPR_MUS1, SPR_MUS2, SPR_TOAD, // NiGHTS Stuff SPR_NDRN, // NiGHTS drone SPR_NSPK, // NiGHTS sparkle SPR_NBMP, // NiGHTS Bumper SPR_HOOP, // NiGHTS hoop sprite SPR_NSCR, // NiGHTS score sprite SPR_NPRU, // Nights Powerups SPR_CAPS, // Capsule thingy for NiGHTS // Debris SPR_SPRK, // spark SPR_BOM1, // Robot Explosion SPR_BOM2, // Boss Explosion 1 SPR_BOM3, // Boss Explosion 2 SPR_BOM4, // Underwater Explosion // Crumbly rocks SPR_ROIA, SPR_ROIB, SPR_ROIC, SPR_ROID, SPR_ROIE, SPR_ROIF, SPR_ROIG, SPR_ROIH, SPR_ROII, SPR_ROIJ, SPR_ROIK, SPR_ROIL, SPR_ROIM, SPR_ROIN, SPR_ROIO, SPR_ROIP, // Blue Spheres SPR_BBAL, // Gravity Well Objects SPR_GWLG, SPR_GWLR, SPR_FIRSTFREESLOT, SPR_LASTFREESLOT = SPR_FIRSTFREESLOT + NUMSPRITEFREESLOTS - 1, NUMSPRITES } spritenum_t; // Make sure to be conscious of FF_FRAMEMASK and the fact sprite2 is stored as a UINT8 whenever you change this table. // Currently, FF_FRAMEMASK is 0xff, or 255 - but the second half is used by FF_SPR2SUPER, so the limitation is 0x7f. // Since this is zero-based, there can be at most 128 different SPR2_'s without changing that. typedef enum playersprite { SPR2_STND = 0, SPR2_WAIT, SPR2_WALK, SPR2_RUN , SPR2_DASH, SPR2_PAIN, SPR2_STUN, SPR2_DEAD, SPR2_DRWN, // drown SPR2_ROLL, SPR2_GASP, SPR2_JUMP, SPR2_SPNG, // spring SPR2_FALL, SPR2_EDGE, SPR2_RIDE, SPR2_SPIN, // spindash SPR2_FLY , SPR2_SWIM, SPR2_TIRE, // tired SPR2_GLID, // glide SPR2_CLNG, // cling SPR2_CLMB, // climb SPR2_FLT , // float SPR2_FRUN, // float run SPR2_BNCE, // bounce SPR2_BLND, // bounce landing SPR2_FIRE, // fire SPR2_TWIN, // twinspin SPR2_MLEE, // melee SPR2_MLEL, // melee land SPR2_TRNS, // transformation SPR2_NSTD, // NiGHTS stand SPR2_NFLT, // NiGHTS float SPR2_NSTN, // NiGHTS stun SPR2_NPUL, // NiGHTS pull SPR2_NATK, // NiGHTS attack // NiGHTS flight SPR2_NGT0, SPR2_NGT1, SPR2_NGT2, SPR2_NGT3, SPR2_NGT4, SPR2_NGT5, SPR2_NGT6, SPR2_NGT7, SPR2_NGT8, SPR2_NGT9, SPR2_NGTA, SPR2_NGTB, SPR2_NGTC, // NiGHTS drill SPR2_DRL0, SPR2_DRL1, SPR2_DRL2, SPR2_DRL3, SPR2_DRL4, SPR2_DRL5, SPR2_DRL6, SPR2_DRL7, SPR2_DRL8, SPR2_DRL9, SPR2_DRLA, SPR2_DRLB, SPR2_DRLC, SPR2_SIGN, // end sign head SPR2_LIFE, // life monitor icon SPR2_FIRSTFREESLOT, SPR2_LASTFREESLOT = 0x7f, NUMPLAYERSPRITES } playersprite_t; typedef enum state { 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_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_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_TRANS, S_PLAY_SUPER_TRANS2, S_PLAY_SUPER_TRANS3, S_PLAY_SUPER_TRANS4, S_PLAY_SUPER_TRANS5, S_PLAY_SUPER_TRANS6, S_PLAY_SUPER_TRANS7, S_PLAY_SUPER_TRANS8, S_PLAY_SUPER_TRANS9, // 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_TRANS, S_PLAY_NIGHTS_TRANS2, S_PLAY_NIGHTS_TRANS3, S_PLAY_NIGHTS_TRANS4, S_PLAY_NIGHTS_TRANS5, S_PLAY_NIGHTS_TRANS6, S_PLAY_NIGHTS_TRANS7, S_PLAY_NIGHTS_TRANS8, S_PLAY_NIGHTS_TRANS9, S_PLAY_NIGHTS_STAND, S_PLAY_NIGHTS_FLOAT, S_PLAY_NIGHTS_STUN, S_PLAY_NIGHTS_PULL, S_PLAY_NIGHTS_ATTACK, S_PLAY_NIGHTS_FLY0, S_PLAY_NIGHTS_DRILL0, S_PLAY_NIGHTS_FLY1, S_PLAY_NIGHTS_DRILL1, S_PLAY_NIGHTS_FLY2, S_PLAY_NIGHTS_DRILL2, S_PLAY_NIGHTS_FLY3, S_PLAY_NIGHTS_DRILL3, S_PLAY_NIGHTS_FLY4, S_PLAY_NIGHTS_DRILL4, S_PLAY_NIGHTS_FLY5, S_PLAY_NIGHTS_DRILL5, S_PLAY_NIGHTS_FLY6, S_PLAY_NIGHTS_DRILL6, S_PLAY_NIGHTS_FLY7, S_PLAY_NIGHTS_DRILL7, S_PLAY_NIGHTS_FLY8, S_PLAY_NIGHTS_DRILL8, S_PLAY_NIGHTS_FLY9, S_PLAY_NIGHTS_DRILL9, S_PLAY_NIGHTS_FLYA, S_PLAY_NIGHTS_DRILLA, S_PLAY_NIGHTS_FLYB, S_PLAY_NIGHTS_DRILLB, S_PLAY_NIGHTS_FLYC, S_PLAY_NIGHTS_DRILLC, // 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, // AquaBuzz S_BBUZZFLY1, S_BBUZZFLY2, // 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, S_DETON16, // 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, // Sharp S_SHARP_ROAM1, S_SHARP_ROAM2, S_SHARP_AIM1, S_SHARP_AIM2, S_SHARP_AIM3, S_SHARP_AIM4, S_SHARP_SPIN, // 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, // Snailer S_SNAILER1, // Vulture S_VULTURE_STND, S_VULTURE_VTOL1, S_VULTURE_VTOL2, S_VULTURE_VTOL3, S_VULTURE_VTOL4, S_VULTURE_ZOOM1, S_VULTURE_ZOOM2, S_VULTURE_ZOOM3, S_VULTURE_ZOOM4, S_VULTURE_ZOOM5, // Pointy S_POINTY1, S_POINTYBALL1, // Robo-Hood S_ROBOHOOD_LOOK, S_ROBOHOOD_STND, S_ROBOHOOD_SHOOT, S_ROBOHOOD_JUMP, S_ROBOHOOD_JUMP2, S_ROBOHOOD_FALL, // 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, // 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, // Green Snapper S_GSNAPPER_STND, S_GSNAPPER1, S_GSNAPPER2, S_GSNAPPER3, S_GSNAPPER4, // Minus S_MINUS_STND, S_MINUS_DIGGING, S_MINUS_POPUP, S_MINUS_UPWARD1, S_MINUS_UPWARD2, S_MINUS_UPWARD3, S_MINUS_UPWARD4, S_MINUS_UPWARD5, S_MINUS_UPWARD6, S_MINUS_UPWARD7, S_MINUS_UPWARD8, S_MINUS_DOWNWARD1, S_MINUS_DOWNWARD2, S_MINUS_DOWNWARD3, S_MINUS_DOWNWARD4, S_MINUS_DOWNWARD5, S_MINUS_DOWNWARD6, S_MINUS_DOWNWARD7, S_MINUS_DOWNWARD8, // 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, // Boss Explosion S_BPLD1, S_BPLD2, S_BPLD3, S_BPLD4, S_BPLD5, S_BPLD6, S_BPLD7, // S3&K Boss Explosion S_SONIC3KBOSSEXPLOSION1, S_SONIC3KBOSSEXPLOSION2, S_SONIC3KBOSSEXPLOSION3, S_SONIC3KBOSSEXPLOSION4, S_SONIC3KBOSSEXPLOSION5, S_SONIC3KBOSSEXPLOSION6, S_JETFUME1, S_JETFUME2, // Boss 1 S_EGGMOBILE_STND, 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_LATK10, 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_RATK10, 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_PAIN, S_EGGMOBILE_PAIN2, S_EGGMOBILE_DIE1, S_EGGMOBILE_DIE2, S_EGGMOBILE_DIE3, S_EGGMOBILE_DIE4, S_EGGMOBILE_DIE5, S_EGGMOBILE_DIE6, S_EGGMOBILE_DIE7, S_EGGMOBILE_DIE8, S_EGGMOBILE_DIE9, S_EGGMOBILE_DIE10, S_EGGMOBILE_DIE11, S_EGGMOBILE_DIE12, S_EGGMOBILE_DIE13, S_EGGMOBILE_DIE14, S_EGGMOBILE_FLEE1, S_EGGMOBILE_FLEE2, S_EGGMOBILE_BALL, S_EGGMOBILE_TARGET, // 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_DIE5, S_EGGMOBILE2_DIE6, S_EGGMOBILE2_DIE7, S_EGGMOBILE2_DIE8, S_EGGMOBILE2_DIE9, S_EGGMOBILE2_DIE10, S_EGGMOBILE2_DIE11, S_EGGMOBILE2_DIE12, S_EGGMOBILE2_DIE13, S_EGGMOBILE2_DIE14, 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_ATK1, S_EGGMOBILE3_ATK2, S_EGGMOBILE3_ATK3A, S_EGGMOBILE3_ATK3B, S_EGGMOBILE3_ATK3C, S_EGGMOBILE3_ATK3D, S_EGGMOBILE3_ATK4, S_EGGMOBILE3_ATK5, S_EGGMOBILE3_LAUGH1, S_EGGMOBILE3_LAUGH2, S_EGGMOBILE3_LAUGH3, S_EGGMOBILE3_LAUGH4, S_EGGMOBILE3_LAUGH5, S_EGGMOBILE3_LAUGH6, S_EGGMOBILE3_LAUGH7, S_EGGMOBILE3_LAUGH8, S_EGGMOBILE3_LAUGH9, S_EGGMOBILE3_LAUGH10, S_EGGMOBILE3_LAUGH11, S_EGGMOBILE3_LAUGH12, S_EGGMOBILE3_LAUGH13, S_EGGMOBILE3_LAUGH14, S_EGGMOBILE3_LAUGH15, S_EGGMOBILE3_LAUGH16, S_EGGMOBILE3_LAUGH17, S_EGGMOBILE3_LAUGH18, S_EGGMOBILE3_LAUGH19, S_EGGMOBILE3_LAUGH20, S_EGGMOBILE3_PAIN, S_EGGMOBILE3_PAIN2, S_EGGMOBILE3_DIE1, S_EGGMOBILE3_DIE2, S_EGGMOBILE3_DIE3, S_EGGMOBILE3_DIE4, S_EGGMOBILE3_DIE5, S_EGGMOBILE3_DIE6, S_EGGMOBILE3_DIE7, S_EGGMOBILE3_DIE8, S_EGGMOBILE3_DIE9, S_EGGMOBILE3_DIE10, S_EGGMOBILE3_DIE11, S_EGGMOBILE3_DIE12, S_EGGMOBILE3_DIE13, S_EGGMOBILE3_DIE14, S_EGGMOBILE3_FLEE1, S_EGGMOBILE3_FLEE2, // Boss 3 Propeller S_PROPELLER1, S_PROPELLER2, S_PROPELLER3, S_PROPELLER4, S_PROPELLER5, S_PROPELLER6, S_PROPELLER7, // 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_ATK4, S_FAKEMOBILE_ATK5, // 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_RAISE3, S_EGGMOBILE4_RAISE4, S_EGGMOBILE4_RAISE5, S_EGGMOBILE4_RAISE6, S_EGGMOBILE4_RAISE7, S_EGGMOBILE4_RAISE8, S_EGGMOBILE4_RAISE9, S_EGGMOBILE4_RAISE10, S_EGGMOBILE4_PAIN, S_EGGMOBILE4_DIE1, S_EGGMOBILE4_DIE2, S_EGGMOBILE4_DIE3, S_EGGMOBILE4_DIE4, S_EGGMOBILE4_DIE5, S_EGGMOBILE4_DIE6, S_EGGMOBILE4_DIE7, S_EGGMOBILE4_DIE8, S_EGGMOBILE4_DIE9, S_EGGMOBILE4_DIE10, S_EGGMOBILE4_DIE11, S_EGGMOBILE4_DIE12, S_EGGMOBILE4_DIE13, S_EGGMOBILE4_DIE14, S_EGGMOBILE4_FLEE1, S_EGGMOBILE4_FLEE2, S_EGGMOBILE4_MACE, // Boss 4 jet flame S_JETFLAME1, S_JETFLAME2, // 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_PLAY_STND S_METALSONIC_STAND, // S_PLAY_TAP1 S_METALSONIC_WAIT1, S_METALSONIC_WAIT2, // S_PLAY_WALK S_METALSONIC_WALK1, S_METALSONIC_WALK2, S_METALSONIC_WALK3, S_METALSONIC_WALK4, S_METALSONIC_WALK5, S_METALSONIC_WALK6, S_METALSONIC_WALK7, S_METALSONIC_WALK8, // S_PLAY_SPD1 S_METALSONIC_RUN1, S_METALSONIC_RUN2, S_METALSONIC_RUN3, S_METALSONIC_RUN4, // 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_DEATH, S_METALSONIC_FLEE1, S_METALSONIC_FLEE2, S_METALSONIC_FLEE3, S_METALSONIC_FLEE4, S_MSSHIELD_F1, S_MSSHIELD_F2, S_MSSHIELD_F3, S_MSSHIELD_F4, S_MSSHIELD_F5, S_MSSHIELD_F6, S_MSSHIELD_F7, S_MSSHIELD_F8, S_MSSHIELD_F9, S_MSSHIELD_F10, S_MSSHIELD_F11, S_MSSHIELD_F12, // Ring S_RING, // Blue Sphere for special stages S_BLUEBALL, S_BLUEBALLSPARK, // Gravity Wells for special stages S_GRAVWELLGREEN, S_GRAVWELLGREEN2, S_GRAVWELLGREEN3, S_GRAVWELLRED, S_GRAVWELLRED2, S_GRAVWELLRED3, // 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, // Emeralds (for hunt) S_EMER1, S_FAN, S_FAN2, S_FAN3, S_FAN4, S_FAN5, // Bubble Source S_BUBBLES1, S_BUBBLES2, S_BUBBLES3, S_BUBBLES4, // Level End Sign S_SIGN1, S_SIGN2, S_SIGN3, S_SIGN4, S_SIGN5, S_SIGN6, S_SIGN7, S_SIGN8, S_SIGN9, S_SIGN10, S_SIGN11, S_SIGN12, S_SIGN13, S_SIGN14, S_SIGN15, S_SIGN16, S_SIGN17, S_SIGN18, S_SIGN19, S_SIGN20, S_SIGN21, S_SIGN22, S_SIGN23, S_SIGN24, S_SIGN25, S_SIGN26, S_SIGN27, S_SIGN28, S_SIGN29, S_SIGN30, S_SIGN31, S_SIGN32, S_SIGN33, S_SIGN34, S_SIGN35, S_SIGN36, S_SIGN37, S_SIGN38, S_SIGN39, S_SIGN40, S_SIGN41, S_SIGN42, S_SIGN43, S_SIGN44, S_SIGN45, S_SIGN46, S_SIGN47, S_SIGN48, S_SIGN49, S_SIGN50, S_SIGN51, S_SIGN52, // Eggman S_SIGN53, // Steam Riser S_STEAM1, S_STEAM2, S_STEAM3, S_STEAM4, S_STEAM5, S_STEAM6, S_STEAM7, S_STEAM8, // 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, // 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_BIGMINE1, S_BIGMINE2, S_BIGMINE3, S_BIGMINE4, S_BIGMINE5, S_BIGMINE6, S_BIGMINE7, S_BIGMINE8, // Cannon Launcher S_CANNONLAUNCHER1, S_CANNONLAUNCHER2, S_CANNONLAUNCHER3, // Monitor Miscellany S_BOXSPARKLE1, S_BOXSPARKLE2, S_BOXSPARKLE3, 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_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_ARROWUP, S_ARROWDOWN, // Trapgoyle Demon fire S_DEMONFIRE1, S_DEMONFIRE2, S_DEMONFIRE3, S_DEMONFIRE4, S_DEMONFIRE5, S_DEMONFIRE6, // GFZ flowers S_GFZFLOWERA, S_GFZFLOWERB, S_GFZFLOWERC, 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, // THZ Plant S_THZFLOWERA, S_THZFLOWERB, // 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 1 S_CORAL1, // Coral 2 S_CORAL2, // Coral 3 S_CORAL3, // Blue Crystal S_BLUECRYSTAL1, // CEZ Chain S_CEZCHAIN, // Flame S_FLAME1, S_FLAME2, S_FLAME3, S_FLAME4, S_FLAME5, S_FLAME6, 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, // 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_CEZFLOWER1, // 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 Sprites S_CACTI1, S_CACTI2, S_CACTI3, S_CACTI4, // Flame jet S_FLAMEJETSTND, S_FLAMEJETSTART, S_FLAMEJETSTOP, S_FLAMEJETFLAME1, S_FLAMEJETFLAME2, S_FLAMEJETFLAME3, // Spinning flame jets S_FJSPINAXISA1, // Counter-clockwise S_FJSPINAXISA2, S_FJSPINAXISB1, // Clockwise S_FJSPINAXISB2, // Blade's flame S_FLAMEJETFLAMEB1, S_FLAMEJETFLAMEB2, S_FLAMEJETFLAMEB3, // Trapgoyles S_TRAPGOYLE, S_TRAPGOYLE_CHECK, S_TRAPGOYLE_FIRE1, S_TRAPGOYLE_FIRE2, S_TRAPGOYLE_FIRE3, S_TRAPGOYLEUP, S_TRAPGOYLEUP_CHECK, S_TRAPGOYLEUP_FIRE1, S_TRAPGOYLEUP_FIRE2, S_TRAPGOYLEUP_FIRE3, S_TRAPGOYLEDOWN, S_TRAPGOYLEDOWN_CHECK, S_TRAPGOYLEDOWN_FIRE1, S_TRAPGOYLEDOWN_FIRE2, S_TRAPGOYLEDOWN_FIRE3, S_TRAPGOYLELONG, S_TRAPGOYLELONG_CHECK, S_TRAPGOYLELONG_FIRE1, S_TRAPGOYLELONG_FIRE2, S_TRAPGOYLELONG_FIRE3, S_TRAPGOYLELONG_FIRE4, S_TRAPGOYLELONG_FIRE5, // ATZ's Red Crystal/Target S_TARGET_IDLE, S_TARGET_HIT1, S_TARGET_HIT2, S_TARGET_RESPAWN, S_TARGET_ALLDONE, // 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, // Xmas GFZ bushes S_XMASBERRYBUSH, S_XMASBUSH, // 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_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_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_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, // Rabbit S_FLICKY_02_OUT, S_FLICKY_02_AIM, S_FLICKY_02_HOP, S_FLICKY_02_UP, S_FLICKY_02_DOWN, // 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, // 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, // Pig S_FLICKY_05_OUT, S_FLICKY_05_AIM, S_FLICKY_05_HOP, S_FLICKY_05_UP, S_FLICKY_05_DOWN, // Chipmunk S_FLICKY_06_OUT, S_FLICKY_06_AIM, S_FLICKY_06_HOP, S_FLICKY_06_UP, S_FLICKY_06_DOWN, // 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, // 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, // Ram S_FLICKY_09_OUT, S_FLICKY_09_AIM, S_FLICKY_09_HOP, S_FLICKY_09_UP, S_FLICKY_09_DOWN, // Puffin S_FLICKY_10_OUT, S_FLICKY_10_FLAP1, S_FLICKY_10_FLAP2, // Cow S_FLICKY_11_OUT, S_FLICKY_11_AIM, S_FLICKY_11_RUN1, S_FLICKY_11_RUN2, S_FLICKY_11_RUN3, // Rat S_FLICKY_12_OUT, S_FLICKY_12_AIM, S_FLICKY_12_RUN1, S_FLICKY_12_RUN2, S_FLICKY_12_RUN3, // Bear S_FLICKY_13_OUT, S_FLICKY_13_AIM, S_FLICKY_13_HOP, S_FLICKY_13_UP, S_FLICKY_13_DOWN, // Dove S_FLICKY_14_OUT, S_FLICKY_14_FLAP1, S_FLICKY_14_FLAP2, S_FLICKY_14_FLAP3, // Cat S_FLICKY_15_OUT, S_FLICKY_15_AIM, S_FLICKY_15_HOP, S_FLICKY_15_UP, S_FLICKY_15_DOWN, // Canary S_FLICKY_16_OUT, S_FLICKY_16_FLAP1, S_FLICKY_16_FLAP2, S_FLICKY_16_FLAP3, S_YELLOWSPRING, S_YELLOWSPRING2, S_YELLOWSPRING3, S_YELLOWSPRING4, S_YELLOWSPRING5, S_REDSPRING, S_REDSPRING2, S_REDSPRING3, S_REDSPRING4, S_REDSPRING5, // Blue Springs 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, // 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, // 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, // 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, S_PARTICLEGEN, // 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) // 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_LOCKON1, S_LOCKON2, // Tag Sign S_TTAG, // Got Flag Sign S_GOTFLAG, S_GOTREDFLAG, S_GOTBLUEFLAG, S_CORK, // 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_FIREBALL1, S_FIREBALL2, S_FIREBALL3, S_FIREBALL4, S_FIREBALLEXP1, S_FIREBALLEXP2, S_FIREBALLEXP3, 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_NIGHTSDRONE1, S_NIGHTSDRONE2, 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_NIGHTSGOAL1, S_NIGHTSGOAL2, S_NIGHTSGOAL3, S_NIGHTSGOAL4, 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, S_NIGHTSWING, S_NIGHTSWING_XMAS, // 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_ORBITEM9, S_ORBITEM10, S_ORBITEM11, S_ORBITEM12, S_ORBITEM13, S_ORBITEM14, S_ORBITEM15, S_ORBITEM16, // "Flicky" helper S_NIGHTOPIANHELPER1, S_NIGHTOPIANHELPER2, S_NIGHTOPIANHELPER3, S_NIGHTOPIANHELPER4, S_NIGHTOPIANHELPER5, S_NIGHTOPIANHELPER6, S_NIGHTOPIANHELPER7, S_NIGHTOPIANHELPER8, S_NIGHTOPIANHELPER9, S_CRUMBLE1, S_CRUMBLE2, // Spark S_SPRK1, S_SPRK2, S_SPRK3, S_SPRK4, S_SPRK5, S_SPRK6, S_SPRK7, S_SPRK8, S_SPRK9, S_SPRK10, S_SPRK11, S_SPRK12, S_SPRK13, S_SPRK14, S_SPRK15, S_SPRK16, // Robot Explosion S_XPLD_FLICKY, S_XPLD1, S_XPLD2, S_XPLD_EGGTRAP, // Underwater Explosion S_WPLD1, S_WPLD2, S_WPLD3, S_WPLD4, S_WPLD5, S_WPLD6, 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, #ifdef SEENAMES S_NAMECHECK, #endif S_FIRSTFREESLOT, S_LASTFREESLOT = S_FIRSTFREESLOT + NUMSTATEFREESLOTS - 1, NUMSTATES } statenum_t; typedef struct { spritenum_t sprite; UINT32 frame; // we use the upper 16 bits for translucency and other shade effects INT32 tics; actionf_t action; INT32 var1; INT32 var2; statenum_t nextstate; } state_t; extern state_t states[NUMSTATES]; extern char sprnames[NUMSPRITES + 1][5]; extern char spr2names[NUMPLAYERSPRITES][5]; extern playersprite_t spr2defaults[NUMPLAYERSPRITES]; extern state_t *astate; extern playersprite_t free_spr2; typedef enum mobj_type { MT_NULL, MT_UNKNOWN, MT_THOK, // Thok! mobj MT_PLAYER, // Enemies MT_BLUECRAWLA, MT_REDCRAWLA, MT_GFZFISH, // Greenflower Fish MT_GOLDBUZZ, MT_REDBUZZ, MT_AQUABUZZ, // AquaBuzz for ATZ MT_JETTBOMBER, // Jetty-Syn Bomber MT_JETTGUNNER, // Jetty-Syn Gunner MT_CRAWLACOMMANDER, // Crawla Commander MT_DETON, // Deton MT_SKIM, // Skim mine dropper MT_TURRET, MT_POPUPTURRET, MT_SHARP, // Sharp MT_JETJAW, // Jet Jaw MT_SNAILER, // Snailer MT_VULTURE, // Vulture MT_POINTY, // Pointy MT_POINTYBALL, // Pointy Ball MT_ROBOHOOD, // Robo-Hood MT_FACESTABBER, // CastleBot FaceStabber MT_EGGGUARD, // Egg Guard MT_EGGSHIELD, // Egg Shield for Egg Guard MT_GSNAPPER, // Green Snapper MT_MINUS, // Minus MT_SPRINGSHELL, // Spring Shell MT_YELLOWSHELL, // Spring Shell (yellow) MT_UNIDUS, // Unidus MT_UNIBALL, // Unidus Ball // Generic Boss Items MT_BOSSEXPLODE, MT_SONIC3KBOSSEXPLODE, MT_BOSSFLYPOINT, MT_EGGTRAP, MT_BOSS3WAYPOINT, MT_BOSS9GATHERPOINT, // Boss 1 MT_EGGMOBILE, MT_JETFUME1, MT_EGGMOBILE_BALL, MT_EGGMOBILE_TARGET, MT_EGGMOBILE_FIRE, // Boss 2 MT_EGGMOBILE2, MT_EGGMOBILE2_POGO, MT_BOSSTANK1, MT_BOSSTANK2, MT_BOSSSPIGOT, MT_GOOP, MT_GOOPTRAIL, // Boss 3 MT_EGGMOBILE3, MT_PROPELLER, MT_FAKEMOBILE, // Boss 4 MT_EGGMOBILE4, MT_EGGMOBILE4_MACE, MT_JETFLAME, // 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_BLUEBALL, // Blue sphere replacement for special stages 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, // Steam riser MT_BLUESPRING, MT_YELLOWSPRING, MT_REDSPRING, MT_YELLOWDIAG, // Yellow Diagonal Spring MT_REDDIAG, // Red Diagonal Spring MT_YELLOWHORIZ, // Yellow Side Spring MT_REDHORIZ, // Red Side Spring MT_BLUEHORIZ, // Blue Side Spring // Interactive Objects MT_BUBBLES, // Bubble source MT_SIGN, // Level end sign MT_SPIKEBALL, // Spike Ball MT_SPECIALSPIKEBALL, MT_SPINFIRE, MT_SPIKE, MT_WALLSPIKE, MT_WALLSPIKEBASE, MT_STARPOST, MT_BIGMINE, MT_BIGAIRMINE, 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, // Trapgoyle fire // Greenflower Scenery MT_GFZFLOWER1, MT_GFZFLOWER2, MT_GFZFLOWER3, 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, // Techno Hill Scenery MT_THZFLOWER1, MT_THZFLOWER2, 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 1 MT_CORAL2, // Coral 2 MT_CORAL3, // Coral 3 MT_BLUECRYSTAL, // Blue Crystal // 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_YELLOWSPRINGBALL, // Yellow spring on a ball MT_REDSPRINGBALL, // Red spring on a ball MT_SMALLFIREBAR, // Small Firebar MT_BIGFIREBAR, // Big Firebar MT_CEZFLOWER, // Arid Canyon Scenery MT_BIGTUMBLEWEED, MT_LITTLETUMBLEWEED, MT_CACTI1, MT_CACTI2, MT_CACTI3, MT_CACTI4, // Red Volcano Scenery MT_FLAMEJET, MT_VERTICALFLAMEJET, MT_FLAMEJETFLAME, MT_FJSPINAXISA, // Counter-clockwise MT_FJSPINAXISB, // Clockwise MT_FLAMEJETFLAMEB, // Blade's flame // Dark City Scenery // Egg Rock Scenery // Azure Temple Scenery MT_TRAPGOYLE, MT_TRAPGOYLEUP, MT_TRAPGOYLEDOWN, MT_TRAPGOYLELONG, MT_TARGET, // AKA Red Crystal // 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, // Xmas GFZ bushes MT_XMASBERRYBUSH, MT_XMASBUSH, // 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_02, // Rabbit MT_FLICKY_03, // Chicken MT_FLICKY_04, // Seal MT_FLICKY_05, // Pig MT_FLICKY_06, // Chipmunk MT_FLICKY_07, // Penguin MT_FLICKY_08, // Fish MT_FLICKY_09, // Ram MT_FLICKY_10, // Puffin MT_FLICKY_11, // Cow MT_FLICKY_12, // Rat MT_FLICKY_13, // Bear MT_FLICKY_14, // Dove MT_FLICKY_15, // Cat MT_FLICKY_16, // Canary // Environmental Effects MT_RAIN, // Rain MT_SNOWFLAKE, // Snowflake MT_SPLISH, // Water 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_SEED, 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_TAG, // Tag Sign MT_GOTFLAG, // Got Flag sign // Ambient Sounds MT_AWATERA, // Ambient Water Sound 1 MT_AWATERB, // Ambient Water Sound 2 MT_AWATERC, // Ambient Water Sound 3 MT_AWATERD, // Ambient Water Sound 4 MT_AWATERE, // Ambient Water Sound 5 MT_AWATERF, // Ambient Water Sound 6 MT_AWATERG, // Ambient Water Sound 7 MT_AWATERH, // Ambient Water Sound 8 MT_RANDOMAMBIENT, MT_RANDOMAMBIENT2, MT_CORK, // 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_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_NIGHTSGOAL, 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_NIGHTSWING, MT_NIGHTSSUPERLOOP, MT_NIGHTSDRILLREFILL, MT_NIGHTSHELPER, MT_NIGHTSEXTRATIME, MT_NIGHTSLINKFREEZE, MT_EGGCAPSULE, MT_NIGHTOPIANHELPER, // the actual helper object that orbits you // Utility Objects MT_TELEPORTMAN, MT_ALTVIEWMAN, MT_CRUMBLEOBJ, // Sound generator for crumbling platform MT_TUBEWAYPOINT, MT_PUSH, MT_PULL, MT_GHOST, MT_OVERLAY, MT_POLYANCHOR, MT_POLYSPAWN, MT_POLYSPAWNCRUSH, // Skybox objects MT_SKYBOX, // Debris MT_SPARK, //spark MT_EXPLODE, // Robot Explosion MT_UWEXPLODE, // Underwater Explosion 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, #ifdef SEENAMES MT_NAMECHECK, #endif MT_FIRSTFREESLOT, MT_LASTFREESLOT = MT_FIRSTFREESLOT + NUMMOBJFREESLOTS - 1, NUMMOBJTYPES } mobjtype_t; typedef struct { INT32 doomednum; statenum_t spawnstate; INT32 spawnhealth; statenum_t seestate; sfxenum_t seesound; INT32 reactiontime; sfxenum_t attacksound; statenum_t painstate; INT32 painchance; sfxenum_t painsound; statenum_t meleestate; statenum_t missilestate; statenum_t deathstate; statenum_t xdeathstate; sfxenum_t deathsound; fixed_t speed; fixed_t radius; fixed_t height; INT32 dispoffset; INT32 mass; INT32 damage; sfxenum_t activesound; UINT32 flags; statenum_t raisestate; } mobjinfo_t; extern mobjinfo_t mobjinfo[NUMMOBJTYPES]; void P_PatchInfoTables(void); void P_BackupTables(void); void P_ResetData(INT32 flags); #endif