mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-05 15:43:08 +00:00
Merge branch 'karma-gate' into 'master'
Elimination timer for karma bombs during overtime See merge request KartKrew/Kart!459
This commit is contained in:
commit
9d485e17e7
7 changed files with 23 additions and 10 deletions
|
|
@ -468,6 +468,7 @@ typedef struct player_s
|
||||||
UINT8 emeralds;
|
UINT8 emeralds;
|
||||||
UINT8 bumpers;
|
UINT8 bumpers;
|
||||||
INT16 karmadelay;
|
INT16 karmadelay;
|
||||||
|
tic_t overtimekarma; // time to live in overtime comeback
|
||||||
INT16 spheres;
|
INT16 spheres;
|
||||||
|
|
||||||
SINT8 glanceDir; // Direction the player is trying to look backwards in
|
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->growshrinktimer = growshrinktimer;
|
||||||
p->bumpers = bumper;
|
p->bumpers = bumper;
|
||||||
p->karmadelay = comebacktime;
|
p->karmadelay = comebacktime;
|
||||||
|
p->overtimekarma = 0;
|
||||||
p->eggmanblame = -1;
|
p->eggmanblame = -1;
|
||||||
p->lastdraft = -1;
|
p->lastdraft = -1;
|
||||||
p->karthud[khud_fault] = khudfault;
|
p->karthud[khud_fault] = khudfault;
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,7 @@ mobj_t *K_SpawnChaosEmerald(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT
|
||||||
|
|
||||||
P_Thrust(emerald,
|
P_Thrust(emerald,
|
||||||
FixedAngle(P_RandomFixed() * 180) + angle,
|
FixedAngle(P_RandomFixed() * 180) + angle,
|
||||||
32 * mapobjectscale);
|
24 * mapobjectscale);
|
||||||
|
|
||||||
emerald->momz = flip * 24 * mapobjectscale;
|
emerald->momz = flip * 24 * mapobjectscale;
|
||||||
if (emerald->eflags & MFE_UNDERWATER)
|
if (emerald->eflags & MFE_UNDERWATER)
|
||||||
|
|
@ -288,12 +288,6 @@ void K_RunPaperItemSpawners(void)
|
||||||
|
|
||||||
if (overtime == true)
|
if (overtime == true)
|
||||||
{
|
{
|
||||||
if (battleovertime.radius < 512*mapobjectscale)
|
|
||||||
{
|
|
||||||
// Barrier has closed in too much
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Double frequency of items
|
// Double frequency of items
|
||||||
interval /= 2;
|
interval /= 2;
|
||||||
}
|
}
|
||||||
|
|
@ -557,10 +551,12 @@ void K_RunBattleOvertime(void)
|
||||||
}
|
}
|
||||||
else if (battleovertime.radius > 0)
|
else if (battleovertime.radius > 0)
|
||||||
{
|
{
|
||||||
if (battleovertime.radius > 2*mapobjectscale)
|
const fixed_t minradius = 768 * mapobjectscale;
|
||||||
|
|
||||||
|
if (battleovertime.radius > minradius)
|
||||||
battleovertime.radius -= 2*mapobjectscale;
|
battleovertime.radius -= 2*mapobjectscale;
|
||||||
else
|
else
|
||||||
battleovertime.radius = 0;
|
battleovertime.radius = minradius;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (battleovertime.radius > 0)
|
if (battleovertime.radius > 0)
|
||||||
|
|
|
||||||
|
|
@ -2460,7 +2460,8 @@ static void K_drawKartBumpersOrKarma(void)
|
||||||
else
|
else
|
||||||
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|V_SLIDEIN|splitflags, kp_bumpersticker, colormap);
|
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));
|
// TODO BETTER HUD
|
||||||
|
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|V_SLIDEIN|splitflags, va("%d/%d %d", stplyr->bumpers, maxbumper, stplyr->overtimekarma / TICRATE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6890,6 +6890,14 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
|
|
||||||
K_KartPlayerHUDUpdate(player);
|
K_KartPlayerHUDUpdate(player);
|
||||||
|
|
||||||
|
if (battleovertime.enabled && !(player->pflags & PF_ELIMINATED) && player->bumpers <= 0 && player->karmadelay <= 0)
|
||||||
|
{
|
||||||
|
if (player->overtimekarma)
|
||||||
|
player->overtimekarma--;
|
||||||
|
else
|
||||||
|
P_DamageMobj(player->mo, NULL, NULL, 1, DMG_TIMEOVER);
|
||||||
|
}
|
||||||
|
|
||||||
if ((battleovertime.enabled >= 10*TICRATE) && !(player->pflags & PF_ELIMINATED))
|
if ((battleovertime.enabled >= 10*TICRATE) && !(player->pflags & PF_ELIMINATED))
|
||||||
{
|
{
|
||||||
fixed_t distanceToBarrier = 0;
|
fixed_t distanceToBarrier = 0;
|
||||||
|
|
|
||||||
|
|
@ -1980,6 +1980,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
|
// Destroy any remainder bumpers from the player for karma comeback damage
|
||||||
K_DestroyBumpers(player, player->bumpers);
|
K_DestroyBumpers(player, player->bumpers);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
source->player->overtimekarma += 5*TICRATE;
|
||||||
|
}
|
||||||
|
|
||||||
if (damagetype & DMG_STEAL)
|
if (damagetype & DMG_STEAL)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -317,6 +317,7 @@ static void P_NetArchivePlayers(void)
|
||||||
WRITEUINT8(save_p, players[i].emeralds);
|
WRITEUINT8(save_p, players[i].emeralds);
|
||||||
WRITEUINT8(save_p, players[i].bumpers);
|
WRITEUINT8(save_p, players[i].bumpers);
|
||||||
WRITEINT16(save_p, players[i].karmadelay);
|
WRITEINT16(save_p, players[i].karmadelay);
|
||||||
|
WRITEUINT32(save_p, players[i].overtimekarma);
|
||||||
WRITEINT16(save_p, players[i].spheres);
|
WRITEINT16(save_p, players[i].spheres);
|
||||||
|
|
||||||
WRITESINT8(save_p, players[i].glanceDir);
|
WRITESINT8(save_p, players[i].glanceDir);
|
||||||
|
|
@ -574,6 +575,7 @@ static void P_NetUnArchivePlayers(void)
|
||||||
players[i].emeralds = READUINT8(save_p);
|
players[i].emeralds = READUINT8(save_p);
|
||||||
players[i].bumpers = READUINT8(save_p);
|
players[i].bumpers = READUINT8(save_p);
|
||||||
players[i].karmadelay = READINT16(save_p);
|
players[i].karmadelay = READINT16(save_p);
|
||||||
|
players[i].overtimekarma = READUINT32(save_p);
|
||||||
players[i].spheres = READINT16(save_p);
|
players[i].spheres = READINT16(save_p);
|
||||||
|
|
||||||
players[i].glanceDir = READSINT8(save_p);
|
players[i].glanceDir = READSINT8(save_p);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue