|
@@ -0,0 +1,110 @@
|
|
|
+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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|