using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.Buff; using GameLogic.Combat.CombatTool; using GameLogic.Player; namespace GameLogic.Combat.Skill { /// /// 厚土护体 ///每使用一个土系功法时获得{0}点土系值,达到100时获得{1}%防御。持续{2}秒,每对敌人施加一次细尘额外获得{3}点 /// public class S2018 : SkillBasic { private int addValue; private long addDef; private float _time; private bool _isUpdate; protected override void ProActiveSkill() { CombatEventManager.Instance.AddEventListener(CombatEventType.AddBuff, AddBuff); CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkill, UseSkill); } protected override void ProUseSkill() { } protected override void ProDispose() { CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddBuff, AddBuff); CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkill, UseSkill); } private void AddTuXiZhiValue(int v) { addValue += v; if (addValue > 100) { _isUpdate = true; _time = 0; if (addDef == 0) { addDef = CombatCalculateTool.Instance.GetVlaueRatioForLong( CombatHeroEntity.MaxCombatHeroInfo.defense.Value, effectValue[1]); CombatHeroEntity.CurrCombatHeroInfo.defense += addDef; } } } protected override void ProCombatUpdate(float time) { if (!_isUpdate) { return; } _time += time; if (_time > effectValue[2]) { _isUpdate = false; CombatHeroEntity.CurrCombatHeroInfo.defense -= addDef; } } private void AddBuff(IEventData iEventData) { BuffEventData buffEventData = iEventData as BuffEventData; if (buffEventData.source == CombatHeroEntity && buffEventData.BuffBasic is b_1013) { AddTuXiZhiValue((int)effectValue[3]); } } private void UseSkill(IEventData iEventData) { CombatUseSkillEventData combatUseSkillEventData = iEventData as CombatUseSkillEventData; if (combatUseSkillEventData.useSkill.CombatHeroEntity == CombatHeroEntity && combatUseSkillEventData.useSkill.wuXingType.HasFlag(WuXingType.Earth)) { AddTuXiZhiValue((int)effectValue[0]); } } } }