(24d02be32) Revert 8e2e2526 ("Spawn multiple monsters using the same spatial and temporal spreading logic as in events". Caused entity IDs to often differ between the server and clients in monster missions, leading to all sorts of syncing issues (the most frequent being IndexOutOfRange exceptions when attempting to read data for an incorrect entity).
This commit is contained in:
@@ -34,33 +34,14 @@ namespace Barotrauma
|
||||
{
|
||||
Level.Loaded.TryGetInterestingPosition(true, Level.PositionType.MainPath, Level.Loaded.Size.X * 0.3f, out Vector2 spawnPos);
|
||||
|
||||
//bool isClient = GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient;
|
||||
//for (int i = 0; i < monsterCount; i++)
|
||||
//{
|
||||
// monsters.Add(Character.Create(monsterFile, spawnPos, ToolBox.RandomSeed(8), null, isClient, true, false));
|
||||
//}
|
||||
//monsters.ForEach(m => m.Enabled = false);
|
||||
//SwarmBehavior.CreateSwarm(monsters.Cast<AICharacter>());
|
||||
//sonarPositions.Add(spawnPos);
|
||||
|
||||
float offsetAmount = 500;
|
||||
bool isClient = GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient;
|
||||
for (int i = 0; i < monsterCount; i++)
|
||||
{
|
||||
CoroutineManager.InvokeAfter(() =>
|
||||
{
|
||||
bool isClient = GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient;
|
||||
var monster = Character.Create(monsterFile, spawnPos + Rand.Vector(offsetAmount, Rand.RandSync.Server), i.ToString(), null, isClient, true, true);
|
||||
monster.Enabled = false;
|
||||
monsters.Add(monster);
|
||||
if (monsters.Count == monsterCount)
|
||||
{
|
||||
//this will do nothing if the monsters have no swarm behavior defined,
|
||||
//otherwise it'll make the spawned characters act as a swarm
|
||||
SwarmBehavior.CreateSwarm(monsters.Cast<AICharacter>());
|
||||
sonarPositions.Add(spawnPos);
|
||||
}
|
||||
}, Rand.Range(0f, monsterCount / 2, Rand.RandSync.Server));
|
||||
monsters.Add(Character.Create(monsterFile, spawnPos, ToolBox.RandomSeed(8), null, isClient, true, false));
|
||||
}
|
||||
monsters.ForEach(m => m.Enabled = false);
|
||||
SwarmBehavior.CreateSwarm(monsters.Cast<AICharacter>());
|
||||
sonarPositions.Add(spawnPos);
|
||||
}
|
||||
|
||||
public override void Update(float deltaTime)
|
||||
|
||||
Reference in New Issue
Block a user