diff --git a/src/p_map.cpp b/src/p_map.cpp index 913840e59..9b21a4c02 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -455,6 +455,10 @@ bool P_TeleportMove(AActor* thing, const DVector3 &pos, bool telefrag, bool modi if (!P_CanCollideWith(tmf.thing, th)) continue; + // Don't let players and monsters block item teleports (all other actor types will still block.) + if (thing->IsKindOf(RUNTIME_CLASS(AInventory)) && !(thing->flags & MF_SOLID) && ((th->flags3 & MF3_ISMONSTER) || th->player != nullptr)) + continue; + // monsters don't stomp things except on boss level // [RH] Some Heretic/Hexen monsters can telestomp // ... and some items can never be telefragged while others will be telefragged by everything that teleports upon them. diff --git a/src/sound/i_music.cpp b/src/sound/i_music.cpp index 630c80da5..b87ea670f 100644 --- a/src/sound/i_music.cpp +++ b/src/sound/i_music.cpp @@ -227,7 +227,12 @@ void MusInfo::Start(bool loop, float rel_vol, int subsong) { if (nomusic) return; - if (rel_vol > 0.f) saved_relative_volume = relative_volume = rel_vol; + if (rel_vol > 0.f) + { + float factor = relative_volume / saved_relative_volume; + saved_relative_volume = rel_vol; + relative_volume = saved_relative_volume * factor; + } Stop (); Play (loop, subsong); m_NotStartedYet = false;