* Add player login reply struct
* Use player login reply struct for failed logins
* Use base message struct for login requests
* Refactor server list reply serialization
Use BaseMessage and BaseReplyMessage structs for server list
and add flags for server type and status
* Use reply message struct for login handshake
Remove client version checks, the packets are the same for titanium and rof2
* Use base headers for join server requests
* Log correct server list ip
* Add compressed flag to base message header
Document encrypt type flag more
* if for whatever reason the world server is not sending an address, use the local address it sends
* Log when world is sending loginserver info
* Force legacy mode when login host is login.eqemulator.net to avoid misconfigurations at least until things change
* Add human IP translation to log messages
* Sanitize world server name
* Code cleanup and renaming member variables
* More cleanup
* Remove this->
* Validation constants
* Key worldserver lookups by both longname and shortname both
* Update allowed character list
* Fix short_name API response field; add world_id to response
* Shorten receiver verbosity
* Remove unnecessary member variables from database and rename database to m_database
* Adjust MAX_SERVER_VERSION_LENGTH
* Fix indents
Added class EQEmu::Random
Functions:
EQEmu::Random::Int(int low, int high)
EQEmu::Random::Real(double low, double high)
EQEmu::Random::Roll(int required)
EQEmu::Random::Roll(double required)
EQEmu::Random::Reseed()
For zone, you will access the random object through the zone object
ex.
zone->random.Int(0, 100);
Int returns a random int between low and high
Real returns a random double between low and high
Roll(int) returns true if Int(0, 99) < required is true
Roll(double) returns true if Real(0.0, 1.0) <= required is true