mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Make shrink lasers add timer instead of resetting
This commit is contained in:
parent
970add8b91
commit
a4b63f3ffa
4 changed files with 68 additions and 39 deletions
|
|
@ -584,6 +584,8 @@ typedef struct player_s
|
||||||
|
|
||||||
UINT8 stairjank;
|
UINT8 stairjank;
|
||||||
|
|
||||||
|
UINT8 shrinkLaserDelay;
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
fixed_t fovadd; // adjust FOV for hw rendering
|
fixed_t fovadd; // adjust FOV for hw rendering
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -7545,6 +7545,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
comebackshowninfo = true; // client has already seen the message
|
comebackshowninfo = true; // client has already seen the message
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (player->shrinkLaserDelay)
|
||||||
|
player->shrinkLaserDelay--;
|
||||||
|
|
||||||
if (player->ringdelay)
|
if (player->ringdelay)
|
||||||
player->ringdelay--;
|
player->ringdelay--;
|
||||||
|
|
||||||
|
|
@ -10041,7 +10044,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: gametyperules
|
// TODO: gametyperules
|
||||||
player->growshrinktimer = (gametype == GT_BATTLE ? 8 : 12) * TICRATE;
|
player->growshrinktimer = max(player->growshrinktimer, (gametype == GT_BATTLE ? 8 : 12) * TICRATE);
|
||||||
|
|
||||||
if (player->invincibilitytimer > 0)
|
if (player->invincibilitytimer > 0)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -412,6 +412,7 @@ boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim)
|
||||||
{
|
{
|
||||||
mobj_t *pohbee = gun_pohbee(gun);
|
mobj_t *pohbee = gun_pohbee(gun);
|
||||||
mobj_t *owner = NULL;
|
mobj_t *owner = NULL;
|
||||||
|
INT32 prevTimer = 0;
|
||||||
|
|
||||||
if (pohbee == NULL || P_MobjWasRemoved(pohbee) == true)
|
if (pohbee == NULL || P_MobjWasRemoved(pohbee) == true)
|
||||||
{
|
{
|
||||||
|
|
@ -423,44 +424,60 @@ boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (victim->player->shrinkLaserDelay > 0)
|
||||||
|
{
|
||||||
|
victim->player->shrinkLaserDelay = TICRATE;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
victim->player->shrinkLaserDelay = TICRATE;
|
||||||
|
|
||||||
owner = pohbee_owner(pohbee);
|
owner = pohbee_owner(pohbee);
|
||||||
|
prevTimer = victim->player->growshrinktimer;
|
||||||
|
|
||||||
if (owner != NULL && victim == owner)
|
if (owner != NULL && victim == owner)
|
||||||
{
|
{
|
||||||
// Belongs to us. Give us Grow!
|
// Belongs to us. Give us Grow!
|
||||||
if (victim->player->growshrinktimer <= 0)
|
if (prevTimer < 0)
|
||||||
{
|
{
|
||||||
victim->scalespeed = mapobjectscale/TICRATE;
|
// Take away Shrink.
|
||||||
victim->destscale = FixedMul(mapobjectscale, GROW_SCALE);
|
K_RemoveGrowShrink(victim->player);
|
||||||
|
}
|
||||||
if (K_PlayerShrinkCheat(victim->player) == true)
|
else
|
||||||
{
|
{
|
||||||
victim->destscale = FixedMul(victim->destscale, SHRINK_SCALE);
|
victim->player->growshrinktimer += 5*TICRATE;
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: gametyperules
|
|
||||||
victim->player->growshrinktimer = (gametype == GT_BATTLE ? 8 : 12) * TICRATE;
|
|
||||||
|
|
||||||
if (victim->player->invincibilitytimer > 0)
|
|
||||||
{
|
|
||||||
; // invincibility has priority in P_RestoreMusic, no point in starting here
|
|
||||||
}
|
|
||||||
else if (P_IsLocalPlayer(victim->player) == true)
|
|
||||||
{
|
|
||||||
S_ChangeMusicSpecial("kgrow");
|
|
||||||
}
|
|
||||||
else //used to be "if (P_IsDisplayPlayer(victim->player) == false)"
|
|
||||||
{
|
|
||||||
S_StartSound(victim, (cv_kartinvinsfx.value ? sfx_alarmg : sfx_kgrow));
|
|
||||||
}
|
|
||||||
|
|
||||||
P_RestoreMusic(victim->player);
|
|
||||||
S_StartSound(victim, sfx_kc5a);
|
S_StartSound(victim, sfx_kc5a);
|
||||||
|
|
||||||
|
if (prevTimer <= 0)
|
||||||
|
{
|
||||||
|
victim->scalespeed = mapobjectscale/TICRATE;
|
||||||
|
victim->destscale = FixedMul(mapobjectscale, GROW_SCALE);
|
||||||
|
|
||||||
|
if (K_PlayerShrinkCheat(victim->player) == true)
|
||||||
|
{
|
||||||
|
victim->destscale = FixedMul(victim->destscale, SHRINK_SCALE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (victim->player->invincibilitytimer > 0)
|
||||||
|
{
|
||||||
|
; // invincibility has priority in P_RestoreMusic, no point in starting here
|
||||||
|
}
|
||||||
|
else if (P_IsLocalPlayer(victim->player) == true)
|
||||||
|
{
|
||||||
|
S_ChangeMusicSpecial("kgrow");
|
||||||
|
}
|
||||||
|
else //used to be "if (P_IsDisplayPlayer(victim->player) == false)"
|
||||||
|
{
|
||||||
|
S_StartSound(victim, (cv_kartinvinsfx.value ? sfx_alarmg : sfx_kgrow));
|
||||||
|
}
|
||||||
|
|
||||||
|
P_RestoreMusic(victim->player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (victim->player->growshrinktimer > 0)
|
if (prevTimer > 0)
|
||||||
{
|
{
|
||||||
// Take away Grow.
|
// Take away Grow.
|
||||||
K_RemoveGrowShrink(victim->player);
|
K_RemoveGrowShrink(victim->player);
|
||||||
|
|
@ -468,18 +485,21 @@ boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Start shrinking!
|
// Start shrinking!
|
||||||
K_DropItems(victim->player);
|
victim->player->growshrinktimer -= 5*TICRATE;
|
||||||
victim->player->growshrinktimer = -(15*TICRATE);
|
|
||||||
|
|
||||||
victim->scalespeed = mapobjectscale/TICRATE;
|
|
||||||
victim->destscale = FixedMul(mapobjectscale, SHRINK_SCALE);
|
|
||||||
|
|
||||||
if (K_PlayerShrinkCheat(victim->player) == true)
|
|
||||||
{
|
|
||||||
victim->destscale = FixedMul(victim->destscale, SHRINK_SCALE);
|
|
||||||
}
|
|
||||||
|
|
||||||
S_StartSound(victim, sfx_kc59);
|
S_StartSound(victim, sfx_kc59);
|
||||||
|
|
||||||
|
if (prevTimer >= 0)
|
||||||
|
{
|
||||||
|
K_DropItems(victim->player);
|
||||||
|
|
||||||
|
victim->scalespeed = mapobjectscale/TICRATE;
|
||||||
|
victim->destscale = FixedMul(mapobjectscale, SHRINK_SCALE);
|
||||||
|
|
||||||
|
if (K_PlayerShrinkCheat(victim->player) == true)
|
||||||
|
{
|
||||||
|
victim->destscale = FixedMul(victim->destscale, SHRINK_SCALE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -367,6 +367,8 @@ static void P_NetArchivePlayers(void)
|
||||||
|
|
||||||
WRITEUINT8(save_p, players[i].stairjank);
|
WRITEUINT8(save_p, players[i].stairjank);
|
||||||
|
|
||||||
|
WRITEUINT8(save_p, players[i].shrinkLaserDelay);
|
||||||
|
|
||||||
// respawnvars_t
|
// respawnvars_t
|
||||||
WRITEUINT8(save_p, players[i].respawn.state);
|
WRITEUINT8(save_p, players[i].respawn.state);
|
||||||
WRITEUINT32(save_p, K_GetWaypointHeapIndex(players[i].respawn.wp));
|
WRITEUINT32(save_p, K_GetWaypointHeapIndex(players[i].respawn.wp));
|
||||||
|
|
@ -654,6 +656,8 @@ static void P_NetUnArchivePlayers(void)
|
||||||
|
|
||||||
players[i].stairjank = READUINT8(save_p);
|
players[i].stairjank = READUINT8(save_p);
|
||||||
|
|
||||||
|
players[i].shrinkLaserDelay = READUINT8(save_p);
|
||||||
|
|
||||||
// respawnvars_t
|
// respawnvars_t
|
||||||
players[i].respawn.state = READUINT8(save_p);
|
players[i].respawn.state = READUINT8(save_p);
|
||||||
players[i].respawn.wp = (waypoint_t *)(size_t)READUINT32(save_p);
|
players[i].respawn.wp = (waypoint_t *)(size_t)READUINT32(save_p);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue