Other_100004.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using CommonAI.Zone.Helper;
  2. using CommonAI.Zone.Instance;
  3. using XmdsCommonServer.Plugin;
  4. using XmdsCommonServer.XLS.Data;
  5. using XmdsCommonSkill.Plugin.Buffs;
  6. using System;
  7. using static CommonAI.Zone.Instance.InstanceUnit;
  8. using XmdsCommon.Plugin;
  9. using CommonAI.Zone;
  10. using XmdsCommonServer.Plugin.Units;
  11. using CommonAI.Zone.Formula;
  12. using XmdsCommonSkill.Plugin.Skills;
  13. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  14. using XmdsCommonSkill.Plugin.Skills.Magic;
  15. using CommonLang;
  16. using CommonAI.Data;
  17. namespace XmdsCommonSkill.Plugin.PassiveSkills.Magic
  18. {
  19. /// <summary>
  20. /// 小兵被动
  21. /// </summary>
  22. public class Other_100004 : XmdsPassiveSkillBase
  23. {
  24. /// 技能ID.
  25. public static readonly int ID = 100004;
  26. private int mUUID_1 = 0;
  27. private int timePass = 0;
  28. private XmdsVirtual mOwner = null;
  29. public override int SkillID { get { return ID; } }
  30. protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
  31. {
  32. this.mOwner = owner;
  33. mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDmage, skillInfo, true);
  34. }
  35. private float OnHandleHitDmage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
  36. ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
  37. {
  38. return 0;
  39. }
  40. protected override void OnUpdate(int intervalMS, bool slowRefresh)
  41. {
  42. base.OnUpdate(intervalMS, slowRefresh);
  43. this.timePass += intervalMS;
  44. if(this.timePass < 2000)
  45. {
  46. return;
  47. }
  48. this.timePass = 0;
  49. //队伍范围内找友军
  50. int alliesCount = 0, enemyCount = 0;
  51. using (var list = ListObjectPool<InstanceUnit>.AllocAutoRelease())
  52. {
  53. this.mOwner.mUnit.Parent.getObjectsRoundRange<InstanceUnit>(
  54. (obj, dx, dy, dr) =>
  55. {
  56. var u = obj as InstanceUnit;
  57. if (u.Virtual is XmdsVirtual_Player && CMath.includeRoundPoint(dx, dy, dr, u.X, u.Y))
  58. {
  59. //己方单位.
  60. if (this.mOwner.IsAllies(u.Virtual as XmdsVirtual))
  61. {
  62. alliesCount++;
  63. }
  64. else
  65. {
  66. enemyCount++;
  67. }
  68. }
  69. return true;
  70. },
  71. this.mOwner.mUnit.X,
  72. this.mOwner.mUnit.Y,
  73. 6,
  74. list, this.mOwner.mUnit.AoiStatus);
  75. }
  76. if(alliesCount > 0 && enemyCount == 0)
  77. {
  78. this.mOwner.MirrorProp.MoveSpeed = 1;
  79. this.mOwner.SycMoveSpeed();
  80. }
  81. else
  82. {
  83. this.mOwner.MirrorProp.MoveSpeed = 0;
  84. this.mOwner.SycMoveSpeed();
  85. }
  86. }
  87. protected override void OnDispose(XmdsVirtual owner)
  88. {
  89. owner.UnRegistOnHitDamage(mUUID_1);
  90. }
  91. }
  92. }