123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- 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
- {
- /// <summary>
- /// 伤害很高)(前摇时间长):很多剑从远处汇聚到boss周围,然后以一字行快速贯穿目标,每命中{0}次防御削减{1}%,{2}次所有伤势+{3}
- /// ,如果目标上有剑毅,每丙剑消耗{4}层剑毅让敌人受到{5}额外的伤害
- /// </summary>
- 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<b_1007>();
- 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;
- }
- }
- }
- }
- }
|