using CommonAI.Zone; using CommonAI.Zone.Instance; using System.Collections.Generic; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.Plugin.Units; using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator; namespace XmdsCommonSkill.Plugin.Buffs { public class XmdsBuff_IngoreCtrl : XmdsBuffBase { private int uuid = 0; public override int GetAbilityID() { return (int)XmdsCommon.Plugin.XmdsBuffProperties.XmdsBuffAbility.IngoreCtrl; } protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, InstanceUnit.BuffState state) { uuid = hitter.RegistTryAddBuffEvent(OnTryAddBuffEvent, null); XmdsVirtual.FormatLog("BuffBegin : 单位【{0}】进入免控状态.", hitter.mProp.ServerData.BaseInfo.name); } protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace) { hitter.UnRegistTryAddBuffEvent(uuid); XmdsVirtual.FormatLog("BuffEnd : 单位【{0}】脱离免控状态", hitter.mProp.ServerData.BaseInfo.name); } private bool OnTryAddBuffEvent(ref BuffTemplate buff, XmdsVirtual attacker, XmdsVirtual hitter, GameSkill skill) { if (!IsInvaild() && XmdsInstanceUtils.IsControlBuff(buff)) { hitter.SendBattleHintNumberB2C(0, XmdsVirtual.UnitHitEventState.Immunity); //每次生效自动检查. if (BuffInvaildCheck()) { hitter.mUnit.removeBuff(BindBuffID); } return false; } return true; } } }