public override void FireEvent() { // Mob has changed target if (this.currenttarget != mob.Target) { client = (WorldClient)WorldServer.GetClientByCharacterID((uint)this.mob.Target); if (client == null) { this.mob.StopCombat(); } else { this.currenttarget = mob.Target; } } //Console.WriteLine("ChasingEvent.FireEvent (" + (client != null ? client.Player.Name : "") + "): " + mob.Name); if (client != null && client.Player.InWorld && !client.Player.Dead && !mob.Dead) { try { float distance = client.Player.Position.Distance(mob.Position); // if(distance > 4) // { int time = (int)((distance / mob.RunningSpeed) * 1000); ServerPacket pkg = new ServerPacket(SMSG.MONSTER_MOVE); pkg.Write((char)0xFF); pkg.Write(mob.GUID); pkg.WriteVector(mob.Position); pkg.Write(mob.Facing); pkg.Write((byte)0); pkg.Write(0x100); pkg.Write(time); pkg.Write(1); if (client != null && client.Player != null) { mob.Position.Translate(client.Player.Position, 1.5f - (client.Player.Position.Distance(client.Player.LastPosition) * 0.5f)); } pkg.Write(mob.Position.X); pkg.Write(mob.Position.Y); pkg.Write(mob.Position.Z); pkg.Finish(); mob.MapTile.SendSurrounding(pkg); mob.UpdateData(); client.Player.UpdateData(); } catch (Exception exp) { DebugLogger.Logger.Log("", exp); } // eventTime = DateTime.Now.Add(TimeSpan.FromSeconds(1)); // EventManager.AddEvent(this); } }
public override void FireEvent() { if (!m_mobs.Dead && m_mobs.Health < m_mobs.MaxHealth) { //Console.WriteLine("MobsRegenEvent.FireEvent: " + m_mobs.Name); StatManager.CalculateRegenTick(m_mobs); m_mobs.UpdateData(); eventTime = DateTime.Now.Add(TimeSpan.FromSeconds(3)); EventManager.AddEvent(this); } else { m_mobs.MobsRegenEvent = null; } }