* Core/Chat: general cleanup and revamping: (#17576) (fbbb03212e93591a77a1169a30fb01867cd3c0e9)
* Core/Channel: restore accidentally deleted line, fixes channels not honoring ownership setting (7c714179930c8c369f124d8d1404656fff0a1199)
* Channel Followup: avoid setting an invisible gm as Channel owner (#17597) (8a8362ef153eca50be0bcb5670e615b9685607fc)
* Core/Channel: change the way channels are stored and sent to client, fixes multiple channels per zone when using different locales (#17980)
Instances have since MoP (Possibly even Cataclysm) been able to set new locations for players when they zone into the instance.
A theoretic example of this could be after a certain boss has been defeated, a new entrance location is set to bring players entering the instance closer to the relevant content.
A real example would be Siege of Orgrimmar changing entrance locations many times as the raid progresses.
Added SetEntranceLocation for setting entrance locations that will be saved to DB the next time the instance is saved, and SetTemporaryEntranceLocation for when you don't want the value to be saved to the database.
Closes#17167
* Fixed Item::SetModifier to broadcast value updates
* Generate base item upgrade when looting
* Generate base item upgrade when loading from db and db2 data changed
* Use prepared statements in Pet::SavePetToDB
* Add support for resetting all of a player's pet specializations
* Send one big spell unlearn/learn packet instead of lots of small ones
* Implemented Adaptation talent
* Category cooldown is stored with the spell that started the cooldown (and only resetting cooldown on that spell will clear cooldowns on entire category - this fully mirrors client behavior)
* This significantly reduces the amount of data saved to database for cooldowns
* Spell casts from items that have a different category specified than on spell will now check for cooldown during the cast
Closes#15349