Lua indecent exposure

This commit is contained in:
NepDisk 2024-10-04 15:58:46 -04:00
parent ce7d345e44
commit 000c5cf15a
14 changed files with 140 additions and 115 deletions

View file

@ -422,7 +422,6 @@ typedef struct player_s
fixed_t boostpower; // Base boost value, for offroad
fixed_t speedboost; // Boost value smoothing for max speed
fixed_t accelboost; // Boost value smoothing for acceleration
fixed_t handleboost; // Boost value smoothing for handling
angle_t boostangle; // angle set when not spun out OR boosted to determine what direction you should keep going at if you're spun out and boosted.
UINT8 tripwireState; // see tripwirestate_t
@ -483,7 +482,7 @@ typedef struct player_s
UINT32 roundscore; // battle score this round
UINT8 emeralds;
UINT8 bumpers;
UINT8 bumper;
INT16 karmadelay;
tic_t overtimekarma; // time to live in overtime comeback
INT16 spheres;

View file

@ -796,13 +796,13 @@ void G_WriteGhostTic(mobj_t *ghost, INT32 playernum)
if (ghost->player && (
ghostext[playernum].kartitem != ghost->player->itemtype ||
ghostext[playernum].kartamount != ghost->player->itemamount ||
ghostext[playernum].kartbumpers != ghost->player->bumpers
ghostext[playernum].kartbumpers != ghost->player->bumper
))
{
ghostext[playernum].flags |= EZT_KART;
ghostext[playernum].kartitem = ghost->player->itemtype;
ghostext[playernum].kartamount = ghost->player->itemamount;
ghostext[playernum].kartbumpers = ghost->player->bumpers;
ghostext[playernum].kartbumpers = ghost->player->bumper;
}
if (ghostext[playernum].flags)
@ -1087,7 +1087,7 @@ void G_ConsGhostTic(INT32 playernum)
if (players[playernum].itemtype != ghostext[playernum].kartitem
|| players[playernum].itemamount != ghostext[playernum].kartamount
|| players[playernum].bumpers != ghostext[playernum].kartbumpers)
|| players[playernum].bumper != ghostext[playernum].kartbumpers)
{
if (demosynced)
CONS_Alert(CONS_WARNING, M_GetText("Demo playback has desynced (item/bumpers)!\n"));
@ -1095,7 +1095,7 @@ void G_ConsGhostTic(INT32 playernum)
players[playernum].itemtype = ghostext[playernum].kartitem;
players[playernum].itemamount = ghostext[playernum].kartamount;
players[playernum].bumpers = ghostext[playernum].kartbumpers;
players[playernum].bumper = ghostext[playernum].kartbumpers;
}
}

View file

@ -1731,7 +1731,7 @@ boolean G_CouldView(INT32 playernum)
// I don't know if we want this actually, but I'll humor the suggestion anyway
if ((gametyperules & GTR_BUMPERS) && !demo.playback)
{
if (player->bumpers <= 0)
if (player->bumper <= 0)
return false;
}
@ -2344,7 +2344,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
else
growshrinktimer = 0;
bumper = players[player].bumpers;
bumper = players[player].bumper;
rings = players[player].rings;
spheres = players[player].spheres;
kickstartaccel = players[player].kickstartaccel;
@ -2449,7 +2449,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
p->itemtype = itemtype;
p->itemamount = itemamount;
p->growshrinktimer = growshrinktimer;
p->bumpers = bumper;
p->bumper = bumper;
p->karmadelay = comebacktime;
p->overtimekarma = 0;
p->eggmanblame = -1;
@ -2931,7 +2931,7 @@ void G_ExitLevel(void)
{
if (playeringame[i] && !players[i].spectator && !players[i].bot)
{
if (players[i].bumpers > 0)
if (players[i].bumper > 0)
{
youlost = false;
break;

View file

@ -116,7 +116,7 @@ void K_CheckBumpers(void)
maxroundscore = players[i].roundscore;
}
if (players[i].bumpers <= 0) // if you don't have any bumpers, you're probably not a winner
if (players[i].bumper <= 0) // if you don't have any bumpers, you're probably not a winner
{
nobumpers = true;
continue;
@ -206,7 +206,7 @@ void K_CheckEmeralds(player_t *player)
continue;
}
players[i].bumpers = 0;
players[i].bumper = 0;
}
K_CheckBumpers();
@ -376,7 +376,7 @@ void K_RunPaperItemSpawners(void)
emeraldsSpawned |= players[i].emeralds;
if ((players[i].exiting > 0 || (players[i].pflags & PF_ELIMINATED))
|| ((gametyperules & GTR_BUMPERS) && players[i].bumpers <= 0))
|| ((gametyperules & GTR_BUMPERS) && players[i].bumper <= 0))
{
continue;
}
@ -748,16 +748,16 @@ void K_SetupMovingCapsule(mapthing_t *mt, mobj_t *mobj)
void K_SpawnPlayerBattleBumpers(player_t *p)
{
if (!p->mo || p->bumpers <= 0)
if (!p->mo || p->bumper <= 0)
return;
{
INT32 i;
angle_t diff = FixedAngle(360*FRACUNIT/p->bumpers);
angle_t diff = FixedAngle(360*FRACUNIT/p->bumper);
angle_t newangle = p->mo->angle;
mobj_t *bump;
for (i = 0; i < p->bumpers; i++)
for (i = 0; i < p->bumper; i++)
{
bump = P_SpawnMobjFromMobj(p->mo,
P_ReturnThrustX(p->mo, newangle + ANGLE_180, 64*FRACUNIT),
@ -817,7 +817,7 @@ aftercapsules:
{
if (!playeringame[i] || players[i].spectator)
continue;
players[i].bumpers = maxbumpers;
players[i].bumper = maxbumpers;
K_SpawnPlayerBattleBumpers(players+i);
}
}

View file

@ -231,7 +231,7 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2)
if (!P_CanPickupItem(t2->player, 2))
return true;
if ((gametyperules & GTR_BUMPERS) && t2->player->bumpers <= 0)
if ((gametyperules & GTR_BUMPERS) && t2->player->bumper <= 0)
{
return true;
}
@ -263,7 +263,7 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2)
if (t1->target && t1->target->player)
{
if ((gametyperules & GTR_CIRCUIT) || t1->target->player->bumpers > 0)
if ((gametyperules & GTR_CIRCUIT) || t1->target->player->bumper > 0)
t2->player->eggmanblame = t1->target->player-players;
else
t2->player->eggmanblame = t2->player-players;

View file

@ -1836,10 +1836,10 @@ static boolean K_drawKartPositionFaces(void)
if (LUA_HudEnabled(hud_battlebumpers))
{
if ((gametyperules & GTR_BUMPERS) && players[rankplayer[i]].bumpers > 0)
if ((gametyperules & GTR_BUMPERS) && players[rankplayer[i]].bumper > 0)
{
V_DrawMappedPatch(bumperx-2, Y, V_HUDTRANS|V_SNAPTOLEFT, kp_tinybumper[0], colormap);
for (j = 1; j < players[rankplayer[i]].bumpers; j++)
for (j = 1; j < players[rankplayer[i]].bumper; j++)
{
bumperx += 5;
V_DrawMappedPatch(bumperx, Y, V_HUDTRANS|V_SNAPTOLEFT, kp_tinybumper[1], colormap);
@ -1864,7 +1864,7 @@ static boolean K_drawKartPositionFaces(void)
if (i == strank)
V_DrawScaledPatch(FACE_X, Y, V_HUDTRANS|V_SNAPTOLEFT, kp_facehighlight[(leveltime / 4) % 8]);
if (gametype == GT_BATTLE && players[rankplayer[i]].bumpers <= 0)
if (gametype == GT_BATTLE && players[rankplayer[i]].bumper <= 0)
V_DrawScaledPatch(FACE_X-4, Y-3, V_HUDTRANS|V_SNAPTOLEFT, kp_ranknobumpers);
else
{
@ -2178,11 +2178,11 @@ void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, IN
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo->color, GTC_CACHE);
V_DrawMappedPatch(x, y-4, 0, faceprefix[players[tab[i].num].skin][FACE_RANK], colormap);
/*if (gametype == GT_BATTLE && players[tab[i].num].bumpers > 0) -- not enough space for this
/*if (gametype == GT_BATTLE && players[tab[i].num].bumper > 0) -- not enough space for this
{
INT32 bumperx = x+19;
V_DrawMappedPatch(bumperx-2, y-4, 0, kp_tinybumper[0], colormap);
for (j = 1; j < players[tab[i].num].bumpers; j++)
for (j = 1; j < players[tab[i].num].bumper; j++)
{
bumperx += 5;
V_DrawMappedPatch(bumperx, y-4, 0, kp_tinybumper[1], colormap);
@ -2193,7 +2193,7 @@ void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, IN
if (tab[i].num == whiteplayer)
V_DrawScaledPatch(x, y-4, 0, kp_facehighlight[(leveltime / 4) % 8]);
if (gametype == GT_BATTLE && players[tab[i].num].bumpers <= 0)
if (gametype == GT_BATTLE && players[tab[i].num].bumper <= 0)
V_DrawScaledPatch(x-4, y-7, 0, kp_ranknobumpers);
else
{
@ -2701,11 +2701,11 @@ static void K_drawKartBumpersOrKarma(void)
INT32 maxbumper = K_StartingBumperCount();
V_DrawMappedPatch(fx+1, fy-2, V_HUDTRANS|splitflags, kp_rankbumper, colormap);
if (stplyr->bumpers > 9 || maxbumper > 9)
if (stplyr->bumper > 9 || maxbumper > 9)
{
UINT8 ln[2];
ln[0] = (stplyr->bumpers / 10 % 10);
ln[1] = (stplyr->bumpers % 10);
ln[0] = (stplyr->bumper / 10 % 10);
ln[1] = (stplyr->bumper % 10);
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, fontv[PINGNUM_FONT].font[ln[0]]);
V_DrawScaledPatch(fx+17, fy, V_HUDTRANS|splitflags, fontv[PINGNUM_FONT].font[ln[1]]);
@ -2718,7 +2718,7 @@ static void K_drawKartBumpersOrKarma(void)
}
else
{
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, kp_facenum[(stplyr->bumpers) % 10]);
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, kp_facenum[(stplyr->bumper) % 10]);
V_DrawScaledPatch(fx+27, fy, V_HUDTRANS|splitflags, kp_facenum[(maxbumper) % 10]);
}
}
@ -2737,15 +2737,15 @@ static void K_drawKartBumpersOrKarma(void)
{
INT32 maxbumper = K_StartingBumperCount();
if (stplyr->bumpers > 9 && maxbumper > 9)
if (stplyr->bumper > 9 && maxbumper > 9)
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_bumperstickerwide, colormap);
else
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_bumpersticker, colormap);
if (bossinfo.boss)
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%d", stplyr->bumpers, maxbumper));
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%d", stplyr->bumper, maxbumper));
else // TODO BETTER HUD
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%d %d", stplyr->bumpers, maxbumper, stplyr->overtimekarma / TICRATE));
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%d %d", stplyr->bumper, maxbumper, stplyr->overtimekarma / TICRATE));
}
}
}
@ -3194,7 +3194,7 @@ static void K_drawKartNameTags(void)
continue;
}
if ((gametyperules & GTR_BUMPERS) && (ntplayer->bumpers <= 0))
if ((gametyperules & GTR_BUMPERS) && (ntplayer->bumper <= 0))
{
// Dead in Battle
continue;
@ -3543,7 +3543,7 @@ static void K_drawKartMinimap(void)
}
// Now we know it's not a display player, handle non-local player exceptions.
if ((gametyperules & GTR_BUMPERS) && players[i].bumpers <= 0)
if ((gametyperules & GTR_BUMPERS) && players[i].bumper <= 0)
continue;
if (players[i].hyudorotimer > 0)
@ -3861,7 +3861,7 @@ static void K_drawBattleFullscreen(void)
else
K_drawKartFinish();
}
else if (stplyr->bumpers <= 0 && stplyr->karmadelay && comeback && !stplyr->spectator && drawcomebacktimer)
else if (stplyr->bumper <= 0 && stplyr->karmadelay && comeback && !stplyr->spectator && drawcomebacktimer)
{
UINT16 t = stplyr->karmadelay/(10*TICRATE);
INT32 txoff, adjust = (r_splitscreen > 1) ? 4 : 6; // normal string is 8, kart string is 12, half of that for ease
@ -4365,8 +4365,8 @@ static void K_drawDistributionDebugger(void)
if (!playeringame[i] || players[i].spectator)
continue;
pingame++;
if (players[i].bumpers > bestbumper)
bestbumper = players[i].bumpers;
if (players[i].bumper > bestbumper)
bestbumper = players[i].bumper;
}
// lovely double loop......
@ -4511,7 +4511,7 @@ void K_drawKartHUD(void)
battlefullscreen = ((gametyperules & (GTR_BUMPERS|GTR_KARMA)) == (GTR_BUMPERS|GTR_KARMA)
&& (stplyr->exiting
|| (stplyr->bumpers <= 0
|| (stplyr->bumper <= 0
&& stplyr->karmadelay > 0
&& !(stplyr->pflags & PF_ELIMINATED)
&& comeback == true

View file

@ -256,7 +256,7 @@ boolean K_IsPlayerLosing(player_t *player)
return true; // Didn't even TRY?
if (battlecapsules || bossinfo.boss)
return (player->bumpers <= 0); // anything short of DNF is COOL
return (player->bumper <= 0); // anything short of DNF is COOL
if (player->position == 1)
return false;
@ -592,7 +592,7 @@ INT32 K_KartGetItemOdds(
if (!playeringame[i] || players[i].spectator)
continue;
if (!(gametyperules & GTR_BUMPERS) || players[i].bumpers)
if (!(gametyperules & GTR_BUMPERS) || players[i].bumper)
pingame++;
if (players[i].exiting)
@ -881,8 +881,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
pingame++;
if (players[i].exiting)
dontforcespb = true;
if (players[i].bumpers > bestbumper)
bestbumper = players[i].bumpers;
if (players[i].bumper > bestbumper)
bestbumper = players[i].bumper;
}
// No forced SPB in 1v1s, it has to be randomly rolled
@ -2731,13 +2731,9 @@ static fixed_t K_FlameShieldDashVar(INT32 val)
return (3*FRACUNIT/4) + (((val * FRACUNIT) / TICRATE) / 2);
}
// sets boostpower, speedboost, accelboost, and handleboost to whatever we need it to be
// sets boostpower, speedboost and accelboost to whatever we need it to be
static void K_GetKartBoostPower(player_t *player)
{
// v2 almost broke sliptiding when it fixed turning bugs!
// This value is fine-tuned to feel like v1 again without reverting any of those changes.
const fixed_t sliptidehandling = FRACUNIT/2;
fixed_t boostpower = FRACUNIT;
fixed_t speedboost = 0, accelboost = 0;
@ -2904,7 +2900,7 @@ fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower, boolean dorubberb
break;
}
if ((gametyperules & GTR_KARMA) && (player->bumpers <= 0))
if ((gametyperules & GTR_KARMA) && (player->bumper <= 0))
kartspeed = 1;
k_speed += kartspeed*3; // 153 - 177
@ -2953,7 +2949,7 @@ fixed_t K_GetKartAccel(player_t *player)
fixed_t k_accel = 32; // 36;
UINT8 kartspeed = player->kartspeed;
if ((gametyperules & GTR_KARMA) && player->bumpers <= 0)
if ((gametyperules & GTR_KARMA) && player->bumper <= 0)
kartspeed = 1;
k_accel += 4 * (9 - kartspeed); // 32 - 64
@ -3228,7 +3224,7 @@ void K_BattleAwardHit(player_t *player, player_t *victim, mobj_t *inflictor, UIN
}
else if (gametyperules & GTR_BUMPERS)
{
if ((victim->bumpers > 0) && (victim->bumpers <= bumpersRemoved))
if ((victim->bumper > 0) && (victim->bumper <= bumpersRemoved))
{
// +2 points for finishing off a player
points = 2;
@ -3394,7 +3390,7 @@ void K_HandleBumperChanges(player_t *player, UINT8 prevBumpers)
// TODO: replace all console text print-outs with a real visual
if (player->bumpers > 0 && prevBumpers == 0)
if (player->bumper > 0 && prevBumpers == 0)
{
K_DoInvincibility(player, 8 * TICRATE);
@ -3403,7 +3399,7 @@ void K_HandleBumperChanges(player_t *player, UINT8 prevBumpers)
CONS_Printf(M_GetText("%s is back in the game!\n"), player_names[player-players]);
}
}
else if (player->bumpers == 0 && prevBumpers > 0)
else if (player->bumper == 0 && prevBumpers > 0)
{
mobj_t *karmahitbox = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_KARMAHITBOX);
P_SetTarget(&karmahitbox->target, player->mo);
@ -3429,28 +3425,28 @@ void K_HandleBumperChanges(player_t *player, UINT8 prevBumpers)
void K_DestroyBumpers(player_t *player, UINT8 amount)
{
UINT8 oldBumpers = player->bumpers;
UINT8 oldBumpers = player->bumper;
if (!(gametyperules & GTR_BUMPERS))
{
return;
}
amount = min(amount, player->bumpers);
amount = min(amount, player->bumper);
if (amount == 0)
{
return;
}
player->bumpers -= amount;
player->bumper -= amount;
K_HandleBumperChanges(player, oldBumpers);
}
void K_TakeBumpersFromPlayer(player_t *player, player_t *victim, UINT8 amount)
{
UINT8 oldPlayerBumpers = player->bumpers;
UINT8 oldVictimBumpers = victim->bumpers;
UINT8 oldPlayerBumpers = player->bumper;
UINT8 oldVictimBumpers = victim->bumper;
UINT8 tookBumpers = 0;
@ -3459,16 +3455,16 @@ void K_TakeBumpersFromPlayer(player_t *player, player_t *victim, UINT8 amount)
return;
}
amount = min(amount, victim->bumpers);
amount = min(amount, victim->bumper);
if (amount == 0)
{
return;
}
while ((tookBumpers < amount) && (victim->bumpers > 0))
while ((tookBumpers < amount) && (victim->bumper > 0))
{
UINT8 newbumper = player->bumpers;
UINT8 newbumper = player->bumper;
angle_t newangle, diff;
fixed_t newx, newy;
@ -3510,8 +3506,8 @@ void K_TakeBumpersFromPlayer(player_t *player, player_t *victim, UINT8 amount)
P_SetMobjState(newmo, S_BATTLEBUMPER1);
}
player->bumpers++;
victim->bumpers--;
player->bumper++;
victim->bumper--;
tookBumpers++;
}
@ -3928,7 +3924,7 @@ void K_SpawnBoostTrail(player_t *player)
if (!P_IsObjectOnGround(player->mo)
|| player->hyudorotimer != 0
|| ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0 && player->karmadelay))
|| ((gametyperules & GTR_BUMPERS) && player->bumper <= 0 && player->karmadelay))
return;
if (player->mo->eflags & MFE_VERTICALFLIP)
@ -4549,7 +4545,7 @@ static void K_DoHyudoroSteal(player_t *player)
// Can steal from this player
&& (gametype == GT_RACE //&& players[i].position < player->position)
|| ((gametyperules & GTR_BUMPERS) && players[i].bumpers > 0))
|| ((gametyperules & GTR_BUMPERS) && players[i].bumper > 0))
// Has an item
&& (players[i].itemtype
@ -5921,7 +5917,7 @@ player_t *K_FindJawzTarget(mobj_t *actor, player_t *source)
continue;
// Don't pay attention to dead players
if (player->bumpers <= 0)
if (player->bumper <= 0)
continue;
// Z pos too high/low
@ -6608,7 +6604,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
player->spheres = 40;
// where's the < 0 check? see below the following block!
if ((gametyperules & GTR_BUMPERS) && (player->bumpers <= 0))
if ((gametyperules & GTR_BUMPERS) && (player->bumper <= 0))
{
// Deplete 1 every tic when removed from the game.
player->spheres--;
@ -6664,7 +6660,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
else if (player->karmadelay > 0 && !P_PlayerInPain(player))
{
player->karmadelay--;
if (P_IsDisplayPlayer(player) && player->bumpers <= 0 && player->karmadelay <= 0)
if (P_IsDisplayPlayer(player) && player->bumper <= 0 && player->karmadelay <= 0)
comebackshowninfo = true; // client has already seen the message
}
@ -6776,7 +6772,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
K_KartPlayerHUDUpdate(player);
if (battleovertime.enabled && !(player->pflags & PF_ELIMINATED) && player->bumpers <= 0 && player->karmadelay <= 0)
if (battleovertime.enabled && !(player->pflags & PF_ELIMINATED) && player->bumper <= 0 && player->karmadelay <= 0)
{
if (player->overtimekarma)
player->overtimekarma--;
@ -6807,7 +6803,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
if (player->eggmanexplode)
{
if (player->spectator || (gametype == GT_BATTLE && !player->bumpers))
if (player->spectator || (gametype == GT_BATTLE && !player->bumper))
player->eggmanexplode = 0;
else
{
@ -7636,7 +7632,7 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)
INT32 K_GetKartDriftSparkValue(player_t *player)
{
UINT8 kartspeed = ((gametyperules & GTR_KARMA) && player->bumpers <= 0)
UINT8 kartspeed = ((gametyperules & GTR_KARMA) && player->bumper <= 0)
? 1
: player->kartspeed;
return (26*4 + kartspeed*2 + (9 - player->kartweight))*8;
@ -7922,11 +7918,11 @@ void K_KartUpdatePosition(player_t *player)
else if (yourEmeralds == myEmeralds)
{
// Bumpers are a tie breaker
if (players[i].bumpers > player->bumpers)
if (players[i].bumper > player->bumper)
{
position++;
}
else if (players[i].bumpers == player->bumpers)
else if (players[i].bumper == player->bumper)
{
// Score is the second tier tie breaker
if (players[i].roundscore > player->roundscore)
@ -8207,7 +8203,7 @@ static void K_AdjustPlayerFriction(player_t *player)
player->mo->friction -= 2048;
// Karma ice physics
if ((gametyperules & GTR_KARMA) && player->bumpers <= 0)
if ((gametyperules & GTR_KARMA) && player->bumper <= 0)
{
player->mo->friction += 1228;
@ -8963,14 +8959,14 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
player->mo->renderflags &= ~RF_DONTDRAW;
}
if (gametype == GT_BATTLE && player->bumpers <= 0) // dead in match? you da bomb
if (gametype == GT_BATTLE && player->bumper <= 0) // dead in match? you da bomb
{
K_DropItems(player); //K_StripItems(player);
K_StripOther(player);
player->mo->renderflags |= RF_GHOSTLY;
player->flashing = player->karmadelay;
}
else if (gametype == GT_RACE || player->bumpers > 0)
else if (gametype == GT_RACE || player->bumper > 0)
{
player->mo->renderflags &= ~(RF_TRANSMASK|RF_BRIGHTMASK);
}

View file

@ -234,6 +234,8 @@ static int player_get(lua_State *L)
lua_pushinteger(L, plr->flashing);
else if (fastcmp(field,"spinouttimer"))
lua_pushinteger(L, plr->spinouttimer);
else if (fastcmp(field,"spinouttype"))
lua_pushinteger(L, plr->spinouttype);
else if (fastcmp(field,"instashield"))
lua_pushinteger(L, plr->instashield);
else if (fastcmp(field,"wipeoutslow"))
@ -250,7 +252,11 @@ static int player_get(lua_State *L)
lua_pushinteger(L, plr->boostcharge);
else if (fastcmp(field,"startboost"))
lua_pushinteger(L, plr->startboost);
else if (fastcmp(field,"aizdriftstraft"))
else if (fastcmp(field,"dropdash"))
lua_pushinteger(L, plr->dropdash);
else if (fastcmp(field,"respawn"))
lua_pushinteger(L, plr->respawn);
else if (fastcmp(field,"aizdriftstrat"))
lua_pushinteger(L, plr->aizdriftstrat);
else if (fastcmp(field,"aizdrifttilt"))
lua_pushinteger(L, plr->aizdrifttilt);
@ -258,6 +264,10 @@ static int player_get(lua_State *L)
lua_pushinteger(L, plr->aizdriftturn);
else if (fastcmp(field,"offroad"))
lua_pushinteger(L, plr->offroad);
else if (fastcmp(field,"pogospring"))
lua_pushinteger(L, plr->pogospring);
else if (fastcmp(field,"brakestop"))
lua_pushinteger(L, plr->brakestop);
else if (fastcmp(field,"waterskip"))
lua_pushinteger(L, plr->waterskip);
else if (fastcmp(field,"dashpadcooldown"))
@ -268,8 +278,6 @@ static int player_get(lua_State *L)
lua_pushinteger(L, plr->speedboost);
else if (fastcmp(field,"accelboost"))
lua_pushinteger(L, plr->accelboost);
else if (fastcmp(field,"handleboost"))
lua_pushinteger(L, plr->handleboost);
else if (fastcmp(field,"boostangle"))
lua_pushangle(L, plr->boostangle);
else if (fastcmp(field,"tripwireState"))
@ -318,6 +326,8 @@ static int player_get(lua_State *L)
lua_pushinteger(L, plr->hyudorotimer);
else if (fastcmp(field,"stealingtimer"))
lua_pushinteger(L, plr->stealingtimer);
else if (fastcmp(field,"stolentimer"))
lua_pushinteger(L, plr->stolentimer);
else if (fastcmp(field,"sneakertimer"))
lua_pushinteger(L, plr->sneakertimer);
else if (fastcmp(field,"floorboost"))
@ -326,6 +336,10 @@ static int player_get(lua_State *L)
lua_pushinteger(L, plr->waterrun);
else if (fastcmp(field,"growshrinktimer"))
lua_pushinteger(L, plr->growshrinktimer);
else if (fastcmp(field,"growcancel"))
lua_pushinteger(L, plr->growcancel);
else if (fastcmp(field,"squishedtimer"))
lua_pushinteger(L, plr->squishedtimer);
else if (fastcmp(field,"rocketsneakertimer"))
lua_pushinteger(L, plr->rocketsneakertimer);
else if (fastcmp(field,"invincibilitytimer"))
@ -351,7 +365,7 @@ static int player_get(lua_State *L)
else if (fastcmp(field,"emeralds"))
lua_pushinteger(L, plr->emeralds);
else if (fastcmp(field,"bumpers"))
lua_pushinteger(L, plr->bumpers);
lua_pushinteger(L, plr->bumper);
else if (fastcmp(field,"karmadelay"))
lua_pushinteger(L, plr->karmadelay);
else if (fastcmp(field,"spheres"))
@ -455,6 +469,8 @@ static int player_get(lua_State *L)
else if (fastcmp(field,"spectator"))
lua_pushboolean(L, plr->spectator);
else if (fastcmp(field,"spectatewait"))
lua_pushinteger(L, plr->spectatewait);
else if (fastcmp(field,"bot"))
lua_pushboolean(L, plr->bot);
else if (fastcmp(field,"jointime"))
@ -584,6 +600,8 @@ static int player_set(lua_State *L)
plr->flashing = luaL_checkinteger(L, 3);
else if (fastcmp(field,"spinouttimer"))
plr->spinouttimer = luaL_checkinteger(L, 3);
else if (fastcmp(field,"spinouttype"))
plr->spinouttype = luaL_checkinteger(L, 3);
else if (fastcmp(field,"instashield"))
plr->instashield = luaL_checkinteger(L, 3);
else if (fastcmp(field,"wipeoutslow"))
@ -600,7 +618,11 @@ static int player_set(lua_State *L)
plr->boostcharge = luaL_checkinteger(L, 3);
else if (fastcmp(field,"startboost"))
plr->startboost = luaL_checkinteger(L, 3);
else if (fastcmp(field,"aizdriftstraft"))
else if (fastcmp(field,"dropdash"))
plr->dropdash = luaL_checkinteger(L, 3);
else if (fastcmp(field,"respawn"))
plr->respawn = luaL_checkinteger(L, 3);
else if (fastcmp(field,"aizdriftstrat"))
plr->aizdriftstrat = luaL_checkinteger(L, 3);
else if (fastcmp(field,"aizdrifttilt"))
plr->aizdrifttilt = luaL_checkinteger(L, 3);
@ -608,6 +630,10 @@ static int player_set(lua_State *L)
plr->aizdriftturn = luaL_checkinteger(L, 3);
else if (fastcmp(field,"offroad"))
plr->offroad = luaL_checkinteger(L, 3);
else if (fastcmp(field,"pogospring"))
plr->pogospring = luaL_checkinteger(L, 3);
else if (fastcmp(field,"brakestop"))
plr->brakestop = luaL_checkinteger(L, 3);
else if (fastcmp(field,"waterskip"))
plr->waterskip = luaL_checkinteger(L, 3);
else if (fastcmp(field,"dashpadcooldown"))
@ -618,8 +644,6 @@ static int player_set(lua_State *L)
plr->speedboost = luaL_checkinteger(L, 3);
else if (fastcmp(field,"accelboost"))
plr->accelboost = luaL_checkinteger(L, 3);
else if (fastcmp(field,"handleboost"))
plr->handleboost = luaL_checkinteger(L, 3);
else if (fastcmp(field,"boostangle"))
plr->boostangle = luaL_checkangle(L, 3);
else if (fastcmp(field,"tripwireState"))
@ -668,6 +692,8 @@ static int player_set(lua_State *L)
plr->hyudorotimer = luaL_checkinteger(L, 3);
else if (fastcmp(field,"stealingtimer"))
plr->stealingtimer = luaL_checkinteger(L, 3);
else if (fastcmp(field,"stolentimer"))
plr->stealingtimer = luaL_checkinteger(L, 3);
else if (fastcmp(field,"sneakertimer"))
plr->sneakertimer = luaL_checkinteger(L, 3);
else if (fastcmp(field,"floorboost"))
@ -676,6 +702,10 @@ static int player_set(lua_State *L)
plr->waterrun = luaL_checkboolean(L, 3);
else if (fastcmp(field,"growshrinktimer"))
plr->growshrinktimer = luaL_checkinteger(L, 3);
else if (fastcmp(field,"growcancel"))
plr->growcancel = luaL_checkinteger(L, 3);
else if (fastcmp(field,"squishedtimer"))
plr->squishedtimer = luaL_checkinteger(L, 3);
else if (fastcmp(field,"rocketsneakertimer"))
plr->rocketsneakertimer = luaL_checkinteger(L, 3);
else if (fastcmp(field,"invincibilitytimer"))
@ -701,7 +731,7 @@ static int player_set(lua_State *L)
else if (fastcmp(field,"emeralds"))
plr->emeralds = luaL_checkinteger(L, 3);
else if (fastcmp(field,"bumpers"))
plr->bumpers = luaL_checkinteger(L, 3);
plr->bumper = luaL_checkinteger(L, 3);
else if (fastcmp(field,"karmadelay"))
plr->karmadelay = luaL_checkinteger(L, 3);
else if (fastcmp(field,"spheres"))
@ -801,6 +831,8 @@ static int player_set(lua_State *L)
plr->awayviewaiming = luaL_checkangle(L, 3);
else if (fastcmp(field,"spectator"))
plr->spectator = lua_toboolean(L, 3);
else if (fastcmp(field,"spectatewait"))
plr->spectatewait = luaL_checkinteger(L, 3);
else if (fastcmp(field,"bot"))
return NOSET;
else if (fastcmp(field,"jointime"))

View file

@ -14084,7 +14084,7 @@ void A_ReaperThinker(mobj_t *actor)
continue;
player = &players[i];
if (player && player->mo && player->bumpers && player->score >= maxscore)
if (player && player->mo && player->bumper && player->score >= maxscore)
{
targetplayermo = player->mo;
maxscore = player->score;

View file

@ -117,7 +117,7 @@ boolean P_CanPickupItem(player_t *player, UINT8 weapon)
#ifndef OTHERKARMAMODES
&& !weapon
#endif
&& player->bumpers <= 0)
&& player->bumper <= 0)
return false;
if (weapon)
@ -256,7 +256,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
if (!P_CanPickupItem(player, 3) || (player->itemamount && player->itemtype != special->threshold))
return;
if ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0)
if ((gametyperules & GTR_BUMPERS) && player->bumper <= 0)
return;
player->itemtype = special->threshold;
@ -291,7 +291,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
P_KillMobj(special, toucher, toucher, DMG_NORMAL);
break;
case MT_ITEMCAPSULE:
if ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0)
if ((gametyperules & GTR_BUMPERS) && player->bumper <= 0)
return;
if (special->scale < special->extravalue1) // don't break it while it's respawning
@ -321,7 +321,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
return;
if (player == special->target->player)
return;
if (player->bumpers <= 0)
if (player->bumper <= 0)
return;
if (special->target->player->exiting || player->exiting)
return;
@ -437,7 +437,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
S_StartSound(special, sfx_s1a2);
return;
case MT_CDUFO: // SRB2kart
if (special->fuse || !P_CanPickupItem(player, 1) || ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0))
if (special->fuse || !P_CanPickupItem(player, 1) || ((gametyperules & GTR_BUMPERS) && player->bumper <= 0))
return;
player->itemroulette = 1;
@ -1880,7 +1880,7 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source,
P_SetTarget(&boom->target, player->mo);
}
K_DestroyBumpers(player, player->bumpers);
K_DestroyBumpers(player, player->bumper);
player->pflags |= PF_ELIMINATED;
}
@ -1994,7 +1994,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
{
if (gametyperules & GTR_BUMPERS)
{
if (player->bumpers <= 0 && player->karmadelay)
if (player->bumper <= 0 && player->karmadelay)
{
// No bumpers & in WAIT, can't be hurt
K_DoInstashield(player);
@ -2059,7 +2059,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
if (type == DMG_KARMA)
{
takeBumpers = player->bumpers;
takeBumpers = player->bumper;
}
}
else
@ -2067,7 +2067,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
if (type == DMG_KARMA)
{
// Take half of their bumpers for karma comeback damage
takeBumpers = max(1, player->bumpers / 2);
takeBumpers = max(1, player->bumper / 2);
}
}
@ -2081,7 +2081,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
if (type == DMG_KARMA)
{
// Destroy any remainder bumpers from the player for karma comeback damage
K_DestroyBumpers(player, player->bumpers);
K_DestroyBumpers(player, player->bumper);
}
else
{

View file

@ -1154,8 +1154,8 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing)
}
if ((gametyperules & GTR_BUMPERS)
&& ((thing->player->bumpers && !tm.thing->player->bumpers)
|| (tm.thing->player->bumpers && !thing->player->bumpers)))
&& ((thing->player->bumper && !tm.thing->player->bumper)
|| (tm.thing->player->bumper && !thing->player->bumper)))
{
return BMIT_CONTINUE;
}

View file

@ -4309,7 +4309,7 @@ boolean P_SupermanLook4Players(mobj_t *actor)
if (players[c].mo->health <= 0)
continue; // dead
if ((gametyperules & GTR_BUMPERS) && players[c].bumpers <= 0)
if ((gametyperules & GTR_BUMPERS) && players[c].bumper <= 0)
continue; // other dead
playersinthegame[stop] = &players[c];
@ -5827,10 +5827,10 @@ static void P_MobjSceneryThink(mobj_t *mobj)
else
ang = FixedAngle(mobj->info->speed);
if (mobj->target->player->bumpers <= 1)
if (mobj->target->player->bumper <= 1)
diff = 0;
else
diff = FixedAngle(360*FRACUNIT/mobj->target->player->bumpers);
diff = FixedAngle(360*FRACUNIT/mobj->target->player->bumper);
ang = (ang*leveltime) + (diff * (mobj->threshold-1));
@ -5867,9 +5867,9 @@ static void P_MobjSceneryThink(mobj_t *mobj)
mobj->color = mobj->target->color;
}
if (mobj->target->player->bumpers < 2)
if (mobj->target->player->bumper < 2)
P_SetMobjState(mobj, S_BATTLEBUMPER3);
else if (mobj->target->player->bumpers < 3)
else if (mobj->target->player->bumper < 3)
P_SetMobjState(mobj, S_BATTLEBUMPER2);
else
P_SetMobjState(mobj, S_BATTLEBUMPER1);
@ -5886,7 +5886,7 @@ static void P_MobjSceneryThink(mobj_t *mobj)
P_SetThingPosition(mobj);
}
if (mobj->target->player->bumpers <= mobj->threshold)
if (mobj->target->player->bumper <= mobj->threshold)
{
// Do bumper destruction
P_KillMobj(mobj, NULL, NULL, DMG_NORMAL);
@ -5920,7 +5920,7 @@ static void P_MobjSceneryThink(mobj_t *mobj)
mobj->color = mobj->target->color;
K_MatchGenericExtraFlags(mobj, mobj->target);
if ((gametype == GT_RACE || mobj->target->player->bumpers <= 0)
if ((gametype == GT_RACE || mobj->target->player->bumper <= 0)
#if 1 // Set to 0 to test without needing to host
|| (P_IsDisplayPlayer(mobj->target->player))
#endif
@ -7553,7 +7553,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
statenum_t state = (mobj->state-states);
if (!mobj->target || !mobj->target->health || !mobj->target->player || mobj->target->player->spectator
|| (gametype == GT_RACE || mobj->target->player->bumpers))
|| (gametype == GT_RACE || mobj->target->player->bumper))
{
P_RemoveMobj(mobj);
return false;
@ -10812,24 +10812,24 @@ void P_SpawnPlayer(INT32 playernum)
if (p->spectator)
{
// HEY! No being cheap...
p->bumpers = 0;
p->bumper = 0;
}
else if ((p->bumpers > 0) || (leveltime < starttime) || (pcount <= 1))
else if ((p->bumper > 0) || (leveltime < starttime) || (pcount <= 1))
{
if ((leveltime < starttime) || (pcount <= 1)) // Start of the map?
{
if (leveltime > 2) // Reset those bumpers!
{
p->bumpers = K_StartingBumperCount();
p->bumper = K_StartingBumperCount();
K_SpawnPlayerBattleBumpers(p);
}
else // temp, will get overwritten in K_BattleInit
{
p->bumpers = 1;
p->bumper = 1;
}
}
}
else if (p->bumpers <= 0)
else if (p->bumper <= 0)
{
mobj_t *karmahitbox = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_KARMAHITBOX); // Player hitbox is too small!!
P_SetTarget(&karmahitbox->target, mobj);

View file

@ -273,7 +273,6 @@ static void P_NetArchivePlayers(void)
WRITEFIXED(save_p, players[i].boostpower);
WRITEFIXED(save_p, players[i].speedboost);
WRITEFIXED(save_p, players[i].accelboost);
WRITEFIXED(save_p, players[i].handleboost);
WRITEANGLE(save_p, players[i].boostangle);
WRITEUINT8(save_p, players[i].tripwireState);
@ -330,7 +329,7 @@ static void P_NetArchivePlayers(void)
WRITEUINT32(save_p, players[i].roundscore);
WRITEUINT8(save_p, players[i].emeralds);
WRITEUINT8(save_p, players[i].bumpers);
WRITEUINT8(save_p, players[i].bumper);
WRITEINT16(save_p, players[i].karmadelay);
WRITEUINT32(save_p, players[i].overtimekarma);
WRITEINT16(save_p, players[i].spheres);
@ -560,7 +559,6 @@ static void P_NetUnArchivePlayers(void)
players[i].boostpower = READFIXED(save_p);
players[i].speedboost = READFIXED(save_p);
players[i].accelboost = READFIXED(save_p);
players[i].handleboost = READFIXED(save_p);
players[i].boostangle = READANGLE(save_p);
players[i].tripwireState = READUINT8(save_p);
@ -617,7 +615,7 @@ static void P_NetUnArchivePlayers(void)
players[i].roundscore = READUINT32(save_p);
players[i].emeralds = READUINT8(save_p);
players[i].bumpers = READUINT8(save_p);
players[i].bumper = READUINT8(save_p);
players[i].karmadelay = READINT16(save_p);
players[i].overtimekarma = READUINT32(save_p);
players[i].spheres = READINT16(save_p);

View file

@ -515,7 +515,7 @@ INT32 P_GivePlayerSpheres(player_t *player, INT32 num_spheres)
num_spheres += player->spheres;
// Not alive
if ((gametyperules & GTR_BUMPERS) && (player->bumpers <= 0))
if ((gametyperules & GTR_BUMPERS) && (player->bumper <= 0))
return 0;
if (num_spheres > 40) // Reached the cap, don't waste 'em!
@ -4508,7 +4508,7 @@ void P_PlayerThink(player_t *player)
|| player->growshrinktimer > 0 // Grow doesn't flash either.
|| (player->respawn) // Respawn timer (for drop dash effect)
|| (player->pflags & PF_NOCONTEST) // NO CONTEST explosion
|| ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0 && player->karmadelay)))
|| ((gametyperules & GTR_BUMPERS) && player->bumper <= 0 && player->karmadelay)))
{
if (player->flashing > 1 && player->flashing < K_GetKartFlashing(player)
&& (leveltime & 1))