79 lines
2.8 KiB
C#
79 lines
2.8 KiB
C#
using Barotrauma.Extensions;
|
|
using Barotrauma.Networking;
|
|
|
|
namespace Barotrauma
|
|
{
|
|
partial class AbandonedOutpostMission : Mission
|
|
{
|
|
public override int State
|
|
{
|
|
get { return base.State; }
|
|
set
|
|
{
|
|
if (state != value)
|
|
{
|
|
base.State = value;
|
|
if (state == HostagesKilledState && !hostagesKilledMessage.IsNullOrEmpty())
|
|
{
|
|
CreateMessageBox(string.Empty, hostagesKilledMessage);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public override bool DisplayAsCompleted =>
|
|
!DisplayAsFailed &&
|
|
State > 0 &&
|
|
//don't display as completed mid-round if there's NPCs to rescue (mission isn't guaranteed to complete yet)
|
|
requireRescue.None();
|
|
|
|
public override bool DisplayAsFailed => State == HostagesKilledState;
|
|
|
|
public override void ClientReadInitial(IReadMessage msg)
|
|
{
|
|
base.ClientReadInitial(msg);
|
|
ushort targetItemCount = msg.ReadUInt16();
|
|
for (int i = 0; i < targetItemCount; i++)
|
|
{
|
|
var item = Item.ReadSpawnData(msg);
|
|
items.Add(item);
|
|
}
|
|
|
|
byte characterCount = msg.ReadByte();
|
|
|
|
for (int i = 0; i < characterCount; i++)
|
|
{
|
|
Character character = Character.ReadSpawnData(msg);
|
|
characters.Add(character);
|
|
if (msg.ReadBoolean()) { requireKill.Add(character); }
|
|
if (msg.ReadBoolean())
|
|
{
|
|
requireRescue.Add(character);
|
|
#if CLIENT
|
|
if (allowOrderingRescuees)
|
|
{
|
|
GameMain.GameSession.CrewManager?.AddCharacterToCrewList(character);
|
|
}
|
|
#endif
|
|
}
|
|
ushort itemCount = msg.ReadUInt16();
|
|
for (int j = 0; j < itemCount; j++)
|
|
{
|
|
Item.ReadSpawnData(msg);
|
|
}
|
|
if (character.AIController is EnemyAIController enemyAi && character.Submarine is Submarine ownSub)
|
|
{
|
|
enemyAi.SetUnattackableSubmarines(ownSub);
|
|
}
|
|
}
|
|
if (characters.Contains(null))
|
|
{
|
|
throw new System.Exception("Error in AbandonedOutpostMission.ClientReadInitial: character list contains null (mission: " + Prefab.Identifier + ")");
|
|
}
|
|
if (characters.Count != characterCount)
|
|
{
|
|
throw new System.Exception("Error in AbandonedOutpostMission.ClientReadInitial: character count does not match the server count (" + characters + " != " + characters.Count + "mission: " + Prefab.Identifier + ")");
|
|
}
|
|
}
|
|
}
|
|
} |