traitor hooks

This commit is contained in:
Evil Factory
2021-10-11 12:36:22 -03:00
parent 65f956741f
commit 8ba8b7c0c6
2 changed files with 12 additions and 1 deletions
@@ -92,6 +92,13 @@ namespace Barotrauma
var traitorCandidates = new List<Tuple<Client, Character>>(); var traitorCandidates = new List<Tuple<Client, Character>>();
foreach (Client c in server.ConnectedClients) foreach (Client c in server.ConnectedClients)
{ {
var result = new LuaResult(GameMain.Lua.hook.Call("traitor.findTraitorCandidate", new object[] { c, team }));
if (result.Bool())
{
traitorCandidates.Add(Tuple.Create(c, c.Character));
continue;
}
if (c.Character == null || c.Character.IsDead || c.Character.Removed || !traitorRoleFilter(c.Character) || if (c.Character == null || c.Character.IsDead || c.Character.Removed || !traitorRoleFilter(c.Character) ||
(team != CharacterTeamType.None && c.Character.TeamID != team)) (team != CharacterTeamType.None && c.Character.TeamID != team))
{ {
@@ -227,6 +234,7 @@ namespace Barotrauma
foreach (var traitor in Traitors.Values) foreach (var traitor in Traitors.Values)
{ {
traitor.Greet(server, CodeWords, CodeResponse, message => pendingMessages[traitor].Add(message)); traitor.Greet(server, CodeWords, CodeResponse, message => pendingMessages[traitor].Add(message));
GameMain.Lua.hook.Call("traitor.traitorAssigned", new object[] { traitor });
} }
pendingMessages.ForEach(traitor => traitor.Value.ForEach(message => traitor.Key.SendChatMessage(message, Identifier))); pendingMessages.ForEach(traitor => traitor.Value.ForEach(message => traitor.Key.SendChatMessage(message, Identifier)));
pendingMessages.ForEach(traitor => traitor.Value.ForEach(message => traitor.Key.SendChatMessageBox(message, Identifier))); pendingMessages.ForEach(traitor => traitor.Value.ForEach(message => traitor.Key.SendChatMessageBox(message, Identifier)));
@@ -392,6 +392,8 @@ namespace Barotrauma
UserData.RegisterType<Rand.RandSync>(); UserData.RegisterType<Rand.RandSync>();
UserData.RegisterType<Skill>(); UserData.RegisterType<Skill>();
UserData.RegisterType<SkillPrefab>(); UserData.RegisterType<SkillPrefab>();
UserData.RegisterType<TraitorMissionPrefab>();
UserData.RegisterType<TraitorMissionResult>();
UserData.RegisterType<World>(); UserData.RegisterType<World>();
UserData.RegisterType<Fixture>(); UserData.RegisterType<Fixture>();
@@ -412,7 +414,8 @@ namespace Barotrauma
AddCallMetaMember(UserData.RegisterType<SubmarineInfo>()); AddCallMetaMember(UserData.RegisterType<SubmarineInfo>());
#if SERVER #if SERVER
UserData.RegisterType<Traitor>();
UserData.RegisterType<Traitor.TraitorMission>();
#elif CLIENT #elif CLIENT
UserData.RegisterType<LuaGUI>(); UserData.RegisterType<LuaGUI>();
UserData.RegisterType<ChatBox>(); UserData.RegisterType<ChatBox>();