1. Core Cleanup
- Move all ServerMail logic from `ObjectMgr` into a new dedicated `ServerMailMgr` class
- Move faction logic for money from SendServerMail into the script
2. Separation of items into a new table
- Create a new `mail_server_template_items` table
- Allows to send multiple items in one mail
- Separate items per faction Alliance/Horde
3. Separation of conditions into a new table
- Create a new `mail_server_template_conditions` table
- Allows to use multiple conditions for one mail
- Available condition types
- Minimum playtime (playerLevel >= condition)
- Minimum playtime (playerPlayTime >= condition)
- Rewarded quest
- Earned achievement
- Earned reputation (playerReputation >= conditionState)
- Faction
- Race
- Class
4. Updated ServerMail loading
- Move item and condition loading to their own functions
- LoadMailServerTemplateItems()
- LoadMailServerTemplateConditions()
5. Reworked eligibility check
- Player needs to pass all conditions to be eligible for the mail
- All players are automatically eligible if no conditions exist for a server mail template.
6. Updated foreign keys
- For table `mail_server_character`, `mail_server_template_conditions`, `mail_server_template_items` foreign key with on delete cascade is added for automatic removal of entries if mail_server_template.id is deleted.
7. Database changes
- See the PR
* implement world state script
based on
https://github.com/cmangos/mangos-wotlk/commit/0b87ca9d9edf2d4752a3c0f8e9cf85c6689ca861
Co-authored-by: killerwife <killerwife@gmail.com>
* refactor to use onleave and onenter instead of spell_area
allows players to right click remove adal's buff
* add MapMgr.h
* refactor: use condition enum instead of uint32, prefix WORLD_STATE where needed
* remove lock from WorldState::Update
sWorldState->Update() is only called from World::Update
* remove unsafe SmartAI action of setWorldState
---------
Co-authored-by: killerwife <killerwife@gmail.com>
* refactor(Core/ObjectMgr): Handle Profanity & Reserved Names in load
* closes https://github.com/azerothcore/azerothcore-wotlk/issues/18556
* Update ObjectMgr.cpp
* Update ObjectMgr.cpp
* I swear I am not drunk
* We already check all of these
* fix build
* Forgot we dont send the responsecode in senderrormessage
* last commit I swear
* Add OnAfterDatabaseLoadCreatureTemplates hook
- fix issue where the fast template cache was not updated correctly after a CS reload of a single creature template
* Parameter naming tweak to reduce confusion.
* Refactor to streamline fastcache creation, remove threading concerns
* Remove unneeded resize when loading creature templates
* Update fast cache resizing to highest-performing option
* Update ObjectMgr.cpp
Rework to `ObjectMgr::LoadReputationSpilloverTemplate()` allowing more factons to be added.
* Create reputation_spillover_template-update.sql
Alteration to `reputation_spillover_template` table, update allowing to add two more factions.
* Update SharedDefines.h
`MAX_SPILLOVER_FACTIONS` is now equal 6 instead of 4.
* Update reputation_spillover_template-update.sql
Now it alters table instead recreating it.
* fix(Core/ObjectMgr.cpp): Wrong format occurred (invalid format string)
Wrong format occurred (invalid format string)
* fix(Core/ObjectMgr.cpp): Wrong format occurred (invalid format string)
* fix(Core/ObjectMgr.cpp): Wrong format occurred (invalid format string)
Co-authored-by: Angelo Venturini <nefertum.dev@protonmail.com>
---------
Co-authored-by: Angelo Venturini <nefertum.dev@protonmail.com>