Merge branch 'flame-visual' into 'master'

Firework frames for fire shield

See merge request KartKrew/Kart!226
This commit is contained in:
Sryder 2020-03-28 08:10:16 -04:00
commit 26646e57e3
4 changed files with 85 additions and 12 deletions

View file

@ -6710,6 +6710,15 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLAMESHIELDDASH6",
"S_FLAMESHIELDDASH7",
"S_FLAMESHIELDDASH8",
"S_FLAMESHIELDDASH9",
"S_FLAMESHIELDDASH10",
"S_FLAMESHIELDDASH11",
"S_FLAMESHIELDDASH12",
"S_FLAMESHIELDDASH2_UNDERLAY",
"S_FLAMESHIELDDASH5_UNDERLAY",
"S_FLAMESHIELDDASH8_UNDERLAY",
"S_FLAMESHIELDDASH11_UNDERLAY",
"S_FLAMESHIELDPAPER",
"S_FLAMESHIELDLINE1",
@ -7876,6 +7885,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_THUNDERSHIELD", // Shields
"MT_BUBBLESHIELD",
"MT_FLAMESHIELD",
"MT_FLAMESHIELDUNDERLAY",
"MT_FLAMESHIELDPAPER",
"MT_BUBBLESHIELDTRAP",

View file

@ -2921,16 +2921,25 @@ state_t states[NUMSTATES] =
{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_FLMD, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_FLAMESHIELDDASH2}, // S_FLAMESHIELDDASH1
{SPR_FLMD, FF_FULLBRIGHT, 2, {A_FlameShieldPaper}, 0, 2, S_FLAMESHIELDDASH3}, // S_FLAMESHIELDDASH2
{SPR_FLMD, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_FLAMESHIELDDASH4}, // S_FLAMESHIELDDASH3
{SPR_FLMD, FF_FULLBRIGHT, 2, {A_FlameShieldPaper}, 1, 3, S_FLAMESHIELDDASH5}, // S_FLAMESHIELDDASH4
{SPR_FLMD, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_FLAMESHIELDDASH6}, // S_FLAMESHIELDDASH5
{SPR_FLMD, FF_FULLBRIGHT, 2, {A_FlameShieldPaper}, 2, 0, S_FLAMESHIELDDASH7}, // S_FLAMESHIELDDASH6
{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_FLMD, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH2}, // S_FLAMESHIELDDASH1
{SPR_FLMD, FF_FULLBRIGHT|5, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH3}, // S_FLAMESHIELDDASH2
{SPR_FLMD, FF_FULLBRIGHT, 1, {A_FlameShieldPaper}, 0, 2, S_FLAMESHIELDDASH4}, // S_FLAMESHIELDDASH3
{SPR_FLMD, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH5}, // S_FLAMESHIELDDASH4
{SPR_FLMD, FF_FULLBRIGHT|6, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH6}, // S_FLAMESHIELDDASH5
{SPR_FLMD, FF_FULLBRIGHT, 1, {A_FlameShieldPaper}, 1, 3, S_FLAMESHIELDDASH7}, // S_FLAMESHIELDDASH6
{SPR_FLMD, FF_FULLBRIGHT|3, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH8}, // S_FLAMESHIELDDASH7
{SPR_FLMD, FF_FULLBRIGHT|7, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH9}, // S_FLAMESHIELDDASH8
{SPR_FLMD, FF_FULLBRIGHT, 1, {A_FlameShieldPaper}, 2, 0, S_FLAMESHIELDDASH10}, // S_FLAMESHIELDDASH9
{SPR_FLMD, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH11}, // S_FLAMESHIELDDASH10
{SPR_FLMD, FF_FULLBRIGHT|8, 1, {NULL}, 0, 0, S_FLAMESHIELDDASH12}, // S_FLAMESHIELDDASH11
{SPR_FLMD, FF_FULLBRIGHT, 1, {A_FlameShieldPaper}, 3, 1, S_FLAMESHIELDDASH1}, // S_FLAMESHIELDDASH12
{SPR_FLMP, FF_FULLBRIGHT|FF_PAPERSPRITE, 3, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDPAPER
{SPR_FLMD, FF_FULLBRIGHT|9, 2, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDDASH2_UNDERLAY
{SPR_FLMD, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDDASH5_UNDERLAY
{SPR_FLMD, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDDASH8_UNDERLAY
{SPR_FLMD, FF_FULLBRIGHT|12, 2, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDDASH11_UNDERLAY
{SPR_FLMP, FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {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
@ -16277,6 +16286,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_FLAMESHIELDUNDERLAY
-1, // doomednum
S_FLAMESHIELDDASH2_UNDERLAY, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
0, // speed
8<<FRACBITS, // radius
16<<FRACBITS, // height
-1, // display offset
100, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
S_NULL // raisestate
},
{ // MT_FLAMESHIELDPAPER
-1, // doomednum
S_FLAMESHIELDPAPER, // spawnstate
@ -16300,7 +16336,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
S_NULL // raisestate
},

View file

@ -3609,6 +3609,15 @@ typedef enum state
S_FLAMESHIELDDASH6,
S_FLAMESHIELDDASH7,
S_FLAMESHIELDDASH8,
S_FLAMESHIELDDASH9,
S_FLAMESHIELDDASH10,
S_FLAMESHIELDDASH11,
S_FLAMESHIELDDASH12,
S_FLAMESHIELDDASH2_UNDERLAY,
S_FLAMESHIELDDASH5_UNDERLAY,
S_FLAMESHIELDDASH8_UNDERLAY,
S_FLAMESHIELDDASH11_UNDERLAY,
S_FLAMESHIELDPAPER,
S_FLAMESHIELDLINE1,
@ -4807,6 +4816,7 @@ typedef enum mobj_type
MT_THUNDERSHIELD, // Shields
MT_BUBBLESHIELD,
MT_FLAMESHIELD,
MT_FLAMESHIELDUNDERLAY,
MT_FLAMESHIELDPAPER,
MT_BUBBLESHIELDTRAP,

View file

@ -8652,6 +8652,7 @@ void P_MobjThinker(mobj_t *mobj)
{
fixed_t destx, desty;
statenum_t curstate;
statenum_t underlayst = S_NULL;
INT32 flamemax = mobj->target->player->kartstuff[k_flamelength] * flameseg;
if (!mobj->target || !mobj->target->health || !mobj->target->player
@ -8666,9 +8667,18 @@ void P_MobjThinker(mobj_t *mobj)
if (mobj->target->player->kartstuff[k_flamedash])
{
if (!(curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH8))
if (!(curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH12))
P_SetMobjState(mobj, S_FLAMESHIELDDASH1);
if (curstate == S_FLAMESHIELDDASH2)
underlayst = S_FLAMESHIELDDASH2_UNDERLAY;
else if (curstate == S_FLAMESHIELDDASH5)
underlayst = S_FLAMESHIELDDASH5_UNDERLAY;
else if (curstate == S_FLAMESHIELDDASH8)
underlayst = S_FLAMESHIELDDASH8_UNDERLAY;
else if (curstate == S_FLAMESHIELDDASH11)
underlayst = S_FLAMESHIELDDASH11_UNDERLAY;
if (leveltime & 1)
{
UINT8 i;
@ -8696,7 +8706,7 @@ void P_MobjThinker(mobj_t *mobj)
}
else
{
if (curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH8)
if (curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH12)
P_SetMobjState(mobj, S_FLAMESHIELD1);
}
@ -8745,6 +8755,13 @@ void P_MobjThinker(mobj_t *mobj)
mobj->angle = R_PointToAngle2(0, 0, mobj->target->momx, mobj->target->momy);
else
mobj->angle = mobj->target->angle;
if (underlayst != S_NULL)
{
mobj_t *underlay = P_SpawnMobj(mobj->target->x, mobj->target->y, mobj->target->z, MT_FLAMESHIELDUNDERLAY);
underlay->angle = mobj->angle;
P_SetMobjState(underlay, underlayst);
}
break;
}
case MT_ROCKETSNEAKER: