mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-26 12:01:47 +00:00
Firery shield
This commit is contained in:
parent
e5a59c28d1
commit
4e63b39ccb
1 changed files with 36 additions and 19 deletions
55
src/k_kart.c
55
src/k_kart.c
|
|
@ -4324,7 +4324,7 @@ static void K_DoThunderShield(player_t *player)
|
||||||
|
|
||||||
#undef THUNDERRADIUS
|
#undef THUNDERRADIUS
|
||||||
|
|
||||||
static void K_FlameShieldPop(mobj_t *src)
|
static void K_FlameDashLeftoverSmoke(mobj_t *src)
|
||||||
{
|
{
|
||||||
UINT8 i;
|
UINT8 i;
|
||||||
|
|
||||||
|
|
@ -4682,7 +4682,6 @@ void K_DropHnextList(player_t *player)
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD)
|
else if (player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD)
|
||||||
{
|
{
|
||||||
K_FlameShieldPop(player->mo);
|
|
||||||
player->kartstuff[k_itemtype] = KITEM_NONE;
|
player->kartstuff[k_itemtype] = KITEM_NONE;
|
||||||
player->kartstuff[k_itemamount] = 0;
|
player->kartstuff[k_itemamount] = 0;
|
||||||
player->kartstuff[k_curshield] = KSHIELD_NONE;
|
player->kartstuff[k_curshield] = KSHIELD_NONE;
|
||||||
|
|
@ -6187,7 +6186,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
if (player->kartstuff[k_itemtype] != KITEM_FLAMESHIELD || player->exiting)
|
if (player->kartstuff[k_itemtype] != KITEM_FLAMESHIELD || player->exiting)
|
||||||
{
|
{
|
||||||
if (player->kartstuff[k_flamedash])
|
if (player->kartstuff[k_flamedash])
|
||||||
K_FlameShieldPop(player->mo);
|
K_FlameDashLeftoverSmoke(player->mo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player->kartstuff[k_comebacktimer])
|
if (player->kartstuff[k_comebacktimer])
|
||||||
|
|
@ -7578,7 +7577,16 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
|
|
||||||
if (!HOLDING_ITEM && NO_HYUDORO)
|
if (!HOLDING_ITEM && NO_HYUDORO)
|
||||||
{
|
{
|
||||||
INT32 flamemax = player->kartstuff[k_flamelength] * (TICRATE/4);
|
INT32 destlen = K_FlameShieldMax(player);
|
||||||
|
INT32 flamemax = 0;
|
||||||
|
|
||||||
|
if (player->kartstuff[k_flamelength] < destlen)
|
||||||
|
player->kartstuff[k_flamelength]++; // Can always go up!
|
||||||
|
|
||||||
|
flamemax = player->kartstuff[k_flamelength] * (TICRATE/4);
|
||||||
|
|
||||||
|
if (flamemax > 0)
|
||||||
|
flamemax += (TICRATE/4);
|
||||||
|
|
||||||
if ((cmd->buttons & BT_ATTACK) && player->kartstuff[k_holdready])
|
if ((cmd->buttons & BT_ATTACK) && player->kartstuff[k_holdready])
|
||||||
{
|
{
|
||||||
|
|
@ -7596,12 +7604,11 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
|
|
||||||
if (player->kartstuff[k_flamemeter] > flamemax)
|
if (player->kartstuff[k_flamemeter] > flamemax)
|
||||||
{
|
{
|
||||||
K_FlameShieldPop(player->mo);
|
|
||||||
P_Thrust(
|
P_Thrust(
|
||||||
player->mo,
|
player->mo, player->mo->angle,
|
||||||
R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy),
|
FixedMul((50*mapobjectscale), K_GetKartGameSpeedScalar(gamespeed))
|
||||||
20 * K_GetKartGameSpeedScalar(gamespeed)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
player->kartstuff[k_flamemeter] = 0;
|
player->kartstuff[k_flamemeter] = 0;
|
||||||
player->kartstuff[k_flamelength] = 0;
|
player->kartstuff[k_flamelength] = 0;
|
||||||
player->kartstuff[k_holdready] = 0;
|
player->kartstuff[k_holdready] = 0;
|
||||||
|
|
@ -7614,6 +7621,18 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
|
|
||||||
if (player->kartstuff[k_flamemeter] > 0)
|
if (player->kartstuff[k_flamemeter] > 0)
|
||||||
player->kartstuff[k_flamemeter]--;
|
player->kartstuff[k_flamemeter]--;
|
||||||
|
|
||||||
|
if (player->kartstuff[k_flamelength] > destlen)
|
||||||
|
{
|
||||||
|
player->kartstuff[k_flamelength]--; // Can ONLY go down if you're not using it
|
||||||
|
|
||||||
|
flamemax = player->kartstuff[k_flamelength] * (TICRATE/4);
|
||||||
|
if (flamemax > 0)
|
||||||
|
flamemax += (TICRATE/4);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player->kartstuff[k_flamemeter] > flamemax)
|
||||||
|
player->kartstuff[k_flamemeter] = flamemax;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -7700,15 +7719,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
|| player->kartstuff[k_growshrinktimer] < 0)
|
|| player->kartstuff[k_growshrinktimer] < 0)
|
||||||
indirectitemcooldown = 20*TICRATE;
|
indirectitemcooldown = 20*TICRATE;
|
||||||
|
|
||||||
if (player->kartstuff[k_itemtype] == KITEM_FLAMESHIELD)
|
if (player->kartstuff[k_itemtype] != KITEM_FLAMESHIELD)
|
||||||
{
|
|
||||||
INT32 destlen = K_FlameShieldMax(player);
|
|
||||||
if (player->kartstuff[k_flamelength] > destlen)
|
|
||||||
player->kartstuff[k_flamelength]--;
|
|
||||||
else if (player->kartstuff[k_flamelength] < destlen)
|
|
||||||
player->kartstuff[k_flamelength]++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
player->kartstuff[k_flamelength] = 0;
|
player->kartstuff[k_flamelength] = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -9047,6 +9058,7 @@ static void K_drawKartItem(void)
|
||||||
INT32 numframes = 104;
|
INT32 numframes = 104;
|
||||||
INT32 absolutemax = 16 * (TICRATE/4);
|
INT32 absolutemax = 16 * (TICRATE/4);
|
||||||
INT32 flamemax = stplyr->kartstuff[k_flamelength] * (TICRATE/4);
|
INT32 flamemax = stplyr->kartstuff[k_flamelength] * (TICRATE/4);
|
||||||
|
INT32 flen = 1;
|
||||||
INT32 bf = 16 - (flamemax / (TICRATE/4));
|
INT32 bf = 16 - (flamemax / (TICRATE/4));
|
||||||
INT32 ff = numframes - ((stplyr->kartstuff[k_flamemeter] * numframes) / absolutemax);
|
INT32 ff = numframes - ((stplyr->kartstuff[k_flamemeter] * numframes) / absolutemax);
|
||||||
INT32 xo = 6, yo = 4;
|
INT32 xo = 6, yo = 4;
|
||||||
|
|
@ -9063,15 +9075,20 @@ static void K_drawKartItem(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (stplyr->kartstuff[k_flamelength] > 0)
|
||||||
|
{
|
||||||
|
flen = (numframes * 16) / stplyr->kartstuff[k_flamelength];
|
||||||
|
}
|
||||||
|
|
||||||
if (ff < 0) {ff = 0;}
|
if (ff < 0) {ff = 0;}
|
||||||
if (ff > numframes-1) {ff = numframes-1;}
|
if (ff > flen-1) {ff = flen-1;}
|
||||||
|
|
||||||
if (flamemax > 0)
|
if (flamemax > 0)
|
||||||
V_DrawScaledPatch(fx-xo, fy-yo, V_HUDTRANS|fflags|flip, kp_flameshieldmeter_bg[bf][offset]);
|
V_DrawScaledPatch(fx-xo, fy-yo, V_HUDTRANS|fflags|flip, kp_flameshieldmeter_bg[bf][offset]);
|
||||||
|
|
||||||
if (stplyr->kartstuff[k_flamemeter] > 0)
|
if (stplyr->kartstuff[k_flamemeter] > 0)
|
||||||
{
|
{
|
||||||
if (stplyr->kartstuff[k_flamemeter] > (flamemax - (TICRATE/2)) && (leveltime & 1))
|
if (stplyr->kartstuff[k_flamemeter] > (flamemax - (TICRATE/4)) && (leveltime & 1))
|
||||||
{
|
{
|
||||||
UINT8 *fsflash = R_GetTranslationColormap(TC_BLINK, SKINCOLOR_WHITE, GTC_CACHE);
|
UINT8 *fsflash = R_GetTranslationColormap(TC_BLINK, SKINCOLOR_WHITE, GTC_CACHE);
|
||||||
V_DrawMappedPatch(fx-xo, fy-yo, V_HUDTRANS|fflags|flip, kp_flameshieldmeter[ff][offset], fsflash);
|
V_DrawMappedPatch(fx-xo, fy-yo, V_HUDTRANS|fflags|flip, kp_flameshieldmeter[ff][offset], fsflash);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue