- fixed: MF3_DONTSPLASH disabled all terrain effects, not just the splash.

Untested for now because the report came without any example to check it with.
This commit is contained in:
Christoph Oelckers 2018-06-02 12:10:06 +02:00
parent 58f4af6ded
commit 0c5a47ac90

View file

@ -6504,9 +6504,6 @@ DEFINE_ACTION_FUNCTION(AActor, GetFloorTerrain)
bool P_HitWater (AActor * thing, sector_t * sec, const DVector3 &pos, bool checkabove, bool alert, bool force) bool P_HitWater (AActor * thing, sector_t * sec, const DVector3 &pos, bool checkabove, bool alert, bool force)
{ {
if (thing->flags3 & MF3_DONTSPLASH)
return false;
if (thing->player && (thing->player->cheats & CF_PREDICTING)) if (thing->player && (thing->player->cheats & CF_PREDICTING))
return false; return false;
@ -6595,16 +6592,18 @@ foundone:
if (thing->Mass < 10) if (thing->Mass < 10)
smallsplash = true; smallsplash = true;
if (!(thing->flags3 & MF3_DONTSPLASH))
{
if (smallsplash && splash->SmallSplash) if (smallsplash && splash->SmallSplash)
{ {
mo = Spawn (splash->SmallSplash, pos, ALLOW_REPLACE); mo = Spawn(splash->SmallSplash, pos, ALLOW_REPLACE);
if (mo) mo->Floorclip += splash->SmallSplashClip; if (mo) mo->Floorclip += splash->SmallSplashClip;
} }
else else
{ {
if (splash->SplashChunk) if (splash->SplashChunk)
{ {
mo = Spawn (splash->SplashChunk, pos, ALLOW_REPLACE); mo = Spawn(splash->SplashChunk, pos, ALLOW_REPLACE);
mo->target = thing; mo->target = thing;
if (splash->ChunkXVelShift != 255) if (splash->ChunkXVelShift != 255)
{ {
@ -6618,25 +6617,26 @@ foundone:
} }
if (splash->SplashBase) if (splash->SplashBase)
{ {
mo = Spawn (splash->SplashBase, pos, ALLOW_REPLACE); mo = Spawn(splash->SplashBase, pos, ALLOW_REPLACE);
} }
if (thing->player && !splash->NoAlert && alert) if (thing->player && !splash->NoAlert && alert)
{ {
P_NoiseAlert (thing, thing, true); P_NoiseAlert(thing, thing, true);
} }
} }
if (mo) if (mo)
{ {
S_Sound (mo, CHAN_ITEM, smallsplash ? S_Sound(mo, CHAN_ITEM, smallsplash ?
splash->SmallSplashSound : splash->NormalSplashSound, splash->SmallSplashSound : splash->NormalSplashSound,
1, ATTN_IDLE); 1, ATTN_IDLE);
} }
else else
{ {
S_Sound (pos, CHAN_ITEM, smallsplash ? S_Sound(pos, CHAN_ITEM, smallsplash ?
splash->SmallSplashSound : splash->NormalSplashSound, splash->SmallSplashSound : splash->NormalSplashSound,
1, ATTN_IDLE); 1, ATTN_IDLE);
} }
}
// Don't let deep water eat missiles // Don't let deep water eat missiles
return plane == &sec->floorplane ? Terrains[terrainnum].IsLiquid : false; return plane == &sec->floorplane ? Terrains[terrainnum].IsLiquid : false;
@ -6676,9 +6676,6 @@ bool P_HitFloor (AActor *thing)
return false; return false;
} }
if (thing->flags3 & MF3_DONTSPLASH)
return false;
// don't splash if landing on the edge above water/lava/etc.... // don't splash if landing on the edge above water/lava/etc....
DVector3 pos; DVector3 pos;
for (m = thing->touching_sectorlist; m; m = m->m_tnext) for (m = thing->touching_sectorlist; m; m = m->m_tnext)