コード例 #1
0
        /// <summary>
        /// 实施效果
        /// </summary>
        /// <param name="singleEffect">效果</param>
        /// <param name="Field"></param>
        /// <param name="Pos">指定对象</param>
        /// <returns></returns>
        public static List <String> RunSingleEffect(EffectDefine singleEffect, Card.Client.GameManager game, Card.CardUtility.TargetPosition Pos, int Seed)
        {
            List <String> Result  = new List <string>();
            List <String> PosList = Card.Effect.EffectDefine.GetTargetList(singleEffect, game, Pos, Seed);

            //切记,这里的EffectCount都是1
            switch (singleEffect.AbilityEffectType)
            {
            case AbilityEffectEnum.攻击:
                Result.AddRange(AttackEffect.RunEffect(singleEffect, game, PosList));
                break;

            case AbilityEffectEnum.回复:
                Result.AddRange(HealthEffect.RunEffect(singleEffect, game, PosList));
                break;

            case AbilityEffectEnum.状态:
                Result.AddRange(StatusEffect.RunEffect(singleEffect, game, PosList));
                break;

            case AbilityEffectEnum.召唤:
                Result.AddRange(SummonEffect.RunEffect(singleEffect, game, Seed));
                break;

            case AbilityEffectEnum.点数:
                Result.AddRange(PointEffect.RunEffect(singleEffect, game, PosList));
                break;

            case AbilityEffectEnum.卡牌:
                Result.AddRange(CardEffect.RunEffect(singleEffect, game));
                break;

            case AbilityEffectEnum.变形:
                Result.AddRange(TransformEffect.RunEffect(singleEffect, game, Pos));
                break;

            case AbilityEffectEnum.水晶:
                Result.AddRange(CrystalEffect.RunEffect(singleEffect, game));
                break;

            case AbilityEffectEnum.控制:
                Result.AddRange(ControlEffect.RunEffect(singleEffect, game, PosList));
                break;

            case AbilityEffectEnum.奥秘:
                break;

            default:
                break;
            }
            return(Result);
        }
コード例 #2
0
        /// <summary>
        /// 运行奥秘
        /// </summary>
        /// <param name="SecretCardSN"></param>
        /// <param name="ActionCode"></param>
        /// <param name="HitMySelf"></param>
        /// <returns></returns>
        public static List <String> RunSecretHit(String SecretCardSN, String ActionCode, Boolean HitMySelf, Card.Client.GameManager game)
        {
            List <String> ActionLst   = new List <string>();
            SecretCard    card        = (SecretCard)CardUtility.GetCardInfoBySN(SecretCardSN);
            var           actiontype  = Card.Server.ActionCode.GetActionType(ActionCode);
            var           actionField = ActionCode.Split(Card.CardUtility.strSplitMark.ToCharArray());

            ActionLst.Add(Card.Server.ActionCode.strHitSecret + CardUtility.strSplitMark + (HitMySelf ? CardUtility.strMe : CardUtility.strYou) +
                          CardUtility.strSplitMark + SecretCardSN);
            //HitMySelf 在自己的回合运行自己的奥秘
            switch (card.Condition)
            {
            case SecretCondition.对方召唤随从:
                //如果是召唤系的
                if (HitMySelf)
                {
                    //在自己的回合运行自己的奥秘
                    //SUMMON#YOU#M000001#POS
                    //例如:亡语的时候可能召唤一个新的随从
                    PointEffect.RunPointEffect(game.YourInfo.BattleField.BattleMinions[int.Parse(actionField[3]) - 1], card.AdditionInfo);
                    ActionLst.Add(Card.Server.ActionCode.strPoint + Card.CardUtility.strSplitMark + CardUtility.strYou + Card.CardUtility.strSplitMark +
                                  actionField[3] + Card.CardUtility.strSplitMark + card.AdditionInfo);
                }
                else
                {
                    //在自己的回合运行别人的奥秘
                    if (actiontype == Server.ActionCode.ActionType.Summon)
                    {
                        //SUMMON#YOU#M000001#POS
                        PointEffect.RunPointEffect(game.MyInfo.BattleField.BattleMinions[int.Parse(actionField[3]) - 1], card.AdditionInfo);
                        ActionLst.Add(Card.Server.ActionCode.strPoint + Card.CardUtility.strSplitMark + CardUtility.strMe + Card.CardUtility.strSplitMark +
                                      actionField[3] + Card.CardUtility.strSplitMark + card.AdditionInfo);
                    }
                    else
                    {
                        //MINION#M000001#1
                        PointEffect.RunPointEffect(game.MyInfo.BattleField.BattleMinions[int.Parse(actionField[2]) - 1], card.AdditionInfo);
                        ActionLst.Add(Card.Server.ActionCode.strPoint + Card.CardUtility.strSplitMark + CardUtility.strMe + Card.CardUtility.strSplitMark +
                                      actionField[2] + Card.CardUtility.strSplitMark + card.AdditionInfo);
                    }
                }
                break;

            default:
                break;
            }
            return(ActionLst);
        }