mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'starpost-historical-erasure' into 'master'
"Starpost" to "Cheat Check" See merge request KartKrew/Kart!1449
This commit is contained in:
commit
4eb06392cb
21 changed files with 98 additions and 121 deletions
|
|
@ -738,7 +738,7 @@ struct player_t
|
|||
UINT8 laps; // Number of laps (optional)
|
||||
UINT8 latestlap;
|
||||
UINT32 lapPoints; // Points given from laps
|
||||
INT32 starpostnum; // The number of the last starpost you hit
|
||||
INT32 cheatchecknum; // The number of the last cheatcheck you hit
|
||||
|
||||
UINT8 ctfteam; // 0 == Spectator, 1 == Red, 2 == Blue
|
||||
|
||||
|
|
|
|||
|
|
@ -1277,13 +1277,6 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
"S_WALLSPIKED1",
|
||||
"S_WALLSPIKED2",
|
||||
|
||||
// Starpost
|
||||
"S_STARPOST_IDLE",
|
||||
"S_STARPOST_FLASH",
|
||||
"S_STARPOST_STARTSPIN",
|
||||
"S_STARPOST_SPIN",
|
||||
"S_STARPOST_ENDSPIN",
|
||||
|
||||
// Big floating mine
|
||||
"S_BIGMINE_IDLE",
|
||||
"S_BIGMINE_ALERT1",
|
||||
|
|
@ -4832,7 +4825,7 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
|||
"MT_SPIKE",
|
||||
"MT_WALLSPIKE",
|
||||
"MT_WALLSPIKEBASE",
|
||||
"MT_STARPOST",
|
||||
"MT_CHEATCHECK",
|
||||
"MT_BIGMINE",
|
||||
"MT_BLASTEXECUTOR",
|
||||
"MT_CANNONLAUNCHER",
|
||||
|
|
@ -6045,7 +6038,7 @@ const char *const SSF_LIST[] = {
|
|||
"WINDCURRENT",
|
||||
"CONVEYOR",
|
||||
"\x01", // free (name un-matchable)
|
||||
"STARPOSTACTIVATOR",
|
||||
"CHEATCHECKACTIVATOR",
|
||||
"EXIT",
|
||||
"\x01", // free (name un-matchable)
|
||||
"\x01", // free (name un-matchable)
|
||||
|
|
|
|||
18
src/g_game.c
18
src/g_game.c
|
|
@ -2012,7 +2012,7 @@ static inline void G_PlayerFinishLevel(INT32 player)
|
|||
p->mo->renderflags &= ~(RF_TRANSMASK|RF_BRIGHTMASK); // cancel invisibility
|
||||
P_FlashPal(p, 0, 0); // Resets
|
||||
|
||||
p->starpostnum = 0;
|
||||
p->cheatchecknum = 0;
|
||||
memset(&p->respawn, 0, sizeof (p->respawn));
|
||||
|
||||
p->spectatorReentry = 0; // Clean up any pending re-entry forbiddings
|
||||
|
|
@ -2045,7 +2045,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
|||
|
||||
UINT8 ctfteam;
|
||||
|
||||
INT32 starpostnum;
|
||||
INT32 cheatchecknum;
|
||||
INT32 exiting;
|
||||
INT32 khudfinish;
|
||||
INT32 khudcardanimation;
|
||||
|
|
@ -2191,7 +2191,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
|||
exiting = 0;
|
||||
khudfinish = 0;
|
||||
khudcardanimation = 0;
|
||||
starpostnum = 0;
|
||||
cheatchecknum = 0;
|
||||
|
||||
saveroundconditions = false;
|
||||
}
|
||||
|
|
@ -2239,7 +2239,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
|||
khudcardanimation = 0;
|
||||
}
|
||||
|
||||
starpostnum = players[player].starpostnum;
|
||||
cheatchecknum = players[player].cheatchecknum;
|
||||
|
||||
pflags |= (players[player].pflags & (PF_STASIS|PF_ELIMINATED|PF_NOCONTEST|PF_FAULT|PF_LOSTLIFE));
|
||||
|
||||
|
|
@ -2320,7 +2320,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
|||
memcpy(players[player].availabilities, availabilities, sizeof(availabilities));
|
||||
p->followitem = followitem;
|
||||
|
||||
p->starpostnum = starpostnum;
|
||||
p->cheatchecknum = cheatchecknum;
|
||||
p->exiting = exiting;
|
||||
p->karthud[khud_finish] = khudfinish;
|
||||
p->karthud[khud_cardanimation] = khudcardanimation;
|
||||
|
|
@ -2485,22 +2485,22 @@ void G_SpawnPlayer(INT32 playernum)
|
|||
return;
|
||||
|
||||
P_SpawnPlayer(playernum);
|
||||
G_MovePlayerToSpawnOrStarpost(playernum);
|
||||
G_MovePlayerToSpawnOrCheatcheck(playernum);
|
||||
LUA_HookPlayer(&players[playernum], HOOK(PlayerSpawn)); // Lua hook for player spawning :)
|
||||
}
|
||||
|
||||
void G_MovePlayerToSpawnOrStarpost(INT32 playernum)
|
||||
void G_MovePlayerToSpawnOrCheatcheck(INT32 playernum)
|
||||
{
|
||||
#if 0
|
||||
if (leveltime <= introtime && !players[playernum].spectator)
|
||||
P_MovePlayerToSpawn(playernum, G_FindMapStart(playernum));
|
||||
else
|
||||
P_MovePlayerToStarpost(playernum);
|
||||
P_MovePlayerToCheatcheck(playernum);
|
||||
#else
|
||||
// Player's first spawn should be at the "map start".
|
||||
// I.e. level load or join mid game.
|
||||
if (leveltime > starttime && players[playernum].jointime > 1 && K_PodiumSequence() == false)
|
||||
P_MovePlayerToStarpost(playernum);
|
||||
P_MovePlayerToCheatcheck(playernum);
|
||||
else
|
||||
P_MovePlayerToSpawn(playernum, G_FindMapStart(playernum));
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ mapthing_t *G_FindBattleStart(INT32 playernum);
|
|||
mapthing_t *G_FindRaceStart(INT32 playernum);
|
||||
mapthing_t *G_FindPodiumStart(INT32 playernum);
|
||||
mapthing_t *G_FindMapStart(INT32 playernum);
|
||||
void G_MovePlayerToSpawnOrStarpost(INT32 playernum);
|
||||
void G_MovePlayerToSpawnOrCheatcheck(INT32 playernum);
|
||||
void G_SpawnPlayer(INT32 playernum);
|
||||
|
||||
// Can be called by the startup code or M_Responder.
|
||||
|
|
|
|||
10
src/info.c
10
src/info.c
|
|
@ -157,7 +157,6 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"USPK", // Floor spike
|
||||
"WSPK", // Wall spike
|
||||
"WSPB", // Wall spike base
|
||||
"STPT", // Starpost
|
||||
"BMNE", // Big floating mine
|
||||
"PUMI", // Rollout Rock
|
||||
|
||||
|
|
@ -1949,13 +1948,6 @@ state_t states[NUMSTATES] =
|
|||
{SPR_WSPK, 4,-1, {NULL}, 0, 0, S_NULL}, // S_WALLSPIKED1 -- Busted spike particles
|
||||
{SPR_WSPK, 5,-1, {NULL}, 0, 0, S_NULL}, // S_WALLSPIKED2
|
||||
|
||||
// Starpost
|
||||
{SPR_STPT, 0 , -1, {NULL}, 0, 0, S_NULL}, // S_STARPOST_IDLE
|
||||
{SPR_STPT, FF_ANIMATE|17, -1, {NULL}, 5, 1, S_NULL}, // S_STARPOST_FLASH
|
||||
{SPR_STPT, FF_ANIMATE|13, 2, {NULL}, 1, 1, S_STARPOST_SPIN}, // S_STARPOST_STARTSPIN
|
||||
{SPR_STPT, FF_ANIMATE|1 , 23, {NULL}, 11, 1, S_STARPOST_ENDSPIN}, // S_STARPOST_SPIN
|
||||
{SPR_STPT, FF_ANIMATE|15, 2, {NULL}, 1, 1, S_STARPOST_FLASH}, // S_STARPOST_ENDSPIN
|
||||
|
||||
// Big floating mine
|
||||
{SPR_BMNE, 0, 2, {A_Look}, ((224<<FRACBITS)|1), 0, S_BIGMINE_IDLE}, // S_BIGMINE_IDLE
|
||||
{SPR_BMNE, 1, 2, {A_MineRange}, 112, 0, S_BIGMINE_ALERT2}, // S_BIGMINE_ALERT1
|
||||
|
|
@ -9212,7 +9204,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_STARPOST
|
||||
{ // MT_CHEATCHECK
|
||||
502, // doomednum
|
||||
S_INVISIBLE, // spawnstate
|
||||
1, // spawnhealth
|
||||
|
|
|
|||
10
src/info.h
10
src/info.h
|
|
@ -710,7 +710,6 @@ typedef enum sprite
|
|||
SPR_USPK, // Floor spike
|
||||
SPR_WSPK, // Wall spike
|
||||
SPR_WSPB, // Wall spike base
|
||||
SPR_STPT, // Starpost
|
||||
SPR_BMNE, // Big floating mine
|
||||
SPR_PUMI, // Rollout Rock
|
||||
|
||||
|
|
@ -2432,13 +2431,6 @@ typedef enum state
|
|||
S_WALLSPIKED1,
|
||||
S_WALLSPIKED2,
|
||||
|
||||
// Starpost
|
||||
S_STARPOST_IDLE,
|
||||
S_STARPOST_FLASH,
|
||||
S_STARPOST_STARTSPIN,
|
||||
S_STARPOST_SPIN,
|
||||
S_STARPOST_ENDSPIN,
|
||||
|
||||
// Big floating mine
|
||||
S_BIGMINE_IDLE,
|
||||
S_BIGMINE_ALERT1,
|
||||
|
|
@ -6022,7 +6014,7 @@ typedef enum mobj_type
|
|||
MT_SPIKE,
|
||||
MT_WALLSPIKE,
|
||||
MT_WALLSPIKEBASE,
|
||||
MT_STARPOST,
|
||||
MT_CHEATCHECK,
|
||||
MT_BIGMINE,
|
||||
MT_BLASTEXECUTOR,
|
||||
MT_CANNONLAUNCHER,
|
||||
|
|
|
|||
|
|
@ -5328,12 +5328,12 @@ static void K_DrawWaypointDebugger(void)
|
|||
V_DrawString(8, 166, 0, va("Next Waypoint ID: %d%s", K_GetWaypointID(stplyr->nextwaypoint), ((stplyr->pflags & PF_WRONGWAY) ? " (WRONG WAY)" : "")));
|
||||
V_DrawString(8, 176, 0, va("Finishline Distance: %d", stplyr->distancetofinish));
|
||||
|
||||
if (numstarposts > 0)
|
||||
if (numcheatchecks > 0)
|
||||
{
|
||||
if (stplyr->starpostnum == numstarposts)
|
||||
V_DrawString(8, 186, 0, va("Checkpoint: %d / %d (Can finish)", stplyr->starpostnum, numstarposts));
|
||||
if (stplyr->cheatchecknum == numcheatchecks)
|
||||
V_DrawString(8, 186, 0, va("Cheat Check: %d / %d (Can finish)", stplyr->cheatchecknum, numcheatchecks));
|
||||
else
|
||||
V_DrawString(8, 186, 0, va("Checkpoint: %d / %d", stplyr->starpostnum, numstarposts));
|
||||
V_DrawString(8, 186, 0, va("Cheat Check: %d / %d", stplyr->cheatchecknum, numcheatchecks));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2415,7 +2415,7 @@ msgstr ""
|
|||
|
||||
#: m_menu.c:3271
|
||||
msgid ""
|
||||
"Retry this act from the last starpost?\n"
|
||||
"Retry this act from the last cheatcheck?\n"
|
||||
"\n"
|
||||
"(Press 'Y' to confirm)\n"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -497,8 +497,8 @@ static int player_get(lua_State *L)
|
|||
lua_pushinteger(L, plr->ctfteam);
|
||||
else if (fastcmp(field,"checkskip"))
|
||||
lua_pushinteger(L, plr->checkskip);
|
||||
else if (fastcmp(field,"starpostnum"))
|
||||
lua_pushinteger(L, plr->starpostnum);
|
||||
else if (fastcmp(field,"cheatchecknum"))
|
||||
lua_pushinteger(L, plr->cheatchecknum);
|
||||
else if (fastcmp(field,"lastsidehit"))
|
||||
lua_pushinteger(L, plr->lastsidehit);
|
||||
else if (fastcmp(field,"lastlinehit"))
|
||||
|
|
@ -895,8 +895,8 @@ static int player_set(lua_State *L)
|
|||
plr->ctfteam = (INT32)luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"checkskip"))
|
||||
plr->checkskip = (INT32)luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"starpostnum"))
|
||||
plr->starpostnum = (INT32)luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"cheatchecknum"))
|
||||
plr->cheatchecknum = (INT32)luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"lastsidehit"))
|
||||
plr->lastsidehit = (INT16)luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"lastlinehit"))
|
||||
|
|
|
|||
|
|
@ -5515,9 +5515,9 @@ void A_MixUp(mobj_t *actor)
|
|||
UINT16 carry1,carry2; //carry
|
||||
INT32 transspeed; //player speed
|
||||
|
||||
// Starpost stuff
|
||||
fixed_t starpostx, starposty, starpostz;
|
||||
INT32 starpostnum;
|
||||
// Cheatcheck stuff
|
||||
fixed_t cheatcheckx, cheatchecky, cheatcheckz;
|
||||
INT32 cheatchecknum;
|
||||
|
||||
INT32 mflags2;
|
||||
|
||||
|
|
@ -5557,20 +5557,20 @@ void A_MixUp(mobj_t *actor)
|
|||
angle = players[one].mo->angle;
|
||||
drawangle = players[one].drawangle;
|
||||
|
||||
starpostx = players[one].respawn.pointx;
|
||||
starposty = players[one].respawn.pointy;
|
||||
starpostz = players[one].respawn.pointz;
|
||||
starpostnum = players[one].starpostnum;
|
||||
cheatcheckx = players[one].respawn.pointx;
|
||||
cheatchecky = players[one].respawn.pointy;
|
||||
cheatcheckz = players[one].respawn.pointz;
|
||||
cheatchecknum = players[one].cheatchecknum;
|
||||
|
||||
mflags2 = players[one].mo->flags2;
|
||||
|
||||
P_MixUp(players[one].mo, players[two].mo->x, players[two].mo->y, players[two].mo->z, players[two].mo->angle,
|
||||
players[two].respawn.pointx, players[two].respawn.pointy, players[two].respawn.pointz,
|
||||
players[two].starpostnum, 0, 0,
|
||||
players[two].cheatchecknum, 0, 0,
|
||||
FRACUNIT, players[two].drawangle, players[two].mo->flags2);
|
||||
|
||||
P_MixUp(players[two].mo, x, y, z, angle, starpostx, starposty, starpostz,
|
||||
starpostnum, 0, 0,
|
||||
P_MixUp(players[two].mo, x, y, z, angle, cheatcheckx, cheatchecky, cheatcheckz,
|
||||
cheatchecknum, 0, 0,
|
||||
FRACUNIT, drawangle, mflags2);
|
||||
|
||||
//carry set after mixup. Stupid P_ResetPlayer() takes away some of the stuff we look for...
|
||||
|
|
@ -5595,7 +5595,7 @@ void A_MixUp(mobj_t *actor)
|
|||
|
||||
// Star post stuff
|
||||
fixed_t spposition[MAXPLAYERS][3];
|
||||
INT32 starpostnum[MAXPLAYERS];
|
||||
INT32 cheatchecknum[MAXPLAYERS];
|
||||
|
||||
INT32 flags2[MAXPLAYERS];
|
||||
|
||||
|
|
@ -5630,7 +5630,7 @@ void A_MixUp(mobj_t *actor)
|
|||
spposition[counter][0] = players[i].respawn.pointx;
|
||||
spposition[counter][1] = players[i].respawn.pointy;
|
||||
spposition[counter][2] = players[i].respawn.pointz;
|
||||
starpostnum[counter] = players[i].starpostnum;
|
||||
cheatchecknum[counter] = players[i].cheatchecknum;
|
||||
|
||||
flags2[counter] = players[i].mo->flags2;
|
||||
|
||||
|
|
@ -5670,7 +5670,7 @@ void A_MixUp(mobj_t *actor)
|
|||
|
||||
P_MixUp(players[i].mo, position[teleportfrom][0], position[teleportfrom][1], position[teleportfrom][2], anglepos[teleportfrom][0],
|
||||
spposition[teleportfrom][0], spposition[teleportfrom][1], spposition[teleportfrom][2],
|
||||
starpostnum[teleportfrom], 0, 0,
|
||||
cheatchecknum[teleportfrom], 0, 0,
|
||||
FRACUNIT, anglepos[teleportfrom][1], flags2[teleportfrom]);
|
||||
|
||||
//...carry after. same reasoning.
|
||||
|
|
|
|||
|
|
@ -685,8 +685,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
case MT_BLUEFLAG:
|
||||
return;
|
||||
|
||||
case MT_STARPOST:
|
||||
P_TouchStarPost(special, player, special->thing_args[1]);
|
||||
case MT_CHEATCHECK:
|
||||
P_TouchCheatcheck(special, player, special->thing_args[1]);
|
||||
return;
|
||||
|
||||
case MT_BIGTUMBLEWEED:
|
||||
|
|
@ -743,20 +743,20 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
special->shadowscale = 0;
|
||||
}
|
||||
|
||||
/** Saves a player's level progress at a star post
|
||||
/** Saves a player's level progress at a Cheat Check
|
||||
*
|
||||
* \param post The star post to trigger
|
||||
* \param player The player that should receive the checkpoint
|
||||
* \param snaptopost If true, the respawn point will use the star post's position, otherwise player x/y and star post z
|
||||
* \param post The Cheat Check to trigger
|
||||
* \param player The player that should receive the cheatcheck
|
||||
* \param snaptopost If true, the respawn point will use the cheatcheck's position, otherwise player x/y and star post z
|
||||
*/
|
||||
void P_TouchStarPost(mobj_t *post, player_t *player, boolean snaptopost)
|
||||
void P_TouchCheatcheck(mobj_t *post, player_t *player, boolean snaptopost)
|
||||
{
|
||||
mobj_t *toucher = player->mo;
|
||||
|
||||
(void)snaptopost;
|
||||
|
||||
// Player must have touched all previous starposts
|
||||
if (post->health - player->starpostnum > 1)
|
||||
// Player must have touched all previous cheatchecks
|
||||
if (post->health - player->cheatchecknum > 1)
|
||||
{
|
||||
if (!player->checkskip)
|
||||
S_StartSound(toucher, sfx_lose);
|
||||
|
|
@ -767,14 +767,14 @@ void P_TouchStarPost(mobj_t *post, player_t *player, boolean snaptopost)
|
|||
// With the parameter + angle setup, we can go up to 1365 star posts. Who needs that many?
|
||||
if (post->health > 1365)
|
||||
{
|
||||
CONS_Debug(DBG_GAMELOGIC, "Bad Starpost Number!\n");
|
||||
CONS_Debug(DBG_GAMELOGIC, "Bad Cheatcheck Number!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (player->starpostnum >= post->health)
|
||||
if (player->cheatchecknum >= post->health)
|
||||
return; // Already hit this post
|
||||
|
||||
player->starpostnum = post->health;
|
||||
player->cheatchecknum = post->health;
|
||||
}
|
||||
|
||||
static void P_AddBrokenPrison(mobj_t *target, mobj_t *source)
|
||||
|
|
|
|||
|
|
@ -537,7 +537,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
void P_PlayerRingBurst(player_t *player, INT32 num_rings); /// \todo better fit in p_user.c
|
||||
|
||||
void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck);
|
||||
void P_TouchStarPost(mobj_t *starpost, player_t *player, boolean snaptopost);
|
||||
void P_TouchCheatcheck(mobj_t *cheatcheck, player_t *player, boolean snaptopost);
|
||||
void P_CheckTimeLimit(void);
|
||||
void P_CheckPointLimit(void);
|
||||
boolean P_CheckRacers(void);
|
||||
|
|
@ -558,9 +558,9 @@ extern INT32 ceilmovesound;
|
|||
#define CARRYFACTOR (FRACUNIT-ORIG_FRICTION)
|
||||
|
||||
void P_MixUp(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z, angle_t angle,
|
||||
INT16 starpostx, INT16 starposty, INT16 starpostz,
|
||||
INT32 starpostnum, tic_t starposttime, angle_t starpostangle,
|
||||
fixed_t starpostscale, angle_t drawangle, INT32 flags2);
|
||||
INT16 cheatcheckx, INT16 cheatchecky, INT16 cheatcheckz,
|
||||
INT32 cheatchecknum, tic_t cheatchecktime, angle_t cheatcheckangle,
|
||||
fixed_t cheatcheckscale, angle_t drawangle, INT32 flags2);
|
||||
boolean P_Teleport(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z, angle_t angle, boolean flash, boolean dontstopmove);
|
||||
boolean P_SetMobjStateNF(mobj_t *mobj, statenum_t state);
|
||||
boolean P_CheckMissileSpawn(mobj_t *th);
|
||||
|
|
|
|||
12
src/p_mobj.c
12
src/p_mobj.c
|
|
@ -12141,7 +12141,7 @@ void P_MovePlayerToSpawn(INT32 playernum, mapthing_t *mthing)
|
|||
P_AfterPlayerSpawn(playernum);
|
||||
}
|
||||
|
||||
void P_MovePlayerToStarpost(INT32 playernum)
|
||||
void P_MovePlayerToCheatcheck(INT32 playernum)
|
||||
{
|
||||
fixed_t z;
|
||||
sector_t *sector;
|
||||
|
|
@ -12876,7 +12876,7 @@ void P_InitSkyboxPoint(mobj_t *mobj, mapthing_t *mthing)
|
|||
P_SetTarget(&skyboxviewpnts[tag], mobj);
|
||||
}
|
||||
|
||||
static boolean P_MapAlreadyHasStarPost(mobj_t *mobj)
|
||||
static boolean P_MapAlreadyHasCheatcheck(mobj_t *mobj)
|
||||
{
|
||||
thinker_t *th;
|
||||
mobj_t *mo2;
|
||||
|
|
@ -12891,7 +12891,7 @@ static boolean P_MapAlreadyHasStarPost(mobj_t *mobj)
|
|||
if (mo2 == mobj)
|
||||
continue;
|
||||
|
||||
if (mo2->type == MT_STARPOST && mo2->health == mobj->health)
|
||||
if (mo2->type == MT_CHEATCHECK && mo2->health == mobj->health)
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -13126,10 +13126,10 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
|
|||
|
||||
mobj->flags2 |= MF2_AXIS;
|
||||
break;
|
||||
case MT_STARPOST:
|
||||
case MT_CHEATCHECK:
|
||||
mobj->health = mthing->thing_args[0] + 1;
|
||||
if (!P_MapAlreadyHasStarPost(mobj))
|
||||
numstarposts++;
|
||||
if (!P_MapAlreadyHasCheatcheck(mobj))
|
||||
numcheatchecks++;
|
||||
break;
|
||||
case MT_SPIKE:
|
||||
// Pop up spikes!
|
||||
|
|
|
|||
|
|
@ -533,7 +533,7 @@ void P_MobjCheckWater(mobj_t *mobj);
|
|||
// Player spawn points
|
||||
void P_SpawnPlayer(INT32 playernum);
|
||||
void P_MovePlayerToSpawn(INT32 playernum, mapthing_t *mthing);
|
||||
void P_MovePlayerToStarpost(INT32 playernum);
|
||||
void P_MovePlayerToCheatcheck(INT32 playernum);
|
||||
void P_AfterPlayerSpawn(INT32 playernum);
|
||||
|
||||
fixed_t P_GetMobjSpawnHeight(const mobjtype_t mobjtype, const fixed_t x, const fixed_t y, const fixed_t dz, const fixed_t offset, const size_t layer, const boolean flip, const fixed_t scale);
|
||||
|
|
@ -569,7 +569,7 @@ extern INT32 modulothing;
|
|||
#define MAXHUNTEMERALDS 64
|
||||
extern mapthing_t *huntemeralds[MAXHUNTEMERALDS];
|
||||
extern INT32 numhuntemeralds;
|
||||
extern INT32 numstarposts;
|
||||
extern INT32 numcheatchecks;
|
||||
extern UINT16 bossdisabled;
|
||||
extern boolean stoppedclock;
|
||||
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
|||
WRITEUINT8(save->p, players[i].laps);
|
||||
WRITEUINT8(save->p, players[i].latestlap);
|
||||
WRITEUINT32(save->p, players[i].lapPoints);
|
||||
WRITEINT32(save->p, players[i].starpostnum);
|
||||
WRITEINT32(save->p, players[i].cheatchecknum);
|
||||
|
||||
WRITEUINT8(save->p, players[i].ctfteam);
|
||||
|
||||
|
|
@ -729,7 +729,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
|||
players[i].laps = READUINT8(save->p); // Number of laps (optional)
|
||||
players[i].latestlap = READUINT8(save->p);
|
||||
players[i].lapPoints = READUINT32(save->p);
|
||||
players[i].starpostnum = READINT32(save->p);
|
||||
players[i].cheatchecknum = READINT32(save->p);
|
||||
|
||||
players[i].ctfteam = READUINT8(save->p); // 1 == Red, 2 == Blue
|
||||
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ mapthing_t *mapthings;
|
|||
sector_t *spawnsectors;
|
||||
line_t *spawnlines;
|
||||
side_t *spawnsides;
|
||||
INT32 numstarposts;
|
||||
INT32 numcheatchecks;
|
||||
UINT16 bossdisabled;
|
||||
boolean stoppedclock;
|
||||
boolean levelloading;
|
||||
|
|
@ -1712,8 +1712,8 @@ static void ParseTextmapSectorParameter(UINT32 i, const char *param, const char
|
|||
sectors[i].specialflags |= SSF_DOUBLESTEPUP;
|
||||
else if (fastcmp(param, "nostepdown") && fastcmp("true", val))
|
||||
sectors[i].specialflags |= SSF_NOSTEPDOWN;
|
||||
else if (fastcmp(param, "starpostactivator") && fastcmp("true", val))
|
||||
sectors[i].specialflags |= SSF_STARPOSTACTIVATOR;
|
||||
else if ((fastcmp(param, "cheatcheckactivator") || fastcmp(param, "starpostactivator")) && fastcmp("true", val))
|
||||
sectors[i].specialflags |= SSF_CHEATCHECKACTIVATOR;
|
||||
else if (fastcmp(param, "exit") && fastcmp("true", val))
|
||||
sectors[i].specialflags |= SSF_EXIT;
|
||||
else if (fastcmp(param, "deleteitems") && fastcmp("true", val))
|
||||
|
|
@ -2888,8 +2888,8 @@ static void P_WriteTextmap(void)
|
|||
fprintf(f, "doublestepup = true;\n");
|
||||
if (wsectors[i].specialflags & SSF_NOSTEPDOWN)
|
||||
fprintf(f, "nostepdown = true;\n");
|
||||
if (wsectors[i].specialflags & SSF_STARPOSTACTIVATOR)
|
||||
fprintf(f, "starpostactivator = true;\n");
|
||||
if (wsectors[i].specialflags & SSF_CHEATCHECKACTIVATOR)
|
||||
fprintf(f, "cheatcheckactivator = true;\n");
|
||||
if (wsectors[i].specialflags & SSF_EXIT)
|
||||
fprintf(f, "exit = true;\n");
|
||||
if (wsectors[i].specialflags & SSF_DELETEITEMS)
|
||||
|
|
@ -6561,8 +6561,8 @@ static void P_ConvertBinarySectorTypes(void)
|
|||
|
||||
switch(GETSECSPECIAL(sectors[i].special, 4))
|
||||
{
|
||||
case 1: //Star post activator
|
||||
sectors[i].specialflags |= SSF_STARPOSTACTIVATOR;
|
||||
case 1: //Cheat Check activator
|
||||
sectors[i].specialflags |= SSF_CHEATCHECKACTIVATOR;
|
||||
break;
|
||||
case 2: //Exit
|
||||
sectors[i].specialflags |= SSF_EXIT;
|
||||
|
|
@ -6763,11 +6763,11 @@ static void P_ConvertBinaryThingTypes(void)
|
|||
case 500: //Air bubble patch
|
||||
mapthings[i].thing_args[0] = !!(mapthings[i].options & MTF_AMBUSH);
|
||||
break;
|
||||
case 502: //Star post
|
||||
case 502: //Cheat Check
|
||||
if (mapthings[i].extrainfo)
|
||||
// Allow thing Parameter to define star post num too!
|
||||
// For starposts above param 15 (the 16th), add 360 to the angle like before and start parameter from 1 (NOT 0)!
|
||||
// So the 16th starpost is angle=0 param=15, the 17th would be angle=360 param=1.
|
||||
// For cheatchecks above param 15 (the 16th), add 360 to the angle like before and start parameter from 1 (NOT 0)!
|
||||
// So the 16th cheatcheck is angle=0 param=15, the 17th would be angle=360 param=1.
|
||||
// This seems more intuitive for mappers to use, since most SP maps won't have over 16 consecutive star posts.
|
||||
mapthings[i].thing_args[0] = mapthings[i].extrainfo + (mapthings[i].angle/360) * 15;
|
||||
else
|
||||
|
|
@ -7548,7 +7548,7 @@ static void P_InitLevelSettings(void)
|
|||
hunt1 = hunt2 = hunt3 = NULL;
|
||||
|
||||
// circuit, race and competition stuff
|
||||
numstarposts = 0;
|
||||
numcheatchecks = 0;
|
||||
timeinmap = 0;
|
||||
|
||||
// special stage
|
||||
|
|
|
|||
16
src/p_spec.c
16
src/p_spec.c
|
|
@ -1928,7 +1928,7 @@ static void K_HandleLapIncrement(player_t *player)
|
|||
return;
|
||||
}
|
||||
|
||||
if ((player->starpostnum == numstarposts) || (player->laps == 0))
|
||||
if ((player->cheatchecknum == numcheatchecks) || (player->laps == 0))
|
||||
{
|
||||
size_t i = 0;
|
||||
UINT8 nump = 0;
|
||||
|
|
@ -1985,7 +1985,7 @@ static void K_HandleLapIncrement(player_t *player)
|
|||
if (netgame && player->laps > numlaps)
|
||||
CON_LogMessage(va(M_GetText("%s has finished the race.\n"), player_names[player-players]));
|
||||
|
||||
player->starpostnum = 0;
|
||||
player->cheatchecknum = 0;
|
||||
|
||||
if (gametyperules & GTR_SPECIALSTART)
|
||||
{
|
||||
|
|
@ -2131,7 +2131,7 @@ static void K_HandleLapIncrement(player_t *player)
|
|||
gamedata->deferredconditioncheck = true;
|
||||
}
|
||||
}
|
||||
else if (player->starpostnum)
|
||||
else if (player->cheatchecknum)
|
||||
{
|
||||
S_StartSound(player->mo, sfx_s26d);
|
||||
}
|
||||
|
|
@ -2143,9 +2143,9 @@ static void K_HandleLapDecrement(player_t *player)
|
|||
{
|
||||
if (player)
|
||||
{
|
||||
if ((player->starpostnum == 0) && (player->laps > 0))
|
||||
if ((player->cheatchecknum == 0) && (player->laps > 0))
|
||||
{
|
||||
player->starpostnum = numstarposts;
|
||||
player->cheatchecknum = numcheatchecks;
|
||||
player->laps--;
|
||||
curlap = UINT32_MAX;
|
||||
}
|
||||
|
|
@ -5222,11 +5222,11 @@ static void P_EvaluateSpecialFlags(player_t *player, sector_t *sector, sector_t
|
|||
player->onconveyor = 2;
|
||||
if (sector->specialflags & SSF_CONVEYOR)
|
||||
player->onconveyor = 4;
|
||||
if (sector->specialflags & SSF_STARPOSTACTIVATOR)
|
||||
if (sector->specialflags & SSF_CHEATCHECKACTIVATOR)
|
||||
{
|
||||
mobj_t *post = P_GetObjectTypeInSectorNum(MT_STARPOST, sector - sectors);
|
||||
mobj_t *post = P_GetObjectTypeInSectorNum(MT_CHEATCHECK, sector - sectors);
|
||||
if (post)
|
||||
P_TouchStarPost(post, player, false);
|
||||
P_TouchCheatcheck(post, player, false);
|
||||
}
|
||||
if (sector->specialflags & SSF_EXIT)
|
||||
P_ProcessExitSector(player, sectag);
|
||||
|
|
|
|||
|
|
@ -32,16 +32,16 @@
|
|||
|
||||
*/
|
||||
void P_MixUp(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z, angle_t angle,
|
||||
INT16 starpostx, INT16 starposty, INT16 starpostz,
|
||||
INT32 starpostnum, tic_t starposttime, angle_t starpostangle,
|
||||
fixed_t starpostscale, angle_t drawangle, INT32 flags2)
|
||||
INT16 cheatcheckx, INT16 cheatchecky, INT16 cheatcheckz,
|
||||
INT32 cheatchecknum, tic_t cheatchecktime, angle_t cheatcheckangle,
|
||||
fixed_t cheatcheckscale, angle_t drawangle, INT32 flags2)
|
||||
{
|
||||
const INT32 takeflags2 = MF2_OBJECTFLIP;
|
||||
UINT8 i;
|
||||
|
||||
(void)starposttime;
|
||||
(void)starpostangle;
|
||||
(void)starpostscale;
|
||||
(void)cheatchecktime;
|
||||
(void)cheatcheckangle;
|
||||
(void)cheatcheckscale;
|
||||
|
||||
// the move is ok,
|
||||
// so link the thing into its new position
|
||||
|
|
@ -88,11 +88,11 @@ void P_MixUp(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z, angle_t angle,
|
|||
if (!thing->tracer)
|
||||
thing->player->speed = 0;
|
||||
|
||||
// Starpost information
|
||||
thing->player->respawn.pointx = starpostx;
|
||||
thing->player->respawn.pointy = starposty;
|
||||
thing->player->respawn.pointz = starpostz;
|
||||
thing->player->starpostnum = starpostnum;
|
||||
// Cheatcheck information
|
||||
thing->player->respawn.pointx = cheatcheckx;
|
||||
thing->player->respawn.pointy = cheatchecky;
|
||||
thing->player->respawn.pointz = cheatcheckz;
|
||||
thing->player->cheatchecknum = cheatchecknum;
|
||||
|
||||
thing->player->drawangle = drawangle;
|
||||
|
||||
|
|
|
|||
|
|
@ -3171,7 +3171,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
thiscam->radius = 20*cameraScale;
|
||||
thiscam->height = 16*cameraScale;
|
||||
|
||||
// Don't run while respawning from a starpost
|
||||
// Don't run while respawning from a cheatcheck
|
||||
// Inu 4/8/13 Why not?!
|
||||
// if (leveltime > 0 && timeinmap <= 0)
|
||||
// return true;
|
||||
|
|
|
|||
|
|
@ -367,7 +367,7 @@ typedef enum
|
|||
SSF_WINDCURRENT = 1<<3,
|
||||
SSF_CONVEYOR = 1<<4,
|
||||
// free: 1<<5,
|
||||
SSF_STARPOSTACTIVATOR = 1<<6,
|
||||
SSF_CHEATCHECKACTIVATOR = 1<<6,
|
||||
SSF_EXIT = 1<<7,
|
||||
SSF_DELETEITEMS = 1<<8,
|
||||
// free: 1<<9,
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"spring", false, 112, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spring"},
|
||||
{"statu1", true, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Pushing a statue"},
|
||||
{"statu2", true, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Pushing a statue"},
|
||||
{"strpst", true, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Starpost"},
|
||||
{"strpst", true, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Cheatcheck"},
|
||||
{"supert", true, 127, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Transformation"},
|
||||
{"telept", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dash"},
|
||||
{"tink" , false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Tink"},
|
||||
|
|
@ -500,7 +500,7 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3k60", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Accelerating"},
|
||||
{"s3k61", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Drilling"},
|
||||
{"s3k62", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Jump"},
|
||||
{"s3k63", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Starpost"},
|
||||
{"s3k63", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Cheatcheck"},
|
||||
{"s3k64", false, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR, "Clatter"},
|
||||
{"s3k65", false, 255, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Got sphere"}, // Blue Spheres
|
||||
{"s3k66", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Special stage end"},
|
||||
|
|
@ -706,7 +706,7 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"cdfm27", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
||||
{"cdfm28", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
||||
{"cdfm29", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bubble gasp"},
|
||||
{"cdfm30", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Starpost"},
|
||||
{"cdfm30", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Cheatcheck"},
|
||||
{"cdfm31", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Warp"},
|
||||
{"cdfm32", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
||||
{"cdfm33", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue