S9002.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  2. using Core.Triiger;
  3. using GameLogic.Combat.CombatTool;
  4. using GameLogic.Combat.Hero;
  5. using GameLogic.Player;
  6. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
  7. namespace GameLogic.Combat.Skill
  8. {
  9. /// <summary>
  10. /// (2转,防御型技能):身体周围围绕多丙剑飞行,可以阻挡敌人的功法.抵挡{0}最大生命值的伤害 改剑阵收到火系伤害时会升温,升温后会融化。(受到的火系伤害提升60%)
  11. /// </summary>
  12. public class S9002 : SkillBasic, IBarrier
  13. {
  14. private bool isTrgger;
  15. public long shel;
  16. protected TimeLineEventLogicGroupBasic _timeLineEventLogicGroupBasic;
  17. protected override void ProInitSkill()
  18. {
  19. AddTriggerCallBack("sk1_fashe", Sk1_FaSheProDefaultTimeLineTrigger);
  20. }
  21. protected override void ProUseSkill()
  22. {
  23. CombatHeroEntity.CloseLoopFx();
  24. _timeLineEventLogicGroupBasic = ActivationTimeLineData("sk2");
  25. Own = CombatHeroEntity;
  26. }
  27. protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
  28. ITimelineFxLogic timelineFxLogic,
  29. TriggerData triggerData,ISkillFeatures skillFeatures)
  30. {
  31. // count = 0;
  32. SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("sk2_trigger");
  33. // specialDotInfo
  34. BarrierEntityMono barrierEntityMono =
  35. specialDotInfo.targetTran.gameObject.GetOrAddComponent<BarrierEntityMono>();
  36. barrierEntityMono.Barrier = this;
  37. isTrgger = true;
  38. shel = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.MaxCombatHeroInfo.hp.Value,
  39. effectValue[0]);
  40. }
  41. private void Sk1_FaSheProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
  42. ITimelineFxLogic timelineFxLogic,
  43. TriggerData triggerData,ISkillFeatures skillFeatures)
  44. {
  45. long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
  46. effectValue[0]);
  47. CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v, AttType.Skill, triggerData, wuXingType,skillFeatures,
  48. HarmType.Default);
  49. }
  50. protected override void ProCombatUpdate(float time)
  51. {
  52. if (!isTrgger)
  53. {
  54. return;
  55. }
  56. // currTime += time;
  57. // if (currTime > 0.1f)
  58. // {
  59. // currTime -= time;
  60. // ActivationTimeLineData("sk1_fashe");
  61. // count++;
  62. // if (count > 20)
  63. // {
  64. // isTrgger = false;
  65. // }
  66. // }
  67. }
  68. public ShowBaiscEntity Own { get; set; }
  69. public BarrierTriggerData BarrierTriggerData { get; set; }
  70. public bool CollideTriiger(ITriggerEntity triggerEntity)
  71. {
  72. return !isTrgger || shel <= 0;
  73. }
  74. public long Harm(HarmReturnInfo harmReturnInfo)
  75. {
  76. if (harmReturnInfo.WuXingType.HasFlag(WuXingType.Fire))
  77. {
  78. harmReturnInfo.att +=
  79. CombatCalculateTool.Instance.GetVlaueRatioForLong(harmReturnInfo.att, effectValue[1]);
  80. }
  81. shel -= harmReturnInfo.att;
  82. if (shel <= 0)
  83. {
  84. _timeLineEventLogicGroupBasic?.CloseLoopFx();
  85. _timeLineEventLogicGroupBasic = null;
  86. }
  87. return 0;
  88. }
  89. }
  90. }