mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-02-03 20:26:05 +00:00
Elimination timer for karma bombs during overtime
Every hit on another player while you are alive awards you five seconds of karma bomb time during overtime. When this timer is empty, you will DIE.
This commit is contained in:
parent
b22d18aea6
commit
059058476e
6 changed files with 30 additions and 9 deletions
|
|
@ -468,6 +468,7 @@ typedef struct player_s
|
|||
UINT8 emeralds;
|
||||
UINT8 bumpers;
|
||||
INT16 karmadelay;
|
||||
tic_t overtimekarma; // time to live in overtime comeback
|
||||
INT16 spheres;
|
||||
|
||||
SINT8 glanceDir; // Direction the player is trying to look backwards in
|
||||
|
|
|
|||
|
|
@ -2281,6 +2281,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
|||
p->growshrinktimer = growshrinktimer;
|
||||
p->bumpers = bumper;
|
||||
p->karmadelay = comebacktime;
|
||||
p->overtimekarma = 0;
|
||||
p->eggmanblame = -1;
|
||||
p->lastdraft = -1;
|
||||
p->karthud[khud_fault] = khudfault;
|
||||
|
|
|
|||
|
|
@ -2460,7 +2460,10 @@ static void K_drawKartBumpersOrKarma(void)
|
|||
else
|
||||
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|V_SLIDEIN|splitflags, kp_bumpersticker, colormap);
|
||||
|
||||
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|V_SLIDEIN|splitflags, va("%d/%d", stplyr->bumpers, maxbumper));
|
||||
if (stplyr->bumpers > 0)
|
||||
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|V_SLIDEIN|splitflags, va("%d/%d", stplyr->bumpers, maxbumper));
|
||||
else // TODO - BETTER HUD
|
||||
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|V_SLIDEIN|splitflags, va("%d", stplyr->overtimekarma / TICRATE));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
26
src/k_kart.c
26
src/k_kart.c
|
|
@ -6890,18 +6890,28 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
|
||||
K_KartPlayerHUDUpdate(player);
|
||||
|
||||
if ((battleovertime.enabled >= 10*TICRATE) && !(player->pflags & PF_ELIMINATED))
|
||||
if (battleovertime.enabled && !(player->pflags & PF_ELIMINATED))
|
||||
{
|
||||
fixed_t distanceToBarrier = 0;
|
||||
|
||||
if (battleovertime.radius > 0)
|
||||
if (battleovertime.enabled >= 10*TICRATE)
|
||||
{
|
||||
distanceToBarrier = R_PointToDist2(player->mo->x, player->mo->y, battleovertime.x, battleovertime.y) - (player->mo->radius * 2);
|
||||
fixed_t distanceToBarrier = 0;
|
||||
|
||||
if (battleovertime.radius > 0)
|
||||
{
|
||||
distanceToBarrier = R_PointToDist2(player->mo->x, player->mo->y, battleovertime.x, battleovertime.y) - (player->mo->radius * 2);
|
||||
}
|
||||
|
||||
if (distanceToBarrier > battleovertime.radius)
|
||||
{
|
||||
P_DamageMobj(player->mo, NULL, NULL, 1, DMG_TIMEOVER);
|
||||
}
|
||||
}
|
||||
|
||||
if (distanceToBarrier > battleovertime.radius)
|
||||
else if (player->bumpers <= 0)
|
||||
{
|
||||
P_DamageMobj(player->mo, NULL, NULL, 1, DMG_TIMEOVER);
|
||||
if (player->overtimekarma)
|
||||
player->overtimekarma--;
|
||||
else
|
||||
P_DamageMobj(player->mo, NULL, NULL, 1, DMG_TIMEOVER);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1972,6 +1972,10 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
// Destroy any remainder bumpers from the player for karma comeback damage
|
||||
K_DestroyBumpers(player, player->bumpers);
|
||||
}
|
||||
else
|
||||
{
|
||||
source->player->overtimekarma += 5*TICRATE;
|
||||
}
|
||||
|
||||
if (damagetype & DMG_STEAL)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -317,6 +317,7 @@ static void P_NetArchivePlayers(void)
|
|||
WRITEUINT8(save_p, players[i].emeralds);
|
||||
WRITEUINT8(save_p, players[i].bumpers);
|
||||
WRITEINT16(save_p, players[i].karmadelay);
|
||||
WRITEUINT32(save_p, players[i].overtimekarma);
|
||||
WRITEINT16(save_p, players[i].spheres);
|
||||
|
||||
WRITESINT8(save_p, players[i].glanceDir);
|
||||
|
|
@ -573,6 +574,7 @@ static void P_NetUnArchivePlayers(void)
|
|||
players[i].emeralds = READUINT8(save_p);
|
||||
players[i].bumpers = READUINT8(save_p);
|
||||
players[i].karmadelay = READINT16(save_p);
|
||||
players[i].overtimekarma = READUINT32(save_p);
|
||||
players[i].spheres = READINT16(save_p);
|
||||
|
||||
players[i].glanceDir = READSINT8(save_p);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue