// 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); } } }