using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
using Core.Utility;
using GameLogic.Combat.Buff;
using GameLogic.Combat.CombatTool;
using GameLogic.Combat.Hero;
using GameLogic.Player;
using UnityEngine;
using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
namespace GameLogic.Combat.Skill
{
///
/// 伤害很高)(前摇时间长):很多剑从远处汇聚到boss周围,然后以一字行快速贯穿目标,每命中{0}次防御削减{1}%,{2}次所有伤势+{3}
/// ,如果目标上有剑毅,每丙剑消耗{4}层剑毅让敌人受到{5}额外的伤害
///
public class S89011 : SkillBasic
{
private bool isTrgger;
private float currTime;
private int count;
private int hitCount;
private int shangShiCount;
protected override void ProInitSkill()
{
AddTriggerCallBack("sk1_fashe", Sk1_FaSheProDefaultTimeLineTrigger);
}
protected override void ProUseSkill()
{
ActivationTimeLineData("sk1");
hitCount = 0;
}
protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
ITimelineFxLogic timelineFxLogic,
TriggerData triggerData)
{
count = 0;
hitCount = 0;
shangShiCount = 0;
currTime = 1;
isTrgger = true;
}
private void Sk1_FaSheProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
ITimelineFxLogic timelineFxLogic,
TriggerData triggerData)
{
float hv = effectValue[0];
b_1007 b1007 = targetEntity.combatHeroEntity.BuffControl.GetBuffBasicForType();
if (b1007 != null)
{
b1007.ReduceCount((int)effectValue[5]);
hv += effectValue[6];
}
long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
hv);
HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
AttType.Skill, triggerData, wuXingType,
HarmType.Default);
if (harmReturnInfo.triggerData.IBarrier == null)
{
hitCount++;
shangShiCount++;
if (hitCount >= effectValue[1])
{
hitCount = 0;
long def = targetEntity.combatHeroEntity.MaxCombatHeroInfo.defense.Value;
long jdef = CombatCalculateTool.Instance.GetVlaueRatioForLong(def, effectValue[2]);
targetEntity.combatHeroEntity.CurrCombatHeroInfo.defense -= jdef;
if (targetEntity.combatHeroEntity.CurrCombatHeroInfo.defense < 0)
{
targetEntity.combatHeroEntity.CurrCombatHeroInfo.defense = (EncryptionLong)0;
}
}
if (shangShiCount >= effectValue[3])
{
shangShiCount = 0;
int vInjury = (int)effectValue[4];
CombatCalculateTool.Instance.ShangSHi(WuXingType.Gold, targetEntity.combatHeroEntity, vInjury);
CombatCalculateTool.Instance.ShangSHi(WuXingType.Wood, targetEntity.combatHeroEntity, vInjury);
CombatCalculateTool.Instance.ShangSHi(WuXingType.Water, targetEntity.combatHeroEntity, vInjury);
CombatCalculateTool.Instance.ShangSHi(WuXingType.Fire, targetEntity.combatHeroEntity, vInjury);
CombatCalculateTool.Instance.ShangSHi(WuXingType.Earth, targetEntity.combatHeroEntity, vInjury);
}
}
}
protected override void ProCombatUpdate(float time)
{
if (!isTrgger)
{
return;
}
currTime += time;
if (currTime > 0.15f)
{
count++;
currTime -= 0.15f;
SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos1");
Vector3 pos = specialDotInfo.GetWorlPos();
Quaternion quaternion = CombatHeroEntity.GameObject.transform.rotation *
Quaternion.Euler(new Vector3(0, 0, 360f / 10 * count))
;
Vector3 dir = quaternion * Vector3.up * 3;
ActivationTimeLineData("sk1_fashe", customizePos: new Vector3[] { pos + dir });
if (count > 10)
{
isTrgger = false;
}
}
}
}
}