Remedy_510500.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using CommonAI.Zone;
  2. using CommonAI.Zone.Helper;
  3. using CommonAI.Zone.Instance;
  4. using XmdsCommon.Plugin;
  5. using XmdsCommonServer.Plugin;
  6. using XmdsCommonServer.XLS.Data;
  7. using XmdsCommonSkill.Plugin.Buffs;
  8. namespace XmdsCommonSkill.Plugin.Skills.Remedy
  9. {
  10. /// <summary>
  11. /// 治疗, 五技能 :基类
  12. /// 跃起对自己注入强力的咒语(算是施法动作时间,但是霸体),然后原地砸下气浪,造成一定伤害,并使自己强化6S,
  13. /// 金咒缠身,模型变大,增加n%暴击率,m%攻击速度,X%移动速度
  14. /// </summary>
  15. public class Remedy_510500 : RemedySkillBase
  16. {
  17. private static readonly int ID = 510500;
  18. public static readonly int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.GOLDEN_BODY_5;
  19. private static readonly int Buff_ID1 = (int)XmdsBuffBase.XmdsBuffList.IGNORE_DAMAGE_5;
  20. public override int SkillID { get { return ID; } }
  21. // 伤害倍数:固定值_百分比
  22. public XmdsSkillValue valueSet;
  23. // 扩展配置
  24. public XmdsSkillValue valueSet5; // 强化效果
  25. protected XmdsSkillValue valueSet7; // 释放过程中免伤
  26. protected override void OnSkillDamagePerEvent(BattleParams param)
  27. {
  28. param.SkillDamageAdd = valueSet.GetValue(param.GameSkill.SkillLevel);
  29. param.SkillDamagePer = valueSet.GetValueExt(param.GameSkill.SkillLevel);
  30. }
  31. private void BuffInit(GameSkill info, XmdsVirtual unit)
  32. {
  33. var pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  34. var buff1 = pack.GetXmdsBuff(0) as XmdsBuff_PropChange;
  35. buff1.CurentChangeType = XmdsVirtual.UnitAttributeType.CritRate;
  36. buff1.IsPercent = true;
  37. buff1.CurrentValue = valueSet5.GetValue(info.SkillLevel, 1);
  38. var buff2 = pack.GetXmdsBuff(1) as XmdsBuff_PropChange;
  39. buff2.CurentChangeType = XmdsVirtual.UnitAttributeType.AttackSpeed;
  40. buff2.IsPercent = true;
  41. buff2.CurrentValue = valueSet5.GetValue(info.SkillLevel, 2);
  42. var buff3 = pack.GetXmdsBuff(2) as XmdsBuff_PropChange;
  43. buff3.CurentChangeType = XmdsVirtual.UnitAttributeType.MoveSpeed;
  44. buff3.IsPercent = true;
  45. buff3.CurrentValue = valueSet5.GetValue(info.SkillLevel, 3);
  46. var bt = pack.mBuffTemplate;
  47. bt.IsHarmful = false;
  48. bt.LifeTimeMS = valueSet5.GetValue(info.SkillLevel, 4);
  49. pack.BindTemplateAndDispose();
  50. unit.RegistSendBuff(bt);
  51. }
  52. protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
  53. {
  54. base.OnSkillDataChange(gs, unit);
  55. //金身效果
  56. var buff1 = unit.GetRegisBuffVirtual(Buff_ID, 0) as XmdsBuff_PropChange;
  57. buff1.CurrentValue = valueSet5.GetValue(gs.SkillLevel, 1);
  58. var buff2 = unit.GetRegisBuffVirtual(Buff_ID, 1) as XmdsBuff_PropChange;
  59. buff2.CurrentValue = valueSet5.GetValue(gs.SkillLevel, 2);
  60. var buff3 = unit.GetRegisBuffVirtual(Buff_ID, 2) as XmdsBuff_PropChange;
  61. buff3.CurrentValue = valueSet5.GetValue(gs.SkillLevel, 3);
  62. var bt = unit.GetRegistBuff(Buff_ID);
  63. bt.LifeTimeMS = valueSet5.GetValue(gs.SkillLevel, 4);
  64. //释放过程中免伤
  65. var buff_ignoreDmg = unit.GetRegisBuffVirtual(Buff_ID1) as XmdsBuff_PropChange;
  66. buff_ignoreDmg.CurrentValue = valueSet7.GetValue(gs.SkillLevel, 2);
  67. var bt_ignoreDmg = unit.GetRegistBuff(Buff_ID1);
  68. bt_ignoreDmg.LifeTimeMS = valueSet7.GetValue(gs.SkillLevel, 1);
  69. }
  70. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  71. {
  72. base.OnInit(info, unit, ref template);
  73. //注册免伤buff
  74. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID1);
  75. XmdsBuff_PropChange buff = (XmdsBuff_PropChange)pack.GetXmdsBuff(0);
  76. buff.CurentChangeType = XmdsVirtual.UnitAttributeType.AllDmgReduce;
  77. buff.CurrentValue = valueSet7.GetValue(info.SkillLevel, 2); // 免伤比例
  78. buff.IsPercent = true;
  79. BuffTemplate bt = pack.mBuffTemplate;
  80. bt.IsHarmful = true;
  81. bt.LifeTimeMS = valueSet7.GetValue(info.SkillLevel, 1);
  82. pack.BindTemplateAndDispose();
  83. unit.RegistSendBuff(bt);
  84. BuffInit(info, unit);
  85. this.RegistEvent(EventType.UseFormluaType, OnUseFormluaTypeEvent);
  86. unit.RegistLaunchSkillOver(OnLaunchSkillOver, info);
  87. }
  88. private void OnUseFormluaTypeEvent(BattleParams param)
  89. {
  90. param.UseDamageType = base.AutoGetDamageType(param);
  91. }
  92. protected virtual int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState state)
  93. {
  94. this.TriggerBaseBuff(info, launcher, state);
  95. return 0;
  96. }
  97. protected void TriggerBaseBuff(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState state)
  98. {
  99. launcher.mUnit.AddBuff(Buff_ID);
  100. launcher.mUnit.AddBuff(Buff_ID1);
  101. }
  102. protected override void OnInitConfig()
  103. {
  104. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  105. base.InitBaseConfig(data);
  106. InitData(data, out valueSet, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  107. // 扩展配置
  108. InitData(data, out valueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
  109. InitData(data, out valueSet7, XmdsSkillData.XmdsSkillDataKey.ValueSet7);
  110. }
  111. }
  112. }