95 lines
3.4 KiB
C#
95 lines
3.4 KiB
C#
using System;
|
|
using System.Linq;
|
|
using Subsurface.Networking;
|
|
|
|
namespace Subsurface
|
|
{
|
|
class TraitorMode : GameMode
|
|
{
|
|
Client traitor;
|
|
Client target;
|
|
|
|
public TraitorMode(GameModePreset preset)
|
|
: base(preset)
|
|
{
|
|
|
|
}
|
|
|
|
public override void Start(TimeSpan duration)
|
|
{
|
|
base.Start(duration);
|
|
|
|
traitor = null;
|
|
target = null;
|
|
}
|
|
|
|
public override void Update(float deltaTime)
|
|
{
|
|
if (Game1.Server == null) return;
|
|
|
|
base.Update(deltaTime);
|
|
|
|
if (!isRunning) return;
|
|
|
|
|
|
if (traitor==null || target ==null)
|
|
{
|
|
int clientCount = Game1.Server.connectedClients.Count();
|
|
if (clientCount < 2) return;
|
|
|
|
int traitorIndex = Rand.Int(clientCount, false);
|
|
traitor = Game1.Server.connectedClients[traitorIndex];
|
|
|
|
int targetIndex = 0;
|
|
while (targetIndex == traitorIndex)
|
|
{
|
|
targetIndex = Rand.Int(clientCount, false);
|
|
}
|
|
target = Game1.Server.connectedClients[targetIndex];
|
|
|
|
|
|
Game1.Server.NewTraitor(traitor, target);
|
|
}
|
|
else
|
|
{
|
|
if (target.character.IsDead)
|
|
{
|
|
string endMessage = traitor.character.Info.Name + " was a traitor! ";
|
|
endMessage += (traitor.character.Info.Gender == Gender.Male) ? "His" : "Her";
|
|
endMessage += " task was to assassinate " + target.character.Info.Name + ". The task was succesful.";
|
|
End(endMessage);
|
|
}
|
|
else if (traitor.character.IsDead)
|
|
{
|
|
string endMessage = traitor.character.Info.Name + " was a traitor! ";
|
|
endMessage += (traitor.character.Info.Gender == Gender.Male) ? "His" : "Her";
|
|
endMessage += " task was to assassinate " + target.character.Info.Name + ", but ";
|
|
endMessage += (traitor.character.Info.Gender == Gender.Male) ? "he" : "she";
|
|
endMessage += " got " + ((traitor.character.Info.Gender == Gender.Male) ? "himself" : "herself");
|
|
endMessage += " killed before completing it.";
|
|
End(endMessage);
|
|
return;
|
|
}
|
|
else if (Level.Loaded.AtEndPosition)
|
|
{
|
|
string endMessage = traitor.character.Info.Name + " was a traitor! ";
|
|
endMessage += (traitor.character.Info.Gender == Gender.Male) ? "His" : "Her";
|
|
endMessage += " task was to assassinate " + target.character.Info.Name + ". ";
|
|
endMessage += "The task was unsuccessful - the has submarine reached its destination.";
|
|
End(endMessage);
|
|
return;
|
|
}
|
|
else if (DateTime.Now >= endTime)
|
|
{
|
|
string endMessage = traitor.character.Info.Name + " was a traitor! ";
|
|
endMessage += (traitor.character.Info.Gender == Gender.Male) ? "His" : "Her";
|
|
endMessage += " task was to assassinate " + target.character.Info.Name + ". The task was unsuccesful.";
|
|
End(endMessage);
|
|
return;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|