public override void Update(long Tick) { if (!HasUnit()) { return; } Unit Me = GetUnit(); Unit Target = GetNextTarget(); if (Target == null) { Attacking = false; } if (HasPlayer()) { if (Attacking) { if (NextAttackTime < Tick) { if (!Obj.IsWithinRadius(Target, 10)) { NextAttackTime += 200; } else if (!Obj.IsObjectInFront(Target, 90)) { NextAttackTime += 200; } else { Me.Strike(Target); NextAttackTime = Tick + Me.ItmInterface.GetAttackTime(EquipSlot.MAIN_DROITE) * 10; } } } } else { AttackAI(Target); } }
public override void Update(long Tick) { if (FightingStateTime != 0 && FightingStateTime < Tick) { FightingStateTime = 0; _Owner.EvtInterface.Notify(EventName.ON_LEAVE_COMBAT, _Owner, null); } if (!HasUnit()) { return; } Unit Me = GetUnit(); Unit Target = GetNextTarget(); if (HasPlayer()) { if (Target == null) { return; } if (!CanAttack(Me, Target)) { return; } if (Attacking) { if (NextAttackTime < Tick) { Player Plr = _Owner.GetPlayer(); if (Plr.AbtInterface.IsCasting()) { NextAttackTime += 100; } else { NextAttackTime += 100; if (!Plr.IsObjectInFront(Target, 110)) { return; } EquipSlot SlotToUse = EquipSlot.NONE; if (Plr.ItmInterface.GetItemInSlot((ushort)EquipSlot.MAIN_DROITE) == null && Plr.ItmInterface.GetItemInSlot((ushort)EquipSlot.MAIN_GAUCHE) == null && Plr.ItmInterface.GetItemInSlot((ushort)EquipSlot.ARME_DISTANCE) == null) { if (Plr.GetDistance(Target) < 5) { Me.Strike(Target); NextAttackTime = Tick + Me.ItmInterface.GetAttackTime(EquipSlot.MAIN_DROITE) * 10; return; } } if (Plr.GetDistance(Target) < 5) // Melee { if (!Plr.ItmInterface.CanUseItem((ushort)EquipSlot.MAIN_DROITE, Tick)) { if (Plr.ItmInterface.CanUseItem((ushort)EquipSlot.MAIN_GAUCHE, Tick)) { SlotToUse = EquipSlot.MAIN_GAUCHE; } else { SlotToUse = EquipSlot.NONE; } } else { SlotToUse = EquipSlot.MAIN_DROITE; } } else if (Plr.ItmInterface.CanUseItem((ushort)EquipSlot.ARME_DISTANCE, Tick) && Plr.GetDistance(Target) < 90)// Ranged { SlotToUse = EquipSlot.ARME_DISTANCE; } if (SlotToUse != EquipSlot.NONE) { ushort Time = Me.ItmInterface.GetAttackTime(SlotToUse); Me.Strike(Target, SlotToUse); NextAttackTime = Tick + Time * 5; Me.ItmInterface.SetCooldown((ushort)SlotToUse, Time * 10); } } } } DisablePvp(Tick, false); } else { AttackAI(Tick, Target); } }