diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs index bf550d137..f3bf6565e 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs @@ -450,7 +450,7 @@ namespace Barotrauma return Create(characterInfo.File, position, characterInfo, isRemotePlayer, hasAi); } - public static Character Create(string file, Vector2 position, CharacterInfo characterInfo = null, bool isRemotePlayer = false, bool hasAi=true) + public static Character Create(string file, Vector2 position, CharacterInfo characterInfo = null, bool isRemotePlayer = false, bool hasAi=true, bool createNetworkEvent = true) { #if LINUX if (!System.IO.File.Exists(file)) @@ -508,8 +508,10 @@ namespace Barotrauma newCharacter.minHealth = -100.0f; } - if (GameMain.Server != null && Entity.Spawner != null) - Entity.Spawner.CreateNetworkEvent(newCharacter, false); + if (GameMain.Server != null && Spawner != null && createNetworkEvent) + { + Spawner.CreateNetworkEvent(newCharacter, false); + } return newCharacter; } diff --git a/Barotrauma/BarotraumaShared/Source/Events/Missions/MonsterMission.cs b/Barotrauma/BarotraumaShared/Source/Events/Missions/MonsterMission.cs index 1e693717e..0784562a0 100644 --- a/Barotrauma/BarotraumaShared/Source/Events/Missions/MonsterMission.cs +++ b/Barotrauma/BarotraumaShared/Source/Events/Missions/MonsterMission.cs @@ -22,13 +22,14 @@ namespace Barotrauma : base(element, locations) { monsterFile = ToolBox.GetAttributeString(element, "monsterfile", ""); - } + } + public override void Start(Level level) { Vector2 spawnPos = Level.Loaded.GetRandomInterestingPosition(true, Level.PositionType.MainPath, true); - monster = Character.Create(monsterFile, spawnPos, null, GameMain.Client != null); + monster = Character.Create(monsterFile, spawnPos, null, GameMain.Client != null, true, false); monster.Enabled = false; radarPosition = spawnPos; } diff --git a/Barotrauma/BarotraumaShared/Source/Events/MonsterEvent.cs b/Barotrauma/BarotraumaShared/Source/Events/MonsterEvent.cs index 20bbf4e43..15bbe3cd7 100644 --- a/Barotrauma/BarotraumaShared/Source/Events/MonsterEvent.cs +++ b/Barotrauma/BarotraumaShared/Source/Events/MonsterEvent.cs @@ -73,7 +73,7 @@ namespace Barotrauma { base.Init(); - SpawnMonsters(Rand.Range(minAmount, maxAmount, Rand.RandSync.Server)); + monsters = SpawnMonsters(Rand.Range(minAmount, maxAmount, Rand.RandSync.Server)); } private Character[] SpawnMonsters(int amount) @@ -90,7 +90,7 @@ namespace Barotrauma { spawnPos.X += Rand.Range(-0.5f, 0.5f, Rand.RandSync.Server); spawnPos.Y += Rand.Range(-0.5f, 0.5f, Rand.RandSync.Server); - monsters[i] = Character.Create(characterFile, spawnPos, null, GameMain.Client != null); + monsters[i] = Character.Create(characterFile, spawnPos, null, GameMain.Client != null, true, false); } return monsters; @@ -103,13 +103,7 @@ namespace Barotrauma Finished(); return; } - - if (monsters == null) - { - monsters = SpawnMonsters(Rand.Range(minAmount, maxAmount, Rand.RandSync.Server)); - return; - } - + if (repeat) { //clients aren't allowed to spawn more monsters mid-round