/// <summary> /// 运行法术 /// </summary> /// <param name="game"></param> /// <param name="IsMyAction"></param> /// <param name="Ability"></param> /// <returns></returns> public static List <string> RunAbility(ActionStatus game, AbilityDefine Ability) { List <string> Result = new List <string>(); //对象选择处理 if (Ability.MainAbilityDefine.AbliltyPosPicker.IsNeedTargetSelect()) { //如果是BS的话,可以通过game的上下文数据获得位置信息 if (SystemManager.游戏类型 == SystemManager.GameType.HTML版) { //如果是随从卡牌的时候,这里是战吼的动作,战吼的动作的话,前面已经对于指定位置的设置了 if (game.ActionName == "USESPELLCARD") { Ability.MainAbilityDefine.AbliltyPosPicker.SelectedPos = CardUtility.指定位置结构体.FromString(game.Interrupt.SessionDic["SPELLPOSITION"]); } } else { Ability.MainAbilityDefine.AbliltyPosPicker.SelectedPos = ActionStatus.GetSelectTarget(Ability.MainAbilityDefine.AbliltyPosPicker); } } //取消处理 if (Ability.MainAbilityDefine.AbliltyPosPicker.SelectedPos.位置 == Client.BattleFieldInfo.UnknowPos) { Result.Clear(); return(Result); } //法术伤害对于攻击型效果的加成 if (Ability.MainAbilityDefine.效果条件 == CardUtility.strIgnore && Ability.MainAbilityDefine.EffectCount > 1) { Ability.MainAbilityDefine.EffectCount += game.AllRole.MyPublicInfo.BattleField.AbilityDamagePlus; } //按照回数执行效果 for (int cnt = 0; cnt < Ability.MainAbilityDefine.EffectCount; cnt++) { //系统法术:有些法术的True和False是不同的类型 RunEffect(game, Ability.MainAbilityDefine, Result); ActionStatus.RandomSeed++; //是否每次结算?这里的逻辑需要确认! Result.AddRange(ActionStatus.Settle(game)); } //追加条件计算 if (Ability.AppendAbilityDefine == null || (!ExpressHandler.AppendAbilityCondition(game, Ability))) { return(Result); } //按照回数执行追加效果 //继承主效果的选定位置信息 Ability.AppendAbilityDefine.AbliltyPosPicker.SelectedPos = Ability.MainAbilityDefine.AbliltyPosPicker.SelectedPos; for (int cnt = 0; cnt < Ability.AppendAbilityDefine.EffectCount; cnt++) { //系统法术 RunEffect(game, Ability.AppendAbilityDefine, Result); ActionStatus.RandomSeed++; Result.AddRange(ActionStatus.Settle(game)); } return(Result); }
/// <summary> /// 运行法术 /// </summary> /// <param name="game"></param> /// <param name="IsMyAction"></param> /// <param name="Ability"></param> /// <returns></returns> public static List<string> RunAbility(ActionStatus game, AbilityDefine Ability) { List<string> Result = new List<string>(); //对象选择处理 if (Ability.MainAbilityDefine.AbliltyPosPicker.IsNeedTargetSelect()) { //如果是BS的话,可以通过game的上下文数据获得位置信息 if (SystemManager.游戏类型 == SystemManager.GameType.HTML版) { //如果是随从卡牌的时候,这里是战吼的动作,战吼的动作的话,前面已经对于指定位置的设置了 if (game.ActionName == "USESPELLCARD") { Ability.MainAbilityDefine.AbliltyPosPicker.SelectedPos = CardUtility.指定位置结构体.FromString(game.Interrupt.SessionDic["SPELLPOSITION"]); } } else { Ability.MainAbilityDefine.AbliltyPosPicker.SelectedPos = ActionStatus.GetSelectTarget(Ability.MainAbilityDefine.AbliltyPosPicker); } } //取消处理 if (Ability.MainAbilityDefine.AbliltyPosPicker.SelectedPos.位置 == Client.BattleFieldInfo.UnknowPos) { Result.Clear(); return Result; } //法术伤害对于攻击型效果的加成 if (Ability.MainAbilityDefine.效果条件 == CardUtility.strIgnore && Ability.MainAbilityDefine.EffectCount > 1) { Ability.MainAbilityDefine.EffectCount += game.AllRole.MyPublicInfo.BattleField.AbilityDamagePlus; } //按照回数执行效果 for (int cnt = 0; cnt < Ability.MainAbilityDefine.EffectCount; cnt++) { //系统法术:有些法术的True和False是不同的类型 RunEffect(game, Ability.MainAbilityDefine, Result); ActionStatus.RandomSeed++; //是否每次结算?这里的逻辑需要确认! Result.AddRange(ActionStatus.Settle(game)); } //追加条件计算 if (Ability.AppendAbilityDefine == null || (!ExpressHandler.AppendAbilityCondition(game, Ability))) { return Result; } //按照回数执行追加效果 //继承主效果的选定位置信息 Ability.AppendAbilityDefine.AbliltyPosPicker.SelectedPos = Ability.MainAbilityDefine.AbliltyPosPicker.SelectedPos; for (int cnt = 0; cnt < Ability.AppendAbilityDefine.EffectCount; cnt++) { //系统法术 RunEffect(game, Ability.AppendAbilityDefine, Result); ActionStatus.RandomSeed++; Result.AddRange(ActionStatus.Settle(game)); } return Result; }