Priest_502060.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. 
  2. using XmdsCommonServer.Plugin;
  3. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  4. using XmdsCommonServer.XLS.Data;
  5. namespace XmdsCommonSkill.Plugin.Skills.Priest
  6. {
  7. /// <summary>
  8. /// 群体驱散: 驱散附近20米以内的魔法,如果是己方队友驱散x个负面魔法,如果是敌人则驱散y个增益魔法.
  9. /// </summary>
  10. public class Priest_502060 : XmdsSkillBase
  11. {
  12. /// <summary>
  13. /// 技能ID.
  14. /// </summary>
  15. public static int ID = 502060;
  16. /// <summary>
  17. /// 伤害类型.
  18. /// </summary>
  19. public static XmdsVirtual.AttackType AtkType_1 = XmdsVirtual.AttackType.magAtk;
  20. /// <summary>
  21. /// 己方队友驱散最大个数.
  22. /// </summary>
  23. public static XmdsSkillValue maxCount_f;
  24. /// <summary>
  25. /// 敌人驱散最大个数.
  26. /// </summary>
  27. public static XmdsSkillValue maxCount_e;
  28. /// <summary>
  29. /// 仇恨系数.
  30. /// </summary>
  31. public static XmdsSkillValue ThreatValue;
  32. /// <summary>
  33. /// 获取技能ID.
  34. /// </summary>
  35. public override int SkillID
  36. {
  37. get
  38. {
  39. return ID;
  40. }
  41. }
  42. protected override void OnRegistEvent()
  43. {
  44. this.RegistEvent(EventType.UseFormluaType, OnUseFormluaTypeEvent);
  45. // 命中率.
  46. this.RegistEvent(EventType.HitRateAdd, OnHitRateAddEvent);
  47. base.OnRegistEvent();
  48. }
  49. private void OnHitRateAddEvent(BattleParams param)
  50. {
  51. //命中率提升10000为必中.
  52. param.HitAdd = (int)XmdsDamageCalculator.PERER;
  53. }
  54. private void OnUseFormluaTypeEvent(BattleParams param)
  55. {
  56. param.UseFormulaType = BattleParams.FormulaType.None;
  57. }
  58. protected override void OnAttackTypeEvent(BattleParams param)
  59. {
  60. param.AttackType = AtkType_1;
  61. }
  62. protected override void OnThreatValueEvent(BattleParams param)
  63. {
  64. param.ThreatValue = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, ThreatValue);
  65. }
  66. protected override void OnSkillLogicEvent(BattleParams param)
  67. {
  68. // 是自己人,驱散debuff.
  69. if (param.Attacker.IsAllies(param.Hitter))
  70. {
  71. int maxCount = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, maxCount_f);
  72. if (maxCount > 0) {
  73. param.Hitter.RemoveBuff(maxCount, true);
  74. }
  75. }
  76. // 不是自己人,驱散buff.
  77. else
  78. {
  79. int maxCount = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, maxCount_e);
  80. if (maxCount > 0)
  81. {
  82. param.Hitter.RemoveBuff(maxCount, false);
  83. }
  84. }
  85. }
  86. protected override void OnInitSkillParam()
  87. {
  88. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  89. AtkType_1 = data.GetAtkType();
  90. InitData(data, out maxCount_f, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  91. InitData(data, out maxCount_e, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  92. InitData(data, out ThreatValue, XmdsSkillData.XmdsSkillDataKey.HateRate);
  93. }
  94. }
  95. }