Priest_501030.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. using System;
  2. using CommonAI.Zone;
  3. using XmdsCommon.Plugin;
  4. using XmdsCommonServer.Plugin;
  5. using XmdsCommonServer.Plugin.Units;
  6. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  7. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  8. using XmdsCommonServer.XLS.Data;
  9. using CommonLang.Vector;
  10. namespace XmdsCommonSkill.Plugin.Skills.Priest
  11. {
  12. /// <summary>
  13. /// 强化暗影魔: 使暗影魔的属性全面提升,生命提高x%,攻击提高x%.
  14. /// </summary>
  15. public class Priest_501030 : Priest_500030
  16. {
  17. /// <summary>
  18. /// 技能ID.
  19. /// </summary>
  20. public static new int ID = 501030;
  21. /// <summary>
  22. /// 血量提升.
  23. /// </summary>
  24. public static XmdsSkillValue HP_up;
  25. /// <summary>
  26. /// 攻击提升.
  27. /// </summary>
  28. public static XmdsSkillValue Atk_up;
  29. /// <summary>
  30. /// 仇恨系数.
  31. /// </summary>
  32. public static new XmdsSkillValue ThreatValue;
  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 OnSkillLogicEvent(BattleParams param)
  45. {
  46. if (param.AtkProp.DamagePerID == 1)
  47. {
  48. callMonster2(param, SummonUnit_ID);
  49. }
  50. }
  51. /// <summary>
  52. /// 召唤暗影魔.
  53. /// </summary>
  54. private void callMonster2(BattleParams param, int templateID)
  55. {
  56. UnitInfo info = XmdsBattleSkill.GetUnitInfo(SummonUnit_ID);
  57. int r = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SummonLimit);
  58. int numPerTime = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SumUnitCount);
  59. XmdsVirtual_Player player = param.Attacker as XmdsVirtual_Player; ;
  60. XmdsVirtual_SummonUnit su = null;
  61. if (player != null)
  62. {
  63. int cur = player.GetSummonUnitListCount();
  64. while (cur + numPerTime > r)
  65. {
  66. su = player.GetFirstTimesupSummonUnit();
  67. if (su != null)
  68. {
  69. (su.mUnit as XmdsInstanceSummonUnit).kill(null, false);
  70. cur--;
  71. }
  72. }
  73. }
  74. for (int i = 0; i < numPerTime; i++)
  75. {
  76. //var pos = param.Attacker.mUnit.Parent.PathFinder.FindNearRandomMoveableNode(
  77. // param.Attacker.mUnit.RandomN,
  78. // param.Attacker.mUnit.X,
  79. // param.Attacker.mUnit.Y,
  80. // 2, true);
  81. AddUnitEvent aue = null;
  82. Vector2 pos = new Vector2(param.Attacker.mUnit.X, param.Attacker.mUnit.Y);
  83. MoveLinear(param.Attacker.mUnit, ref pos, SummonDistance, param.Attacker.mUnit.Direction);
  84. var unit = (param.Attacker.mUnit.Parent.AddUnit(
  85. info, info.Name,
  86. param.Attacker.mUnit.Force, param.Attacker.GetUnitLv(),
  87. pos.X,
  88. pos.Y,
  89. param.Attacker.mUnit.Direction,
  90. out aue,
  91. param.Attacker.mUnit)) as XmdsInstanceSummonUnit;
  92. XmdsVirtual zv = (unit.Virtual) as XmdsVirtual;
  93. //XmdsUnitProperties zup = unit.Info.Properties as XmdsUnitProperties;
  94. zv.mProp.ServerData.BaseInfo.UnitLv = param.Attacker.GetUnitLv();
  95. //继承本体部分属性.
  96. XmdsBattleHelper.SetSummonUnitProp(zv, param.Attacker);
  97. aue.Sync.Name = zv.mProp.ServerData.BaseInfo.name;
  98. //血量提升.
  99. float k = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, HP_up);
  100. k = k / XmdsDamageCalculator.PERER;
  101. zv.MirrorProp.BaseMaxHP = (int)((1 + k) * zv.MirrorProp.BaseMaxHP);
  102. zv.MirrorProp.HP = zv.MirrorProp.MaxHP;
  103. //攻击提升.
  104. k = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, Atk_up);
  105. k = k / XmdsDamageCalculator.PERER;
  106. zv.MirrorProp.BaseMaxPhy = (int)((1 + k) * zv.MirrorProp.MaxPhy);
  107. zv.MirrorProp.BaseMinPhy = (int)((1 + k) * zv.MirrorProp.MinPhy);
  108. zv.MirrorProp.BaseMaxMag = (int)((1 + k) * zv.MirrorProp.MaxMag);
  109. zv.MirrorProp.BaseMinMag = (int)((1 + k) * zv.MirrorProp.MinMag);
  110. info.LifeTimeMS = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SummonUnit_LifeTime);
  111. //unit.guardUnit(param.Attacker.mUnit);
  112. unit.SummonerUnit = param.Attacker.mUnit;
  113. if (player != null)
  114. {
  115. player.AddSummonUnitList(unit.Virtual as XmdsVirtual_SummonUnit);
  116. }
  117. }
  118. }
  119. protected override void OnInitSkillParam()
  120. {
  121. base.OnInitSkillParam();
  122. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  123. InitData(data, out HP_up, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  124. InitData(data, out Atk_up, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  125. InitData(data, out ThreatValue, XmdsSkillData.XmdsSkillDataKey.HateRate);
  126. }
  127. }
  128. }