Slow down animation speed, fix meter bugs

This commit is contained in:
Sally Cochenour 2020-03-26 03:13:10 -04:00
parent bf221c7afa
commit 7ec398e579
6 changed files with 79 additions and 25 deletions

View file

@ -7872,6 +7872,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_THUNDERSHIELD", // Shields
"MT_BUBBLESHIELD",
"MT_FLAMESHIELD",
"MT_FLAMESHIELDPAPER",
"MT_BUBBLESHIELDTRAP",
"MT_SINK", // Kitchen Sink Stuff

View file

@ -2919,16 +2919,16 @@ 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, 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_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_FLMP, FF_FULLBRIGHT|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDPAPER
{SPR_FLMP, FF_FULLBRIGHT|FF_PAPERSPRITE, 3, {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
@ -16271,6 +16271,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_FLAMESHIELDPAPER
-1, // doomednum
S_FLAMESHIELDPAPER, // 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_BUBBLESHIELDTRAP
-1, // doomednum
S_BUBBLESHIELDTRAP1, // spawnstate

View file

@ -4801,6 +4801,7 @@ typedef enum mobj_type
MT_THUNDERSHIELD, // Shields
MT_BUBBLESHIELD,
MT_FLAMESHIELD,
MT_FLAMESHIELDPAPER,
MT_BUBBLESHIELDTRAP,
MT_SINK, // Kitchen Sink Stuff

View file

@ -7586,7 +7586,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
flamemax = player->kartstuff[k_flamelength] * (TICRATE/4);
if (flamemax > 0)
flamemax += (TICRATE/2);
flamemax += 3*(TICRATE/4);
if ((cmd->buttons & BT_ATTACK) && player->kartstuff[k_holdready])
{
@ -7636,7 +7636,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
flamemax = player->kartstuff[k_flamelength] * (TICRATE/4);
if (flamemax > 0)
flamemax += (TICRATE/2);
flamemax += 3*(TICRATE/4);
}
if (player->kartstuff[k_flamemeter] > flamemax)
@ -9067,14 +9067,17 @@ static void K_drawKartItem(void)
if (stplyr->kartstuff[k_eggmanexplode] > 1 /*&& stplyr->kartstuff[k_eggmanexplode] <= 3*TICRATE*/)
V_DrawScaledPatch(fx+17, fy+13-offset, V_HUDTRANS|fflags, kp_eggnum[min(3, G_TicsToSeconds(stplyr->kartstuff[k_eggmanexplode]))]);
if (stplyr->kartstuff[k_itemtype] == KITEM_FLAMESHIELD)
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 flen = 1;
INT32 bf = 16 - (flamemax / (TICRATE/4));
INT32 ff = numframes - ((stplyr->kartstuff[k_flamemeter] * numframes) / absolutemax);
INT32 flamemeter = min(stplyr->kartstuff[k_flamemeter], flamemax);
INT32 bf = 16 - stplyr->kartstuff[k_flamelength];
INT32 ff = numframes - ((flamemeter * numframes) / absolutemax);
INT32 fmin = (8 * (bf-1));
INT32 xo = 6, yo = 4;
INT32 flip = 0;
@ -9089,18 +9092,13 @@ static void K_drawKartItem(void)
}
}
if (stplyr->kartstuff[k_flamelength] > 0)
{
flen = (numframes * 16) / stplyr->kartstuff[k_flamelength];
}
if (ff < fmin)
ff = fmin;
if (ff < 0) {ff = 0;}
if (ff > flen-1) {ff = flen-1;}
if (flamemax > 0)
if (bf >= 0 && bf < 16)
V_DrawScaledPatch(fx-xo, fy-yo, V_HUDTRANS|fflags|flip, kp_flameshieldmeter_bg[bf][offset]);
if (stplyr->kartstuff[k_flamemeter] > 0)
if (ff >= 0 && ff < numframes && stplyr->kartstuff[k_flamemeter] > 0)
{
if (stplyr->kartstuff[k_flamemeter] > (flamemax - (TICRATE/4)) && (leveltime & 1))
{

View file

@ -9350,8 +9350,9 @@ void A_FlameShieldPaper(mobj_t *actor)
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);
mobj_t *paper = P_SpawnMobj(newx, newy, actor->z, MT_FLAMESHIELDPAPER);
P_SetTarget(&paper->target, actor);
P_SetScale(paper, actor->scale);
paper->destscale = actor->destscale;
@ -9369,6 +9370,8 @@ void A_FlameShieldPaper(mobj_t *actor)
{
paper->frame |= framea;
}
paper->extravalue1 = i;
}
}

View file

@ -8370,6 +8370,30 @@ void P_MobjThinker(mobj_t *mobj)
mobj->target->y + FINESINE(mobj->angle >> ANGLETOFINESHIFT),
mobj->z + mobj->target->height * P_MobjFlip(mobj));
break;
case MT_FLAMESHIELDPAPER:
if (!mobj->target || P_MobjWasRemoved(mobj->target))
{
P_RemoveMobj(mobj);
return;
}
mobj->z = mobj->target->z;
K_MatchGenericExtraFlags(mobj, mobj->target);
{
INT32 perpendicular = ((mobj->extravalue1 & 1) ? -ANGLE_90 : ANGLE_90);
fixed_t newx = mobj->target->x + P_ReturnThrustX(NULL, mobj->target->angle + perpendicular, 8*mobj->target->scale);
fixed_t newy = mobj->target->y + P_ReturnThrustY(NULL, mobj->target->angle + perpendicular, 8*mobj->target->scale);
P_TeleportMove(mobj, newx, newy, mobj->target->z);
if (mobj->extravalue1 & 1)
mobj->angle = mobj->target->angle - ANGLE_45;
else
mobj->angle = mobj->target->angle + ANGLE_45;
}
break;
case MT_TIREGREASE:
if (!mobj->target || P_MobjWasRemoved(mobj->target) || !mobj->target->player
|| !mobj->target->player->kartstuff[k_tiregrease])