Removed a hack that caused the groundpound spinfire to hurt you if you lost your shield.

This commit is contained in:
toasterbabe 2016-08-21 13:55:16 +01:00
parent 436dfbb24f
commit f34a28e80e
6 changed files with 26 additions and 66 deletions

View File

@ -4783,7 +4783,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_SPIKEBALL8",
// Elemental Shield's Spawn
"S_SPINFIRE0",
"S_SPINFIRE1",
"S_SPINFIRE2",
"S_SPINFIRE3",
@ -4791,15 +4790,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_SPINFIRE5",
"S_SPINFIRE6",
// Elemental Shield's FLYING Spawn
"S_AIRSPINFIRE_FLY1",
"S_AIRSPINFIRE_FLY2",
"S_AIRSPINFIRE_FLY3",
"S_AIRSPINFIRE_FLY4",
"S_AIRSPINFIRE_FLY5",
"S_AIRSPINFIRE_FLY6",
"S_AIRSPINFIRE_DIE",
// Spikes
"S_SPIKE1",
"S_SPIKE2",

View File

@ -158,7 +158,7 @@ extern FILE *logstream;
// Does this version require an added patch file?
// Comment or uncomment this as necessary.
//#define USE_PATCH_DTA
#define USE_PATCH_DTA
// Modification options
// If you want to take advantage of the Master Server's ability to force clients to update

View File

@ -1124,7 +1124,6 @@ state_t states[NUMSTATES] =
{SPR_SPIK, 7, 1, {A_RotateSpikeBall}, 0, 0, S_SPIKEBALL1}, // S_SPIKEBALL8
// Elemental Shield's Spawn
{SPR_SFLM, FF_FULLBRIGHT|5, 2, {A_SetFuse}, 6*TICRATE, 0, S_SPINFIRE1}, // S_SPINFIRE0
{SPR_SFLM, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_SPINFIRE2}, // S_SPINFIRE1
{SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_SPINFIRE3}, // S_SPINFIRE2
{SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_SPINFIRE4}, // S_SPINFIRE3
@ -1132,15 +1131,6 @@ state_t states[NUMSTATES] =
{SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_SPINFIRE6}, // S_SPINFIRE5
{SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_SPINFIRE1}, // S_SPINFIRE6
// Elemental Shield's FLYING Spawn
{SPR_SFLM, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_AIRSPINFIRE_FLY2}, //S_AIRSPINFIRE_FLY1,
{SPR_SFLM, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_AIRSPINFIRE_FLY3}, //S_AIRSPINFIRE_FLY2,
{SPR_SFLM, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_AIRSPINFIRE_FLY4}, //S_AIRSPINFIRE_FLY3,
{SPR_SFLM, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_AIRSPINFIRE_FLY5}, //S_AIRSPINFIRE_FLY4,
{SPR_SFLM, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_AIRSPINFIRE_FLY6}, //S_AIRSPINFIRE_FLY5,
{SPR_SFLM, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_AIRSPINFIRE_FLY1}, //S_AIRSPINFIRE_FLY6,
{SPR_SFLM, FF_FULLBRIGHT, 0, {A_SpawnObjectRelative}, 0, MT_SPINFIRE, S_NULL}, //S_AIRSPINFIRE_DIE,
// Floor Spike
{SPR_USPK, 0,-1, {A_SpikeRetract}, 1, 0, S_SPIKE2}, // S_SPIKE1 -- Fully extended
{SPR_USPK, 5, 2, {A_Pain}, 0, 0, S_SPIKE3}, // S_SPIKE2
@ -5404,7 +5394,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_SPINFIRE
-1, // doomednum
S_SPINFIRE0, // spawnstate
S_SPINFIRE1, // spawnstate
1, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
@ -5429,33 +5419,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_AIRSPINFIRE
-1, // doomednum
S_AIRSPINFIRE_FLY1, // 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_AIRSPINFIRE_DIE, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
10*FRACUNIT, // speed
8*FRACUNIT, // radius
14*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_MISSILE|MF_FIRE, // flags
S_NULL // raisestate
},
{ // MT_SPIKE
523, // doomednum
S_SPIKE1, // spawnstate

View File

@ -1634,7 +1634,6 @@ typedef enum state
S_SPIKEBALL8,
// Elemental Shield's Spawn
S_SPINFIRE0,
S_SPINFIRE1,
S_SPINFIRE2,
S_SPINFIRE3,
@ -1642,15 +1641,6 @@ typedef enum state
S_SPINFIRE5,
S_SPINFIRE6,
// Elemental Shield's FLYING Spawn
S_AIRSPINFIRE_FLY1,
S_AIRSPINFIRE_FLY2,
S_AIRSPINFIRE_FLY3,
S_AIRSPINFIRE_FLY4,
S_AIRSPINFIRE_FLY5,
S_AIRSPINFIRE_FLY6,
S_AIRSPINFIRE_DIE,
// Spikes
S_SPIKE1,
S_SPIKE2,
@ -3143,7 +3133,6 @@ typedef enum mobj_type
MT_SPIKEBALL, // Spike Ball
MT_SPECIALSPIKEBALL,
MT_SPINFIRE,
MT_AIRSPINFIRE, // Elemental flame flying through the air
MT_SPIKE,
MT_STARPOST,
MT_BIGMINE,

View File

@ -2377,6 +2377,19 @@ static boolean P_ZMovement(mobj_t *mo)
mo->flags |= MF_NOGRAVITY;
}
break;
case MT_SPINFIRE:
if (P_CheckDeathPitCollide(mo))
{
P_RemoveMobj(mo);
return false;
}
if (mo->z <= mo->floorz && mo->momz)
{
mo->flags |= MF_NOGRAVITY;
mo->momx = mo->momy = mo->momz = 0;
mo->z = mo->floorz;
}
break;
case MT_GOOP:
if (P_CheckDeathPitCollide(mo))
{
@ -7338,10 +7351,13 @@ void P_MobjThinker(mobj_t *mobj)
#endif
break;
case MT_SPINFIRE:
if (mobj->eflags & MFE_VERTICALFLIP)
mobj->z = mobj->ceilingz - mobj->height;
else
mobj->z = mobj->floorz;
if (mobj->flags & MF_NOGRAVITY)
{
if (mobj->eflags & MFE_VERTICALFLIP)
mobj->z = mobj->ceilingz - mobj->height;
else
mobj->z = mobj->floorz;
}
// THERE IS NO BREAK HERE ON PURPOSE
default:
// check mobj against possible water content, before movement code

View File

@ -6224,9 +6224,11 @@ void P_ElementalFire(player_t *player, boolean cropcircle)
#define numangles 8
for (i = 0; i < numangles; i++)
{
flame = P_SpawnMobj(player->mo->x, player->mo->y, ground, MT_AIRSPINFIRE);
flame = P_SpawnMobj(player->mo->x, player->mo->y, ground, MT_SPINFIRE);
flame->flags &= ~MF_NOGRAVITY;
P_SetTarget(&flame->target, player->mo);
flame->angle = travelangle + i*(ANGLE_MAX/numangles);
flame->fuse = TICRATE*7; // takes about an extra second to hit the ground
flame->destscale = player->mo->scale;
P_SetScale(flame, player->mo->scale);
flame->eflags = (flame->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP);
@ -6255,7 +6257,7 @@ void P_ElementalFire(player_t *player, boolean cropcircle)
flame = P_SpawnMobj(newx, newy, ground, MT_SPINFIRE);
P_SetTarget(&flame->target, player->mo);
flame->angle = travelangle;
// flame->fuse = TICRATE*6; // now done in spawnstate
flame->fuse = TICRATE*6;
flame->destscale = player->mo->scale;
P_SetScale(flame, player->mo->scale);
flame->eflags = (flame->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP);