using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.Buff; using GameLogic.Combat.CombatTool; using GameLogic.Combat.Hero; namespace GameLogic.Combat.Skill { /// /// 死亡时恢复30%最大生命 /// public class S60106 : SkillBasic { private int count; public event System.Action OnResurrected; protected override void ProActiveSkill() { count = 0; CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured); } private void HeroInjured(IEventData iEventData) { if (count > 0) { return; } HeroInjuredEventData heroInjuredEventData = iEventData as HeroInjuredEventData; if (heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity == CombatHeroEntity) { if (CombatHeroEntity.CurrCombatHeroInfo.hp <= 0) { count++; long hp= CombatHeroEntity.MaxCombatHeroInfo.hp.Value; long addHp = CombatCalculateTool.Instance.GetVlaueRatioForLong(hp, effectValue[0]); CombatCalculateTool.Instance.Recover(CombatHeroEntity, CombatHeroEntity.GetMainHotPoin(), addHp, AttType.Skill, HarmType.Default, triggerData); OnResurrected?.Invoke(); } } } protected override void ProDispose() { OnResurrected = null; CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroInjured, HeroInjured); } protected override void ProUseSkill() { } } }