Modify GFX code to use modified SRB2 shield graphics instead
This commit is contained in:
parent
d08280f38d
commit
58e7a3e47e
5 changed files with 40 additions and 307 deletions
|
|
@ -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
|
||||
|
|
|
|||
79
src/info.c
79
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<<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
|
||||
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_BUBBLESHIELDTRAP
|
||||
-1, // doomednum
|
||||
S_BUBBLESHIELDTRAP1, // spawnstate
|
||||
|
|
|
|||
29
src/info.h
29
src/info.h
|
|
@ -291,7 +291,6 @@ enum actionnum
|
|||
A_MAYONAKAARROW,
|
||||
A_MEMENTOSTPPARTICLES,
|
||||
A_REAPERTHINKER,
|
||||
A_FLAMESHIELDPAPER,
|
||||
A_INVINCSPARKLEROTATE,
|
||||
NUMACTIONS
|
||||
};
|
||||
|
|
@ -567,7 +566,6 @@ void A_RoamingShadowThinker();
|
|||
void A_MayonakaArrow();
|
||||
void A_ReaperThinker();
|
||||
void A_MementosTPParticles();
|
||||
void A_FlameShieldPaper();
|
||||
void A_InvincSparkleRotate();
|
||||
void A_DeathSpin();
|
||||
|
||||
|
|
@ -4694,30 +4692,7 @@ typedef enum state
|
|||
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,
|
||||
|
|
@ -6274,8 +6249,6 @@ typedef enum mobj_type
|
|||
MT_LIGHTNINGSHIELD, // Shields
|
||||
MT_BUBBLESHIELD,
|
||||
MT_FLAMESHIELD,
|
||||
MT_FLAMESHIELDUNDERLAY,
|
||||
MT_FLAMESHIELDPAPER,
|
||||
MT_BUBBLESHIELDTRAP,
|
||||
|
||||
MT_SINK, // Kitchen Sink Stuff
|
||||
|
|
|
|||
|
|
@ -327,7 +327,6 @@ void A_RoamingShadowThinker(mobj_t *actor);
|
|||
void A_MayonakaArrow(mobj_t *actor);
|
||||
void A_ReaperThinker(mobj_t *actor);
|
||||
void A_MementosTPParticles(mobj_t *actor);
|
||||
void A_FlameShieldPaper(mobj_t *actor);
|
||||
void A_InvincSparkleRotate(mobj_t *actor);
|
||||
void A_DeathSpin(mobj_t *actor);
|
||||
|
||||
|
|
@ -14155,50 +14154,6 @@ void A_ReaperThinker(mobj_t *actor)
|
|||
}
|
||||
}
|
||||
|
||||
void A_FlameShieldPaper(mobj_t *actor)
|
||||
{
|
||||
INT32 framea = 0;
|
||||
INT32 frameb = 0;
|
||||
INT32 locvar1 = var1;
|
||||
INT32 locvar2 = var2;
|
||||
UINT8 i;
|
||||
|
||||
if (LUA_CallAction(A_FLAMESHIELDPAPER, actor))
|
||||
return;
|
||||
|
||||
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, 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.
|
||||
|
|
|
|||
166
src/p_mobj.c
166
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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue