S9013.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  2. using Common.Utility.CombatEvent;
  3. using Fort23.Core;
  4. using GameLogic.Combat.Buff;
  5. using GameLogic.Combat.CombatTool;
  6. using GameLogic.Combat.Hero;
  7. using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
  8. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
  9. namespace GameLogic.Combat.Skill
  10. {
  11. /// <summary>
  12. /// 霜域新生(被动,只会生效一次) 凤凰在伤害还剩10%的时候会触发此技能,
  13. /// 凤凰身体冰冻住并有一层寒气笼罩,期间凤凰不在受到任何伤害,并慢慢回血,
  14. /// 直到恢复满,持续5秒左右吧,恢复满后凤凰所有灵根增加{0}。冰块爆开,
  15. /// 生成一个冲击波,对当前场上所有的弹道照成当前强度的强度攻击(强度不够的弹道会被摧毁),生成{1}枚冰锥冲向玩家,对玩家照成{2}伤害
  16. /// </summary>
  17. public class S9013 : SkillBasic
  18. {
  19. protected BuffBasic BuffBasic;
  20. private bool isActiveFuHuo;
  21. private int count;
  22. private float _currTime;
  23. protected long addHp;
  24. protected override void ProActiveSkill()
  25. {
  26. count = 0;
  27. isActiveFuHuo = false;
  28. CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured);
  29. }
  30. private void HeroInjured(IEventData data)
  31. {
  32. if (count > 0)
  33. {
  34. return;
  35. }
  36. HeroInjuredEventData heroInjuredEventData = data as HeroInjuredEventData;
  37. if (heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity == CombatHeroEntity)
  38. {
  39. float bl = CombatHeroEntity.CurrCombatHeroInfo.hp.Value * 1.0f /
  40. CombatHeroEntity.MaxCombatHeroInfo.hp.Value;
  41. if (bl * 100 < effectValue[0])
  42. {
  43. addHp = CombatCalculateTool.Instance.GetVlaueRatioForLong(
  44. CombatHeroEntity.MaxCombatHeroInfo.hp.Value, 10);
  45. BuffInfo buffInfo = BuffInfo.GetBuffInfo(10151, -1, 1);
  46. BuffBasic = CombatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
  47. isActiveFuHuo = true;
  48. count++;
  49. }
  50. }
  51. }
  52. protected override void ProUseSkill()
  53. {
  54. }
  55. protected override void ProCombatUpdate(float time)
  56. {
  57. if (!isActiveFuHuo)
  58. {
  59. return;
  60. }
  61. _currTime += time;
  62. if (_currTime > 0.2f)
  63. {
  64. Recover(CombatHeroEntity, CombatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(), addHp, AttType.Skill);
  65. if (CombatHeroEntity.CurrCombatHeroInfo.hp.Value >= CombatHeroEntity.MaxCombatHeroInfo.hp.Value)
  66. {
  67. isActiveFuHuo = false;
  68. float v = effectValue[1];
  69. CombatHeroEntity.CurrCombatHeroInfo.Metal += v;
  70. CombatHeroEntity.CurrCombatHeroInfo.Wood += v;
  71. CombatHeroEntity.CurrCombatHeroInfo.Water += v;
  72. CombatHeroEntity.CurrCombatHeroInfo.Fire += v;
  73. CombatHeroEntity.CurrCombatHeroInfo.Earth += v;
  74. S9014 s9014 = CombatHeroEntity.CombatHeroSkillControl.GetSkillBasic<S9014>();
  75. if (s9014 != null)
  76. {
  77. s9014.isActive = true;
  78. }
  79. //完成
  80. }
  81. }
  82. }
  83. protected void ProDefaultTimeLineTrigger_BaoZa(string groupName, CombatHeroHitPoint targetEntity,
  84. ITimelineFxLogic timelineFxLogic,
  85. TriggerData triggerData, ISkillFeatures skillFeatures)
  86. {
  87. float harmBl = effectValue[0];
  88. long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
  89. harmBl);
  90. HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
  91. AttType.Skill, triggerData,
  92. wuXingType, skillFeatures,
  93. HarmType.Default);
  94. }
  95. }
  96. }