v0.18.15.0

This commit is contained in:
Regalis11
2022-07-14 16:54:36 +03:00
parent 497045de7e
commit 4a03ee5ab2
36 changed files with 240 additions and 151 deletions
@@ -1598,10 +1598,11 @@ namespace Barotrauma.Networking
outmsg.Write((UInt16)subList.Count);
for (int i = 0; i < subList.Count; i++)
{
outmsg.Write(subList[i].Name);
outmsg.Write(subList[i].MD5Hash.ToString());
outmsg.Write((byte)subList[i].SubmarineClass);
outmsg.Write(subList[i].RequiredContentPackagesInstalled);
var sub = subList[i];
outmsg.Write(sub.Name);
outmsg.Write(sub.MD5Hash.ToString());
outmsg.Write((byte)sub.SubmarineClass);
outmsg.Write(sub.RequiredContentPackagesInstalled);
}
outmsg.Write(GameStarted);
@@ -2030,12 +2031,15 @@ namespace Barotrauma.Networking
GameModePreset selectedMode = Voting.HighestVoted<GameModePreset>(VoteType.Mode, connectedClients);
if (selectedMode == null) { selectedMode = GameMain.NetLobbyScreen.SelectedMode; }
if (selectedMode == null)
{
return false;
}
if (selectedMode == GameModePreset.MultiPlayerCampaign && !(GameMain.GameSession?.GameMode is CampaignMode))
{
DebugConsole.ThrowError("StartGame failed. Cannot start a multiplayer campaign via StartGame - use MultiPlayerCampaign.StartNewCampaign or MultiPlayerCampaign.LoadCampaign instead.");
return false;
}
initiatedStartGame = true;
startGameCoroutine = CoroutineManager.StartCoroutine(InitiateStartGame(selectedSub, selectedShuttle, selectedMode), "InitiateStartGame");
@@ -2122,11 +2126,17 @@ namespace Barotrauma.Networking
yield return CoroutineStatus.Failure;
}
bool initialSuppliesSpawned = false;
//don't instantiate a new gamesession if we're playing a campaign
if (campaign == null || GameMain.GameSession == null)
{
GameMain.GameSession = new GameSession(selectedSub, "", selectedMode, settings, GameMain.NetLobbyScreen.LevelSeed, missionType: GameMain.NetLobbyScreen.MissionType);
}
else
{
initialSuppliesSpawned = GameMain.GameSession.SubmarineInfo is { InitialSuppliesSpawned: true };
}
List<Client> playingClients = new List<Client>(connectedClients);
if (serverSettings.AllowSpectating)
@@ -2409,18 +2419,16 @@ namespace Barotrauma.Networking
campaign?.CargoManager.InitPurchasedIDCards();
if (campaign == null || campaign.IsFirstRound)
if (campaign == null || !initialSuppliesSpawned)
{
foreach (Submarine sub in Submarine.MainSubs)
{
if (sub == null) { continue; }
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);
}
}