From 66c6b6885f48f6b60c771abe2978f40812a37f51 Mon Sep 17 00:00:00 2001 From: ZTsukei Date: Sun, 20 Nov 2016 23:23:00 -0500 Subject: [PATCH] Updates done a while ago... Not 100% sure what they were. :x --- src/d_main.c | 30 +++++++------- src/g_game.c | 4 +- src/info.c | 59 ++++++++++++++++++++++------ src/info.h | 12 ++++++ src/k_kart.c | 106 ++++++++++++++++++++++++++++++++++++++++---------- src/k_kart.h | 3 +- src/p_enemy.c | 10 ++--- src/p_floor.c | 1 + src/p_inter.c | 8 ++++ src/p_mobj.c | 4 ++ src/p_user.c | 24 ++++++------ src/s_sound.c | 27 +++++++------ src/sounds.c | 18 ++++----- src/sounds.h | 2 +- 14 files changed, 217 insertions(+), 91 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index 734c1a00..d114a843 100644 --- a/src/d_main.c +++ b/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 diff --git a/src/g_game.c b/src/g_game.c index 7d5345e6..6c71e7de 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -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; diff --git a/src/info.c b/src/info.c index e042e33b..8c51df09 100644 --- a/src/info.c +++ b/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 diff --git a/src/info.h b/src/info.h index 2100423c..3ddd9d24 100644 --- a/src/info.h +++ b/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, diff --git a/src/k_kart.c b/src/k_kart.c index c158294e..bee2aaf2 100644 --- a/src/k_kart.c +++ b/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); } diff --git a/src/k_kart.h b/src/k_kart.h index 595456db..5f822cd6 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -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); diff --git a/src/p_enemy.c b/src/p_enemy.c index 2c486e8b..76e53c77 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -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; diff --git a/src/p_floor.c b/src/p_floor.c index 1c396c87..74a6d8ee 100644 --- a/src/p_floor.c +++ b/src/p_floor.c @@ -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. diff --git a/src/p_inter.c b/src/p_inter.c index b74fac23..1c97302d 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -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: diff --git a/src/p_mobj.c b/src/p_mobj.c index 90b61b60..66adc574 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -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 diff --git a/src/p_user.c b/src/p_user.c index 0be8bd7a..06f7ca80 100644 --- a/src/p_user.c +++ b/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 diff --git a/src/s_sound.c b/src/s_sound.c index 16c5ffd1..5a654649 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -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; } diff --git a/src/sounds.c b/src/sounds.c index 360a7791..c73d8cb4 100644 --- a/src/sounds.c +++ b/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 diff --git a/src/sounds.h b/src/sounds.h index 01d7cc5c..4c49a0f5 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -549,7 +549,7 @@ typedef enum sfx_shbrk, sfx_mkdrft, sfx_mkslid, - sfx_mkitm, + sfx_mkitem, sfx_mkitm1, sfx_mkitm2, sfx_mkitm3,