S9021.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  3. using Fort23.Core;
  4. using GameLogic.Combat.CombatTool;
  5. using GameLogic.Combat.Hero;
  6. using UnityEngine;
  7. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
  8. namespace GameLogic.Combat.Skill
  9. {
  10. /// <summary>
  11. /// 冰魄飞甲
  12. /// 神龟龟甲一个虚影快速连续收缩,然后爆开,形成多个如同龟甲碎片的弹道,被命中的敌人受到{0}伤害,碎片无视敌人{1}%防御
  13. /// </summary>
  14. public class S9021 : SkillBasic
  15. {
  16. protected override void ProInitSkill()
  17. {
  18. AddTriggerCallBack("9021_zd", ProDefaultTimeLineTrigger_9021_zd);
  19. }
  20. protected override void ProUseSkill()
  21. {
  22. ActivationTimeLineData("9021");
  23. ballisticsCount = (int)effectValue[0];
  24. Vector3 startPos = CombatHeroEntity.dotPos;
  25. CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
  26. .GetThis<CombatHeroEntity>()
  27. .GetMainHotPoin<CombatHeroHitPoint>();
  28. BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
  29. currTarget.Add(combatHeroHitPoint);
  30. Vector3 dir = (combatHeroHitPoint.combatHeroEntity.dotPos - startPos).normalized;
  31. bool isLafet = false;
  32. for (int i = 0; i < effectValue[0]; i++)
  33. {
  34. Vector3 endPos = Vector3.zero;
  35. if (i != 0)
  36. {
  37. int fh = (int)(Math.Pow(-1, i + 1) * Math.Ceiling(i / 2.0));
  38. Quaternion quaternion = Quaternion.Euler(0, fh * 10, 0)*CombatHeroEntity.GameObject.transform.rotation;
  39. dir = quaternion * Vector3.forward;
  40. }
  41. endPos = dir * 30 + startPos+new Vector3(0,1,0);
  42. ActivationTimeLineData("9021_zd", currTarget: currTarget,
  43. customizePos: new Vector3[] { startPos, endPos }, indexCount: i);
  44. }
  45. }
  46. private void ProDefaultTimeLineTrigger_9021_zd(string groupName, CombatHeroHitPoint targetEntity,
  47. ITimelineFxLogic timelineFxLogic,
  48. TriggerData triggerData, ISkillFeatures skillFeatures)
  49. {
  50. HarmReturnInfo harmReturnInfo = CObjectPool.Instance.Fetch<HarmReturnInfo>();
  51. harmReturnInfo.ArmorPiercing = effectValue[2];
  52. float harmBl = effectValue[1];
  53. long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
  54. harmBl);
  55. harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
  56. AttType.Skill, triggerData,
  57. wuXingType, skillFeatures,
  58. HarmType.Default, harmReturnInfo: harmReturnInfo);
  59. }
  60. protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
  61. ITimelineFxLogic timelineFxLogic,
  62. TriggerData triggerData, ISkillFeatures skillFeatures)
  63. {
  64. }
  65. }
  66. }