855 Commits
Author SHA1 Message Date
luis 7288b8fedc del 2026-09-26 22:32:10 -03:00
luis 36b30fd12a Scripts/Spells: Implement hunter talent Horsehair Tether 2026-09-26 20:47:50 -03:00
luis 18ba84dd4e db fix 2026-09-26 20:37:08 -03:00
luis 1e80d7d867 Scripts/Spells: Implement hunter talent Trailblazer 2026-09-26 20:32:03 -03:00
luis 72a879d9cb Core/Spells: Fixed Rapid Fire being interrupted by Auto Shot 2026-09-26 20:30:31 -03:00
luis aa08843e07 Scripts/Spells: Add missing action bar glow for hunter talent Surging Shots proc 2026-09-26 20:29:23 -03:00
luis f2abcf67f6 Scripts/Spells: Update hunter talent Surging Shots 2026-09-26 20:28:14 -03:00
luis cd572e8c6c i will add sql later not assign spell script 2026-09-26 20:26:05 -03:00
luis b41cd95bb8 wq 2026-09-26 16:39:44 -03:00
luis 4985ab08a5 fix wq 2026-09-26 15:34:24 -03:00
luis 40ae64dd29 Core/ Implement bonus quest system 2026-09-26 11:12:34 -03:00
luis 2640fdfa8e wq eversong woods 2026-09-26 08:34:24 -03:00
luis 5e5965090b already applied 2026-09-26 08:04:26 -03:00
luis e90e395c35 Prey Fixed 2026-09-26 07:55:02 -03:00
luis b28dd6f77e Adv client 2026-09-26 07:47:52 -03:00
Céfiro_Caecias 5de7d827b3 DB/World: Orc Starting Zone 2026-09-25 20:00:00 -03:00
Céfiro_Caecias 95ff338eca DB/World: DBErrors Fixes 2026-09-25 16:40:56 -03:00
luis 1911c8b01b fix crash 2026-09-25 13:53:04 -03:00
Céfiro_Caecias bc9e2c6d08 DB/World: Gameobject Translates 2026-09-25 09:20:18 -03:00
Céfiro_Caecias 7816605b95 Update 2026_09_24_05_world.sql 2026-09-25 08:20:05 -03:00
Céfiro_Caecias d259e0c817 Update 2026_09_24_05_world.sql 2026-09-25 08:14:30 -03:00
luis f60ffe5032 wq fix 2026-09-24 22:23:01 -03:00
luis ebf4b1b22c misc 2026-09-24 21:59:38 -03:00
luis 27c5476d5a Add the missing Underbog boss script. 2026-09-24 21:58:52 -03:00
luis 83da508058 Rebuild the Exile's Reach quests from the retail storyline. 2026-09-24 21:54:46 -03:00
luis ebbe43a634 exiles 2026-09-24 21:52:06 -03:00
luis ff44fb9b69 The Necrotic Wake 2026-09-24 21:36:17 -03:00
luis 7947401f3d typo 2026-09-24 21:22:55 -03:00
luis 9c7248966d EcodomeAldani 2026-09-24 21:21:39 -03:00
luis e4daabc3a1 Operation Floodgate 2026-09-24 21:10:56 -03:00
luis 1835f627f6 Update enums part 1 2026-09-24 20:51:04 -03:00
luis ae710dcbbc exiles and waking shore 2026-09-24 20:19:16 -03:00
luis ef7196351f sniff and spell 2026-09-24 19:42:29 -03:00
luis 8f47424a9a spell_hunter 2026-09-24 19:39:15 -03:00
luis dd0d836bd1 Core/Players: Fix starting level for non-Evoker Dracthyr 2026-09-24 19:35:58 -03:00
luis 48857018a5 Dep/g3d: Add used headers to CMakeLists 2026-09-24 19:32:45 -03:00
luis f4ee5e5bbc blackrock hold boss 2026-09-24 11:49:15 -03:00
luis fdb2c9392a Add more stuff 2026-09-24 10:45:30 -03:00
Céfiro_Caecias 33dffdf87b DB/World: DBErrors Fixes 2026-09-24 10:33:27 -03:00
luis 25e9fff09e shop2 2026-09-24 10:09:36 -03:00
luis eeb3c0c5c5 bpay ida fix 2026-09-24 08:04:31 -03:00
luis bbbf3bea53 full implement FETCH_BLEEP_PROXIES for shop2 2026-09-24 07:25:46 -03:00
luis cc8c877fc5 shop2 opcodes 2026-09-24 06:45:43 -03:00
luis a701921b8c dup 2026-09-24 06:18:07 -03:00
luis 9664205b9b typo 2026-09-24 06:12:13 -03:00
luis e2eb1fcaf0 prey sniff 2026-09-24 04:54:41 -03:00
luis d9729007c4 db sniff 2026-09-24 03:41:20 -03:00
luis 463ec4cc72 atal dazar full 2026-09-24 03:36:34 -03:00
luis cf2d9c103f sniff 2026-09-24 02:36:39 -03:00
luis 4715082743 sniifff 2026-09-24 01:24:09 -03:00
luis e933258349 Misc 2026-09-24 00:18:20 -03:00
luis 8a37692345 +++ 2026-09-23 21:38:51 -03:00
luis 6b8b9336a5 Dark flame cleft part 1 2026-09-23 21:34:45 -03:00
luis 5cbecf8e2d db city of threads 2026-09-23 20:25:45 -03:00
luis 2774bb526f Db fixes 2026-09-23 20:22:29 -03:00
luis 3a6212a9c2 Core/Auras: Implement gravity opcodes and SPELL_AURA_MOD_GRAVITY (#31997) 2026-09-23 20:21:10 -03:00
luis 3b8bbcb859 City of threads 2026-09-23 20:12:37 -03:00
luis 76505646a8 Full City of Threads 2026-09-23 20:06:22 -03:00
Céfiro_Caecias 30824bfacb DB/World: Tauren Starting Zone + Extras 2026-09-23 19:16:33 -03:00
luis dbf1b1c0fe Web-Shop2 2026-09-23 18:46:35 -03:00
luis 764eed6848 typo 2026-09-23 18:36:46 -03:00
luis f088494ba0 Make Lady Liadrin's Midnight gossip do the summon, movie, and skip.
Fix skyriding
2026-09-23 18:35:47 -03:00
luis 3005443985 Core/Misc: Update SkillLine enum for 12.1.0 (#31985) 2026-09-23 18:17:50 -03:00
luis ee02d40e37 Make the giant boar Trample kill the cadavers. 2026-09-23 18:11:55 -03:00
luis 1c1756a1b5 Hide the infernal golem dummies in the Cooking Meat field. 2026-09-23 17:54:55 -03:00
luis 11a25ded12 exiles merge 2026-09-23 17:26:48 -03:00
luis ed4bc78023 Stop the Re-Sizer boar crash and the extra Exile camp copies. 2026-09-23 17:22:17 -03:00
luis f58e739dcc Remove the extra Jainas after the crew is healed. 2026-09-23 17:09:15 -03:00
luis a20c8988e8 exiles reach class quest 2026-09-23 16:53:29 -03:00
luis 13962ebc9f mulgore delete 2026-09-23 16:49:50 -03:00
luis 83fad1dae2 fix load 2026-09-23 13:42:16 -03:00
luis 721396ef88 send SMSG_INIT_WORLD_STATES 2026-09-23 13:35:00 -03:00
luis de14780789 Include the housing initiative packets in the opcode build. 2026-09-23 13:13:04 -03:00
luis bb3f84a87b Clear the encounter timeline and treasure picker from dungeon sniffs. 2026-09-23 13:11:47 -03:00
luis 0811620d76 More packets 2026-09-23 13:07:26 -03:00
luis 1a914f5d74 db assign cinderbrew 2026-09-23 13:03:23 -03:00
luis 01eaf563aa Cinderbrew and opcodes 2026-09-23 13:02:00 -03:00
luis 1cb0bb3f18 Send the shop catalog every time it is opened.
The client drops its product list when the shop closes and asks again. Serving the database catalog only once per session left every later open empty.
2026-09-23 12:04:40 -03:00
luis 7e0bf614d4 Apply the premade group finder category filter.
An empty search box no longer returns the whole category. Recommended, current expansion, current season, and PvE or PvP now narrow the list, and the difficulty checkboxes cover raid difficulties as well as dungeons.
2026-09-23 12:02:35 -03:00
Céfiro_Caecias 41bf69e6e3 Update README.md 2026-09-23 11:05:45 -03:00
luis 9e85d7bfa1 typo 2026-09-23 10:51:34 -03:00
luis 92949ff547 Restore Exile's Reach stage phasing and the ship-to-citadel quest events.
Stage phases turn off again when that quest step is over, without dropping the general ship phase. Warming Up is no longer granted automatically. The training dummy, spar, crash movie, beach scene, campfire, vendor sale, citadel entrance, and citadel escort path follow the quest scripts instead of a forced complete.
2026-09-23 10:27:02 -03:00
luis ae1c5f670f exiles 2026-09-23 10:11:42 -03:00
luis 14ba04a2c0 69933 2026-09-23 10:02:35 -03:00
luis 2b4c49e31a typo exiles reach fix 2026-09-23 09:59:11 -03:00
Céfiro_Caecias 47823f7416 DB/World: DBErrors Fixes 2026-09-23 09:00:55 -03:00
luis 5b5ce961e4 Cinematic fixes 2026-09-22 21:29:16 -03:00
luis 5cdb343842 Core/Arenas: Sync default Arena.ArenaStartPersonalRating value with worldserver.conf 2026-09-22 21:27:42 -03:00
luis 472a782291 Core/Spells: Self-actions should no longer extend pvp timer 2026-09-22 21:26:49 -03:00
luis 8a385c320b trinity string 2026-09-22 21:26:04 -03:00
luis c694852504 wip 2026-09-22 21:25:35 -03:00
Thordekk 67e0962a8b Add ExtendedAccountNameLengthLimit configuration
Added configuration option to extend account name length limit from 16 to 64 characters.
2026-09-22 21:24:14 -03:00
luis 515efb2f86 Core/Spells: Don't put ritual spells on cooldown if the ritual was not completed 2026-09-22 20:57:12 -03:00
luis 6aee5fae08 Core/Units: Make summoned gameobject cleanup consistent for all overloads of Unit::RemoveGameObject 2026-09-22 20:56:24 -03:00
Shauren 89c539930f Core/Mail: Implement new mail flags for auction and calendar
(cherry picked from commit 5386f734a246868d9f74a9786cca10cf0c4a39d4)
2026-09-22 20:52:55 -03:00
luis d3c0feebd9 Core/Mail: Prevent mail with recovered items from being returnable 2026-09-22 20:50:00 -03:00
luis b3076a01e0 Core/Mail: Prevent returning mails sent by GMs or commands 2026-09-22 20:48:55 -03:00
luis ce8f02e48c Core/Mail: Define new mail flags 2026-09-22 20:46:31 -03:00
luis 246e9dccac Core/Battleground: Remove dead code in HandleBattleFieldPortOpcode related with leave arena queue 2026-09-22 20:20:27 -03:00
luis 5aa2a95eb6 Core/DynamicObjects: Fix duration underflow 2026-09-22 20:19:08 -03:00
luis c86a787d30 Core/Players: Reject logins flagged for rename earlier in Player::LoadFromDB 2026-09-22 20:18:35 -03:00
luis 958e6e1ce6 Fixes selling items with no price to vendors for 1c 2026-09-22 20:16:29 -03:00
SistemasCPU 8bca310f58 Core/Followers: Extra 20% damage reduction 2026-09-23 00:33:57 +02:00
SistemasCPU 03b07adc15 Core/Spell: Fixed EffectForceEquipItem function and Earthen CastSpells for starting zones 2026-09-23 00:33:56 +02:00
SistemasCPU 899d0bde96 Core/Followers: Extra 15% damage reduction 2026-09-23 00:33:55 +02:00
luis bfe79dc2d0 exiles horde 2026-09-22 18:02:44 -03:00
luis 429ecdbe18 Exiles reach horde 2026-09-22 18:02:11 -03:00
luis 29e1d475f2 LFGList: stop blacklisting live Midnight activities 2026-09-22 14:06:05 -03:00
luis 609aee127d db assign 2026-09-22 13:14:40 -03:00
luis 7d1bc1237a Midnight campaign quest 2026-09-22 13:14:07 -03:00
Céfiro_Caecias 5cb9dee306 DB/World: Gameobjects Translates 2026-09-22 13:13:24 -03:00
luis 3b52d609b1 typo 2026-09-22 12:26:23 -03:00
luis 4995d2ad14 prev commit sql 2026-09-22 11:05:33 -03:00
luis b76377791b typo fix 2026-09-22 10:55:19 -03:00
luis 2f83245d87 Core/Professions: Export missing game symbols and wire crafting procs 2026-09-22 10:49:20 -03:00
luis bed3e0ff04 Core/Professions: Apply Dragonflight crafting reagents and quality
The craft packet never reached the spell, and the reagent, quality and bonus indexes were never built, so every recipe ignored the chosen materials. Crafts now consume the sent reagents, pick the quality item, and apply missive bonus trees instead of rolling random stats.
2026-09-22 10:28:51 -03:00
luis ca9f547035 Scripts/Raids: Script Amirdrassil bosses and Sennarth 2026-09-22 10:17:53 -03:00
luis 5b021fc840 Scripts/ExilesReach: Keep the sparring jump ahead of aggro and hold Gor'groth's sacrifice 2026-09-22 10:09:47 -03:00
luis 9cded4b858 Scripts/ExilesReach: Play retail conversations and script Gor'groth and Ravnyr 2026-09-22 10:06:50 -03:00
luis 53a7b0bbe9 exiles 2026-09-22 09:48:04 -03:00
luis e0ec5ac309 Scripts/ExilesReach: Hook scene triggers and bind quest scripts 2026-09-22 09:47:33 -03:00
luis 5f9987f63c db assign 2026-09-22 09:07:31 -03:00
luis 238bc1541d class spells 2026-09-22 08:59:58 -03:00
Céfiro_Caecias deb42069d1 DB/World: Fixes 2026-09-21 20:10:37 -03:00
SistemasCPU 0cca4fcaf3 Core/Followers: Updated behaviours and scaling 2026-09-22 00:07:27 +02:00
luis c2c22d88e8 db misc 2026-09-21 14:54:37 -03:00
luis 4f387f1a3b base for arakara 2026-09-21 14:49:21 -03:00
luis f26a91fccf Dungeon followers 2026-09-21 12:17:44 -03:00
luis 1a4902da04 Core/Random: Add random distribution that minimizes long good and bad luck streaks 2026-09-21 12:03:48 -03:00
luis 4f942bbfe2 The stonevault 2026-09-21 12:02:38 -03:00
Céfiro_Caecias 08105da605 DB/World: Issues 2026-09-20 23:28:22 -03:00
Céfiro_Caecias a07eb6739a DB/Hotfixes: Issues 2026-09-20 23:27:58 -03:00
luis 195c203d7c Core bpay fixes 2026-09-20 17:39:29 -03:00
luis dc7c72ccfe Exiles reach PR Aureon 2026-09-20 17:21:43 -03:00
luis 14d1ef2d8f npc_housing_steward rework Aureon PR 2026-09-20 16:51:12 -03:00
luis bc3139d921 Tools/ Vmap4assembler rework PR 2026-09-20 16:47:28 -03:00
luis 7ac30d7e38 Merge loot 2026-09-20 16:40:21 -03:00
Céfiro_Caecias 6cc26797ab Update README.md 2026-09-20 15:34:59 -03:00
Céfiro_Caecias e9bf501289 DB/World: Update Build 69875 2026-09-20 15:34:43 -03:00
Céfiro_Caecias e5129ef40b DB/Hotfixes: Update Build 69875 2026-09-20 15:34:13 -03:00
luis 69fa75cc2a ++ 2026-09-20 15:22:35 -03:00
luis 7ffcd43922 69875 2026-09-20 15:16:53 -03:00
luis 167d313f96 Core/Spells: Fix hunter spell Boomstick target limit 2026-09-20 15:14:09 -03:00
Céfiro_Caecias a4e3679a45 DB/World: Earthen Starting Zone + Extras 2026-09-20 12:59:00 -03:00
Céfiro_Caecias cb8189accc DB/Hotfixes: Earthen Starting Zone 2026-09-20 12:58:26 -03:00
MeisterGamer 37614b092c Fix Build Error
// IDA case 4980796: 3 � u32. See SNIFF_AUDIT -8.46.
    // IDA case 4980796: 3 x u32. See SNIFF_AUDIT -8.46.
2026-09-20 12:26:45 +02:00
Céfiro_Caecias 596eba3cab DB/World: DBErrors Fixes 2026-09-19 08:23:15 -03:00
luis 61e5da7d30 Priority of the sacred flame 2026-09-18 17:24:33 -03:00
Céfiro_Caecias c4c374f027 DB/World: DBErrors Fixes 2026-09-18 16:19:31 -03:00
Céfiro_Caecias fd70992193 Delete sql/updates/world/master/2026_09_18_02_world_dberrors.sql 2026-09-18 15:40:24 -03:00
Céfiro_Caecias 4f28b6102f DB/World: DBErrors Fixes 2026-09-18 15:39:17 -03:00
luis a9bc53c831 Priority of The Sacred Flame Base 2026-09-18 14:25:08 -03:00
luis 660bf7cec9 ++ 2026-09-18 13:03:33 -03:00
luis c212ff96b9 full phase ccondition 2026-09-18 13:03:21 -03:00
luis 8d82d82732 Fix condition phase zone 2026-09-18 12:59:12 -03:00
luis ed5d0abfd3 Rookery 2026-09-18 12:41:57 -03:00
luis 2de3e034cc Rookery 2026-09-18 12:40:17 -03:00
luis 9432531975 Rlp dungeon follower 2026-09-18 11:27:40 -03:00
luis 75e50d8dda Merge achievements imp 2026-09-18 10:25:53 -03:00
luis 2f9c44c59c CONDITION_SOURCE_TYPE_PHASE_ZONE 2026-09-18 10:09:41 -03:00
Céfiro_Caecias b6368e27f3 DB/World: DBErrors Fixes 2026-09-18 08:45:12 -03:00
luis d9fa1aa73a Missing followers 2026-09-17 20:01:21 -03:00
luis 6f93adbb2e typo fix 2026-09-17 19:14:22 -03:00
luis 3f5e997afd move 2026-09-17 19:13:47 -03:00
luis f19ee3937b Core/ Script HOI 2026-09-17 18:16:46 -03:00
luis f4afc16458 Db sniff data 2026-09-17 17:22:00 -03:00
luis 14beca20cc Core/PacketIO: Fix housing decor opcode values for 12.1.0 2026-09-17 15:59:35 -03:00
luis 7baf8f83bb Core/Units: Fix stats from items being incorrectly affected by SPELL_AURA_MOD_PERCENT_STAT (#31936) 2026-09-17 15:51:31 -03:00
luis 2cf2860cec Core/AreaTriggers: Update areatrigger shape enum 2026-09-17 15:36:02 -03:00
luis 18cf0e7fb0 Db/ Sniffdata 2026-09-17 13:43:30 -03:00
luis 9d8f098439 Rework core script algethar algethar_academy 2026-09-17 13:39:59 -03:00
luis 6266a8166d Ws/ Prey 2026-09-17 11:22:56 -03:00
luis 155c4090f9 Core/ Merge prey 2026-09-17 11:22:09 -03:00
Céfiro_Caecias 6d82f07fba DB/World: DBErrors 2026-09-17 07:47:21 -03:00
luis 06d7734c8b Fill data 2026-09-16 20:35:30 -03:00
luis 04009024c9 Core/Scenarios: game events feed scenario objectives on every scenario map 2026-09-16 20:31:54 -03:00
luis 774ec07192 Open-world scenarios 2026-09-16 20:26:26 -03:00
luis 7620e2d56f Core/Scenarios: open-world scenarios and retail 12.1 scenario packet flow 2026-09-16 20:25:55 -03:00
luis c4e9817395 Azure vault misc 2026-09-16 18:14:54 -03:00
SistemasCPUandDevin 6d0dd72fd5 Core/Conditions: Fix CONDITION_SOURCE_GAMEOBJECT_INTERACTION for all gameobject types
- CONDITION_SOURCE_GAMEOBJECT_INTERACTION (source 37) now gates GO
  interaction for all gameobject types, not only chests.
- Dynamic flags are re-sent to the client when the condition changes,
  so objects like buttons update instantly on quest take/complete.
- Removed temporary debug logging.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-16 19:29:26 +02:00
Céfiro_Caecias fcf91ca159 DB/Hotfixes: Earthen Starting Zone Sniff 2026-09-16 12:23:45 -03:00
Céfiro_Caecias 47763cba47 Update 2026_09_16_08_world_earthen_starting_zone_sniff.sql 2026-09-16 12:20:20 -03:00
Céfiro_Caecias 6262f47922 Rename 2026_09_16_08_earthen_starting_zone_sniff.sql to 2026_09_16_08_world_earthen_starting_zone_sniff.sql 2026-09-16 12:02:51 -03:00
Céfiro_Caecias fca294f5b3 DB/World: Earthen Starting Zone Sniff 2026-09-16 11:57:19 -03:00
Céfiro_Caecias ce1e19ffea DB/World: DBErrors Fixes 2026-09-16 09:09:44 -03:00
Céfiro_Caecias 3437524e5b Update README.md 2026-09-16 08:09:08 -03:00
Céfiro_Caecias 24e6c5e4a2 DB/World: The Waterworks Spawns 2026-09-16 08:07:09 -03:00
luis f78246dedf sniff and waterwork 2026-09-16 07:44:23 -03:00
luis eab48d2e58 The Waterworks 2026-09-16 07:43:32 -03:00
luis 661192bb66 sniff 2026-09-16 06:09:45 -03:00
luis c2ce67ceee tww 2026-09-16 02:38:15 -03:00
luis c9b4610887 Core/ Archeology merge 2026-09-16 02:20:08 -03:00
luis 1221562029 Ruination 2026-09-15 23:28:14 -03:00
luis 18ed96f0b5 Hellbent Commander 2026-09-15 22:59:58 -03:00
luis de6731c35d To Hell and Back 2026-09-15 22:35:09 -03:00
luis 452a087df4 lfg list group finder update to check thordekk when get time 2026-09-15 22:29:38 -03:00
luis 167a0f0685 Lfg list update to 12.1 2026-09-15 21:43:58 -03:00
luis a6fa569873 Dominion of Argus 2026-09-15 21:16:25 -03:00
SistemasCPU 9f103d8db3 Core/Conditions: Make CONDITION_SOURCE_GAMEOBJECT_INTERACTION the gate for GO interaction 2026-09-15 20:26:42 +02:00
SistemasCPU c395cf8095 Merge branch 'main' of https://github.com/Thordekk/WowCommunityProject 2026-09-15 20:05:06 +02:00
SistemasCPU ee37d9e24b Core/Conditions: Evaluate CONDITION_SOURCE_GAMEOBJECT_INTERACTION in MeetsInteractCondition 2026-09-15 20:04:56 +02:00
luis 2543c0a138 spell sql 2026-09-15 15:04:10 -03:00
luis 1cc3cc295c Grimoire: Imp Lord 2026-09-15 15:03:31 -03:00
luis 24faed09e9 blighted maw 2026-09-15 14:51:44 -03:00
luis 98b6221faf walock i will upload sql later 2026-09-15 14:33:27 -03:00
SistemasCPU bae6615dfc Merge branch 'main' of https://github.com/Thordekk/WowCommunityProject 2026-09-15 18:53:48 +02:00
SistemasCPU 419e747a1a Core/Conditions: Port CONDITION_SOURCE_GAMEOBJECT_INTERACTION to all gameobject types 2026-09-15 18:53:42 +02:00
luis e679e059c7 Fel Firebolt 2026-09-15 13:48:18 -03:00
luis a69fc40271 Power Siphon 2026-09-15 13:17:19 -03:00
luis c4fcc30587 ++ 2026-09-15 12:50:53 -03:00
luis 8d9799b1c6 Implosion 2026-09-15 12:50:53 -03:00
Céfiro_Caecias 5eb1019716 DB/World: Update Build 69814 2026-09-15 12:18:56 -03:00
Céfiro_Caecias a89a654653 DB/Hotfixes: Update Build 69814 2026-09-15 12:16:18 -03:00
luis c1cf1dd828 typo 2026-09-15 11:45:28 -03:00
luis 2c187ea79f warlock 2026-09-15 11:38:05 -03:00
luis 170331c6d6 Inner Demons 2026-09-15 10:49:16 -03:00
luis 06ec5d3b57 neltharus and sniff 2026-09-15 10:24:50 -03:00
luis 8b0a639883 neltharus 2026-09-15 10:23:30 -03:00
luis 31774f51ba typo 2026-09-15 08:50:47 -03:00
luis cb62057856 SMSG_SET_SHIPMENT_READY_RESPONSE 2026-09-15 08:36:42 -03:00
luis 04cbe672f9 Roll back 2026-09-14 14:58:59 -03:00
Céfiro_Caecias 337b50eb18 Update 2026_09_14_00_world_dberrors.sql 2026-09-14 09:16:29 -03:00
Céfiro_Caecias 07f3f93060 DB/World: DBErrors Fixes 2026-09-14 09:11:13 -03:00
luis eb8e2ebd53 Core/BattlePets: queue status carries the ride ticket before the slot results 2026-09-14 08:42:06 -03:00
luis 5f6adfb702 Delves 2026-09-14 08:37:52 -03:00
luis a81041c96a Scripts/Delves: the companion casts Npc Join Player Party 2026-09-14 08:19:25 -03:00
SistemasCPU 84522036eb Merge branch 'main' of https://github.com/Thordekk/WowCommunityProject 2026-09-14 01:32:57 +02:00
SistemasCPU eb6ae62cf7 Core/LFG: Fixing and tunning LFG Followship bots 2026-09-14 01:32:51 +02:00
Céfiro_Caecias 5a32a3750d Update README.md 2026-09-13 19:33:30 -03:00
luis 46f6579986 Fix build 2026-09-13 19:27:43 -03:00
luis ca8014581d build fix part 1 2026-09-13 19:24:07 -03:00
luis bd4b9c5d09 change name 2026-09-13 19:22:27 -03:00
Thordekk 12eba38e84 Delete sql/updates/world/master/2026_09_14_05_world.sql 2026-09-13 19:21:22 -03:00
Denis Prikhodko 0c99ffd34e Delves/TheDreadPit: add boss Vik'tis, fix spell ID conflict, clean DB errors
Adds Under-Lord Vik'tis (NPC 220158) boss for The Dread Pit delve (map 2684,
scenario 3210, LFGDungeons 2437). Three abilities loaded from serverside_spell:
  - Rupture (1260001): frontal cone physical damage + knockback
  - Burrowing Tremors (1260031): channeled periodic AoE + snare
  - Stinging Swarm (1260003): periodic nature damage to all players

1260002 (original Burrowing Tremors ID) conflicts with an existing client
Spell.db2 entry, so the spell was renumbered to 1260031. The serverside_spell
entries were restored accordingly. spell_script_names updated to match the
actual ScriptMgr registration (DreadPit::spell_delve_rupture).

Also cleans up medium-priority DB audit warnings:
  - removes 9 areatrigger GUIDs with unsupported difficulty 0 on map 1
  - removes lfg_dungeon_template rows for non-existent dungeon IDs (12,8,6,1)
  - removes access_requirement rows for maps without difficulty 1 (43,36,34,33)

Signed-off-by: FrauAndMann <[email protected]>
2026-09-13 19:21:22 -03:00
luis 05d98acc58 brackenhide hollow full 2026-09-13 19:18:29 -03:00
SistemasCPU 8c7078a1d5 Merge remote origin/main with local follower dungeon changes 2026-09-14 00:13:01 +02:00
SistemasCPU 46596f68d4 Merge remote changes with local follower dungeon fixes 2026-09-14 00:06:38 +02:00
luis 7b99aa336d meredy huntswell 2026-09-13 18:56:44 -03:00
luis 325d7e73e5 Update mage spell using sniff 2026-09-13 18:42:43 -03:00
luis f3610900a7 remove def 2026-09-13 17:13:56 -03:00
Gexo91 0022f38753 Merge pull request #12 from Gexo91/main
Core/Housing: stage 18 to stage 42
2026-09-13 20:54:33 +03:00
Gexo91 bfb7930c68 Core/Housing: remove custom registration 2026-09-13 20:51:42 +03:00
luis a8870659ff mage mirror image 2026-09-13 14:49:58 -03:00
luis 87ebcf7789 rlp scaling and mage spells 2026-09-13 13:17:34 -03:00
luis e408678629 mage 2026-09-13 13:16:58 -03:00
luis cf16c6eec7 spell mage arcane orb 2026-09-13 13:07:31 -03:00
luis b7b0238bc8 fix spell 2026-09-13 12:45:45 -03:00
luis d46df5fb0a script assign 2026-09-13 12:22:03 -03:00
luis 51ae2fa2a3 typo 2026-09-13 12:18:26 -03:00
luis ea8c69ff61 drakes 2026-09-13 12:11:54 -03:00
luis 9b129f3211 rlp rework part 1 2026-09-13 12:08:09 -03:00
luis 95f0f5b456 misc 2026-09-13 11:52:01 -03:00
luis 4061ee5a15 Fix all spells 2026-09-13 11:49:32 -03:00
luis 2f2523d59d Core/Items: Implement new item bonus types and fixed item level calculation with ITEM_BONUS_SCALING_CONFIG 2026-09-13 11:43:38 -03:00
luis 2fd5aa5490 69814 2026-09-13 11:31:09 -03:00
Céfiro_Caecias aebe3072a1 DB/World: Fixes 2026-09-13 09:53:34 -03:00
Céfiro_Caecias 137450ad45 DB/World: Allied Races Adjusts 2026-09-12 22:13:28 -03:00
Luis 7a1c1a3a6e fix build for linux :) 2026-09-13 02:42:25 +02:00
Gexo91 86763ea15d SQL/Housing: stage 1 wire tutorial quest access 2026-09-13 02:06:51 +03:00
Gexo91 5c750d02b8 Core/Housing: stage 1 validate tutorial quest and plot data 2026-09-13 02:06:43 +03:00
Gexo91 5789830b1a Core/Housing: stage 1 install tutorial opcode natively 2026-09-13 02:06:18 +03:00
Gexo91 aae413165f Core/Housing: remove recent tutorial and Initiative lifecycle bridges 2026-09-13 01:55:24 +03:00
Gexo91 54450abfa6 Core/Housing: remove custom tutorial opcode bridge 2026-09-13 01:54:33 +03:00
Gexo91 cd11ebbd46 Core/Housing: remove recent Initiative reward executor customization 2026-09-13 01:48:22 +03:00
Gexo91 5f1a3a8e6e SQL/Housing: align tutorial stewards with fallback plot 2026-09-13 01:42:19 +03:00
Gexo91 4592be16d9 SQL/Housing: spawn Stage 1 tutorial stewards 2026-09-13 01:41:53 +03:00
Gexo91 06f1d9aea9 Core/Housing: activate Start Tutorial opcode at runtime 2026-09-13 01:41:45 +03:00
Gexo91 ec769be191 chore: remove one-shot Housing Stage 1 patch workflow 2026-09-13 01:41:38 +03:00
Gexo91 75b1987e97 chore: apply Housing stage 1 direct patch 2026-09-13 01:40:25 +03:00
Gexo91 abfd04a794 Core/DB Housing: publish decor, blueprints and tutorial flow 2026-09-13 01:24:40 +03:00
Gexo91 627f759522 Core/Housing: stage 40 make decor quantity dependencies explicit 2026-09-13 00:07:56 +03:00
Gexo91 df83611560 Core/Housing: stage 40 accept captured decor storage source type 2026-09-13 00:07:15 +03:00
Gexo91 7205f9f096 Core/Housing: stage 40 route decor quantity synchronization 2026-09-13 00:06:06 +03:00
Gexo91 f1cbe1463f Core/Housing: stage 40 synchronize licensed decor quantities 2026-09-13 00:05:20 +03:00
Gexo91 e0f07cc32e Core/Housing: stage 40 declare decor quantity synchronization 2026-09-13 00:04:57 +03:00
Gexo91 f915d55151 Core/Housing: stage 39 route deferred decor through corrected GUID handler 2026-09-12 23:55:18 +03:00
Gexo91 26aae0d429 Core/Housing: stage 39 create deferred decor GUIDs in retail layout 2026-09-12 23:54:54 +03:00
Gexo91 34b118eaf6 Core/Housing: stage 39 declare decor redemption handler 2026-09-12 23:54:25 +03:00
Gexo91 d345f0372d Core/Housing: stage 39 centralize decor GUID construction 2026-09-12 23:53:54 +03:00
Gexo91 9b30adb426 Core/Housing: stage 39 keep GUID header changes minimal 2026-09-12 23:53:19 +03:00
Gexo91 4ee0aa51bb Core/Housing: stage 39 decode Housing decor GUID fields correctly 2026-09-12 23:52:12 +03:00
Gexo91 896572c70c Core/Housing: stage 38 route decor storage through repair adapter 2026-09-12 21:07:48 +03:00
Gexo91 565d1176ee Core/Housing: stage 38 repair persistent decor storage GUIDs 2026-09-12 21:07:25 +03:00
Gexo91 07ea25023b Core/Housing: stage 38 declare decor storage repair adapter 2026-09-12 21:06:44 +03:00
Gexo91 80977e7cfe Core/Housing: stage 38 expose Housing decor GUID fields 2026-09-12 21:06:23 +03:00
Gexo91 a1c2fe2a14 Core/Housing: stage 38 make tutorial transition deterministic 2026-09-12 21:02:53 +03:00
Gexo91 688c1bd904 Core/Housing: guard Initiative script registration context 2026-09-12 19:54:25 +03:00
Gexo91 a9ae24d909 Core/Housing: load Initiative bridge through script loader 2026-09-12 19:42:40 +03:00
Gexo91 339edb7618 Core/Housing: stop runtime script registration from opcode startup 2026-09-12 19:42:21 +03:00
Gexo91 bdcfe6dd47 Core/Housing: register Initiative scripts in managed context 2026-09-12 19:41:56 +03:00
Gexo91 1759ba515e Core/Housing: fix duplicate decor edit mode symbol 2026-09-12 19:06:07 +03:00
Gexo91 370ff3c2b6 Core/Housing: stage 37 harden tutorial transition fallback 2026-09-12 18:39:20 +03:00
Gexo91 cffc448890 Core/Housing: stage 37 make tutorial packet dependency explicit 2026-09-12 18:37:53 +03:00
Gexo91 6117ea8c42 Core/Housing: stage 37 route tutorial start request 2026-09-12 18:37:31 +03:00
Gexo91 35f998e75f Core/Housing: stage 37 implement tutorial start flow 2026-09-12 18:37:00 +03:00
Gexo91 b0792d28c4 Core/Housing: stage 37 declare tutorial session handler 2026-09-12 18:36:43 +03:00
Gexo91 9bd4bb0088 Core/Housing: stage 37 declare tutorial start packet 2026-09-12 18:36:26 +03:00
Gexo91 22df66db67 Core/Housing: stage 36 reject expired Initiative reward claims 2026-09-12 18:27:59 +03:00
Gexo91 b91f27d921 Core/Housing: stage 36 orchestrate Initiative reward claims 2026-09-12 18:26:23 +03:00
Gexo91 780aa60be1 Core/Housing: stage 35 seal reward grants atomically 2026-09-12 18:18:31 +03:00
Gexo91 02ca8b8788 Core/Housing: stage 35 execute Initiative reward grants recoverably 2026-09-12 18:16:06 +03:00
Gexo91 6d5684fc2a Core/Housing: stage 35 declare recoverable Initiative reward executor 2026-09-12 18:15:13 +03:00
Gexo91 91847ad0da Core/Housing: stage 35 persist Initiative reward execution state 2026-09-12 18:15:05 +03:00
Gexo91 9ba34169e3 Core/Housing: stage 34 require fully delivered reward snapshot 2026-09-12 18:08:03 +03:00
Gexo91 1df23abdfb Core/Housing: stage 34 snapshot Initiative reward delivery 2026-09-12 18:06:25 +03:00
Gexo91 effc57e7c0 Core/Housing: stage 34 expose Initiative reward delivery snapshot 2026-09-12 18:04:54 +03:00
Gexo91 a5e6c073ca DB/Characters: stage 34 add Initiative reward delivery snapshot 2026-09-12 18:04:39 +03:00
Gexo91 7973004aab Core/Housing: stage 33 implement idempotent archived reward claims 2026-09-12 17:59:49 +03:00
Gexo91 ebc2294508 Core/Housing: stage 33 add Initiative reward claim API 2026-09-12 17:58:43 +03:00
Gexo91 1edb67e850 DB/Characters: stage 33 add Initiative reward claim ledger 2026-09-12 17:58:12 +03:00
Gexo91 1bd0c45e60 Core/Housing: stage 32 integrate Initiative rotation with session lifecycle 2026-09-12 17:52:38 +03:00
Gexo91 9b1d608485 Core/Housing: stage 32 implement generation-safe Initiative rotation 2026-09-12 17:50:25 +03:00
Gexo91 df88656f3f Core/Housing: stage 32 add Initiative rotation interface 2026-09-12 17:49:03 +03:00
Gexo91 a3dceee4a8 DB/Characters: stage 32 preserve Initiative generation history 2026-09-12 17:48:33 +03:00
Gexo91 47d9636848 DB/Characters: stage 32 add Initiative rotation persistence 2026-09-12 17:47:38 +03:00
Gexo91 34f1fc0549 Core/Housing: stage 31 harden Initiative expiration recovery 2026-09-12 17:43:32 +03:00
Gexo91 007105d896 Core/Housing: stage 31 reject expired active Initiative selection 2026-09-12 17:42:03 +03:00
Gexo91 7737573e0c Core/Housing: stage 31 stop criteria after Initiative expiration 2026-09-12 17:41:32 +03:00
Gexo91 6519990412 Core/Housing: stage 31 enforce Initiative expiration 2026-09-12 17:40:39 +03:00
Gexo91 b60bcf7688 Core/Housing: stage 31 expose Initiative lifetime state 2026-09-12 17:39:24 +03:00
Gexo91 d7352601ee DB/Characters: stage 31 persist Housing Initiative expiration 2026-09-12 17:39:13 +03:00
Gexo91 c880fff2fa Core/Housing: stage 30 register Initiative criteria bridge 2026-09-12 17:32:07 +03:00
Gexo91 15615bb447 Core/Housing: stage 30 bridge validated criteria progress 2026-09-12 17:31:39 +03:00
Gexo91 ab68ff256f Core/Housing: stage 30 add Initiative criteria bridge interface 2026-09-12 17:30:37 +03:00
Gexo91 2de723319b DB/Characters: stage 30 add Initiative criteria checkpoints 2026-09-12 17:30:31 +03:00
Gexo91 00cbdb235c Core/Housing: stage 29 reset stale Initiative progress safely 2026-09-12 17:16:46 +03:00
Gexo91 e6e3ac3b22 DB/Characters: stage 29 isolate Initiative progress generations 2026-09-12 17:15:40 +03:00
Gexo91 e3772ea80d Core/Housing: stage 29 enable Initiative completion notifications 2026-09-12 17:14:09 +03:00
Gexo91 0ac8b930b0 Core/Housing: stage 29 complete defined Initiative activities atomically 2026-09-12 17:13:43 +03:00
Gexo91 2b1245d97e Core/Housing: stage 29 source Initiative targets from definitions 2026-09-12 17:12:24 +03:00
Gexo91 d24ac4ef95 DB/Characters: stage 29 define Initiative activities safely 2026-09-12 17:12:13 +03:00
Gexo91 ff039eed0f Core/Housing: stage 29 serialize Initiative completion packets 2026-09-12 17:11:19 +03:00
Gexo91 c30b0920ae Core/Housing: stage 29 add verified Initiative completion packets 2026-09-12 17:11:10 +03:00
Gexo91 d62a374834 Core/Housing: stage 29 expose Initiative completion transitions 2026-09-12 17:10:58 +03:00
Gexo91 3d30b9b56a DB/Characters: stage 29 persist Initiative completion state 2026-09-12 17:10:47 +03:00
Gexo91 9491f28693 Core/Housing: stage 28 synchronize Initiative session persistence 2026-09-12 17:06:27 +03:00
Gexo91 d8c6f911f1 Core/Housing: stage 28 synchronize Initiative root initialization 2026-09-12 17:05:56 +03:00
Gexo91 a869604d27 Core/Housing: stage 28 guard Initiative log delta range 2026-09-12 17:05:06 +03:00
Gexo91 9063fcbfcf Core/Housing: stage 28 consume persisted Initiative snapshots 2026-09-12 17:04:08 +03:00
Gexo91 670039d88e Core/Housing: stage 28 persist Initiative progress atomically 2026-09-12 17:03:39 +03:00
Gexo91 50e7551d73 Core/Housing: stage 28 declare Initiative progress service 2026-09-12 17:03:04 +03:00
Gexo91 be06305309 Core/Housing: stage 27 make Initiative packet dependencies explicit 2026-09-12 16:56:59 +03:00
Gexo91 1c35d05525 Core/Housing: stage 27 route active Initiative neighborhood requests 2026-09-12 16:56:24 +03:00
Gexo91 fe23ef20ea Core/Housing: stage 27 persist and validate active Initiative neighborhood 2026-09-12 16:55:57 +03:00
Gexo91 1085084486 Core/Housing: stage 27 expose Initiative active-neighborhood handlers 2026-09-12 16:55:20 +03:00
Gexo91 b66f77d0e3 DB/Characters: stage 27 persist active Initiative neighborhood 2026-09-12 16:55:11 +03:00
Gexo91 ae5deee031 Core/Housing: stage 27 implement Initiative request wire handlers 2026-09-12 16:55:03 +03:00
Gexo91 fa89f1f68c Core/Housing: stage 27 add Initiative request packet foundation 2026-09-12 16:54:56 +03:00
Gexo91 82396991ab Core/Housing: stage 26 clean room state documentation 2026-09-12 16:47:26 +03:00
Gexo91 0715b8f2d1 Core/Housing: stage 26 route initiative handlers 2026-09-12 16:46:57 +03:00
Gexo91 548bc77f73 DB/Characters: stage 26 add housing initiative persistence 2026-09-12 16:46:33 +03:00
Gexo91 f2e58b0290 Core/Housing: stage 26 add initiative persistence handlers 2026-09-12 16:46:21 +03:00
Gexo91 cd3954d8b9 Core/Housing: stage 26 add initiative session interface 2026-09-12 16:46:03 +03:00
Gexo91 ed6d50fdfd Core/Housing: stage 25 remove historical labels from room removal service 2026-09-12 16:28:36 +03:00
Gexo91 65a05c9411 Core/Housing: stage 25 remove historical labels from room move persistence 2026-09-12 16:26:27 +03:00
Gexo91 101f67e18b Core/Housing: stage 25 professionalize room removal persistence comments 2026-09-12 16:25:20 +03:00
Gexo91 34fb54526f Core/Housing: stage 25 professionalize room rotation comments 2026-09-12 16:24:46 +03:00
Gexo91 42605b2c75 Core/Housing: stage 25 remove historical labels from room graph validation 2026-09-12 16:22:36 +03:00
Gexo91 aa2876646d Core/Housing: stage 25 remove historical stage labels from room session 2026-09-12 16:18:08 +03:00
Gexo91 c6234c6312 Core/Housing: stage 25 normalize lifecycle route naming 2026-09-12 16:16:32 +03:00
Gexo91 8a3f908a48 Core/Housing: stage 25 professionalize decoration session implementation 2026-09-12 16:16:09 +03:00
Gexo91 be08f1f29b Core/Housing: stage 25 normalize connected room transform naming 2026-09-12 16:14:40 +03:00
Gexo91 9515296e9a Core/Housing: stage 25 normalize room handler naming 2026-09-12 16:14:16 +03:00
Gexo91 bc0551ab2d Core/Housing: stage 25 normalize decoration handler naming 2026-09-12 16:14:02 +03:00
Gexo91 9f42d6717e Core/Housing: stage 24 route atomic decor placement handlers 2026-09-12 16:00:44 +03:00
Gexo91 87e8e45ab9 Core/Housing: stage 24 make decor place remove atomic 2026-09-12 16:00:14 +03:00
Gexo91 18f21f59da Core/Housing: stage 24 declare atomic decor placement routes 2026-09-12 15:58:23 +03:00
Céfiro_Caecias def0596cc1 Update worldserver.conf.dist 2026-09-12 08:44:12 -03:00
Céfiro_Caecias a785a89c97 DB/World: DBErrors Fixes 2026-09-12 08:40:20 -03:00
Gexo91 d9803f062d Core/Housing: stage 23 route atomic decor storage handlers 2026-09-12 14:38:41 +03:00
Gexo91 9262b50134 Core/Housing: stage 23 make decor storage mutations atomic 2026-09-12 14:38:14 +03:00
Gexo91 5ff3afc24c Core/Housing: stage 23 declare atomic decor storage routes 2026-09-12 14:37:31 +03:00
Gexo91 c1f54d0bfb Core/Housing: stage 22 manager-backed decoration mutation gates 2026-09-12 14:29:19 +03:00
Gexo91 dbd828a1eb Core/Housing: stage 21 persist room floor metadata safely 2026-09-12 14:13:48 +03:00
luis c56d17aa7e sql prev commits 2026-09-12 07:51:10 -03:00
Gexo91 e6da6ff594 Core/Housing: stage 20 persist verified logical room slots 2026-09-12 13:45:39 +03:00
Gexo91 ef8bada56d Core/Housing: enable stage 19 door and ceiling opcodes 2026-09-12 13:34:01 +03:00
Gexo91 0c6a3792af Core/Housing: declare stage 19 door and ceiling handlers 2026-09-12 13:33:48 +03:00
Gexo91 59576f3f47 Core/Housing: route room door and ceiling variant handlers 2026-09-12 13:33:35 +03:00
Gexo91 2658b2bb1f Core/Housing: implement safe room door and ceiling variants 2026-09-12 13:33:17 +03:00
Gexo91 065b4da60f Core/Housing: add stage 19 room variant service contract 2026-09-12 13:32:06 +03:00
luis 30821829cf all spell reports 2026-09-12 07:28:31 -03:00
luis 306e7d21e4 https://www.wowhead.com/spell=459730/huntmasters-call 2026-09-12 07:22:12 -03:00
luis 59ba468321 -.- 2026-09-12 07:17:19 -03:00
luis 90984ddfc4 spell_hun_dire_beast 2026-09-12 07:16:07 -03:00
luis 2523e18a9c buildfix 2026-09-12 07:10:20 -03:00
luis 6b90f8434d hunter talents 2026-09-12 07:05:08 -03:00
Gexo91 408521fe00 Core/Housing: stage 18 persist room themes and materials safely 2026-09-12 13:02:26 +03:00
luis 2c5c10826f Laceration 2026-09-12 06:58:06 -03:00
luis fbe20c41cb Bloodshed 2026-09-12 06:45:46 -03:00
luis 87e8e54864 stomp 2026-09-12 06:43:11 -03:00
luis 0b133c3de6 Nature's Ally 2026-09-12 06:34:47 -03:00
luis e90eb8c103 Beast Cleave 2026-09-12 06:21:47 -03:00
luis 6cfad45ee7 Thundering Hooves 2026-09-12 06:02:52 -03:00
Gexo91 bd91a01504 Merge pull request #11 from Gexo91/main
Restarted Housing implementation — Stage 6 -- Stage 17
2026-09-12 12:01:47 +03:00
luis 3c47469c26 spell hunter Scent of Blood 2026-09-12 05:53:05 -03:00
luis 8ad87e5921 typo 2026-09-12 05:49:15 -03:00
luis aa8eff444b crash fix spell_pri_vampiric_embrace 2026-09-12 05:42:02 -03:00
luis bee8f47ff6 delves part 2 2026-09-12 05:40:50 -03:00
Gexo91 17196fc1b7 Core/Housing: preserve doorway theme on live materialization 2026-09-12 11:34:29 +03:00
Gexo91 8431dde8a5 Core/Housing: fix room component visual DB2 contract 2026-09-12 11:33:02 +03:00
Gexo91 f404d016c9 Core/Housing: fix room removal DB2 option contract 2026-09-12 11:30:21 +03:00
Gexo91 6012c87ee3 Core/Housing: fix room connection DB2 option contract 2026-09-12 11:29:20 +03:00
Gexo91 be4f9d48c1 Core/Housing: fix DB2 topology access build errors 2026-09-12 11:28:12 +03:00
luis 187b6a81a9 delves part 1 2026-09-12 05:23:33 -03:00
Gexo91 3069d229a5 Core/Housing: stage 17 transform connected room groups safely 2026-09-12 10:50:39 +03:00
Gexo91 befca15ae2 Core/Housing: stage 16 safely swap isolated room transforms 2026-09-12 10:41:01 +03:00
Gexo91 8385d0fb6d Core/Housing: stage 15 add safe room rotate and guarded move 2026-09-12 10:07:53 +03:00
luis 5be3ce35dd wip dungeon follower 2026-09-12 03:57:40 -03:00
Gexo91 8b2220c844 Core/Housing: stage 14 safely remove connected rooms 2026-09-12 09:37:24 +03:00
luis d6c63ad5d7 Fix follower dungeon spawns 2026-09-12 03:30:41 -03:00
luis a9534f776a all df follower dungeons 2026-09-12 03:11:10 -03:00
luis d48e019536 test dh spell 2026-09-12 02:12:01 -03:00
luis b8e3f766bf spell and solo lfg fix 2026-09-12 01:50:27 -03:00
luis 53d73abc74 typo 2026-09-12 01:02:46 -03:00
Sistemas dca26799f6 DB/Dungeons: Adding lfg for Midnight's dungeons and teleport commands
Adding all the LFG and the World_safe_locs for the death prevention teleport to midnight dungeons and some other ones, this patch includes: Murder Row, Den of Narolakk, the Blinding Vale, Altar of Fangs, King's Rest, Ruby Life Pools, Temple of Sethraliss, Windrunner Spire and Misara Caverns
2026-09-12 05:34:01 +02:00
luis 874f10cd1c crash fix maisara caverns 2026-09-12 00:02:22 -03:00
luis 638e306713 delves rework 2026-09-11 23:14:34 -03:00
luis 65b1e364d3 Core/Delves: 12.1 tier picker, tier-id semantics, UI payloads, PlayerChoiceClear 2026-09-11 23:04:54 -03:00
luis 93d3583b20 delve missing 2026-09-11 22:54:07 -03:00
luis 6bf82e8a98 Spotter's Mark 2026-09-11 22:04:13 -03:00
luis 5a04c57da9 Core/AreaTriggers: Implement PositionalSoundKitId 2026-09-11 21:11:03 -03:00
luis 5459305be7 Db data 2026-09-11 20:36:13 -03:00
luis fb18dd4abe Scripts/TwilightHighlands: Implement Worldboss Julak-Doom (#31996) 2026-09-11 20:32:40 -03:00
luis 090d058a23 Solo lfg 2026-09-11 20:21:08 -03:00
Thordekk 53c230fc7e Add Solo LFG configuration options
Added configuration options for Solo LFG module.
2026-09-11 20:11:56 -03:00
Céfiro_Caecias eca6949659 DB/World: Mechagnome Starting Zone 2026-09-11 20:05:43 -03:00
Gexo91 c1a56c2040 Core/Housing: stage 13 persist bidirectional room doorway links 2026-09-12 02:04:40 +03:00
Gexo91 b27e3ee054 Core/Housing: stage 12 persist and materialize room component graph 2026-09-12 01:36:16 +03:00
Gexo91 c3e77c17b9 Core/Housing: enable Room ADD opcode route 2026-09-12 01:23:35 +03:00
luis 3c67dfeb8e uldaman legacy of tyr followers 2026-09-11 19:23:32 -03:00
Gexo91 b30a1c1a94 Core/Housing: activate safe Room ADD transaction and materialization 2026-09-12 01:22:43 +03:00
Gexo91 7fe95a4375 Core/Housing: declare live Room ADD session handler 2026-09-12 01:22:16 +03:00
Gexo91 4bc9612ece Merge pull request #23 from Gexo91/housing/restart-stage-10-room-add-placement
Core/Housing: stage 10 safe Room ADD placement geometry
2026-09-12 01:16:51 +03:00
Gexo91 b1fb9742ec Merge pull request #22 from Gexo91/housing/restart-stage-09-room-add-preflight
Core/Housing: stage 9 Room ADD preflight and persistence gate
2026-09-12 01:16:32 +03:00
Gexo91 b368d66ccb Merge pull request #21 from Gexo91/housing/restart-stage-08-room-topology-69587
Core/Housing: stage 8 verified Room component topology
2026-09-12 01:16:10 +03:00
Gexo91 0ac4f06ae3 Merge pull request #20 from Gexo91/housing/restart-stage-07-room-db2-loader-69587
Core/Housing: stage 7 isolated Room DB2 loader for 12.1.0.69587
2026-09-12 01:15:54 +03:00
Gexo91 bebc7282a7 Core/Housing: stage 10 safe Room ADD placement geometry 2026-09-12 01:11:32 +03:00
Gexo91 9949f28481 Core/Housing: stage 9 Room ADD preflight and persistence gate 2026-09-12 01:11:32 +03:00
Gexo91 ce7138473d Core/Housing: add fail-closed Room component topology gate 2026-09-12 01:11:32 +03:00
Gexo91 a104693832 Core/Housing: expose verified Room topology contract 2026-09-12 01:11:32 +03:00
luis 66b4c0031b Add all follower dungeon mode to midnight dungeons 2026-09-11 19:11:31 -03:00
Gexo91 1b62dbd3d2 Core/Housing: harden isolated DB2 record-size validation 2026-09-12 01:11:31 +03:00
Gexo91 9222140b6a Core/Housing: validate room templates through isolated 69587 client data 2026-09-12 01:11:31 +03:00
Gexo91 1aa43a5e13 Core/Housing: load verified 69587 room DB2 data fail-closed 2026-09-12 01:11:31 +03:00
Gexo91 8bff98ff5b Core/Housing: add isolated 12.1 room client-data gate 2026-09-12 01:11:31 +03:00
Gexo91 25743c47ac Merge pull request #14 from Gexo91/housing/restart-stage-07-room-remove-lifecycle
Core/Housing: stage 7 ownership-safe room removal lifecycle
2026-09-12 01:10:29 +03:00
luis 16d09bc6ae Uldaman 2026-09-11 19:05:10 -03:00
luis abe5bb06e0 Core/BattlePets: send weather states to the client (BattlePetState.db2) 2026-09-11 18:52:22 -03:00
Denis Prikhodko 89faba7a1d Scripts/Delves: drop hardcoded tier 1 and rely on core tier adoption
The entrance tier mechanism (gossip/tiered-entrance UI -> m_delveSelectedTier
-> first entrant locks tier) already lives in DelveInstance::OnPlayerEnter,
which validates the selection against the delve's map id. The duplicate
adoption block in DelveInstanceScript::OnPlayerEnter skipped the map check
and could let a stale selection from another delve leak in - removed it.

DelveInstanceScript now takes the initial tier via a documented
DEFAULT_DELVE_TIER; the 13 per-delve instance scripts stop hardcoding
1 with a stale TODO.
2026-09-11 18:37:35 -03:00
luis c56516fedc move to db 2026-09-11 18:34:50 -03:00
luis 0327947c5c Core/BattlePets: retail battle XP rule from 12.1.0.69587 captures 2026-09-11 18:29:24 -03:00
Céfiro_Caecias 2a6309ee39 DB/World: Exile's Reach 2026-09-11 17:49:39 -03:00
Gexo91 b6724e02d1 Core/Housing: wire stage 7 room layout and removal opcodes 2026-09-11 23:44:45 +03:00
Gexo91 5aad593879 Core/Housing: implement room layout and removal session handlers 2026-09-11 23:43:44 +03:00
Gexo91 39a29a4f15 Core/Housing: add stage 7 room session interface 2026-09-11 23:43:31 +03:00
Gexo91 4309746efe Core/Housing: implement ownership-safe room removal persistence 2026-09-11 23:43:15 +03:00
Gexo91 c6bddb5a37 Core/Housing: add owned room removal persistence API 2026-09-11 23:42:49 +03:00
Gexo91 e06b82c20f Merge pull request #8 from Gexo91/main
Restarted Housing implementation — Stage 5 , Stage 6, Build Fix
2026-09-11 22:57:33 +03:00
Gexo91 35af683510 Merge branch 'Thordekk:main' into main 2026-09-11 22:53:14 +03:00
luis ff59d91281 spell assign db 2026-09-11 14:05:20 -03:00
luis dbe44b1fbc domblade 2026-09-11 14:03:08 -03:00
luis 4b78bf1783 rogue spell 2026-09-11 12:01:38 -03:00
luis a81ad1441f Crimson tempest 2026-09-11 11:46:37 -03:00
Céfiro_Caecias fe82981295 DB/World: Allied Races Adjusts 2026-09-11 11:33:48 -03:00
Gexo91 39630ba78f Merge pull request #13 from Gexo91/fix/housing-room-packets-boundedsize-compile
Core/Housing: fix Room packet bounded-size compile error
2026-09-11 17:17:53 +03:00
Gexo91 78f3039bcf Merge pull request #12 from Gexo91/housing/restart-stage-06-room-client-data-69587
Core/Housing: stage 6 room client-data contract for 12.1.0.69587
2026-09-11 17:16:02 +03:00
Gexo91 9479327891 Core/Housing: fix unsupported BoundedSize packet reads 2026-09-11 17:11:59 +03:00
Gexo91 4fa9aa772e Core/Housing: pin room template validation to 69587 layout 2026-09-11 16:58:49 +03:00
Gexo91 1ce75096ca DB/Hotfixes: prepare Housing room client-data schema for 69587 2026-09-11 16:58:22 +03:00
luis 7053a981d5 fix spell 2026-09-11 10:57:09 -03:00
luis 2ffefdb117 Fixed spell 1254756 2026-09-11 10:50:29 -03:00
Gexo91 f920c67ee4 Merge pull request #10 from Gexo91/housing/restart-stage-04-room-protocol
Core/Housing: restart stage 4 room protocol foundation
2026-09-11 16:11:09 +03:00
Gexo91 365148aa93 Merge pull request #11 from Gexo91/housing/restart-stage-05-room-persistence-safety
Core/Housing: restart stage 5 room persistence safety
2026-09-11 16:07:49 +03:00
luis 78b7c0c895 spell fixes i will add sql later 2026-09-11 10:06:22 -03:00
Céfiro_Caecias f26aa8250b DB/World: DBErrors Fixes 2026-09-11 09:56:51 -03:00
Céfiro_Caecias 42cd278def DB/Hotfixes: Item Sparse 2026-09-11 09:56:14 -03:00
luis 4b27cd02c8 Core/BattlePets: 12.1.0.69587 round packets carry the cooldowns after the effects 2026-09-11 09:27:14 -03:00
Gexo91 b8a7cabe2e Core/Housing: gate room templates on loaded DB2 data 2026-09-11 15:24:46 +03:00
Gexo91 1546d2bac5 Core/Housing: fail closed when HouseRoom DB2 is unavailable 2026-09-11 15:24:19 +03:00
Gexo91 82d3395770 Core/Housing: validate owned room persistence safely 2026-09-11 15:23:34 +03:00
Gexo91 a63a1aa146 Core/Housing: add safe room persistence loader 2026-09-11 15:23:10 +03:00
Gexo91 7e2e539196 Core/Housing: add persistence-only room state 2026-09-11 15:22:50 +03:00
Gexo91 8f41f84183 Core/Housing: centralize room GUID validation 2026-09-11 15:22:41 +03:00
Gexo91 91f8b7d397 Core/Housing: implement room packet serialization 2026-09-11 15:07:27 +03:00
Gexo91 3ed5549531 Core/Housing: add room protocol packet definitions 2026-09-11 15:07:04 +03:00
Gexo91 57182d1da0 Merge pull request #7 from Gexo91/main
Restarted Housing implementation — Stage 1 ,Stage 2, Stage 3
2026-09-11 15:05:37 +03:00
Gexo91 02d961c7df Merge pull request #9 from Gexo91/housing/restart-stage-02-house-plot-lifecycle
Housing/restart stage 02 house plot lifecycle
2026-09-11 13:16:58 +03:00
Gexo91 84bf44ed1d Merge pull request #8 from Gexo91/housing/restart-stage-03-session-lifecycle-wiring
Core/Housing: restart stage 3 manager-backed session lifecycle
2026-09-11 13:08:34 +03:00
Gexo91 ecc0ce9269 Merge pull request #6 from Gexo91/housing/restart-stage-01-core-foundation
Core/Housing: restart stage 1 core state foundation
2026-09-11 13:03:40 +03:00
Gexo91 6ca76c41ff Core/Housing: keep worldserver startup hook isolated 2026-09-11 12:02:30 +03:00
Gexo91 9f39780c4f Core/Housing: install session routes before world socket startup 2026-09-11 11:58:17 +03:00
Gexo91 36c38b89c2 Core/Housing: install manager-backed opcode routes 2026-09-11 11:56:52 +03:00
Gexo91 50a720bf8e Core/Housing: expose session opcode installer 2026-09-11 11:55:36 +03:00
Gexo91 00f55ed447 Core/Housing: route session lifecycle through HousingMgr 2026-09-11 11:50:36 +03:00
Gexo91 5682c19edc Core/Housing: define manager-backed session handlers 2026-09-11 11:49:23 +03:00
Gexo91 861a694c4e Core/Housing: fix per-table relinquish cleanup caps 2026-09-11 11:47:50 +03:00
Gexo91 2b010c1935 Core/Housing: make relinquish live-entity cleanup map-owned 2026-09-11 11:47:20 +03:00
Gexo91 64cbe030ec Core/Housing: implement native session lifecycle adapter 2026-09-11 11:33:29 +03:00
Gexo91 22ae6ca777 Core/Housing: add native session lifecycle adapter 2026-09-11 11:33:14 +03:00
Gexo91 1c7a856e48 Core/Housing: resolve reserved plot lifecycle from owner reservation 2026-09-11 11:07:07 +03:00
Gexo91 2496fc7de3 Core/Housing: resolve reserved plot lifecycle from owner reservation 2026-09-11 11:06:31 +03:00
Gexo91 36db8a16b5 Core/Housing: add verified lifecycle packet contracts 2026-09-11 11:00:54 +03:00
Gexo91 21519e88fd Core/Housing: harden explicit plot purchase move and relinquish lifecycle 2026-09-11 10:50:44 +03:00
Gexo91 996c3393dc Core/Housing: require explicit house ownership lifecycle 2026-09-11 10:49:57 +03:00
Gexo91 744aedc0d5 DB/Characters: add Housing plot reservation lifecycle 2026-09-11 10:49:00 +03:00
Gexo91 de23a70e93 Core/Housing: centralize house and plot lifecycle persistence 2026-09-11 10:48:44 +03:00
Gexo91 1e5b4eab89 Core/Housing: expose house and plot lifecycle operations 2026-09-11 10:47:44 +03:00
Gexo91 061fefb08b Core/Housing: define plot lifecycle transaction constants 2026-09-11 10:47:35 +03:00
Gexo91 40917cb70b Core/Housing: add plot lifecycle state model 2026-09-11 10:47:18 +03:00
Gexo91 92652e693a Core/Housing: implement canonical Housing state loader 2026-09-11 10:41:25 +03:00
Gexo91 6d4ff69a62 Core/Housing: add central Housing manager interface 2026-09-11 10:41:11 +03:00
Gexo91 a0adb613ba Core/Housing: add canonical house state model 2026-09-11 10:41:02 +03:00
Gexo91 3ab50aef37 Core/Housing: add central Housing definitions 2026-09-11 10:40:52 +03:00
Gexo91 754cb9547b Merge pull request #5 from Gexo91/fix/housedecor-hotfix-tablehash
Core/Hotfix: fix HouseDecor table hash quarantine
2026-09-11 08:49:35 +03:00
Gexo91 ef2b7bf837 Core/Hotfix: use real HouseDecor table hash 2026-09-11 08:48:06 +03:00
Gexo91 c5382a4d9c Merge remote-tracking branch 'Gexo91/fix/housedecor-hotfix-client-crash' 2026-09-11 08:36:49 +03:00
Gexo91 3dd0c91898 Core/Hotfix: quarantine unsafe HouseDecor pushes 2026-09-11 08:16:10 +03:00
luis fdf2335ab1 Start rework battlepets for 12.1 2026-09-10 22:41:35 -03:00
luis cb66441cae King rest core scripts 2026-09-10 22:16:52 -03:00
luis 56d6639fb2 db king rest 2026-09-10 19:55:03 -03:00
Céfiro_Caecias d2838f7162 DB/World: Kul Tiran Starting Zone 2026-09-10 17:36:59 -03:00
luis 82aec417ee enable opcodes client handle it 2026-09-10 17:19:03 -03:00
luis 5e75748eed more atal utek data 2026-09-10 17:12:56 -03:00
luis 0e9f168f18 sniff campaign 2026-09-10 17:05:51 -03:00
luis f68b6796fd enable playerhousing and bpet fix 2026-09-10 15:06:02 -03:00
luis b69cf5cd63 typo fix 2026-09-10 14:39:42 -03:00
luis 5220e640f1 add roomworld entity missing def 2026-09-10 14:38:06 -03:00
Céfiro_Caecias 4b1d0c4999 DB/World: Allied Races Adjusts 2026-09-10 13:50:08 -03:00
luis 124a41fa14 Disable 2026-09-10 12:27:01 -03:00
luis 4e202c78b0 catchup experience 2026-09-10 11:39:49 -03:00
luis 2b39caa8c3 to delete file 2026-09-10 11:29:19 -03:00
luis 119690680e enable playerhousing and update packet 2026-09-10 11:28:20 -03:00
luis e5d8d79dd1 all sql housing 2026-09-10 11:15:29 -03:00
luis 8e1c2d660a Playerhousing 2026-09-10 11:13:01 -03:00
Céfiro_Caecias 24fd8e95c2 DB/World: Door Translates 2026-09-10 10:38:02 -03:00
luis 23e87a3088 housing plot finder stage 3 2026-09-10 10:28:36 -03:00
Céfiro_Caecias 3d6ba0308d DB/World: Cell Door Translates 2026-09-10 10:28:19 -03:00
Céfiro_Caecias 91db5eb3d1 DB/World: Chair Translates 2026-09-10 10:16:47 -03:00
Céfiro_Caecias 362c7d053c DB/World: Bench Translates 2026-09-10 10:02:11 -03:00
Céfiro_Caecias bf19457b8b Update 2026_09_10_00_world_dberrors.sql 2026-09-10 09:44:49 -03:00
Céfiro_Caecias 378cef8b65 DB/World: DBErrors Fixes 2026-09-10 09:40:51 -03:00
luis 1fcd385645 unused 2026-09-09 20:03:36 -03:00
luis fa4eb9ae8b enum spell to script later 2026-09-09 20:03:12 -03:00
luis 1d4b9187de Cornerstones gob 2026-09-09 19:58:02 -03:00
luis 6a7f698c4e warning fix 2026-09-09 19:05:40 -03:00
luis a088e627e6 Core/Player: Fixed Warlock Hand of Gul'Dan and possibly others thanks celeby 2026-09-09 18:29:08 -03:00
Céfiro_Caecias 6cb7f9de54 Update 2026_09_09_02_characters_housing_dynamic_entities.sql 2026-09-09 18:23:09 -03:00
luis 28ae381630 char db 2026-09-09 17:12:17 -03:00
luis 400b071cac new playerhousing system 2026-09-09 17:10:41 -03:00
Céfiro_Caecias 213f4cf979 DB/World: Dark Iron Dwarf Starting Zone 2026-09-09 17:05:54 -03:00
luis 8fd13b5aa1 fix packets 2026-09-09 16:04:31 -03:00
luis 91b6de9300 Housing part 3 2026-09-09 16:00:01 -03:00
luis aca09eb57b Playerhousing part 2 2026-09-09 15:45:40 -03:00
luis dd4998a8e8 more midnight campaigns 2026-09-09 14:52:59 -03:00
luis db53bc4850 bad files 2026-09-09 12:57:08 -03:00
luis 377f0991c4 del 2026-09-09 12:55:31 -03:00
luis 1b4e8f85db typo 2026-09-09 12:53:44 -03:00
luis 0008217301 sniff and new at changes 2026-09-09 11:51:47 -03:00
luis 5c394a29fd Core/AreaTriggers: Add roll/pitch/yaw to areatrigger_create_properties db table and remove all deprecated flags 2026-09-09 11:51:18 -03:00
luis 195637d197 db world lcoales 2026-09-09 11:38:47 -03:00
luis 0f62627545 db locales 2026-09-09 11:34:03 -03:00
luis 205af79752 Scripts/FSB: apply some coding style and fix issue with no raid frame update when 1 player alone joins BG 2026-09-09 10:24:45 -03:00
luis 43ad7c0b92 Scripts/FSB: improve periodic update for party/raid frames 2026-09-09 10:22:43 -03:00
luis 466940ba71 lfg list fixes 2026-09-09 10:18:12 -03:00
luis a893920db2 bpet full update 2026-09-09 10:18:12 -03:00
Céfiro_Caecias cff05ba3ce Update README.md 2026-09-09 09:44:15 -03:00
Céfiro_Caecias 12553c36f7 DB/World: DBErrors Fixes 2026-09-09 09:41:09 -03:00
luis 009c475f18 adapt arena role 2026-09-09 09:36:24 -03:00
luis 996d876bbf pvp 2026-09-09 09:34:40 -03:00
luis 9fed5635ff try fix crash 2026-09-09 08:21:16 -03:00
luis 0182d47648 remove old housing fix crash on worldserver 2026-09-08 19:16:59 -03:00
luis 50c33e9b8a typo 2026-09-08 19:15:29 -03:00
luis c3df2f8853 Housing 2026-09-08 18:28:19 -03:00
luis 400879e3a9 altar of fangs 2026-09-08 18:18:39 -03:00
Céfiro_Caecias 528a35e927 Update 2026_09_07_04_world_lightforged_draenei_starting_zone.sql 2026-09-08 17:33:23 -03:00
luis 7d41092fd8 Core initial rework of housing system 2026-09-08 15:56:16 -03:00
luis aa4b3691e2 Full altar of fangs reworked 2026-09-08 15:30:19 -03:00
luis 7531c050e5 sniffs 2026-09-08 14:12:19 -03:00
luis e5ed044aa7 dk spells and bpet 2026-09-08 12:58:44 -03:00
Céfiro_Caecias 77d77369d1 DB/World: Void Elf Starting Zone Adjusts 2026-09-08 12:08:45 -03:00
Céfiro_Caecias 788d2d892e DB/World: Fixes 2026-09-08 11:52:10 -03:00
luis 787e1b27c0 db sniff data 2026-09-07 22:09:16 -03:00
Céfiro_Caecias ae0954cdf8 DB/World: Mailbox Translates (All) 2026-09-07 20:14:54 -03:00
luis 28573387b9 Core/AreaTriggers: Use new progress curve in more places than just facing 2026-09-07 19:49:51 -03:00
luis 1e6f5d4e62 Core/AreaTriggers: Implement yaw/pitch/roll rotation 2026-09-07 18:13:13 -03:00
Céfiro_Caecias a99e5a6e57 DB/World: Lightforged Draenei Starting Zone 2026-09-07 17:38:39 -03:00
luis e1302366f3 db errors 2026-09-07 17:26:23 -03:00
luis e49f7972a8 add scriptloader 2026-09-07 16:12:41 -03:00
luis 2b393d8399 voidscar arena 2026-09-07 16:11:34 -03:00
luis a3cba81f1f voidscar arena spawns 2026-09-07 15:39:31 -03:00
luis 0033f4cb19 add to load 2026-09-07 14:46:45 -03:00
luis 473f90c6d4 missing 2026-09-07 14:45:25 -03:00
luis 9d33ea6062 full fix magister terrace 2026-09-07 14:31:24 -03:00
luis e7b908758f magister terrace 2026-09-07 14:21:04 -03:00
luis 61eacd7d78 Core/Creatures: moved movement flag updating for sessile and floating static flags into dedicated methods to improve code readability 2026-09-07 09:56:16 -03:00
luis fa68e20510 Core/Creatures: updated Creature::SetFloating and Creature::SetSessile to correctly set movement flags and make them check aura types as well 2026-09-07 09:53:22 -03:00
luis 7b4f5e99b6 update name 2026-09-07 09:50:47 -03:00
luis 894501ad06 Core/Creature: updated the Setters for CREATURE_STATIC_FLAG_SESSILE and CREATURE_STATIC_FLAG_FLOATING to incorporate recent corrections 2026-09-07 09:47:25 -03:00
luis 06a3aba5d7 Core/Creature: correct the implementation of CREATURE_STATIC_FLAG_SESSILE and CREATURE_STATIC_FLAG_FLOATING 2026-09-07 09:41:02 -03:00
luis 2a5bab5bc6 Core/Units: implement new optional parameter for Unit::DisableGravity to allow or disallow toggling hover animations 2026-09-07 09:39:51 -03:00
Céfiro_Caecias 6729fc6b92 DB/World: DBErrors Fixes 2026-09-07 09:28:05 -03:00
luis 041934821b Dep/g3d: Add direct yaw/pitch/roll conversions to G3D::Quat 2026-09-06 23:40:43 -03:00
luis fd8e6a2cc6 Dep/g3d: Make G3D::Plane destructor not virtual 2026-09-06 23:39:39 -03:00
luis bd5fd6b1b4 Dep/g3d: Remove unused data members from G3D::Ray 2026-09-06 23:36:16 -03:00
luis 18a1a232d2 Core/AreaTriggers: Implemented areatrigger movement when attached to unit or on transport 2026-09-06 23:32:38 -03:00
luis f93b3198da Scripts/Vashjir: Implement Worldboss Mobus 2026-09-06 21:51:40 -03:00
Céfiro_Caecias 7858ada1d0 DB/World: Death Knight Zone Restoration 2026-09-06 14:10:44 -03:00
Céfiro_Caecias f45a9d4530 DB/World: DBErrors Fixes 2026-09-06 09:45:23 -03:00
luis 82ab276a9e bugtracker 2026-09-06 07:53:33 -03:00
luis 6178c12e09 Update struct test 2026-09-06 07:47:49 -03:00
luis bbbe5e06d3 crash fixes 2026-09-06 07:18:37 -03:00
luis de66012bef fix crash 2026-09-06 06:48:12 -03:00
luis 3250581ae8 typo 2026-09-06 06:24:09 -03:00
luis 18af3438f3 full fix warboards 2026-09-06 02:07:01 -03:00
luis a2e233fd15 resize big playerchoice from warboard 2026-09-06 01:43:49 -03:00
luis 04a7bf319d fix spell 2026-09-06 01:29:24 -03:00
luis e573593e4f typo 2026-09-05 23:42:48 -03:00
luis 4cbbdf5ccf CMSG_CRAFTING_ORDER_REPORT_PLAYER 2026-09-05 23:39:19 -03:00
luis 1d3f95aa50 db errors 2026-09-05 23:13:08 -03:00
luis fc6c9fdcdd fix murder row 2026-09-05 22:11:08 -03:00
luis dfc9779a3e improve boss 2026-09-05 21:43:33 -03:00
luis 9df4301b23 murder row part 1 2026-09-05 21:37:12 -03:00
luis 93a26d3e69 remove wrong spell 2026-09-05 21:09:27 -03:00
luis 15d6fb6f1d murder row dungeon spawns full 2026-09-05 21:02:21 -03:00
luis e3cf83ab54 Windrunner spire sniff 2026-09-05 18:54:48 -03:00
Céfiro_Caecias 8b1090d27f DB/World: Update Build 69587 2026-09-05 16:58:45 -03:00
Céfiro_Caecias c2528c11c4 DB/Hotfixes: Update Build 69587 2026-09-05 16:57:03 -03:00
Céfiro_Caecias 9054e82aec DB/World: DBErrors Fixes 2026-09-05 16:48:47 -03:00
Céfiro_Caecias 956bb11dc3 DB/World: Void Elf Starting Zone + Extras 2026-09-05 16:04:13 -03:00
Céfiro_Caecias d7b43eb141 DB/Hotfixes: Add Missing Phase 2026-09-05 16:03:17 -03:00
luis 9069c69138 more trash 2026-09-05 14:13:11 -03:00
luis 67dd86acbc Trash mobs 2026-09-05 14:06:59 -03:00
luis b454ba0c21 initial work on rework 2026-09-05 13:50:56 -03:00
luis e2fcb68112 The Gulf of Memory delve 2026-09-05 11:56:58 -03:00
luis 79abcaaec5 spawns 2026-09-05 11:45:45 -03:00
Luis b97daeabff more cleanup and and reducing differences with TC 2026-09-05 16:26:56 +02:00
Luis 13ebebde48 more cleanup 2026-09-05 16:25:48 +02:00
Luis 903f50b44f some cleanup 2026-09-05 16:07:43 +02:00
Luis ca1d1bc608 linux fix compile 2026-09-05 16:02:42 +02:00
Céfiro_Caecias f058d8e6d7 DB/World: DBErrors Fixes 2026-09-05 09:56:36 -03:00
luis 2b16448562 Core/Player: fix gray items core bug with scaling 2026-09-04 23:17:50 -03:00
luis da445b622f enable 2026-09-04 23:14:07 -03:00
luis bb9c3ff583 BInding vale, silvermoon and harandar misc gob
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-09-04 19:31:03 -03:00
luis d5fbf57932 The binding vale npcs spawn 2026-09-04 19:23:53 -03:00
stevebone 8905eadf63 Core/CollectionMgr: fix crash due to recursive loop for certain spells.
Fixed a crash when casting a spell that has checks against quest reward state that would end up in a recursive loop and crash.
2026-09-04 23:53:08 +02:00
luis 1ed4b6c954 nexus point xena 2026-09-04 17:59:54 -03:00
luis dd9398478b df quests 2026-09-04 15:25:03 -03:00
luis 6b3f807127 rework 2026-09-04 15:22:17 -03:00
luis 82439e1f89 feat(vas): wire the client-driven character transfer end to end (P9) 2026-09-04 14:58:17 -03:00
luis 7bbc68ef5b opcode(vas): parse START_VAS_PURCHASE transfer intent; correct ASSIGN understanding (P8) 2026-09-04 14:52:38 -03:00
luis 93cf1815dd opcode(vas): implement the two framed responses (P7) - no longer stubs 2026-09-04 14:50:12 -03:00
luis e4da4ed08d opcode(vas): wire the remaining client-path opcodes (P6) - honest, not stubs 2026-09-04 14:47:26 -03:00
luis ebb56190e0 opcode(vas): populate the transfer-target realm list from the realm list (P4b) 2026-09-04 14:40:33 -03:00
luis 90d4052aba opcode(vas): check-transfer-ok handler + verified response wire (P4a) 2026-09-04 14:35:05 -03:00
luis 129ec064fb opcode(vas): realm-target-list handler + verified list header (P3) 2026-09-04 12:55:09 -03:00
luis 7eda51dcf3 opcode(vas): account-character-list response + handler (P2) 2026-09-04 12:51:13 -03:00
luis 5e3c8e7b1f opcode(vas): packet read layer for the transfer/service cluster (P1) 2026-09-04 12:47:13 -03:00
luis b687aa8ecb feat(pvp): Solo Shuffle P2 — persist personal matchmaker rating 2026-09-04 12:44:00 -03:00
luis ea770cc58c training grounds bg part 1 2026-09-04 12:41:53 -03:00
luis d297268406 solo shuffle 2026-09-04 12:33:24 -03:00
luis f100c98c37 rated solo shuffle 2026-09-04 12:10:50 -03:00
Céfiro_Caecias ad81a8fb7a DB/World: DBErrors Fixes 2026-09-04 11:28:24 -03:00
luis 8015d1259d pvp packets 2026-09-04 10:54:16 -03:00
luis 4d7a5972cd pvp improvements 2026-09-04 10:50:12 -03:00
luis 4070080d38 Full dungeon spawned 2026-09-04 10:36:31 -03:00
luis 1e781724c9 full dungeon 2026-09-04 10:21:04 -03:00
Céfiro_Caecias 4cece3a0a6 Update 2026_09_03_02_world.sql 2026-09-04 10:13:28 -03:00
luis 699ecd683d missing event 2026-09-04 10:04:43 -03:00
luis 988e7bf1e1 full trash 2026-09-04 10:02:20 -03:00
luis c5d7f530cd Fix warn 2026-09-04 09:56:18 -03:00
luis c7b20c24b4 misc 2026-09-04 09:55:37 -03:00
luis f3dfd39eb6 more events 2026-09-04 09:51:17 -03:00
luis dfec2bbda8 more blizzlike corrections 2026-09-04 09:46:43 -03:00
luis 2282b95213 core fix warnings 2026-09-04 09:33:02 -03:00
luis aab831eea1 fix build 2026-09-04 09:25:15 -03:00
luis 8f0d65f477 nexus point xena full 2026-09-04 09:16:47 -03:00
luis ce01fae7bf PvP: run a real group proposal for the Blitz solo queue, and unblock its two packets (G19) 2026-09-04 09:16:47 -03:00
Thordekk 8c9fb2fe01 Add BattlegroundBlitz.TanksPerTeam configuration
Added configuration for BattlegroundBlitz tank requirements.
2026-09-04 09:15:19 -03:00
luis 7bc0988a64 pvp implementations 2026-09-04 09:01:40 -03:00
Thordekk 1e05192d9f Enable and configure PvP Brawl settings 2026-09-04 08:53:42 -03:00
luis 629901268d 12.1 pvp updates + extras 2026-09-04 08:40:23 -03:00
Thordekk 90a1491d66 Set default healers per team for Battleground Blitz
Added configuration for BattlegroundBlitz.HealersPerTeam.
2026-09-04 08:34:40 -03:00
luis 3e0d33ff29 quests
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-09-03 19:13:45 -03:00
luis 2dcf1d73a6 Core/PacketIO: Fixed SMSG_AURA_UPDATE structure
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-09-03 18:20:39 -03:00
Céfiro_Caecias bb85ddac9d DB/World: DBErrors Fixes 2026-09-03 09:26:19 -03:00
luis 5e24549c82 db error
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-09-03 05:10:38 -03:00
luis c1f8e7a06a Fix tp
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-09-02 22:33:36 -03:00
luis 9b0e39a047 folower queue 2026-09-02 22:11:24 -03:00
luis 9488805fe7 typo 2026-09-02 21:35:32 -03:00
luis e093825f77 den of nalorak full now 2026-09-02 21:34:25 -03:00
luis 772d85a9c4 db errors and den of nalorak npcs 2026-09-02 21:15:23 -03:00
luis b76369cdcb try fix dungeon follower queue and add warn fix 2026-09-02 20:36:53 -03:00
luis 5c1546e11a dungeon followers more work 2026-09-02 20:32:24 -03:00
luis c026255048 Dungeon followers 2026-09-02 20:21:20 -03:00
luis e94fe52e90 warn fix 2026-09-02 19:06:05 -03:00
luis f709a3f424 typo 2026-09-02 17:27:34 -03:00
luis 2f724afc71 instance blinding vale 2026-09-02 17:25:56 -03:00
Céfiro_Caecias ec2f92c8ef DB/World: DBErrors Fixes 2026-09-02 15:24:25 -03:00
Céfiro_Caecias 17199ddabf DB/Hotfixes: Add Item Sparse 2026-09-02 15:23:55 -03:00
luis d53b8901d3 The blinding vale dungeon 2026-09-02 15:17:27 -03:00
luis ee7c3cae40 altar of fangs 2 boss rework 2026-09-02 15:10:09 -03:00
luis ed5a878a2f altar of fangs 2026-09-02 15:05:36 -03:00
luis f352a31b29 maisara 2026-09-02 14:35:38 -03:00
luis 143e1dfd2b maisara rework 2026-09-02 14:31:10 -03:00
luis cc46bc9fce sniff 2026-09-02 12:03:39 -03:00
luis 8949220f55 typo 2026-09-02 12:02:14 -03:00
Céfiro_Caecias 7b2af0e464 Update README.md 2026-09-02 11:45:30 -03:00
Céfiro_Caecias 948fb82f3d DB/World: Missing creature_template_model 2026-09-02 11:42:39 -03:00
luis 00d952e171 Blizzlike corrections 2026-09-02 11:30:32 -03:00
luis cb0d4099b3 69587 2026-09-02 10:28:01 -03:00
Sefrenia 691cf44341 Fix Error 2026-09-02 09:56:16 -03:00
luis 71fa42c177 world quest and den of nalarak data
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-09-01 20:23:13 -03:00
luis 6db36c73c3 rework full mechanics and spell added
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-09-01 19:11:16 -03:00
luis d42ac1bcca more blizzlike fix 2026-09-01 19:04:54 -03:00
luis b2399e5299 Full dungeon 2026-09-01 18:34:55 -03:00
luis c9a7d4ec91 rework with blizzard data 2026-09-01 18:12:44 -03:00
luis 0be2badb1c Core/AreaTriggers: Rename ScaleCurve structure to OverrideCurve (it's not used only for scale anymore) 2026-09-01 13:28:07 -03:00
luis e1a4cfafed Core/AreaTriggers: Implement new curve field 2026-09-01 13:23:42 -03:00
luis ce68951f15 12.1.0 data 2026-09-01 13:16:27 -03:00
luis a0f415b1ab missing broadcast text 2026-09-01 13:09:33 -03:00
luis 2f341cf602 scriptname 2026-09-01 12:06:25 -03:00
Céfiro_Caecias a1ff35c25f DB/World: DBErrors 2026-09-01 12:01:17 -03:00
luis 0bc64dbd5a revelosh 2026-09-01 12:01:07 -03:00
luis ee06e93f12 harandar campaign 2026-09-01 10:21:26 -03:00
luis 29eb631f2f del 2026-09-01 08:45:15 -03:00
luis 64aa62685e magister terrace 2026-09-01 08:41:49 -03:00
luis a900e0a82b Magister terrace 2026-09-01 08:20:51 -03:00
Sefrenia aba33aa2bf Limpieza Agosto 2026
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-09-01 01:33:13 -03:00
Céfiro_Caecias f48845ab67 Update 2026_08_31_07_world_update_verifiedbuild_69497.sql 2026-09-01 00:58:01 -03:00
Céfiro_Caecias ad5710c68b Update 2026_08_31_07_world_update_verifiedbuild_69497.sql 2026-09-01 00:54:29 -03:00
Céfiro_Caecias e575fa7336 DB/World: Update Build 2026-09-01 00:11:19 -03:00
luis fae4eba8e2 comment 2026-08-31 21:36:16 -03:00
luis 4a97dd1b02 altar of fangs 2026-08-31 20:22:14 -03:00
luis 73bbc69f3e I will upload sql later will take time most of creature templates not exist 2026-08-31 20:05:48 -03:00
luis 12c682be5b change scriptname 2026-08-31 20:01:36 -03:00
luis 7c45a6008b change name 2026-08-31 19:58:39 -03:00
luis fee8759c8e fix crash 2026-08-31 19:57:25 -03:00
luis 6fd2e25ba5 den of nalorak sql 2026-08-31 19:46:32 -03:00
luis f70bc4dd31 add to scriptloader 2026-08-31 19:45:42 -03:00
Céfiro_Caecias 718cc71fd3 DB/World: Delete Deprecated Tables 2026-08-31 19:10:02 -03:00
luis f0d3d33ab3 +++ 2026-08-31 18:50:46 -03:00
luis 699e042b28 typo 2026-08-31 18:50:30 -03:00
luis 5ea8bf993b den of nalorak base 2026-08-31 18:44:16 -03:00
Céfiro_Caecias 67b8ef28c1 DB/Hotfixes: Delete Deprecated Tables 2026-08-31 17:27:47 -03:00
luis 8b9e15b8ca harandar 2026-08-31 16:50:39 -03:00
luis aebe33c3a6 fix unknown 2026-08-31 16:40:02 -03:00
Céfiro_Caecias e5c16d8087 DB/World: DBErrors 2026-08-31 15:08:51 -03:00
luis 1a856fa250 nalarak 2026-08-31 15:05:55 -03:00
Céfiro_Caecias 152ceba035 Rename 2026_08_31_00_hotfixes_delete_deprecated_tables.sql to 2026_08_31_00_characters_delete_deprecated_tables.sql 2026-08-31 15:00:37 -03:00
Céfiro_Caecias cf16897c53 DB/Characters: Delete Deprecated Tables 2026-08-31 14:59:26 -03:00
Céfiro_Caecias 3e899d35f4 DB/Auth: Delete Deprecated Tables 2026-08-31 14:58:35 -03:00
luis 15024ba9ba zulaman sniffs 2026-08-31 13:41:44 -03:00
Céfiro_Caecias 9d0e630a80 Delete sql/updates/world/master/2026_08_30_06_world_translates.sql 2026-08-30 22:00:57 -03:00
luis b013a9d817 typo 2026-08-30 20:44:53 -03:00
luis 86e7fa3f8a fix handler 2026-08-30 19:53:59 -03:00
luis 6e35522f5e Core/AreaTriggers: Remove wrong AreaTriggerCreatePropertiesFlag::HasFaceMovementDir implementation 2026-08-30 19:48:36 -03:00
luis b2ca290a6a Core/AreaTriggers: Remove loading AreaTriggerCreatePropertiesFlag::HasDynamicShape from database
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-30 18:17:55 -03:00
luis 78ea7e759c Core/AreaTriggers: Remove repeated m_values.ModifyValue(&AreaTrigger::m_areaTriggerData) expressions and fix formatting 2026-08-30 17:44:13 -03:00
Céfiro_Caecias bbeed0b22e DB/Hotfixes: Update Build 69497 2026-08-30 14:42:06 -03:00
Céfiro_Caecias 6f5df16e22 DB/World: Translates 2026-08-30 12:25:29 -03:00
Céfiro_Caecias 86a0451a2a DB/World: Updates 2026-08-30 11:45:18 -03:00
Céfiro_Caecias cdb29db793 DB/World: DBErrors 2026-08-30 10:17:03 -03:00
luis 27a40aaf7c eversong woods
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-30 04:40:47 -03:00
luis 225276e47e db error 2026-08-30 02:13:03 -03:00
luis 2402451c52 eversong woods and shadow enclave delve 2026-08-30 01:10:38 -03:00
luis 8ca04ff3f2 db errors
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-30 00:09:35 -03:00
luis e8d6ede207 midnight intro 2026-08-29 23:38:52 -03:00
luis cd9b1cd170 loa and elves lorewalking 2026-08-29 21:43:49 -03:00
luis 071571f82e Garrison: revert result SMSG (missed)
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-29 18:38:03 -03:00
luis fed78331af Core/Players: removed outdated class mask restriction from quest package item appearances 2026-08-29 17:24:37 -03:00
luis e42029064a Core/Players: also unlock the item appearance of quest package item rewards when possible 2026-08-29 17:23:40 -03:00
luis 7b786fac7a Core/Players: unlock the item appearance of unselected quest rewards as well when rewarding quests 2026-08-29 17:22:37 -03:00
luis fbf9df9340 lorewalking missing 2026-08-29 16:55:49 -03:00
luis 6a8229c449 lorewalking 2026-08-29 16:20:31 -03:00
luis 004f000cb8 lorewalking part 2 2026-08-29 15:26:51 -03:00
luis 33699df18c lorewalking storys 2026-08-29 13:35:42 -03:00
luis e76491e7ad arathi highlands 2026-08-29 12:58:20 -03:00
Céfiro_Caecias 2011fa2cfa DB/World: DBErrors 2026-08-29 10:42:31 -03:00
Céfiro_Caecias 763c785297 DB/Hotfixes: Item Sparse 2026-08-29 10:27:29 -03:00
luis b982ff4f5e sniff
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-28 23:06:40 -03:00
Céfiro_Caecias 0873a3cfaa DB/World: DBErrors
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-28 19:52:49 -03:00
luis 562f16a9a9 sniff 2026-08-28 19:13:04 -03:00
luis c62bdd24bd sniffs 2026-08-28 19:03:46 -03:00
luis e6b5088c90 db errors fix 2026-08-28 17:37:01 -03:00
luis fa0140724e 0 spells 2026-08-28 17:36:25 -03:00
luis 5b9ca922ad log 2026-08-28 16:26:05 -03:00
luis beaf00aaf9 spell_rog_grand_melee 2026-08-28 16:22:26 -03:00
luis 3336763952 fix 2026-08-28 16:20:32 -03:00
luis 2a295eb46b log 2026-08-28 16:16:12 -03:00
Céfiro_Caecias bc589754cc DB/World: DBErrors 2026-08-28 16:14:32 -03:00
Céfiro_Caecias 20df5c5627 DB/Hotfixes: Hotfix Blob 2026-08-28 16:01:13 -03:00
luis 576444f92b del 2026-08-28 15:30:44 -03:00
luis dc32733fdb typo 2026-08-28 15:28:11 -03:00
luis 8e124a8d22 remove 2026-08-28 15:19:41 -03:00
luis 0ab9a2c3a8 log 2026-08-28 14:43:05 -03:00
luis fda1b3138d server logs 2026-08-28 14:27:05 -03:00
luis ac9d670a39 m+ fixed i will up sql later 2026-08-28 13:46:00 -03:00
luis 449d29fb6b locales 2026-08-28 11:37:44 -03:00
luis 212ba4f556 DB/Hotfixes: Updated esMX hotfixes to 12.1.0.69497 2026-08-28 11:34:03 -03:00
luis 01c7902190 DB/Hotfixes: Updated esES hotfixes to 12.1.0.69497 2026-08-28 11:33:02 -03:00
luis dfee46db91 DB/Hotfixes: Updated deDE hotfixes to 12.1.0.69497 2026-08-28 11:30:49 -03:00
luis 85ce0f3d1b ChallengeModeMgr.h: include Optional.h explicitly (no-PCH build) 2026-08-28 11:28:54 -03:00
luis 62a1e63397 DB/Hotfixes: Updated hotfixes to 12.1.0.69497 2026-08-28 11:25:59 -03:00
luis 125a8b90cf Core/PacketIO: Implement missing packet fields 2026-08-28 11:21:30 -03:00
luis 85dea75e98 Core/Creatures: renamed IsSwimPrevented back to CanOnlySwimIfTargetSwims 2026-08-27 23:56:04 -03:00
luis bc064c5d5f Core/Creatures: fixed creature aggro radius calculation 2026-08-27 23:55:21 -03:00
luis ee65f0f429 Core/Creatures: correct behavior for enabling swimming for creatures on ocean floors 2026-08-27 23:53:38 -03:00
luis bf8c64bbd8 Core/Units: always set UNIT_FLAG_PET_IN_COMBAT even if there are no summons to match retail behavior 2026-08-27 23:12:49 -03:00
luis bf724e80aa Core/LFG: fixed displaying the first lfg reward in lfg window 2026-08-27 23:10:19 -03:00
luis 8097d59efd Core/Units: removed level based resistance calculation because it was no longer used in Cataclysm 2026-08-27 23:09:22 -03:00
luis 55971ed00b Core/PacketIO: Fix more packet structures for 12.1.0 2026-08-27 17:44:14 -03:00
Céfiro_Caecias 83f9701705 DB/World: DBErrors 2026-08-27 13:36:52 -03:00
Céfiro_Caecias 4c63b5b47b Update README.md 2026-08-27 08:34:25 -03:00
luis 1c2bc18cfd 69497
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-26 21:16:49 -03:00
luis 26936bff82 spell 2026-08-26 03:53:38 -03:00
luis f98c1122d0 server log db2 fix 2026-08-26 03:45:26 -03:00
luis 399239a89c spell
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-26 00:51:30 -03:00
luis 70ec10f139 +++
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-25 18:49:09 -03:00
luis 93d03b6b90 spell 2026-08-25 18:45:22 -03:00
luis bb03b85ca7 fix spell part 1 2026-08-24 18:56:43 -03:00
luis c92cdbcb77 old spells 2026-08-24 16:57:15 -03:00
luis c78685b766 Fix spell effect 2026-08-24 16:54:02 -03:00
luis 55510bb9dd Core/PacketIO: Fix SMSG_INSPECT_RESULT structure
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-23 17:58:59 -03:00
luis ff6a81c560 Core/PacketIO: Fix SMSG_UPDATE_OBJECT structure 2026-08-23 17:57:49 -03:00
luis 9dc75212c9 Revert "Fix mem leak is caused by shop disable shop"
This reverts commit d3bf90c301.
2026-08-23 16:30:22 -03:00
Céfiro_Caecias 3a342b8bb0 DB/World: DBErrors 2026-08-23 12:35:03 -03:00
luis 6a16edffc8 spell
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-23 08:26:35 -03:00
luis d3bf90c301 Fix mem leak is caused by shop disable shop 2026-08-23 08:24:02 -03:00
luis 659cbe34e1 ++ 2026-08-23 07:37:18 -03:00
luis 658d3078b8 ++ 2026-08-23 07:34:14 -03:00
luis 085bdd4970 ++ 2026-08-23 07:10:53 -03:00
luis 3ed012ee18 spell 2026-08-23 07:08:14 -03:00
luis 9e833b3965 fix 2026-08-23 06:53:09 -03:00
luis 7cbe1e1659 del 2026-08-23 06:43:08 -03:00
luis e8ffaf233f ++ 2026-08-23 06:38:42 -03:00
luis c8155e6fa4 server log fixes 2026-08-23 06:32:33 -03:00
luis ecb3d5c978 ++ 2026-08-23 06:22:17 -03:00
luis f2e9404db3 remove not need script 2026-08-23 06:16:54 -03:00
luis ce99d17248 2 more spells 2026-08-23 06:10:49 -03:00
luis 0ef46f27aa old spell 2026-08-23 06:02:12 -03:00
luis 8054a7ebe1 update spell 12.1 2026-08-23 05:57:23 -03:00
luis e3408213ed packet 2026-08-23 05:45:41 -03:00
luis de2a5a54b2 feat(commentator): populate player-info arrays B (charges), C (auras), D (tracked ids) 2026-08-23 05:35:45 -03:00
luis 0f0f2e7c3a old impl 2026-08-23 05:34:24 -03:00
luis 0210a458d1 spell_pri_vampiric_embrace and commentator update 2026-08-23 05:25:19 -03:00
luis 10ff17738e fix log 2026-08-23 05:16:20 -03:00
luis 57c781c979 fix 2026-08-23 05:00:24 -03:00
luis 4fd2295655 criteria: move the known TimeEvent table out of ModifierSatisfied into TimeEvents 2026-08-23 04:44:59 -03:00
luis 83e85478f5 server log fix spell 2026-08-23 04:35:02 -03:00
luis 6e9fb70ca3 update 2026-08-23 04:18:13 -03:00
luis 1422bcf1ca db error 2026-08-23 04:07:37 -03:00
luis ab5d1a5946 item 2026-08-23 03:31:32 -03:00
luis 0be1a35260 db errors 2026-08-23 03:27:51 -03:00
luis 93b939a462 item fix 2026-08-23 02:53:34 -03:00
1058 changed files with 461723 additions and 156313 deletions
-170
View File
@@ -1,170 +0,0 @@
# =============================================================================
# TrinityCore Playerbot - Environment Variables Template
# =============================================================================
# Copy this file to .env and fill in your actual values
# NEVER commit the .env file to git!
# =============================================================================
# -----------------------------------------------------------------------------
# GitHub Integration
# -----------------------------------------------------------------------------
# Create a Personal Access Token at: https://github.com/settings/tokens
# Required scopes: repo, workflow, write:packages
GITHUB_TOKEN=ghp_your_github_personal_access_token_here
# Repository information
GITHUB_REPO_OWNER=TrinityCore
GITHUB_REPO_NAME=TrinityCore
GITHUB_BRANCH=playerbot-dev
# -----------------------------------------------------------------------------
# Database Access (Trinity MySQL Databases)
# -----------------------------------------------------------------------------
# MySQL connection for trinity-database MCP
TRINITY_DB_HOST=localhost
TRINITY_DB_PORT=3306
TRINITY_DB_USER=trinity
TRINITY_DB_PASSWORD=your_mysql_password_here
# Database names
TRINITY_DB_AUTH=trinity_auth
TRINITY_DB_CHARACTERS=trinity_characters
TRINITY_DB_WORLD=trinity_world
# -----------------------------------------------------------------------------
# MCP Authentication
# -----------------------------------------------------------------------------
# Serena MCP authentication token (OPTIONAL - only needed for token estimation features)
# Serena works without this - it's just a "nice to have" for advanced features
# Leave empty or remove line if not using token estimation
SERENA_AUTH_TOKEN=
# Context7 API key (OPTIONAL - only if you have a paid plan)
# Context7 has a generous free tier that works without API key
CONTEXT7_API_KEY=
# -----------------------------------------------------------------------------
# TrinityCore Paths
# -----------------------------------------------------------------------------
TRINITY_ROOT=C:\TrinityBots\TrinityCore
TRINITY_BUILD_DIR=C:\TrinityBots\TrinityCore\build
TRINITY_SERVER_DIR=C:\TrinityBots\Server
WORLDSERVER_PATH=C:\TrinityBots\Server\bin\worldserver.exe
BNETSERVER_PATH=C:\TrinityBots\Server\bin\bnetserver.exe
# -----------------------------------------------------------------------------
# Build Configuration
# -----------------------------------------------------------------------------
CMAKE_BUILD_TYPE=RelWithDebInfo
BOOST_ROOT=C:\boost_1_84_0
OPENSSL_ROOT_DIR=C:\libs\openssl
MYSQL_ROOT_DIR=C:\Program Files\MySQL\MySQL Server 8.0
# Compiler settings
MSVC_VERSION=2022
CMAKE_GENERATOR=Ninja
# Build parallelism
BUILD_PARALLEL_JOBS=8
# -----------------------------------------------------------------------------
# Notification Services (Optional)
# -----------------------------------------------------------------------------
# Email notifications via SMTP
SMTP_ENABLED=false
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USE_TLS=true
SMTP_USERNAME=[email protected]
SMTP_PASSWORD=your_app_specific_password
SMTP_FROM=[email protected]
SMTP_TO=[email protected]
# Slack notifications
SLACK_ENABLED=false
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
SLACK_CHANNEL=#playerbot-dev
SLACK_USERNAME=PlayerBot CI
# Discord notifications
DISCORD_ENABLED=false
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR/WEBHOOK/URL
DISCORD_USERNAME=PlayerBot CI
# -----------------------------------------------------------------------------
# Automation Configuration
# -----------------------------------------------------------------------------
# Auto-fix behavior
AUTO_FIX_ENABLED=true
AUTO_FIX_CRITICAL=true
AUTO_FIX_HIGH=false
AUTO_FIX_MEDIUM=false
# Review frequency
DAILY_REVIEW_TIME=18:00
NIGHTLY_REVIEW_TIME=02:00
# Performance thresholds
MAX_BUILD_TIME_MINUTES=60
MAX_REVIEW_TIME_MINUTES=120
MAX_MEMORY_PER_BOT_MB=10
MAX_CPU_PER_BOT_PERCENT=0.5
# -----------------------------------------------------------------------------
# Security Configuration
# -----------------------------------------------------------------------------
# Dependency scanning
DEPENDENCY_SCAN_ENABLED=true
CVE_CHECK_ENABLED=true
CVE_MIN_SEVERITY=high
# Code scanning
SAST_ENABLED=true
SECRET_SCANNING_ENABLED=true
# -----------------------------------------------------------------------------
# Monitoring & Metrics
# -----------------------------------------------------------------------------
# Metrics collection
METRICS_ENABLED=true
METRICS_RETENTION_DAYS=90
# Performance profiling
PROFILING_ENABLED=true
PROFILING_TOOL=valgrind
# -----------------------------------------------------------------------------
# Development Settings
# -----------------------------------------------------------------------------
# Debug mode
DEBUG_MODE=false
VERBOSE_LOGGING=false
# Cache settings
CACHE_ENABLED=true
CACHE_TTL_HOURS=4
# Parallel execution
MAX_PARALLEL_AGENTS=6
AGENT_TIMEOUT_SECONDS=300
# -----------------------------------------------------------------------------
# Custom MCP Settings
# -----------------------------------------------------------------------------
# TrinityCore MCP Server
TRINITY_MCP_PORT=3000
TRINITY_MCP_HOST=localhost
# DBC/DB2 file paths
DBC_PATH=M:\Wplayerbot\data\dbc\enUS
DB2_PATH=M:\Wplayerbot\data\dbc\enUS
# GameTable (GT) file path
GT_PATH=M:\Wplayerbot\data\gt
# =============================================================================
# Notes:
# - Replace all placeholder values with your actual credentials
# - Keep this file secure and never commit to version control
# - Add .env to .gitignore if not already present
# =============================================================================
-180
View File
@@ -1,180 +0,0 @@
name: Build (Windows x64)
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
workflow_dispatch:
jobs:
build:
runs-on: windows-2022
env:
CMAKE_BUILD_TYPE: RelWithDebInfo
MYSQL_ROOT_DIR: C:/Program Files/MySQL/MySQL Server 8.0
OPENSSL_ROOT_DIR: C:/libs/openssl
steps:
- uses: actions/checkout@v7
- name: Get current OpenSSL version
id: openssl-info
run: |
$VersionsUrl = "https://api.github.com/repos/slproweb/opensslhashes/contents/win32_openssl_hashes.json"
$Headers = @{
Accept="application/vnd.github.raw+json"
Authorization="Bearer ${{ secrets.GITHUB_TOKEN }}"
}
$openSSL = (Invoke-RestMethod $VersionsUrl -Headers $Headers).files.PSObject.Properties |
Select-Object -ExpandProperty Value |
Where-Object { $_.arch -eq 'INTEL' } |
Where-Object { $_.bits -eq '64' } |
Where-Object { $_.light -eq $false } |
Where-Object { $_.installer -eq 'exe' } |
Sort-Object -Descending @{ Expression = { [version]$_.basever } } |
Select-Object -First 1
[System.String]::Format("cache-key=openssl-{0}-win-{1}-{2}", $openSSL.basever, $openSSL.arch, $openSSL.bits) >> $env:GITHUB_OUTPUT
[System.String]::Format("url={0}", $openSSL.url) >> $env:GITHUB_OUTPUT
- name: Cache OpenSSL
id: cache-openssl
uses: actions/cache@v6
with:
path: ${{ env.OPENSSL_ROOT_DIR }}
key: ${{ steps.openssl-info.outputs.cache-key }}
- name: Download and install OpenSSL 3.x
if: ${{ steps.cache-openssl.outputs.cache-hit != 'true' }}
run: |
(New-Object System.Net.WebClient).DownloadFile("${{ steps.openssl-info.outputs.url }}", "${{ env.TEMP }}\openssl.exe")
Start-Process -Wait -FilePath "${{ env.TEMP }}\openssl.exe" "/SILENT","/SP-","/SUPPRESSMSGBOXES",/DIR=${{ env.OPENSSL_ROOT_DIR }}
# Quick OpenSSL install test
& ${{ env.OPENSSL_ROOT_DIR }}/bin/openssl.exe version
- name: Download and install Boost
uses: MarkusJx/install-boost@v2
id: install-boost
with:
boost_version: 1.89.0
link: static
platform_version: 2022
toolset: msvc
- name: Configure CMake
env:
BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }}
OPENSSL_ROOT_DIR: C:/libs/openssl
run: >
cmake -S ${{ github.workspace }} -B build -G"Visual Studio 17 2022" -A x64
-DSCRIPTS=static
-DWITH_WARNINGS_AS_ERRORS=OFF
-DTOOLS=ON
- name: Build
run: >
cmake --build build --config RelWithDebInfo
- name: Copy Dependencies
shell: pwsh
run: |
cd build/bin/${{ env.CMAKE_BUILD_TYPE }}
Copy-Item "${{ env.MYSQL_ROOT_DIR }}/lib/libmysql.dll" .
# mysql may depend on a different version of openssl so copy its dlls first (override later with openssl's own if same version)
Copy-Item "${{ env.MYSQL_ROOT_DIR }}/bin/libcrypto-3-x64.dll" . -ErrorAction SilentlyContinue
Copy-Item "${{ env.MYSQL_ROOT_DIR }}/bin/libssl-3-x64.dll" . -ErrorAction SilentlyContinue
Copy-Item "${{ env.OPENSSL_ROOT_DIR }}/bin/libcrypto-3-x64.dll" . -ErrorAction SilentlyContinue
Copy-Item "${{ env.OPENSSL_ROOT_DIR }}/bin/libssl-3-x64.dll" . -ErrorAction SilentlyContinue
Copy-Item "${{ env.OPENSSL_ROOT_DIR }}/bin/legacy.dll" . -ErrorAction SilentlyContinue
Copy-Item "${{ env.MYSQL_ROOT_DIR }}/bin/zlib1.dll" . -ErrorAction SilentlyContinue
- name: Check binaries
shell: pwsh
run: |
cd build/bin/${{ env.CMAKE_BUILD_TYPE }}
foreach ($exe in @("bnetserver.exe", "worldserver.exe"))
{
if (-not (Test-Path $exe)) { Write-Error "Missing binary: $exe"; exit 1 }
if ((Get-Item $exe).Length -lt 1MB) { Write-Error "Suspiciously small binary: $exe"; exit 1 }
}
Write-Output "Required binaries present. Version smoke test (may fail to start in the ephemeral runner DLL env):"
cmd.exe /c "bnetserver.exe --version" 2>&1 | ForEach-Object { Write-Output " bnetserver: $_" }
cmd.exe /c "worldserver.exe --version" 2>&1 | ForEach-Object { Write-Output " worldserver: $_" }
Get-ChildItem *.dll | ForEach-Object { Write-Output " $($_.Name) ($($_.Length) bytes)" }
Write-Output "Binary + package validation passed."
exit 0
- name: Create zip
shell: pwsh
run: |
cd build/bin
7z a TrinityCoreWin64VS2022.zip .\RelWithDebInfo\* | Out-Null
Remove-Item RelWithDebInfo\*.pdb
7z a TrinityCoreWin64VS2022NoSymbols.zip .\RelWithDebInfo\* | Out-Null
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: TrinityCoreWin64VS2022
path: build/bin/TrinityCoreWin64VS2022.zip
if-no-files-found: error
- name: Upload Artifacts (NoSymbols)
uses: actions/upload-artifact@v7
with:
name: TrinityCoreWin64VS2022NoSymbols
path: build/bin/TrinityCoreWin64VS2022NoSymbols.zip
if-no-files-found: error
linux-build:
runs-on: ubuntu-24.04
env:
CMAKE_BUILD_TYPE: RelWithDebInfo
steps:
- uses: actions/checkout@v7
- name: Dependencies
run: |
sudo apt-get update
sudo apt-get install -yq \
ninja-build \
pkg-config \
libboost-all-dev \
libssl-dev \
libreadline-dev \
zlib1g-dev \
libbz2-dev \
default-libmysqlclient-dev \
default-mysql-client
- name: Configure CMake
run: >
cmake -GNinja -S ${{ github.workspace }} -B build-linux
-DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }}
-DSCRIPTS=static
-DWITH_WARNINGS_AS_ERRORS=OFF
-DTOOLS=ON
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install
- name: Build
run: >
cmake --build build-linux
- name: Check binaries
run: |
cmake --install build-linux
cd ${{ github.workspace }}/install/bin
./bnetserver --version
./worldserver --version
- name: Create tar.gz
run: |
cd ${{ github.workspace }}
tar -czf TrinityCoreLinux64.tar.gz -C install .
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: TrinityCoreLinux64
path: TrinityCoreLinux64.tar.gz
if-no-files-found: error
-30
View File
@@ -23,33 +23,3 @@ nbproject/*
cmake-build-*/*
.vs
*.user
.aider*
# Build artifacts and logs
*.exe
*.log
build_*.txt
build_*.bat
worldserver_*.exe
*_build.log
*_output.txt
final_*.txt
test_*.bat
# Python temporary files
*.tmp.*
*.pyc
__pycache__/
# SQL dumps and temporary data
*.sql.backup
# Claude Code Enhancement - Environment variables (contains secrets)
.env
.env.local
# Playerbot vendored dependencies (tracked via git submodules)
# Git automatically manages submodule contents via .gitmodules
# build*/ pattern above catches TBB build artifacts
phase7a-compile-log.txt
-6
View File
@@ -1,6 +0,0 @@
[submodule "src/modules/Playerbot/deps/phmap"]
path = src/modules/Playerbot/deps/phmap
url = https://github.com/greg7mdp/parallel-hashmap.git
[submodule "src/modules/Playerbot/deps/tbb"]
path = src/modules/Playerbot/deps/tbb
url = https://github.com/oneapi-src/oneTBB.git
+1 -1
View File
@@ -86,7 +86,7 @@ add_subdirectory(src)
include(CTest)
if(BUILD_TESTING)
list(APPEND CMAKE_MODULE_PATH
"${Catch2_SOURCE_DIR}/extras")
"${Catch2_SOURCE_DIR}/contrib")
include(Catch)
add_subdirectory(tests)
+23
View File
@@ -0,0 +1,23 @@
# This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# This file is run right before CMake starts configuring the sourcetree
# Example: Force CMAKE_INSTALL_PREFIX to be preloaded with something before
# doing the actual first "configure"-part - allows for hardforcing
# destinations elsewhere in the CMake buildsystem (commented out on purpose)
# Override CMAKE_INSTALL_PREFIX on Windows platforms
#if(WIN32)
# if(NOT CYGWIN)
# set(CMAKE_INSTALL_PREFIX
# "" CACHE PATH "Default install path")
# endif()
#endif()
+2 -18
View File
@@ -1,22 +1,6 @@
# Introduction:
WowCommunity Project is a World of Warcraft blizzlike design based on TrinityCore, which is based on the Midnight Expansion version 12.1.0.69404.
# CI Status:
[![Build status](https://github.com/Thordekk/WowCommunityProject/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/Thordekk/WowCommunityProject/actions/workflows/build.yml)
# Downloads:
- [Windows x64 (con símbolos)](https://github.com/Thordekk/WowCommunityProject/actions/workflows/build.yml)
- [Windows x64 (sin símbolos)](https://github.com/Thordekk/WowCommunityProject/actions/workflows/build.yml)
- [Linux x64](https://github.com/Thordekk/WowCommunityProject/actions/workflows/build.yml)
Los artefactos se encuentran al final de cada ejecución en la pestaña Actions → build → Artifacts.
WowCommunity Project is a World of Warcraft blizzlike design based on TrinityCore, which is based on the Midnight Expansion version 12.1.0.69933.
# Developers:
@@ -38,7 +22,7 @@ Los artefactos se encuentran al final de cada ejecución en la pestaña Actions
01c.- [Windows Desktop Runtime v.9.0.13 x64](https://dotnet.microsoft.com/es-es/download/dotnet/thank-you/runtime-desktop-9.0.13-windows-x64-installer)
02.- [Visual Studio Community 2022 v.17.14.38](https://www.junian.net/dev/visual-studio-community-download-links/)
02.- [Visual Studio Community 2022 v.17.14.41](https://www.junian.net/dev/visual-studio-community-download-links/)
03a.- [Python v.3.15.0a6 x64](https://www.python.org/downloads/)
+1 -1
View File
@@ -11,7 +11,7 @@ build_script:
- cmd: >-
git config user.email "[email protected]" && git config user.name "AppVeyor"
cmake -S . -B .\build -G"Visual Studio 17 2022" -A x64 -DSCRIPTS=dynamic -DWITH_WARNINGS_AS_ERRORS=OFF -DTOOLS=ON
cmake -S . -B .\build -G"Visual Studio 17 2022" -A x64 -DSCRIPTS=dynamic -DWITH_WARNINGS_AS_ERRORS=ON -DTOOLS=ON
cd build
+2
View File
@@ -64,7 +64,9 @@ target_sources(g3dlib
include/G3D/AABox.h
include/G3D/BoundsTrait.h
include/G3D/Box.h
include/G3D/CollisionDetection.h
include/G3D/CoordinateFrame.h
include/G3D/Cylinder.h
include/G3D/g3dmath.h
include/G3D/Matrix3.h
include/G3D/Matrix4.h
+3
View File
@@ -31,3 +31,6 @@ G3D-v9.0 hotfix18.diff - 2024-02-17 - ARM64 support on MSVC
G3D-v9.0 hotfix19.diff - 2024-06-09 - clang build fix on windows
G3D-v9.0 hotfix20.diff - 2026-05-07 - gcc build fix on windows
G3D-v9.0 hotfix21.diff - 2026-05-07 - gcc 16 warning fix
G3D-v9.0 hotfix22.diff - 2026-09-06 - Remove unused data members from G3D::Ray
G3D-v9.0 hotfix23.diff - 2026-09-06 - Make G3D::Plane destructor not virtual
G3D-v9.0 hotfix24.diff - 2026-09-06 - Add direct yaw/pitch/roll conversions to G3D::Quat
-2
View File
@@ -78,8 +78,6 @@ public:
void serialize(class BinaryOutput& b) const;
void deserialize(class BinaryInput& b);
virtual ~Plane() {}
/**
Returns true if point is on the side the normal points to or
is in the plane.
+4
View File
@@ -214,6 +214,10 @@ public:
void toRotationMatrix(
Matrix3& rot) const;
static Quat fromYPRAngles(float fYAngle, float fPAngle, float fRAngle);
void toYPRAngles(float& fYAngle, float& fPAngle, float& fRAngle) const;
private:
/** \param maxAngle Maximum angle of rotation allowed. If a larger rotation is required, the angle of rotation applied is clamped to maxAngle */
Quat slerp
+2
View File
@@ -34,6 +34,7 @@ private:
Vector3 m_invDirection;
#if 0
/** The following are for the "ray slope" optimization from
"Fast Ray / Axis-Aligned Bounding Box Overlap Tests using Ray Slopes"
by Martin Eisemann, Thorsten Grosch, Stefan Müller and Marcus Magnor
@@ -48,6 +49,7 @@ private:
/** Precomputed components */
float c_xy, c_xz, c_yx, c_yz, c_zx, c_zy;
#endif
public:
/** \param direction Assumed to have unit length */
+20
View File
@@ -160,6 +160,26 @@ void Quat::toRotationMatrix(
rot = Matrix3(*this);
}
Quat Quat::fromYPRAngles(float fYAngle, float fPAngle, float fRAngle)
{
float angles[3] = { fRAngle * 0.5f, fPAngle * 0.5f, fYAngle * 0.5f };
float s[3] = { sinf(angles[0]), sinf(angles[1]), sinf(angles[2]) };
float c[3] = { cosf(angles[0]), cosf(angles[1]), cosf(angles[2]) };
return Quat(
s[0] * c[1] * c[2] - c[0] * s[1] * s[2],
c[0] * s[1] * c[2] + s[0] * c[1] * s[2],
c[0] * c[1] * s[2] - s[0] * s[1] * c[2],
c[0] * c[1] * c[2] + s[0] * s[1] * s[2]
);
}
void Quat::toYPRAngles(float& fYAngle, float& fPAngle, float& fRAngle) const
{
fYAngle = atan2f(2.0f * (w * z + x * y), 1.0f - 2.0f * (y * y + z * z));
fPAngle = asinf(clamp(2.0f * (w * y - z * x), -1.0f, 1.0f));
fRAngle = atan2f(2.0f * (w * x + y * z), 1.0f - 2.0f * (x * x + y * y));
}
Quat Quat::slerp
(const Quat& _quat1,
+2
View File
@@ -22,6 +22,7 @@ void Ray::set(const Vector3& origin, const Vector3& direction) {
m_invDirection = Vector3::one() / direction;
#if 0
// ray slope
ibyj = m_direction.x * m_invDirection.y;
jbyi = m_direction.y * m_invDirection.x;
@@ -120,6 +121,7 @@ void Ray::set(const Vector3& origin, const Vector3& direction) {
}
}
}
#endif
}
Binary file not shown.
+2 -2
View File
@@ -40,8 +40,8 @@
// Database updater base information
#define DATABASE_MYSQL_EXECUTABLE R"(@MYSQL_EXECUTABLE@)"
#define DATABASE_FULL_DATABASE "TDB_full_world_1127.26011_2026_01_14.sql"
#define DATABASE_HOTFIXES_DATABASE "TDB_full_hotfixes_1127.26011_2026_01_14.sql"
#define DATABASE_FULL_DATABASE "TDB_full_world_1125.25101_2025_10_29.sql"
#define DATABASE_HOTFIXES_DATABASE "TDB_full_hotfixes_1125.25101_2025_10_29.sql"
// Windows resource defines
#define TRINITY_COMPANYNAME_STR "TrinityCore Developers"
@@ -1,23 +0,0 @@
DELETE FROM `build_info` WHERE `build` IN (68974);
INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES
(68974,12,0,7,NULL);
DELETE FROM `build_auth_key` WHERE `build`=68974 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=68974 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=68974 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=68974 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=68974 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=68974 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=68974 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC';
INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES
(68974,'Mac','A64','WoW',0x85DD40DEE35AB993417DB525B6B77A29),
(68974,'Mac','A64','WoWC',0xFC4DCA5DF2E85C3ECC29B7A378320BBB),
(68974,'Mac','x64','WoW',0x731561ADB563C0DF0FADC297F58EB6B1),
(68974,'Mac','x64','WoWC',0xC45758865E9D79B0AC35B489C0C69891),
(68974,'Win','A64','WoW',0x940DD79F8BF0EEA09A5EAE8200411D50),
(68974,'Win','x64','WoW',0xF76807CCEA2336A3973D3D33EDEF7B76),
(68974,'Win','x64','WoWC',0xE6091ECC24198181EFB2385B83EFD729);
UPDATE `realmlist` SET `gamebuild`=68974 WHERE `gamebuild`=68887;
ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '68974';
@@ -1,10 +0,0 @@
DELETE FROM `rbac_permissions` WHERE `id` IN (886,887);
INSERT INTO `rbac_permissions` (`id`,`name`) VALUES
(1001,'Command: reload shop_catalog'),
(1002,'Command: shop');
DELETE FROM `rbac_linked_permissions` WHERE `linkedId` IN (886,887);
INSERT INTO `rbac_linked_permissions` (`id`,`linkedId`) VALUES
(196,1001),
(197,1002);
@@ -1,19 +0,0 @@
--
-- In-game Shop / BattlePay purchase ledger (account level). Shared home for BOTH the WoW Token branch
-- and the in-game Shop branch: it answers CMSG_BATTLE_PAY_GET_PURCHASE_LIST from real history and gives
-- purchases a PurchaseID that survives restarts. The PurchaseID (`id`) is allocated with the realm id in
-- its high 32 bits so two realms sharing this auth DB never collide.
DROP TABLE IF EXISTS `account_battlepay_purchase`;
CREATE TABLE `account_battlepay_purchase` (
`id` bigint unsigned NOT NULL COMMENT 'Persistent monotonic PurchaseID sent on the wire; high 32 bits = realm id',
`account` int unsigned NOT NULL DEFAULT '0' COMMENT 'Owning game account',
`productId` int unsigned NOT NULL DEFAULT '0' COMMENT '0 is a VALID value (e.g. web-checkout purchases)',
`status` int NOT NULL DEFAULT '0' COMMENT 'BattlepayPurchaseStatus: 6 = done, 4 = failed',
`resultCode` int NOT NULL DEFAULT '0' COMMENT 'PurchaseResult: 0 = ok',
`basePrice` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Copper',
`userPrice` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Copper',
`timeCreated` bigint NOT NULL DEFAULT '0' COMMENT 'Unix seconds',
`walletName` varchar(32) NOT NULL DEFAULT '' COMMENT 'Wallet label; empty on this core, sent record-final',
PRIMARY KEY (`id`),
KEY `idx_account` (`account`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='In-game Shop / BattlePay purchase ledger';
@@ -1,43 +0,0 @@
--
-- In-game Shop / BattlePay entitlement ("distribution") store, account level.
--
-- An entitlement is a purchased-but-not-yet-applied product: the retail "own it now, apply it later"
-- model that backs buying at character select and every service product (boost, rename, faction/race
-- change, transfer) whose grant targets a character chosen AFTER the purchase.
--
-- It lives in the AUTH database for the same reason `account_battlepay_purchase` does: the Shop opens
-- at character select, where no character database context exists yet, and an entitlement is owned by
-- the ACCOUNT, not by a character or a realm. `id` doubles as the wire DistributionID and is allocated
-- with the realm id in its high 32 bits so two realms sharing this auth DB never collide, exactly like
-- the purchase ledger's PurchaseID.
--
-- Lifecycle (see BattlePayEntitlements in BattlePayMgr.h):
-- 1 AVAILABLE - owned, unassigned. The only status ever sent to the client (the sole value observed
-- on the wire, 68275 capture).
-- 2 CLAIMED - transient: an assign is in flight and has won the compare-and-swap on `claimToken`.
-- 3 BOUND - assigned to `targetCharacter` on `realmId`; the payload is delivered the next time
-- that character logs in.
-- 4 FINISHED - delivered; terminal.
-- 5 REVOKED - withdrawn by an admin / refunded; terminal.
--
-- `claimToken` is what makes assignment safe against a replay or a second realm: the claiming session
-- writes a random token together with status 2 under a `status = 1` guard, then reads the row back and
-- proceeds only if ITS token survived. Two racing assigns can therefore never both succeed, without
-- needing an affected-rows count.
DROP TABLE IF EXISTS `account_battlepay_entitlement`;
CREATE TABLE `account_battlepay_entitlement` (
`id` bigint unsigned NOT NULL COMMENT 'DistributionID sent on the wire; high 32 bits = realm id',
`account` int unsigned NOT NULL DEFAULT '0' COMMENT 'Owning game account',
`productId` int unsigned NOT NULL DEFAULT '0' COMMENT 'shop_product.productId this entitlement grants',
`serviceType` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '0 = deferred delivery of the product payload; else the VAS service type from shop_product_deliverable.id where type = 5',
`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '1 available, 2 claimed, 3 bound to a character, 4 finished, 5 revoked',
`purchaseId` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'account_battlepay_purchase.id that created this entitlement',
`claimToken` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Compare-and-swap token held by the session currently assigning this entitlement',
`realmId` int unsigned NOT NULL DEFAULT '0' COMMENT 'Realm the target character lives on; 0 while unassigned',
`targetCharacter` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Character guid counter it was assigned to; 0 while unassigned',
`createTime` bigint NOT NULL DEFAULT '0' COMMENT 'Unix seconds',
`updateTime` bigint NOT NULL DEFAULT '0' COMMENT 'Unix seconds of the last status change',
PRIMARY KEY (`id`),
KEY `idx_account_status` (`account`, `status`),
KEY `idx_pending_delivery` (`realmId`, `targetCharacter`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='In-game Shop / BattlePay entitlements (distributions)';
@@ -1,13 +0,0 @@
--
-- WoW Token holdings and token market listings (account level, queried at character select).
DROP TABLE IF EXISTS `account_wow_token`;
CREATE TABLE `account_wow_token` (
`id` bigint unsigned NOT NULL COMMENT 'Token id sent to the client',
`account` int unsigned NOT NULL DEFAULT '0' COMMENT 'Owning account, 0 while listed on the market',
`state` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '0 Auctionable, 1 Consumable, 2 Listed on the market',
`price` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Copper, only meaningful while state = 2',
`createTime` bigint NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_account` (`account`),
KEY `idx_state` (`state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='WoW Token holdings and market listings';
@@ -1,7 +0,0 @@
--
-- WoW Token market: record the character that listed a token so its sale proceeds can be mailed to them
-- when the listing is bought (feature/wow-token B3: sell / buy / redeem legs).
ALTER TABLE `account_wow_token`
ADD COLUMN `seller_guid` bigint unsigned NOT NULL DEFAULT '0'
COMMENT 'Character lowguid that listed the token; receives the sale proceeds by mail'
AFTER `createTime`;
@@ -1,23 +0,0 @@
DELETE FROM `build_info` WHERE `build` IN (69404);
INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES
(69404,12,1,0,NULL);
DELETE FROM `build_auth_key` WHERE `build`=69404 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69404 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=69404 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69404 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=69404 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69404 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69404 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC';
INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES
(69404,'Mac','A64','WoW',0xBDA04532B8ADFC14EB0303A039BF7048),
(69404,'Mac','A64','WoWC',0x77C294D2234949A948354CD87CF8EC48),
(69404,'Mac','x64','WoW',0x90AC968F93FD22006D841AECA9238FAF),
(69404,'Mac','x64','WoWC',0xA44B02A5B1B1C180856DAB378492ED45),
(69404,'Win','A64','WoW',0xDB4BB15219663DA52CBF361EFD2E6553),
(69404,'Win','x64','WoW',0xB86BE5F3F07C24ACB8EA41D76E0702FC),
(69404,'Win','x64','WoWC',0x4FE59E2D64FABB732B5864EF37300FFE);
UPDATE `realmlist` SET `gamebuild`=69404 WHERE `gamebuild`=68974;
ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '69404';
@@ -0,0 +1,23 @@
DELETE FROM `build_info` WHERE `build` IN (69587);
INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES
(69587,12,1,0,NULL);
DELETE FROM `build_auth_key` WHERE `build`=69587 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69587 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=69587 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69587 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=69587 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69587 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69587 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC';
INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES
(69587,'Mac','A64','WoW',0x7FA9BFC62ACCD945E65A523ACC1F5EDE),
(69587,'Mac','A64','WoWC',0x352327CB18DFF32F75337C368E6F07EA),
(69587,'Mac','x64','WoW',0x1360FA09EC48BBACF779FD8BFCD5979F),
(69587,'Mac','x64','WoWC',0xE22AD5AF37CB1E02A0C8A8A3CC80D950),
(69587,'Win','A64','WoW',0x1D301623C394178B5BBC90BF0CC2468D),
(69587,'Win','x64','WoW',0xEE9E0616CA2E563E9903A519573599CF),
(69587,'Win','x64','WoWC',0x8CD796511F75479A66E6BCE3F1D7BF31);
UPDATE `realmlist` SET `gamebuild`=69587 WHERE `gamebuild`=69497;
ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '69587';
@@ -0,0 +1,23 @@
DELETE FROM `build_info` WHERE `build` IN (69814);
INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES
(69814,12,1,0,NULL);
DELETE FROM `build_auth_key` WHERE `build`=69814 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69814 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=69814 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69814 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=69814 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69814 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69814 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC';
INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES
(69814,'Mac','A64','WoW',0xD497A69BF6FB25BE54AE23E41A1AFA6E),
(69814,'Mac','A64','WoWC',0x9694CB1E8B652A07C776A30220393858),
(69814,'Mac','x64','WoW',0xFCD40D024C0EE8F8207F60593D41DD91),
(69814,'Mac','x64','WoWC',0xC278DA09AFA8C593143A2E2583F904A9),
(69814,'Win','A64','WoW',0x7EEA3C940FC8A5314EAD50E5C627A530),
(69814,'Win','x64','WoW',0x534805439760F1DD48DD1B68DFE03AC7),
(69814,'Win','x64','WoWC',0x21F435C122C5FD68B5DB3BC2D903AA1B);
UPDATE `realmlist` SET `gamebuild`=69814 WHERE `gamebuild`=69587;
ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '69814';
@@ -0,0 +1 @@
ALTER TABLE `account` MODIFY COLUMN `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' AFTER `id`;
@@ -0,0 +1,23 @@
DELETE FROM `build_info` WHERE `build` IN (69875);
INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES
(69875,12,1,0,NULL);
DELETE FROM `build_auth_key` WHERE `build`=69875 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69875 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=69875 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69875 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=69875 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69875 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69875 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC';
INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES
(69875,'Mac','A64','WoW',0xD88093682EC77460858BB7B29E69F968),
(69875,'Mac','A64','WoWC',0x3171A821092246CE74F7F06144C3CBB3),
(69875,'Mac','x64','WoW',0x3DBF6AF950B2D6A367BC2D7940F7433F),
(69875,'Mac','x64','WoWC',0x3B2E6D42A6E5CADE919093EF78960D35),
(69875,'Win','A64','WoW',0x4CFEB2811C1940D0346014B367BD0325),
(69875,'Win','x64','WoW',0xE0AA3015AD5C595869F13B6B8BECC231),
(69875,'Win','x64','WoWC',0xE8C0198E6721AAF2B1C748AC4284A574);
UPDATE `realmlist` SET `gamebuild`=69875 WHERE `gamebuild`=69814;
ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '69875';
@@ -0,0 +1,23 @@
DELETE FROM `build_info` WHERE `build` IN (69933);
INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES
(69933,12,1,0,NULL);
DELETE FROM `build_auth_key` WHERE `build`=69933 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69933 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=69933 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69933 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC';
DELETE FROM `build_auth_key` WHERE `build`=69933 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69933 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW';
DELETE FROM `build_auth_key` WHERE `build`=69933 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC';
INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES
(69933,'Mac','A64','WoW',0x855F995BA81FABAEC8282A64623EF654),
(69933,'Mac','A64','WoWC',0x87753E122E07CFF1C89D513425D51F16),
(69933,'Mac','x64','WoW',0x4F461CA5A8E12A654EE7ECFF66577256),
(69933,'Mac','x64','WoWC',0x55CEFA786E7BAD5C88814CB42A440A4C),
(69933,'Win','A64','WoW',0x8D8FD4D1186C83F2641AF2ADBBB1E674),
(69933,'Win','x64','WoW',0xDE452B2BD2640E83AD944B07B4C76649),
(69933,'Win','x64','WoWC',0x7CD51CFAFB5CE86AFE85D6EDDEC7CF61);
UPDATE `realmlist` SET `gamebuild`=69933 WHERE `gamebuild`=69875;
ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '69933';
@@ -1,26 +0,0 @@
-- G4: allow a character to persist MULTIPLE garrisons (WoD garrison + Legion order hall + BfA war campaign + covenant).
-- Adds garrType scoping to every garrison sub-table + widens the character_garrison PK. Backfill is safe because
-- today every character has exactly one garrison (PK guid), so all its sub-rows belong to that garrison's type.
-- 1. Allow >1 garrison row per character.
ALTER TABLE `character_garrison` DROP PRIMARY KEY, ADD PRIMARY KEY (`guid`, `type`);
-- 2. Add garrType to each sub-table (archived_missions already has it).
ALTER TABLE `character_garrison_blueprints` ADD COLUMN `garrType` tinyint unsigned NOT NULL DEFAULT 0;
ALTER TABLE `character_garrison_buildings` ADD COLUMN `garrType` tinyint unsigned NOT NULL DEFAULT 0;
ALTER TABLE `character_garrison_specializations` ADD COLUMN `garrType` tinyint unsigned NOT NULL DEFAULT 0;
ALTER TABLE `character_garrison_followers` ADD COLUMN `garrType` tinyint unsigned NOT NULL DEFAULT 0;
ALTER TABLE `character_garrison_missions` ADD COLUMN `garrType` tinyint unsigned NOT NULL DEFAULT 0;
ALTER TABLE `character_garrison_shipments` ADD COLUMN `garrType` tinyint unsigned NOT NULL DEFAULT 0;
ALTER TABLE `character_garrison_talents` ADD COLUMN `garrType` tinyint unsigned NOT NULL DEFAULT 0;
ALTER TABLE `character_garrison_trophies` ADD COLUMN `garrType` tinyint unsigned NOT NULL DEFAULT 0;
-- 3. Backfill: every existing sub-row belongs to that character's single garrison.
UPDATE `character_garrison_blueprints` s JOIN `character_garrison` g ON g.`guid`=s.`guid` SET s.`garrType`=g.`type`;
UPDATE `character_garrison_buildings` s JOIN `character_garrison` g ON g.`guid`=s.`guid` SET s.`garrType`=g.`type`;
UPDATE `character_garrison_specializations` s JOIN `character_garrison` g ON g.`guid`=s.`guid` SET s.`garrType`=g.`type`;
UPDATE `character_garrison_followers` s JOIN `character_garrison` g ON g.`guid`=s.`guid` SET s.`garrType`=g.`type`;
UPDATE `character_garrison_missions` s JOIN `character_garrison` g ON g.`guid`=s.`guid` SET s.`garrType`=g.`type`;
UPDATE `character_garrison_shipments` s JOIN `character_garrison` g ON g.`guid`=s.`guid` SET s.`garrType`=g.`type`;
UPDATE `character_garrison_talents` s JOIN `character_garrison` g ON g.`guid`=s.`guid` SET s.`garrType`=g.`type`;
UPDATE `character_garrison_trophies` s JOIN `character_garrison` g ON g.`guid`=s.`guid` SET s.`garrType`=g.`type`;
@@ -1,10 +0,0 @@
-- Per-character weekly cap tracking for order-hall work orders (e.g. the Hunter "Unseen Path" Seal of Broken Fate
-- order, capped at 3 per week). `weekReset` = the server's weekly quest reset; once passed, the counter starts fresh.
CREATE TABLE `character_garrison_weekly_shipments` (
`guid` BIGINT UNSIGNED NOT NULL,
`npcEntry` INT UNSIGNED NOT NULL,
`placed` INT UNSIGNED NOT NULL DEFAULT 0,
`weekReset` BIGINT NOT NULL DEFAULT 0,
PRIMARY KEY (`guid`,`npcEntry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Order-hall weekly-capped work orders (Garrison::CreateTroopShipment gate)';
@@ -1,6 +0,0 @@
--
-- Mythic+ keystone lifecycle: track timed-ness of weekly runs (drives the weekly keystone level adjustment)
-- and the reset boundary the keystone was last adjusted for.
--
ALTER TABLE `character_mythic_plus_weekly` ADD `timed` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Run beat the par time' AFTER `level`;
ALTER TABLE `character_mythic_plus_vault` ADD `keystoneResetTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'Weekly reset boundary the keystone was last adjusted for' AFTER `claimedResetTime`;
@@ -1,88 +0,0 @@
--
-- Table structure for table `character_mythic_plus`
--
DROP TABLE IF EXISTS `character_mythic_plus`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `character_mythic_plus` (
`guid` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier',
`challengeModeId` int unsigned NOT NULL DEFAULT '0' COMMENT 'MapChallengeMode.db2 ID',
`level` int unsigned NOT NULL DEFAULT '0' COMMENT 'Keystone level of the best run',
`durationMs` int unsigned NOT NULL DEFAULT '0' COMMENT 'Effective run time in milliseconds (incl. death penalty)',
`deaths` int unsigned NOT NULL DEFAULT '0',
`completionDate` bigint NOT NULL DEFAULT '0' COMMENT 'Unix time of the run',
`score` float NOT NULL DEFAULT '0',
`affix1` int unsigned NOT NULL DEFAULT '0',
`affix2` int unsigned NOT NULL DEFAULT '0',
`affix3` int unsigned NOT NULL DEFAULT '0',
`affix4` int unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`guid`,`challengeModeId`),
CONSTRAINT `fk_character_mythic_plus_character` FOREIGN KEY (`guid`) REFERENCES `characters` (`guid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Mythic Keystone best runs';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `character_mythic_plus`
--
LOCK TABLES `character_mythic_plus` WRITE;
/*!40000 ALTER TABLE `character_mythic_plus` DISABLE KEYS */;
/*!40000 ALTER TABLE `character_mythic_plus` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `character_mythic_plus_vault`
--
DROP TABLE IF EXISTS `character_mythic_plus_vault`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `character_mythic_plus_vault` (
`guid` bigint unsigned NOT NULL COMMENT 'Global Unique Identifier',
`claimedResetTime` bigint NOT NULL DEFAULT '0' COMMENT 'Weekly reset boundary the vault reward was claimed for',
`keystoneResetTime` bigint NOT NULL DEFAULT '0' COMMENT 'Weekly reset boundary the keystone was last adjusted for',
PRIMARY KEY (`guid`),
CONSTRAINT `fk_character_mythic_plus_vault_guid` FOREIGN KEY (`guid`) REFERENCES `characters` (`guid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Per-character Great Vault weekly claim state';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `character_mythic_plus_vault`
--
LOCK TABLES `character_mythic_plus_vault` WRITE;
/*!40000 ALTER TABLE `character_mythic_plus_vault` DISABLE KEYS */;
/*!40000 ALTER TABLE `character_mythic_plus_vault` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `character_mythic_plus_weekly`
--
DROP TABLE IF EXISTS `character_mythic_plus_weekly`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `character_mythic_plus_weekly` (
`guid` bigint unsigned NOT NULL COMMENT 'Global Unique Identifier',
`id` int unsigned NOT NULL AUTO_INCREMENT,
`challengeModeId` int unsigned NOT NULL DEFAULT '0',
`level` int unsigned NOT NULL DEFAULT '0',
`timed` tinyint unsigned NOT NULL DEFAULT '0' COMMENT 'Run beat the par time',
`completionDate` bigint NOT NULL DEFAULT '0',
`resetTime` bigint NOT NULL DEFAULT '0' COMMENT 'Weekly reset boundary these runs belong to',
PRIMARY KEY (`id`),
KEY `idx_guid` (`guid`),
CONSTRAINT `fk_character_mythic_plus_weekly_guid` FOREIGN KEY (`guid`) REFERENCES `characters` (`guid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Per-character Mythic+ runs completed this Great Vault week';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `character_mythic_plus_weekly`
--
LOCK TABLES `character_mythic_plus_weekly` WRITE;
/*!40000 ALTER TABLE `character_mythic_plus_weekly` DISABLE KEYS */;
/*!40000 ALTER TABLE `character_mythic_plus_weekly` ENABLE KEYS */;
UNLOCK TABLES;
@@ -1,11 +0,0 @@
--
-- Item upgrade per-slot high-watermark (highest item level a slot class has paid crests to; drives the
-- crest waiver and the client's ItemUpgradeHighWatermark discount display).
--
CREATE TABLE IF NOT EXISTS `character_item_upgrade_watermark` (
`guid` BIGINT UNSIGNED NOT NULL COMMENT 'Global Unique Identifier',
`slotClass` TINYINT UNSIGNED NOT NULL COMMENT 'Watermark slot class index (0-16)',
`itemLevel` INT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`guid`,`slotClass`),
CONSTRAINT `fk_char_item_upgrade_watermark_guid` FOREIGN KEY (`guid`) REFERENCES `characters` (`guid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Per-character item upgrade watermarks';
@@ -1,10 +0,0 @@
--
-- Archaeology (from the ground up) Phase 1 sub-slice 2b: per-character active dig sites.
-- Persists the ActivePlayer ResearchSites / ResearchSiteProgress update fields across relog/restart.
--
CREATE TABLE IF NOT EXISTS `character_research_site` (
`guid` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier',
`researchSiteId` smallint unsigned NOT NULL DEFAULT '0',
`progress` int unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`guid`,`researchSiteId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Archaeology active dig sites per character';
@@ -1,50 +0,0 @@
--
-- Mythic+ weekly keystone rollover: persist the previous week's run summary.
--
-- The weekly run rows (character_mythic_plus_weekly) are dropped the moment the finished week is pruned, but the
-- retail keystone rule needs that week's highest completed / highest timed level to pick the new key. Keeping the
-- summary only in memory loses it whenever a character save or a server restart lands between the weekly reset and
-- the keystone adjustment, silently degrading the key to the "no history" rule (one level lower). These columns
-- make it durable.
--
-- Idempotent: each column is added only when information_schema says it is missing, so the file is safe to re-run
-- and safe against a base dump that already carries the columns.
--
DELIMITER $$
DROP PROCEDURE IF EXISTS `_tc_add_mythic_plus_vault_prev_week` $$
CREATE PROCEDURE `_tc_add_mythic_plus_vault_prev_week`()
BEGIN
IF NOT EXISTS (SELECT 1 FROM `information_schema`.`COLUMNS`
WHERE `TABLE_SCHEMA` = DATABASE()
AND `TABLE_NAME` = 'character_mythic_plus_vault'
AND `COLUMN_NAME` = 'prevWeekResetTime') THEN
ALTER TABLE `character_mythic_plus_vault`
ADD COLUMN `prevWeekResetTime` BIGINT NOT NULL DEFAULT 0
COMMENT 'Weekly reset boundary the summarised previous week ended at' AFTER `keystoneResetTime`;
END IF;
IF NOT EXISTS (SELECT 1 FROM `information_schema`.`COLUMNS`
WHERE `TABLE_SCHEMA` = DATABASE()
AND `TABLE_NAME` = 'character_mythic_plus_vault'
AND `COLUMN_NAME` = 'prevWeekBestLevel') THEN
ALTER TABLE `character_mythic_plus_vault`
ADD COLUMN `prevWeekBestLevel` INT UNSIGNED NOT NULL DEFAULT 0
COMMENT 'Highest keystone level completed in that week (timed or not)' AFTER `prevWeekResetTime`;
END IF;
IF NOT EXISTS (SELECT 1 FROM `information_schema`.`COLUMNS`
WHERE `TABLE_SCHEMA` = DATABASE()
AND `TABLE_NAME` = 'character_mythic_plus_vault'
AND `COLUMN_NAME` = 'prevWeekBestTimedLevel') THEN
ALTER TABLE `character_mythic_plus_vault`
ADD COLUMN `prevWeekBestTimedLevel` INT UNSIGNED NOT NULL DEFAULT 0
COMMENT 'Highest keystone level completed IN TIME in that week' AFTER `prevWeekBestLevel`;
END IF;
END $$
DELIMITER ;
CALL `_tc_add_mythic_plus_vault_prev_week`();
DROP PROCEDURE IF EXISTS `_tc_add_mythic_plus_vault_prev_week`;
@@ -1,29 +0,0 @@
--
-- Great Vault / Weekly Rewards: per-character weekly activity tracking and claim state.
--
DROP TABLE IF EXISTS `character_weekly_reward_activity`;
CREATE TABLE `character_weekly_reward_activity` (
`ownerGuid` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Character Global Unique Identifier',
`activityType` tinyint unsigned NOT NULL DEFAULT '0' COMMENT 'Great Vault row: 0 Dungeon, 1 Raid, 2 World',
`period` int unsigned NOT NULL DEFAULT '0' COMMENT 'Weekly period index this activity belongs to',
`count` int unsigned NOT NULL DEFAULT '0' COMMENT 'Qualifying completions this period',
`bestLevel` int unsigned NOT NULL DEFAULT '0' COMMENT 'Best difficulty/keystone level this period',
PRIMARY KEY (`ownerGuid`,`activityType`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Player System';
DROP TABLE IF EXISTS `character_weekly_reward_state`;
CREATE TABLE `character_weekly_reward_state` (
`ownerGuid` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Character Global Unique Identifier',
`claimedPeriod` int unsigned NOT NULL DEFAULT '0' COMMENT 'Last weekly period a reward was claimed',
PRIMARY KEY (`ownerGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Player System';
DROP TABLE IF EXISTS `character_content_tracking`;
CREATE TABLE `character_content_tracking` (
`ownerGuid` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Character Global Unique Identifier',
`targetType` int NOT NULL DEFAULT '0' COMMENT 'ContentTrackingTargetType of the tracked entry',
`targetId` int NOT NULL DEFAULT '0' COMMENT 'Id of the tracked target within its type',
`collectableSourceInfoId` int NOT NULL DEFAULT '0' COMMENT 'Client-resolved CollectableSourceInfo id',
PRIMARY KEY (`ownerGuid`,`targetType`,`targetId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Player System';
@@ -1,19 +0,0 @@
DROP TABLE `character_weekly_reward_activity`;
CREATE TABLE `character_weekly_reward_activity` (
`ownerGuid` BIGINT UNSIGNED NOT NULL,
`period` INT UNSIGNED NOT NULL DEFAULT 0,
`activityType` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`count` INT UNSIGNED NOT NULL DEFAULT 0,
`bestLevel` INT UNSIGNED NOT NULL DEFAULT 0,
`levels` TEXT NULL,
PRIMARY KEY (`ownerGuid`, `period`, `activityType`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE `character_content_tracking`;
CREATE TABLE `character_content_tracking` (
`ownerGuid` BIGINT UNSIGNED NOT NULL,
`targetType` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`targetId` INT UNSIGNED NOT NULL DEFAULT 0,
`collectableSourceInfoId` INT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`ownerGuid`, `targetType`, `targetId`, `collectableSourceInfoId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -1,18 +0,0 @@
--
-- Prey system + Voidforge (Midnight Season 1) — per-character hunt state.
-- SHIPPED ON BRANCH, NOT APPLIED to the shared realm. Additive; PreyMgr
-- tolerates its absence (OnPlayerLogin is a no-op until this is populated).
--
-- Tracks in-flight / weekly hunt bookkeeping. The weekly cap is 1 hunt per
-- difficulty per zone (up to 12 across the four Midnight zones) — [RESEARCH],
-- enforced server-side once the completion wire is captured.
--
CREATE TABLE IF NOT EXISTS `character_prey_hunt` (
`guid` BIGINT UNSIGNED NOT NULL COMMENT 'character guid',
`HuntId` INT UNSIGNED NOT NULL COMMENT 'FK prey_hunt_template.Id',
`Difficulty` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`Status` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 available / 1 active / 2 completed',
`WeekStart` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'unix time of the weekly-reset bucket',
PRIMARY KEY (`guid`,`HuntId`,`WeekStart`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -1,16 +0,0 @@
-- Omnium Folio (Midnight 12.0.7 Season 1) -- per-character season bookkeeping
-- ---------------------------------------------------------------------------
-- The folio's actual power/selection state persists through the EXISTING trait
-- tables (character_trait_config / character_trait_entry) because it is a
-- generic TraitConfig (TraitSystem 48 / TraitTree 1186). This table only tracks
-- which season a character has already been reset/minted for, so the seasonal
-- rollover seam (OmniumFolioMgr::ResetForNewSeason) can re-mint exactly once.
--
-- Realm-safety: purely additive; nothing reads it until the seasonal seam is
-- enabled. Ship-only; DO NOT apply to the shared integration realm.
CREATE TABLE IF NOT EXISTS `character_omnium_folio` (
`guid` bigint unsigned NOT NULL COMMENT 'Character GUID',
`LastSeasonMinted` int unsigned NOT NULL DEFAULT '0' COMMENT 'Season the generic folio config was last minted/reset for',
`UnlockedAt` int unsigned NOT NULL DEFAULT '0' COMMENT 'Unix time the folio unlock spell was applied',
PRIMARY KEY (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Omnium Folio per-character season bookkeeping';
@@ -1,10 +0,0 @@
-- BfA Warfronts (P0): coarse per-zone cycle state owned by WarfrontMgr. The contribution *bar counter* persists
-- separately through ManagedWorldStateMgr -> world_state; this table only holds the cycle spine (which phase, who
-- controls the zone, and the current phase-end timestamp) so the cycle survives a restart. See WARFRONTS_DESIGN.md §1.3.
CREATE TABLE IF NOT EXISTS `warfront_state` (
`WarfrontId` TINYINT UNSIGNED NOT NULL, -- our WarfrontId enum (1=Stromgarde, 2=Darkshore)
`State` TINYINT UNSIGNED NOT NULL DEFAULT 0, -- WarfrontState enum (0=CONTRIBUTION,1=SIEGE,2=FLIP)
`Controlling` TINYINT UNSIGNED NOT NULL DEFAULT 0, -- TeamId of the controlling faction (0=Alliance,1=Horde)
`PhaseEndTime` INT UNSIGNED NOT NULL DEFAULT 0, -- unix time the current phase ends (0 = no active timer)
PRIMARY KEY (`WarfrontId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='BfA Warfront cycle state (WarfrontMgr)';
@@ -1,21 +0,0 @@
--
-- Covenant Callings board (P4.4).
--
-- One row per calling slot. A covenant board holds exactly three slots
-- (CovenantCallingsConstants.Callings.MaxCallings = 3 in the 12.0.7.68275 client); a slot either offers a
-- Bounty.db2 row until expireTime, or is empty and refills at refillTime. Both timestamps are daily-reset
-- boundaries, which is what lets the board roll over exactly at reset and be reconstructed after a restart
-- without any scheduler state.
--
-- Keyed by covenantId as well as guid: the per-covenant currency families (renown 1829-1832, reservoir anima
-- 1859-1862, redeemed souls 1863-1866) are direct evidence that Blizzard keeps all four covenant tracks for a
-- character simultaneously, so a covenant switch must not discard the other covenant's board.
CREATE TABLE IF NOT EXISTS `character_covenant_callings` (
`guid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Character GUID',
`covenantId` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Covenant.db2 ID this board belongs to',
`slot` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0-based slot on the board',
`bountyId` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Bounty.db2 ID currently offered, 0 when the slot is empty',
`expireTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'Unix time the offer lapses (occupied slots only)',
`refillTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'Unix time a new calling is issued (empty slots only)',
PRIMARY KEY (`guid`,`covenantId`,`slot`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Covenant Callings - per-character daily bounty board';
@@ -1,28 +0,0 @@
-- Covenant switching / reset (spell 338503 "Reset Covenant").
--
-- A switch must never cost a character anything belonging to a covenant it may return to. Renown (1829-1832),
-- reservoir anima (1859-1862), researched sanctum talents (character_garrison_talents - every covenant-scoped
-- GarrTalentTree names its owner in FeatureSubtypeIndex, so the four covenants already own disjoint rows),
-- companions (character_garrison_followers), conduits, conduit sockets, the granted-renown high-water mark and
-- the per-covenant calling boards are all already stored per covenant and are left untouched by a switch.
--
-- The one piece of covenant-scoped state that had nowhere to live is WHICH SOULBIND a covenant was using:
-- character_covenant is single-valued by design (it holds the ACTIVE covenant/soulbind), so leaving a covenant
-- would have thrown its soulbind choice away. This table remembers it per covenant, and because a row is written
-- for every covenant the character pledges to - even before it picks a soulbind - it doubles as the "covenants
-- ever joined" set that tells a switch apart from a first pledge.
--
-- Idempotent: safe to re-run.
CREATE TABLE IF NOT EXISTS `character_covenant_soulbind` (
`guid` bigint unsigned NOT NULL DEFAULT '0',
`covenantId` int unsigned NOT NULL DEFAULT '0',
`soulbindId` int unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`guid`,`covenantId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Soulbind last active per covenant (also the set of covenants ever joined)';
-- Seed the characters that already belong to a covenant, so their current pledge is recognised as "joined" and
-- their current soulbind survives their first switch. INSERT IGNORE keeps a re-run from overwriting anything the
-- server has since recorded.
INSERT IGNORE INTO `character_covenant_soulbind` (`guid`, `covenantId`, `soulbindId`)
SELECT `guid`, `covenantId`, `soulbindId` FROM `character_covenant` WHERE `covenantId` <> 0;
@@ -1,22 +0,0 @@
--
-- Queen's Conservatory (Night Fae unique covenant sanctum feature, GarrTalentTree 319).
-- One row per OCCUPIED wildseed plot; empty plots are not stored. plotId is 0-based and is bounded by the
-- number of researched tiers of tree 319 (max 5 - GarrTalentTree 319 MaxTiers). state: 0 empty, 1 growing,
-- 2 ready to harvest. catalyst1..4 hold GameObject entries (353652 Catalyst of Power / 353653 Catalyst of
-- Renewal / 353654 Catalyst of Might); talent 1090 "Final Forms" is what caps the links at four.
-- Idempotent.
--
CREATE TABLE IF NOT EXISTS `character_garrison_conservatory` (
`guid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Character GUID',
`plotId` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0-based wildseed plot index',
`wildseedEntry` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'garrison_conservatory_wildseed.wildseedEntry',
`plantedTime` BIGINT NOT NULL DEFAULT 0,
`maturesAt` BIGINT NOT NULL DEFAULT 0 COMMENT 'unix time the wildseed becomes harvestable',
`catalyst1` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'gameobject_template.entry of the attached catalyst',
`catalyst2` INT UNSIGNED NOT NULL DEFAULT 0,
`catalyst3` INT UNSIGNED NOT NULL DEFAULT 0,
`catalyst4` INT UNSIGNED NOT NULL DEFAULT 0,
`state` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 empty, 1 growing, 2 ready',
PRIMARY KEY (`guid`, `plotId`),
KEY `idx_guid` (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Queen''s Conservatory wildseed plots';
@@ -1,45 +0,0 @@
--
-- Queen's Conservatory - the catalyst columns hold ITEM ids, not GameObject entries.
--
-- 2026_08_07_03 created `character_garrison_conservatory` with catalyst1..4 documented as
-- "gameobject_template.entry of the attached catalyst", naming GameObjects 353652 / 353653 / 353654
-- ("Catalyst of Power / Renewal / Might"). Those are Revendreth vampire-bottle props in AreaTable 10413 on
-- map 2222, not Conservatory objects - see the header of the world migration
-- 2026_08_07_63_covenant_conservatory_catalysts.sql for the full derivation.
--
-- The real catalysts are the items 176921 Temporal Leaves / 176922 Wild Nightbloom / 176832 Wildseed Root
-- Grain, so these columns now carry `garrison_conservatory_catalyst`.catalystItemId. This file only
-- re-documents the columns and clears any value written under the old (no-op) meaning; the engine also drops
-- unknown catalyst ids at load time with a log line, so applying this is belt-and-braces.
--
-- Idempotent.
--
-- Safety net if this file is applied without 2026_08_07_03 (identical definition, corrected comments).
CREATE TABLE IF NOT EXISTS `character_garrison_conservatory` (
`guid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Character GUID',
`plotId` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0-based wildseed plot index',
`wildseedEntry` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'garrison_conservatory_wildseed.wildseedEntry',
`plantedTime` BIGINT NOT NULL DEFAULT 0,
`maturesAt` BIGINT NOT NULL DEFAULT 0 COMMENT 'unix time the wildseed becomes harvestable',
`catalyst1` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'garrison_conservatory_catalyst.catalystItemId of the attached catalyst',
`catalyst2` INT UNSIGNED NOT NULL DEFAULT 0,
`catalyst3` INT UNSIGNED NOT NULL DEFAULT 0,
`catalyst4` INT UNSIGNED NOT NULL DEFAULT 0,
`state` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 empty, 1 growing, 2 ready',
PRIMARY KEY (`guid`, `plotId`),
KEY `idx_guid` (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Queens Conservatory wildseed plots';
ALTER TABLE `character_garrison_conservatory`
MODIFY `catalyst1` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'garrison_conservatory_catalyst.catalystItemId of the attached catalyst',
MODIFY `catalyst2` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'garrison_conservatory_catalyst.catalystItemId of the attached catalyst',
MODIFY `catalyst3` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'garrison_conservatory_catalyst.catalystItemId of the attached catalyst',
MODIFY `catalyst4` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'garrison_conservatory_catalyst.catalystItemId of the attached catalyst';
-- The only values the old code could ever have written are those three GameObject entries (it validated
-- against gameobject_template), and they mean nothing under the new meaning. Nothing else is touched.
UPDATE `character_garrison_conservatory` SET `catalyst1` = 0 WHERE `catalyst1` IN (353652,353653,353654);
UPDATE `character_garrison_conservatory` SET `catalyst2` = 0 WHERE `catalyst2` IN (353652,353653,353654);
UPDATE `character_garrison_conservatory` SET `catalyst3` = 0 WHERE `catalyst3` IN (353652,353653,353654);
UPDATE `character_garrison_conservatory` SET `catalyst4` = 0 WHERE `catalyst4` IN (353652,353653,353654);
@@ -1,25 +0,0 @@
--
-- Abomination Factory (Necrolord unique covenant sanctum feature, GarrTalentTree 321).
--
-- One row per construct body the character has stitched. `recipeSpellId` is the "Construct Body: X" recipe
-- (a SkillLineAbility.Spell of SkillLine 2787 "Abominable Stitching") that produced it - the 15 of them are
-- identified by the server from client data as the stitching recipes whose spell carries
-- SPELL_EFFECT_KILL_CREDIT (creature credit 167076 / 167581), so nothing here hardcodes an id list.
--
-- The client's own roster of the same 15 is CriteriaTree 88195 "Abominable Stitching - Build Abom":
-- Chordy 325284, Roseboil 325451, Marz 325452, Flytrap 325453, Atticus 325454, Miru 325458, Neena 326379,
-- Gas Bag 326380, Professor 326406, Toothpick 326407, Mama Tomalin 326408, Iron Phillip 338037,
-- Guillotine 338039, Sabrina 338040, Naxx 338043.
--
-- Only the covenant sanctum (GarrType 111) has one, so the table is keyed by guid alone and is written and
-- purged from Garrison::SaveToDB / Garrison::DeleteFromDB behind a GARRISON_TYPE_COVENANT check.
--
-- Idempotent.
--
CREATE TABLE IF NOT EXISTS `character_garrison_abomination_factory` (
`guid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Character GUID',
`recipeSpellId` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'SkillLineAbility.Spell of the construct-body recipe',
`builtTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'unix time the construct was stitched',
PRIMARY KEY (`guid`, `recipeSpellId`),
KEY `idx_guid` (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Abomination Factory construct stable';
@@ -1,37 +0,0 @@
--
-- Path of Ascension (Kyrian unique covenant sanctum feature, GarrTalentTree 320).
--
-- One row per Shadowlands memory the character has captured, plus how far that memory has been taken.
--
-- `memoryId` references `garrison_ascension_memory`.`memoryId` in the world DB (authored content - see
-- sql/updates/world/master/2026_08_07_80_covenant_ascension_memories.sql for why that roster is not derived).
-- A stored row whose memoryId no longer has a world row is dropped with an error at load
-- (PathOfAscension::LoadFromDB) rather than carried as an id no gate can evaluate.
--
-- `highestTrialWon` is the high-water mark over the four trials, which are Difficulty.db2 rows in the 68275
-- client, not an invented scale:
-- 0 none, 1 Trial of Courage (Difficulty 168), 2 Trial of Loyalty (169),
-- 3 Trial of Wisdom (170), 4 Trial of Humility (171).
-- All four are InstanceType 5 (MAP_SCENARIO) with MinPlayers = MaxPlayers = 1, bound to map 2375
-- "9.0 Bastion Arena - Path of Ascension" by MapDifficulty 4795-4798 - which is why this is stored per
-- character and not per group.
--
-- Only the covenant sanctum (GarrType 111) has one, so the table is keyed by guid alone and is written and
-- purged from Garrison::SaveToDB / Garrison::DeleteFromDB behind a GARRISON_TYPE_COVENANT check - the same
-- shape as `character_garrison_conservatory` and `character_garrison_abomination_factory`.
--
-- Captures are deliberately NOT deleted when the covenant changes or a talent is reset: the character keeps
-- what it captured and simply loses access until the tiers are re-researched (Garrison::Update clamps the
-- trial high-water mark to the ceiling the remaining research supports).
--
-- Idempotent.
--
CREATE TABLE IF NOT EXISTS `character_garrison_path_of_ascension` (
`guid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Character GUID',
`memoryId` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'garrison_ascension_memory.memoryId',
`capturedTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'unix time the memory was captured',
`highestTrialWon` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 none, 1 Courage, 2 Loyalty, 3 Wisdom, 4 Humility',
`lastCompletedTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'unix time of the most recent trial win',
PRIMARY KEY (`guid`, `memoryId`),
KEY `idx_guid` (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Path of Ascension captured memories and trial progress';
@@ -1,59 +0,0 @@
--
-- The Ember Court (Venthyr unique covenant sanctum feature, GarrTalentTree 324).
--
-- One row per guest this character has any standing with - hosted at least once, or currently on the guest
-- list for the next court.
--
-- `guestIndex` is 0-15 and is the client's OWN guest ordering: the sixteen children of CriteriaTree 87983,
-- which is Achievement 14723 "Be Our Guest" ("Host the following guests at your Ember Court"), in their
-- OrderIndex order. That roster is derived twice over - the identical sixteen names also appear as the
-- sixteen "RSVP: <Guest>" quests already present in the world DB, each started and ended by that guest's own
-- creature - so it lives in C++ (EmberCourt.cpp) rather than in a world table:
-- 0 Baroness Vashj 4 Alexandros Mograine 8 Choofa 12 Kleia and Pelagos
-- 1 Lady Moonberry 5 Hunt-Captain Korayn 9 Cryptkeeper Kassir 13 Plague Deviser Marileth
-- 2 Mikanikos 6 Polemarch Adrestes 10 Droman Aliothe 14 Sika
-- 3 The Countess 7 Rendle and Cudgelface 11 Grandmaster Vole 15 Stonehead
-- A stored row whose guestIndex is outside 0-15 is dropped with an error at load (EmberCourt::LoadFromDB).
--
-- `invited` is the pending guest list for the NEXT court. It is capped at the slots the researched talents of
-- GarrTalentTree 324 grant - 2 at the bottom of the ladder, 3 with talent 1114 "Court Influencer" ("allowing
-- you to invite a THIRD guest"), 4 with talent 1112 "Discerning Taste" ("a FOURTH guest") - and the 60s
-- Garrison::Update tick trims it back down if a talent reset or a covenant switch shrinks the allowance, or
-- if a guest's "RSVP: <Guest>" quest no longer stands.
--
-- `highestMood` is a high-water mark on the mood scale the 12.0.7.68275 client does NOT publish. Achievement
-- 14724 "People Pleaser" names exactly one rung of that scale, "Elated", and nothing anywhere gives the rungs
-- below it or the thresholds between them ("Elated" is not even a GlobalStrings row). The value is therefore
-- only ever WRITTEN by a real court completion reporting it; the server never computes one. The rung that
-- counts as Elated for each guest is authored per guest in the world table `garrison_ember_court_guest`.
--
-- `courtsHeld` and `lastCourtTime` are court-level counters denormalised onto every guest row so the feature
-- keeps to a single table. They are identical across a character's rows. A court can only be completed with
-- at least one guest on the list, so a character with courtsHeld > 0 always has at least one row to carry
-- them. NOTE: no minimum interval between courts is enforced anywhere - the build publishes none (spell
-- 336617 is named "Ember Court Timer" but no interval this server could apply is published), and one is not
-- invented. lastCourtTime is recorded and exposed so whoever authors the venue can gate on it.
--
-- Only the covenant sanctum (GarrType 111) has one, so the table is keyed by guid alone and is written and
-- purged from Garrison::SaveToDB / Garrison::DeleteFromDB behind a GARRISON_TYPE_COVENANT check - the same
-- shape as `character_garrison_conservatory`, `character_garrison_abomination_factory` and
-- `character_garrison_path_of_ascension`.
--
-- Hosting history is deliberately NOT deleted when the covenant changes or a talent is reset: the character
-- keeps what it earned and simply loses access until it is Venthyr with the tree researched again. Only the
-- pending `invited` flags are trimmed.
--
-- Idempotent.
--
CREATE TABLE IF NOT EXISTS `character_garrison_ember_court` (
`guid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Character GUID',
`guestIndex` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0-15, CriteriaTree 87983 child OrderIndex',
`timesHosted` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'courts this guest has attended',
`highestMood` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'high-water mark on the unpublished mood scale; 0 = never hosted',
`lastHostedTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'unix time this guest last attended',
`invited` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'on the guest list for the next court',
`courtsHeld` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'court-level counter, identical across this guid''s rows',
`lastCourtTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'court-level counter, identical across this guid''s rows',
PRIMARY KEY (`guid`, `guestIndex`),
KEY `idx_guid` (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Ember Court guest standing and pending guest list';
@@ -1,75 +0,0 @@
--
-- Table structure for table `character_garrison_conservatory`
--
DROP TABLE IF EXISTS `character_garrison_conservatory`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `character_garrison_conservatory` (
`guid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Character GUID',
`plotId` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0-based wildseed plot index',
`wildseedEntry` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'garrison_conservatory_wildseed.wildseedEntry',
`plantedTime` BIGINT NOT NULL DEFAULT 0,
`maturesAt` BIGINT NOT NULL DEFAULT 0 COMMENT 'unix time the wildseed becomes harvestable',
`catalyst1` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'gameobject_template.entry of the attached catalyst',
`catalyst2` INT UNSIGNED NOT NULL DEFAULT 0,
`catalyst3` INT UNSIGNED NOT NULL DEFAULT 0,
`catalyst4` INT UNSIGNED NOT NULL DEFAULT 0,
`state` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 empty, 1 growing, 2 ready',
PRIMARY KEY (`guid`, `plotId`),
KEY `idx_guid` (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Queen''s Conservatory wildseed plots';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `character_garrison_abomination_factory`
--
DROP TABLE IF EXISTS `character_garrison_abomination_factory`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `character_garrison_abomination_factory` (
`guid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Character GUID',
`recipeSpellId` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'SkillLineAbility.Spell of the construct-body recipe',
`builtTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'unix time the construct was stitched',
PRIMARY KEY (`guid`, `recipeSpellId`),
KEY `idx_guid` (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Abomination Factory construct stable';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `character_garrison_path_of_ascension`
--
DROP TABLE IF EXISTS `character_garrison_path_of_ascension`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `character_garrison_path_of_ascension` (
`guid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Character GUID',
`memoryId` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'garrison_ascension_memory.memoryId',
`capturedTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'unix time the memory was captured',
`highestTrialWon` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 none, 1 Courage, 2 Loyalty, 3 Wisdom, 4 Humility',
`lastCompletedTime` BIGINT NOT NULL DEFAULT 0 COMMENT 'unix time of the most recent trial win',
PRIMARY KEY (`guid`, `memoryId`),
KEY `idx_guid` (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Path of Ascension captured memories and trial progress';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `character_garrison_ember_court`
--
DROP TABLE IF EXISTS `character_garrison_ember_court`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `character_garrison_ember_court` (
`guid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Character GUID',
`guestIndex` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0-15, CriteriaTree 87983 child OrderIndex',
`timesHosted` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'courts this guest has attended',
`highestMood` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'high-water mark on the unpublished mood scale',
`lastHostedTime` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '',
`invited` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '',
`courtsHeld` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '',
`lastCourtTime` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '');
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1,39 +0,0 @@
--
-- Garrison monument trophies: re-key the saved selection by TrophyInstanceID.
--
-- `character_garrison_trophies` was (guid, trophyId, garrType) with PRIMARY KEY (guid, trophyId) - a SET of
-- trophy ids per character. That cannot express what the feature actually stores.
--
-- A garrison has three monuments, not one. Each Monument Base gameobject carries a TrophyInstanceID in its
-- Data1 (the six spawned ones use 1, 2 and 6 on each side), and the client resolves what a given monument is
-- displaying by scanning SMSG_GARRISON_UPDATE_GARRISON_MONUMENT_SELECTIONS for the entry whose first field
-- equals that monument's own TrophyInstanceID - the monument tooltip builder at client RVA 0x1CAED30 does
-- exactly this lookup and then reads Trophy.db2 for the name. The saved state is therefore a MAP from
-- monument instance to trophy, one row per physical monument, and a plain set of trophy ids would make all
-- three plinths show the same statue with no way to say which is which.
--
-- Recreating rather than ALTERing: the old PRIMARY KEY (guid, trophyId) is wrong for the new shape (the same
-- trophy may legitimately sit on two different monuments, while one monument may hold only one trophy), and
-- the table holds no rows to preserve - nothing in the core ever wrote to it. Garrison::AddTrophy had no
-- caller outside the packet handlers, and those only ran on opcodes that the client never sent, because
-- nothing opened the monument interaction in the first place. Verified empty on this realm before writing
-- this file (SELECT COUNT(*) FROM character_garrison_trophies -> 0).
--
-- Columns:
-- guid character
-- trophyInstanceId which physical monument (gameobject Data1 of a GAMEOBJECT_TYPE_GARRISON_MONUMENT)
-- trophyId Trophy.db2 row displayed on it
-- garrType owning garrison type (2 = the WoD garrison, the only type that has monuments)
--
-- Idempotent.
--
DROP TABLE IF EXISTS `character_garrison_trophies`;
CREATE TABLE `character_garrison_trophies` (
`guid` BIGINT UNSIGNED NOT NULL,
`trophyInstanceId` INT UNSIGNED NOT NULL DEFAULT 0,
`trophyId` INT UNSIGNED NOT NULL DEFAULT 0,
`garrType` TINYINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`guid`,`garrType`,`trophyInstanceId`),
KEY `idx_guid` (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -1,50 +0,0 @@
--
-- Adventures companions: persist current health and the board slot they were deployed in.
--
-- `character_garrison_followers` stored neither. Two consequences, both visible in game:
--
-- 1. `GarrisonFollower.Health` was assigned once at recruit time (Garrison::AddFollower) and then thrown
-- away, so every login reloaded the whole roster at health 0. That is the `health = 0` the tester saw on
-- a level-1 companion whose statline maximum is 250.
--
-- 2. A companion's slot on the Adventures board (client enum `GarrAutoBoardIndex`, ally slots 0..4) existed
-- only for the lifetime of one CMSG_GARRISON_START_MISSION - and in fact was not even read from it. A
-- mission that was in progress across a logout came back with every companion unplaced, and the
-- mission-complete screen throws when it cannot resolve a board frame for a follower
-- (Blizzard_AdventuresCompleteScreen.lua:140).
--
-- Defaults are chosen so existing rows load correctly without a data migration:
-- health 0 -> Garrison::LoadFromDB restores any follower at <= 0 to its statline maximum, so legacy
-- rows come back at full rather than looking wiped.
-- boardIndex -1 -> GarrAutoBoardIndex::None. LoadFromDB re-runs AssignMissionBoardIndexes for any
-- in-progress mission whose companions are unplaced, filling them in retail's own
-- auto-assignment order, so missions already running when this is applied are repaired
-- on the next login rather than staying broken.
--
-- Idempotent: both columns are added only when absent.
--
DROP PROCEDURE IF EXISTS `tc_add_garrison_follower_board_columns`;
DELIMITER $$
CREATE PROCEDURE `tc_add_garrison_follower_board_columns`()
BEGIN
IF NOT EXISTS (SELECT 1 FROM `information_schema`.`COLUMNS`
WHERE `TABLE_SCHEMA` = DATABASE()
AND `TABLE_NAME` = 'character_garrison_followers'
AND `COLUMN_NAME` = 'health') THEN
ALTER TABLE `character_garrison_followers`
ADD COLUMN `health` int NOT NULL DEFAULT 0 AFTER `garrType`;
END IF;
IF NOT EXISTS (SELECT 1 FROM `information_schema`.`COLUMNS`
WHERE `TABLE_SCHEMA` = DATABASE()
AND `TABLE_NAME` = 'character_garrison_followers'
AND `COLUMN_NAME` = 'boardIndex') THEN
ALTER TABLE `character_garrison_followers`
ADD COLUMN `boardIndex` tinyint NOT NULL DEFAULT -1 AFTER `health`;
END IF;
END$$
DELIMITER ;
CALL `tc_add_garrison_follower_board_columns`();
DROP PROCEDURE `tc_add_garrison_follower_board_columns`;
@@ -1,33 +0,0 @@
--
-- In-game Shop character boost: which characters this realm has boosted.
--
-- The boost itself is applied to an OFFLINE character from the glue screen, so `characters` already
-- carries everything the boost changed (level, xp, primarySpecialization, inventory, the
-- character-select equipment cache). What that leaves nowhere to live is the FACT of the boost, and
-- the character-enumeration packet needs it: a boosted character must carry
-- CHARACTER_FLAG_4_USED_MAX_LEVEL_BOOST so the client stops offering the boost again, and a character
-- created through "Try New Class" must carry CHARACTER_RESTRICTION_FLAG_TRIAL_BOOST until it is
-- boosted so the client draws the class-trial plate.
--
-- This is a CHARACTERS-database table, unlike the entitlement ledger it is fed from
-- (account_battlepay_entitlement, auth DB). The entitlement belongs to the account and outlives any
-- realm; this row is a property of one character on one realm and dies with it, which is why
-- CHAR_DEL_SHOP_BOOST is issued from the character-delete path.
--
-- trial = 1 character was created through Try New Class and has NOT been boosted yet
-- trial = 0 character has been boosted; the entitlement that paid for it is consumed
--
-- `distributionId` is the entitlement (wire DistributionID) that paid for the boost, kept so a
-- support query can walk a boosted character back to the purchase that produced it. It is 0 for a
-- trial row, because a trial does not consume an entitlement.
--
CREATE TABLE IF NOT EXISTS `character_shop_boost` (
`guid` BIGINT UNSIGNED NOT NULL,
`productId` INT UNSIGNED NOT NULL DEFAULT 0,
`distributionId` BIGINT UNSIGNED NOT NULL DEFAULT 0,
`specializationId` INT UNSIGNED NOT NULL DEFAULT 0,
`trial` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`boostedAt` BIGINT NOT NULL DEFAULT 0,
PRIMARY KEY (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='In-game Shop: boosted and class-trial characters';
@@ -0,0 +1,18 @@
--
-- CMSG_CRAFTING_ORDER_REPORT_PLAYER: persist player reports filed against a crafting-order participant.
--
DROP TABLE IF EXISTS `crafting_order_reports`;
CREATE TABLE `crafting_order_reports` (
`ReportID` bigint unsigned NOT NULL AUTO_INCREMENT,
`OrderID` bigint unsigned NOT NULL DEFAULT '0',
`ReporterGuid` bigint unsigned NOT NULL DEFAULT '0',
`ReportedGuid` bigint unsigned NOT NULL DEFAULT '0',
`ReportType` int NOT NULL DEFAULT '0',
`MajorCategory` int NOT NULL DEFAULT '0',
`MinorCategoryFlags` int NOT NULL DEFAULT '0',
`Comment` text,
`ReportTime` bigint NOT NULL DEFAULT '0',
PRIMARY KEY (`ReportID`),
KEY `idx_order` (`OrderID`),
KEY `idx_reported` (`ReportedGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,48 @@
-- Midnight 12.1 Housing WIP persistence required by HousingHandler.cpp.
DROP TABLE IF EXISTS `character_housing`;
CREATE TABLE IF NOT EXISTS `character_housing` (
`OwnerGuid` bigint unsigned NOT NULL,
`HouseGuid` varchar(64) NOT NULL,
`CosmeticOwnerGuid` varchar(64) NOT NULL,
`NeighborhoodGuid` varchar(64) NOT NULL,
`PlotID` tinyint unsigned NOT NULL DEFAULT 0,
`HouseSettingFlags` int unsigned NOT NULL DEFAULT 0,
`ReservationTime` timestamp NULL DEFAULT NULL,
`CreatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`OwnerGuid`),
UNIQUE KEY `uk_character_housing_house` (`HouseGuid`),
KEY `idx_character_housing_neighborhood` (`NeighborhoodGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE IF EXISTS `housing_neighborhood`;
CREATE TABLE IF NOT EXISTS `housing_neighborhood` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`OwnerGuid` bigint unsigned NOT NULL,
`Name` varchar(64) NOT NULL,
`Type` tinyint unsigned NOT NULL DEFAULT 0,
`Flags` int unsigned NOT NULL DEFAULT 0,
`CreatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`NeighborhoodGuid`),
KEY `idx_housing_neighborhood_owner` (`OwnerGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE IF EXISTS `account_housing_decor`;
CREATE TABLE IF NOT EXISTS `account_housing_decor` (
`BattlenetAccountId` int unsigned NOT NULL,
`DecorId` int unsigned NOT NULL,
`Quantity` int unsigned NOT NULL DEFAULT 0,
`AcquiredAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`BattlenetAccountId`, `DecorId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE IF EXISTS `character_housing_permission`;
CREATE TABLE IF NOT EXISTS `character_housing_permission` (
`HouseGuid` varchar(64) NOT NULL,
`PlayerGuid` bigint unsigned NOT NULL,
`PermissionFlags` int unsigned NOT NULL DEFAULT 0,
`GrantedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`HouseGuid`, `PlayerGuid`),
KEY `idx_character_housing_permission_player` (`PlayerGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,70 @@
-- Midnight 12.1 Housing Part 2: placed decor and idempotent deferred-decor redemption.
DROP TABLE IF EXISTS `housing_placed_decor`;
CREATE TABLE `housing_placed_decor` (
`DecorGuid` varchar(64) NOT NULL,
`HouseGuid` varchar(64) NOT NULL,
`OwnerGuid` bigint unsigned NOT NULL,
`PositionX` float NOT NULL,
`PositionY` float NOT NULL,
`PositionZ` float NOT NULL,
`RotationX` float NOT NULL,
`RotationY` float NOT NULL,
`RotationZ` float NOT NULL,
`Scale` float NOT NULL DEFAULT 1,
`AttachParentGuid` varchar(64) NOT NULL,
`RoomGuid` varchar(64) NOT NULL,
`ParentHouseFixtureGuid` varchar(64) NOT NULL,
`PlacedComponentID` int NOT NULL DEFAULT 0,
`CreatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`DecorGuid`),
KEY `idx_housing_placed_decor_house` (`HouseGuid`),
KEY `idx_housing_placed_decor_owner` (`OwnerGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE IF EXISTS `housing_deferred_decor_redemption`;
CREATE TABLE `housing_deferred_decor_redemption` (
`BattlenetAccountId` int unsigned NOT NULL,
`TransactionID` int unsigned NOT NULL,
`DecorID` int unsigned NOT NULL,
`DecorGuid` varchar(64) NOT NULL,
`RedeemedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`BattlenetAccountId`, `TransactionID`),
UNIQUE KEY `uq_housing_deferred_decor_guid` (`DecorGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Capture-backed static plot metadata. Account/character GUIDs are intentionally
-- excluded: the server binds a reserved plot to its owner at runtime.
DROP TABLE IF EXISTS `housing_plot_template`;
CREATE TABLE `housing_plot_template` (
`PlotID` smallint unsigned NOT NULL,
`ExteriorMapID` smallint unsigned NOT NULL,
`InteriorMapID` smallint unsigned NOT NULL,
`DestinationX` float NOT NULL,
`DestinationY` float NOT NULL,
`DestinationZ` float NOT NULL,
`DestinationO` float NOT NULL,
`CornerstoneEntry` int unsigned NOT NULL,
`VerifiedBuild` int NOT NULL DEFAULT 0,
PRIMARY KEY (`PlotID`, `ExteriorMapID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Plot 15 is the complete plot/Cornerstone/teleport tuple observed in the
-- 12.1.0.69587 Housing capture.
DELETE FROM `housing_plot_template` WHERE `PlotID` = 15 AND `ExteriorMapID` = 2735;
INSERT INTO `housing_plot_template`
(`PlotID`, `ExteriorMapID`, `InteriorMapID`, `DestinationX`, `DestinationY`,
`DestinationZ`, `DestinationO`, `CornerstoneEntry`, `VerifiedBuild`)
VALUES
(15, 2735, 2783, 2765.7249, 119.3435, 66.871, 1.11701298, 457142, 69587);
-- Midnight 12.1.0.69587 Housing: align Plot 15 teleport with its captured Cornerstone.
UPDATE `housing_plot_template`
SET `DestinationX` = 2765.7249,
`DestinationY` = 119.3435,
`DestinationZ` = 66.8710,
`DestinationO` = 1.11701298,
`CornerstoneEntry` = 457142,
`VerifiedBuild` = 69587
WHERE `PlotID` = 15 AND `ExteriorMapID` = 2735;
@@ -0,0 +1,86 @@
-- Midnight 12.1.0.69587 Housing dynamic entity persistence.
-- Rows are house-scoped because captured object GUIDs and attachment graphs are instance data.
DROP TABLE IF EXISTS `housing_room_entity`;
CREATE TABLE `housing_room_entity` (
`RoomGuid` varchar(64) NOT NULL,
`HouseGuid` varchar(64) NOT NULL,
`HouseRoomID` int NOT NULL,
`Flags` int NOT NULL DEFAULT 0,
`PositionX` float NOT NULL DEFAULT 0,
`PositionY` float NOT NULL DEFAULT 0,
`PositionZ` float NOT NULL DEFAULT 0,
`RotationX` float NOT NULL DEFAULT 0,
`RotationY` float NOT NULL DEFAULT 0,
`RotationZ` float NOT NULL DEFAULT 0,
`RotationW` float NOT NULL DEFAULT 1,
`Scale` float NOT NULL DEFAULT 1,
`AttachmentFlags` tinyint unsigned NOT NULL DEFAULT 3,
PRIMARY KEY (`RoomGuid`),
KEY `idx_housing_room_house` (`HouseGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE IF EXISTS `housing_room_component_entity`;
CREATE TABLE `housing_room_component_entity` (
`EntityGuid` varchar(64) NOT NULL,
`HouseGuid` varchar(64) NOT NULL,
`RoomGuid` varchar(64) NOT NULL,
`FileDataID` int unsigned NOT NULL,
`IsWMO` tinyint unsigned NOT NULL DEFAULT 1,
`IsRoom` tinyint unsigned NOT NULL DEFAULT 1,
`AttachParentGuid` varchar(64) NOT NULL,
`PositionX` float NOT NULL DEFAULT 0,
`PositionY` float NOT NULL DEFAULT 0,
`PositionZ` float NOT NULL DEFAULT 0,
`RotationX` float NOT NULL DEFAULT 0,
`RotationY` float NOT NULL DEFAULT 0,
`RotationZ` float NOT NULL DEFAULT 0,
`RotationW` float NOT NULL DEFAULT 1,
`Scale` float NOT NULL DEFAULT 1,
`AttachmentFlags` tinyint unsigned NOT NULL DEFAULT 3,
`RoomComponentOptionID` int NOT NULL DEFAULT 0,
`RoomComponentID` int NOT NULL DEFAULT 0,
`RoomComponentType` tinyint unsigned NOT NULL DEFAULT 0,
`HouseThemeID` int NOT NULL DEFAULT 0,
`RoomComponentTextureID` int NOT NULL DEFAULT 0,
`RoomComponentTypeParam` int NOT NULL DEFAULT 0,
PRIMARY KEY (`EntityGuid`),
KEY `idx_housing_room_component_house` (`HouseGuid`),
KEY `idx_housing_room_component_room` (`RoomGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE IF EXISTS `housing_fixture_entity`;
CREATE TABLE `housing_fixture_entity` (
`EntityGuid` varchar(64) NOT NULL,
`HouseGuid` varchar(64) NOT NULL,
`FileDataID` int unsigned NOT NULL,
`IsWMO` tinyint unsigned NOT NULL DEFAULT 1,
`IsRoom` tinyint unsigned NOT NULL DEFAULT 0,
`AttachParentGuid` varchar(64) NOT NULL,
`PositionX` float NOT NULL DEFAULT 0,
`PositionY` float NOT NULL DEFAULT 0,
`PositionZ` float NOT NULL DEFAULT 0,
`RotationX` float NOT NULL DEFAULT 0,
`RotationY` float NOT NULL DEFAULT 0,
`RotationZ` float NOT NULL DEFAULT 0,
`RotationW` float NOT NULL DEFAULT 1,
`Scale` float NOT NULL DEFAULT 1,
`AttachmentFlags` tinyint unsigned NOT NULL DEFAULT 3,
`ExteriorComponentID` int NOT NULL DEFAULT 0,
`HouseExteriorWmoDataID` int NOT NULL DEFAULT 0,
`ExteriorComponentHookID` int NOT NULL DEFAULT -1,
`ExteriorComponentType` tinyint unsigned NOT NULL DEFAULT 0,
`Size` tinyint unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`EntityGuid`),
KEY `idx_housing_fixture_house` (`HouseGuid`),
KEY `idx_housing_fixture_parent` (`AttachParentGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `housing_placed_decor`
ADD COLUMN `EntityGuid` varchar(64) NULL AFTER `DecorGuid`,
ADD COLUMN `FileDataID` int unsigned NOT NULL DEFAULT 0 AFTER `OwnerGuid`,
ADD COLUMN `RotationW` float NOT NULL DEFAULT 1 AFTER `RotationZ`,
ADD COLUMN `Flags` tinyint unsigned NOT NULL DEFAULT 0 AFTER `PlacedComponentID`,
ADD COLUMN `IsWMO` tinyint unsigned NOT NULL DEFAULT 0 AFTER `Flags`,
ADD COLUMN `IsRoom` tinyint unsigned NOT NULL DEFAULT 0 AFTER `IsWMO`,
ADD COLUMN `AttachmentFlags` tinyint unsigned NOT NULL DEFAULT 3 AFTER `IsRoom`;
@@ -0,0 +1,120 @@
-- Midnight 12.1.0.69587 Housing: data-driven Alliance and Horde plot catalogue.
-- Source: NeighborhoodMap.db2 and NeighborhoodPlot.db2 from build 69587.
-- NeighborhoodMap 1 = Alliance map 2735; NeighborhoodMap 2 = Horde map 2736.
DELETE FROM `housing_plot_template` WHERE `ExteriorMapID` IN (2735, 2736);
INSERT INTO `housing_plot_template`
(`PlotID`, `ExteriorMapID`, `InteriorMapID`, `DestinationX`, `DestinationY`,
`DestinationZ`, `DestinationO`, `CornerstoneEntry`, `VerifiedBuild`)
VALUES
(0, 2736, 2783, 1256.38977, 1088.05249, 55.6567001, 1.64061153, 475055, 69587),
(1, 2736, 2783, 774.483398, -474.99411, 11.7054996, 4.14515686, 475085, 69587),
(2, 2736, 2783, 1926.21155, 946.071411, 101.642197, 1.91113889, 475054, 69587),
(3, 2736, 2783, 794.223816, -207.5298, 15.6171999, 3.48193121, 475094, 69587),
(4, 2736, 2783, 1610.8241, -242.196106, 76.2837982, 3.38593888, 475067, 69587),
(5, 2736, 2783, 736.202026, -436.041199, 3.1479001, 2.46964121, 475106, 69587),
(6, 2736, 2783, 652.970093, 39.7509003, 4.17980003, 3.08050632, 475076, 69587),
(7, 2736, 2783, 576.01239, -318.849792, 6.82270002, 2.18166208, 569611, 69587),
(8, 2736, 2783, 1341.99158, -633.449585, 21.2838993, 5.3494339, 475072, 69587),
(9, 2736, 2783, 1666.97473, 1050.54932, 48.5917015, 1.07337832, 475057, 69587),
(10, 2736, 2783, 1267.80164, -168.746399, 73.0510025, 4.11025, 475095, 69587),
(11, 2736, 2783, 1104.66479, 883.886475, 6.83330011, 3.25503969, 475061, 69587),
(12, 2736, 2783, 547.151672, 638.714294, 154.810196, 2.60054159, 582082, 69587),
(13, 2736, 2783, 902.671082, -542.786316, 1.96220005, 4.59021568, 475091, 69587),
(14, 2736, 2783, 1179.80969, -640.692871, 5.58500004, 4.82583666, 475079, 69587),
(15, 2736, 2783, 2153.27197, -741.383484, 142.751694, 2.69653416, 475071, 69587),
(16, 2736, 2783, 1481.15002, -7.52926016, 78.217598, 5.6548667, 576758, 69587),
(17, 2736, 2783, 959.952881, 841.212402, 4.7887001, 2.23402309, 567160, 69587),
(18, 2736, 2783, 1528.53479, 998.123779, 35.6212997, 6.24828339, 475059, 69587),
(19, 2736, 2783, 383.664795, -107.684196, 6.49800014, 3.13286591, 569610, 69587),
(20, 2736, 2783, 1866.99902, -517.239807, 130.538696, 2.53072786, 475092, 69587),
(21, 2736, 2783, 1658.8584, -166.788193, 81.0233002, 4.56403685, 475096, 69587),
(22, 2736, 2783, 485.596985, 305.609894, 99.2686996, 5.6286869, 475086, 69587),
(23, 2736, 2783, 1922.68811, -706.482483, 133.981598, 6.03883934, 475080, 69587),
(24, 2736, 2783, 227.097504, 652.787415, 11.7489004, 3.28121901, 566793, 69587),
(25, 2736, 2783, 1841.39746, 663.865295, 88.3912964, 0.305432796, 475051, 69587),
(26, 2736, 2783, 1080.48035, 1021.32343, 3.69679999, 2.44346094, 475063, 69587),
(27, 2736, 2783, 1166.09485, 461.580292, 153.914307, 3.14159274, 475064, 69587),
(28, 2736, 2783, 1662.88965, 912.213074, 37.5280991, 1.43990111, 475062, 69587),
(29, 2736, 2783, 1167.75415, 159.078201, 34.9571991, 3.97062373, 475104, 69587),
(30, 2736, 2783, 955.514221, 474.296387, 108.533096, 2.53072786, 475060, 69587),
(31, 2736, 2783, 2076.98438, -272.490295, 138.3172, 6.16101313, 475098, 69587),
(32, 2736, 2783, 670.749878, 434.961212, 9.01790047, 4.26732969, 475081, 69587),
(33, 2736, 2783, 1127.10754, 768.396118, 17.6096992, 0.637045383, 475053, 69587),
(34, 2736, 2783, 1310.15015, -108.338898, 73.1512985, 1.71042502, 475073, 69587),
(35, 2736, 2783, 1789.92896, -948.381226, 92.4789963, 4.24987698, 475102, 69587),
(36, 2736, 2783, 1803.66797, 641.84259, 84.8967972, 4.20624399, 475066, 69587),
(37, 2736, 2783, 307.560699, 79.0978012, 23.3638992, 2.88852072, 569609, 69587),
(38, 2736, 2783, 1844.10413, -877.720581, 120.786003, 5.63741398, 475077, 69587),
(39, 2736, 2783, 2234.229, -868.239929, 160.227798, 5.06145668, 582083, 69587),
(40, 2736, 2783, 1026.59143, 165.963898, 31.0340996, 3.54301858, 475090, 69587),
(41, 2736, 2783, 1340.33936, 619.31427, 42.0043983, 4.56403589, 475058, 69587),
(42, 2736, 2783, 1760.35242, -864.990601, 116.558601, 3.28994608, 475100, 69587),
(43, 2736, 2783, 642.297485, 706.875488, 113.917702, 2.60054159, 582085, 69587),
(44, 2736, 2783, 1900.57751, -448.425995, 136.894302, 0.0436336994, 475068, 69587),
(45, 2736, 2783, 1883.48804, -340.904388, 129.694305, 1.57952571, 475097, 69587),
(46, 2736, 2783, 2266.896, -588.512085, 160.835297, 0.654502392, 475083, 69587),
(47, 2736, 2783, 1363.78406, 83.729599, 50.0439987, 0.506145716, 475093, 69587),
(48, 2736, 2783, 1213.9884, -12.2238998, 104.167999, 0.986114979, 475088, 69587),
(49, 2736, 2783, 403.947205, 195.331406, 109.733704, 4.5465827, 475087, 69587),
(50, 2736, 2783, 1033.56128, 698.043579, 9.05720043, 4.45058966, 475052, 69587),
(51, 2736, 2783, 640.64093, -114.141296, 2.6085, 3.26376581, 475105, 69587),
(52, 2736, 2783, 1668.2832, -676.47168, 99.8794022, 3.52556562, 475099, 69587),
(53, 2736, 2783, 1643.02209, -567.601013, 100.008598, 3.12413931, 475103, 69587),
(54, 2736, 2783, 748.523315, 840.075317, 7.98140001, 3.05432749, 582084, 69587),
(0, 2735, 2783, 2939.34375, -212.255402, 113.320999, 5.83812618, 527268, 69587),
(1, 2735, 2783, 2675.42505, 649.38031, 49.5349998, 5.27089405, 527310, 69587),
(2, 2735, 2783, 2516.89282, 161.045303, 60.2431984, 0.314159393, 527266, 69587),
(3, 2735, 2783, 3157.21509, -526.436829, 190.954803, 0.401426077, 527292, 69587),
(4, 2735, 2783, 3495.69702, 1403.7948, 4.9604001, 4.64257669, 571209, 69587),
(5, 2735, 2783, 2613.41748, 963.440186, 36.8871002, 0.523599386, 527286, 69587),
(6, 2735, 2783, 2663.64502, -444.185089, 121.045403, 0.130899906, 527260, 69587),
(7, 2735, 2783, 3569.28174, 268.887787, 102.098198, 4.93928146, 527282, 69587),
(8, 2735, 2783, 2358.58569, -3.76069999, 100.083702, 2.18166304, 527274, 69587),
(9, 2735, 2783, 3550.79004, 319.627991, 95.6286011, 2.32128859, 527294, 69587),
(10, 2735, 2783, 2456.32568, 284.006012, 49.6328011, 2.35619521, 527301, 69587),
(11, 2735, 2783, 2940.15527, 123.1642, 62.9803009, 3.14159274, 527302, 69587),
(12, 2735, 2783, 3341.06567, 1518.95337, 7.14669991, 1.85877991, 571211, 69587),
(13, 2735, 2783, 2818.31909, 886.295898, 30.5053997, 0.0785398483, 527311, 69587),
(14, 2735, 2783, 2726.41943, 1072.91638, 27.5897999, 5.46288013, 527265, 69587),
(15, 2735, 2783, 2765.72485, 119.343498, 66.8710022, 1.11701322, 527278, 69587),
(16, 2735, 2783, 2966.34058, 99.1072998, 64.9800034, 5.41924858, 527272, 69587),
(17, 2735, 2783, 2925.4436, -347.223694, 120.3004, 5.5065136, 527262, 69587),
(18, 2735, 2783, 2284.64014, -217.274994, 116.247002, 3.57792521, 527277, 69587),
(19, 2735, 2783, 3327.42847, 1099.90051, 13.0636997, 2.24275255, 527295, 69587),
(20, 2735, 2783, 2470.12524, -313.879486, 101.591797, 2.89724684, 527306, 69587),
(21, 2735, 2783, 2592.14624, -610.73053, 137.939896, 4.76474857, 527281, 69587),
(22, 2735, 2783, 3068.99902, -582.770874, 214.505096, 2.48709488, 527314, 69587),
(23, 2735, 2783, 3306.93481, -593.259888, 207.962799, 5.16617489, 527290, 69587),
(24, 2735, 2783, 3802.90234, 1153.36218, 8.78120041, 0.043633461, 527303, 69587),
(25, 2735, 2783, 3439.79419, 1462.99548, 8.06919956, 1.21300626, 571207, 69587),
(26, 2735, 2783, 2612.52954, 640.883423, 47.2089005, 4.97418833, 527264, 69587),
(27, 2735, 2783, 3639.57544, 260.099396, 104.364304, 5.31452799, 527261, 69587),
(28, 2735, 2783, 3637.177, 1360.49243, 33.8053017, 1.48353446, 571210, 69587),
(29, 2735, 2783, 3490.44482, 1174.66431, 2.34850001, 0.157079697, 527309, 69587),
(30, 2735, 2783, 2697.58203, 819.94751, 44.1293983, 3.14159274, 527275, 69587),
(31, 2735, 2783, 3366.71436, -401.5177, 186.404907, 2.68780756, 527279, 69587),
(32, 2735, 2783, 3131.57935, -650.777283, 226.326599, 5.68104696, 527283, 69587),
(33, 2735, 2783, 2479.93823, -87.535202, 95.2116013, 0.375246763, 527285, 69587),
(34, 2735, 2783, 3470.93481, 735.581787, 81.4804001, 2.35619521, 527313, 69587),
(35, 2735, 2783, 2440.76001, 929.116028, 35.1739998, 0.514872551, 527291, 69587),
(36, 2735, 2783, 2734.84351, 1141.5863, 24.9641991, 0.383973122, 527271, 69587),
(37, 2735, 2783, 2505.19775, 554.90918, 40.7759018, 3.99680424, 527269, 69587),
(38, 2735, 2783, 2581.07568, -334.281586, 106.215599, 2.26020288, 527308, 69587),
(39, 2735, 2783, 3601.63696, 640.029419, 83.4679031, 1.70169795, 527300, 69587),
(40, 2735, 2783, 3519.93555, 1456.10291, 9.42710018, 5.96029949, 571208, 69587),
(41, 2735, 2783, 2190.61084, -336.132385, 98.4821014, 3.13286591, 527297, 69587),
(42, 2735, 2783, 3589.02148, 510.005615, 89.3632965, 4.8432889, 527270, 69587),
(43, 2735, 2783, 3643.11548, 1204.49951, 37.2111015, 5.72467995, 527299, 69587),
(44, 2735, 2783, 3646.68457, 346.107086, 102.6371, 0.462513924, 527293, 69587),
(45, 2735, 2783, 3457.3501, 668.078979, 86.7388, 3.49065924, 527263, 69587),
(46, 2735, 2783, 3164.2666, 348.949188, 73.8582993, 0.0261843204, 527276, 69587),
(47, 2735, 2783, 3317.81323, 429.88031, 71.9238968, 4.38077641, 527288, 69587),
(48, 2735, 2783, 3048.70288, 824.377808, 74.6530991, 1.63188303, 527289, 69587),
(49, 2735, 2783, 3130.8457, 405.746613, 74.009201, 3.01069355, 527267, 69587),
(50, 2735, 2783, 3290.37061, 1000.69153, 22.6543007, 2.46964121, 527280, 69587),
(51, 2735, 2783, 3360.62622, 483.581207, 71.9281006, 1.77151132, 527298, 69587),
(52, 2735, 2783, 3362.92432, 1005.84589, 32.0760994, 5.68977356, 527304, 69587),
(53, 2735, 2783, 3009.36255, 794.764587, 74.5634003, 3.86590457, 527284, 69587),
(54, 2735, 2783, 3151.45947, 300.622101, 73.3356018, 4.75602245, 527305, 69587);
@@ -0,0 +1,130 @@
-- Complete NeighborhoodPlot transforms for dynamic Alliance and Horde housing entities.
ALTER TABLE `housing_plot_template`
ADD COLUMN `NeighborhoodMapID` int unsigned NOT NULL DEFAULT 0 AFTER `PlotID`,
ADD COLUMN `HousePositionX` float NOT NULL DEFAULT 0 AFTER `CornerstoneEntry`,
ADD COLUMN `HousePositionY` float NOT NULL DEFAULT 0 AFTER `HousePositionX`,
ADD COLUMN `HousePositionZ` float NOT NULL DEFAULT 0 AFTER `HousePositionY`,
ADD COLUMN `HouseRotationX` float NOT NULL DEFAULT 0 AFTER `HousePositionZ`,
ADD COLUMN `HouseRotationY` float NOT NULL DEFAULT 0 AFTER `HouseRotationX`,
ADD COLUMN `HouseRotationZ` float NOT NULL DEFAULT 0 AFTER `HouseRotationY`,
ADD COLUMN `CornerstonePositionX` float NOT NULL DEFAULT 0 AFTER `HouseRotationZ`,
ADD COLUMN `CornerstonePositionY` float NOT NULL DEFAULT 0 AFTER `CornerstonePositionX`,
ADD COLUMN `CornerstonePositionZ` float NOT NULL DEFAULT 0 AFTER `CornerstonePositionY`,
ADD COLUMN `CornerstoneRotationX` float NOT NULL DEFAULT 0 AFTER `CornerstonePositionZ`,
ADD COLUMN `CornerstoneRotationY` float NOT NULL DEFAULT 0 AFTER `CornerstoneRotationX`,
ADD COLUMN `CornerstoneRotationZ` float NOT NULL DEFAULT 0 AFTER `CornerstoneRotationY`,
ADD COLUMN `WorldStateID` int NOT NULL DEFAULT 0 AFTER `CornerstoneRotationZ`,
ADD COLUMN `PlotGameObjectID` int NOT NULL DEFAULT 0 AFTER `WorldStateID`,
ADD KEY `idx_housing_plot_neighborhood` (`NeighborhoodMapID`, `PlotID`);
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1289.82996, `HousePositionY`=1126.31995, `HousePositionZ`=57.0598984, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=4.04904175, `CornerstonePositionX`=1256.18054, `CornerstonePositionY`=1091.04517, `CornerstonePositionZ`=55.7604179, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.64061153, `WorldStateID`=29778, `PlotGameObjectID`=0 WHERE `PlotID`=0 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1239.09375, `HousePositionY`=-199.75, `HousePositionZ`=74.0639954, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=772.871521, `CornerstonePositionY`=-477.524323, `CornerstonePositionZ`=11.7048616, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.14515686, `WorldStateID`=29725, `PlotGameObjectID`=0 WHERE `PlotID`=1 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1236.40625, `HousePositionY`=-56.703125, `HousePositionZ`=76.3940125, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1925.21008, `CornerstonePositionY`=948.899292, `CornerstonePositionZ`=101.645851, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.91113889, `WorldStateID`=29736, `PlotGameObjectID`=0 WHERE `PlotID`=2 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1320.15283, `HousePositionY`=-73.6458359, `HousePositionZ`=74.2064514, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=791.395813, `CornerstonePositionY`=-208.53125, `CornerstonePositionZ`=15.6006947, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.48193121, `WorldStateID`=29745, `PlotGameObjectID`=0 WHERE `PlotID`=3 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1499.40454, `HousePositionY`=59.0815964, `HousePositionZ`=77.1372986, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1607.91321, `CornerstonePositionY`=-242.921875, `CornerstonePositionZ`=76.2829895, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.38593888, `WorldStateID`=29755, `PlotGameObjectID`=0 WHERE `PlotID`=4 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1675.29163, `HousePositionY`=-190.513885, `HousePositionZ`=78.3776474, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=733.854187, `CornerstonePositionY`=-434.173615, `CornerstonePositionZ`=2.39409733, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.46964121, `WorldStateID`=29763, `PlotGameObjectID`=0 WHERE `PlotID`=5 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1543.58679, `HousePositionY`=-33.640625, `HousePositionZ`=78.4231339, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=649.975708, `CornerstonePositionY`=39.9340286, `CornerstonePositionZ`=3.91840291, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.08050632, `WorldStateID`=29765, `PlotGameObjectID`=0 WHERE `PlotID`=6 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1149.98608, `HousePositionY`=-109.125, `HousePositionZ`=73.9778976, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=574.291687, `CornerstonePositionY`=-316.392365, `CornerstonePositionZ`=7.14350891, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.18166208, `WorldStateID`=29766, `PlotGameObjectID`=0 WHERE `PlotID`=7 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1621.55005, `HousePositionY`=-266.993011, `HousePositionZ`=74.520401, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1343.776, `CornerstonePositionY`=-635.861145, `CornerstonePositionZ`=21.166666, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.3494339, `WorldStateID`=29767, `PlotGameObjectID`=0 WHERE `PlotID`=8 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=798.484375, `HousePositionY`=-264.90451, `HousePositionZ`=33.8332672, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1668.40625, `CornerstonePositionY`=1053.18579, `CornerstonePositionZ`=48.4670143, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.07337832, `WorldStateID`=29768, `PlotGameObjectID`=0 WHERE `PlotID`=9 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=988.774292, `HousePositionY`=154.793411, `HousePositionZ`=31.3477249, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1266.10242, `CornerstonePositionY`=-171.21875, `CornerstonePositionZ`=72.9337311, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.11025, `WorldStateID`=29726, `PlotGameObjectID`=0 WHERE `PlotID`=10 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=2104.53296, `HousePositionY`=-298.588531, `HousePositionZ`=136.801758, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1101.68408, `CornerstonePositionY`=883.546875, `CornerstonePositionZ`=6.83333349, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.25503969, `WorldStateID`=29727, `PlotGameObjectID`=0 WHERE `PlotID`=11 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=503.543396, `HousePositionY`=-81.2135391, `HousePositionZ`=1.46946418, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=519.734375, `CornerstonePositionY`=693.203125, `CornerstonePositionZ`=155.520828, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.60054159, `WorldStateID`=29728, `PlotGameObjectID`=0 WHERE `PlotID`=12 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=673.842041, `HousePositionY`=11.3559027, `HousePositionZ`=22.7558384, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=902.305542, `CornerstonePositionY`=-545.763916, `CornerstonePositionZ`=1.43055558, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.59021568, `WorldStateID`=29729, `PlotGameObjectID`=0 WHERE `PlotID`=13 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1883.17883, `HousePositionY`=-282.579865, `HousePositionZ`=130.343445, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1180.14929, `CornerstonePositionY`=-643.673645, `CornerstonePositionZ`=5.70659733, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.82583666, `WorldStateID`=29730, `PlotGameObjectID`=0 WHERE `PlotID`=14 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=632.673645, `HousePositionY`=-132.336807, `HousePositionZ`=3.62052846, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2150.56421, `CornerstonePositionY`=-740.092041, `CornerstonePositionZ`=141.666672, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.69653416, `WorldStateID`=29731, `PlotGameObjectID`=0 WHERE `PlotID`=15 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=416.888885, `HousePositionY`=-121.208344, `HousePositionZ`=4.27795506, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1493.41321, `CornerstonePositionY`=7.58159733, `CornerstonePositionZ`=78.328125, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.6548667, `WorldStateID`=29732, `PlotGameObjectID`=0 WHERE `PlotID`=16 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1368.724, `HousePositionY`=230.901047, `HousePositionZ`=44.7523727, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=958.105896, `CornerstonePositionY`=843.576416, `CornerstonePositionZ`=4.78819466, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.23402309, `WorldStateID`=29733, `PlotGameObjectID`=0 WHERE `PlotID`=17 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1728.65454, `HousePositionY`=-874.815979, `HousePositionZ`=116.490936, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1531.53296, `CornerstonePositionY`=998.019104, `CornerstonePositionZ`=36.2552071, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=6.24828339, `WorldStateID`=29734, `PlotGameObjectID`=0 WHERE `PlotID`=18 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1934.45483, `HousePositionY`=-541.807312, `HousePositionZ`=135.931961, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=380.664948, `CornerstonePositionY`=-107.65799, `CornerstonePositionZ`=6, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.13286591, `WorldStateID`=29735, `PlotGameObjectID`=0 WHERE `PlotID`=19 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1629.94971, `HousePositionY`=-688.880188, `HousePositionZ`=97.8434296, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1864.54163, `CornerstonePositionY`=-515.519104, `CornerstonePositionZ`=130.229172, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.53072786, `WorldStateID`=29737, `PlotGameObjectID`=0 WHERE `PlotID`=20 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=795.06427, `HousePositionY`=-388.598969, `HousePositionZ`=40.5091438, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1658.41492, `CornerstonePositionY`=-169.755203, `CornerstonePositionZ`=81.0329895, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.56403685, `WorldStateID`=29738, `PlotGameObjectID`=0 WHERE `PlotID`=21 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=964.855896, `HousePositionY`=-497.982635, `HousePositionZ`=37.9858513, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=488.315979, `CornerstonePositionY`=304.34201, `CornerstonePositionZ`=99.2083359, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.6286869, `WorldStateID`=29739, `PlotGameObjectID`=0 WHERE `PlotID`=22 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1960.09033, `HousePositionY`=-706.048645, `HousePositionZ`=133.20108, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1925.599, `CornerstonePositionY`=-707.208313, `CornerstonePositionZ`=134.03299, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=6.03883934, `WorldStateID`=29740, `PlotGameObjectID`=0 WHERE `PlotID`=23 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1102.02429, `HousePositionY`=148.515625, `HousePositionZ`=33.9286919, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=224.12674, `CornerstonePositionY`=652.369812, `CornerstonePositionZ`=12.1857643, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.28121901, `WorldStateID`=29741, `PlotGameObjectID`=0 WHERE `PlotID`=24 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1833.07642, `HousePositionY`=-491.034729, `HousePositionZ`=133.244431, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1844.25867, `CornerstonePositionY`=664.767395, `CornerstonePositionZ`=88.5257568, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.305432796, `WorldStateID`=29742, `PlotGameObjectID`=0 WHERE `PlotID`=25 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1274.19446, `HousePositionY`=-626.503479, `HousePositionZ`=37.310154, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1078.18225, `CornerstonePositionY`=1023.25177, `CornerstonePositionZ`=3.14756942, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.44346094, `WorldStateID`=29743, `PlotGameObjectID`=0 WHERE `PlotID`=26 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1955.74658, `HousePositionY`=-447.786469, `HousePositionZ`=137.591614, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1213.32983, `CornerstonePositionY`=462.809021, `CornerstonePositionZ`=154.020828, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.14159274, `WorldStateID`=29724, `PlotGameObjectID`=0 WHERE `PlotID`=27 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1384.30725, `HousePositionY`=119.887154, `HousePositionZ`=49.9795418, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1663.28125, `CornerstonePositionY`=915.1875, `CornerstonePositionZ`=37.6111145, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.43990111, `WorldStateID`=29744, `PlotGameObjectID`=0 WHERE `PlotID`=28 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1175.23792, `HousePositionY`=-600.18927, `HousePositionZ`=37.2994118, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1165.72742, `CornerstonePositionY`=156.866318, `CornerstonePositionZ`=34.9565964, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.97062373, `WorldStateID`=29718, `PlotGameObjectID`=0 WHERE `PlotID`=29 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1595.39929, `HousePositionY`=-601.147583, `HousePositionZ`=97.8911819, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=952.590271, `CornerstonePositionY`=483.579865, `CornerstonePositionZ`=108.670143, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.53072786, `WorldStateID`=29747, `PlotGameObjectID`=0 WHERE `PlotID`=30 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1729.51221, `HousePositionY`=-541.550354, `HousePositionZ`=104.135048, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2079.96191, `CornerstonePositionY`=-272.855896, `CornerstonePositionZ`=138.317703, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=6.16101313, `WorldStateID`=29746, `PlotGameObjectID`=0 WHERE `PlotID`=31 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1771.22742, `HousePositionY`=-953.083313, `HousePositionZ`=116.490997, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=669.458313, `CornerstonePositionY`=432.253479, `CornerstonePositionZ`=9.00173664, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.26732969, `WorldStateID`=29748, `PlotGameObjectID`=0 WHERE `PlotID`=32 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1858.23438, `HousePositionY`=-873.920166, `HousePositionZ`=121.266853, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1129.51917, `CornerstonePositionY`=770.180542, `CornerstonePositionZ`=17.6215286, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.637045383, `WorldStateID`=29749, `PlotGameObjectID`=0 WHERE `PlotID`=33 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=2101.427, `HousePositionY`=-201.295135, `HousePositionZ`=136.801712, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1309.73267, `CornerstonePositionY`=-105.368057, `CornerstonePositionZ`=73.2638702, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.71042502, `WorldStateID`=29750, `PlotGameObjectID`=0 WHERE `PlotID`=34 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=599.267395, `HousePositionY`=-273.642365, `HousePositionZ`=4.28020573, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1788.59033, `CornerstonePositionY`=-951.065979, `CornerstonePositionZ`=92.3142395, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.24987698, `WorldStateID`=29751, `PlotGameObjectID`=0 WHERE `PlotID`=35 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=875.524292, `HousePositionY`=-467.357635, `HousePositionZ`=40.5583839, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1802.2135, `CornerstonePositionY`=639.21875, `CornerstonePositionZ`=85.6006927, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.20624399, `WorldStateID`=29752, `PlotGameObjectID`=0 WHERE `PlotID`=36 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1188.10071, `HousePositionY`=479.788208, `HousePositionZ`=122.239571, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=304.65625, `CornerstonePositionY`=79.8489609, `CornerstonePositionZ`=24.3628483, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.88852072, `WorldStateID`=29753, `PlotGameObjectID`=0 WHERE `PlotID`=37 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1006.46008, `HousePositionY`=920.821167, `HousePositionZ`=7.8577795, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1846.5, `CornerstonePositionY`=-879.526062, `CornerstonePositionZ`=120.711807, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.63741398, `WorldStateID`=29754, `PlotGameObjectID`=0 WHERE `PlotID`=38 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=563.423645, `HousePositionY`=549.201416, `HousePositionZ`=83.2299805, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2235.25513, `CornerstonePositionY`=-871.059021, `CornerstonePositionZ`=160.227432, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.06145668, `WorldStateID`=29720, `PlotGameObjectID`=0 WHERE `PlotID`=39 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1032.36804, `HousePositionY`=660.536438, `HousePositionZ`=9.11426735, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1023.8299, `CornerstonePositionY`=164.791672, `CornerstonePositionZ`=31.1076393, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.54301858, `WorldStateID`=29757, `PlotGameObjectID`=0 WHERE `PlotID`=40 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1877.49658, `HousePositionY`=682.232666, `HousePositionZ`=94.3096695, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1339.89587, `CornerstonePositionY`=616.347229, `CornerstonePositionZ`=42.0034752, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.56403589, `WorldStateID`=29756, `PlotGameObjectID`=0 WHERE `PlotID`=41 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1345.19788, `HousePositionY`=577.53125, `HousePositionZ`=42.0378609, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1757.38538, `CornerstonePositionY`=-865.434021, `CornerstonePositionZ`=116.753471, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.28994608, `WorldStateID`=29722, `PlotGameObjectID`=0 WHERE `PlotID`=42 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1560.4375, `HousePositionY`=1002.44269, `HousePositionZ`=37.3808861, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=639.866333, `CornerstonePositionY`=692.515625, `CornerstonePositionZ`=113.904518, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.60054159, `WorldStateID`=29664, `PlotGameObjectID`=0 WHERE `PlotID`=43 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1100.03125, `HousePositionY`=965.151062, `HousePositionZ`=8.17554188, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1903.57471, `CornerstonePositionY`=-448.295135, `CornerstonePositionZ`=137.003479, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.0436336994, `WorldStateID`=29723, `PlotGameObjectID`=0 WHERE `PlotID`=44 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1676.151, `HousePositionY`=950.605896, `HousePositionZ`=37.4253616, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1883.46179, `CornerstonePositionY`=-337.90451, `CornerstonePositionZ`=129.980911, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.57952571, `WorldStateID`=29758, `PlotGameObjectID`=0 WHERE `PlotID`=45 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1667.92883, `HousePositionY`=1084.51733, `HousePositionZ`=45.9019852, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2269.27612, `CornerstonePositionY`=-586.685791, `CornerstonePositionZ`=161.475693, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.654502392, `WorldStateID`=29759, `PlotGameObjectID`=0 WHERE `PlotID`=46 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=861.373291, `HousePositionY`=478.059021, `HousePositionZ`=69.0119629, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1366.40796, `CornerstonePositionY`=85.1840286, `CornerstonePositionZ`=49.7309036, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.506145716, `WorldStateID`=29760, `PlotGameObjectID`=0 WHERE `PlotID`=47 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=689.965271, `HousePositionY`=445.487854, `HousePositionZ`=7.07972193, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1215.64417, `CornerstonePositionY`=-9.72222233, `CornerstonePositionZ`=104.463539, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.986114979, `WorldStateID`=29761, `PlotGameObjectID`=0 WHERE `PlotID`=48 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1159.89929, `HousePositionY`=787.769104, `HousePositionZ`=17.5986328, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=412.015625, `CornerstonePositionY`=194.885422, `CornerstonePositionZ`=109.75869, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.5465827, `WorldStateID`=29762, `PlotGameObjectID`=0 WHERE `PlotID`=49 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=997.088562, `HousePositionY`=738.880188, `HousePositionZ`=9.48407078, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1032.78479, `CornerstonePositionY`=695.145813, `CornerstonePositionZ`=9.00868034, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.45058966, `WorldStateID`=29719, `PlotGameObjectID`=0 WHERE `PlotID`=50 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=945.284729, `HousePositionY`=511.006958, `HousePositionZ`=69.5376663, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=637.663208, `CornerstonePositionY`=-114.506943, `CornerstonePositionZ`=2.94618058, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.26376581, `WorldStateID`=29769, `PlotGameObjectID`=0 WHERE `PlotID`=51 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=617.628479, `HousePositionY`=631.946167, `HousePositionZ`=81.6513214, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1665.50171, `CornerstonePositionY`=-677.59552, `CornerstonePositionZ`=99.7430573, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.52556562, `WorldStateID`=29770, `PlotGameObjectID`=0 WHERE `PlotID`=52 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=927.53302, `HousePositionY`=819.734375, `HousePositionZ`=7.1142664, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=1640.02258, `CornerstonePositionY`=-567.548645, `CornerstonePositionZ`=99.9861145, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.12413931, `WorldStateID`=29771, `PlotGameObjectID`=0 WHERE `PlotID`=53 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=2, `HousePositionX`=1926.60242, `HousePositionY`=969.859375, `HousePositionZ`=93.4767151, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=745.534729, `CornerstonePositionY`=840.336792, `CornerstonePositionZ`=8.75347233, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.05432749, `WorldStateID`=29772, `PlotGameObjectID`=0 WHERE `PlotID`=54 AND `ExteriorMapID`=2736;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2973.0791, `HousePositionY`=-245.322922, `HousePositionZ`=113.170952, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2942.7439, `CornerstonePositionY`=-214.265625, `CornerstonePositionZ`=113.112846, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.83812618, `WorldStateID`=29778, `PlotGameObjectID`=0 WHERE `PlotID`=0 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2706.0791, `HousePositionY`=646.427063, `HousePositionZ`=47.6890335, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2674.31763, `CornerstonePositionY`=651.84552, `CornerstonePositionZ`=49.2256966, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.27089405, `WorldStateID`=29725, `PlotGameObjectID`=0 WHERE `PlotID`=1 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3453.35254, `HousePositionY`=1058.71533, `HousePositionZ`=25.2093105, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2523.34546, `CornerstonePositionY`=171.178818, `CornerstonePositionZ`=60.4097214, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.314159393, `WorldStateID`=29736, `PlotGameObjectID`=0 WHERE `PlotID`=2 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3196.81958, `HousePositionY`=-501.583344, `HousePositionZ`=190.80069, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3166.54688, `CornerstonePositionY`=-525.715271, `CornerstonePositionZ`=190.651047, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.401426077, `WorldStateID`=29745, `PlotGameObjectID`=0 WHERE `PlotID`=3 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3491.65967, `HousePositionY`=1300.32288, `HousePositionZ`=17.0956974, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3495.48779, `CornerstonePositionY`=1400.80212, `CornerstonePositionZ`=4.28472233, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.64257669, `WorldStateID`=29755, `PlotGameObjectID`=0 WHERE `PlotID`=4 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2636.1875, `HousePositionY`=996.355896, `HousePositionZ`=37.5333099, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2615.62939, `CornerstonePositionY`=965.467041, `CornerstonePositionZ`=36.890625, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.523599386, `WorldStateID`=29763, `PlotGameObjectID`=0 WHERE `PlotID`=5 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2710.43677, `HousePositionY`=-428.743073, `HousePositionZ`=122.509308, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2662.95312, `CornerstonePositionY`=-427.987854, `CornerstonePositionZ`=121.833344, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.130899906, `WorldStateID`=29765, `PlotGameObjectID`=0 WHERE `PlotID`=6 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3576.45044, `HousePositionY`=234.59549, `HousePositionZ`=102.395523, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3581.92798, `CornerstonePositionY`=265.006958, `CornerstonePositionZ`=102.315979, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.93928146, `WorldStateID`=29766, `PlotGameObjectID`=0 WHERE `PlotID`=7 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2329.74316, `HousePositionY`=34.2204857, `HousePositionZ`=100.206207, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2351.66138, `CornerstonePositionY`=-11.604167, `CornerstonePositionZ`=100.142349, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.18166304, `WorldStateID`=29767, `PlotGameObjectID`=0 WHERE `PlotID`=8 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3524.30469, `HousePositionY`=342.861115, `HousePositionZ`=95.553772, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3547.51489, `CornerstonePositionY`=322.270844, `CornerstonePositionZ`=95.7100677, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.32128859, `WorldStateID`=29768, `PlotGameObjectID`=0 WHERE `PlotID`=9 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2427.0105, `HousePositionY`=5.30902767, `HousePositionZ`=100.029457, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2450.05396, `CornerstonePositionY`=267.446198, `CornerstonePositionZ`=50.2309036, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.35619521, `WorldStateID`=29726, `PlotGameObjectID`=0 WHERE `PlotID`=10 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2915.75781, `HousePositionY`=84.8854141, `HousePositionZ`=63.0604248, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2937.3186, `CornerstonePositionY`=122.1875, `CornerstonePositionZ`=62.7777786, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.14159274, `WorldStateID`=29727, `PlotGameObjectID`=0 WHERE `PlotID`=11 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3326.53394, `HousePositionY`=1484.48096, `HousePositionZ`=12.5476723, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3340.21362, `CornerstonePositionY`=1521.82983, `CornerstonePositionZ`=7.50347233, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.85877991, `WorldStateID`=29728, `PlotGameObjectID`=0 WHERE `PlotID`=12 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2844.91675, `HousePositionY`=910.201416, `HousePositionZ`=28.9181652, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2821.30981, `CornerstonePositionY`=886.53125, `CornerstonePositionZ`=30.583334, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.0785398483, `WorldStateID`=29729, `PlotGameObjectID`=0 WHERE `PlotID`=13 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2762.57202, `HousePositionY`=1066.36975, `HousePositionZ`=24.7555389, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2728.46533, `CornerstonePositionY`=1070.72229, `CornerstonePositionZ`=27.2881947, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.46288013, `WorldStateID`=29730, `PlotGameObjectID`=0 WHERE `PlotID`=14 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2771.04614, `HousePositionY`=163.815979, `HousePositionZ`=67.3829193, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2767.04004, `CornerstonePositionY`=122.039932, `CornerstonePositionZ`=66.8993073, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.11701322, `WorldStateID`=29731, `PlotGameObjectID`=0 WHERE `PlotID`=15 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3010.66235, `HousePositionY`=66.3003464, `HousePositionZ`=65.9751968, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2969.21704, `CornerstonePositionY`=98.2552109, `CornerstonePositionZ`=65.4270859, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.41924858, `WorldStateID`=29732, `PlotGameObjectID`=0 WHERE `PlotID`=16 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2948.99316, `HousePositionY`=-331.461823, `HousePositionZ`=118.099068, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2938.39502, `CornerstonePositionY`=-343.118073, `CornerstonePositionZ`=121.434029, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.5065136, `WorldStateID`=29733, `PlotGameObjectID`=0 WHERE `PlotID`=17 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2253.06763, `HousePositionY`=-232.050354, `HousePositionZ`=117.511841, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2287.10083, `CornerstonePositionY`=-228.611115, `CornerstonePositionZ`=116.527786, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.57792521, `WorldStateID`=29734, `PlotGameObjectID`=0 WHERE `PlotID`=18 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3334.87329, `HousePositionY`=1133.49133, `HousePositionZ`=19.1222744, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3325.56079, `CornerstonePositionY`=1102.24829, `CornerstonePositionZ`=13.0920143, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.24275255, `WorldStateID`=29735, `PlotGameObjectID`=0 WHERE `PlotID`=19 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2507.8855, `HousePositionY`=-369.854156, `HousePositionZ`=105.629181, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2471.47583, `CornerstonePositionY`=-331.336823, `CornerstonePositionZ`=101.637154, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.89724684, `WorldStateID`=29737, `PlotGameObjectID`=0 WHERE `PlotID`=20 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2609.5, `HousePositionY`=-486.513885, `HousePositionZ`=122.46122, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2592.77002, `CornerstonePositionY`=-613.664917, `CornerstonePositionZ`=138.177094, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.76474857, `WorldStateID`=29738, `PlotGameObjectID`=0 WHERE `PlotID`=21 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3038.52783, `HousePositionY`=-566.713562, `HousePositionZ`=214.280579, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3065.125, `CornerstonePositionY`=-579.90802, `CornerstonePositionZ`=214.347229, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.48709488, `WorldStateID`=29739, `PlotGameObjectID`=0 WHERE `PlotID`=22 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3339.00879, `HousePositionY`=-607.729187, `HousePositionZ`=204.286819, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3309.42188, `CornerstonePositionY`=-594.9375, `CornerstonePositionZ`=208.557297, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.16617489, `WorldStateID`=29740, `PlotGameObjectID`=0 WHERE `PlotID`=23 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2856.7605, `HousePositionY`=-263.196198, `HousePositionZ`=114.781403, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3803.50171, `CornerstonePositionY`=1159.10596, `CornerstonePositionZ`=8.74826431, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.043633461, `WorldStateID`=29741, `PlotGameObjectID`=0 WHERE `PlotID`=24 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3432.10254, `HousePositionY`=1436.66492, `HousePositionZ`=8.47468376, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3440.84473, `CornerstonePositionY`=1465.80554, `CornerstonePositionZ`=8.31597233, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.21300626, `WorldStateID`=29742, `PlotGameObjectID`=0 WHERE `PlotID`=25 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2599.97583, `HousePositionY`=608.112854, `HousePositionZ`=45.1348953, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2615.26392, `CornerstonePositionY`=633.758667, `CornerstonePositionZ`=47.7326393, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.97418833, `WorldStateID`=29743, `PlotGameObjectID`=0 WHERE `PlotID`=26 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3672.76831, `HousePositionY`=244.071182, `HousePositionZ`=104.399696, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3639.85596, `CornerstonePositionY`=259.371521, `CornerstonePositionZ`=104.381943, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.31452799, `WorldStateID`=29724, `PlotGameObjectID`=0 WHERE `PlotID`=27 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3628.06763, `HousePositionY`=1325.21533, `HousePositionZ`=29.6373196, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3637.43848, `CornerstonePositionY`=1363.48096, `CornerstonePositionZ`=33.6493073, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.48353446, `WorldStateID`=29744, `PlotGameObjectID`=0 WHERE `PlotID`=28 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3516.48169, `HousePositionY`=1185.64587, `HousePositionZ`=16.9397984, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3493.40796, `CornerstonePositionY`=1175.13367, `CornerstonePositionZ`=2.31597233, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.157079697, `WorldStateID`=29718, `PlotGameObjectID`=0 WHERE `PlotID`=29 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2662.35669, `HousePositionY`=831.465271, `HousePositionZ`=44.1460228, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2686.68066, `CornerstonePositionY`=813.067688, `CornerstonePositionZ`=43.7934036, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.14159274, `WorldStateID`=29747, `PlotGameObjectID`=0 WHERE `PlotID`=30 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3352.42285, `HousePositionY`=-331.163208, `HousePositionZ`=182.655029, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3368.13721, `CornerstonePositionY`=-403.112854, `CornerstonePositionZ`=186.428818, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.68780756, `WorldStateID`=29746, `PlotGameObjectID`=0 WHERE `PlotID`=31 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3284.97925, `HousePositionY`=-376.534729, `HousePositionZ`=182.794388, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3136.13892, `CornerstonePositionY`=-650.277771, `CornerstonePositionZ`=226.342026, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.68104696, `WorldStateID`=29748, `PlotGameObjectID`=0 WHERE `PlotID`=32 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2510.07642, `HousePositionY`=-53.8263893, `HousePositionZ`=95.4554596, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2478.60938, `CornerstonePositionY`=-80.5520859, `CornerstonePositionZ`=95.2361145, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.375246763, `WorldStateID`=29749, `PlotGameObjectID`=0 WHERE `PlotID`=33 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3457.79004, `HousePositionY`=761.239563, `HousePositionZ`=81.5263519, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3461.76294, `CornerstonePositionY`=728.498291, `CornerstonePositionZ`=81.5017395, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.35619521, `WorldStateID`=29750, `PlotGameObjectID`=0 WHERE `PlotID`=34 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2605.91235, `HousePositionY`=905.784729, `HousePositionZ`=39.1738815, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2440.56592, `CornerstonePositionY`=927.930542, `CornerstonePositionZ`=36.171875, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.514872551, `WorldStateID`=29751, `PlotGameObjectID`=0 WHERE `PlotID`=35 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2763.09204, `HousePositionY`=1170.68579, `HousePositionZ`=25.820612, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2737.625, `CornerstonePositionY`=1142.71008, `CornerstonePositionZ`=24.9652786, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.383973122, `WorldStateID`=29752, `PlotGameObjectID`=0 WHERE `PlotID`=36 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2477.74316, `HousePositionY`=514.446167, `HousePositionZ`=41.3817673, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2510.36035, `CornerstonePositionY`=542.6875, `CornerstonePositionZ`=41.1493073, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.99680424, `WorldStateID`=29753, `PlotGameObjectID`=0 WHERE `PlotID`=37 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2571.625, `HousePositionY`=-299.335083, `HousePositionZ`=105.492233, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2570.73096, `CornerstonePositionY`=-331.211823, `CornerstonePositionZ`=105.463539, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.26020288, `WorldStateID`=29754, `PlotGameObjectID`=0 WHERE `PlotID`=38 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3538.40894, `HousePositionY`=646.15802, `HousePositionZ`=82.6427765, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3602.28638, `CornerstonePositionY`=642.958313, `CornerstonePositionZ`=83.3819427, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.70169795, `WorldStateID`=29720, `PlotGameObjectID`=0 WHERE `PlotID`=39 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3558.43579, `HousePositionY`=1398.24829, `HousePositionZ`=13.0544977, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3522.78052, `CornerstonePositionY`=1455.151, `CornerstonePositionZ`=9.38541698, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.96029949, `WorldStateID`=29757, `PlotGameObjectID`=0 WHERE `PlotID`=40 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2157.54517, `HousePositionY`=-327.392365, `HousePositionZ`=98.6816559, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=2190.29688, `CornerstonePositionY`=-337.149323, `CornerstonePositionZ`=98.519104, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.13286591, `WorldStateID`=29756, `PlotGameObjectID`=0 WHERE `PlotID`=41 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3579.25781, `HousePositionY`=470.298615, `HousePositionZ`=89.6702805, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3597.54175, `CornerstonePositionY`=501.835083, `CornerstonePositionZ`=89.5711823, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.8432889, `WorldStateID`=29722, `PlotGameObjectID`=0 WHERE `PlotID`=42 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3669.58765, `HousePositionY`=1187.625, `HousePositionZ`=37.6142006, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3645.65967, `CornerstonePositionY`=1202.90979, `CornerstonePositionZ`=37.5295143, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.72467995, `WorldStateID`=29664, `PlotGameObjectID`=0 WHERE `PlotID`=43 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3618.14575, `HousePositionY`=361.4375, `HousePositionZ`=96.5879211, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3647.06177, `CornerstonePositionY`=353.182281, `CornerstonePositionZ`=102.725693, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.462513924, `WorldStateID`=29723, `PlotGameObjectID`=0 WHERE `PlotID`=44 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3429.68311, `HousePositionY`=654.460083, `HousePositionZ`=79.9497604, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3453.25439, `CornerstonePositionY`=669.918396, `CornerstonePositionZ`=86.5920181, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.49065924, `WorldStateID`=29758, `PlotGameObjectID`=0 WHERE `PlotID`=45 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3198.88989, `HousePositionY`=365.130219, `HousePositionZ`=65.7899551, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3167.93579, `CornerstonePositionY`=364.013885, `CornerstonePositionZ`=73.8836823, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=0.0261843204, `WorldStateID`=29759, `PlotGameObjectID`=0 WHERE `PlotID`=46 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3333.03906, `HousePositionY`=401.885406, `HousePositionZ`=69.8325729, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3315.51489, `CornerstonePositionY`=427.78125, `CornerstonePositionZ`=71.921875, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.38077641, `WorldStateID`=29760, `PlotGameObjectID`=0 WHERE `PlotID`=47 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3038.48608, `HousePositionY`=861.565979, `HousePositionZ`=74.8148575, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3047.40112, `CornerstonePositionY`=833.147583, `CornerstonePositionZ`=74.6770859, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.63188303, `WorldStateID`=29761, `PlotGameObjectID`=0 WHERE `PlotID`=48 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3092.35425, `HousePositionY`=407.09549, `HousePositionZ`=66.334671, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3119.01904, `CornerstonePositionY`=394.869781, `CornerstonePositionZ`=74.2621536, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.01069355, `WorldStateID`=29762, `PlotGameObjectID`=0 WHERE `PlotID`=49 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3268.73779, `HousePositionY`=1029.94788, `HousePositionZ`=20.3230076, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3288.02271, `CornerstonePositionY`=1002.55902, `CornerstonePositionZ`=22.7534733, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=2.46964121, `WorldStateID`=29719, `PlotGameObjectID`=0 WHERE `PlotID`=50 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3357.65356, `HousePositionY`=523.8125, `HousePositionZ`=71.9353561, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3348.19092, `CornerstonePositionY`=487.526031, `CornerstonePositionZ`=72.3767395, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=1.77151132, `WorldStateID`=29769, `PlotGameObjectID`=0 WHERE `PlotID`=51 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3386.48877, `HousePositionY`=979.743042, `HousePositionZ`=29.0968018, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3365.41138, `CornerstonePositionY`=1004.1684, `CornerstonePositionZ`=32.8020821, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=5.68977356, `WorldStateID`=29770, `PlotGameObjectID`=0 WHERE `PlotID`=52 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=2970.98608, `HousePositionY`=796.392395, `HousePositionZ`=74.7324066, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3003.05908, `CornerstonePositionY`=772.649292, `CornerstonePositionZ`=74.5642395, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=3.86590457, `WorldStateID`=29771, `PlotGameObjectID`=0 WHERE `PlotID`=53 AND `ExteriorMapID`=2735;
UPDATE `housing_plot_template` SET `NeighborhoodMapID`=1, `HousePositionX`=3157.63208, `HousePositionY`=252.003479, `HousePositionZ`=69.2628174, `HouseRotationX`=0, `HouseRotationY`=0, `HouseRotationZ`=0, `CornerstonePositionX`=3151.59033, `CornerstonePositionY`=297.625, `CornerstonePositionZ`=73.4253464, `CornerstoneRotationX`=0, `CornerstoneRotationY`=0, `CornerstoneRotationZ`=4.75602245, `WorldStateID`=29772, `PlotGameObjectID`=0 WHERE `PlotID`=54 AND `ExteriorMapID`=2735;
@@ -0,0 +1,7 @@
-- Captured purchase cost used by the Cornerstone UI for both faction maps.
ALTER TABLE `housing_plot_template`
ADD COLUMN `Cost` bigint unsigned NOT NULL DEFAULT 10000000 AFTER `PlotGameObjectID`;
UPDATE `housing_plot_template`
SET `Cost` = 10000000
WHERE `ExteriorMapID` IN (2735, 2736) AND `VerifiedBuild` = 69587;
@@ -0,0 +1,17 @@
-- Housing plot purchase and relocation audit for both faction neighborhoods.
CREATE TABLE `housing_plot_transaction` (
`TransactionID` bigint unsigned NOT NULL AUTO_INCREMENT,
`OwnerGuid` bigint unsigned NOT NULL,
`HouseGuid` varchar(64) NOT NULL,
`NeighborhoodGuid` varchar(64) NOT NULL,
`OldPlotID` tinyint unsigned NOT NULL,
`NewPlotID` tinyint unsigned NOT NULL,
`ExteriorMapID` int unsigned NOT NULL,
`Cost` bigint unsigned NOT NULL DEFAULT 0,
`TransactionType` tinyint unsigned NOT NULL COMMENT '0=purchase, 1=move',
`CreatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`TransactionID`),
KEY `idx_housing_plot_transaction_owner` (`OwnerGuid`, `CreatedAt`),
KEY `idx_housing_plot_transaction_house` (`HouseGuid`),
KEY `idx_housing_plot_transaction_plot` (`NeighborhoodGuid`, `NewPlotID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,65 @@
-- Runtime lookup indexes for the Housing room, mesh, fixture and decor loaders.
-- These tables contain per-house entities reconstructed from UPDATE_OBJECT captures.
--
-- Keep every index creation idempotent. Character DB updates are applied statement by
-- statement, so a previous failed run may already have created some of these indexes.
SET @sql := IF(
EXISTS(
SELECT 1
FROM `information_schema`.`STATISTICS`
WHERE `TABLE_SCHEMA` = DATABASE()
AND `TABLE_NAME` = 'housing_room_entity'
AND `INDEX_NAME` = 'idx_housing_room_house_order'
),
'SELECT 1',
'ALTER TABLE `housing_room_entity` ADD KEY `idx_housing_room_house_order` (`HouseGuid`, `HouseRoomID`)'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @sql := IF(
EXISTS(
SELECT 1
FROM `information_schema`.`STATISTICS`
WHERE `TABLE_SCHEMA` = DATABASE()
AND `TABLE_NAME` = 'housing_room_component_entity'
AND `INDEX_NAME` = 'idx_housing_component_house_room'
),
'SELECT 1',
'ALTER TABLE `housing_room_component_entity` ADD KEY `idx_housing_component_house_room` (`HouseGuid`, `RoomGuid`)'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @sql := IF(
EXISTS(
SELECT 1
FROM `information_schema`.`STATISTICS`
WHERE `TABLE_SCHEMA` = DATABASE()
AND `TABLE_NAME` = 'housing_fixture_entity'
AND `INDEX_NAME` = 'idx_housing_fixture_house'
),
'SELECT 1',
'ALTER TABLE `housing_fixture_entity` ADD KEY `idx_housing_fixture_house` (`HouseGuid`)'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @sql := IF(
EXISTS(
SELECT 1
FROM `information_schema`.`STATISTICS`
WHERE `TABLE_SCHEMA` = DATABASE()
AND `TABLE_NAME` = 'housing_placed_decor'
AND `INDEX_NAME` = 'idx_housing_decor_house_entity'
),
'SELECT 1',
'ALTER TABLE `housing_placed_decor` ADD KEY `idx_housing_decor_house_entity` (`HouseGuid`, `EntityGuid`)'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
@@ -0,0 +1,16 @@
-- Persists the exact exterior plot return point while a player is inside Map 2783.
-- This keeps Alliance and Horde exits data-driven and prevents cross-faction returns.
CREATE TABLE IF NOT EXISTS `character_housing_return_location` (
`OwnerGuid` bigint unsigned NOT NULL,
`HouseGuid` varchar(64) NOT NULL,
`ExteriorMapID` int unsigned NOT NULL,
`PlotID` tinyint unsigned NOT NULL,
`PositionX` float NOT NULL,
`PositionY` float NOT NULL,
`PositionZ` float NOT NULL,
`Orientation` float NOT NULL,
`CreatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`OwnerGuid`),
KEY `idx_housing_return_house` (`HouseGuid`),
KEY `idx_housing_return_plot` (`ExteriorMapID`, `PlotID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,21 @@
-- Data-driven exterior door configuration for every Midnight housing plot.
ALTER TABLE `character_housing`
ADD COLUMN `ExteriorMapID` int unsigned NOT NULL DEFAULT 0 AFTER `PlotID`,
ADD KEY `idx_character_housing_map_plot` (`ExteriorMapID`, `PlotID`);
ALTER TABLE `housing_plot_template`
ADD COLUMN `DoorEntry` int unsigned NOT NULL DEFAULT 0 AFTER `CornerstoneEntry`,
ADD KEY `idx_housing_plot_door` (`ExteriorMapID`, `PlotID`, `DoorEntry`);
-- Founder's Point (Alliance) front door.
UPDATE `housing_plot_template`
SET `DoorEntry` = 586576
WHERE `ExteriorMapID` = 2735;
-- Razorwind Shores (Horde) front door.
UPDATE `housing_plot_template`
SET `DoorEntry` = 602702
WHERE `ExteriorMapID` = 2736;
ALTER TABLE `character_housing`
ADD KEY `idx_character_housing_plot` (`PlotID`);
@@ -0,0 +1,17 @@
-- Midnight 12.1.0.69587 Housing persistent decor instances.
-- One row represents one licensed decor object exposed through FHousingStorage_C.
CREATE TABLE IF NOT EXISTS `housing_decor_instance` (
`BattlenetAccountId` int unsigned NOT NULL,
`DecorGuid` varchar(64) NOT NULL,
`DecorID` int unsigned NOT NULL,
`HouseGuid` varchar(64) NOT NULL DEFAULT '',
`PlacementStatus` tinyint unsigned NOT NULL DEFAULT 0,
`SourceType` tinyint unsigned NOT NULL DEFAULT 0,
`SourceValue` varchar(255) NOT NULL DEFAULT '',
`CreatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`BattlenetAccountId`, `DecorGuid`),
UNIQUE KEY `uq_housing_decor_instance_guid` (`DecorGuid`),
KEY `idx_housing_decor_instance_type` (`BattlenetAccountId`, `DecorID`),
KEY `idx_housing_decor_instance_house` (`HouseGuid`, `PlacementStatus`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,12 @@
-- Housing dynamic entity payload quarantine.
-- Invalid captured rows remain available for analysis but are never serialized to the client.
CREATE TABLE IF NOT EXISTS `housing_entity_quarantine` (
`EntityType` varchar(32) NOT NULL,
`EntityGuid` varchar(64) NOT NULL,
`Reason` varchar(64) NOT NULL,
`HitCount` int unsigned NOT NULL DEFAULT 1,
`FirstSeenAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`LastSeenAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`EntityType`, `EntityGuid`),
KEY `idx_housing_quarantine_last_seen` (`LastSeenAt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,34 @@
-- Housing blueprint persistence for Midnight 12.1.
-- Blueprint records are owned by a Battle.net account; item rows describe the
-- decor, dyes, rooms and fixtures required to reconstruct the saved layout.
CREATE TABLE IF NOT EXISTS `housing_blueprint` (
`ID` bigint unsigned NOT NULL AUTO_INCREMENT,
`BnetAccountID` int unsigned NOT NULL,
`UUID` varchar(64) NOT NULL,
`Name` varchar(127) NOT NULL DEFAULT '',
`Type` tinyint unsigned NOT NULL DEFAULT 0,
`DateCreated` bigint NOT NULL DEFAULT 0,
`DateDeleted` bigint NOT NULL DEFAULT 0,
`Flags` tinyint unsigned NOT NULL DEFAULT 0,
`DeleteReason` tinyint unsigned NOT NULL DEFAULT 0,
`RequiredFaction` tinyint NOT NULL DEFAULT -1,
`RequiredHouseType` int unsigned NOT NULL DEFAULT 0,
`RequiredHouseSize` tinyint unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`),
UNIQUE KEY `uq_housing_blueprint_account_uuid` (`BnetAccountID`, `UUID`),
KEY `idx_housing_blueprint_account_deleted` (`BnetAccountID`, `DateDeleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Account-owned Housing blueprint metadata';
CREATE TABLE IF NOT EXISTS `housing_blueprint_item` (
`BlueprintID` bigint unsigned NOT NULL,
`ItemType` tinyint unsigned NOT NULL COMMENT '0 decor, 1 dye item, 2 room, 3 fixture',
`ItemID` int unsigned NOT NULL,
`Quantity` int unsigned NOT NULL DEFAULT 1,
PRIMARY KEY (`BlueprintID`, `ItemType`, `ItemID`),
CONSTRAINT `fk_housing_blueprint_item_blueprint`
FOREIGN KEY (`BlueprintID`) REFERENCES `housing_blueprint` (`ID`)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Items stored by a Housing blueprint';
@@ -0,0 +1,19 @@
-- Midnight 12.1 Housing decor lock persistence.
-- Idempotent for partially updated Character databases.
SET @housing_locked_exists := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'housing_placed_decor'
AND COLUMN_NAME = 'Locked'
);
SET @housing_locked_sql := IF(
@housing_locked_exists = 0,
'ALTER TABLE `housing_placed_decor` ADD COLUMN `Locked` tinyint unsigned NOT NULL DEFAULT 0 AFTER `Flags`',
'SELECT 1'
);
PREPARE housing_locked_stmt FROM @housing_locked_sql;
EXECUTE housing_locked_stmt;
DEALLOCATE PREPARE housing_locked_stmt;
@@ -0,0 +1,35 @@
-- Midnight 12.1 Housing decor dye persistence.
-- Add each column independently so a partially applied update can be retried safely.
SET @housing_dye0_exists := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'housing_placed_decor' AND COLUMN_NAME = 'DyeSlot0'
);
SET @housing_dye0_sql := IF(@housing_dye0_exists = 0,
'ALTER TABLE `housing_placed_decor` ADD COLUMN `DyeSlot0` int unsigned NOT NULL DEFAULT 0 AFTER `Locked`',
'SELECT 1');
PREPARE housing_dye0_stmt FROM @housing_dye0_sql;
EXECUTE housing_dye0_stmt;
DEALLOCATE PREPARE housing_dye0_stmt;
SET @housing_dye1_exists := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'housing_placed_decor' AND COLUMN_NAME = 'DyeSlot1'
);
SET @housing_dye1_sql := IF(@housing_dye1_exists = 0,
'ALTER TABLE `housing_placed_decor` ADD COLUMN `DyeSlot1` int unsigned NOT NULL DEFAULT 0 AFTER `DyeSlot0`',
'SELECT 1');
PREPARE housing_dye1_stmt FROM @housing_dye1_sql;
EXECUTE housing_dye1_stmt;
DEALLOCATE PREPARE housing_dye1_stmt;
SET @housing_dye2_exists := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'housing_placed_decor' AND COLUMN_NAME = 'DyeSlot2'
);
SET @housing_dye2_sql := IF(@housing_dye2_exists = 0,
'ALTER TABLE `housing_placed_decor` ADD COLUMN `DyeSlot2` int unsigned NOT NULL DEFAULT 0 AFTER `DyeSlot1`',
'SELECT 1');
PREPARE housing_dye2_stmt FROM @housing_dye2_sql;
EXECUTE housing_dye2_stmt;
DEALLOCATE PREPARE housing_dye2_stmt;
@@ -0,0 +1,21 @@
-- Midnight 12.1 Housing Stage 2: separate transient plot reservations from owned plots.
-- A reservation must never rewrite character_housing.PlotID before purchase/move commits.
CREATE TABLE IF NOT EXISTS `housing_plot_reservation` (
`ExteriorMapID` int unsigned NOT NULL,
`PlotID` tinyint unsigned NOT NULL,
`OwnerGuid` bigint unsigned NOT NULL,
`NeighborhoodGuid` varchar(64) NOT NULL,
`ReservedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ExpiresAt` timestamp NOT NULL,
PRIMARY KEY (`ExteriorMapID`, `PlotID`, `NeighborhoodGuid`),
UNIQUE KEY `uk_housing_plot_reservation_owner` (`OwnerGuid`),
KEY `idx_housing_plot_reservation_expiry` (`ExpiresAt`),
KEY `idx_housing_plot_reservation_neighborhood` (`NeighborhoodGuid`, `PlotID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Transaction type 2 is used when a house is relinquished. This only updates
-- metadata/documentation for an already-existing column; no data is dropped.
ALTER TABLE `housing_plot_transaction`
MODIFY COLUMN `TransactionType` tinyint unsigned NOT NULL
COMMENT '0=purchase, 1=move, 2=relinquish';
@@ -0,0 +1,44 @@
CREATE TABLE IF NOT EXISTS `housing_neighborhood_initiative` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`InitiativeID` int unsigned NOT NULL DEFAULT '0',
`State` tinyint unsigned NOT NULL DEFAULT '0',
`Progress` bigint unsigned NOT NULL DEFAULT '0',
`RewardTier` smallint unsigned NOT NULL DEFAULT '0',
`StartedAt` bigint unsigned DEFAULT NULL,
`EndsAt` bigint unsigned DEFAULT NULL,
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`NeighborhoodGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_activity_progress` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`ActivityID` int unsigned NOT NULL,
`Progress` bigint unsigned NOT NULL DEFAULT '0',
`Target` bigint unsigned NOT NULL DEFAULT '0',
`Completed` tinyint unsigned NOT NULL DEFAULT '0',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`NeighborhoodGuid`,`ActivityID`),
KEY `idx_housing_initiative_activity` (`ActivityID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_member_progress` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`CharacterGuid` bigint unsigned NOT NULL,
`ActivityID` int unsigned NOT NULL,
`Progress` bigint unsigned NOT NULL DEFAULT '0',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`NeighborhoodGuid`,`CharacterGuid`,`ActivityID`),
KEY `idx_housing_initiative_member_activity` (`ActivityID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_activity_log` (
`ID` bigint unsigned NOT NULL AUTO_INCREMENT,
`NeighborhoodGuid` varchar(64) NOT NULL,
`CharacterGuid` bigint unsigned NOT NULL DEFAULT '0',
`ActivityID` int unsigned NOT NULL DEFAULT '0',
`ProgressDelta` bigint NOT NULL DEFAULT '0',
`CreatedAt` bigint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `idx_housing_initiative_log_neighborhood` (`NeighborhoodGuid`,`ID`),
KEY `idx_housing_initiative_log_character` (`CharacterGuid`,`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,22 @@
-- Midnight 12.1.0.69587 Housing room-to-room connection persistence.
-- Store one row per side so FHousingRoom_C::Doors can be rebuilt without
-- inferring adjacency from mutable world transforms.
CREATE TABLE IF NOT EXISTS `housing_room_connection` (
`HouseGuid` varchar(64) NOT NULL,
`RoomGuid` varchar(64) NOT NULL,
`RoomComponentID` int unsigned NOT NULL,
`AttachedRoomGuid` varchar(64) NOT NULL,
`AttachedRoomComponentID` int unsigned NOT NULL,
`OffsetX` float NOT NULL DEFAULT 0,
`OffsetY` float NOT NULL DEFAULT 0,
`OffsetZ` float NOT NULL DEFAULT 0,
`RoomComponentType` tinyint unsigned NOT NULL DEFAULT 1,
PRIMARY KEY (`RoomGuid`, `RoomComponentID`),
UNIQUE KEY `uq_housing_room_connection_target` (`AttachedRoomGuid`, `AttachedRoomComponentID`),
KEY `idx_housing_room_connection_house` (`HouseGuid`),
CONSTRAINT `fk_hrc_room`
FOREIGN KEY (`RoomGuid`) REFERENCES `housing_room_entity` (`RoomGuid`) ON DELETE CASCADE,
CONSTRAINT `fk_hrc_attached`
FOREIGN KEY (`AttachedRoomGuid`) REFERENCES `housing_room_entity` (`RoomGuid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,7 @@
CREATE TABLE IF NOT EXISTS `housing_initiative_player_state` (
`CharacterGuid` bigint unsigned NOT NULL,
`ActiveNeighborhoodGuid` varchar(64) NOT NULL DEFAULT '',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`CharacterGuid`),
KEY `idx_housing_initiative_active_neighborhood` (`ActiveNeighborhoodGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,37 @@
-- Stage 20: reference-backed logical Room slot persistence.
-- Existing rooms keep NULL because no safe historical TargetSlotIndex can be inferred
-- from PositionX/Y/Z. New free-slot MOVE requests assign the logical slot explicitly.
-- Use information_schema guards instead of ADD COLUMN IF NOT EXISTS for compatibility
-- with the MySQL/MariaDB versions used by TrinityCore deployments.
SET @housing_layout_slot_column_exists := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'housing_room_entity'
AND COLUMN_NAME = 'LayoutSlotIndex'
);
SET @housing_layout_slot_sql := IF(
@housing_layout_slot_column_exists = 0,
'ALTER TABLE `housing_room_entity` ADD COLUMN `LayoutSlotIndex` int unsigned NULL DEFAULT NULL AFTER `AttachmentFlags`',
'SELECT 1'
);
PREPARE housing_layout_slot_stmt FROM @housing_layout_slot_sql;
EXECUTE housing_layout_slot_stmt;
DEALLOCATE PREPARE housing_layout_slot_stmt;
SET @housing_layout_slot_index_exists := (
SELECT COUNT(*)
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'housing_room_entity'
AND INDEX_NAME = 'idx_housing_room_house_slot'
);
SET @housing_layout_slot_index_sql := IF(
@housing_layout_slot_index_exists = 0,
'ALTER TABLE `housing_room_entity` ADD KEY `idx_housing_room_house_slot` (`HouseGuid`, `LayoutSlotIndex`)',
'SELECT 1'
);
PREPARE housing_layout_slot_index_stmt FROM @housing_layout_slot_index_sql;
EXECUTE housing_layout_slot_index_stmt;
DEALLOCATE PREPARE housing_layout_slot_index_stmt;
@@ -0,0 +1,27 @@
CREATE TABLE IF NOT EXISTS `housing_initiative_activity_definition` (
`InitiativeID` int unsigned NOT NULL,
`ActivityID` int unsigned NOT NULL,
`CriteriaID` bigint unsigned NOT NULL DEFAULT '0',
`Target` bigint unsigned NOT NULL DEFAULT '0',
`Enabled` tinyint unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`InitiativeID`,`ActivityID`),
KEY `idx_housing_initiative_activity_criteria` (`CriteriaID`),
KEY `idx_housing_initiative_activity_enabled` (`InitiativeID`,`Enabled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_progress_generation` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`InitiativeID` int unsigned NOT NULL DEFAULT '0',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`NeighborhoodGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_completion` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`InitiativeID` int unsigned NOT NULL,
`CompletedAt` bigint unsigned NOT NULL DEFAULT '0',
`RewardAvailable` tinyint unsigned NOT NULL DEFAULT '0',
`RewardClaimed` tinyint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`NeighborhoodGuid`,`InitiativeID`),
KEY `idx_housing_initiative_completion_reward` (`RewardAvailable`,`RewardClaimed`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,21 @@
-- Stage 21: persistent Room floor metadata for the manager-backed Housing graph.
-- The active Stage 11 ADD path has always rejected FloorIndex != 0, so every
-- pre-Stage-21 manager-backed room is safely floor 0. Geometry remains stored in
-- PositionZ; FloorIndex is metadata until stairwell/cross-floor placement is enabled.
-- Use information_schema guards for MySQL/MariaDB compatibility.
SET @housing_room_floor_column_exists := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'housing_room_entity'
AND COLUMN_NAME = 'FloorIndex'
);
SET @housing_room_floor_sql := IF(
@housing_room_floor_column_exists = 0,
'ALTER TABLE `housing_room_entity` ADD COLUMN `FloorIndex` int NOT NULL DEFAULT 0 AFTER `LayoutSlotIndex`',
'SELECT 1'
);
PREPARE housing_room_floor_stmt FROM @housing_room_floor_sql;
EXECUTE housing_room_floor_stmt;
DEALLOCATE PREPARE housing_room_floor_stmt;
@@ -0,0 +1,13 @@
CREATE TABLE IF NOT EXISTS `housing_initiative_criteria_checkpoint` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`InitiativeID` int unsigned NOT NULL,
`CharacterGuid` bigint unsigned NOT NULL,
`CriteriaID` int unsigned NOT NULL,
`ActivityID` int unsigned NOT NULL,
`LastCounter` bigint unsigned NOT NULL DEFAULT '0',
`LastMemberProgress` bigint unsigned NOT NULL DEFAULT '0',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`NeighborhoodGuid`,`InitiativeID`,`CharacterGuid`,`CriteriaID`),
KEY `idx_housing_initiative_criteria_character` (`CharacterGuid`,`CriteriaID`),
KEY `idx_housing_initiative_criteria_activity` (`InitiativeID`,`ActivityID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,8 @@
CREATE TABLE IF NOT EXISTS `housing_initiative_expiration` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`InitiativeID` int unsigned NOT NULL,
`ExpiredAt` bigint unsigned NOT NULL DEFAULT '0',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`NeighborhoodGuid`,`InitiativeID`),
KEY `idx_housing_initiative_expiration_time` (`ExpiredAt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,77 @@
CREATE TABLE IF NOT EXISTS `housing_initiative_schedule` (
`ScheduleID` bigint unsigned NOT NULL AUTO_INCREMENT,
`InitiativeID` int unsigned NOT NULL,
`RewardTier` smallint unsigned NOT NULL DEFAULT '0',
`StartsAt` bigint unsigned NOT NULL,
`EndsAt` bigint unsigned NOT NULL DEFAULT '0',
`Enabled` tinyint unsigned NOT NULL DEFAULT '1',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ScheduleID`),
KEY `idx_housing_initiative_schedule_window` (`Enabled`,`StartsAt`,`EndsAt`),
KEY `idx_housing_initiative_schedule_initiative` (`InitiativeID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_rotation_state` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`GenerationID` bigint unsigned NOT NULL DEFAULT '0',
`ActiveScheduleID` bigint unsigned NOT NULL DEFAULT '0',
`InitiativeID` int unsigned NOT NULL DEFAULT '0',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`NeighborhoodGuid`),
KEY `idx_housing_initiative_rotation_schedule` (`ActiveScheduleID`),
KEY `idx_housing_initiative_rotation_initiative` (`InitiativeID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_history` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`GenerationID` bigint unsigned NOT NULL,
`ScheduleID` bigint unsigned NOT NULL DEFAULT '0',
`InitiativeID` int unsigned NOT NULL,
`State` tinyint unsigned NOT NULL DEFAULT '0',
`Progress` bigint unsigned NOT NULL DEFAULT '0',
`RewardTier` smallint unsigned NOT NULL DEFAULT '0',
`StartedAt` bigint unsigned NOT NULL DEFAULT '0',
`EndsAt` bigint unsigned NOT NULL DEFAULT '0',
`CompletedAt` bigint unsigned NOT NULL DEFAULT '0',
`ExpiredAt` bigint unsigned NOT NULL DEFAULT '0',
`RewardAvailable` tinyint unsigned NOT NULL DEFAULT '0',
`RewardClaimed` tinyint unsigned NOT NULL DEFAULT '0',
`ArchivedAt` bigint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`NeighborhoodGuid`,`GenerationID`),
KEY `idx_housing_initiative_history_initiative` (`InitiativeID`,`ArchivedAt`),
KEY `idx_housing_initiative_history_reward` (`RewardAvailable`,`RewardClaimed`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_activity_history` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`GenerationID` bigint unsigned NOT NULL,
`ActivityID` int unsigned NOT NULL,
`Progress` bigint unsigned NOT NULL DEFAULT '0',
`Target` bigint unsigned NOT NULL DEFAULT '0',
`Completed` tinyint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`NeighborhoodGuid`,`GenerationID`,`ActivityID`),
KEY `idx_housing_initiative_activity_history_activity` (`ActivityID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_member_history` (
`NeighborhoodGuid` varchar(64) NOT NULL,
`GenerationID` bigint unsigned NOT NULL,
`CharacterGuid` bigint unsigned NOT NULL,
`ActivityID` int unsigned NOT NULL,
`Progress` bigint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`NeighborhoodGuid`,`GenerationID`,`CharacterGuid`,`ActivityID`),
KEY `idx_housing_initiative_member_history_character` (`CharacterGuid`,`GenerationID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_activity_log_history` (
`ArchiveID` bigint unsigned NOT NULL AUTO_INCREMENT,
`NeighborhoodGuid` varchar(64) NOT NULL,
`GenerationID` bigint unsigned NOT NULL,
`CharacterGuid` bigint unsigned NOT NULL DEFAULT '0',
`ActivityID` int unsigned NOT NULL DEFAULT '0',
`ProgressDelta` bigint NOT NULL DEFAULT '0',
`CreatedAt` bigint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`ArchiveID`),
KEY `idx_housing_initiative_log_history_generation` (`NeighborhoodGuid`,`GenerationID`,`ArchiveID`),
KEY `idx_housing_initiative_log_history_character` (`CharacterGuid`,`GenerationID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,15 @@
CREATE TABLE IF NOT EXISTS `housing_initiative_reward_claim` (
`ClaimID` bigint unsigned NOT NULL AUTO_INCREMENT,
`NeighborhoodGuid` varchar(64) NOT NULL,
`GenerationID` bigint unsigned NOT NULL,
`InitiativeID` int unsigned NOT NULL,
`CharacterGuid` bigint unsigned NOT NULL,
`State` tinyint unsigned NOT NULL DEFAULT '0',
`CreatedAt` bigint unsigned NOT NULL DEFAULT '0',
`UpdatedAt` bigint unsigned NOT NULL DEFAULT '0',
`CompletedAt` bigint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`ClaimID`),
UNIQUE KEY `uq_housing_initiative_reward_generation` (`NeighborhoodGuid`,`GenerationID`),
KEY `idx_housing_initiative_reward_claimant` (`CharacterGuid`,`State`,`ClaimID`),
KEY `idx_housing_initiative_reward_initiative` (`InitiativeID`,`State`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,27 @@
CREATE TABLE IF NOT EXISTS `housing_initiative_reward_catalog` (
`RewardTier` smallint unsigned NOT NULL,
`EntryID` int unsigned NOT NULL,
`GrantType` tinyint unsigned NOT NULL,
`AssetID` int unsigned NOT NULL,
`Quantity` int unsigned NOT NULL,
`Enabled` tinyint unsigned NOT NULL DEFAULT '1',
`UpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`RewardTier`,`EntryID`),
KEY `idx_housing_initiative_reward_catalog_enabled` (`RewardTier`,`Enabled`,`EntryID`),
KEY `idx_housing_initiative_reward_catalog_asset` (`GrantType`,`AssetID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `housing_initiative_reward_delivery` (
`ClaimID` bigint unsigned NOT NULL,
`EntryID` int unsigned NOT NULL,
`GrantType` tinyint unsigned NOT NULL,
`AssetID` int unsigned NOT NULL,
`Quantity` int unsigned NOT NULL,
`State` tinyint unsigned NOT NULL DEFAULT '0',
`CreatedAt` bigint unsigned NOT NULL DEFAULT '0',
`UpdatedAt` bigint unsigned NOT NULL DEFAULT '0',
`DeliveredAt` bigint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`ClaimID`,`EntryID`),
KEY `idx_housing_initiative_reward_delivery_state` (`State`,`ClaimID`),
KEY `idx_housing_initiative_reward_delivery_asset` (`GrantType`,`AssetID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,16 @@
CREATE TABLE IF NOT EXISTS `housing_initiative_reward_execution` (
`ClaimID` bigint unsigned NOT NULL,
`EntryID` int unsigned NOT NULL,
`GrantType` tinyint unsigned NOT NULL,
`AssetID` int unsigned NOT NULL,
`Quantity` int unsigned NOT NULL,
`State` tinyint unsigned NOT NULL DEFAULT '0',
`ObservedBefore` bigint unsigned NOT NULL DEFAULT '0',
`ExpectedAfter` bigint unsigned NOT NULL DEFAULT '0',
`ObservedAfter` bigint unsigned NOT NULL DEFAULT '0',
`StartedAt` bigint unsigned NOT NULL DEFAULT '0',
`UpdatedAt` bigint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`ClaimID`,`EntryID`),
KEY `idx_housing_initiative_reward_execution_state` (`State`,`ClaimID`),
KEY `idx_housing_initiative_reward_execution_asset` (`GrantType`,`AssetID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -0,0 +1,31 @@
--
-- Archaeology: per-character active dig sites.
-- Persists the ActivePlayer ResearchSites / ResearchSiteProgress update fields across relog/restart,
-- plus the site's current hidden find position so a relog cannot relocate an in-progress find.
-- Ported from evry/master-track/archaeology 94eadb810a (findX/findY added by cb60da9643).
--
DROP TABLE IF EXISTS `character_research_site`;
CREATE TABLE `character_research_site` (
`guid` bigint unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier',
`researchSiteId` smallint unsigned NOT NULL DEFAULT '0',
`progress` int unsigned NOT NULL DEFAULT '0',
`findX` float NOT NULL DEFAULT '0' COMMENT 'Current hidden find world X',
`findY` float NOT NULL DEFAULT '0' COMMENT 'Current hidden find world Y',
PRIMARY KEY (`guid`,`researchSiteId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Archaeology active dig sites per character';
DROP TABLE IF EXISTS `character_research_project`;
CREATE TABLE `character_research_project` (
`guid` bigint unsigned NOT NULL COMMENT 'Character GUID',
`projectId` int unsigned NOT NULL COMMENT 'ResearchProject.db2 ID (current project for its branch)',
PRIMARY KEY (`guid`,`projectId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Archaeology active research projects per character';
DROP TABLE IF EXISTS `character_research_history`;
CREATE TABLE `character_research_history` (
`guid` bigint unsigned NOT NULL COMMENT 'Character GUID',
`projectId` int unsigned NOT NULL COMMENT 'ResearchProject.db2 ID',
`firstCompleted` bigint NOT NULL DEFAULT '0' COMMENT 'Unix time of the first completion',
`completionCount` int unsigned NOT NULL DEFAULT '1' COMMENT 'Times this project has been solved',
PRIMARY KEY (`guid`,`projectId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Archaeology completed research projects per character';
@@ -0,0 +1,4 @@
--
-- Prey: the per-character table of the placeholder implementation is unused; the hunt state lives in the quest log
--
DROP TABLE IF EXISTS `character_prey_hunt`;
@@ -0,0 +1 @@
ALTER TABLE `mail` MODIFY COLUMN `checked` int UNSIGNED NOT NULL DEFAULT 0 AFTER `cod`;
+24
View File
@@ -0,0 +1,24 @@
build*/
.directory
.mailmap
*.orig
*.rej
*~
.hg/
*.kdev*
.DS_Store
CMakeLists.txt.user
*.bak
*.patch
*.diff
*.REMOTE.*
*.BACKUP.*
*.BASE.*
*.LOCAL.*
nbproject/*
.idea/*
.browse.VC*
.vscode
cmake-build-*/
.vs
@@ -1,35 +0,0 @@
REPLACE INTO `bot_templates` (`entry`, `bot_class`, `bot_race`, `companion_spell`, `chatter_type`, `gender`, `pet_source`) VALUES
(62913,6,1,0,2,0,0),
(4146,7,3,0,10,1,1999),
(50714,3,3,0,11,1,0),
(50715,3,3,0,1,0,0),
(50690,3,3,0,2,0,0),
(48615, 4, 10, 0, 0, 7, 0), -- undead / rogue / male
(48618, 7, 10, 0, 1, 14, 1553), -- undead / hunter / female / pet 1553
(48616, 1, 10, 0, 1, 3, 0), -- undead / warrior / female
(48613, 3, 10, 0, 1, 18, 0), -- undead / mage / female
(48614, 2, 10, 0, 1, 11, 0), -- undead / priest / female
(48612, 8, 10, 0, 1, 5, 0), -- undead / warlock / female
(38911, 7, 10, 0, 0, 20, 39014), -- undead / hunter / male / pet 39014
(2123, 2, 10, 0, 0, 9, 0), -- undead / priest / male
(2121, 3, 10, 0, 1, 16, 0), -- undead / mage / female
(2126, 8, 10, 0, 0, 4, 0), -- undead / warlock / male
(63272, 10, 7, 0, 1, 12, 0), -- pandaren / monk / female
(2122, 4, 10, 0, 0, 8, 0), -- undead / rogue / male
(2119, 1, 10, 0, 0, 15, 0), -- undead / warrior / male
(49958, 7, 10, 0, 0, 2, 49960), -- undead / hunter / male / pet 49960
(49715, 2, 10, 0, 0, 19, 0), -- undead / priest / male
(49720, 1, 10, 0, 0, 6, 0), -- undead / warrior / male
(49870, 4, 10, 0, 1, 13, 0), -- undead / rogue / female
(49718, 8, 10, 0, 1, 1, 0), -- undead / warlock / female
(49716, 3, 10, 0, 0, 17, 0), -- undead / mage / male
(49791, 3, 4, 0, 0, 10, 0), -- gnome / mage / male
(49808, 9, 2, 0, 1, 3, 0), -- dwarf / shaman / female
(49781, 1, 2, 0, 0, 8, 0), -- dwarf / warrior / male
(49806, 7, 2, 0, 1, 15, 1553), -- dwarf / hunter / female
(49793, 6, 2, 0, 0, 5, 0), -- dwarf / paladin / male
(49786, 3, 4, 0, 0, 12, 0), -- gnome / mage / male
(49782, 4, 2, 0, 1, 20, 0), -- dwarf / rogue / female
(49785, 2, 2, 0, 1, 7, 0); -- dwarf / priest / female
@@ -1,3 +0,0 @@
REPLACE INTO `item_sparse` (`ID`, `Description`, `Display3`, `Display2`, `Display1`, `Display`, `ExpansionID`, `DmgVariance`, `LimitCategory`, `DurationInInventory`, `QualityModifier`, `BagFamily`, `StartQuestID`, `LanguageID`, `ItemRange`, `StatPercentageOfSocket1`, `StatPercentageOfSocket2`, `StatPercentageOfSocket3`, `StatPercentageOfSocket4`, `StatPercentageOfSocket5`, `StatPercentageOfSocket6`, `StatPercentageOfSocket7`, `StatPercentageOfSocket8`, `StatPercentageOfSocket9`, `StatPercentageOfSocket10`, `StatPercentEditor1`, `StatPercentEditor2`, `StatPercentEditor3`, `StatPercentEditor4`, `StatPercentEditor5`, `StatPercentEditor6`, `StatPercentEditor7`, `StatPercentEditor8`, `StatPercentEditor9`, `StatPercentEditor10`, `StatModifierBonusStat1`, `StatModifierBonusStat2`, `StatModifierBonusStat3`, `StatModifierBonusStat4`, `StatModifierBonusStat5`, `StatModifierBonusStat6`, `StatModifierBonusStat7`, `StatModifierBonusStat8`, `StatModifierBonusStat9`, `StatModifierBonusStat10`, `Stackable`, `MaxCount`, `MinReputation`, `RequiredAbility`, `AllowableRace1`, `AllowableRace2`, `SellPrice`, `BuyPrice`, `VendorStackCount`, `PriceVariance`, `PriceRandomValue`, `Flags1`, `Flags2`, `Flags3`, `Flags4`, `Flags5`, `FactionRelated`, `ModifiedCraftingReagentItemID`, `ContentTuningID`, `PlayerLevelToItemLevelCurveID`, `ItemLevelOffsetCurveID`, `ItemLevelOffsetItemLevel`, `ItemSquishEraID`, `ItemNameDescriptionID`, `RequiredTransmogHoliday`, `RequiredHoliday`, `GemProperties`, `SocketMatchEnchantmentId`, `TotemCategoryID`, `InstanceBound`, `ZoneBound1`, `ZoneBound2`, `ItemSet`, `LockID`, `PageID`, `ItemDelay`, `MinFactionID`, `RequiredSkillRank`, `RequiredSkill`, `ItemLevel`, `AllowableClass`, `ArtifactID`, `SpellWeight`, `SpellWeightCategory`, `SocketType1`, `SocketType2`, `SocketType3`, `SheatheType`, `Material`, `PageMaterialID`, `Bonding`, `DamageDamageType`, `ContainerSlots`, `RequiredPVPMedal`, `RequiredPVPRank`, `RequiredLevel`, `InventoryType`, `OverallQualityID`, `VerifiedBuild`) VALUES
(191909, 'R.A.D. stands for "Rannans Awesome Device" that can do anything. Almost!', '', '', '', 'R.A.D.', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3711, 3161, 0, 0, 0, 0, 0, 0, 73, 7, 36, 49, -1, -1, -1, -1, -1, -1, 1, 0, 0, 0, -1, -1, 289406, 1447033, 1, 1, 0.9919, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 40, 3, 4, 68974);
@@ -1,23 +0,0 @@
--
-- ItemConversion.db2 / ItemConversionEntry.db2 (Matrix Catalyst item conversion): hotfix mirrors.
--
DROP TABLE IF EXISTS `item_conversion`;
CREATE TABLE `item_conversion` (
`ID` INT UNSIGNED NOT NULL DEFAULT '0',
`Unknown920` INT NOT NULL DEFAULT '0',
`ItemBonusTreeID` INT NOT NULL DEFAULT '0',
`ItemLogicalCostGroupID` INT NOT NULL DEFAULT '0',
`AlternateItemLogicalCostGroupID` INT NOT NULL DEFAULT '0',
`PlayerConditionID` INT NOT NULL DEFAULT '0',
`VerifiedBuild` INT NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE IF EXISTS `item_conversion_entry`;
CREATE TABLE `item_conversion_entry` (
`ID` INT UNSIGNED NOT NULL DEFAULT '0',
`ItemID` INT NOT NULL DEFAULT '0',
`ItemConversionID` INT UNSIGNED NOT NULL DEFAULT '0',
`VerifiedBuild` INT NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -1,46 +0,0 @@
--
-- Mythic+ season DB2 hotfix mirrors: MythicPlusSeasonKeyFloor (Resilient Keystone floor),
-- MythicPlusSeasonRewardLevels (Great Vault reward item levels + ActivityTierID),
-- MythicPlusSeasonTrackedAffix / MythicPlusSeasonTrackedMap (season affix set / dungeon pool).
--
DROP TABLE IF EXISTS `mythic_plus_season_key_floor`;
CREATE TABLE `mythic_plus_season_key_floor` (
`ID` INT UNSIGNED NOT NULL DEFAULT '0',
`KeyFloor` INT NOT NULL DEFAULT '0',
`PlayerConditionID` INT NOT NULL DEFAULT '0',
`DisplaySeasonID` INT UNSIGNED NOT NULL DEFAULT '0',
`VerifiedBuild` INT NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE IF EXISTS `mythic_plus_season_reward_levels`;
CREATE TABLE `mythic_plus_season_reward_levels` (
`ID` INT UNSIGNED NOT NULL DEFAULT '0',
`MythicPlusSeasonID` INT UNSIGNED NOT NULL DEFAULT '0',
`ActivityTierID` INT NOT NULL DEFAULT '0',
`DifficultyLevel` INT NOT NULL DEFAULT '0',
`WeeklyRewardLevel` INT NOT NULL DEFAULT '0',
`EndOfRunRewardLevel` INT NOT NULL DEFAULT '0',
`VerifiedBuild` INT NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE IF EXISTS `mythic_plus_season_tracked_affix`;
CREATE TABLE `mythic_plus_season_tracked_affix` (
`ID` INT UNSIGNED NOT NULL DEFAULT '0',
`KeystoneAffixID` INT NOT NULL DEFAULT '0',
`BonusRating` INT NOT NULL DEFAULT '0',
`Field_9_1_0_38511_004` INT NOT NULL DEFAULT '0',
`DisplaySeasonID` INT UNSIGNED NOT NULL DEFAULT '0',
`VerifiedBuild` INT NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
DROP TABLE IF EXISTS `mythic_plus_season_tracked_map`;
CREATE TABLE `mythic_plus_season_tracked_map` (
`ID` INT UNSIGNED NOT NULL DEFAULT '0',
`MapChallengeModeID` INT NOT NULL DEFAULT '0',
`DisplaySeasonID` INT UNSIGNED NOT NULL DEFAULT '0',
`VerifiedBuild` INT NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -1,13 +0,0 @@
--
-- ItemLogicalCost.db2 hotfix mirror (item upgrade step costs: slot mask -> ItemExtendedCost).
--
DROP TABLE IF EXISTS `item_logical_cost`;
CREATE TABLE `item_logical_cost` (
`ID` INT UNSIGNED NOT NULL DEFAULT '0',
`InventoryTypeSlotMask` INT NOT NULL DEFAULT '0',
`Flags` INT NOT NULL DEFAULT '0',
`ItemExtendedCostID` INT NOT NULL DEFAULT '0',
`ItemLogicalCostGroupID` INT UNSIGNED NOT NULL DEFAULT '0',
`VerifiedBuild` INT NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -1,26 +0,0 @@
--
-- Table structure for table `item_salvage_loot`
--
DROP TABLE IF EXISTS `item_salvage_loot`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `item_salvage_loot` (
`ID` int NOT NULL DEFAULT '0',
`SalvagedItemID` int NOT NULL DEFAULT '0',
`ItemSalvageID` int NOT NULL DEFAULT '0',
`ResultingTreasureID` int NOT NULL DEFAULT '0',
`VerifiedBuild` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`,`VerifiedBuild`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `item_salvage_loot`
--
LOCK TABLES `item_salvage_loot` WRITE;
/*!40000 ALTER TABLE `item_salvage_loot` DISABLE KEYS */;
/*!40000 ALTER TABLE `item_salvage_loot` ENABLE KEYS */;
UNLOCK TABLES;
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,5 +0,0 @@
-- Spell Summon Tarindrella (92238)
DELETE FROM `spell_effect` WHERE `ID`=96178;
INSERT INTO `spell_effect` (`ID`, `EffectAura`, `DifficultyID`, `EffectIndex`, `Effect`, `EffectAmplitude`, `EffectAttributes`, `EffectAuraPeriod`, `EffectBonusCoefficient`, `EffectChainAmplitude`, `EffectChainTargets`, `EffectItemType`, `EffectMechanic`, `EffectPointsPerResource`, `EffectPosFacing`, `EffectRealPointsPerLevel`, `EffectTriggerSpell`, `BonusCoefficientFromAP`, `PvpMultiplier`, `Coefficient`, `Variance`, `ResourceCoefficient`, `GroupSizeBasePointsCoefficient`, `EffectBasePoints`, `ScalingClass`, `TargetNodeGraph`, `EffectMiscValue1`, `EffectMiscValue2`, `EffectRadiusIndex1`, `EffectRadiusIndex2`, `EffectSpellClassMask1`, `EffectSpellClassMask2`, `EffectSpellClassMask3`, `EffectSpellClassMask4`, `ImplicitTarget1`, `ImplicitTarget2`, `SpellID`, `VerifiedBuild`) VALUES
(96178, 0, 0, 1, 28, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 49480, 3322, 0, 0, 0, 0, 0, 0, 48, 0, 92238, 68974); -- 28 (SUMMON)
File diff suppressed because one or more lines are too long
@@ -1,3 +0,0 @@
DELETE FROM `hotfix_blob` WHERE `TableHash`=0x4DB743E6;
DELETE FROM `hotfix_blob` WHERE `TableHash`=0xE8152640;
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More