| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | using Common.Utility.CombatEvent;using Fort23.Core;using GameLogic.Combat.Buff;using GameLogic.Combat.CombatTool;using GameLogic.Player;namespace GameLogic.Combat.Skill{    /// <summary>    /// 厚土护体    ///每使用一个土系功法时获得{0}点土系值,达到100时获得{1}%防御。持续{2}秒,每对敌人施加一次细尘额外获得{3}点    /// </summary>    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]);            }        }    }}
 |