| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 | 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 S9001 : SkillBasic    {        private bool isTrgger;        private float currTime;        private int count;        private int hitCount;        private int shangShiCount;        protected override void ProInitSkill()        {            ballisticsCount = (int)10;            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, ISkillFeatures skillFeatures)        {            count = 0;            hitCount = 0;            shangShiCount = 0;            currTime = 1;            isTrgger = true;        }        private void Sk1_FaSheProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,            ITimelineFxLogic timelineFxLogic,            TriggerData triggerData, ISkillFeatures skillFeatures)        {            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, skillFeatures,                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];                    ShangSHi(WuXingType.Gold, CombatHeroEntity, targetEntity.combatHeroEntity, vInjury);                    ShangSHi(WuXingType.Wood, CombatHeroEntity, targetEntity.combatHeroEntity, vInjury);                    ShangSHi(WuXingType.Water, CombatHeroEntity, targetEntity.combatHeroEntity, vInjury);                    ShangSHi(WuXingType.Fire, CombatHeroEntity, targetEntity.combatHeroEntity, vInjury);                    ShangSHi(WuXingType.Earth, CombatHeroEntity, targetEntity.combatHeroEntity, vInjury);                }            }        }        public void ShangSHi(WuXingType wuXingType, CombatHeroEntity source, ShowBaiscEntity target, int vInjury)        {            BuffInfo buffInfo = null;            switch (wuXingType)            {                case WuXingType.Gold:                    buffInfo = BuffInfo.GetBuffInfo(10291, vInjury, this);                    break;                case WuXingType.Fire:                    buffInfo = BuffInfo.GetBuffInfo(10321, vInjury, this);                    break;                case WuXingType.Wood:                    buffInfo = BuffInfo.GetBuffInfo(10301, vInjury, this);                    break;                case WuXingType.Earth:                    buffInfo = BuffInfo.GetBuffInfo(10331, vInjury, this);                    break;                case WuXingType.Water:                    buffInfo = BuffInfo.GetBuffInfo(10311, vInjury, this);                    break;            }            target.BuffControl.AddBuff(source, buffInfo);        }        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;                }            }        }    }}
 |