Пример #1
0
        /// <summary>
        /// 从牌堆取出一张牌作为判定牌
        /// </summary>
        /// <param name="aChief">判定的武将对象</param>
        /// <param name="aEffect">要判定的效果</param>
        /// <returns>一张判定牌</returns>
        internal Card popJudgementCard(ChiefBase aChief, Card.Effect aEffect)
        {
            Card c = CardsHeap.Pop(); //取一张牌

            AsynchronousCore.SendMessage(
                new Beaver("judgmentcard", aChief.ChiefName, aEffect.ToString(), Card.Cards2Beaver("cards", new Card[] { c })).ToString());
            //new XElement("judgmentcard",
            //    new XElement("target", aChief.ChiefName),
            //    new XElement("effect", aEffect),
            //    Card.Cards2XML("cards", new Card[] { c })
            //)); //发送揭出判定牌的消息
            ChiefBase t = aChief; //现在从判定牌持有的玩家开始,轮询武将OnChiefJudgementCardShow_Turn方法

            do
            {
                foreach (ASkill s in t.Skills)
                {
                    c = s.OnChiefJudgementCardShow_Turn(aChief, c, t, gData);
                }
                t = t.Next;
            }while (t != aChief);
            c.CardEffect = aEffect;
            //最后这里设定判定牌的性质是考虑之前判定牌不确定的因素
            return(c);
        }
Пример #2
0
 public override void OnUseEffect(ChiefBase aChief, Card.Effect aEffect, GlobalData aData)
 {
     if (aEffect == Card.Effect.Sha && OnLeading)
     {
         UseShaEffect = true;
     }
 }
Пример #3
0
 public static MessageCore.AskForResult AskFor(Card.Effect aAskFor, Card.Effect aCardEffect, ChiefBase aOwner, GlobalData aData)
 {
     switch (aCardEffect)
     {
     //八卦阵
     case  Card.Effect.BaGuaZhen:
         if (aAskFor == Card.Effect.Shan)
         {
             aData.Game.AsynchronousCore.SendMessage(
                 new Beaver("askfor.armor.effect", aOwner.ChiefName).ToString()
                 //new XElement("askfor.armor.effect",
                 //    new XElement("target" , aOwner.ChiefName ))
                 );
             MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForYN(aOwner);
             if (res.YN == true)
             {
                 Card ret = aData.Game.popJudgementCard(aOwner, Card.Effect.BaGuaZhen);
                 aData.Game.DropCards(true, GlobalEvent.CardFrom.JudgementCard, res.SkillName, new Card[] { ret }, Card.Effect.None, aOwner, null, null);
                 if (ret.CardHuaSe == Card.Suit.FangPian || ret.CardHuaSe == Card.Suit.HongTao)
                 {
                     return(new MessageCore.AskForResult(false, aOwner, new ChiefBase[0] {
                     }, new Card[] { ret }, Card.Effect.Shan, false, false, string.Empty));
                 }
                 else
                 {
                     return(new MessageCore.AskForResult(false, aOwner, new ChiefBase[0] {
                     }, new Card[] { ret }, Card.Effect.None, false, false, string.Empty));
                 }
             }
         }
         break;
     }
     return(new MessageCore.AskForResult(false, aOwner, new ChiefBase[0] {
     }, new Card[] { }, Card.Effect.None, false, false, string.Empty));
 }
Пример #4
0
        /// <summary>
        /// 在游戏事件层对出牌进行调整的方法
        /// </summary>
        /// <param name="aWeaponEffect"></param>
        /// <param name="aCardsEffect"></param>
        /// <param name="aCards"></param>
        /// <param name="aData"></param>
        /// <param name="aSource"></param>
        /// <param name="aTarget"></param>
        /// <returns></returns>
        public static Card[] Lead(Card.Effect aWeaponEffect, Card.Effect aCardsEffect, Card[] aCards, GlobalData aData, ChiefBase aSource, ChiefBase aTarget)
        {
            switch (aWeaponEffect)
            {
            case Card.Effect.ZhuQueYuShan:
                if (aCardsEffect == Card.Effect.Sha && aCards.Count() == 1 && aCards[0].Element == Card.ElementType.None)
                {
                    aData.Game.AsynchronousCore.SendMessage(
                        new Beaver("askfor.weapon.effect", aSource.ChiefName).ToString());
                    //new XElement("askfor.weapon.effect",
                    //    new XElement("target" , aSource.ChiefName)
                    //    )
                    //);
                    MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForYN(aSource);
                    if (res.YN == true)
                    {
                        aCards[0].Element = Card.ElementType.Fire;
                    }
                }
                break;

            case Card.Effect.CiXiongShuangGuJian:
                if (aCardsEffect == Card.Effect.Sha && aSource != null && aTarget != null && (aSource.Sex != aTarget.Sex))
                {
                    aData.Game.AsynchronousCore.SendMessage(
                        new Beaver("askfor.weapon.effect", aSource.ChiefName).ToString());
                    //new XElement("askfor.weapon.effect",
                    //    new XElement("target", aSource.ChiefName)
                    //    )
                    //);
                    MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForYN(aSource);
                    if (res.YN == true)
                    {
                        if (aData.Game.GamePlayers[aTarget].Hands.Count != 0)
                        {
                            aData.Game.AsynchronousCore.SendMessage(
                                new Beaver("askfor.cxsgj.select", aTarget.ChiefName).ToString());
                            //new XElement("askfor.cxsgj.select",
                            //    new XElement("target", aTarget.ChiefName)
                            //    )
                            //);
                            res = aData.Game.AsynchronousCore.AskForCards(aTarget, MessageCore.AskForEnum.TargetHand, aTarget);
                            aData.Game.AsynchronousCore.LeadingValid(aTarget);
                        }
                        if (aData.Game.GamePlayers[aTarget].Hands.Count == 0 || res.Effect == Card.Effect.None)
                        {
                            aData.Game.TakeingCards(aSource, 1);
                        }
                        else
                        {
                            aData.Game.DropCards(true, GlobalEvent.CardFrom.Hand, string.Empty, res.Cards, Card.Effect.None, aTarget, aSource, null);
                            //aData.Game.RemoveHand(aTarget, res.Cards);
                        }
                    }
                }
                break;
            }
            return(aCards);
        }
Пример #5
0
 /// <summary>
 /// 激活出牌玩家的武器,使得出牌玩家的某些特性改变
 /// </summary>
 /// <param name="aWeaponEffect">武器效果</param>
 /// <param name="aData">游戏数据</param>
 public static void ActiveWeapon(Card.Effect aWeaponEffect, GlobalData aData)
 {
     switch (aWeaponEffect)
     {
     case Card.Effect.ZhuGeLianNu:
         aData.ShaNoLimit = true;
         break;
     }
 }
Пример #6
0
 /// <summary>
 /// 卸载武器触发的方法
 /// </summary>
 /// <param name="aWeaponEffect">武器效果</param>
 /// <param name="aData">游戏数据</param>
 public static void UnloadWeapon(Card.Effect aWeaponEffect, GlobalData aData)
 {
     switch (aWeaponEffect)
     {
     case Card.Effect.ZhuGeLianNu:
         aData.ShaNoLimit = false;
         break;
     }
 }
Пример #7
0
 /// <summary>
 /// 创建事件节点
 /// </summary>
 /// <param name="aSource">事件源</param>
 /// <param name="aTarget">事件目标</param>
 /// <param name="aTarget2">事件的第二个目标</param>
 /// <param name="aCards">源出的牌</param>
 /// <param name="aEffect">事件的效果</param>
 /// <param name="aSkillName">发动的技能名称</param>
 public EventRecoard(ChiefBase aSource, ChiefBase aTarget, ChiefBase aTarget2, Card[] aCards, Card.Effect aEffect, string aSkillName)
 {
     Source    = aSource;
     Target    = aTarget;
     Cards     = aCards;
     Effect    = aEffect;
     Target2   = aTarget2;
     SkillName = aSkillName;
 }
Пример #8
0
 public override bool EffectFeasible(Card[] aCards, Card.Effect aEffect, ChiefBase aTarget, bool aFeasible, GlobalData aData)
 {
     switch (aEffect)
     {
     case Card.Effect.ShunShouQianYang:
     case Card.Effect.LeBuSiShu:
         return(false);
     }
     return(aFeasible);
 }
Пример #9
0
 public static bool EnableTargetArmorWithMessage(Card.Effect aWeaponEffect, ChiefBase aSource, ChiefBase aTarget, GlobalData aData)
 {
     switch (aWeaponEffect)
     {
     case Card.Effect.QingGangJian:
         //aData.Game.AskCore.SendMessage(new XElement("青刚剑"));
         break;
     }
     return(EnableTargetArmor(aWeaponEffect, aSource, aTarget));
 }
Пример #10
0
 /// <summary>
 /// 用户检测用户的判定区是否有该类型的Debuff
 /// </summary>
 /// <param name="aEffect">要查找的效果</param>
 /// <returns></returns>
 internal bool HasDebuff(Card.Effect aEffect)
 {
     foreach (Card c in Debuff)
     {
         if (c.CardEffect == aEffect)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #11
0
 /// <summary>
 /// 问询结果
 /// </summary>
 /// <param name="aTimeout">是否超时</param>
 /// <param name="aLeader">问询目标</param>
 /// <param name="aTargets">目标的目标</param>
 /// <param name="aCards">问询目标出牌</param>
 /// <param name="aEffect">出牌的效果</param>
 /// <param name="aYN">问询的是否结果</param>
 /// <param name="aPlayerLead">问询是否是玩家所选出牌,针对八卦阵</param>
 /// <param name="aSkillName">问询引发的技能名称</param>
 public AskForResult(bool aTimeout, ChiefBase aLeader, ChiefBase[] aTargets, Card[] aCards, Card.Effect aEffect, bool aYN, bool aPlayerLead, string aSkillName)
 {
     TimeOut    = aTimeout;
     Leader     = aLeader;
     Targets    = aTargets;
     Cards      = aCards;
     Effect     = aEffect;
     YN         = aYN;
     PlayerLead = aPlayerLead;
     SkillName  = aSkillName;
 }
Пример #12
0
    public void UpdateCardVisuals()
    {
        for (int i = 0; i < players.Count; i++)
        {
            int MAX_CARDS_IN_HAND = players[i].handState.GetMaxCards();

            for (int k = 0; k < MAX_CARDS_IN_HAND; k++)
            {
                Card        card          = players[i].handState.GetCardInIndex(k);
                Card.Effect currentEffect = card.effect;
                CardType    currentCard   = null;
                for (int j = 0; j < cardTypes.Count; j++)
                {
                    if (cardTypes[j].cardType == currentEffect)
                    {
                        currentCard = cardTypes[j];
                        break;
                    }
                    else
                    {
                        continue;
                    }
                }
                if (currentCard != null)
                {
                    Sprite _cardArt  = null;
                    Sprite _artwork  = null;
                    Sprite _manaCost = null;

                    //Card visuals, red or blue:
                    if (i == 0)
                    {
                        _cardArt = blueCard;
                    }
                    else if (i == 1)
                    {
                        _cardArt = redCard;
                    }

                    //Card artwork visuals:
                    _artwork = currentCard.artwork;

                    //Manacost visuals:
                    int manaCost = Mathf.FloorToInt(currentCard.manaCost) / 10;
                    _manaCost = (Sprite)numbers.GetValue(manaCost);
                    cardVisuals[i][k].RefreshCard(_cardArt, _artwork, _manaCost);
                }
                else
                {
                    Debug.Log("Currentcard is null");
                }
            }
        }
    }
Пример #13
0
 /// <summary>
 /// 在服务实例的回应中对牌的操作
 /// </summary>
 /// <param name="aWeaponEffect">武器效果</param>
 /// <param name="aCards">玩家的出牌</param>
 /// <param name="aChief">出牌武将</param>
 /// <param name="aTargets">武将目标</param>
 /// <param name="aAskFor">问询内容</param>
 /// <param name="aEffect">最终定义的牌效果</param>
 /// <param name="aData">游戏数据</param>
 public static void LeadCards(Card.Effect aWeaponEffect, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     switch (aWeaponEffect)
     {
     case Card.Effect.ZhangBaSheMao:
         if (aEffect == Card.Effect.None && aCards.Count() == 2 && aData.Game.GamePlayers[aChief].HasCardsInHand(aCards))
         {
             aEffect = Card.Effect.Sha;
         }
         break;
     }
 }
Пример #14
0
        public static bool EnableTargetArmor(Card.Effect aWeaponEffect, ChiefBase aSource, ChiefBase aTarget)
        {
            bool ret = true;

            switch (aWeaponEffect)
            {
            case Card.Effect.QingGangJian:
                ret = false;
                break;
            }
            return(ret);
        }
Пример #15
0
 public override sbyte CalcRescuePoint(ChiefBase aChief, ChiefBase aRescuer, Card.Effect aEffect, sbyte aOldPoint, GlobalData aData)
 {
     if (aRescuer != null && aData.Game.GamePlayers[aRescuer].Chief.ChiefCamp == ChiefBase.Camp.Wu && aEffect == Card.Effect.Tao)
     {
         aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, new ChiefBase[] { }, new Card[] { }));
         return(++aOldPoint);
     }
     else
     {
         return(aOldPoint);
     }
 }
Пример #16
0
        /// <summary>
        /// 获取武器对象的攻击范围值
        /// </summary>
        /// <param name="aWeapon">武器效果</param>
        /// <returns>武器的攻击范围</returns>
        public static sbyte WeaponRange(Card.Effect aWeapon)
        {
            sbyte ret = 1;

            switch (aWeapon)
            {
            case Card.Effect.ZhangBaSheMao:
                ret = 3;
                break;

            case Card.Effect.GuanShiFu:
                ret = 3;
                break;

            case Card.Effect.QingLongYanYueDao:
                ret = 3;
                break;

            case Card.Effect.CiXiongShuangGuJian:
                ret = 2;
                break;

            case Card.Effect.QingGangJian:
                ret = 2;
                break;

            case Card.Effect.ZhuQueYuShan:
                ret = 4;
                break;

            case Card.Effect.FangTianHuaJi:
                ret = 4;
                break;

            case Card.Effect.ZhuGeLianNu:
                ret = 1;
                break;

            case Card.Effect.QiLinGong:
                ret = 5;
                break;

            case Card.Effect.GuDianDao:
                ret = 2;
                break;

            case Card.Effect.HanBingJian:
                ret = 2;
                break;
            }
            return(--ret);
        }
Пример #17
0
    public int TotalValueOf(Card.Effect effect)
    {
        int total = 0;

        foreach (Card card in cards)
        {
            if (card.effect == effect)
            {
                total += card.numberValue;
            }
        }
        return(total);
    }
Пример #18
0
 public override sbyte CalcDamage(ChiefBase aChief, Card.Effect aEffect, sbyte aDamage, GlobalData aData)
 {
     if (Active)
     {
         switch (aEffect)
         {
         case Card.Effect.Sha:
         case Card.Effect.JueDou:
             return(++aDamage);
         }
     }
     return(aDamage);
 }
Пример #19
0
        public override int CalcAskforTimes(ChiefBase aChief, ChiefBase aTarget, Card.Effect aEffect, int aOldTimes, GlobalData aData)
        {
            switch (aEffect)
            {
            case Card.Effect.Sha:
            case Card.Effect.JueDou:
                aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, new ChiefBase[] { aTarget }, new Card[] { }));
                return(2);

            default:
                return(aOldTimes);
            }
        }
Пример #20
0
        internal void RecoveryJudgementCard(Card aCard, ChiefBase aChief, Card.Effect aEffect)
        {
            bool EnableSengToBin = true;

            foreach (ASkill s in aChief.Skills)
            {
                s.OnChiefJudgementCardTakeEffect(aChief, aCard, ref EnableSengToBin, gData);
            }
            if (EnableSengToBin)
            {
                lstCardBin.Add(aCard);
            }
        }
Пример #21
0
 /// <summary>
 /// 卸载护甲触发的方法
 /// </summary>
 /// <param name="aArmorEffect">护甲效果</param>
 /// <param name="aData">游戏数据</param>
 public static void OnUnloadAromor(Card.Effect aArmorEffect, GlobalData aData)
 {
     switch (aArmorEffect)
     {
     case Card.Effect.BaiYinShiZi:
         //aData.Game.AskCore.SendMessage(
         //    new XElement("trigger",
         //        new XElement("effect", Card.Effect.BaiYinShiZi)
         //        )
         //        );
         aData.Game.RegainHealth(aData.Active, 1);
         break;
     }
 }
Пример #22
0
 public override bool EffectFeasible(Card[] aCards, Card.Effect aEffect, ChiefBase aTarget, bool aFeasible, GlobalData aData)
 {
     switch (aEffect)
     {
     case Card.Effect.Sha:
     case  Card.Effect.JueDou:
         if (aData.Game.GamePlayers[aTarget].Hands.Count == 0)
         {
             return(false);
         }
         break;
     }
     return(aFeasible);
 }
Пример #23
0
        /// <summary>
        /// 计算伤害量
        /// </summary>
        /// <param name="aWeaponEffect">武器效果</param>
        /// <param name="aSource">伤害来源</param>
        /// <param name="aTarget">伤害目标</param>
        /// <param name="aDamageEffect">伤害效果</param>
        /// <param name="aOldDamage">原先的伤害量</param>
        /// <param name="aData">游戏数据</param>
        /// <returns>返回新的伤害量</returns>
        public static sbyte CalcDamage(Card.Effect aWeaponEffect, ChiefBase aSource, ChiefBase aTarget, Card.Effect aDamageEffect, sbyte aOldDamage, GlobalData aData)
        {
            switch (aWeaponEffect)
            {
            case Card.Effect.GuDianDao:
                if (aDamageEffect == Card.Effect.Sha && aTarget != null && aData.Game.GamePlayers[aTarget].Hands.Count == 0)
                {
                    return(++aOldDamage);
                }
                break;
            }

            return(aOldDamage);
        }
Пример #24
0
    public void UpdateSinceCardVisuals(int _playerIndex, int cardIndex)
    {
        Card card = players[_playerIndex].handState.GetCardInIndex(cardIndex);

        Card.Effect newEffect = card.effect;
        CardType    newCard   = null;

        for (int j = 0; j < cardTypes.Count; j++)
        {
            if (cardTypes[j].cardType == newEffect)
            {
                newCard = cardTypes[j];
                break;
            }
            else
            {
                continue;
            }
        }
        if (newCard != null)
        {
            Sprite _cardArt  = null;
            Sprite _artwork  = null;
            Sprite _manaCost = null;

            //Card visuals, red or blue:
            if (_playerIndex == 0)
            {
                _cardArt = blueCard;
            }
            else if (_playerIndex == 1)
            {
                _cardArt = redCard;
            }

            //Card artwork visuals:
            _artwork = newCard.artwork;

            //Manacost visuals:
            int manaCost = Mathf.FloorToInt(newCard.manaCost) / 10;
            _manaCost = (Sprite)numbers.GetValue(manaCost);
            cardVisuals[_playerIndex][cardIndex].RefreshCard(_cardArt, _artwork, _manaCost);
        }
        else
        {
            Debug.Log("Currentcard is null");
        }
    }
Пример #25
0
 public override int CalcAskforTimes(ChiefBase aChief, ChiefBase aTarget, Card.Effect aEffect, int aOldTimes, GlobalData aData)
 {
     if (aEffect == Card.Effect.Sha)
     {
         aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeAskForSkillMessage(aChief, this));
         MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForYN(aChief);
         if (res.YN)
         {
             aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, new ChiefBase[] { }, new Card[] { }));
             Card c = aData.Game.popJudgementCard(aChief, Card.Effect.TieQi);
             aData.Game.DropCards(true, GlobalEvent.CardFrom.JudgementCard, SkillName, new Card[] { c }, Card.Effect.TieQi, aChief, null, null);
             if (c.CardHuaSe == Card.Suit.HongTao || c.CardHuaSe == Card.Suit.FangPian)
             {
                 return(0);
             }
         }
     }
     return(aOldTimes);
 }
Пример #26
0
 public override void OnUseEffect(ChiefBase aChief, Card.Effect aEffect, GlobalData aData)
 {
     switch (aEffect)
     {
     case Card.Effect.JueDou:
     case Card.Effect.WanJianQiFa:
     case Card.Effect.NanManRuQin:
     case Card.Effect.TaoYuanJieYi:
     case Card.Effect.GuoHeChaiQiao:
     case Card.Effect.ShunShouQianYang:
     case Card.Effect.HuoGong:
     case Card.Effect.JieDaoShaRen:
     case Card.Effect.TieSuoLianHuan:
     case Card.Effect.WuGuFengDeng:
     case Card.Effect.WuXieKeJi:
     case Card.Effect.WuZhongShengYou:
         aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, new ChiefBase[] { }, new Card[] { }));
         aData.Game.TakeingCards(aChief, 1);
         break;
     }
 }
Пример #27
0
        /// <summary>
        /// 计算伤害量
        /// </summary>
        /// <param name="aOldDamage">原先的伤害量</param>
        /// <param name="aCards">造成伤害的牌</param>
        /// <param name="aArmor">护甲效果</param>
        /// <returns>新的伤害量</returns>
        public static sbyte CalcDamage(sbyte aOldDamage, Card[] aCards, Card.Effect aArmor)
        {
            switch (aArmor)
            {
            case Card.Effect.TengJia:
                if (aCards.Count() == 1)
                {
                    switch (aCards[0].Element)
                    {
                    case  Card.ElementType.Fire:
                        return(++aOldDamage);
                    }
                }
                break;

            case Card.Effect.BaiYinShiZi:
                aOldDamage = 1;
                break;
            }

            return(aOldDamage);
        }
Пример #28
0
 public static void CalcShaTargetsCount(Card.Effect aWeaponEffect, Card[] aCards, ChiefBase aChief, Card.Effect aEffect, GlobalData aData, ref int aTargetsCount)
 {
     switch (aWeaponEffect)
     {
     case Card.Effect.FangTianHuaJi:
         if (aEffect == Card.Effect.Sha && aCards.Count() > 0 && aData.Game.GamePlayers[aChief].HasCardsInHand(aCards) && aData.Active == aChief)
         {
             foreach (Card c in aCards)
             {
                 if (!aData.Game.GamePlayers[aChief].Hands.Contains(c))
                 {
                     return;
                 }
             }
             if (aData.Game.GamePlayers[aChief].Hands.Except(aCards).Count() == 0)
             {
                 aTargetsCount += 3;
             }
         }
         break;
     }
 }
Пример #29
0
 public static bool EnableFor(Card.Effect aArmor, Card[] aCards, Card.Effect aEffect, ChiefBase aOwner)
 {
     switch (aEffect)
     {
     case Card.Effect.Sha:
         if (aArmor == Card.Effect.RenWangDun)
         {
             if (aCards.Where(c => c.CardHuaSe == Card.Suit.FangPian || c.CardHuaSe == Card.Suit.HongTao).Count() < 1)
             {
                 return(false);
             }
         }
         else if (aArmor == Card.Effect.TengJia)
         {
             if (aEffect == Card.Effect.WanJianQiFa || aEffect == Card.Effect.NanManRuQin || (aCards.Count() == 1 && aCards[0].Element == Card.ElementType.None))
             {
                 return(false);
             }
         }
         break;
     }
     return(true);
 }
Пример #30
0
        /// <summary>
        /// 对方对杀出闪时候的处理方法
        /// </summary>
        /// <param name="aWeaponEffect"></param>
        /// <param name="aSource"></param>
        /// <param name="aTarget"></param>
        /// <param name="aData"></param>
        /// <param name="aShaEvent"></param>
        /// <returns></returns>
        public static bool TargetShan(Card.Effect aWeaponEffect, ChiefBase aSource, ChiefBase aTarget, GlobalData aData, GlobalEvent.EventRecoard aShaEvent)
        {
            string msg = null;

            MessageCore.AskForResult res = null;
            switch (aWeaponEffect)
            {
            case Card.Effect.GuanShiFu:
                msg = new Beaver("askfor.gsf.cards", aSource.ChiefName).ToString();
                //new XElement("askfor.gsf.cards",
                //    new XElement("target", aSource.ChiefName)
                //    );
                res = aData.Game.AsynchronousCore.AskForCards(aSource, MessageCore.AskForEnum.TargetTwoCardsWithoutWeaponAndJudgement, new AskForWrapper(msg, aData.Game), aData);
                aData.Game.AsynchronousCore.LeadingValid(aSource);
                if (res.Effect != Card.Effect.None)
                {
                    aData.Game.DropCards(true, GlobalEvent.CardFrom.HandAndEquipage, res.SkillName, res.Cards, Card.Effect.None, aSource, aTarget, null);
                    return(true);
                }
                break;

            case Card.Effect.QingLongYanYueDao:
                msg = new Beaver("askfor.qlyy.sha", aSource.ChiefName).ToString();
                //new XElement("askfor.qlyy.sha",
                //    new XElement("target", aSource.ChiefName)
                //    );
                res = aData.Game.AsynchronousCore.AskForCards(aSource, MessageCore.AskForEnum.Sha, new AskForWrapper(msg, aData.Game), aData);
                aData.Game.AsynchronousCore.LeadingValid(aSource);
                if (res.Effect == Card.Effect.Sha)
                {
                    aData.Game.DropCards(true, GlobalEvent.CardFrom.Hand, res.SkillName, res.Cards, Card.Effect.Sha, aSource, aTarget, null);
                    aData.Game.ShaProc(aData.Game.lstRecoard[aData.Game.lstRecoard.Count - 1]);
                }
                break;
            }
            return(false);
        }