mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 12:31:54 +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 shrinkLaserDelay;
|
||||||
|
|
||||||
|
UINT8 eggmanTransferDelay;
|
||||||
|
|
||||||
mobj_t *stumbleIndicator;
|
mobj_t *stumbleIndicator;
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (player->eggmanexplode > 0)
|
||||||
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3150,7 +3153,7 @@ static void K_GetKartBoostPower(player_t *player)
|
||||||
|
|
||||||
if (player->eggmanexplode) // Ready-to-explode
|
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
|
if (player->draftpower > 0) // Drafting
|
||||||
|
|
@ -7708,6 +7711,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
if (player->shrinkLaserDelay)
|
if (player->shrinkLaserDelay)
|
||||||
player->shrinkLaserDelay--;
|
player->shrinkLaserDelay--;
|
||||||
|
|
||||||
|
if (player->eggmanTransferDelay)
|
||||||
|
player->eggmanTransferDelay--;
|
||||||
|
|
||||||
if (player->ringdelay)
|
if (player->ringdelay)
|
||||||
player->ringdelay--;
|
player->ringdelay--;
|
||||||
|
|
||||||
|
|
@ -7895,6 +7901,8 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player->eggmanexplode--;
|
player->eggmanexplode--;
|
||||||
|
if (player->eggmanexplode == 5*TICRATE/2)
|
||||||
|
S_StartSound(player->mo, sfx_s3k53);
|
||||||
if (player->eggmanexplode <= 0)
|
if (player->eggmanexplode <= 0)
|
||||||
{
|
{
|
||||||
mobj_t *eggsexplode;
|
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_UpdateMobjItemOverlay(mobj_t *part, SINT8 itemType, UINT8 itemCount);
|
||||||
|
|
||||||
|
void K_EggmanTransfer(player_t *source, player_t *victim);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
#endif
|
#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>>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.
|
// Waited way too long, forcefully confirm the item.
|
||||||
confirmItem = true;
|
confirmItem = true;
|
||||||
|
|
|
||||||
|
|
@ -1410,6 +1410,14 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing)
|
||||||
K_PvPTouchDamage(tm.thing, 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;
|
return BMIT_CONTINUE;
|
||||||
}
|
}
|
||||||
else if (thing->type == MT_SPECIAL_UFO)
|
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].shrinkLaserDelay);
|
||||||
|
|
||||||
|
WRITEUINT8(save->p, players[i].eggmanTransferDelay);
|
||||||
|
|
||||||
// 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));
|
||||||
|
|
@ -746,6 +748,8 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
||||||
|
|
||||||
players[i].shrinkLaserDelay = READUINT8(save->p);
|
players[i].shrinkLaserDelay = READUINT8(save->p);
|
||||||
|
|
||||||
|
players[i].eggmanTransferDelay = 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