S2005.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using Common.Utility.CombatEvent;
  2. using Fort23.Core;
  3. using GameLogic.Combat.CombatTool;
  4. using GameLogic.Player;
  5. using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
  6. namespace GameLogic.Combat.Skill
  7. {
  8. /// <summary>
  9. /// 火焰决 每层经过火经脉时使火系功法伤害提升1%,最多叠加20层
  10. /// 跌到满层后火系功法对敌人照成的伤害都会让敌人灼烧1层
  11. /// </summary>
  12. public class S2005 : SkillBasic
  13. {
  14. private int _currAddCount;
  15. protected override void ProUseSkill()
  16. {
  17. }
  18. protected override void ProReplace()
  19. {
  20. _currAddCount = 0;
  21. CombatEventManager.Instance.RemoveEventListener(CombatEventType.StartInjured, StartInjured);
  22. CombatEventManager.Instance.RemoveEventListener(CombatEventType.TriggerSkillSlots, TriggerSkillSlots);
  23. }
  24. protected override void ProActiveSkill()
  25. {
  26. CombatEventManager.Instance.AddEventListener(CombatEventType.StartInjured, StartInjured);
  27. CombatEventManager.Instance.AddEventListener(CombatEventType.TriggerSkillSlots, TriggerSkillSlots);
  28. }
  29. private void TriggerSkillSlots(IEventData iEventData)
  30. {
  31. TriggerSkillSlotsEventData triggerSkillSlotsEventData = iEventData as TriggerSkillSlotsEventData;
  32. if (triggerSkillSlotsEventData.SkillBasic == this)
  33. {
  34. if (triggerSkillSlotsEventData.triggerType == 3) //触发到火的位置
  35. {
  36. _currAddCount++;
  37. if (_currAddCount > effectValue[1])
  38. {
  39. _currAddCount = (int)effectValue[1];
  40. }
  41. }
  42. }
  43. }
  44. private void StartInjured(IEventData iEventData)
  45. {
  46. StartInjuredEventData heroInjuredEventData = iEventData as StartInjuredEventData;
  47. if (heroInjuredEventData.HarmReturnInfo.source == CombatHeroEntity)
  48. {
  49. SkillBasic skillBasic = heroInjuredEventData.HarmReturnInfo.triggerData.Source as SkillBasic;
  50. if (skillBasic == null || !skillBasic.wuXingType.HasFlag(WuXingType.Fire))
  51. {
  52. return;
  53. }
  54. long addAtt = CombatCalculateTool.Instance.GetVlaueRatioForLong(heroInjuredEventData.HarmReturnInfo.att,
  55. SelfSkillConfig.effectValue[0] * _currAddCount);
  56. heroInjuredEventData.HarmReturnInfo.att += addAtt;
  57. }
  58. }
  59. }
  60. }