Ion Fury compatibility improvements

git-svn-id: https://svn.eduke32.com/eduke32@8559 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/duke3d/src/game.cpp
This commit is contained in:
terminx 2020-01-29 11:37:16 +00:00 committed by Christoph Oelckers
parent eee0509856
commit 8543f476d7
2 changed files with 124 additions and 78 deletions

View file

@ -459,7 +459,7 @@ int A_GetClipdist(int spriteNum, int clipDist)
if (pSprite->xrepeat > 60)
clipDist = 1024;
#ifndef EDUKE32_STANDALONE
else if (pSprite->picnum == LIZMAN)
else if (!FURY && pSprite->picnum == LIZMAN)
clipDist = 292;
#endif
else if (A_CheckSpriteFlags(spriteNum, SFLAG_BADGUY))
@ -489,7 +489,7 @@ int32_t A_MoveSpriteClipdist(int32_t spriteNum, vec3_t const * const change, uin
Bassert(pSprite->sectnum < MAXSECTORS);
#ifndef EDUKE32_STANDALONE
if (pSprite->statnum == STAT_MISC || (isEnemy && pSprite->xrepeat < 4))
if (!FURY && (pSprite->statnum == STAT_MISC || (isEnemy && pSprite->xrepeat < 4)))
{
pSprite->x += change->x;
pSprite->y += change->y;
@ -538,9 +538,9 @@ int32_t A_MoveSpriteClipdist(int32_t spriteNum, vec3_t const * const change, uin
if (newSectnum < 0 || ((actor[spriteNum].stayput >= 0 && actor[spriteNum].stayput != newSectnum)
|| ((g_tile[pSprite->picnum].flags & SFLAG_NOWATERSECTOR) && sector[newSectnum].lotag == ST_1_ABOVE_WATER)
#ifndef EDUKE32_STANDALONE
|| (pSprite->picnum == BOSS2 && pSprite->pal == 0 && sector[newSectnum].lotag != ST_3)
|| ((pSprite->picnum == BOSS1 || pSprite->picnum == BOSS2) && sector[newSectnum].lotag == ST_1_ABOVE_WATER)
|| (sector[oldSectnum].lotag != ST_1_ABOVE_WATER && sector[newSectnum].lotag == ST_1_ABOVE_WATER
|| (!FURY && pSprite->picnum == BOSS2 && pSprite->pal == 0 && sector[newSectnum].lotag != ST_3)
|| (!FURY && (pSprite->picnum == BOSS1 || pSprite->picnum == BOSS2) && sector[newSectnum].lotag == ST_1_ABOVE_WATER)
|| (!FURY && sector[oldSectnum].lotag != ST_1_ABOVE_WATER && sector[newSectnum].lotag == ST_1_ABOVE_WATER
&& (pSprite->picnum == LIZMAN || (pSprite->picnum == LIZTROOP && pSprite->zvel == 0)))
#endif
))
@ -1048,15 +1048,19 @@ ACTOR_STATIC void G_MoveZombieActors(void)
case NUKEBARRELDENTED__STATIC:
case NUKEBARRELLEAKED__STATIC:
case TRIPBOMB__STATIC:
pSprite->shade = ((sector[pSprite->sectnum].ceilingstat & 1) && A_CheckSpriteFlags(spriteNum, SFLAG_NOSHADE) == 0)
? sector[pSprite->sectnum].ceilingshade
: sector[pSprite->sectnum].floorshade;
actor[spriteNum].timetosleep = 0;
changespritestat(spriteNum, STAT_STANDABLE);
if (!FURY)
{
pSprite->shade = ((sector[pSprite->sectnum].ceilingstat & 1) && A_CheckSpriteFlags(spriteNum, SFLAG_NOSHADE) == 0)
? sector[pSprite->sectnum].ceilingshade
: sector[pSprite->sectnum].floorshade;
actor[spriteNum].timetosleep = 0;
changespritestat(spriteNum, STAT_STANDABLE);
}
break;
case RECON__STATIC:
CS(spriteNum) |= 257;
if (!FURY)
CS(spriteNum) |= 257;
fallthrough__;
#endif
default:
@ -1695,7 +1699,7 @@ ACTOR_STATIC void G_MoveStandables(void)
actor[spriteNum].bpos = pSprite->pos;
#ifndef EDUKE32_STANDALONE
if (PN(spriteNum) >= CRANE && PN(spriteNum) <= CRANE+3)
if (!FURY && PN(spriteNum) >= CRANE && PN(spriteNum) <= CRANE+3)
{
int32_t nextj;
@ -1882,7 +1886,7 @@ ACTOR_STATIC void G_MoveStandables(void)
goto next_sprite;
}
else if (PN(spriteNum) >= WATERFOUNTAIN && PN(spriteNum) <= WATERFOUNTAIN+3)
else if (!FURY && PN(spriteNum) >= WATERFOUNTAIN && PN(spriteNum) <= WATERFOUNTAIN+3)
{
if (pData[0] > 0)
{
@ -1911,7 +1915,7 @@ ACTOR_STATIC void G_MoveStandables(void)
}
goto next_sprite;
}
else if (AFLAMABLE(pSprite->picnum))
else if (!FURY && AFLAMABLE(pSprite->picnum))
{
if (T1(spriteNum) == 1)
{
@ -1948,7 +1952,7 @@ ACTOR_STATIC void G_MoveStandables(void)
}
goto next_sprite;
}
else if (pSprite->picnum == TRIPBOMB)
else if (!FURY && pSprite->picnum == TRIPBOMB)
{
// TIMER_CONTROL
if (actor[spriteNum].t_data[6] == 1)
@ -2122,7 +2126,7 @@ ACTOR_STATIC void G_MoveStandables(void)
goto next_sprite;
}
else if (pSprite->picnum >= CRACK1 && pSprite->picnum <= CRACK4)
else if (!FURY && pSprite->picnum >= CRACK1 && pSprite->picnum <= CRACK4)
{
if (pSprite->hitag)
{
@ -2162,7 +2166,7 @@ crack_default:
}
goto next_sprite;
}
else if (pSprite->picnum == FIREEXT)
else if (!FURY && pSprite->picnum == FIREEXT)
{
if (A_IncurDamage(spriteNum) < 0)
goto next_sprite;
@ -2295,7 +2299,7 @@ DETONATE:
pSprite->z -= ZOFFSET5;
#ifndef EDUKE32_STANDALONE
if (pSprite->xrepeat)
if (!FURY && pSprite->xrepeat)
for (int x=0; x<8; x++)
RANDOMSCRAP(pSprite, spriteNum);
#endif
@ -2362,10 +2366,13 @@ DETONATE:
switchPic = pSprite->picnum;
#ifndef EDUKE32_STANDALONE
if (switchPic > SIDEBOLT1 && switchPic <= SIDEBOLT1 + 3)
switchPic = SIDEBOLT1;
else if (switchPic > BOLT1 && switchPic <= BOLT1 + 3)
switchPic = BOLT1;
if (!FURY)
{
if (switchPic > SIDEBOLT1 && switchPic <= SIDEBOLT1 + 3)
switchPic = SIDEBOLT1;
else if (switchPic > BOLT1 && switchPic <= BOLT1 + 3)
switchPic = BOLT1;
}
#endif
switch (DYNAMICTILEMAP(switchPic))
{
@ -2475,7 +2482,11 @@ DETONATE:
}
goto next_sprite;
}
#ifndef EDUKE32_STANDALONE
if (!FURY)
switch (DYNAMICTILEMAP(switchPic))
{
case TRASH__STATIC:
if (pSprite->xvel == 0)
@ -2683,8 +2694,8 @@ DETONATE:
A_Execute(spriteNum, playerNum, playerDist);
}
goto next_sprite;
#endif
}
#endif
}
next_sprite:
@ -3135,7 +3146,11 @@ ACTOR_STATIC void G_MoveWeapons(void)
case RADIUSEXPLOSION__STATIC:
case KNEE__STATIC: DELETE_SPRITE_AND_CONTINUE(spriteNum);
}
#ifndef EDUKE32_STANDALONE
if (!FURY)
switch (DYNAMICTILEMAP(pSprite->picnum))
{
case FREEZEBLAST__STATIC:
if (pSprite->yvel < 1 || pSprite->extra < 2 || (pSprite->xvel | pSprite->zvel) == 0)
{
@ -3391,8 +3406,8 @@ ACTOR_STATIC void G_MoveWeapons(void)
goto next_sprite;
}
#endif
}
#endif
next_sprite:
spriteNum = nextSprite;
}
@ -3412,7 +3427,7 @@ static int P_Submerge(int const playerNum, DukePlayer_t * const pPlayer, int con
}
#ifndef EDUKE32_STANDALONE
if (sprite[pPlayer->i].extra > 0)
if (!FURY && sprite[pPlayer->i].extra > 0)
A_PlaySound(DUKE_UNDERWATER, pPlayer->i);
#endif
@ -3442,7 +3457,8 @@ static int P_Emerge(int const playerNum, DukePlayer_t * const pPlayer, int const
}
#ifndef EDUKE32_STANDALONE
A_PlaySound(DUKE_GASP, pPlayer->i);
if (!FURY)
A_PlaySound(DUKE_GASP, pPlayer->i);
#endif
pPlayer->opos.z = pPlayer->pos.z = sector[otherSect].floorz;
@ -3535,7 +3551,7 @@ ACTOR_STATIC void G_MoveTransports(void)
if (pPlayer->on_ground && sectLotag == 0 && onFloor && pPlayer->jetpack_on == 0)
{
#ifndef EDUKE32_STANDALONE
if (sprite[spriteNum].pal == 0)
if (!FURY && sprite[spriteNum].pal == 0)
{
A_Spawn(spriteNum, TRANSPORTERBEAM);
A_PlaySound(TELEPORTER, spriteNum);
@ -3568,7 +3584,7 @@ ACTOR_STATIC void G_MoveTransports(void)
pPlayer->cursectnum = sprite[sectSprite].sectnum;
#ifndef EDUKE32_STANDALONE
if (sprite[spriteNum].pal == 0)
if (!FURY && sprite[spriteNum].pal == 0)
{
int const newSprite = A_Spawn(OW(spriteNum), TRANSPORTERBEAM);
A_PlaySound(TELEPORTER, newSprite);
@ -3666,9 +3682,10 @@ ACTOR_STATIC void G_MoveTransports(void)
if (A_CheckSpriteFlags(sectSprite, SFLAG_DECAL))
goto JBOLT;
#ifndef EDUKE32_STANDALONE
if (!FURY)
switch (DYNAMICTILEMAP(sprite[sectSprite].picnum))
{
#ifndef EDUKE32_STANDALONE
case TRANSPORTERSTAR__STATIC:
case TRANSPORTERBEAM__STATIC:
case TRIPBOMB__STATIC:
@ -3680,7 +3697,10 @@ ACTOR_STATIC void G_MoveTransports(void)
case FIRE2__STATIC:
case TOILETWATER__STATIC:
case LASERLINE__STATIC: goto JBOLT;
}
#endif
switch (DYNAMICTILEMAP(sprite[sectSprite].picnum))
{
case PLAYERONWATER__STATIC:
if (sectLotag == ST_2_UNDERWATER)
{
@ -3703,13 +3723,16 @@ ACTOR_STATIC void G_MoveTransports(void)
Bassert(sectLotag == ST_1_ABOVE_WATER || sectLotag == ST_2_UNDERWATER);
#ifndef EDUKE32_STANDALONE
int const newSprite = A_Spawn(sectSprite, WATERSPLASH2);
if (sectLotag == ST_1_ABOVE_WATER && sprite[sectSprite].statnum == STAT_PROJECTILE)
if (!FURY)
{
sprite[newSprite].xvel = sprite[sectSprite].xvel >> 1;
sprite[newSprite].ang = sprite[sectSprite].ang;
A_SetSprite(newSprite, CLIPMASK0);
int const newSprite = A_Spawn(sectSprite, WATERSPLASH2);
if (sectLotag == ST_1_ABOVE_WATER && sprite[sectSprite].statnum == STAT_PROJECTILE)
{
sprite[newSprite].xvel = sprite[sectSprite].xvel >> 1;
sprite[newSprite].ang = sprite[sectSprite].ang;
A_SetSprite(newSprite, CLIPMASK0);
}
}
#endif
actor[sectSprite].lasttransport = ((int32_t) totalclock & UINT8_MAX);
@ -3739,7 +3762,7 @@ ACTOR_STATIC void G_MoveTransports(void)
sprite[sectSprite].ang = sprite[OW(spriteNum)].ang;
actor[sectSprite].bpos = sprite[sectSprite].pos;
#ifndef EDUKE32_STANDALONE
if (sprite[spriteNum].pal == 0)
if (!FURY && sprite[spriteNum].pal == 0)
{
int newSprite = A_Spawn(spriteNum, TRANSPORTERBEAM);
A_PlaySound(TELEPORTER, newSprite);
@ -3828,8 +3851,10 @@ ACTOR_STATIC void G_MoveActors(void)
switchPic = pSprite->picnum;
if (pSprite->picnum > GREENSLIME && pSprite->picnum <= GREENSLIME+7)
#ifndef EDUKE32_STANDALONE
if (!FURY && pSprite->picnum > GREENSLIME && pSprite->picnum <= GREENSLIME+7)
switchPic = GREENSLIME;
#endif
switch (DYNAMICTILEMAP(switchPic))
{
@ -3847,7 +3872,45 @@ ACTOR_STATIC void G_MoveActors(void)
goto next_sprite;
}
case CAMERA1__STATIC:
if (pData[0] == 0)
{
pData[1]+=8;
if (g_damageCameras)
{
if (A_IncurDamage(spriteNum) >= 0)
{
pData[0] = 1; // static
pSprite->cstat = 32768;
#ifndef EDUKE32_STANDALONE
if (!FURY)
{
for (bssize_t x = 0; x < 5; x++)
RANDOMSCRAP(pSprite, spriteNum);
}
#endif
goto next_sprite;
}
}
if (pSprite->hitag > 0)
{
if (pData[1] < pSprite->hitag) pSprite->ang += 8;
else if (pData[1] < pSprite->hitag * 3) pSprite->ang -= 8;
else if (pData[1] < (pSprite->hitag << 2)) pSprite->ang += 8;
else
{
pData[1] = 8;
pSprite->ang += 16;
}
}
}
goto next_sprite;
}
#ifndef EDUKE32_STANDALONE
switch (DYNAMICTILEMAP(switchPic))
{
case DUCK__STATIC:
case TARGET__STATIC:
if (pSprite->cstat&32)
@ -5060,41 +5123,8 @@ DETONATEB:
}
goto next_sprite;
}
#endif // EDUKE32_STANDALONE
case CAMERA1__STATIC:
if (pData[0] == 0)
{
pData[1]+=8;
if (g_damageCameras)
{
if (A_IncurDamage(spriteNum) >= 0)
{
pData[0] = 1; // static
pSprite->cstat = 32768;
#ifndef EDUKE32_STANDALONE
for (bssize_t x = 0; x < 5; x++)
RANDOMSCRAP(pSprite, spriteNum);
#endif
goto next_sprite;
}
}
if (pSprite->hitag > 0)
{
if (pData[1] < pSprite->hitag) pSprite->ang += 8;
else if (pData[1] < pSprite->hitag * 3) pSprite->ang -= 8;
else if (pData[1] < (pSprite->hitag << 2)) pSprite->ang += 8;
else
{
pData[1] = 8;
pSprite->ang += 16;
}
}
}
goto next_sprite;
}
#endif // EDUKE32_STANDALONE
if (!g_netServer && ud.multimode < 2 && A_CheckEnemySprite(pSprite))
{
@ -5157,6 +5187,7 @@ ACTOR_STATIC void G_MoveMisc(void) // STATNUM 5
actor[spriteNum].floorz = pSprite->z = getflorzofslope(pSprite->sectnum,pSprite->x,pSprite->y);
else
#endif
{
switch (DYNAMICTILEMAP(switchPic))
{
case APLAYER__STATIC: pSprite->cstat = 32768; goto next_sprite;
@ -5204,8 +5235,12 @@ ACTOR_STATIC void G_MoveMisc(void) // STATNUM 5
A_Execute(spriteNum, playerNum, playerDist);
goto next_sprite;
}
}
#ifndef EDUKE32_STANDALONE
if (!FURY)
switch (DYNAMICTILEMAP(switchPic))
{
case NEON1__STATIC:
case NEON2__STATIC:
case NEON3__STATIC:
@ -5637,11 +5672,12 @@ ACTOR_STATIC void G_MoveMisc(void) // STATNUM 5
A_SetSprite(spriteNum,CLIPMASK0);
goto next_sprite;
#endif
}
#endif
}
#ifndef EDUKE32_STANDALONE
if (PN(spriteNum) >= SCRAP6 && PN(spriteNum) <= SCRAP5+3)
if (!FURY && PN(spriteNum) >= SCRAP6 && PN(spriteNum) <= SCRAP5+3)
{
if (pSprite->xvel > 0)
pSprite->xvel--;
@ -6901,7 +6937,7 @@ ACTOR_STATIC void G_MoveEffectors(void) //STATNUM 3
}
#ifndef EDUKE32_STANDALONE
if (pData[2] == 4 && pSprite->ang != 512)
if (!FURY && pData[2] == 4 && pSprite->ang != 512)
for (x=0; x<7; x++) RANDOMSCRAP(pSprite, spriteNum);
#endif
break;
@ -7885,7 +7921,7 @@ ACTOR_STATIC void G_MoveEffectors(void) //STATNUM 3
#ifndef EDUKE32_STANDALONE
case SE_33_QUAKE_DEBRIS:
if (g_earthquakeTime > 0 && (krand()&7) == 0)
if (!FURY && g_earthquakeTime > 0 && (krand()&7) == 0)
RANDOMSCRAP(pSprite, spriteNum);
break;
#endif
@ -8199,6 +8235,9 @@ static void A_DoLight(int spriteNum)
return;
#ifndef EDUKE32_STANDALONE
if (FURY)
return;
for (int ii=0; ii<2; ii++)
{
if (pSprite->picnum <= 0) // oob safety
@ -8403,6 +8442,9 @@ void A_PlayAlertSound(int spriteNum)
return;
#ifndef EDUKE32_STANDALONE
if (FURY)
return;
switch (DYNAMICTILEMAP(PN(spriteNum)))
{
case LIZTROOPONTOILET__STATIC:
@ -8442,6 +8484,9 @@ int A_CheckSwitchTile(int spriteNum)
UNREFERENCED_PARAMETER(spriteNum);
#ifndef EDUKE32_STANDALONE
if (FURY)
return 0;
// picnum 0 would oob in the switch below,
if (PN(spriteNum) <= 0)

View file

@ -4423,7 +4423,7 @@ static void P_DoWater(int const playerNum, int const playerBits, int const floor
pPlayer->jumping_counter = 0;
pPlayer->pyoff = sintable[pPlayer->pycount] >> 7;
if (!A_CheckSoundPlaying(pPlayer->i, DUKE_UNDERWATER))
if (!FURY && !A_CheckSoundPlaying(pPlayer->i, DUKE_UNDERWATER))
A_PlaySound(DUKE_UNDERWATER, pPlayer->i);
if (TEST_SYNC_KEY(playerBits, SK_JUMP))
@ -4466,7 +4466,7 @@ static void P_DoWater(int const playerNum, int const playerBits, int const floor
pPlayer->vel.z = 0;
}
if (pPlayer->scuba_on && (krand()&255) < 8)
if (!FURY && pPlayer->scuba_on && (krand()&255) < 8)
{
int const spriteNum = A_Spawn(pPlayer->i, WATERBUBBLE);
int const q16ang = fix16_to_int(pPlayer->q16ang);
@ -4640,7 +4640,8 @@ void P_ProcessInput(int playerNum)
{
OSD_Printf(OSD_ERROR "%s: player killed by cursectnum == -1!\n", EDUKE32_FUNCTION);
P_QuickKill(pPlayer);
A_PlaySound(SQUISHED, pPlayer->i);
if (!FURY)
A_PlaySound(SQUISHED, pPlayer->i);
}
pPlayer->cursectnum = 0;