diff --git a/src/doomstat.h b/src/doomstat.h index f7e13c93b..53ca57158 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -582,8 +582,8 @@ enum TypeOfLevel // Gametypes TOL_RACE = 0x0001, ///< Race TOL_BATTLE = 0x0002, ///< Battle - TOL_BOSS = 0x0004, ///< Boss (variant of battle, but forbidden) - TOL_SPECIAL = 0x0008, ///< Special Stage (variant of race, but forbidden) + TOL_SPECIAL = 0x0004, ///< Special Stage (variant of race, but forbidden) + TOL_VERSUS = 0x0008, ///< Versus (variant of battle, but forbidden) TOL_TUTORIAL = 0x0010, ///< Tutorial (variant of race, but forbidden) // Modifiers diff --git a/src/g_game.c b/src/g_game.c index 80942c25d..a83f27d1b 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -3392,7 +3392,7 @@ static gametype_t defaultgametypes[] = "Versus", "GT_VERSUS", GTR_BOSS|GTR_SPHERES|GTR_BUMPERS|GTR_POINTLIMIT|GTR_CLOSERPLAYERS|GTR_NOCUPSELECT|GTR_ENCORE, - TOL_BOSS, + TOL_VERSUS, int_scoreortimeattack, 0, 0, @@ -3550,8 +3550,8 @@ char *G_PrepareGametypeConstant(const char *newgtconst) tolinfo_t TYPEOFLEVEL[NUMTOLNAMES] = { {"RACE",TOL_RACE}, {"BATTLE",TOL_BATTLE}, - {"BOSS",TOL_BOSS}, {"SPECIAL",TOL_SPECIAL}, + {"VERSUS",TOL_VERSUS}, {"TUTORIAL",TOL_TUTORIAL}, {"TV",TOL_TV}, {NULL, 0} diff --git a/src/k_roulette.c b/src/k_roulette.c index 89d265b68..4efa164a4 100644 --- a/src/k_roulette.c +++ b/src/k_roulette.c @@ -73,6 +73,7 @@ #define ROULETTE_SPEED_FASTEST (2) #define ROULETTE_SPEED_DIST (150*DISTVAR) #define ROULETTE_SPEED_TIMEATTACK (9) +#define ROULETTE_SPEED_VERSUS_SLOWEST (12) static UINT8 K_KartItemOddsRace[NUMKARTRESULTS-1][8] = { @@ -205,11 +206,15 @@ static kartitems_t K_KartItemReelBreakTheCapsules[] = static kartitems_t K_KartItemReelBoss[] = { - KITEM_ORBINAUT, - KITEM_BANANA, - KITEM_ORBINAUT, - KITEM_BANANA, KITEM_GACHABOM, + KITEM_ORBINAUT, + KITEM_ORBINAUT, + KITEM_ORBINAUT, + KITEM_ORBINAUT, + KITEM_GACHABOM, + KITEM_ORBINAUT, + KITEM_ORBINAUT, + KITEM_ORBINAUT, KITEM_NONE }; @@ -1131,6 +1136,14 @@ static void K_CalculateRouletteSpeed(itemroulette_t *const roulette) fixed_t progress = 0; fixed_t total = 0; + if (bossinfo.valid == true) + { + // Boss in action, use a speed controlled by boss health + total = FixedDiv(bossinfo.healthbar, BOSSHEALTHBARLEN); + roulette->tics = roulette->speed = ROULETTE_SPEED_FASTEST + FixedMul(ROULETTE_SPEED_VERSUS_SLOWEST - ROULETTE_SPEED_FASTEST, total); + return; + } + if (K_TimeAttackRules() == true) { // Time Attack rules; use a consistent speed.