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 { /// /// 霜域新生(被动,只会生效一次) 凤凰在伤害还剩10%的时候会触发此技能, /// 凤凰身体冰冻住并有一层寒气笼罩,期间凤凰不在受到任何伤害,并慢慢回血, /// 直到恢复满,持续5秒左右吧,恢复满后凤凰所有灵根增加{0}。冰块爆开, /// 生成一个冲击波,对当前场上所有的弹道照成当前强度的强度攻击(强度不够的弹道会被摧毁),生成{1}枚冰锥冲向玩家,对玩家照成{2}伤害 /// 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(), 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(); 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); } } }