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