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);
- }
- }
- }
|