Remedy_510340.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using CommonAI.Zone;
  2. using CommonAI.Zone.Helper;
  3. using CommonAI.Zone.Instance;
  4. using System;
  5. using System.Diagnostics;
  6. using XmdsCommon.Plugin;
  7. using XmdsCommonServer.Plugin;
  8. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  9. using XmdsCommonServer.XLS.Data;
  10. using XmdsCommonSkill.Plugin.Buffs;
  11. namespace XmdsCommonSkill.Plugin.Skills.Remedy
  12. {
  13. /// <summary>
  14. /// 治疗, 三技能 3- 4(此技能打中敌人后的第一下普攻会造成一个等范围的飞花伤害,飞花伤害为此技能伤害的X%+基础普攻(不暴击))
  15. /// </summary>
  16. public class Remedy_510340 : Remedy_510300
  17. {
  18. public static readonly int ID = 510340;
  19. public static readonly int Buff_ID_3_4 = (int)XmdsBuffBase.XmdsBuffList.REMEDY_3_4_TAG;
  20. public override int SkillID { get { return ID; } }
  21. protected XmdsSkillValue valueSet2;
  22. //扩展,飞花标记时间
  23. protected XmdsSkillValue valueSet5;
  24. // 数值
  25. public int normalAtkDmgAddition;
  26. //用于区别父类与子类的,不算玩家独有数据
  27. protected bool firstHitAddBuf = true;
  28. private bool isFirstHitPlayer = true;
  29. protected override void OnSkillDamagePerEvent(BattleParams param)
  30. {
  31. if(param.AtkProp.DamagePerID == 1)
  32. {
  33. base.OnSkillDamagePerEvent(param);
  34. }
  35. else
  36. {
  37. param.SkillDamagePer = CalDamagePer(valueSet2, param.GameSkill.TalentSkillLevel1);
  38. }
  39. }
  40. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  41. {
  42. base.OnInit(info, unit, ref template);
  43. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID_3_4);
  44. BuffTemplate bt = pack.mBuffTemplate;
  45. bt.IsHarmful = false;
  46. bt.LifeTimeMS = valueSet5.GetValue(info.TalentSkillLevel1);
  47. pack.BindTemplateAndDispose();
  48. unit.RegistSendBuff(bt);
  49. unit.RegistLaunchSkillOver(OnLaunchSkillOver, info);
  50. this.normalAtkDmgAddition = valueSet2.GetValue(info.TalentSkillLevel1);
  51. }
  52. public override int GetSkillValue(AbstractSkillType type)
  53. {
  54. return this.normalAtkDmgAddition;
  55. }
  56. protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
  57. {
  58. base.OnSkillDataChange(gs, unit);
  59. this.normalAtkDmgAddition = valueSet2.GetValue(gs.TalentSkillLevel1);
  60. var bt = unit.GetRegistBuff(Buff_ID_3_4);
  61. bt.LifeTimeMS = valueSet5.GetValue(gs.TalentSkillLevel1);
  62. }
  63. private int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState state)
  64. {
  65. this.isFirstHitPlayer = true;
  66. return 0;
  67. }
  68. protected override void OnSkillLogicEvent(BattleParams param)
  69. {
  70. base.OnSkillLogicEvent(param);
  71. if (this.isFirstHitPlayer && firstHitAddBuf)
  72. {
  73. this.isFirstHitPlayer = false;
  74. //自己给自己加一个标记buff
  75. param.Attacker.mUnit.AddBuff(Buff_ID_3_4, param.Attacker.mUnit);
  76. }
  77. }
  78. protected override void OnInitOver(XmdsVirtual unit, GameSkill info)
  79. {
  80. unit.ReInitOverBaseSkill(info);
  81. }
  82. protected override void OnInitConfig()
  83. {
  84. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  85. base.InitBaseConfig(data);
  86. InitData(data, out valueSet, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  87. InitData(data, out valueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  88. // 扩展配置
  89. InitData(data, out valueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
  90. }
  91. }
  92. }