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 UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
namespace GameLogic.Combat.Skill
{
///
/// 幻花迷雾(当场上有木灵分身时触发)
/// 身体摇动,天空散发出小小的花朵。木灵隐藏其中防御+{0}%,期间不在攻击,直到木灵之子全部死亡后的{1}秒消失
///
public class S9061 : SkillBasic
{
protected float _currTime;
private bool _isUpdate;
protected override void ProInitSkill()
{
CombatEventManager.Instance.AddEventListener(CombatEventType.HeroDie, HeroDie);
}
private void HeroDie(IEventData iEventData)
{
if (_isUpdate)
{
return;
}
HeroDieEventData heroHpUpdateEventData = iEventData as HeroDieEventData;
SummonCombatHeroEntity summonCombatHeroEntity =
heroHpUpdateEventData.combatHeroEntity as SummonCombatHeroEntity;
if (summonCombatHeroEntity != null && summonCombatHeroEntity.ownerEntity == CombatHeroEntity)
{
CombatHeroEntity[] combatHeroEntities =
CombatController.currActiveCombat.CombatHeroController.GetHero(CombatHeroEntity.IsEnemy);
bool isOk = false;
for (int i = 0; i < combatHeroEntities.Length; i++)
{
SummonCombatHeroEntity t = combatHeroEntities[i] as SummonCombatHeroEntity;
if (t != null)
{
isOk = true;
break;
}
}
if (isOk)
{
return;
}
_isUpdate = true;
_currTime = 0;
}
}
protected override void ProDispose()
{
CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroDie, HeroDie);
}
protected override void ProUseSkill()
{
ActivationTimeLineData("9061");
CombatHeroEntity.CombatHeroSkillControl.This().SkillTurntable.isStop = true;
}
protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
ITimelineFxLogic timelineFxLogic,
TriggerData triggerData, ISkillFeatures skillFeatures)
{
// float harmBl = 0;
// b_1018 b1018 = targetEntity.combatHeroEntity.BuffControl.GetBuffBasicForType();
// if (b1018 != null) //消耗一层感电,额外照成伤害
// {
// harmBl += b1018.buffCount * effectValue[1];
// }
//
// long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
// harmBl);
//
// HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
// AttType.Skill, triggerData,
// wuXingType, skillFeatures,
// HarmType.Default);
}
protected override void ProCombatUpdate(float time)
{
if (!_isUpdate)
{
return;
}
_currTime += time;
if (_currTime >= effectValue[1])
{
_isUpdate = false;
CombatHeroEntity.CombatHeroSkillControl.This().SkillTurntable.isStop = false;
}
}
}
}