Exemple #1
0
        /// <summary>
        /// 获得卡牌信息
        /// </summary>
        /// <param name="CardSn"></param>
        /// <returns></returns>
        public static String GetCardInfo(String CardSn)
        {
            StringBuilder Status = new StringBuilder();

            if (Card.CardUtility.GetCardInfoBySN(CardSn) != null)
            {
                Card.CardBasicInfo info = Card.CardUtility.GetCardInfoBySN(CardSn);
                Status.AppendLine("==============");
                Status.AppendLine("Description" + info.Description);
                Status.AppendLine("StandardCostPoint" + info.StandardCostPoint);
                Status.AppendLine("Type:" + info.CardType.ToString());
                switch (CardSn.Substring(0, 1))
                {
                case "A":
                    break;

                case "M":
                    Status.AppendLine("标准攻击力:" + ((Card.MinionCard)info).StandardAttackPoint.ToString());
                    Status.AppendLine("标准生命值:" + ((Card.MinionCard)info).标准生命值上限.ToString());
                    break;

                case "W":
                    Status.AppendLine("标准攻击力:" + ((Card.WeaponCard)info).StandardAttackPoint.ToString());
                    Status.AppendLine("标准耐久度:" + ((Card.WeaponCard)info).标准耐久度.ToString());
                    break;

                default:
                    break;
                }
                Status.AppendLine("==============");
            }
            return(Status.ToString());
        }
Exemple #2
0
        /// <summary>
        /// 开始一个动作
        /// </summary>
        /// <param name="game"></param>
        /// <param name="CardSn"></param>
        /// <param name="ConvertPosDirect">亡语的时候,需要倒置方向</param>
        /// <returns></returns>
        public static List <String> StartAction(GameManager game, String CardSn, Boolean ConvertPosDirect = false)
        {
            Card.CardBasicInfo card          = Card.CardUtility.GetCardInfoBySN(CardSn);
            List <String>      ActionCodeLst = new List <string>();

            switch (card.CardType)
            {
            case CardBasicInfo.CardTypeEnum.法术:
                ActionCodeLst.Add(UseAbility(CardSn));
                //初始化 Buff效果等等
                Card.AbilityCard ablity = (Card.AbilityCard)CardUtility.GetCardInfoBySN(CardSn);
                ablity.CardAbility.Init();
                var ResultArg = game.UseAbility(ablity, ConvertPosDirect);
                if (ResultArg.Count != 0)
                {
                    ActionCodeLst.AddRange(ResultArg);
                    //英雄技能的时候,不算[本方施法] A900001 幸运币
                    if (CardSn.Substring(1, 1) != "2")
                    {
                        ActionCodeLst.AddRange(game.MySelf.RoleInfo.BattleField.触发事件(MinionCard.事件类型列表.本方施法, game));
                    }
                }
                else
                {
                    ActionCodeLst.Clear();
                }
                break;

            case CardBasicInfo.CardTypeEnum.随从:
                int MinionPos = GetPutPos(game);
                if (MinionPos != -1)
                {
                    ActionCodeLst.Add(UseMinion(CardSn, MinionPos));
                    var minion = (Card.MinionCard)card;
                    //初始化
                    minion.Init();
                    game.MySelf.RoleInfo.BattleField.PutToBattle(MinionPos, minion);
                    ActionCodeLst.AddRange(minion.发动战吼(game));
                    game.MySelf.RoleInfo.BattleField.ResetBuff();
                }
                else
                {
                    ActionCodeLst.Clear();
                }
                break;

            case CardBasicInfo.CardTypeEnum.武器:
                ActionCodeLst.Add(UseWeapon(CardSn));
                game.MySelf.RoleInfo.Weapon = (Card.WeaponCard)card;
                break;

            case CardBasicInfo.CardTypeEnum.奥秘:
                ActionCodeLst.Add(UseSecret(CardSn));
                game.MySelf.奥秘列表.Add((Card.SecretCard)card);
                break;

            default:
                break;
            }
            return(ActionCodeLst);
        }
 /// <summary>
 /// 卡牌入战场
 /// </summary>
 /// <param name="Position"></param>
 /// <param name="CardSn"></param>
 public void PutToBattle(int Position, String CardSn)
 {
     Card.CardBasicInfo card = Card.CardUtility.GetCardInfoBySN(CardSn);
     PutToBattle(Position, (MinionCard)card);
 }
Exemple #4
0
        /// <summary>
        /// 开始一个动作
        /// </summary>
        /// <param name="game"></param>
        /// <param name="CardSn"></param>
        /// <param name="ConvertPosDirect">亡语的时候,需要倒置方向</param>
        /// <returns></returns>
        public static List <String> StartAction(GameManager game, String CardSn, Boolean ConvertPosDirect = false)
        {
            //清除事件池,注意,事件将在动作结束后整体结算
            game.事件池.Clear();
            Card.CardBasicInfo card          = Card.CardUtility.GetCardInfoBySN(CardSn);
            List <String>      ActionCodeLst = new List <string>();

            switch (card.CardType)
            {
            case CardBasicInfo.CardTypeEnum.法术:
                ActionCodeLst.Add(ActionCode.strAbility + CardUtility.strSplitMark + CardSn);
                //初始化 Buff效果等等
                Card.AbilityCard ablity = (Card.AbilityCard)CardUtility.GetCardInfoBySN(CardSn);
                //连击效果的法术修改
                if (game.MyInfo.连击状态 && (!String.IsNullOrEmpty(card.连击效果)))
                {
                    ablity = (Card.AbilityCard)CardUtility.GetCardInfoBySN(card.连击效果);
                }
                ablity.CardAbility.Init();
                var ResultArg = game.UseAbility(ablity, ConvertPosDirect);
                if (ResultArg.Count != 0)
                {
                    ActionCodeLst.AddRange(ResultArg);
                    //英雄技能等的时候,不算[本方施法]
                    if (CardSn.Substring(1, 1) == Card.AbilityCard.原生法术)
                    {
                        game.事件池.Add(new Card.CardUtility.全局事件()
                        {
                            事件类型 = CardUtility.事件类型列表.施法,
                            触发方向 = CardUtility.TargetSelectDirectEnum.本方,
                            触发位置 = Card.Client.BattleFieldInfo.HeroPos
                        });
                    }
                }
                else
                {
                    ActionCodeLst.Clear();
                }
                break;

            case CardBasicInfo.CardTypeEnum.随从:
                int MinionPos = 1;
                if (game.MyInfo.BattleField.MinionCount != 0)
                {
                    MinionPos = GetPutPos(game);
                }
                if (MinionPos != -1)
                {
                    ActionCodeLst.Add(ActionCode.strMinion + CardUtility.strSplitMark + CardSn + CardUtility.strSplitMark + MinionPos.ToString("D1"));
                    var minion = (Card.MinionCard)card;
                    //初始化
                    minion.Init();
                    //必须在放入之前做得原因是,被放入的随从不能被触发这个事件
                    game.事件池.Add(new Card.CardUtility.全局事件()
                    {
                        事件类型 = CardUtility.事件类型列表.召唤,
                        附加信息 = minion.种族.ToString(),
                        触发位置 = MinionPos
                    });
                    switch (minion.战吼类型)
                    {
                    case MinionCard.战吼类型列表.默认:
                        game.MyInfo.BattleField.PutToBattle(MinionPos, minion);
                        ActionCodeLst.AddRange(minion.发动战吼(game));
                        break;

                    case MinionCard.战吼类型列表.抢先:
                        //战吼中,其他 系列的法术效果
                        foreach (var result in minion.发动战吼(game))
                        {
                            var resultArray = result.Split(CardUtility.strSplitMark.ToCharArray());
                            if (int.Parse(resultArray[2]) < MinionPos)
                            {
                                ActionCodeLst.Add(result);
                            }
                            else
                            {
                                ActionCodeLst.Add(resultArray[0] + CardUtility.strSplitMark + resultArray[1] + CardUtility.strSplitMark +
                                                  (int.Parse(resultArray[2]) + 1).ToString() + CardUtility.strSplitMark + resultArray[3]);
                            }
                        }
                        game.MyInfo.BattleField.PutToBattle(MinionPos, minion);
                        break;

                    case MinionCard.战吼类型列表.相邻:
                    case MinionCard.战吼类型列表.自身:
                        game.MyInfo.BattleField.PutToBattle(MinionPos, minion);
                        game.MyInfo.BattleField.发动战吼(MinionPos);
                        break;

                    default:
                        break;
                    }
                    game.MyInfo.BattleField.ResetBuff();
                }
                else
                {
                    ActionCodeLst.Clear();
                }
                break;

            case CardBasicInfo.CardTypeEnum.武器:
                ActionCodeLst.Add(ActionCode.strWeapon + CardUtility.strSplitMark + CardSn);
                game.MyInfo.Weapon = (Card.WeaponCard)card;
                break;

            case CardBasicInfo.CardTypeEnum.奥秘:
                ActionCodeLst.Add(ActionCode.strSecret + CardUtility.strSplitMark + CardSn);
                game.MySelfInfo.奥秘列表.Add((Card.SecretCard)card);
                game.MyInfo.SecretCount = game.MySelfInfo.奥秘列表.Count;
                break;

            default:
                break;
            }
            //随从卡牌的连击效果启动
            if (card.CardType != CardBasicInfo.CardTypeEnum.法术 && game.MyInfo.连击状态)
            {
                if (!String.IsNullOrEmpty(card.连击效果))
                {
                    //初始化 Buff效果等等
                    Card.AbilityCard ablity = (Card.AbilityCard)CardUtility.GetCardInfoBySN(card.连击效果);
                    ablity.CardAbility.Init();
                    var ResultArg = game.UseAbility(ablity, ConvertPosDirect);
                    if (ResultArg.Count != 0)
                    {
                        ActionCodeLst.AddRange(ResultArg);
                        //英雄技能等的时候,不算[本方施法]
                        if (CardSn.Substring(1, 1) == Card.AbilityCard.原生法术)
                        {
                            game.事件池.Add(new Card.CardUtility.全局事件()
                            {
                                事件类型 = CardUtility.事件类型列表.施法,
                                触发方向 = CardUtility.TargetSelectDirectEnum.本方,
                                触发位置 = Card.Client.BattleFieldInfo.HeroPos
                            });
                        }
                    }
                }
            }
            if (ActionCodeLst.Count != 0)
            {
                game.MyInfo.连击状态 = true;
                ActionCodeLst.AddRange(game.事件处理());
            }
            return(ActionCodeLst);
        }
        /// <summary>
        /// 开始一个动作
        /// </summary>
        /// <param name="game"></param>
        /// <param name="CardSn"></param>
        /// <param name="ConvertPosDirect">亡语的时候,需要倒置方向</param>
        /// <returns></returns>
        public static List <String> StartAction(GameManager game, String CardSn, Boolean ConvertPosDirect = false)
        {
            Card.CardBasicInfo card          = Card.CardUtility.GetCardInfoBySN(CardSn);
            List <String>      ActionCodeLst = new List <string>();

            switch (card.CardType)
            {
            case CardBasicInfo.CardTypeEnum.法术:
                ActionCodeLst.Add(UseAbility(CardSn));
                //初始化 Buff效果等等
                Card.AbilityCard ablity = (Card.AbilityCard)CardUtility.GetCardInfoBySN(CardSn);
                ablity.CardAbility.Init();
                var ResultArg = game.UseAbility(ablity, ConvertPosDirect);
                if (ResultArg.Count != 0)
                {
                    ActionCodeLst.AddRange(ResultArg);
                    //英雄技能的时候,不算[本方施法] A900001 幸运币
                    if (CardSn.Substring(1, 1) != "2")
                    {
                        ActionCodeLst.AddRange(game.MySelf.RoleInfo.BattleField.触发事件(MinionCard.事件类型列表.本方施法, game));
                    }
                }
                else
                {
                    ActionCodeLst.Clear();
                }
                break;

            case CardBasicInfo.CardTypeEnum.随从:
                int MinionPos = GetPutPos(game);
                if (MinionPos != -1)
                {
                    ActionCodeLst.Add(UseMinion(CardSn, MinionPos));
                    var minion = (Card.MinionCard)card;
                    //初始化
                    minion.Init();
                    switch (minion.战吼类型)
                    {
                    case MinionCard.战吼类型列表.默认:
                        game.MySelf.RoleInfo.BattleField.PutToBattle(MinionPos, minion);
                        ActionCodeLst.AddRange(minion.发动战吼(game));
                        break;

                    case MinionCard.战吼类型列表.抢先:
                        //战吼中,其他 系列的法术效果
                        foreach (var result in minion.发动战吼(game))
                        {
                            var resultArray = result.Split(CardUtility.strSplitMark.ToCharArray());
                            if (int.Parse(resultArray[2]) < MinionPos)
                            {
                                ActionCodeLst.Add(result);
                            }
                            else
                            {
                                ActionCodeLst.Add(resultArray[0] + CardUtility.strSplitMark + resultArray[1] + CardUtility.strSplitMark +
                                                  (int.Parse(resultArray[2]) + 1).ToString() + CardUtility.strSplitMark + resultArray[3]);
                            }
                        }
                        game.MySelf.RoleInfo.BattleField.PutToBattle(MinionPos, minion);
                        break;

                    case MinionCard.战吼类型列表.相邻:
                    case MinionCard.战吼类型列表.自身:
                        game.MySelf.RoleInfo.BattleField.PutToBattle(MinionPos, minion);
                        game.MySelf.RoleInfo.BattleField.发动战吼(MinionPos);
                        break;

                    default:
                        break;
                    }
                    game.MySelf.RoleInfo.BattleField.ResetBuff();
                }
                else
                {
                    ActionCodeLst.Clear();
                }
                break;

            case CardBasicInfo.CardTypeEnum.武器:
                ActionCodeLst.Add(UseWeapon(CardSn));
                game.MySelf.RoleInfo.Weapon = (Card.WeaponCard)card;
                break;

            case CardBasicInfo.CardTypeEnum.奥秘:
                ActionCodeLst.Add(UseSecret(CardSn));
                game.MySelf.奥秘列表.Add((Card.SecretCard)card);
                break;

            default:
                break;
            }
            return(ActionCodeLst);
        }
Exemple #6
0
        /// <summary>
        /// 开始一个动作
        /// </summary>
        /// <param name="game"></param>
        /// <param name="CardSn"></param>
        /// <param name="ConvertPosDirect">亡语的时候,需要倒置方向</param>
        /// <returns></returns>
        public static List <String> StartAction(GameManager game, String CardSn, Boolean ConvertPosDirect = false)
        {
            Card.CardBasicInfo card          = Card.CardUtility.GetCardInfoBySN(CardSn);
            List <String>      ActionCodeLst = new List <string>();

            switch (card.CardType)
            {
            case CardBasicInfo.CardTypeEnum.法术:
                ActionCodeLst.Add(UseAbility(CardSn));
                //初始化 Buff效果等等
                Card.AbilityCard ablity = (Card.AbilityCard)CardUtility.GetCardInfoBySN(CardSn);
                //连击效果的法术修改
                if (game.MySelf.RoleInfo.IsCombit && (!String.IsNullOrEmpty(card.连击效果)))
                {
                    ablity = (Card.AbilityCard)CardUtility.GetCardInfoBySN(card.连击效果);
                }
                ablity.CardAbility.Init();
                var ResultArg = game.UseAbility(ablity, ConvertPosDirect);
                if (ResultArg.Count != 0)
                {
                    ActionCodeLst.AddRange(ResultArg);
                    //英雄技能等的时候,不算[本方施法]
                    if (CardSn.Substring(1, 1) == "0")
                    {
                        ActionCodeLst.AddRange(game.MySelf.RoleInfo.BattleField.触发事件(new Card.CardUtility.全局事件()
                        {
                            事件类型 = CardUtility.事件类型列表.施法
                        }, game));
                    }
                }
                else
                {
                    ActionCodeLst.Clear();
                }
                break;

            case CardBasicInfo.CardTypeEnum.随从:
                int MinionPos = 1;
                if (game.MySelf.RoleInfo.BattleField.MinionCount != 0)
                {
                    MinionPos = GetPutPos(game);
                }
                if (MinionPos != -1)
                {
                    ActionCodeLst.Add(UseMinion(CardSn, MinionPos));
                    var minion = (Card.MinionCard)card;
                    //初始化
                    minion.Init();
                    //必须在放入之前做得原因是,被放入的随从不能被触发这个事件
                    ActionCodeLst.AddRange(game.MySelf.RoleInfo.BattleField.触发事件(
                                               new Card.CardUtility.全局事件()
                    {
                        事件类型 = CardUtility.事件类型列表.召唤, 附加信息 = minion.种族.ToString()
                    }, game));
                    switch (minion.战吼类型)
                    {
                    case MinionCard.战吼类型列表.默认:
                        game.MySelf.RoleInfo.BattleField.PutToBattle(MinionPos, minion);
                        ActionCodeLst.AddRange(minion.发动战吼(game));
                        break;

                    case MinionCard.战吼类型列表.抢先:
                        //战吼中,其他 系列的法术效果
                        foreach (var result in minion.发动战吼(game))
                        {
                            var resultArray = result.Split(CardUtility.strSplitMark.ToCharArray());
                            if (int.Parse(resultArray[2]) < MinionPos)
                            {
                                ActionCodeLst.Add(result);
                            }
                            else
                            {
                                ActionCodeLst.Add(resultArray[0] + CardUtility.strSplitMark + resultArray[1] + CardUtility.strSplitMark +
                                                  (int.Parse(resultArray[2]) + 1).ToString() + CardUtility.strSplitMark + resultArray[3]);
                            }
                        }
                        game.MySelf.RoleInfo.BattleField.PutToBattle(MinionPos, minion);
                        break;

                    case MinionCard.战吼类型列表.相邻:
                    case MinionCard.战吼类型列表.自身:
                        game.MySelf.RoleInfo.BattleField.PutToBattle(MinionPos, minion);
                        game.MySelf.RoleInfo.BattleField.发动战吼(MinionPos);
                        break;

                    default:
                        break;
                    }
                    game.MySelf.RoleInfo.BattleField.ResetBuff();
                }
                else
                {
                    ActionCodeLst.Clear();
                }
                break;

            case CardBasicInfo.CardTypeEnum.武器:
                ActionCodeLst.Add(UseWeapon(CardSn));
                game.MySelf.RoleInfo.Weapon = (Card.WeaponCard)card;
                break;

            case CardBasicInfo.CardTypeEnum.奥秘:
                ActionCodeLst.Add(UseSecret(CardSn));
                game.MySelf.奥秘列表.Add((Card.SecretCard)card);
                game.MySelf.RoleInfo.SecretCount = game.MySelf.奥秘列表.Count;
                break;

            default:
                break;
            }
            //连击启动(法术的时候是修改法术内容)
            if (card.CardType != CardBasicInfo.CardTypeEnum.法术 && game.MySelf.RoleInfo.IsCombit)
            {
                if (!String.IsNullOrEmpty(card.连击效果))
                {
                    //初始化 Buff效果等等
                    Card.AbilityCard ablity = (Card.AbilityCard)CardUtility.GetCardInfoBySN(card.连击效果);
                    ablity.CardAbility.Init();
                    var ResultArg = game.UseAbility(ablity, ConvertPosDirect);
                    if (ResultArg.Count != 0)
                    {
                        ActionCodeLst.AddRange(ResultArg);
                        //英雄技能等的时候,不算[本方施法]
                        if (CardSn.Substring(1, 1) == "0")
                        {
                            ActionCodeLst.AddRange(game.MySelf.RoleInfo.BattleField.触发事件(new Card.CardUtility.全局事件()
                            {
                                事件类型 = CardUtility.事件类型列表.施法
                            }, game));
                        }
                    }
                }
            }
            if (ActionCodeLst.Count != 0)
            {
                game.MySelf.RoleInfo.IsCombit = true;
            }
            return(ActionCodeLst);
        }