diff --git a/src/deh_tables.c b/src/deh_tables.c index 9e12993b3..cb3203ad8 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -339,7 +339,6 @@ actionpointer_t actionpointers[] = {{A_MayonakaArrow}, "A_MAYONAKAARROW"}, {{A_MementosTPParticles}, "A_MEMENTOSTPPARTICLES"}, {{A_ReaperThinker}, "A_REAPERTHINKER"}, - {{A_FlameShieldPaper}, "A_FLAMESHIELDPAPER"}, {{A_InvincSparkleRotate}, "A_INVINCSPARKLEROTATE"}, {{NULL}, "NONE"}, @@ -3717,30 +3716,7 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi "S_FLAMESHIELD16", "S_FLAMESHIELD17", "S_FLAMESHIELD18", - - "S_FLAMESHIELDDASH1", - "S_FLAMESHIELDDASH2", - "S_FLAMESHIELDDASH3", - "S_FLAMESHIELDDASH4", - "S_FLAMESHIELDDASH5", - "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", - "S_FLAMESHIELDLINE2", - "S_FLAMESHIELDLINE3", - "S_FLAMESHIELDFLASH", + "S_FLAMESHIELDDASH", // The legend "S_SINK", @@ -5257,8 +5233,6 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t "MT_LIGHTNINGSHIELD", // Shields "MT_BUBBLESHIELD", "MT_FLAMESHIELD", - "MT_FLAMESHIELDUNDERLAY", - "MT_FLAMESHIELDPAPER", "MT_BUBBLESHIELDTRAP", "MT_SINK", // Kitchen Sink Stuff diff --git a/src/info.c b/src/info.c index bd282a58e..403d4000b 100644 --- a/src/info.c +++ b/src/info.c @@ -4261,30 +4261,7 @@ 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_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_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 - {SPR_FLMF, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL}, // S_FLAMESHIELDFLASH + {SPR_FLMS, FF_FULLBRIGHT|18, -1, {NULL}, 0, 0, S_FLAMESHIELDDASH}, // S_FLAMESHIELDDASH {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 @@ -23331,60 +23308,6 @@ 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<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, newy, actor->z, MT_FLAMESHIELDPAPER); - - P_SetTarget(&paper->target, actor); - 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; - } - - paper->extravalue1 = i; - } -} - void A_InvincSparkleRotate(mobj_t *actor) { fixed_t sx, sy, sz; // Teleport dests. diff --git a/src/p_mobj.c b/src/p_mobj.c index d404028d9..b7489de3f 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -7399,30 +7399,6 @@ static boolean P_MobjRegularThink(mobj_t *mobj) } } - break; - case MT_FLAMESHIELDPAPER: - if (!mobj->target || P_MobjWasRemoved(mobj->target)) - { - P_RemoveMobj(mobj); - return false; - } - - 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_MoveOrigin(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_LIGHTNINGSHIELD: { @@ -7591,121 +7567,53 @@ static boolean P_MobjRegularThink(mobj_t *mobj) break; } case MT_FLAMESHIELD: - { - fixed_t destx, desty; - statenum_t curstate; - statenum_t underlayst = S_NULL; - INT32 flamemax = 0; - - if (!mobj->target || !mobj->target->health || !mobj->target->player - || mobj->target->player->curshield != KSHIELD_FLAME) { - P_RemoveMobj(mobj); - return false; - } - - flamemax = mobj->target->player->flamelength * flameseg; - - P_SetScale(mobj, (mobj->destscale = (5*mobj->target->scale)>>2)); - - curstate = ((mobj->tics == 1) ? (mobj->state->nextstate) : ((statenum_t)(mobj->state-states))); - - if (mobj->target->player->flamedash) - { - 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) + fixed_t destx, desty; + statenum_t curstate; + if (!mobj->target || !mobj->target->health || !mobj->target->player + || mobj->target->player->curshield != KSHIELD_FLAME) { - UINT8 i; - UINT8 nl = 2; - - if (mobj->target->player->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*P_GetMobjZMovement(mobj->target)/4; - - K_MatchGenericExtraFlags(fast, mobj); - P_SetMobjState(fast, S_FLAMESHIELDLINE1 + i); - } + P_RemoveMobj(mobj); + return false; } - } - else - { - if (curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH12) - P_SetMobjState(mobj, S_FLAMESHIELD1); - } - - mobj->extravalue1 = mobj->target->player->flamedash; - - if (mobj->target->player->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) + P_SetScale(mobj, (mobj->destscale = (5*mobj->target->scale)>>2)); + curstate = ((mobj->tics == 1) ? (mobj->state->nextstate) : ((statenum_t)(mobj->state-states))); + if (mobj->target->player->flamedash) { - flash->frame |= 2 + ((leveltime / 2) % 4); + if (curstate != S_FLAMESHIELDDASH) + P_SetMobjState(mobj, S_FLAMESHIELDDASH); + mobj->renderflags ^= RF_DONTDRAW; } else { - flash->frame |= ((leveltime / 2) % 2); + if (curstate == S_FLAMESHIELDDASH) + P_SetMobjState(mobj, S_FLAMESHIELD1); + mobj->renderflags &= ~RF_DONTDRAW; + } + if (!splitscreen /*&& rendermode != render_soft*/) + { + angle_t viewingangle; + if (players[displayplayers[0]].awayviewtics) + viewingangle = R_PointToAngle2(mobj->target->x, mobj->target->y, players[displayplayers[0]].awayviewmobj->x, players[displayplayers[0]].awayviewmobj->y); + else if (!camera[0].chase && players[displayplayers[0]].mo) + viewingangle = R_PointToAngle2(mobj->target->x, mobj->target->y, players[displayplayers[0]].mo->x, players[displayplayers[0]].mo->y); + 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)) + viewingangle += ANGLE_180; + + destx = mobj->target->x + P_ReturnThrustX(mobj->target, viewingangle, mobj->scale>>4); + desty = mobj->target->y + P_ReturnThrustY(mobj->target, viewingangle, mobj->scale>>4); } - } - - if (!splitscreen /*&& rendermode != render_soft*/) - { - angle_t viewingangle; - - if (players[displayplayers[0]].awayviewtics) - viewingangle = R_PointToAngle2(mobj->target->x, mobj->target->y, players[displayplayers[0]].awayviewmobj->x, players[displayplayers[0]].awayviewmobj->y); - else if (!camera[0].chase && players[displayplayers[0]].mo) - viewingangle = R_PointToAngle2(mobj->target->x, mobj->target->y, players[displayplayers[0]].mo->x, players[displayplayers[0]].mo->y); else - viewingangle = R_PointToAngle2(mobj->target->x, mobj->target->y, camera[0].x, camera[0].y); - - 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); - desty = mobj->target->y + P_ReturnThrustY(mobj->target, viewingangle, mobj->scale>>4); + { + destx = mobj->target->x; + desty = mobj->target->y; + } + P_MoveOrigin(mobj, destx, desty, mobj->target->z); + mobj->angle = mobj->target->angle; + break; } - else - { - destx = mobj->target->x; - desty = mobj->target->y; - } - - P_MoveOrigin(mobj, destx, desty, mobj->target->z); - mobj->angle = K_MomentumAngle(mobj->target); - - 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: if (!mobj->target || !mobj->target->health) {