* Add faction logging category
Probably should use this for more things
* Add FactionAssociation struct
This is simply just a struct that contains an array of faction ids and
multiplier. This can hold a maximum of 10 entries (Seru hit is 8, so 2
extra) this can be raised if need be.
* Add database changes and other data point changes
This is all the database changes and loading changes
Included is an optional SQL that will be used as a starting point, there
is likely errors or typos, but we will fix those as they are discovered.
* Add Client::RewardFaction function
This just takes the faction ID and the magnitude of the primary faction
hit and calculates the rest.
The minimum change will be either 1 or -1. We stop processing after we
see an ID of 0 and assume there will be no later entries.
The primary faction ID will always receive a hit even if there is no
faction association entries
* Add users of RewardFaction to NPC death, tasks, and QuestRewards
This will only use the new system if the magnitude is set, otherwise we
will just use the old system still
* Add quest system calls and lua QuestReward support
* Add #factionassociation command
This just calls RewardFaction, mostly useful for debugging
* Make utils/scripts/generators/repository-generator.pl aware of more
datatypes
This adds support for unsigned and more integer types. It also avoids
using parsing functions that require casting (still needed in some
cases)
Having the data types in the Repository structs better map to the types
in the database will allow us to avoid casting when we pull data out of
them. And as a benefit, assume something is wrong if we do :)
Hopefully clean up some warnings due to casting too.
Co-authored-by: Akkadius <akkadius1@gmail.com>
* Add std::string_view overloads for std::from_chars
std::from_chars floating point support is still pour, so we provide some
fall backs. These fall backs currently lack error handling.
(since GCC 11 and MSVC 2019 16.4 FP support is added, clang with libc++
still doesn't support FP)
GCC's floating point support is still rather pour (performance) and
probably shouldn't be used, but we have support to if people want to
now.
Probably need more test cases ...
* Fix issue with std::chars_format define lacking
My test case for lacking FP support was clang with libc++ which defined
this enum anyways.
* Update C++ standard to C++17
* Nuke EQ::Any in favor of std::any
* Remove std::iterator due to deprecation
* Replace result_of with invoke_result due to deprecation
* Fix leak of CommandRecords in commandlist
Quicker than porting to std::unique_ptr since we do fun stuff with
commandlist ...
* Fix leak so it won't double free
This is fine enough until we rewrite it to be better