Synchronized the process of loading and parsing YAML databases.
Provides more robust parse warnings/errors.
Added Header checks to validate database versions.
Adjusted root keys to a standard name of Body.
Adjusted inter-server storages, achievements, and attendance to follow the new format.
Fixes#3483
Thanks to @Lemongrass3110!
They now use the normal script engine and not a duplicated portion of code of it.
This is required for another pending update.
This also fixes atcommands not triggering status achievements.
Thanks to @aleos89 and @RadianFord
* Alphabetically sorted includes.
* Updated copyright and license text to match across all files.
* Removed pragma once define in header files in lieu of ifdef guards.
* Follow up to 1c66035.
* Reverted a lambda function which was causing a mismatch between achievement vectors and player achievements.
Thanks to @reymarbc and @cydh!
* Refactored achievements to utilize C++ features
* Cleaned up the YAML parser.
* Moved achievements from DBMap to an unordered_map.
* Moved achievement targets from DBMap to a vector.
* Changed all struct arrays into vectors.
* Changed all char arrays to strings.
* Changed all int arrays to std::arrays.
* Removed achievement_dummy as it's no longer needed.
* Achievements now use smart pointer to ensure proper construction and deconstruction of objects.
Thanks to @lighta!
With this the internal static array was changed to a std::map which manages it's memory dynamically when needed.
Dropped mob_dummy since it was useless to have it in the first place.
Replaced a lot of direct accesses to the mob db by the "get" function.
With this you can now use 20021-31998 for monsters and also 4000-20020 will be used for player clones whenever needed.
Dropped mobdb_exists
Replaced almost all references to MAX_MOB_DB
Moved MAX_MOB_DB from the header directly into the source file to make it only visible to the .cpp file itself and not to any other.
Moved the mob drop calculation function from itemdb.cpp into mob.cpp, because it needs to iterate over the whole mob db.
Added a few missing clone checks.
Thanks to @lighta, @Jeybla and @aleos89.
* Initial progression of moving the map-server to C++ format.
* Converted all core files to .cpp and header files to .hpp.
* Refactored the refine database parser to utilize native YAML C++.
Thanks to @Jeybla and @lighta for their help!