Priest_501010.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. 
  2. using CommonAI.Zone;
  3. using XmdsCommon.Plugin;
  4. using XmdsCommonServer.Plugin;
  5. using XmdsCommonSkill.Plugin.Buffs;
  6. using XmdsCommonServer.XLS.Data;
  7. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  8. using System.Collections.Generic;
  9. namespace XmdsCommonSkill.Plugin.Skills.Priest
  10. {
  11. /// <summary>
  12. ///圣光强化: (增加烙印效果,牧师使用其他技能时触发额外伤害).
  13. ///使神圣光球对目标造成伤害时,目标将被灌注神圣力量,牧师可施放其他技能来激活这股力量,对敌人造成额外x%魔攻伤害.
  14. /// </summary>
  15. public class Priest_501010 : Priest_500010
  16. {
  17. /// <summary>
  18. /// 技能ID.
  19. /// </summary>
  20. public static new int ID = 501010;
  21. /// <summary>
  22. /// BUFFID
  23. /// </summary>
  24. public static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.SHENG_GUANG_QIANG_HUA;
  25. public static XmdsSkillValue buff_value;
  26. public static XmdsSkillValue BuffLifeTime;
  27. public static new XmdsSkillValue ThreatValue;
  28. //表现BUFF.
  29. public static int SpellID = 501012;
  30. /// <summary>
  31. /// 获取技能ID.
  32. /// </summary>
  33. public override int SkillID
  34. {
  35. get
  36. {
  37. return ID;
  38. }
  39. }
  40. protected override void OnThreatValueEvent(BattleParams param)
  41. {
  42. param.ThreatValue = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, ThreatValue);
  43. }
  44. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  45. {
  46. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  47. BuffTemplate bt = pack.mBuffTemplate;
  48. bt.IsHarmful = true;
  49. pack.BindTemplateAndDispose();
  50. unit.RegistSendBuff(bt);
  51. }
  52. protected override void OnRegistEvent()
  53. {
  54. this.RegistEvent(EventType.SkillLogicAftercalDamage, OnSkillLogicAfterCalDamage);
  55. base.OnRegistEvent();
  56. }
  57. private void OnSkillLogicAfterCalDamage(BattleParams param)
  58. {
  59. XmdsBuff_Brand buff = (XmdsBuff_Brand)param.Attacker.GetRegisBuffVirtual(Buff_ID, 0);
  60. // buff伤害设置.
  61. int t = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, buff_value);
  62. int mag = (param.Attacker.MirrorProp.MaxMag + param.Attacker.MirrorProp.MinMag) / 2;
  63. t = (int)(t / XmdsDamageCalculator.PERER * mag);
  64. //算魔防伤害.
  65. t = XmdsDamageCalculator.GetDamage(t, XmdsVirtual.AttackType.magAtk,
  66. param.Attacker, param.Hitter);
  67. buff.BuffValue = t;
  68. // 指定职业牧师.
  69. buff.TargetPro = XmdsUnitData.XmdsUnitPro.Priest;
  70. ///设置使用类型.
  71. buff.BuffUseType = (int)XmdsBuffBase.XmdsBuffUseType.Times;
  72. // 生效次数1次.
  73. buff.BuffUseTime = 1;
  74. //普攻无效.
  75. //调用前先清理过滤技能列表!!!.
  76. buff.CleanIgnoreSkillList();
  77. buff.AddIgnoreSkill(Priest_501010.ID);
  78. buff.AddIgnoreSkill(Priest_502010.ID);
  79. buff.AddIgnoreSkill(Priest_500010.ID);
  80. buff.OnHandleBuffEndEvent += ((hitter, state) =>
  81. {
  82. //代码调用,烙印引爆效果.
  83. var list = state.Tag as List<XmdsBuffVirtual>;
  84. if (list != null && list.Count > 0)
  85. {
  86. buff = list[0] as XmdsBuff_Brand;
  87. if (buff != null && buff.Exploded)
  88. {
  89. LaunchSpell ls = new LaunchSpell();
  90. ls.SpellID = SpellID;
  91. hitter.mUnit.Parent.unitLaunchSpell(hitter.mUnit, ls, hitter.mUnit.X, hitter.mUnit.Y);
  92. hitter.mUnit.removeBuff(Buff_ID);
  93. }
  94. }
  95. });
  96. BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_ID);
  97. bt.LifeTimeMS = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, BuffLifeTime);
  98. param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit);
  99. }
  100. protected override void OnInitSkillParam()
  101. {
  102. base.OnInitSkillParam();
  103. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  104. InitData(data, out buff_value, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  105. InitData(data, out BuffLifeTime, XmdsSkillData.XmdsSkillDataKey.BuffTime);
  106. InitData(data, out ThreatValue, XmdsSkillData.XmdsSkillDataKey.HateRate);
  107. }
  108. }
  109. }