XmdsBuff_AttackSpeed.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. 
  2. using CommonAI.Zone.Helper;
  3. using CommonAI.Zone.Instance;
  4. using XmdsCommon.Message;
  5. using XmdsCommon.Plugin;
  6. using XmdsCommonServer.Plugin;
  7. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  8. namespace XmdsCommonSkill.Plugin.Buffs
  9. {
  10. //攻速
  11. public class XmdsBuff_AttackSpeed : XmdsBuffBase
  12. {
  13. //改变的攻速.
  14. public int changeValue; //万分比
  15. private int mHandleUUID = 0;
  16. private int mOpID = 0;
  17. public override int GetAbilityID()
  18. {
  19. return (int)XmdsCommon.Plugin.XmdsBuffProperties.XmdsBuffAbility.AttackSpeed;
  20. }
  21. public override void CopyTo(UnitBuff other)
  22. {
  23. var ret = other as XmdsBuff_AttackSpeed;
  24. ret.changeValue = this.changeValue;
  25. base.CopyTo(other);
  26. }
  27. protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, InstanceUnit.BuffState state)
  28. {
  29. //注册监听.
  30. mHandleUUID = hitter.RegistLaunchSkillOver(OnLaunchSkillOver, null);
  31. XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
  32. pco.Type = XmdsVirtual.UnitAttributeType.AttackSpeed;
  33. pco.Value = changeValue;
  34. pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;
  35. mOpID = hitter.AddPropChangeOperation(pco);
  36. }
  37. private int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState skill)
  38. {
  39. XmdsSkillProperties skillProp = skill.Data.Properties as XmdsSkillProperties;
  40. if ((skillProp != null && skillProp.SkillType == XmdsSkillType.normalAtk))
  41. {
  42. if(BuffInvaildCheck())
  43. {
  44. //int decreaseTime = skill.TotalCDTime * changeValue / 10000;
  45. //skill.SetDecreaseTotalTimeMS(decreaseTime);
  46. launcher.mUnit.removeBuff(this.BindBuffID);
  47. }
  48. }
  49. return 0;
  50. }
  51. protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace)
  52. {
  53. //取消监听.
  54. hitter.UnRegistLaunchSkillOver(mHandleUUID);
  55. hitter.RemovePropChangeOperation(mOpID);
  56. }
  57. }
  58. }