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