S60106.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Common.Utility.CombatEvent;
  2. using Fort23.Core;
  3. using GameLogic.Combat.Buff;
  4. using GameLogic.Combat.CombatTool;
  5. using GameLogic.Combat.Hero;
  6. namespace GameLogic.Combat.Skill
  7. {
  8. /// <summary>
  9. /// 死亡时恢复30%最大生命
  10. /// </summary>
  11. public class S60106 : SkillBasic
  12. {
  13. private int count;
  14. public event System.Action OnResurrected;
  15. protected override void ProActiveSkill()
  16. {
  17. count = 0;
  18. CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured);
  19. }
  20. private void HeroInjured(IEventData iEventData)
  21. {
  22. if (count > 0)
  23. {
  24. return;
  25. }
  26. HeroInjuredEventData heroInjuredEventData = iEventData as HeroInjuredEventData;
  27. if (heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity == CombatHeroEntity)
  28. {
  29. if (CombatHeroEntity.CurrCombatHeroInfo.hp <= 0)
  30. {
  31. count++;
  32. long hp= CombatHeroEntity.MaxCombatHeroInfo.hp.Value;
  33. long addHp = CombatCalculateTool.Instance.GetVlaueRatioForLong(hp, effectValue[0]);
  34. CombatCalculateTool.Instance.Recover(CombatHeroEntity,
  35. CombatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(), addHp, AttType.Skill, HarmType.Default,
  36. triggerData);
  37. OnResurrected?.Invoke();
  38. }
  39. }
  40. }
  41. protected override void ProDispose()
  42. {
  43. OnResurrected = null;
  44. CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroInjured, HeroInjured);
  45. }
  46. protected override void ProUseSkill()
  47. {
  48. }
  49. }
  50. }