Priest_502030.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. using CommonAI.Zone;
  2. using XmdsCommon.Plugin;
  3. using XmdsCommonServer.Plugin;
  4. using XmdsCommonServer.Plugin.Units;
  5. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  6. using XmdsCommonSkill.Plugin.Buffs;
  7. using XmdsCommonServer.XLS.Data;
  8. namespace XmdsCommonSkill.Plugin.Skills.Priest
  9. {
  10. /// <summary>
  11. /// 恶魔之力:召唤一个死亡时带自爆的暗影魔(自爆参数见下方500031)
  12. /// </summary>
  13. public class Priest_502030 : Priest_500030
  14. {
  15. /// <summary>
  16. /// 技能ID.
  17. /// </summary>
  18. public static new int ID = 502030;
  19. /// <summary>
  20. /// 影魔ID.
  21. /// </summary>
  22. public static new int SummonUnit_ID = 502030;
  23. // 减速buff
  24. public static int BuffID = (int)XmdsBuffBase.XmdsBuffList.JIAN_SU;
  25. public static new XmdsSkillValue ThreatValue;
  26. // 自爆伤害
  27. public static XmdsSkillValue DP_1;
  28. public static XmdsSkillValue DP_up;
  29. public static XmdsSkillValue DM_1;
  30. // 减速buff
  31. public static XmdsSkillValue BuffLifeTime;
  32. public static XmdsSkillValue BuffValue;
  33. public static XmdsSkillValue BuffRate;
  34. public override int SkillID
  35. {
  36. get
  37. {
  38. return ID;
  39. }
  40. }
  41. protected override void OnThreatValueEvent(BattleParams param)
  42. {
  43. param.ThreatValue = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, ThreatValue);
  44. }
  45. protected override void OnSkillLogicEvent(BattleParams param)
  46. {
  47. if (param.AtkProp.DamagePerID == 1)
  48. {
  49. callMonster(param, SummonUnit_ID);
  50. }
  51. }
  52. protected override void OnInitSkillParam()
  53. {
  54. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  55. AtkType_1 = data.GetAtkType();
  56. InitData(data, out DP_1, XmdsSkillData.XmdsSkillDataKey.DmgRate);
  57. InitData(data, out DP_up, XmdsSkillData.XmdsSkillDataKey.DmgRatePerLvl);
  58. InitData(data, out DM_1, XmdsSkillData.XmdsSkillDataKey.ExdDmgSet);
  59. InitData(data, out BuffValue, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  60. InitData(data, out BuffLifeTime, XmdsSkillData.XmdsSkillDataKey.BuffTime);
  61. InitData(data, out BuffRate, XmdsSkillData.XmdsSkillDataKey.Chance);
  62. InitData(data, out ThreatValue, XmdsSkillData.XmdsSkillDataKey.HateRate);
  63. }
  64. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  65. {
  66. base.OnInit(info, unit, ref template);
  67. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(BuffID);
  68. BuffTemplate bt = pack.mBuffTemplate;
  69. bt.IsHarmful = true;
  70. pack.BindTemplateAndDispose();
  71. unit.RegistSendBuff(bt);
  72. }
  73. }
  74. //-------------------------------------------------------------------------------------------
  75. /// <summary>
  76. /// 暗影魔技能(普攻 + 自爆).
  77. /// 自爆:死亡时发生爆炸,对身边敌人造成x倍魔攻伤害,附加y点魔法伤害。并减速敌人x%,持续x秒.
  78. /// </summary>
  79. public class Priest_500031 : XmdsSkillBase
  80. {
  81. public static int SrcSkillID = Priest_502030.ID;
  82. public static int ID = 500031;
  83. // 普攻伤害,不从表读,此处写死100%攻击
  84. public static int DP = 10000;
  85. public static int ThreatValue = 10000;
  86. public static XmdsVirtual.AttackType AtkType_1 = XmdsVirtual.AttackType.magAtk;
  87. public static XmdsVirtual.AttackType AtkType_2 = XmdsVirtual.AttackType.magAtk;
  88. public override int SkillID
  89. {
  90. get
  91. {
  92. return ID;
  93. }
  94. }
  95. protected override void OnSkillDamagePerEvent(BattleParams param)
  96. {
  97. if (param.AtkProp.DamagePerID == 1)
  98. {
  99. int ret = CalDamagePer(DP, 0, param.GameSkill.SkillLevel);
  100. param.SkillDamagePer = ret;
  101. }
  102. else if (param.AtkProp.DamagePerID == 2)
  103. {
  104. XmdsVirtual zv = XmdsBattleHelper.GetSummonMaster(param.Attacker);
  105. if (zv != null)
  106. {
  107. int lv = zv.SkillHelper.GetGameSkill(SrcSkillID).TalentSkillLevel;
  108. int ret = CalDamagePer(this.GetTargetFormulaValue(lv, Priest_502030.DP_1), this.GetTargetFormulaValue(lv, Priest_502030.DP_up), lv);
  109. param.SkillDamagePer = ret;
  110. }
  111. }
  112. }
  113. protected override void OnskillDamageModifyEvent(BattleParams param)
  114. {
  115. if (param.AtkProp.DamagePerID == 2)
  116. {
  117. XmdsVirtual zv = XmdsBattleHelper.GetSummonMaster(param.Attacker);
  118. if (zv != null)
  119. {
  120. int lv = zv.SkillHelper.GetGameSkill(SrcSkillID).TalentSkillLevel;
  121. int ret = GetTargetFormulaValue(lv, Priest_502030.DM_1);
  122. param.SkillDamageModify = ret;
  123. }
  124. }
  125. }
  126. protected override void OnAttackTypeEvent(BattleParams param)
  127. {
  128. //普攻.
  129. if (param.AtkProp.DamagePerID == 1)
  130. {
  131. param.AttackType = AtkType_1;
  132. }
  133. //自爆.
  134. else if (param.AtkProp.DamagePerID == 2)
  135. {
  136. param.AttackType = AtkType_2;
  137. }
  138. }
  139. protected override void OnThreatValueEvent(BattleParams param)
  140. {
  141. //普攻.
  142. if (param.AtkProp.DamagePerID == 1)
  143. {
  144. param.ThreatValue = ThreatValue;
  145. }
  146. //自爆.
  147. else if (param.AtkProp.DamagePerID == 2)
  148. {
  149. XmdsVirtual zv = XmdsBattleHelper.GetSummonMaster(param.Attacker);
  150. if (zv != null)
  151. {
  152. int lv = zv.SkillHelper.GetGameSkill(SrcSkillID).TalentSkillLevel;
  153. param.ThreatValue = GetTargetFormulaValue(lv, Priest_502030.ThreatValue);
  154. }
  155. }
  156. }
  157. protected override void OnSkillLogicEvent(BattleParams param)
  158. {
  159. // 自爆,+减速.
  160. if (param.AtkProp.DamagePerID == 2)
  161. {
  162. XmdsVirtual zv = XmdsBattleHelper.GetSummonMaster(param.Attacker);
  163. int lv = 0;
  164. if (zv != null)
  165. {
  166. lv = zv.SkillHelper.GetGameSkill(SrcSkillID).TalentSkillLevel;
  167. }
  168. //随机概率添加BUFF.
  169. if ((zv != null) && param.Attacker.RandomPercent(this.GetTargetFormulaValue(lv, Priest_502030.BuffRate)))
  170. {
  171. //更换攻击者.设置为宿主.
  172. param.Attacker = zv;
  173. XmdsBuff_MoveSpeedChange buff = (XmdsBuff_MoveSpeedChange)param.Attacker.GetRegisBuffVirtual(Priest_502030.BuffID);
  174. buff.ChangePercent = -this.GetTargetFormulaValue(lv, Priest_502030.BuffValue);
  175. BuffTemplate bt = param.Attacker.GetRegistBuff(Priest_502030.BuffID);
  176. bt.LifeTimeMS = this.GetTargetFormulaValue(lv, Priest_502030.BuffLifeTime);
  177. param.Hitter.mUnit.AddBuff(Priest_502030.BuffID, param.Attacker.mUnit);
  178. }
  179. }
  180. }
  181. }
  182. }