using CommonAI.Zone.Formula; using CommonAI.Zone.Instance; using System; using XmdsCommon.Message; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator; using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills; namespace XmdsCommonSkill.Plugin.Buffs { //破甲 public class XmdsBuff_SunderArmor : XmdsBuffBase { //被顶替的技能ID. public int ChangeValue; private int OverLayer = 0; private int mOpID = 0; public override int GetAbilityID() { return (int)XmdsCommon.Plugin.XmdsBuffProperties.XmdsBuffAbility.Sunder_Armor; } public override void CopyTo(UnitBuff other) { var ret = other as XmdsBuff_SunderArmor; ret.ChangeValue = this.ChangeValue; ret.OverLayer = this.OverLayer; base.CopyTo(other); } protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, InstanceUnit.BuffState state) { OverLayer = state.OverlayLevel; XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this); pco.Type = XmdsVirtual.UnitAttributeType.Defence; pco.Value = ChangeValue * state.OverlayLevel; pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent; mOpID = hitter.AddPropChangeOperation(pco); } protected override int OnBuffHit(XmdsVirtual hitter, XmdsVirtual attacker, CommonAI.Zone.Formula.AttackSource source, ref XmdsVirtual.AtkResult result) { XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this); pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed; pco.Value = ChangeValue * OverLayer; pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent; //刷新数值 hitter.UpdatePropChangeOperation(mOpID, pco); return base.OnBuffHit(hitter, attacker, source, ref result); } protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace) { hitter.RemovePropChangeOperation(mOpID); base.BuffEnd(hitter, state, replace); } } }