| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using Common.Utility.CombatEvent;using Fort23.Core;using GameLogic.Combat.Buff;using GameLogic.Combat.CombatTool;using UnityEngine;using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;namespace GameLogic.Combat.Skill.MagicSkill{    /// <summary>    /// 一盏明灯围绕玩家,{0}秒内抵消所有负面效果,每{1}秒触发1次。    /// </summary>    public class S3302 : MagicSkillBasic    {        private CombatHeroEntity target;        private bool isUpdate = false;        private float _currTime;        private float _jiaoDu;        private Vector3 _dir;        private Transform root;        private float _lasetAddTime = -255;        private int _AddCount;        protected override void ProMagicUseSkill()        {            TimeLineEventLogicGroupBasic sk1_show = ActivationTimeLineData("sk1_show");            sk1_show.TimeLineUpdateEnd = ShowFinish;            root = CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity.GameObject.transform;            _dir = Vector3.forward * 1;            Vector3 d = root.rotation * _dir;            CombatHeroEntity.GameObject.transform.position = d + root.position;            // TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic = ActivationTimeLineData("sk1_xiaoshi");            // timeLineEventLogicGroupBasic.TimeLineUpdateEnd = delegate()            // {            //               //                //              // };            CombatEventManager.Instance.AddEventListener(CombatEventType.StartAddBuff, StartAddBuff);        }        private void StartAddBuff(IEventData eventData)        {            StartAddBuffEventData startAddBuffEventData = eventData as StartAddBuffEventData;            if (startAddBuffEventData.target == CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity)            {                BuffInfo buffInfo = startAddBuffEventData.BuffInfo;                if (buffInfo.BuffConfig.buffType != 2)                {                    return;                }                float t = CombatController.currActiveCombat.combatTime;                float v = t - _lasetAddTime;                if (v < effectValue[1] && _AddCount >= 1)                {                    return;                }                if (v > effectValue[1])                {                    _lasetAddTime = t;                    _AddCount = 0;                }                _AddCount++;                startAddBuffEventData.isNotAddBuff = true;            }        }        private void ShowFinish()        {            ActivationTimeLineData("sk1");            isUpdate = true;            _currTime = 0;        }        protected override void MagicSkillUpdate(float time)        {            if (!isUpdate)            {                return;            }            _currTime += time;            if (_currTime >= SelfSkillConfig.effectValue[0])            {                ActivationTimeLineData("sk1_xiaoshi");                SkillPlayFinish();                isUpdate = false;                return;            }            _jiaoDu -= 360 * time * 0.5f;            Quaternion quaternionY = Quaternion.Euler(0, _jiaoDu, 0);            Vector3 d = root.rotation * quaternionY * _dir+new Vector3(0,0.5f,0);            CombatHeroEntity.GameObject.transform.position = d + root.position;        }        protected override void ProBreakMagicSkill()        {            SkillPlayFinish();            isUpdate = false;        }        protected override void ProSkillPlayFinish()        {            CombatEventManager.Instance.RemoveEventListener(CombatEventType.StartAddBuff, StartAddBuff);        }        protected override ILifetCycleHitPoint[] ProGetTineLineTargetEntity(            TimeLineEventLogicBasic timeLineEventLogicBasic)        {            ILifetCycleHitPoint[] lifetCycleHitPoints = new ILifetCycleHitPoint[1];            lifetCycleHitPoints[0] = target.GetMainHotPoin<ILifetCycleHitPoint>();            return lifetCycleHitPoints;        }    }}
 |