mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-03-22 10:51:54 +00:00
Redid control names, some item code, start of drift shenanigans
This commit is contained in:
parent
d631d0ef04
commit
3a3180ce05
25 changed files with 3561 additions and 335 deletions
|
@ -191,7 +191,7 @@ void B_KeysToTiccmd(mobj_t *mo, ticcmd_t *cmd, boolean forward, boolean backward
|
|||
if (jump)
|
||||
cmd->buttons |= BT_JUMP;
|
||||
if (spin)
|
||||
cmd->buttons |= BT_USE;
|
||||
cmd->buttons |= BT_BRAKE;
|
||||
}
|
||||
|
||||
void B_MoveBlocked(player_t *player)
|
||||
|
|
|
@ -824,6 +824,8 @@ static void IdentifyVersion(void)
|
|||
|
||||
// SRB2kart - Add graphics (temp)
|
||||
D_AddFile(va(pandf,srb2waddir,"AllKartGraphics.wad"));
|
||||
D_AddFile(va(pandf,srb2waddir,"AllKartChars.wad"));
|
||||
D_AddFile(va(pandf,srb2waddir,"AllKartSounds.wad"));
|
||||
|
||||
#if !defined (HAVE_SDL) || defined (HAVE_MIXER)
|
||||
{
|
||||
|
|
|
@ -234,6 +234,7 @@ typedef enum
|
|||
typedef enum
|
||||
{
|
||||
// Basic gameplay things
|
||||
k_introcam, // Something to do with the map intro
|
||||
k_position, // Used for Kart positions, mostly for deterministic stuff
|
||||
k_playerahead, // Is someone ahead of me or not?
|
||||
k_oldposition, // Used for taunting when you pass someone
|
||||
|
@ -252,11 +253,11 @@ typedef enum
|
|||
|
||||
k_drift, // Drifting Left or Right, plus a bigger counter = sharper turn
|
||||
k_driftcharge, // Charge your drift so you can release a burst of speed
|
||||
k_boostcharge, // Charge-up for boosting at the start of the race, or when Lakitu drops you
|
||||
k_jmp, // In Mario Kart, letting go of the jump button stops the drift
|
||||
k_lakitu, // > 0 = Lakitu fishing, < 0 = Lakitu lap counter (was "player->airtime") // NOTE: Check for ->lakitu, replace with this
|
||||
|
||||
k_itemroulette, // Used for the roulette when deciding what item to give you (was "pw_kartitem")
|
||||
k_itemslot, // If you have X item, and kartitem chose X too, save it
|
||||
k_itemclose, // Used to animate the item window closing (was "pw_psychic")
|
||||
|
||||
// Some items use timers for their duration or effects
|
||||
|
|
|
@ -27,16 +27,16 @@ typedef enum
|
|||
// First 4 bits are weapon change info, DO NOT USE!
|
||||
BT_WEAPONMASK = 0x0F, //our first four bits.
|
||||
|
||||
BT_WEAPONNEXT = 1<<4,
|
||||
BT_WEAPONPREV = 1<<5,
|
||||
BT_DRIFTLEFT = 1<<4, // Drift Left // BT_WEAPONNEXT
|
||||
BT_DRIFTRIGHT = 1<<5, // Drift Right // BT_WEAPONPREV
|
||||
|
||||
BT_ATTACK = 1<<6, // shoot rings
|
||||
BT_USE = 1<<7, // spin
|
||||
BT_CAMLEFT = 1<<8, // turn camera left
|
||||
BT_CAMRIGHT = 1<<9, // turn camera right
|
||||
BT_TOSSFLAG = 1<<10,
|
||||
BT_ATTACK = 1<<6, // use kart item // SRB2kart
|
||||
BT_BRAKE = 1<<7, // brake // BT_USE
|
||||
BT_FORWARD = 1<<8, // toss item forward // BT_CAMLEFT
|
||||
BT_BACKWARD = 1<<9, // drop item behind // BT_CAMRIGHT
|
||||
BT_SPECTATE = 1<<10, // toggle spectate // BT_TOSSFLAG
|
||||
BT_JUMP = 1<<11,
|
||||
BT_FIRENORMAL = 1<<12, // Fire a normal ring no matter what
|
||||
BT_ACCELERATE = 1<<12, // Accelerate // BT_FIRENORMAL
|
||||
|
||||
BT_CUSTOM1 = 1<<13,
|
||||
BT_CUSTOM2 = 1<<14,
|
||||
|
|
|
@ -1698,6 +1698,7 @@ static actionpointer_t actionpointers[] =
|
|||
{{A_DropMine}, "A_DROPMINE"},
|
||||
{{A_FishJump}, "A_FISHJUMP"},
|
||||
{{A_ThrownRing}, "A_THROWNRING"},
|
||||
{{A_GrenadeRing}, "A_GRENADERING"}, // SRB2kart
|
||||
{{A_SetSolidSteam}, "A_SETSOLIDSTEAM"},
|
||||
{{A_UnsetSolidSteam}, "A_UNSETSOLIDSTEAM"},
|
||||
{{A_SignPlayer}, "A_SIGNPLAYER"},
|
||||
|
@ -1800,6 +1801,8 @@ static actionpointer_t actionpointers[] =
|
|||
{{A_DualAction}, "A_DUALACTION"},
|
||||
{{A_RemoteAction}, "A_REMOTEACTION"},
|
||||
{{A_ToggleFlameJet}, "A_TOGGLEFLAMEJET"},
|
||||
{{A_RedShellChase}, "A_REDSHELLCHASE"}, // SRB2kart
|
||||
{{A_BobombExplode}, "A_BOBOMBEXPLODE"}, // SRB2kart
|
||||
{{A_OrbitNights}, "A_ORBITNIGHTS"},
|
||||
{{A_GhostMe}, "A_GHOSTME"},
|
||||
{{A_SetObjectState}, "A_SETOBJECTSTATE"},
|
||||
|
@ -7379,17 +7382,17 @@ struct {
|
|||
{"DI_SOUTHEAST",DI_SOUTHEAST},
|
||||
{"NUMDIRS",NUMDIRS},
|
||||
|
||||
// Buttons (ticcmd_t)
|
||||
// Buttons (ticcmd_t) // SRB2kart
|
||||
{"BT_WEAPONMASK",BT_WEAPONMASK}, //our first four bits.
|
||||
{"BT_WEAPONNEXT",BT_WEAPONNEXT},
|
||||
{"BT_WEAPONPREV",BT_WEAPONPREV},
|
||||
{"BT_DRIFTLEFT",BT_DRIFTLEFT},
|
||||
{"BT_DRIFTRIGHT",BT_DRIFTRIGHT},
|
||||
{"BT_ATTACK",BT_ATTACK}, // shoot rings
|
||||
{"BT_USE",BT_USE}, // spin
|
||||
{"BT_CAMLEFT",BT_CAMLEFT}, // turn camera left
|
||||
{"BT_CAMRIGHT",BT_CAMRIGHT}, // turn camera right
|
||||
{"BT_TOSSFLAG",BT_TOSSFLAG},
|
||||
{"BT_BRAKE",BT_BRAKE}, // brake
|
||||
{"BT_FORWARD",BT_FORWARD}, // turn camera left
|
||||
{"BT_BACKWARD",BT_BACKWARD}, // turn camera right
|
||||
{"BT_SPECTATE",BT_SPECTATE},
|
||||
{"BT_JUMP",BT_JUMP},
|
||||
{"BT_FIRENORMAL",BT_FIRENORMAL}, // Fire a normal ring no matter what
|
||||
{"BT_ACCELERATE",BT_ACCELERATE}, // Fire a normal ring no matter what
|
||||
{"BT_CUSTOM1",BT_CUSTOM1}, // Lua customizable
|
||||
{"BT_CUSTOM2",BT_CUSTOM2}, // Lua customizable
|
||||
{"BT_CUSTOM3",BT_CUSTOM3}, // Lua customizable
|
||||
|
|
|
@ -997,7 +997,7 @@ static const char *credits[] = {
|
|||
"",
|
||||
"\1Sprite Artists",
|
||||
"Odi \"Iceman404\" Atunzu",
|
||||
"Victor \"VAdaPEGA\" Ara\x1Fjo", // Araújo -- sorry for our limited font! D:
|
||||
"Victor \"VAdaPEGA\" Ara\x1Fjo", // Araújo -- sorry for our limited font! D:
|
||||
"Jim \"MotorRoach\" DeMello",
|
||||
"Desmond \"Blade\" DesJardins",
|
||||
"Sherman \"CoatRack\" DesJardins",
|
||||
|
@ -1847,7 +1847,7 @@ void F_CutsceneTicker(void)
|
|||
if (netgame && i != serverplayer && i != adminplayer)
|
||||
continue;
|
||||
|
||||
if (players[i].cmd.buttons & BT_USE)
|
||||
if (players[i].cmd.buttons & BT_BRAKE || players[i].cmd.buttons & BT_ACCELERATE) // SRB2kart
|
||||
{
|
||||
keypressed = false;
|
||||
cutscene_boostspeed = 1;
|
||||
|
|
112
src/g_game.c
112
src/g_game.c
|
@ -947,7 +947,7 @@ angle_t localangle, localangle2;
|
|||
|
||||
static fixed_t forwardmove[2] = {25<<FRACBITS>>16, 50<<FRACBITS>>16};
|
||||
static fixed_t sidemove[2] = {25<<FRACBITS>>16, 50<<FRACBITS>>16}; // faster!
|
||||
static fixed_t angleturn[3] = {640, 1280, 320}; // + slow turn
|
||||
static fixed_t angleturn[3] = {400/NEWTICRATERATIO, 800/NEWTICRATERATIO, 200/NEWTICRATERATIO}; // + slow turn
|
||||
|
||||
void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
||||
{
|
||||
|
@ -1030,9 +1030,9 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (turnright)
|
||||
if (turnright && !(turnleft))
|
||||
cmd->angleturn = (INT16)(cmd->angleturn - angleturn[tspeed]);
|
||||
else if (turnleft)
|
||||
else if (turnleft && !(turnright))
|
||||
cmd->angleturn = (INT16)(cmd->angleturn + angleturn[tspeed]);
|
||||
|
||||
if (analogjoystickmove && axis != 0)
|
||||
|
@ -1073,10 +1073,12 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
|||
if (PLAYER1INPUTDOWN(gc_strafeleft))
|
||||
side -= sidemove[speed];
|
||||
|
||||
if (PLAYER1INPUTDOWN(gc_weaponnext))
|
||||
/* // SRB2kart - these aren't used in kart
|
||||
if (PLAYER1INPUTDOWN(gc_driftleft))
|
||||
cmd->buttons |= BT_WEAPONNEXT; // Next Weapon
|
||||
if (PLAYER1INPUTDOWN(gc_weaponprev))
|
||||
if (PLAYER1INPUTDOWN(gc_driftright))
|
||||
cmd->buttons |= BT_WEAPONPREV; // Previous Weapon
|
||||
*/
|
||||
|
||||
#if NUM_WEAPONS > 10
|
||||
"Add extra inputs to g_input.h/gamecontrols_e"
|
||||
|
@ -1097,11 +1099,11 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
|||
|
||||
// fire normal with any button/key
|
||||
axis = JoyAxis(AXISFIRENORMAL);
|
||||
if (PLAYER1INPUTDOWN(gc_firenormal) || (cv_usejoystick.value && axis > 0))
|
||||
cmd->buttons |= BT_FIRENORMAL;
|
||||
if (PLAYER1INPUTDOWN(gc_accelerate) || (cv_usejoystick.value && axis > 0))
|
||||
cmd->buttons |= BT_ACCELERATE;
|
||||
|
||||
if (PLAYER1INPUTDOWN(gc_tossflag))
|
||||
cmd->buttons |= BT_TOSSFLAG;
|
||||
if (PLAYER1INPUTDOWN(gc_spectate))
|
||||
cmd->buttons |= BT_SPECTATE;
|
||||
|
||||
// Lua scriptable buttons
|
||||
if (PLAYER1INPUTDOWN(gc_custom1))
|
||||
|
@ -1112,22 +1114,22 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
|||
cmd->buttons |= BT_CUSTOM3;
|
||||
|
||||
// use with any button/key
|
||||
if (PLAYER1INPUTDOWN(gc_use))
|
||||
cmd->buttons |= BT_USE;
|
||||
if (PLAYER1INPUTDOWN(gc_brake))
|
||||
cmd->buttons |= BT_BRAKE;
|
||||
|
||||
// Camera Controls
|
||||
if (cv_debug || cv_analog.value || demoplayback || objectplacing || player->pflags & PF_NIGHTSMODE)
|
||||
{
|
||||
if (PLAYER1INPUTDOWN(gc_camleft))
|
||||
cmd->buttons |= BT_CAMLEFT;
|
||||
if (PLAYER1INPUTDOWN(gc_camright))
|
||||
cmd->buttons |= BT_CAMRIGHT;
|
||||
if (PLAYER1INPUTDOWN(gc_aimforward))
|
||||
cmd->buttons |= BT_FORWARD;
|
||||
if (PLAYER1INPUTDOWN(gc_aimbackward))
|
||||
cmd->buttons |= BT_BACKWARD;
|
||||
}
|
||||
|
||||
if (PLAYER1INPUTDOWN(gc_camreset))
|
||||
if (PLAYER1INPUTDOWN(gc_lookback))
|
||||
{
|
||||
if (camera.chase && !resetdown)
|
||||
P_ResetCamera(&players[displayplayer], &camera);
|
||||
P_ResetCamera(&players[displayplayer], &camera); // TODO: Replace with a camflip
|
||||
resetdown = true;
|
||||
}
|
||||
else
|
||||
|
@ -1222,6 +1224,20 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
|||
cmd->forwardmove = (SINT8)(cmd->forwardmove + forward);
|
||||
cmd->sidemove = (SINT8)(cmd->sidemove + side);
|
||||
|
||||
//{ SRB2kart - Drift support
|
||||
axis = JoyAxis(AXISTURN);
|
||||
|
||||
if (turnleft || axis < 0) // Drifting to the left
|
||||
cmd->buttons |= BT_DRIFTLEFT;
|
||||
else
|
||||
cmd->buttons &= ~BT_DRIFTLEFT;
|
||||
|
||||
if (turnright || axis > 0) // Drifting to the right
|
||||
cmd->buttons |= BT_DRIFTRIGHT;
|
||||
else
|
||||
cmd->buttons &= ~BT_DRIFTRIGHT;
|
||||
//}
|
||||
|
||||
if (cv_analog.value) {
|
||||
cmd->angleturn = (INT16)(thiscam->angle >> 16);
|
||||
if (player->awayviewtics)
|
||||
|
@ -1229,7 +1245,15 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
|||
}
|
||||
else
|
||||
{
|
||||
localangle += (cmd->angleturn<<16);
|
||||
// SRB2kart
|
||||
INT32 turnspeed;
|
||||
|
||||
if (players[consoleplayer].mo && (players[consoleplayer].kartstuff[k_introcam] > 1 || players[consoleplayer].speed == 0))
|
||||
turnspeed = 0;
|
||||
else
|
||||
turnspeed = 16;
|
||||
|
||||
localangle += (cmd->angleturn<<turnspeed); // << 16
|
||||
cmd->angleturn = (INT16)(localangle >> 16);
|
||||
}
|
||||
|
||||
|
@ -1364,10 +1388,12 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
|
|||
if (PLAYER2INPUTDOWN(gc_strafeleft))
|
||||
side -= sidemove[speed];
|
||||
|
||||
if (PLAYER2INPUTDOWN(gc_weaponnext))
|
||||
/* // SRB2kart - these aren't used in kart
|
||||
if (PLAYER2INPUTDOWN(gc_driftleft))
|
||||
cmd->buttons |= BT_WEAPONNEXT; // Next Weapon
|
||||
if (PLAYER2INPUTDOWN(gc_weaponprev))
|
||||
if (PLAYER2INPUTDOWN(gc_driftright))
|
||||
cmd->buttons |= BT_WEAPONPREV; // Previous Weapon
|
||||
*/
|
||||
|
||||
//use the four avaliable bits to determine the weapon.
|
||||
cmd->buttons &= ~BT_WEAPONMASK;
|
||||
|
@ -1385,11 +1411,11 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
|
|||
|
||||
// fire normal with any button/key
|
||||
axis = Joy2Axis(AXISFIRENORMAL);
|
||||
if (PLAYER2INPUTDOWN(gc_firenormal) || (cv_usejoystick2.value && axis > 0))
|
||||
cmd->buttons |= BT_FIRENORMAL;
|
||||
if (PLAYER2INPUTDOWN(gc_accelerate) || (cv_usejoystick2.value && axis > 0))
|
||||
cmd->buttons |= BT_ACCELERATE;
|
||||
|
||||
if (PLAYER2INPUTDOWN(gc_tossflag))
|
||||
cmd->buttons |= BT_TOSSFLAG;
|
||||
if (PLAYER2INPUTDOWN(gc_spectate))
|
||||
cmd->buttons |= BT_SPECTATE;
|
||||
|
||||
// Lua scriptable buttons
|
||||
if (PLAYER2INPUTDOWN(gc_custom1))
|
||||
|
@ -1400,22 +1426,22 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
|
|||
cmd->buttons |= BT_CUSTOM3;
|
||||
|
||||
// use with any button/key
|
||||
if (PLAYER2INPUTDOWN(gc_use))
|
||||
cmd->buttons |= BT_USE;
|
||||
if (PLAYER2INPUTDOWN(gc_brake))
|
||||
cmd->buttons |= BT_BRAKE;
|
||||
|
||||
// Camera Controls
|
||||
if (cv_debug || cv_analog2.value || player->pflags & PF_NIGHTSMODE)
|
||||
{
|
||||
if (PLAYER2INPUTDOWN(gc_camleft))
|
||||
cmd->buttons |= BT_CAMLEFT;
|
||||
if (PLAYER2INPUTDOWN(gc_camright))
|
||||
cmd->buttons |= BT_CAMRIGHT;
|
||||
if (PLAYER2INPUTDOWN(gc_aimforward))
|
||||
cmd->buttons |= BT_FORWARD;
|
||||
if (PLAYER2INPUTDOWN(gc_aimbackward))
|
||||
cmd->buttons |= BT_BACKWARD;
|
||||
}
|
||||
|
||||
if (PLAYER2INPUTDOWN(gc_camreset))
|
||||
if (PLAYER2INPUTDOWN(gc_lookback))
|
||||
{
|
||||
if (camera2.chase && !resetdown)
|
||||
P_ResetCamera(&players[secondarydisplayplayer], &camera2);
|
||||
P_ResetCamera(&players[secondarydisplayplayer], &camera2); // TODO: Replace with a camflip
|
||||
resetdown = true;
|
||||
}
|
||||
else
|
||||
|
@ -1509,6 +1535,26 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
|
|||
cmd->forwardmove = (SINT8)(cmd->forwardmove + forward);
|
||||
cmd->sidemove = (SINT8)(cmd->sidemove + side);
|
||||
|
||||
//{ SRB2kart - Drift support
|
||||
axis = Joy2Axis(AXISTURN);
|
||||
|
||||
if (turnleft || axis < 0) // Drifting to the left
|
||||
cmd->buttons |= BT_DRIFTLEFT;
|
||||
else
|
||||
cmd->buttons &= ~BT_DRIFTLEFT;
|
||||
|
||||
if (turnright || axis > 0) // Drifting to the right
|
||||
cmd->buttons |= BT_DRIFTRIGHT;
|
||||
else
|
||||
cmd->buttons &= ~BT_DRIFTRIGHT;
|
||||
|
||||
if (turnright && turnleft)
|
||||
{
|
||||
cmd->buttons &= ~BT_DRIFTLEFT;
|
||||
cmd->buttons &= ~BT_DRIFTRIGHT;
|
||||
}
|
||||
//}
|
||||
|
||||
if (player->bot == 1) {
|
||||
if (!player->powers[pw_tailsfly] && (cmd->forwardmove || cmd->sidemove || cmd->buttons))
|
||||
{
|
||||
|
@ -3784,7 +3830,7 @@ void G_ReadDemoTiccmd(ticcmd_t *cmd, INT32 playernum)
|
|||
if (ziptic & ZT_ANGLE)
|
||||
oldcmd.angleturn = READINT16(demo_p);
|
||||
if (ziptic & ZT_BUTTONS)
|
||||
oldcmd.buttons = (oldcmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) | (READUINT16(demo_p) & ~(BT_CAMLEFT|BT_CAMRIGHT));
|
||||
oldcmd.buttons = (oldcmd.buttons & (BT_FORWARD|BT_BACKWARD)) | (READUINT16(demo_p) & ~(BT_FORWARD|BT_BACKWARD));
|
||||
if (ziptic & ZT_AIMING)
|
||||
oldcmd.aiming = READINT16(demo_p);
|
||||
|
||||
|
|
100
src/g_input.c
100
src/g_input.c
|
@ -1064,19 +1064,19 @@ void G_Controldefault(void)
|
|||
gamecontrol[gc_turnleft ][1] = KEY_LEFTARROW;
|
||||
gamecontrol[gc_turnright ][0] = KEY_HAT1+3; //Right
|
||||
gamecontrol[gc_turnright ][1] = KEY_RIGHTARROW;
|
||||
gamecontrol[gc_weaponnext ][0] = ']';
|
||||
gamecontrol[gc_weaponprev ][0] = '[';
|
||||
gamecontrol[gc_driftleft ][0] = ']';
|
||||
gamecontrol[gc_driftright ][0] = '[';
|
||||
gamecontrol[gc_fire ][0] = KEY_JOY1+6; //X
|
||||
gamecontrol[gc_fire ][1] = KEY_RCTRL;
|
||||
gamecontrol[gc_firenormal ][0] = KEY_JOY1+5; //Y
|
||||
gamecontrol[gc_firenormal ][1] = ';';
|
||||
gamecontrol[gc_tossflag ][0] = '\'';
|
||||
gamecontrol[gc_use ][0] = KEY_JOY1+1; //B
|
||||
gamecontrol[gc_use ][1] = '.';
|
||||
gamecontrol[gc_accelerate ][0] = KEY_JOY1+5; //Y
|
||||
gamecontrol[gc_accelerate ][1] = ';';
|
||||
gamecontrol[gc_spectate ][0] = '\'';
|
||||
gamecontrol[gc_brake ][0] = KEY_JOY1+1; //B
|
||||
gamecontrol[gc_brake ][1] = '.';
|
||||
gamecontrol[gc_camtoggle ][1] = ',';
|
||||
gamecontrol[gc_camleft ][0] = 'o';
|
||||
gamecontrol[gc_camright ][0] = 'p';
|
||||
gamecontrol[gc_camreset ][0] = 'c';
|
||||
gamecontrol[gc_aimforward ][0] = 'o';
|
||||
gamecontrol[gc_aimbackward][0] = 'p';
|
||||
gamecontrol[gc_lookback ][0] = 'c';
|
||||
gamecontrol[gc_lookup ][0] = KEY_PGUP;
|
||||
gamecontrol[gc_lookdown ][0] = KEY_PGDN;
|
||||
gamecontrol[gc_centerview ][0] = KEY_END;
|
||||
|
@ -1097,11 +1097,11 @@ void G_Controldefault(void)
|
|||
gamecontrolbis[gc_turnleft ][1] = 'a';
|
||||
gamecontrolbis[gc_turnright ][0] = KEY_2HAT1+3;
|
||||
gamecontrolbis[gc_turnright ][1] = 'd';
|
||||
gamecontrolbis[gc_weaponnext][0] = 't';
|
||||
gamecontrolbis[gc_weaponprev][0] = 'r';
|
||||
gamecontrolbis[gc_driftleft ][0] = 't';
|
||||
gamecontrolbis[gc_driftright][0] = 'r';
|
||||
gamecontrolbis[gc_fire ][0] = KEY_2JOY1+6; //X
|
||||
gamecontrolbis[gc_firenormal][0] = KEY_2JOY1+5; //Y
|
||||
gamecontrolbis[gc_use ][0] = KEY_2JOY1+1; //B
|
||||
gamecontrolbis[gc_accelerate][0] = KEY_2JOY1+5; //Y
|
||||
gamecontrolbis[gc_brake ][0] = KEY_2JOY1+1; //B
|
||||
gamecontrolbis[gc_jump ][0] = KEY_2JOY1+2; //A
|
||||
//gamecontrolbis[gc_straferight][0] = 'x';
|
||||
//gamecontrolbis[gc_strafeleft ][0] = 'z';
|
||||
|
@ -1115,10 +1115,10 @@ void G_Controldefault(void)
|
|||
gamecontrol[gc_turnright ][0] = KEY_HAT1+3; // Right
|
||||
gamecontrol[gc_strafeleft ][0] = KEY_JOY1+4; // L
|
||||
gamecontrol[gc_straferight][0] = KEY_JOY1+5; // R
|
||||
gamecontrol[gc_tossflag ][0] = KEY_JOY1+0; // Triangle
|
||||
gamecontrol[gc_use ][0] = KEY_JOY1+1; // Circle
|
||||
gamecontrol[gc_spectate ][0] = KEY_JOY1+0; // Triangle
|
||||
gamecontrol[gc_brake ][0] = KEY_JOY1+1; // Circle
|
||||
gamecontrol[gc_camtoggle ][0] = KEY_JOY1+6; // Select
|
||||
gamecontrol[gc_camreset ][0] = KEY_JOY1+3; // Square
|
||||
gamecontrol[gc_lookback ][0] = KEY_JOY1+3; // Square
|
||||
gamecontrol[gc_centerview ][0] = KEY_JOY1+9; // Hold
|
||||
gamecontrol[gc_pause ][0] = KEY_JOY1+8; // Start
|
||||
gamecontrol[gc_jump ][0] = KEY_JOY1+2; // Cross
|
||||
|
@ -1129,7 +1129,7 @@ void G_Controldefault(void)
|
|||
gamecontrol[gc_fire ][0] = KEY_JOY1+0; //A
|
||||
gamecontrol[gc_forward ][0] = KEY_JOY1+1; //Y
|
||||
gamecontrol[gc_jump ][0] = KEY_JOY1+2; //B
|
||||
gamecontrol[gc_use ][0] = KEY_JOY1+3; //X
|
||||
gamecontrol[gc_brake ][0] = KEY_JOY1+3; //X
|
||||
gamecontrol[gc_strafeleft ][0] = KEY_JOY1+4; //L
|
||||
gamecontrol[gc_straferight][0] = KEY_JOY1+5; //R
|
||||
gamecontrol[gc_lookup ][0] = KEY_JOY1+6; //U
|
||||
|
@ -1143,13 +1143,13 @@ void G_Controldefault(void)
|
|||
gamecontrol[gc_forward ][0] = KEY_UPARROW;
|
||||
gamecontrol[gc_backward ][0] = KEY_DOWNARROW;
|
||||
gamecontrol[gc_jump ][0] = KEY_JOY1+0; //A
|
||||
gamecontrol[gc_use ][0] = KEY_JOY1+3; //Y
|
||||
gamecontrol[gc_brake ][0] = KEY_JOY1+3; //Y
|
||||
gamecontrol[gc_strafeleft ][0] = KEY_JOY1+4; //L
|
||||
gamecontrol[gc_straferight][0] = KEY_JOY1+5; //R
|
||||
gamecontrol[gc_turnleft ][0] = KEY_LEFTARROW;
|
||||
gamecontrol[gc_turnright ][0] = KEY_RIGHTARROW;
|
||||
gamecontrol[gc_pause ][0] = KEY_JOY1+6; //Start
|
||||
gamecontrol[gc_weaponnext ][0] = KEY_JOY1+7; //Select
|
||||
gamecontrol[gc_driftleft ][0] = KEY_JOY1+7; //Select
|
||||
}
|
||||
#else
|
||||
void G_Controldefault(void)
|
||||
|
@ -1162,8 +1162,8 @@ void G_Controldefault(void)
|
|||
gamecontrol[gc_straferight][0] = 'd';
|
||||
gamecontrol[gc_turnleft ][0] = KEY_LEFTARROW;
|
||||
gamecontrol[gc_turnright ][0] = KEY_RIGHTARROW;
|
||||
gamecontrol[gc_weaponnext ][0] = 'e';
|
||||
gamecontrol[gc_weaponprev ][0] = 'q';
|
||||
gamecontrol[gc_driftleft ][0] = 'e';
|
||||
gamecontrol[gc_driftright ][0] = 'q';
|
||||
gamecontrol[gc_wepslot1 ][0] = '1';
|
||||
gamecontrol[gc_wepslot2 ][0] = '2';
|
||||
gamecontrol[gc_wepslot3 ][0] = '3';
|
||||
|
@ -1176,13 +1176,13 @@ void G_Controldefault(void)
|
|||
gamecontrol[gc_wepslot10 ][0] = '0';
|
||||
gamecontrol[gc_fire ][0] = KEY_RCTRL;
|
||||
gamecontrol[gc_fire ][1] = KEY_MOUSE1+0;
|
||||
gamecontrol[gc_firenormal ][0] = 'c';
|
||||
gamecontrol[gc_tossflag ][0] = '\'';
|
||||
gamecontrol[gc_use ][0] = 'x';
|
||||
gamecontrol[gc_accelerate ][0] = 'c';
|
||||
gamecontrol[gc_spectate ][0] = '\'';
|
||||
gamecontrol[gc_brake ][0] = 'x';
|
||||
gamecontrol[gc_camtoggle ][0] = 'v';
|
||||
gamecontrol[gc_camleft ][0] = '[';
|
||||
gamecontrol[gc_camright ][0] = ']';
|
||||
gamecontrol[gc_camreset ][0] = 'r';
|
||||
gamecontrol[gc_aimforward ][0] = '[';
|
||||
gamecontrol[gc_aimbackward][0] = ']';
|
||||
gamecontrol[gc_lookback ][0] = 'r';
|
||||
gamecontrol[gc_lookup ][0] = KEY_PGUP;
|
||||
gamecontrol[gc_lookdown ][0] = KEY_PGDN;
|
||||
gamecontrol[gc_centerview ][0] = KEY_END;
|
||||
|
@ -1198,12 +1198,12 @@ void G_Controldefault(void)
|
|||
gamecontrol[gc_backward ][0] = KEY_JOY1+03; //DOWN
|
||||
gamecontrol[gc_turnleft ][0] = KEY_JOY1+04; //LEFT
|
||||
gamecontrol[gc_turnright ][0] = KEY_JOY1+05; //RIGHT
|
||||
gamecontrol[gc_weaponnext ][0] = KEY_JOY1+10; //y
|
||||
gamecontrol[gc_weaponprev ][0] = KEY_JOY1+9; //x
|
||||
gamecontrol[gc_driftleft ][0] = KEY_JOY1+10; //y
|
||||
gamecontrol[gc_driftright ][0] = KEY_JOY1+9; //x
|
||||
gamecontrol[gc_fire ][0] = KEY_JOY1+12; //L
|
||||
gamecontrol[gc_firenormal ][0] = KEY_JOY1+13; //R
|
||||
gamecontrol[gc_use ][0] = KEY_JOY1+00; //B
|
||||
gamecontrol[gc_use ][1] = KEY_JOY1+07; //b
|
||||
gamecontrol[gc_accelerate ][0] = KEY_JOY1+13; //R
|
||||
gamecontrol[gc_brake ][0] = KEY_JOY1+00; //B
|
||||
gamecontrol[gc_brake ][1] = KEY_JOY1+07; //b
|
||||
gamecontrol[gc_jump ][0] = KEY_JOY1+01; //A
|
||||
gamecontrol[gc_jump ][1] = KEY_JOY1+06; //a
|
||||
gamecontrol[gc_pause ][0] = KEY_JOY1+18; //Home
|
||||
|
@ -1211,12 +1211,12 @@ void G_Controldefault(void)
|
|||
gamecontrolbis[gc_backward ][0] = KEY_2JOY1+03; //DOWN
|
||||
gamecontrolbis[gc_turnleft ][0] = KEY_2JOY1+04; //LEFT
|
||||
gamecontrolbis[gc_turnright ][0] = KEY_2JOY1+05; //RIGHT
|
||||
gamecontrolbis[gc_weaponnext ][0] = KEY_2JOY1+10; //y
|
||||
gamecontrolbis[gc_weaponprev ][0] = KEY_2JOY1+9; //x
|
||||
gamecontrolbis[gc_driftleft ][0] = KEY_2JOY1+10; //y
|
||||
gamecontrolbis[gc_driftright ][0] = KEY_2JOY1+9; //x
|
||||
gamecontrolbis[gc_fire ][0] = KEY_2JOY1+12; //L
|
||||
gamecontrolbis[gc_firenormal ][0] = KEY_2JOY1+13; //R
|
||||
gamecontrolbis[gc_use ][0] = KEY_2JOY1+00; //B
|
||||
gamecontrolbis[gc_use ][1] = KEY_2JOY1+07; //b
|
||||
gamecontrolbis[gc_accelerate ][0] = KEY_2JOY1+13; //R
|
||||
gamecontrolbis[gc_brake ][0] = KEY_2JOY1+00; //B
|
||||
gamecontrolbis[gc_brake ][1] = KEY_2JOY1+07; //b
|
||||
gamecontrolbis[gc_jump ][0] = KEY_2JOY1+01; //A
|
||||
gamecontrolbis[gc_jump ][1] = KEY_2JOY1+06; //a
|
||||
gamecontrolbis[gc_pause ][0] = KEY_2JOY1+18; //Home
|
||||
|
@ -1228,14 +1228,14 @@ void G_Controldefault(void)
|
|||
gamecontrol[gc_strafeleft ][1] = KEY_JOY1+15; //ZL
|
||||
gamecontrol[gc_turnleft ][1] = KEY_HAT1+02; //LEFT
|
||||
gamecontrol[gc_turnright ][1] = KEY_HAT1+03; //RIGHT
|
||||
gamecontrol[gc_weaponnext ][1] = KEY_JOY1+11; //x
|
||||
gamecontrol[gc_driftleft ][1] = KEY_JOY1+11; //x
|
||||
gamecontrol[gc_fire ][0] = KEY_JOY1+12; //y
|
||||
gamecontrol[gc_fire ][1] = KEY_JOY1+01; //B
|
||||
gamecontrol[gc_firenormal ][0] = KEY_JOY1+13; //L
|
||||
gamecontrol[gc_firenormal ][1] = KEY_JOY1+00; //A
|
||||
gamecontrol[gc_tossflag ][1] = KEY_JOY1+17; //Plus CC
|
||||
gamecontrol[gc_use ][0] = KEY_JOY1+9; //a
|
||||
gamecontrol[gc_use ][1] = KEY_JOY1+02; //1
|
||||
gamecontrol[gc_accelerate ][0] = KEY_JOY1+13; //L
|
||||
gamecontrol[gc_accelerate ][1] = KEY_JOY1+00; //A
|
||||
gamecontrol[gc_spectate ][1] = KEY_JOY1+17; //Plus CC
|
||||
gamecontrol[gc_brake ][0] = KEY_JOY1+9; //a
|
||||
gamecontrol[gc_brake ][1] = KEY_JOY1+02; //1
|
||||
gamecontrol[gc_centerview ][1] = KEY_JOY1+14; //R
|
||||
gamecontrol[gc_scores ][0] = KEY_JOY1+04; //Minus
|
||||
gamecontrol[gc_scores ][1] = KEY_JOY1+18; //Minus
|
||||
|
@ -1249,14 +1249,14 @@ void G_Controldefault(void)
|
|||
gamecontrolbis[gc_strafeleft ][1] = KEY_2JOY1+15; //ZL
|
||||
gamecontrolbis[gc_turnleft ][1] = KEY_2HAT1+02; //LEFT
|
||||
gamecontrolbis[gc_turnright ][1] = KEY_2HAT1+03; //RIGHT
|
||||
gamecontrolbis[gc_weaponnext ][1] = KEY_2JOY1+11; //x
|
||||
gamecontrolbis[gc_driftleft ][1] = KEY_2JOY1+11; //x
|
||||
gamecontrolbis[gc_fire ][0] = KEY_2JOY1+12; //y
|
||||
gamecontrolbis[gc_fire ][1] = KEY_2JOY1+01; //B
|
||||
gamecontrolbis[gc_firenormal ][0] = KEY_2JOY1+13; //L
|
||||
gamecontrolbis[gc_firenormal ][1] = KEY_2JOY1+00; //A
|
||||
gamecontrolbis[gc_tossflag ][1] = KEY_2JOY1+17; //Plus CC
|
||||
gamecontrolbis[gc_use ][0] = KEY_2JOY1+9; //a
|
||||
gamecontrolbis[gc_use ][1] = KEY_2JOY1+02; //1
|
||||
gamecontrolbis[gc_accelerate ][0] = KEY_2JOY1+13; //L
|
||||
gamecontrolbis[gc_accelerate ][1] = KEY_2JOY1+00; //A
|
||||
gamecontrolbis[gc_spectate ][1] = KEY_2JOY1+17; //Plus CC
|
||||
gamecontrolbis[gc_brake ][0] = KEY_2JOY1+9; //a
|
||||
gamecontrolbis[gc_brake ][1] = KEY_2JOY1+02; //1
|
||||
gamecontrolbis[gc_centerview ][1] = KEY_2JOY1+14; //R
|
||||
gamecontrolbis[gc_scores ][0] = KEY_2JOY1+04; //Minus
|
||||
gamecontrolbis[gc_scores ][1] = KEY_2JOY1+18; //Minus
|
||||
|
|
|
@ -88,8 +88,8 @@ typedef enum
|
|||
gc_straferight,
|
||||
gc_turnleft,
|
||||
gc_turnright,
|
||||
gc_weaponnext,
|
||||
gc_weaponprev,
|
||||
gc_driftleft, // gc_weaponnext
|
||||
gc_driftright, // gc_weaponprev
|
||||
gc_wepslot1,
|
||||
gc_wepslot2,
|
||||
gc_wepslot3,
|
||||
|
@ -101,13 +101,13 @@ typedef enum
|
|||
gc_wepslot9,
|
||||
gc_wepslot10,
|
||||
gc_fire,
|
||||
gc_firenormal,
|
||||
gc_tossflag,
|
||||
gc_use,
|
||||
gc_accelerate, // gc_firenormal
|
||||
gc_spectate, // gc_tossflag
|
||||
gc_brake, // gc_use
|
||||
gc_camtoggle,
|
||||
gc_camleft,
|
||||
gc_camright,
|
||||
gc_camreset,
|
||||
gc_aimforward, // gc_camleft
|
||||
gc_aimbackward, // gc_camright
|
||||
gc_lookback, // gc_camreset
|
||||
gc_lookup,
|
||||
gc_lookdown,
|
||||
gc_centerview,
|
||||
|
|
|
@ -497,6 +497,26 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[NOLIGHT], // SPR_SRBN
|
||||
&lspr[NOLIGHT], // SPR_SRBO
|
||||
|
||||
&lspr[NOLIGHT], //"SPRG",
|
||||
&lspr[NOLIGHT], //"BSPR",
|
||||
&lspr[NOLIGHT], //"RNDM",
|
||||
&lspr[NOLIGHT], //"SPRK",
|
||||
&lspr[NOLIGHT], //"KFRE",
|
||||
&lspr[NOLIGHT], //"DRIF",
|
||||
&lspr[NOLIGHT], //"FAKE",
|
||||
&lspr[NOLIGHT], //"DFAK",
|
||||
&lspr[NOLIGHT], //"BANA",
|
||||
&lspr[NOLIGHT], //"DBAN",
|
||||
&lspr[NOLIGHT], //"GSHE",
|
||||
&lspr[NOLIGHT], //"GSTR",
|
||||
&lspr[NOLIGHT], //"DGSH",
|
||||
&lspr[NOLIGHT], //"RSHE",
|
||||
&lspr[NOLIGHT], //"RSTR",
|
||||
&lspr[NOLIGHT], //"DRSH",
|
||||
&lspr[NOLIGHT], //"BOMB",
|
||||
&lspr[NOLIGHT], //"BLIG",
|
||||
&lspr[NOLIGHT], //"LIGH"
|
||||
|
||||
// Free slots
|
||||
&lspr[NOLIGHT],
|
||||
&lspr[NOLIGHT],
|
||||
|
|
1082
src/info.c
1082
src/info.c
File diff suppressed because it is too large
Load diff
267
src/info.h
267
src/info.h
|
@ -60,6 +60,7 @@ void A_AttractChase(); // Ring Chase
|
|||
void A_DropMine(); // Drop Mine from Skim or Jetty-Syn Bomber
|
||||
void A_FishJump(); // Fish Jump
|
||||
void A_ThrownRing(); // Sparkle trail for red ring
|
||||
void A_GrenadeRing(); // SRB2kart
|
||||
void A_SetSolidSteam();
|
||||
void A_UnsetSolidSteam();
|
||||
void A_SignPlayer();
|
||||
|
@ -162,6 +163,8 @@ void A_RandomStateRange();
|
|||
void A_DualAction();
|
||||
void A_RemoteAction();
|
||||
void A_ToggleFlameJet();
|
||||
void A_RedShellChase(); // SRB2kart
|
||||
void A_BobombExplode(); // SRB2kart
|
||||
void A_OrbitNights();
|
||||
void A_GhostMe();
|
||||
void A_SetObjectState();
|
||||
|
@ -570,6 +573,30 @@ typedef enum sprite
|
|||
SPR_SRBN,
|
||||
SPR_SRBO,
|
||||
|
||||
// Springs
|
||||
SPR_SPRG, // Gray Spring
|
||||
SPR_BSPR, // Blue Diagonal Spring
|
||||
|
||||
SPR_RNDM, // Random Item Box
|
||||
SPR_RPOP, // Random Item Box Pop
|
||||
SPR_KFRE, // Mushroom fire trail
|
||||
SPR_DRIF, // Drift Sparks
|
||||
|
||||
// Kart Items
|
||||
SPR_FITE, // Fake Item box
|
||||
SPR_DFAK, // Dead Fake Item
|
||||
SPR_BANA, // Banana Peel
|
||||
SPR_DBAN, // Dead Banana Peel
|
||||
SPR_GSHE, // Green Shell
|
||||
SPR_GSTR, // Green Shell Trail
|
||||
SPR_DGSH, // Dead Green Shell
|
||||
SPR_RSHE, // Red Shell
|
||||
SPR_RSTR, // Red Shell Trail
|
||||
SPR_DRSH, // Dead Red Shell
|
||||
SPR_BOMB, // Bob-omb
|
||||
SPR_BLIG, // Blue Lightning
|
||||
SPR_LIGH, // Lightning
|
||||
|
||||
SPR_FIRSTFREESLOT,
|
||||
SPR_LASTFREESLOT = SPR_FIRSTFREESLOT + NUMSPRITEFREESLOTS - 1,
|
||||
NUMSPRITES
|
||||
|
@ -2957,6 +2984,203 @@ typedef enum state
|
|||
S_SRB1_GENREX1,
|
||||
S_SRB1_GENREX2,
|
||||
|
||||
// Gray Springs
|
||||
S_GRAYSPRING,
|
||||
S_GRAYSPRING2,
|
||||
S_GRAYSPRING3,
|
||||
S_GRAYSPRING4,
|
||||
S_GRAYSPRING5,
|
||||
|
||||
// Blue Diagonal Spring
|
||||
S_BDIAG1,
|
||||
S_BDIAG2,
|
||||
S_BDIAG3,
|
||||
S_BDIAG4,
|
||||
S_BDIAG5,
|
||||
S_BDIAG6,
|
||||
S_BDIAG7,
|
||||
S_BDIAG8,
|
||||
|
||||
//{ Random Item Box
|
||||
S_RANDOMITEM1,
|
||||
S_RANDOMITEM2,
|
||||
S_RANDOMITEM3,
|
||||
S_RANDOMITEM4,
|
||||
S_RANDOMITEM5,
|
||||
S_RANDOMITEM6,
|
||||
S_RANDOMITEM7,
|
||||
S_RANDOMITEM8,
|
||||
S_RANDOMITEM9,
|
||||
S_RANDOMITEM10,
|
||||
S_RANDOMITEM11,
|
||||
S_RANDOMITEM12,
|
||||
S_RANDOMITEM13,
|
||||
S_RANDOMITEM14,
|
||||
S_RANDOMITEM15,
|
||||
S_RANDOMITEM16,
|
||||
S_RANDOMITEM17,
|
||||
S_RANDOMITEM18,
|
||||
S_RANDOMITEM19,
|
||||
S_RANDOMITEM20,
|
||||
S_RANDOMITEM21,
|
||||
S_RANDOMITEM22,
|
||||
S_RANDOMITEM23,
|
||||
S_RANDOMITEM24,
|
||||
|
||||
// Random Item Pop
|
||||
S_RANDOMITEMPOP1,
|
||||
S_RANDOMITEMPOP2,
|
||||
S_RANDOMITEMPOP3,
|
||||
S_RANDOMITEMPOP4,
|
||||
S_RANDOMITEMPOP5,
|
||||
//}
|
||||
|
||||
// Drift Sparks
|
||||
S_DRIFTSPARK1,
|
||||
S_DRIFTSPARK2,
|
||||
S_DRIFTSPARK3,
|
||||
S_DRIFTSPARK4,
|
||||
S_DRIFTSPARK5,
|
||||
S_DRIFTSPARK6,
|
||||
|
||||
// Magnet Burst
|
||||
|
||||
// Mushroom Fire Trail
|
||||
S_KARTFIRE1,
|
||||
S_KARTFIRE2,
|
||||
S_KARTFIRE3,
|
||||
S_KARTFIRE4,
|
||||
S_KARTFIRE5,
|
||||
S_KARTFIRE6,
|
||||
S_KARTFIRE7,
|
||||
S_KARTFIRE8,
|
||||
|
||||
//{ Fake Item
|
||||
S_FAKEITEM1,
|
||||
S_FAKEITEM2,
|
||||
S_FAKEITEM3,
|
||||
S_FAKEITEM4,
|
||||
S_FAKEITEM5,
|
||||
S_FAKEITEM6,
|
||||
S_FAKEITEM7,
|
||||
S_FAKEITEM8,
|
||||
S_FAKEITEM9,
|
||||
S_FAKEITEM10,
|
||||
S_FAKEITEM11,
|
||||
S_FAKEITEM12,
|
||||
S_FAKEITEM13,
|
||||
S_FAKEITEM14,
|
||||
S_FAKEITEM15,
|
||||
S_FAKEITEM16,
|
||||
S_FAKEITEM17,
|
||||
S_FAKEITEM18,
|
||||
S_FAKEITEM19,
|
||||
S_FAKEITEM20,
|
||||
S_FAKEITEM21,
|
||||
S_FAKEITEM22,
|
||||
S_FAKEITEM23,
|
||||
S_FAKEITEM24,
|
||||
S_DEADFAKEITEM,
|
||||
//}
|
||||
|
||||
// Banana
|
||||
S_BANANAITEM,
|
||||
S_DEADBANANA,
|
||||
|
||||
//{ Green Shell
|
||||
S_TRIPLEGREENSHIELD1,
|
||||
S_TRIPLEGREENSHIELD2,
|
||||
S_TRIPLEGREENSHIELD3,
|
||||
S_TRIPLEGREENSHIELD4,
|
||||
S_TRIPLEGREENSHIELD5,
|
||||
S_TRIPLEGREENSHIELD6,
|
||||
S_TRIPLEGREENSHIELD7,
|
||||
S_TRIPLEGREENSHIELD8,
|
||||
S_GREENSHIELD1,
|
||||
S_GREENSHIELD2,
|
||||
S_GREENSHIELD3,
|
||||
S_GREENSHIELD4,
|
||||
S_GREENSHIELD5,
|
||||
S_GREENSHIELD6,
|
||||
S_GREENSHIELD7,
|
||||
S_GREENSHIELD8,
|
||||
S_GREENITEM1,
|
||||
S_GREENITEM2,
|
||||
S_GREENITEM3,
|
||||
S_GREENITEM4,
|
||||
S_GREENITEM5,
|
||||
S_GREENITEM6,
|
||||
S_GREENITEM7,
|
||||
S_GREENITEM8,
|
||||
S_GREENTRAIL1,
|
||||
S_GREENTRAIL2,
|
||||
S_GREENTRAIL3,
|
||||
S_GREENTRAIL4,
|
||||
S_GREENTRAIL5,
|
||||
S_GREENTRAIL6,
|
||||
S_GREENTRAIL7,
|
||||
S_GREENTRAIL8,
|
||||
S_GREENTRAIL9,
|
||||
S_DEADGREEN,
|
||||
//}
|
||||
//{ Red Shell
|
||||
S_TRIPLEREDSHIELD1,
|
||||
S_TRIPLEREDSHIELD2,
|
||||
S_TRIPLEREDSHIELD3,
|
||||
S_TRIPLEREDSHIELD4,
|
||||
S_TRIPLEREDSHIELD5,
|
||||
S_TRIPLEREDSHIELD6,
|
||||
S_TRIPLEREDSHIELD7,
|
||||
S_TRIPLEREDSHIELD8,
|
||||
S_REDSHIELD1,
|
||||
S_REDSHIELD2,
|
||||
S_REDSHIELD3,
|
||||
S_REDSHIELD4,
|
||||
S_REDSHIELD5,
|
||||
S_REDSHIELD6,
|
||||
S_REDSHIELD7,
|
||||
S_REDSHIELD8,
|
||||
S_REDITEM1,
|
||||
S_REDITEM2,
|
||||
S_REDITEM3,
|
||||
S_REDITEM4,
|
||||
S_REDITEM5,
|
||||
S_REDITEM6,
|
||||
S_REDITEM7,
|
||||
S_REDITEM8,
|
||||
S_REDITEMCHASE,
|
||||
S_REDITEMTRAIL,
|
||||
S_REDTRAIL1,
|
||||
S_REDTRAIL2,
|
||||
S_REDTRAIL3,
|
||||
S_REDTRAIL4,
|
||||
S_REDTRAIL5,
|
||||
S_REDTRAIL6,
|
||||
S_REDTRAIL7,
|
||||
S_REDTRAIL8,
|
||||
S_REDTRAIL9,
|
||||
S_DEADRED,
|
||||
//}
|
||||
|
||||
// Bob-omb
|
||||
S_BOMBSHIELD,
|
||||
S_BOMBITEM,
|
||||
S_BOMBAIR,
|
||||
S_BOMBEXPLODE,
|
||||
|
||||
// Blue Shell - Blue Lightning for now...
|
||||
S_BLUELIGHTNING1,
|
||||
S_BLUELIGHTNING2,
|
||||
S_BLUELIGHTNING3,
|
||||
S_BLUELIGHTNING4,
|
||||
S_BLUEEXPLODE,
|
||||
|
||||
// Lightning
|
||||
S_LIGHTNING1,
|
||||
S_LIGHTNING2,
|
||||
S_LIGHTNING3,
|
||||
S_LIGHTNING4,
|
||||
|
||||
#ifdef SEENAMES
|
||||
S_NAMECHECK,
|
||||
#endif
|
||||
|
@ -3483,6 +3707,49 @@ typedef enum mobj_type
|
|||
MT_SRB1_METALSONIC,
|
||||
MT_SRB1_GOLDBOT,
|
||||
MT_SRB1_GENREX,
|
||||
|
||||
// SRB2kart
|
||||
MT_GRAYSPRING,
|
||||
MT_INVISSPRING,
|
||||
MT_BLUEDIAG,
|
||||
MT_RANDOMITEM,
|
||||
MT_RANDOMITEMPOP,
|
||||
|
||||
MT_MUSHROOMTRAIL,
|
||||
MT_DRIFT,
|
||||
|
||||
MT_FAKESHIELD,
|
||||
MT_FAKEITEM,
|
||||
|
||||
MT_TRIPLEBANANASHIELD1, // Banana Stuff
|
||||
MT_TRIPLEBANANASHIELD2,
|
||||
MT_TRIPLEBANANASHIELD3,
|
||||
MT_BANANASHIELD,
|
||||
MT_BANANAITEM,
|
||||
|
||||
MT_TRIPLEGREENSHIELD1, // Green shell stuff
|
||||
MT_TRIPLEGREENSHIELD2,
|
||||
MT_TRIPLEGREENSHIELD3,
|
||||
MT_GREENSHIELD,
|
||||
MT_GREENITEM,
|
||||
MT_GREENTRAIL,
|
||||
|
||||
MT_TRIPLEREDSHIELD1, // Red shell stuff
|
||||
MT_TRIPLEREDSHIELD2,
|
||||
MT_TRIPLEREDSHIELD3,
|
||||
MT_REDSHIELD,
|
||||
MT_REDITEM,
|
||||
MT_REDITEMDUD,
|
||||
MT_REDTRAIL,
|
||||
|
||||
MT_BOMBSHIELD, // Bob-omb stuff
|
||||
MT_BOMBITEM,
|
||||
MT_BOMBEXPLOSION,
|
||||
|
||||
MT_BLUELIGHTNING, // Lightning stuff
|
||||
MT_BLUEEXPLOSION,
|
||||
MT_LIGHTNING,
|
||||
|
||||
#ifdef SEENAMES
|
||||
MT_NAMECHECK,
|
||||
#endif
|
||||
|
|
1693
src/k_kart.c
1693
src/k_kart.c
File diff suppressed because it is too large
Load diff
|
@ -16,9 +16,11 @@ UINT8 K_GetKartColorByName(const char *name);
|
|||
void K_RegisterKartStuff(void);
|
||||
|
||||
void K_KartPlayerThink(player_t *player, ticcmd_t *cmd);
|
||||
boolean P_SpinPlayerMobj(mobj_t *target, mobj_t *source);
|
||||
boolean P_SquishPlayerMobj(mobj_t *target, mobj_t *source);
|
||||
boolean P_ExplodePlayerMobj(mobj_t *target, mobj_t *source);
|
||||
boolean K_SpinPlayer(player_t *player, mobj_t *source);
|
||||
boolean K_SquishPlayer(player_t *player, mobj_t *source);
|
||||
boolean K_ExplodePlayer(player_t *player, mobj_t *source);
|
||||
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit);
|
||||
void K_MoveKartPlayer(player_t *player, boolean onground);
|
||||
|
||||
void K_LoadKartHUDGraphics(void);
|
||||
void K_drawKartHUD(void);
|
||||
|
|
|
@ -968,7 +968,7 @@ void OP_NightsObjectplace(player_t *player)
|
|||
if (player->pflags & PF_ATTACKDOWN)
|
||||
{
|
||||
// Are ANY objectplace buttons pressed? If no, remove flag.
|
||||
if (!(cmd->buttons & (BT_ATTACK|BT_TOSSFLAG|BT_USE|BT_CAMRIGHT|BT_CAMLEFT)))
|
||||
if (!(cmd->buttons & (BT_ATTACK|BT_ACCELERATE|BT_BRAKE|BT_FORWARD|BT_BACKWARD)))
|
||||
player->pflags &= ~PF_ATTACKDOWN;
|
||||
|
||||
// Do nothing.
|
||||
|
@ -1008,7 +1008,7 @@ void OP_NightsObjectplace(player_t *player)
|
|||
}
|
||||
|
||||
// This places a bumper!
|
||||
if (cmd->buttons & BT_TOSSFLAG)
|
||||
if (cmd->buttons & BT_SPECTATE)
|
||||
{
|
||||
player->pflags |= PF_ATTACKDOWN;
|
||||
if (!OP_HeightOkay(player, false))
|
||||
|
@ -1019,7 +1019,7 @@ void OP_NightsObjectplace(player_t *player)
|
|||
}
|
||||
|
||||
// This places a ring!
|
||||
if (cmd->buttons & BT_CAMRIGHT)
|
||||
if (cmd->buttons & BT_BACKWARD)
|
||||
{
|
||||
player->pflags |= PF_ATTACKDOWN;
|
||||
if (!OP_HeightOkay(player, false))
|
||||
|
@ -1030,7 +1030,7 @@ void OP_NightsObjectplace(player_t *player)
|
|||
}
|
||||
|
||||
// This places a wing item!
|
||||
if (cmd->buttons & BT_CAMLEFT)
|
||||
if (cmd->buttons & BT_FORWARD)
|
||||
{
|
||||
player->pflags |= PF_ATTACKDOWN;
|
||||
if (!OP_HeightOkay(player, false))
|
||||
|
@ -1041,7 +1041,7 @@ void OP_NightsObjectplace(player_t *player)
|
|||
}
|
||||
|
||||
// This places a custom object as defined in the console cv_mapthingnum.
|
||||
if (cmd->buttons & BT_USE)
|
||||
if (cmd->buttons & BT_BRAKE)
|
||||
{
|
||||
UINT16 angle;
|
||||
|
||||
|
@ -1101,7 +1101,7 @@ void OP_ObjectplaceMovement(player_t *player)
|
|||
|
||||
if (cmd->buttons & BT_JUMP)
|
||||
player->mo->z += FRACUNIT*cv_speed.value;
|
||||
else if (cmd->buttons & BT_USE)
|
||||
else if (cmd->buttons & BT_BRAKE)
|
||||
player->mo->z -= FRACUNIT*cv_speed.value;
|
||||
|
||||
if (cmd->forwardmove != 0)
|
||||
|
@ -1165,19 +1165,19 @@ void OP_ObjectplaceMovement(player_t *player)
|
|||
if (player->pflags & PF_ATTACKDOWN)
|
||||
{
|
||||
// Are ANY objectplace buttons pressed? If no, remove flag.
|
||||
if (!(cmd->buttons & (BT_ATTACK|BT_TOSSFLAG|BT_CAMRIGHT|BT_CAMLEFT)))
|
||||
if (!(cmd->buttons & (BT_ATTACK|BT_SPECTATE|BT_BACKWARD|BT_FORWARD)))
|
||||
player->pflags &= ~PF_ATTACKDOWN;
|
||||
|
||||
// Do nothing.
|
||||
return;
|
||||
}
|
||||
|
||||
if (cmd->buttons & BT_CAMLEFT)
|
||||
if (cmd->buttons & BT_FORWARD)
|
||||
{
|
||||
OP_CycleThings(-1);
|
||||
player->pflags |= PF_ATTACKDOWN;
|
||||
}
|
||||
else if (cmd->buttons & BT_CAMRIGHT)
|
||||
else if (cmd->buttons & BT_BACKWARD)
|
||||
{
|
||||
OP_CycleThings(1);
|
||||
player->pflags |= PF_ATTACKDOWN;
|
||||
|
|
38
src/m_menu.c
38
src/m_menu.c
|
@ -1039,7 +1039,7 @@ static menuitem_t OP_MoveControlsMenu[] =
|
|||
{IT_CALL | IT_STRING2, NULL, "Turn Left", M_ChangeControl, gc_turnleft },
|
||||
{IT_CALL | IT_STRING2, NULL, "Turn Right", M_ChangeControl, gc_turnright },
|
||||
{IT_CALL | IT_STRING2, NULL, "Jump", M_ChangeControl, gc_jump },
|
||||
{IT_CALL | IT_STRING2, NULL, "Spin", M_ChangeControl, gc_use },
|
||||
{IT_CALL | IT_STRING2, NULL, "Brake", M_ChangeControl, gc_brake },
|
||||
{IT_CALL | IT_STRING2, NULL, "Strafe Left", M_ChangeControl, gc_strafeleft },
|
||||
{IT_CALL | IT_STRING2, NULL, "Strafe Right", M_ChangeControl, gc_straferight},
|
||||
};
|
||||
|
@ -1049,29 +1049,29 @@ static menuitem_t OP_MPControlsMenu[] =
|
|||
{IT_CALL | IT_STRING2, NULL, "Talk key", M_ChangeControl, gc_talkkey },
|
||||
{IT_CALL | IT_STRING2, NULL, "Team-Talk key", M_ChangeControl, gc_teamkey },
|
||||
{IT_CALL | IT_STRING2, NULL, "Rankings/Scores", M_ChangeControl, gc_scores },
|
||||
{IT_CALL | IT_STRING2, NULL, "Toss Flag", M_ChangeControl, gc_tossflag },
|
||||
{IT_CALL | IT_STRING2, NULL, "Next Weapon", M_ChangeControl, gc_weaponnext },
|
||||
{IT_CALL | IT_STRING2, NULL, "Prev Weapon", M_ChangeControl, gc_weaponprev },
|
||||
{IT_CALL | IT_STRING2, NULL, "Weapon Slot 1", M_ChangeControl, gc_wepslot1 },
|
||||
{IT_CALL | IT_STRING2, NULL, "Weapon Slot 2", M_ChangeControl, gc_wepslot2 },
|
||||
{IT_CALL | IT_STRING2, NULL, "Weapon Slot 3", M_ChangeControl, gc_wepslot3 },
|
||||
{IT_CALL | IT_STRING2, NULL, "Weapon Slot 4", M_ChangeControl, gc_wepslot4 },
|
||||
{IT_CALL | IT_STRING2, NULL, "Weapon Slot 5", M_ChangeControl, gc_wepslot5 },
|
||||
{IT_CALL | IT_STRING2, NULL, "Weapon Slot 6", M_ChangeControl, gc_wepslot6 },
|
||||
{IT_CALL | IT_STRING2, NULL, "Weapon Slot 7", M_ChangeControl, gc_wepslot7 },
|
||||
{IT_CALL | IT_STRING2, NULL, "Spectate", M_ChangeControl, gc_spectate },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Next Weapon", M_ChangeControl, gc_driftleft },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Prev Weapon", M_ChangeControl, gc_driftright },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Weapon Slot 1", M_ChangeControl, gc_wepslot1 },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Weapon Slot 2", M_ChangeControl, gc_wepslot2 },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Weapon Slot 3", M_ChangeControl, gc_wepslot3 },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Weapon Slot 4", M_ChangeControl, gc_wepslot4 },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Weapon Slot 5", M_ChangeControl, gc_wepslot5 },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Weapon Slot 6", M_ChangeControl, gc_wepslot6 },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Weapon Slot 7", M_ChangeControl, gc_wepslot7 },
|
||||
{IT_CALL | IT_STRING2, NULL, "Ring Toss", M_ChangeControl, gc_fire },
|
||||
{IT_CALL | IT_STRING2, NULL, "Ring Toss Normal", M_ChangeControl, gc_firenormal },
|
||||
{IT_CALL | IT_STRING2, NULL, "Accelerate", M_ChangeControl, gc_accelerate },
|
||||
};
|
||||
|
||||
static menuitem_t OP_CameraControlsMenu[] =
|
||||
{
|
||||
{IT_CALL | IT_STRING2, NULL, "Look Up", M_ChangeControl, gc_lookup },
|
||||
{IT_CALL | IT_STRING2, NULL, "Look Down", M_ChangeControl, gc_lookdown },
|
||||
{IT_CALL | IT_STRING2, NULL, "Rotate Camera L", M_ChangeControl, gc_camleft },
|
||||
{IT_CALL | IT_STRING2, NULL, "Rotate Camera R", M_ChangeControl, gc_camright },
|
||||
{IT_CALL | IT_STRING2, NULL, "Center View", M_ChangeControl, gc_centerview },
|
||||
{IT_CALL | IT_STRING2, NULL, "Mouselook", M_ChangeControl, gc_mouseaiming },
|
||||
{IT_CALL | IT_STRING2, NULL, "Reset Camera", M_ChangeControl, gc_camreset },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Look Up", M_ChangeControl, gc_lookup },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Look Down", M_ChangeControl, gc_lookdown },
|
||||
{IT_CALL | IT_STRING2, NULL, "Aim Forward", M_ChangeControl, gc_aimforward },
|
||||
{IT_CALL | IT_STRING2, NULL, "Aim Backward", M_ChangeControl, gc_aimbackward },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Center View", M_ChangeControl, gc_centerview },
|
||||
// {IT_CALL | IT_STRING2, NULL, "Mouselook", M_ChangeControl, gc_mouseaiming },
|
||||
{IT_CALL | IT_STRING2, NULL, "Look Backward", M_ChangeControl, gc_lookback },
|
||||
{IT_CALL | IT_STRING2, NULL, "Toggle Chasecam", M_ChangeControl, gc_camtoggle },
|
||||
};
|
||||
|
||||
|
|
215
src/p_enemy.c
215
src/p_enemy.c
|
@ -23,6 +23,7 @@
|
|||
#include "r_things.h"
|
||||
#include "i_video.h"
|
||||
#include "lua_hook.h"
|
||||
#include "k_kart.h" // SRB2kart
|
||||
|
||||
#ifdef HW3SOUND
|
||||
#include "hardware/hw3sound.h"
|
||||
|
@ -113,6 +114,7 @@ void A_AttractChase(mobj_t *actor);
|
|||
void A_DropMine(mobj_t *actor);
|
||||
void A_FishJump(mobj_t *actor);
|
||||
void A_ThrownRing(mobj_t *actor);
|
||||
void A_GrenadeRing(mobj_t *actor);
|
||||
void A_SetSolidSteam(mobj_t *actor);
|
||||
void A_UnsetSolidSteam(mobj_t *actor);
|
||||
void A_SignPlayer(mobj_t *actor);
|
||||
|
@ -185,6 +187,8 @@ void A_RandomStateRange(mobj_t *actor);
|
|||
void A_DualAction(mobj_t *actor);
|
||||
void A_RemoteAction(mobj_t *actor);
|
||||
void A_ToggleFlameJet(mobj_t *actor);
|
||||
void A_RedShellChase(mobj_t *actor); // SRB2kart
|
||||
void A_BobombExplode(mobj_t *actor); // SRB2kart
|
||||
void A_OrbitNights(mobj_t *actor);
|
||||
void A_GhostMe(mobj_t *actor);
|
||||
void A_SetObjectState(mobj_t *actor);
|
||||
|
@ -3893,6 +3897,74 @@ void A_ThrownRing(mobj_t *actor)
|
|||
return;
|
||||
}
|
||||
|
||||
//{ SRB2kart - A_GRENADERING
|
||||
static mobj_t *grenade;
|
||||
|
||||
static inline boolean PIT_GrenadeRing(mobj_t *thing)
|
||||
{
|
||||
if (!grenade)
|
||||
return true;
|
||||
|
||||
if (thing->type != MT_PLAYER) // Don't explode for anything but an actual player.
|
||||
return true;
|
||||
|
||||
if (thing == grenade->target && !(grenade->threshold == 0)) // Don't blow up at your owner.
|
||||
return true;
|
||||
|
||||
if (thing->player && thing->player->kartstuff[k_bootaketimer])
|
||||
return true;
|
||||
|
||||
if ((gametype == GT_CTF || gametype == GT_MATCH)
|
||||
&& !cv_friendlyfire.value && grenade->target->player && thing->player
|
||||
&& grenade->target->player->ctfteam == thing->player->ctfteam) // Don't blow up at your teammates, unless friendlyfire is on
|
||||
return true;
|
||||
|
||||
// see if it went over / under
|
||||
if (grenade->z - grenade->info->painchance > thing->z + thing->height)
|
||||
return true; // overhead
|
||||
if (grenade->z + grenade->height + grenade->info->painchance < thing->z)
|
||||
return true; // underneath
|
||||
|
||||
if (netgame && thing->player && thing->player->spectator)
|
||||
return true;
|
||||
|
||||
if (!(thing->flags & MF_SHOOTABLE))
|
||||
{
|
||||
// didn't do any damage
|
||||
return true;
|
||||
}
|
||||
|
||||
if (P_AproxDistance(P_AproxDistance(thing->x - grenade->x, thing->y - grenade->y),
|
||||
thing->z - grenade->z) > grenade->info->painchance)
|
||||
return true; // Too far away
|
||||
|
||||
// Explode!
|
||||
P_SetMobjState(grenade, grenade->info->deathstate);
|
||||
return false;
|
||||
}
|
||||
|
||||
void A_GrenadeRing(mobj_t *actor)
|
||||
{
|
||||
INT32 bx, by, xl, xh, yl, yh;
|
||||
const fixed_t explodedist = actor->info->painchance;
|
||||
|
||||
if (leveltime % 35 == 0)
|
||||
S_StartSound(actor, actor->info->activesound);
|
||||
|
||||
// Use blockmap to check for nearby shootables
|
||||
yh = (unsigned)(actor->y + explodedist - bmaporgy)>>MAPBLOCKSHIFT;
|
||||
yl = (unsigned)(actor->y - explodedist - bmaporgy)>>MAPBLOCKSHIFT;
|
||||
xh = (unsigned)(actor->x + explodedist - bmaporgx)>>MAPBLOCKSHIFT;
|
||||
xl = (unsigned)(actor->x - explodedist - bmaporgx)>>MAPBLOCKSHIFT;
|
||||
|
||||
grenade = actor;
|
||||
|
||||
for (by = yl; by <= yh; by++)
|
||||
for (bx = xl; bx <= xh; bx++)
|
||||
P_BlockThingsIterator(bx, by, PIT_GrenadeRing);
|
||||
}
|
||||
//}
|
||||
|
||||
// Function: A_SetSolidSteam
|
||||
//
|
||||
// Description: Makes steam solid so it collides with the player to boost them.
|
||||
|
@ -8001,6 +8073,149 @@ void A_ToggleFlameJet(mobj_t* actor)
|
|||
}
|
||||
}
|
||||
|
||||
//{ SRB2kart - A_RedShellChase and A_BobombExplode
|
||||
void A_RedShellChase(mobj_t *actor)
|
||||
{
|
||||
|
||||
INT32 c = 0;
|
||||
INT32 stop;
|
||||
player_t *player;
|
||||
|
||||
if (actor->tracer)
|
||||
{
|
||||
if (!actor->tracer->health)
|
||||
{
|
||||
P_SetTarget(&actor->tracer, NULL);
|
||||
}
|
||||
|
||||
if (actor->tracer && (actor->tracer->health))
|
||||
{
|
||||
P_Thrust(actor, R_PointToAngle2(actor->x, actor->y, actor->tracer->x, actor->tracer->y), actor->info->speed);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// first time init, this allow minimum lastlook changes
|
||||
if (actor->lastlook == -1)
|
||||
actor->lastlook = P_RandomFixed();
|
||||
|
||||
actor->lastlook %= MAXPLAYERS;
|
||||
|
||||
stop = (actor->lastlook - 1) & PLAYERSMASK;
|
||||
|
||||
if (actor->lastlook >= 0)
|
||||
{
|
||||
for (; ; actor->lastlook = (actor->lastlook + 1) & PLAYERSMASK)
|
||||
{
|
||||
if (!playeringame[actor->lastlook])
|
||||
continue;
|
||||
|
||||
if (c++ == 2)
|
||||
return;
|
||||
|
||||
player = &players[actor->lastlook];
|
||||
|
||||
if (!player->mo)
|
||||
continue;
|
||||
|
||||
if (player->mo->health <= 0)
|
||||
continue; // dead
|
||||
|
||||
if ((netgame || multiplayer) && player->spectator)
|
||||
continue; // spectator
|
||||
|
||||
if (actor->target && actor->target->player)
|
||||
{
|
||||
if (player->mo == actor->target)
|
||||
continue;
|
||||
|
||||
// Don't home in on teammates.
|
||||
if (gametype == GT_CTF
|
||||
&& actor->target->player->ctfteam == player->ctfteam)
|
||||
continue;
|
||||
|
||||
if (gametype == GT_RACE) // Only in races, in match and CTF you should go after any nearby players
|
||||
{
|
||||
// USER TARGET
|
||||
if (actor->target->player->kartstuff[k_position] != (player->kartstuff[k_position] + 1)) // Red Shells only go after the person directly ahead of you -Sryder
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(gametype == GT_RACE))
|
||||
{
|
||||
if (P_AproxDistance(P_AproxDistance(player->mo->x-actor->x,
|
||||
player->mo->y-actor->y), player->mo->z-actor->z) > RING_DIST)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ((gametype == GT_RACE) || (gametype != GT_RACE // If in match etc. only home in when you get close enough, in race etc. home in all the time
|
||||
&& P_AproxDistance(P_AproxDistance(player->mo->x-actor->x,
|
||||
player->mo->y-actor->y), player->mo->z-actor->z) < RING_DIST))
|
||||
P_SetTarget(&actor->tracer, player->mo);
|
||||
return;
|
||||
|
||||
// Moved to bottom so it doesn't not check the last player
|
||||
// done looking
|
||||
if (actor->lastlook == stop)
|
||||
{
|
||||
if (gametype == GT_RACE)
|
||||
actor->lastlook = -2;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
void A_BobombExplode(mobj_t *actor)
|
||||
{
|
||||
mobj_t *mo2;
|
||||
thinker_t *th;
|
||||
INT32 d;
|
||||
INT32 locvar1 = var1;
|
||||
mobjtype_t type;
|
||||
|
||||
type = (mobjtype_t)locvar1;
|
||||
|
||||
for (d = 0; d < 16; d++)
|
||||
K_SpawnKartExplosion(actor->x, actor->y, actor->z, actor->info->painchance + 32*FRACUNIT, 32, type, d*(ANGLE_45/4), false, false); // 32 <-> 64
|
||||
|
||||
S_StartSound(actor, sfx_prloop);
|
||||
|
||||
for (th = thinkercap.next; th != &thinkercap; th = th->next)
|
||||
{
|
||||
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
|
||||
continue;
|
||||
|
||||
mo2 = (mobj_t *)th;
|
||||
|
||||
if (mo2 == actor) // Don't explode yourself! Endless loop!
|
||||
continue;
|
||||
|
||||
if (P_AproxDistance(P_AproxDistance(mo2->x - actor->x, mo2->y - actor->y), mo2->z - actor->z) > actor->info->painchance)
|
||||
continue;
|
||||
|
||||
if ((mo2->flags & MF_SHOOTABLE) && !(mo2->flags & MF_SCENERY))
|
||||
{
|
||||
actor->flags2 |= MF2_DEBRIS;
|
||||
|
||||
if (mo2->player) // Looks like we're going to have to need a seperate function for this too
|
||||
K_ExplodePlayer(mo2->player, actor->target);
|
||||
else
|
||||
P_DamageMobj(mo2, actor, actor->target, 1);
|
||||
|
||||
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
//}
|
||||
|
||||
// Function: A_OrbitNights
|
||||
//
|
||||
// Description: Used by Chaos Emeralds to orbit around Nights (aka Super Sonic.)
|
||||
|
|
|
@ -2988,7 +2988,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
if (!player->kartstuff[k_startimer] && player->kartstuff[k_growshrinktimer] <= 0)
|
||||
{
|
||||
// Start slipping!
|
||||
P_SpinPlayerMobj(player->mo, source);
|
||||
K_SpinPlayer(player, source);
|
||||
|
||||
// Start shrinking!
|
||||
player->mo->destscale = 70;
|
||||
|
@ -3000,7 +3000,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
player->kartstuff[k_growshrinktimer] = 2;
|
||||
}
|
||||
// Invincible or not, we still need this.
|
||||
//P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THUNDERSHIELD); // TODO: Add this
|
||||
P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_LIGHTNING);
|
||||
return true;
|
||||
}
|
||||
else if (damage == 64 && player == source->player)
|
||||
|
@ -3010,8 +3010,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
if (damage == 65 && player->kartstuff[k_position] == 1)
|
||||
{
|
||||
// Just need to do this now! Being thrown upwards is done by the explosion.
|
||||
//P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THUNBERSHIELD); // TODO: Add this
|
||||
//P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BLUEEXPLODE); // TODO: Add this
|
||||
P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BLUELIGHTNING);
|
||||
P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BLUEEXPLOSION);
|
||||
return true;
|
||||
}
|
||||
else if (damage == 65 && player->kartstuff[k_position] > 1)
|
||||
|
@ -3043,8 +3043,11 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
return false;
|
||||
else
|
||||
{
|
||||
player->kartstuff[k_spinouttype] = 1;
|
||||
K_SpinPlayer(player, source);
|
||||
damage = player->mo->health - 1;
|
||||
P_RingDamage(player, inflictor, source, damage);
|
||||
player->mo->momx = player->mo->momy = 0;
|
||||
}
|
||||
/* // SRB2kart - don't need these
|
||||
else if (metalrecording)
|
||||
|
|
70
src/p_mobj.c
70
src/p_mobj.c
|
@ -1484,7 +1484,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)
|
||||
if (player->panim == PA_WALK && player->kartstuff[k_spinouttimer] == 0)
|
||||
P_SetPlayerMobjState(mo, S_KART_STND); // SRB2kart - was S_PLAY_STND
|
||||
mo->momx = player->cmomx;
|
||||
mo->momy = player->cmomy;
|
||||
|
@ -1908,6 +1908,14 @@ void P_XYMovement(mobj_t *mo)
|
|||
return;
|
||||
#endif
|
||||
|
||||
//{ SRB2kart stuff
|
||||
//if (mo->type == MT_SHELLITEM || mo->type == MT_REDSHELLITEM2 || (mo->type == MT_REDSHELLITEM && !mo->tracer))
|
||||
// return;
|
||||
|
||||
if (mo->player && mo->player->kartstuff[k_spinouttimer] && mo->player->speed <= mo->player->normalspeed/4)
|
||||
return;
|
||||
//}
|
||||
|
||||
if (((!(mo->eflags & MFE_VERTICALFLIP) && mo->z > mo->floorz) || (mo->eflags & MFE_VERTICALFLIP && mo->z+mo->height < mo->ceilingz))
|
||||
&& !(player && player->pflags & PF_SLIDING))
|
||||
return; // no friction when airborne
|
||||
|
@ -2671,7 +2679,8 @@ static void P_PlayerZMovement(mobj_t *mo)
|
|||
goto nightsdone;
|
||||
}
|
||||
// Get up if you fell.
|
||||
if (mo->state == &states[mo->info->painstate]) // SRB2kart
|
||||
if ((mo->state == &states[mo->info->painstate] || (mo->state >= &states[S_KART_SPIN1] && mo->state <= &states[S_KART_SPIN8]))
|
||||
&& mo->player->kartstuff[k_spinouttimer] == 0 && mo->player->kartstuff[k_squishedtimer] == 0) // SRB2kart
|
||||
P_SetPlayerMobjState(mo, S_KART_STND);
|
||||
|
||||
#ifdef ESLOPE
|
||||
|
@ -2760,7 +2769,8 @@ static void P_PlayerZMovement(mobj_t *mo)
|
|||
|
||||
// Cut momentum in half when you hit the ground and
|
||||
// aren't pressing any controls.
|
||||
if (!(mo->player->cmd.forwardmove || mo->player->cmd.sidemove) && !mo->player->cmomx && !mo->player->cmomy && !(mo->player->pflags & PF_SPINNING))
|
||||
if (!(mo->player->cmd.forwardmove || mo->player->cmd.sidemove) && !mo->player->cmomx && !mo->player->cmomy
|
||||
&& !(mo->player->pflags & PF_SPINNING) && !(mo->player->kartstuff[k_spinouttimer]))
|
||||
{
|
||||
mo->momx = mo->momx/2;
|
||||
mo->momy = mo->momy/2;
|
||||
|
@ -2774,26 +2784,54 @@ static void P_PlayerZMovement(mobj_t *mo)
|
|||
mo->player->skidtime = TICRATE;
|
||||
mo->tics = -1;
|
||||
}
|
||||
else if (mo->player->pflags & PF_JUMPED || (mo->player->pflags & (PF_SPINNING|PF_USEDOWN)) != (PF_SPINNING|PF_USEDOWN)
|
||||
|| mo->player->powers[pw_tailsfly]) // SRB2kart
|
||||
else if ((mo->player->pflags & PF_JUMPED || (mo->player->pflags & (PF_SPINNING|PF_USEDOWN)) != (PF_SPINNING|PF_USEDOWN)
|
||||
|| mo->player->powers[pw_tailsfly]) && (mo->player->kartstuff[k_spinouttimer] == 0)) // SRB2kart
|
||||
{
|
||||
if (mo->player->cmomx || mo->player->cmomy)
|
||||
ticcmd_t *cmd;
|
||||
|
||||
cmd = &mo->player->cmd;
|
||||
|
||||
// Standing frames - S_KART_STND S_KART_STND_L S_KART_STND_R
|
||||
if (mo->player->speed == 0)
|
||||
{
|
||||
if (mo->player->speed >= FixedMul(mo->player->runspeed, mo->scale) && mo->player->panim != PA_RUN)
|
||||
P_SetPlayerMobjState(mo, S_KART_RUN1);
|
||||
else if ((mo->player->rmomx || mo->player->rmomy) && mo->player->panim != PA_WALK)
|
||||
P_SetPlayerMobjState(mo, S_KART_WALK1);
|
||||
else if (!mo->player->rmomx && !mo->player->rmomy && mo->player->panim != PA_IDLE)
|
||||
if (cmd->buttons & BT_DRIFTRIGHT && !(mo->state == &states[S_KART_STND_R]))
|
||||
P_SetPlayerMobjState(mo, S_KART_STND_R);
|
||||
else if (cmd->buttons & BT_DRIFTLEFT && !(mo->state == &states[S_KART_STND_L]))
|
||||
P_SetPlayerMobjState(mo, S_KART_STND_L);
|
||||
else if (!(cmd->buttons & BT_DRIFTRIGHT || cmd->buttons & BT_DRIFTLEFT) && !(mo->state == &states[S_KART_STND]))
|
||||
P_SetPlayerMobjState(mo, S_KART_STND);
|
||||
}
|
||||
else
|
||||
// Drifting Left - S_KART_DRIFT_L1
|
||||
else if (mo->player->kartstuff[k_drift] < 0 && P_IsObjectOnGround(mo))
|
||||
{
|
||||
if (mo->player->speed >= FixedMul(mo->player->runspeed, mo->scale) && mo->player->panim != PA_RUN)
|
||||
if (!(mo->state == &states[S_KART_DRIFT_L1] || mo->state == &states[S_KART_DRIFT_L2]))
|
||||
P_SetPlayerMobjState(mo, S_KART_DRIFT_L1);
|
||||
}
|
||||
// Drifting Right - S_KART_DRIFT_R1
|
||||
else if (mo->player->kartstuff[k_drift] > 0 && P_IsObjectOnGround(mo))
|
||||
{
|
||||
if (!(mo->state == &states[S_KART_DRIFT_R1] || mo->state == &states[S_KART_DRIFT_R2]))
|
||||
P_SetPlayerMobjState(mo, S_KART_DRIFT_R1);
|
||||
}
|
||||
// Run frames - S_KART_RUN1 S_KART_RUN_L1 S_KART_RUN_R1
|
||||
else if (mo->player->speed > FixedMul(mo->player->runspeed, mo->scale))
|
||||
{
|
||||
if (cmd->buttons & BT_DRIFTRIGHT && !(mo->state == &states[S_KART_RUN_R1] || mo->state == &states[S_KART_RUN_R2]))
|
||||
P_SetPlayerMobjState(mo, S_KART_RUN_R1);
|
||||
else if (cmd->buttons & BT_DRIFTLEFT && !(mo->state == &states[S_KART_RUN_L1] || mo->state == &states[S_KART_RUN_L2]))
|
||||
P_SetPlayerMobjState(mo, S_KART_RUN_L1);
|
||||
else if (!(cmd->buttons & BT_DRIFTRIGHT || cmd->buttons & BT_DRIFTLEFT) && !(mo->state == &states[S_KART_RUN1] || mo->state == &states[S_KART_RUN2]))
|
||||
P_SetPlayerMobjState(mo, S_KART_RUN1);
|
||||
else if ((mo->momx || mo->momy) && mo->player->panim != PA_WALK)
|
||||
}
|
||||
// Walk frames - S_KART_WALK1 S_KART_WALK_L1 S_KART_WALK_R1
|
||||
else if (mo->player->speed <= FixedMul(mo->player->runspeed, mo->scale))
|
||||
{
|
||||
if (cmd->buttons & BT_DRIFTRIGHT && !(mo->state == &states[S_KART_WALK_R1] || mo->state == &states[S_KART_WALK_R2]))
|
||||
P_SetPlayerMobjState(mo, S_KART_WALK_R1);
|
||||
else if (cmd->buttons & BT_DRIFTLEFT && !(mo->state == &states[S_KART_WALK_L1] || mo->state == &states[S_KART_WALK_L2]))
|
||||
P_SetPlayerMobjState(mo, S_KART_WALK_L1);
|
||||
else if (!(cmd->buttons & BT_DRIFTRIGHT || cmd->buttons & BT_DRIFTLEFT) && !(mo->state == &states[S_KART_WALK1] || mo->state == &states[S_KART_WALK2]))
|
||||
P_SetPlayerMobjState(mo, S_KART_WALK1);
|
||||
else if (!mo->momx && !mo->momy && mo->player->panim != PA_IDLE)
|
||||
P_SetPlayerMobjState(mo, S_KART_STND);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4075,7 +4075,7 @@ DoneSection2:
|
|||
if (player->mo->momz > 0)
|
||||
break;
|
||||
|
||||
if (player->cmd.buttons & BT_USE)
|
||||
if (player->cmd.buttons & BT_BRAKE)
|
||||
break;
|
||||
|
||||
if (!(player->pflags & PF_SLIDING) && player->mo->state == &states[player->mo->info->painstate])
|
||||
|
|
122
src/p_user.c
122
src/p_user.c
|
@ -907,17 +907,20 @@ void P_GivePlayerRings(player_t *player, INT32 num_rings)
|
|||
if (!G_IsSpecialStage(gamemap) || !useNightsSS)
|
||||
player->totalring += num_rings;
|
||||
|
||||
//{ SRB2kart - rings don't really do anything, but we don't want the player spilling them later.
|
||||
/*
|
||||
// Can only get up to 9999 rings, sorry!
|
||||
if (player->mo->health > 10000)
|
||||
{
|
||||
player->mo->health = 10000;
|
||||
player->health = 10000;
|
||||
}
|
||||
else if (player->mo->health < 1)
|
||||
else if (player->mo->health < 1)*/
|
||||
{
|
||||
player->mo->health = 1;
|
||||
player->health = 1;
|
||||
}
|
||||
//}
|
||||
|
||||
// Now extra life bonuses are handled here instead of in P_MovePlayer, since why not?
|
||||
if (!ultimatemode && !modeattacking && !G_IsSpecialStage(gamemap) && G_GametypeUsesLives())
|
||||
|
@ -2705,7 +2708,7 @@ static void P_DoClimbing(player_t *player)
|
|||
else if ((!(player->mo->momx || player->mo->momy || player->mo->momz) || !climb) && player->mo->state != &states[S_PLAY_CLIMB1])
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_CLIMB1);
|
||||
|
||||
if (cmd->buttons & BT_USE && !(player->pflags & PF_JUMPSTASIS))
|
||||
if (cmd->buttons & BT_BRAKE && !(player->pflags & PF_JUMPSTASIS))
|
||||
{
|
||||
player->climbing = 0;
|
||||
player->pflags |= PF_JUMPED;
|
||||
|
@ -3194,7 +3197,7 @@ static void P_DoFiring(player_t *player, ticcmd_t *cmd)
|
|||
I_Assert(player != NULL);
|
||||
I_Assert(!P_MobjWasRemoved(player->mo));
|
||||
|
||||
if (cmd->buttons & BT_ATTACK || cmd->buttons & BT_FIRENORMAL)
|
||||
if (cmd->buttons & BT_ATTACK)
|
||||
{
|
||||
if (!(player->pflags & PF_ATTACKDOWN) && player->powers[pw_shield] & SH_FIREFLOWER && !player->climbing)
|
||||
{
|
||||
|
@ -3209,10 +3212,10 @@ static void P_DoFiring(player_t *player, ticcmd_t *cmd)
|
|||
mobj_t *mo = NULL;
|
||||
player->pflags |= PF_ATTACKDOWN;
|
||||
|
||||
if (cmd->buttons & BT_FIRENORMAL) // No powers, just a regular ring.
|
||||
goto firenormal; //code repetition sucks.
|
||||
//if (cmd->buttons & BT_FIRENORMAL) // No powers, just a regular ring.
|
||||
// goto firenormal; //code repetition sucks.
|
||||
// Bounce ring
|
||||
else if (player->currentweapon == WEP_BOUNCE && player->powers[pw_bouncering])
|
||||
if (player->currentweapon == WEP_BOUNCE && player->powers[pw_bouncering])
|
||||
{
|
||||
if (player->health <= 1)
|
||||
return;
|
||||
|
@ -3333,7 +3336,7 @@ static void P_DoFiring(player_t *player, ticcmd_t *cmd)
|
|||
// No powers, just a regular ring.
|
||||
else
|
||||
{
|
||||
firenormal:
|
||||
//firenormal:
|
||||
// Infinity ring was selected.
|
||||
// Mystic wants this ONLY to happen specifically if it's selected,
|
||||
// and to not be able to get around it EITHER WAY with firenormal.
|
||||
|
@ -3572,6 +3575,9 @@ void P_DoJump(player_t *player, boolean soundandstate)
|
|||
|
||||
if (!player->jumpfactor)
|
||||
return;
|
||||
|
||||
if (player->kartstuff[k_spinouttimer]) // SRB2kart
|
||||
return;
|
||||
|
||||
if (player->climbing)
|
||||
{
|
||||
|
@ -3747,7 +3753,7 @@ static void P_DoSpinDash(player_t *player, ticcmd_t *cmd)
|
|||
return;
|
||||
|
||||
#ifdef HAVE_BLUA
|
||||
if (cmd->buttons & BT_USE)
|
||||
if (cmd->buttons & BT_BRAKE)
|
||||
{
|
||||
if (LUAh_SpinSpecial(player))
|
||||
return;
|
||||
|
@ -3758,7 +3764,7 @@ static void P_DoSpinDash(player_t *player, ticcmd_t *cmd)
|
|||
if ((player->charability2 == CA2_SPINDASH) && !(player->pflags & PF_SLIDING) && !player->exiting
|
||||
&& !P_PlayerInPain(player)) // subsequent revs
|
||||
{
|
||||
if ((cmd->buttons & BT_USE) && player->speed < FixedMul(5<<FRACBITS, player->mo->scale) && !player->mo->momz && onground && !(player->pflags & PF_USEDOWN) && !(player->pflags & PF_SPINNING)
|
||||
if ((cmd->buttons & BT_BRAKE) && player->speed < FixedMul(5<<FRACBITS, player->mo->scale) && !player->mo->momz && onground && !(player->pflags & PF_USEDOWN) && !(player->pflags & PF_SPINNING)
|
||||
#ifdef ESLOPE
|
||||
&& (!player->mo->standingslope || abs(player->mo->standingslope->zdelta) < FRACUNIT/2)
|
||||
#endif
|
||||
|
@ -3772,7 +3778,7 @@ static void P_DoSpinDash(player_t *player, ticcmd_t *cmd)
|
|||
//P_SetPlayerMobjState(player->mo, S_PLAY_ATK1);
|
||||
player->pflags |= PF_USEDOWN;
|
||||
}
|
||||
else if ((cmd->buttons & BT_USE) && (player->pflags & PF_STARTDASH))
|
||||
else if ((cmd->buttons & BT_BRAKE) && (player->pflags & PF_STARTDASH))
|
||||
{
|
||||
player->dashspeed += FixedMul(FRACUNIT, player->mo->scale);
|
||||
|
||||
|
@ -3790,7 +3796,7 @@ static void P_DoSpinDash(player_t *player, ticcmd_t *cmd)
|
|||
// If not moving up or down, and travelling faster than a speed of four while not holding
|
||||
// down the spin button and not spinning.
|
||||
// AKA Just go into a spin on the ground, you idiot. ;)
|
||||
else if ((cmd->buttons & BT_USE || ((twodlevel || (player->mo->flags2 & MF2_TWOD)) && cmd->forwardmove < -20))
|
||||
else if ((cmd->buttons & BT_BRAKE || ((twodlevel || (player->mo->flags2 & MF2_TWOD)) && cmd->forwardmove < -20))
|
||||
&& !player->climbing && !player->mo->momz && onground && (player->speed > FixedMul(5<<FRACBITS, player->mo->scale)
|
||||
#ifdef ESLOPE
|
||||
|| (player->mo->standingslope && abs(player->mo->standingslope->zdelta) >= FRACUNIT/2)
|
||||
|
@ -3929,7 +3935,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
|
|||
if (player->pflags & PF_JUMPSTASIS)
|
||||
return;
|
||||
|
||||
if (cmd->buttons & BT_USE && !(player->pflags & PF_JUMPDOWN) && !player->exiting && !P_PlayerInPain(player))
|
||||
if (cmd->buttons & BT_BRAKE && !(player->pflags & PF_JUMPDOWN) && !player->exiting && !P_PlayerInPain(player))
|
||||
{
|
||||
if (onground || player->climbing || player->pflags & (PF_CARRIED|PF_ITEMHANG|PF_ROPEHANG))
|
||||
{}
|
||||
|
@ -4533,7 +4539,7 @@ static void P_3dMovement(player_t *player)
|
|||
|
||||
cmd = &player->cmd;
|
||||
|
||||
if (player->exiting || player->pflags & PF_STASIS)
|
||||
if (player->exiting || player->pflags & PF_STASIS || player->kartstuff[k_spinouttimer]) // pw_introcam?
|
||||
{
|
||||
cmd->forwardmove = cmd->sidemove = 0;
|
||||
if (player->pflags & PF_GLIDING)
|
||||
|
@ -4875,7 +4881,7 @@ static void P_SpectatorMovement(player_t *player)
|
|||
|
||||
if (cmd->buttons & BT_JUMP)
|
||||
player->mo->z += FRACUNIT*16;
|
||||
else if (cmd->buttons & BT_USE)
|
||||
else if (cmd->buttons & BT_BRAKE)
|
||||
player->mo->z -= FRACUNIT*16;
|
||||
|
||||
// Aiming needed for SEENAMES, etc.
|
||||
|
@ -5916,8 +5922,8 @@ static void P_NiGHTSMovement(player_t *player)
|
|||
|
||||
// No more bumper braking
|
||||
if (!player->bumpertime
|
||||
&& ((cmd->buttons & (BT_CAMLEFT|BT_CAMRIGHT)) == (BT_CAMLEFT|BT_CAMRIGHT)
|
||||
|| (cmd->buttons & BT_USE)))
|
||||
&& ((cmd->buttons & (BT_FORWARD|BT_BACKWARD)) == (BT_FORWARD|BT_BACKWARD)
|
||||
|| (cmd->buttons & BT_BRAKE)))
|
||||
{
|
||||
if (!(player->pflags & PF_SKIDDOWN))
|
||||
S_StartSound(player->mo, sfx_ngskid);
|
||||
|
@ -6477,6 +6483,23 @@ static void P_MovePlayer(player_t *player)
|
|||
// MOVEMENT CODE //
|
||||
//////////////////////
|
||||
|
||||
//{ SRB2kart slip net
|
||||
|
||||
if (player->kartstuff[k_spinouttimer] > 0 && player->kartstuff[k_spinout] == 0)
|
||||
{
|
||||
K_SpinPlayer(player, NULL); // Here just for in-level oil spills now
|
||||
}
|
||||
// If you have one but not the other, we should get rid of the one we have
|
||||
else if (player->kartstuff[k_spinouttimer] == 0 && player->kartstuff[k_spinout] > 0)
|
||||
player->kartstuff[k_spinout] = 0;
|
||||
|
||||
// If somehow the power has gotten larger than the timer, it should be lowered back to it
|
||||
if (player->kartstuff[k_spinouttimer] > player->kartstuff[k_spinout])
|
||||
player->kartstuff[k_spinouttimer] = player->kartstuff[k_spinout];
|
||||
|
||||
//}
|
||||
|
||||
|
||||
if (twodlevel || player->mo->flags2 & MF2_TWOD) // 2d-level, so special control applies.
|
||||
P_2dMovement(player);
|
||||
else
|
||||
|
@ -6530,11 +6553,11 @@ static void P_MovePlayer(player_t *player)
|
|||
// Standing frames - S_KART_STND S_KART_STND_L S_KART_STND_R
|
||||
if (player->speed == 0)
|
||||
{
|
||||
if (cmd->buttons & BT_WEAPONNEXT && !(player->mo->state == &states[S_KART_STND_R]))
|
||||
if (cmd->buttons & BT_DRIFTRIGHT && !(player->mo->state == &states[S_KART_STND_R]))
|
||||
P_SetPlayerMobjState(player->mo, S_KART_STND_R);
|
||||
else if (cmd->buttons & BT_WEAPONPREV && !(player->mo->state == &states[S_KART_STND_L]))
|
||||
else if (cmd->buttons & BT_DRIFTLEFT && !(player->mo->state == &states[S_KART_STND_L]))
|
||||
P_SetPlayerMobjState(player->mo, S_KART_STND_L);
|
||||
else if (!(cmd->buttons & BT_WEAPONNEXT || cmd->buttons & BT_WEAPONPREV) && !(player->mo->state == &states[S_KART_STND]))
|
||||
else if (!(cmd->buttons & BT_DRIFTRIGHT || cmd->buttons & BT_DRIFTLEFT) && !(player->mo->state == &states[S_KART_STND]))
|
||||
P_SetPlayerMobjState(player->mo, S_KART_STND);
|
||||
}
|
||||
// Drifting Left - S_KART_DRIFT_L1
|
||||
|
@ -6552,21 +6575,21 @@ static void P_MovePlayer(player_t *player)
|
|||
// Run frames - S_KART_RUN1 S_KART_RUN_L1 S_KART_RUN_R1
|
||||
else if (player->speed > runspd)
|
||||
{
|
||||
if (cmd->buttons & BT_WEAPONNEXT && !(player->mo->state == &states[S_KART_RUN_R1] || player->mo->state == &states[S_KART_RUN_R2]))
|
||||
if (cmd->buttons & BT_DRIFTRIGHT && !(player->mo->state == &states[S_KART_RUN_R1] || player->mo->state == &states[S_KART_RUN_R2]))
|
||||
P_SetPlayerMobjState(player->mo, S_KART_RUN_R1);
|
||||
else if (cmd->buttons & BT_WEAPONPREV && !(player->mo->state == &states[S_KART_RUN_L1] || player->mo->state == &states[S_KART_RUN_L2]))
|
||||
else if (cmd->buttons & BT_DRIFTLEFT && !(player->mo->state == &states[S_KART_RUN_L1] || player->mo->state == &states[S_KART_RUN_L2]))
|
||||
P_SetPlayerMobjState(player->mo, S_KART_RUN_L1);
|
||||
else if (!(cmd->buttons & BT_WEAPONNEXT || cmd->buttons & BT_WEAPONPREV) && !(player->mo->state == &states[S_KART_RUN1] || player->mo->state == &states[S_KART_RUN2]))
|
||||
else if (!(cmd->buttons & BT_DRIFTRIGHT || cmd->buttons & BT_DRIFTLEFT) && !(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_WALK_L1 S_KART_WALK_R1
|
||||
else if (player->speed <= runspd)
|
||||
{
|
||||
if (cmd->buttons & BT_WEAPONNEXT && !(player->mo->state == &states[S_KART_WALK_R1] || player->mo->state == &states[S_KART_WALK_R2]))
|
||||
if (cmd->buttons & BT_DRIFTRIGHT && !(player->mo->state == &states[S_KART_WALK_R1] || player->mo->state == &states[S_KART_WALK_R2]))
|
||||
P_SetPlayerMobjState(player->mo, S_KART_WALK_R1);
|
||||
else if (cmd->buttons & BT_WEAPONPREV && !(player->mo->state == &states[S_KART_WALK_L1] || player->mo->state == &states[S_KART_WALK_L2]))
|
||||
else if (cmd->buttons & BT_DRIFTLEFT && !(player->mo->state == &states[S_KART_WALK_L1] || player->mo->state == &states[S_KART_WALK_L2]))
|
||||
P_SetPlayerMobjState(player->mo, S_KART_WALK_L1);
|
||||
else if (!(cmd->buttons & BT_WEAPONNEXT || cmd->buttons & BT_WEAPONPREV) && !(player->mo->state == &states[S_KART_WALK1] || player->mo->state == &states[S_KART_WALK2]))
|
||||
else if (!(cmd->buttons & BT_DRIFTRIGHT || cmd->buttons & BT_DRIFTLEFT) && !(player->mo->state == &states[S_KART_WALK1] || player->mo->state == &states[S_KART_WALK2]))
|
||||
P_SetPlayerMobjState(player->mo, S_KART_WALK1);
|
||||
}
|
||||
}
|
||||
|
@ -6575,7 +6598,7 @@ static void P_MovePlayer(player_t *player)
|
|||
|
||||
// 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)
|
||||
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
|
||||
|
||||
// If Springing, but travelling DOWNWARD, change back!
|
||||
|
@ -6591,34 +6614,33 @@ static void P_MovePlayer(player_t *player)
|
|||
|
||||
//{ SRB2kart
|
||||
// Engine Sounds.
|
||||
/* // -- Need to load these sounds into game first
|
||||
if (!player->exiting)
|
||||
{
|
||||
if (player->speed == 0 && onground && player->speed == 0 && leveltime % 6 == 0 && kartmode)
|
||||
if (player->speed == 0 && onground && player->speed == 0 && leveltime % 6 == 0)
|
||||
S_StartSound(player->mo, sfx_kart1);
|
||||
|
||||
if ((player->speed < runspd && player->speed != 0) && leveltime % 8 == 0 && kartmode)
|
||||
if ((player->speed < runspd && player->speed != 0) && leveltime % 8 == 0)
|
||||
S_StartSound(player->mo, sfx_kart2);
|
||||
|
||||
if ((player->speed > runspd) && leveltime % 8 == 0 && kartmode)
|
||||
if ((player->speed > runspd) && leveltime % 8 == 0)
|
||||
S_StartSound(player->mo, sfx_kart3);
|
||||
|
||||
// Drifting sound
|
||||
if (kartmode)
|
||||
{
|
||||
// Leveltime being 50 might take a while at times. We'll start it up once, isntantly.
|
||||
if ((player->powers[pw_drift] == 1 || player->powers[pw_drift] == -1) && onground && !S_SoundPlaying(NULL, sfx_mkdrft))
|
||||
if ((player->kartstuff[k_drift] == 1 || player->kartstuff[k_drift] == -1) && onground && !S_SoundPlaying(NULL, sfx_mkdrft))
|
||||
S_StartSound(player->mo, sfx_mkdrft);
|
||||
// Start looping the sound now.
|
||||
else if (leveltime % 50 == 0 && ((player->powers[pw_drift] == 1 || player->powers[pw_drift] == -1) && onground))
|
||||
else if (leveltime % 50 == 0 && ((player->kartstuff[k_drift] == 1 || player->kartstuff[k_drift] == -1) && onground))
|
||||
S_StartSound(player->mo, sfx_mkdrft);
|
||||
// Ok, we'll stop now.
|
||||
else if ((player->powers[pw_drift] == 0)
|
||||
else if ((player->kartstuff[k_drift] == 0)
|
||||
&& (player == &players[consoleplayer] || (splitscreen && player == &players[secondarydisplayplayer])))
|
||||
S_StopSoundByID(player->mo, sfx_mkdrft);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
K_MoveKartPlayer(player, onground);
|
||||
//}
|
||||
|
||||
|
||||
|
@ -6829,7 +6851,7 @@ static void P_MovePlayer(player_t *player)
|
|||
S_StartSound(player->mo, sfx_putput);
|
||||
|
||||
// Descend
|
||||
if (cmd->buttons & BT_USE && !(player->pflags & PF_STASIS) && !player->exiting)
|
||||
if (cmd->buttons & BT_BRAKE && !(player->pflags & PF_STASIS) && !player->exiting)
|
||||
if (P_MobjFlip(player->mo)*player->mo->momz > -FixedMul(5*actionspd, player->mo->scale))
|
||||
P_SetObjectMomZ(player->mo, -actionspd/2, true);
|
||||
|
||||
|
@ -6914,7 +6936,7 @@ static void P_MovePlayer(player_t *player)
|
|||
{
|
||||
fixed_t tweenvalue = max(abs(cmd->forwardmove), abs(cmd->sidemove));
|
||||
|
||||
if (tweenvalue < 10 && (cmd->buttons & (BT_CAMLEFT|BT_CAMRIGHT)) == (BT_CAMLEFT|BT_CAMRIGHT)) {
|
||||
if (tweenvalue < 10 && (cmd->buttons & (BT_FORWARD|BT_BACKWARD)) == (BT_FORWARD|BT_BACKWARD)) {
|
||||
tempangle = (cmd->angleturn << 16);
|
||||
tweenvalue = 16;
|
||||
}
|
||||
|
@ -6957,11 +6979,11 @@ static void P_MovePlayer(player_t *player)
|
|||
///////////////////////////
|
||||
|
||||
/* // SRB2kart - what's a shield? Never heard of it. Never happened. Nope.
|
||||
if (cmd->buttons & BT_USE) // Spin button effects
|
||||
if (cmd->buttons & BT_BRAKE) // Spin button effects
|
||||
{
|
||||
if (player->pflags & PF_JUMPED) // If the player is jumping
|
||||
{
|
||||
if (!(player->pflags & PF_USEDOWN)) // If the player is not holding down BT_USE
|
||||
if (!(player->pflags & PF_USEDOWN)) // If the player is not holding down BT_BRAKE
|
||||
{
|
||||
// Jump shield activation
|
||||
if (!P_PlayerInPain(player) // If the player is not in pain
|
||||
|
@ -7059,7 +7081,7 @@ static void P_MovePlayer(player_t *player)
|
|||
P_DoTeeter(player);
|
||||
|
||||
// Toss a flag
|
||||
if (G_GametypeHasTeams() && (cmd->buttons & BT_TOSSFLAG) && !(player->powers[pw_super]) && !(player->tossdelay))
|
||||
if (G_GametypeHasTeams() && (cmd->buttons & BT_SPECTATE) && !(player->powers[pw_super]) && !(player->tossdelay))
|
||||
{
|
||||
if (!(player->gotflag & (GF_REDFLAG|GF_BLUEFLAG)))
|
||||
P_PlayerEmeraldBurst(player, true); // Toss emeralds
|
||||
|
@ -7104,7 +7126,7 @@ static void P_MovePlayer(player_t *player)
|
|||
P_DamageMobj(player->mo, NULL, NULL, 42000); // Respawn crushed spectators
|
||||
else
|
||||
{
|
||||
P_SquishPlayerMobj(player->mo, NULL); // SRB2kart - we don't kill when squished, we squish when squished.
|
||||
K_SquishPlayer(player, NULL); // SRB2kart - we don't kill when squished, we squish when squished.
|
||||
/*
|
||||
mobj_t *killer = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_NULL);
|
||||
killer->threshold = 44; // Special flag that it was crushing which killed you.
|
||||
|
@ -7373,7 +7395,7 @@ static void P_DoRopeHang(player_t *player)
|
|||
|
||||
player->mo->height = P_GetPlayerHeight(player);
|
||||
|
||||
if (player->cmd.buttons & BT_USE && !(player->pflags & PF_STASIS)) // Drop off of the rope
|
||||
if (player->cmd.buttons & BT_BRAKE && !(player->pflags & PF_STASIS)) // Drop off of the rope
|
||||
{
|
||||
P_SetTarget(&player->mo->tracer, NULL);
|
||||
|
||||
|
@ -7780,7 +7802,7 @@ static void P_DeathThink(player_t *player)
|
|||
// continue logic
|
||||
if (!(netgame || multiplayer) && player->lives <= 0)
|
||||
{
|
||||
if (player->deadtimer > TICRATE && (cmd->buttons & BT_USE || cmd->buttons & BT_JUMP) && player->continues > 0)
|
||||
if (player->deadtimer > TICRATE && (cmd->buttons & BT_BRAKE || cmd->buttons & BT_ACCELERATE || cmd->buttons & BT_JUMP) && player->continues > 0)
|
||||
G_UseContinue();
|
||||
else if (player->deadtimer >= gameovertics)
|
||||
G_UseContinue(); // Even if we don't have one this handles ending the game
|
||||
|
@ -8091,7 +8113,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
}
|
||||
|
||||
#ifdef REDSANALOG
|
||||
if (P_AnalogMove(player) && (player->cmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) == (BT_CAMLEFT|BT_CAMRIGHT)) {
|
||||
if (P_AnalogMove(player) && (player->cmd.buttons & (BT_FORWARD|BT_BACKWARD)) == (BT_FORWARD|BT_BACKWARD)) {
|
||||
camstill = true;
|
||||
|
||||
if (camspeed < 4*FRACUNIT/5)
|
||||
|
@ -8148,9 +8170,9 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
if (!objectplacing && !(twodlevel || (mo->flags2 & MF2_TWOD)) && !(player->pflags & PF_NIGHTSMODE) && displayplayer == consoleplayer)
|
||||
{
|
||||
#ifdef REDSANALOG
|
||||
if ((player->cmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) == (BT_CAMLEFT|BT_CAMRIGHT)); else
|
||||
if ((player->cmd.buttons & (BT_FORWARD|BT_BACKWARD)) == (BT_FORWARD|BT_BACKWARD)); else
|
||||
#endif
|
||||
if (player->cmd.buttons & BT_CAMLEFT)
|
||||
if (player->cmd.buttons & BT_FORWARD)
|
||||
{
|
||||
if (thiscam == &camera)
|
||||
{
|
||||
|
@ -8169,7 +8191,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
: camrotate - 2);
|
||||
}
|
||||
}
|
||||
else if (player->cmd.buttons & BT_CAMRIGHT)
|
||||
else if (player->cmd.buttons & BT_BACKWARD)
|
||||
{
|
||||
if (thiscam == &camera)
|
||||
{
|
||||
|
@ -8992,7 +9014,7 @@ void P_PlayerThink(player_t *player)
|
|||
|
||||
if ((gametype == GT_RACE || gametype == GT_COMPETITION) && leveltime < 4*TICRATE)
|
||||
{
|
||||
cmd->buttons &= BT_USE; // Remove all buttons except BT_USE
|
||||
cmd->buttons &= BT_BRAKE; // Remove all buttons except BT_BRAKE // TODO: ?
|
||||
cmd->forwardmove = 0;
|
||||
cmd->sidemove = 0;
|
||||
}
|
||||
|
@ -9132,7 +9154,7 @@ void P_PlayerThink(player_t *player)
|
|||
// check for use
|
||||
if (!(player->pflags & PF_NIGHTSMODE))
|
||||
{
|
||||
if (cmd->buttons & BT_USE)
|
||||
if (cmd->buttons & BT_BRAKE)
|
||||
player->pflags |= PF_USEDOWN;
|
||||
else
|
||||
player->pflags &= ~PF_USEDOWN;
|
||||
|
@ -9345,6 +9367,7 @@ void P_PlayerAfterThink(player_t *player)
|
|||
//player->mo->eflags &= ~MFE_VERTICALFLIP;
|
||||
}
|
||||
|
||||
/* SRB2kart - don't need no weapon rings
|
||||
if (!(player->pflags & PF_WPNDOWN))
|
||||
{
|
||||
if (cmd->buttons & BT_WEAPONNEXT)
|
||||
|
@ -9455,6 +9478,7 @@ void P_PlayerAfterThink(player_t *player)
|
|||
|
||||
if (P_IsLocalPlayer(player) && (player->pflags & PF_WPNDOWN) && player->currentweapon != oldweapon)
|
||||
S_StartSound(NULL, sfx_wepchg);
|
||||
*/
|
||||
|
||||
/* // SRB2kart
|
||||
if (player->pflags & PF_GLIDING)
|
||||
|
|
32
src/sounds.c
32
src/sounds.c
|
@ -465,6 +465,38 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3kdal", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"s3kdbs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"s3kdbl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
|
||||
// SRB2kart
|
||||
{"lkt1", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"lkt2", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"lkt3", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"kart1", false, 48, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"kart2", false, 48, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"kart3", false, 48, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mlap", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mush", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"star", true, 64, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mega", true, 64, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"bomb", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"bomb2", true, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"peel", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"slip", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"fake", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"grnshl", true, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"redshl", true, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"shbrk", true, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkdrft", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkslid", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem1", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem2", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem3", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem4", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem5", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem6", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem7", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem8", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitemF", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
|
||||
// skin sounds free slots to add sounds at run time (Boris HACK!!!)
|
||||
// initialized to NULL
|
||||
|
|
36
src/sounds.h
36
src/sounds.h
|
@ -529,6 +529,42 @@ typedef enum
|
|||
sfx_s3kdbs,
|
||||
sfx_s3kdbl,
|
||||
|
||||
sfx_lkt1,
|
||||
sfx_lkt2,
|
||||
sfx_lkt3,
|
||||
sfx_kart1,
|
||||
sfx_kart2,
|
||||
sfx_kart3,
|
||||
sfx_mlap,
|
||||
sfx_mush,
|
||||
sfx_star,
|
||||
sfx_mega,
|
||||
sfx_bomb,
|
||||
sfx_bomb2,
|
||||
sfx_peel,
|
||||
sfx_slip,
|
||||
sfx_fake,
|
||||
sfx_grnshl,
|
||||
sfx_redshl,
|
||||
sfx_shbrk,
|
||||
sfx_mkdrft,
|
||||
sfx_mkslid,
|
||||
sfx_mkitem,
|
||||
sfx_mkitem1,
|
||||
sfx_mkitem2,
|
||||
sfx_mkitem3,
|
||||
sfx_mkitem4,
|
||||
sfx_mkitem5,
|
||||
sfx_mkitem6,
|
||||
sfx_mkitem7,
|
||||
sfx_mkitem8,
|
||||
sfx_mkitemF,
|
||||
|
||||
sfx_taunt1,
|
||||
sfx_taunt2,
|
||||
sfx_taunt3,
|
||||
sfx_taunt4,
|
||||
|
||||
// free slots for S_AddSoundFx() at run-time --------------------
|
||||
sfx_freeslot0,
|
||||
//
|
||||
|
|
|
@ -68,6 +68,10 @@ extern fixed_t finetangent[FINEANGLES/2];
|
|||
#define ANGLE_337h 0xF0000000
|
||||
#define ANGLE_MAX 0xFFFFFFFF
|
||||
|
||||
// SRB2kart
|
||||
#define ANGLE_120 0x53333333
|
||||
#define ANGLE_240 0xA6666666
|
||||
|
||||
typedef UINT32 angle_t;
|
||||
|
||||
// To get a global angle from Cartesian coordinates, the coordinates are
|
||||
|
|
|
@ -685,7 +685,7 @@ void Y_Ticker(void)
|
|||
return;
|
||||
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
if (playeringame[i] && (players[i].cmd.buttons & BT_USE))
|
||||
if (playeringame[i] && (players[i].cmd.buttons & BT_BRAKE || players[i].cmd.buttons & BT_ACCELERATE))
|
||||
skip = true;
|
||||
|
||||
// bonuses count down by 222 each tic
|
||||
|
@ -748,7 +748,7 @@ void Y_Ticker(void)
|
|||
return;
|
||||
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
if (playeringame[i] && (players[i].cmd.buttons & BT_USE))
|
||||
if (playeringame[i] && (players[i].cmd.buttons & BT_BRAKE || players[i].cmd.buttons & BT_ACCELERATE))
|
||||
skip = true;
|
||||
|
||||
if (tallydonetic != 0)
|
||||
|
|
Loading…
Reference in a new issue