public override void OnEvent(TrustedAI ai, TriggerEvent triggerEvent, Player player, object data) { if (triggerEvent == TriggerEvent.ChoiceMade && data is string str) { Room room = ai.Room; string[] strs = str.Split(':'); if (str.StartsWith("playerChosen:shenfu") && strs[1] == Name && player.HandcardNum % 2 == 1) { Player target = room.FindPlayer(strs[2]); if (ai.GetPlayerTendency(target) != "unknown" && ai is StupidAI _ai && !_ai.NeedDamage(new DamageStruct(Name, player, target, 1, DamageStruct.DamageNature.Thunder))) { ai.UpdatePlayerRelation(player, target, false); } } else if (str.StartsWith("skillChoice:shenfu") && strs[1] == Name) { Player target = null; foreach (Player p in room.GetAlivePlayers()) { if (p.HasFlag("shenfu_target")) { target = p; break; } } if (ai.GetPlayerTendency(target) != "unknown" && strs[2] == "draw") { ai.UpdatePlayerRelation(player, target, true); } } else if (str.StartsWith("cardChosen:shenfu") && strs[1] == Name) { int id = int.Parse(strs[2]); Player target = room.FindPlayer(strs[4]); if (ai.GetPlayerTendency(target) != "unknown") { if (room.GetCardPlace(id) == Player.Place.PlaceHand) { ai.UpdatePlayerRelation(player, target, false); } else if (room.GetCardPlace(id) == Player.Place.PlaceEquip) { bool friendly = ai.GetKeepValue(id, target, Player.Place.PlaceEquip) > 0; ai.UpdatePlayerRelation(player, target, friendly); } } } } }
public override void OnEvent(TrustedAI ai, TriggerEvent triggerEvent, Player player, object data) { if (triggerEvent == TriggerEvent.ChoiceMade && data is string choice) { string[] choices = choice.Split(':'); if (choices[1] == Name) { Room room = ai.Room; int id = int.Parse(choices[2]); Player target = room.FindPlayer(choices[4]); if (player != target && ai.GetPlayerTendency(target) != "unknown") { if (room.GetCardPlace(id) == Player.Place.PlaceDelayedTrick) { ai.UpdatePlayerRelation(player, target, true); } else { bool friend = ai.GetKeepValue(id, target, Player.Place.PlaceEquip) < 0; ai.UpdatePlayerRelation(player, target, friend); } } } } }
public override void OnEvent(TrustedAI ai, TriggerEvent triggerEvent, Player player, object data) { if (triggerEvent == TriggerEvent.ChoiceMade && data is string str && player != ai.Self) { List <string> strs = new List <string>(str.Split(':')); if (strs[1] == Name && strs[2] == "yes") { Room room = ai.Room; Player target = null; foreach (Player p in room.GetAlivePlayers()) { if (p.HasFlag("Global_Dying")) { target = p; break; } } if (ai.GetPlayerTendency(target) != "unknown") { ai.UpdatePlayerRelation(player, target, true); } } } }
public override void OnEvent(TrustedAI ai, TriggerEvent triggerEvent, Player player, object data) { if (triggerEvent == TriggerEvent.ChoiceMade && data is string str) { Room room = ai.Room; string[] strs = str.Split(':'); if (strs[1] == Name) { Player target = room.Current; if (ai is SmartAI && player != ai.Self) { if (ai.GetPlayerTendency(target) == "unknown") { ai.UpdatePlayerRelation(player, target, true); } } else if (ai is StupidAI _ai) { if (_ai.GetPlayerTendency(target) != "unknown") { _ai.UpdatePlayerRelation(player, target, true); } } } } }
public override void OnEvent(TrustedAI ai, TriggerEvent triggerEvent, Player player, object data) { Room room = ai.Room; if (triggerEvent == TriggerEvent.CardTargetAnnounced && data is CardUseStruct use) { if (ai is SmartAI && ai.Self != player) { if (!player.HasShownOneGeneral()) { string role = (Scenario.Hegemony.WillbeRole(room, player) != "careerist" ? player.Kingdom : "careerist"); ai.UpdatePlayerIntention(player, role, 100); } foreach (Player p in use.To) { ai.UpdatePlayerRelation(player, p, false); } } else if (ai is StupidAI) { foreach (Player p in use.To) { if (ai.GetPlayerTendency(p) != "unknown") { ai.UpdatePlayerRelation(player, p, false); } } } } }
public override void OnEvent(TrustedAI ai, TriggerEvent triggerEvent, Player player, object data) { if (triggerEvent == TriggerEvent.ChoiceMade && data is string str) { Room room = ai.Room; string[] strs = str.Split(':'); if (str.StartsWith("playerChosen:cuike") && strs[1] == Name) { Player target = room.FindPlayer(strs[2]); if (ai.GetPlayerTendency(target) != "unknown" && ai is StupidAI _ai) { if (!player.HasFlag(Name) && !_ai.NeedDamage(new DamageStruct(Name, player, target))) { ai.UpdatePlayerRelation(player, target, false); } else if (player.HasFlag(Name) && player.IsAllNude()) { ai.UpdatePlayerRelation(player, target, false); } } } else if (str.StartsWith("cardChosen:cuike")) { int id = int.Parse(strs[2]); Player target = room.FindPlayer(strs[3]); if (ai.GetPlayerTendency(target) != "unknown") { if (room.GetCardPlace(id) == Player.Place.PlaceEquip) { ai.UpdatePlayerRelation(player, target, ai.GetKeepValue(id, target) > 0); } else if (room.GetCardPlace(id) == Player.Place.PlaceDelayedTrick) { ai.UpdatePlayerRelation(player, target, true); } else { ai.UpdatePlayerRelation(player, target, false); } } } } }
public override void OnEvent(TrustedAI ai, TriggerEvent triggerEvent, Player player, object data) { if (triggerEvent == TriggerEvent.CardTargetAnnounced && data is CardUseStruct use) { Player target = use.To[0]; if (ai.GetPlayerTendency(target) != "unknown") { ai.UpdatePlayerRelation(player, target, false); } } }
public override void OnEvent(TrustedAI ai, TriggerEvent triggerEvent, Player player, object data) { if (data is string choice) { string[] choices = choice.Split(':'); if (choices[1] == Name) { Room room = ai.Room; Player target = room.FindPlayer(choices[2]); if (target != null && ai.GetPlayerTendency(target) != "unknown") { ai.UpdatePlayerRelation(player, target, true); } } } }
public override void OnEvent(TrustedAI ai, TriggerEvent triggerEvent, Player player, object data) { if (triggerEvent == TriggerEvent.ChoiceMade && data is string choice) { string[] choices = choice.Split(':'); if (choices[1] == Name) { string name = choices[2]; Player to = ai.Room.FindPlayer(name); if (to != null) { if (ai.GetPlayerTendency(to) != "unknown") { ai.UpdatePlayerRelation(player, to, true); } } } } }
public override void OnEvent(TrustedAI ai, TriggerEvent triggerEvent, Player player, object data) { if (triggerEvent == TriggerEvent.ChoiceMade && data is string choice && ai.Self != player) { string[] choices = choice.Split(':'); if (choices[1] == Name) { string name = choices[2]; Player to = ai.Room.FindPlayer(name); if (to != null) { if (ai.GetPossibleId(player).Count == 1 && ai.GetPlayerTendency(to) == "unknown" && ai.IsKnown(player, to) && !to.HasShownOneGeneral()) { ai.UpdatePlayerRelation(player, to, true); } } } } }
public override void Use(TrustedAI ai, Player player, ref CardUseStruct use, WrappedCard card) { ai.Choice["shangyi"] = null; Room room = ai.Room; foreach (Player p in room.GetOtherPlayers(player)) { if (ai.GetPlayerTendency(p) == "unknown") { ai.Choice["shangyi"] = "hidden_general"; use.Card = card; use.To = new List <Player> { p }; return; } } List <Player> enemies = ai.GetPrioEnemies(); ai.SortByDefense(ref enemies, false); foreach (Player p in enemies) { if (p.HandcardNum - ai.GetKnownCards(p).Count > 2) { ai.Choice[Name] = "handcards"; use.Card = card; use.To = new List <Player> { p }; return; } } enemies = ai.GetEnemies(player); ai.SortByDefense(ref enemies, false); foreach (Player p in enemies) { if (p.HandcardNum - ai.GetKnownCards(p).Count > 2) { ai.Choice["shangyi"] = "handcards"; use.Card = card; use.To = new List <Player> { p }; return; } } foreach (Player p in enemies) { if (p.HandcardNum > ai.GetKnownCards(p).Count) { ai.Choice["shangyi"] = "handcards"; use.Card = card; use.To = new List <Player> { p }; return; } } }