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); } } } } } }
/// <summary> /// 是否允许执行伤害 /// </summary> /// <param name="aWeaponEffect">务求效果</param> /// <param name="aSource">伤害来源</param> /// <param name="aTarget">伤害目标</param> /// <param name="aData">游戏数据</param> /// <returns>返回是表示允许伤害(默认),返回false系统将不执行伤害</returns> public static bool EnableShaDamage(Card.Effect aWeaponEffect, ChiefBase aSource, ChiefBase aTarget, GlobalData aData) { bool ret = true; if (aSource != null && aTarget != null) { switch (aWeaponEffect) { case Card.Effect.HanBingJian: if (aData.Game.GamePlayers[aTarget].HasCard) { aData.Game.AsynchronousCore.SendMessage( new Beaver("askfor.hbj.select", aSource.ChiefName, aTarget.ChiefName).ToString()); //new XElement("askfor.hbj.select", // new XElement("target", aSource.ChiefName), // new XElement("target2" , aTarget.ChiefName) // ) //); MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForCards(aSource, MessageCore.AskForEnum.TargetCard, aTarget); if (res.Effect != Card.Effect.None) { ret = false; aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeDropMessage(aSource, aTarget, res.Cards)); //new XElement("drop", // new XElement("from", aSource.ChiefName), // new XElement("to", aTarget.ChiefName), // Card.Cards2XML("cards", res.Cards) // ) //); aData.Game.DropCards(false, GlobalEvent.CardFrom.HandAndEquipage, string.Empty, res.Cards, Card.Effect.None, aTarget, aSource, null); aData.Game.GamePlayers[aSource].Hands.AddRange(res.Cards); if (aData.Game.GamePlayers[aTarget].HasCard) { res = aData.Game.AsynchronousCore.AskForCards(aSource, MessageCore.AskForEnum.TargetCard, aTarget); if (res.Effect == Card.Effect.None) { res = new MessageCore.AskForResult(false, null, new ChiefBase[] { }, new Card[] { aData.Game.AutoSelect(aTarget) }, Card.Effect.GuoHeChaiQiao, false, true, string.Empty); } aData.Game.AsynchronousCore.SendMessage( MessageCore.MakeDropMessage(aSource, aTarget, res.Cards)); //new XElement("drop", // new XElement("from", aSource.ChiefName), // new XElement("to", aTarget.ChiefName), // Card.Cards2XML("cards", res.Cards) // ) //); aData.Game.DropCards(false, GlobalEvent.CardFrom.HandAndEquipage, string.Empty, res.Cards, Card.Effect.None, aTarget, aSource, null); aData.Game.GamePlayers[aSource].Hands.AddRange(res.Cards); } } } break; case Card.Effect.QiLinGong: if (aData.Game.GamePlayers[aTarget].Jia1Ma != null || aData.Game.GamePlayers[aTarget].Jian1Ma != null) { aData.Game.AsynchronousCore.SendMessage(new Beaver("askfor.qlg.select", aSource.ChiefName, aTarget.ChiefName).ToString()); //new XElement("askfor.qlg.select" , // new XElement("target", aSource.ChiefName), // new XElement("target2" , aTarget.ChiefName ) // ) //); MessageCore.AskForResult res = aData.Game.AsynchronousCore.AskForCards(aSource, MessageCore.AskForEnum.TargetHorse, aTarget); if (res.Effect != Card.Effect.None) { aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeDropMessage(aSource, aTarget, res.Cards)); //new XElement("drop", // new XElement("from", aSource.ChiefName), // new XElement("to", aTarget.ChiefName), // Card.Cards2XML("cards", res.Cards) // ) //); aData.Game.DropCards(false, GlobalEvent.CardFrom.Equipage, string.Empty, res.Cards, Card.Effect.None, aTarget, aSource, null); aData.Game.GamePlayers[aSource].Hands.AddRange(res.Cards); } } break; } } return(ret); }