using XmdsCommonServer.Plugin; using CommonLang; using CommonAI.Zone.Instance; using CommonAI.Zone; using XmdsCommon.Plugin; namespace XmdsCommonSkill.Plugin.Skills.Monster { /// /// 兽人祭司 - 复活: 复活附近已死亡的怪物,使其恢复100%生命和法力 /// public class Monster_10090202 : XmdsSkillBase { /// /// 技能ID. /// public static int ID = 10090202; public static int Range = 5; /// /// 获取技能ID. /// public override int SkillID { get { return ID; } } protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { //施放技能监听. unit.RegistTryLaunchSkillEvent(OnTryLaunchSkillEventHandle, info, false); } protected virtual bool OnTryLaunchSkillEventHandle(GameSkill skillInfo, ref InstanceUnit.SkillState skill, XmdsVirtual launcher, ref InstanceUnit.LaunchSkillParam param) { //复活附近已死亡的怪物,使其恢复100%生命和法力. using (var list = ListObjectPool.AllocAutoRelease()) { launcher.mUnit.Parent.getObjectsRoundRange( (obj, dx, dy, dr) => { var u = obj as InstanceUnit; //己方单位. if (u.IsDead() && launcher.IsAllies(u.Virtual as XmdsVirtual)) { return CMath.includeRoundPoint(dx, dy, dr, u.X, u.Y); } return false; }, launcher.mUnit.X, launcher.mUnit.Y, Range, list , launcher.mUnit.AoiStatus); if (list.Count > 0) { param.TargetUnitID = launcher.mUnit.ID; return true; } } return false; } protected override void OnSkillLogicEvent(BattleParams param) { //不产生伤害. param.UseDamageType = CommonAI.Data.DamageType.None; //复活附近已死亡的怪物,使其恢复100%生命和法力. using (var list = ListObjectPool.AllocAutoRelease()) { param.Attacker.mUnit.Parent.getObjectsRoundRange( (obj, dx, dy, dr) => { var u = obj as InstanceUnit; //己方单位. if (u.IsDead() && param.Attacker.IsAllies(u.Virtual as XmdsVirtual)) { return CMath.includeRoundPoint(dx, dy, dr, u.X, u.Y); } return false; }, param.Hitter.mUnit.X, param.Hitter.mUnit.Y, Range, list, param.Hitter.mUnit.AoiStatus); if (list.Count > 0) { for (int i = 0; i < list.Count; i++) { list[i].startRebirth(); } } } } } }