mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Add Barrier Power-Up
- Guard is always up, not activated by e-brake or spheres - Guard can still be broken by player contact - No instawhip cooldown from Guard being up - No sphere loss while Guard is up - Guard appears at max size
This commit is contained in:
parent
e67ab6a116
commit
ba114022b9
4 changed files with 36 additions and 4 deletions
|
|
@ -464,6 +464,7 @@ typedef struct {
|
||||||
// player_t struct for power-ups
|
// player_t struct for power-ups
|
||||||
struct powerupvars_t {
|
struct powerupvars_t {
|
||||||
UINT16 superTimer;
|
UINT16 superTimer;
|
||||||
|
UINT16 barrierTimer;
|
||||||
mobj_t *flickyController;
|
mobj_t *flickyController;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
29
src/k_kart.c
29
src/k_kart.c
|
|
@ -45,6 +45,7 @@
|
||||||
#include "k_specialstage.h"
|
#include "k_specialstage.h"
|
||||||
#include "k_roulette.h"
|
#include "k_roulette.h"
|
||||||
#include "k_podium.h"
|
#include "k_podium.h"
|
||||||
|
#include "k_powerup.h"
|
||||||
|
|
||||||
// SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H:
|
// SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H:
|
||||||
// gamespeed is cc (0 for easy, 1 for normal, 2 for hard)
|
// gamespeed is cc (0 for easy, 1 for normal, 2 for hard)
|
||||||
|
|
@ -7997,7 +7998,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
player->spheredigestion = spheredigestion;
|
player->spheredigestion = spheredigestion;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (K_PlayerGuard(player) && (player->ebrakefor%6 == 0))
|
if (K_PlayerGuard(player) && !K_PowerUpRemaining(player, POWERUP_BARRIER) && (player->ebrakefor%6 == 0))
|
||||||
player->spheres--;
|
player->spheres--;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -8090,6 +8091,11 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (player->powerup.barrierTimer > 0)
|
||||||
|
{
|
||||||
|
player->powerup.barrierTimer--;
|
||||||
|
}
|
||||||
|
|
||||||
if (player->powerup.superTimer > 0)
|
if (player->powerup.superTimer > 0)
|
||||||
{
|
{
|
||||||
player->powerup.superTimer--;
|
player->powerup.superTimer--;
|
||||||
|
|
@ -8339,7 +8345,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
player->pflags &= ~PF_DRIFTINPUT;
|
player->pflags &= ~PF_DRIFTINPUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (K_PlayerGuard(player))
|
if (K_PlayerGuard(player) && !K_PowerUpRemaining(player, POWERUP_BARRIER))
|
||||||
player->instaShieldCooldown = max(player->instaShieldCooldown, INSTAWHIP_DROPGUARD);
|
player->instaShieldCooldown = max(player->instaShieldCooldown, INSTAWHIP_DROPGUARD);
|
||||||
|
|
||||||
// Roulette Code
|
// Roulette Code
|
||||||
|
|
@ -10062,7 +10068,17 @@ boolean K_PlayerEBrake(player_t *player)
|
||||||
|
|
||||||
boolean K_PlayerGuard(player_t *player)
|
boolean K_PlayerGuard(player_t *player)
|
||||||
{
|
{
|
||||||
return (K_PlayerEBrake(player) && player->spheres > 0 && player->guardCooldown == 0);
|
if (player->guardCooldown != 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (K_PowerUpRemaining(player, POWERUP_BARRIER))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (K_PlayerEBrake(player) && player->spheres > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
SINT8 K_Sliptiding(player_t *player)
|
SINT8 K_Sliptiding(player_t *player)
|
||||||
|
|
@ -10849,7 +10865,12 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player->instaShieldCooldown = INSTAWHIP_COOLDOWN;
|
player->instaShieldCooldown = INSTAWHIP_COOLDOWN;
|
||||||
player->guardCooldown = INSTAWHIP_COOLDOWN;
|
|
||||||
|
if (!K_PowerUpRemaining(player, POWERUP_BARRIER))
|
||||||
|
{
|
||||||
|
player->guardCooldown = INSTAWHIP_COOLDOWN;
|
||||||
|
}
|
||||||
|
|
||||||
S_StartSound(player->mo, sfx_iwhp);
|
S_StartSound(player->mo, sfx_iwhp);
|
||||||
mobj_t *whip = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_INSTAWHIP);
|
mobj_t *whip = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_INSTAWHIP);
|
||||||
P_SetTarget(&player->whip, whip);
|
P_SetTarget(&player->whip, whip);
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@ tic_t K_PowerUpRemaining(const player_t* player, kartitems_t powerup)
|
||||||
case POWERUP_SMONITOR:
|
case POWERUP_SMONITOR:
|
||||||
return player->powerup.superTimer;
|
return player->powerup.superTimer;
|
||||||
|
|
||||||
|
case POWERUP_BARRIER:
|
||||||
|
return player->powerup.barrierTimer;
|
||||||
|
|
||||||
case POWERUP_SUPERFLICKY:
|
case POWERUP_SUPERFLICKY:
|
||||||
return Obj_SuperFlickySwarmTime(player->powerup.flickyController);
|
return Obj_SuperFlickySwarmTime(player->powerup.flickyController);
|
||||||
|
|
||||||
|
|
@ -28,6 +31,10 @@ void K_GivePowerUp(player_t* player, kartitems_t powerup, tic_t time)
|
||||||
player->powerup.superTimer += time;
|
player->powerup.superTimer += time;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case POWERUP_BARRIER:
|
||||||
|
player->powerup.barrierTimer += time;
|
||||||
|
break;
|
||||||
|
|
||||||
case POWERUP_SUPERFLICKY:
|
case POWERUP_SUPERFLICKY:
|
||||||
if (K_PowerUpRemaining(player, POWERUP_SUPERFLICKY))
|
if (K_PowerUpRemaining(player, POWERUP_SUPERFLICKY))
|
||||||
{
|
{
|
||||||
|
|
@ -58,6 +65,7 @@ void K_DropPowerUps(player_t* player)
|
||||||
};
|
};
|
||||||
|
|
||||||
simple_drop(POWERUP_SMONITOR, player->powerup.superTimer);
|
simple_drop(POWERUP_SMONITOR, player->powerup.superTimer);
|
||||||
|
simple_drop(POWERUP_BARRIER, player->powerup.barrierTimer);
|
||||||
|
|
||||||
if (K_PowerUpRemaining(player, POWERUP_SUPERFLICKY))
|
if (K_PowerUpRemaining(player, POWERUP_SUPERFLICKY))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -637,6 +637,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
||||||
|
|
||||||
// powerupvars_t
|
// powerupvars_t
|
||||||
WRITEUINT16(save->p, players[i].powerup.superTimer);
|
WRITEUINT16(save->p, players[i].powerup.superTimer);
|
||||||
|
WRITEUINT16(save->p, players[i].powerup.barrierTimer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1064,6 +1065,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
||||||
|
|
||||||
// powerupvars_t
|
// powerupvars_t
|
||||||
players[i].powerup.superTimer = READUINT16(save->p);
|
players[i].powerup.superTimer = READUINT16(save->p);
|
||||||
|
players[i].powerup.barrierTimer = READUINT16(save->p);
|
||||||
|
|
||||||
//players[i].viewheight = P_GetPlayerViewHeight(players[i]); // scale cannot be factored in at this point
|
//players[i].viewheight = P_GetPlayerViewHeight(players[i]); // scale cannot be factored in at this point
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue