mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-05 09:46:40 +00:00
Capsule counter, map change when spawning capsules mid-game
This commit is contained in:
parent
e84c618da8
commit
9cb834b004
8 changed files with 91 additions and 39 deletions
|
|
@ -355,8 +355,6 @@ extern UINT16 emeralds;
|
|||
|
||||
extern INT32 nummaprings; // keep track of spawned rings/coins
|
||||
extern INT32 nummapboxes, numgotboxes; // keep track of spawned battle mode items
|
||||
extern UINT8 maptargets, numtargets; // Keep track of spawend Battle Mode targets
|
||||
extern boolean targetsspawned; // have targets been spawned already?
|
||||
|
||||
/** Time attack information, currently a very small structure.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -189,11 +189,6 @@ INT32 nummaprings = 0;
|
|||
INT32 nummapboxes = 0;
|
||||
INT32 numgotboxes = 0;
|
||||
|
||||
// Break the Capsules counters for Battle Mode!
|
||||
UINT8 maptargets = 0; // targets in map
|
||||
UINT8 numtargets = 0; // targets busted
|
||||
boolean targetsspawned = false; // have targets been spawned already?
|
||||
|
||||
// Elminates unnecessary searching.
|
||||
boolean CheckForBustableBlocks;
|
||||
boolean CheckForBouncySector;
|
||||
|
|
@ -2867,7 +2862,7 @@ void G_SpawnPlayer(INT32 playernum, boolean starpost)
|
|||
}
|
||||
|
||||
// -- Record Attack --
|
||||
if (modeattacking)
|
||||
if (modeattacking || battlecapsules)
|
||||
spawnpoint = playerstarts[0];
|
||||
|
||||
// -- CTF --
|
||||
|
|
|
|||
|
|
@ -14,6 +14,13 @@
|
|||
#include "r_defs.h" // MAXFFLOORS
|
||||
#include "info.h"
|
||||
|
||||
// Capsules mode enabled for this map?
|
||||
boolean battlecapsules = false;
|
||||
|
||||
// Capsule counters
|
||||
UINT8 maptargets = 0; // Capsules in map
|
||||
UINT8 numtargets = 0; // Capsules busted
|
||||
|
||||
boolean K_IsPlayerWanted(player_t *player)
|
||||
{
|
||||
UINT8 i;
|
||||
|
|
@ -216,7 +223,8 @@ void K_CheckBumpers(void)
|
|||
|
||||
if (numingame <= 1)
|
||||
{
|
||||
K_SpawnBattleCapsules();
|
||||
if (!battlecapsules)
|
||||
D_MapChange(gamemap, gametype, encoremode, true, 0, false, false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -300,7 +308,7 @@ void K_SpawnBattleCapsules(void)
|
|||
UINT8 n = 0;
|
||||
size_t i;
|
||||
|
||||
if (targetsspawned)
|
||||
if (battlecapsules)
|
||||
return;
|
||||
|
||||
if (!G_BattleGametype())
|
||||
|
|
@ -498,5 +506,5 @@ void K_SpawnBattleCapsules(void)
|
|||
}
|
||||
}
|
||||
|
||||
targetsspawned = true;
|
||||
battlecapsules = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@
|
|||
#include "doomtype.h"
|
||||
#include "d_player.h"
|
||||
|
||||
extern boolean battlecapsules;
|
||||
extern UINT8 maptargets, numtargets;
|
||||
|
||||
boolean K_IsPlayerWanted(player_t *player);
|
||||
void K_CalculateBattleWanted(void);
|
||||
void K_SpawnBattlePoints(player_t *source, player_t *victim, UINT8 amount);
|
||||
|
|
|
|||
89
src/k_kart.c
89
src/k_kart.c
|
|
@ -6715,6 +6715,8 @@ static patch_t *kp_lapstickernarrow;
|
|||
static patch_t *kp_splitlapflag;
|
||||
static patch_t *kp_bumpersticker;
|
||||
static patch_t *kp_bumperstickerwide;
|
||||
static patch_t *kp_capsulesticker;
|
||||
static patch_t *kp_capsulestickerwide;
|
||||
static patch_t *kp_karmasticker;
|
||||
static patch_t *kp_splitkarmabomb;
|
||||
static patch_t *kp_timeoutsticker;
|
||||
|
|
@ -6743,6 +6745,7 @@ static patch_t *kp_speedometerlabel[4];
|
|||
static patch_t *kp_rankbumper;
|
||||
static patch_t *kp_tinybumper[2];
|
||||
static patch_t *kp_ranknobumpers;
|
||||
static patch_t *kp_rankcapsule;
|
||||
|
||||
static patch_t *kp_battlewin;
|
||||
static patch_t *kp_battlecool;
|
||||
|
|
@ -6811,6 +6814,8 @@ void K_LoadKartHUDGraphics(void)
|
|||
kp_splitlapflag = W_CachePatchName("K_SPTLAP", PU_HUDGFX);
|
||||
kp_bumpersticker = W_CachePatchName("K_STBALN", PU_HUDGFX);
|
||||
kp_bumperstickerwide = W_CachePatchName("K_STBALW", PU_HUDGFX);
|
||||
kp_capsulesticker = W_CachePatchName("K_STCAPN", PU_HUDGFX);
|
||||
kp_capsulestickerwide = W_CachePatchName("K_STCAPW", PU_HUDGFX);
|
||||
kp_karmasticker = W_CachePatchName("K_STKARM", PU_HUDGFX);
|
||||
kp_splitkarmabomb = W_CachePatchName("K_SPTKRM", PU_HUDGFX);
|
||||
kp_timeoutsticker = W_CachePatchName("K_STTOUT", PU_HUDGFX);
|
||||
|
|
@ -6935,6 +6940,7 @@ void K_LoadKartHUDGraphics(void)
|
|||
kp_tinybumper[0] = W_CachePatchName("K_BLNA", PU_HUDGFX);
|
||||
kp_tinybumper[1] = W_CachePatchName("K_BLNB", PU_HUDGFX);
|
||||
kp_ranknobumpers = W_CachePatchName("K_NOBLNS", PU_HUDGFX);
|
||||
kp_rankcapsule = W_CachePatchName("K_CAPICO", PU_HUDGFX);
|
||||
|
||||
// Battle graphics
|
||||
kp_battlewin = W_CachePatchName("K_BWIN", PU_HUDGFX);
|
||||
|
|
@ -8418,52 +8424,91 @@ static void K_drawKartBumpersOrKarma(void)
|
|||
V_DrawScaledPatch(fx-2 + (flipflag ? (SHORT(kp_ringstickersplit[1]->width) - 3) : 0), fy, V_HUDTRANS|splitflags|flipflag, kp_ringstickersplit[0]);
|
||||
V_DrawScaledPatch(fx+22, fy, V_HUDTRANS|splitflags, frameslash);
|
||||
|
||||
if (stplyr->kartstuff[k_bumper] <= 0)
|
||||
if (battlecapsules)
|
||||
{
|
||||
V_DrawMappedPatch(fx+1, fy-2, V_HUDTRANS|splitflags, kp_splitkarmabomb, colormap);
|
||||
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, kp_facenum[(stplyr->kartstuff[k_comebackpoints]) % 10]);
|
||||
V_DrawScaledPatch(fx+27, fy, V_HUDTRANS|splitflags, kp_facenum[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawMappedPatch(fx+1, fy-2, V_HUDTRANS|splitflags, kp_rankbumper, colormap);
|
||||
V_DrawMappedPatch(fx+1, fy-2, V_HUDTRANS|splitflags, kp_rankcapsule, NULL);
|
||||
|
||||
if (stplyr->kartstuff[k_bumper] > 9 || cv_kartbumpers.value > 9)
|
||||
if (numtargets > 9 || maptargets > 9)
|
||||
{
|
||||
UINT8 ln[2];
|
||||
ln[0] = ((abs(stplyr->kartstuff[k_bumper]) / 10) % 10);
|
||||
ln[1] = (abs(stplyr->kartstuff[k_bumper]) % 10);
|
||||
ln[0] = ((numtargets / 10) % 10);
|
||||
ln[1] = (numtargets % 10);
|
||||
|
||||
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, pingnum[ln[0]]);
|
||||
V_DrawScaledPatch(fx+17, fy, V_HUDTRANS|splitflags, pingnum[ln[1]]);
|
||||
|
||||
ln[0] = ((abs(cv_kartbumpers.value) / 10) % 10);
|
||||
ln[1] = (abs(cv_kartbumpers.value) % 10);
|
||||
ln[0] = ((maptargets / 10) % 10);
|
||||
ln[1] = (maptargets % 10);
|
||||
|
||||
V_DrawScaledPatch(fx+27, fy, V_HUDTRANS|splitflags, pingnum[ln[0]]);
|
||||
V_DrawScaledPatch(fx+31, fy, V_HUDTRANS|splitflags, pingnum[ln[1]]);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, kp_facenum[(stplyr->kartstuff[k_bumper]) % 10]);
|
||||
V_DrawScaledPatch(fx+27, fy, V_HUDTRANS|splitflags, kp_facenum[(cv_kartbumpers.value) % 10]);
|
||||
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, kp_facenum[numtargets % 10]);
|
||||
V_DrawScaledPatch(fx+27, fy, V_HUDTRANS|splitflags, kp_facenum[maptargets % 10]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (stplyr->kartstuff[k_bumper] <= 0)
|
||||
{
|
||||
V_DrawMappedPatch(fx+1, fy-2, V_HUDTRANS|splitflags, kp_splitkarmabomb, colormap);
|
||||
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, kp_facenum[(stplyr->kartstuff[k_comebackpoints]) % 10]);
|
||||
V_DrawScaledPatch(fx+27, fy, V_HUDTRANS|splitflags, kp_facenum[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawMappedPatch(fx+1, fy-2, V_HUDTRANS|splitflags, kp_rankbumper, colormap);
|
||||
|
||||
if (stplyr->kartstuff[k_bumper] > 9 || cv_kartbumpers.value > 9)
|
||||
{
|
||||
UINT8 ln[2];
|
||||
ln[0] = ((abs(stplyr->kartstuff[k_bumper]) / 10) % 10);
|
||||
ln[1] = (abs(stplyr->kartstuff[k_bumper]) % 10);
|
||||
|
||||
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, pingnum[ln[0]]);
|
||||
V_DrawScaledPatch(fx+17, fy, V_HUDTRANS|splitflags, pingnum[ln[1]]);
|
||||
|
||||
ln[0] = ((abs(cv_kartbumpers.value) / 10) % 10);
|
||||
ln[1] = (abs(cv_kartbumpers.value) % 10);
|
||||
|
||||
V_DrawScaledPatch(fx+27, fy, V_HUDTRANS|splitflags, pingnum[ln[0]]);
|
||||
V_DrawScaledPatch(fx+31, fy, V_HUDTRANS|splitflags, pingnum[ln[1]]);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, kp_facenum[(stplyr->kartstuff[k_bumper]) % 10]);
|
||||
V_DrawScaledPatch(fx+27, fy, V_HUDTRANS|splitflags, kp_facenum[(cv_kartbumpers.value) % 10]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (stplyr->kartstuff[k_bumper] <= 0)
|
||||
if (battlecapsules)
|
||||
{
|
||||
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_karmasticker, colormap);
|
||||
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/2", stplyr->kartstuff[k_comebackpoints]));
|
||||
if (numtargets > 9 && maptargets > 9)
|
||||
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_capsulestickerwide, NULL);
|
||||
else
|
||||
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_capsulesticker, NULL);
|
||||
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%d", numtargets, maptargets));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (stplyr->kartstuff[k_bumper] > 9 && cv_kartbumpers.value > 9)
|
||||
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_bumperstickerwide, colormap);
|
||||
if (stplyr->kartstuff[k_bumper] <= 0)
|
||||
{
|
||||
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_karmasticker, colormap);
|
||||
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/2", stplyr->kartstuff[k_comebackpoints]));
|
||||
}
|
||||
else
|
||||
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_bumpersticker, colormap);
|
||||
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%d", stplyr->kartstuff[k_bumper], cv_kartbumpers.value));
|
||||
{
|
||||
if (stplyr->kartstuff[k_bumper] > 9 && cv_kartbumpers.value > 9)
|
||||
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_bumperstickerwide, colormap);
|
||||
else
|
||||
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_bumpersticker, colormap);
|
||||
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%d", stplyr->kartstuff[k_bumper], cv_kartbumpers.value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
#include "p_slopes.h"
|
||||
#endif
|
||||
|
||||
#include "k_battle.h"
|
||||
|
||||
savedata_t savedata;
|
||||
UINT8 *save_p;
|
||||
|
||||
|
|
@ -3278,7 +3280,7 @@ static void P_NetArchiveMisc(void)
|
|||
// SRB2kart
|
||||
WRITEINT32(save_p, numgotboxes);
|
||||
WRITEUINT8(save_p, numtargets);
|
||||
WRITEUINT8(save_p, targetsspawned);
|
||||
WRITEUINT8(save_p, battlecapsules);
|
||||
|
||||
WRITEUINT8(save_p, gamespeed);
|
||||
WRITEUINT8(save_p, franticitems);
|
||||
|
|
@ -3389,7 +3391,7 @@ static inline boolean P_NetUnArchiveMisc(void)
|
|||
// SRB2kart
|
||||
numgotboxes = READINT32(save_p);
|
||||
numtargets = READUINT8(save_p);
|
||||
targetsspawned = (boolean)READUINT8(save_p);
|
||||
battlecapsules = (boolean)READUINT8(save_p);
|
||||
|
||||
gamespeed = READUINT8(save_p);
|
||||
franticitems = (boolean)READUINT8(save_p);
|
||||
|
|
|
|||
|
|
@ -2309,7 +2309,7 @@ static void P_LevelInitStuff(void)
|
|||
nummaprings = 0;
|
||||
nummapboxes = numgotboxes = 0;
|
||||
maptargets = numtargets = 0;
|
||||
targetsspawned = false;
|
||||
battlecapsules = false;
|
||||
|
||||
// emerald hunt
|
||||
hunt1 = hunt2 = hunt3 = NULL;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
#include "m_random.h" // M_RandomKey
|
||||
#include "g_input.h" // PLAYER1INPUTDOWN
|
||||
#include "k_kart.h" // colortranslations
|
||||
#include "k_battle.h"
|
||||
#include "console.h" // cons_menuhighlight
|
||||
#include "lua_hook.h" // IntermissionThinker hook
|
||||
|
||||
|
|
@ -433,7 +434,7 @@ void Y_IntermissionDrawer(void)
|
|||
if (data.match.rankingsmode)
|
||||
timeheader = "RANK";
|
||||
else
|
||||
timeheader = ((intertype == int_race || (intertype == int_match && targetsspawned)) ? "TIME" : "SCORE");
|
||||
timeheader = ((intertype == int_race || (intertype == int_match && battlecapsules)) ? "TIME" : "SCORE");
|
||||
|
||||
// draw the level name
|
||||
V_DrawCenteredString(-4 + x + BASEVIDWIDTH/2, 12, 0, data.match.levelstring);
|
||||
|
|
@ -519,7 +520,7 @@ void Y_IntermissionDrawer(void)
|
|||
V_DrawRightAlignedThinString(x+152+gutter, y-1, (data.match.numplayers > NUMFORNEWCOLUMN ? V_6WIDTHSPACE : 0), "NO CONTEST.");
|
||||
else
|
||||
{
|
||||
if (intertype == int_race || (intertype == int_match && targetsspawned))
|
||||
if (intertype == int_race || (intertype == int_match && battlecapsules))
|
||||
{
|
||||
snprintf(strtime, sizeof strtime, "%i'%02i\"%02i", G_TicsToMinutes(data.match.val[i], true),
|
||||
G_TicsToSeconds(data.match.val[i]), G_TicsToCentiseconds(data.match.val[i]));
|
||||
|
|
@ -856,7 +857,7 @@ void Y_StartIntermission(void)
|
|||
case int_match:
|
||||
{
|
||||
// Calculate who won
|
||||
Y_CalculateMatchData(0, targetsspawned ? Y_CompareRace : Y_CompareBattle);
|
||||
Y_CalculateMatchData(0, battlecapsules ? Y_CompareRace : Y_CompareBattle);
|
||||
if (cv_inttime.value > 0)
|
||||
S_ChangeMusicInternal("racent", true); // loop it
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue