protected override void TickCore(Entity host, RealmTime time, ref object state) { if (checkForStates && !states.ToList().Contains(host.CurrentState.Name)) return; if (state != null && cooldown.CoolDown == 0) return; //cooldown = 0 -> once per state entry int c; if (state == null) c = cooldown.Next(Random); else c = (int)state; c -= time.thisTickTimes; state = c; if (c > 0) return; c = cooldown.Next(Random); state = c; if (Random.NextDouble() >= probability) return; string taunt = text.Length == 1 ? text[0] : text[Random.Next(text.Length)]; if (taunt.Contains("{PLAYER}")) { Entity player = host.GetNearestEntity(10, null); if (player == null) return; taunt = taunt.Replace("{PLAYER}", player.Name); } taunt = taunt.Replace("{HP}", (host as Enemy).HP.ToString()); TextPacket packet = new TextPacket { Name = "#" + (host.ObjectDesc.DisplayId ?? host.ObjectDesc.ObjectId), ObjectId = host.Id, Stars = -1, BubbleTime = 5, Recipient = "", Text = taunt, CleanText = "" }; if (broadcast) host.Owner.BroadcastPacket(packet, null); else foreach (Player i in host.Owner.PlayersCollision.HitTest(host.X, host.Y, 15).OfType<Player>()) if (host.Dist(i) < 15) i.Client.SendPacket(packet); }