Add Rhythm Badge power-up, no instawhip cooldown

This commit is contained in:
James R 2023-06-29 19:04:50 -07:00
parent 065475ea29
commit 47a5a0b6dc
4 changed files with 24 additions and 4 deletions

View file

@ -465,6 +465,7 @@ typedef struct {
struct powerupvars_t {
UINT16 superTimer;
UINT16 barrierTimer;
UINT16 rhythmBadgeTimer;
mobj_t *flickyController;
};

View file

@ -8100,6 +8100,12 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
}
}
if (player->powerup.rhythmBadgeTimer > 0)
{
player->instaShieldCooldown = min(player->instaShieldCooldown, 1);
player->powerup.rhythmBadgeTimer--;
}
if (player->powerup.barrierTimer > 0)
{
player->powerup.barrierTimer--;
@ -10891,10 +10897,13 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
player->flashing = max(player->flashing, 12);
player->mo->momz += 4*mapobjectscale;
// Spawn in triangle formation
Obj_SpawnInstaWhipRecharge(player, 0);
Obj_SpawnInstaWhipRecharge(player, ANGLE_120);
Obj_SpawnInstaWhipRecharge(player, ANGLE_240);
if (!K_PowerUpRemaining(player, POWERUP_BADGE))
{
// Spawn in triangle formation
Obj_SpawnInstaWhipRecharge(player, 0);
Obj_SpawnInstaWhipRecharge(player, ANGLE_120);
Obj_SpawnInstaWhipRecharge(player, ANGLE_240);
}
}
}

View file

@ -14,6 +14,9 @@ tic_t K_PowerUpRemaining(const player_t* player, kartitems_t powerup)
case POWERUP_BARRIER:
return player->powerup.barrierTimer;
case POWERUP_BADGE:
return player->powerup.rhythmBadgeTimer;
case POWERUP_SUPERFLICKY:
return Obj_SuperFlickySwarmTime(player->powerup.flickyController);
@ -39,6 +42,10 @@ void K_GivePowerUp(player_t* player, kartitems_t powerup, tic_t time)
K_GiveBumpersToPlayer(player, nullptr, 5);
break;
case POWERUP_BADGE:
player->powerup.rhythmBadgeTimer += time;
break;
case POWERUP_SUPERFLICKY:
if (K_PowerUpRemaining(player, POWERUP_SUPERFLICKY))
{
@ -70,6 +77,7 @@ void K_DropPowerUps(player_t* player)
simple_drop(POWERUP_SMONITOR, player->powerup.superTimer);
simple_drop(POWERUP_BARRIER, player->powerup.barrierTimer);
simple_drop(POWERUP_BADGE, player->powerup.rhythmBadgeTimer);
if (K_PowerUpRemaining(player, POWERUP_SUPERFLICKY))
{

View file

@ -638,6 +638,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
// powerupvars_t
WRITEUINT16(save->p, players[i].powerup.superTimer);
WRITEUINT16(save->p, players[i].powerup.barrierTimer);
WRITEUINT16(save->p, players[i].powerup.rhythmBadgeTimer);
}
}
@ -1066,6 +1067,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
// powerupvars_t
players[i].powerup.superTimer = READUINT16(save->p);
players[i].powerup.barrierTimer = READUINT16(save->p);
players[i].powerup.rhythmBadgeTimer = READUINT16(save->p);
//players[i].viewheight = P_GetPlayerViewHeight(players[i]); // scale cannot be factored in at this point
}