Priest_501070.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using CommonAI.Zone;
  2. using CommonAI.Zone.Instance;
  3. using XmdsCommon.Plugin;
  4. using XmdsCommonServer.Plugin;
  5. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  6. using XmdsCommonServer.XLS.Data;
  7. namespace XmdsCommonSkill.Plugin.Skills.Priest
  8. {
  9. /// <summary>
  10. /// 使暗言术的冷却时间缩短<x>秒,但法力消耗提高<x>%.
  11. /// 我吐槽这技能ID设定,完全不按照规则来 (#‵′)凸.
  12. /// </summary>
  13. public class Priest_501070 : Priest_500020
  14. {
  15. /// <summary>
  16. /// 技能ID.
  17. /// </summary>
  18. public static new int ID = 501070;
  19. /// <summary>
  20. /// 减少时间.
  21. /// </summary>
  22. public static XmdsSkillValue TimeValue;
  23. /// <summary>
  24. /// MP消耗.
  25. /// </summary>
  26. public static XmdsSkillValue MPCost;
  27. /// <summary>
  28. /// 获取技能ID.
  29. /// </summary>
  30. public override int SkillID
  31. {
  32. get
  33. {
  34. return ID;
  35. }
  36. }
  37. protected override void OnInitSkillParam()
  38. {
  39. base.OnInitSkillParam();
  40. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  41. InitData(data, out TimeValue, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  42. InitData(data, out MPCost, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  43. }
  44. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  45. {
  46. base.OnInit(info, unit, ref template);
  47. }
  48. protected override void OnInitOVer(XmdsVirtual unit)
  49. {
  50. GameSkill gs = unit.SkillHelper.GetGameSkill(SkillID);
  51. var state = unit.mUnit.getSkillState(SkillID);
  52. if (state != null && gs != null)
  53. {
  54. ChangeSkillCDtime(gs, ref state);
  55. }
  56. base.OnInitOVer(unit);
  57. }
  58. //MP消耗增加.
  59. protected override int GetMPCost(int skillid, int skilllv, XmdsVirtual launcher)
  60. {
  61. int cost = base.GetMPCost(skillid, skilllv, launcher);
  62. int mpUp = this.GetTargetFormulaValue(skilllv, MPCost);
  63. float c = mpUp / XmdsDamageCalculator.PERER;
  64. cost = (int)(cost * (1 + c));
  65. return cost;
  66. }
  67. protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit, ref InstanceUnit.SkillState skill)
  68. {
  69. ChangeSkillCDtime(gs, ref skill);
  70. }
  71. private void ChangeSkillCDtime(GameSkill gs, ref InstanceUnit.SkillState skill)
  72. {
  73. int t = this.GetTargetFormulaValue(gs.TalentSkillLevel, TimeValue);
  74. skill.Data.CoolDownMS = this.GetTargetFormulaValue(gs.SkillLevel, mSkillCD) - t;
  75. }
  76. }
  77. }