S9061.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
  8. namespace GameLogic.Combat.Skill
  9. {
  10. /// <summary>
  11. /// 幻花迷雾(当场上有木灵分身时触发)
  12. /// 身体摇动,天空散发出小小的花朵。木灵隐藏其中防御+{0}%,期间不在攻击,直到木灵之子全部死亡后的{1}秒消失
  13. /// </summary>
  14. public class S9061 : SkillBasic
  15. {
  16. protected float _currTime;
  17. private bool _isUpdate;
  18. private BuffBasic _buffBasic;
  19. private long addDef;
  20. protected override void ProInitSkill()
  21. {
  22. CombatEventManager.Instance.AddEventListener(CombatEventType.HeroDie, HeroDie);
  23. }
  24. private void HeroDie(IEventData iEventData)
  25. {
  26. if (_isUpdate)
  27. {
  28. return;
  29. }
  30. HeroDieEventData heroHpUpdateEventData = iEventData as HeroDieEventData;
  31. SummonCombatHeroEntity summonCombatHeroEntity =
  32. heroHpUpdateEventData.combatHeroEntity as SummonCombatHeroEntity;
  33. if (summonCombatHeroEntity != null && summonCombatHeroEntity.ownerEntity == CombatHeroEntity)
  34. {
  35. CombatHeroEntity[] combatHeroEntities =
  36. CombatController.currActiveCombat.CombatHeroController.GetHero(CombatHeroEntity.IsEnemy);
  37. bool isOk = false;
  38. for (int i = 0; i < combatHeroEntities.Length; i++)
  39. {
  40. SummonCombatHeroEntity t = combatHeroEntities[i] as SummonCombatHeroEntity;
  41. if (t != null)
  42. {
  43. isOk = true;
  44. break;
  45. }
  46. }
  47. if (isOk)
  48. {
  49. return;
  50. }
  51. _isUpdate = true;
  52. _currTime = 0;
  53. }
  54. }
  55. protected override void ProDispose()
  56. {
  57. CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroDie, HeroDie);
  58. }
  59. protected override void ProUseSkill()
  60. {
  61. ActivationTimeLineData("9061");
  62. BuffInfo buffInfo = BuffInfo.GetBuffInfo(10261, -1, 1);
  63. _buffBasic = CombatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
  64. long defense = CombatHeroEntity.MaxCombatHeroInfo.defense.Value;
  65. addDef = CombatCalculateTool.Instance.GetVlaueRatioForLong(defense, effectValue[0]);
  66. CombatHeroEntity.CurrCombatHeroInfo.defense += addDef;
  67. }
  68. protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
  69. ITimelineFxLogic timelineFxLogic,
  70. TriggerData triggerData, ISkillFeatures skillFeatures)
  71. {
  72. // float harmBl = 0;
  73. // b_1018 b1018 = targetEntity.combatHeroEntity.BuffControl.GetBuffBasicForType<b_1018>();
  74. // if (b1018 != null) //消耗一层感电,额外照成伤害
  75. // {
  76. // harmBl += b1018.buffCount * effectValue[1];
  77. // }
  78. //
  79. // long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
  80. // harmBl);
  81. //
  82. // HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
  83. // AttType.Skill, triggerData,
  84. // wuXingType, skillFeatures,
  85. // HarmType.Default);
  86. }
  87. protected override void ProCombatUpdate(float time)
  88. {
  89. if (!_isUpdate)
  90. {
  91. return;
  92. }
  93. _currTime += time;
  94. if (_currTime >= effectValue[1])
  95. {
  96. _isUpdate = false;
  97. CombatHeroEntity.CurrCombatHeroInfo.defense -= addDef;
  98. if (_buffBasic != null)
  99. {
  100. _buffBasic.DelectBuff();
  101. }
  102. // CombatHeroEntity.CombatHeroSkillControl.This<CombatHeroSkillControl>().SkillTurntable.isStop = false;
  103. }
  104. }
  105. }
  106. }