123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- 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 ProCombatUpdate(float time)
- {
- if (!_isUpdate)
- {
- return;
- }
- _currTime += time;
- if (_currTime > effectValue[0])
- {
- Finish();
- }
- }
- }
- }
|