The existing implemented behavior is that of a transfer of ownership, however
it does it without move semantics.
This doesn't change the behavior but makes it explicitly clear that there
is a transfer of ownership via enforced move semantics.
Also includes some cleanup in the packet classes, including converting the
size parameter to size_t. While no packet will ever be large enough to require
64-bits of size, many places that are initializing packets are doing so
with a size_t parameter, so this will address those warnings here.
- License was intended to be GPLv3 per earlier commit of GPLv3 LICENSE FILE
- This is confirmed by the inclusion of libraries that are incompatible with GPLv2
- This is also confirmed by KLS and the agreement of KLS's predecessors
- Added GPLv3 license headers to the compilable source files
- Removed Folly licensing in strings.h since the string functions do not match the Folly functions and are standard functions - this must have been left over from previous implementations
- Removed individual contributor license headers since the project has been under the "developer" mantle for many years
- Removed comments on files that were previously automatically generated since they've been manually modified multiple times and there are no automatic scripts referencing them (removed in 2023)
Expansion Bitmask settings were saved by stances and should be universal for the bot.
This addresses that as well as moves the data back to the `bot_data` table instead of the `bot_settings` table.
This will check current settings saved and take the highest value of the stances to save to `bot_data`, if none are found (default), it will use the value from the rule `Bots:BotExpansionSettings`
FindFirstFreeSlotThatFitsItem was returning 0 instead of INVALID_INDEX
when no free slot was found. This caused items to be placed in slot 0
(charm equipment slot) when inventory was full, overwriting equipped items.
Changes:
- Fix FindFirstFreeSlotThatFitsItem to return INVALID_INDEX when no slot found
- Add defensive check in PutItemInInventoryWithStacking to protect equipment
slots 0-22 from being targeted for item placement
- Windows does not allow paths as mutexes
- Remove the config directory from the mutex name
- This fix has the potential for collision of concerns on Windows when running multiple instances, but it is an unlikely scenario given port requirements
making an inline global variable doesn't work around the fact that this
variable still has to be initialized at some point.
Unfortunately, logging may be called upon during static init because we
use rules inside of static initializers, and rules can log.
So we must always retrieve the logger when we want to log something. it
should be fairly cheap anyways.