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 UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface; namespace GameLogic.Combat.Skill { /// /// 幻花迷雾(当场上有木灵分身时触发) /// 身体摇动,天空散发出小小的花朵。木灵隐藏其中防御+{0}%,期间不在攻击,直到木灵之子全部死亡后的{1}秒消失 /// public class S9061 : SkillBasic { protected float _currTime; private bool _isUpdate; private BuffBasic _buffBasic; private long addDef; protected override void ProInitSkill() { CombatEventManager.Instance.AddEventListener(CombatEventType.HeroDie, HeroDie); } private void HeroDie(IEventData iEventData) { if (_isUpdate) { return; } HeroDieEventData heroHpUpdateEventData = iEventData as HeroDieEventData; SummonCombatHeroEntity summonCombatHeroEntity = heroHpUpdateEventData.combatHeroEntity as SummonCombatHeroEntity; if (summonCombatHeroEntity != null && summonCombatHeroEntity.ownerEntity == CombatHeroEntity) { CombatHeroEntity[] combatHeroEntities = CombatController.currActiveCombat.CombatHeroController.GetHero(CombatHeroEntity.IsEnemy); bool isOk = false; for (int i = 0; i < combatHeroEntities.Length; i++) { SummonCombatHeroEntity t = combatHeroEntities[i] as SummonCombatHeroEntity; if (t != null) { isOk = true; break; } } if (isOk) { return; } _isUpdate = true; _currTime = 0; } } protected override void ProDispose() { CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroDie, HeroDie); } protected override void ProUseSkill() { ActivationTimeLineData("9061"); BuffInfo buffInfo = BuffInfo.GetBuffInfo(10261, -1, 1); _buffBasic = CombatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo); long defense = CombatHeroEntity.MaxCombatHeroInfo.defense.Value; addDef = CombatCalculateTool.Instance.GetVlaueRatioForLong(defense, effectValue[0]); CombatHeroEntity.CurrCombatHeroInfo.defense += addDef; } protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity, ITimelineFxLogic timelineFxLogic, TriggerData triggerData, ISkillFeatures skillFeatures) { // float harmBl = 0; // b_1018 b1018 = targetEntity.combatHeroEntity.BuffControl.GetBuffBasicForType(); // if (b1018 != null) //消耗一层感电,额外照成伤害 // { // harmBl += b1018.buffCount * effectValue[1]; // } // // 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); } protected override void ProCombatUpdate(float time) { if (!_isUpdate) { return; } _currTime += time; if (_currTime >= effectValue[1]) { _isUpdate = false; CombatHeroEntity.CurrCombatHeroInfo.defense -= addDef; if (_buffBasic != null) { _buffBasic.DelectBuff(); } // CombatHeroEntity.CombatHeroSkillControl.This().SkillTurntable.isStop = false; } } } }