XmdsBuff_EnergyCost.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using XmdsCommon.Plugin;
  6. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  7. namespace XmdsCommonSkill.Plugin.Buffs
  8. {
  9. /// <summary>
  10. /// FileName: XmdsBuff_EnergyCost.cs
  11. /// Author: Alex.Yu
  12. /// Corporation:...
  13. /// Description: 能量消耗改变.
  14. /// DateTime: 2015/6/17 17:37:50
  15. /// </summary>
  16. public class XmdsBuff_EnergyCost : XmdsBuffBase
  17. {
  18. /// <summary>
  19. /// BUFF作用效果.正:增加消耗,负:减少消耗(过量保护).
  20. /// </summary>
  21. public float BuffChangeValue = 0;
  22. /// <summary>
  23. /// 百分比型.
  24. /// </summary>
  25. public bool IsPercent = true;
  26. private int mHandUUID = 0;
  27. //默认时间.
  28. private const int DefaultTime = int.MaxValue;
  29. /// <summary>
  30. /// 大于0,则只影响对应的技能效果.
  31. /// </summary>
  32. public int TargetSkillID = 0;
  33. public override int GetAbilityID()
  34. {
  35. return (int)XmdsCommon.Plugin.XmdsBuffProperties.XmdsBuffAbility.EnergyCost;
  36. }
  37. public override void CopyTo(UnitBuff other)
  38. {
  39. var ret = other as XmdsBuff_EnergyCost;
  40. ret.BuffChangeValue = this.BuffChangeValue;
  41. ret.IsPercent = this.IsPercent;
  42. ret.TargetSkillID = this.TargetSkillID;
  43. base.CopyTo(other);
  44. }
  45. protected override void OnBindTemplate(ref CommonAI.Zone.BuffTemplate buffTemplate)
  46. {
  47. //如果为次数型,那么需设置作用时间.
  48. if (BuffUseType == (int)XmdsBuffBase.XmdsBuffUseType.Times)
  49. {
  50. buffTemplate.LifeTimeMS = DefaultTime;
  51. }
  52. }
  53. protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, CommonAI.Zone.Instance.InstanceUnit.BuffState state)
  54. {
  55. mHandUUID = hitter.RegistLaunchSkillOver(OnLaunchSkillOver, null, true);
  56. }
  57. protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, CommonAI.Zone.Instance.InstanceUnit.BuffState state, bool replace)
  58. {
  59. hitter.UnRegistLaunchSkillOver(mHandUUID);
  60. }
  61. private int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual attacker, CommonAI.Zone.Instance.InstanceUnit.SkillState state)
  62. {
  63. if (!IsInvaild() && BuffInvaildCheck())
  64. {
  65. attacker.mUnit.removeBuff(BindBuffID);
  66. }
  67. return 0;
  68. }
  69. }
  70. }