using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
using Core.Triiger;
using GameLogic.Combat.CombatTool;
using GameLogic.Combat.Hero;
using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
namespace GameLogic.Combat.Skill
{
///
/// (2转,防御型技能):身体周围围绕多丙剑飞行,可以阻挡敌人的功法.抵挡{0}最大生命值的伤害
///
public class S89012 : SkillBasic, IBarrier
{
private bool isTrgger;
public long shel;
protected TimeLineEventLogicGroupBasic _timeLineEventLogicGroupBasic;
protected override void ProInitSkill()
{
AddTriggerCallBack("sk1_fashe", Sk1_FaSheProDefaultTimeLineTrigger);
}
protected override void ProUseSkill()
{
CombatHeroEntity.CloseLoopFx();
_timeLineEventLogicGroupBasic= ActivationTimeLineData("sk2");
Own = CombatHeroEntity;
}
protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
ITimelineFxLogic timelineFxLogic,
TriggerData triggerData)
{
// count = 0;
SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("sk2_trigger");
// specialDotInfo
BarrierEntityMono barrierEntityMono =
specialDotInfo.targetTran.gameObject.GetOrAddComponent();
barrierEntityMono.Barrier = this;
isTrgger = true;
shel = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.MaxCombatHeroInfo.hp.Value,
effectValue[0]);
}
private void Sk1_FaSheProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
ITimelineFxLogic timelineFxLogic,
TriggerData triggerData)
{
long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
effectValue[0]);
CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v, AttType.Skill, triggerData, wuXingType,
HarmType.Default);
}
protected override void ProCombatUpdate(float time)
{
if (!isTrgger)
{
return;
}
// currTime += time;
// if (currTime > 0.1f)
// {
// currTime -= time;
// ActivationTimeLineData("sk1_fashe");
// count++;
// if (count > 20)
// {
// isTrgger = false;
// }
// }
}
public ShowBaiscEntity Own { get; set; }
public bool CollideTriiger(ITriggerEntity triggerEntity)
{
return !isTrgger || shel <= 0;
}
public void Harm(HarmReturnInfo harmReturnInfo)
{
shel -= harmReturnInfo.att;
if (shel <= 0)
{
_timeLineEventLogicGroupBasic?.CloseLoopFx();
_timeLineEventLogicGroupBasic = null;
}
}
}
}