Fixed mutliplayer-only missions being taken into account in the eventprobability calculation even in single player mode, which missions are sp/mp-only is determined in the mission config files
This commit is contained in:
@@ -178,11 +178,12 @@
|
|||||||
<CombatMission
|
<CombatMission
|
||||||
name="Search and Destroy"
|
name="Search and Destroy"
|
||||||
description="[location1] and [location2] are at war! Eliminate the enemy crew and return to base."
|
description="[location1] and [location2] are at war! Eliminate the enemy crew and return to base."
|
||||||
commonness="100"
|
multiplayeronly="true"
|
||||||
|
commonness="20"
|
||||||
reward="2000"
|
reward="2000"
|
||||||
successmessage="[winner] has defeated [loser]!"
|
successmessage="[winner] has defeated [loser]!"
|
||||||
failuremessage="Both crews have perished.">
|
failuremessage="Both crews have perished.">
|
||||||
<message header="Crew eliminated" text="[location1] has fallen! Navigate back to your base."/>
|
<message header="Crew eliminated" text="[location1] has fallen! Navigate back to your base."/>
|
||||||
<message header="Crew eliminated" text="[location2] has fallen! Navigate back to your base."/>
|
<message header="Crew eliminated" text="[location2] has fallen! Navigate back to your base."/>
|
||||||
</CombatMission>
|
</CombatMission>
|
||||||
</Missions>
|
</Missions>
|
||||||
@@ -8,7 +8,7 @@ using System.Xml.Linq;
|
|||||||
|
|
||||||
namespace Barotrauma
|
namespace Barotrauma
|
||||||
{
|
{
|
||||||
class CargoMission : Mission, SinglePlayerMission
|
class CargoMission : Mission
|
||||||
{
|
{
|
||||||
private XElement itemConfig;
|
private XElement itemConfig;
|
||||||
|
|
||||||
|
|||||||
@@ -74,6 +74,12 @@ namespace Barotrauma
|
|||||||
GameMain.Server.AllowRespawn = false;
|
GameMain.Server.AllowRespawn = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (GameMain.NetworkMember == null)
|
||||||
|
{
|
||||||
|
DebugConsole.ThrowError("Combat missions cannot be played in the single player mode.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Items.Components.Radar.StartMarker = Locations[0];
|
Items.Components.Radar.StartMarker = Locations[0];
|
||||||
Items.Components.Radar.EndMarker = Locations[1];
|
Items.Components.Radar.EndMarker = Locations[1];
|
||||||
TeamASub = Submarine.MainSubs[0];
|
TeamASub = Submarine.MainSubs[0];
|
||||||
@@ -159,6 +165,8 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public override void End()
|
public override void End()
|
||||||
{
|
{
|
||||||
|
if (GameMain.NetworkMember==null) return;
|
||||||
|
|
||||||
bool ADead = TeamACrew.All(c => c.IsDead || c.IsUnconscious);
|
bool ADead = TeamACrew.All(c => c.IsDead || c.IsUnconscious);
|
||||||
bool BDead = TeamBCrew.All(c => c.IsDead || c.IsUnconscious);
|
bool BDead = TeamBCrew.All(c => c.IsDead || c.IsUnconscious);
|
||||||
|
|
||||||
|
|||||||
@@ -148,7 +148,14 @@ namespace Barotrauma
|
|||||||
matchingElements = doc.Root.Elements().ToList().FindAll(m => m.Name.ToString().ToLowerInvariant().Replace("mission", "") == missionType);
|
matchingElements = doc.Root.Elements().ToList().FindAll(m => m.Name.ToString().ToLowerInvariant().Replace("mission", "") == missionType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isSinglePlayer)
|
||||||
|
{
|
||||||
|
matchingElements.RemoveAll(m => ToolBox.GetAttributeBool(m, "multiplayeronly", false));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
matchingElements.RemoveAll(m => ToolBox.GetAttributeBool(m, "singleplayeronly", false));
|
||||||
|
}
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
foreach (XElement element in matchingElements)
|
foreach (XElement element in matchingElements)
|
||||||
@@ -185,8 +192,6 @@ namespace Barotrauma
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSinglePlayer && t.GetInterface("Barotrauma.SinglePlayerMission")==null) continue;
|
|
||||||
|
|
||||||
ConstructorInfo constructor = t.GetConstructor(new[] { typeof(XElement) });
|
ConstructorInfo constructor = t.GetConstructor(new[] { typeof(XElement) });
|
||||||
|
|
||||||
object instance = constructor.Invoke(new object[] { element });
|
object instance = constructor.Invoke(new object[] { element });
|
||||||
@@ -253,9 +258,4 @@ namespace Barotrauma
|
|||||||
mode.Money += reward;
|
mode.Money += reward;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface SinglePlayerMission
|
|
||||||
{
|
|
||||||
//all valid single player missions should inherit this
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ using System.Xml.Linq;
|
|||||||
|
|
||||||
namespace Barotrauma
|
namespace Barotrauma
|
||||||
{
|
{
|
||||||
class MonsterMission : Mission, SinglePlayerMission
|
class MonsterMission : Mission
|
||||||
{
|
{
|
||||||
private string monsterFile;
|
private string monsterFile;
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ using System.Xml.Linq;
|
|||||||
|
|
||||||
namespace Barotrauma
|
namespace Barotrauma
|
||||||
{
|
{
|
||||||
class SalvageMission : Mission, SinglePlayerMission
|
class SalvageMission : Mission
|
||||||
{
|
{
|
||||||
private ItemPrefab itemPrefab;
|
private ItemPrefab itemPrefab;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user