diff --git a/Subsurface/Source/Camera.cs b/Subsurface/Source/Camera.cs index 3e785b401..ba04ff939 100644 --- a/Subsurface/Source/Camera.cs +++ b/Subsurface/Source/Camera.cs @@ -38,11 +38,8 @@ namespace Barotrauma get { return zoom; } set { - zoom = value; - if (zoom < 0.1f) zoom = 0.1f; - - //if (prevZoom == zoom) return; - + zoom = Math.Max(value, GameMain.DebugDraw ? 0.01f : 0.1f); + Vector2 center = WorldViewCenter; float newWidth = resolution.X / zoom; float newHeight = resolution.Y / zoom; @@ -137,7 +134,6 @@ namespace Barotrauma worldView.X = (int)(interpolatedPosition.X - worldView.Width / 2.0); worldView.Y = (int)(interpolatedPosition.Y + worldView.Height / 2.0); - if (Level.Loaded != null && clampPos) { position.Y -= Math.Max(worldView.Y - Level.Loaded.Size.Y, 0.0f); @@ -199,7 +195,7 @@ namespace Barotrauma moveCam = moveCam * deltaTime * 60.0f; - Zoom = MathHelper.Clamp(zoom + (PlayerInput.ScrollWheelSpeed / 1000.0f) * zoom, 0.1f, 2.0f); + Zoom = MathHelper.Clamp(zoom + (PlayerInput.ScrollWheelSpeed / 1000.0f) * zoom, GameMain.DebugDraw ? 0.01f : 0.1f, 2.0f); } else { diff --git a/Subsurface/Source/Events/Missions/MonsterMission.cs b/Subsurface/Source/Events/Missions/MonsterMission.cs index 503febcaa..6c4d2fa7e 100644 --- a/Subsurface/Source/Events/Missions/MonsterMission.cs +++ b/Subsurface/Source/Events/Missions/MonsterMission.cs @@ -1,5 +1,6 @@ using Barotrauma.Networking; using Microsoft.Xna.Framework; +using System; using System.Xml.Linq; namespace Barotrauma @@ -27,11 +28,21 @@ namespace Barotrauma public override void Start(Level level) { - Vector2 position = level.GetRandomInterestingPosition(true, Level.PositionType.MainPath); + float minDist = Math.Max(Submarine.MainSub.Borders.Width, Submarine.MainSub.Borders.Height); - monster = Character.Create(monsterFile, position, null, GameMain.Client != null); + //find a random spawnpos that isn't too close to the main sub + int tries = 0; + Vector2 spawnPos = Vector2.Zero; + do + { + spawnPos = Level.Loaded.GetRandomInterestingPosition(true, Level.PositionType.MainPath); + tries++; + } while (tries < 50 && Vector2.Distance(spawnPos, Submarine.MainSub.WorldPosition) < minDist); + + + monster = Character.Create(monsterFile, spawnPos, null, GameMain.Client != null); monster.Enabled = false; - radarPosition = monster.Position; + radarPosition = spawnPos; } public override void Update(float deltaTime) diff --git a/Subsurface/Source/Events/MonsterEvent.cs b/Subsurface/Source/Events/MonsterEvent.cs index 7162c7937..d84cf5e35 100644 --- a/Subsurface/Source/Events/MonsterEvent.cs +++ b/Subsurface/Source/Events/MonsterEvent.cs @@ -47,9 +47,17 @@ namespace Barotrauma private void SpawnMonsters() { - //WayPoint randomWayPoint = WayPoint.GetRandom(SpawnType.Enemy); + float minDist = Math.Max(Submarine.MainSub.Borders.Width, Submarine.MainSub.Borders.Height); + + //find a random spawnpos that isn't too close to the main sub + int tries = 0; + Vector2 spawnPos = Vector2.Zero; + do + { + spawnPos = Level.Loaded.GetRandomInterestingPosition(true, spawnPosType); + tries++; + } while (tries < 50 && Vector2.Distance(spawnPos, Submarine.MainSub.WorldPosition) < minDist); - Vector2 spawnPos = Level.Loaded.GetRandomInterestingPosition(true, spawnPosType); int amount = Rand.Range(minAmount, maxAmount, false); diff --git a/Subsurface/Source/Items/Components/Machines/Vent.cs b/Subsurface/Source/Items/Components/Machines/Vent.cs index ccf662ba9..5bcb644ff 100644 --- a/Subsurface/Source/Items/Components/Machines/Vent.cs +++ b/Subsurface/Source/Items/Components/Machines/Vent.cs @@ -23,6 +23,8 @@ namespace Barotrauma.Items.Components { if (item.CurrentHull == null) return; + if (item.InWater) return; + item.CurrentHull.Oxygen += oxygenFlow * deltaTime; OxygenFlow -= deltaTime * 1000.0f; }