예제 #1
0
        public override bool OnSkillInvoke(TrustedAI ai, Player player, object data)
        {
            Room room  = ai.Room;
            int  count = 0;
            List <WrappedCard> analeptics = ai.GetCards(Analeptic.ClassName, player, true);

            analeptics.AddRange(ai.GetCards(Peach.ClassName, player, true));
            foreach (WrappedCard card in analeptics)
            {
                if (!RoomLogic.IsCardLimited(room, player, card, HandlingMethod.MethodUse) && RoomLogic.IsProhibited(room, player, player, card) == null)
                {
                    count++;
                }
            }

            if (count >= 1 - player.Hp)
            {
                return(false);
            }

            return(true);
        }
예제 #2
0
        public override CardUseStruct OnResponding(TrustedAI ai, Player player, string pattern, string prompt, object data)
        {
            Room          room   = ai.Room;
            Player        caocao = room.FindPlayer(prompt.Split(':')[1]);
            CardUseStruct use    = new CardUseStruct(null, player, new List <Player>());

            if (caocao != null && ai.IsFriend(caocao))
            {
                object       reason = room.GetTag("current_Jink");
                DamageStruct damage = new DamageStruct();
                if (reason is SlashEffectStruct slash)
                {
                    damage.From   = slash.From;
                    damage.To     = slash.To;
                    damage.Card   = slash.Slash;
                    damage.Damage = slash.Drank + 1;
                    damage.Nature = DamageStruct.DamageNature.Normal;
                    if (damage.Card.Name == FireSlash.ClassName)
                    {
                        damage.Nature = DamageStruct.DamageNature.Fire;
                    }
                    else if (damage.Card.Name == ThunderSlash.ClassName)
                    {
                        damage.Nature = DamageStruct.DamageNature.Thunder;
                    }
                }
                else if (reason is CardEffectStruct effect)
                {
                    damage.From   = effect.From;
                    damage.To     = effect.To;
                    damage.Card   = effect.Card;
                    damage.Damage = 1;
                    damage.Nature = DamageStruct.DamageNature.Normal;
                }

                List <WrappedCard> jinks = ai.GetCards("Jink", player);
                ScoreStruct        score = ai.GetDamageScore(damage);
                if (score.Score < -5 && jinks.Count > 0)
                {
                    use.Card = jinks[0];
                }
                else if (score.Score < 0 && jinks.Count > 1)
                {
                    use.Card = jinks[0];
                }
            }

            return(use);
        }