S3301.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. using System.Collections.Generic;
  2. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  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 UnityEngine;
  9. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
  10. namespace GameLogic.Combat.Skill.MagicSkill
  11. {
  12. /// <summary>
  13. /// 对敌人照成伤害,并随机封锁敌人{0}个法宝,让其{1}秒内不能使用和不能充能
  14. /// 如果影响的是2个相生法宝,则这2个法宝在本场战斗中充能时间增加30%
  15. /// </summary>
  16. public class S3301 : MagicSkillBasic
  17. {
  18. private CombatHeroEntity target;
  19. List<CombatMagicWeaponEntity> yingXingWeapon = new List<CombatMagicWeaponEntity>();
  20. protected override void ProMagicUseSkill()
  21. {
  22. // StraightLineShow straightLineShow = new StraightLineShow();
  23. // straightLineShow.Init(this);
  24. target = CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity.CombatAIBasic.currFocusTarget;
  25. if (target == null)
  26. {
  27. SkillPlayFinish();
  28. return;
  29. }
  30. MagicAttShowBasic magicAttShowBasic = InitMagicAttShowBasic(target, Finish);
  31. SetMagicAttShowBasic(magicAttShowBasic);
  32. }
  33. private void Finish()
  34. {
  35. CombatHeroEntity combatHeroEntity = target;
  36. if (combatHeroEntity == null)
  37. {
  38. SkillPlayFinish();
  39. return;
  40. }
  41. ILifetCycleHitPoint lifetCycleHitPoint = target.GetMainHotPoin<ILifetCycleHitPoint>();
  42. if (lifetCycleHitPoint == null||combatHeroEntity.heroMagicWeaponControl==null||CombatMagicWeaponEntity.RootMagicWeaponControl==null)
  43. {
  44. SkillPlayFinish();
  45. return;
  46. }
  47. CombatMagicWeaponEntity[] AllMagicWeapon = combatHeroEntity.heroMagicWeaponControl.AllMagicWeapon;
  48. int maxCount = combatHeroEntity.heroMagicWeaponControl.MagicWeaponCount;
  49. if (maxCount > 0)
  50. {
  51. List<CombatMagicWeaponEntity> currAllMagicWeapon = new List<CombatMagicWeaponEntity>();
  52. currAllMagicWeapon.AddRange(AllMagicWeapon);
  53. List<CombatMagicWeaponEntity> addMagicWeaponEntities = new List<CombatMagicWeaponEntity>();
  54. for (int i = 0; i < effectValue[0]; i++)
  55. {
  56. if (maxCount > 0)
  57. {
  58. int index = Random.Range(0, maxCount);
  59. BuffInfo buffInfo = BuffInfo.GetBuffInfo(10081, effectValue[1], 1,this);
  60. CombatMagicWeaponEntity combatMagicWeaponEntity = currAllMagicWeapon[index];
  61. combatMagicWeaponEntity.BuffControl.AddBuff(
  62. CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity,
  63. buffInfo);
  64. currAllMagicWeapon.RemoveAt(index);
  65. if (SelfSkillConfig.level > 3 && !yingXingWeapon.Contains(combatMagicWeaponEntity))
  66. {
  67. bool isXiangSheng = false;
  68. if (addMagicWeaponEntities.Count > 0)
  69. {
  70. for (int j = 0; j < addMagicWeaponEntities.Count; j++)
  71. {
  72. CombatMagicWeaponEntity lasetWeaponEntity = addMagicWeaponEntities[j];
  73. bool isOk = CombatCalculateTool.Instance.IsSymbiosis(lasetWeaponEntity.WuXingType,
  74. combatMagicWeaponEntity.WuXingType);
  75. if (isOk)
  76. {
  77. lasetWeaponEntity.cdAddSpeed -= effectValue[3];
  78. combatMagicWeaponEntity.cdAddSpeed -= effectValue[3];
  79. yingXingWeapon.Add(lasetWeaponEntity);
  80. yingXingWeapon.Add(combatMagicWeaponEntity);
  81. isXiangSheng = true;
  82. addMagicWeaponEntities.RemoveAt(j);
  83. break;
  84. }
  85. }
  86. }
  87. if (!isXiangSheng)
  88. {
  89. addMagicWeaponEntities.Add(combatMagicWeaponEntity);
  90. }
  91. }
  92. maxCount--;
  93. }
  94. }
  95. }
  96. long att = CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity.CurrCombatHeroInfo.attack.Value;
  97. long harm = CombatCalculateTool.Instance.GetVlaueRatioForLong(att, effectValue[2]);
  98. CombatCalculateTool.Instance.Harm(CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity,
  99. lifetCycleHitPoint as CombatHeroHitPoint, harm, AttType.FaBao, triggerData, wuXingType, null,
  100. HarmType.Default);
  101. BetterList<ILifetCycleHitPoint> cBetterList = new BetterList<ILifetCycleHitPoint>(1);
  102. cBetterList.Add(lifetCycleHitPoint);
  103. ActivationTimeLineData("sk1_hit", currTarget: cBetterList);
  104. SkillPlayFinish();
  105. }
  106. // protected override ILifetCycleHitPoint[] ProGetTineLineTargetEntity(
  107. // TimeLineEventLogicBasic timeLineEventLogicBasic)
  108. // {
  109. // ILifetCycleHitPoint[] lifetCycleHitPoints = new ILifetCycleHitPoint[1];
  110. // lifetCycleHitPoints[0] = target.GetMainHotPoin<ILifetCycleHitPoint>();
  111. // return lifetCycleHitPoints;
  112. // }
  113. }
  114. }