mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-03-15 07:31:55 +00:00
Add distance based on air time
Using the respawn command gives you barely any distance, while flying off huge MGZ pits gives you a bunch.
This commit is contained in:
parent
d062a35a3a
commit
0879459142
7 changed files with 30 additions and 23 deletions
|
|
@ -574,6 +574,7 @@ static inline void resynch_write_player(resynch_pak *rsp, const size_t i)
|
|||
rsp->kartstuff[j] = LONG(players[i].kartstuff[j]); // SRB2kart
|
||||
|
||||
rsp->frameangle = (angle_t)LONG(players[i].frameangle); // SRB2kart
|
||||
rsp->airtime = (tic_t)LONG(players[i].airtime);
|
||||
|
||||
// Score is resynched in the rspfirm resync packet
|
||||
rsp->health = 0; // resynched with mo health
|
||||
|
|
@ -693,6 +694,7 @@ static void resynch_read_player(resynch_pak *rsp)
|
|||
players[i].kartstuff[j] = LONG(rsp->kartstuff[j]); // SRB2kart
|
||||
|
||||
players[i].frameangle = (angle_t)LONG(rsp->frameangle); // SRB2kart
|
||||
players[i].airtime = (tic_t)LONG(rsp->airtime);
|
||||
|
||||
// Score is resynched in the rspfirm resync packet
|
||||
players[i].health = rsp->health;
|
||||
|
|
|
|||
|
|
@ -215,6 +215,7 @@ typedef struct
|
|||
|
||||
INT32 kartstuff[NUMKARTSTUFF]; // SRB2kart
|
||||
angle_t frameangle; // SRB2kart
|
||||
tic_t airtime;
|
||||
|
||||
// Score is resynched in the confirm resync packet
|
||||
INT32 health;
|
||||
|
|
|
|||
|
|
@ -477,7 +477,8 @@ typedef struct player_s
|
|||
INT16 rturn_max[MAXPREDICTTICS]; // Ditto but for full-right
|
||||
UINT32 distancetofinish;
|
||||
waypoint_t *nextwaypoint;
|
||||
respawnvars_t respawnvars; // SRB2Kart: respawn info
|
||||
respawnvars_t respawnvars; // Respawn info
|
||||
tic_t airtime; // Keep track of how long you've been in the air
|
||||
|
||||
// Bit flags.
|
||||
// See pflags_t, above.
|
||||
|
|
|
|||
|
|
@ -110,8 +110,9 @@ void K_DoIngameRespawn(player_t *player)
|
|||
// Set up respawn position if invalid
|
||||
if (player->respawnvars.wp != NULL)
|
||||
{
|
||||
const UINT32 dist = RESPAWN_DIST + (player->airtime * 32);
|
||||
player->respawnvars.distanceleft = (dist * mapobjectscale) / FRACUNIT;
|
||||
K_RespawnAtWaypoint(player, player->respawnvars.wp);
|
||||
player->respawnvars.distanceleft = (RESPAWN_DIST * mapobjectscale) / FRACUNIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -216,6 +216,8 @@ static int player_get(lua_State *L)
|
|||
LUA_PushUserdata(L, plr->kartstuff, META_KARTSTUFF);
|
||||
else if (fastcmp(field,"frameangle"))
|
||||
lua_pushangle(L, plr->frameangle);
|
||||
else if (fastcmp(field,"airtime"))
|
||||
lua_pushinteger(L, plr->airtime);
|
||||
else if (fastcmp(field,"pflags"))
|
||||
lua_pushinteger(L, plr->pflags);
|
||||
else if (fastcmp(field,"panim"))
|
||||
|
|
@ -473,6 +475,8 @@ static int player_set(lua_State *L)
|
|||
return NOSET;
|
||||
else if (fastcmp(field,"frameangle"))
|
||||
plr->frameangle = luaL_checkangle(L, 3);
|
||||
else if (fastcmp(field,"airtime"))
|
||||
plr->airtime = (tic_t)luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"kartspeed"))
|
||||
plr->kartspeed = (UINT8)luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"kartweight"))
|
||||
|
|
|
|||
|
|
@ -278,6 +278,7 @@ static void P_NetArchivePlayers(void)
|
|||
|
||||
WRITEUINT32(save_p, players[i].distancetofinish);
|
||||
WRITEUINT32(save_p, K_GetWaypointHeapIndex(players[i].nextwaypoint));
|
||||
WRITEUINT32(save_p, players[i].airtime);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -443,6 +444,7 @@ static void P_NetUnArchivePlayers(void)
|
|||
|
||||
players[i].distancetofinish = READUINT32(save_p);
|
||||
players[i].nextwaypoint = (waypoint_t *)(size_t)READUINT32(save_p);
|
||||
players[i].airtime = READUINT32(save_p);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
38
src/p_user.c
38
src/p_user.c
|
|
@ -8361,16 +8361,6 @@ void P_PlayerThink(player_t *player)
|
|||
player->awayviewtics = 0; // reset to zero
|
||||
}
|
||||
|
||||
/*
|
||||
if (player->pflags & PF_GLIDING)
|
||||
{
|
||||
if (player->panim != PA_ABILITY)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_ABL1);
|
||||
}
|
||||
else if ((player->pflags & PF_JUMPED) && !player->powers[pw_super] && player->panim != PA_ROLL && player->charability2 == CA2_SPINDASH)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_ATK1);
|
||||
*/
|
||||
|
||||
if (player->flashcount)
|
||||
player->flashcount--;
|
||||
|
||||
|
|
@ -8383,21 +8373,33 @@ void P_PlayerThink(player_t *player)
|
|||
// The timer might've reached zero, but we'll run the remote view camera anyway by setting it to -1.
|
||||
}
|
||||
|
||||
// Track airtime
|
||||
if (P_IsObjectOnGround(player->mo))
|
||||
{
|
||||
player->airtime = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
player->airtime++;
|
||||
}
|
||||
|
||||
cmd = &player->cmd;
|
||||
|
||||
// SRB2kart
|
||||
// Save the dir the player is holding
|
||||
// to allow items to be thrown forward or backward.
|
||||
if (cmd->buttons & BT_FORWARD)
|
||||
{
|
||||
player->kartstuff[k_throwdir] = 1;
|
||||
}
|
||||
else if (cmd->buttons & BT_BACKWARD)
|
||||
{
|
||||
player->kartstuff[k_throwdir] = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
player->kartstuff[k_throwdir] = 0;
|
||||
|
||||
// Add some extra randomization.
|
||||
if (cmd->forwardmove)
|
||||
P_RandomFixed();
|
||||
}
|
||||
|
||||
#ifdef PARANOIA
|
||||
if (player->playerstate == PST_REBORN)
|
||||
|
|
@ -8531,15 +8533,9 @@ void P_PlayerThink(player_t *player)
|
|||
|
||||
// SRB2kart 010217
|
||||
if (leveltime < starttime)
|
||||
player->powers[pw_nocontrol] = 2;
|
||||
/*
|
||||
if ((gametype == GT_RACE || gametype == GT_COMPETITION) && leveltime < 4*TICRATE)
|
||||
{
|
||||
cmd->buttons &= BT_BRAKE; // Remove all buttons except BT_BRAKE
|
||||
cmd->forwardmove = 0;
|
||||
cmd->sidemove = 0;
|
||||
player->powers[pw_nocontrol] = 2;
|
||||
}
|
||||
*/
|
||||
|
||||
// Synchronizes the "real" amount of time spent in the level.
|
||||
if (!player->exiting)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue