Merge branch 'gainax' into 'master'

Gainax Eyesparkle

See merge request KartKrew/Kart!450
This commit is contained in:
SteelT 2021-11-22 04:49:16 +00:00
commit c44ef9f5f1
8 changed files with 123 additions and 15 deletions

View file

@ -62,7 +62,7 @@ typedef enum
PF_ATTACKDOWN = 1,
PF_ACCELDOWN = 1<<1,
PF_BRAKEDOWN = 1<<2,
PF_WPNDOWN = 1<<3, // reserved - gonna turn this into lookback when i'm done with all the major reengineering
PF_LOOKDOWN = 1<<3,
// Accessibility and cheats
PF_KICKSTARTACCEL = 1<<4, // Is accelerate in kickstart mode?

View file

@ -4593,6 +4593,11 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
"S_RINGSPARKS14",
"S_RINGSPARKS15",
"S_GAINAX_TINY",
"S_GAINAX_HUGE",
"S_GAINAX_MID1",
"S_GAINAX_MID2",
"S_DRAFTDUST1",
"S_DRAFTDUST2",
"S_DRAFTDUST3",
@ -5730,6 +5735,7 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
"MT_KARMAFIREWORK",
"MT_RINGSPARKS",
"MT_GAINAX",
"MT_DRAFTDUST",
"MT_SPBDUST",
"MT_TIREGREASE",
@ -5852,7 +5858,7 @@ const char *const PLAYERFLAG_LIST[] = {
"ATTACKDOWN",
"ACCELDOWN",
"BRAKEDOWN",
"WPNDOWN", // reserved - gonna turn this into lookback when i'm done with all the major reengineering
"LOOKDOWN",
// Accessibility and cheats
"KICKSTARTACCEL", // Is accelerate in kickstart mode?

View file

@ -727,6 +727,7 @@ char sprnames[NUMSPRITES + 1][5] =
"FWRK",
"MXCL",
"RGSP",
"LENS",
"DRAF",
"GRES",
@ -5178,6 +5179,11 @@ state_t states[NUMSTATES] =
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|13, 1, {NULL}, 0, 0, S_RINGSPARKS15}, // S_RINGSPARKS14
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|14, 1, {NULL}, 0, 0, S_NULL}, // S_RINGSPARKS15
{SPR_LENS, FF_FULLBRIGHT|FF_ADD|FF_TRANS10|FF_ANIMATE|11, -1, {NULL}, 3, 1, S_NULL}, // S_GAINAX_TINY
{SPR_LENS, FF_FULLBRIGHT|FF_ADD|FF_TRANS10|FF_ANIMATE, 5, {NULL}, 5, 1, S_GAINAX_MID1}, // S_GAINAX_HUGE
{SPR_LENS, FF_FULLBRIGHT|FF_ADD|FF_TRANS10|FF_ANIMATE|5, 14, {NULL}, 14, 1, S_GAINAX_MID2}, // S_GAINAX_MID1
{SPR_LENS, FF_FULLBRIGHT|FF_ADD|FF_TRANS10|FF_ANIMATE|19, -1, {NULL}, 1, 1, S_NULL}, // S_GAINAX_MID2
{SPR_DRAF, 0, 2, {NULL}, 0, 0, S_DRAFTDUST2}, // S_DRAFTDUST1
{SPR_DRAF, 1, 1, {NULL}, 0, 0, S_DRAFTDUST3}, // S_DRAFTDUST2
{SPR_DRAF, 2, 1, {NULL}, 0, 0, S_DRAFTDUST4}, // S_DRAFTDUST3
@ -28683,6 +28689,32 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
S_NULL // raisestate
},
{ // MT_GAINAX
-1, // doomednum
S_INVISIBLE, // 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_NOGRAVITY|MF_DONTENCOREMAP, // flags
S_NULL // raisestate
},
{ // MT_DRAFTDUST
-1, // doomednum

View file

@ -1270,6 +1270,7 @@ typedef enum sprite
SPR_FWRK,
SPR_MXCL,
SPR_RGSP,
SPR_LENS,
SPR_DRAF,
SPR_GRES,
@ -5588,6 +5589,11 @@ typedef enum state
S_RINGSPARKS14,
S_RINGSPARKS15,
S_GAINAX_TINY,
S_GAINAX_HUGE,
S_GAINAX_MID1,
S_GAINAX_MID2,
S_DRAFTDUST1,
S_DRAFTDUST2,
S_DRAFTDUST3,
@ -6742,6 +6748,7 @@ typedef enum mobj_type
MT_KARMAFIREWORK,
MT_RINGSPARKS,
MT_GAINAX,
MT_DRAFTDUST,
MT_SPBDUST,
MT_TIREGREASE,

View file

@ -2206,7 +2206,11 @@ void K_KartMoveAnimation(player_t *player)
turndir = 1;
}
if (lookback == true && drift == 0)
if (!lookback)
{
player->pflags &= ~PF_LOOKDOWN;
}
else if (drift == 0)
{
// Prioritize looking back frames over turning
turndir = 0;
@ -2218,6 +2222,7 @@ void K_KartMoveAnimation(player_t *player)
destGlanceDir = -(2*intsign(player->aizdriftturn));
player->glanceDir = destGlanceDir;
drift = turndir = 0;
player->pflags &= ~PF_LOOKDOWN;
}
else if (player->aizdriftturn)
{
@ -2232,6 +2237,7 @@ void K_KartMoveAnimation(player_t *player)
if (lookback == true)
{
statenum_t gainaxstate = S_GAINAX_TINY;
if (destGlanceDir == 0)
{
if (player->glanceDir != 0)
@ -2256,6 +2262,20 @@ void K_KartMoveAnimation(player_t *player)
{
// Looking back AND glancing? Amplify the look!
destGlanceDir *= 2;
if (player->itemamount && player->itemtype)
gainaxstate = S_GAINAX_HUGE;
else
gainaxstate = S_GAINAX_MID1;
}
if (destGlanceDir && !(player->pflags & PF_LOOKDOWN))
{
mobj_t *gainax = P_SpawnMobjFromMobj(player->mo, 0, 0, 0, MT_GAINAX);
gainax->movedir = (destGlanceDir < 0) ? (ANGLE_270-ANG10) : (ANGLE_90+ANG10);
P_SetTarget(&gainax->target, player->mo);
P_SetMobjState(gainax, gainaxstate);
gainax->flags2 |= MF2_AMBUSH;
player->pflags |= PF_LOOKDOWN;
}
}
else if (K_GetForwardMove(player) < 0 && destGlanceDir == 0)
@ -2511,6 +2531,9 @@ void K_KartMoveAnimation(player_t *player)
player->glanceDir++;
}
if (!player->glanceDir)
player->pflags &= ~PF_LOOKDOWN;
// Update lastspeed value -- we use to display slow driving frames instead of fast driving when slowing down.
player->lastspeed = player->speed;
}

View file

@ -1996,6 +1996,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
player->sneakertimer = player->numsneakers = 0;
player->driftboost = player->strongdriftboost = 0;
player->ringboost = 0;
player->glanceDir = 0;
player->pflags &= ~PF_LOOKDOWN;
switch (type)
{

View file

@ -6783,7 +6783,51 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
P_TeleportMove(mobj, mobj->target->x + FINECOSINE(mobj->angle >> ANGLETOFINESHIFT),
mobj->target->y + FINESINE(mobj->angle >> ANGLETOFINESHIFT),
mobj->z + mobj->target->height * P_MobjFlip(mobj));
mobj->z + (mobj->target->height * P_MobjFlip(mobj)));
break;
case MT_GAINAX:
if (!mobj->target || P_MobjWasRemoved(mobj->target) // sanity
|| !mobj->target->player // ditto
|| !mobj->target->player->glanceDir // still glancing?
|| mobj->target->player->aizdriftturn // only other circumstance where can glance
|| ((K_GetKartButtons(mobj->target->player) & BT_LOOKBACK) != BT_LOOKBACK)) // it's a lookback indicator...
{
P_RemoveMobj(mobj);
return false;
}
mobj->angle = mobj->target->player->drawangle;
mobj->z = mobj->target->z;
K_MatchGenericExtraFlags(mobj, mobj->target);
mobj->renderflags = (mobj->renderflags & ~RF_DONTDRAW)|K_GetPlayerDontDrawFlag(mobj->target->player);
P_TeleportMove(mobj, mobj->target->x + FixedMul(34 * mapobjectscale, FINECOSINE((mobj->angle + mobj->movedir) >> ANGLETOFINESHIFT)),
mobj->target->y + FixedMul(34 * mapobjectscale, FINESINE((mobj->angle + mobj->movedir) >> ANGLETOFINESHIFT)),
mobj->z + (32 * mapobjectscale * P_MobjFlip(mobj)));
{
statenum_t gainaxstate = mobj->state-states;
if (gainaxstate == S_GAINAX_TINY)
{
if (abs(mobj->target->player->glanceDir) > 1)
{
if (mobj->target->player->itemamount && mobj->target->player->itemtype)
gainaxstate = S_GAINAX_HUGE;
else
gainaxstate = S_GAINAX_MID1;
P_SetMobjState(mobj, gainaxstate);
}
}
else if (abs(mobj->target->player->glanceDir) <= 1)
{
if (mobj->flags2 & MF2_AMBUSH)
mobj->flags2 &= ~MF2_AMBUSH;
else
P_SetMobjState(mobj, S_GAINAX_TINY);
}
}
break;
case MT_FLAMESHIELDPAPER:
if (!mobj->target || P_MobjWasRemoved(mobj->target))

View file

@ -467,6 +467,7 @@ void P_ResetPlayer(player_t *player)
//player->drift = player->driftcharge = 0;
player->trickpanel = 0;
player->glanceDir = 0;
}
//
@ -2003,6 +2004,8 @@ void P_MovePlayer(player_t *player)
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
player->drawangle -= ANGLE_22h;
player->mo->rollangle = 0;
player->glanceDir = 0;
player->pflags &= ~PF_LOOKDOWN;
}
else if ((player->pflags & PF_FAULT) || (player->spinouttimer > 0))
{
@ -2021,17 +2024,6 @@ void P_MovePlayer(player_t *player)
player->mo->rollangle = 0;
}
/*else if (player->pflags & PF_FAULT) -- v1 fault
{
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
if (((player->nocontrol + 5) % 20) < 10)
player->drawangle += ANGLE_11hh;
else
player->drawangle -= ANGLE_11hh;
player->mo->rollangle = 0;
}*/
else
{
K_KartMoveAnimation(player);
@ -4406,6 +4398,8 @@ void P_PlayerThink(player_t *player)
else
player->pflags &= ~PF_BRAKEDOWN;
// PF_LOOKDOWN handled in K_KartMoveAnimation
// Counters, time dependent power ups.
// Time Bonus & Ring Bonus count settings