Exemplo n.º 1
0
        public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data)
        {
            List <TriggerStruct> triggers = new List <TriggerStruct>();

            if (triggerEvent == TriggerEvent.EventPhaseStart && player.Phase == Player.PlayerPhase.Finish && base.Triggerable(player, room) &&
                !player.IsKongcheng() && ShefuVS.GuhuoCards(room, player).Count > 0)
            {
                triggers.Add(new TriggerStruct(Name, player));
            }
            else if (triggerEvent == TriggerEvent.CardUsed && data is CardUseStruct use && use.Card != null && use.To.Count > 0 && use.IsHandcard)
            {
                FunctionCard fcard = Engine.GetFunctionCard(use.Card.Name);
                if (fcard is SkillCard)
                {
                    return(triggers);
                }

                List <Player> chengyus  = RoomLogic.FindPlayersBySkillName(room, Name);
                string        card_name = fcard.Name;
                if (fcard is Slash)
                {
                    card_name = Slash.ClassName;
                }
                foreach (Player p in chengyus)
                {
                    if (p != player && p.Phase == Player.PlayerPhase.NotActive && p.ContainsTag(string.Format("shefu_{0}", card_name)) &&
                        p.GetTag(string.Format("shefu_{0}", card_name)) is int id && p.GetPile("ambush").Contains(id))
                    {
                        triggers.Add(new TriggerStruct(Name, p));
                    }
                }
            }
Exemplo n.º 2
0
        public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data)
        {
            List <TriggerStruct> triggers = new List <TriggerStruct>();

            if (triggerEvent == TriggerEvent.EventPhaseStart && player.Phase == PlayerPhase.Finish)
            {
                List <Player> hx = RoomLogic.FindPlayersBySkillName(room, Name);
                foreach (Player p in hx)
                {
                    if (p.HandcardNum < p.Hp)
                    {
                        triggers.Add(new TriggerStruct(Name, p));
                    }
                }
            }
            else if (triggerEvent == TriggerEvent.Damaged && player.Alive)
            {
                List <Player> hx = RoomLogic.FindPlayersBySkillName(room, Name);
                foreach (Player p in hx)
                {
                    if (p != player && p.Camp == player.Camp && !player.IsNude() && RoomLogic.CanDiscard(room, p, p, "he"))
                    {
                        triggers.Add(new TriggerStruct(Name, p));
                    }
                }
            }

            return(triggers);
        }
Exemplo n.º 3
0
        public override int GetCorrect(Room room, Player from, Player to, WrappedCard card = null)
        {
            int           distance = 0;
            List <Player> players  = RoomLogic.FindPlayersBySkillName(room, Name);

            foreach (Player p in players)
            {
                if (from.Camp == p.Camp)
                {
                    distance -= 1;
                }
            }

            return(distance);
        }
Exemplo n.º 4
0
        public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data)
        {
            List <TriggerStruct> triggers = new List <TriggerStruct>();
            List <Player>        nd       = RoomLogic.FindPlayersBySkillName(room, Name);

            foreach (Player p in nd)
            {
                if (p.MaxHp > 1)
                {
                    triggers.Add(new TriggerStruct(Name, p));
                }
            }

            return(triggers);
        }
Exemplo n.º 5
0
        public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data)
        {
            List <TriggerStruct> triggers = new List <TriggerStruct>();

            if (player.Alive && player.HasFlag("Global_Dying") && player.Hp < 1)
            {
                foreach (Player p in RoomLogic.FindPlayersBySkillName(room, Name))
                {
                    if (p.Camp == player.Camp && p.GetMark(limit_mark) > 0)
                    {
                        triggers.Add(new TriggerStruct(Name, p));
                    }
                }
            }
            return(triggers);
        }
Exemplo n.º 6
0
        public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data)
        {
            List <TriggerStruct> triggers = new List <TriggerStruct>();

            if (player.Alive && data is DamageStruct damage && damage.Card != null && damage.Card.Name.Contains(Slash.ClassName) &&
                !damage.Transfer && !damage.Chain)
            {
                List <Player> lords = RoomLogic.FindPlayersBySkillName(room, Name);
                foreach (Player p in lords)
                {
                    if (p.Camp == player.Camp)
                    {
                        triggers.Add(new TriggerStruct(name, p));
                    }
                }
            }
            return(triggers);
        }
Exemplo n.º 7
0
        public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data)
        {
            List <TriggerStruct> skill_list = new List <TriggerStruct>();

            if (player.Alive && player.Phase == PlayerPhase.Finish && player.HandcardNum < player.Hp)
            {
                List <Player> lifengs = RoomLogic.FindPlayersBySkillName(room, Name);
                foreach (Player p in lifengs)
                {
                    if (p.GetPile("commissariat").Count > 0)
                    {
                        TriggerStruct trigger = new TriggerStruct(Name, p);
                        skill_list.Add(trigger);
                    }
                }
            }
            return(skill_list);
        }
Exemplo n.º 8
0
        public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data)
        {
            List <TriggerStruct> triggers = new List <TriggerStruct>();

            if (data is DeathStruct death)
            {
                if (base.Triggerable(player, room))
                {
                    triggers.Add(new TriggerStruct(Name, player));
                }
                else if (death.Damage.From != null && death.Damage.From.Camp != player.Camp)
                {
                    foreach (Player p in RoomLogic.FindPlayersBySkillName(room, Name))
                    {
                        if (p.Camp == death.Damage.From.Camp)
                        {
                            triggers.Add(new TriggerStruct(Name, p));
                        }
                    }
                }
            }

            return(triggers);
        }