Fixed clients spawning monsters twice (first during mission/event initialization and again when the server notifies them about the spawning)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user