Build 0.18.13.0
This commit is contained in:
@@ -562,8 +562,10 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
private List<int> severedJointIndices = new List<int>();
|
||||
private void WriteStatus(IWriteMessage msg)
|
||||
private readonly List<int> severedJointIndices = new List<int>();
|
||||
|
||||
/// <param name="forceAfflictionData">Normally full affliction data is not written for dead characters, this can be used to force them to be written</param>
|
||||
private void WriteStatus(IWriteMessage msg, bool forceAfflictionData = false)
|
||||
{
|
||||
msg.Write(IsDead);
|
||||
if (IsDead)
|
||||
@@ -573,6 +575,11 @@ namespace Barotrauma
|
||||
{
|
||||
msg.Write(CauseOfDeath.Affliction.Identifier);
|
||||
}
|
||||
msg.Write(forceAfflictionData);
|
||||
if (forceAfflictionData)
|
||||
{
|
||||
CharacterHealth.ServerWrite(msg);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -689,7 +696,7 @@ namespace Barotrauma
|
||||
|
||||
if (msg.LengthBytes - initialMsgLength >= 255 && restrictMessageSize)
|
||||
{
|
||||
string errorMsg = $"Error when writing character spawn data: data exceeded 255 bytes (info: {infoLength}, orders: {ordersLength}, total: {msg.LengthBytes - initialMsgLength})";
|
||||
string errorMsg = $"Error when writing character spawn data for \"{Name}\": data exceeded 255 bytes (info: {infoLength}, orders: {ordersLength}, total: {msg.LengthBytes - initialMsgLength})";
|
||||
DebugConsole.ThrowError(errorMsg);
|
||||
GameAnalyticsManager.AddErrorEventOnce("Character.WriteSpawnData:TooMuchData", GameAnalyticsManager.ErrorSeverity.Error, errorMsg);
|
||||
}
|
||||
@@ -701,13 +708,13 @@ namespace Barotrauma
|
||||
int msgLengthBeforeStatus = msg.LengthBytes - initialMsgLength;
|
||||
|
||||
var tempBuffer = new ReadWriteMessage();
|
||||
WriteStatus(tempBuffer);
|
||||
WriteStatus(tempBuffer, forceAfflictionData: true);
|
||||
if (msgLengthBeforeStatus + tempBuffer.LengthBytes >= 255 && restrictMessageSize)
|
||||
{
|
||||
msg.Write(false);
|
||||
if (msgLengthBeforeStatus < 255)
|
||||
{
|
||||
string errorMsg = $"Error when writing character spawn data: status data caused the length of the message to exceed 255 bytes ({msgLengthBeforeStatus} + {tempBuffer.LengthBytes})";
|
||||
string errorMsg = $"Error when writing character spawn data for \"{Name}\": status data caused the length of the message to exceed 255 bytes ({msgLengthBeforeStatus} + {tempBuffer.LengthBytes})";
|
||||
DebugConsole.ThrowError(errorMsg);
|
||||
GameAnalyticsManager.AddErrorEventOnce("Character.WriteSpawnData:TooMuchDataForStatus", GameAnalyticsManager.ErrorSeverity.Error, errorMsg);
|
||||
}
|
||||
@@ -715,7 +722,7 @@ namespace Barotrauma
|
||||
else
|
||||
{
|
||||
msg.Write(true);
|
||||
WriteStatus(msg);
|
||||
WriteStatus(msg, forceAfflictionData: true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace Barotrauma
|
||||
campaign.GetWallet(client).Give(itemValue);
|
||||
GameAnalyticsManager.AddMoneyGainedEvent(itemValue, GameAnalyticsManager.MoneySource.Store, item.ItemPrefab.Identifier.Value);
|
||||
}
|
||||
OnSoldItemsChanged?.Invoke();
|
||||
OnSoldItemsChanged?.Invoke(this);
|
||||
}
|
||||
|
||||
public void ClearSoldItemsProjSpecific()
|
||||
|
||||
+11
-8
@@ -393,14 +393,17 @@ namespace Barotrauma
|
||||
}
|
||||
|
||||
partial void InitProjSpecific()
|
||||
{
|
||||
CargoManager.OnItemsInBuyCrateChanged += () => { IncrementLastUpdateIdForFlag(NetFlags.ItemsInBuyCrate); };
|
||||
CargoManager.OnPurchasedItemsChanged += () => { IncrementLastUpdateIdForFlag(NetFlags.PurchasedItems); };
|
||||
CargoManager.OnSoldItemsChanged += () => { IncrementLastUpdateIdForFlag(NetFlags.SoldItems); };
|
||||
UpgradeManager.OnUpgradesChanged += () => { IncrementLastUpdateIdForFlag(NetFlags.UpgradeManager); };
|
||||
Map.OnLocationSelected += (loc, connection) => { IncrementLastUpdateIdForFlag(NetFlags.MapAndMissions); };
|
||||
Map.OnMissionsSelected += (loc, mission) => { IncrementLastUpdateIdForFlag(NetFlags.MapAndMissions); };
|
||||
Reputation.OnAnyReputationValueChanged += () => { IncrementLastUpdateIdForFlag(NetFlags.Reputation); };
|
||||
{
|
||||
Identifier eventId = nameof(MultiPlayerCampaign).ToIdentifier();
|
||||
CargoManager.OnItemsInBuyCrateChanged.RegisterOverwriteExisting(eventId, _ => IncrementLastUpdateIdForFlag(NetFlags.ItemsInBuyCrate));
|
||||
CargoManager.OnPurchasedItemsChanged.RegisterOverwriteExisting(eventId, _ => IncrementLastUpdateIdForFlag(NetFlags.PurchasedItems));
|
||||
CargoManager.OnSoldItemsChanged.RegisterOverwriteExisting(eventId, _ => IncrementLastUpdateIdForFlag(NetFlags.SoldItems));
|
||||
UpgradeManager.OnUpgradesChanged.RegisterOverwriteExisting(eventId, _ => IncrementLastUpdateIdForFlag(NetFlags.UpgradeManager));
|
||||
|
||||
Reputation.OnAnyReputationValueChanged.RegisterOverwriteExisting(eventId, _ => IncrementLastUpdateIdForFlag(NetFlags.Reputation));
|
||||
|
||||
Map.OnLocationSelected = (loc, connection) => IncrementLastUpdateIdForFlag(NetFlags.MapAndMissions);
|
||||
Map.OnMissionsSelected = (loc, mission) => IncrementLastUpdateIdForFlag(NetFlags.MapAndMissions);
|
||||
|
||||
//increment save ID so clients know they're lacking the most up-to-date save file
|
||||
LastSaveID++;
|
||||
|
||||
@@ -2409,17 +2409,20 @@ namespace Barotrauma.Networking
|
||||
|
||||
campaign?.CargoManager.InitPurchasedIDCards();
|
||||
|
||||
foreach (Submarine sub in Submarine.MainSubs)
|
||||
if (campaign == null || campaign.IsFirstRound)
|
||||
{
|
||||
if (sub == null) { continue; }
|
||||
|
||||
List<PurchasedItem> spawnList = new List<PurchasedItem>();
|
||||
foreach (KeyValuePair<ItemPrefab, int> kvp in serverSettings.ExtraCargo)
|
||||
foreach (Submarine sub in Submarine.MainSubs)
|
||||
{
|
||||
spawnList.Add(new PurchasedItem(kvp.Key, kvp.Value, buyer: null));
|
||||
}
|
||||
if (sub == null) { continue; }
|
||||
|
||||
CargoManager.CreateItems(spawnList, sub, cargoManager: null);
|
||||
List<PurchasedItem> spawnList = new List<PurchasedItem>();
|
||||
foreach (KeyValuePair<ItemPrefab, int> kvp in serverSettings.ExtraCargo)
|
||||
{
|
||||
spawnList.Add(new PurchasedItem(kvp.Key, kvp.Value, buyer: null));
|
||||
}
|
||||
|
||||
CargoManager.CreateItems(spawnList, sub, cargoManager: null);
|
||||
}
|
||||
}
|
||||
|
||||
TraitorManager = null;
|
||||
|
||||
@@ -19,7 +19,8 @@ namespace Barotrauma.Networking
|
||||
if (Sender != null && c.InGame)
|
||||
{
|
||||
msg.Write(Sender.ID);
|
||||
}
|
||||
}
|
||||
msg.Write(false); //text color (no custom text colors for order messages)
|
||||
msg.WritePadBits();
|
||||
WriteOrder(msg);
|
||||
}
|
||||
|
||||
@@ -65,6 +65,8 @@ namespace Barotrauma.Steam
|
||||
Steamworks.SteamServer.SetKey("allowspectating", server.ServerSettings.AllowSpectating.ToString());
|
||||
Steamworks.SteamServer.SetKey("allowrespawn", server.ServerSettings.AllowRespawn.ToString());
|
||||
Steamworks.SteamServer.SetKey("traitors", server.ServerSettings.TraitorsEnabled.ToString());
|
||||
Steamworks.SteamServer.SetKey("friendlyfireenabled", server.ServerSettings.AllowFriendlyFire.ToString());
|
||||
Steamworks.SteamServer.SetKey("karmaenabled", server.ServerSettings.KarmaEnabled.ToString());
|
||||
Steamworks.SteamServer.SetKey("gamestarted", server.GameStarted.ToString());
|
||||
Steamworks.SteamServer.SetKey("gamemode", server.ServerSettings.GameModeIdentifier.Value);
|
||||
Steamworks.SteamServer.SetKey("playstyle", server.ServerSettings.PlayStyle.ToString());
|
||||
|
||||
Reference in New Issue
Block a user