Boss_90316.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using CommonAI.Zone;
  2. using CommonAI.Zone.Formula;
  3. using CommonAI.Zone.Helper;
  4. using CommonAI.Zone.Instance;
  5. using CommonLang;
  6. using System;
  7. using System.Collections.Generic;
  8. using XmdsCommon.Plugin;
  9. using XmdsCommonServer.Plugin;
  10. using XmdsCommonServer.Plugin.Units;
  11. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  12. using XmdsCommonServer.XLS.Data;
  13. using XmdsCommonSkill.Plugin.Buffs;
  14. using XmdsCommonSkill.Plugin.PassiveSkills.Magic;
  15. using static CommonAI.Zone.Instance.InstanceUnit;
  16. namespace XmdsCommonSkill.Plugin.Skills.Boss
  17. {
  18. /// <summary>
  19. /// 隐藏BOSS-道君分身, 捆仙索
  20. /// 随机对N名玩家释放捆仙锁,被捆仙锁命中会被定身在原地无法移动和攻击,每秒对玩家造成最大血量的<$1>的伤害持续<$2>秒。
  21. /// 同时场景中出现对应玩家名称的小怪,击杀小怪后玩家解除定身。怪物血量为boss血量<$3>
  22. /// Monster_10490403
  23. /// </summary>
  24. public class Boss_90316 : XmdsSkillBase
  25. {
  26. private static int ID = 90316;
  27. public override int SkillID { get { return ID; } }
  28. private static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.BOSS_ZB_TRAP; // 捆仙索buff
  29. public static XmdsSkillValue damageValue; // 最大生命百分比伤害
  30. public static XmdsSkillValue buffTime; // Buff时间
  31. public static XmdsSkillValue mirrorMonsterHP; // 镜像怪生命值
  32. public static XmdsSkillValue trapCount; // 束缚上限
  33. private static XmdsSkillValue summonUnitID; // 召唤单位ID
  34. // 转换小怪id
  35. private static int mCheckRange = 10;
  36. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  37. {
  38. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  39. BuffTemplate bt = pack.mBuffTemplate;
  40. bt.IsHarmful = true;
  41. pack.BindTemplateAndDispose();
  42. unit.RegistSendBuff(bt);
  43. unit.RegistLaunchSkillOver(OnLaunchSkillOver, info, false);
  44. }
  45. private int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState skill)
  46. {
  47. //治疗自己和队友
  48. using (var list = ListObjectPool<InstanceUnit>.AllocAutoRelease())
  49. {
  50. launcher.mUnit.Parent.getObjectsRoundRange<InstanceUnit>((obj, dx, dy, dr) =>
  51. {
  52. var u = obj as InstanceUnit;
  53. if (u.IsPlayer)
  54. {
  55. return CMath.includeRoundPoint(dx, dy, dr, u.X, u.Y);
  56. }
  57. return false;
  58. },
  59. launcher.mUnit.X,
  60. launcher.mUnit.Y,
  61. mCheckRange,
  62. list, launcher.mUnit.AoiStatus);
  63. int count = Math.Max(list.Count, trapCount.GetValue());
  64. UnitInfo sumUnitInfo = XmdsBattleSkill.GetUnitInfo(summonUnitID.GetValue());
  65. // 召唤连接单位
  66. for (int i = 0; i < count; i++)
  67. {
  68. AddUnitEvent aue = null;
  69. var unit = list[i].Parent.AddUnit(
  70. sumUnitInfo, sumUnitInfo.Name,
  71. list[i].Force, 1,
  72. list[i].X,
  73. list[i].Y,
  74. list[i].Direction,
  75. out aue,
  76. list[i]) as XmdsInstanceSummonUnit;
  77. }
  78. //int addHP = CUtils.CastInt(launcher.MirrorProp.BaseAttack * XmdsUnitProp.PER * valueSet1.GetValue(info.SkillLevel));
  79. //加血 & 加速
  80. //for (int i = 0; i < list.Count; i++)
  81. //{
  82. // list[i].AddHP(addHP, launcher.mUnit);
  83. // list[i].AddBuff(Buff_ID, launcher.mUnit);
  84. //}
  85. }
  86. return 0;
  87. }
  88. protected override void OnInitSkillParam()
  89. {
  90. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  91. InitData(data, out damageValue, XmdsSkillData.XmdsSkillDataKey.DmgRate);
  92. InitData(data, out buffTime, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  93. InitData(data, out mirrorMonsterHP, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  94. InitData(data, out trapCount, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
  95. InitData(data, out summonUnitID, XmdsSkillData.XmdsSkillDataKey.ValueSet4);
  96. }
  97. }
  98. }