Make quest compass a vec3 to remove include dependency
Quest compass location doesn't require a zone id since it can only be
set in the zone that it's drawn in. Drop the DynamicZoneLocation member
and forward declare to remove the dependency on header.
Move ExpeditionInvite struct to zone common header
Including expedition.h in client.h just to use the ExpeditionInvite struct
is an unnecessary header dependency that increases incremental build time.
This allows expedition classes to be forward declared in client header.
Add DynamicZone sql table schema
Add DynamicZones logging category
Modify CreateExpedition to take DynamicZone and ExpeditionRequest objects
Implement DynamicZone compass, safereturn, and zone-in coordinates.
Implement live-like DynamicZone instance kick timer for removed members
Implement updating multiple client compasses (supports existing quest compass)
fix: Send client compass update after entering zones to clear existing compass
Implement Client::MovePCDynamicZone to invoke DynamicZoneSwitchListWnd
when entering a zone where client has multiple dynamic zones assigned
Implement OP_DzChooseZoneReply handling
Add Lua api methods for expedition's associated dynamic zone
Add #dz list gm command to list current DynamicZone instances from database
* Scanning optimizations this more properly applies idle / moving scanning algorithms and applies update_others when a client is moving
* Fix bots
* Perform a self and other scan when npc's pop
* Fix scenarios where quest calls to SendIllusion also update internal values so that new clients that zone in see the correct appearance
* Typo [skip ci]
* Cache EntityList::GetRaidByClient
* Adjustments [skip ci]
* Update entity [skip ci]
* More cleanup [skip ci]
* More tweaks [skip ci]
* Cleanup [skip ci]
* Fix bugs with UCS reconnection on crash / exit, not adding soft deleted characters, put main loop on UV lib
* Reduce log spam that should be debugging; send keepalives to clients so that they properly prune from the connection list
* Shutdown the eventloop to properly shutdown the zone versus calling a hard exit
This should prevent any optimizations being done on the "1 char string"
This also fully documents the packet and expands the uses of
quest::say/QuestSay