Esempio n. 1
0
 public override void OnChiefHarmed(GlobalEvent.EventRecoard aSourceEvent, ChiefBase aSource, ChiefBase aTarget, GlobalData aData, sbyte aDamage)
 {
     if (aSource != null && aData.Game.GamePlayers[aSource].HasCard)
     {
         aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeAskForSkillMessage(aTarget, this));
         MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForYN(aTarget);
         if (res.YN == true && aData.Game.GamePlayers[aSource].HasCard)
         {
             aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aTarget, this, new ChiefBase[] { aSource }, new Card[] { }));
             res = aData.Game.AsynchronousCore.AskForCards(aTarget, MessageCore.AskForEnum.TargetCard, aSource);
             if (res.Cards.Count() == 0)
             {
                 if (aData.Game.GamePlayers[aSource].HasCard)
                 {
                     res = new MessageCore.AskForResult(false, aTarget, new ChiefBase[] { }, new Card[] { aData.Game.AutoSelect(aSource) }, Card.Effect.GuoHeChaiQiao, false, false, string.Empty);
                 }
                 else
                 {
                     return;
                 }
             }
             //检查牌的来源知否是正确
             if (!aData.Game.GamePlayers[aSource].HasCardsInHandOrEquipage(res.Cards))
             {
                 return;
             }
             aData.Game.AsynchronousCore.SendStealMessage(aSource, aTarget, res.Cards, aData.Game.GamePlayers);
             aData.Game.Move(aTarget, aSource, res.Cards);
         }
     }
 }
Esempio n. 2
0
        public override void OnChiefHarmed(GlobalEvent.EventRecoard aSourceEvent, ChiefBase aSource, ChiefBase aTarget, GlobalData aData, sbyte aDamage)
        {
            int i = 0;

            for (i = 0; i < aDamage; i++)
            {
                aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeAskForSkillMessage(aTarget, this));
                MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForYN(aTarget);
                if (res.YN)
                {
                    aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aTarget, this, new ChiefBase[] { }, new Card[] { }));
                    Card[] cards = aData.Game.TakeingCards(aTarget, 2);
                    aTarget.SlotsBuffer[SkillName].Cards.Clear();
                    aTarget.SlotsBuffer[SkillName].Cards.AddRange(cards);
                    int times = 0;
                    while (aTarget.SlotsBuffer[SkillName].Cards.Count > 0 && times < 2)
                    {
                        aData.Game.AsynchronousCore.SendPrivateMessageWithOpenMessage(aTarget,
                                                                                      new Beaver("askfor.yiji.cards", aTarget.ChiefName, Card.Cards2Beaver("cards", aTarget.SlotsBuffer[SkillName].Cards.ToArray())).ToString(),
                                                                                      //new XElement("askfor.yiji.cards",
                                                                                      //    new XElement("target", aTarget.ChiefName),
                                                                                      //    Card.Cards2XML("cards", aTarget.SlotsBuffer[SkillName].Cards.ToArray())
                                                                                      //    ),
                                                                                      new Beaver("askfor.yiji.cards", aTarget.ChiefName).ToString(),
                                                                                      //new XElement("askfor.yiji.cards",
                                                                                      //    new XElement("target", aTarget.ChiefName)
                                                                                      //    ),
                                                                                      aData.Game.GamePlayers);
                        res = aData.Game.AsynchronousCore.AskForCardsWithCount(aTarget, -1);
                        if (res.Targets.Count() != 1 || res.Targets[0] == aTarget || aData.Game.GamePlayers[res.Targets[0]].Dead)
                        {
                            break;
                        }
                        foreach (Card c in res.Cards)
                        {
                            if (!aTarget.SlotsBuffer[SkillName].Cards.Contains(c))
                            {
                                break;
                            }
                        }
                        aData.Game.AsynchronousCore.SendGiveMessage(aTarget, res.Targets[0], res.Cards, aData.Game.GamePlayers);
                        aData.Game.DropCards(false, GlobalEvent.CardFrom.Hand, SkillName, res.Cards, Card.Effect.None, aTarget, null, null);
                        aData.Game.GamePlayers[res.Targets[0]].Hands.AddRange(res.Cards);
                        foreach (Card c in res.Cards)
                        {
                            aTarget.SlotsBuffer[SkillName].Cards.Remove(c);
                        }
                        times++;
                    }
                    aTarget.SlotsBuffer[SkillName].Cards.Clear();
                }
                else
                {
                    break;
                }
            }
        }
Esempio n. 3
0
 public override void OnChiefHarmed(GlobalEvent.EventRecoard aSourceEvent, ChiefBase aSource, ChiefBase aTarget, GlobalData aData, sbyte aDamage)
 {
     //不能有牌存在,且伤害事件的牌在垃圾桶中
     if (aSourceEvent.Cards.Count() != 0 && aData.Game.HasCardsInBin(aSourceEvent.Cards))
     {
         //问询是否发动技能
         aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeAskForSkillMessage(aTarget, this));
         MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForYN(aTarget);
         if (res.YN == true && aData.Game.HasCardsInBin(aSourceEvent.Cards))
         {
             aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aTarget, this, new ChiefBase[] { }, aSourceEvent.Cards));
             aData.Game.PickRubbish(aSourceEvent.Cards);
             foreach (Card c in aSourceEvent.Cards)
             {
                 aData.Game.GamePlayers[aTarget].Hands.Add(c.GetOriginalCard());
             }
         }
     }
 }
Esempio n. 4
0
 public override void PreprocessingSubEvent(ChiefBase aTargetChief, ref GlobalEvent.EventRecoard aEvent, GlobalData aData)
 {
     if (aEvent.Effect == Card.Effect.Sha)
     {
         aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeAskForSkillMessage(aTargetChief, this));
         MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForYN(aTargetChief);
         if (res.YN)
         {
             aData.Game.AsynchronousCore.SendMessage(new Beaver("askfor.liuli.args", aTargetChief.ChiefName).ToString()); // new XElement("askfor.liuli.args", new XElement("target", aTargetChief.ChiefName)));
             res = aData.Game.AsynchronousCore.AskForCards(aTargetChief, MessageCore.AskForEnum.TargetHand, aTargetChief);
             if (res.Targets.Count() != 1)
             {
                 return;
             }
             if (res.Targets[0] == aTargetChief)
             {
                 return;
             }
             if (res.Targets[0] == aEvent.Source)
             {
                 return;
             }
             if (aData.Game.GamePlayers[res.Targets[0]].Dead)
             {
                 return;
             }
             if (!aData.Game.WithinShaRange(aTargetChief, res.Targets[0]))
             {
                 return;
             }
             aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aTargetChief, this, res.Targets, res.Cards));
             aData.Game.DropCards(true, GlobalEvent.CardFrom.Hand, SkillName, aData.Game.Response.Cards, Card.Effect.Skill, aTargetChief, null, null);
             aEvent.Target = res.Targets[0];
         }
     }
 }
Esempio n. 5
0
        public override void OnChiefHarmed(GlobalEvent.EventRecoard aSourceEvent, ChiefBase aSource, ChiefBase aTarget, GlobalData aData, sbyte aDamage)
        {
            if (aSource != null)
            {
                aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeAskForSkillMessage(aTarget, this));
                MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForYN(aTarget);
                if (res.YN == true)
                {
                    aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aTarget, this, new ChiefBase[] { aSource }, new Card[] { }));
                    Card judgement = aData.Game.popJudgementCard(aTarget, Card.Effect.GangLie);
                    aData.Game.DropCards(true, GlobalEvent.CardFrom.JudgementCard, res.SkillName, new Card[] { judgement }, Card.Effect.GangLie, aTarget, aSource, null);

                    if (judgement.CardHuaSe != Card.Suit.HongTao)
                    {
                        if (aData.Game.GamePlayers[aSource].Hands.Count < 2)
                        {
                            aData.Game.DamageHealth(aSource, 1, aTarget, new GlobalEvent.EventRecoard(aTarget, aSource, new Card[] { }, Card.Effect.None, res.SkillName));
                        }
                        else
                        {
                            aData.Game.AsynchronousCore.SendMessage(new Beaver("askfor.ganglie.cards", aTarget.ChiefName, aSource.ChiefName).ToString());  // new XElement("askfor.ganglie.cards", new XElement("target", aTarget.ChiefName), new XElement("target2", aSource.ChiefName)));
                            res = aData.Game.AsynchronousCore.AskForCardsWithCount(aSource, 2);
                            if (res.Cards.Count() != 2)
                            {
                                aData.Game.DamageHealth(aSource, 1, aTarget, new GlobalEvent.EventRecoard(aTarget, aSource, new Card[] { }, Card.Effect.None, res.SkillName));
                            }
                            else
                            {
                                aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeDropMessage(aSource, aSource, res.Cards));
                                aData.Game.DropCards(true, GlobalEvent.CardFrom.Hand, res.SkillName, res.Cards, Card.Effect.None, aSource, null, null);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 6
0
 /// <summary>
 /// 在处理子事件前发生的事件,将通知子事件中目标武将
 /// </summary>
 /// <param name="aTargetChief">目标武将</param>
 /// <param name="aEvent"></param>
 /// <param name="aData"></param>
 public virtual void PreprocessingSubEvent(ChiefBase aTargetChief, ref GlobalEvent.EventRecoard aEvent, GlobalData aData)
 {
 }
Esempio n. 7
0
 /// <summary>
 /// 玩家受到‘伤害’时执行的方法,被伤害武将会被触发该方法
 /// </summary>
 /// <param name="aSourceEvent">产生伤害的事件节点</param>
 /// <param name="aSource">伤害的来源武将,若伤害来源非武将造成,系统置此参数为null</param>
 /// <param name="aTarget">受到伤害的目标</param>
 /// <param name="aData">全局游戏对象</param>
 /// <param name="aDamage">伤害量</param>
 public virtual void OnChiefHarmed(GlobalEvent.EventRecoard aSourceEvent, ChiefBase aSource, ChiefBase aTarget, GlobalData aData, sbyte aDamage)
 {
 }
Esempio n. 8
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);
        }