XmdsBuff_Stealth.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using CommonAI.Zone;
  2. using CommonAI.Zone.Helper;
  3. using CommonAI.Zone.Instance;
  4. using XmdsCommonServer.Plugin;
  5. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  6. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  7. namespace XmdsCommonSkill.Plugin.Buffs
  8. {
  9. public class XmdsBuff_Stealth : XmdsBuffBase
  10. {
  11. /// <summary>
  12. /// 传负值减速度,传正值加速度.
  13. /// </summary>
  14. public int ChangePercent = 0;
  15. /// <summary>
  16. /// 队友可见.
  17. /// </summary>
  18. public bool TeamMemberVisible = true;
  19. private int mOpID = 0;
  20. public override int GetAbilityID()
  21. {
  22. return (int)XmdsCommon.Plugin.XmdsBuffProperties.XmdsBuffAbility.Stealth;
  23. }
  24. public override void CopyTo(UnitBuff other)
  25. {
  26. var ret = other as XmdsBuff_Stealth;
  27. ret.ChangePercent = this.ChangePercent;
  28. ret.TeamMemberVisible = this.TeamMemberVisible;
  29. base.CopyTo(other);
  30. }
  31. protected override void OnBindTemplate(ref BuffTemplate buffTemplate)
  32. {
  33. buffTemplate.IsInvisible = true;
  34. }
  35. protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, InstanceUnit.BuffState state)
  36. {
  37. if (ChangePercent != 0)
  38. {
  39. XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
  40. pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
  41. pco.Value = ChangePercent;
  42. pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;
  43. mOpID = hitter.AddPropChangeOperation(pco);
  44. }
  45. hitter.TeamMemberVisible = TeamMemberVisible;
  46. hitter.mUnit.AddActionSubState(UnitActionSubStatus.Stealth);
  47. XmdsVirtual.FormatLog("BuffBegin : 单位【{0}】进入潜行状态,移动速度变更{1}", hitter.mProp.ServerData.BaseInfo.name, ChangePercent);
  48. }
  49. protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace)
  50. {
  51. if (ChangePercent != 0 || mOpID > 0)
  52. {
  53. hitter.RemovePropChangeOperation(mOpID);
  54. }
  55. hitter.mUnit.RemoveActionSubState(UnitActionSubStatus.Stealth);
  56. XmdsVirtual.FormatLog("BuffEnd : 单位【{0}】退出入潜行状态,移动速度恢复", hitter.mProp.ServerData.BaseInfo.name);
  57. }
  58. }
  59. }