mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-28 18:52:31 +00:00
Buff eggbox speed, allow contact transfers
This commit is contained in:
parent
c41d0dee32
commit
00aa69ca0a
6 changed files with 50 additions and 2 deletions
|
|
@ -659,6 +659,8 @@ struct player_t
|
|||
|
||||
UINT8 shrinkLaserDelay;
|
||||
|
||||
UINT8 eggmanTransferDelay;
|
||||
|
||||
mobj_t *stumbleIndicator;
|
||||
|
||||
#ifdef HWRENDER
|
||||
|
|
|
|||
34
src/k_kart.c
34
src/k_kart.c
|
|
@ -1231,6 +1231,9 @@ static boolean K_HasInfiniteTether(player_t *player)
|
|||
return true;
|
||||
}
|
||||
|
||||
if (player->eggmanexplode > 0)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -3150,7 +3153,7 @@ static void K_GetKartBoostPower(player_t *player)
|
|||
|
||||
if (player->eggmanexplode) // Ready-to-explode
|
||||
{
|
||||
ADDBOOST(3*FRACUNIT/20, FRACUNIT, 0); // + 15% top speed, + 100% acceleration, +0% handling
|
||||
ADDBOOST(6*FRACUNIT/20, FRACUNIT, 0); // + 30% top speed, + 100% acceleration, +0% handling
|
||||
}
|
||||
|
||||
if (player->draftpower > 0) // Drafting
|
||||
|
|
@ -7708,6 +7711,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
if (player->shrinkLaserDelay)
|
||||
player->shrinkLaserDelay--;
|
||||
|
||||
if (player->eggmanTransferDelay)
|
||||
player->eggmanTransferDelay--;
|
||||
|
||||
if (player->ringdelay)
|
||||
player->ringdelay--;
|
||||
|
||||
|
|
@ -7895,6 +7901,8 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
else
|
||||
{
|
||||
player->eggmanexplode--;
|
||||
if (player->eggmanexplode == 5*TICRATE/2)
|
||||
S_StartSound(player->mo, sfx_s3k53);
|
||||
if (player->eggmanexplode <= 0)
|
||||
{
|
||||
mobj_t *eggsexplode;
|
||||
|
|
@ -11304,4 +11312,28 @@ void K_UpdateMobjItemOverlay(mobj_t *part, SINT8 itemType, UINT8 itemCount)
|
|||
}
|
||||
}
|
||||
|
||||
void K_EggmanTransfer(player_t *source, player_t *victim)
|
||||
{
|
||||
if (victim->eggmanTransferDelay)
|
||||
return;
|
||||
if (victim->eggmanexplode)
|
||||
return;
|
||||
|
||||
K_AddHitLag(victim->mo, 2, true);
|
||||
victim->eggmanexplode = 4*TICRATE;
|
||||
victim->itemRoulette.eggman = false;
|
||||
victim->itemRoulette.active = false;
|
||||
|
||||
if (P_IsDisplayPlayer(victim) && !demo.freecam)
|
||||
S_StartSound(NULL, sfx_itrole);
|
||||
|
||||
K_AddHitLag(source->mo, 2, true);
|
||||
source->eggmanexplode = 0;
|
||||
source->itemRoulette.eggman = false;
|
||||
source->itemRoulette.active = false;
|
||||
source->eggmanTransferDelay = 10;
|
||||
|
||||
S_StopSoundByID(source->mo, sfx_s3k53);
|
||||
}
|
||||
|
||||
//}
|
||||
|
|
|
|||
|
|
@ -201,6 +201,8 @@ void K_UnsetItemOut(player_t *player);
|
|||
|
||||
void K_UpdateMobjItemOverlay(mobj_t *part, SINT8 itemType, UINT8 itemCount);
|
||||
|
||||
void K_EggmanTransfer(player_t *source, player_t *victim);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1434,7 +1434,7 @@ void K_KartItemRoulette(player_t *const player, ticcmd_t *const cmd)
|
|||
|
||||
if (roulette->elapsed > TICRATE>>1) // Prevent accidental immediate item confirm
|
||||
{
|
||||
if (roulette->elapsed > TICRATE<<4)
|
||||
if (roulette->elapsed > TICRATE<<4 || (roulette->eggman && roulette->elapsed > TICRATE*4))
|
||||
{
|
||||
// Waited way too long, forcefully confirm the item.
|
||||
confirmItem = true;
|
||||
|
|
|
|||
|
|
@ -1410,6 +1410,14 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing)
|
|||
K_PvPTouchDamage(tm.thing, thing);
|
||||
}
|
||||
|
||||
if (thing->player->eggmanexplode)
|
||||
{
|
||||
K_EggmanTransfer(thing->player, tm.thing->player);
|
||||
} else if (tm.thing->player->eggmanexplode)
|
||||
{
|
||||
K_EggmanTransfer(tm.thing->player, thing->player);
|
||||
}
|
||||
|
||||
return BMIT_CONTINUE;
|
||||
}
|
||||
else if (thing->type == MT_SPECIAL_UFO)
|
||||
|
|
|
|||
|
|
@ -393,6 +393,8 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
|||
|
||||
WRITEUINT8(save->p, players[i].shrinkLaserDelay);
|
||||
|
||||
WRITEUINT8(save->p, players[i].eggmanTransferDelay);
|
||||
|
||||
// respawnvars_t
|
||||
WRITEUINT8(save->p, players[i].respawn.state);
|
||||
WRITEUINT32(save->p, K_GetWaypointHeapIndex(players[i].respawn.wp));
|
||||
|
|
@ -746,6 +748,8 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
|||
|
||||
players[i].shrinkLaserDelay = READUINT8(save->p);
|
||||
|
||||
players[i].eggmanTransferDelay = READUINT8(save->p);
|
||||
|
||||
// respawnvars_t
|
||||
players[i].respawn.state = READUINT8(save->p);
|
||||
players[i].respawn.wp = (waypoint_t *)(size_t)READUINT32(save->p);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue