| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 | using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using Common.Utility.CombatEvent;using Fort23.Core;using GameLogic.Combat.Buff;using GameLogic.Combat.CombatTool;using GameLogic.Combat.Hero;using UnityEngine;using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;namespace GameLogic.Combat.Skill{    /// <summary>    /// 缠绕    /// 敌人脚下生长出藤蔓,将敌人捆住。{0}秒内不能行动(功法不在释放和填充),受到木灵之子的攻击伤害+{1}%    /// </summary>    public class S9064 : SkillBasic    {        private float _currTime;        private bool _isUpdate;        private TimeLineEventLogicGroupBasic _chanRaoLoop;        private CombatHeroEntity chanRaoTarget;        private BuffBasic _buffBasic;        protected override void ProUseSkill()        {            ActivationTimeLineData("9064");            CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget                .GetThis<CombatHeroEntity>()                .GetMainHotPoin<CombatHeroHitPoint>();            BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();            currTarget.Add(combatHeroHitPoint);            chanRaoTarget = combatHeroHitPoint.combatHeroEntity as CombatHeroEntity;            _chanRaoLoop = ActivationTimeLineData("9064_chanrao", currTarget: currTarget);        }        protected override void ProActiveSkill()        {            CombatEventManager.Instance.AddEventListener(CombatEventType.StartInjured, StartInjured);        }        private void StartInjured(IEventData data)        {            if (!_isUpdate)            {                return;            }            StartInjuredEventData startInjuredEventData = data as StartInjuredEventData;            if (startInjuredEventData.HarmReturnInfo.target.combatHeroEntity != chanRaoTarget)            {                return;            }            SummonCombatHeroEntity summonCombatHeroEntity =                startInjuredEventData.HarmReturnInfo.source as SummonCombatHeroEntity;            if (summonCombatHeroEntity != null && summonCombatHeroEntity.ownerEntity == CombatHeroEntity)            {                long att = startInjuredEventData.HarmReturnInfo.att;                long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(att, effectValue[1]);                startInjuredEventData.HarmReturnInfo.att += v;            }            //如果是木桩 伤害增加        }        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,            ITimelineFxLogic timelineFxLogic,            TriggerData triggerData, ISkillFeatures skillFeatures)        {            _currTime = 0;            _isUpdate = true;            BuffInfo buffInfo = BuffInfo.GetBuffInfo(10251, -1, 1);            _buffBasic = chanRaoTarget.BuffControl.AddBuff(CombatHeroEntity, buffInfo);        }        private void Finish()        {            _isUpdate = false;            chanRaoTarget = null;            if (_buffBasic != null)            {                _buffBasic.DelectBuff();            }            _buffBasic = null;            if (_chanRaoLoop != null)            {                _chanRaoLoop.CloseLoopFx();            }            _chanRaoLoop = null;        }        protected override void ProDispose()        {            Finish();        }        protected override void ProCombatUpdate(float time)        {            if (!_isUpdate)            {                return;            }            _currTime += time;            if (_currTime > effectValue[0])            {                Finish();            }        }    }}
 |