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 { /// /// 缠绕 /// 敌人脚下生长出藤蔓,将敌人捆住。{0}秒内不能行动(功法不在释放和填充),受到木灵之子的攻击伤害+{1}% /// 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() .GetMainHotPoin(); BetterList currTarget = new BetterList(); 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 ProCombatUpdate(float time) { if (!_isUpdate) { return; } _currTime += time; if (_currTime > effectValue[0]) { Finish(); } } } }