public static void UseMotion(Creature creature, int category, int type, bool loop = false, bool cancel = false)
{
if (cancel)
CancelMotion(creature);
// Do motion
var packet = new Packet(Op.UseMotion, creature.EntityId);
packet.PutInt(category);
packet.PutInt(type);
packet.PutByte(loop);
packet.PutShort(0);
// XXX: Why is it region and not range again...? Maybe so you see
// the motion when coming into range? ... does that work?
creature.Region.Broadcast(packet, creature);
}