Start on new flame shield dash visuals

This commit is contained in:
Sally Cochenour 2020-03-25 23:49:39 -04:00
parent 88709aafaa
commit 81fa5d7f51
5 changed files with 86 additions and 10 deletions

View file

@ -1887,6 +1887,7 @@ static actionpointer_t actionpointers[] =
{{A_ReaperThinker}, "A_REAPERTHINKER"}, //SRB2kart
{{A_MementosTPParticles}, "A_MEMENTOSTPPARTICLES"}, //SRB2kart
{{A_FlameParticle}, "A_FLAMEPARTICLE"}, // SRB2kart
{{A_FlameShieldPaper}, "A_FLAMESHIELDPAPER"}, // SRB2kart
{{A_OrbitNights}, "A_ORBITNIGHTS"},
{{A_GhostMe}, "A_GHOSTME"},
{{A_SetObjectState}, "A_SETOBJECTSTATE"},
@ -6700,7 +6701,17 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLAMESHIELD16",
"S_FLAMESHIELD17",
"S_FLAMESHIELD18",
"S_FLAMESHIELDDASH",
"S_FLAMESHIELDDASH1",
"S_FLAMESHIELDDASH2",
"S_FLAMESHIELDDASH3",
"S_FLAMESHIELDDASH4",
"S_FLAMESHIELDDASH5",
"S_FLAMESHIELDDASH6",
"S_FLAMESHIELDDASH7",
"S_FLAMESHIELDDASH8",
"S_FLAMESHIELDPAPER",
// The legend
"S_SINK",

View file

@ -58,7 +58,7 @@ 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","SINK","SITR",
"KRBM","BHOG","BHBM","SPBM","THNS","BUBS","BWVE","FLMS","FLMD","FLMP","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",
@ -2918,7 +2918,17 @@ state_t states[NUMSTATES] =
{SPR_FLMS, FF_FULLBRIGHT|16, 2, {NULL}, 0, 0, S_FLAMESHIELD17}, // S_FLAMESHIELD16
{SPR_FLMS, FF_FULLBRIGHT|8, 2, {NULL}, 0, 0, S_FLAMESHIELD18}, // S_FLAMESHIELD17
{SPR_FLMS, FF_FULLBRIGHT|17, 2, {NULL}, 0, 0, S_FLAMESHIELD1}, // S_FLAMESHIELD18
{SPR_FLMS, FF_FULLBRIGHT|18, -1, {NULL}, 0, 0, S_FLAMESHIELDDASH}, // S_FLAMESHIELDDASH
{SPR_FLMD, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH2}, // S_FLAMESHIELDDASH1
{SPR_FLMD, FF_FULLBRIGHT, 1, {A_FlameShieldPaper}, 0, 2, S_FLAMESHIELDDASH3}, // S_FLAMESHIELDDASH2
{SPR_FLMD, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH4}, // S_FLAMESHIELDDASH3
{SPR_FLMD, FF_FULLBRIGHT, 1, {A_FlameShieldPaper}, 1, 3, S_FLAMESHIELDDASH5}, // S_FLAMESHIELDDASH4
{SPR_FLMD, FF_FULLBRIGHT|3, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH6}, // S_FLAMESHIELDDASH5
{SPR_FLMD, FF_FULLBRIGHT, 1, {A_FlameShieldPaper}, 2, 0, S_FLAMESHIELDDASH7}, // S_FLAMESHIELDDASH6
{SPR_FLMD, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH8}, // S_FLAMESHIELDDASH7
{SPR_FLMD, FF_FULLBRIGHT, 1, {A_FlameShieldPaper}, 3, 1, S_FLAMESHIELDDASH1}, // S_FLAMESHIELDDASH8
{SPR_FLMP, FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDPAPER
{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

View file

@ -177,6 +177,7 @@ void A_MayonakaArrow(); //SRB2kart: midnight channel arrow sign
void A_ReaperThinker(); //SRB2kart: mementos reaper
void A_MementosTPParticles(); //SRB2kart: mementos teleporter particles. Man that's a lot of actions for my shite.
void A_FlameParticle(); // SRB2kart
void A_FlameShieldPaper();
void A_OrbitNights();
void A_GhostMe();
void A_SetObjectState();
@ -625,6 +626,8 @@ typedef enum sprite
SPR_BUBS, // Bubble Shield (not Bubs)
SPR_BWVE, // Bubble Shield waves
SPR_FLMS, // Flame Shield
SPR_FLMD, // Flame Shield dash
SPR_FLMP, // Flame Shield paper sprites
SPR_SINK, // Kitchen Sink
SPR_SITR, // Kitchen Sink Trail
SPR_KBLN, // Battle Mode Bumper
@ -3595,7 +3598,17 @@ typedef enum state
S_FLAMESHIELD16,
S_FLAMESHIELD17,
S_FLAMESHIELD18,
S_FLAMESHIELDDASH,
S_FLAMESHIELDDASH1,
S_FLAMESHIELDDASH2,
S_FLAMESHIELDDASH3,
S_FLAMESHIELDDASH4,
S_FLAMESHIELDDASH5,
S_FLAMESHIELDDASH6,
S_FLAMESHIELDDASH7,
S_FLAMESHIELDDASH8,
S_FLAMESHIELDPAPER,
// The legend
S_SINK,

View file

@ -203,6 +203,7 @@ void A_MayonakaArrow(mobj_t *actor); //SRB2kart
void A_ReaperThinker(mobj_t *actor); //SRB2kart
void A_MementosTPParticles(mobj_t *actor); //SRB2kart
void A_FlameParticle(mobj_t *actor); // SRB2kart
void A_FlameShieldPaper(mobj_t *actor); // SRB2kart
void A_OrbitNights(mobj_t *actor);
void A_GhostMe(mobj_t *actor);
void A_SetObjectState(mobj_t *actor);
@ -9328,6 +9329,49 @@ void A_FlameParticle(mobj_t *actor)
par->momz = actor->scale<<1;
}
void A_FlameShieldPaper(mobj_t *actor)
{
INT32 framea = 0;
INT32 frameb = 0;
INT32 locvar1 = var1;
INT32 locvar2 = var2;
UINT8 i;
#ifdef HAVE_BLUA
if (LUA_CallAction("A_FlameShieldPaper", actor))
return;
#endif
framea = (locvar1 & FF_FRAMEMASK);
frameb = (locvar2 & FF_FRAMEMASK);
for (i = 0; i < 2; i++)
{
INT32 perpendicular = ((i & 1) ? -ANGLE_90 : ANGLE_90);
fixed_t newx = actor->x + P_ReturnThrustX(NULL, actor->angle + perpendicular, 8*actor->scale);
fixed_t newy = actor->y + P_ReturnThrustY(NULL, actor->angle + perpendicular, 8*actor->scale);
mobj_t *paper = P_SpawnMobj(newx + actor->momx, newy + actor->momy, actor->z + actor->momz, MT_THOK);
P_SetScale(paper, actor->scale);
paper->destscale = actor->destscale;
P_SetMobjState(paper, S_FLAMESHIELDPAPER);
paper->frame &= ~FF_FRAMEMASK;
paper->angle = actor->angle + ANGLE_45;
if (i & 1)
{
paper->angle -= ANGLE_90;
paper->frame |= frameb;
}
else
{
paper->frame |= framea;
}
}
}
//}
// Function: A_OrbitNights

View file

@ -8603,15 +8603,13 @@ void P_MobjThinker(mobj_t *mobj)
if (mobj->target->player->kartstuff[k_flamedash])
{
if (curstate != S_FLAMESHIELDDASH)
P_SetMobjState(mobj, S_FLAMESHIELDDASH);
mobj->flags2 ^= MF2_DONTDRAW;
if (!(curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH8))
P_SetMobjState(mobj, S_FLAMESHIELDDASH1);
}
else
{
if (curstate == S_FLAMESHIELDDASH)
if (curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH8)
P_SetMobjState(mobj, S_FLAMESHIELD1);
mobj->flags2 &= ~MF2_DONTDRAW;
}
if (!splitscreen /*&& rendermode != render_soft*/)
@ -8625,7 +8623,7 @@ void P_MobjThinker(mobj_t *mobj)
else
viewingangle = R_PointToAngle2(mobj->target->x, mobj->target->y, camera[0].x, camera[0].y);
if (curstate >= S_FLAMESHIELD1 && curstate < S_FLAMESHIELDDASH && ((curstate-S_FLAMESHIELD1) & 1))
if (curstate >= S_FLAMESHIELD1 && curstate < S_FLAMESHIELDDASH1 && ((curstate-S_FLAMESHIELD1) & 1))
viewingangle += ANGLE_180;
destx = mobj->target->x + P_ReturnThrustX(mobj->target, viewingangle, mobj->scale>>4);