mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
More Flame Shield visuals
This commit is contained in:
parent
8a3c7ad2fb
commit
d1580a5b42
7 changed files with 70 additions and 10 deletions
|
|
@ -6712,6 +6712,10 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_FLAMESHIELDDASH8",
|
||||
|
||||
"S_FLAMESHIELDPAPER",
|
||||
"S_FLAMESHIELDLINE1",
|
||||
"S_FLAMESHIELDLINE2",
|
||||
"S_FLAMESHIELDLINE3",
|
||||
"S_FLAMESHIELDFLASH",
|
||||
|
||||
// The legend
|
||||
"S_SINK",
|
||||
|
|
|
|||
|
|
@ -458,6 +458,7 @@ extern INT32 greasetics;
|
|||
extern INT32 wipeoutslowtime;
|
||||
extern INT32 wantedreduce;
|
||||
extern INT32 wantedfrequency;
|
||||
extern INT32 flameseg;
|
||||
|
||||
extern UINT8 introtoplay;
|
||||
extern UINT8 creditscutscene;
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@ INT32 greasetics = 3*TICRATE;
|
|||
INT32 wipeoutslowtime = 20;
|
||||
INT32 wantedreduce = 5*TICRATE;
|
||||
INT32 wantedfrequency = 10*TICRATE;
|
||||
INT32 flameseg = TICRATE/4;
|
||||
|
||||
INT32 gameovertics = 15*TICRATE;
|
||||
|
||||
|
|
|
|||
10
src/info.c
10
src/info.c
|
|
@ -58,7 +58,9 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
//SRB2kart Sprites
|
||||
"RNDM","RPOP","SGNS","FAST","DSHR","BOST","BOSM","KFRE","KINV","KINF",
|
||||
"WIPD","DRIF","BDRF","DUST","DRWS","RSHE","FITM","BANA","ORBN","JAWZ","SSMN",
|
||||
"KRBM","BHOG","BHBM","SPBM","THNS","BUBS","BWVE","FLMS","FLMD","FLMP","SINK","SITR",
|
||||
"KRBM","BHOG","BHBM","SPBM","THNS","BUBS","BWVE",
|
||||
"FLMS","FLMD","FLMP","FLML","FLMF",
|
||||
"SINK","SITR",
|
||||
"KBLN","DEZL","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB",
|
||||
"CHOM","SACO","CRAB","BRNG","BUMP","FLEN","CLAS","PSHW","ISTA",
|
||||
"ISTB","ARRO","ITEM","ITMO","ITMI","ITMN","WANT","PBOM","HIT1","HIT2",
|
||||
|
|
@ -2928,7 +2930,11 @@ state_t states[NUMSTATES] =
|
|||
{SPR_FLMD, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_FLAMESHIELDDASH8}, // S_FLAMESHIELDDASH7
|
||||
{SPR_FLMD, FF_FULLBRIGHT, 2, {A_FlameShieldPaper}, 3, 1, S_FLAMESHIELDDASH1}, // S_FLAMESHIELDDASH8
|
||||
|
||||
{SPR_FLMP, FF_FULLBRIGHT|FF_PAPERSPRITE, 3, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDPAPER
|
||||
{SPR_FLMP, FF_FULLBRIGHT|FF_PAPERSPRITE, 3, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDPAPER
|
||||
{SPR_FLML, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 7, {NULL}, 6, 1, S_NULL}, // S_FLAMESHIELDLINE1
|
||||
{SPR_FLML, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE|7, 7, {NULL}, 6, 1, S_NULL}, // S_FLAMESHIELDLINE2
|
||||
{SPR_FLML, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE|14, 7, {NULL}, 6, 1, S_NULL}, // S_FLAMESHIELDLINE3
|
||||
{SPR_FLMF, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDFLASH
|
||||
|
||||
{SPR_SINK, 0, 1, {A_SmokeTrailer}, MT_SINKTRAIL, 0, S_SINK}, // S_SINK
|
||||
{SPR_SINK, 0|FF_TRANS80|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_SINK_SHIELD}, // S_SINK_SHIELD
|
||||
|
|
|
|||
|
|
@ -628,6 +628,8 @@ typedef enum sprite
|
|||
SPR_FLMS, // Flame Shield
|
||||
SPR_FLMD, // Flame Shield dash
|
||||
SPR_FLMP, // Flame Shield paper sprites
|
||||
SPR_FLML, // Flame Shield speed lines
|
||||
SPR_FLMF, // Flame Shield flash
|
||||
SPR_SINK, // Kitchen Sink
|
||||
SPR_SITR, // Kitchen Sink Trail
|
||||
SPR_KBLN, // Battle Mode Bumper
|
||||
|
|
@ -3609,6 +3611,10 @@ typedef enum state
|
|||
S_FLAMESHIELDDASH8,
|
||||
|
||||
S_FLAMESHIELDPAPER,
|
||||
S_FLAMESHIELDLINE1,
|
||||
S_FLAMESHIELDLINE2,
|
||||
S_FLAMESHIELDLINE3,
|
||||
S_FLAMESHIELDFLASH,
|
||||
|
||||
// The legend
|
||||
S_SINK,
|
||||
|
|
|
|||
15
src/k_kart.c
15
src/k_kart.c
|
|
@ -7583,10 +7583,9 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
if (player->kartstuff[k_flamelength] < destlen)
|
||||
player->kartstuff[k_flamelength]++; // Can always go up!
|
||||
|
||||
flamemax = player->kartstuff[k_flamelength] * (TICRATE/4);
|
||||
|
||||
flamemax = player->kartstuff[k_flamelength] * flameseg;
|
||||
if (flamemax > 0)
|
||||
flamemax += 3*(TICRATE/4);
|
||||
flamemax += TICRATE; // leniency period
|
||||
|
||||
if ((cmd->buttons & BT_ATTACK) && player->kartstuff[k_holdready])
|
||||
{
|
||||
|
|
@ -7634,9 +7633,9 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
{
|
||||
player->kartstuff[k_flamelength]--; // Can ONLY go down if you're not using it
|
||||
|
||||
flamemax = player->kartstuff[k_flamelength] * (TICRATE/4);
|
||||
flamemax = player->kartstuff[k_flamelength] * flameseg;
|
||||
if (flamemax > 0)
|
||||
flamemax += 3*(TICRATE/4);
|
||||
flamemax += TICRATE; // leniency period
|
||||
}
|
||||
|
||||
if (player->kartstuff[k_flamemeter] > flamemax)
|
||||
|
|
@ -9070,8 +9069,8 @@ static void K_drawKartItem(void)
|
|||
if (stplyr->kartstuff[k_itemtype] == KITEM_FLAMESHIELD && stplyr->kartstuff[k_flamelength] > 0)
|
||||
{
|
||||
INT32 numframes = 104;
|
||||
INT32 absolutemax = 16 * (TICRATE/4);
|
||||
INT32 flamemax = stplyr->kartstuff[k_flamelength] * (TICRATE/4);
|
||||
INT32 absolutemax = 16 * flameseg;
|
||||
INT32 flamemax = stplyr->kartstuff[k_flamelength] * flameseg;
|
||||
INT32 flamemeter = min(stplyr->kartstuff[k_flamemeter], flamemax);
|
||||
|
||||
INT32 bf = 16 - stplyr->kartstuff[k_flamelength];
|
||||
|
|
@ -9100,7 +9099,7 @@ static void K_drawKartItem(void)
|
|||
|
||||
if (ff >= 0 && ff < numframes && stplyr->kartstuff[k_flamemeter] > 0)
|
||||
{
|
||||
if (stplyr->kartstuff[k_flamemeter] > (flamemax - (TICRATE/4)) && (leveltime & 1))
|
||||
if ((stplyr->kartstuff[k_flamemeter] > flamemax) && (leveltime & 1))
|
||||
{
|
||||
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);
|
||||
|
|
|
|||
43
src/p_mobj.c
43
src/p_mobj.c
|
|
@ -8614,6 +8614,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
{
|
||||
fixed_t destx, desty;
|
||||
statenum_t curstate;
|
||||
INT32 flamemax = mobj->target->player->kartstuff[k_flamelength] * flameseg;
|
||||
|
||||
if (!mobj->target || !mobj->target->health || !mobj->target->player
|
||||
|| mobj->target->player->kartstuff[k_curshield] != KSHIELD_FLAME)
|
||||
|
|
@ -8629,6 +8630,31 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
{
|
||||
if (!(curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH8))
|
||||
P_SetMobjState(mobj, S_FLAMESHIELDDASH1);
|
||||
|
||||
if (leveltime & 1)
|
||||
{
|
||||
UINT8 i;
|
||||
UINT8 nl = 2;
|
||||
|
||||
if (mobj->target->player->kartstuff[k_flamedash] > mobj->extravalue1)
|
||||
nl = 3;
|
||||
|
||||
for (i = 0; i < nl; i++)
|
||||
{
|
||||
mobj_t *fast = P_SpawnMobj(mobj->x + (P_RandomRange(-36,36) * mobj->scale),
|
||||
mobj->y + (P_RandomRange(-36,36) * mobj->scale),
|
||||
mobj->z + (mobj->height/2) + (P_RandomRange(-20,20) * mobj->scale),
|
||||
MT_FASTLINE);
|
||||
|
||||
fast->angle = mobj->angle;
|
||||
fast->momx = 3*mobj->target->momx/4;
|
||||
fast->momy = 3*mobj->target->momy/4;
|
||||
fast->momz = 3*mobj->target->momz/4;
|
||||
|
||||
K_MatchGenericExtraFlags(fast, mobj);
|
||||
P_SetMobjState(fast, S_FLAMESHIELDLINE1 + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -8636,6 +8662,23 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
P_SetMobjState(mobj, S_FLAMESHIELD1);
|
||||
}
|
||||
|
||||
mobj->extravalue1 = mobj->target->player->kartstuff[k_flamedash];
|
||||
|
||||
if (mobj->target->player->kartstuff[k_flamemeter] > flamemax)
|
||||
{
|
||||
mobj_t *flash = P_SpawnMobj(mobj->x + mobj->target->momx, mobj->y + mobj->target->momy, mobj->z + mobj->target->momz, MT_THOK);
|
||||
P_SetMobjState(flash, S_FLAMESHIELDFLASH);
|
||||
|
||||
if (leveltime & 1)
|
||||
{
|
||||
flash->frame |= 2 + ((leveltime / 2) % 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
flash->frame |= ((leveltime / 2) % 2);
|
||||
}
|
||||
}
|
||||
|
||||
if (!splitscreen /*&& rendermode != render_soft*/)
|
||||
{
|
||||
angle_t viewingangle;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue