XmdsBuff_SunderArmor.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. 
  2. using CommonAI.Zone.Formula;
  3. using CommonAI.Zone.Instance;
  4. using System;
  5. using XmdsCommon.Message;
  6. using XmdsCommon.Plugin;
  7. using XmdsCommonServer.Plugin;
  8. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  9. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  10. namespace XmdsCommonSkill.Plugin.Buffs
  11. {
  12. //破甲
  13. public class XmdsBuff_SunderArmor : XmdsBuffBase
  14. {
  15. //被顶替的技能ID.
  16. public int ChangeValue;
  17. private int OverLayer = 0;
  18. private int mOpID = 0;
  19. public override int GetAbilityID()
  20. {
  21. return (int)XmdsCommon.Plugin.XmdsBuffProperties.XmdsBuffAbility.Sunder_Armor;
  22. }
  23. public override void CopyTo(UnitBuff other)
  24. {
  25. var ret = other as XmdsBuff_SunderArmor;
  26. ret.ChangeValue = this.ChangeValue;
  27. ret.OverLayer = this.OverLayer;
  28. base.CopyTo(other);
  29. }
  30. protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, InstanceUnit.BuffState state)
  31. {
  32. OverLayer = state.OverlayLevel;
  33. XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
  34. pco.Type = XmdsVirtual.UnitAttributeType.Defence;
  35. pco.Value = ChangeValue * state.OverlayLevel;
  36. pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;
  37. mOpID = hitter.AddPropChangeOperation(pco);
  38. }
  39. protected override int OnBuffHit(XmdsVirtual hitter,
  40. XmdsVirtual attacker, CommonAI.Zone.Formula.AttackSource source,
  41. ref XmdsVirtual.AtkResult result)
  42. {
  43. XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
  44. pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
  45. pco.Value = ChangeValue * OverLayer;
  46. pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;
  47. //刷新数值
  48. hitter.UpdatePropChangeOperation(mOpID, pco);
  49. return base.OnBuffHit(hitter, attacker, source, ref result);
  50. }
  51. protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace)
  52. {
  53. hitter.RemovePropChangeOperation(mOpID);
  54. base.BuffEnd(hitter, state, replace);
  55. }
  56. }
  57. }