/// <summary> /// 使用法术 /// </summary> /// <param name="card"></param> /// <param name="ConvertPosDirect">对象方向转换</param> public List <String> UseAbility(Card.AbilityCard card, Boolean ConvertPosDirect) { List <String> Result = new List <string>(); //法术伤害 if (MySelf.RoleInfo.BattleField.AbilityEffect != 0) { //法术强度本意是增加法术卡的总伤。以奥术飞弹为例,法术强度+1会令奥术飞弹多1发伤害,而非单发伤害+1。法术强度不影响治疗效果。 switch (card.CardAbility.FirstAbilityDefine.AbilityEffectType) { case EffectDefine.AbilityEffectEnum.攻击: if (card.CardAbility.FirstAbilityDefine.StandardEffectCount == 1) { card.CardAbility.FirstAbilityDefine.ActualEffectPoint = card.CardAbility.FirstAbilityDefine.StandardEffectPoint + MySelf.RoleInfo.BattleField.AbilityEffect; } else { card.CardAbility.FirstAbilityDefine.ActualEffectCount = card.CardAbility.FirstAbilityDefine.StandardEffectCount + MySelf.RoleInfo.BattleField.AbilityEffect; } break; case EffectDefine.AbilityEffectEnum.回复: card.CardAbility.FirstAbilityDefine.ActualEffectPoint = card.CardAbility.FirstAbilityDefine.StandardEffectPoint + MySelf.RoleInfo.BattleField.AbilityEffect; break; } if (card.CardAbility.SecondAbilityDefine.AbilityEffectType != EffectDefine.AbilityEffectEnum.未定义) { switch (card.CardAbility.SecondAbilityDefine.AbilityEffectType) { case EffectDefine.AbilityEffectEnum.攻击: if (card.CardAbility.SecondAbilityDefine.StandardEffectCount == 1) { card.CardAbility.SecondAbilityDefine.ActualEffectPoint = card.CardAbility.SecondAbilityDefine.StandardEffectPoint + MySelf.RoleInfo.BattleField.AbilityEffect; } else { card.CardAbility.SecondAbilityDefine.ActualEffectCount = card.CardAbility.SecondAbilityDefine.StandardEffectCount + MySelf.RoleInfo.BattleField.AbilityEffect; } break; case EffectDefine.AbilityEffectEnum.回复: card.CardAbility.SecondAbilityDefine.ActualEffectPoint = card.CardAbility.SecondAbilityDefine.StandardEffectPoint + MySelf.RoleInfo.BattleField.AbilityEffect; break; } } } Card.CardUtility.PickEffect PickEffectResult = CardUtility.PickEffect.第一效果; if (card.CardAbility.IsNeedSelect()) { PickEffectResult = PickEffect(card.CardAbility.FirstAbilityDefine.Description, card.CardAbility.SecondAbilityDefine.Description); if (PickEffectResult == CardUtility.PickEffect.取消) { return(new List <string>()); } } var SingleEffectList = card.CardAbility.GetSingleEffectList(PickEffectResult == CardUtility.PickEffect.第一效果); for (int i = 0; i < SingleEffectList.Count; i++) { Card.CardUtility.TargetPosition Pos = new CardUtility.TargetPosition(); var singleEff = SingleEffectList[i]; singleEff.StandardEffectCount = 1; if (singleEff.IsNeedSelectTarget()) { Pos = GetSelectTarget(singleEff.EffectTargetSelectDirect, singleEff.EffectTargetSelectRole, false); //取消处理 if (Pos.Postion == -1) { return(new List <string>()); } } else { if (ConvertPosDirect) { switch (singleEff.EffectTargetSelectDirect) { case CardUtility.TargetSelectDirectEnum.本方: singleEff.EffectTargetSelectDirect = CardUtility.TargetSelectDirectEnum.对方; break; case CardUtility.TargetSelectDirectEnum.对方: singleEff.EffectTargetSelectDirect = CardUtility.TargetSelectDirectEnum.本方; break; case CardUtility.TargetSelectDirectEnum.双方: break; default: break; } } } Result.AddRange(EffectDefine.RunSingleEffect(singleEff, this, Pos, Seed)); Seed++; //每次原子操作后进行一次清算 //将亡语效果也发送给对方 Result.AddRange(Settle()); } return(Result); }
/// <summary> /// 使用法术 /// </summary> /// <param name="card"></param> /// <param name="ConvertPosDirect">对象方向转换</param> public List <String> UseAbility(Card.AbilityCard card, Boolean ConvertPosDirect) { List <String> Result = new List <string>(); //法术伤害 if (MySelf.RoleInfo.BattleField.AbilityEffect != 0) { card.JustfyEffectPoint(MySelf.RoleInfo.BattleField.AbilityEffect); } Card.CardUtility.PickEffect PickEffectResult = CardUtility.PickEffect.第一效果; if (card.CardAbility.IsNeedSelect()) { PickEffectResult = PickEffect(card.CardAbility.FirstAbilityDefine.Description, card.CardAbility.SecondAbilityDefine.Description); if (PickEffectResult == CardUtility.PickEffect.取消) { return(new List <string>()); } } var SingleEffectList = card.CardAbility.GetSingleEffectList(PickEffectResult == CardUtility.PickEffect.第一效果); //Pos放在循环外部,这样的话,达到继承的效果 Card.CardUtility.TargetPosition TargetPosInfo = new CardUtility.TargetPosition(); for (int i = 0; i < SingleEffectList.Count; i++) { var singleEffect = SingleEffectList[i]; singleEffect.StandardEffectCount = 1; if (singleEffect.IsNeedSelectTarget()) { TargetPosInfo = GetSelectTarget(singleEffect.SelectOpt, false); //取消处理 if (TargetPosInfo.Postion == -1) { return(new List <string>()); } } else { if (ConvertPosDirect) { switch (singleEffect.SelectOpt.EffectTargetSelectDirect) { case CardUtility.TargetSelectDirectEnum.本方: singleEffect.SelectOpt.EffectTargetSelectDirect = CardUtility.TargetSelectDirectEnum.对方; break; case CardUtility.TargetSelectDirectEnum.对方: singleEffect.SelectOpt.EffectTargetSelectDirect = CardUtility.TargetSelectDirectEnum.本方; break; case CardUtility.TargetSelectDirectEnum.双方: break; default: break; } } } Result.AddRange(EffectDefine.RunSingleEffect(singleEffect, this, TargetPosInfo, Seed)); Seed++; //每次原子操作后进行一次清算 //将亡语效果也发送给对方 Result.AddRange(Settle()); } return(Result); }