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()
        {
        }
    }
}