Add a try-finally in HumanPrefab to fix an issue causing issue(Destination array was not long enough. )
Fixed another Collection was modified in SubmarineBody.Update()
This commit is contained in:
@@ -282,16 +282,21 @@ namespace Barotrauma
|
|||||||
#if SERVER
|
#if SERVER
|
||||||
if (GameMain.Server != null && Entity.Spawner != null && createNetworkEvents)
|
if (GameMain.Server != null && Entity.Spawner != null && createNetworkEvents)
|
||||||
{
|
{
|
||||||
if (GameMain.Server.EntityEventManager.UniqueEvents.ToList().Any(ev => ev.Entity == item))
|
try
|
||||||
{
|
{
|
||||||
string errorMsg = $"Error while spawning job items. Item {item.Name} created network events before the spawn event had been created.";
|
if (GameMain.Server.EntityEventManager.UniqueEvents.ToList().Any(ev => ev.Entity == item))
|
||||||
DebugConsole.ThrowError(errorMsg);
|
{
|
||||||
GameAnalyticsManager.AddErrorEventOnce("Job.InitializeJobItem:EventsBeforeSpawning", GameAnalyticsManager.ErrorSeverity.Error, errorMsg);
|
string errorMsg = $"Error while spawning job items. Item {item.Name} created network events before the spawn event had been created.";
|
||||||
GameMain.Server.EntityEventManager.UniqueEvents.RemoveAll(ev => ev.Entity == item);
|
DebugConsole.ThrowError(errorMsg);
|
||||||
GameMain.Server.EntityEventManager.Events.RemoveAll(ev => ev.Entity == item);
|
GameAnalyticsManager.AddErrorEventOnce("Job.InitializeJobItem:EventsBeforeSpawning", GameAnalyticsManager.ErrorSeverity.Error, errorMsg);
|
||||||
|
GameMain.Server.EntityEventManager.UniqueEvents.RemoveAll(ev => ev.Entity == item);
|
||||||
|
GameMain.Server.EntityEventManager.Events.RemoveAll(ev => ev.Entity == item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
Entity.Spawner.CreateNetworkEvent(new EntitySpawner.SpawnEntity(item));
|
||||||
}
|
}
|
||||||
|
|
||||||
Entity.Spawner.CreateNetworkEvent(new EntitySpawner.SpawnEntity(item));
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (itemElement.GetAttributeBool("equip", false))
|
if (itemElement.GetAttributeBool("equip", false))
|
||||||
|
|||||||
@@ -426,7 +426,7 @@ namespace Barotrauma
|
|||||||
if (points[0].Y > Body.SimPosition.Y &&
|
if (points[0].Y > Body.SimPosition.Y &&
|
||||||
!Character.CharacterList.Any(c => c.Submarine == otherSubmarine && !c.IsIncapacitated && c.TeamID == otherSubmarine.TeamID))
|
!Character.CharacterList.Any(c => c.Submarine == otherSubmarine && !c.IsIncapacitated && c.TeamID == otherSubmarine.TeamID))
|
||||||
{
|
{
|
||||||
otherSubmarine.GetConnectedSubs().ForEach(s => s.SubBody.forceUpwardsTimer += deltaTime);
|
otherSubmarine.GetConnectedSubs().ToList().ForEach(s => s.SubBody.forceUpwardsTimer += deltaTime);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user