S40001.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  2. using Excel2Json;
  3. using GameLogic.Combat.CombatTool;
  4. using GameLogic.Combat.Hero;
  5. using UnityEngine;
  6. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
  7. namespace GameLogic.Combat.Skill
  8. {
  9. /// <summary>
  10. /// 弓箭发射多个见
  11. /// </summary>
  12. public class S40001 : SkillBasic
  13. {
  14. private float _harm;
  15. protected int _count;
  16. protected int _currCount;
  17. private int _gongJianCount;
  18. private SkillConfig _skillBasic4005;
  19. protected override void ProInitSkillConfig()
  20. {
  21. _harm = SelfSkillConfig.effectValue[0];
  22. _count = 3;
  23. _gongJianCount = 5;
  24. AddTriggerCallBack("sk1_fashe", Sk1_fasheTrigger);
  25. }
  26. protected override void ProInitSkill()
  27. {
  28. SkillConfig skillBasic = CombatHeroEntity.CurrCombatHeroInfo.GetGroupSkillConfig(40004);
  29. if (skillBasic.ID > 0)
  30. {
  31. _gongJianCount += (int)skillBasic.effectValue[0];
  32. }
  33. _skillBasic4005 = CombatHeroEntity.CurrCombatHeroInfo.GetGroupSkillConfig(40005);
  34. }
  35. protected override void ProUseSkill()
  36. {
  37. _finishTimeLineGroupName = "-1";
  38. _currCount = 0;
  39. ActiveSk1();
  40. }
  41. protected void ActiveSk1()
  42. {
  43. if (_currCount >= _count)
  44. {
  45. SkillPlayFinish();
  46. return;
  47. }
  48. _currCount++;
  49. TimeLineEventLogicGroupBasic currMyLoopGroupBasic = ActivationTimeLineData("sk1");
  50. currMyLoopGroupBasic.TimeLineUpdateEnd += ActiveSk1;
  51. }
  52. protected override ILifetCycleHitPoint[] ProGetTineLineTargetEntity(
  53. TimeLineEventLogicBasic timeLineEventLogicBasic)
  54. {
  55. if (CombatHeroEntity.CombatAIBasic.currFocusTarget == null)
  56. {
  57. return null;
  58. }
  59. return new[]
  60. {
  61. CombatHeroEntity.CombatAIBasic.currFocusTarget.GetThis<CombatHeroEntity>()
  62. .GetMainHotPoin<ILifetCycleHitPoint>()
  63. };
  64. }
  65. protected void Sk1_fasheTrigger(string groupName, CombatHeroHitPoint targetEntity,
  66. ITimelineFxLogic timelineFxLogic,
  67. TriggerData triggerData)
  68. {
  69. float harm = _harm;
  70. if (_skillBasic4005.ID>0)
  71. {
  72. if (targetEntity.combatHeroEntity.HpBl < _skillBasic4005.effectValue[0])
  73. {
  74. harm += _skillBasic4005.effectValue[1];
  75. }
  76. }
  77. long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
  78. harm);
  79. HarmReturnInfo harmReturnInfo = Harm(CombatHeroEntity, targetEntity,
  80. v, AttType.Skill, triggerData);
  81. }
  82. protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
  83. ITimelineFxLogic timelineFxLogic,
  84. TriggerData triggerData)
  85. {
  86. int minC = _gongJianCount / 2;
  87. int startAngle = minC * -5;
  88. for (int i = 0; i < _gongJianCount; i++)
  89. {
  90. Vector3 forward = CombatHeroEntity.combatHeroGameObject.transform.forward;
  91. Quaternion quaternion = Quaternion.AngleAxis(i * 5 + startAngle, Vector3.up);
  92. // quaternion = quaternion + CombatHeroEntity.combatHeroGameObject.transform.rotation;
  93. // Vector3 newAngle = new Vector3(eulerAngles.x, eulerAngles.y + i * 15+180, eulerAngles.z);
  94. // Quaternion quaternion = Quaternion.Euler(newAngle);
  95. forward = quaternion * forward;
  96. Vector3 targetPos = CombatHeroEntity.combatHeroGameObject.transform.position + forward;
  97. ActivationTimeLineData("sk1_fashe", null, new Vector3[] { targetPos });
  98. }
  99. }
  100. }
  101. }