mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Implement the Special Stage item table
This commit is contained in:
parent
0a733c7265
commit
dc6caf1eb3
3 changed files with 97 additions and 30 deletions
|
|
@ -60,5 +60,6 @@ mobj_t *Obj_SpawnBrolyKi(mobj_t *source, tic_t duration);
|
|||
/* Special Stage UFO */
|
||||
void Obj_SpecialUFOThinker(mobj_t *bomb);
|
||||
mobj_t *Obj_CreateSpecialUFO(void);
|
||||
UINT32 K_GetSpecialUFODistance(void);
|
||||
|
||||
#endif/*k_objects_H*/
|
||||
|
|
|
|||
|
|
@ -108,7 +108,6 @@ static UINT8 K_KartItemOddsRace[NUMKARTRESULTS-1][8] =
|
|||
|
||||
static UINT8 K_KartItemOddsBattle[NUMKARTRESULTS-1][2] =
|
||||
{
|
||||
//K L
|
||||
{ 2, 1 }, // Sneaker
|
||||
{ 0, 0 }, // Rocket Sneaker
|
||||
{ 4, 1 }, // Invincibility
|
||||
|
|
@ -139,6 +138,38 @@ static UINT8 K_KartItemOddsBattle[NUMKARTRESULTS-1][2] =
|
|||
{ 5, 1 } // Jawz x2
|
||||
};
|
||||
|
||||
static UINT8 K_KartItemOddsSpecial[NUMKARTRESULTS-1][4] =
|
||||
{
|
||||
{ 1, 1, 0, 0 }, // Sneaker
|
||||
{ 0, 0, 0, 0 }, // Rocket Sneaker
|
||||
{ 0, 0, 0, 0 }, // Invincibility
|
||||
{ 0, 0, 0, 0 }, // Banana
|
||||
{ 0, 0, 0, 0 }, // Eggman Monitor
|
||||
{ 1, 1, 0, 0 }, // Orbinaut
|
||||
{ 1, 1, 0, 0 }, // Jawz
|
||||
{ 0, 0, 0, 0 }, // Mine
|
||||
{ 0, 0, 0, 0 }, // Land Mine
|
||||
{ 0, 0, 0, 0 }, // Ballhog
|
||||
{ 0, 0, 0, 1 }, // Self-Propelled Bomb
|
||||
{ 0, 0, 0, 0 }, // Grow
|
||||
{ 0, 0, 0, 0 }, // Shrink
|
||||
{ 0, 0, 0, 0 }, // Lightning Shield
|
||||
{ 0, 0, 0, 0 }, // Bubble Shield
|
||||
{ 0, 0, 0, 0 }, // Flame Shield
|
||||
{ 0, 0, 0, 0 }, // Hyudoro
|
||||
{ 0, 0, 0, 0 }, // Pogo Spring
|
||||
{ 0, 0, 0, 0 }, // Super Ring
|
||||
{ 0, 0, 0, 0 }, // Kitchen Sink
|
||||
{ 0, 0, 0, 0 }, // Drop Target
|
||||
{ 0, 0, 0, 0 }, // Garden Top
|
||||
{ 0, 1, 1, 0 }, // Sneaker x2
|
||||
{ 0, 0, 1, 1 }, // Sneaker x3
|
||||
{ 0, 0, 0, 0 }, // Banana x3
|
||||
{ 0, 1, 1, 0 }, // Orbinaut x3
|
||||
{ 0, 0, 1, 1 }, // Orbinaut x4
|
||||
{ 0, 0, 1, 1 } // Jawz x2
|
||||
};
|
||||
|
||||
static kartitems_t K_KartItemReelTimeAttack[] =
|
||||
{
|
||||
KITEM_SNEAKER,
|
||||
|
|
@ -321,7 +352,6 @@ static UINT32 K_GetItemRouletteDistance(const player_t *player, UINT8 numPlayers
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (specialStage.active == true)
|
||||
{
|
||||
UINT32 ufoDis = K_GetSpecialUFODistance();
|
||||
|
|
@ -338,7 +368,6 @@ static UINT32 K_GetItemRouletteDistance(const player_t *player, UINT8 numPlayers
|
|||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
UINT8 i;
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
|
|
@ -470,10 +499,15 @@ INT32 K_KartGetItemOdds(const player_t *player, itemroulette_t *const roulette,
|
|||
I_Assert(pos < 2); // DO NOT allow positions past the bounds of the table
|
||||
newOdds = K_KartItemOddsBattle[item-1][pos];
|
||||
}
|
||||
else if (specialStage.active == true)
|
||||
{
|
||||
I_Assert(pos < 4); // Ditto
|
||||
newodds = K_KartItemOddsSpecial[item-1][pos];
|
||||
}
|
||||
else
|
||||
{
|
||||
I_Assert(pos < 8); // Ditto
|
||||
newOdds = K_KartItemOddsRace[item-1][pos];
|
||||
newodds = K_KartItemOddsRace[item-1][pos];
|
||||
}
|
||||
|
||||
newOdds <<= FRACBITS;
|
||||
|
|
@ -532,6 +566,8 @@ INT32 K_KartGetItemOdds(const player_t *player, itemroulette_t *const roulette,
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (specialStage.active == false)
|
||||
{
|
||||
if (roulette->firstDist < ENDDIST*2 // No SPB when 1st is almost done
|
||||
|| position == 1) // No SPB for 1st ever
|
||||
{
|
||||
|
|
@ -556,6 +592,7 @@ INT32 K_KartGetItemOdds(const player_t *player, itemroulette_t *const roulette,
|
|||
|
||||
newOdds = FixedMul(maxOdds, multiplier);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -684,6 +721,15 @@ static UINT8 K_FindUseodds(const player_t *player, itemroulette_t *const roulett
|
|||
useOdds = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (specialStage.active == true) // Special Stages
|
||||
{
|
||||
SETUPDISTTABLE(0,1);
|
||||
SETUPDISTTABLE(1,2);
|
||||
SETUPDISTTABLE(2,3);
|
||||
SETUPDISTTABLE(3,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
SETUPDISTTABLE(0,1);
|
||||
SETUPDISTTABLE(1,1);
|
||||
|
|
@ -693,6 +739,7 @@ static UINT8 K_FindUseodds(const player_t *player, itemroulette_t *const roulett
|
|||
SETUPDISTTABLE(5,3);
|
||||
SETUPDISTTABLE(6,3);
|
||||
SETUPDISTTABLE(7,1);
|
||||
}
|
||||
|
||||
for (i = 0; i < totalSize; i++)
|
||||
{
|
||||
|
|
@ -749,6 +796,11 @@ static boolean K_ForcedSPB(const player_t *player, itemroulette_t *const roulett
|
|||
return false;
|
||||
}
|
||||
|
||||
if (specialStage.active == true)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (player == NULL)
|
||||
{
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#include "../g_game.h"
|
||||
#include "../z_zone.h"
|
||||
#include "../k_waypoint.h"
|
||||
#include "../k_specialstage.h"
|
||||
|
||||
#define UFO_BASE_SPEED (12 * FRACUNIT) // UFO's slowest speed.
|
||||
#define UFO_SPEEDUP (FRACUNIT)
|
||||
|
|
@ -373,3 +374,16 @@ mobj_t *Obj_CreateSpecialUFO(void)
|
|||
|
||||
return InitSpecialUFO(startWaypoint);
|
||||
}
|
||||
|
||||
UINT32 K_GetSpecialUFODistance(void)
|
||||
{
|
||||
if (specialStage.active == true)
|
||||
{
|
||||
if (specialStage.ufo != NULL && P_MobjWasRemoved(specialStage.ufo) == false)
|
||||
{
|
||||
return (UINT32)ufo_distancetofinish(specialStage.ufo);
|
||||
}
|
||||
}
|
||||
|
||||
return UINT32_MAX;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue