Many world states had their enums from script's header and hardcoded values to their respective header file (WorldStateDefines.h)
Co-authored-by: Jelle Meeus <sogladev@gmail.com>
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
0b87ca9d9e
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>
* Init.
* Despawn music doodad.
* Add conditions behind events invoking performances.
* Update music doodad intervals.
55639.
* Add condition for BRD performance.
Ensures that manual performance and event performance do not overlap.
* Add scripting for Shattrath Saul.
* Add scripts for Silvermoon band members.
All verified in Cata Classic 55639.
* Whoops.
* Styling, initial Blastbolt scripting.
I don't know how to handle the roadies yet. Ugh.
* Whoops.
* Bad event param.
* Remove drumset respawn from action list.
* Update Shattrath Saul's Perry Gatner scripting.
* Ugh.
Hate SAI.
* fix(Core/Creature): Prevent combat movement disabled creatures from repositioning if target moves within model boundary
* fixbuild
* Apply suggestions from code review
* Resolves issue where patients were dying extremely quickly during the quest.
- updates other parameters to make the quest more Blizz-like and completable
* Correct starting patient count for Horde
* Correctly handle starting patient count for both factions.
* Whitespace removal
* Un-Pythonese variable name, slightly improve initial patient count call
* Match WotLK Classic timing for patient deaths