Пример #1
0
 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);
                 }
             }
         }
     }
 }
Пример #2
0
        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);
                        }
                    }
                }
            }
        }
Пример #3
0
        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);
                        }
                    }
                }
            }
        }
Пример #6
0
 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);
                 }
             }
         }
     }
 }
Пример #7
0
 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);
         }
     }
 }
Пример #8
0
        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);
                 }
             }
         }
     }
 }
Пример #10
0
 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);
                 }
             }
         }
     }
 }
Пример #11
0
        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;
                }
            }
        }