Merge branch 'master' of https://git.magicalgirl.moe/KartKrew/Kart.git into itemdrop
# Conflicts: # src/sounds.c # src/sounds.h
This commit is contained in:
commit
d7f8d4507a
|
@ -28,6 +28,7 @@
|
||||||
#include "byteptr.h"
|
#include "byteptr.h"
|
||||||
#include "p_saveg.h"
|
#include "p_saveg.h"
|
||||||
#include "g_game.h" // for player_names
|
#include "g_game.h" // for player_names
|
||||||
|
#include "m_cond.h" // for encore mode
|
||||||
#include "d_netcmd.h"
|
#include "d_netcmd.h"
|
||||||
#include "hu_stuff.h"
|
#include "hu_stuff.h"
|
||||||
#include "p_setup.h"
|
#include "p_setup.h"
|
||||||
|
@ -1370,6 +1371,12 @@ static void CV_SetCVar(consvar_t *var, const char *value, boolean stealth)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (var == &cv_kartencore && !M_SecretUnlocked(SECRET_ENCORE))
|
||||||
|
{
|
||||||
|
CONS_Printf(M_GetText("You haven't unlocked Encore Mode yet!\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Only add to netcmd buffer if in a netgame, otherwise, just change it.
|
// Only add to netcmd buffer if in a netgame, otherwise, just change it.
|
||||||
if (netgame || multiplayer)
|
if (netgame || multiplayer)
|
||||||
{
|
{
|
||||||
|
@ -1472,14 +1479,12 @@ void CV_AddValue(consvar_t *var, INT32 increment)
|
||||||
{
|
{
|
||||||
if(increment > 0) // Going up!
|
if(increment > 0) // Going up!
|
||||||
{
|
{
|
||||||
newvalue++;
|
if (++newvalue == NUMMAPS)
|
||||||
if (newvalue == NUMMAPS)
|
newvalue = -1;
|
||||||
newvalue = 0;
|
|
||||||
}
|
}
|
||||||
else // Going down!
|
else // Going down!
|
||||||
{
|
{
|
||||||
newvalue--;
|
if (--newvalue == -2)
|
||||||
if (newvalue == -1)
|
|
||||||
newvalue = NUMMAPS-1;
|
newvalue = NUMMAPS-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -150,6 +150,13 @@ static CV_PossibleValue_t menuhighlight_cons_t[] =
|
||||||
{V_GRAYMAP, "Always gray"},
|
{V_GRAYMAP, "Always gray"},
|
||||||
{V_ORANGEMAP, "Always orange"},
|
{V_ORANGEMAP, "Always orange"},
|
||||||
{V_SKYMAP, "Always sky-blue"},
|
{V_SKYMAP, "Always sky-blue"},
|
||||||
|
{V_GOLDMAP, "Always gold"},
|
||||||
|
{V_LAVENDERMAP, "Always lavender"},
|
||||||
|
{V_TEAMAP, "Always tea-green"},
|
||||||
|
{V_STEELMAP, "Always steel"},
|
||||||
|
{V_PINKMAP, "Always pink"},
|
||||||
|
{V_TEALMAP, "Always teal"},
|
||||||
|
{V_PEACHMAP, "Always peach"},
|
||||||
{0, NULL}
|
{0, NULL}
|
||||||
};
|
};
|
||||||
consvar_t cons_menuhighlight = {"menuhighlight", "Game type", CV_SAVE, menuhighlight_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cons_menuhighlight = {"menuhighlight", "Game type", CV_SAVE, menuhighlight_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
@ -239,11 +246,6 @@ static void CONS_Bind_f(void)
|
||||||
// CONSOLE SETUP
|
// CONSOLE SETUP
|
||||||
//======================================================================
|
//======================================================================
|
||||||
|
|
||||||
// Font colormap colors
|
|
||||||
// TODO: This could probably be improved somehow...
|
|
||||||
// These colormaps are 99% identical, with just a few changed bytes
|
|
||||||
UINT8 *yellowmap, *purplemap, *greenmap, *bluemap, *graymap, *redmap, *orangemap, *skymap;
|
|
||||||
|
|
||||||
// Console BG color
|
// Console BG color
|
||||||
UINT8 *consolebgmap = NULL;
|
UINT8 *consolebgmap = NULL;
|
||||||
|
|
||||||
|
@ -284,10 +286,16 @@ static void CONS_backcolor_Change(void)
|
||||||
CON_SetupBackColormap();
|
CON_SetupBackColormap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Font colormap colors
|
||||||
|
// TODO: This could probably be improved somehow...
|
||||||
|
// These colormaps are 99% identical, with just a few changed bytes
|
||||||
|
UINT8 *yellowmap, *purplemap, *greenmap, *bluemap, *graymap, *redmap, *orangemap,\
|
||||||
|
*skymap, *goldmap, *lavendermap, *teamap, *steelmap, *pinkmap, *tealmap, *peachmap;
|
||||||
|
|
||||||
static void CON_SetupColormaps(void)
|
static void CON_SetupColormaps(void)
|
||||||
{
|
{
|
||||||
INT32 i;
|
INT32 i;
|
||||||
UINT8 *memorysrc = (UINT8 *)Z_Malloc((256*8), PU_STATIC, NULL);
|
UINT8 *memorysrc = (UINT8 *)Z_Malloc((256*15), PU_STATIC, NULL);
|
||||||
|
|
||||||
purplemap = memorysrc;
|
purplemap = memorysrc;
|
||||||
yellowmap = (purplemap+256);
|
yellowmap = (purplemap+256);
|
||||||
|
@ -297,13 +305,20 @@ static void CON_SetupColormaps(void)
|
||||||
graymap = (redmap+256);
|
graymap = (redmap+256);
|
||||||
orangemap = (graymap+256);
|
orangemap = (graymap+256);
|
||||||
skymap = (orangemap+256);
|
skymap = (orangemap+256);
|
||||||
|
lavendermap = (skymap+256);
|
||||||
|
goldmap = (lavendermap+256);
|
||||||
|
teamap = (goldmap+256);
|
||||||
|
steelmap = (teamap+256);
|
||||||
|
pinkmap = (steelmap+256);
|
||||||
|
tealmap = (pinkmap+256);
|
||||||
|
peachmap = (tealmap+256);
|
||||||
|
|
||||||
// setup the other colormaps, for console text
|
// setup the other colormaps, for console text
|
||||||
|
|
||||||
// these don't need to be aligned, unless you convert the
|
// these don't need to be aligned, unless you convert the
|
||||||
// V_DrawMappedPatch() into optimised asm.
|
// V_DrawMappedPatch() into optimised asm.
|
||||||
|
|
||||||
for (i = 0; i < (256*8); i++, ++memorysrc)
|
for (i = 0; i < (256*15); i++, ++memorysrc)
|
||||||
*memorysrc = (UINT8)(i & 0xFF); // remap each color to itself...
|
*memorysrc = (UINT8)(i & 0xFF); // remap each color to itself...
|
||||||
|
|
||||||
// SRB2Kart: Different console font, new colors
|
// SRB2Kart: Different console font, new colors
|
||||||
|
@ -311,10 +326,17 @@ static void CON_SetupColormaps(void)
|
||||||
yellowmap[120] = (UINT8)103;
|
yellowmap[120] = (UINT8)103;
|
||||||
greenmap[120] = (UINT8)162;
|
greenmap[120] = (UINT8)162;
|
||||||
bluemap[120] = (UINT8)228;
|
bluemap[120] = (UINT8)228;
|
||||||
graymap[120] = (UINT8)10;
|
|
||||||
redmap[120] = (UINT8)126; // battle
|
redmap[120] = (UINT8)126; // battle
|
||||||
|
graymap[120] = (UINT8)10;
|
||||||
orangemap[120] = (UINT8)85; // record attack
|
orangemap[120] = (UINT8)85; // record attack
|
||||||
skymap[120] = (UINT8)214; // race
|
skymap[120] = (UINT8)214; // race
|
||||||
|
lavendermap[120] = (UINT8)248;
|
||||||
|
goldmap[120] = (UINT8)114;
|
||||||
|
teamap[120] = (UINT8)177;
|
||||||
|
steelmap[120] = (UINT8)201;
|
||||||
|
pinkmap[120] = (UINT8)124;
|
||||||
|
tealmap[120] = (UINT8)220;
|
||||||
|
peachmap[120] = (UINT8)69; // nice
|
||||||
|
|
||||||
// Init back colormap
|
// Init back colormap
|
||||||
CON_SetupBackColormap();
|
CON_SetupBackColormap();
|
||||||
|
|
|
@ -38,7 +38,8 @@ extern UINT32 con_scalefactor; // console text scale factor
|
||||||
|
|
||||||
extern consvar_t cons_backcolor, cons_menuhighlight;
|
extern consvar_t cons_backcolor, cons_menuhighlight;
|
||||||
|
|
||||||
extern UINT8 *yellowmap, *purplemap, *greenmap, *bluemap, *graymap, *redmap, *orangemap, *skymap;
|
extern UINT8 *yellowmap, *purplemap, *greenmap, *bluemap, *graymap, *redmap, *orangemap,\
|
||||||
|
*skymap, *goldmap, *lavendermap, *teamap, *steelmap, *pinkmap, *tealmap, *peachmap;
|
||||||
|
|
||||||
// Console bg color (auto updated to match)
|
// Console bg color (auto updated to match)
|
||||||
extern UINT8 *consolebgmap;
|
extern UINT8 *consolebgmap;
|
||||||
|
|
|
@ -4758,7 +4758,7 @@ void TryRunTics(tic_t realtics)
|
||||||
{
|
{
|
||||||
COM_BufExecute();
|
COM_BufExecute();
|
||||||
if (mapchangepending)
|
if (mapchangepending)
|
||||||
D_MapChange(-1, 0, ultimatemode, false, 2, false, fromlevelselect); // finish the map change
|
D_MapChange(-1, 0, encoremode, false, 2, false, fromlevelselect); // finish the map change
|
||||||
}
|
}
|
||||||
|
|
||||||
NetUpdate();
|
NetUpdate();
|
||||||
|
|
|
@ -322,7 +322,7 @@ static void D_Display(void)
|
||||||
if (wipegamestate == GS_LEVEL && rendermode != render_none)
|
if (wipegamestate == GS_LEVEL && rendermode != render_none)
|
||||||
{
|
{
|
||||||
V_SetPaletteLump("PLAYPAL"); // Reset the palette
|
V_SetPaletteLump("PLAYPAL"); // Reset the palette
|
||||||
R_ReInitColormaps(0);
|
R_ReInitColormaps(0, LUMPERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
F_WipeStartScreen();
|
F_WipeStartScreen();
|
||||||
|
@ -1490,7 +1490,7 @@ void D_SRB2Main(void)
|
||||||
else if (!dedicated && M_MapLocked(pstartmap))
|
else if (!dedicated && M_MapLocked(pstartmap))
|
||||||
I_Error("You need to unlock this level before you can warp to it!\n");
|
I_Error("You need to unlock this level before you can warp to it!\n");
|
||||||
else
|
else
|
||||||
D_MapChange(pstartmap, gametype, ultimatemode, true, 0, false, false);
|
D_MapChange(pstartmap, gametype, (boolean)cv_kartencore.value, true, 0, false, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (M_CheckParm("-skipintro"))
|
else if (M_CheckParm("-skipintro"))
|
||||||
|
|
|
@ -112,7 +112,7 @@ static void SoundTest_OnChange(void);
|
||||||
static void BaseNumLaps_OnChange(void);
|
static void BaseNumLaps_OnChange(void);
|
||||||
static void KartFrantic_OnChange(void);
|
static void KartFrantic_OnChange(void);
|
||||||
static void KartSpeed_OnChange(void);
|
static void KartSpeed_OnChange(void);
|
||||||
static void KartMirror_OnChange(void);
|
static void KartEncore_OnChange(void);
|
||||||
static void KartComeback_OnChange(void);
|
static void KartComeback_OnChange(void);
|
||||||
static void KartEliminateLast_OnChange(void);
|
static void KartEliminateLast_OnChange(void);
|
||||||
|
|
||||||
|
@ -354,7 +354,9 @@ static CV_PossibleValue_t kartbumpers_cons_t[] = {{1, "MIN"}, {12, "MAX"}, {0, N
|
||||||
consvar_t cv_kartbumpers = {"kartbumpers", "3", CV_NETVAR|CV_CHEAT, kartbumpers_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_kartbumpers = {"kartbumpers", "3", CV_NETVAR|CV_CHEAT, kartbumpers_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_kartfrantic = {"kartfrantic", "Off", CV_NETVAR|CV_CHEAT|CV_CALL|CV_NOINIT, CV_OnOff, KartFrantic_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_kartfrantic = {"kartfrantic", "Off", CV_NETVAR|CV_CHEAT|CV_CALL|CV_NOINIT, CV_OnOff, KartFrantic_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_kartcomeback = {"kartcomeback", "On", CV_NETVAR|CV_CHEAT|CV_CALL|CV_NOINIT, CV_OnOff, KartComeback_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_kartcomeback = {"kartcomeback", "On", CV_NETVAR|CV_CHEAT|CV_CALL|CV_NOINIT, CV_OnOff, KartComeback_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_kartmirror = {"kartmirror", "Off", CV_NETVAR|CV_CHEAT|CV_CALL|CV_NOINIT, CV_OnOff, KartMirror_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_kartencore = {"kartencore", "Off", CV_NETVAR|CV_CALL|CV_NOINIT, CV_OnOff, KartEncore_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
static CV_PossibleValue_t kartvoterulechanges_cons_t[] = {{0, "Never"}, {1, "Sometimes"}, {2, "Frequent"}, {3, "Always"}, {0, NULL}};
|
||||||
|
consvar_t cv_kartvoterulechanges = {"kartvoterulechanges", "Sometimes", CV_NETVAR, kartvoterulechanges_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
static CV_PossibleValue_t kartspeedometer_cons_t[] = {{0, "Off"}, {1, "Kilometers"}, {2, "Miles"}, {3, "Fracunits"}, {0, NULL}};
|
static CV_PossibleValue_t kartspeedometer_cons_t[] = {{0, "Off"}, {1, "Kilometers"}, {2, "Miles"}, {3, "Fracunits"}, {0, NULL}};
|
||||||
consvar_t cv_kartspeedometer = {"kartdisplayspeed", "Off", CV_SAVE, kartspeedometer_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; // use tics in display
|
consvar_t cv_kartspeedometer = {"kartdisplayspeed", "Off", CV_SAVE, kartspeedometer_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; // use tics in display
|
||||||
static CV_PossibleValue_t kartvoices_cons_t[] = {{0, "Never"}, {1, "Tasteful"}, {2, "Meme"}, {0, NULL}};
|
static CV_PossibleValue_t kartvoices_cons_t[] = {{0, "Never"}, {1, "Tasteful"}, {2, "Meme"}, {0, NULL}};
|
||||||
|
@ -451,6 +453,7 @@ consvar_t cv_sleep = {"cpusleep", "-1", CV_SAVE, sleeping_cons_t, NULL, -1, NULL
|
||||||
|
|
||||||
INT16 gametype = GT_RACE; // SRB2kart
|
INT16 gametype = GT_RACE; // SRB2kart
|
||||||
boolean forceresetplayers = false;
|
boolean forceresetplayers = false;
|
||||||
|
boolean deferencoremode = false;
|
||||||
UINT8 splitscreen = 0;
|
UINT8 splitscreen = 0;
|
||||||
boolean circuitmap = true; // SRB2kart
|
boolean circuitmap = true; // SRB2kart
|
||||||
INT32 adminplayers[MAXPLAYERS];
|
INT32 adminplayers[MAXPLAYERS];
|
||||||
|
@ -1877,7 +1880,7 @@ INT32 mapchangepending = 0;
|
||||||
*
|
*
|
||||||
* \param mapnum Map number to change to.
|
* \param mapnum Map number to change to.
|
||||||
* \param gametype Gametype to switch to.
|
* \param gametype Gametype to switch to.
|
||||||
* \param pultmode Is this 'Ultimate Mode'?
|
* \param pencoremode Is this 'Encore Mode'?
|
||||||
* \param resetplayers 1 to reset player scores and lives and such, 0 not to.
|
* \param resetplayers 1 to reset player scores and lives and such, 0 not to.
|
||||||
* \param delay Determines how the function will be executed: 0 to do
|
* \param delay Determines how the function will be executed: 0 to do
|
||||||
* it all right now (must not be done from a menu), 1 to
|
* it all right now (must not be done from a menu), 1 to
|
||||||
|
@ -1886,18 +1889,16 @@ INT32 mapchangepending = 0;
|
||||||
* \sa D_GameTypeChanged, Command_Map_f
|
* \sa D_GameTypeChanged, Command_Map_f
|
||||||
* \author Graue <graue@oceanbase.org>
|
* \author Graue <graue@oceanbase.org>
|
||||||
*/
|
*/
|
||||||
void D_MapChange(INT32 mapnum, INT32 newgametype, boolean pultmode, boolean resetplayers, INT32 delay, boolean skipprecutscene, boolean FLS)
|
void D_MapChange(INT32 mapnum, INT32 newgametype, boolean pencoremode, boolean resetplayers, INT32 delay, boolean skipprecutscene, boolean FLS)
|
||||||
{
|
{
|
||||||
static char buf[2+MAX_WADPATH+1+4];
|
static char buf[2+MAX_WADPATH+1+4];
|
||||||
static char *buf_p = buf;
|
static char *buf_p = buf;
|
||||||
|
|
||||||
forceresetplayers = false;
|
|
||||||
|
|
||||||
// The supplied data are assumed to be good.
|
// The supplied data are assumed to be good.
|
||||||
I_Assert(delay >= 0 && delay <= 2);
|
I_Assert(delay >= 0 && delay <= 2);
|
||||||
|
|
||||||
CONS_Debug(DBG_GAMELOGIC, "Map change: mapnum=%d gametype=%d ultmode=%d resetplayers=%d delay=%d skipprecutscene=%d\n",
|
CONS_Debug(DBG_GAMELOGIC, "Map change: mapnum=%d gametype=%d encoremode=%d resetplayers=%d delay=%d skipprecutscene=%d\n",
|
||||||
mapnum, newgametype, pultmode, resetplayers, delay, skipprecutscene);
|
mapnum, newgametype, pencoremode, resetplayers, delay, skipprecutscene);
|
||||||
|
|
||||||
if (netgame || multiplayer)
|
if (netgame || multiplayer)
|
||||||
FLS = false;
|
FLS = false;
|
||||||
|
@ -1910,7 +1911,7 @@ void D_MapChange(INT32 mapnum, INT32 newgametype, boolean pultmode, boolean rese
|
||||||
I_Assert(W_CheckNumForName(mapname) != LUMPERROR);
|
I_Assert(W_CheckNumForName(mapname) != LUMPERROR);
|
||||||
|
|
||||||
buf_p = buf;
|
buf_p = buf;
|
||||||
if (pultmode)
|
if (pencoremode)
|
||||||
flags |= 1;
|
flags |= 1;
|
||||||
if (!resetplayers)
|
if (!resetplayers)
|
||||||
flags |= 1<<1;
|
flags |= 1<<1;
|
||||||
|
@ -1978,8 +1979,12 @@ void D_SetupVote(void)
|
||||||
INT32 i;
|
INT32 i;
|
||||||
UINT8 secondgt = G_SometimesGetDifferentGametype();
|
UINT8 secondgt = G_SometimesGetDifferentGametype();
|
||||||
|
|
||||||
|
if (cv_kartencore.value && G_RaceGametype())
|
||||||
|
WRITEUINT8(p, (gametype|0x80));
|
||||||
|
else
|
||||||
WRITEUINT8(p, gametype);
|
WRITEUINT8(p, gametype);
|
||||||
WRITEUINT8(p, secondgt);
|
WRITEUINT8(p, secondgt);
|
||||||
|
secondgt &= ~0x80;
|
||||||
|
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < 5; i++)
|
||||||
{
|
{
|
||||||
|
@ -2114,10 +2119,6 @@ static void Command_Map_f(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ultimate Mode only in SP via menu
|
|
||||||
if (netgame || multiplayer)
|
|
||||||
ultimatemode = false;
|
|
||||||
|
|
||||||
// new gametype value
|
// new gametype value
|
||||||
// use current one by default
|
// use current one by default
|
||||||
i = COM_CheckParm("-gametype");
|
i = COM_CheckParm("-gametype");
|
||||||
|
@ -2182,7 +2183,7 @@ static void Command_Map_f(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
fromlevelselect = false;
|
fromlevelselect = false;
|
||||||
D_MapChange(newmapnum, newgametype, false, newresetplayers, 0, false, false);
|
D_MapChange(newmapnum, newgametype, (boolean)cv_kartencore.value, newresetplayers, 0, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Receives a map command and changes the map.
|
/** Receives a map command and changes the map.
|
||||||
|
@ -2198,6 +2199,9 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum)
|
||||||
UINT8 flags;
|
UINT8 flags;
|
||||||
INT32 resetplayer = 1, lastgametype;
|
INT32 resetplayer = 1, lastgametype;
|
||||||
UINT8 skipprecutscene, FLS;
|
UINT8 skipprecutscene, FLS;
|
||||||
|
boolean pencoremode;
|
||||||
|
|
||||||
|
forceresetplayers = deferencoremode = false;
|
||||||
|
|
||||||
if (playernum != serverplayer && !IsPlayerAdmin(playernum))
|
if (playernum != serverplayer && !IsPlayerAdmin(playernum))
|
||||||
{
|
{
|
||||||
|
@ -2218,9 +2222,7 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum)
|
||||||
|
|
||||||
flags = READUINT8(*cp);
|
flags = READUINT8(*cp);
|
||||||
|
|
||||||
ultimatemode = ((flags & 1) != 0);
|
pencoremode = ((flags & 1) != 0);
|
||||||
if (netgame || multiplayer)
|
|
||||||
ultimatemode = false;
|
|
||||||
|
|
||||||
resetplayer = ((flags & (1<<1)) == 0);
|
resetplayer = ((flags & (1<<1)) == 0);
|
||||||
|
|
||||||
|
@ -2230,6 +2232,9 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum)
|
||||||
if (gametype != lastgametype)
|
if (gametype != lastgametype)
|
||||||
D_GameTypeChanged(lastgametype); // emulate consvar_t behavior for gametype
|
D_GameTypeChanged(lastgametype); // emulate consvar_t behavior for gametype
|
||||||
|
|
||||||
|
if (!G_RaceGametype())
|
||||||
|
pencoremode = false;
|
||||||
|
|
||||||
skipprecutscene = ((flags & (1<<2)) != 0);
|
skipprecutscene = ((flags & (1<<2)) != 0);
|
||||||
|
|
||||||
FLS = ((flags & (1<<3)) != 0);
|
FLS = ((flags & (1<<3)) != 0);
|
||||||
|
@ -2261,7 +2266,7 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum)
|
||||||
LUAh_MapChange();
|
LUAh_MapChange();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
G_InitNew(ultimatemode, mapname, resetplayer, skipprecutscene);
|
G_InitNew(pencoremode, mapname, resetplayer, skipprecutscene);
|
||||||
if (demoplayback && !timingdemo)
|
if (demoplayback && !timingdemo)
|
||||||
precache = true;
|
precache = true;
|
||||||
CON_ToggleOff();
|
CON_ToggleOff();
|
||||||
|
@ -5248,17 +5253,14 @@ static void KartSpeed_OnChange(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void KartMirror_OnChange(void)
|
static void KartEncore_OnChange(void)
|
||||||
{
|
{
|
||||||
if (G_RaceGametype())
|
if (G_RaceGametype())
|
||||||
{
|
{
|
||||||
if ((boolean)cv_kartmirror.value != mirrormode && gamestate == GS_LEVEL /*&& leveltime > starttime*/)
|
if ((boolean)cv_kartencore.value != encoremode && gamestate == GS_LEVEL /*&& leveltime > starttime*/)
|
||||||
CONS_Printf(M_GetText("Mirrored tracks will be turned %s next round.\n"), cv_kartmirror.value ? M_GetText("on") : M_GetText("off"));
|
CONS_Printf(M_GetText("Encore Mode will be turned %s next round.\n"), cv_kartencore.value ? M_GetText("on") : M_GetText("off"));
|
||||||
else
|
else
|
||||||
{
|
CONS_Printf(M_GetText("Encore Mode has been turned %s.\n"), cv_kartencore.value ? M_GetText("on") : M_GetText("off"));
|
||||||
CONS_Printf(M_GetText("Mirrored tracks has been turned %s.\n"), cv_kartmirror.value ? M_GetText("on") : M_GetText("off"));
|
|
||||||
mirrormode = (boolean)cv_kartmirror.value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,8 @@ extern consvar_t cv_kartspeed;
|
||||||
extern consvar_t cv_kartbumpers;
|
extern consvar_t cv_kartbumpers;
|
||||||
extern consvar_t cv_kartfrantic;
|
extern consvar_t cv_kartfrantic;
|
||||||
extern consvar_t cv_kartcomeback;
|
extern consvar_t cv_kartcomeback;
|
||||||
extern consvar_t cv_kartmirror;
|
extern consvar_t cv_kartencore;
|
||||||
|
extern consvar_t cv_kartvoterulechanges;
|
||||||
extern consvar_t cv_kartspeedometer;
|
extern consvar_t cv_kartspeedometer;
|
||||||
extern consvar_t cv_kartvoices;
|
extern consvar_t cv_kartvoices;
|
||||||
|
|
||||||
|
@ -252,7 +253,7 @@ void D_SendPlayerConfig(void);
|
||||||
void Command_ExitGame_f(void);
|
void Command_ExitGame_f(void);
|
||||||
void Command_Retry_f(void);
|
void Command_Retry_f(void);
|
||||||
void D_GameTypeChanged(INT32 lastgametype); // not a real _OnChange function anymore
|
void D_GameTypeChanged(INT32 lastgametype); // not a real _OnChange function anymore
|
||||||
void D_MapChange(INT32 pmapnum, INT32 pgametype, boolean pultmode, boolean presetplayers, INT32 pdelay, boolean pskipprecutscene, boolean pfromlevelselect);
|
void D_MapChange(INT32 pmapnum, INT32 pgametype, boolean pencoremode, boolean presetplayers, INT32 pdelay, boolean pskipprecutscene, boolean pfromlevelselect);
|
||||||
void D_SetupVote(void);
|
void D_SetupVote(void);
|
||||||
void D_ModifyClientVote(SINT8 voted, UINT8 splitplayer);
|
void D_ModifyClientVote(SINT8 voted, UINT8 splitplayer);
|
||||||
void D_PickVote(void);
|
void D_PickVote(void);
|
||||||
|
|
|
@ -1221,6 +1221,8 @@ static void readlevelheader(MYFILE *f, INT32 num)
|
||||||
mapheaderinfo[num-1]->countdown = (INT16)i;
|
mapheaderinfo[num-1]->countdown = (INT16)i;
|
||||||
else if (fastcmp(word, "PALETTE"))
|
else if (fastcmp(word, "PALETTE"))
|
||||||
mapheaderinfo[num-1]->palette = (UINT16)i;
|
mapheaderinfo[num-1]->palette = (UINT16)i;
|
||||||
|
else if (fastcmp(word, "ENCOREPAL"))
|
||||||
|
mapheaderinfo[num-1]->encorepal = (UINT16)i;
|
||||||
else if (fastcmp(word, "NUMLAPS"))
|
else if (fastcmp(word, "NUMLAPS"))
|
||||||
mapheaderinfo[num-1]->numlaps = (UINT8)i;
|
mapheaderinfo[num-1]->numlaps = (UINT8)i;
|
||||||
else if (fastcmp(word, "UNLOCKABLE"))
|
else if (fastcmp(word, "UNLOCKABLE"))
|
||||||
|
@ -2384,8 +2386,8 @@ static void readunlockable(MYFILE *f, INT32 num)
|
||||||
else if (fastcmp(word, "OBJECTIVE"))
|
else if (fastcmp(word, "OBJECTIVE"))
|
||||||
deh_strlcpy(unlockables[num].objective, word2,
|
deh_strlcpy(unlockables[num].objective, word2,
|
||||||
sizeof (unlockables[num].objective), va("Unlockable %d: objective", num));
|
sizeof (unlockables[num].objective), va("Unlockable %d: objective", num));
|
||||||
else if (fastcmp(word, "HEIGHT"))
|
else if (fastcmp(word, "SHOWCONDITIONSET"))
|
||||||
unlockables[num].height = (UINT16)i;
|
unlockables[num].showconditionset = (UINT8)i;
|
||||||
else if (fastcmp(word, "CONDITIONSET"))
|
else if (fastcmp(word, "CONDITIONSET"))
|
||||||
unlockables[num].conditionset = (UINT8)i;
|
unlockables[num].conditionset = (UINT8)i;
|
||||||
else if (fastcmp(word, "NOCECHO"))
|
else if (fastcmp(word, "NOCECHO"))
|
||||||
|
@ -2416,6 +2418,8 @@ static void readunlockable(MYFILE *f, INT32 num)
|
||||||
unlockables[num].type = SECRET_WARP;
|
unlockables[num].type = SECRET_WARP;
|
||||||
else if (fastcmp(word2, "SOUNDTEST"))
|
else if (fastcmp(word2, "SOUNDTEST"))
|
||||||
unlockables[num].type = SECRET_SOUNDTEST;
|
unlockables[num].type = SECRET_SOUNDTEST;
|
||||||
|
else if (fastcmp(word2, "ENCORE"))
|
||||||
|
unlockables[num].type = SECRET_ENCORE;
|
||||||
else
|
else
|
||||||
unlockables[num].type = (INT16)i;
|
unlockables[num].type = (INT16)i;
|
||||||
}
|
}
|
||||||
|
@ -7403,6 +7407,7 @@ static const char *const MOBJFLAG_LIST[] = {
|
||||||
"NOCLIPTHING",
|
"NOCLIPTHING",
|
||||||
"GRENADEBOUNCE",
|
"GRENADEBOUNCE",
|
||||||
"RUNSPAWNFUNC",
|
"RUNSPAWNFUNC",
|
||||||
|
"DONTENCOREMAP",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -8209,6 +8214,14 @@ struct {
|
||||||
{"V_REDMAP",V_REDMAP},
|
{"V_REDMAP",V_REDMAP},
|
||||||
{"V_GRAYMAP",V_GRAYMAP},
|
{"V_GRAYMAP",V_GRAYMAP},
|
||||||
{"V_ORANGEMAP",V_ORANGEMAP},
|
{"V_ORANGEMAP",V_ORANGEMAP},
|
||||||
|
{"V_SKYMAP",V_SKYMAP},
|
||||||
|
{"V_LAVENDERMAP",V_LAVENDERMAP},
|
||||||
|
{"V_GOLDMAP",V_GOLDMAP},
|
||||||
|
{"V_TEAMAP",V_TEAMAP},
|
||||||
|
{"V_STEELMAP",V_STEELMAP},
|
||||||
|
{"V_PINKMAP",V_PINKMAP},
|
||||||
|
{"V_TEALMAP",V_TEALMAP},
|
||||||
|
{"V_PEACHMAP",V_PEACHMAP},
|
||||||
{"V_TRANSLUCENT",V_TRANSLUCENT},
|
{"V_TRANSLUCENT",V_TRANSLUCENT},
|
||||||
{"V_10TRANS",V_10TRANS},
|
{"V_10TRANS",V_10TRANS},
|
||||||
{"V_20TRANS",V_20TRANS},
|
{"V_20TRANS",V_20TRANS},
|
||||||
|
|
|
@ -80,7 +80,7 @@ extern INT16 gametype;
|
||||||
extern UINT8 splitscreen;
|
extern UINT8 splitscreen;
|
||||||
extern boolean circuitmap; // Does this level have 'circuit mode'?
|
extern boolean circuitmap; // Does this level have 'circuit mode'?
|
||||||
extern boolean fromlevelselect;
|
extern boolean fromlevelselect;
|
||||||
extern boolean forceresetplayers;
|
extern boolean forceresetplayers, deferencoremode;
|
||||||
|
|
||||||
// ========================================
|
// ========================================
|
||||||
// Internal parameters for sound rendering.
|
// Internal parameters for sound rendering.
|
||||||
|
@ -243,6 +243,7 @@ typedef struct
|
||||||
UINT8 cutscenenum; ///< Cutscene number to use, 0 for none.
|
UINT8 cutscenenum; ///< Cutscene number to use, 0 for none.
|
||||||
INT16 countdown; ///< Countdown until level end?
|
INT16 countdown; ///< Countdown until level end?
|
||||||
UINT16 palette; ///< PAL lump to use on this map
|
UINT16 palette; ///< PAL lump to use on this map
|
||||||
|
UINT16 encorepal; ///< PAL for encore mode
|
||||||
UINT8 numlaps; ///< Number of laps in circuit mode, unless overridden.
|
UINT8 numlaps; ///< Number of laps in circuit mode, unless overridden.
|
||||||
SINT8 unlockrequired; ///< Is an unlockable required to play this level? -1 if no.
|
SINT8 unlockrequired; ///< Is an unlockable required to play this level? -1 if no.
|
||||||
UINT8 levelselect; ///< Is this map available in the level select? If so, which map list is it available in?
|
UINT8 levelselect; ///< Is this map available in the level select? If so, which map list is it available in?
|
||||||
|
@ -448,7 +449,7 @@ extern INT32 cheats;
|
||||||
// SRB2kart
|
// SRB2kart
|
||||||
extern UINT8 gamespeed;
|
extern UINT8 gamespeed;
|
||||||
extern boolean franticitems;
|
extern boolean franticitems;
|
||||||
extern boolean mirrormode;
|
extern boolean encoremode, prevencoremode;
|
||||||
extern boolean comeback;
|
extern boolean comeback;
|
||||||
|
|
||||||
extern SINT8 battlewanted[4];
|
extern SINT8 battlewanted[4];
|
||||||
|
|
|
@ -1252,7 +1252,7 @@ void F_EndCutScene(void)
|
||||||
if (runningprecutscene)
|
if (runningprecutscene)
|
||||||
{
|
{
|
||||||
if (server)
|
if (server)
|
||||||
D_MapChange(gamemap, gametype, ultimatemode, precutresetplayer, 0, true, false);
|
D_MapChange(gamemap, gametype, false, precutresetplayer, 0, true, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
122
src/g_game.c
122
src/g_game.c
|
@ -248,7 +248,8 @@ INT32 cheats; //for multiplayer cheat commands
|
||||||
// SRB2Kart
|
// SRB2Kart
|
||||||
// Cvars that we don't want changed mid-game
|
// Cvars that we don't want changed mid-game
|
||||||
UINT8 gamespeed; // Game's current speed (or difficulty, or cc, or etc); 0 for easy, 1 for normal, 2 for hard
|
UINT8 gamespeed; // Game's current speed (or difficulty, or cc, or etc); 0 for easy, 1 for normal, 2 for hard
|
||||||
boolean mirrormode; // Mirror Mode currently enabled?
|
boolean encoremode = false; // Encore Mode currently enabled?
|
||||||
|
boolean prevencoremode;
|
||||||
boolean franticitems; // Frantic items currently enabled?
|
boolean franticitems; // Frantic items currently enabled?
|
||||||
boolean comeback; // Battle Mode's karma comeback is on/off
|
boolean comeback; // Battle Mode's karma comeback is on/off
|
||||||
|
|
||||||
|
@ -764,9 +765,20 @@ const char *G_BuildMapName(INT32 map)
|
||||||
{
|
{
|
||||||
static char mapname[10] = "MAPXX"; // internal map name (wad resource name)
|
static char mapname[10] = "MAPXX"; // internal map name (wad resource name)
|
||||||
|
|
||||||
I_Assert(map > 0);
|
I_Assert(map >= 0);
|
||||||
I_Assert(map <= NUMMAPS);
|
I_Assert(map <= NUMMAPS);
|
||||||
|
|
||||||
|
if (map == 0) // hack???
|
||||||
|
{
|
||||||
|
if (gamestate == GS_TITLESCREEN)
|
||||||
|
map = -1;
|
||||||
|
else if (gamestate == GS_LEVEL)
|
||||||
|
map = gamemap-1;
|
||||||
|
else
|
||||||
|
map = prevmap;
|
||||||
|
map = G_RandMap(G_TOLFlag(cv_newgametype.value), map, false, false, 0, false)+1;
|
||||||
|
}
|
||||||
|
|
||||||
if (map < 100)
|
if (map < 100)
|
||||||
sprintf(&mapname[3], "%.2d", map);
|
sprintf(&mapname[3], "%.2d", map);
|
||||||
else
|
else
|
||||||
|
@ -1294,7 +1306,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
||||||
|
|
||||||
axis = JoyAxis(AXISTURN, ssplayer);
|
axis = JoyAxis(AXISTURN, ssplayer);
|
||||||
|
|
||||||
if (mirrormode)
|
if (encoremode)
|
||||||
{
|
{
|
||||||
turnright ^= turnleft; // swap these using three XORs
|
turnright ^= turnleft; // swap these using three XORs
|
||||||
turnleft ^= turnright;
|
turnleft ^= turnright;
|
||||||
|
@ -1345,8 +1357,8 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
||||||
// Specator mouse turning
|
// Specator mouse turning
|
||||||
if (player->spectator)
|
if (player->spectator)
|
||||||
{
|
{
|
||||||
cmd->angleturn = (INT16)(cmd->angleturn - (mousex*(mirrormode ? -1 : 1)*8));
|
cmd->angleturn = (INT16)(cmd->angleturn - (mousex*(encoremode ? -1 : 1)*8));
|
||||||
cmd->driftturn = (INT16)(cmd->driftturn - (mousex*(mirrormode ? -1 : 1)*8));
|
cmd->driftturn = (INT16)(cmd->driftturn - (mousex*(encoremode ? -1 : 1)*8));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Speed bump strafing
|
// Speed bump strafing
|
||||||
|
@ -3135,15 +3147,52 @@ boolean G_BattleGametype(void)
|
||||||
//
|
//
|
||||||
// G_SometimesGetDifferentGametype
|
// G_SometimesGetDifferentGametype
|
||||||
//
|
//
|
||||||
// I pity the fool who adds more gametypes later, because it'll require some element of randomisation which needs to be synched...
|
// Oh, yeah, and we sometimes flip encore mode on here too.
|
||||||
// Although given this only gets called for the host, you could probably get away with M_Random.
|
|
||||||
//
|
//
|
||||||
INT16 G_SometimesGetDifferentGametype(void)
|
INT16 G_SometimesGetDifferentGametype(void)
|
||||||
{
|
{
|
||||||
if (randmapbuffer[NUMMAPS] != -1)
|
boolean encorepossible = (M_SecretUnlocked(SECRET_ENCORE) && G_RaceGametype());
|
||||||
|
|
||||||
|
if (!cv_kartvoterulechanges.value) // never
|
||||||
return gametype;
|
return gametype;
|
||||||
|
|
||||||
randmapbuffer[NUMMAPS] = gametype;
|
if (randmapbuffer[NUMMAPS] > 0 && (encorepossible || cv_kartvoterulechanges.value != 3))
|
||||||
|
{
|
||||||
|
if (cv_kartvoterulechanges.value != 1)
|
||||||
|
randmapbuffer[NUMMAPS]--;
|
||||||
|
if (encorepossible)
|
||||||
|
{
|
||||||
|
switch (cv_kartvoterulechanges.value)
|
||||||
|
{
|
||||||
|
case 3: // always
|
||||||
|
randmapbuffer[NUMMAPS] = 0; // gotta prep this in case it isn't already set
|
||||||
|
break;
|
||||||
|
case 2: // frequent
|
||||||
|
encorepossible = M_RandomChance(FRACUNIT>>1);
|
||||||
|
break;
|
||||||
|
case 1: // sometimes
|
||||||
|
default:
|
||||||
|
encorepossible = M_RandomChance(FRACUNIT>>3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (encorepossible != (boolean)cv_kartencore.value)
|
||||||
|
return (gametype|0x80);
|
||||||
|
}
|
||||||
|
return gametype;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (cv_kartvoterulechanges.value) // okay, we're having a gametype change! when's the next one, luv?
|
||||||
|
{
|
||||||
|
case 3: // always
|
||||||
|
randmapbuffer[NUMMAPS] = 1; // every other vote (or always if !encorepossible)
|
||||||
|
break;
|
||||||
|
case 1: // sometimes
|
||||||
|
default:
|
||||||
|
// fallthrough - happens when clearing buffer, but needs a reasonable countdown if cvar is modified
|
||||||
|
case 2: // frequent
|
||||||
|
randmapbuffer[NUMMAPS] = 5; // per "cup"
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (gametype == GT_MATCH)
|
if (gametype == GT_MATCH)
|
||||||
return GT_RACE;
|
return GT_RACE;
|
||||||
|
@ -3211,6 +3260,7 @@ INT16 G_TOLFlag(INT32 pgametype)
|
||||||
return INT16_MAX;
|
return INT16_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FLUSHMAPBUFFEREARLY
|
||||||
static INT32 TOLMaps(INT16 tolflags)
|
static INT32 TOLMaps(INT16 tolflags)
|
||||||
{
|
{
|
||||||
INT32 num = 0;
|
INT32 num = 0;
|
||||||
|
@ -3228,6 +3278,7 @@ static INT32 TOLMaps(INT16 tolflags)
|
||||||
|
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Select a random map with the given typeoflevel flags.
|
/** Select a random map with the given typeoflevel flags.
|
||||||
* If no map has those flags, this arbitrarily gives you map 1.
|
* If no map has those flags, this arbitrarily gives you map 1.
|
||||||
|
@ -3246,6 +3297,8 @@ INT16 G_RandMap(INT16 tolflags, INT16 pprevmap, boolean dontadd, boolean ignoreb
|
||||||
if (!okmaps)
|
if (!okmaps)
|
||||||
okmaps = Z_Malloc(NUMMAPS * sizeof(INT16), PU_STATIC, NULL);
|
okmaps = Z_Malloc(NUMMAPS * sizeof(INT16), PU_STATIC, NULL);
|
||||||
|
|
||||||
|
tryagain:
|
||||||
|
|
||||||
// Find all the maps that are ok and and put them in an array.
|
// Find all the maps that are ok and and put them in an array.
|
||||||
for (ix = 0; ix < NUMMAPS; ix++)
|
for (ix = 0; ix < NUMMAPS; ix++)
|
||||||
{
|
{
|
||||||
|
@ -3279,12 +3332,28 @@ INT16 G_RandMap(INT16 tolflags, INT16 pprevmap, boolean dontadd, boolean ignoreb
|
||||||
okmaps[numokmaps++] = ix;
|
okmaps[numokmaps++] = ix;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (numokmaps == 0)
|
if (numokmaps == 0) // If there's no matches... (Goodbye, incredibly silly function chains :V)
|
||||||
{
|
{
|
||||||
if (!ignorebuffer)
|
if (!ignorebuffer)
|
||||||
return G_RandMap(tolflags, pprevmap, dontadd, true, maphell, callagainsoon); // If there's no matches, (An incredibly silly function chain, buuut... :V)
|
{
|
||||||
if (maphell)
|
if (randmapbuffer[3] == -1) // Is the buffer basically empty?
|
||||||
return G_RandMap(tolflags, pprevmap, dontadd, true, maphell-1, callagainsoon);
|
{
|
||||||
|
ignorebuffer = true; // This will probably only help in situations where there's very few maps, but it's folly not to at least try it
|
||||||
|
goto tryagain; //return G_RandMap(tolflags, pprevmap, dontadd, true, maphell, callagainsoon);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (bufx = 3; bufx < NUMMAPS; bufx++) // Let's clear all but the three most recent maps...
|
||||||
|
randmapbuffer[bufx] = -1;
|
||||||
|
if (cv_kartvoterulechanges.value == 1) // sometimes
|
||||||
|
randmapbuffer[NUMMAPS] = 0;
|
||||||
|
goto tryagain; //return G_RandMap(tolflags, pprevmap, dontadd, ignorebuffer, maphell, callagainsoon);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (maphell) // Any wiggle room to loosen our restrictions here?
|
||||||
|
{
|
||||||
|
maphell--;
|
||||||
|
goto tryagain; //return G_RandMap(tolflags, pprevmap, dontadd, true, maphell-1, callagainsoon);
|
||||||
|
}
|
||||||
|
|
||||||
ix = 0; // Sorry, none match. You get MAP01.
|
ix = 0; // Sorry, none match. You get MAP01.
|
||||||
for (bufx = 0; bufx < NUMMAPS+1; bufx++)
|
for (bufx = 0; bufx < NUMMAPS+1; bufx++)
|
||||||
|
@ -3446,11 +3515,15 @@ static void G_DoCompleted(void)
|
||||||
|
|
||||||
automapactive = false;
|
automapactive = false;
|
||||||
|
|
||||||
if (randmapbuffer[TOLMaps(G_TOLFlag(gametype))-4] != -1) // we're getting pretty full, so lets clear it
|
#ifdef FLUSHMAPBUFFEREARLY
|
||||||
|
if (randmapbuffer[TOLMaps(G_TOLFlag(gametype))-5] != -1) // We're getting pretty full, so! -- no need for this, handled in G_RandMap
|
||||||
{
|
{
|
||||||
for (i = 0; i < NUMMAPS+1; i++)
|
for (i = 3; i < NUMMAPS; i++) // Let's clear all but the three most recent maps...
|
||||||
randmapbuffer[i] = -1;
|
randmapbuffer[i] = -1;
|
||||||
|
if (cv_kartvoterulechanges.value == 1) // sometimes
|
||||||
|
randmapbuffer[NUMMAPS] = 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (gametype != GT_COOP)
|
if (gametype != GT_COOP)
|
||||||
{
|
{
|
||||||
|
@ -3515,6 +3588,7 @@ void G_NextLevel(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
forceresetplayers = false;
|
forceresetplayers = false;
|
||||||
|
deferencoremode = (boolean)cv_kartencore.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
gameaction = ga_worlddone;
|
gameaction = ga_worlddone;
|
||||||
|
@ -3527,7 +3601,7 @@ static void G_DoWorldDone(void)
|
||||||
// SRB2Kart
|
// SRB2Kart
|
||||||
D_MapChange(nextmap+1,
|
D_MapChange(nextmap+1,
|
||||||
gametype,
|
gametype,
|
||||||
ultimatemode,
|
deferencoremode,
|
||||||
forceresetplayers,
|
forceresetplayers,
|
||||||
0,
|
0,
|
||||||
false,
|
false,
|
||||||
|
@ -3599,7 +3673,7 @@ static void G_DoContinued(void)
|
||||||
// Reset # of lives
|
// Reset # of lives
|
||||||
pl->lives = (ultimatemode) ? 1 : 3;
|
pl->lives = (ultimatemode) ? 1 : 3;
|
||||||
|
|
||||||
D_MapChange(gamemap, gametype, ultimatemode, false, 0, false, false);
|
D_MapChange(gamemap, gametype, false, false, 0, false, false);
|
||||||
|
|
||||||
gameaction = ga_nothing;
|
gameaction = ga_nothing;
|
||||||
}
|
}
|
||||||
|
@ -4113,7 +4187,7 @@ void G_SaveGame(UINT32 savegameslot)
|
||||||
// Can be called by the startup code or the menu task,
|
// Can be called by the startup code or the menu task,
|
||||||
// consoleplayer, displayplayer, playeringame[] should be set.
|
// consoleplayer, displayplayer, playeringame[] should be set.
|
||||||
//
|
//
|
||||||
void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 pickedchar, UINT8 ssplayers, boolean FLS)
|
void G_DeferedInitNew(boolean pencoremode, const char *mapname, INT32 pickedchar, UINT8 ssplayers, boolean FLS)
|
||||||
{
|
{
|
||||||
INT32 i;
|
INT32 i;
|
||||||
UINT8 color = 0;
|
UINT8 color = 0;
|
||||||
|
@ -4158,14 +4232,14 @@ void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 pickedchar, U
|
||||||
CV_StealthSetValue(&cv_playercolor, color);
|
CV_StealthSetValue(&cv_playercolor, color);
|
||||||
|
|
||||||
if (mapname)
|
if (mapname)
|
||||||
D_MapChange(M_MapNumber(mapname[3], mapname[4]), gametype, pultmode, true, 1, false, FLS);
|
D_MapChange(M_MapNumber(mapname[3], mapname[4]), gametype, pencoremode, true, 1, false, FLS);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// This is the map command interpretation something like Command_Map_f
|
// This is the map command interpretation something like Command_Map_f
|
||||||
//
|
//
|
||||||
// called at: map cmd execution, doloadgame, doplaydemo
|
// called at: map cmd execution, doloadgame, doplaydemo
|
||||||
void G_InitNew(UINT8 pultmode, const char *mapname, boolean resetplayer, boolean skipprecutscene)
|
void G_InitNew(UINT8 pencoremode, const char *mapname, boolean resetplayer, boolean skipprecutscene)
|
||||||
{
|
{
|
||||||
INT32 i;
|
INT32 i;
|
||||||
|
|
||||||
|
@ -4175,8 +4249,8 @@ void G_InitNew(UINT8 pultmode, const char *mapname, boolean resetplayer, boolean
|
||||||
S_ResumeAudio();
|
S_ResumeAudio();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (netgame || multiplayer) // Nice try, haxor.
|
prevencoremode = ((gamestate == GS_TITLESCREEN) ? false : encoremode);
|
||||||
ultimatemode = false;
|
encoremode = pencoremode;
|
||||||
|
|
||||||
legitimateexit = false; // SRB2Kart
|
legitimateexit = false; // SRB2Kart
|
||||||
comebackshowninfo = false;
|
comebackshowninfo = false;
|
||||||
|
@ -4265,7 +4339,6 @@ void G_InitNew(UINT8 pultmode, const char *mapname, boolean resetplayer, boolean
|
||||||
// Don't carry over custom music change to another map.
|
// Don't carry over custom music change to another map.
|
||||||
mapmusflags |= MUSIC_RELOADRESET;
|
mapmusflags |= MUSIC_RELOADRESET;
|
||||||
|
|
||||||
ultimatemode = pultmode;
|
|
||||||
playerdeadview = false;
|
playerdeadview = false;
|
||||||
automapactive = false;
|
automapactive = false;
|
||||||
imcontinuing = false;
|
imcontinuing = false;
|
||||||
|
@ -4294,6 +4367,9 @@ char *G_BuildMapTitle(INT32 mapnum)
|
||||||
{
|
{
|
||||||
char *title = NULL;
|
char *title = NULL;
|
||||||
|
|
||||||
|
if (mapnum == 0)
|
||||||
|
return Z_StrDup("Random");
|
||||||
|
|
||||||
if (strcmp(mapheaderinfo[mapnum-1]->lvlttl, ""))
|
if (strcmp(mapheaderinfo[mapnum-1]->lvlttl, ""))
|
||||||
{
|
{
|
||||||
size_t len = 1;
|
size_t len = 1;
|
||||||
|
|
|
@ -107,7 +107,7 @@ extern boolean camspin, camspin2, camspin3, camspin4; // SRB2Kart
|
||||||
void G_ChangePlayerReferences(mobj_t *oldmo, mobj_t *newmo);
|
void G_ChangePlayerReferences(mobj_t *oldmo, mobj_t *newmo);
|
||||||
void G_DoReborn(INT32 playernum);
|
void G_DoReborn(INT32 playernum);
|
||||||
void G_PlayerReborn(INT32 player);
|
void G_PlayerReborn(INT32 player);
|
||||||
void G_InitNew(UINT8 pultmode, const char *mapname, boolean resetplayer,
|
void G_InitNew(UINT8 pencoremode, const char *mapname, boolean resetplayer,
|
||||||
boolean skipprecutscene);
|
boolean skipprecutscene);
|
||||||
char *G_BuildMapTitle(INT32 mapnum);
|
char *G_BuildMapTitle(INT32 mapnum);
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ void G_SpawnPlayer(INT32 playernum, boolean starpost);
|
||||||
|
|
||||||
// Can be called by the startup code or M_Responder.
|
// Can be called by the startup code or M_Responder.
|
||||||
// A normal game starts at map 1, but a warp test can start elsewhere
|
// A normal game starts at map 1, but a warp test can start elsewhere
|
||||||
void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 pickedchar,
|
void G_DeferedInitNew(boolean pencoremode, const char *mapname, INT32 pickedchar,
|
||||||
UINT8 ssplayers, boolean FLS);
|
UINT8 ssplayers, boolean FLS);
|
||||||
void G_DoLoadLevel(boolean resetplayer);
|
void G_DoLoadLevel(boolean resetplayer);
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "../m_argv.h"
|
#include "../m_argv.h"
|
||||||
#include "../i_video.h"
|
#include "../i_video.h"
|
||||||
#include "../w_wad.h"
|
#include "../w_wad.h"
|
||||||
|
#include "../p_setup.h" // levelfadecol
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// This is global data for planes rendering
|
// This is global data for planes rendering
|
||||||
|
@ -646,7 +647,7 @@ static void WalkBSPNode(INT32 bspnum, poly_t *poly, UINT16 *leafnode, fixed_t *b
|
||||||
sprintf(s, "%d%%", (++ls_percent)<<1);
|
sprintf(s, "%d%%", (++ls_percent)<<1);
|
||||||
x = BASEVIDWIDTH/2;
|
x = BASEVIDWIDTH/2;
|
||||||
y = BASEVIDHEIGHT/2;
|
y = BASEVIDHEIGHT/2;
|
||||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31); // Black background to match fade in effect
|
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, levelfadecol); // White background to match fade in effect
|
||||||
//V_DrawPatchFill(W_CachePatchName("SRB2BACK",PU_CACHE)); // SRB2 background, ehhh too bright.
|
//V_DrawPatchFill(W_CachePatchName("SRB2BACK",PU_CACHE)); // SRB2 background, ehhh too bright.
|
||||||
M_DrawTextBox(x-58, y-8, 13, 1);
|
M_DrawTextBox(x-58, y-8, 13, 1);
|
||||||
V_DrawString(x-50, y, V_YELLOWMAP, "Loading...");
|
V_DrawString(x-50, y, V_YELLOWMAP, "Loading...");
|
||||||
|
|
|
@ -109,7 +109,7 @@ typedef struct
|
||||||
FLOAT fovxangle, fovyangle;
|
FLOAT fovxangle, fovyangle;
|
||||||
UINT8 splitscreen;
|
UINT8 splitscreen;
|
||||||
boolean flip; // screenflip
|
boolean flip; // screenflip
|
||||||
boolean mirror; // SRB2Kart: Mirror Mode
|
boolean mirror; // SRB2Kart: Encore Mode
|
||||||
} FTransform;
|
} FTransform;
|
||||||
|
|
||||||
// Transformed vector, as passed to HWR API
|
// Transformed vector, as passed to HWR API
|
||||||
|
|
|
@ -3155,7 +3155,6 @@ static void HWR_RenderPolyObjectPlane(polyobj_t *polysector, boolean isceiling,
|
||||||
v3d->z = FIXED_TO_FLOAT(polysector->vertices[i]->y);
|
v3d->z = FIXED_TO_FLOAT(polysector->vertices[i]->y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (planecolormap)
|
if (planecolormap)
|
||||||
Surf.FlatColor.rgba = HWR_Lighting(lightlevel, planecolormap->rgba, planecolormap->fadergba, false, true);
|
Surf.FlatColor.rgba = HWR_Lighting(lightlevel, planecolormap->rgba, planecolormap->fadergba, false, true);
|
||||||
else
|
else
|
||||||
|
@ -5452,7 +5451,13 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
||||||
vis->colormap = R_GetTranslationColormap(TC_DEFAULT, thing->color, GTC_CACHE);
|
vis->colormap = R_GetTranslationColormap(TC_DEFAULT, thing->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
vis->colormap = colormaps;
|
vis->colormap = colormaps;
|
||||||
|
#ifdef GLENCORE
|
||||||
|
if (encoremap && (thing->flags & (MF_SCENERY|MF_NOTHINK)))
|
||||||
|
vis->colormap += (256*32);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// set top/bottom coords
|
// set top/bottom coords
|
||||||
vis->ty = gzt;
|
vis->ty = gzt;
|
||||||
|
@ -5556,6 +5561,10 @@ static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing)
|
||||||
vis->mobj = (mobj_t *)thing;
|
vis->mobj = (mobj_t *)thing;
|
||||||
|
|
||||||
vis->colormap = colormaps;
|
vis->colormap = colormaps;
|
||||||
|
#ifdef GLENCORE
|
||||||
|
if (encoremap)
|
||||||
|
vis->colormap += (256*32);
|
||||||
|
#endif
|
||||||
|
|
||||||
// set top/bottom coords
|
// set top/bottom coords
|
||||||
vis->ty = FIXED_TO_FLOAT(thing->z + spritecachedinfo[lumpoff].topoffset);
|
vis->ty = FIXED_TO_FLOAT(thing->z + spritecachedinfo[lumpoff].topoffset);
|
||||||
|
@ -6548,6 +6557,7 @@ static void HWR_RenderWall(wallVert3D *wallVerts, FSurfaceInfo *pSurf, FBITFIE
|
||||||
alpha = pSurf->FlatColor.s.alpha; // retain the alpha
|
alpha = pSurf->FlatColor.s.alpha; // retain the alpha
|
||||||
|
|
||||||
// Lighting is done here instead so that fog isn't drawn incorrectly on transparent walls after sorting
|
// Lighting is done here instead so that fog isn't drawn incorrectly on transparent walls after sorting
|
||||||
|
|
||||||
if (wallcolormap)
|
if (wallcolormap)
|
||||||
{
|
{
|
||||||
if (fogwall)
|
if (fogwall)
|
||||||
|
|
125
src/hu_stuff.c
125
src/hu_stuff.c
|
@ -713,23 +713,54 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum)
|
||||||
|| target == 0 // To everyone
|
|| target == 0 // To everyone
|
||||||
|| consoleplayer == target-1) // To you
|
|| consoleplayer == target-1) // To you
|
||||||
{
|
{
|
||||||
const char *prefix = "", *cstart = "", *cend = "", *adminchar = "\x82~\x83", *remotechar = "\x82@\x83", *fmt, *fmt2;
|
const char *prefix = "", *cstart = "", *cend = "", *adminchar = "\x82~\x83", *remotechar = "\x82@\x83", *fmt, *fmt2, *textcolor = "\x80";
|
||||||
char *tempchar = NULL;
|
char *tempchar = NULL;
|
||||||
|
|
||||||
// In CTF and team match, color the player's name.
|
|
||||||
if (G_GametypeHasTeams())
|
|
||||||
{
|
|
||||||
cend = "";
|
|
||||||
if (players[playernum].ctfteam == 1) // red
|
|
||||||
cstart = "\x85";
|
|
||||||
else if (players[playernum].ctfteam == 2) // blue
|
|
||||||
cstart = "\x84";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// player is a spectator?
|
// player is a spectator?
|
||||||
if (players[playernum].spectator)
|
if (players[playernum].spectator)
|
||||||
|
{
|
||||||
cstart = "\x86"; // grey name
|
cstart = "\x86"; // grey name
|
||||||
|
textcolor = "\x86";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const UINT8 color = players[playernum].skincolor;
|
||||||
|
if (color <= SKINCOLOR_SILVER || color == SKINCOLOR_SLATE)
|
||||||
|
cstart = "\x80"; // white
|
||||||
|
else if (color <= SKINCOLOR_BEIGE || color == SKINCOLOR_JET)
|
||||||
|
cstart = "\x86"; // V_GRAYMAP
|
||||||
|
else if (color <= SKINCOLOR_LEATHER)
|
||||||
|
cstart = "\x8A"; // V_GOLDMAP
|
||||||
|
else if (color <= SKINCOLOR_ROSE || color == SKINCOLOR_LILAC)
|
||||||
|
cstart = "\x8d"; // V_PINKMAP
|
||||||
|
else if (color <= SKINCOLOR_KETCHUP)
|
||||||
|
cstart = "\x85"; // V_REDMAP
|
||||||
|
else if (color <= SKINCOLOR_TANGERINE)
|
||||||
|
cstart = "\x87"; // V_ORANGEMAP
|
||||||
|
else if (color <= SKINCOLOR_CARAMEL)
|
||||||
|
cstart = "\x8f"; // V_PEACHMAP
|
||||||
|
else if (color <= SKINCOLOR_BRONZE)
|
||||||
|
cstart = "\x8A"; // V_GOLDMAP
|
||||||
|
else if (color <= SKINCOLOR_MUSTARD)
|
||||||
|
cstart = "\x82"; // V_YELLOWMAP
|
||||||
|
else if (color <= SKINCOLOR_PISTACHIO)
|
||||||
|
cstart = "\x8b"; // V_TEAMAP
|
||||||
|
else if (color <= SKINCOLOR_SWAMP || color == SKINCOLOR_LIME)
|
||||||
|
cstart = "\x83"; // V_GREENMAP
|
||||||
|
else if (color <= SKINCOLOR_TEAL)
|
||||||
|
cstart = "\x8e"; // V_TEALMAP
|
||||||
|
else if (color <= SKINCOLOR_NAVY || color == SKINCOLOR_SAPPHIRE)
|
||||||
|
cstart = "\x88"; // V_SKYMAP
|
||||||
|
else if (color <= SKINCOLOR_STEEL)
|
||||||
|
cstart = "\x8c"; // V_STEELMAP
|
||||||
|
else if (color <= SKINCOLOR_BLUEBERRY)
|
||||||
|
cstart = "\x84"; // V_BLUEMAP
|
||||||
|
else if (color == SKINCOLOR_PURPLE)
|
||||||
|
cstart = "\x81"; // V_PURPLEMAP
|
||||||
|
else //if (color <= SKINCOLOR_POMEGRANATE)
|
||||||
|
cstart = "\x89"; // V_LAVENDERMAP
|
||||||
|
}
|
||||||
|
prefix = cstart;
|
||||||
|
|
||||||
// Give admins and remote admins their symbols.
|
// Give admins and remote admins their symbols.
|
||||||
if (playernum == serverplayer)
|
if (playernum == serverplayer)
|
||||||
|
@ -757,26 +788,25 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum)
|
||||||
}
|
}
|
||||||
else if (target == 0) // To everyone
|
else if (target == 0) // To everyone
|
||||||
{
|
{
|
||||||
fmt = "\3%s\x83<%s%s%s\x83>\x80 %s\n";
|
fmt = "\3%s<%s%s%s>\x80 %s%s\n";
|
||||||
fmt2 = "%s\x83<%s%s%s\x83>\x80 %s";
|
fmt2 = "%s<%s%s%s>\x80 %s%s";
|
||||||
}
|
}
|
||||||
else if (target-1 == consoleplayer) // To you
|
else if (target-1 == consoleplayer) // To you
|
||||||
{
|
{
|
||||||
prefix = "\x82[PM]";
|
prefix = "\x82[PM]";
|
||||||
cstart = "\x82";
|
cstart = "\x82";
|
||||||
fmt = "\4%s<%s%s>%s\x80 %s\n"; // make this yellow, however.
|
textcolor = "\x82";
|
||||||
fmt2 = "%s<%s%s>%s\x80 %s";
|
fmt = "\4%s<%s%s>%s\x80 %s%s\n"; // make this yellow, however.
|
||||||
|
fmt2 = "%s<%s%s>%s\x80 %s%s";
|
||||||
}
|
}
|
||||||
else if (target > 0) // By you, to another player
|
else if (target > 0) // By you, to another player
|
||||||
{
|
{
|
||||||
// Use target's name.
|
// Use target's name.
|
||||||
dispname = player_names[target-1];
|
dispname = player_names[target-1];
|
||||||
/*fmt = "\3\x82[TO]\x80%s%s%s* %s\n";
|
|
||||||
fmt2 = "\x82[TO]\x80%s%s%s* %s";*/
|
|
||||||
prefix = "\x82[TO]";
|
prefix = "\x82[TO]";
|
||||||
cstart = "\x82";
|
cstart = "\x82";
|
||||||
fmt = "\4%s<%s%s>%s\x80 %s\n"; // make this yellow, however.
|
fmt = "\4%s<%s%s>%s\x80 %s%s\n"; // make this yellow, however.
|
||||||
fmt2 = "%s<%s%s>%s\x80 %s";
|
fmt2 = "%s<%s%s>%s\x80 %s%s";
|
||||||
|
|
||||||
}
|
}
|
||||||
else // To your team
|
else // To your team
|
||||||
|
@ -788,17 +818,17 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum)
|
||||||
else
|
else
|
||||||
prefix = "\x83"; // makes sure this doesn't implode if you sayteam on non-team gamemodes
|
prefix = "\x83"; // makes sure this doesn't implode if you sayteam on non-team gamemodes
|
||||||
|
|
||||||
fmt = "\3%s<%s%s>\x80%s %s\n";
|
fmt = "\3%s<%s%s>\x80%s %s%s\n";
|
||||||
fmt2 = "%s<%s%s>\x80%s %s";
|
fmt2 = "%s<%s%s>\x80%s %s%s";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HU_AddChatText(va(fmt2, prefix, cstart, dispname, cend, msg)); // add it reguardless, in case we decide to change our mind about our chat type.
|
HU_AddChatText(va(fmt2, prefix, cstart, dispname, cend, textcolor, msg)); // add it reguardless, in case we decide to change our mind about our chat type.
|
||||||
|
|
||||||
if OLDCHAT
|
if OLDCHAT
|
||||||
CONS_Printf(fmt, prefix, cstart, dispname, cend, msg);
|
CONS_Printf(fmt, prefix, cstart, dispname, cend, textcolor, msg);
|
||||||
else
|
else
|
||||||
CON_LogMessage(va(fmt, prefix, cstart, dispname, cend, msg)); // save to log.txt
|
CON_LogMessage(va(fmt, prefix, cstart, dispname, cend, textcolor, msg)); // save to log.txt
|
||||||
|
|
||||||
if (tempchar)
|
if (tempchar)
|
||||||
Z_Free(tempchar);
|
Z_Free(tempchar);
|
||||||
|
@ -840,6 +870,9 @@ static inline boolean HU_keyInChatString(char *s, char ch)
|
||||||
{
|
{
|
||||||
if (s[m])
|
if (s[m])
|
||||||
s[m+1] = (s[m]);
|
s[m+1] = (s[m]);
|
||||||
|
|
||||||
|
if (m < 1)
|
||||||
|
break; // fix the chat going ham if your replace the first character. (For whatever reason this didn't happen in vanilla????)
|
||||||
}
|
}
|
||||||
s[c_input] = ch; // and replace this.
|
s[c_input] = ch; // and replace this.
|
||||||
}
|
}
|
||||||
|
@ -1152,33 +1185,6 @@ boolean HU_Responder(event_t *ev)
|
||||||
// HEADS UP DRAWING
|
// HEADS UP DRAWING
|
||||||
//======================================================================
|
//======================================================================
|
||||||
|
|
||||||
// Gets string colormap, used for 0x80 color codes
|
|
||||||
//
|
|
||||||
static UINT8 *CHAT_GetStringColormap(INT32 colorflags) // pasted from video.c, sorry for the mess.
|
|
||||||
{
|
|
||||||
switch ((colorflags & V_CHARCOLORMASK) >> V_CHARCOLORSHIFT)
|
|
||||||
{
|
|
||||||
case 1: // 0x81, purple
|
|
||||||
return purplemap;
|
|
||||||
case 2: // 0x82, yellow
|
|
||||||
return yellowmap;
|
|
||||||
case 3: // 0x83, lgreen
|
|
||||||
return greenmap;
|
|
||||||
case 4: // 0x84, blue
|
|
||||||
return bluemap;
|
|
||||||
case 5: // 0x85, red
|
|
||||||
return redmap;
|
|
||||||
case 6: // 0x86, gray
|
|
||||||
return graymap;
|
|
||||||
case 7: // 0x87, orange
|
|
||||||
return orangemap;
|
|
||||||
case 8: // 0x88, sky
|
|
||||||
return skymap;
|
|
||||||
default: // reset
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Precompile a wordwrapped string to any given width.
|
// Precompile a wordwrapped string to any given width.
|
||||||
// This is a muuuch better method than V_WORDWRAP.
|
// This is a muuuch better method than V_WORDWRAP.
|
||||||
// again stolen and modified a bit from video.c, don't mind me, will need to rearrange this one day.
|
// again stolen and modified a bit from video.c, don't mind me, will need to rearrange this one day.
|
||||||
|
@ -1197,7 +1203,7 @@ static char *CHAT_WordWrap(INT32 x, INT32 w, INT32 option, const char *string)
|
||||||
for (i = 0; i < slen; ++i)
|
for (i = 0; i < slen; ++i)
|
||||||
{
|
{
|
||||||
c = newstring[i];
|
c = newstring[i];
|
||||||
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x89) //color parsing! -Inuyasha 2.16.09
|
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x8F) //color parsing! -Inuyasha 2.16.09
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (c == '\n')
|
if (c == '\n')
|
||||||
|
@ -1314,6 +1320,7 @@ static void HU_drawMiniChat(void)
|
||||||
INT32 transflag = (timer >= 0 && timer <= 9) ? (timer*V_10TRANS) : 0; // you can make bad jokes out of this one.
|
INT32 transflag = (timer >= 0 && timer <= 9) ? (timer*V_10TRANS) : 0; // you can make bad jokes out of this one.
|
||||||
size_t j = 0;
|
size_t j = 0;
|
||||||
const char *msg = CHAT_WordWrap(x+2, cv_chatwidth.value-(charwidth*2), V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, chat_mini[i]); // get the current message, and word wrap it.
|
const char *msg = CHAT_WordWrap(x+2, cv_chatwidth.value-(charwidth*2), V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, chat_mini[i]); // get the current message, and word wrap it.
|
||||||
|
UINT8 *colormap = NULL;
|
||||||
|
|
||||||
while(msg[j]) // iterate through msg
|
while(msg[j]) // iterate through msg
|
||||||
{
|
{
|
||||||
|
@ -1333,6 +1340,7 @@ static void HU_drawMiniChat(void)
|
||||||
else if (msg[j] & 0x80) // stolen from video.c, nice.
|
else if (msg[j] & 0x80) // stolen from video.c, nice.
|
||||||
{
|
{
|
||||||
clrflag = ((msg[j] & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
clrflag = ((msg[j] & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
||||||
|
colormap = V_GetStringColormap(clrflag);
|
||||||
++j;
|
++j;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1341,8 +1349,6 @@ static void HU_drawMiniChat(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UINT8 *colormap = CHAT_GetStringColormap(clrflag);
|
|
||||||
|
|
||||||
if (cv_chatbacktint.value) // on request of wolfy
|
if (cv_chatbacktint.value) // on request of wolfy
|
||||||
V_DrawFillConsoleMap(x + dx + 2, y+dy, charwidth, charheight, 239|V_SNAPTOBOTTOM|V_SNAPTOLEFT);
|
V_DrawFillConsoleMap(x + dx + 2, y+dy, charwidth, charheight, 239|V_SNAPTOBOTTOM|V_SNAPTOLEFT);
|
||||||
|
|
||||||
|
@ -1392,6 +1398,7 @@ static void HU_drawChatLog(INT32 offset)
|
||||||
INT32 clrflag = 0;
|
INT32 clrflag = 0;
|
||||||
INT32 j = 0;
|
INT32 j = 0;
|
||||||
const char *msg = CHAT_WordWrap(x+2, cv_chatwidth.value-(charwidth*2), V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, chat_log[i]); // get the current message, and word wrap it.
|
const char *msg = CHAT_WordWrap(x+2, cv_chatwidth.value-(charwidth*2), V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, chat_log[i]); // get the current message, and word wrap it.
|
||||||
|
UINT8 *colormap = NULL;
|
||||||
while(msg[j]) // iterate through msg
|
while(msg[j]) // iterate through msg
|
||||||
{
|
{
|
||||||
if (msg[j] < HU_FONTSTART) // don't draw
|
if (msg[j] < HU_FONTSTART) // don't draw
|
||||||
|
@ -1406,6 +1413,7 @@ static void HU_drawChatLog(INT32 offset)
|
||||||
else if (msg[j] & 0x80) // stolen from video.c, nice.
|
else if (msg[j] & 0x80) // stolen from video.c, nice.
|
||||||
{
|
{
|
||||||
clrflag = ((msg[j] & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
clrflag = ((msg[j] & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
||||||
|
colormap = V_GetStringColormap(clrflag);
|
||||||
++j;
|
++j;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1415,10 +1423,7 @@ static void HU_drawChatLog(INT32 offset)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((y+dy+2 >= chat_topy) && (y+dy < (chat_bottomy)))
|
if ((y+dy+2 >= chat_topy) && (y+dy < (chat_bottomy)))
|
||||||
{
|
|
||||||
UINT8 *colormap = CHAT_GetStringColormap(clrflag);
|
|
||||||
V_DrawChatCharacter(x + dx + 2, y+dy+2, msg[j++] |V_SNAPTOBOTTOM|V_SNAPTOLEFT, !cv_allcaps.value, colormap);
|
V_DrawChatCharacter(x + dx + 2, y+dy+2, msg[j++] |V_SNAPTOBOTTOM|V_SNAPTOLEFT, !cv_allcaps.value, colormap);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
j++; // don't forget to increment this or we'll get stuck in the limbo.
|
j++; // don't forget to increment this or we'll get stuck in the limbo.
|
||||||
}
|
}
|
||||||
|
@ -1479,7 +1484,7 @@ static void HU_DrawChat(void)
|
||||||
{
|
{
|
||||||
INT32 charwidth = 4, charheight = 6;
|
INT32 charwidth = 4, charheight = 6;
|
||||||
INT32 t = 0, c = 0, y = chaty - (typelines*charheight) - (cv_kartspeedometer.value ? 16 : 0);
|
INT32 t = 0, c = 0, y = chaty - (typelines*charheight) - (cv_kartspeedometer.value ? 16 : 0);
|
||||||
UINT32 i = 0;
|
UINT32 i = 0, saylen = strlen(w_chat); // You learn new things everyday!
|
||||||
const char *ntalk = "Say: ", *ttalk = "Team: ";
|
const char *ntalk = "Say: ", *ttalk = "Team: ";
|
||||||
const char *talk = ntalk;
|
const char *talk = ntalk;
|
||||||
|
|
||||||
|
@ -1522,7 +1527,7 @@ static void HU_DrawChat(void)
|
||||||
if (hu_tick < 4)
|
if (hu_tick < 4)
|
||||||
V_DrawChatCharacter(cursorx, cursory+1, '_' |V_SNAPTOBOTTOM|V_SNAPTOLEFT|t, !cv_allcaps.value, NULL);
|
V_DrawChatCharacter(cursorx, cursory+1, '_' |V_SNAPTOBOTTOM|V_SNAPTOLEFT|t, !cv_allcaps.value, NULL);
|
||||||
|
|
||||||
if (cursorx == chatx+1) // a weirdo hack
|
if (cursorx == chatx+1 && saylen == i) // a weirdo hack
|
||||||
{
|
{
|
||||||
typelines += 1;
|
typelines += 1;
|
||||||
skippedline = true;
|
skippedline = true;
|
||||||
|
|
196
src/info.c
196
src/info.c
|
@ -3056,7 +3056,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // mass
|
0, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -3083,7 +3083,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // mass
|
0, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -3110,7 +3110,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -3137,7 +3137,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
MT_THOK, // damage
|
MT_THOK, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SOLID|MF_SHOOTABLE, // flags
|
MF_SOLID|MF_SHOOTABLE|MF_DONTENCOREMAP, // flags
|
||||||
(statenum_t)MT_THOK // raisestate
|
(statenum_t)MT_THOK // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5082,7 +5082,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5163,7 +5163,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5190,7 +5190,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5217,7 +5217,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5244,7 +5244,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP, // flags
|
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5271,7 +5271,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SPECIAL, // flags
|
MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5298,7 +5298,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SPECIAL, // flags
|
MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5325,7 +5325,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
4, // mass
|
4, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5352,7 +5352,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
MF_NOGRAVITY|MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
{ // MT_EMERALD2
|
{ // MT_EMERALD2
|
||||||
|
@ -5378,7 +5378,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
MF_NOGRAVITY|MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
{ // MT_EMERALD3
|
{ // MT_EMERALD3
|
||||||
|
@ -5404,7 +5404,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
MF_NOGRAVITY|MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
{ // MT_EMERALD4
|
{ // MT_EMERALD4
|
||||||
|
@ -5430,7 +5430,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
MF_NOGRAVITY|MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
{ // MT_EMERALD5
|
{ // MT_EMERALD5
|
||||||
|
@ -5456,7 +5456,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
MF_NOGRAVITY|MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
{ // MT_EMERALD6
|
{ // MT_EMERALD6
|
||||||
|
@ -5482,7 +5482,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
MF_NOGRAVITY|MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
{ // MT_EMERALD7
|
{ // MT_EMERALD7
|
||||||
|
@ -5508,7 +5508,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_SPECIAL, // flags
|
MF_NOGRAVITY|MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5535,7 +5535,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
4, // mass
|
4, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SPECIAL|MF_NOGRAVITY, // flags
|
MF_SPECIAL|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5589,7 +5589,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SLIDEME|MF_SPECIAL, // flags
|
MF_SLIDEME|MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5643,7 +5643,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
20*FRACUNIT, // mass
|
20*FRACUNIT, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SOLID, // flags
|
MF_SOLID|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5670,7 +5670,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
14*FRACUNIT, // mass
|
14*FRACUNIT, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SOLID|MF_SPRING, // flags
|
MF_SOLID|MF_SPRING|MF_DONTENCOREMAP, // flags
|
||||||
S_BLUESPRING2 // raisestate
|
S_BLUESPRING2 // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5697,7 +5697,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
26*FRACUNIT, // mass
|
26*FRACUNIT, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SOLID|MF_SPRING, // flags
|
MF_SOLID|MF_SPRING|MF_DONTENCOREMAP, // flags
|
||||||
S_YELLOWSPRING2 // raisestate
|
S_YELLOWSPRING2 // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5724,7 +5724,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
40*FRACUNIT, // mass
|
40*FRACUNIT, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SOLID|MF_SPRING, // flags
|
MF_SOLID|MF_SPRING|MF_DONTENCOREMAP, // flags
|
||||||
S_REDSPRING2 // raisestate
|
S_REDSPRING2 // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5751,7 +5751,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
26*FRACUNIT, // mass
|
26*FRACUNIT, // mass
|
||||||
26*FRACUNIT, // damage
|
26*FRACUNIT, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SOLID|MF_SPRING, // flags
|
MF_SOLID|MF_SPRING|MF_DONTENCOREMAP, // flags
|
||||||
S_YDIAG2 // raisestate
|
S_YDIAG2 // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5778,7 +5778,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
40*FRACUNIT, // mass
|
40*FRACUNIT, // mass
|
||||||
40*FRACUNIT, // damage
|
40*FRACUNIT, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SOLID|MF_SPRING, // flags
|
MF_SOLID|MF_SPRING|MF_DONTENCOREMAP, // flags
|
||||||
S_RDIAG2 // raisestate
|
S_RDIAG2 // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5832,7 +5832,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOCLIP|MF_SCENERY, // flags
|
MF_NOCLIP|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -10510,7 +10510,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -10537,7 +10537,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -10781,7 +10781,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -10970,7 +10970,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
4, // mass
|
4, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP, // flags
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -13142,7 +13142,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
8, // damage
|
8, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -13169,7 +13169,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
8, // damage
|
8, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -13331,7 +13331,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14305,7 +14305,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
6*FRACUNIT, // mass
|
6*FRACUNIT, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SOLID|MF_SPRING, // flags
|
MF_SOLID|MF_SPRING|MF_DONTENCOREMAP, // flags
|
||||||
S_GRAYSPRING2 // raisestate
|
S_GRAYSPRING2 // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14359,7 +14359,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
14*FRACUNIT, // mass
|
14*FRACUNIT, // mass
|
||||||
14*FRACUNIT, // damage
|
14*FRACUNIT, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SOLID|MF_SPRING, // flags
|
MF_SOLID|MF_SPRING|MF_DONTENCOREMAP, // flags
|
||||||
S_BDIAG2 // raisestate
|
S_BDIAG2 // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14386,7 +14386,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
MT_RANDOMITEMPOP, // damage
|
MT_RANDOMITEMPOP, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14413,7 +14413,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
MT_EXPLODE, // mass
|
MT_EXPLODE, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOCLIP, // flags
|
MF_NOCLIP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14440,7 +14440,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SLIDEME|MF_SPECIAL, // flags
|
MF_SLIDEME|MF_SPECIAL|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14467,7 +14467,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14494,7 +14494,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14521,7 +14521,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14548,7 +14548,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14575,7 +14575,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_SLIDEME|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14602,7 +14602,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14629,7 +14629,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14656,7 +14656,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14683,7 +14683,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14710,7 +14710,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14737,7 +14737,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_FLOAT|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_FLOAT|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14764,7 +14764,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SPECIAL|MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_SPECIAL|MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14791,7 +14791,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_fake, // activesound
|
sfx_fake, // activesound
|
||||||
MF_SPECIAL|MF_BOUNCE|MF_SHOOTABLE, // flags
|
MF_SPECIAL|MF_BOUNCE|MF_SHOOTABLE|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14818,7 +14818,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_peel, // activesound
|
sfx_peel, // activesound
|
||||||
MF_BOUNCE|MF_SHOOTABLE, // flags
|
MF_BOUNCE|MF_SHOOTABLE|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14845,7 +14845,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14872,7 +14872,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_s3k96, // activesound
|
sfx_s3k96, // activesound
|
||||||
MF_SHOOTABLE|MF_BOUNCE, // flags
|
MF_SHOOTABLE|MF_BOUNCE|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14899,7 +14899,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14926,7 +14926,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_s3kc0s, // activesound
|
sfx_s3kc0s, // activesound
|
||||||
MF_SHOOTABLE, // flags
|
MF_SHOOTABLE|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14953,7 +14953,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_s3kc0s, // activesound
|
sfx_s3kc0s, // activesound
|
||||||
MF_SHOOTABLE, // flags
|
MF_SHOOTABLE|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14980,7 +14980,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15007,7 +15007,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15034,7 +15034,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_s3k5c, // activesound
|
sfx_s3k5c, // activesound
|
||||||
MF_BOUNCE|MF_SHOOTABLE, // flags
|
MF_BOUNCE|MF_SHOOTABLE|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15061,7 +15061,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15088,7 +15088,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SOLID|MF_NOGRAVITY, // flags
|
MF_SOLID|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15142,7 +15142,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // mass
|
0, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15169,7 +15169,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // mass
|
0, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_BOUNCE|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_BOUNCE|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15196,7 +15196,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // mass
|
0, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_BOUNCE|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_BOUNCE|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15223,7 +15223,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SHOOTABLE|MF_BOUNCE, // flags
|
MF_SHOOTABLE|MF_BOUNCE|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15250,7 +15250,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING, // flags
|
MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15277,7 +15277,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15304,7 +15304,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_BOUNCE|MF_FLOAT|MF_NOCLIPTHING|MF_MISSILE|MF_SHOOTABLE, // flags
|
MF_BOUNCE|MF_FLOAT|MF_NOCLIPTHING|MF_MISSILE|MF_SHOOTABLE|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15331,7 +15331,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15358,7 +15358,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15385,7 +15385,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_bomb, // activesound
|
sfx_bomb, // activesound
|
||||||
MF_BOUNCE|MF_SHOOTABLE, // flags
|
MF_BOUNCE|MF_SHOOTABLE|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15412,7 +15412,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15439,7 +15439,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15466,7 +15466,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15493,7 +15493,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15601,7 +15601,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15628,7 +15628,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
2, // flags
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15655,7 +15655,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
2, // flags
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15682,7 +15682,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
2, // flags
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15709,7 +15709,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
2, // flags
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15736,7 +15736,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
2, // flags
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15763,7 +15763,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
2, // flags
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15790,7 +15790,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
2, // flags
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15817,7 +15817,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
1000, // mass
|
1000, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
2, // flags
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -16843,7 +16843,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -16870,7 +16870,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT, // flags
|
MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -16897,7 +16897,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT, // flags
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -16924,7 +16924,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_clash, // activesound
|
sfx_clash, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY|MF_RUNSPAWNFUNC|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -16951,7 +16951,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -16978,7 +16978,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT, // flags
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -17005,7 +17005,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT, // flags
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -17032,7 +17032,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -17059,7 +17059,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -17086,7 +17086,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // mass
|
0, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SPECIAL|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
|
MF_SPECIAL|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -17113,7 +17113,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // mass
|
0, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOTHINK|MF_NOCLIP|MF_NOCLIPHEIGHT, // flags
|
MF_NOTHINK|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
92
src/k_kart.c
92
src/k_kart.c
|
@ -24,7 +24,7 @@
|
||||||
// SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H:
|
// SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H:
|
||||||
// gamespeed is cc (0 for easy, 1 for normal, 2 for hard)
|
// gamespeed is cc (0 for easy, 1 for normal, 2 for hard)
|
||||||
// franticitems is Frantic Mode items, bool
|
// franticitems is Frantic Mode items, bool
|
||||||
// mirrormode is Mirror Mode (duh), bool
|
// encoremode is Encore Mode (duh), bool
|
||||||
// comeback is Battle Mode's karma comeback, also bool
|
// comeback is Battle Mode's karma comeback, also bool
|
||||||
// battlewanted is an array of the WANTED player nums, -1 for no player in that slot
|
// battlewanted is an array of the WANTED player nums, -1 for no player in that slot
|
||||||
// indirectitemcooldown is timer before anyone's allowed another Shrink/SPB
|
// indirectitemcooldown is timer before anyone's allowed another Shrink/SPB
|
||||||
|
@ -428,7 +428,8 @@ void K_RegisterKartStuff(void)
|
||||||
CV_RegisterVar(&cv_kartbumpers);
|
CV_RegisterVar(&cv_kartbumpers);
|
||||||
CV_RegisterVar(&cv_kartfrantic);
|
CV_RegisterVar(&cv_kartfrantic);
|
||||||
CV_RegisterVar(&cv_kartcomeback);
|
CV_RegisterVar(&cv_kartcomeback);
|
||||||
CV_RegisterVar(&cv_kartmirror);
|
CV_RegisterVar(&cv_kartencore);
|
||||||
|
CV_RegisterVar(&cv_kartvoterulechanges);
|
||||||
CV_RegisterVar(&cv_kartspeedometer);
|
CV_RegisterVar(&cv_kartspeedometer);
|
||||||
CV_RegisterVar(&cv_kartvoices);
|
CV_RegisterVar(&cv_kartvoices);
|
||||||
CV_RegisterVar(&cv_karteliminatelast);
|
CV_RegisterVar(&cv_karteliminatelast);
|
||||||
|
@ -5880,14 +5881,17 @@ static void K_drawKartItem(void)
|
||||||
V_DrawScaledPatch(ITEM_X+17, ITEM_Y+13, V_HUDTRANS|splitflags, kp_eggnum[min(3, G_TicsToSeconds(stplyr->kartstuff[k_eggmanexplode]))]);
|
V_DrawScaledPatch(ITEM_X+17, ITEM_Y+13, V_HUDTRANS|splitflags, kp_eggnum[min(3, G_TicsToSeconds(stplyr->kartstuff[k_eggmanexplode]))]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void K_drawKartTimestamp(void)
|
void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT16 emblemmap, boolean playing)
|
||||||
{
|
{
|
||||||
// TIME_X = BASEVIDWIDTH-124; // 196
|
// TIME_X = BASEVIDWIDTH-124; // 196
|
||||||
// TIME_Y = 6; // 6
|
// TIME_Y = 6; // 6
|
||||||
|
|
||||||
INT32 TIME_XB, splitflags = V_HUDTRANS|K_calcSplitFlags(V_SNAPTOTOP|V_SNAPTORIGHT);
|
tic_t worktime;
|
||||||
tic_t drawtime = stplyr->realtime;
|
|
||||||
|
|
||||||
|
INT32 splitflags = 0;
|
||||||
|
if (playing)
|
||||||
|
{
|
||||||
|
splitflags = V_HUDTRANS|K_calcSplitFlags(V_SNAPTOTOP|V_SNAPTORIGHT);
|
||||||
if (cv_timelimit.value && timelimitintics > 0)
|
if (cv_timelimit.value && timelimitintics > 0)
|
||||||
{
|
{
|
||||||
if (drawtime >= timelimitintics)
|
if (drawtime >= timelimitintics)
|
||||||
|
@ -5895,63 +5899,72 @@ static void K_drawKartTimestamp(void)
|
||||||
else
|
else
|
||||||
drawtime = timelimitintics - drawtime;
|
drawtime = timelimitintics - drawtime;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
V_DrawScaledPatch(TIME_X, TIME_Y, splitflags, kp_timestickerwide);
|
V_DrawScaledPatch(TX, TY, splitflags, kp_timestickerwide);
|
||||||
|
|
||||||
TIME_XB = TIME_X+33;
|
TX += 33;
|
||||||
|
|
||||||
if (drawtime/(60*TICRATE) < 100) // 99:99:99 only
|
worktime = drawtime/(60*TICRATE);
|
||||||
|
|
||||||
|
if (!playing && !drawtime)
|
||||||
|
V_DrawKartString(TX, TY+3, splitflags, va("--'--\"--"));
|
||||||
|
else if (worktime < 100) // 99:99:99 only
|
||||||
{
|
{
|
||||||
// zero minute
|
// zero minute
|
||||||
if (drawtime/(60*TICRATE) < 10)
|
if (worktime < 10)
|
||||||
{
|
{
|
||||||
V_DrawKartString(TIME_XB, TIME_Y+3, splitflags, va("0"));
|
V_DrawKartString(TX, TY+3, splitflags, va("0"));
|
||||||
// minutes time 0 __ __
|
// minutes time 0 __ __
|
||||||
V_DrawKartString(TIME_XB+12, TIME_Y+3, splitflags, va("%d", drawtime/(60*TICRATE)));
|
V_DrawKartString(TX+12, TY+3, splitflags, va("%d", worktime));
|
||||||
}
|
}
|
||||||
// minutes time 0 __ __
|
// minutes time 0 __ __
|
||||||
else
|
else
|
||||||
V_DrawKartString(TIME_XB, TIME_Y+3, splitflags, va("%d", drawtime/(60*TICRATE)));
|
V_DrawKartString(TX, TY+3, splitflags, va("%d", worktime));
|
||||||
|
|
||||||
// apostrophe location _'__ __
|
// apostrophe location _'__ __
|
||||||
V_DrawKartString(TIME_XB+24, TIME_Y+3, splitflags, va("'"));
|
V_DrawKartString(TX+24, TY+3, splitflags, va("'"));
|
||||||
|
|
||||||
|
worktime = (drawtime/TICRATE % 60);
|
||||||
|
|
||||||
// zero second _ 0_ __
|
// zero second _ 0_ __
|
||||||
if ((drawtime/TICRATE % 60) < 10)
|
if (worktime < 10)
|
||||||
{
|
{
|
||||||
V_DrawKartString(TIME_XB+36, TIME_Y+3, splitflags, va("0"));
|
V_DrawKartString(TX+36, TY+3, splitflags, va("0"));
|
||||||
// seconds time _ _0 __
|
// seconds time _ _0 __
|
||||||
V_DrawKartString(TIME_XB+48, TIME_Y+3, splitflags, va("%d", drawtime/TICRATE % 60));
|
V_DrawKartString(TX+48, TY+3, splitflags, va("%d", worktime));
|
||||||
}
|
}
|
||||||
// zero second _ 00 __
|
// zero second _ 00 __
|
||||||
else
|
else
|
||||||
V_DrawKartString(TIME_XB+36, TIME_Y+3, splitflags, va("%d", drawtime/TICRATE % 60));
|
V_DrawKartString(TX+36, TY+3, splitflags, va("%d", worktime));
|
||||||
|
|
||||||
// quotation mark location _ __"__
|
// quotation mark location _ __"__
|
||||||
V_DrawKartString(TIME_XB+60, TIME_Y+3, splitflags, va("\""));
|
V_DrawKartString(TX+60, TY+3, splitflags, va("\""));
|
||||||
|
|
||||||
|
worktime = G_TicsToCentiseconds(drawtime);
|
||||||
|
|
||||||
// zero tick _ __ 0_
|
// zero tick _ __ 0_
|
||||||
if (G_TicsToCentiseconds(drawtime) < 10)
|
if (worktime < 10)
|
||||||
{
|
{
|
||||||
V_DrawKartString(TIME_XB+72, TIME_Y+3, splitflags, va("0"));
|
V_DrawKartString(TX+72, TY+3, splitflags, va("0"));
|
||||||
// tics _ __ _0
|
// tics _ __ _0
|
||||||
V_DrawKartString(TIME_XB+84, TIME_Y+3, splitflags, va("%d", G_TicsToCentiseconds(drawtime)));
|
V_DrawKartString(TX+84, TY+3, splitflags, va("%d", worktime));
|
||||||
}
|
}
|
||||||
// zero tick _ __ 00
|
// zero tick _ __ 00
|
||||||
if (G_TicsToCentiseconds(drawtime) >= 10)
|
else
|
||||||
V_DrawKartString(TIME_XB+72, TIME_Y+3, splitflags, va("%d", G_TicsToCentiseconds(drawtime)));
|
V_DrawKartString(TX+72, TY+3, splitflags, va("%d", worktime));
|
||||||
}
|
}
|
||||||
else if ((drawtime/TICRATE) & 1)
|
else if ((drawtime/TICRATE) & 1)
|
||||||
V_DrawKartString(TIME_XB, TIME_Y+3, splitflags, va("99'59\"99"));
|
V_DrawKartString(TX, TY+3, splitflags, va("99'59\"99"));
|
||||||
|
|
||||||
if (modeattacking) // emblem time!
|
if (emblemmap && (modeattacking || !playing)) // emblem time!
|
||||||
{
|
{
|
||||||
INT32 workx = TIME_XB + 96, worky = TIME_Y+18;
|
INT32 workx = TX + 96, worky = TY+18;
|
||||||
SINT8 curemb = 0;
|
SINT8 curemb = 0;
|
||||||
patch_t *emblempic[3] = {NULL, NULL, NULL};
|
patch_t *emblempic[3] = {NULL, NULL, NULL};
|
||||||
UINT8 *emblemcol[3] = {NULL, NULL, NULL};
|
UINT8 *emblemcol[3] = {NULL, NULL, NULL};
|
||||||
|
|
||||||
emblem_t *emblem = M_GetLevelEmblems(gamemap);
|
emblem_t *emblem = M_GetLevelEmblems(emblemmap);
|
||||||
while (emblem)
|
while (emblem)
|
||||||
{
|
{
|
||||||
char targettext[9];
|
char targettext[9];
|
||||||
|
@ -5972,11 +5985,13 @@ static void K_drawKartTimestamp(void)
|
||||||
goto bademblem;
|
goto bademblem;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(targettext, 9, "%i:%02i.%02i",
|
snprintf(targettext, 9, "%i'%02i\"%02i",
|
||||||
G_TicsToMinutes(timetoreach, false),
|
G_TicsToMinutes(timetoreach, false),
|
||||||
G_TicsToSeconds(timetoreach),
|
G_TicsToSeconds(timetoreach),
|
||||||
G_TicsToCentiseconds(timetoreach));
|
G_TicsToCentiseconds(timetoreach));
|
||||||
|
|
||||||
|
if (playing)
|
||||||
|
{
|
||||||
if (stplyr->realtime > timetoreach)
|
if (stplyr->realtime > timetoreach)
|
||||||
{
|
{
|
||||||
splitflags = (splitflags &~ V_HUDTRANS)|V_HUDTRANSHALF;
|
splitflags = (splitflags &~ V_HUDTRANS)|V_HUDTRANSHALF;
|
||||||
|
@ -5988,6 +6003,7 @@ static void K_drawKartTimestamp(void)
|
||||||
}
|
}
|
||||||
else if (!canplaysound)
|
else if (!canplaysound)
|
||||||
canplaysound = true;
|
canplaysound = true;
|
||||||
|
}
|
||||||
|
|
||||||
targettext[8] = 0;
|
targettext[8] = 0;
|
||||||
}
|
}
|
||||||
|
@ -5997,7 +6013,7 @@ static void K_drawKartTimestamp(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
V_DrawRightAlignedString(workx, worky, splitflags, targettext);
|
V_DrawRightAlignedString(workx, worky, splitflags, targettext);
|
||||||
workx -= 69; // i SWEAR i wasn't aiming for this
|
workx -= 72; //69; -- good night sweet prince
|
||||||
V_DrawSmallScaledPatch(workx + 4, worky, splitflags, W_CachePatchName("NEEDIT", PU_CACHE));
|
V_DrawSmallScaledPatch(workx + 4, worky, splitflags, W_CachePatchName("NEEDIT", PU_CACHE));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -6006,6 +6022,8 @@ static void K_drawKartTimestamp(void)
|
||||||
emblem = M_GetLevelEmblems(-1);
|
emblem = M_GetLevelEmblems(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (playing)
|
||||||
|
splitflags = (splitflags &~ V_HUDTRANSHALF)|V_HUDTRANS;
|
||||||
while (curemb--)
|
while (curemb--)
|
||||||
{
|
{
|
||||||
workx -= 16;
|
workx -= 16;
|
||||||
|
@ -6301,7 +6319,7 @@ fixed_t K_FindCheckX(fixed_t px, fixed_t py, angle_t ang, fixed_t mx, fixed_t my
|
||||||
else
|
else
|
||||||
x = (FixedMul(FINETANGENT(((diff+ANGLE_90)>>ANGLETOFINESHIFT) & 4095), 160<<FRACBITS) + (160<<FRACBITS))>>FRACBITS;
|
x = (FixedMul(FINETANGENT(((diff+ANGLE_90)>>ANGLETOFINESHIFT) & 4095), 160<<FRACBITS) + (160<<FRACBITS))>>FRACBITS;
|
||||||
|
|
||||||
if (mirrormode)
|
if (encoremode)
|
||||||
x = 320-x;
|
x = 320-x;
|
||||||
|
|
||||||
if (splitscreen > 1)
|
if (splitscreen > 1)
|
||||||
|
@ -6510,14 +6528,14 @@ static void K_drawKartMinimapHead(mobj_t *mo, INT32 x, INT32 y, INT32 flags, pat
|
||||||
amnumxpos = (FixedMul(mo->x, zoom) - FixedMul(xoffset, zoom));
|
amnumxpos = (FixedMul(mo->x, zoom) - FixedMul(xoffset, zoom));
|
||||||
amnumypos = -(FixedMul(mo->y, zoom) - FixedMul(yoffset, zoom));
|
amnumypos = -(FixedMul(mo->y, zoom) - FixedMul(yoffset, zoom));
|
||||||
|
|
||||||
if (mirrormode)
|
if (encoremode)
|
||||||
amnumxpos = -amnumxpos;
|
amnumxpos = -amnumxpos;
|
||||||
|
|
||||||
amxpos = amnumxpos + ((x + AutomapPic->width/2 - (iconprefix[skin]->width/2))<<FRACBITS);
|
amxpos = amnumxpos + ((x + AutomapPic->width/2 - (iconprefix[skin]->width/2))<<FRACBITS);
|
||||||
amypos = amnumypos + ((y + AutomapPic->height/2 - (iconprefix[skin]->height/2))<<FRACBITS);
|
amypos = amnumypos + ((y + AutomapPic->height/2 - (iconprefix[skin]->height/2))<<FRACBITS);
|
||||||
|
|
||||||
// do we want this? it feels unnecessary. easier to just modify the amnumxpos?
|
// do we want this? it feels unnecessary. easier to just modify the amnumxpos?
|
||||||
/*if (mirrormode)
|
/*if (encoremode)
|
||||||
{
|
{
|
||||||
flags |= V_FLIP;
|
flags |= V_FLIP;
|
||||||
amxpos = -amnumxpos + ((x + AutomapPic->width/2 + (iconprefix[skin]->width/2))<<FRACBITS);
|
amxpos = -amnumxpos + ((x + AutomapPic->width/2 + (iconprefix[skin]->width/2))<<FRACBITS);
|
||||||
|
@ -6577,7 +6595,7 @@ static void K_drawKartMinimap(void)
|
||||||
minimaptrans = ((10-minimaptrans)<<FF_TRANSSHIFT);
|
minimaptrans = ((10-minimaptrans)<<FF_TRANSSHIFT);
|
||||||
splitflags |= minimaptrans;
|
splitflags |= minimaptrans;
|
||||||
|
|
||||||
if (mirrormode)
|
if (encoremode)
|
||||||
V_DrawScaledPatch(x+(AutomapPic->width), y, splitflags|V_FLIP, AutomapPic);
|
V_DrawScaledPatch(x+(AutomapPic->width), y, splitflags|V_FLIP, AutomapPic);
|
||||||
else
|
else
|
||||||
V_DrawScaledPatch(x, y, splitflags, AutomapPic);
|
V_DrawScaledPatch(x, y, splitflags, AutomapPic);
|
||||||
|
@ -6589,7 +6607,7 @@ static void K_drawKartMinimap(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// let offsets transfer to the heads, too!
|
// let offsets transfer to the heads, too!
|
||||||
if (mirrormode)
|
if (encoremode)
|
||||||
x += SHORT(AutomapPic->leftoffset);
|
x += SHORT(AutomapPic->leftoffset);
|
||||||
else
|
else
|
||||||
x -= SHORT(AutomapPic->leftoffset);
|
x -= SHORT(AutomapPic->leftoffset);
|
||||||
|
@ -6854,7 +6872,7 @@ static void K_drawKartFirstPerson(void)
|
||||||
else // forward
|
else // forward
|
||||||
target = 0;
|
target = 0;
|
||||||
|
|
||||||
if (mirrormode)
|
if (encoremode)
|
||||||
target = -target;
|
target = -target;
|
||||||
|
|
||||||
if (pn < target)
|
if (pn < target)
|
||||||
|
@ -6922,7 +6940,7 @@ static void K_drawKartFirstPerson(void)
|
||||||
if (stplyr->mo->momz > 0) // TO-DO: Draw more of the kart so we can remove this if!
|
if (stplyr->mo->momz > 0) // TO-DO: Draw more of the kart so we can remove this if!
|
||||||
yoffs += stplyr->mo->momz/3;
|
yoffs += stplyr->mo->momz/3;
|
||||||
|
|
||||||
if (mirrormode)
|
if (encoremode)
|
||||||
x -= xoffs;
|
x -= xoffs;
|
||||||
else
|
else
|
||||||
x += xoffs;
|
x += xoffs;
|
||||||
|
@ -7285,7 +7303,7 @@ void K_drawKartHUD(void)
|
||||||
if (!splitscreen)
|
if (!splitscreen)
|
||||||
{
|
{
|
||||||
// Draw the timestamp
|
// Draw the timestamp
|
||||||
K_drawKartTimestamp();
|
K_drawKartTimestamp(stplyr->realtime, TIME_X, TIME_Y, gamemap, true);
|
||||||
|
|
||||||
if (!modeattacking)
|
if (!modeattacking)
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,6 +65,7 @@ void K_LoadKartHUDGraphics(void);
|
||||||
fixed_t K_FindCheckX(fixed_t px, fixed_t py, angle_t ang, fixed_t mx, fixed_t my);
|
fixed_t K_FindCheckX(fixed_t px, fixed_t py, angle_t ang, fixed_t mx, fixed_t my);
|
||||||
void K_drawKartHUD(void);
|
void K_drawKartHUD(void);
|
||||||
void K_drawKartFreePlay(UINT32 flashtime);
|
void K_drawKartFreePlay(UINT32 flashtime);
|
||||||
|
void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT16 emblemmap, boolean playing);
|
||||||
void K_LoadIconGraphics(char *facestr, INT32 skinnum);
|
void K_LoadIconGraphics(char *facestr, INT32 skinnum);
|
||||||
void K_ReloadSkinIconGraphics(void);
|
void K_ReloadSkinIconGraphics(void);
|
||||||
|
|
||||||
|
|
16
src/m_cond.c
16
src/m_cond.c
|
@ -96,12 +96,14 @@ extraemblem_t extraemblems[MAXEXTRAEMBLEMS] =
|
||||||
// Default Unlockables
|
// Default Unlockables
|
||||||
unlockable_t unlockables[MAXUNLOCKABLES] =
|
unlockable_t unlockables[MAXUNLOCKABLES] =
|
||||||
{
|
{
|
||||||
// Name, Objective, Menu Height, ConditionSet, Unlock Type, Variable, NoCecho, NoChecklist
|
// Name, Objective, Showing Conditionset, ConditionSet, Unlock Type, Variable, NoCecho, NoChecklist
|
||||||
/* 01 */ {"Egg Cup", "", 0, 1, SECRET_NONE, 0, false, false, 0},
|
/* 01 */ {"Egg Cup", "", -1, 1, SECRET_NONE, 0, false, false, 0},
|
||||||
/* 02 */ {"SMK Cup", "", 0, 2, SECRET_NONE, 0, false, false, 0},
|
/* 02 */ {"SMK Cup", "", -1, 2, SECRET_NONE, 0, false, false, 0},
|
||||||
/* 03 */ {"Chao Cup", "", 0, 3, SECRET_NONE, 0, false, false, 0},
|
/* 03 */ {"Chao Cup", "", -1, 3, SECRET_NONE, 0, false, false, 0},
|
||||||
|
|
||||||
/* 04 */ {"Record Attack", "", 0, -1, SECRET_RECORDATTACK, 0, true, true, 0},
|
/* 04 */ {"Encore Mode", "", 3, 4, SECRET_ENCORE, 0, false, false, 0},
|
||||||
|
|
||||||
|
/* 05 */ {"Record Attack", "", -1, -1, SECRET_RECORDATTACK, 0, true, true, 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Default number of emblems and extra emblems
|
// Default number of emblems and extra emblems
|
||||||
|
@ -125,6 +127,10 @@ void M_SetupDefaultConditionSets(void)
|
||||||
M_AddRawCondition(3, 1, UC_TOTALEMBLEMS, 30, 0, 0);
|
M_AddRawCondition(3, 1, UC_TOTALEMBLEMS, 30, 0, 0);
|
||||||
M_AddRawCondition(3, 2, UC_MATCHESPLAYED, 50, 0, 0);
|
M_AddRawCondition(3, 2, UC_MATCHESPLAYED, 50, 0, 0);
|
||||||
|
|
||||||
|
// -- 4: Collect 50 emblems OR play 150 matches
|
||||||
|
M_AddRawCondition(4, 1, UC_TOTALEMBLEMS, 50, 0, 0);
|
||||||
|
M_AddRawCondition(4, 2, UC_MATCHESPLAYED, 150, 0, 0);
|
||||||
|
|
||||||
// -- 10: Play 100 matches
|
// -- 10: Play 100 matches
|
||||||
M_AddRawCondition(10, 1, UC_MATCHESPLAYED, 100, 0, 0);
|
M_AddRawCondition(10, 1, UC_MATCHESPLAYED, 100, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,7 @@ typedef struct
|
||||||
{
|
{
|
||||||
char name[64];
|
char name[64];
|
||||||
char objective[64];
|
char objective[64];
|
||||||
UINT16 height; // menu height
|
UINT8 showconditionset;
|
||||||
UINT8 conditionset;
|
UINT8 conditionset;
|
||||||
INT16 type;
|
INT16 type;
|
||||||
INT16 variable;
|
INT16 variable;
|
||||||
|
@ -112,6 +112,7 @@ typedef struct
|
||||||
UINT8 unlocked;
|
UINT8 unlocked;
|
||||||
} unlockable_t;
|
} unlockable_t;
|
||||||
|
|
||||||
|
// I have NO idea why these are going negative, but whatever.
|
||||||
#define SECRET_NONE -6 // Does nil. Use with levels locked by UnlockRequired
|
#define SECRET_NONE -6 // Does nil. Use with levels locked by UnlockRequired
|
||||||
#define SECRET_ITEMFINDER -5 // Enables Item Finder/Emblem Radar
|
#define SECRET_ITEMFINDER -5 // Enables Item Finder/Emblem Radar
|
||||||
#define SECRET_EMBLEMHINTS -4 // Enables Emblem Hints
|
#define SECRET_EMBLEMHINTS -4 // Enables Emblem Hints
|
||||||
|
@ -123,6 +124,7 @@ typedef struct
|
||||||
#define SECRET_WARP 2 // Selectable warp
|
#define SECRET_WARP 2 // Selectable warp
|
||||||
#define SECRET_SOUNDTEST 3 // Sound Test
|
#define SECRET_SOUNDTEST 3 // Sound Test
|
||||||
#define SECRET_CREDITS 4 // Enables Credits
|
#define SECRET_CREDITS 4 // Enables Credits
|
||||||
|
#define SECRET_ENCORE 5 // Enables Encore mode cvar
|
||||||
|
|
||||||
// If you have more secrets than these variables allow in your game,
|
// If you have more secrets than these variables allow in your game,
|
||||||
// you seriously need to get a life.
|
// you seriously need to get a life.
|
||||||
|
|
142
src/m_menu.c
142
src/m_menu.c
|
@ -386,7 +386,7 @@ static void Dummystaff_OnChange(void);
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
|
|
||||||
static CV_PossibleValue_t map_cons_t[] = {
|
static CV_PossibleValue_t map_cons_t[] = {
|
||||||
{1,"MIN"},
|
{0,"MIN"},
|
||||||
{NUMMAPS, "MAX"},
|
{NUMMAPS, "MAX"},
|
||||||
{0, NULL}
|
{0, NULL}
|
||||||
};
|
};
|
||||||
|
@ -1464,7 +1464,7 @@ static menuitem_t OP_GameOptionsMenu[] =
|
||||||
|
|
||||||
{IT_STRING | IT_CVAR, NULL, "Game Speed", &cv_kartspeed, 30},
|
{IT_STRING | IT_CVAR, NULL, "Game Speed", &cv_kartspeed, 30},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Frantic Items", &cv_kartfrantic, 40},
|
{IT_STRING | IT_CVAR, NULL, "Frantic Items", &cv_kartfrantic, 40},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Mirror Mode", &cv_kartmirror, 50},
|
{IT_SECRET, NULL, "Encore Mode", &cv_kartencore, 50},
|
||||||
|
|
||||||
{IT_STRING | IT_CVAR, NULL, "Number of Laps", &cv_basenumlaps, 70},
|
{IT_STRING | IT_CVAR, NULL, "Number of Laps", &cv_basenumlaps, 70},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Exit Countdown Timer", &cv_countdowntime, 80},
|
{IT_STRING | IT_CVAR, NULL, "Exit Countdown Timer", &cv_countdowntime, 80},
|
||||||
|
@ -1487,14 +1487,15 @@ static menuitem_t OP_ServerOptionsMenu[] =
|
||||||
{IT_STRING | IT_CVAR, NULL, "Intermission Timer", &cv_inttime, 40},
|
{IT_STRING | IT_CVAR, NULL, "Intermission Timer", &cv_inttime, 40},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Map Progression", &cv_advancemap, 50},
|
{IT_STRING | IT_CVAR, NULL, "Map Progression", &cv_advancemap, 50},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Voting Timer", &cv_votetime, 60},
|
{IT_STRING | IT_CVAR, NULL, "Voting Timer", &cv_votetime, 60},
|
||||||
|
{IT_STRING | IT_CVAR, NULL, "Voting Rule Changes", &cv_kartvoterulechanges, 70},
|
||||||
|
|
||||||
#ifndef NONET
|
#ifndef NONET
|
||||||
{IT_STRING | IT_CVAR, NULL, "Max. Player Count", &cv_maxplayers, 80},
|
{IT_STRING | IT_CVAR, NULL, "Max. Player Count", &cv_maxplayers, 90},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Allow Players to Join", &cv_allownewplayer, 90},
|
{IT_STRING | IT_CVAR, NULL, "Allow Players to Join", &cv_allownewplayer, 100},
|
||||||
//{IT_STRING | IT_CVAR, NULL, "Join on Map Change", &cv_joinnextround, 100},
|
//{IT_STRING | IT_CVAR, NULL, "Join on Map Change", &cv_joinnextround, 110},
|
||||||
|
|
||||||
{IT_STRING | IT_CVAR, NULL, "Allow WAD Downloading", &cv_downloading, 100},
|
{IT_STRING | IT_CVAR, NULL, "Allow WAD Downloading", &cv_downloading, 110},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Attempts to resynchronise", &cv_resynchattempts, 110},
|
{IT_STRING | IT_CVAR, NULL, "Attempts to resynchronise", &cv_resynchattempts, 120},
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1521,7 +1522,7 @@ static menuitem_t OP_ServerOptionsMenu[] =
|
||||||
{
|
{
|
||||||
{IT_HEADER, NULL, "RACE", NULL, 2},
|
{IT_HEADER, NULL, "RACE", NULL, 2},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Game Speed", &cv_kartspeed, 10},
|
{IT_STRING | IT_CVAR, NULL, "Game Speed", &cv_kartspeed, 10},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Mirror Mode", &cv_kartmirror, 18},
|
{IT_STRING | IT_CVAR, NULL, "Encore Mode", &cv_kartencore, 18},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Number of Laps", &cv_numlaps, 26},
|
{IT_STRING | IT_CVAR, NULL, "Number of Laps", &cv_numlaps, 26},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Use Map Lap Counts", &cv_usemapnumlaps, 34},
|
{IT_STRING | IT_CVAR, NULL, "Use Map Lap Counts", &cv_usemapnumlaps, 34},
|
||||||
|
|
||||||
|
@ -2170,7 +2171,7 @@ static void Dummystaff_OnChange(void)
|
||||||
// Newgametype. Used for gametype changes.
|
// Newgametype. Used for gametype changes.
|
||||||
static void Newgametype_OnChange(void)
|
static void Newgametype_OnChange(void)
|
||||||
{
|
{
|
||||||
if (menuactive)
|
if (cv_nextmap.value && menuactive)
|
||||||
{
|
{
|
||||||
if (!mapheaderinfo[cv_nextmap.value-1])
|
if (!mapheaderinfo[cv_nextmap.value-1])
|
||||||
P_AllocMapHeader((INT16)(cv_nextmap.value-1));
|
P_AllocMapHeader((INT16)(cv_nextmap.value-1));
|
||||||
|
@ -3877,6 +3878,10 @@ static void M_PrepareLevelSelect(void)
|
||||||
//
|
//
|
||||||
boolean M_CanShowLevelInList(INT32 mapnum, INT32 gt)
|
boolean M_CanShowLevelInList(INT32 mapnum, INT32 gt)
|
||||||
{
|
{
|
||||||
|
// Random map!
|
||||||
|
if (mapnum == -1)
|
||||||
|
return (gamestate != GS_TIMEATTACK && !modeattacking);
|
||||||
|
|
||||||
// Does the map exist?
|
// Does the map exist?
|
||||||
if (!mapheaderinfo[mapnum])
|
if (!mapheaderinfo[mapnum])
|
||||||
return false;
|
return false;
|
||||||
|
@ -4364,6 +4369,9 @@ static void M_Options(INT32 choice)
|
||||||
OP_MainMenu[8].status = (Playing()) ? (IT_GRAYEDOUT) : (IT_STRING|IT_CALL);
|
OP_MainMenu[8].status = (Playing()) ? (IT_GRAYEDOUT) : (IT_STRING|IT_CALL);
|
||||||
OP_MainMenu[9].status = (Playing()) ? (IT_GRAYEDOUT) : (IT_STRING|IT_SUBMENU);
|
OP_MainMenu[9].status = (Playing()) ? (IT_GRAYEDOUT) : (IT_STRING|IT_SUBMENU);
|
||||||
|
|
||||||
|
OP_GameOptionsMenu[3].status =
|
||||||
|
(M_SecretUnlocked(SECRET_ENCORE)) ? (IT_CVAR|IT_STRING) : IT_SECRET; // cv_kartencore
|
||||||
|
|
||||||
OP_MainDef.prevMenu = currentMenu;
|
OP_MainDef.prevMenu = currentMenu;
|
||||||
M_SetupNextMenu(&OP_MainDef);
|
M_SetupNextMenu(&OP_MainDef);
|
||||||
}
|
}
|
||||||
|
@ -4524,7 +4532,8 @@ static void M_DrawChecklist(void)
|
||||||
for (i = 0; i < MAXUNLOCKABLES; i++)
|
for (i = 0; i < MAXUNLOCKABLES; i++)
|
||||||
{
|
{
|
||||||
if (unlockables[i].name[0] == 0 || unlockables[i].nochecklist
|
if (unlockables[i].name[0] == 0 || unlockables[i].nochecklist
|
||||||
|| !unlockables[i].conditionset || unlockables[i].conditionset > MAXCONDITIONSETS)
|
|| !unlockables[i].conditionset || unlockables[i].conditionset > MAXCONDITIONSETS
|
||||||
|
|| !M_Achieved(unlockables[i].showconditionset - 1))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
++line;
|
++line;
|
||||||
|
@ -5470,7 +5479,7 @@ static void M_ChoosePlayer(INT32 choice)
|
||||||
{
|
{
|
||||||
char *skin1,*skin2;
|
char *skin1,*skin2;
|
||||||
INT32 skinnum;
|
INT32 skinnum;
|
||||||
boolean ultmode = (ultimate_selectable && SP_PlayerDef.prevMenu == &SP_LoadDef && saveSlotSelected == NOSAVESLOT);
|
//boolean ultmode = (ultimate_selectable && SP_PlayerDef.prevMenu == &SP_LoadDef && saveSlotSelected == NOSAVESLOT);
|
||||||
|
|
||||||
// skip this if forcecharacter
|
// skip this if forcecharacter
|
||||||
if (mapheaderinfo[startmap-1] && mapheaderinfo[startmap-1]->forcecharacter[0] == '\0')
|
if (mapheaderinfo[startmap-1] && mapheaderinfo[startmap-1]->forcecharacter[0] == '\0')
|
||||||
|
@ -5507,7 +5516,7 @@ static void M_ChoosePlayer(INT32 choice)
|
||||||
lastmapsaved = 0;
|
lastmapsaved = 0;
|
||||||
gamecomplete = false;
|
gamecomplete = false;
|
||||||
|
|
||||||
G_DeferedInitNew(ultmode, G_BuildMapName(startmap), (UINT8)skinnum, 0, fromlevelselect);
|
G_DeferedInitNew(false, G_BuildMapName(startmap), (UINT8)skinnum, 0, fromlevelselect);
|
||||||
COM_BufAddText("dummyconsvar 1\n"); // G_DeferedInitNew doesn't do this
|
COM_BufAddText("dummyconsvar 1\n"); // G_DeferedInitNew doesn't do this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5751,7 +5760,6 @@ void M_DrawTimeAttackMenu(void)
|
||||||
INT32 i, x, y, cursory = 0;
|
INT32 i, x, y, cursory = 0;
|
||||||
UINT16 dispstatus;
|
UINT16 dispstatus;
|
||||||
patch_t *PictureOfUrFace;
|
patch_t *PictureOfUrFace;
|
||||||
char beststr[40];
|
|
||||||
|
|
||||||
//S_ChangeMusicInternal("racent", true); // Eww, but needed for when user hits escape during demo playback
|
//S_ChangeMusicInternal("racent", true); // Eww, but needed for when user hits escape during demo playback
|
||||||
|
|
||||||
|
@ -5832,6 +5840,24 @@ void M_DrawTimeAttackMenu(void)
|
||||||
// Level record list
|
// Level record list
|
||||||
if (cv_nextmap.value)
|
if (cv_nextmap.value)
|
||||||
{
|
{
|
||||||
|
INT32 dupadjust = (vid.width/vid.dupx);
|
||||||
|
tic_t lap = 0, time = 0;
|
||||||
|
if (mainrecords[cv_nextmap.value-1])
|
||||||
|
{
|
||||||
|
lap = mainrecords[cv_nextmap.value-1]->lap;
|
||||||
|
time = mainrecords[cv_nextmap.value-1]->time;
|
||||||
|
}
|
||||||
|
|
||||||
|
V_DrawFill((BASEVIDWIDTH - dupadjust)>>1, 78, dupadjust, 36, 239);
|
||||||
|
|
||||||
|
V_DrawRightAlignedString(149, 80, highlightflags, "BEST LAP:");
|
||||||
|
K_drawKartTimestamp(lap, 19, 86, 0, false);
|
||||||
|
|
||||||
|
V_DrawRightAlignedString(292, 80, highlightflags, "BEST TIME:");
|
||||||
|
K_drawKartTimestamp(time, 162, 86, cv_nextmap.value, false);
|
||||||
|
}
|
||||||
|
/*{
|
||||||
|
char beststr[40];
|
||||||
emblem_t *em;
|
emblem_t *em;
|
||||||
|
|
||||||
if (!mainrecords[cv_nextmap.value-1] || !mainrecords[cv_nextmap.value-1]->time)
|
if (!mainrecords[cv_nextmap.value-1] || !mainrecords[cv_nextmap.value-1]->time)
|
||||||
|
@ -5874,7 +5900,7 @@ void M_DrawTimeAttackMenu(void)
|
||||||
skipThisOne:
|
skipThisOne:
|
||||||
em = M_GetLevelEmblems(-1);
|
em = M_GetLevelEmblems(-1);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// ALWAYS DRAW player name, level name, skin and color even when not on this menu!
|
// ALWAYS DRAW player name, level name, skin and color even when not on this menu!
|
||||||
if (currentMenu != &SP_TimeAttackDef)
|
if (currentMenu != &SP_TimeAttackDef)
|
||||||
|
@ -5926,11 +5952,16 @@ static void M_TimeAttack(INT32 choice)
|
||||||
|
|
||||||
M_PrepareLevelSelect();
|
M_PrepareLevelSelect();
|
||||||
M_SetupNextMenu(&SP_TimeAttackDef);
|
M_SetupNextMenu(&SP_TimeAttackDef);
|
||||||
|
|
||||||
|
G_SetGamestate(GS_TIMEATTACK);
|
||||||
|
|
||||||
|
if (cv_nextmap.value)
|
||||||
Nextmap_OnChange();
|
Nextmap_OnChange();
|
||||||
|
else
|
||||||
|
CV_AddValue(&cv_nextmap, 1);
|
||||||
|
|
||||||
itemOn = tastart; // "Start" is selected.
|
itemOn = tastart; // "Start" is selected.
|
||||||
|
|
||||||
G_SetGamestate(GS_TIMEATTACK);
|
|
||||||
S_ChangeMusicInternal("racent", true);
|
S_ChangeMusicInternal("racent", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6741,7 +6772,10 @@ static INT32 M_FindFirstMap(INT32 gtype)
|
||||||
|
|
||||||
for (i = 0; i < NUMMAPS; i++)
|
for (i = 0; i < NUMMAPS; i++)
|
||||||
{
|
{
|
||||||
if (mapheaderinfo[i] && (mapheaderinfo[i]->typeoflevel & gtype))
|
if (!mapheaderinfo[i])
|
||||||
|
continue;
|
||||||
|
if (!(mapheaderinfo[i]->typeoflevel & gtype))
|
||||||
|
continue;
|
||||||
return i + 1;
|
return i + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6774,9 +6808,12 @@ static void M_StartServer(INT32 choice)
|
||||||
if (metalrecording)
|
if (metalrecording)
|
||||||
G_StopMetalDemo();
|
G_StopMetalDemo();
|
||||||
|
|
||||||
|
if (!cv_nextmap.value)
|
||||||
|
CV_SetValue(&cv_nextmap, G_RandMap(G_TOLFlag(cv_newgametype.value), -1, false, false, 0, false)+1);
|
||||||
|
|
||||||
if (ssplayers < 1)
|
if (ssplayers < 1)
|
||||||
{
|
{
|
||||||
D_MapChange(cv_nextmap.value, cv_newgametype.value, false, 1, 1, false, false);
|
D_MapChange(cv_nextmap.value, cv_newgametype.value, (boolean)cv_kartencore.value, 1, 1, false, false);
|
||||||
COM_BufAddText("dummyconsvar 1\n");
|
COM_BufAddText("dummyconsvar 1\n");
|
||||||
}
|
}
|
||||||
else // split screen
|
else // split screen
|
||||||
|
@ -6790,7 +6827,7 @@ static void M_StartServer(INT32 choice)
|
||||||
SplitScreen_OnChange();
|
SplitScreen_OnChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
D_MapChange(cv_nextmap.value, cv_newgametype.value, false, 1, 1, false, false);
|
D_MapChange(cv_nextmap.value, cv_newgametype.value, (boolean)cv_kartencore.value, 1, 1, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
M_ClearMenus(true);
|
M_ClearMenus(true);
|
||||||
|
@ -6803,12 +6840,16 @@ static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade)
|
||||||
INT32 x, y, w, i, oldval, trans, dupadjust = ((vid.width/vid.dupx) - BASEVIDWIDTH)>>1;
|
INT32 x, y, w, i, oldval, trans, dupadjust = ((vid.width/vid.dupx) - BASEVIDWIDTH)>>1;
|
||||||
|
|
||||||
// A 160x100 image of the level as entry MAPxxP
|
// A 160x100 image of the level as entry MAPxxP
|
||||||
|
if (cv_nextmap.value)
|
||||||
|
{
|
||||||
lumpnum = W_CheckNumForName(va("%sP", G_BuildMapName(cv_nextmap.value)));
|
lumpnum = W_CheckNumForName(va("%sP", G_BuildMapName(cv_nextmap.value)));
|
||||||
|
|
||||||
if (lumpnum != LUMPERROR)
|
if (lumpnum != LUMPERROR)
|
||||||
PictureOfLevel = W_CachePatchNum(lumpnum, PU_CACHE);
|
PictureOfLevel = W_CachePatchNum(lumpnum, PU_CACHE);
|
||||||
else
|
else
|
||||||
PictureOfLevel = W_CachePatchName("BLANKLVL", PU_CACHE);
|
PictureOfLevel = W_CachePatchName("BLANKLVL", PU_CACHE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
PictureOfLevel = W_CachePatchName("RANDOMLV", PU_CACHE);
|
||||||
|
|
||||||
w = SHORT(PictureOfLevel->width)/2;
|
w = SHORT(PictureOfLevel->width)/2;
|
||||||
i = SHORT(PictureOfLevel->height)/2;
|
i = SHORT(PictureOfLevel->height)/2;
|
||||||
|
@ -6822,7 +6863,23 @@ static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade)
|
||||||
|
|
||||||
V_DrawFill(x-1, y-1, w+2, i+2, trans); // variable reuse...
|
V_DrawFill(x-1, y-1, w+2, i+2, trans); // variable reuse...
|
||||||
|
|
||||||
|
if (!cv_kartencore.value || gamestate == GS_TIMEATTACK || cv_newgametype.value != GT_RACE)
|
||||||
V_DrawSmallScaledPatch(x, y, 0, PictureOfLevel);
|
V_DrawSmallScaledPatch(x, y, 0, PictureOfLevel);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*UINT8 *mappingforencore = NULL;
|
||||||
|
if ((lumpnum = W_CheckNumForName(va("%sE", mapname))) != LUMPERROR)
|
||||||
|
mappingforencore = W_CachePatchNum(lumpnum, PU_CACHE);*/
|
||||||
|
|
||||||
|
V_DrawFixedPatch((x+w)<<FRACBITS, (y)<<FRACBITS, FRACUNIT/2, V_FLIP, PictureOfLevel, 0);
|
||||||
|
|
||||||
|
{
|
||||||
|
static angle_t rubyfloattime = 0;
|
||||||
|
const fixed_t rubyheight = FINESINE(rubyfloattime>>ANGLETOFINESHIFT);
|
||||||
|
V_DrawFixedPatch((x+w/2)<<FRACBITS, ((y+i/2)<<FRACBITS) - (rubyheight<<1), FRACUNIT, 0, W_CachePatchName("RUBYICON", PU_CACHE), NULL);
|
||||||
|
rubyfloattime += (ANGLE_MAX/NEWTICRATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
/*V_DrawDiag(x, y, 12, 31);
|
/*V_DrawDiag(x, y, 12, 31);
|
||||||
V_DrawDiag(x, y, 10, G_GetGametypeColor(cv_newgametype.value));*/
|
V_DrawDiag(x, y, 10, G_GetGametypeColor(cv_newgametype.value));*/
|
||||||
|
|
||||||
|
@ -6837,7 +6894,7 @@ static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade)
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
i--;
|
i--;
|
||||||
if (i == -1)
|
if (i == -2)
|
||||||
i = NUMMAPS-1;
|
i = NUMMAPS-1;
|
||||||
|
|
||||||
if (i == oldval)
|
if (i == oldval)
|
||||||
|
@ -6849,14 +6906,19 @@ static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade)
|
||||||
} while (!M_CanShowLevelInList(i, cv_newgametype.value));
|
} while (!M_CanShowLevelInList(i, cv_newgametype.value));
|
||||||
|
|
||||||
// A 160x100 image of the level as entry MAPxxP
|
// A 160x100 image of the level as entry MAPxxP
|
||||||
|
if (i+1)
|
||||||
|
{
|
||||||
lumpnum = W_CheckNumForName(va("%sP", G_BuildMapName(i+1)));
|
lumpnum = W_CheckNumForName(va("%sP", G_BuildMapName(i+1)));
|
||||||
|
|
||||||
if (lumpnum != LUMPERROR)
|
if (lumpnum != LUMPERROR)
|
||||||
PictureOfLevel = W_CachePatchNum(lumpnum, PU_CACHE);
|
PictureOfLevel = W_CachePatchNum(lumpnum, PU_CACHE);
|
||||||
else
|
else
|
||||||
PictureOfLevel = W_CachePatchName("BLANKLVL", PU_CACHE);
|
PictureOfLevel = W_CachePatchName("BLANKLVL", PU_CACHE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
PictureOfLevel = W_CachePatchName("RANDOMLV", PU_CACHE);
|
||||||
|
|
||||||
|
x -= horizspac + w/2;
|
||||||
|
|
||||||
x -= horizspac + SHORT(PictureOfLevel->width)/4;
|
|
||||||
V_DrawTinyScaledPatch(x, y, trans, PictureOfLevel);
|
V_DrawTinyScaledPatch(x, y, trans, PictureOfLevel);
|
||||||
} while (x > horizspac-dupadjust);
|
} while (x > horizspac-dupadjust);
|
||||||
|
|
||||||
|
@ -6871,7 +6933,7 @@ static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
if (i == NUMMAPS)
|
if (i == NUMMAPS)
|
||||||
i = 0;
|
i = -1;
|
||||||
|
|
||||||
if (i == oldval)
|
if (i == oldval)
|
||||||
return;
|
return;
|
||||||
|
@ -6882,15 +6944,20 @@ static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade)
|
||||||
} while (!M_CanShowLevelInList(i, cv_newgametype.value));
|
} while (!M_CanShowLevelInList(i, cv_newgametype.value));
|
||||||
|
|
||||||
// A 160x100 image of the level as entry MAPxxP
|
// A 160x100 image of the level as entry MAPxxP
|
||||||
|
if (i+1)
|
||||||
|
{
|
||||||
lumpnum = W_CheckNumForName(va("%sP", G_BuildMapName(i+1)));
|
lumpnum = W_CheckNumForName(va("%sP", G_BuildMapName(i+1)));
|
||||||
|
|
||||||
if (lumpnum != LUMPERROR)
|
if (lumpnum != LUMPERROR)
|
||||||
PictureOfLevel = W_CachePatchNum(lumpnum, PU_CACHE);
|
PictureOfLevel = W_CachePatchNum(lumpnum, PU_CACHE);
|
||||||
else
|
else
|
||||||
PictureOfLevel = W_CachePatchName("BLANKLVL", PU_CACHE);
|
PictureOfLevel = W_CachePatchName("BLANKLVL", PU_CACHE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
PictureOfLevel = W_CachePatchName("RANDOMLV", PU_CACHE);
|
||||||
|
|
||||||
V_DrawTinyScaledPatch(x, y, trans, PictureOfLevel);
|
V_DrawTinyScaledPatch(x, y, trans, PictureOfLevel);
|
||||||
x += horizspac + SHORT(PictureOfLevel->width)/4;
|
|
||||||
|
x += horizspac + w/2;
|
||||||
}
|
}
|
||||||
#undef horizspac
|
#undef horizspac
|
||||||
}
|
}
|
||||||
|
@ -8516,6 +8583,8 @@ static consvar_t *kartitemcvs[NUMKARTRESULTS-1] = {
|
||||||
&cv_dualjawz
|
&cv_dualjawz
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static tic_t shitsfree = 0;
|
||||||
|
|
||||||
static void M_DrawMonitorToggles(void)
|
static void M_DrawMonitorToggles(void)
|
||||||
{
|
{
|
||||||
const INT32 edges = 4;
|
const INT32 edges = 4;
|
||||||
|
@ -8630,7 +8699,18 @@ static void M_DrawMonitorToggles(void)
|
||||||
{
|
{
|
||||||
#ifdef ITEMTOGGLEBOTTOMRIGHT
|
#ifdef ITEMTOGGLEBOTTOMRIGHT
|
||||||
if (currentMenu->menuitems[itemOn].alphaKey == 255)
|
if (currentMenu->menuitems[itemOn].alphaKey == 255)
|
||||||
|
{
|
||||||
V_DrawScaledPatch(onx-1, ony-2, V_TRANSLUCENT, W_CachePatchName("K_ITBG", PU_CACHE));
|
V_DrawScaledPatch(onx-1, ony-2, V_TRANSLUCENT, W_CachePatchName("K_ITBG", PU_CACHE));
|
||||||
|
if (shitsfree)
|
||||||
|
{
|
||||||
|
INT32 trans = V_TRANSLUCENT;
|
||||||
|
if (shitsfree-1 > TICRATE-5)
|
||||||
|
trans = ((10-TICRATE)+shitsfree-1)<<V_ALPHASHIFT;
|
||||||
|
else if (shitsfree < 5)
|
||||||
|
trans = (10-shitsfree)<<V_ALPHASHIFT;
|
||||||
|
V_DrawScaledPatch(onx-1, ony-2, trans, W_CachePatchName("K_ITFREE", PU_CACHE));
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
if (currentMenu->menuitems[itemOn].alphaKey == 0)
|
if (currentMenu->menuitems[itemOn].alphaKey == 0)
|
||||||
|
@ -8677,6 +8757,9 @@ static void M_DrawMonitorToggles(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (shitsfree)
|
||||||
|
shitsfree--;
|
||||||
|
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, currentMenu->y, highlightflags, va("* %s *", currentMenu->menuitems[itemOn].text));
|
V_DrawCenteredString(BASEVIDWIDTH/2, currentMenu->y, highlightflags, va("* %s *", currentMenu->menuitems[itemOn].text));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8737,7 +8820,14 @@ static void M_HandleMonitorToggles(INT32 choice)
|
||||||
case KEY_ENTER:
|
case KEY_ENTER:
|
||||||
#ifdef ITEMTOGGLEBOTTOMRIGHT
|
#ifdef ITEMTOGGLEBOTTOMRIGHT
|
||||||
if (currentMenu->menuitems[itemOn].alphaKey == 255)
|
if (currentMenu->menuitems[itemOn].alphaKey == 255)
|
||||||
S_StartSound(NULL, sfx_lose);
|
{
|
||||||
|
//S_StartSound(NULL, sfx_lose);
|
||||||
|
if (!shitsfree)
|
||||||
|
{
|
||||||
|
shitsfree = TICRATE;
|
||||||
|
S_StartSound(NULL, sfx_itfree);
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
if (currentMenu->menuitems[itemOn].alphaKey == 0)
|
if (currentMenu->menuitems[itemOn].alphaKey == 0)
|
||||||
|
|
|
@ -3655,7 +3655,7 @@ boolean P_CameraThinker(player_t *player, camera_t *thiscam, boolean resetcalled
|
||||||
|| (thiscam == &camera4 && players[fourthdisplayplayer].mo && (players[fourthdisplayplayer].mo->flags2 & MF2_TWOD)))
|
|| (thiscam == &camera4 && players[fourthdisplayplayer].mo && (players[fourthdisplayplayer].mo->flags2 & MF2_TWOD)))
|
||||||
itsatwodlevel = true;
|
itsatwodlevel = true;
|
||||||
|
|
||||||
if (mirrormode)
|
if (encoremode)
|
||||||
postimg = postimg_mirror;
|
postimg = postimg_mirror;
|
||||||
else if (player->pflags & PF_FLIPCAM && !(player->pflags & PF_NIGHTSMODE) && player->mo->eflags & MFE_VERTICALFLIP)
|
else if (player->pflags & PF_FLIPCAM && !(player->pflags & PF_NIGHTSMODE) && player->mo->eflags & MFE_VERTICALFLIP)
|
||||||
postimg = postimg_flip;
|
postimg = postimg_flip;
|
||||||
|
@ -6215,6 +6215,9 @@ void P_RunOverlays(void)
|
||||||
mo->scale = mo->destscale = mo->target->scale;
|
mo->scale = mo->destscale = mo->target->scale;
|
||||||
mo->angle = mo->target->angle;
|
mo->angle = mo->target->angle;
|
||||||
|
|
||||||
|
if ((mo->flags & MF_DONTENCOREMAP) != (mo->target->flags & MF_DONTENCOREMAP))
|
||||||
|
mo->flags ^= MF_DONTENCOREMAP;
|
||||||
|
|
||||||
if (!(mo->state->frame & FF_ANIMATE))
|
if (!(mo->state->frame & FF_ANIMATE))
|
||||||
zoffs = FixedMul(((signed)mo->state->var2)*FRACUNIT, mo->scale);
|
zoffs = FixedMul(((signed)mo->state->var2)*FRACUNIT, mo->scale);
|
||||||
// if you're using FF_ANIMATE on an overlay,
|
// if you're using FF_ANIMATE on an overlay,
|
||||||
|
|
|
@ -160,7 +160,9 @@ typedef enum
|
||||||
MF_GRENADEBOUNCE = 1<<28,
|
MF_GRENADEBOUNCE = 1<<28,
|
||||||
// Run the action thinker on spawn.
|
// Run the action thinker on spawn.
|
||||||
MF_RUNSPAWNFUNC = 1<<29,
|
MF_RUNSPAWNFUNC = 1<<29,
|
||||||
// free: 1<<30 and 1<<31
|
// Don't remap in Encore mode.
|
||||||
|
MF_DONTENCOREMAP = 1<<30,
|
||||||
|
// free: 1<<31
|
||||||
} mobjflag_t;
|
} mobjflag_t;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|
|
@ -3207,6 +3207,8 @@ static void P_NetArchiveMisc(void)
|
||||||
|
|
||||||
WRITEUINT32(save_p, tokenlist);
|
WRITEUINT32(save_p, tokenlist);
|
||||||
|
|
||||||
|
WRITEUINT8(save_p, encoremode);
|
||||||
|
|
||||||
WRITEUINT32(save_p, leveltime);
|
WRITEUINT32(save_p, leveltime);
|
||||||
WRITEUINT32(save_p, totalrings);
|
WRITEUINT32(save_p, totalrings);
|
||||||
WRITEINT16(save_p, lastmap);
|
WRITEINT16(save_p, lastmap);
|
||||||
|
@ -3256,7 +3258,6 @@ static void P_NetArchiveMisc(void)
|
||||||
WRITEINT32(save_p, numgotboxes);
|
WRITEINT32(save_p, numgotboxes);
|
||||||
|
|
||||||
WRITEUINT8(save_p, gamespeed);
|
WRITEUINT8(save_p, gamespeed);
|
||||||
WRITEUINT8(save_p, mirrormode);
|
|
||||||
WRITEUINT8(save_p, franticitems);
|
WRITEUINT8(save_p, franticitems);
|
||||||
WRITEUINT8(save_p, comeback);
|
WRITEUINT8(save_p, comeback);
|
||||||
|
|
||||||
|
@ -3308,6 +3309,8 @@ static inline boolean P_NetUnArchiveMisc(void)
|
||||||
|
|
||||||
tokenlist = READUINT32(save_p);
|
tokenlist = READUINT32(save_p);
|
||||||
|
|
||||||
|
encoremode = (boolean)READUINT8(save_p);
|
||||||
|
|
||||||
if (!P_SetupLevel(true))
|
if (!P_SetupLevel(true))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -3361,7 +3364,6 @@ static inline boolean P_NetUnArchiveMisc(void)
|
||||||
numgotboxes = READINT32(save_p);
|
numgotboxes = READINT32(save_p);
|
||||||
|
|
||||||
gamespeed = READUINT8(save_p);
|
gamespeed = READUINT8(save_p);
|
||||||
mirrormode = (boolean)READUINT8(save_p);
|
|
||||||
franticitems = (boolean)READUINT8(save_p);
|
franticitems = (boolean)READUINT8(save_p);
|
||||||
comeback = (boolean)READUINT8(save_p);
|
comeback = (boolean)READUINT8(save_p);
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@ side_t *sides;
|
||||||
mapthing_t *mapthings;
|
mapthing_t *mapthings;
|
||||||
INT32 numstarposts;
|
INT32 numstarposts;
|
||||||
boolean levelloading;
|
boolean levelloading;
|
||||||
|
UINT8 levelfadecol;
|
||||||
|
|
||||||
// BLOCKMAP
|
// BLOCKMAP
|
||||||
// Created from axis aligned bounding box
|
// Created from axis aligned bounding box
|
||||||
|
@ -216,6 +217,8 @@ static void P_ClearSingleMapHeaderInfo(INT16 i)
|
||||||
mapheaderinfo[num]->countdown = 0;
|
mapheaderinfo[num]->countdown = 0;
|
||||||
DEH_WriteUndoline("PALLETE", va("%u", mapheaderinfo[num]->palette), UNDO_NONE);
|
DEH_WriteUndoline("PALLETE", va("%u", mapheaderinfo[num]->palette), UNDO_NONE);
|
||||||
mapheaderinfo[num]->palette = UINT16_MAX;
|
mapheaderinfo[num]->palette = UINT16_MAX;
|
||||||
|
DEH_WriteUndoline("ENCOREPAL", va("%u", mapheaderinfo[num]->encorepal), UNDO_NONE);
|
||||||
|
mapheaderinfo[num]->encorepal = UINT16_MAX;
|
||||||
DEH_WriteUndoline("NUMLAPS", va("%u", mapheaderinfo[num]->numlaps), UNDO_NONE);
|
DEH_WriteUndoline("NUMLAPS", va("%u", mapheaderinfo[num]->numlaps), UNDO_NONE);
|
||||||
mapheaderinfo[num]->numlaps = NUMLAPS_DEFAULT;
|
mapheaderinfo[num]->numlaps = NUMLAPS_DEFAULT;
|
||||||
DEH_WriteUndoline("UNLOCKABLE", va("%s", mapheaderinfo[num]->unlockrequired), UNDO_NONE);
|
DEH_WriteUndoline("UNLOCKABLE", va("%s", mapheaderinfo[num]->unlockrequired), UNDO_NONE);
|
||||||
|
@ -2244,6 +2247,26 @@ static void P_LevelInitStuff(void)
|
||||||
// and this stupid flag as a result
|
// and this stupid flag as a result
|
||||||
players[i].pflags &= ~PF_TRANSFERTOCLOSEST;
|
players[i].pflags &= ~PF_TRANSFERTOCLOSEST;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SRB2Kart: map load variables
|
||||||
|
if (modeattacking) // Just play it safe and set everything
|
||||||
|
{
|
||||||
|
gamespeed = 2;
|
||||||
|
franticitems = false;
|
||||||
|
comeback = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (G_BattleGametype())
|
||||||
|
gamespeed = 0;
|
||||||
|
else
|
||||||
|
gamespeed = (UINT8)cv_kartspeed.value;
|
||||||
|
franticitems = (boolean)cv_kartfrantic.value;
|
||||||
|
comeback = (boolean)cv_kartcomeback.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
battlewanted[i] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -2618,23 +2641,31 @@ boolean P_SetupLevel(boolean skipprecip)
|
||||||
// will be set by player think.
|
// will be set by player think.
|
||||||
players[consoleplayer].viewz = 1;
|
players[consoleplayer].viewz = 1;
|
||||||
|
|
||||||
// Special stage fade to white
|
// Encore mode fade to pink to white
|
||||||
// This is handled BEFORE sounds are stopped.
|
// This is handled BEFORE sounds are stopped.
|
||||||
/*if (rendermode != render_none && G_IsSpecialStage(gamemap))
|
if (rendermode != render_none && encoremode && !prevencoremode)
|
||||||
{
|
{
|
||||||
tic_t starttime = I_GetTime();
|
tic_t starttime, endtime, nowtime;
|
||||||
tic_t endtime = starttime + (3*TICRATE)/2;
|
|
||||||
tic_t nowtime;
|
|
||||||
|
|
||||||
S_StartSound(NULL, sfx_s3kaf);
|
S_StopMusic(); // er, about that...
|
||||||
|
|
||||||
|
S_StartSound(NULL, sfx_ruby1);
|
||||||
|
|
||||||
F_WipeStartScreen();
|
F_WipeStartScreen();
|
||||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 0);
|
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 122);
|
||||||
|
|
||||||
F_WipeEndScreen();
|
F_WipeEndScreen();
|
||||||
F_RunWipe(wipedefs[wipe_speclevel_towhite], false);
|
F_RunWipe(wipedefs[wipe_speclevel_towhite], false);
|
||||||
|
|
||||||
nowtime = lastwipetic;
|
F_WipeStartScreen();
|
||||||
|
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 120);
|
||||||
|
|
||||||
|
F_WipeEndScreen();
|
||||||
|
F_RunWipe(wipedefs[wipe_level_final], false);
|
||||||
|
|
||||||
|
starttime = nowtime = lastwipetic;
|
||||||
|
endtime = starttime + (3*TICRATE)/2;
|
||||||
|
|
||||||
// Hold on white for extra effect.
|
// Hold on white for extra effect.
|
||||||
while (nowtime < endtime)
|
while (nowtime < endtime)
|
||||||
{
|
{
|
||||||
|
@ -2647,30 +2678,31 @@ boolean P_SetupLevel(boolean skipprecip)
|
||||||
}
|
}
|
||||||
|
|
||||||
ranspecialwipe = 1;
|
ranspecialwipe = 1;
|
||||||
}*/
|
}
|
||||||
|
|
||||||
// Make sure all sounds are stopped before Z_FreeTags.
|
// Make sure all sounds are stopped before Z_FreeTags.
|
||||||
S_StopSounds();
|
S_StopSounds();
|
||||||
S_ClearSfx();
|
S_ClearSfx();
|
||||||
|
|
||||||
|
|
||||||
// As oddly named as this is, this handles music only.
|
// As oddly named as this is, this handles music only.
|
||||||
// We should be fine starting it here.
|
// We should be fine starting it here.
|
||||||
S_Start();
|
S_Start();
|
||||||
// SRB2 Kart - Yes this is weird, but we don't want the music to start until after the countdown is finished
|
// SRB2 Kart - Yes this is weird, but we don't want the music to start until after the countdown is finished
|
||||||
// but we do still need the mapmusname to be changed
|
// but we do still need the mapmusname to be changed
|
||||||
if (leveltime < (starttime + (TICRATE/2)))
|
if (leveltime < (starttime + (TICRATE/2)))
|
||||||
S_ChangeMusicInternal("kstart", false); //S_StopMusic();
|
S_ChangeMusicInternal((encoremode ? "estart" : "kstart"), false); //S_StopMusic();
|
||||||
|
|
||||||
// Let's fade to black here
|
levelfadecol = (encoremode && !ranspecialwipe ? 122 : 120);
|
||||||
// But only if we didn't do the special stage wipe
|
|
||||||
|
// Let's fade to white here
|
||||||
|
// But only if we didn't do the encore startup wipe
|
||||||
if (rendermode != render_none && !ranspecialwipe)
|
if (rendermode != render_none && !ranspecialwipe)
|
||||||
{
|
{
|
||||||
F_WipeStartScreen();
|
F_WipeStartScreen();
|
||||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 120);
|
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, levelfadecol);
|
||||||
|
|
||||||
F_WipeEndScreen();
|
F_WipeEndScreen();
|
||||||
F_RunWipe(wipedefs[wipe_level_toblack], false);
|
F_RunWipe(wipedefs[(encoremode ? wipe_level_final : wipe_level_toblack)], false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset the palette now all fades have been done
|
// Reset the palette now all fades have been done
|
||||||
|
@ -2726,7 +2758,8 @@ boolean P_SetupLevel(boolean skipprecip)
|
||||||
// internal game map
|
// internal game map
|
||||||
lastloadedmaplumpnum = W_GetNumForName(maplumpname = G_BuildMapName(gamemap));
|
lastloadedmaplumpnum = W_GetNumForName(maplumpname = G_BuildMapName(gamemap));
|
||||||
|
|
||||||
R_ReInitColormaps(mapheaderinfo[gamemap-1]->palette);
|
R_ReInitColormaps(mapheaderinfo[gamemap-1]->palette,
|
||||||
|
(encoremode ? W_CheckNumForName(va("%sE", maplumpname)) : LUMPERROR));
|
||||||
CON_SetupBackColormap();
|
CON_SetupBackColormap();
|
||||||
|
|
||||||
// SRB2 determines the sky texture to be used depending on the map header.
|
// SRB2 determines the sky texture to be used depending on the map header.
|
||||||
|
@ -2986,33 +3019,6 @@ boolean P_SetupLevel(boolean skipprecip)
|
||||||
CV_SetValue(&cv_analog, false);
|
CV_SetValue(&cv_analog, false);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
// SRB2Kart: map load variables
|
|
||||||
if (modeattacking) // Just play it safe and set everything
|
|
||||||
{
|
|
||||||
gamespeed = 2;
|
|
||||||
mirrormode = false;
|
|
||||||
franticitems = false;
|
|
||||||
comeback = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (G_BattleGametype())
|
|
||||||
{
|
|
||||||
gamespeed = 0;
|
|
||||||
mirrormode = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gamespeed = (UINT8)cv_kartspeed.value;
|
|
||||||
mirrormode = (boolean)cv_kartmirror.value;
|
|
||||||
}
|
|
||||||
franticitems = (boolean)cv_kartfrantic.value;
|
|
||||||
comeback = (boolean)cv_kartcomeback.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
|
||||||
battlewanted[i] = -1;
|
|
||||||
|
|
||||||
wantedcalcdelay = wantedfrequency*2;
|
wantedcalcdelay = wantedfrequency*2;
|
||||||
indirectitemcooldown = 0;
|
indirectitemcooldown = 0;
|
||||||
spbincoming = 0;
|
spbincoming = 0;
|
||||||
|
@ -3037,7 +3043,7 @@ boolean P_SetupLevel(boolean skipprecip)
|
||||||
|
|
||||||
// Remove the loading shit from the screen
|
// Remove the loading shit from the screen
|
||||||
if (rendermode != render_none)
|
if (rendermode != render_none)
|
||||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 120);
|
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, levelfadecol);
|
||||||
|
|
||||||
if (precache || dedicated)
|
if (precache || dedicated)
|
||||||
R_PrecacheLevel();
|
R_PrecacheLevel();
|
||||||
|
|
|
@ -27,6 +27,7 @@ extern mapthing_t *deathmatchstarts[MAX_DM_STARTS];
|
||||||
extern INT32 numdmstarts, numcoopstarts, numredctfstarts, numbluectfstarts;
|
extern INT32 numdmstarts, numcoopstarts, numredctfstarts, numbluectfstarts;
|
||||||
|
|
||||||
extern boolean levelloading;
|
extern boolean levelloading;
|
||||||
|
extern UINT8 levelfadecol;
|
||||||
|
|
||||||
extern lumpnum_t lastloadedmaplumpnum; // for comparative savegame
|
extern lumpnum_t lastloadedmaplumpnum; // for comparative savegame
|
||||||
//
|
//
|
||||||
|
|
12
src/p_spec.c
12
src/p_spec.c
|
@ -1940,6 +1940,7 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller
|
||||||
|| specialtype == 318 // Unlockable trigger - Once
|
|| specialtype == 318 // Unlockable trigger - Once
|
||||||
|| specialtype == 320 // Unlockable - Once
|
|| specialtype == 320 // Unlockable - Once
|
||||||
|| specialtype == 321 || specialtype == 322 // Trigger on X calls - Continuous + Each Time
|
|| specialtype == 321 || specialtype == 322 // Trigger on X calls - Continuous + Each Time
|
||||||
|
|| specialtype == 328 // Encore Load
|
||||||
|| specialtype == 399) // Level Load
|
|| specialtype == 399) // Level Load
|
||||||
triggerline->special = 0; // Clear it out
|
triggerline->special = 0; // Clear it out
|
||||||
|
|
||||||
|
@ -1975,6 +1976,7 @@ void P_LinedefExecute(INT16 tag, mobj_t *actor, sector_t *caller)
|
||||||
// "No More Enemies" and "Level Load" take care of themselves.
|
// "No More Enemies" and "Level Load" take care of themselves.
|
||||||
if (lines[masterline].special == 313
|
if (lines[masterline].special == 313
|
||||||
|| lines[masterline].special == 399
|
|| lines[masterline].special == 399
|
||||||
|
|| lines[masterline].special == 328
|
||||||
// Each-time executors handle themselves, too
|
// Each-time executors handle themselves, too
|
||||||
|| lines[masterline].special == 301 // Each time
|
|| lines[masterline].special == 301 // Each time
|
||||||
|| lines[masterline].special == 306 // Character ability - Each time
|
|| lines[masterline].special == 306 // Character ability - Each time
|
||||||
|
@ -3742,6 +3744,8 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers
|
||||||
break;
|
break;
|
||||||
case 12: // Lua sector special
|
case 12: // Lua sector special
|
||||||
break;
|
break;
|
||||||
|
case 15: // Invert Encore Remap
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
DoneSection2:
|
DoneSection2:
|
||||||
|
|
||||||
|
@ -5561,7 +5565,7 @@ static void P_RunLevelLoadExecutors(void)
|
||||||
|
|
||||||
for (i = 0; i < numlines; i++)
|
for (i = 0; i < numlines; i++)
|
||||||
{
|
{
|
||||||
if (lines[i].special == 399)
|
if (lines[i].special == 399 || lines[i].special == 328)
|
||||||
P_RunTriggerLinedef(&lines[i], NULL, NULL);
|
P_RunTriggerLinedef(&lines[i], NULL, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6452,6 +6456,12 @@ void P_SpawnSpecials(INT32 fromnetsave)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 328: // Encore-only linedef execute on map load
|
||||||
|
if (!encoremode)
|
||||||
|
lines[i].special = 0;
|
||||||
|
// This is handled in P_RunLevelLoadExecutors.
|
||||||
|
break;
|
||||||
|
|
||||||
case 399: // Linedef execute on map load
|
case 399: // Linedef execute on map load
|
||||||
// This is handled in P_RunLevelLoadExecutors.
|
// This is handled in P_RunLevelLoadExecutors.
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -744,7 +744,7 @@ void P_Ticker(boolean run)
|
||||||
if (mapreset > 1
|
if (mapreset > 1
|
||||||
&& --mapreset <= 1
|
&& --mapreset <= 1
|
||||||
&& server) // Remember: server uses it for mapchange, but EVERYONE ticks down for the animation
|
&& server) // Remember: server uses it for mapchange, but EVERYONE ticks down for the animation
|
||||||
D_MapChange(gamemap, gametype, ultimatemode, true, 0, false, false);
|
D_MapChange(gamemap, gametype, encoremode, true, 0, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
P_MapEnd();
|
P_MapEnd();
|
||||||
|
|
|
@ -1221,7 +1221,7 @@ void P_RestoreMusic(player_t *player)
|
||||||
|
|
||||||
// Event - Level Start
|
// Event - Level Start
|
||||||
if (leveltime < (starttime + (TICRATE/2)))
|
if (leveltime < (starttime + (TICRATE/2)))
|
||||||
S_ChangeMusicInternal("kstart", false); //S_StopMusic();
|
S_ChangeMusicInternal((encoremode ? "estart" : "kstart"), false); //S_StopMusic();
|
||||||
else // see also where time overs are handled - search for "lives = 2" in this file
|
else // see also where time overs are handled - search for "lives = 2" in this file
|
||||||
{
|
{
|
||||||
// Item - Grow
|
// Item - Grow
|
||||||
|
@ -1599,6 +1599,9 @@ mobj_t *P_SpawnGhostMobj(mobj_t *mobj)
|
||||||
if (mobj->flags2 & MF2_OBJECTFLIP)
|
if (mobj->flags2 & MF2_OBJECTFLIP)
|
||||||
ghost->flags |= MF2_OBJECTFLIP;
|
ghost->flags |= MF2_OBJECTFLIP;
|
||||||
|
|
||||||
|
if (!(mobj->flags & MF_DONTENCOREMAP))
|
||||||
|
mobj->flags &= ~MF_DONTENCOREMAP;
|
||||||
|
|
||||||
return ghost;
|
return ghost;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8878,7 +8881,7 @@ static void P_CalcPostImg(player_t *player)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (mirrormode) // srb2kart
|
if (encoremode) // srb2kart
|
||||||
*type = postimg_mirror;
|
*type = postimg_mirror;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
32
src/r_bsp.c
32
src/r_bsp.c
|
@ -37,6 +37,26 @@ drawseg_t *ds_p = NULL;
|
||||||
// indicates doors closed wrt automap bugfix:
|
// indicates doors closed wrt automap bugfix:
|
||||||
INT32 doorclosed;
|
INT32 doorclosed;
|
||||||
|
|
||||||
|
static boolean R_NoEncore(sector_t *sector, boolean ceiling)
|
||||||
|
{
|
||||||
|
boolean invertencore = (GETSECSPECIAL(sector->special, 2) == 15);
|
||||||
|
#if 0 // perfect implementation
|
||||||
|
INT32 val = GETSECSPECIAL(sector->special, 3);
|
||||||
|
if (val != 1 && val != 3 // spring panel
|
||||||
|
#else // optimised, see #define GETSECSPECIAL(i,j) ((i >> ((j-1)*4))&15)
|
||||||
|
if ((!(sector->special & (1<<8)) || (sector->special & ((4|8)<<8))) // spring panel
|
||||||
|
#endif
|
||||||
|
&& GETSECSPECIAL(sector->special, 4) != 6) // sneaker panel
|
||||||
|
return invertencore;
|
||||||
|
|
||||||
|
if (invertencore)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (ceiling)
|
||||||
|
return ((boolean)(sector->flags & SF_FLIPSPECIAL_CEILING));
|
||||||
|
return ((boolean)(sector->flags & SF_FLIPSPECIAL_FLOOR));
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// R_ClearDrawSegs
|
// R_ClearDrawSegs
|
||||||
//
|
//
|
||||||
|
@ -935,7 +955,7 @@ static void R_Subsector(size_t num, UINT8 viewnumber)
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
, frontsector->f_slope
|
, frontsector->f_slope
|
||||||
#endif
|
#endif
|
||||||
);
|
, R_NoEncore(frontsector, false));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
floorplane = NULL;
|
floorplane = NULL;
|
||||||
|
@ -957,7 +977,7 @@ static void R_Subsector(size_t num, UINT8 viewnumber)
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
, frontsector->c_slope
|
, frontsector->c_slope
|
||||||
#endif
|
#endif
|
||||||
);
|
, R_NoEncore(frontsector, true));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ceilingplane = NULL;
|
ceilingplane = NULL;
|
||||||
|
@ -1018,7 +1038,7 @@ static void R_Subsector(size_t num, UINT8 viewnumber)
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
, *rover->b_slope
|
, *rover->b_slope
|
||||||
#endif
|
#endif
|
||||||
);
|
, R_NoEncore(rover->master->frontsector, true));
|
||||||
|
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
ffloor[numffloors].slope = *rover->b_slope;
|
ffloor[numffloors].slope = *rover->b_slope;
|
||||||
|
@ -1064,7 +1084,7 @@ static void R_Subsector(size_t num, UINT8 viewnumber)
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
, *rover->t_slope
|
, *rover->t_slope
|
||||||
#endif
|
#endif
|
||||||
);
|
, R_NoEncore(rover->master->frontsector, false));
|
||||||
|
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
ffloor[numffloors].slope = *rover->t_slope;
|
ffloor[numffloors].slope = *rover->t_slope;
|
||||||
|
@ -1133,7 +1153,7 @@ static void R_Subsector(size_t num, UINT8 viewnumber)
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
, NULL // will ffloors be slopable eventually?
|
, NULL // will ffloors be slopable eventually?
|
||||||
#endif
|
#endif
|
||||||
);
|
, R_NoEncore(polysec, false));
|
||||||
|
|
||||||
ffloor[numffloors].height = polysec->floorheight;
|
ffloor[numffloors].height = polysec->floorheight;
|
||||||
ffloor[numffloors].polyobj = po;
|
ffloor[numffloors].polyobj = po;
|
||||||
|
@ -1179,7 +1199,7 @@ static void R_Subsector(size_t num, UINT8 viewnumber)
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
, NULL // will ffloors be slopable eventually?
|
, NULL // will ffloors be slopable eventually?
|
||||||
#endif
|
#endif
|
||||||
);
|
, R_NoEncore(polysec, true));
|
||||||
|
|
||||||
ffloor[numffloors].polyobj = po;
|
ffloor[numffloors].polyobj = po;
|
||||||
ffloor[numffloors].height = polysec->ceilingheight;
|
ffloor[numffloors].height = polysec->ceilingheight;
|
||||||
|
|
143
src/r_data.c
143
src/r_data.c
|
@ -112,6 +112,10 @@ INT32 *texturetranslation;
|
||||||
sprcache_t *spritecachedinfo;
|
sprcache_t *spritecachedinfo;
|
||||||
|
|
||||||
lighttable_t *colormaps;
|
lighttable_t *colormaps;
|
||||||
|
UINT8 *encoremap;
|
||||||
|
#ifdef HASINVERT
|
||||||
|
UINT8 invertmap[256];
|
||||||
|
#endif
|
||||||
|
|
||||||
// for debugging/info purposes
|
// for debugging/info purposes
|
||||||
static size_t flatmemory, spritememory, texturememory;
|
static size_t flatmemory, spritememory, texturememory;
|
||||||
|
@ -932,7 +936,7 @@ static inline lumpnum_t R_CheckNumForNameList(const char *name, lumplist_t *list
|
||||||
return LUMPERROR;
|
return LUMPERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static lumplist_t *colormaplumps = NULL; ///\todo free leak
|
/*static lumplist_t *colormaplumps = NULL; ///\todo free leak
|
||||||
static size_t numcolormaplumps = 0;
|
static size_t numcolormaplumps = 0;
|
||||||
|
|
||||||
static void R_InitExtraColormaps(void)
|
static void R_InitExtraColormaps(void)
|
||||||
|
@ -966,7 +970,7 @@ static void R_InitExtraColormaps(void)
|
||||||
numcolormaplumps++;
|
numcolormaplumps++;
|
||||||
}
|
}
|
||||||
CONS_Printf(M_GetText("Number of Extra Colormaps: %s\n"), sizeu1(numcolormaplumps));
|
CONS_Printf(M_GetText("Number of Extra Colormaps: %s\n"), sizeu1(numcolormaplumps));
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// 12/14/14 -- only take flats in F_START/F_END
|
// 12/14/14 -- only take flats in F_START/F_END
|
||||||
lumpnum_t R_GetFlatNumForName(const char *name)
|
lumpnum_t R_GetFlatNumForName(const char *name)
|
||||||
|
@ -1010,15 +1014,20 @@ static void R_InitColormaps(void)
|
||||||
|
|
||||||
// Load in the light tables
|
// Load in the light tables
|
||||||
lump = W_GetNumForName("COLORMAP");
|
lump = W_GetNumForName("COLORMAP");
|
||||||
colormaps = Z_MallocAlign(W_LumpLength (lump), PU_STATIC, NULL, 8);
|
//Z_MallocAlign(W_LumpLength (lump), PU_STATIC, NULL, 8);
|
||||||
|
colormaps = Z_MallocAlign((256 * 64), PU_STATIC, NULL, 8);
|
||||||
W_ReadLump(lump, colormaps);
|
W_ReadLump(lump, colormaps);
|
||||||
|
// no need to init encoremap at this stage
|
||||||
|
|
||||||
// Init Boom colormaps.
|
// Init Boom colormaps.
|
||||||
R_ClearColormaps();
|
R_ClearColormaps();
|
||||||
R_InitExtraColormaps();
|
//R_InitExtraColormaps();
|
||||||
|
#ifdef HASINVERT
|
||||||
|
R_MakeInvertmap(); // this isn't the BEST place to do it the first time, but whatever
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void R_ReInitColormaps(UINT16 num)
|
void R_ReInitColormaps(UINT16 num, lumpnum_t newencoremap)
|
||||||
{
|
{
|
||||||
char colormap[9] = "COLORMAP";
|
char colormap[9] = "COLORMAP";
|
||||||
lumpnum_t lump;
|
lumpnum_t lump;
|
||||||
|
@ -1032,6 +1041,30 @@ void R_ReInitColormaps(UINT16 num)
|
||||||
lump = W_GetNumForName("COLORMAP");
|
lump = W_GetNumForName("COLORMAP");
|
||||||
W_ReadLump(lump, colormaps);
|
W_ReadLump(lump, colormaps);
|
||||||
|
|
||||||
|
// Encore mode.
|
||||||
|
if (newencoremap != LUMPERROR)
|
||||||
|
{
|
||||||
|
lighttable_t *colormap_p, *colormap_p2;
|
||||||
|
size_t p, i;
|
||||||
|
|
||||||
|
encoremap = Z_MallocAlign(256 + 10, PU_LEVEL, NULL, 8);
|
||||||
|
W_ReadLump(newencoremap, encoremap);
|
||||||
|
colormap_p = colormap_p2 = colormaps;
|
||||||
|
colormap_p += (256 * 32);
|
||||||
|
|
||||||
|
for (p = 0; p < 32; p++)
|
||||||
|
{
|
||||||
|
for (i = 0; i < 256; i++)
|
||||||
|
{
|
||||||
|
*colormap_p = colormap_p2[encoremap[i]];
|
||||||
|
colormap_p++;
|
||||||
|
}
|
||||||
|
colormap_p2 += 256;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
encoremap = NULL;
|
||||||
|
|
||||||
// Init Boom colormaps.
|
// Init Boom colormaps.
|
||||||
R_ClearColormaps();
|
R_ClearColormaps();
|
||||||
}
|
}
|
||||||
|
@ -1060,7 +1093,7 @@ void R_ClearColormaps(void)
|
||||||
memset(extra_colormaps, 0, sizeof (extra_colormaps));
|
memset(extra_colormaps, 0, sizeof (extra_colormaps));
|
||||||
}
|
}
|
||||||
|
|
||||||
INT32 R_ColormapNumForName(char *name)
|
/*INT32 R_ColormapNumForName(char *name)
|
||||||
{
|
{
|
||||||
lumpnum_t lump, i;
|
lumpnum_t lump, i;
|
||||||
|
|
||||||
|
@ -1092,7 +1125,7 @@ INT32 R_ColormapNumForName(char *name)
|
||||||
|
|
||||||
num_extra_colormaps++;
|
num_extra_colormaps++;
|
||||||
return (INT32)num_extra_colormaps - 1;
|
return (INT32)num_extra_colormaps - 1;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
//
|
//
|
||||||
// R_CreateColormap
|
// R_CreateColormap
|
||||||
|
@ -1121,10 +1154,20 @@ INT32 R_CreateColormap(char *p1, char *p2, char *p3)
|
||||||
if (p1[0] == '#')
|
if (p1[0] == '#')
|
||||||
{
|
{
|
||||||
cr = ((HEX2INT(p1[1]) * 16) + HEX2INT(p1[2]));
|
cr = ((HEX2INT(p1[1]) * 16) + HEX2INT(p1[2]));
|
||||||
cmaskr = cr;
|
|
||||||
cg = ((HEX2INT(p1[3]) * 16) + HEX2INT(p1[4]));
|
cg = ((HEX2INT(p1[3]) * 16) + HEX2INT(p1[4]));
|
||||||
cmaskg = cg;
|
|
||||||
cb = ((HEX2INT(p1[5]) * 16) + HEX2INT(p1[6]));
|
cb = ((HEX2INT(p1[5]) * 16) + HEX2INT(p1[6]));
|
||||||
|
|
||||||
|
if (encoremap)
|
||||||
|
{
|
||||||
|
i = encoremap[NearestColor((UINT8)cr, (UINT8)cg, (UINT8)cb)];
|
||||||
|
//CONS_Printf("R_CreateColormap: encoremap[%d] = %d\n", i, encoremap[i]); -- moved encoremap upwards for optimisation
|
||||||
|
cr = pLocalPalette[i].s.red;
|
||||||
|
cg = pLocalPalette[i].s.green;
|
||||||
|
cb = pLocalPalette[i].s.blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmaskr = cr;
|
||||||
|
cmaskg = cg;
|
||||||
cmaskb = cb;
|
cmaskb = cb;
|
||||||
// Create a rough approximation of the color (a 16 bit color)
|
// Create a rough approximation of the color (a 16 bit color)
|
||||||
maskcolor = ((cb) >> 3) + (((cg) >> 2) << 5) + (((cr) >> 3) << 11);
|
maskcolor = ((cb) >> 3) + (((cg) >> 2) << 5) + (((cr) >> 3) << 11);
|
||||||
|
@ -1167,9 +1210,21 @@ INT32 R_CreateColormap(char *p1, char *p2, char *p3)
|
||||||
|
|
||||||
if (p3[0] == '#')
|
if (p3[0] == '#')
|
||||||
{
|
{
|
||||||
cdestr = cr = ((HEX2INT(p3[1]) * 16) + HEX2INT(p3[2]));
|
cr = ((HEX2INT(p3[1]) * 16) + HEX2INT(p3[2]));
|
||||||
cdestg = cg = ((HEX2INT(p3[3]) * 16) + HEX2INT(p3[4]));
|
cg = ((HEX2INT(p3[3]) * 16) + HEX2INT(p3[4]));
|
||||||
cdestb = cb = ((HEX2INT(p3[5]) * 16) + HEX2INT(p3[6]));
|
cb = ((HEX2INT(p3[5]) * 16) + HEX2INT(p3[6]));
|
||||||
|
|
||||||
|
if (encoremap)
|
||||||
|
{
|
||||||
|
i = encoremap[NearestColor((UINT8)cr, (UINT8)cg, (UINT8)cb)];
|
||||||
|
cr = pLocalPalette[i].s.red;
|
||||||
|
cg = pLocalPalette[i].s.green;
|
||||||
|
cb = pLocalPalette[i].s.blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
cdestr = cr;
|
||||||
|
cdestg = cg;
|
||||||
|
cdestb = cb;
|
||||||
fadecolor = (((cb) >> 3) + (((cg) >> 2) << 5) + (((cr) >> 3) << 11));
|
fadecolor = (((cb) >> 3) + (((cg) >> 2) << 5) + (((cr) >> 3) << 11));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1252,15 +1307,25 @@ void R_MakeColormaps(void)
|
||||||
colormapFixingArray[i][2]);
|
colormapFixingArray[i][2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HASINVERT
|
||||||
|
void R_MakeInvertmap(void)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < 256; i++)
|
||||||
|
invertmap[i] = NearestColor(256 - pLocalPalette[i].s.red, 256 - pLocalPalette[i].s.green, 256 - pLocalPalette[i].s.blue);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void R_CreateColormap2(char *p1, char *p2, char *p3)
|
void R_CreateColormap2(char *p1, char *p2, char *p3)
|
||||||
{
|
{
|
||||||
double cmaskr, cmaskg, cmaskb, cdestr, cdestg, cdestb;
|
double cmaskr, cmaskg, cmaskb, cdestr, cdestg, cdestb;
|
||||||
double r, g, b, cbrightness;
|
double r, g, b, cbrightness;
|
||||||
double maskamt = 0, othermask = 0;
|
double maskamt = 0, othermask = 0;
|
||||||
int mask, p, fog = 0;
|
INT32 mask, p, fog = 0;
|
||||||
size_t mapnum = num_extra_colormaps;
|
size_t mapnum = num_extra_colormaps;
|
||||||
size_t i;
|
size_t i;
|
||||||
char *colormap_p;
|
lighttable_t *colormap_p, *colormap_p2;
|
||||||
UINT32 cr, cg, cb, maskcolor, fadecolor;
|
UINT32 cr, cg, cb, maskcolor, fadecolor;
|
||||||
UINT32 fadestart = 0, fadeend = 31, fadedist = 31;
|
UINT32 fadestart = 0, fadeend = 31, fadedist = 31;
|
||||||
|
|
||||||
|
@ -1268,10 +1333,19 @@ void R_CreateColormap2(char *p1, char *p2, char *p3)
|
||||||
if (p1[0] == '#')
|
if (p1[0] == '#')
|
||||||
{
|
{
|
||||||
cr = ((HEX2INT(p1[1]) * 16) + HEX2INT(p1[2]));
|
cr = ((HEX2INT(p1[1]) * 16) + HEX2INT(p1[2]));
|
||||||
cmaskr = cr;
|
|
||||||
cg = ((HEX2INT(p1[3]) * 16) + HEX2INT(p1[4]));
|
cg = ((HEX2INT(p1[3]) * 16) + HEX2INT(p1[4]));
|
||||||
cmaskg = cg;
|
|
||||||
cb = ((HEX2INT(p1[5]) * 16) + HEX2INT(p1[6]));
|
cb = ((HEX2INT(p1[5]) * 16) + HEX2INT(p1[6]));
|
||||||
|
|
||||||
|
if (encoremap)
|
||||||
|
{
|
||||||
|
i = encoremap[NearestColor((UINT8)cr, (UINT8)cg, (UINT8)cb)];
|
||||||
|
cr = pLocalPalette[i].s.red;
|
||||||
|
cg = pLocalPalette[i].s.green;
|
||||||
|
cb = pLocalPalette[i].s.blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmaskr = cr;
|
||||||
|
cmaskg = cg;
|
||||||
cmaskb = cb;
|
cmaskb = cb;
|
||||||
// Create a rough approximation of the color (a 16 bit color)
|
// Create a rough approximation of the color (a 16 bit color)
|
||||||
maskcolor = ((cb) >> 3) + (((cg) >> 2) << 5) + (((cr) >> 3) << 11);
|
maskcolor = ((cb) >> 3) + (((cg) >> 2) << 5) + (((cr) >> 3) << 11);
|
||||||
|
@ -1314,9 +1388,21 @@ void R_CreateColormap2(char *p1, char *p2, char *p3)
|
||||||
|
|
||||||
if (p3[0] == '#')
|
if (p3[0] == '#')
|
||||||
{
|
{
|
||||||
cdestr = cr = ((HEX2INT(p3[1]) * 16) + HEX2INT(p3[2]));
|
cr = ((HEX2INT(p3[1]) * 16) + HEX2INT(p3[2]));
|
||||||
cdestg = cg = ((HEX2INT(p3[3]) * 16) + HEX2INT(p3[4]));
|
cg = ((HEX2INT(p3[3]) * 16) + HEX2INT(p3[4]));
|
||||||
cdestb = cb = ((HEX2INT(p3[5]) * 16) + HEX2INT(p3[6]));
|
cb = ((HEX2INT(p3[5]) * 16) + HEX2INT(p3[6]));
|
||||||
|
|
||||||
|
if (encoremap)
|
||||||
|
{
|
||||||
|
i = encoremap[NearestColor((UINT8)cr, (UINT8)cg, (UINT8)cb)];
|
||||||
|
cr = pLocalPalette[i].s.red;
|
||||||
|
cg = pLocalPalette[i].s.green;
|
||||||
|
cb = pLocalPalette[i].s.blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
cdestr = cr;
|
||||||
|
cdestg = cg;
|
||||||
|
cdestb = cb;
|
||||||
fadecolor = (((cb) >> 3) + (((cg) >> 2) << 5) + (((cr) >> 3) << 11));
|
fadecolor = (((cb) >> 3) + (((cg) >> 2) << 5) + (((cr) >> 3) << 11));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1383,10 +1469,10 @@ void R_CreateColormap2(char *p1, char *p2, char *p3)
|
||||||
#define ABS2(x) ((x) < 0 ? -(x) : (x))
|
#define ABS2(x) ((x) < 0 ? -(x) : (x))
|
||||||
if (rendermode == render_soft)
|
if (rendermode == render_soft)
|
||||||
{
|
{
|
||||||
colormap_p = Z_MallocAlign((256 * 34) + 10, PU_LEVEL, NULL, 8);
|
colormap_p = Z_MallocAlign((256 * (encoremap ? 64 : 32)) + 10, PU_LEVEL, NULL, 8);
|
||||||
extra_colormaps[mapnum].colormap = (UINT8 *)colormap_p;
|
extra_colormaps[mapnum].colormap = (UINT8 *)colormap_p;
|
||||||
|
|
||||||
for (p = 0; p < 34; p++)
|
for (p = 0; p < 32; p++)
|
||||||
{
|
{
|
||||||
for (i = 0; i < 256; i++)
|
for (i = 0; i < 256; i++)
|
||||||
{
|
{
|
||||||
|
@ -1414,6 +1500,21 @@ void R_CreateColormap2(char *p1, char *p2, char *p3)
|
||||||
map[i][2] = cdestb;
|
map[i][2] = cdestb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!encoremap)
|
||||||
|
return;
|
||||||
|
|
||||||
|
colormap_p2 = extra_colormaps[mapnum].colormap;
|
||||||
|
|
||||||
|
for (p = 0; p < 32; p++)
|
||||||
|
{
|
||||||
|
for (i = 0; i < 256; i++)
|
||||||
|
{
|
||||||
|
*colormap_p = colormap_p2[encoremap[i]];
|
||||||
|
colormap_p++;
|
||||||
|
}
|
||||||
|
colormap_p2 += 256;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#undef ABS2
|
#undef ABS2
|
||||||
|
|
||||||
|
|
|
@ -89,12 +89,15 @@ void R_ClearTextureNumCache(boolean btell);
|
||||||
INT32 R_TextureNumForName(const char *name);
|
INT32 R_TextureNumForName(const char *name);
|
||||||
INT32 R_CheckTextureNumForName(const char *name);
|
INT32 R_CheckTextureNumForName(const char *name);
|
||||||
|
|
||||||
void R_ReInitColormaps(UINT16 num);
|
void R_ReInitColormaps(UINT16 num, lumpnum_t newencoremap);
|
||||||
void R_ClearColormaps(void);
|
void R_ClearColormaps(void);
|
||||||
INT32 R_ColormapNumForName(char *name);
|
INT32 R_ColormapNumForName(char *name);
|
||||||
INT32 R_CreateColormap(char *p1, char *p2, char *p3);
|
INT32 R_CreateColormap(char *p1, char *p2, char *p3);
|
||||||
void R_CreateColormap2(char *p1, char *p2, char *p3);
|
void R_CreateColormap2(char *p1, char *p2, char *p3);
|
||||||
void R_MakeColormaps(void);
|
void R_MakeColormaps(void);
|
||||||
|
#ifdef HASINVERT
|
||||||
|
void R_MakeInvertmap(void);
|
||||||
|
#endif
|
||||||
const char *R_ColormapNameForNum(INT32 num);
|
const char *R_ColormapNameForNum(INT32 num);
|
||||||
|
|
||||||
extern INT32 numtextures;
|
extern INT32 numtextures;
|
||||||
|
|
|
@ -1375,6 +1375,8 @@ void R_DrawColumnShadowed_8(void)
|
||||||
if (height <= dc_yl)
|
if (height <= dc_yl)
|
||||||
{
|
{
|
||||||
dc_colormap = dc_lightlist[i].rcolormap;
|
dc_colormap = dc_lightlist[i].rcolormap;
|
||||||
|
if (encoremap)
|
||||||
|
dc_colormap += (256*32);
|
||||||
if (solid && dc_yl < bheight)
|
if (solid && dc_yl < bheight)
|
||||||
dc_yl = bheight;
|
dc_yl = bheight;
|
||||||
continue;
|
continue;
|
||||||
|
@ -1391,6 +1393,8 @@ void R_DrawColumnShadowed_8(void)
|
||||||
dc_yl = dc_yh + 1;
|
dc_yl = dc_yh + 1;
|
||||||
|
|
||||||
dc_colormap = dc_lightlist[i].rcolormap;
|
dc_colormap = dc_lightlist[i].rcolormap;
|
||||||
|
if (encoremap)
|
||||||
|
dc_colormap += (256*32);
|
||||||
}
|
}
|
||||||
dc_yh = realyh;
|
dc_yh = realyh;
|
||||||
if (dc_yl <= realyh)
|
if (dc_yl <= realyh)
|
||||||
|
|
|
@ -338,6 +338,8 @@ void R_MapPlane(INT32 y, INT32 x1, INT32 x2)
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
ds_colormap = planezlight[pindex];
|
ds_colormap = planezlight[pindex];
|
||||||
|
if (encoremap && !currentplane->noencore)
|
||||||
|
ds_colormap += (256*32);
|
||||||
|
|
||||||
if (currentplane->extra_colormap)
|
if (currentplane->extra_colormap)
|
||||||
ds_colormap = currentplane->extra_colormap->colormap + (ds_colormap - colormaps);
|
ds_colormap = currentplane->extra_colormap->colormap + (ds_colormap - colormaps);
|
||||||
|
@ -440,7 +442,7 @@ visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel,
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
, pslope_t *slope
|
, pslope_t *slope
|
||||||
#endif
|
#endif
|
||||||
)
|
, boolean noencore)
|
||||||
{
|
{
|
||||||
visplane_t *check;
|
visplane_t *check;
|
||||||
unsigned hash;
|
unsigned hash;
|
||||||
|
@ -489,7 +491,7 @@ visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel,
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
&& check->slope == slope
|
&& check->slope == slope
|
||||||
#endif
|
#endif
|
||||||
)
|
&& check->noencore == noencore)
|
||||||
{
|
{
|
||||||
return check;
|
return check;
|
||||||
}
|
}
|
||||||
|
@ -517,6 +519,7 @@ visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel,
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
check->slope = slope;
|
check->slope = slope;
|
||||||
#endif
|
#endif
|
||||||
|
check->noencore = noencore;
|
||||||
|
|
||||||
memset(check->top, 0xff, sizeof (check->top));
|
memset(check->top, 0xff, sizeof (check->top));
|
||||||
memset(check->bottom, 0x00, sizeof (check->bottom));
|
memset(check->bottom, 0x00, sizeof (check->bottom));
|
||||||
|
@ -589,6 +592,7 @@ visplane_t *R_CheckPlane(visplane_t *pl, INT32 start, INT32 stop)
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
new_pl->slope = pl->slope;
|
new_pl->slope = pl->slope;
|
||||||
#endif
|
#endif
|
||||||
|
new_pl->noencore = pl->noencore;
|
||||||
pl = new_pl;
|
pl = new_pl;
|
||||||
pl->minx = start;
|
pl->minx = start;
|
||||||
pl->maxx = stop;
|
pl->maxx = stop;
|
||||||
|
@ -706,6 +710,8 @@ void R_DrawPlanes(void)
|
||||||
// Because of this hack, sky is not affected
|
// Because of this hack, sky is not affected
|
||||||
// by INVUL inverse mapping.
|
// by INVUL inverse mapping.
|
||||||
dc_colormap = colormaps;
|
dc_colormap = colormaps;
|
||||||
|
if (encoremap)
|
||||||
|
dc_colormap += (256*32);
|
||||||
dc_texturemid = skytexturemid;
|
dc_texturemid = skytexturemid;
|
||||||
dc_texheight = textureheight[skytexture]
|
dc_texheight = textureheight[skytexture]
|
||||||
>>FRACBITS;
|
>>FRACBITS;
|
||||||
|
|
|
@ -65,6 +65,8 @@ typedef struct visplane_s
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
pslope_t *slope;
|
pslope_t *slope;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
boolean noencore;
|
||||||
} visplane_t;
|
} visplane_t;
|
||||||
|
|
||||||
extern visplane_t *floorplane;
|
extern visplane_t *floorplane;
|
||||||
|
@ -103,7 +105,7 @@ visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel, fixed_t
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
, pslope_t *slope
|
, pslope_t *slope
|
||||||
#endif
|
#endif
|
||||||
);
|
, boolean noencore);
|
||||||
visplane_t *R_CheckPlane(visplane_t *pl, INT32 start, INT32 stop);
|
visplane_t *R_CheckPlane(visplane_t *pl, INT32 start, INT32 stop);
|
||||||
void R_ExpandPlane(visplane_t *pl, INT32 start, INT32 stop);
|
void R_ExpandPlane(visplane_t *pl, INT32 start, INT32 stop);
|
||||||
void R_PlaneBounds(visplane_t *plane);
|
void R_PlaneBounds(visplane_t *plane);
|
||||||
|
|
20
src/r_segs.c
20
src/r_segs.c
|
@ -202,6 +202,8 @@ static void R_DrawWallSplats(void)
|
||||||
if (pindex >= MAXLIGHTSCALE)
|
if (pindex >= MAXLIGHTSCALE)
|
||||||
pindex = MAXLIGHTSCALE - 1;
|
pindex = MAXLIGHTSCALE - 1;
|
||||||
dc_colormap = walllights[pindex];
|
dc_colormap = walllights[pindex];
|
||||||
|
if (encoremap && !(seg->linedef->flags & ML_TFERLINE))
|
||||||
|
dc_colormap += (256*32);
|
||||||
|
|
||||||
if (frontsector->extra_colormap)
|
if (frontsector->extra_colormap)
|
||||||
dc_colormap = frontsector->extra_colormap->colormap + (dc_colormap - colormaps);
|
dc_colormap = frontsector->extra_colormap->colormap + (dc_colormap - colormaps);
|
||||||
|
@ -596,6 +598,8 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2)
|
||||||
if (height <= windowtop)
|
if (height <= windowtop)
|
||||||
{
|
{
|
||||||
dc_colormap = rlight->rcolormap;
|
dc_colormap = rlight->rcolormap;
|
||||||
|
if (encoremap && !(ldef->flags & ML_TFERLINE))
|
||||||
|
dc_colormap += (256*32);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -615,6 +619,8 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2)
|
||||||
colfunc_2s(col);
|
colfunc_2s(col);
|
||||||
windowtop = windowbottom + 1;
|
windowtop = windowbottom + 1;
|
||||||
dc_colormap = rlight->rcolormap;
|
dc_colormap = rlight->rcolormap;
|
||||||
|
if (encoremap && !(ldef->flags & ML_TFERLINE))
|
||||||
|
dc_colormap += (256*32);
|
||||||
}
|
}
|
||||||
windowbottom = realbot;
|
windowbottom = realbot;
|
||||||
if (windowtop < windowbottom)
|
if (windowtop < windowbottom)
|
||||||
|
@ -631,6 +637,8 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2)
|
||||||
pindex = MAXLIGHTSCALE - 1;
|
pindex = MAXLIGHTSCALE - 1;
|
||||||
|
|
||||||
dc_colormap = walllights[pindex];
|
dc_colormap = walllights[pindex];
|
||||||
|
if (encoremap && !(ldef->flags & ML_TFERLINE))
|
||||||
|
dc_colormap += (256*32);
|
||||||
|
|
||||||
if (frontsector->extra_colormap)
|
if (frontsector->extra_colormap)
|
||||||
dc_colormap = frontsector->extra_colormap->colormap + (dc_colormap - colormaps);
|
dc_colormap = frontsector->extra_colormap->colormap + (dc_colormap - colormaps);
|
||||||
|
@ -1210,7 +1218,11 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
||||||
if (height <= windowtop)
|
if (height <= windowtop)
|
||||||
{
|
{
|
||||||
if (lighteffect)
|
if (lighteffect)
|
||||||
|
{
|
||||||
dc_colormap = rlight->rcolormap;
|
dc_colormap = rlight->rcolormap;
|
||||||
|
if (encoremap && !(curline->linedef->flags & ML_TFERLINE))
|
||||||
|
dc_colormap += (256*32);
|
||||||
|
}
|
||||||
if (solid && windowtop < bheight)
|
if (solid && windowtop < bheight)
|
||||||
windowtop = bheight;
|
windowtop = bheight;
|
||||||
continue;
|
continue;
|
||||||
|
@ -1236,7 +1248,11 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
||||||
else
|
else
|
||||||
windowtop = windowbottom + 1;
|
windowtop = windowbottom + 1;
|
||||||
if (lighteffect)
|
if (lighteffect)
|
||||||
|
{
|
||||||
dc_colormap = rlight->rcolormap;
|
dc_colormap = rlight->rcolormap;
|
||||||
|
if (encoremap && !(curline->linedef->flags & ML_TFERLINE))
|
||||||
|
dc_colormap += (256*32);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
windowbottom = sprbotscreen;
|
windowbottom = sprbotscreen;
|
||||||
if (windowtop < windowbottom)
|
if (windowtop < windowbottom)
|
||||||
|
@ -1253,6 +1269,8 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
||||||
pindex = MAXLIGHTSCALE - 1;
|
pindex = MAXLIGHTSCALE - 1;
|
||||||
|
|
||||||
dc_colormap = walllights[pindex];
|
dc_colormap = walllights[pindex];
|
||||||
|
if (encoremap && !(curline->linedef->flags & ML_TFERLINE))
|
||||||
|
dc_colormap += (256*32);
|
||||||
if (frontsector->extra_colormap)
|
if (frontsector->extra_colormap)
|
||||||
dc_colormap = frontsector->extra_colormap->colormap + (dc_colormap - colormaps);
|
dc_colormap = frontsector->extra_colormap->colormap + (dc_colormap - colormaps);
|
||||||
if (pfloor->flags & FF_FOG && pfloor->master->frontsector->extra_colormap)
|
if (pfloor->flags & FF_FOG && pfloor->master->frontsector->extra_colormap)
|
||||||
|
@ -1483,6 +1501,8 @@ static void R_RenderSegLoop (void)
|
||||||
pindex = MAXLIGHTSCALE-1;
|
pindex = MAXLIGHTSCALE-1;
|
||||||
|
|
||||||
dc_colormap = walllights[pindex];
|
dc_colormap = walllights[pindex];
|
||||||
|
if (encoremap && !(curline->linedef->flags & ML_TFERLINE))
|
||||||
|
dc_colormap += (256*32);
|
||||||
dc_x = rw_x;
|
dc_x = rw_x;
|
||||||
dc_iscale = 0xffffffffu / (unsigned)rw_scale;
|
dc_iscale = 0xffffffffu / (unsigned)rw_scale;
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,10 @@ typedef struct
|
||||||
extern sprcache_t *spritecachedinfo;
|
extern sprcache_t *spritecachedinfo;
|
||||||
|
|
||||||
extern lighttable_t *colormaps;
|
extern lighttable_t *colormaps;
|
||||||
|
extern UINT8 *encoremap;
|
||||||
|
#ifdef HASINVERT
|
||||||
|
extern UINT8 invertmap[256];
|
||||||
|
#endif
|
||||||
|
|
||||||
// Boom colormaps.
|
// Boom colormaps.
|
||||||
// Had to put a limit on colormaps :(
|
// Had to put a limit on colormaps :(
|
||||||
|
|
|
@ -873,6 +873,9 @@ static void R_DrawVisSprite(vissprite_t *vis)
|
||||||
if (!dc_colormap)
|
if (!dc_colormap)
|
||||||
dc_colormap = colormaps;
|
dc_colormap = colormaps;
|
||||||
|
|
||||||
|
if (encoremap && !vis->mobj->color && !(vis->mobj->flags & MF_DONTENCOREMAP))
|
||||||
|
dc_colormap += (256*32);
|
||||||
|
|
||||||
dc_texturemid = vis->texturemid;
|
dc_texturemid = vis->texturemid;
|
||||||
dc_texheight = 0;
|
dc_texheight = 0;
|
||||||
|
|
||||||
|
@ -977,6 +980,8 @@ static void R_DrawPrecipitationVisSprite(vissprite_t *vis)
|
||||||
}
|
}
|
||||||
|
|
||||||
dc_colormap = colormaps;
|
dc_colormap = colormaps;
|
||||||
|
if (encoremap)
|
||||||
|
dc_colormap += (256*32);
|
||||||
|
|
||||||
dc_iscale = FixedDiv(FRACUNIT, vis->scale);
|
dc_iscale = FixedDiv(FRACUNIT, vis->scale);
|
||||||
dc_texturemid = vis->texturemid;
|
dc_texturemid = vis->texturemid;
|
||||||
|
|
|
@ -391,7 +391,7 @@ void S_StartSoundAtVolume(const void *origin_p, sfxenum_t sfx_id, INT32 volume)
|
||||||
{
|
{
|
||||||
INT32 sep, pitch, priority, cnum;
|
INT32 sep, pitch, priority, cnum;
|
||||||
sfxinfo_t *sfx;
|
sfxinfo_t *sfx;
|
||||||
const boolean reverse = (stereoreverse.value ^ mirrormode);
|
const boolean reverse = (stereoreverse.value ^ encoremode);
|
||||||
const mobj_t *origin = (const mobj_t *)origin_p;
|
const mobj_t *origin = (const mobj_t *)origin_p;
|
||||||
|
|
||||||
listener_t listener = {0,0,0,0};
|
listener_t listener = {0,0,0,0};
|
||||||
|
@ -1198,7 +1198,7 @@ INT32 S_AdjustSoundParams(const mobj_t *listener, const mobj_t *source, INT32 *v
|
||||||
|
|
||||||
listener_t listensource;
|
listener_t listensource;
|
||||||
|
|
||||||
const boolean reverse = (stereoreverse.value ^ mirrormode);
|
const boolean reverse = (stereoreverse.value ^ encoremode);
|
||||||
|
|
||||||
(void)pitch;
|
(void)pitch;
|
||||||
if (!listener)
|
if (!listener)
|
||||||
|
|
|
@ -1,213 +1,100 @@
|
||||||
/* XPM */
|
/* XPM */
|
||||||
static const char *SDL_icon_xpm[] = {
|
static const char *SDL_icon_xpm[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"32 32 175 2 ",
|
"64 64 32 1",
|
||||||
" c None",
|
" c None",
|
||||||
". c #2E2E2E",
|
". c #E7E7E7",
|
||||||
"X c #3C3C3C",
|
"+ c #DFDFDF",
|
||||||
"o c #493939",
|
"@ c #AFAFAF",
|
||||||
"O c #4E473F",
|
"# c #979797",
|
||||||
"+ c #161658",
|
"$ c #8F8F8F",
|
||||||
"@ c #131369",
|
"% c #B7B7B7",
|
||||||
"# c #06067B",
|
"& c #F7F7F7",
|
||||||
"$ c #111173",
|
"* c #D7D7D7",
|
||||||
"% c #16167F",
|
"= c #4F4F4F",
|
||||||
"& c #252567",
|
"- c #0F0F0F",
|
||||||
"* c #372B7C",
|
"; c #070707",
|
||||||
"= c #3D3679",
|
"> c #575757",
|
||||||
"- c #41414A",
|
", c #C7C7C7",
|
||||||
"; c #575655",
|
"' c #676767",
|
||||||
": c #6A5841",
|
") c #7F7F7F",
|
||||||
"> c #5B4B72",
|
"! c #5F5F5F",
|
||||||
", c #616160",
|
"~ c #777777",
|
||||||
"< c #7B7B7B",
|
"{ c #474747",
|
||||||
"1 c #906E49",
|
"] c #878787",
|
||||||
"2 c #89685D",
|
"^ c #6F6F6F",
|
||||||
"3 c #A67B4A",
|
"/ c #BFBFBF",
|
||||||
"4 c #AA7F50",
|
"( c #373737",
|
||||||
"5 c #9B7560",
|
"_ c #1F1F1F",
|
||||||
"6 c #856C78",
|
": c #272727",
|
||||||
"7 c #997B7D",
|
"< c #2F2F2F",
|
||||||
"8 c #B48552",
|
"[ c #3F3F3F",
|
||||||
"9 c #BA8A55",
|
"} c #EFEFEF",
|
||||||
"0 c #A48665",
|
"| c #A7A7A7",
|
||||||
"q c #B98F67",
|
"1 c #9F9F9F",
|
||||||
"w c #B9946A",
|
"2 c #171717",
|
||||||
"e c #B7937A",
|
"3 c #CFCFCF",
|
||||||
"r c #C8955C",
|
|
||||||
"t c #CA9966",
|
|
||||||
"y c #DAA469",
|
|
||||||
"u c #C9A37B",
|
|
||||||
"i c #D7AB7B",
|
|
||||||
"p c #DFB07D",
|
|
||||||
"a c #EBAE6A",
|
|
||||||
"s c #E5B27A",
|
|
||||||
"d c #F1B779",
|
|
||||||
"f c #0A0A83",
|
|
||||||
"g c #05058B",
|
|
||||||
"h c #060687",
|
|
||||||
"j c #101089",
|
|
||||||
"k c #131382",
|
|
||||||
"l c #040494",
|
|
||||||
"z c #02029D",
|
|
||||||
"x c #0C0B9C",
|
|
||||||
"c c #120F9E",
|
|
||||||
"v c #19199B",
|
|
||||||
"b c #382D84",
|
|
||||||
"n c #39398D",
|
|
||||||
"m c #222296",
|
|
||||||
"M c #0101A6",
|
|
||||||
"N c #0A0AA2",
|
|
||||||
"B c #0202AC",
|
|
||||||
"V c #1919A2",
|
|
||||||
"C c #1616AD",
|
|
||||||
"Z c #0000B5",
|
|
||||||
"A c #0202BC",
|
|
||||||
"S c #0C0CB6",
|
|
||||||
"D c #1313B3",
|
|
||||||
"F c #1011BD",
|
|
||||||
"G c #1B1BBE",
|
|
||||||
"H c #2B2BAC",
|
|
||||||
"J c #3737A1",
|
|
||||||
"K c #2A26BE",
|
|
||||||
"L c #2A29B4",
|
|
||||||
"P c #3B3BB8",
|
|
||||||
"I c #48478B",
|
|
||||||
"U c #57578A",
|
|
||||||
"Y c #4A499A",
|
|
||||||
"T c #524F95",
|
|
||||||
"R c #565399",
|
|
||||||
"E c #4C4CA8",
|
|
||||||
"W c #524DA7",
|
|
||||||
"Q c #5353A4",
|
|
||||||
"! c #5555A9",
|
|
||||||
"~ c #5555B4",
|
|
||||||
"^ c #5656B7",
|
|
||||||
"/ c #6464A6",
|
|
||||||
"( c #6F67B5",
|
|
||||||
") c #0404C3",
|
|
||||||
"_ c #0707CA",
|
|
||||||
"` c #1414CB",
|
|
||||||
"' c #1A1AC6",
|
|
||||||
"] c #0A0AD3",
|
|
||||||
"[ c #0D0DDC",
|
|
||||||
"{ c #1A1AD4",
|
|
||||||
"} c #1010DF",
|
|
||||||
"| c #1E1EDE",
|
|
||||||
" . c #1817DE",
|
|
||||||
".. c #221FCA",
|
|
||||||
"X. c #2B2BCC",
|
|
||||||
"o. c #2727C9",
|
|
||||||
"O. c #3434C3",
|
|
||||||
"+. c #3434D4",
|
|
||||||
"@. c #0F0FE2",
|
|
||||||
"#. c #1313E5",
|
|
||||||
"$. c #1515ED",
|
|
||||||
"%. c #1B1BEA",
|
|
||||||
"&. c #1C1CE4",
|
|
||||||
"*. c #1515F4",
|
|
||||||
"=. c #1818F3",
|
|
||||||
"-. c #1717FD",
|
|
||||||
";. c #1818FF",
|
|
||||||
":. c #2B2BE9",
|
|
||||||
">. c #2424FF",
|
|
||||||
",. c #2A2AFF",
|
|
||||||
"<. c #2222F1",
|
|
||||||
"1. c #3737FF",
|
|
||||||
"2. c #5D5DC3",
|
|
||||||
"3. c #5F5FC9",
|
|
||||||
"4. c #5655C2",
|
|
||||||
"5. c #4747D1",
|
|
||||||
"6. c #5B5BD4",
|
|
||||||
"7. c #6565C8",
|
|
||||||
"8. c #6363DA",
|
|
||||||
"9. c #4545FF",
|
|
||||||
"0. c #4D4DFC",
|
|
||||||
"q. c #5454FF",
|
|
||||||
"w. c #5959FF",
|
|
||||||
"e. c #6969E5",
|
|
||||||
"r. c #6B6CEA",
|
|
||||||
"t. c #6666E7",
|
|
||||||
"y. c #6B6BFE",
|
|
||||||
"u. c #6767F8",
|
|
||||||
"i. c #7070F6",
|
|
||||||
"p. c #7373FF",
|
|
||||||
"a. c #7C7CFF",
|
|
||||||
"s. c #91918F",
|
|
||||||
"d. c #8F9090",
|
|
||||||
"f. c #979797",
|
|
||||||
"g. c #9C9C9C",
|
|
||||||
"h. c #8585A1",
|
|
||||||
"j. c #9C9CA7",
|
|
||||||
"k. c #9292B6",
|
|
||||||
"l. c #A4A4A4",
|
|
||||||
"z. c #BDB2A4",
|
|
||||||
"x. c #A4A4B1",
|
|
||||||
"c. c #BFBFBD",
|
|
||||||
"v. c #BABAB7",
|
|
||||||
"b. c #C8AA87",
|
|
||||||
"n. c #DAAE82",
|
|
||||||
"m. c #DBB081",
|
|
||||||
"M. c #EBBA85",
|
|
||||||
"N. c #F3BF84",
|
|
||||||
"B. c #F2BE88",
|
|
||||||
"V. c #C2B3A3",
|
|
||||||
"C. c #FBC386",
|
|
||||||
"Z. c #FCC68C",
|
|
||||||
"A. c #FFC88F",
|
|
||||||
"S. c #F4C387",
|
|
||||||
"D. c #FFC990",
|
|
||||||
"F. c #C3C1BF",
|
|
||||||
"G. c #8F8FCB",
|
|
||||||
"H. c #BDBDC2",
|
|
||||||
"J. c #BDBDD1",
|
|
||||||
"K. c #8888F9",
|
|
||||||
"L. c #A4A4FB",
|
|
||||||
"P. c #CDCDCC",
|
|
||||||
"I. c #CECAC6",
|
|
||||||
"U. c #D3CFCA",
|
|
||||||
"Y. c #D3D0CC",
|
|
||||||
"T. c #C0C0D5",
|
|
||||||
"R. c #D6D5D4",
|
|
||||||
"E. c #D7D7DD",
|
|
||||||
"W. c #E1E1DF",
|
|
||||||
"Q. c #DEDEE1",
|
|
||||||
"!. c #E4E4E4",
|
|
||||||
"~. c #E8E8E8",
|
|
||||||
"^. c #F0F0EE",
|
|
||||||
"/. c #F5F5F2",
|
|
||||||
"(. c #FFFFFF",
|
|
||||||
/* pixels */
|
|
||||||
" ",
|
" ",
|
||||||
" ",
|
" .................... ",
|
||||||
" ",
|
" ...+@##$$$$###@%&....... ",
|
||||||
" I Q T = ",
|
" ..*=-;;;-;;;;;;;;@........ ",
|
||||||
" Q 7.e.r.i.8.E E 3.r.6.J ",
|
" ..+-;;;;--;;;;;;;>.......... ",
|
||||||
" H ~ n 4.r.p.p.p.p.8.R > 5.^ w.,.-.{ v ",
|
" ...,')!!'~>{!)$)>'....*]>^%&.. ",
|
||||||
" { 9.^ & P t.p.p.p.p.p.8.I 5 q K L <.;.;.;.-.' ",
|
" ../(__(>:{<)$![[[%&...^!!!!!~*. ",
|
||||||
" { %.H +.y.p.p.p.p.p.e.Y 2 a n.K F $.*.$.@.} ] N ",
|
" ..@;;;;;({=]:;;;;;~..*_;;;;;;;_.. ",
|
||||||
" x D :.y.p.p.p.p.p.p.r.R 8 C.u ..F A ) A Z M h $ ",
|
" .}>;;;;;^#=;;;;;;>...<;;;;;;;;;|.. ",
|
||||||
" f =.q.p.p.p.p.p.p.p.p.i.( e 6 $.` l B M g ",
|
" ..*1)))))%]))))))%&..1])))))))))#}. ",
|
||||||
" ` ;.q.p.p.p.p.p.a.K.a.p.p.4.L -.` l N % ",
|
" ..%[;;;;;[2;;;;;;;:..#;;;2[[-;;;;;=.. ",
|
||||||
" V =.-.>.q.y.p.p.p.L.L.K.i.w.,.-.;.$.<.q.u.2. ",
|
" .&:;[{;;;{;;;~={:;^.._;;'}...>;;;;;,. ",
|
||||||
" D { =.-.;.>.1.1.9.( h.h.Q &.-.-.-.;.9.p.p.p.r.! ",
|
" .}<;;:{;_:2!'-;;;]*.&(_].|{=@.~___[/.. ",
|
||||||
" U j.o.-.;.-.;.-.P x.Q.^.R.~ *.-.;.;.>.1.q.y.p.i.2. ",
|
" ..*$))]@%//,111111}..|1*.@1111@.3111|&. ",
|
||||||
" H./.! *.;.;.;.o.x./.(.(.(.J.| -.-.;.-.-.;.,.9.u.p.7. ",
|
" .,:;;;;;'#^;;;;;;;]./;;+);;;;;;$*;;;;.. ",
|
||||||
" !.(.k.#.;.-.=./ !.(.(.(.(.Q.X.-.;.;.;.;.-.-.;.;.1.w.6. ",
|
" .^;;;;;;));;;;;;;;$.~;$*;;;;;;;-+^;;;#. ",
|
||||||
" ~.(.H.G ;.-.D j.(.(.(.(.(.!.O.-.-.;.;.;.-.;.-.;.-.;.,.O. ",
|
" ..$;;;;;;>;;;;;;;;>}.^-.!;;;;;;;;)*:;;|. ",
|
||||||
" ~.(.v.@ *.$.+ d.(.(.(.(.(.E.o.-.-.;.;.-.;.;.;.*.=.=.*.$.v ",
|
" .&@$|#)))|)))1||#]+..$/}]))))))))$.3))#.. ",
|
||||||
" ~.(.l.- Y T ; < (.(.(.(.(.J.&.-.;.;.$.@.[ ] _ ) ) Z B B f ",
|
" .#;;;[{;->;-^[;;;;].~;@];;;;;;;;;;1#;;-}. ",
|
||||||
" P.(.F.X c.I.X f.(.(.(.(.(.G.=.-.=.] A Z Z Z Z z f $ ",
|
" .{;;;;{<[:(~-;;;;;$.(-.<;;;;;;;;;;{};;;3. ",
|
||||||
" l.!.R.s.F.I.g.W.(.(.(.(.R.E .[ A Z Z Z B g $ ",
|
" ..);;;;;~~[!;;;;;;-/.>=.>;;;;;;;;;;2}^;:3. ",
|
||||||
" . , ; - 0 M.b.V.U.R.Y.z.u n.7 c Z Z B g # + ",
|
" .&#)))))$}@)))))))@.}]3.*))))))))))).,)).. ",
|
||||||
" : w p Z.D.A.S.p u i M.A.A.S.* Z B h z ] C ",
|
" .3;;;;;;;);;;;;;;;2+|;%.';;;;;;;;;;;]1;;1. ",
|
||||||
" s D.D.A.A.A.A.A.A.A.i B.B.b A Z Z @.-.` ",
|
" .1_(:;;;;{;;;[=[:;;.];}.);;;;;;;;;;;=,;;]. ",
|
||||||
" 1 y C.D.A.A.A.A.A.M.u Z.e c A Z Z [ ;.&. ",
|
" .%2-(!2;2{;_':;;;;).1;..+:;;;;;;;;;;_.;;1. ",
|
||||||
" 8 y d C.A.A.A.C.B.t * B Z Z Z A #.=.m ",
|
" .+))))@1$1#@))))))3.,@...1))))))))))].1#3. ",
|
||||||
" 3 9 r t r 9 8 o @ $ # f j l B #.V ",
|
" .{;;;;;^<>);;;;;;;-.[). .-;;;;;;;;;;;3{;#. ",
|
||||||
" j k ",
|
" ._;;;;;-~];;;;;;;;;};#. ._;;;;;;;;;;;/^;#. ",
|
||||||
" ",
|
" .$'!!!!!1]!!!!!!!!%}[,. .'[[[[[[[[[[[,|>}. ",
|
||||||
" ",
|
" ..'{::___!{___:(>___:[@...~[[[[[[[[[[[1#{,. ",
|
||||||
" ",
|
" .+;-<=(;;[:;;(=-;;;;;;;;;;;;;;;;;;;;;;;;;). ",
|
||||||
" "
|
" .*;;;;[=;[_;{(;;;;;;;;;;;;;;;;;;;;;;;;;;-#. ",
|
||||||
};
|
" .&)!!!!)$]~)$!!!!!!!!!!!!!!!!!!!!!!!!!!!^+. ",
|
||||||
|
" .&(_____!$)!____________________________<3. ",
|
||||||
|
" .%;;;;;;;@|;;;;;;;;;;;;==))))))))))))))]*&. ",
|
||||||
|
" .*22;;;;;({;;;;;_-;;;;%.&.................. ",
|
||||||
|
" .&+~#]!!!~]!=[!^>[[[[{}... ",
|
||||||
|
" ../__:^^:(!_[$>[[[[[[{+. ",
|
||||||
|
" .<;;;;<^2{;'2;;;;;;;;]. ",
|
||||||
|
" .;;;;;;:~=>:;;;;;;;;;]. ",
|
||||||
|
" .@!!!!!!]3|!!!!!!!!!!*. ",
|
||||||
|
" .#_______#_____:<____~.. ",
|
||||||
|
" .^_{[_;;;=2;;;<<-;;;;;,.................. ",
|
||||||
|
" .@<;;{~2;_>;;((;;;;;;;3,-----------|.$-!. ",
|
||||||
|
" ..@))))|@)|)$|)))))))#}&/))))))))))}./)/. ",
|
||||||
|
" .&:;;;;;=>>;^;;;;;;;;;_.[;;;;;;;;;;^.{;|. ",
|
||||||
|
" ..2;;;;;;{#<[;;;;;;;;;;+';;;;;;;;;;~*;;.. ",
|
||||||
|
" .^;;;;;;;'%;;;;;;;;;;{&}#;;;;;;;;[+|;-.. ",
|
||||||
|
" .&3$1$))))%))))1]))))]+&}$))))))@&./)@. ",
|
||||||
|
" ..(;_<'{;;(-;;[2;;;;;;-@3;;;;;;;_}};;~. ",
|
||||||
|
" .=;;;;:~<-(;-[;;;;;;;;:.=;;;;;;>.!;;,. ",
|
||||||
|
" ./:;;;;;!!!;=-;;;;;;;;>.+$;;;;[.&_;=.. ",
|
||||||
|
" ..&|)))))$,|%)))))))))]1&.|]]@&.|]]}. ",
|
||||||
|
" .&;;;;;;;:@=;;;;;;;;;;;-/....3:;;;}. ",
|
||||||
|
" ..!;;;;;;;([;;;;_2;;;;;;;>)){;;;;^.. ",
|
||||||
|
" ..=2_:-;;;(;;;2<;;;;;;;;;;;;;;-).. ",
|
||||||
|
" ...%$#@%#)#))|))))))))))))))|}&. ",
|
||||||
|
" ..!;;;2!]{_-[;;;;;;;;;;;;;;;&.. ",
|
||||||
|
" ..^-;;;;^)(:;;;;;;;;;;;;;;'.. ",
|
||||||
|
" ..*'-;;;:]-;;;;;;;;;;;;-$.. ",
|
||||||
|
" ....}./1))))))))))))]/... ",
|
||||||
|
" ........}3||1#$$$]1... ",
|
||||||
|
" ................... ",
|
||||||
|
" "};
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 364 KiB After Width: | Height: | Size: 81 KiB |
Binary file not shown.
Before Width: | Height: | Size: 364 KiB After Width: | Height: | Size: 81 KiB |
|
@ -810,11 +810,14 @@ sfxinfo_t S_sfx[NUMSFX] =
|
||||||
{"yeeeah", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"yeeeah", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"noooo1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"noooo1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"noooo2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"noooo2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
|
{"ruby1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
|
{"ruby2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"hogbom", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"hogbom", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"kpogos", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"kpogos", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"ddash", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"ddash", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"mcitm1", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"mcitm1", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"chaooo", false, 110, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"chaooo", false, 110, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
|
{"itfree", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"dbgsal", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"dbgsal", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
|
|
||||||
// SRB2kart - Skin sounds
|
// SRB2kart - Skin sounds
|
||||||
|
|
|
@ -882,11 +882,14 @@ typedef enum
|
||||||
sfx_yeeeah,
|
sfx_yeeeah,
|
||||||
sfx_noooo1,
|
sfx_noooo1,
|
||||||
sfx_noooo2,
|
sfx_noooo2,
|
||||||
|
sfx_ruby1,
|
||||||
|
sfx_ruby2,
|
||||||
sfx_hogbom,
|
sfx_hogbom,
|
||||||
sfx_kpogos,
|
sfx_kpogos,
|
||||||
sfx_ddash,
|
sfx_ddash,
|
||||||
sfx_mcitm1,
|
sfx_mcitm1,
|
||||||
sfx_chaooo,
|
sfx_chaooo,
|
||||||
|
sfx_itfree,
|
||||||
sfx_dbgsal,
|
sfx_dbgsal,
|
||||||
|
|
||||||
sfx_kwin,
|
sfx_kwin,
|
||||||
|
|
|
@ -770,7 +770,7 @@ static void ST_drawLevelTitle(void)
|
||||||
|
|
||||||
lvlw = V_LevelNameWidth(lvlttl);
|
lvlw = V_LevelNameWidth(lvlttl);
|
||||||
|
|
||||||
if (strlen(actnum) > 0)
|
if (actnum[0])
|
||||||
lvlttlxpos = ((BASEVIDWIDTH/2) - (lvlw/2)) - V_LevelNameWidth(actnum);
|
lvlttlxpos = ((BASEVIDWIDTH/2) - (lvlw/2)) - V_LevelNameWidth(actnum);
|
||||||
else
|
else
|
||||||
lvlttlxpos = ((BASEVIDWIDTH/2) - (lvlw/2));
|
lvlttlxpos = ((BASEVIDWIDTH/2) - (lvlw/2));
|
||||||
|
@ -802,6 +802,7 @@ static void ST_drawLevelTitle(void)
|
||||||
V_DrawDiag(sub + ttlnumxpos + 1, bary, 11, 31);
|
V_DrawDiag(sub + ttlnumxpos + 1, bary, 11, 31);
|
||||||
V_DrawFill(sub - dupcalc, bary, ttlnumxpos+dupcalc, 10, gtc);
|
V_DrawFill(sub - dupcalc, bary, ttlnumxpos+dupcalc, 10, gtc);
|
||||||
V_DrawDiag(sub + ttlnumxpos, bary, 10, gtc);
|
V_DrawDiag(sub + ttlnumxpos, bary, 10, gtc);
|
||||||
|
|
||||||
if (subttl[0])
|
if (subttl[0])
|
||||||
V_DrawRightAlignedString(sub + zonexpos - 8, bary+1, V_ALLOWLOWERCASE, subttl);
|
V_DrawRightAlignedString(sub + zonexpos - 8, bary+1, V_ALLOWLOWERCASE, subttl);
|
||||||
//else
|
//else
|
||||||
|
|
|
@ -207,7 +207,7 @@ const char *R_GetPalname(UINT16 num)
|
||||||
const char *GetPalette(void)
|
const char *GetPalette(void)
|
||||||
{
|
{
|
||||||
if (gamestate == GS_LEVEL)
|
if (gamestate == GS_LEVEL)
|
||||||
return R_GetPalname(mapheaderinfo[gamemap-1]->palette);
|
return R_GetPalname((encoremode ? mapheaderinfo[gamemap-1]->encorepal : mapheaderinfo[gamemap-1]->palette));
|
||||||
return "PLAYPAL";
|
return "PLAYPAL";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -248,6 +248,9 @@ void V_SetPaletteLump(const char *pal)
|
||||||
#endif
|
#endif
|
||||||
if (rendermode != render_none)
|
if (rendermode != render_none)
|
||||||
I_SetPalette(pLocalPalette);
|
I_SetPalette(pLocalPalette);
|
||||||
|
#ifdef HASINVERT
|
||||||
|
R_MakeInvertmap();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CV_usegamma_OnChange(void)
|
static void CV_usegamma_OnChange(void)
|
||||||
|
@ -1248,7 +1251,7 @@ void V_DrawFadeConsBack(INT32 plines)
|
||||||
|
|
||||||
// Gets string colormap, used for 0x80 color codes
|
// Gets string colormap, used for 0x80 color codes
|
||||||
//
|
//
|
||||||
const UINT8 *V_GetStringColormap(INT32 colorflags)
|
UINT8 *V_GetStringColormap(INT32 colorflags)
|
||||||
{
|
{
|
||||||
switch ((colorflags & V_CHARCOLORMASK) >> V_CHARCOLORSHIFT)
|
switch ((colorflags & V_CHARCOLORMASK) >> V_CHARCOLORSHIFT)
|
||||||
{
|
{
|
||||||
|
@ -1256,7 +1259,7 @@ const UINT8 *V_GetStringColormap(INT32 colorflags)
|
||||||
return purplemap;
|
return purplemap;
|
||||||
case 2: // 0x82, yellow
|
case 2: // 0x82, yellow
|
||||||
return yellowmap;
|
return yellowmap;
|
||||||
case 3: // 0x83, lgreen
|
case 3: // 0x83, green
|
||||||
return greenmap;
|
return greenmap;
|
||||||
case 4: // 0x84, blue
|
case 4: // 0x84, blue
|
||||||
return bluemap;
|
return bluemap;
|
||||||
|
@ -1268,6 +1271,20 @@ const UINT8 *V_GetStringColormap(INT32 colorflags)
|
||||||
return orangemap;
|
return orangemap;
|
||||||
case 8: // 0x88, sky
|
case 8: // 0x88, sky
|
||||||
return skymap;
|
return skymap;
|
||||||
|
case 9: // 0x89, lavender
|
||||||
|
return lavendermap;
|
||||||
|
case 10: // 0x8A, gold
|
||||||
|
return goldmap;
|
||||||
|
case 11: // 0x8B, tea-green
|
||||||
|
return teamap;
|
||||||
|
case 12: // 0x8C, steel
|
||||||
|
return steelmap;
|
||||||
|
case 13: // 0x8D, pink
|
||||||
|
return pinkmap;
|
||||||
|
case 14: // 0x8E, teal
|
||||||
|
return tealmap;
|
||||||
|
case 15: // 0x8F, peach
|
||||||
|
return peachmap;
|
||||||
default: // reset
|
default: // reset
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1359,7 +1376,7 @@ char *V_WordWrap(INT32 x, INT32 w, INT32 option, const char *string)
|
||||||
for (i = 0; i < slen; ++i)
|
for (i = 0; i < slen; ++i)
|
||||||
{
|
{
|
||||||
c = newstring[i];
|
c = newstring[i];
|
||||||
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x89) //color parsing! -Inuyasha 2.16.09
|
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x8F) //color parsing! -Inuyasha 2.16.09
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (c == '\n')
|
if (c == '\n')
|
||||||
|
@ -1424,6 +1441,7 @@ void V_DrawString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
}
|
}
|
||||||
|
|
||||||
charflags = (option & V_CHARCOLORMASK);
|
charflags = (option & V_CHARCOLORMASK);
|
||||||
|
colormap = V_GetStringColormap(charflags);
|
||||||
|
|
||||||
switch (option & V_SPACINGMASK)
|
switch (option & V_SPACINGMASK)
|
||||||
{
|
{
|
||||||
|
@ -1447,7 +1465,10 @@ void V_DrawString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
{
|
{
|
||||||
// manually set flags override color codes
|
// manually set flags override color codes
|
||||||
if (!(option & V_CHARCOLORMASK))
|
if (!(option & V_CHARCOLORMASK))
|
||||||
|
{
|
||||||
charflags = ((*ch & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
charflags = ((*ch & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
||||||
|
colormap = V_GetStringColormap(charflags);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (*ch == '\n')
|
if (*ch == '\n')
|
||||||
|
@ -1490,7 +1511,6 @@ void V_DrawString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
colormap = V_GetStringColormap(charflags);
|
|
||||||
V_DrawFixedPatch((cx + center)<<FRACBITS, cy<<FRACBITS, FRACUNIT, option, hu_font[c], colormap);
|
V_DrawFixedPatch((cx + center)<<FRACBITS, cy<<FRACBITS, FRACUNIT, option, hu_font[c], colormap);
|
||||||
|
|
||||||
cx += w;
|
cx += w;
|
||||||
|
@ -1523,6 +1543,7 @@ void V_DrawKartString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
}
|
}
|
||||||
|
|
||||||
charflags = (option & V_CHARCOLORMASK);
|
charflags = (option & V_CHARCOLORMASK);
|
||||||
|
colormap = V_GetStringColormap(charflags);
|
||||||
|
|
||||||
switch (option & V_SPACINGMASK)
|
switch (option & V_SPACINGMASK)
|
||||||
{
|
{
|
||||||
|
@ -1546,7 +1567,10 @@ void V_DrawKartString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
{
|
{
|
||||||
// manually set flags override color codes
|
// manually set flags override color codes
|
||||||
if (!(option & V_CHARCOLORMASK))
|
if (!(option & V_CHARCOLORMASK))
|
||||||
|
{
|
||||||
charflags = ((*ch & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
charflags = ((*ch & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
||||||
|
colormap = V_GetStringColormap(charflags);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (*ch == '\n')
|
if (*ch == '\n')
|
||||||
|
@ -1589,7 +1613,6 @@ void V_DrawKartString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
colormap = V_GetStringColormap(charflags);
|
|
||||||
V_DrawFixedPatch((cx + center)<<FRACBITS, cy<<FRACBITS, FRACUNIT, option, kart_font[c], colormap);
|
V_DrawFixedPatch((cx + center)<<FRACBITS, cy<<FRACBITS, FRACUNIT, option, kart_font[c], colormap);
|
||||||
|
|
||||||
cx += w;
|
cx += w;
|
||||||
|
@ -1639,6 +1662,7 @@ void V_DrawSmallString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
}
|
}
|
||||||
|
|
||||||
charflags = (option & V_CHARCOLORMASK);
|
charflags = (option & V_CHARCOLORMASK);
|
||||||
|
colormap = V_GetStringColormap(charflags);
|
||||||
|
|
||||||
switch (option & V_SPACINGMASK)
|
switch (option & V_SPACINGMASK)
|
||||||
{
|
{
|
||||||
|
@ -1662,7 +1686,10 @@ void V_DrawSmallString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
{
|
{
|
||||||
// manually set flags override color codes
|
// manually set flags override color codes
|
||||||
if (!(option & V_CHARCOLORMASK))
|
if (!(option & V_CHARCOLORMASK))
|
||||||
|
{
|
||||||
charflags = ((*ch & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
charflags = ((*ch & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
||||||
|
colormap = V_GetStringColormap(charflags);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (*ch == '\n')
|
if (*ch == '\n')
|
||||||
|
@ -1703,7 +1730,6 @@ void V_DrawSmallString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
colormap = V_GetStringColormap(charflags);
|
|
||||||
V_DrawFixedPatch((cx + center)<<FRACBITS, cy<<FRACBITS, FRACUNIT/2, option, hu_font[c], colormap);
|
V_DrawFixedPatch((cx + center)<<FRACBITS, cy<<FRACBITS, FRACUNIT/2, option, hu_font[c], colormap);
|
||||||
|
|
||||||
cx += w;
|
cx += w;
|
||||||
|
@ -1746,6 +1772,7 @@ void V_DrawThinString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
}
|
}
|
||||||
|
|
||||||
charflags = (option & V_CHARCOLORMASK);
|
charflags = (option & V_CHARCOLORMASK);
|
||||||
|
colormap = V_GetStringColormap(charflags);
|
||||||
|
|
||||||
switch (option & V_SPACINGMASK)
|
switch (option & V_SPACINGMASK)
|
||||||
{
|
{
|
||||||
|
@ -1770,7 +1797,10 @@ void V_DrawThinString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
{
|
{
|
||||||
// manually set flags override color codes
|
// manually set flags override color codes
|
||||||
if (!(option & V_CHARCOLORMASK))
|
if (!(option & V_CHARCOLORMASK))
|
||||||
|
{
|
||||||
charflags = ((*ch & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
charflags = ((*ch & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
||||||
|
colormap = V_GetStringColormap(charflags);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (*ch == '\n')
|
if (*ch == '\n')
|
||||||
|
@ -1810,7 +1840,6 @@ void V_DrawThinString(INT32 x, INT32 y, INT32 option, const char *string)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
colormap = V_GetStringColormap(charflags);
|
|
||||||
V_DrawFixedPatch(cx<<FRACBITS, cy<<FRACBITS, FRACUNIT, option, tny_font[c], colormap);
|
V_DrawFixedPatch(cx<<FRACBITS, cy<<FRACBITS, FRACUNIT, option, tny_font[c], colormap);
|
||||||
|
|
||||||
cx += w;
|
cx += w;
|
||||||
|
@ -2153,7 +2182,7 @@ INT32 V_StringWidth(const char *string, INT32 option)
|
||||||
for (i = 0; i < strlen(string); i++)
|
for (i = 0; i < strlen(string); i++)
|
||||||
{
|
{
|
||||||
c = string[i];
|
c = string[i];
|
||||||
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x89) //color parsing! -Inuyasha 2.16.09
|
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x8F) //color parsing! -Inuyasha 2.16.09
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
c = toupper(c) - HU_FONTSTART;
|
c = toupper(c) - HU_FONTSTART;
|
||||||
|
@ -2192,7 +2221,7 @@ INT32 V_SmallStringWidth(const char *string, INT32 option)
|
||||||
for (i = 0; i < strlen(string); i++)
|
for (i = 0; i < strlen(string); i++)
|
||||||
{
|
{
|
||||||
c = string[i];
|
c = string[i];
|
||||||
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x89) //color parsing! -Inuyasha 2.16.09
|
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x8F) //color parsing! -Inuyasha 2.16.09
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
c = toupper(c) - HU_FONTSTART;
|
c = toupper(c) - HU_FONTSTART;
|
||||||
|
@ -2232,7 +2261,7 @@ INT32 V_ThinStringWidth(const char *string, INT32 option)
|
||||||
for (i = 0; i < strlen(string); i++)
|
for (i = 0; i < strlen(string); i++)
|
||||||
{
|
{
|
||||||
c = string[i];
|
c = string[i];
|
||||||
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x89) //color parsing! -Inuyasha 2.16.09
|
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x8F) //color parsing! -Inuyasha 2.16.09
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
c = toupper(c) - HU_FONTSTART;
|
c = toupper(c) - HU_FONTSTART;
|
||||||
|
|
|
@ -66,8 +66,6 @@ extern UINT8 hudtrans;
|
||||||
#define V_MONOSPACE 0x00000C00 // Don't do width checks on characters, all characters 8 width
|
#define V_MONOSPACE 0x00000C00 // Don't do width checks on characters, all characters 8 width
|
||||||
|
|
||||||
// use bits 13-16 for colors
|
// use bits 13-16 for colors
|
||||||
// though we only have 7 colors now, perhaps we can introduce
|
|
||||||
// more as needed later
|
|
||||||
#define V_CHARCOLORSHIFT 12
|
#define V_CHARCOLORSHIFT 12
|
||||||
#define V_CHARCOLORMASK 0x0000F000
|
#define V_CHARCOLORMASK 0x0000F000
|
||||||
// for simplicity's sake, shortcuts to specific colors
|
// for simplicity's sake, shortcuts to specific colors
|
||||||
|
@ -79,6 +77,13 @@ extern UINT8 hudtrans;
|
||||||
#define V_GRAYMAP 0x00006000
|
#define V_GRAYMAP 0x00006000
|
||||||
#define V_ORANGEMAP 0x00007000
|
#define V_ORANGEMAP 0x00007000
|
||||||
#define V_SKYMAP 0x00008000
|
#define V_SKYMAP 0x00008000
|
||||||
|
#define V_LAVENDERMAP 0x00009000
|
||||||
|
#define V_GOLDMAP 0x0000A000
|
||||||
|
#define V_TEAMAP 0x0000B000
|
||||||
|
#define V_STEELMAP 0x0000C000
|
||||||
|
#define V_PINKMAP 0x0000D000
|
||||||
|
#define V_TEALMAP 0x0000E000
|
||||||
|
#define V_PEACHMAP 0x0000F000
|
||||||
|
|
||||||
// use bits 17-20 for alpha transparency
|
// use bits 17-20 for alpha transparency
|
||||||
#define V_ALPHASHIFT 16
|
#define V_ALPHASHIFT 16
|
||||||
|
@ -157,7 +162,7 @@ void V_DrawFadeConsBack(INT32 plines);
|
||||||
void V_DrawCharacter(INT32 x, INT32 y, INT32 c, boolean lowercaseallowed);
|
void V_DrawCharacter(INT32 x, INT32 y, INT32 c, boolean lowercaseallowed);
|
||||||
// draw a single character, but for the chat
|
// draw a single character, but for the chat
|
||||||
void V_DrawChatCharacter(INT32 x, INT32 y, INT32 c, boolean lowercaseallowed, UINT8 *colormap);
|
void V_DrawChatCharacter(INT32 x, INT32 y, INT32 c, boolean lowercaseallowed, UINT8 *colormap);
|
||||||
const UINT8 *V_GetStringColormap(INT32 colorflags);
|
UINT8 *V_GetStringColormap(INT32 colorflags);
|
||||||
|
|
||||||
void V_DrawLevelTitle(INT32 x, INT32 y, INT32 option, const char *string);
|
void V_DrawLevelTitle(INT32 x, INT32 y, INT32 option, const char *string);
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 364 KiB After Width: | Height: | Size: 81 KiB |
192
src/y_inter.c
192
src/y_inter.c
|
@ -90,9 +90,11 @@ typedef union
|
||||||
char levelstring[64]; // holds levelnames up to 64 characters
|
char levelstring[64]; // holds levelnames up to 64 characters
|
||||||
// SRB2kart
|
// SRB2kart
|
||||||
UINT8 increase[MAXPLAYERS]; // how much did the score increase by?
|
UINT8 increase[MAXPLAYERS]; // how much did the score increase by?
|
||||||
|
UINT8 jitter[MAXPLAYERS]; // wiggle
|
||||||
UINT32 val[MAXPLAYERS]; // Gametype-specific value
|
UINT32 val[MAXPLAYERS]; // Gametype-specific value
|
||||||
UINT8 pos[MAXPLAYERS]; // player positions. used for ties
|
UINT8 pos[MAXPLAYERS]; // player positions. used for ties
|
||||||
boolean rankingsmode; // rankings mode
|
boolean rankingsmode; // rankings mode
|
||||||
|
boolean encore; // encore mode
|
||||||
} match;
|
} match;
|
||||||
} y_data;
|
} y_data;
|
||||||
|
|
||||||
|
@ -125,6 +127,7 @@ typedef struct
|
||||||
UINT8 gtc;
|
UINT8 gtc;
|
||||||
const char *gts;
|
const char *gts;
|
||||||
patch_t *pic;
|
patch_t *pic;
|
||||||
|
boolean encore;
|
||||||
} y_votelvlinfo;
|
} y_votelvlinfo;
|
||||||
|
|
||||||
// Clientside & splitscreen player info.
|
// Clientside & splitscreen player info.
|
||||||
|
@ -155,6 +158,7 @@ static patch_t *cursor2 = NULL;
|
||||||
static patch_t *cursor3 = NULL;
|
static patch_t *cursor3 = NULL;
|
||||||
static patch_t *cursor4 = NULL;
|
static patch_t *cursor4 = NULL;
|
||||||
static patch_t *randomlvl = NULL;
|
static patch_t *randomlvl = NULL;
|
||||||
|
static patch_t *rubyicon = NULL;
|
||||||
|
|
||||||
static void Y_UnloadVoteData(void);
|
static void Y_UnloadVoteData(void);
|
||||||
|
|
||||||
|
@ -188,22 +192,28 @@ static void Y_CompareBattle(INT32 i)
|
||||||
|
|
||||||
static void Y_CompareRank(INT32 i)
|
static void Y_CompareRank(INT32 i)
|
||||||
{
|
{
|
||||||
if (!(data.match.val[data.match.numplayers] == UINT32_MAX || players[i].score > data.match.val[data.match.numplayers]))
|
UINT8 increase = ((data.match.increase[i] == UINT8_MAX) ? 0 : data.match.increase[i]);
|
||||||
|
if (!(data.match.val[data.match.numplayers] == UINT32_MAX || (players[i].score - increase) > data.match.val[data.match.numplayers]))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
data.match.val[data.match.numplayers] = players[i].score;
|
data.match.val[data.match.numplayers] = (players[i].score - increase);
|
||||||
data.match.num[data.match.numplayers] = i;
|
data.match.num[data.match.numplayers] = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Y_CalculateMatchData(boolean rankingsmode, void (*comparison)(INT32))
|
static void Y_CalculateMatchData(UINT8 rankingsmode, void (*comparison)(INT32))
|
||||||
{
|
{
|
||||||
INT32 i, j;
|
INT32 i, j;
|
||||||
boolean completed[MAXPLAYERS];
|
boolean completed[MAXPLAYERS];
|
||||||
INT32 numplayersingame = 0;
|
INT32 numplayersingame = 0;
|
||||||
|
|
||||||
// Initialize variables
|
// Initialize variables
|
||||||
if ((data.match.rankingsmode = rankingsmode))
|
if (rankingsmode > 1)
|
||||||
|
;
|
||||||
|
else if ((data.match.rankingsmode = (boolean)rankingsmode))
|
||||||
|
{
|
||||||
sprintf(data.match.levelstring, "* Total Rankings *");
|
sprintf(data.match.levelstring, "* Total Rankings *");
|
||||||
|
data.match.encore = false;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// set up the levelstring
|
// set up the levelstring
|
||||||
|
@ -236,16 +246,24 @@ static void Y_CalculateMatchData(boolean rankingsmode, void (*comparison)(INT32)
|
||||||
}
|
}
|
||||||
|
|
||||||
data.match.levelstring[sizeof data.match.levelstring - 1] = '\0';
|
data.match.levelstring[sizeof data.match.levelstring - 1] = '\0';
|
||||||
|
|
||||||
|
data.match.encore = encoremode;
|
||||||
|
|
||||||
|
memset(data.match.jitter, 0, sizeof (data.match.jitter));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
{
|
{
|
||||||
data.match.val[i] = UINT32_MAX;
|
data.match.val[i] = UINT32_MAX;
|
||||||
if (!rankingsmode)
|
|
||||||
data.match.increase[i] = UINT8_MAX;
|
|
||||||
|
|
||||||
if (!playeringame[i] || players[i].spectator)
|
if (!playeringame[i] || players[i].spectator)
|
||||||
|
{
|
||||||
|
data.match.increase[i] = UINT8_MAX;
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rankingsmode)
|
||||||
|
data.match.increase[i] = UINT8_MAX;
|
||||||
|
|
||||||
numplayersingame++;
|
numplayersingame++;
|
||||||
}
|
}
|
||||||
|
@ -395,7 +413,8 @@ void Y_IntermissionDrawer(void)
|
||||||
}
|
}
|
||||||
else*/ if (intertype == int_race || intertype == int_match)
|
else*/ if (intertype == int_race || intertype == int_match)
|
||||||
{
|
{
|
||||||
INT32 y = 48;
|
#define NUMFORNEWCOLUMN 8
|
||||||
|
INT32 y = 48, gutter = ((data.match.numplayers > NUMFORNEWCOLUMN) ? 0 : (BASEVIDWIDTH/2));
|
||||||
const char *timeheader;
|
const char *timeheader;
|
||||||
|
|
||||||
if (data.match.rankingsmode)
|
if (data.match.rankingsmode)
|
||||||
|
@ -407,7 +426,10 @@ void Y_IntermissionDrawer(void)
|
||||||
V_DrawCenteredString(-4 + x + BASEVIDWIDTH/2, 20, 0, data.match.levelstring);
|
V_DrawCenteredString(-4 + x + BASEVIDWIDTH/2, 20, 0, data.match.levelstring);
|
||||||
V_DrawFill(x, 42, 312, 1, 0);
|
V_DrawFill(x, 42, 312, 1, 0);
|
||||||
|
|
||||||
if (data.match.numplayers > 8)
|
if (data.match.encore)
|
||||||
|
V_DrawCenteredString(-4 + x + BASEVIDWIDTH/2, 20-8, hilicol, "ENCORE MODE");
|
||||||
|
|
||||||
|
if (!gutter)
|
||||||
{
|
{
|
||||||
V_DrawFill(x+156, 32, 1, 152, 0);
|
V_DrawFill(x+156, 32, 1, 152, 0);
|
||||||
|
|
||||||
|
@ -424,10 +446,16 @@ void Y_IntermissionDrawer(void)
|
||||||
|
|
||||||
for (i = 0; i < data.match.numplayers; i++)
|
for (i = 0; i < data.match.numplayers; i++)
|
||||||
{
|
{
|
||||||
|
boolean dojitter = data.match.jitter[data.match.num[i]];
|
||||||
|
data.match.jitter[data.match.num[i]] = 0;
|
||||||
|
|
||||||
if (data.match.num[i] != MAXPLAYERS && playeringame[data.match.num[i]] && !players[data.match.num[i]].spectator)
|
if (data.match.num[i] != MAXPLAYERS && playeringame[data.match.num[i]] && !players[data.match.num[i]].spectator)
|
||||||
{
|
{
|
||||||
char strtime[MAXPLAYERNAME+1];
|
char strtime[MAXPLAYERNAME+1];
|
||||||
|
|
||||||
|
if (dojitter)
|
||||||
|
y--;
|
||||||
|
|
||||||
V_DrawCenteredString(x+6, y, 0, va("%d", data.match.pos[i]));
|
V_DrawCenteredString(x+6, y, 0, va("%d", data.match.pos[i]));
|
||||||
|
|
||||||
if (data.match.color[i] == 0)
|
if (data.match.color[i] == 0)
|
||||||
|
@ -438,7 +466,7 @@ void Y_IntermissionDrawer(void)
|
||||||
V_DrawSmallMappedPatch(x+16, y-4, 0,faceprefix[*data.match.character[i]], colormap);
|
V_DrawSmallMappedPatch(x+16, y-4, 0,faceprefix[*data.match.character[i]], colormap);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.match.numplayers > 8)
|
if (!gutter)
|
||||||
strlcpy(strtime, data.match.name[i], 6);
|
strlcpy(strtime, data.match.name[i], 6);
|
||||||
else
|
else
|
||||||
STRBUFCPY(strtime, data.match.name[i]);
|
STRBUFCPY(strtime, data.match.name[i]);
|
||||||
|
@ -458,66 +486,46 @@ void Y_IntermissionDrawer(void)
|
||||||
else
|
else
|
||||||
snprintf(strtime, sizeof strtime, "(+ %d)", data.match.increase[data.match.num[i]]);
|
snprintf(strtime, sizeof strtime, "(+ %d)", data.match.increase[data.match.num[i]]);
|
||||||
|
|
||||||
if (data.match.numplayers > 8)
|
V_DrawRightAlignedString(x+120+gutter, y, 0, strtime);
|
||||||
V_DrawRightAlignedString(x+120, y, 0, strtime);
|
|
||||||
else
|
|
||||||
V_DrawRightAlignedString(x+120+BASEVIDWIDTH/2, y, 0, strtime);
|
|
||||||
|
|
||||||
snprintf(strtime, sizeof strtime, "%d", data.match.val[i]-data.match.increase[data.match.num[i]]);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
snprintf(strtime, sizeof strtime, "%d", data.match.val[i]);
|
snprintf(strtime, sizeof strtime, "%d", data.match.val[i]);
|
||||||
|
|
||||||
if (data.match.numplayers > 8)
|
V_DrawRightAlignedString(x+152+gutter, y, 0, strtime);
|
||||||
V_DrawRightAlignedString(x+152, y, 0, strtime);
|
|
||||||
else
|
|
||||||
V_DrawRightAlignedString(x+152+BASEVIDWIDTH/2, y, 0, strtime);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (data.match.val[i] == (UINT32_MAX-1))
|
if (data.match.val[i] == (UINT32_MAX-1))
|
||||||
{
|
V_DrawRightAlignedThinString(x+152+gutter, y-1, 0, "NO CONTEST.");
|
||||||
if (data.match.numplayers > 8)
|
|
||||||
V_DrawRightAlignedThinString(x+152, y-1, 0, "NO CONTEST");
|
|
||||||
else
|
|
||||||
V_DrawRightAlignedThinString(x+152+BASEVIDWIDTH/2, y-1, 0, "NO CONTEST");
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (intertype == int_race)
|
if (intertype == int_race)
|
||||||
{
|
{
|
||||||
snprintf(strtime, sizeof strtime, "%i:%02i.%02i", G_TicsToMinutes(data.match.val[i], true),
|
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]));
|
G_TicsToSeconds(data.match.val[i]), G_TicsToCentiseconds(data.match.val[i]));
|
||||||
strtime[sizeof strtime - 1] = '\0';
|
strtime[sizeof strtime - 1] = '\0';
|
||||||
|
|
||||||
if (data.match.numplayers > 8)
|
V_DrawRightAlignedString(x+152+gutter, y, 0, strtime);
|
||||||
V_DrawRightAlignedString(x+152, y, 0, strtime);
|
|
||||||
else
|
|
||||||
V_DrawRightAlignedString(x+152+BASEVIDWIDTH/2, y, 0, strtime);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
V_DrawRightAlignedString(x+152+gutter, y, 0, va("%i", data.match.val[i]));
|
||||||
if (data.match.numplayers > 8)
|
|
||||||
V_DrawRightAlignedString(x+152, y, 0, va("%i", data.match.val[i]));
|
|
||||||
else
|
|
||||||
V_DrawRightAlignedString(x+152+BASEVIDWIDTH/2, y, 0, va("%i", data.match.val[i]));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dojitter)
|
||||||
|
y++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
data.match.increase[data.match.num[i]] = 0;
|
|
||||||
data.match.num[i] = MAXPLAYERS; // this should be the only field setting in this function
|
data.match.num[i] = MAXPLAYERS; // this should be the only field setting in this function
|
||||||
}
|
|
||||||
|
|
||||||
y += 16;
|
y += 16;
|
||||||
|
|
||||||
if (i == 7)
|
if (i == NUMFORNEWCOLUMN-1)
|
||||||
{
|
{
|
||||||
y = 48;
|
y = 48;
|
||||||
x += BASEVIDWIDTH/2;
|
x += BASEVIDWIDTH/2;
|
||||||
}
|
}
|
||||||
|
#undef NUMFORNEWCOLUMN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -590,9 +598,9 @@ void Y_Ticker(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!data.match.rankingsmode && (intertic >= sorttic + 8))
|
if (!data.match.rankingsmode && (intertic >= sorttic + 8))
|
||||||
Y_CalculateMatchData(true, Y_CompareRank);
|
Y_CalculateMatchData(1, Y_CompareRank);
|
||||||
|
|
||||||
if (data.match.rankingsmode && intertic > sorttic+(2*TICRATE))
|
if (data.match.rankingsmode && intertic > sorttic+16+(2*TICRATE))
|
||||||
{
|
{
|
||||||
INT32 q=0,r=0;
|
INT32 q=0,r=0;
|
||||||
boolean kaching = true;
|
boolean kaching = true;
|
||||||
|
@ -604,14 +612,17 @@ void Y_Ticker(void)
|
||||||
|| data.match.increase[data.match.num[q]] == UINT8_MAX)
|
|| data.match.increase[data.match.num[q]] == UINT8_MAX)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
data.match.increase[data.match.num[q]]--;
|
|
||||||
r++;
|
r++;
|
||||||
if (data.match.increase[data.match.num[q]])
|
data.match.jitter[data.match.num[q]] = 1;
|
||||||
|
if (--data.match.increase[data.match.num[q]])
|
||||||
kaching = false;
|
kaching = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r)
|
if (r)
|
||||||
|
{
|
||||||
S_StartSound(NULL, (kaching ? sfx_chchng : sfx_ptally));
|
S_StartSound(NULL, (kaching ? sfx_chchng : sfx_ptally));
|
||||||
|
Y_CalculateMatchData(2, Y_CompareRank);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
endtic = intertic + 3*TICRATE; // 3 second pause after end of tally
|
endtic = intertic + 3*TICRATE; // 3 second pause after end of tally
|
||||||
}
|
}
|
||||||
|
@ -754,7 +765,7 @@ void Y_StartIntermission(void)
|
||||||
case int_match:
|
case int_match:
|
||||||
{
|
{
|
||||||
// Calculate who won
|
// Calculate who won
|
||||||
Y_CalculateMatchData(false, Y_CompareBattle);
|
Y_CalculateMatchData(0, Y_CompareBattle);
|
||||||
if (cv_inttime.value > 0)
|
if (cv_inttime.value > 0)
|
||||||
S_ChangeMusicInternal("racent", true); // loop it
|
S_ChangeMusicInternal("racent", true); // loop it
|
||||||
break;
|
break;
|
||||||
|
@ -777,7 +788,7 @@ void Y_StartIntermission(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate who won
|
// Calculate who won
|
||||||
Y_CalculateMatchData(false, Y_CompareRace);
|
Y_CalculateMatchData(0, Y_CompareRace);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -926,6 +937,7 @@ void Y_VoteDrawer(void)
|
||||||
{
|
{
|
||||||
INT32 i, x, y = 0, height = 0;
|
INT32 i, x, y = 0, height = 0;
|
||||||
UINT8 selected[4];
|
UINT8 selected[4];
|
||||||
|
fixed_t rubyheight = 0;
|
||||||
|
|
||||||
if (rendermode == render_none)
|
if (rendermode == render_none)
|
||||||
return;
|
return;
|
||||||
|
@ -936,6 +948,11 @@ void Y_VoteDrawer(void)
|
||||||
if (!voteclient.loaded)
|
if (!voteclient.loaded)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
{
|
||||||
|
angle_t rubyfloattime = (ANGLE_MAX/NEWTICRATE)*(votetic % NEWTICRATE);
|
||||||
|
rubyheight = FINESINE(rubyfloattime>>ANGLETOFINESHIFT);
|
||||||
|
}
|
||||||
|
|
||||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31);
|
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31);
|
||||||
|
|
||||||
if (widebgpatch && rendermode == render_soft && vid.width / vid.dupx > 320)
|
if (widebgpatch && rendermode == render_soft && vid.width / vid.dupx > 320)
|
||||||
|
@ -970,19 +987,18 @@ void Y_VoteDrawer(void)
|
||||||
y = (200-height)/2;
|
y = (200-height)/2;
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
char str[40];
|
const char *str;
|
||||||
patch_t *pic;
|
patch_t *pic;
|
||||||
UINT8 j, color;
|
UINT8 j, color;
|
||||||
|
|
||||||
if (i == 3)
|
if (i == 3)
|
||||||
{
|
{
|
||||||
snprintf(str, sizeof str, "%.32s", "RANDOM");
|
str = "RANDOM";
|
||||||
str[sizeof str - 1] = '\0';
|
|
||||||
pic = randomlvl;
|
pic = randomlvl;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strcpy(str, levelinfo[i].str);
|
str = levelinfo[i].str;
|
||||||
pic = levelinfo[i].pic;
|
pic = levelinfo[i].pic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1047,8 +1063,16 @@ void Y_VoteDrawer(void)
|
||||||
sizeadd--;
|
sizeadd--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!levelinfo[i].encore)
|
||||||
V_DrawSmallScaledPatch(BASEVIDWIDTH-100, y, V_SNAPTORIGHT, pic);
|
V_DrawSmallScaledPatch(BASEVIDWIDTH-100, y, V_SNAPTORIGHT, pic);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
V_DrawFixedPatch((BASEVIDWIDTH-20)<<FRACBITS, (y)<<FRACBITS, FRACUNIT/2, V_FLIP|V_SNAPTORIGHT, pic, 0);
|
||||||
|
V_DrawFixedPatch((BASEVIDWIDTH-60)<<FRACBITS, ((y+25)<<FRACBITS) - (rubyheight<<1), FRACUNIT, V_SNAPTORIGHT, rubyicon, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-22, 40+y, V_SNAPTORIGHT|V_6WIDTHSPACE, str);
|
V_DrawRightAlignedThinString(BASEVIDWIDTH-22, 40+y, V_SNAPTORIGHT|V_6WIDTHSPACE, str);
|
||||||
|
|
||||||
if (levelinfo[i].gts)
|
if (levelinfo[i].gts)
|
||||||
{
|
{
|
||||||
INT32 w = V_ThinStringWidth(levelinfo[i].gts, V_SNAPTORIGHT)+1;
|
INT32 w = V_ThinStringWidth(levelinfo[i].gts, V_SNAPTORIGHT)+1;
|
||||||
|
@ -1063,7 +1087,14 @@ void Y_VoteDrawer(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (!levelinfo[i].encore)
|
||||||
V_DrawTinyScaledPatch(BASEVIDWIDTH-60, y, V_SNAPTORIGHT, pic);
|
V_DrawTinyScaledPatch(BASEVIDWIDTH-60, y, V_SNAPTORIGHT, pic);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
V_DrawFixedPatch((BASEVIDWIDTH-20)<<FRACBITS, y<<FRACBITS, FRACUNIT/4, V_FLIP|V_SNAPTORIGHT, pic, 0);
|
||||||
|
V_DrawFixedPatch((BASEVIDWIDTH-40)<<FRACBITS, (y<<FRACBITS) + (25<<(FRACBITS-1)) - rubyheight, FRACUNIT/2, V_SNAPTORIGHT, rubyicon, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
if (levelinfo[i].gts)
|
if (levelinfo[i].gts)
|
||||||
{
|
{
|
||||||
V_DrawDiag(BASEVIDWIDTH-60, y, 8, V_SNAPTORIGHT|31);
|
V_DrawDiag(BASEVIDWIDTH-60, y, 8, V_SNAPTORIGHT|31);
|
||||||
|
@ -1101,7 +1132,14 @@ void Y_VoteDrawer(void)
|
||||||
V_DrawFill(x-1, y-1, 42, 27, levelinfo[votes[i]].gtc|V_SNAPTOLEFT);
|
V_DrawFill(x-1, y-1, 42, 27, levelinfo[votes[i]].gtc|V_SNAPTOLEFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!levelinfo[votes[i]].encore)
|
||||||
V_DrawTinyScaledPatch(x, y, V_SNAPTOLEFT, pic);
|
V_DrawTinyScaledPatch(x, y, V_SNAPTOLEFT, pic);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
V_DrawFixedPatch((x+40)<<FRACBITS, (y)<<FRACBITS, FRACUNIT/4, V_SNAPTOLEFT|V_FLIP, pic, 0);
|
||||||
|
V_DrawFixedPatch((x+20)<<FRACBITS, (y<<FRACBITS) + (25<<(FRACBITS-1)) - rubyheight, FRACUNIT/2, V_SNAPTORIGHT, rubyicon, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
if (levelinfo[votes[i]].gts)
|
if (levelinfo[votes[i]].gts)
|
||||||
{
|
{
|
||||||
V_DrawDiag(x, y, 8, V_SNAPTOLEFT|31);
|
V_DrawDiag(x, y, 8, V_SNAPTOLEFT|31);
|
||||||
|
@ -1166,6 +1204,8 @@ static void Y_VoteStops(SINT8 pick, SINT8 level)
|
||||||
D_GameTypeChanged(lastgametype);
|
D_GameTypeChanged(lastgametype);
|
||||||
forceresetplayers = true;
|
forceresetplayers = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deferencoremode = (levelinfo[level].encore);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1386,6 +1426,7 @@ void Y_StartVote(void)
|
||||||
cursor3 = W_CachePatchName("P3CURSOR", PU_STATIC);
|
cursor3 = W_CachePatchName("P3CURSOR", PU_STATIC);
|
||||||
cursor4 = W_CachePatchName("P4CURSOR", PU_STATIC);
|
cursor4 = W_CachePatchName("P4CURSOR", PU_STATIC);
|
||||||
randomlvl = W_CachePatchName("RANDOMLV", PU_STATIC);
|
randomlvl = W_CachePatchName("RANDOMLV", PU_STATIC);
|
||||||
|
rubyicon = W_CachePatchName("RUBYICON", PU_STATIC);
|
||||||
|
|
||||||
timer = cv_votetime.value*TICRATE;
|
timer = cv_votetime.value*TICRATE;
|
||||||
pickedvote = -1;
|
pickedvote = -1;
|
||||||
|
@ -1409,37 +1450,42 @@ void Y_StartVote(void)
|
||||||
{
|
{
|
||||||
lumpnum_t lumpnum;
|
lumpnum_t lumpnum;
|
||||||
|
|
||||||
|
// set up the encore
|
||||||
|
levelinfo[i].encore = (votelevels[i][1] & 0x80);
|
||||||
|
votelevels[i][1] &= ~0x80;
|
||||||
|
|
||||||
// set up the str
|
// set up the str
|
||||||
if (i == 4)
|
if (i == 4)
|
||||||
levelinfo[i].str[0] = '\0';
|
levelinfo[i].str[0] = '\0';
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (strlen(mapheaderinfo[votelevels[i][0]]->zonttl) > 0)
|
// set up the levelstring
|
||||||
|
if (mapheaderinfo[votelevels[i][0]]->levelflags & LF_NOZONE || !mapheaderinfo[votelevels[i][0]]->zonttl[0])
|
||||||
{
|
{
|
||||||
if (strlen(mapheaderinfo[votelevels[i][0]]->actnum) > 0)
|
if (mapheaderinfo[votelevels[i][0]]->actnum[0])
|
||||||
snprintf(levelinfo[i].str,
|
snprintf(levelinfo[i].str,
|
||||||
sizeof levelinfo[i].str,
|
sizeof levelinfo[i].str,
|
||||||
"%.32s %.32s %s",
|
"%s %s",
|
||||||
mapheaderinfo[votelevels[i][0]]->lvlttl, mapheaderinfo[votelevels[i][0]]->zonttl, mapheaderinfo[votelevels[i][0]]->actnum);
|
|
||||||
else
|
|
||||||
snprintf(levelinfo[i].str,
|
|
||||||
sizeof levelinfo[i].str,
|
|
||||||
"%.32s %.32s",
|
|
||||||
mapheaderinfo[votelevels[i][0]]->lvlttl, mapheaderinfo[votelevels[i][0]]->zonttl);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (strlen(mapheaderinfo[votelevels[i][0]]->actnum) > 0)
|
|
||||||
snprintf(levelinfo[i].str,
|
|
||||||
sizeof levelinfo[i].str,
|
|
||||||
"%.32s %s",
|
|
||||||
mapheaderinfo[votelevels[i][0]]->lvlttl, mapheaderinfo[votelevels[i][0]]->actnum);
|
mapheaderinfo[votelevels[i][0]]->lvlttl, mapheaderinfo[votelevels[i][0]]->actnum);
|
||||||
else
|
else
|
||||||
snprintf(levelinfo[i].str,
|
snprintf(levelinfo[i].str,
|
||||||
sizeof levelinfo[i].str,
|
sizeof levelinfo[i].str,
|
||||||
"%.32s",
|
"%s",
|
||||||
mapheaderinfo[votelevels[i][0]]->lvlttl);
|
mapheaderinfo[votelevels[i][0]]->lvlttl);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (mapheaderinfo[votelevels[i][0]]->actnum[0])
|
||||||
|
snprintf(levelinfo[i].str,
|
||||||
|
sizeof levelinfo[i].str,
|
||||||
|
"%s %s %s",
|
||||||
|
mapheaderinfo[votelevels[i][0]]->lvlttl, mapheaderinfo[votelevels[i][0]]->zonttl, mapheaderinfo[votelevels[i][0]]->actnum);
|
||||||
|
else
|
||||||
|
snprintf(levelinfo[i].str,
|
||||||
|
sizeof levelinfo[i].str,
|
||||||
|
"%s %s",
|
||||||
|
mapheaderinfo[votelevels[i][0]]->lvlttl, mapheaderinfo[votelevels[i][0]]->zonttl);
|
||||||
|
}
|
||||||
|
|
||||||
levelinfo[i].str[sizeof levelinfo[i].str - 1] = '\0';
|
levelinfo[i].str[sizeof levelinfo[i].str - 1] = '\0';
|
||||||
}
|
}
|
||||||
|
@ -1489,6 +1535,7 @@ static void Y_UnloadVoteData(void)
|
||||||
UNLOAD(cursor3);
|
UNLOAD(cursor3);
|
||||||
UNLOAD(cursor4);
|
UNLOAD(cursor4);
|
||||||
UNLOAD(randomlvl);
|
UNLOAD(randomlvl);
|
||||||
|
UNLOAD(rubyicon);
|
||||||
|
|
||||||
UNLOAD(levelinfo[4].pic);
|
UNLOAD(levelinfo[4].pic);
|
||||||
UNLOAD(levelinfo[3].pic);
|
UNLOAD(levelinfo[3].pic);
|
||||||
|
@ -1502,13 +1549,13 @@ static void Y_UnloadVoteData(void)
|
||||||
//
|
//
|
||||||
void Y_SetupVoteFinish(SINT8 pick, SINT8 level)
|
void Y_SetupVoteFinish(SINT8 pick, SINT8 level)
|
||||||
{
|
{
|
||||||
|
if (!voteclient.loaded)
|
||||||
|
return;
|
||||||
|
|
||||||
if (pick == -1) // No other votes? We gotta get out of here, then!
|
if (pick == -1) // No other votes? We gotta get out of here, then!
|
||||||
{
|
|
||||||
if (voteclient.loaded)
|
|
||||||
{
|
{
|
||||||
Y_EndVote();
|
Y_EndVote();
|
||||||
Y_FollowIntermission();
|
Y_FollowIntermission();
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1553,12 +1600,9 @@ void Y_SetupVoteFinish(SINT8 pick, SINT8 level)
|
||||||
Y_VoteStops(pick, level);
|
Y_VoteStops(pick, level);
|
||||||
}
|
}
|
||||||
else if (endtype == 0) // Might as well put this here, too.
|
else if (endtype == 0) // Might as well put this here, too.
|
||||||
{
|
|
||||||
if (voteclient.loaded)
|
|
||||||
{
|
{
|
||||||
Y_EndVote();
|
Y_EndVote();
|
||||||
Y_FollowIntermission();
|
Y_FollowIntermission();
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue