mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	Merge branch 'master' into grand-pricks
This commit is contained in:
		
						commit
						e425eabf04
					
				
					 19 changed files with 387 additions and 319 deletions
				
			
		| 
						 | 
				
			
			@ -547,10 +547,7 @@ static void COM_ExecuteString(char *ptext)
 | 
			
		|||
		if (!stricmp(com_argv[0], a->name))
 | 
			
		||||
		{
 | 
			
		||||
			if (recursion > MAX_ALIAS_RECURSION)
 | 
			
		||||
			{	
 | 
			
		||||
				CONS_Alert(CONS_WARNING, M_GetText("Alias recursion cycle detected!\n"));
 | 
			
		||||
				recursion = 0;
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				char buf[1024];
 | 
			
		||||
| 
						 | 
				
			
			@ -582,8 +579,10 @@ static void COM_ExecuteString(char *ptext)
 | 
			
		|||
				}
 | 
			
		||||
				WRITESTRING(write, read);
 | 
			
		||||
 | 
			
		||||
				// Monster Iestyn: keep track of how many levels of recursion we're in
 | 
			
		||||
				recursion++;
 | 
			
		||||
				COM_BufInsertText(buf);
 | 
			
		||||
				recursion--;
 | 
			
		||||
			}
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2498,6 +2498,7 @@ static void Command_ClearBans(void)
 | 
			
		|||
		return;
 | 
			
		||||
 | 
			
		||||
	I_ClearBans();
 | 
			
		||||
	D_SaveBan();
 | 
			
		||||
	reasontail = NULL;
 | 
			
		||||
	while (reasonhead)
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -515,6 +515,7 @@ typedef struct player_s
 | 
			
		|||
	UINT8 gotcontinue; // Got continue from this stage?
 | 
			
		||||
 | 
			
		||||
	fixed_t speed; // Player's speed (distance formula of MOMX and MOMY values)
 | 
			
		||||
	fixed_t lastspeed;
 | 
			
		||||
	UINT8 jumping; // Jump counter
 | 
			
		||||
	UINT8 secondjump;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										114
									
								
								src/dehacked.c
									
										
									
									
									
								
							
							
						
						
									
										114
									
								
								src/dehacked.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -3900,88 +3900,52 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
 | 
			
		|||
	"S_THOK",
 | 
			
		||||
 | 
			
		||||
	// SRB2kart Frames
 | 
			
		||||
	"S_KART_STND1",
 | 
			
		||||
	"S_KART_STND2",
 | 
			
		||||
	"S_KART_STND1_L",
 | 
			
		||||
	"S_KART_STND2_L",
 | 
			
		||||
	"S_KART_STND1_R",
 | 
			
		||||
	"S_KART_STND2_R",
 | 
			
		||||
	"S_KART_WALK1",
 | 
			
		||||
	"S_KART_WALK2",
 | 
			
		||||
	"S_KART_WALK1_L",
 | 
			
		||||
	"S_KART_WALK2_L",
 | 
			
		||||
	"S_KART_WALK1_R",
 | 
			
		||||
	"S_KART_WALK2_R",
 | 
			
		||||
	"S_KART_RUN1",
 | 
			
		||||
	"S_KART_RUN2",
 | 
			
		||||
	"S_KART_RUN1_L",
 | 
			
		||||
	"S_KART_RUN2_L",
 | 
			
		||||
	"S_KART_RUN1_R",
 | 
			
		||||
	"S_KART_RUN2_R",
 | 
			
		||||
	"S_KART_STILL1",
 | 
			
		||||
	"S_KART_STILL2",
 | 
			
		||||
	"S_KART_STILL1_L",
 | 
			
		||||
	"S_KART_STILL2_L",
 | 
			
		||||
	"S_KART_STILL1_R",
 | 
			
		||||
	"S_KART_STILL2_R",
 | 
			
		||||
 | 
			
		||||
	"S_KART_SLOW1",
 | 
			
		||||
	"S_KART_SLOW2",
 | 
			
		||||
	"S_KART_SLOW1_L",
 | 
			
		||||
	"S_KART_SLOW2_L",
 | 
			
		||||
	"S_KART_SLOW1_R",
 | 
			
		||||
	"S_KART_SLOW2_R",
 | 
			
		||||
 | 
			
		||||
	"S_KART_FAST1",
 | 
			
		||||
	"S_KART_FAST2",
 | 
			
		||||
	"S_KART_FAST1_L",
 | 
			
		||||
	"S_KART_FAST2_L",
 | 
			
		||||
	"S_KART_FAST1_R",
 | 
			
		||||
	"S_KART_FAST2_R",
 | 
			
		||||
 | 
			
		||||
	"S_KART_DRIFT1_L",
 | 
			
		||||
	"S_KART_DRIFT2_L",
 | 
			
		||||
 | 
			
		||||
	"S_KART_DRIFT1_L_OUT",
 | 
			
		||||
	"S_KART_DRIFT2_L_OUT",
 | 
			
		||||
 | 
			
		||||
	"S_KART_DRIFT1_L_IN",
 | 
			
		||||
	"S_KART_DRIFT2_L_IN",
 | 
			
		||||
	"S_KART_DRIFT3_L_IN",
 | 
			
		||||
	"S_KART_DRIFT4_L_IN",
 | 
			
		||||
 | 
			
		||||
	"S_KART_DRIFT1_R",
 | 
			
		||||
	"S_KART_DRIFT2_R",
 | 
			
		||||
 | 
			
		||||
	"S_KART_DRIFT1_R_OUT",
 | 
			
		||||
	"S_KART_DRIFT2_R_OUT",
 | 
			
		||||
 | 
			
		||||
	"S_KART_DRIFT1_R_IN",
 | 
			
		||||
	"S_KART_DRIFT2_R_IN",
 | 
			
		||||
	"S_KART_DRIFT3_R_IN",
 | 
			
		||||
	"S_KART_DRIFT4_R_IN",
 | 
			
		||||
 | 
			
		||||
	"S_KART_SPIN",
 | 
			
		||||
	"S_KART_PAIN",
 | 
			
		||||
	"S_KART_SQUISH",
 | 
			
		||||
	/*
 | 
			
		||||
	"S_PLAY_STND",
 | 
			
		||||
	"S_PLAY_TAP1",
 | 
			
		||||
	"S_PLAY_TAP2",
 | 
			
		||||
	"S_PLAY_RUN1",
 | 
			
		||||
	"S_PLAY_RUN2",
 | 
			
		||||
	"S_PLAY_RUN3",
 | 
			
		||||
	"S_PLAY_RUN4",
 | 
			
		||||
	"S_PLAY_RUN5",
 | 
			
		||||
	"S_PLAY_RUN6",
 | 
			
		||||
	"S_PLAY_RUN7",
 | 
			
		||||
	"S_PLAY_RUN8",
 | 
			
		||||
	"S_PLAY_SPD1",
 | 
			
		||||
	"S_PLAY_SPD2",
 | 
			
		||||
	"S_PLAY_SPD3",
 | 
			
		||||
	"S_PLAY_SPD4",
 | 
			
		||||
	"S_PLAY_ATK1",
 | 
			
		||||
	"S_PLAY_ATK2",
 | 
			
		||||
	"S_PLAY_ATK3",
 | 
			
		||||
	"S_PLAY_ATK4",
 | 
			
		||||
	"S_PLAY_SPRING",
 | 
			
		||||
	"S_PLAY_FALL1",
 | 
			
		||||
	"S_PLAY_FALL2",
 | 
			
		||||
	"S_PLAY_ABL1",
 | 
			
		||||
	"S_PLAY_ABL2",
 | 
			
		||||
	"S_PLAY_SPC1",
 | 
			
		||||
	"S_PLAY_SPC2",
 | 
			
		||||
	"S_PLAY_SPC3",
 | 
			
		||||
	"S_PLAY_SPC4",
 | 
			
		||||
	"S_PLAY_CLIMB1",
 | 
			
		||||
	"S_PLAY_CLIMB2",
 | 
			
		||||
	"S_PLAY_CLIMB3",
 | 
			
		||||
	"S_PLAY_CLIMB4",
 | 
			
		||||
	"S_PLAY_CLIMB5",
 | 
			
		||||
	"S_PLAY_GASP",
 | 
			
		||||
	"S_PLAY_PAIN",
 | 
			
		||||
	"S_PLAY_DIE",
 | 
			
		||||
	"S_PLAY_TEETER1",
 | 
			
		||||
	"S_PLAY_TEETER2",
 | 
			
		||||
	"S_PLAY_CARRY",
 | 
			
		||||
	"S_PLAY_SUPERSTAND",
 | 
			
		||||
	"S_PLAY_SUPERWALK1",
 | 
			
		||||
	"S_PLAY_SUPERWALK2",
 | 
			
		||||
	"S_PLAY_SUPERFLY1",
 | 
			
		||||
	"S_PLAY_SUPERFLY2",
 | 
			
		||||
	"S_PLAY_SUPERTEETER",
 | 
			
		||||
	"S_PLAY_SUPERHIT",
 | 
			
		||||
	"S_PLAY_SUPERTRANS1",
 | 
			
		||||
	"S_PLAY_SUPERTRANS2",
 | 
			
		||||
	"S_PLAY_SUPERTRANS3",
 | 
			
		||||
	"S_PLAY_SUPERTRANS4",
 | 
			
		||||
	"S_PLAY_SUPERTRANS5",
 | 
			
		||||
	"S_PLAY_SUPERTRANS6",
 | 
			
		||||
	"S_PLAY_SUPERTRANS7",
 | 
			
		||||
	"S_PLAY_SUPERTRANS8",
 | 
			
		||||
	"S_PLAY_SUPERTRANS9", // This has special significance in the code. If you add more frames, search for it and make the appropriate changes.
 | 
			
		||||
	*/
 | 
			
		||||
 | 
			
		||||
	// technically the player goes here but it's an infinite tic state
 | 
			
		||||
	"S_OBJPLACE_DUMMY",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7642,7 +7642,7 @@ void G_AddGhost(char *defdemoname)
 | 
			
		|||
		}
 | 
			
		||||
		gh->mo->z = z;
 | 
			
		||||
	}
 | 
			
		||||
	gh->mo->state = states+S_KART_STND1; // SRB2kart - was S_PLAY_STND
 | 
			
		||||
	gh->mo->state = states+S_KART_STILL1; // SRB2kart - was S_PLAY_STND
 | 
			
		||||
	gh->mo->sprite = gh->mo->state->sprite;
 | 
			
		||||
	gh->mo->frame = (gh->mo->state->frame & FF_FRAMEMASK) | tr_trans20<<FF_TRANSSHIFT;
 | 
			
		||||
	gh->mo->tics = -1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										125
									
								
								src/info.c
									
										
									
									
									
								
							
							
						
						
									
										125
									
								
								src/info.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -98,88 +98,43 @@ state_t states[NUMSTATES] =
 | 
			
		|||
	{SPR_THOK, FF_TRANS50, 8, {NULL}, 0, 0, S_NULL}, // S_THOK
 | 
			
		||||
 | 
			
		||||
	// Player // SRB2kart
 | 
			
		||||
	{SPR_PLAY,     0,   1, {NULL},   0, 0, S_KART_STND2},    // S_KART_STND1	A
 | 
			
		||||
	{SPR_PLAY,     1,   1, {NULL},   0, 0, S_KART_STND1},    // S_KART_STND2	B
 | 
			
		||||
	{SPR_PLAY,     2,   1, {NULL},   0, 0, S_KART_STND2_L},  // S_KART_STND1_L	C
 | 
			
		||||
	{SPR_PLAY,     3,   1, {NULL},   0, 0, S_KART_STND1_L},  // S_KART_STND2_L	D
 | 
			
		||||
	{SPR_PLAY,     4,   1, {NULL},   0, 0, S_KART_STND2_R},  // S_KART_STND1_R	E
 | 
			
		||||
	{SPR_PLAY,     5,   1, {NULL},   0, 0, S_KART_STND1_R},  // S_KART_STND2_R	F
 | 
			
		||||
	{SPR_PLAY,     9,   1, {NULL},   0, 0, S_KART_WALK2},    // S_KART_WALK1	J
 | 
			
		||||
	{SPR_PLAY,     6,   1, {NULL},   0, 0, S_KART_WALK1},    // S_KART_WALK2	G
 | 
			
		||||
	{SPR_PLAY,    10,   1, {NULL},   0, 0, S_KART_WALK2_L},  // S_KART_WALK1_L	K
 | 
			
		||||
	{SPR_PLAY,     7,   1, {NULL},   0, 0, S_KART_WALK1_L},  // S_KART_WALK2_L	H
 | 
			
		||||
	{SPR_PLAY,    11,   1, {NULL},   0, 0, S_KART_WALK2_R},  // S_KART_WALK1_R	L
 | 
			
		||||
	{SPR_PLAY,     8,   1, {NULL},   0, 0, S_KART_WALK1_R},  // S_KART_WALK2_R	I
 | 
			
		||||
	{SPR_PLAY,     0,   1, {NULL},   0, 0, S_KART_RUN2},     // S_KART_RUN1		A
 | 
			
		||||
	{SPR_PLAY,     9,   1, {NULL},   0, 0, S_KART_RUN1},     // S_KART_RUN2		J
 | 
			
		||||
	{SPR_PLAY,     2,   1, {NULL},   0, 0, S_KART_RUN2_L},   // S_KART_RUN1_L	C
 | 
			
		||||
	{SPR_PLAY,    10,   1, {NULL},   0, 0, S_KART_RUN1_L},   // S_KART_RUN2_L	K
 | 
			
		||||
	{SPR_PLAY,     4,   1, {NULL},   0, 0, S_KART_RUN2_R},   // S_KART_RUN1_R	E
 | 
			
		||||
	{SPR_PLAY,    11,   1, {NULL},   0, 0, S_KART_RUN1_R},   // S_KART_RUN2_R	L
 | 
			
		||||
	{SPR_PLAY,    12,   1, {NULL},   0, 0, S_KART_DRIFT2_L}, // S_KART_DRIFT1_L	M
 | 
			
		||||
	{SPR_PLAY,    13,   1, {NULL},   0, 0, S_KART_DRIFT1_L}, // S_KART_DRIFT2_L	N
 | 
			
		||||
	{SPR_PLAY,    14,   1, {NULL},   0, 0, S_KART_DRIFT2_R}, // S_KART_DRIFT1_R	O
 | 
			
		||||
	{SPR_PLAY,    15,   1, {NULL},   0, 0, S_KART_DRIFT1_R}, // S_KART_DRIFT2_R	P
 | 
			
		||||
	{SPR_PLAY,    16,  -1, {NULL},   0, 0, S_KART_SPIN},     // S_KART_SPIN		Q
 | 
			
		||||
	{SPR_PLAY,    16, 350, {NULL},   0, 0, S_KART_STND1},    // S_KART_PAIN		Q
 | 
			
		||||
	{SPR_PLAY,    17, 350, {NULL},   0, 0, S_KART_STND1},    // S_KART_SQUISH	R
 | 
			
		||||
	/*
 | 
			
		||||
	{SPR_PLAY,     0, 105, {NULL},   0, 0, S_PLAY_TAP1},        // S_PLAY_STND
 | 
			
		||||
	{SPR_PLAY,     1,  16, {NULL},   0, 0, S_PLAY_TAP2},        // S_PLAY_TAP1
 | 
			
		||||
	{SPR_PLAY,     2,  16, {NULL},   0, 0, S_PLAY_TAP1},        // S_PLAY_TAP2
 | 
			
		||||
	{SPR_PLAY,     3,   4, {NULL},   0, 0, S_PLAY_RUN2},        // S_PLAY_RUN1
 | 
			
		||||
	{SPR_PLAY,     4,   4, {NULL},   0, 0, S_PLAY_RUN3},        // S_PLAY_RUN2
 | 
			
		||||
	{SPR_PLAY,     5,   4, {NULL},   0, 0, S_PLAY_RUN4},        // S_PLAY_RUN3
 | 
			
		||||
	{SPR_PLAY,     6,   4, {NULL},   0, 0, S_PLAY_RUN5},        // S_PLAY_RUN4
 | 
			
		||||
	{SPR_PLAY,     7,   4, {NULL},   0, 0, S_PLAY_RUN6},        // S_PLAY_RUN5
 | 
			
		||||
	{SPR_PLAY,     8,   4, {NULL},   0, 0, S_PLAY_RUN7},        // S_PLAY_RUN6
 | 
			
		||||
	{SPR_PLAY,     9,   4, {NULL},   0, 0, S_PLAY_RUN8},        // S_PLAY_RUN7
 | 
			
		||||
	{SPR_PLAY,    10,   4, {NULL},   0, 0, S_PLAY_RUN1},        // S_PLAY_RUN8
 | 
			
		||||
	{SPR_PLAY,    16,   2, {NULL},   0, 0, S_PLAY_SPD2},        // S_PLAY_SPD1
 | 
			
		||||
	{SPR_PLAY,    17,   2, {NULL},   0, 0, S_PLAY_SPD3},        // S_PLAY_SPD2
 | 
			
		||||
	{SPR_PLAY,    18,   2, {NULL},   0, 0, S_PLAY_SPD4},        // S_PLAY_SPD3
 | 
			
		||||
	{SPR_PLAY,    19,   2, {NULL},   0, 0, S_PLAY_SPD1},        // S_PLAY_SPD4
 | 
			
		||||
	{SPR_PLAY,    11,   1, {NULL},   0, 0, S_PLAY_ATK2},        // S_PLAY_ATK1
 | 
			
		||||
	{SPR_PLAY,    12,   1, {NULL},   0, 0, S_PLAY_ATK3},        // S_PLAY_ATK2
 | 
			
		||||
	{SPR_PLAY,    13,   1, {NULL},   0, 0, S_PLAY_ATK4},        // S_PLAY_ATK3
 | 
			
		||||
	{SPR_PLAY,    14,   1, {NULL},   0, 0, S_PLAY_ATK1},        // S_PLAY_ATK4
 | 
			
		||||
	{SPR_PLAY,    15,  -1, {NULL},   0, 0, S_PLAY_FALL1},       // S_PLAY_SPRING
 | 
			
		||||
	{SPR_PLAY,    31,   2, {NULL},   0, 0, S_PLAY_FALL2},       // S_PLAY_FALL1
 | 
			
		||||
	{SPR_PLAY,    32,   2, {NULL},   0, 0, S_PLAY_FALL1},       // S_PLAY_FALL2
 | 
			
		||||
	{SPR_PLAY,    20,   2, {NULL},   0, 0, S_PLAY_ABL2},        // S_PLAY_ABL1
 | 
			
		||||
	{SPR_PLAY,    21,   2, {NULL},   0, 0, S_PLAY_ABL1},        // S_PLAY_ABL2
 | 
			
		||||
	{SPR_PLAY,    22,   6, {NULL},   0, 0, S_PLAY_SPC2},        // S_PLAY_SPC1
 | 
			
		||||
	{SPR_PLAY,    23,   6, {NULL},   0, 0, S_PLAY_SPC3},        // S_PLAY_SPC2
 | 
			
		||||
	{SPR_PLAY,    24,   6, {NULL},   0, 0, S_PLAY_SPC4},        // S_PLAY_SPC3
 | 
			
		||||
	{SPR_PLAY,    25,   6, {NULL},   0, 0, S_PLAY_SPC1},        // S_PLAY_SPC4
 | 
			
		||||
	{SPR_PLAY,    22,  -1, {NULL},   0, 0, S_NULL},             // S_PLAY_CLIMB1
 | 
			
		||||
	{SPR_PLAY,    23,   5, {NULL},   0, 0, S_PLAY_CLIMB3},      // S_PLAY_CLIMB2
 | 
			
		||||
	{SPR_PLAY,    24,   5, {NULL},   0, 0, S_PLAY_CLIMB4},      // S_PLAY_CLIMB3
 | 
			
		||||
	{SPR_PLAY,    25,   5, {NULL},   0, 0, S_PLAY_CLIMB5},      // S_PLAY_CLIMB4
 | 
			
		||||
	{SPR_PLAY,    24,   5, {NULL},   0, 0, S_PLAY_CLIMB2},      // S_PLAY_CLIMB5
 | 
			
		||||
	{SPR_PLAY,    26,  14, {NULL},   0, 0, S_PLAY_RUN1},        // S_PLAY_GASP
 | 
			
		||||
	{SPR_PLAY,    27, 350, {NULL},   0, 0, S_PLAY_FALL1},       // S_PLAY_PAIN
 | 
			
		||||
	{SPR_PLAY,    28,  -1, {A_Fall}, 0, 0, S_NULL},             // S_PLAY_DIE
 | 
			
		||||
	{SPR_PLAY,    29,  12, {NULL},   0, 0, S_PLAY_TEETER2},     // S_PLAY_TEETER1
 | 
			
		||||
	{SPR_PLAY,    30,  12, {NULL},   0, 0, S_PLAY_TEETER1},     // S_PLAY_TEETER2
 | 
			
		||||
	{SPR_PLAY,    33,  -1, {NULL},   0, 0, S_NULL},             // S_PLAY_CARRY
 | 
			
		||||
	{SPR_PLAY,    20,  -1, {NULL},   0, 0, S_PLAY_SUPERSTAND},  // S_PLAY_SUPERSTAND
 | 
			
		||||
	{SPR_PLAY,    20,   7, {NULL},   0, 0, S_PLAY_SUPERWALK2},  // S_PLAY_SUPERWALK1
 | 
			
		||||
	{SPR_PLAY,    21,   7, {NULL},   0, 0, S_PLAY_SUPERWALK1},  // S_PLAY_SUPERWALK2
 | 
			
		||||
	{SPR_PLAY,    22,   7, {NULL},   0, 0, S_PLAY_SUPERFLY2},   // S_PLAY_SUPERFLY1
 | 
			
		||||
	{SPR_PLAY,    23,   7, {NULL},   0, 0, S_PLAY_SUPERFLY1},   // S_PLAY_SUPERFLY2
 | 
			
		||||
	{SPR_PLAY,    24,  12, {NULL},   0, 0, S_PLAY_SUPERTEETER}, // S_PLAY_SUPERTEETER
 | 
			
		||||
	{SPR_PLAY,    25,  -1, {NULL},   0, 0, S_PLAY_SUPERSTAND},  // S_PLAY_SUPERHIT
 | 
			
		||||
	{SPR_PLAY,    36,   4, {NULL},   0, 0, S_PLAY_SUPERTRANS2}, // S_PLAY_SUPERTRANS1
 | 
			
		||||
	{SPR_PLAY,    37,   4, {NULL},   0, 0, S_PLAY_SUPERTRANS3}, // S_PLAY_SUPERTRANS2
 | 
			
		||||
	{SPR_PLAY, 32806,   4, {NULL},   0, 0, S_PLAY_SUPERTRANS4}, // S_PLAY_SUPERTRANS3
 | 
			
		||||
	{SPR_PLAY,    39,   3, {NULL},   0, 0, S_PLAY_SUPERTRANS5}, // S_PLAY_SUPERTRANS4
 | 
			
		||||
	{SPR_PLAY,    40,   3, {NULL},   0, 0, S_PLAY_SUPERTRANS6}, // S_PLAY_SUPERTRANS5
 | 
			
		||||
	{SPR_PLAY,    41,   3, {NULL},   0, 0, S_PLAY_SUPERTRANS7}, // S_PLAY_SUPERTRANS6
 | 
			
		||||
	{SPR_PLAY,    42,   3, {NULL},   0, 0, S_PLAY_SUPERTRANS8}, // S_PLAY_SUPERTRANS7
 | 
			
		||||
	{SPR_PLAY,    43,   3, {NULL},   0, 0, S_PLAY_SUPERTRANS9}, // S_PLAY_SUPERTRANS8
 | 
			
		||||
	{SPR_PLAY,    44,  16, {NULL},   0, 0, S_PLAY_RUN1},        // S_PLAY_SUPERTRANS9
 | 
			
		||||
	*/
 | 
			
		||||
	{SPR_PLAY,   0,   1, {NULL}, 0, 0, S_KART_STILL2},			// S_KART_STILL1		A
 | 
			
		||||
	{SPR_PLAY,   1,   1, {NULL}, 0, 0, S_KART_STILL1},			// S_KART_STILL2		B
 | 
			
		||||
	{SPR_PLAY,   2,   1, {NULL}, 0, 0, S_KART_STILL2_L},		// S_KART_STILL1_L		C
 | 
			
		||||
	{SPR_PLAY,   3,   1, {NULL}, 0, 0, S_KART_STILL1_L},		// S_KART_STILL2_L		D
 | 
			
		||||
	{SPR_PLAY,   4,   1, {NULL}, 0, 0, S_KART_STILL2_R},		// S_KART_STILL1_R		E
 | 
			
		||||
	{SPR_PLAY,   5,   1, {NULL}, 0, 0, S_KART_STILL1_R},		// S_KART_STILL2_R		F
 | 
			
		||||
	{SPR_PLAY,   9,   1, {NULL}, 0, 0, S_KART_SLOW2},			// S_KART_SLOW1			J
 | 
			
		||||
	{SPR_PLAY,   6,   1, {NULL}, 0, 0, S_KART_SLOW1},			// S_KART_SLOW2			G
 | 
			
		||||
	{SPR_PLAY,  10,   1, {NULL}, 0, 0, S_KART_SLOW2_L},			// S_KART_SLOW1_L		K
 | 
			
		||||
	{SPR_PLAY,   7,   1, {NULL}, 0, 0, S_KART_SLOW1_L},			// S_KART_SLOW2_L		H
 | 
			
		||||
	{SPR_PLAY,  11,   1, {NULL}, 0, 0, S_KART_SLOW2_R},			// S_KART_SLOW1_R		L
 | 
			
		||||
	{SPR_PLAY,   8,   1, {NULL}, 0, 0, S_KART_SLOW1_R},			// S_KART_SLOW2_R		I
 | 
			
		||||
	{SPR_PLAY,   0,   1, {NULL}, 0, 0, S_KART_FAST2},			// S_KART_FAST1			A
 | 
			
		||||
	{SPR_PLAY,   9,   1, {NULL}, 0, 0, S_KART_FAST1},			// S_KART_FAST2			J
 | 
			
		||||
	{SPR_PLAY,   2,   1, {NULL}, 0, 0, S_KART_FAST2_L},			// S_KART_FAST1_L		C
 | 
			
		||||
	{SPR_PLAY,  10,   1, {NULL}, 0, 0, S_KART_FAST1_L},			// S_KART_FAST2_L		K
 | 
			
		||||
	{SPR_PLAY,   4,   1, {NULL}, 0, 0, S_KART_FAST2_R},			// S_KART_FAST1_R		E
 | 
			
		||||
	{SPR_PLAY,  11,   1, {NULL}, 0, 0, S_KART_FAST1_R},			// S_KART_FAST2_R		L
 | 
			
		||||
	{SPR_PLAY,  12,   1, {NULL}, 0, 0, S_KART_DRIFT2_L},		// S_KART_DRIFT1_L		M
 | 
			
		||||
	{SPR_PLAY,  13,   1, {NULL}, 0, 0, S_KART_DRIFT1_L},		// S_KART_DRIFT2_L		N
 | 
			
		||||
	{SPR_PLAY,  13,   1, {NULL}, 0, 0, S_KART_DRIFT2_L_OUT},	// S_KART_DRIFT1_L_OUT	N
 | 
			
		||||
	{SPR_PLAY,  14,   1, {NULL}, 0, 0, S_KART_DRIFT1_L_OUT},	// S_KART_DRIFT2_L_OUT	O
 | 
			
		||||
	{SPR_PLAY,  13,   1, {NULL}, 0, 0, S_KART_DRIFT2_L_IN},		// S_KART_DRIFT1_L_IN	N
 | 
			
		||||
	{SPR_PLAY,  15,   1, {NULL}, 0, 0, S_KART_DRIFT3_L_IN},		// S_KART_DRIFT2_L_IN	P
 | 
			
		||||
	{SPR_PLAY,  13,   1, {NULL}, 0, 0, S_KART_DRIFT4_L_IN},		// S_KART_DRIFT3_L_IN	N
 | 
			
		||||
	{SPR_PLAY,  16,   1, {NULL}, 0, 0, S_KART_DRIFT1_L_IN},		// S_KART_DRIFT4_L_IN	Q
 | 
			
		||||
	{SPR_PLAY,  17,   1, {NULL}, 0, 0, S_KART_DRIFT2_R},		// S_KART_DRIFT1_R		R
 | 
			
		||||
	{SPR_PLAY,  18,   1, {NULL}, 0, 0, S_KART_DRIFT1_R},		// S_KART_DRIFT2_R		S
 | 
			
		||||
	{SPR_PLAY,  18,   1, {NULL}, 0, 0, S_KART_DRIFT2_R_OUT},	// S_KART_DRIFT1_R_OUT	S
 | 
			
		||||
	{SPR_PLAY,  19,   1, {NULL}, 0, 0, S_KART_DRIFT1_R_OUT},	// S_KART_DRIFT2_R_OUT	T
 | 
			
		||||
	{SPR_PLAY,  18,   1, {NULL}, 0, 0, S_KART_DRIFT2_R_IN},		// S_KART_DRIFT1_R_IN	S
 | 
			
		||||
	{SPR_PLAY,  20,   1, {NULL}, 0, 0, S_KART_DRIFT3_R_IN},		// S_KART_DRIFT2_R_IN	U
 | 
			
		||||
	{SPR_PLAY,  18,   1, {NULL}, 0, 0, S_KART_DRIFT4_R_IN},		// S_KART_DRIFT3_R_IN	S
 | 
			
		||||
	{SPR_PLAY,  21,   1, {NULL}, 0, 0, S_KART_DRIFT1_R_IN},		// S_KART_DRIFT4_R_IN	V
 | 
			
		||||
	{SPR_PLAY,  22,  -1, {NULL}, 0, 0, S_KART_SPIN},			// S_KART_SPIN			W
 | 
			
		||||
	{SPR_PLAY,  22, 350, {NULL}, 0, 0, S_KART_STILL1},			// S_KART_PAIN			W
 | 
			
		||||
	{SPR_PLAY,  23, 350, {NULL}, 0, 0, S_KART_STILL1},			// S_KART_SQUISH		X
 | 
			
		||||
 | 
			
		||||
	{SPR_NULL, 0, -1, {NULL}, 0, 0, S_OBJPLACE_DUMMY}, //S_OBJPLACE_DUMMY
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -192,7 +147,7 @@ state_t states[NUMSTATES] =
 | 
			
		|||
	{SPR_NULL,  0, 18, {NULL}, 0,  4, S_NULL},       // S_PLAY_ICON3
 | 
			
		||||
 | 
			
		||||
	// Level end sign (uses player sprite)
 | 
			
		||||
	{SPR_PLAY, 18|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_PLAY_SIGN}, // S_PLAY_SIGN
 | 
			
		||||
	{SPR_PLAY, 24|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_PLAY_SIGN}, // S_PLAY_SIGN
 | 
			
		||||
 | 
			
		||||
	// Blue Crawla
 | 
			
		||||
	{SPR_POSS, 0, 5, {A_Look}, 0, 0, S_POSS_STND},   // S_POSS_STND
 | 
			
		||||
| 
						 | 
				
			
			@ -3632,9 +3587,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 | 
			
		|||
 | 
			
		||||
	{           // MT_PLAYER
 | 
			
		||||
		-1,             // doomednum
 | 
			
		||||
		S_KART_STND1,    // spawnstate
 | 
			
		||||
		S_KART_STILL1,  // spawnstate
 | 
			
		||||
		1,              // spawnhealth
 | 
			
		||||
		S_KART_WALK1,    // seestate
 | 
			
		||||
		S_KART_FAST1,   // seestate
 | 
			
		||||
		sfx_None,       // seesound
 | 
			
		||||
		0,              // reactiontime
 | 
			
		||||
		sfx_thok,       // attacksound
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										114
									
								
								src/info.h
									
										
									
									
									
								
							
							
						
						
									
										114
									
								
								src/info.h
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -826,88 +826,52 @@ typedef enum state
 | 
			
		|||
	S_THOK,
 | 
			
		||||
 | 
			
		||||
	// SRB2kart Frames
 | 
			
		||||
	S_KART_STND1,
 | 
			
		||||
	S_KART_STND2,
 | 
			
		||||
	S_KART_STND1_L,
 | 
			
		||||
	S_KART_STND2_L,
 | 
			
		||||
	S_KART_STND1_R,
 | 
			
		||||
	S_KART_STND2_R,
 | 
			
		||||
	S_KART_WALK1,
 | 
			
		||||
	S_KART_WALK2,
 | 
			
		||||
	S_KART_WALK1_L,
 | 
			
		||||
	S_KART_WALK2_L,
 | 
			
		||||
	S_KART_WALK1_R,
 | 
			
		||||
	S_KART_WALK2_R,
 | 
			
		||||
	S_KART_RUN1,
 | 
			
		||||
	S_KART_RUN2,
 | 
			
		||||
	S_KART_RUN1_L,
 | 
			
		||||
	S_KART_RUN2_L,
 | 
			
		||||
	S_KART_RUN1_R,
 | 
			
		||||
	S_KART_RUN2_R,
 | 
			
		||||
	S_KART_STILL1,
 | 
			
		||||
	S_KART_STILL2,
 | 
			
		||||
	S_KART_STILL1_L,
 | 
			
		||||
	S_KART_STILL2_L,
 | 
			
		||||
	S_KART_STILL1_R,
 | 
			
		||||
	S_KART_STILL2_R,
 | 
			
		||||
 | 
			
		||||
	S_KART_SLOW1,
 | 
			
		||||
	S_KART_SLOW2,
 | 
			
		||||
	S_KART_SLOW1_L,
 | 
			
		||||
	S_KART_SLOW2_L,
 | 
			
		||||
	S_KART_SLOW1_R,
 | 
			
		||||
	S_KART_SLOW2_R,
 | 
			
		||||
 | 
			
		||||
	S_KART_FAST1,
 | 
			
		||||
	S_KART_FAST2,
 | 
			
		||||
	S_KART_FAST1_L,
 | 
			
		||||
	S_KART_FAST2_L,
 | 
			
		||||
	S_KART_FAST1_R,
 | 
			
		||||
	S_KART_FAST2_R,
 | 
			
		||||
 | 
			
		||||
	S_KART_DRIFT1_L,
 | 
			
		||||
	S_KART_DRIFT2_L,
 | 
			
		||||
 | 
			
		||||
	S_KART_DRIFT1_L_OUT,
 | 
			
		||||
	S_KART_DRIFT2_L_OUT,
 | 
			
		||||
 | 
			
		||||
	S_KART_DRIFT1_L_IN,
 | 
			
		||||
	S_KART_DRIFT2_L_IN,
 | 
			
		||||
	S_KART_DRIFT3_L_IN,
 | 
			
		||||
	S_KART_DRIFT4_L_IN,
 | 
			
		||||
 | 
			
		||||
	S_KART_DRIFT1_R,
 | 
			
		||||
	S_KART_DRIFT2_R,
 | 
			
		||||
 | 
			
		||||
	S_KART_DRIFT1_R_OUT,
 | 
			
		||||
	S_KART_DRIFT2_R_OUT,
 | 
			
		||||
 | 
			
		||||
	S_KART_DRIFT1_R_IN,
 | 
			
		||||
	S_KART_DRIFT2_R_IN,
 | 
			
		||||
	S_KART_DRIFT3_R_IN,
 | 
			
		||||
	S_KART_DRIFT4_R_IN,
 | 
			
		||||
 | 
			
		||||
	S_KART_SPIN,
 | 
			
		||||
	S_KART_PAIN,
 | 
			
		||||
	S_KART_SQUISH,
 | 
			
		||||
	/*
 | 
			
		||||
	S_PLAY_STND,
 | 
			
		||||
	S_PLAY_TAP1,
 | 
			
		||||
	S_PLAY_TAP2,
 | 
			
		||||
	S_PLAY_RUN1,
 | 
			
		||||
	S_PLAY_RUN2,
 | 
			
		||||
	S_PLAY_RUN3,
 | 
			
		||||
	S_PLAY_RUN4,
 | 
			
		||||
	S_PLAY_RUN5,
 | 
			
		||||
	S_PLAY_RUN6,
 | 
			
		||||
	S_PLAY_RUN7,
 | 
			
		||||
	S_PLAY_RUN8,
 | 
			
		||||
	S_PLAY_SPD1,
 | 
			
		||||
	S_PLAY_SPD2,
 | 
			
		||||
	S_PLAY_SPD3,
 | 
			
		||||
	S_PLAY_SPD4,
 | 
			
		||||
	S_PLAY_ATK1,
 | 
			
		||||
	S_PLAY_ATK2,
 | 
			
		||||
	S_PLAY_ATK3,
 | 
			
		||||
	S_PLAY_ATK4,
 | 
			
		||||
	S_PLAY_SPRING,
 | 
			
		||||
	S_PLAY_FALL1,
 | 
			
		||||
	S_PLAY_FALL2,
 | 
			
		||||
	S_PLAY_ABL1,
 | 
			
		||||
	S_PLAY_ABL2,
 | 
			
		||||
	S_PLAY_SPC1,
 | 
			
		||||
	S_PLAY_SPC2,
 | 
			
		||||
	S_PLAY_SPC3,
 | 
			
		||||
	S_PLAY_SPC4,
 | 
			
		||||
	S_PLAY_CLIMB1,
 | 
			
		||||
	S_PLAY_CLIMB2,
 | 
			
		||||
	S_PLAY_CLIMB3,
 | 
			
		||||
	S_PLAY_CLIMB4,
 | 
			
		||||
	S_PLAY_CLIMB5,
 | 
			
		||||
	S_PLAY_GASP,
 | 
			
		||||
	S_PLAY_PAIN,
 | 
			
		||||
	S_PLAY_DIE,
 | 
			
		||||
	S_PLAY_TEETER1,
 | 
			
		||||
	S_PLAY_TEETER2,
 | 
			
		||||
	S_PLAY_CARRY,
 | 
			
		||||
	S_PLAY_SUPERSTAND,
 | 
			
		||||
	S_PLAY_SUPERWALK1,
 | 
			
		||||
	S_PLAY_SUPERWALK2,
 | 
			
		||||
	S_PLAY_SUPERFLY1,
 | 
			
		||||
	S_PLAY_SUPERFLY2,
 | 
			
		||||
	S_PLAY_SUPERTEETER,
 | 
			
		||||
	S_PLAY_SUPERHIT,
 | 
			
		||||
	S_PLAY_SUPERTRANS1,
 | 
			
		||||
	S_PLAY_SUPERTRANS2,
 | 
			
		||||
	S_PLAY_SUPERTRANS3,
 | 
			
		||||
	S_PLAY_SUPERTRANS4,
 | 
			
		||||
	S_PLAY_SUPERTRANS5,
 | 
			
		||||
	S_PLAY_SUPERTRANS6,
 | 
			
		||||
	S_PLAY_SUPERTRANS7,
 | 
			
		||||
	S_PLAY_SUPERTRANS8,
 | 
			
		||||
	S_PLAY_SUPERTRANS9, // This has special significance in the code. If you add more frames, search for it and make the appropriate changes.
 | 
			
		||||
	*/
 | 
			
		||||
 | 
			
		||||
	// technically the player goes here but it's an infinite tic state
 | 
			
		||||
	S_OBJPLACE_DUMMY,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										216
									
								
								src/k_kart.c
									
										
									
									
									
								
							
							
						
						
									
										216
									
								
								src/k_kart.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2458,49 +2458,183 @@ void K_RespawnChecker(player_t *player)
 | 
			
		|||
*/
 | 
			
		||||
void K_KartMoveAnimation(player_t *player)
 | 
			
		||||
{
 | 
			
		||||
	const INT16 minturn = KART_FULLTURN/8;
 | 
			
		||||
	SINT8 turndir = 0;
 | 
			
		||||
 | 
			
		||||
	const fixed_t fastspeed = (K_GetKartSpeed(player, false) * 17) / 20; // 85%
 | 
			
		||||
	const fixed_t speedthreshold = player->mo->scale / 8;
 | 
			
		||||
 | 
			
		||||
	const boolean onground = P_IsObjectOnGround(player->mo);
 | 
			
		||||
 | 
			
		||||
	ticcmd_t *cmd = &player->cmd;
 | 
			
		||||
	// Standing frames - S_KART_STND1   S_KART_STND1_L   S_KART_STND1_R
 | 
			
		||||
	if (player->speed == 0)
 | 
			
		||||
	const boolean spinningwheels = ((cmd->buttons & BT_ACCELERATE) || (onground && player->speed > 0));
 | 
			
		||||
 | 
			
		||||
	if (cmd->driftturn < -minturn)
 | 
			
		||||
	{
 | 
			
		||||
		if (cmd->driftturn < 0 && !(player->mo->state >= &states[S_KART_STND1_R] && player->mo->state <= &states[S_KART_STND2_R]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_STND1_R);
 | 
			
		||||
		else if (cmd->driftturn > 0 && !(player->mo->state >= &states[S_KART_STND1_L] && player->mo->state <= &states[S_KART_STND2_L]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_STND1_L);
 | 
			
		||||
		else if (cmd->driftturn == 0 && !(player->mo->state >= &states[S_KART_STND1] && player->mo->state <= &states[S_KART_STND2]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_STND1);
 | 
			
		||||
		turndir = -1;
 | 
			
		||||
	}
 | 
			
		||||
	// Drifting Left - S_KART_DRIFT1_L
 | 
			
		||||
	else if (player->kartstuff[k_drift] > 0 && P_IsObjectOnGround(player->mo))
 | 
			
		||||
	else if (cmd->driftturn > minturn)
 | 
			
		||||
	{
 | 
			
		||||
		if (!(player->mo->state >= &states[S_KART_DRIFT1_L] && player->mo->state <= &states[S_KART_DRIFT2_L]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_L);
 | 
			
		||||
		turndir = 1;
 | 
			
		||||
	}
 | 
			
		||||
	// Drifting Right - S_KART_DRIFT1_R
 | 
			
		||||
	else if (player->kartstuff[k_drift] < 0 && P_IsObjectOnGround(player->mo))
 | 
			
		||||
 | 
			
		||||
	if (!onground)
 | 
			
		||||
	{
 | 
			
		||||
		if (!(player->mo->state >= &states[S_KART_DRIFT1_R] && player->mo->state <= &states[S_KART_DRIFT2_R]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_R);
 | 
			
		||||
		// Only use certain frames in the air, to make it look like your tires are spinning fruitlessly!
 | 
			
		||||
 | 
			
		||||
		if (player->kartstuff[k_drift] > 0)
 | 
			
		||||
		{
 | 
			
		||||
			if (!spinningwheels || !(player->mo->state >= &states[S_KART_DRIFT1_L] && player->mo->state <= &states[S_KART_DRIFT2_L]))
 | 
			
		||||
			{
 | 
			
		||||
				// Neutral drift
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_L);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (player->kartstuff[k_drift] > 0)
 | 
			
		||||
		{
 | 
			
		||||
			if (!spinningwheels || !(player->mo->state >= &states[S_KART_DRIFT1_R] && player->mo->state <= &states[S_KART_DRIFT2_R]))
 | 
			
		||||
			{
 | 
			
		||||
				// Neutral drift
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_R);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			if ((turndir == -1)
 | 
			
		||||
			&& (!spinningwheels || !(player->mo->state >= &states[S_KART_FAST1_R] && player->mo->state <= &states[S_KART_FAST2_R])))
 | 
			
		||||
			{
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_FAST2_R);
 | 
			
		||||
			}
 | 
			
		||||
			else if ((turndir == 1)
 | 
			
		||||
			&& (!spinningwheels || !(player->mo->state >= &states[S_KART_FAST1_L] && player->mo->state <= &states[S_KART_FAST2_L])))
 | 
			
		||||
			{
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_FAST2_L);
 | 
			
		||||
			}
 | 
			
		||||
			else if ((turndir == 0)
 | 
			
		||||
			&& (!spinningwheels || !(player->mo->state >= &states[S_KART_FAST1] && player->mo->state <= &states[S_KART_FAST2])))
 | 
			
		||||
			{
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_FAST2);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// Run frames - S_KART_RUN1   S_KART_RUN1_L   S_KART_RUN1_R
 | 
			
		||||
	else if (player->speed > (20*player->mo->scale))
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		if (cmd->driftturn < 0 && !(player->mo->state >= &states[S_KART_RUN1_R] && player->mo->state <= &states[S_KART_RUN2_R]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_RUN1_R);
 | 
			
		||||
		else if (cmd->driftturn > 0 && !(player->mo->state >= &states[S_KART_RUN1_L] && player->mo->state <= &states[S_KART_RUN2_L]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_RUN1_L);
 | 
			
		||||
		else if (cmd->driftturn == 0 && !(player->mo->state >= &states[S_KART_RUN1] && player->mo->state <= &states[S_KART_RUN2]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_RUN1);
 | 
			
		||||
	}
 | 
			
		||||
	// Walk frames - S_KART_WALK1   S_KART_WALK1_L   S_KART_WALK1_R
 | 
			
		||||
	else if (player->speed <= (20*player->mo->scale))
 | 
			
		||||
	{
 | 
			
		||||
		if (cmd->driftturn < 0 && !(player->mo->state >= &states[S_KART_WALK1_R] && player->mo->state <= &states[S_KART_WALK2_R]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_WALK1_R);
 | 
			
		||||
		else if (cmd->driftturn > 0 && !(player->mo->state >= &states[S_KART_WALK1_L] && player->mo->state <= &states[S_KART_WALK2_L]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_WALK1_L);
 | 
			
		||||
		else if (cmd->driftturn == 0 && !(player->mo->state >= &states[S_KART_WALK1] && player->mo->state <= &states[S_KART_WALK2]))
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_WALK1);
 | 
			
		||||
		if (player->kartstuff[k_drift] > 0)
 | 
			
		||||
		{
 | 
			
		||||
			// Drifting LEFT!
 | 
			
		||||
 | 
			
		||||
			if ((turndir == -1)
 | 
			
		||||
			&& !(player->mo->state >= &states[S_KART_DRIFT1_L_OUT] && player->mo->state <= &states[S_KART_DRIFT2_L_OUT]))
 | 
			
		||||
			{
 | 
			
		||||
				// Right -- outwards drift
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_L_OUT);
 | 
			
		||||
			}
 | 
			
		||||
			else if ((turndir == 1)
 | 
			
		||||
			&& !(player->mo->state >= &states[S_KART_DRIFT1_L_IN] && player->mo->state <= &states[S_KART_DRIFT4_L_IN]))
 | 
			
		||||
			{
 | 
			
		||||
				// Left -- inwards drift
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_L_IN);
 | 
			
		||||
			}
 | 
			
		||||
			else if ((turndir == 0)
 | 
			
		||||
			&& !(player->mo->state >= &states[S_KART_DRIFT1_L] && player->mo->state <= &states[S_KART_DRIFT2_L]))
 | 
			
		||||
			{
 | 
			
		||||
				// Neutral drift
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_L);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (player->kartstuff[k_drift] < 0)
 | 
			
		||||
		{
 | 
			
		||||
			// Drifting RIGHT!
 | 
			
		||||
 | 
			
		||||
			if ((turndir == -1)
 | 
			
		||||
			&& !(player->mo->state >= &states[S_KART_DRIFT1_R_IN] && player->mo->state <= &states[S_KART_DRIFT4_R_IN]))
 | 
			
		||||
			{
 | 
			
		||||
				// Right -- inwards drift
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_R_IN);
 | 
			
		||||
			}
 | 
			
		||||
			else if ((turndir == 1)
 | 
			
		||||
			&& !(player->mo->state >= &states[S_KART_DRIFT1_R_OUT] && player->mo->state <= &states[S_KART_DRIFT2_R_OUT]))
 | 
			
		||||
			{
 | 
			
		||||
				// Left -- outwards drift
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_R_OUT);
 | 
			
		||||
			}
 | 
			
		||||
			else if ((turndir == 0)
 | 
			
		||||
			&& !(player->mo->state >= &states[S_KART_DRIFT1_R] && player->mo->state <= &states[S_KART_DRIFT2_R]))
 | 
			
		||||
			{
 | 
			
		||||
				// Neutral drift
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_DRIFT1_R);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			if (player->speed >= fastspeed && player->speed >= (player->lastspeed - speedthreshold))
 | 
			
		||||
			{
 | 
			
		||||
				// Going REAL fast!
 | 
			
		||||
 | 
			
		||||
				if ((turndir == -1)
 | 
			
		||||
				&& !(player->mo->state >= &states[S_KART_FAST1_R] && player->mo->state <= &states[S_KART_FAST2_R]))
 | 
			
		||||
				{
 | 
			
		||||
					P_SetPlayerMobjState(player->mo, S_KART_FAST1_R);
 | 
			
		||||
				}
 | 
			
		||||
				else if ((turndir == 1)
 | 
			
		||||
				&& !(player->mo->state >= &states[S_KART_FAST1_L] && player->mo->state <= &states[S_KART_FAST2_L]))
 | 
			
		||||
				{
 | 
			
		||||
					P_SetPlayerMobjState(player->mo, S_KART_FAST1_L);
 | 
			
		||||
				}
 | 
			
		||||
				else if ((turndir == 0)
 | 
			
		||||
				&& !(player->mo->state >= &states[S_KART_FAST1] && player->mo->state <= &states[S_KART_FAST2]))
 | 
			
		||||
				{
 | 
			
		||||
					P_SetPlayerMobjState(player->mo, S_KART_FAST1);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				if (spinningwheels)
 | 
			
		||||
				{
 | 
			
		||||
					// Drivin' slow.
 | 
			
		||||
 | 
			
		||||
					if ((turndir == -1)
 | 
			
		||||
					&& !(player->mo->state >= &states[S_KART_SLOW1_R] && player->mo->state <= &states[S_KART_SLOW2_R]))
 | 
			
		||||
					{
 | 
			
		||||
						P_SetPlayerMobjState(player->mo, S_KART_SLOW1_R);
 | 
			
		||||
					}
 | 
			
		||||
					else if ((turndir == 1)
 | 
			
		||||
					&& !(player->mo->state >= &states[S_KART_SLOW1_L] && player->mo->state <= &states[S_KART_SLOW2_L]))
 | 
			
		||||
					{
 | 
			
		||||
						P_SetPlayerMobjState(player->mo, S_KART_SLOW1_L);
 | 
			
		||||
					}
 | 
			
		||||
					else if ((turndir == 0)
 | 
			
		||||
					&& !(player->mo->state >= &states[S_KART_SLOW1] && player->mo->state <= &states[S_KART_SLOW2]))
 | 
			
		||||
					{
 | 
			
		||||
						P_SetPlayerMobjState(player->mo, S_KART_SLOW1);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					// Completely still.
 | 
			
		||||
 | 
			
		||||
					if ((turndir == -1)
 | 
			
		||||
					&& !(player->mo->state >= &states[S_KART_STILL1_R] && player->mo->state <= &states[S_KART_STILL2_R]))
 | 
			
		||||
					{
 | 
			
		||||
						P_SetPlayerMobjState(player->mo, S_KART_STILL1_R);
 | 
			
		||||
					}
 | 
			
		||||
					else if ((turndir == 1)
 | 
			
		||||
					&& !(player->mo->state >= &states[S_KART_STILL1_L] && player->mo->state <= &states[S_KART_STILL2_L]))
 | 
			
		||||
					{
 | 
			
		||||
						P_SetPlayerMobjState(player->mo, S_KART_STILL1_L);
 | 
			
		||||
					}
 | 
			
		||||
					else if ((turndir == 0)
 | 
			
		||||
					&& !(player->mo->state >= &states[S_KART_STILL1] && player->mo->state <= &states[S_KART_STILL2]))
 | 
			
		||||
					{
 | 
			
		||||
						P_SetPlayerMobjState(player->mo, S_KART_STILL1);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Update lastspeed value -- we use to display slow driving frames instead of fast driving when slowing down.
 | 
			
		||||
	player->lastspeed = player->speed;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void K_TauntVoiceTimers(player_t *player)
 | 
			
		||||
| 
						 | 
				
			
			@ -5976,6 +6110,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
 | 
			
		|||
					player->mo->z + (player->mo->height/2) + (P_RandomRange(-20,20) * player->mo->scale),
 | 
			
		||||
					MT_FASTLINE);
 | 
			
		||||
 | 
			
		||||
				P_SetTarget(&fast->target, player->mo);
 | 
			
		||||
				fast->angle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
 | 
			
		||||
				fast->momx = 3*player->mo->momx/4;
 | 
			
		||||
				fast->momy = 3*player->mo->momy/4;
 | 
			
		||||
| 
						 | 
				
			
			@ -6895,6 +7030,11 @@ static INT16 K_GetKartDriftValue(player_t *player, fixed_t countersteer)
 | 
			
		|||
		basedrift += (basedrift / greasetics) * player->kartstuff[k_tiregrease];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (player->mo->eflags & (MFE_UNDERWATER|MFE_TOUCHWATER))
 | 
			
		||||
	{
 | 
			
		||||
		countersteer = 3*countersteer/2;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return basedrift + (FixedMul(driftadjust * FRACUNIT, countersteer) / FRACUNIT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -6939,6 +7079,11 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)
 | 
			
		|||
		turnvalue = 5*turnvalue/4;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (player->mo->eflags & (MFE_UNDERWATER|MFE_TOUCHWATER))
 | 
			
		||||
	{
 | 
			
		||||
		turnvalue = 3*turnvalue/2;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	turnvalue = FixedMul(turnvalue * FRACUNIT, weightadjust) / FRACUNIT; // Weight has a small effect on turning
 | 
			
		||||
 | 
			
		||||
	return turnvalue;
 | 
			
		||||
| 
						 | 
				
			
			@ -8056,6 +8201,9 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
 | 
			
		|||
		if (G_BattleGametype() && player->kartstuff[k_bumper] <= 0)
 | 
			
		||||
			player->mo->friction += 1228;
 | 
			
		||||
 | 
			
		||||
		if (player->mo->eflags & (MFE_UNDERWATER|MFE_TOUCHWATER))
 | 
			
		||||
			player->mo->friction += 614;
 | 
			
		||||
 | 
			
		||||
		// Wipeout slowdown
 | 
			
		||||
		if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow])
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,7 @@
 | 
			
		|||
#include "d_player.h"
 | 
			
		||||
#include "g_game.h"
 | 
			
		||||
#include "p_local.h"
 | 
			
		||||
#include "d_clisrv.h"
 | 
			
		||||
 | 
			
		||||
#include "lua_script.h"
 | 
			
		||||
#include "lua_libs.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -387,6 +388,8 @@ static int player_get(lua_State *L)
 | 
			
		|||
	else if (fastcmp(field,"fovadd"))
 | 
			
		||||
		lua_pushfixed(L, plr->fovadd);
 | 
			
		||||
#endif
 | 
			
		||||
	else if (fastcmp(field,"ping"))
 | 
			
		||||
		lua_pushinteger(L, playerpingtable[( plr - players )]);
 | 
			
		||||
	else {
 | 
			
		||||
		lua_getfield(L, LUA_REGISTRYINDEX, LREG_EXTVARS);
 | 
			
		||||
		I_Assert(lua_istable(L, -1));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1308,7 +1308,7 @@ void Command_ObjectPlace_f(void)
 | 
			
		|||
		op_oldmomy = players[0].mo->momy;
 | 
			
		||||
		op_oldmomz = players[0].mo->momz;
 | 
			
		||||
		op_oldheight = players[0].mo->height;
 | 
			
		||||
		op_oldstate = S_KART_STND1; // SRB2kart - was S_PLAY_STND
 | 
			
		||||
		op_oldstate = S_KART_STILL1; // SRB2kart - was S_PLAY_STND
 | 
			
		||||
		op_oldcolor = players[0].mo->color; // save color too in case of super/fireflower
 | 
			
		||||
 | 
			
		||||
		// Remove ALL flags and motion.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8561,6 +8561,7 @@ static void SpawnSPBSpeedLines(mobj_t *actor)
 | 
			
		|||
		actor->z + (actor->height/2) + (P_RandomRange(-24,24) * actor->scale),
 | 
			
		||||
		MT_FASTLINE);
 | 
			
		||||
 | 
			
		||||
	P_SetTarget(&fast->target, actor);
 | 
			
		||||
	fast->angle = R_PointToAngle2(0, 0, actor->momx, actor->momy);
 | 
			
		||||
	fast->color = SKINCOLOR_RED;
 | 
			
		||||
	fast->colorized = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1159,7 +1159,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 | 
			
		|||
 | 
			
		||||
					P_ResetPlayer(player);
 | 
			
		||||
 | 
			
		||||
					P_SetPlayerMobjState(toucher, S_KART_STND1); // SRB2kart - was S_PLAY_FALL1
 | 
			
		||||
					P_SetPlayerMobjState(toucher, S_KART_STILL1); // SRB2kart - was S_PLAY_FALL1
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			return;
 | 
			
		||||
| 
						 | 
				
			
			@ -1455,7 +1455,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 | 
			
		|||
				if (player->pflags & PF_GLIDING)
 | 
			
		||||
				{
 | 
			
		||||
					player->pflags &= ~(PF_GLIDING|PF_JUMPED);
 | 
			
		||||
					P_SetPlayerMobjState(toucher, S_KART_STND1); // SRB2kart - was S_PLAY_FALL1
 | 
			
		||||
					P_SetPlayerMobjState(toucher, S_KART_STILL1); // SRB2kart - was S_PLAY_FALL1
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// Play a bounce sound?
 | 
			
		||||
| 
						 | 
				
			
			@ -1522,7 +1522,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 | 
			
		|||
					if (player->pflags & PF_GLIDING)
 | 
			
		||||
					{
 | 
			
		||||
						player->pflags &= ~(PF_GLIDING|PF_JUMPED);
 | 
			
		||||
						P_SetPlayerMobjState(toucher, S_KART_STND1); // SRB2kart - was S_PLAY_FALL1
 | 
			
		||||
						P_SetPlayerMobjState(toucher, S_KART_STILL1); // SRB2kart - was S_PLAY_FALL1
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					// Play a bounce sound?
 | 
			
		||||
| 
						 | 
				
			
			@ -1578,7 +1578,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 | 
			
		|||
			{
 | 
			
		||||
				player->pflags |= PF_MACESPIN;
 | 
			
		||||
				S_StartSound(toucher, sfx_spin);
 | 
			
		||||
				P_SetPlayerMobjState(toucher, S_KART_STND1); // SRB2kart - was S_PLAY_ATK1
 | 
			
		||||
				P_SetPlayerMobjState(toucher, S_KART_STILL1); // SRB2kart - was S_PLAY_ATK1
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
				player->pflags |= PF_ITEMHANG;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										53
									
								
								src/p_mobj.c
									
										
									
									
									
								
							
							
						
						
									
										53
									
								
								src/p_mobj.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -211,11 +211,11 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
 | 
			
		|||
	// Set animation state
 | 
			
		||||
	// The pflags version of this was just as convoluted.
 | 
			
		||||
	// Rewriten for SRB2kart ... though I don't know what this is.
 | 
			
		||||
	if ((state >= S_KART_STND1 && state <= S_KART_STND2_R) || state == S_KART_SQUISH || state == S_KART_SPIN)
 | 
			
		||||
	if ((state >= S_KART_STILL1 && state <= S_KART_STILL2_R) || state == S_KART_SQUISH || state == S_KART_SPIN)
 | 
			
		||||
		player->panim = PA_IDLE;
 | 
			
		||||
	else if (state >= S_KART_WALK1 && state <= S_KART_WALK2_R)
 | 
			
		||||
	else if (state >= S_KART_SLOW1 && state <= S_KART_SLOW2_R)
 | 
			
		||||
		player->panim = PA_WALK;
 | 
			
		||||
	else if (state >= S_KART_RUN1 && state <= S_KART_DRIFT2_R)
 | 
			
		||||
	else if (state >= S_KART_FAST1 && state <= S_KART_DRIFT2_R)
 | 
			
		||||
		player->panim = PA_RUN;
 | 
			
		||||
	//else if (state >= S_PLAY_ATK1 && state <= S_PLAY_ATK4)
 | 
			
		||||
	//	player->panim = PA_ROLL;
 | 
			
		||||
| 
						 | 
				
			
			@ -1248,29 +1248,45 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	// Less gravity underwater.
 | 
			
		||||
	if (mo->eflags & MFE_UNDERWATER && !goopgravity)
 | 
			
		||||
		gravityadd = gravityadd/3;
 | 
			
		||||
	if ((mo->eflags & MFE_UNDERWATER) && !goopgravity)
 | 
			
		||||
	{
 | 
			
		||||
		if (mo->momz * P_MobjFlip(mo) <= 0)
 | 
			
		||||
		{
 | 
			
		||||
			gravityadd = 4*gravityadd/3;
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			gravityadd = gravityadd/3;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (mo->player)
 | 
			
		||||
	{
 | 
			
		||||
		//if ((mo->player->pflags & PF_GLIDING)
 | 
			
		||||
		//|| (mo->player->charability == CA_FLY && (mo->player->powers[pw_tailsfly]
 | 
			
		||||
		//	|| (mo->state >= &states[S_PLAY_SPC1] && mo->state <= &states[S_PLAY_SPC4]))))
 | 
			
		||||
		//	gravityadd = gravityadd/3; // less gravity while flying/gliding
 | 
			
		||||
		if (mo->player->climbing || (mo->player->pflags & PF_NIGHTSMODE))
 | 
			
		||||
		{
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!(mo->flags2 & MF2_OBJECTFLIP) != !(mo->player->powers[pw_gravityboots])) // negated to turn numeric into bool - would be double negated, but not needed if both would be
 | 
			
		||||
		{
 | 
			
		||||
			gravityadd = -gravityadd;
 | 
			
		||||
			mo->eflags ^= MFE_VERTICALFLIP;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (wasflip == !(mo->eflags & MFE_VERTICALFLIP)) // note!! == ! is not equivalent to != here - turns numeric into bool this way
 | 
			
		||||
		{
 | 
			
		||||
			P_PlayerFlip(mo);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (mo->player->kartstuff[k_pogospring])
 | 
			
		||||
		{
 | 
			
		||||
			gravityadd = (5*gravityadd)/2;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (mo->player->kartstuff[k_waterskip])
 | 
			
		||||
		{
 | 
			
		||||
			gravityadd = (4*gravityadd)/3;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -1278,10 +1294,15 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
 | 
			
		|||
		if (mo->flags2 & MF2_OBJECTFLIP)
 | 
			
		||||
		{
 | 
			
		||||
			mo->eflags |= MFE_VERTICALFLIP;
 | 
			
		||||
 | 
			
		||||
			if (mo->z + mo->height >= mo->ceilingz)
 | 
			
		||||
			{
 | 
			
		||||
				gravityadd = 0;
 | 
			
		||||
			}
 | 
			
		||||
			else if (gravityadd < 0) // Don't sink, only rise up
 | 
			
		||||
				gravityadd *= -1;
 | 
			
		||||
			{
 | 
			
		||||
				gravityadd = -gravityadd;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else //Otherwise, sort through the other exceptions.
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			@ -1316,7 +1337,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
 | 
			
		|||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				case MT_WATERDROP:
 | 
			
		||||
					gravityadd >>= 1;
 | 
			
		||||
					gravityadd /= 2;
 | 
			
		||||
					break;
 | 
			
		||||
				case MT_BANANA:
 | 
			
		||||
				case MT_EGGMANITEM:
 | 
			
		||||
| 
						 | 
				
			
			@ -1341,7 +1362,9 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
 | 
			
		|||
 | 
			
		||||
	// Goop has slower, reversed gravity
 | 
			
		||||
	if (goopgravity)
 | 
			
		||||
	{
 | 
			
		||||
		gravityadd = -gravityadd/5;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	gravityadd = FixedMul(gravityadd, mo->scale);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1445,7 +1468,7 @@ static void P_XYFriction(mobj_t *mo, fixed_t oldx, fixed_t oldy)
 | 
			
		|||
		{
 | 
			
		||||
			// if in a walking frame, stop moving
 | 
			
		||||
			if (player->panim == PA_WALK && player->kartstuff[k_spinouttimer] == 0)
 | 
			
		||||
				P_SetPlayerMobjState(mo, S_KART_STND1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
				P_SetPlayerMobjState(mo, S_KART_STILL1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
			mo->momx = player->cmomx;
 | 
			
		||||
			mo->momy = player->cmomy;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -2735,7 +2758,7 @@ static void P_PlayerZMovement(mobj_t *mo)
 | 
			
		|||
		// Get up if you fell.
 | 
			
		||||
		if ((mo->state == &states[mo->info->painstate] || mo->state == &states[S_KART_SPIN])
 | 
			
		||||
			&& mo->player->kartstuff[k_spinouttimer] == 0 && mo->player->kartstuff[k_squishedtimer] == 0) // SRB2kart
 | 
			
		||||
			P_SetPlayerMobjState(mo, S_KART_STND1);
 | 
			
		||||
			P_SetPlayerMobjState(mo, S_KART_STILL1);
 | 
			
		||||
 | 
			
		||||
#ifdef ESLOPE
 | 
			
		||||
		if (!mo->standingslope && (mo->eflags & MFE_VERTICALFLIP ? tmceilingslope : tmfloorslope)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -3848,7 +3871,7 @@ static void P_PlayerMobjThinker(mobj_t *mobj)
 | 
			
		|||
		{
 | 
			
		||||
			mobj->player->secondjump = 0;
 | 
			
		||||
			mobj->player->powers[pw_tailsfly] = 0;
 | 
			
		||||
			P_SetPlayerMobjState(mobj, S_KART_WALK1); // SRB2kart - was S_PLAY_RUN1
 | 
			
		||||
			P_SetPlayerMobjState(mobj, S_KART_SLOW1); // SRB2kart - was S_PLAY_RUN1
 | 
			
		||||
		}
 | 
			
		||||
		mobj->eflags &= ~MFE_JUSTHITFLOOR;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -11927,7 +11950,7 @@ void P_AfterPlayerSpawn(INT32 playernum)
 | 
			
		|||
	else
 | 
			
		||||
		p->viewz = p->mo->z + p->viewheight;
 | 
			
		||||
 | 
			
		||||
	P_SetPlayerMobjState(p->mo, S_KART_STND1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
	P_SetPlayerMobjState(p->mo, S_KART_STILL1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
	p->pflags &= ~PF_SPINNING;
 | 
			
		||||
 | 
			
		||||
	if (playernum == consoleplayer)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								src/p_spec.c
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								src/p_spec.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2875,7 +2875,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 | 
			
		|||
				mo->player->rmomx = mo->player->rmomy = 1;
 | 
			
		||||
				mo->player->cmomx = mo->player->cmomy = 0;
 | 
			
		||||
				P_ResetPlayer(mo->player);
 | 
			
		||||
				P_SetPlayerMobjState(mo, S_KART_STND1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
				P_SetPlayerMobjState(mo, S_KART_STILL1);
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -4314,8 +4314,8 @@ DoneSection2:
 | 
			
		|||
				player->pflags &= ~PF_GLIDING;
 | 
			
		||||
				player->climbing = 0;
 | 
			
		||||
 | 
			
		||||
				if (!(player->mo->state >= &states[S_KART_RUN1] && player->mo->state <= &states[S_KART_RUN2]))
 | 
			
		||||
					P_SetPlayerMobjState(player->mo, S_KART_RUN1);
 | 
			
		||||
				if (!(player->mo->state >= &states[S_KART_FAST1] && player->mo->state <= &states[S_KART_FAST2]))
 | 
			
		||||
					P_SetPlayerMobjState(player->mo, S_KART_FAST1);
 | 
			
		||||
 | 
			
		||||
				//if (!(player->mo->state >= &states[S_PLAY_ATK1] && player->mo->state <= &states[S_PLAY_ATK4])) // SRB2kart
 | 
			
		||||
				//{
 | 
			
		||||
| 
						 | 
				
			
			@ -4389,8 +4389,8 @@ DoneSection2:
 | 
			
		|||
				player->pflags &= ~PF_SPINNING; // SRB2kart 200117
 | 
			
		||||
				player->pflags &= ~PF_JUMPED;
 | 
			
		||||
 | 
			
		||||
				if (!(player->mo->state >= &states[S_KART_RUN1] && player->mo->state <= &states[S_KART_RUN2]))
 | 
			
		||||
					P_SetPlayerMobjState(player->mo, S_KART_RUN1);
 | 
			
		||||
				if (!(player->mo->state >= &states[S_KART_FAST1] && player->mo->state <= &states[S_KART_FAST2]))
 | 
			
		||||
					P_SetPlayerMobjState(player->mo, S_KART_FAST1);
 | 
			
		||||
 | 
			
		||||
				//if (!(player->mo->state >= &states[S_PLAY_ATK1] && player->mo->state <= &states[S_PLAY_ATK4])) // SRB2kart
 | 
			
		||||
				//{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -100,7 +100,7 @@ void P_MixUp(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z, angle_t angle,
 | 
			
		|||
		thing->player->starpostnum = starpostnum;
 | 
			
		||||
 | 
			
		||||
		P_ResetPlayer(thing->player);
 | 
			
		||||
		P_SetPlayerMobjState(thing, S_KART_STND1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
		P_SetPlayerMobjState(thing, S_KART_STILL1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
 | 
			
		||||
		P_FlashPal(thing->player, PAL_MIXUP, 10);
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -185,7 +185,7 @@ boolean P_Teleport(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z, angle_t angle
 | 
			
		|||
			thing->player->rmomx = thing->player->rmomy = 0;
 | 
			
		||||
			thing->player->speed = 0;
 | 
			
		||||
			P_ResetPlayer(thing->player);
 | 
			
		||||
			P_SetPlayerMobjState(thing, S_KART_STND1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
			P_SetPlayerMobjState(thing, S_KART_STILL1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (flash)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										32
									
								
								src/p_user.c
									
										
									
									
									
								
							
							
						
						
									
										32
									
								
								src/p_user.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2933,7 +2933,7 @@ static void P_DoClimbing(player_t *player)  // SRB2kart - unused
 | 
			
		|||
	if (player->climbing && P_IsObjectOnGround(player->mo))
 | 
			
		||||
	{
 | 
			
		||||
		P_ResetPlayer(player);
 | 
			
		||||
		P_SetPlayerMobjState(player->mo, S_KART_STND1); // SRB2kart
 | 
			
		||||
		P_SetPlayerMobjState(player->mo, S_KART_STILL1); // SRB2kart
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -3639,7 +3639,7 @@ static void P_DoSpinDash(player_t *player, ticcmd_t *cmd) // SRB2kart - unused.
 | 
			
		|||
		{
 | 
			
		||||
			player->skidtime = 0;
 | 
			
		||||
			player->pflags &= ~PF_SPINNING;
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_STND1);
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_STILL1);
 | 
			
		||||
			player->mo->momx = player->cmomx;
 | 
			
		||||
			player->mo->momy = player->cmomy;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -3835,14 +3835,14 @@ static void P_2dMovement(player_t *player)
 | 
			
		|||
			else if (player->exiting)
 | 
			
		||||
			{
 | 
			
		||||
				player->pflags &= ~PF_GLIDING;
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_WALK1); // SRB2kart - was S_PLAY_RUN1
 | 
			
		||||
				P_SetPlayerMobjState(player->mo, S_KART_SLOW1); // SRB2kart - was S_PLAY_RUN1
 | 
			
		||||
				player->skidtime = 0;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if (player->pflags & PF_SPINNING && !player->exiting)
 | 
			
		||||
		{
 | 
			
		||||
			player->pflags &= ~PF_SPINNING;
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_STND1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
			P_SetPlayerMobjState(player->mo, S_KART_STILL1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5831,18 +5831,18 @@ static void P_MovePlayer(player_t *player)
 | 
			
		|||
		// If the player is moving fast enough,
 | 
			
		||||
		// break into a run!
 | 
			
		||||
		if (player->speed >= runspd && player->panim == PA_WALK && !player->skidtime && (onground || player->powers[pw_super]))
 | 
			
		||||
			P_SetPlayerMobjState (player->mo, S_KART_RUN1); // SRB2kart - was S_PLAY_SPD1
 | 
			
		||||
			P_SetPlayerMobjState (player->mo, S_KART_FAST1); // SRB2kart - was S_PLAY_SPD1
 | 
			
		||||
 | 
			
		||||
		// Otherwise, just walk.
 | 
			
		||||
		else if ((player->rmomx || player->rmomy) && player->panim == PA_IDLE)
 | 
			
		||||
			P_SetPlayerMobjState (player->mo, S_KART_WALK1); // SRB2kart - was S_PLAY_RUN1
 | 
			
		||||
			P_SetPlayerMobjState (player->mo, S_KART_SLOW1); // SRB2kart - was S_PLAY_RUN1
 | 
			
		||||
	}
 | 
			
		||||
	*/
 | 
			
		||||
 | 
			
		||||
	// If your running animation is playing, and you're
 | 
			
		||||
	// going too slow, switch back to the walking frames.
 | 
			
		||||
	//if (player->panim == PA_RUN && player->speed < runspd && player->kartstuff[k_spinouttimer] == 0)
 | 
			
		||||
		//P_SetPlayerMobjState(player->mo, S_KART_WALK1); // SRB2kart - was S_PLAY_RUN1
 | 
			
		||||
		//P_SetPlayerMobjState(player->mo, S_KART_SLOW1); // SRB2kart - was S_PLAY_RUN1
 | 
			
		||||
 | 
			
		||||
	// If Springing, but travelling DOWNWARD, change back!
 | 
			
		||||
	//if (player->mo->state == &states[S_PLAY_SPRING] && P_MobjFlip(player->mo)*player->mo->momz < 0)
 | 
			
		||||
| 
						 | 
				
			
			@ -5890,17 +5890,23 @@ static void P_MovePlayer(player_t *player)
 | 
			
		|||
		K_KartMoveAnimation(player);
 | 
			
		||||
 | 
			
		||||
		if (player->kartstuff[k_pogospring])
 | 
			
		||||
		{
 | 
			
		||||
			player->frameangle += ANGLE_22h;
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			player->frameangle = player->mo->angle;
 | 
			
		||||
 | 
			
		||||
			if (player->kartstuff[k_drift] != 0)
 | 
			
		||||
			{
 | 
			
		||||
				INT32 a = (ANGLE_45 / 5) * player->kartstuff[k_drift];
 | 
			
		||||
				player->frameangle += a;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	player->mo->movefactor = FRACUNIT; // We're not going to do any more with this, so let's change it back for the next frame.
 | 
			
		||||
 | 
			
		||||
	// If you are stopped and are still walking, stand still!
 | 
			
		||||
	if (!player->mo->momx && !player->mo->momy && !player->mo->momz && player->panim == PA_WALK)
 | 
			
		||||
		P_SetPlayerMobjState(player->mo, S_KART_STND1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
 | 
			
		||||
	//{ SRB2kart
 | 
			
		||||
 | 
			
		||||
	// Drifting sound
 | 
			
		||||
| 
						 | 
				
			
			@ -5930,7 +5936,7 @@ static void P_MovePlayer(player_t *player)
 | 
			
		|||
		player->jumping = 0;
 | 
			
		||||
		player->secondjump = 0;
 | 
			
		||||
		player->pflags &= ~PF_THOKKED;
 | 
			
		||||
		P_SetPlayerMobjState(player->mo, S_KART_STND1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
		P_SetPlayerMobjState(player->mo, S_KART_STILL1); // SRB2kart - was S_PLAY_STND
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (/*!(player->charability == CA_GLIDEANDCLIMB) ||*/ player->gotflag) // If you can't glide, then why the heck would you be gliding?
 | 
			
		||||
| 
						 | 
				
			
			@ -8701,7 +8707,7 @@ void P_PlayerThink(player_t *player)
 | 
			
		|||
 | 
			
		||||
	if (player->powers[pw_ingoop])
 | 
			
		||||
	{
 | 
			
		||||
		if (player->mo->state == &states[S_KART_STND1]) // SRB2kart - was S_PLAY_STND
 | 
			
		||||
		if (player->mo->state == &states[S_KART_STILL1]) // SRB2kart - was S_PLAY_STND
 | 
			
		||||
			player->mo->tics = 2;
 | 
			
		||||
 | 
			
		||||
		player->powers[pw_ingoop]--;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1147,7 +1147,7 @@ void R_SetupFrame(player_t *player, boolean skybox)
 | 
			
		|||
		aimingangle = player->aiming;
 | 
			
		||||
		viewangle = viewmobj->angle;
 | 
			
		||||
 | 
			
		||||
		if (/*!demo.playback && */player->playerstate != PST_DEAD)
 | 
			
		||||
		if (!demo.playback && player->playerstate != PST_DEAD)
 | 
			
		||||
		{
 | 
			
		||||
			if (player == &players[consoleplayer])
 | 
			
		||||
			{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1173,7 +1173,10 @@ void I_StartupSound(void)
 | 
			
		|||
	const char *sdrv_name = NULL;
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef HAVE_MIXER
 | 
			
		||||
	midi_disabled = digital_disabled = true;
 | 
			
		||||
#ifndef NO_MIDI
 | 
			
		||||
	midi_disabled = 
 | 
			
		||||
#endif
 | 
			
		||||
	digital_disabled = true;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	memset(channels, 0, sizeof (channels)); //Alam: Clean it
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1797,10 +1797,12 @@ static void ST_doItemFinderIconsAndSound(void) // SRB2kart - unused.
 | 
			
		|||
//
 | 
			
		||||
static void ST_overlayDrawer(void)
 | 
			
		||||
{
 | 
			
		||||
	/* SRB2kart doesn't need this stuff
 | 
			
		||||
	//hu_showscores = auto hide score/time/rings when tab rankings are shown
 | 
			
		||||
	if (!(hu_showscores && (netgame || multiplayer)))
 | 
			
		||||
	{
 | 
			
		||||
		K_drawKartHUD();
 | 
			
		||||
 | 
			
		||||
	/* SRB2kart doesn't need this stuff
 | 
			
		||||
		if (maptol & TOL_NIGHTS)
 | 
			
		||||
			ST_drawNiGHTSHUD();
 | 
			
		||||
		else
 | 
			
		||||
| 
						 | 
				
			
			@ -1824,8 +1826,8 @@ static void ST_overlayDrawer(void)
 | 
			
		|||
			)
 | 
			
		||||
				ST_drawLives();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*/
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// GAME OVER pic
 | 
			
		||||
	/*if (G_GametypeUsesLives() && stplyr->lives <= 0 && !(hu_showscores && (netgame || multiplayer)))
 | 
			
		||||
| 
						 | 
				
			
			@ -1845,8 +1847,6 @@ static void ST_overlayDrawer(void)
 | 
			
		|||
		// Countdown timer for Race Mode
 | 
			
		||||
		// ...moved to k_kart.c so we can take advantage of the LAPS_Y value
 | 
			
		||||
 | 
			
		||||
		K_drawKartHUD();
 | 
			
		||||
 | 
			
		||||
		/* SRB2kart doesn't need this stuff, I think
 | 
			
		||||
		// If you are in overtime, put a big honkin' flashin' message on the screen.
 | 
			
		||||
		if (G_BattleGametype() && cv_overtime.value
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue