예제 #1
0
 public override void BeforeAskfor(ChiefBase aChief, MessageCore.AskForEnum aEffect, GlobalData aData)
 {
     if (aEffect == MessageCore.AskForEnum.Sha || aEffect == MessageCore.AskForEnum.Shan || (aEffect == MessageCore.AskForEnum.Aggressive && (aData.ShaNoLimit || aData.KillRemain > 0)))
     {
         SwitchSkillStatus(aChief, SkillEnabled.Enable, aData);
     }
 }
예제 #2
0
 public override void BeforeAskfor(ChiefBase aChief, MessageCore.AskForEnum aEffect, GlobalData aData)
 {
     if (aEffect == MessageCore.AskForEnum.Aggressive && aData.Game.GamePlayers[aChief].HasHand)
     {
         SwitchSkillStatus(aChief, SkillEnabled.Enable, aData);
     }
 }
예제 #3
0
 public override void FinishAskfor(ChiefBase aChief, MessageCore.AskForEnum aEffect, GlobalData aData)
 {
     if (aEffect == MessageCore.AskForEnum.Aggressive && SkillStatus == SkillEnabled.Disable)
     {
         SwitchSkillStatus(aChief, SkillEnabled.Disable, aData);
     }
 }
예제 #4
0
        public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData)
        {
            if (aData.Game.Response.SkillName == SkillName && SkillStatus == SkillEnabled.Enable && aChief.ChiefStatus == ChiefBase.Status.Majesty && aAskFor == MessageCore.AskForEnum.Shan)
            {
                SwitchSkillStatus(aChief, SkillEnabled.Disable, aData);

                aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, new ChiefBase[] { }, new Card[] { }));
                ChiefBase t = aChief.Next;
                while (!t.IsMe(aChief))
                {
                    if (t.ChiefCamp == ChiefBase.Camp.Wei)
                    {
                        string msg = new Beaver("askfor.hujia.shan", t.ChiefName).ToString();
                        //new XElement("askfor.hujia.shan",
                        //    new XElement("target", t.ChiefName)
                        //    );
                        MessageCore.AskForResult res2 = aData.Game.AsynchronousCore.AskForCards(t, MessageCore.AskForEnum.Shan, new AskForWrapper(msg, aData.Game), aData);
                        if (res2.Effect == Card.Effect.Shan)
                        {
                            aData.Game.AsynchronousCore.SendMessage(
                                new Beaver("hujia.shan", t.ChiefName, Card.Cards2Beaver("cards", res2.Cards)).ToString());
                            //new XElement("hujia.shan",
                            //    new XElement("target", t.ChiefName),
                            //    Card.Cards2XML("cards", res2.Cards)
                            //    )
                            //);
                            return(new MessageCore.AskForResult(false, t, new ChiefBase[] { }, res2.Cards, Card.Effect.Shan, false, res2.PlayerLead, SkillName));
                        }
                    }
                    t = t.Next;
                }
            }
            return(null);
        }
예제 #5
0
 public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData)
 {
     if (aAskFor == MessageCore.AskForEnum.Aggressive && SkillStatus == SkillEnabled.Enable)
     {
         SwitchSkillStatus(aChief, SkillEnabled.Disable, aData);
         aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, Player.Players2Chiefs(aData.Game.Response.Targets), aData.Game.Response.Cards));
         return(new MessageCore.AskForResult(false, aChief, Player.Players2Chiefs(aData.Game.Response.Targets), aData.Game.Response.Cards, Card.Effect.GuoHeChaiQiao, false, true, SkillName));
     }
     return(null);
 }
예제 #6
0
 public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData)
 {
     if (SkillName == aData.Game.Response.SkillName && SkillStatus == SkillEnabled.Enable)
     {
         SwitchSkillStatus(aChief, SkillEnabled.Disable, aData);
         aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, new ChiefBase[] { }, aData.Game.Response.Cards));
         return(new MessageCore.AskForResult(false, aChief, new ChiefBase[] { }, aData.Game.Response.Cards, Card.Effect.Shan, false, true, SkillName));
     }
     return(null);
 }
예제 #7
0
 public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData)
 {
     if (aAskFor == MessageCore.AskForEnum.Aggressive && SkillStatus == SkillEnabled.Enable)
     {
         SwitchSkillStatus(aChief, SkillEnabled.Disable, aData);
         aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, new ChiefBase[] { }, new Card[] { }));
         aData.Game.DamageHealth(aChief, 1, null, new GlobalEvent.EventRecoard(aChief, aChief, new Card[] { }, Card.Effect.Skill, SkillName));
         aData.Game.TakeingCards(aChief, 2);
         return(new MessageCore.AskForResult(false, aChief, new ChiefBase[] { }, new Card[] { }, Card.Effect.Skill, false, false, SkillName));
     }
     return(null);
 }
예제 #8
0
 public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData)
 {
     if (aData.Game.Response.SkillName == SkillName)
     {
         if (SkillStatus == SkillEnabled.Enable)
         {
             SwitchSkillStatus(aChief, SkillEnabled.Disable, aData);
             aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, new ChiefBase[] { }, aData.Game.Response.Cards));
             aData.Game.DropCards(true, GlobalEvent.CardFrom.HandAndEquipage, SkillName, aData.Game.Response.Cards, Card.Effect.Tao, aChief, null, null);
             return(new MessageCore.AskForResult(false, aChief, new ChiefBase[] { }, aData.Game.Response.Cards, Card.Effect.Tao, false, false, SkillName));
         }
     }
     return(null);
 }
예제 #9
0
 public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData)
 {
     if (aData.Game.Response.SkillName == SkillName)
     {
         if (SkillStatus == SkillEnabled.Enable)
         {
             SwitchSkillStatus(aChief, SkillEnabled.Disable, aData);
             aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, Player.Players2Chiefs(aData.Game.Response.Targets), aData.Game.Response.Cards));
             aData.Game.DropCards(true, GlobalEvent.CardFrom.Hand, SkillName, aData.Game.Response.Cards, Card.Effect.Skill, aChief, null, null);
             return(new MessageCore.AskForResult(false, aChief, new ChiefBase[] { aData.Game.Response.Targets[0].Chief, aData.Game.Response.Targets[1].Chief }, new Card[] { }, Card.Effect.JueDou, false, false, SkillName));
         }
     }
     return(null);
 }
예제 #10
0
 public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData)
 {
     if (aData.Game.Response.SkillName == SkillName)
     {
         if (SkillStatus == SkillEnabled.Enable && aData.Game.GamePlayers[aChief].HasHand)
         {
             SwitchSkillStatus(aChief, SkillEnabled.Disable, aData);
             aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, Player.Players2Chiefs(aData.Game.Response.Targets), new Card[] { }));
             ChiefBase target = aData.Game.Response.Targets[0].Chief;
             aData.Game.AsynchronousCore.SendMessage(new Beaver("askfor.fanjian.suit", target.ChiefName).ToString()); // new XElement("askfor.fanjian.suit", new XElement("target", target.ChiefName)));
             MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForCards(target, MessageCore.AskForEnum.Suit, target);
             if (res.Cards.Count() == 0)
             {
                 aData.Game.AsynchronousCore.SendMessage(new Beaver("fanjian.suit", target.ChiefName, Card.Cards2Beaver("cards", new Card[] { CardHeap.HeiTao })).ToString()); // new XElement("fanjian.suit", new XElement("target", target.ChiefName), Card.Cards2XML("cards", new Card[] { CardHeap.HeiTao })));
             }
             else
             {
                 aData.Game.AsynchronousCore.SendMessage(new Beaver("fanjian.suit", target.ChiefName, Card.Cards2Beaver("cards", res.Cards)).ToString());   // new XElement("fanjian.suit", new XElement("target", target.ChiefName), Card.Cards2XML("cards", res.Cards)));
             }
             System.Threading.Thread.Sleep(10);
             aData.Game.AsynchronousCore.SendMessage(new Beaver("askfor.fanjian.card", target.ChiefName, aChief.ChiefName).ToString()); //  new XElement("askfor.fanjian.card", new XElement("target", target.ChiefName), new XElement("target2", aChief)));
             MessageCore.AskForResult res2 = aData.Game.AsynchronousCore.AskForCards(target, MessageCore.AskForEnum.TargetCard, aChief);
             Card c = aData.Game.AutoSelect(aChief);
             aData.Game.AsynchronousCore.SendMessage(new Beaver("fanjian.card", target.ChiefName, aChief.ChiefName, Card.Cards2Beaver("cards", new Card[] { c })).ToString()); // new XElement("fanjian.card", new XElement("target", target.ChiefName), new XElement("target2", aChief.ChiefName), Card.Cards2XML("cards", new Card[] { c })));
             if (c.CardHuaSe != res.Cards[0].CardHuaSe)
             {
                 aData.Game.DamageHealth(target, 1, aChief, new GlobalEvent.EventRecoard(aChief, target, new Card[] { }, Card.Effect.Skill, SkillName));
             }
             if (!aData.Game.GamePlayers[target].Dead)
             {
                 if (aData.Game.GamePlayers[aChief].HasCardsInHand(new Card[] { c }))
                 {
                     aData.Game.AsynchronousCore.SendGiveMessage(aChief, target, new Card[] { c }, aData.Game.GamePlayers);
                     aData.Game.Move(aChief, target, new Card[] { c });
                 }
                 else if (aData.Game.HasCardsInBin(new Card[] { c }))
                 {
                     if (aData.Game.PickRubbish(new Card[] { c }))
                     {
                         aData.Game.AsynchronousCore.SendPickMessage(target, new Card[] { c });
                         aData.Game.GamePlayers[aChief].Hands.Add(c.GetOriginalCard());
                     }
                 }
             }
             return(new MessageCore.AskForResult(false, aChief, new ChiefBase[] { }, new Card[] { }, Card.Effect.Skill, false, false, SkillName));
         }
     }
     return(null);
 }
예제 #11
0
 public override void BeforeAskfor(ChiefBase aChief, MessageCore.AskForEnum aEffect, GlobalData aData)
 {
     if (aChief.ChiefStatus == ChiefBase.Status.Majesty && (aEffect == MessageCore.AskForEnum.Sha || (aEffect == MessageCore.AskForEnum.Aggressive && (aData.ShaNoLimit || aData.KillRemain > 0))))
     {
         bool ShuAlive = false;
         foreach (Player p in aData.Game.GamePlayers.All)
         {
             if (!p.Dead && p.Chief.ChiefCamp == ChiefBase.Camp.Shu)
             {
                 ShuAlive = true;
                 break;
             }
         }
         if (ShuAlive)
         {
             SwitchSkillStatus(aChief, SkillEnabled.Enable, aData);
         }
     }
 }
예제 #12
0
 public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData)
 {
     if (aData.Game.Response.SkillName == SkillName && SkillStatus == SkillEnabled.Enable && aAskFor == MessageCore.AskForEnum.Aggressive)
     {
         SwitchSkillStatus(aChief, SkillEnabled.Disable, aData);
         ChiefBase target = aData.Game.Response.Targets[0].Chief;
         Card[]    cards  = aData.Game.Response.Cards;
         aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, new ChiefBase[] { target }, new Card[] { }));
         TotalCount += aData.Game.Response.Cards.Count();
         aData.Game.AsynchronousCore.SendGiveMessage(aChief, target, cards, aData.Game.GamePlayers);
         aData.Game.Move(aChief, target, cards);
         if (TotalCount > 1 && !HasRegainHealth)
         {
             aData.Game.RegainHealth(aChief, 1);
             HasRegainHealth = true;
         }
     }
     return(null);
 }
예제 #13
0
        public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData)
        {
            if (aData.Game.Response.SkillName == SkillName && aChief.ChiefStatus == ChiefBase.Status.Majesty && (aAskFor == MessageCore.AskForEnum.Sha || aAskFor == MessageCore.AskForEnum.Aggressive) && SkillStatus == SkillEnabled.Enable)
            {
                SwitchSkillStatus(aChief, SkillEnabled.Disable, aData);
                ChiefBase[] targets = Player.Players2Chiefs(aData.Game.Response.Targets);
                aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, targets, new Card[] { }));
                ChiefBase t = aChief.Next;

                while (!t.IsMe(aChief))
                {
                    if (t.ChiefCamp == ChiefBase.Camp.Shu)
                    {
                        string msg = new Beaver("askfor.jijiang.sha", t.ChiefName).ToString();
                        new XElement("askfor.jijiang.sha",
                                     new XElement("target", t.ChiefName)
                                     );
                        MessageCore.AskForResult res2 = aData.Game.AsynchronousCore.AskForCards(t, MessageCore.AskForEnum.Sha, new AskForWrapper(msg, aData.Game), aData);
                        if (res2.Effect == Card.Effect.Sha)
                        {
                            aData.Game.AsynchronousCore.SendMessage(
                                new Beaver("jijiang.sha", t.ChiefName, Card.Cards2Beaver("cards", res2.Cards), res2.SkillName).ToString());
                            //new XElement("jijiang.sha",
                            //    new XElement("target", t.ChiefName),
                            //    Card.Cards2XML("cards", res2.Cards),
                            //    new XElement("skill" , res2.SkillName)
                            //    )
                            //);
                            if (res2.PlayerLead)
                            {
                                aData.Game.DropCards(true, GlobalEvent.CardFrom.Hand, string.Empty, res2.Cards, Card.Effect.Sha, t, null, null);
                            }
                            return(new MessageCore.AskForResult(false, aChief, targets, res2.Cards, Card.Effect.Sha, false, false, SkillName));
                        }
                    }
                    t = t.Next;
                }
            }
            return(null);
        }
예제 #14
0
 public override void BeforeAskfor(ChiefBase aChief, MessageCore.AskForEnum aEffect, GlobalData aData)
 {
     if (aChief.ChiefStatus == ChiefBase.Status.Majesty)
     {
         if (aEffect == MessageCore.AskForEnum.Shan)
         {
             bool WeiAlive = false;
             foreach (Player p in aData.Game.GamePlayers.All)
             {
                 if (!p.Dead && p.Chief.ChiefCamp == ChiefBase.Camp.Wei)
                 {
                     WeiAlive = true;
                     break;
                 }
             }
             if (WeiAlive)
             {
                 SwitchSkillStatus(aChief, SkillEnabled.Enable, aData);
             }
         }
     }
 }
예제 #15
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (aSkillName == SkillName && aChief.ChiefStatus == ChiefBase.Status.Majesty) //要求
     {
         if (SkillStatus != SkillEnabled.Enable || aAskFor != MessageCore.AskForEnum.Shan || aCards.Count() != 0)
         {
             return(false);                                                                                                     //不满足的条件
         }
     }
     return(true);
 }
예제 #16
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (SkillName == aSkillName)
     {
         if (SkillStatus != SkillEnabled.Enable)
         {
             return(false);
         }
         if (aAskFor != MessageCore.AskForEnum.Aggressive)
         {
             return(false);
         }
         if (aCards.Count() != 0)
         {
             return(false);
         }
     }
     return(true);
 }
예제 #17
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;
     }
 }
예제 #18
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (SkillName == aSkillName)
     {
         if (SkillStatus != SkillEnabled.Enable)
         {
             return(false);
         }
         if (aAskFor != MessageCore.AskForEnum.Aggressive)
         {
             return(false);
         }
         if (aCards.Count() != 1)
         {
             return(false);
         }
         if (aCards[0].CardHuaSe != Card.Suit.CaoHua && aCards[0].CardHuaSe != Card.Suit.HeiTao)
         {
             return(false);
         }
         if (aTargets.Count() != 1)
         {
             return(false);
         }
         if (aTargets[0] == aChief)
         {
             return(false);
         }
         if (!aData.Game.GamePlayers[aTargets[0]].HasCardWithJudgementArea)
         {
             return(false);
         }
         if (aData.Game.GamePlayers[aTargets[0]].Dead)
         {
             return(false);
         }
         aEffect = Card.Effect.GuoHeChaiQiao;
     }
     return(true);
 }
예제 #19
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (aSkillName == SkillName)
     {
         if (SkillStatus == SkillEnabled.Disable)
         {
             return(false);
         }
         if (aCards.Count() != 1 || !aData.Game.GamePlayers[aChief].HasCardsInHand(aCards))
         {
             return(false);
         }
         if (aTargets.Count() != 2)
         {
             return(false);
         }
         if (aData.Game.GamePlayers[aTargets[0]].Chief.Sex != ChiefBase.SexType.Male || aData.Game.GamePlayers[aTargets[1]].Chief.Sex != ChiefBase.SexType.Male)
         {
             return(false);
         }
         if (aData.Game.GamePlayers[aTargets[0]].Dead || aData.Game.GamePlayers[aTargets[1]].Dead)
         {
             return(false);
         }
         if (aTargets[0] == aTargets[1])
         {
             return(false);
         }
         if (aTargets[0] == aChief || aTargets[1] == aChief)
         {
             return(false);
         }
     }
     return(true);
 }
예제 #20
0
 /// <summary>
 /// 玩家使用了某项技能,并在异步层进行处理,因为异步层不允许进行新的问询,一般用于不会再问询的技能,或者技能的条件检查
 /// </summary>
 /// <param name="aSkillName">玩家使用的技能名称</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>
 /// <returns>返回true表示技能处理正常或者跳过,false表示技能不能通过检验</returns>
 public virtual bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     return(true); //技能通过检验
 }
예제 #21
0
 /// <summary>
 /// 问询结束后通知技能,一般用于技能状态改变
 /// </summary>
 /// <param name="aChief">被问询的武将对象</param>
 /// <param name="aEffect">问询的效果</param>
 /// <param name="aData">游戏数据</param>
 public virtual void FinishAskfor(ChiefBase aChief, MessageCore.AskForEnum aEffect, GlobalData aData)
 {
 }
예제 #22
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (aSkillName == SkillName)
     {
         if (SkillStatus == SkillEnabled.Disable)
         {
             return(false);
         }
         if (aAskFor != MessageCore.AskForEnum.AskForTao && aAskFor != MessageCore.AskForEnum.AskForTaoOrJiu)
         {
             return(false);
         }
         if (aCards.Count() != 1)
         {
             return(false);
         }
         if (!aData.Game.GamePlayers[aChief].HasCardsInHandOrEquipage(aCards))
         {
             return(false);
         }
         if (aCards[0].CardHuaSe != Card.Suit.HongTao && aCards[0].CardHuaSe != Card.Suit.FangPian)
         {
             return(false);
         }
     }
     return(true);
 }
예제 #23
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (aSkillName == SkillName)
     {
         if (SkillStatus == SkillEnabled.Enable && (aAskFor == MessageCore.AskForEnum.Sha || aAskFor == MessageCore.AskForEnum.Aggressive) && aCards.Count() == 0)
         {
             if (aAskFor == MessageCore.AskForEnum.Aggressive)
             {
                 //若出杀有限制且已经没有机会杀了不能执行
                 if (!aData.ShaNoLimit && aData.KillRemain < 1)
                 {
                     return(false);                                           //false
                 }
                 //杀的目标数量高于最大值不能执行
                 if (aData.Game.CalcMaxShaTargets(aChief, aCards) < aTargets.Count())
                 {
                     return(false);                                                                  //false
                 }
                 //没有目标不能执行
                 if (aTargets.Count() == 0)
                 {
                     return(false);                       //false
                 }
                 //遍历目标集合,如果目标有自己或者目标已死亡或者 够不到对方不能执行
                 foreach (ChiefBase c in aTargets)
                 {
                     if (c.IsMe(aChief) || aData.Game.GamePlayers[c].Dead || !aData.Game.WithinShaRange(aChief, c))
                     {
                         return(false); //false
                     }
                     bool Enable = true;
                     foreach (ASkill s in c.Skills)
                     {
                         Enable = s.EffectFeasible(aCards, aEffect, c, Enable, aData);
                     }
                     if (!Enable)
                     {
                         return(false);
                     }
                 }
             }
             return(true);
         }
         else
         {
             return(false); //false
         }
     }
     else
     {
         return(true);
     }
 }
예제 #24
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (SkillName == aSkillName)
     {
         if (aCards.Count() != 0 && aTargets.Count() == 1 && aTargets[0] != aChief && !aData.Game.GamePlayers[aTargets[0]].Dead)
         {
             if (!aData.Game.GamePlayers[aChief].HasCardsInHand(aCards))
             {
                 return(false);
             }
             return(true);
         }
     }
     return(true);
 }
예제 #25
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (SkillName == aSkillName)
     {
         if (SkillStatus != SkillEnabled.Enable)
         {
             return(false);
         }
         if (aAskFor != MessageCore.AskForEnum.Aggressive)
         {
             return(false);
         }
         if (aCards.Count() != 1)
         {
             return(false);
         }
         if (aCards[0].CardHuaSe != Card.Suit.FangPian)
         {
             return(false);
         }
         if (aTargets.Count() != 1)
         {
             return(false);
         }
         if (aTargets[0] == aChief)
         {
             return(false);
         }
         if (aData.Game.GamePlayers[aTargets[0]].HasDebuff(Card.Effect.LeBuSiShu))
         {
             return(false);
         }
         if (aData.Game.GamePlayers[aTargets[0]].Dead)
         {
             return(false);
         }
         aCards[0].CardEffect = Card.Effect.LeBuSiShu;
         aEffect = Card.Effect.LeBuSiShu;
     }
     return(true);
 }
예제 #26
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (aSkillName == SkillName)
     {
         if (SkillStatus != SkillEnabled.Enable)
         {
             return(false);
         }
         if (!aData.Game.GamePlayers[aChief].HasHand)
         {
             return(false);
         }
         if (aCards.Count() != 0)
         {
             return(false);
         }
         if (aTargets.Count() == 0 || aData.Game.GamePlayers[aTargets[0]].Dead || aTargets[0] == aChief)
         {
             return(false);
         }
     }
     return(true);
 }
예제 #27
0
 /// <summary>
 /// 武将被问询
 /// </summary>
 /// <param name="aChief">被问询的武将</param>
 /// <param name="aAskFor">问询的内容</param>
 /// <param name="aData">全局游戏数据对象</param>
 /// <returns>成功处理返回effect不是none的askforresult对象,否则返回null,另外根据情形你可以返回两个异常类型</returns>
 public virtual MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData)
 {
     return(null);
 }
예제 #28
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (aSkillName == SkillName)
     {
         if (SkillStatus == SkillEnabled.Disable)
         {
             return(false);
         }
         if (aCards.Count() == 0 || !aData.Game.GamePlayers[aChief].HasCardsInHandOrEquipage(aCards))
         {
             return(false);
         }
     }
     return(true);
 }
예제 #29
0
 public override bool ActiveSkill(string aSkillName, Card[] aCards, ChiefBase aChief, ChiefBase[] aTargets, MessageCore.AskForEnum aAskFor, ref Card.Effect aEffect, GlobalData aData)
 {
     if (SkillName == aSkillName && aCards.Count() == 1 && aAskFor == MessageCore.AskForEnum.Shan && (aCards[0].CardHuaSe == Card.Suit.HeiTao || aCards[0].CardHuaSe == Card.Suit.CaoHua))
     {
         aEffect = Card.Effect.Shan;
         return(true);
     }
     else if (aSkillName == SkillName)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }