mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 04:24:39 +00:00
- generalize Duke's purple lava check.
This commit is contained in:
parent
6848af9b6c
commit
0ffeb2378a
8 changed files with 43 additions and 20 deletions
|
@ -424,6 +424,7 @@ enum
|
||||||
TFLAG_NOBLOODSPLAT = 1 << 8,
|
TFLAG_NOBLOODSPLAT = 1 << 8,
|
||||||
TFLAG_NOCIRCLEREFLECT = 1 << 9,
|
TFLAG_NOCIRCLEREFLECT = 1 << 9,
|
||||||
TFLAG_MUDDY = 1 << 10,
|
TFLAG_MUDDY = 1 << 10,
|
||||||
|
TFLAG_PURPLELAVA = 1 << 11, // very special kind of terrain type.
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
|
|
@ -115,6 +115,7 @@ void quickkill(player_struct* p);
|
||||||
int setpal(player_struct* p);
|
int setpal(player_struct* p);
|
||||||
int madenoise(int playerNum);
|
int madenoise(int playerNum);
|
||||||
int haskey(sectortype* sect, int snum);
|
int haskey(sectortype* sect, int snum);
|
||||||
|
void purplelavacheck(player_struct* p);
|
||||||
|
|
||||||
bool checkhitceiling(sectortype* sectp);
|
bool checkhitceiling(sectortype* sectp);
|
||||||
void checkhitwall(DDukeActor* spr, walltype* wal, const DVector3& pos);
|
void checkhitwall(DDukeActor* spr, walltype* wal, const DVector3& pos);
|
||||||
|
|
|
@ -990,5 +990,37 @@ int haskey(sectortype* sectp, int snum)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// taken out of Duke, now that it is no longer hard coded.
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void purplelavacheck(player_struct* p)
|
||||||
|
{
|
||||||
|
auto pact = p->actor;
|
||||||
|
if (p->spritebridge == 0 && pact->insector())
|
||||||
|
{
|
||||||
|
auto sect = pact->sector();
|
||||||
|
// one texflag for a single texture again, just to avoid one hard coded check...
|
||||||
|
if ((tileflags(sect->floortexture()) & TFLAG_PURPLELAVA) || (tileflags(sect->ceilingtexture()) & TFLAG_PURPLELAVA))
|
||||||
|
{
|
||||||
|
if (p->boot_amount > 0)
|
||||||
|
{
|
||||||
|
p->boot_amount--;
|
||||||
|
p->inven_icon = 7;
|
||||||
|
if (p->boot_amount <= 0)
|
||||||
|
checkavailinven(p);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!S_CheckActorSoundPlaying(pact, DUKE_LONGTERM_PAIN))
|
||||||
|
S_PlayActorSound(DUKE_LONGTERM_PAIN, pact);
|
||||||
|
SetPlayerPal(p, PalEntry(32, 0, 8, 0));
|
||||||
|
pact->spr.extra--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
END_DUKE_NS
|
END_DUKE_NS
|
||||||
|
|
|
@ -2883,33 +2883,17 @@ void processinput_d(int snum)
|
||||||
}
|
}
|
||||||
|
|
||||||
p->Angles.doYawKeys(&actions);
|
p->Angles.doYawKeys(&actions);
|
||||||
|
purplelavacheck(p);
|
||||||
|
|
||||||
if (p->spritebridge == 0 && pact->insector())
|
if (p->spritebridge == 0 && pact->insector())
|
||||||
{
|
{
|
||||||
int j = pact->sector()->floorpicnum;
|
auto sect = pact->sector();
|
||||||
|
|
||||||
if (j == DTILE_PURPLELAVA || pact->sector()->ceilingpicnum == DTILE_PURPLELAVA)
|
|
||||||
{
|
|
||||||
if (p->boot_amount > 0)
|
|
||||||
{
|
|
||||||
p->boot_amount--;
|
|
||||||
p->inven_icon = 7;
|
|
||||||
if (p->boot_amount <= 0)
|
|
||||||
checkavailinven(p);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!S_CheckActorSoundPlaying(pact, DUKE_LONGTERM_PAIN))
|
|
||||||
S_PlayActorSound(DUKE_LONGTERM_PAIN, pact);
|
|
||||||
SetPlayerPal(p, PalEntry(32, 0, 8, 0));
|
|
||||||
pact->spr.extra--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
k = 0;
|
k = 0;
|
||||||
|
|
||||||
if (p->on_ground && truefdist <= gs.playerheight + 16)
|
if (p->on_ground && truefdist <= gs.playerheight + 16)
|
||||||
{
|
{
|
||||||
|
int j = sect->floorpicnum;
|
||||||
int whichsound = (tileflags(tileGetTextureID(j)) & TFLAG_ELECTRIC) ? 0 : j == DTILE_FLOORSLIME ? 1 : j == DTILE_FLOORPLASMA ? 2 : -1;
|
int whichsound = (tileflags(tileGetTextureID(j)) & TFLAG_ELECTRIC) ? 0 : j == DTILE_FLOORSLIME ? 1 : j == DTILE_FLOORPLASMA ? 2 : -1;
|
||||||
if (j >= 0) k = makepainsounds(snum, whichsound);
|
if (j >= 0) k = makepainsounds(snum, whichsound);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3494,6 +3494,7 @@ void processinput_r(int snum)
|
||||||
}
|
}
|
||||||
|
|
||||||
p->Angles.doYawKeys(&actions);
|
p->Angles.doYawKeys(&actions);
|
||||||
|
purplelavacheck(p);
|
||||||
|
|
||||||
if (p->spritebridge == 0 && pact->insector())
|
if (p->spritebridge == 0 && pact->insector())
|
||||||
{
|
{
|
||||||
|
@ -3524,7 +3525,7 @@ void processinput_r(int snum)
|
||||||
|
|
||||||
if (isRRRA() && p->spritebridge == 0 && p->on_ground)
|
if (isRRRA() && p->spritebridge == 0 && p->on_ground)
|
||||||
{
|
{
|
||||||
if (psectlotag == 1)
|
if (psectlotag == ST_1_ABOVE_WATER)
|
||||||
p->NotOnWater = 0;
|
p->NotOnWater = 0;
|
||||||
else if (p->OnBoat)
|
else if (p->OnBoat)
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,4 +14,6 @@ constants
|
||||||
TFLAG_NOBLOODSPLAT = 256
|
TFLAG_NOBLOODSPLAT = 256
|
||||||
TFLAG_NOCIRCLEREFLECT = 512
|
TFLAG_NOCIRCLEREFLECT = 512
|
||||||
TFLAG_MUDDY = 1024
|
TFLAG_MUDDY = 1024
|
||||||
|
TFLAG_PURPLELAVA = 2048
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,4 +131,5 @@ textureflags
|
||||||
TFLAG_ELECTRIC = HURTRAIL
|
TFLAG_ELECTRIC = HURTRAIL
|
||||||
TFLAG_SLIME = FLOORSLIME, FLOORSLIME1, FLOORSLIME2
|
TFLAG_SLIME = FLOORSLIME, FLOORSLIME1, FLOORSLIME2
|
||||||
TFLAG_OUTERSPACE = MOONSKY1, BIGORBIT1
|
TFLAG_OUTERSPACE = MOONSKY1, BIGORBIT1
|
||||||
|
TFLAG_PURPLELAVA = PURPLELAVA
|
||||||
}
|
}
|
|
@ -81,6 +81,7 @@ struct Duke native
|
||||||
TFLAG_NOBLOODSPLAT = 1 << 8,
|
TFLAG_NOBLOODSPLAT = 1 << 8,
|
||||||
TFLAG_NOCIRCLEREFLECT = 1 << 9,
|
TFLAG_NOCIRCLEREFLECT = 1 << 9,
|
||||||
TFLAG_MUDDY = 1 << 10,
|
TFLAG_MUDDY = 1 << 10,
|
||||||
|
TFLAG_PURPLELAVA = 1 << 11, // very special kind of terrain type.
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ESoundFlags
|
enum ESoundFlags
|
||||||
|
|
Loading…
Reference in a new issue