Monster_1724002.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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 XmdsCommonServer.XLS.Data;
  7. namespace XmdsCommonSkill.Plugin.Skills.Monster
  8. {
  9. /// <summary>
  10. /// 巢穴驯兽师 - 召唤黑狼4: 召唤一头黑狼.
  11. /// </summary>
  12. public class Monster_1724002 : XmdsSkillBase
  13. {
  14. public static int ID = 1724002;
  15. public static int SummonUnit_ID = 17250;
  16. /// 可召唤最大个数.
  17. public static XmdsSkillValue SummonLimit;
  18. /// 单次召唤数量(目前固定为1).
  19. public static XmdsSkillValue SumUnitCount;
  20. public override int SkillID { get { return ID; } }
  21. protected override void OnRegistEvent()
  22. {
  23. this.RegistEvent(EventType.UseFormluaType, OnUseFormluaTypeEvent);
  24. base.OnRegistEvent();
  25. }
  26. private void OnUseFormluaTypeEvent(BattleParams param)
  27. {
  28. param.UseDamageType = CommonAI.Data.DamageType.None;
  29. }
  30. protected override void OnSkillLogicEvent(BattleParams param)
  31. {
  32. if (param.AtkProp.DamagePerID == 1)
  33. {
  34. callMonster(param, SummonUnit_ID);
  35. }
  36. }
  37. /// <summary>
  38. /// 召唤黑狼.
  39. /// </summary>
  40. protected void callMonster(BattleParams param, int templateID)
  41. {
  42. UnitInfo info = XmdsBattleSkill.GetUnitInfo(templateID);
  43. int r = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SummonLimit);
  44. int numPerTime = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SumUnitCount);
  45. XmdsVirtual_Monster monster = param.Attacker as XmdsVirtual_Monster;
  46. XmdsVirtual su = null;
  47. if (monster != null)
  48. {
  49. int cur = monster.GetSummonUnitListCount();
  50. while (cur + numPerTime > r)
  51. {
  52. su = monster.GetFirstTimesupSummonUnit();
  53. if (su != null)
  54. {
  55. (su.mUnit).kill(null, false);
  56. cur--;
  57. }
  58. }
  59. }
  60. for (int i = 0; i < numPerTime; i++)
  61. {
  62. var pos = param.Attacker.mUnit.Parent.PathFinder.FindNearRandomMoveableNode(
  63. param.Attacker.mUnit.RandomN,
  64. param.Attacker.mUnit.X,
  65. param.Attacker.mUnit.Y,
  66. 2, true);
  67. AddUnitEvent aue = null;
  68. //控制生命周期.
  69. info.LifeTimeMS = 10000;
  70. var unit = (param.Attacker.mUnit.Parent.AddUnit(
  71. info, info.Name,
  72. param.Attacker.mUnit.Force, param.Attacker.GetUnitLv(),
  73. pos.PosX,
  74. pos.PosY,
  75. param.Attacker.mUnit.Direction,
  76. out aue,
  77. param.Attacker.mUnit)) as XmdsInstanceMonster;
  78. XmdsVirtual zv = (unit.Virtual) as XmdsVirtual;
  79. unit.guardUnit(param.Attacker.mUnit);
  80. if (monster != null)
  81. {
  82. monster.AddSummonUnitList(unit.Virtual as XmdsVirtual);
  83. }
  84. }
  85. }
  86. protected override void OnInitSkillParam()
  87. {
  88. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  89. InitData(data, out SummonLimit, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  90. InitData(data, out SumUnitCount, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
  91. }
  92. }
  93. }