mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-03-23 03:12:02 +00:00
Updates done a while ago... Not 100% sure what they were. :x
This commit is contained in:
parent
82b0e9962e
commit
66c6b6885f
14 changed files with 217 additions and 91 deletions
30
src/d_main.c
30
src/d_main.c
|
@ -809,27 +809,25 @@ static void IdentifyVersion(void)
|
|||
// checking in D_SRB2Main
|
||||
|
||||
// Add the maps
|
||||
D_AddFile(va(pandf,srb2waddir,"zones.dta"));
|
||||
//D_AddFile(va(pandf,srb2waddir,"zones.dta"));
|
||||
|
||||
// Add the players
|
||||
D_AddFile(va(pandf,srb2waddir, "player.dta"));
|
||||
//D_AddFile(va(pandf,srb2waddir, "player.dta"));
|
||||
|
||||
// Add the weapons
|
||||
D_AddFile(va(pandf,srb2waddir,"rings.dta"));
|
||||
//D_AddFile(va(pandf,srb2waddir,"rings.dta"));
|
||||
|
||||
#ifdef USE_PATCH_DTA
|
||||
// Add our crappy patches to fix our bugs
|
||||
D_AddFile(va(pandf,srb2waddir,"patch.dta"));
|
||||
//D_AddFile(va(pandf,srb2waddir,"patch.dta"));
|
||||
#endif
|
||||
|
||||
// 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"));
|
||||
D_AddFile(va(pandf,srb2waddir,"KartTextures.wad"));
|
||||
D_AddFile(va(pandf,srb2waddir,"KMFixes3.wad"));
|
||||
D_AddFile(va(pandf,srb2waddir,"SNSAssets.wad"));
|
||||
D_AddFile(va(pandf,srb2waddir,"k_SNSRainbowRoad.wad"));
|
||||
// SRB2kart - Add graphics (temp) // The command for md5 checks is "W_VerifyFileMD5" - looks for ASSET_HASH_SRB2_SRB in config.h.in
|
||||
D_AddFile(va(pandf,srb2waddir,"gfx.kart"));
|
||||
D_AddFile(va(pandf,srb2waddir,"chars.kart"));
|
||||
D_AddFile(va(pandf,srb2waddir,"maps.kart"));
|
||||
D_AddFile(va(pandf,srb2waddir,"sounds.kart"));
|
||||
//D_AddFile(va(pandf,srb2waddir,"k_SNSRainbowRoad.wad"));
|
||||
|
||||
#if !defined (HAVE_SDL) || defined (HAVE_MIXER)
|
||||
{
|
||||
|
@ -1117,11 +1115,11 @@ void D_SRB2Main(void)
|
|||
|
||||
// Check MD5s of autoloaded files
|
||||
W_VerifyFileMD5(0, ASSET_HASH_SRB2_SRB); // srb2.srb/srb2.wad
|
||||
W_VerifyFileMD5(1, ASSET_HASH_ZONES_DTA); // zones.dta
|
||||
W_VerifyFileMD5(2, ASSET_HASH_PLAYER_DTA); // player.dta
|
||||
W_VerifyFileMD5(3, ASSET_HASH_RINGS_DTA); // rings.dta
|
||||
//W_VerifyFileMD5(1, ASSET_HASH_ZONES_DTA); // zones.dta
|
||||
//W_VerifyFileMD5(2, ASSET_HASH_PLAYER_DTA); // player.dta
|
||||
//W_VerifyFileMD5(3, ASSET_HASH_RINGS_DTA); // rings.dta
|
||||
#ifdef USE_PATCH_DTA
|
||||
W_VerifyFileMD5(4, ASSET_HASH_PATCH_DTA); // patch.dta
|
||||
//W_VerifyFileMD5(4, ASSET_HASH_PATCH_DTA); // patch.dta
|
||||
#endif
|
||||
|
||||
// don't check music.dta because people like to modify it, and it doesn't matter if they do
|
||||
|
|
|
@ -197,8 +197,8 @@ UINT16 extralifetics = 4*TICRATE;
|
|||
|
||||
// SRB2kart
|
||||
INT32 bootime = 7*TICRATE;
|
||||
INT32 mushroomtime = 120;
|
||||
INT32 bonustime = 700;
|
||||
INT32 mushroomtime = TICRATE + (TICRATE/3);
|
||||
INT32 bonustime = 20*TICRATE;
|
||||
|
||||
INT32 gameovertics = 15*TICRATE;
|
||||
|
||||
|
|
59
src/info.c
59
src/info.c
|
@ -55,8 +55,8 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"GWLR","SRBA","SRBB","SRBC","SRBD","SRBE","SRBF","SRBG","SRBH","SRBI",
|
||||
"SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO",
|
||||
//SRB2kart Sprites
|
||||
"SPRG","BSPR","RNDM","SPRK","KFRE","DRIF","FAKE","DFAK","BANA","DBAN",
|
||||
"GSHE","GSTR","DGSH","RSHE","RSTR","DRSH","BOMB","BLIG","LIGH"
|
||||
"SPRG","BSPR","RNDM","SPRK","KFRE","DRIF","DSMO","FAKE","DFAK","BANA",
|
||||
"DBAN","GSHE","GSTR","DGSH","RSHE","RSTR","DRSH","BOMB","BLIG","LIGH"
|
||||
};
|
||||
|
||||
// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
|
||||
|
@ -2524,6 +2524,8 @@ state_t states[NUMSTATES] =
|
|||
{SPR_SPRG, 2, 1, {NULL}, 0, 0, S_GRAYSPRING5}, // S_GRAYSPRING4
|
||||
{SPR_SPRG, 1, 1, {NULL}, 0, 0, S_GRAYSPRING}, // S_GRAYSPRING5
|
||||
|
||||
{SPR_NULL, 0, 1, {A_Pain}, 0, 0, S_INVISIBLE}, // S_INVISSPRING
|
||||
|
||||
{SPR_BSPR, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BDIAG1
|
||||
{SPR_BSPR, 1, 1, {A_Pain}, 0, 0, S_BDIAG3}, // S_BDIAG2
|
||||
{SPR_BSPR, 2, 1, {NULL}, 0, 0, S_BDIAG4}, // S_BDIAG3
|
||||
|
@ -2572,6 +2574,12 @@ state_t states[NUMSTATES] =
|
|||
{SPR_DRIF, 4, 2, {NULL}, 0, 0, S_DRIFTSPARK6}, // S_DRIFTSPARK5
|
||||
{SPR_DRIF, 5, 2, {NULL}, 0, 0, S_DRIFTSPARK4}, // S_DRIFTSPARK6
|
||||
|
||||
{SPR_DSMO, FF_TRANS50|0, 2, {NULL}, 0, 0, S_DRIFTSMOKE2}, // S_DRIFTSMOKE1
|
||||
{SPR_DSMO, FF_TRANS50|1, 2, {NULL}, 0, 0, S_DRIFTSMOKE3}, // S_DRIFTSMOKE2
|
||||
{SPR_DSMO, FF_TRANS50|2, 2, {NULL}, 0, 0, S_DRIFTSMOKE4}, // S_DRIFTSMOKE3
|
||||
{SPR_DSMO, FF_TRANS50|3, 2, {NULL}, 0, 0, S_DRIFTSMOKE5}, // S_DRIFTSMOKE4
|
||||
{SPR_DSMO, FF_TRANS50|4, 2, {NULL}, 0, 0, S_NULL}, // S_DRIFTSMOKE5
|
||||
|
||||
{SPR_NULL, 0, 10, {NULL}, 0, 0, S_KARTFIRE2}, // S_KARTFIRE1
|
||||
{SPR_KFRE, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_KARTFIRE3}, // S_KARTFIRE2
|
||||
{SPR_KFRE, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_KARTFIRE4}, // S_KARTFIRE3
|
||||
|
@ -5617,17 +5625,17 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_STARPOST
|
||||
{ // MT_STARPOST // SRB2kart - Set states to S_INVISIBLE, and sfx to _None
|
||||
502, // doomednum
|
||||
S_STARPOST_IDLE, // spawnstate
|
||||
S_INVISIBLE, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_STARPOST_FLASH, // seestate
|
||||
S_INVISIBLE, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_STARPOST_SPIN, // painstate
|
||||
S_INVISIBLE, // painstate
|
||||
0, // painchance
|
||||
sfx_strpst, // painsound
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
|
@ -13984,9 +13992,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
|
||||
{ // MT_INVISSPRING
|
||||
554, // doomednum
|
||||
SPR_NULL, // spawnstate
|
||||
S_INVISIBLE, // spawnstate
|
||||
100, // spawnhealth
|
||||
SPR_NULL, // seestate
|
||||
S_INVISSPRING, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
|
@ -14006,7 +14014,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SOLID|MF_SPRING, // flags
|
||||
SPR_NULL // raisestate
|
||||
S_INVISSPRING // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BLUEDIAG
|
||||
|
@ -14059,7 +14067,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
|
||||
MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
@ -14113,7 +14121,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_FIRE, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
@ -14144,6 +14152,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_DRIFTSMOKE
|
||||
-1, // doomednum
|
||||
S_DRIFTSMOKE1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
12, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
8, // speed
|
||||
20*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_FAKESHIELD
|
||||
-1, // doomednum
|
||||
S_FAKEITEM1, // spawnstate
|
||||
|
|
12
src/info.h
12
src/info.h
|
@ -582,6 +582,7 @@ typedef enum sprite
|
|||
SPR_RPOP, // Random Item Box Pop
|
||||
SPR_KFRE, // Mushroom fire trail
|
||||
SPR_DRIF, // Drift Sparks
|
||||
SPR_DSMO, // Drift Smoke
|
||||
|
||||
// Kart Items
|
||||
SPR_FITE, // Fake Item box
|
||||
|
@ -2992,6 +2993,9 @@ typedef enum state
|
|||
S_GRAYSPRING4,
|
||||
S_GRAYSPRING5,
|
||||
|
||||
// Invis-spring - this is used just for the sproing sound.
|
||||
S_INVISSPRING,
|
||||
|
||||
// Blue Diagonal Spring
|
||||
S_BDIAG1,
|
||||
S_BDIAG2,
|
||||
|
@ -3045,6 +3049,13 @@ typedef enum state
|
|||
S_DRIFTSPARK5,
|
||||
S_DRIFTSPARK6,
|
||||
|
||||
// Drift Smoke
|
||||
S_DRIFTSMOKE1,
|
||||
S_DRIFTSMOKE2,
|
||||
S_DRIFTSMOKE3,
|
||||
S_DRIFTSMOKE4,
|
||||
S_DRIFTSMOKE5,
|
||||
|
||||
// Magnet Burst
|
||||
|
||||
// Mushroom Fire Trail
|
||||
|
@ -3719,6 +3730,7 @@ typedef enum mobj_type
|
|||
|
||||
MT_MUSHROOMTRAIL,
|
||||
MT_DRIFT,
|
||||
MT_DRIFTSMOKE,
|
||||
|
||||
MT_FAKESHIELD,
|
||||
MT_FAKEITEM,
|
||||
|
|
106
src/k_kart.c
106
src/k_kart.c
|
@ -668,6 +668,7 @@ static fixed_t K_KartItemOdds_Retro[MAXPLAYERS][NUMKARTITEMS][MAXPLAYERS] =
|
|||
*/
|
||||
static void K_KartGetItemResult(player_t *player, fixed_t getitem, boolean retrokart)
|
||||
{
|
||||
getitem++;
|
||||
switch (getitem)
|
||||
{
|
||||
case 1: // Magnet
|
||||
|
@ -742,11 +743,6 @@ static void K_KartGetItemResult(player_t *player, fixed_t getitem, boolean retro
|
|||
player->kartstuff[k_mushroom] = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
player->kartstuff[k_itemroulette] = 0; // Since we're done, clear the roulette number
|
||||
|
||||
if (P_IsLocalPlayer(player))
|
||||
S_StartSound(NULL, sfx_mkitmF);
|
||||
}
|
||||
|
||||
/** \brief Item Roulette for Kart
|
||||
|
@ -759,7 +755,8 @@ static void K_KartGetItemResult(player_t *player, fixed_t getitem, boolean retro
|
|||
static void K_KartSetItemResult(fixed_t position, fixed_t giveitem)
|
||||
{
|
||||
prevchance = chance;
|
||||
basechance = K_KartItemOdds_Retro[pingame][giveitem][position]; // Number of slots in the array, based on odds
|
||||
basechance = K_KartItemOdds_Retro[pingame-1][giveitem][position]; // Number of slots in the array, based on odds
|
||||
|
||||
for (; chance < prevchance + basechance; chance++)
|
||||
{
|
||||
spawnchance[chance] = giveitem;
|
||||
|
@ -814,15 +811,13 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
player->pflags |= PF_ATTACKDOWN;
|
||||
|
||||
player->kartstuff[k_itemclose] = 0; // Reset the item window closer.
|
||||
player->kartstuff[k_itemroulette] = 0; // And the roulette is done!
|
||||
|
||||
// Yes I know I'm defining variables half-way into the function, but they aren't needed until now :/
|
||||
fixed_t prandom = P_RandomFixed();
|
||||
fixed_t ppos = player->kartstuff[k_position] - 1;
|
||||
|
||||
// Tiny catcher in case player position is unset.
|
||||
if (ppos == 0)
|
||||
ppos = 1;
|
||||
if (ppos < 0) ppos = 0;
|
||||
|
||||
// Check the game type to differentiate odds.
|
||||
//if (gametype == GT_RETRO)
|
||||
|
@ -850,7 +845,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
if (numchoices > 0)
|
||||
K_KartGetItemResult(player, spawnchance[prandom%numchoices], true);
|
||||
else
|
||||
CONS_Printf("ERROR: P_KartItemRoulette - There were no choices given by the roulette.\n");
|
||||
CONS_Printf("ERROR: P_KartItemRoulette - There were no choices given by the roulette (ppos = %d).\n", ppos);
|
||||
//}
|
||||
/*else if (gametype == GT_NEO)
|
||||
{
|
||||
|
@ -877,11 +872,16 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
if (numchoices > 0)
|
||||
K_KartGetItemResult(player, spawnchance[prandom%numchoices], false)
|
||||
else
|
||||
CONS_Printf("ERROR: P_KartItemRoulette - There were no choices given by the roulette.\n");
|
||||
CONS_Printf("ERROR: P_KartItemRoulette - There were no choices given by the roulette (ppos = %d).\n", ppos);
|
||||
}
|
||||
else
|
||||
CONS_Printf("ERROR: P_KartItemRoulette - There's no applicable game type!\n");
|
||||
*/
|
||||
|
||||
player->kartstuff[k_itemroulette] = 0; // Since we're done, clear the roulette number
|
||||
|
||||
if (P_IsLocalPlayer(player))
|
||||
S_StartSound(NULL, sfx_mkitmF);
|
||||
}
|
||||
|
||||
//}
|
||||
|
@ -976,7 +976,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
player->kartstuff[k_jmp] = 1;
|
||||
else
|
||||
player->kartstuff[k_jmp] = 0;
|
||||
|
||||
|
||||
K_KartItemRoulette(player, cmd); // Roulette Code
|
||||
|
||||
// Looping and stopping of the horrible horrible star SFX ~Sryder
|
||||
|
@ -1243,6 +1243,71 @@ mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t angle, INT32
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void K_SpawnDriftTrail(player_t *player)
|
||||
{
|
||||
fixed_t newx;
|
||||
fixed_t newy;
|
||||
fixed_t ground;
|
||||
mobj_t *flame;
|
||||
angle_t travelangle;
|
||||
INT32 i;
|
||||
|
||||
I_Assert(player != NULL);
|
||||
I_Assert(player->mo != NULL);
|
||||
I_Assert(!P_MobjWasRemoved(player->mo));
|
||||
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
ground = player->mo->ceilingz - FixedMul(mobjinfo[MT_MUSHROOMTRAIL].height, player->mo->scale);
|
||||
else
|
||||
ground = player->mo->floorz;
|
||||
|
||||
if (player->kartstuff[k_drift])
|
||||
travelangle = player->mo->angle;
|
||||
else
|
||||
travelangle = R_PointToAngle2(0, 0, player->rmomx, player->rmomy);
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
if (player->kartstuff[k_bootaketimer] != 0)
|
||||
continue;
|
||||
|
||||
newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(24*FRACUNIT, player->mo->scale));
|
||||
newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(24*FRACUNIT, player->mo->scale));
|
||||
#ifdef ESLOPE
|
||||
if (player->mo->standingslope)
|
||||
{
|
||||
ground = P_GetZAt(player->mo->standingslope, newx, newy);
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
ground -= FixedMul(mobjinfo[MT_MUSHROOMTRAIL].height, player->mo->scale);
|
||||
}
|
||||
#endif
|
||||
if ((player->kartstuff[k_drift] == 1 || player->kartstuff[k_drift] == -1) && player->kartstuff[k_mushroomtimer] == 0)
|
||||
flame = P_SpawnMobj(newx, newy, ground, MT_DRIFTSMOKE);
|
||||
else
|
||||
flame = P_SpawnMobj(newx, newy, ground, MT_MUSHROOMTRAIL);
|
||||
|
||||
P_SetTarget(&flame->target, player->mo);
|
||||
flame->angle = travelangle;
|
||||
flame->fuse = TICRATE*2;
|
||||
flame->destscale = player->mo->scale;
|
||||
P_SetScale(flame, player->mo->scale);
|
||||
flame->eflags = (flame->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP);
|
||||
|
||||
flame->momx = 8;
|
||||
P_XYMovement(flame);
|
||||
if (P_MobjWasRemoved(flame))
|
||||
continue;
|
||||
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
{
|
||||
if (flame->z + flame->height < flame->ceilingz)
|
||||
P_RemoveMobj(flame);
|
||||
}
|
||||
else if (flame->z > flame->floorz)
|
||||
P_RemoveMobj(flame);
|
||||
}
|
||||
}
|
||||
|
||||
static mobj_t *P_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing, INT32 defaultDir, boolean bobombthrow)
|
||||
{
|
||||
mobj_t *mo;
|
||||
|
@ -1502,7 +1567,7 @@ void K_DoMushroom(player_t *player, boolean doPFlag)
|
|||
if (player->kartstuff[k_sounds]) // Prevents taunt sounds from playing every time the button is pressed
|
||||
return;
|
||||
|
||||
K_PlayTauntSound(player->mo);
|
||||
//K_PlayTauntSound(player->mo);
|
||||
player->kartstuff[k_sounds] = 70;
|
||||
}
|
||||
|
||||
|
@ -1529,12 +1594,8 @@ void K_DoLightning(player_t *player, boolean bluelightning)
|
|||
player->kartstuff[k_sounds] = 70;
|
||||
}
|
||||
|
||||
void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||
void K_MoveKartPlayer(player_t *player, ticcmd_t *cmd, boolean onground)
|
||||
{
|
||||
ticcmd_t *cmd;
|
||||
|
||||
cmd = &player->cmd;
|
||||
|
||||
boolean ATTACK_IS_DOWN = ((cmd->buttons & BT_ATTACK) && !(player->pflags & PF_ATTACKDOWN));
|
||||
boolean HOLDING_ITEM = (player->kartstuff[k_greenshell] == 1 || player->kartstuff[k_redshell] == 1
|
||||
|| player->kartstuff[k_banana] == 1 || player->kartstuff[k_fakeitem] == 1 || player->kartstuff[k_bobomb] == 1
|
||||
|
@ -1543,8 +1604,11 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
|| player->kartstuff[k_triplebanana] & 1 || player->kartstuff[k_triplebanana] & 2 || player->kartstuff[k_triplebanana] & 4);
|
||||
boolean NO_BOO = (player->kartstuff[k_boostolentimer] == 0 && player->kartstuff[k_bootaketimer] == 0);
|
||||
|
||||
if (!(cmd->buttons & BT_ATTACK))
|
||||
if ((player->pflags & PF_ATTACKDOWN) && !(cmd->buttons & BT_ATTACK))
|
||||
player->pflags &= ~PF_ATTACKDOWN;
|
||||
else if (cmd->buttons & BT_ATTACK)
|
||||
player->pflags |= PF_ATTACKDOWN;
|
||||
|
||||
if (player && player->health > 0 && !player->spectator && !player->exiting && player->kartstuff[k_spinouttimer] == 0)
|
||||
{
|
||||
// GoldenMushroom power
|
||||
|
@ -2682,8 +2746,8 @@ static void K_drawKartRetroItem(void)
|
|||
else if (stplyr->kartstuff[k_mushroom] & 4) localpatch = kp_triplemushroom;
|
||||
else if (stplyr->kartstuff[k_mushroom] & 2) localpatch = kp_doublemushroom;
|
||||
else if (stplyr->kartstuff[k_mushroom] == 1) localpatch = kp_mushroom;
|
||||
else if (stplyr->kartstuff[k_boo] & 8) localpatch = kp_boo;
|
||||
else if (stplyr->kartstuff[k_magnet] & 8) localpatch = kp_magnet;
|
||||
else if (stplyr->kartstuff[k_boo] == 1) localpatch = kp_boo;
|
||||
else if (stplyr->kartstuff[k_magnet] == 1) localpatch = kp_magnet;
|
||||
|
||||
V_DrawScaledPatch(ITEM_X, STRINGY(ITEM_Y), V_SNAPTORIGHT|V_SNAPTOTOP, localpatch);
|
||||
}
|
||||
|
|
|
@ -20,7 +20,8 @@ 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_SpawnDriftTrail(player_t *player);
|
||||
void K_MoveKartPlayer(player_t *player, ticcmd_t *cmd, boolean onground);
|
||||
|
||||
void K_LoadKartHUDGraphics(void);
|
||||
void K_drawKartHUD(void);
|
||||
|
|
|
@ -8081,10 +8081,10 @@ void A_ItemPop(mobj_t *actor)
|
|||
mobjtype_t item = 0;
|
||||
|
||||
// de-solidify
|
||||
P_UnsetThingPosition(actor);
|
||||
actor->flags &= ~MF_SOLID;
|
||||
actor->flags |= MF_NOCLIP;
|
||||
P_SetThingPosition(actor);
|
||||
//P_UnsetThingPosition(actor);
|
||||
//actor->flags &= ~MF_SOLID;
|
||||
//actor->flags |= MF_NOCLIP;
|
||||
//P_SetThingPosition(actor);
|
||||
|
||||
remains = P_SpawnMobj(actor->x, actor->y, actor->z, MT_RANDOMITEMPOP);
|
||||
remains->type = actor->type; // Transfer type information
|
||||
|
@ -8109,7 +8109,6 @@ void A_ItemPop(mobj_t *actor)
|
|||
switch (actor->type)
|
||||
{
|
||||
case MT_RANDOMITEM: // Random!
|
||||
{
|
||||
if (actor->target && actor->target->player
|
||||
&& !(actor->target->player->kartstuff[k_greenshell] & 2 || actor->target->player->kartstuff[k_triplegreenshell] & 8
|
||||
|| actor->target->player->kartstuff[k_redshell] & 2 || actor->target->player->kartstuff[k_tripleredshell] & 8
|
||||
|
@ -8129,7 +8128,6 @@ void A_ItemPop(mobj_t *actor)
|
|||
|
||||
remains->flags &= ~MF_AMBUSH;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
item = actor->info->damage;
|
||||
break;
|
||||
|
|
|
@ -237,6 +237,7 @@ result_e T_MovePlane(sector_t *sector, fixed_t speed, fixed_t dest, boolean crus
|
|||
{
|
||||
case MT_GOOP: // Egg Slimer's goop objects
|
||||
case MT_SPINFIRE: // Elemental Shield flame balls
|
||||
case MT_MUSHROOMTRAIL:
|
||||
case MT_SPIKE: // Floor Spike
|
||||
// Is the object hang from the ceiling?
|
||||
// In that case, swap the planes used.
|
||||
|
|
|
@ -382,6 +382,13 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
// We now identify by object type, not sprite! Tails 04-11-2001
|
||||
switch (special->type)
|
||||
{
|
||||
case MT_RANDOMITEM: // SRB2kart
|
||||
if (!(P_CanPickupItem(player, false)))
|
||||
return;
|
||||
special->momx = special->momy = special->momz = 0;
|
||||
P_SetTarget(&special->target, toucher);
|
||||
P_SetMobjState(special, special->info->deathstate);
|
||||
break;
|
||||
// ***************************************** //
|
||||
// Rings, coins, spheres, weapon panels, etc //
|
||||
// ***************************************** //
|
||||
|
@ -1549,6 +1556,7 @@ static void P_HitDeathMessages(player_t *player, mobj_t *inflictor, mobj_t *sour
|
|||
str = M_GetText("%s%s's tagging hand %s %s.\n");
|
||||
break;
|
||||
case MT_SPINFIRE:
|
||||
case MT_MUSHROOMTRAIL:
|
||||
str = M_GetText("%s%s's elemental fire trail %s %s.\n");
|
||||
break;
|
||||
case MT_THROWNBOUNCE:
|
||||
|
|
|
@ -2252,6 +2252,7 @@ static boolean P_ZMovement(mobj_t *mo)
|
|||
case MT_BLUETEAMRING:
|
||||
case MT_FLINGRING:
|
||||
case MT_FLINGCOIN:
|
||||
case MT_RANDOMITEM:
|
||||
// Remove flinged stuff from death pits.
|
||||
if (P_CheckDeathPitCollide(mo))
|
||||
{
|
||||
|
@ -7225,6 +7226,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
case MT_BLUEBALL:
|
||||
case MT_REDTEAMRING:
|
||||
case MT_BLUETEAMRING:
|
||||
case MT_RANDOMITEM:
|
||||
// No need to check water. Who cares?
|
||||
P_RingThinker(mobj);
|
||||
if (mobj->flags2 & MF2_NIGHTSPULL)
|
||||
|
@ -7313,6 +7315,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
#endif
|
||||
break;
|
||||
case MT_SPINFIRE:
|
||||
case MT_MUSHROOMTRAIL:
|
||||
if (mobj->eflags & MFE_VERTICALFLIP)
|
||||
mobj->z = mobj->ceilingz - mobj->height;
|
||||
else
|
||||
|
@ -8125,6 +8128,7 @@ void P_RemoveMobj(mobj_t *mobj)
|
|||
if (mobj->spawnpoint &&
|
||||
(mobj->type == MT_RING
|
||||
|| mobj->type == MT_COIN
|
||||
|| mobj->type == MT_RANDOMITEM
|
||||
|| mobj->type == MT_BLUEBALL
|
||||
|| mobj->type == MT_REDTEAMRING
|
||||
|| mobj->type == MT_BLUETEAMRING
|
||||
|
|
24
src/p_user.c
24
src/p_user.c
|
@ -4670,9 +4670,7 @@ static void P_3dMovement(player_t *player)
|
|||
if (cmd->forwardmove < 0)
|
||||
topspeed = 5<<16;
|
||||
else
|
||||
topspeed = normalspd * 2 > 60<<16 ? 60<<16 : normalspd * 2;
|
||||
|
||||
CONS_Printf("topspeed = %d\n", topspeed>>16);
|
||||
topspeed = (normalspd * 3)/2; //> 60<<16 ? 60<<16 : normalspd * 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -6665,11 +6663,11 @@ static void P_MovePlayer(player_t *player)
|
|||
|
||||
// Drifting sound
|
||||
{
|
||||
// Leveltime being 50 might take a while at times. We'll start it up once, isntantly.
|
||||
if ((player->kartstuff[k_drift] == 1 || player->kartstuff[k_drift] == -1) && onground && player->kartstuff[k_driftcharge] < 5) //!S_SoundPlaying(NULL, sfx_mkdrft))
|
||||
S_StartSound(player->mo, sfx_mkdrft);
|
||||
// Start looping the sound now.
|
||||
else if (leveltime % 50 == 0 && ((player->kartstuff[k_drift] == 1 || player->kartstuff[k_drift] == -1) && onground))
|
||||
if (leveltime % 50 == 0 && ((player->kartstuff[k_drift] == 1 || player->kartstuff[k_drift] == -1) && onground))
|
||||
S_StartSound(player->mo, sfx_mkdrft);
|
||||
// Leveltime being 50 might take a while at times. We'll start it up once, isntantly.
|
||||
else if ((player->kartstuff[k_drift] == 1 || player->kartstuff[k_drift] == -1) && !S_SoundPlaying(player->mo, sfx_mkdrft) && onground)
|
||||
S_StartSound(player->mo, sfx_mkdrft);
|
||||
// Ok, we'll stop now.
|
||||
else if ((player->kartstuff[k_drift] == 0)
|
||||
|
@ -6678,7 +6676,7 @@ static void P_MovePlayer(player_t *player)
|
|||
}
|
||||
}
|
||||
|
||||
K_MoveKartPlayer(player, onground);
|
||||
K_MoveKartPlayer(player, cmd, onground);
|
||||
//}
|
||||
|
||||
|
||||
|
@ -6929,6 +6927,10 @@ static void P_MovePlayer(player_t *player)
|
|||
//SPINNING AND SPINDASHING//
|
||||
////////////////////////////
|
||||
|
||||
// SRB2kart - Drifting smoke and fire
|
||||
if ((player->kartstuff[k_drift] || player->kartstuff[k_mushroomtimer] > 0) && onground && (leveltime & 1))
|
||||
K_SpawnDriftTrail(player);
|
||||
|
||||
/* // SRB2kart - nadah
|
||||
// If the player isn't on the ground, make sure they aren't in a "starting dash" position.
|
||||
if (!onground)
|
||||
|
@ -7852,16 +7854,16 @@ static void P_DeathThink(player_t *player)
|
|||
else if (player->lives > 0 && !G_IsSpecialStage(gamemap)) // Don't allow "click to respawn" in special stages!
|
||||
{
|
||||
// Respawn with jump button, force respawn time (3 second default, cheat protected) in shooter modes.
|
||||
if ((cmd->buttons & BT_JUMP) && player->deadtimer > cv_respawntime.value*TICRATE
|
||||
if ((cmd->buttons & BT_JUMP || cmd->buttons & BT_ACCELERATE) && player->deadtimer > cv_respawntime.value*TICRATE
|
||||
&& gametype != GT_RACE && gametype != GT_COOP)
|
||||
player->playerstate = PST_REBORN;
|
||||
|
||||
// Instant respawn in race or if you're spectating.
|
||||
if ((cmd->buttons & BT_JUMP) && (gametype == GT_RACE || player->spectator))
|
||||
if ((cmd->buttons & BT_JUMP || cmd->buttons & BT_ACCELERATE) && (gametype == GT_RACE || player->spectator))
|
||||
player->playerstate = PST_REBORN;
|
||||
|
||||
// One second respawn in coop.
|
||||
if ((cmd->buttons & BT_JUMP) && player->deadtimer > TICRATE && (gametype == GT_COOP || gametype == GT_COMPETITION))
|
||||
if ((cmd->buttons & BT_JUMP || cmd->buttons & BT_ACCELERATE) && player->deadtimer > TICRATE && (gametype == GT_COOP || gametype == GT_COMPETITION))
|
||||
player->playerstate = PST_REBORN;
|
||||
|
||||
// Single player auto respawn
|
||||
|
|
|
@ -601,26 +601,29 @@ void S_StartSound(const void *origin, sfxenum_t sfx_id)
|
|||
sfx_id = sfx_mario7;
|
||||
break;
|
||||
case sfx_pop:
|
||||
sfx_id = sfx_mario5;
|
||||
sfx_id = sfx_mkitem; // SRB2kart
|
||||
break;
|
||||
case sfx_jump:
|
||||
sfx_id = sfx_mario6;
|
||||
break;
|
||||
case sfx_shield:
|
||||
sfx_id = sfx_mario3;
|
||||
break;
|
||||
case sfx_itemup:
|
||||
sfx_id = sfx_mario4;
|
||||
break;
|
||||
// case sfx_tink:
|
||||
// sfx_id = sfx_mario1;
|
||||
// case sfx_shield:
|
||||
// sfx_id = sfx_mario3;
|
||||
// break;
|
||||
case sfx_itemup:
|
||||
sfx_id = sfx_None;
|
||||
break;
|
||||
case sfx_tink:
|
||||
sfx_id = sfx_mario1;
|
||||
break;
|
||||
// case sfx_cgot:
|
||||
// sfx_id = sfx_mario9;
|
||||
// break;
|
||||
// case sfx_lose:
|
||||
// sfx_id = sfx_mario2;
|
||||
// break;
|
||||
case sfx_lose:
|
||||
sfx_id = sfx_mario2;
|
||||
break;
|
||||
case sfx_prloop:
|
||||
sfx_id = sfx_bomb2;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
18
src/sounds.c
18
src/sounds.c
|
@ -488,15 +488,15 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"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},
|
||||
{"mkitm1", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm2", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm3", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm4", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm5", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm6", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm7", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm8", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitmF", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
|
||||
// skin sounds free slots to add sounds at run time (Boris HACK!!!)
|
||||
// initialized to NULL
|
||||
|
|
|
@ -549,7 +549,7 @@ typedef enum
|
|||
sfx_shbrk,
|
||||
sfx_mkdrft,
|
||||
sfx_mkslid,
|
||||
sfx_mkitm,
|
||||
sfx_mkitem,
|
||||
sfx_mkitm1,
|
||||
sfx_mkitm2,
|
||||
sfx_mkitm3,
|
||||
|
|
Loading…
Reference in a new issue