| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 | 
							- using System.Collections.Generic;
 
- using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
 
- using Common.Combat.FxAILogic;
 
- using Core.Triiger;
 
- using GameLogic.Combat.CombatTool;
 
- using UnityEngine;
 
- namespace GameLogic.Combat.Skill.MagicSkill
 
- {
 
-     /// <summary>
 
-     /// 法宝技能 翡翠葫芦 战场区域形成一个域。敌人的功法弹道进入域后将降低敌人的功法弹道速度
 
-     /// 被影响的功法强度降低20%
 
-     /// </summary>
 
-     public class S3201 : MagicSkillBasic, ITriggerEntity
 
-     {
 
-         private List<FxAILogicBasic> _fxAILogicBasics = new List<FxAILogicBasic>();
 
-         private float _currTime;
 
-         private bool _update;
 
-         private IUnRegister _unRegister;
 
-         private IUnRegister _unRegisterExitEvent;
 
-         private CombatHeroEntity target;
 
-         protected Vector3 fxPlayPos;
 
-         protected Vector3 dir;
 
-         private TimeLineEventLogicGroupBasic loopFx;
 
-         // protected Vector3 startEulerAngles;
 
-         protected Quaternion endEulerAngles;
 
-         private SpecialDotInfo specialDotInfo;
 
-         // private List<FxAILogicBasic>
 
-         protected override void ProMagicUseSkill()
 
-         {
 
-             CombatHeroEntity[] allHero =
 
-                 CombatController.currActiveCombat.CombatHeroController.GetHero(!CombatHeroEntity.IsEnemy);
 
-             if (allHero == null || allHero.Length <= 0)
 
-             {
 
-                 SkillPlayFinish();
 
-                 return;
 
-             }
 
-             target = allHero[0];
 
-             Vector3 rootPos = CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity.dotPos;
 
-             Vector3 targetPos = target.dotPos;
 
-             dir = (targetPos - rootPos);
 
-             fxPlayPos = dir * 0.5f + rootPos;
 
-             dir = dir.normalized;
 
-             Vector3 newTargetPos = fxPlayPos + new Vector3(1, 5, 0);
 
-             endEulerAngles = Quaternion.LookRotation((fxPlayPos - newTargetPos).normalized) *
 
-                              Quaternion.Euler(new Vector3(80, 0, 0));
 
-             MoveToTargetPosShow magicAttShowBasic = InitMoveToTargetPosShow(newTargetPos, Finish);
 
-             SetMagicAttShowBasic(magicAttShowBasic);
 
-         }
 
-         private void OnTriggerExitEvent(Collider collider, ITriggerEntity triggerEntity)
 
-         {
 
-             if (triggerEntity == null)
 
-             {
 
-                 return;
 
-             }
 
-             FxAILogicBasic fxAILogicBasic = triggerEntity as FxAILogicBasic;
 
-             if (fxAILogicBasic != null && fxAILogicBasic.CombatHeroEntity.IsEnemy != CombatHeroEntity.IsEnemy)
 
-             {
 
-                 fxAILogicBasic.extraMoveSpeed += SelfSkillConfig.effectValue[0];
 
-                 _fxAILogicBasics.Remove(fxAILogicBasic);
 
-             }
 
-         }
 
-         private void OnTriggerEnter(Collider collider, ITriggerEntity triggerEntity)
 
-         {
 
-             if (triggerEntity == null)
 
-             {
 
-                 return;
 
-             }
 
-             FxAILogicBasic fxAILogicBasic = triggerEntity as FxAILogicBasic;
 
-             if (fxAILogicBasic != null && fxAILogicBasic.CombatHeroEntity.IsEnemy != CombatHeroEntity.IsEnemy)
 
-             {
 
-                 fxAILogicBasic.extraMoveSpeed -= SelfSkillConfig.effectValue[0];
 
-                 _fxAILogicBasics.Add(fxAILogicBasic);
 
-                 if (SelfSkillConfig.level > 5)
 
-                 {
 
-                     SkillFeaturesData skillFeaturesData = fxAILogicBasic.SkillFeaturesData;
 
-                     long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(skillFeaturesData.hp, effectValue[2]);
 
-                     skillFeaturesData.hp -= v;
 
-                 }
 
-             }
 
-         }
 
-         protected override void ProBreakMagicSkill()
 
-         {
 
-             AllFinish();
 
-         }
 
-         protected override void MagicSkillUpdate(float time)
 
-         {
 
-             if (_update)
 
-             {
 
-                 _currTime += time;
 
-                 CombatHeroEntity.GameObject.transform.rotation =
 
-                     Quaternion.Lerp(CombatHeroEntity.GameObject.transform.rotation, endEulerAngles, _currTime * 2);
 
-                 specialDotInfo.targetTran.position = fxPlayPos;
 
-                 specialDotInfo.targetTran.forward = dir;
 
-                 if (_currTime >= SelfSkillConfig.effectValue[1])
 
-                 {
 
-                     AllFinish();
 
-                 }
 
-             }
 
-         }
 
-         private void AllFinish()
 
-         {
 
-             loopFx.CloseLoopFx();
 
-             ActivationTimeLineData("sk1_xiaoshi");
 
-             _unRegister?.UnRegister();
 
-             _unRegisterExitEvent?.UnRegister();
 
-             _unRegisterExitEvent = null;
 
-             _unRegister = null;
 
-             _update = false;
 
-             SkillPlayFinish();
 
-             for (int i = 0; i < _fxAILogicBasics.Count; i++)
 
-             {
 
-                 _fxAILogicBasics[i].extraMoveSpeed += SelfSkillConfig.effectValue[0];
 
-             }
 
-             _fxAILogicBasics.Clear();
 
-         }
 
-         private void Finish()
 
-         {
 
-             loopFx = ActivationTimeLineData("sk1", customizePos: new Vector3[] { fxPlayPos });
 
-             // timeLineEventLogicGroupBasic.TimeLineUpdateEnd = () => { };
 
-             specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("lingyu");
 
-             specialDotInfo.targetTran.position = fxPlayPos;
 
-             specialDotInfo.targetTran.forward = dir;
 
-             _unRegister = specialDotInfo.targetTran.gameObject.OnTriggerEnterEvent(this, OnTriggerEnter);
 
-             _currTime = 0;
 
-             _update = true;
 
-             _unRegisterExitEvent = specialDotInfo.targetTran.gameObject.OnTriggerExitEvent(this, OnTriggerExitEvent);
 
-         }
 
-         public string tag { get; }
 
-     }
 
- }
 
 
  |