diff --git a/Subsurface/Source/Events/Missions/CombatMission.cs b/Subsurface/Source/Events/Missions/CombatMission.cs index 188f10c3f..02b9ff903 100644 --- a/Subsurface/Source/Events/Missions/CombatMission.cs +++ b/Subsurface/Source/Events/Missions/CombatMission.cs @@ -164,15 +164,6 @@ namespace Barotrauma foreach (Character character in Character.CharacterList) { - if (GameMain.NetworkMember != null && character == GameMain.NetworkMember.Character) - { - //ugly hack to switch the text in the mission popup to the team-specific description - if (GUIMessageBox.MessageBoxes.Count > 0 && GUIMessageBox.MessageBoxes.Peek().UserData as string == "missionstartmessage") - { - (GUIMessageBox.MessageBoxes.Peek() as GUIMessageBox).Text = Description; - } - } - if (character.TeamID == 1) { crews[0].Add(character); @@ -209,7 +200,7 @@ namespace Barotrauma } else { - if (subs[winner] != null && + if (winner>=0 && subs[winner] != null && (winner == 0 && subs[winner].AtStartPosition) || (winner == 1 && subs[winner].AtEndPosition) && crews[winner].Any(c => !c.IsDead && c.Submarine == subs[winner])) { @@ -220,6 +211,8 @@ namespace Barotrauma if (teamDead[0] && teamDead[1]) { + GameMain.GameSession.CrewManager.WinningTeam = 0; + winner = -1; if (GameMain.Server != null) GameMain.Server.EndGame(); } } diff --git a/Subsurface/Source/GameSession/GameModes/GameMode.cs b/Subsurface/Source/GameSession/GameModes/GameMode.cs index d104d6865..34ca97f4d 100644 --- a/Subsurface/Source/GameSession/GameModes/GameMode.cs +++ b/Subsurface/Source/GameSession/GameModes/GameMode.cs @@ -75,6 +75,8 @@ namespace Barotrauma isRunning = true; } + public virtual void MsgBox() { } + public virtual void Update(float deltaTime) { //if (!isRunning) return; diff --git a/Subsurface/Source/GameSession/GameModes/MissionMode.cs b/Subsurface/Source/GameSession/GameModes/MissionMode.cs index 243e6af89..e84fc9769 100644 --- a/Subsurface/Source/GameSession/GameModes/MissionMode.cs +++ b/Subsurface/Source/GameSession/GameModes/MissionMode.cs @@ -29,10 +29,8 @@ namespace Barotrauma mission = Mission.LoadRandom(locations, rand, param as string); } - public override void Start() + public override void MsgBox() { - base.Start(); - if (mission == null) return; var missionMsg = new GUIMessageBox(mission.Name, mission.Description, 400, 400); diff --git a/Subsurface/Source/GameSession/GameSession.cs b/Subsurface/Source/GameSession/GameSession.cs index cc5fb63ea..fb61b9206 100644 --- a/Subsurface/Source/GameSession/GameSession.cs +++ b/Subsurface/Source/GameSession/GameSession.cs @@ -170,6 +170,8 @@ namespace Barotrauma TaskManager.StartShift(level); + if (gameMode != null) gameMode.MsgBox(); + GameMain.GameScreen.ColorFade(Color.Black, Color.TransparentBlack, 5.0f); SoundPlayer.SwitchMusic(); } diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 86109cbb3..efbe0d8ec 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -950,8 +950,7 @@ namespace Barotrauma.Networking teamClients[i].Character.TeamID = (byte)teamID; } - - //host plays in team 1 + if (characterInfo != null && teamID == hostTeam) { myCharacter = Character.Create(characterInfo, assignedWayPoints[assignedWayPoints.Length - 1].WorldPosition, false, false);