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();
}
}
}
}