Boss_90110.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using CommonAI.Zone.Helper;
  2. using CommonAI.Zone.Instance;
  3. using XmdsCommonServer.Plugin;
  4. using XmdsCommonServer.XLS.Data;
  5. using XmdsCommonSkill.Plugin.Buffs;
  6. using System;
  7. using static CommonAI.Zone.Instance.InstanceUnit;
  8. using XmdsCommon.Plugin;
  9. using CommonAI.Zone;
  10. using XmdsCommonServer.Plugin.Units;
  11. using CommonAI.Zone.Formula;
  12. using XmdsCommonSkill.Plugin.Skills;
  13. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  14. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  15. using CommonLang;
  16. namespace XmdsCommonSkill.Plugin.PassiveSkills.Remedy
  17. {
  18. /// <summary>
  19. /// boss - 3 - 心有灵犀(清风明月距离在N码范围内会同时获得攻击和攻速增幅效果)
  20. /// </summary>
  21. class Boss_90110 : XmdsPassiveSkillBase
  22. {
  23. public static int ID = 90110;
  24. //心有灵犀buff
  25. private static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.PROP_CHANGE_2;
  26. private static XmdsSkillValue valueSet0; // 攻击提升值
  27. private static XmdsSkillValue valueSet1; // 攻速提升值
  28. private static XmdsSkillValue valueSet2; // 单位距离触发
  29. private static XmdsSkillValue valueSet3; // 伴生怪物ID
  30. private static XmdsSkillValue valueSet4; // 持续时间
  31. private int TimePass = 0; //时间流逝
  32. private XmdsVirtual mOwner = null;
  33. private int partnerID = 0;
  34. public override int SkillID {get{return ID;}}
  35. protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
  36. {
  37. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  38. //攻击
  39. XmdsBuff_PropChange buff = (XmdsBuff_PropChange)pack.GetXmdsBuff(0);
  40. buff.CurentChangeType = XmdsVirtual.UnitAttributeType.Attack;
  41. buff.CurrentValue = valueSet0.GetValue();
  42. buff.IsPercent = true;
  43. //攻速
  44. XmdsBuff_PropChange buff1 = (XmdsBuff_PropChange)pack.GetXmdsBuff(1);
  45. buff1.CurentChangeType = XmdsVirtual.UnitAttributeType.AttackSpeed;
  46. buff1.CurrentValue = valueSet1.GetValue();
  47. buff1.IsPercent = true;
  48. BuffTemplate bt = pack.mBuffTemplate;
  49. bt.IsHarmful = true;
  50. bt.LifeTimeMS = valueSet4.GetValue();
  51. pack.BindTemplateAndDispose();
  52. owner.RegistSendBuff(bt);
  53. this.mOwner = owner;
  54. int unitA = valueSet3.GetValue(1, 1);
  55. int unitB = valueSet3.GetValue(1, 2);
  56. this.partnerID = 0;
  57. if (owner.mUnit.Info.TemplateID == unitA)
  58. {
  59. this.partnerID = unitB;
  60. }
  61. else if(owner.mUnit.Info.TemplateID == unitB)
  62. {
  63. this.partnerID = unitA;
  64. }
  65. }
  66. protected override void OnUpdate(int intervalMS, bool slowRefresh)
  67. {
  68. this.TimePass += intervalMS;
  69. if (this.TimePass >= 2000)
  70. {
  71. this.TimePass = 0;
  72. InstanceUnit unit = this.mOwner.mUnit.Parent.isUnitInRoundRange<InstanceUnit>(this.partnerID,
  73. this.mOwner.mUnit.X, this.mOwner.mUnit.Y, valueSet2.GetValue(), this.mOwner.mUnit.AoiStatus);
  74. if(unit != null)
  75. {
  76. unit.AddBuff(Buff_ID, this.mOwner.mUnit);
  77. this.mOwner.mUnit.AddBuff(Buff_ID, this.mOwner.mUnit);
  78. }
  79. }
  80. base.OnUpdate(intervalMS, slowRefresh);
  81. }
  82. protected override void OnInitSkillParam()
  83. {
  84. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  85. InitData(data, out valueSet0, XmdsSkillData.XmdsSkillDataKey.DmgRate);
  86. InitData(data, out valueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  87. InitData(data, out valueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  88. InitData(data, out valueSet3, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
  89. InitData(data, out valueSet4, XmdsSkillData.XmdsSkillDataKey.ValueSet4);
  90. }
  91. protected override void OnDispose(XmdsVirtual owner)
  92. {
  93. }
  94. }
  95. }