Monster_606112.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using CommonAI.Zone;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using XmdsCommonServer.Plugin;
  7. using XmdsCommonServer.Plugin.Units;
  8. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  9. using XmdsCommonServer.XLS.Data;
  10. namespace XmdsCommonSkill.Plugin.Skills.Monster
  11. {
  12. /// <summary>
  13. /// 无极刀阵 瞬发 在地上召唤插入刀,对所有敌人造成持续的伤害,直到刀被击破为止。 使用技能召唤一个单位,这个单位会造成百分比物理伤害和固定物理伤害
  14. /// </summary>
  15. class Monster_606112 : XmdsSkillBase
  16. {
  17. public static int ID = 606112;
  18. public static int SummonUnit_ID = 60615;
  19. /// 可召唤最大个数.
  20. public static XmdsSkillValue SummonLimit;
  21. /// 单次召唤数量(目前固定为1).
  22. public static XmdsSkillValue SumUnitCount;
  23. public override int SkillID { get { return ID; } }
  24. protected override void OnRegistEvent()
  25. {
  26. this.RegistEvent(EventType.UseFormluaType, OnUseFormluaTypeEvent);
  27. base.OnRegistEvent();
  28. }
  29. private void OnUseFormluaTypeEvent(BattleParams param)
  30. {
  31. param.UseDamageType = CommonAI.Data.DamageType.None;
  32. }
  33. protected override void OnSkillLogicEvent(BattleParams param)
  34. {
  35. if (param.AtkProp.DamagePerID == 1)
  36. {
  37. callMonster(param, SummonUnit_ID);
  38. }
  39. }
  40. /// <summary>
  41. /// 召唤黑狼.
  42. /// </summary>
  43. protected void callMonster(BattleParams param, int templateID)
  44. {
  45. UnitInfo info = XmdsBattleSkill.GetUnitInfo(templateID);
  46. int r = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SummonLimit);
  47. int numPerTime = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SumUnitCount);
  48. XmdsVirtual_Monster monster = param.Attacker as XmdsVirtual_Monster;
  49. XmdsVirtual su = null;
  50. if (monster != null)
  51. {
  52. int cur = monster.GetSummonUnitListCount();
  53. while (cur + numPerTime > r)
  54. {
  55. su = monster.GetFirstTimesupSummonUnit();
  56. if (su != null)
  57. {
  58. (su.mUnit).kill(null, false);
  59. cur--;
  60. }
  61. }
  62. }
  63. for (int i = 0; i < numPerTime; i++)
  64. {
  65. var pos = param.Attacker.mUnit.Parent.PathFinder.FindNearRandomMoveableNode(
  66. param.Attacker.mUnit.RandomN,
  67. param.Attacker.mUnit.X,
  68. param.Attacker.mUnit.Y,
  69. 2, true);
  70. AddUnitEvent aue = null;
  71. //控制生命周期.
  72. info.LifeTimeMS = 10000;
  73. var unit = (param.Attacker.mUnit.Parent.AddUnit(
  74. info, info.Name,
  75. param.Attacker.mUnit.Force, param.Attacker.GetUnitLv(),
  76. pos.PosX,
  77. pos.PosY,
  78. param.Attacker.mUnit.Direction,
  79. out aue,
  80. param.Attacker.mUnit)) as XmdsInstanceMonster;
  81. XmdsVirtual zv = (unit.Virtual) as XmdsVirtual;
  82. unit.guardUnit(param.Attacker.mUnit);
  83. if (monster != null)
  84. {
  85. monster.AddSummonUnitList(unit.Virtual as XmdsVirtual);
  86. }
  87. }
  88. }
  89. protected override void OnInitSkillParam()
  90. {
  91. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  92. InitData(data, out SummonLimit, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  93. InitData(data, out SumUnitCount, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
  94. }
  95. }
  96. }