Boss_90111.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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 - 水火无情触发检测
  20. /// </summary>
  21. class Boss_90111 : XmdsPassiveSkillBase
  22. {
  23. public static int ID = 90111;
  24. private static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.BOSS_ZB_TAG_SKILLLAUNCH; // 水火无情冷却标记
  25. private static XmdsSkillValue valueSet0; // 伤害系数
  26. private static XmdsSkillValue valueSet1; // 触发间隔
  27. private static XmdsSkillValue valueSet2; // 水无情
  28. private static XmdsSkillValue valueSet3; // 火无情
  29. private int TimePass = 0; //时间流逝
  30. private XmdsVirtual mOwner = null;
  31. // 分解配置数据
  32. private int mTriggerInterval = 0;
  33. private int mUnitMySkillID = 0;
  34. private int mUnitOtherID = 0;
  35. private int mUnitOtherSkillID = 0;
  36. public override int SkillID {get{return ID;}}
  37. protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
  38. {
  39. this.mOwner = owner;
  40. this.mTriggerInterval = valueSet1.GetValue();
  41. int unitA = valueSet2.GetValue(1, 1);
  42. int skillA = valueSet2.GetValue(1, 2);
  43. int unitB = valueSet3.GetValue(1, 1);
  44. int skillB = valueSet3.GetValue(1, 2);
  45. if(unitA == this.mOwner.mInfo.ID)
  46. {
  47. this.mUnitMySkillID = skillA;
  48. this.mUnitOtherID = unitB;
  49. this.mUnitOtherSkillID = skillB;
  50. }
  51. else if (unitB == this.mOwner.mInfo.ID)
  52. {
  53. this.mUnitMySkillID = skillB;
  54. this.mUnitOtherID = unitA;
  55. this.mUnitOtherSkillID = skillA;
  56. }
  57. else
  58. {
  59. this.mTriggerInterval = 0;
  60. }
  61. XmdsBuffPack pack1 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  62. BuffTemplate bt1 = pack1.mBuffTemplate;
  63. bt1.IsHarmful = true;
  64. bt1.LifeTimeMS = this.mTriggerInterval;
  65. pack1.BindTemplateAndDispose();
  66. this.mOwner.RegistSendBuff(bt1);
  67. }
  68. protected override void OnUpdate(int intervalMS, bool slowRefresh)
  69. {
  70. try
  71. {
  72. if(mTriggerInterval <= 0)
  73. {
  74. base.OnUpdate(intervalMS, slowRefresh);
  75. return;
  76. }
  77. this.TimePass += intervalMS;
  78. if (this.TimePass > this.mTriggerInterval && this.mOwner.mUnit.GetBuffByID(Buff_ID) == null)
  79. {
  80. this.TimePass = 0;
  81. InstanceUnit unit = this.mOwner.mUnit.Parent.isUnitInRoundRange<InstanceUnit>(this.mUnitOtherID,
  82. this.mOwner.mUnit.X, this.mOwner.mUnit.Y, 35, this.mOwner.mUnit.AoiStatus);
  83. if (unit != null)
  84. {
  85. unit.AddBuff(Buff_ID, this.mOwner.mUnit);
  86. this.mOwner.mUnit.AddBuff(Buff_ID, this.mOwner.mUnit);
  87. // 释放技能
  88. SkillState skillStateA = this.mOwner.mUnit.getSkillState(mUnitMySkillID);
  89. SkillState skillStateB = unit.getSkillState(mUnitOtherSkillID);
  90. if(skillStateA != null && skillStateB != null)
  91. {
  92. this.mOwner.mUnit.launchSkill(skillStateA, new InstanceUnit.LaunchSkillParam());
  93. unit.launchSkill(skillStateB, new InstanceUnit.LaunchSkillParam());
  94. }
  95. else
  96. {
  97. log.Warn("Boss_90111 释放双生技能时,找不到技能状态信息!");
  98. }
  99. }
  100. }
  101. base.OnUpdate(intervalMS, slowRefresh);
  102. }
  103. catch(Exception err)
  104. {
  105. log.Warn("Boss_90111 catch : " + err);
  106. }
  107. }
  108. protected override void OnInitSkillParam()
  109. {
  110. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  111. InitData(data, out valueSet0, XmdsSkillData.XmdsSkillDataKey.DmgRate);
  112. InitData(data, out valueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  113. InitData(data, out valueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  114. InitData(data, out valueSet3, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
  115. }
  116. protected override void OnDispose(XmdsVirtual owner)
  117. {
  118. }
  119. }
  120. }