Beispiel #1
0
        // TODO: 复活技能.
        // type: 0--随机复活 1--从前向后 2--从后到前
        private void castReviveSkill(int num, int type, int angryCost = 0)
        {
            BT_MonsterTeam selfTeam = owner.ownerTeam;

            // 扣怒气...
            if (angryCost > 0)
            {
                selfTeam.costAngry(angryCost);
            }

            List <BT_Monster> dieArr      = new List <BT_Monster>();
            List <BT_Monster> sortDieArry = new List <BT_Monster>();

            foreach (BT_Monster pet in selfTeam._team)
            {
                if (pet == owner)
                {
                    break;
                }
                if (!pet.alive)
                {
                    dieArr.Add(pet);
                }
            }

            int tataoDieCount = dieArr.Count;

            if (tataoDieCount >= 1)
            {
                if (0 == type)
                {
                    BT_WarUtils.Shuffle(dieArr);
                    type = 1;
                }

                int minCount = tataoDieCount > num ? num : tataoDieCount;

                for (int j = 0; j < minCount; j++)
                {
                    sortDieArry.Add(dieArr [j]);
                }

                sortDieArry.Sort(my_sort);

                BT_Logical      war = owner._war;
                CMsgSkillRevive msg = new CMsgSkillRevive(this);
                war.addMsgToRecorder(msg);
                msg.reviveArr = new int[minCount];

                for (int i = 0; i < minCount; i++)
                {
                    BT_Monster pet = type == 1 ? array_shift(sortDieArry) : array_pop(sortDieArry);
                    if (pet != null)
                    {
                        pet.revive();
                        selfTeam._team.Add(pet);
                        msg.reviveArr [i] = pet.pveId;
                    }
                }
                selfTeam.teamLenChanged();
            }
            else
            {
                //如果没有人死亡,则奥义的技能就算没触发过
                if (real == 1)
                {
                    BT_Logical war = owner._war;
                    war.resetAoYi(this, selfTeam);
                }
            }
        }