mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-02-05 16:01:04 +00:00
Move Shrink out of P_DamageMobj
This commit is contained in:
parent
a3211df748
commit
b58cbd2c08
3 changed files with 45 additions and 49 deletions
48
src/k_kart.c
48
src/k_kart.c
|
@ -3134,12 +3134,50 @@ static void K_DoShrink(player_t *player)
|
||||||
|
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
{
|
{
|
||||||
/*if (playeringame[i])
|
if (!playeringame[i] || player->spectator || !players[i].mo)
|
||||||
P_FlashPal(&players[i], PAL_NUKE, 10);*/
|
continue;
|
||||||
|
if (&players[i] == player)
|
||||||
|
continue;
|
||||||
|
if (players[i].kartstuff[k_position] < player->kartstuff[k_position])
|
||||||
|
{
|
||||||
|
//P_FlashPal(&players[i], PAL_NUKE, 10);
|
||||||
|
|
||||||
if (playeringame[i] && players[i].mo && !player->spectator
|
if (!player->kartstuff[k_invincibilitytimer] // Don't hit while invulnerable!
|
||||||
&& players[i].kartstuff[k_position] < player->kartstuff[k_position])
|
&& player->kartstuff[k_growshrinktimer] <= 0)
|
||||||
P_DamageMobj(players[i].mo, player->mo, player->mo, 64);
|
{
|
||||||
|
// Start shrinking!
|
||||||
|
players[i].mo->scalespeed = mapheaderinfo[gamemap-1]->mobj_scale/TICRATE;
|
||||||
|
players[i].mo->destscale = 6*(mapheaderinfo[gamemap-1]->mobj_scale)/8;
|
||||||
|
if (cv_kartdebugshrink.value && !modeattacking && !players[i].bot)
|
||||||
|
players[i].mo->destscale = 6*players[i].mo->destscale/8;
|
||||||
|
|
||||||
|
// Wipeout
|
||||||
|
K_DropItems(&players[i]);
|
||||||
|
K_SpinPlayer(&players[i], player->mo, 1, false);
|
||||||
|
|
||||||
|
// P_RingDamage
|
||||||
|
P_DoPlayerPain(&players[i], player->mo, player->mo);
|
||||||
|
P_ForceFeed(&players[i], 40, 10, TICRATE, 40 + min((players[i].mo->health-1), 100)*2);
|
||||||
|
P_PlayRinglossSound(players[i].mo); // Ringledingle!
|
||||||
|
|
||||||
|
P_PlayerRingBurst(&players[i], 5);
|
||||||
|
players[i].mo->momx = players[i].mo->momy = 0;
|
||||||
|
if (P_IsLocalPlayer(&players[i]))
|
||||||
|
{
|
||||||
|
quake.intensity = 32*FRACUNIT;
|
||||||
|
quake.time = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
players[i].kartstuff[k_growshrinktimer] -= (200+(40*(16-players[i].kartstuff[k_position])));
|
||||||
|
players[i].kartstuff[k_sneakertimer] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grow should get taken away.
|
||||||
|
if (players[i].kartstuff[k_growshrinktimer] > 0)
|
||||||
|
players[i].kartstuff[k_growshrinktimer] = 2;
|
||||||
|
|
||||||
|
S_StartSound(players[i].mo, sfx_kc59);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3239,48 +3239,6 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
||||||
return false; // Don't get hurt by fire generated from friends.
|
return false; // Don't get hurt by fire generated from friends.
|
||||||
}
|
}
|
||||||
|
|
||||||
//{ SRB2kart - special damage sources
|
|
||||||
|
|
||||||
// Shrink
|
|
||||||
if (damage == 64)
|
|
||||||
{
|
|
||||||
if (player == source->player)
|
|
||||||
return false;
|
|
||||||
// Don't flip out while super!
|
|
||||||
if (!player->kartstuff[k_invincibilitytimer] && player->kartstuff[k_growshrinktimer] <= 0)
|
|
||||||
{
|
|
||||||
// Start shrinking!
|
|
||||||
player->mo->scalespeed = mapheaderinfo[gamemap-1]->mobj_scale/TICRATE;
|
|
||||||
player->mo->destscale = 6*(mapheaderinfo[gamemap-1]->mobj_scale)/8;
|
|
||||||
if (cv_kartdebugshrink.value && !modeattacking && !player->bot)
|
|
||||||
player->mo->destscale = 6*player->mo->destscale/8;
|
|
||||||
|
|
||||||
// Wipeout
|
|
||||||
K_DropItems(player);
|
|
||||||
K_SpinPlayer(player, source, 1, false);
|
|
||||||
damage = player->mo->health - 1;
|
|
||||||
P_RingDamage(player, inflictor, source, damage);
|
|
||||||
P_PlayerRingBurst(player, 5);
|
|
||||||
player->mo->momx = player->mo->momy = 0;
|
|
||||||
if (P_IsLocalPlayer(player))
|
|
||||||
{
|
|
||||||
quake.intensity = 32*FRACUNIT;
|
|
||||||
quake.time = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
player->kartstuff[k_growshrinktimer] -= (200+(40*(16-player->kartstuff[k_position])));
|
|
||||||
}
|
|
||||||
// Grow? Let's take that away.
|
|
||||||
if (player->kartstuff[k_growshrinktimer] > 0)
|
|
||||||
{
|
|
||||||
player->kartstuff[k_growshrinktimer] = 2;
|
|
||||||
}
|
|
||||||
player->kartstuff[k_sneakertimer] = 0;
|
|
||||||
S_StartSound(player->mo, sfx_kc59);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
//}
|
|
||||||
|
|
||||||
// Sudden-Death mode
|
// Sudden-Death mode
|
||||||
if (source && source->type == MT_PLAYER)
|
if (source && source->type == MT_PLAYER)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1786,13 +1786,13 @@ void P_DoPlayerExit(player_t *player)
|
||||||
{
|
{
|
||||||
if (!playeringame[i] || players[i].spectator)
|
if (!playeringame[i] || players[i].spectator)
|
||||||
continue;
|
continue;
|
||||||
if (players[i].exiting || K_IsPlayerLosing(players[i])) // Only start countdown when all winners are declared
|
if (players[i].exiting || K_IsPlayerLosing(&players[i])) // Only start countdown when all winners are declared
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == MAXPLAYERS)
|
if (i == MAXPLAYERS)
|
||||||
countdown = ((!(netgame || multiplayer) ? cv_countdowntime.defaultvalue : cv_countdowntime.value)*TICRATE) + 1; // 30 seconds to finish, get going!
|
countdown = (((netgame || multiplayer) ? cv_countdowntime.value : 30)*TICRATE) + 1; // 30 seconds to finish, get going!
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cv_kartvoices.value)
|
if (cv_kartvoices.value)
|
||||||
|
|
Loading…
Reference in a new issue