S2005.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. private int hd = 216;
  16. private int lastJingGuo;
  17. protected override void ProUseSkill()
  18. {
  19. }
  20. protected override void ProReplace()
  21. {
  22. _currAddCount = 0;
  23. CombatEventManager.Instance.RemoveEventListener(CombatEventType.StartInjured, StartInjured);
  24. CombatEventManager.Instance.RemoveEventListener(CombatEventType.TriggerSkillSlots, TriggerSkillSlots);
  25. }
  26. protected override void ProActiveSkill()
  27. {
  28. // if (angle > hd)
  29. // {
  30. // lastJingGuo += 360;
  31. // }
  32. // else
  33. // {
  34. // lastJingGuo = hd;
  35. // }
  36. CombatEventManager.Instance.AddEventListener(CombatEventType.StartInjured, StartInjured);
  37. CombatEventManager.Instance.AddEventListener(CombatEventType.TriggerSkillSlots, TriggerSkillSlots);
  38. }
  39. private void TriggerSkillSlots(IEventData iEventData)
  40. {
  41. TriggerSkillSlotsEventData triggerSkillSlotsEventData = iEventData as TriggerSkillSlotsEventData;
  42. if (triggerSkillSlotsEventData.SkillBasic == this)
  43. {
  44. if (triggerSkillSlotsEventData.triggerType == 3)//触发到火的位置
  45. {
  46. _currAddCount++;
  47. }
  48. }
  49. }
  50. private void StartInjured(IEventData iEventData)
  51. {
  52. StartInjuredEventData heroInjuredEventData = iEventData as StartInjuredEventData;
  53. if (heroInjuredEventData.HarmReturnInfo.source == CombatHeroEntity)
  54. {
  55. SkillBasic skillBasic = heroInjuredEventData.HarmReturnInfo.triggerData.Source as SkillBasic;
  56. if (skillBasic == null || !skillBasic.wuXingType.HasFlag(WuXingType.Fire))
  57. {
  58. return;
  59. }
  60. long addAtt = CombatCalculateTool.Instance.GetVlaueRatioForLong(heroInjuredEventData.HarmReturnInfo.att,
  61. SelfSkillConfig.effectValue[0] * _currAddCount);
  62. heroInjuredEventData.HarmReturnInfo.att += addAtt;
  63. }
  64. }
  65. }
  66. }