mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-11-17 02:01:15 +00:00
First, minor steps to Record Attack support
To-Do: - fix demo desync (desync is only super noticeable on slopes, but a message pops up when the player starts moving regardless) - fix ghosts not appearing - replace that dumb level tally - remove a bunch of things that made the assumption that race & record attack would never mix (ex: "next map x doesn't support race mode, using map y anyway" message)
This commit is contained in:
parent
ba7580d8e2
commit
540bea911a
6 changed files with 13 additions and 34 deletions
|
@ -3241,7 +3241,7 @@ void SV_StartSinglePlayerServer(void)
|
||||||
server = true;
|
server = true;
|
||||||
netgame = false;
|
netgame = false;
|
||||||
multiplayer = false;
|
multiplayer = false;
|
||||||
gametype = GT_COOP;
|
gametype = GT_RACE; //srb2kart
|
||||||
|
|
||||||
// no more tic the game with this settings!
|
// no more tic the game with this settings!
|
||||||
SV_StopServer();
|
SV_StopServer();
|
||||||
|
|
|
@ -1863,6 +1863,8 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum)
|
||||||
// a copy of color
|
// a copy of color
|
||||||
if (players[0].mo)
|
if (players[0].mo)
|
||||||
players[0].mo->color = players[0].skincolor;
|
players[0].mo->color = players[0].skincolor;
|
||||||
|
|
||||||
|
CV_StealthSetValue(&cv_kartcc, 150); // srb2kart
|
||||||
}
|
}
|
||||||
if (metalrecording)
|
if (metalrecording)
|
||||||
G_BeginMetal();
|
G_BeginMetal();
|
||||||
|
|
21
src/g_game.c
21
src/g_game.c
|
@ -3816,8 +3816,8 @@ char *G_BuildMapTitle(INT32 mapnum)
|
||||||
// DEMO RECORDING
|
// DEMO RECORDING
|
||||||
//
|
//
|
||||||
|
|
||||||
#define DEMOVERSION 0x0009
|
#define DEMOVERSION 0x0001
|
||||||
#define DEMOHEADER "\xF0" "SRB2Replay" "\x0F"
|
#define DEMOHEADER "\xF0" "KartReplay" "\x0F"
|
||||||
|
|
||||||
#define DF_GHOST 0x01 // This demo contains ghost data too!
|
#define DF_GHOST 0x01 // This demo contains ghost data too!
|
||||||
#define DF_RECORDATTACK 0x02 // This demo is from record attack and contains its final completion time, score, and rings!
|
#define DF_RECORDATTACK 0x02 // This demo is from record attack and contains its final completion time, score, and rings!
|
||||||
|
@ -4991,8 +4991,6 @@ UINT8 G_CmpDemoTime(char *oldname, char *newname)
|
||||||
switch(oldversion) // demoversion
|
switch(oldversion) // demoversion
|
||||||
{
|
{
|
||||||
case DEMOVERSION: // latest always supported
|
case DEMOVERSION: // latest always supported
|
||||||
// compatibility available?
|
|
||||||
case 0x0008:
|
|
||||||
break;
|
break;
|
||||||
// too old, cannot support.
|
// too old, cannot support.
|
||||||
default:
|
default:
|
||||||
|
@ -5007,9 +5005,6 @@ UINT8 G_CmpDemoTime(char *oldname, char *newname)
|
||||||
Z_Free(buffer);
|
Z_Free(buffer);
|
||||||
return UINT8_MAX;
|
return UINT8_MAX;
|
||||||
} p += 4; // "PLAY"
|
} p += 4; // "PLAY"
|
||||||
if (oldversion <= 0x0008)
|
|
||||||
p++; // gamemap
|
|
||||||
else
|
|
||||||
p += 2; // gamemap
|
p += 2; // gamemap
|
||||||
p += 16; // mapmd5
|
p += 16; // mapmd5
|
||||||
flags = READUINT8(p);
|
flags = READUINT8(p);
|
||||||
|
@ -5131,8 +5126,6 @@ void G_DoPlayDemo(char *defdemoname)
|
||||||
switch(demoversion)
|
switch(demoversion)
|
||||||
{
|
{
|
||||||
case DEMOVERSION: // latest always supported
|
case DEMOVERSION: // latest always supported
|
||||||
// compatibility available?
|
|
||||||
case 0x0008:
|
|
||||||
break;
|
break;
|
||||||
// too old, cannot support.
|
// too old, cannot support.
|
||||||
default:
|
default:
|
||||||
|
@ -5158,9 +5151,6 @@ void G_DoPlayDemo(char *defdemoname)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
demo_p += 4; // "PLAY"
|
demo_p += 4; // "PLAY"
|
||||||
if (demoversion <= 0x0008)
|
|
||||||
gamemap = READUINT8(demo_p);
|
|
||||||
else
|
|
||||||
gamemap = READINT16(demo_p);
|
gamemap = READINT16(demo_p);
|
||||||
demo_p += 16; // mapmd5
|
demo_p += 16; // mapmd5
|
||||||
|
|
||||||
|
@ -5361,8 +5351,6 @@ void G_AddGhost(char *defdemoname)
|
||||||
switch(ghostversion)
|
switch(ghostversion)
|
||||||
{
|
{
|
||||||
case DEMOVERSION: // latest always supported
|
case DEMOVERSION: // latest always supported
|
||||||
// compatibility available?
|
|
||||||
case 0x0008:
|
|
||||||
break;
|
break;
|
||||||
// too old, cannot support.
|
// too old, cannot support.
|
||||||
default:
|
default:
|
||||||
|
@ -5387,9 +5375,6 @@ void G_AddGhost(char *defdemoname)
|
||||||
Z_Free(buffer);
|
Z_Free(buffer);
|
||||||
return;
|
return;
|
||||||
} p += 4; // "PLAY"
|
} p += 4; // "PLAY"
|
||||||
if (ghostversion <= 0x0008)
|
|
||||||
p++; // gamemap
|
|
||||||
else
|
|
||||||
p += 2; // gamemap
|
p += 2; // gamemap
|
||||||
p += 16; // mapmd5 (possibly check for consistency?)
|
p += 16; // mapmd5 (possibly check for consistency?)
|
||||||
flags = READUINT8(p);
|
flags = READUINT8(p);
|
||||||
|
@ -5591,8 +5576,6 @@ void G_DoPlayMetal(void)
|
||||||
switch(metalversion)
|
switch(metalversion)
|
||||||
{
|
{
|
||||||
case DEMOVERSION: // latest always supported
|
case DEMOVERSION: // latest always supported
|
||||||
// compatibility available?
|
|
||||||
case 0x0008:
|
|
||||||
break;
|
break;
|
||||||
// too old, cannot support.
|
// too old, cannot support.
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -574,8 +574,8 @@ extraemblem_t extraemblems[MAXEXTRAEMBLEMS] =
|
||||||
unlockable_t unlockables[MAXUNLOCKABLES] =
|
unlockable_t unlockables[MAXUNLOCKABLES] =
|
||||||
{
|
{
|
||||||
// Name, Objective, Menu Height, ConditionSet, Unlock Type, Variable, NoCecho, NoChecklist
|
// Name, Objective, Menu Height, ConditionSet, Unlock Type, Variable, NoCecho, NoChecklist
|
||||||
/* 01 */ {"Record Attack", "Complete Greenflower Zone, Act 1", 0, 1, SECRET_RECORDATTACK, 0, true, true, 0},
|
/* 01 */ {"Record Attack", "Complete Greenflower Zone, Act 1", 0, -1, SECRET_RECORDATTACK, 0, true, true, 0},
|
||||||
/* 02 */ {"NiGHTS Mode", "Complete Floral Field", 0, 2, SECRET_NIGHTSMODE, 0, true, true, 0},
|
/* 02 */ {"NiGHTS Mode", "Complete Floral Field", 0, -1, SECRET_NIGHTSMODE, 0, true, true, 0},
|
||||||
|
|
||||||
/* 03 */ {"Play Credits", "Complete 1P Mode", 30, 10, SECRET_CREDITS, 0, true, true, 0},
|
/* 03 */ {"Play Credits", "Complete 1P Mode", 30, 10, SECRET_CREDITS, 0, true, true, 0},
|
||||||
/* 04 */ {"Sound Test", "Complete 1P Mode", 40, 10, SECRET_SOUNDTEST, 0, false, false, 0},
|
/* 04 */ {"Sound Test", "Complete 1P Mode", 40, 10, SECRET_SOUNDTEST, 0, false, false, 0},
|
||||||
|
|
10
src/p_mobj.c
10
src/p_mobj.c
|
@ -8920,9 +8920,7 @@ void P_RespawnSpecials(void)
|
||||||
mapthing_t *mthing = NULL;
|
mapthing_t *mthing = NULL;
|
||||||
|
|
||||||
// only respawn items when cv_itemrespawn is on
|
// only respawn items when cv_itemrespawn is on
|
||||||
if (!(netgame || multiplayer) // Never respawn in single player
|
if (!cv_itemrespawn.value)
|
||||||
|| gametype == GT_COOP // Never respawn in co-op gametype
|
|
||||||
|| !cv_itemrespawn.value) // cvar is turned off
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Don't respawn in special stages!
|
// Don't respawn in special stages!
|
||||||
|
@ -9505,12 +9503,8 @@ void P_SpawnMapThing(mapthing_t *mthing)
|
||||||
|
|
||||||
if (modeattacking) // Record Attack special stuff
|
if (modeattacking) // Record Attack special stuff
|
||||||
{
|
{
|
||||||
// Don't spawn starposts that wouldn't be usable
|
|
||||||
if (i == MT_STARPOST)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Emerald Tokens -->> Score Tokens
|
// Emerald Tokens -->> Score Tokens
|
||||||
else if (i == MT_EMMY)
|
if (i == MT_EMMY)
|
||||||
return; /// \todo
|
return; /// \todo
|
||||||
|
|
||||||
// 1UPs -->> Score TVs
|
// 1UPs -->> Score TVs
|
||||||
|
|
|
@ -224,7 +224,7 @@ static void P_ClearSingleMapHeaderInfo(INT16 i)
|
||||||
DEH_WriteUndoline("LEVELFLAGS", va("%d", mapheaderinfo[num]->levelflags), UNDO_NONE);
|
DEH_WriteUndoline("LEVELFLAGS", va("%d", mapheaderinfo[num]->levelflags), UNDO_NONE);
|
||||||
mapheaderinfo[num]->levelflags = 0;
|
mapheaderinfo[num]->levelflags = 0;
|
||||||
DEH_WriteUndoline("MENUFLAGS", va("%d", mapheaderinfo[num]->menuflags), UNDO_NONE);
|
DEH_WriteUndoline("MENUFLAGS", va("%d", mapheaderinfo[num]->menuflags), UNDO_NONE);
|
||||||
mapheaderinfo[num]->menuflags = 0;
|
mapheaderinfo[num]->menuflags = LF2_RECORDATTACK|LF2_NOVISITNEEDED; // 0
|
||||||
// TODO grades support for delfile (pfft yeah right)
|
// TODO grades support for delfile (pfft yeah right)
|
||||||
P_DeleteGrades(num);
|
P_DeleteGrades(num);
|
||||||
// an even further impossibility, delfile custom opts support
|
// an even further impossibility, delfile custom opts support
|
||||||
|
|
Loading…
Reference in a new issue