diff --git a/src/deh_soc.c b/src/deh_soc.c
index 6162034de636e54ec8d35f5292720564de8de32d..0043b4ee6b6286a2e7f21f6cfe7909f0d497a47a 100644
--- a/src/deh_soc.c
+++ b/src/deh_soc.c
@@ -2760,11 +2760,11 @@ void readframe(MYFILE *f, INT32 num)
 			}
 			else if (fastcmp(word1, "VAR1"))
 			{
-				states[num].var1 = (INT32)get_number(word2);
+				states[num].var1 = ACTION_INTEGER_VAL((INT32)get_number(word2));
 			}
 			else if (fastcmp(word1, "VAR2"))
 			{
-				states[num].var2 = (INT32)get_number(word2);
+				states[num].var2 = ACTION_INTEGER_VAL((INT32)get_number(word2));
 			}
 			else if (fastcmp(word1, "ACTION"))
 			{
diff --git a/src/hardware/hw_md2.c b/src/hardware/hw_md2.c
index 0f834213592e041c866ca05a90d2599476c81c76..5e33424c93ee9ff41c12d24c10ea612afb0366f2 100644
--- a/src/hardware/hw_md2.c
+++ b/src/hardware/hw_md2.c
@@ -1503,7 +1503,8 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
 		if (spr->mobj->frame & FF_ANIMATE)
 		{
 			// set duration and tics to be the correct values for FF_ANIMATE states
-			durs = (float)spr->mobj->state->var2;
+			INT32 var2 = Action_ValueToInteger(spr->mobj->state->var2);
+			durs = (float)var2;
 			tics = (float)spr->mobj->anim_duration;
 		}
 
@@ -1566,7 +1567,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
 				if (spr->mobj->frame & FF_ANIMATE)
 				{
 					nextFrame = (spr->mobj->frame & FF_FRAMEMASK) + 1;
-					if (nextFrame >= (INT32)(spr->mobj->state->var1 + (spr->mobj->state->frame & FF_FRAMEMASK)))
+					if (nextFrame >= (INT32)(Action_ValueToInteger(spr->mobj->state->var1) + (spr->mobj->state->frame & FF_FRAMEMASK)))
 						nextFrame = (spr->mobj->state->frame & FF_FRAMEMASK) % mod;
 				}
 				else
diff --git a/src/info.c b/src/info.c
index f544c38952a35b02cb08e677890efbc08113e41f..9f62fe23d0e9cddcb7ffc7eaa3ac22c9dee62f85 100644
--- a/src/info.c
+++ b/src/info.c
@@ -682,7 +682,9 @@ playersprite_t spr2defaults[NUMPLAYERSPRITES] = {
 	0, // SPR2_XTRA (should never be referenced)
 };
 
-// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
+#define STATE(sprite, frame, duration, action, var1, var2, nextstate) \
+	{ sprite, frame, duration, action, ACTION_INTEGER_VAL(var1), ACTION_INTEGER_VAL(var2), nextstate }
+
 state_t states[NUMSTATES] =
 {
 	// frame is masked through FF_FRAMEMASK
@@ -691,3312 +693,3313 @@ state_t states[NUMSTATES] =
 	// use FF_TRANS10 - FF_TRANS90 for easy translucency
 	// (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}, // S_NULL
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_UNKNOWN
-	{SPR_NULL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_INVISIBLE
+	STATE(SPR_NULL, 0,  1, {NULL}, 0, 0, S_NULL), // S_NULL
+	STATE(SPR_UNKN, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_UNKNOWN
+	STATE(SPR_NULL, 0, -1, {NULL}, 0, 0, S_NULL), // S_INVISIBLE
 
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 0, 0, S_NULL}, // S_SPAWNSTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 1, 0, S_NULL}, // S_SEESTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 2, 0, S_NULL}, // S_MELEESTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 3, 0, S_NULL}, // S_MISSILESTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 4, 0, S_NULL}, // S_DEATHSTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 5, 0, S_NULL}, // S_XDEATHSTATE
-	{SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 6, 0, S_NULL}, // S_RAISESTATE
+	STATE(SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 0, 0, S_NULL), // S_SPAWNSTATE
+	STATE(SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 1, 0, S_NULL), // S_SEESTATE
+	STATE(SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 2, 0, S_NULL), // S_MELEESTATE
+	STATE(SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 3, 0, S_NULL), // S_MISSILESTATE
+	STATE(SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 4, 0, S_NULL), // S_DEATHSTATE
+	STATE(SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 5, 0, S_NULL), // S_XDEATHSTATE
+	STATE(SPR_UNKN, FF_FULLBRIGHT, -1, {A_InfoState}, 6, 0, S_NULL), // S_RAISESTATE
 
 	// Thok
-	{SPR_THOK, FF_TRANS50, 8, {NULL}, 0, 0, S_NULL}, // S_THOK
+	STATE(SPR_THOK, FF_TRANS50, 8, {NULL}, 0, 0, S_NULL), // S_THOK
 
 	// Player
-	{SPR_PLAY, SPR2_STND|FF_ANIMATE,    105, {NULL}, 0,  7, S_PLAY_WAIT}, // S_PLAY_STND
-	{SPR_PLAY, SPR2_WAIT|FF_ANIMATE,     -1, {NULL}, 0, 16, S_NULL},      // S_PLAY_WAIT
-	{SPR_PLAY, SPR2_WALK,                 4, {NULL}, 0,  0, S_PLAY_WALK}, // S_PLAY_WALK
-	{SPR_PLAY, SPR2_SKID,                 1, {NULL}, 0,  0, S_PLAY_WALK}, // S_PLAY_SKID
-	{SPR_PLAY, SPR2_RUN ,                 2, {NULL}, 0,  0, S_PLAY_RUN},  // S_PLAY_RUN
-	{SPR_PLAY, SPR2_DASH,                 2, {NULL}, 0,  0, S_PLAY_DASH}, // S_PLAY_DASH
-	{SPR_PLAY, SPR2_PAIN|FF_ANIMATE,    350, {NULL}, 0,  4, S_PLAY_FALL}, // S_PLAY_PAIN
-	{SPR_PLAY, SPR2_STUN|FF_ANIMATE,    350, {NULL}, 0,  4, S_PLAY_FALL}, // S_PLAY_STUN
-	{SPR_PLAY, SPR2_DEAD|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL},      // S_PLAY_DEAD
-	{SPR_PLAY, SPR2_DRWN|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL},      // S_PLAY_DRWN
-	{SPR_PLAY, SPR2_ROLL,                 1, {NULL}, 0,  0, S_PLAY_ROLL}, // S_PLAY_ROLL
-	{SPR_PLAY, SPR2_GASP|FF_ANIMATE,     14, {NULL}, 0,  4, S_PLAY_WALK}, // S_PLAY_GASP
-	{SPR_PLAY, SPR2_JUMP,                 1, {NULL}, 0,  0, S_PLAY_JUMP}, // S_PLAY_JUMP
-	{SPR_PLAY, SPR2_SPNG,                 2, {NULL}, 0,  0, S_PLAY_SPRING}, // S_PLAY_SPRING
-	{SPR_PLAY, SPR2_FALL,                 2, {NULL}, 0,  0, S_PLAY_FALL}, // S_PLAY_FALL
-	{SPR_PLAY, SPR2_EDGE,                12, {NULL}, 0,  0, S_PLAY_EDGE}, // S_PLAY_EDGE
-	{SPR_PLAY, SPR2_RIDE,                 4, {NULL}, 0,  0, S_PLAY_RIDE}, // S_PLAY_RIDE
+	STATE(SPR_PLAY, SPR2_STND|FF_ANIMATE,    105, {NULL}, 0,  7, S_PLAY_WAIT), // S_PLAY_STND
+	STATE(SPR_PLAY, SPR2_WAIT|FF_ANIMATE,     -1, {NULL}, 0, 16, S_NULL),      // S_PLAY_WAIT
+	STATE(SPR_PLAY, SPR2_WALK,                 4, {NULL}, 0,  0, S_PLAY_WALK), // S_PLAY_WALK
+	STATE(SPR_PLAY, SPR2_SKID,                 1, {NULL}, 0,  0, S_PLAY_WALK), // S_PLAY_SKID
+	STATE(SPR_PLAY, SPR2_RUN ,                 2, {NULL}, 0,  0, S_PLAY_RUN),  // S_PLAY_RUN
+	STATE(SPR_PLAY, SPR2_DASH,                 2, {NULL}, 0,  0, S_PLAY_DASH), // S_PLAY_DASH
+	STATE(SPR_PLAY, SPR2_PAIN|FF_ANIMATE,    350, {NULL}, 0,  4, S_PLAY_FALL), // S_PLAY_PAIN
+	STATE(SPR_PLAY, SPR2_STUN|FF_ANIMATE,    350, {NULL}, 0,  4, S_PLAY_FALL), // S_PLAY_STUN
+	STATE(SPR_PLAY, SPR2_DEAD|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL),      // S_PLAY_DEAD
+	STATE(SPR_PLAY, SPR2_DRWN|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL),      // S_PLAY_DRWN
+	STATE(SPR_PLAY, SPR2_ROLL,                 1, {NULL}, 0,  0, S_PLAY_ROLL), // S_PLAY_ROLL
+	STATE(SPR_PLAY, SPR2_GASP|FF_ANIMATE,     14, {NULL}, 0,  4, S_PLAY_WALK), // S_PLAY_GASP
+	STATE(SPR_PLAY, SPR2_JUMP,                 1, {NULL}, 0,  0, S_PLAY_JUMP), // S_PLAY_JUMP
+	STATE(SPR_PLAY, SPR2_SPNG,                 2, {NULL}, 0,  0, S_PLAY_SPRING), // S_PLAY_SPRING
+	STATE(SPR_PLAY, SPR2_FALL,                 2, {NULL}, 0,  0, S_PLAY_FALL), // S_PLAY_FALL
+	STATE(SPR_PLAY, SPR2_EDGE,                12, {NULL}, 0,  0, S_PLAY_EDGE), // S_PLAY_EDGE
+	STATE(SPR_PLAY, SPR2_RIDE,                 4, {NULL}, 0,  0, S_PLAY_RIDE), // S_PLAY_RIDE
 
 	// CA2_SPINDASH
-	{SPR_PLAY, SPR2_SPIN,                 2, {NULL}, 0,  0, S_PLAY_SPINDASH}, // S_PLAY_SPINDASH
+	STATE(SPR_PLAY, SPR2_SPIN,                 2, {NULL}, 0,  0, S_PLAY_SPINDASH), // S_PLAY_SPINDASH
 
 	// CA_FLY/CA_SWIM
-	{SPR_PLAY, SPR2_FLY ,                 2, {NULL}, 0,  0, S_PLAY_FLY},  // S_PLAY_FLY
-	{SPR_PLAY, SPR2_SWIM,                 4, {NULL}, 0,  0, S_PLAY_SWIM}, // S_PLAY_SWIM
-	{SPR_PLAY, SPR2_TIRE,                12, {NULL}, 0,  0, S_PLAY_FLY_TIRED}, // S_PLAY_FLY_TIRED
+	STATE(SPR_PLAY, SPR2_FLY ,                 2, {NULL}, 0,  0, S_PLAY_FLY),  // S_PLAY_FLY
+	STATE(SPR_PLAY, SPR2_SWIM,                 4, {NULL}, 0,  0, S_PLAY_SWIM), // S_PLAY_SWIM
+	STATE(SPR_PLAY, SPR2_TIRE,                12, {NULL}, 0,  0, S_PLAY_FLY_TIRED), // S_PLAY_FLY_TIRED
 
 	// CA_GLIDEANDCLIMB
-	{SPR_PLAY, SPR2_GLID,                 2, {NULL}, 0,  0, S_PLAY_GLIDE}, // S_PLAY_GLIDE
-	{SPR_PLAY, SPR2_LAND,                 7, {NULL}, 0,  0, S_PLAY_STND},  // S_PLAY_GLIDE_LANDING
-	{SPR_PLAY, SPR2_CLNG|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL},       // S_PLAY_CLING
-	{SPR_PLAY, SPR2_CLMB,                 5, {NULL}, 0,  0, S_PLAY_CLIMB}, // S_PLAY_CLIMB
+	STATE(SPR_PLAY, SPR2_GLID,                 2, {NULL}, 0,  0, S_PLAY_GLIDE), // S_PLAY_GLIDE
+	STATE(SPR_PLAY, SPR2_LAND,                 7, {NULL}, 0,  0, S_PLAY_STND),  // S_PLAY_GLIDE_LANDING
+	STATE(SPR_PLAY, SPR2_CLNG|FF_ANIMATE,     -1, {NULL}, 0,  4, S_NULL),       // S_PLAY_CLING
+	STATE(SPR_PLAY, SPR2_CLMB,                 5, {NULL}, 0,  0, S_PLAY_CLIMB), // S_PLAY_CLIMB
 
 	// CA_FLOAT/CA_SLOWFALL
-	{SPR_PLAY, SPR2_FLT ,                 7, {NULL}, 0,  0, S_PLAY_FLOAT}, // S_PLAY_FLOAT
-	{SPR_PLAY, SPR2_FRUN,                 7, {NULL}, 0,  0, S_PLAY_FLOAT_RUN},  // S_PLAY_FLOAT_RUN
+	STATE(SPR_PLAY, SPR2_FLT ,                 7, {NULL}, 0,  0, S_PLAY_FLOAT), // S_PLAY_FLOAT
+	STATE(SPR_PLAY, SPR2_FRUN,                 7, {NULL}, 0,  0, S_PLAY_FLOAT_RUN),  // S_PLAY_FLOAT_RUN
 
 	// CA_BOUNCE
-	{SPR_PLAY, SPR2_BNCE|FF_ANIMATE,     -1, {NULL},             0,  0, S_NULL},                // S_PLAY_BOUNCE
-	{SPR_PLAY, SPR2_LAND|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_BOUNCE,  0, S_PLAY_BOUNCE_LANDING}, // S_PLAY_BOUNCE_LANDING
+	STATE(SPR_PLAY, SPR2_BNCE|FF_ANIMATE,     -1, {NULL},             0,  0, S_NULL),                // S_PLAY_BOUNCE
+	STATE(SPR_PLAY, SPR2_LAND|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_BOUNCE,  0, S_PLAY_BOUNCE_LANDING), // S_PLAY_BOUNCE_LANDING
 
 	// CA2_GUNSLINGER
-	{SPR_PLAY, SPR2_FIRE|FF_SPR2ENDSTATE,  2, {NULL}, S_PLAY_FIRE_FINISH, 0, S_PLAY_FIRE},   // S_PLAY_FIRE
-	{SPR_PLAY, SPR2_FIRE,                 15, {NULL},        S_PLAY_STND, 0, S_PLAY_STND},   // S_PLAY_FIRE_FINISH
+	STATE(SPR_PLAY, SPR2_FIRE|FF_SPR2ENDSTATE,  2, {NULL}, S_PLAY_FIRE_FINISH, 0, S_PLAY_FIRE),   // S_PLAY_FIRE
+	STATE(SPR_PLAY, SPR2_FIRE,                 15, {NULL},        S_PLAY_STND, 0, S_PLAY_STND),   // S_PLAY_FIRE_FINISH
 
 	// CA_TWINSPIN
-	{SPR_PLAY, SPR2_TWIN|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_JUMP, 0, S_PLAY_TWINSPIN}, // S_PLAY_TWINSPIN
+	STATE(SPR_PLAY, SPR2_TWIN|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_JUMP, 0, S_PLAY_TWINSPIN), // S_PLAY_TWINSPIN
 
 	// CA2_MELEE
-	{SPR_PLAY, SPR2_MLEE|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_MELEE_FINISH, 0, S_PLAY_MELEE}, // S_PLAY_MELEE
-	{SPR_PLAY, SPR2_MLEE,                70, {NULL},                   0, 0, S_PLAY_FALL},  // S_PLAY_MELEE_FINISH
-	{SPR_PLAY, SPR2_MLEL,                35, {NULL},                   0, 0, S_PLAY_WALK},  // S_PLAY_MELEE_LANDING
+	STATE(SPR_PLAY, SPR2_MLEE|FF_SPR2ENDSTATE, 2, {NULL}, S_PLAY_MELEE_FINISH, 0, S_PLAY_MELEE), // S_PLAY_MELEE
+	STATE(SPR_PLAY, SPR2_MLEE,                70, {NULL},                   0, 0, S_PLAY_FALL),  // S_PLAY_MELEE_FINISH
+	STATE(SPR_PLAY, SPR2_MLEL,                35, {NULL},                   0, 0, S_PLAY_WALK),  // S_PLAY_MELEE_LANDING
 
 	// SF_SUPER
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_ANIMATE,     7, {NULL},          0, 4, S_PLAY_SUPER_TRANS2}, // S_PLAY_SUPER_TRANS1
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER,                3, {NULL},          0, 0, S_PLAY_SUPER_TRANS3}, // S_PLAY_SUPER_TRANS2
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS4}, // S_PLAY_SUPER_TRANS3
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS5}, // S_PLAY_SUPER_TRANS4
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS6}, // S_PLAY_SUPER_TRANS5
-	{SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 19, {A_FadeOverlay}, 0, 0, S_PLAY_FALL},         // S_PLAY_SUPER_TRANS6
+	STATE(SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_ANIMATE,     7, {NULL},          0, 4, S_PLAY_SUPER_TRANS2), // S_PLAY_SUPER_TRANS1
+	STATE(SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER,                3, {NULL},          0, 0, S_PLAY_SUPER_TRANS3), // S_PLAY_SUPER_TRANS2
+	STATE(SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS4), // S_PLAY_SUPER_TRANS3
+	STATE(SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS5), // S_PLAY_SUPER_TRANS4
+	STATE(SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_SUPER_TRANS6), // S_PLAY_SUPER_TRANS5
+	STATE(SPR_PLAY, SPR2_TRNS|FF_SPR2SUPER|FF_FULLBRIGHT, 19, {A_FadeOverlay}, 0, 0, S_PLAY_FALL),         // S_PLAY_SUPER_TRANS6
 
-	{SPR_NULL, 0, -1, {NULL}, 0, 0, S_OBJPLACE_DUMMY}, //S_OBJPLACE_DUMMY
+	STATE(SPR_NULL, 0, -1, {NULL}, 0, 0, S_OBJPLACE_DUMMY), //S_OBJPLACE_DUMMY
 
 	// 1-Up box sprites (uses player sprite)
-	{SPR_PLAY, SPR2_LIFE,  2, {NULL}, 0, 18, S_PLAY_BOX2},  // S_PLAY_BOX1
-	{SPR_NULL,         0,  1, {NULL}, 0, 18, S_PLAY_BOX1},  // S_PLAY_BOX2
-	{SPR_PLAY, SPR2_LIFE,  4, {NULL}, 0,  4, S_PLAY_ICON2}, // S_PLAY_ICON1
-	{SPR_NULL,         0, 12, {NULL}, 0,  4, S_PLAY_ICON3}, // S_PLAY_ICON2
-	{SPR_PLAY, SPR2_LIFE, 20, {NULL}, 0,  4, S_NULL},       // S_PLAY_ICON3
+	STATE(SPR_PLAY, SPR2_LIFE,  2, {NULL}, 0, 18, S_PLAY_BOX2),  // S_PLAY_BOX1
+	STATE(SPR_NULL,         0,  1, {NULL}, 0, 18, S_PLAY_BOX1),  // S_PLAY_BOX2
+	STATE(SPR_PLAY, SPR2_LIFE,  4, {NULL}, 0,  4, S_PLAY_ICON2), // S_PLAY_ICON1
+	STATE(SPR_NULL,         0, 12, {NULL}, 0,  4, S_PLAY_ICON3), // S_PLAY_ICON2
+	STATE(SPR_PLAY, SPR2_LIFE, 20, {NULL}, 0,  4, S_NULL),       // S_PLAY_ICON3
 
 	// Level end sign (uses player sprite)
-	{SPR_PLAY, SPR2_SIGN|FF_PAPERSPRITE, 2, {NULL}, 0, 29, S_PLAY_SIGN},         // S_PLAY_SIGN
+	STATE(SPR_PLAY, SPR2_SIGN|FF_PAPERSPRITE, 2, {NULL}, 0, 29, S_PLAY_SIGN),         // S_PLAY_SIGN
 
 	// NiGHTS Player, transforming
-	{SPR_PLAY, SPR2_TRNS|FF_ANIMATE,     7, {NULL},          0, 4, S_PLAY_NIGHTS_TRANS2}, // S_PLAY_NIGHTS_TRANS1
-	{SPR_PLAY, SPR2_TRNS,                3, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS3}, // S_PLAY_NIGHTS_TRANS2
-	{SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS4}, // S_PLAY_NIGHTS_TRANS3
-	{SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS5}, // S_PLAY_NIGHTS_TRANS4
-	{SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS6}, // S_PLAY_NIGHTS_TRANS5
-	{SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 21, {A_FadeOverlay}, 2, 0, S_PLAY_NIGHTS_FLOAT},  // S_PLAY_NIGHTS_TRANS5
+	STATE(SPR_PLAY, SPR2_TRNS|FF_ANIMATE,     7, {NULL},          0, 4, S_PLAY_NIGHTS_TRANS2), // S_PLAY_NIGHTS_TRANS1
+	STATE(SPR_PLAY, SPR2_TRNS,                3, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS3), // S_PLAY_NIGHTS_TRANS2
+	STATE(SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS4), // S_PLAY_NIGHTS_TRANS3
+	STATE(SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS5), // S_PLAY_NIGHTS_TRANS4
+	STATE(SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT,  2, {NULL},          0, 0, S_PLAY_NIGHTS_TRANS6), // S_PLAY_NIGHTS_TRANS5
+	STATE(SPR_PLAY, SPR2_TRNS|FF_FULLBRIGHT, 21, {A_FadeOverlay}, 2, 0, S_PLAY_NIGHTS_FLOAT),  // S_PLAY_NIGHTS_TRANS5
 
 	// NiGHTS Player
-	{SPR_PLAY, SPR2_NSTD, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_STAND},  // S_PLAY_NIGHTS_STAND
-	{SPR_PLAY, SPR2_NFLT, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_FLOAT},  // S_PLAY_NIGHTS_FLOAT
-	{SPR_PLAY, SPR2_NFLY, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_FLY},    // S_PLAY_NIGHTS_FLY
-	{SPR_PLAY, SPR2_NDRL, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_DRILL},  // S_PLAY_NIGHTS_DRILL
-	{SPR_PLAY, SPR2_NSTN, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_STUN},   // S_PLAY_NIGHTS_STUN
-	{SPR_PLAY, SPR2_NPUL, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_PULL},   // S_PLAY_NIGHTS_PULL
-	{SPR_PLAY, SPR2_NATK, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_ATTACK}, // S_PLAY_NIGHTS_ATTACK
+	STATE(SPR_PLAY, SPR2_NSTD, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_STAND),  // S_PLAY_NIGHTS_STAND
+	STATE(SPR_PLAY, SPR2_NFLT, 7, {NULL}, 0, 0, S_PLAY_NIGHTS_FLOAT),  // S_PLAY_NIGHTS_FLOAT
+	STATE(SPR_PLAY, SPR2_NFLY, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_FLY),    // S_PLAY_NIGHTS_FLY
+	STATE(SPR_PLAY, SPR2_NDRL, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_DRILL),  // S_PLAY_NIGHTS_DRILL
+	STATE(SPR_PLAY, SPR2_NSTN, 2, {NULL}, 0, 0, S_PLAY_NIGHTS_STUN),   // S_PLAY_NIGHTS_STUN
+	STATE(SPR_PLAY, SPR2_NPUL, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_PULL),   // S_PLAY_NIGHTS_PULL
+	STATE(SPR_PLAY, SPR2_NATK, 1, {NULL}, 0, 0, S_PLAY_NIGHTS_ATTACK), // S_PLAY_NIGHTS_ATTACK
 
 	// c:
-	{SPR_PLAY, SPR2_TAL0|FF_SPR2MIDSTART,  5, {NULL}, 0, 0, S_TAILSOVERLAY_STAND}, // S_TAILSOVERLAY_STAND
-	{SPR_PLAY, SPR2_TAL1|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_0DEGREES}, // S_TAILSOVERLAY_0DEGREES
-	{SPR_PLAY, SPR2_TAL2|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS30DEGREES}, // S_TAILSOVERLAY_PLUS30DEGREES
-	{SPR_PLAY, SPR2_TAL3|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS60DEGREES}, // S_TAILSOVERLAY_PLUS60DEGREES
-	{SPR_PLAY, SPR2_TAL4|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS30DEGREES}, // S_TAILSOVERLAY_MINUS30DEGREES
-	{SPR_PLAY, SPR2_TAL5|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS60DEGREES}, // S_TAILSOVERLAY_MINUS60DEGREES
-	{SPR_PLAY, SPR2_TAL6|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_RUN}, // S_TAILSOVERLAY_RUN
-	{SPR_PLAY, SPR2_TAL7|FF_SPR2MIDSTART,  4, {NULL}, 0, 0, S_TAILSOVERLAY_FLY}, // S_TAILSOVERLAY_FLY
-	{SPR_PLAY, SPR2_TAL8|FF_SPR2MIDSTART,  4, {NULL}, 0, 0, S_TAILSOVERLAY_TIRE}, // S_TAILSOVERLAY_TIRE
-	{SPR_PLAY, SPR2_TAL9|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PAIN}, // S_TAILSOVERLAY_PAIN
-	{SPR_PLAY, SPR2_TALA|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_GASP}, // S_TAILSOVERLAY_GASP
-	{SPR_PLAY, SPR2_TALB                , 35, {NULL}, 0, 0, S_TAILSOVERLAY_EDGE}, // S_TAILSOVERLAY_EDGE
-	{SPR_PLAY, SPR2_TALC|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_DASH}, // S_TAILSOVERLAY_DASH
+	STATE(SPR_PLAY, SPR2_TAL0|FF_SPR2MIDSTART,  5, {NULL}, 0, 0, S_TAILSOVERLAY_STAND), // S_TAILSOVERLAY_STAND
+	STATE(SPR_PLAY, SPR2_TAL1|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_0DEGREES), // S_TAILSOVERLAY_0DEGREES
+	STATE(SPR_PLAY, SPR2_TAL2|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS30DEGREES), // S_TAILSOVERLAY_PLUS30DEGREES
+	STATE(SPR_PLAY, SPR2_TAL3|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PLUS60DEGREES), // S_TAILSOVERLAY_PLUS60DEGREES
+	STATE(SPR_PLAY, SPR2_TAL4|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS30DEGREES), // S_TAILSOVERLAY_MINUS30DEGREES
+	STATE(SPR_PLAY, SPR2_TAL5|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_MINUS60DEGREES), // S_TAILSOVERLAY_MINUS60DEGREES
+	STATE(SPR_PLAY, SPR2_TAL6|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_RUN), // S_TAILSOVERLAY_RUN
+	STATE(SPR_PLAY, SPR2_TAL7|FF_SPR2MIDSTART,  4, {NULL}, 0, 0, S_TAILSOVERLAY_FLY), // S_TAILSOVERLAY_FLY
+	STATE(SPR_PLAY, SPR2_TAL8|FF_SPR2MIDSTART,  4, {NULL}, 0, 0, S_TAILSOVERLAY_TIRE), // S_TAILSOVERLAY_TIRE
+	STATE(SPR_PLAY, SPR2_TAL9|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_PAIN), // S_TAILSOVERLAY_PAIN
+	STATE(SPR_PLAY, SPR2_TALA|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_GASP), // S_TAILSOVERLAY_GASP
+	STATE(SPR_PLAY, SPR2_TALB                , 35, {NULL}, 0, 0, S_TAILSOVERLAY_EDGE), // S_TAILSOVERLAY_EDGE
+	STATE(SPR_PLAY, SPR2_TALC|FF_SPR2MIDSTART, 35, {NULL}, 0, 0, S_TAILSOVERLAY_DASH), // S_TAILSOVERLAY_DASH
 
 	// [:
-	{SPR_JETF, 3|FF_ANIMATE|FF_FULLBRIGHT, 2, {NULL}, 1, 1, S_JETFUME1}, // S_JETFUMEFLASH
+	STATE(SPR_JETF, 3|FF_ANIMATE|FF_FULLBRIGHT, 2, {NULL}, 1, 1, S_JETFUME1), // S_JETFUMEFLASH
 
 	// Blue Crawla
-	{SPR_POSS, 0, 5, {A_Look}, 0, 0, S_POSS_STND},   // S_POSS_STND
-	{SPR_POSS, 0, 3, {A_Chase}, 0, 0, S_POSS_RUN2},   // S_POSS_RUN1
-	{SPR_POSS, 1, 3, {A_Chase}, 0, 0, S_POSS_RUN3},   // S_POSS_RUN2
-	{SPR_POSS, 2, 3, {A_Chase}, 0, 0, S_POSS_RUN4},   // S_POSS_RUN3
-	{SPR_POSS, 3, 3, {A_Chase}, 0, 0, S_POSS_RUN5},   // S_POSS_RUN4
-	{SPR_POSS, 4, 3, {A_Chase}, 0, 0, S_POSS_RUN6},   // S_POSS_RUN5
-	{SPR_POSS, 5, 3, {A_Chase}, 0, 0, S_POSS_RUN1},   // S_POSS_RUN6
+	STATE(SPR_POSS, 0, 5, {A_Look}, 0, 0, S_POSS_STND),   // S_POSS_STND
+	STATE(SPR_POSS, 0, 3, {A_Chase}, 0, 0, S_POSS_RUN2),   // S_POSS_RUN1
+	STATE(SPR_POSS, 1, 3, {A_Chase}, 0, 0, S_POSS_RUN3),   // S_POSS_RUN2
+	STATE(SPR_POSS, 2, 3, {A_Chase}, 0, 0, S_POSS_RUN4),   // S_POSS_RUN3
+	STATE(SPR_POSS, 3, 3, {A_Chase}, 0, 0, S_POSS_RUN5),   // S_POSS_RUN4
+	STATE(SPR_POSS, 4, 3, {A_Chase}, 0, 0, S_POSS_RUN6),   // S_POSS_RUN5
+	STATE(SPR_POSS, 5, 3, {A_Chase}, 0, 0, S_POSS_RUN1),   // S_POSS_RUN6
 
 	// Red Crawla
-	{SPR_SPOS, 0, 5, {A_Look}, 0, 0, S_SPOS_STND},   // S_SPOS_STND
-	{SPR_SPOS, 0, 1, {A_Chase}, 0, 0, S_SPOS_RUN2},   // S_SPOS_RUN1
-	{SPR_SPOS, 1, 1, {A_Chase}, 0, 0, S_SPOS_RUN3},   // S_SPOS_RUN2
-	{SPR_SPOS, 2, 1, {A_Chase}, 0, 0, S_SPOS_RUN4},   // S_SPOS_RUN3
-	{SPR_SPOS, 3, 1, {A_Chase}, 0, 0, S_SPOS_RUN5},   // S_SPOS_RUN4
-	{SPR_SPOS, 4, 1, {A_Chase}, 0, 0, S_SPOS_RUN6},   // S_SPOS_RUN5
-	{SPR_SPOS, 5, 1, {A_Chase}, 0, 0, S_SPOS_RUN1},   // S_SPOS_RUN6
+	STATE(SPR_SPOS, 0, 5, {A_Look}, 0, 0, S_SPOS_STND),   // S_SPOS_STND
+	STATE(SPR_SPOS, 0, 1, {A_Chase}, 0, 0, S_SPOS_RUN2),   // S_SPOS_RUN1
+	STATE(SPR_SPOS, 1, 1, {A_Chase}, 0, 0, S_SPOS_RUN3),   // S_SPOS_RUN2
+	STATE(SPR_SPOS, 2, 1, {A_Chase}, 0, 0, S_SPOS_RUN4),   // S_SPOS_RUN3
+	STATE(SPR_SPOS, 3, 1, {A_Chase}, 0, 0, S_SPOS_RUN5),   // S_SPOS_RUN4
+	STATE(SPR_SPOS, 4, 1, {A_Chase}, 0, 0, S_SPOS_RUN6),   // S_SPOS_RUN5
+	STATE(SPR_SPOS, 5, 1, {A_Chase}, 0, 0, S_SPOS_RUN1),   // S_SPOS_RUN6
 
 	// Greenflower Fish
-	{SPR_FISH, 1, 1, {NULL}, 0, 0, S_FISH2},         // S_FISH1
-	{SPR_FISH, 1, 1, {A_FishJump}, 0, 0, S_FISH1},   // S_FISH2
-	{SPR_FISH, 0, 1, {NULL}, 0, 0, S_FISH4},         // S_FISH3
-	{SPR_FISH, 0, 1, {A_FishJump}, 0, 0, S_FISH3},   // S_FISH4
+	STATE(SPR_FISH, 1, 1, {NULL}, 0, 0, S_FISH2),         // S_FISH1
+	STATE(SPR_FISH, 1, 1, {A_FishJump}, 0, 0, S_FISH1),   // S_FISH2
+	STATE(SPR_FISH, 0, 1, {NULL}, 0, 0, S_FISH4),         // S_FISH3
+	STATE(SPR_FISH, 0, 1, {A_FishJump}, 0, 0, S_FISH3),   // S_FISH4
 
 	// Gold Buzz
-	{SPR_BUZZ, 0, 2, {A_Look}, 0, 0, S_BUZZLOOK2},   // S_BUZZLOOK1
-	{SPR_BUZZ, 1, 2, {A_Look}, 0, 0, S_BUZZLOOK1},   // S_BUZZLOOK2
-	{SPR_BUZZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_BUZZFLY2}, // S_BUZZFLY1
-	{SPR_BUZZ, 1, 2, {A_BuzzFly}, 0, 0, S_BUZZFLY1}, // S_BUZZFLY2
+	STATE(SPR_BUZZ, 0, 2, {A_Look}, 0, 0, S_BUZZLOOK2),   // S_BUZZLOOK1
+	STATE(SPR_BUZZ, 1, 2, {A_Look}, 0, 0, S_BUZZLOOK1),   // S_BUZZLOOK2
+	STATE(SPR_BUZZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_BUZZFLY2), // S_BUZZFLY1
+	STATE(SPR_BUZZ, 1, 2, {A_BuzzFly}, 0, 0, S_BUZZFLY1), // S_BUZZFLY2
 
 	// Red Buzz
-	{SPR_RBUZ, 0, 2, {A_Look}, 0, 0, S_RBUZZLOOK2},   // S_RBUZZLOOK1
-	{SPR_RBUZ, 1, 2, {A_Look}, 0, 0, S_RBUZZLOOK1},   // S_RBUZZLOOK2
-	{SPR_RBUZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_RBUZZFLY2}, // S_RBUZZFLY1
-	{SPR_RBUZ, 1, 2, {A_BuzzFly}, 0, 0, S_RBUZZFLY1}, // S_RBUZZFLY2
+	STATE(SPR_RBUZ, 0, 2, {A_Look}, 0, 0, S_RBUZZLOOK2),   // S_RBUZZLOOK1
+	STATE(SPR_RBUZ, 1, 2, {A_Look}, 0, 0, S_RBUZZLOOK1),   // S_RBUZZLOOK2
+	STATE(SPR_RBUZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_RBUZZFLY2), // S_RBUZZFLY1
+	STATE(SPR_RBUZ, 1, 2, {A_BuzzFly}, 0, 0, S_RBUZZFLY1), // S_RBUZZFLY2
 
 	// Jetty-Syn Bomber
-	{SPR_JETB, 0, 4, {A_Look}, 0, 0, S_JETBLOOK2},      // S_JETBLOOK1
-	{SPR_JETB, 1, 4, {A_Look}, 0, 0, S_JETBLOOK1},      // S_JETBLOOK2
-	{SPR_JETB, 0, 1, {A_JetbThink}, 0, 0, S_JETBZOOM2}, // S_JETBZOOM1
-	{SPR_JETB, 1, 1, {A_JetbThink}, 0, 0, S_JETBZOOM1}, // S_JETBZOOM2
+	STATE(SPR_JETB, 0, 4, {A_Look}, 0, 0, S_JETBLOOK2),      // S_JETBLOOK1
+	STATE(SPR_JETB, 1, 4, {A_Look}, 0, 0, S_JETBLOOK1),      // S_JETBLOOK2
+	STATE(SPR_JETB, 0, 1, {A_JetbThink}, 0, 0, S_JETBZOOM2), // S_JETBZOOM1
+	STATE(SPR_JETB, 1, 1, {A_JetbThink}, 0, 0, S_JETBZOOM1), // S_JETBZOOM2
 
 	// Jetty-Syn Gunner
-	{SPR_JETG, 0, 4, {A_Look}, 0, 0, S_JETGLOOK2},       // S_JETGLOOK1
-	{SPR_JETG, 1, 4, {A_Look}, 0, 0, S_JETGLOOK1},       // S_JETGLOOK2
-	{SPR_JETG, 0, 1, {A_JetgThink}, 0, 0, S_JETGZOOM2},  // S_JETGZOOM1
-	{SPR_JETG, 1, 1, {A_JetgThink}, 0, 0, S_JETGZOOM1},  // S_JETGZOOM2
-	{SPR_JETG, 2, 1, {A_JetgShoot}, 0, 0, S_JETGSHOOT2}, // S_JETGSHOOT1
-	{SPR_JETG, 3, 1, {NULL}, 0, 0, S_JETGZOOM1},         // S_JETGSHOOT2
+	STATE(SPR_JETG, 0, 4, {A_Look}, 0, 0, S_JETGLOOK2),       // S_JETGLOOK1
+	STATE(SPR_JETG, 1, 4, {A_Look}, 0, 0, S_JETGLOOK1),       // S_JETGLOOK2
+	STATE(SPR_JETG, 0, 1, {A_JetgThink}, 0, 0, S_JETGZOOM2),  // S_JETGZOOM1
+	STATE(SPR_JETG, 1, 1, {A_JetgThink}, 0, 0, S_JETGZOOM1),  // S_JETGZOOM2
+	STATE(SPR_JETG, 2, 1, {A_JetgShoot}, 0, 0, S_JETGSHOOT2), // S_JETGSHOOT1
+	STATE(SPR_JETG, 3, 1, {NULL}, 0, 0, S_JETGZOOM1),         // S_JETGSHOOT2
 
 	// Crawla Commander
-	{SPR_CCOM, 0, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND2}, // S_CCOMMAND1
-	{SPR_CCOM, 1, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND1}, // S_CCOMMAND2
-	{SPR_CCOM, 2, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND4}, // S_CCOMMAND3
-	{SPR_CCOM, 3, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND3}, // S_CCOMMAND4
+	STATE(SPR_CCOM, 0, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND2), // S_CCOMMAND1
+	STATE(SPR_CCOM, 1, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND1), // S_CCOMMAND2
+	STATE(SPR_CCOM, 2, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND4), // S_CCOMMAND3
+	STATE(SPR_CCOM, 3, 1, {A_CrawlaCommanderThink}, 0, 15*FRACUNIT, S_CCOMMAND3), // S_CCOMMAND4
 
 	// Deton
-	{SPR_DETN, 0, 35, {A_Look}, 0, 0, S_DETON1},       // S_DETON1
-	{SPR_DETN, 0,  1, {A_DetonChase}, 0, 0, S_DETON3},  // S_DETON2
-	{SPR_DETN, 1,  1, {A_DetonChase}, 0, 0, S_DETON4},  // S_DETON3
-	{SPR_DETN, 2,  1, {A_DetonChase}, 0, 0, S_DETON5},  // S_DETON4
-	{SPR_DETN, 3,  1, {A_DetonChase}, 0, 0, S_DETON6},  // S_DETON5
-	{SPR_DETN, 4,  1, {A_DetonChase}, 0, 0, S_DETON7},  // S_DETON6
-	{SPR_DETN, 5,  1, {A_DetonChase}, 0, 0, S_DETON8},  // S_DETON7
-	{SPR_DETN, 6,  1, {A_DetonChase}, 0, 0, S_DETON9},  // S_DETON8
-	{SPR_DETN, 7,  1, {A_DetonChase}, 0, 0, S_DETON10}, // S_DETON9
-	{SPR_DETN, 6,  1, {A_DetonChase}, 0, 0, S_DETON11}, // S_DETON10
-	{SPR_DETN, 5,  1, {A_DetonChase}, 0, 0, S_DETON12}, // S_DETON11
-	{SPR_DETN, 4,  1, {A_DetonChase}, 0, 0, S_DETON13}, // S_DETON12
-	{SPR_DETN, 3,  1, {A_DetonChase}, 0, 0, S_DETON14}, // S_DETON13
-	{SPR_DETN, 2,  1, {A_DetonChase}, 0, 0, S_DETON15}, // S_DETON14
-	{SPR_DETN, 1,  1, {A_DetonChase}, 0, 0, S_DETON2},  // S_DETON15
+	STATE(SPR_DETN, 0, 35, {A_Look}, 0, 0, S_DETON1),       // S_DETON1
+	STATE(SPR_DETN, 0,  1, {A_DetonChase}, 0, 0, S_DETON3),  // S_DETON2
+	STATE(SPR_DETN, 1,  1, {A_DetonChase}, 0, 0, S_DETON4),  // S_DETON3
+	STATE(SPR_DETN, 2,  1, {A_DetonChase}, 0, 0, S_DETON5),  // S_DETON4
+	STATE(SPR_DETN, 3,  1, {A_DetonChase}, 0, 0, S_DETON6),  // S_DETON5
+	STATE(SPR_DETN, 4,  1, {A_DetonChase}, 0, 0, S_DETON7),  // S_DETON6
+	STATE(SPR_DETN, 5,  1, {A_DetonChase}, 0, 0, S_DETON8),  // S_DETON7
+	STATE(SPR_DETN, 6,  1, {A_DetonChase}, 0, 0, S_DETON9),  // S_DETON8
+	STATE(SPR_DETN, 7,  1, {A_DetonChase}, 0, 0, S_DETON10), // S_DETON9
+	STATE(SPR_DETN, 6,  1, {A_DetonChase}, 0, 0, S_DETON11), // S_DETON10
+	STATE(SPR_DETN, 5,  1, {A_DetonChase}, 0, 0, S_DETON12), // S_DETON11
+	STATE(SPR_DETN, 4,  1, {A_DetonChase}, 0, 0, S_DETON13), // S_DETON12
+	STATE(SPR_DETN, 3,  1, {A_DetonChase}, 0, 0, S_DETON14), // S_DETON13
+	STATE(SPR_DETN, 2,  1, {A_DetonChase}, 0, 0, S_DETON15), // S_DETON14
+	STATE(SPR_DETN, 1,  1, {A_DetonChase}, 0, 0, S_DETON2),  // S_DETON15
 
 	// Skim Mine Dropper
-	{SPR_SKIM, 0,  1, {A_SkimChase}, 0, 0, S_SKIM2},    // S_SKIM1
-	{SPR_SKIM, 0,  1, {A_SkimChase}, 0, 0, S_SKIM1},    // S_SKIM2
-	{SPR_SKIM, 0, 14,        {NULL}, 0, 0, S_SKIM4},    // S_SKIM3
-	{SPR_SKIM, 0, 14,  {A_DropMine}, 0, 0, S_SKIM1},    // S_SKIM4
+	STATE(SPR_SKIM, 0,  1, {A_SkimChase}, 0, 0, S_SKIM2),    // S_SKIM1
+	STATE(SPR_SKIM, 0,  1, {A_SkimChase}, 0, 0, S_SKIM1),    // S_SKIM2
+	STATE(SPR_SKIM, 0, 14,        {NULL}, 0, 0, S_SKIM4),    // S_SKIM3
+	STATE(SPR_SKIM, 0, 14,  {A_DropMine}, 0, 0, S_SKIM1),    // S_SKIM4
 
 	// THZ Turret
-	{SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretStop}, 0, 0, S_TURRETFIRE},   // S_TURRET
-	{SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretFire}, 0, 0, S_TURRET},       // S_TURRETFIRE
-	{SPR_TRET, FF_FULLBRIGHT|1, 7, {A_Pain}, 0, 0, S_TURRETSHOCK2},       // S_TURRETSHOCK1
-	{SPR_TRET, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_TURRETSHOCK3},         // S_TURRETSHOCK2
-	{SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK4},         // S_TURRETSHOCK3
-	{SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK5},         // S_TURRETSHOCK4
-	{SPR_TRET, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_TURRETSHOCK6},         // S_TURRETSHOCK5
-	{SPR_TRET, FF_FULLBRIGHT|2, 7, {A_Pain}, 0, 0, S_TURRETSHOCK7},       // S_TURRETSHOCK6
-	{SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK8},         // S_TURRETSHOCK7
-	{SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK9},         // S_TURRETSHOCK8
-	{SPR_TRET, FF_FULLBRIGHT|4, 7, {A_LinedefExecuteFromArg}, 0, 0, S_XPLD1}, // S_TURRETSHOCK9
-
-	{SPR_TURR, 0, 1, {A_Look}, 1, 0, S_TURRETPOPDOWN8},          // S_TURRETLOOK
-	{SPR_TURR, 0, 0, {A_FaceTarget}, 0, 0, S_TURRETPOPUP1},  // S_TURRETSEE
-	{SPR_TURR, 1, 2, {A_Pain}, 0, 0, S_TURRETPOPUP2},  // S_TURRETPOPUP1
-	{SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPUP3},  // S_TURRETPOPUP2
-	{SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPUP4},  // S_TURRETPOPUP3
-	{SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPUP5},  // S_TURRETPOPUP4
-	{SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPUP6},  // S_TURRETPOPUP5
-	{SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPUP7},  // S_TURRETPOPUP6
-	{SPR_TURR, 7, 2, {NULL}, 0, 0, S_TURRETPOPUP8},  // S_TURRETPOPUP7
-	{SPR_TURR, 8, 14,{NULL}, 0, 0, S_TURRETSHOOT},   // S_TURRETPOPUP8
-	{SPR_TURR, 8, 14,{A_JetgShoot}, 0, 0, S_TURRETPOPDOWN1}, // S_TURRETSHOOT
-	{SPR_TURR, 7, 2, {A_Pain}, 0, 0, S_TURRETPOPDOWN2},        // S_TURRETPOPDOWN1
-	{SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPDOWN3},        // S_TURRETPOPDOWN2
-	{SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPDOWN4},        // S_TURRETPOPDOWN3
-	{SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPDOWN5},        // S_TURRETPOPDOWN4
-	{SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPDOWN6},        // S_TURRETPOPDOWN5
-	{SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPDOWN7},        // S_TURRETPOPDOWN6
-	{SPR_TURR, 1, 2, {NULL}, 0, 0, S_TURRETPOPDOWN8},        // S_TURRETPOPDOWN7
-	{SPR_TURR, 0, 69,{A_SetTics}, 0, 1, S_TURRETLOOK},       // S_TURRETPOPDOWN8
+	STATE(SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretStop}, 0, 0, S_TURRETFIRE),   // S_TURRET
+	STATE(SPR_TRET, FF_FULLBRIGHT, 105, {A_TurretFire}, 0, 0, S_TURRET),       // S_TURRETFIRE
+	STATE(SPR_TRET, FF_FULLBRIGHT|1, 7, {A_Pain}, 0, 0, S_TURRETSHOCK2),       // S_TURRETSHOCK1
+	STATE(SPR_TRET, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_TURRETSHOCK3),         // S_TURRETSHOCK2
+	STATE(SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK4),         // S_TURRETSHOCK3
+	STATE(SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK5),         // S_TURRETSHOCK4
+	STATE(SPR_TRET, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_TURRETSHOCK6),         // S_TURRETSHOCK5
+	STATE(SPR_TRET, FF_FULLBRIGHT|2, 7, {A_Pain}, 0, 0, S_TURRETSHOCK7),       // S_TURRETSHOCK6
+	STATE(SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK8),         // S_TURRETSHOCK7
+	STATE(SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK9),         // S_TURRETSHOCK8
+	STATE(SPR_TRET, FF_FULLBRIGHT|4, 7, {A_LinedefExecuteFromArg}, 0, 0, S_XPLD1), // S_TURRETSHOCK9
+
+	STATE(SPR_TURR, 0, 1, {A_Look}, 1, 0, S_TURRETPOPDOWN8),          // S_TURRETLOOK
+	STATE(SPR_TURR, 0, 0, {A_FaceTarget}, 0, 0, S_TURRETPOPUP1),  // S_TURRETSEE
+	STATE(SPR_TURR, 1, 2, {A_Pain}, 0, 0, S_TURRETPOPUP2),  // S_TURRETPOPUP1
+	STATE(SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPUP3),  // S_TURRETPOPUP2
+	STATE(SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPUP4),  // S_TURRETPOPUP3
+	STATE(SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPUP5),  // S_TURRETPOPUP4
+	STATE(SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPUP6),  // S_TURRETPOPUP5
+	STATE(SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPUP7),  // S_TURRETPOPUP6
+	STATE(SPR_TURR, 7, 2, {NULL}, 0, 0, S_TURRETPOPUP8),  // S_TURRETPOPUP7
+	STATE(SPR_TURR, 8, 14,{NULL}, 0, 0, S_TURRETSHOOT),   // S_TURRETPOPUP8
+	STATE(SPR_TURR, 8, 14,{A_JetgShoot}, 0, 0, S_TURRETPOPDOWN1), // S_TURRETSHOOT
+	STATE(SPR_TURR, 7, 2, {A_Pain}, 0, 0, S_TURRETPOPDOWN2),        // S_TURRETPOPDOWN1
+	STATE(SPR_TURR, 6, 2, {NULL}, 0, 0, S_TURRETPOPDOWN3),        // S_TURRETPOPDOWN2
+	STATE(SPR_TURR, 5, 2, {NULL}, 0, 0, S_TURRETPOPDOWN4),        // S_TURRETPOPDOWN3
+	STATE(SPR_TURR, 4, 2, {NULL}, 0, 0, S_TURRETPOPDOWN5),        // S_TURRETPOPDOWN4
+	STATE(SPR_TURR, 3, 2, {NULL}, 0, 0, S_TURRETPOPDOWN6),        // S_TURRETPOPDOWN5
+	STATE(SPR_TURR, 2, 2, {NULL}, 0, 0, S_TURRETPOPDOWN7),        // S_TURRETPOPDOWN6
+	STATE(SPR_TURR, 1, 2, {NULL}, 0, 0, S_TURRETPOPDOWN8),        // S_TURRETPOPDOWN7
+	STATE(SPR_TURR, 0, 69,{A_SetTics}, 0, 1, S_TURRETLOOK),       // S_TURRETPOPDOWN8
 
 	// Spincushion
-	{SPR_SHRP, 0,  2, {A_Look},                 0, 0, S_SPINCUSHION_LOOK},   // S_SPINCUSHION_LOOK
-	{SPR_SHRP, 1,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE2}, // S_SPINCUSHION_CHASE1
-	{SPR_SHRP, 2,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE3}, // S_SPINCUSHION_CHASE2
-	{SPR_SHRP, 3,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE4}, // S_SPINCUSHION_CHASE3
-	{SPR_SHRP, 0,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE1}, // S_SPINCUSHION_CHASE4
-	{SPR_SHRP, 0,  2, {NULL},                   0, 0, S_SPINCUSHION_AIM2},   // S_SPINCUSHION_AIM1
-	{SPR_SHRP, 4,  2, {NULL},                   0, 0, S_SPINCUSHION_AIM3},   // S_SPINCUSHION_AIM2
-	{SPR_SHRP, 5,  2, {A_SetObjectFlags}, MF_PAIN, 2, S_SPINCUSHION_AIM4},   // S_SPINCUSHION_AIM3
-	{SPR_SHRP, 6, 16, {A_MultiShotDist}, (MT_DUST<<16)|6, -32, S_SPINCUSHION_AIM5}, // S_SPINCUSHION_AIM4
-	{SPR_SHRP, 6,  0, {A_PlaySound},   sfx_shrpgo, 1, S_SPINCUSHION_SPIN1},  // S_SPINCUSHION_AIM5
-	{SPR_SHRP, 6,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN2},  // S_SPINCUSHION_SPIN1
-	{SPR_SHRP, 8,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN3},  // S_SPINCUSHION_SPIN2
-	{SPR_SHRP, 7,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN4},  // S_SPINCUSHION_SPIN3
-	{SPR_SHRP, 8,  1, {A_SharpSpin},  MT_SPINDUST, 0, S_SPINCUSHION_SPIN1},  // S_SPINCUSHION_SPIN4
-	{SPR_SHRP, 6,  1, {A_PlaySound},    sfx_s3k69, 1, S_SPINCUSHION_STOP2},  // S_SPINCUSHION_STOP1
-	{SPR_SHRP, 6,  4, {A_SharpDecel},           0, 0, S_SPINCUSHION_STOP2},  // S_SPINCUSHION_STOP2
-	{SPR_SHRP, 5,  4, {A_FaceTarget},           0, 0, S_SPINCUSHION_STOP4},  // S_SPINCUSHION_STOP3
-	{SPR_SHRP, 4,  4, {A_SetObjectFlags}, MF_PAIN, 1, S_SPINCUSHION_LOOK},   // S_SPINCUSHION_STOP4
+	STATE(SPR_SHRP, 0,  2, {A_Look},                 0, 0, S_SPINCUSHION_LOOK),   // S_SPINCUSHION_LOOK
+	STATE(SPR_SHRP, 1,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE2), // S_SPINCUSHION_CHASE1
+	STATE(SPR_SHRP, 2,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE3), // S_SPINCUSHION_CHASE2
+	STATE(SPR_SHRP, 3,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE4), // S_SPINCUSHION_CHASE3
+	STATE(SPR_SHRP, 0,  2, {A_SharpChase},           0, 0, S_SPINCUSHION_CHASE1), // S_SPINCUSHION_CHASE4
+	STATE(SPR_SHRP, 0,  2, {NULL},                   0, 0, S_SPINCUSHION_AIM2),   // S_SPINCUSHION_AIM1
+	STATE(SPR_SHRP, 4,  2, {NULL},                   0, 0, S_SPINCUSHION_AIM3),   // S_SPINCUSHION_AIM2
+	STATE(SPR_SHRP, 5,  2, {A_SetObjectFlags}, MF_PAIN, 2, S_SPINCUSHION_AIM4),   // S_SPINCUSHION_AIM3
+	STATE(SPR_SHRP, 6, 16, {A_MultiShotDist}, (MT_DUST<<16)|6, -32, S_SPINCUSHION_AIM5), // S_SPINCUSHION_AIM4
+	STATE(SPR_SHRP, 6,  0, {A_PlaySound},   sfx_shrpgo, 1, S_SPINCUSHION_SPIN1),  // S_SPINCUSHION_AIM5
+	STATE(SPR_SHRP, 6,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN2),  // S_SPINCUSHION_SPIN1
+	STATE(SPR_SHRP, 8,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN3),  // S_SPINCUSHION_SPIN2
+	STATE(SPR_SHRP, 7,  1, {A_SharpSpin},            0, 0, S_SPINCUSHION_SPIN4),  // S_SPINCUSHION_SPIN3
+	STATE(SPR_SHRP, 8,  1, {A_SharpSpin},  MT_SPINDUST, 0, S_SPINCUSHION_SPIN1),  // S_SPINCUSHION_SPIN4
+	STATE(SPR_SHRP, 6,  1, {A_PlaySound},    sfx_s3k69, 1, S_SPINCUSHION_STOP2),  // S_SPINCUSHION_STOP1
+	STATE(SPR_SHRP, 6,  4, {A_SharpDecel},           0, 0, S_SPINCUSHION_STOP2),  // S_SPINCUSHION_STOP2
+	STATE(SPR_SHRP, 5,  4, {A_FaceTarget},           0, 0, S_SPINCUSHION_STOP4),  // S_SPINCUSHION_STOP3
+	STATE(SPR_SHRP, 4,  4, {A_SetObjectFlags}, MF_PAIN, 1, S_SPINCUSHION_LOOK),   // S_SPINCUSHION_STOP4
 
 	// Crushstacean
-	{SPR_CRAB, 0,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM2},     // S_CRUSHSTACEAN_ROAM1
-	{SPR_CRAB, 1,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM3},     // S_CRUSHSTACEAN_ROAM2
-	{SPR_CRAB, 0,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM4},     // S_CRUSHSTACEAN_ROAM3
-	{SPR_CRAB, 2,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM1},     // S_CRUSHSTACEAN_ROAM4
-	{SPR_CRAB, 0, 40, {NULL},                0,                        0, S_CRUSHSTACEAN_ROAM1},     // S_CRUSHSTACEAN_ROAMPAUSE
-	{SPR_CRAB, 0, 10, {NULL},                0,                        0, S_CRUSHSTACEAN_PUNCH2},    // S_CRUSHSTACEAN_PUNCH1
-	{SPR_CRAB, 0, -1, {A_CrushstaceanPunch}, 0,                        0, S_CRUSHSTACEAN_ROAMPAUSE}, // S_CRUSHSTACEAN_PUNCH2
-	{SPR_CRAB, 3,  1, {A_CrushclawAim},   40,               20, S_CRUSHCLAW_AIM}, // S_CRUSHCLAW_AIM
-	{SPR_CRAB, 3,  1, {A_CrushclawLaunch}, 0, S_CRUSHCLAW_STAY, S_CRUSHCLAW_OUT}, // S_CRUSHCLAW_OUT
-	{SPR_CRAB, 3, 10, {NULL},              0,                0, S_CRUSHCLAW_IN},  // S_CRUSHCLAW_STAY
-	{SPR_CRAB, 3,  1, {A_CrushclawLaunch}, 1, S_CRUSHCLAW_WAIT, S_CRUSHCLAW_IN},  // S_CRUSHCLAW_IN
-	{SPR_CRAB, 3, 37, {NULL},              0,                0, S_CRUSHCLAW_AIM}, // S_CRUSHCLAW_WAIT
-	{SPR_CRAB, 4, -1, {NULL}, 0, 0, S_NULL}, // S_CRUSHCHAIN
+	STATE(SPR_CRAB, 0,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM2),     // S_CRUSHSTACEAN_ROAM1
+	STATE(SPR_CRAB, 1,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM3),     // S_CRUSHSTACEAN_ROAM2
+	STATE(SPR_CRAB, 0,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM4),     // S_CRUSHSTACEAN_ROAM3
+	STATE(SPR_CRAB, 2,  3, {A_CrushstaceanWalk},  0, S_CRUSHSTACEAN_ROAMPAUSE, S_CRUSHSTACEAN_ROAM1),     // S_CRUSHSTACEAN_ROAM4
+	STATE(SPR_CRAB, 0, 40, {NULL},                0,                        0, S_CRUSHSTACEAN_ROAM1),     // S_CRUSHSTACEAN_ROAMPAUSE
+	STATE(SPR_CRAB, 0, 10, {NULL},                0,                        0, S_CRUSHSTACEAN_PUNCH2),    // S_CRUSHSTACEAN_PUNCH1
+	STATE(SPR_CRAB, 0, -1, {A_CrushstaceanPunch}, 0,                        0, S_CRUSHSTACEAN_ROAMPAUSE), // S_CRUSHSTACEAN_PUNCH2
+	STATE(SPR_CRAB, 3,  1, {A_CrushclawAim},   40,               20, S_CRUSHCLAW_AIM), // S_CRUSHCLAW_AIM
+	STATE(SPR_CRAB, 3,  1, {A_CrushclawLaunch}, 0, S_CRUSHCLAW_STAY, S_CRUSHCLAW_OUT), // S_CRUSHCLAW_OUT
+	STATE(SPR_CRAB, 3, 10, {NULL},              0,                0, S_CRUSHCLAW_IN),  // S_CRUSHCLAW_STAY
+	STATE(SPR_CRAB, 3,  1, {A_CrushclawLaunch}, 1, S_CRUSHCLAW_WAIT, S_CRUSHCLAW_IN),  // S_CRUSHCLAW_IN
+	STATE(SPR_CRAB, 3, 37, {NULL},              0,                0, S_CRUSHCLAW_AIM), // S_CRUSHCLAW_WAIT
+	STATE(SPR_CRAB, 4, -1, {NULL}, 0, 0, S_NULL), // S_CRUSHCHAIN
 
 	// Banpyura
-	{SPR_CR2B, 0,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM2}, // S_BANPYURA_ROAM1
-	{SPR_CR2B, 1,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM3}, // S_BANPYURA_ROAM2
-	{SPR_CR2B, 0,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM4}, // S_BANPYURA_ROAM3
-	{SPR_CR2B, 2,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM1}, // S_BANPYURA_ROAM4
-	{SPR_CR2B, 0, 40, {NULL},                0,                    0, S_BANPYURA_ROAM1}, // S_BANPYURA_ROAMPAUSE
-
-	{SPR_CSPR, 0, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1}, // S_CDIAG1
-	{SPR_CSPR, 1, 1, {A_Pain},          0,  0, S_CDIAG3}, // S_CDIAG2
-	{SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG4}, // S_CDIAG3
-	{SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG5}, // S_CDIAG4
-	{SPR_CSPR, 4, 1, {A_CrushclawAim}, 50, 20, S_CDIAG6}, // S_CDIAG5
-	{SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG7}, // S_CDIAG6
-	{SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG8}, // S_CDIAG7
-	{SPR_CSPR, 1, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1}, // S_CDIAG8
+	STATE(SPR_CR2B, 0,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM2), // S_BANPYURA_ROAM1
+	STATE(SPR_CR2B, 1,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM3), // S_BANPYURA_ROAM2
+	STATE(SPR_CR2B, 0,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM4), // S_BANPYURA_ROAM3
+	STATE(SPR_CR2B, 2,  3, {A_CrushstaceanWalk},  0, S_BANPYURA_ROAMPAUSE, S_BANPYURA_ROAM1), // S_BANPYURA_ROAM4
+	STATE(SPR_CR2B, 0, 40, {NULL},                0,                    0, S_BANPYURA_ROAM1), // S_BANPYURA_ROAMPAUSE
+
+	STATE(SPR_CSPR, 0, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1), // S_CDIAG1
+	STATE(SPR_CSPR, 1, 1, {A_Pain},          0,  0, S_CDIAG3), // S_CDIAG2
+	STATE(SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG4), // S_CDIAG3
+	STATE(SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG5), // S_CDIAG4
+	STATE(SPR_CSPR, 4, 1, {A_CrushclawAim}, 50, 20, S_CDIAG6), // S_CDIAG5
+	STATE(SPR_CSPR, 3, 1, {A_CrushclawAim}, 50, 20, S_CDIAG7), // S_CDIAG6
+	STATE(SPR_CSPR, 2, 1, {A_CrushclawAim}, 50, 20, S_CDIAG8), // S_CDIAG7
+	STATE(SPR_CSPR, 1, 1, {A_CrushclawAim}, 50, 20, S_CDIAG1), // S_CDIAG8
 
 	// Jet Jaw
-	{SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM2}, // S_JETJAW_ROAM1
-	{SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM3}, // S_JETJAW_ROAM2
-	{SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM4}, // S_JETJAW_ROAM3
-	{SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM5}, // S_JETJAW_ROAM4
-	{SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM6}, // S_JETJAW_ROAM5
-	{SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM7}, // S_JETJAW_ROAM6
-	{SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM8}, // S_JETJAW_ROAM7
-	{SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM1}, // S_JETJAW_ROAM8
-	{SPR_JJAW, 0, 1, {A_DualAction}, S_JETJAW_CHOMP16, S_JETJAW_SOUND,  S_JETJAW_CHOMP2}, // S_JETJAW_CHOMP1
-	{SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP3}, // S_JETJAW_CHOMP2
-	{SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP4}, // S_JETJAW_CHOMP3
-	{SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP5}, // S_JETJAW_CHOMP4
-	{SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP6}, // S_JETJAW_CHOMP5
-	{SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP7}, // S_JETJAW_CHOMP6
-	{SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP8}, // S_JETJAW_CHOMP7
-	{SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP9}, // S_JETJAW_CHOMP8
-	{SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP10}, // S_JETJAW_CHOMP9
-	{SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP11}, // S_JETJAW_CHOMP10
-	{SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP12}, // S_JETJAW_CHOMP11
-	{SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP13}, // S_JETJAW_CHOMP12
-	{SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP14}, // S_JETJAW_CHOMP13
-	{SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP15}, // S_JETJAW_CHOMP14
-	{SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP16}, // S_JETJAW_CHOMP15
-	{SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP1}, // S_JETJAW_CHOMP16
-	{SPR_JJAW, 0, 1, {A_PlayAttackSound},          0,               0,   S_JETJAW_SOUND}, // S_JETJAW_SOUND
+	STATE(SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM2), // S_JETJAW_ROAM1
+	STATE(SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM3), // S_JETJAW_ROAM2
+	STATE(SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM4), // S_JETJAW_ROAM3
+	STATE(SPR_JJAW, 0, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM5), // S_JETJAW_ROAM4
+	STATE(SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM6), // S_JETJAW_ROAM5
+	STATE(SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM7), // S_JETJAW_ROAM6
+	STATE(SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM8), // S_JETJAW_ROAM7
+	STATE(SPR_JJAW, 1, 1, {A_JetJawRoam},               0,               0,   S_JETJAW_ROAM1), // S_JETJAW_ROAM8
+	STATE(SPR_JJAW, 0, 1, {A_DualAction}, S_JETJAW_CHOMP16, S_JETJAW_SOUND,  S_JETJAW_CHOMP2), // S_JETJAW_CHOMP1
+	STATE(SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP3), // S_JETJAW_CHOMP2
+	STATE(SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP4), // S_JETJAW_CHOMP3
+	STATE(SPR_JJAW, 0, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP5), // S_JETJAW_CHOMP4
+	STATE(SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP6), // S_JETJAW_CHOMP5
+	STATE(SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP7), // S_JETJAW_CHOMP6
+	STATE(SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP8), // S_JETJAW_CHOMP7
+	STATE(SPR_JJAW, 1, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP9), // S_JETJAW_CHOMP8
+	STATE(SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP10), // S_JETJAW_CHOMP9
+	STATE(SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP11), // S_JETJAW_CHOMP10
+	STATE(SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP12), // S_JETJAW_CHOMP11
+	STATE(SPR_JJAW, 2, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP13), // S_JETJAW_CHOMP12
+	STATE(SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP14), // S_JETJAW_CHOMP13
+	STATE(SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP15), // S_JETJAW_CHOMP14
+	STATE(SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0, S_JETJAW_CHOMP16), // S_JETJAW_CHOMP15
+	STATE(SPR_JJAW, 3, 1, {A_JetJawChomp},              0,               0,  S_JETJAW_CHOMP1), // S_JETJAW_CHOMP16
+	STATE(SPR_JJAW, 0, 1, {A_PlayAttackSound},          0,               0,   S_JETJAW_SOUND), // S_JETJAW_SOUND
 
 	// Snailer
-	{SPR_SNLR, 0, 1, {A_SnailerThink}, 0, 0, S_SNAILER1}, // S_SNAILER1
-	{SPR_BOM1, 0, 0, {A_FlickySpawn}, 1<<17, 0, S_XPLD1}, // S_SNAILER_FLICKY
+	STATE(SPR_SNLR, 0, 1, {A_SnailerThink}, 0, 0, S_SNAILER1), // S_SNAILER1
+	STATE(SPR_BOM1, 0, 0, {A_FlickySpawn}, 1<<17, 0, S_XPLD1), // S_SNAILER_FLICKY
 
 	// Vulture
-	{SPR_VLTR, 4, 35,        {A_Look},         1, 0, S_VULTURE_STND},  // S_VULTURE_STND
-	{SPR_VLTR, 4, 3,         {A_VultureHover}, 0, 0, S_VULTURE_DRIFT}, // S_VULTURE_DRIFT
-	{SPR_VLTR, 0, 6,         {A_VultureBlast}, 0, 0, S_VULTURE_ZOOM2}, // S_VULTURE_ZOOM1
-	{SPR_VLTR, 0, 3,         {A_VultureFly},   0, 0, S_VULTURE_ZOOM2}, // S_VULTURE_ZOOM2
-	{SPR_VLTR, 0, 3*TICRATE, {NULL},           0, 0, S_VULTURE_DRIFT}, // S_VULTURE_STUNNED
+	STATE(SPR_VLTR, 4, 35,        {A_Look},         1, 0, S_VULTURE_STND),  // S_VULTURE_STND
+	STATE(SPR_VLTR, 4, 3,         {A_VultureHover}, 0, 0, S_VULTURE_DRIFT), // S_VULTURE_DRIFT
+	STATE(SPR_VLTR, 0, 6,         {A_VultureBlast}, 0, 0, S_VULTURE_ZOOM2), // S_VULTURE_ZOOM1
+	STATE(SPR_VLTR, 0, 3,         {A_VultureFly},   0, 0, S_VULTURE_ZOOM2), // S_VULTURE_ZOOM2
+	STATE(SPR_VLTR, 0, 3*TICRATE, {NULL},           0, 0, S_VULTURE_DRIFT), // S_VULTURE_STUNNED
 
 	// Pointy
-	{SPR_PNTY, 0,  1, {A_PointyThink}, 0, 0, S_POINTY1}, // S_POINTY1
+	STATE(SPR_PNTY, 0,  1, {A_PointyThink}, 0, 0, S_POINTY1), // S_POINTY1
 
 	// Pointy Ball
-	{SPR_PNTY, 1,  1, {A_CheckBuddy}, 0, 0, S_POINTYBALL1}, // S_POINTYBALL1
+	STATE(SPR_PNTY, 1,  1, {A_CheckBuddy}, 0, 0, S_POINTYBALL1), // S_POINTYBALL1
 
 	// Robo-Hood
-	{SPR_ARCH, 0,       4,            {A_Look}, 2048<<FRACBITS,   0, S_ROBOHOOD_LOOK},  // S_ROBOHOOD_LOOK
-	{SPR_ARCH, 0,       1,       {A_HoodThink},              0,   0, S_ROBOHOOD_STAND}, // S_ROBOHOOD_STAND
-	{SPR_ARCH, 2, TICRATE, {A_PlayActiveSound},              0,   0, S_ROBOHOOD_FIRE2}, // S_ROBOHOOD_FIRE1
-	{SPR_ARCH, 2,      20,        {A_HoodFire},       MT_ARROW,   0, S_ROBOHOOD_STAND}, // S_ROBOHOOD_FIRE2
-	{SPR_ARCH, 1,       1,      {A_FaceTarget},              0,   0, S_ROBOHOOD_JUMP2}, // S_ROBOHOOD_JUMP1
-	{SPR_ARCH, 1,       1,        {A_BunnyHop},              4, -10, S_ROBOHOOD_JUMP3}, // S_ROBOHOOD_JUMP2
-	{SPR_ARCH, 1,       1,        {A_HoodFall},              0,   0, S_ROBOHOOD_JUMP3}, // S_ROBOHOOD_JUMP3
+	STATE(SPR_ARCH, 0,       4,            {A_Look}, 2048<<FRACBITS,   0, S_ROBOHOOD_LOOK),  // S_ROBOHOOD_LOOK
+	STATE(SPR_ARCH, 0,       1,       {A_HoodThink},              0,   0, S_ROBOHOOD_STAND), // S_ROBOHOOD_STAND
+	STATE(SPR_ARCH, 2, TICRATE, {A_PlayActiveSound},              0,   0, S_ROBOHOOD_FIRE2), // S_ROBOHOOD_FIRE1
+	STATE(SPR_ARCH, 2,      20,        {A_HoodFire},       MT_ARROW,   0, S_ROBOHOOD_STAND), // S_ROBOHOOD_FIRE2
+	STATE(SPR_ARCH, 1,       1,      {A_FaceTarget},              0,   0, S_ROBOHOOD_JUMP2), // S_ROBOHOOD_JUMP1
+	STATE(SPR_ARCH, 1,       1,        {A_BunnyHop},              4, -10, S_ROBOHOOD_JUMP3), // S_ROBOHOOD_JUMP2
+	STATE(SPR_ARCH, 1,       1,        {A_HoodFall},              0,   0, S_ROBOHOOD_JUMP3), // S_ROBOHOOD_JUMP3
 
 	// Castlebot Facestabber
-	{SPR_CBFS, 0,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND2},   // S_FACESTABBER_STND1
-	{SPR_CBFS, 1,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND3},   // S_FACESTABBER_STND2
-	{SPR_CBFS, 2,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND4},   // S_FACESTABBER_STND3
-	{SPR_CBFS, 3,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND5},   // S_FACESTABBER_STND4
-	{SPR_CBFS, 4,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND6},   // S_FACESTABBER_STND5
-	{SPR_CBFS, 5,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND1},   // S_FACESTABBER_STND6
-	{SPR_CBFS, 0,  1,  {A_FaceStabRev},                  20, S_FACESTABBER_CHARGE2, S_FACESTABBER_CHARGE1}, // S_FACESTABBER_CHARGE1
-	{SPR_CBFS, 0,  0,   {A_FaceTarget},                   0,                     0, S_FACESTABBER_CHARGE3}, // S_FACESTABBER_CHARGE2
-	{SPR_CBFS, 7,  1, {A_FaceStabHurl},                   6, S_FACESTABBER_CHARGE4, S_FACESTABBER_CHARGE3}, // S_FACESTABBER_CHARGE3
-	{SPR_CBFS, 7,  1, {A_FaceStabMiss}, 0,   S_FACESTABBER_STND1, S_FACESTABBER_CHARGE4}, // S_FACESTABBER_CHARGE4
-	{SPR_CBFS, 0, 35,         {A_Pain}, 0,                     0, S_FACESTABBER_STND1}, // S_FACESTABBER_PAIN
-	{SPR_CBFS, 0,  2,   {A_BossScream}, 1, 0, S_FACESTABBER_DIE2},  // S_FACESTABBER_DIE1
-	{SPR_NULL, 0,  2,   {A_BossScream}, 1, 0, S_FACESTABBER_DIE3},  // S_FACESTABBER_DIE2
-	{SPR_NULL, 0,  0,       {A_Repeat}, 7, S_FACESTABBER_DIE1,    S_XPLD_FLICKY},       // S_FACESTABBER_DIE3
-
-	{SPR_STAB, FF_PAPERSPRITE|FF_TRANS50|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_FACESTABBERSPEAR
+	STATE(SPR_CBFS, 0,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND2),   // S_FACESTABBER_STND1
+	STATE(SPR_CBFS, 1,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND3),   // S_FACESTABBER_STND2
+	STATE(SPR_CBFS, 2,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND4),   // S_FACESTABBER_STND3
+	STATE(SPR_CBFS, 3,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND5),   // S_FACESTABBER_STND4
+	STATE(SPR_CBFS, 4,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND6),   // S_FACESTABBER_STND5
+	STATE(SPR_CBFS, 5,  1,        {A_Chase},  0, 0, S_FACESTABBER_STND1),   // S_FACESTABBER_STND6
+	STATE(SPR_CBFS, 0,  1,  {A_FaceStabRev},                  20, S_FACESTABBER_CHARGE2, S_FACESTABBER_CHARGE1), // S_FACESTABBER_CHARGE1
+	STATE(SPR_CBFS, 0,  0,   {A_FaceTarget},                   0,                     0, S_FACESTABBER_CHARGE3), // S_FACESTABBER_CHARGE2
+	STATE(SPR_CBFS, 7,  1, {A_FaceStabHurl},                   6, S_FACESTABBER_CHARGE4, S_FACESTABBER_CHARGE3), // S_FACESTABBER_CHARGE3
+	STATE(SPR_CBFS, 7,  1, {A_FaceStabMiss}, 0,   S_FACESTABBER_STND1, S_FACESTABBER_CHARGE4), // S_FACESTABBER_CHARGE4
+	STATE(SPR_CBFS, 0, 35,         {A_Pain}, 0,                     0, S_FACESTABBER_STND1), // S_FACESTABBER_PAIN
+	STATE(SPR_CBFS, 0,  2,   {A_BossScream}, 1, 0, S_FACESTABBER_DIE2),  // S_FACESTABBER_DIE1
+	STATE(SPR_NULL, 0,  2,   {A_BossScream}, 1, 0, S_FACESTABBER_DIE3),  // S_FACESTABBER_DIE2
+	STATE(SPR_NULL, 0,  0,       {A_Repeat}, 7, S_FACESTABBER_DIE1,    S_XPLD_FLICKY),       // S_FACESTABBER_DIE3
+
+	STATE(SPR_STAB, FF_PAPERSPRITE|FF_TRANS50|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_FACESTABBERSPEAR
 
 	// Egg Guard
-	{SPR_SPSH,  0,  1,       {A_Look}, 0, 0, S_EGGGUARD_STND},  // S_EGGGUARD_STND
-	{SPR_SPSH,  1,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK2}, // S_EGGGUARD_WALK1
-	{SPR_SPSH,  2,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK3}, // S_EGGGUARD_WALK2
-	{SPR_SPSH,  3,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK4}, // S_EGGGUARD_WALK3
-	{SPR_SPSH,  4,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK1}, // S_EGGGUARD_WALK4
-	{SPR_SPSH,  5,  5,         {NULL}, 0, 0, S_EGGGUARD_MAD2},  // S_EGGGUARD_MAD1
-	{SPR_SPSH,  6,  5,         {NULL}, 0, 0, S_EGGGUARD_MAD3},  // S_EGGGUARD_MAD2
-	{SPR_SPSH,  7, 15,         {NULL}, 0, 0, S_EGGGUARD_RUN1},  // S_EGGGUARD_MAD3
-	{SPR_SPSH,  8,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN2},  // S_EGGGUARD_RUN1
-	{SPR_SPSH,  9,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN3},  // S_EGGGUARD_RUN2
-	{SPR_SPSH, 10,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN4},  // S_EGGGUARD_RUN3
-	{SPR_SPSH, 11,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN1},  // S_EGGGUARD_RUN4
-
-	{SPR_ESHI, 0, 8, {A_EggShield}, 0, 0, S_EGGSHIELD},  // S_EGGSHIELD
-	{SPR_ESHI, 0, TICRATE/2, {NULL}, 0, 0, S_NULL}, // S_EGGSHIELDBREAK
+	STATE(SPR_SPSH,  0,  1,       {A_Look}, 0, 0, S_EGGGUARD_STND),  // S_EGGGUARD_STND
+	STATE(SPR_SPSH,  1,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK2), // S_EGGGUARD_WALK1
+	STATE(SPR_SPSH,  2,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK3), // S_EGGGUARD_WALK2
+	STATE(SPR_SPSH,  3,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK4), // S_EGGGUARD_WALK3
+	STATE(SPR_SPSH,  4,  3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK1), // S_EGGGUARD_WALK4
+	STATE(SPR_SPSH,  5,  5,         {NULL}, 0, 0, S_EGGGUARD_MAD2),  // S_EGGGUARD_MAD1
+	STATE(SPR_SPSH,  6,  5,         {NULL}, 0, 0, S_EGGGUARD_MAD3),  // S_EGGGUARD_MAD2
+	STATE(SPR_SPSH,  7, 15,         {NULL}, 0, 0, S_EGGGUARD_RUN1),  // S_EGGGUARD_MAD3
+	STATE(SPR_SPSH,  8,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN2),  // S_EGGGUARD_RUN1
+	STATE(SPR_SPSH,  9,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN3),  // S_EGGGUARD_RUN2
+	STATE(SPR_SPSH, 10,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN4),  // S_EGGGUARD_RUN3
+	STATE(SPR_SPSH, 11,  1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN1),  // S_EGGGUARD_RUN4
+
+	STATE(SPR_ESHI, 0, 8, {A_EggShield}, 0, 0, S_EGGSHIELD),  // S_EGGSHIELD
+	STATE(SPR_ESHI, 0, TICRATE/2, {NULL}, 0, 0, S_NULL), // S_EGGSHIELDBREAK
 
 	// Green Snapper
-	{SPR_GSNP, 0, TICRATE, {NULL},             0,              0,               S_SNAPPER_SPAWN2}, // S_SNAPPER_SPAWN
-	{SPR_GSNP, 0, 2,       {A_SnapperSpawn},   MT_SNAPPER_LEG, MT_SNAPPER_HEAD, S_GSNAPPER_STND},  // S_SNAPPER_SPAWN2
-	{SPR_GSNP, 0, 1,       {A_SnapperThinker}, 0,              0,               S_GSNAPPER_STND},  // S_GSNAPPER_STND
-	{SPR_GSNP, 0, 2,       {A_Chase},          0,              0,               S_GSNAPPER2},      // S_GSNAPPER1
-	{SPR_GSNP, 1, 2,       {A_Chase},          0,              0,               S_GSNAPPER3},      // S_GSNAPPER2
-	{SPR_GSNP, 2, 2,       {A_Chase},          0,              0,               S_GSNAPPER4},      // S_GSNAPPER3
-	{SPR_GSNP, 3, 2,       {A_Chase},          0,              0,               S_GSNAPPER1},      // S_GSNAPPER4
-	{SPR_GSNP, 0, 0,       {A_KillSegments},   0,              0,               S_XPLD_FLICKY},    // S_SNAPPER_XPLD
-	{SPR_GSNL, 0, -1,      {NULL},             0,              0,               S_NULL},           // S_SNAPPER_LEG
-	{SPR_GSNL, 1, -1,      {NULL},             0,              0,               S_NULL},           // S_SNAPPER_LEGRAISE
-	{SPR_GSNH, 0, -1,      {NULL},             0,              0,               S_NULL},           // S_SNAPPER_HEAD
+	STATE(SPR_GSNP, 0, TICRATE, {NULL},             0,              0,               S_SNAPPER_SPAWN2), // S_SNAPPER_SPAWN
+	STATE(SPR_GSNP, 0, 2,       {A_SnapperSpawn},   MT_SNAPPER_LEG, MT_SNAPPER_HEAD, S_GSNAPPER_STND),  // S_SNAPPER_SPAWN2
+	STATE(SPR_GSNP, 0, 1,       {A_SnapperThinker}, 0,              0,               S_GSNAPPER_STND),  // S_GSNAPPER_STND
+	STATE(SPR_GSNP, 0, 2,       {A_Chase},          0,              0,               S_GSNAPPER2),      // S_GSNAPPER1
+	STATE(SPR_GSNP, 1, 2,       {A_Chase},          0,              0,               S_GSNAPPER3),      // S_GSNAPPER2
+	STATE(SPR_GSNP, 2, 2,       {A_Chase},          0,              0,               S_GSNAPPER4),      // S_GSNAPPER3
+	STATE(SPR_GSNP, 3, 2,       {A_Chase},          0,              0,               S_GSNAPPER1),      // S_GSNAPPER4
+	STATE(SPR_GSNP, 0, 0,       {A_KillSegments},   0,              0,               S_XPLD_FLICKY),    // S_SNAPPER_XPLD
+	STATE(SPR_GSNL, 0, -1,      {NULL},             0,              0,               S_NULL),           // S_SNAPPER_LEG
+	STATE(SPR_GSNL, 1, -1,      {NULL},             0,              0,               S_NULL),           // S_SNAPPER_LEGRAISE
+	STATE(SPR_GSNH, 0, -1,      {NULL},             0,              0,               S_NULL),           // S_SNAPPER_HEAD
 
 	// Minus
-	{SPR_MNUD, 0,            1,  {NULL},           0, 0, S_MINUS_STND},     // S_MINUS_INIT (required for objectplace to work)
-	{SPR_NULL, 0,            10, {A_Look},         0, 0, S_MINUS_STND},     // S_MINUS_STND
-	{SPR_NULL, 0,            1,  {A_MinusDigging}, 1, 0, S_MINUS_DIGGING2}, // S_MINUS_DIGGING1
-	{SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING3}, // S_MINUS_DIGGING2
-	{SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING4}, // S_MINUS_DIGGING3
-	{SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING1}, // S_MINUS_DIGGING4
-	{SPR_NULL, 0,            25, {NULL},           0, 0, S_MINUS_POPUP},    // S_MINUS_BURST0
-	{SPR_MNUD, FF_ANIMATE,   5,  {NULL},           1, 2, S_MINUS_BURST2},   // S_MINUS_BURST1
-	{SPR_MNUD, 1|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST3},   // S_MINUS_BURST2
-	{SPR_MNUD, 2|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST4},   // S_MINUS_BURST3
-	{SPR_MNUD, 3|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST5},   // S_MINUS_BURST4
-	{SPR_MNUD, 4|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUSDIRT2},     // S_MINUS_BURST5
-	{SPR_MNUS, 3, 1, {A_MinusPopup}, 0, 0, S_MINUS_AERIAL1}, // S_MINUS_POPUP
-	{SPR_MNUS, 0, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL2},   // S_MINUS_AERIAL1
-	{SPR_MNUS, 1, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL3},   // S_MINUS_AERIAL2
-	{SPR_MNUS, 2, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL4},   // S_MINUS_AERIAL3
-	{SPR_MNUS, 3, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL1},   // S_MINUS_AERIAL4
-
-	{SPR_MNUD, FF_ANIMATE, 6, {NULL}, 1, 5, S_MINUSDIRT2}, // S_MINUSDIRT1
-	{SPR_MNUD, 5,          8, {NULL}, 3, 5, S_MINUSDIRT3}, // S_MINUSDIRT2
-	{SPR_MNUD, 4,          8, {NULL}, 3, 5, S_MINUSDIRT4}, // S_MINUSDIRT3
-	{SPR_MNUD, 3,          8, {NULL}, 3, 5, S_MINUSDIRT5}, // S_MINUSDIRT4
-	{SPR_MNUD, 2,          8, {NULL}, 3, 5, S_MINUSDIRT6}, // S_MINUSDIRT5
-	{SPR_MNUD, 1,          8, {NULL}, 3, 5, S_MINUSDIRT7}, // S_MINUSDIRT6
-	{SPR_MNUD, 0,          8, {NULL}, 3, 5, S_NULL},       // S_MINUSDIRT7
+	STATE(SPR_MNUD, 0,            1,  {NULL},           0, 0, S_MINUS_STND),     // S_MINUS_INIT (required for objectplace to work)
+	STATE(SPR_NULL, 0,            10, {A_Look},         0, 0, S_MINUS_STND),     // S_MINUS_STND
+	STATE(SPR_NULL, 0,            1,  {A_MinusDigging}, 1, 0, S_MINUS_DIGGING2), // S_MINUS_DIGGING1
+	STATE(SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING3), // S_MINUS_DIGGING2
+	STATE(SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING4), // S_MINUS_DIGGING3
+	STATE(SPR_NULL, 0,            1,  {A_MinusDigging}, 0, 0, S_MINUS_DIGGING1), // S_MINUS_DIGGING4
+	STATE(SPR_NULL, 0,            25, {NULL},           0, 0, S_MINUS_POPUP),    // S_MINUS_BURST0
+	STATE(SPR_MNUD, FF_ANIMATE,   5,  {NULL},           1, 2, S_MINUS_BURST2),   // S_MINUS_BURST1
+	STATE(SPR_MNUD, 1|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST3),   // S_MINUS_BURST2
+	STATE(SPR_MNUD, 2|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST4),   // S_MINUS_BURST3
+	STATE(SPR_MNUD, 3|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUS_BURST5),   // S_MINUS_BURST4
+	STATE(SPR_MNUD, 4|FF_ANIMATE, 5,  {NULL},           1, 2, S_MINUSDIRT2),     // S_MINUS_BURST5
+	STATE(SPR_MNUS, 3, 1, {A_MinusPopup}, 0, 0, S_MINUS_AERIAL1), // S_MINUS_POPUP
+	STATE(SPR_MNUS, 0, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL2),   // S_MINUS_AERIAL1
+	STATE(SPR_MNUS, 1, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL3),   // S_MINUS_AERIAL2
+	STATE(SPR_MNUS, 2, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL4),   // S_MINUS_AERIAL3
+	STATE(SPR_MNUS, 3, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL1),   // S_MINUS_AERIAL4
+
+	STATE(SPR_MNUD, FF_ANIMATE, 6, {NULL}, 1, 5, S_MINUSDIRT2), // S_MINUSDIRT1
+	STATE(SPR_MNUD, 5,          8, {NULL}, 3, 5, S_MINUSDIRT3), // S_MINUSDIRT2
+	STATE(SPR_MNUD, 4,          8, {NULL}, 3, 5, S_MINUSDIRT4), // S_MINUSDIRT3
+	STATE(SPR_MNUD, 3,          8, {NULL}, 3, 5, S_MINUSDIRT5), // S_MINUSDIRT4
+	STATE(SPR_MNUD, 2,          8, {NULL}, 3, 5, S_MINUSDIRT6), // S_MINUSDIRT5
+	STATE(SPR_MNUD, 1,          8, {NULL}, 3, 5, S_MINUSDIRT7), // S_MINUSDIRT6
+	STATE(SPR_MNUD, 0,          8, {NULL}, 3, 5, S_NULL),       // S_MINUSDIRT7
 
 	// Spring Shell
-	{SPR_SSHL,  0,  4, {A_Look},  0, 0, S_SSHELL_STND},    // S_SSHELL_STND
-	{SPR_SSHL,  0,  4, {A_Chase}, 0, 0, S_SSHELL_RUN2},    // S_SSHELL_RUN1
-	{SPR_SSHL,  1,  4, {A_Chase}, 0, 0, S_SSHELL_RUN3},    // S_SSHELL_RUN2
-	{SPR_SSHL,  2,  4, {A_Chase}, 0, 0, S_SSHELL_RUN4},    // S_SSHELL_RUN3
-	{SPR_SSHL,  3,  4, {A_Chase}, 0, 0, S_SSHELL_RUN1},    // S_SSHELL_RUN4
-	{SPR_SSHL,  7,  4, {A_Pain},  0, 0, S_SSHELL_SPRING2}, // S_SSHELL_SPRING1
-	{SPR_SSHL,  6,  1, {NULL},    0, 0, S_SSHELL_SPRING3}, // S_SSHELL_SPRING2
-	{SPR_SSHL,  5,  1, {NULL},    0, 0, S_SSHELL_SPRING4}, // S_SSHELL_SPRING3
-	{SPR_SSHL,  4,  1, {NULL},    0, 0, S_SSHELL_RUN1},    // S_SSHELL_SPRING4
+	STATE(SPR_SSHL,  0,  4, {A_Look},  0, 0, S_SSHELL_STND),    // S_SSHELL_STND
+	STATE(SPR_SSHL,  0,  4, {A_Chase}, 0, 0, S_SSHELL_RUN2),    // S_SSHELL_RUN1
+	STATE(SPR_SSHL,  1,  4, {A_Chase}, 0, 0, S_SSHELL_RUN3),    // S_SSHELL_RUN2
+	STATE(SPR_SSHL,  2,  4, {A_Chase}, 0, 0, S_SSHELL_RUN4),    // S_SSHELL_RUN3
+	STATE(SPR_SSHL,  3,  4, {A_Chase}, 0, 0, S_SSHELL_RUN1),    // S_SSHELL_RUN4
+	STATE(SPR_SSHL,  7,  4, {A_Pain},  0, 0, S_SSHELL_SPRING2), // S_SSHELL_SPRING1
+	STATE(SPR_SSHL,  6,  1, {NULL},    0, 0, S_SSHELL_SPRING3), // S_SSHELL_SPRING2
+	STATE(SPR_SSHL,  5,  1, {NULL},    0, 0, S_SSHELL_SPRING4), // S_SSHELL_SPRING3
+	STATE(SPR_SSHL,  4,  1, {NULL},    0, 0, S_SSHELL_RUN1),    // S_SSHELL_SPRING4
 
 	// Spring Shell (yellow)
-	{SPR_SSHL,  8,  4, {A_Look},  0, 0, S_YSHELL_STND},    // S_YSHELL_STND
-	{SPR_SSHL,  8,  4, {A_Chase}, 0, 0, S_YSHELL_RUN2},    // S_YSHELL_RUN1
-	{SPR_SSHL,  9,  4, {A_Chase}, 0, 0, S_YSHELL_RUN3},    // S_YSHELL_RUN2
-	{SPR_SSHL, 10,  4, {A_Chase}, 0, 0, S_YSHELL_RUN4},    // S_YSHELL_RUN3
-	{SPR_SSHL, 11,  4, {A_Chase}, 0, 0, S_YSHELL_RUN1},    // S_YSHELL_RUN4
-	{SPR_SSHL, 15,  4, {A_Pain},  0, 0, S_YSHELL_SPRING2}, // S_YSHELL_SPRING1
-	{SPR_SSHL, 14,  1, {NULL},    0, 0, S_YSHELL_SPRING3}, // S_YSHELL_SPRING2
-	{SPR_SSHL, 13,  1, {NULL},    0, 0, S_YSHELL_SPRING4}, // S_YSHELL_SPRING3
-	{SPR_SSHL, 12,  1, {NULL},    0, 0, S_YSHELL_RUN1},    // S_YSHELL_SPRING4
+	STATE(SPR_SSHL,  8,  4, {A_Look},  0, 0, S_YSHELL_STND),    // S_YSHELL_STND
+	STATE(SPR_SSHL,  8,  4, {A_Chase}, 0, 0, S_YSHELL_RUN2),    // S_YSHELL_RUN1
+	STATE(SPR_SSHL,  9,  4, {A_Chase}, 0, 0, S_YSHELL_RUN3),    // S_YSHELL_RUN2
+	STATE(SPR_SSHL, 10,  4, {A_Chase}, 0, 0, S_YSHELL_RUN4),    // S_YSHELL_RUN3
+	STATE(SPR_SSHL, 11,  4, {A_Chase}, 0, 0, S_YSHELL_RUN1),    // S_YSHELL_RUN4
+	STATE(SPR_SSHL, 15,  4, {A_Pain},  0, 0, S_YSHELL_SPRING2), // S_YSHELL_SPRING1
+	STATE(SPR_SSHL, 14,  1, {NULL},    0, 0, S_YSHELL_SPRING3), // S_YSHELL_SPRING2
+	STATE(SPR_SSHL, 13,  1, {NULL},    0, 0, S_YSHELL_SPRING4), // S_YSHELL_SPRING3
+	STATE(SPR_SSHL, 12,  1, {NULL},    0, 0, S_YSHELL_RUN1),    // S_YSHELL_SPRING4
 
 	// Unidus
-	{SPR_UNID, 0, 4, {A_Look},       0, 0, S_UNIDUS_STND}, // S_UNIDUS_STND
-	{SPR_UNID, 0, 1, {A_Chase},      0, 0, S_UNIDUS_RUN }, // S_UNIDUS_RUN
-	{SPR_UNID, 1, 1, {A_UnidusBall}, 1, 0, S_UNIDUS_BALL}, // S_UNIDUS_BALL
+	STATE(SPR_UNID, 0, 4, {A_Look},       0, 0, S_UNIDUS_STND), // S_UNIDUS_STND
+	STATE(SPR_UNID, 0, 1, {A_Chase},      0, 0, S_UNIDUS_RUN ), // S_UNIDUS_RUN
+	STATE(SPR_UNID, 1, 1, {A_UnidusBall}, 1, 0, S_UNIDUS_BALL), // S_UNIDUS_BALL
 
 	// Canarivore
-	{SPR_CANA, 0, 5,  {A_Look},          1200*FRACUNIT+1,   1,                 S_CANARIVORE_LOOK},      // S_CANARIVORE_LOOK
-	{SPR_CANA, 0, 3,  {A_PlaySound},     sfx_s3k76,         1,                 S_CANARIVORE_AWAKEN2},   // S_CANARIVORE_AWAKEN1
-	{SPR_CANA, 1, 5,  {NULL},            0,                 0,                 S_CANARIVORE_AWAKEN3},   // S_CANARIVORE_AWAKEN2
-	{SPR_CANA, 2, 8,  {NULL},            0,                 0,                 S_CANARIVORE_GAS1},      // S_CANARIVORE_AWAKEN3
-	{SPR_CANA, 2, 15, {A_PlaySound},     sfx_s3k93,         1,                 S_CANARIVORE_GAS2},      // S_CANARIVORE_GAS1
-	{SPR_CANA, 1, 4,  {NULL},            0,                 0,                 S_CANARIVORE_GAS3},      // S_CANARIVORE_GAS2
-	{SPR_CANA, 2, 0,  {A_PlaySound},     sfx_s3k97,         1,                 S_CANARIVORE_GAS4},      // S_CANARIVORE_GAS3
-	{SPR_CANA, 2, 5,  {A_CanarivoreGas}, MT_CANARIVORE_GAS, 0,                 S_CANARIVORE_GAS5},      // S_CANARIVORE_GAS4
-	{SPR_CANA, 1, 5,  {NULL},            0,                 0,                 S_CANARIVORE_GASREPEAT}, // S_CANARIVORE_GAS5
-	{SPR_CANA, 2, 0,  {A_Repeat},        6,                 S_CANARIVORE_GAS4, S_CANARIVORE_CLOSE1},    // S_CANARIVORE_GASREPEAT
-	{SPR_CANA, 1, 8,  {NULL},            0,                 0,                 S_CANARIVORE_CLOSE2},     // S_CANARIVORE_CLOSE1
-	{SPR_CANA, 0, 90, {NULL},            sfx_s3k5d,         1,                 S_CANARIVORE_LOOK},      // S_CANARIVORE_CLOSE2
-
-	{SPR_CANG, 0|FF_TRANS90, 2,         {NULL},            0, 0,       S_CANARIVOREGAS_2}, // S_CANARIVOREGAS_1
-	{SPR_CANG, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_CANARIVOREGAS_3}, // S_CANARIVOREGAS_2
-	{SPR_CANG, 0|FF_TRANS40, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_4}, // S_CANARIVOREGAS_3
-	{SPR_CANG, 0|FF_TRANS50, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_5}, // S_CANARIVOREGAS_4
-	{SPR_CANG, 0|FF_TRANS60, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_6}, // S_CANARIVOREGAS_5
-	{SPR_CANG, 0|FF_TRANS70, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_7}, // S_CANARIVOREGAS_6
-	{SPR_CANG, 0|FF_TRANS80, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_8}, // S_CANARIVOREGAS_7
-	{SPR_CANG, 0|FF_TRANS90, 10,        {NULL},            0, 0,       S_NULL},            // S_CANARIVOREGAS_8
+	STATE(SPR_CANA, 0, 5,  {A_Look},          1200*FRACUNIT+1,   1,                 S_CANARIVORE_LOOK),      // S_CANARIVORE_LOOK
+	STATE(SPR_CANA, 0, 3,  {A_PlaySound},     sfx_s3k76,         1,                 S_CANARIVORE_AWAKEN2),   // S_CANARIVORE_AWAKEN1
+	STATE(SPR_CANA, 1, 5,  {NULL},            0,                 0,                 S_CANARIVORE_AWAKEN3),   // S_CANARIVORE_AWAKEN2
+	STATE(SPR_CANA, 2, 8,  {NULL},            0,                 0,                 S_CANARIVORE_GAS1),      // S_CANARIVORE_AWAKEN3
+	STATE(SPR_CANA, 2, 15, {A_PlaySound},     sfx_s3k93,         1,                 S_CANARIVORE_GAS2),      // S_CANARIVORE_GAS1
+	STATE(SPR_CANA, 1, 4,  {NULL},            0,                 0,                 S_CANARIVORE_GAS3),      // S_CANARIVORE_GAS2
+	STATE(SPR_CANA, 2, 0,  {A_PlaySound},     sfx_s3k97,         1,                 S_CANARIVORE_GAS4),      // S_CANARIVORE_GAS3
+	STATE(SPR_CANA, 2, 5,  {A_CanarivoreGas}, MT_CANARIVORE_GAS, 0,                 S_CANARIVORE_GAS5),      // S_CANARIVORE_GAS4
+	STATE(SPR_CANA, 1, 5,  {NULL},            0,                 0,                 S_CANARIVORE_GASREPEAT), // S_CANARIVORE_GAS5
+	STATE(SPR_CANA, 2, 0,  {A_Repeat},        6,                 S_CANARIVORE_GAS4, S_CANARIVORE_CLOSE1),    // S_CANARIVORE_GASREPEAT
+	STATE(SPR_CANA, 1, 8,  {NULL},            0,                 0,                 S_CANARIVORE_CLOSE2),     // S_CANARIVORE_CLOSE1
+	STATE(SPR_CANA, 0, 90, {NULL},            sfx_s3k5d,         1,                 S_CANARIVORE_LOOK),      // S_CANARIVORE_CLOSE2
+
+	STATE(SPR_CANG, 0|FF_TRANS90, 2,         {NULL},            0, 0,       S_CANARIVOREGAS_2), // S_CANARIVOREGAS_1
+	STATE(SPR_CANG, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_CANARIVOREGAS_3), // S_CANARIVOREGAS_2
+	STATE(SPR_CANG, 0|FF_TRANS40, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_4), // S_CANARIVOREGAS_3
+	STATE(SPR_CANG, 0|FF_TRANS50, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_5), // S_CANARIVOREGAS_4
+	STATE(SPR_CANG, 0|FF_TRANS60, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_6), // S_CANARIVOREGAS_5
+	STATE(SPR_CANG, 0|FF_TRANS70, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_7), // S_CANARIVOREGAS_6
+	STATE(SPR_CANG, 0|FF_TRANS80, 10,        {NULL},            0, 0,       S_CANARIVOREGAS_8), // S_CANARIVOREGAS_7
+	STATE(SPR_CANG, 0|FF_TRANS90, 10,        {NULL},            0, 0,       S_NULL),            // S_CANARIVOREGAS_8
 
 	// Pyre Fly
-	{SPR_PYRE, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL}, // S_PYREFLY_FLY
-	{SPR_PYRE, 4|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 3, 2, S_NULL}, // S_PYREFLY_BURN
-	{SPR_FLAM, FF_FULLBRIGHT, 10, {NULL}, 0, 0, S_PYREFIRE2}, // S_PYREFIRE1
-	{SPR_FLAM, 1|FF_FULLBRIGHT, 10, {A_FireShrink}, 0, 16, S_NULL}, // S_PYREFIRE2
+	STATE(SPR_PYRE, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL), // S_PYREFLY_FLY
+	STATE(SPR_PYRE, 4|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 3, 2, S_NULL), // S_PYREFLY_BURN
+	STATE(SPR_FLAM, FF_FULLBRIGHT, 10, {NULL}, 0, 0, S_PYREFIRE2), // S_PYREFIRE1
+	STATE(SPR_FLAM, 1|FF_FULLBRIGHT, 10, {A_FireShrink}, 0, 16, S_NULL), // S_PYREFIRE2
 
 	// Pterabyte
-	{SPR_NULL, 0, -1, {A_SpawnPterabytes}, 0, 0, S_PTERABYTESPAWNER},    // S_PTERABYTESPAWNER
-	{SPR_NULL, 0,  1, {A_PterabyteHover},  0, 0, S_PTERABYTEWAYPOINT},   // S_PTERABYTEWAYPOINT
-	{SPR_PTER, 0,  6, {NULL},              0, 0, S_PTERABYTE_FLY2},      // S_PTERABYTE_FLY1
-	{SPR_PTER, 1,  2, {NULL},              0, 0, S_PTERABYTE_FLY3},      // S_PTERABYTE_FLY2
-	{SPR_PTER, 2,  6, {NULL},              0, 0, S_PTERABYTE_FLY4},      // S_PTERABYTE_FLY3
-	{SPR_PTER, 3,  2, {NULL},              0, 0, S_PTERABYTE_FLY1},      // S_PTERABYTE_FLY4
-	{SPR_PTER, 4,  1, {NULL},              0, 0, S_PTERABYTE_SWOOPDOWN}, // S_PTERABYTE_SWOOPDOWN
-	{SPR_PTER, 0,  1, {NULL},              0, 0, S_PTERABYTE_SWOOPUP},   // S_PTERABYTE_SWOOPUP
+	STATE(SPR_NULL, 0, -1, {A_SpawnPterabytes}, 0, 0, S_PTERABYTESPAWNER),    // S_PTERABYTESPAWNER
+	STATE(SPR_NULL, 0,  1, {A_PterabyteHover},  0, 0, S_PTERABYTEWAYPOINT),   // S_PTERABYTEWAYPOINT
+	STATE(SPR_PTER, 0,  6, {NULL},              0, 0, S_PTERABYTE_FLY2),      // S_PTERABYTE_FLY1
+	STATE(SPR_PTER, 1,  2, {NULL},              0, 0, S_PTERABYTE_FLY3),      // S_PTERABYTE_FLY2
+	STATE(SPR_PTER, 2,  6, {NULL},              0, 0, S_PTERABYTE_FLY4),      // S_PTERABYTE_FLY3
+	STATE(SPR_PTER, 3,  2, {NULL},              0, 0, S_PTERABYTE_FLY1),      // S_PTERABYTE_FLY4
+	STATE(SPR_PTER, 4,  1, {NULL},              0, 0, S_PTERABYTE_SWOOPDOWN), // S_PTERABYTE_SWOOPDOWN
+	STATE(SPR_PTER, 0,  1, {NULL},              0, 0, S_PTERABYTE_SWOOPUP),   // S_PTERABYTE_SWOOPUP
 
 	// Dragonbomber
-	{SPR_DRAB,                0, -1, {A_DragonbomberSpawn}, 6, 0, S_NULL},                          // S_DRAGONBOMBER
-	{SPR_DRAB, FF_PAPERSPRITE|7,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING2},                   // S_DRAGONWING1
-	{SPR_DRAB, FF_PAPERSPRITE|8,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING3},                   // S_DRAGONWING2
-	{SPR_DRAB, FF_PAPERSPRITE|9,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING4},                   // S_DRAGONWING3
-	{SPR_DRAB, FF_PAPERSPRITE|10, 1,        {A_DragonWing}, 0, 0, S_DRAGONWING1},                   // S_DRAGONWING4
-	{SPR_DRAB,                1,  1,     {A_DragonSegment}, 0, 0, S_DRAGONTAIL_LOADED},             // S_DRAGONTAIL_LOADED
-	{SPR_DRAB,                2,  1,     {A_DragonSegment}, 0, 0, S_DRAGONTAIL_EMPTYLOOP},          // S_DRAGONTAIL_EMPTY
-	{SPR_DRAB,                2,  0,            {A_Repeat}, 3*TICRATE, S_DRAGONTAIL_EMPTY, S_DRAGONTAIL_RELOAD}, // S_DRAGONTAIL_EMPTYLOOP
-	{SPR_DRAB,                1,  0,   {A_PlayActiveSound}, 0, 0, S_DRAGONTAIL_LOADED},             // S_DRAGONTAIL_RELOAD
-	{SPR_DRAB,                3,  1,        {A_MinusCheck}, S_DRAGONMINE_LAND1, 0, S_DRAGONMINE},   // S_DRAGONMINE
-	{SPR_DRAB,                4,  0,   {A_PlayActiveSound}, 0, 0, S_DRAGONMINE_LAND2},              // S_DRAGONMINE_LAND1
-	{SPR_DRAB,                4,  2,            {A_Thrust}, 0, 1, S_DRAGONMINE_SLOWFLASH1},         // S_DRAGONMINE_LAND2
-	{SPR_DRAB,                5, 11,                {NULL}, 0, 0, S_DRAGONMINE_SLOWFLASH2},         // S_DRAGONMINE_SLOWFLASH1
-	{SPR_DRAB,  FF_FULLBRIGHT|6,  1,   {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_SLOWLOOP},           // S_DRAGONMINE_SLOWFLASH2
-	{SPR_DRAB,                5,  0,            {A_Repeat}, 4, S_DRAGONMINE_SLOWFLASH1, S_DRAGONMINE_FASTFLASH1}, // S_DRAGONMINE_SLOWLOOP
-	{SPR_DRAB,                5,  3,                {NULL}, 0, 0, S_DRAGONMINE_FASTFLASH2},         // S_DRAGONMINE_FASTFLASH1
-	{SPR_DRAB,  FF_FULLBRIGHT|6,  1,   {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_FASTLOOP},           // S_DRAGONMINE_FASTFLASH2
-	{SPR_DRAB,                5,  0,            {A_Repeat}, 5, S_DRAGONMINE_FASTFLASH1, S_DEATHSTATE}, // S_DRAGONMINE_FASTLOOP
+	STATE(SPR_DRAB,                0, -1, {A_DragonbomberSpawn}, 6, 0, S_NULL),                          // S_DRAGONBOMBER
+	STATE(SPR_DRAB, FF_PAPERSPRITE|7,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING2),                   // S_DRAGONWING1
+	STATE(SPR_DRAB, FF_PAPERSPRITE|8,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING3),                   // S_DRAGONWING2
+	STATE(SPR_DRAB, FF_PAPERSPRITE|9,  1,        {A_DragonWing}, 0, 0, S_DRAGONWING4),                   // S_DRAGONWING3
+	STATE(SPR_DRAB, FF_PAPERSPRITE|10, 1,        {A_DragonWing}, 0, 0, S_DRAGONWING1),                   // S_DRAGONWING4
+	STATE(SPR_DRAB,                1,  1,     {A_DragonSegment}, 0, 0, S_DRAGONTAIL_LOADED),             // S_DRAGONTAIL_LOADED
+	STATE(SPR_DRAB,                2,  1,     {A_DragonSegment}, 0, 0, S_DRAGONTAIL_EMPTYLOOP),          // S_DRAGONTAIL_EMPTY
+	STATE(SPR_DRAB,                2,  0,            {A_Repeat}, 3*TICRATE, S_DRAGONTAIL_EMPTY, S_DRAGONTAIL_RELOAD), // S_DRAGONTAIL_EMPTYLOOP
+	STATE(SPR_DRAB,                1,  0,   {A_PlayActiveSound}, 0, 0, S_DRAGONTAIL_LOADED),             // S_DRAGONTAIL_RELOAD
+	STATE(SPR_DRAB,                3,  1,        {A_MinusCheck}, S_DRAGONMINE_LAND1, 0, S_DRAGONMINE),   // S_DRAGONMINE
+	STATE(SPR_DRAB,                4,  0,   {A_PlayActiveSound}, 0, 0, S_DRAGONMINE_LAND2),              // S_DRAGONMINE_LAND1
+	STATE(SPR_DRAB,                4,  2,            {A_Thrust}, 0, 1, S_DRAGONMINE_SLOWFLASH1),         // S_DRAGONMINE_LAND2
+	STATE(SPR_DRAB,                5, 11,                {NULL}, 0, 0, S_DRAGONMINE_SLOWFLASH2),         // S_DRAGONMINE_SLOWFLASH1
+	STATE(SPR_DRAB,  FF_FULLBRIGHT|6,  1,   {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_SLOWLOOP),           // S_DRAGONMINE_SLOWFLASH2
+	STATE(SPR_DRAB,                5,  0,            {A_Repeat}, 4, S_DRAGONMINE_SLOWFLASH1, S_DRAGONMINE_FASTFLASH1), // S_DRAGONMINE_SLOWLOOP
+	STATE(SPR_DRAB,                5,  3,                {NULL}, 0, 0, S_DRAGONMINE_FASTFLASH2),         // S_DRAGONMINE_FASTFLASH1
+	STATE(SPR_DRAB,  FF_FULLBRIGHT|6,  1,   {A_PlayAttackSound}, 0, 0, S_DRAGONMINE_FASTLOOP),           // S_DRAGONMINE_FASTFLASH2
+	STATE(SPR_DRAB,                5,  0,            {A_Repeat}, 5, S_DRAGONMINE_FASTFLASH1, S_DEATHSTATE), // S_DRAGONMINE_FASTLOOP
 
 	// Boss Explosion
-	{SPR_BOM2, FF_FULLBRIGHT|FF_ANIMATE, (5*7), {NULL}, 6, 5, S_NULL}, // S_BOSSEXPLODE
+	STATE(SPR_BOM2, FF_FULLBRIGHT|FF_ANIMATE, (5*7), {NULL}, 6, 5, S_NULL), // S_BOSSEXPLODE
 
 	// S3&K Boss Explosion
-	{SPR_BOM3, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION2}, // S_SONIC3KBOSSEXPLOSION1
-	{SPR_BOM3, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION3}, // S_SONIC3KBOSSEXPLOSION2
-	{SPR_BOM3, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION4}, // S_SONIC3KBOSSEXPLOSION3
-	{SPR_BOM3, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION5}, // S_SONIC3KBOSSEXPLOSION4
-	{SPR_BOM3, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION6}, // S_SONIC3KBOSSEXPLOSION5
-	{SPR_BOM3, FF_FULLBRIGHT|5, 4, {NULL}, 0, 0, S_NULL}, // S_SONIC3KBOSSEXPLOSION6
+	STATE(SPR_BOM3, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION2), // S_SONIC3KBOSSEXPLOSION1
+	STATE(SPR_BOM3, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION3), // S_SONIC3KBOSSEXPLOSION2
+	STATE(SPR_BOM3, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION4), // S_SONIC3KBOSSEXPLOSION3
+	STATE(SPR_BOM3, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION5), // S_SONIC3KBOSSEXPLOSION4
+	STATE(SPR_BOM3, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION6), // S_SONIC3KBOSSEXPLOSION5
+	STATE(SPR_BOM3, FF_FULLBRIGHT|5, 4, {NULL}, 0, 0, S_NULL), // S_SONIC3KBOSSEXPLOSION6
 
-	{SPR_JETF, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 2, 1, S_NULL}, // S_JETFUME1
+	STATE(SPR_JETF, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 2, 1, S_NULL), // S_JETFUME1
 
 	// Boss 1
-	{SPR_EGGM,  0,   1, {A_Boss1Chase},            0, 0, S_EGGMOBILE_STND},   // S_EGGMOBILE_STND
-	{SPR_EGGM, FF_ANIMATE|17, 35, {A_FaceTarget},  1, 2, S_EGGMOBILE_STND},   // S_EGGMOBILE_ROFL
-	{SPR_EGGM,  1,   3, {A_FaceTarget},            0, 0, S_EGGMOBILE_LATK2},  // S_EGGMOBILE_LATK1
-	{SPR_EGGM,  2,  15, {NULL},                    0, 0, S_EGGMOBILE_LATK3},  // S_EGGMOBILE_LATK2
-	{SPR_EGGM,  3,   2, {NULL},                    0, 0, S_EGGMOBILE_LATK4},  // S_EGGMOBILE_LATK3
-	{SPR_EGGM,  4,   2, {A_FaceTarget},            0, 0, S_EGGMOBILE_LATK5},  // S_EGGMOBILE_LATK4
-	{SPR_EGGM,  6,   0, {A_PrepareRepeat},        45, 0, S_EGGMOBILE_LATK6},  // S_EGGMOBILE_LATK5
-	{SPR_EGGM,  5,   1, {A_Boss1Laser},     MT_LASER, 0, S_EGGMOBILE_LATK7},  // S_EGGMOBILE_LATK6
-	{SPR_EGGM,  6,   1, {A_Boss1Laser},     MT_LASER, (1<<16), S_EGGMOBILE_LATK8},  // S_EGGMOBILE_LATK7
-	{SPR_EGGM,  5,   0, {A_Repeat}, 45, S_EGGMOBILE_LATK6, S_EGGMOBILE_LATK9},  // S_EGGMOBILE_LATK8
-	{SPR_EGGM,  8,  2, {NULL},                     0, 0, S_EGGMOBILE_ROFL}, // S_EGGMOBILE_LATK9
-	{SPR_EGGM,  9,   3, {A_FaceTarget},            0, 0, S_EGGMOBILE_RATK2},  // S_EGGMOBILE_RATK1
-	{SPR_EGGM, 10,  15, {NULL},                    0, 0, S_EGGMOBILE_RATK3},  // S_EGGMOBILE_RATK2
-	{SPR_EGGM, 11,   2, {NULL},                    0, 0, S_EGGMOBILE_RATK4},  // S_EGGMOBILE_RATK3
-	{SPR_EGGM, 12,   2, {A_FaceTarget},            0, 0, S_EGGMOBILE_RATK5},  // S_EGGMOBILE_RATK4
-	{SPR_EGGM, 14,   0, {A_PrepareRepeat},        45, 0, S_EGGMOBILE_RATK6},  // S_EGGMOBILE_RATK5
-	{SPR_EGGM, 13,   1, {A_Boss1Laser},     MT_LASER, 1, S_EGGMOBILE_RATK7},  // S_EGGMOBILE_RATK6
-	{SPR_EGGM, 14,   1, {A_Boss1Laser},     MT_LASER, 1|(1<<16), S_EGGMOBILE_RATK8},  // S_EGGMOBILE_RATK7
-	{SPR_EGGM, 13,   0, {A_Repeat}, 45, S_EGGMOBILE_RATK6, S_EGGMOBILE_RATK9},  // S_EGGMOBILE_RATK8
-	{SPR_EGGM, 16,  2, {NULL},                     0, 0, S_EGGMOBILE_ROFL}, // S_EGGMOBILE_RATK9
-	{SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC2},  // S_EGGMOBILE_PANIC1
-	{SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC3},  // S_EGGMOBILE_PANIC2
-	{SPR_EGGM,  7,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC4},  // S_EGGMOBILE_PANIC3
-	{SPR_EGGM,  6,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC5},  // S_EGGMOBILE_PANIC4
-	{SPR_EGGM,  6,  0, {A_Repeat}, 45,  S_EGGMOBILE_PANIC3, S_EGGMOBILE_PANIC6},  // S_EGGMOBILE_PANIC5
-	{SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC7},  // S_EGGMOBILE_PANIC6
-	{SPR_EGGM, FF_ANIMATE|9, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC8},  // S_EGGMOBILE_PANIC7
-	{SPR_EGGM, 15,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC9},  // S_EGGMOBILE_PANIC8
-	{SPR_EGGM, 14,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC10},  // S_EGGMOBILE_PANIC9
-	{SPR_EGGM, 14,  0, {A_Repeat}, 45,  S_EGGMOBILE_PANIC8, S_EGGMOBILE_PANIC11}, // S_EGGMOBILE_PANIC10
-	{SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC12}, // S_EGGMOBILE_PANIC11
-	{SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC13}, // S_EGGMOBILE_PANIC12
-	{SPR_EGGM,  7,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC14}, // S_EGGMOBILE_PANIC13
-	{SPR_EGGM,  6,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC15}, // S_EGGMOBILE_PANIC14
-	{SPR_EGGM,  6,  0, {A_Repeat}, 45,    S_EGGMOBILE_PANIC13, S_EGGMOBILE_ROFL}, // S_EGGMOBILE_PANIC15
-	{SPR_EGGM, 19,  24, {A_Pain},                  0, 0, S_EGGMOBILE_PAIN2},  // S_EGGMOBILE_PAIN
-	{SPR_EGGM, 19,  16, {A_SkullAttack},           3, 1, S_EGGMOBILE_STND},   // S_EGGMOBILE_PAIN2
-	{SPR_EGGM, 20,  2, {A_Fall},                  17, 0, S_EGGMOBILE_DIE2},   // S_EGGMOBILE_DIE1
-	{SPR_EGGM, 20,  2, {A_BossScream},             0, 0, S_EGGMOBILE_DIE3},   // S_EGGMOBILE_DIE2
-	{SPR_EGGM, 20,  0, {A_Repeat}, 17, S_EGGMOBILE_DIE2, S_EGGMOBILE_DIE4},   // S_EGGMOBILE_DIE3
-	{SPR_EGGM, 20,  -1, {A_BossDeath},             0, 0, S_NULL},             // S_EGGMOBILE_DIE4
-	{SPR_EGGM, 21,  2, {A_BossScream},             0, 0, S_EGGMOBILE_FLEE2},  // S_EGGMOBILE_FLEE1
-	{SPR_EGGM, 22,  2, {A_BossScream},             0, 0, S_EGGMOBILE_FLEE1},  // S_EGGMOBILE_FLEE2
-	{SPR_UNID,  1,  1, {A_UnidusBall},             2, 0, S_EGGMOBILE_BALL},   // S_EGGMOBILE_BALL
-	{SPR_NULL,  0,  1, {A_FocusTarget},            0, 0, S_EGGMOBILE_TARGET}, // S_EGGMOBILE_TARGET
-
-	{SPR_EGLZ, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSEGLZ1
-	{SPR_EGLZ, 1, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSEGLZ2
+	STATE(SPR_EGGM,  0,   1, {A_Boss1Chase},            0, 0, S_EGGMOBILE_STND),   // S_EGGMOBILE_STND
+	STATE(SPR_EGGM, FF_ANIMATE|17, 35, {A_FaceTarget},  1, 2, S_EGGMOBILE_STND),   // S_EGGMOBILE_ROFL
+	STATE(SPR_EGGM,  1,   3, {A_FaceTarget},            0, 0, S_EGGMOBILE_LATK2),  // S_EGGMOBILE_LATK1
+	STATE(SPR_EGGM,  2,  15, {NULL},                    0, 0, S_EGGMOBILE_LATK3),  // S_EGGMOBILE_LATK2
+	STATE(SPR_EGGM,  3,   2, {NULL},                    0, 0, S_EGGMOBILE_LATK4),  // S_EGGMOBILE_LATK3
+	STATE(SPR_EGGM,  4,   2, {A_FaceTarget},            0, 0, S_EGGMOBILE_LATK5),  // S_EGGMOBILE_LATK4
+	STATE(SPR_EGGM,  6,   0, {A_PrepareRepeat},        45, 0, S_EGGMOBILE_LATK6),  // S_EGGMOBILE_LATK5
+	STATE(SPR_EGGM,  5,   1, {A_Boss1Laser},     MT_LASER, 0, S_EGGMOBILE_LATK7),  // S_EGGMOBILE_LATK6
+	STATE(SPR_EGGM,  6,   1, {A_Boss1Laser},     MT_LASER, (1<<16), S_EGGMOBILE_LATK8),  // S_EGGMOBILE_LATK7
+	STATE(SPR_EGGM,  5,   0, {A_Repeat}, 45, S_EGGMOBILE_LATK6, S_EGGMOBILE_LATK9),  // S_EGGMOBILE_LATK8
+	STATE(SPR_EGGM,  8,  2, {NULL},                     0, 0, S_EGGMOBILE_ROFL), // S_EGGMOBILE_LATK9
+	STATE(SPR_EGGM,  9,   3, {A_FaceTarget},            0, 0, S_EGGMOBILE_RATK2),  // S_EGGMOBILE_RATK1
+	STATE(SPR_EGGM, 10,  15, {NULL},                    0, 0, S_EGGMOBILE_RATK3),  // S_EGGMOBILE_RATK2
+	STATE(SPR_EGGM, 11,   2, {NULL},                    0, 0, S_EGGMOBILE_RATK4),  // S_EGGMOBILE_RATK3
+	STATE(SPR_EGGM, 12,   2, {A_FaceTarget},            0, 0, S_EGGMOBILE_RATK5),  // S_EGGMOBILE_RATK4
+	STATE(SPR_EGGM, 14,   0, {A_PrepareRepeat},        45, 0, S_EGGMOBILE_RATK6),  // S_EGGMOBILE_RATK5
+	STATE(SPR_EGGM, 13,   1, {A_Boss1Laser},     MT_LASER, 1, S_EGGMOBILE_RATK7),  // S_EGGMOBILE_RATK6
+	STATE(SPR_EGGM, 14,   1, {A_Boss1Laser},     MT_LASER, 1|(1<<16), S_EGGMOBILE_RATK8),  // S_EGGMOBILE_RATK7
+	STATE(SPR_EGGM, 13,   0, {A_Repeat}, 45, S_EGGMOBILE_RATK6, S_EGGMOBILE_RATK9),  // S_EGGMOBILE_RATK8
+	STATE(SPR_EGGM, 16,  2, {NULL},                     0, 0, S_EGGMOBILE_ROFL), // S_EGGMOBILE_RATK9
+	STATE(SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC2),  // S_EGGMOBILE_PANIC1
+	STATE(SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC3),  // S_EGGMOBILE_PANIC2
+	STATE(SPR_EGGM,  7,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC4),  // S_EGGMOBILE_PANIC3
+	STATE(SPR_EGGM,  6,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC5),  // S_EGGMOBILE_PANIC4
+	STATE(SPR_EGGM,  6,  0, {A_Repeat}, 45,  S_EGGMOBILE_PANIC3, S_EGGMOBILE_PANIC6),  // S_EGGMOBILE_PANIC5
+	STATE(SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC7),  // S_EGGMOBILE_PANIC6
+	STATE(SPR_EGGM, FF_ANIMATE|9, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC8),  // S_EGGMOBILE_PANIC7
+	STATE(SPR_EGGM, 15,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC9),  // S_EGGMOBILE_PANIC8
+	STATE(SPR_EGGM, 14,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC10),  // S_EGGMOBILE_PANIC9
+	STATE(SPR_EGGM, 14,  0, {A_Repeat}, 45,  S_EGGMOBILE_PANIC8, S_EGGMOBILE_PANIC11), // S_EGGMOBILE_PANIC10
+	STATE(SPR_EGGM,  0,  0, {A_PrepareRepeat},            45, 0, S_EGGMOBILE_PANIC12), // S_EGGMOBILE_PANIC11
+	STATE(SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget},      3, 4, S_EGGMOBILE_PANIC13), // S_EGGMOBILE_PANIC12
+	STATE(SPR_EGGM,  7,  1, {A_Boss1Laser},         MT_LASER, 2, S_EGGMOBILE_PANIC14), // S_EGGMOBILE_PANIC13
+	STATE(SPR_EGGM,  6,  1, {A_Boss1Laser},         MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC15), // S_EGGMOBILE_PANIC14
+	STATE(SPR_EGGM,  6,  0, {A_Repeat}, 45,    S_EGGMOBILE_PANIC13, S_EGGMOBILE_ROFL), // S_EGGMOBILE_PANIC15
+	STATE(SPR_EGGM, 19,  24, {A_Pain},                  0, 0, S_EGGMOBILE_PAIN2),  // S_EGGMOBILE_PAIN
+	STATE(SPR_EGGM, 19,  16, {A_SkullAttack},           3, 1, S_EGGMOBILE_STND),   // S_EGGMOBILE_PAIN2
+	STATE(SPR_EGGM, 20,  2, {A_Fall},                  17, 0, S_EGGMOBILE_DIE2),   // S_EGGMOBILE_DIE1
+	STATE(SPR_EGGM, 20,  2, {A_BossScream},             0, 0, S_EGGMOBILE_DIE3),   // S_EGGMOBILE_DIE2
+	STATE(SPR_EGGM, 20,  0, {A_Repeat}, 17, S_EGGMOBILE_DIE2, S_EGGMOBILE_DIE4),   // S_EGGMOBILE_DIE3
+	STATE(SPR_EGGM, 20,  -1, {A_BossDeath},             0, 0, S_NULL),             // S_EGGMOBILE_DIE4
+	STATE(SPR_EGGM, 21,  2, {A_BossScream},             0, 0, S_EGGMOBILE_FLEE2),  // S_EGGMOBILE_FLEE1
+	STATE(SPR_EGGM, 22,  2, {A_BossScream},             0, 0, S_EGGMOBILE_FLEE1),  // S_EGGMOBILE_FLEE2
+	STATE(SPR_UNID,  1,  1, {A_UnidusBall},             2, 0, S_EGGMOBILE_BALL),   // S_EGGMOBILE_BALL
+	STATE(SPR_NULL,  0,  1, {A_FocusTarget},            0, 0, S_EGGMOBILE_TARGET), // S_EGGMOBILE_TARGET
+
+	STATE(SPR_EGLZ, 0, 35, {NULL}, 0, 0, S_NULL), // S_BOSSEGLZ1
+	STATE(SPR_EGLZ, 1, 35, {NULL}, 0, 0, S_NULL), // S_BOSSEGLZ2
 
 	// Boss 2
-	{SPR_EGGN, 0, -1,              {NULL},           0,          0, S_NULL},             // S_EGGMOBILE2_STND
-	{SPR_EGGN, 1, 4,               {NULL},           0,          0, S_EGGMOBILE2_POGO2}, // S_EGGMOBILE2_POGO1
-	{SPR_EGGN, 0, 2,  {A_Boss2PogoTarget},  9*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO3}, // S_EGGMOBILE2_POGO2
-	{SPR_EGGN, 1, 2,               {NULL},           0,          0, S_EGGMOBILE2_POGO4}, // S_EGGMOBILE2_POGO3
-	{SPR_EGGN, 2, -1,              {NULL},           0,          0, S_NULL},             // S_EGGMOBILE2_POGO4
-	{SPR_EGGN, 1, 4,               {NULL},           0,          0, S_EGGMOBILE2_POGO6}, // S_EGGMOBILE2_POGO5
-	{SPR_EGGN, 0, 2,  {A_Boss2PogoTarget},  7*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO7}, // S_EGGMOBILE2_POGO6
-	{SPR_EGGN, 1, 2,               {NULL},           0,          0, S_EGGMOBILE2_POGO4}, // S_EGGMOBILE2_POGO7
-	{SPR_EGGN, 3, 24, {A_Boss2TakeDamage},  24+TICRATE,          0, S_EGGMOBILE2_STND},  // S_EGGMOBILE2_PAIN
-	{SPR_EGGN, 4, 24, {A_Boss2TakeDamage},  24+TICRATE,          0, S_EGGMOBILE2_POGO4}, // S_EGGMOBILE2_PAIN2
-	{SPR_EGGN, 5, 2,             {A_Fall},           0,          0, S_EGGMOBILE2_DIE2},  // S_EGGMOBILE2_DIE1
-	{SPR_EGGN, 5, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_DIE3},  // S_EGGMOBILE2_DIE2
-	{SPR_EGGN, 5, 0,       {A_Repeat}, 17, S_EGGMOBILE2_DIE2, S_EGGMOBILE2_DIE4},  // S_EGGMOBILE2_DIE3
-	{SPR_EGGN, 5, -1,       {A_BossDeath},           0,          0, S_NULL},             // S_EGGMOBILE2_DIE4
-	{SPR_EGGN, 6, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_FLEE2}, // S_EGGMOBILE2_FLEE1
-	{SPR_EGGN, 7, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_FLEE1}, // S_EGGMOBILE2_FLEE2
-
-	{SPR_TANK, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSTANK1
-	{SPR_TANK, 1, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSTANK2
-	{SPR_TANK, 2, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSSPIGOT
+	STATE(SPR_EGGN, 0, -1,              {NULL},           0,          0, S_NULL),             // S_EGGMOBILE2_STND
+	STATE(SPR_EGGN, 1, 4,               {NULL},           0,          0, S_EGGMOBILE2_POGO2), // S_EGGMOBILE2_POGO1
+	STATE(SPR_EGGN, 0, 2,  {A_Boss2PogoTarget},  9*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO3), // S_EGGMOBILE2_POGO2
+	STATE(SPR_EGGN, 1, 2,               {NULL},           0,          0, S_EGGMOBILE2_POGO4), // S_EGGMOBILE2_POGO3
+	STATE(SPR_EGGN, 2, -1,              {NULL},           0,          0, S_NULL),             // S_EGGMOBILE2_POGO4
+	STATE(SPR_EGGN, 1, 4,               {NULL},           0,          0, S_EGGMOBILE2_POGO6), // S_EGGMOBILE2_POGO5
+	STATE(SPR_EGGN, 0, 2,  {A_Boss2PogoTarget},  7*FRACUNIT, 8*FRACUNIT, S_EGGMOBILE2_POGO7), // S_EGGMOBILE2_POGO6
+	STATE(SPR_EGGN, 1, 2,               {NULL},           0,          0, S_EGGMOBILE2_POGO4), // S_EGGMOBILE2_POGO7
+	STATE(SPR_EGGN, 3, 24, {A_Boss2TakeDamage},  24+TICRATE,          0, S_EGGMOBILE2_STND),  // S_EGGMOBILE2_PAIN
+	STATE(SPR_EGGN, 4, 24, {A_Boss2TakeDamage},  24+TICRATE,          0, S_EGGMOBILE2_POGO4), // S_EGGMOBILE2_PAIN2
+	STATE(SPR_EGGN, 5, 2,             {A_Fall},           0,          0, S_EGGMOBILE2_DIE2),  // S_EGGMOBILE2_DIE1
+	STATE(SPR_EGGN, 5, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_DIE3),  // S_EGGMOBILE2_DIE2
+	STATE(SPR_EGGN, 5, 0,       {A_Repeat}, 17, S_EGGMOBILE2_DIE2, S_EGGMOBILE2_DIE4),  // S_EGGMOBILE2_DIE3
+	STATE(SPR_EGGN, 5, -1,       {A_BossDeath},           0,          0, S_NULL),             // S_EGGMOBILE2_DIE4
+	STATE(SPR_EGGN, 6, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_FLEE2), // S_EGGMOBILE2_FLEE1
+	STATE(SPR_EGGN, 7, 2,       {A_BossScream},           0,          0, S_EGGMOBILE2_FLEE1), // S_EGGMOBILE2_FLEE2
+
+	STATE(SPR_TANK, 0, 35, {NULL}, 0, 0, S_NULL), // S_BOSSTANK1
+	STATE(SPR_TANK, 1, 35, {NULL}, 0, 0, S_NULL), // S_BOSSTANK2
+	STATE(SPR_TANK, 2, 35, {NULL}, 0, 0, S_NULL), // S_BOSSSPIGOT
 
 	// Boss 2 Goop
-	{SPR_GOOP,            0,  2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP2}, // S_GOOP1
-	{SPR_GOOP,            1,  2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP1}, // S_GOOP2
-	{SPR_GOOP,            2, -1,                  {NULL}, 0,            0, S_NULL},  // S_GOOP3
-	{SPR_GOOP, FF_ANIMATE|3, 11,                  {NULL}, 2,            6, S_NULL},  // S_GOOPTRAIL
+	STATE(SPR_GOOP,            0,  2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP2), // S_GOOP1
+	STATE(SPR_GOOP,            1,  2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP1), // S_GOOP2
+	STATE(SPR_GOOP,            2, -1,                  {NULL}, 0,            0, S_NULL),  // S_GOOP3
+	STATE(SPR_GOOP, FF_ANIMATE|3, 11,                  {NULL}, 2,            6, S_NULL),  // S_GOOPTRAIL
 
 	// Boss 3
-	{SPR_EGGO,  0,   1, {NULL},                    0, 0, S_EGGMOBILE3_STND},    // S_EGGMOBILE3_STND
-	{SPR_EGGO,   FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2},  // S_EGGMOBILE3_SHOCK
-	{SPR_EGGO, 6|FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2}, // S_EGGMOBILE3_ATK1
-	{SPR_EGGO,  2,   2, {NULL},                    0, 0, S_EGGMOBILE3_ATK3A},   // S_EGGMOBILE3_ATK2
-	{SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 2, S_EGGMOBILE3_ATK3B},   // S_EGGMOBILE3_ATK3A
-	{SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 4, S_EGGMOBILE3_ATK3C},   // S_EGGMOBILE3_ATK3B
-	{SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 3, S_EGGMOBILE3_ATK3D},   // S_EGGMOBILE3_ATK3C
-	{SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 5, S_EGGMOBILE3_ATK4},    // S_EGGMOBILE3_ATK3D
-	{SPR_EGGO,  4,   2, {NULL},                    0, 0, S_EGGMOBILE3_ATK5},    // S_EGGMOBILE3_ATK4
-	{SPR_EGGO,  5,   2, {NULL},                    0, 0, S_EGGMOBILE3_ROFL},  // S_EGGMOBILE3_ATK5
-	{SPR_EGGO,  6|FF_ANIMATE, 60, {NULL}, 1, 2, S_EGGMOBILE3_STND},  // S_EGGMOBILE3_ROFL
-	{SPR_EGGO,  8,   1, {A_Boss3TakeDamage},       0, 0, S_EGGMOBILE3_PAIN2},   // S_EGGMOBILE3_PAIN
-	{SPR_EGGO,  8,  23, {A_Pain},                  0, 0, S_EGGMOBILE3_STND},    // S_EGGMOBILE3_PAIN2
-	{SPR_EGGO,  9,   2, {A_Fall},                  0, 0, S_EGGMOBILE3_DIE2},    // S_EGGMOBILE3_DIE1
-	{SPR_EGGO,  9,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_DIE3},    // S_EGGMOBILE3_DIE2
-	{SPR_EGGO,  9,   0, {A_Repeat}, 17, S_EGGMOBILE3_DIE2, S_EGGMOBILE3_DIE4},  // S_EGGMOBILE3_DIE3
-	{SPR_EGGO,  9,  -1, {A_BossDeath},             0, 0, S_NULL},               // S_EGGMOBILE3_DIE4
-	{SPR_EGGO, 10,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_FLEE2},   // S_EGGMOBILE3_FLEE1
-	{SPR_EGGO, 11,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_FLEE1},   // S_EGGMOBILE3_FLEE2
+	STATE(SPR_EGGO,  0,   1, {NULL},                    0, 0, S_EGGMOBILE3_STND),    // S_EGGMOBILE3_STND
+	STATE(SPR_EGGO,   FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2),  // S_EGGMOBILE3_SHOCK
+	STATE(SPR_EGGO, 6|FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2), // S_EGGMOBILE3_ATK1
+	STATE(SPR_EGGO,  2,   2, {NULL},                    0, 0, S_EGGMOBILE3_ATK3A),   // S_EGGMOBILE3_ATK2
+	STATE(SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 2, S_EGGMOBILE3_ATK3B),   // S_EGGMOBILE3_ATK3A
+	STATE(SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 4, S_EGGMOBILE3_ATK3C),   // S_EGGMOBILE3_ATK3B
+	STATE(SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 3, S_EGGMOBILE3_ATK3D),   // S_EGGMOBILE3_ATK3C
+	STATE(SPR_EGGO,  3,   2, {A_BossFireShot}, MT_TORPEDO, 5, S_EGGMOBILE3_ATK4),    // S_EGGMOBILE3_ATK3D
+	STATE(SPR_EGGO,  4,   2, {NULL},                    0, 0, S_EGGMOBILE3_ATK5),    // S_EGGMOBILE3_ATK4
+	STATE(SPR_EGGO,  5,   2, {NULL},                    0, 0, S_EGGMOBILE3_ROFL),  // S_EGGMOBILE3_ATK5
+	STATE(SPR_EGGO,  6|FF_ANIMATE, 60, {NULL}, 1, 2, S_EGGMOBILE3_STND),  // S_EGGMOBILE3_ROFL
+	STATE(SPR_EGGO,  8,   1, {A_Boss3TakeDamage},       0, 0, S_EGGMOBILE3_PAIN2),   // S_EGGMOBILE3_PAIN
+	STATE(SPR_EGGO,  8,  23, {A_Pain},                  0, 0, S_EGGMOBILE3_STND),    // S_EGGMOBILE3_PAIN2
+	STATE(SPR_EGGO,  9,   2, {A_Fall},                  0, 0, S_EGGMOBILE3_DIE2),    // S_EGGMOBILE3_DIE1
+	STATE(SPR_EGGO,  9,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_DIE3),    // S_EGGMOBILE3_DIE2
+	STATE(SPR_EGGO,  9,   0, {A_Repeat}, 17, S_EGGMOBILE3_DIE2, S_EGGMOBILE3_DIE4),  // S_EGGMOBILE3_DIE3
+	STATE(SPR_EGGO,  9,  -1, {A_BossDeath},             0, 0, S_NULL),               // S_EGGMOBILE3_DIE4
+	STATE(SPR_EGGO, 10,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_FLEE2),   // S_EGGMOBILE3_FLEE1
+	STATE(SPR_EGGO, 11,   2, {A_BossScream},            0, 0, S_EGGMOBILE3_FLEE1),   // S_EGGMOBILE3_FLEE2
 
 	// Boss 3 Pinch
-	{SPR_FAKE, 0,  1, {NULL},                     0, 0, S_FAKEMOBILE},       // S_FAKEMOBILE_INIT
-	{SPR_FAKE, 0,  1, {A_Boss3Path},              0, 0, S_FAKEMOBILE},       // S_FAKEMOBILE
-	{SPR_FAKE, 0, 22, {NULL},                     0, 0, S_FAKEMOBILE_ATK2},  // S_FAKEMOBILE_ATK1
-	{SPR_FAKE, 0,  2, {NULL},                     0, 0, S_FAKEMOBILE_ATK3A}, // S_FAKEMOBILE_ATK2
-	{SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 2, S_FAKEMOBILE_ATK3B}, // S_FAKEMOBILE_ATK3A
-	{SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 4, S_FAKEMOBILE_ATK3C}, // S_FAKEMOBILE_ATK3B
-	{SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 3, S_FAKEMOBILE_ATK3D}, // S_FAKEMOBILE_ATK3C
-	{SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 5, S_FAKEMOBILE},       // S_FAKEMOBILE_ATK3D
-	{SPR_FAKE, 1,  1, {NULL},                     0, 0, S_FAKEMOBILE_DIE2},  // S_FAKEMOBILE_DIE1
-	{SPR_NULL, 0,  1, {NULL},                     0, 0, S_FAKEMOBILE_DIE1},  // S_FAKEMOBILE_DIE2
-
-	{SPR_SEBH, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSSEBH1
-	{SPR_SEBH, 1, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSSEBH2
+	STATE(SPR_FAKE, 0,  1, {NULL},                     0, 0, S_FAKEMOBILE),       // S_FAKEMOBILE_INIT
+	STATE(SPR_FAKE, 0,  1, {A_Boss3Path},              0, 0, S_FAKEMOBILE),       // S_FAKEMOBILE
+	STATE(SPR_FAKE, 0, 22, {NULL},                     0, 0, S_FAKEMOBILE_ATK2),  // S_FAKEMOBILE_ATK1
+	STATE(SPR_FAKE, 0,  2, {NULL},                     0, 0, S_FAKEMOBILE_ATK3A), // S_FAKEMOBILE_ATK2
+	STATE(SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 2, S_FAKEMOBILE_ATK3B), // S_FAKEMOBILE_ATK3A
+	STATE(SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 4, S_FAKEMOBILE_ATK3C), // S_FAKEMOBILE_ATK3B
+	STATE(SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 3, S_FAKEMOBILE_ATK3D), // S_FAKEMOBILE_ATK3C
+	STATE(SPR_FAKE, 0,  2, {A_BossFireShot}, MT_TORPEDO2, 5, S_FAKEMOBILE),       // S_FAKEMOBILE_ATK3D
+	STATE(SPR_FAKE, 1,  1, {NULL},                     0, 0, S_FAKEMOBILE_DIE2),  // S_FAKEMOBILE_DIE1
+	STATE(SPR_NULL, 0,  1, {NULL},                     0, 0, S_FAKEMOBILE_DIE1),  // S_FAKEMOBILE_DIE2
+
+	STATE(SPR_SEBH, 0, 35, {NULL}, 0, 0, S_NULL), // S_BOSSSEBH1
+	STATE(SPR_SEBH, 1, 35, {NULL}, 0, 0, S_NULL), // S_BOSSSEBH2
 
 	// Boss 3 Shockwave
 
-	{SPR_SHCK,   FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE2}, // S_SHOCKWAVE1
-	{SPR_SHCK, 3|FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE1}, // S_SHOCKWAVE2
+	STATE(SPR_SHCK,   FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE2), // S_SHOCKWAVE1
+	STATE(SPR_SHCK, 3|FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {A_Boss3ShockThink}, 4, 2, S_SHOCKWAVE1), // S_SHOCKWAVE2
 
 	// Boss 4
-	{SPR_EGGP, 0, -1, {NULL},           0,          0, S_NULL},              // S_EGGMOBILE4_STND
-	{SPR_EGGP, 1,  3, {NULL},           0,          0, S_EGGMOBILE4_LATK2},  // S_EGGMOBILE4_LATK1
-	{SPR_EGGP, 2, 15, {NULL},           0,          0, S_EGGMOBILE4_LATK3},  // S_EGGMOBILE4_LATK2
-	{SPR_EGGP, 3,  2, {NULL},           0,          0, S_EGGMOBILE4_LATK4},  // S_EGGMOBILE4_LATK3
-	{SPR_EGGP, 4,  2, {NULL},           0,          0, S_EGGMOBILE4_LATK5},  // S_EGGMOBILE4_LATK4
-	{SPR_EGGP, 5, 50, {A_Boss4Reverse}, sfx_mswing, 0, S_EGGMOBILE4_LATK6},  // S_EGGMOBILE4_LATK5
-	{SPR_EGGP, 6,  2, {NULL},           0,          0, S_EGGMOBILE4_STND},   // S_EGGMOBILE4_LATK6
-	{SPR_EGGP, 7,  3, {NULL},           0,          0, S_EGGMOBILE4_RATK2},  // S_EGGMOBILE4_RATK1
-	{SPR_EGGP, 8, 15, {NULL},           0,          0, S_EGGMOBILE4_RATK3},  // S_EGGMOBILE4_RATK2
-	{SPR_EGGP, 9,  2, {NULL},           0,          0, S_EGGMOBILE4_RATK4},  // S_EGGMOBILE4_RATK3
-	{SPR_EGGP,10,  2, {NULL},           0,          0, S_EGGMOBILE4_RATK5},  // S_EGGMOBILE4_RATK4
-	{SPR_EGGP,11,150, {A_Boss4SpeedUp}, sfx_mswing, 0, S_EGGMOBILE4_RATK6},  // S_EGGMOBILE4_RATK5
-	{SPR_EGGP,12,  2, {NULL},           0,          0, S_EGGMOBILE4_STND},   // S_EGGMOBILE4_RATK6
-	{SPR_EGGP,13, 20, {A_Boss4Raise},   sfx_doord1, 0, S_EGGMOBILE4_RAISE2}, // S_EGGMOBILE4_RAISE1
-	{SPR_EGGP,15|FF_ANIMATE, -1, {NULL},        1,        10, S_NULL},             // S_EGGMOBILE4_RAISE2
-	{SPR_EGGP,13,  0, {A_Boss4Reverse}, sfx_alarm, sfx_s3k60, S_EGGMOBILE4_PAIN2}, // S_EGGMOBILE4_PAIN1
-	{SPR_EGGP,13, 24, {A_Pain},                 0,         0, S_EGGMOBILE4_STND},  // S_EGGMOBILE4_PAIN2
-	{SPR_EGGP,14,  2, {A_Fall},         0,          0, S_EGGMOBILE4_DIE2},   // S_EGGMOBILE4_DIE1
-	{SPR_EGGP,14,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_DIE3},   // S_EGGMOBILE4_DIE2
-	{SPR_EGGP,14,  0, {A_Repeat},   17, S_EGGMOBILE4_DIE2, S_EGGMOBILE4_DIE4},   // S_EGGMOBILE4_DIE3
-	{SPR_EGGP,14, -1, {A_BossDeath},    0,          0, S_NULL},              // S_EGGMOBILE4_DIE4
-	{SPR_EGGP,15,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_FLEE2},  // S_EGGMOBILE4_FLEE1
-	{SPR_EGGP,16,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_FLEE1},  // S_EGGMOBILE4_FLEE2
-	{SPR_BMCE, 0, -1, {NULL},           0,          0, S_NULL},              // S_EGGMOBILE4_MACE
-	{SPR_BMCE, 0,  2, {A_BossScream},   1, 0, S_EGGMOBILE4_MACE_DIE2},  // S_EGGMOBILE4_MACE_DIE1
-	{SPR_NULL, 0,  2, {A_BossScream},   1, 0, S_EGGMOBILE4_MACE_DIE3},  // S_EGGMOBILE4_MACE_DIE2
-	{SPR_NULL, 0,  0, {A_Repeat},       7, S_EGGMOBILE4_MACE_DIE1, S_SONIC3KBOSSEXPLOSION1}, // S_EGGMOBILE4_MACE_DIE3
+	STATE(SPR_EGGP, 0, -1, {NULL},           0,          0, S_NULL),              // S_EGGMOBILE4_STND
+	STATE(SPR_EGGP, 1,  3, {NULL},           0,          0, S_EGGMOBILE4_LATK2),  // S_EGGMOBILE4_LATK1
+	STATE(SPR_EGGP, 2, 15, {NULL},           0,          0, S_EGGMOBILE4_LATK3),  // S_EGGMOBILE4_LATK2
+	STATE(SPR_EGGP, 3,  2, {NULL},           0,          0, S_EGGMOBILE4_LATK4),  // S_EGGMOBILE4_LATK3
+	STATE(SPR_EGGP, 4,  2, {NULL},           0,          0, S_EGGMOBILE4_LATK5),  // S_EGGMOBILE4_LATK4
+	STATE(SPR_EGGP, 5, 50, {A_Boss4Reverse}, sfx_mswing, 0, S_EGGMOBILE4_LATK6),  // S_EGGMOBILE4_LATK5
+	STATE(SPR_EGGP, 6,  2, {NULL},           0,          0, S_EGGMOBILE4_STND),   // S_EGGMOBILE4_LATK6
+	STATE(SPR_EGGP, 7,  3, {NULL},           0,          0, S_EGGMOBILE4_RATK2),  // S_EGGMOBILE4_RATK1
+	STATE(SPR_EGGP, 8, 15, {NULL},           0,          0, S_EGGMOBILE4_RATK3),  // S_EGGMOBILE4_RATK2
+	STATE(SPR_EGGP, 9,  2, {NULL},           0,          0, S_EGGMOBILE4_RATK4),  // S_EGGMOBILE4_RATK3
+	STATE(SPR_EGGP,10,  2, {NULL},           0,          0, S_EGGMOBILE4_RATK5),  // S_EGGMOBILE4_RATK4
+	STATE(SPR_EGGP,11,150, {A_Boss4SpeedUp}, sfx_mswing, 0, S_EGGMOBILE4_RATK6),  // S_EGGMOBILE4_RATK5
+	STATE(SPR_EGGP,12,  2, {NULL},           0,          0, S_EGGMOBILE4_STND),   // S_EGGMOBILE4_RATK6
+	STATE(SPR_EGGP,13, 20, {A_Boss4Raise},   sfx_doord1, 0, S_EGGMOBILE4_RAISE2), // S_EGGMOBILE4_RAISE1
+	STATE(SPR_EGGP,15|FF_ANIMATE, -1, {NULL},        1,        10, S_NULL),             // S_EGGMOBILE4_RAISE2
+	STATE(SPR_EGGP,13,  0, {A_Boss4Reverse}, sfx_alarm, sfx_s3k60, S_EGGMOBILE4_PAIN2), // S_EGGMOBILE4_PAIN1
+	STATE(SPR_EGGP,13, 24, {A_Pain},                 0,         0, S_EGGMOBILE4_STND),  // S_EGGMOBILE4_PAIN2
+	STATE(SPR_EGGP,14,  2, {A_Fall},         0,          0, S_EGGMOBILE4_DIE2),   // S_EGGMOBILE4_DIE1
+	STATE(SPR_EGGP,14,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_DIE3),   // S_EGGMOBILE4_DIE2
+	STATE(SPR_EGGP,14,  0, {A_Repeat},   17, S_EGGMOBILE4_DIE2, S_EGGMOBILE4_DIE4),   // S_EGGMOBILE4_DIE3
+	STATE(SPR_EGGP,14, -1, {A_BossDeath},    0,          0, S_NULL),              // S_EGGMOBILE4_DIE4
+	STATE(SPR_EGGP,15,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_FLEE2),  // S_EGGMOBILE4_FLEE1
+	STATE(SPR_EGGP,16,  2, {A_BossScream},   0,          0, S_EGGMOBILE4_FLEE1),  // S_EGGMOBILE4_FLEE2
+	STATE(SPR_BMCE, 0, -1, {NULL},           0,          0, S_NULL),              // S_EGGMOBILE4_MACE
+	STATE(SPR_BMCE, 0,  2, {A_BossScream},   1, 0, S_EGGMOBILE4_MACE_DIE2),  // S_EGGMOBILE4_MACE_DIE1
+	STATE(SPR_NULL, 0,  2, {A_BossScream},   1, 0, S_EGGMOBILE4_MACE_DIE3),  // S_EGGMOBILE4_MACE_DIE2
+	STATE(SPR_NULL, 0,  0, {A_Repeat},       7, S_EGGMOBILE4_MACE_DIE1, S_SONIC3KBOSSEXPLOSION1), // S_EGGMOBILE4_MACE_DIE3
 
 	// Boss 4 jet flame
-	{SPR_EFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 1, 1, S_NULL}, // S_JETFLAME
+	STATE(SPR_EFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 1, 1, S_NULL), // S_JETFLAME
 
 	// Boss 4 Spectator Eggrobo
-	{SPR_EGR1,            0, -1, {NULL}, 0, 0, S_NULL},            // S_EGGROBO1_STND
-	{SPR_EGR1,            5,  2, {NULL}, 0, 0, S_EGGROBO1_BSLAP2}, // S_EGGROBO1_BSLAP1
-	{SPR_EGR1, FF_ANIMATE|6, 35, {NULL}, 1, 2, S_EGGROBO1_STND},   // S_EGGROBO1_BSLAP2
-	{SPR_EGR1, FF_ANIMATE|3, -1, {NULL}, 1, 2, S_NULL},            // S_EGGROBO1_PISSED
+	STATE(SPR_EGR1,            0, -1, {NULL}, 0, 0, S_NULL),            // S_EGGROBO1_STND
+	STATE(SPR_EGR1,            5,  2, {NULL}, 0, 0, S_EGGROBO1_BSLAP2), // S_EGGROBO1_BSLAP1
+	STATE(SPR_EGR1, FF_ANIMATE|6, 35, {NULL}, 1, 2, S_EGGROBO1_STND),   // S_EGGROBO1_BSLAP2
+	STATE(SPR_EGR1, FF_ANIMATE|3, -1, {NULL}, 1, 2, S_NULL),            // S_EGGROBO1_PISSED
 
 	// Boss 4 Spectator Eggrobo jet flame
-	{SPR_EFIR, FF_FULLBRIGHT|2,          -1, {NULL}, 0, 0, S_NULL}, // S_EGGROBOJET
+	STATE(SPR_EFIR, FF_FULLBRIGHT|2,          -1, {NULL}, 0, 0, S_NULL), // S_EGGROBOJET
 
 	// Boss 5
-	{SPR_NULL, 0, 2, {A_CheckFlags2}, MF2_AMBUSH, S_FANG_IDLE0, S_FANG_INTRO0}, // S_FANG_SETUP
-
-	{SPR_NULL, 0, 2, {NULL}, 0, 0, S_FANG_INTRO1}, // S_FANG_INTRO0
-	{SPR_NULL, 0, 2, {A_Boss5MakeJunk}, -S_FANG_CLONE1, 0, S_FANG_INTRO2}, // S_FANG_INTRO1
-	{SPR_NULL, 0, 0, {A_Repeat}, 25, S_FANG_INTRO1, S_FANG_INTRO3}, // S_FANG_INTRO2
-	{SPR_NULL, 0, 0, {A_Boss5MakeJunk}, 0, 1, S_FANG_INTRO4}, // S_FANG_INTRO3
-	{SPR_FANG, 30, 1, {A_ZThrust}, 9, (1<<16)|1, S_FANG_INTRO5}, // S_FANG_INTRO4
-	{SPR_FANG, 27, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO6}, // S_FANG_INTRO5
-	{SPR_FANG, 28, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO7}, // S_FANG_INTRO6
-	{SPR_FANG, 29, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO8}, // S_FANG_INTRO7
-	{SPR_FANG, 30, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO5}, // S_FANG_INTRO8
-	{SPR_FANG, 23|FF_ANIMATE, 50, {NULL}, 1, 4, S_FANG_INTRO10}, // S_FANG_INTRO9
-	{SPR_FANG, 25, 5, {NULL}, 0, 0, S_FANG_INTRO11}, // S_FANG_INTRO10
-	{SPR_FANG, 26, 2, {A_Boss5MakeJunk}, S_BROKENROBOTD, 2, S_FANG_INTRO12}, // S_FANG_INTRO11
-	{SPR_FANG, 31|FF_ANIMATE, 50, {NULL}, 3, 4, S_FANG_IDLE1}, // S_FANG_INTRO12
-
-	{SPR_FANG, 11, 2, {A_Boss5MakeJunk}, 0, -1, S_FANG_CLONE2}, // S_FANG_CLONE1
-	{SPR_FANG, 11, 0, {A_Repeat}, 49, S_FANG_CLONE1, S_FANG_CLONE3}, // S_FANG_INTRO2
-	{SPR_FANG, 12, 0, {A_SetObjectFlags}, MF_NOGRAVITY, 1, S_FANG_CLONE4}, // S_FANG_CLONE3
-	{SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_IDLE0, 0, S_FANG_CLONE4}, // S_FANG_CLONE4
-
-	{SPR_FANG, 0,  0, {A_SetObjectFlags}, MF_NOCLIPTHING, 1, S_FANG_IDLE1}, // S_FANG_IDLE0
-	{SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE2}, // S_FANG_IDLE1
-	{SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE3}, // S_FANG_IDLE2
-	{SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE4}, // S_FANG_IDLE3
-	{SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE5}, // S_FANG_IDLE4
-	{SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE6}, // S_FANG_IDLE5
-	{SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE7}, // S_FANG_IDLE6
-	{SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE8}, // S_FANG_IDLE7
-	{SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE1}, // S_FANG_IDLE8
-
-	{SPR_FANG, 14, 0, {A_DoNPCPain}, FRACUNIT, 0, S_FANG_PAIN2}, // S_FANG_PAIN1
-	{SPR_FANG, 14, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART1, S_FANG_PINCHPATHINGSTART1, S_FANG_PAIN2}, // S_FANG_PAIN2
-
-	{SPR_FANG,  8, 0, {A_Boss5ExtraRepeat}, 5, 4, S_FANG_PATHINGSTART2}, // S_FANG_PATHINGSTART1
-	{SPR_FANG,  8, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHING}, // S_FANG_PATHINGSTART2
-	{SPR_FANG,  8, 0, {A_Boss5FindWaypoint}, 0, 0, S_FANG_BOUNCE1}, // S_FANG_PATHING
-
-	{SPR_FANG,  8, 2, {A_Thrust}, 0, 1, S_FANG_BOUNCE2}, // S_FANG_BOUNCE1
-	{SPR_FANG,  9, 2, {NULL}, 0, 0, S_FANG_BOUNCE3}, // S_FANG_BOUNCE2
-	{SPR_FANG, 10, 1, {A_Boss5Jump}, 0, 0, S_FANG_BOUNCE4}, // S_FANG_BOUNCE3
-	{SPR_FANG, 10, 1, {A_Boss5CheckFalling}, S_FANG_CHECKPATH1, S_FANG_FALL1, S_FANG_BOUNCE4}, // S_FANG_BOUNCE4
-
-	{SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL2}, // S_FANG_FALL1
-	{SPR_FANG, 13, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL1}, // S_FANG_FALL2
-
-	{SPR_FANG,  8, 0, {A_Boss5Calm}, 0, 0, S_FANG_CHECKPATH2}, // S_FANG_CHECKPATH1
-	{SPR_FANG,  8, 0, {A_Repeat}, 0, S_FANG_PATHINGCONT1, S_FANG_SKID1}, // S_FANG_CHECKPATH2
-
-	{SPR_FANG,  9, 0, {A_Boss5PinchShot}, MT_FBOMB, -16, S_FANG_PATHINGCONT2}, // S_FANG_PATHINGCONT1
-	{SPR_FANG,  9, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHINGCONT3}, // S_FANG_PATHINGCONT2
-	{SPR_FANG,  9, 2, {A_Thrust}, 0, 1, S_FANG_PATHING}, // S_FANG_PATHINGCONT3
-
-	{SPR_FANG,  4,  0, {A_PlayAttackSound}, 0, 0, S_FANG_SKID2}, // S_FANG_SKID1
-	{SPR_FANG,  4,  1, {A_DoNPCSkid}, S_FANG_SKID3, 0, S_FANG_SKID2}, // S_FANG_SKID2
-	{SPR_FANG,  4, 10, {NULL}, 0, 0, S_FANG_CHOOSEATTACK}, // S_FANG_SKID3
-
-	{SPR_FANG,  0, 0, {A_RandomState}, S_FANG_LOBSHOT0, S_FANG_FIRESTART1, S_NULL}, // S_FANG_CHOOSEATTACK
-
-	{SPR_FANG,  5,  0, {A_PrepareRepeat}, 3, 0, S_FANG_FIRESTART2}, // S_FANG_FIRESTART1 // Reset loop
-	{SPR_FANG,  5, 18, {A_LookForBetter}, 1, 0, S_FANG_FIRE1}, // S_FANG_FIRESTART2
-	{SPR_FANG,  5,  5, {A_FireShot}, MT_CORK, -16, S_FANG_FIRE2}, // S_FANG_FIRE1 // Start of loop
-	{SPR_FANG,  6,  5, {NULL}, 0, 0, S_FANG_FIRE3}, // S_FANG_FIRE2
-	{SPR_FANG,  7,  5, {NULL}, 0, 0, S_FANG_FIRE4}, // S_FANG_FIRE3
-	{SPR_FANG,  5,  5, {NULL}, 2, 0, S_FANG_FIREREPEAT}, // S_FANG_FIRE4
-	{SPR_FANG,  5,  0, {A_Repeat}, 3, S_FANG_FIRE1, S_FANG_WAIT1}, // S_FANG_FIREREPEAT // End of loop
-
-	{SPR_FANG, 18, 16, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT1}, // S_FANG_LOBSHOT0
-	{SPR_FANG, 19,  2, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT2}, // S_FANG_LOBSHOT1
-	{SPR_FANG, 20, 18, {A_BrakLobShot}, MT_FBOMB, 32+(1<<16), S_FANG_WAIT1}, // S_FANG_LOBSHOT2
-
-	{SPR_FANG, FF_ANIMATE|15, 70, {NULL}, 1, 5, S_FANG_WAIT2}, // S_FANG_WAIT1
-	{SPR_FANG,             0, 35, {A_Look}, 1, 0, S_FANG_IDLE1}, // S_FANG_WAIT2
-
-	{SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART2, S_FANG_PINCHPATHINGSTART1, S_FANG_WALLHIT}, // S_FANG_WALLHIT
-
-	{SPR_FANG,  8,  0, {A_PrepareRepeat}, 1, 0, S_FANG_PINCHPATHINGSTART2}, // S_FANG_PINCHPATHINGSTART1
-	{SPR_FANG,  8,  0, {A_PlayActiveSound}, 0, 0, S_FANG_PINCHPATHING}, // S_FANG_PINCHPATHINGSTART2
-	{SPR_FANG,  8,  0, {A_Boss5FindWaypoint}, 1, 0, S_FANG_PINCHBOUNCE0}, // S_FANG_PINCHPATHING
-	{SPR_FANG,  8,  0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 2, S_FANG_PINCHBOUNCE1}, // S_FANG_PINCHBOUNCE0
-	{SPR_FANG,  8,  2, {A_Thrust}, 0, 1, S_FANG_PINCHBOUNCE2}, // S_FANG_PINCHBOUNCE1
-	{SPR_FANG,  9,  2, {NULL}, 0, 0, S_FANG_PINCHBOUNCE3}, // S_FANG_PINCHBOUNCE2
-	{SPR_FANG, 10,  2, {A_Boss5Jump}, 0, 0, S_FANG_PINCHBOUNCE4}, // S_FANG_PINCHBOUNCE3
-	{SPR_FANG, 10,  1, {A_Boss5CheckFalling}, S_FANG_PINCHSKID1, S_FANG_PINCHFALL0, S_FANG_PINCHBOUNCE4}, // S_FANG_PINCHBOUNCE4
-	{SPR_FANG, 12,  0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 1, S_FANG_PINCHFALL1}, // S_FANG_PINCHFALL0
-	{SPR_FANG, 12,  1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL2}, // S_FANG_PINCHFALL1
-	{SPR_FANG, 13,  1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL1}, // S_FANG_PINCHFALL2
-	{SPR_FANG,  4,  0, {A_PlayAttackSound}, 0, 0, S_FANG_PINCHSKID2}, // S_FANG_PINCHSKID1
-	{SPR_FANG,  4,  1, {A_DoNPCSkid}, S_FANG_PINCHLOBSHOT0, 0, S_FANG_PINCHSKID2}, // S_FANG_PINCHSKID2
-	{SPR_FANG, 18, 16, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT1}, // S_FANG_PINCHLOBSHOT0
-	{SPR_FANG, 19,  2, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT2}, // S_FANG_PINCHLOBSHOT1
-	{SPR_FANG, 20, 30, {A_Boss5MakeItRain}, MT_FBOMB, -16, S_FANG_PINCHLOBSHOT3}, // S_FANG_PINCHLOBSHOT2
-	{SPR_FANG, 20, 18, {A_LinedefExecuteFromArg}, 4, 0, S_FANG_PINCHLOBSHOT4}, // S_FANG_PINCHLOBSHOT3
-	{SPR_FANG,  0,  0, {A_Boss5Calm}, 0, 0, S_FANG_PATHINGSTART1}, // S_FANG_PINCHLOBSHOT4
-
-	{SPR_FANG, 21, 0, {A_DoNPCPain},                    0, 0, S_FANG_DIE2}, // S_FANG_DIE1
-	{SPR_FANG, 21, 1, {A_Boss5CheckOnGround}, S_FANG_DIE3, 0, S_FANG_DIE2}, // S_FANG_DIE2
-
-	{SPR_FANG, 22,  0, {A_Scream}, 0, 0, S_FANG_DIE4}, // S_FANG_DIE3
-	{SPR_FANG, 22, -1, {A_SetFuse}, 70, 0, S_FANG_DIE5}, // S_FANG_DIE4
-
-	{SPR_FANG, 11, 0, {A_PlaySound}, sfx_jump, 0, S_FANG_DIE6}, // S_FANG_DIE5
-	{SPR_FANG, 11, 1, {A_ZThrust}, 6, (1<<16)|1, S_FANG_DIE7}, // S_FANG_DIE6
-	{SPR_FANG, 11, 1, {A_Boss5CheckFalling}, S_FANG_FLEEPATHING1, S_FANG_DIE8, S_FANG_DIE7}, // S_FANG_DIE7
-	{SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_FLEEPATHING1, 0, S_FANG_DIE8}, // S_FANG_DIE8
-
-	{SPR_FANG,  9,  0, {A_PlayActiveSound}, 0, 0, S_FANG_FLEEPATHING2}, // S_FANG_FLEEPATHING1
-	{SPR_FANG,  8,  2, {A_Boss5FindWaypoint}, 2, 0, S_FANG_FLEEBOUNCE1}, // S_FANG_FLEEPATHING2
-	{SPR_FANG,  9,  2, {NULL}, 0, 0, S_FANG_FLEEBOUNCE2}, // S_FANG_FLEEBOUNCE1
-	{SPR_FANG, 10, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_FANG_FLEEBOUNCE2
-
-	{SPR_FANG, 17, 7*TICRATE, {NULL}, 0, 0, S_NULL}, // S_FANG_KO
-
-	{SPR_NULL, 0, -1, {A_RandomStateRange}, S_BROKENROBOTA, S_BROKENROBOTF, S_NULL}, // S_BROKENROBOTRANDOM
-	{SPR_BRKN,    FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL}, // S_BROKENROBOTA
-	{SPR_BRKN,  4|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL}, // S_BROKENROBOTB
-	{SPR_BRKN,  8|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL}, // S_BROKENROBOTC
-	{SPR_BRKN, 12|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL}, // S_BROKENROBOTD
-	{SPR_BRKN, 16|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL}, // S_BROKENROBOTE
-	{SPR_BRKN, 20|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL}, // S_BROKENROBOTF
-
-	{SPR_WHAT,   FF_ANIMATE|FF_FULLBRIGHT,  4, {NULL}, 1, 2, S_ALART2}, // S_ALART1
-	{SPR_WHAT, 2|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL},   // S_ALART2
-
-	{SPR_VWRE,   FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_VWREF
-	{SPR_VWRE, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_VWREB
-
-	{SPR_PROJ,   FF_TRANS20|FF_FULLBRIGHT,  4, {NULL}, 0, 0, S_PROJECTORLIGHT2}, // S_PROJECTORLIGHT1
-	{SPR_PROJ, 1|FF_TRANS40|FF_FULLBRIGHT,  1, {NULL}, 0, 0, S_PROJECTORLIGHT3}, // S_PROJECTORLIGHT2
-	{SPR_PROJ, 2|FF_TRANS20|FF_FULLBRIGHT,  1, {NULL}, 0, 0, S_PROJECTORLIGHT4}, // S_PROJECTORLIGHT3
-	{SPR_PROJ, 3|FF_TRANS40|FF_FULLBRIGHT,  2, {A_Repeat}, 39, S_PROJECTORLIGHT2, S_PROJECTORLIGHT5}, // S_PROJECTORLIGHT4
-	{SPR_PROJ, 4|FF_TRANS60|FF_FULLBRIGHT,  2, {NULL}, 0, 0, S_NULL}, // S_PROJECTORLIGHT5
-
-	{SPR_FBOM, 0, 1, {A_GhostMe}, 0, 0, S_FBOMB2}, // S_FBOMB1
-	{SPR_FBOM, 1, 1, {A_GhostMe}, 0, 0, S_FBOMB1}, // S_FBOMB2
-	{SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_FBOMB_EXPL2}, // S_FBOMB_EXPL1
-	{SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_Boss5BombExplode}, MT_TNTDUST, 0, S_FBOMB_EXPL3}, // S_FBOMB_EXPL2
-	{SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FBOMB_EXPL4}, // S_FBOMB_EXPL3
-	{SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL5}, // S_FBOMB_EXPL4
-	{SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL6}, // S_FBOMB_EXPL5
-	{SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL}, // S_FBOMB_EXPL6
-	{SPR_BARD, 0|FF_TRANS90, 2, {NULL}, 0, 0, S_TNTDUST_2}, // S_TNTDUST_1
-	{SPR_BARD, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_TNTDUST_3}, // S_TNTDUST_2
-	{SPR_BARD, 0|FF_TRANS40, 10, {NULL}, 0, 0, S_TNTDUST_4}, // S_TNTDUST_3
-	{SPR_BARD, 0|FF_TRANS50, 10, {NULL}, 0, 0, S_TNTDUST_5}, // S_TNTDUST_4
-	{SPR_BARD, 0|FF_TRANS60, 10, {NULL}, 0, 0, S_TNTDUST_6}, // S_TNTDUST_5
-	{SPR_BARD, 0|FF_TRANS70, 10, {NULL}, 0, 0, S_TNTDUST_7}, // S_TNTDUST_6
-	{SPR_BARD, 0|FF_TRANS80, 10, {NULL}, 0, 0, S_TNTDUST_8}, // S_TNTDUST_7
-	{SPR_BARD, 0|FF_TRANS90, 10, {NULL}, 0, 0, S_NULL}, // S_TNTDUST_8
-	{SPR_FSGN, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_FSGNA
-	{SPR_FSGN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_FSGNB
-	{SPR_FSGN, 2|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_FSGNC
-	{SPR_FSGN, 3|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_FSGND
+	STATE(SPR_NULL, 0, 2, {A_CheckFlags2}, MF2_AMBUSH, S_FANG_IDLE0, S_FANG_INTRO0), // S_FANG_SETUP
+
+	STATE(SPR_NULL, 0, 2, {NULL}, 0, 0, S_FANG_INTRO1), // S_FANG_INTRO0
+	STATE(SPR_NULL, 0, 2, {A_Boss5MakeJunk}, -S_FANG_CLONE1, 0, S_FANG_INTRO2), // S_FANG_INTRO1
+	STATE(SPR_NULL, 0, 0, {A_Repeat}, 25, S_FANG_INTRO1, S_FANG_INTRO3), // S_FANG_INTRO2
+	STATE(SPR_NULL, 0, 0, {A_Boss5MakeJunk}, 0, 1, S_FANG_INTRO4), // S_FANG_INTRO3
+	STATE(SPR_FANG, 30, 1, {A_ZThrust}, 9, (1<<16)|1, S_FANG_INTRO5), // S_FANG_INTRO4
+	STATE(SPR_FANG, 27, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO6), // S_FANG_INTRO5
+	STATE(SPR_FANG, 28, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO7), // S_FANG_INTRO6
+	STATE(SPR_FANG, 29, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO8), // S_FANG_INTRO7
+	STATE(SPR_FANG, 30, 1, {A_Boss5CheckOnGround}, S_FANG_INTRO9, 0, S_FANG_INTRO5), // S_FANG_INTRO8
+	STATE(SPR_FANG, 23|FF_ANIMATE, 50, {NULL}, 1, 4, S_FANG_INTRO10), // S_FANG_INTRO9
+	STATE(SPR_FANG, 25, 5, {NULL}, 0, 0, S_FANG_INTRO11), // S_FANG_INTRO10
+	STATE(SPR_FANG, 26, 2, {A_Boss5MakeJunk}, S_BROKENROBOTD, 2, S_FANG_INTRO12), // S_FANG_INTRO11
+	STATE(SPR_FANG, 31|FF_ANIMATE, 50, {NULL}, 3, 4, S_FANG_IDLE1), // S_FANG_INTRO12
+
+	STATE(SPR_FANG, 11, 2, {A_Boss5MakeJunk}, 0, -1, S_FANG_CLONE2), // S_FANG_CLONE1
+	STATE(SPR_FANG, 11, 0, {A_Repeat}, 49, S_FANG_CLONE1, S_FANG_CLONE3), // S_FANG_INTRO2
+	STATE(SPR_FANG, 12, 0, {A_SetObjectFlags}, MF_NOGRAVITY, 1, S_FANG_CLONE4), // S_FANG_CLONE3
+	STATE(SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_IDLE0, 0, S_FANG_CLONE4), // S_FANG_CLONE4
+
+	STATE(SPR_FANG, 0,  0, {A_SetObjectFlags}, MF_NOCLIPTHING, 1, S_FANG_IDLE1), // S_FANG_IDLE0
+	STATE(SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE2), // S_FANG_IDLE1
+	STATE(SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE3), // S_FANG_IDLE2
+	STATE(SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE4), // S_FANG_IDLE3
+	STATE(SPR_FANG, 3, 16, {A_Look}, 1, 0, S_FANG_IDLE5), // S_FANG_IDLE4
+	STATE(SPR_FANG, 2, 16, {A_Look}, 1, 0, S_FANG_IDLE6), // S_FANG_IDLE5
+	STATE(SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE7), // S_FANG_IDLE6
+	STATE(SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE8), // S_FANG_IDLE7
+	STATE(SPR_FANG, 1, 16, {A_Look}, 1, 0, S_FANG_IDLE1), // S_FANG_IDLE8
+
+	STATE(SPR_FANG, 14, 0, {A_DoNPCPain}, FRACUNIT, 0, S_FANG_PAIN2), // S_FANG_PAIN1
+	STATE(SPR_FANG, 14, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART1, S_FANG_PINCHPATHINGSTART1, S_FANG_PAIN2), // S_FANG_PAIN2
+
+	STATE(SPR_FANG,  8, 0, {A_Boss5ExtraRepeat}, 5, 4, S_FANG_PATHINGSTART2), // S_FANG_PATHINGSTART1
+	STATE(SPR_FANG,  8, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHING), // S_FANG_PATHINGSTART2
+	STATE(SPR_FANG,  8, 0, {A_Boss5FindWaypoint}, 0, 0, S_FANG_BOUNCE1), // S_FANG_PATHING
+
+	STATE(SPR_FANG,  8, 2, {A_Thrust}, 0, 1, S_FANG_BOUNCE2), // S_FANG_BOUNCE1
+	STATE(SPR_FANG,  9, 2, {NULL}, 0, 0, S_FANG_BOUNCE3), // S_FANG_BOUNCE2
+	STATE(SPR_FANG, 10, 1, {A_Boss5Jump}, 0, 0, S_FANG_BOUNCE4), // S_FANG_BOUNCE3
+	STATE(SPR_FANG, 10, 1, {A_Boss5CheckFalling}, S_FANG_CHECKPATH1, S_FANG_FALL1, S_FANG_BOUNCE4), // S_FANG_BOUNCE4
+
+	STATE(SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL2), // S_FANG_FALL1
+	STATE(SPR_FANG, 13, 1, {A_Boss5CheckOnGround}, S_FANG_CHECKPATH1, 0, S_FANG_FALL1), // S_FANG_FALL2
+
+	STATE(SPR_FANG,  8, 0, {A_Boss5Calm}, 0, 0, S_FANG_CHECKPATH2), // S_FANG_CHECKPATH1
+	STATE(SPR_FANG,  8, 0, {A_Repeat}, 0, S_FANG_PATHINGCONT1, S_FANG_SKID1), // S_FANG_CHECKPATH2
+
+	STATE(SPR_FANG,  9, 0, {A_Boss5PinchShot}, MT_FBOMB, -16, S_FANG_PATHINGCONT2), // S_FANG_PATHINGCONT1
+	STATE(SPR_FANG,  9, 0, {A_PlayActiveSound}, 0, 0, S_FANG_PATHINGCONT3), // S_FANG_PATHINGCONT2
+	STATE(SPR_FANG,  9, 2, {A_Thrust}, 0, 1, S_FANG_PATHING), // S_FANG_PATHINGCONT3
+
+	STATE(SPR_FANG,  4,  0, {A_PlayAttackSound}, 0, 0, S_FANG_SKID2), // S_FANG_SKID1
+	STATE(SPR_FANG,  4,  1, {A_DoNPCSkid}, S_FANG_SKID3, 0, S_FANG_SKID2), // S_FANG_SKID2
+	STATE(SPR_FANG,  4, 10, {NULL}, 0, 0, S_FANG_CHOOSEATTACK), // S_FANG_SKID3
+
+	STATE(SPR_FANG,  0, 0, {A_RandomState}, S_FANG_LOBSHOT0, S_FANG_FIRESTART1, S_NULL), // S_FANG_CHOOSEATTACK
+
+	STATE(SPR_FANG,  5,  0, {A_PrepareRepeat}, 3, 0, S_FANG_FIRESTART2), // S_FANG_FIRESTART1 // Reset loop
+	STATE(SPR_FANG,  5, 18, {A_LookForBetter}, 1, 0, S_FANG_FIRE1), // S_FANG_FIRESTART2
+	STATE(SPR_FANG,  5,  5, {A_FireShot}, MT_CORK, -16, S_FANG_FIRE2), // S_FANG_FIRE1 // Start of loop
+	STATE(SPR_FANG,  6,  5, {NULL}, 0, 0, S_FANG_FIRE3), // S_FANG_FIRE2
+	STATE(SPR_FANG,  7,  5, {NULL}, 0, 0, S_FANG_FIRE4), // S_FANG_FIRE3
+	STATE(SPR_FANG,  5,  5, {NULL}, 2, 0, S_FANG_FIREREPEAT), // S_FANG_FIRE4
+	STATE(SPR_FANG,  5,  0, {A_Repeat}, 3, S_FANG_FIRE1, S_FANG_WAIT1), // S_FANG_FIREREPEAT // End of loop
+
+	STATE(SPR_FANG, 18, 16, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT1), // S_FANG_LOBSHOT0
+	STATE(SPR_FANG, 19,  2, {A_LookForBetter}, 1, 0, S_FANG_LOBSHOT2), // S_FANG_LOBSHOT1
+	STATE(SPR_FANG, 20, 18, {A_BrakLobShot}, MT_FBOMB, 32+(1<<16), S_FANG_WAIT1), // S_FANG_LOBSHOT2
+
+	STATE(SPR_FANG, FF_ANIMATE|15, 70, {NULL}, 1, 5, S_FANG_WAIT2), // S_FANG_WAIT1
+	STATE(SPR_FANG,             0, 35, {A_Look}, 1, 0, S_FANG_IDLE1), // S_FANG_WAIT2
+
+	STATE(SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_PATHINGSTART2, S_FANG_PINCHPATHINGSTART1, S_FANG_WALLHIT), // S_FANG_WALLHIT
+
+	STATE(SPR_FANG,  8,  0, {A_PrepareRepeat}, 1, 0, S_FANG_PINCHPATHINGSTART2), // S_FANG_PINCHPATHINGSTART1
+	STATE(SPR_FANG,  8,  0, {A_PlayActiveSound}, 0, 0, S_FANG_PINCHPATHING), // S_FANG_PINCHPATHINGSTART2
+	STATE(SPR_FANG,  8,  0, {A_Boss5FindWaypoint}, 1, 0, S_FANG_PINCHBOUNCE0), // S_FANG_PINCHPATHING
+	STATE(SPR_FANG,  8,  0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 2, S_FANG_PINCHBOUNCE1), // S_FANG_PINCHBOUNCE0
+	STATE(SPR_FANG,  8,  2, {A_Thrust}, 0, 1, S_FANG_PINCHBOUNCE2), // S_FANG_PINCHBOUNCE1
+	STATE(SPR_FANG,  9,  2, {NULL}, 0, 0, S_FANG_PINCHBOUNCE3), // S_FANG_PINCHBOUNCE2
+	STATE(SPR_FANG, 10,  2, {A_Boss5Jump}, 0, 0, S_FANG_PINCHBOUNCE4), // S_FANG_PINCHBOUNCE3
+	STATE(SPR_FANG, 10,  1, {A_Boss5CheckFalling}, S_FANG_PINCHSKID1, S_FANG_PINCHFALL0, S_FANG_PINCHBOUNCE4), // S_FANG_PINCHBOUNCE4
+	STATE(SPR_FANG, 12,  0, {A_SetObjectFlags}, MF_NOCLIP|MF_NOCLIPHEIGHT, 1, S_FANG_PINCHFALL1), // S_FANG_PINCHFALL0
+	STATE(SPR_FANG, 12,  1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL2), // S_FANG_PINCHFALL1
+	STATE(SPR_FANG, 13,  1, {A_Boss5CheckOnGround}, S_FANG_PINCHSKID1, 0, S_FANG_PINCHFALL1), // S_FANG_PINCHFALL2
+	STATE(SPR_FANG,  4,  0, {A_PlayAttackSound}, 0, 0, S_FANG_PINCHSKID2), // S_FANG_PINCHSKID1
+	STATE(SPR_FANG,  4,  1, {A_DoNPCSkid}, S_FANG_PINCHLOBSHOT0, 0, S_FANG_PINCHSKID2), // S_FANG_PINCHSKID2
+	STATE(SPR_FANG, 18, 16, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT1), // S_FANG_PINCHLOBSHOT0
+	STATE(SPR_FANG, 19,  2, {A_FaceTarget}, 3, 0, S_FANG_PINCHLOBSHOT2), // S_FANG_PINCHLOBSHOT1
+	STATE(SPR_FANG, 20, 30, {A_Boss5MakeItRain}, MT_FBOMB, -16, S_FANG_PINCHLOBSHOT3), // S_FANG_PINCHLOBSHOT2
+	STATE(SPR_FANG, 20, 18, {A_LinedefExecuteFromArg}, 4, 0, S_FANG_PINCHLOBSHOT4), // S_FANG_PINCHLOBSHOT3
+	STATE(SPR_FANG,  0,  0, {A_Boss5Calm}, 0, 0, S_FANG_PATHINGSTART1), // S_FANG_PINCHLOBSHOT4
+
+	STATE(SPR_FANG, 21, 0, {A_DoNPCPain},                    0, 0, S_FANG_DIE2), // S_FANG_DIE1
+	STATE(SPR_FANG, 21, 1, {A_Boss5CheckOnGround}, S_FANG_DIE3, 0, S_FANG_DIE2), // S_FANG_DIE2
+
+	STATE(SPR_FANG, 22,  0, {A_Scream}, 0, 0, S_FANG_DIE4), // S_FANG_DIE3
+	STATE(SPR_FANG, 22, -1, {A_SetFuse}, 70, 0, S_FANG_DIE5), // S_FANG_DIE4
+
+	STATE(SPR_FANG, 11, 0, {A_PlaySound}, sfx_jump, 0, S_FANG_DIE6), // S_FANG_DIE5
+	STATE(SPR_FANG, 11, 1, {A_ZThrust}, 6, (1<<16)|1, S_FANG_DIE7), // S_FANG_DIE6
+	STATE(SPR_FANG, 11, 1, {A_Boss5CheckFalling}, S_FANG_FLEEPATHING1, S_FANG_DIE8, S_FANG_DIE7), // S_FANG_DIE7
+	STATE(SPR_FANG, 12, 1, {A_Boss5CheckOnGround}, S_FANG_FLEEPATHING1, 0, S_FANG_DIE8), // S_FANG_DIE8
+
+	STATE(SPR_FANG,  9,  0, {A_PlayActiveSound}, 0, 0, S_FANG_FLEEPATHING2), // S_FANG_FLEEPATHING1
+	STATE(SPR_FANG,  8,  2, {A_Boss5FindWaypoint}, 2, 0, S_FANG_FLEEBOUNCE1), // S_FANG_FLEEPATHING2
+	STATE(SPR_FANG,  9,  2, {NULL}, 0, 0, S_FANG_FLEEBOUNCE2), // S_FANG_FLEEBOUNCE1
+	STATE(SPR_FANG, 10, -1, {A_BossDeath}, 0, 0, S_NULL), // S_FANG_FLEEBOUNCE2
+
+	STATE(SPR_FANG, 17, 7*TICRATE, {NULL}, 0, 0, S_NULL), // S_FANG_KO
+
+	STATE(SPR_NULL, 0, -1, {A_RandomStateRange}, S_BROKENROBOTA, S_BROKENROBOTF, S_NULL), // S_BROKENROBOTRANDOM
+	STATE(SPR_BRKN,    FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL), // S_BROKENROBOTA
+	STATE(SPR_BRKN,  4|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL), // S_BROKENROBOTB
+	STATE(SPR_BRKN,  8|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL), // S_BROKENROBOTC
+	STATE(SPR_BRKN, 12|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL), // S_BROKENROBOTD
+	STATE(SPR_BRKN, 16|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL), // S_BROKENROBOTE
+	STATE(SPR_BRKN, 20|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 3, 4, S_NULL), // S_BROKENROBOTF
+
+	STATE(SPR_WHAT,   FF_ANIMATE|FF_FULLBRIGHT,  4, {NULL}, 1, 2, S_ALART2), // S_ALART1
+	STATE(SPR_WHAT, 2|FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL),   // S_ALART2
+
+	STATE(SPR_VWRE,   FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_VWREF
+	STATE(SPR_VWRE, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_VWREB
+
+	STATE(SPR_PROJ,   FF_TRANS20|FF_FULLBRIGHT,  4, {NULL}, 0, 0, S_PROJECTORLIGHT2), // S_PROJECTORLIGHT1
+	STATE(SPR_PROJ, 1|FF_TRANS40|FF_FULLBRIGHT,  1, {NULL}, 0, 0, S_PROJECTORLIGHT3), // S_PROJECTORLIGHT2
+	STATE(SPR_PROJ, 2|FF_TRANS20|FF_FULLBRIGHT,  1, {NULL}, 0, 0, S_PROJECTORLIGHT4), // S_PROJECTORLIGHT3
+	STATE(SPR_PROJ, 3|FF_TRANS40|FF_FULLBRIGHT,  2, {A_Repeat}, 39, S_PROJECTORLIGHT2, S_PROJECTORLIGHT5), // S_PROJECTORLIGHT4
+	STATE(SPR_PROJ, 4|FF_TRANS60|FF_FULLBRIGHT,  2, {NULL}, 0, 0, S_NULL), // S_PROJECTORLIGHT5
+
+	STATE(SPR_FBOM, 0, 1, {A_GhostMe}, 0, 0, S_FBOMB2), // S_FBOMB1
+	STATE(SPR_FBOM, 1, 1, {A_GhostMe}, 0, 0, S_FBOMB1), // S_FBOMB2
+	STATE(SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_FBOMB_EXPL2), // S_FBOMB_EXPL1
+	STATE(SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_Boss5BombExplode}, MT_TNTDUST, 0, S_FBOMB_EXPL3), // S_FBOMB_EXPL2
+	STATE(SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FBOMB_EXPL4), // S_FBOMB_EXPL3
+	STATE(SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL5), // S_FBOMB_EXPL4
+	STATE(SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL6), // S_FBOMB_EXPL5
+	STATE(SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL), // S_FBOMB_EXPL6
+	STATE(SPR_BARD, 0|FF_TRANS90, 2, {NULL}, 0, 0, S_TNTDUST_2), // S_TNTDUST_1
+	STATE(SPR_BARD, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_TNTDUST_3), // S_TNTDUST_2
+	STATE(SPR_BARD, 0|FF_TRANS40, 10, {NULL}, 0, 0, S_TNTDUST_4), // S_TNTDUST_3
+	STATE(SPR_BARD, 0|FF_TRANS50, 10, {NULL}, 0, 0, S_TNTDUST_5), // S_TNTDUST_4
+	STATE(SPR_BARD, 0|FF_TRANS60, 10, {NULL}, 0, 0, S_TNTDUST_6), // S_TNTDUST_5
+	STATE(SPR_BARD, 0|FF_TRANS70, 10, {NULL}, 0, 0, S_TNTDUST_7), // S_TNTDUST_6
+	STATE(SPR_BARD, 0|FF_TRANS80, 10, {NULL}, 0, 0, S_TNTDUST_8), // S_TNTDUST_7
+	STATE(SPR_BARD, 0|FF_TRANS90, 10, {NULL}, 0, 0, S_NULL), // S_TNTDUST_8
+	STATE(SPR_FSGN, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_FSGNA
+	STATE(SPR_FSGN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_FSGNB
+	STATE(SPR_FSGN, 2|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_FSGNC
+	STATE(SPR_FSGN, 3|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_FSGND
 
 	// Black Eggman (Boss 7)
-	{SPR_BRAK, 0, 1, {A_SetReactionTime}, 0, 0, S_BLACKEGG_STND2}, // S_BLACKEGG_STND
-	{SPR_BRAK, 0, 7, {A_Look}, 1, 0, S_BLACKEGG_STND2}, // S_BLACKEGG_STND2
-	{SPR_BRAK, 1, 7, {NULL}, 0, 0, S_BLACKEGG_WALK2}, // S_BLACKEGG_WALK1
-	{SPR_BRAK, 2, 7, {NULL}, 0, 0, S_BLACKEGG_WALK3}, // S_BLACKEGG_WALK2
-	{SPR_BRAK, 3, 7, {A_PlaySound}, sfx_bestep, 0, S_BLACKEGG_WALK4}, // S_BLACKEGG_WALK3
-	{SPR_BRAK, 4, 7, {NULL}, 0, 0, S_BLACKEGG_WALK5}, // S_BLACKEGG_WALK4
-	{SPR_BRAK, 5, 7, {NULL}, 0, 0, S_BLACKEGG_WALK6}, // S_BLACKEGG_WALK5
-	{SPR_BRAK, 6, 7, {A_PlaySound}, sfx_bestp2, 0, S_BLACKEGG_WALK1}, // S_BLACKEGG_WALK6
-	{SPR_BRAK, 7, 3, {NULL}, 0, 0, S_BLACKEGG_SHOOT2}, // S_BLACKEGG_SHOOT1
-	{SPR_BRAK, 24, 1, {A_PlaySound}, sfx_befire, 0, S_BLACKEGG_SHOOT1}, // S_BLACKEGG_SHOOT2
-
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN2}, // S_BLACKEGG_PAIN1
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN3}, // S_BLACKEGG_PAIN2
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN4}, // S_BLACKEGG_PAIN3
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN5}, // S_BLACKEGG_PAIN4
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN6}, // S_BLACKEGG_PAIN5
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN7}, // S_BLACKEGG_PAIN6
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN8}, // S_BLACKEGG_PAIN7
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN9}, // S_BLACKEGG_PAIN8
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN10}, // S_BLACKEGG_PAIN9
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN11}, // S_BLACKEGG_PAIN10
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN12}, // S_BLACKEGG_PAIN11
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN13}, // S_BLACKEGG_PAIN12
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN14}, // S_BLACKEGG_PAIN13
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN15}, // S_BLACKEGG_PAIN14
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN16}, // S_BLACKEGG_PAIN15
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN17}, // S_BLACKEGG_PAIN16
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN18}, // S_BLACKEGG_PAIN17
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN19}, // S_BLACKEGG_PAIN18
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN20}, // S_BLACKEGG_PAIN19
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN21}, // S_BLACKEGG_PAIN20
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN22}, // S_BLACKEGG_PAIN21
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN23}, // S_BLACKEGG_PAIN22
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN24}, // S_BLACKEGG_PAIN23
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN25}, // S_BLACKEGG_PAIN24
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN26}, // S_BLACKEGG_PAIN25
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN27}, // S_BLACKEGG_PAIN26
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN28}, // S_BLACKEGG_PAIN27
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN29}, // S_BLACKEGG_PAIN28
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN30}, // S_BLACKEGG_PAIN29
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN31}, // S_BLACKEGG_PAIN30
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN32}, // S_BLACKEGG_PAIN31
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN33}, // S_BLACKEGG_PAIN32
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN34}, // S_BLACKEGG_PAIN33
-	{SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN35}, // S_BLACKEGG_PAIN34
-	{SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_WALK1}, // S_BLACKEGG_PAIN35
-
-	{SPR_BRAK, 9, 20, {NULL}, 0, 0, S_BLACKEGG_HITFACE2}, // S_BLACKEGG_HITFACE1
-	{SPR_BRAK, 10, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE3}, // S_BLACKEGG_HITFACE2
-	{SPR_BRAK, 11, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE4}, // S_BLACKEGG_HITFACE3
-	{SPR_BRAK, 12,14, {NULL}, 0, 0, S_BLACKEGG_PAIN1}, // S_BLACKEGG_HITFACE4
-
-	{SPR_BRAK, 13, 14, {NULL}, 0, 0, S_BLACKEGG_DIE2}, // S_BLACKEGG_DIE1
-	{SPR_BRAK, 14, 7, {NULL}, 0, 0, S_BLACKEGG_DIE3}, // S_BLACKEGG_DIE2
-	{SPR_BRAK, 15, 5, {NULL}, 0, 0, S_BLACKEGG_DIE4}, // S_BLACKEGG_DIE3
-	{SPR_BRAK, 16, 3, {A_PlaySound}, sfx_bgxpld, 0, S_BLACKEGG_DIE5}, // S_BLACKEGG_DIE4
-	{SPR_BRAK, 17, -1, {NULL}, 0, 0, S_BLACKEGG_DIE5}, // S_BLACKEGG_DIE5
-
-	{SPR_BRAK, 18, 14, {NULL}, 0, 0, S_BLACKEGG_MISSILE2}, // S_BLACKEGG_MISSILE1
-	{SPR_BRAK, 19, 5, {NULL}, 0, 0, S_BLACKEGG_MISSILE3}, // S_BLACKEGG_MISSILE2
-	{SPR_BRAK, 20, 35, {A_Boss7FireMissiles}, MT_BLACKEGGMAN_MISSILE, sfx_beshot, S_BLACKEGG_JUMP1}, // S_BLACKEGG_MISSILE3
-
-	{SPR_BRAK, 21, -1, {NULL}, 0, 0, S_BLACKEGG_STND}, // S_BLACKEGG_GOOP
-
-	{SPR_BRAK, 22, 14, {A_PlaySound}, sfx_belnch, 0, S_BLACKEGG_JUMP2}, // S_BLACKEGG_JUMP1
-	{SPR_BRAK, 23, -1, {NULL}, 0, 0, S_BLACKEGG_WALK1}, // S_BLACKEGG_JUMP2
-
-	{SPR_BRAK, 21, 3*TICRATE, {NULL}, 0, 0, S_BLACKEGG_DESTROYPLAT2}, // S_BLACKEGG_DESTROYPLAT1
-	{SPR_BRAK, 21, 1, {A_PlaySound}, sfx_s3k54, 0, S_BLACKEGG_DESTROYPLAT3}, // S_BLACKEGG_DESTROYPLAT2
-	{SPR_BRAK, 21, 14, {A_LinedefExecuteFromArg}, 5, 0, S_BLACKEGG_STND}, // S_BLACKEGG_DESTROYPLAT3
-
-	{SPR_NULL, 0, 1, {A_CapeChase}, (160 - 20) << 16, 0, S_BLACKEGG_HELPER}, // S_BLACKEGG_HELPER
-
-	{SPR_BGOO, FF_TRANS50  , 2, {NULL}, 0, 0, S_BLACKEGG_GOOP2}, // S_BLACKEGG_GOOP1
-	{SPR_BGOO, FF_TRANS50|1, 2, {NULL}, 0, 0, S_BLACKEGG_GOOP1}, // S_BLACKEGG_GOOP2
-	{SPR_BGOO, FF_TRANS50|2, 6*TICRATE, {A_GoopSplat}, 0, 0, S_BLACKEGG_GOOP4}, // S_BLACKEGG_GOOP3
-	{SPR_BGOO, FF_TRANS60|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP5}, // S_BLACKEGG_GOOP4
-	{SPR_BGOO, FF_TRANS70|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP6}, // S_BLACKEGG_GOOP5
-	{SPR_BGOO, FF_TRANS80|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP7}, // S_BLACKEGG_GOOP6
-	{SPR_BGOO, FF_TRANS90|2, 4, {NULL}, 0, 0, S_NULL}, // S_BLACKEGG_GOOP7
-
-	{SPR_BMSL, 0, 1, {NULL}, 0, 0, S_BLACKEGG_MISSILE}, // S_BLACKEGG_MISSILE
+	STATE(SPR_BRAK, 0, 1, {A_SetReactionTime}, 0, 0, S_BLACKEGG_STND2), // S_BLACKEGG_STND
+	STATE(SPR_BRAK, 0, 7, {A_Look}, 1, 0, S_BLACKEGG_STND2), // S_BLACKEGG_STND2
+	STATE(SPR_BRAK, 1, 7, {NULL}, 0, 0, S_BLACKEGG_WALK2), // S_BLACKEGG_WALK1
+	STATE(SPR_BRAK, 2, 7, {NULL}, 0, 0, S_BLACKEGG_WALK3), // S_BLACKEGG_WALK2
+	STATE(SPR_BRAK, 3, 7, {A_PlaySound}, sfx_bestep, 0, S_BLACKEGG_WALK4), // S_BLACKEGG_WALK3
+	STATE(SPR_BRAK, 4, 7, {NULL}, 0, 0, S_BLACKEGG_WALK5), // S_BLACKEGG_WALK4
+	STATE(SPR_BRAK, 5, 7, {NULL}, 0, 0, S_BLACKEGG_WALK6), // S_BLACKEGG_WALK5
+	STATE(SPR_BRAK, 6, 7, {A_PlaySound}, sfx_bestp2, 0, S_BLACKEGG_WALK1), // S_BLACKEGG_WALK6
+	STATE(SPR_BRAK, 7, 3, {NULL}, 0, 0, S_BLACKEGG_SHOOT2), // S_BLACKEGG_SHOOT1
+	STATE(SPR_BRAK, 24, 1, {A_PlaySound}, sfx_befire, 0, S_BLACKEGG_SHOOT1), // S_BLACKEGG_SHOOT2
+
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN2), // S_BLACKEGG_PAIN1
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN3), // S_BLACKEGG_PAIN2
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN4), // S_BLACKEGG_PAIN3
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN5), // S_BLACKEGG_PAIN4
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN6), // S_BLACKEGG_PAIN5
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN7), // S_BLACKEGG_PAIN6
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN8), // S_BLACKEGG_PAIN7
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN9), // S_BLACKEGG_PAIN8
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN10), // S_BLACKEGG_PAIN9
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN11), // S_BLACKEGG_PAIN10
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN12), // S_BLACKEGG_PAIN11
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN13), // S_BLACKEGG_PAIN12
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN14), // S_BLACKEGG_PAIN13
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN15), // S_BLACKEGG_PAIN14
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN16), // S_BLACKEGG_PAIN15
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN17), // S_BLACKEGG_PAIN16
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN18), // S_BLACKEGG_PAIN17
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN19), // S_BLACKEGG_PAIN18
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN20), // S_BLACKEGG_PAIN19
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN21), // S_BLACKEGG_PAIN20
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN22), // S_BLACKEGG_PAIN21
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN23), // S_BLACKEGG_PAIN22
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN24), // S_BLACKEGG_PAIN23
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN25), // S_BLACKEGG_PAIN24
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN26), // S_BLACKEGG_PAIN25
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN27), // S_BLACKEGG_PAIN26
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN28), // S_BLACKEGG_PAIN27
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN29), // S_BLACKEGG_PAIN28
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN30), // S_BLACKEGG_PAIN29
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN31), // S_BLACKEGG_PAIN30
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN32), // S_BLACKEGG_PAIN31
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN33), // S_BLACKEGG_PAIN32
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN34), // S_BLACKEGG_PAIN33
+	STATE(SPR_BRAK, 25, 1, {NULL}, 0, 0, S_BLACKEGG_PAIN35), // S_BLACKEGG_PAIN34
+	STATE(SPR_BRAK, 8, 1, {NULL}, 0, 0, S_BLACKEGG_WALK1), // S_BLACKEGG_PAIN35
+
+	STATE(SPR_BRAK, 9, 20, {NULL}, 0, 0, S_BLACKEGG_HITFACE2), // S_BLACKEGG_HITFACE1
+	STATE(SPR_BRAK, 10, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE3), // S_BLACKEGG_HITFACE2
+	STATE(SPR_BRAK, 11, 2, {NULL}, 0, 0, S_BLACKEGG_HITFACE4), // S_BLACKEGG_HITFACE3
+	STATE(SPR_BRAK, 12,14, {NULL}, 0, 0, S_BLACKEGG_PAIN1), // S_BLACKEGG_HITFACE4
+
+	STATE(SPR_BRAK, 13, 14, {NULL}, 0, 0, S_BLACKEGG_DIE2), // S_BLACKEGG_DIE1
+	STATE(SPR_BRAK, 14, 7, {NULL}, 0, 0, S_BLACKEGG_DIE3), // S_BLACKEGG_DIE2
+	STATE(SPR_BRAK, 15, 5, {NULL}, 0, 0, S_BLACKEGG_DIE4), // S_BLACKEGG_DIE3
+	STATE(SPR_BRAK, 16, 3, {A_PlaySound}, sfx_bgxpld, 0, S_BLACKEGG_DIE5), // S_BLACKEGG_DIE4
+	STATE(SPR_BRAK, 17, -1, {NULL}, 0, 0, S_BLACKEGG_DIE5), // S_BLACKEGG_DIE5
+
+	STATE(SPR_BRAK, 18, 14, {NULL}, 0, 0, S_BLACKEGG_MISSILE2), // S_BLACKEGG_MISSILE1
+	STATE(SPR_BRAK, 19, 5, {NULL}, 0, 0, S_BLACKEGG_MISSILE3), // S_BLACKEGG_MISSILE2
+	STATE(SPR_BRAK, 20, 35, {A_Boss7FireMissiles}, MT_BLACKEGGMAN_MISSILE, sfx_beshot, S_BLACKEGG_JUMP1), // S_BLACKEGG_MISSILE3
+
+	STATE(SPR_BRAK, 21, -1, {NULL}, 0, 0, S_BLACKEGG_STND), // S_BLACKEGG_GOOP
+
+	STATE(SPR_BRAK, 22, 14, {A_PlaySound}, sfx_belnch, 0, S_BLACKEGG_JUMP2), // S_BLACKEGG_JUMP1
+	STATE(SPR_BRAK, 23, -1, {NULL}, 0, 0, S_BLACKEGG_WALK1), // S_BLACKEGG_JUMP2
+
+	STATE(SPR_BRAK, 21, 3*TICRATE, {NULL}, 0, 0, S_BLACKEGG_DESTROYPLAT2), // S_BLACKEGG_DESTROYPLAT1
+	STATE(SPR_BRAK, 21, 1, {A_PlaySound}, sfx_s3k54, 0, S_BLACKEGG_DESTROYPLAT3), // S_BLACKEGG_DESTROYPLAT2
+	STATE(SPR_BRAK, 21, 14, {A_LinedefExecuteFromArg}, 5, 0, S_BLACKEGG_STND), // S_BLACKEGG_DESTROYPLAT3
+
+	STATE(SPR_NULL, 0, 1, {A_CapeChase}, (160 - 20) << 16, 0, S_BLACKEGG_HELPER), // S_BLACKEGG_HELPER
+
+	STATE(SPR_BGOO, FF_TRANS50  , 2, {NULL}, 0, 0, S_BLACKEGG_GOOP2), // S_BLACKEGG_GOOP1
+	STATE(SPR_BGOO, FF_TRANS50|1, 2, {NULL}, 0, 0, S_BLACKEGG_GOOP1), // S_BLACKEGG_GOOP2
+	STATE(SPR_BGOO, FF_TRANS50|2, 6*TICRATE, {A_GoopSplat}, 0, 0, S_BLACKEGG_GOOP4), // S_BLACKEGG_GOOP3
+	STATE(SPR_BGOO, FF_TRANS60|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP5), // S_BLACKEGG_GOOP4
+	STATE(SPR_BGOO, FF_TRANS70|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP6), // S_BLACKEGG_GOOP5
+	STATE(SPR_BGOO, FF_TRANS80|2, 4, {NULL}, 0, 0, S_BLACKEGG_GOOP7), // S_BLACKEGG_GOOP6
+	STATE(SPR_BGOO, FF_TRANS90|2, 4, {NULL}, 0, 0, S_NULL), // S_BLACKEGG_GOOP7
+
+	STATE(SPR_BMSL, 0, 1, {NULL}, 0, 0, S_BLACKEGG_MISSILE), // S_BLACKEGG_MISSILE
 
 	// New Very-Last-Minute 2.1 Brak Eggman (Cy-Brak-demon)
-	{SPR_BRAK, 0, 10, {A_Look}, 0, 0, S_CYBRAKDEMON_IDLE}, // S_CYBRAKDEMON_IDLE
-	{SPR_BRAK, 1, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK2}, // S_CYBRAKDEMON_WALK1
-	{SPR_BRAK, 2, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK3}, // S_CYBRAKDEMON_WALK2
-	{SPR_BRAK, 3, 8, {A_BrakChase}, 3, sfx_bestep, S_CYBRAKDEMON_WALK4}, // S_CYBRAKDEMON_WALK3
-	{SPR_BRAK, 4, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK5}, // S_CYBRAKDEMON_WALK4
-	{SPR_BRAK, 5, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK6}, // S_CYBRAKDEMON_WALK5
-	{SPR_BRAK, 6, 8, {A_BrakChase}, 3, sfx_bestp2, S_CYBRAKDEMON_WALK1}, // S_CYBRAKDEMON_WALK6
-	{SPR_BRAK, 7, 6, {A_RandomState}, S_CYBRAKDEMON_MISSILE_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1}, // S_CYBRAKDEMON_CHOOSE_ATTACK1
-	{SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK2}, // S_CYBRAKDEMON_MISSILE_ATTACK1 // Aim
-	{SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK3}, // S_CYBRAKDEMON_MISSILE_ATTACK2 // Fire
-	{SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK4}, // S_CYBRAKDEMON_MISSILE_ATTACK3 // Aim
-	{SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK5}, // S_CYBRAKDEMON_MISSILE_ATTACK4 // Fire
-	{SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK6}, // S_CYBRAKDEMON_MISSILE_ATTACK5 // Aim
-	{SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_FINISH_ATTACK1}, // S_CYBRAKDEMON_MISSILE_ATTACK6 // Fire
-	{SPR_BRAK, 7, 1, {A_Repeat}, 1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK2}, // S_CYBRAKDEMON_FLAME_ATTACK1 // Reset
-	{SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FLAME_ATTACK3}, // S_CYBRAKDEMON_FLAME_ATTACK2 // Aim
-	{SPR_BRAK, 26 + FF_FULLBRIGHT, 2, {A_BrakFireShot}, MT_CYBRAKDEMON_FLAMESHOT, 128, S_CYBRAKDEMON_FLAME_ATTACK4}, // S_CYBRAKDEMON_FLAME_ATTACK3 // Fire
-	{SPR_BRAK, 7, 1, {A_Repeat}, 30, S_CYBRAKDEMON_FLAME_ATTACK3, S_CYBRAKDEMON_FINISH_ATTACK1}, // S_CYBRAKDEMON_FLAME_ATTACK4 // Loop
-	{SPR_BRAK, 0, 6, {A_RandomState}, S_CYBRAKDEMON_VILE_ATTACK1, S_CYBRAKDEMON_NAPALM_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1}, // S_CYBRAKDEMON_CHOOSE_ATTACK2
-	{SPR_BRAK, 20, 0, {A_LinedefExecuteFromArg}, 5, 0, S_CYBRAKDEMON_VILE_ATTACK2}, // S_CYBRAKDEMON_VILE_ATTACK1
-	{SPR_BRAK, 20, 24, {A_VileTarget}, MT_CYBRAKDEMON_TARGET_RETICULE, 1, S_CYBRAKDEMON_VILE_ATTACK3}, // S_CYBRAKDEMON_VILE_ATTACK2
-	{SPR_BRAK, 19, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK4}, // S_CYBRAKDEMON_VILE_ATTACK3
-	{SPR_BRAK, 18, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK5}, // S_CYBRAKDEMON_VILE_ATTACK4
-	{SPR_BRAK, 8, 32, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK6}, // S_CYBRAKDEMON_VILE_ATTACK5
-	{SPR_BRAK, 20 + FF_FULLBRIGHT, 28, {A_VileAttack}, sfx_brakrx, MT_CYBRAKDEMON_VILE_EXPLOSION + (1<<16), S_CYBRAKDEMON_FINISH_ATTACK1}, // S_CYBRAKDEMON_VILE_ATTACK6
-	{SPR_BRAK, 0, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_NAPALM_ATTACK2}, // S_CYBRAKDEMON_NAPALM_ATTACK1
-	{SPR_BRAK, 21 + FF_FULLBRIGHT, 8, {A_BrakLobShot}, MT_CYBRAKDEMON_NAPALM_BOMB_LARGE, 96, S_CYBRAKDEMON_NAPALM_ATTACK3}, // S_CYBRAKDEMON_NAPALM_ATTACK2
-	{SPR_BRAK, 0, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FINISH_ATTACK1}, // S_CYBRAKDEMON_NAPALM_ATTACK3
-	{SPR_BRAK, 0, 0, {A_SetObjectFlags2}, MF2_FRET, 1, S_CYBRAKDEMON_FINISH_ATTACK2}, // 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}, // 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}, // S_CYBRAKDEMON_PAIN1
-	{SPR_BRAK, 18, 0, {A_CheckHealth}, 3, S_CYBRAKDEMON_PAIN3, S_CYBRAKDEMON_CHOOSE_ATTACK1}, // S_CYBRAKDEMON_PAIN2
-	{SPR_BRAK, 18, 0, {A_LinedefExecuteFromArg}, 4, 0, S_CYBRAKDEMON_CHOOSE_ATTACK1}, // S_CYBRAKDEMON_PAIN3
-	{SPR_BRAK, 18, 1, {A_Repeat}, 1, S_CYBRAKDEMON_DIE1, S_CYBRAKDEMON_DIE2}, // S_CYBRAKDEMON_DIE1
-	{SPR_BRAK, 18, 2, {A_BossScream}, 2, 0, S_CYBRAKDEMON_DIE3}, // S_CYBRAKDEMON_DIE2
-	{SPR_BRAK, 18, 0, {A_Repeat}, 52, S_CYBRAKDEMON_DIE2, S_CYBRAKDEMON_DIE4}, // S_CYBRAKDEMON_DIE3
-	{SPR_BRAK, 13, 34, {A_BossDeath}, 0, 0, S_CYBRAKDEMON_DIE5}, // S_CYBRAKDEMON_DIE4
-	{SPR_BRAK, 14, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE6}, // S_CYBRAKDEMON_DIE5
-	{SPR_BRAK, 15, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE7}, // S_CYBRAKDEMON_DIE6
-	{SPR_BRAK, 16, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE8}, // S_CYBRAKDEMON_DIE7
-	{SPR_BRAK, 17, 34, {NULL}, sfx_befall, 0, S_CYBRAKDEMON_DIE8}, // S_CYBRAKDEMON_DIE8
-	{SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 2, S_CYBRAKDEMON_IDLE}, // S_CYBRAKDEMON_DEINVINCIBLERIZE
-	{SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 1, S_CYBRAKDEMON_IDLE}, // S_CYBRAKDEMON_INVINCIBLERIZE
-
-	{SPR_RCKT, 0 + FF_FULLBRIGHT, 1, {A_SetObjectFlags2}, MF2_RAILRING, 2, S_CYBRAKDEMONMISSILE}, // S_CYBRAKDEMONMISSILE
-	{SPR_RCKT, 1 + FF_FULLBRIGHT, 8, {A_Explode}, 0, 0, S_CYBRAKDEMONMISSILE_EXPLODE2}, // 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}, // S_CYBRAKDEMONMISSILE_EXPLODE2
-	{SPR_RCKT, 3 + FF_FULLBRIGHT, 4, {NULL}, 0, 0, S_NULL}, // S_CYBRAKDEMONMISSILE_EXPLODE3
-
-	{SPR_FLME, FF_FULLBRIGHT  , 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY2}, // S_CYBRAKDEMONFLAMESHOT_FLY1
-	{SPR_FLME, FF_FULLBRIGHT|1, 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3}, // S_CYBRAKDEMONFLAMESHOT_FLY2
-	{SPR_FLME, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3}, // S_CYBRAKDEMONFLAMESHOT_FLY3
-	{SPR_FLME, FF_FULLBRIGHT|2, 0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL}, // S_CYBRAKDEMONFLAMESHOT_DIE
-
-	{SPR_FLAM, FF_FULLBRIGHT, 1, {A_SetFuse}, 10*TICRATE, 0, S_FLAMEREST}, // S_CYBRAKDEMONFLAMEREST
-
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_INIT2}, // S_CYBRAKDEMONELECTRICBARRIER_INIT1
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_INVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND}, // S_CYBRAKDEMONELECTRICBARRIER_INIT2
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER1}, // S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER2}, // S_CYBRAKDEMONELECTRICBARRIER1
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER3}, // S_CYBRAKDEMONELECTRICBARRIER2
-	{SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER4}, // S_CYBRAKDEMONELECTRICBARRIER3
-	{SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER5}, // S_CYBRAKDEMONELECTRICBARRIER4
-	{SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER6}, // S_CYBRAKDEMONELECTRICBARRIER5
-	{SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER7}, // S_CYBRAKDEMONELECTRICBARRIER6
-	{SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER8}, // S_CYBRAKDEMONELECTRICBARRIER7
-	{SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER9}, // S_CYBRAKDEMONELECTRICBARRIER8
-	{SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER10}, // S_CYBRAKDEMONELECTRICBARRIER9
-	{SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER11}, // S_CYBRAKDEMONELECTRICBARRIER10
-	{SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER12}, // S_CYBRAKDEMONELECTRICBARRIER11
-	{SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER13}, // S_CYBRAKDEMONELECTRICBARRIER12
-	{SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER14}, // S_CYBRAKDEMONELECTRICBARRIER13
-	{SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER15}, // S_CYBRAKDEMONELECTRICBARRIER14
-	{SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER16}, // S_CYBRAKDEMONELECTRICBARRIER15
-	{SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER17}, // S_CYBRAKDEMONELECTRICBARRIER16
-	{SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER18}, // S_CYBRAKDEMONELECTRICBARRIER17
-	{SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER19}, // S_CYBRAKDEMONELECTRICBARRIER18
-	{SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER20}, // S_CYBRAKDEMONELECTRICBARRIER19
-	{SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER21}, // S_CYBRAKDEMONELECTRICBARRIER20
-	{SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER22}, // S_CYBRAKDEMONELECTRICBARRIER21
-	{SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER23}, // S_CYBRAKDEMONELECTRICBARRIER22
-	{SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER24}, // S_CYBRAKDEMONELECTRICBARRIER23
-	{SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND}, // S_CYBRAKDEMONELECTRICBARRIER24
-	{SPR_NULL, 0, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_DEINVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_DIE2}, // S_CYBRAKDEMONELECTRICBARRIER_DIE1
-	{SPR_NULL, 0, 0, {A_SetObjectFlags}, MF_PUSHABLE|MF_FIRE|MF_PAIN, 1, S_CYBRAKDEMONELECTRICBARRIER_DIE3}, // S_CYBRAKDEMONELECTRICBARRIER_DIE2
-	{SPR_NULL, 0, 20*TICRATE, {A_Scream}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS}, // S_CYBRAKDEMONELECTRICBARRIER_DIE3
-	{SPR_NULL, 0, 0, {A_CheckRandom}, 10, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK,
-	{SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS,
-	{SPR_NULL, 0, 0, {A_RandomStateRange}, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE,
-	{SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1,
-	{SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM2,
-	{SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM3,
-	{SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM4,
-	{SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM5,
-	{SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM6,
-	{SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM7,
-	{SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM8,
-	{SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM9,
-	{SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM10,
-	{SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM11,
-	{SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12,
-	{SPR_NULL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL,
-	{SPR_NULL, 0, 0, {A_Repeat}, 5*TICRATE, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK, S_CYBRAKDEMONELECTRICBARRIER_REVIVE1}, // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP,
-	{SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE2}, // S_CYBRAKDEMONELECTRICBARRIER_REVIVE1
-	{SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE3}, // S_CYBRAKDEMONELECTRICBARRIER_REVIVE2
-	{SPR_NULL, 0, TICRATE, {A_PlaySound}, sfx_s3k79, 0, S_NULL}, // S_CYBRAKDEMONELECTRICBARRIER_REVIVE3
-
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT  , 1, {A_VileFire}, sfx_s3k9d, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE2}, // S_CYBRAKDEMONTARGETRETICULE1
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE3}, // S_CYBRAKDEMONTARGETRETICULE2
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|1, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE4}, // S_CYBRAKDEMONTARGETRETICULE3
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE5}, // S_CYBRAKDEMONTARGETRETICULE4
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|2, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE6}, // S_CYBRAKDEMONTARGETRETICULE5
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE7}, // S_CYBRAKDEMONTARGETRETICULE6
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|3, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE8}, // S_CYBRAKDEMONTARGETRETICULE7
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE9}, // S_CYBRAKDEMONTARGETRETICULE8
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|4, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE10}, // S_CYBRAKDEMONTARGETRETICULE9
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE11}, // S_CYBRAKDEMONTARGETRETICULE10
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|5, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE12}, // S_CYBRAKDEMONTARGETRETICULE11
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE13}, // S_CYBRAKDEMONTARGETRETICULE12
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT  , 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE14}, // S_CYBRAKDEMONTARGETRETICULE13
-	{SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_Repeat}, 6, S_CYBRAKDEMONTARGETRETICULE2, S_NULL}, // S_CYBRAKDEMONTARGETRETICULE14
-
-	{SPR_HOOP, FF_TRANS50|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL}, // S_CYBRAKDEMONTARGETDOT
-
-	{SPR_NPLM, 0, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1,
-	{SPR_NPLM, 1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2,
-	{SPR_NPLM, 2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3,
-	{SPR_NPLM, 3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1}, //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4,
-	{SPR_NPLM, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE1, // Explode
-	{SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (6<<16), 256 + (48<<16), S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2, // Outer ring
-	{SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (1<<16), 32<<16, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3, // Center
-	{SPR_NULL, 0, 81, {A_Scream}, 0, 0, S_NULL}, //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4, // Sound
-
-	{SPR_MNPL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL}, //S_CYBRAKDEMONNAPALMBOMBSMALL,
-	{SPR_MNPL, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE1, // Explode
-	{SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (12<<16), 128 + (40<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2, // Outer ring
-	{SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (8<<16), 64 + (32<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3, // Inner ring
-	{SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (1<<16), 24<<16, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4, // Center
-	{SPR_NULL, 0, 24, {A_Scream}, 0, 0, S_NULL}, //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5, // Sound
-
-	{SPR_SFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY2}, //S_CYBRAKDEMONNAPALMFLAME_FLY1,
-	{SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY3}, //S_CYBRAKDEMONNAPALMFLAME_FLY2,
-	{SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY4}, //S_CYBRAKDEMONNAPALMFLAME_FLY3,
-	{SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY5}, //S_CYBRAKDEMONNAPALMFLAME_FLY4,
-	{SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY6}, //S_CYBRAKDEMONNAPALMFLAME_FLY5,
-	{SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY1}, //S_CYBRAKDEMONNAPALMFLAME_FLY6,
-	{SPR_SFLM, FF_FULLBRIGHT,   0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL}, //S_CYBRAKDEMONNAPALMFLAME_DIE,
-
-	{SPR_NULL, 0, 1, {A_SetFuse}, TICRATE, 0, S_CYBRAKDEMONVILEEXPLOSION2}, //S_CYBRAKDEMONVILEEXPLOSION1,
-	{SPR_NULL, 0, 0, {A_ScoreRise}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION3}, //S_CYBRAKDEMONVILEEXPLOSION2,
-	{SPR_NULL, 0, 1, {A_BossScream}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION1}, //S_CYBRAKDEMONVILEEXPLOSION3,
+	STATE(SPR_BRAK, 0, 10, {A_Look}, 0, 0, S_CYBRAKDEMON_IDLE), // S_CYBRAKDEMON_IDLE
+	STATE(SPR_BRAK, 1, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK2), // S_CYBRAKDEMON_WALK1
+	STATE(SPR_BRAK, 2, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK3), // S_CYBRAKDEMON_WALK2
+	STATE(SPR_BRAK, 3, 8, {A_BrakChase}, 3, sfx_bestep, S_CYBRAKDEMON_WALK4), // S_CYBRAKDEMON_WALK3
+	STATE(SPR_BRAK, 4, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK5), // S_CYBRAKDEMON_WALK4
+	STATE(SPR_BRAK, 5, 8, {A_BrakChase}, 3, 0, S_CYBRAKDEMON_WALK6), // S_CYBRAKDEMON_WALK5
+	STATE(SPR_BRAK, 6, 8, {A_BrakChase}, 3, sfx_bestp2, S_CYBRAKDEMON_WALK1), // S_CYBRAKDEMON_WALK6
+	STATE(SPR_BRAK, 7, 6, {A_RandomState}, S_CYBRAKDEMON_MISSILE_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1), // S_CYBRAKDEMON_CHOOSE_ATTACK1
+	STATE(SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK2), // S_CYBRAKDEMON_MISSILE_ATTACK1 // Aim
+	STATE(SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK3), // S_CYBRAKDEMON_MISSILE_ATTACK2 // Fire
+	STATE(SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK4), // S_CYBRAKDEMON_MISSILE_ATTACK3 // Aim
+	STATE(SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_MISSILE_ATTACK5), // S_CYBRAKDEMON_MISSILE_ATTACK4 // Fire
+	STATE(SPR_BRAK, 7, 12, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_MISSILE_ATTACK6), // S_CYBRAKDEMON_MISSILE_ATTACK5 // Aim
+	STATE(SPR_BRAK, 26 + FF_FULLBRIGHT, 12, {A_BrakFireShot}, MT_CYBRAKDEMON_MISSILE, 128, S_CYBRAKDEMON_FINISH_ATTACK1), // S_CYBRAKDEMON_MISSILE_ATTACK6 // Fire
+	STATE(SPR_BRAK, 7, 1, {A_Repeat}, 1, S_CYBRAKDEMON_FLAME_ATTACK1, S_CYBRAKDEMON_FLAME_ATTACK2), // S_CYBRAKDEMON_FLAME_ATTACK1 // Reset
+	STATE(SPR_BRAK, 7, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FLAME_ATTACK3), // S_CYBRAKDEMON_FLAME_ATTACK2 // Aim
+	STATE(SPR_BRAK, 26 + FF_FULLBRIGHT, 2, {A_BrakFireShot}, MT_CYBRAKDEMON_FLAMESHOT, 128, S_CYBRAKDEMON_FLAME_ATTACK4), // S_CYBRAKDEMON_FLAME_ATTACK3 // Fire
+	STATE(SPR_BRAK, 7, 1, {A_Repeat}, 30, S_CYBRAKDEMON_FLAME_ATTACK3, S_CYBRAKDEMON_FINISH_ATTACK1), // S_CYBRAKDEMON_FLAME_ATTACK4 // Loop
+	STATE(SPR_BRAK, 0, 6, {A_RandomState}, S_CYBRAKDEMON_VILE_ATTACK1, S_CYBRAKDEMON_NAPALM_ATTACK1, S_CYBRAKDEMON_MISSILE_ATTACK1), // S_CYBRAKDEMON_CHOOSE_ATTACK2
+	STATE(SPR_BRAK, 20, 0, {A_LinedefExecuteFromArg}, 5, 0, S_CYBRAKDEMON_VILE_ATTACK2), // S_CYBRAKDEMON_VILE_ATTACK1
+	STATE(SPR_BRAK, 20, 24, {A_VileTarget}, MT_CYBRAKDEMON_TARGET_RETICULE, 1, S_CYBRAKDEMON_VILE_ATTACK3), // S_CYBRAKDEMON_VILE_ATTACK2
+	STATE(SPR_BRAK, 19, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK4), // S_CYBRAKDEMON_VILE_ATTACK3
+	STATE(SPR_BRAK, 18, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK5), // S_CYBRAKDEMON_VILE_ATTACK4
+	STATE(SPR_BRAK, 8, 32, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_VILE_ATTACK6), // S_CYBRAKDEMON_VILE_ATTACK5
+	STATE(SPR_BRAK, 20 + FF_FULLBRIGHT, 28, {A_VileAttack}, sfx_brakrx, MT_CYBRAKDEMON_VILE_EXPLOSION + (1<<16), S_CYBRAKDEMON_FINISH_ATTACK1), // S_CYBRAKDEMON_VILE_ATTACK6
+	STATE(SPR_BRAK, 0, 6, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_NAPALM_ATTACK2), // S_CYBRAKDEMON_NAPALM_ATTACK1
+	STATE(SPR_BRAK, 21 + FF_FULLBRIGHT, 8, {A_BrakLobShot}, MT_CYBRAKDEMON_NAPALM_BOMB_LARGE, 96, S_CYBRAKDEMON_NAPALM_ATTACK3), // S_CYBRAKDEMON_NAPALM_ATTACK2
+	STATE(SPR_BRAK, 0, 8, {A_FaceTarget}, 0, 0, S_CYBRAKDEMON_FINISH_ATTACK1), // S_CYBRAKDEMON_NAPALM_ATTACK3
+	STATE(SPR_BRAK, 0, 0, {A_SetObjectFlags2}, MF2_FRET, 1, S_CYBRAKDEMON_FINISH_ATTACK2), // S_CYBRAKDEMON_FINISH_ATTACK1 // If just attacked, remove MF2_FRET w/out going back to spawnstate
+	STATE(SPR_BRAK, 0, 0, {A_SetReactionTime}, 0, 0, S_CYBRAKDEMON_WALK1), // S_CYBRAKDEMON_FINISH_ATTACK2 // If just attacked, remove MF2_FRET w/out going back to spawnstate
+	STATE(SPR_BRAK, 18, 24, {A_Pain}, 0, 0, S_CYBRAKDEMON_PAIN2), // S_CYBRAKDEMON_PAIN1
+	STATE(SPR_BRAK, 18, 0, {A_CheckHealth}, 3, S_CYBRAKDEMON_PAIN3, S_CYBRAKDEMON_CHOOSE_ATTACK1), // S_CYBRAKDEMON_PAIN2
+	STATE(SPR_BRAK, 18, 0, {A_LinedefExecuteFromArg}, 4, 0, S_CYBRAKDEMON_CHOOSE_ATTACK1), // S_CYBRAKDEMON_PAIN3
+	STATE(SPR_BRAK, 18, 1, {A_Repeat}, 1, S_CYBRAKDEMON_DIE1, S_CYBRAKDEMON_DIE2), // S_CYBRAKDEMON_DIE1
+	STATE(SPR_BRAK, 18, 2, {A_BossScream}, 2, 0, S_CYBRAKDEMON_DIE3), // S_CYBRAKDEMON_DIE2
+	STATE(SPR_BRAK, 18, 0, {A_Repeat}, 52, S_CYBRAKDEMON_DIE2, S_CYBRAKDEMON_DIE4), // S_CYBRAKDEMON_DIE3
+	STATE(SPR_BRAK, 13, 34, {A_BossDeath}, 0, 0, S_CYBRAKDEMON_DIE5), // S_CYBRAKDEMON_DIE4
+	STATE(SPR_BRAK, 14, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE6), // S_CYBRAKDEMON_DIE5
+	STATE(SPR_BRAK, 15, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE7), // S_CYBRAKDEMON_DIE6
+	STATE(SPR_BRAK, 16, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE8), // S_CYBRAKDEMON_DIE7
+	STATE(SPR_BRAK, 17, 34, {NULL}, sfx_befall, 0, S_CYBRAKDEMON_DIE8), // S_CYBRAKDEMON_DIE8
+	STATE(SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 2, S_CYBRAKDEMON_IDLE), // S_CYBRAKDEMON_DEINVINCIBLERIZE
+	STATE(SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 1, S_CYBRAKDEMON_IDLE), // S_CYBRAKDEMON_INVINCIBLERIZE
+
+	STATE(SPR_RCKT, 0 + FF_FULLBRIGHT, 1, {A_SetObjectFlags2}, MF2_RAILRING, 2, S_CYBRAKDEMONMISSILE), // S_CYBRAKDEMONMISSILE
+	STATE(SPR_RCKT, 1 + FF_FULLBRIGHT, 8, {A_Explode}, 0, 0, S_CYBRAKDEMONMISSILE_EXPLODE2), // S_CYBRAKDEMONMISSILE_EXPLODE1 //TODO: set missile mobj's "damage" to an appropriate radius
+	STATE(SPR_RCKT, 2 + FF_FULLBRIGHT, 6, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (6<<16), 32 + (16<<16), S_CYBRAKDEMONMISSILE_EXPLODE3), // S_CYBRAKDEMONMISSILE_EXPLODE2
+	STATE(SPR_RCKT, 3 + FF_FULLBRIGHT, 4, {NULL}, 0, 0, S_NULL), // S_CYBRAKDEMONMISSILE_EXPLODE3
+
+	STATE(SPR_FLME, FF_FULLBRIGHT  , 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY2), // S_CYBRAKDEMONFLAMESHOT_FLY1
+	STATE(SPR_FLME, FF_FULLBRIGHT|1, 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3), // S_CYBRAKDEMONFLAMESHOT_FLY2
+	STATE(SPR_FLME, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3), // S_CYBRAKDEMONFLAMESHOT_FLY3
+	STATE(SPR_FLME, FF_FULLBRIGHT|2, 0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL), // S_CYBRAKDEMONFLAMESHOT_DIE
+
+	STATE(SPR_FLAM, FF_FULLBRIGHT, 1, {A_SetFuse}, 10*TICRATE, 0, S_FLAMEREST), // S_CYBRAKDEMONFLAMEREST
+
+	STATE(SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_INIT2), // S_CYBRAKDEMONELECTRICBARRIER_INIT1
+	STATE(SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_INVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND), // S_CYBRAKDEMONELECTRICBARRIER_INIT2
+	STATE(SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER1), // S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND
+	STATE(SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER2), // S_CYBRAKDEMONELECTRICBARRIER1
+	STATE(SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER3), // S_CYBRAKDEMONELECTRICBARRIER2
+	STATE(SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER4), // S_CYBRAKDEMONELECTRICBARRIER3
+	STATE(SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER5), // S_CYBRAKDEMONELECTRICBARRIER4
+	STATE(SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER6), // S_CYBRAKDEMONELECTRICBARRIER5
+	STATE(SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER7), // S_CYBRAKDEMONELECTRICBARRIER6
+	STATE(SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER8), // S_CYBRAKDEMONELECTRICBARRIER7
+	STATE(SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER9), // S_CYBRAKDEMONELECTRICBARRIER8
+	STATE(SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER10), // S_CYBRAKDEMONELECTRICBARRIER9
+	STATE(SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER11), // S_CYBRAKDEMONELECTRICBARRIER10
+	STATE(SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER12), // S_CYBRAKDEMONELECTRICBARRIER11
+	STATE(SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER13), // S_CYBRAKDEMONELECTRICBARRIER12
+	STATE(SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER14), // S_CYBRAKDEMONELECTRICBARRIER13
+	STATE(SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER15), // S_CYBRAKDEMONELECTRICBARRIER14
+	STATE(SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER16), // S_CYBRAKDEMONELECTRICBARRIER15
+	STATE(SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER17), // S_CYBRAKDEMONELECTRICBARRIER16
+	STATE(SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER18), // S_CYBRAKDEMONELECTRICBARRIER17
+	STATE(SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER19), // S_CYBRAKDEMONELECTRICBARRIER18
+	STATE(SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER20), // S_CYBRAKDEMONELECTRICBARRIER19
+	STATE(SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER21), // S_CYBRAKDEMONELECTRICBARRIER20
+	STATE(SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER22), // S_CYBRAKDEMONELECTRICBARRIER21
+	STATE(SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER23), // S_CYBRAKDEMONELECTRICBARRIER22
+	STATE(SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER24), // S_CYBRAKDEMONELECTRICBARRIER23
+	STATE(SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND), // S_CYBRAKDEMONELECTRICBARRIER24
+	STATE(SPR_NULL, 0, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_DEINVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_DIE2), // S_CYBRAKDEMONELECTRICBARRIER_DIE1
+	STATE(SPR_NULL, 0, 0, {A_SetObjectFlags}, MF_PUSHABLE|MF_FIRE|MF_PAIN, 1, S_CYBRAKDEMONELECTRICBARRIER_DIE3), // S_CYBRAKDEMONELECTRICBARRIER_DIE2
+	STATE(SPR_NULL, 0, 20*TICRATE, {A_Scream}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS), // S_CYBRAKDEMONELECTRICBARRIER_DIE3
+	STATE(SPR_NULL, 0, 0, {A_CheckRandom}, 10, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK,
+	STATE(SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS,
+	STATE(SPR_NULL, 0, 0, {A_RandomStateRange}, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE,
+	STATE(SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1,
+	STATE(SPR_ELEC, 1 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM2,
+	STATE(SPR_ELEC, 2 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM3,
+	STATE(SPR_ELEC, 3 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM4,
+	STATE(SPR_ELEC, 4 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM5,
+	STATE(SPR_ELEC, 5 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM6,
+	STATE(SPR_ELEC, 6 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM7,
+	STATE(SPR_ELEC, 7 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM8,
+	STATE(SPR_ELEC, 8 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM9,
+	STATE(SPR_ELEC, 9 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM10,
+	STATE(SPR_ELEC, 10 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM11,
+	STATE(SPR_ELEC, 11 + FF_FULLBRIGHT, 1, {A_PlaySound}, sfx_s3k5c, 1, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12,
+	STATE(SPR_NULL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL,
+	STATE(SPR_NULL, 0, 0, {A_Repeat}, 5*TICRATE, S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK, S_CYBRAKDEMONELECTRICBARRIER_REVIVE1), // S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP,
+	STATE(SPR_NULL, 0, 0, {A_CapeChase}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE2), // S_CYBRAKDEMONELECTRICBARRIER_REVIVE1
+	STATE(SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_REVIVE3), // S_CYBRAKDEMONELECTRICBARRIER_REVIVE2
+	STATE(SPR_NULL, 0, TICRATE, {A_PlaySound}, sfx_s3k79, 0, S_NULL), // S_CYBRAKDEMONELECTRICBARRIER_REVIVE3
+
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT  , 1, {A_VileFire}, sfx_s3k9d, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE2), // S_CYBRAKDEMONTARGETRETICULE1
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE3), // S_CYBRAKDEMONTARGETRETICULE2
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|1, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE4), // S_CYBRAKDEMONTARGETRETICULE3
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE5), // S_CYBRAKDEMONTARGETRETICULE4
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|2, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE6), // S_CYBRAKDEMONTARGETRETICULE5
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE7), // S_CYBRAKDEMONTARGETRETICULE6
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|3, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE8), // S_CYBRAKDEMONTARGETRETICULE7
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE9), // S_CYBRAKDEMONTARGETRETICULE8
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|4, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE10), // S_CYBRAKDEMONTARGETRETICULE9
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE11), // S_CYBRAKDEMONTARGETRETICULE10
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|5, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE12), // S_CYBRAKDEMONTARGETRETICULE11
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE13), // S_CYBRAKDEMONTARGETRETICULE12
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT  , 1, {A_VileFire}, 0, MT_CYBRAKDEMON_TARGET_DOT, S_CYBRAKDEMONTARGETRETICULE14), // S_CYBRAKDEMONTARGETRETICULE13
+	STATE(SPR_TARG, FF_TRANS50|FF_FULLBRIGHT|6, 1, {A_Repeat}, 6, S_CYBRAKDEMONTARGETRETICULE2, S_NULL), // S_CYBRAKDEMONTARGETRETICULE14
+
+	STATE(SPR_HOOP, FF_TRANS50|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL), // S_CYBRAKDEMONTARGETDOT
+
+	STATE(SPR_NPLM, 0, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2), //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1,
+	STATE(SPR_NPLM, 1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3), //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2,
+	STATE(SPR_NPLM, 2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4), //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3,
+	STATE(SPR_NPLM, 3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1), //S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4,
+	STATE(SPR_NPLM, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2), //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE1, // Explode
+	STATE(SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (6<<16), 256 + (48<<16), S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3), //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2, // Outer ring
+	STATE(SPR_NPLM, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_BOMB_SMALL + (1<<16), 32<<16, S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4), //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3, // Center
+	STATE(SPR_NULL, 0, 81, {A_Scream}, 0, 0, S_NULL), //S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4, // Sound
+
+	STATE(SPR_MNPL, 0, 1, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL), //S_CYBRAKDEMONNAPALMBOMBSMALL,
+	STATE(SPR_MNPL, 0, 1, {A_Explode}, 0, 0, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2), //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE1, // Explode
+	STATE(SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (12<<16), 128 + (40<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3), //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2, // Outer ring
+	STATE(SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (8<<16), 64 + (32<<16), S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4), //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3, // Inner ring
+	STATE(SPR_MNPL, 0, 1, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (1<<16), 24<<16, S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5), //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4, // Center
+	STATE(SPR_NULL, 0, 24, {A_Scream}, 0, 0, S_NULL), //S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5, // Sound
+
+	STATE(SPR_SFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY2), //S_CYBRAKDEMONNAPALMFLAME_FLY1,
+	STATE(SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY3), //S_CYBRAKDEMONNAPALMFLAME_FLY2,
+	STATE(SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY4), //S_CYBRAKDEMONNAPALMFLAME_FLY3,
+	STATE(SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY5), //S_CYBRAKDEMONNAPALMFLAME_FLY4,
+	STATE(SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY6), //S_CYBRAKDEMONNAPALMFLAME_FLY5,
+	STATE(SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_CYBRAKDEMONNAPALMFLAME_FLY1), //S_CYBRAKDEMONNAPALMFLAME_FLY6,
+	STATE(SPR_SFLM, FF_FULLBRIGHT,   0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL), //S_CYBRAKDEMONNAPALMFLAME_DIE,
+
+	STATE(SPR_NULL, 0, 1, {A_SetFuse}, TICRATE, 0, S_CYBRAKDEMONVILEEXPLOSION2), //S_CYBRAKDEMONVILEEXPLOSION1,
+	STATE(SPR_NULL, 0, 0, {A_ScoreRise}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION3), //S_CYBRAKDEMONVILEEXPLOSION2,
+	STATE(SPR_NULL, 0, 1, {A_BossScream}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION1), //S_CYBRAKDEMONVILEEXPLOSION3,
 
 	// Metal Sonic
-	{SPR_PLAY, SPR2_STND, -1, {NULL}, 0, 0, S_METALSONIC_RACE}, // S_METALSONIC_RACE
-
-	{SPR_METL,  4, -1, {NULL},         0, 0, S_METALSONIC_FLOAT},             // S_METALSONIC_FLOAT
-	{SPR_METL, 16|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_METALSONIC_STUN}, // S_METALSONIC_VECTOR
-	{SPR_METL, 15, -1, {NULL},         0, 0, S_METALSONIC_FLOAT}, // S_METALSONIC_STUN
-	{SPR_METL, 17, 20, {NULL},         0, 0, S_METALSONIC_GATHER},// S_METALSONIC_RAISE
-	{SPR_METL, 18, -1, {NULL},         0, 0, S_METALSONIC_FLOAT},             // S_METALSONIC_GATHER
-	{SPR_METL,  6|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_BOUNCE},// S_METALSONIC_DASH
-	{SPR_METL, 18|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_FLOAT},             // S_METALSONIC_BOUNCE
-	{SPR_METL, 14, -1, {NULL},         0, 0, S_METALSONIC_FLOAT},             // S_METALSONIC_BADBOUNCE
-	{SPR_METL, 17, -1, {NULL},         0, 0, S_METALSONIC_GATHER},// S_METALSONIC_SHOOT
-	{SPR_METL, 15, 40, {A_Pain},       0, 0, S_METALSONIC_FLOAT}, // S_METALSONIC_PAIN
-	{SPR_METL, 17,  2, {A_Fall},       0, 0, S_METALSONIC_DEATH2},// S_METALSONIC_DEATH1
-	{SPR_METL, 17,  4, {A_BossScream}, 0, 0, S_METALSONIC_DEATH3},// S_METALSONIC_DEATH2
-	{SPR_METL, 17,  0, {A_Repeat}, 17, S_METALSONIC_DEATH2, S_METALSONIC_DEATH4}, // S_METALSONIC_DEATH3
-	{SPR_METL, 17, -1, {A_BossDeath},  0, 0, S_NULL},             // S_METALSONIC_DEATH4
-	{SPR_METL, 15,  1, {A_BossScream},         0, 0, S_METALSONIC_FLEE2}, // S_METALSONIC_FLEE1
-	{SPR_METL, 15,  7, {NULL},                 0, 0, S_METALSONIC_FLEE1}, // S_METALSONIC_FLEE2
-
-	{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30|FF_ANIMATE, -1, {NULL}, 11, 1, S_NULL},  // S_MSSHIELD_F1
-	{SPR_MSCF, FF_FULLBRIGHT|FF_ANIMATE|12, -1, {NULL}, 8, 2, S_NULL},  // S_MSSHIELD_F2
+	STATE(SPR_PLAY, SPR2_STND, -1, {NULL}, 0, 0, S_METALSONIC_RACE), // S_METALSONIC_RACE
+
+	STATE(SPR_METL,  4, -1, {NULL},         0, 0, S_METALSONIC_FLOAT),             // S_METALSONIC_FLOAT
+	STATE(SPR_METL, 16|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_METALSONIC_STUN), // S_METALSONIC_VECTOR
+	STATE(SPR_METL, 15, -1, {NULL},         0, 0, S_METALSONIC_FLOAT), // S_METALSONIC_STUN
+	STATE(SPR_METL, 17, 20, {NULL},         0, 0, S_METALSONIC_GATHER),// S_METALSONIC_RAISE
+	STATE(SPR_METL, 18, -1, {NULL},         0, 0, S_METALSONIC_FLOAT),             // S_METALSONIC_GATHER
+	STATE(SPR_METL,  6|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_BOUNCE),// S_METALSONIC_DASH
+	STATE(SPR_METL, 18|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 1, 2, S_METALSONIC_FLOAT),             // S_METALSONIC_BOUNCE
+	STATE(SPR_METL, 14, -1, {NULL},         0, 0, S_METALSONIC_FLOAT),             // S_METALSONIC_BADBOUNCE
+	STATE(SPR_METL, 17, -1, {NULL},         0, 0, S_METALSONIC_GATHER),// S_METALSONIC_SHOOT
+	STATE(SPR_METL, 15, 40, {A_Pain},       0, 0, S_METALSONIC_FLOAT), // S_METALSONIC_PAIN
+	STATE(SPR_METL, 17,  2, {A_Fall},       0, 0, S_METALSONIC_DEATH2),// S_METALSONIC_DEATH1
+	STATE(SPR_METL, 17,  4, {A_BossScream}, 0, 0, S_METALSONIC_DEATH3),// S_METALSONIC_DEATH2
+	STATE(SPR_METL, 17,  0, {A_Repeat}, 17, S_METALSONIC_DEATH2, S_METALSONIC_DEATH4), // S_METALSONIC_DEATH3
+	STATE(SPR_METL, 17, -1, {A_BossDeath},  0, 0, S_NULL),             // S_METALSONIC_DEATH4
+	STATE(SPR_METL, 15,  1, {A_BossScream},         0, 0, S_METALSONIC_FLEE2), // S_METALSONIC_FLEE1
+	STATE(SPR_METL, 15,  7, {NULL},                 0, 0, S_METALSONIC_FLEE1), // S_METALSONIC_FLEE2
+
+	STATE(SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30|FF_ANIMATE, -1, {NULL}, 11, 1, S_NULL),  // S_MSSHIELD_F1
+	STATE(SPR_MSCF, FF_FULLBRIGHT|FF_ANIMATE|12, -1, {NULL}, 8, 2, S_NULL),  // S_MSSHIELD_F2
 
 	// Ring
-	{SPR_RING, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_RING}, // S_RING
+	STATE(SPR_RING, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_RING), // S_RING
 
 	// Blue Sphere for special stages
-	{SPR_SPHR, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_BLUESPHERE
-	{SPR_SPHR, FF_FULLBRIGHT
+	STATE(SPR_SPHR, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_BLUESPHERE
+	STATE(SPR_SPHR, FF_FULLBRIGHT
 #ifdef MANIASPHERES
 							|FF_ANIMATE|FF_RANDOMANIM
 #endif
-													, -1, {NULL}, 1, 4, S_NULL}, // S_BLUESPHEREBONUS
-	{SPR_SPHR, 0, 20, {NULL}, 0, 0, S_NULL}, // S_BLUESPHERESPARK
+													, -1, {NULL}, 1, 4, S_NULL), // S_BLUESPHEREBONUS
+	STATE(SPR_SPHR, 0, 20, {NULL}, 0, 0, S_NULL), // S_BLUESPHERESPARK
 
 	// Bomb Sphere
-	{SPR_SPHR, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_BOMBSPHERE2}, // S_BOMBSPHERE1
-	{SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE3}, // S_BOMBSPHERE2
-	{SPR_SPHR, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_BOMBSPHERE4}, // S_BOMBSPHERE3
-	{SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE1}, // S_BOMBSPHERE4
+	STATE(SPR_SPHR, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_BOMBSPHERE2), // S_BOMBSPHERE1
+	STATE(SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE3), // S_BOMBSPHERE2
+	STATE(SPR_SPHR, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_BOMBSPHERE4), // S_BOMBSPHERE3
+	STATE(SPR_SPHR, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_BOMBSPHERE1), // S_BOMBSPHERE4
 
 	// NiGHTS Chip
-	{SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE,    -1, {NULL}, 15, 2, S_NULL}, // S_NIGHTSCHIP
-	{SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE|16, -1, {NULL}, 15, 2, S_NULL}, // S_NIGHTSCHIPBONUS
+	STATE(SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE,    -1, {NULL}, 15, 2, S_NULL), // S_NIGHTSCHIP
+	STATE(SPR_NCHP, FF_FULLBRIGHT|FF_ANIMATE|16, -1, {NULL}, 15, 2, S_NULL), // S_NIGHTSCHIPBONUS
 
 	// NiGHTS Star
-	{SPR_NSTR, FF_ANIMATE, -1, {NULL}, 14, 2, S_NULL}, // S_NIGHTSSTAR
-	{SPR_NSTR, 15, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSSTARXMAS
+	STATE(SPR_NSTR, FF_ANIMATE, -1, {NULL}, 14, 2, S_NULL), // S_NIGHTSSTAR
+	STATE(SPR_NSTR, 15, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSSTARXMAS
 
 	// Gravity Well sprites for Egg Rock's Special Stage
-	{SPR_GWLG, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL}, // S_GRAVWELLGREEN
-	{SPR_GWLR, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL}, // S_GRAVWELLRED
+	STATE(SPR_GWLG, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL), // S_GRAVWELLGREEN
+	STATE(SPR_GWLR, FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL), // S_GRAVWELLRED
 
 	// Individual Team Rings (now with shield attracting action! =P)
-	{SPR_TRNG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_TEAMRING},  // S_TEAMRING
+	STATE(SPR_TRNG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_TEAMRING),  // S_TEAMRING
 
 	// Special Stage Token
-	{SPR_TOKE, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 19, 1, S_TOKEN}, // S_TOKEN
+	STATE(SPR_TOKE, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 19, 1, S_TOKEN), // S_TOKEN
 
 	// CTF Flags
-	{SPR_RFLG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_REDFLAG
-	{SPR_BFLG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BLUEFLAG
+	STATE(SPR_RFLG, 0, -1, {NULL}, 0, 0, S_NULL), // S_REDFLAG
+	STATE(SPR_BFLG, 0, -1, {NULL}, 0, 0, S_NULL), // S_BLUEFLAG
 
 	// Emblem
-	{SPR_EMBM,  0, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM1
-	{SPR_EMBM,  1, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM2
-	{SPR_EMBM,  2, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM3
-	{SPR_EMBM,  3, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM4
-	{SPR_EMBM,  4, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM5
-	{SPR_EMBM,  5, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM6
-	{SPR_EMBM,  6, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM7
-	{SPR_EMBM,  7, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM8
-	{SPR_EMBM,  8, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM9
-	{SPR_EMBM,  9, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM10
-	{SPR_EMBM, 10, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM11
-	{SPR_EMBM, 11, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM12
-	{SPR_EMBM, 12, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM13
-	{SPR_EMBM, 13, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM14
-	{SPR_EMBM, 14, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM15
-	{SPR_EMBM, 15, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM16
-	{SPR_EMBM, 16, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM17
-	{SPR_EMBM, 17, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM18
-	{SPR_EMBM, 18, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM19
-	{SPR_EMBM, 19, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM20
-	{SPR_EMBM, 20, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM21
-	{SPR_EMBM, 21, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM22
-	{SPR_EMBM, 22, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM23
-	{SPR_EMBM, 23, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM24
-	{SPR_EMBM, 24, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM25
-	{SPR_EMBM, 25, -1, {NULL}, 0, 0, S_NULL}, // S_EMBLEM26
+	STATE(SPR_EMBM,  0, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM1
+	STATE(SPR_EMBM,  1, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM2
+	STATE(SPR_EMBM,  2, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM3
+	STATE(SPR_EMBM,  3, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM4
+	STATE(SPR_EMBM,  4, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM5
+	STATE(SPR_EMBM,  5, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM6
+	STATE(SPR_EMBM,  6, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM7
+	STATE(SPR_EMBM,  7, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM8
+	STATE(SPR_EMBM,  8, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM9
+	STATE(SPR_EMBM,  9, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM10
+	STATE(SPR_EMBM, 10, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM11
+	STATE(SPR_EMBM, 11, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM12
+	STATE(SPR_EMBM, 12, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM13
+	STATE(SPR_EMBM, 13, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM14
+	STATE(SPR_EMBM, 14, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM15
+	STATE(SPR_EMBM, 15, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM16
+	STATE(SPR_EMBM, 16, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM17
+	STATE(SPR_EMBM, 17, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM18
+	STATE(SPR_EMBM, 18, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM19
+	STATE(SPR_EMBM, 19, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM20
+	STATE(SPR_EMBM, 20, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM21
+	STATE(SPR_EMBM, 21, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM22
+	STATE(SPR_EMBM, 22, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM23
+	STATE(SPR_EMBM, 23, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM24
+	STATE(SPR_EMBM, 24, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM25
+	STATE(SPR_EMBM, 25, -1, {NULL}, 0, 0, S_NULL), // S_EMBLEM26
 
 	// Chaos Emeralds
-	{SPR_CEMG, FF_FULLBRIGHT,   -1, {NULL}, 0, 0, S_NULL}, // S_CEMG1
-	{SPR_CEMG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG2
-	{SPR_CEMG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG3
-	{SPR_CEMG, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG4
-	{SPR_CEMG, FF_FULLBRIGHT|4, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG5
-	{SPR_CEMG, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG6
-	{SPR_CEMG, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL}, // S_CEMG7
+	STATE(SPR_CEMG, FF_FULLBRIGHT,   -1, {NULL}, 0, 0, S_NULL), // S_CEMG1
+	STATE(SPR_CEMG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL), // S_CEMG2
+	STATE(SPR_CEMG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL), // S_CEMG3
+	STATE(SPR_CEMG, FF_FULLBRIGHT|3, -1, {NULL}, 0, 0, S_NULL), // S_CEMG4
+	STATE(SPR_CEMG, FF_FULLBRIGHT|4, -1, {NULL}, 0, 0, S_NULL), // S_CEMG5
+	STATE(SPR_CEMG, FF_FULLBRIGHT|5, -1, {NULL}, 0, 0, S_NULL), // S_CEMG6
+	STATE(SPR_CEMG, FF_FULLBRIGHT|6, -1, {NULL}, 0, 0, S_NULL), // S_CEMG7
 
 	// Emerald hunt shards
-	{SPR_SHRD, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHRD1
-	{SPR_SHRD, 1, -1, {NULL}, 0, 0, S_NULL}, // S_SHRD2
-	{SPR_SHRD, 2, -1, {NULL}, 0, 0, S_NULL}, // S_SHRD3
+	STATE(SPR_SHRD, 0, -1, {NULL}, 0, 0, S_NULL), // S_SHRD1
+	STATE(SPR_SHRD, 1, -1, {NULL}, 0, 0, S_NULL), // S_SHRD2
+	STATE(SPR_SHRD, 2, -1, {NULL}, 0, 0, S_NULL), // S_SHRD3
 
 	// Bubble Source
-	{SPR_BBLS, 0, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES2}, // S_BUBBLES1
-	{SPR_BBLS, 1, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES3}, // S_BUBBLES2
-	{SPR_BBLS, 2, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES4}, // S_BUBBLES3
-	{SPR_BBLS, 3, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES1}, // S_BUBBLES4
+	STATE(SPR_BBLS, 0, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES2), // S_BUBBLES1
+	STATE(SPR_BBLS, 1, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES3), // S_BUBBLES2
+	STATE(SPR_BBLS, 2, 8, {A_BubbleSpawn}, 2048, 0, S_BUBBLES4), // S_BUBBLES3
+	STATE(SPR_BBLS, 3, 8, {A_BubbleCheck}, 0, 0, S_BUBBLES1), // S_BUBBLES4
 
 	// Level End Sign
-	{SPR_SIGN,                 0, -1, {A_SignPlayer}, -3, 0, S_NULL},                // S_SIGN
-	{SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSPIN2},           // S_SIGNSPIN1
-	{SPR_SIGN,                 0,  0,     {A_Repeat},  4, S_SIGNSPIN1, S_SIGNSPIN3}, // S_SIGNSPIN2
-	{SPR_SIGN,                 0,  0, {A_SignPlayer}, -2, 0, S_SIGNSPIN4},           // S_SIGNSPIN3
-	{SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSPIN5},           // S_SIGNSPIN4
-	{SPR_SIGN,                 0,  0,     {A_Repeat},  4, S_SIGNSPIN4, S_SIGNSPIN6}, // S_SIGNSPIN5
-	{SPR_SIGN,                 0,  0, {A_SignPlayer}, -3, 0, S_SIGNSPIN1},           // S_SIGNSPIN6
-	{SPR_SIGN,                 0,  1, {A_SignPlayer}, -1, 0, S_SIGNSLOW},            // S_SIGNPLAYER
-	{SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSLOW},            // S_SIGNSLOW
-	{SPR_SIGN,                 0, -1,         {NULL},  0, 0, S_NULL},                // S_SIGNSTOP
-	{SPR_SIGN, FF_PAPERSPRITE| 2, -1,         {NULL},  0, 0, S_NULL},                // S_SIGNBOARD
-	{SPR_SIGN, FF_PAPERSPRITE| 1, -1,         {NULL},  0, 29, S_NULL},               // S_EGGMANSIGN
-	{SPR_SIGN, FF_PAPERSPRITE|18, -1,         {NULL},  0, 29, S_NULL},               // S_CLEARSIGN
+	STATE(SPR_SIGN,                 0, -1, {A_SignPlayer}, -3, 0, S_NULL),                // S_SIGN
+	STATE(SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSPIN2),           // S_SIGNSPIN1
+	STATE(SPR_SIGN,                 0,  0,     {A_Repeat},  4, S_SIGNSPIN1, S_SIGNSPIN3), // S_SIGNSPIN2
+	STATE(SPR_SIGN,                 0,  0, {A_SignPlayer}, -2, 0, S_SIGNSPIN4),           // S_SIGNSPIN3
+	STATE(SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSPIN5),           // S_SIGNSPIN4
+	STATE(SPR_SIGN,                 0,  0,     {A_Repeat},  4, S_SIGNSPIN4, S_SIGNSPIN6), // S_SIGNSPIN5
+	STATE(SPR_SIGN,                 0,  0, {A_SignPlayer}, -3, 0, S_SIGNSPIN1),           // S_SIGNSPIN6
+	STATE(SPR_SIGN,                 0,  1, {A_SignPlayer}, -1, 0, S_SIGNSLOW),            // S_SIGNPLAYER
+	STATE(SPR_SIGN,                 0,  1,   {A_SignSpin}, 30, 0, S_SIGNSLOW),            // S_SIGNSLOW
+	STATE(SPR_SIGN,                 0, -1,         {NULL},  0, 0, S_NULL),                // S_SIGNSTOP
+	STATE(SPR_SIGN, FF_PAPERSPRITE| 2, -1,         {NULL},  0, 0, S_NULL),                // S_SIGNBOARD
+	STATE(SPR_SIGN, FF_PAPERSPRITE| 1, -1,         {NULL},  0, 29, S_NULL),               // S_EGGMANSIGN
+	STATE(SPR_SIGN, FF_PAPERSPRITE|18, -1,         {NULL},  0, 29, S_NULL),               // S_CLEARSIGN
 
 	// Spike Ball
-	{SPR_SPIK, 0, 1, {NULL}, 0, 0, S_SPIKEBALL2}, // S_SPIKEBALL1
-	{SPR_SPIK, 1, 1, {NULL}, 0, 0, S_SPIKEBALL3}, // S_SPIKEBALL2
-	{SPR_SPIK, 2, 1, {NULL}, 0, 0, S_SPIKEBALL4}, // S_SPIKEBALL3
-	{SPR_SPIK, 3, 1, {NULL}, 0, 0, S_SPIKEBALL5}, // S_SPIKEBALL4
-	{SPR_SPIK, 4, 1, {NULL}, 0, 0, S_SPIKEBALL6}, // S_SPIKEBALL5
-	{SPR_SPIK, 5, 1, {NULL}, 0, 0, S_SPIKEBALL7}, // S_SPIKEBALL6
-	{SPR_SPIK, 6, 1, {NULL}, 0, 0, S_SPIKEBALL8}, // S_SPIKEBALL7
-	{SPR_SPIK, 7, 1, {NULL}, 0, 0, S_SPIKEBALL1}, // S_SPIKEBALL8
+	STATE(SPR_SPIK, 0, 1, {NULL}, 0, 0, S_SPIKEBALL2), // S_SPIKEBALL1
+	STATE(SPR_SPIK, 1, 1, {NULL}, 0, 0, S_SPIKEBALL3), // S_SPIKEBALL2
+	STATE(SPR_SPIK, 2, 1, {NULL}, 0, 0, S_SPIKEBALL4), // S_SPIKEBALL3
+	STATE(SPR_SPIK, 3, 1, {NULL}, 0, 0, S_SPIKEBALL5), // S_SPIKEBALL4
+	STATE(SPR_SPIK, 4, 1, {NULL}, 0, 0, S_SPIKEBALL6), // S_SPIKEBALL5
+	STATE(SPR_SPIK, 5, 1, {NULL}, 0, 0, S_SPIKEBALL7), // S_SPIKEBALL6
+	STATE(SPR_SPIK, 6, 1, {NULL}, 0, 0, S_SPIKEBALL8), // S_SPIKEBALL7
+	STATE(SPR_SPIK, 7, 1, {NULL}, 0, 0, S_SPIKEBALL1), // S_SPIKEBALL8
 
 	// Elemental Shield's Spawn
-	{SPR_SFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_SPINFIRE2}, // S_SPINFIRE1
-	{SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_SPINFIRE3}, // S_SPINFIRE2
-	{SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SPINFIRE4}, // S_SPINFIRE3
-	{SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SPINFIRE5}, // S_SPINFIRE4
-	{SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_SPINFIRE6}, // S_SPINFIRE5
-	{SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_SPINFIRE1}, // S_SPINFIRE6
-
-	{SPR_TFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_TEAM_SPINFIRE2}, // S_TEAM_SPINFIRE1
-	{SPR_TFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE3}, // S_TEAM_SPINFIRE2
-	{SPR_TFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE4}, // S_TEAM_SPINFIRE3
-	{SPR_TFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE5}, // S_TEAM_SPINFIRE4
-	{SPR_TFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE6}, // S_TEAM_SPINFIRE5
-	{SPR_TFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE1}, // S_TEAM_SPINFIRE6
+	STATE(SPR_SFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_SPINFIRE2), // S_SPINFIRE1
+	STATE(SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_SPINFIRE3), // S_SPINFIRE2
+	STATE(SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SPINFIRE4), // S_SPINFIRE3
+	STATE(SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_SPINFIRE5), // S_SPINFIRE4
+	STATE(SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_SPINFIRE6), // S_SPINFIRE5
+	STATE(SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_SPINFIRE1), // S_SPINFIRE6
+
+	STATE(SPR_TFLM, FF_FULLBRIGHT,   2, {NULL}, 0, 0, S_TEAM_SPINFIRE2), // S_TEAM_SPINFIRE1
+	STATE(SPR_TFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE3), // S_TEAM_SPINFIRE2
+	STATE(SPR_TFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE4), // S_TEAM_SPINFIRE3
+	STATE(SPR_TFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE5), // S_TEAM_SPINFIRE4
+	STATE(SPR_TFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE6), // S_TEAM_SPINFIRE5
+	STATE(SPR_TFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_TEAM_SPINFIRE1), // S_TEAM_SPINFIRE6
 
 	// Floor Spike
-	{SPR_USPK, 0,-1, {A_SpikeRetract}, 1, 0, S_SPIKE2}, // S_SPIKE1 -- Fully extended
-	{SPR_USPK, 1, 2, {A_Pain},         0, 0, S_SPIKE3}, // S_SPIKE2
-	{SPR_USPK, 2, 2, {NULL},           0, 0, S_SPIKE4}, // S_SPIKE3
-	{SPR_USPK, 3,-1, {A_SpikeRetract}, 0, 0, S_SPIKE5}, // S_SPIKE4 -- Fully retracted
-	{SPR_USPK, 2, 2, {A_Pain},         0, 0, S_SPIKE6}, // S_SPIKE5
-	{SPR_USPK, 1, 2, {NULL},           0, 0, S_SPIKE1}, // S_SPIKE6
-	{SPR_USPK, 4,-1, {NULL}, 0, 0, S_NULL}, // S_SPIKED1 -- Busted spike particles
-	{SPR_USPK, 5,-1, {NULL}, 0, 0, S_NULL}, // S_SPIKED2
+	STATE(SPR_USPK, 0,-1, {A_SpikeRetract}, 1, 0, S_SPIKE2), // S_SPIKE1 -- Fully extended
+	STATE(SPR_USPK, 1, 2, {A_Pain},         0, 0, S_SPIKE3), // S_SPIKE2
+	STATE(SPR_USPK, 2, 2, {NULL},           0, 0, S_SPIKE4), // S_SPIKE3
+	STATE(SPR_USPK, 3,-1, {A_SpikeRetract}, 0, 0, S_SPIKE5), // S_SPIKE4 -- Fully retracted
+	STATE(SPR_USPK, 2, 2, {A_Pain},         0, 0, S_SPIKE6), // S_SPIKE5
+	STATE(SPR_USPK, 1, 2, {NULL},           0, 0, S_SPIKE1), // S_SPIKE6
+	STATE(SPR_USPK, 4,-1, {NULL}, 0, 0, S_NULL), // S_SPIKED1 -- Busted spike particles
+	STATE(SPR_USPK, 5,-1, {NULL}, 0, 0, S_NULL), // S_SPIKED2
 
 	// Wall Spike
-	{SPR_WSPK, 0|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 1, 0, S_WALLSPIKE2}, // S_WALLSPIKE1 -- Fully extended
-	{SPR_WSPK, 1|FF_PAPERSPRITE, 2, {A_Pain},         0, 0, S_WALLSPIKE3}, // S_WALLSPIKE2
-	{SPR_WSPK, 2|FF_PAPERSPRITE, 2, {NULL},           0, 0, S_WALLSPIKE4}, // S_WALLSPIKE3
-	{SPR_WSPK, 3|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 0, 0, S_WALLSPIKE5}, // S_WALLSPIKE4 -- Fully retracted
-	{SPR_WSPK, 2|FF_PAPERSPRITE, 2, {A_Pain},         0, 0, S_WALLSPIKE6}, // S_WALLSPIKE5
-	{SPR_WSPK, 1|FF_PAPERSPRITE, 2, {NULL},           0, 0, S_WALLSPIKE1}, // S_WALLSPIKE6
-	{SPR_WSPB, 0|FF_PAPERSPRITE,-1, {NULL}, 0, 0, S_NULL}, // S_WALLSPIKEBASE -- Base
-	{SPR_WSPK, 4,-1, {NULL}, 0, 0, S_NULL}, // S_WALLSPIKED1 -- Busted spike particles
-	{SPR_WSPK, 5,-1, {NULL}, 0, 0, S_NULL}, // S_WALLSPIKED2
+	STATE(SPR_WSPK, 0|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 1, 0, S_WALLSPIKE2), // S_WALLSPIKE1 -- Fully extended
+	STATE(SPR_WSPK, 1|FF_PAPERSPRITE, 2, {A_Pain},         0, 0, S_WALLSPIKE3), // S_WALLSPIKE2
+	STATE(SPR_WSPK, 2|FF_PAPERSPRITE, 2, {NULL},           0, 0, S_WALLSPIKE4), // S_WALLSPIKE3
+	STATE(SPR_WSPK, 3|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 0, 0, S_WALLSPIKE5), // S_WALLSPIKE4 -- Fully retracted
+	STATE(SPR_WSPK, 2|FF_PAPERSPRITE, 2, {A_Pain},         0, 0, S_WALLSPIKE6), // S_WALLSPIKE5
+	STATE(SPR_WSPK, 1|FF_PAPERSPRITE, 2, {NULL},           0, 0, S_WALLSPIKE1), // S_WALLSPIKE6
+	STATE(SPR_WSPB, 0|FF_PAPERSPRITE,-1, {NULL}, 0, 0, S_NULL), // S_WALLSPIKEBASE -- Base
+	STATE(SPR_WSPK, 4,-1, {NULL}, 0, 0, S_NULL), // S_WALLSPIKED1 -- Busted spike particles
+	STATE(SPR_WSPK, 5,-1, {NULL}, 0, 0, S_NULL), // S_WALLSPIKED2
 
 	// Starpost
-	{SPR_STPT, 0            , -1, {NULL},  0, 0, S_NULL},           // S_STARPOST_IDLE
-	{SPR_STPT, FF_ANIMATE|17, -1, {NULL},  5, 1, S_NULL},           // S_STARPOST_FLASH
-	{SPR_STPT, FF_ANIMATE|13,  2, {NULL},  1, 1, S_STARPOST_SPIN},  // S_STARPOST_STARTSPIN
-	{SPR_STPT, FF_ANIMATE|1 , 23, {NULL}, 11, 1, S_STARPOST_ENDSPIN}, // S_STARPOST_SPIN
-	{SPR_STPT, FF_ANIMATE|15,  2, {NULL},  1, 1, S_STARPOST_FLASH}, // S_STARPOST_ENDSPIN
+	STATE(SPR_STPT, 0            , -1, {NULL},  0, 0, S_NULL),           // S_STARPOST_IDLE
+	STATE(SPR_STPT, FF_ANIMATE|17, -1, {NULL},  5, 1, S_NULL),           // S_STARPOST_FLASH
+	STATE(SPR_STPT, FF_ANIMATE|13,  2, {NULL},  1, 1, S_STARPOST_SPIN),  // S_STARPOST_STARTSPIN
+	STATE(SPR_STPT, FF_ANIMATE|1 , 23, {NULL}, 11, 1, S_STARPOST_ENDSPIN), // S_STARPOST_SPIN
+	STATE(SPR_STPT, FF_ANIMATE|15,  2, {NULL},  1, 1, S_STARPOST_FLASH), // S_STARPOST_ENDSPIN
 
 	// Big floating mine
-	{SPR_BMNE, 0,  2, {A_Look},      ((224<<FRACBITS)|1), 0, S_BIGMINE_IDLE},   // S_BIGMINE_IDLE
-	{SPR_BMNE, 1,  2, {A_MineRange}, 112,                 0, S_BIGMINE_ALERT2}, // S_BIGMINE_ALERT1
-	{SPR_BMNE, 2,  2, {A_MineRange}, 112,                 0, S_BIGMINE_ALERT3}, // S_BIGMINE_ALERT2
-	{SPR_BMNE, 0,  1, {A_Look},      ((224<<FRACBITS)|1), 1, S_BIGMINE_IDLE},   // S_BIGMINE_ALERT3
-	{SPR_BMNE, 3, 25, {A_Pain},           0,            0, S_BIGMINE_SET2},   // S_BIGMINE_SET1
-	{SPR_BMNE, 3, 10, {A_SetObjectFlags}, MF_SHOOTABLE, 1, S_BIGMINE_SET3},   // S_BIGMINE_SET1
-	{SPR_BMNE, 3,  1, {A_MineExplode},    0,            0, S_BIGMINE_BLAST1}, // S_BIGMINE_SET3
-	{SPR_BMNB,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST2}, // S_BIGMINE_BLAST1
-	{SPR_BMNB, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST3}, // S_BIGMINE_BLAST2
-	{SPR_BMNB, 2|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST4}, // S_BIGMINE_BLAST3
-	{SPR_BMNB, 3|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST5}, // S_BIGMINE_BLAST4
-	{SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BIGMINE_BLAST5
+	STATE(SPR_BMNE, 0,  2, {A_Look},      ((224<<FRACBITS)|1), 0, S_BIGMINE_IDLE),   // S_BIGMINE_IDLE
+	STATE(SPR_BMNE, 1,  2, {A_MineRange}, 112,                 0, S_BIGMINE_ALERT2), // S_BIGMINE_ALERT1
+	STATE(SPR_BMNE, 2,  2, {A_MineRange}, 112,                 0, S_BIGMINE_ALERT3), // S_BIGMINE_ALERT2
+	STATE(SPR_BMNE, 0,  1, {A_Look},      ((224<<FRACBITS)|1), 1, S_BIGMINE_IDLE),   // S_BIGMINE_ALERT3
+	STATE(SPR_BMNE, 3, 25, {A_Pain},           0,            0, S_BIGMINE_SET2),   // S_BIGMINE_SET1
+	STATE(SPR_BMNE, 3, 10, {A_SetObjectFlags}, MF_SHOOTABLE, 1, S_BIGMINE_SET3),   // S_BIGMINE_SET1
+	STATE(SPR_BMNE, 3,  1, {A_MineExplode},    0,            0, S_BIGMINE_BLAST1), // S_BIGMINE_SET3
+	STATE(SPR_BMNB,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST2), // S_BIGMINE_BLAST1
+	STATE(SPR_BMNB, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BIGMINE_BLAST3), // S_BIGMINE_BLAST2
+	STATE(SPR_BMNB, 2|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST4), // S_BIGMINE_BLAST3
+	STATE(SPR_BMNB, 3|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BIGMINE_BLAST5), // S_BIGMINE_BLAST4
+	STATE(SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL), // S_BIGMINE_BLAST5
 
 	// Cannon launcher
-	{SPR_NULL, 0, 1,    {A_FindTarget},     MT_PLAYER,         0, S_CANNONLAUNCHER2}, // S_CANNONLAUNCHER1
-	{SPR_NULL, 0, 1,       {A_LobShot}, MT_CANNONBALL, 4*TICRATE, S_CANNONLAUNCHER3}, // S_CANNONLAUNCHER2
-	{SPR_NULL, 0, 2, {A_SetRandomTics},     TICRATE/2, 3*TICRATE, S_CANNONLAUNCHER1}, // S_CANNONLAUNCHER3
+	STATE(SPR_NULL, 0, 1,    {A_FindTarget},     MT_PLAYER,         0, S_CANNONLAUNCHER2), // S_CANNONLAUNCHER1
+	STATE(SPR_NULL, 0, 1,       {A_LobShot}, MT_CANNONBALL, 4*TICRATE, S_CANNONLAUNCHER3), // S_CANNONLAUNCHER2
+	STATE(SPR_NULL, 0, 2, {A_SetRandomTics},     TICRATE/2, 3*TICRATE, S_CANNONLAUNCHER1), // S_CANNONLAUNCHER3
 
 	// Monitor Miscellany
-	{SPR_NSPK, 0, 16, {NULL}, 0, 0, S_BOXSPARKLE2}, // S_BOXSPARKLE1
-	{SPR_NSPK, 1, 12, {NULL}, 0, 0, S_BOXSPARKLE3}, // S_BOXSPARKLE2
-	{SPR_NSPK, 2,  8, {NULL}, 0, 0, S_BOXSPARKLE4}, // S_BOXSPARKLE3
-	{SPR_NSPK, 3,  4, {NULL}, 0, 0, S_NULL},        // S_BOXSPARKLE4
-
-	{SPR_MSTV, 0,  1, {NULL}, 0, 0, S_SPAWNSTATE},  // S_BOX_FLICKER
-	{SPR_MSTV, 0,  4, {A_MonitorPop}, 0, 0, S_BOX_POP2}, // S_BOX_POP1
-	{SPR_MSTV, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BOX_POP2
-
-	{SPR_XLTV, 0,  1, {NULL}, 0, 0, S_SPAWNSTATE},  // S_GOLDBOX_FLICKER
-	{SPR_XLTV, 1, 89, {A_GoldMonitorPop}, 0, 0, S_GOLDBOX_OFF2}, // S_GOLDBOX_OFF1
-	{SPR_XLTV, 2,  4, {A_PlayAttackSound}, 0, 0, S_GOLDBOX_OFF3}, // S_GOLDBOX_OFF2
-	{SPR_XLTV, 3,  4, {NULL}, 0, 0, S_GOLDBOX_OFF4}, // S_GOLDBOX_OFF3
-	{SPR_XLTV, 4,  4, {NULL}, 0, 0, S_GOLDBOX_OFF5}, // S_GOLDBOX_OFF4
-	{SPR_XLTV, 5,  2, {NULL}, 0, 0, S_GOLDBOX_OFF6}, // S_GOLDBOX_OFF5
-	{SPR_XLTV, 6,  2, {NULL}, 0, 0, S_GOLDBOX_OFF7}, // S_GOLDBOX_OFF6
-	{SPR_XLTV, 6,  0, {A_GoldMonitorRestore}, 0, 0, S_SPAWNSTATE}, // S_GOLDBOX_OFF7
+	STATE(SPR_NSPK, 0, 16, {NULL}, 0, 0, S_BOXSPARKLE2), // S_BOXSPARKLE1
+	STATE(SPR_NSPK, 1, 12, {NULL}, 0, 0, S_BOXSPARKLE3), // S_BOXSPARKLE2
+	STATE(SPR_NSPK, 2,  8, {NULL}, 0, 0, S_BOXSPARKLE4), // S_BOXSPARKLE3
+	STATE(SPR_NSPK, 3,  4, {NULL}, 0, 0, S_NULL),        // S_BOXSPARKLE4
+
+	STATE(SPR_MSTV, 0,  1, {NULL}, 0, 0, S_SPAWNSTATE),  // S_BOX_FLICKER
+	STATE(SPR_MSTV, 0,  4, {A_MonitorPop}, 0, 0, S_BOX_POP2), // S_BOX_POP1
+	STATE(SPR_MSTV, 1, -1, {NULL}, 0, 0, S_NULL), // S_BOX_POP2
+
+	STATE(SPR_XLTV, 0,  1, {NULL}, 0, 0, S_SPAWNSTATE),  // S_GOLDBOX_FLICKER
+	STATE(SPR_XLTV, 1, 89, {A_GoldMonitorPop}, 0, 0, S_GOLDBOX_OFF2), // S_GOLDBOX_OFF1
+	STATE(SPR_XLTV, 2,  4, {A_PlayAttackSound}, 0, 0, S_GOLDBOX_OFF3), // S_GOLDBOX_OFF2
+	STATE(SPR_XLTV, 3,  4, {NULL}, 0, 0, S_GOLDBOX_OFF4), // S_GOLDBOX_OFF3
+	STATE(SPR_XLTV, 4,  4, {NULL}, 0, 0, S_GOLDBOX_OFF5), // S_GOLDBOX_OFF4
+	STATE(SPR_XLTV, 5,  2, {NULL}, 0, 0, S_GOLDBOX_OFF6), // S_GOLDBOX_OFF5
+	STATE(SPR_XLTV, 6,  2, {NULL}, 0, 0, S_GOLDBOX_OFF7), // S_GOLDBOX_OFF6
+	STATE(SPR_XLTV, 6,  0, {A_GoldMonitorRestore}, 0, 0, S_SPAWNSTATE), // S_GOLDBOX_OFF7
 
 	// Monitor States (one per box)
-	{SPR_TVMY, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_MYSTERY_BOX
-	{SPR_TVRI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_RING_BOX
-	{SPR_TVPI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_PITY_BOX
-	{SPR_TVAT, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_ATTRACT_BOX
-	{SPR_TVFO, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_FORCE_BOX
-	{SPR_TVAR, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_ARMAGEDDON_BOX
-	{SPR_TVWW, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_WHIRLWIND_BOX
-	{SPR_TVEL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_ELEMENTAL_BOX
-	{SPR_TVSS, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_SNEAKERS_BOX
-	{SPR_TVIV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_INVULN_BOX
-	{SPR_TV1U, 0, 2, {A_1upThinker}, 0, 0, S_BOX_FLICKER}, // S_1UP_BOX
-	{SPR_TVEG, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_EGGMAN_BOX
-	{SPR_TVMX, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_MIXUP_BOX
-	{SPR_TVGV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_GRAVITY_BOX
-	{SPR_TVRC, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_RECYCLER_BOX
-	{SPR_TV1K, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_SCORE1K_BOX
-	{SPR_TVTK, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_SCORE10K_BOX
-	{SPR_TVFL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_FLAMEAURA_BOX
-	{SPR_TVBB, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_BUBBLEWRAP_BOX
-	{SPR_TVZP, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_THUNDERCOIN_BOX
+	STATE(SPR_TVMY, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_MYSTERY_BOX
+	STATE(SPR_TVRI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_RING_BOX
+	STATE(SPR_TVPI, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_PITY_BOX
+	STATE(SPR_TVAT, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_ATTRACT_BOX
+	STATE(SPR_TVFO, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_FORCE_BOX
+	STATE(SPR_TVAR, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_ARMAGEDDON_BOX
+	STATE(SPR_TVWW, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_WHIRLWIND_BOX
+	STATE(SPR_TVEL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_ELEMENTAL_BOX
+	STATE(SPR_TVSS, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_SNEAKERS_BOX
+	STATE(SPR_TVIV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_INVULN_BOX
+	STATE(SPR_TV1U, 0, 2, {A_1upThinker}, 0, 0, S_BOX_FLICKER), // S_1UP_BOX
+	STATE(SPR_TVEG, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_EGGMAN_BOX
+	STATE(SPR_TVMX, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_MIXUP_BOX
+	STATE(SPR_TVGV, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_GRAVITY_BOX
+	STATE(SPR_TVRC, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_RECYCLER_BOX
+	STATE(SPR_TV1K, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_SCORE1K_BOX
+	STATE(SPR_TVTK, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_SCORE10K_BOX
+	STATE(SPR_TVFL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_FLAMEAURA_BOX
+	STATE(SPR_TVBB, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_BUBBLEWRAP_BOX
+	STATE(SPR_TVZP, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER), // S_THUNDERCOIN_BOX
 
 	// Gold Repeat Monitor States (one per box)
-	{SPR_TVPI, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_PITY_GOLDBOX
-	{SPR_TVAT, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_ATTRACT_GOLDBOX
-	{SPR_TVFO, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_FORCE_GOLDBOX
-	{SPR_TVAR, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_ARMAGEDDON_GOLDBOX
-	{SPR_TVWW, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_WHIRLWIND_GOLDBOX
-	{SPR_TVEL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_ELEMENTAL_GOLDBOX
-	{SPR_TVSS, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_SNEAKERS_GOLDBOX
-	{SPR_TVIV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_INVULN_GOLDBOX
-	{SPR_TVEG, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_EGGMAN_GOLDBOX
-	{SPR_TVGV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_GRAVITY_GOLDBOX
-	{SPR_TVFL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_FLAMEAURA_GOLDBOX
-	{SPR_TVBB, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_BUBBLEWRAP_GOLDBOX
-	{SPR_TVZP, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_THUNDERCOIN_GOLDBOX
+	STATE(SPR_TVPI, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_PITY_GOLDBOX
+	STATE(SPR_TVAT, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_ATTRACT_GOLDBOX
+	STATE(SPR_TVFO, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_FORCE_GOLDBOX
+	STATE(SPR_TVAR, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_ARMAGEDDON_GOLDBOX
+	STATE(SPR_TVWW, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_WHIRLWIND_GOLDBOX
+	STATE(SPR_TVEL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_ELEMENTAL_GOLDBOX
+	STATE(SPR_TVSS, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_SNEAKERS_GOLDBOX
+	STATE(SPR_TVIV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_INVULN_GOLDBOX
+	STATE(SPR_TVEG, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_EGGMAN_GOLDBOX
+	STATE(SPR_TVGV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_GRAVITY_GOLDBOX
+	STATE(SPR_TVFL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_FLAMEAURA_GOLDBOX
+	STATE(SPR_TVBB, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_BUBBLEWRAP_GOLDBOX
+	STATE(SPR_TVZP, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER), // S_THUNDERCOIN_GOLDBOX
 
 	// Team Ring Boxes (these are special)
-	{SPR_TRRI, 0, 2, {NULL}, 0, 0, S_RING_REDBOX2}, // S_RING_REDBOX1
-	{SPR_TRRI, 1, 1, {NULL}, 0, 0, S_RING_REDBOX1}, // S_RING_REDBOX2
-	{SPR_TRRI, 1, 4, {A_MonitorPop}, 0, 0, S_REDBOX_POP2},  // S_REDBOX_POP1
-	{SPR_TRRI, 2, -1, {NULL}, 0, 0, S_NULL},        // S_REDBOX_POP2
+	STATE(SPR_TRRI, 0, 2, {NULL}, 0, 0, S_RING_REDBOX2), // S_RING_REDBOX1
+	STATE(SPR_TRRI, 1, 1, {NULL}, 0, 0, S_RING_REDBOX1), // S_RING_REDBOX2
+	STATE(SPR_TRRI, 1, 4, {A_MonitorPop}, 0, 0, S_REDBOX_POP2),  // S_REDBOX_POP1
+	STATE(SPR_TRRI, 2, -1, {NULL}, 0, 0, S_NULL),        // S_REDBOX_POP2
 
-	{SPR_TBRI, 0, 2, {NULL}, 0, 0, S_RING_BLUEBOX2}, // S_RING_BLUEBOX1
-	{SPR_TBRI, 1, 1, {NULL}, 0, 0, S_RING_BLUEBOX1}, // S_RING_BLUEBOX2
-	{SPR_TBRI, 1, 4, {A_MonitorPop}, 0, 0, S_BLUEBOX_POP2},  // S_BLUEBOX_POP1
-	{SPR_TBRI, 2, -1, {NULL}, 0, 0, S_NULL},         // S_BLUEBOX_POP2
+	STATE(SPR_TBRI, 0, 2, {NULL}, 0, 0, S_RING_BLUEBOX2), // S_RING_BLUEBOX1
+	STATE(SPR_TBRI, 1, 1, {NULL}, 0, 0, S_RING_BLUEBOX1), // S_RING_BLUEBOX2
+	STATE(SPR_TBRI, 1, 4, {A_MonitorPop}, 0, 0, S_BLUEBOX_POP2),  // S_BLUEBOX_POP1
+	STATE(SPR_TBRI, 2, -1, {NULL}, 0, 0, S_NULL),         // S_BLUEBOX_POP2
 
 	// Box Icons -- 2 states each, animation and action
-	{SPR_TVRI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RING_ICON2}, // S_RING_ICON1
-	{SPR_TVRI, 2, 18, {A_RingBox}, 0, 0, S_NULL}, // S_RING_ICON2
+	STATE(SPR_TVRI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RING_ICON2), // S_RING_ICON1
+	STATE(SPR_TVRI, 2, 18, {A_RingBox}, 0, 0, S_NULL), // S_RING_ICON2
 
-	{SPR_TVPI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_PITY_ICON2}, // S_PITY_ICON1
-	{SPR_TVPI, 2, 18, {A_GiveShield}, SH_PITY, 0, S_NULL},  // S_PITY_ICON2
+	STATE(SPR_TVPI, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_PITY_ICON2), // S_PITY_ICON1
+	STATE(SPR_TVPI, 2, 18, {A_GiveShield}, SH_PITY, 0, S_NULL),  // S_PITY_ICON2
 
-	{SPR_TVAT, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ATTRACT_ICON2}, // S_ATTRACT_ICON1
-	{SPR_TVAT, 2, 18, {A_GiveShield}, SH_ATTRACT, 0, S_NULL}, // S_ATTRACT_ICON2
+	STATE(SPR_TVAT, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ATTRACT_ICON2), // S_ATTRACT_ICON1
+	STATE(SPR_TVAT, 2, 18, {A_GiveShield}, SH_ATTRACT, 0, S_NULL), // S_ATTRACT_ICON2
 
-	{SPR_TVFO, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FORCE_ICON2}, // S_FORCE_ICON1
-	{SPR_TVFO, 2, 18, {A_GiveShield}, SH_FORCE|1, 0, S_NULL}, // S_FORCE_ICON2
+	STATE(SPR_TVFO, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FORCE_ICON2), // S_FORCE_ICON1
+	STATE(SPR_TVFO, 2, 18, {A_GiveShield}, SH_FORCE|1, 0, S_NULL), // S_FORCE_ICON2
 
-	{SPR_TVAR, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ARMAGEDDON_ICON2}, // S_ARMAGEDDON_ICON1
-	{SPR_TVAR, 2, 18, {A_GiveShield}, SH_ARMAGEDDON, 0, S_NULL}, // S_ARMAGEDDON_ICON2
+	STATE(SPR_TVAR, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ARMAGEDDON_ICON2), // S_ARMAGEDDON_ICON1
+	STATE(SPR_TVAR, 2, 18, {A_GiveShield}, SH_ARMAGEDDON, 0, S_NULL), // S_ARMAGEDDON_ICON2
 
-	{SPR_TVWW, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_WHIRLWIND_ICON2}, // S_WHIRLWIND_ICON1
-	{SPR_TVWW, 2, 18, {A_GiveShield}, SH_WHIRLWIND, 0, S_NULL}, // S_WHIRLWIND_ICON2
+	STATE(SPR_TVWW, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_WHIRLWIND_ICON2), // S_WHIRLWIND_ICON1
+	STATE(SPR_TVWW, 2, 18, {A_GiveShield}, SH_WHIRLWIND, 0, S_NULL), // S_WHIRLWIND_ICON2
 
-	{SPR_TVEL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ELEMENTAL_ICON2}, // S_ELEMENTAL_ICON1
-	{SPR_TVEL, 2, 18, {A_GiveShield}, SH_ELEMENTAL, 0, S_NULL}, // S_ELEMENTAL_ICON2
+	STATE(SPR_TVEL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_ELEMENTAL_ICON2), // S_ELEMENTAL_ICON1
+	STATE(SPR_TVEL, 2, 18, {A_GiveShield}, SH_ELEMENTAL, 0, S_NULL), // S_ELEMENTAL_ICON2
 
-	{SPR_TVSS, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SNEAKERS_ICON2}, // S_SNEAKERS_ICON1
-	{SPR_TVSS, 2, 18, {A_SuperSneakers}, 0, 0, S_NULL}, // S_SNEAKERS_ICON2
+	STATE(SPR_TVSS, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SNEAKERS_ICON2), // S_SNEAKERS_ICON1
+	STATE(SPR_TVSS, 2, 18, {A_SuperSneakers}, 0, 0, S_NULL), // S_SNEAKERS_ICON2
 
-	{SPR_TVIV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_INVULN_ICON2}, // S_INVULN_ICON1
-	{SPR_TVIV, 2, 18, {A_Invincibility}, 0, 0, S_NULL}, // S_INVULN_ICON2
+	STATE(SPR_TVIV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_INVULN_ICON2), // S_INVULN_ICON1
+	STATE(SPR_TVIV, 2, 18, {A_Invincibility}, 0, 0, S_NULL), // S_INVULN_ICON2
 
-	{SPR_TV1U, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_1UP_ICON2}, // S_1UP_ICON1
-	{SPR_TV1U, 2, 18, {A_ExtraLife},  0, 0, S_NULL},  // S_1UP_ICON2
+	STATE(SPR_TV1U, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_1UP_ICON2), // S_1UP_ICON1
+	STATE(SPR_TV1U, 2, 18, {A_ExtraLife},  0, 0, S_NULL),  // S_1UP_ICON2
 
-	{SPR_TVEG, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_EGGMAN_ICON2}, // S_EGGMAN_ICON1
-	{SPR_TVEG, 2, 18, {A_EggmanBox}, 0, 0, S_NULL}, // S_EGGMAN_ICON2
+	STATE(SPR_TVEG, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_EGGMAN_ICON2), // S_EGGMAN_ICON1
+	STATE(SPR_TVEG, 2, 18, {A_EggmanBox}, 0, 0, S_NULL), // S_EGGMAN_ICON2
 
-	{SPR_TVMX, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_MIXUP_ICON2}, // S_MIXUP_ICON1
-	{SPR_TVMX, 2, 18, {A_MixUp}, 0, 0, S_NULL}, // S_MIXUP_ICON2
+	STATE(SPR_TVMX, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_MIXUP_ICON2), // S_MIXUP_ICON1
+	STATE(SPR_TVMX, 2, 18, {A_MixUp}, 0, 0, S_NULL), // S_MIXUP_ICON2
 
-	{SPR_TVGV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_GRAVITY_ICON2}, // S_GRAVITY_ICON1
-	{SPR_TVGV, 2, 18, {A_GravityBox}, 0, 0, S_NULL}, // S_GRAVITY_ICON2
+	STATE(SPR_TVGV, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_GRAVITY_ICON2), // S_GRAVITY_ICON1
+	STATE(SPR_TVGV, 2, 18, {A_GravityBox}, 0, 0, S_NULL), // S_GRAVITY_ICON2
 
-	{SPR_TVRC, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RECYCLER_ICON2}, // S_RECYCLER_ICON1
-	{SPR_TVRC, 2, 18, {A_RecyclePowers}, 0, 0, S_NULL}, // S_RECYCLER_ICON2
+	STATE(SPR_TVRC, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_RECYCLER_ICON2), // S_RECYCLER_ICON1
+	STATE(SPR_TVRC, 2, 18, {A_RecyclePowers}, 0, 0, S_NULL), // S_RECYCLER_ICON2
 
-	{SPR_TV1K, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE1K_ICON2}, // S_SCORE1K_ICON1
-	{SPR_TV1K, 2, 18, {A_AwardScore}, 0, 0, S_NULL}, // S_SCORE1K_ICON2
+	STATE(SPR_TV1K, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE1K_ICON2), // S_SCORE1K_ICON1
+	STATE(SPR_TV1K, 2, 18, {A_AwardScore}, 0, 0, S_NULL), // S_SCORE1K_ICON2
 
-	{SPR_TVTK, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE10K_ICON2}, // S_SCORE10K_ICON1
-	{SPR_TVTK, 2, 18, {A_AwardScore}, 0, 0, S_NULL}, // S_SCORE10K_ICON2
+	STATE(SPR_TVTK, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE10K_ICON2), // S_SCORE10K_ICON1
+	STATE(SPR_TVTK, 2, 18, {A_AwardScore}, 0, 0, S_NULL), // S_SCORE10K_ICON2
 
-	{SPR_TVFL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FLAMEAURA_ICON2}, // S_FLAMEAURA_ICON1
-	{SPR_TVFL, 2, 18, {A_GiveShield}, SH_FLAMEAURA, 0, S_NULL}, // S_FLAMEAURA_ICON2
+	STATE(SPR_TVFL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FLAMEAURA_ICON2), // S_FLAMEAURA_ICON1
+	STATE(SPR_TVFL, 2, 18, {A_GiveShield}, SH_FLAMEAURA, 0, S_NULL), // S_FLAMEAURA_ICON2
 
-	{SPR_TVBB, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_BUBBLEWRAP_ICON2}, // S_BUBBLEWRAP_ICON1
-	{SPR_TVBB, 2, 18, {A_GiveShield}, SH_BUBBLEWRAP, 0, S_NULL}, // S_BUBBLEWRAP_ICON2
+	STATE(SPR_TVBB, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_BUBBLEWRAP_ICON2), // S_BUBBLEWRAP_ICON1
+	STATE(SPR_TVBB, 2, 18, {A_GiveShield}, SH_BUBBLEWRAP, 0, S_NULL), // S_BUBBLEWRAP_ICON2
 
-	{SPR_TVZP, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_THUNDERCOIN_ICON2}, // S_THUNDERCOIN_ICON1
-	{SPR_TVZP, 2, 18, {A_GiveShield}, SH_THUNDERCOIN, 0, S_NULL}, // S_THUNDERCOIN_ICON2
+	STATE(SPR_TVZP, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_THUNDERCOIN_ICON2), // S_THUNDERCOIN_ICON1
+	STATE(SPR_TVZP, 2, 18, {A_GiveShield}, SH_THUNDERCOIN, 0, S_NULL), // S_THUNDERCOIN_ICON2
 
 	// ---
 
-	{SPR_MISL, FF_FULLBRIGHT, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_ROCKET}, // S_ROCKET
+	STATE(SPR_MISL, FF_FULLBRIGHT, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_ROCKET), // S_ROCKET
 
-	{SPR_LASR, FF_FULLBRIGHT|0, 2, {NULL}, 0, 0, S_NULL}, // S_LASER
-	{SPR_LASR, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_NULL}, // S_LASER2
-	{SPR_LASR, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL}, // S_LASERFLASH
+	STATE(SPR_LASR, FF_FULLBRIGHT|0, 2, {NULL}, 0, 0, S_NULL), // S_LASER
+	STATE(SPR_LASR, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_NULL), // S_LASER2
+	STATE(SPR_LASR, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL), // S_LASERFLASH
 
-	{SPR_LASF,                           FF_FULLBRIGHT|0,       2,           {NULL}, 0, 0, S_LASERFLAME2}, // S_LASERFLAME1
-	{SPR_LASF,                           FF_FULLBRIGHT|1,       1, {A_ChangeHeight}, 156*FRACUNIT, 3, S_LASERFLAME3}, // S_LASERFLAME2
-	{SPR_LASF,                           FF_FULLBRIGHT|2,       0, {A_ChangeHeight}, 32*FRACUNIT, 3, S_LASERFLAME4}, // S_LASERFLAME3
-	{SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|2,       4,           {NULL}, 1, 2, S_LASERFLAME5}, // S_LASERFLAME4
-	{SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|4,      28,           {NULL}, 2, 2, S_NULL}, // S_LASERFLAME5
+	STATE(SPR_LASF,                           FF_FULLBRIGHT|0,       2,           {NULL}, 0, 0, S_LASERFLAME2), // S_LASERFLAME1
+	STATE(SPR_LASF,                           FF_FULLBRIGHT|1,       1, {A_ChangeHeight}, 156*FRACUNIT, 3, S_LASERFLAME3), // S_LASERFLAME2
+	STATE(SPR_LASF,                           FF_FULLBRIGHT|2,       0, {A_ChangeHeight}, 32*FRACUNIT, 3, S_LASERFLAME4), // S_LASERFLAME3
+	STATE(SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|2,       4,           {NULL}, 1, 2, S_LASERFLAME5), // S_LASERFLAME4
+	STATE(SPR_LASF, FF_ANIMATE|FF_PAPERSPRITE|FF_FULLBRIGHT|4,      28,           {NULL}, 2, 2, S_NULL), // S_LASERFLAME5
 
-	{SPR_TORP, 0, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_TORPEDO}, // S_TORPEDO
+	STATE(SPR_TORP, 0, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_TORPEDO), // S_TORPEDO
 
-	{SPR_ENRG, FF_FULLBRIGHT|FF_TRANS30, 1, {NULL}, 0, 0, S_ENERGYBALL2}, // S_ENERGYBALL1
-	{SPR_NULL, 0, 1, {NULL}, 0, 0, S_ENERGYBALL1}, // S_ENERGYBALL2
+	STATE(SPR_ENRG, FF_FULLBRIGHT|FF_TRANS30, 1, {NULL}, 0, 0, S_ENERGYBALL2), // S_ENERGYBALL1
+	STATE(SPR_NULL, 0, 1, {NULL}, 0, 0, S_ENERGYBALL1), // S_ENERGYBALL2
 
 	// Skim Mine (also dropped by Jetty-Syn bomber)
-	{SPR_MINE, 0, -1, {NULL}, 0, 0, S_NULL},           // S_MINE1
-	{SPR_MINE, 1, 1, {A_Fall}, 0, 0, S_MINE_BOOM2},    // S_MINE_BOOM1
-	{SPR_MINE, 2, 3, {A_Scream}, 0, 0, S_MINE_BOOM3},  // S_MINE_BOOM2
-	{SPR_MINE, 3, 3, {A_Explode}, 0, 0, S_MINE_BOOM4}, // S_MINE_BOOM3
-	{SPR_MINE, 4, 3, {NULL}, 0, 0, S_NULL},            // S_MINE_BOOM4
+	STATE(SPR_MINE, 0, -1, {NULL}, 0, 0, S_NULL),           // S_MINE1
+	STATE(SPR_MINE, 1, 1, {A_Fall}, 0, 0, S_MINE_BOOM2),    // S_MINE_BOOM1
+	STATE(SPR_MINE, 2, 3, {A_Scream}, 0, 0, S_MINE_BOOM3),  // S_MINE_BOOM2
+	STATE(SPR_MINE, 3, 3, {A_Explode}, 0, 0, S_MINE_BOOM4), // S_MINE_BOOM3
+	STATE(SPR_MINE, 4, 3, {NULL}, 0, 0, S_NULL),            // S_MINE_BOOM4
 
 	// Jetty-Syn Bullet
-	{SPR_JBUL, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_JETBULLET2}, // S_JETBULLET1
-	{SPR_JBUL, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_JETBULLET1}, // S_JETBULLET2
+	STATE(SPR_JBUL, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_JETBULLET2), // S_JETBULLET1
+	STATE(SPR_JBUL, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_JETBULLET1), // S_JETBULLET2
 
-	{SPR_TRLS, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_TURRETLASER},          // S_TURRETLASER
-	{SPR_TRLS, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TURRETLASEREXPLODE2},  // S_TURRETLASEREXPLODE1
-	{SPR_TRLS, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL},                 // S_TURRETLASEREXPLODE2
+	STATE(SPR_TRLS, FF_FULLBRIGHT,   1, {NULL}, 0, 0, S_TURRETLASER),          // S_TURRETLASER
+	STATE(SPR_TRLS, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_TURRETLASEREXPLODE2),  // S_TURRETLASEREXPLODE1
+	STATE(SPR_TRLS, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_NULL),                 // S_TURRETLASEREXPLODE2
 
-	{SPR_CBLL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CANNONBALL1
+	STATE(SPR_CBLL, 0, -1, {NULL}, 0, 0, S_NULL), // S_CANNONBALL1
 
-	{SPR_AROW, 0, -1, {NULL}, 0, 0, S_NULL}, // S_ARROW
-	{SPR_AROW, FF_ANIMATE, TICRATE, {A_ArrowBonks}, 7, 2, S_NULL}, // S_ARROWBONK
+	STATE(SPR_AROW, 0, -1, {NULL}, 0, 0, S_NULL), // S_ARROW
+	STATE(SPR_AROW, FF_ANIMATE, TICRATE, {A_ArrowBonks}, 7, 2, S_NULL), // S_ARROWBONK
 
-	{SPR_CFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 5, 2, S_NULL}, // S_DEMONFIRE
+	STATE(SPR_CFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 5, 2, S_NULL), // S_DEMONFIRE
 
-	{SPR_LETR, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_LETTER
+	STATE(SPR_LETR, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_LETTER
 
 	// Tutorial scenery
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF2}, // S_TUTORIALLEAF1
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF3}, // S_TUTORIALLEAF2
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF4}, // S_TUTORIALLEAF3
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF5}, // S_TUTORIALLEAF4
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF6}, // S_TUTORIALLEAF5
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF7}, // S_TUTORIALLEAF6
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF8}, // S_TUTORIALLEAF7
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF9}, // S_TUTORIALLEAF8
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF10}, // S_TUTORIALLEAF9
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF11}, // S_TUTORIALLEAF10
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF12}, // S_TUTORIALLEAF11
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF13}, // S_TUTORIALLEAF12
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF14}, // S_TUTORIALLEAF13
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF15}, // S_TUTORIALLEAF14
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF16}, // S_TUTORIALLEAF15
-	{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF1}, // S_TUTORIALLEAF16
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER2}, // S_TUTORIALFLOWER1
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER3}, // S_TUTORIALFLOWER2
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER4}, // S_TUTORIALFLOWER3
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER5}, // S_TUTORIALFLOWER4
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER6}, // S_TUTORIALFLOWER5
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER7}, // S_TUTORIALFLOWER6
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER8}, // S_TUTORIALFLOWER7
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER9}, // S_TUTORIALFLOWER8
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER10}, // S_TUTORIALFLOWER9
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER11}, // S_TUTORIALFLOWER10
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER12}, // S_TUTORIALFLOWER11
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER13}, // S_TUTORIALFLOWER12
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER14}, // S_TUTORIALFLOWER13
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER15}, // S_TUTORIALFLOWER14
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER16}, // S_TUTORIALFLOWER15
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER1}, // S_TUTORIALFLOWER16
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF2}, // S_TUTORIALFLOWERF1
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF3}, // S_TUTORIALFLOWERF2
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF4}, // S_TUTORIALFLOWERF3
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF5}, // S_TUTORIALFLOWERF4
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF6}, // S_TUTORIALFLOWERF5
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF7}, // S_TUTORIALFLOWERF6
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF8}, // S_TUTORIALFLOWERF7
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF9}, // S_TUTORIALFLOWERF8
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF10}, // S_TUTORIALFLOWERF9
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF11}, // S_TUTORIALFLOWERF10
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF12}, // S_TUTORIALFLOWERF11
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF13}, // S_TUTORIALFLOWERF12
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF14}, // S_TUTORIALFLOWERF13
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF15}, // S_TUTORIALFLOWERF14
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF16}, // S_TUTORIALFLOWERF15
-	{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF1}, // S_TUTORIALFLOWERF16
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF2), // S_TUTORIALLEAF1
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF3), // S_TUTORIALLEAF2
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF4), // S_TUTORIALLEAF3
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF5), // S_TUTORIALLEAF4
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF6), // S_TUTORIALLEAF5
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF7), // S_TUTORIALLEAF6
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF8), // S_TUTORIALLEAF7
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF9), // S_TUTORIALLEAF8
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF10), // S_TUTORIALLEAF9
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF11), // S_TUTORIALLEAF10
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF12), // S_TUTORIALLEAF11
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF13), // S_TUTORIALLEAF12
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF14), // S_TUTORIALLEAF13
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF15), // S_TUTORIALLEAF14
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF16), // S_TUTORIALLEAF15
+	STATE(SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF1), // S_TUTORIALLEAF16
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER2), // S_TUTORIALFLOWER1
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER3), // S_TUTORIALFLOWER2
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER4), // S_TUTORIALFLOWER3
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER5), // S_TUTORIALFLOWER4
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER6), // S_TUTORIALFLOWER5
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER7), // S_TUTORIALFLOWER6
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER8), // S_TUTORIALFLOWER7
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER9), // S_TUTORIALFLOWER8
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER10), // S_TUTORIALFLOWER9
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER11), // S_TUTORIALFLOWER10
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER12), // S_TUTORIALFLOWER11
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER13), // S_TUTORIALFLOWER12
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER14), // S_TUTORIALFLOWER13
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER15), // S_TUTORIALFLOWER14
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER16), // S_TUTORIALFLOWER15
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER1), // S_TUTORIALFLOWER16
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF2), // S_TUTORIALFLOWERF1
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF3), // S_TUTORIALFLOWERF2
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF4), // S_TUTORIALFLOWERF3
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF5), // S_TUTORIALFLOWERF4
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF6), // S_TUTORIALFLOWERF5
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF7), // S_TUTORIALFLOWERF6
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF8), // S_TUTORIALFLOWERF7
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF9), // S_TUTORIALFLOWERF8
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF10), // S_TUTORIALFLOWERF9
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF11), // S_TUTORIALFLOWERF10
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF12), // S_TUTORIALFLOWERF11
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF13), // S_TUTORIALFLOWERF12
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF14), // S_TUTORIALFLOWERF13
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF15), // S_TUTORIALFLOWERF14
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF16), // S_TUTORIALFLOWERF15
+	STATE(SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF1), // S_TUTORIALFLOWERF16
 
 	// GFZ flowers
-	{SPR_FWR1, FF_ANIMATE, -1, {NULL},  7, 3, S_NULL}, // S_GFZFLOWERA
-	{SPR_FWR2, FF_ANIMATE, -1, {NULL}, 19, 3, S_NULL}, // S_GFZFLOWERB
-	{SPR_FWR3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL}, // S_GFZFLOWERC
+	STATE(SPR_FWR1, FF_ANIMATE, -1, {NULL},  7, 3, S_NULL), // S_GFZFLOWERA
+	STATE(SPR_FWR2, FF_ANIMATE, -1, {NULL}, 19, 3, S_NULL), // S_GFZFLOWERB
+	STATE(SPR_FWR3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL), // S_GFZFLOWERC
 
-	{SPR_BUS3, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BLUEBERRYBUSH
-	{SPR_BUS1, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BERRYBUSH
-	{SPR_BUS2, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BUSH
+	STATE(SPR_BUS3, 0, -1, {NULL}, 0, 0, S_NULL), // S_BLUEBERRYBUSH
+	STATE(SPR_BUS1, 0, -1, {NULL}, 0, 0, S_NULL), // S_BERRYBUSH
+	STATE(SPR_BUS2, 0, -1, {NULL}, 0, 0, S_NULL), // S_BUSH
 
 	// Trees
-	{SPR_TRE1, 0, -1, {NULL}, 0, 0, S_NULL}, // S_GFZTREE
-	{SPR_TRE1, 1, -1, {NULL}, 0, 0, S_NULL}, // S_GFZBERRYTREE
-	{SPR_TRE1, 2, -1, {NULL}, 0, 0, S_NULL}, // S_GFZCHERRYTREE
-	{SPR_TRE2, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CHECKERTREE
-	{SPR_TRE2, 1, -1, {NULL}, 0, 0, S_NULL}, // S_CHECKERSUNSETTREE
-	{SPR_TRE3, 0, -1, {NULL}, 0, 0, S_NULL}, // S_FHZTREE
-	{SPR_TRE3, 1, -1, {NULL}, 0, 0, S_NULL}, // S_FHZPINKTREE
-	{SPR_TRE4, 0, -1, {NULL}, 0, 0, S_NULL}, // S_POLYGONTREE
-	{SPR_TRE5, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BUSHTREE
-	{SPR_TRE5, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BUSHREDTREE
-	{SPR_TRE6, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SPRINGTREE
+	STATE(SPR_TRE1, 0, -1, {NULL}, 0, 0, S_NULL), // S_GFZTREE
+	STATE(SPR_TRE1, 1, -1, {NULL}, 0, 0, S_NULL), // S_GFZBERRYTREE
+	STATE(SPR_TRE1, 2, -1, {NULL}, 0, 0, S_NULL), // S_GFZCHERRYTREE
+	STATE(SPR_TRE2, 0, -1, {NULL}, 0, 0, S_NULL), // S_CHECKERTREE
+	STATE(SPR_TRE2, 1, -1, {NULL}, 0, 0, S_NULL), // S_CHECKERSUNSETTREE
+	STATE(SPR_TRE3, 0, -1, {NULL}, 0, 0, S_NULL), // S_FHZTREE
+	STATE(SPR_TRE3, 1, -1, {NULL}, 0, 0, S_NULL), // S_FHZPINKTREE
+	STATE(SPR_TRE4, 0, -1, {NULL}, 0, 0, S_NULL), // S_POLYGONTREE
+	STATE(SPR_TRE5, 0, -1, {NULL}, 0, 0, S_NULL), // S_BUSHTREE
+	STATE(SPR_TRE5, 1, -1, {NULL}, 0, 0, S_NULL), // S_BUSHREDTREE
+	STATE(SPR_TRE6, 0, -1, {NULL}, 0, 0, S_NULL), // S_SPRINGTREE
 
 	// THZ flowers
-	{SPR_THZP, FF_ANIMATE, -1, {NULL},  7, 4, S_NULL}, // S_THZFLOWERA
-	{SPR_FWR5, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL}, // S_THZFLOWERB
-	{SPR_FWR6, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL}, // S_THZFLOWERC
+	STATE(SPR_THZP, FF_ANIMATE, -1, {NULL},  7, 4, S_NULL), // S_THZFLOWERA
+	STATE(SPR_FWR5, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL), // S_THZFLOWERB
+	STATE(SPR_FWR6, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL), // S_THZFLOWERC
 
 	// THZ Steam Whistle tree/bush
-	{SPR_THZT, 0, -1, {NULL}, 0, 0, S_NULL}, // S_THZTREE
-	{SPR_THZT,  1|FF_PAPERSPRITE, 40, {NULL}, 0, 0, S_THZTREEBRANCH2}, // S_THZTREEBRANCH1
-	{SPR_THZT,  2|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH3}, // S_THZTREEBRANCH2
-	{SPR_THZT,  3|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH4}, // S_THZTREEBRANCH3
-	{SPR_THZT,  4|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH5}, // S_THZTREEBRANCH4
-	{SPR_THZT,  5|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH6}, // S_THZTREEBRANCH5
-	{SPR_THZT,  6|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH7}, // S_THZTREEBRANCH6
-	{SPR_THZT,  7|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH8}, // S_THZTREEBRANCH7
-	{SPR_THZT,  8|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH9}, // S_THZTREEBRANCH8
-	{SPR_THZT,  9|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH10}, // S_THZTREEBRANCH9
-	{SPR_THZT, 10|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH11}, // S_THZTREEBRANCH10
-	{SPR_THZT, 11|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH12}, // S_THZTREEBRANCH11
-	{SPR_THZT, 12|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH13}, // S_THZTREEBRANCH12
-	{SPR_THZT, 13|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH1}, // S_THZTREEBRANCH13
+	STATE(SPR_THZT, 0, -1, {NULL}, 0, 0, S_NULL), // S_THZTREE
+	STATE(SPR_THZT,  1|FF_PAPERSPRITE, 40, {NULL}, 0, 0, S_THZTREEBRANCH2), // S_THZTREEBRANCH1
+	STATE(SPR_THZT,  2|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH3), // S_THZTREEBRANCH2
+	STATE(SPR_THZT,  3|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH4), // S_THZTREEBRANCH3
+	STATE(SPR_THZT,  4|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH5), // S_THZTREEBRANCH4
+	STATE(SPR_THZT,  5|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH6), // S_THZTREEBRANCH5
+	STATE(SPR_THZT,  6|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH7), // S_THZTREEBRANCH6
+	STATE(SPR_THZT,  7|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH8), // S_THZTREEBRANCH7
+	STATE(SPR_THZT,  8|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH9), // S_THZTREEBRANCH8
+	STATE(SPR_THZT,  9|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH10), // S_THZTREEBRANCH9
+	STATE(SPR_THZT, 10|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH11), // S_THZTREEBRANCH10
+	STATE(SPR_THZT, 11|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH12), // S_THZTREEBRANCH11
+	STATE(SPR_THZT, 12|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH13), // S_THZTREEBRANCH12
+	STATE(SPR_THZT, 13|FF_PAPERSPRITE,  4, {NULL}, 0, 0, S_THZTREEBRANCH1), // S_THZTREEBRANCH13
 
 	// THZ Alarm
-	{SPR_ALRM, FF_FULLBRIGHT, 35, {A_Scream}, 0, 0, S_ALARM1}, // S_ALARM1
+	STATE(SPR_ALRM, FF_FULLBRIGHT, 35, {A_Scream}, 0, 0, S_ALARM1), // S_ALARM1
 
 	// Deep Sea Gargoyle
-	{SPR_GARG, 0, -1, {NULL}, 0, 0, S_NULL},  // S_GARGOYLE
-	{SPR_GARG, 1, -1, {NULL}, 0, 0, S_NULL},  // S_BIGGARGOYLE
+	STATE(SPR_GARG, 0, -1, {NULL}, 0, 0, S_NULL),  // S_GARGOYLE
+	STATE(SPR_GARG, 1, -1, {NULL}, 0, 0, S_NULL),  // S_BIGGARGOYLE
 
 	// DSZ Seaweed
-	{SPR_SEWE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 26, 3, S_SEAWEED1}, // S_SEAWEED1
-	{SPR_SEWE, 1, 5, {NULL}, 0, 0, S_SEAWEED3}, // S_SEAWEED2
-	{SPR_SEWE, 2, 5, {NULL}, 0, 0, S_SEAWEED4}, // S_SEAWEED3
-	{SPR_SEWE, 3, 5, {NULL}, 0, 0, S_SEAWEED5}, // S_SEAWEED4
-	{SPR_SEWE, 4, 5, {NULL}, 0, 0, S_SEAWEED6}, // S_SEAWEED5
-	{SPR_SEWE, 5, 5, {NULL}, 0, 0, S_SEAWEED1}, // S_SEAWEED6
+	STATE(SPR_SEWE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 26, 3, S_SEAWEED1), // S_SEAWEED1
+	STATE(SPR_SEWE, 1, 5, {NULL}, 0, 0, S_SEAWEED3), // S_SEAWEED2
+	STATE(SPR_SEWE, 2, 5, {NULL}, 0, 0, S_SEAWEED4), // S_SEAWEED3
+	STATE(SPR_SEWE, 3, 5, {NULL}, 0, 0, S_SEAWEED5), // S_SEAWEED4
+	STATE(SPR_SEWE, 4, 5, {NULL}, 0, 0, S_SEAWEED6), // S_SEAWEED5
+	STATE(SPR_SEWE, 5, 5, {NULL}, 0, 0, S_SEAWEED1), // S_SEAWEED6
 
 	// Dripping water
-	{SPR_NULL, FF_TRANS30  , 3*TICRATE, {NULL},                  0, 0, S_DRIPA2}, // S_DRIPA1
-	{SPR_DRIP, FF_TRANS30  ,         2, {NULL},                  0, 0, S_DRIPA3}, // S_DRIPA2
-	{SPR_DRIP, FF_TRANS30|1,         2, {NULL},                  0, 0, S_DRIPA4}, // S_DRIPA3
-	{SPR_DRIP, FF_TRANS30|2,         2, {A_SpawnObjectRelative}, 0, MT_WATERDROP, S_DRIPA1}, // S_DRIPA4
-	{SPR_DRIP, FF_TRANS30|3,        -1, {NULL},                  0, 0, S_DRIPB1}, // S_DRIPB1
-	{SPR_DRIP, FF_TRANS30|4,         1, {NULL},                  0, 0, S_DRIPC2}, // S_DRIPC1
-	{SPR_DRIP, FF_TRANS30|5,         1, {NULL},                  0, 0,   S_NULL}, // S_DRIPC2
+	STATE(SPR_NULL, FF_TRANS30  , 3*TICRATE, {NULL},                  0, 0, S_DRIPA2), // S_DRIPA1
+	STATE(SPR_DRIP, FF_TRANS30  ,         2, {NULL},                  0, 0, S_DRIPA3), // S_DRIPA2
+	STATE(SPR_DRIP, FF_TRANS30|1,         2, {NULL},                  0, 0, S_DRIPA4), // S_DRIPA3
+	STATE(SPR_DRIP, FF_TRANS30|2,         2, {A_SpawnObjectRelative}, 0, MT_WATERDROP, S_DRIPA1), // S_DRIPA4
+	STATE(SPR_DRIP, FF_TRANS30|3,        -1, {NULL},                  0, 0, S_DRIPB1), // S_DRIPB1
+	STATE(SPR_DRIP, FF_TRANS30|4,         1, {NULL},                  0, 0, S_DRIPC2), // S_DRIPC1
+	STATE(SPR_DRIP, FF_TRANS30|5,         1, {NULL},                  0, 0,   S_NULL), // S_DRIPC2
 
 	// Coral
-	{SPR_CORL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CORAL1
-	{SPR_CORL, 1, -1, {NULL}, 0, 0, S_NULL}, // S_CORAL2
-	{SPR_CORL, 2, -1, {NULL}, 0, 0, S_NULL}, // S_CORAL3
-	{SPR_CORL, 3, -1, {NULL}, 0, 0, S_NULL}, // S_CORAL4
-	{SPR_CORL, 4, -1, {NULL}, 0, 0, S_NULL}, // S_CORAL5
+	STATE(SPR_CORL, 0, -1, {NULL}, 0, 0, S_NULL), // S_CORAL1
+	STATE(SPR_CORL, 1, -1, {NULL}, 0, 0, S_NULL), // S_CORAL2
+	STATE(SPR_CORL, 2, -1, {NULL}, 0, 0, S_NULL), // S_CORAL3
+	STATE(SPR_CORL, 3, -1, {NULL}, 0, 0, S_NULL), // S_CORAL4
+	STATE(SPR_CORL, 4, -1, {NULL}, 0, 0, S_NULL), // S_CORAL5
 
 	// Blue Crystal
-	{SPR_BCRY, FF_TRANS30, -1, {NULL}, 0, 0, S_NULL}, // S_BLUECRYSTAL1
+	STATE(SPR_BCRY, FF_TRANS30, -1, {NULL}, 0, 0, S_NULL), // S_BLUECRYSTAL1
 
 	// Kelp
-	{SPR_KELP, 0, -1, {NULL}, 0, 0, S_NULL}, // S_KELP
+	STATE(SPR_KELP, 0, -1, {NULL}, 0, 0, S_NULL), // S_KELP
 
 	// Animated algae
-	{SPR_ALGA, 0, 1, {A_ConnectToGround}, MT_ANIMALGAESEG, 0, S_ANIMALGAETOP2}, // S_ANIMALGAETOP1
-	{SPR_ALGA, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL},          // S_ANIMALGAETOP2
-	{SPR_ALGB, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL},          // S_ANIMALGAESEG
+	STATE(SPR_ALGA, 0, 1, {A_ConnectToGround}, MT_ANIMALGAESEG, 0, S_ANIMALGAETOP2), // S_ANIMALGAETOP1
+	STATE(SPR_ALGA, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL),          // S_ANIMALGAETOP2
+	STATE(SPR_ALGB, 0|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 11, 4, S_NULL),          // S_ANIMALGAESEG
 
 	// DSZ Stalagmites
-	{SPR_DSTG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_DSZSTALAGMITE
-	{SPR_DSTG, 1, -1, {NULL}, 0, 0, S_NULL}, // S_DSZ2STALAGMITE
+	STATE(SPR_DSTG, 0, -1, {NULL}, 0, 0, S_NULL), // S_DSZSTALAGMITE
+	STATE(SPR_DSTG, 1, -1, {NULL}, 0, 0, S_NULL), // S_DSZ2STALAGMITE
 
 	// DSZ Light beam
-	{SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {A_LightBeamReset}, 0, 0, S_LIGHTBEAM2}, // S_LIGHTBEAM1
-	{SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM3},  // S_LIGHTBEAM2
-	{SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM4},  // S_LIGHTBEAM3
-	{SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM5},  // S_LIGHTBEAM4
-	{SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM6},  // S_LIGHTBEAM5
-	{SPR_LIBE, 0|FF_TRANS30|FF_FULLBRIGHT|FF_PAPERSPRITE, 9, {NULL}, 0, 0, S_LIGHTBEAM7},  // S_LIGHTBEAM6
-	{SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM8},  // S_LIGHTBEAM7
-	{SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM9},  // S_LIGHTBEAM8
-	{SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM10}, // S_LIGHTBEAM9
-	{SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM11}, // S_LIGHTBEAM10
-	{SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM12}, // S_LIGHTBEAM11
-	{SPR_NULL, 0, 2, {A_SetRandomTics}, 4, 35, S_LIGHTBEAM1}, // S_LIGHTBEAM12
+	STATE(SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {A_LightBeamReset}, 0, 0, S_LIGHTBEAM2), // S_LIGHTBEAM1
+	STATE(SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM3),  // S_LIGHTBEAM2
+	STATE(SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM4),  // S_LIGHTBEAM3
+	STATE(SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM5),  // S_LIGHTBEAM4
+	STATE(SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM6),  // S_LIGHTBEAM5
+	STATE(SPR_LIBE, 0|FF_TRANS30|FF_FULLBRIGHT|FF_PAPERSPRITE, 9, {NULL}, 0, 0, S_LIGHTBEAM7),  // S_LIGHTBEAM6
+	STATE(SPR_LIBE, 0|FF_TRANS40|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM8),  // S_LIGHTBEAM7
+	STATE(SPR_LIBE, 0|FF_TRANS50|FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_LIGHTBEAM9),  // S_LIGHTBEAM8
+	STATE(SPR_LIBE, 0|FF_TRANS60|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM10), // S_LIGHTBEAM9
+	STATE(SPR_LIBE, 0|FF_TRANS70|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM11), // S_LIGHTBEAM10
+	STATE(SPR_LIBE, 0|FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE, 4, {NULL}, 0, 0, S_LIGHTBEAM12), // S_LIGHTBEAM11
+	STATE(SPR_NULL, 0, 2, {A_SetRandomTics}, 4, 35, S_LIGHTBEAM1), // S_LIGHTBEAM12
 
 	// CEZ Chain
-	{SPR_CHAN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CEZCHAIN
+	STATE(SPR_CHAN, 0, -1, {NULL}, 0, 0, S_NULL), // S_CEZCHAIN
 
 	// Flame
-	{SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE,       3*8, {A_FlameParticle}, 7, 3, S_FLAME}, // S_FLAME
-	{SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE|8, TICRATE,            {NULL}, 3, 3, S_NULL},  // S_FLAMEPARTICLE
-	{SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE,        -1,            {NULL}, 7, 3, S_NULL},  // S_FLAMEREST
+	STATE(SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE,       3*8, {A_FlameParticle}, 7, 3, S_FLAME), // S_FLAME
+	STATE(SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE|8, TICRATE,            {NULL}, 3, 3, S_NULL),  // S_FLAMEPARTICLE
+	STATE(SPR_FLAM, FF_FULLBRIGHT|FF_ANIMATE,        -1,            {NULL}, 7, 3, S_NULL),  // S_FLAMEREST
 
 	// Eggman statue
-	{SPR_ESTA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGSTATUE1
+	STATE(SPR_ESTA, 0, -1, {NULL}, 0, 0, S_NULL), // S_EGGSTATUE1
 
 	// Hidden sling appears
-	{SPR_NULL, 0, -1, {NULL},          0, 0, S_SLING2}, // S_SLING1
-	{SPR_NULL, 0, -1, {A_SlingAppear}, 0, 0, S_NULL},   // S_SLING2
+	STATE(SPR_NULL, 0, -1, {NULL},          0, 0, S_SLING2), // S_SLING1
+	STATE(SPR_NULL, 0, -1, {A_SlingAppear}, 0, 0, S_NULL),   // S_SLING2
 
 	// CEZ maces and chains
-	{SPR_SMCH, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SMALLMACECHAIN
-	{SPR_BMCH, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BIGMACECHAIN
-	{SPR_SMCE, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SMALLMACE
-	{SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BIGMACE
-	{SPR_SMCH, 1, -1, {NULL}, 0, 0, S_NULL}, // S_SMALLGRABCHAIN
-	{SPR_BMCH, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BIGGRABCHAIN
+	STATE(SPR_SMCH, 0, -1, {NULL}, 0, 0, S_NULL), // S_SMALLMACECHAIN
+	STATE(SPR_BMCH, 0, -1, {NULL}, 0, 0, S_NULL), // S_BIGMACECHAIN
+	STATE(SPR_SMCE, 0, -1, {NULL}, 0, 0, S_NULL), // S_SMALLMACE
+	STATE(SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL), // S_BIGMACE
+	STATE(SPR_SMCH, 1, -1, {NULL}, 0, 0, S_NULL), // S_SMALLGRABCHAIN
+	STATE(SPR_BMCH, 1, -1, {NULL}, 0, 0, S_NULL), // S_BIGGRABCHAIN
 
 	// Blue spring on a ball
-	{SPR_BSPB, 0, -1, {NULL},   0, 0, S_NULL},            // S_BLUESPRINGBALL
-	{SPR_BSPB, 4,  4, {A_Pain}, 0, 0, S_BLUESPRINGBALL3}, // S_BLUESPRINGBALL2
-	{SPR_BSPB, 3,  1, {NULL},   0, 0, S_BLUESPRINGBALL4}, // S_BLUESPRINGBALL3
-	{SPR_BSPB, 2,  1, {NULL},   0, 0, S_BLUESPRINGBALL5}, // S_BLUESPRINGBALL4
-	{SPR_BSPB, 1,  1, {NULL},   0, 0, S_BLUESPRINGBALL},  // S_BLUESPRINGBALL5
+	STATE(SPR_BSPB, 0, -1, {NULL},   0, 0, S_NULL),            // S_BLUESPRINGBALL
+	STATE(SPR_BSPB, 4,  4, {A_Pain}, 0, 0, S_BLUESPRINGBALL3), // S_BLUESPRINGBALL2
+	STATE(SPR_BSPB, 3,  1, {NULL},   0, 0, S_BLUESPRINGBALL4), // S_BLUESPRINGBALL3
+	STATE(SPR_BSPB, 2,  1, {NULL},   0, 0, S_BLUESPRINGBALL5), // S_BLUESPRINGBALL4
+	STATE(SPR_BSPB, 1,  1, {NULL},   0, 0, S_BLUESPRINGBALL),  // S_BLUESPRINGBALL5
 
 	// Yellow spring on a ball
-	{SPR_YSPB, 0, -1, {NULL},   0, 0, S_NULL},              // S_YELLOWSPRINGBALL
-	{SPR_YSPB, 4,  4, {A_Pain}, 0, 0, S_YELLOWSPRINGBALL3}, // S_YELLOWSPRINGBALL2
-	{SPR_YSPB, 3,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL4}, // S_YELLOWSPRINGBALL3
-	{SPR_YSPB, 2,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL5}, // S_YELLOWSPRINGBALL4
-	{SPR_YSPB, 1,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL},  // S_YELLOWSPRINGBALL5
+	STATE(SPR_YSPB, 0, -1, {NULL},   0, 0, S_NULL),              // S_YELLOWSPRINGBALL
+	STATE(SPR_YSPB, 4,  4, {A_Pain}, 0, 0, S_YELLOWSPRINGBALL3), // S_YELLOWSPRINGBALL2
+	STATE(SPR_YSPB, 3,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL4), // S_YELLOWSPRINGBALL3
+	STATE(SPR_YSPB, 2,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL5), // S_YELLOWSPRINGBALL4
+	STATE(SPR_YSPB, 1,  1, {NULL},   0, 0, S_YELLOWSPRINGBALL),  // S_YELLOWSPRINGBALL5
 
 	// Red spring on a ball
-	{SPR_RSPB, 0, -1, {NULL},   0, 0, S_NULL},           // S_REDSPRINGBALL
-	{SPR_RSPB, 4,  4, {A_Pain}, 0, 0, S_REDSPRINGBALL3}, // S_REDSPRINGBALL2
-	{SPR_RSPB, 3,  1, {NULL},   0, 0, S_REDSPRINGBALL4}, // S_REDSPRINGBALL3
-	{SPR_RSPB, 2,  1, {NULL},   0, 0, S_REDSPRINGBALL5}, // S_REDSPRINGBALL4
-	{SPR_RSPB, 1,  1, {NULL},   0, 0, S_REDSPRINGBALL},  // S_REDSPRINGBALL5
+	STATE(SPR_RSPB, 0, -1, {NULL},   0, 0, S_NULL),           // S_REDSPRINGBALL
+	STATE(SPR_RSPB, 4,  4, {A_Pain}, 0, 0, S_REDSPRINGBALL3), // S_REDSPRINGBALL2
+	STATE(SPR_RSPB, 3,  1, {NULL},   0, 0, S_REDSPRINGBALL4), // S_REDSPRINGBALL3
+	STATE(SPR_RSPB, 2,  1, {NULL},   0, 0, S_REDSPRINGBALL5), // S_REDSPRINGBALL4
+	STATE(SPR_RSPB, 1,  1, {NULL},   0, 0, S_REDSPRINGBALL),  // S_REDSPRINGBALL5
 
 	// Small Firebar
-	{SPR_SFBR, FF_FULLBRIGHT,     1, {NULL},            0, 0, S_SMALLFIREBAR2},  // S_SMALLFIREBAR1
-	{SPR_SFBR, FF_FULLBRIGHT| 1,  1, {NULL},            0, 0, S_SMALLFIREBAR3},  // S_SMALLFIREBAR2
-	{SPR_SFBR, FF_FULLBRIGHT| 2,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR4},  // S_SMALLFIREBAR3
-	{SPR_SFBR, FF_FULLBRIGHT| 3,  1, {NULL},            0, 0, S_SMALLFIREBAR5},  // S_SMALLFIREBAR4
-	{SPR_SFBR, FF_FULLBRIGHT| 4,  1, {NULL},            0, 0, S_SMALLFIREBAR6},  // S_SMALLFIREBAR5
-	{SPR_SFBR, FF_FULLBRIGHT| 5,  1, {NULL},            0, 0, S_SMALLFIREBAR7},  // S_SMALLFIREBAR6
-	{SPR_SFBR, FF_FULLBRIGHT| 6,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR8},  // S_SMALLFIREBAR7
-	{SPR_SFBR, FF_FULLBRIGHT| 7,  1, {NULL},            0, 0, S_SMALLFIREBAR9},  // S_SMALLFIREBAR8
-	{SPR_SFBR, FF_FULLBRIGHT| 8,  1, {NULL},            0, 0, S_SMALLFIREBAR10}, // S_SMALLFIREBAR9
-	{SPR_SFBR, FF_FULLBRIGHT| 9,  1, {NULL},            0, 0, S_SMALLFIREBAR11}, // S_SMALLFIREBAR10
-	{SPR_SFBR, FF_FULLBRIGHT|10,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR12}, // S_SMALLFIREBAR11
-	{SPR_SFBR, FF_FULLBRIGHT|11,  1, {NULL},            0, 0, S_SMALLFIREBAR13}, // S_SMALLFIREBAR12
-	{SPR_SFBR, FF_FULLBRIGHT|12,  1, {NULL},            0, 0, S_SMALLFIREBAR14}, // S_SMALLFIREBAR13
-	{SPR_SFBR, FF_FULLBRIGHT|13,  1, {NULL},            0, 0, S_SMALLFIREBAR15}, // S_SMALLFIREBAR14
-	{SPR_SFBR, FF_FULLBRIGHT|14,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR16}, // S_SMALLFIREBAR15
-	{SPR_SFBR, FF_FULLBRIGHT|15,  1, {NULL},            0, 0, S_SMALLFIREBAR1},  // S_SMALLFIREBAR16
+	STATE(SPR_SFBR, FF_FULLBRIGHT,     1, {NULL},            0, 0, S_SMALLFIREBAR2),  // S_SMALLFIREBAR1
+	STATE(SPR_SFBR, FF_FULLBRIGHT| 1,  1, {NULL},            0, 0, S_SMALLFIREBAR3),  // S_SMALLFIREBAR2
+	STATE(SPR_SFBR, FF_FULLBRIGHT| 2,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR4),  // S_SMALLFIREBAR3
+	STATE(SPR_SFBR, FF_FULLBRIGHT| 3,  1, {NULL},            0, 0, S_SMALLFIREBAR5),  // S_SMALLFIREBAR4
+	STATE(SPR_SFBR, FF_FULLBRIGHT| 4,  1, {NULL},            0, 0, S_SMALLFIREBAR6),  // S_SMALLFIREBAR5
+	STATE(SPR_SFBR, FF_FULLBRIGHT| 5,  1, {NULL},            0, 0, S_SMALLFIREBAR7),  // S_SMALLFIREBAR6
+	STATE(SPR_SFBR, FF_FULLBRIGHT| 6,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR8),  // S_SMALLFIREBAR7
+	STATE(SPR_SFBR, FF_FULLBRIGHT| 7,  1, {NULL},            0, 0, S_SMALLFIREBAR9),  // S_SMALLFIREBAR8
+	STATE(SPR_SFBR, FF_FULLBRIGHT| 8,  1, {NULL},            0, 0, S_SMALLFIREBAR10), // S_SMALLFIREBAR9
+	STATE(SPR_SFBR, FF_FULLBRIGHT| 9,  1, {NULL},            0, 0, S_SMALLFIREBAR11), // S_SMALLFIREBAR10
+	STATE(SPR_SFBR, FF_FULLBRIGHT|10,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR12), // S_SMALLFIREBAR11
+	STATE(SPR_SFBR, FF_FULLBRIGHT|11,  1, {NULL},            0, 0, S_SMALLFIREBAR13), // S_SMALLFIREBAR12
+	STATE(SPR_SFBR, FF_FULLBRIGHT|12,  1, {NULL},            0, 0, S_SMALLFIREBAR14), // S_SMALLFIREBAR13
+	STATE(SPR_SFBR, FF_FULLBRIGHT|13,  1, {NULL},            0, 0, S_SMALLFIREBAR15), // S_SMALLFIREBAR14
+	STATE(SPR_SFBR, FF_FULLBRIGHT|14,  1, {A_FlameParticle}, 0, 0, S_SMALLFIREBAR16), // S_SMALLFIREBAR15
+	STATE(SPR_SFBR, FF_FULLBRIGHT|15,  1, {NULL},            0, 0, S_SMALLFIREBAR1),  // S_SMALLFIREBAR16
 
 	// Big Firebar
-	{SPR_BFBR, FF_FULLBRIGHT,     1, {NULL},            0, 0, S_BIGFIREBAR2},  // S_BIGFIREBAR1
-	{SPR_BFBR, FF_FULLBRIGHT| 1,  1, {NULL},            0, 0, S_BIGFIREBAR3},  // S_BIGFIREBAR2
-	{SPR_BFBR, FF_FULLBRIGHT| 2,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR4},  // S_BIGFIREBAR3
-	{SPR_BFBR, FF_FULLBRIGHT| 3,  1, {NULL},            0, 0, S_BIGFIREBAR5},  // S_BIGFIREBAR4
-	{SPR_BFBR, FF_FULLBRIGHT| 4,  1, {NULL},            0, 0, S_BIGFIREBAR6},  // S_BIGFIREBAR5
-	{SPR_BFBR, FF_FULLBRIGHT| 5,  1, {NULL},            0, 0, S_BIGFIREBAR7},  // S_BIGFIREBAR6
-	{SPR_BFBR, FF_FULLBRIGHT| 6,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR8},  // S_BIGFIREBAR7
-	{SPR_BFBR, FF_FULLBRIGHT| 7,  1, {NULL},            0, 0, S_BIGFIREBAR9},  // S_BIGFIREBAR8
-	{SPR_BFBR, FF_FULLBRIGHT| 8,  1, {NULL},            0, 0, S_BIGFIREBAR10}, // S_BIGFIREBAR9
-	{SPR_BFBR, FF_FULLBRIGHT| 9,  1, {NULL},            0, 0, S_BIGFIREBAR11}, // S_BIGFIREBAR10
-	{SPR_BFBR, FF_FULLBRIGHT|10,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR12}, // S_BIGFIREBAR11
-	{SPR_BFBR, FF_FULLBRIGHT|11,  1, {NULL},            0, 0, S_BIGFIREBAR13}, // S_BIGFIREBAR12
-	{SPR_BFBR, FF_FULLBRIGHT|12,  1, {NULL},            0, 0, S_BIGFIREBAR14}, // S_BIGFIREBAR13
-	{SPR_BFBR, FF_FULLBRIGHT|13,  1, {NULL},            0, 0, S_BIGFIREBAR15}, // S_BIGFIREBAR14
-	{SPR_BFBR, FF_FULLBRIGHT|14,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR16}, // S_BIGFIREBAR15
-	{SPR_BFBR, FF_FULLBRIGHT|15,  1, {NULL},            0, 0, S_BIGFIREBAR1},  // S_BIGFIREBAR16
+	STATE(SPR_BFBR, FF_FULLBRIGHT,     1, {NULL},            0, 0, S_BIGFIREBAR2),  // S_BIGFIREBAR1
+	STATE(SPR_BFBR, FF_FULLBRIGHT| 1,  1, {NULL},            0, 0, S_BIGFIREBAR3),  // S_BIGFIREBAR2
+	STATE(SPR_BFBR, FF_FULLBRIGHT| 2,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR4),  // S_BIGFIREBAR3
+	STATE(SPR_BFBR, FF_FULLBRIGHT| 3,  1, {NULL},            0, 0, S_BIGFIREBAR5),  // S_BIGFIREBAR4
+	STATE(SPR_BFBR, FF_FULLBRIGHT| 4,  1, {NULL},            0, 0, S_BIGFIREBAR6),  // S_BIGFIREBAR5
+	STATE(SPR_BFBR, FF_FULLBRIGHT| 5,  1, {NULL},            0, 0, S_BIGFIREBAR7),  // S_BIGFIREBAR6
+	STATE(SPR_BFBR, FF_FULLBRIGHT| 6,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR8),  // S_BIGFIREBAR7
+	STATE(SPR_BFBR, FF_FULLBRIGHT| 7,  1, {NULL},            0, 0, S_BIGFIREBAR9),  // S_BIGFIREBAR8
+	STATE(SPR_BFBR, FF_FULLBRIGHT| 8,  1, {NULL},            0, 0, S_BIGFIREBAR10), // S_BIGFIREBAR9
+	STATE(SPR_BFBR, FF_FULLBRIGHT| 9,  1, {NULL},            0, 0, S_BIGFIREBAR11), // S_BIGFIREBAR10
+	STATE(SPR_BFBR, FF_FULLBRIGHT|10,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR12), // S_BIGFIREBAR11
+	STATE(SPR_BFBR, FF_FULLBRIGHT|11,  1, {NULL},            0, 0, S_BIGFIREBAR13), // S_BIGFIREBAR12
+	STATE(SPR_BFBR, FF_FULLBRIGHT|12,  1, {NULL},            0, 0, S_BIGFIREBAR14), // S_BIGFIREBAR13
+	STATE(SPR_BFBR, FF_FULLBRIGHT|13,  1, {NULL},            0, 0, S_BIGFIREBAR15), // S_BIGFIREBAR14
+	STATE(SPR_BFBR, FF_FULLBRIGHT|14,  1, {A_FlameParticle}, 0, 0, S_BIGFIREBAR16), // S_BIGFIREBAR15
+	STATE(SPR_BFBR, FF_FULLBRIGHT|15,  1, {NULL},            0, 0, S_BIGFIREBAR1),  // S_BIGFIREBAR16
 
-	{SPR_FWR4, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CEZFLOWER
-	{SPR_BANR, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CEZPOLE
+	STATE(SPR_FWR4, 0, -1, {NULL}, 0, 0, S_NULL), // S_CEZFLOWER
+	STATE(SPR_BANR, 0, -1, {NULL}, 0, 0, S_NULL), // S_CEZPOLE
 
-	{SPR_BANR, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL}, // S_CEZBANNER1
-	{SPR_BANR, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL}, // S_CEZBANNER2
+	STATE(SPR_BANR, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL), // S_CEZBANNER1
+	STATE(SPR_BANR, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL), // S_CEZBANNER2
 
-	{SPR_PINE, 0, -1, {NULL}, 0, 0, S_NULL}, // S_PINETREE
-	{SPR_CEZB, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CEZBUSH1
-	{SPR_CEZB, 1, -1, {NULL}, 0, 0, S_NULL}, // S_CEZBUSH2
+	STATE(SPR_PINE, 0, -1, {NULL}, 0, 0, S_NULL), // S_PINETREE
+	STATE(SPR_CEZB, 0, -1, {NULL}, 0, 0, S_NULL), // S_CEZBUSH1
+	STATE(SPR_CEZB, 1, -1, {NULL}, 0, 0, S_NULL), // S_CEZBUSH2
 
-	{SPR_CNDL, FF_FULLBRIGHT,   -1, {NULL}, 0, 0, S_NULL}, // S_CANDLE
-	{SPR_CNDL, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL}, // S_CANDLEPRICKET
+	STATE(SPR_CNDL, FF_FULLBRIGHT,   -1, {NULL}, 0, 0, S_NULL), // S_CANDLE
+	STATE(SPR_CNDL, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL), // S_CANDLEPRICKET
 
-	{SPR_FLMH, 0, -1, {NULL}, 0, 0, S_NULL}, // S_FLAMEHOLDER
+	STATE(SPR_FLMH, 0, -1, {NULL}, 0, 0, S_NULL), // S_FLAMEHOLDER
 
-	{SPR_CTRC, FF_FULLBRIGHT|FF_ANIMATE, 8*3, {A_FlameParticle}, 3, 3, S_FIRETORCH}, // S_FIRETORCH
+	STATE(SPR_CTRC, FF_FULLBRIGHT|FF_ANIMATE, 8*3, {A_FlameParticle}, 3, 3, S_FIRETORCH), // S_FIRETORCH
 
-	{SPR_CFLG,                0, -1, {NULL}, 0, 0, S_NULL}, // S_WAVINGFLAG
-	{SPR_CFLG, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL}, // S_WAVINGFLAGSEG1
-	{SPR_CFLG, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL}, // S_WAVINGFLAGSEG2
+	STATE(SPR_CFLG,                0, -1, {NULL}, 0, 0, S_NULL), // S_WAVINGFLAG
+	STATE(SPR_CFLG, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL), // S_WAVINGFLAGSEG1
+	STATE(SPR_CFLG, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL), // S_WAVINGFLAGSEG2
 
-	{SPR_CSTA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CRAWLASTATUE
+	STATE(SPR_CSTA, 0, -1, {NULL}, 0, 0, S_NULL), // S_CRAWLASTATUE
 
-	{SPR_CBBS, 0, -1, {NULL}, 0, 0, S_NULL}, // S_FACESTABBERSTATUE
+	STATE(SPR_CBBS, 0, -1, {NULL}, 0, 0, S_NULL), // S_FACESTABBERSTATUE
 
-	{SPR_CBBS, 0, 5, {A_Look}, 768*FRACUNIT, 0, S_SUSPICIOUSFACESTABBERSTATUE_WAIT},   // S_SUSPICIOUSFACESTABBERSTATUE_WAIT
-	{SPR_CBBS, FF_ANIMATE, 23, {NULL},    6, 1, S_SUSPICIOUSFACESTABBERSTATUE_BURST2}, // S_SUSPICIOUSFACESTABBERSTATUE_BURST1
-	{SPR_NULL, 0, 40, {A_StatueBurst}, MT_FACESTABBER, S_FACESTABBER_CHARGE2, S_NULL}, // S_SUSPICIOUSFACESTABBERSTATUE_BURST2
+	STATE(SPR_CBBS, 0, 5, {A_Look}, 768*FRACUNIT, 0, S_SUSPICIOUSFACESTABBERSTATUE_WAIT),   // S_SUSPICIOUSFACESTABBERSTATUE_WAIT
+	STATE(SPR_CBBS, FF_ANIMATE, 23, {NULL},    6, 1, S_SUSPICIOUSFACESTABBERSTATUE_BURST2), // S_SUSPICIOUSFACESTABBERSTATUE_BURST1
+	STATE(SPR_NULL, 0, 40, {A_StatueBurst}, MT_FACESTABBER, S_FACESTABBER_CHARGE2, S_NULL), // S_SUSPICIOUSFACESTABBERSTATUE_BURST2
 
-	{SPR_CABR, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BRAMBLES
+	STATE(SPR_CABR, 0, -1, {NULL}, 0, 0, S_NULL), // S_BRAMBLES
 
 	// Big Tumbleweed
-	{SPR_BTBL, 0, -1, {NULL}, 0, 0, S_NULL},                // S_BIGTUMBLEWEED
-	{SPR_BTBL, 0,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL2}, // S_BIGTUMBLEWEED_ROLL1
-	{SPR_BTBL, 1,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL3}, // S_BIGTUMBLEWEED_ROLL2
-	{SPR_BTBL, 2,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL4}, // S_BIGTUMBLEWEED_ROLL3
-	{SPR_BTBL, 3,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL5}, // S_BIGTUMBLEWEED_ROLL4
-	{SPR_BTBL, 4,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL6}, // S_BIGTUMBLEWEED_ROLL5
-	{SPR_BTBL, 5,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL7}, // S_BIGTUMBLEWEED_ROLL6
-	{SPR_BTBL, 6,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL8}, // S_BIGTUMBLEWEED_ROLL7
-	{SPR_BTBL, 7,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL1}, // S_BIGTUMBLEWEED_ROLL8
+	STATE(SPR_BTBL, 0, -1, {NULL}, 0, 0, S_NULL),                // S_BIGTUMBLEWEED
+	STATE(SPR_BTBL, 0,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL2), // S_BIGTUMBLEWEED_ROLL1
+	STATE(SPR_BTBL, 1,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL3), // S_BIGTUMBLEWEED_ROLL2
+	STATE(SPR_BTBL, 2,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL4), // S_BIGTUMBLEWEED_ROLL3
+	STATE(SPR_BTBL, 3,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL5), // S_BIGTUMBLEWEED_ROLL4
+	STATE(SPR_BTBL, 4,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL6), // S_BIGTUMBLEWEED_ROLL5
+	STATE(SPR_BTBL, 5,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL7), // S_BIGTUMBLEWEED_ROLL6
+	STATE(SPR_BTBL, 6,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL8), // S_BIGTUMBLEWEED_ROLL7
+	STATE(SPR_BTBL, 7,  5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL1), // S_BIGTUMBLEWEED_ROLL8
 
 	// Little Tumbleweed
-	{SPR_STBL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_LITTLETUMBLEWEED
-	{SPR_STBL, 0, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL2}, // S_LITTLETUMBLEWEED_ROLL1
-	{SPR_STBL, 1, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL3}, // S_LITTLETUMBLEWEED_ROLL2
-	{SPR_STBL, 2, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL4}, // S_LITTLETUMBLEWEED_ROLL3
-	{SPR_STBL, 3, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL5}, // S_LITTLETUMBLEWEED_ROLL4
-	{SPR_STBL, 4, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL6}, // S_LITTLETUMBLEWEED_ROLL5
-	{SPR_STBL, 5, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL7}, // S_LITTLETUMBLEWEED_ROLL6
-	{SPR_STBL, 6, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL8}, // S_LITTLETUMBLEWEED_ROLL7
-	{SPR_STBL, 7, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL1}, // S_LITTLETUMBLEWEED_ROLL8
+	STATE(SPR_STBL, 0, -1, {NULL}, 0, 0, S_NULL), // S_LITTLETUMBLEWEED
+	STATE(SPR_STBL, 0, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL2), // S_LITTLETUMBLEWEED_ROLL1
+	STATE(SPR_STBL, 1, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL3), // S_LITTLETUMBLEWEED_ROLL2
+	STATE(SPR_STBL, 2, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL4), // S_LITTLETUMBLEWEED_ROLL3
+	STATE(SPR_STBL, 3, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL5), // S_LITTLETUMBLEWEED_ROLL4
+	STATE(SPR_STBL, 4, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL6), // S_LITTLETUMBLEWEED_ROLL5
+	STATE(SPR_STBL, 5, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL7), // S_LITTLETUMBLEWEED_ROLL6
+	STATE(SPR_STBL, 6, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL8), // S_LITTLETUMBLEWEED_ROLL7
+	STATE(SPR_STBL, 7, 5, {NULL}, 0, 0, S_LITTLETUMBLEWEED_ROLL1), // S_LITTLETUMBLEWEED_ROLL8
 
 	// Cacti
-	{SPR_CACT, 0, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL}, // S_CACTI1
-	{SPR_CACT, 1, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL}, // S_CACTI2
-	{SPR_CACT, 2, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL}, // S_CACTI3
-	{SPR_CACT, 3, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL}, // S_CACTI4
-	{SPR_CACT, 4, -1, {NULL}, 0, 0, S_NULL}, // S_CACTI5
-	{SPR_CACT, 5, -1, {NULL}, 0, 0, S_NULL}, // S_CACTI6
-	{SPR_CACT, 6, -1, {NULL}, 0, 0, S_NULL}, // S_CACTI7
-	{SPR_CACT, 7, -1, {NULL}, 0, 0, S_NULL}, // S_CACTI8
-	{SPR_CACT, 8, -1, {NULL}, 0, 0, S_NULL}, // S_CACTI9
-	{SPR_CACT, 9, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL}, // S_CACTI10
-	{SPR_CACT, 10, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL}, // S_CACTI11
-	{SPR_CACT, 11, -1, {NULL}, 0, 0, S_NULL}, // S_CACTITINYSEG
-	{SPR_CACT, 12, -1, {NULL}, 0, 0, S_NULL}, // S_CACTISMALLSEG
+	STATE(SPR_CACT, 0, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL), // S_CACTI1
+	STATE(SPR_CACT, 1, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL), // S_CACTI2
+	STATE(SPR_CACT, 2, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL), // S_CACTI3
+	STATE(SPR_CACT, 3, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL), // S_CACTI4
+	STATE(SPR_CACT, 4, -1, {NULL}, 0, 0, S_NULL), // S_CACTI5
+	STATE(SPR_CACT, 5, -1, {NULL}, 0, 0, S_NULL), // S_CACTI6
+	STATE(SPR_CACT, 6, -1, {NULL}, 0, 0, S_NULL), // S_CACTI7
+	STATE(SPR_CACT, 7, -1, {NULL}, 0, 0, S_NULL), // S_CACTI8
+	STATE(SPR_CACT, 8, -1, {NULL}, 0, 0, S_NULL), // S_CACTI9
+	STATE(SPR_CACT, 9, -1, {A_ConnectToGround}, MT_CACTITINYSEG, 0, S_NULL), // S_CACTI10
+	STATE(SPR_CACT, 10, -1, {A_ConnectToGround}, MT_CACTISMALLSEG, 0, S_NULL), // S_CACTI11
+	STATE(SPR_CACT, 11, -1, {NULL}, 0, 0, S_NULL), // S_CACTITINYSEG
+	STATE(SPR_CACT, 12, -1, {NULL}, 0, 0, S_NULL), // S_CACTISMALLSEG
 
 	// Warning Signs
-	{SPR_WWSG, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_ARIDSIGN_CAUTION
-	{SPR_WWS2, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_ARIDSIGN_CACTI
-	{SPR_WWS3, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_ARIDSIGN_SHARPTURN
+	STATE(SPR_WWSG, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_ARIDSIGN_CAUTION
+	STATE(SPR_WWS2, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_ARIDSIGN_CACTI
+	STATE(SPR_WWS3, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_ARIDSIGN_SHARPTURN
 
 	// Oil lamp
-	{SPR_OILL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_OILLAMP
-	{SPR_OILF, FF_TRANS90|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_OILLAMPFLARE
+	STATE(SPR_OILL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_OILLAMP
+	STATE(SPR_OILF, FF_TRANS90|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_OILLAMPFLARE
 
 	// TNT barrel
-	{SPR_BARR, 0, -1, {NULL}, 0, 0, S_NULL}, // S_TNTBARREL_STND1
-	{SPR_BARX, 0, 0, {A_RollAngle}, 0, 1, S_TNTBARREL_EXPL2}, // S_TNTBARREL_EXPL1
-	{SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_TNTBARREL_EXPL3}, // S_TNTBARREL_EXPL2
-	{SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_TNTExplode}, MT_TNTDUST, 0, S_TNTBARREL_EXPL4}, // S_TNTBARREL_EXPL3
-	{SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_TNTBARREL_EXPL5}, // S_TNTBARREL_EXPL4
-	{SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL6}, // S_TNTBARREL_EXPL5
-	{SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL7}, // S_TNTBARREL_EXPL6
-	{SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL}, // S_TNTBARREL_EXPL7
+	STATE(SPR_BARR, 0, -1, {NULL}, 0, 0, S_NULL), // S_TNTBARREL_STND1
+	STATE(SPR_BARX, 0, 0, {A_RollAngle}, 0, 1, S_TNTBARREL_EXPL2), // S_TNTBARREL_EXPL1
+	STATE(SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_TNTBARREL_EXPL3), // S_TNTBARREL_EXPL2
+	STATE(SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_TNTExplode}, MT_TNTDUST, 0, S_TNTBARREL_EXPL4), // S_TNTBARREL_EXPL3
+	STATE(SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_TNTBARREL_EXPL5), // S_TNTBARREL_EXPL4
+	STATE(SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL6), // S_TNTBARREL_EXPL5
+	STATE(SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_TNTBARREL_EXPL7), // S_TNTBARREL_EXPL6
+	STATE(SPR_NULL, 0, 35, {NULL}, 0, 0, S_NULL), // S_TNTBARREL_EXPL7
 #ifndef ROTSPRITE
-	{SPR_BARR, 1|FF_ANIMATE, -1, {NULL}, 7, 2, S_NULL}, // S_TNTBARREL_FLYING
+	STATE(SPR_BARR, 1|FF_ANIMATE, -1, {NULL}, 7, 2, S_NULL), // S_TNTBARREL_FLYING
 #else
-	{SPR_BARR, 1, 1, {A_RollAngle}, 14, 0, S_TNTBARREL_FLYING}, // S_TNTBARREL_FLYING
+	STATE(SPR_BARR, 1, 1, {A_RollAngle}, 14, 0, S_TNTBARREL_FLYING), // S_TNTBARREL_FLYING
 #endif
 
 	// TNT proximity shell
-	{SPR_REMT, 0, 10, {A_Look}, 33554433, 0, S_PROXIMITY_TNT}, // S_PROXIMITY_TNT
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER2}, // S_PROXIMITY_TNT_TRIGGER1
-	{SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER3}, // S_PROXIMITY_TNT_TRIGGER2
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER4}, // S_PROXIMITY_TNT_TRIGGER3
-	{SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER5}, // S_PROXIMITY_TNT_TRIGGER4
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER6}, // S_PROXIMITY_TNT_TRIGGER5
-	{SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER7}, // S_PROXIMITY_TNT_TRIGGER6
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER8}, // S_PROXIMITY_TNT_TRIGGER7
-	{SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER9}, // S_PROXIMITY_TNT_TRIGGER8
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER10}, // S_PROXIMITY_TNT_TRIGGER9
-	{SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER11}, // S_PROXIMITY_TNT_TRIGGER10
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER12}, // S_PROXIMITY_TNT_TRIGGER11
-	{SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER13}, // S_PROXIMITY_TNT_TRIGGER12
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER14}, // S_PROXIMITY_TNT_TRIGGER13
-	{SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER15}, // S_PROXIMITY_TNT_TRIGGER14
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER16}, // S_PROXIMITY_TNT_TRIGGER15
-	{SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER17}, // S_PROXIMITY_TNT_TRIGGER16
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER18}, // S_PROXIMITY_TNT_TRIGGER17
-	{SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER19}, // S_PROXIMITY_TNT_TRIGGER18
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER20}, // S_PROXIMITY_TNT_TRIGGER19
-	{SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER21}, // S_PROXIMITY_TNT_TRIGGER20
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER22}, // S_PROXIMITY_TNT_TRIGGER21
-	{SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER23}, // S_PROXIMITY_TNT_TRIGGER22
-	{SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_TNTBARREL_EXPL1}, // S_PROXIMITY_TNT_TRIGGER23
+	STATE(SPR_REMT, 0, 10, {A_Look}, 33554433, 0, S_PROXIMITY_TNT), // S_PROXIMITY_TNT
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER2), // S_PROXIMITY_TNT_TRIGGER1
+	STATE(SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER3), // S_PROXIMITY_TNT_TRIGGER2
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER4), // S_PROXIMITY_TNT_TRIGGER3
+	STATE(SPR_REMT, 0, 16, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER5), // S_PROXIMITY_TNT_TRIGGER4
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER6), // S_PROXIMITY_TNT_TRIGGER5
+	STATE(SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER7), // S_PROXIMITY_TNT_TRIGGER6
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER8), // S_PROXIMITY_TNT_TRIGGER7
+	STATE(SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER9), // S_PROXIMITY_TNT_TRIGGER8
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER10), // S_PROXIMITY_TNT_TRIGGER9
+	STATE(SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER11), // S_PROXIMITY_TNT_TRIGGER10
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER12), // S_PROXIMITY_TNT_TRIGGER11
+	STATE(SPR_REMT, 0, 4, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER13), // S_PROXIMITY_TNT_TRIGGER12
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER14), // S_PROXIMITY_TNT_TRIGGER13
+	STATE(SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER15), // S_PROXIMITY_TNT_TRIGGER14
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER16), // S_PROXIMITY_TNT_TRIGGER15
+	STATE(SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER17), // S_PROXIMITY_TNT_TRIGGER16
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER18), // S_PROXIMITY_TNT_TRIGGER17
+	STATE(SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER19), // S_PROXIMITY_TNT_TRIGGER18
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER20), // S_PROXIMITY_TNT_TRIGGER19
+	STATE(SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER21), // S_PROXIMITY_TNT_TRIGGER20
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_PROXIMITY_TNT_TRIGGER22), // S_PROXIMITY_TNT_TRIGGER21
+	STATE(SPR_REMT, 0, 2, {NULL}, 0, 0, S_PROXIMITY_TNT_TRIGGER23), // S_PROXIMITY_TNT_TRIGGER22
+	STATE(SPR_REMT, 1|FF_FULLBRIGHT, 1, {A_PlayActiveSound}, 0, 0, S_TNTBARREL_EXPL1), // S_PROXIMITY_TNT_TRIGGER23
 
 	// Dust devil
-	{SPR_NULL, 0, 1, {A_DustDevilThink}, 0, 0, S_DUSTDEVIL}, //S_DUSTDEVIL
-	{SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 2 * TICRATE, {NULL}, 0, 0, S_DUSTLAYER2}, // S_DUSTLAYER1
-	{SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 5, {NULL}, 0, 0, S_DUSTLAYER3}, // S_DUSTLAYER2
-	{SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER4}, // S_DUSTLAYER3
-	{SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER5}, // S_DUSTLAYER4
-	{SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS90, 5, {NULL}, 0, 0, S_NULL}, // S_DUSTLAYER5
-	{SPR_ADST, 0|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL}, // S_ARIDDUST1
-	{SPR_ADST, 3|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL}, // S_ARIDDUST2
-	{SPR_ADST, 6|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL}, // S_ARIDDUST3
+	STATE(SPR_NULL, 0, 1, {A_DustDevilThink}, 0, 0, S_DUSTDEVIL), //S_DUSTDEVIL
+	STATE(SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 2 * TICRATE, {NULL}, 0, 0, S_DUSTLAYER2), // S_DUSTLAYER1
+	STATE(SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS70, 5, {NULL}, 0, 0, S_DUSTLAYER3), // S_DUSTLAYER2
+	STATE(SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER4), // S_DUSTLAYER3
+	STATE(SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS80, 5, {NULL}, 0, 0, S_DUSTLAYER5), // S_DUSTLAYER4
+	STATE(SPR_TAZD, 1|FF_PAPERSPRITE|FF_TRANS90, 5, {NULL}, 0, 0, S_NULL), // S_DUSTLAYER5
+	STATE(SPR_ADST, 0|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL), // S_ARIDDUST1
+	STATE(SPR_ADST, 3|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL), // S_ARIDDUST2
+	STATE(SPR_ADST, 6|FF_ANIMATE, 24, {NULL}, 3, 8, S_NULL), // S_ARIDDUST3
 
 	// Minecart
-	{SPR_NULL, 0,                            1, {NULL},                 0, 0, S_MINECART_IDLE},   // S_MINECART_IDLE
-	{SPR_NULL, 0,                            0, {A_KillSegments},       0, 0, S_TNTBARREL_EXPL4}, // S_MINECART_DTH1
-	{SPR_MCRT, 8|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL},            // S_MINECARTEND
-	{SPR_MCRT, 0|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL},            // S_MINECARTSEG_FRONT
-	{SPR_MCRT, 1|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL},            // S_MINECARTSEG_BACK
-	{SPR_MCRT, 2|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL},                 2, 3, S_NULL},            // S_MINECARTSEG_LEFT
-	{SPR_MCRT, 5|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL},                 2, 3, S_NULL},            // S_MINECARTSEG_RIGHT
-	{SPR_LCKN, 2|FF_FULLBRIGHT,              2, {NULL},                 0, 0, S_NULL},            // S_MINECARTSIDEMARK1
-	{SPR_LCKN, 0|FF_FULLBRIGHT,              2, {NULL},                 0, 0, S_NULL},            // S_MINECARTSIDEMARK2
-	{SPR_MCSP, FF_FULLBRIGHT,                1, {A_MinecartSparkThink}, 0, 0, S_MINECARTSPARK},   // S_MINECARTSPARK
+	STATE(SPR_NULL, 0,                            1, {NULL},                 0, 0, S_MINECART_IDLE),   // S_MINECART_IDLE
+	STATE(SPR_NULL, 0,                            0, {A_KillSegments},       0, 0, S_TNTBARREL_EXPL4), // S_MINECART_DTH1
+	STATE(SPR_MCRT, 8|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL),            // S_MINECARTEND
+	STATE(SPR_MCRT, 0|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL),            // S_MINECARTSEG_FRONT
+	STATE(SPR_MCRT, 1|FF_PAPERSPRITE,            -1, {NULL},                 0, 0, S_NULL),            // S_MINECARTSEG_BACK
+	STATE(SPR_MCRT, 2|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL},                 2, 3, S_NULL),            // S_MINECARTSEG_LEFT
+	STATE(SPR_MCRT, 5|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL},                 2, 3, S_NULL),            // S_MINECARTSEG_RIGHT
+	STATE(SPR_LCKN, 2|FF_FULLBRIGHT,              2, {NULL},                 0, 0, S_NULL),            // S_MINECARTSIDEMARK1
+	STATE(SPR_LCKN, 0|FF_FULLBRIGHT,              2, {NULL},                 0, 0, S_NULL),            // S_MINECARTSIDEMARK2
+	STATE(SPR_MCSP, FF_FULLBRIGHT,                1, {A_MinecartSparkThink}, 0, 0, S_MINECARTSPARK),   // S_MINECARTSPARK
 
 	// Saloon door
-	{SPR_SALD, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_SALOONDOOR
-	{SPR_NULL, 0, -1, {A_SaloonDoorSpawn}, MT_SALOONDOOR, 48, S_NULL}, // S_SALOONDOORCENTER
+	STATE(SPR_SALD, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_SALOONDOOR
+	STATE(SPR_NULL, 0, -1, {A_SaloonDoorSpawn}, MT_SALOONDOOR, 48, S_NULL), // S_SALOONDOORCENTER
 
 	// Train cameo
-	{SPR_NULL, 0, -1, {NULL}, 0, 0, S_TRAINCAMEOSPAWNER_2}, // S_TRAINCAMEOSPAWNER_1
-	{SPR_NULL, 0, 14, {A_TrainCameo}, 20, 18, S_TRAINCAMEOSPAWNER_3}, // S_TRAINCAMEOSPAWNER_2
-	{SPR_NULL, 0, 1, {A_Repeat}, 1, 0, S_TRAINCAMEOSPAWNER_4}, // S_TRAINCAMEOSPAWNER_3
-	{SPR_NULL, 0, 18, {A_TrainCameo2}, 20, 44, S_TRAINCAMEOSPAWNER_5}, // S_TRAINCAMEOSPAWNER_4
-	{SPR_NULL, 0, 1, {A_Repeat}, 5, S_TRAINCAMEOSPAWNER_4, S_NULL}, // S_TRAINCAMEOSPAWNER_5
-	{SPR_NULL, 0, 2, {A_SmokeTrailer}, MT_SMOKE, 0, S_TRAINPUFFMAKER}, // S_TRAINPUFFMAKER
+	STATE(SPR_NULL, 0, -1, {NULL}, 0, 0, S_TRAINCAMEOSPAWNER_2), // S_TRAINCAMEOSPAWNER_1
+	STATE(SPR_NULL, 0, 14, {A_TrainCameo}, 20, 18, S_TRAINCAMEOSPAWNER_3), // S_TRAINCAMEOSPAWNER_2
+	STATE(SPR_NULL, 0, 1, {A_Repeat}, 1, 0, S_TRAINCAMEOSPAWNER_4), // S_TRAINCAMEOSPAWNER_3
+	STATE(SPR_NULL, 0, 18, {A_TrainCameo2}, 20, 44, S_TRAINCAMEOSPAWNER_5), // S_TRAINCAMEOSPAWNER_4
+	STATE(SPR_NULL, 0, 1, {A_Repeat}, 5, S_TRAINCAMEOSPAWNER_4, S_NULL), // S_TRAINCAMEOSPAWNER_5
+	STATE(SPR_NULL, 0, 2, {A_SmokeTrailer}, MT_SMOKE, 0, S_TRAINPUFFMAKER), // S_TRAINPUFFMAKER
 
-	{SPR_ADST, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL}, // S_TRAINDUST
-	{SPR_STEA, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL}, // S_TRAINSTEAM
+	STATE(SPR_ADST, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL), // S_TRAINDUST
+	STATE(SPR_STEA, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL), // S_TRAINSTEAM
 
 	// Flame jet
-	{SPR_NULL, 0, 2*TICRATE, {NULL},             0, 0, S_FLAMEJETSTART}, // S_FLAMEJETSTND
-	{SPR_NULL, 0, 3*TICRATE, {A_ToggleFlameJet}, 0, 0,  S_FLAMEJETSTOP}, // S_FLAMEJETSTART
-	{SPR_NULL, 0,         1, {A_ToggleFlameJet}, 0, 0,  S_FLAMEJETSTND}, // S_FLAMEJETSTOP
-	{SPR_FLME, FF_FULLBRIGHT  ,  4, {NULL}, 0, 0, S_FLAMEJETFLAME2}, // S_FLAMEJETFLAME1
-	{SPR_FLME, FF_FULLBRIGHT|1,  5, {NULL}, 0, 0, S_FLAMEJETFLAME3}, // S_FLAMEJETFLAME2
-	{SPR_FLME, FF_FULLBRIGHT|2, 11, {NULL}, 0, 0,           S_NULL}, // S_FLAMEJETFLAME3
-	{SPR_FLME, FF_FULLBRIGHT|3,  4, {NULL}, 0, 0, S_FLAMEJETFLAME5}, // S_FLAMEJETFLAME4
-	{SPR_FLME, FF_FULLBRIGHT|4,  5, {NULL}, 0, 0, S_FLAMEJETFLAME6}, // S_FLAMEJETFLAME5
-	{SPR_FLME, FF_FULLBRIGHT|5, 11, {NULL}, 0, 0,           S_NULL}, // S_FLAMEJETFLAME6
-	{SPR_FLME, FF_FULLBRIGHT|6,  4, {NULL}, 0, 0, S_FLAMEJETFLAME8}, // S_FLAMEJETFLAME7
-	{SPR_FLME, FF_FULLBRIGHT|7,  5, {NULL}, 0, 0, S_FLAMEJETFLAME9}, // S_FLAMEJETFLAME8
-	{SPR_FLME, FF_FULLBRIGHT|8, 11, {NULL}, 0, 0,           S_NULL}, // S_FLAMEJETFLAME9
+	STATE(SPR_NULL, 0, 2*TICRATE, {NULL},             0, 0, S_FLAMEJETSTART), // S_FLAMEJETSTND
+	STATE(SPR_NULL, 0, 3*TICRATE, {A_ToggleFlameJet}, 0, 0,  S_FLAMEJETSTOP), // S_FLAMEJETSTART
+	STATE(SPR_NULL, 0,         1, {A_ToggleFlameJet}, 0, 0,  S_FLAMEJETSTND), // S_FLAMEJETSTOP
+	STATE(SPR_FLME, FF_FULLBRIGHT  ,  4, {NULL}, 0, 0, S_FLAMEJETFLAME2), // S_FLAMEJETFLAME1
+	STATE(SPR_FLME, FF_FULLBRIGHT|1,  5, {NULL}, 0, 0, S_FLAMEJETFLAME3), // S_FLAMEJETFLAME2
+	STATE(SPR_FLME, FF_FULLBRIGHT|2, 11, {NULL}, 0, 0,           S_NULL), // S_FLAMEJETFLAME3
+	STATE(SPR_FLME, FF_FULLBRIGHT|3,  4, {NULL}, 0, 0, S_FLAMEJETFLAME5), // S_FLAMEJETFLAME4
+	STATE(SPR_FLME, FF_FULLBRIGHT|4,  5, {NULL}, 0, 0, S_FLAMEJETFLAME6), // S_FLAMEJETFLAME5
+	STATE(SPR_FLME, FF_FULLBRIGHT|5, 11, {NULL}, 0, 0,           S_NULL), // S_FLAMEJETFLAME6
+	STATE(SPR_FLME, FF_FULLBRIGHT|6,  4, {NULL}, 0, 0, S_FLAMEJETFLAME8), // S_FLAMEJETFLAME7
+	STATE(SPR_FLME, FF_FULLBRIGHT|7,  5, {NULL}, 0, 0, S_FLAMEJETFLAME9), // S_FLAMEJETFLAME8
+	STATE(SPR_FLME, FF_FULLBRIGHT|8, 11, {NULL}, 0, 0,           S_NULL), // S_FLAMEJETFLAME9
 
 	// Spinning flame jets
 	// A: Counter-clockwise
-	{SPR_NULL, 0, 1,            {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISA2}, // S_FJSPINAXISA1
-	{SPR_NULL, 0, 2, {A_ChangeAngleRelative},                 6,         6, S_FJSPINAXISA1}, // S_FJSPINAXISA2
+	STATE(SPR_NULL, 0, 1,            {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISA2), // S_FJSPINAXISA1
+	STATE(SPR_NULL, 0, 2, {A_ChangeAngleRelative},                 6,         6, S_FJSPINAXISA1), // S_FJSPINAXISA2
 
 	// B: Clockwise
-	{SPR_NULL, 0, 1,            {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISB2}, // S_FJSPINAXISB1
-	{SPR_NULL, 0, 2, {A_ChangeAngleRelative},                -6,        -6, S_FJSPINAXISB1}, // S_FJSPINAXISB2
+	STATE(SPR_NULL, 0, 1,            {A_TrapShot}, MT_FLAMEJETFLAMEB, -(16<<16)|(1<<15)|64, S_FJSPINAXISB2), // S_FJSPINAXISB1
+	STATE(SPR_NULL, 0, 2, {A_ChangeAngleRelative},                -6,        -6, S_FJSPINAXISB1), // S_FJSPINAXISB2
 
 	// Blade's flame
-	{SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 5, S_FLAMEJETFLAMEB2}, // S_FLAMEJETFLAMEB1
-	{SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 7, S_FLAMEJETFLAMEB3}, // S_FLAMEJETFLAMEB2
-	{SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40|FF_ANIMATE, (12*7), {NULL}, 7, 12, S_NULL},  // S_FLAMEJETFLAMEB3
+	STATE(SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 5, S_FLAMEJETFLAMEB2), // S_FLAMEJETFLAMEB1
+	STATE(SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40, 1, {A_MoveRelative}, 0, 7, S_FLAMEJETFLAMEB3), // S_FLAMEJETFLAMEB2
+	STATE(SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40|FF_ANIMATE, (12*7), {NULL}, 7, 12, S_NULL),  // S_FLAMEJETFLAMEB3
 
 	// Lavafall
-	{SPR_LFAL, 5, 1, {NULL}, 0, 0, S_LAVAFALL_DORMANT}, // S_LAVAFALL_DORMANT
-	{SPR_LFAL, 6|FF_ANIMATE, 4, {A_LavafallRocks}, 1, 2, S_LAVAFALL_TELL}, // S_LAVAFALL_TELL
-	{SPR_LFAL, 9|FF_FULLBRIGHT|FF_ANIMATE, 2, {A_LavafallLava}, 1, 1, S_LAVAFALL_SHOOT}, // S_LAVAFALL_SHOOT
-	{SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA2}, // S_LAVAFALL_LAVA1
-	{SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA1}, // S_LAVAFALL_LAVA2
-	{SPR_LFAL, 2|FF_FULLBRIGHT|FF_ANIMATE, 9, {NULL}, 2, 3, S_NULL}, // S_LAVAFALL_LAVA3
-	{SPR_LFAL, 11|FF_ANIMATE|FF_RANDOMANIM, 12, {NULL}, 3, 3, S_LAVAFALLROCK}, // S_LAVAFALLROCK
+	STATE(SPR_LFAL, 5, 1, {NULL}, 0, 0, S_LAVAFALL_DORMANT), // S_LAVAFALL_DORMANT
+	STATE(SPR_LFAL, 6|FF_ANIMATE, 4, {A_LavafallRocks}, 1, 2, S_LAVAFALL_TELL), // S_LAVAFALL_TELL
+	STATE(SPR_LFAL, 9|FF_FULLBRIGHT|FF_ANIMATE, 2, {A_LavafallLava}, 1, 1, S_LAVAFALL_SHOOT), // S_LAVAFALL_SHOOT
+	STATE(SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA2), // S_LAVAFALL_LAVA1
+	STATE(SPR_LFAL, FF_FULLBRIGHT, 1, {A_FallingLavaCheck}, 0, 0, S_LAVAFALL_LAVA1), // S_LAVAFALL_LAVA2
+	STATE(SPR_LFAL, 2|FF_FULLBRIGHT|FF_ANIMATE, 9, {NULL}, 2, 3, S_NULL), // S_LAVAFALL_LAVA3
+	STATE(SPR_LFAL, 11|FF_ANIMATE|FF_RANDOMANIM, 12, {NULL}, 3, 3, S_LAVAFALLROCK), // S_LAVAFALLROCK
 
 	// Rollout Rock
-	{SPR_NULL, 0, 1, {A_RolloutSpawn}, 256*FRACUNIT, MT_ROLLOUTROCK, S_ROLLOUTSPAWN}, // S_ROLLOUTSPAWN
-	{SPR_PUMI, 0, 1, {A_RolloutRock},    63*FRACUNIT/64,  7*FRACUNIT/10,  S_ROLLOUTROCK}, // S_ROLLOUTROCK
+	STATE(SPR_NULL, 0, 1, {A_RolloutSpawn}, 256*FRACUNIT, MT_ROLLOUTROCK, S_ROLLOUTSPAWN), // S_ROLLOUTSPAWN
+	STATE(SPR_PUMI, 0, 1, {A_RolloutRock},    63*FRACUNIT/64,  7*FRACUNIT/10,  S_ROLLOUTROCK), // S_ROLLOUTROCK
 
 	// RVZ scenery
-	{SPR_JPLA, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BIGFERNLEAF
-	{SPR_JPLA, 1, 1, {NULL}, 0, 0, S_BIGFERN2}, // S_BIGFERN1
-	{SPR_JPLA, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BIGFERN2
-	{SPR_JPLA, 2, -1, {NULL}, 0, 0, S_NULL}, // S_JUNGLEPALM
-	{SPR_TFLO, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_TORCHFLOWER}, // S_TORCHFLOWER
-	{SPR_WVIN, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_WALLVINE_LONG
-	{SPR_WVIN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_WALLVINE_SHORT
+	STATE(SPR_JPLA, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_BIGFERNLEAF
+	STATE(SPR_JPLA, 1, 1, {NULL}, 0, 0, S_BIGFERN2), // S_BIGFERN1
+	STATE(SPR_JPLA, 1, -1, {NULL}, 0, 0, S_NULL), // S_BIGFERN2
+	STATE(SPR_JPLA, 2, -1, {NULL}, 0, 0, S_NULL), // S_JUNGLEPALM
+	STATE(SPR_TFLO, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_TORCHFLOWER), // S_TORCHFLOWER
+	STATE(SPR_WVIN, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_WALLVINE_LONG
+	STATE(SPR_WVIN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_WALLVINE_SHORT
 
 	// Glaregoyles
-	{SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLE_CHARGE},  // S_GLAREGOYLE
-	{SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLE_BLINK},  // S_GLAREGOYLE_CHARGE
-	{SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLE_HOLD}, // S_GLAREGOYLE_BLINK
-	{SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLE_FIRE},  // S_GLAREGOYLE_HOLD
-	{SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLE_LOOP},  // S_GLAREGOYLE_FIRE
-	{SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLE_FIRE, S_GLAREGOYLE_COOLDOWN}, // S_GLAREGOYLE_LOOP
-	{SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLE}, // S_GLAREGOYLE_COOLDOWN
-
-	{SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLEUP_CHARGE},  // S_GLAREGOYLEUP
-	{SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLEUP_BLINK},  // S_GLAREGOYLEUP_CHARGE
-	{SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLEUP_HOLD}, // S_GLAREGOYLEUP_BLINK
-	{SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLEUP_FIRE},  // S_GLAREGOYLEUP_HOLD
-	{SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_LOOP},  // S_GLAREGOYLEUP_FIRE
-	{SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLEUP_FIRE, S_GLAREGOYLEUP_COOLDOWN}, // S_GLAREGOYLEUP_LOOP
-	{SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLEUP}, // S_GLAREGOYLEUP_COOLDOWN
-
-	{SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLEDOWN_CHARGE},  // S_GLAREGOYLEDOWN
-	{SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLEDOWN_BLINK},  // S_GLAREGOYLEDOWN_CHARGE
-	{SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLEDOWN_HOLD}, // S_GLAREGOYLEDOWN_BLINK
-	{SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLEDOWN_FIRE},  // S_GLAREGOYLEDOWN_HOLD
-	{SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_LOOP},  // S_GLAREGOYLEDOWN_FIRE
-	{SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLEDOWN_FIRE, S_GLAREGOYLEDOWN_COOLDOWN}, // S_GLAREGOYLEDOWN_LOOP
-	{SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLEDOWN}, // S_GLAREGOYLEDOWN_COOLDOWN
-
-	{SPR_BGAR,            0, 90, {NULL},       0, 0, S_GLAREGOYLELONG_CHARGE},  // S_GLAREGOYLELONG
-	{SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLELONG_BLINK},  // S_GLAREGOYLELONG_CHARGE
-	{SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLELONG_HOLD}, // S_GLAREGOYLELONG_BLINK
-	{SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLELONG_FIRE},  // S_GLAREGOYLELONG_HOLD
-	{SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_LOOP},  // S_GLAREGOYLELONG_FIRE
-	{SPR_BGAR,            1,  0, {A_Repeat},   5, S_GLAREGOYLELONG_FIRE, S_GLAREGOYLELONG_COOLDOWN}, // S_GLAREGOYLELONG_LOOP
-	{SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLELONG}, // S_GLAREGOYLELONG_COOLDOWN
+	STATE(SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLE_CHARGE),  // S_GLAREGOYLE
+	STATE(SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLE_BLINK),  // S_GLAREGOYLE_CHARGE
+	STATE(SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLE_HOLD), // S_GLAREGOYLE_BLINK
+	STATE(SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLE_FIRE),  // S_GLAREGOYLE_HOLD
+	STATE(SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLE_LOOP),  // S_GLAREGOYLE_FIRE
+	STATE(SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLE_FIRE, S_GLAREGOYLE_COOLDOWN), // S_GLAREGOYLE_LOOP
+	STATE(SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLE), // S_GLAREGOYLE_COOLDOWN
+
+	STATE(SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLEUP_CHARGE),  // S_GLAREGOYLEUP
+	STATE(SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLEUP_BLINK),  // S_GLAREGOYLEUP_CHARGE
+	STATE(SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLEUP_HOLD), // S_GLAREGOYLEUP_BLINK
+	STATE(SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLEUP_FIRE),  // S_GLAREGOYLEUP_HOLD
+	STATE(SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+45, S_GLAREGOYLEUP_LOOP),  // S_GLAREGOYLEUP_FIRE
+	STATE(SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLEUP_FIRE, S_GLAREGOYLEUP_COOLDOWN), // S_GLAREGOYLEUP_LOOP
+	STATE(SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLEUP), // S_GLAREGOYLEUP_COOLDOWN
+
+	STATE(SPR_BGAR,            0, 22, {NULL},       0, 0, S_GLAREGOYLEDOWN_CHARGE),  // S_GLAREGOYLEDOWN
+	STATE(SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLEDOWN_BLINK),  // S_GLAREGOYLEDOWN_CHARGE
+	STATE(SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLEDOWN_HOLD), // S_GLAREGOYLEDOWN_BLINK
+	STATE(SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLEDOWN_FIRE),  // S_GLAREGOYLEDOWN_HOLD
+	STATE(SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16)+315, S_GLAREGOYLEDOWN_LOOP),  // S_GLAREGOYLEDOWN_FIRE
+	STATE(SPR_BGAR,            1,  0, {A_Repeat},   3, S_GLAREGOYLEDOWN_FIRE, S_GLAREGOYLEDOWN_COOLDOWN), // S_GLAREGOYLEDOWN_LOOP
+	STATE(SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLEDOWN), // S_GLAREGOYLEDOWN_COOLDOWN
+
+	STATE(SPR_BGAR,            0, 90, {NULL},       0, 0, S_GLAREGOYLELONG_CHARGE),  // S_GLAREGOYLELONG
+	STATE(SPR_BGAR,            2,  6, {NULL},       0, 0, S_GLAREGOYLELONG_BLINK),  // S_GLAREGOYLELONG_CHARGE
+	STATE(SPR_BGAR, FF_ANIMATE|1, 18, {NULL},       1, 3, S_GLAREGOYLELONG_HOLD), // S_GLAREGOYLELONG_BLINK
+	STATE(SPR_BGAR,            1,  9, {NULL},       0, 0, S_GLAREGOYLELONG_FIRE),  // S_GLAREGOYLELONG_HOLD
+	STATE(SPR_BGAR,            1,  1, {A_TrapShot}, (16<<16)+MT_DEMONFIRE, (30<<16), S_GLAREGOYLELONG_LOOP),  // S_GLAREGOYLELONG_FIRE
+	STATE(SPR_BGAR,            1,  0, {A_Repeat},   5, S_GLAREGOYLELONG_FIRE, S_GLAREGOYLELONG_COOLDOWN), // S_GLAREGOYLELONG_LOOP
+	STATE(SPR_BGAR, FF_ANIMATE|1, 15, {NULL},       1, 9, S_GLAREGOYLELONG), // S_GLAREGOYLELONG_COOLDOWN
 
 	// Target/Red Crystal
-	{SPR_RCRY,               0, -1, {NULL},                  0, 0, S_TARGET_IDLE},  // S_TARGET_IDLE
-	{SPR_RCRY, FF_FULLBRIGHT|1,  0, {A_PlaySound},           sfx_ding, 1, S_TARGET_HIT2},  // S_TARGET_HIT1
-	{SPR_RCRY, FF_FULLBRIGHT|1, 45, {A_SetObjectFlags},      MF_PUSHABLE, 2, S_TARGET_RESPAWN},  // S_TARGET_HIT2
-	{SPR_RCRY,               1,  0, {A_SpawnObjectRelative}, 0, MT_TARGET, S_NULL},  // S_TARGET_RESPAWN
-	{SPR_RCRY, FF_FULLBRIGHT|1, -1, {A_SetObjectFlags},      MF_PUSHABLE, 1, S_TARGET_ALLDONE},  // S_TARGET_ALLDONE
+	STATE(SPR_RCRY,               0, -1, {NULL},                  0, 0, S_TARGET_IDLE),  // S_TARGET_IDLE
+	STATE(SPR_RCRY, FF_FULLBRIGHT|1,  0, {A_PlaySound},           sfx_ding, 1, S_TARGET_HIT2),  // S_TARGET_HIT1
+	STATE(SPR_RCRY, FF_FULLBRIGHT|1, 45, {A_SetObjectFlags},      MF_PUSHABLE, 2, S_TARGET_RESPAWN),  // S_TARGET_HIT2
+	STATE(SPR_RCRY,               1,  0, {A_SpawnObjectRelative}, 0, MT_TARGET, S_NULL),  // S_TARGET_RESPAWN
+	STATE(SPR_RCRY, FF_FULLBRIGHT|1, -1, {A_SetObjectFlags},      MF_PUSHABLE, 1, S_TARGET_ALLDONE),  // S_TARGET_ALLDONE
 
 	// Green flame
-	{SPR_CFLM, FF_FULLBRIGHT|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 3, S_GREENFLAME}, // S_GREENFLAME
+	STATE(SPR_CFLM, FF_FULLBRIGHT|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 3, S_GREENFLAME), // S_GREENFLAME
 
 	// ATZ Blue Gargoyle
-	{SPR_BGAR, 3, -1, {NULL}, 0, 0, S_NULL}, // S_BLUEGARGOYLE
+	STATE(SPR_BGAR, 3, -1, {NULL}, 0, 0, S_NULL), // S_BLUEGARGOYLE
 
 	// Stalagmites
-	{SPR_STLG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_STG0
-	{SPR_STLG, 1, -1, {NULL}, 0, 0, S_NULL}, // S_STG1
-	{SPR_STLG, 2, -1, {NULL}, 0, 0, S_NULL}, // S_STG2
-	{SPR_STLG, 3, -1, {NULL}, 0, 0, S_NULL}, // S_STG3
-	{SPR_STLG, 4, -1, {NULL}, 0, 0, S_NULL}, // S_STG4
-	{SPR_STLG, 5, -1, {NULL}, 0, 0, S_NULL}, // S_STG5
-	{SPR_STLG, 6, -1, {NULL}, 0, 0, S_NULL}, // S_STG6
-	{SPR_STLG, 7, -1, {NULL}, 0, 0, S_NULL}, // S_STG7
-	{SPR_STLG, 8, -1, {NULL}, 0, 0, S_NULL}, // S_STG8
-	{SPR_STLG, 9, -1, {NULL}, 0, 0, S_NULL}, // S_STG9
+	STATE(SPR_STLG, 0, -1, {NULL}, 0, 0, S_NULL), // S_STG0
+	STATE(SPR_STLG, 1, -1, {NULL}, 0, 0, S_NULL), // S_STG1
+	STATE(SPR_STLG, 2, -1, {NULL}, 0, 0, S_NULL), // S_STG2
+	STATE(SPR_STLG, 3, -1, {NULL}, 0, 0, S_NULL), // S_STG3
+	STATE(SPR_STLG, 4, -1, {NULL}, 0, 0, S_NULL), // S_STG4
+	STATE(SPR_STLG, 5, -1, {NULL}, 0, 0, S_NULL), // S_STG5
+	STATE(SPR_STLG, 6, -1, {NULL}, 0, 0, S_NULL), // S_STG6
+	STATE(SPR_STLG, 7, -1, {NULL}, 0, 0, S_NULL), // S_STG7
+	STATE(SPR_STLG, 8, -1, {NULL}, 0, 0, S_NULL), // S_STG8
+	STATE(SPR_STLG, 9, -1, {NULL}, 0, 0, S_NULL), // S_STG9
 
 	// Xmas-specific stuff
-	{SPR_XMS1, 0, -1, {NULL}, 0, 0, S_NULL}, // S_XMASPOLE
-	{SPR_XMS2, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CANDYCANE
-	{SPR_XMS3, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SNOWMAN
-	{SPR_XMS3, 1, -1, {NULL}, 0, 0, S_NULL}, // S_SNOWMANHAT
-	{SPR_XMS4, 0, -1, {NULL}, 0, 0, S_NULL}, // S_LAMPPOST1
-	{SPR_XMS4, 1, -1, {NULL}, 0, 0, S_NULL}, // S_LAMPPOST2
-	{SPR_XMS5, 0, -1, {NULL}, 0, 0, S_NULL}, // S_HANGSTAR
-	{SPR_XMS6, 0, -1, {NULL}, 0, 0, S_NULL}, // S_MISTLETOE
+	STATE(SPR_XMS1, 0, -1, {NULL}, 0, 0, S_NULL), // S_XMASPOLE
+	STATE(SPR_XMS2, 0, -1, {NULL}, 0, 0, S_NULL), // S_CANDYCANE
+	STATE(SPR_XMS3, 0, -1, {NULL}, 0, 0, S_NULL), // S_SNOWMAN
+	STATE(SPR_XMS3, 1, -1, {NULL}, 0, 0, S_NULL), // S_SNOWMANHAT
+	STATE(SPR_XMS4, 0, -1, {NULL}, 0, 0, S_NULL), // S_LAMPPOST1
+	STATE(SPR_XMS4, 1, -1, {NULL}, 0, 0, S_NULL), // S_LAMPPOST2
+	STATE(SPR_XMS5, 0, -1, {NULL}, 0, 0, S_NULL), // S_HANGSTAR
+	STATE(SPR_XMS6, 0, -1, {NULL}, 0, 0, S_NULL), // S_MISTLETOE
 	// Xmas GFZ bushes
-	{SPR_BUS3, 1, -1, {NULL}, 0, 0, S_NULL}, // S_XMASBLUEBERRYBUSH
-	{SPR_BUS1, 1, -1, {NULL}, 0, 0, S_NULL}, // S_XMASBERRYBUSH
-	{SPR_BUS2, 1, -1, {NULL}, 0, 0, S_NULL}, // S_XMASBUSH
+	STATE(SPR_BUS3, 1, -1, {NULL}, 0, 0, S_NULL), // S_XMASBLUEBERRYBUSH
+	STATE(SPR_BUS1, 1, -1, {NULL}, 0, 0, S_NULL), // S_XMASBERRYBUSH
+	STATE(SPR_BUS2, 1, -1, {NULL}, 0, 0, S_NULL), // S_XMASBUSH
 	// FHZ
-	{SPR_FHZI, 0, -1, {NULL}, 0, 0, S_NULL}, // S_FHZICE1
-	{SPR_FHZI, 1, -1, {NULL}, 0, 0, S_NULL}, // S_FHZICE2
-	{SPR_ROSY, 16, 8, {NULL}, 0, 0, S_ROSY_IDLE2}, // S_ROSY_IDLE1
-	{SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE3}, // S_ROSY_IDLE2
-	{SPR_ROSY, 18, 8, {NULL}, 0, 0, S_ROSY_IDLE4}, // S_ROSY_IDLE3
-	{SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE1}, // S_ROSY_IDLE4
-	{SPR_ROSY, 14, -1, {NULL}, 1, 0, S_NULL}, // S_ROSY_JUMP
-	{SPR_ROSY,  5, -1, {NULL}, 7, 0, S_NULL}, // S_ROSY_WALK
-	{SPR_ROSY, 19, -1, {NULL}, 0, 0, S_NULL}, // S_ROSY_HUG
-	{SPR_ROSY, 13, -1, {NULL}, 0, 0, S_NULL}, // S_ROSY_PAIN
-	{SPR_ROSY,  1|FF_ANIMATE, -1, {NULL}, 3, 16, S_NULL}, // S_ROSY_STND
-	{SPR_ROSY, 20|FF_ANIMATE, TICRATE, {NULL}, 3, 4, S_ROSY_WALK}, // S_ROSY_UNHAPPY
+	STATE(SPR_FHZI, 0, -1, {NULL}, 0, 0, S_NULL), // S_FHZICE1
+	STATE(SPR_FHZI, 1, -1, {NULL}, 0, 0, S_NULL), // S_FHZICE2
+	STATE(SPR_ROSY, 16, 8, {NULL}, 0, 0, S_ROSY_IDLE2), // S_ROSY_IDLE1
+	STATE(SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE3), // S_ROSY_IDLE2
+	STATE(SPR_ROSY, 18, 8, {NULL}, 0, 0, S_ROSY_IDLE4), // S_ROSY_IDLE3
+	STATE(SPR_ROSY, 17, 4, {NULL}, 0, 0, S_ROSY_IDLE1), // S_ROSY_IDLE4
+	STATE(SPR_ROSY, 14, -1, {NULL}, 1, 0, S_NULL), // S_ROSY_JUMP
+	STATE(SPR_ROSY,  5, -1, {NULL}, 7, 0, S_NULL), // S_ROSY_WALK
+	STATE(SPR_ROSY, 19, -1, {NULL}, 0, 0, S_NULL), // S_ROSY_HUG
+	STATE(SPR_ROSY, 13, -1, {NULL}, 0, 0, S_NULL), // S_ROSY_PAIN
+	STATE(SPR_ROSY,  1|FF_ANIMATE, -1, {NULL}, 3, 16, S_NULL), // S_ROSY_STND
+	STATE(SPR_ROSY, 20|FF_ANIMATE, TICRATE, {NULL}, 3, 4, S_ROSY_WALK), // S_ROSY_UNHAPPY
 
 	// Halloween Scenery
 	// Pumpkins
-	{SPR_PUMK,  0, -1, {NULL}, 0, 0, S_NULL}, // S_JACKO1
-	{SPR_PUMK,  3|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_2}, // S_JACKO1OVERLAY_1
-	{SPR_PUMK,  4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_3}, // S_JACKO1OVERLAY_2
-	{SPR_PUMK,  5|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_4}, // S_JACKO1OVERLAY_3
-	{SPR_PUMK,  4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_1}, // S_JACKO1OVERLAY_4
-	{SPR_PUMK,  1, -1, {NULL}, 0, 0, S_NULL}, // S_JACKO2
-	{SPR_PUMK,  6|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_2}, // S_JACKO2OVERLAY_1
-	{SPR_PUMK,  7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_3}, // S_JACKO2OVERLAY_2
-	{SPR_PUMK,  8|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_4}, // S_JACKO2OVERLAY_3
-	{SPR_PUMK,  7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_1}, // S_JACKO2OVERLAY_4
-	{SPR_PUMK,  2, -1, {NULL}, 0, 0, S_NULL}, // S_JACKO3
-	{SPR_PUMK,  9|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_2}, // S_JACKO3OVERLAY_1
-	{SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_3}, // S_JACKO3OVERLAY_2
-	{SPR_PUMK, 11|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_4}, // S_JACKO3OVERLAY_3
-	{SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_1}, // S_JACKO3OVERLAY_4
+	STATE(SPR_PUMK,  0, -1, {NULL}, 0, 0, S_NULL), // S_JACKO1
+	STATE(SPR_PUMK,  3|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_2), // S_JACKO1OVERLAY_1
+	STATE(SPR_PUMK,  4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_3), // S_JACKO1OVERLAY_2
+	STATE(SPR_PUMK,  5|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_4), // S_JACKO1OVERLAY_3
+	STATE(SPR_PUMK,  4|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO1OVERLAY_1), // S_JACKO1OVERLAY_4
+	STATE(SPR_PUMK,  1, -1, {NULL}, 0, 0, S_NULL), // S_JACKO2
+	STATE(SPR_PUMK,  6|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_2), // S_JACKO2OVERLAY_1
+	STATE(SPR_PUMK,  7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_3), // S_JACKO2OVERLAY_2
+	STATE(SPR_PUMK,  8|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_4), // S_JACKO2OVERLAY_3
+	STATE(SPR_PUMK,  7|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO2OVERLAY_1), // S_JACKO2OVERLAY_4
+	STATE(SPR_PUMK,  2, -1, {NULL}, 0, 0, S_NULL), // S_JACKO3
+	STATE(SPR_PUMK,  9|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_2), // S_JACKO3OVERLAY_1
+	STATE(SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_3), // S_JACKO3OVERLAY_2
+	STATE(SPR_PUMK, 11|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_4), // S_JACKO3OVERLAY_3
+	STATE(SPR_PUMK, 10|FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_JACKO3OVERLAY_1), // S_JACKO3OVERLAY_4
 	// Dr Seuss Trees
-	{SPR_HHPL, 2, -1, {A_ConnectToGround}, MT_HHZTREE_PART, 0, S_NULL}, // S_HHZTREE_TOP,
-	{SPR_HHPL, 1, -1, {NULL}, 0, 0, S_NULL}, // S_HHZTREE_TRUNK,
-	{SPR_HHPL, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_HHZTREE_LEAF,
+	STATE(SPR_HHPL, 2, -1, {A_ConnectToGround}, MT_HHZTREE_PART, 0, S_NULL), // S_HHZTREE_TOP,
+	STATE(SPR_HHPL, 1, -1, {NULL}, 0, 0, S_NULL), // S_HHZTREE_TRUNK,
+	STATE(SPR_HHPL, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL), // S_HHZTREE_LEAF,
 	// Mushroom
-	{SPR_SHRM, 4,  3, {NULL}, 0, 0, S_HHZSHROOM_2},  // S_HHZSHROOM_1,
-	{SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_3},  // S_HHZSHROOM_2,
-	{SPR_SHRM, 2,  2, {NULL}, 0, 0, S_HHZSHROOM_4},  // S_HHZSHROOM_3,
-	{SPR_SHRM, 1,  1, {NULL}, 0, 0, S_HHZSHROOM_5},  // S_HHZSHROOM_4,
-	{SPR_SHRM, 0,  1, {NULL}, 0, 0, S_HHZSHROOM_6},  // S_HHZSHROOM_5,
-	{SPR_SHRM, 1,  4, {NULL}, 0, 0, S_HHZSHROOM_7},  // S_HHZSHROOM_6,
-	{SPR_SHRM, 2,  2, {NULL}, 0, 0, S_HHZSHROOM_8},  // S_HHZSHROOM_7,
-	{SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_9},  // S_HHZSHROOM_8,
-	{SPR_SHRM, 4,  3, {NULL}, 0, 0, S_HHZSHROOM_10}, // S_HHZSHROOM_9,
-	{SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_11}, // S_HHZSHROOM_10,
-	{SPR_SHRM, 5,  2, {NULL}, 0, 0, S_HHZSHROOM_12}, // S_HHZSHROOM_11,
-	{SPR_SHRM, 6,  1, {NULL}, 0, 0, S_HHZSHROOM_13}, // S_HHZSHROOM_12,
-	{SPR_SHRM, 7,  1, {NULL}, 0, 0, S_HHZSHROOM_14}, // S_HHZSHROOM_13,
-	{SPR_SHRM, 6,  4, {NULL}, 0, 0, S_HHZSHROOM_15}, // S_HHZSHROOM_14,
-	{SPR_SHRM, 5,  2, {NULL}, 0, 0, S_HHZSHROOM_16}, // S_HHZSHROOM_15,
-	{SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_1},  // S_HHZSHROOM_16,
+	STATE(SPR_SHRM, 4,  3, {NULL}, 0, 0, S_HHZSHROOM_2),  // S_HHZSHROOM_1,
+	STATE(SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_3),  // S_HHZSHROOM_2,
+	STATE(SPR_SHRM, 2,  2, {NULL}, 0, 0, S_HHZSHROOM_4),  // S_HHZSHROOM_3,
+	STATE(SPR_SHRM, 1,  1, {NULL}, 0, 0, S_HHZSHROOM_5),  // S_HHZSHROOM_4,
+	STATE(SPR_SHRM, 0,  1, {NULL}, 0, 0, S_HHZSHROOM_6),  // S_HHZSHROOM_5,
+	STATE(SPR_SHRM, 1,  4, {NULL}, 0, 0, S_HHZSHROOM_7),  // S_HHZSHROOM_6,
+	STATE(SPR_SHRM, 2,  2, {NULL}, 0, 0, S_HHZSHROOM_8),  // S_HHZSHROOM_7,
+	STATE(SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_9),  // S_HHZSHROOM_8,
+	STATE(SPR_SHRM, 4,  3, {NULL}, 0, 0, S_HHZSHROOM_10), // S_HHZSHROOM_9,
+	STATE(SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_11), // S_HHZSHROOM_10,
+	STATE(SPR_SHRM, 5,  2, {NULL}, 0, 0, S_HHZSHROOM_12), // S_HHZSHROOM_11,
+	STATE(SPR_SHRM, 6,  1, {NULL}, 0, 0, S_HHZSHROOM_13), // S_HHZSHROOM_12,
+	STATE(SPR_SHRM, 7,  1, {NULL}, 0, 0, S_HHZSHROOM_14), // S_HHZSHROOM_13,
+	STATE(SPR_SHRM, 6,  4, {NULL}, 0, 0, S_HHZSHROOM_15), // S_HHZSHROOM_14,
+	STATE(SPR_SHRM, 5,  2, {NULL}, 0, 0, S_HHZSHROOM_16), // S_HHZSHROOM_15,
+	STATE(SPR_SHRM, 3,  3, {NULL}, 0, 0, S_HHZSHROOM_1),  // S_HHZSHROOM_16,
 	// Misc
-	{SPR_HHZM, 0, -1, {NULL}, 0, 0, S_NULL}, // S_HHZGRASS,
-	{SPR_HHZM, 1, -1, {NULL}, 0, 0, S_NULL}, // S_HHZTENT1,
-	{SPR_HHZM, 2, -1, {NULL}, 0, 0, S_NULL}, // S_HHZTENT2,
-	{SPR_HHZM, 4, -1, {NULL}, 0, 0, S_NULL}, // S_HHZSTALAGMITE_TALL,
-	{SPR_HHZM, 5, -1, {NULL}, 0, 0, S_NULL}, // S_HHZSTALAGMITE_SHORT,
+	STATE(SPR_HHZM, 0, -1, {NULL}, 0, 0, S_NULL), // S_HHZGRASS,
+	STATE(SPR_HHZM, 1, -1, {NULL}, 0, 0, S_NULL), // S_HHZTENT1,
+	STATE(SPR_HHZM, 2, -1, {NULL}, 0, 0, S_NULL), // S_HHZTENT2,
+	STATE(SPR_HHZM, 4, -1, {NULL}, 0, 0, S_NULL), // S_HHZSTALAGMITE_TALL,
+	STATE(SPR_HHZM, 5, -1, {NULL}, 0, 0, S_NULL), // S_HHZSTALAGMITE_SHORT,
 
 	// Loads of Botanic Serenity bullshit
-	{SPR_BSZ1, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BSZTALLFLOWER_RED
-	{SPR_BSZ1, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BSZTALLFLOWER_PURPLE
-	{SPR_BSZ1, 2, -1, {NULL}, 0, 0, S_NULL}, // S_BSZTALLFLOWER_BLUE
-	{SPR_BSZ1, 3, -1, {NULL}, 0, 0, S_NULL}, // S_BSZTALLFLOWER_CYAN
-	{SPR_BSZ1, 4, -1, {NULL}, 0, 0, S_NULL}, // S_BSZTALLFLOWER_YELLOW
-	{SPR_BSZ1, 5, -1, {NULL}, 0, 0, S_NULL}, // S_BSZTALLFLOWER_ORANGE
-	{SPR_BSZ2, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BSZFLOWER_RED
-	{SPR_BSZ2, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BSZFLOWER_PURPLE
-	{SPR_BSZ2, 2, -1, {NULL}, 0, 0, S_NULL}, // S_BSZFLOWER_BLUE
-	{SPR_BSZ2, 3, -1, {NULL}, 0, 0, S_NULL}, // S_BSZFLOWER_CYAN
-	{SPR_BSZ2, 4, -1, {NULL}, 0, 0, S_NULL}, // S_BSZFLOWER_YELLOW
-	{SPR_BSZ2, 5, -1, {NULL}, 0, 0, S_NULL}, // S_BSZFLOWER_ORANGE
-	{SPR_BSZ3, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BSZSHORTFLOWER_RED
-	{SPR_BSZ3, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BSZSHORTFLOWER_PURPLE
-	{SPR_BSZ3, 2, -1, {NULL}, 0, 0, S_NULL}, // S_BSZSHORTFLOWER_BLUE
-	{SPR_BSZ3, 3, -1, {NULL}, 0, 0, S_NULL}, // S_BSZSHORTFLOWER_CYAN
-	{SPR_BSZ3, 4, -1, {NULL}, 0, 0, S_NULL}, // S_BSZSHORTFLOWER_YELLOW
-	{SPR_BSZ3, 5, -1, {NULL}, 0, 0, S_NULL}, // S_BSZSHORTFLOWER_ORANGE
-	{SPR_BST1, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL}, // S_BSZTULIP_RED
-	{SPR_BST2, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL}, // S_BSZTULIP_PURPLE
-	{SPR_BST3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL}, // S_BSZTULIP_BLUE
-	{SPR_BST4, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL}, // S_BSZTULIP_CYAN
-	{SPR_BST5, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL}, // S_BSZTULIP_YELLOW
-	{SPR_BST6, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL}, // S_BSZTULIP_ORANGE
-	{SPR_BSZ5, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BSZCLUSTER_RED
-	{SPR_BSZ5, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BSZCLUSTER_PURPLE
-	{SPR_BSZ5, 2, -1, {NULL}, 0, 0, S_NULL}, // S_BSZCLUSTER_BLUE
-	{SPR_BSZ5, 3, -1, {NULL}, 0, 0, S_NULL}, // S_BSZCLUSTER_CYAN
-	{SPR_BSZ5, 4, -1, {NULL}, 0, 0, S_NULL}, // S_BSZCLUSTER_YELLOW
-	{SPR_BSZ5, 5, -1, {NULL}, 0, 0, S_NULL}, // S_BSZCLUSTER_ORANGE
-	{SPR_BSZ6, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BSZBUSH_RED
-	{SPR_BSZ6, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BSZBUSH_PURPLE
-	{SPR_BSZ6, 2, -1, {NULL}, 0, 0, S_NULL}, // S_BSZBUSH_BLUE
-	{SPR_BSZ6, 3, -1, {NULL}, 0, 0, S_NULL}, // S_BSZBUSH_CYAN
-	{SPR_BSZ6, 4, -1, {NULL}, 0, 0, S_NULL}, // S_BSZBUSH_YELLOW
-	{SPR_BSZ6, 5, -1, {NULL}, 0, 0, S_NULL}, // S_BSZBUSH_ORANGE
-	{SPR_BSZ7, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BSZVINE_RED
-	{SPR_BSZ7, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BSZVINE_PURPLE
-	{SPR_BSZ7, 2, -1, {NULL}, 0, 0, S_NULL}, // S_BSZVINE_BLUE
-	{SPR_BSZ7, 3, -1, {NULL}, 0, 0, S_NULL}, // S_BSZVINE_CYAN
-	{SPR_BSZ7, 4, -1, {NULL}, 0, 0, S_NULL}, // S_BSZVINE_YELLOW
-	{SPR_BSZ7, 5, -1, {NULL}, 0, 0, S_NULL}, // S_BSZVINE_ORANGE
-	{SPR_BSZ8, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BSZSHRUB
-	{SPR_BSZ8, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BSZCLOVER
-	{SPR_BSZ8, 2, -1, {NULL}, 0, 0, S_NULL}, // S_BIG_PALMTREE_TRUNK
-	{SPR_BSZ8, 3, -1, {A_ConnectToGround}, MT_BIG_PALMTREE_TRUNK, 0, S_NULL}, // S_BIG_PALMTREE_TOP
-	{SPR_BSZ8, 4, -1, {NULL}, 0, 0, S_NULL}, // S_PALMTREE_TRUNK
-	{SPR_BSZ8, 5, -1, {A_ConnectToGround},     MT_PALMTREE_TRUNK, 0, S_NULL}, // S_PALMTREE_TOP
+	STATE(SPR_BSZ1, 0, -1, {NULL}, 0, 0, S_NULL), // S_BSZTALLFLOWER_RED
+	STATE(SPR_BSZ1, 1, -1, {NULL}, 0, 0, S_NULL), // S_BSZTALLFLOWER_PURPLE
+	STATE(SPR_BSZ1, 2, -1, {NULL}, 0, 0, S_NULL), // S_BSZTALLFLOWER_BLUE
+	STATE(SPR_BSZ1, 3, -1, {NULL}, 0, 0, S_NULL), // S_BSZTALLFLOWER_CYAN
+	STATE(SPR_BSZ1, 4, -1, {NULL}, 0, 0, S_NULL), // S_BSZTALLFLOWER_YELLOW
+	STATE(SPR_BSZ1, 5, -1, {NULL}, 0, 0, S_NULL), // S_BSZTALLFLOWER_ORANGE
+	STATE(SPR_BSZ2, 0, -1, {NULL}, 0, 0, S_NULL), // S_BSZFLOWER_RED
+	STATE(SPR_BSZ2, 1, -1, {NULL}, 0, 0, S_NULL), // S_BSZFLOWER_PURPLE
+	STATE(SPR_BSZ2, 2, -1, {NULL}, 0, 0, S_NULL), // S_BSZFLOWER_BLUE
+	STATE(SPR_BSZ2, 3, -1, {NULL}, 0, 0, S_NULL), // S_BSZFLOWER_CYAN
+	STATE(SPR_BSZ2, 4, -1, {NULL}, 0, 0, S_NULL), // S_BSZFLOWER_YELLOW
+	STATE(SPR_BSZ2, 5, -1, {NULL}, 0, 0, S_NULL), // S_BSZFLOWER_ORANGE
+	STATE(SPR_BSZ3, 0, -1, {NULL}, 0, 0, S_NULL), // S_BSZSHORTFLOWER_RED
+	STATE(SPR_BSZ3, 1, -1, {NULL}, 0, 0, S_NULL), // S_BSZSHORTFLOWER_PURPLE
+	STATE(SPR_BSZ3, 2, -1, {NULL}, 0, 0, S_NULL), // S_BSZSHORTFLOWER_BLUE
+	STATE(SPR_BSZ3, 3, -1, {NULL}, 0, 0, S_NULL), // S_BSZSHORTFLOWER_CYAN
+	STATE(SPR_BSZ3, 4, -1, {NULL}, 0, 0, S_NULL), // S_BSZSHORTFLOWER_YELLOW
+	STATE(SPR_BSZ3, 5, -1, {NULL}, 0, 0, S_NULL), // S_BSZSHORTFLOWER_ORANGE
+	STATE(SPR_BST1, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL), // S_BSZTULIP_RED
+	STATE(SPR_BST2, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL), // S_BSZTULIP_PURPLE
+	STATE(SPR_BST3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL), // S_BSZTULIP_BLUE
+	STATE(SPR_BST4, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL), // S_BSZTULIP_CYAN
+	STATE(SPR_BST5, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL), // S_BSZTULIP_YELLOW
+	STATE(SPR_BST6, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL), // S_BSZTULIP_ORANGE
+	STATE(SPR_BSZ5, 0, -1, {NULL}, 0, 0, S_NULL), // S_BSZCLUSTER_RED
+	STATE(SPR_BSZ5, 1, -1, {NULL}, 0, 0, S_NULL), // S_BSZCLUSTER_PURPLE
+	STATE(SPR_BSZ5, 2, -1, {NULL}, 0, 0, S_NULL), // S_BSZCLUSTER_BLUE
+	STATE(SPR_BSZ5, 3, -1, {NULL}, 0, 0, S_NULL), // S_BSZCLUSTER_CYAN
+	STATE(SPR_BSZ5, 4, -1, {NULL}, 0, 0, S_NULL), // S_BSZCLUSTER_YELLOW
+	STATE(SPR_BSZ5, 5, -1, {NULL}, 0, 0, S_NULL), // S_BSZCLUSTER_ORANGE
+	STATE(SPR_BSZ6, 0, -1, {NULL}, 0, 0, S_NULL), // S_BSZBUSH_RED
+	STATE(SPR_BSZ6, 1, -1, {NULL}, 0, 0, S_NULL), // S_BSZBUSH_PURPLE
+	STATE(SPR_BSZ6, 2, -1, {NULL}, 0, 0, S_NULL), // S_BSZBUSH_BLUE
+	STATE(SPR_BSZ6, 3, -1, {NULL}, 0, 0, S_NULL), // S_BSZBUSH_CYAN
+	STATE(SPR_BSZ6, 4, -1, {NULL}, 0, 0, S_NULL), // S_BSZBUSH_YELLOW
+	STATE(SPR_BSZ6, 5, -1, {NULL}, 0, 0, S_NULL), // S_BSZBUSH_ORANGE
+	STATE(SPR_BSZ7, 0, -1, {NULL}, 0, 0, S_NULL), // S_BSZVINE_RED
+	STATE(SPR_BSZ7, 1, -1, {NULL}, 0, 0, S_NULL), // S_BSZVINE_PURPLE
+	STATE(SPR_BSZ7, 2, -1, {NULL}, 0, 0, S_NULL), // S_BSZVINE_BLUE
+	STATE(SPR_BSZ7, 3, -1, {NULL}, 0, 0, S_NULL), // S_BSZVINE_CYAN
+	STATE(SPR_BSZ7, 4, -1, {NULL}, 0, 0, S_NULL), // S_BSZVINE_YELLOW
+	STATE(SPR_BSZ7, 5, -1, {NULL}, 0, 0, S_NULL), // S_BSZVINE_ORANGE
+	STATE(SPR_BSZ8, 0, -1, {NULL}, 0, 0, S_NULL), // S_BSZSHRUB
+	STATE(SPR_BSZ8, 1, -1, {NULL}, 0, 0, S_NULL), // S_BSZCLOVER
+	STATE(SPR_BSZ8, 2, -1, {NULL}, 0, 0, S_NULL), // S_BIG_PALMTREE_TRUNK
+	STATE(SPR_BSZ8, 3, -1, {A_ConnectToGround}, MT_BIG_PALMTREE_TRUNK, 0, S_NULL), // S_BIG_PALMTREE_TOP
+	STATE(SPR_BSZ8, 4, -1, {NULL}, 0, 0, S_NULL), // S_PALMTREE_TRUNK
+	STATE(SPR_BSZ8, 5, -1, {A_ConnectToGround},     MT_PALMTREE_TRUNK, 0, S_NULL), // S_PALMTREE_TOP
 
 	// Disco ball
-	{SPR_DBAL, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_DBALL2}, // S_DBALL1
-	{SPR_DBAL, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_DBALL3}, // S_DBALL2
-	{SPR_DBAL, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_DBALL4}, // S_DBALL3
-	{SPR_DBAL, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_DBALL5}, // S_DBALL4
-	{SPR_DBAL, FF_FULLBRIGHT|4, 5, {NULL}, 0, 0, S_DBALL6}, // S_DBALL5
-	{SPR_DBAL, FF_FULLBRIGHT|5, 5, {NULL}, 0, 0, S_DBALL1}, // S_DBALL6
+	STATE(SPR_DBAL, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_DBALL2), // S_DBALL1
+	STATE(SPR_DBAL, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_DBALL3), // S_DBALL2
+	STATE(SPR_DBAL, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_DBALL4), // S_DBALL3
+	STATE(SPR_DBAL, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_DBALL5), // S_DBALL4
+	STATE(SPR_DBAL, FF_FULLBRIGHT|4, 5, {NULL}, 0, 0, S_DBALL6), // S_DBALL5
+	STATE(SPR_DBAL, FF_FULLBRIGHT|5, 5, {NULL}, 0, 0, S_DBALL1), // S_DBALL6
 
-	{SPR_ESTA, 1, -1, {NULL}, 0, 0, S_NULL}, // S_EGGSTATUE2
+	STATE(SPR_ESTA, 1, -1, {NULL}, 0, 0, S_NULL), // S_EGGSTATUE2
 
 	// Shield Orb
-	{SPR_ARMA, FF_TRANS40   , 2, {NULL}, 0, 0, S_ARMA2 }, // S_ARMA1
-	{SPR_ARMA, FF_TRANS40| 1, 2, {NULL}, 0, 0, S_ARMA3 }, // S_ARMA2
-	{SPR_ARMA, FF_TRANS40| 2, 2, {NULL}, 0, 0, S_ARMA4 }, // S_ARMA3
-	{SPR_ARMA, FF_TRANS40| 3, 2, {NULL}, 0, 0, S_ARMA5 }, // S_ARMA4
-	{SPR_ARMA, FF_TRANS40| 4, 2, {NULL}, 0, 0, S_ARMA6 }, // S_ARMA5
-	{SPR_ARMA, FF_TRANS40| 5, 2, {NULL}, 0, 0, S_ARMA7 }, // S_ARMA6
-	{SPR_ARMA, FF_TRANS40| 6, 2, {NULL}, 0, 0, S_ARMA8 }, // S_ARMA7
-	{SPR_ARMA, FF_TRANS40| 7, 2, {NULL}, 0, 0, S_ARMA9 }, // S_ARMA8
-	{SPR_ARMA, FF_TRANS40| 8, 2, {NULL}, 0, 0, S_ARMA10}, // S_ARMA9
-	{SPR_ARMA, FF_TRANS40| 9, 2, {NULL}, 0, 0, S_ARMA11}, // S_ARMA10
-	{SPR_ARMA, FF_TRANS40|10, 2, {NULL}, 0, 0, S_ARMA12}, // S_ARMA11
-	{SPR_ARMA, FF_TRANS40|11, 2, {NULL}, 0, 0, S_ARMA13}, // S_ARMA12
-	{SPR_ARMA, FF_TRANS40|12, 2, {NULL}, 0, 0, S_ARMA14}, // S_ARMA13
-	{SPR_ARMA, FF_TRANS40|13, 2, {NULL}, 0, 0, S_ARMA15}, // S_ARMA14
-	{SPR_ARMA, FF_TRANS40|14, 2, {NULL}, 0, 0, S_ARMA16}, // S_ARMA15
-	{SPR_ARMA, FF_TRANS40|15, 2, {NULL}, 0, 0, S_ARMA1 }, // S_ARMA16
-
-	{SPR_ARMF, FF_FULLBRIGHT   , 2, {NULL}, 0, 0, S_ARMF2 }, // S_ARMF1
-	{SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF3 }, // S_ARMF2
-	{SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF4 }, // S_ARMF3
-	{SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF5 }, // S_ARMF4
-	{SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF6 }, // S_ARMF5
-	{SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF7 }, // S_ARMF6
-	{SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF8 }, // S_ARMF7
-	{SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF9 }, // S_ARMF8
-	{SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF10}, // S_ARMF9
-	{SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF11}, // S_ARMF10
-	{SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF12}, // S_ARMF11
-	{SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF13}, // S_ARMF12
-	{SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF14}, // S_ARMF13
-	{SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF15}, // S_ARMF14
-	{SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF16}, // S_ARMF15
-	{SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF17}, // S_ARMF16
-	{SPR_ARMB, FF_FULLBRIGHT   , 2, {NULL}, 0, 0, S_ARMF18}, // S_ARMF17
-	{SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF19}, // S_ARMF18
-	{SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF20}, // S_ARMF19
-	{SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF21}, // S_ARMF20
-	{SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF22}, // S_ARMF21
-	{SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF23}, // S_ARMF22
-	{SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF24}, // S_ARMF23
-	{SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF25}, // S_ARMF24
-	{SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF26}, // S_ARMF25
-	{SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF27}, // S_ARMF26
-	{SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF28}, // S_ARMF27
-	{SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF29}, // S_ARMF28
-	{SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF30}, // S_ARMF29
-	{SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF31}, // S_ARMF30
-	{SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF32}, // S_ARMF31
-	{SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF1 }, // S_ARMF32
-
-	{SPR_ARMB, FF_FULLBRIGHT   , 2, {NULL}, 1, 0, S_ARMB2 }, // S_ARMB1
-	{SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB3 }, // S_ARMB2
-	{SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB4 }, // S_ARMB3
-	{SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB5 }, // S_ARMB4
-	{SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB6 }, // S_ARMB5
-	{SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB7 }, // S_ARMB6
-	{SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB8 }, // S_ARMB7
-	{SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB9 }, // S_ARMB8
-	{SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB10}, // S_ARMB9
-	{SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB11}, // S_ARMB10
-	{SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB12}, // S_ARMB11
-	{SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB13}, // S_ARMB12
-	{SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB14}, // S_ARMB13
-	{SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB15}, // S_ARMB14
-	{SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB16}, // S_ARMB15
-	{SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB17}, // S_ARMB16
-	{SPR_ARMF, FF_FULLBRIGHT   , 2, {NULL}, 1, 0, S_ARMB18}, // S_ARMB17
-	{SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB19}, // S_ARMB18
-	{SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB20}, // S_ARMB19
-	{SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB21}, // S_ARMB20
-	{SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB22}, // S_ARMB21
-	{SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB23}, // S_ARMB22
-	{SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB24}, // S_ARMB23
-	{SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB25}, // S_ARMB24
-	{SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB26}, // S_ARMB25
-	{SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB27}, // S_ARMB26
-	{SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB28}, // S_ARMB27
-	{SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB29}, // S_ARMB28
-	{SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB30}, // S_ARMB29
-	{SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB31}, // S_ARMB30
-	{SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB32}, // S_ARMB31
-	{SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB1 }, // S_ARMB32
-
-	{SPR_WIND, FF_TRANS70  , 2, {NULL}, 0, 0, S_WIND2}, // S_WIND1
-	{SPR_WIND, FF_TRANS70|1, 2, {NULL}, 0, 0, S_WIND3}, // S_WIND2
-	{SPR_WIND, FF_TRANS70|2, 2, {NULL}, 0, 0, S_WIND4}, // S_WIND3
-	{SPR_WIND, FF_TRANS70|3, 2, {NULL}, 0, 0, S_WIND5}, // S_WIND4
-	{SPR_WIND, FF_TRANS70|4, 2, {NULL}, 0, 0, S_WIND6}, // S_WIND5
-	{SPR_WIND, FF_TRANS70|5, 2, {NULL}, 0, 0, S_WIND7}, // S_WIND6
-	{SPR_WIND, FF_TRANS70|6, 2, {NULL}, 0, 0, S_WIND8}, // S_WIND7
-	{SPR_WIND, FF_TRANS70|7, 2, {NULL}, 0, 0, S_WIND1}, // S_WIND8
-
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40   , 2, {NULL}, 0, 0, S_MAGN2 }, // S_MAGN1
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 1, 2, {NULL}, 0, 0, S_MAGN3 }, // S_MAGN2
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 2, 2, {NULL}, 0, 0, S_MAGN4 }, // S_MAGN3
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 3, 2, {NULL}, 0, 0, S_MAGN5 }, // S_MAGN4
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 4, 2, {NULL}, 0, 0, S_MAGN6 }, // S_MAGN5
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 5, 2, {NULL}, 0, 0, S_MAGN7 }, // S_MAGN6
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 6, 2, {NULL}, 0, 0, S_MAGN8 }, // S_MAGN7
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 7, 2, {NULL}, 0, 0, S_MAGN9 }, // S_MAGN8
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 8, 2, {NULL}, 0, 0, S_MAGN10}, // S_MAGN9
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_MAGN11}, // S_MAGN10
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_MAGN12}, // S_MAGN11
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_MAGN1 }, // S_MAGN12
-
-	{SPR_MAGN, FF_FULLBRIGHT|FF_TRANS10|12, 2, {NULL}, 0, 0, S_MAGN1 }, // S_MAGN13
-
-	{SPR_FORC, FF_TRANS50  , 3, {NULL}, 0, 0, S_FORC2 }, // S_FORC1
-	{SPR_FORC, FF_TRANS50|1, 3, {NULL}, 0, 0, S_FORC3 }, // S_FORC2
-	{SPR_FORC, FF_TRANS50|2, 3, {NULL}, 0, 0, S_FORC4 }, // S_FORC3
-	{SPR_FORC, FF_TRANS50|3, 3, {NULL}, 0, 0, S_FORC5 }, // S_FORC4
-	{SPR_FORC, FF_TRANS50|4, 3, {NULL}, 0, 0, S_FORC6 }, // S_FORC5
-	{SPR_FORC, FF_TRANS50|5, 3, {NULL}, 0, 0, S_FORC7 }, // S_FORC6
-	{SPR_FORC, FF_TRANS50|6, 3, {NULL}, 0, 0, S_FORC8 }, // S_FORC7
-	{SPR_FORC, FF_TRANS50|7, 3, {NULL}, 0, 0, S_FORC9 }, // S_FORC8
-	{SPR_FORC, FF_TRANS50|8, 3, {NULL}, 0, 0, S_FORC10}, // S_FORC9
-	{SPR_FORC, FF_TRANS50|9, 3, {NULL}, 0, 0, S_FORC1 }, // S_FORC10
-
-	{SPR_FORC, FF_TRANS50|10, 3, {NULL}, 0, 0, S_FORC12}, // S_FORC11
-	{SPR_FORC, FF_TRANS50|11, 3, {NULL}, 0, 0, S_FORC13}, // S_FORC12
-	{SPR_FORC, FF_TRANS50|12, 3, {NULL}, 0, 0, S_FORC14}, // S_FORC13
-	{SPR_FORC, FF_TRANS50|13, 3, {NULL}, 0, 0, S_FORC15}, // S_FORC14
-	{SPR_FORC, FF_TRANS50|14, 3, {NULL}, 0, 0, S_FORC16}, // S_FORC15
-	{SPR_FORC, FF_TRANS50|15, 3, {NULL}, 0, 0, S_FORC17}, // S_FORC16
-	{SPR_FORC, FF_TRANS50|16, 3, {NULL}, 0, 0, S_FORC18}, // S_FORC17
-	{SPR_FORC, FF_TRANS50|17, 3, {NULL}, 0, 0, S_FORC19}, // S_FORC18
-	{SPR_FORC, FF_TRANS50|18, 3, {NULL}, 0, 0, S_FORC20}, // S_FORC19
-	{SPR_FORC, FF_TRANS50|19, 3, {NULL}, 0, 0, S_FORC11}, // S_FORC20
-
-	{SPR_FORC, FF_TRANS50|20, -1, {NULL}, 0, 0, S_NULL}, // S_FORC21
-
-	{SPR_ELEM, FF_TRANS50   , 4, {NULL}, 0, 0, S_ELEM2 }, // S_ELEM1
-	{SPR_ELEM, FF_TRANS50| 1, 4, {NULL}, 0, 0, S_ELEM3 }, // S_ELEM2
-	{SPR_ELEM, FF_TRANS50| 2, 4, {NULL}, 0, 0, S_ELEM4 }, // S_ELEM3
-	{SPR_ELEM, FF_TRANS50| 3, 4, {NULL}, 0, 0, S_ELEM5 }, // S_ELEM4
-	{SPR_ELEM, FF_TRANS50| 4, 4, {NULL}, 0, 0, S_ELEM6 }, // S_ELEM5
-	{SPR_ELEM, FF_TRANS50| 5, 4, {NULL}, 0, 0, S_ELEM7 }, // S_ELEM6
-	{SPR_ELEM, FF_TRANS50| 6, 4, {NULL}, 0, 0, S_ELEM8 }, // S_ELEM7
-	{SPR_ELEM, FF_TRANS50| 7, 4, {NULL}, 0, 0, S_ELEM9 }, // S_ELEM8
-	{SPR_ELEM, FF_TRANS50| 8, 4, {NULL}, 0, 0, S_ELEM10}, // S_ELEM9
-	{SPR_ELEM, FF_TRANS50| 9, 4, {NULL}, 0, 0, S_ELEM11}, // S_ELEM10
-	{SPR_ELEM, FF_TRANS50|10, 4, {NULL}, 0, 0, S_ELEM12}, // S_ELEM11
-	{SPR_ELEM, FF_TRANS50|11, 4, {NULL}, 0, 0, S_ELEM1 }, // S_ELEM12
-
-	{SPR_NULL,             0, 1, {NULL}, 0, 0, S_ELEM14}, // S_ELEM13
-	{SPR_ELEM, FF_TRANS50|11, 1, {NULL}, 0, 0, S_ELEM1 }, // S_ELEM14
-
-	{SPR_ELEM, FF_FULLBRIGHT|12, 3, {NULL}, 0, 0, S_ELEMF2 }, // S_ELEMF1
-	{SPR_ELEM, FF_FULLBRIGHT|13, 3, {NULL}, 0, 0, S_ELEMF3 }, // S_ELEMF2
-	{SPR_ELEM, FF_FULLBRIGHT|14, 3, {NULL}, 0, 0, S_ELEMF4 }, // S_ELEMF3
-	{SPR_ELEM, FF_FULLBRIGHT|15, 3, {NULL}, 0, 0, S_ELEMF5 }, // S_ELEMF4
-	{SPR_ELEM, FF_FULLBRIGHT|16, 3, {NULL}, 0, 0, S_ELEMF6 }, // S_ELEMF5
-	{SPR_ELEM, FF_FULLBRIGHT|17, 3, {NULL}, 0, 0, S_ELEMF7 }, // S_ELEMF6
-	{SPR_ELEM, FF_FULLBRIGHT|18, 3, {NULL}, 0, 0, S_ELEMF8 }, // S_ELEMF7
-	{SPR_ELEM, FF_FULLBRIGHT|19, 3, {NULL}, 0, 0, S_ELEMF1 }, // S_ELEMF8
-
-	{SPR_ELEM, FF_FULLBRIGHT|20, 1, {NULL}, 0, 0, S_ELEMF10}, // S_ELEMF9
-	{SPR_NULL, 0,                1, {NULL}, 0, 0, S_ELEMF1 }, // S_ELEMF10
-
-	{SPR_PITY, FF_TRANS30   , 2, {NULL}, 0, 0, S_PITY2},  // S_PITY1
-	{SPR_PITY, FF_TRANS30| 1, 2, {NULL}, 0, 0, S_PITY3},  // S_PITY2
-	{SPR_PITY, FF_TRANS30| 2, 2, {NULL}, 0, 0, S_PITY4},  // S_PITY3
-	{SPR_PITY, FF_TRANS30| 3, 2, {NULL}, 0, 0, S_PITY5},  // S_PITY4
-	{SPR_PITY, FF_TRANS30| 4, 2, {NULL}, 0, 0, S_PITY6},  // S_PITY5
-	{SPR_PITY, FF_TRANS30| 5, 2, {NULL}, 0, 0, S_PITY7},  // S_PITY6
-	{SPR_PITY, FF_TRANS30| 6, 2, {NULL}, 0, 0, S_PITY8},  // S_PITY7
-	{SPR_PITY, FF_TRANS30| 7, 2, {NULL}, 0, 0, S_PITY9},  // S_PITY8
-	{SPR_PITY, FF_TRANS30| 8, 2, {NULL}, 0, 0, S_PITY10}, // S_PITY9
-	{SPR_PITY, FF_TRANS30| 9, 2, {NULL}, 0, 0, S_PITY11}, // S_PITY10
-	{SPR_PITY, FF_TRANS30|10, 2, {NULL}, 0, 0, S_PITY12}, // S_PITY11
-	{SPR_PITY, FF_TRANS30|11, 2, {NULL}, 0, 0, S_PITY1},  // S_PITY12
-
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40  , 2, {NULL}, 0, 0, S_FIRS2}, // S_FIRS1
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|1, 2, {NULL}, 0, 0, S_FIRS3}, // S_FIRS2
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|2, 2, {NULL}, 0, 0, S_FIRS4}, // S_FIRS3
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|3, 2, {NULL}, 0, 0, S_FIRS5}, // S_FIRS4
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|4, 2, {NULL}, 0, 0, S_FIRS6}, // S_FIRS5
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|5, 2, {NULL}, 0, 0, S_FIRS7}, // S_FIRS6
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|6, 2, {NULL}, 0, 0, S_FIRS8}, // S_FIRS7
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|7, 2, {NULL}, 0, 0, S_FIRS9}, // S_FIRS8
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|8, 2, {NULL}, 0, 0, S_FIRS1}, // S_FIRS9
-
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|18, 1, {NULL}, 0, 0, S_FIRS11}, // S_FIRS10
-	{SPR_NULL, 0,                           1, {NULL}, 0, 0, S_FIRS1 }, // S_FIRS11
-
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_FIRSB2}, // S_FIRSB1
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_FIRSB3}, // S_FIRSB2
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_FIRSB4}, // S_FIRSB3
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|12, 2, {NULL}, 0, 0, S_FIRSB5}, // S_FIRSB4
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|13, 2, {NULL}, 0, 0, S_FIRSB6}, // S_FIRSB5
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|14, 2, {NULL}, 0, 0, S_FIRSB7}, // S_FIRSB6
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|15, 2, {NULL}, 0, 0, S_FIRSB8}, // S_FIRSB7
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|16, 2, {NULL}, 0, 0, S_FIRSB9}, // S_FIRSB8
-	{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|17, 2, {NULL}, 0, 0, S_FIRSB1}, // S_FIRSB9
-
-	{SPR_NULL, 0,                           2, {NULL}, 0, 0, S_FIRSB1 }, // S_FIRSB10
-
-	{SPR_BUBS, FF_TRANS30  , 3, {NULL}, 0, 0, S_BUBS2}, // S_BUBS1
-	{SPR_BUBS, FF_TRANS30|1, 3, {NULL}, 0, 0, S_BUBS3}, // S_BUBS2
-	{SPR_BUBS, FF_TRANS30|2, 3, {NULL}, 0, 0, S_BUBS4}, // S_BUBS3
-	{SPR_BUBS, FF_TRANS30|3, 3, {NULL}, 0, 0, S_BUBS5}, // S_BUBS4
-	{SPR_BUBS, FF_TRANS30|4, 3, {NULL}, 0, 0, S_BUBS6}, // S_BUBS5
-	{SPR_BUBS, FF_TRANS30|5, 3, {NULL}, 0, 0, S_BUBS7}, // S_BUBS6
-	{SPR_BUBS, FF_TRANS30|6, 3, {NULL}, 0, 0, S_BUBS8}, // S_BUBS7
-	{SPR_BUBS, FF_TRANS30|7, 3, {NULL}, 0, 0, S_BUBS9}, // S_BUBS8
-	{SPR_BUBS, FF_TRANS30|8, 3, {NULL}, 0, 0, S_BUBS1}, // S_BUBS9
-
-	{SPR_NULL, 0,   3, {NULL}, 0, 0, S_BUBS1}, // S_BUBS10
-	{SPR_NULL, 0, 4*3, {NULL}, 0, 0, S_BUBS1}, // S_BUBS11
-
-	{SPR_BUBS, FF_TRANS30| 9, 3, {NULL}, 0, 0, S_BUBSB2}, // S_BUBSB1
-	{SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB3}, // S_BUBSB2
-	{SPR_BUBS, FF_TRANS30|11, 3, {NULL}, 0, 0, S_BUBSB4}, // S_BUBSB3
-	{SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB1}, // S_BUBSB4
-
-	{SPR_BUBS, FF_TRANS30|12, 3, {NULL}, 0, 0, S_BUBSB3}, // S_BUBSB5
-	{SPR_BUBS, FF_TRANS30|13, 3, {NULL}, 0, 0, S_BUBSB5}, // S_BUBSB6
-
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20   ,   2, {NULL}, 0, 0, S_ZAPS2 }, // S_ZAPS1
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1,   2, {NULL}, 0, 0, S_ZAPS3 }, // S_ZAPS2
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2,   2, {NULL}, 0, 0, S_ZAPS4 }, // S_ZAPS3
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3,   2, {NULL}, 0, 0, S_ZAPS5 }, // S_ZAPS4
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4,   2, {NULL}, 0, 0, S_ZAPS6 }, // S_ZAPS5
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5,   2, {NULL}, 0, 0, S_ZAPS7 }, // S_ZAPS6
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6,   2, {NULL}, 0, 0, S_ZAPS8 }, // S_ZAPS7
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7,   2, {NULL}, 0, 0, S_ZAPS9 }, // S_ZAPS8
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8,   2, {NULL}, 0, 0, S_ZAPS10}, // S_ZAPS9
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9,   2, {NULL}, 0, 0, S_ZAPS11}, // S_ZAPS10
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10,   2, {NULL}, 0, 0, S_ZAPS12}, // S_ZAPS11
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11,   2, {NULL}, 0, 0, S_ZAPS13}, // S_ZAPS12
-	{SPR_NULL,                           0, 9*2, {NULL}, 0, 0, S_ZAPS14}, // S_ZAPS13
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9,   2, {NULL}, 0, 0, S_ZAPS15}, // S_ZAPS14
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10,   2, {NULL}, 0, 0, S_ZAPS16}, // S_ZAPS15
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11,   2, {NULL}, 0, 0, S_ZAPS1 }, // S_ZAPS16
-
-	{SPR_NULL,                           0, 12*2, {NULL}, 0, 0, S_ZAPSB2 }, // S_ZAPSB1
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8,    2, {NULL}, 0, 0, S_ZAPSB3 }, // S_ZAPSB2
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7,    2, {NULL}, 0, 0, S_ZAPSB4 }, // S_ZAPSB3
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6,    2, {NULL}, 0, 0, S_ZAPSB5 }, // S_ZAPSB4
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5,    2, {NULL}, 0, 0, S_ZAPSB6 }, // S_ZAPSB5
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4,    2, {NULL}, 0, 0, S_ZAPSB7 }, // S_ZAPSB6
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3,    2, {NULL}, 0, 0, S_ZAPSB8 }, // S_ZAPSB7
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2,    2, {NULL}, 0, 0, S_ZAPSB9 }, // S_ZAPSB8
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1,    2, {NULL}, 0, 0, S_ZAPSB10}, // S_ZAPSB9
-	{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20   ,    2, {NULL}, 0, 0, S_ZAPSB11}, // S_ZAPSB10
-	{SPR_NULL,                           0, 15*2, {NULL}, 0, 0, S_ZAPSB2 }, // S_ZAPSB11
+	STATE(SPR_ARMA, FF_TRANS40   , 2, {NULL}, 0, 0, S_ARMA2 ), // S_ARMA1
+	STATE(SPR_ARMA, FF_TRANS40| 1, 2, {NULL}, 0, 0, S_ARMA3 ), // S_ARMA2
+	STATE(SPR_ARMA, FF_TRANS40| 2, 2, {NULL}, 0, 0, S_ARMA4 ), // S_ARMA3
+	STATE(SPR_ARMA, FF_TRANS40| 3, 2, {NULL}, 0, 0, S_ARMA5 ), // S_ARMA4
+	STATE(SPR_ARMA, FF_TRANS40| 4, 2, {NULL}, 0, 0, S_ARMA6 ), // S_ARMA5
+	STATE(SPR_ARMA, FF_TRANS40| 5, 2, {NULL}, 0, 0, S_ARMA7 ), // S_ARMA6
+	STATE(SPR_ARMA, FF_TRANS40| 6, 2, {NULL}, 0, 0, S_ARMA8 ), // S_ARMA7
+	STATE(SPR_ARMA, FF_TRANS40| 7, 2, {NULL}, 0, 0, S_ARMA9 ), // S_ARMA8
+	STATE(SPR_ARMA, FF_TRANS40| 8, 2, {NULL}, 0, 0, S_ARMA10), // S_ARMA9
+	STATE(SPR_ARMA, FF_TRANS40| 9, 2, {NULL}, 0, 0, S_ARMA11), // S_ARMA10
+	STATE(SPR_ARMA, FF_TRANS40|10, 2, {NULL}, 0, 0, S_ARMA12), // S_ARMA11
+	STATE(SPR_ARMA, FF_TRANS40|11, 2, {NULL}, 0, 0, S_ARMA13), // S_ARMA12
+	STATE(SPR_ARMA, FF_TRANS40|12, 2, {NULL}, 0, 0, S_ARMA14), // S_ARMA13
+	STATE(SPR_ARMA, FF_TRANS40|13, 2, {NULL}, 0, 0, S_ARMA15), // S_ARMA14
+	STATE(SPR_ARMA, FF_TRANS40|14, 2, {NULL}, 0, 0, S_ARMA16), // S_ARMA15
+	STATE(SPR_ARMA, FF_TRANS40|15, 2, {NULL}, 0, 0, S_ARMA1 ), // S_ARMA16
+
+	STATE(SPR_ARMF, FF_FULLBRIGHT   , 2, {NULL}, 0, 0, S_ARMF2 ), // S_ARMF1
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF3 ), // S_ARMF2
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF4 ), // S_ARMF3
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF5 ), // S_ARMF4
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF6 ), // S_ARMF5
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF7 ), // S_ARMF6
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF8 ), // S_ARMF7
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF9 ), // S_ARMF8
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF10), // S_ARMF9
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF11), // S_ARMF10
+	STATE(SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF12), // S_ARMF11
+	STATE(SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF13), // S_ARMF12
+	STATE(SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF14), // S_ARMF13
+	STATE(SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF15), // S_ARMF14
+	STATE(SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF16), // S_ARMF15
+	STATE(SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF17), // S_ARMF16
+	STATE(SPR_ARMB, FF_FULLBRIGHT   , 2, {NULL}, 0, 0, S_ARMF18), // S_ARMF17
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 0, 0, S_ARMF19), // S_ARMF18
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 0, 0, S_ARMF20), // S_ARMF19
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 0, 0, S_ARMF21), // S_ARMF20
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 0, 0, S_ARMF22), // S_ARMF21
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 0, 0, S_ARMF23), // S_ARMF22
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 0, 0, S_ARMF24), // S_ARMF23
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 0, 0, S_ARMF25), // S_ARMF24
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 0, 0, S_ARMF26), // S_ARMF25
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 0, 0, S_ARMF27), // S_ARMF26
+	STATE(SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_ARMF28), // S_ARMF27
+	STATE(SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_ARMF29), // S_ARMF28
+	STATE(SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_ARMF30), // S_ARMF29
+	STATE(SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 0, 0, S_ARMF31), // S_ARMF30
+	STATE(SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 0, 0, S_ARMF32), // S_ARMF31
+	STATE(SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 0, 0, S_ARMF1 ), // S_ARMF32
+
+	STATE(SPR_ARMB, FF_FULLBRIGHT   , 2, {NULL}, 1, 0, S_ARMB2 ), // S_ARMB1
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB3 ), // S_ARMB2
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB4 ), // S_ARMB3
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB5 ), // S_ARMB4
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB6 ), // S_ARMB5
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB7 ), // S_ARMB6
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB8 ), // S_ARMB7
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB9 ), // S_ARMB8
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB10), // S_ARMB9
+	STATE(SPR_ARMB, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB11), // S_ARMB10
+	STATE(SPR_ARMB, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB12), // S_ARMB11
+	STATE(SPR_ARMB, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB13), // S_ARMB12
+	STATE(SPR_ARMB, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB14), // S_ARMB13
+	STATE(SPR_ARMB, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB15), // S_ARMB14
+	STATE(SPR_ARMB, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB16), // S_ARMB15
+	STATE(SPR_ARMB, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB17), // S_ARMB16
+	STATE(SPR_ARMF, FF_FULLBRIGHT   , 2, {NULL}, 1, 0, S_ARMB18), // S_ARMB17
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 1, 2, {NULL}, 1, 0, S_ARMB19), // S_ARMB18
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 2, 2, {NULL}, 1, 0, S_ARMB20), // S_ARMB19
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 3, 2, {NULL}, 1, 0, S_ARMB21), // S_ARMB20
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 4, 2, {NULL}, 1, 0, S_ARMB22), // S_ARMB21
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 5, 2, {NULL}, 1, 0, S_ARMB23), // S_ARMB22
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 6, 2, {NULL}, 1, 0, S_ARMB24), // S_ARMB23
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 7, 2, {NULL}, 1, 0, S_ARMB25), // S_ARMB24
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 8, 2, {NULL}, 1, 0, S_ARMB26), // S_ARMB25
+	STATE(SPR_ARMF, FF_FULLBRIGHT| 9, 2, {NULL}, 1, 0, S_ARMB27), // S_ARMB26
+	STATE(SPR_ARMF, FF_FULLBRIGHT|10, 2, {NULL}, 1, 0, S_ARMB28), // S_ARMB27
+	STATE(SPR_ARMF, FF_FULLBRIGHT|11, 2, {NULL}, 1, 0, S_ARMB29), // S_ARMB28
+	STATE(SPR_ARMF, FF_FULLBRIGHT|12, 2, {NULL}, 1, 0, S_ARMB30), // S_ARMB29
+	STATE(SPR_ARMF, FF_FULLBRIGHT|13, 2, {NULL}, 1, 0, S_ARMB31), // S_ARMB30
+	STATE(SPR_ARMF, FF_FULLBRIGHT|14, 2, {NULL}, 1, 0, S_ARMB32), // S_ARMB31
+	STATE(SPR_ARMF, FF_FULLBRIGHT|15, 2, {NULL}, 1, 0, S_ARMB1 ), // S_ARMB32
+
+	STATE(SPR_WIND, FF_TRANS70  , 2, {NULL}, 0, 0, S_WIND2), // S_WIND1
+	STATE(SPR_WIND, FF_TRANS70|1, 2, {NULL}, 0, 0, S_WIND3), // S_WIND2
+	STATE(SPR_WIND, FF_TRANS70|2, 2, {NULL}, 0, 0, S_WIND4), // S_WIND3
+	STATE(SPR_WIND, FF_TRANS70|3, 2, {NULL}, 0, 0, S_WIND5), // S_WIND4
+	STATE(SPR_WIND, FF_TRANS70|4, 2, {NULL}, 0, 0, S_WIND6), // S_WIND5
+	STATE(SPR_WIND, FF_TRANS70|5, 2, {NULL}, 0, 0, S_WIND7), // S_WIND6
+	STATE(SPR_WIND, FF_TRANS70|6, 2, {NULL}, 0, 0, S_WIND8), // S_WIND7
+	STATE(SPR_WIND, FF_TRANS70|7, 2, {NULL}, 0, 0, S_WIND1), // S_WIND8
+
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40   , 2, {NULL}, 0, 0, S_MAGN2 ), // S_MAGN1
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 1, 2, {NULL}, 0, 0, S_MAGN3 ), // S_MAGN2
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 2, 2, {NULL}, 0, 0, S_MAGN4 ), // S_MAGN3
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 3, 2, {NULL}, 0, 0, S_MAGN5 ), // S_MAGN4
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 4, 2, {NULL}, 0, 0, S_MAGN6 ), // S_MAGN5
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 5, 2, {NULL}, 0, 0, S_MAGN7 ), // S_MAGN6
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 6, 2, {NULL}, 0, 0, S_MAGN8 ), // S_MAGN7
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 7, 2, {NULL}, 0, 0, S_MAGN9 ), // S_MAGN8
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 8, 2, {NULL}, 0, 0, S_MAGN10), // S_MAGN9
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_MAGN11), // S_MAGN10
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_MAGN12), // S_MAGN11
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_MAGN1 ), // S_MAGN12
+
+	STATE(SPR_MAGN, FF_FULLBRIGHT|FF_TRANS10|12, 2, {NULL}, 0, 0, S_MAGN1 ), // S_MAGN13
+
+	STATE(SPR_FORC, FF_TRANS50  , 3, {NULL}, 0, 0, S_FORC2 ), // S_FORC1
+	STATE(SPR_FORC, FF_TRANS50|1, 3, {NULL}, 0, 0, S_FORC3 ), // S_FORC2
+	STATE(SPR_FORC, FF_TRANS50|2, 3, {NULL}, 0, 0, S_FORC4 ), // S_FORC3
+	STATE(SPR_FORC, FF_TRANS50|3, 3, {NULL}, 0, 0, S_FORC5 ), // S_FORC4
+	STATE(SPR_FORC, FF_TRANS50|4, 3, {NULL}, 0, 0, S_FORC6 ), // S_FORC5
+	STATE(SPR_FORC, FF_TRANS50|5, 3, {NULL}, 0, 0, S_FORC7 ), // S_FORC6
+	STATE(SPR_FORC, FF_TRANS50|6, 3, {NULL}, 0, 0, S_FORC8 ), // S_FORC7
+	STATE(SPR_FORC, FF_TRANS50|7, 3, {NULL}, 0, 0, S_FORC9 ), // S_FORC8
+	STATE(SPR_FORC, FF_TRANS50|8, 3, {NULL}, 0, 0, S_FORC10), // S_FORC9
+	STATE(SPR_FORC, FF_TRANS50|9, 3, {NULL}, 0, 0, S_FORC1 ), // S_FORC10
+
+	STATE(SPR_FORC, FF_TRANS50|10, 3, {NULL}, 0, 0, S_FORC12), // S_FORC11
+	STATE(SPR_FORC, FF_TRANS50|11, 3, {NULL}, 0, 0, S_FORC13), // S_FORC12
+	STATE(SPR_FORC, FF_TRANS50|12, 3, {NULL}, 0, 0, S_FORC14), // S_FORC13
+	STATE(SPR_FORC, FF_TRANS50|13, 3, {NULL}, 0, 0, S_FORC15), // S_FORC14
+	STATE(SPR_FORC, FF_TRANS50|14, 3, {NULL}, 0, 0, S_FORC16), // S_FORC15
+	STATE(SPR_FORC, FF_TRANS50|15, 3, {NULL}, 0, 0, S_FORC17), // S_FORC16
+	STATE(SPR_FORC, FF_TRANS50|16, 3, {NULL}, 0, 0, S_FORC18), // S_FORC17
+	STATE(SPR_FORC, FF_TRANS50|17, 3, {NULL}, 0, 0, S_FORC19), // S_FORC18
+	STATE(SPR_FORC, FF_TRANS50|18, 3, {NULL}, 0, 0, S_FORC20), // S_FORC19
+	STATE(SPR_FORC, FF_TRANS50|19, 3, {NULL}, 0, 0, S_FORC11), // S_FORC20
+
+	STATE(SPR_FORC, FF_TRANS50|20, -1, {NULL}, 0, 0, S_NULL), // S_FORC21
+
+	STATE(SPR_ELEM, FF_TRANS50   , 4, {NULL}, 0, 0, S_ELEM2 ), // S_ELEM1
+	STATE(SPR_ELEM, FF_TRANS50| 1, 4, {NULL}, 0, 0, S_ELEM3 ), // S_ELEM2
+	STATE(SPR_ELEM, FF_TRANS50| 2, 4, {NULL}, 0, 0, S_ELEM4 ), // S_ELEM3
+	STATE(SPR_ELEM, FF_TRANS50| 3, 4, {NULL}, 0, 0, S_ELEM5 ), // S_ELEM4
+	STATE(SPR_ELEM, FF_TRANS50| 4, 4, {NULL}, 0, 0, S_ELEM6 ), // S_ELEM5
+	STATE(SPR_ELEM, FF_TRANS50| 5, 4, {NULL}, 0, 0, S_ELEM7 ), // S_ELEM6
+	STATE(SPR_ELEM, FF_TRANS50| 6, 4, {NULL}, 0, 0, S_ELEM8 ), // S_ELEM7
+	STATE(SPR_ELEM, FF_TRANS50| 7, 4, {NULL}, 0, 0, S_ELEM9 ), // S_ELEM8
+	STATE(SPR_ELEM, FF_TRANS50| 8, 4, {NULL}, 0, 0, S_ELEM10), // S_ELEM9
+	STATE(SPR_ELEM, FF_TRANS50| 9, 4, {NULL}, 0, 0, S_ELEM11), // S_ELEM10
+	STATE(SPR_ELEM, FF_TRANS50|10, 4, {NULL}, 0, 0, S_ELEM12), // S_ELEM11
+	STATE(SPR_ELEM, FF_TRANS50|11, 4, {NULL}, 0, 0, S_ELEM1 ), // S_ELEM12
+
+	STATE(SPR_NULL,             0, 1, {NULL}, 0, 0, S_ELEM14), // S_ELEM13
+	STATE(SPR_ELEM, FF_TRANS50|11, 1, {NULL}, 0, 0, S_ELEM1 ), // S_ELEM14
+
+	STATE(SPR_ELEM, FF_FULLBRIGHT|12, 3, {NULL}, 0, 0, S_ELEMF2 ), // S_ELEMF1
+	STATE(SPR_ELEM, FF_FULLBRIGHT|13, 3, {NULL}, 0, 0, S_ELEMF3 ), // S_ELEMF2
+	STATE(SPR_ELEM, FF_FULLBRIGHT|14, 3, {NULL}, 0, 0, S_ELEMF4 ), // S_ELEMF3
+	STATE(SPR_ELEM, FF_FULLBRIGHT|15, 3, {NULL}, 0, 0, S_ELEMF5 ), // S_ELEMF4
+	STATE(SPR_ELEM, FF_FULLBRIGHT|16, 3, {NULL}, 0, 0, S_ELEMF6 ), // S_ELEMF5
+	STATE(SPR_ELEM, FF_FULLBRIGHT|17, 3, {NULL}, 0, 0, S_ELEMF7 ), // S_ELEMF6
+	STATE(SPR_ELEM, FF_FULLBRIGHT|18, 3, {NULL}, 0, 0, S_ELEMF8 ), // S_ELEMF7
+	STATE(SPR_ELEM, FF_FULLBRIGHT|19, 3, {NULL}, 0, 0, S_ELEMF1 ), // S_ELEMF8
+
+	STATE(SPR_ELEM, FF_FULLBRIGHT|20, 1, {NULL}, 0, 0, S_ELEMF10), // S_ELEMF9
+	STATE(SPR_NULL, 0,                1, {NULL}, 0, 0, S_ELEMF1 ), // S_ELEMF10
+
+	STATE(SPR_PITY, FF_TRANS30   , 2, {NULL}, 0, 0, S_PITY2),  // S_PITY1
+	STATE(SPR_PITY, FF_TRANS30| 1, 2, {NULL}, 0, 0, S_PITY3),  // S_PITY2
+	STATE(SPR_PITY, FF_TRANS30| 2, 2, {NULL}, 0, 0, S_PITY4),  // S_PITY3
+	STATE(SPR_PITY, FF_TRANS30| 3, 2, {NULL}, 0, 0, S_PITY5),  // S_PITY4
+	STATE(SPR_PITY, FF_TRANS30| 4, 2, {NULL}, 0, 0, S_PITY6),  // S_PITY5
+	STATE(SPR_PITY, FF_TRANS30| 5, 2, {NULL}, 0, 0, S_PITY7),  // S_PITY6
+	STATE(SPR_PITY, FF_TRANS30| 6, 2, {NULL}, 0, 0, S_PITY8),  // S_PITY7
+	STATE(SPR_PITY, FF_TRANS30| 7, 2, {NULL}, 0, 0, S_PITY9),  // S_PITY8
+	STATE(SPR_PITY, FF_TRANS30| 8, 2, {NULL}, 0, 0, S_PITY10), // S_PITY9
+	STATE(SPR_PITY, FF_TRANS30| 9, 2, {NULL}, 0, 0, S_PITY11), // S_PITY10
+	STATE(SPR_PITY, FF_TRANS30|10, 2, {NULL}, 0, 0, S_PITY12), // S_PITY11
+	STATE(SPR_PITY, FF_TRANS30|11, 2, {NULL}, 0, 0, S_PITY1),  // S_PITY12
+
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40  , 2, {NULL}, 0, 0, S_FIRS2), // S_FIRS1
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|1, 2, {NULL}, 0, 0, S_FIRS3), // S_FIRS2
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|2, 2, {NULL}, 0, 0, S_FIRS4), // S_FIRS3
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|3, 2, {NULL}, 0, 0, S_FIRS5), // S_FIRS4
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|4, 2, {NULL}, 0, 0, S_FIRS6), // S_FIRS5
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|5, 2, {NULL}, 0, 0, S_FIRS7), // S_FIRS6
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|6, 2, {NULL}, 0, 0, S_FIRS8), // S_FIRS7
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|7, 2, {NULL}, 0, 0, S_FIRS9), // S_FIRS8
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|8, 2, {NULL}, 0, 0, S_FIRS1), // S_FIRS9
+
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|18, 1, {NULL}, 0, 0, S_FIRS11), // S_FIRS10
+	STATE(SPR_NULL, 0,                           1, {NULL}, 0, 0, S_FIRS1 ), // S_FIRS11
+
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_FIRSB2), // S_FIRSB1
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_FIRSB3), // S_FIRSB2
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_FIRSB4), // S_FIRSB3
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|12, 2, {NULL}, 0, 0, S_FIRSB5), // S_FIRSB4
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|13, 2, {NULL}, 0, 0, S_FIRSB6), // S_FIRSB5
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|14, 2, {NULL}, 0, 0, S_FIRSB7), // S_FIRSB6
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|15, 2, {NULL}, 0, 0, S_FIRSB8), // S_FIRSB7
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|16, 2, {NULL}, 0, 0, S_FIRSB9), // S_FIRSB8
+	STATE(SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|17, 2, {NULL}, 0, 0, S_FIRSB1), // S_FIRSB9
+
+	STATE(SPR_NULL, 0,                           2, {NULL}, 0, 0, S_FIRSB1 ), // S_FIRSB10
+
+	STATE(SPR_BUBS, FF_TRANS30  , 3, {NULL}, 0, 0, S_BUBS2), // S_BUBS1
+	STATE(SPR_BUBS, FF_TRANS30|1, 3, {NULL}, 0, 0, S_BUBS3), // S_BUBS2
+	STATE(SPR_BUBS, FF_TRANS30|2, 3, {NULL}, 0, 0, S_BUBS4), // S_BUBS3
+	STATE(SPR_BUBS, FF_TRANS30|3, 3, {NULL}, 0, 0, S_BUBS5), // S_BUBS4
+	STATE(SPR_BUBS, FF_TRANS30|4, 3, {NULL}, 0, 0, S_BUBS6), // S_BUBS5
+	STATE(SPR_BUBS, FF_TRANS30|5, 3, {NULL}, 0, 0, S_BUBS7), // S_BUBS6
+	STATE(SPR_BUBS, FF_TRANS30|6, 3, {NULL}, 0, 0, S_BUBS8), // S_BUBS7
+	STATE(SPR_BUBS, FF_TRANS30|7, 3, {NULL}, 0, 0, S_BUBS9), // S_BUBS8
+	STATE(SPR_BUBS, FF_TRANS30|8, 3, {NULL}, 0, 0, S_BUBS1), // S_BUBS9
+
+	STATE(SPR_NULL, 0,   3, {NULL}, 0, 0, S_BUBS1), // S_BUBS10
+	STATE(SPR_NULL, 0, 4*3, {NULL}, 0, 0, S_BUBS1), // S_BUBS11
+
+	STATE(SPR_BUBS, FF_TRANS30| 9, 3, {NULL}, 0, 0, S_BUBSB2), // S_BUBSB1
+	STATE(SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB3), // S_BUBSB2
+	STATE(SPR_BUBS, FF_TRANS30|11, 3, {NULL}, 0, 0, S_BUBSB4), // S_BUBSB3
+	STATE(SPR_BUBS, FF_TRANS30|10, 3, {NULL}, 0, 0, S_BUBSB1), // S_BUBSB4
+
+	STATE(SPR_BUBS, FF_TRANS30|12, 3, {NULL}, 0, 0, S_BUBSB3), // S_BUBSB5
+	STATE(SPR_BUBS, FF_TRANS30|13, 3, {NULL}, 0, 0, S_BUBSB5), // S_BUBSB6
+
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20   ,   2, {NULL}, 0, 0, S_ZAPS2 ), // S_ZAPS1
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1,   2, {NULL}, 0, 0, S_ZAPS3 ), // S_ZAPS2
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2,   2, {NULL}, 0, 0, S_ZAPS4 ), // S_ZAPS3
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3,   2, {NULL}, 0, 0, S_ZAPS5 ), // S_ZAPS4
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4,   2, {NULL}, 0, 0, S_ZAPS6 ), // S_ZAPS5
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5,   2, {NULL}, 0, 0, S_ZAPS7 ), // S_ZAPS6
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6,   2, {NULL}, 0, 0, S_ZAPS8 ), // S_ZAPS7
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7,   2, {NULL}, 0, 0, S_ZAPS9 ), // S_ZAPS8
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8,   2, {NULL}, 0, 0, S_ZAPS10), // S_ZAPS9
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9,   2, {NULL}, 0, 0, S_ZAPS11), // S_ZAPS10
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10,   2, {NULL}, 0, 0, S_ZAPS12), // S_ZAPS11
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11,   2, {NULL}, 0, 0, S_ZAPS13), // S_ZAPS12
+	STATE(SPR_NULL,                           0, 9*2, {NULL}, 0, 0, S_ZAPS14), // S_ZAPS13
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9,   2, {NULL}, 0, 0, S_ZAPS15), // S_ZAPS14
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10,   2, {NULL}, 0, 0, S_ZAPS16), // S_ZAPS15
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11,   2, {NULL}, 0, 0, S_ZAPS1 ), // S_ZAPS16
+
+	STATE(SPR_NULL,                           0, 12*2, {NULL}, 0, 0, S_ZAPSB2 ), // S_ZAPSB1
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8,    2, {NULL}, 0, 0, S_ZAPSB3 ), // S_ZAPSB2
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7,    2, {NULL}, 0, 0, S_ZAPSB4 ), // S_ZAPSB3
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6,    2, {NULL}, 0, 0, S_ZAPSB5 ), // S_ZAPSB4
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5,    2, {NULL}, 0, 0, S_ZAPSB6 ), // S_ZAPSB5
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4,    2, {NULL}, 0, 0, S_ZAPSB7 ), // S_ZAPSB6
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3,    2, {NULL}, 0, 0, S_ZAPSB8 ), // S_ZAPSB7
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2,    2, {NULL}, 0, 0, S_ZAPSB9 ), // S_ZAPSB8
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1,    2, {NULL}, 0, 0, S_ZAPSB10), // S_ZAPSB9
+	STATE(SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20   ,    2, {NULL}, 0, 0, S_ZAPSB11), // S_ZAPSB10
+	STATE(SPR_NULL,                           0, 15*2, {NULL}, 0, 0, S_ZAPSB2 ), // S_ZAPSB11
 
 	// Thunder spark
-	{SPR_SSPK, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL},   // S_THUNDERCOIN_SPARK
+	STATE(SPR_SSPK, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 1, 2, S_NULL),   // S_THUNDERCOIN_SPARK
 
 	// Invincibility Sparkles
-	{SPR_IVSP, FF_ANIMATE|FF_FULLBRIGHT, 32, {NULL}, 31, 1, S_NULL},   // S_IVSP
+	STATE(SPR_IVSP, FF_ANIMATE|FF_FULLBRIGHT, 32, {NULL}, 31, 1, S_NULL),   // S_IVSP
 
 	// Super Sonic Spark
-	{SPR_SSPK,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK2}, // S_SSPK1
-	{SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK3}, // S_SSPK2
-	{SPR_SSPK, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK4}, // S_SSPK3
-	{SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK5}, // S_SSPK4
-	{SPR_SSPK,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL},  // S_SSPK5
+	STATE(SPR_SSPK,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK2), // S_SSPK1
+	STATE(SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK3), // S_SSPK2
+	STATE(SPR_SSPK, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK4), // S_SSPK3
+	STATE(SPR_SSPK, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SSPK5), // S_SSPK4
+	STATE(SPR_SSPK,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL),  // S_SSPK5
 
 	// Flicky-sized bubble
-	{SPR_FBUB, 0, -1, {NULL}, 0, 0, S_NULL}, // S_FLICKY_BUBBLE
+	STATE(SPR_FBUB, 0, -1, {NULL}, 0, 0, S_NULL), // S_FLICKY_BUBBLE
 
 	// Bluebird
-	{SPR_FL01, 0, 2, {A_FlickyCheck}, S_FLICKY_01_FLAP1, S_FLICKY_01_FLAP1, S_FLICKY_01_OUT},   // S_FLICKY_01_OUT
-	{SPR_FL01, 1, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP2}, // S_FLICKY_01_FLAP1
-	{SPR_FL01, 2, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP3}, // S_FLICKY_01_FLAP2
-	{SPR_FL01, 3, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP1}, // S_FLICKY_01_FLAP3
-	{SPR_FL01, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL},                                         // S_FLICKY_01_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_01, 384*FRACUNIT, S_FLICKY_01_CENTER},        // S_FLICKY_01_CENTER
+	STATE(SPR_FL01, 0, 2, {A_FlickyCheck}, S_FLICKY_01_FLAP1, S_FLICKY_01_FLAP1, S_FLICKY_01_OUT),   // S_FLICKY_01_OUT
+	STATE(SPR_FL01, 1, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP2), // S_FLICKY_01_FLAP1
+	STATE(SPR_FL01, 2, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP3), // S_FLICKY_01_FLAP2
+	STATE(SPR_FL01, 3, 3, {A_FlickyFly},          4*FRACUNIT,       16*FRACUNIT, S_FLICKY_01_FLAP1), // S_FLICKY_01_FLAP3
+	STATE(SPR_FL01, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL),                                         // S_FLICKY_01_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_01, 384*FRACUNIT, S_FLICKY_01_CENTER),        // S_FLICKY_01_CENTER
 
 	// Rabbit
-	{SPR_FL02, 0, 2, {A_FlickyCheck}, S_FLICKY_02_AIM,                0, S_FLICKY_02_OUT},  // S_FLICKY_02_OUT
-	{SPR_FL02, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_02_HOP},  // S_FLICKY_02_AIM
-	{SPR_FL02, 1, 1, {A_FlickyHop},        6*FRACUNIT,       4*FRACUNIT, S_FLICKY_02_UP},   // S_FLICKY_02_HOP
-	{SPR_FL02, 2, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, S_FLICKY_02_DOWN, S_FLICKY_02_UP},   // S_FLICKY_02_UP
-	{SPR_FL02, 3, 2, {A_FlickyCheck}, S_FLICKY_02_AIM,                0, S_FLICKY_02_DOWN}, // S_FLICKY_02_DOWN
-	{SPR_FL02, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_02_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_02, 384*FRACUNIT, S_FLICKY_02_CENTER},        // S_FLICKY_02_CENTER
+	STATE(SPR_FL02, 0, 2, {A_FlickyCheck}, S_FLICKY_02_AIM,                0, S_FLICKY_02_OUT),  // S_FLICKY_02_OUT
+	STATE(SPR_FL02, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_02_HOP),  // S_FLICKY_02_AIM
+	STATE(SPR_FL02, 1, 1, {A_FlickyHop},        6*FRACUNIT,       4*FRACUNIT, S_FLICKY_02_UP),   // S_FLICKY_02_HOP
+	STATE(SPR_FL02, 2, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, S_FLICKY_02_DOWN, S_FLICKY_02_UP),   // S_FLICKY_02_UP
+	STATE(SPR_FL02, 3, 2, {A_FlickyCheck}, S_FLICKY_02_AIM,                0, S_FLICKY_02_DOWN), // S_FLICKY_02_DOWN
+	STATE(SPR_FL02, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_02_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_02, 384*FRACUNIT, S_FLICKY_02_CENTER),        // S_FLICKY_02_CENTER
 
 	// Chicken
-	{SPR_FL03, 0, 2, {A_FlickyCheck},   S_FLICKY_03_AIM, S_FLICKY_03_FLAP1, S_FLICKY_03_OUT},   // S_FLICKY_03_OUT
-	{SPR_FL03, 1, 1, {A_FlickyAim},            ANGLE_45,       32*FRACUNIT, S_FLICKY_03_HOP},   // S_FLICKY_03_AIM
-	{SPR_FL03, 1, 1, {A_FlickyHop},          7*FRACUNIT,        2*FRACUNIT, S_FLICKY_03_UP},    // S_FLICKY_03_HOP
-	{SPR_FL03, 2, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, S_FLICKY_03_FLAP1, S_FLICKY_03_UP},    // S_FLICKY_03_UP
-	{SPR_FL03, 3, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP,                 0, S_FLICKY_03_FLAP2}, // S_FLICKY_03_FLAP1
-	{SPR_FL03, 4, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP,                 0, S_FLICKY_03_FLAP1}, // S_FLICKY_03_FLAP2
-	{SPR_FL03, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_03_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_03, 384*FRACUNIT, S_FLICKY_03_CENTER},        // S_FLICKY_03_CENTER
+	STATE(SPR_FL03, 0, 2, {A_FlickyCheck},   S_FLICKY_03_AIM, S_FLICKY_03_FLAP1, S_FLICKY_03_OUT),   // S_FLICKY_03_OUT
+	STATE(SPR_FL03, 1, 1, {A_FlickyAim},            ANGLE_45,       32*FRACUNIT, S_FLICKY_03_HOP),   // S_FLICKY_03_AIM
+	STATE(SPR_FL03, 1, 1, {A_FlickyHop},          7*FRACUNIT,        2*FRACUNIT, S_FLICKY_03_UP),    // S_FLICKY_03_HOP
+	STATE(SPR_FL03, 2, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, S_FLICKY_03_FLAP1, S_FLICKY_03_UP),    // S_FLICKY_03_UP
+	STATE(SPR_FL03, 3, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP,                 0, S_FLICKY_03_FLAP2), // S_FLICKY_03_FLAP1
+	STATE(SPR_FL03, 4, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP,                 0, S_FLICKY_03_FLAP1), // S_FLICKY_03_FLAP2
+	STATE(SPR_FL03, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_03_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_03, 384*FRACUNIT, S_FLICKY_03_CENTER),        // S_FLICKY_03_CENTER
 
 	// Seal
-	{SPR_FL04, 0, 2, {A_FlickyCheck}, S_FLICKY_04_AIM,                 0, S_FLICKY_04_OUT},   // S_FLICKY_04_OUT
-	{SPR_FL04, 1, 1, {A_FlickyAim},             ANG30,       32*FRACUNIT, S_FLICKY_04_HOP},   // S_FLICKY_04_AIM
-	{SPR_FL04, 1, 1, {A_FlickyHop},        3*FRACUNIT,        2*FRACUNIT, S_FLICKY_04_UP},    // S_FLICKY_04_HOP
-	{SPR_FL04, 2, 4, {A_FlickyCheck}, S_FLICKY_04_AIM,  S_FLICKY_04_DOWN, S_FLICKY_04_UP},    // S_FLICKY_04_UP
-	{SPR_FL04, 3, 4, {A_FlickyCheck}, S_FLICKY_04_AIM,                 0, S_FLICKY_04_DOWN},  // S_FLICKY_04_DOWN
-	{SPR_FL04, 3, 4, {A_FlickyFly},        2*FRACUNIT,       48*FRACUNIT, S_FLICKY_04_SWIM2}, // S_FLICKY_04_SWIM1
-	{SPR_FL04, 4, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM3}, // S_FLICKY_04_SWIM2
-	{SPR_FL04, 3, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM4}, // S_FLICKY_04_SWIM3
-	{SPR_FL04, 5, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM1}, // S_FLICKY_04_SWIM4
-	{SPR_FL04, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_04_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_04, 384*FRACUNIT, S_FLICKY_04_CENTER},        // S_FLICKY_04_CENTER
+	STATE(SPR_FL04, 0, 2, {A_FlickyCheck}, S_FLICKY_04_AIM,                 0, S_FLICKY_04_OUT),   // S_FLICKY_04_OUT
+	STATE(SPR_FL04, 1, 1, {A_FlickyAim},             ANG30,       32*FRACUNIT, S_FLICKY_04_HOP),   // S_FLICKY_04_AIM
+	STATE(SPR_FL04, 1, 1, {A_FlickyHop},        3*FRACUNIT,        2*FRACUNIT, S_FLICKY_04_UP),    // S_FLICKY_04_HOP
+	STATE(SPR_FL04, 2, 4, {A_FlickyCheck}, S_FLICKY_04_AIM,  S_FLICKY_04_DOWN, S_FLICKY_04_UP),    // S_FLICKY_04_UP
+	STATE(SPR_FL04, 3, 4, {A_FlickyCheck}, S_FLICKY_04_AIM,                 0, S_FLICKY_04_DOWN),  // S_FLICKY_04_DOWN
+	STATE(SPR_FL04, 3, 4, {A_FlickyFly},        2*FRACUNIT,       48*FRACUNIT, S_FLICKY_04_SWIM2), // S_FLICKY_04_SWIM1
+	STATE(SPR_FL04, 4, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM3), // S_FLICKY_04_SWIM2
+	STATE(SPR_FL04, 3, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM4), // S_FLICKY_04_SWIM3
+	STATE(SPR_FL04, 5, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM1), // S_FLICKY_04_SWIM4
+	STATE(SPR_FL04, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_04_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_04, 384*FRACUNIT, S_FLICKY_04_CENTER),        // S_FLICKY_04_CENTER
 
 	// Pig
-	{SPR_FL05, 0, 2, {A_FlickyCheck}, S_FLICKY_05_AIM,                0, S_FLICKY_05_OUT},  // S_FLICKY_05_OUT
-	{SPR_FL05, 1, 1, {A_FlickyAim},             ANG20,      32*FRACUNIT, S_FLICKY_05_HOP},  // S_FLICKY_05_AIM
-	{SPR_FL05, 1, 1, {A_FlickyHop},        4*FRACUNIT,       3*FRACUNIT, S_FLICKY_05_UP},   // S_FLICKY_05_HOP
-	{SPR_FL05, 2, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, S_FLICKY_05_DOWN, S_FLICKY_05_UP},   // S_FLICKY_05_UP
-	{SPR_FL05, 3, 2, {A_FlickyCheck}, S_FLICKY_05_AIM,                0, S_FLICKY_05_DOWN}, // S_FLICKY_05_DOWN
-	{SPR_FL05, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_05_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_05, 384*FRACUNIT, S_FLICKY_05_CENTER},        // S_FLICKY_05_CENTER
+	STATE(SPR_FL05, 0, 2, {A_FlickyCheck}, S_FLICKY_05_AIM,                0, S_FLICKY_05_OUT),  // S_FLICKY_05_OUT
+	STATE(SPR_FL05, 1, 1, {A_FlickyAim},             ANG20,      32*FRACUNIT, S_FLICKY_05_HOP),  // S_FLICKY_05_AIM
+	STATE(SPR_FL05, 1, 1, {A_FlickyHop},        4*FRACUNIT,       3*FRACUNIT, S_FLICKY_05_UP),   // S_FLICKY_05_HOP
+	STATE(SPR_FL05, 2, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, S_FLICKY_05_DOWN, S_FLICKY_05_UP),   // S_FLICKY_05_UP
+	STATE(SPR_FL05, 3, 2, {A_FlickyCheck}, S_FLICKY_05_AIM,                0, S_FLICKY_05_DOWN), // S_FLICKY_05_DOWN
+	STATE(SPR_FL05, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_05_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_05, 384*FRACUNIT, S_FLICKY_05_CENTER),        // S_FLICKY_05_CENTER
 
 	// Chipmunk
-	{SPR_FL06, 0, 2, {A_FlickyCheck}, S_FLICKY_06_AIM,                0, S_FLICKY_06_OUT},  // S_FLICKY_06_OUT
-	{SPR_FL06, 1, 1, {A_FlickyAim},          ANGLE_90,      32*FRACUNIT, S_FLICKY_06_HOP},  // S_FLICKY_06_AIM
-	{SPR_FL06, 1, 1, {A_FlickyHop},        5*FRACUNIT,       6*FRACUNIT, S_FLICKY_06_UP},   // S_FLICKY_06_HOP
-	{SPR_FL06, 2, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, S_FLICKY_06_DOWN, S_FLICKY_06_UP},   // S_FLICKY_06_UP
-	{SPR_FL06, 3, 2, {A_FlickyCheck}, S_FLICKY_06_AIM,                0, S_FLICKY_06_DOWN}, // S_FLICKY_06_DOWN
-	{SPR_FL06, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_06_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_06, 384*FRACUNIT, S_FLICKY_06_CENTER},        // S_FLICKY_06_CENTER
+	STATE(SPR_FL06, 0, 2, {A_FlickyCheck}, S_FLICKY_06_AIM,                0, S_FLICKY_06_OUT),  // S_FLICKY_06_OUT
+	STATE(SPR_FL06, 1, 1, {A_FlickyAim},          ANGLE_90,      32*FRACUNIT, S_FLICKY_06_HOP),  // S_FLICKY_06_AIM
+	STATE(SPR_FL06, 1, 1, {A_FlickyHop},        5*FRACUNIT,       6*FRACUNIT, S_FLICKY_06_UP),   // S_FLICKY_06_HOP
+	STATE(SPR_FL06, 2, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, S_FLICKY_06_DOWN, S_FLICKY_06_UP),   // S_FLICKY_06_UP
+	STATE(SPR_FL06, 3, 2, {A_FlickyCheck}, S_FLICKY_06_AIM,                0, S_FLICKY_06_DOWN), // S_FLICKY_06_DOWN
+	STATE(SPR_FL06, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_06_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_06, 384*FRACUNIT, S_FLICKY_06_CENTER),        // S_FLICKY_06_CENTER
 
 	// Penguin
-	{SPR_FL07, 0, 2, {A_FlickyCheck}, S_FLICKY_07_AIML,                 0, S_FLICKY_07_OUT},   // S_FLICKY_07_OUT
-	{SPR_FL07, 1, 1, {A_FlickyAim},              ANG30,       32*FRACUNIT, S_FLICKY_07_HOPL},  // S_FLICKY_07_AIML
-	{SPR_FL07, 1, 1, {A_FlickyHop},         4*FRACUNIT,        2*FRACUNIT, S_FLICKY_07_UPL},   // S_FLICKY_07_HOPL
-	{SPR_FL07, 2, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR, S_FLICKY_07_DOWNL, S_FLICKY_07_UPL},   // S_FLICKY_07_UPL
-	{SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR,                 0, S_FLICKY_07_DOWNL}, // S_FLICKY_07_DOWNL
-	{SPR_FL07, 1, 1, {A_FlickyAim},              ANG30,       32*FRACUNIT, S_FLICKY_07_HOPR},  // S_FLICKY_07_AIMR
-	{SPR_FL07, 1, 1, {A_FlickyHop},         4*FRACUNIT,        2*FRACUNIT, S_FLICKY_07_UPR},   // S_FLICKY_07_HOPR
-	{SPR_FL07, 3, 4, {A_FlickyCheck}, S_FLICKY_07_AIML, S_FLICKY_07_DOWNR, S_FLICKY_07_UPR},   // S_FLICKY_07_UPR
-	{SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIML,                 0, S_FLICKY_07_DOWNR}, // S_FLICKY_07_DOWNR
-	{SPR_FL07, 4, 4, {A_FlickyFly},         3*FRACUNIT,       72*FRACUNIT, S_FLICKY_07_SWIM2}, // S_FLICKY_07_SWIM1
-	{SPR_FL07, 5, 4, {A_FlickyCoast},         FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3}, // S_FLICKY_07_SWIM2
-	{SPR_FL07, 6, 4, {A_FlickyCoast},       2*FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3}, // S_FLICKY_07_SWIM3
-	{SPR_FL07, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_07_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_07, 384*FRACUNIT, S_FLICKY_07_CENTER},        // S_FLICKY_07_CENTER
+	STATE(SPR_FL07, 0, 2, {A_FlickyCheck}, S_FLICKY_07_AIML,                 0, S_FLICKY_07_OUT),   // S_FLICKY_07_OUT
+	STATE(SPR_FL07, 1, 1, {A_FlickyAim},              ANG30,       32*FRACUNIT, S_FLICKY_07_HOPL),  // S_FLICKY_07_AIML
+	STATE(SPR_FL07, 1, 1, {A_FlickyHop},         4*FRACUNIT,        2*FRACUNIT, S_FLICKY_07_UPL),   // S_FLICKY_07_HOPL
+	STATE(SPR_FL07, 2, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR, S_FLICKY_07_DOWNL, S_FLICKY_07_UPL),   // S_FLICKY_07_UPL
+	STATE(SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIMR,                 0, S_FLICKY_07_DOWNL), // S_FLICKY_07_DOWNL
+	STATE(SPR_FL07, 1, 1, {A_FlickyAim},              ANG30,       32*FRACUNIT, S_FLICKY_07_HOPR),  // S_FLICKY_07_AIMR
+	STATE(SPR_FL07, 1, 1, {A_FlickyHop},         4*FRACUNIT,        2*FRACUNIT, S_FLICKY_07_UPR),   // S_FLICKY_07_HOPR
+	STATE(SPR_FL07, 3, 4, {A_FlickyCheck}, S_FLICKY_07_AIML, S_FLICKY_07_DOWNR, S_FLICKY_07_UPR),   // S_FLICKY_07_UPR
+	STATE(SPR_FL07, 1, 4, {A_FlickyCheck}, S_FLICKY_07_AIML,                 0, S_FLICKY_07_DOWNR), // S_FLICKY_07_DOWNR
+	STATE(SPR_FL07, 4, 4, {A_FlickyFly},         3*FRACUNIT,       72*FRACUNIT, S_FLICKY_07_SWIM2), // S_FLICKY_07_SWIM1
+	STATE(SPR_FL07, 5, 4, {A_FlickyCoast},         FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3), // S_FLICKY_07_SWIM2
+	STATE(SPR_FL07, 6, 4, {A_FlickyCoast},       2*FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3), // S_FLICKY_07_SWIM3
+	STATE(SPR_FL07, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_07_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_07, 384*FRACUNIT, S_FLICKY_07_CENTER),        // S_FLICKY_07_CENTER
 
 	// Fish
-	{SPR_FL08, 0, 2, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_OUT},   // S_FLICKY_08_OUT
-	{SPR_FL08, 2, 1, {A_FlickyAim},             ANG30,       32*FRACUNIT, S_FLICKY_08_HOP},   // S_FLICKY_08_AIM
-	{SPR_FL08, 2, 1, {A_FlickyFlounder},   2*FRACUNIT,        1*FRACUNIT, S_FLICKY_08_FLAP1}, // S_FLICKY_08_HOP
-	{SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP2}, // S_FLICKY_08_FLAP1
-	{SPR_FL08, 1, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP3}, // S_FLICKY_08_FLAP2
-	{SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP4}, // S_FLICKY_08_FLAP3
-	{SPR_FL08, 2, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP1}, // S_FLICKY_08_FLAP4
-	{SPR_FL08, 0, 4, {A_FlickyFly},        3*FRACUNIT,       64*FRACUNIT, S_FLICKY_08_SWIM2}, // S_FLICKY_08_SWIM1
-	{SPR_FL08, 1, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM3}, // S_FLICKY_08_SWIM2
-	{SPR_FL08, 0, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4}, // S_FLICKY_08_SWIM3
-	{SPR_FL08, 2, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4}, // S_FLICKY_08_SWIM4
-	{SPR_FL08, FF_ANIMATE, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_08_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_08, 384*FRACUNIT, S_FLICKY_08_CENTER},        // S_FLICKY_08_CENTER
+	STATE(SPR_FL08, 0, 2, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_OUT),   // S_FLICKY_08_OUT
+	STATE(SPR_FL08, 2, 1, {A_FlickyAim},             ANG30,       32*FRACUNIT, S_FLICKY_08_HOP),   // S_FLICKY_08_AIM
+	STATE(SPR_FL08, 2, 1, {A_FlickyFlounder},   2*FRACUNIT,        1*FRACUNIT, S_FLICKY_08_FLAP1), // S_FLICKY_08_HOP
+	STATE(SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP2), // S_FLICKY_08_FLAP1
+	STATE(SPR_FL08, 1, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP3), // S_FLICKY_08_FLAP2
+	STATE(SPR_FL08, 0, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP4), // S_FLICKY_08_FLAP3
+	STATE(SPR_FL08, 2, 4, {A_FlickyCheck}, S_FLICKY_08_AIM,                 0, S_FLICKY_08_FLAP1), // S_FLICKY_08_FLAP4
+	STATE(SPR_FL08, 0, 4, {A_FlickyFly},        3*FRACUNIT,       64*FRACUNIT, S_FLICKY_08_SWIM2), // S_FLICKY_08_SWIM1
+	STATE(SPR_FL08, 1, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM3), // S_FLICKY_08_SWIM2
+	STATE(SPR_FL08, 0, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4), // S_FLICKY_08_SWIM3
+	STATE(SPR_FL08, 2, 4, {A_FlickyCoast},        FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4), // S_FLICKY_08_SWIM4
+	STATE(SPR_FL08, FF_ANIMATE, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_08_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_08, 384*FRACUNIT, S_FLICKY_08_CENTER),        // S_FLICKY_08_CENTER
 
 	// Ram
-	{SPR_FL09, 0, 2, {A_FlickyCheck}, S_FLICKY_09_AIM,                0, S_FLICKY_09_OUT},  // S_FLICKY_09_OUT
-	{SPR_FL09, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_09_HOP},  // S_FLICKY_09_AIM
-	{SPR_FL09, 1, 1, {A_FlickyHop},        7*FRACUNIT,       2*FRACUNIT, S_FLICKY_09_UP},   // S_FLICKY_09_HOP
-	{SPR_FL09, 2, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, S_FLICKY_09_DOWN, S_FLICKY_09_UP},   // S_FLICKY_09_UP
-	{SPR_FL09, 3, 2, {A_FlickyCheck}, S_FLICKY_09_AIM,                0, S_FLICKY_09_DOWN}, // S_FLICKY_09_DOWN
-	{SPR_FL09, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_09_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_09, 384*FRACUNIT, S_FLICKY_09_CENTER},        // S_FLICKY_09_CENTER
+	STATE(SPR_FL09, 0, 2, {A_FlickyCheck}, S_FLICKY_09_AIM,                0, S_FLICKY_09_OUT),  // S_FLICKY_09_OUT
+	STATE(SPR_FL09, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_09_HOP),  // S_FLICKY_09_AIM
+	STATE(SPR_FL09, 1, 1, {A_FlickyHop},        7*FRACUNIT,       2*FRACUNIT, S_FLICKY_09_UP),   // S_FLICKY_09_HOP
+	STATE(SPR_FL09, 2, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, S_FLICKY_09_DOWN, S_FLICKY_09_UP),   // S_FLICKY_09_UP
+	STATE(SPR_FL09, 3, 2, {A_FlickyCheck}, S_FLICKY_09_AIM,                0, S_FLICKY_09_DOWN), // S_FLICKY_09_DOWN
+	STATE(SPR_FL09, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_09_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_09, 384*FRACUNIT, S_FLICKY_09_CENTER),        // S_FLICKY_09_CENTER
 
 	// Puffin
-	{SPR_FL10, 0, 2, {A_FlickyCheck}, S_FLICKY_10_FLAP1, S_FLICKY_10_FLAP1, S_FLICKY_10_OUT},   // S_FLICKY_10_OUT
-	{SPR_FL10, 1, 3, {A_FlickySoar},         4*FRACUNIT,       16*FRACUNIT, S_FLICKY_10_FLAP2}, // S_FLICKY_10_FLAP1
-	{SPR_FL10, 2, 3, {A_FlickySoar},         4*FRACUNIT,       16*FRACUNIT, S_FLICKY_10_FLAP1}, // S_FLICKY_10_FLAP2
-	{SPR_FL10, FF_ANIMATE|1, -1, {NULL}, 1, 3, S_NULL}, // S_FLICKY_10_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_10, 384*FRACUNIT, S_FLICKY_10_CENTER},        // S_FLICKY_10_CENTER
+	STATE(SPR_FL10, 0, 2, {A_FlickyCheck}, S_FLICKY_10_FLAP1, S_FLICKY_10_FLAP1, S_FLICKY_10_OUT),   // S_FLICKY_10_OUT
+	STATE(SPR_FL10, 1, 3, {A_FlickySoar},         4*FRACUNIT,       16*FRACUNIT, S_FLICKY_10_FLAP2), // S_FLICKY_10_FLAP1
+	STATE(SPR_FL10, 2, 3, {A_FlickySoar},         4*FRACUNIT,       16*FRACUNIT, S_FLICKY_10_FLAP1), // S_FLICKY_10_FLAP2
+	STATE(SPR_FL10, FF_ANIMATE|1, -1, {NULL}, 1, 3, S_NULL), // S_FLICKY_10_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_10, 384*FRACUNIT, S_FLICKY_10_CENTER),        // S_FLICKY_10_CENTER
 
 	// Cow
-	{SPR_FL11, 0, 2, {A_FlickyCheck}, S_FLICKY_11_AIM,           0, S_FLICKY_11_OUT},  // S_FLICKY_11_OUT
-	{SPR_FL11, 1, 1, {A_FlickyAim},          ANGLE_90, 64*FRACUNIT, S_FLICKY_11_RUN1}, // S_FLICKY_11_AIM
-	{SPR_FL11, 1, 3, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_RUN2}, // S_FLICKY_11_RUN1
-	{SPR_FL11, 2, 4, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_RUN3}, // S_FLICKY_11_RUN2
-	{SPR_FL11, 3, 4, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_AIM},  // S_FLICKY_11_RUN3
-	{SPR_FL11, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_11_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_11, 384*FRACUNIT, S_FLICKY_11_CENTER},        // S_FLICKY_11_CENTER
+	STATE(SPR_FL11, 0, 2, {A_FlickyCheck}, S_FLICKY_11_AIM,           0, S_FLICKY_11_OUT),  // S_FLICKY_11_OUT
+	STATE(SPR_FL11, 1, 1, {A_FlickyAim},          ANGLE_90, 64*FRACUNIT, S_FLICKY_11_RUN1), // S_FLICKY_11_AIM
+	STATE(SPR_FL11, 1, 3, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_RUN2), // S_FLICKY_11_RUN1
+	STATE(SPR_FL11, 2, 4, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_RUN3), // S_FLICKY_11_RUN2
+	STATE(SPR_FL11, 3, 4, {A_FlickyHop},        FRACUNIT/2,  2*FRACUNIT, S_FLICKY_11_AIM),  // S_FLICKY_11_RUN3
+	STATE(SPR_FL11, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_11_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_11, 384*FRACUNIT, S_FLICKY_11_CENTER),        // S_FLICKY_11_CENTER
 
 	// Rat
-	{SPR_FL12, 0, 2, {A_FlickyCheck}, S_FLICKY_12_AIM,           0, S_FLICKY_12_OUT},  // S_FLICKY_12_OUT
-	{SPR_FL12, 1, 1, {A_FlickyAim},          ANGLE_90, 32*FRACUNIT, S_FLICKY_12_RUN1}, // S_FLICKY_12_AIM
-	{SPR_FL12, 1, 2, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_RUN2}, // S_FLICKY_12_RUN1
-	{SPR_FL12, 2, 3, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_RUN3}, // S_FLICKY_12_RUN2
-	{SPR_FL12, 3, 3, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_AIM},  // S_FLICKY_12_RUN3
-	{SPR_FL12, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_12_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_12, 384*FRACUNIT, S_FLICKY_12_CENTER},        // S_FLICKY_12_CENTER
+	STATE(SPR_FL12, 0, 2, {A_FlickyCheck}, S_FLICKY_12_AIM,           0, S_FLICKY_12_OUT),  // S_FLICKY_12_OUT
+	STATE(SPR_FL12, 1, 1, {A_FlickyAim},          ANGLE_90, 32*FRACUNIT, S_FLICKY_12_RUN1), // S_FLICKY_12_AIM
+	STATE(SPR_FL12, 1, 2, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_RUN2), // S_FLICKY_12_RUN1
+	STATE(SPR_FL12, 2, 3, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_RUN3), // S_FLICKY_12_RUN2
+	STATE(SPR_FL12, 3, 3, {A_FlickyHop},                 1, 12*FRACUNIT, S_FLICKY_12_AIM),  // S_FLICKY_12_RUN3
+	STATE(SPR_FL12, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_12_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_12, 384*FRACUNIT, S_FLICKY_12_CENTER),        // S_FLICKY_12_CENTER
 
 	// Bear
-	{SPR_FL13, 0, 2, {A_FlickyCheck}, S_FLICKY_13_AIM,                0, S_FLICKY_13_OUT},  // S_FLICKY_13_OUT
-	{SPR_FL13, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_13_HOP},  // S_FLICKY_13_AIM
-	{SPR_FL13, 1, 1, {A_FlickyHop},        5*FRACUNIT,       3*FRACUNIT, S_FLICKY_13_UP},   // S_FLICKY_13_HOP
-	{SPR_FL13, 2, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, S_FLICKY_13_DOWN, S_FLICKY_13_UP},   // S_FLICKY_13_UP
-	{SPR_FL13, 3, 2, {A_FlickyCheck}, S_FLICKY_13_AIM,                0, S_FLICKY_13_DOWN}, // S_FLICKY_13_DOWN
-	{SPR_FL13, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_13_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_13, 384*FRACUNIT, S_FLICKY_13_CENTER},        // S_FLICKY_13_CENTER
+	STATE(SPR_FL13, 0, 2, {A_FlickyCheck}, S_FLICKY_13_AIM,                0, S_FLICKY_13_OUT),  // S_FLICKY_13_OUT
+	STATE(SPR_FL13, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_13_HOP),  // S_FLICKY_13_AIM
+	STATE(SPR_FL13, 1, 1, {A_FlickyHop},        5*FRACUNIT,       3*FRACUNIT, S_FLICKY_13_UP),   // S_FLICKY_13_HOP
+	STATE(SPR_FL13, 2, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, S_FLICKY_13_DOWN, S_FLICKY_13_UP),   // S_FLICKY_13_UP
+	STATE(SPR_FL13, 3, 2, {A_FlickyCheck}, S_FLICKY_13_AIM,                0, S_FLICKY_13_DOWN), // S_FLICKY_13_DOWN
+	STATE(SPR_FL13, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_13_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_13, 384*FRACUNIT, S_FLICKY_13_CENTER),        // S_FLICKY_13_CENTER
 
 	// Dove
-	{SPR_FL14, 0, 2, {A_FlickyCheck}, S_FLICKY_14_FLAP1, S_FLICKY_14_FLAP1, S_FLICKY_14_OUT},   // S_FLICKY_14_OUT
-	{SPR_FL14, 1, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP2}, // S_FLICKY_14_FLAP1
-	{SPR_FL14, 2, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP3}, // S_FLICKY_14_FLAP2
-	{SPR_FL14, 3, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP1}, // S_FLICKY_14_FLAP3
-	{SPR_FL14, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL}, // S_FLICKY_14_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_14, 384*FRACUNIT, S_FLICKY_14_CENTER},        // S_FLICKY_14_CENTER
+	STATE(SPR_FL14, 0, 2, {A_FlickyCheck}, S_FLICKY_14_FLAP1, S_FLICKY_14_FLAP1, S_FLICKY_14_OUT),   // S_FLICKY_14_OUT
+	STATE(SPR_FL14, 1, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP2), // S_FLICKY_14_FLAP1
+	STATE(SPR_FL14, 2, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP3), // S_FLICKY_14_FLAP2
+	STATE(SPR_FL14, 3, 3, {A_FlickySoar},         4*FRACUNIT,       32*FRACUNIT, S_FLICKY_14_FLAP1), // S_FLICKY_14_FLAP3
+	STATE(SPR_FL14, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL), // S_FLICKY_14_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_14, 384*FRACUNIT, S_FLICKY_14_CENTER),        // S_FLICKY_14_CENTER
 
 	// Cat
-	{SPR_FL15, 0, 2, {A_FlickyCheck}, S_FLICKY_15_AIM,                0, S_FLICKY_15_OUT},  // S_FLICKY_15_OUT
-	{SPR_FL15, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_15_HOP},  // S_FLICKY_15_AIM
-	{SPR_FL15, 1, 1, {A_FlickyFlounder},   2*FRACUNIT,       6*FRACUNIT, S_FLICKY_15_UP},   // S_FLICKY_15_HOP
-	{SPR_FL15, 2, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, S_FLICKY_15_DOWN, S_FLICKY_15_UP},   // S_FLICKY_15_UP
-	{SPR_FL15, 3, 2, {A_FlickyCheck}, S_FLICKY_15_AIM,                0, S_FLICKY_15_DOWN}, // S_FLICKY_15_DOWN
-	{SPR_FL15, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_15_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_15, 384*FRACUNIT, S_FLICKY_15_CENTER},        // S_FLICKY_15_CENTER
+	STATE(SPR_FL15, 0, 2, {A_FlickyCheck}, S_FLICKY_15_AIM,                0, S_FLICKY_15_OUT),  // S_FLICKY_15_OUT
+	STATE(SPR_FL15, 1, 1, {A_FlickyAim},             ANG30,      32*FRACUNIT, S_FLICKY_15_HOP),  // S_FLICKY_15_AIM
+	STATE(SPR_FL15, 1, 1, {A_FlickyFlounder},   2*FRACUNIT,       6*FRACUNIT, S_FLICKY_15_UP),   // S_FLICKY_15_HOP
+	STATE(SPR_FL15, 2, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, S_FLICKY_15_DOWN, S_FLICKY_15_UP),   // S_FLICKY_15_UP
+	STATE(SPR_FL15, 3, 2, {A_FlickyCheck}, S_FLICKY_15_AIM,                0, S_FLICKY_15_DOWN), // S_FLICKY_15_DOWN
+	STATE(SPR_FL15, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_FLICKY_15_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_15, 384*FRACUNIT, S_FLICKY_15_CENTER),        // S_FLICKY_15_CENTER
 
 	// Canary
-	{SPR_FL16, 0, 2, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1,          0, S_FLICKY_16_OUT},   // S_FLICKY_16_OUT
-	{SPR_FL16, 1, 3, {A_FlickyFly},                4*FRACUNIT, 8*FRACUNIT, S_FLICKY_16_FLAP2}, // S_FLICKY_16_FLAP1
-	{SPR_FL16, 2, 3, {A_SetObjectFlags},         MF_NOGRAVITY,          1, S_FLICKY_16_FLAP3}, // S_FLICKY_16_FLAP2
-	{SPR_FL16, 3, 3, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1,          0, S_FLICKY_16_FLAP3}, // S_FLICKY_16_FLAP3
-	{SPR_FL16, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL}, // S_FLICKY_16_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_16, 384*FRACUNIT, S_FLICKY_16_CENTER},        // S_FLICKY_16_CENTER
+	STATE(SPR_FL16, 0, 2, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1,          0, S_FLICKY_16_OUT),   // S_FLICKY_16_OUT
+	STATE(SPR_FL16, 1, 3, {A_FlickyFly},                4*FRACUNIT, 8*FRACUNIT, S_FLICKY_16_FLAP2), // S_FLICKY_16_FLAP1
+	STATE(SPR_FL16, 2, 3, {A_SetObjectFlags},         MF_NOGRAVITY,          1, S_FLICKY_16_FLAP3), // S_FLICKY_16_FLAP2
+	STATE(SPR_FL16, 3, 3, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1,          0, S_FLICKY_16_FLAP3), // S_FLICKY_16_FLAP3
+	STATE(SPR_FL16, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL), // S_FLICKY_16_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_16, 384*FRACUNIT, S_FLICKY_16_CENTER),        // S_FLICKY_16_CENTER
 
 	// Spider
-	{SPR_FS01, 0, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM,                      0, S_SECRETFLICKY_01_OUT},  // S_SECRETFLICKY_01_OUT
-	{SPR_FS01, 1, 1, {A_FlickyAim},                   ANG30,            32*FRACUNIT, S_SECRETFLICKY_01_HOP},  // S_SECRETFLICKY_01_AIM
-	{SPR_FS01, 1, 1, {A_FlickyFlounder},         2*FRACUNIT,             6*FRACUNIT, S_SECRETFLICKY_01_UP},   // S_SECRETFLICKY_01_HOP
-	{SPR_FS01, 2, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, S_SECRETFLICKY_01_DOWN, S_SECRETFLICKY_01_UP},   // S_SECRETFLICKY_01_UP
-	{SPR_FS01, 3, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM,                      0, S_SECRETFLICKY_01_DOWN}, // S_SECRETFLICKY_01_DOWN
-	{SPR_FS01, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_SECRETFLICKY_01_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_01, 384*FRACUNIT, S_SECRETFLICKY_01_CENTER},        // S_SECRETFLICKY_01_CENTER
+	STATE(SPR_FS01, 0, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM,                      0, S_SECRETFLICKY_01_OUT),  // S_SECRETFLICKY_01_OUT
+	STATE(SPR_FS01, 1, 1, {A_FlickyAim},                   ANG30,            32*FRACUNIT, S_SECRETFLICKY_01_HOP),  // S_SECRETFLICKY_01_AIM
+	STATE(SPR_FS01, 1, 1, {A_FlickyFlounder},         2*FRACUNIT,             6*FRACUNIT, S_SECRETFLICKY_01_UP),   // S_SECRETFLICKY_01_HOP
+	STATE(SPR_FS01, 2, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, S_SECRETFLICKY_01_DOWN, S_SECRETFLICKY_01_UP),   // S_SECRETFLICKY_01_UP
+	STATE(SPR_FS01, 3, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM,                      0, S_SECRETFLICKY_01_DOWN), // S_SECRETFLICKY_01_DOWN
+	STATE(SPR_FS01, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL), // S_SECRETFLICKY_01_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_01, 384*FRACUNIT, S_SECRETFLICKY_01_CENTER),        // S_SECRETFLICKY_01_CENTER
 
 	// Bat
-	{SPR_FS02, 0, 2, {A_FlickyHeightCheck}, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_OUT},   // S_SECRETFLICKY_02_OUT
-	{SPR_FS02, 1, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP2}, // S_SECRETFLICKY_02_FLAP1
-	{SPR_FS02, 2, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP3}, // S_SECRETFLICKY_02_FLAP2
-	{SPR_FS02, 3, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP1}, // S_SECRETFLICKY_02_FLAP3
-	{SPR_FS02, FF_ANIMATE|1, -1, {NULL}, 2, 2, S_NULL}, // S_SECRETFLICKY_02_STAND
-	{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_02, 384*FRACUNIT, S_SECRETFLICKY_02_CENTER},        // S_SECRETFLICKY_02_CENTER
+	STATE(SPR_FS02, 0, 2, {A_FlickyHeightCheck}, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_OUT),   // S_SECRETFLICKY_02_OUT
+	STATE(SPR_FS02, 1, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP2), // S_SECRETFLICKY_02_FLAP1
+	STATE(SPR_FS02, 2, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP3), // S_SECRETFLICKY_02_FLAP2
+	STATE(SPR_FS02, 3, 3, {A_FlickyFly},                      4*FRACUNIT,             16*FRACUNIT, S_SECRETFLICKY_02_FLAP1), // S_SECRETFLICKY_02_FLAP3
+	STATE(SPR_FS02, FF_ANIMATE|1, -1, {NULL}, 2, 2, S_NULL), // S_SECRETFLICKY_02_STAND
+	STATE(SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_02, 384*FRACUNIT, S_SECRETFLICKY_02_CENTER),        // S_SECRETFLICKY_02_CENTER
 
 	// Fan
-	{SPR_FANS, 0, 1, {A_FanBubbleSpawn}, 2048, 0, S_FAN2}, // S_FAN
-	{SPR_FANS, 1, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN3}, // S_FAN2
-	{SPR_FANS, 2, 1, {A_FanBubbleSpawn},  512, 0, S_FAN4}, // S_FAN3
-	{SPR_FANS, 3, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN5}, // S_FAN4
-	{SPR_FANS, 4, 1, {A_FanBubbleSpawn},  512, 0, S_FAN},  // S_FAN5
+	STATE(SPR_FANS, 0, 1, {A_FanBubbleSpawn}, 2048, 0, S_FAN2), // S_FAN
+	STATE(SPR_FANS, 1, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN3), // S_FAN2
+	STATE(SPR_FANS, 2, 1, {A_FanBubbleSpawn},  512, 0, S_FAN4), // S_FAN3
+	STATE(SPR_FANS, 3, 1, {A_FanBubbleSpawn}, 1024, 0, S_FAN5), // S_FAN4
+	STATE(SPR_FANS, 4, 1, {A_FanBubbleSpawn},  512, 0, S_FAN),  // S_FAN5
 
 	// Steam Riser
-	{SPR_STEM, 0, 2, {A_SetSolidSteam}, 0, 0, S_STEAM2},   // S_STEAM1
-	{SPR_STEM, 1, 2, {A_UnsetSolidSteam}, 0, 0, S_STEAM3}, // S_STEAM2
-	{SPR_STEM, 2, 2, {NULL}, 0, 0, S_STEAM4},              // S_STEAM3
-	{SPR_STEM, 3, 2, {NULL}, 0, 0, S_STEAM5},              // S_STEAM4
-	{SPR_STEM, 4, 2, {NULL}, 0, 0, S_STEAM6},              // S_STEAM5
-	{SPR_STEM, 5, 2, {NULL}, 0, 0, S_STEAM7},              // S_STEAM6
-	{SPR_STEM, 6, 2, {NULL}, 0, 0, S_STEAM8},              // S_STEAM7
-	{SPR_NULL, 0, 18, {NULL}, 0, 0, S_STEAM1},             // S_STEAM8
+	STATE(SPR_STEM, 0, 2, {A_SetSolidSteam}, 0, 0, S_STEAM2),   // S_STEAM1
+	STATE(SPR_STEM, 1, 2, {A_UnsetSolidSteam}, 0, 0, S_STEAM3), // S_STEAM2
+	STATE(SPR_STEM, 2, 2, {NULL}, 0, 0, S_STEAM4),              // S_STEAM3
+	STATE(SPR_STEM, 3, 2, {NULL}, 0, 0, S_STEAM5),              // S_STEAM4
+	STATE(SPR_STEM, 4, 2, {NULL}, 0, 0, S_STEAM6),              // S_STEAM5
+	STATE(SPR_STEM, 5, 2, {NULL}, 0, 0, S_STEAM7),              // S_STEAM6
+	STATE(SPR_STEM, 6, 2, {NULL}, 0, 0, S_STEAM8),              // S_STEAM7
+	STATE(SPR_NULL, 0, 18, {NULL}, 0, 0, S_STEAM1),             // S_STEAM8
 
 	// Bumpers
-	{SPR_BUMP, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL},   3, 4, S_NULL},   // S_BUMPER
-	{SPR_BUMP, FF_ANIMATE|4,             12, {A_Pain}, 1, 3, S_BUMPER}, //S_BUMPERHIT
+	STATE(SPR_BUMP, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL},   3, 4, S_NULL),   // S_BUMPER
+	STATE(SPR_BUMP, FF_ANIMATE|4,             12, {A_Pain}, 1, 3, S_BUMPER), //S_BUMPERHIT
 
 	// Balloons
-	{SPR_BLON, FF_ANIMATE, -1, {NULL}, 2, 5, S_NULL}, // S_BALLOON
-	{SPR_BLON, 3, 0, {A_RemoteDamage},   0, 1, S_BALLOONPOP2}, // S_BALLOONPOP1
-	{SPR_BLON, 3, 1, {A_Pain},           0, 0, S_BALLOONPOP3}, // S_BALLOONPOP2
-	{SPR_BLON, 4, 1, {NULL},             0, 0, S_BALLOONPOP4}, // S_BALLOONPOP3
-	{SPR_NULL, 0, TICRATE, {A_CheckFlags2}, MF2_AMBUSH, S_BALLOONPOP5, S_NULL}, // S_BALLOONPOP4
-	{SPR_NULL, 0, 15*TICRATE, {NULL},    0, 0, S_BALLOONPOP6}, // S_BALLOONPOP5
-	{SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_NULL},        // S_BALLOONPOP6
+	STATE(SPR_BLON, FF_ANIMATE, -1, {NULL}, 2, 5, S_NULL), // S_BALLOON
+	STATE(SPR_BLON, 3, 0, {A_RemoteDamage},   0, 1, S_BALLOONPOP2), // S_BALLOONPOP1
+	STATE(SPR_BLON, 3, 1, {A_Pain},           0, 0, S_BALLOONPOP3), // S_BALLOONPOP2
+	STATE(SPR_BLON, 4, 1, {NULL},             0, 0, S_BALLOONPOP4), // S_BALLOONPOP3
+	STATE(SPR_NULL, 0, TICRATE, {A_CheckFlags2}, MF2_AMBUSH, S_BALLOONPOP5, S_NULL), // S_BALLOONPOP4
+	STATE(SPR_NULL, 0, 15*TICRATE, {NULL},    0, 0, S_BALLOONPOP6), // S_BALLOONPOP5
+	STATE(SPR_NULL, 0, 0, {A_SpawnFreshCopy}, 0, 0, S_NULL),        // S_BALLOONPOP6
 
 	// Yellow Spring
-	{SPR_SPRY, 0, -1, {NULL}, 0, 0, S_NULL},           // S_YELLOWSPRING
-	{SPR_SPRY, 4, 4, {A_Pain}, 0, 0, S_YELLOWSPRING3}, // S_YELLOWSPRING2
-	{SPR_SPRY, 3, 1, {NULL}, 0, 0, S_YELLOWSPRING4},   // S_YELLOWSPRING3
-	{SPR_SPRY, 2, 1, {NULL}, 0, 0, S_YELLOWSPRING5},   // S_YELLOWSPRING4
-	{SPR_SPRY, 1, 1, {NULL}, 0, 0, S_YELLOWSPRING},    // S_YELLOWSPRING5
+	STATE(SPR_SPRY, 0, -1, {NULL}, 0, 0, S_NULL),           // S_YELLOWSPRING
+	STATE(SPR_SPRY, 4, 4, {A_Pain}, 0, 0, S_YELLOWSPRING3), // S_YELLOWSPRING2
+	STATE(SPR_SPRY, 3, 1, {NULL}, 0, 0, S_YELLOWSPRING4),   // S_YELLOWSPRING3
+	STATE(SPR_SPRY, 2, 1, {NULL}, 0, 0, S_YELLOWSPRING5),   // S_YELLOWSPRING4
+	STATE(SPR_SPRY, 1, 1, {NULL}, 0, 0, S_YELLOWSPRING),    // S_YELLOWSPRING5
 
 	// Red Spring
-	{SPR_SPRR, 0, -1, {NULL}, 0, 0, S_NULL},        // S_REDSPRING
-	{SPR_SPRR, 4, 4, {A_Pain}, 0, 0, S_REDSPRING3}, // S_REDSPRING2
-	{SPR_SPRR, 3, 1, {NULL}, 0, 0, S_REDSPRING4},   // S_REDSPRING3
-	{SPR_SPRR, 2, 1, {NULL}, 0, 0, S_REDSPRING5},   // S_REDSPRING4
-	{SPR_SPRR, 1, 1, {NULL}, 0, 0, S_REDSPRING},    // S_REDSPRING5
+	STATE(SPR_SPRR, 0, -1, {NULL}, 0, 0, S_NULL),        // S_REDSPRING
+	STATE(SPR_SPRR, 4, 4, {A_Pain}, 0, 0, S_REDSPRING3), // S_REDSPRING2
+	STATE(SPR_SPRR, 3, 1, {NULL}, 0, 0, S_REDSPRING4),   // S_REDSPRING3
+	STATE(SPR_SPRR, 2, 1, {NULL}, 0, 0, S_REDSPRING5),   // S_REDSPRING4
+	STATE(SPR_SPRR, 1, 1, {NULL}, 0, 0, S_REDSPRING),    // S_REDSPRING5
 
 	// Blue Spring
-	{SPR_SPRB, 0, -1, {NULL}, 0, 0, S_NULL},         // S_BLUESPRING
-	{SPR_SPRB, 4, 4, {A_Pain}, 0, 0, S_BLUESPRING3}, // S_BLUESPRING2
-	{SPR_SPRB, 3, 1, {NULL}, 0, 0, S_BLUESPRING4},   // S_BLUESPRING3
-	{SPR_SPRB, 2, 1, {NULL}, 0, 0, S_BLUESPRING5},   // S_BLUESPRING4
-	{SPR_SPRB, 1, 1, {NULL}, 0, 0, S_BLUESPRING},    // S_BLUESPRING5
+	STATE(SPR_SPRB, 0, -1, {NULL}, 0, 0, S_NULL),         // S_BLUESPRING
+	STATE(SPR_SPRB, 4, 4, {A_Pain}, 0, 0, S_BLUESPRING3), // S_BLUESPRING2
+	STATE(SPR_SPRB, 3, 1, {NULL}, 0, 0, S_BLUESPRING4),   // S_BLUESPRING3
+	STATE(SPR_SPRB, 2, 1, {NULL}, 0, 0, S_BLUESPRING5),   // S_BLUESPRING4
+	STATE(SPR_SPRB, 1, 1, {NULL}, 0, 0, S_BLUESPRING),    // S_BLUESPRING5
 
 	// Yellow Diagonal Spring
-	{SPR_YSPR, 0, -1, {NULL}, 0, 0, S_NULL},    // S_YDIAG1
-	{SPR_YSPR, 1, 1, {A_Pain}, 0, 0, S_YDIAG3}, // S_YDIAG2
-	{SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG4},   // S_YDIAG3
-	{SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG5},   // S_YDIAG4
-	{SPR_YSPR, 4, 1, {NULL}, 0, 0, S_YDIAG6},   // S_YDIAG5
-	{SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG7},   // S_YDIAG6
-	{SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG8},   // S_YDIAG7
-	{SPR_YSPR, 1, 1, {NULL}, 0, 0, S_YDIAG1},   // S_YDIAG8
+	STATE(SPR_YSPR, 0, -1, {NULL}, 0, 0, S_NULL),    // S_YDIAG1
+	STATE(SPR_YSPR, 1, 1, {A_Pain}, 0, 0, S_YDIAG3), // S_YDIAG2
+	STATE(SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG4),   // S_YDIAG3
+	STATE(SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG5),   // S_YDIAG4
+	STATE(SPR_YSPR, 4, 1, {NULL}, 0, 0, S_YDIAG6),   // S_YDIAG5
+	STATE(SPR_YSPR, 3, 1, {NULL}, 0, 0, S_YDIAG7),   // S_YDIAG6
+	STATE(SPR_YSPR, 2, 1, {NULL}, 0, 0, S_YDIAG8),   // S_YDIAG7
+	STATE(SPR_YSPR, 1, 1, {NULL}, 0, 0, S_YDIAG1),   // S_YDIAG8
 
 	// Red Diagonal Spring
-	{SPR_RSPR, 0, -1, {NULL}, 0, 0, S_NULL},    // S_RDIAG1
-	{SPR_RSPR, 1, 1, {A_Pain}, 0, 0, S_RDIAG3}, // S_RDIAG2
-	{SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG4},   // S_RDIAG3
-	{SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG5},   // S_RDIAG4
-	{SPR_RSPR, 4, 1, {NULL}, 0, 0, S_RDIAG6},   // S_RDIAG5
-	{SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG7},   // S_RDIAG6
-	{SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG8},   // S_RDIAG7
-	{SPR_RSPR, 1, 1, {NULL}, 0, 0, S_RDIAG1},   // S_RDIAG8
+	STATE(SPR_RSPR, 0, -1, {NULL}, 0, 0, S_NULL),    // S_RDIAG1
+	STATE(SPR_RSPR, 1, 1, {A_Pain}, 0, 0, S_RDIAG3), // S_RDIAG2
+	STATE(SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG4),   // S_RDIAG3
+	STATE(SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG5),   // S_RDIAG4
+	STATE(SPR_RSPR, 4, 1, {NULL}, 0, 0, S_RDIAG6),   // S_RDIAG5
+	STATE(SPR_RSPR, 3, 1, {NULL}, 0, 0, S_RDIAG7),   // S_RDIAG6
+	STATE(SPR_RSPR, 2, 1, {NULL}, 0, 0, S_RDIAG8),   // S_RDIAG7
+	STATE(SPR_RSPR, 1, 1, {NULL}, 0, 0, S_RDIAG1),   // S_RDIAG8
 
 	// Blue Diagonal Spring
-	{SPR_BSPR, 0, -1, {NULL}, 0, 0, S_NULL},    // S_BDIAG1
-	{SPR_BSPR, 1, 1, {A_Pain}, 0, 0, S_BDIAG3}, // S_BDIAG2
-	{SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG4},   // S_BDIAG3
-	{SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG5},   // S_BDIAG4
-	{SPR_BSPR, 4, 1, {NULL}, 0, 0, S_BDIAG6},   // S_BDIAG5
-	{SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG7},   // S_BDIAG6
-	{SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG8},   // S_BDIAG7
-	{SPR_BSPR, 1, 1, {NULL}, 0, 0, S_BDIAG1},   // S_BDIAG8
+	STATE(SPR_BSPR, 0, -1, {NULL}, 0, 0, S_NULL),    // S_BDIAG1
+	STATE(SPR_BSPR, 1, 1, {A_Pain}, 0, 0, S_BDIAG3), // S_BDIAG2
+	STATE(SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG4),   // S_BDIAG3
+	STATE(SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG5),   // S_BDIAG4
+	STATE(SPR_BSPR, 4, 1, {NULL}, 0, 0, S_BDIAG6),   // S_BDIAG5
+	STATE(SPR_BSPR, 3, 1, {NULL}, 0, 0, S_BDIAG7),   // S_BDIAG6
+	STATE(SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG8),   // S_BDIAG7
+	STATE(SPR_BSPR, 1, 1, {NULL}, 0, 0, S_BDIAG1),   // S_BDIAG8
 
 	// Yellow Side Spring
-	{SPR_SSWY, 0, -1, {NULL}, 0, 0, S_NULL},    // S_YHORIZ1
-	{SPR_SSWY, 1, 1, {A_Pain}, 0, 0, S_YHORIZ3}, // S_YHORIZ2
-	{SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ4},   // S_YHORIZ3
-	{SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ5},   // S_YHORIZ4
-	{SPR_SSWY, 4, 1, {NULL}, 0, 0, S_YHORIZ6},   // S_YHORIZ5
-	{SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ7},   // S_YHORIZ6
-	{SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ8},   // S_YHORIZ7
-	{SPR_SSWY, 1, 1, {NULL}, 0, 0, S_YHORIZ1},   // S_YHORIZ8
+	STATE(SPR_SSWY, 0, -1, {NULL}, 0, 0, S_NULL),    // S_YHORIZ1
+	STATE(SPR_SSWY, 1, 1, {A_Pain}, 0, 0, S_YHORIZ3), // S_YHORIZ2
+	STATE(SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ4),   // S_YHORIZ3
+	STATE(SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ5),   // S_YHORIZ4
+	STATE(SPR_SSWY, 4, 1, {NULL}, 0, 0, S_YHORIZ6),   // S_YHORIZ5
+	STATE(SPR_SSWY, 3, 1, {NULL}, 0, 0, S_YHORIZ7),   // S_YHORIZ6
+	STATE(SPR_SSWY, 2, 1, {NULL}, 0, 0, S_YHORIZ8),   // S_YHORIZ7
+	STATE(SPR_SSWY, 1, 1, {NULL}, 0, 0, S_YHORIZ1),   // S_YHORIZ8
 
 	// Red Side Spring
-	{SPR_SSWR, 0, -1, {NULL}, 0, 0, S_NULL},    // S_RHORIZ1
-	{SPR_SSWR, 1, 1, {A_Pain}, 0, 0, S_RHORIZ3}, // S_RHORIZ2
-	{SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ4},   // S_RHORIZ3
-	{SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ5},   // S_RHORIZ4
-	{SPR_SSWR, 4, 1, {NULL}, 0, 0, S_RHORIZ6},   // S_RHORIZ5
-	{SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ7},   // S_RHORIZ6
-	{SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ8},   // S_RHORIZ7
-	{SPR_SSWR, 1, 1, {NULL}, 0, 0, S_RHORIZ1},   // S_RHORIZ8
+	STATE(SPR_SSWR, 0, -1, {NULL}, 0, 0, S_NULL),    // S_RHORIZ1
+	STATE(SPR_SSWR, 1, 1, {A_Pain}, 0, 0, S_RHORIZ3), // S_RHORIZ2
+	STATE(SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ4),   // S_RHORIZ3
+	STATE(SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ5),   // S_RHORIZ4
+	STATE(SPR_SSWR, 4, 1, {NULL}, 0, 0, S_RHORIZ6),   // S_RHORIZ5
+	STATE(SPR_SSWR, 3, 1, {NULL}, 0, 0, S_RHORIZ7),   // S_RHORIZ6
+	STATE(SPR_SSWR, 2, 1, {NULL}, 0, 0, S_RHORIZ8),   // S_RHORIZ7
+	STATE(SPR_SSWR, 1, 1, {NULL}, 0, 0, S_RHORIZ1),   // S_RHORIZ8
 
 	// Blue Side Spring
-	{SPR_SSWB, 0, -1, {NULL}, 0, 0, S_NULL},    // S_BHORIZ1
-	{SPR_SSWB, 1, 1, {A_Pain}, 0, 0, S_BHORIZ3}, // S_BHORIZ2
-	{SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ4},   // S_BHORIZ3
-	{SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ5},   // S_BHORIZ4
-	{SPR_SSWB, 4, 1, {NULL}, 0, 0, S_BHORIZ6},   // S_BHORIZ5
-	{SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ7},   // S_BHORIZ6
-	{SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ8},   // S_BHORIZ7
-	{SPR_SSWB, 1, 1, {NULL}, 0, 0, S_BHORIZ1},   // S_BHORIZ8
+	STATE(SPR_SSWB, 0, -1, {NULL}, 0, 0, S_NULL),    // S_BHORIZ1
+	STATE(SPR_SSWB, 1, 1, {A_Pain}, 0, 0, S_BHORIZ3), // S_BHORIZ2
+	STATE(SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ4),   // S_BHORIZ3
+	STATE(SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ5),   // S_BHORIZ4
+	STATE(SPR_SSWB, 4, 1, {NULL}, 0, 0, S_BHORIZ6),   // S_BHORIZ5
+	STATE(SPR_SSWB, 3, 1, {NULL}, 0, 0, S_BHORIZ7),   // S_BHORIZ6
+	STATE(SPR_SSWB, 2, 1, {NULL}, 0, 0, S_BHORIZ8),   // S_BHORIZ7
+	STATE(SPR_SSWB, 1, 1, {NULL}, 0, 0, S_BHORIZ1),   // S_BHORIZ8
 
 	// Boosters
-	{SPR_NULL, 0, 1, {A_Pain}, 0, 0, S_INVISIBLE}, // S_BOOSTERSOUND
-	{SPR_BSTY,                  FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL}, // S_YELLOWBOOSTERROLLER
-	{SPR_BSTY, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL}, // S_YELLOWBOOSTERSEG_LEFT
-	{SPR_BSTY, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL}, // S_YELLOWBOOSTERSEG_RIGHT
-	{SPR_BSTY, 9|FF_PAPERSPRITE,            -1, {NULL}, 0, 0, S_NULL}, // S_YELLOWBOOSTERSEG_FACE
-	{SPR_BSTR,                  FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL}, // S_REDBOOSTERROLLER
-	{SPR_BSTR, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL}, // S_REDBOOSTERSEG_LEFT
-	{SPR_BSTR, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL}, // S_REDBOOSTERSEG_RIGHT
-	{SPR_BSTR, 9|FF_PAPERSPRITE,            -1, {NULL}, 0, 0, S_NULL}, // S_REDBOOSTERSEG_FACE
+	STATE(SPR_NULL, 0, 1, {A_Pain}, 0, 0, S_INVISIBLE), // S_BOOSTERSOUND
+	STATE(SPR_BSTY,                  FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL), // S_YELLOWBOOSTERROLLER
+	STATE(SPR_BSTY, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL), // S_YELLOWBOOSTERSEG_LEFT
+	STATE(SPR_BSTY, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL), // S_YELLOWBOOSTERSEG_RIGHT
+	STATE(SPR_BSTY, 9|FF_PAPERSPRITE,            -1, {NULL}, 0, 0, S_NULL), // S_YELLOWBOOSTERSEG_FACE
+	STATE(SPR_BSTR,                  FF_ANIMATE, -1, {NULL}, 2, 1, S_NULL), // S_REDBOOSTERROLLER
+	STATE(SPR_BSTR, 3|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL), // S_REDBOOSTERSEG_LEFT
+	STATE(SPR_BSTR, 6|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL), // S_REDBOOSTERSEG_RIGHT
+	STATE(SPR_BSTR, 9|FF_PAPERSPRITE,            -1, {NULL}, 0, 0, S_NULL), // S_REDBOOSTERSEG_FACE
 
 	// Rain
-	{SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, -1, {NULL}, 0, 0, S_NULL}, // S_RAIN1
-	{SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, 1, {NULL}, 0, 0, S_RAIN1}, // S_RAINRETURN
+	STATE(SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, -1, {NULL}, 0, 0, S_NULL), // S_RAIN1
+	STATE(SPR_RAIN, FF_FULLBRIGHT|FF_TRANS50, 1, {NULL}, 0, 0, S_RAIN1), // S_RAINRETURN
 
 	// Snowflake
-	{SPR_SNO1, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SNOW1
-	{SPR_SNO1, 1, -1, {NULL}, 0, 0, S_NULL}, // S_SNOW2
-	{SPR_SNO1, 2, -1, {NULL}, 0, 0, S_NULL}, // S_SNOW3
+	STATE(SPR_SNO1, 0, -1, {NULL}, 0, 0, S_NULL), // S_SNOW1
+	STATE(SPR_SNO1, 1, -1, {NULL}, 0, 0, S_NULL), // S_SNOW2
+	STATE(SPR_SNO1, 2, -1, {NULL}, 0, 0, S_NULL), // S_SNOW3
 
 	// Water Splish
-	{SPR_SPLH, FF_TRANS50  , 2, {NULL}, 0, 0, S_SPLISH2}, // S_SPLISH1
-	{SPR_SPLH, FF_TRANS50|1, 2, {NULL}, 0, 0, S_SPLISH3}, // S_SPLISH2
-	{SPR_SPLH, FF_TRANS50|2, 2, {NULL}, 0, 0, S_SPLISH4}, // S_SPLISH3
-	{SPR_SPLH, FF_TRANS50|3, 2, {NULL}, 0, 0, S_SPLISH5}, // S_SPLISH4
-	{SPR_SPLH, FF_TRANS50|4, 2, {NULL}, 0, 0, S_SPLISH6}, // S_SPLISH5
-	{SPR_SPLH, FF_TRANS50|5, 2, {NULL}, 0, 0, S_SPLISH7}, // S_SPLISH6
-	{SPR_SPLH, FF_TRANS50|6, 2, {NULL}, 0, 0, S_SPLISH8}, // S_SPLISH7
-	{SPR_SPLH, FF_TRANS50|7, 2, {NULL}, 0, 0, S_SPLISH9}, // S_SPLISH8
-	{SPR_SPLH, FF_TRANS50|8, 2, {NULL}, 0, 0, S_NULL},    // S_SPLISH9
+	STATE(SPR_SPLH, FF_TRANS50  , 2, {NULL}, 0, 0, S_SPLISH2), // S_SPLISH1
+	STATE(SPR_SPLH, FF_TRANS50|1, 2, {NULL}, 0, 0, S_SPLISH3), // S_SPLISH2
+	STATE(SPR_SPLH, FF_TRANS50|2, 2, {NULL}, 0, 0, S_SPLISH4), // S_SPLISH3
+	STATE(SPR_SPLH, FF_TRANS50|3, 2, {NULL}, 0, 0, S_SPLISH5), // S_SPLISH4
+	STATE(SPR_SPLH, FF_TRANS50|4, 2, {NULL}, 0, 0, S_SPLISH6), // S_SPLISH5
+	STATE(SPR_SPLH, FF_TRANS50|5, 2, {NULL}, 0, 0, S_SPLISH7), // S_SPLISH6
+	STATE(SPR_SPLH, FF_TRANS50|6, 2, {NULL}, 0, 0, S_SPLISH8), // S_SPLISH7
+	STATE(SPR_SPLH, FF_TRANS50|7, 2, {NULL}, 0, 0, S_SPLISH9), // S_SPLISH8
+	STATE(SPR_SPLH, FF_TRANS50|8, 2, {NULL}, 0, 0, S_NULL),    // S_SPLISH9
 
 	// Lava splish
-	{SPR_LSPL, FF_ANIMATE, 16, {NULL}, 7, 2, S_NULL}, // S_LAVASPLISH
+	STATE(SPR_LSPL, FF_ANIMATE, 16, {NULL}, 7, 2, S_NULL), // S_LAVASPLISH
 
 	// Water Splash
-	{SPR_SPLA, FF_TRANS50  , 3, {NULL}, 0, 0, S_SPLASH2},    // S_SPLASH1
-	{SPR_SPLA, FF_TRANS70|1, 3, {NULL}, 0, 0, S_SPLASH3},    // S_SPLASH2
-	{SPR_SPLA, FF_TRANS90|2, 3, {NULL}, 0, 0, S_RAINRETURN}, // S_SPLASH3
+	STATE(SPR_SPLA, FF_TRANS50  , 3, {NULL}, 0, 0, S_SPLASH2),    // S_SPLASH1
+	STATE(SPR_SPLA, FF_TRANS70|1, 3, {NULL}, 0, 0, S_SPLASH3),    // S_SPLASH2
+	STATE(SPR_SPLA, FF_TRANS90|2, 3, {NULL}, 0, 0, S_RAINRETURN), // S_SPLASH3
 
 	// Smoke
-	{SPR_SMOK, FF_TRANS50  , 4, {NULL}, 0, 0, S_SMOKE2}, // S_SMOKE1
-	{SPR_SMOK, FF_TRANS50|1, 5, {NULL}, 0, 0, S_SMOKE3}, // S_SMOKE2
-	{SPR_SMOK, FF_TRANS50|2, 6, {NULL}, 0, 0, S_SMOKE4}, // S_SMOKE3
-	{SPR_SMOK, FF_TRANS50|3, 7, {NULL}, 0, 0, S_SMOKE5}, // S_SMOKE4
-	{SPR_SMOK, FF_TRANS50|4, 8, {NULL}, 0, 0, S_NULL},   // S_SMOKE5
+	STATE(SPR_SMOK, FF_TRANS50  , 4, {NULL}, 0, 0, S_SMOKE2), // S_SMOKE1
+	STATE(SPR_SMOK, FF_TRANS50|1, 5, {NULL}, 0, 0, S_SMOKE3), // S_SMOKE2
+	STATE(SPR_SMOK, FF_TRANS50|2, 6, {NULL}, 0, 0, S_SMOKE4), // S_SMOKE3
+	STATE(SPR_SMOK, FF_TRANS50|3, 7, {NULL}, 0, 0, S_SMOKE5), // S_SMOKE4
+	STATE(SPR_SMOK, FF_TRANS50|4, 8, {NULL}, 0, 0, S_NULL),   // S_SMOKE5
 
 	// Bubbles
-	{SPR_BUBL, FF_TRANS50,   1, {A_BubbleRise}, 0, 1024, S_SMALLBUBBLE},  // S_SMALLBUBBLE
-	{SPR_BUBL, FF_TRANS50|1, 1, {A_BubbleRise}, 0, 1024, S_MEDIUMBUBBLE}, // S_MEDIUMBUBBLE
+	STATE(SPR_BUBL, FF_TRANS50,   1, {A_BubbleRise}, 0, 1024, S_SMALLBUBBLE),  // S_SMALLBUBBLE
+	STATE(SPR_BUBL, FF_TRANS50|1, 1, {A_BubbleRise}, 0, 1024, S_MEDIUMBUBBLE), // S_MEDIUMBUBBLE
 
 	// Extra Large Bubble (breathable)
-	{SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|2,   8, {A_BubbleRise}, 0, 1024, S_LARGEBUBBLE2}, // S_LARGEBUBBLE1
-	{SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|3,   8, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE}, // S_LARGEBUBBLE2
-	{SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|4,  16, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE}, // S_EXTRALARGEBUBBLE
+	STATE(SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|2,   8, {A_BubbleRise}, 0, 1024, S_LARGEBUBBLE2), // S_LARGEBUBBLE1
+	STATE(SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|3,   8, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE), // S_LARGEBUBBLE2
+	STATE(SPR_BUBL, FF_TRANS50|FF_FULLBRIGHT|4,  16, {A_BubbleRise}, 0, 1024, S_EXTRALARGEBUBBLE), // S_EXTRALARGEBUBBLE
 
 	// Extra Large Bubble goes POP!
-	{SPR_BUBL, 5, 16, {NULL}, 0, 0, S_NULL}, // S_POP1
+	STATE(SPR_BUBL, 5, 16, {NULL}, 0, 0, S_NULL), // S_POP1
 
-	{SPR_WZAP, FF_TRANS10|FF_ANIMATE|FF_RANDOMANIM, 4, {NULL}, 3, 2, S_NULL},  // S_WATERZAP
+	STATE(SPR_WZAP, FF_TRANS10|FF_ANIMATE|FF_RANDOMANIM, 4, {NULL}, 3, 2, S_NULL),  // S_WATERZAP
 
 	// Spindash dust
-	{SPR_DUST,                          0, 7, {NULL}, 0, 0, S_SPINDUST2}, // S_SPINDUST1
-	{SPR_DUST,                          1, 6, {NULL}, 0, 0, S_SPINDUST3}, // S_SPINDUST2
-	{SPR_DUST,               FF_TRANS30|2, 4, {NULL}, 0, 0, S_SPINDUST4}, // S_SPINDUST3
-	{SPR_DUST,               FF_TRANS60|3, 3, {NULL}, 0, 0, S_NULL}, // S_SPINDUST4
-	{SPR_BUBL,                          0, 7, {NULL}, 0, 0, S_SPINDUST_BUBBLE2}, // S_SPINDUST_BUBBLE1
-	{SPR_BUBL,                          0, 6, {NULL}, 0, 0, S_SPINDUST_BUBBLE3}, // S_SPINDUST_BUBBLE2
-	{SPR_BUBL,               FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_BUBBLE4}, // S_SPINDUST_BUBBLE3
-	{SPR_BUBL,               FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL}, // S_SPINDUST_BUBBLE4
-	{SPR_FPRT,            FF_FULLBRIGHT|0, 7, {NULL}, 0, 0, S_SPINDUST_FIRE2}, // S_SPINDUST_FIRE1
-	{SPR_FPRT,            FF_FULLBRIGHT|0, 6, {NULL}, 0, 0, S_SPINDUST_FIRE3}, // S_SPINDUST_FIRE2
-	{SPR_FPRT, FF_FULLBRIGHT|FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_FIRE4}, // S_SPINDUST_FIRE3
-	{SPR_FPRT, FF_FULLBRIGHT|FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL}, // S_SPINDUST_FIRE4
-
-
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50,    2, {NULL}, 0, 0, S_FOG2},  // S_FOG1
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|1,  2, {NULL}, 0, 0, S_FOG3},  // S_FOG2
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|2,  2, {NULL}, 0, 0, S_FOG4},  // S_FOG3
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|3,  2, {NULL}, 0, 0, S_FOG5},  // S_FOG4
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|4,  2, {NULL}, 0, 0, S_FOG6},  // S_FOG5
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|5,  2, {NULL}, 0, 0, S_FOG7},  // S_FOG6
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|6,  2, {NULL}, 0, 0, S_FOG8},  // S_FOG7
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|7,  2, {NULL}, 0, 0, S_FOG9},  // S_FOG8
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|8,  2, {NULL}, 0, 0, S_FOG10}, // S_FOG9
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|9,  2, {NULL}, 0, 0, S_FOG11}, // S_FOG10
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|10, 2, {NULL}, 0, 0, S_FOG12}, // S_FOG11
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|11, 2, {NULL}, 0, 0, S_FOG13}, // S_FOG12
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|12, 2, {NULL}, 0, 0, S_FOG14}, // S_FOG13
-	{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|13, 2, {NULL}, 0, 0, S_NULL},  // S_FOG14
+	STATE(SPR_DUST,                          0, 7, {NULL}, 0, 0, S_SPINDUST2), // S_SPINDUST1
+	STATE(SPR_DUST,                          1, 6, {NULL}, 0, 0, S_SPINDUST3), // S_SPINDUST2
+	STATE(SPR_DUST,               FF_TRANS30|2, 4, {NULL}, 0, 0, S_SPINDUST4), // S_SPINDUST3
+	STATE(SPR_DUST,               FF_TRANS60|3, 3, {NULL}, 0, 0, S_NULL), // S_SPINDUST4
+	STATE(SPR_BUBL,                          0, 7, {NULL}, 0, 0, S_SPINDUST_BUBBLE2), // S_SPINDUST_BUBBLE1
+	STATE(SPR_BUBL,                          0, 6, {NULL}, 0, 0, S_SPINDUST_BUBBLE3), // S_SPINDUST_BUBBLE2
+	STATE(SPR_BUBL,               FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_BUBBLE4), // S_SPINDUST_BUBBLE3
+	STATE(SPR_BUBL,               FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL), // S_SPINDUST_BUBBLE4
+	STATE(SPR_FPRT,            FF_FULLBRIGHT|0, 7, {NULL}, 0, 0, S_SPINDUST_FIRE2), // S_SPINDUST_FIRE1
+	STATE(SPR_FPRT,            FF_FULLBRIGHT|0, 6, {NULL}, 0, 0, S_SPINDUST_FIRE3), // S_SPINDUST_FIRE2
+	STATE(SPR_FPRT, FF_FULLBRIGHT|FF_TRANS30|0, 4, {NULL}, 0, 0, S_SPINDUST_FIRE4), // S_SPINDUST_FIRE3
+	STATE(SPR_FPRT, FF_FULLBRIGHT|FF_TRANS60|0, 3, {NULL}, 0, 0, S_NULL), // S_SPINDUST_FIRE4
+
+
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50,    2, {NULL}, 0, 0, S_FOG2),  // S_FOG1
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|1,  2, {NULL}, 0, 0, S_FOG3),  // S_FOG2
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|2,  2, {NULL}, 0, 0, S_FOG4),  // S_FOG3
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|3,  2, {NULL}, 0, 0, S_FOG5),  // S_FOG4
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|4,  2, {NULL}, 0, 0, S_FOG6),  // S_FOG5
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|5,  2, {NULL}, 0, 0, S_FOG7),  // S_FOG6
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|6,  2, {NULL}, 0, 0, S_FOG8),  // S_FOG7
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|7,  2, {NULL}, 0, 0, S_FOG9),  // S_FOG8
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|8,  2, {NULL}, 0, 0, S_FOG10), // S_FOG9
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|9,  2, {NULL}, 0, 0, S_FOG11), // S_FOG10
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|10, 2, {NULL}, 0, 0, S_FOG12), // S_FOG11
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|11, 2, {NULL}, 0, 0, S_FOG13), // S_FOG12
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|12, 2, {NULL}, 0, 0, S_FOG14), // S_FOG13
+	STATE(SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|13, 2, {NULL}, 0, 0, S_NULL),  // S_FOG14
 
 	// Flower Seed
-	{SPR_SEED, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 2, 2, S_NULL}, // S_SEED
+	STATE(SPR_SEED, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 2, 2, S_NULL), // S_SEED
 
 	// Particle sprite
-	{SPR_PRTL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL}, // S_PARTICLE
-
-	{SPR_SCOR, 0, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRA  - 100
-	{SPR_SCOR, 1, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRB  - 200
-	{SPR_SCOR, 2, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRC  - 500
-	{SPR_SCOR, 3, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRD  - 1000
-	{SPR_SCOR, 4, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRE  - 10000
-	{SPR_SCOR, 5, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRF  - 400 (mario mode)
-	{SPR_SCOR, 6, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRG  - 800 (mario mode)
-	{SPR_SCOR, 7, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRH  - 2000 (mario mode)
-	{SPR_SCOR, 8, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRI  - 4000 (mario mode)
-	{SPR_SCOR, 9, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRJ  - 8000 (mario mode)
-	{SPR_SCOR, 10, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRK - 1UP (mario mode)
-	{SPR_SCOR, 11, 32, {A_ScoreRise}, 0, 0, S_NULL}, // S_SCRL - 10
+	STATE(SPR_PRTL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL), // S_PARTICLE
+
+	STATE(SPR_SCOR, 0, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRA  - 100
+	STATE(SPR_SCOR, 1, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRB  - 200
+	STATE(SPR_SCOR, 2, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRC  - 500
+	STATE(SPR_SCOR, 3, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRD  - 1000
+	STATE(SPR_SCOR, 4, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRE  - 10000
+	STATE(SPR_SCOR, 5, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRF  - 400 (mario mode)
+	STATE(SPR_SCOR, 6, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRG  - 800 (mario mode)
+	STATE(SPR_SCOR, 7, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRH  - 2000 (mario mode)
+	STATE(SPR_SCOR, 8, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRI  - 4000 (mario mode)
+	STATE(SPR_SCOR, 9, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRJ  - 8000 (mario mode)
+	STATE(SPR_SCOR, 10, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRK - 1UP (mario mode)
+	STATE(SPR_SCOR, 11, 32, {A_ScoreRise}, 0, 0, S_NULL), // S_SCRL - 10
 
 	// Drowning Timer Numbers
-	{SPR_DRWN, 0, 40, {NULL}, 0, 0, S_NULL}, // S_ZERO1
-	{SPR_DRWN, 1, 40, {NULL}, 0, 0, S_NULL}, // S_ONE1
-	{SPR_DRWN, 2, 40, {NULL}, 0, 0, S_NULL}, // S_TWO1
-	{SPR_DRWN, 3, 40, {NULL}, 0, 0, S_NULL}, // S_THREE1
-	{SPR_DRWN, 4, 40, {NULL}, 0, 0, S_NULL}, // S_FOUR1
-	{SPR_DRWN, 5, 40, {NULL}, 0, 0, S_NULL}, // S_FIVE1
-
-	{SPR_DRWN,  6, 40, {NULL}, 0, 0, S_NULL}, // S_ZERO2
-	{SPR_DRWN,  7, 40, {NULL}, 0, 0, S_NULL}, // S_ONE2
-	{SPR_DRWN,  8, 40, {NULL}, 0, 0, S_NULL}, // S_TWO2
-	{SPR_DRWN,  9, 40, {NULL}, 0, 0, S_NULL}, // S_THREE2
-	{SPR_DRWN, 10, 40, {NULL}, 0, 0, S_NULL}, // S_FOUR2
-	{SPR_DRWN, 11, 40, {NULL}, 0, 0, S_NULL}, // S_FIVE2
+	STATE(SPR_DRWN, 0, 40, {NULL}, 0, 0, S_NULL), // S_ZERO1
+	STATE(SPR_DRWN, 1, 40, {NULL}, 0, 0, S_NULL), // S_ONE1
+	STATE(SPR_DRWN, 2, 40, {NULL}, 0, 0, S_NULL), // S_TWO1
+	STATE(SPR_DRWN, 3, 40, {NULL}, 0, 0, S_NULL), // S_THREE1
+	STATE(SPR_DRWN, 4, 40, {NULL}, 0, 0, S_NULL), // S_FOUR1
+	STATE(SPR_DRWN, 5, 40, {NULL}, 0, 0, S_NULL), // S_FIVE1
+
+	STATE(SPR_DRWN,  6, 40, {NULL}, 0, 0, S_NULL), // S_ZERO2
+	STATE(SPR_DRWN,  7, 40, {NULL}, 0, 0, S_NULL), // S_ONE2
+	STATE(SPR_DRWN,  8, 40, {NULL}, 0, 0, S_NULL), // S_TWO2
+	STATE(SPR_DRWN,  9, 40, {NULL}, 0, 0, S_NULL), // S_THREE2
+	STATE(SPR_DRWN, 10, 40, {NULL}, 0, 0, S_NULL), // S_FOUR2
+	STATE(SPR_DRWN, 11, 40, {NULL}, 0, 0, S_NULL), // S_FIVE2
 
 	// Flight indicator
-	{SPR_FLII, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 4, S_NULL}, // S_FLIGHTINDICATOR
+	STATE(SPR_FLII, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 4, S_NULL), // S_FLIGHTINDICATOR
 
-	{SPR_LCKN,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL}, // S_LOCKON1
-	{SPR_LCKN, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL}, // S_LOCKON2
-	{SPR_LCKN, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL}, // S_LOCKON3
-	{SPR_LCKN, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL}, // S_LOCKON4
+	STATE(SPR_LCKN,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL), // S_LOCKON1
+	STATE(SPR_LCKN, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL), // S_LOCKON2
+	STATE(SPR_LCKN, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL), // S_LOCKON3
+	STATE(SPR_LCKN, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL), // S_LOCKON4
 
-	{SPR_LCKN,   FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_LOCKONINF1
-	{SPR_LCKN, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_LOCKONINF2
-	{SPR_LCKN, 2|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_LOCKONINF3
-	{SPR_LCKN, 3|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_LOCKONINF4
+	STATE(SPR_LCKN,   FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_LOCKONINF1
+	STATE(SPR_LCKN, 1|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_LOCKONINF2
+	STATE(SPR_LCKN, 2|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_LOCKONINF3
+	STATE(SPR_LCKN, 3|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_LOCKONINF4
 
-	{SPR_TTAG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL}, // S_TTAG
+	STATE(SPR_TTAG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL), // S_TTAG
 
 	// CTF Sign
-	{SPR_GFLG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL}, // S_GOTFLAG
+	STATE(SPR_GFLG, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_NULL), // S_GOTFLAG
 
 	// Finish flag
-	{SPR_FNSF,    FF_TRANS30, -1, {NULL}, 0, 0, S_NULL}, // S_FINISHFLAG
+	STATE(SPR_FNSF,    FF_TRANS30, -1, {NULL}, 0, 0, S_NULL), // S_FINISHFLAG
 
-	{SPR_CORK,             0, -1, {NULL}, 0, 0, S_NULL}, // S_CORK
-	{SPR_LHRT, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_LHRT
+	STATE(SPR_CORK,             0, -1, {NULL}, 0, 0, S_NULL), // S_CORK
+	STATE(SPR_LHRT, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL), // S_LHRT
 
 	// Red Rings (thrown)
-	{SPR_RRNG, FF_FULLBRIGHT,   1, {A_ThrownRing}, 0, 0, S_RRNG2}, // S_RRNG1
-	{SPR_RRNG, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_RRNG3}, // S_RRNG2
-	{SPR_RRNG, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_RRNG4}, // S_RRNG3
-	{SPR_RRNG, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_RRNG5}, // S_RRNG4
-	{SPR_RRNG, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_RRNG6}, // S_RRNG5
-	{SPR_RRNG, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_RRNG7}, // S_RRNG6
-	{SPR_RRNG, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_RRNG1}, // S_RRNG7
+	STATE(SPR_RRNG, FF_FULLBRIGHT,   1, {A_ThrownRing}, 0, 0, S_RRNG2), // S_RRNG1
+	STATE(SPR_RRNG, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_RRNG3), // S_RRNG2
+	STATE(SPR_RRNG, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_RRNG4), // S_RRNG3
+	STATE(SPR_RRNG, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_RRNG5), // S_RRNG4
+	STATE(SPR_RRNG, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_RRNG6), // S_RRNG5
+	STATE(SPR_RRNG, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_RRNG7), // S_RRNG6
+	STATE(SPR_RRNG, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_RRNG1), // S_RRNG7
 
 	// Weapon Ring Ammo
-	{SPR_RNGB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_BOUNCERINGAMMO},    // S_BOUNCERINGAMMO
-	{SPR_RNGR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_RAILRINGAMMO},      // S_RAILRINGAMMO
-	{SPR_RNGI, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_INFINITYRINGAMMO},  // S_INFINITYRINGAMMO
-	{SPR_RNGA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_AUTOMATICRINGAMMO}, // S_AUTOMATICRINGAMMO
-	{SPR_RNGE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_EXPLOSIONRINGAMMO}, // S_EXPLOSIONRINGAMMO
-	{SPR_RNGS, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_SCATTERRINGAMMO},   // S_SCATTERRINGAMMO
-	{SPR_RNGG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_GRENADERINGAMMO},   // S_GRENADERINGAMMO
+	STATE(SPR_RNGB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_BOUNCERINGAMMO),    // S_BOUNCERINGAMMO
+	STATE(SPR_RNGR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_RAILRINGAMMO),      // S_RAILRINGAMMO
+	STATE(SPR_RNGI, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_INFINITYRINGAMMO),  // S_INFINITYRINGAMMO
+	STATE(SPR_RNGA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_AUTOMATICRINGAMMO), // S_AUTOMATICRINGAMMO
+	STATE(SPR_RNGE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_EXPLOSIONRINGAMMO), // S_EXPLOSIONRINGAMMO
+	STATE(SPR_RNGS, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_SCATTERRINGAMMO),   // S_SCATTERRINGAMMO
+	STATE(SPR_RNGG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 34, 1, S_GRENADERINGAMMO),   // S_GRENADERINGAMMO
 
 	// Bounce Ring Pickup
-	{SPR_PIKB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_BOUNCEPICKUP},  // S_BOUNCEPICKUP
+	STATE(SPR_PIKB, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_BOUNCEPICKUP),  // S_BOUNCEPICKUP
 
-	{SPR_PIKB,  0, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE2}, // S_BOUNCEPICKUPFADE1
-	{SPR_PIKB,  2, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE3}, // S_BOUNCEPICKUPFADE2
-	{SPR_PIKB,  4, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE4}, // S_BOUNCEPICKUPFADE3
-	{SPR_PIKB,  6, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE5}, // S_BOUNCEPICKUPFADE4
-	{SPR_PIKB,  8, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE6}, // S_BOUNCEPICKUPFADE5
-	{SPR_PIKB, 10, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE7}, // S_BOUNCEPICKUPFADE6
-	{SPR_PIKB, 12, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE8}, // S_BOUNCEPICKUPFADE7
-	{SPR_PIKB, 14, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE1}, // S_BOUNCEPICKUPFADE8
+	STATE(SPR_PIKB,  0, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE2), // S_BOUNCEPICKUPFADE1
+	STATE(SPR_PIKB,  2, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE3), // S_BOUNCEPICKUPFADE2
+	STATE(SPR_PIKB,  4, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE4), // S_BOUNCEPICKUPFADE3
+	STATE(SPR_PIKB,  6, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE5), // S_BOUNCEPICKUPFADE4
+	STATE(SPR_PIKB,  8, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE6), // S_BOUNCEPICKUPFADE5
+	STATE(SPR_PIKB, 10, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE7), // S_BOUNCEPICKUPFADE6
+	STATE(SPR_PIKB, 12, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE8), // S_BOUNCEPICKUPFADE7
+	STATE(SPR_PIKB, 14, 1, {NULL}, 0, 0, S_BOUNCEPICKUPFADE1), // S_BOUNCEPICKUPFADE8
 
 	// Rail Ring Pickup
-	{SPR_PIKR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_RAILPICKUP},  // S_RAILPICKUP
+	STATE(SPR_PIKR, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_RAILPICKUP),  // S_RAILPICKUP
 
-	{SPR_PIKR,  0, 1, {NULL}, 0, 0, S_RAILPICKUPFADE2}, // S_RAILPICKUPFADE1
-	{SPR_PIKR,  2, 1, {NULL}, 0, 0, S_RAILPICKUPFADE3}, // S_RAILPICKUPFADE2
-	{SPR_PIKR,  4, 1, {NULL}, 0, 0, S_RAILPICKUPFADE4}, // S_RAILPICKUPFADE3
-	{SPR_PIKR,  6, 1, {NULL}, 0, 0, S_RAILPICKUPFADE5}, // S_RAILPICKUPFADE4
-	{SPR_PIKR,  8, 1, {NULL}, 0, 0, S_RAILPICKUPFADE6}, // S_RAILPICKUPFADE5
-	{SPR_PIKR, 10, 1, {NULL}, 0, 0, S_RAILPICKUPFADE7}, // S_RAILPICKUPFADE6
-	{SPR_PIKR, 12, 1, {NULL}, 0, 0, S_RAILPICKUPFADE8}, // S_RAILPICKUPFADE7
-	{SPR_PIKR, 14, 1, {NULL}, 0, 0, S_RAILPICKUPFADE1}, // S_RAILPICKUPFADE8
+	STATE(SPR_PIKR,  0, 1, {NULL}, 0, 0, S_RAILPICKUPFADE2), // S_RAILPICKUPFADE1
+	STATE(SPR_PIKR,  2, 1, {NULL}, 0, 0, S_RAILPICKUPFADE3), // S_RAILPICKUPFADE2
+	STATE(SPR_PIKR,  4, 1, {NULL}, 0, 0, S_RAILPICKUPFADE4), // S_RAILPICKUPFADE3
+	STATE(SPR_PIKR,  6, 1, {NULL}, 0, 0, S_RAILPICKUPFADE5), // S_RAILPICKUPFADE4
+	STATE(SPR_PIKR,  8, 1, {NULL}, 0, 0, S_RAILPICKUPFADE6), // S_RAILPICKUPFADE5
+	STATE(SPR_PIKR, 10, 1, {NULL}, 0, 0, S_RAILPICKUPFADE7), // S_RAILPICKUPFADE6
+	STATE(SPR_PIKR, 12, 1, {NULL}, 0, 0, S_RAILPICKUPFADE8), // S_RAILPICKUPFADE7
+	STATE(SPR_PIKR, 14, 1, {NULL}, 0, 0, S_RAILPICKUPFADE1), // S_RAILPICKUPFADE8
 
 	// Auto Ring Pickup
-	{SPR_PIKA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_AUTOPICKUP},  // S_AUTOPICKUP
+	STATE(SPR_PIKA, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_AUTOPICKUP),  // S_AUTOPICKUP
 
-	{SPR_PIKA,  0, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE2}, // S_AUTOPICKUPFADE1
-	{SPR_PIKA,  2, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE3}, // S_AUTOPICKUPFADE2
-	{SPR_PIKA,  4, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE4}, // S_AUTOPICKUPFADE3
-	{SPR_PIKA,  6, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE5}, // S_AUTOPICKUPFADE4
-	{SPR_PIKA,  8, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE6}, // S_AUTOPICKUPFADE5
-	{SPR_PIKA, 10, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE7}, // S_AUTOPICKUPFADE6
-	{SPR_PIKA, 12, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE8}, // S_AUTOPICKUPFADE7
-	{SPR_PIKA, 14, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE1}, // S_AUTOPICKUPFADE8
+	STATE(SPR_PIKA,  0, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE2), // S_AUTOPICKUPFADE1
+	STATE(SPR_PIKA,  2, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE3), // S_AUTOPICKUPFADE2
+	STATE(SPR_PIKA,  4, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE4), // S_AUTOPICKUPFADE3
+	STATE(SPR_PIKA,  6, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE5), // S_AUTOPICKUPFADE4
+	STATE(SPR_PIKA,  8, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE6), // S_AUTOPICKUPFADE5
+	STATE(SPR_PIKA, 10, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE7), // S_AUTOPICKUPFADE6
+	STATE(SPR_PIKA, 12, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE8), // S_AUTOPICKUPFADE7
+	STATE(SPR_PIKA, 14, 1, {NULL}, 0, 0, S_AUTOPICKUPFADE1), // S_AUTOPICKUPFADE8
 
 	// Explode Ring Pickup
-	{SPR_PIKE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_EXPLODEPICKUP},  // S_EXPLODEPICKUP
+	STATE(SPR_PIKE, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_EXPLODEPICKUP),  // S_EXPLODEPICKUP
 
-	{SPR_PIKE,  0, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE2}, // S_EXPLODEPICKUPFADE1
-	{SPR_PIKE,  2, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE3}, // S_EXPLODEPICKUPFADE2
-	{SPR_PIKE,  4, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE4}, // S_EXPLODEPICKUPFADE3
-	{SPR_PIKE,  6, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE5}, // S_EXPLODEPICKUPFADE4
-	{SPR_PIKE,  8, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE6}, // S_EXPLODEPICKUPFADE5
-	{SPR_PIKE, 10, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE7}, // S_EXPLODEPICKUPFADE6
-	{SPR_PIKE, 12, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE8}, // S_EXPLODEPICKUPFADE7
-	{SPR_PIKE, 14, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE1}, // S_EXPLODEPICKUPFADE8
+	STATE(SPR_PIKE,  0, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE2), // S_EXPLODEPICKUPFADE1
+	STATE(SPR_PIKE,  2, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE3), // S_EXPLODEPICKUPFADE2
+	STATE(SPR_PIKE,  4, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE4), // S_EXPLODEPICKUPFADE3
+	STATE(SPR_PIKE,  6, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE5), // S_EXPLODEPICKUPFADE4
+	STATE(SPR_PIKE,  8, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE6), // S_EXPLODEPICKUPFADE5
+	STATE(SPR_PIKE, 10, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE7), // S_EXPLODEPICKUPFADE6
+	STATE(SPR_PIKE, 12, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE8), // S_EXPLODEPICKUPFADE7
+	STATE(SPR_PIKE, 14, 1, {NULL}, 0, 0, S_EXPLODEPICKUPFADE1), // S_EXPLODEPICKUPFADE8
 
 	// Scatter Ring Pickup
-	{SPR_PIKS,  FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_SCATTERPICKUP},  // S_SCATTERPICKUP
+	STATE(SPR_PIKS,  FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_SCATTERPICKUP),  // S_SCATTERPICKUP
 
-	{SPR_PIKS,  0, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE2}, // S_SCATTERPICKUPFADE1
-	{SPR_PIKS,  2, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE3}, // S_SCATTERPICKUPFADE2
-	{SPR_PIKS,  4, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE4}, // S_SCATTERPICKUPFADE3
-	{SPR_PIKS,  6, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE5}, // S_SCATTERPICKUPFADE4
-	{SPR_PIKS,  8, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE6}, // S_SCATTERPICKUPFADE5
-	{SPR_PIKS, 10, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE7}, // S_SCATTERPICKUPFADE6
-	{SPR_PIKS, 12, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE8}, // S_SCATTERPICKUPFADE7
-	{SPR_PIKS, 14, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE1}, // S_SCATTERPICKUPFADE8
+	STATE(SPR_PIKS,  0, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE2), // S_SCATTERPICKUPFADE1
+	STATE(SPR_PIKS,  2, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE3), // S_SCATTERPICKUPFADE2
+	STATE(SPR_PIKS,  4, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE4), // S_SCATTERPICKUPFADE3
+	STATE(SPR_PIKS,  6, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE5), // S_SCATTERPICKUPFADE4
+	STATE(SPR_PIKS,  8, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE6), // S_SCATTERPICKUPFADE5
+	STATE(SPR_PIKS, 10, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE7), // S_SCATTERPICKUPFADE6
+	STATE(SPR_PIKS, 12, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE8), // S_SCATTERPICKUPFADE7
+	STATE(SPR_PIKS, 14, 1, {NULL}, 0, 0, S_SCATTERPICKUPFADE1), // S_SCATTERPICKUPFADE8
 
 	// Grenade Ring Pickup
-	{SPR_PIKG,  FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_GRENADEPICKUP},  // S_GRENADEPICKUP
+	STATE(SPR_PIKG,  FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 15, 1, S_GRENADEPICKUP),  // S_GRENADEPICKUP
 
-	{SPR_PIKG,  0, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE2}, // S_GRENADEPICKUPFADE1
-	{SPR_PIKG,  2, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE3}, // S_GRENADEPICKUPFADE2
-	{SPR_PIKG,  4, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE4}, // S_GRENADEPICKUPFADE3
-	{SPR_PIKG,  6, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE5}, // S_GRENADEPICKUPFADE4
-	{SPR_PIKG,  8, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE6}, // S_GRENADEPICKUPFADE5
-	{SPR_PIKG, 10, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE7}, // S_GRENADEPICKUPFADE6
-	{SPR_PIKG, 12, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE8}, // S_GRENADEPICKUPFADE7
-	{SPR_PIKG, 14, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE1}, // S_GRENADEPICKUPFADE8
+	STATE(SPR_PIKG,  0, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE2), // S_GRENADEPICKUPFADE1
+	STATE(SPR_PIKG,  2, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE3), // S_GRENADEPICKUPFADE2
+	STATE(SPR_PIKG,  4, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE4), // S_GRENADEPICKUPFADE3
+	STATE(SPR_PIKG,  6, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE5), // S_GRENADEPICKUPFADE4
+	STATE(SPR_PIKG,  8, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE6), // S_GRENADEPICKUPFADE5
+	STATE(SPR_PIKG, 10, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE7), // S_GRENADEPICKUPFADE6
+	STATE(SPR_PIKG, 12, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE8), // S_GRENADEPICKUPFADE7
+	STATE(SPR_PIKG, 14, 1, {NULL}, 0, 0, S_GRENADEPICKUPFADE1), // S_GRENADEPICKUPFADE8
 
 	// Thrown Weapon Rings
-	{SPR_RNGB, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE2}, // S_THROWNBOUNCE1
-	{SPR_RNGB, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE3}, // S_THROWNBOUNCE2
-	{SPR_RNGB, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE4}, // S_THROWNBOUNCE3
-	{SPR_RNGB, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE5}, // S_THROWNBOUNCE4
-	{SPR_RNGB, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE6}, // S_THROWNBOUNCE5
-	{SPR_RNGB, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE7}, // S_THROWNBOUNCE6
-	{SPR_RNGB, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE1}, // S_THROWNBOUNCE7
-
-	{SPR_RNGI, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY2}, // S_THROWNINFINITY1
-	{SPR_RNGI, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY3}, // S_THROWNINFINITY2
-	{SPR_RNGI, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY4}, // S_THROWNINFINITY3
-	{SPR_RNGI, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY5}, // S_THROWNINFINITY4
-	{SPR_RNGI, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY6}, // S_THROWNINFINITY5
-	{SPR_RNGI, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY7}, // S_THROWNINFINITY6
-	{SPR_RNGI, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY1}, // S_THROWNINFINITY7
-
-	{SPR_TAUT, FF_FULLBRIGHT  , 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC2}, // S_THROWNAUTOMATIC1
-	{SPR_TAUT, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC3}, // S_THROWNAUTOMATIC2
-	{SPR_TAUT, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC4}, // S_THROWNAUTOMATIC3
-	{SPR_TAUT, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC5}, // S_THROWNAUTOMATIC4
-	{SPR_TAUT, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC6}, // S_THROWNAUTOMATIC5
-	{SPR_TAUT, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC7}, // S_THROWNAUTOMATIC6
-	{SPR_TAUT, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC1}, // S_THROWNAUTOMATIC7
-
-	{SPR_RNGE, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION2}, // S_THROWNEXPLOSION1
-	{SPR_RNGE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION3}, // S_THROWNEXPLOSION2
-	{SPR_RNGE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION4}, // S_THROWNEXPLOSION3
-	{SPR_RNGE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION5}, // S_THROWNEXPLOSION4
-	{SPR_RNGE, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION6}, // S_THROWNEXPLOSION5
-	{SPR_RNGE, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION7}, // S_THROWNEXPLOSION6
-	{SPR_RNGE, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION1}, // S_THROWNEXPLOSION7
-
-	{SPR_TGRE, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE2},  // S_THROWNGRENADE1
-	{SPR_TGRE, FF_FULLBRIGHT| 1, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE3},  // S_THROWNGRENADE2
-	{SPR_TGRE, FF_FULLBRIGHT| 2, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE4},  // S_THROWNGRENADE3
-	{SPR_TGRE, FF_FULLBRIGHT| 3, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE5},  // S_THROWNGRENADE4
-	{SPR_TGRE, FF_FULLBRIGHT| 4, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE6},  // S_THROWNGRENADE5
-	{SPR_TGRE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE7},  // S_THROWNGRENADE6
-	{SPR_TGRE, FF_FULLBRIGHT| 6, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE8},  // S_THROWNGRENADE7
-	{SPR_TGRE, FF_FULLBRIGHT| 7, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE9},  // S_THROWNGRENADE8
-	{SPR_TGRE, FF_FULLBRIGHT| 8, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE10}, // S_THROWNGRENADE9
-	{SPR_TGRE, FF_FULLBRIGHT| 9, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE11}, // S_THROWNGRENADE10
-	{SPR_TGRE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE12}, // S_THROWNGRENADE11
-	{SPR_TGRE, FF_FULLBRIGHT|11, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE13}, // S_THROWNGRENADE12
-	{SPR_TGRE, FF_FULLBRIGHT|12, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE14}, // S_THROWNGRENADE13
-	{SPR_TGRE, FF_FULLBRIGHT|13, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE15}, // S_THROWNGRENADE14
-	{SPR_TGRE, FF_FULLBRIGHT|14, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE16}, // S_THROWNGRENADE15
-	{SPR_TGRE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE17}, // S_THROWNGRENADE16
-	{SPR_TGRE, FF_FULLBRIGHT|16, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE18}, // S_THROWNGRENADE17
-	{SPR_TGRE, FF_FULLBRIGHT|17, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE1},  // S_THROWNGRENADE18
-
-	{SPR_TSCR, FF_FULLBRIGHT, 1, {A_ThrownRing}, 0, 0, S_THROWNSCATTER}, // S_THROWNSCATTER
-
-	{SPR_NULL, 0, 1, {A_RingExplode}, 0, 0, S_XPLD1}, // S_RINGEXPLODE
+	STATE(SPR_RNGB, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE2), // S_THROWNBOUNCE1
+	STATE(SPR_RNGB, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE3), // S_THROWNBOUNCE2
+	STATE(SPR_RNGB, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE4), // S_THROWNBOUNCE3
+	STATE(SPR_RNGB, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE5), // S_THROWNBOUNCE4
+	STATE(SPR_RNGB, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE6), // S_THROWNBOUNCE5
+	STATE(SPR_RNGB, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE7), // S_THROWNBOUNCE6
+	STATE(SPR_RNGB, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNBOUNCE1), // S_THROWNBOUNCE7
+
+	STATE(SPR_RNGI, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY2), // S_THROWNINFINITY1
+	STATE(SPR_RNGI, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY3), // S_THROWNINFINITY2
+	STATE(SPR_RNGI, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY4), // S_THROWNINFINITY3
+	STATE(SPR_RNGI, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY5), // S_THROWNINFINITY4
+	STATE(SPR_RNGI, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY6), // S_THROWNINFINITY5
+	STATE(SPR_RNGI, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY7), // S_THROWNINFINITY6
+	STATE(SPR_RNGI, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNINFINITY1), // S_THROWNINFINITY7
+
+	STATE(SPR_TAUT, FF_FULLBRIGHT  , 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC2), // S_THROWNAUTOMATIC1
+	STATE(SPR_TAUT, FF_FULLBRIGHT|1, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC3), // S_THROWNAUTOMATIC2
+	STATE(SPR_TAUT, FF_FULLBRIGHT|2, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC4), // S_THROWNAUTOMATIC3
+	STATE(SPR_TAUT, FF_FULLBRIGHT|3, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC5), // S_THROWNAUTOMATIC4
+	STATE(SPR_TAUT, FF_FULLBRIGHT|4, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC6), // S_THROWNAUTOMATIC5
+	STATE(SPR_TAUT, FF_FULLBRIGHT|5, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC7), // S_THROWNAUTOMATIC6
+	STATE(SPR_TAUT, FF_FULLBRIGHT|6, 1, {A_ThrownRing}, 0, 0, S_THROWNAUTOMATIC1), // S_THROWNAUTOMATIC7
+
+	STATE(SPR_RNGE, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION2), // S_THROWNEXPLOSION1
+	STATE(SPR_RNGE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION3), // S_THROWNEXPLOSION2
+	STATE(SPR_RNGE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION4), // S_THROWNEXPLOSION3
+	STATE(SPR_RNGE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION5), // S_THROWNEXPLOSION4
+	STATE(SPR_RNGE, FF_FULLBRIGHT|20, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION6), // S_THROWNEXPLOSION5
+	STATE(SPR_RNGE, FF_FULLBRIGHT|25, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION7), // S_THROWNEXPLOSION6
+	STATE(SPR_RNGE, FF_FULLBRIGHT|30, 1, {A_ThrownRing}, 0, 0, S_THROWNEXPLOSION1), // S_THROWNEXPLOSION7
+
+	STATE(SPR_TGRE, FF_FULLBRIGHT   , 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE2),  // S_THROWNGRENADE1
+	STATE(SPR_TGRE, FF_FULLBRIGHT| 1, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE3),  // S_THROWNGRENADE2
+	STATE(SPR_TGRE, FF_FULLBRIGHT| 2, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE4),  // S_THROWNGRENADE3
+	STATE(SPR_TGRE, FF_FULLBRIGHT| 3, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE5),  // S_THROWNGRENADE4
+	STATE(SPR_TGRE, FF_FULLBRIGHT| 4, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE6),  // S_THROWNGRENADE5
+	STATE(SPR_TGRE, FF_FULLBRIGHT| 5, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE7),  // S_THROWNGRENADE6
+	STATE(SPR_TGRE, FF_FULLBRIGHT| 6, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE8),  // S_THROWNGRENADE7
+	STATE(SPR_TGRE, FF_FULLBRIGHT| 7, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE9),  // S_THROWNGRENADE8
+	STATE(SPR_TGRE, FF_FULLBRIGHT| 8, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE10), // S_THROWNGRENADE9
+	STATE(SPR_TGRE, FF_FULLBRIGHT| 9, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE11), // S_THROWNGRENADE10
+	STATE(SPR_TGRE, FF_FULLBRIGHT|10, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE12), // S_THROWNGRENADE11
+	STATE(SPR_TGRE, FF_FULLBRIGHT|11, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE13), // S_THROWNGRENADE12
+	STATE(SPR_TGRE, FF_FULLBRIGHT|12, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE14), // S_THROWNGRENADE13
+	STATE(SPR_TGRE, FF_FULLBRIGHT|13, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE15), // S_THROWNGRENADE14
+	STATE(SPR_TGRE, FF_FULLBRIGHT|14, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE16), // S_THROWNGRENADE15
+	STATE(SPR_TGRE, FF_FULLBRIGHT|15, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE17), // S_THROWNGRENADE16
+	STATE(SPR_TGRE, FF_FULLBRIGHT|16, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE18), // S_THROWNGRENADE17
+	STATE(SPR_TGRE, FF_FULLBRIGHT|17, 1, {A_ThrownRing}, 0, 0, S_THROWNGRENADE1),  // S_THROWNGRENADE18
+
+	STATE(SPR_TSCR, FF_FULLBRIGHT, 1, {A_ThrownRing}, 0, 0, S_THROWNSCATTER), // S_THROWNSCATTER
+
+	STATE(SPR_NULL, 0, 1, {A_RingExplode}, 0, 0, S_XPLD1), // S_RINGEXPLODE
 
 	// Coin
-	{SPR_COIN, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_COIN2}, // S_COIN1
-	{SPR_COIN, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COIN3}, // S_COIN2
-	{SPR_COIN, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COIN1}, // S_COIN3
+	STATE(SPR_COIN, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_COIN2), // S_COIN1
+	STATE(SPR_COIN, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COIN3), // S_COIN2
+	STATE(SPR_COIN, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COIN1), // S_COIN3
 
 	// Coin Sparkle
-	{SPR_CPRK, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_COINSPARKLE2}, // S_COINSPARKLE1
-	{SPR_CPRK, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COINSPARKLE3}, // S_COINSPARKLE2
-	{SPR_CPRK, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COINSPARKLE4}, // S_COINSPARKLE3
-	{SPR_CPRK, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL},         // S_COINSPARKLE4
+	STATE(SPR_CPRK, FF_FULLBRIGHT,   5, {NULL}, 0, 0, S_COINSPARKLE2), // S_COINSPARKLE1
+	STATE(SPR_CPRK, FF_FULLBRIGHT|1, 5, {NULL}, 0, 0, S_COINSPARKLE3), // S_COINSPARKLE2
+	STATE(SPR_CPRK, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_COINSPARKLE4), // S_COINSPARKLE3
+	STATE(SPR_CPRK, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL),         // S_COINSPARKLE4
 
 	// Goomba
-	{SPR_GOOM, 0, 6, {A_Look}, 0, 0, S_GOOMBA1B}, // S_GOOMBA1
-	{SPR_GOOM, 1, 6, {A_Look}, 0, 0, S_GOOMBA1},  // S_GOOMBA1B
-	{SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA3}, // S_GOOMBA2
-	{SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA4}, // S_GOOMBA3
-	{SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA5}, // S_GOOMBA4
-	{SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA6}, // S_GOOMBA5
-	{SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA7}, // S_GOOMBA6
-	{SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA8}, // S_GOOMBA7
-	{SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA9}, // S_GOOMBA8
-	{SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA2}, // S_GOOMBA9
-	{SPR_GOOM, 2, 16, {A_Scream}, 0, 0, S_NULL},  // S_GOOMBA_DEAD
+	STATE(SPR_GOOM, 0, 6, {A_Look}, 0, 0, S_GOOMBA1B), // S_GOOMBA1
+	STATE(SPR_GOOM, 1, 6, {A_Look}, 0, 0, S_GOOMBA1),  // S_GOOMBA1B
+	STATE(SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA3), // S_GOOMBA2
+	STATE(SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA4), // S_GOOMBA3
+	STATE(SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA5), // S_GOOMBA4
+	STATE(SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA6), // S_GOOMBA5
+	STATE(SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA7), // S_GOOMBA6
+	STATE(SPR_GOOM, 0, 3, {A_Chase}, 0, 0, S_GOOMBA8), // S_GOOMBA7
+	STATE(SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA9), // S_GOOMBA8
+	STATE(SPR_GOOM, 1, 3, {A_Chase}, 0, 0, S_GOOMBA2), // S_GOOMBA9
+	STATE(SPR_GOOM, 2, 16, {A_Scream}, 0, 0, S_NULL),  // S_GOOMBA_DEAD
 
 	// Blue Goomba
-	{SPR_BGOM, 0, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1B}, // BLUEGOOMBA1
-	{SPR_BGOM, 1, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1},  // BLUEGOOMBA1B
-	{SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA3}, // S_BLUEGOOMBA2
-	{SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA4}, // S_BLUEGOOMBA3
-	{SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA5}, // S_BLUEGOOMBA4
-	{SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA6}, // S_BLUEGOOMBA5
-	{SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA7}, // S_BLUEGOOMBA6
-	{SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA8}, // S_BLUEGOOMBA7
-	{SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA9}, // S_BLUEGOOMBA8
-	{SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA2}, // S_BLUEGOOMBA9
-	{SPR_BGOM, 2, 16, {A_Scream}, 0, 0, S_NULL},      // S_BLUEGOOMBA_DEAD
+	STATE(SPR_BGOM, 0, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1B), // S_BLUEGOOMBA1
+	STATE(SPR_BGOM, 1, 6, {A_Look}, 0, 0, S_BLUEGOOMBA1),  // S_BLUEGOOMBA1B
+	STATE(SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA3), // S_BLUEGOOMBA2
+	STATE(SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA4), // S_BLUEGOOMBA3
+	STATE(SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA5), // S_BLUEGOOMBA4
+	STATE(SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA6), // S_BLUEGOOMBA5
+	STATE(SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA7), // S_BLUEGOOMBA6
+	STATE(SPR_BGOM, 0, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA8), // S_BLUEGOOMBA7
+	STATE(SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA9), // S_BLUEGOOMBA8
+	STATE(SPR_BGOM, 1, 3, {A_Chase}, 0, 0, S_BLUEGOOMBA2), // S_BLUEGOOMBA9
+	STATE(SPR_BGOM, 2, 16, {A_Scream}, 0, 0, S_NULL),      // S_BLUEGOOMBA_DEAD
 
 	// Fire Flower
-	{SPR_FFWR, 0, 3, {NULL}, 0, 0, S_FIREFLOWER2}, // S_FIREFLOWER1
-	{SPR_FFWR, 1, 3, {NULL}, 0, 0, S_FIREFLOWER3}, // S_FIREFLOWER2
-	{SPR_FFWR, 2, 3, {NULL}, 0, 0, S_FIREFLOWER4}, // S_FIREFLOWER3
-	{SPR_FFWR, 3, 3, {NULL}, 0, 0, S_FIREFLOWER1}, // S_FIREFLOWER4
+	STATE(SPR_FFWR, 0, 3, {NULL}, 0, 0, S_FIREFLOWER2), // S_FIREFLOWER1
+	STATE(SPR_FFWR, 1, 3, {NULL}, 0, 0, S_FIREFLOWER3), // S_FIREFLOWER2
+	STATE(SPR_FFWR, 2, 3, {NULL}, 0, 0, S_FIREFLOWER4), // S_FIREFLOWER3
+	STATE(SPR_FFWR, 3, 3, {NULL}, 0, 0, S_FIREFLOWER1), // S_FIREFLOWER4
 
 	// Thrown Mario Fireball
-	{SPR_FBLL, FF_FULLBRIGHT,   1, {A_SpawnObjectRelative}, 0, MT_FIREBALLTRAIL, S_FIREBALL},   // S_FIREBALL
-	{SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 1, {A_SetScale}, FRACUNIT*3/4, 0, S_FIREBALLTRAIL2}, // S_FIREBALLTRAIL1
-	{SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 8, {A_SetScale}, FRACUNIT/6, 1, S_NULL},             // S_FIREBALLTRAIL2
+	STATE(SPR_FBLL, FF_FULLBRIGHT,   1, {A_SpawnObjectRelative}, 0, MT_FIREBALLTRAIL, S_FIREBALL),   // S_FIREBALL
+	STATE(SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 1, {A_SetScale}, FRACUNIT*3/4, 0, S_FIREBALLTRAIL2), // S_FIREBALLTRAIL1
+	STATE(SPR_FBLL, 1|FF_FULLBRIGHT|FF_TRANS50, 8, {A_SetScale}, FRACUNIT/6, 1, S_NULL),             // S_FIREBALLTRAIL2
 
 	// Turtle Shell
-	{SPR_SHLL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHELL
+	STATE(SPR_SHLL, 0, -1, {NULL}, 0, 0, S_NULL), // S_SHELL
 
 	// Puma (Mario fireball)
-	{SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_START2},   // S_PUMA_START1
-	{SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_PlaySound}, sfx_s3k70, 1 + (1<<16), S_PUMA_UP1},   // S_PUMA_START2
-	{SPR_PUMA, FF_FULLBRIGHT  , 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP2},   // S_PUMA_UP1
-	{SPR_PUMA, FF_FULLBRIGHT|1, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP3},   // S_PUMA_UP2
-	{SPR_PUMA, FF_FULLBRIGHT|2, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP1},   // S_PUMA_UP3
-	{SPR_PUMA, FF_FULLBRIGHT|3, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN2}, // S_PUMA_DOWN1
-	{SPR_PUMA, FF_FULLBRIGHT|4, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN3}, // S_PUMA_DOWN2
-	{SPR_PUMA, FF_FULLBRIGHT|5, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN1}, // S_PUMA_DOWN3
-
-	{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS20|6, 4,       {NULL},        0, 0, S_PUMATRAIL2},   // S_PUMATRAIL1
-	{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS40|6, 5, {A_SetScale}, FRACUNIT, 1, S_PUMATRAIL3},   // S_PUMATRAIL2
-	{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS50|7, 4,       {NULL},        0, 0, S_PUMATRAIL4},   // S_PUMATRAIL3
-	{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS60|8, 3,       {NULL},        0, 0, S_NULL},         // S_PUMATRAIL4
+	STATE(SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_START2),   // S_PUMA_START1
+	STATE(SPR_PUMA, FF_FULLBRIGHT|2, 1, {A_PlaySound}, sfx_s3k70, 1 + (1<<16), S_PUMA_UP1),   // S_PUMA_START2
+	STATE(SPR_PUMA, FF_FULLBRIGHT  , 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP2),   // S_PUMA_UP1
+	STATE(SPR_PUMA, FF_FULLBRIGHT|1, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP3),   // S_PUMA_UP2
+	STATE(SPR_PUMA, FF_FULLBRIGHT|2, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP1),   // S_PUMA_UP3
+	STATE(SPR_PUMA, FF_FULLBRIGHT|3, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN2), // S_PUMA_DOWN1
+	STATE(SPR_PUMA, FF_FULLBRIGHT|4, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN3), // S_PUMA_DOWN2
+	STATE(SPR_PUMA, FF_FULLBRIGHT|5, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN1), // S_PUMA_DOWN3
+
+	STATE(SPR_PUMA, FF_FULLBRIGHT|FF_TRANS20|6, 4,       {NULL},        0, 0, S_PUMATRAIL2),   // S_PUMATRAIL1
+	STATE(SPR_PUMA, FF_FULLBRIGHT|FF_TRANS40|6, 5, {A_SetScale}, FRACUNIT, 1, S_PUMATRAIL3),   // S_PUMATRAIL2
+	STATE(SPR_PUMA, FF_FULLBRIGHT|FF_TRANS50|7, 4,       {NULL},        0, 0, S_PUMATRAIL4),   // S_PUMATRAIL3
+	STATE(SPR_PUMA, FF_FULLBRIGHT|FF_TRANS60|8, 3,       {NULL},        0, 0, S_NULL),         // S_PUMATRAIL4
 
 	// Hammer
-	{SPR_HAMM, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL}, // S_HAMMER
+	STATE(SPR_HAMM, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL), // S_HAMMER
 
 	// Koopa
-	{SPR_KOOP, 0, -1, {NULL}, 0, 0, S_NULL},   // S_KOOPA1
-	{SPR_KOOP, 1, 24, {NULL}, 0, 0, S_KOOPA1}, // S_KOOPA2
+	STATE(SPR_KOOP, 0, -1, {NULL}, 0, 0, S_NULL),   // S_KOOPA1
+	STATE(SPR_KOOP, 1, 24, {NULL}, 0, 0, S_KOOPA1), // S_KOOPA2
 
-	{SPR_BFLM, 0, 3,{NULL}, 0, 0, S_KOOPAFLAME2}, // S_KOOPAFLAME1
-	{SPR_BFLM, 1, 3,{NULL}, 0, 0, S_KOOPAFLAME3}, // S_KOOPAFLAME2
-	{SPR_BFLM, 2, 3,{NULL}, 0, 0, S_KOOPAFLAME1}, // S_KOOPAFLAME3
+	STATE(SPR_BFLM, 0, 3,{NULL}, 0, 0, S_KOOPAFLAME2), // S_KOOPAFLAME1
+	STATE(SPR_BFLM, 1, 3,{NULL}, 0, 0, S_KOOPAFLAME3), // S_KOOPAFLAME2
+	STATE(SPR_BFLM, 2, 3,{NULL}, 0, 0, S_KOOPAFLAME1), // S_KOOPAFLAME3
 
 	// Axe
-	{SPR_MAXE, 0, 3, {NULL}, 0, 0, S_AXE2}, // S_AXE1
-	{SPR_MAXE, 1, 3, {NULL}, 0, 0, S_AXE3}, // S_AXE2
-	{SPR_MAXE, 2, 3, {NULL}, 0, 0, S_AXE1}, // S_AXE3
+	STATE(SPR_MAXE, 0, 3, {NULL}, 0, 0, S_AXE2), // S_AXE1
+	STATE(SPR_MAXE, 1, 3, {NULL}, 0, 0, S_AXE3), // S_AXE2
+	STATE(SPR_MAXE, 2, 3, {NULL}, 0, 0, S_AXE1), // S_AXE3
 
-	{SPR_MUS1, 0, -1, {NULL}, 0, 0, S_NULL}, // S_MARIOBUSH1
-	{SPR_MUS2, 0, -1, {NULL}, 0, 0, S_NULL}, // S_MARIOBUSH2
-	{SPR_TOAD, 0, -1, {NULL}, 0, 0, S_NULL}, // S_TOAD
+	STATE(SPR_MUS1, 0, -1, {NULL}, 0, 0, S_NULL), // S_MARIOBUSH1
+	STATE(SPR_MUS2, 0, -1, {NULL}, 0, 0, S_NULL), // S_MARIOBUSH2
+	STATE(SPR_TOAD, 0, -1, {NULL}, 0, 0, S_NULL), // S_TOAD
 
 	// Nights Drone
-	{SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN2}, // S_NIGHTSDRONE_MAN1
-	{SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN1}, // S_NIGHTSDRONE_MAN2
+	STATE(SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN2), // S_NIGHTSDRONE_MAN1
+	STATE(SPR_NDRN, 0, -1, {NULL}, 0, 0, S_NIGHTSDRONE_MAN1), // S_NIGHTSDRONE_MAN2
 
 	// Sparkling point (RETURN TO THE GOAL, etc)
-	{SPR_IVSP, 0, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING2},   // S_NIGHTSDRONE_SPARKLING1
-	{SPR_IVSP, 2, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING3},   // S_NIGHTSDRONE_SPARKLING2
-	{SPR_IVSP, 4, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING4},   // S_NIGHTSDRONE_SPARKLING3
-	{SPR_IVSP, 6, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING5},   // S_NIGHTSDRONE_SPARKLING4
-	{SPR_IVSP, 8, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING6},  // S_NIGHTSDRONE_SPARKLING5
-	{SPR_IVSP, 10, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING7}, // S_NIGHTSDRONE_SPARKLING6
-	{SPR_IVSP, 12, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING8}, // S_NIGHTSDRONE_SPARKLING7
-	{SPR_IVSP, 14, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING9}, // S_NIGHTSDRONE_SPARKLING8
-	{SPR_IVSP, 16, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING10}, // S_NIGHTSDRONE_SPARKLING9
-	{SPR_IVSP, 18, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING11}, // S_NIGHTSDRONE_SPARKLING10
-	{SPR_IVSP, 20, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING12}, // S_NIGHTSDRONE_SPARKLING11
-	{SPR_IVSP, 22, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING13}, // S_NIGHTSDRONE_SPARKLING12
-	{SPR_IVSP, 24, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING14}, // S_NIGHTSDRONE_SPARKLING13
-	{SPR_IVSP, 26, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING15}, // S_NIGHTSDRONE_SPARKLING14
-	{SPR_IVSP, 28, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING16}, // S_NIGHTSDRONE_SPARKLING15
-	{SPR_IVSP, 30, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING1}, // S_NIGHTSDRONE_SPARKLING16
+	STATE(SPR_IVSP, 0, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING2),   // S_NIGHTSDRONE_SPARKLING1
+	STATE(SPR_IVSP, 2, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING3),   // S_NIGHTSDRONE_SPARKLING2
+	STATE(SPR_IVSP, 4, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING4),   // S_NIGHTSDRONE_SPARKLING3
+	STATE(SPR_IVSP, 6, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING5),   // S_NIGHTSDRONE_SPARKLING4
+	STATE(SPR_IVSP, 8, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING6),  // S_NIGHTSDRONE_SPARKLING5
+	STATE(SPR_IVSP, 10, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING7), // S_NIGHTSDRONE_SPARKLING6
+	STATE(SPR_IVSP, 12, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING8), // S_NIGHTSDRONE_SPARKLING7
+	STATE(SPR_IVSP, 14, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING9), // S_NIGHTSDRONE_SPARKLING8
+	STATE(SPR_IVSP, 16, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING10), // S_NIGHTSDRONE_SPARKLING9
+	STATE(SPR_IVSP, 18, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING11), // S_NIGHTSDRONE_SPARKLING10
+	STATE(SPR_IVSP, 20, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING12), // S_NIGHTSDRONE_SPARKLING11
+	STATE(SPR_IVSP, 22, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING13), // S_NIGHTSDRONE_SPARKLING12
+	STATE(SPR_IVSP, 24, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING14), // S_NIGHTSDRONE_SPARKLING13
+	STATE(SPR_IVSP, 26, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING15), // S_NIGHTSDRONE_SPARKLING14
+	STATE(SPR_IVSP, 28, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING16), // S_NIGHTSDRONE_SPARKLING15
+	STATE(SPR_IVSP, 30, 1, {A_GhostMe}, 0, 0, S_NIGHTSDRONE_SPARKLING1), // S_NIGHTSDRONE_SPARKLING16
 
 	// NiGHTS GOAL banner (inside the sparkles!)
-	{SPR_GOAL, 0, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL2}, // S_NIGHTSDRONE_GOAL1
-	{SPR_GOAL, 1, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL3}, // S_NIGHTSDRONE_GOAL2
-	{SPR_GOAL, 2, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL4}, // S_NIGHTSDRONE_GOAL3
-	{SPR_GOAL, 3, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL1}, // S_NIGHTSDRONE_GOAL4
+	STATE(SPR_GOAL, 0, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL2), // S_NIGHTSDRONE_GOAL1
+	STATE(SPR_GOAL, 1, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL3), // S_NIGHTSDRONE_GOAL2
+	STATE(SPR_GOAL, 2, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL4), // S_NIGHTSDRONE_GOAL3
+	STATE(SPR_GOAL, 3, 4, {NULL}, 0, 0, S_NIGHTSDRONE_GOAL1), // S_NIGHTSDRONE_GOAL4
 
 	// Nights Sparkle
-	{SPR_NSPK, FF_FULLBRIGHT, 140, {NULL}, 0, 0, S_NIGHTSPARKLE2},   // S_NIGHTSPARKLE1
-	{SPR_NSPK, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_NIGHTSPARKLE3},   // S_NIGHTSPARKLE2
-	{SPR_NSPK, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_NIGHTSPARKLE4},   // S_NIGHTSPARKLE3
-	{SPR_NSPK, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_NULL},            // S_NIGHTSPARKLE4
+	STATE(SPR_NSPK, FF_FULLBRIGHT, 140, {NULL}, 0, 0, S_NIGHTSPARKLE2),   // S_NIGHTSPARKLE1
+	STATE(SPR_NSPK, FF_FULLBRIGHT|1, 7, {NULL}, 0, 0, S_NIGHTSPARKLE3),   // S_NIGHTSPARKLE2
+	STATE(SPR_NSPK, FF_FULLBRIGHT|2, 7, {NULL}, 0, 0, S_NIGHTSPARKLE4),   // S_NIGHTSPARKLE3
+	STATE(SPR_NSPK, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_NULL),            // S_NIGHTSPARKLE4
 
 	// Red Sparkle
-	{SPR_NSPK, FF_FULLBRIGHT|4, 140, {NULL}, 0, 0, S_NIGHTSPARKLESUPER2}, // S_NIGHTSPARKLESUPER1
-	{SPR_NSPK, FF_FULLBRIGHT|5, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER3},   // S_NIGHTSPARKLESUPER2
-	{SPR_NSPK, FF_FULLBRIGHT|6, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER4},   // S_NIGHTSPARKLESUPER3
-	{SPR_NSPK, FF_FULLBRIGHT|7, 7, {NULL}, 0, 0, S_NULL},                 // S_NIGHTSPARKLESUPER4
+	STATE(SPR_NSPK, FF_FULLBRIGHT|4, 140, {NULL}, 0, 0, S_NIGHTSPARKLESUPER2), // S_NIGHTSPARKLESUPER1
+	STATE(SPR_NSPK, FF_FULLBRIGHT|5, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER3),   // S_NIGHTSPARKLESUPER2
+	STATE(SPR_NSPK, FF_FULLBRIGHT|6, 7, {NULL}, 0, 0, S_NIGHTSPARKLESUPER4),   // S_NIGHTSPARKLESUPER3
+	STATE(SPR_NSPK, FF_FULLBRIGHT|7, 7, {NULL}, 0, 0, S_NULL),                 // S_NIGHTSPARKLESUPER4
 
 	// Paraloop helper -- THIS IS WHAT DETERMINES THE TIMER NOW
-	{SPR_NULL, 0, 160, {NULL}, 0, 0, S_NULL}, // S_NIGHTSLOOPHELPER
+	STATE(SPR_NULL, 0, 160, {NULL}, 0, 0, S_NULL), // S_NIGHTSLOOPHELPER
 
 	// NiGHTS bumper
-	{SPR_NBMP, 0, -1, {NULL}, 0, 0, S_NULL},  // S_NIGHTSBUMPER1
-	{SPR_NBMP, 1, -1, {NULL}, 0, 0, S_NULL},  // S_NIGHTSBUMPER2
-	{SPR_NBMP, 2, -1, {NULL}, 0, 0, S_NULL},  // S_NIGHTSBUMPER3
-	{SPR_NBMP, 3, -1, {NULL}, 0, 0, S_NULL},  // S_NIGHTSBUMPER4
-	{SPR_NBMP, 4, -1, {NULL}, 0, 0, S_NULL},  // S_NIGHTSBUMPER5
-	{SPR_NBMP, 5, -1, {NULL}, 0, 0, S_NULL},  // S_NIGHTSBUMPER6
-	{SPR_NBMP, 6, -1, {NULL}, 0, 0, S_NULL},  // S_NIGHTSBUMPER7
-	{SPR_NBMP, 7, -1, {NULL}, 0, 0, S_NULL},  // S_NIGHTSBUMPER8
-	{SPR_NBMP, 8, -1, {NULL}, 0, 0, S_NULL},  // S_NIGHTSBUMPER9
-	{SPR_NBMP, 9, -1, {NULL}, 0, 0, S_NULL},  // S_NIGHTSBUMPER10
-	{SPR_NBMP, 10, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSBUMPER11
-	{SPR_NBMP, 11, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSBUMPER12
-
-	{SPR_HOOP, 0, -1, {NULL}, 0, 0, S_NULL}, // S_HOOP
-	{SPR_HOOP, 1, -1, {NULL}, 0, 0, S_NULL}, // S_HOOP_XMASA
-	{SPR_HOOP, 2, -1, {NULL}, 0, 0, S_NULL}, // S_HOOP_XMASB
-
-	{SPR_NSCR, FF_FULLBRIGHT,    -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE10
-	{SPR_NSCR, FF_FULLBRIGHT|1,  -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE20
-	{SPR_NSCR, FF_FULLBRIGHT|2,  -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE30
-	{SPR_NSCR, FF_FULLBRIGHT|3,  -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE40
-	{SPR_NSCR, FF_FULLBRIGHT|4,  -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE50
-	{SPR_NSCR, FF_FULLBRIGHT|5,  -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE60
-	{SPR_NSCR, FF_FULLBRIGHT|6,  -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE70
-	{SPR_NSCR, FF_FULLBRIGHT|7,  -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE80
-	{SPR_NSCR, FF_FULLBRIGHT|8,  -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE90
-	{SPR_NSCR, FF_FULLBRIGHT|9,  -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE100
-	{SPR_NSCR, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE10_2
-	{SPR_NSCR, FF_FULLBRIGHT|11, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE20_2
-	{SPR_NSCR, FF_FULLBRIGHT|12, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE30_2
-	{SPR_NSCR, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE40_2
-	{SPR_NSCR, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE50_2
-	{SPR_NSCR, FF_FULLBRIGHT|15, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE60_2
-	{SPR_NSCR, FF_FULLBRIGHT|16, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE70_2
-	{SPR_NSCR, FF_FULLBRIGHT|17, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE80_2
-	{SPR_NSCR, FF_FULLBRIGHT|18, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE90_2
-	{SPR_NSCR, FF_FULLBRIGHT|19, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSCORE100_2
+	STATE(SPR_NBMP, 0, -1, {NULL}, 0, 0, S_NULL),  // S_NIGHTSBUMPER1
+	STATE(SPR_NBMP, 1, -1, {NULL}, 0, 0, S_NULL),  // S_NIGHTSBUMPER2
+	STATE(SPR_NBMP, 2, -1, {NULL}, 0, 0, S_NULL),  // S_NIGHTSBUMPER3
+	STATE(SPR_NBMP, 3, -1, {NULL}, 0, 0, S_NULL),  // S_NIGHTSBUMPER4
+	STATE(SPR_NBMP, 4, -1, {NULL}, 0, 0, S_NULL),  // S_NIGHTSBUMPER5
+	STATE(SPR_NBMP, 5, -1, {NULL}, 0, 0, S_NULL),  // S_NIGHTSBUMPER6
+	STATE(SPR_NBMP, 6, -1, {NULL}, 0, 0, S_NULL),  // S_NIGHTSBUMPER7
+	STATE(SPR_NBMP, 7, -1, {NULL}, 0, 0, S_NULL),  // S_NIGHTSBUMPER8
+	STATE(SPR_NBMP, 8, -1, {NULL}, 0, 0, S_NULL),  // S_NIGHTSBUMPER9
+	STATE(SPR_NBMP, 9, -1, {NULL}, 0, 0, S_NULL),  // S_NIGHTSBUMPER10
+	STATE(SPR_NBMP, 10, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSBUMPER11
+	STATE(SPR_NBMP, 11, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSBUMPER12
+
+	STATE(SPR_HOOP, 0, -1, {NULL}, 0, 0, S_NULL), // S_HOOP
+	STATE(SPR_HOOP, 1, -1, {NULL}, 0, 0, S_NULL), // S_HOOP_XMASA
+	STATE(SPR_HOOP, 2, -1, {NULL}, 0, 0, S_NULL), // S_HOOP_XMASB
+
+	STATE(SPR_NSCR, FF_FULLBRIGHT,    -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE10
+	STATE(SPR_NSCR, FF_FULLBRIGHT|1,  -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE20
+	STATE(SPR_NSCR, FF_FULLBRIGHT|2,  -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE30
+	STATE(SPR_NSCR, FF_FULLBRIGHT|3,  -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE40
+	STATE(SPR_NSCR, FF_FULLBRIGHT|4,  -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE50
+	STATE(SPR_NSCR, FF_FULLBRIGHT|5,  -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE60
+	STATE(SPR_NSCR, FF_FULLBRIGHT|6,  -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE70
+	STATE(SPR_NSCR, FF_FULLBRIGHT|7,  -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE80
+	STATE(SPR_NSCR, FF_FULLBRIGHT|8,  -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE90
+	STATE(SPR_NSCR, FF_FULLBRIGHT|9,  -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE100
+	STATE(SPR_NSCR, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE10_2
+	STATE(SPR_NSCR, FF_FULLBRIGHT|11, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE20_2
+	STATE(SPR_NSCR, FF_FULLBRIGHT|12, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE30_2
+	STATE(SPR_NSCR, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE40_2
+	STATE(SPR_NSCR, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE50_2
+	STATE(SPR_NSCR, FF_FULLBRIGHT|15, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE60_2
+	STATE(SPR_NSCR, FF_FULLBRIGHT|16, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE70_2
+	STATE(SPR_NSCR, FF_FULLBRIGHT|17, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE80_2
+	STATE(SPR_NSCR, FF_FULLBRIGHT|18, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE90_2
+	STATE(SPR_NSCR, FF_FULLBRIGHT|19, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSCORE100_2
 
 	// NiGHTS Paraloop Powerups
-	{SPR_NPRU, 0, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSSUPERLOOP
-	{SPR_NPRU, 1, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSDRILLREFILL
-	{SPR_NPRU, 2, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSHELPER
-	{SPR_NPRU, 3, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSEXTRATIME
-	{SPR_NPRU, 4, -1, {NULL}, 0, 0, S_NULL}, // S_NIGHTSLINKFREEZE
+	STATE(SPR_NPRU, 0, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSSUPERLOOP
+	STATE(SPR_NPRU, 1, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSDRILLREFILL
+	STATE(SPR_NPRU, 2, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSHELPER
+	STATE(SPR_NPRU, 3, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSEXTRATIME
+	STATE(SPR_NPRU, 4, -1, {NULL}, 0, 0, S_NULL), // S_NIGHTSLINKFREEZE
 
-	{SPR_CAPS, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGCAPSULE
+	STATE(SPR_CAPS, 0, -1, {NULL}, 0, 0, S_NULL), // S_EGGCAPSULE
 
 	// Orbiting Chaos Emeralds/Ideya for NiGHTS
-	{SPR_CEMG, FF_FULLBRIGHT,   1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM1}, // S_ORBITEM1
-	{SPR_CEMG, FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM2}, // S_ORBITEM2
-	{SPR_CEMG, FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM3}, // S_ORBITEM3
-	{SPR_CEMG, FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM4}, // S_ORBITEM4
-	{SPR_CEMG, FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM5}, // S_ORBITEM5
-	{SPR_CEMG, FF_FULLBRIGHT|5, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM6}, // S_ORBITEM6
-	{SPR_CEMG, FF_FULLBRIGHT|6, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM7}, // S_ORBITEM7
-	{SPR_CEMG, FF_FULLBRIGHT|7, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM8}, // S_ORBITEM8
-	{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT,   1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA1}, // S_ORBIDYA1
-	{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA2}, // S_ORBIDYA2
-	{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA3}, // S_ORBIDYA3
-	{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA4}, // S_ORBIDYA4
-	{SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA5}, // S_ORBIDYA5
+	STATE(SPR_CEMG, FF_FULLBRIGHT,   1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM1), // S_ORBITEM1
+	STATE(SPR_CEMG, FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM2), // S_ORBITEM2
+	STATE(SPR_CEMG, FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM3), // S_ORBITEM3
+	STATE(SPR_CEMG, FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM4), // S_ORBITEM4
+	STATE(SPR_CEMG, FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM5), // S_ORBITEM5
+	STATE(SPR_CEMG, FF_FULLBRIGHT|5, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM6), // S_ORBITEM6
+	STATE(SPR_CEMG, FF_FULLBRIGHT|6, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM7), // S_ORBITEM7
+	STATE(SPR_CEMG, FF_FULLBRIGHT|7, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBITEM8), // S_ORBITEM8
+	STATE(SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT,   1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA1), // S_ORBIDYA1
+	STATE(SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|1, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA2), // S_ORBIDYA2
+	STATE(SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|2, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA3), // S_ORBIDYA3
+	STATE(SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|3, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA4), // S_ORBIDYA4
+	STATE(SPR_IDYA, FF_TRANS20|FF_FULLBRIGHT|4, 1, {A_OrbitNights}, ANG2*2, 0, S_ORBIDYA5), // S_ORBIDYA5
 
 	// Flicky helper for NiGHTS
-	{SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER2}, // S_NIGHTOPIANHELPER1
-	{SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER3}, // S_NIGHTOPIANHELPER2
-	{SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER4}, // S_NIGHTOPIANHELPER3
-	{SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER5}, // S_NIGHTOPIANHELPER4
-	{SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER6}, // S_NIGHTOPIANHELPER5
-	{SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER7}, // S_NIGHTOPIANHELPER6
-	{SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER8}, // S_NIGHTOPIANHELPER7
-	{SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER9}, // S_NIGHTOPIANHELPER8
-	{SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER1}, // S_NIGHTOPIANHELPER9
+	STATE(SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER2), // S_NIGHTOPIANHELPER1
+	STATE(SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER3), // S_NIGHTOPIANHELPER2
+	STATE(SPR_FL01, 1, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER4), // S_NIGHTOPIANHELPER3
+	STATE(SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER5), // S_NIGHTOPIANHELPER4
+	STATE(SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER6), // S_NIGHTOPIANHELPER5
+	STATE(SPR_FL01, 2, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER7), // S_NIGHTOPIANHELPER6
+	STATE(SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER8), // S_NIGHTOPIANHELPER7
+	STATE(SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER9), // S_NIGHTOPIANHELPER8
+	STATE(SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER1), // S_NIGHTOPIANHELPER9
 
 	// Nightopian
-	{SPR_NTPN, 0, 2, {A_Look}, 1, 1, S_PIAN_LOOK2}, // S_PIAN_LOOK1
-	{SPR_NTPN, 1, 2, {A_Look}, 1, 1, S_PIAN_LOOK3}, // S_PIAN_LOOK2
-	{SPR_NTPN, 2, 2, {A_Look}, 1, 1, S_PIAN_LOOK1}, // S_PIAN_LOOK3
-	{SPR_NTPN, 0, 2, {A_JetgThink}, 0, 0, S_PIAN_FLY2}, // S_PIAN_FLY1
-	{SPR_NTPN, 1, 2, {NULL}, 0, 0, S_PIAN_FLY3}, // S_PIAN_FLY2
-	{SPR_NTPN, 2, 2, {NULL}, 0, 0, S_PIAN_FLY1}, // S_PIAN_FLY3
-	{SPR_NTPN, 3|FF_ANIMATE, 24, {NULL}, 2, 2, S_PIAN_FLY1}, // S_PIAN_SING
+	STATE(SPR_NTPN, 0, 2, {A_Look}, 1, 1, S_PIAN_LOOK2), // S_PIAN_LOOK1
+	STATE(SPR_NTPN, 1, 2, {A_Look}, 1, 1, S_PIAN_LOOK3), // S_PIAN_LOOK2
+	STATE(SPR_NTPN, 2, 2, {A_Look}, 1, 1, S_PIAN_LOOK1), // S_PIAN_LOOK3
+	STATE(SPR_NTPN, 0, 2, {A_JetgThink}, 0, 0, S_PIAN_FLY2), // S_PIAN_FLY1
+	STATE(SPR_NTPN, 1, 2, {NULL}, 0, 0, S_PIAN_FLY3), // S_PIAN_FLY2
+	STATE(SPR_NTPN, 2, 2, {NULL}, 0, 0, S_PIAN_FLY1), // S_PIAN_FLY3
+	STATE(SPR_NTPN, 3|FF_ANIMATE, 24, {NULL}, 2, 2, S_PIAN_FLY1), // S_PIAN_SING
 
 	// Shleep
-	{SPR_SHLP, 0, 15, {NULL}, 0, 0, S_SHLEEP2}, // S_SHLEEP1
-	{SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP3}, // S_SHLEEP2
-	{SPR_SHLP, 2, 15, {NULL}, 0, 0, S_SHLEEP4}, // S_SHLEEP3
-	{SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP1}, // S_SHLEEP4
-	{SPR_SHLP, 3, 1, {A_Scream},  0, 0, S_SHLEEPBOUNCE2}, // S_SHLEEPBOUNCE1
-	{SPR_SHLP, 3, 1, {A_ZThrust}, 9, 0, S_SHLEEPBOUNCE3}, // S_SHLEEPBOUNCE2
-	{SPR_SHLP, 3, 400, {A_SetObjectFlags}, MF_SLIDEME|MF_ENEMY|MF_BOUNCE|MF_NOCLIP|MF_NOCLIPHEIGHT, 0, S_NULL}, // S_SHLEEPBOUNCE3
+	STATE(SPR_SHLP, 0, 15, {NULL}, 0, 0, S_SHLEEP2), // S_SHLEEP1
+	STATE(SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP3), // S_SHLEEP2
+	STATE(SPR_SHLP, 2, 15, {NULL}, 0, 0, S_SHLEEP4), // S_SHLEEP3
+	STATE(SPR_SHLP, 1, 15, {NULL}, 0, 0, S_SHLEEP1), // S_SHLEEP4
+	STATE(SPR_SHLP, 3, 1, {A_Scream},  0, 0, S_SHLEEPBOUNCE2), // S_SHLEEPBOUNCE1
+	STATE(SPR_SHLP, 3, 1, {A_ZThrust}, 9, 0, S_SHLEEPBOUNCE3), // S_SHLEEPBOUNCE2
+	STATE(SPR_SHLP, 3, 400, {A_SetObjectFlags}, MF_SLIDEME|MF_ENEMY|MF_BOUNCE|MF_NOCLIP|MF_NOCLIPHEIGHT, 0, S_NULL), // S_SHLEEPBOUNCE3
 
 	// Secret badniks and hazards, shhhh
-	{SPR_PENG, 0, 2, {A_Look},  0, 0, S_PENGUINATOR_LOOK},    // S_PENGUINATOR_LOOK
-	{SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE2}, // S_PENGUINATOR_WADDLE1
-	{SPR_PENG, 1, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE3}, // S_PENGUINATOR_WADDLE2
-	{SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE4}, // S_PENGUINATOR_WADDLE3
-	{SPR_PENG, 2, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE1}, // S_PENGUINATOR_WADDLE4
-	{SPR_PENG, 0,  0, {A_FaceTarget},      0,  0, S_PENGUINATOR_SLIDE2}, // S_PENGUINATOR_SLIDE1
-	{SPR_PENG, 3,  5, {A_BunnyHop},        4, 10, S_PENGUINATOR_SLIDE3}, // S_PENGUINATOR_SLIDE2
-	{SPR_PENG, 4, 90, {A_PlayAttackSound}, 0,  0, S_PENGUINATOR_SLIDE4}, // S_PENGUINATOR_SLIDE3
-	{SPR_PENG, 3,  5, {A_Thrust},          0,  1, S_PENGUINATOR_SLIDE5}, // S_PENGUINATOR_SLIDE4
-	{SPR_PENG, 0,  5, {A_FaceTarget},      0,  0, S_PENGUINATOR_LOOK},   // S_PENGUINATOR_SLIDE5
-
-	{SPR_POPH, 0,  2, {A_Look},  (2048<<16)|1,           0, S_POPHAT_LOOK},   // S_POPHAT_LOOK
-	{SPR_POPH, 1,  0, {A_MultiShotDist}, (MT_SPINDUST<<16)|4, 24, S_POPHAT_SHOOT2}, // S_POPHAT_SHOOT1
-	{SPR_POPH, 1,  2, {A_LobShot}, MT_POPSHOT, (70<<16)|60, S_POPHAT_SHOOT3}, // S_POPHAT_SHOOT2
-	{SPR_POPH, 2,  1, {NULL},               0,           0, S_POPHAT_SHOOT4}, // S_POPHAT_SHOOT3
-	{SPR_POPH, 0, 57, {NULL},               0,           0, S_POPHAT_LOOK},   // S_POPHAT_SHOOT4
-	{SPR_POPH, 3,  3, {A_SpawnObjectRelative}, 0, MT_POPSHOT_TRAIL, S_POPSHOT},   // S_POPSHOT
-	{SPR_NULL, 0,  2, {NULL},                  0, 0,                S_SPINDUST1}, // S_POPSHOT_TRAIL
-
-	{SPR_HIVE, 0,  5, {A_Look}, 1, 1, S_HIVEELEMENTAL_LOOK}, // S_HIVEELEMENTAL_LOOK
-	{SPR_HIVE, 0, 14, {A_PlaySound}, sfx_s3k76, 1, S_HIVEELEMENTAL_PREPARE2}, // S_HIVEELEMENTAL_PREPARE1
-	{SPR_HIVE, 0,  6, {A_PlaySound}, sfx_s3k8c, 1, S_HIVEELEMENTAL_SHOOT1}, // S_HIVEELEMENTAL_PREPARE2
-	{SPR_HIVE, 1,  4, {A_WhoCaresIfYourSonIsABee}, (MT_BUMBLEBORE<<16)|4, (1<<16)|32, S_HIVEELEMENTAL_SHOOT2}, // S_HIVEELEMENTAL_SHOOT1
-	{SPR_HIVE, 2,  2, {NULL}, 0, 0, S_HIVEELEMENTAL_DORMANT}, // S_HIVEELEMENTAL_SHOOT2
-	{SPR_HIVE, 0,  5, {A_ParentTriesToSleep}, S_HIVEELEMENTAL_PREPARE1, 0, S_HIVEELEMENTAL_DORMANT}, // S_HIVEELEMENTAL_DORMANT
-	{SPR_HIVE, 3, 35, {A_Pain}, 0, 0, S_HIVEELEMENTAL_LOOK}, // S_HIVEELEMENTAL_PAIN
-	{SPR_HIVE, 3,  2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE2}, // S_HIVEELEMENTAL_DIE1
-	{SPR_NULL, 0,  2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE3}, // S_HIVEELEMENTAL_DIE2
-	{SPR_NULL, 0,  0, {A_Repeat}, 7, S_HIVEELEMENTAL_DIE1, S_XPLD_FLICKY}, // S_HIVEELEMENTAL_DIE3
-
-	{SPR_BUMB, 1, 10, {NULL}, 0, 0, S_BUMBLEBORE_LOOK1}, // S_BUMBLEBORE_SPAWN
-	{SPR_BUMB, 0,  4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK2}, // S_BUMBLEBORE_LOOK1
-	{SPR_BUMB, 1,  4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK1}, // S_BUMBLEBORE_LOOK2
-	{SPR_BUMB, 0,  4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY2}, // S_BUMBLEBORE_FLY1
-	{SPR_BUMB, 1,  4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY1}, // S_BUMBLEBORE_FLY2
-	{SPR_BUMB, 2|FF_FULLBRIGHT,  12, {A_ZThrust},  4, (1<<16)|1, S_BUMBLEBORE_FALL1},  // S_BUMBLEBORE_RAISE
-	{SPR_BUMB, 2|FF_FULLBRIGHT,   0, {A_ZThrust}, -8, (1<<16)|1, S_BUMBLEBORE_FALL2},  // S_BUMBLEBORE_FALL1
-	{SPR_BUMB, 2|FF_FULLBRIGHT, 300, {NULL},       0,         0, S_BUMBLEBORE_DIE},    // S_BUMBLEBORE_FALL2
-	{SPR_BUMB, 4, 3, {A_MultiShotDist}, (MT_DUST<<16)|6, -40, S_BUMBLEBORE_STUCK2},    // S_BUMBLEBORE_STUCK1
-	{SPR_BUMB, 5, 120, {NULL}, 0, 0, S_BUMBLEBORE_DIE}, // S_BUMBLEBORE_STUCK2
-	{SPR_BUMB, 5, 0, {A_CryingToMomma}, 0, 0, S_XPLD1}, // S_BUMBLEBORE_DIE
-
-	{SPR_BBUZ,          0, -1, {NULL}, 0, 0, S_NULL}, // S_BUGGLEIDLE
-	{SPR_BBUZ, FF_ANIMATE, -1, {NULL}, 1, 2, S_NULL}, // S_BUGGLEFLY
-
-	{SPR_FMCE, 0, 20, {NULL}, 0, 0, S_SMASHSPIKE_EASE1}, // S_SMASHSPIKE_FLOAT
-	{SPR_FMCE, 0,  4, {A_ZThrust},  4, (1<<16)|1, S_SMASHSPIKE_EASE2}, // S_SMASHSPIKE_EASE1
-	{SPR_FMCE, 0,  4, {A_ZThrust},  0, (1<<16)|1, S_SMASHSPIKE_FALL},  // S_SMASHSPIKE_EASE2
-	{SPR_FMCE, 0,  2, {A_ZThrust}, -6,         1, S_SMASHSPIKE_FALL},  // S_SMASHSPIKE_FALL
-	{SPR_FMCE, 1,  2, {A_MultiShotDist}, (MT_DUST<<16)|10, -48, S_SMASHSPIKE_STOMP2}, // S_SMASHSPIKE_STOMP1
-	{SPR_FMCE, 2, 14, {NULL}, 0, 0, S_SMASHSPIKE_RISE1}, // S_SMASHSPIKE_STOMP2
-	{SPR_FMCE, 1,  2, {NULL}, 0, 0, S_SMASHSPIKE_RISE2}, // S_SMASHSPIKE_RISE1
-	{SPR_FMCE, 0,  2, {A_ZThrust}, 6, (1<<16)|1, S_SMASHSPIKE_RISE2}, // S_SMASHSPIKE_RISE2
-
-	{SPR_CACO, 0,  5, {A_Look}, (1100<<16)|1, 0, S_CACO_LOOK}, // S_CACO_LOOK
-	{SPR_CACO, 1,  0, {A_MultiShotDist}, (MT_DUST<<16)|7, -48, S_CACO_WAKE2}, // S_CACO_WAKE1
-	{SPR_CACO, 1, 10, {A_ZThrust}, 4, (1<<16)|1, S_CACO_WAKE3}, // S_CACO_WAKE2
-	{SPR_CACO, 2,  8, {A_ZThrust}, 2, (1<<16)|1, S_CACO_WAKE4}, // S_CACO_WAKE3
-	{SPR_CACO, 2,  4, {A_ZThrust}, 0, (1<<16)|1, S_CACO_ROAR},  // S_CACO_WAKE4
-	{SPR_CACO, 2, 10, {A_PlayActiveSound}, 0, 0, S_CACO_CHASE}, // S_CACO_ROAR
-	{SPR_CACO, 2,  5, {A_JetChase}, 0, 0, S_CACO_CHASE_REPEAT}, // S_CACO_CHASE
-	{SPR_CACO, 2,  0, {A_Repeat}, 5, S_CACO_CHASE, S_CACO_RANDOM}, // S_CACO_CHASE_REPEAT
-	{SPR_CACO, 2,  0, {A_RandomState}, S_CACO_PREPARE_SOUND, S_CACO_CHASE, S_CACO_RANDOM}, // S_CACO_RANDOM
-	{SPR_CACO, 2,  8, {A_PlaySound}, sfx_s3k95, 1, S_CACO_PREPARE1},  // S_CACO_PREPARE_SOUND
-	{SPR_CACO, 3,               8, {NULL}, 0, 0, S_CACO_PREPARE2},    // S_CACO_PREPARE1
-	{SPR_CACO, 4|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_PREPARE3},    // S_CACO_PREPARE2
-	{SPR_CACO, 5|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_SHOOT_SOUND}, // S_CACO_PREPARE3
-	{SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_PlaySound}, sfx_s3k4e, 1, S_CACO_SHOOT1}, // S_CACO_SHOOT_SOUND
-	{SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_CACOFIRE_EXPLODE1, S_CACO_SHOOT2}, // S_CACO_SHOOT1
-	{SPR_CACO, 4|FF_FULLBRIGHT, 6, {A_FireShot}, MT_CACOFIRE, -24, S_CACO_CLOSE}, // S_CACO_SHOOT2
-	{SPR_CACO, 3,              15, {NULL}, 0, 0, S_CACO_CHASE}, // S_CACO_CLOSE
-	{SPR_CACO, 10, 0, {A_SetObjectFlags}, MF_NOBLOCKMAP, 0, S_CACO_DIE_GIB1}, // S_CACO_DIE_FLAGS
-	{SPR_CACO, 10, 0, {A_NapalmScatter}, (7<<16)|MT_CACOSHARD, (30<<16)|20, S_CACO_DIE_GIB2}, // S_CACO_DIE_GIB1
-	{SPR_CACO, 10, 0, {A_NapalmScatter}, (10<<16)|MT_CACOSHARD, (24<<16)|32, S_CACO_DIE_SCREAM}, // S_CACO_DIE_GIB2
-	{SPR_CACO, 10, 0, {A_Scream}, 0, 0, S_CACO_DIE_SHATTER}, // S_CACO_DIE_SCREAM
-	{SPR_CACO, 10, 0, {A_PlaySound}, sfx_pumpkn, 1, S_CACO_DIE_FALL}, // S_CACO_DIE_SHATTER
-	{SPR_CACO, 10, 250, {A_FlickySpawn}, (1<<16), 0, S_NULL}, // S_CACO_DIE_FALL
-
-	{SPR_CACO, 6, 0, {A_RandomState}, S_CACOSHARD1_1, S_CACOSHARD2_1, S_NULL}, // S_CACOSHARD_RANDOMIZE
-	{SPR_CACO, 6, 3, {NULL}, 0, 0, S_CACOSHARD1_2}, // S_CACOSHARD1_1
-	{SPR_CACO, 7, 3, {NULL}, 0, 0, S_CACOSHARD1_1}, // S_CACOSHARD1_2
-	{SPR_CACO, 8, 3, {NULL}, 0, 0, S_CACOSHARD2_2}, // S_CACOSHARD2_1
-	{SPR_CACO, 9, 3, {NULL}, 0, 0, S_CACOSHARD2_1}, // S_CACOSHARD2_2
-	{SPR_BAL2,   FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE2}, // S_CACOFIRE1
-	{SPR_BAL2, 1|FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE3}, // S_CACOFIRE2
-	{SPR_BAL2,   FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CACOFIRE1}, // S_CACOFIRE3
-	{SPR_BAL2, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE2}, // S_CACOFIRE_EXPLODE1
-	{SPR_BAL2, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE3}, // S_CACOFIRE_EXPLODE2
-	{SPR_BAL2, 4|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE4}, // S_CACOFIRE_EXPLODE3
-	{SPR_BAL2, 5|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL},      // S_CACOFIRE_EXPLODE4
-
-	{SPR_SBOB, 1, 10, {A_ZThrust}, -2, (1<<16)|1, S_SPINBOBERT_MOVE_UP},       // S_SPINBOBERT_MOVE_FLIPUP
-	{SPR_SBOB, 0, 45, {A_ZThrust},  4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPDOWN}, // S_SPINBOBERT_MOVE_UP
-	{SPR_SBOB, 1, 10, {A_ZThrust},  2, (1<<16)|1, S_SPINBOBERT_MOVE_DOWN},     // S_SPINBOBERT_MOVE_FLIPDOWN
-	{SPR_SBOB, 2, 45, {A_ZThrust}, -4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPUP},   // S_SPINBOBERT_MOVE_DOWN
-	{SPR_SBSK, FF_FULLBRIGHT, 1, {A_RotateSpikeBall},       0,                        0, S_SPINBOBERT_FIRE_GHOST}, // S_SPINBOBERT_FIRE_MOVE
-	{SPR_SBSK, FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_SPINBOBERT_FIRE_TRAIL1, S_SPINBOBERT_FIRE_MOVE},  // S_SPINBOBERT_FIRE_GHOST
-	{SPR_SBFL, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL2}, // S_SPINBOBERT_FIRE_TRAIL1
-	{SPR_SBFL, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL3}, // S_SPINBOBERT_FIRE_TRAIL2
-	{SPR_SBFL,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL},                   // S_SPINBOBERT_FIRE_TRAIL3
-
-	{SPR_HBAT, 0,  5, {A_Look}, (900<<16)|1, 0, S_HANGSTER_LOOK}, // S_HANGSTER_LOOK
-	{SPR_HBAT, 1,  0, {A_MultiShotDist}, (MT_DUST<<16)|10, -34, S_HANGSTER_SWOOP2}, // S_HANGSTER_SWOOP1
-	{SPR_HBAT, 1,  2, {A_ZThrust}, -8, (1<<16)|1, S_HANGSTER_SWOOP2}, // S_HANGSTER_SWOOP2
-	{SPR_HBAT, 1,  6, {A_ZThrust}, -5, (1<<16), S_HANGSTER_ARC2}, // S_HANGSTER_ARC1
-	{SPR_HBAT, 1,  5, {A_ZThrust}, -2, (1<<16), S_HANGSTER_ARC3}, // S_HANGSTER_ARC2
-	{SPR_HBAT, 1,  1, {A_ZThrust},  0, (1<<16), S_HANGSTER_FLY1}, // S_HANGSTER_ARC3
-	{SPR_HBAT, 1,  4, {A_Thrust}, 6, 1, S_HANGSTER_FLY2}, // S_HANGSTER_FLY1
-	{SPR_HBAT, 2,  1, {A_PlaySound}, sfx_s3k52, 1, S_HANGSTER_FLY3}, // S_HANGSTER_FLY2
-	{SPR_HBAT, 3,  4, {A_Thrust}, 6, 1, S_HANGSTER_FLY4}, // S_HANGSTER_FLY3
-	{SPR_HBAT, 2,  1, {A_Thrust}, 6, 1, S_HANGSTER_FLYREPEAT}, // S_HANGSTER_FLY4
-	{SPR_HBAT, 2,  0, {A_Repeat}, 12, S_HANGSTER_FLY1, S_HANGSTER_ARCUP1}, // S_HANGSTER_FLYREPEAT
-	{SPR_HBAT, 1,  5, {A_ZThrust},  2, (1<<16), S_HANGSTER_ARCUP2}, // S_HANGSTER_ARCUP1
-	{SPR_HBAT, 1,  6, {A_ZThrust},  5, (1<<16), S_HANGSTER_ARCUP3}, // S_HANGSTER_ARCUP2
-	{SPR_HBAT, 1,  1, {A_ZThrust},  0, (1<<16), S_HANGSTER_RETURN1}, // S_HANGSTER_ARCUP3
-	{SPR_HBAT, 1,  1, {A_ZThrust},  8, (1<<16), S_HANGSTER_RETURN2}, // S_HANGSTER_RETURN1
-	{SPR_HBAT, 3,  1, {NULL}, 0, 0, S_HANGSTER_RETURN1}, // S_HANGSTER_RETURN2
-	{SPR_HBAT, 0, 15, {NULL}, 0, 0, S_HANGSTER_LOOK}, // S_HANGSTER_RETURN3
-
-	{SPR_NULL, 0,  35, {NULL}, 0, 0, S_CRUMBLE2}, // S_CRUMBLE1
-	{SPR_NULL, 0, 105, {A_Scream}, 0, 0, S_NULL}, // S_CRUMBLE2
+	STATE(SPR_PENG, 0, 2, {A_Look},  0, 0, S_PENGUINATOR_LOOK),    // S_PENGUINATOR_LOOK
+	STATE(SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE2), // S_PENGUINATOR_WADDLE1
+	STATE(SPR_PENG, 1, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE3), // S_PENGUINATOR_WADDLE2
+	STATE(SPR_PENG, 0, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE4), // S_PENGUINATOR_WADDLE3
+	STATE(SPR_PENG, 2, 2, {A_Chase}, 0, 0, S_PENGUINATOR_WADDLE1), // S_PENGUINATOR_WADDLE4
+	STATE(SPR_PENG, 0,  0, {A_FaceTarget},      0,  0, S_PENGUINATOR_SLIDE2), // S_PENGUINATOR_SLIDE1
+	STATE(SPR_PENG, 3,  5, {A_BunnyHop},        4, 10, S_PENGUINATOR_SLIDE3), // S_PENGUINATOR_SLIDE2
+	STATE(SPR_PENG, 4, 90, {A_PlayAttackSound}, 0,  0, S_PENGUINATOR_SLIDE4), // S_PENGUINATOR_SLIDE3
+	STATE(SPR_PENG, 3,  5, {A_Thrust},          0,  1, S_PENGUINATOR_SLIDE5), // S_PENGUINATOR_SLIDE4
+	STATE(SPR_PENG, 0,  5, {A_FaceTarget},      0,  0, S_PENGUINATOR_LOOK),   // S_PENGUINATOR_SLIDE5
+
+	STATE(SPR_POPH, 0,  2, {A_Look},  (2048<<16)|1,           0, S_POPHAT_LOOK),   // S_POPHAT_LOOK
+	STATE(SPR_POPH, 1,  0, {A_MultiShotDist}, (MT_SPINDUST<<16)|4, 24, S_POPHAT_SHOOT2), // S_POPHAT_SHOOT1
+	STATE(SPR_POPH, 1,  2, {A_LobShot}, MT_POPSHOT, (70<<16)|60, S_POPHAT_SHOOT3), // S_POPHAT_SHOOT2
+	STATE(SPR_POPH, 2,  1, {NULL},               0,           0, S_POPHAT_SHOOT4), // S_POPHAT_SHOOT3
+	STATE(SPR_POPH, 0, 57, {NULL},               0,           0, S_POPHAT_LOOK),   // S_POPHAT_SHOOT4
+	STATE(SPR_POPH, 3,  3, {A_SpawnObjectRelative}, 0, MT_POPSHOT_TRAIL, S_POPSHOT),   // S_POPSHOT
+	STATE(SPR_NULL, 0,  2, {NULL},                  0, 0,                S_SPINDUST1), // S_POPSHOT_TRAIL
+
+	STATE(SPR_HIVE, 0,  5, {A_Look}, 1, 1, S_HIVEELEMENTAL_LOOK), // S_HIVEELEMENTAL_LOOK
+	STATE(SPR_HIVE, 0, 14, {A_PlaySound}, sfx_s3k76, 1, S_HIVEELEMENTAL_PREPARE2), // S_HIVEELEMENTAL_PREPARE1
+	STATE(SPR_HIVE, 0,  6, {A_PlaySound}, sfx_s3k8c, 1, S_HIVEELEMENTAL_SHOOT1), // S_HIVEELEMENTAL_PREPARE2
+	STATE(SPR_HIVE, 1,  4, {A_WhoCaresIfYourSonIsABee}, (MT_BUMBLEBORE<<16)|4, (1<<16)|32, S_HIVEELEMENTAL_SHOOT2), // S_HIVEELEMENTAL_SHOOT1
+	STATE(SPR_HIVE, 2,  2, {NULL}, 0, 0, S_HIVEELEMENTAL_DORMANT), // S_HIVEELEMENTAL_SHOOT2
+	STATE(SPR_HIVE, 0,  5, {A_ParentTriesToSleep}, S_HIVEELEMENTAL_PREPARE1, 0, S_HIVEELEMENTAL_DORMANT), // S_HIVEELEMENTAL_DORMANT
+	STATE(SPR_HIVE, 3, 35, {A_Pain}, 0, 0, S_HIVEELEMENTAL_LOOK), // S_HIVEELEMENTAL_PAIN
+	STATE(SPR_HIVE, 3,  2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE2), // S_HIVEELEMENTAL_DIE1
+	STATE(SPR_NULL, 0,  2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE3), // S_HIVEELEMENTAL_DIE2
+	STATE(SPR_NULL, 0,  0, {A_Repeat}, 7, S_HIVEELEMENTAL_DIE1, S_XPLD_FLICKY), // S_HIVEELEMENTAL_DIE3
+
+	STATE(SPR_BUMB, 1, 10, {NULL}, 0, 0, S_BUMBLEBORE_LOOK1), // S_BUMBLEBORE_SPAWN
+	STATE(SPR_BUMB, 0,  4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK2), // S_BUMBLEBORE_LOOK1
+	STATE(SPR_BUMB, 1,  4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK1), // S_BUMBLEBORE_LOOK2
+	STATE(SPR_BUMB, 0,  4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY2), // S_BUMBLEBORE_FLY1
+	STATE(SPR_BUMB, 1,  4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY1), // S_BUMBLEBORE_FLY2
+	STATE(SPR_BUMB, 2|FF_FULLBRIGHT,  12, {A_ZThrust},  4, (1<<16)|1, S_BUMBLEBORE_FALL1),  // S_BUMBLEBORE_RAISE
+	STATE(SPR_BUMB, 2|FF_FULLBRIGHT,   0, {A_ZThrust}, -8, (1<<16)|1, S_BUMBLEBORE_FALL2),  // S_BUMBLEBORE_FALL1
+	STATE(SPR_BUMB, 2|FF_FULLBRIGHT, 300, {NULL},       0,         0, S_BUMBLEBORE_DIE),    // S_BUMBLEBORE_FALL2
+	STATE(SPR_BUMB, 4, 3, {A_MultiShotDist}, (MT_DUST<<16)|6, -40, S_BUMBLEBORE_STUCK2),    // S_BUMBLEBORE_STUCK1
+	STATE(SPR_BUMB, 5, 120, {NULL}, 0, 0, S_BUMBLEBORE_DIE), // S_BUMBLEBORE_STUCK2
+	STATE(SPR_BUMB, 5, 0, {A_CryingToMomma}, 0, 0, S_XPLD1), // S_BUMBLEBORE_DIE
+
+	STATE(SPR_BBUZ,          0, -1, {NULL}, 0, 0, S_NULL), // S_BUGGLEIDLE
+	STATE(SPR_BBUZ, FF_ANIMATE, -1, {NULL}, 1, 2, S_NULL), // S_BUGGLEFLY
+
+	STATE(SPR_FMCE, 0, 20, {NULL}, 0, 0, S_SMASHSPIKE_EASE1), // S_SMASHSPIKE_FLOAT
+	STATE(SPR_FMCE, 0,  4, {A_ZThrust},  4, (1<<16)|1, S_SMASHSPIKE_EASE2), // S_SMASHSPIKE_EASE1
+	STATE(SPR_FMCE, 0,  4, {A_ZThrust},  0, (1<<16)|1, S_SMASHSPIKE_FALL),  // S_SMASHSPIKE_EASE2
+	STATE(SPR_FMCE, 0,  2, {A_ZThrust}, -6,         1, S_SMASHSPIKE_FALL),  // S_SMASHSPIKE_FALL
+	STATE(SPR_FMCE, 1,  2, {A_MultiShotDist}, (MT_DUST<<16)|10, -48, S_SMASHSPIKE_STOMP2), // S_SMASHSPIKE_STOMP1
+	STATE(SPR_FMCE, 2, 14, {NULL}, 0, 0, S_SMASHSPIKE_RISE1), // S_SMASHSPIKE_STOMP2
+	STATE(SPR_FMCE, 1,  2, {NULL}, 0, 0, S_SMASHSPIKE_RISE2), // S_SMASHSPIKE_RISE1
+	STATE(SPR_FMCE, 0,  2, {A_ZThrust}, 6, (1<<16)|1, S_SMASHSPIKE_RISE2), // S_SMASHSPIKE_RISE2
+
+	STATE(SPR_CACO, 0,  5, {A_Look}, (1100<<16)|1, 0, S_CACO_LOOK), // S_CACO_LOOK
+	STATE(SPR_CACO, 1,  0, {A_MultiShotDist}, (MT_DUST<<16)|7, -48, S_CACO_WAKE2), // S_CACO_WAKE1
+	STATE(SPR_CACO, 1, 10, {A_ZThrust}, 4, (1<<16)|1, S_CACO_WAKE3), // S_CACO_WAKE2
+	STATE(SPR_CACO, 2,  8, {A_ZThrust}, 2, (1<<16)|1, S_CACO_WAKE4), // S_CACO_WAKE3
+	STATE(SPR_CACO, 2,  4, {A_ZThrust}, 0, (1<<16)|1, S_CACO_ROAR),  // S_CACO_WAKE4
+	STATE(SPR_CACO, 2, 10, {A_PlayActiveSound}, 0, 0, S_CACO_CHASE), // S_CACO_ROAR
+	STATE(SPR_CACO, 2,  5, {A_JetChase}, 0, 0, S_CACO_CHASE_REPEAT), // S_CACO_CHASE
+	STATE(SPR_CACO, 2,  0, {A_Repeat}, 5, S_CACO_CHASE, S_CACO_RANDOM), // S_CACO_CHASE_REPEAT
+	STATE(SPR_CACO, 2,  0, {A_RandomState}, S_CACO_PREPARE_SOUND, S_CACO_CHASE, S_CACO_RANDOM), // S_CACO_RANDOM
+	STATE(SPR_CACO, 2,  8, {A_PlaySound}, sfx_s3k95, 1, S_CACO_PREPARE1),  // S_CACO_PREPARE_SOUND
+	STATE(SPR_CACO, 3,               8, {NULL}, 0, 0, S_CACO_PREPARE2),    // S_CACO_PREPARE1
+	STATE(SPR_CACO, 4|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_PREPARE3),    // S_CACO_PREPARE2
+	STATE(SPR_CACO, 5|FF_FULLBRIGHT, 8, {NULL}, 0, 0, S_CACO_SHOOT_SOUND), // S_CACO_PREPARE3
+	STATE(SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_PlaySound}, sfx_s3k4e, 1, S_CACO_SHOOT1), // S_CACO_SHOOT_SOUND
+	STATE(SPR_CACO, 4|FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_CACOFIRE_EXPLODE1, S_CACO_SHOOT2), // S_CACO_SHOOT1
+	STATE(SPR_CACO, 4|FF_FULLBRIGHT, 6, {A_FireShot}, MT_CACOFIRE, -24, S_CACO_CLOSE), // S_CACO_SHOOT2
+	STATE(SPR_CACO, 3,              15, {NULL}, 0, 0, S_CACO_CHASE), // S_CACO_CLOSE
+	STATE(SPR_CACO, 10, 0, {A_SetObjectFlags}, MF_NOBLOCKMAP, 0, S_CACO_DIE_GIB1), // S_CACO_DIE_FLAGS
+	STATE(SPR_CACO, 10, 0, {A_NapalmScatter}, (7<<16)|MT_CACOSHARD, (30<<16)|20, S_CACO_DIE_GIB2), // S_CACO_DIE_GIB1
+	STATE(SPR_CACO, 10, 0, {A_NapalmScatter}, (10<<16)|MT_CACOSHARD, (24<<16)|32, S_CACO_DIE_SCREAM), // S_CACO_DIE_GIB2
+	STATE(SPR_CACO, 10, 0, {A_Scream}, 0, 0, S_CACO_DIE_SHATTER), // S_CACO_DIE_SCREAM
+	STATE(SPR_CACO, 10, 0, {A_PlaySound}, sfx_pumpkn, 1, S_CACO_DIE_FALL), // S_CACO_DIE_SHATTER
+	STATE(SPR_CACO, 10, 250, {A_FlickySpawn}, (1<<16), 0, S_NULL), // S_CACO_DIE_FALL
+
+	STATE(SPR_CACO, 6, 0, {A_RandomState}, S_CACOSHARD1_1, S_CACOSHARD2_1, S_NULL), // S_CACOSHARD_RANDOMIZE
+	STATE(SPR_CACO, 6, 3, {NULL}, 0, 0, S_CACOSHARD1_2), // S_CACOSHARD1_1
+	STATE(SPR_CACO, 7, 3, {NULL}, 0, 0, S_CACOSHARD1_1), // S_CACOSHARD1_2
+	STATE(SPR_CACO, 8, 3, {NULL}, 0, 0, S_CACOSHARD2_2), // S_CACOSHARD2_1
+	STATE(SPR_CACO, 9, 3, {NULL}, 0, 0, S_CACOSHARD2_1), // S_CACOSHARD2_2
+	STATE(SPR_BAL2,   FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE2), // S_CACOFIRE1
+	STATE(SPR_BAL2, 1|FF_FULLBRIGHT, 2, {A_GhostMe}, 0, 0, S_CACOFIRE3), // S_CACOFIRE2
+	STATE(SPR_BAL2,   FF_FULLBRIGHT, 0, {A_PlayActiveSound}, 0, 0, S_CACOFIRE1), // S_CACOFIRE3
+	STATE(SPR_BAL2, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE2), // S_CACOFIRE_EXPLODE1
+	STATE(SPR_BAL2, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE3), // S_CACOFIRE_EXPLODE2
+	STATE(SPR_BAL2, 4|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_CACOFIRE_EXPLODE4), // S_CACOFIRE_EXPLODE3
+	STATE(SPR_BAL2, 5|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL),      // S_CACOFIRE_EXPLODE4
+
+	STATE(SPR_SBOB, 1, 10, {A_ZThrust}, -2, (1<<16)|1, S_SPINBOBERT_MOVE_UP),       // S_SPINBOBERT_MOVE_FLIPUP
+	STATE(SPR_SBOB, 0, 45, {A_ZThrust},  4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPDOWN), // S_SPINBOBERT_MOVE_UP
+	STATE(SPR_SBOB, 1, 10, {A_ZThrust},  2, (1<<16)|1, S_SPINBOBERT_MOVE_DOWN),     // S_SPINBOBERT_MOVE_FLIPDOWN
+	STATE(SPR_SBOB, 2, 45, {A_ZThrust}, -4, (1<<16)|1, S_SPINBOBERT_MOVE_FLIPUP),   // S_SPINBOBERT_MOVE_DOWN
+	STATE(SPR_SBSK, FF_FULLBRIGHT, 1, {A_RotateSpikeBall},       0,                        0, S_SPINBOBERT_FIRE_GHOST), // S_SPINBOBERT_FIRE_MOVE
+	STATE(SPR_SBSK, FF_FULLBRIGHT, 0, {A_SpawnParticleRelative}, 0, S_SPINBOBERT_FIRE_TRAIL1, S_SPINBOBERT_FIRE_MOVE),  // S_SPINBOBERT_FIRE_GHOST
+	STATE(SPR_SBFL, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL2), // S_SPINBOBERT_FIRE_TRAIL1
+	STATE(SPR_SBFL, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINBOBERT_FIRE_TRAIL3), // S_SPINBOBERT_FIRE_TRAIL2
+	STATE(SPR_SBFL,   FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL),                   // S_SPINBOBERT_FIRE_TRAIL3
+
+	STATE(SPR_HBAT, 0,  5, {A_Look}, (900<<16)|1, 0, S_HANGSTER_LOOK), // S_HANGSTER_LOOK
+	STATE(SPR_HBAT, 1,  0, {A_MultiShotDist}, (MT_DUST<<16)|10, -34, S_HANGSTER_SWOOP2), // S_HANGSTER_SWOOP1
+	STATE(SPR_HBAT, 1,  2, {A_ZThrust}, -8, (1<<16)|1, S_HANGSTER_SWOOP2), // S_HANGSTER_SWOOP2
+	STATE(SPR_HBAT, 1,  6, {A_ZThrust}, -5, (1<<16), S_HANGSTER_ARC2), // S_HANGSTER_ARC1
+	STATE(SPR_HBAT, 1,  5, {A_ZThrust}, -2, (1<<16), S_HANGSTER_ARC3), // S_HANGSTER_ARC2
+	STATE(SPR_HBAT, 1,  1, {A_ZThrust},  0, (1<<16), S_HANGSTER_FLY1), // S_HANGSTER_ARC3
+	STATE(SPR_HBAT, 1,  4, {A_Thrust}, 6, 1, S_HANGSTER_FLY2), // S_HANGSTER_FLY1
+	STATE(SPR_HBAT, 2,  1, {A_PlaySound}, sfx_s3k52, 1, S_HANGSTER_FLY3), // S_HANGSTER_FLY2
+	STATE(SPR_HBAT, 3,  4, {A_Thrust}, 6, 1, S_HANGSTER_FLY4), // S_HANGSTER_FLY3
+	STATE(SPR_HBAT, 2,  1, {A_Thrust}, 6, 1, S_HANGSTER_FLYREPEAT), // S_HANGSTER_FLY4
+	STATE(SPR_HBAT, 2,  0, {A_Repeat}, 12, S_HANGSTER_FLY1, S_HANGSTER_ARCUP1), // S_HANGSTER_FLYREPEAT
+	STATE(SPR_HBAT, 1,  5, {A_ZThrust},  2, (1<<16), S_HANGSTER_ARCUP2), // S_HANGSTER_ARCUP1
+	STATE(SPR_HBAT, 1,  6, {A_ZThrust},  5, (1<<16), S_HANGSTER_ARCUP3), // S_HANGSTER_ARCUP2
+	STATE(SPR_HBAT, 1,  1, {A_ZThrust},  0, (1<<16), S_HANGSTER_RETURN1), // S_HANGSTER_ARCUP3
+	STATE(SPR_HBAT, 1,  1, {A_ZThrust},  8, (1<<16), S_HANGSTER_RETURN2), // S_HANGSTER_RETURN1
+	STATE(SPR_HBAT, 3,  1, {NULL}, 0, 0, S_HANGSTER_RETURN1), // S_HANGSTER_RETURN2
+	STATE(SPR_HBAT, 0, 15, {NULL}, 0, 0, S_HANGSTER_LOOK), // S_HANGSTER_RETURN3
+
+	STATE(SPR_NULL, 0,  35, {NULL}, 0, 0, S_CRUMBLE2), // S_CRUMBLE1
+	STATE(SPR_NULL, 0, 105, {A_Scream}, 0, 0, S_NULL), // S_CRUMBLE2
 
 	// Spark
-	{SPR_NULL, 0, 1, {A_ModuloToState}, 2, S_SPRK2, S_SPRK3},  // S_SPRK1
-	{SPR_SPRK, FF_TRANS20|FF_ANIMATE|0, 18, {NULL}, 8, 2, S_NULL},  // S_SPRK2
-	{SPR_SPRK, FF_TRANS20|FF_ANIMATE|9, 18, {NULL}, 8, 2, S_NULL},  // S_SPRK3
+	STATE(SPR_NULL, 0, 1, {A_ModuloToState}, 2, S_SPRK2, S_SPRK3),  // S_SPRK1
+	STATE(SPR_SPRK, FF_TRANS20|FF_ANIMATE|0, 18, {NULL}, 8, 2, S_NULL),  // S_SPRK2
+	STATE(SPR_SPRK, FF_TRANS20|FF_ANIMATE|9, 18, {NULL}, 8, 2, S_NULL),  // S_SPRK3
 
 	// Robot Explosion
-	{SPR_BOM1, 0, 0, {A_FlickySpawn},  0, 0, S_XPLD1}, // S_XPLD_FLICKY
-	{SPR_BOM1, 0, 2, {A_ShadowScream}, 0, 0, S_XPLD2}, // S_XPLD1
-	{SPR_BOM1, 1, 2, {NULL},           0, 0, S_XPLD3}, // S_XPLD2
-	{SPR_BOM1, 2, 3, {NULL},           0, 0, S_XPLD4}, // S_XPLD3
-	{SPR_BOM1, 3, 3, {NULL},           0, 0, S_XPLD5}, // S_XPLD4
-	{SPR_BOM1, 4, 4, {NULL},           0, 0, S_XPLD6}, // S_XPLD5
-	{SPR_BOM1, 5, 4, {NULL},           0, 0, S_NULL},  // S_XPLD6
+	STATE(SPR_BOM1, 0, 0, {A_FlickySpawn},  0, 0, S_XPLD1), // S_XPLD_FLICKY
+	STATE(SPR_BOM1, 0, 2, {A_ShadowScream}, 0, 0, S_XPLD2), // S_XPLD1
+	STATE(SPR_BOM1, 1, 2, {NULL},           0, 0, S_XPLD3), // S_XPLD2
+	STATE(SPR_BOM1, 2, 3, {NULL},           0, 0, S_XPLD4), // S_XPLD3
+	STATE(SPR_BOM1, 3, 3, {NULL},           0, 0, S_XPLD5), // S_XPLD4
+	STATE(SPR_BOM1, 4, 4, {NULL},           0, 0, S_XPLD6), // S_XPLD5
+	STATE(SPR_BOM1, 5, 4, {NULL},           0, 0, S_NULL),  // S_XPLD6
 
-	{SPR_BOM1, FF_ANIMATE,   21, {NULL},          5, 4, S_INVISIBLE}, // S_XPLD_EGGTRAP
+	STATE(SPR_BOM1, FF_ANIMATE,   21, {NULL},          5, 4, S_INVISIBLE), // S_XPLD_EGGTRAP
 
 	// Underwater Explosion
-	{SPR_BOM4, 0, 3, {A_ShadowScream}, 0, 0, S_WPLD2}, // S_WPLD1
-	{SPR_BOM4, 1, 3, {NULL},           0, 0, S_WPLD3}, // S_WPLD2
-	{SPR_BOM4, 2, 3, {NULL},           0, 0, S_WPLD4}, // S_WPLD3
-	{SPR_BOM4, 3, 3, {NULL},           0, 0, S_WPLD5}, // S_WPLD4
-	{SPR_BOM4, 4, 3, {NULL},           0, 0, S_WPLD6}, // S_WPLD5
-	{SPR_BOM4, 5, 3, {NULL},           0, 0, S_NULL},  // S_WPLD6
-
-	{SPR_DUST,   FF_TRANS40, 4, {NULL}, 0, 0, S_DUST2}, // S_DUST1
-	{SPR_DUST, 1|FF_TRANS50, 5, {NULL}, 0, 0, S_DUST3}, // S_DUST2
-	{SPR_DUST, 2|FF_TRANS60, 3, {NULL}, 0, 0, S_DUST4}, // S_DUST3
-	{SPR_DUST, 3|FF_TRANS70, 2, {NULL}, 0, 0, S_NULL},  // S_DUST4
-
-	{SPR_NULL, 0, 1, {A_RockSpawn}, 0, 0, S_ROCKSPAWN}, // S_ROCKSPAWN
-
-	{SPR_ROIA, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL}, // S_ROCKCRUMBLEA
-	{SPR_ROIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEB
-	{SPR_ROIC, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEC
-	{SPR_ROID, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLED
-	{SPR_ROIE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEE
-	{SPR_ROIF, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEF
-	{SPR_ROIG, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL}, // S_ROCKCRUMBLEG
-	{SPR_ROIH, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL}, // S_ROCKCRUMBLEH
-	{SPR_ROII, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEI
-	{SPR_ROIJ, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL}, // S_ROCKCRUMBLEJ
-	{SPR_ROIK, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL}, // S_ROCKCRUMBLEK
-	{SPR_ROIL, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEL
-	{SPR_ROIM, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEM
-	{SPR_ROIN, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEN
-	{SPR_ROIO, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEO
-	{SPR_ROIP, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEP
-
-	{SPR_GFZD, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL}, // S_GFZDEBRIS
-	{SPR_BRIC, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL}, // S_BRICKDEBRIS
-	{SPR_WDDB, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL}, // S_WOODDEBRIS
-	{SPR_BRIR, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL}, // S_REDBRICKDEBRIS
-	{SPR_BRIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL}, // S_BLUEBRICKDEBRIS
-	{SPR_BRIY, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL}, // S_YELLOWBRICKDEBRIS
-
-	{SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK
+	STATE(SPR_BOM4, 0, 3, {A_ShadowScream}, 0, 0, S_WPLD2), // S_WPLD1
+	STATE(SPR_BOM4, 1, 3, {NULL},           0, 0, S_WPLD3), // S_WPLD2
+	STATE(SPR_BOM4, 2, 3, {NULL},           0, 0, S_WPLD4), // S_WPLD3
+	STATE(SPR_BOM4, 3, 3, {NULL},           0, 0, S_WPLD5), // S_WPLD4
+	STATE(SPR_BOM4, 4, 3, {NULL},           0, 0, S_WPLD6), // S_WPLD5
+	STATE(SPR_BOM4, 5, 3, {NULL},           0, 0, S_NULL),  // S_WPLD6
+
+	STATE(SPR_DUST,   FF_TRANS40, 4, {NULL}, 0, 0, S_DUST2), // S_DUST1
+	STATE(SPR_DUST, 1|FF_TRANS50, 5, {NULL}, 0, 0, S_DUST3), // S_DUST2
+	STATE(SPR_DUST, 2|FF_TRANS60, 3, {NULL}, 0, 0, S_DUST4), // S_DUST3
+	STATE(SPR_DUST, 3|FF_TRANS70, 2, {NULL}, 0, 0, S_NULL),  // S_DUST4
+
+	STATE(SPR_NULL, 0, 1, {A_RockSpawn}, 0, 0, S_ROCKSPAWN), // S_ROCKSPAWN
+
+	STATE(SPR_ROIA, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL), // S_ROCKCRUMBLEA
+	STATE(SPR_ROIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLEB
+	STATE(SPR_ROIC, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLEC
+	STATE(SPR_ROID, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLED
+	STATE(SPR_ROIE, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLEE
+	STATE(SPR_ROIF, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLEF
+	STATE(SPR_ROIG, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL), // S_ROCKCRUMBLEG
+	STATE(SPR_ROIH, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL), // S_ROCKCRUMBLEH
+	STATE(SPR_ROII, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLEI
+	STATE(SPR_ROIJ, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL), // S_ROCKCRUMBLEJ
+	STATE(SPR_ROIK, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL), // S_ROCKCRUMBLEK
+	STATE(SPR_ROIL, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLEL
+	STATE(SPR_ROIM, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLEM
+	STATE(SPR_ROIN, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLEN
+	STATE(SPR_ROIO, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLEO
+	STATE(SPR_ROIP, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL), // S_ROCKCRUMBLEP
+
+	STATE(SPR_GFZD, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL), // S_GFZDEBRIS
+	STATE(SPR_BRIC, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL), // S_BRICKDEBRIS
+	STATE(SPR_WDDB, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL), // S_WOODDEBRIS
+	STATE(SPR_BRIR, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL), // S_REDBRICKDEBRIS
+	STATE(SPR_BRIB, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL), // S_BLUEBRICKDEBRIS
+	STATE(SPR_BRIY, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL), // S_YELLOWBRICKDEBRIS
+
+	STATE(SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL), // S_NAMECHECK
 };
 
+#undef STATE
+
 mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 {
 	{           // MT_NULL
diff --git a/src/info.h b/src/info.h
index 0ec31f77aa5b3bd27b115f1718df38f0ae0dff75..cf0460ed2b65dc93187901fa6bd9e839a579c8c9 100644
--- a/src/info.h
+++ b/src/info.h
@@ -4105,8 +4105,8 @@ typedef struct
 	UINT32 frame; // we use the upper 16 bits for translucency and other shade effects
 	INT32 tics;
 	actionf_t action;
-	INT32 var1;
-	INT32 var2;
+	action_val_t var1;
+	action_val_t var2;
 	statenum_t nextstate;
 } state_t;
 
diff --git a/src/lua_infolib.c b/src/lua_infolib.c
index 0c5660a081632a383176c37d48e907e15345f339..9a0ea33cd76a859cb73851cad8a83b8f03bcce87 100644
--- a/src/lua_infolib.c
+++ b/src/lua_infolib.c
@@ -620,21 +620,24 @@ static int framepivot_num(lua_State *L)
 // STATE INFO //
 ////////////////
 
+static void PushActionValue(lua_State *L, action_val_t arg)
+{
+	if (ACTION_VAL_IS_INTEGER(arg))
+		lua_pushinteger(L, ACTION_VAL_AS_INTEGER(arg));
+	else if (ACTION_VAL_IS_DECIMAL(arg))
+		lua_pushfixed(L, ACTION_VAL_AS_DECIMAL(arg));
+	else if (ACTION_VAL_IS_BOOLEAN(arg))
+		lua_pushboolean(L, ACTION_VAL_AS_BOOLEAN(arg));
+	else if (ACTION_VAL_IS_STRING(arg))
+		lua_pushlstring(L, arg.v_string.chars, arg.v_string.length);
+	else if (ACTION_VAL_IS_NULL(arg))
+		lua_pushnil(L);
+}
+
 static void PushActionArguments(lua_State *L, action_val_t *args, unsigned argcount)
 {
 	for (unsigned i = 0; i < argcount; i++)
-	{
-		if (ACTION_VAL_IS_INTEGER(args[i]))
-			lua_pushinteger(L, ACTION_VAL_AS_INTEGER(args[i]));
-		else if (ACTION_VAL_IS_DECIMAL(args[i]))
-			lua_pushfixed(L, ACTION_VAL_AS_DECIMAL(args[i]));
-		else if (ACTION_VAL_IS_BOOLEAN(args[i]))
-			lua_pushboolean(L, ACTION_VAL_AS_BOOLEAN(args[i]));
-		else if (ACTION_VAL_IS_STRING(args[i]))
-			lua_pushlstring(L, args[i].v_string.chars, args[i].v_string.length);
-		else if (ACTION_VAL_IS_NULL(args[i]))
-			lua_pushnil(L);
-	}
+		PushActionValue(L, args[i]);
 }
 
 // Uses astate to determine which state is calling it
@@ -773,9 +776,9 @@ static int lib_setState(lua_State *L)
 				return luaL_typerror(L, 3, "function");
 			}
 		} else if (i == 5 || (str && fastcmp(str, "var1"))) {
-			state->var1 = (INT32)luaL_checkinteger(L, 3);
+			LUA_ValueToActionVal(L, 3, &state->var1);
 		} else if (i == 6 || (str && fastcmp(str, "var2"))) {
-			state->var2 = (INT32)luaL_checkinteger(L, 3);
+			LUA_ValueToActionVal(L, 3, &state->var2);
 		} else if (i == 7 || (str && fastcmp(str, "nextstate"))) {
 			value = luaL_checkinteger(L, 3);
 			if (value < S_NULL || value >= NUMSTATES)
@@ -976,10 +979,14 @@ static int state_get(lua_State *L)
 		// because the metatable will trigger.
 		lua_getglobal(L, name); // actually gets from LREG_ACTIONS if applicable, and pushes a META_ACTION userdata if not.
 		return 1; // return just the function
-	} else if (fastcmp(field,"var1"))
-		number = st->var1;
-	else if (fastcmp(field,"var2"))
-		number = st->var2;
+	} else if (fastcmp(field,"var1")) {
+		PushActionValue(L, st->var1);
+		return 1;
+	}
+	else if (fastcmp(field,"var2")) {
+		PushActionValue(L, st->var2);
+		return 1;
+	}
 	else if (fastcmp(field,"nextstate"))
 		number = st->nextstate;
 	else if (devparm)
@@ -1046,9 +1053,9 @@ static int state_set(lua_State *L)
 			return luaL_typerror(L, 3, "function");
 		}
 	} else if (fastcmp(field,"var1"))
-		st->var1 = (INT32)luaL_checknumber(L, 3);
+		LUA_ValueToActionVal(L, 3, &st->var1);
 	else if (fastcmp(field,"var2"))
-		st->var2 = (INT32)luaL_checknumber(L, 3);
+		LUA_ValueToActionVal(L, 3, &st->var2);
 	else if (fastcmp(field,"nextstate")) {
 		value = luaL_checkinteger(L, 3);
 		if (value < S_NULL || value >= NUMSTATES)
diff --git a/src/p_action.h b/src/p_action.h
index 8d8d028dfdfcd9a129852e564d92dca254f6606c..9a23cab0d2ebf2fd2b8b24823f391e4eca1759bd 100644
--- a/src/p_action.h
+++ b/src/p_action.h
@@ -16,6 +16,10 @@
 
 #include "p_mobj.h"
 
+INT32 Action_ValueToInteger(action_val_t value);
+
+char *Action_ValueToString(action_val_t value);
+
 void Action_MakeString(action_string_t *out, const char *str);
 
 // IMPORTANT NOTE: If you add/remove from this list of action
diff --git a/src/p_enemy.c b/src/p_enemy.c
index 9ad5a8fc8a4225f7cf681591e866fe4b4d315796..61effc1432c12cc6aa3e2e733a9e05c94cbc2037 100644
--- a/src/p_enemy.c
+++ b/src/p_enemy.c
@@ -739,16 +739,50 @@ static const char *Action_GetTypeName(UINT8 type)
 #define ARGS_VALUE_EXPECTED(expectedType) \
 		CONS_Alert(CONS_WARNING, "%s: in argument #%d: expected value of type %s, but was of type %s\n", action_name, argnum+1, Action_GetTypeName(expectedType), Action_GetTypeName(args[argnum].type))
 
+INT32 Action_ValueToInteger(action_val_t value)
+{
+	if (ACTION_VAL_IS_INTEGER(value))
+		return ACTION_VAL_AS_INTEGER(value);
+	else if (ACTION_VAL_IS_DECIMAL(value))
+		return FixedInt(ACTION_VAL_AS_DECIMAL(value));
+	else if (ACTION_VAL_IS_BOOLEAN(value))
+		return ACTION_VAL_AS_BOOLEAN(value) ? 1 : 0;
+
+	return 0;
+}
+
+char *Action_ValueToString(action_val_t value)
+{
+	size_t bufsize = 128;
+
+	if (ACTION_VAL_IS_INTEGER(value))
+	{
+		char *buffer = Z_Malloc(bufsize, PU_STATIC, NULL);
+		snprintf(buffer, bufsize, "<integer> %d", Action_ValueToInteger(value));
+		return buffer;
+	}
+	else if (ACTION_VAL_IS_DECIMAL(value))
+	{
+		char *buffer = Z_Malloc(bufsize, PU_STATIC, NULL);
+		snprintf(buffer, bufsize, "<decimal> %f", FixedToFloat(ACTION_VAL_AS_DECIMAL(value)));
+		return buffer;
+	}
+	else if (ACTION_VAL_IS_BOOLEAN(value))
+		return ACTION_VAL_AS_BOOLEAN(value) ? Z_StrDup("<boolean> true") : Z_StrDup("<boolean> false");
+	else if (ACTION_VAL_IS_STRING(value))
+		return Z_StrDup("<string>");
+	else if (ACTION_VAL_IS_NULL(value))
+		return Z_StrDup("<null>");
+
+	return Z_StrDup("<unknown>");
+}
+
 static INT32 GetInteger(action_val_t *args, unsigned argcount, unsigned argnum, const char *action_name)
 {
 	ARGS_CHECK_VALID(0);
 
-	if (ACTION_VAL_IS_INTEGER(args[argnum]))
-		return ACTION_VAL_AS_INTEGER(args[argnum]);
-	else if (ACTION_VAL_IS_DECIMAL(args[argnum]))
-		return FixedInt(ACTION_VAL_AS_DECIMAL(args[argnum]));
-	else if (ACTION_VAL_IS_BOOLEAN(args[argnum]))
-		return ACTION_VAL_AS_BOOLEAN(args[argnum]) ? 1 : 0;
+	if (ACTION_VAL_IS_INTEGER(args[argnum]) || ACTION_VAL_IS_DECIMAL(args[argnum]) || ACTION_VAL_IS_BOOLEAN(args[argnum]))
+		return Action_ValueToInteger(args[argnum]);
 
 	ARGS_VALUE_EXPECTED(ACTION_VAL_INTEGER);
 
@@ -7971,8 +8005,8 @@ void A_GuardChase(mobj_t *actor, action_val_t *args, unsigned argcount)
 	&& actor->tracer->state->action.acp1)
 	{
 		action_val_t call_args[2] = {
-			ACTION_INTEGER_VAL(actor->tracer->state->var1),
-			ACTION_INTEGER_VAL(actor->tracer->state->var2)
+			actor->tracer->state->var1,
+			actor->tracer->state->var2
 		};
 		actor->tracer->state->action.acpscr(actor->tracer, call_args, 2);
 	}
@@ -8113,8 +8147,8 @@ void A_Boss1Spikeballs(mobj_t *actor, action_val_t *args, unsigned argcount)
 	S_StartSound(ball, ball->info->seesound);
 
 	action_val_t call_args[2] = {
-		ACTION_INTEGER_VAL(ball->state->var1),
-		ACTION_INTEGER_VAL(ball->state->var2)
+		ball->state->var1,
+		ball->state->var2
 	};
 	ball->state->action.acpscr(ball, call_args, 2);
 }
@@ -9433,15 +9467,15 @@ void A_DualAction(mobj_t *actor, action_val_t *args, unsigned argcount)
 
 	action_val_t call_args[2];
 
-	call_args[0] = ACTION_INTEGER_VAL(states[locvar1].var1);
-	call_args[1] = ACTION_INTEGER_VAL(states[locvar1].var2);
+	call_args[0] = states[locvar1].var1;
+	call_args[1] = states[locvar1].var2;
 	astate = &states[locvar1];
 
 	CONS_Debug(DBG_GAMELOGIC, "A_DualAction: Calling First Action (state %d)...\n", locvar1);
 	states[locvar1].action.acpscr(actor, call_args, 2);
 
-	call_args[0] = ACTION_INTEGER_VAL(states[locvar2].var1);
-	call_args[1] = ACTION_INTEGER_VAL(states[locvar2].var2);
+	call_args[0] = states[locvar2].var1;
+	call_args[1] = states[locvar2].var2;
 	astate = &states[locvar2];
 
 	CONS_Debug(DBG_GAMELOGIC, "A_DualAction: Calling Second Action (state %d)...\n", locvar2);
@@ -9523,13 +9557,20 @@ void A_RemoteAction(mobj_t *actor, action_val_t *args, unsigned argcount)
 	{
 		// Steal the var1 and var2 from "locvar2"
 		action_val_t call_args[2] = {
-			ACTION_INTEGER_VAL(states[locvar2].var1),
-			ACTION_INTEGER_VAL(states[locvar2].var2)
+			states[locvar2].var1,
+			states[locvar2].var2
 		};
 		astate = &states[locvar2];
 
+		char *var1str = Action_ValueToString(states[locvar2].var1);
+		char *var2str = Action_ValueToString(states[locvar2].var2);
+
 		CONS_Debug(DBG_GAMELOGIC, "A_RemoteAction: Calling action on %p\n"
-				"var1 is %d\nvar2 is %d\n", actor->target, states[locvar2].var1, states[locvar2].var2);
+				"var1 is %s\nvar2 is %s\n", actor->target, var1str, var2str);
+
+		Z_Free(var1str);
+		Z_Free(var2str);
+
 		states[locvar2].action.acpscr(actor->target, call_args, 2);
 	}
 
@@ -10669,13 +10710,13 @@ void A_CusValAction(mobj_t *actor, action_val_t *args, unsigned argcount)
 
 	if (locvar2 == 5)
 	{
-		call_args[0] = ACTION_INTEGER_VAL(states[locvar1].var1);
+		call_args[0] = states[locvar1].var1;
 		call_args[1] = ACTION_INTEGER_VAL((INT32)actor->cvmem);
 	}
 	else if (locvar2 == 4)
 	{
 		call_args[0] = ACTION_INTEGER_VAL((INT32)actor->cvmem);
-		call_args[1] = ACTION_INTEGER_VAL(states[locvar1].var2);
+		call_args[1] = states[locvar1].var2;
 	}
 	else if (locvar2 == 3)
 	{
@@ -10689,13 +10730,13 @@ void A_CusValAction(mobj_t *actor, action_val_t *args, unsigned argcount)
 	}
 	else if (locvar2 == 1)
 	{
-		call_args[0] = ACTION_INTEGER_VAL(states[locvar1].var1);
+		call_args[0] = states[locvar1].var1;
 		call_args[1] = ACTION_INTEGER_VAL((INT32)actor->cusval);
 	}
 	else
 	{
 		call_args[0] = ACTION_INTEGER_VAL((INT32)actor->cusval);
-		call_args[1] = ACTION_INTEGER_VAL(states[locvar1].var2);
+		call_args[1] = states[locvar1].var2;
 	}
 
 	astate = &states[locvar1];
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 8b508f5881c9ce802b812672bf469a02ad975996..901bbad7ffa8f05caa11084a4aba7348dfe27334 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -58,12 +58,12 @@ void P_RunCachedActions(void)
 
 	for (ac = actioncachehead.next; ac != &actioncachehead; ac = next)
 	{
-		action_val_t args[2] = {
-			ACTION_INTEGER_VAL(states[ac->statenum].var1),
-			ACTION_INTEGER_VAL(states[ac->statenum].var2)
-		};
 		if (ac->mobj && !P_MobjWasRemoved(ac->mobj)) // just in case...
 		{
+			action_val_t args[2] = {
+				states[ac->statenum].var1,
+				states[ac->statenum].var2
+			};
 			astate = &states[ac->statenum];
 			states[ac->statenum].action.acpscr(ac->mobj, args, 2);
 		}
@@ -90,31 +90,33 @@ static void P_SetupStateAnimation(mobj_t *mobj, state_t *st)
 {
 	INT32 animlength = (mobj->sprite == SPR_PLAY && mobj->skin)
 		? (INT32)(((skin_t *)mobj->skin)->sprites[mobj->sprite2].numframes) - 1
-		: st->var1;
+		: Action_ValueToInteger(st->var1);
 
 	if (!(st->frame & FF_ANIMATE))
 		return;
 
-	if (animlength <= 0 || st->var2 == 0)
+	INT32 var2 = Action_ValueToInteger(st->var2);
+
+	if (animlength <= 0 || var2 == 0)
 	{
 		mobj->frame &= ~FF_ANIMATE;
 		return; // Crash/stupidity prevention
 	}
 
-	mobj->anim_duration = (UINT16)st->var2;
+	mobj->anim_duration = (UINT16)var2;
 
 	if (st->frame & FF_GLOBALANIM)
 	{
 		// Attempt to account for the pre-ticker for objects spawned on load
 		if (!leveltime) return;
 
-		mobj->anim_duration -= (leveltime + 2) % st->var2;            // Duration synced to timer
-		mobj->frame += ((leveltime + 2) / st->var2) % (animlength + 1); // Frame synced to timer (duration taken into account)
+		mobj->anim_duration -= (leveltime + 2) % var2;            // Duration synced to timer
+		mobj->frame += ((leveltime + 2) / var2) % (animlength + 1); // Frame synced to timer (duration taken into account)
 	}
 	else if (st->frame & FF_RANDOMANIM)
 	{
 		mobj->frame += P_RandomKey(animlength + 1);     // Random starting frame
-		mobj->anim_duration -= P_RandomKey(st->var2); // Random duration for first frame
+		mobj->anim_duration -= P_RandomKey(var2); // Random duration for first frame
 	}
 }
 
@@ -127,14 +129,15 @@ FUNCINLINE static ATTRINLINE void P_CycleStateAnimation(mobj_t *mobj)
 	if (!(mobj->frame & FF_ANIMATE) || --mobj->anim_duration != 0)
 		return;
 
-	mobj->anim_duration = (UINT16)mobj->state->var2;
+	mobj->anim_duration = Action_ValueToInteger(mobj->state->var2);
 
 	if (mobj->sprite != SPR_PLAY)
 	{
 		// compare the current sprite frame to the one we started from
 		// if more than var1 away from it, swap back to the original
 		// else just advance by one
-		if (((++mobj->frame) & FF_FRAMEMASK) - (mobj->state->frame & FF_FRAMEMASK) > (UINT32)mobj->state->var1)
+		UINT32 var1 = Action_ValueToInteger(mobj->state->var1);
+		if (((++mobj->frame) & FF_FRAMEMASK) - (mobj->state->frame & FF_FRAMEMASK) > var1)
 			mobj->frame = (mobj->state->frame & FF_FRAMEMASK) | (mobj->frame & ~FF_FRAMEMASK);
 
 		return;
@@ -449,13 +452,14 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
 			{
 				if (st->frame & FF_SPR2ENDSTATE) // no frame advancement
 				{
-					if (st->var1 == mobj->state-states)
+					INT32 var1 = Action_ValueToInteger(st->var1);
+					if (var1 == mobj->state-states)
 						frame--;
 					else
 					{
 						if (mobj->frame & FF_FRAMEMASK)
 							mobj->frame--;
-						return P_SetPlayerMobjState(mobj, st->var1);
+						return P_SetPlayerMobjState(mobj, var1);
 					}
 				}
 				else
@@ -481,8 +485,8 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
 		if (st->action.acpscr)
 		{
 			action_val_t args[2] = {
-				ACTION_INTEGER_VAL(st->var1),
-				ACTION_INTEGER_VAL(st->var2)
+				st->var1,
+				st->var2
 			};
 			astate = st;
 			st->action.acpscr(mobj, args, 2);
@@ -591,13 +595,14 @@ boolean P_SetMobjState(mobj_t *mobj, statenum_t state)
 			{
 				if (st->frame & FF_SPR2ENDSTATE) // no frame advancement
 				{
-					if (st->var1 == mobj->state-states)
+					INT32 var1 = Action_ValueToInteger(st->var1);
+					if (var1 == mobj->state-states)
 						frame--;
 					else
 					{
 						if (mobj->frame & FF_FRAMEMASK)
 							mobj->frame--;
-						return P_SetMobjState(mobj, st->var1);
+						return P_SetMobjState(mobj, var1);
 					}
 				}
 				else
@@ -621,8 +626,8 @@ boolean P_SetMobjState(mobj_t *mobj, statenum_t state)
 		if (st->action.acpscr)
 		{
 			action_val_t args[2] = {
-				ACTION_INTEGER_VAL(st->var1),
-				ACTION_INTEGER_VAL(st->var2)
+				st->var1,
+				st->var2
 			};
 			astate = st;
 			st->action.acpscr(mobj, args, 2);
@@ -6879,8 +6884,12 @@ void P_RunOverlays(void)
 			else
 				viewingangle = R_PointToAngle2(mo->target->x, mo->target->y, camera.x, camera.y);
 
-			if (!(mo->state->frame & FF_ANIMATE) && mo->state->var1)
-				viewingangle += ANGLE_180;
+			if (!(mo->state->frame & FF_ANIMATE))
+			{
+				INT32 var1 = Action_ValueToInteger(mo->state->var1);
+				if (var1)
+					viewingangle += ANGLE_180;
+			}
 			destx = mo->target->x + P_ReturnThrustX(mo->target, viewingangle, FixedMul(FRACUNIT/4, mo->scale));
 			desty = mo->target->y + P_ReturnThrustY(mo->target, viewingangle, FixedMul(FRACUNIT/4, mo->scale));
 		}
@@ -6895,7 +6904,7 @@ void P_RunOverlays(void)
 		mo->angle = (mo->target->player ? mo->target->player->drawangle : mo->target->angle) + mo->movedir;
 
 		if (!(mo->state->frame & FF_ANIMATE))
-			zoffs = FixedMul(((signed)mo->state->var2)*FRACUNIT, mo->scale);
+			zoffs = FixedMul(Action_ValueToInteger(mo->state->var2)*FRACUNIT, mo->scale);
 		// if you're using FF_ANIMATE on an overlay,
 		// then you're on your own.
 		else
@@ -6910,7 +6919,7 @@ void P_RunOverlays(void)
 			mo->z = (mo->target->z + mo->target->height - mo->height) - zoffs;
 		else
 			mo->z = mo->target->z + zoffs;
-		if (mo->state->var1)
+		if (Action_ValueToInteger(mo->state->var1))
 			P_SetUnderlayPosition(mo);
 		else
 			P_SetThingPosition(mo);
@@ -7413,7 +7422,7 @@ static void P_RosySceneryThink(mobj_t *mobj)
 			P_SetMobjState(mobj, stat);
 		}
 		else if (P_MobjFlip(mobj)*mobj->momz < 0)
-			mobj->frame = mobj->state->frame + mobj->state->var1;
+			mobj->frame = mobj->state->frame + Action_ValueToInteger(mobj->state->var1);
 	}
 
 	if (!player)
@@ -7465,7 +7474,7 @@ static void P_RosySceneryThink(mobj_t *mobj)
 				max = pdist;
 				if ((--mobj->extravalue1) <= 0)
 				{
-					if (++mobj->frame > mobj->state->frame + mobj->state->var1)
+					if (++mobj->frame > mobj->state->frame + Action_ValueToInteger(mobj->state->var1))
 						mobj->frame = mobj->state->frame;
 					if (mom > 12*mobj->scale)
 						mobj->extravalue1 = 2;
@@ -9942,9 +9951,10 @@ static void P_FiringThink(mobj_t *mobj)
 	{
 		if (mobj->state->tics > 1)
 		{
+			INT32 var2 = Action_ValueToInteger(mobj->state->var2);
 			action_val_t args[2] = {
-				ACTION_INTEGER_VAL(mobj->state->var1),
-				ACTION_INTEGER_VAL(mobj->state->var2 & 65535)
+				mobj->state->var1,
+				ACTION_INTEGER_VAL(var2 & 65535)
 			};
 			mobj->state->action.acpscr(mobj, args, 2);
 		}
@@ -10833,8 +10843,8 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
 					ball->threshold = ball->radius + mobj->radius + FixedMul(ball->info->painchance, ball->scale);
 
 					action_val_t args[2] = {
-						ACTION_INTEGER_VAL(ball->state->var1),
-						ACTION_INTEGER_VAL(ball->state->var2)
+						ball->state->var1,
+						ball->state->var2
 					};
 					ball->state->action.acpscr(ball, args, 2);
 				}
@@ -11053,8 +11063,8 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
 		else
 		{
 			action_val_t args[2] = {
-				ACTION_INTEGER_VAL(st->var1),
-				ACTION_INTEGER_VAL(st->var2)
+				st->var1,
+				st->var2
 			};
 			astate = st;
 			st->action.acpscr(mobj, args, 2);
diff --git a/src/p_saveg.c b/src/p_saveg.c
index 4aa2318fd2902d172c7a35a82a1c9d54dcf113ad..3681fb73c82ac3d11d10a4bf5ce0e0a3c94dfd75 100644
--- a/src/p_saveg.c
+++ b/src/p_saveg.c
@@ -1720,7 +1720,7 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
 		diff |= MD_SPRITE;
 	if (mobj->frame != mobj->state->frame)
 		diff |= MD_FRAME;
-	if (mobj->anim_duration != (UINT16)mobj->state->var2)
+	if (mobj->anim_duration != (UINT16)(Action_ValueToInteger(mobj->state->var2)))
 		diff |= MD_FRAME;
 	if (mobj->eflags)
 		diff |= MD_EFLAGS;
@@ -2941,7 +2941,7 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker)
 	else
 	{
 		mobj->frame = mobj->state->frame;
-		mobj->anim_duration = (UINT16)mobj->state->var2;
+		mobj->anim_duration = (UINT16)(Action_ValueToInteger(mobj->state->var2));
 	}
 	if (diff & MD_EFLAGS)
 		mobj->eflags = READUINT16(save_p);