diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index c0161cd2f..c352121c3 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -6518,9 +6518,6 @@ DEFINE_ACTION_FUNCTION(AActor, GetFloorTerrain) 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)) return false; @@ -6609,48 +6606,51 @@ foundone: if (thing->Mass < 10) smallsplash = true; - if (smallsplash && splash->SmallSplash) + if (!(thing->flags3 & MF3_DONTSPLASH)) { - mo = Spawn (splash->SmallSplash, pos, ALLOW_REPLACE); - if (mo) mo->Floorclip += splash->SmallSplashClip; - } - else - { - if (splash->SplashChunk) + if (smallsplash && splash->SmallSplash) { - mo = Spawn (splash->SplashChunk, pos, ALLOW_REPLACE); - mo->target = thing; - if (splash->ChunkXVelShift != 255) + mo = Spawn(splash->SmallSplash, pos, ALLOW_REPLACE); + if (mo) mo->Floorclip += splash->SmallSplashClip; + } + else + { + if (splash->SplashChunk) { - mo->Vel.X = (pr_chunk.Random2() << splash->ChunkXVelShift) / 65536.; + mo = Spawn(splash->SplashChunk, pos, ALLOW_REPLACE); + mo->target = thing; + if (splash->ChunkXVelShift != 255) + { + mo->Vel.X = (pr_chunk.Random2() << splash->ChunkXVelShift) / 65536.; + } + if (splash->ChunkYVelShift != 255) + { + mo->Vel.Y = (pr_chunk.Random2() << splash->ChunkYVelShift) / 65536.; + } + mo->Vel.Z = splash->ChunkBaseZVel + (pr_chunk() << splash->ChunkZVelShift) / 65536.; } - if (splash->ChunkYVelShift != 255) + if (splash->SplashBase) { - mo->Vel.Y = (pr_chunk.Random2() << splash->ChunkYVelShift) / 65536.; + mo = Spawn(splash->SplashBase, pos, ALLOW_REPLACE); + } + if (thing->player && !splash->NoAlert && alert) + { + P_NoiseAlert(thing, thing, true); } - mo->Vel.Z = splash->ChunkBaseZVel + (pr_chunk() << splash->ChunkZVelShift) / 65536.; } - if (splash->SplashBase) + if (mo) { - mo = Spawn (splash->SplashBase, pos, ALLOW_REPLACE); + S_Sound(mo, CHAN_ITEM, smallsplash ? + splash->SmallSplashSound : splash->NormalSplashSound, + 1, ATTN_IDLE); } - if (thing->player && !splash->NoAlert && alert) + else { - P_NoiseAlert (thing, thing, true); + S_Sound(pos, CHAN_ITEM, smallsplash ? + splash->SmallSplashSound : splash->NormalSplashSound, + 1, ATTN_IDLE); } } - if (mo) - { - S_Sound (mo, CHAN_ITEM, smallsplash ? - splash->SmallSplashSound : splash->NormalSplashSound, - 1, ATTN_IDLE); - } - else - { - S_Sound (pos, CHAN_ITEM, smallsplash ? - splash->SmallSplashSound : splash->NormalSplashSound, - 1, ATTN_IDLE); - } // Don't let deep water eat missiles return plane == &sec->floorplane ? Terrains[terrainnum].IsLiquid : false; @@ -6690,9 +6690,6 @@ bool P_HitFloor (AActor *thing) return false; } - if (thing->flags3 & MF3_DONTSPLASH) - return false; - // don't splash if landing on the edge above water/lava/etc.... DVector3 pos; for (m = thing->touching_sectorlist; m; m = m->m_tnext)