| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using Common.Utility.CombatEvent;using Fort23.Core;using GameLogic.Combat.Buff;using GameLogic.Combat.CombatTool;using GameLogic.Combat.Hero;using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;namespace GameLogic.Combat.Skill{    /// <summary>    /// 霜域新生(被动,只会生效一次) 凤凰在伤害还剩10%的时候会触发此技能,    /// 凤凰身体冰冻住并有一层寒气笼罩,期间凤凰不在受到任何伤害,并慢慢回血,    /// 直到恢复满,持续5秒左右吧,恢复满后凤凰所有灵根增加{0}。冰块爆开,    /// 生成一个冲击波,对当前场上所有的弹道照成当前强度的强度攻击(强度不够的弹道会被摧毁),生成{1}枚冰锥冲向玩家,对玩家照成{2}伤害    /// </summary>    public class S9013 : SkillBasic    {        protected BuffBasic BuffBasic;        private bool isActiveFuHuo;        private int count;        private float _currTime;        protected long addHp;        protected override void ProActiveSkill()        {            count = 0;            isActiveFuHuo = false;            CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured);        }        private void HeroInjured(IEventData data)        {            if (count > 0)            {                return;            }            HeroInjuredEventData heroInjuredEventData = data as HeroInjuredEventData;            if (heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity == CombatHeroEntity)            {                float bl = CombatHeroEntity.CurrCombatHeroInfo.hp.Value * 1.0f /                           CombatHeroEntity.MaxCombatHeroInfo.hp.Value;                if (bl * 100 < effectValue[0])                {                    addHp = CombatCalculateTool.Instance.GetVlaueRatioForLong(                        CombatHeroEntity.MaxCombatHeroInfo.hp.Value, 10);                    BuffInfo buffInfo = BuffInfo.GetBuffInfo(10151, -1, 1);                    BuffBasic = CombatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);                    isActiveFuHuo = true;                    count++;                }            }        }        protected override void ProUseSkill()        {        }        protected override void ProCombatUpdate(float time)        {            if (!isActiveFuHuo)            {                return;            }            _currTime += time;            if (_currTime > 0.2f)            {                Recover(CombatHeroEntity, CombatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(), addHp, AttType.Skill);                if (CombatHeroEntity.CurrCombatHeroInfo.hp.Value >= CombatHeroEntity.MaxCombatHeroInfo.hp.Value)                {                    isActiveFuHuo = false;                    float v = effectValue[1];                    CombatHeroEntity.CurrCombatHeroInfo.Metal += v;                    CombatHeroEntity.CurrCombatHeroInfo.Wood += v;                    CombatHeroEntity.CurrCombatHeroInfo.Water += v;                    CombatHeroEntity.CurrCombatHeroInfo.Fire += v;                    CombatHeroEntity.CurrCombatHeroInfo.Earth += v;                    S9014 s9014 = CombatHeroEntity.CombatHeroSkillControl.GetSkillBasic<S9014>();                    if (s9014 != null)                    {                        s9014.isActive = true;                    }                    //完成                }            }        }        protected void ProDefaultTimeLineTrigger_BaoZa(string groupName, CombatHeroHitPoint targetEntity,            ITimelineFxLogic timelineFxLogic,            TriggerData triggerData, ISkillFeatures skillFeatures)        {            float harmBl = effectValue[0];            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,                harmBl);            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,                AttType.Skill, triggerData,                wuXingType, skillFeatures,                HarmType.Default);        }    }}
 |