aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitattributes3
-rw-r--r--CONTRIBUTING.md67
-rw-r--r--THANKS1057
-rw-r--r--cmake/compiler/clang/settings.cmake1
-rw-r--r--cmake/macros/CheckPlatform.cmake2
-rw-r--r--cmake/macros/FindMySQL.cmake112
-rw-r--r--cmake/platform/settings.cmake5
-rw-r--r--dep/CMakeLists.txt2
-rw-r--r--sql/base/auth_database.sql8
-rw-r--r--sql/base/characters_database.sql146
-rw-r--r--sql/updates/auth/2015_05_02_00_auth.sql7
-rw-r--r--sql/updates/auth/2015_05_02_01_auth.sql9
-rw-r--r--sql/updates/characters/2015_05_08_00_characters.sql36
-rw-r--r--sql/updates/characters/2015_05_22_00_characters.sql35
-rw-r--r--sql/updates/hotfixes/2015_05_01_00_hotfixes.sql137
-rw-r--r--sql/updates/hotfixes/2015_05_02_00_hotfixes.sql220
-rw-r--r--sql/updates/hotfixes/2015_05_08_00_hotfixes.sql186
-rw-r--r--sql/updates/hotfixes/2015_05_17_00_hotfixes.sql205
-rw-r--r--sql/updates/world/2015_05_02_00_world.sql3
-rw-r--r--sql/updates/world/2015_05_02_01_world.sql1277
-rw-r--r--sql/updates/world/2015_05_02_02_world.sql15
-rw-r--r--sql/updates/world/2015_05_02_03_world.sql85
-rw-r--r--sql/updates/world/2015_05_02_04_world.sql3440
-rw-r--r--sql/updates/world/2015_05_02_05_world.sql1
-rw-r--r--sql/updates/world/2015_05_02_06_world.sql6
-rw-r--r--sql/updates/world/2015_05_02_07_world.sql45
-rw-r--r--sql/updates/world/2015_05_02_08_world.sql16
-rw-r--r--sql/updates/world/2015_05_03_00_world.sql10
-rw-r--r--sql/updates/world/2015_05_04_00_world.sql8
-rw-r--r--sql/updates/world/2015_05_09_00_world.sql422
-rw-r--r--sql/updates/world/2015_05_09_01_world.sql8
-rw-r--r--sql/updates/world/2015_05_10_00_world.sql1
-rw-r--r--sql/updates/world/2015_05_10_01_world.sql505
-rw-r--r--sql/updates/world/2015_05_10_02_world_2015_05_09_00.sql30
-rw-r--r--sql/updates/world/2015_05_15_00_world.sql14
-rw-r--r--sql/updates/world/2015_05_15_01_world.sql1
-rw-r--r--sql/updates/world/2015_05_19_00_world.sql4
-rw-r--r--sql/updates/world/2015_05_19_01_world_2015_04_24_00.sql42
-rw-r--r--sql/updates/world/2015_05_19_02_world_2015_04_18_00.sql1
-rw-r--r--sql/updates/world/2015_05_19_03_world_2015_04_18_01.sql6
-rw-r--r--sql/updates/world/2015_05_19_03_world_2015_04_18_02.sql13
-rw-r--r--sql/updates/world/2015_05_19_04_world_2015_04_18_03.sql4
-rw-r--r--sql/updates/world/2015_05_19_04_world_2015_04_18_05.sql9
-rw-r--r--sql/updates/world/2015_05_20_00_world_2015_05_19_01.sql22
-rw-r--r--sql/updates/world/2015_05_20_01_world_2015_05_19_02.sql3
-rw-r--r--sql/updates/world/2015_05_21_00_world_2015_04_18_06.sql5
-rw-r--r--sql/updates/world/2015_05_22_00_world.sql91
-rw-r--r--sql/updates/world/2015_05_27_00_world.sql51
-rw-r--r--sql/updates/world/2015_05_29_00_world.sql1
-rw-r--r--sql/updates/world/2015_06_01_00_world_2015_05_26_05.sql3
-rw-r--r--sql/updates/world/2015_06_06_00_world.sql4277
-rw-r--r--sql/updates/world/2015_06_07_00_world.sql1603
-rw-r--r--sql/updates/world/2015_06_08_00_world.sql609
-rw-r--r--sql/updates/world/2015_06_11_00_world_2015_05_22_00.sql2
-rw-r--r--sql/updates/world/2015_06_12_00_world.sql41
-rw-r--r--src/server/bnetserver/Main.cpp93
-rw-r--r--src/server/collision/Management/MMapManager.cpp157
-rw-r--r--src/server/collision/Management/VMapManager2.cpp2
-rw-r--r--src/server/collision/Maps/MapTree.cpp2
-rw-r--r--src/server/collision/Maps/TileAssembler.cpp5
-rw-r--r--src/server/collision/Models/GameObjectModel.cpp10
-rw-r--r--src/server/collision/Models/GameObjectModel.h2
-rw-r--r--src/server/collision/VMapDefinitions.h4
-rw-r--r--src/server/game/AI/CoreAI/UnitAI.h2
-rw-r--r--src/server/game/AI/CreatureAISelector.cpp2
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp2
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp2
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp32
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.h32
-rw-r--r--src/server/game/Accounts/RBAC.h9
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp142
-rw-r--r--src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp2
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp4
-rw-r--r--src/server/game/Battlegrounds/BattlegroundMgr.cpp24
-rw-r--r--src/server/game/Battlegrounds/BattlegroundQueue.h2
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundBFG.h2
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundTP.h2
-rw-r--r--src/server/game/CMakeLists.txt5
-rw-r--r--src/server/game/Chat/Channels/Channel.cpp44
-rw-r--r--src/server/game/Chat/Channels/Channel.h6
-rw-r--r--src/server/game/Chat/Chat.cpp22
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp105
-rw-r--r--src/server/game/DataStores/DB2Stores.h15
-rw-r--r--src/server/game/DataStores/DB2Structure.h160
-rw-r--r--src/server/game/DataStores/DB2fmt.h12
-rw-r--r--src/server/game/DataStores/DBCEnums.h287
-rw-r--r--src/server/game/DataStores/DBCStores.cpp30
-rw-r--r--src/server/game/DataStores/DBCStores.h6
-rw-r--r--src/server/game/DataStores/DBCStructure.h62
-rw-r--r--src/server/game/DataStores/DBCfmt.h8
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp2
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.cpp12
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTrigger.cpp1
-rw-r--r--src/server/game/Entities/Corpse/Corpse.cpp2
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp15
-rw-r--r--src/server/game/Entities/Creature/Creature.h6
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp2
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp14
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h1
-rw-r--r--src/server/game/Entities/Item/Item.cpp30
-rw-r--r--src/server/game/Entities/Item/Item.h10
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.cpp4
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.h223
-rw-r--r--src/server/game/Entities/Object/Object.cpp221
-rw-r--r--src/server/game/Entities/Object/Object.h147
-rw-r--r--src/server/game/Entities/Object/Position.cpp184
-rw-r--r--src/server/game/Entities/Object/Position.h225
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp26
-rw-r--r--src/server/game/Entities/Pet/Pet.h8
-rw-r--r--src/server/game/Entities/Player/Player.cpp434
-rw-r--r--src/server/game/Entities/Player/Player.h108
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp83
-rw-r--r--src/server/game/Entities/Transport/Transport.h3
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp50
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp208
-rw-r--r--src/server/game/Entities/Unit/Unit.h140
-rw-r--r--src/server/game/Entities/Vehicle/Vehicle.cpp10
-rw-r--r--src/server/game/Events/GameEventMgr.cpp25
-rw-r--r--src/server/game/Events/GameEventMgr.h6
-rw-r--r--src/server/game/Garrison/Garrison.cpp690
-rw-r--r--src/server/game/Garrison/Garrison.h159
-rw-r--r--src/server/game/Garrison/GarrisonMap.cpp142
-rw-r--r--src/server/game/Garrison/GarrisonMap.h43
-rw-r--r--src/server/game/Garrison/GarrisonMgr.cpp353
-rw-r--r--src/server/game/Garrison/GarrisonMgr.h69
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp143
-rw-r--r--src/server/game/Globals/ObjectMgr.h7
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiers.h24
-rw-r--r--src/server/game/Groups/Group.cpp453
-rw-r--r--src/server/game/Groups/Group.h156
-rw-r--r--src/server/game/Groups/GroupMgr.cpp7
-rw-r--r--src/server/game/Groups/GroupMgr.h2
-rw-r--r--src/server/game/Guilds/Guild.cpp29
-rw-r--r--src/server/game/Guilds/Guild.h3
-rw-r--r--src/server/game/Handlers/AuctionHouseHandler.cpp2
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp45
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp16
-rw-r--r--src/server/game/Handlers/GarrisonHandler.cpp56
-rw-r--r--src/server/game/Handlers/GroupHandler.cpp982
-rw-r--r--src/server/game/Handlers/GuildHandler.cpp6
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp97
-rw-r--r--src/server/game/Handlers/LFGHandler.cpp2
-rw-r--r--src/server/game/Handlers/LootHandler.cpp4
-rw-r--r--src/server/game/Handlers/MailHandler.cpp8
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp133
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp27
-rw-r--r--src/server/game/Handlers/NPCHandler.cpp51
-rw-r--r--src/server/game/Handlers/PetHandler.cpp3
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp19
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp2
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp12
-rw-r--r--src/server/game/Handlers/TradeHandler.cpp8
-rw-r--r--src/server/game/Handlers/VoidStorageHandler.cpp2
-rw-r--r--src/server/game/Loot/LootMgr.cpp22
-rw-r--r--src/server/game/Maps/Map.cpp73
-rw-r--r--src/server/game/Maps/Map.h10
-rw-r--r--src/server/game/Maps/MapInstanced.cpp23
-rw-r--r--src/server/game/Maps/MapInstanced.h3
-rw-r--r--src/server/game/Maps/ZoneScript.h4
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h70
-rw-r--r--src/server/game/Movement/MotionMaster.h2
-rw-r--r--src/server/game/Movement/Spline/MoveSplineFlag.h38
-rw-r--r--src/server/game/OutdoorPvP/OutdoorPvP.cpp18
-rw-r--r--src/server/game/Pools/PoolMgr.cpp16
-rw-r--r--src/server/game/Quests/QuestDef.cpp4
-rw-r--r--src/server/game/Quests/QuestDef.h8
-rw-r--r--src/server/game/Scripting/MapScripts.cpp42
-rw-r--r--src/server/game/Scripting/ScriptLoader.cpp2
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/ChannelPackets.cpp43
-rw-r--r--src/server/game/Server/Packets/ChannelPackets.h50
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp49
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h31
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp33
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h31
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.cpp73
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.h74
-rw-r--r--src/server/game/Server/Packets/CombatPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/CombatPackets.h12
-rw-r--r--src/server/game/Server/Packets/EquipmentSetPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/EquipmentSetPackets.h2
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.cpp247
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.h285
-rw-r--r--src/server/game/Server/Packets/GuildPackets.cpp11
-rw-r--r--src/server/game/Server/Packets/InstancePackets.cpp74
-rw-r--r--src/server/game/Server/Packets/InstancePackets.h113
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp23
-rw-r--r--src/server/game/Server/Packets/ItemPackets.h34
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp81
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h41
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/MovementPackets.h2
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp16
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h24
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp715
-rw-r--r--src/server/game/Server/Packets/PartyPackets.h616
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp29
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h27
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp12
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h3
-rw-r--r--src/server/game/Server/Packets/ReferAFriendPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/TicketPackets.cpp3
-rw-r--r--src/server/game/Server/Packets/WhoPackets.cpp7
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp257
-rw-r--r--src/server/game/Server/WorldSession.cpp24
-rw-r--r--src/server/game/Server/WorldSession.h144
-rw-r--r--src/server/game/Server/WorldSocket.cpp9
-rw-r--r--src/server/game/Server/WorldSocket.h2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h8
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp71
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h4
-rw-r--r--src/server/game/Spells/Spell.cpp93
-rw-r--r--src/server/game/Spells/Spell.h10
-rw-r--r--src/server/game/Spells/SpellEffects.cpp156
-rw-r--r--src/server/game/Spells/SpellInfo.cpp11
-rw-r--r--src/server/game/Spells/SpellInfo.h1
-rw-r--r--src/server/game/Spells/SpellMgr.cpp4
-rw-r--r--src/server/game/Spells/SpellScript.cpp8
-rw-r--r--src/server/game/Spells/SpellScript.h2
-rw-r--r--src/server/game/Support/SupportMgr.cpp32
-rw-r--r--src/server/game/Support/SupportMgr.h12
-rw-r--r--src/server/game/Texts/ChatTextBuilder.h4
-rw-r--r--src/server/game/Texts/CreatureTextMgr.cpp4
-rw-r--r--src/server/game/World/World.cpp43
-rw-r--r--src/server/game/World/World.h4
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp2
-rw-r--r--src/server/scripts/Commands/cs_go.cpp68
-rw-r--r--src/server/scripts/Commands/cs_gobject.cpp28
-rw-r--r--src/server/scripts/Commands/cs_group.cpp2
-rw-r--r--src/server/scripts/Commands/cs_lookup.cpp2
-rw-r--r--src/server/scripts/Commands/cs_message.cpp6
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp12
-rw-r--r--src/server/scripts/Commands/cs_modify.cpp10
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp79
-rw-r--r--src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp2
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp187
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp6
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h12
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp4
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp1
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h3
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp6
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp39
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp20
-rw-r--r--src/server/scripts/Northrend/zone_icecrown.cpp48
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPNA.h8
-rw-r--r--src/server/scripts/Outland/CMakeLists.txt1
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp4
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp5
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp28
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp231
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp255
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h80
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp21
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp35
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp73
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp164
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp123
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/the_eye.h30
-rw-r--r--src/server/scripts/Spells/spell_quest.cpp12
-rw-r--r--src/server/shared/Common.h11
-rw-r--r--src/server/shared/Cryptography/SHA1.h4
-rw-r--r--src/server/shared/Cryptography/SHA256.h4
-rw-r--r--src/server/shared/DataStores/DB2Store.h2
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.cpp17
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.h16
-rw-r--r--src/server/shared/Database/Implementation/HotfixDatabase.cpp62
-rw-r--r--src/server/shared/Database/Implementation/HotfixDatabase.h33
-rw-r--r--src/server/shared/Database/Implementation/LoginDatabase.cpp4
-rw-r--r--src/server/shared/Debugging/WheatyExceptionReport.cpp203
-rw-r--r--src/server/shared/Debugging/WheatyExceptionReport.h3
-rw-r--r--src/server/shared/Logging/Log.h5
-rw-r--r--src/server/shared/Networking/MessageBuffer.h4
-rw-r--r--src/server/shared/PrecompiledHeaders/sharedPCH.h1
-rw-r--r--src/server/shared/Updater/DBUpdater.cpp19
-rw-r--r--src/server/shared/Utilities/TaskScheduler.cpp208
-rw-r--r--src/server/shared/Utilities/TaskScheduler.h627
-rw-r--r--src/server/worldserver/Main.cpp12
-rw-r--r--src/server/worldserver/worldserver.conf.dist2
-rw-r--r--src/tools/map_extractor/System.cpp4
-rw-r--r--src/tools/mmaps_generator/CMakeLists.txt10
-rw-r--r--src/tools/mmaps_generator/MapBuilder.cpp141
-rw-r--r--src/tools/mmaps_generator/TerrainBuilder.cpp4
-rw-r--r--src/tools/vmap4_extractor/vmapexport.cpp6
288 files changed, 25061 insertions, 4143 deletions
diff --git a/.gitattributes b/.gitattributes
index 15410b16b46..40a4005bf43 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -15,3 +15,6 @@
# special files which must ignore whitespace
*.patch whitespace=-trailing-space eol=lf
*.diff whitespace=-trailing-space eol=lf
+
+# Ignore sql/* files
+sql/* linguist-documentation
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 5dfa9c5113b..01e941cc465 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,33 +1,66 @@
# Contributing
-Want to contribute? Great!
+So, you want to contribute? Great!
+Contributing is not only about creating fixes, but also reporting bugs. Before reporting a bug, please make sure to use the latest core and database revision.
+
+
+Issues
+======
+
+Read [this](http://www.trinitycore.org/f/topic/37-the-trinitycore-issuetracker-and-you/) before creating a ticket.
+If you have problems with TrinityCore instalation, read [this](http://www.trinitycore.org/f/topic/1518-trouble-with-your-trinity-install-readme-1st-faqs/)
+
+Mandatory things when creating a ticket:
+========================================
+
+- Branch
+- commit hash (if you get something like TrinityCore rev. unknown 1970-01-01 00:00:00 +0000 (Archived branch) (Win64, Release), please read this [post](http://www.trinitycore.org/f/topic/345-howto-properly-install-git-on-windows-fix-trinitycore-rev-1970-01-01-000000-0000/) or clone this repository instead downloading the source code.
+- entries of affected creatures / items / quests with a link to the relevant wowhead page.
+- clear title and description of the bug - if your english is very bad, please use google translate or yandex to translate to english and include one text in your native language.
+
+When reporting a crash, you MUST compile in debug mode because release dumps are useless (not enough information) - if you don't know how to compile in debug, read [this](http://www.trinitycore.org/f/topic/1518-trouble-with-your-trinity-install-readme-1st-faqs/#entry47672)
+
+We sugest the title and body to have the next style:
+
+DB/Quest: The Collapse
+
+4.3.4 branch
+hash 63f96a282307
+The quest "The Collapse" http://www.wowhead.com/quest=11706 lacks final event.
+
+Creating Pull Requests:
+=======================
1. Fork it.
-2. Create a branch (`git checkout -b fixes`)
+2. Create a branch (`git checkout -b fixes`) (Note: fixes is an arbitrary name, choose whatever you want here)
3. Commit your changes (`git commit -am "Added Snarkdown"`)
4. Push to the branch (`git push origin fixes`)
5. Open a Pull Request
+
When creating patches read:
- [TrinityCore Development Standards](http://www.trinitycore.org/f/topic/6-trinitycore-developing-standards/)
- [WDB Fields](http://www.trinitycore.org/f/topic/58-wdb-fields/)
- [Git Squash](https://ariejan.net/2011/07/05/git-squash-your-latests-commits-into-one/)
-- [SQL Guidelines](http://collab.kpsn.org/display/tc/SQL+Guidelines)
-We suggest you to create one branch for each `C++` based fix: on that way you can continue creating more fixes without having to wait to get one pull request merged.
-For the `SQL` files of `C++` based fixes the naming schema is: `YYYY_MM_DD_i_database.sql`, where `YYYY_MM_DD` is the date of the fix, `i_database` is the *ith* sql created that day for `database` starting on 00.
+
+We suggest that you create one branch for each C++ based fix: this will allow you to create more fixes without having to wait for your pull request to be merged.
+For the SQL files coming with C++ based fixes the naming schema is `YYYY_MM_DD_i_database.sql`, where `YYYY_MM_DD` is the date of the fix, `i_database` is the *ith* sql created that day for `database`.
When doing changes to `auth` or `characters` database remember to update the base files (`/sql/base/*`).
-For SQL only fixes [create a ticket](https://github.com/TrinityCore/TrinityCore/issues/new).
+For SQL only fixes, please [create a ticket](https://github.com/TrinityCore/TrinityCore/issues/new).
+Since it's very unlikely that your Pull Request will be merged on the day that you open it, please name the files with an impossible date to avoid merging issues ie: 2015_13_32_00_world.sql
+
+Wiki
+====
+
+The wiki is located at [http://trinitycore.info](http://trinitycore.info).
+
+You are welcome to create an account and help us improve and extend the wiki.
-Issues
-======
-Read [this](http://www.trinitycore.org/f/topic/37-the-trinitycore-issuetracker-and-you/) before creating a ticket.
-If you have problems with TrinityCore instalation, read
-http://www.trinitycore.org/f/topic/10656-updating-or-starting-with-trinitycore-issues/
-http://www.trinitycore.org/f/topic/1518-trouble-with-your-trinity-install-readme-1st-faqs/
Requirements
============
+
Platform: Linux, Windows or Mac
Processor with SSE2 support
Boost ≥ 1.4.9
@@ -35,12 +68,6 @@ MySQL ≥ 5.1.0
CMake ≥ 2.8.11.2 / 2.8.9 (Windows / Linux)
OpenSSL ≥ 1.0.0
GCC ≥ 4.7.2 (Linux only)
-MS Visual Studio ≥ 12 (2013) (Windows only) (we recommend Visual Studio 2013 community edition, free for open source developers)
-
-In case you choose Linux, we recommend to use Debian 7, it's the Linux we use to test compilations.
-
-Wiki
-====
-The wiki is located at [http://trinitycore.info](http://trinitycore.info).
-You are welcome to create an account and help us improve and extend the wiki.
+MS Visual Studio ≥ 12 (2013) Update 4 (Windows only)
+If you choose Linux, we recommend to use Debian 8, since it's the Linux that we use to test compilations.
diff --git a/THANKS b/THANKS
index d43b40b9ba5..28695da62d7 100644
--- a/THANKS
+++ b/THANKS
@@ -13,90 +13,973 @@ Thanks to the ScriptDev2 team (http://www.scriptdev2.com) for scripts.
Thanks to the WCell team (especially Ralek) for research on realm reconnect
sequence, item scaling stats algorithm, gameobject rotation issues.
-Thanks go out to the following people for various patches/code (listed in the
-order they were added) (there may be duplicates or invalid names, most of them
-were extracted from commits):
-w12x, dythzer, XEQT, death420, balrok, TOM_RUS,
-runningnak3d, Seline, KingPin, raczman, bogie, Neo2003, NoFantasy, Derex,
-freghar, toilet1, megamage, MadJack, WarHead, gvcoman, Ntsc, arrai, jrkpote,
-Seraphim, vagoth, KerchumA222, Rognar, Blaymoira, DragonHunter, Molius, ApoC,
-SeT, hunuza, Wyk3d, VladimirMangos, rj686, Arthorius, QAston, Muhaha, dereka,
-Kaldorei, NuRRi, Biglad, Machiavelli, Nivelo, Paradox, Aokromes, EleGoS,
-Visagalis, reno, Cybrax, GriffonHeart, fgenesis, rilex, XTElite1, Anubisss, eL,
-Iskander, arclite, Bladex, EIFEL, Klaimmore, XTZGZoReX, panaut0lordv, DearScorpion,
-BlueSteel, AlexDereka, Drahy, krz, Xeptor, Sethoso, Sarjuuk, pasdVn, nissen,
-Triply, `win, Fog, emsy, McBitter, Lukaasm, maikash, Wormheart, DonTomika,
-DiSlord, Tiretunderl, Ramses_II, cccyril, Cha0S2, miebaik, Trazom, KiriX,
-darkEvil, Sorken, Kudlaty, Charlie2025, Medwise, Rat, Lutik, domingo,
-TrullyONE, rastikzzz, Tassader, Lightguard, KAPATEJIb, Tux`Volant, zhanhang03,
-Asael, Elron, False, nos4r2zod, Disassembler, thumsoul, rvnth, throneinc,
-MrTux, Luniz2k1, Dani, BroodWyrm, raven_coda, Bagsac, Thraxx, Trogvar,
-teacher4, zhenya, Albrecht de Endrau, Phacops, Naicisum, thenecromancer, shax,
-cryingcloud, freeganja, Foks, daveh, Az@zel, evilstar, Corfen, Astellar, Maxxie,
-DEN_North, StarJoker, Nezemnoy, X-Savior, subhuman_bob, Ambal, Brueggus, sparc,
-jojo, Trojan, tvaroh, Genars, BombermaG, Bulkin, nesocip, xILOSWag, SilverIce,
-Uruviel, timmit, Seizerkiller, Stokrotka, JoN0, Tanatos, Hunteee, Alyen,
-Farah, Them, DaGNU, arthurcik, BudIcePenguin, Amok, Amit86, onkelz28, Azrael,
-Larva, Roland, DerDyddye, Vicos, PSZ, CRAZyBUg, irish, Sephiroth1984,
-mike753, Xlybriem, Paytheo, ArticDevil, FearX, Beaste, bufferoverflow, Jeniczek,
-Den, bobaz, crackm, seirge, D_Skywalk, mknjc, Christyan, Saeba, Nevan, tlexii,
-liszt, duckman, Joro, Charlie, smellbee, bigjohnson4, maxdestroyer, Destalker,
-ckegg, Drethek, yad02, Win32, NetSky, Zcuron, Necroo, ogeraisi, Coldblooded,
-Edder, riddick, Craker, NeoLithicX, srounet, SLG, Tidus, neo0608, SyRiOCoP,
-F636y623, Patro, mobel, simak, hectolight, Riccardo, GodsdoG, Gomez, kamir86, fredi,
-qubix, Deafboy, Authorius, DarkRabbit, mrbungle, netoya, peldor, eumario, Alex,
-Moandor, ebx, DasBlub, guenex, Brats, Lucy, arcx, Enril, oiler2112,
-Wizz, Elminster, 123qwe, NeatElves, Turk3y, deicide, vladonix, nugu100,
-Skystar, Reve, jorooo, FrozenDB, miranda.conrado, Tequila, Gommes, Zerg2000,
-aerione_alt, Rastik, FrenchW, wilibald09, Velorien, kancaras, fisherman,
-Aviram, Mufik, loop69, multiplexer, Koani, rechapa79, kozelo, MeanMachine,
-fregh, adrycasillo, IncoGnito, Alez, Itch, Kuteur, MaS0n, peaceman, manuel,
-Gendalph, Lynx3d, raftom, Infinity, Ebrithil, Sorya, HP1, Prince, redcore,
-Boogie, Necro, Thyros, simon, MrSmite, horogandris, Stryker, MaXiMiUS, kaell,
-totoro, Forgiven, Big, Oculus, Lorac, Nemesis, Epsik, iadus3, durotar, hoshie,
-fukifat, imbecile, Nafsih, Meldanor, Turok, Naturamen, Themris, Sundark,
-Azuritus, jotapdiez, EnderGT, Curuad, oc_redfox, rockzOr, Darkshines,
-BlackYoghurt, McLovin, Gyullo, kaxap, Hawthorne, nanouniko, new001, Opterman,
-Typhoon, Cleave, HiZed, The_Game_Master, Athor, Veras, Menia, Jolan, BlackOne,
-johnholiver, Spp, Drevi, kb_z, Tartalo, Shendor, Demonx, Taliesin, defacer,
-SoulForge, Jackpoz, Cass, QuaLiT1, exul182, sunwell, AniRB, clotza, Tommassino,
-dracula70, alexsot, RedSonja, Cnillidan, Proofzor, aqs999, Sony, amsjunior123,
-Sisif, Joshh, alex_1983, arez, RammboNr5, Insider, bodompelle, lobuz, Azazel,
-footman, elron103, make_the_king, destros, MetaphysicalDrama, disassebler,
-Malcrom, Vladmimír Lipták, retriman, hyriuu, Smakapotatis, PainKiller,
-bkhorizon, n0n4m3, Chesterfield, Frankir, Wowka321, Morpheux, p0wer,
-Ouden, toshik, laise, yavi, Splinter, Syntec, Arthas, denyde, unholy,
-Vaughner, blackmanos, edrinn, Liberate, Shauren, dr.tenma, click,
-SupaBad, Xanadu, Socolin, Shocker, Silinoron, 0xFuture, xK1, Ramus, menke,
-wowgargamel, Dark0r, Kierkegaard, Leak, ge0rg, StormByte, joshwhedon,
-BlackCat0110, JuliuSZS, n4rk0, filip.havlicek, m.ax, laviniu, LordJZ, Scazzato88,
-svannon, jurkovic.nikola, Willian Krueger, BioHazard, Ille000, Erocoloco,
-terrorbringer, antihrists, Havenard, scarymovie87, D3VIL, FaTe753, PrinceCreed,
-spgm, Dakeyras, sombre88, 19Maxx83, moriquendu, Ille, breakerfly,
-zthoreen, clement.roussel, p.alexej, Ceris, Nayre, Kiper, announce, thmarth,
-Ner'zhul, DarkXuan, linencloth, SnakeIce, Tome, Nay, Kaelima,
-Subv, Tuxity, tibbi, Gigatotem, Nexflame, trickerer, zxbiohazardzx, w1sht0l1v3,
-Warpten, CeIa, Kandera, horn, Dimitro, thesensei, Sovak, Vincent-Michael,
-Xanvial, faq, Gacko, Geodar, hexa-, MacWarrior, cyberbrest, Myran2, Northstrider,
-AFROM, CrYser, Kretol, Bizzy, nelegalno, Kinzcool, armano2, Tomas, Aristoo, Trista,
-e@cacaw.net, oMadMano, Kiddie, blub, Santiago, tobmaps, Mik43l, danik, Souler,
-joschiwald, CDawg, WishToDie, gecko32, gadge, neuro_999, Stefo, dr.skull, NTX, Hexit,
-Stalker-Riddick, thomas33, Manuel Carrasco, Imprtat, Chaplain, teyrnon, zorix, Greymane,
-Venugh, e000, Amit, Alternative, Exodius, Jorge, shlomi1515, tharaca, Alestaan, Valcorb,
-Odyssey, Chipsi, Pesthuf, stfx, Yaki Khadafi, David KlepáÄek, SignFinder, unknown,
-NNN666, AliveShiro, 4m1g0, mweinelt, Abdollah Hasan, Xees, zori, warriorpoetex, qaywsx,
-ghost, Discovered, faq_, Jildor, The Game, Kezo90, Helias, Frca, Ramusik, elecyb, Joni,
-Multivitamin, faramir118, cookta2012, Gyx, ShinDarth, Lopin, Martin Weinelt,
-Bezo, frozenarmor, E. van Harten, LiMCrosS, Albis, Go6o, Pitcrawler, Matthew Goff, neurorulez,
-Ka0z, glkrlos, zwerg, Merlin2010, furion, Giuseppe Montesanto, LihO, Bootz, PKX, burnham,
-Drake Fish, Vlad, Discover, Heisenberg, Kapoeira, Emo Norfik, tREAk, zoidmann, Wilds, weclub,
-Jon, Cron, Alexander, Vinolentus, LaserJet, mns, Stalker_Riddick, Yelvann, draco, Geekotron,
-bytewarrior, Fredi Machado, Studioworks, 3kids, idostyle@zoit, Sebastián Orellana, DemiDroL,
-n4ndo, et2012, Rochet2, Grobi, Google, Wispeckt, hacknowledge, wonopon, Naga,
-Joeri Thissen, Payn, Fest, insider42, DrTenma, L30m4nc3r, Akama, Jesper Meyer, Kiperr,
-maanuel, vcrx6, Furion89, Mark07, lost-illusion, SeTM, TCKiper, vlad852, tehmarto, boom,
-Per Wilhelmsen, telsamat, Various, erimioa, Sawiner, zergtmn, SimonDMII, pek2011, alexbolotsin,
-laly, mrquickfx, Koord, amnell, GWRde, EdwinDW, gildor, darkstalker, Feanordev, _manuel_,
-thymuswisewood, sohrab, Lazzalf, Taser, Ottowayne, Exordian, nucleartux, John Holiver, j4r0d,
-Trazom62, Brian, enjoi, teacher, Alex Bolotsin, Troy, silver1ce, nihal, arcanzic, Chaz Brown,
-pendragon, aven_coda, cca220v, ArcticDevil, derex_tri \ No newline at end of file
+Thanks go out to the following people for various patches/code (there may be duplicates or invalid names, most of them
+were extracted from old commits):
+
+- 0xFuture
+- 123qwe
+- 19Maxx83
+- 2010phenix
+- 3kids
+- 4m1g0
+- A Metaphysical Drama
+- Aaron126
+- Abdollah Hasan
+- adrycasillo
+- aerione_alt
+- AFROM
+- Akama
+- Albis
+- Albrecht de Endrau
+- Alestaan
+- aletuna
+- Alex
+- Alex Bolotsin
+- Alexander
+- alexbolotsin
+- AlexDereka
+- Alexei_Nech
+- alexsot
+- alex_1983
+- Alez
+- AliveShiro
+- alpharius
+- Alternative
+- Alyen
+- Ambal
+- Aminxhm
+- Amit
+- Amit86
+- amnell
+- Amok
+- amsjunior123
+- AniRB
+- Ankso
+- announce
+- Ante
+- antihrists
+- Anton Usmansky
+- Anubisss
+- Aokromes
+- ApoC
+- Appled
+- aqs999
+- arcanzic
+- arclite
+- ArcticDevil
+- arcx
+- arez
+- AriDEV
+- ariel-
+- Aristoo
+- arks
+- Armano
+- armano2
+- arrai
+- Arthas
+- Arthorius
+- arthurcik
+- ArticDevil
+- Asael
+- Ascathor
+- Astellar
+- Athor
+- Authorius
+- aven_coda
+- Aviram
+- Azazel
+- Azrael
+- Azuritus
+- b4nan1
+- badmoon
+- Baeumchen
+- Bagsac
+- baines
+- balrok
+- baric
+- Barlok
+- Beaste
+- bele
+- betagan
+- Bezo
+- Big
+- bigjohnson4
+- Biglad
+- BioHazard
+- BitCoding
+- Bizzy
+- bkhorizon
+- BlackCat0110
+- blackmanos
+- BlackOne
+- BlackYoghurt
+- Bladex
+- Blaymoira
+- Blipi
+- bloerwald
+- blub
+- BlueSteel
+- Blumster
+- bobaz
+- bodompelle
+- bogie
+- BombermaG
+- Bonitas
+- Bonny1992
+- Boogie
+- boom
+- Bootz
+- Brats
+- breakerfly
+- Brecky
+- Brian
+- BroodWyrm
+- Brueggus
+- BudIcePenguin
+- bufferoverflow
+- Bulkin
+- burnham
+- Butterfly69
+- bytewarrior
+- Carbenium
+- Carl Hjerpe
+- Carlos Vargas
+- Cass
+- cca220v
+- cccyril
+- ccrs
+- CDawg
+- CeIa
+- cemak
+- Cepox
+- Ceris
+- Cha0S2
+- chadryx
+- Chaplain
+- Charlie
+- Charlie2025
+- Chaz Brown
+- Chesterfield
+- Chevron
+- ChipLeo
+- Chipsi
+- Christyan
+- Ciclop
+- ckegg
+- Cleave
+- clement.roussel
+- click
+- clotza
+- Cnillidan
+- cocolino
+- Coldblooded
+- cookta2012
+- corbi
+- Corfen
+- cr4st
+- crackm
+- Craker
+- CRAZyBUg
+- Cristal
+- Cron
+- cryingcloud
+- CrYser
+- Crysicle
+- Curuad
+- cyberbrest
+- Cyberium
+- Cybrax
+- d-sat
+- D3VIL
+- D4R4
+- Daejiv
+- DaGNU
+- Dakeyras
+- Dani
+- Daniel M. Weeks
+- danik
+- danlapps
+- Dark0r
+- DarkBrain2580
+- darkEvil
+- darkman1983
+- DarkRabbit
+- Darkshines
+- darkstalker
+- DarkXuan
+- DasBlub
+- daveh
+- David KlepáÄek
+- DDuarte
+- Deafboy
+- DearScorpion
+- death420
+- deathicon
+- defacer
+- Dehravor
+- deicide
+- Dekadence
+- delavega
+- dele
+- DemiDroL
+- Demonx
+- Den
+- denyde
+- DEN_North
+- DerDyddye
+- dereka
+- Derex
+- derex_tri
+- Destalker
+- destros
+- devil1234
+- Dietrich
+- Dimitro
+- disassebler
+- Disassembler
+- Discover
+- Discovered
+- DiSlord
+- DJScias
+- dkmbasura
+- domingo
+- DonTomika
+- DorianGrey
+- Dr-J
+- dr.skull
+- dr.tenma
+- draco
+- dracula70
+- DragonHunter
+- Drahy
+- Drake Fish
+- Drethek
+- Drevi
+- DrTenma
+- duckman
+- durotar
+- Dyddye
+- dythzer
+- D_Skywalk
+- E. van Harten
+- e000
+- e@cacaw.net
+- Ebrithil
+- ebx
+- Edder
+- edrinn
+- EdwinDW
+- EIFEL
+- Eilo
+- eL
+- elecyb
+- EleGoS
+- Ellie
+- Elminster
+- Elron
+- elron103
+- Emo
+- Emo Norfik
+- emsy
+- EnderGT
+- enjoi
+- Enril
+- Epicurus4
+- Epsik
+- Ergar
+- erimioa
+- Erocoloco
+- et2012
+- et65
+- eumario
+- evilstar
+- ExHunter
+- Exodius
+- Exordian
+- Expecto
+- exul182
+- F03SD
+- F636y623
+- Fabi
+- False
+- faq
+- Farah
+- faramir118
+- fatalaim
+- FaTe753
+- Feanordev
+- FearX
+- fedehacker
+- Fest
+- fgenesis
+- FH3095
+- Filip
+- filip.havlicek
+- FireEmerald
+- fisherman
+- Fmut
+- Foereaper
+- Fog
+- Foks
+- Foldor
+- Foldy
+- footman
+- Forgiven
+- Francesco Borzì
+- Frankir
+- Frca
+- fredi
+- Fredi Machado
+- freeganja
+- fregh
+- freghar
+- FrenchW
+- frozenarmor
+- FrozenDB
+- FrozenSoul
+- Frytiks
+- fukifat
+- furion
+- Furion89
+- Gacko
+- gadge
+- gaut
+- ge0rg
+- gecko32
+- Geekotron
+- Genars
+- Gendalph
+- Geodar
+- gerripeach
+- ghost
+- Gigatotem
+- Gigi1237
+- gildor
+- Giuseppe Montesanto
+- glkrlos
+- Go6o
+- Goatform
+- GodsdoG
+- Golrag
+- Gomez
+- Gommes
+- Google
+- Gooyeth
+- Goret
+- greenbagels
+- Greymane
+- GriffonHeart
+- Grimton1337
+- Grobi
+- grsgs
+- guenex
+- Guillaume Belz
+- gvcoman
+- GWRde
+- gwrde
+- Gyullo
+- Gyx
+- hacknowledge
+- hamcake9
+- Hanfblatt
+- Havenard
+- Hawthorne
+- hectolight
+- Heihachi
+- Heisenberg
+- Helias
+- HenryG
+- hexa-
+- Hexit
+- HiZed
+- Hobbilis
+- horn
+- horogandris
+- hoshie
+- HP1
+- Hristo Bogdanov
+- Hunteee
+- HUNTERok
+- hunuza
+- huri
+- hyriuu
+- iadus3
+- iDenyDeX
+- idostyle
+- Ille
+- illusion
+- imbecile
+- Imprtat
+- IncoGnito
+- Infinity
+- Insider
+- insider42
+- Intel
+- Intra
+- irish
+- Iskander
+- Itch
+- j4r0d
+- Jackpoz
+- Jared Jones
+- Jeniczek
+- Jens Bäckman
+- Jesper Meyer
+- Jildor
+- Joeri Thissen
+- John Holiver
+- johnholiver
+- jojo
+- Jolan
+- Jon
+- JoN0
+- Joni
+- Jorge
+- Joro
+- jorooo
+- joschiwald
+- Joshh
+- Joshiwald
+- joshwhedon
+- jotapdiez
+- jrkpote
+- JuliuSZS
+- JunkyBulgaria
+- jurkovic.nikola
+- Ka0z
+- Kaelima
+- kaell
+- Kaldorei
+- kamir86
+- kancaras
+- Kandera
+- KAPATEJIb
+- Kapoeira
+- karn
+- kaxap
+- kb_z
+- keke222
+- kelsarhu
+- kenjiro
+- kennylive
+- KerchumA222
+- kerhong
+- Kevin Darcel
+- Kezo90
+- Kiddie
+- Kierkegaard
+- Killyana
+- KingPin
+- Kinzcool
+- Kiper
+- Kiperr
+- Kiritoo
+- KiriX
+- Kirkhammett
+- Kittnz
+- Klaimmore
+- Koani
+- kontownik
+- Koord
+- kozelo
+- Kretol
+- krofna
+- Krogonos
+- krz
+- Krzysztof Rapacki
+- Kudlaty
+- Kuteur
+- L30m4nc3r
+- laise
+- laly
+- Lapps
+- Lartza
+- Larva
+- Larya
+- LaserJet
+- laviniu
+- Lazzalf
+- Leak
+- leguybrush
+- Leonid Logvinov
+- Liberate
+- Lightguard
+- LihO
+- LilleCarl
+- LiMCrosS
+- linencloth
+- liszt
+- lobuz
+- loop69
+- Lopin
+- Lorac
+- LordJZ
+- Lordron
+- LordUsagi
+- lost-illusion
+- Lucas
+- Lucy
+- Luhzinha
+- Lukaasm
+- Luniz2k1
+- Lutik
+- Luzifix
+- Lynx3d
+- m.ax
+- m7nu3l
+- maanuel
+- Machiavelli
+- MacWarrior
+- MadJack
+- Magnifikator
+- maikash
+- make_the_king
+- Malcrom
+- manuel
+- Manuel Carrasco
+- ManuFe
+- marc0303
+- Marius Ungureanu
+- Mark07
+- Marosa
+- Martin Weinelt
+- MaS0n
+- Matthew Goff
+- maxdestroyer
+- MaXiMiUS
+- Maxxie
+- maxxx
+- McBitter
+- McLovin
+- MeanMachine
+- Medwise
+- megamage
+- Meldanor
+- Menia
+- menke
+- Merlin2010
+- MetaphysicalDrama
+- Michael
+- MidnaAT
+- miebaik
+- Miha Penger
+- Mihapro
+- mik1893
+- Mik43l
+- mike753
+- miranda.conrado
+- Miroslav1993
+- Mislav Blažević
+- MitchesD
+- mknjc
+- mns
+- Moandor
+- mobel
+- Mogadischu
+- Molius
+- MorganaOP
+- Morgoporc
+- moriquendu
+- Morpheux
+- mrbungle
+- mrquickfx
+- MrSmite
+- MrTux
+- msoky
+- mthsena
+- Mufik
+- Muhaha
+- multiplexer
+- Multivitamin
+- mweinelt
+- Myran2
+- n0n4m3
+- n4ndo
+- n4rk0
+- Nafsih
+- Naga
+- Naicisum
+- Naios
+- nanouniko
+- Nate
+- natepizzle
+- Naturamen
+- Natureknight
+- Nawuko
+- Nay
+- Nayre
+- Ne3x
+- NeatElves
+- Necro
+- Necroo
+- Nefarion
+- nelegalno
+- nelgalno
+- Nemesis
+- neo0608
+- Neo2003
+- NeoLithicX
+- Ner'zhul
+- nesocip
+- netoya
+- NetSky
+- neurorulez
+- neuro_999
+- Nevadas
+- Nevan
+- new001
+- Nexflame
+- Nezemnoy
+- Nick
+- nihal
+- Nihilianth
+- nissen
+- Nivelo
+- NNN666
+- Noeliel
+- NoFantasy
+- Noffearr
+- Northstrider
+- nos4r2zod
+- Ntsc
+- NTX
+- nucleartux
+- nugu100
+- Numielle
+- NuRRi
+- Nyeriah
+- Oculus
+- oc_redfox
+- Odyssey
+- ogeraisi
+- oiler2112
+- oMadMano
+- onkelz28
+- Opterman
+- Orphus
+- Ottowayne
+- Ouden
+- P-Kito
+- p.alexej
+- p0ody
+- p0wer
+- PainKiller
+- panaut0lordv
+- Paradox
+- pasdVn
+- Patro
+- Payn
+- Paytheo
+- peaceman
+- pek2011
+- peldor
+- pendragon
+- Per Wilhelmsen
+- Pesthuf
+- pete318
+- Phacops
+- Phantons
+- phoenixfight
+- Pitcrawler
+- pjasicek
+- PKX
+- Polkic
+- Portgas
+- Portgas D. Ace
+- Praetonus
+- Prince
+- PrinceCreed
+- profPlum
+- projectcoredevs
+- Proofzor
+- PSZ
+- PuniCZ
+- QAston
+- qaywsx
+- qsa
+- QT
+- QuaLiT1
+- qubix
+- raczman
+- raelik
+- raftom
+- RammboNr5
+- Ramses_II
+- Ramus
+- Ramusik
+- Rastik
+- rastikzzz
+- Rat
+- raven_coda
+- razer025
+- rechapa79
+- redcore
+- RedSonja
+- Regigicas
+- reno
+- retriman
+- Reve
+- RezolveX
+- Rhyme
+- Ric101
+- Riccardo
+- Ricko92
+- riddick
+- rilex
+- rj686
+- robinsch
+- roc13x
+- Rochet2
+- rocky517
+- rockzOr
+- rocverde
+- Rognar
+- Rohlik
+- Roland
+- Rolando
+- runningnak3d
+- Rushor
+- rvnth
+- Saeba
+- Santiago
+- Sar777
+- Sarjuuk
+- Sawiner
+- scarymovie87
+- Scazzato88
+- Schmoozerd
+- seaofgreen
+- Sebastián Orellana
+- secharles
+- seirge
+- Seizerkiller
+- Seline
+- Sephiroth1984
+- Seraphim
+- SeT
+- Sethoso
+- SeTM
+- SgT-Fatality
+- Shauren
+- shax
+- Shendor
+- ShinDarth
+- shlomi1515
+- Shocker
+- SignFinder
+- Silinoron
+- silver1ce
+- SilverIce
+- simak
+- simon
+- SimonDMII
+- sirikfoll
+- Sisif
+- Skystar
+- SLG
+- Smakapotatis
+- smellbee
+- SnakeIce
+- Socolin
+- sohrab
+- sombre88
+- sonic3000
+- Sony
+- Sorken
+- Sorya
+- Souler
+- SoulForge
+- soulfrost
+- Sovak
+- sparc
+- spgm
+- Splash
+- Splinter
+- Spp
+- springfieldking
+- srounet
+- Stalker-Riddick
+- StarJoker
+- Stefo
+- stfx
+- Stokrotka
+- StormByte
+- streetart
+- Stryker
+- Studioworks
+- subhuman_bob
+- Subv
+- Sundark
+- sunwell
+- SupaBad
+- suranex
+- svannon
+- svetilo12
+- Syntec
+- SyRiOCoP
+- Takenbacon
+- Taliesin
+- Tanatos
+- Tanner Carter
+- Tartalo
+- Taser
+- Tassader
+- TCKiper
+- teacher
+- teacher4
+- tehmarto
+- telsamat
+- Tequila
+- terrorbringer
+- teyrnon
+- tharaca
+- The Game
+- The-Legend
+- thebillkidy
+- Them
+- Themris
+- thenecromancer
+- therzok
+- thesensei
+- The_Game_Master
+- thmarth
+- thomas33
+- Thraxx
+- throneinc
+- thumsoul
+- thymuswisewood
+- Thyros
+- tibbi
+- Tidus
+- timh52280
+- timmit
+- Tiretunderl
+- tkrokli
+- tlexii
+- tobmaps
+- toilet1
+- Tomas
+- Tomatoes
+- Tome
+- Tommassino
+- tomrus88
+- TOM_RUS
+- toshik
+- totoro
+- Trazom
+- Trazom62
+- tREAk
+- trickerer
+- Triply
+- Trisjdc
+- Trista
+- Trogvar
+- Trojan
+- Trond B Krokli
+- Troy
+- TrullyONE
+- Turk3y
+- Turok
+- Tuxity
+- Tux`Volant
+- tvaroh
+- Typhoon
+- tyraela
+- Ukulutl
+- unholy
+- Unholychick
+- unknown
+- untaught
+- Uruviel
+- Vadim
+- vagoth
+- Valcorb
+- Various
+- Vaughner
+- vcrx6
+- velinath
+- Velorien
+- Venugh
+- Veras
+- Vicos
+- Vincent-Michael
+- Vinolentus
+- Visagalis
+- Vlad
+- vlad852
+- VladimirMangos
+- Vladmimír Lipták
+- vladonix
+- VojtÄ›ch BoÄek
+- w12x
+- w1sht0l1v3
+- Walkum
+- WarHead
+- warmech
+- Warpten
+- warriorpoetex
+- Wayt
+- weclub
+- Wilds
+- wilibald09
+- Willian Krueger
+- win
+- Win32
+- wintergreen77
+- WishToDie
+- Wispeckt
+- Wizz
+- wonopon
+- Wormheart
+- wowgargamel
+- Wowka321
+- wowpsp
+- Wulfr
+- Wyk3d
+- WyldePointer
+- X-Savior
+- Xanadu
+- Xanvial
+- Xanviall
+- Xees
+- Xeptor
+- XEQT
+- xerkoss
+- XFurry
+- Xiledria
+- xILOSWag
+- xjose93
+- xK1
+- Xlybriem
+- xomachine
+- XTElite1
+- xter
+- XTZGZoReX
+- yad02
+- Yaki Khadafi
+- yavi
+- Yelvann
+- yesitsme
+- z0ldrax
+- Zabustak
+- ZackTsuna
+- Zakamurite
+- Zaphod
+- Zcuron
+- Zedron
+- zengwf
+- Zerg2000
+- zergtmn
+- zhanhang03
+- Zharvek
+- zhenya
+- zoidmann
+- zori
+- zorix
+- zthoreen
+- zwerg
+- zxbiohazardzx
+- [M]axx
+- _manuel_
+- `win
+- Дмитрий
diff --git a/cmake/compiler/clang/settings.cmake b/cmake/compiler/clang/settings.cmake
index 98f893987ec..a449551a357 100644
--- a/cmake/compiler/clang/settings.cmake
+++ b/cmake/compiler/clang/settings.cmake
@@ -17,3 +17,4 @@ endif()
# -Wno-narrowing needed to suppress a warning in g3d
# -Wno-deprecated-register is needed to suppress 185 gsoap warnings on Unix systems.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-narrowing -Wno-deprecated-register")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG=1")
diff --git a/cmake/macros/CheckPlatform.cmake b/cmake/macros/CheckPlatform.cmake
index e08aaed8db2..0f41a9c127e 100644
--- a/cmake/macros/CheckPlatform.cmake
+++ b/cmake/macros/CheckPlatform.cmake
@@ -7,8 +7,6 @@ else()
MESSAGE(STATUS "Detected 32-bit platform")
endif()
-include("${CMAKE_SOURCE_DIR}/cmake/platform/settings.cmake")
-
if(WIN32)
include("${CMAKE_SOURCE_DIR}/cmake/platform/win/settings.cmake")
elseif(UNIX)
diff --git a/cmake/macros/FindMySQL.cmake b/cmake/macros/FindMySQL.cmake
index 6b00510ba42..72128450638 100644
--- a/cmake/macros/FindMySQL.cmake
+++ b/cmake/macros/FindMySQL.cmake
@@ -73,25 +73,13 @@ find_path(MYSQL_INCLUDE_DIR
/usr/local/include
/usr/local/include/mysql
/usr/local/mysql/include
- "C:/Program Files/MySQL/MySQL Server 5.6/include"
- "C:/Program Files/MySQL/MySQL Server 5.5/include"
- "C:/Program Files/MySQL/MySQL Server 5.1/include"
- "C:/Program Files/MySQL/MySQL Server 5.0/include"
- "C:/Program Files/MySQL/include"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.6/include"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.5/include"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.1/include"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.0/include"
- "C:/Program Files (x86)/MySQL/include"
+ "${PROGRAM_FILES_64}/MySQL/*/include"
+ "${PROGRAM_FILES_64}/MySQL/include"
+ "${PROGRAM_FILES_32}/MySQL/*/include"
+ "${PROGRAM_FILES_32}/MySQL/include"
"C:/MySQL/include"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/include"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.5;Location]/include"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/include"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/include"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.6;Location]/include"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.5;Location]/include"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/include"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/include"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\*;Location]/include"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\*;Location]/include"
"$ENV{ProgramFiles}/MySQL/*/include"
"$ENV{SystemDrive}/MySQL/*/include"
"c:/msys/local/include"
@@ -123,41 +111,17 @@ if( WIN32 )
libmysql
PATHS
${MYSQL_ADD_LIBRARIES_PATH}
- "C:/Program Files/MySQL/MySQL Server 5.6/lib"
- "C:/Program Files/MySQL/MySQL Server 5.6/lib/opt"
- "C:/Program Files/MySQL/MySQL Server 5.5/lib"
- "C:/Program Files/MySQL/MySQL Server 5.5/lib/opt"
- "C:/Program Files/MySQL/MySQL Server 5.1/lib"
- "C:/Program Files/MySQL/MySQL Server 5.1/lib/opt"
- "C:/Program Files/MySQL/MySQL Server 5.0/lib"
- "C:/Program Files/MySQL/MySQL Server 5.0/lib/opt"
- "C:/Program Files/MySQL/lib"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.6/lib"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.6/lib/opt"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.5/lib"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.5/lib/opt"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.1/lib"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.1/lib/opt"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.0/lib"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.0/lib/opt"
- "C:/Program Files (x86)/MySQL/lib"
+ "${PROGRAM_FILES_64}/MySQL/*/lib"
+ "${PROGRAM_FILES_64}/MySQL/*/lib/opt"
+ "${PROGRAM_FILES_64}/MySQL/lib"
+ "${PROGRAM_FILES_32}/MySQL/*/lib"
+ "${PROGRAM_FILES_32}/MySQL/*/lib/opt"
+ "${PROGRAM_FILES_32}/MySQL/lib"
"C:/MySQL/lib/debug"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/lib"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/lib/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.5;Location]/lib"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.5;Location]/lib/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/lib"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/lib"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.6;Location]/lib"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.6;Location]/lib/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.5;Location]/lib"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.5;Location]/lib/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/lib"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/lib"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\*;Location]/lib"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\*;Location]/lib/opt"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\*;Location]/lib"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\*;Location]/lib/opt"
"$ENV{ProgramFiles}/MySQL/*/lib/opt"
"$ENV{SystemDrive}/MySQL/*/lib/opt"
"c:/msys/local/include"
@@ -198,41 +162,17 @@ endif( UNIX )
if( WIN32 )
find_program(MYSQL_EXECUTABLE mysql
PATHS
- "C:/Program Files/MySQL/MySQL Server 5.6/bin"
- "C:/Program Files/MySQL/MySQL Server 5.6/bin/opt"
- "C:/Program Files/MySQL/MySQL Server 5.5/bin"
- "C:/Program Files/MySQL/MySQL Server 5.5/bin/opt"
- "C:/Program Files/MySQL/MySQL Server 5.1/bin"
- "C:/Program Files/MySQL/MySQL Server 5.1/bin/opt"
- "C:/Program Files/MySQL/MySQL Server 5.0/bin"
- "C:/Program Files/MySQL/MySQL Server 5.0/bin/opt"
- "C:/Program Files/MySQL/bin"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.6/bin"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.6/bin/opt"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.5/bin"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.5/bin/opt"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.1/bin"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.1/bin/opt"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.0/bin"
- "C:/Program Files (x86)/MySQL/MySQL Server 5.0/bin/opt"
- "C:/Program Files (x86)/MySQL/bin"
+ "${PROGRAM_FILES_64}/MySQL/*/bin"
+ "${PROGRAM_FILES_64}/MySQL/*/bin/opt"
+ "${PROGRAM_FILES_64}/MySQL/bin"
+ "${PROGRAM_FILES_32}/MySQL/*/bin"
+ "${PROGRAM_FILES_32}/MySQL/*/bin/opt"
+ "${PROGRAM_FILES_32}/MySQL/bin"
"C:/MySQL/bin/debug"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/bin/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.5;Location]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.5;Location]/bin/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/bin/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/bin/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.6;Location]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.6;Location]/bin/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.5;Location]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.5;Location]/bin/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/bin/opt"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/bin/opt"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\*;Location]/bin"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\*;Location]/bin/opt"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\*;Location]/bin"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\*;Location]/bin/opt"
"$ENV{ProgramFiles}/MySQL/*/bin/opt"
"$ENV{SystemDrive}/MySQL/*/bin/opt"
"c:/msys/local/include"
diff --git a/cmake/platform/settings.cmake b/cmake/platform/settings.cmake
deleted file mode 100644
index 6df5bc2165f..00000000000
--- a/cmake/platform/settings.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-# set installation prefix
-if( PREFIX )
- set(CMAKE_INSTALL_PREFIX "${PREFIX}")
-endif()
-
diff --git a/dep/CMakeLists.txt b/dep/CMakeLists.txt
index 409500a92f6..e5fc80154bc 100644
--- a/dep/CMakeLists.txt
+++ b/dep/CMakeLists.txt
@@ -32,10 +32,10 @@ endif()
if(SERVERS OR TOOLS)
add_subdirectory(g3dlite)
add_subdirectory(recastnavigation)
+ add_subdirectory(cppformat)
endif()
if(SERVERS)
- add_subdirectory(cppformat)
add_subdirectory(gsoap)
add_subdirectory(zmqpp)
endif()
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index 7d5aed97aa4..545e4e3baf6 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -495,7 +495,7 @@ CREATE TABLE `rbac_linked_permissions` (
LOCK TABLES `rbac_linked_permissions` WRITE;
/*!40000 ALTER TABLE `rbac_linked_permissions` DISABLE KEYS */;
-INSERT INTO `rbac_linked_permissions` VALUES (192,21),(192,42),(192,43),(192,193),(192,196),(192,692),(192,776),(192,778),(192,779),(192,780),(192,781),(192,782),(192,783),(192,784),(192,785),(192,786),(192,787),(192,788),(192,789),(192,790),(192,791),(192,792),(192,793),(192,794),(193,48),(193,194),(193,197),(194,1),(194,2),(194,11),(194,13),(194,14),(194,15),(194,16),(194,17),(194,18),(194,19),(194,20),(194,22),(194,23),(194,25),(194,26),(194,27),(194,28),(194,29),(194,30),(194,31),(194,32),(194,33),(194,34),(194,35),(194,36),(194,37),(194,38),(194,39),(194,40),(194,41),(194,44),(194,46),(194,47),(194,51),(194,195),(194,198),(194,632),(194,798),(195,3),(195,4),(195,5),(195,6),(195,24),(195,49),(195,199),(196,10),(196,200),(196,201),(196,208),(196,212),(196,213),(196,214),(196,215),(196,216),(196,226),(196,227),(196,230),(196,231),(196,233),(196,234),(196,235),(196,238),(196,239),(196,240),(196,241),(196,242),(196,243),(196,244),(196,245),(196,246),(196,247),(196,248),(196,249),(196,250),(196,251),(196,252),(196,253),(196,254),(196,255),(196,256),(196,257),(196,258),(196,259),(196,260),(196,261),(196,262),(196,264),(196,265),(196,266),(196,267),(196,268),(196,269),(196,270),(196,271),(196,272),(196,279),(196,280),(196,283),(196,287),(196,288),(196,289),(196,290),(196,291),(196,292),(196,293),(196,294),(196,295),(196,296),(196,297),(196,298),(196,299),(196,302),(196,303),(196,304),(196,305),(196,306),(196,307),(196,308),(196,309),(196,310),(196,313),(196,314),(196,319),(196,320),(196,321),(196,322),(196,323),(196,324),(196,325),(196,326),(196,327),(196,328),(196,329),(196,330),(196,331),(196,332),(196,333),(196,334),(196,335),(196,336),(196,337),(196,338),(196,339),(196,340),(196,341),(196,342),(196,343),(196,344),(196,345),(196,346),(196,347),(196,348),(196,349),(196,350),(196,351),(196,352),(196,353),(196,354),(196,355),(196,356),(196,357),(196,358),(196,359),(196,360),(196,361),(196,362),(196,363),(196,364),(196,365),(196,366),(196,373),(196,375),(196,400),(196,401),(196,402),(196,403),(196,404),(196,405),(196,406),(196,407),(196,417),(196,418),(196,419),(196,420),(196,421),(196,422),(196,423),(196,424),(196,425),(196,426),(196,427),(196,428),(196,429),(196,434),(196,435),(196,436),(196,437),(196,438),(196,439),(196,440),(196,441),(196,442),(196,443),(196,444),(196,445),(196,446),(196,447),(196,448),(196,449),(196,450),(196,451),(196,452),(196,453),(196,454),(196,455),(196,456),(196,457),(196,458),(196,459),(196,461),(196,463),(196,464),(196,465),(196,472),(196,473),(196,474),(196,475),(196,476),(196,477),(196,478),(196,488),(196,489),(196,491),(196,492),(196,493),(196,495),(196,497),(196,498),(196,499),(196,500),(196,502),(196,503),(196,505),(196,508),(196,511),(196,513),(196,514),(196,516),(196,519),(196,522),(196,523),(196,526),(196,527),(196,529),(196,530),(196,533),(196,535),(196,536),(196,537),(196,538),(196,539),(196,540),(196,541),(196,556),(196,581),(196,582),(196,592),(196,593),(196,596),(196,602),(196,603),(196,604),(196,605),(196,606),(196,607),(196,608),(196,609),(196,610),(196,611),(196,612),(196,613),(196,615),(196,616),(196,617),(196,618),(196,619),(196,620),(196,621),(196,623),(196,624),(196,625),(196,626),(196,627),(196,628),(196,629),(196,630),(196,631),(196,633),(196,634),(196,635),(196,636),(196,637),(196,638),(196,639),(196,640),(196,641),(196,642),(196,643),(196,644),(196,645),(196,646),(196,647),(196,648),(196,649),(196,650),(196,651),(196,652),(196,653),(196,654),(196,655),(196,656),(196,657),(196,658),(196,659),(196,660),(196,661),(196,662),(196,663),(196,664),(196,665),(196,666),(196,667),(196,668),(196,669),(196,670),(196,671),(196,672),(196,673),(196,674),(196,675),(196,676),(196,677),(196,678),(196,679),(196,680),(196,681),(196,682),(196,683),(196,684),(196,685),(196,686),(196,687),(196,688),(196,689),(196,690),(196,691),(196,693),(196,694),(196,695),(196,696),(196,697),(196,698),(196,699),(196,700),(196,701),(196,702),(196,703),(196,704),(196,705),(196,706),(196,707),(196,708),(196,709),(196,710),(196,711),(196,712),(196,713),(196,714),(196,715),(196,716),(196,717),(196,718),(196,719),(196,721),(196,722),(196,723),(196,724),(196,725),(196,726),(196,727),(196,728),(196,729),(196,730),(196,733),(196,734),(196,735),(196,736),(196,738),(196,739),(196,748),(196,753),(196,757),(196,773),(196,777),(196,809),(196,817),(196,825),(196,829),(196,830),(196,831),(196,832),(196,833),(197,232),(197,236),(197,237),(197,273),(197,274),(197,275),(197,276),(197,277),(197,284),(197,285),(197,286),(197,301),(197,311),(197,387),(197,388),(197,389),(197,390),(197,391),(197,392),(197,393),(197,394),(197,395),(197,396),(197,397),(197,398),(197,399),(197,479),(197,480),(197,481),(197,482),(197,485),(197,486),(197,487),(197,494),(197,506),(197,509),(197,510),(197,517),(197,518),(197,521),(197,542),(197,543),(197,550),(197,558),(197,568),(197,571),(197,572),(197,573),(197,574),(197,575),(197,576),(197,577),(197,578),(197,579),(197,580),(197,583),(197,584),(197,585),(197,586),(197,587),(197,588),(197,589),(197,590),(197,591),(197,594),(197,595),(197,601),(197,743),(197,750),(197,758),(197,761),(197,762),(197,763),(197,764),(197,765),(197,766),(197,767),(197,768),(197,769),(197,770),(197,771),(197,772),(197,774),(197,805),(197,811),(197,813),(197,819),(197,821),(197,827),(198,218),(198,300),(198,312),(198,315),(198,316),(198,317),(198,318),(198,367),(198,368),(198,369),(198,370),(198,371),(198,372),(198,374),(198,376),(198,377),(198,378),(198,379),(198,380),(198,381),(198,382),(198,383),(198,384),(198,385),(198,386),(198,408),(198,409),(198,410),(198,411),(198,412),(198,413),(198,414),(198,415),(198,416),(198,430),(198,431),(198,432),(198,433),(198,462),(198,466),(198,467),(198,468),(198,469),(198,470),(198,471),(198,483),(198,484),(198,490),(198,504),(198,512),(198,515),(198,520),(198,524),(198,528),(198,531),(198,532),(198,544),(198,545),(198,546),(198,547),(198,548),(198,549),(198,551),(198,552),(198,553),(198,554),(198,555),(198,557),(198,559),(198,560),(198,561),(198,562),(198,563),(198,564),(198,565),(198,566),(198,567),(198,569),(198,570),(198,597),(198,598),(198,599),(198,600),(198,737),(198,740),(198,741),(198,742),(198,744),(198,745),(198,746),(198,747),(198,749),(198,751),(198,752),(198,754),(198,755),(198,756),(198,759),(198,760),(198,799),(198,800),(198,801),(198,802),(198,803),(198,804),(198,806),(198,807),(198,808),(198,810),(198,812),(198,814),(198,815),(198,816),(198,818),(198,820),(198,822),(198,823),(198,824),(198,826),(198,828),(199,207),(199,209),(199,210),(199,211),(199,217),(199,221),(199,222),(199,223),(199,225),(199,263),(199,496),(199,501),(199,507),(199,525),(199,534),(199,797);
+INSERT INTO `rbac_linked_permissions` VALUES (192,21),(192,42),(192,43),(192,193),(192,196),(192,692),(192,776),(192,778),(192,779),(192,780),(192,781),(192,782),(192,783),(192,784),(192,785),(192,786),(192,787),(192,788),(192,789),(192,790),(192,791),(192,792),(192,793),(192,794),(193,48),(193,194),(193,197),(194,1),(194,2),(194,11),(194,13),(194,14),(194,15),(194,16),(194,17),(194,18),(194,19),(194,20),(194,22),(194,23),(194,25),(194,26),(194,27),(194,28),(194,29),(194,30),(194,31),(194,32),(194,33),(194,34),(194,35),(194,36),(194,37),(194,38),(194,39),(194,40),(194,41),(194,44),(194,46),(194,47),(194,51),(194,195),(194,198),(194,632),(194,798),(195,3),(195,4),(195,5),(195,6),(195,24),(195,49),(195,199),(196,10),(196,200),(196,201),(196,208),(196,212),(196,213),(196,214),(196,215),(196,216),(196,226),(196,227),(196,230),(196,231),(196,233),(196,234),(196,235),(196,238),(196,239),(196,240),(196,241),(196,242),(196,243),(196,244),(196,245),(196,246),(196,247),(196,248),(196,249),(196,250),(196,251),(196,252),(196,253),(196,254),(196,255),(196,256),(196,257),(196,258),(196,259),(196,260),(196,261),(196,262),(196,264),(196,265),(196,266),(196,267),(196,268),(196,269),(196,270),(196,271),(196,272),(196,279),(196,280),(196,283),(196,287),(196,288),(196,289),(196,290),(196,291),(196,292),(196,293),(196,294),(196,295),(196,296),(196,297),(196,298),(196,299),(196,302),(196,303),(196,304),(196,305),(196,306),(196,307),(196,308),(196,309),(196,310),(196,313),(196,314),(196,319),(196,320),(196,321),(196,322),(196,323),(196,324),(196,325),(196,326),(196,327),(196,328),(196,329),(196,330),(196,331),(196,332),(196,333),(196,334),(196,335),(196,336),(196,337),(196,338),(196,339),(196,340),(196,341),(196,342),(196,343),(196,344),(196,345),(196,346),(196,347),(196,348),(196,349),(196,350),(196,351),(196,352),(196,353),(196,354),(196,355),(196,356),(196,357),(196,358),(196,359),(196,360),(196,361),(196,362),(196,363),(196,364),(196,365),(196,366),(196,373),(196,375),(196,400),(196,401),(196,402),(196,403),(196,404),(196,405),(196,406),(196,407),(196,417),(196,418),(196,419),(196,420),(196,421),(196,422),(196,423),(196,424),(196,425),(196,426),(196,427),(196,428),(196,429),(196,434),(196,435),(196,436),(196,437),(196,438),(196,439),(196,440),(196,441),(196,442),(196,443),(196,444),(196,445),(196,446),(196,447),(196,448),(196,449),(196,450),(196,451),(196,452),(196,453),(196,454),(196,455),(196,456),(196,457),(196,458),(196,459),(196,461),(196,463),(196,464),(196,465),(196,472),(196,473),(196,474),(196,475),(196,476),(196,477),(196,478),(196,488),(196,489),(196,491),(196,492),(196,493),(196,495),(196,497),(196,498),(196,499),(196,500),(196,502),(196,503),(196,505),(196,508),(196,511),(196,513),(196,514),(196,516),(196,519),(196,522),(196,523),(196,526),(196,527),(196,529),(196,530),(196,533),(196,535),(196,536),(196,537),(196,538),(196,539),(196,540),(196,541),(196,556),(196,581),(196,582),(196,592),(196,593),(196,596),(196,602),(196,603),(196,604),(196,605),(196,606),(196,607),(196,608),(196,609),(196,610),(196,611),(196,612),(196,613),(196,615),(196,616),(196,617),(196,618),(196,619),(196,620),(196,621),(196,623),(196,624),(196,625),(196,626),(196,627),(196,628),(196,629),(196,630),(196,631),(196,633),(196,634),(196,635),(196,636),(196,637),(196,638),(196,639),(196,640),(196,641),(196,642),(196,643),(196,644),(196,645),(196,646),(196,647),(196,648),(196,649),(196,650),(196,651),(196,652),(196,653),(196,654),(196,655),(196,656),(196,657),(196,658),(196,659),(196,660),(196,661),(196,662),(196,663),(196,664),(196,665),(196,666),(196,667),(196,668),(196,669),(196,670),(196,671),(196,672),(196,673),(196,674),(196,675),(196,676),(196,677),(196,678),(196,679),(196,680),(196,681),(196,682),(196,683),(196,684),(196,685),(196,686),(196,687),(196,688),(196,689),(196,690),(196,691),(196,693),(196,694),(196,695),(196,696),(196,697),(196,698),(196,699),(196,700),(196,701),(196,702),(196,703),(196,704),(196,705),(196,706),(196,707),(196,708),(196,709),(196,710),(196,711),(196,712),(196,713),(196,714),(196,715),(196,716),(196,717),(196,718),(196,719),(196,721),(196,722),(196,723),(196,724),(196,725),(196,726),(196,727),(196,728),(196,729),(196,730),(196,733),(196,734),(196,735),(196,736),(196,738),(196,739),(196,748),(196,753),(196,757),(196,773),(196,777),(196,809),(196,817),(196,825),(196,829),(196,830),(196,831),(196,832),(196,833),(197,232),(197,236),(197,237),(197,273),(197,274),(197,275),(197,276),(197,277),(197,284),(197,285),(197,286),(197,301),(197,311),(197,387),(197,388),(197,389),(197,390),(197,391),(197,392),(197,393),(197,394),(197,395),(197,396),(197,397),(197,398),(197,399),(197,479),(197,480),(197,481),(197,482),(197,485),(197,486),(197,487),(197,494),(197,506),(197,509),(197,510),(197,517),(197,518),(197,521),(197,542),(197,543),(197,550),(197,558),(197,568),(197,571),(197,572),(197,573),(197,574),(197,575),(197,576),(197,577),(197,578),(197,579),(197,580),(197,583),(197,584),(197,585),(197,586),(197,587),(197,588),(197,589),(197,590),(197,591),(197,594),(197,595),(197,601),(197,743),(197,750),(197,758),(197,761),(197,762),(197,763),(197,764),(197,765),(197,766),(197,767),(197,768),(197,769),(197,770),(197,771),(197,772),(197,774),(197,805),(197,811),(197,813),(197,819),(197,821),(197,827),(198,218),(198,300),(198,312),(198,315),(198,316),(198,317),(198,318),(198,367),(198,368),(198,369),(198,370),(198,371),(198,372),(198,374),(198,376),(198,377),(198,378),(198,379),(198,380),(198,381),(198,382),(198,383),(198,384),(198,385),(198,386),(198,408),(198,409),(198,410),(198,411),(198,412),(198,413),(198,414),(198,415),(198,416),(198,430),(198,431),(198,432),(198,433),(198,462),(198,466),(198,467),(198,468),(198,469),(198,470),(198,471),(198,483),(198,484),(198,490),(198,504),(198,512),(198,515),(198,520),(198,524),(198,528),(198,531),(198,532),(198,544),(198,545),(198,546),(198,547),(198,548),(198,549),(198,551),(198,552),(198,553),(198,554),(198,555),(198,557),(198,559),(198,560),(198,561),(198,562),(198,563),(198,564),(198,565),(198,566),(198,567),(198,569),(198,570),(198,597),(198,598),(198,599),(198,600),(198,737),(198,740),(198,741),(198,742),(198,744),(198,745),(198,746),(198,747),(198,749),(198,751),(198,752),(198,754),(198,755),(198,756),(198,759),(198,760),(198,799),(198,800),(198,801),(198,802),(198,803),(198,804),(198,806),(198,807),(198,808),(198,810),(198,812),(198,814),(198,815),(198,816),(198,818),(198,820),(198,822),(198,823),(198,824),(198,826),(198,828),(198,834),(199,207),(199,209),(199,210),(199,211),(199,217),(199,221),(199,222),(199,223),(199,225),(199,263),(199,496),(199,501),(199,507),(199,525),(199,534),(199,797);
/*!40000 ALTER TABLE `rbac_linked_permissions` ENABLE KEYS */;
UNLOCK TABLES;
@@ -519,7 +519,7 @@ CREATE TABLE `rbac_permissions` (
LOCK TABLES `rbac_permissions` WRITE;
/*!40000 ALTER TABLE `rbac_permissions` DISABLE KEYS */;
-INSERT INTO `rbac_permissions` VALUES (1,'Instant logout'),(2,'Skip Queue'),(3,'Join Normal Battleground'),(4,'Join Random Battleground'),(5,'Join Arenas'),(6,'Join Dungeon Finder'),(10,'Use character templates'),(11,'Log GM trades'),(13,'Skip Instance required bosses check'),(14,'Skip character creation team mask check'),(15,'Skip character creation class mask check'),(16,'Skip character creation race mask check'),(17,'Skip character creation reserved name check'),(18,'Skip character creation heroic min level check'),(19,'Skip needed requirements to use channel check'),(20,'Skip disable map check'),(21,'Skip reset talents when used more than allowed check'),(22,'Skip spam chat check'),(23,'Skip over-speed ping check'),(24,'Two side faction characters on the same account'),(25,'Allow say chat between factions'),(26,'Allow channel chat between factions'),(27,'Two side mail interaction'),(28,'See two side who list'),(29,'Add friends of other faction'),(30,'Save character without delay with .save command'),(31,'Use params with .unstuck command'),(32,'Can be assigned tickets with .assign ticket command'),(33,'Notify if a command was not found'),(34,'Check if should appear in list using .gm ingame command'),(35,'See all security levels with who command'),(36,'Filter whispers'),(37,'Use staff badge in chat'),(38,'Resurrect with full Health Points'),(39,'Restore saved gm setting states'),(40,'Allows to add a gm to friend list'),(41,'Use Config option START_GM_LEVEL to assign new character level'),(42,'Allows to use CMSG_WORLD_TELEPORT opcode'),(43,'Allows to use CMSG_WHOIS opcode'),(44,'Receive global GM messages/texts'),(45,'Join channels without announce'),(46,'Change channel settings without being channel moderator'),(47,'Enables lower security than target check'),(48,'Enable IP, Last Login and EMail output in pinfo'),(49,'Forces to enter the email for confirmation on password change'),(50,'Allow user to check his own email with .account'),(51,'Allow trading between factions'),(192,'Role: Sec Level Administrator'),(193,'Role: Sec Level Gamemaster'),(194,'Role: Sec Level Moderator'),(195,'Role: Sec Level Player'),(196,'Role: Administrator Commands'),(197,'Role: Gamemaster Commands'),(198,'Role: Moderator Commands'),(199,'Role: Player Commands'),(200,'Command: rbac'),(201,'Command: rbac account'),(202,'Command: rbac account list'),(203,'Command: rbac account grant'),(204,'Command: rbac account deny'),(205,'Command: rbac account revoke'),(206,'Command: rbac list'),(207,'Command: battlenetaccount'),(208,'Command: battlenetaccount create'),(209,'Command: battlenetaccount lock country'),(210,'Command: battlenetaccount lock ip'),(211,'Command: battlenetaccount password'),(212,'Command: battlenetaccount set'),(213,'Command: battlenetaccount set password'),(214,'Command: bnetaccount link'),(215,'Command: bnetaccount unlink'),(216,'Command: bnetaccount gameaccountcreate'),(217,'Command: account'),(218,'Command: account addon'),(219,'Command: account create'),(220,'Command: account delete'),(221,'Command: account lock'),(222,'Command: account lock country'),(223,'Command: account lock ip'),(224,'Command: account onlinelist'),(225,'Command: account password'),(226,'Command: account set'),(227,'Command: account set addon'),(228,'Command: account set gmlevel'),(229,'Command: account set password'),(230,'Command: achievement'),(231,'Command: achievement add'),(232,'Command: arena'),(233,'Command: arena captain'),(234,'Command: arena create'),(235,'Command: arena disband'),(236,'Command: arena info'),(237,'Command: arena lookup'),(238,'Command: arena rename'),(239,'Command: ban'),(240,'Command: ban account'),(241,'Command: ban character'),(242,'Command: ban ip'),(243,'Command: ban playeraccount'),(244,'Command: baninfo'),(245,'Command: baninfo account'),(246,'Command: baninfo character'),(247,'Command: baninfo ip'),(248,'Command: banlist'),(249,'Command: banlist account'),(250,'Command: banlist character'),(251,'Command: banlist ip'),(252,'Command: unban'),(253,'Command: unban account'),(254,'Command: unban character'),(255,'Command: unban ip'),(256,'Command: unban playeraccount'),(257,'Command: bf'),(258,'Command: bf start'),(259,'Command: bf stop'),(260,'Command: bf switch'),(261,'Command: bf timer'),(262,'Command: bf enable'),(263,'Command: account email'),(264,'Command: account set sec'),(265,'Command: account set sec email'),(266,'Command: account set sec regmail'),(267,'Command: cast'),(268,'Command: cast back'),(269,'Command: cast dist'),(270,'Command: cast self'),(271,'Command: cast target'),(272,'Command: cast dest'),(273,'Command: character'),(274,'Command: character customize'),(275,'Command: character changefaction'),(276,'Command: character changerace'),(277,'Command: character deleted'),(279,'Command: character deleted list'),(280,'Command: character deleted restore'),(283,'Command: character level'),(284,'Command: character rename'),(285,'Command: character reputation'),(286,'Command: character titles'),(287,'Command: levelup'),(288,'Command: pdump'),(289,'Command: pdump load'),(290,'Command: pdump write'),(291,'Command: cheat'),(292,'Command: cheat casttime'),(293,'Command: cheat cooldown'),(294,'Command: cheat explore'),(295,'Command: cheat god'),(296,'Command: cheat power'),(297,'Command: cheat status'),(298,'Command: cheat taxi'),(299,'Command: cheat waterwalk'),(300,'Command: debug'),(301,'Command: debug anim'),(302,'Command: debug areatriggers'),(303,'Command: debug arena'),(304,'Command: debug bg'),(305,'Command: debug entervehicle'),(306,'Command: debug getitemstate'),(307,'Command: debug getitemvalue'),(308,'Command: debug getvalue'),(309,'Command: debug hostil'),(310,'Command: debug itemexpire'),(311,'Command: debug lootrecipient'),(312,'Command: debug los'),(313,'Command: debug mod32value'),(314,'Command: debug moveflags'),(315,'Command: debug play'),(316,'Command: debug play cinematics'),(317,'Command: debug play movie'),(318,'Command: debug play sound'),(319,'Command: debug send'),(320,'Command: debug send buyerror'),(321,'Command: debug send channelnotify'),(322,'Command: debug send chatmessage'),(323,'Command: debug send equiperror'),(324,'Command: debug send largepacket'),(325,'Command: debug send opcode'),(326,'Command: debug send qinvalidmsg'),(327,'Command: debug send qpartymsg'),(328,'Command: debug send sellerror'),(329,'Command: debug send setphaseshift'),(330,'Command: debug send spellfail'),(331,'Command: debug setaurastate'),(332,'Command: debug setbit'),(333,'Command: debug setitemvalue'),(334,'Command: debug setvalue'),(335,'Command: debug setvid'),(336,'Command: debug spawnvehicle'),(337,'Command: debug threat'),(338,'Command: debug update'),(339,'Command: debug uws'),(340,'Command: wpgps'),(341,'Command: deserter'),(342,'Command: deserter bg'),(343,'Command: deserter bg add'),(344,'Command: deserter bg remove'),(345,'Command: deserter instance'),(346,'Command: deserter instance add'),(347,'Command: deserter instance remove'),(348,'Command: disable'),(349,'Command: disable add'),(350,'Command: disable add achievement_criteria'),(351,'Command: disable add battleground'),(352,'Command: disable add map'),(353,'Command: disable add mmap'),(354,'Command: disable add outdoorpvp'),(355,'Command: disable add quest'),(356,'Command: disable add spell'),(357,'Command: disable add vmap'),(358,'Command: disable remove'),(359,'Command: disable remove achievement_criteria'),(360,'Command: disable remove battleground'),(361,'Command: disable remove map'),(362,'Command: disable remove mmap'),(363,'Command: disable remove outdoorpvp'),(364,'Command: disable remove quest'),(365,'Command: disable remove spell'),(366,'Command: disable remove vmap'),(367,'Command: event'),(368,'Command: event activelist'),(369,'Command: event start'),(370,'Command: event stop'),(371,'Command: gm'),(372,'Command: gm chat'),(373,'Command: gm fly'),(374,'Command: gm ingame'),(375,'Command: gm list'),(376,'Command: gm visible'),(377,'Command: go'),(378,'Command: go creature'),(379,'Command: go graveyard'),(380,'Command: go grid'),(381,'Command: go object'),(382,'Command: go taxinode'),(383,'Command: go ticket'),(384,'Command: go trigger'),(385,'Command: go xyz'),(386,'Command: go zonexy'),(387,'Command: gobject'),(388,'Command: gobject activate'),(389,'Command: gobject add'),(390,'Command: gobject add temp'),(391,'Command: gobject delete'),(392,'Command: gobject info'),(393,'Command: gobject move'),(394,'Command: gobject near'),(395,'Command: gobject set'),(396,'Command: gobject set phase'),(397,'Command: gobject set state'),(398,'Command: gobject target'),(399,'Command: gobject turn'),(400,'debug transport'),(401,'Command: guild'),(402,'Command: guild create'),(403,'Command: guild delete'),(404,'Command: guild invite'),(405,'Command: guild uninvite'),(406,'Command: guild rank'),(407,'Command: guild rename'),(408,'Command: honor'),(409,'Command: honor add'),(410,'Command: honor add kill'),(411,'Command: honor update'),(412,'Command: instance'),(413,'Command: instance listbinds'),(414,'Command: instance unbind'),(415,'Command: instance stats'),(416,'Command: instance savedata'),(417,'Command: learn'),(418,'Command: learn all'),(419,'Command: learn all my'),(420,'Command: learn all my class'),(421,'Command: learn all my pettalents'),(422,'Command: learn all my spells'),(423,'Command: learn all my talents'),(424,'Command: learn all gm'),(425,'Command: learn all crafts'),(426,'Command: learn all default'),(427,'Command: learn all lang'),(428,'Command: learn all recipes'),(429,'Command: unlearn'),(430,'Command: lfg'),(431,'Command: lfg player'),(432,'Command: lfg group'),(433,'Command: lfg queue'),(434,'Command: lfg clean'),(435,'Command: lfg options'),(436,'Command: list'),(437,'Command: list creature'),(438,'Command: list item'),(439,'Command: list object'),(440,'Command: list auras'),(441,'Command: list mail'),(442,'Command: lookup'),(443,'Command: lookup area'),(444,'Command: lookup creature'),(445,'Command: lookup event'),(446,'Command: lookup faction'),(447,'Command: lookup item'),(448,'Command: lookup itemset'),(449,'Command: lookup object'),(450,'Command: lookup quest'),(451,'Command: lookup player'),(452,'Command: lookup player ip'),(453,'Command: lookup player account'),(454,'Command: lookup player email'),(455,'Command: lookup skill'),(456,'Command: lookup spell'),(457,'Command: lookup spell id'),(458,'Command: lookup taxinode'),(459,'Command: lookup tele'),(460,'Command: lookup title'),(461,'Command: lookup map'),(462,'Command: announce'),(463,'Command: channel'),(464,'Command: channel set'),(465,'Command: channel set ownership'),(466,'Command: gmannounce'),(467,'Command: gmnameannounce'),(468,'Command: gmnotify'),(469,'Command: nameannounce'),(470,'Command: notify'),(471,'Command: whispers'),(472,'Command: group'),(473,'Command: group leader'),(474,'Command: group disband'),(475,'Command: group remove'),(476,'Command: group join'),(477,'Command: group list'),(478,'Command: group summon'),(479,'Command: pet'),(480,'Command: pet create'),(481,'Command: pet learn'),(482,'Command: pet unlearn'),(483,'Command: send'),(484,'Command: send items'),(485,'Command: send mail'),(486,'Command: send message'),(487,'Command: send money'),(488,'Command: additem'),(489,'Command: additemset'),(490,'Command: appear'),(491,'Command: aura'),(492,'Command: bank'),(493,'Command: bindsight'),(494,'Command: combatstop'),(495,'Command: cometome'),(496,'Command: commands'),(497,'Command: cooldown'),(498,'Command: damage'),(499,'Command: dev'),(500,'Command: die'),(501,'Command: dismount'),(502,'Command: distance'),(503,'Command: flusharenapoints'),(504,'Command: freeze'),(505,'Command: gps'),(506,'Command: guid'),(507,'Command: help'),(508,'Command: hidearea'),(509,'Command: itemmove'),(510,'Command: kick'),(511,'Command: linkgrave'),(512,'Command: listfreeze'),(513,'Command: maxskill'),(514,'Command: movegens'),(515,'Command: mute'),(516,'Command: neargrave'),(517,'Command: pinfo'),(518,'Command: playall'),(519,'Command: possess'),(520,'Command: recall'),(521,'Command: repairitems'),(522,'Command: respawn'),(523,'Command: revive'),(524,'Command: saveall'),(525,'Command: save'),(526,'Command: setskill'),(527,'Command: showarea'),(528,'Command: summon'),(529,'Command: unaura'),(530,'Command: unbindsight'),(531,'Command: unfreeze'),(532,'Command: unmute'),(533,'Command: unpossess'),(534,'Command: unstuck'),(535,'Command: wchange'),(536,'Command: mmap'),(537,'Command: mmap loadedtiles'),(538,'Command: mmap loc'),(539,'Command: mmap path'),(540,'Command: mmap stats'),(541,'Command: mmap testarea'),(542,'Command: morph'),(543,'Command: demorph'),(544,'Command: modify'),(545,'Command: modify arenapoints'),(546,'Command: modify bit'),(547,'Command: modify drunk'),(548,'Command: modify energy'),(549,'Command: modify faction'),(550,'Command: modify gender'),(551,'Command: modify honor'),(552,'Command: modify hp'),(553,'Command: modify mana'),(554,'Command: modify money'),(555,'Command: modify mount'),(556,'Command: modify phase'),(557,'Command: modify rage'),(558,'Command: modify reputation'),(559,'Command: modify runicpower'),(560,'Command: modify scale'),(561,'Command: modify speed'),(562,'Command: modify speed all'),(563,'Command: modify speed backwalk'),(564,'Command: modify speed fly'),(565,'Command: modify speed walk'),(566,'Command: modify speed swim'),(567,'Command: modify spell'),(568,'Command: modify standstate'),(569,'Command: modify talentpoints'),(570,'Command: npc'),(571,'Command: npc add'),(572,'Command: npc add formation'),(573,'Command: npc add item'),(574,'Command: npc add move'),(575,'Command: npc add temp'),(576,'Command: npc add delete'),(577,'Command: npc add delete item'),(578,'Command: npc add follow'),(579,'Command: npc add follow stop'),(580,'Command: npc set'),(581,'Command: npc set allowmove'),(582,'Command: npc set entry'),(583,'Command: npc set factionid'),(584,'Command: npc set flag'),(585,'Command: npc set level'),(586,'Command: npc set link'),(587,'Command: npc set model'),(588,'Command: npc set movetype'),(589,'Command: npc set phase'),(590,'Command: npc set spawndist'),(591,'Command: npc set spawntime'),(592,'Command: npc set data'),(593,'Command: npc info'),(594,'Command: npc near'),(595,'Command: npc move'),(596,'Command: npc playemote'),(597,'Command: npc say'),(598,'Command: npc textemote'),(599,'Command: npc whisper'),(600,'Command: npc yell'),(601,'Command: npc tame'),(602,'Command: quest'),(603,'Command: quest add'),(604,'Command: quest complete'),(605,'Command: quest remove'),(606,'Command: quest reward'),(607,'Command: reload'),(608,'Command: reload access_requirement'),(609,'Command: reload achievement_criteria_data'),(610,'Command: reload achievement_reward'),(611,'Command: reload all'),(612,'Command: reload all achievement'),(613,'Command: reload all area'),(615,'Command: reload all gossips'),(616,'Command: reload all item'),(617,'Command: reload all locales'),(618,'Command: reload all loot'),(619,'Command: reload all npc'),(620,'Command: reload all quest'),(621,'Command: reload all scripts'),(623,'Command: reload areatrigger_involvedrelation'),(624,'Command: reload areatrigger_tavern'),(625,'Command: reload areatrigger_teleport'),(626,'Command: reload auctions'),(627,'Command: reload autobroadcast'),(628,'Command: reload command'),(629,'Command: reload conditions'),(630,'Command: reload config'),(631,'Command: reload battleground_template'),(632,'Command: .mutehistory'),(633,'Command: reload creature_linked_respawn'),(634,'Command: reload creature_loot_template'),(635,'Command: reload creature_onkill_reputation'),(636,'Command: reload creature_questender'),(637,'Command: reload creature_queststarter'),(638,'Command: reload creature_summon_groups'),(639,'Command: reload creature_template'),(640,'Command: reload creature_text'),(641,'Command: reload disables'),(642,'Command: reload disenchant_loot_template'),(643,'Command: reload event_scripts'),(644,'Command: reload fishing_loot_template'),(645,'Command: reload game_graveyard_zone'),(646,'Command: reload game_tele'),(647,'Command: reload gameobject_questender'),(648,'Command: reload gameobject_loot_template'),(649,'Command: reload gameobject_queststarter'),(650,'Command: reload support'),(651,'Command: reload gossip_menu'),(652,'Command: reload gossip_menu_option'),(653,'Command: reload item_enchantment_template'),(654,'Command: reload item_loot_template'),(655,'Command: reload item_set_names'),(656,'Command: reload lfg_dungeon_rewards'),(657,'Command: reload locales_achievement_reward'),(658,'Command: reload locales_creature'),(659,'Command: reload locales_creature_text'),(660,'Command: reload locales_gameobject'),(661,'Command: reload locales_gossip_menu_option'),(662,'Command: reload character_template'),(663,'Command: reload locales_item_set_name'),(664,'Command: reload quest_greeting'),(665,'Command: reload locales_page_text'),(666,'Command: reload locales_points_of_interest'),(667,'Command: reload quest_locale'),(668,'Command: reload mail_level_reward'),(669,'Command: reload mail_loot_template'),(670,'Command: reload milling_loot_template'),(671,'Command: reload npc_spellclick_spells'),(672,'Command: reload npc_trainer'),(673,'Command: reload npc_vendor'),(674,'Command: reload page_text'),(675,'Command: reload pickpocketing_loot_template'),(676,'Command: reload points_of_interest'),(677,'Command: reload prospecting_loot_template'),(678,'Command: reload quest_poi'),(679,'Command: reload quest_template'),(680,'Command: reload rbac'),(681,'Command: reload reference_loot_template'),(682,'Command: reload reserved_name'),(683,'Command: reload reputation_reward_rate'),(684,'Command: reload reputation_spillover_template'),(685,'Command: reload skill_discovery_template'),(686,'Command: reload skill_extra_item_template'),(687,'Command: reload skill_fishing_base_level'),(688,'Command: reload skinning_loot_template'),(689,'Command: reload smart_scripts'),(690,'Command: reload spell_required'),(691,'Command: reload spell_area'),(692,'Command: debug send playscene'),(693,'Command: reload spell_group'),(694,'Command: reload spell_learn_spell'),(695,'Command: reload spell_loot_template'),(696,'Command: reload spell_linked_spell'),(697,'Command: reload spell_pet_auras'),(698,'Command: reload spell_proc_event'),(699,'Command: reload spell_proc'),(700,'Command: reload spell_scripts'),(701,'Command: reload spell_target_position'),(702,'Command: reload spell_threats'),(703,'Command: reload spell_group_stack_rules'),(704,'Command: reload trinity_string'),(705,'Command: reload warden_action'),(706,'Command: reload waypoint_scripts'),(707,'Command: reload waypoint_data'),(708,'Command: reload vehicle_accessory'),(709,'Command: reload vehicle_template_accessory'),(710,'Command: reset'),(711,'Command: reset achievements'),(712,'Command: reset honor'),(713,'Command: reset level'),(714,'Command: reset spells'),(715,'Command: reset stats'),(716,'Command: reset talents'),(717,'Command: reset all'),(718,'Command: server'),(719,'Command: server corpses'),(720,'Command: server exit'),(721,'Command: server idlerestart'),(722,'Command: server idlerestart cancel'),(723,'Command: server idleshutdown'),(724,'Command: server idleshutdown cancel'),(725,'Command: server info'),(726,'Command: server plimit'),(727,'Command: server restart'),(728,'Command: server restart cancel'),(729,'Command: server set'),(730,'Command: server set closed'),(731,'Command: server set difftime'),(732,'Command: server set loglevel'),(733,'Command: server set motd'),(734,'Command: server shutdown'),(735,'Command: server shutdown cancel'),(736,'Command: server motd'),(737,'Command: tele'),(738,'Command: tele add'),(739,'Command: tele del'),(740,'Command: tele name'),(741,'Command: tele group'),(742,'Command: ticket'),(743,'Command: ticket assign'),(744,'Command: ticket close'),(745,'Command: ticket closedlist'),(746,'Command: ticket comment'),(747,'Command: ticket complete'),(748,'Command: ticket delete'),(749,'Command: ticket escalate'),(750,'Command: ticket escalatedlist'),(751,'Command: ticket list'),(752,'Command: ticket onlinelist'),(753,'Command: ticket reset'),(754,'Command: ticket response'),(755,'Command: ticket response append'),(756,'Command: ticket response appendln'),(757,'Command: ticket togglesystem'),(758,'Command: ticket unassign'),(759,'Command: ticket viewid'),(760,'Command: ticket viewname'),(761,'Command: titles'),(762,'Command: titles add'),(763,'Command: titles current'),(764,'Command: titles remove'),(765,'Command: titles set'),(766,'Command: titles set mask'),(767,'Command: wp'),(768,'Command: wp add'),(769,'Command: wp event'),(770,'Command: wp load'),(771,'Command: wp modify'),(772,'Command: wp unload'),(773,'Command: wp reload'),(774,'Command: wp show'),(776,'Command: debug phase'),(777,'Command: mailbox'),(778,'Command: ahbot'),(779,'Command: ahbot items'),(780,'Command: ahbot items gray'),(781,'Command: ahbot items white'),(782,'Command: ahbot items green'),(783,'Command: ahbot items blue'),(784,'Command: ahbot items purple'),(785,'Command: ahbot items orange'),(786,'Command: ahbot items yellow'),(787,'Command: ahbot ratio'),(788,'Command: ahbot ratio alliance'),(789,'Command: ahbot ratio horde'),(790,'Command: ahbot ratio neutral'),(791,'Command: ahbot rebuild'),(792,'Command: ahbot reload'),(793,'Command: ahbot status'),(794,'Command: .guild info'),(797,'Command: pvpstats'),(798,'Command: .mod xp'),(799,'Command: .go bugticket'),(800,'Command: .go complaintticket'),(801,'Command: .go suggestionticket'),(802,'Command: .ticket bug'),(803,'Command: .ticket complaint'),(804,'Command: .ticket suggestion'),(805,'Command: .ticket bug assign'),(806,'Command: .ticket bug close'),(807,'Command: .ticket bug closedlist'),(808,'Command: .ticket bug comment'),(809,'Command: .ticket bug delete'),(810,'Command: .ticket bug list'),(811,'Command: .ticket bug unassign'),(812,'Command: .ticket bug view'),(813,'Command: .ticket complaint assign'),(814,'Command: .ticket complaint close'),(815,'Command: .ticket complaint closedlist'),(816,'Command: .ticket complaint comment'),(817,'Command: .ticket complaint delete'),(818,'Command: .ticket complaint list'),(819,'Command: .ticket complaint unassign'),(820,'Command: .ticket complaint view'),(821,'Command: .ticket suggestion assign'),(822,'Command: .ticket suggestion close'),(823,'Command: .ticket suggestion closedlist'),(824,'Command: .ticket suggestion comment'),(825,'Command: .ticket suggestion delete'),(826,'Command: .ticket suggestion list'),(827,'Command: .ticket suggestion unassign'),(828,'Command: .ticket suggestion view'),(829,'Command: .ticket reset all'),(830,'Command: .ticket reset gm'),(831,'Command: .ticket reset bug'),(832,'Command: .ticket reset complaint'),(833,'Command: .ticket reset suggestion');
+INSERT INTO `rbac_permissions` VALUES (1,'Instant logout'),(2,'Skip Queue'),(3,'Join Normal Battleground'),(4,'Join Random Battleground'),(5,'Join Arenas'),(6,'Join Dungeon Finder'),(10,'Use character templates'),(11,'Log GM trades'),(13,'Skip Instance required bosses check'),(14,'Skip character creation team mask check'),(15,'Skip character creation class mask check'),(16,'Skip character creation race mask check'),(17,'Skip character creation reserved name check'),(18,'Skip character creation heroic min level check'),(19,'Skip needed requirements to use channel check'),(20,'Skip disable map check'),(21,'Skip reset talents when used more than allowed check'),(22,'Skip spam chat check'),(23,'Skip over-speed ping check'),(24,'Two side faction characters on the same account'),(25,'Allow say chat between factions'),(26,'Allow channel chat between factions'),(27,'Two side mail interaction'),(28,'See two side who list'),(29,'Add friends of other faction'),(30,'Save character without delay with .save command'),(31,'Use params with .unstuck command'),(32,'Can be assigned tickets with .assign ticket command'),(33,'Notify if a command was not found'),(34,'Check if should appear in list using .gm ingame command'),(35,'See all security levels with who command'),(36,'Filter whispers'),(37,'Use staff badge in chat'),(38,'Resurrect with full Health Points'),(39,'Restore saved gm setting states'),(40,'Allows to add a gm to friend list'),(41,'Use Config option START_GM_LEVEL to assign new character level'),(42,'Allows to use CMSG_WORLD_TELEPORT opcode'),(43,'Allows to use CMSG_WHOIS opcode'),(44,'Receive global GM messages/texts'),(45,'Join channels without announce'),(46,'Change channel settings without being channel moderator'),(47,'Enables lower security than target check'),(48,'Enable IP, Last Login and EMail output in pinfo'),(49,'Forces to enter the email for confirmation on password change'),(50,'Allow user to check his own email with .account'),(51,'Allow trading between factions'),(192,'Role: Sec Level Administrator'),(193,'Role: Sec Level Gamemaster'),(194,'Role: Sec Level Moderator'),(195,'Role: Sec Level Player'),(196,'Role: Administrator Commands'),(197,'Role: Gamemaster Commands'),(198,'Role: Moderator Commands'),(199,'Role: Player Commands'),(200,'Command: rbac'),(201,'Command: rbac account'),(202,'Command: rbac account list'),(203,'Command: rbac account grant'),(204,'Command: rbac account deny'),(205,'Command: rbac account revoke'),(206,'Command: rbac list'),(207,'Command: battlenetaccount'),(208,'Command: battlenetaccount create'),(209,'Command: battlenetaccount lock country'),(210,'Command: battlenetaccount lock ip'),(211,'Command: battlenetaccount password'),(212,'Command: battlenetaccount set'),(213,'Command: battlenetaccount set password'),(214,'Command: bnetaccount link'),(215,'Command: bnetaccount unlink'),(216,'Command: bnetaccount gameaccountcreate'),(217,'Command: account'),(218,'Command: account addon'),(219,'Command: account create'),(220,'Command: account delete'),(221,'Command: account lock'),(222,'Command: account lock country'),(223,'Command: account lock ip'),(224,'Command: account onlinelist'),(225,'Command: account password'),(226,'Command: account set'),(227,'Command: account set addon'),(228,'Command: account set gmlevel'),(229,'Command: account set password'),(230,'Command: achievement'),(231,'Command: achievement add'),(232,'Command: arena'),(233,'Command: arena captain'),(234,'Command: arena create'),(235,'Command: arena disband'),(236,'Command: arena info'),(237,'Command: arena lookup'),(238,'Command: arena rename'),(239,'Command: ban'),(240,'Command: ban account'),(241,'Command: ban character'),(242,'Command: ban ip'),(243,'Command: ban playeraccount'),(244,'Command: baninfo'),(245,'Command: baninfo account'),(246,'Command: baninfo character'),(247,'Command: baninfo ip'),(248,'Command: banlist'),(249,'Command: banlist account'),(250,'Command: banlist character'),(251,'Command: banlist ip'),(252,'Command: unban'),(253,'Command: unban account'),(254,'Command: unban character'),(255,'Command: unban ip'),(256,'Command: unban playeraccount'),(257,'Command: bf'),(258,'Command: bf start'),(259,'Command: bf stop'),(260,'Command: bf switch'),(261,'Command: bf timer'),(262,'Command: bf enable'),(263,'Command: account email'),(264,'Command: account set sec'),(265,'Command: account set sec email'),(266,'Command: account set sec regmail'),(267,'Command: cast'),(268,'Command: cast back'),(269,'Command: cast dist'),(270,'Command: cast self'),(271,'Command: cast target'),(272,'Command: cast dest'),(273,'Command: character'),(274,'Command: character customize'),(275,'Command: character changefaction'),(276,'Command: character changerace'),(277,'Command: character deleted'),(279,'Command: character deleted list'),(280,'Command: character deleted restore'),(283,'Command: character level'),(284,'Command: character rename'),(285,'Command: character reputation'),(286,'Command: character titles'),(287,'Command: levelup'),(288,'Command: pdump'),(289,'Command: pdump load'),(290,'Command: pdump write'),(291,'Command: cheat'),(292,'Command: cheat casttime'),(293,'Command: cheat cooldown'),(294,'Command: cheat explore'),(295,'Command: cheat god'),(296,'Command: cheat power'),(297,'Command: cheat status'),(298,'Command: cheat taxi'),(299,'Command: cheat waterwalk'),(300,'Command: debug'),(301,'Command: debug anim'),(302,'Command: debug areatriggers'),(303,'Command: debug arena'),(304,'Command: debug bg'),(305,'Command: debug entervehicle'),(306,'Command: debug getitemstate'),(307,'Command: debug getitemvalue'),(308,'Command: debug getvalue'),(309,'Command: debug hostil'),(310,'Command: debug itemexpire'),(311,'Command: debug lootrecipient'),(312,'Command: debug los'),(313,'Command: debug mod32value'),(314,'Command: debug moveflags'),(315,'Command: debug play'),(316,'Command: debug play cinematics'),(317,'Command: debug play movie'),(318,'Command: debug play sound'),(319,'Command: debug send'),(320,'Command: debug send buyerror'),(321,'Command: debug send channelnotify'),(322,'Command: debug send chatmessage'),(323,'Command: debug send equiperror'),(324,'Command: debug send largepacket'),(325,'Command: debug send opcode'),(326,'Command: debug send qinvalidmsg'),(327,'Command: debug send qpartymsg'),(328,'Command: debug send sellerror'),(329,'Command: debug send setphaseshift'),(330,'Command: debug send spellfail'),(331,'Command: debug setaurastate'),(332,'Command: debug setbit'),(333,'Command: debug setitemvalue'),(334,'Command: debug setvalue'),(335,'Command: debug setvid'),(336,'Command: debug spawnvehicle'),(337,'Command: debug threat'),(338,'Command: debug update'),(339,'Command: debug uws'),(340,'Command: wpgps'),(341,'Command: deserter'),(342,'Command: deserter bg'),(343,'Command: deserter bg add'),(344,'Command: deserter bg remove'),(345,'Command: deserter instance'),(346,'Command: deserter instance add'),(347,'Command: deserter instance remove'),(348,'Command: disable'),(349,'Command: disable add'),(350,'Command: disable add achievement_criteria'),(351,'Command: disable add battleground'),(352,'Command: disable add map'),(353,'Command: disable add mmap'),(354,'Command: disable add outdoorpvp'),(355,'Command: disable add quest'),(356,'Command: disable add spell'),(357,'Command: disable add vmap'),(358,'Command: disable remove'),(359,'Command: disable remove achievement_criteria'),(360,'Command: disable remove battleground'),(361,'Command: disable remove map'),(362,'Command: disable remove mmap'),(363,'Command: disable remove outdoorpvp'),(364,'Command: disable remove quest'),(365,'Command: disable remove spell'),(366,'Command: disable remove vmap'),(367,'Command: event'),(368,'Command: event activelist'),(369,'Command: event start'),(370,'Command: event stop'),(371,'Command: gm'),(372,'Command: gm chat'),(373,'Command: gm fly'),(374,'Command: gm ingame'),(375,'Command: gm list'),(376,'Command: gm visible'),(377,'Command: go'),(378,'Command: go creature'),(379,'Command: go graveyard'),(380,'Command: go grid'),(381,'Command: go object'),(382,'Command: go taxinode'),(383,'Command: go ticket'),(384,'Command: go trigger'),(385,'Command: go xyz'),(386,'Command: go zonexy'),(387,'Command: gobject'),(388,'Command: gobject activate'),(389,'Command: gobject add'),(390,'Command: gobject add temp'),(391,'Command: gobject delete'),(392,'Command: gobject info'),(393,'Command: gobject move'),(394,'Command: gobject near'),(395,'Command: gobject set'),(396,'Command: gobject set phase'),(397,'Command: gobject set state'),(398,'Command: gobject target'),(399,'Command: gobject turn'),(400,'debug transport'),(401,'Command: guild'),(402,'Command: guild create'),(403,'Command: guild delete'),(404,'Command: guild invite'),(405,'Command: guild uninvite'),(406,'Command: guild rank'),(407,'Command: guild rename'),(408,'Command: honor'),(409,'Command: honor add'),(410,'Command: honor add kill'),(411,'Command: honor update'),(412,'Command: instance'),(413,'Command: instance listbinds'),(414,'Command: instance unbind'),(415,'Command: instance stats'),(416,'Command: instance savedata'),(417,'Command: learn'),(418,'Command: learn all'),(419,'Command: learn all my'),(420,'Command: learn all my class'),(421,'Command: learn all my pettalents'),(422,'Command: learn all my spells'),(423,'Command: learn all my talents'),(424,'Command: learn all gm'),(425,'Command: learn all crafts'),(426,'Command: learn all default'),(427,'Command: learn all lang'),(428,'Command: learn all recipes'),(429,'Command: unlearn'),(430,'Command: lfg'),(431,'Command: lfg player'),(432,'Command: lfg group'),(433,'Command: lfg queue'),(434,'Command: lfg clean'),(435,'Command: lfg options'),(436,'Command: list'),(437,'Command: list creature'),(438,'Command: list item'),(439,'Command: list object'),(440,'Command: list auras'),(441,'Command: list mail'),(442,'Command: lookup'),(443,'Command: lookup area'),(444,'Command: lookup creature'),(445,'Command: lookup event'),(446,'Command: lookup faction'),(447,'Command: lookup item'),(448,'Command: lookup itemset'),(449,'Command: lookup object'),(450,'Command: lookup quest'),(451,'Command: lookup player'),(452,'Command: lookup player ip'),(453,'Command: lookup player account'),(454,'Command: lookup player email'),(455,'Command: lookup skill'),(456,'Command: lookup spell'),(457,'Command: lookup spell id'),(458,'Command: lookup taxinode'),(459,'Command: lookup tele'),(460,'Command: lookup title'),(461,'Command: lookup map'),(462,'Command: announce'),(463,'Command: channel'),(464,'Command: channel set'),(465,'Command: channel set ownership'),(466,'Command: gmannounce'),(467,'Command: gmnameannounce'),(468,'Command: gmnotify'),(469,'Command: nameannounce'),(470,'Command: notify'),(471,'Command: whispers'),(472,'Command: group'),(473,'Command: group leader'),(474,'Command: group disband'),(475,'Command: group remove'),(476,'Command: group join'),(477,'Command: group list'),(478,'Command: group summon'),(479,'Command: pet'),(480,'Command: pet create'),(481,'Command: pet learn'),(482,'Command: pet unlearn'),(483,'Command: send'),(484,'Command: send items'),(485,'Command: send mail'),(486,'Command: send message'),(487,'Command: send money'),(488,'Command: additem'),(489,'Command: additemset'),(490,'Command: appear'),(491,'Command: aura'),(492,'Command: bank'),(493,'Command: bindsight'),(494,'Command: combatstop'),(495,'Command: cometome'),(496,'Command: commands'),(497,'Command: cooldown'),(498,'Command: damage'),(499,'Command: dev'),(500,'Command: die'),(501,'Command: dismount'),(502,'Command: distance'),(503,'Command: flusharenapoints'),(504,'Command: freeze'),(505,'Command: gps'),(506,'Command: guid'),(507,'Command: help'),(508,'Command: hidearea'),(509,'Command: itemmove'),(510,'Command: kick'),(511,'Command: linkgrave'),(512,'Command: listfreeze'),(513,'Command: maxskill'),(514,'Command: movegens'),(515,'Command: mute'),(516,'Command: neargrave'),(517,'Command: pinfo'),(518,'Command: playall'),(519,'Command: possess'),(520,'Command: recall'),(521,'Command: repairitems'),(522,'Command: respawn'),(523,'Command: revive'),(524,'Command: saveall'),(525,'Command: save'),(526,'Command: setskill'),(527,'Command: showarea'),(528,'Command: summon'),(529,'Command: unaura'),(530,'Command: unbindsight'),(531,'Command: unfreeze'),(532,'Command: unmute'),(533,'Command: unpossess'),(534,'Command: unstuck'),(535,'Command: wchange'),(536,'Command: mmap'),(537,'Command: mmap loadedtiles'),(538,'Command: mmap loc'),(539,'Command: mmap path'),(540,'Command: mmap stats'),(541,'Command: mmap testarea'),(542,'Command: morph'),(543,'Command: demorph'),(544,'Command: modify'),(545,'Command: modify arenapoints'),(546,'Command: modify bit'),(547,'Command: modify drunk'),(548,'Command: modify energy'),(549,'Command: modify faction'),(550,'Command: modify gender'),(551,'Command: modify honor'),(552,'Command: modify hp'),(553,'Command: modify mana'),(554,'Command: modify money'),(555,'Command: modify mount'),(556,'Command: modify phase'),(557,'Command: modify rage'),(558,'Command: modify reputation'),(559,'Command: modify runicpower'),(560,'Command: modify scale'),(561,'Command: modify speed'),(562,'Command: modify speed all'),(563,'Command: modify speed backwalk'),(564,'Command: modify speed fly'),(565,'Command: modify speed walk'),(566,'Command: modify speed swim'),(567,'Command: modify spell'),(568,'Command: modify standstate'),(569,'Command: modify talentpoints'),(570,'Command: npc'),(571,'Command: npc add'),(572,'Command: npc add formation'),(573,'Command: npc add item'),(574,'Command: npc add move'),(575,'Command: npc add temp'),(576,'Command: npc add delete'),(577,'Command: npc add delete item'),(578,'Command: npc add follow'),(579,'Command: npc add follow stop'),(580,'Command: npc set'),(581,'Command: npc set allowmove'),(582,'Command: npc set entry'),(583,'Command: npc set factionid'),(584,'Command: npc set flag'),(585,'Command: npc set level'),(586,'Command: npc set link'),(587,'Command: npc set model'),(588,'Command: npc set movetype'),(589,'Command: npc set phase'),(590,'Command: npc set spawndist'),(591,'Command: npc set spawntime'),(592,'Command: npc set data'),(593,'Command: npc info'),(594,'Command: npc near'),(595,'Command: npc move'),(596,'Command: npc playemote'),(597,'Command: npc say'),(598,'Command: npc textemote'),(599,'Command: npc whisper'),(600,'Command: npc yell'),(601,'Command: npc tame'),(602,'Command: quest'),(603,'Command: quest add'),(604,'Command: quest complete'),(605,'Command: quest remove'),(606,'Command: quest reward'),(607,'Command: reload'),(608,'Command: reload access_requirement'),(609,'Command: reload achievement_criteria_data'),(610,'Command: reload achievement_reward'),(611,'Command: reload all'),(612,'Command: reload all achievement'),(613,'Command: reload all area'),(615,'Command: reload all gossips'),(616,'Command: reload all item'),(617,'Command: reload all locales'),(618,'Command: reload all loot'),(619,'Command: reload all npc'),(620,'Command: reload all quest'),(621,'Command: reload all scripts'),(623,'Command: reload areatrigger_involvedrelation'),(624,'Command: reload areatrigger_tavern'),(625,'Command: reload areatrigger_teleport'),(626,'Command: reload auctions'),(627,'Command: reload autobroadcast'),(628,'Command: reload command'),(629,'Command: reload conditions'),(630,'Command: reload config'),(631,'Command: reload battleground_template'),(632,'Command: .mutehistory'),(633,'Command: reload creature_linked_respawn'),(634,'Command: reload creature_loot_template'),(635,'Command: reload creature_onkill_reputation'),(636,'Command: reload creature_questender'),(637,'Command: reload creature_queststarter'),(638,'Command: reload creature_summon_groups'),(639,'Command: reload creature_template'),(640,'Command: reload creature_text'),(641,'Command: reload disables'),(642,'Command: reload disenchant_loot_template'),(643,'Command: reload event_scripts'),(644,'Command: reload fishing_loot_template'),(645,'Command: reload game_graveyard_zone'),(646,'Command: reload game_tele'),(647,'Command: reload gameobject_questender'),(648,'Command: reload gameobject_loot_template'),(649,'Command: reload gameobject_queststarter'),(650,'Command: reload support'),(651,'Command: reload gossip_menu'),(652,'Command: reload gossip_menu_option'),(653,'Command: reload item_enchantment_template'),(654,'Command: reload item_loot_template'),(655,'Command: reload item_set_names'),(656,'Command: reload lfg_dungeon_rewards'),(657,'Command: reload locales_achievement_reward'),(658,'Command: reload locales_creature'),(659,'Command: reload locales_creature_text'),(660,'Command: reload locales_gameobject'),(661,'Command: reload locales_gossip_menu_option'),(662,'Command: reload character_template'),(663,'Command: reload locales_item_set_name'),(664,'Command: reload quest_greeting'),(665,'Command: reload locales_page_text'),(666,'Command: reload locales_points_of_interest'),(667,'Command: reload quest_locale'),(668,'Command: reload mail_level_reward'),(669,'Command: reload mail_loot_template'),(670,'Command: reload milling_loot_template'),(671,'Command: reload npc_spellclick_spells'),(672,'Command: reload npc_trainer'),(673,'Command: reload npc_vendor'),(674,'Command: reload page_text'),(675,'Command: reload pickpocketing_loot_template'),(676,'Command: reload points_of_interest'),(677,'Command: reload prospecting_loot_template'),(678,'Command: reload quest_poi'),(679,'Command: reload quest_template'),(680,'Command: reload rbac'),(681,'Command: reload reference_loot_template'),(682,'Command: reload reserved_name'),(683,'Command: reload reputation_reward_rate'),(684,'Command: reload reputation_spillover_template'),(685,'Command: reload skill_discovery_template'),(686,'Command: reload skill_extra_item_template'),(687,'Command: reload skill_fishing_base_level'),(688,'Command: reload skinning_loot_template'),(689,'Command: reload smart_scripts'),(690,'Command: reload spell_required'),(691,'Command: reload spell_area'),(692,'Command: debug send playscene'),(693,'Command: reload spell_group'),(694,'Command: reload spell_learn_spell'),(695,'Command: reload spell_loot_template'),(696,'Command: reload spell_linked_spell'),(697,'Command: reload spell_pet_auras'),(698,'Command: reload spell_proc_event'),(699,'Command: reload spell_proc'),(700,'Command: reload spell_scripts'),(701,'Command: reload spell_target_position'),(702,'Command: reload spell_threats'),(703,'Command: reload spell_group_stack_rules'),(704,'Command: reload trinity_string'),(705,'Command: reload warden_action'),(706,'Command: reload waypoint_scripts'),(707,'Command: reload waypoint_data'),(708,'Command: reload vehicle_accessory'),(709,'Command: reload vehicle_template_accessory'),(710,'Command: reset'),(711,'Command: reset achievements'),(712,'Command: reset honor'),(713,'Command: reset level'),(714,'Command: reset spells'),(715,'Command: reset stats'),(716,'Command: reset talents'),(717,'Command: reset all'),(718,'Command: server'),(719,'Command: server corpses'),(720,'Command: server exit'),(721,'Command: server idlerestart'),(722,'Command: server idlerestart cancel'),(723,'Command: server idleshutdown'),(724,'Command: server idleshutdown cancel'),(725,'Command: server info'),(726,'Command: server plimit'),(727,'Command: server restart'),(728,'Command: server restart cancel'),(729,'Command: server set'),(730,'Command: server set closed'),(731,'Command: server set difftime'),(732,'Command: server set loglevel'),(733,'Command: server set motd'),(734,'Command: server shutdown'),(735,'Command: server shutdown cancel'),(736,'Command: server motd'),(737,'Command: tele'),(738,'Command: tele add'),(739,'Command: tele del'),(740,'Command: tele name'),(741,'Command: tele group'),(742,'Command: ticket'),(743,'Command: ticket assign'),(744,'Command: ticket close'),(745,'Command: ticket closedlist'),(746,'Command: ticket comment'),(747,'Command: ticket complete'),(748,'Command: ticket delete'),(749,'Command: ticket escalate'),(750,'Command: ticket escalatedlist'),(751,'Command: ticket list'),(752,'Command: ticket onlinelist'),(753,'Command: ticket reset'),(754,'Command: ticket response'),(755,'Command: ticket response append'),(756,'Command: ticket response appendln'),(757,'Command: ticket togglesystem'),(758,'Command: ticket unassign'),(759,'Command: ticket viewid'),(760,'Command: ticket viewname'),(761,'Command: titles'),(762,'Command: titles add'),(763,'Command: titles current'),(764,'Command: titles remove'),(765,'Command: titles set'),(766,'Command: titles set mask'),(767,'Command: wp'),(768,'Command: wp add'),(769,'Command: wp event'),(770,'Command: wp load'),(771,'Command: wp modify'),(772,'Command: wp unload'),(773,'Command: wp reload'),(774,'Command: wp show'),(776,'Command: debug phase'),(777,'Command: mailbox'),(778,'Command: ahbot'),(779,'Command: ahbot items'),(780,'Command: ahbot items gray'),(781,'Command: ahbot items white'),(782,'Command: ahbot items green'),(783,'Command: ahbot items blue'),(784,'Command: ahbot items purple'),(785,'Command: ahbot items orange'),(786,'Command: ahbot items yellow'),(787,'Command: ahbot ratio'),(788,'Command: ahbot ratio alliance'),(789,'Command: ahbot ratio horde'),(790,'Command: ahbot ratio neutral'),(791,'Command: ahbot rebuild'),(792,'Command: ahbot reload'),(793,'Command: ahbot status'),(794,'Command: .guild info'),(797,'Command: pvpstats'),(798,'Command: .mod xp'),(799,'Command: .go bugticket'),(800,'Command: .go complaintticket'),(801,'Command: .go suggestionticket'),(802,'Command: .ticket bug'),(803,'Command: .ticket complaint'),(804,'Command: .ticket suggestion'),(805,'Command: .ticket bug assign'),(806,'Command: .ticket bug close'),(807,'Command: .ticket bug closedlist'),(808,'Command: .ticket bug comment'),(809,'Command: .ticket bug delete'),(810,'Command: .ticket bug list'),(811,'Command: .ticket bug unassign'),(812,'Command: .ticket bug view'),(813,'Command: .ticket complaint assign'),(814,'Command: .ticket complaint close'),(815,'Command: .ticket complaint closedlist'),(816,'Command: .ticket complaint comment'),(817,'Command: .ticket complaint delete'),(818,'Command: .ticket complaint list'),(819,'Command: .ticket complaint unassign'),(820,'Command: .ticket complaint view'),(821,'Command: .ticket suggestion assign'),(822,'Command: .ticket suggestion close'),(823,'Command: .ticket suggestion closedlist'),(824,'Command: .ticket suggestion comment'),(825,'Command: .ticket suggestion delete'),(826,'Command: .ticket suggestion list'),(827,'Command: .ticket suggestion unassign'),(828,'Command: .ticket suggestion view'),(829,'Command: .ticket reset all'),(830,'Command: .ticket reset gm'),(831,'Command: .ticket reset bug'),(832,'Command: .ticket reset complaint'),(833,'Command: .ticket reset suggestion'),(834,'Command: go quest');
/*!40000 ALTER TABLE `rbac_permissions` ENABLE KEYS */;
UNLOCK TABLES;
@@ -608,7 +608,7 @@ CREATE TABLE `updates` (
LOCK TABLES `updates` WRITE;
/*!40000 ALTER TABLE `updates` DISABLE KEYS */;
-INSERT INTO `updates` VALUES ('2014_10_04_00_auth.sql','C3BC70A6EC381474B7308F442346F1E721176BC6','ARCHIVED','2015-03-21 16:55:52',0),('2014_10_19_00_auth.sql','7472B490A4F86C9D3DA609CDD3197499CB80C87C','ARCHIVED','2015-03-21 16:55:52',0),('2014_10_26_00_auth.sql','75CC67ADE2A3B2E54FD57D6B0DCAA8FE50F4EE35','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_03_00_auth.sql','5948C9F286CF0FEA8E241785C0259FF36B73BDC5','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_04_00_auth.sql','3AFC68B2375C2A417DDEA94583C53AFF83DE50DF','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_09_00_auth.sql','B8DD1A7047C0FDDB80344B239343EC33BF1A0D97','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_00_auth.sql','8FBA737A1D3FF4631A1E662A5B500A8BD304EC63','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_00_auth_from_335.sql','0E3CB119442D09DD88E967015319BBC8DAFBBFE0','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_01_auth.sql','327E77A1DA3546D5275AB249915DD57EDD6FDD3D','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_23_00_auth.sql','0BBEB3EB3AED0FEF277A062819B6B2C00084A742','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_25_00_auth.sql','4F45CDB26BDBB3EE83F1988E3D7818C5926ADC02','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_05_00_auth.sql','6A7BBCEF43111C73A2D2C3CCB6911BE50DE7DD94','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_10_00_auth.sql','821703A96D80F9080074852B5A46E2909C9562EA','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_19_00_auth.sql','44D8E12FFF327AD07878FBDF8D9C16B6B7DCB122','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_20_00_auth.sql','4DAA02AE285C02AE6C82EA2C8B97AC71990F1085','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_25_00_auth.sql','61411930F482BC73FC7FD2C370C811E944F5FF92','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_27_00_auth.sql','CE2E5D2CD82E79C25294539ADED27A1429105B43','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_28_00_auth.sql','0A913217610E76AFF119C27259737BBC523090E6','ARCHIVED','2015-03-21 16:55:52',0),('2015_02_22_00_auth.sql','21CCCF8B01252E16CA3D6C9E3E8DAA4C9B28ED6E','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_01_00_auth.sql','911881E273207FF6182D1FDAC8C85FFAE8F1C852','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_10_00_auth.sql','2CC8502C11412EFEB5C11BE166761A8754A59009','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_00_auth.sql','B761760804EA73BD297F296C5C1919687DF7191C','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_01_auth.sql','5CCEDF20C8189FB1E8DF064A9F0DDC342841FBF0','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_02_auth.sql','85E4ACD9AA099C0C4AC034575F2BB07D348EAC72','ARCHIVED','2015-03-21 16:56:46',0),('2015_03_15_00_auth.sql','1D8E107FBEFE5E7F47E09F45240DFF499B77CDED','RELEASED','2015-04-11 01:13:24',44),('2015_03_26_00_auth.sql','34AC8543E6A9C6C832DE58EAB33618EEEF70B9F9','RELEASED','2015-04-11 01:13:24',32),('2015_04_04_00_auth.sql','57146B35E54A2EC7869C945034AB078358020311','RELEASED','2015-04-11 01:13:24',29),('2015_04_06_00_auth.sql','2A8049DC2923420A002D42FB6F02C2FFCC5CDD22','RELEASED','2015-04-11 01:13:24',28),('2015_04_08_00_auth.sql','4D7D8EEF285C982BB676836602266501BEC26764','RELEASED','2015-04-11 01:13:24',43),('2015_04_10_00_auth.sql','4AE68FD97A95CEE5143EA20FD33F5D557367AC1F','RELEASED','2015-04-11 01:13:24',32),('2015_04_11_00_auth.sql','80A71C8921CFEBB547D264558B6DE27201685B84','RELEASED','2015-04-11 01:13:24',28);
+INSERT INTO `updates` VALUES ('2014_10_04_00_auth.sql','C3BC70A6EC381474B7308F442346F1E721176BC6','ARCHIVED','2015-03-21 16:55:52',0),('2014_10_19_00_auth.sql','7472B490A4F86C9D3DA609CDD3197499CB80C87C','ARCHIVED','2015-03-21 16:55:52',0),('2014_10_26_00_auth.sql','75CC67ADE2A3B2E54FD57D6B0DCAA8FE50F4EE35','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_03_00_auth.sql','5948C9F286CF0FEA8E241785C0259FF36B73BDC5','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_04_00_auth.sql','3AFC68B2375C2A417DDEA94583C53AFF83DE50DF','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_09_00_auth.sql','B8DD1A7047C0FDDB80344B239343EC33BF1A0D97','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_00_auth.sql','8FBA737A1D3FF4631A1E662A5B500A8BD304EC63','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_00_auth_from_335.sql','0E3CB119442D09DD88E967015319BBC8DAFBBFE0','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_10_01_auth.sql','327E77A1DA3546D5275AB249915DD57EDD6FDD3D','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_23_00_auth.sql','0BBEB3EB3AED0FEF277A062819B6B2C00084A742','ARCHIVED','2015-03-21 16:55:52',0),('2014_11_25_00_auth.sql','4F45CDB26BDBB3EE83F1988E3D7818C5926ADC02','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_05_00_auth.sql','6A7BBCEF43111C73A2D2C3CCB6911BE50DE7DD94','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_10_00_auth.sql','821703A96D80F9080074852B5A46E2909C9562EA','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_19_00_auth.sql','44D8E12FFF327AD07878FBDF8D9C16B6B7DCB122','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_20_00_auth.sql','4DAA02AE285C02AE6C82EA2C8B97AC71990F1085','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_25_00_auth.sql','61411930F482BC73FC7FD2C370C811E944F5FF92','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_27_00_auth.sql','CE2E5D2CD82E79C25294539ADED27A1429105B43','ARCHIVED','2015-03-21 16:55:52',0),('2014_12_28_00_auth.sql','0A913217610E76AFF119C27259737BBC523090E6','ARCHIVED','2015-03-21 16:55:52',0),('2015_02_22_00_auth.sql','21CCCF8B01252E16CA3D6C9E3E8DAA4C9B28ED6E','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_01_00_auth.sql','911881E273207FF6182D1FDAC8C85FFAE8F1C852','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_10_00_auth.sql','2CC8502C11412EFEB5C11BE166761A8754A59009','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_00_auth.sql','B761760804EA73BD297F296C5C1919687DF7191C','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_01_auth.sql','5CCEDF20C8189FB1E8DF064A9F0DDC342841FBF0','ARCHIVED','2015-03-21 16:55:52',0),('2015_03_20_02_auth.sql','85E4ACD9AA099C0C4AC034575F2BB07D348EAC72','ARCHIVED','2015-03-21 16:56:46',0),('2015_03_15_00_auth.sql','1D8E107FBEFE5E7F47E09F45240DFF499B77CDED','RELEASED','2015-05-02 13:57:57',46),('2015_03_26_00_auth.sql','34AC8543E6A9C6C832DE58EAB33618EEEF70B9F9','RELEASED','2015-05-02 13:57:57',31),('2015_04_04_00_auth.sql','57146B35E54A2EC7869C945034AB078358020311','RELEASED','2015-05-02 13:57:57',46),('2015_04_06_00_auth.sql','2A8049DC2923420A002D42FB6F02C2FFCC5CDD22','RELEASED','2015-05-02 13:57:57',31),('2015_04_08_00_auth.sql','4D7D8EEF285C982BB676836602266501BEC26764','RELEASED','2015-05-02 13:57:57',15),('2015_04_10_00_auth.sql','4AE68FD97A95CEE5143EA20FD33F5D557367AC1F','RELEASED','2015-05-02 13:57:57',31),('2015_04_11_00_auth.sql','80A71C8921CFEBB547D264558B6DE27201685B84','RELEASED','2015-05-02 13:57:57',15),('2015_04_11_01_auth.sql','3E88183E1A85D11BFD74CF9A32A725C44AE02EEC','RELEASED','2015-05-02 13:57:57',46),('2015_04_21_00_auth.sql','1B3B48DBA06368B985C548D166C515C9DD598CB9','RELEASED','2015-05-02 13:57:57',31),('2015_05_02_00_auth.sql','96AB595E0D2A088750E3F48B0AF0A8A14F3CFE1E','RELEASED','2015-05-02 13:57:57',15),('2015_05_02_01_auth.sql','FB11FB834E488B0FD3AFDABCC1A3113092E7C2E5','RELEASED','2015-05-02 13:57:57',46);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;
@@ -671,4 +671,4 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2015-04-11 3:14:52
+-- Dump completed on 2015-05-02 15:59:06
diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql
index 6bd6e3cd050..d73924aa76d 100644
--- a/sql/base/characters_database.sql
+++ b/sql/base/characters_database.sql
@@ -1,8 +1,8 @@
--- MySQL dump 10.13 Distrib 5.6.9-rc, for Win64 (x86_64)
+-- MySQL dump 10.16 Distrib 10.1.3-MariaDB, for Win64 (AMD64)
--
--- Host: localhost Database: characters
+-- Host: localhost Database: charactersdump
-- ------------------------------------------------------
--- Server version 5.6.9-rc
+-- Server version 10.1.3-MariaDB
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -754,6 +754,139 @@ LOCK TABLES `character_equipmentsets` WRITE;
UNLOCK TABLES;
--
+-- Table structure for table `character_garrison`
+--
+
+DROP TABLE IF EXISTS `character_garrison`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `character_garrison` (
+ `guid` bigint(20) unsigned NOT NULL,
+ `siteLevelId` int(10) unsigned NOT NULL DEFAULT '0',
+ `followerActivationsRemainingToday` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`guid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `character_garrison`
+--
+
+LOCK TABLES `character_garrison` WRITE;
+/*!40000 ALTER TABLE `character_garrison` DISABLE KEYS */;
+/*!40000 ALTER TABLE `character_garrison` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `character_garrison_blueprints`
+--
+
+DROP TABLE IF EXISTS `character_garrison_blueprints`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `character_garrison_blueprints` (
+ `guid` bigint(20) unsigned NOT NULL,
+ `buildingId` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`guid`,`buildingId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `character_garrison_blueprints`
+--
+
+LOCK TABLES `character_garrison_blueprints` WRITE;
+/*!40000 ALTER TABLE `character_garrison_blueprints` DISABLE KEYS */;
+/*!40000 ALTER TABLE `character_garrison_blueprints` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `character_garrison_buildings`
+--
+
+DROP TABLE IF EXISTS `character_garrison_buildings`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `character_garrison_buildings` (
+ `guid` bigint(20) unsigned NOT NULL,
+ `plotInstanceId` int(10) unsigned NOT NULL DEFAULT '0',
+ `buildingId` int(10) unsigned NOT NULL DEFAULT '0',
+ `timeBuilt` bigint(20) unsigned NOT NULL,
+ `active` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`guid`,`plotInstanceId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `character_garrison_buildings`
+--
+
+LOCK TABLES `character_garrison_buildings` WRITE;
+/*!40000 ALTER TABLE `character_garrison_buildings` DISABLE KEYS */;
+/*!40000 ALTER TABLE `character_garrison_buildings` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `character_garrison_followers`
+--
+
+DROP TABLE IF EXISTS `character_garrison_followers`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `character_garrison_followers` (
+ `dbId` bigint(20) unsigned NOT NULL,
+ `guid` bigint(20) unsigned NOT NULL,
+ `followerId` int(10) unsigned NOT NULL,
+ `quality` int(10) unsigned NOT NULL DEFAULT '2',
+ `level` int(10) unsigned NOT NULL DEFAULT '90',
+ `itemLevelWeapon` int(10) unsigned NOT NULL DEFAULT '600',
+ `itemLevelArmor` int(10) unsigned NOT NULL DEFAULT '600',
+ `xp` int(10) unsigned NOT NULL DEFAULT '0',
+ `currentBuilding` int(10) unsigned NOT NULL DEFAULT '0',
+ `currentMission` int(10) unsigned NOT NULL DEFAULT '0',
+ `status` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`dbId`),
+ UNIQUE KEY `idx_guid_id` (`guid`,`followerId`),
+ CONSTRAINT `fk_foll_owner` FOREIGN KEY (`guid`) REFERENCES `characters` (`guid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `character_garrison_followers`
+--
+
+LOCK TABLES `character_garrison_followers` WRITE;
+/*!40000 ALTER TABLE `character_garrison_followers` DISABLE KEYS */;
+/*!40000 ALTER TABLE `character_garrison_followers` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `character_garrison_follower_abilities`
+--
+
+DROP TABLE IF EXISTS `character_garrison_follower_abilities`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `character_garrison_follower_abilities` (
+ `dbId` bigint(20) unsigned NOT NULL,
+ `abilityId` int(10) unsigned NOT NULL,
+ `slot` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`dbId`,`abilityId`,`slot`),
+ CONSTRAINT `fk_foll_dbid` FOREIGN KEY (`dbId`) REFERENCES `character_garrison_followers` (`dbId`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `character_garrison_follower_abilities`
+--
+
+LOCK TABLES `character_garrison_follower_abilities` WRITE;
+/*!40000 ALTER TABLE `character_garrison_follower_abilities` DISABLE KEYS */;
+/*!40000 ALTER TABLE `character_garrison_follower_abilities` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+--
-- Table structure for table `character_gifts`
--
@@ -1539,7 +1672,6 @@ CREATE TABLE `corpse` (
`posZ` float NOT NULL DEFAULT '0',
`orientation` float NOT NULL DEFAULT '0',
`mapId` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Map Identifier',
- `phaseMask` int(10) unsigned NOT NULL DEFAULT '1',
`displayId` int(10) unsigned NOT NULL DEFAULT '0',
`itemCache` text NOT NULL,
`bytes1` int(10) unsigned NOT NULL DEFAULT '0',
@@ -2671,7 +2803,7 @@ CREATE TABLE `mail_items` (
PRIMARY KEY (`item_guid`),
KEY `idx_receiver` (`receiver`),
KEY `idx_mail_id` (`mail_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -3023,7 +3155,7 @@ CREATE TABLE `updates` (
LOCK TABLES `updates` WRITE;
/*!40000 ALTER TABLE `updates` DISABLE KEYS */;
-INSERT INTO `updates` VALUES ('2014_10_20_00_characters.sql','A5882DA0979CF4DAE33DA011EBAA006C24BE7230','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_23_00_characters.sql','E2AC4758133EE19B7F08464A445802154D1261C8','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_23_01_characters.sql','20029E6323D9773B32C34D84FFED1711CC60F09F','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_23_02_characters.sql','8A7A16886EE71E7ACDDB3DDA6D0ECAC2FD2FDCA8','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_24_00_characters.sql','D008FE81AE844FCA686439D6ECC5108FB0DD1EB9','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_25_00_characters.sql','A39C7BE46686B54776BDAB9D7A882D91EDEC51A4','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_26_00_characters.sql','C787954CC35FE34B4101FDE6527F14C027F4947C','ARCHIVED','2015-03-21 16:55:55',0),('2014_11_12_00_characters.sql','B160BB2313F1BD5F3B076A5A9279DC10D4796E34','ARCHIVED','2015-03-21 16:55:55',0),('2014_12_23_00_characters.sql','3D9D648B2387B357F4BD090B33F80682F7924882','ARCHIVED','2015-03-21 16:55:55',0),('2014_12_28_00_characters.sql','5362922FF4483A336311D73082A5727309CD9219','ARCHIVED','2015-03-21 16:55:55',0),('2014_12_31_00_characters.sql','498DDF2DD936CF156D74A8208DC93DCE9FCAB5AA','ARCHIVED','2015-03-21 16:55:55',0),('2015_01_02_00_characters.sql','E5940BE836F253982E07930120422E598D08BDE1','ARCHIVED','2015-03-21 16:55:55',0),('2015_01_10_00_characters.sql','30796056C8623699B2FE1BF626A19D38262E9284','ARCHIVED','2015-03-21 16:55:55',0),('2015_01_16_00_characters.sql','96642760A54C8D799AAFE438049A63AA521656F2','ARCHIVED','2015-03-21 16:55:55',0),('2015_01_27_00_characters.sql','EB710E3EB9F2CAFD84AB62CDC84E898403A80A4F','ARCHIVED','2015-03-21 16:55:55',0),('2015_02_13_00_characters.sql','405BEB4ED207DC6076442A37EE2AFB1F21E274A0','ARCHIVED','2015-03-21 16:55:55',0),('2015_02_13_01_characters.sql','35F582D4F33BF55D1685A1BA89273ED895FD09C5','ARCHIVED','2015-03-21 16:55:55',0),('2015_02_17_00_characters.sql','8D21FC5A55BF8B55D6DCDCE5F02CF2B640230E94','ARCHIVED','2015-03-21 16:55:55',0),('2015_03_10_00_characters.sql','E565B89B145C340067742DFF2DEF1B74F5F1BD4E','ARCHIVED','2015-03-21 16:55:55',0),('2015_03_20_00_characters.sql','B761760804EA73BD297F296C5C1919687DF7191C','ARCHIVED','2015-03-21 16:55:55',0),('2015_03_20_01_characters.sql','20BD68468C57FCF7E665B4DA185DCD52FACE8B3F','ARCHIVED','2015-03-21 16:55:55',0),('2015_03_20_02_characters.sql','0296995DCD3676BA9AE6024CA7C91C5F39D927A3','ARCHIVED','2015-03-21 16:56:46',0);
+INSERT INTO `updates` VALUES ('2014_10_20_00_characters.sql','A5882DA0979CF4DAE33DA011EBAA006C24BE7230','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_23_00_characters.sql','E2AC4758133EE19B7F08464A445802154D1261C8','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_23_01_characters.sql','20029E6323D9773B32C34D84FFED1711CC60F09F','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_23_02_characters.sql','8A7A16886EE71E7ACDDB3DDA6D0ECAC2FD2FDCA8','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_24_00_characters.sql','D008FE81AE844FCA686439D6ECC5108FB0DD1EB9','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_25_00_characters.sql','A39C7BE46686B54776BDAB9D7A882D91EDEC51A4','ARCHIVED','2015-03-21 16:55:55',0),('2014_10_26_00_characters.sql','C787954CC35FE34B4101FDE6527F14C027F4947C','ARCHIVED','2015-03-21 16:55:55',0),('2014_11_12_00_characters.sql','B160BB2313F1BD5F3B076A5A9279DC10D4796E34','ARCHIVED','2015-03-21 16:55:55',0),('2014_12_23_00_characters.sql','3D9D648B2387B357F4BD090B33F80682F7924882','ARCHIVED','2015-03-21 16:55:55',0),('2014_12_28_00_characters.sql','5362922FF4483A336311D73082A5727309CD9219','ARCHIVED','2015-03-21 16:55:55',0),('2014_12_31_00_characters.sql','498DDF2DD936CF156D74A8208DC93DCE9FCAB5AA','ARCHIVED','2015-03-21 16:55:55',0),('2015_01_02_00_characters.sql','E5940BE836F253982E07930120422E598D08BDE1','ARCHIVED','2015-03-21 16:55:55',0),('2015_01_10_00_characters.sql','30796056C8623699B2FE1BF626A19D38262E9284','ARCHIVED','2015-03-21 16:55:55',0),('2015_01_16_00_characters.sql','96642760A54C8D799AAFE438049A63AA521656F2','ARCHIVED','2015-03-21 16:55:55',0),('2015_01_27_00_characters.sql','EB710E3EB9F2CAFD84AB62CDC84E898403A80A4F','ARCHIVED','2015-03-21 16:55:55',0),('2015_02_13_00_characters.sql','405BEB4ED207DC6076442A37EE2AFB1F21E274A0','ARCHIVED','2015-03-21 16:55:55',0),('2015_02_13_01_characters.sql','35F582D4F33BF55D1685A1BA89273ED895FD09C5','ARCHIVED','2015-03-21 16:55:55',0),('2015_02_17_00_characters.sql','8D21FC5A55BF8B55D6DCDCE5F02CF2B640230E94','ARCHIVED','2015-03-21 16:55:55',0),('2015_03_10_00_characters.sql','E565B89B145C340067742DFF2DEF1B74F5F1BD4E','ARCHIVED','2015-03-21 16:55:55',0),('2015_03_20_00_characters.sql','B761760804EA73BD297F296C5C1919687DF7191C','ARCHIVED','2015-03-21 16:55:55',0),('2015_03_20_01_characters.sql','20BD68468C57FCF7E665B4DA185DCD52FACE8B3F','ARCHIVED','2015-03-21 16:55:55',0),('2015_03_20_02_characters.sql','0296995DCD3676BA9AE6024CA7C91C5F39D927A3','ARCHIVED','2015-03-21 16:56:46',0),('2015_03_29_00_characters.sql','95D6A46BB746A8BD3EE3FE2086DF1A07F7C33B92','RELEASED','2015-05-02 17:43:06',101),('2015_04_21_00_characters.sql','F2032B9BF4EDA7EDE5065554724ED392FD91657D','RELEASED','2015-05-02 17:43:06',60),('2015_04_28_00_characters.sql','949F62DB3A3461D420A1230ECF7A6A3ED6435703','RELEASED','2015-05-02 17:43:06',118);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;
@@ -3108,4 +3240,4 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2015-03-21 17:03:16
+-- Dump completed on 2015-05-02 19:43:49
diff --git a/sql/updates/auth/2015_05_02_00_auth.sql b/sql/updates/auth/2015_05_02_00_auth.sql
new file mode 100644
index 00000000000..08b574a9068
--- /dev/null
+++ b/sql/updates/auth/2015_05_02_00_auth.sql
@@ -0,0 +1,7 @@
+DELETE FROM `rbac_permissions` WHERE `id`=12;
+INSERT INTO `rbac_permissions` (`id`, `name`) VALUES
+(12, 'Command: go quest');
+
+DELETE FROM `rbac_linked_permissions` WHERE `linkedId`=12;
+INSERT INTO `rbac_linked_permissions` (`id`, `linkedId`) VALUES
+(198, 12);
diff --git a/sql/updates/auth/2015_05_02_01_auth.sql b/sql/updates/auth/2015_05_02_01_auth.sql
new file mode 100644
index 00000000000..eb6f50ec026
--- /dev/null
+++ b/sql/updates/auth/2015_05_02_01_auth.sql
@@ -0,0 +1,9 @@
+DELETE FROM `rbac_permissions` WHERE `id`=12;
+DELETE FROM `rbac_permissions` WHERE `id`=834;
+INSERT INTO `rbac_permissions` (`id`, `name`) VALUES
+(834, 'Command: go quest');
+
+DELETE FROM `rbac_linked_permissions` WHERE `linkedId`=12;
+DELETE FROM `rbac_linked_permissions` WHERE `linkedId`=834;
+INSERT INTO `rbac_linked_permissions` (`id`, `linkedId`) VALUES
+(198, 834);
diff --git a/sql/updates/characters/2015_05_08_00_characters.sql b/sql/updates/characters/2015_05_08_00_characters.sql
new file mode 100644
index 00000000000..56a48474801
--- /dev/null
+++ b/sql/updates/characters/2015_05_08_00_characters.sql
@@ -0,0 +1,36 @@
+--
+-- Table structure for table `character_garrison`
+--
+
+DROP TABLE IF EXISTS `character_garrison`;
+CREATE TABLE `character_garrison` (
+ `guid` bigint(20) unsigned NOT NULL,
+ `siteLevelId` int(10) unsigned NOT NULL DEFAULT '0',
+ `followerActivationsRemainingToday` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`guid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `character_garrison_blueprints`
+--
+
+DROP TABLE IF EXISTS `character_garrison_blueprints`;
+CREATE TABLE `character_garrison_blueprints` (
+ `guid` bigint(20) unsigned NOT NULL,
+ `buildingId` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`guid`,`buildingId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `character_garrison_buildings`
+--
+
+DROP TABLE IF EXISTS `character_garrison_buildings`;
+CREATE TABLE `character_garrison_buildings` (
+ `guid` bigint(20) unsigned NOT NULL,
+ `plotInstanceId` int(10) unsigned NOT NULL DEFAULT '0',
+ `buildingId` int(10) unsigned NOT NULL DEFAULT '0',
+ `timeBuilt` bigint(20) unsigned NOT NULL,
+ `active` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`guid`,`plotInstanceId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/sql/updates/characters/2015_05_22_00_characters.sql b/sql/updates/characters/2015_05_22_00_characters.sql
new file mode 100644
index 00000000000..35e72a5aa86
--- /dev/null
+++ b/sql/updates/characters/2015_05_22_00_characters.sql
@@ -0,0 +1,35 @@
+DROP TABLE IF EXISTS `character_garrison_follower_abilities`;
+DROP TABLE IF EXISTS `character_garrison_followers`;
+
+--
+-- Table structure for table `character_garrison_followers`
+--
+
+CREATE TABLE `character_garrison_followers` (
+ `dbId` bigint(20) unsigned NOT NULL,
+ `guid` bigint(20) unsigned NOT NULL,
+ `followerId` int(10) unsigned NOT NULL,
+ `quality` int(10) unsigned NOT NULL DEFAULT '2',
+ `level` int(10) unsigned NOT NULL DEFAULT '90',
+ `itemLevelWeapon` int(10) unsigned NOT NULL DEFAULT '600',
+ `itemLevelArmor` int(10) unsigned NOT NULL DEFAULT '600',
+ `xp` int(10) unsigned NOT NULL DEFAULT '0',
+ `currentBuilding` int(10) unsigned NOT NULL DEFAULT '0',
+ `currentMission` int(10) unsigned NOT NULL DEFAULT '0',
+ `status` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`dbId`),
+ UNIQUE KEY `idx_guid_id` (`guid`,`followerId`),
+ CONSTRAINT `fk_foll_owner` FOREIGN KEY (`guid`) REFERENCES `characters` (`guid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `character_garrison_follower_abilities`
+--
+
+CREATE TABLE `character_garrison_follower_abilities` (
+ `dbId` bigint(20) unsigned NOT NULL,
+ `abilityId` int(10) unsigned NOT NULL,
+ `slot` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`dbId`,`abilityId`,`slot`),
+ CONSTRAINT `fk_foll_dbid` FOREIGN KEY (`dbId`) REFERENCES `character_garrison_followers` (`dbId`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/sql/updates/hotfixes/2015_05_01_00_hotfixes.sql b/sql/updates/hotfixes/2015_05_01_00_hotfixes.sql
new file mode 100644
index 00000000000..48e7c4b0bee
--- /dev/null
+++ b/sql/updates/hotfixes/2015_05_01_00_hotfixes.sql
@@ -0,0 +1,137 @@
+DELETE FROM `item_sparse` WHERE `ID` IN (1905, 1906, 2179, 3364, 4994, 7725, 8164, 9311, 10756, 12290, 13606, 18154, 18566, 19322, 22058, 23074, 23364, 23366, 34771, 38487, 49664, 52052, 60492, 60746, 62484, 63252, 64309, 77451, 80818, 80906, 81320, 81321, 81357, 86600, 88804, 88805, 88849, 88850, 89156, 89157, 92498, 92891, 92892, 93023, 93024, 98056, 98130, 100895, 100899, 101538, 101572, 101751, 101776, 102225, 102457, 102463, 102492, 102493, 102494, 102575, 103994, 104259, 104289, 104312, 104350, 105710, 105928, 107076, 107609, 107849, 107850, 107957, 107958, 107959, 107960, 108532, 108670, 110230, 110231, 110443, 110444, 110723, 110742, 111024, 111532, 111591, 111850, 111931, 111934, 112266, 112372, 112376, 112385, 112386, 113010, 113143, 113191, 113282, 113294, 115802, 120115, 120979, 120989, 120997, 120998, 121814, 121819, 121820, 121822, 121830, 121831, 121832, 121834, 122096, 122098, 122099, 122101, 122102, 122103, 122144, 122145, 122146, 122147, 122150, 122154, 122160, 122161, 122162, 122189, 122466, 122468, 122472, 122473, 122474, 122475);
+INSERT INTO `item_sparse` (`ID`, `Quality`, `Flags1`, `Flags2`, `Flags3`, `Unk1`, `Unk2`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `RequiredSpell`, `RequiredHonorRank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `MaxCount`, `Stackable`, `ContainerSlots`, `ItemStatType1`, `ItemStatType2`, `ItemStatType3`, `ItemStatType4`, `ItemStatType5`, `ItemStatType6`, `ItemStatType7`, `ItemStatType8`, `ItemStatType9`, `ItemStatType10`, `ItemStatValue1`, `ItemStatValue2`, `ItemStatValue3`, `ItemStatValue4`, `ItemStatValue5`, `ItemStatValue6`, `ItemStatValue7`, `ItemStatValue8`, `ItemStatValue9`, `ItemStatValue10`, `ItemStatAllocation1`, `ItemStatAllocation2`, `ItemStatAllocation3`, `ItemStatAllocation4`, `ItemStatAllocation5`, `ItemStatAllocation6`, `ItemStatAllocation7`, `ItemStatAllocation8`, `ItemStatAllocation9`, `ItemStatAllocation10`, `ItemStatSocketCostMultiplier1`, `ItemStatSocketCostMultiplier2`, `ItemStatSocketCostMultiplier3`, `ItemStatSocketCostMultiplier4`, `ItemStatSocketCostMultiplier5`, `ItemStatSocketCostMultiplier6`, `ItemStatSocketCostMultiplier7`, `ItemStatSocketCostMultiplier8`, `ItemStatSocketCostMultiplier9`, `ItemStatSocketCostMultiplier10`, `ScalingStatDistribution`, `DamageType`, `Delay`, `RangedModRange`, `Bonding`, `Name`, `Name2`, `Name3`, `Name4`, `Description`, `PageText`, `LanguageID`, `PageMaterial`, `StartQuest`, `LockID`, `Material`, `Sheath`, `RandomProperty`, `RandomSuffix`, `ItemSet`, `Area`, `Map`, `BagFamily`, `TotemCategory`, `SocketColor1`, `SocketColor2`, `SocketColor3`, `SocketBonus`, `GemProperties`, `ArmorDamageModifier`, `Duration`, `ItemLimitCategory`, `HolidayID`, `StatScalingFactor`, `CurrencySubstitutionID`, `CurrencySubstitutionCount`, `ItemNameDescriptionID`, `VerifiedBuild`) VALUES
+(1905, 0, 0, 0, 0, 0.9686, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Axe, Metal Basic', '', '', '', '', 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(1906, 0, 0, 0, 0, 0.9723, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Torch', '', '', '', '', 0, 0, 0, 0, 0, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(2179, 0, 0, 0, 0, 1.0242, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Sword, Scimitar Badass', '', '', '', '', 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(3364, 0, 0, 0, 0, 1.032, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Sword, Rapier', '', '', '', '', 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(4994, 0, 0, 0, 0, 0.9875, 1, 1, 12, 2, 21, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Item, Gizmo', '', '', '', '', 0, 0, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(7725, 1, 16, 0, 0, 1.0102, 1, 1, 28575, 7143, 19, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Tabard of the Scarlet Crusade DEPRECATED', '', '', '', '', 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(8164, 1, 0, 0, 0, 1.036, 1, 1, 10, 2, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Test Stationery', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(9311, 1, 0, 0, 0, 0.9512, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Default Stationery', '', '', '', '', 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(10756, 0, 0, 0, 0, 1.0368, 1, 1, 16, 3, 17, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Mace2H, Smite''s Mighty Hammer', '', '', '', '', 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 19865), -- -Unknown-
+(12290, 0, 0, 0, 0, 0.9811, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Axe, Horde Badass Copper 01', '', '', '', '', 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(13606, 0, 0, 0, 0, 0.9814, 1, 1, 0, 0, 23, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Monster - Item, Bucket - Metal Offhand', '', '', '', '', 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(18154, 1, 0, 0, 0, 0.9635, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Blizzard Stationery', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(18566, 1, 2064, 0, 0, 0.9637, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Essence of the Firelord DEPRECATED', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(19322, 2, 0, 0, 0, 0.9824, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 250, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'zzDEPRECATED Warsong Mark of Honor', '', '', '', 'Proof of winning a battle in Warsong Gulch', 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, 0, 19865), -- -Unknown-
+(22058, 1, 0, 0, 0, 1.0234, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Valentine''s Day Stationery', '', '', '', '', 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(23074, 1, 2048, 0, 0, 1.0197, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, '[PH] Goblin Tooth', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(23364, 3, 16, 0, 0, 0.9604, 1, 1, 0, 0, 0, 32767, -1, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'zzDEPRECATEDHeart of the Sky', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(23366, 3, 16, 0, 0, 0.9678, 1, 1, 0, 0, 0, 32767, -1, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'zzDEPRECATEDPerfect Diamond', '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(34771, 0, 0, 0, 0, 1.0178, 1, 1, 15, 3, 17, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 3400, 0, 0, 'Monster - Staff, Wooden Handle Rounded Head High Red Flame', '', '', '', '', 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 19865), -- -Unknown-
+(38487, 3, 0, 0, 0, 0.97, 1, 1, 45, 9, 17, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Polearm, Epic D 04', '', '', '', '', 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 19865), -- -Unknown-
+(49664, 3, 134250560, 131072, 0, 0.9861, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Enchanted Purple Jade', '', '', '', 'Teaches you how to summon this companion.', 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(52052, 0, 0, 0, 0, 0.9941, 1, 1, 9, 1, 26, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 100, 0, 'Monster - Gun, Rifle, Worgen', '', '', '', '', 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(60492, 0, 0, 0, 0, 0.9656, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Axe, 1H Outland Raid D06', '', '', '', '', 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(60746, 1, 0, 0, 0, 1.0213, 0, 1, 0, 1, 1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'No Helmet [Cap Geoset]', '', '', '', '', 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(62484, 0, 0, 0, 0, 0.9585, 1, 1, 11, 2, 21, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Monster - Item, Shovel (1h)', '', '', '', '', 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(63252, 0, 0, 0, 0, 1.0477, 1, 1, 16, 3, 17, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3300, 0, 0, 'Monster - Axe, 2H Horde D 02', '', '', '', '', 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 19865), -- -Unknown-
+(64309, 1, 0, 0, 0, 0.9738, 0, 1, 0, 1, 8, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'No Shoes', '', '', '', '', 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(77451, 2, 0, 0, 0, 1.0309, 1, 1, 16, 3, 1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 2, 'Art Template Cloth Head - Cloth_SunHat_B_01', '', '', '', '', 0, 0, 0, 0, 0, 7, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(80818, 2, 0, 0, 0, 1.0465, 1, 1, 17, 3, 1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 2, 'Art Template Cloth Head - Helm_Misc_Beerhat_A_01', '', '', '', '', 0, 0, 0, 0, 0, 7, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(80906, 0, 0, 0, 0, 1.0017, 0, 1, 0, 1, 17, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Polearm, Invisible', '', '', '', '', 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 19865), -- -Unknown-
+(81320, 2, 65536, 0, 0, 1.0093, 1, 1, 31, 6, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2600, 0, 1, 'Right-Handed Invis Knuckles', '', '', '', '', 0, 0, 0, 0, 0, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(81321, 2, 65536, 0, 0, 1.013, 1, 1, 31, 6, 22, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2600, 0, 1, 'Left-Handed Invis Knuckles', '', '', '', '', 0, 0, 0, 0, 0, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(81357, 0, 0, 0, 0, 0.998, 0, 1, 0, 1, 17, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Polearm, Invisible', '', '', '', '', 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 19865), -- -Unknown-
+(86600, 0, 0, 0, 0, 0.9955, 1, 1, 15, 3, 17, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Mace, 2H Cataclysm B02 Red (Fire)', '', '', '', '', 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 19865), -- -Unknown-
+(88804, 0, 0, 0, 0, 1.0106, 1, 1, 12, 2, 22, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 3300, 0, 0, 'Monster - Hand_1H_ShaClaw (left hand)', '', '', '', '', 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(88805, 0, 0, 0, 0, 1.0142, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Hand_1H_ShaClaw (right hand)', '', '', '', '', 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(88849, 0, 0, 0, 0, 1.0287, 1, 1, 12, 2, 21, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Cleaver (Bloody)', '', '', '', '', 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(88850, 0, 0, 0, 0, 0.9587, 1, 1, 11, 2, 22, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Cleaver (Bloody)', '', '', '', '', 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(89156, 0, 0, 0, 0, 0.9847, 1, 1, 12, 2, 21, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Axe, Metal Badass (Main Hand)', '', '', '', '', 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(89157, 0, 0, 0, 0, 0.9884, 1, 1, 12, 2, 22, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Axe, Metal Badass (Off Hand)', '', '', '', '', 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(92498, 0, 0, 0, 0, 1.0292, 1, 1, 12, 2, 22, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 1500, 0, 0, 'Monster - Claw Offhand, Invisible', '', '', '', '', 0, 0, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(92891, 1, 65536, 0, 0, 1.0332, 1, 1, 10, 2, 1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Art Template Generic Head - Helm_Misc_FireworkPartyHat_A_01', '', '', '', '', 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(92892, 1, 65536, 0, 0, 1.0369, 1, 1, 10, 2, 1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Art Template Generic Head - Helm_Misc_FishPartyHat_A_01', '', '', '', '', 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(93023, 0, 0, 0, 0, 1.0294, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 1500, 0, 0, 'Monster - Fist, Horde PvE, Main Hand, Dark', '', '', '', '', 0, 0, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(93024, 0, 0, 0, 0, 1.0331, 1, 1, 12, 2, 22, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 1500, 0, 0, 'Monster - Fist, Horde PvE, Off Hand, Dark', '', '', '', '', 0, 0, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(98056, 5, 131072, 0, 0, 0.9855, 1, 1, 100000000, 0, 0, -1, -1, 513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Crystallized Horror', '', '', '', 'The powers of the last black dragon are yours to wield.', 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2456, 0, 0, 207, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(98130, 4, 0, 0, 0, 0.9895, 1, 1, 400869, 80173, 26, -1, -1, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2700, 100, 1, 'Monster - Gun - Outland Raid D04 (Red)', '', '', '', '', 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(100895, 0, 0, 0, 0, 0.9899, 1, 1, 12, 2, 21, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 3300, 0, 0, 'Monster - Axe, 1H Special NPC (Herod) - Main Hand', '', '', '', '', 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(100899, 1, 65536, 0, 0, 1.0045, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Fallen Frostwolf Artifact', '', '', '', 'Crafted by Frostwolf orcs, this token is an honored remembrance of its fallen owner.', 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, 0, 19865), -- -Unknown-
+(101538, 3, 69696, 0, 0, 1.0085, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Kukuru''s Cache Key', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(101572, 2, 0, 0, 0, 0.9862, 1, 1, 16, 3, 1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 2, 'Art Template Cloth Head - Helm_Robe_B_03earthenring', '', '', '', '', 0, 0, 0, 0, 0, 7, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(101751, 0, 0, 0, 0, 1.0343, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Molten Hammer', '', '', '', '', 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(101776, 1, 67584, 0, 0, 0.979, 1, 1, 0, 0, 0, -1, -1, 90, 0, 0, 0, 0, 0, 0, 0, 0, 60, 50, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Fatty Turtle Steak', '', '', '', 'The marbling on this meat rivals the rings of a tree... a very old tree.', 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, 0, 19865), -- -Unknown-
+(102225, 1, 2147551232, 0, 0, 0.9679, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Rolo''s Riddle', '', '', '', 'The old piece of tattered parchment has barely survived the test of time.', 0, 0, 0, 32974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(102457, 1, 65600, 16448, 0, 0.99, 1, 1, 1250000, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Timeless Essence of the Black Dragonflight', '', '', '', 'An undulating sphere of infinite blackness.', 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, 0, 19865), -- -Unknown-
+(102463, 3, 69632, 0, 0, 1.012, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Fire-Watcher''s Oath', '', '', '', 'Ordon Fire-Watchers carry the ashes of their victims in a special pouch that keeps them smouldering.', 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(102492, 0, 0, 0, 0, 0.9713, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2800, 0, 0, 'Monster - Shadowmoon Orc - Shadow Sword', '', '', '', '', 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(102493, 0, 0, 0, 0, 0.975, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Shadowmoon Orc - Shadowy Glaive', '', '', '', '', 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(102494, 0, 0, 0, 0, 0.9787, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 1500, 0, 0, 'Monster - Shadowmoon Orc - Shadowy Dagger', '', '', '', '', 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(102575, 0, 0, 0, 0, 1.0083, 1, 1, 12, 2, 22, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 1500, 0, 0, 'Monster - Shadowmoon Orc - Shadowy Dagger (Offhand)', '', '', '', '', 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(103994, 1, 2048, 0, 0, 0.9718, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Wooden Spear', '', '', '', 'Crudely adorned with thorns and twigs.', 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, 0, 19865), -- -Unknown-
+(104259, 0, 0, 0, 0, 0.9679, 1, 1, 12, 2, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - Mace, Horde Bone Spike Hammer (Living Clay Weapon)', '', '', '', '', 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(104289, 2, 67174400, 65536, 0, 1.031, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Faintly-Glowing Herb', '', '', '', 'This herb appears to be infused with a natural enchantment.', 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86400, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(104312, 2, 67174400, 65536, 0, 0.9683, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Strange Glowing Mushroom', '', '', '', 'An odd mushroom found deep within the Cavern of Lost Spirits.', 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(104350, 1, 2048, 0, 0, 0.9607, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Swamplighter Dust', '', '', '', 'Sparkly.', 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, 0, 19865), -- -Unknown-
+(105710, 3, 131136, 0, 0, 0.9754, 0, 1, 0, 1, 9, -1, -1, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Lasso Bracers, Humanoid', '', '', '', '', 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(105928, 3, 131136, 0, 0, 1.0461, 0, 1, 0, 1, 1, -1, -1, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Magic Bunny Hat', '', '', '', '', 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(107076, 1, 2112, 0, 0, 1.0386, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Sylene''s Amulet of Illusion', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(107609, 1, 67584, 4096, 0, 0.9946, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Prickly Nopal', '', '', '', 'This looks tasty.', 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, 0, 19865), -- -Unknown-
+(107849, 2, 65536, 0, 0, 0.9725, 1, 1, 30, 6, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2600, 0, 1, 'No Main Hand Weapon', '', '', '', '', 0, 0, 0, 0, 0, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(107850, 2, 65536, 0, 0, 0.9761, 1, 1, 30, 6, 22, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2600, 0, 1, 'No Off-Hand Weapon', '', '', '', '', 0, 0, 0, 0, 0, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(107957, 1, 133120, 0, 0, 1.0277, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Shadowmoon Rubbing', '', '', '', 'A collection of rubbings from the Shadowmoon Tribal Stones.', 4857, 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, 19865), -- -Unknown-
+(107958, 1, 133120, 0, 0, 1.0314, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Shadowmoon Rubbing', '', '', '', 'A collection of rubbings from the Shadowmoon Tribal Stones.', 4858, 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, 19865), -- -Unknown-
+(107959, 1, 133120, 0, 0, 1.035, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Shadowmoon Rubbing', '', '', '', 'A collection of rubbings from the Shadowmoon Tribal Stones.', 4860, 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, 19865), -- -Unknown-
+(107960, 1, 133120, 0, 0, 1.0387, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Shadowmoon Rubbing', '', '', '', 'A collection of rubbings from the Shadowmoon Tribal Stones.', 4863, 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, 19865), -- -Unknown-
+(108532, 1, 67584, 4096, 0, 0.9908, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Precisely Severed Pale Eye', '', '', '', 'The cloudy iris of the detached eyeball gives off an ominous glow.', 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, 0, 19865), -- -Unknown-
+(108670, 1, 2048, 0, 0, 1.0356, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Raw Elekk Steak', '', '', '', '100% organic, free-range, grass-fed, perfectly marbled steak.', 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, 0, 19865), -- -Unknown-
+(110230, 1, 198656, 0, 0, 1.0283, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Caravan Shipment', '', '', '', 'Weapons, ammunition, chains, hooks, tools, and excavation equipment. Looks like supplies needed for a major excavation.', 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, 0, 19865), -- -Unknown-
+(110231, 1, 198656, 0, 0, 1.032, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'O''rok''s Head', '', '', '', 'Bloody.', 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, 0, 19865), -- -Unknown-
+(110443, 1, 65536, 0, 0, 0.9541, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Boiled Ichor', '', '', '', 'The disgusting extract of various jungle creatures.', 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, 0, 19865), -- -Unknown-
+(110444, 1, 196608, 0, 0, 0.9577, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Fresh Orc Blood', '', '', '', 'Bleeding Hollow, indeed.', 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, 0, 19865), -- -Unknown-
+(110723, 1, 2048, 0, 0, 1.0317, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Vial of Toad Juice', '', '', '', 'It''s glowing.', 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, 0, 19865), -- -Unknown-
+(110742, 1, 65536, 0, 0, 0.9543, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Hand-Axe', '', '', '', 'Not an axe held in the hand, but an axe that substitutes for a hand.', 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, 0, 19865), -- -Unknown-
+(111024, 1, 133120, 0, 0, 1.0393, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Pristine Star Lily', '', '', '', 'The translucent, weightless flower only grows under pure starlight.', 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, 0, 19865), -- -Unknown-
+(111532, 0, 0, 0, 0, 0.9507, 0, 1, 0, 1, 17, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - 2H Mace, Invisible', '', '', '', '', 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 19865), -- -Unknown-
+(111591, 1, 2048, 0, 0, 1.0467, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Clarity Elixir', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(111850, 1, 67584, 0, 0, 1.0207, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Feather of Syth', '', '', '', 'While devotees of Rukhmar prefer cremation, the outcasts have taken to darker last rites.', 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, 0, 19865), -- -Unknown-
+(111931, 1, 198656, 0, 0, 0.9768, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Wrenchwrecker''s Inventory Report', '', '', '', 'A detailed list of construction materials with very colorful wording on the need for additional lumber.', 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, 0, 19865), -- -Unknown-
+(111934, 1, 67584, 0, 0, 0.9878, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Ravager Grub', '', '', '', 'Squirmy.', 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, 0, 19865), -- -Unknown-
+(112266, 1, 67584, 0, 0, 1.0357, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Frozen Plant Matter', '', '', '', 'Surprisingly durable and nearly immune to cold and wind.', 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, 0, 19865), -- -Unknown-
+(112372, 1, 2048, 0, 0, 1.0099, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Fragment of Anguish', '', '', '', 'A strange symbol is inscribed upon the stone.', 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, 0, 19865), -- -Unknown-
+(112376, 1, 65600, 0, 0, 1.0246, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 250, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Target Practice Axe', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(112385, 1, 2048, 0, 0, 0.9841, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Star Reading', '', '', '', 'A detailed map of the sky.', 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, 0, 19865), -- -Unknown-
+(112386, 1, 2112, 0, 0, 0.9878, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Fragment of Anguish', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(113010, 1, 67584, 0, 0, 1.0102, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Lithic''s Gift', '', '', '', 'With Lithic''s blessing, this bangle holds a special connection to Terokk.', 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, 0, 19865), -- -Unknown-
+(113143, 2, 67174400, 65536, 0, 1.0101, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Glowing Honeycomb', '', '', '', 'The honey inside is faintly iridescent.', 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86400, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(113191, 1, 65600, 0, 0, 0.9656, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Lucifrium Bead', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(113282, 1, 67584, 0, 0, 0.9584, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'The Eye of Anzu', '', '', '', 'A spell focus from Terokk''s darker days.', 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, 0, 19865), -- -Unknown-
+(113294, 1, 2048, 0, 0, 1.0025, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Sargerei Insignia', '', '', '', 'This burning mark is held only by Socrethar''s most trusted lieutenants.', 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, 0, 19865), -- -Unknown-
+(115802, 0, 0, 0, 0, 1.0362, 0, 1, 0, 1, 13, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 'Monster - 1H Mace, Invisible', '', '', '', '', 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 19865), -- -Unknown-
+(120115, 1, 0, 0, 0, 0.9852, 0, 1, 0, 1, 1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'No Helmet [Diving Helm Geoset] - HIDE EVERYTHING', '', '', '', '', 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(120979, 1, 67584, 0, 0, 0.959, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Gutrek''s Hilt', '', '', '', 'The ordinary appearance of this hilt belies the power of the weapon to which it belongs.', 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, 0, 19865), -- -Unknown-
+(120989, 1, 196608, 4096, 0, 1.0222, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Goldspade''s Journal', '', '', '', 'A journal detailing the search for Gutrek''s Cleaver.', 5076, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(120997, 1, 67584, 0, 0, 0.978, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Gutrek''s Pommel', '', '', '', 'It seems to be little more than a heavy rock.', 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, 0, 19865), -- -Unknown-
+(120998, 1, 67584, 0, 0, 0.9817, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Gutrek''s Blade', '', '', '', 'Age has pitted and dulled this blade.', 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, 0, 19865), -- -Unknown-
+(121814, 1, 67584, 0, 0, 0.9999, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Gutrek''s Cleaver', '', '', '', 'The weapon is dull and aged, yet pulses with the brutal energy of Gutrek''s spirit.', 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, 0, 19865), -- -Unknown-
+(121819, 1, 67584, 536870912, 0, 1.0448, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Research Notes', '', '', '', 'These notes make mention of the mysterious device in upper Skettis.', 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, 0, 19865), -- -Unknown-
+(121820, 1, 196608, 4096, 0, 1.0484, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Compiled Research', '', '', '', 'This collection of papers reveals the nature of the mysterious device in upper Skettis.', 5083, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(121822, 1, 67584, 536870912, 0, 0.9557, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Journal Page', '', '', '', 'This seems to be a page from Val Goldspade''s journal.', 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, 0, 19865), -- -Unknown-
+(121830, 1, 67584, 0, 0, 0.9851, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Precision Blasting Powder', '', '', '', 'As dangerous as this stuff is, you''d think they''d package it more carefully.', 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, 0, 19865), -- -Unknown-
+(121831, 1, 67584, 0, 0, 0.9887, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'High Voltage Detonator', '', '', '', 'Hopefully this still works.', 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, 0, 19865), -- -Unknown-
+(121832, 1, 67584, 536870912, 0, 1.0189, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Demon''s Blood', '', '', '', 'Apparently this stuff packs a punch.', 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, 0, 19865), -- -Unknown-
+(121834, 1, 67584, 0, 0, 1.0263, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Grimoire of the Nameless Void', '', '', '', 'The text of this book is indecipherable, but there is no mistaking the power contained within.', 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, 0, 19865), -- -Unknown-
+(122096, 1, 67584, 0, 0, 1.0113, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Gronnsbane''s Blade', '', '', '', 'This ancient blade is pitted and dull.', 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, 0, 19865), -- -Unknown-
+(122098, 1, 67584, 0, 0, 1.0186, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Gronnsbane''s Haft', '', '', '', 'It''s remarkable that the wooden haft has survived this long.', 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, 0, 19865), -- -Unknown-
+(122099, 1, 67584, 0, 0, 1.0223, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Gronnsbane''s Weight', '', '', '', 'A heavy weight to counterbalance the great blade.', 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, 0, 19865), -- -Unknown-
+(122101, 1, 196608, 4096, 0, 1.0297, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Argoram''s Journal', '', '', '', 'This journal details Argoram''s search for the ancient spear, Gronnsbane.', 5093, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(122102, 1, 67584, 0, 0, 1.0333, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Gronnsbane', '', '', '', 'A rather large, albeit plain, spear.', 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, 0, 19865), -- -Unknown-
+(122103, 1, 67584, 0, 0, 1.037, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Empowered Gronnsbane', '', '', '', 'The ancient spear pulses with energy.', 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, 0, 19865), -- -Unknown-
+(122144, 1, 67584, 0, 0, 0.9668, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Bonethorn Vine', '', '', '', 'Tough and prickly.', 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, 0, 19865), -- -Unknown-
+(122145, 1, 67584, 0, 0, 0.9705, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Shadethistle Leaves', '', '', '', 'These leaves seem to absorb the light around them.', 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, 0, 19865), -- -Unknown-
+(122146, 1, 67584, 0, 0, 0.9742, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Steamcap Mushrooms', '', '', '', 'Vibrant and aromatic.', 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, 0, 19865), -- -Unknown-
+(122147, 1, 196608, 4096, 0, 0.9778, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Grinning Tolg''s Journal', '', '', '', 'These writings detail the search for the Laughing Skull legend, Skulltaker.', 5100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(122150, 1, 67584, 0, 0, 0.9889, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'The Silent Skull', '', '', '', 'The cursed skull mask responsible for Skulltaker''s malady.', 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, 0, 19865), -- -Unknown-
+(122154, 1, 196608, 4096, 0, 1.0301, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Artificer Maatun''s Journal', '', '', '', 'An account of the artificer''s quest to reconstruct the Dream of Argus', 5109, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(122160, 1, 67584, 0, 0, 0.952, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Rough Crystal Shard', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(122161, 1, 67584, 0, 0, 0.9557, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Cracked Crystal Shard', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(122162, 1, 67584, 0, 0, 0.9593, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Smooth Crystal Shard', '', '', '', '', 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, 0, 19865), -- -Unknown-
+(122189, 1, 198656, 0, 0, 1.0114, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 4, 'Dream of Argus', '', '', '', 'A mysterious and ancient relic of the draenei''s past.', 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, 0, 19865), -- -Unknown-
+(122466, 4, 65600, 0, 0, 0.978, 1, 1, 0, 0, 0, -1, -1, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Heart of Oak', '', '', '', 'Slightly warm, obviously ancient.', 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(122468, 4, 65600, 0, 0, 0.9853, 1, 1, 0, 0, 0, -1, -1, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Runed Greatstone', '', '', '', '', 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(122472, 4, 65600, 0, 0, 1, 1, 1, 0, 0, 0, -1, -1, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Bloodied Iron Horde Banner', '', '', '', '', 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(122473, 4, 65600, 0, 0, 1.0037, 1, 1, 0, 0, 0, -1, -1, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Legion Beacon', '', '', '', '', 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(122474, 4, 65600, 0, 0, 1.0074, 1, 1, 0, 0, 0, -1, -1, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Arcane Highmaul Relic', '', '', '', '', 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- -Unknown-
+(122475, 4, 65600, 0, 0, 1.0375, 1, 1, 0, 0, 0, -1, -1, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'Void Prison', '', '', '', '', 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865); -- -Unknown-
diff --git a/sql/updates/hotfixes/2015_05_02_00_hotfixes.sql b/sql/updates/hotfixes/2015_05_02_00_hotfixes.sql
new file mode 100644
index 00000000000..7260bd50b85
--- /dev/null
+++ b/sql/updates/hotfixes/2015_05_02_00_hotfixes.sql
@@ -0,0 +1,220 @@
+DELETE FROM `hotfix_data` WHERE (`TableHash`=331613093 AND `RecordID`=185123 AND `Timestamp`=1430365287) OR (`TableHash`=331613093 AND `RecordID`=212293 AND `Timestamp`=1430365287) OR (`TableHash`=599752208 AND `RecordID`=1789 AND `Timestamp`=1430365287) OR (`TableHash`=599752208 AND `RecordID`=1790 AND `Timestamp`=1430365287) OR (`TableHash`=599752208 AND `RecordID`=1791 AND `Timestamp`=1430365287) OR (`TableHash`=599752208 AND `RecordID`=1792 AND `Timestamp`=1430365287) OR (`TableHash`=599752208 AND `RecordID`=1793 AND `Timestamp`=1430365287) OR (`TableHash`=599752208 AND `RecordID`=1794 AND `Timestamp`=1430365287) OR (`TableHash`=666345498 AND `RecordID`=83942 AND `Timestamp`=1430365287) OR (`TableHash`=666345498 AND `RecordID`=83982 AND `Timestamp`=1430365287) OR (`TableHash`=666345498 AND `RecordID`=83983 AND `Timestamp`=1430365287) OR (`TableHash`=666345498 AND `RecordID`=84043 AND `Timestamp`=1430365287) OR (`TableHash`=1344507586 AND `RecordID`=120989 AND `Timestamp`=1430365287) OR (`TableHash`=1344507586 AND `RecordID`=121820 AND `Timestamp`=1430365287) OR (`TableHash`=1344507586 AND `RecordID`=121837 AND `Timestamp`=1430365287) OR (`TableHash`=1344507586 AND `RecordID`=122101 AND `Timestamp`=1430365287) OR (`TableHash`=1344507586 AND `RecordID`=122147 AND `Timestamp`=1430365287) OR (`TableHash`=1344507586 AND `RecordID`=122154 AND `Timestamp`=1430365287) OR (`TableHash`=1344507586 AND `RecordID`=122706 AND `Timestamp`=1430365287) OR (`TableHash`=1344507586 AND `RecordID`=122707 AND `Timestamp`=1430365287) OR (`TableHash`=1627543382 AND `RecordID`=16443 AND `Timestamp`=1430365287) OR (`TableHash`=1821637041 AND `RecordID`=1449 AND `Timestamp`=1430365287) OR (`TableHash`=1821637041 AND `RecordID`=1636 AND `Timestamp`=1430365287) OR (`TableHash`=1880017466 AND `RecordID`=3101 AND `Timestamp`=1430365287) OR (`TableHash`=1880017466 AND `RecordID`=4865 AND `Timestamp`=1430365287);
+DELETE FROM `hotfix_data` WHERE (`TableHash`=1880017466 AND `RecordID`=5182 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=6148 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=7498 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=7499 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=7501 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=7743 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=8980 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=8981 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=8989 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=8990 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=8993 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=9915 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=9916 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=9917 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=9918 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=9920 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=9921 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=10265 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=11037 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=12747 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=13736 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=28354 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=34074 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=34075 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=34076 AND `Timestamp`=1430365287);
+DELETE FROM `hotfix_data` WHERE (`TableHash`=3108775943 AND `RecordID`=34077 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=34078 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=34079 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=34081 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=34082 AND `Timestamp`=1430365287) OR (`TableHash`=3108775943 AND `RecordID`=34083 AND `Timestamp`=1430365287) OR (`TableHash`=3130494798 AND `RecordID`=10037 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=126057 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=129047 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=129096 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=130275 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=130608 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=133297 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=133455 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=136620 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=137703 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=140581 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=142312 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=147181 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=147185 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=147186 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=148759 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=148760 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=148827 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=149497 AND `Timestamp`=1430365287);
+DELETE FROM `hotfix_data` WHERE (`TableHash`=3322146344 AND `RecordID`=150373 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=152224 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=153925 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=158926 AND `Timestamp`=1430365287) OR (`TableHash`=3322146344 AND `RecordID`=159299 AND `Timestamp`=1430365287) OR (`TableHash`=3326241424 AND `RecordID`=1708 AND `Timestamp`=1430365287) OR (`TableHash`=3326241424 AND `RecordID`=1709 AND `Timestamp`=1430365287) OR (`TableHash`=3326241424 AND `RecordID`=1710 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=73406 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=73419 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=73504 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=73517 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=73546 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=73702 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=73703 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=73945 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=73994 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=74104 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=74385 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=74466 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=74635 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=75757 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=75759 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=75760 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=76334 AND `Timestamp`=1430365287);
+DELETE FROM `hotfix_data` WHERE (`TableHash`=3386943305 AND `RecordID`=77758 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78254 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78256 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78257 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78258 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78259 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78346 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78347 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78348 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78349 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78350 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78351 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78352 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78353 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78395 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78399 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78404 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78670 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78728 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78729 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78730 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78731 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78734 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78738 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78739 AND `Timestamp`=1430365287);
+DELETE FROM `hotfix_data` WHERE (`TableHash`=3386943305 AND `RecordID`=78742 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78743 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78746 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78747 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78750 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78751 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78758 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78759 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78904 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78906 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78988 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78989 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78990 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=78991 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=79817 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=79823 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=79824 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=79825 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80244 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80245 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80246 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80317 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80318 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80652 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80653 AND `Timestamp`=1430365287);
+DELETE FROM `hotfix_data` WHERE (`TableHash`=3386943305 AND `RecordID`=80654 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80658 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80659 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80660 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80667 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80668 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=80669 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=81731 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=82327 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=82328 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=82329 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=83010 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=83011 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=83012 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=83756 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=84264 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=85199 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=85263 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=85264 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=85265 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=85266 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=85267 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=85268 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=85269 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=85270 AND `Timestamp`=1430365287);
+DELETE FROM `hotfix_data` WHERE (`TableHash`=3386943305 AND `RecordID`=86788 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=88104 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=88105 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=88110 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=88111 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=88113 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=88115 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=88116 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=89548 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=89649 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=89660 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=89684 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=90161 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=90200 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=90302 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=90305 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=90354 AND `Timestamp`=1430365287) OR (`TableHash`=3386943305 AND `RecordID`=90371 AND `Timestamp`=1430365287);
+INSERT INTO `hotfix_data` (`TableHash`, `RecordID`, `Timestamp`, `Deleted`) VALUES
+(331613093, 185123, 1430365287, 1), -- GameObjects - 185123 - 185123
+(331613093, 212293, 1430365287, 1), -- GameObjects - 212293 - 212293
+(599752208, 1789, 1430365287, 0), -- SpellEffectGroupSize - 1789 - 1789
+(599752208, 1790, 1430365287, 0), -- SpellEffectGroupSize - 1790 - 1790
+(599752208, 1791, 1430365287, 0), -- SpellEffectGroupSize - 1791 - 1791
+(599752208, 1792, 1430365287, 0), -- SpellEffectGroupSize - 1792 - 1792
+(599752208, 1793, 1430365287, 0), -- SpellEffectGroupSize - 1793 - 1793
+(599752208, 1794, 1430365287, 0), -- SpellEffectGroupSize - 1794 - 1794
+(666345498, 83942, 1430365287, 1), -- SpellXSpellVisual - 83942 - 83942
+(666345498, 83982, 1430365287, 1), -- SpellXSpellVisual - 83982 - 83982
+(666345498, 83983, 1430365287, 1), -- SpellXSpellVisual - 83983 - 83983
+(666345498, 84043, 1430365287, 1), -- SpellXSpellVisual - 84043 - 84043
+(1344507586, 120989, 1430365287, 0), -- Item - 120989 - 120989
+(1344507586, 121820, 1430365287, 0), -- Item - 121820 - 121820
+(1344507586, 121837, 1430365287, 0), -- Item - 121837 - 121837
+(1344507586, 122101, 1430365287, 0), -- Item - 122101 - 122101
+(1344507586, 122147, 1430365287, 0), -- Item - 122147 - 122147
+(1344507586, 122154, 1430365287, 0), -- Item - 122154 - 122154
+(1344507586, 122706, 1430365287, 0), -- Item - 122706 - 122706
+(1344507586, 122707, 1430365287, 0), -- Item - 122707 - 122707
+(1627543382, 16443, 1430365287, 0), -- SpellCastingRequirements - 16443 - 16443
+(1821637041, 1449, 1430365287, 0), -- BattlePetSpecies - 1449 - 1449
+(1821637041, 1636, 1430365287, 0), -- BattlePetSpecies - 1636 - 1636
+(1880017466, 3101, 1430365287, 0), -- CurvePoint - 3101 - 3101
+(1880017466, 4865, 1430365287, 0), -- CurvePoint - 4865 - 4865
+(1880017466, 5182, 1430365287, 0), -- CurvePoint - 5182 - 5182
+(3108775943, 6148, 1430365287, 1), -- PlayerCondition - 6148 - 6148
+(3108775943, 7498, 1430365287, 1), -- PlayerCondition - 7498 - 7498
+(3108775943, 7499, 1430365287, 1), -- PlayerCondition - 7499 - 7499
+(3108775943, 7501, 1430365287, 1), -- PlayerCondition - 7501 - 7501
+(3108775943, 7743, 1430365287, 1), -- PlayerCondition - 7743 - 7743
+(3108775943, 8980, 1430365287, 1), -- PlayerCondition - 8980 - 8980
+(3108775943, 8981, 1430365287, 1), -- PlayerCondition - 8981 - 8981
+(3108775943, 8989, 1430365287, 1), -- PlayerCondition - 8989 - 8989
+(3108775943, 8990, 1430365287, 1), -- PlayerCondition - 8990 - 8990
+(3108775943, 8993, 1430365287, 1), -- PlayerCondition - 8993 - 8993
+(3108775943, 9915, 1430365287, 1), -- PlayerCondition - 9915 - 9915
+(3108775943, 9916, 1430365287, 1), -- PlayerCondition - 9916 - 9916
+(3108775943, 9917, 1430365287, 1), -- PlayerCondition - 9917 - 9917
+(3108775943, 9918, 1430365287, 1), -- PlayerCondition - 9918 - 9918
+(3108775943, 9920, 1430365287, 1), -- PlayerCondition - 9920 - 9920
+(3108775943, 9921, 1430365287, 1), -- PlayerCondition - 9921 - 9921
+(3108775943, 10265, 1430365287, 1), -- PlayerCondition - 10265 - 10265
+(3108775943, 11037, 1430365287, 1), -- PlayerCondition - 11037 - 11037
+(3108775943, 12747, 1430365287, 1), -- PlayerCondition - 12747 - 12747
+(3108775943, 13736, 1430365287, 1), -- PlayerCondition - 13736 - 13736
+(3108775943, 28354, 1430365287, 1), -- PlayerCondition - 28354 - 28354
+(3108775943, 34074, 1430365287, 1), -- PlayerCondition - 34074 - 34074
+(3108775943, 34075, 1430365287, 1), -- PlayerCondition - 34075 - 34075
+(3108775943, 34076, 1430365287, 1), -- PlayerCondition - 34076 - 34076
+(3108775943, 34077, 1430365287, 1), -- PlayerCondition - 34077 - 34077
+(3108775943, 34078, 1430365287, 1), -- PlayerCondition - 34078 - 34078
+(3108775943, 34079, 1430365287, 1), -- PlayerCondition - 34079 - 34079
+(3108775943, 34081, 1430365287, 1), -- PlayerCondition - 34081 - 34081
+(3108775943, 34082, 1430365287, 1), -- PlayerCondition - 34082 - 34082
+(3108775943, 34083, 1430365287, 1), -- PlayerCondition - 34083 - 34083
+(3130494798, 10037, 1430365287, 0), -- SpellAuraRestrictions - 10037 - 10037
+(3322146344, 126057, 1430365287, 0), -- SpellMisc - 126057 - 126057
+(3322146344, 129047, 1430365287, 0), -- SpellMisc - 129047 - 129047
+(3322146344, 129096, 1430365287, 0), -- SpellMisc - 129096 - 129096
+(3322146344, 130275, 1430365287, 0), -- SpellMisc - 130275 - 130275
+(3322146344, 130608, 1430365287, 0), -- SpellMisc - 130608 - 130608
+(3322146344, 133297, 1430365287, 1), -- SpellMisc - 133297 - 133297
+(3322146344, 133455, 1430365287, 0), -- SpellMisc - 133455 - 133455
+(3322146344, 136620, 1430365287, 0), -- SpellMisc - 136620 - 136620
+(3322146344, 137703, 1430365287, 0), -- SpellMisc - 137703 - 137703
+(3322146344, 140581, 1430365287, 0), -- SpellMisc - 140581 - 140581
+(3322146344, 142312, 1430365287, 0), -- SpellMisc - 142312 - 142312
+(3322146344, 147181, 1430365287, 0), -- SpellMisc - 147181 - 147181
+(3322146344, 147185, 1430365287, 0), -- SpellMisc - 147185 - 147185
+(3322146344, 147186, 1430365287, 0), -- SpellMisc - 147186 - 147186
+(3322146344, 148759, 1430365287, 0), -- SpellMisc - 148759 - 148759
+(3322146344, 148760, 1430365287, 0), -- SpellMisc - 148760 - 148760
+(3322146344, 148827, 1430365287, 0), -- SpellMisc - 148827 - 148827
+(3322146344, 149497, 1430365287, 0), -- SpellMisc - 149497 - 149497
+(3322146344, 150373, 1430365287, 0), -- SpellMisc - 150373 - 150373
+(3322146344, 152224, 1430365287, 0), -- SpellMisc - 152224 - 152224
+(3322146344, 153925, 1430365287, 0), -- SpellMisc - 153925 - 153925
+(3322146344, 158926, 1430365287, 1), -- SpellMisc - 158926 - 158926
+(3322146344, 159299, 1430365287, 1), -- SpellMisc - 159299 - 159299
+(3326241424, 1708, 1430365287, 0), -- ChrUpgradeBucketSpell - 1708 - 1708
+(3326241424, 1709, 1430365287, 0), -- ChrUpgradeBucketSpell - 1709 - 1709
+(3326241424, 1710, 1430365287, 0), -- ChrUpgradeBucketSpell - 1710 - 1710
+(3386943305, 73406, 1430365287, 1), -- CreatureDifficulty - 73406 - 73406
+(3386943305, 73419, 1430365287, 1), -- CreatureDifficulty - 73419 - 73419
+(3386943305, 73504, 1430365287, 1), -- CreatureDifficulty - 73504 - 73504
+(3386943305, 73517, 1430365287, 1), -- CreatureDifficulty - 73517 - 73517
+(3386943305, 73546, 1430365287, 1), -- CreatureDifficulty - 73546 - 73546
+(3386943305, 73702, 1430365287, 1), -- CreatureDifficulty - 73702 - 73702
+(3386943305, 73703, 1430365287, 1), -- CreatureDifficulty - 73703 - 73703
+(3386943305, 73945, 1430365287, 1), -- CreatureDifficulty - 73945 - 73945
+(3386943305, 73994, 1430365287, 1), -- CreatureDifficulty - 73994 - 73994
+(3386943305, 74104, 1430365287, 0), -- CreatureDifficulty - 74104 - 74104
+(3386943305, 74385, 1430365287, 1), -- CreatureDifficulty - 74385 - 74385
+(3386943305, 74466, 1430365287, 1), -- CreatureDifficulty - 74466 - 74466
+(3386943305, 74635, 1430365287, 1), -- CreatureDifficulty - 74635 - 74635
+(3386943305, 75757, 1430365287, 0), -- CreatureDifficulty - 75757 - 75757
+(3386943305, 75759, 1430365287, 0), -- CreatureDifficulty - 75759 - 75759
+(3386943305, 75760, 1430365287, 0), -- CreatureDifficulty - 75760 - 75760
+(3386943305, 76334, 1430365287, 0), -- CreatureDifficulty - 76334 - 76334
+(3386943305, 77758, 1430365287, 1), -- CreatureDifficulty - 77758 - 77758
+(3386943305, 78254, 1430365287, 1), -- CreatureDifficulty - 78254 - 78254
+(3386943305, 78256, 1430365287, 0), -- CreatureDifficulty - 78256 - 78256
+(3386943305, 78257, 1430365287, 0), -- CreatureDifficulty - 78257 - 78257
+(3386943305, 78258, 1430365287, 0), -- CreatureDifficulty - 78258 - 78258
+(3386943305, 78259, 1430365287, 0), -- CreatureDifficulty - 78259 - 78259
+(3386943305, 78346, 1430365287, 1), -- CreatureDifficulty - 78346 - 78346
+(3386943305, 78347, 1430365287, 1), -- CreatureDifficulty - 78347 - 78347
+(3386943305, 78348, 1430365287, 1), -- CreatureDifficulty - 78348 - 78348
+(3386943305, 78349, 1430365287, 1), -- CreatureDifficulty - 78349 - 78349
+(3386943305, 78350, 1430365287, 1), -- CreatureDifficulty - 78350 - 78350
+(3386943305, 78351, 1430365287, 1), -- CreatureDifficulty - 78351 - 78351
+(3386943305, 78352, 1430365287, 1), -- CreatureDifficulty - 78352 - 78352
+(3386943305, 78353, 1430365287, 1), -- CreatureDifficulty - 78353 - 78353
+(3386943305, 78395, 1430365287, 1), -- CreatureDifficulty - 78395 - 78395
+(3386943305, 78399, 1430365287, 1), -- CreatureDifficulty - 78399 - 78399
+(3386943305, 78404, 1430365287, 1), -- CreatureDifficulty - 78404 - 78404
+(3386943305, 78670, 1430365287, 1), -- CreatureDifficulty - 78670 - 78670
+(3386943305, 78728, 1430365287, 1), -- CreatureDifficulty - 78728 - 78728
+(3386943305, 78729, 1430365287, 1), -- CreatureDifficulty - 78729 - 78729
+(3386943305, 78730, 1430365287, 1), -- CreatureDifficulty - 78730 - 78730
+(3386943305, 78731, 1430365287, 1), -- CreatureDifficulty - 78731 - 78731
+(3386943305, 78734, 1430365287, 1), -- CreatureDifficulty - 78734 - 78734
+(3386943305, 78738, 1430365287, 1), -- CreatureDifficulty - 78738 - 78738
+(3386943305, 78739, 1430365287, 1), -- CreatureDifficulty - 78739 - 78739
+(3386943305, 78742, 1430365287, 1), -- CreatureDifficulty - 78742 - 78742
+(3386943305, 78743, 1430365287, 1), -- CreatureDifficulty - 78743 - 78743
+(3386943305, 78746, 1430365287, 1), -- CreatureDifficulty - 78746 - 78746
+(3386943305, 78747, 1430365287, 1), -- CreatureDifficulty - 78747 - 78747
+(3386943305, 78750, 1430365287, 1), -- CreatureDifficulty - 78750 - 78750
+(3386943305, 78751, 1430365287, 1), -- CreatureDifficulty - 78751 - 78751
+(3386943305, 78758, 1430365287, 1), -- CreatureDifficulty - 78758 - 78758
+(3386943305, 78759, 1430365287, 1), -- CreatureDifficulty - 78759 - 78759
+(3386943305, 78904, 1430365287, 1), -- CreatureDifficulty - 78904 - 78904
+(3386943305, 78906, 1430365287, 1), -- CreatureDifficulty - 78906 - 78906
+(3386943305, 78988, 1430365287, 1), -- CreatureDifficulty - 78988 - 78988
+(3386943305, 78989, 1430365287, 1), -- CreatureDifficulty - 78989 - 78989
+(3386943305, 78990, 1430365287, 1), -- CreatureDifficulty - 78990 - 78990
+(3386943305, 78991, 1430365287, 1), -- CreatureDifficulty - 78991 - 78991
+(3386943305, 79817, 1430365287, 1), -- CreatureDifficulty - 79817 - 79817
+(3386943305, 79823, 1430365287, 1), -- CreatureDifficulty - 79823 - 79823
+(3386943305, 79824, 1430365287, 1), -- CreatureDifficulty - 79824 - 79824
+(3386943305, 79825, 1430365287, 1), -- CreatureDifficulty - 79825 - 79825
+(3386943305, 80244, 1430365287, 1), -- CreatureDifficulty - 80244 - 80244
+(3386943305, 80245, 1430365287, 1), -- CreatureDifficulty - 80245 - 80245
+(3386943305, 80246, 1430365287, 1), -- CreatureDifficulty - 80246 - 80246
+(3386943305, 80317, 1430365287, 1), -- CreatureDifficulty - 80317 - 80317
+(3386943305, 80318, 1430365287, 1), -- CreatureDifficulty - 80318 - 80318
+(3386943305, 80652, 1430365287, 1), -- CreatureDifficulty - 80652 - 80652
+(3386943305, 80653, 1430365287, 1), -- CreatureDifficulty - 80653 - 80653
+(3386943305, 80654, 1430365287, 1), -- CreatureDifficulty - 80654 - 80654
+(3386943305, 80658, 1430365287, 1), -- CreatureDifficulty - 80658 - 80658
+(3386943305, 80659, 1430365287, 1), -- CreatureDifficulty - 80659 - 80659
+(3386943305, 80660, 1430365287, 1), -- CreatureDifficulty - 80660 - 80660
+(3386943305, 80667, 1430365287, 1), -- CreatureDifficulty - 80667 - 80667
+(3386943305, 80668, 1430365287, 1), -- CreatureDifficulty - 80668 - 80668
+(3386943305, 80669, 1430365287, 1), -- CreatureDifficulty - 80669 - 80669
+(3386943305, 81731, 1430365287, 0), -- CreatureDifficulty - 81731 - 81731
+(3386943305, 82327, 1430365287, 1), -- CreatureDifficulty - 82327 - 82327
+(3386943305, 82328, 1430365287, 1), -- CreatureDifficulty - 82328 - 82328
+(3386943305, 82329, 1430365287, 1), -- CreatureDifficulty - 82329 - 82329
+(3386943305, 83010, 1430365287, 1), -- CreatureDifficulty - 83010 - 83010
+(3386943305, 83011, 1430365287, 1), -- CreatureDifficulty - 83011 - 83011
+(3386943305, 83012, 1430365287, 1), -- CreatureDifficulty - 83012 - 83012
+(3386943305, 83756, 1430365287, 1), -- CreatureDifficulty - 83756 - 83756
+(3386943305, 84264, 1430365287, 1), -- CreatureDifficulty - 84264 - 84264
+(3386943305, 85199, 1430365287, 1), -- CreatureDifficulty - 85199 - 85199
+(3386943305, 85263, 1430365287, 1), -- CreatureDifficulty - 85263 - 85263
+(3386943305, 85264, 1430365287, 1), -- CreatureDifficulty - 85264 - 85264
+(3386943305, 85265, 1430365287, 1), -- CreatureDifficulty - 85265 - 85265
+(3386943305, 85266, 1430365287, 1), -- CreatureDifficulty - 85266 - 85266
+(3386943305, 85267, 1430365287, 1), -- CreatureDifficulty - 85267 - 85267
+(3386943305, 85268, 1430365287, 1), -- CreatureDifficulty - 85268 - 85268
+(3386943305, 85269, 1430365287, 1), -- CreatureDifficulty - 85269 - 85269
+(3386943305, 85270, 1430365287, 1), -- CreatureDifficulty - 85270 - 85270
+(3386943305, 86788, 1430365287, 0), -- CreatureDifficulty - 86788 - 86788
+(3386943305, 88104, 1430365287, 1), -- CreatureDifficulty - 88104 - 88104
+(3386943305, 88105, 1430365287, 1), -- CreatureDifficulty - 88105 - 88105
+(3386943305, 88110, 1430365287, 1), -- CreatureDifficulty - 88110 - 88110
+(3386943305, 88111, 1430365287, 1), -- CreatureDifficulty - 88111 - 88111
+(3386943305, 88113, 1430365287, 1), -- CreatureDifficulty - 88113 - 88113
+(3386943305, 88115, 1430365287, 1), -- CreatureDifficulty - 88115 - 88115
+(3386943305, 88116, 1430365287, 1), -- CreatureDifficulty - 88116 - 88116
+(3386943305, 89548, 1430365287, 1), -- CreatureDifficulty - 89548 - 89548
+(3386943305, 89649, 1430365287, 1), -- CreatureDifficulty - 89649 - 89649
+(3386943305, 89660, 1430365287, 1), -- CreatureDifficulty - 89660 - 89660
+(3386943305, 89684, 1430365287, 1), -- CreatureDifficulty - 89684 - 89684
+(3386943305, 90161, 1430365287, 1), -- CreatureDifficulty - 90161 - 90161
+(3386943305, 90200, 1430365287, 1), -- CreatureDifficulty - 90200 - 90200
+(3386943305, 90302, 1430365287, 1), -- CreatureDifficulty - 90302 - 90302
+(3386943305, 90305, 1430365287, 1), -- CreatureDifficulty - 90305 - 90305
+(3386943305, 90354, 1430365287, 1), -- CreatureDifficulty - 90354 - 90354
+(3386943305, 90371, 1430365287, 1); -- CreatureDifficulty - 90371 - 90371
+
+UPDATE `battle_pet_species` SET `VerifiedBuild`=19865 WHERE `ID` IN (1449 /*1449*/, 1636 /*1636*/);
+UPDATE `creature_difficulty` SET `VerifiedBuild`=19865 WHERE `Id` IN (81731, 86788, 75757, 76334, 75759, 75760, 78256, 78257, 78258, 78259, 74104);
+
+DELETE FROM `spell_aura_restrictions` WHERE `ID`=10037;
+INSERT INTO `spell_aura_restrictions` (`ID`, `CasterAuraState`, `TargetAuraState`, `ExcludeCasterAuraState`, `ExcludeTargetAuraState`, `CasterAuraSpell`, `TargetAuraSpell`, `ExcludeCasterAuraSpell`, `ExcludeTargetAuraSpell`, `VerifiedBuild`) VALUES
+(10037, 0, 0, 0, 0, 0, 0, 0, 0, 19865); -- 10037
+
+DELETE FROM `spell_casting_requirements` WHERE `ID`=16443;
+INSERT INTO `spell_casting_requirements` (`ID`, `FacingCasterFlags`, `MinFactionID`, `MinReputation`, `RequiredAreasID`, `RequiredAuraVision`, `RequiresSpellFocus`, `VerifiedBuild`) VALUES
+(16443, 0, 0, 0, 3951, 0, 0, 19865); -- 16443
+
+
+DELETE FROM `spell_misc` WHERE `ID` IN (126057, 129096, 137703);
+INSERT INTO `spell_misc` (`ID`, `Attributes`, `AttributesEx`, `AttributesExB`, `AttributesExC`, `AttributesExD`, `AttributesExE`, `AttributesExF`, `AttributesExG`, `AttributesExH`, `AttributesExI`, `AttributesExJ`, `AttributesExK`, `AttributesExL`, `AttributesExM`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `Speed`, `SpellVisualID1`, `SpellVisualID2`, `SpellIconID`, `ActiveIconID`, `SchoolMask`, `MultistrikeSpeedMod`, `VerifiedBuild`) VALUES
+(126057, 2147811344, 1048576, 0, 1024, 8, 0, 65536, 16777216, 4096, 8388608, 512, 0, 0, 1048576, 1, 36, 11, 0, 37013, 0, 9824, 0, 1, 0, 19865), -- 126057
+(129096, 67108864, 136, 0, 1048576, 0, 1024, 0, 0, 1073745920, 0, 0, 0, 0, 0, 1, 6, 6, 0, 0, 0, 8880, 0, 1, 0, 19865), -- 129096
+(137703, 2147745920, 1024, 0, 0, 0, 0, 0, 0, 4096, 0, 0, 0, 0, 0, 1, 27, 11, 0, 0, 0, 9824, 0, 1, 0, 19865); -- 137703
diff --git a/sql/updates/hotfixes/2015_05_08_00_hotfixes.sql b/sql/updates/hotfixes/2015_05_08_00_hotfixes.sql
new file mode 100644
index 00000000000..ca04ee93c24
--- /dev/null
+++ b/sql/updates/hotfixes/2015_05_08_00_hotfixes.sql
@@ -0,0 +1,186 @@
+--
+-- Table structure for table `gameobjects_locale`
+--
+
+DROP TABLE IF EXISTS `gameobjects_locale`;
+CREATE TABLE `gameobjects_locale` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `locale` varchar(4) NOT NULL,
+ `Name_lang` text,
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`,`locale`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `garr_building`
+--
+
+DROP TABLE IF EXISTS `garr_building`;
+CREATE TABLE `garr_building` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `HordeGameObjectID` int(10) unsigned NOT NULL DEFAULT '0',
+ `AllianceGameObjectID` int(10) unsigned NOT NULL DEFAULT '0',
+ `Unknown` int(10) unsigned NOT NULL DEFAULT '0',
+ `Type` int(10) unsigned NOT NULL DEFAULT '0',
+ `Level` int(10) unsigned NOT NULL DEFAULT '0',
+ `NameAlliance` text,
+ `NameHorde` text,
+ `Description` text,
+ `Tooltip` text,
+ `BuildDuration` int(10) unsigned NOT NULL DEFAULT '0',
+ `CostCurrencyID` int(10) unsigned NOT NULL DEFAULT '0',
+ `CostCurrencyAmount` int(11) NOT NULL DEFAULT '0',
+ `HordeTexPrefixKitID` int(10) unsigned NOT NULL DEFAULT '0',
+ `AllianceTexPrefixKitID` int(10) unsigned NOT NULL DEFAULT '0',
+ `IconFileDataID` int(10) unsigned NOT NULL DEFAULT '0',
+ `BonusAmount` int(10) unsigned NOT NULL DEFAULT '0',
+ `Flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `AllianceActivationScenePackageID` int(10) unsigned NOT NULL DEFAULT '0',
+ `HordeActivationScenePackageID` int(10) unsigned NOT NULL DEFAULT '0',
+ `MaxShipments` int(10) unsigned NOT NULL DEFAULT '0',
+ `FollowerRequiredGarrAbilityID` int(10) unsigned NOT NULL DEFAULT '0',
+ `FollowerGarrAbilityEffectID` int(10) unsigned NOT NULL DEFAULT '0',
+ `CostMoney` int(11) NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `garr_building_locale`
+--
+
+DROP TABLE IF EXISTS `garr_building_locale`;
+CREATE TABLE `garr_building_locale` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `locale` varchar(4) NOT NULL,
+ `NameAlliance_lang` text,
+ `NameHorde_lang` text,
+ `Description_lang` text,
+ `Tooltip_lang` text,
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`,`locale`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `garr_building_plot_inst`
+--
+
+DROP TABLE IF EXISTS `garr_building_plot_inst`;
+CREATE TABLE `garr_building_plot_inst` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrBuildingID` int(10) unsigned NOT NULL DEFAULT '0',
+ `UiTextureAtlasMemberID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrSiteLevelPlotInstID` int(10) unsigned NOT NULL DEFAULT '0',
+ `LandmarkOffsetX` float NOT NULL DEFAULT '0',
+ `LandmarkOffsetY` float NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `garr_plot`
+--
+
+DROP TABLE IF EXISTS `garr_plot`;
+CREATE TABLE `garr_plot` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrPlotUICategoryID` int(10) unsigned NOT NULL DEFAULT '0',
+ `PlotType` int(10) unsigned NOT NULL DEFAULT '0',
+ `Flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `Name` text,
+ `MinCount` int(10) unsigned NOT NULL DEFAULT '0',
+ `MaxCount` int(10) unsigned NOT NULL DEFAULT '0',
+ `AllianceConstructionGameObjectID` int(10) unsigned NOT NULL DEFAULT '0',
+ `HordeConstructionGameObjectID` int(10) unsigned NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `garr_plot_locale`
+--
+
+DROP TABLE IF EXISTS `garr_plot_locale`;
+CREATE TABLE `garr_plot_locale` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `locale` varchar(4) NOT NULL,
+ `Name_lang` text,
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`,`locale`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `garr_plot_building`
+--
+
+DROP TABLE IF EXISTS `garr_plot_building`;
+CREATE TABLE `garr_plot_building` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrPlotID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrBuildingID` int(10) unsigned NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `garr_plot_instance`
+--
+
+DROP TABLE IF EXISTS `garr_plot_instance`;
+CREATE TABLE `garr_plot_instance` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrPlotID` int(10) unsigned NOT NULL DEFAULT '0',
+ `Name` text,
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `garr_plot_instance_locale`
+--
+
+DROP TABLE IF EXISTS `garr_plot_instance_locale`;
+CREATE TABLE `garr_plot_instance_locale` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `locale` varchar(4) NOT NULL,
+ `Name_lang` text,
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`,`locale`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `garr_site_level`
+--
+
+DROP TABLE IF EXISTS `garr_site_level`;
+CREATE TABLE `garr_site_level` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `Level` int(10) unsigned NOT NULL DEFAULT '0',
+ `MapID` int(10) unsigned NOT NULL DEFAULT '0',
+ `SiteID` int(10) unsigned NOT NULL DEFAULT '0',
+ `UITextureKitID` int(10) unsigned NOT NULL DEFAULT '0',
+ `TownHallX` float NOT NULL DEFAULT '0',
+ `TownHallY` float NOT NULL DEFAULT '0',
+ `MovieID` int(10) unsigned NOT NULL DEFAULT '0',
+ `Level2` int(10) unsigned NOT NULL DEFAULT '0',
+ `UpgradeResourceCost` int(10) unsigned NOT NULL DEFAULT '0',
+ `UpgradeMoneyCost` int(10) unsigned NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `garr_site_level_plot_inst`
+--
+
+DROP TABLE IF EXISTS `garr_site_level_plot_inst`;
+CREATE TABLE `garr_site_level_plot_inst` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrSiteLevelID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrPlotInstanceID` int(10) unsigned NOT NULL DEFAULT '0',
+ `LandmarkX` float NOT NULL DEFAULT '0',
+ `LandmarkY` float NOT NULL DEFAULT '0',
+ `Unknown` int(10) unsigned NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
diff --git a/sql/updates/hotfixes/2015_05_17_00_hotfixes.sql b/sql/updates/hotfixes/2015_05_17_00_hotfixes.sql
new file mode 100644
index 00000000000..29d18a31703
--- /dev/null
+++ b/sql/updates/hotfixes/2015_05_17_00_hotfixes.sql
@@ -0,0 +1,205 @@
+--
+-- Table structure for table `garr_ability`
+--
+
+DROP TABLE IF EXISTS `garr_ability`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `garr_ability` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `Flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `Name` text,
+ `Description` text,
+ `IconFileDataID` int(10) unsigned NOT NULL DEFAULT '0',
+ `OtherFactionGarrAbilityID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrAbilityCategoryID` int(10) unsigned NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `garr_ability`
+--
+
+LOCK TABLES `garr_ability` WRITE;
+/*!40000 ALTER TABLE `garr_ability` DISABLE KEYS */;
+/*!40000 ALTER TABLE `garr_ability` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `garr_ability_locale`
+--
+
+DROP TABLE IF EXISTS `garr_ability_locale`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `garr_ability_locale` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `locale` varchar(4) NOT NULL,
+ `Name_lang` text,
+ `Description_lang` text,
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`,`locale`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `garr_ability_locale`
+--
+
+LOCK TABLES `garr_ability_locale` WRITE;
+/*!40000 ALTER TABLE `garr_ability_locale` DISABLE KEYS */;
+/*!40000 ALTER TABLE `garr_ability_locale` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `garr_class_spec`
+--
+
+DROP TABLE IF EXISTS `garr_class_spec`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `garr_class_spec` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `NameMale` text,
+ `NameFemale` text,
+ `NameGenderless` text,
+ `ClassAtlasID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrFollItemSetID` int(10) unsigned NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `garr_class_spec`
+--
+
+LOCK TABLES `garr_class_spec` WRITE;
+/*!40000 ALTER TABLE `garr_class_spec` DISABLE KEYS */;
+/*!40000 ALTER TABLE `garr_class_spec` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `garr_class_spec_locale`
+--
+
+DROP TABLE IF EXISTS `garr_class_spec_locale`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `garr_class_spec_locale` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `locale` varchar(4) NOT NULL,
+ `NameMale_lang` text,
+ `NameFemale_lang` text,
+ `NameGenderless_lang` text,
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`,`locale`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `garr_class_spec_locale`
+--
+
+LOCK TABLES `garr_class_spec_locale` WRITE;
+/*!40000 ALTER TABLE `garr_class_spec_locale` DISABLE KEYS */;
+/*!40000 ALTER TABLE `garr_class_spec_locale` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `garr_follower`
+--
+
+DROP TABLE IF EXISTS `garr_follower`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `garr_follower` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `HordeCreatureID` int(10) unsigned NOT NULL DEFAULT '0',
+ `AllianceCreatureID` int(10) unsigned NOT NULL DEFAULT '0',
+ `HordeUiAnimRaceInfoID` int(10) unsigned NOT NULL DEFAULT '0',
+ `AllianceUiAnimRaceInfoID` int(10) unsigned NOT NULL DEFAULT '0',
+ `Quality` int(10) unsigned NOT NULL DEFAULT '0',
+ `HordeGarrClassSpecID` int(10) unsigned NOT NULL DEFAULT '0',
+ `AllianceGarrClassSpecID` int(10) unsigned NOT NULL DEFAULT '0',
+ `HordeGarrFollItemSetID` int(10) unsigned NOT NULL DEFAULT '0',
+ `AllianceGarrFollItemSetID` int(10) unsigned NOT NULL DEFAULT '0',
+ `Level` int(10) unsigned NOT NULL DEFAULT '0',
+ `ItemLevelWeapon` int(10) unsigned NOT NULL DEFAULT '0',
+ `ItemLevelArmor` int(10) unsigned NOT NULL DEFAULT '0',
+ `Unknown1` int(10) unsigned NOT NULL DEFAULT '0',
+ `Flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `HordeSourceText` text,
+ `AllianceSourceText` text,
+ `Unknown2` int(11) NOT NULL DEFAULT '0',
+ `Unknown3` int(11) NOT NULL DEFAULT '0',
+ `HordePortraitIconID` int(10) unsigned NOT NULL DEFAULT '0',
+ `AlliancePortraitIconID` int(10) unsigned NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `garr_follower`
+--
+
+LOCK TABLES `garr_follower` WRITE;
+/*!40000 ALTER TABLE `garr_follower` DISABLE KEYS */;
+/*!40000 ALTER TABLE `garr_follower` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `garr_follower_locale`
+--
+
+DROP TABLE IF EXISTS `garr_follower_locale`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `garr_follower_locale` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `locale` varchar(4) NOT NULL,
+ `HordeSourceText_lang` text,
+ `AllianceSourceText_lang` text,
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`,`locale`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `garr_follower_locale`
+--
+
+LOCK TABLES `garr_follower_locale` WRITE;
+/*!40000 ALTER TABLE `garr_follower_locale` DISABLE KEYS */;
+/*!40000 ALTER TABLE `garr_follower_locale` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `garr_follower_x_ability`
+--
+
+DROP TABLE IF EXISTS `garr_follower_x_ability`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `garr_follower_x_ability` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrFollowerID` int(10) unsigned NOT NULL DEFAULT '0',
+ `GarrAbilityID` int(10) unsigned NOT NULL DEFAULT '0',
+ `FactionIndex` int(10) unsigned NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `garr_follower_x_ability`
+--
+
+LOCK TABLES `garr_follower_x_ability` WRITE;
+/*!40000 ALTER TABLE `garr_follower_x_ability` DISABLE KEYS */;
+/*!40000 ALTER TABLE `garr_follower_x_ability` ENABLE KEYS */;
+UNLOCK TABLES;
+
diff --git a/sql/updates/world/2015_05_02_00_world.sql b/sql/updates/world/2015_05_02_00_world.sql
new file mode 100644
index 00000000000..3d4e830f086
--- /dev/null
+++ b/sql/updates/world/2015_05_02_00_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `command` WHERE `name` LIKE '%go quest%';
+INSERT INTO `command` (`name`, `permission`, `help`) VALUES
+('go quest', 12, 'Syntax: .go quest #quest_id\r\n\r\nTeleport your character to first quest poi with id #quest_id.');
diff --git a/sql/updates/world/2015_05_02_01_world.sql b/sql/updates/world/2015_05_02_01_world.sql
new file mode 100644
index 00000000000..1054be9be1e
--- /dev/null
+++ b/sql/updates/world/2015_05_02_01_world.sql
@@ -0,0 +1,1277 @@
+DELETE FROM `quest_template` WHERE `Id` IN (29541, 29584, 29621, 29693, 29696, 29715, 29719, 29722, 29732, 29744, 29746, 29766, 29767, 29812, 29813, 29837, 29841, 29842, 29843, 29854, 29857, 29938, 29969, 29970, 30003, 30009, 30019, 30110, 30111, 30122, 30153, 30180, 30198, 30199, 30201, 30202, 30203, 30247, 30253, 30262, 30264, 30278, 30279, 30303, 30311, 30343, 30442, 30483, 30520, 30609, 30710, 30714, 30910, 30918, 30934, 30974, 31017, 31025, 31028, 31098, 31099, 31101, 31273, 31274, 31275, 31278, 31331, 31498, 31499, 31500, 31501, 31518, 31554, 31604, 31614, 31615, 31616, 31617, 31618, 31619, 31620, 31621, 31622, 31623, 31624, 31625, 31626, 31627, 31628, 31629, 31630, 31631, 31632, 31633, 31634, 31635, 31636, 31637, 31638, 31639, 31640, 31641, 31642, 31643, 31644, 31645, 31646, 31647, 31648, 31649, 31650, 31651, 31723, 31759, 31763, 31764, 31816, 31968, 31987, 31988, 32097, 32107, 32114, 32125, 32129, 32173, 32202, 32203, 32211, 32231, 32253, 32280, 32281, 32289, 32290, 32291, 32358, 32369, 32458, 32459, 32467, 32468, 32469, 32470, 32471, 32472, 32475, 32490, 32504, 32508, 32516, 32569, 32598, 32622, 32630, 32651, 32720, 32784, 32793, 32797, 32799, 32800, 32801, 32802, 32873, 32874, 32893, 32894, 32897, 32899, 32910, 32914, 32917, 32934, 32946, 32982, 33008, 33012, 33015, 33019, 33023, 33025, 33058, 33060, 33067, 33068, 33108, 33121, 33122, 33123, 33126, 33129, 33130, 33131, 33148, 33223, 33224, 33233, 33381, 33395, 33400, 33401, 33402, 33449, 33510, 33516, 33522, 33529, 33534, 33536, 33545, 33549, 33557, 33562, 33577, 33588, 33592, 33659, 33693, 33709, 33713, 33725, 33726, 33727, 33732, 33737, 33746, 33753, 33767, 33829, 33844, 33877, 33879, 33880, 33881, 33908, 33913, 33921, 33924, 33932, 33934, 33939, 33943, 33951, 33952, 33954, 33956, 33957, 33959, 33968, 34004, 34006, 34008, 34014, 34015, 34016, 34063, 34074, 34083, 34100, 34121, 34141, 34150, 34158, 34159, 34175, 34178, 34180, 34181, 34212, 34217, 34237, 34244, 34267, 34268, 34269, 34282, 34283, 34307, 34308, 34317, 34327, 34343, 34360, 34376, 34377, 34413, 34424, 34441, 34454, 34457, 34459, 34474, 34499, 34500, 34502, 34509, 34524, 34525, 34526, 34527, 34528, 34529, 34530, 34531, 34533, 34534, 34535, 34536, 34537, 34538, 34539, 34540, 34541, 34542, 34543, 34544, 34545, 34546, 34547, 34548, 34549, 34550, 34551, 34552, 34553, 34554, 34555, 34556, 34588, 34591, 34602, 34623, 34633, 34640, 34650, 34661, 34670, 34677, 34687, 34688, 34689, 34691, 34693, 34722, 34735, 34738, 34742, 34842, 34844, 34848, 34926, 34944, 35008, 35057, 35092, 35094, 35161, 35217, 35222, 35228, 35230, 35256, 35267, 35296, 35306, 35308, 35310, 35313, 35314, 35326, 35359, 35360, 35361, 35362, 35417, 35418, 35419, 35421, 35422, 35423, 35425, 35427, 35428, 35431, 35452, 35454, 35457, 35466, 35467, 35469, 35470, 35479, 35541, 35578, 35635, 35822, 36060, 36113, 36135, 36139, 36140, 36143, 36144, 36145, 36146, 36147, 36148, 36149, 36150, 36151, 36152, 36172, 36188, 36263, 36358, 36383, 36413, 36497, 36572, 36593, 36619, 36620, 36639, 36661, 36873, 36922, 37169, 37269, 37305, 37306, 37333, 37334, 37335, 37336, 37416, 37501, 37502, 37503, 37504, 37505, 37506, 37513, 37514, 37523, 37524, 37539, 37648, 37752, 37754, 37772, 37840, 37916, 37918, 38008, 38103, 38104, 38105, 38106, 38107, 38108, 38109, 38110, 38111, 38112, 38113, 38114, 38115, 38116, 38117, 38118, 38119, 38120, 38121, 38122, 38123, 38124, 38125, 38126, 38127, 38128, 38129, 38130, 38131, 38132, 38133, 38134, 38135, 38136, 38137, 38138, 38139, 38140, 38141, 38149, 38150, 38151, 38152, 38153, 38154, 38155, 38156, 38157, 38158, 38159, 38160, 38161, 38162, 38163, 38164, 38165, 38166, 38167, 38168, 38169, 38170, 38171, 38172, 38173, 38174, 38194, 38202, 38240, 38293, 38296);
+INSERT INTO `quest_template` (`Id`, `QuestType`, `QuestLevel`, `QuestPackageID`, `MinLevel`, `QuestSortID`, `QuestInfoID`, `SuggestedGroupNum`, `RewardNextQuest`, `RewardXPDifficulty`, `Float10`, `RewardMoney`, `RewardMoneyDifficulty`, `Float13`, `RewardBonusMoney`, `RewardDisplaySpell`, `RewardSpell`, `RewardHonor`, `RewardKillHonor`, `StartItem`, `Flags`, `FlagsEx`, `RewardItem1`, `RewardItem2`, `RewardItem3`, `RewardItem4`, `RewardAmount1`, `RewardAmount2`, `RewardAmount3`, `RewardAmount4`, `ItemDrop1`, `ItemDrop2`, `ItemDrop3`, `ItemDrop4`, `ItemDropQuantity1`, `ItemDropQuantity2`, `ItemDropQuantity3`, `ItemDropQuantity4`, `RewardChoiceItemID1`, `RewardChoiceItemID2`, `RewardChoiceItemID3`, `RewardChoiceItemID4`, `RewardChoiceItemID5`, `RewardChoiceItemID6`, `RewardChoiceItemQuantity1`, `RewardChoiceItemQuantity2`, `RewardChoiceItemQuantity3`, `RewardChoiceItemQuantity4`, `RewardChoiceItemQuantity5`, `RewardChoiceItemQuantity6`, `RewardChoiceItemDisplayID1`, `RewardChoiceItemDisplayID2`, `RewardChoiceItemDisplayID3`, `RewardChoiceItemDisplayID4`, `RewardChoiceItemDisplayID5`, `RewardChoiceItemDisplayID6`, `POIContinent`, `POIx`, `POIy`, `POIPriority`, `RewardTitle`, `RewardTalents`, `RewardArenaPoints`, `RewardSkillLineID`, `RewardNumSkillUps`, `PortraitGiver`, `PortraitTurnIn`, `RewardFactionID1`, `RewardFactionID2`, `RewardFactionID3`, `RewardFactionID4`, `RewardFactionID5`, `RewardFactionValue1`, `RewardFactionValue2`, `RewardFactionValue3`, `RewardFactionValue4`, `RewardFactionValue5`, `RewardFactionOverride1`, `RewardFactionOverride2`, `RewardFactionOverride3`, `RewardFactionOverride4`, `RewardFactionOverride5`, `RewardFactionFlags`, `RewardCurrencyID1`, `RewardCurrencyID2`, `RewardCurrencyID3`, `RewardCurrencyID4`, `RewardCurrencyQty1`, `RewardCurrencyQty2`, `RewardCurrencyQty3`, `RewardCurrencyQty4`, `AcceptedSoundKitID`, `CompleteSoundKitID`, `AreaGroupID`, `TimeAllowed`, `AllowableRaces`, `LogTitle`, `LogDescription`, `QuestDescription`, `AreaDescription`, `PortraitGiverText`, `PortraitGiverName`, `PortraitTurnInText`, `PortraitTurnInName`, `QuestCompletionLog`, `VerifiedBuild`) VALUES
+(29541, 2, 85, 0, 85, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 786432, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Take Care of It', 'Resolve the dispute any way you see fit.', 'This looks bad... you''d better do something.', 'Resolve the dispute.', '', '', '', '', '', 19865), -- -Unknown-
+(29584, 2, 86, 0, 85, 5785, 0, 0, 29586, 5, 1, 98000, 5, 1, 1550, 0, 0, 0, 0, 0, 16392, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 60819455, 'Kill Mogu Firestarters', 'Kill 8 Mogu Firestarters in Nectarbreeze Orchard.', 'As if the attack weren''t bad enough, the mogu are setting these ancient orchards ablaze.$b$bI cannot understand what they hope to achieve, but we must stop them. Clear out the orchard so these people have a livelihood to return to.', '', '', '', '', '', 'Return to Ban at Nectarbreeze Orchard.', 19865), -- -Unknown-
+(29621, 2, 85, 0, 85, 5785, 0, 0, 29638, 4, 1, 71000, 4, 1, 1150, 0, 81040, 0, 0, 0, 3145736, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'UNUSED', 'Speak with the four High Elder spirits in Tian Monastery.', 'I have but one task for you, and it is a simple one. I would like you to speak with the spirits of the high elders that came before Cloudfall.$b$bTheir spirits have left their bodies, but they have not left this place. Go, speak with them, absorb their wisdom, and curry their favor.$b$bI anxiously await your return.', '', '', '', '', '', 'Return to Spirit-Sage Gaoquan at the Tian Monastery in the Jade Forest.', 19865), -- -Unknown-
+(29693, 2, 86, 0, 85, 5785, 0, 0, 0, 4, 1, 74000, 4, 1, 1150, 0, 102948, 0, 0, 73265, 7340040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73265, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The General''s Edge', 'Bring Nazgrim''s axe to General Nazgrim.', 'As you gradually gather your senses and begin to take in your surroundings, this object stands out amongst the strewn wreckage.$b$bIt occurs to you that this is the first time you''ve seen Nazgrim''s axe outside of his tight grasp. Somehow, this fact makes your predicament even more unsettling...$b$bYou know that dead or alive, the General would want his weapon back in his possession.', '', '', '', '', '', '', 19865), -- -Unknown-
+(29696, 2, 86, 0, 85, 5785, 0, 0, 29815, 5, 1, 98000, 5, 1, 1550, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'My Stars!', 'Collect 100 of Kiryn''s Throwing Stars from Devious Wood Sprites.', 'A number of Kiryn''s articles have been scattered around the area by wood sprites, but this one stands out as important to you.$b$bThe bag once hung from her waist, loaded with throwing stars. Without them, her arsenal will be considerably diminished.$b$bIf you were to retrieve the weapons from the pests that inhabit this region, it could only help your cause.', '', '', '', '', '', 'Speak to Kiryn at Hellscream''s Fist.', 19865), -- -Unknown-
+(29715, 2, 85, 0, 85, 5785, 0, 0, 29716, 0, 1, 0, 0, 1, 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, 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, 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, 890, 878, 0, 0, -1, 'The Witch in the Woods', 'Find An Windfur on the road north of the Jade Witch Hut.', 'Oh please $r! Can you help me?$b$bSome of the village children were playing in the woods and haven''t come back. Could you please keep an eye out for them if you are going out there?$b$bI told those village rascals to leave that old widow up in the woods alone. My guess is they are probably harassing her. They think she is a witch.', '', '', '', '', '', 'Find An Windfur.', 19865), -- -Unknown-
+(29719, 2, 85, 0, 85, 5785, 0, 0, 29720, 5, 1, 94000, 5, 1, 1550, 0, 0, 0, 0, 0, 1064960, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 2147483647, 'The Double Hozu Dare', 'Inspect 7 Lifelike Jade Statues south of the Jade Witch Hut. ', 'Shin is still missing!$b$bI never... I mean the other kids never should have double hozu dared him to knock on the witch''s door. $b$bWe saw a bunch of jade statues south of the Jade Witch''s hut. $b$bCan you come with me and see if any of them are Shin?', '', '', '', '', '', 'Speak with An Windfur.', 19865), -- -Unknown-
+(29722, 2, 85, 0, 85, 5785, 0, 0, 29720, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1048576, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 2147483647, 'A Lesson in Bravery', 'Defeat 8 Leafy Tricksters south of the Jade Witch Hut.', 'Can you help teach me to be brave like you?$b$bWhen we played our prank on the witch we made a bunch of Leafy Tricksters angry. I think the witch did something to them.$b$bCan you show me how you stand up to them?', '', '', '', '', '', 'Speak with An Windfur.', 19865), -- -Unknown-
+(29732, 2, 86, 0, 85, 5785, 0, 0, 0, 5, 1, 98000, 5, 1, 1550, 0, 0, 0, 0, 73861, 33882120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73901, 73861, 0, 0, 5, 1, 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, 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, 0, 0, 0, 890, 878, 0, 0, 52430847, 'What Goes Down, Must Come Up!', 'Use the Goblin Drone Dispenser near the Exposed Root to recover supplies.$b$bNOTE: Each use will require one Cliff Glider Tail.', 'Rivett left behind what looks to be an important piece of equipment. Along its shaft you are able to make out the words: Goblin Drone Dispenser.$b$bWith a simple calibration, the device is set to deliver drones to Nazgrim''s basecamp.$b$bEasy enough....$b$bThere''s just one problem. The only supply crates worth transporting have fallen to the cliff ledge below the crash impact.$b$bAs you ponder the issue, you see the long, coiled tail of a Cliff Glider fly by the corner of your eye...', '', '', '', '', '', '', 19865), -- -Unknown-
+(29744, 2, 86, 0, 85, 5785, 0, 0, 29745, 3, 1, 49000, 3, 1, 775, 0, 0, 0, 0, 0, 65544, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Some "Pupil of Nature"', 'Investigate the Woods of the Lost, northeast of the Greenstone Quarry.', 'Wood sprites are not prone to wandering, so I''m surprised they ventured down as far as the mason''s quarter. Something must be forcing them out of their natural habitat.$B$BThese particular sprites are native to the Woods of the Lost, just north of here. I''d go myself, but I''ve heard those woods are haunted.$B$BSo yeah, that''s out.$B$BI guess we''ll never know.$B$B<Weng coughs.>$B$BOrrrr... A big brave adventurer like YOU could go check it out! What do you say?', '', '', '', '', '', '', 19865), -- -Unknown-
+(29746, 2, 86, 0, 85, 5785, 0, 0, 29747, 2, 1, 24500, 2, 1, 390, 0, 0, 0, 0, 0, 606208, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Breadcrumb Into Ruins', 'Head into the Ruins of Gan Shi, northwest of the [JADE MINES].', 'The spirits released from these statues are being pulled--rather violently--toward the coastal ruins up ahead.$B$BIt seems unlikely that they''ll be allowed to rest...', '', '', '', '', '', '', 19865), -- -Unknown-
+(29766, 2, 86, 0, 85, 5785, 0, 0, 0, 5, 1, 98000, 5, 1, 1550, 0, 0, 0, 0, 0, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'A Good Start', 'Kill 4 Hozen Mudflingers, 4 Hozen Skullthumpers, and 3 Hozen Fishcatchers', 'Regardless of our predicament, our orders stand. We are to learn the lay of this land and prepare it for Hellscream''s fleet.$b$bBut first, we must deal with these savages!$b$bYou see these corpses I''ve stacked up around the camp? I want mountains of them!$b$bWe are the Horde!$b$bThese vermin have not learned to fear us yet, but we will fix that soon enough...', '', '', '', '', '', 'Speak to General Nazgrim at Hellscream''s Hope.', 19865), -- -Unknown-
+(29767, 2, 86, 0, 85, 5785, 0, 0, 0, 5, 1, 98000, 5, 1, 1550, 0, 0, 0, 0, 74614, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74614, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Fish Fry', 'Collect 12 Mature Carp from Hozu Fishcatchers', 'Fortune favors the bold!$b$bYour calculated aggressive actions have yielded unexpected rewards. If you can slay these fishcatchers after a successful haul, you''ll inherit their slippery spoils.$b$bThinning out the enemy while feeding your allies - the picture of efficiency!', '', '', '', '', '', 'Place the 12 Mature Carp on the Barbeque at Hellscream''s Hope', 19865), -- -Unknown-
+(29812, 2, 85, 0, 85, 5785, 0, 0, 29814, 5, 1, 94000, 5, 1, 1550, 0, 0, 0, 0, 74612, 553664520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74612, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 890, 878, 0, 0, 2147483647, 'Save the Cuddlies', 'Lasso 5 Drunk Red Pandas in Fox Grove and bring them to Apprentice Ji Alerage.', 'The Fox Grove has become a dangerous place for the local red pandas. $b$bSadly due to my actions helping that crazy Brewmaster Shadowpour, the foxes of the grove have developed an inebriation bite. The result is the little red pandas keep getting drunk until they can no longer defend themselves. $b$bPlease! Can you help me?$b$bIf you round up some of them I have an aroma about this fire that will help sober them up. That should keep them safe for at least a short while.', '', '', '', '', '', 'Speak with Apprentice Ji Alerage.', 19865), -- -Unknown-
+(29813, 2, 85, 0, 85, 5785, 0, 0, 29814, 5, 1, 94000, 5, 1, 1550, 0, 0, 0, 0, 0, 553664512, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 2147483647, 'Lethal Hangovers', 'Kill 8 intoxicated foxes in the Fox Grove.', 'I told him not to do it! But "no one stands in the way of Brewmaster Shadowpour".$b$BMy master went and contaminated the local water supply trying to "add flavor" to the water. The toxins trickled down here to the Fox Grove where the brew has an irreversible effect on the foxes. $b$BIt warps their minds and sends them into a frenzy. Now they are a permanent danger to any travelers and local wildlife.$b$BCan you help me cull some of their numbers please?', '', '', '', '', '', 'Speak with Apprentice Ji Alerage.', 19865), -- -Unknown-
+(29837, 2, 86, 0, 85, 5785, 0, 0, 29842, 2, 1, 24500, 2, 1, 390, 0, 0, 0, 0, 74768, 33816584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74768, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Sacred Scroll', 'Bring the Illegible Scroll to Lorewalker Cho.', 'The unfamiliar markings on this parchment have an elegance about them that Yoggtord and his gang don''t seem capable of.$b$bYou suspect that, like everything else these Hozu possess, this is stolen merchandise.$b$bPerhaps the original owner of the scroll is still nearby...', '', '', '', '', '', '', 19865), -- -Unknown-
+(29841, 2, 86, 0, 85, 5785, 0, 0, 29842, 1, 1, 9800, 1, 1, 150, 0, 0, 0, 0, 0, 262152, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Lay of the Land[TEMP]', 'Explore the region.', 'Grah!!$b$bFor every one of these muck-flingers we kill, another two spring from the woods to take its place. I wouldn''t share this with the others, but it''s clear that we won''t last long here, $n.$b$bI must stay and defend what remains of our belongings. You scout out the region and seek a solution to our primate problem.$b$bGo now. Our hope goes with you...', '', '', '', '', '', '', 19865), -- -Unknown-
+(29842, 2, 86, 0, 85, 5785, 0, 0, 29856, 4, 1, 74000, 4, 1, 1150, 0, 0, 0, 0, 0, 262152, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Seeking Answers', 'Use the candles to meditate at the Cairn of Blood.', '<Cho endures your stream of questions before speaking.>$b$bSo much to ponder, traveler...$b$bYou first must learn how to ask before your mind can discern the truth.$b$bI have completed my meditations for today, but my candles remain at the Cairn of Blood.$b$bGo there. Clear your mind. We will speak again when you are prepared to hear my words.', '', '', '', '', '', '', 19865), -- -Unknown-
+(29843, 2, 85, 0, 85, 5785, 0, 0, 0, 5, 1, 94000, 5, 1, 1550, 0, 0, 0, 0, 0, 16392, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Aunty Lin Windfur', 'Speak with Lin Windfur in Panda Town.', 'We will start heading back to town once everyone gets organized. No way is anyone going to mess with me now! I''ll boot them in the head! I''m sure I won''t be in trouble after this.$b$bThank you so much for your help. Can you tell Aunty Lin back in Panda Town that we are okay and on our way back? She has tons of old cool stuff she might give you as a reward.', '', '', '', '', '', 'Speak with Lin Windfur in Panda Town.', 19865), -- -Unknown-
+(29854, 2, 85, 0, 85, 1637, 0, 0, 0, 5, 1, 0, 0, 1, 1550, 0, 0, 0, 0, 0, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'DEPRECATED: Claiming Kalimdor', 'Report to General Nazgrim at Grommash Hold in Orgrimmar.', 'Victory shall soon be ours! Our forces have engaged the enemy all over Kalimdor.$B$BWarchief Garrosh Hellscream has commanded all able-bodied $rs to report for duty in support of our latest offensive.$B$BMake your way to Grommash Hold in Orgrimmar and present yourself to General Nazgrim for immediate assignment! For the Horde!', '', '', '', '', '', 'Report to General Nazgrim at Grommash Hold in Orgrimmar.', 19865), -- -Unknown-
+(29857, 2, 85, 0, 85, 1637, 0, 0, 0, 5, 1, 0, 0, 1, 1550, 0, 0, 0, 0, 0, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'DEPRECATED: Where Are Those Ships?', 'Speak to Overseer Moxx at Zoram''gar Outpost in Ashenvale and kill 6 Night Elf Raiders on the ships outside the town.', 'With most of our fleet leading the attack on Theramore and engaging the enemy elsewhere, we''re going to need more ships to complete our blockade of Kalimdor.$B$BThe warchief ordered the shipwrights at Zoram''gar Outpost in Ashenvale to work overtime to meet the demand, but none of the new craft have arrived yet.$B$BTravel there and put the question to their overseer. Tell them the warchief wants his ships!', '', '', '', '', '', 'Return to General Nazgrim at Grommash Hold in Orgrimmar.', 19865), -- -Unknown-
+(29938, 2, 86, 0, 85, 5785, 0, 0, 0, 5, 1, 98000, 5, 1, 1550, 0, 0, 0, 0, 0, 8, 0, 84105, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228, 0, 0, 0, 0, 3, 0, 0, 0, 0, 50000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Friends and Foes', 'Kill 7 Riverstride Jinyu at the Slicky Stream.', 'These ookin'' Jinyu grookin Kah Kah''s nephews!$b$bWikket once kill many hozen. Now wikket kill many jinyu.', '', '', '', '', '', 'Speak to Chief Kah Kah in Fort Grookin.', 19865), -- -Unknown-
+(29969, 2, -1, 0, 1, -373, 0, 0, 0, 5, 1, 0, 0, 1, 146300, 0, 0, 0, 0, 65897, 82048, 0, 52352, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 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, 0, 0, 0, 890, 878, 0, 0, -1, 'Broken Earthen Figurine', 'Repair the broken figurine using your skill and materials.', 'This badly broken figurine was discarded by its last owner. However, with the right materials and your skill in jewelcrafting, it could be completely restored.\n', '', '', '', '', '', 'Completion text.', 19865), -- -Unknown-
+(29970, 2, -1, 0, 1, -373, 0, 0, 0, 5, 1, 0, 0, 1, 146300, 0, 0, 0, 0, 76349, 82048, 0, 52352, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 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, 0, 0, 0, 890, 878, 0, 0, -1, 'Broken Earthen Figurine', 'Repair the broken figurine using your skill and materials.', 'This badly broken figurine was discarded by its last owner. However, with the right materials and your skill in jewelcrafting, it could be completely restored.\n', '', '', '', '', '', 'Completion text.', 19865), -- -Unknown-
+(30003, 2, 86, 0, 85, 5785, 0, 0, 0, 5, 1, 98000, 5, 1, 1550, 0, 0, 0, 0, 0, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'A Book By Its Cover', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30009, 2, 85, 0, 85, 5785, 0, 0, 0, 1, 1, 9400, 1, 1, 150, 0, 0, 0, 0, 0, 16384, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Muster of Fort Grookin', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30019, 2, 87, 0, 86, 5805, 0, 0, 30020, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16392, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 60819455, 'A Breach in the Wall', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30110, 2, 85, 0, 85, 0, 0, 0, 0, 8, 1, 376000, 8, 1, 3050, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Raid Finder (1st)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30111, 2, 85, 0, 85, 0, 0, 0, 0, 8, 1, 376000, 8, 1, 3050, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Raid Finder (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30122, 2, -1, 0, 1, -181, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 78912, 65920, 0, 75525, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Silver Filigree Flask', 'Fill the vial with a potent alchemical mixture.', 'You have found a beautiful silver flask decorated with ornate filigree. With the right materials and your skill in alchemy, it could become quite magical.\n', '', '', '', '', '', 'Completion text.', 19865), -- -Unknown-
+(30153, 2, 90, 0, 90, 5931, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 1069056, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1271, 0, 0, 0, 0, 5, 0, 0, 0, 0, 50000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Full Speed Ahead', 'Follow Instructor Windblade.', 'It is time for our training session.$B$BFollow me around the spires. Let''s see if you can keep up while staying mounted.', '', '', '', '', '', 'Return to Instructor Windblade at The Arboretum in The Jade Forest.', 19865), -- -Unknown-
+(30180, 2, 86, 0, 86, 6134, 0, 0, 30121, 5, 1, 98000, 5, 1, 1550, 0, 0, 0, 0, 0, 1064960, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Labor for Labor', 'Gather 8 pieces of Fire Wood.', 'My wife, Leza, is going into labor but she is very very sick. I need to keep her warm but we''ve exhausted our supply of dry firewood.$b$bCould you grab some twigs and branches from the nearby trees for me? Time is of the essence!', '', '', '', '', '', 'Speak with Sunwalker Dezco at Thunder Cleft in the Krasarang Wilds.', 19865), -- -Unknown-
+(30198, 2, 90, 0, 90, 5840, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4104, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NOT USED', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30199, 2, 90, 0, 90, 5840, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4104, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NOT USED', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30201, 2, 90, 0, 90, 5840, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4104, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NOT USED', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30202, 2, 90, 0, 90, 5840, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4104, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NOT USED', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30203, 2, 90, 0, 90, 5840, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4104, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NOT USED', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30247, 2, 90, 0, 90, 5840, 0, 0, 0, 6, 1, 228000, 6, 1, 6150, 0, 0, 0, 0, 0, 4104, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1269, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Roll Club: Vale of Eternal Blossoms', 'Complete the Vale of Eternal Blossoms roll course.', 'Follow the flags. Make the checkpoints. Round the loop. Get back to me before your time is up.$B$BSpeak to me when you''re ready to roll.', '', '', '', '', '', 'Return to Kelari Feartherfoot at the Setting Sun Garrison in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(30253, 2, 86, 0, 85, 5805, 0, 0, 30254, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16384, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1272, 0, 0, 0, 0, 5, 0, 0, 0, 0, 40000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Family Farm', 'Join Farmer Yoon.', 'D-did you hear what they said?$B$BIt''s almost like they don''t want me here. Like...I''m not good enough.$B$BSure I''ve never run a farm before, but I know how to plant a seed and how to pick a turnip.$B$B<Farmer Yoon''s eyes light up.>$B$BYou know what? I''m going to show them that I can also become a master farmer!$B$BI''m going to turn this farm into one of the most prosperous in the Valley!$B$BIt''s too much work for one pandaren, though. Come on! Will you help me?', '', '', '', '', '', 'Speak to Farmer Yoon at [Your Farm] in the Valley of the Four Winds.', 19865), -- -Unknown-
+(30262, 2, 90, 0, 90, 5840, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4104, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NOT USED', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30264, 2, 90, 0, 90, 5840, 0, 0, 0, 6, 1, 228000, 6, 1, 6150, 0, 0, 0, 0, 0, 4104, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1269, 0, 0, 0, 0, 6, 0, 0, 0, 0, 30000, 0, 0, 0, 0, 0, 738, 0, 0, 0, 2, 0, 0, 0, 890, 878, 0, 0, -1, 'Enemy at the Gates', 'Use a Shado-Pan Sky Serpent to kill 60 Krik''thik attackers, 3 Krik''thik War Wagons, and 3 Krik''thik Catapults.', 'The mantid forces are pouring against the wall. I''ve arranged for some flying serpents to cut away at their forces from the air.$B$BWould you be willing to take the reigns on one of them?', '', '', '', '', '', 'Return to Anji Autumnlight at the Setting Sun Garrison in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(30278, 2, 90, 0, 90, 5840, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'REUSE FOR PROGRESSION', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30279, 2, 90, 0, 90, 5840, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'REUSE FOR PROGRESSION', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30303, 2, 90, 0, 90, 5840, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4104, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NOT USED', '', '', '', '', '', '', '', 'Return to Leven Dawnblade at the Ruins of Guo-Lai in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(30311, 2, 90, 0, 90, 5840, 0, 0, 0, 5, 1, 86000, 4, 1, 4900, 0, 0, 0, 0, 0, 4104, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1269, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'High Standards', 'Erect 6 Golden Lotus Standards.', 'If I had to pick the most important quality for a battle standard, it would be that it''s standing up... and not on fire, but mostly the first one. So needless to say, I''m a bit concerned about our standard situation at the moment.$B$BIf some unknown $c were to be so kind as to take a walk out on the battlefield to our northwest and stand our standards back up, both myself and my extremely sexy yet somewhat commanding wife would be very grateful.', '', '', '', '', '', 'Return to Kun Autumnlight at the Golden Pagoda in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(30343, 2, 85, 0, 85, 6040, 81, 0, 30378, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 852096, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40317, 40317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'To the Waterline!', 'Rig powder barrels in the hold of all six ships.', 'This is Sky-Reaver Stormhowl, captain of the airship Fist of Garrosh and commander of this operation.$B$BYour first task is to burn the 7th Fleet to the waterline while it''s still at anchor$B$BCaptain Drok''s marines will hold the harbor entrance while your team works.$B$BRig powder barrels in the hold of every ship and then regroup at the harbor entrance to inform Blastmaster Sparkfuse, who will trigger the exposives and signal the airship forward.', '', 'Operation commander and captain of the airship Fist of Garrosh.', 'Sky-Reaver Stormhowl', 'Operation commander and captain of the airship Fist of Garrosh.', 'Sky-Reaver Stormhowl', '', 19865), -- -Unknown-
+(30442, 2, 90, 0, 90, 5785, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1642496, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Blanche''s Boomer Brew', 'Help create the Boomer Brew. If the Brewkegs catch on fire, fix them!', 'Brew Blanche''s Boomer Brew by Protecting the Brewkegs.', '', '', '', '', '', 'Talk to Blanche.', 19865), -- -Unknown-
+(30483, 2, 90, 0, 90, 5840, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4104, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NOT USED', '', '', '', '', '', '', '', 'Return to Ren Firetongue at the Twin Monoliths in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(30520, 2, 90, 0, 90, 5805, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 80129, 302006272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80129, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 1272, 0, 0, 0, 0, 5, 0, 0, 0, 0, 60000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Tummy Trouble', 'Use Gooseberries to cure sick Halfhill Villagers.', 'I like Farmer Yoon just dandy as a neighbor, but getting my vote is another matter entirely. He does know that my father is the head of the Union, right?$B$BAnyway, I''ve got bigger problems to worry about. Lotta folks been getting sick from eating bad vegetables.$B$BSince they bought the produce from my market, my reputation is in jeopardy.$B$BNow I''ve got an idea to cure the stomach rumbles, but it ain''t pretty.$B$BIf you''d be willing to... um... hurry things along, I just might be indebted to you.', '', '', '', '', '', 'Return to Gina Mudclaw at the Halfhill Market in the Valley of the Four Winds.', 19865), -- -Unknown-
+(30609, 2, 88, 0, 87, 5841, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16384, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Exit Strategy', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(30710, 2, 87, 0, 87, 5841, 0, 0, 0, 5, 1, 102000, 5, 1, 1550, 0, 0, 0, 0, 0, 65544, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Provoking the Trolls', 'Kill 10 Zandalari Stalkers and 5 Zandalari Hexers', 'We''ve managed to push them back this far, but I doubt that we will remain safe for long if we do not deal with them once and for all.\n\nMy husband, coward or fool that he is, does not wish to provoke them. I will not be cowed so.\n\nWe will do just that. Slay their forward scouts. Perhaps we can provoke - and then defeat - their leader.', '', '', '', '', '', 'Return to Xiao Meng', 19865), -- -Unknown-
+(30714, 2, 87, 0, 87, 0, 0, 0, 0, 5, 1, 102000, 5, 1, 1550, 0, 0, 0, 0, 0, 589824, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Destroy the Leaders', 'Kill the Zandalari Blademaster and Zandalari Mage', 'And, now they fear you.\n\nTheir leaders, a Blademaster and a Mage, lie deeper in the ruins. Kill them.\nMake them hurt. For us.', '', '', '', '', '', 'Return to Xiao Zi Hai', 19865), -- -Unknown-
+(30910, 2, 90, 0, 90, 0, 0, 0, 30918, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 327680, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Greenstone Village', 'Rescue all the villagers.', 'Please help!$B$BWe paid some adventurers to run off all the elemental spirits and now they''re back for revenge!', '', '', '', '', 'Brewmaster Tzu', '', 19865), -- -Unknown-
+(30918, 2, 90, 0, 90, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 135069696, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41877, 41906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Hui''s Vengeance', 'Defeat Vengeful Hui.', 'I am ashamed to ask, but for Greenstone''s sake... might we now trouble you to face Vengeful Hui on our behalf...?', '', '[PH] KILL!', 'Vengeful Hui', '', 'Brewmaster Tzu', '', 19865), -- -Unknown-
+(30934, 2, 85, 0, 85, -1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 6797, 59017, 24431, 0, 1, 1, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Criteria Effects Test Quest', 'Interact with the quest objectives and make sure their icons work. ', 'Hello friend! Let''s test some things, shall we?$b$bClick on the gear!$bChat with the bubble!$bHeal the Green Sparkle!$bKill the kill target!$bClick on the gearbody''s corpse!$b$bThe loudspeaker should announce your progress.$b$bAfter each objective, you will explode.$B$B(Sorry about that last bit.)', '', '', '', '', '', 'Return to Lorewalker Cho.', 19865), -- -Unknown-
+(30974, 2, 89, 0, 88, 5842, 0, 0, 0, 5, 1, 110000, 5, 1, 1600, 0, 0, 0, 0, 0, 8, 0, 88587, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1270, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Raising Spirits', 'Throw 8 Iron Belly Spirits to nearby Dusklight Skirmishers and Dusklight Rangers.', 'The kegs are full of my worst stock. Good for burning, crap for drinking.$B$BI''ve broken out some tankards of my best spirits and had them carried out amongst the kegs though - those are for my well-deserving men! Spirits to raise their spirits after endless, grueling fighting.$B$BWould you be up for spreading the good cheer?', '', '', '', '', '', 'Return to Lao-Chin the Iron Belly at Dusklight Bridge in Townlong Steppes.', 19865), -- -Unknown-
+(31017, 2, 90, 0, 90, 5840, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 82809, 16392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82809, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 1345, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Humble Grummle', 'Bring The Humble Grummle to Lorewalker Cho at the Seat of Knowledge.', 'Dear $p,$b$bWe have received your research on the grummles and believe we have a solid idea of their etimology and history.$b$bIf you visit us at the Seat of Knowledge in Vale of Eternal Blossoms we can add this contribution to your personal collection.$b$bThank you for your diligence!$b$bSincerely,$b$bLorewalker Cho', '', '', '', '', '', 'Speak with Lorewalker Cho at the Seat of Kowledge in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(31025, 2, 90, 0, 89, 6138, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 4210696, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Sweet Tooth', 'Collect 50 Starshade.', 'We cannot summon a god without a worthy offering.$B$BI have noticed a rare flower growing among the fields to the north.$B$BThe Starshade is a potent flower whose bloom holds a powerfully sweet, intoxicating liquor.$B$BA single taste of this heady substance invigorates and strengthens the body.$B$BSurely, this god will appreciate its worth.', '', '', '', '', '', 'Return to Kil''ruk the Wind-Reaver at Darkroot Hollow in the Dread Wastes.', 19865), -- -Unknown-
+(31028, 2, 90, 0, 89, 6138, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 4210696, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Paragon 5', 'Recover the fifth paragon.', 'The emanations are growing stronger, $c.$B$BI feel them coming from the cave below us.$B$BI wish to study the beast that you have slain, so I will grant you the honor of awakening the next paragon.$B$BAfter all, the danger should be past.$B$BGo now, wallstrider, before I change my mind.', '', '', '', '', '', 'Return to Kil''ruk the Wind-Reaver at Darkroot Hollow in the Dread Wastes.', 19865), -- -Unknown-
+(31098, 2, 90, 0, 90, 5840, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 83775, 16392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83775, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 1345, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Founding of the Order of the Cloud Serpent', 'Bring Founding of the Order of the Cloud Serpent to Lorewalker Cho at the Seat of Knowledge.', 'Dear $p,$b$bWe have a wonderful story assembled from the lore you recovered on the Order of the Cloud Serpent.$b$bIf you visit us at the Seat of Knowledge in Vale of Eternal Blossoms we can add this contribution to your personal collection.$b$bThank you for your diligence!$b$bSincerely,$b$bLorewalker Cho', '', '', '', '', '', 'Speak with Lorewalker Cho at the Seat of Kowledge in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(31099, 2, 90, 0, 90, 5840, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 83776, 16392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83776, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 1345, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Klaxx Attack', 'Bring Klaxx Attack to Lorewalker Cho at the Seat of Knowledge.', 'Dear $p,$b$bWe have all been quite disturbed by your findings regarding the Klaxxi.$b$bIf you visit us at the Seat of Knowledge in Vale of Eternal Blossoms we can add this contribution to your personal collection.$b$bThank you for your diligence!$b$bSincerely,$b$bLorewalker Cho', '', '', '', '', '', 'Speak with Lorewalker Cho at the Seat of Kowledge in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(31101, 2, 90, 0, 90, 5840, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 83778, 16392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83778, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 1345, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Legends of the Brewfathers', 'Bring Legends of the Brewfathers to Lorewalker Cho at the Seat of Knowledge.', 'Dear $p,$b$bYour research in to the Brewfathers has proven most... thirstifying.$b$bIf you visit us at the Seat of Knowledge in Vale of Eternal Blossoms we can add this contribution to your personal collection.$b$bThank you for your diligence!$b$bSincerely,$b$bLorewalker Cho', '', '', '', '', '', 'Speak with Lorewalker Cho at the Seat of Kowledge in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(31273, 2, 90, 0, 90, 6138, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33574912, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Relics of the Swarm', 'PH', 'PH', '', '', '', '', '', 'PH', 19865), -- -Unknown-
+(31274, 2, 90, 0, 90, 0, 0, 0, 0, 8, 1, 456000, 8, 1, 9850, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Raid Finder (1st)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31275, 2, 90, 0, 90, 0, 0, 0, 0, 8, 1, 456000, 8, 1, 9850, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Raid Finder (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31278, 2, 83, 279, 81, 5042, 0, 0, 0, 7, 1, 258000, 7, 1, 750, 0, 0, 0, 0, 0, 136, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Figuring out how to make quests', 'Make a breadcrumb quest.', 'Whee! You get to make a breadcrumb quest! Now figure out what to do next.', '', '', '', '', '', '', 19865), -- -Unknown-
+(31331, 2, 83, 0, 81, 5042, 0, 0, 0, 7, 1, 258000, 7, 1, 750, 0, 0, 0, 0, 0, 136, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Figuring out how to make quests', 'Make a breadcrumb quest.', 'Whee! You get to make a breadcrumb quest! Now figure out what to do next.', '', '', '', '', '', '', 19865), -- -Unknown-
+(31498, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Jade Serpent Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31499, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Jade Serpent Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31500, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Jade Serpent Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31501, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Jade Serpent Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31518, 2, 87, 0, 87, 5841, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 262152, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Vale of Eternal Blossoms', 'Speak to Anduin at the Gate of the August Celestials.', 'It''s been many lifetimes since the gates to the valley were open, $n.$b$bI wouldn''t miss this for the world, and neither should you!$b$bMeet me at the southen edge of Kun-Lai Summit. I''ll wait for you there.', '', '', '', '', '', '', 19865), -- -Unknown-
+(31554, 2, -1, 0, 5, 0, 0, 0, 0, 0, 1, 154000, 5, 1, 0, 125439, 125610, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9270, 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, 890, 878, 0, 0, -1, 'On The Mend', 'Heal your pets to full health by visiting Seriadne the Stable Master.', 'Now that you have one a battle, we need to heal up your pets so they can fight another day! Visit Seriadne, our local stable master to heal and revive your pets.', '', 'Seriadne, the local Stable Master can heal and revive your pets.', 'Seriadne', '', '', 'Return to Seriadne in Dolanaar.', 19865), -- -Unknown-
+(31604, 2, 90, 0, 89, 6138, 0, 0, 0, 6, 1, 228000, 6, 1, 6150, 0, 0, 0, 0, 0, 16384, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27394, 0, 1337, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Assault on Zan''vess', 'Complete the Assault on Zan''vess scenario. Speak with Klaxxi''va Vor or use the Looking For Dungeon tool to begin.', 'The island settlement of Zan''vess is the last hope for the future of my kind. Although the mantid there are loyal to Shek''zeer, the kypari itself has been spared the sha corruption that has befallen the mainland.$B$BStill, under imperial orders, the Zan''thik are draining sap at an unsustainable rate.$B$BYou have proven yourself a capable asset. The council wants you to lead an assault on the island. Disrupt their operations and keep the kypari healthy.$B$BSpeak with me when you are ready to begin.', '', '', 'Klaxxi''va Vor', '', '', 'Return to Klaxxi''va Vor at Klaxxi''vess.', 19865), -- -Unknown-
+(31614, 2, 90, 0, 90, 0, 0, 0, 0, 6, 1, 228000, 6, 1, 6150, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Heroic Random (1st) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31615, 2, 90, 0, 90, 0, 0, 0, 0, 6, 1, 228000, 6, 1, 6150, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Heroic Random (Nth) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31616, 2, 90, 0, 90, 0, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 128, 8, 98133, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Scenario Random (1st) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31617, 2, 90, 0, 90, 0, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 128, 8, 98133, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Scenario Random (Nth) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31618, 2, 90, 0, 90, 0, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Dungeon Random (1st) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31619, 2, 90, 0, 90, 0, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Dungeon Random (Nth) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31620, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Stormstout Brewery Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31621, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Stormstout Brewery Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31622, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Stormstout Brewery Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31623, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Stormstout Brewery Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31624, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Gate of the Setting Sun Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31625, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shado-Pan Monastery Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31626, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Siege of Niuzao Temple Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31627, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Mogu''shan Palace Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31628, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scholomance Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31629, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scarlet Monastery Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31630, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scarlet Halls Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31631, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Gate of the Setting Sun Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31632, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shado-Pan Monastery Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31633, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Siege of Niuzao Temple Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31634, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Mogu''shan Palace Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31635, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scholomance Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31636, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scarlet Halls Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31637, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scarlet Monastery Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31638, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Gate of the Setting Sun Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31639, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shado-Pan Monastery Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31640, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Siege of Niuzao Temple Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31641, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Mogu''shan Palace Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31642, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scholomance Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31643, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scarlet Halls Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31644, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scarlet Monastery Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31645, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Gate of the Setting Sun Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31646, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shado-Pan Monastery Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31647, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Siege of Niuzao Temple Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31648, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Mogu''shan Palace Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31649, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scholomance Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31650, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scarlet Halls Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31651, 2, 90, 0, 90, 0, 0, 0, 0, 4, 1, 114000, 5, 1, 3700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Scarlet Monastery Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31723, 2, 87, 0, 85, 1519, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 128802, 0, 0, 0, 2097152, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Valley of the Four Winds', 'Speak to Private Tim P. O''Rary in the Valley of the Four Winds.', 'Yarr, the Jade Forest be goin through some violent reconstruction, but the Valley of the Four Winds is ripe for explorin. I can help ye on yer way if ye wants to explore it. Be sure to check out me wares for some equipment that may help ye on yer journey.', '', '', '', '', '', '', 19865), -- -Unknown-
+(31759, 2, 90, 0, 90, 5840, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 4104, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1269, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[RESCUE GOLDEN LOTUS SQUAD] [GET RID OF THIS?]', '', '', '', '', '', '', '', 'Return to Anji Autumnlight at the Golden Pagoda in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(31763, 2, 90, 0, 90, 5840, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 4104, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1269, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[KILL GIANT SERPENT] [GET RID OF THIS?]', '', '', '', '', '', '', '', 'Return to Anji Autumnlight at the Golden Pagoda in the Vale of Eternal Blossoms.', 19865), -- -Unknown-
+(31764, 2, 86, 0, 85, 5785, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[PUT OUT THE FIRES]', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31816, 2, -1, 0, 5, 0, 0, 0, 0, 0, 1, 154000, 5, 1, 0, 0, 0, 0, 0, 0, 868352, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13091, 13091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Traitor Gluk', 'Defeat Bill the Pirate in a pet battle.', 'Are you up for an adventure? Bill the Pirate, local star tamer down in the Cape of Stranglethorn, has issued an open challenge to prepared trainers!$b$bYou can find Bill the Pirate in the southern Cape of Stranglethorn, walking the local roads to find potential fights.', '', 'Make him walk the plank!', 'Marcus Jensen', 'Wonderful!', 'Marcus Jensen', '', 19865), -- -Unknown-
+(31968, 2, 86, 0, 85, 5785, 0, 0, 0, 5, 1, 98000, 5, 1, 1550, 0, 0, 0, 0, 0, 16384, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Doubt Begins To Surface', 'Snap Nazgrim out of it.', 'The Alliance... so many airships. How can we possibly fight them all? I... don''t feel... well... ', '', '', '', '', '', 'Speak with Taran Tzu at Thunder Hold in the Jade Forest.', 19865), -- -Unknown-
+(31987, 2, 85, 0, 83, 0, 0, 0, 0, 5, 1, 94000, 5, 1, 0, 0, 0, 0, 0, 0, 384, 8, 90041, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Theramore', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(31988, 2, 90, 0, 90, 0, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Selected Scenario', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32097, 2, 90, 0, 90, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 128, 8, 90818, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Short-Supply Reward', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32107, 2, -1, 0, 85, -101, 0, 0, 0, 0, 1, 154000, 5, 1, 0, 0, 0, 0, 0, 0, 4096, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13099, 0, 1302, 1358, 0, 0, 0, 6, 5, 0, 0, 0, 0, 50000, 0, 0, 0, 0, 738, 0, 0, 0, 1, 0, 0, 0, 890, 878, 0, 0, -1, 'Flying Tiger Gourami', 'Bring the Flying Tiger Gourami to Nat Pagle at Anglers Wharf.', 'You''ve caught a unique fish... with wings. Perhaps it deserves the expert opinion of Nat Pagle in Anglers Wharf.\n', '', 'Maybe Nat would know more about this rare catch?', 'Nat Pagle', '', '', 'Bring the Flying Tiger Gourami to Nat Pagle at Anglers Wharf.', 19865), -- -Unknown-
+(32114, 2, 90, 0, 90, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 262152, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1269, 0, 0, 0, 0, 7, 0, 0, 0, 0, 4200000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'So, You Wanted to Test Daily Quests?', '', 'You wanna test dailies? Well alright then.', '', '', '', '', '', '', 19865), -- -Unknown-
+(32125, 2, 90, 0, 90, -396, 0, 0, 32128, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 92016, 20480, 64, 0, 0, 0, 0, 0, 0, 0, 0, 92016, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 46377, 1375, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Don''t Try So Hard - DEPRECATED', 'Kill 8 SI:7 Saboteurs.', 'Ah, a $c! I guess you''ll do.$b$bMy spies tell me there are Alliance spies sneaking around outside the fortress. But they are just... so... bad at it! I mean come on! Show a little pride in your work or something.$b$bGo kill a bunch of ''em as a lesson to the others.$b$bHere, take this batch of my latest Spy Stinker formula. If you can''t see the spies just start tossing these outside the walls of the fortress to the south and you should flush them out.', '', '', '', 'His voice is broadcasting from a nearby bush... you think.', 'Trade Prince Gallywix', 'Speak with the Image of Trade Prince Gallywix at Domination Point in Krasarang Wilds.', 19865), -- -Unknown-
+(32129, 2, 90, 0, 90, -396, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 4104, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1375, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Defense Daily 06', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32173, 2, 90, 0, 90, -396, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 4104, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Build Portal 01', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32202, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 20488, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 738, 0, 0, 0, 2, 0, 0, 0, 890, 878, 0, 0, -1, 'Kill Trolls', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32203, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 20488, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 738, 0, 0, 0, 2, 0, 0, 0, 890, 878, 0, 0, -1, 'Kill Mogu Spirits', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32211, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 20488, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 738, 0, 0, 0, 2, 0, 0, 0, 890, 878, 0, 0, -1, 'Nalak the Storm Lord', '[PH] Kill Nalak [Log Description]', '[PH] Kill Nalak [Description]', '', '', '', '', '', '[PH] Kill Nalak [Completion Text]', 19865), -- -Unknown-
+(32231, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 92060, 20488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92060, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Trailing Light in the Dark', 'Relight 8 torches within the Diremoor.', 'There is some dark magic in the Diremoor that extinguishes even our magical illuminations, and so our scouts struggle to find their way.$B$BAs you pass through the swamp, relight any torches you find that our men might find their way. Perhaps they will help you find your way back as well.', '', '', '', '', '', 'Return to Magister Hathorel at the Dawnseeker Promitory.', 19865), -- -Unknown-
+(32253, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 20488, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'REMOVE (No Longer Used)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32280, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 20480, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Metalocalypse', 'Kill Metal Lord Mono-Han outside the Ghost Iron Mine on the Isle of the Thunder King.', 'You''ve made a good start, but now it''s time to really make a dent in their operations.\n\nTake out Metal Lord Mono-Han, of the mines.', '', '', '', '', '', '', 19865), -- -Unknown-
+(32281, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 86024, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Fleshcrafter''s End', 'Kill Fleshcrafter Goju outside the Ghost Iron Mines on the Isle of the Thunder King.', 'The mogu responsible for the torture of the agents, Fleshcrafter Goju, stands outside the mine.\n\nKilling him would be the only justice for what he''s done to your agents.', '', '', '', '', '', '', 19865), -- -Unknown-
+(32289, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 20488, 0, 94220, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Loot plans, kill boat captain', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32290, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 20488, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32291, 2, 90, 0, 90, 6507, 0, 0, 0, 6, 1, 228000, 6, 1, 6150, 0, 0, 0, 0, 0, 20488, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[PH] The Fall of Shan Bu', '[PH] Kill Shan Bu [Log Description]', '[PH] Kill Shan Bu [Description]', '', '', '', '', '', '[PH] Kill Shan Bu [Completion Text]', 19865), -- -Unknown-
+(32358, 0, 90, 0, 90, -61, 21, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 134574, 0, 0, 0, 35651584, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Soulcore', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32369, 2, 90, 0, 90, -396, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Secrets of the Past', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32458, 2, 90, 0, 90, -397, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 524288, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46095, 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, 890, 878, 0, 0, -1, 'With the Wind''s Blessing...', 'Collect Charms of Good Fortune.', '<An urgent plea reaches your ears.>$b$b$n! My father''s fleet is making its way to Pandaria. With favorable winds, they could arrive any moment.$b$bThe Pandaren have a blessing that will give us good luck with the weather and speed our ships to these shores. We just need to collect charms of good fortune to make it happen.$b$bAs our ships draw closer to the island, less charms will be required. But if you have enough, we can speed them here right away...', '', 'A summons from the Prince...', 'Anduin Wrynn', '', '', 'Speak to Anduin Wrynn at the Shrine of Seven Stars in the Vale of Eternal Blossoms. ', 19865), -- -Unknown-
+(32459, 2, 90, 0, 90, -397, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 524288, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40006, 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, 890, 878, 0, 0, 33555378, 'With the Wind''s Blessing...', 'Collect Charms of Good Fortune.', '<An urgent plea reaches your ears.>$b$b$n! The Horde fleet is making its way to Pandaria. With favorable winds, they could arrive any moment.$b$bThe Pandaren have a blessing that will give us good luck with the weather and speed our brothers and sisters to these shores. We simply need to collect charms of good fortune to gain fortune''s favor.$b$bAs our ships draw closer to the island, less charms will be required. But if you have enough, we can speed them here right away...', '', 'A summons from the Sunwalker...', 'Sunwalker Dezco', '', '', 'Speak to Sunwalker Dezco at the Shrine of Two Moons in the Vale of Eternal Blossoms. ', 19865), -- -Unknown-
+(32467, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Sacrificial Prevention [PH]', 'Kill 5 Zandalari Priests.', 'The Zandalari Priests in the town to the north prepare the bodies of our fallen allies for sacrifice.\n\nThe best way to prevent this from happening? Kill them. Kill them all.', '', '', '', '', '', 'Return to Dodge south of the Troll Town in Isle of the Thunder King.', 19865), -- -Unknown-
+(32468, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Disarming Axe Throwers [PH]', 'Collect 6 Edged Throwing Axes.', 'The Zandalari Edgetossers to the north are known for becoming fierce Pterodactyl riders and axe throwers. Even now, they train the Pterodactly Hatchlings to become ravenous beasts.\n\nPlease, dispatch of some of the Edgetossers and bring back some of their throwing axes so they cannot be used against us.', '', '', '', '', '', 'Return to Dodge south of the Troll Town in Isle of the Thunder King.', 19865), -- -Unknown-
+(32469, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Urging on Hatchlings [PH]', 'Frighten 12 Pterodactyl Hatchlings.', 'The Pterodactyl Hatchlings being trained by Zandalari to the north are not yet the violent and savage beasts they are to become.\n\nI believe we should save these creatures before the trolls corrupt them. If you could just frighten them off, perhaps some of them will be spared an unfortunate fate.', '', '', '', '', '', 'Return to Dodge south of the Troll Town in Isle of the Thunder King.', 19865), -- -Unknown-
+(32470, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 37748744, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Plundering Profferings [PH]', 'Collect 15 Plundered Profferings.', 'While the Zandalari perform live sacrifices, they will not offend their gods by sacrificing a life without also sacrificing offerings of food, treasure, and other items of value.\n\nRecover some of the offerings from cairns in the Troll Town to the north so we might delay their sacrifices further.', '', '', '', '', '', 'Return to Dodge south of the Troll Town in Isle of the Thunder King.', 19865), -- -Unknown-
+(32471, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Apple Crushing [PH]', 'Crush 20 apples.', 'The troops love cider. Hard cider. Before we can make any, we need to get all these apples crushed. Mind giving us a hand - or a foot - and crushing some of the apples in that vat behind me?', '', '', '', '', '', 'Return to Dodge south of the Troll Town in Isle of the Thunder King.', 19865), -- -Unknown-
+(32472, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Frighten Pterodactyls [PH]', 'Frighten 12 Pterodactyl Hatchlings.', 'The Pterodactyl Hatchlings being trained by Zandalari to the north are not yet the violent and savage beasts they are to become.\n\nI believe we should save these creatures before the trolls corrupt them. If you could just frighten them off, perhaps some of them will be spared an unfortunate fate.', '', '', '', '', '', 'Return to Dodge south of the Troll Town in Isle of the Thunder King.', 19865), -- -Unknown-
+(32475, 2, 90, 0, 90, 5842, 0, 0, 0, 0, 1, 456000, 8, 1, 0, 0, 0, 0, 0, 93660, 262144, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1435, 0, 0, 0, 0, 7, 0, 0, 0, 0, 50000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'A Spark of Life', 'Deliver the Thunder-Laced Egg to Yalia Sagewhisper on the Isle of Thunder.', 'The Thunder-Laced Egg burns your hand as you hold it. You recall that Yalia Sagewhisper of the Shado-Pan discussing the history of the Thundering Cloud Serpents, perhaps she will know what to do with it.', '', '', '', '', '', '', 19865), -- -Unknown-
+(32490, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 20488, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'UNUSED', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32504, 2, 20, 0, 15, 1519, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Mission: The Secrets of Stormwind', '', 'Send undercover forces into the heart of enemy territory in an effort to learn of their plans.', '', '', '', '', '', '', 19865), -- -Unknown-
+(32508, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 16392, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Welcome to the Island', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32516, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 20488, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Bloodletter', 'Kill Kaida the Bloodletter.', 'I have heard a disturbing report, $c.$B$BTo the south, in the Court of Bones, the mogu bring captives to a general named Kaida the Bloodletter.$B$BI will spare you the details, but he thrives on torturing his victims.$B$BThis monster must be stopped. If you fall to his blade, I wish you a swift death.', '', '', '', '', '', 'Return to Grand Magister Rommath at [Horde Hub] at the Isle of the Thunder King.', 19865), -- -Unknown-
+(32569, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 92060, 20488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92060, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 1387, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Trailing Light in the Dark', 'Relight 8 torches in the Diremoor.', 'There is some dark magic in the Diremoor that extinguishes even our magical illuminations, and so our scouts struggle to find their way.$B$BAs you pass through the swamp, relight any torches you find that our men might find their way. Perhaps they will help you find your way back as well.', '', '', '', '', '', 'Return to Warmage Yurias at the Violet Rise.', 19865), -- -Unknown-
+(32598, 2, 90, 0, 90, -344, 83, 0, 32805, 1, 1, 11400, 1, 1, 490, 0, 0, 0, 0, 0, 41943040, 256, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1359, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'A Reckoning', 'Speak with Wrathion upstairs at the Tavern in the Mists in the Veiled Stair.', 'The Thunder King is dead, and his instruments of oppression are being picked over by the Alliance and Horde for their own ends.$b$bWe come now to the climax of the pandaren campaign. Hellscream''s machinations have brought the Alliance down on his head - but even more importantly, he''s fractured the unity of the Horde. As the Pandaren say: "The Wok is Hot." Something is about to give, and all of our work comes down to this.$b$bI need time to plan. See me as soon as your faction is ready to make its move!', '', '', '', '', '', 'Speak with Wrathion upstairs at the Tavern in the Mists in the Veiled Stair.', 19865), -- -Unknown-
+(32622, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Intro Flight', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32630, 2, 90, 0, 90, 6590, 0, 0, 0, 1, 1, 11400, 1, 1, 490, 0, 0, 0, 0, 0, 136, 0, 94113, 94847, 0, 0, 1, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Chief Engineer Jard''s Journal', 'Investigate the Thunder Forges to find the Secrets of Stabilized Lightning.', 'What an unusual power source. Wonder how it works? And what it can be used to create?', '', '', '', '', '', 'Find the Secrets of Stabilized Lightning.', 19865), -- -Unknown-
+(32651, 2, 90, 0, 90, 6507, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 16392, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1387, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Intro Flight', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32720, 0, 90, 0, 90, 6507, 41, 0, 0, 0, 1, 0, 0, 1, 0, 0, 139047, 0, 0, 0, 2101256, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Choose Your Assignment', 'Kill 10 Kirin Tor units or players on the Isle of Thunder.', '', '', '', '', '', '', 'Return to Lor''themar Theron at the Dawnseeker Promontory.', 19865), -- -Unknown-
+(32784, 2, 90, 0, 90, 6720, 0, 0, 32932, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'On the Trail of Blood', 'Follow the trail of blood.', 'This orc appears to have made a last stand, dying while defending his fallen wolf. His clothes are that of the Frostwolf Clan.$B$BFrom the tracks and other signs it would appear there were six other wolves during the battle that got away, one bleeding. A trail of fresh blood leads off into the desert northward.', '', '', '', '', '', '', 19865), -- -Unknown-
+(32793, 2, 90, 0, 90, 6720, 0, 0, 32794, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Speak to Ga''nar', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32797, 2, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 143653, 0, 0, 0, 35667968, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'END OF PROTOTYPE! [Return to Durotan at Ogre Citadel]', 'Stay tuned for more thrilling adventures with Durotan, Ga''nar and the Frostwolf Clan!', 'Ah! The weapons of my father, Garad. Too long this beast has coveted them as trophies, memories of slaying our beloved chieftain. I thank you Outsider. Your help today has proven most useful indeed.$b$bNow I must bring these artifacts before my brother. The time has come for he and I to have a proper discussion about leadership.', '', '', '', '', '', 'Thank you for playing the prototype.', 19865), -- -Unknown-
+(32799, 3, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 143903, 0, 0, 0, 35667968, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Retrieve Scorpar Husk Fragments', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32800, 3, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 0, 5, 1, 0, 0, 0, 0, 0, 0, 34161152, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Retrieve Wooly Clefthoof Pelts', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32801, 3, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 143903, 0, 0, 0, 35667968, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Retrieve Thunderlord Insignias', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32802, 3, 90, 0, 90, 6720, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Retrieve Warm Frostpear Bulbs', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32873, 2, 90, 0, 90, 0, 0, 0, 0, 6, 1, 228000, 6, 1, 6150, 0, 0, 0, 0, 0, 128, 8, 98134, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Scenario Random (1st) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32874, 2, 90, 0, 90, 0, 0, 0, 0, 6, 1, 228000, 6, 1, 6150, 0, 0, 0, 0, 0, 128, 8, 98133, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Scenario Random (Nth) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32893, 2, 90, 0, 90, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Scenario Random (1st) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32894, 2, 90, 0, 90, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Scenario Random (1st) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32897, 2, 90, 0, 90, 0, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Selected Scenario', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32899, 2, 90, 0, 90, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Daily Scenario Random (Nth) (Mists)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32910, 2, 90, 0, 90, 6507, 0, 0, 0, 6, 1, 228000, 6, 1, 6150, 0, 0, 0, 0, 0, 4104, 0, 94219, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1387, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'reuse me', 'Kill the Master of the Forge and Collect a Codex Fragment from the Mogu Gatekeeper in the Isle of Thunder.', 'There''s more you must do. \n\nKill Itoka, master of the forge, and find a codex fragment from Fleshcrafter Hoku, gatekeeper of the Thunder King.', '', '', '', '', '', 'Return to <the questgiver>', 19865), -- -Unknown-
+(32914, 2, 90, 0, 90, 6720, 0, 0, 32795, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Return to Ga''nar', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32917, 2, 90, 0, 90, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Kyle Currency Test Quest', 'Get $oa Elder Charms of Good Fortune', 'This is to test the ''$ o a'' token.$b$bThis should show how many Elder Charms of Good Fortune the quest requires: $oa$b$bThat is all.', '', '', '', '', '', '', 19865), -- -Unknown-
+(32934, 3, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 0, 0, 0, 0, 34160640, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Scorpid Stomp', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32946, 2, 85, 0, 85, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'This Time, It''ll be Different', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(32982, 2, 92, 0, 90, 6720, 0, 0, 0, 5, 1, 122000, 5, 1, 29750, 0, 0, 0, 0, 0, 33570816, 64, 0, 0, 0, 0, 0, 0, 0, 0, 101774, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Scavengers of Flame', 'Rescue the Child of Fury at the Forge Gates.', 'I sense another child of the fury being consumed by the vile goren in a nearby nest.$b$bSearch the caves east of here for any signs of a goren nest. I suspect there will be quite alot of steam given the cold.$b$bI will try to locate the next child of the fury in your absence.', '', '', '', '', '', 'Speak with Drek''Thar at the Ice Forge in Frostfire Ridge.', 19865), -- -Unknown-
+(33008, 2, 87, 0, 87, 5840, 0, 0, 0, 3, 1, 51000, 3, 1, 775, 0, 0, 0, 0, 0, 262152, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1269, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Into the Vale', 'Speak to Madam Vee Luo at the Shrine of Two Moons in the Vale of Eternal Blossoms.', 'Ah, I have been waiting for your arrival, traveler.$B$BI wish we could meet in better times, but alas, I fear the situation in the Vale is quite dire.$B$BBut let us not speak of that now. Go visit Madam Vee Luo at the Shrine of Two Moons.$B$BShe should be able to settle you in.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33012, 3, 90, 0, 90, 6777, 0, 0, 0, 4, 1, 0, 0, 1, 3700, 0, 0, 0, 0, 0, 34160640, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Stonefang Outpost Fires', 'Pick up snowballs from Snow Mounds and throw them at burning structures in Stonefang Outpost.', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33015, 2, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 0, 0, 1, 13050, 0, 0, 0, 0, 0, 34160640, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Thunderlord War-Gronn', 'Slay 6 Thunderlord Giantslayers or Thunderlord Gronnstalkers around Kron''mar.', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33019, 2, 90, 0, 90, -304, 0, 0, 33020, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554432, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NC S1 Q2', '', 'Well hello there. I am Lin, Chao-Wei. Have you come here to try my family''s famous noodle soup? I''m afraid you''re all out of luck. My father passed away before he could teach me the secret ingredient to his secret ingredient noodle soup. He did mention writing down the recipe for a friend of his that went to the Temple of the Jade Serpent. Perhaps you can find it there?', '', '', '', '', '', '', 19865), -- -Unknown-
+(33023, 2, 90, 0, 90, -304, 0, 0, 33024, 1, 1, 11400, 1, 1, 490, 0, 0, 0, 0, 0, 33554432, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NC S1 Q6', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33025, 2, 90, 0, 90, -304, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554432, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NC S2 Q2', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33058, 2, 90, 0, 90, 6719, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 16392, 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, 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, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Collect Karabor Axes', 'Collect $1oa Karabor Weapons.', 'Some of our bravest champions have fallen today.$b$bTo make matters worse the Iron Horde has started using our own weapons against us. $b$bThe idea of my people being slain with the weapons forged by our ancestors makes me sick.$b$b$n, could you please retrieve these weapons and bring them back to me?', '', '', '', '', '', 'Return to Akclana Swifthoof at the Temple of Karabor in Shadowmoon Valley.', 19865), -- -Unknown-
+(33060, 2, 90, 0, 90, 6719, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 146085, 0, 0, 0, 136331272, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50232, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Put down Poisonfiend.', 'Kill Zugunk Poisonfiend', 'Zugunk Poisonfiend is to blame for this madness.$b$bHe has contaminated this temple and it is time for his reign of terror to end.', '', '', 'Zugunk Poisonfiend', '', '', 'Return to Aklana Swifthoof at the Temple of Karabor in Shadowmoon Valley.', 19865), -- -Unknown-
+(33067, 3, 90, 0, 90, 6719, 0, 0, 33060, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 606208, 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, 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, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Warsong Riot', 'Kill Warsong Ragemongers near the Temple of Katabor in Shadowmoon Valley.', 'The Warsong Ragemongers are attacking the temple!', '', '', '', '', '', 'Return to Captain Quest Giver at the Temple of Karabor in Shadowmoon Valley.', 19865), -- -Unknown-
+(33068, 3, 90, 0, 90, 6720, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Retrieve Thunderlord Armbands', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33108, 3, 90, 0, 90, 6719, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 606208, 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, 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, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Poisionous bunnies', 'Burn $1oa poisonous bunnies', 'A large number the bunnies in the area have been infected with a toxic poison.$B$BIt might seem cruel but burning the bodies of the bunnies is the only way to ensure the infection will not spread.', '', '', '', '', '', 'Return to Akclana Swifthoof at the Temple of Karabor in Shadowmoon Valley.', 19865), -- -Unknown-
+(33121, 2, -1, 0, 90, -394, 0, 0, 0, 0, 1, 154000, 5, 1, 0, 0, 0, 0, 0, 0, 33571072, 128, 101529, 101537, 0, 0, 3, 100, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'DEPRECATED The Celestial Tournament', 'Log description.', 'Description.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33122, 0, -1, 0, 90, -394, 0, 0, 0, 0, 1, 154000, 5, 1, 0, 0, 0, 0, 0, 0, 33571072, 128, 101529, 101537, 0, 0, 3, 100, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'DEPRECATED Great Job, You Won', 'Log description.', 'Description.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33123, 2, -1, 0, 90, -394, 102, 0, 0, 0, 1, 154000, 5, 1, 0, 0, 0, 0, 0, 0, 33603840, 0, 101529, 101537, 0, 0, 1, 100, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Celestial Tournament', 'Win the Celestial Tournament. Master Li can enter you into the tournament.', 'The Timeless Isle is home to a special tournament created to test the leadership of its participants. Those who prove their worth are granted an opportunity to befriend an embodiment of virtue - the progeny of the Celestials themselves.$b$bEach time you win the tournament, I will honor you with a single ceremonial coin. When you have enough coins, speak with me again to further discuss your reward.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33126, 3, 92, 0, 90, 6817, 0, 0, 0, 5, 1, 122000, 5, 1, 29750, 0, 0, 0, 0, 0, 16384, 8256, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Task: Clear Out Grimfrost Hill.', 'Kill ogres on Grimfrost Hill', 'Kill Grimfrost Ogres', '', '', '', '', '', '', 19865), -- -Unknown-
+(33129, 3, 90, 0, 90, 6719, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 606208, 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, 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, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Poisionous bunnies', 'Burn $1oa poisonous bunnies', 'A large number the bunnies in the area have been infected with a toxic poison.$B$BIt might seem cruel but burning the bodies of the bunnies is the only way to ensure the infection will not spread.', '', '', '', '', '', 'Return to Akclana Swifthoof at the Temple of Karabor in Shadowmoon Valley.', 19865), -- -Unknown-
+(33130, 3, 90, 0, 90, 6719, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 606208, 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, 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, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Poisionous bunnies', 'Burn $1oa poisonous bunnies', 'A large number the bunnies in the area have been infected with a toxic poison.$B$BIt might seem cruel but burning the bodies of the bunnies is the only way to ensure the infection will not spread.', '', '', '', '', '', 'Return to Akclana Swifthoof at the Temple of Karabor in Shadowmoon Valley.', 19865), -- -Unknown-
+(33131, 2, 90, 0, 90, 6719, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 146085, 0, 0, 0, 136331272, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50232, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Put down Poisonfiend.', 'Kill Zugunk Poisonfiend', 'Zugunk Poisonfiend is to blame for this madness.$b$bHe has contaminated this temple and it is time for his reign of terror to end.', '', '', 'Zugunk Poisonfiend', '', '', 'Return to Aklana Swifthoof at the Temple of Karabor in Shadowmoon Valley.', 19865), -- -Unknown-
+(33148, 2, 90, 0, 90, 6720, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 1130504, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Missing Hunting Party', 'xxxxxxx', 'xxxxxxx', '', '', '', '', '', 'Return to (questgiver) at the (Garrison) in Frostfire Ridge.', 19865), -- -Unknown-
+(33223, 3, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 0, 0, 0, 0, 16384, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Collect Ogre Queasine', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33224, 3, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 0, 0, 0, 0, 606208, 0, 104196, 0, 0, 0, 10, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Collect Ogre Queasine [FOR TESTING]', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33233, 2, 90, 0, 90, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 128, 8, 120334, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Short-Supply Reward', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33381, 2, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 0, 0, 0, 0, 34881576, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Death of a Tyrant', 'Defeat Gorr''thog in Bladespire Citadel.', 'It is good to see you survived the assault. The fortress is nearly ours!$B$BGa''nar and Durotan cleared the way to Gorr''thog''s chamber while you were freeing our wolves. Korga and I will make sure no ogres follow you up.$B$B$n, Gorr''thog is a mighty warrior. Hurry to them before it is too late!', '', '', '', '', '', '', 19865), -- -Unknown-
+(33395, 2, 90, 0, 90, 6720, 0, 0, 33339, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2182365184, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Speak to Thrall', 'Speak with Thrall.', 'Thrall has a plan for you to take out the catapults preventing us from gaining ground on the battlefield. Speak with him.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33400, 2, 90, 0, 90, 6720, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 34619400, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'General Problems', 'Speak to Commander Dorgosh.', 'My forces are spread thin. The Iron Horde batters our defenses endlessly.$B$BIf you really want to help, find my commanders on the front and help them hold the line.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33401, 2, 90, 0, 90, 6720, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570824, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Torg''s Trouble', 'Speak to Commander Torg.', 'My forces are spread thin. The Iron Horde batters our defenses endlessly.$B$BIf you really want to help, find my commanders on the front and help them hold the line.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33402, 2, 90, 0, 90, 6720, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570824, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Verick''s Vindicators', 'Speak to Commander Verick.', 'My forces are spread thin. The Iron Horde batters our defenses endlessly.$B$BIf you really want to help, find my commanders on the front and help them hold the line.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33449, 2, 91, 0, 90, 6720, 0, 0, 32994, 5, 1, 118000, 5, 1, 13050, 0, 0, 0, 0, 0, 33570816, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Northwestern Medicine', 'Gather 20 Redleaf Herbs from supply bags in Thunderfall.', 'There is an herb which grows in the crevices and crags of Frostfire Ridge, in places where the icy breath of the sky sips the boiling blood of the earth. Thunderlord climbers gather it often, for it has potent healing properties.$B$BLook for stores of these herbs in Thunderfall, and take what you can. Give them to me when next we meet, and they can be used to save lives in Stonefang.', '', '', '', '', '', 'Speak with Makar Stonebinder in Thunderfall.', 19865), -- -Unknown-
+(33510, 2, 96, 0, 95, 6662, 0, 0, 33912, 5, 1, 138000, 5, 1, 122800, 0, 0, 0, 0, 0, 33701888, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Unexpected Assault', 'Slay $1oa Bonechewer Orcs and direct $2oa Auchenai to safety in the Court of Souls.', 'My scouts have reported that the Bonechewer clan is attacking Auchindoun, $n. The Auchenai guard are here, but I fear they won''t be enough.$B$BI sense a dark presence nearby... we cannot chance leaving their defenses weak. Too much power lies within those hallowed halls.$B$BSlay the Bonechewer and direct any of the Auchenai injured back to their defensive line. I will direct my scouts throughout the area to try to ascertain the Bonechewers'' motives.', '', '', '', '', '', 'Return to Lady Liadrin at Liadrin''s Watch in Talador.', 19865), -- -Unknown-
+(33516, 2, 94, 0, 92, 6721, 0, 0, 33517, 5, 1.5, 195000, 5, 1.5, 114150, 0, 0, 0, 0, 107269, 33832960, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Un-Safety First', 'Disable 4 Safety Valves.', 'These plans were designed to be read by even the most unskilled of metallurgists. It has big symbols on specific pipes for what valves NOT to turn unless risking woeful amounts of destruction.', '', '', '', '', '', 'Speak with Durotan in the Warfuel Depot of Gorgrond.', 19865), -- -Unknown-
+(33522, 2, 96, 0, 95, 6662, 0, 0, 0, 5, 1, 138000, 5, 1, 122800, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Felblood', 'Collect $1oa Felblood Samples by killing Stormreaver Fearmongers in the Court of Lights in Talador.', 'Fascinating. The doomguard in the courtyard southwest of here have disguised themselves as orcs and do not die when defeated in battle.$B$BYou see, they are powerful magical beings, and their essence manifests nearby as a blood creature that revives its body upon reaching it.$B$BI would like to study these essences without dealing with the demons myself. Bring me a few samples, would you?', '', '', '', '', '', 'Return to Mage-Lord Astalor Bloodsworn at Liadrin''s Watch in Talador.', 19865), -- -Unknown-
+(33529, 2, 96, 0, 95, 6662, 0, 0, 0, 5, 1, 138000, 5, 1, 122800, 0, 0, 0, 0, 0, 38944768, 8256, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Nightmare in the Tomb', 'Investigate the ritual in the Tomb of Souls.', 'In the tomb... horrible... bodies everywhere...$B$BA dark ritual... please... you must stop it...', '', '', '', '', '', 'Speak to Lady Liadrin at Liadrin''s Watch in Talador.', 19865), -- -Unknown-
+(33534, 2, 93, 0, 92, 6721, 0, 0, 33599, 1, 1.5, 0, 0, 1.5, 7550, 0, 0, 0, 0, 0, 33832960, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Find D''kaan', 'Find Rangari D''kaan at Tailthrasher Basin in Gorgrond.', 'D''kaan''s nearby. He said something about unusual tracks. Hardly what we need to be focusing on at a time like this.$B$BWe need to leave soon. Help him, would you?', '', '', '', '', '', '', 19865), -- -Unknown-
+(33536, 2, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 0, 0, 1, 13050, 0, 0, 0, 0, 0, 38027264, 8256, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Element of Demise', 'Place Thrall''s totem at the center of the bridge.', 'The Frostwolves are a fierce and noble clan, but distrustful of outsiders.$b$bWe have arrived amidst their assault on a mighty ogre citadel. I will remain here to offer counsel to their chieftain, Durotan.$b$bYou are a proven hero of Azeroth, $n. Demonstrate your value to the Frostwolves. We need them as allies.$b$bUse my totem to thwart the ogre counterattack. This should serve to get their attention.$b$bThe rest is up to you.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33545, 2, 96, 0, 95, 6662, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Arkonite Crystals', 'Gather 8 Arkonite Crystals at the Overload Mine in Talador.', 'Mage-Lord Bloodsworn and I recently completed the first of our new blood golems. Once we''re in full production, we won''t need to risk lives in the field!Unfortunately, they still need a core power crystal.$B$BWe spotted a Draenei mine overrun with crystal-hungry Goren nearby. Do what you must to get enough crystals to power our golems!', '', '', '', '', '', 'Return to Mehlar Dawnblade at Liadrin''s Watch in Talador.', 19865), -- -Unknown-
+(33549, 2, 91, 0, 90, 6720, 0, 0, 33526, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570824, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Cost of Chaos', 'Find Lorgosh in Bladespire Citadel', 'Durotan had a plan.$b$bThere were many paths to victory, but his was the most wise. His would cost the least blood.$b$bHis brother, Ga''nar, is one of our most revered warriors, but he is prone to give in to blood lust. As the first Frostwolf fell, his temper won over his discipline. He ordered the bulk of our forces headlong into the citadel.$b$bThis is not the first time Durotan''s brother has abandoned reason, but it may be the most costly.$b$bFind them, stranger. Do what you can to salvage our assault.', '', '', '', '', '', 'Find Lorgosh in Bladespire Citadel', 19865), -- -Unknown-
+(33557, 2, 93, 0, 90, 6721, 0, 0, 0, 5, 1.5, 189000, 5, 1.5, 75700, 0, 0, 0, 0, 0, 35667976, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Muddy Waters', 'Find nutritious mud in the Spinebloom Spires to revive Jagahari.', '<Cough>$b$bNot feeling so strong... dehydrated...$b$b<Cough>$b$bNeed nutrients for leaves... need revenge...', '', '', '', '', '', 'Return to Jagahari at the Spinebloom Spires in Gorgrond.', 19865), -- -Unknown-
+(33562, 2, 91, 0, 90, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554432, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Trophy: Gorg''ak''s Obsidian Spines', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33577, 2, 95, 0, 90, 6662, 0, 0, 33740, 1, 1, 0, 0, 1, 10800, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'A New Threat', 'Speak with Crystal-Shaper Barum at the crossroads northwest of Aruuna.', 'Aruuna, a draenei mining settlement to the northeast, has been sacked. Strangely, it doesn''t sound like the work of the Iron Horde.$B$BMy scouts describe the attackers as "giant fire-breathing birdmen."$B$BI suppose nothing in this place should surprise me anymore...$B$B<QUESTGIVER points to her map.>$B$BRefugees have been seen fleeing along this road. Help them if possible, and learn whatever you can about the attackers.$B$Bif these "birdmen" are a threat, we need to know.', '', '', '', '', '', 'Speak with Crystal-Shaper Barum at the crossroads northwest of Aruuna.', 19865), -- -Unknown-
+(33588, 3, 92, 0, 92, 6662, 0, 0, 0, 5, 1, 122000, 5, 1, 29750, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Break Corrupt Deathweb Eggs', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33592, 2, 93, 0, 92, 6721, 0, 0, 0, 5, 1.5, 189000, 5, 1.5, 75700, 0, 0, 0, 0, 0, 33570816, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52623, 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, 890, 878, 0, 0, -1, 'Beastly Beastmaster', 'Defeat the Iron Beastmaster.', 'This clefthoof is beaten and dejected, mourning over its fallen mate. It refuses to heed the thrashes from its Beastmaster nearby.', '', 'He mercilessly beats his clefthoof.', 'The Iron Beastmaster', '', '', 'Speak with Kaz the Shrieker in Laughing Skull of Gorgrond.', 19865), -- -Unknown-
+(33659, 3, 96, 0, 94, 6662, 0, 0, 0, 5, 1, 138000, 5, 1, 122800, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Task: Put Down Poisoned Elekk', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33693, 2, 94, 0, 92, 6721, 0, 0, 0, 0, 1.5, 0, 0, 1.5, 0, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Tracking Quest: First Time at Capping Operation', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33709, 2, 93, 0, 92, 6721, 0, 0, 33711, 1, 1.5, 0, 0, 1.5, 7550, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Let''s Go!', 'Start the Tank.', 'We know that the Stonemaul have Yrel. We''re going to rescue her and we''re going to use this filthy ogre slavemaster to do it.$B$BIt''s time to go!', '', '', '', '', '', 'Speak with Vindicator Maraad at Spineling Crevice in Gorgrond.', 19865), -- -Unknown-
+(33713, 2, 93, 0, 92, 6721, 0, 0, 0, 5, 1.5, 189000, 5, 1.5, 75700, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'TASK: Kill Ogre Slavers', 'Kill $1oa Stonemaul ogres.', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33725, 2, 95, 0, 95, 6662, 0, 0, 0, 5, 1, 134000, 5, 1, 107950, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Avoid the Void', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33726, 3, 95, 0, 94, 6662, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570824, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Tuurem Task TBD', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33727, 2, 95, 0, 94, 6662, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Heal Up', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33732, 2, 95, 0, 94, 6662, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Sabotage Siege Weapons', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33737, 2, 95, 0, 94, 6662, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570824, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Strike While the Iron Is Hot', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(33746, 2, 93, 0, 90, 6721, 0, 0, 0, 5, 1, 126000, 5, 1, 50450, 0, 81040, 0, 0, 0, 35733512, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[DEPRECATED]Y''kish Joins the Party', 'Invite Rooter to join your party.', 'The little guy sure does look happy. It''s pretty clear he wants you to pet him. There is a spot right on the top of his head that isn''t totally covered in rotten meat.', '', '', '', '', '', 'Return to Rooter the Ravenous at Emberfall Lake in Gorgrond.', 19865), -- -Unknown-
+(33753, 2, 93, 0, 90, 6721, 0, 0, 0, 5, 1.5, 189000, 5, 1.5, 75700, 0, 0, 0, 0, 0, 35667968, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Y''kish the Wingless', 'Ask Y''kish to join your party.', 'I''m not sure where to go. Without Skreek I feel so lost.$b$bIt appears Swiftshadow and I have some soul-searching to do while we search for a new home.', '', '', '', '', '', 'Speak with Y''kishi at the Giant Cauldron in Gorgrond.', 19865), -- -Unknown-
+(33767, 2, 95, 0, 92, 6721, 1, 3, 0, 7, 1.5, 603000, 7, 1.5, 242900, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Thing in the Cave', 'Slay the Thing in the Cave, then loot its Dreadful Heart.', 'The note reads as follows:$b$b"It cannot be defeated. No matter how many troops we send at it, it seemingly cannot be destroyed.$b$b"We have lost too many lives as it is. I refuse to send another orc after that thing. Instead, we will establish a guard station outside the cave''s mouth to keep it from getting out."', '', '', '', '', '', 'Return the Dreadful Heart to Kaz the Shrieker at your caravan in Gorgrond.', 19865), -- -Unknown-
+(33829, 2, 91, 0, 90, 6720, 0, 0, 33784, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 37765120, 8256, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'zzOLD Honor Has its Rewards', '[PH] Receive a blessing from the Frostwolf Shamanstone.', '[PH] You have saved not only me, but our whole clan from the clutches of the Iron Horde.\n\nYou will find Shamanstones like the one beside me throughout our lands. They will now respond to your touch and you may receive a blessing from them while within Frostfire Ridge.', '', '', '', '', '', '[PH] Return to Durotan at Wor''gol in Frostfire Ridge', 19865), -- -Unknown-
+(33844, 2, 93, 0, 91, 6721, 104, 0, 0, 5, 1.5, 189000, 5, 1.5, 75700, 0, 81040, 0, 0, 0, 35667968, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Pale Hunter', 'Help Helga reclaim her sanity.', 'Spiders!$b$bWhere is my father!$b$bI feel so... so... good? Bad? Don''t judge me! Leave me alone! I''m sleeping... in my brain.$b$bAHH!! More bunnies!$b$b<The dwarves eyes are extremely dilated. She appears to be hallucinating. >', '', '', '', '', '', 'Read Helga''s Journal near the Forgotten Caves in Gorgrond.', 19865), -- -Unknown-
+(33877, 2, 95, 0, 94, 6662, 0, 0, 0, 5, 1, 134000, 5, 1, 107950, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Destroy Diggers [PH]', 'Collect 6 Solidified Goren Spit Samples from the Jorune Quarry.', 'This goren attack was horrible, but maybe we can learn from them. Maybe we can use this tragedy to our benefit.$b$bThe goren''s primary weapon is a metal melting spit. You''ll need to be careful in there, lest you loose that shiny armor!$b$bIt would be too dangerous to collect it when it''s fresh, but maybe once it''s solidified...$b$bSee if you can bring me a few samples.$b$bIf my hypothesis is correct we may be able to weaponize it against the Iron Horde.', '', '', '', '', '', 'Return to Crystal-Shaper Attica outside of the Jorune Quarry.', 19865), -- -Unknown-
+(33879, 2, 95, 0, 94, 6662, 0, 0, 0, 5, 1, 134000, 5, 1, 107950, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51883, 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, 890, 878, 0, 0, 33555378, 'Goren, Goren, Gone!', 'Destroy 15 Goren Stonechewers and their leader, Pastrok within the Jorune Quarry.', 'I was all set to take a little trip to the nearby quarry when all of the sudden a bunch of goren bust out of the ground and started wreaking havoc!$b$bIt would be a shame for all of those beautiful gems to be destroyed by those filthy creatures. All they do is eat them! Can you believe that?!$b$bBe a dear and dispose of them. Make sure you get rid of the leader or they will only come back.', '', '', 'Pastrok', '', '', 'Return to Crystal in Liadrin''s Watch.', 19865), -- -Unknown-
+(33880, 2, 95, 0, 94, 6662, 0, 0, 0, 5, 1, 134000, 5, 1, 107950, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Collect Crystals [PH]', 'Collect 10 Handfuls of Jorune Crystal Dust from within the Jorune Quarry', 'The gems and crystals here are amazing! They''re unlike anything I have ever seen. I''ve heard the Draenei can even trap memories within them.$b$bI have an idea that''s crazy, but it just might work!$b$bI need crystal dust from the Jorune Quarry. I''m going to try and make mood gems with it. If the Draenei can trap a memory, how hard could it be to trap a mood?$b$bThey''ll be beautiful and effective!', '', '', '', '', '', 'Return to Crystal in Liadrin''s Watch.', 19865), -- -Unknown-
+(33881, 2, 95, 0, 94, 6662, 0, 0, 0, 5, 1, 134000, 5, 1, 107950, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Can''t Live With ''Em, Can''t Learn Without ''Em', 'Rescue 8 Jorune Miners from within the Jorune Quarry.', 'The Draenei here are so in touch with the light. It''s imperative that we learn as much as we can from them.$b$bWe must find a way to overcome their distrust in us...$b$bThe Jorune Quarry was attacked by goren leaving many helpless miners trapped within. The miners aren''t fighters and would probably appreciate help from anywhere at this point.$b$bMaybe if you lend a hand in rescuing them, we may earn ourselves some goodwill.', '', '', '', '', '', 'Return to Salindra Lightsworn in Liadrin''s Watch.', 19865), -- -Unknown-
+(33908, 2, 96, 0, 95, 6662, 0, 0, 33530, 5, 1, 138000, 5, 1, 122800, 0, 0, 0, 0, 0, 33701888, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Power Shards', 'Retrieve the Shard of Souls in the Tomb of Souls.', 'I know what the Bonechewer are after.$B$BAuchindoun is protected by a powerful barrier, which can only be disabled using an ancient key. No being could ever hope to penetrate it.$B$BThe Auchenai, my people, split the key into three shards long ago and hid each piece outside the mausoleum walls. We guard those shards with the same zeal as Auchindoun itself.$B$BGo into the Tomb of Souls and retrieve the key from Soulbinder X. The shards are no longer safe.', '', '', '', '', '', 'Return to Soulbinder Nyami at Liadrin''s Watch in Talador.', 19865), -- -Unknown-
+(33913, 2, 96, 0, 95, 6662, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Desperate Times', 'Ride to the Tomb of Lights with Lady Liadrin.', 'This alliance between the Bonechewer and Teron''gore does not bode well.$B$BWe cannot allow the remaining two key fragments to fall into their hands. The Auchenai cannot stop the onslaught, so the duty falls on us.$B$BLet us waste no time. We ride for the Tomb of Lights at once.', '', '', '', '', '', 'Speak to Lady Liadrin at the Tomb of Lights in Talador.', 19865), -- -Unknown-
+(33921, 2, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Stolen Axes', 'Recover $1oa Stolen Frostwolf Axes.', 'The saberon usually keep to themselves, but sometimes they range out of their dens and attack.\n\nA pride of them live in the Windswept Lowland and have been coming too close for comfort, especially at night.\n\nThey even attacked a shipment of axes and took them back to their den!', '', '', '', '', '', 'Return to Supplymaster Eri', 19865), -- -Unknown-
+(33924, 2, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53497, 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, 890, 878, 0, 0, -1, 'Saberon Matriarch', 'Slay the Saberon Pridematron.', 'The current matriarch of the Windswept Lowland saberon pride is bold.\n\nShe leads her pride in ambushes and attacks that some consider organized raids on our supply lines.\n\nThe intelligence she displays is becoming a legitimate threat.\n\nTake her out and perhaps she''ll be replaced with a less dangerous leader.', '', '', 'Saberon Pridematron', '', '', 'Return to Supplymaster Eri', 19865), -- -Unknown-
+(33932, 2, 100, 0, 100, 6720, 0, 0, 0, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 0, 33570824, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Avoiding Starvation', 'Collect 4 Battleboar Tenderloins for the Cooking Pot.', '<You notice that this Cooking Pot is filled with boiling water containing twigs and ruffage. The corpse of a Bloodmaul Battleboar lays nearby, picked clean to the bone. $b$bIf you were to obtain fresh meat it would greatly aid the wounded and starving Frostwolf Slaves.>', '', '', '', '', '', '', 19865), -- -Unknown-
+(33934, 2, 100, 0, 100, 6720, 0, 0, 33941, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 0, 33570824, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Avenging The Fallen', 'Slay 15 Bloodmaul Brutes, 5 Bloodmaul Geomancers, and 1 Bloodmaul Pit Boss.', 'I tried to warn my people that any escape attempt would be futile until we receive reinforcements. My heart is heavy with guilt that I was unable to stop them.$b$bThe blood of my clan demands justice, $n!$B$BAs my people toil in the mines or lay dead in the snow, the Bloodmaul walk amongst us unscathed. Meet them in combat and redeem the honor of my fallen kin!', '', '', '', '', '', 'Return to Rogash for your reward.', 19865), -- -Unknown-
+(33939, 2, 100, 0, 100, 6720, 0, 0, 33941, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 0, 33570824, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Destroying Their Supplies', 'Destroy the Mining Supplies.', 'The ogres have been pillaging Mining Supplies from trade caravans to equip their slaves for work.$b$b<Rogash spits upon the ground>$b$bIf you can destroy the stolen Mining Supplies within the camp, the remaining slaves will not have to toil so tirelessly against the rocks.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33943, 2, 91, 0, 90, 6720, 0, 0, 33125, 3, 1, 29500, 2, 1, 6500, 0, 0, 0, 0, 0, 33832960, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Outrider Urukag', 'Join Urukag on his hunt.', 'I can''t believe I''m stuck here cooking while Urukag is out there hunting with the others.$b$bIf you hurry you might still be able to catch him, $n.', '', '', '', '', '', 'Join Urukag near Grimfrost Hill in Frostfire Ridge.', 19865), -- -Unknown-
+(33951, 2, 96, 0, 95, 6662, 0, 0, 33970, 1, 1, 13800, 1, 1, 12250, 0, 0, 0, 0, 0, 33832960, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Deathweb Hollow', 'Find Mehlar Dawnblade in Deathweb Hollow.', 'While you were retrieving the Shard of Lights and stopping the demons in the Tomb of Lights, I sent Mehlar and Althos to Deathweb Hollow to handle the corrupt spiders there.$B$BThey haven''t returned, so I am left with no choice but to ask you to go in after them and get the job done.$B$BWe cannot just let the fel taint sweep across the land unchecked. I refuse to let this world fall to demons.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33952, 2, 92, 0, 90, 6720, 0, 0, 0, 5, 1, 122000, 5, 1, 29750, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Hunting Party', 'Find the Frostwolf Hunters in the Windswept Lowland.', 'Korga and her brothers have been out hunting for days and have not returned.$b$bThis is a common problem amongst our clan.$b$bCall them in so they can get some proper rest.', '', '', '', '', '', 'Return to Krunk at the Muster Field in Frostfire Ridge.', 19865), -- -Unknown-
+(33954, 2, 100, 0, 100, 6720, 0, 0, 0, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 108746, 33570824, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Bloodmaul Scheme', 'Deliver the Ogre Plans to Rogash.', '<This parchment contains crudely written notes detailing the Bloodmaul Clan''s future plans.$b$bRogash will know what to do with this information.>', '', '', '', '', '', '', 19865), -- -Unknown-
+(33956, 2, 100, 0, 100, 6720, 0, 0, 33928, 1, 1, 15400, 1, 1, 14650, 0, 0, 0, 0, 0, 33570824, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Missing Frostwolves', 'Search Bloodmaul for the missing Frostwolves.', '$n, I''m glad you''re here.$B$BSeveral Frostwolf patrols have gone missing recently around the Bloodmaul Compound. Search the area around Bloodmaul and report back to me when you''re done.', '', '', '', '', '', '', 19865), -- -Unknown-
+(33957, 2, 92, 0, 90, 6720, 0, 0, 0, 5, 1, 122000, 5, 1, 29750, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'A Gift for Raa''la', 'Collect a Baby Rylak for Raa''la in the Windswept Lowlands.', 'I need to pack up this kill. I promised my daughter Raa''la I would bring her home a gift from the hunt.$b$bThere are a couple baby Rylaks in the cave nearby. Maybe Raa''la would like one as a pet?$b$bWould you mind catching one while I finish up here?', '', '', '', '', '', 'Return to Rakla at the Windswept Lowlands in Frostfire Ridge.', 19865), -- -Unknown-
+(33959, 2, 100, 0, 100, -401, 0, 0, 0, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 0, 38813696, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'You Sunk My Battleship!', 'Plant the Underwater Explosives on the Iron Horde boats.', 'They sunk my battleship, $n!$b$bI drove her in with a cargo of underwater explosives to place on the Iron Horde ships, but they spotted me and opened fire! Luckily I was able to salvage most of the explosives before she sank. Ain''t nobody sinks my ship and gets away with it...nobody!$b$bTake the rest of the underwater charges and plant all of ''em on the western Battleship. You''ll have to swim your way into the harbor to avoid detection.$b$bWhen you''re done, swim into shore. I''ll be waiting on the path!', '', '', '', '', '', 'Meet Ticker inside Grommar harbor.', 19865), -- -Unknown-
+(33968, 2, 95, 0, 94, 6662, 0, 0, 0, 5, 1, 134000, 5, 1, 107950, 0, 0, 0, 0, 108777, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Goren Boss Kill and Collect', '', '<Light bounces from within the gem creating rainbows on the nearby walls.>$b$bThis curious looking gem seems to have fallen from Pastrok''s back. Perhaps a skilled gem-shaper or jewelcrafter would have a use for it.', '', '', '', '', '', 'Return the gem to a nearby crystal-shaper or jewelcrafter.', 19865); -- -Unknown-
+
+INSERT INTO `quest_template` (`Id`, `QuestType`, `QuestLevel`, `QuestPackageID`, `MinLevel`, `QuestSortID`, `QuestInfoID`, `SuggestedGroupNum`, `RewardNextQuest`, `RewardXPDifficulty`, `Float10`, `RewardMoney`, `RewardMoneyDifficulty`, `Float13`, `RewardBonusMoney`, `RewardDisplaySpell`, `RewardSpell`, `RewardHonor`, `RewardKillHonor`, `StartItem`, `Flags`, `FlagsEx`, `RewardItem1`, `RewardItem2`, `RewardItem3`, `RewardItem4`, `RewardAmount1`, `RewardAmount2`, `RewardAmount3`, `RewardAmount4`, `ItemDrop1`, `ItemDrop2`, `ItemDrop3`, `ItemDrop4`, `ItemDropQuantity1`, `ItemDropQuantity2`, `ItemDropQuantity3`, `ItemDropQuantity4`, `RewardChoiceItemID1`, `RewardChoiceItemID2`, `RewardChoiceItemID3`, `RewardChoiceItemID4`, `RewardChoiceItemID5`, `RewardChoiceItemID6`, `RewardChoiceItemQuantity1`, `RewardChoiceItemQuantity2`, `RewardChoiceItemQuantity3`, `RewardChoiceItemQuantity4`, `RewardChoiceItemQuantity5`, `RewardChoiceItemQuantity6`, `RewardChoiceItemDisplayID1`, `RewardChoiceItemDisplayID2`, `RewardChoiceItemDisplayID3`, `RewardChoiceItemDisplayID4`, `RewardChoiceItemDisplayID5`, `RewardChoiceItemDisplayID6`, `POIContinent`, `POIx`, `POIy`, `POIPriority`, `RewardTitle`, `RewardTalents`, `RewardArenaPoints`, `RewardSkillLineID`, `RewardNumSkillUps`, `PortraitGiver`, `PortraitTurnIn`, `RewardFactionID1`, `RewardFactionID2`, `RewardFactionID3`, `RewardFactionID4`, `RewardFactionID5`, `RewardFactionValue1`, `RewardFactionValue2`, `RewardFactionValue3`, `RewardFactionValue4`, `RewardFactionValue5`, `RewardFactionOverride1`, `RewardFactionOverride2`, `RewardFactionOverride3`, `RewardFactionOverride4`, `RewardFactionOverride5`, `RewardFactionFlags`, `RewardCurrencyID1`, `RewardCurrencyID2`, `RewardCurrencyID3`, `RewardCurrencyID4`, `RewardCurrencyQty1`, `RewardCurrencyQty2`, `RewardCurrencyQty3`, `RewardCurrencyQty4`, `AcceptedSoundKitID`, `CompleteSoundKitID`, `AreaGroupID`, `TimeAllowed`, `AllowableRaces`, `LogTitle`, `LogDescription`, `QuestDescription`, `AreaDescription`, `PortraitGiverText`, `PortraitGiverName`, `PortraitTurnInText`, `PortraitTurnInName`, `QuestCompletionLog`, `VerifiedBuild`) VALUES
+(34004, 2, 93, 0, 92, 6721, 0, 0, 34005, 1, 1.5, 0, 0, 1.5, 7550, 0, 0, 0, 0, 0, 33832960, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Hansel, Report', 'Speak with Hansel Heavyhands at Bastion Rise in Gorgrond.', 'I have Hansel directing our counter-fire against the Iron Horde''s war machines.$B$BI need to know what''s going on and why some of the orcs slipped through. He''s down the hill to the north.', '', '', '', '', '', '', 19865), -- -Unknown-
+(34006, 2, 93, 0, 92, 6721, 0, 0, 0, 5, 1.5, 189000, 5, 1.5, 75700, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Build Us A Backdoor', 'Help Nightstalker find a weak spot in the Stonemaul Slave Camp walls.', 'According to the prisoner here, the Stonemaul ogres are providing slaves and supplies to the Iron Horde. No creature should live a life in chains! And to add insult to injury, Orgrim Doomhammer is here to discuss terms with them!$b$bI sent my wolf Nightstalker ahead to find a weakness. If there is another way in, he will find it.$b$BGo, find my wolf near walls of the Stonemaul camp south of here. Test their defenses.$b$bIf you cannot find us a way in, then make one.', '', '', '', '', '', 'Speak with Durotan at the Stonemaul Slave Camp in Gorgrond.', 19865), -- -Unknown-
+(34008, 2, 93, 0, 92, 6721, 0, 0, 34009, 5, 1.5, 189000, 5, 1.5, 75700, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'We Are Leaving!', '', 'We have who we came for. Find the others. Tell them to get back to the caravan as soon as possible.$b$bIt will not be long before the ogres figure out how few of us there actually are. We will wait for you at the front gates.', '', '', '', '', '', '', 19865), -- -Unknown-
+(34014, 2, 96, 0, 95, 6662, 0, 0, 0, 5, 1, 138000, 5, 1, 122800, 0, 156875, 0, 0, 0, 35667968, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Shard of Shadows', 'Take the Shard of Shadows from Vorpil Ribcleaver in Telmor.', 'The entire thing was a damned distraction!$B$BWhile we were dealing with matters in the hollow, Teron''gor''s forces launched an attack on Telmor to the west and slaughtered the entire town!$B$B$n, we already have two of the three shards of the key to Auchindoun. I refuse to let these savages have the third shard, let them devour my people or let Teron''gor devour more souls and grow stronger still.$B$BYou know what to do. Find the assault''s leader and take the shard from his lifeless corpse!', '', '', '', '', '', 'Speak to Lady Liadrin at Hub 3.', 19865), -- -Unknown-
+(34015, 2, 96, 0, 95, 6662, 0, 0, 0, 5, 1, 138000, 5, 1, 122800, 0, 156876, 0, 0, 0, 3293184, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Invasion of the Soul Eaters', 'Use torches from a forge to burn $2oa body piles in Telmor.', '<The note is scrawled hurriedly across the parchment.>$B$BTelmor is lost. The Bonechewer orcs have allied with demons.$B$BThe orcs are eating our dead and feeding the souls to their leader. There is blood on my hands...$B$BPlease, if anyone reads this message, burn the bodies of our fallen so our enemy cannot use them...$B$B- Restalaan, Captain of the Guard', '', '', '', '', '', 'Speak to Restalaan in Telmor.', 19865), -- -Unknown-
+(34016, 2, 96, 0, 95, 6662, 0, 0, 0, 5, 1, 138000, 5, 1, 122800, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Never Forget', 'Recover the Telmor Registry and Leafshadow in Telmor.', 'If you are reading this, I may have passed.$B$BOrc raids have become more frequent near Telmor, and other cities across the land have reported similarly.$B$BI fear the drums of war may soon echo through these woods. Should such travesty befall the good people of Telmor, I have but one request.$B$BBring Leafshadow, our town''s sacred crystal, and our town registry to safety, so we may account for our fallen and keep them safe.$B$B- Guard Captain Restalaan', '', '', '', '', '', 'Speak to Restalaan in Telmor.', 19865), -- -Unknown-
+(34063, 2, 92, 0, 90, 6720, 0, 0, 34066, 1, 1, 12200, 1, 1, 3000, 0, 0, 0, 0, 0, 33816584, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Enemies Above', 'Speak with Scout Ruk''gan near the Bones of Agurak.', 'We have dealt a crushing blow to the Thunderlords with the death of the Iron Wolf $n, but we can not rest yet.$B$BThe Thunderlord generals will be fighting like caged wolves to maintain their place in the Iron Horde and that means bad news for us.$b$bI sent Scout Ruk''gan to keep an eye on their movements but he hasn''t reported back for some time now. If you would help us then seek out Ruk''gan. $B$B Lok''tar $n!', '', '', '', '', '', '', 19865), -- -Unknown-
+(34074, 3, 91, 0, 90, 6719, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 81040, 0, 0, 0, 40452096, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Iron March', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34083, 2, 76, 0, 75, 6662, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'REUSE', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34100, 2, 96, 0, 95, 6662, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Desperate Measures', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34121, 2, 96, 0, 95, 6662, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Shard of Shadows', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34141, 3, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 81040, 0, 0, 0, 7356416, 8256, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Frostboar Frenzy', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34150, 2, 90, 0, 90, 6721, 0, 0, 0, 5, 1.5, 171000, 5, 1.5, 7400, 0, 0, 0, 0, 0, 33570816, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[Deprecated] Treasure: Gorgrond Treasure', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34158, 2, 96, 0, 95, 6662, 0, 0, 34159, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Auchindoun Must Not Fall', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34159, 2, 96, 0, 95, 6662, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53954, 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, 890, 878, 0, 0, 33555378, 'The Betrayal', '', '', '', '', 'Hurkan Skullsplinter', '', '', '', 19865), -- -Unknown-
+(34175, 2, 90, 0, 90, 6721, 0, 0, 0, 5, 1.5, 171000, 5, 1.5, 7400, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[Deprecate] Treasure: Gorgrond Treasure 09', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34178, 2, 90, 0, 90, 6721, 0, 0, 0, 5, 1.5, 171000, 5, 1.5, 7400, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[Deprecate]Treasure: Gorgrond Treasure 08', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34180, 2, 90, 0, 90, 6721, 0, 0, 0, 5, 1.5, 171000, 5, 1.5, 7400, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[Deprecated] Treasure: Gorgrond Treasure 02', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34181, 2, 100, 0, 100, 6719, 0, 0, 0, 5, 1, 154000, 5, 1, 146300, 0, 156898, 0, 0, 109557, 40910848, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Mutation Station', 'Assist Grulk in destroying the Mutation Lab by administering the Mutation Serum to him.', 'Grulk very weak...barely stand.$b$bGrulk not always look this way. Grulk once was orc...Iron Horde make Grulk mutant. Grulk angry at Iron Horde...so Iron Horde lock Grulk in cage...hurt Grulk.$b$bGrulk HATE Iron Horde...Grulk want SMASH them...make them PAY!$b$bTake serum...use on Grulk to make Grulk strong! Help Grulk SMASH Iron Horde!', '', '', '', '', '', '', 19865), -- -Unknown-
+(34212, 2, 90, 0, 90, 6721, 0, 0, 0, 5, 1.5, 171000, 5, 1.5, 7400, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Treasure: Gorgrond Treasure', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34217, 2, 100, 0, 100, -403, 0, 0, 0, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Smash Blon''sky!', 'Defeat Blon''sky.', 'Grulk not choose to be mutated. Grulk not monster like Blon''sky! Blon''sky evil... chose mutation for power!$b$bYou go to Grommar? Smash Blon''sky before he hurt innocents, make Grulk happy!', '', '', '', '', '', 'Return to Grulk in your Garrison.', 19865), -- -Unknown-
+(34237, 2, 96, 0, 95, 6662, 0, 0, 0, 5, 1, 138000, 5, 1, 122800, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Payback', 'Take the Shard of Shadows from Vorpil Ribcleaver in Telmor.', 'The entire thing was a damned distraction!$B$BWhile we were dealing with matters in the hollow, Teron''gor''s forces launched an attack on Telmor to the west and slaughtered the entire town!$B$B$n, we already have two of the three shards of the key to Auchindoun. I refuse to let these savages have the third shard, let them devour my people or let Teron''gor devour more souls and grow stronger still.$B$BYou know what to do. Find the assault''s leader and take the shard from his lifeless corpse!', '', '', '', '', '', 'Speak to Exarch Maladaar at Hub 3.', 19865), -- -Unknown-
+(34244, 2, 100, 0, 100, -403, 0, 0, 34245, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'They Took My Father', 'Collect Anchorite Dolruu''s three notes.', '$p! I have a lead on what happened to my father. There have been reports that he was seen in the presence of Shadow Council orcs in ____.$b$bMy father was a powerful Anchorite with a vast amount of ancient knowledge. I dread to think what those within the Shadow Council would do to him to get that knowledge. $b$bCan you go to ___? Hunt down their officers and see what they know?', '', '', '', '', '', 'Return to Anchorite Raleen in your garrison.', 19865), -- -Unknown-
+(34267, 3, 100, 0, 100, 6719, 0, 0, 0, 5, 1, 154000, 5, 1, 146300, 0, 81040, 0, 0, 0, 41504768, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Grommar Forces', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34268, 3, 92, 294, 92, 6720, 0, 0, 0, 5, 1, 122000, 5, 1, 29750, 0, 0, 0, 0, 0, 38354944, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 3785, 0, -1, 'Task: Kill Wildlife', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34269, 3, 92, 173, 92, 6720, 0, 0, 0, 5, 1, 122000, 5, 1, 29750, 0, 0, 0, 0, 0, 38354944, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 749, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 3785, 0, -1, 'Task: Kill Wolf Boss', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34282, 2, 100, 0, 100, 6720, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '<UNUSED>', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34283, 2, 100, 0, 100, 6720, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '<UNUSED>', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34307, 2, 100, 0, 100, 6720, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '<UNUSED>', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34308, 2, 100, 0, 100, 6720, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '<UNUSED>', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34317, 2, 100, 0, 100, 6720, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '<UNUSED>', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34327, 3, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 0, 0, 0, 0, 34160640, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Bonus Objective: Kill Ogron', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34343, 3, 92, 0, 92, 6720, 0, 0, 0, 5, 1, 122000, 5, 1, 29750, 0, 0, 0, 0, 0, 38354944, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 3796, 0, -1, 'Bonus Objective: Kill Frostiron Magnaron', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34360, 3, 99, 0, 99, 6867, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 34144256, 512, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'SHWAYDER TEST', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34376, 2, 90, 0, 90, 6720, 0, 0, 34378, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 824, 0, 0, 0, 1, 0, 0, 0, 890, 878, 0, 0, -1, 'Ore Not to Be', 'Kill Munch.', 'Okay, commander, here''s the deal. You''re gonna want spikes and all sorts of cool stuff on your garrison, right? To get started, we''ll need some ore from a nearby cave.\n\nCheck out that cave to the southeast of us. Knowing what I know from being here for a no time at all, I bet there''s something big and nasty inside.\n\nTake care of it and the peons will get the ore for ya.', '', '', '', '', '', 'Return to Gazlowe at your Garrison in Frostfire Ridge', 19865), -- -Unknown-
+(34377, 2, 90, 0, 90, 6720, 0, 0, 34375, 4, 1, 86000, 4, 1, 3700, 0, 0, 0, 0, 0, 33554440, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Portal Home', '', '[Ph] Khadgar is willing to open a portal to Azeroth, if only briefly, to get some of those we need to secure our foothold here.', '', '', '', '', '', '', 19865), -- -Unknown-
+(34413, 2, 92, 0, 90, 6721, 0, 0, 0, 5, 1, 122000, 5, 1, 29750, 0, 0, 0, 0, 0, 33554432, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Lumberstruck', 'Protect your peasants as they gather 100 lumber.', '[Test Quest - Do Not Translate]$b$bThis box is empty, begging to be filled with wood.$b$bProtect your peasants as they gather materials from the region.', '', '', '', '', '', 'Return to your lumber cart in Gorgrond.', 19865), -- -Unknown-
+(34424, 2, 90, 0, 90, -402, 0, 0, 34425, 0, 1, 0, 0, 1, 0, 0, 159388, 0, 0, 0, 574636040, 73728, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Chase is On', 'Get to the Kargathar Proving Grounds.', 'Come on, let''s move! Ariok''s heroism can only buy us so much time.', '', '', '', '', '', 'Speak with Archmage Khadgar at the Kargathar Proving Grounds.', 19865), -- -Unknown-
+(34441, 2, 90, 0, 90, -402, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570824, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Fewer, the Merrier', 'Slay 12 Blackrock Grunts.', 'We''re vastly outnumbered down here, but at least we have the element of surprise.$b$bFor now.$b$bEvery Blackrock orc we slay in this quarry reduces the probability that we will be overwhelmed later. Go, and thin their ranks before they thin ours.', '', '', '', '', '', 'Return to Cordana Felsong at the Blackrock Quarry in Tanaan Jungle.', 19865), -- -Unknown-
+(34454, 2, 99, 0, 99, -401, 0, 0, 0, 6, 1, 300000, 6, 1, 175000, 0, 0, 0, 0, 0, 33636360, 73728, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Mind Controlled Rylaks', 'xxxxx', 'xxxxx', '', '', '', '', '', 'xxxxx', 19865), -- -Unknown-
+(34457, 3, 100, 0, 100, 6720, 0, 0, 0, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 0, 34164736, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Bonus Objective: Ogron-Be-Gone', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34459, 2, 96, 0, 95, 6662, 0, 0, 34351, 5, 1, 138000, 5, 1, 122800, 0, 0, 0, 0, 0, 33701888, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Powering the Defenses', 'Retrieve the Shard of Souls in the Tomb of Souls.', 'I know what the Bonechewer are after.$B$BAuchindoun is protected by a powerful barrier, which can only be disabled using an ancient key. No being could ever hope to penetrate it.$B$BThe Auchenai, my people, split the key into three shards long ago and hid each piece outside the mausoleum walls. We guard those shards with the same zeal as Auchindoun itself.$B$BGo into the Tomb of Souls and retrieve the key from Soulbinder X. The shards are no longer safe.', '', '', '', '', '', 'Return to Soulbinder Nyami at the Auchindoun North Gate in Talador.', 19865), -- -Unknown-
+(34474, 2, 99, 0, 99, -401, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 34619400, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Follow Spirit', 'xxxxx', 'xxxx', '', '', '', '', '', 'xxxxx', 19865), -- -Unknown-
+(34499, 3, 90, 0, 90, 6720, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 34160640, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Bonus Objective: Kill Malevolent Breath', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34500, 3, 91, 0, 90, 6720, 0, 0, 0, 5, 1, 118000, 5, 1, 13050, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Bonus Objective: Kill Ogron', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34502, 3, 92, 0, 90, 6720, 0, 0, 0, 5, 1, 122000, 5, 1, 29750, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Bonus Objective: Kill Pale', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34509, 2, 90, 0, 90, -402, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 161695, 0, 0, 0, 39862280, 73730, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Into the Jaws of the Jungle', 'Move further into Heartblood.', 'We''ve freed enough prisoners that I feel we''re strong enough to move forward as a group. We cannot stay here long - Grommash Hellscream will be on our tail soon enough.$b$bLet me know when you''re ready, and we''ll press on.', '', '', '', '', '', 'Speak with Archmage Khadgar at the Bleeding Altar in the Tanaan Jungle.', 19865), -- -Unknown-
+(34524, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Spires of Arak Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34525, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Bloodmaul Slag Mines Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34526, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Iron Docks Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34527, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Draenor Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34528, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shadowmoon Burial Grounds Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34529, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Iron Depot Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34530, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shaper Dungeon [PH] Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34531, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Upper Blackrock Spire Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34533, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Bloodmaul Slag Mines Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34534, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Bloodmaul Slag Mines Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34535, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Bloodmaul Slag Mines Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34536, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Iron Docks Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34537, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Iron Docks Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34538, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Iron Docks Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34539, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Draenor Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34540, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Draenor Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34541, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Draenor Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34542, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Spires of Arak Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34543, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Spires of Arak Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34544, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Spires of Arak Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34545, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shadowmoon Burial Grounds Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34546, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shadowmoon Burial Grounds Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34547, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shadowmoon Burial Grounds Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34548, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Iron Depot Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34549, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Iron Depot Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34550, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Iron Depot Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34551, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shaper Dungeon [PH] Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34552, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shaper Dungeon [PH] Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34553, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Shaper Dungeon [PH] Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34554, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Upper Blackrock Spire Challenge Mode - Bronze Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34555, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Upper Blackrock Spire Challenge Mode - Silver Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34556, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Upper Blackrock Spire Challenge Mode - Gold Addition (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34588, 2, 91, 0, 90, 6720, 0, 0, 0, 1, 1, 11800, 1, 1, 1300, 0, 0, 0, 0, 0, 33832968, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 824, 0, 0, 0, 10, 0, 0, 0, 890, 878, 0, 0, -1, 'The Bounty of Bladespire', 'Speak with Gazlowe at your Garrison in Frostfire Ridge', 'The sacking of this fortress is as much your victory as ours. It is only fair you should share in the bounty.$b$bI will have resources set aside as we find them. All you need do is report to your garrison and have them dispatch peons to collect these materials.', '', '', '', '', '', 'Speak with Gazlowe at your Garrison in Frostfire Ridge', 19865), -- -Unknown-
+(34591, 2, 90, 0, 90, 6719, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 37765128, 73728, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[Deprecated] Clearing out the Shadows', 'xxxxxx', 'xxxxxx', '', '', '', '', '', 'xxxxx', 19865), -- -Unknown-
+(34602, 2, 90, 0, 90, 6719, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 37765128, 73728, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Kill Goren', 'xxxxxx', 'xxxxxx', '', '', '', '', '', 'xxxxx', 19865), -- -Unknown-
+(34623, 2, 100, 0, 94, 6662, 0, 0, 0, 1, 1, 15400, 1, 1, 14650, 0, 0, 0, 0, 0, 33554440, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, '<UNUSED>', 'Find Master Smith Ared at the Quarry in Talador.', '[PH] Now that we have the armory built we''re going to need some skilled hands to run it.$bI''ve heard that the great smith Ared managed to survive Shattraths fall and he should be living nearby in the old quarry. See if you can convince him to work for us.', '', '', '', '', '', 'Speak to Apprentice Miall at the Quarry in Talador.', 19865), -- -Unknown-
+(34633, 2, 95, 0, 94, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'REUSE', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34640, 2, 90, 0, 90, 6719, 0, 0, 0, 4, 1, 86000, 4, 1, 3700, 0, 0, 0, 0, 0, 38813704, 73728, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[Deprecated] Doorway to Draenor', 'Speak with Khadgar.', 'I can only maintain a portal from Azeroth for so long.$b$bI''ll bring through as many champions as I can, but it will not be easy.', '', '', '', '', '', 'Speak with Khadgar at the Shadowmoon Ruins in Shadowmoon Valley.', 19865), -- -Unknown-
+(34650, 2, 92, 0, 90, -403, 0, 0, 34722, 6, 1, 244000, 6, 1, 37200, 0, 0, 0, 0, 0, 33832960, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 3602, 0, -1, 'Thunderlord Invasion', '[PH] Defend Against the Thunderlord Invasion (TEMP: Talk to Rokhan)', 'Our shadow hunters spotted some of dem Thunderlord gettin'' ready to attack us, commanda!\n\nWe should be gettin'' ready for an invasion!', '', '', '', '', '', '', 19865), -- -Unknown-
+(34661, 2, 90, 0, 90, -402, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 110570, 33570824, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Drudgeboat', 'Bring the Drudgeboat Schedule to Khadgar.', '[TEMP]<The torn scroll outlines the schedule of several upcoming Frostwolf prisoner arrivals.>$b$b<It appears that they are being shipped in by boat. This could be your method of escape. Khadgar will want to see this.>', '', '', '', '', '', 'Return to Khadgar at Kargathar Proving Grounds in Tanaan Jungle.', 19865), -- -Unknown-
+(34670, 2, 91, 0, 90, -403, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 570441728, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 3602, 0, -1, 'Professional Processing', 'Learn a Profession Building Blueprint from Gazlowe and then have Rezlak begin construction of the building.', 'Hey boss! We got ourselves quite a lot of raw materials ripe for some professional processing... if you know what I mean. Time to get us a building that can help put those materials to good, weaponizing use.$b$bI got a few extra plans we might be able to use to get you started, but you gotta'' pick which one to make. Once you choose, talk to Rezlak and get construction started on it.', '', '', '', '', '', 'Speak with Gazlowe at your Garrison in Frostfire Ridge', 19865), -- -Unknown-
+(34677, 2, 95, 0, 94, 6662, 0, 0, 0, 5, 1, 134000, 5, 1, 107950, 0, 0, 0, 0, 0, 34144256, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'NOT USED', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34687, 2, 95, 0, 90, 6662, 0, 0, 0, 1, 1, 13400, 1, 1, 10800, 0, 0, 0, 0, 0, 33832960, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'This Too Shall Pass', 'Return to Foreman Grobash in Talador.', 'We have lost our homes before, and we persevered. So shall we persevere now.$B$BThank you for everything, $n. Melani is safe, and that is all I need to push forward.$B$BYou should return to your outpost. Surely much remains to be done.', '', '', '', '', '', '', 19865), -- -Unknown-
+(34688, 2, 95, 0, 95, 6662, 0, 0, 0, 5, 1, 134000, 5, 1, 107950, 0, 0, 0, 0, 0, 34148352, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'DEPRECATED', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34689, 2, 95, 0, 90, 6662, 0, 0, 0, 1, 1, 13400, 1, 1, 10800, 0, 0, 0, 0, 0, 34881536, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'In Due Time', 'Return to Foreman Eksos in Talador.', 'We are leaving this place.$B$BThere are whispers of a powerful leader among us who has emerged with a plan to overthrow the Adherents. A once great hero who, like all of us, was discarded by the cruel society atop the spires.$B$BAt his behest, the shadows are gathering beneath the Spires of Arak.$B$BWe will find you when we are ready for you to aid our cause. For now, return to your people.', '', '', '', '', '', '', 19865), -- -Unknown-
+(34691, 2, 95, 0, 94, 6662, 0, 0, 0, 1, 1, 13400, 1, 1, 10800, 0, 0, 0, 0, 0, 33816584, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Just the Beginning', 'Speak to Durotan in Talador.', 'I forgive Orgrim. He acted as well all must - we do what our hearts tell us is right.$B$BWe should return to your outpost and discuss our next course of action. There is nothing left for us here.$B$BI will ask the human to open a portal for us. We shall speak again there.', '', '', '', '', '', '', 19865), -- -Unknown-
+(34693, 2, 90, 0, 90, -403, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 36716552, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[Deprecated] Profession Quest', 'Construct a profession building.', 'We have cleared out quite a bit of land, commander.$b$bWe should continue to fortify the garrison.$b$bSpeak with Baros again, he will help you construct your choice of profession buildings.', '', '', '', '', '', 'Return to Vindicator Maarad at your Garrison in Shadowmoon Valley.', 19865), -- -Unknown-
+(34722, 2, 92, 0, 90, 6720, 0, 0, 33010, 1, 1, 12200, 1, 1, 3000, 0, 0, 0, 0, 0, 33832960, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Durotan Been Askin'' For Ya', 'Speak with Durotan at your Garrison', 'Durotan been askin'' for ya, mon.', '', '', '', '', '', '', 19865), -- -Unknown-
+(34735, 2, 90, 0, 90, -403, 0, 0, 0, 6, 1, 228000, 6, 1, 6150, 0, 0, 0, 0, 0, 34619392, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 3602, 0, 33555378, 'Thunderlord Invasion!', 'Speak with Sergeant Grimjaw in your garrison.', 'Sir! Scouts have spotted Thunderlords approaching from the east.$B$BThe men are armed and ready. We''ll mount defensive positions as soon as you take the field.', '', '', '', '', '', 'Speak with Sergeant Grimjaw in your garrison.', 19865), -- -Unknown-
+(34738, 2, 90, 0, 90, -402, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 113141, 302006280, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 113141, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Nullin'' Void', 'Close 10 Shadowmoon Portals by using the Rune of Endless Ravening near them.', 'If I''m reading their spells correctly, it seems that these Shadowmoon orcs are opening portals to bring prisoners here to the slave camps. Brilliant magic, really.$b$bUnfortunately, it is easily nullified.$b$b<Khadgar places a small rune in your hand.>$b$bThis rune will deal with their void magic. Activate it near their portals, and they will instantly be nullified.', '', '', '', '', '', 'Report to Lady Liadrin within the Umbral Halls in Tanaan Jungle.', 19865), -- -Unknown-
+(34742, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Upper Blackrock Spire Challenge Mode - Consolation (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(34842, 2, 90, 0, 90, 6720, 0, 0, 34378, 5, 1, 114000, 5, 1, 4900, 167517, 167517, 0, 0, 0, 167788544, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55755, 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, 890, 878, 0, 0, 33555378, 'The Den of Skog', 'Kill Skog.', 'Olin Umberhide appears to have discovered the parent of the gronnlings and is outmatched by himself. He will be slain without help.', '', 'Mother and/or father of the local gronnlings.', 'Skog', '', '', 'Return to Gazlowe at Frostwall in Frostfire Ridge', 19865), -- -Unknown-
+(34844, 2, 91, 0, 90, -403, 0, 0, 34461, 5, 1, 118000, 5, 1, 13050, 0, 162438, 0, 0, 0, 35651592, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 3873, 0, 33555378, 'We Require More Resources', 'Gather $1oa Garrison Resources.', 'So what we got here is a good start, but you are looking for something that can support ARMIES!$b$bTruth is, we ain''t building anything without the materials to build it, and our supplies from Azeroth are limited.$b$bI got some ideas on how to get you started but you are going to have to keep your eyes open for more materials when out in the field. Lots of useful stuff out there we can change into usable material.', '', '', '', '', '', 'Return to Gazlowe at your Garrison in Frostfire Ridge.', 19865), -- -Unknown-
+(34848, 2, 90, 0, 90, -402, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570824, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 110742, 0, 0, 0, 10, 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, 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, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'To Even the Odds', 'Find Shattered Hand weapons and give them to Battered Frostwolf Prisoners or Battered Karabor Prisoners.', '[TEMP] The Shattered Hand orcs are using their prisoners as living training dummies. Let''s even the odds and give them some weapons.', '', '', '', '', '', 'Return to Olin Umberhide at Kargathar Proving Grounds in Tanaan Jungle.', 19865), -- -Unknown-
+(34926, 2, 90, 0, 90, -402, 0, 0, 0, 2, 1, 28500, 2, 1, 1250, 0, 165600, 0, 0, 0, 33832968, 65538, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Get to High Ground!', 'Report to Drek''thar in the Blackrock Quarry in Tanaan Jungle.', 'This dam is about to burst. Hopefully.$b$bFarseer Drek''Thar fights atop the peak to the south of here. You should be safe near him.$b$bDon''t worry about me.', '', '', '', '', '', '', 19865), -- -Unknown-
+(34944, 2, 96, 0, 96, 6722, 0, 0, 0, 5, 1, 138000, 5, 1, 122800, 0, 0, 0, 0, 0, 33570816, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1515, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'A Flock of Fledglings', '[PH] asdf', '[PH] asdf', '', '', '', '', '', '[PH] asdf', 19865), -- -Unknown-
+(35008, 2, 96, 0, 96, 6722, 0, 0, 0, 1, 1, 13800, 1, 1, 12250, 0, 0, 0, 0, 0, 33554440, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'UNUSED', '[PH] asdf', '[PH] Now that we''re somewhat safer and the texts are returned go report back to the High Ravencaller. We will continue our prayers here.', '', '', '', '', '', '[PH] asdf', 19865), -- -Unknown-
+(35057, 2, 91, 0, 90, 6720, 0, 0, 0, 5, 0.6, 0, 0, 1, 0, 0, 0, 0, 0, 109012, 33620224, 512, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Vignette XP reward - Frostfire', '', 'This quest is a placeholder until Task 67719 is complete.', '', '', '', '', '', '', 19865), -- -Unknown-
+(35092, 2, 90, 0, 90, -402, 0, 0, 34393, 2, 1, 28500, 2, 1, 1250, 0, 0, 0, 0, 0, 33832968, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'The Portal''s Power', 'Speak with Gul''dan underneath the Dark Portal.', 'The mana bombs were not enough. This was always a risk.$b$bThis is unfortunate.$b$bGul''dan, the orc beneath these grates, says he can shut down this portal. Find a way in there, and do whatever it takes to slow this portal down.$b$b<The archmage''s eyes lock with yours.>$b$bWHATEVER IT TAKES.', '', '', '', '', '', '', 19865), -- -Unknown-
+(35094, 2, 90, 0, 90, -402, 0, 0, 34420, 2, 1, 28500, 2, 1, 1250, 0, 0, 0, 0, 0, 34357248, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'A Deal with Darkness', 'Report back to Archmage Khadgar atop the Dark Portal.', '<With Gul''dan gone, the Dark Portal is disabled, and the threat to Azeroth is suspended.>', '', '', '', '', '', '', 19865), -- -Unknown-
+(35161, 2, 94, 0, 94, 6720, 0, 0, 0, 5, 0.6, 0, 0, 1, 0, 0, 0, 0, 0, 112692, 33620224, 512, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Vignette XP reward - Talador', '', 'This quest is a placeholder until Task 67719 is complete.', '', '', '', '', '', '', 19865), -- -Unknown-
+(35217, 2, 100, 0, 100, -401, 0, 0, 35189, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 0, 33570824, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Pearing It Up', 'Destroy 10 Sugar Pears.$B$BIf you lose your disguise, kill Sargerei enemies to collect a Sargerei Cowl, Sargerei Robe, and Sargerei Slippers to create a Sargerei Disguise.', 'While you do Zamaya''s work to earn her favor, we will secretly be sabotaging the Sargerei operation.$B$BIn the forests to the northwest, the podlings have gathered stolen pears from the farms. The little pests go crazy for the stuff.$B$BThe pears also happen to be a main food source for the Sargerei, so naturally, we''re going to destroy the harvest.$B$BThat should take care of the podlings AND the draenei at the same time.', '', '', '', '', '', 'Return to Anchorite Laanda at Socrethar''s Rise in Shadowmoon Valley.', 19865), -- -Unknown-
+(35222, 2, 97, 0, 96, 6722, 0, 0, 35298, 6, 1, 284000, 6, 1, 160500, 0, 0, 0, 0, 0, 37765120, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56523, 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, 890, 878, 0, 0, -1, 'Firing the Mayor', 'Kill Mayor Nurg Boltsnap.', 'The bottle has a large stopper in it with the label "Property of Mayor Nurg Boltsnap."$b$bAs you gaze at the bottle you hear the sound of heavy machinery coming from the nearby marshland. $b$bAn investigation would be prudent. If the mayor has turned he will also need to be put down.', '', '', 'Mayor Nurg Boltsnap', '', '', 'Return to Rivett Clutchpop in Venture Cove.', 19865), -- -Unknown-
+(35228, 2, 97, 0, 96, 6722, 0, 0, 35298, 6, 1, 284000, 6, 1, 160500, 0, 0, 0, 0, 0, 37765120, 73728, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56523, 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, 890, 878, 0, 0, -1, 'Firing the Mayor', 'Kill Mayor Nurg Boltsnap.', 'Ever since this zombie outbreak began I haven''t seen the mayor at all. If he is infected then we could be in for a huge problem if he can escape out of town. Damn, we could be in for another zombie outbreak even!$b$bWe got to find him and make sure he doesn''t escape! He used to ride in his custom shredder down on the shore line before the fungus started covering up everything. You might find him down there.', '', '', 'Mayor Nurg Boltsnap', '', '', 'Return to Rivett Clutchpop in Venture Cove.', 19865), -- -Unknown-
+(35230, 2, 99, 0, 98, 6755, 0, 0, 0, 1, 1, 15000, 1, 1, 13950, 0, 0, 0, 0, 0, 38813704, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Pale Threat', 'Return to Farseer Drek''Thar.', 'While you have been fighting against the legions of the void within the Twisting Nether, I have been investigating the twisted, pale creatures that abide in Shadowfall Canyon.$b$bA shadowy haze has settled in the canyon, $n and I sense that a dark power has taken hold there.$b$bReturn to me from the Twisting Nether with haste and we shall speak more.', '', '', '', '', '', 'Return to Farseer Drek''Thar.', 19865), -- -Unknown-
+(35256, 2, 99, 0, 98, 6755, 0, 0, 0, 5, 1, 150000, 5, 1, 140000, 0, 0, 0, 0, 0, 39075848, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'A Heart Unbroken', 'Deliver the Heart of the Fury to Kalandrios.', 'Though Gordawg''s body lays shattered and lifeless upon the ground, a crystal heart glows brightly. The large crystal appears to be fully intact and all that remains of the mighty earthen fury.$b$bPerhaps Kalandrios will know what to make of the crystal.', '', '', '', '', '', 'Return to Farseer Drek''Thar.', 19865), -- -Unknown-
+(35267, 0, 100, 0, 100, -365, 0, 0, 0, 0, 1, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 20, 0, 0, 0, 890, 878, 0, 0, -1, 'Ashran Test', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35296, 2, -1, 0, 94, -304, 0, 0, 0, 5, 1, 154000, 5, 1, 146300, 164500, 164500, 0, 0, 0, 2097152, 262144, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Tainted Garden', 'Kill Stonetooth in the Garrison Mine.', 'The abandonded mine shaft has been overrun with Goren! They seem to be responding to commands from a big one further down in the mine. If you can take him out, the rest will probably retreat.$b$bOnce you have those Goren cleared out, we can get that mine up and working!', '', '', '', '', '', '', 19865), -- -Unknown-
+(35306, 2, 18, 0, 16, 0, 0, 0, 0, 8, 0.75, 3000, 8, 0.75, 0, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35308, 2, 17, 0, 15, 0, 0, 0, 0, 8, 0.5625, 1856, 8, 0.5625, 0, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35310, 2, 85, 0, 85, 0, 0, 0, 0, 8, 0.75, 282000, 8, 0.75, 2300, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35313, 2, 89, 0, 88, 0, 0, 0, 0, 8, 1.5, 660000, 8, 1.5, 4800, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35314, 2, 90, 0, 90, 0, 0, 0, 0, 8, 1.5, 684000, 8, 1.5, 14750, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35326, 2, 90, 0, 90, 0, 0, 0, 0, 8, 1.5, 684000, 8, 1.5, 14750, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35359, 2, 80, 0, 80, 0, 0, 0, 0, 8, 1.5, 444000, 8, 1.5, 900, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35360, 2, 80, 0, 80, 0, 0, 0, 0, 8, 0.5625, 166500, 8, 0.5625, 330, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35361, 2, 85, 0, 85, 0, 0, 0, 0, 8, 1.5, 564000, 8, 1.5, 4600, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35362, 2, 85, 0, 85, 0, 0, 0, 0, 8, 1.5, 564000, 8, 1.5, 4600, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35417, 2, 85, 0, 84, 0, 0, 0, 0, 8, 0.5625, 211500, 8, 0.5625, 1700, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35418, 2, 85, 0, 84, 0, 0, 0, 0, 8, 0.5625, 211500, 8, 0.5625, 1700, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35419, 2, 85, 0, 84, 0, 0, 0, 0, 8, 0.5625, 211500, 8, 0.5625, 1700, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35421, 2, 85, 0, 85, 0, 0, 0, 0, 8, 2.25, 846000, 8, 2.25, 6850, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35422, 2, 85, 0, 84, 0, 0, 0, 0, 8, 2.25, 846000, 8, 2.25, 6850, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35423, 2, 85, 0, 85, 0, 0, 0, 0, 8, 2.25, 846000, 8, 2.25, 6850, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35425, 2, 85, 0, 85, 0, 0, 0, 0, 8, 0.5625, 211500, 8, 0.5625, 1700, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35427, 2, 85, 0, 85, 0, 0, 0, 0, 8, 0.5625, 211500, 8, 0.5625, 1700, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35428, 2, 85, 0, 85, 0, 0, 0, 0, 8, 0.5625, 211500, 8, 0.5625, 1700, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35431, 2, 93, 0, 92, 6721, 0, 0, 0, 5, 1.5, 189000, 5, 1.5, 75700, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Best Poison', 'Collect $1oa Reaver Vines.', 'Do you like poisons? I am more of a "set everything on fire and loot what doesn''t burn" kind of orc myself.$b$bBut I do know a thing or two about poisons.$b$bWhen you venture into the Razor Bloom, look for a pungent, violent plant that we call Reaver Vine. Under just the right circumstances, and FIRE, the vine will make a lovely poison. Bring me some and I shall concoct a lovely poison for you.', '', '', '', '', '', 'Speak with Kaz at Razor Bloom in Gorgrond.', 19865), -- -Unknown-
+(35452, 2, 79, 0, 77, 0, 0, 0, 0, 8, 0.5625, 71000, 8, 0.25, 120, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Utgarde Pinnacle - Bonus Objective Reward', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35454, 2, 80, 0, 80, 0, 0, 0, 0, 8, 0.5625, 74000, 8, 0.25, 330, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Utgarde Pinnacle - Bonus Objective Reward', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35457, 2, 80, 0, 80, 0, 0, 0, 0, 8, 2.25, 296000, 8, 1, 1320, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Halls of Lightning Reward Quest', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35466, 2, 77, 0, 75, 0, 0, 0, 0, 8, 0.5625, 146250, 8, 0.5625, 120, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35467, 2, 77, 0, 75, 0, 0, 0, 0, 8, 0.5625, 65000, 8, 0.25, 120, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35469, 2, 80, 0, 80, 0, 0, 0, 0, 8, 0.5625, 74000, 8, 0.25, 330, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35470, 2, 80, 0, 80, 0, 0, 0, 0, 8, 0.5625, 166500, 8, 0.5625, 330, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35479, 2, 80, 0, 80, 0, 0, 0, 0, 8, 1, 296000, 8, 1, 600, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Unused', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35541, 2, 70, 0, 70, 0, 0, 0, 0, 5, 0.5625, 11000, 5, 0.25, 60, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Sethekk Halls Bonus Objective', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35578, 0, 100, 0, 100, 6941, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 166025, 0, 0, 0, 2097152, 32768, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 20, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Building an Ancient of War', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(35635, 2, 96, 0, 96, 6722, 0, 0, 36059, 1, 1, 13800, 1, 1, 12250, 0, 0, 0, 0, 0, 33570816, 64, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1515, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[Deprecated]', 'Speak with Talonpriest Zellek in Veil Terokk.', '', '', '', '', '', '', 'Speak with Talonpriest Zellek in Veil Terokk.', 19865), -- -Unknown-
+(35822, 2, 93, 0, 92, 0, 0, 0, 0, 6, 1.5, 378000, 6, 1.5, 94650, 0, 0, 0, 0, 0, 33832968, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Trophy of Glory: Sodius', 'Take the trophy to Durotan at <HORDE OUTPOST> in Gorgrond.', 'Defeating Sodius has yielded you a trophy worthy of acclaim.$b$bTake this to Durotan at <HORDE OUTPOST>.', '', '', '', '', '', '', 19865), -- -Unknown-
+(36060, 0, 100, 0, 100, 0, 0, 0, 0, 0, 1, 15400, 1, 1, 0, 0, 0, 0, 0, 0, 33554432, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 994, 0, 0, 0, 1, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Seal of Tempered Fate: Apexis Crystals', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36113, 2, 100, 0, 100, 6755, 0, 0, 0, 6, 1, 308000, 6, 1, 182850, 0, 0, 0, 0, 0, 39075848, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1711, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, '[Deprecated] Azuka Bladefury', 'Return to Rokhan at your garrison in Frostfire Ridge.', 'Jub''waz is dead. A fire smolders inside a large wound where her heart used to be.$b$bFlipping through a report you find on her corpse you are able to piece together some basic information.$b$bAzuka has betrayed the ogres, she has killed Ugbright and used her blade to take his power for herself.$b$bRokhan will want to know of Jub''waz''s fate.', '', '', '', '', '', '', 19865), -- -Unknown-
+(36135, 2, 90, 0, 90, -403, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570816, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Rosa is bad', 'Retrieve Rulga''s lost inscription papers.', 'Text', '', '', '', '', '', 'Return to Rulga at Palemoon Village.', 19865), -- -Unknown-
+(36139, 2, 86, 0, 85, 0, 0, 0, 0, 5, 1, 98000, 5, 1, 1550, 0, 0, 0, 0, 0, 128, 8, 114662, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Pandaria 85-87', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36140, 2, 88, 0, 85, 0, 0, 0, 0, 5, 1, 106000, 5, 1, 1600, 0, 0, 0, 0, 0, 128, 8, 114669, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Pandaria 88-90', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36143, 2, 71, 0, 68, 0, 0, 0, 0, 7, 1, 94000, 6, 1, 120, 0, 0, 0, 0, 0, 128, 8, 114634, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'LFG WLK 70-74', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36144, 2, 75, 0, 73, 0, 0, 0, 0, 7, 1, 118000, 6, 1, 150, 0, 0, 0, 0, 0, 128, 8, 114641, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'LFG WLK 75-80', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36145, 2, 81, 0, 80, 0, 0, 0, 0, 7, 1, 156000, 6, 1, 725, 0, 0, 0, 0, 0, 128, 8, 114648, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Cataclysm 80-83', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36146, 2, 84, 0, 80, 0, 0, 0, 0, 7, 1, 180000, 6, 1, 750, 0, 0, 0, 0, 0, 128, 8, 114655, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Cataclysm 84-85', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36147, 2, 86, 0, 85, 0, 0, 0, 0, 7, 1, 196000, 6, 1, 2300, 0, 0, 0, 0, 0, 128, 8, 114662, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Pandaria 85-87', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36148, 2, 88, 0, 85, 0, 0, 0, 0, 7, 1, 212000, 6, 1, 2350, 0, 0, 0, 0, 0, 128, 8, 114662, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Pandaria 88-90', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36149, 2, 71, 0, 68, 0, 0, 0, 0, 5, 1, 47000, 5, 1, 90, 0, 0, 0, 0, 0, 128, 8, 114634, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'LFG WLK 70-74', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36150, 2, 75, 0, 73, 0, 0, 0, 0, 5, 1, 59000, 5, 1, 90, 0, 0, 0, 0, 0, 128, 8, 114641, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'LFG WLK 75-80', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36151, 2, 81, 0, 80, 0, 0, 0, 0, 5, 1, 78000, 5, 1, 490, 0, 0, 0, 0, 0, 128, 8, 114648, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Cataclysm 80-83', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36152, 2, 84, 0, 80, 0, 0, 0, 0, 5, 1, 90000, 5, 1, 500, 0, 0, 0, 0, 0, 128, 8, 114655, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Cataclysm 84-85', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36172, 1, 99, 0, 99, 6719, 0, 0, 0, 5, 1, 150000, 5, 1, 140000, 0, 0, 0, 0, 0, 37765128, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, '[Deprecated] Put out the Fires', 'xxxx', '(PH)I need a gift for thorn! A rose style gift.', '', '', '', '', '', 'xxxx', 19865), -- -Unknown-
+(36188, 2, 90, 0, 90, -403, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570816, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Moving On Up', 'Garaal has offered to further your knowledge in leatherworking.', 'A generous decision, $n.$B$BYou have demonstrated your skills as a hunter, delivered a piece worthy of your name and proven your dedication to your craft. Please, take this as a token of my gratitude.$B$BMay the light guide your hand and passion, your heart.', '', '', '', '', '', 'Garaal has afforded you his knowledge of draenic craftsmanship.', 19865), -- -Unknown-
+(36263, 2, 90, 0, 90, 6720, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 37765120, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'A Strengthened Bond', 'Give Axe-Shaper Kugra the Ghost-Touched Materials.', 'This entire time... I have been so consumed with my own grief.$B$BI never once stopped to consider how much my father was suffering at the hands of our enemies.$B$BThank you so much $c for helping him to return to me. Please, allow me to repair his hammer.$B$BIn exchange for everything you have done for us, I will teach you whatever you wish to know.', '', '', '', '', '', '', 19865), -- -Unknown-
+(36358, 2, 90, 0, 90, -403, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570816, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'A Father and His Son', 'Return Duna and the toolset to Haephest.', 'We must hurry before more orcs arrive! My father works just down this path!$B$BWe''ll be safe at his shop.', '', '', '', '', '', '', 19865), -- -Unknown-
+(36383, 3, 100, 0, 100, -403, 0, 0, 0, 0, 1.5, 0, 0, 1.5, 0, 0, 173290, 0, 0, 0, 37294080, 524288, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 4017, 0, 18875469, 'Assault on the Pit', 'Destroy Iron Horde weapons cache and take out as many of them as you can.', 'The Iron Horde are stockpiling their weapons and ammunition outside of the Foundry. Their campaign throughout Draenor has left their caches vulnerable. Get in there and cause as much chaos as you can, and while you''re at it use some of that ammunition against them if they''re just going to leave it lying around!', '', '', '', '', '', 'Return to your Garrison.', 19865), -- -Unknown-
+(36413, 2, 90, 0, 90, -403, 0, 0, 0, 5, 1, 114000, 5, 1, 4900, 0, 0, 0, 0, 0, 33570816, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'A Power Restored', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36497, 2, 92, 0, 92, 6721, 0, 0, 35506, 3, 1.5, 91500, 3, 1.5, 22350, 0, 0, 0, 0, 0, 39075848, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Lumber Mill', 'Speak to Penny Clobberbottom outside Tangleheart.', 'Hey there, peach. We''ve got the lumber mill good and ready, but we gotta find a way of choppin'' wood fast out here.\n\nThe Laughing Skull talked about Tangleheart, where the botani grow things quick as a quark.\n\nI''m headin'' there now.', '', '', '', '', '', '', 19865), -- -Unknown-
+(36572, 2, 92, 0, 92, 6721, 0, 0, 35506, 3, 1.5, 91500, 3, 1.5, 22350, 0, 0, 0, 0, 0, 39075848, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Tangleheart Return', 'Speak to Penny Clobberbottom outside Tangleheart.', 'Hey there, peach. We''ve got the lumber mill good and ready, but we gotta find a way of choppin'' wood fast out here.\n\nThe Laughing Skull talked about Tangleheart, where the botani grow things quick as a quark.\n\nI''m headin'' there now.', '', '', '', '', '', '', 19865), -- -Unknown-
+(36593, 2, 100, 0, 100, -403, 0, 0, 0, 6, 1, 308000, 6, 1, 182850, 0, 0, 0, 0, 0, 34684928, 65536, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56527, 1445, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Breakers Invasion! UNUSED', 'Repel the Breaker invasion of your garrison.$B$B(Speak with Sergeant Grimjaw again to begin)', 'Quakes have been shaking the garrison for the last hour, and a few of our scouts aren''t reporting in.', '', '', '', 'Grimjaw, the best in town or something.', 'Breakers Invasion?', 'Speak with Sergeant Grimjaw in your garrison.', 19865), -- -Unknown-
+(36619, 2, 90, 0, 90, 6721, 0, 0, 0, 0, 1.5, 0, 0, 1.5, 0, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Lumber Mill', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36620, 2, 100, 0, 100, -403, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 34951176, 4, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Strategic Choices', 'Choose between your strategic options.', 'Good to see you, commander.\n\nMy network has been keeping eyes on enemy movements. There are a couple threats I''d like to get you up to date on.\n\nDo you have a moment to look at our options?', '', '', '', '', '', '', 19865), -- -Unknown-
+(36639, 2, 90, 0, 90, -403, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33570816, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Collecting a Work Order', 'Wait for the work order to complete, then collect it.', 'While that first work order was accelerated, it normally takes us a day to complete one work order. Once it is complete, we will leave it out here for you to collect, just like the first one.', '', '', '', '', '', 'Wait for the work order to complete, then collect it.', 19865), -- -Unknown-
+(36661, 2, 93, 0, 92, 6721, 0, 0, 0, 6, 1.5, 378000, 6, 1.5, 94650, 0, 0, 0, 0, 0, 33570816, 64, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'The Power of the Red', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(36873, 2, 73, 0, 70, 65, 0, 0, 0, 5, 1, 53000, 5, 1, 90, 0, 0, 0, 0, 0, 16512, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'DEPRECATED', 'Obtain 2 Stone Hunks O'' Gargoyle from Carrion Gargoyles in the Eastern Carrion Fields. Return to Lord Bevis when the task is complete.', 'You there... you look the fighting type. I want some sweet Revenge on the Scourge that killed my family. Go get me 2 Stone Hunks O'' Gargoyle so that I can throw them on the ground and stomp on them violently until they are mashed into itty bitty pebbly bits. $b$bYes. Go. Kill.', '', '', '', '', '', 'Return to .', 19865), -- -Unknown-
+(36922, 2, 100, 0, 90, 6720, 0, 0, 0, 8, 1, 616000, 8, 1, 292550, 0, 0, 0, 0, 0, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'zzzzTITLE TEST', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37169, 0, 98, 0, 96, 6722, 0, 0, 0, 5, 1.5, 219000, 5, 1.5, 201150, 175025, 175025, 0, 0, 0, 35667976, 262144, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Apexis Guardian Ziri''ak', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37269, 2, 100, 0, 100, -403, 0, 0, 0, 6, 1, 308000, 6, 1, 182850, 0, 0, 0, 0, 0, 34684928, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Shadowmoon Invasion! BETA', 'Repel the Shadowmoon invasion of your garrison.$B$B(Speak with Sergeant Grimjaw again to begin)', 'Scouts say the Shadowmoon Clan looms close, ready with their necromancy. If I die and rise again, Commander, finish me quickly. I don''t want to be a ghoul.', '', '', '', '', '', 'Speak with Sergeant Grimjaw in your garrison.', 19865), -- -Unknown-
+(37305, 0, 100, 0, 100, 0, 0, 0, 0, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 0, 33587200, 32776, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 823, 0, 0, 0, 33, 0, 0, 0, 890, 878, 0, 0, -1, 'Bronze Victory', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37306, 0, 100, 0, 100, 0, 0, 0, 0, 6, 1, 308000, 6, 1, 182850, 0, 0, 0, 0, 0, 33587200, 32776, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 823, 0, 0, 0, 50, 0, 0, 0, 890, 878, 0, 0, -1, 'Silver Victory', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37333, 2, 100, 0, 100, 0, 0, 0, 0, 6, 1, 693000, 7, 1.5, 182850, 0, 183895, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 824, 0, 0, 0, 50, 0, 0, 0, 890, 878, 0, 0, -1, 'Daily Heroic Random (1st) (Draenor)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37334, 2, 100, 0, 100, 0, 0, 0, 0, 6, 1, 308000, 6, 1, 182850, 0, 178541, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Daily Heroic Random (Nth) (Draenor)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37335, 2, 100, 0, 100, 0, 0, 0, 0, 6, 1, 308000, 6, 1, 182850, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Daily Normal Random (1st) (Draenor)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37336, 2, 100, 0, 100, 0, 0, 0, 0, 5, 1, 154000, 5, 1, 146300, 0, 0, 0, 0, 0, 33554432, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Daily Normal Random (Nth)(Draenor)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37416, 2, 96, 0, 96, 6722, 0, 0, 0, 1, 1, 13800, 1, 1, 12250, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Feast of the Spires', 'Eat a Feast of the Spires at Axefall.', 'Boss-mon, I prepared a great feast for you right over dere. You should be havin'' a bite or two before you be goin'' out for da day.$B$BTrust me, you will feel much betta if you do!', '', '', '', '', '', 'Return to Lunzul at Axefall.', 19865), -- -Unknown-
+(37501, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Draenor Challenge Mode - Bronze Addition (1st)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37502, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Draenor Challenge Mode - Consolation (1st)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37503, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Draenor Challenge Mode - Gold Addition (1st)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37504, 2, 100, 0, 100, 0, 0, 0, 0, 4, 1, 154000, 5, 1, 109700, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Draenor Challenge Mode - Silver Addition (1st)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37505, 2, 100, 0, 100, 0, 0, 0, 0, 0, 2, 1540000, 8, 2.5, 0, 0, 177839, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Raid Finder (1st)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37506, 2, 100, 0, 100, 0, 0, 0, 0, 8, 1, 616000, 8, 1, 292550, 0, 178542, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Raid Finder (Nth)', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37513, 2, 100, 0, 100, -403, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 34684928, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Ogres Invasion! BETA', 'Repel the Ogres invasion of your garrison.$B$B(Speak with Sergeant Grimjaw again to begin)', 'Commander, our scouts say that Ogre bands march through the snow. If they want more battle after the beating we already delivered, then I''m eager to oblige them.', '', '', '', '', '', 'Speak with Sergeant Grimjaw in your garrison.', 19865), -- -Unknown-
+(37514, 2, 100, 0, 100, -403, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 34684928, 65536, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 33555378, 'Breakers Invasion!! BETA', 'Repel the Goren and Gronnling invasion of your garrison.$B$B(Speak with Sergeant Grimjaw again to begin)', 'The earth quakes beneath us, Commander. Our scouts are not returning. I can feel an attack creeping up on us, but from where?', '', '', '', '', '', 'Speak with Sergeant Grimjaw in your garrison.', 19865), -- -Unknown-
+(37523, 2, 100, 0, 100, -403, 0, 0, 0, 7, 1, 462000, 7, 1, 219450, 0, 0, 0, 0, 0, 35131424, 68, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1714, 0, 0, 0, 0, 8, 0, 0, 0, 0, 1200000, 0, 0, 0, 0, 0, 823, 0, 0, 0, 800, 0, 0, 0, 890, 878, 4061, 0, -1, 'Assault on the Gorian Proving Grounds', 'Assault the ogre forces at the Gorian Proving Grounds in Nagrand.', 'The ogres at the Gorian Proving Grounds are rousing champions to turn against our forces in Nagrand.\n\nA decisive assault on their training grounds should prevent them from mustering the forces they need to stand against us, and will help remind them that we are not an enemy they want to make.', '', '', '', '', '', 'Return to Scout Valdez at your garrison in Shadowmoon Valley.', 19865), -- -Unknown-
+(37524, 2, 100, 0, 100, -403, 0, 0, 0, 7, 1, 462000, 7, 1, 219450, 0, 0, 0, 0, 0, 35131424, 68, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1714, 0, 0, 0, 0, 8, 0, 0, 0, 0, 1200000, 0, 0, 0, 0, 0, 823, 0, 0, 0, 800, 0, 0, 0, 890, 878, 4067, 0, -1, 'Assault on the Gorian Proving Grounds', 'Assault the ogre forces at the Gorian Proving Grounds in Nagrand.', 'The ogres at the Gorian Proving Grounds be rousin'' champions to turn against our forces in Nagrand.\n\nA decisive assault on their training grounds should prevent dem from musterin'' the forces dey be needin'' to stand against us, and will help remind them that we are not an enemy they want to be makin''.', '', '', '', '', '', 'Return to Shadow Hunter Ukambe at your garrison in Frostfire Ridge.', 19865), -- -Unknown-
+(37539, 2, 100, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'UNUSED', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37648, 2, 100, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 128, 8, 122607, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, 52430847, 'Short-Supply Reward', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37752, 2, 100, 0, 100, -403, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Pet Battles Active', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37754, 2, 100, 0, 100, -403, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Dungeon Active', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37772, 2, 100, 0, 100, 6967, 62, 0, 0, 8, 1, 616000, 8, 1, 292550, 0, 0, 0, 0, 0, 167804992, 1048576, 123975, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53791, 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, 890, 878, 0, 0, 18875469, 'Blackhand''s Crucible: Blackhand', 'Defeat Blackhand in the Blackrock Foundry.', 'Ol'' Grommash cannot rule the Iron Horde without his Warlords keeping the clans in line. Let''s deal ''em a blow that they can''t recover from! Blackhand, Warlord of the Blackrock clan, is a dauntless warrior and ruthless tyrant. He''s second only to Grommash within the Iron Horde and oversees operations in the Foundry from atop its Crucible.$b$bTravel to the Blackrock Foundry and defeat Blackhand.', '', '', 'Blackhand', '', '', 'Return to Muradin Bronzebeard in your garrison.', 19865), -- -Unknown-
+(37840, 2, 100, 0, 100, -344, 83, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 256, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Draenor''s Blessing', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(37916, 2, 100, 0, 100, 6720, 0, 0, 37917, 2, 1, 38500, 2, 1, 36600, 0, 0, 0, 0, 0, 571019264, 1081344, 122102, 0, 0, 0, 1, 0, 0, 0, 122096, 122098, 122099, 0, 1, 1, 1, 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, 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, 0, 0, 890, 878, 0, 0, -1, 'Gronnsbane: The Broken Spear', 'Search throughout Magnarok for Gronnsbane''s blade, haft, and weight.', 'Looking through Argoram''s journal, it becomes apparent that claiming this relic will be far more complicated than simply finding the pieces of the spear.\n\nHowever, that would be the best place to start...', '', '', '', '', '', '', 19865), -- -Unknown-
+(37918, 2, 100, 0, 100, 6720, 0, 0, 0, 2, 1, 38500, 2, 1, 36600, 0, 180194, 0, 0, 0, 573116416, 1081345, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Gronnsbane: The Blessing of Frost', 'Follow the clue to find the Frozen Shamanstone and receive the Blessing of Frost.', 'The weapon has been imbued with the Blessing of Fire, drawing power from the Molten Shamanstone. The Frozen Shamanstone should impart the next blessing. Argoram mentions its location in his journal:\n\n"As I was maneuvering away from the great boulders hurled at me by the ogron brutes, I glanced what looked like another monolith atop the tallest of the snow-capped towers in Bloodmaul. Perhaps this is the Frozen Shamanstone, which is thought to grant the Blessing of Frost"', '', '', '', '', '', '', 19865), -- -Unknown-
+(38008, 2, 100, 0, 100, 6941, 0, 0, 0, 3, 1, 154000, 5, 1, 73200, 0, 0, 0, 0, 0, 200, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1682, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 390, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 3856, 0, 18875469, 'The Road of Glory', 'Chris Clarkie in Stormshield wants you to kill 5 members of the Horde within the Road of Glory.', 'The Horde intends to force us out of Ashran, $n. We can''t let them succeed. March into the Road of Glory and thin their ranks by at least five.', '', '', '', '', '', 'Return to Chris Clarkie in Stormshield.', 19865), -- -Unknown-
+(38103, 2, 10, 0, 10, 0, 0, 0, 0, 5, 1, 350, 5, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Gossip Test Case 1', 'Objective Text.', 'Quest Text.', '', '', '', '', '', '', 19865), -- -Unknown-
+(38104, 2, 10, 0, 10, 0, 0, 0, 0, 5, 1, 350, 5, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Gossip Test Case 2', 'Objective Text.', 'Quest Text.', '', '', '', '', '', '', 19865), -- -Unknown-
+(38105, 2, 10, 0, 10, 0, 0, 0, 0, 5, 1, 350, 5, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Gossip Test Case 3', 'Objective Text.', 'Quest Text.', '', '', '', '', '', '', 19865), -- -Unknown-
+(38106, 2, 10, 0, 10, 0, 0, 0, 0, 5, 1, 350, 5, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Greeting Text Test Case 1', 'Objective Text.', 'Quest Text.', '', '', '', '', '', '', 19865), -- -Unknown-
+(38107, 2, 10, 0, 10, 0, 0, 0, 0, 5, 1, 350, 5, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Greeting Text Test Case 2', 'Objective Text.', 'Quest Text.', '', '', '', '', '', '', 19865), -- -Unknown-
+(38108, 2, 10, 0, 10, 0, 0, 0, 0, 5, 1, 350, 5, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Greeting Text Test Case 3', 'Objective Text.', 'Quest Text.', '', '', '', '', '', '', 19865), -- -Unknown-
+(38109, 2, -1, 0, 10, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 219450, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 10000, 0, 0, 0, 890, 878, 0, 0, -1, 'Vanilla 10-19', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38110, 2, -1, 0, 20, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 219450, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 10000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 20-29', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38111, 2, -1, 0, 30, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 219450, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 10000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 30-39', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38112, 2, -1, 0, 40, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 219450, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 10000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 40-49', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38113, 2, -1, 0, 50, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 219450, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 10000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 50-59', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38114, 2, -1, 0, 60, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 219450, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 10000, 0, 0, 0, 890, 878, 0, 0, -1, 'TBC 60-69', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38115, 2, -1, 0, 60, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 219450, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 10000, 0, 0, 0, 890, 878, 0, 0, -1, 'WLK 70-79', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38116, 2, -1, 0, 60, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 219450, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 10000, 0, 0, 0, 890, 878, 0, 0, -1, 'Cata/MoP 80-89', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38117, 2, -1, 0, 90, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 219450, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 10000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 90-99', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38118, 2, -1, 0, 90, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 0, 0, 0, 0, 0, 0, 384, 8, 120354, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 390, 0, 0, 30000, 15000, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 A', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38119, 2, -1, 0, 90, 0, 0, 0, 0, 7, 1, 308000, 6, 1, 0, 0, 0, 0, 0, 0, 384, 8, 111598, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 390, 0, 0, 30000, 15000, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 H', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38120, 2, -1, 0, 10, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 109750, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'Vanilla 10-19', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38121, 2, -1, 0, 20, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 109750, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 20-29', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38122, 2, -1, 0, 30, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 109750, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 30-39', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38123, 2, -1, 0, 40, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 109750, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 40-49', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38124, 2, -1, 0, 50, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 109750, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 50-59', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38125, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 109750, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'TBC 60-69', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38126, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 109750, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'WLK 70-79', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38127, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 109750, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'Cata/MoP 80-89', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38128, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 109750, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 90-99', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38129, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 0, 0, 0, 0, 0, 0, 384, 8, 120354, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 390, 0, 0, 15000, 7500, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 A', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38130, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.5, 154000, 6, 0.5, 0, 0, 0, 0, 0, 0, 384, 8, 111598, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 390, 0, 0, 15000, 7500, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 H', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38131, 2, -1, 0, 10, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 2500, 0, 0, 0, 890, 878, 0, 0, -1, 'Vanilla 10-19', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38132, 2, -1, 0, 20, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 2500, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 20-29', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38133, 2, -1, 0, 30, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 2500, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 30-39', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38134, 2, -1, 0, 40, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 2500, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 40-49', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38135, 2, -1, 0, 50, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 2500, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 50-59', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38136, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 2500, 0, 0, 0, 890, 878, 0, 0, -1, 'TBC 60-69', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38137, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 2500, 0, 0, 0, 890, 878, 0, 0, -1, 'WLK 70-79', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38138, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 2500, 0, 0, 0, 890, 878, 0, 0, -1, 'Cata/MoP 80-89', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38139, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 2500, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 90-99', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38140, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.25, 77000, 6, 0.25, 0, 0, 0, 0, 0, 0, 384, 8, 120356, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 A', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38141, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.25, 77000, 6, 0.25, 0, 0, 0, 0, 0, 0, 384, 8, 111600, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 H', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38149, 2, -1, 0, 10, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 1000, 0, 0, 0, 890, 878, 0, 0, -1, 'Vanilla 10-19', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38150, 2, -1, 0, 20, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 1000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 20-29', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38151, 2, -1, 0, 30, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 1000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 30-39', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38152, 2, -1, 0, 40, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 1000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 40-49', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38153, 2, -1, 0, 50, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 1000, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 50-59', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38154, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 1000, 0, 0, 0, 890, 878, 0, 0, -1, 'TBC 60-69', '', '', '', '', '', '', '', '', 19865); -- -Unknown-
+
+INSERT INTO `quest_template` (`Id`, `QuestType`, `QuestLevel`, `QuestPackageID`, `MinLevel`, `QuestSortID`, `QuestInfoID`, `SuggestedGroupNum`, `RewardNextQuest`, `RewardXPDifficulty`, `Float10`, `RewardMoney`, `RewardMoneyDifficulty`, `Float13`, `RewardBonusMoney`, `RewardDisplaySpell`, `RewardSpell`, `RewardHonor`, `RewardKillHonor`, `StartItem`, `Flags`, `FlagsEx`, `RewardItem1`, `RewardItem2`, `RewardItem3`, `RewardItem4`, `RewardAmount1`, `RewardAmount2`, `RewardAmount3`, `RewardAmount4`, `ItemDrop1`, `ItemDrop2`, `ItemDrop3`, `ItemDrop4`, `ItemDropQuantity1`, `ItemDropQuantity2`, `ItemDropQuantity3`, `ItemDropQuantity4`, `RewardChoiceItemID1`, `RewardChoiceItemID2`, `RewardChoiceItemID3`, `RewardChoiceItemID4`, `RewardChoiceItemID5`, `RewardChoiceItemID6`, `RewardChoiceItemQuantity1`, `RewardChoiceItemQuantity2`, `RewardChoiceItemQuantity3`, `RewardChoiceItemQuantity4`, `RewardChoiceItemQuantity5`, `RewardChoiceItemQuantity6`, `RewardChoiceItemDisplayID1`, `RewardChoiceItemDisplayID2`, `RewardChoiceItemDisplayID3`, `RewardChoiceItemDisplayID4`, `RewardChoiceItemDisplayID5`, `RewardChoiceItemDisplayID6`, `POIContinent`, `POIx`, `POIy`, `POIPriority`, `RewardTitle`, `RewardTalents`, `RewardArenaPoints`, `RewardSkillLineID`, `RewardNumSkillUps`, `PortraitGiver`, `PortraitTurnIn`, `RewardFactionID1`, `RewardFactionID2`, `RewardFactionID3`, `RewardFactionID4`, `RewardFactionID5`, `RewardFactionValue1`, `RewardFactionValue2`, `RewardFactionValue3`, `RewardFactionValue4`, `RewardFactionValue5`, `RewardFactionOverride1`, `RewardFactionOverride2`, `RewardFactionOverride3`, `RewardFactionOverride4`, `RewardFactionOverride5`, `RewardFactionFlags`, `RewardCurrencyID1`, `RewardCurrencyID2`, `RewardCurrencyID3`, `RewardCurrencyID4`, `RewardCurrencyQty1`, `RewardCurrencyQty2`, `RewardCurrencyQty3`, `RewardCurrencyQty4`, `AcceptedSoundKitID`, `CompleteSoundKitID`, `AreaGroupID`, `TimeAllowed`, `AllowableRaces`, `LogTitle`, `LogDescription`, `QuestDescription`, `AreaDescription`, `PortraitGiverText`, `PortraitGiverName`, `PortraitTurnInText`, `PortraitTurnInName`, `QuestCompletionLog`, `VerifiedBuild`) VALUES
+(38155, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 1000, 0, 0, 0, 890, 878, 0, 0, -1, 'WLK 70-79', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38156, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 1000, 0, 0, 0, 890, 878, 0, 0, -1, 'Cata/MoP 80-89', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38157, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 1000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 90-99', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38158, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.25, 77000, 6, 0.25, 0, 0, 0, 0, 0, 0, 384, 8, 120353, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 0, 0, 0, 2000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 A', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38159, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.25, 77000, 6, 0.25, 0, 0, 0, 0, 0, 0, 384, 8, 119330, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 0, 0, 0, 2000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 H', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38160, 2, -1, 0, 10, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 300, 0, 0, 0, 890, 878, 0, 0, -1, 'Vanilla 10-19', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38161, 2, -1, 0, 20, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 300, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 20-29', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38162, 2, -1, 0, 30, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 300, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 30-39', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38163, 2, -1, 0, 40, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 300, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 40-49', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38164, 2, -1, 0, 50, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 300, 0, 0, 0, 890, 878, 0, 0, -1, 'Classic 50-59', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38165, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 300, 0, 0, 0, 890, 878, 0, 0, -1, 'TBC 60-69', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38166, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 300, 0, 0, 0, 890, 878, 0, 0, -1, 'WLK 70-79', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38167, 2, -1, 0, 60, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 300, 0, 0, 0, 890, 878, 0, 0, -1, 'Cata/MoP 80-89', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38168, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.2, 61600, 6, 0.2, 43900, 0, 0, 0, 0, 0, 128, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 300, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 90-99', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38169, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.25, 77000, 6, 0.25, 0, 0, 0, 0, 0, 0, 384, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 800, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 A', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38170, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.25, 77000, 6, 0.25, 0, 0, 0, 0, 0, 0, 384, 8, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 800, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 H', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38171, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.25, 77000, 6, 0.25, 0, 0, 0, 0, 0, 0, 384, 8, 120355, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 A', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38172, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.25, 77000, 6, 0.25, 0, 0, 0, 0, 0, 0, 384, 8, 120354, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 A', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38173, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.25, 77000, 6, 0.25, 0, 0, 0, 0, 0, 0, 384, 8, 111599, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 H', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38174, 2, -1, 0, 90, 0, 0, 0, 0, 7, 0.25, 77000, 6, 0.25, 0, 0, 0, 0, 0, 0, 384, 8, 111598, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 392, 0, 0, 0, 5000, 0, 0, 0, 890, 878, 0, 0, -1, 'WOD 100 H', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38194, 2, 100, 0, 100, -403, 0, 0, 0, 7, 1, 462000, 7, 1, 219450, 0, 182843, 0, 0, 0, 36704288, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1714, 0, 0, 0, 0, 8, 0, 0, 0, 0, 1200000, 0, 0, 0, 0, 0, 823, 0, 0, 0, 800, 0, 0, 0, 890, 878, 4061, 0, -1, 'Missive: Assault on the Gorian Proving Grounds', 'Assault the ogre forces at the Gorian Proving Grounds in Nagrand.', 'The ogres at the Gorian Proving Grounds are rousing champions to turn against our forces in Nagrand.\n\nA decisive assault on their training grounds should prevent them from mustering the forces they need to stand against us, and will help remind them that we are not an enemy they want to make.', '', '', '', '', '', 'Return to Scout Valdez at your garrison in Shadowmoon Valley.', 19865), -- -Unknown-
+(38202, 2, 100, 0, 100, -403, 0, 0, 0, 7, 1, 462000, 7, 1, 219450, 0, 182843, 0, 0, 0, 36704288, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1714, 0, 0, 0, 0, 8, 0, 0, 0, 0, 1200000, 0, 0, 0, 0, 0, 823, 0, 0, 0, 800, 0, 0, 0, 890, 878, 4067, 0, -1, 'Missive: Assault on the Gorian Proving Grounds', 'Assault the ogre forces at the Gorian Proving Grounds in Nagrand.', 'The ogres at the Gorian Proving Grounds be rousin'' champions to turn against our forces in Nagrand.\n\nA decisive assault on their training grounds should prevent dem from musterin'' the forces dey be needin'' to stand against us, and will help remind them that we are not an enemy they want to be makin''.', '', '', '', '', '', 'Return to Shadow Hunter Ukambe at your garrison in Frostfire Ridge.', 19865), -- -Unknown-
+(38240, 2, 100, 0, 100, -403, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33554440, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Raid Active', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38293, 0, -1, 0, 90, -201, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4096, 1048576, 120945, 0, 0, 0, 25, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Sumptuous Fur', '', '', '', '', '', '', '', '', 19865), -- -Unknown-
+(38296, 0, -1, 0, 90, -201, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4096, 1048576, 120945, 0, 0, 0, 25, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 890, 878, 0, 0, -1, 'Herbs Galore', '', '', '', '', '', '', '', '', 19865); -- -Unknown-
+
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=1, `RewardBonusMoney`=0, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id` IN (29029 /*Dying Knowledge*/, 29820 /*Into the Nexus*/);
+UPDATE `quest_template` SET `RewardMoney`=77000 WHERE `Id` IN (29030 /*Honor the Flame*/, 29031 /*Honor the Flame*/, 29036 /*Honor the Flame*/, 32497 /*-Unknown-*/, 32498 /*-Unknown-*/, 32499 /*-Unknown-*/, 32500 /*-Unknown-*/, 32501 /*-Unknown-*/, 32502 /*-Unknown-*/, 32509 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=5, `RewardBonusMoney`=1550, `AllowableRaces`=52430847, `QuestDescription`='Eaaaauuuugggghhhh!$B$BOh my goodness, I thought you were one of THEM.$B$BWho are you? $n? Look, we could really use your help.$B$B<Lasha listens as you ask what''s going on.>$B$BAre you blind? The entire resort''s on fire! These pesky little Flamekin Firestarters are running around the place, torching everything they can get their grubby little claws on. Kill them all before our profits suffer!', `VerifiedBuild`=19865 WHERE `Id`=29041; -- Welcome to Paradise
+UPDATE `quest_template` SET `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id` IN (29063 /*Subversion*/, 29091 /*Freedom Movement*/, 29212 /*[DEPRECATED] Fire Hawk Down*/, 29216 /*Malfurion's Breach*/, 29218 /*Marks of the World Tree*/, 29258 /*Meteorite Hunt*/);
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=5, `RewardBonusMoney`=1550, `AllowableRaces`=52430847, `QuestDescription`='We''ve had no end of trouble here, $n! Sabotaged food shipments, tampered water supply, and now this! You can''t send a more unsubtle message than fire. We clearly aren''t wanted here!$B$BBut first things first. Whoever is trying to get rid of us has summoned vile totems all around the grounds. If we destroy those totems, those blasted Flamekin demons will stop appearing.$B$BDestroy any totems that you see before we''re overrun!', `VerifiedBuild`=19865 WHERE `Id`=29065; -- Out of This World
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=5, `RewardBonusMoney`=500, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id`=29070; -- Twilight Plight
+UPDATE `quest_template` SET `RewardMoney`=15400 WHERE `Id` IN (29074 /*A Season for Celebration*/, 29400 /*A Season for Celebration*/, 31664 /*-Unknown-*/, 32618 /*-Unknown-*/, 32661 /*-Unknown-*/, 32662 /*-Unknown-*/, 32663 /*-Unknown-*/, 32664 /*-Unknown-*/, 32665 /*-Unknown-*/, 32667 /*-Unknown-*/, 32668 /*-Unknown-*/, 32669 /*-Unknown-*/, 32670 /*-Unknown-*/, 32671 /*-Unknown-*/, 32672 /*-Unknown-*/, 32673 /*-Unknown-*/, 36448 /*-Unknown-*/, 36449 /*-Unknown-*/, 36483 /*-Unknown-*/, 36662 /*-Unknown-*/, 36889 /*-Unknown-*/, 36955 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=6, `RewardBonusMoney`=0, `FlagsEx`=8, `VerifiedBuild`=19865 WHERE `Id`=29084; -- Classic Random 35-39 (1st)
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=5, `RewardBonusMoney`=0, `FlagsEx`=8, `VerifiedBuild`=19865 WHERE `Id`=29085; -- Classic Random 35-39 (Nth)
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=5, `RewardBonusMoney`=0, `AllowableRaces`=33555378, `VerifiedBuild`=19865 WHERE `Id` IN (29096 /*Mor'shan Caravan Pick-Up*/, 29097 /*Mor'shan Caravan Rescue*/, 29099 /*Mor'shan Caravan Delivery*/);
+UPDATE `quest_template` SET `RewardXPDifficulty`=5, `RewardMoney`=94000, `RewardMoneyDifficulty`=5, `RewardBonusMoney`=1550, `AreaGroupID`=0, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id` IN (29169 /*The Beasts Within*/, 29174 /*Break Their Spirits*/);
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=8, `RewardBonusMoney`=975, `AreaGroupID`=0, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id` IN (29170 /*UNUSED REUSE*/, 29171 /*UNUSED REUSE*/);
+UPDATE `quest_template` SET `RewardBonusMoney`=150, `AllowableRaces`=52430847, `QuestDescription`='Come closer, $G man:sweetheart;! Let ol'' Griftah look at yer shiny things....$b$bHmm. Yeh, yeh, not bad, but ya can do better. Much, much better.$b$b<Griftah leans in and whispers.>$b$bThere be priceless shinies everywhere, $n, ya just gotta know where to look! It be yer lucky day; I know a fella who can help ya find more shinies than ya can ever carry.$b$bVisit my ol'' friend, Budd, near Zul''Aman and show him this here. Ya be tellin'' him ol'' Griftah sent ya and he''ll let ya in on his new project.', `VerifiedBuild`=19865 WHERE `Id`=29178; -- Oooh, Shinies!
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=6, `RewardBonusMoney`=1900, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id`=29180; -- Promises, Promises...
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=7, `RewardBonusMoney`=3050, `FlagsEx`=8, `RewardCurrencyID1`=0, `RewardCurrencyQty1`=0, `VerifiedBuild`=19865 WHERE `Id`=29183; -- Daily Tier 2 Heroic (Nth)
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=7, `RewardBonusMoney`=3050, `FlagsEx`=8, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id`=29185; -- Daily Tier 2 Heroic (1st)
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=5, `RewardBonusMoney`=1550, `AllowableRaces`=52430847, `QuestDescription`='Hello $n. Checking in on your Fire Lasher?$B$BHe seems quite hungry, but no mixture of fertilizer or plant growth seems to interest him.$B$BSome plants are carnivorous, and I''d like to test this rather unconventional theory.$B$BWould you retrieve some Lava Burster Hearts for me? The Lava Bursters frequent the fields to the north.', `VerifiedBuild`=19865 WHERE `Id`=29256; -- [DEPRECATED] Eat Your Heart Out
+UPDATE `quest_template` SET `AllowableRaces`=52430847, `QuestDescription`='Good to see you again, $n. Your Lasher here has invented a new game - hide and seek!$B$BIt looks like he wants to play with you.$B$BWait until he hides himself, then look for him somewhere in the camp.$B$BIf he''s too well-hidden, I''ve created this special mist that will reveal his general direction. Don''t tell him I gave it ito you.', `VerifiedBuild`=19865 WHERE `Id`=29259; -- [DEPRECATED] Hide and Seek
+UPDATE `quest_template` SET `RewardMoney`=154000 WHERE `Id` IN (29261 /*Zul'Aman Voodoo*/, 29262 /*Zul'Gurub Voodoo*/, 29266 /*DEPRECATED Zul'Gurub Voodoo (NYI)*/, 29313 /*The Secret to Perfect Kimchi*/, 29314 /*Remembering the Ancestors*/, 29315 /*Fungus Among Us*/, 29316 /*Back to Basics*/, 29317 /*Fish Head*/, 29318 /*Ribs for the Sentinels*/, 29319 /*Tadpole Terror*/, 29320 /*Like Pike?*/, 29321 /*Happy as a Clam Digger*/, 29322 /*Time for Slime*/, 29323 /*Stocking Up*/, 29324 /*The Sister's Pendant*/, 29325 /*A Slippery Snack*/, 29332 /*Lily, Oh Lily*/, 29333 /*Escargot A Go-Go*/, 29334 /*Roach Coach*/, 29342 /*Cold Water Fishing*/, 29343 /*One fer the Ages*/, 29344 /*Fish fer Squirky*/, 29345 /*Pond Predators*/, 29346 /*The Ring's the Thing*/, 29347 /*Live Bait*/, 29348 /*The Race to Restock*/, 29349 /*Craving Crayfish*/, 29350 /*The Gnomish Bait-o-Matic*/, 29351 /*A Round for the Guards*/, 29352 /*A Fowl Shortage*/, 29353 /*Keepin' the Haggis Flowin'*/, 29354 /*Shiny Baubles*/, 29355 /*Can't Get Enough Spice Bread*/, 29356 /*I Need to Cask a Favor*/, 29357 /*Spice Bread Aplenty*/, 29358 /*Pining for Nuts*/, 29359 /*An Old Favorite*/, 29360 /*Would You Like Some Flies With That?*/, 29361 /*Moat Monster!*/, 29362 /*"Magic" Mushrooms*/, 29363 /*Mulgore Spice Bread*/, 29364 /*Corn Mash*/, 29365 /*Perfectly Picked Portions*/, 30584 /*-Unknown-*/, 30585 /*-Unknown-*/, 30586 /*-Unknown-*/, 30588 /*-Unknown-*/, 30598 /*-Unknown-*/, 30613 /*-Unknown-*/, 30658 /*-Unknown-*/, 30678 /*-Unknown-*/, 30698 /*-Unknown-*/, 30700 /*-Unknown-*/, 30701 /*-Unknown-*/, 30753 /*-Unknown-*/, 30754 /*-Unknown-*/, 30763 /*-Unknown-*/, 31308 /*-Unknown-*/, 31309 /*-Unknown-*/, 31316 /*-Unknown-*/, 31443 /*-Unknown-*/, 31444 /*-Unknown-*/, 31446 /*-Unknown-*/, 31548 /*-Unknown-*/, 31549 /*-Unknown-*/, 31550 /*-Unknown-*/, 31551 /*-Unknown-*/, 31552 /*-Unknown-*/, 31553 /*-Unknown-*/, 31555 /*-Unknown-*/, 31556 /*-Unknown-*/, 31568 /*-Unknown-*/, 31569 /*-Unknown-*/, 31570 /*-Unknown-*/, 31571 /*-Unknown-*/, 31572 /*-Unknown-*/, 31573 /*-Unknown-*/, 31574 /*-Unknown-*/, 31575 /*-Unknown-*/, 31576 /*-Unknown-*/, 31577 /*-Unknown-*/, 31578 /*-Unknown-*/, 31579 /*-Unknown-*/, 31580 /*-Unknown-*/, 31581 /*-Unknown-*/, 31582 /*-Unknown-*/, 31583 /*-Unknown-*/, 31584 /*-Unknown-*/, 31585 /*-Unknown-*/, 31586 /*-Unknown-*/, 31587 /*-Unknown-*/, 31588 /*-Unknown-*/, 31589 /*-Unknown-*/, 31590 /*-Unknown-*/, 31591 /*-Unknown-*/, 31592 /*-Unknown-*/, 31593 /*-Unknown-*/, 31693 /*-Unknown-*/, 31724 /*-Unknown-*/, 31725 /*-Unknown-*/, 31726 /*-Unknown-*/, 31728 /*-Unknown-*/, 31729 /*-Unknown-*/, 31780 /*-Unknown-*/, 31781 /*-Unknown-*/, 31785 /*-Unknown-*/, 31812 /*-Unknown-*/, 31813 /*-Unknown-*/, 31814 /*-Unknown-*/, 31815 /*-Unknown-*/, 31817 /*-Unknown-*/, 31818 /*-Unknown-*/, 31819 /*-Unknown-*/, 31821 /*-Unknown-*/, 31822 /*-Unknown-*/, 31823 /*-Unknown-*/, 31824 /*-Unknown-*/, 31825 /*-Unknown-*/, 31826 /*-Unknown-*/, 31827 /*-Unknown-*/, 31828 /*-Unknown-*/, 31830 /*-Unknown-*/, 31831 /*-Unknown-*/, 31832 /*-Unknown-*/, 31850 /*-Unknown-*/, 31851 /*-Unknown-*/, 31852 /*-Unknown-*/, 31854 /*-Unknown-*/, 31862 /*-Unknown-*/, 31870 /*-Unknown-*/, 31871 /*-Unknown-*/, 31872 /*-Unknown-*/, 31882 /*-Unknown-*/, 31883 /*-Unknown-*/, 31884 /*-Unknown-*/, 31885 /*-Unknown-*/, 31889 /*-Unknown-*/, 31891 /*-Unknown-*/, 31897 /*-Unknown-*/, 31902 /*-Unknown-*/, 31903 /*-Unknown-*/, 31904 /*-Unknown-*/, 31905 /*-Unknown-*/, 31906 /*-Unknown-*/, 31907 /*-Unknown-*/, 31908 /*-Unknown-*/, 31909 /*-Unknown-*/, 31910 /*-Unknown-*/, 31911 /*-Unknown-*/, 31912 /*-Unknown-*/, 31913 /*-Unknown-*/, 31914 /*-Unknown-*/, 31915 /*-Unknown-*/, 31916 /*-Unknown-*/, 31917 /*-Unknown-*/, 31918 /*-Unknown-*/, 31919 /*-Unknown-*/, 31920 /*-Unknown-*/, 31921 /*-Unknown-*/, 31922 /*-Unknown-*/, 31923 /*-Unknown-*/, 31924 /*-Unknown-*/, 31925 /*-Unknown-*/, 31926 /*-Unknown-*/, 31927 /*-Unknown-*/, 31928 /*-Unknown-*/, 31929 /*-Unknown-*/, 31930 /*-Unknown-*/, 31931 /*-Unknown-*/, 31932 /*-Unknown-*/, 31933 /*-Unknown-*/, 31934 /*-Unknown-*/, 31935 /*-Unknown-*/, 31951 /*-Unknown-*/, 31952 /*-Unknown-*/, 31953 /*-Unknown-*/, 31954 /*-Unknown-*/, 31955 /*-Unknown-*/, 31956 /*-Unknown-*/, 31957 /*-Unknown-*/, 31958 /*-Unknown-*/, 31966 /*-Unknown-*/, 31967 /*-Unknown-*/, 31970 /*-Unknown-*/, 31971 /*-Unknown-*/, 31972 /*-Unknown-*/, 31973 /*-Unknown-*/, 31974 /*-Unknown-*/, 31975 /*-Unknown-*/, 31976 /*-Unknown-*/, 31977 /*-Unknown-*/, 31980 /*-Unknown-*/, 31981 /*-Unknown-*/, 31982 /*-Unknown-*/, 31983 /*-Unknown-*/, 31984 /*-Unknown-*/, 31985 /*-Unknown-*/, 31986 /*-Unknown-*/, 31991 /*-Unknown-*/, 32008 /*-Unknown-*/, 32009 /*-Unknown-*/, 32175 /*-Unknown-*/, 32428 /*-Unknown-*/, 32434 /*-Unknown-*/, 32439 /*-Unknown-*/, 32440 /*-Unknown-*/, 32441 /*-Unknown-*/, 32496 /*-Unknown-*/, 32503 /*-Unknown-*/, 32603 /*-Unknown-*/, 32604 /*-Unknown-*/, 32863 /*-Unknown-*/, 32868 /*-Unknown-*/, 32869 /*-Unknown-*/, 33137 /*-Unknown-*/, 33222 /*-Unknown-*/, 33349 /*-Unknown-*/, 33455 /*-Unknown-*/, 33485 /*-Unknown-*/, 33492 /*-Unknown-*/, 33561 /*-Unknown-*/, 33755 /*-Unknown-*/, 34192 /*-Unknown-*/, 34193 /*-Unknown-*/, 34194 /*-Unknown-*/, 34758 /*-Unknown-*/, 34846 /*-Unknown-*/, 35066 /*-Unknown-*/, 35072 /*-Unknown-*/, 35073 /*-Unknown-*/, 35074 /*-Unknown-*/, 35075 /*-Unknown-*/, 35154 /*-Unknown-*/, 36131 /*-Unknown-*/, 36132 /*-Unknown-*/, 36141 /*-Unknown-*/, 36199 /*-Unknown-*/, 36201 /*-Unknown-*/, 36202 /*-Unknown-*/, 36296 /*-Unknown-*/, 36404 /*-Unknown-*/, 36423 /*-Unknown-*/, 36469 /*-Unknown-*/, 36471 /*-Unknown-*/, 36510 /*-Unknown-*/, 36513 /*-Unknown-*/, 36514 /*-Unknown-*/, 36515 /*-Unknown-*/, 36517 /*-Unknown-*/, 36848 /*-Unknown-*/, 37201 /*-Unknown-*/, 37203 /*-Unknown-*/, 37205 /*-Unknown-*/, 37206 /*-Unknown-*/, 37207 /*-Unknown-*/, 37208 /*-Unknown-*/, 38175 /*-Unknown-*/, 38188 /*-Unknown-*/, 38299 /*-Unknown-*/, 38300 /*-Unknown-*/, 38306 /*-Unknown-*/, 38344 /*-Unknown-*/, 38351 /*-Unknown-*/, 38354 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=2, `RewardBonusMoney`=380, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id`=29271; -- Bound for Warmer Weather
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=5, `RewardBonusMoney`=1550, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id`=29294; -- Animate Embers
+UPDATE `quest_template` SET `FlagsEx`=8, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id` IN (29340 /*Short-Supply Reward*/, 29341 /*Short-Supply Reward*/);
+UPDATE `quest_template` SET `RewardBonusMoney`=146300, `AllowableRaces`=33555378, `VerifiedBuild`=19865 WHERE `Id` IN (29459 /*A Captured Banner*/, 29467 /*Talkin' Tonks*/);
+UPDATE `quest_template` SET `RewardBonusMoney`=146300, `Flags`=16384, `AllowableRaces`=33555378, `VerifiedBuild`=19865 WHERE `Id`=29469; -- Rearm, Reuse, Recycle
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=5, `RewardBonusMoney`=60, `AllowableRaces`=33555378, `VerifiedBuild`=19865 WHERE `Id`=29533; -- Dark Tidings
+UPDATE `quest_template` SET `QuestDescription`='Alright. According to the clues you found, that was Anduin''s ship, and Admiral Taylor was the captain. \n\nAnd Admiral Taylor''s last entry says he was going to fight off the hozen and protect the vessel after the shipwreck.\n\nThe locals say these hozen sometimes take prisoners, and I didn''t see Taylor''s corpse anywhere among the wreckage. So you''ll probably find Taylor at the hozen encampment to the northeast.\n\nGet going, we have no time to lose!' WHERE `Id`=29553; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Alright, soldier. I''ve got a critical mission for you.\n\nGet down to the coastline south of here - in the cove there you''ll find a wrecked Alliance vessel. I need you to search it and find out if it was the ship that was carrying Anduin. \n\nThen, recover the Captain''s Log and see if it has any information on where we can find him.\n\nSince the log is from a military ship, it''ll be written using a cipher - take it to Nodd Codejack afterwards. He''s keeping watch on the wreck from the other end of the cove.' WHERE `Id`=29555; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We''ve located an Alliance wreck to the south. Unfortunately, the locals have informed us that it''s currently being scavenged by a group of creatures called "hozen."\n\nBy pillaging our wrecked ships, these creatures have already shown that they aren''t friendly. We can''t have them taking spoils from our ships, stealing our supplies, and worse, potentially capturing or killing any survivors.\n\nGet down there and take them out! When you''re done, meet up with Nodd Codejack, our SI:7 agent in the area.' WHERE `Id`=29556; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=6, `RewardBonusMoney`=30, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id`=29569; -- Warlord Kalithresh's Prized Possession
+UPDATE `quest_template` SET `RewardBonusMoney`=0, `VerifiedBuild`=19865 WHERE `Id` IN (29671 /*The Black Morass*/, 29703 /*-Unknown-*/, 33409 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardBonusMoney`=180, `VerifiedBuild`=19865 WHERE `Id`=29672; -- The Opening of the Dark Portal
+UPDATE `quest_template` SET `VerifiedBuild`=19865 WHERE `Id` IN (30044 /*-Unknown-*/, 31685 /*-Unknown-*/, 34617 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardBonusMoney`=4900, `VerifiedBuild`=19865 WHERE `Id` IN (30065 /*-Unknown-*/, 30879 /*-Unknown-*/, 30881 /*-Unknown-*/, 30883 /*-Unknown-*/, 30907 /*-Unknown-*/, 31755 /*-Unknown-*/, 31756 /*-Unknown-*/, 32167 /*-Unknown-*/, 32168 /*-Unknown-*/, 32169 /*-Unknown-*/, 32420 /*-Unknown-*/, 32421 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardMoneyDifficulty`=7, `RewardBonusMoney`=3050, `RewardCurrencyID1`=0, `RewardCurrencyQty1`=0, `AllowableRaces`=52430847, `VerifiedBuild`=19865 WHERE `Id`=30177; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=2450, `VerifiedBuild`=19865 WHERE `Id` IN (30197 /*-Unknown-*/, 32390 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='My son - can you find my son?\n\nWhen the Jinyu attacked, he ran off in the confusion. I don''t know if they''ve done anything with him, or if he''s still alive, even.\n\nNothing else matters if I can''t find him. \n\nI''d ask Mei... but something''s wrong with her. She seems too... impulsive since the attack. I just can''t trust that she''d bring him back safely.' WHERE `Id`=30467; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Of course, the first priority is finding my son. But, if we save ourselves only to starve, then what have we accomplished, in the end?\n\nPlease, I need you to recover some of the supplies that the Jinyu took from our caravan.' WHERE `Id`=30469; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='From the moment I first rose from the river, I knew I was destined to be Waterspeaker.\n\nI was taught many rituals, and have performed all of them, save one.\n\nThere was one, an extremely ancient one, that we were told to call upon if our people ever turned against us. \n\nThis must have happened in our people''s distant past, because we haven''t needed to use it in our village''s memory.\n\nI suppose now is the time to do so.' WHERE `Id`=30480; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='<Admiral Taylor winces in pain.>\n\nJade Forest was a disaster. \n\nAnduin''s gone. We lost some good people. We didn''t stop the Horde from advancing into the continent. \n\nBut I think I''ve found a way to get the locals on our side. You just helped fight off some of these "yaungol", no?\n\nI hear yaungol sacked Westwind Rest, a local village. We''ve been told that two groups of survivors have camped out along the road west out of town.\n\nWe help them out, maybe they''ll consider siding with the Allliance.' WHERE `Id`=30512; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I am injured, but we can''t stop here.\n\nThe hozen were... unreliable. The pandaren would be much better allies.\n\nYou have seen the refugees in this village, and heard of the yaungol invasion, no?\n\nWell, we''ve heard from the locals that Eastwind Rest, a nearby village, was destroyed by the Yaungol.\n\nApparently some survivors have gathered along the road out of town.\n\nGo. Take the road west. Gather the survivors. \n\nWe''ll help them rebuild. Then, they will see the advantage of joining the Horde!' WHERE `Id`=30513; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The yaungol have always been a difficult, proud people, but never this violent or aggressive. \n\nI do not know what has prompted this change in their behavior, but we don''t have time to find out, now. We fear for our lives and livelihoods as long as Ur-Bataar, leader of the Bataari yaungol, lives.\n\nGo, set the banner in his camp ablaze to challenge him, and then defeat him in battle. Only then will we be secure.' WHERE `Id` IN (30514 /*-Unknown-*/, 30515 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='I... I escaped from Farmer Chow''s, to the southeast of here. It''s been taken over by yaungol, but the old man and his wife just won''t give it up!\n\nPlease, go there and help him out. Maybe if you do, he''ll be willing to send some folks back here and help you guys farm up some food for the new town?' WHERE `Id`=30569; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I... I escaped from Farmer Chow''s, to the southeast of here. It''s been taken over by yaungol, but the old man and his wife just won''t give it up!\n\nPlease, go there and help him... Maybe if you do, he''ll be willing to send some folks back here and help you guys farm up some food for the new town?' WHERE `Id`=30570; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Mobility is going to be key to maintaining our foothold in this new land. Problem is, there''s no way to maintain mobility without mounts, and... well, we don''t have many of those here, now do we?\n\nThe local yaks seem to make good mounts. At least, the local pandaren say they do. Why don''t you go round some up for us?' WHERE `Id`=30575; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Oi!\n\nWe need ta'' get us some food, if we''re gonna survive here for long!\n\nYe'' may not know it, but I''m somethin'' of a cook me''self. Why don''tcha go out there and fetch us some meaty bits. I can cook ''em up and feed us for weeks! Or, days, at least.' WHERE `Id`=30583; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I know your friends are worried about the animating statues over at Mogujia, but I''ll tell you what you should really be worried about.\n\nWhere there are animated statues, there are mogu. I don''t know if you''ve seen one before, but if you haven''t...\n\nWell, let''s just say mogu are bad, bad, news.\n\nWhile you''re dealing with whatever else you''re doing, you need to get the mogu behind the trouble!' WHERE `Id`=30619; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I know your friends are worried about the animating statues over at Mogujia, but I''ll tell you what you should really be worried about.\n\nWhere there are animated statues, there are Mogu. I don''t know if you''ve seen one before, but if you haven''t...\n\nWell, let''s just say Mogu are bad, bad, news.\n\nWhile you''re dealing with whatever else you''re doing, you need to get the Mogu behind the trouble!' WHERE `Id`=30620; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Look, I know the Alliance needs recruits, and there''s just not enough of us here right now to make a fighting presence of this town.\n\nBut I know that the yaungol over at Fire Camp Ordo, to the northwest, have taken many of my people as prisoners. And I also know that if you would be willing to rescue them from their captivity, they''d more than likely be willing to join the Alliance.\n\nWhat do you say, $n?' WHERE `Id`=30650; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Look, I know the Horde needs recruits, and there''s just not enough of us here right now to make a fighting presence of this town.\n\nBut I know that the yaungol over at Fire Camp Ordo, to the west, have taken many of my people as prisoners. And I also know that if you would be willing to rescue them from their captivity, they''d more than likely be willing to join the Horde.\n\nWhat do you say, $n?' WHERE `Id`=30655; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=1950 WHERE `Id`=30662; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I sent for reinforcements from the Shado-Pan Monastery, but have heard nothing back. We have already lost the town.\n\nA few lucky villagers may have survived, but we are pinned down here.\n\nWe do not have time to entertain strangers. If you can fight, help my men defend this tower. If not, leave, for you will not survive long here.' WHERE `Id`=30665; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Our true enemies are the sha, not the yaungol.\n\nThe sha are emotion manifest. Destructive, yes. But undisciplined. Undisciplined force cannot last. The flood, in dispersion, loses its force. The wildfire burns its fuel.\n\nAnd, discipline and wisdom can turn their destructive energy against themselves.\n\nBring me the essences of the sha in the village, and I will explain further.' WHERE `Id`=30670; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I can''t believe you made it here!\n\nI don''t know how much longer I could have stayed hidden in here.$B$BI''m sure that there are others. $C, we have to rescue them! Then we can go to Shado-Pan Fallback. The master there will know what to do!' WHERE `Id`=30682; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Simply killing Kobai will accomplish nothing, as he is possessed by a particularly powerful and destructive Sha - Malevolent Fury.\n\nYou will use the trap I have fashioned from the Blinding Rage Essences you brought. Lure him into the trap, and then steal his mask. Once you put it on, Malevolent Fury will appear and attempt to take control of you.\n\nDefeat him, and we will have made a victory of this tragic situation. You can find him to the north of the retreat, where he taunts us in insane rage.' WHERE `Id`=30690; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The battle against the Sha is eternal - we can not leave this place. \n\nBut I am troubled by the absence of reinforcements from the Monastery given that we sent for them days ago. \n\nYou have performed admirably, perhaps you could travel to Winter''s Blossom, our base camp on the way to the Shado-Pan Monastery. Speak with Lin Silentstrike once you arrive - he should know what is happening. To get there, travel north of the village and follow the road through Shado-Li Basin to Winter''s Blossom.' WHERE `Id`=30699; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='When we regrouped after their initial attack, we numbered three less. You can fight, and we must plan our defense should these cursed yaungol attack again. \n\nIf you would help us, grant our fallen comrades their last rites, and recover their armor. You will find their bodies to the west, near the gate.\n\nAnd try to keep the birds off them.' WHERE `Id`=30715; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Hmm... If Shado-Master Chong trusted you, perhaps you can help us.\n\nThe yaungol are our enemies.\n\nStill, we must prove we are better than they. We will show them honor in death.\n\nAs after most battles, the carrion birds have begun gathering. Thin their numbers, so the bodies of our foes will not be desecrated. They''ve gathered at the battlefield to the west.' WHERE `Id`=30723; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='They are attacking again!\n\n<Lin looks to the Ox Gate.>\n\nArchers... on the wall!\n\nI need you to get up there. My wife Suna went to scout the wall with that fool Lao-Chen. Perhaps if he had spent more time preparing defenses and less building that ridiculous ale lift contraption...\n\nIt matters not. Get a kite from Len, to the west, and then get up there and find my wife. She''ll know what to do next.' WHERE `Id`=30724; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=6150, `VerifiedBuild`=19865 WHERE `Id` IN (30737 /*-Unknown-*/, 32418 /*-Unknown-*/, 32419 /*-Unknown-*/, 32562 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='The yaungol on the wall here are providing covering fire for the ones below. I don''t know what Lao-chen is thinking, but I want you to deal with these archers.\n\nThe good news is, up here we''ve got the spirit of the Ox helping us. When they''re weakened, the ox spirit will stun them and you can use it to knock ''em off the wall.\n\nYou''ll find the archers just out that door.' WHERE `Id`=30750; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I have an idea, and... am prepared to make a terrible sacrifice.\n\nAs much as I know that we need my stout brew, to fortify our defenders for the long-term security of the Ox Gate...\n\nIt is too painful to discuss details now, but please - while you are up here defending the wall, gather the barrels of oil they are using to light their arrows. We will need them.' WHERE `Id`=30751; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I simply refuse to believe the guards will not grant us entry to the monastery should we impress upon them the seriousness of the situation.\n\nFriend, go east, to the sentinel in front of the Monastery, and demand admittance. I will come with you.' WHERE `Id`=30752; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Lin...\n\nI don''t care what Ban, Lao-Chin, or even Taran Zhu says. I''m moving ahead into Townlong. I may not be able to save Lin myself, but I''m not going to sit around waiting for everyone else to catch up.\n\nOnce Taran Zhu opens the doors to his precious monastery, we''ll save Lin. Until then, I''ll scout ahead and make sure he''s alright.' WHERE `Id`=30768; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I... am alive... but barely. They killed the rest. My friends... and family...\n\nI must return to the village... But, I do not have long, and cannot move on my own... are you a healer? I... have a healing potion in my hut... search my belongings. You can use your magic, if you have it.' WHERE `Id`=30794; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='After the mercenaries robbed us, most left.\n\nBut one of them... after the others took all we had, he ran the rest of us through. For sport!\n\nGet justice for the fallen. Perhaps news of their death will raise my spirits enough to go on.\n\nYou''ll find them just west of here.' WHERE `Id`=30805; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Many have perished here. We will need to honor them properly, which means gathering the makings of incense of life. \n\nIt doesn''t just smell nice - it has restorative properties, and can even help plants grow. Maybe I can get a whiff of the ingredients to get me back on my feet.\n\nThe materials can be found on creatures around here - except for the spices, which were stolen by the mercenaries who pillaged the village. ' WHERE `Id`=30806; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I do not wish to dishonor my friends and leave them in unmarked graves.\n\nYet, we have never needed to bury so many at once, and I am in no condition to gather materials.\n\nPlease, visit the lakes that hug the mountains edge along the road to the south. Underneath the waterfalls there, you will find stones that have been polished to a sheen by the falling water. They will make suitable headstones.' WHERE `Id`=30807; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Thank you much, friend. After this tragedy, it is good that fortune has smiled on us and sent you.\n\nYou have gotten justice for my fallen friends, and gathered the necessary materials to honor them. I will gather their bodies, prepare the materials for their funerals, and meet you at the graveyard. \n\nIn the meantime, however, please return to my cousin and ask him to gather the villagers for the funeral.' WHERE `Id`=30819; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='As I said, I will gather the town - we will be at the funeral. \n\nAs the one who has done so much to honor our friends, we feel it is only right that you will be the one to light the Incense of Life and usher their spirits to the life beyond.' WHERE `Id`=30820; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Pools of the same murky substance that came out of Mei emerged in the lake recently.\n\nI will travel into the Mere with you. Point out the pools of corruption that you are ready for me to cleanse.\n\nYou will need to deal with whatever comes out and protect me as I complete the ritual.' WHERE `Id`=30828; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='They survived? My father is alive!\n\nI thought we would all die here in this horrible mere, at the hands of these insane Jinyu.\n\nI will find my way back - meet me back at camp.' WHERE `Id`=30834; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I can hear the voice of the Mere - it has been purified.\n\nBut, this chapter in my people''s history will never be closed - not until we defeat Shai Hu.\n\nHe has retreated to the central island in the Mere, corrupting our holiest of sites.\n\nBeware - he is strong. But, after all we have done, I am confident we will be stronger.' WHERE `Id`=30855; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='When I trained as a Brewmaster, I didn''t expect to use my knowledge like this...\n\nDid you know beer catches fire when lit? Well, with yaungol oil mixed in, it''s downright explosive.\n\nI''ve mixed the oil in with these kegs. Roll them at the yaungol over by the gate, and ignite them when you get close. \n\nIt''ll take a few seconds for the keg to blow, but when it does...\n\nWell, let''s just say I wouldn''t want to be over there.\n\nWhich is why I''ll be over here. Mourning the loss of this brew.' WHERE `Id`=30991; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We''ve heard back from Suna, on the wall. Something''s going on...\n\nIt looks like they are preparing for their final push. It''s time to finish this, friend.' WHERE `Id`=30992; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='This has simply gone too far. I cannot ignore our abandonment any longer.\n\nAfter all that''s happened here, and all you''ve been through in Firebough, we must travel to the monastery.\n\nWhatever they are doing in there can wait! We can take my balloon up the mountain to the Monastery. It''s anchored back by the camp, to the northeast.' WHERE `Id`=30993; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Alright. Thanks to you, we have the wall under control. Good job. \n\nI''ll stay up here for a little while and make sure no more yaungol get up onto the wall.\n\nYou, though, should go back down and see what Lao-Chin has cooked up. I hate to say it, but maybe he had a good idea after all...' WHERE `Id`=30994; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='This... is unspeakable. If the monastery has truly been taken over by the Sha, we will need a great effort to purge the monks inside of corruption.\n\nGather a group of your allies, and meet me inside the Monastery.' WHERE `Id` IN (31030 /*-Unknown-*/, 31031 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='The Yaungol are a constant nuisance, but the group at Fire Camp Gai-Cho, to the northeast, conspired with the Osul yaungol in their recent incursion into Kun-Lai.\n\nWe cannot allow such an incursion to go unpunished.\n\nGo, attack Fire Camp Gai-Cho. We need to make sure they remain occupied, so that they cannot rise up and threaten The Ox Gate again.' WHERE `Id`=31113; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We have always left the Deadtalkers alone. For so long, they were just responsible for maintaining the sacred burial grounds of the yaungol tribes.\n\nNow, though, they are practicing dark magic, defiling the corpses of their former clanmates... \n\nI know not where they learned those dark magics, or why they no longer treat their dead with respect, but we do not have time to find out. \n\nWe need to stop them.' WHERE `Id`=31114; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The spirits that the Yaungol are entrapping from the remains of their ancestors still have a bit of the essence of life within them. \n\nIf you defeat the spirits in battle, you can collect essence from the spirits as dust, and then return it to the corpses in the area, which will send the spirits, finally, to the next life.\n\nThis is the only way to set right what the Deadtalkers have done. It will also help keep us safe.' WHERE `Id`=31116; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We need to understand what went wrong with the Deadtalkers. \n\nFor so many years, the Deadtalkers were simply responsible for maintaining the burial grounds and holding funerals for fallen warriors.\n\nFrom a recent raid, we''ve recovered a tablet from the grounds that is clearly written using a cipher, but it isn''t one we''ve encountered before. If you can gather a ciphered scroll from one of the Deadtalkers, we can begin to put together the cypher and understand what''s happened.' WHERE `Id`=31118; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The mantid are our enemies. As are the yaungol at Fire Camp Gai-Cho.\n\nIt is fortunate, then, that they are also each other''s enemies. Mantid from Kri''vess constantly attack the Gai-Cho yaungol, who hold them off at their front gates.\n\nI want you to wreak havoc. "Borrow" some highly explosive oil barrels from camp Gai-Cho, and toss them down onto the battlefield from the air.\n\nI don''t care which ones you kill, just kill a lot of them.' WHERE `Id`=31119; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Cheng Bo is the Warbringer of Fire Camp Gai-Cho. While you''ve made a dent in their operations, you now have an opportunity to strike a major blow. \n\nSlay the Warbringer!' WHERE `Id`=31120; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='It looks like you''re quite the fighter, $p.\n\nChao heard about it, and she''s been talking about how she''d kick your...\n\nWell, let''s just say I think you should challenge her and try to get her respect.' WHERE `Id`=31127; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Lao-Chin seems to have his head in the clouds... or, rather, in his beer.\n\nAfter all of his recent battles, he seems completely obsessed with with trying to develop the perfect brew for fighting. \n\nThat''s well and good, but we need him to actually do some fighting!\n\nYou should go challenge him, see if you can snap him out of his rut. \n\nIf you beat him, he''ll probably want to go out and help fight just to try to one-up you!' WHERE `Id`=31128; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Now that you''ve had the chance to test your abilities in battle, it''s time to explain one more reason why training is so important.$B$BAs you get more experience, you''ll be able to do new techniques you never thought of.\n\nGo, get some experience, learn a new skill, and demonstrate it on one of the training dummies.' WHERE `Id`=31142; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The truth is, you already have the talent and ability to learn what you need to. What I can help you do is show you where to unlock it.\n\nFirst, you must practice until you begin to understand a new technique. The first technique you learn will be the Tiger Palm. Go, learn more until you have unlocked the potential within yourself, and then practice your new move!\n\nRemember - it''s all in the mind!' WHERE `Id`=31151; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='As you walk the road of your training, you will begin to discover within yourself the power to unlock new techniques. You need not even learn them from me, or another more experienced monk - you will find that they come to you on their own.\n\nFor now, you should go and practice the basics. Gather more experience, and develop a new technique - once you have, you can practice it on the dummies nearby to master it.' WHERE `Id`=31157; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='You have done well. As you continue along your path, you will grow, learning new techniques that you couldn''t have imagined before.\n\nYour first lesson is the power of experience. Go, learn a new ability, and demonstrate it for me.' WHERE `Id`=31166; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I hope your people are all alright... the crash was unbelievably loud and destructive!\n\n<Mojo looks you over, evaluating your potential.>\n\nYes, you''ll do fine. They''ve said that they need more people to fight, and they don''t want me to hurt myself. I''m not afraid, but I don''t want to intrude. So, I''ll teach you.\n\nAs you may have discovered, your experiences in combat will unlock new potential within you. Go, see if you can master a new ability. Show it to me. You''ll get the hang of things.' WHERE `Id`=31173; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The mantid outnumber us quite badly. Hundreds of them for each of us.\n\nAnd, they surround us on two sides - at Gao-Ran in the south we''re holding them off, but to the west, on the island they call Sra''vess, they continue to mass unabated.\n\nWe''re not stupid. We''re not going to launch a full scale attack on them. We can''t sustain an intense battle on multiple fronts.\n\nInstead, we''re going to send you, and one of our Wu Kao, to do some dirty work. Sounds fun, doesn''t it?' WHERE `Id`=31196; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Killing the smaller mantid works mostly as a distraction. It forces them to replenish their numbers before they consider any serious offensive.\n\nThe big ones, though - we kill a few of those, and we really disrupt operations on the island. That buys ourselves a substantial amount of time. With mantid, it''s like their size is directly proportional to their importance in the empire.\n\nSo kill some of the big ones for me, while you''re out there.' WHERE `Id`=31197; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The mantid have statues built on Sra''vess. We don''t know exactly what they use them for. They may have some sort of religious significance, or maybe they assist with their sonic communication.\n\nWhen you fight your opponent, you don''t just engage them physically, you also engage them mentally. Whatever they use them for, the fact is that those statues are important to them.\n\nWhich is why I want you to blow them up. Losing something important will be a substantial hit to morale.' WHERE `Id`=31198; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The mantid don''t just attack in swarms. \n\nThey''re smart. They use alchemy, bombs... and what''s worst, they''ve got siege weapons. Those have the potential to be incredibly destructive if they attack with them.\n\nWe''ve got reports that they''re building up a force of siege weapons to the west at Sra''vess. Go and destroy them.' WHERE `Id`=31199; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Our alchemists have cooked up a set of gas bombs that will discourage mantid from staying anywhere that we set them off. \n\nIf we plant these in the critical structures of Sra''vess, they''ll need to evacuate. That should sow some chaos and delay any action from the mantid there for days.\n\nGet to it, $n.' WHERE `Id`=31200; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Our scouts have sent a very troubling report. \n\nThree of our trainees have gone missing, and our scouts found them... \n\nThey''ve been captured by the mantid and sent to their Kunchong pits. \n\nTheir Kunchong FEEDING pits. We''re lucky that the Kunchong don''t eat that often.\n\nI need you to get in there, give them these escape kites, and get them out!' WHERE `Id`=31201; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='While we''re here, we should do one more thing.\n\nThe Sra''thik Swarmlord is responsible for directing the mantid forces from the air. If we leave it alive, it''s going to cause trouble for the garrison.\n\nSo we''re not going to leave it alive. Let''s take it out, $p.' WHERE `Id`=31203; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Near the ocean, on the eastern side of Sra''vess, there is a cavern that leads to a network of caves.\n\nFrom there, the Sra''thik Hivelord maintains Sra''vess and plots against us. If we manage to take him out, we''ll disrupt their operations for days.\n\nLet''s go to it.' WHERE `Id`=31204; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='You''ve really been building up respect with the Shado-Pan, $n.\n\nNurong''s interested in trying out his skills against you.\n\nThe good news is, if you win, I''ll allow him to go with you on your missions.\n\nThe bad news is, I really don''t think you''ll win.' WHERE `Id`=31220; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='So... you''ve been challenged by the infamous Tenwu of the Red Smoke.\n\nThat''s what he calls himself, at least. He''s a good fighter, and a good rogue, but it''s a wonder he manages to sneak up on anyone with how loudly he brags about himself.\n\nAnyways, I think you should answer the challenge. Maybe it''ll give him a touch of humility. Maybe not. Either way, if you win, he''ll probably be willing to go with you on your missions. \n\nAnd I get some entertainment.' WHERE `Id`=31221; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Yeah, yeah.\n\nEveryone knows us goblins do tinkering. And explosives. And... well, ya'' know, the less reputable stuff.\n\nBut what nobody knows is that I''m really a great chef! It''s a hobby of mine.\n\nGather us up some meaty bits from the creatures around here, and I''ll cook us up the best meals ANYWHERE!\n\nAnd I promise, I''ll only use three or four percent rocket fuel.' WHERE `Id`=31251; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Well, far as I figure, we''ve got quite a lot of rebuildin'' to do.\n\nI''m not one for joining any big causes, but my farmhands aren''t gonna have much to do ''round here, to be honest. And, since you helped them out, they want to join your "Alliance." So, who am I to stop ''em?\n\nBring ''em with you, back to Farmhand Bo. I''ll miss ''em, but they''re better off with you.' WHERE `Id`=31252; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Well, far as I figure, we''ve got quite a lot of rebuildin'' to do.\n\nI''m not one for joining any big causes, but my farmhands aren''t gonna have much to do ''round here, to be honest. And, since you helped them out, they want to join your "Horde". So, who am I to stop ''em?\n\nBring ''em with you, back to Farmhand Ko. I''ll miss ''em, but they''re better off with you.' WHERE `Id`=31253; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Lok''tar, $c.\n\nWe''ve made progress, but we''re going to need mobility if we want to maintain our foothold here in Kun-Lai.\n\nI don''t see many worgs, kodo, or the like around here. What I do see are yaks. Our pandaren allies have said they make good mounts, so they''ll have to do.\n\nGo round some up and return them here, so we can get our people riding them!' WHERE `Id`=31256; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We''ve heard reports of a group of Mogu infiltrating the coast here in Townlong. I have no idea what they are doing. Frankly, I don''t care. \n\nYou''ve proven yourself, so we''ve decided to give this mission to you.\n\nWhat''s going to happen is this - you''re going to go, find them, and kill them.\n\nOur scouts reported the first group landed to the north, between here and Deadtalker''s Plateau. Go there and wipe them out.' WHERE `Id`=31266; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Those damnable Mogu...\n\nThose scouts were a distraction! While we were hunting their spies, the main force moved on Niuzao Temple. Corrupted serpents, Mogu everywhere... this is a disaster!\n\nThankfully, Ban was able to make it past their lines with the most elite members of our order. If you can slip past, too, meet up with him. We need to put a stop to this!' WHERE `Id`=31277; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Usually, Merchant Shi comes through Kun-Lai Summit to trade with the Jinyu and Grummle. We''ve heard word that he hadn''t been seen at Binan, and we haven''t seen him here...\n\nI''m worried something has happened to him. Can you go to the Inkgill Mere and see if he''s there?' WHERE `Id` IN (31451 /*-Unknown-*/, 31452 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Our new recruits have spoken in hushed tones about a group of Pandaren they call the "Shado-Pan". They are apparently very strong, and secretive.\n\nIt''s clear that, no matter what happens here in Kun-Lai, making an alliance with these Shado-Pan will be critical to our foothold in Pandaria.\n\nThat''s where you come in. Rumor is they have a base of operations to the southeast, near Firebough Nook.\n\nYou will go there, and curry their favor. For the Horde!' WHERE `Id`=31453; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Our new recruits have spoken in hushed tones about a group of Pandaren they call the "Shado-Pan". They are apparently very strong, and secretive.\n\nThat''s where you come in. Rumor is they have a base of operations to the southeast, near Firebough Nook. You should travel there as an envoy of the Alliance. Give them any help they require.' WHERE `Id`=31455; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='There''s another Pandaren settlement out here, Muskpaw Ranch. I don''t know if they''re alright, what with everything that''s been going on with the Yaungol invasion.\n\nYou''ve been so helpful - you should go check up on them, friend!' WHERE `Id` IN (31456 /*-Unknown-*/, 31457 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='One of those grummles came by and said that Lorewalker Cho sent for you. You should go ahead and meet up with him, he might have something important to say.\n\nThe grummel said he''s at Onekeg, to the north.' WHERE `Id`=31459; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='One of those adorable little grummles came by and said that Lorewalker Cho sent for you. You should meet up with him!\n\nThe grummel said he''s at Onekeg, to the north.' WHERE `Id`=31460; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=9850, `VerifiedBuild`=19865 WHERE `Id` IN (31522 /*-Unknown-*/, 31998 /*-Unknown-*/, 32006 /*-Unknown-*/);
+UPDATE `quest_template` SET `LogDescription`='test log desc ! $1oa $1oo $1oo $1oa test cona $oo fodasse $o1x caracois $o1 crl\n\n*DO NOT LOCALIZE*ass', `QuestDescription`='test desc! $1oa $1oo $1oo $1oa test cona $oo fodasse $oa caracois $1ox $9o crlaasd\n\n*DO NOT LOCALIZE*asd', `QuestCompletionLog`='test comp text! $1oa $1oo $1oo $1oa test cona $oo fodasse $o1x caracois $o1 crlas\n\n*DO NOT LOCALIZE*das' WHERE `Id`=31694; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I am sure many of our associates will be requesting your services after your victory here. But I have received a request for aid from our defenders at the wall along the Dread Wastes.\n\nIf you would assist them, then take a kite and check in with Bowmistress Li.\n' WHERE `Id`=31847; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The mogu are a bunch of right bastards!\n\nThey enslaved the pandaren who worked these caves even after their death. Ye'' gotta go free their spirits! It''s just not right.\n\nBe careful though... so much trauma, they don''t know what''s a friend and what''s an enemy. So they''ll probably fight back.' WHERE `Id`=32115; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='When I ordered the excavation of the tunnel to the northwest, I thought we''d find something useful. Gold, iron... anything!\n\nInstead, we found mogu artifacts, and I get a bunch of dwarves from the Explorers'' League to baby-sit.\n\nI hear from the soldiers that there''s trouble in the mines. I have orders from Wrynn that I have to support the Explorers'' League, but I can''t spare any troops. Can you get down there and find out what''s going on?' WHERE `Id`=32116; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The fools in the Explorers'' League have excavated an ancient mogu ruin to the northeast. And - of course - in their bumbling, they''ve disturbed the mogu spirits within.\n\nWe are going to take advantage of their ineptitude. Take this portal and meet with Kaelis Sunsoar, my contact within the ruins.' WHERE `Id`=32118; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='There''s somethin'' down there that was spookin'' the workers. Some kind o'' anomaly... looks like a ghost, or a magic spell... like nothing I''ve ever seen.\n\nI did manage to get a reading on it and put together this device to try to track it down. The display on the device will let you know roughly how close you are. \n\nOnce you get close enough, you can use it to draw out the anomaly and get rid of it for good!' WHERE `Id`=32119; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The ruins which we are occupying were built by Ogudei - an ancient mogu ruler. We know little about who he was, though the rise of the spirits in this area seems to indicate that it was related to spirit binding.\n\nWhen you destroy these spirits, a small amount of their essence will remain in this world. Bring it to us - we will analyze it and hopefully learn more about Ogudei''s history - and his power.' WHERE `Id`=32120; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='In the ruins there are a bunch of right nasty blue crystals. Look at ''em the wrong way and bloody angry ghosts run out at ya.\n\nI''m gonna be needing ye'' to go in and clear some of them out so we can get our people back to work.' WHERE `Id`=32121; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='When we dug through to an ancient section of the mogu ruins, that''s when all this nasty business went down - and that''s where the two worst o'' these ghosties emerged.\n\nWe need them gone, friend.' WHERE `Id`=32122; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I''ve got some customers lined up that wanna collect some good old fashioned ears. But not any old ears. They only want the absolute waxiest ears money can buy! \n\nGuess they think they''re lucky or something''.\n\nAnyways, I need you to go get ''em for me. I don''t want to hurt any animals, so you''ll need to get ''em from the Alliance over at Lion''s Landing.\n\nHave fun - and remember, only bring me the waxiest!' WHERE `Id`=32130; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Gnomes are excavating a stone quarry to the northeast.\n\nThey''re building stuff with it!\n\n<Zazzix rolls his eyes.>\n\nThey''re too stupid to realize it''s special mogu stone for creating animated statues. \n\nWE can mix with a little Goblin magic juice to make some real big explosions!\n\nBut the stuff is heavy. They''ve got some of their stupid bomb-bots there for excavating the stone. Blow ''em up near slabs and you''ll get chunks small enough to carry. \n\nOr, just kill ''em and take it. Whatever works.' WHERE `Id`=32131; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Our goblin friends do not have the grasp of strategy necessary to win a long term engagement, I''m afraid.\n\nThe key to eliminating any permanent establishment is to attack their ability to replenish their troops and to rebuild.\n\nIn this case, that means taking out their Peasants. Kill them, and you weaken the foundation. The rest of the keep is bound to crumble.' WHERE `Id`=32132; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We''ve spotted heavy air support over their base, in the form of way too many dwarves on way too many griffons. Means we can''t get any vision of the area from above.\n\nA troll... friend of mine gave us a set of Sentry Wards, which we can use to spy on their base and get a vantage point on what''s going on in there.\n\nBad news, friend - you''re going to be the one going in there.' WHERE `Id`=32133; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We''ve managed to get some Demolishers on the beach, but the stupid dwarves are also out there with their stupid mortar tubes, preventing the Demolishers from pushing forward and assaulting the keep itself!\n\nGet out there, kill some dwarves, and blow up some mortar tubes.' WHERE `Id`=32134; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='There are some situations in which taking out one of their soldiers is more important than killing hundreds.\n\nThey''ve deployed some of their heroes to the battlefield to help rally their defenders. Not only will killing them soften their defense, it will also leave their morale crippled.\n\nSo go, take one down for me. You can handle it.' WHERE `Id`=32135; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Sure, they''ve got about plenty of grunts out there, pounding on our door, waiting to cut our heads off.\n\nI''m not worried about grunts. But they''ve got shamans and raiders, too. The shamans use their magic to empower the grunts, and the raiders are fast and specialize in taking out our buildings.\n\nI need you to get out there and kill some of those shamans and raiders.\n\nGo! Attack! Move!' WHERE `Id`=32148; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Oh, the poor peasants...\n\nThey are cowards, yes, of course. But they don''t know how to fight, and they go out to collect lumber for our efforts... the Horde targets them... It''s just awful all around!\n\nBut, we need that lumber if we''re going to hold out. Go out and collect any they''ve dropped.' WHERE `Id`=32149; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Horde decided to put goblins in charge of their logistics. And where you have goblins, you have carelessly placed explosives.\n\nScouts have reported that they have their supplies in carts that also contain demolisher ammunition. Look at those crates the wrong way, and they''ll blow sky high. \n\nWith enough Horde resources destroyed, we''ll put a time limit on their attack and save lives. So go and take out those carts!' WHERE `Id`=32150; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The gnomes are running our quarry operation to the northwest. The stone there is especially tough - the gnomes tell me the mogu used it to fashion their constructs. \n\nI don''t know. What I do know is that we use that stone to build our towers, and the Horde has dispatched the Bilgewater goblins to steal it from us.\n\nGet out there and get some back. By the way - collateral damage may break up the stone slabs there. If so, pick that up, too.' WHERE `Id`=32151; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Horde got the bright idea to send Bilgewater goblins to attack our quarry.\n\nThey''ve been packing heavy explosives - heavy explosives that will react with the ammunition in their demolishers.\n\nKill the Bilgewater goblins until you find an explosive, plant it on one of the demolishers... and BOOM! Siege ended.' WHERE `Id`=32152; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Look, you''re tough. Tougher than the rest of the men and women I''ve got here. Which means I need you for a special mission.\n\nThe Horde is throwing their best against us. Heroes of their armies - Blademasters, Tauren Chieftans, you name it.\n\nI need you to go take one out. It''ll be a huge blow, not just to their offensive but also to morale.' WHERE `Id`=32153; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=490, `VerifiedBuild`=19865 WHERE `Id`=32182; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='$n, what I ask of you is little short of genocide, but it is a task that must be done.\n\nFind trolls within their town or on the beach and slay them, for the good of us all.' WHERE `Id`=32200; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The mines north of here are being used to extract Ghost Iron ore and energize it with lightning energy.\n\nWe need to destroy the drills they use to extract the ore. They are impervious to normal attack, but can be overloaded using the proper methods.\n\nOh - and while you''re there, take out whoever is running the operation.' WHERE `Id`=32208; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The heavy mogu presence in the mines let us know it was a place of great importance - but we needed to gather more information on their activities there, so we sent agents into the mines to spy on them.\n\nUnfortunately, many were captured, and we''ve found that some are being tortured in the mines. You have to go rescue them - nobody deserves what they are going through...\n\nAnd, when you finish, kill whoever captured them. No mercy, $p!' WHERE `Id`=32209; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Zandalari perform heinous rites against our people! They must be stopped!\n\nDelve into the heart of the Za''Tual and destroy their altars.' WHERE `Id`=32215; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Zandalari treat their skyscreamer pets as little more than scuttling vermin, bending them to their will with violence and torment.\n\nI can hear one writhing in pain at their hands.\n\nFind the tormented skyscreamer within Za''Tual and help it break free of its captors.' WHERE `Id`=32216; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The spirtibinders of the Zandalari perform sacrificial rites to appease the loa and their vile gods. These dark rituals involve the sacrifice of our people.\n\nDestroy any offerings you can find among their tents in Za''Tual and perhaps we can stall the sacrifices.' WHERE `Id`=32217; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The creatures the Zandalari ride don''t start out so big, nor do they start out the vicious and loyal creatures they become.\n\nIf you can frighten some of the hatchling skyscreamers away from the beach, perhaps they will have a chance at a real life.' WHERE `Id`=32227; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Have you heard of the loa? We do not understand all of what it is, but it seems to be a dark magic with some degree of sentience.\n\nWe do not know what power the loa might possess, but I must ask you to put a stop to their rituals, $c.' WHERE `Id`=32252; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Zandalari train skyscreamers to become ferocious beasts in the skies. The spiritbinders require endless sacrifices - of our people - to be brought to them. And, the jaguar warriors venture ever closer toward the heart of our camp.\n\nFind them in Za''Tual and remove the threat.' WHERE `Id`=32275; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We can use the pterrorwing that you found to strike a decisive blow against the mogu. \n\nTheir mining operation is vulnerable to attack from the air, and your pterrorwing is the only beast we have capable of flying out there.\n\nLet me know when you are ready!' WHERE `Id`=32277; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Long ago, Lei Shen found a rare clutch of storm dragon eggs. One of these creatures - Nalak - was particularly brutal, and Lei Shen took it for his own.\n\nThe Thunder King''s servant, Shan Bu, works to resurrect Lei Shen''s dragon, Nalak.\n\nWe must defeat Shan Bu and, if we are able, prevent him from resurrecting the dragon.' WHERE `Id`=32279; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The forge lies ahead of you, and with it the heart of the mogu''s weaponsmithing ability.\n\nAnd beyond that, the mogu gatekeeper, who holds the key to unlocking the gate to the next part of the city.\n\nIt''s time to move out!' WHERE `Id` IN (32292 /*-Unknown-*/, 32587 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Within the ruins we have identified several powerful mogu artifacts. They trapped spirits within, probably to use them in some ritual or conjuration.\n\nThey are a type of device that we haven''t identified and desperately need to study - they may reveal more of the secrets of the mogu''s spirit binding techniques. \n\nGo, find us a few samples so that we may continue a proper study.' WHERE `Id`=32342; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='There are two extremely powerful mogu spirits that the Alliance unearthed in their ineptitude.\n\nThese are choice targets for us, $c. If you kill them and collect each of their essences, we could make great progress on decoding the history of this strange ruin.' WHERE `Id`=32343; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We have detected several... anomalies in these mines, of an arcane or spiritual nature. They are disrupting our attempts to discern the nature of the magic used in the spirit binding rituals here.\n\nThey are quite elusive, but we''ve managed to isolate the arcane signature of one of these anomalies, and one of our mages has enchanted this bauble with its signature.\n\nTake the bauble. It will begin to glow more brightly as you approach the anomaly. Once you reach it, you can use the bauble to draw it out.' WHERE `Id`=32344; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Reliquary may have had a bad name in the past, but we''re not monsters. We simply hold different views about archaeology than the Explorer''s League.\n\nWe do focus on performing acts of heroism from time to time. So go, liberate some of the pandaren slave spirits in the ruins. ' WHERE `Id`=32345; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Look. We got a nasty problem here, and ol'' Troteman back at Lion''s Landing''s gonna throw us out of here if we don''t get things under control.\n\nGive us a hand, please!' WHERE `Id`=32346; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The bloody Reliquary''s snuck into the ruins. They''ve taken the lower section and are conducting all kinds of magical shenanigans down there.\n\nIt''s time we gave ''em an eviction notice, in the form of your boot in their rear!' WHERE `Id`=32347; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Alliance may think they have a stranglehold on the ruins, given that their base of operations is close.\n\nWe''re going to disabuse them of that notion. Go take out some of their guards.' WHERE `Id`=32348; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='This sealed communication was sent for you, along with urgent orders to travel to the Valley of Emperors in Kun-Lai Summit.\n\nThis looks serious. I''d not delay if I were you.$B$BSpeak to Tak-Tak for transportation.' WHERE `Id`=32376; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='First thing''s first. If we''re going to take the leader captive, we''ll need to thin the numbers of his agents.\n\nBe careful. These mogu are particularly dangerous - they appear to be manipulating the sha in ways we haven''t seen before.' WHERE `Id`=32378; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I''m not prepared to throw away more of our people fighting against an enemy we don''t know or understand. \n\nSee if you can find any clues in the area as to who exactly these "Korune" mogu are. A contingency in case this operation doesn''t go as planned.' WHERE `Id`=32379; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='It is time to make our move. Go to the Tomb of Shadows, weaken him, and take him captive.\n\nI will stay here in case Garrosh arrives. He must be delayed so that we can take our prize before he destroys it in his anger.\n\nHurry!' WHERE `Id`=32384; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We WILL get to the bottom of this.\n\n$n, you''re coming with me. We''ll search every inch of this city if we have to, but we''ll find out how they took the bell... and where.\n\nI''m picking up traces of arcane magic here... we need to follow the trail!' WHERE `Id`=32460; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Some of the strongest of the spiritbinders perform heinous rites to their wretched gods.\n\nWe''ve devised a method to destroy their altars, so the difficult task will be getting to each altar alive.\n\nVenture into the depths of Za''Tual and destroy their altars.' WHERE `Id`=32538; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Zandalari''s spiritbinders perform dark sacrifices to appease their gods, killing our people in the process.\n\nDestroy any Zandalari offerings you can find in Za''Tual to help slow the pace of their dark sacrifices.' WHERE `Id`=32539; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='If you spend some time in Za''Tual, you will likely see one of their large tents emanating a pure form of evil.\n\nPlease, venture into the troll camp and put a stop to these unspeakable rituals.' WHERE `Id`=32540; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='It pains me to think of the torture the poor skyscreamers must endure as the trolls train them to become implements of war.\n\nThe hatchlings are quite fearful, and will fly away if you even get close them. Please, frighten some away before the Zandalari corrupt them.' WHERE `Id`=32541; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Zandalari spiritbinders perform sacrifices to their gods, the beastcallers bend innocent skyscreamers to their will, and the jaguar warriors venture closer to us by the day.\n\nDispose of these threats in Za''Tual, $r, and watch the might of the trolls weaken.' WHERE `Id`=32542; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Zandalari are a formidable foe - more so than many foes we''ve encountered in the past. But you are a formidable foe as well, $n.\n\nEnter Za''Tual to and show them the risks associated with opposing the likes of you.' WHERE `Id`=32543; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='One of the trolls'' skyscreamers in Za''Tual is undergoing a ritual of torture, its will being bent forever to serve its masters.\n\nKill those that inflict such torment on the creature and we can only hope that it will return to the skies.' WHERE `Id`=32544; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The mines north of here are critical to the mogu supply line. They are using giant lightning enchanted drills to extract the ore.\n\nIf you can disrupt the drills, they''ll be destroyed, greatly slowing their ability to make weapons.\n\nOh, also, kill whoever is in charge, will you?' WHERE `Id`=32586; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Under orders from Jaina herself, some of our agents attempted to sneak past mogu lines to find out what was going on in the mines.\n\nThey were captured, and are being subjected to who-knows-what kind of awful tortures.\n\nYou must free them and kill whoever captured them. We don''t leave anyone behind!' WHERE `Id`=32588; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We have a plan to halt the mogu''s weaponmaking capabilities, and it involves the creature you recovered from the Zandalari.\n\nSpeak to me when you''re ready to learn more.' WHERE `Id`=32652; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Lei Shen found a clutch of rare storm dragon eggs early in his campaign. One - known as Nalak - was particularly brutal and killed all of its handlers, so he took it for his own.\n\nNow, Shan Bu, one of Lei Shen''s most loyal servants, works to resurrect the dragon.\n\nIt is time for us to strike against Shan Bu!\n\nSpeak to me when you are ready to launch the assault!' WHERE `Id`=32656; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The skies call out to you! It''s time to learn to fly!\n\nVisit the flying trainer, Maztha, at the Skyway in Orgrimmar.\n\nAnd don''t forget to buy a flying mount!' WHERE `Id`=32674; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The skies call out to you! It''s time to learn to fly!\n\nVisit the flying trainer, Bralla Cloudwing, at the Gryphon Roost in Stormwind.\n\nAnd don''t forget to buy a flying mount!' WHERE `Id`=32675; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='There''s more you must do. \n\nKill Itoka, master of the forge, and find a codex fragment from Fleshcrafter Hoku, gatekeeper of the Thunder King.' WHERE `Id`=32723; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='<The leather vellum is very old. Stained by age, it bears the following letters:>$B$BOn the isle of time are tall men four\nRound and strong and nothing more\nOf these brothers the shortest be\nWhere the trail leads to me.' WHERE `Id`=32974; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='<Another dirty scrap of parchment is buried beneath the soil.>$B$BSomewhere hope stands, wings held forth\nFrom its feet turn to the north\nPass beyond an ancient gate\nBehind a stone pair, I await.' WHERE `Id`=32975; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The final step, my treasure calls\nAbove the place where water falls\nBeneath the shade on vantage high\nNo path to walk but air and sky.' WHERE `Id`=32976; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=308000 WHERE `Id` IN (33398 /*-Unknown-*/, 33424 /*-Unknown-*/, 33609 /*-Unknown-*/, 36137 /*-Unknown-*/, 36142 /*-Unknown-*/, 36189 /*-Unknown-*/, 36194 /*-Unknown-*/, 36271 /*-Unknown-*/, 36272 /*-Unknown-*/, 36274 /*-Unknown-*/, 36344 /*-Unknown-*/, 36345 /*-Unknown-*/, 36346 /*-Unknown-*/, 36874 /*-Unknown-*/, 36876 /*-Unknown-*/, 36897 /*-Unknown-*/, 36911 /*-Unknown-*/, 36912 /*-Unknown-*/, 36913 /*-Unknown-*/, 36914 /*-Unknown-*/, 36915 /*-Unknown-*/, 36916 /*-Unknown-*/, 36917 /*-Unknown-*/, 36918 /*-Unknown-*/, 36923 /*-Unknown-*/, 36925 /*-Unknown-*/, 36927 /*-Unknown-*/, 36929 /*-Unknown-*/, 36931 /*-Unknown-*/, 36933 /*-Unknown-*/, 36944 /*-Unknown-*/, 36945 /*-Unknown-*/, 36946 /*-Unknown-*/, 36950 /*-Unknown-*/, 36957 /*-Unknown-*/, 36959 /*-Unknown-*/, 36961 /*-Unknown-*/, 36963 /*-Unknown-*/, 36965 /*-Unknown-*/, 36967 /*-Unknown-*/, 36969 /*-Unknown-*/, 36971 /*-Unknown-*/, 36972 /*-Unknown-*/, 36973 /*-Unknown-*/, 36974 /*-Unknown-*/, 36975 /*-Unknown-*/, 36976 /*-Unknown-*/, 36977 /*-Unknown-*/, 36978 /*-Unknown-*/, 36979 /*-Unknown-*/, 36980 /*-Unknown-*/, 36981 /*-Unknown-*/, 36982 /*-Unknown-*/, 36983 /*-Unknown-*/, 36984 /*-Unknown-*/, 36985 /*-Unknown-*/, 36986 /*-Unknown-*/, 36987 /*-Unknown-*/, 36988 /*-Unknown-*/, 36989 /*-Unknown-*/, 36990 /*-Unknown-*/, 36991 /*-Unknown-*/, 36992 /*-Unknown-*/, 36993 /*-Unknown-*/, 36994 /*-Unknown-*/, 36995 /*-Unknown-*/, 36996 /*-Unknown-*/, 36997 /*-Unknown-*/, 36998 /*-Unknown-*/, 36999 /*-Unknown-*/, 37000 /*-Unknown-*/, 37001 /*-Unknown-*/, 37002 /*-Unknown-*/, 37003 /*-Unknown-*/, 37004 /*-Unknown-*/, 37005 /*-Unknown-*/, 37006 /*-Unknown-*/, 37007 /*-Unknown-*/, 37008 /*-Unknown-*/, 37009 /*-Unknown-*/, 37010 /*-Unknown-*/, 37011 /*-Unknown-*/, 37012 /*-Unknown-*/, 37013 /*-Unknown-*/, 37015 /*-Unknown-*/, 37016 /*-Unknown-*/, 37017 /*-Unknown-*/, 37018 /*-Unknown-*/, 37019 /*-Unknown-*/, 37020 /*-Unknown-*/, 37021 /*-Unknown-*/, 37022 /*-Unknown-*/, 37023 /*-Unknown-*/, 37024 /*-Unknown-*/, 37025 /*-Unknown-*/, 37026 /*-Unknown-*/, 37027 /*-Unknown-*/, 37028 /*-Unknown-*/, 37032 /*-Unknown-*/, 37033 /*-Unknown-*/, 37034 /*-Unknown-*/, 37035 /*-Unknown-*/, 37036 /*-Unknown-*/, 37037 /*-Unknown-*/, 37038 /*-Unknown-*/, 37039 /*-Unknown-*/, 37040 /*-Unknown-*/, 37041 /*-Unknown-*/, 37048 /*-Unknown-*/, 37049 /*-Unknown-*/, 37050 /*-Unknown-*/, 37051 /*-Unknown-*/, 37052 /*-Unknown-*/, 37053 /*-Unknown-*/, 37054 /*-Unknown-*/, 37055 /*-Unknown-*/, 37056 /*-Unknown-*/, 37057 /*-Unknown-*/, 37058 /*-Unknown-*/, 37059 /*-Unknown-*/, 37063 /*-Unknown-*/, 37064 /*-Unknown-*/, 37065 /*-Unknown-*/, 37066 /*-Unknown-*/, 37067 /*-Unknown-*/, 37068 /*-Unknown-*/, 37069 /*-Unknown-*/, 37071 /*-Unknown-*/, 37072 /*-Unknown-*/, 37073 /*-Unknown-*/, 37074 /*-Unknown-*/, 37075 /*-Unknown-*/, 37076 /*-Unknown-*/, 37077 /*-Unknown-*/, 37078 /*-Unknown-*/, 37079 /*-Unknown-*/, 37093 /*-Unknown-*/, 37094 /*-Unknown-*/, 37095 /*-Unknown-*/, 37096 /*-Unknown-*/, 37097 /*-Unknown-*/, 37098 /*-Unknown-*/, 37099 /*-Unknown-*/, 37100 /*-Unknown-*/, 37101 /*-Unknown-*/, 37102 /*-Unknown-*/, 37103 /*-Unknown-*/, 37104 /*-Unknown-*/, 37105 /*-Unknown-*/, 37106 /*-Unknown-*/, 37107 /*-Unknown-*/, 37108 /*-Unknown-*/, 37109 /*-Unknown-*/, 37110 /*-Unknown-*/, 37111 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardMoney`=462000 WHERE `Id` IN (33416 /*-Unknown-*/, 36138 /*-Unknown-*/, 36192 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardMoney`=154000, `RewardBonusMoney`=219450, `VerifiedBuild`=19865 WHERE `Id`=33434; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Cowardly Thunderlords...\n\nDuring the battle for the citadel, runners informed me that the Iron Wolf is striking at our home. He''ll find no easy footing there, Draka will make them pay tenfold for any of ours that they slay, but we must return quickly and chase the mongrels off.\n\nYou and your forces have proven valuable allies of the Frostwolves. We''d welcome your aid in securing our War''gol.\n\nI''ll see you on the battlefield if you choose to come.' WHERE `Id`=33468; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I received a strange object with a note attached. Here, it seems to be written in your tongue, commander.\n\n<Dear Mister Durotan,\n\nI''m Penny... you know, from Azeroth? We met briefly back at $p''s garrison. \n\nAnyway, like I told you, I have a fifth degree black hammer in engineering and I''m eager to serve. The more danger the better!\n\nYou just fire this old flare whenever you''re in trouble and I''ll be there, quick as a quark!\n\nHopefully,\n\nPenny>' WHERE `Id`=33593; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Ketya Shrediron,\n\nYour new Iron Shredders are a menace to our own soldiers.\n\nDecommission the prototype and store it in the cave on Talador beach until you''ve worked out the kinks.\n\nI will send Engineer Draxen to work on it in the meantime.\n\n- Orgrim Doomhammer' WHERE `Id`=33720; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I''ve identified some high value targets down in the forest below.\n\nWhen you get near one, you can deploy my solution.\n\nDeploy it and the objectives will be neutralized with great ceremony.' WHERE `Id`=33721; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We must not head into battle prematurely. Before we go after Orgrim, we must first deal with his troops.\n\nIf we are to succeed in our mission of wiping out the Iron Horde from Talador, we need to start on these shores.' WHERE `Id`=33722; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The manual for the shredder was wedged in there, but it''s missing lots of pages. We need to find as many pages of that manual as possible and I might--MIGHT--be able to get this shredder operational.\n\nBased on the direction of the wind, I bet the pages flew toward Archenon Siegeyard.' WHERE `Id`=33724; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Excellent, excellent! I''ll make sense of these manual pages and will get the Iron Shredder operational immediately!\n\nWhile I do that, take a look through my Eye ''n'' Ear. That''s where you''ll be headed soon!' WHERE `Id`=33728; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Iron Shredder is operational! It should be primed and ready for you to shred our enemies in Tuurem!\n\nHead inside and see what damage you can do. Can''t say I''m not jealous.' WHERE `Id`=33729; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='To stop the Iron Horde, we must overcome prejudice and work together, if only for this purpose.\n\nHorde, Alliance, past, present... all meaningless in the face of this enemy.\n\nWe will retake Shattrath together... or die trying.' WHERE `Id` IN (33731 /*-Unknown-*/, 34099 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='The enemy has explosive devices stored on the beach below. We must recover them so they are not used against us.\n\nReports indicate that crates of explosives are scattered along the shoreline.\n\nWhile you search, Durotan and I will carve deeper into Iron Horde territory.' WHERE `Id`=33735; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The orcs themselves are not the only threat. We may have weakened them considerably, but they still have siege weapons of significant power.\n\nSabotage siege weapons you find with the explosives you collected from the beach.' WHERE `Id`=33736; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Your allies sent along a goblin, Gazlowe, to advise us against the Iron Horde. Thus far, he has proven a valuable asset.\n\nHe has a looking glass set up that can see a great distance and, he claims, even hear.\n\nUse this looking glass and report back what you''ve seen. I will stick to my standard spyglass.' WHERE `Id`=33754; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Want to keep racing, huh? That''s the spirit!\n\nSee if you can beat your best time! Get to the blue post, then green, then red, then back here. \n\nYour time matters, so do it fast!' WHERE `Id`=33756; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='These ogres keep takin'' my clan and turnin'' them into slaves!\n\nSlay some ogres and I''ll hold ''em off if they try to run.' WHERE `Id`=33898; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I am too far gone to rescue, but thank you for speaking with me.\n\nBlademaster Bralok had his men starve and beat me, and he stole an heirloom that has been in my family since before we arrived on Draenor.\n\nShould you find it, please let me see it once more so I may die in peace.' WHERE `Id`=33973; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='An ally of yours, Thaelin, is helping us counter the Iron Horde.\n\nHe claims this device can be used to spy on the enemy, even so far as hearing what they are saying at great distance.\n\nI do not trust such devices. Use it and let me know what you see.' WHERE `Id`=34087; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We must slay the Iron Horde troops who infest our lands.\n\nFind those who would sully our great forest and show them the hand of justice.' WHERE `Id`=34088; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Iron Horde has explosive devices stored throughout the heart of their logging camp.\n\nWe must recover them so they are not used against us.\n\nI will keep an eye on Maraad... I worry for him in his anger.' WHERE `Id`=34089; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Those orcs sure like to pile things up in one place. That gave me an idea...\n\nI''ve built this ingenious device for ya! When you get near a target, it''ll let you know, and you can deploy it for a big, satisfying, kerBOOM!' WHERE `Id`=34090; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Ketya Shrediron,\n\nYour new Iron Shredders are a menace to our own soldiers.\n\nDecommission the prototype and store it out of the way until you''ve worked out the kinks.\n\nI will send Engineer Trak to work on it in the meantime.\n\n- Orgrim Doomhammer' WHERE `Id`=34091; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='That shredder had a manual jammed in the cockpit, but it''s missing a lot o'' pages. If we can find those manual pages, I''d bet my third toe I can get the prototype shredder working again.\n\nI coulda swore I saw a few of those pages floatin'' about in Archenon Siegeyard. Maybe the orcs there carry them.' WHERE `Id`=34094; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The orcs themselves are not the only threat. They still have siege weapons of significant power.\n\nThey''ve already been used against Tuurem, and we must not allow for their continued operation.\n\nSabotage siege weapons using the explosives you collected from the logging camp.' WHERE `Id`=34095; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I''ll get the prototype shredder working right now!\n\nTake a look through my Observicopter. You''ll see what you''re about to head into...' WHERE `Id`=34096; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I''ve got this prototype shredder operating on most cylinders.\n\nBoy, will they be surprised when you stomp them with their own machine!\n\nCan''t wait to watch you from the safety of the Observicopter.' WHERE `Id`=34097; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Without you, none of us would have made it to the shores of my homeland. You will be the one to lead our forces here on Draenor. This is your garrison to found.\n\nI leave it to you to plant the banner and claim this territory. When you are ready, I will have Khadgar open a portal to bring through a few necessary reinforcements.' WHERE `Id`=34364; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Alright, boss. We''re gonna need some lumber if we''re gonna get this garrison started off right.\n\nIf you mark some trees to be cut down, your peons will do the rest.' WHERE `Id`=34375; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The return of many of my people is a boon to us, and I thank you for your part in their survival.\n\nCome, ride with me. We have much to discuss.' WHERE `Id`=34402; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='You are going to want to build your barracks, which you''re gonna need to properly bash faces.\n\nThe first step is to go find the blueprints and learn ''em. I think I left some blueprints lying around here somewhere.\n\nNext ya gotta pick which plot you want us to build it on. Just point it out on my architect table and we''ll get started constructing that thing right away.' WHERE `Id`=34461; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Testing Instructions\n\ncgo 230284\n\nLoot items until objective is complete\n\nYou should see an explosion visual', `VerifiedBuild`=19865 WHERE `Id`=34589; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='It''s gonna be quite a task to build you a fortress if there''s gronnlings rampaging around.\n\nI don''t think anyone else here can handle taking those big beasts out, so you might need to take care of it yourself.' WHERE `Id`=34592; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I assume you''re familiar with the arakkoa, commander? Great, flying birdfolk. Extremely territorial.\n\nSome, however, have withered wings - a disease, maybe. They seem to be outcast from arakkoa society. You find them now and then, squatting in forgotten ruins or peddling trinkets on the roadside.\n\nIt seems the Iron Horde has incited the arakkoa by moving into their lands, and the outcasts are fleeing in droves.\n\nWe should make contact with these outcasts - they could have valuable information.' WHERE `Id` IN (34653 /*-Unknown-*/, 36951 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='**Eyes Only -- Commander $n**\n\nWith the fall of the rangari base at Telaar, Vindicator Yrel, recommended we establish a new foothold in Nagrand.\n\nI''ve taken the liberty of dispatching some of our men and supplies. Rangari D''kaan''s already reporting that a new outpost is nearly complete. He has indicated that they are ready to receive you.\n\nA gryphon is waiting to catch you up with the latest caravan shipment whenever you''re ready, $g sir:ma''am;.\n\n-- Bodrick Grey, SI:7' WHERE `Id`=34674; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='These outcasts are not the only cursed arakkoa holding their ground in Arak.\n\nA curious cult has formed in worship of Ka''alu, my consort and the keeper of my brood. They are considered to be quite... odd.\n\nRegardless, the outcasts will need their help. Without the wings of the ravens, Iskar can never take his fight to the spires.\n\nTake this feather and place it in the offering basket south of here. The so-called "Ravenspeakers" will surely take notice.' WHERE `Id`=34921; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Hey! I hear there''s a curious object nearby. Scouts say it''s some kind of shredder manual.\n\nGo check it out for me, will ya? I wonder if it has to do with this new prototype I''ve been hearin'' about...' WHERE `Id`=34947; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I''ve been hearing rumors of this new prototype shredder the Iron Horde''s engineers have been working on.\n\nI think we ought to investigate. A shadow hunter spotted some sort of shredder manual, and it might have something to do with that prototype.' WHERE `Id`=34948; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Nearby, a group of Iron Horde took over a key strategic position with surprising alacrity.\n\nThey used a machine they call Dreadpiston to terrible effect in the siege, and I believe we need to destroy that machine before moving against the Iron Horde in Tuurem.' WHERE `Id`=34950; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Iron Horde overtook a peaceful draenei outpost without mercy.\n\nThey used a machine they call Dreadpiston to level the town in minutes.\n\nDestroy it.' WHERE `Id`=34959; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We have the Iron Horde backed into a corner now, thanks to you.\n\nIt is almost time to enter the city of Shattrath and repel them.\n\nFirst, we must meet Khadgar and some new allies.' WHERE `Id`=34962; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Shattrath must not fall into the hands of the Iron Horde. It is time again for me to get my hands bloody.\n\nWe will tell Khadgar we are ready to enter the city and take back what is rightfully ours.' WHERE `Id`=34963; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=231000 WHERE `Id` IN (35071 /*-Unknown-*/, 36511 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='I cannot believe Orgrim would continue to do Blackhand''s bidding after all the destruction he has wrought.\n\nWe must confront him. Join me at the village along Orunai Coast and we will confront my oldest friend.' WHERE `Id`=35226; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The sacking of this fortress is as much your victory as ours. It is only fair you should share in the bounty.\n\nI had the men prepare a chest for you. Take what you will.' WHERE `Id`=35251; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I found this dwarf, Thuldren, runnin'' out of Tangleheart like his boots were on fire.\n\nSays his mole machine showed up here and he barely made it out alive. And another called Frenna might still be inside.\n\nOne useful thing he told me is that the creatures in there have sap that can be used to grow things real fast.\n\nBy the way, I''m gonna go lookin'' for Thuldren''s mole machine. Find me in Tangleheart when you''re done.' WHERE `Id`=35506; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='There are strange, glowing objects within Tangleheart, seemingly pollinated by a variety of stinging creature.\n\nThe botani sometimes collect whatever the pods produce. I can''t be sure what it is, but it might be dangerous to us.\n\n- Frenna' WHERE `Id` IN (35508 /*-Unknown-*/, 35654 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='I have seen a strange ritual performed by ancients. They step into fire, burning the leaves from their branches and charring their bark.\n\nI call it the Ritual of the Charred. If we want to weaken the ancients, we can get rid of them before they become even stronger.\n\n- Frenna' WHERE `Id` IN (35524 /*-Unknown-*/, 35650 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='I have seen a creature working with the ancient saplings, imbuing them with anger and hatred toward creatures unlike them.\n\nPerhaps it is this botani who is responsible for the unusually aggressive nature of ancients here in Tangleheart.\n\nWould killing this botani do us good? I fear I would be no match for it alone.\n\n- Frenna' WHERE `Id` IN (35527 /*-Unknown-*/, 35651 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Commander, scouts from Spires of Arak have brought back news to the garrison. There''s word of a brewin'' war between bird-men and the Shattered Hand orcs.\n\nRokhan''s askin'' for your presence when your work is done here, should ya be willin'' sir.' WHERE `Id`=35537; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='While you were gone, a rather shady looking human arrived at the outpost asking for you. He said he worked for... Grey was it?... and had some information regarding Spires of Arak that you would be interested in.\n\nHe was heading back to your garrison and asked that I passed along the message, and so I have.\n\nAnd before you go, thank you for all you''ve done for us here, truly. You and your army have turned the tides of a war that you could have just as easily walked away from. We will not forget.' WHERE `Id`=35554; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='We got the lumber mill good an'' built, but we be needin'' more wood!\n\nThe Rangari tol'' me there''s botani usin'' some kinda sap to grow ancients fast as you like.\n\nGet yer hands on some o'' that sap and I betcha I can put it work.\n\nWhat? Oh, Glyza here? Found ''er crashed here and she knows a thing or two about lumberjackin''. I''ll take her back to the outpost later.\n\nI''ll meet ya inside Tangleheart if I can find it.' WHERE `Id`=35652; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Hey there, peach. We''ve got the lumber mill good and ready, but we gotta find a way of choppin'' wood fast out here.\n\nThe Laughing Skull talked about Tangleheart, where the botani grow things quick as a quark.\n\nI''m headin'' there now.' WHERE `Id`=35707; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Rangari have been here for a tick, and they hear tell from the Laughing Skull o'' a place called Tangleheart.\n\nSeems some really bad ancients come from there, and botani use a kind o'' sap to grow them quickly.\n\nI think we could use that for yer outpost. Hey, wood is wood, right?\n\nI''ll meet ya there.' WHERE `Id`=35708; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='That gavel was once known as Beakbreaker. In his final, darkest days, Terokk used it to perform grim, damnable acts of sacrifice. \n\nIt is best not to dwell on those days.\n\nTerokk was sealed away deep within the shadows to rest, and perhaps to heal.\n\nMaking contact with him will take a great deal of effort, so in the meantime, allow me to tell you of his more glorious exploits. Before this wretched curse took hold.\n\nPlease, place the gavel upon the effigy.' WHERE `Id`=35733; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='<As Reshad begins reciting a tale of Terokk''s glory days, your eyes fall to the twin swords at the effigy''s belt.\n\nThey had seemed so plain in Skettis, but now they thrum with power, as if reacting to the scrollkeeper''s words.>' WHERE `Id`=35734; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=146300 WHERE `Id`=35786; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=182850 WHERE `Id`=35787; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='<Once again, Reshad''s voice envelops you.>\n\nTerokk was a powerful and respected king, beloved by his people.\n\nHis sages, however, were not so loyal. Hungry for control of Skyreach, they conspired against him.' WHERE `Id`=35895; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='My long sleep was disturbed by dreams of the past. I cut down my old enemies again. I watched my daughter die again.\n\nYou were there. I felt your presence in these dreams. And your past was revealed to me as well.\n\nSomeone has woven our fates together. My people are yours to protect, and your enemies are mine to destroy.\n\nThe Shattered Hand are rallied in Bladefist Hold. Left to their own, they would claim this land for the Iron Horde.\n\nTake my power, and together we shall break them.' WHERE `Id`=35896; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Terokk''s daughter Lithic was a skilled huntress, but found her true passion in goldsmithing.\n\nShe forged this bangle as a gift for her father, and he wore it for many years. Only after Lithic passed away did he remove the bangle, for her memory was too much for the old king to bear.\n\nPlace the bangle upon the effigy, and I shall tell you of Terokk''s fall.' WHERE `Id`=35897; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The time has come, $p.\n\nAwaken the Talon King from his long slumber. Call him into this world so that he may destroy our enemies!' WHERE `Id`=36059; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=616000 WHERE `Id` IN (36182 /*-Unknown-*/, 36195 /*-Unknown-*/, 36385 /*-Unknown-*/, 36427 /*-Unknown-*/, 36429 /*-Unknown-*/, 36921 /*-Unknown-*/, 36924 /*-Unknown-*/, 36926 /*-Unknown-*/, 36928 /*-Unknown-*/, 36930 /*-Unknown-*/, 36932 /*-Unknown-*/, 36934 /*-Unknown-*/, 36958 /*-Unknown-*/, 36960 /*-Unknown-*/, 36962 /*-Unknown-*/, 36964 /*-Unknown-*/, 36966 /*-Unknown-*/, 36968 /*-Unknown-*/, 36970 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='A powerful enchantment emanates from these ancient Highmaul bracers.\n\nMaybe Yu''rina the Mystic, your garrison enchanting quartermaster, can tell you more about the bracer.' WHERE `Id`=36255; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Oru''kai was the first ogre mage to master the art of enchanting. Upon his death, his items were scattered across Draenor. I have tracked his scepter to the field you see before us. \n\nAs you can see, the scepter''s enchantment is making it difficult to retrieve. A would-be apprentice, Torag Stonefury, took one of Oru''kai''s rings in to break the enchantment, but he failed and became trapped in ice. \n\nFree Torag, take the ring, and complete his task, and I will consider a reward.' WHERE `Id`=36257; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='If I had known being an enchanter was this dangerous, I would have stayed in Wor''gol. \n\nHere, take this ring. The bird man told me to use the ring on the scepter to nullify the enchantment.\n\nBring the scepter back to him and maybe he will teach you what he promised to teach me.' WHERE `Id`=36260; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='A powerful enchantment emanates from these ancient Highmaul bracers.\n\nMaybe Eileese Shadowsong, your garrison enchanting quartermaster, can tell you more about the bracer.' WHERE `Id`=36308; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Oru''kai was the first ogre mage to master the art of enchanting on Draenor. Upon his death, his items were scattered across Draenor. I have tracked his staff to the shore you see before us. \n\nAs you can see, the staff''s enchantment is making it difficult to retrieve. A would-be apprentice, Deema, took one of Oru''kai''s rings in to break the enchantment, but she failed and became trapped as well. \n\nFind and free Deema, take the ring, complete her task, and I will consider a reward.' WHERE `Id`=36313; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='If I had known being an enchanter was this dangerous, I would have stayed in Shattrath. \n\nHere, take this ring. The arakkoa told me to use the ring on the staff to nullify the enchantment.\n\nBring the scepter back to him and maybe he will teach you what he promised to teach me.' WHERE `Id`=36315; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='All o'' them mole machines got mighty unreliable here in Gorgrond. I hear tell that one of ''em might''ve crashed here in Tangleheart.\n\nSee if you can find Frenna. She would''ve been on the one we tracked to this location. I''ll go lookin'' for the mole machine to see if it can be repaired.' WHERE `Id`=36368; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='<Durotan looks at you curiously.>\n\nThose from your world are not much for subtlety, are they?\n\nGo on ahead and greet our new companion. We will join you as soon as we can make ready.' WHERE `Id`=36434; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='So, get this.\n\nAs I was flyin'' in, I took the opportunity to scope out what might be a defensible position.\n\nJust on the other side o'' these boulders is an ideal clearing to hole up in. I even brought a set of blueprints to get us all settled in!\n\nThat''s not too presumptuous, is it?\n\nAnyway, whenever you''re ready just hit this plunger!' WHERE `Id`=36460; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=4900 WHERE `Id`=36501; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Ya know boss, I think I know how we can take this place to the next level. Bigger walls. More buildings. Some space to stretch your arms after a long day of adventuring.\n\nDon''t get me wrong, it''s going to take a lot of resources, but what else are these things for?\n\nWe can plot it out on the drafting table whenever you''re ready. It''s going to be GLORIOUS.' WHERE `Id`=36567; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Commander, I''ve been working on schematics that you might be interested in.\n\nWhat do you think about pushing out the walls and making room to get some additional structures in here? Our forces have been growing, and things are getting a little cramped, and I''d really like us to put some of those additional blueprints to use.\n\nIf you could, take a look at the plans on the table here. As soon as I have your go ahead, I''ll get everyone to work immediately.' WHERE `Id`=36592; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='One of your soldiers stopped by asking for you while you were out. Something about a caravan heading out to Nagrand.\n\nWhatever it was, it can''t have gone well for them. That''s Warsong territory.' WHERE `Id` IN (36601 /*-Unknown-*/, 36602 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Welcome back, $gsir:mam;.\n\nOne of Bodrick''s men delivered a message about a caravan being dispatched for Nagrand. He''s awaiting your approval on a new outpost.\n\nI''ve been hearing whispers around camp about Nagrand. They say it''s Warsong territory. They might need your help $gsir:mam;.' WHERE `Id`=36606; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Welcome back, $gsir:mam;.\n\nOne of our shadow hunters delivered a message about a caravan being dispatched for Nagrand. Rokhan''s awaiting your approval on a new outpost.\n\nI''ve been hearing whispers around camp about Nagrand. They say it''s Warsong territory. They might need your help $gsir:mam;.' WHERE `Id`=36607; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='Now that you have proof, we might just have a shot at convincing Nat Pagle to join us out here.\n\nLast I heard, he was in fishing with the local Angler''s faction out in Pandaria. Somewhere off the coast of Krasarang Wilds. Head out there, show him your catch and see if you can get him to come back with you!' WHERE `Id`=36608; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='What''s this species, a molten catfish you say? I have never even heard of a fish like this, much less seen one in person!\n\nI have to find more fish like this, it''s what I live for! And if the fishing is as good as you say it is, there is just no way I can pass this opportunity up. Take this page from my journal as proof that you found me and I will meet you back at your Garrison.' WHERE `Id`=36609; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='If you want me to help you permanently, you have to show me a few of these big Draenor catches first. Head out into the wild and bring me back the biggest fish you can find from all the surrounding areas.\n\nI made this custom lure for you to use, please take care of it, it''s never let me down!' WHERE `Id`=36611; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='Now that you are experienced enough with Draenor fishing, we might have a shot at convincing Nat Pagle to join us out here.\n\nIf we want Nat to actually come all the way out here, we are going to have to show him real proof of the incredible catches on Draenor. Head out to the lava lakes here in Frostfire and see what you can do. All that time you spend honing your skill here in Draenor should pay off now.' WHERE `Id`=36612; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Boss! Guess what?! I finally got that new larger draft paper in that I ordered when we first came here. And ya know what larger draft paper means?\n\nIt means I can draw a bigger fortress!\n\nAnd if I can draw it, I can certainly make it! Making''s the easy part, as long as you''ve got a few thousand stones and logs lying around.\n\nSo whada''ya say, boss? Shall we get building?' WHERE `Id`=36614; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Commander! Some good news. I finally got that new larger draft paper in that I ordered when we first came here. And do you know what larger draft paper means?\n\nIt means I can draw a bigger castle!\n\nAnd if I can draw it, we can certainly make it! Making it is the easy part, assuming you have a few thousand stones and logs lying around.\n\nSo what do you say, sir? Shall we get building?' WHERE `Id`=36615; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='You truly are a master fisherman!\n\nI would be delighted to join you here on Draenor and help you catch as many lunkers as you can. But first, let''s grab a drink.' WHERE `Id`=36616; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Bloodmaul ogres from Frostfire Ridge have been ambushing trade routes throughout the continent, and are putting captured soldiers to work in their slag mines.\n\nBodrick Grey has requested the rescue of friendly troops that have been taken prisoner in the main Bloodmaul compound at Stonefury Cliffs.' WHERE `Id` IN (36648 /*-Unknown-*/, 38189 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Shattrath City is in the hands of Sargerei forces under the leadership of the traitor Exarch, Socrethar.\n\nMembers of the Sha''tari Defense have been requesting aid against the Shadow Council forces in the eastern portions of the city.' WHERE `Id` IN (36649 /*-Unknown-*/, 38201 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Shattrath City is in the hands of Sargerei forces under the leadership of the once Exarch, Socrethar.\n\nThe Shadow Council forces in the eastern portion of the city are gaining in power through the aid of demons from the Nether, and need to be culled before they become a threat to all of our operations.' WHERE `Id` IN (36667 /*-Unknown-*/, 38187 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Bloodmaul ogres from Frostfire Ridge have been ambushing trade routes throughout the continent, and are putting captured soldiers to work in their slag mines.\n\nShadow Hunter Rokhan has requested the rescue of friendly troops that have been taken prisoner in the main Bloodmaul compound at Stonefury Cliffs.' WHERE `Id` IN (36669 /*-Unknown-*/, 38176 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Iron Horde war machines are being shipped onto battlefields by the dozens, and our forces are struggling to hold their ground. Most of these machines seem to be originating from the Iron Siegeworks in eastern Frostfire Ridge.\n\nA strategic attack to disrupt and dismantle the Iron Horde at the siegeworks could be just what we need to turn the tide of the war.' WHERE `Id` IN (36674 /*-Unknown-*/, 36696 /*-Unknown-*/, 38178 /*-Unknown-*/, 38191 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Colossal magnaron, gronn, and other stone monstrosities have been threatening our outposts in the west. Most seem to originate from Magnarok in Frostfire Ridge.\n\nIf we strike at them at their home, we should be able to force them back. It''s risky, but it may be our best move. While you''re there, see if you can recover any of our supplies.' WHERE `Id` IN (36675 /*-Unknown-*/, 38190 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Botani and the plant monstrosities they conjure have been slowly encroaching on our outposts in the north. For every plant we kill, new ones seem to rise in its place.\n\nBodrick Grey has put together a plan for striking at the heart of their lands, in Everbloom Wilds. He thinks this will draw them back into the wilds of Gorgrond, giving us more room to maneuver around them.' WHERE `Id` IN (36676 /*-Unknown-*/, 38192 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Massive ogron have been battering our frontlines, and no matter how many we down, there seem to be more to replace them.\n\nMost of these ogron appear to be coming from the Broken Precipice, deep in western Nagrand. If we''re to stand a chance in the coming battles, we need to find a way to remove these ogron from the battlefield.' WHERE `Id` IN (36677 /*-Unknown-*/, 36694 /*-Unknown-*/, 38180 /*-Unknown-*/, 38193 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Warsong raiders out of Mok''gol Watchpost have been terrorizing anything and everything not behind a tall wall. We''ve warned travelers not to stray out alone, but many don''t listen.\n\nIf we were to launch an assault on Mok''gol Watchpost, we would almost certainly put the Warsong back on the defensive, restricting most of their riders to Nagrand.' WHERE `Id` IN (36678 /*-Unknown-*/, 36693 /*-Unknown-*/, 38181 /*-Unknown-*/, 38195 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='There''s been a resurgence of rylaks on the battlefield in our skirmishes against the Iron Horde. If we don''t stop them at the source, we''ll quickly lose control of the roads and be pushed back into our outposts.\n\nThe most likely source of these additional rylaks is in southeastern Shadowmoon Valley, at Darktide Roost. If we move quickly, we should still have time to get ahead of the problem.' WHERE `Id` IN (36679 /*-Unknown-*/, 38196 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Recent reports suggest a notable rise of activity by Sargerei forces at Socrethar''s Rise in southern Shadowmoon Valley.\n\nSocrathar''s disciples pose a threat to draenei and our garrison alike. We need to quell them at our soonest convenience.' WHERE `Id` IN (36680 /*-Unknown-*/, 38197 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Some of our best scouts have gone missing in the vicinity of the lost ruins of Veil Anzu.\n\nBodrick Grey has requested any available resources be dispatched to identify the threat and see if any of our men yet remain alive within the ruins.' WHERE `Id` IN (36681 /*-Unknown-*/, 38198 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Remnants of the Shadowmoon clan continue to operate out of the peaks on the eastern border of Spires of Arak.\n\nBodrick Grey is concerned at their proximity to the garrison, and has put out a request that we thin their forces as soon as possible.' WHERE `Id` IN (36682 /*-Unknown-*/, 38199 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='We''ve been receiving regular reports of birdmen from the south ambushing and burning caravans along the main roads.\n\nGuards from our outposts are requesting that we launch a counter attack against the main presence of Adherents of Rukhmar at Skettis in Spires of Arak.' WHERE `Id` IN (36683 /*-Unknown-*/, 36688 /*-Unknown-*/, 38186 /*-Unknown-*/, 38200 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='As we do battle all across Draenor, the cowardly Horde try to seize our territory within Ashran.\n\nOur men would be inspired to see you join the battlefield, striking terror into the hearts of the Horde.' WHERE `Id`=36684; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Sargerei forces from deep in Shattrath have grown stronger and bolder by the day. We can no longer risk ignoring the threat that they pose.\n\nBring allies if you wish to face the Sargerei so deep within the city.' WHERE `Id` IN (36685 /*-Unknown-*/, 36699 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='The Blackrock forces based out of the Pit in Gorgrond make up the bulk of the Iron Horde army. If we crush them on their home soil, the rest of the Iron Horde will have little hope of standing against us.\n\nIf you choose the battle, bring friends. The Blackrock won''t be defeated easily.' WHERE `Id` IN (36686 /*-Unknown-*/, 36701 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='A challenge has been issued at the Ring of Blood.\n\nBring friends and do battle to prove your right as champion.' WHERE `Id` IN (36687 /*-Unknown-*/, 36700 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Remnants of the Shadowmoon clan continue to operate out of the peaks on the eastern border of Spires of Arak.\n\nRokhan is concerned at their proximity to key choke points leading into Shadowmoon Valley, and has put out a request that we thin their forces as soon as possible.' WHERE `Id` IN (36689 /*-Unknown-*/, 38185 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Some of our best scouts have gone missing in the vicinity of the lost ruins of Veil Anzu.\n\nRokhan has requested any available resources be dispatched to identify the threat and see if any of our men yet remain alive within the ruins.' WHERE `Id` IN (36690 /*-Unknown-*/, 38184 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Recent reports suggest a notable rise of activity by Sargerei forces at Socrethar''s Rise in southern Shadowmoon Valley.\n\nSocrathar''s disciples pose a threat all over Draenor. We must not allow them to gain a foothold so far from our reach.' WHERE `Id`=36691; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='There''s been a resurgence of rylaks on the battlefield in our skirmishes against the Iron Horde. If we don''t stop them at the source, we''ll quickly lose control of the roads and be pushed back into our outposts.\n\nThe most likely source of these additional rylaks is in southeastern Shadowmoon Valley, at Darktide Roost. If we move quickly, we should be able to stop their operation cold.' WHERE `Id` IN (36692 /*-Unknown-*/, 38182 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Botani and the plant monstrosities they conjure have been slowly encroaching on our outposts in the north. For every plant we kill, new ones seem to rise in its place.\n\nRokhan has put together a plan for striking at the heart of their lands, in Everbloom Wilds. He thinks this will draw them back into the jungles of Gorgrond, giving us more room to maneuver around them.' WHERE `Id` IN (36695 /*-Unknown-*/, 38179 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='Colossal magnaron, gronn, and other stone monstrosities have been threatening our garrison. Most seem to originate from Magnarok, just to the north.\n\nIf we strike at them at their home, we should be able to force them back. It''s risky, but it may be our best move. While you''re there, see if you can recover any of our supplies.' WHERE `Id` IN (36697 /*-Unknown-*/, 38177 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='As we do battle all across Draenor, the cowardly Alliance try to seize our territory within Ashran.\n\nOur men would be inspired to see you join the battlefield, striking terror into the hearts of the Alliance.' WHERE `Id`=36698; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=22150, `VerifiedBuild`=19865 WHERE `Id`=36865; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='Now that you are experienced enough with Draenor fishing, we might have a shot at convincing Nat Pagle to join us out here.\n\nIf we want Nat to actually come all the way out here, we are going to have to show him real proof of the incredible catches on Draenor. Head out to local waters here in Shadowmoon Valley and see what you can do. All that time you spend honing your skill here in Draenor should pay off now.' WHERE `Id`=36870; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='What''s this species, an arcane trout you say? I have never even heard of a fish like this, much less seen one in person!\n\nI have to find more fish like this, it''s what I live for! And if the fishing is as good as you say it is, there is just no way I can pass this opportunity up. Take this page from my journal as proof that you found me and I will meet you back at your Garrison.' WHERE `Id`=36882; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='**Eyes Only -- Commander $n**\n\nDurotan recommended dat we be gettin'' a foothold in Nagrand, so I taken the liberty of dispatchin'' some of da boys.\n\nThrall''s already reportin'' the new outpost be nearly complete. He been askin'' me to let ya know they be ready for ya.\n\nA windrider be waitin'' to catch ya up with the latest caravan shipment whenever you be ready, $g sir:ma''am;.\n\n-- Rokhan' WHERE `Id`=36952; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='**Eyes Only -- Commander $n**\n\nThe Iron Horde have proved themselves worthy foes.$B$BThey managed to get their fleet moving to Talador from Gorgrond without my spies seeing a thing. Talador be a crossroads for the whole continent. We can''t let them have it.$B$BDon''t worry boss, we got a plan. Foreman Grobash be setting up an outpost for our forces as we speak. They be ready for you when you arrive, commander.$b$b--Rokhan' WHERE `Id`=36953; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='At the armory, we can take scraps of Iron Horde armor that you collect and turn them into new gear. It''s not the strongest stuff in the world, but it looks good.\n\nGet some Iron Horde scraps and come back my way. I''ll set you up with a nice tabard for your troubles.' WHERE `Id`=37043; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='We''ve got a lot goin'' on here at the workshop. We''re buildin'' new inventions all the time, and you can find ''em behind me on the workbench.\n\nGo ahead and grab today''s glorious invention. Use it at your own risk.' WHERE `Id`=37044; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=15400, `QuestDescription`='Here at the Salvage Yard we inspect any extra material your followers bring back from the field, preserving anything that may be useful.\n\nI have an extra pack of material our people brought in that I''ve yet to go through. Why don''t you take it over to the incinerator and see if it contains anything useful?' WHERE `Id` IN (37045 /*-Unknown-*/, 37086 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='Hey der mon, I be ya new headhunter. \nThe tavern be a perfect place for adventurers to rest after a long journey. It also be a great place to talk them into joining our cause.\n\nI be havin'' a few recruits for ya to look at, if ya find one we can hire then I''ll give ya a little somethin'' as a finder fee for ya time.' WHERE `Id`=37046; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='$GSir:Ma''am;, the storehouse is fully operational and I''ve seen to it that your supplies are safely stored away and accounted for.\n\nUnfortunately, during the rest of my audit I found that we are missing a few crates of surplus material - probably misplaced by one of the porters.\n\nIf you happen to come across any of the surplus crates while making your rounds, please bring them to me and I''ll update our ledger.' WHERE `Id` IN (37060 /*-Unknown-*/, 37087 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='To pass the time, traders have been known to consume beverages of an inspired nature, if you know what I mean.\n\nSometimes, they drink a bit too much. Your trader might have stumbled beyond the gates and passed out under a tree. It''s been known to happen from time to time.\n\nLuckily, I have a brew that I use to rouse groggy traders. One splash and I find they''re more willing to work.' WHERE `Id` IN (37062 /*-Unknown-*/, 37088 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='The workshop is bustling with the whir of minds and motors. We''re coming up with new inventions all the time.\n\nTry out today''s glorious invention on the workbench behind me.' WHERE `Id`=37091; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='At the Dwarven Bunker, we can take scraps of Iron Horde armor that you collect and turn them into new gear. It''s not the strongest stuff in the world, but it looks good.\n\nGet some Iron Horde scraps and come back my way. I''ll set you up with a nice tabard for your troubles.' WHERE `Id`=37092; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=154000, `QuestDescription`='The inn provides a perfect place for adventurers to take a rest between their travels. It''s also a great place to talk them into joining our cause over a few rounds of drinks.\n\nGo through my selection and let''s see if we can obtain a new recruit. I''ll give you a little something as a finder''s fee for your efforts.' WHERE `Id`=37119; -- -Unknown-
+UPDATE `quest_template` SET `RewardMoney`=116000 WHERE `Id` IN (37121 /*-Unknown-*/, 37122 /*-Unknown-*/, 37123 /*-Unknown-*/, 37124 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='$p, you have done much for my people. I wish to thank you on their behalf.\n\nPlease visit Veil Terokk when you can.' WHERE `Id`=37177; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=292550, `VerifiedBuild`=19865 WHERE `Id` IN (37265 /*-Unknown-*/, 37278 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='We have a request for a fine necklace. The client wants to give it to an old enemy, to end the conflict. She didn''t specify a design, but I think I heard her mumbling under her breath about a choker. \n\nOh, and she asks that the chain be "extra sturdy".' WHERE `Id`=37320; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='In Nagrand, the ogres tell of an ancient weapon called Gutrek''s cleaver. I would very much like to study it.\n\nA goblin treasure hunter by the name of Val Goldspade discovered the whereabouts of the weapon. Unfortunately, this goblin has gone missing somewhere in the Broken Precipice - probably after a run-in with the locals.' WHERE `Id`=37788; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The journal points to the location of the pieces of Gutrek''s Cleaver. It reads:\n\n"The pommel was brought to the Broken Precipice, where it was to be housed in the skull of Gutrek''s first kill. It looks like it was some manner of large beast that he fought in the big bone pit."' WHERE `Id`=37797; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The search for Gutrek''s Cleaver continues. The journal reads:\n\n"The hilt was to be buried in the marshlands, among the serpents whose poison claimed Gutrek''s life. There''s something here about covering it with a spiral stone, which is supposed to keep Gutrek''s spirit at bay somehow."' WHERE `Id`=37798; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Only one piece remains. The journal reads:\n\n"The final piece, Gutrek''s blade, was to be displayed in a place of honor for all time overlooking the Ring of Blood. I don''t think I''ve seen it there myself, but it says it''s supposed to be somewhere where it has a clear view of every battle."' WHERE `Id`=37799; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='With the pieces recovered, all that is left is to reforge Gutrek''s Cleaver. Goldspade''s journal seems to indicate that the only place to do this is the location where it was initially dismantled.\n\nThe journal mentions a "Spirit Forge" used to dismantle the blade, and that it may be located somewhere in the nearby gorge. Find the forge and use it to combine the pieces you''ve gathered.' WHERE `Id` IN (37811 /*-Unknown-*/, 37992 /*-Unknown-*/);
+UPDATE `quest_template` SET `RewardMoney`=15400, `QuestDescription`='So this is your first race, eh? Don''t worry - it''s easier than it looks. Let me break it down for you...\n\nRun through that big banner there. That starts everything. Then, follow the smaller banners until you see a big, blue Post. Hit that, then return here.\n\nYou''re scored on your time, so finish as fast as you can! And watch out for those electrified tripwires. They''ll slow you down if you run through them. Good luck!' WHERE `Id`=37819; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='It seems the Adherents of Rukhmar have stumbled upon some information leading to an ancient amulet, said to possess the power of their god and bestow it upon the wearer. We should make sure they don''t find it.\n\nHead to Skettis and find what they have learned. Hopefully we can find it before they get to it.' WHERE `Id`=37848; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The Arakkoa research points to three "keys" that need to be activated in order to use the Apexis device. The first is located in Skettis. The text mentioning it reads:\n\n"The first key is kept in the high reaches of upper Skettis. It lay where the dead can protect it from the talons of the unwanted."' WHERE `Id`=37849; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The first point has been activated and two more remain. The second location is hinted at in the old outcast writing:\n\n"Beneath the third fall of the great Skettis river lay the second key. May the ever-rushing waters sweep away those that might seek it."' WHERE `Id`=37850; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='You like this big race, do you? Me too!\n\nIt has four legs: get to the purple post, then green, then red, then back here.\n\nYour time matters, so do it fast!' WHERE `Id`=37868; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='In Shadowmoon Valley there is a cave said to possess an ancient tome that may contain secrets that can help our cause against the Iron Horde. The cave, however, is protected by an ancient barrier composed of arcane energy.\n\nThere is a goblin in Darktide Roost, said to know how to take down any barrier. Persuade him to give up his secrets and bring back the book.' WHERE `Id`=37881; -- -Unknown-
+UPDATE `quest_template` SET `RewardBonusMoney`=36600, `QuestDescription`='You will need three ingredients to make Megacharge''s special "Arcane Bunker Buster," which should be able to take down the barrier. The first ingredient, some precision blasting powder, should be available nearby. The book reads:\n\n"To make one, you''ll first need to acquire some high grade, precision blasting powder. Here in Blackfuse Company, it''s pretty easy to come by, since they use it for all of the cannons."', `VerifiedBuild`=19865 WHERE `Id`=37882; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Ok, Darkmoon Racer, let''s see what you got!\n\nThe real race has four legs: get to the blue post, then green, then red, then back here. \n\nYour time matters, so do it fast!' WHERE `Id`=37910; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Here''s the big one! Good luck out there!\n\nThis race has four legs: get to the purple post, then green, then red, then back here. \n\nYour time matters, so do it fast!' WHERE `Id`=37911; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='In Frostfire Ridge, a Thunderlord sage by the name of Argoram seems to have uncovered the whereabouts of a storied weapon, known to the orcs as Gronnsbane. \n\nHe was last spotted headed into Magnarok. Find him and see if he can lead you to this relic.' WHERE `Id`=37914; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The weapon has been assembled, but it lacks the power that made it a legend. In order to restore it, you must receive three blessings: one of fire, one of frost, and one of beasts.\n\nThe first blessing mentioned in the journal is that of fire. The journal reads:\n\n"He describes an ancient monolith, perched upon the edge of a precipice extending from the cliff where the searing magma falls into the sea. I believe the location he speaks of is just overlooking Tor''goroth''s Tooth."' WHERE `Id`=37917; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Gronnsbane now pulses with energies of fire and frost. All that remains to restore the full power of the weapon is to receive the Blessing of the Beast. Argoram believed this could be accomplished by bloodying the weapon against one of the ancient black rylaks of Stonefury Cliffs. His journal reads:\n\n"High in the Stonefury Cliffs, I have seen an altar where the ogres have left offerings to these ancient beasts. Perhaps I could use it to lure one of them"', `VerifiedBuild`=19865 WHERE `Id`=37919; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='In Gorgrond, the Laughing Skull clan has a legend of one called Skulltaker. His mask, known only as the Silent Skull, is legendary among the clan, and could help us learn more about them.\n\nUntil recently, he was thought to have vanished. Now it appears he has shown his face, so to speak, in Everbloom Wilds. The last orc to have seen him fell to the botani there, but may still have some clues on how you can find Skulltaker and recover the mask.\n\nIf the botani have him, he may not be cooperative.' WHERE `Id`=37941; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Grinning Tolg was in the process of brewing an elixir that would allow him to communicate with the ravagers, whom the Skulltaker relies on to remain hidden.\n\nThe first ingredient, the leaves of the Shadethistle plant, can be found nearby. The journal reads:\n\n"It rests in the shadows of the harsh Gorgrond sun. I saw some under standing stones near the black iron walls."' WHERE `Id`=37942; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The second ingredient to the elixir is a vine from the Bonethorn plant. The journal reads:\n\n"I must find a vine of bonethorn, which grows in the bones of the ancient dead. I remember seeing the bones of a long-dead beast in the dry beds of the northern wilds. Its sun-parched skull would make a pleasant home for such a plant."' WHERE `Id`=37943; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='You know what would boost morale around here?\n\nBass. Beats. Music!\n\nEveryone loves a party! You go out and get me some hardware, and I''ll make a system that will shatter Draenor itself.' WHERE `Id` IN (37961 /*-Unknown-*/, 38315 /*-Unknown-*/, 38401 /*-Unknown-*/);
+UPDATE `quest_template` SET `QuestDescription`='I have heard of a draenei artificer by the name of Maatun that was seeking to restore an old draenei crystal, possibly of naaru origin. He called the crystal the Dream of Argus. \n\nThe draenei went missing after seeking out help from the Shadowmoon orcs back before they allied themselves with the Iron Horde. One of your scouts recently spotted a draenei matching the description of Maatun near the entrance of the Pillars of Fate. Go there and see what you can dig up.' WHERE `Id`=37973; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='In his quest to restore the Dream of Argus, Maatun enlisted the help of three orcs. These same orcs betrayed him and took the crystal shards before they could be combined. If you find these orcs, they may still have them.\n\nThe first target shouldn''t be far. The journal reads:\n\n"I was told she spent most of her time in the crystal cave to the north of the encampment. There she studied the native crystals for ways to improve their potential abilities."' WHERE `Id`=37976; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The second orc that Matuun mentioned was a master runecarver and sorcerer. He should be located somewhere in the main camp. The journal reads:\n\n"She mentioned that the orc could normally found in one of the runemaster''s huts in the southern part of the camp. They could be identified by the standing stones surrounding the structure, as well as the floating runestones above."' WHERE `Id`=37977; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='The last orc to be found was a hermit who kept away from the bulk of the Shadowmoon orcs at the Pillars of Fate camp, but was often seen in the high hills above. The journal reads:\n\n"It is said, however, that he can often be seen among the graves upon the high hill, overlooking the camp below. There he would commune with the dead ancestors, whom it is said he preferred over his living brethren."' WHERE `Id`=37978; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Gronnsbane now pulses with energies of fire and frost. All that remains to restore the full power of the weapon is to receive the Blessing of the Beast. Argoram believed this could be accomplished by bloodying the weapon against one of the ancient black rylaks of Stonefury Cliffs. His journal reads:\n\n"High in the Stonefury Cliffs, I have seen an altar where the ogres have left offerings to these ancient beasts. Perhaps I could use it to lure one of them"' WHERE `Id`=37995; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='With the reagents found, you should seek out Grinning Tolg''s camp in the nearby cave to brew the elixir. \n\nOnce the elixir is consumed, you should be able to communicate with the ravagers there. With any luck, they should be able to bring you to Skulltaker.\n\nHis mask should bring a hefty reward.' WHERE `Id`=37996; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='Recent reports suggest a notable rise of activity by Sargerei forces at Socrethar''s Rise in southern Shadowmoon Valley.\n\nSocrethar''s disciples pose a threat all over Draenor. We must not allow them to gain a foothold so far from our reach.' WHERE `Id`=38183; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I hate to be too cynical, but I don''t think we''re gonna find Nolan in one piece. Or in a lot of pieces.\n\nNolan was a nut for finding rare coins. He''s been from one end of the world to the other finding them, and now he''s gone and gotten himself killed looking for more mint condition Draenei coins. Tell you what - let me show you what these coins look like, you bring me a few more of them and I''ll set up an exhibit in his honor.' WHERE `Id`=38345; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='I told him this was a fool''s errand. Of course he would get himself killed over a handful of coins! Oh well, there are always new lovers to find.\n\nYou''ll have to do in the mean time. And you are quite easy on the eyes, aren''t you? Be a dear and find me more coins that look like this one? I need them for... research.' WHERE `Id`=38346; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='It''s a bit quiet around here, in between the invasions and all.\n\nYou''re in luck though, Commander! I can fix that, and boost morale among your troops all at the same time.\n\nAll you need to do is bring me a few items from around Draenor, and I''ll fill your garrison with music. I''ll even throw in a few music rolls from my own collection to get you started!\n\nWhat do you say?' WHERE `Id`=38356; -- -Unknown-
+UPDATE `quest_template` SET `QuestDescription`='This is intolerable! The coins you brought me do not match the rest of the coins I already have! You aren''t counterfeiting these are you? No? Hrumph. In that case I''m sorry we fought, dearie.\n\nThere''s only one thing to do, buttercup: we need to complete the new set you''ve discovered. Bring me more misprinted coins!' WHERE `Id`=38395; -- -Unknown-
+
+
+DELETE FROM `quest_objectives` WHERE `Id` IN (251698, 251951, 251985, 251986, 251987, 252091, 252250, 252291, 252354, 252355, 252356, 252368, 252525, 252530, 252769, 252949, 252985, 253074, 253687, 254904, 255324, 255325, 255326, 255371, 255477, 255583, 255584, 255585, 256301, 256302, 256404, 256727, 256763, 258478, 258550, 258809, 259014, 263059, 263060, 263763, 263805, 263921, 264051, 264052, 264053, 264054, 264072, 264220, 264327, 264328, 264329, 264330, 264527, 264539, 265243, 265244, 265245, 265246, 265336, 265367, 265368, 265369, 265370, 267704, 267705, 267706, 267707, 267708, 267709, 267711, 267730, 267731, 267732, 267733, 267734, 267935, 267940, 268034, 268441, 268442, 268713, 268777, 268791, 268792, 268793, 268801, 268946, 269052, 269446, 269563, 269577, 269679, 269858, 269859, 269879, 269881, 269882, 269893, 269895, 269899, 269913, 270001, 270002, 270023, 270024, 270081, 270423, 270473, 270474, 270475, 270476, 270647, 270648, 270653, 270675, 270779, 270807, 270808, 270809, 270810, 270828, 270833, 270835, 270836, 270853, 270864, 270893, 270896, 270897, 270900, 270920, 270946, 270995, 270996, 271176, 271358, 271398, 271466, 271476, 271496, 271500, 271504, 271510, 271527, 271560, 271565, 271588, 271687, 271736, 271737, 271738, 271739, 271779, 271869, 271875, 271931, 271950, 272046, 272128, 272130, 272143, 272158, 272165, 272168, 272175, 272180, 272183, 272184, 272199, 272203, 272204, 272210, 272211, 272240, 272241, 272242, 272243, 272249, 272298, 272306, 272322, 272323, 272350, 272351, 272352, 272359, 272364, 272376, 272393, 272408, 272409, 272416, 272417, 272418, 272427, 272436, 272444, 272446, 272461, 272462, 272463, 272466, 272482, 272483, 272484, 272537, 272552, 272555, 272602, 272603, 272666, 272689, 272691, 272722, 272728, 272767, 272769, 272773, 272795, 272796, 272860, 272871, 272889, 272898, 272906, 272921, 272924, 272980, 272985, 272990, 273012, 273030, 273090, 273093, 273099, 273218, 273232, 273314, 273361, 273412, 273515, 273516, 273517, 273585, 273607, 273625, 273669, 273703, 273811, 273891, 274290, 274344, 274517, 274634, 274672, 274673, 274674, 274675, 274951, 274952, 275025, 275049, 275086, 275096, 275150, 275343, 275407, 276043, 276044, 276120, 276126, 276319, 276320, 276321, 276322, 276344, 276345, 276851, 277041, 277042, 277043, 277058, 277304, 277466, 277467, 277468, 277469, 277470, 277471, 277493, 277501, 277645, 277648, 277649, 277650, 277651, 277652);
+INSERT INTO `quest_objectives` (`Id`, `QuestId`, `Type`, `StorageIndex`, `ObjectID`, `Amount`, `Flags`, `UnkFloat`, `Description`, `VerifiedBuild`) VALUES
+(251698, 30253, 0, 0, 58746, 1, 0, 0, 'Speak to Farmer Yoon', 19865), -- 251698
+(251951, 30247, 0, 0, 58988, 1, 0, 0, 'Vale Roll Course Finished', 19865), -- 251951
+(251985, 30122, 1, 0, 78912, 1, 0, 0, '', 19865), -- 251985
+(251986, 30122, 1, 1, 72234, 6, 0, 0, '', 19865), -- 251986
+(251987, 30122, 1, 2, 72235, 8, 0, 0, '', 19865), -- 251987
+(252091, 30180, 1, 0, 79039, 8, 0, 0, '', 19865), -- 252091
+(252250, 29459, 1, 0, 71951, 1, 0, 0, '', 19865), -- 252250
+(252291, 29812, 0, 0, 56166, 5, 0, 0, 'Drunk stag delivered', 19865), -- 252291
+(252354, 30442, 0, 0, 58935, 1, 0, 0, 'Lightning Lager Brewed', 19865), -- 252354
+(252355, 30442, 0, 1, 59659, 1, 0, 0, 'Blanche Escorted', 19865), -- 252355
+(252356, 30442, 0, 2, 58739, 1, 0, 0, '', 19865), -- 252356
+(252368, 29533, 1, 0, 23893, 1, 0, 0, '', 19865), -- 252368
+(252525, 29065, 0, 0, 52014, 6, 0, 0, 'Twilight Totems destroyed', 19865), -- 252525
+(252530, 29842, 0, 0, 55889, 1, 0, 0, 'Meditated at Cairn of Blood', 19865), -- 252530
+(252769, 29096, 0, 0, 52303, 1, 0, 0, 'Caravan Ride Completed', 19865), -- 252769
+(252949, 29696, 1, 0, 73367, 100, 0, 0, '', 19865), -- 252949
+(252985, 29469, 1, 0, 71968, 6, 0, 0, '', 19865), -- 252985
+(253074, 30520, 0, 0, 59493, 8, 0, 0, 'Halfhill Villagers cured', 19865), -- 253074
+(253687, 29938, 0, 0, 56289, 7, 0, 0, '', 19865), -- 253687
+(254904, 29467, 0, 0, 54504, 5, 0, 0, 'Damaged Tonk Repaired', 19865), -- 254904
+(255324, 29169, 0, 0, 52418, 1, 1, 0, '', 19865), -- 255324
+(255325, 29169, 0, 1, 52442, 1, 1, 0, '', 19865), -- 255325
+(255326, 29169, 0, 2, 52414, 1, 1, 0, '', 19865), -- 255326
+(255371, 29170, 0, 0, 39679, 1, 1, 0, '', 19865), -- 255371
+(255477, 29171, 0, 0, 39679, 1, 1, 0, '', 19865), -- 255477
+(255583, 29174, 0, 0, 52440, 1, 1, 0, '', 19865), -- 255583
+(255584, 29174, 0, 1, 52392, 1, 1, 0, '', 19865), -- 255584
+(255585, 29174, 0, 2, 52438, 1, 0, 0, '', 19865), -- 255585
+(256301, 29178, 1, 0, 33010, 1, 0, 0, '', 19865), -- 256301
+(256302, 29259, 0, 0, 53114, 1, 0, 0, 'Fire Lasher Found', 19865), -- 256302
+(256404, 29180, 1, 0, 33013, 1, 0, 0, '', 19865), -- 256404
+(256727, 29256, 1, 0, 69723, 3, 0, 0, '', 19865), -- 256727
+(256763, 29041, 0, 0, 52007, 8, 0, 0, '', 19865), -- 256763
+(258478, 29584, 0, 0, 54703, 8, 0, 0, '', 19865), -- 258478
+(258550, 29732, 0, 0, 55327, 5, 0, 0, 'Supply Crates Retrieved', 19865), -- 258550
+(258809, 29216, 0, 0, 53370, 1, 0, 0, 'Secure Firelands Foothold', 19865), -- 258809
+(259014, 29569, 1, 0, 72125, 1, 0, 0, '', 19865), -- 259014
+(263059, 29857, 0, 0, 55906, 1, 0, 0, 'Speak with Overseer Moxx', 19865), -- 263059
+(263060, 29857, 0, 1, 56003, 6, 0, 0, '', 19865), -- 263060
+(263763, 29813, 0, 0, 55565, 8, 0, 0, '', 19865), -- 263763
+(263805, 30311, 0, 0, 59177, 6, 0, 0, 'Raise Golden Lotus Standards', 19865), -- 263805
+(263921, 30153, 0, 0, 58444, 1, 0, 0, 'Instructor Windblade''s course completed', 19865), -- 263921
+(264051, 29621, 0, 0, 55116, 1, 0, 0, 'Speak with High Elder Liana Qi', 19865), -- 264051
+(264052, 29621, 0, 1, 55114, 1, 0, 0, 'Speak with High Elder Hann', 19865), -- 264052
+(264053, 29621, 0, 2, 55115, 1, 0, 0, 'Speak with High Elder Mossbeard', 19865), -- 264053
+(264054, 29621, 0, 3, 55134, 1, 0, 0, 'Speak with High Elder Ommirith', 19865), -- 264054
+(264072, 29744, 0, 0, 56704, 1, 0, 0, 'Woods of the Lost investigated', 19865), -- 264072
+(264220, 29746, 0, 0, 55471, 1, 0, 0, 'Source of the Simulacra Discovered', 19865), -- 264220
+(264327, 29766, 0, 0, 55557, 4, 0, 0, '', 19865), -- 264327
+(264328, 29766, 0, 1, 55555, 4, 0, 0, '', 19865), -- 264328
+(264329, 29766, 0, 2, 55554, 3, 0, 0, '', 19865), -- 264329
+(264330, 29767, 1, 0, 74609, 12, 0, 0, '', 19865), -- 264330
+(264527, 29722, 0, 0, 55245, 8, 0, 0, '', 19865), -- 264527
+(264539, 29719, 0, 0, 55345, 7, 0, 0, 'Statues examined', 19865), -- 264539
+(265243, 29970, 1, 0, 65897, 1, 0, 0, '', 19865), -- 265243
+(265244, 29970, 1, 1, 52327, 6, 0, 0, '', 19865), -- 265244
+(265245, 29970, 1, 2, 52186, 6, 0, 0, '', 19865), -- 265245
+(265246, 29970, 1, 3, 54849, 10, 0, 0, '', 19865), -- 265246
+(265336, 30343, 0, 0, 58665, 6, 0, 0, 'Rig Powder Barrels', 19865), -- 265336
+(265367, 29969, 1, 0, 65897, 1, 0, 0, '', 19865), -- 265367
+(265368, 29969, 1, 1, 52327, 6, 0, 0, '', 19865), -- 265368
+(265369, 29969, 1, 2, 52186, 6, 0, 0, '', 19865), -- 265369
+(265370, 29969, 1, 3, 54849, 10, 0, 0, '', 19865), -- 265370
+(267704, 30910, 0, 0, 61283, 1, 0, 0, 'Save Tzu''s Dojo', 19865), -- 267704
+(267705, 30910, 0, 1, 61284, 1, 0, 0, 'Save Meila''s Home', 19865), -- 267705
+(267706, 30910, 0, 2, 61285, 1, 0, 0, 'Save Shung''s Home', 19865), -- 267706
+(267707, 30910, 0, 3, 61286, 1, 0, 0, 'Save Rinji''s Home', 19865), -- 267707
+(267708, 30910, 0, 4, 61287, 1, 0, 0, 'Save Swan''s Tavern', 19865), -- 267708
+(267709, 30910, 0, 5, 61288, 1, 0, 0, 'Save Liupo''s Home', 19865), -- 267709
+(267711, 30918, 0, 0, 61156, 1, 0, 0, '', 19865), -- 267711
+(267730, 30934, 2, 0, 211679, 1, 0, 0, 'Click on the Gear!', 19865), -- 267730
+(267731, 30934, 3, 1, 61356, 1, 0, 0, 'Chat with the Bubble!', 19865), -- 267731
+(267732, 30934, 3, 2, 61357, 1, 0, 0, 'Heal the Green Sparkle!', 19865), -- 267732
+(267733, 30934, 0, 3, 61358, 3, 0, 0, 'Kill the Kill Target!', 19865), -- 267733
+(267734, 30934, 3, 4, 61359, 1, 0, 0, 'Click the Gear Corpse!', 19865), -- 267734
+(267935, 31025, 1, 0, 82868, 50, 0, 0, '', 19865), -- 267935
+(267940, 31028, 0, 0, 62232, 1, 0, 0, 'Paragon 5 Found', 19865), -- 267940
+(268034, 30974, 2, 0, 212375, 8, 0, 0, 'Iron Belly drinks served', 19865), -- 268034
+(268441, 31273, 0, 0, 63613, 1000, 0, 0, 'Mantid slain', 19865), -- 268441
+(268442, 31273, 0, 1, 63625, 5, 0, 0, 'Kunchong slain', 19865), -- 268442
+(268713, 31554, 0, 0, 65041, 1, 0, 0, 'Battle Pets Healed', 19865), -- 268713
+(268777, 31604, 0, 0, 65268, 1, 0, 0, 'Assault on Zan''vess Completed', 19865), -- 268777
+(268791, 30264, 0, 3, 65336, 1, 0, 0, 'Mount a War Serpent', 19865), -- 268791
+(268792, 30264, 0, 0, 63972, 60, 0, 0, '', 19865), -- 268792
+(268793, 30264, 0, 1, 64274, 3, 0, 0, '', 19865), -- 268793
+(268801, 30264, 0, 2, 64275, 3, 0, 0, '', 19865), -- 268801
+(268946, 31723, 3, 0, 65564, 1, 0, 0, 'Speak with Private Tim P. O''Rary in Valley of the Four Winds', 19865), -- 268946
+(269052, 31816, 11, 0, 65656, 1, 1, 0, 'Defeat Bill Buckler', 19865), -- 269052
+(269446, 32107, 1, 0, 86542, 1, 0, 0, '', 19865), -- 269446
+(269563, 32125, 0, 0, 67689, 8, 0, 0, '', 19865), -- 269563
+(269577, 32231, 0, 0, 67753, 8, 0, 0, 'Torches lit', 19865), -- 269577
+(269679, 32358, 1, 0, 92556, 1, 0, 0, '', 19865), -- 269679
+(269858, 32458, 4, -1, 697, 200, 0, 0, '', 19865), -- 269858
+(269859, 32459, 4, -1, 697, 200, 0, 0, '', 19865), -- 269859
+(269879, 32468, 1, 0, 93389, 6, 0, 0, '', 19865), -- 269879
+(269881, 32469, 0, 0, 69068, 12, 0, 0, 'Pterodactyl Hatchlings frightened', 19865), -- 269881
+(269882, 32470, 1, 0, 93396, 15, 0, 0, '', 19865), -- 269882
+(269893, 32471, 0, 0, 69100, 20, 0, 0, 'Apples crushed', 19865), -- 269893
+(269895, 32472, 0, 0, 69128, 25, 0, 0, 'Pterodactyl Hatchlings frightened', 19865), -- 269895
+(269899, 32475, 1, 0, 93660, 1, 0, 0, '', 19865), -- 269899
+(269913, 32253, 0, 0, 69160, 6, 0, 0, 'Zandalari Altar destroyed', 19865), -- 269913
+(270001, 32280, 0, 0, 69326, 1, 0, 0, '', 19865), -- 270001
+(270002, 32281, 0, 0, 69435, 1, 0, 0, '', 19865), -- 270002
+(270023, 32211, 0, 0, 69534, 1, 0, 0, '', 19865), -- 270023
+(270024, 32516, 0, 0, 69250, 1, 1, 0, '', 19865), -- 270024
+(270081, 32569, 0, 0, 67753, 8, 0, 0, 'Torches lit', 19865), -- 270081
+(270423, 32784, 0, 0, 71730, 1, 0, 0, 'Search for clues along the blood trail', 19865), -- 270423
+(270473, 32801, 1, 0, 97731, 15, 0, 0, '', 19865), -- 270473
+(270474, 32802, 0, 0, 71768, 9, 0, 0, 'Frostpear Bulbs popped', 19865), -- 270474
+(270475, 32800, 1, 0, 97730, 8, 0, 0, '', 19865), -- 270475
+(270476, 32799, 1, 0, 97729, 20, 0, 0, '', 19865), -- 270476
+(270647, 32910, 0, 1, 69461, 1, 0, 0, '', 19865), -- 270647
+(270648, 32910, 1, 0, 93731, 1, 0, 0, '', 19865), -- 270648
+(270653, 32917, 4, -1, 697, 27, 0, 0, '', 19865), -- 270653
+(270675, 32934, 0, 0, 71776, 50, 0, 0, 'Frostwind Scorpid crushed', 19865), -- 270675
+(270779, 32982, 0, 0, 74587, 1, 0, 0, 'Asher rescued', 19865), -- 270779
+(270807, 33012, 0, 0, 72466, 1, 0, 0, 'Inn fire doused', 19865), -- 270807
+(270808, 33012, 0, 1, 72474, 1, 0, 0, 'Hut fire doused', 19865), -- 270808
+(270809, 33012, 0, 2, 72475, 1, 0, 0, 'Blacksmith fire doused', 19865), -- 270809
+(270810, 33012, 0, 3, 72476, 1, 0, 0, 'Banner fire doused', 19865), -- 270810
+(270828, 33058, 1, 0, 102149, 5, 0, 0, '', 19865), -- 270828
+(270833, 33060, 0, 0, 72639, 1, 0, 0, '', 19865), -- 270833
+(270835, 33067, 0, 0, 72621, 5, 0, 0, 'Warsong Warriors Slain', 19865), -- 270835
+(270836, 33068, 1, 0, 102156, 10, 0, 0, '', 19865), -- 270836
+(270853, 33108, 0, 0, 72756, 5, 0, 0, 'Poisonous bunnies burned', 19865), -- 270853
+(270864, 33015, 0, 0, 74448, 3, 0, 0, '', 19865), -- 270864
+(270893, 33126, 0, 0, 72953, 8, 0, 0, 'Grimfrost Ogres Slain', 19865), -- 270893
+(270896, 33129, 0, 0, 72756, 5, 0, 0, 'Poisonous bunnies burned', 19865), -- 270896
+(270897, 33130, 0, 0, 72756, 5, 0, 0, 'Poisonous bunnies burned', 19865), -- 270897
+(270900, 33131, 0, 0, 72639, 1, 0, 0, '', 19865), -- 270900
+(270920, 33123, 0, 0, 73159, 1, 0, 0, 'Win the Celestial Tournament', 19865), -- 270920
+(270946, 33148, 3, 0, 72976, 1, 0, 0, 'Outrider Corpse Burned', 19865), -- 270946
+(270995, 33223, 0, 0, 73652, 9, 0, 0, 'Delectable Ogre Queasine collected', 19865), -- 270995
+(270996, 33224, 1, 0, 104196, 10, 0, 0, '', 19865), -- 270996
+(271176, 33381, 0, 0, 74105, 1, 2, 0, 'Gorr''thog Defeated', 19865), -- 271176
+(271358, 33449, 1, 0, 106941, 20, 0, 0, '', 19865), -- 271358
+(271398, 33381, 0, 1, 74117, 1, 0, 0, 'Speak to Ga''nar', 19865), -- 271398
+(271466, 33510, 1, 0, 110452, 1, 0, 0, 'Bonechewer Orcs slain', 19865), -- 271466
+(271476, 33522, 1, 0, 107285, 6, 0, 0, 'Felblood Samples collected', 19865), -- 271476
+(271496, 33529, 0, 0, 75112, 1, 0, 0, 'Ritual investigated', 19865), -- 271496
+(271500, 33529, 0, 2, 76745, 1, 3, 0, 'Tagar Spinebreaker slain', 19865), -- 271500
+(271504, 33536, 0, 0, 75144, 1, 0, 0, 'Place Thrall''s Totem', 19865), -- 271504
+(271510, 33545, 1, 0, 107336, 8, 0, 0, 'Arkonite Crystals gathered', 19865), -- 271510
+(271527, 33557, 1, 0, 107364, 8, 0, 0, '', 19865), -- 271527
+(271560, 33588, 0, 0, 75300, 15, 0, 0, 'Corrupt Deathweb Eggs broken', 19865), -- 271560
+(271565, 33592, 0, 0, 75297, 1, 1, 0, '', 19865), -- 271565
+(271588, 33557, 0, 1, 75350, 1, 2, 0, 'Revive Jagahari', 19865), -- 271588
+(271687, 33659, 0, 0, 75558, 10, 0, 0, 'Poisoned Sharptusk put down', 19865), -- 271687
+(271736, 33516, 2, 0, 225671, 1, 0, 0, '', 19865), -- 271736
+(271737, 33516, 2, 1, 225672, 1, 0, 0, '', 19865), -- 271737
+(271738, 33516, 2, 2, 225673, 1, 0, 0, '', 19865), -- 271738
+(271739, 33516, 2, 3, 225674, 1, 0, 0, '', 19865), -- 271739
+(271779, 33709, 0, 0, 77162, 1, 0, 0, 'Start the Tank', 19865), -- 271779
+(271869, 33746, 0, 1, 75618, 1, 0, 0, 'Pet Rooter', 19865), -- 271869
+(271875, 33753, 0, 1, 75974, 1, 0, 0, 'Invite Y''kish', 19865), -- 271875
+(271931, 33767, 1, 0, 107930, 1, 0, 0, '', 19865), -- 271931
+(271950, 33713, 0, 0, 75819, 12, 0, 0, 'Stonemaul ogres slain', 19865), -- 271950
+(272046, 33829, 0, 2, 76411, 1, 0, 0, 'Receive Blessing from Shamanstone', 19865), -- 272046
+(272128, 33879, 0, 0, 76679, 15, 0, 0, '', 19865), -- 272128
+(272130, 33880, 1, 0, 108656, 10, 0, 0, '', 19865), -- 272130
+(272143, 33881, 0, 0, 76713, 8, 0, 0, 'Miners rescued', 19865), -- 272143
+(272158, 33913, 0, 0, 76825, 1, 0, 0, 'Ride with Lady Liadrin', 19865), -- 272158
+(272165, 33921, 1, 0, 108734, 8, 0, 0, '', 19865), -- 272165
+(272168, 33924, 0, 0, 76863, 1, 1, 0, '', 19865), -- 272168
+(272175, 33932, 1, 0, 108741, 3, 0, 0, '', 19865), -- 272175
+(272180, 33934, 0, 0, 76700, 15, 0, 0, '', 19865), -- 272180
+(272183, 33934, 0, 1, 76701, 5, 0, 0, '', 19865), -- 272183
+(272184, 33934, 0, 2, 76789, 1, 0, 0, '', 19865), -- 272184
+(272199, 33954, 1, 0, 108746, 1, 0, 0, '', 19865), -- 272199
+(272203, 33939, 2, 0, 227010, 6, 0, 0, 'Mining Supplies Destroyed', 19865), -- 272203
+(272204, 33957, 1, 0, 109566, 1, 0, 0, 'Capture a Baby Rylak', 19865), -- 272204
+(272210, 33968, 1, 0, 108777, 1, 0, 0, '', 19865), -- 272210
+(272211, 33879, 0, 1, 76971, 1, 1, 0, '', 19865), -- 272211
+(272240, 34014, 1, 0, 109197, 1, 1, 0, '', 19865), -- 272240
+(272241, 34015, 0, 0, 77004, 4, 2, 0, 'Body Piles burned', 19865), -- 272241
+(272242, 34016, 1, 0, 108896, 1, 0, 0, '', 19865), -- 272242
+(272243, 34016, 1, 1, 108897, 1, 0, 0, '', 19865), -- 272243
+(272249, 34015, 1, 1, 108886, 1, 0, 0, 'Torches retrieved', 19865), -- 272249
+(272298, 33877, 2, 1, 227230, 4, 0, 0, 'Iron Horde Digger [PH] destroyed', 19865), -- 272298
+(272306, 34074, 0, 0, 76952, 20, 0, 0, 'Iron Horde Orcs Slain', 19865), -- 272306
+(272322, 34083, 1, 0, 108896, 1, 0, 0, '', 19865), -- 272322
+(272323, 34083, 1, 1, 108897, 1, 0, 0, '', 19865), -- 272323
+(272350, 34100, 1, 0, 109163, 1, 1, 0, '', 19865), -- 272350
+(272351, 34100, 1, 1, 109162, 1, 1, 0, '', 19865), -- 272351
+(272352, 34100, 0, 2, 77386, 1, 2, 0, 'Ritual performed', 19865), -- 272352
+(272359, 34121, 1, 0, 109197, 1, 1, 0, '', 19865), -- 272359
+(272364, 33959, 0, 0, 77503, 6, 0, 0, 'Underwater Explosive placed', 19865), -- 272364
+(272376, 34141, 0, 0, 75416, 5, 0, 0, '', 19865), -- 272376
+(272393, 34159, 0, 0, 77579, 1, 1, 0, '', 19865), -- 272393
+(272408, 34181, 0, 0, 77663, 1, 2, 0, 'Assist Grulk in the Fortress', 19865), -- 272408
+(272409, 34181, 0, 1, 77667, 1, 2, 0, 'Assist Grulk in the Courtyard', 19865), -- 272409
+(272416, 34181, 0, 2, 77678, 1, 0, 0, 'Use the Mutation Serum on Grulk', 19865), -- 272416
+(272417, 34181, 0, 3, 77688, 1, 2, 0, 'Assist Grulk in the Laboratory', 19865), -- 272417
+(272418, 34181, 0, 4, 77691, 1, 2, 0, 'Mutation Lab Destroyed', 19865), -- 272418
+(272427, 33908, 1, 1, 109575, 1, 2, 0, '', 19865), -- 272427
+(272436, 34217, 0, 0, 77806, 1, 1, 0, '', 19865), -- 272436
+(272444, 34237, 0, 0, 77022, 8, 0, 0, 'Telmor invaders routed', 19865), -- 272444
+(272446, 34016, 1, 2, 109622, 1, 0, 0, '', 19865), -- 272446
+(272461, 34267, 0, 1, 77918, 20, 0, 0, 'Grommar forces slain', 19865), -- 272461
+(272462, 34268, 1, 0, 110313, 5, 0, 0, '', 19865), -- 272462
+(272463, 34268, 0, 1, 75416, 5, 0, 0, '', 19865), -- 272463
+(272466, 34269, 0, 2, 77924, 1, 1, 0, '', 19865), -- 272466
+(272482, 34244, 1, 0, 109749, 1, 0, 0, '', 19865), -- 272482
+(272483, 34244, 1, 1, 109750, 1, 0, 0, '', 19865), -- 272483
+(272484, 34244, 1, 2, 109751, 1, 0, 0, '', 19865), -- 272484
+(272537, 34317, 0, 0, 77968, 12, 0, 0, 'Shadow Creatures Slain', 19865), -- 272537
+(272552, 34327, 0, 0, 78173, 6, 0, 0, '', 19865), -- 272552
+(272555, 34343, 0, 2, 71959, 1, 1, 0, '', 19865), -- 272555
+(272602, 34376, 0, 0, 78303, 1, 1, 0, '', 19865), -- 272602
+(272603, 34377, 3, 0, 78288, 1, 0, 0, 'Ask Khadgar to Open a Portal', 19865), -- 272603
+(272666, 34413, 0, 0, 78490, 100, 0, 0, 'Lumber Gathered', 19865), -- 272666
+(272689, 34454, 0, 0, 78586, 3, 1, 0, 'Destroy Unmanned Iron Shredders', 19865), -- 272689
+(272691, 34457, 0, 1, 77995, 6, 0, 0, '', 19865), -- 272691
+(272722, 34474, 3, 0, 78697, 1, 4, 0, '', 19865), -- 272722
+(272728, 33908, 0, 0, 78679, 1, 0, 0, 'Speak to Soulbinder Tuulani', 19865), -- 272728
+(272767, 34499, 0, 0, 78791, 10, 0, 0, '', 19865), -- 272767
+(272769, 34500, 0, 0, 78173, 6, 0, 0, '', 19865), -- 272769
+(272773, 34502, 0, 2, 78758, 10, 0, 0, 'Shiverblood Pale slain', 19865), -- 272773
+(272795, 34509, 0, 0, 78975, 1, 2, 0, 'Group escorted to the Bleeding Altar', 19865), -- 272795
+(272796, 34424, 0, 0, 78986, 1, 0, 0, 'Reach Kargathar Proving Grounds', 19865), -- 272796
+(272860, 34591, 0, 0, 79274, 1, 0, 0, '', 19865), -- 272860
+(272871, 34602, 0, 0, 79326, 1, 1, 0, '', 19865), -- 272871
+(272889, 34633, 1, 0, 111322, 32, 0, 0, '', 19865), -- 272889
+(272898, 34640, 0, 0, 79433, 1, 0, 0, 'Open Portal', 19865), -- 272898
+(272906, 34661, 1, 0, 110570, 1, 0, 0, '', 19865), -- 272906
+(272921, 34677, 0, 1, 79544, 10, 0, 0, '', 19865), -- 272921
+(272924, 34688, 0, 1, 79520, 4, 0, 0, 'Void Gates Sealed', 19865), -- 272924
+(272980, 34670, 14, 0, 35638, 1, 0, 0, 'Profession Building Constructed', 19865), -- 272980
+(272985, 34738, 0, 0, 79553, 10, 0, 0, 'Shadowmoon Portal closed', 19865), -- 272985
+(272990, 34670, 14, 1, 35688, 1, 0, 0, 'Learn the Blueprint', 19865), -- 272990
+(273012, 34693, 14, 0, 35677, 1, 0, 0, 'Profession Building Constructed', 19865), -- 273012
+(273030, 34670, 0, 2, 78466, 1, 0, 0, 'Acquire a Profession Building Blueprint from Gazlowe', 19865), -- 273030
+(273090, 34842, 0, 0, 79903, 1, 1, 0, '', 19865), -- 273090
+(273093, 34844, 17, 0, 824, 50, 0, 0, '', 19865), -- 273093
+(273099, 34848, 0, 0, 79071, 8, 0, 0, 'Prisoner armed', 19865), -- 273099
+(273218, 34441, 0, 0, 80402, 12, 0, 0, '', 19865), -- 273218
+(273232, 34944, 3, 0, 86122, 6, 0, 0, 'Dread Raven Hatchlings rescued', 19865), -- 273232
+(273314, 34735, 0, 0, 80686, 1, 0, 0, 'Repel the Invasion', 19865), -- 273314
+(273361, 34509, 0, 1, 80715, 10, 0, 0, 'Heartblood wildlife slain', 19865), -- 273361
+(273412, 35057, 1, 0, 109012, 1, 0, 0, '', 19865), -- 273412
+(273515, 34693, 0, 1, 77209, 1, 0, 0, 'Acquire a Profession Building Blueprint from Baros', 19865), -- 273515
+(273516, 34693, 14, 2, 36149, 1, 0, 0, 'Learn the Blueprint', 19865), -- 273516
+(273517, 35161, 1, 0, 112692, 1, 0, 0, '', 19865), -- 273517
+(273585, 35217, 0, 0, 81680, 10, 0, 0, 'Sugar Pears destroyed', 19865), -- 273585
+(273607, 35222, 0, 0, 82266, 1, 0, 0, '', 19865), -- 273607
+(273625, 35228, 0, 0, 82266, 1, 0, 0, '', 19865), -- 273625
+(273669, 35267, 4, -1, 944, 20, 0, 0, '', 19865), -- 273669
+(273703, 35296, 0, 0, 81396, 1, 1, 0, '', 19865), -- 273703
+(273811, 35431, 1, 0, 112912, 8, 0, 0, '', 19865), -- 273811
+(273891, 35578, 4, -1, 944, 1000, 0, 0, '', 19865); -- 273891
+
+INSERT INTO `quest_objectives` (`Id`, `QuestId`, `Type`, `StorageIndex`, `ObjectID`, `Amount`, `Flags`, `UnkFloat`, `Description`, `VerifiedBuild`) VALUES
+(274290, 36060, 4, -1, 823, 100, 0, 0, '', 19865), -- 274290
+(274344, 36135, 1, 0, 114678, 1, 0, 0, '', 19865), -- 274344
+(274517, 36263, 1, 0, 114988, 1, 8, 0, 'Ghost-Touched Materials', 19865), -- 274517
+(274634, 36358, 1, 0, 115344, 1, 0, 0, '', 19865), -- 274634
+(274672, 36383, 15, -1, 0, 1, 0, 0, 'Blackrock Foundry Assaulted', 19865), -- 274672
+(274673, 36383, 0, 1, 85228, 100, 92, 1, 'Kill Iron Horde', 19865), -- 274673
+(274674, 36383, 0, 0, 85229, 20, 92, 5, 'Kill Iron Horde', 19865), -- 274674
+(274675, 36383, 0, 2, 85230, 5, 92, 20, 'Kill Iron Horde', 19865), -- 274675
+(274951, 36593, 0, 1, 79774, 1, 0, 0, 'Speak with Sergeant Grimjaw', 19865), -- 274951
+(274952, 36593, 0, 0, 80686, 1, 2, 0, 'Repel the Invasion', 19865), -- 274952
+(275025, 36620, 0, 0, 86124, 1, 0, 0, 'Choose your target', 19865), -- 275025
+(275049, 36661, 0, 0, 86157, 1, 0, 0, '', 19865), -- 275049
+(275086, 36383, 0, 3, 86298, 200, 92, 0.5, 'Kill Iron Horde', 19865), -- 275086
+(275096, 36383, 2, 4, 236277, 100, 92, 1, 'Destroy Training Manuals', 19865), -- 275096
+(275150, 36383, 2, 5, 236421, 50, 92, 2, 'Free Rangari Prisoners', 19865), -- 275150
+(275343, 36873, 1, 0, 35840, 2, 0, 0, '', 19865), -- 275343
+(275407, 36922, 0, 0, 86721, 500, 0, 0, 'Human Players slain', 19865), -- 275407
+(276043, 37269, 0, 1, 79774, 1, 0, 0, 'Speak with Sergeant Grimjaw', 19865), -- 276043
+(276044, 37269, 0, 0, 80686, 1, 2, 0, 'Repel the Invasion', 19865), -- 276044
+(276120, 37305, 1, 1, 119153, 1, 0, 0, 'Earn a bronze badge', 19865), -- 276120
+(276126, 37306, 1, 1, 119154, 1, 0, 0, '', 19865), -- 276126
+(276319, 37513, 0, 1, 79774, 1, 0, 0, 'Speak with Sergeant Grimjaw', 19865), -- 276319
+(276320, 37513, 0, 0, 80686, 1, 2, 0, 'Repel the Invasion', 19865), -- 276320
+(276321, 37514, 0, 1, 79774, 1, 0, 0, 'Speak with Sergeant Grimjaw', 19865), -- 276321
+(276322, 37514, 0, 0, 80686, 1, 2, 0, 'Repel the Invasion', 19865), -- 276322
+(276344, 37523, 0, 0, 91963, 1, 0, 0, 'Dominate the Gorian Proving Grounds', 19865), -- 276344
+(276345, 37524, 0, 0, 91963, 1, 0, 0, 'Dominate the Gorian Proving Grounds', 19865), -- 276345
+(276851, 37772, 0, 0, 77325, 1, 1, 0, '', 19865), -- 276851
+(277041, 37916, 0, 2, 90172, 1, 0, 0, 'Gronnsbane''s Blade', 19865), -- 277041
+(277042, 37916, 0, 3, 90174, 1, 0, 0, 'Gronnsbane''s Haft', 19865), -- 277042
+(277043, 37916, 0, 4, 90175, 1, 0, 0, 'Gronnsbane''s Weight', 19865), -- 277043
+(277058, 37918, 0, 0, 90183, 1, 0, 0, 'Receive the Blessing of Frost', 19865), -- 277058
+(277304, 38008, 9, 0, 338, 5, 0, 0, 'Horde Slain', 19865), -- 277304
+(277466, 38103, 0, 0, 91010, 1, 0, 0, '', 19865), -- 277466
+(277467, 38104, 0, 0, 91010, 1, 0, 0, '', 19865), -- 277467
+(277468, 38105, 0, 0, 91010, 1, 0, 0, '', 19865), -- 277468
+(277469, 38106, 0, 0, 91011, 1, 0, 0, '', 19865), -- 277469
+(277470, 38107, 0, 0, 91011, 1, 0, 0, '', 19865), -- 277470
+(277471, 38108, 0, 0, 91011, 1, 0, 0, '', 19865), -- 277471
+(277493, 38194, 0, 0, 91963, 1, 0, 0, 'Dominate the Gorian Proving Grounds', 19865), -- 277493
+(277501, 38202, 0, 0, 91963, 1, 0, 0, 'Dominate the Gorian Proving Grounds', 19865), -- 277501
+(277645, 38293, 1, 0, 111557, 50, 0, 0, '', 19865), -- 277645
+(277648, 38296, 1, 0, 109125, 10, 0, 0, '', 19865), -- 277648
+(277649, 38296, 1, 1, 109127, 10, 0, 0, '', 19865), -- 277649
+(277650, 38296, 1, 2, 109129, 10, 0, 0, '', 19865), -- 277650
+(277651, 38296, 1, 3, 109126, 10, 0, 0, '', 19865), -- 277651
+(277652, 38296, 1, 4, 109128, 10, 0, 0, '', 19865); -- 277652
+
+UPDATE `quest_objectives` SET `VerifiedBuild`=19865 WHERE `Id` IN (251806 /*251806*/, 252488 /*252488*/, 253398 /*253398*/, 253399 /*253399*/, 254108 /*254108*/, 256330 /*256330*/, 259570 /*259570*/, 267713 /*267713*/, 267714 /*267714*/, 267715 /*267715*/, 268654 /*268654*/, 268668 /*268668*/, 268899 /*268899*/, 268981 /*268981*/, 268982 /*268982*/, 268983 /*268983*/, 268984 /*268984*/, 268987 /*268987*/, 269345 /*269345*/, 269353 /*269353*/, 269519 /*269519*/, 269800 /*269800*/, 269801 /*269801*/, 269802 /*269802*/, 269803 /*269803*/, 269804 /*269804*/, 269805 /*269805*/, 269806 /*269806*/, 269875 /*269875*/, 270080 /*270080*/, 271221 /*271221*/, 271222 /*271222*/, 271223 /*271223*/, 271338 /*271338*/, 271339 /*271339*/, 271340 /*271340*/, 271341 /*271341*/, 271342 /*271342*/, 271343 /*271343*/, 271344 /*271344*/, 271345 /*271345*/, 272858 /*272858*/, 272880 /*272880*/, 276039 /*276039*/, 276065 /*276065*/, 276984 /*276984*/, 277059 /*277059*/, 277060 /*277060*/);
+
+DELETE FROM `quest_visual_effect` WHERE (`Id`=268791 AND `Index`=0) OR (`Id`=269052 AND `Index`=0) OR (`Id`=269563 AND `Index`=0) OR (`Id`=269881 AND `Index`=0) OR (`Id`=269895 AND `Index`=0) OR (`Id`=269913 AND `Index`=0) OR (`Id`=270423 AND `Index`=0) OR (`Id`=270474 AND `Index`=0) OR (`Id`=270779 AND `Index`=0) OR (`Id`=270807 AND `Index`=0) OR (`Id`=270808 AND `Index`=0) OR (`Id`=270809 AND `Index`=0) OR (`Id`=270810 AND `Index`=0) OR (`Id`=271176 AND `Index`=0) OR (`Id`=271398 AND `Index`=0) OR (`Id`=271504 AND `Index`=0) OR (`Id`=271527 AND `Index`=0) OR (`Id`=271588 AND `Index`=0) OR (`Id`=271736 AND `Index`=0) OR (`Id`=271737 AND `Index`=0) OR (`Id`=271738 AND `Index`=0) OR (`Id`=271739 AND `Index`=0) OR (`Id`=271779 AND `Index`=0) OR (`Id`=271869 AND `Index`=0) OR (`Id`=271875 AND `Index`=0);
+DELETE FROM `quest_visual_effect` WHERE (`Id`=272046 AND `Index`=0) OR (`Id`=272143 AND `Index`=0) OR (`Id`=272158 AND `Index`=0) OR (`Id`=272158 AND `Index`=1) OR (`Id`=272204 AND `Index`=0) OR (`Id`=272241 AND `Index`=0) OR (`Id`=272242 AND `Index`=0) OR (`Id`=272243 AND `Index`=0) OR (`Id`=272249 AND `Index`=0) OR (`Id`=272352 AND `Index`=0) OR (`Id`=272393 AND `Index`=0) OR (`Id`=272427 AND `Index`=0) OR (`Id`=272446 AND `Index`=0) OR (`Id`=272603 AND `Index`=0) OR (`Id`=272689 AND `Index`=0) OR (`Id`=272689 AND `Index`=1) OR (`Id`=272722 AND `Index`=0) OR (`Id`=272728 AND `Index`=0) OR (`Id`=272860 AND `Index`=0) OR (`Id`=272980 AND `Index`=0) OR (`Id`=273012 AND `Index`=0) OR (`Id`=273030 AND `Index`=0) OR (`Id`=273093 AND `Index`=0) OR (`Id`=273099 AND `Index`=0) OR (`Id`=273099 AND `Index`=1);
+DELETE FROM `quest_visual_effect` WHERE (`Id`=273515 AND `Index`=0) OR (`Id`=273585 AND `Index`=0) OR (`Id`=273703 AND `Index`=0) OR (`Id`=274672 AND `Index`=0) OR (`Id`=274672 AND `Index`=1) OR (`Id`=274672 AND `Index`=2) OR (`Id`=274672 AND `Index`=3) OR (`Id`=274672 AND `Index`=4) OR (`Id`=274951 AND `Index`=0) OR (`Id`=275096 AND `Index`=0) OR (`Id`=275150 AND `Index`=0) OR (`Id`=276043 AND `Index`=0) OR (`Id`=276319 AND `Index`=0) OR (`Id`=276321 AND `Index`=0) OR (`Id`=277041 AND `Index`=0) OR (`Id`=277042 AND `Index`=0) OR (`Id`=277043 AND `Index`=0) OR (`Id`=277058 AND `Index`=0) OR (`Id`=263805 AND `Index`=0) OR (`Id`=267730 AND `Index`=0) OR (`Id`=267731 AND `Index`=0) OR (`Id`=267732 AND `Index`=0) OR (`Id`=267734 AND `Index`=0) OR (`Id`=267940 AND `Index`=0) OR (`Id`=268034 AND `Index`=0);
+DELETE FROM `quest_visual_effect` WHERE (`Id`=268713 AND `Index`=0);
+INSERT INTO `quest_visual_effect` (`Id`, `Index`, `VisualEffect`, `VerifiedBuild`) VALUES
+(268791, 0, 928, 19865),
+(269052, 0, 990, 19865),
+(269563, 0, 1281, 19865),
+(269881, 0, 520, 19865),
+(269895, 0, 520, 19865),
+(269913, 0, 1461, 19865),
+(270423, 0, 520, 19865),
+(270474, 0, 1714, 19865),
+(270779, 0, 538, 19865),
+(270807, 0, 1720, 19865),
+(270808, 0, 1720, 19865),
+(270809, 0, 1720, 19865),
+(270810, 0, 1720, 19865),
+(271176, 0, 1804, 19865),
+(271398, 0, 1803, 19865),
+(271504, 0, 538, 19865),
+(271527, 0, 569, 19865),
+(271588, 0, 1853, 19865),
+(271736, 0, 538, 19865),
+(271737, 0, 538, 19865),
+(271738, 0, 538, 19865),
+(271739, 0, 538, 19865),
+(271779, 0, 1894, 19865),
+(271869, 0, 1866, 19865),
+(271875, 0, 1907, 19865),
+(272046, 0, 1943, 19865),
+(272143, 0, 2086, 19865),
+(272158, 0, 1974, 19865),
+(272158, 1, 2024, 19865),
+(272204, 0, 2087, 19865),
+(272241, 0, 2016, 19865),
+(272242, 0, 2104, 19865),
+(272243, 0, 2106, 19865),
+(272249, 0, 2015, 19865),
+(272352, 0, 2069, 19865),
+(272393, 0, 2078, 19865),
+(272427, 0, 2158, 19865),
+(272446, 0, 2105, 19865),
+(272603, 0, 505, 19865),
+(272689, 0, 2152, 19865),
+(272689, 1, 2153, 19865),
+(272722, 0, 569, 19865),
+(272728, 0, 2089, 19865),
+(272860, 0, 569, 19865),
+(272980, 0, 2217, 19865),
+(273012, 0, 2213, 19865),
+(273030, 0, 2099, 19865),
+(273093, 0, 2216, 19865),
+(273099, 0, 2183, 19865),
+(273099, 1, 2198, 19865),
+(273515, 0, 2099, 19865),
+(273585, 0, 2370, 19865),
+(273703, 0, 2101, 19865),
+(274672, 0, 3163, 19865),
+(274672, 1, 3164, 19865),
+(274672, 2, 3165, 19865),
+(274672, 3, 3166, 19865),
+(274672, 4, 3167, 19865),
+(274951, 0, 505, 19865),
+(275096, 0, 2100, 19865),
+(275150, 0, 2100, 19865),
+(276043, 0, 505, 19865),
+(276319, 0, 505, 19865),
+(276321, 0, 505, 19865),
+(277041, 0, 3402, 19865),
+(277042, 0, 3403, 19865),
+(277043, 0, 3404, 19865),
+(277058, 0, 3247, 19865),
+(263805, 0, 569, 19865),
+(267730, 0, 538, 19865),
+(267731, 0, 505, 19865),
+(267732, 0, 520, 19865),
+(267734, 0, 538, 19865),
+(267940, 0, 521, 19865),
+(268034, 0, 569, 19865),
+(268713, 0, 860, 19865);
+
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=268981 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=268982 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=268983 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=268984 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=268987 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=268987 AND `Index`=1;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=268987 AND `Index`=2;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=269875 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=270080 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=252488 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=253398 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=253399 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=254108 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=256330 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=277059 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=277059 AND `Index`=1;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=277060 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=267713 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=267714 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=267715 AND `Index`=0;
+UPDATE `quest_visual_effect` SET `VerifiedBuild`=19865 WHERE `Id`=268654 AND `Index`=0;
diff --git a/sql/updates/world/2015_05_02_02_world.sql b/sql/updates/world/2015_05_02_02_world.sql
new file mode 100644
index 00000000000..5335e171514
--- /dev/null
+++ b/sql/updates/world/2015_05_02_02_world.sql
@@ -0,0 +1,15 @@
+UPDATE `quest_template` SET `RewardBonusMoney`=109700, `VerifiedBuild`=19865 WHERE `Id`=30; -- Trial of the Sea Lion
+UPDATE `quest_template` SET `RewardBonusMoney`=0, `VerifiedBuild`=19865 WHERE `Id` IN (55 /*Morbent Fel*/, 271 /*Vyrin's Revenge*/, 603 /*Ansirem's Key*/, 750 /*The Hunt Continues*/, 755 /*Rites of the Earthmother*/, 757 /*Rite of Strength*/, 759 /*Wildmane Totem*/, 776 /*Rites of the Earthmother*/, 785 /*A Strategic Alliance*/, 810 /*<UNUSED>*/, 812 /*Need for a Cure*/, 814 /*<UNUSED>*/, 886 /*The Barrens Oases*/, 902 /*Samophlange*/, 9316 /*[TXT] Goblin Savages*/, 10352 /*A Donation of Wool*/, 10354 /*A Donation of Silk*/, 10356 /*A Donation of Mageweave*/, 11123 /*Inspecting the Ruins*/, 11126 /*Traitors Among Us*/, 11952 /*Striking Back*/, 12001 /*zzOLDHunting Tarot: Lesser Beasts*/, 14082 /*Learn to Ride at the Exodar*/, 14083 /*Learn to Ride in Dun Morogh*/, 14436 /*Dwarven Digging*/, 24881 /*Classic Random 5-15 (1st)*/, 24889 /*Classic Random 5-15 (Nth)*/, 26893 /*Blackfathom Deeps*/, 26983 /*Just Close Enough*/, 28143 /*To the Withering*/);
+UPDATE `quest_template` SET `VerifiedBuild`=19865 WHERE `Id` IN (137 /*<NYI> <TXT> Stormwind Commendation*/, 7904 /*<UNUSED>*/, 11435 /*Gathered Pumpkins NYI*/, 12194 /*Say, There Wouldn't Happen to be a Souvenir This Year, Would There?*/, 24598 /*The Purification of Quel'Delar*/, 24838 /*A Change of Heart*/, 24840 /*A Change of Heart*/, 24842 /*A Change of Heart*/, 25249 /*A Change of Heart*/, 25305 /*Never Look Back*/, 28240 /*Tapped Out*/);
+UPDATE `quest_template` SET `RewardBonusMoney`=73200, `VerifiedBuild`=19865 WHERE `Id` IN (10968 /*Call on the Farseer*/, 13959 /*Back To The Orphanage*/, 28879 /*Back To The Orphanage*/, 28880 /*Back To The Orphanage*/);
+UPDATE `quest_template` SET `RewardBonusMoney`=14650, `VerifiedBuild`=19865 WHERE `Id` IN (11401 /*Call the Headless Horseman*/, 11404 /*Call the Headless Horseman*/, 11405 /*Call the Headless Horseman*/);
+UPDATE `quest_template` SET `RewardBonusMoney`=60, `VerifiedBuild`=19865 WHERE `Id` IN (11496 /*The Sanctum Wards*/, 11524 /*Erratic Behavior*/, 11538 /*The Battle for the Sun's Reach Armory*/);
+UPDATE `quest_template` SET `RewardMoney`=15400, `RewardBonusMoney`=14650, `VerifiedBuild`=19865 WHERE `Id`=12784; -- Desperate Research
+UPDATE `quest_template` SET `RewardBonusMoney`=600, `VerifiedBuild`=19865 WHERE `Id` IN (13248 /*Proof of Demise: King Ymiron*/, 13250 /*Proof of Demise: Gal'darah*/, 13254 /*Proof of Demise: Anub'arak*/, 13256 /*Proof of Demise: Cyanigosa*/, 14199 /*Proof of Demise: The Black Knight*/);
+UPDATE `quest_template` SET `RewardBonusMoney`=146300, `VerifiedBuild`=19865 WHERE `Id` IN (13937 /*A Trip To The Wonderworks*/, 14176 /*The Grateful Dead*/);
+UPDATE `quest_template` SET `RewardMoney`=154000, `RewardBonusMoney`=219450, `VerifiedBuild`=19865 WHERE `Id`=24223; -- Call to Arms: Arathi Basin
+UPDATE `quest_template` SET `RewardMoney`=77000, `RewardBonusMoney`=73200, `VerifiedBuild`=19865 WHERE `Id`=25295; -- Press Fire
+UPDATE `quest_template` SET `RewardBonusMoney`=490, `VerifiedBuild`=19865 WHERE `Id`=25750; -- Curious Distraction
+UPDATE `quest_template` SET `RewardBonusMoney`=1550, `VerifiedBuild`=19865 WHERE `Id`=27588; -- Signal the Attack
+
+UPDATE `quest_objectives` SET `VerifiedBuild`=19865 WHERE `Id` IN (251677 /*251677*/, 251684 /*251684*/, 251730 /*251730*/, 252393 /*252393*/, 252995 /*252995*/, 253013 /*253013*/, 253468 /*253468*/, 254137 /*254137*/, 254425 /*254425*/, 254426 /*254426*/, 254470 /*254470*/, 254479 /*254479*/, 254482 /*254482*/, 254556 /*254556*/, 254703 /*254703*/, 254734 /*254734*/, 254788 /*254788*/, 254789 /*254789*/, 255075 /*255075*/, 255076 /*255076*/, 255385 /*255385*/, 255386 /*255386*/, 256309 /*256309*/, 256683 /*256683*/, 257823 /*257823*/, 259269 /*259269*/, 261655 /*261655*/, 261839 /*261839*/, 262351 /*262351*/, 262530 /*262530*/, 262531 /*262531*/, 262691 /*262691*/, 262732 /*262732*/, 262733 /*262733*/, 262734 /*262734*/, 262736 /*262736*/, 262737 /*262737*/, 263521 /*263521*/, 263888 /*263888*/, 263953 /*263953*/, 263997 /*263997*/, 264079 /*264079*/, 264123 /*264123*/, 264144 /*264144*/, 264625 /*264625*/, 264889 /*264889*/, 264925 /*264925*/, 264935 /*264935*/, 264936 /*264936*/, 265104 /*265104*/, 265105 /*265105*/, 265406 /*265406*/, 267200 /*267200*/, 267201 /*267201*/, 267202 /*267202*/, 267203 /*267203*/, 267237 /*267237*/);
diff --git a/sql/updates/world/2015_05_02_03_world.sql b/sql/updates/world/2015_05_02_03_world.sql
new file mode 100644
index 00000000000..3ed85d7b24b
--- /dev/null
+++ b/sql/updates/world/2015_05_02_03_world.sql
@@ -0,0 +1,85 @@
+SET @CGUID := 370768;
+SET @OGUID := 233404;
+
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+68;
+INSERT INTO `creature` (`guid`, `id`, `map`, `position_x`, `position_y`, `position_z`, `orientation`) VALUES
+(@CGUID+0, 46763, 762, 4.26206, -11.6361, -17.82397, 3.420845),
+(@CGUID+1, 48535, 762, -15.9296, -10.8046, -15.32037, 4.258604),
+(@CGUID+2, 48535, 762, 2.31688, -7.91102, -23.63947, 0),
+(@CGUID+3, 48535, 762, -4.130146, -2.779428, -17.79507, 0.01120401),
+(@CGUID+4, 46764, 763, 4.15988, -11.1731, -17.82867, 3.368485),
+(@CGUID+5, 48535, 763, -11.77357, -10.21906, -16.61713, 1.694214),
+(@CGUID+6, 48535, 763, 6.63632, -3.07199, -17.71427, 1.22173),
+(@CGUID+7, 48535, 763, 7.3889, -7.71648, -23.53657, 3.246312),
+(@CGUID+8, 42885, 747, -54.99634, -7.373413, -5.197235, 2.366248),
+(@CGUID+9, 42885, 747, -23.40527, -24.4469, -5.236877, 1.179137),
+(@CGUID+10, 42885, 747, 21.1759, -13.75055, 9.600037, 4.709668),
+(@CGUID+11, 42801, 747, -64.83681, 0.033795, 9.903969, 0),
+(@CGUID+12, 42885, 747, 15.50969, -17.88296, -5.163431, 0.6208096),
+(@CGUID+13, 42681, 747, -28.55183, -12.62104, 20.55605, 1.221731),
+(@CGUID+14, 42681, 747, -36.9719, -12.35286, 20.52748, 2.094395),
+(@CGUID+15, 42681, 747, -8.098283, -10.13041, 20.51006, 4.328416),
+(@CGUID+16, 42885, 747, -44.20203, 21.69708, 9.606781, 0.9522773),
+(@CGUID+17, 42885, 747, -1.110718, 21.1604, 9.630798, 0.5497429),
+(@CGUID+18, 42885, 747, 14.22437, 10.63971, 9.554291, 2.169876),
+(@CGUID+19, 42885, 747, -39.12793, 18.85876, -5.200531, 0.1506691),
+(@CGUID+20, 42681, 747, -12.88364, 0.360375, 25.36376, 5.462881),
+(@CGUID+21, 40350, 747, -32.20043, 0.574289, 13.4672, 0.541052),
+(@CGUID+22, 42681, 747, 4.631958, -13.97084, 20.88808, 1.413717),
+(@CGUID+23, 42682, 747, -43.78606, 0.475003, 20.60984, 6.178465),
+(@CGUID+24, 42809, 747, -34.16956, 0.603002, 8.555613, 0),
+(@CGUID+25, 42681, 747, -36.3671, 8.293001, 20.53229, 5.462881),
+(@CGUID+26, 42682, 747, -11.36899, 8.655779, 20.51657, 0.7330384),
+(@CGUID+27, 42885, 747, 25.26886, 0.7057495, -4.921814, 5.96848),
+(@CGUID+28, 42885, 747, 5.521973, 21.10114, -5.195404, 2.243494),
+(@CGUID+29, 42681, 747, -58.60949, -0.095605, 23.56651, 1.32645),
+(@CGUID+30, 42682, 747, 7.348988, 1.012339, 20.63929, 2.199114),
+(@CGUID+31, 42681, 747, -33.68518, 14.85802, 20.70304, 3.368485),
+(@CGUID+32, 42681, 747, -13.73099, 14.58074, 20.47051, 5.742133),
+(@CGUID+33, 42682, 747, -47.46341, 10.64703, 22.57558, 4.991642),
+(@CGUID+34, 42682, 747, 18.27893, -11.43421, 20.46279, 4.328416),
+(@CGUID+35, 42681, 747, 16.12486, -3.936981, 20.51413, 4.852015),
+(@CGUID+36, 42681, 747, -62.30529, 4.799966, 23.54879, 0.4537854),
+(@CGUID+37, 42885, 747, 34.90405, 8.44812, 9.605408, 5.832501),
+(@CGUID+38, 42682, 747, 3.028534, 18.12543, 20.53766, 5.253441),
+(@CGUID+39, 42885, 747, 43.29504, -4.26123, 9.285492, 3.197539),
+(@CGUID+40, 42681, 747, 32.83448, -24.09242, 25.11685, 5.742133),
+(@CGUID+41, 42885, 747, 42.10449, -4.010803, -2.083954, 1.74742),
+(@CGUID+42, 42682, 747, 31.65753, -7.46235, 23.36306, 1.361357),
+(@CGUID+43, 42681, 747, 15.77466, 16.16105, 20.59039, 2.076942),
+(@CGUID+44, 42681, 747, 31.94202, 1.224564, 23.37182, 4.764749),
+(@CGUID+45, 42682, 747, 39.30655, -41.2642, 25.11442, 2.199114),
+(@CGUID+46, 43681, 747, 28.9662, 7.74904, 23.36593, 6.230825),
+(@CGUID+47, 43082, 747, 28.9031, 7.92859, 23.36993, 3.385939),
+(@CGUID+48, 42681, 747, 41.02726, -20.22445, 25.11503, 3.420845),
+(@CGUID+49, 42681, 747, 38.54572, -4.734725, 40.167, 5.742133),
+(@CGUID+50, 42682, 747, 35.79272, 6.766162, 40.16405, 5.253441),
+(@CGUID+51, 42885, 747, 53.87292, 7.720337, -2.054565, 1.592655),
+(@CGUID+52, 42681, 747, 35.64383, 22.14937, 25.1158, 5.742133),
+(@CGUID+53, 40350, 747, 50.3677, 1.59352, 42.24823, 3.944444),
+(@CGUID+54, 40350, 747, -22.0063, 53.3257, 4.203373, 4.956735),
+(@CGUID+55, 42684, 747, 48.71556, 11.32662, 40.50675, 3.787364),
+(@CGUID+56, 40350, 747, -21.9116, 57.4225, 25.87903, 3.944444),
+(@CGUID+57, 42682, 747, 35.15972, 33.27727, 25.11475, 5.550147),
+(@CGUID+58, 40350, 747, -24.6196, 55.3271, 5.002563, 4.782202),
+(@CGUID+59, 40350, 747, -17.385, 55.5016, 4.217743, 4.956735),
+(@CGUID+60, 40350, 747, -21.9806, 57.688, 9.419393, 3.944444),
+(@CGUID+61, 42716, 747, 49.72736, 18.22787, 42.58023, 3.839724),
+(@CGUID+62, 40350, 747, 49.58121, 18.193, 46.16101, 3.944444),
+(@CGUID+63, 40350, 747, -24.3035, 61.4472, 3.728523, 1.256637),
+(@CGUID+64, 40350, 747, -18.6721, 62.316, 4.217683, 1.256637),
+(@CGUID+65, 40350, 747, 37.0378, 42.39633, 41.92483, 3.944444),
+(@CGUID+66, 42681, 747, 40.88038, 43.12596, 25.11707, 5.044002),
+(@CGUID+67, 40350, 747, 3.007076, 0.687804, -35.96375, 0.541052),
+(@CGUID+68, 40350, 747, 6.583054, -26.1589, -42.17334, 0.541052);
+
+
+DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+6;
+INSERT INTO `gameobject` (`guid`, `id`, `map`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES
+(@OGUID+0, 207571, 763, -4.223741, -10.42916, -17.757, 5.654869, 0, 0, 0, 1, 120, 255, 1),
+(@OGUID+1, 204280, 747, 44.1827, 6.19141, 10.4048, 3.769912, 0, 0, 0, 1, 120, 255, 1),
+(@OGUID+2, 204280, 747, -6.2442, -5.59698, 20.4536, 3.769912, 0, 0, 0, 1, 120, 255, 1),
+(@OGUID+3, 204279, 747, -37.0487, -3.5828, 20.4435, 2.199115, 0, 0, 0, 1, 120, 255, 1),
+(@OGUID+4, 204280, 747, 1.20738, 25.3906, 25.634, 3.769912, 0, 0, 0, 1, 120, 255, 1),
+(@OGUID+5, 204279, 747, -22.6119, 16.5843, 20.4029, 2.199115, 0, 0, 0, 1, 120, 255, 1),
+(@OGUID+6, 204279, 747, -63.1212, -5.60142, 23.4866, 2.199115, 0, 0, 0, 1, 120, 255, 1);
diff --git a/sql/updates/world/2015_05_02_04_world.sql b/sql/updates/world/2015_05_02_04_world.sql
new file mode 100644
index 00000000000..6f2f092649a
--- /dev/null
+++ b/sql/updates/world/2015_05_02_04_world.sql
@@ -0,0 +1,3440 @@
+ALTER TABLE `creature_equip_template` DROP PRIMARY KEY;
+
+ALTER TABLE `creature_equip_template`
+ CHANGE COLUMN `entry` `CreatureID` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
+ CHANGE COLUMN `id` `ID` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',
+ CHANGE COLUMN `itemEntry1` `ItemID1` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
+ CHANGE COLUMN `itemEntry2` `ItemID2` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
+ CHANGE COLUMN `itemEntry3` `ItemID3` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
+ ADD PRIMARY KEY (`CreatureID`, `ID`);
+
+
+DELETE FROM `creature_equip_template` WHERE `CreatureID` IN (2057, 14824, 24470, 29059, 29806, 30388, 48204, 50332, 50336, 50340, 50341, 50347, 50351, 50352, 50359, 50363, 50364, 50388, 50654, 50656, 50657, 50658, 50734, 50739, 50749, 50766, 50768, 50772, 50776, 50780, 50782, 50787, 50789, 50791, 50808, 50811, 50816, 50821, 51059, 54610, 54614, 54615, 54617, 54622, 54623, 54703, 54758, 54788, 54869, 54870, 54885, 54898, 54904, 54906, 54907, 54908, 54916, 54924, 54925, 54959, 54960, 55016, 55032, 55054, 55084, 55087, 55104, 55110, 55126, 55137, 55140, 55141, 55142, 55143, 55145, 55146, 55147, 55148, 55162, 55169, 55170, 55171, 55172, 55180, 55189, 55193, 55195, 55279, 55287, 55291, 55335, 55344, 55411, 55454, 55456, 55458, 55461, 55470, 55473, 55484, 55485, 55498, 55505, 55509, 55511, 55521, 55522, 55523, 55554, 55555, 55557, 55576, 55577, 55578, 55579, 55580, 55589, 55622, 55632, 55646, 55647, 55651, 55667, 55669, 55670, 55671, 55679, 55680, 55687, 55688, 55693, 55701, 55702, 55707, 55709, 55710, 55711, 55716, 55740, 55773, 55778, 55791, 55793, 55806, 55810, 55827, 55832, 55833, 55842, 55844, 55847, 55848, 55886, 55887, 55901, 55902, 55904, 55905, 55906, 55996, 56009, 56015, 56018, 56030, 56064, 56085, 56112, 56113, 56114, 56117, 56128, 56181, 56209, 56222, 56227, 56232, 56234, 56240, 56242, 56261, 56264, 56288, 56289, 56303, 56306, 56309, 56313, 56339, 56340, 56360, 56362, 56364, 56366, 56379, 56385, 56398, 56399, 56406, 56407, 56448, 56473, 56474, 56477, 56478, 56484, 56489, 56490, 56491, 56493, 56494, 56495, 56496, 56497, 56498, 56499, 56500, 56512, 56582, 56585, 56589, 56591, 56592, 56593, 56614, 56636, 56638, 56639, 56645, 56656, 56670, 56672, 56673, 56674, 56678, 56693, 56701, 56705, 56720, 56721, 56722, 56725, 56726, 56727, 56728, 56747, 56767, 56771, 56773, 56774, 56775, 56776, 56777, 56778, 56838, 56841, 56862, 56866, 56868, 56875, 56876, 56890, 57108, 57119, 57120, 57121, 57122, 57132, 57134, 57155, 57177, 57195, 57196, 57198, 57202, 57204, 57213, 57242, 57316, 57317, 57318, 57319, 57324, 57325, 57326, 57385, 57400, 57444, 57466, 57617, 57618, 57620, 57622, 57623, 57648, 57713, 57756, 58030, 58032, 58033, 58068, 58108, 58117, 58146, 58158, 58162, 58165, 58181, 58186, 58202, 58205, 58206, 58255, 58256, 58257, 58273, 58274, 58276, 58277, 58278, 58281, 58285, 58288, 58342, 58361, 58367, 58368, 58377, 58408, 58412, 58421, 58422, 58446, 58447, 58460, 58461, 58462, 58464, 58465, 58466, 58467, 58468, 58469, 58470, 58471, 58501, 58502, 58503, 58504, 58505, 58543, 58544, 58546, 58569, 58580, 58590, 58605, 58607, 58608, 58609, 58610, 58612, 58614, 58632, 58634, 58639, 58666, 58668, 58671, 58676, 58683, 58684, 58685, 58695, 58721, 58722, 58723, 58736, 58737, 58738, 58739, 58740, 58756, 58757, 58765, 58777, 58779, 58783, 58784, 58785, 58790, 58791, 58803, 58807, 58810, 58814, 58817, 58822, 58823, 58824, 58826, 58830, 58832, 58840, 58843, 58844, 58850, 58857, 58858, 58870, 58872, 58873, 58875, 58877, 58878, 58897, 58899, 58900, 58901, 58902, 58903, 58904, 58905, 58911, 58912, 58913, 58914, 58919, 58920, 58927, 58928, 58929, 58931, 58932, 58934, 58936, 58937, 58939, 58943, 58945, 58948, 58949, 58956, 58958, 58963, 58969, 58975, 58981, 58983, 58984, 58985, 58986, 58987, 58989, 58998, 59003, 59007, 59021, 59025, 59036, 59038, 59054, 59057, 59060, 59067, 59068, 59069, 59070, 59073, 59076, 59077, 59080, 59083, 59086, 59087, 59088, 59089, 59098, 59119, 59121, 59122, 59123, 59126, 59127, 59128, 59129, 59130, 59131, 59132, 59133, 59134, 59135, 59137, 59143, 59146, 59148, 59150, 59159, 59162, 59165, 59166, 59173, 59175, 59180, 59181, 59184, 59191, 59200, 59217, 59220, 59233, 59240, 59241, 59263, 59273, 59281, 59299, 59302, 59303, 59305, 59310, 59317, 59332, 59333, 59334, 59335, 59337, 59338, 59340, 59342, 59343, 59350, 59353, 59361, 59362, 59363, 59364, 59368, 59369, 59372, 59373, 59379, 59382, 59385, 59387, 59403, 59410, 59412, 59414, 59416, 59424, 59425, 59430, 59435, 59436, 59442, 59443, 59463, 59467, 59471, 59483, 59486, 59526, 59527, 59529, 59532, 59538, 59554, 59556, 59560, 59561, 59562, 59564, 59565, 59572, 59573, 59575, 59577, 59578, 59580, 59584, 59586, 59592, 59593, 59595, 59596, 59597, 59614, 59619, 59632, 59636, 59645, 59647, 59654, 59656, 59678, 59682, 59690, 59697, 59705, 59714, 59715, 59718, 59728, 59746, 59749, 59752, 59758, 59778, 59779, 59789, 59790, 59797, 59800, 59801, 59802, 59803, 59805, 59820, 59821, 59826, 59827, 59829, 59830, 59831, 59832, 59835, 59842, 59843, 59845, 59848, 59849, 59850, 59851, 59853, 59858, 59859, 59888, 59914, 59921, 59922, 59923, 59924, 59952, 59958, 59968, 59969, 59972, 59998, 60000, 60002, 60016, 60018, 60019, 60020, 60030, 60031, 60032, 60035, 60040, 60057, 60121, 60122, 60127, 60135, 60136, 60138, 60141, 60142, 60149, 60152, 60161, 60163, 60168, 60169, 60170, 60173, 60175, 60180, 60182, 60190, 60195, 60214, 60221, 60222, 60224, 60225, 60226, 60227, 60228, 60235, 60272, 60273, 60284, 60289, 60290, 60293, 60299, 60302, 60354, 60357, 60358, 60359, 60365, 60368, 60381, 60386, 60396, 60397, 60398, 60399, 60400, 60404, 60405, 60407, 60422, 60427, 60428, 60429, 60431, 60434, 60441, 60447, 60452, 60458, 60459, 60475, 60479, 60495, 60499, 60500, 60507, 60509, 60510, 60515, 60516, 60520, 60524, 60536, 60554, 60560, 60569, 60572, 60578, 60580, 60582, 60583, 60585, 60586, 60591, 60601, 60602, 60603, 60604, 60625, 60626, 60628, 60647, 60673, 60674, 60675, 60676, 60683, 60689, 60690, 60692, 60693, 60697, 60699, 60701, 60706, 60709, 60710, 60713, 60724, 60725, 60726, 60728, 60742, 60743, 60744, 60745, 60746, 60749, 60752, 60753, 60756, 60766, 60767, 60769, 60770, 60774, 60779, 60786, 60801, 60802, 60826, 60832, 60834, 60846, 60847, 60851, 60852, 60853, 60854, 60856, 60877, 60878, 60879, 60890, 60891, 60895, 60896, 60912, 60924, 60925, 60927, 60928, 60929, 60936, 60944, 60945, 60969, 60971, 60978, 60980, 60995, 60996, 61004, 61006, 61007, 61008, 61010, 61013, 61016, 61017, 61018, 61019, 61020, 61021, 61025, 61038, 61042, 61046, 61050, 61060, 61065, 61066, 61067, 61082, 61083, 61094, 61095, 61097, 61116, 61130, 61131, 61148, 61149, 61154, 61155, 61173, 61175, 61202, 61203, 61210, 61216, 61222, 61239, 61240, 61242, 61243, 61250, 61252, 61292, 61300, 61301, 61303, 61304, 61305, 61309, 61310, 61311, 61334, 61337, 61338, 61339, 61340, 61341, 61343, 61344, 61345, 61346, 61347, 61354, 61355, 61365, 61376, 61377, 61378, 61381, 61389, 61390, 61392, 61395, 61396, 61397, 61398, 61399, 61404, 61412, 61417, 61418, 61421, 61423, 61427, 61431, 61433, 61434, 61436, 61442, 61444, 61445, 61448, 61451, 61454, 61461, 61467, 61468, 61469, 61470, 61471, 61479, 61480, 61485, 61488, 61495, 61496, 61501, 61514, 61517, 61518, 61520, 61521, 61524, 61525, 61526, 61527, 61534, 61537, 61540, 61553, 61557, 61562, 61563, 61564, 61570, 61571, 61580, 61581, 61583, 61584, 61585, 61600, 61624, 61634, 61641, 61649, 61660, 61662, 61665, 61666, 61672, 61678, 61682, 61683, 61695, 61696, 61698, 61701, 61702, 61705, 61716, 61724, 61742, 61749, 61760, 61766, 61783, 61803, 61806, 61808, 61813, 61818, 61819, 61820, 61821, 61822, 61823, 61834, 61836, 61837, 61838, 61839, 61840, 61841, 61842, 61860, 61861, 61881, 61884, 61886, 61906, 61917, 61928, 61929, 61933, 61934, 61935, 61946, 61947, 61968, 61970, 61989, 62021, 62074, 62075, 62076, 62087, 62092, 62093, 62096, 62102, 62107, 62108, 62112, 62122, 62123, 62124, 62125, 62126, 62152, 62153, 62193, 62194, 62195, 62196, 62197, 62202, 62214, 62215, 62218, 62220, 62221, 62227, 62236, 62243, 62247, 62273, 62274, 62275, 62276, 62279, 62280, 62281, 62286, 62287, 62288, 62293, 62295, 62296, 62299, 62301, 62303, 62321, 62326, 62327, 62334, 62348, 62350, 62351, 62352, 62354, 62362, 62366, 62368, 62369, 62374, 62376, 62378, 62379, 62380, 62385, 62394, 62397, 62400, 62401, 62402, 62404, 62405, 62406, 62407, 62408, 62410, 62412, 62414, 62415, 62416, 62426, 62427, 62428, 62432, 62436, 62437, 62440, 62441, 62443, 62444, 62466, 62467, 62468, 62471, 62474, 62475, 62477, 62481, 62485, 62488, 62490, 62491, 62492, 62494, 62495, 62499, 62511, 62529, 62530, 62538, 62540, 62543, 62546, 62547, 62550, 62551, 62552, 62553, 62556, 62558, 62559, 62563, 62568, 62569, 62571, 62573, 62574, 62577, 62580, 62588, 62589, 62590, 62593, 62595, 62600, 62603, 62605, 62606, 62608, 62613, 62622, 62624, 62630, 62631, 62632, 62636, 62639, 62668, 62677, 62680, 62686, 62730, 62733, 62734, 62735, 62736, 62749, 62754, 62755, 62756, 62757, 62774, 62781, 62782, 62785, 62786, 62787, 62788, 62789, 62790, 62793, 62796, 62797, 62798, 62799, 62800, 62801, 62802, 62803, 62804, 62805, 62806, 62810, 62811, 62813, 62814, 62825, 62828, 62834, 62838, 62839, 62840, 62842, 62844, 62846, 62850, 62863, 62880, 62881, 62890, 62902, 62926, 62928, 62941, 62942, 62966, 62968, 62978, 62980, 62986, 62993, 63013, 63017, 63030, 63032, 63033, 63034, 63035, 63036, 63041, 63044, 63048, 63049, 63056, 63065, 63071, 63081, 63101, 63102, 63103, 63104, 63106, 63124, 63125, 63128, 63129, 63131, 63134, 63135, 63136, 63143, 63171, 63173, 63176, 63179, 63195, 63196, 63197, 63206, 63218, 63221, 63240, 63256, 63257, 63285, 63296, 63308, 63316, 63318, 63327, 63331, 63332, 63335, 63350, 63351, 63356, 63357, 63364, 63367, 63372, 63373, 63378, 63379, 63380, 63390, 63400, 63407, 63408, 63409, 63481, 63483, 63484, 63486, 63488, 63490, 63491, 63492, 63493, 63494, 63495, 63496, 63512, 63513, 63514, 63526, 63528, 63531, 63532, 63536, 63560, 63564, 63570, 63571, 63576, 63589, 63591, 63592, 63593, 63602, 63604, 63610, 63611, 63613, 63615, 63616, 63617, 63618, 63622, 63623, 63624, 63635, 63636, 63641, 63651, 63655, 63656, 63657, 63662, 63664, 63673, 63678, 63680, 63681, 63684, 63685, 63686, 63688, 63691, 63693, 63694, 63695, 63721, 63742, 63748, 63764, 63771, 63772, 63776, 63777, 63782, 63800, 63801, 63802, 63806, 63809, 63810, 63812, 63817, 63818, 63820, 63821, 63822, 63839, 63840, 63844, 63845, 63846, 63851, 63854, 63856, 63866, 63867, 63875, 63876, 63882, 63883, 63884, 63885, 63886, 63887, 63888, 63891, 63901, 63902, 63903, 63904, 63905, 63906, 63907, 63908, 63909, 63910, 63916, 63917, 63923, 63924, 63925, 63933, 63936, 63939, 63947, 63948, 63974, 63975, 63976, 63977, 63993, 63997, 63998, 63999, 64000, 64003, 64008, 64010, 64013, 64033, 64034, 64042, 64044, 64045, 64061, 64063, 64068, 64082, 64083, 64084, 64085, 64087, 64089, 64092, 64101, 64103, 64117, 64120, 64128, 64129, 64130, 64133, 64159, 64162, 64165, 64184, 64192, 64194, 64195, 64196, 64197, 64199, 64200, 64201, 64202, 64216, 64224, 64234, 64236, 64237, 64239, 64240, 64241, 64243, 64260, 64263, 64268, 64277, 64280, 64281, 64282, 64286, 64324, 64325, 64326, 64331, 64333, 64338, 64339, 64340, 64341, 64342, 64343, 64344, 64353, 64355, 64357, 64358, 64360, 64362, 64363, 64364, 64366, 64370, 64380, 64381, 64389, 64399, 64401, 64406, 64407, 64408, 64409, 64412, 64418, 64420, 64421, 64422, 64423, 64424, 64427, 64434, 64441, 64445, 64453, 64454, 64458, 64464, 64466, 64467, 64470, 64471, 64472, 64473, 64474, 64480, 64490, 64500, 64517, 64519, 64536, 64542, 64549, 64559, 64560, 64564, 64566, 64570, 64572, 64573, 64574, 64584, 64586, 64587, 64601, 64602, 64614, 64615, 64631, 64639, 64643, 64646, 64647, 64648, 64650, 64659, 64660, 64663, 64683, 64694, 64705, 64714, 64720, 64721, 64722, 64723, 64727, 64729, 64732, 64733, 64734, 64735, 64738, 64757, 64764, 64827, 64829, 64837, 64838, 64839, 64841, 64842, 64852, 64853, 64856, 64859, 64867, 64868, 64869, 64870, 64871, 64872, 64873, 64874, 64884, 64886, 64888, 64889, 64890, 64892, 64900, 64901, 64902, 64916, 64917, 64922, 64930, 64931, 64932, 64933, 64934, 64935, 64947, 64969, 64970, 64971, 64973, 64974, 64975, 64978, 64979, 64980, 64994, 64995, 64997, 64998, 64999, 65003, 65012, 65013, 65014, 65022, 65024, 65025, 65026, 65092, 65114, 65121, 65127, 65129, 65130, 65131, 65132, 65133, 65134, 65135, 65136, 65138, 65139, 65140, 65144, 65151, 65152, 65153, 65154, 65160, 65171, 65172, 65176, 65177, 65186, 65201, 65218, 65232, 65252, 65273, 65274, 65289, 65352, 65373, 65382, 65384, 65402, 65442, 65444, 65445, 65446, 65447, 65455, 65472, 65474, 65478, 65486, 65494, 65495, 65498, 65499, 65500, 65501, 65507, 65510, 65516, 65529, 65532, 65548, 65549, 65551, 65572, 65573, 65576, 65584, 65589, 65594, 65598, 65601, 65609, 65610, 65611, 65621, 65623, 65626, 65628, 65631, 65638, 65639, 65646, 65648, 65652, 65654, 65683, 65684, 65685, 65688, 65690, 65713, 65714, 65746, 65747, 65749, 65766, 65779, 65781, 65782, 65785, 65786, 65787, 65788, 65807, 65810, 65840, 65841, 65842, 65856, 65864, 65866, 65867, 65874, 65875, 65880, 65881, 65882, 65883, 65885, 65899, 65900, 65905, 65910, 65911, 65912, 65926, 65928, 65941, 65942, 65943, 65944, 65945, 65946, 65947, 65948, 65949, 65950, 65951, 65952, 65953, 65954, 65955, 65956, 65957, 65958, 65959, 65960, 65977, 65978, 65995, 66000, 66052, 66053, 66055, 66057, 66059, 66061, 66066, 66073, 66078, 66095, 66138, 66149, 66158, 66159, 66160, 66162, 66165, 66169, 66174, 66180, 66182, 66195, 66200, 66206, 66207, 66219, 66235, 66237, 66251, 66253, 66254, 66255, 66256, 66257, 66258, 66260, 66261, 66263, 66267, 66268, 66269, 66270, 66271, 66272, 66274, 66275, 66276, 66280, 66281, 66283, 66285, 66286, 66287, 66288, 66289, 66290, 66291, 66300, 66306, 66309, 66310, 66315, 66328, 66341, 66346, 66347, 66348, 66350, 66351, 66353, 66354, 66355, 66356, 66357, 66358, 66359, 66360, 66392, 66395, 66396, 66404, 66406, 66407, 66419, 66441, 66446, 66460, 66465, 66475, 66480, 66503, 66505, 66506, 66507, 66527, 66570, 66574, 66575, 66576, 66581, 66596, 66603, 66630, 66634, 66641, 66646, 66647, 66648, 66649, 66650, 66653, 66659, 66666, 66667, 66679, 66682, 66693, 66694, 66700, 66704, 66727, 66732, 66744, 66769, 66770, 66775, 66776, 66777, 66784, 66788, 66789, 66790, 66791, 66793, 66796, 66797, 66800, 66816, 66825, 66836, 66845, 66847, 66848, 66860, 66861, 66875, 66899, 66905, 66911, 66913, 66915, 66921, 66927, 66931, 66948, 66979, 66999, 67013, 67014, 67024, 67029, 67030, 67034, 67035, 67037, 67038, 67052, 67093, 67149, 67150, 67158, 67160, 67170, 67173, 67175, 67176, 67178, 67179, 67184, 67195, 67196, 67197, 67198, 67199, 67200, 67232, 67243, 67244, 67245, 67246, 67250, 67252, 67255, 67256, 67257, 67258, 67259, 67263, 67264, 67266, 67268, 67269, 67281, 67283, 67284, 67294, 67295, 67296, 67297, 67299, 67302, 67304, 67305, 67306, 67309, 67310, 67312, 67313, 67315, 67317, 67318, 67330, 67333, 67334, 67346, 67354, 67357, 67360, 67361, 67362, 67366, 67369, 67373, 67387, 67391, 67396, 67397, 67399, 67405, 67407, 67413, 67418, 67419, 67425, 67426, 67427, 67428, 67429, 67430, 67431, 67434, 67441, 67444, 67447, 67460, 67461, 67466, 67487, 67488, 67511, 67512, 67513, 67514, 67515, 67516, 67520, 67530, 67548, 67550, 67551, 67558, 67560, 67561, 67563, 67564, 67568, 67572, 67579, 67580, 67581, 67582, 67584, 67585, 67586, 67587, 67588, 67591, 67598, 67599, 67601, 67603, 67618, 67619, 67620, 67621, 67622, 67623, 67626, 67627, 67633, 67636, 67637, 67638, 67646, 67647, 67649, 67650, 67651, 67657, 67660, 67662, 67673, 67681, 67682, 67689, 67690, 67692, 67710, 67711, 67713, 67714, 67715, 67717, 67719, 67720, 67721, 67722, 67723, 67725, 67726, 67727, 67728, 67729, 67730, 67731, 67732, 67734, 67746, 67748, 67749, 67752, 67754, 67757, 67762, 67764, 67765, 67766, 67767, 67775, 67776, 67782, 67786, 67790, 67801, 67804, 67805, 67806, 67809, 67810, 67811, 67812, 67814, 67815, 67818, 67821, 67822, 67825, 67826, 67832, 67834, 67837, 67840, 67844, 67846, 67847, 67848, 67864, 67867, 67868, 67869, 67870, 67871, 67873, 67874, 67880, 67884, 67886, 67887, 67888, 67889, 67890, 67891, 67892, 67893, 67900, 67901, 67902, 67904, 67905, 67913, 67919, 67920, 67923, 67924, 67926, 67927, 67929, 67932, 67939, 67947, 67950, 67951, 67953, 67959, 67964, 67965, 67968, 67970, 67971, 67973, 67976, 67979, 67983, 67984, 67985, 67987, 67989, 67990, 67992, 67993, 67994, 67995, 67996, 67997, 67998, 67999, 68002, 68003, 68005, 68009, 68014, 68016, 68023, 68025, 68038, 68039, 68041, 68042, 68043, 68044, 68045, 68046, 68047, 68048, 68049, 68050, 68051, 68058, 68059, 68072, 68074, 68077, 68078, 68084, 68085, 68086, 68088, 68096, 68098, 68126, 68128, 68129, 68130, 68137, 68141, 68142, 68143, 68144, 68145, 68147, 68154, 68164, 68175, 68176, 68203, 68204, 68223, 68224, 68234, 68235, 68236, 68237, 68242, 68278, 68287, 68293, 68294, 68304, 68305, 68308, 68310, 68311, 68312, 68315, 68317, 68318, 68319, 68320, 68321, 68322, 68326, 68328, 68329, 68331, 68332, 68333, 68334, 68335, 68336, 68337, 68342, 68352, 68354, 68355, 68363, 68364, 68365, 68367, 68368, 68369, 68370, 68371, 68372, 68373, 68377, 68378, 68380, 68384, 68389, 68391, 68392, 68393, 68397, 68399, 68401, 68402, 68409, 68418, 68420, 68429, 68431, 68432, 68470, 68471, 68472, 68474, 68475, 68477, 68479, 68483, 68485, 68486, 68490, 68492, 68496, 68501, 68503, 68508, 68514, 68519, 68525, 68536, 68538, 68544, 68546, 68557, 68581, 68586, 68588, 68589, 68590, 68592, 68593, 68601, 68603, 68605, 68609, 68612, 68616, 68617, 68619, 68631, 68632, 68634, 68639, 68640, 68642, 68644, 68645, 68646, 68647, 68648, 68651, 68652, 68667, 68668, 68669, 68674, 68677, 68680, 68685, 68687, 68689, 68692, 68707, 68708, 68714, 68716, 68717, 68727, 68739, 68749, 68751, 68752, 68753, 68754, 68755, 68756, 68757, 68758, 68760, 68761, 68769, 68774, 68777, 68815, 68821, 68825, 68826, 68827, 68829, 68830, 68832, 68833, 68835, 68842, 68843, 68844, 68847, 68851, 68854, 68857, 68862, 68863, 68864, 68870, 68871, 68879, 68880, 68881, 68882, 68883, 68903, 68904, 68905, 68906, 68920, 68922, 68924, 68930, 68939, 68941, 68945, 68949, 68950, 68951, 68955, 68960, 68965, 68966, 68967, 68968, 68972, 68975, 68977, 68979, 68980, 68981, 68982, 68983, 68985, 68988, 68993, 68997, 68998, 68999, 69000, 69001, 69002, 69003, 69004, 69005, 69006, 69007, 69008, 69009, 69020, 69029, 69046, 69054, 69056, 69057, 69059, 69060, 69064, 69065, 69073, 69074, 69078, 69085, 69088, 69095, 69131, 69132, 69136, 69140, 69144, 69152, 69154, 69155, 69164, 69167, 69168, 69169, 69171, 69173, 69175, 69176, 69178, 69184, 69185, 69194, 69196, 69197, 69198, 69201, 69202, 69211, 69221, 69223, 69224, 69225, 69226, 69229, 69231, 69235, 69249, 69250, 69254, 69255, 69256, 69257, 69259, 69266, 69272, 69274, 69281, 69285, 69286, 69294, 69295, 69298, 69300, 69301, 69312, 69314, 69321, 69322, 69323, 69326, 69333, 69334, 69338, 69339, 69348, 69371, 69374, 69376, 69379, 69388, 69390, 69397, 69399, 69401, 69412, 69413, 69418, 69422, 69425, 69431, 69455, 69457, 69461, 69463, 69468, 69471, 69475, 69478, 69481, 69483, 69485, 69488, 69501, 69504, 69507, 69517, 69518, 69521, 69527, 69530, 69532, 69534, 69538, 69544, 69552, 69557, 69559, 69565, 69573, 69581, 69599, 69600, 69615, 69616, 69617, 69619, 69620, 69621, 69624, 69625, 69633, 69644, 69652, 69657, 69663, 69664, 69665, 69666, 69668, 69670, 69677, 69678, 69680, 69741, 69742, 69743, 69744, 69749, 69768, 69769, 69780, 69791, 69792, 69797, 69799, 69800, 69802, 69804, 69809, 69810, 69821, 69824, 69826, 69827, 69828, 69833, 69834, 69835, 69837, 69840, 69841, 69842, 69843, 69846, 69865, 69880, 69899, 69905, 69906, 69909, 69910, 69911, 69917, 69925, 69927, 69945, 69949, 69961, 69969, 69974, 69975, 69976, 69977, 69978, 69994, 69995, 69996, 70000, 70001, 70002, 70003, 70030, 70035, 70040, 70041, 70044, 70045, 70046, 70055, 70068, 70070, 70074, 70075, 70080, 70084, 70085, 70086, 70087, 70088, 70089, 70090, 70091, 70092, 70096, 70099, 70105, 70106, 70118, 70119, 70122, 70126, 70131, 70132, 70133, 70138, 70160, 70165, 70167, 70168, 70169, 70170, 70176, 70179, 70193, 70194, 70202, 70205, 70213, 70230, 70236, 70237, 70240, 70246, 70253, 70262, 70274, 70275, 70276, 70279, 70284, 70285, 70286, 70287, 70290, 70291, 70293, 70295, 70297, 70298, 70309, 70312, 70313, 70316, 70317, 70320, 70321, 70322, 70324, 70328, 70333, 70334, 70337, 70338, 70339, 70340, 70350, 70351, 70352, 70354, 70358, 70360, 70362, 70363, 70370, 70371, 70372, 70373, 70377, 70381, 70383, 70389, 70395, 70396, 70397, 70398, 70399, 70401, 70404, 70407, 70408, 70411, 70415, 70418, 70419, 70420, 70421, 70427, 70428, 70433, 70434, 70436, 70437, 70445, 70461, 70463, 70464, 70465, 70468, 70469, 70471, 70473, 70480, 70482, 70498, 70499, 70509, 70512, 70517, 70520, 70521, 70529, 70530, 70543, 70544, 70551, 70552, 70557, 70566, 70588, 70605, 70606, 70607, 70608, 70609, 70616, 70643, 70666, 70673, 70677, 70683, 70708, 70709, 70739, 70741, 70744, 70746, 70762, 70775, 70790, 70794, 70798, 70800, 70801, 70804, 70805, 70810, 70811, 70812, 70823, 70868, 70873, 70893, 70908, 70954, 70955, 70956, 70963, 70968, 70971, 70972, 70973, 70984, 70986, 70998, 70999, 71006, 71007, 71008, 71010, 71012, 71025, 71028, 71030, 71037, 71052, 71053, 71055, 71064, 71065, 71066, 71068, 71069, 71076, 71077, 71079, 71083, 71084, 71087, 71089, 71092, 71093, 71094, 71100, 71101, 71102, 71103, 71105, 71108, 71113, 71114, 71121, 71125, 71131, 71149, 71151, 71152, 71153, 71155, 71156, 71157, 71158, 71161, 71172, 71177, 71179, 71188, 71202, 71205, 71235, 71244, 71245, 71247, 71249, 71252, 71253, 71254, 71255, 71256, 71257, 71258, 71259, 71267, 71272, 71279, 71281, 71282, 71283, 71285, 71288, 71290, 71292, 71293, 71298, 71310, 71312, 71317, 71318, 71319, 71320, 71321, 71322, 71326, 71327, 71328, 71329, 71330, 71340, 71344, 71346, 71349, 71352, 71353, 71355, 71357, 71358, 71360, 71361, 71362, 71363, 71367, 71369, 71379, 71383, 71384, 71386, 71387, 71391, 71393, 71397, 71403, 71404, 71405, 71408, 71409, 71426, 71436, 71442, 71445, 71451, 71474, 71475, 71476, 71477, 71478, 71479, 71480, 71482, 71483, 71492, 71515, 71516, 71517, 71518, 71519, 71530, 71589, 71597, 71656, 71658, 71698, 71699, 71715, 71718, 71742, 71746, 71749, 71763, 71770, 71771, 71772, 71773, 71774, 71833, 71834, 71835, 71836, 71838, 71839, 71840, 71841, 71842, 71843, 71847, 71851, 71852, 71853, 71854, 71858, 71859, 71861, 71862, 71865, 71924, 71931, 71966, 71968, 71972, 71979, 71983, 71987, 71995, 71996, 72014, 72023, 72024, 72025, 72029, 72032, 72033, 72034, 72048, 72057, 72129, 72130, 72131, 72132, 72139, 72144, 72145, 72150, 72151, 72152, 72153, 72157, 72158, 72159, 72161, 72173, 72174, 72175, 72177, 72180, 72191, 72192, 72218, 72219, 72220, 72221, 72224, 72248, 72254, 72257, 72261, 72282, 72298, 72302, 72311, 72312, 72313, 72315, 72317, 72318, 72338, 72339, 72340, 72341, 72342, 72343, 72344, 72346, 72349, 72350, 72351, 72352, 72353, 72354, 72355, 72356, 72357, 72365, 72366, 72367, 72394, 72411, 72412, 72421, 72427, 72428, 72429, 72430, 72432, 72433, 72434, 72440, 72451, 72453, 72455, 72456, 72481, 72483, 72484, 72485, 72486, 72487, 72488, 72489, 72490, 72492, 72493, 72496, 72501, 72534, 72535, 72538, 72545, 72546, 72548, 72549, 72553, 72559, 72560, 72561, 72568, 72570, 72572, 72579, 72581, 72584, 72593, 72614, 72619, 72620, 72728, 72744, 72758, 72770, 72784, 72787, 72794, 72796, 72799, 72801, 72803, 72810, 72828, 72875, 72892, 72893, 72894, 72895, 72896, 72897, 72898, 72929, 72939, 72941, 72942, 72944, 72945, 72954, 72956, 72958, 72981, 72988, 72989, 72992, 72993, 72994, 72995, 72996, 72997, 73000, 73003, 73008, 73010, 73012, 73016, 73017, 73029, 73061, 73081, 73091, 73098, 73103, 73120, 73122, 73133, 73135, 73151, 73152, 73153, 73155, 73169, 73170, 73171, 73172, 73173, 73174, 73190, 73195, 73213, 73250, 73266, 73267, 73271, 73293, 73307, 73328, 73338, 73342, 73343, 73347, 73348, 73349, 73353, 73361, 73362, 73385, 73386, 73401, 73403, 73414, 73434, 73452, 73462, 73481, 73483, 73484, 73497, 73498, 73499, 73500, 73502, 73508, 73509, 73511, 73530, 73547, 73554, 73558, 73561, 73562, 73563, 73564, 73570, 73584, 73586, 73587, 73588, 73590, 73592, 73600, 73602, 73606, 73613, 73614, 73615, 73618, 73648, 73649, 73650, 73651, 73656, 73657, 73659, 73660, 73666, 73667, 73668, 73670, 73674, 73703, 73704, 73709, 73710, 73711, 73712, 73713, 73714, 73715, 73716, 73718, 73723, 73724, 73725, 73726, 73727, 73728, 73731, 73733, 73739, 73740, 73741, 73745, 73760, 73775, 73811, 73812, 73817, 73850, 73855, 73858, 73859, 73860, 73871, 73874, 73887, 73889, 73893, 73898, 73900, 73902, 73903, 73904, 73908, 73909, 73910, 73913, 73914, 73927, 73929, 73939, 73941, 73942, 73948, 73949, 73951, 73958, 73959, 73962, 73963, 73964, 74091, 74099, 74158, 74217, 74218, 74219, 77440);
+INSERT INTO `creature_equip_template` (`CreatureID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES
+(2057, 1957, 1905, 0, 18019),
+(14824, 96181, 0, 0, 18019),
+(24470, 0, 0, 89875, 18019),
+(29059, 41823, 0, 0, 18019),
+(29806, 40892, 0, 0, 18019),
+(30388, 42782, 0, 0, 18019),
+(48204, 42424, 0, 0, 18019),
+(50332, 87844, 87844, 0, 18019),
+(50336, 88736, 88736, 0, 18019),
+(50340, 85150, 0, 0, 18019),
+(50341, 88773, 0, 0, 18019),
+(50347, 88787, 0, 0, 18019),
+(50351, 85735, 0, 0, 18019),
+(50352, 88545, 0, 0, 18019),
+(50359, 82465, 0, 0, 18019),
+(50363, 85399, 85399, 0, 18019),
+(50364, 88006, 88006, 0, 18019),
+(50388, 83020, 83020, 0, 18019),
+(50654, 42424, 0, 0, 18019),
+(50656, 42424, 0, 0, 18019),
+(50657, 42424, 0, 0, 18019),
+(50658, 42424, 0, 0, 18019),
+(50734, 79006, 79006, 0, 18019),
+(50739, 88798, 88798, 0, 18019),
+(50749, 87395, 87395, 0, 18019),
+(50766, 86208, 0, 0, 18019),
+(50768, 86615, 0, 0, 18019),
+(50772, 85680, 0, 0, 18019),
+(50776, 86093, 0, 0, 18019),
+(50780, 86090, 0, 0, 18019),
+(50782, 80285, 0, 0, 18019),
+(50787, 88543, 0, 0, 18019),
+(50789, 84772, 0, 0, 18019),
+(50791, 85739, 0, 0, 18019),
+(50808, 79716, 0, 0, 18019),
+(50811, 79720, 0, 0, 18019),
+(50816, 88603, 88603, 0, 18019),
+(50821, 88549, 0, 0, 18019),
+(51059, 84777, 84777, 0, 18019),
+(54610, 5278, 5278, 62249, 18019),
+(54614, 0, 0, 49761, 18019),
+(54615, 4994, 0, 0, 18019),
+(54617, 5285, 5285, 0, 18019),
+(54622, 1415, 0, 0, 18019),
+(54623, 25, 143, 0, 18019),
+(54703, 1906, 2081, 0, 18019),
+(54758, 57407, 0, 0, 18019),
+(54788, 12993, 18392, 0, 18019),
+(54869, 60765, 0, 0, 18019),
+(54870, 30848, 0, 0, 18019),
+(54885, 30848, 0, 0, 18019),
+(54898, 12993, 18392, 0, 18019),
+(54904, 0, 0, 49761, 18019),
+(54906, 10612, 0, 0, 18019),
+(54907, 14824, 0, 0, 18019),
+(54908, 5289, 0, 0, 18019),
+(54916, 57407, 0, 0, 18019),
+(54924, 6680, 0, 0, 18019),
+(54925, 1907, 0, 0, 18019),
+(54959, 34291, 0, 0, 18019),
+(54960, 86091, 0, 0, 18019),
+(55016, 57035, 0, 0, 18019),
+(55032, 3367, 0, 0, 18019),
+(55054, 30848, 0, 0, 18019),
+(55084, 61465, 0, 0, 18019),
+(55087, 30848, 0, 0, 18019),
+(55104, 60765, 0, 0, 18019),
+(55110, 1906, 12745, 0, 18019),
+(55126, 5289, 0, 0, 18019),
+(55137, 30848, 0, 0, 18019),
+(55140, 30848, 0, 0, 18019),
+(55141, 57021, 57021, 0, 18019),
+(55142, 57021, 57021, 0, 18019),
+(55143, 62484, 12742, 0, 18019),
+(55145, 5598, 0, 0, 18019),
+(55146, 31824, 2028, 0, 18019),
+(55147, 2717, 0, 0, 18019),
+(55148, 2716, 0, 0, 18019),
+(55162, 5289, 0, 0, 18019),
+(55169, 5289, 0, 0, 18019),
+(55170, 61354, 0, 0, 18019),
+(55171, 61354, 0, 0, 18019),
+(55172, 30848, 0, 0, 18019),
+(55180, 57021, 57021, 0, 18019),
+(55189, 2716, 0, 0, 18019),
+(55193, 49423, 0, 0, 18019),
+(55195, 60765, 0, 0, 18019),
+(55279, 82771, 0, 0, 18019),
+(55287, 5289, 0, 0, 18019),
+(55291, 86560, 0, 0, 18019),
+(55335, 56152, 56152, 0, 18019),
+(55344, 1901, 0, 0, 18019),
+(55411, 60765, 0, 2552, 18019),
+(55454, 60769, 0, 0, 18019),
+(55456, 16040, 4394, 0, 18019),
+(55458, 25, 143, 0, 18019),
+(55461, 29900, 79775, 0, 18019),
+(55470, 1901, 0, 0, 18019),
+(55473, 60765, 0, 2552, 18019),
+(55484, 60765, 0, 2552, 18019),
+(55485, 60765, 0, 2552, 18019),
+(55498, 5289, 0, 72280, 18019),
+(55505, 60765, 0, 2552, 18019),
+(55509, 60765, 0, 0, 18019),
+(55511, 60765, 0, 0, 18019),
+(55521, 31824, 2028, 0, 18019),
+(55522, 5289, 0, 0, 18019),
+(55523, 61354, 0, 0, 18019),
+(55554, 6225, 0, 0, 18019),
+(55555, 12801, 0, 0, 18019),
+(55557, 3350, 0, 0, 18019),
+(55576, 4994, 0, 0, 18019),
+(55577, 43014, 0, 0, 18019),
+(55578, 21555, 0, 0, 18019),
+(55579, 2179, 2711, 0, 18019),
+(55580, 2183, 0, 0, 18019),
+(55589, 1901, 0, 0, 18019),
+(55622, 3350, 0, 0, 18019),
+(55632, 1904, 0, 0, 18019),
+(55646, 57021, 57021, 0, 18019),
+(55647, 61354, 0, 61354, 18019),
+(55651, 3350, 0, 0, 18019),
+(55667, 57021, 57021, 0, 18019),
+(55669, 61354, 0, 0, 18019),
+(55670, 57021, 57021, 0, 18019),
+(55671, 5289, 0, 0, 18019),
+(55679, 61354, 0, 0, 18019),
+(55680, 57021, 57021, 0, 18019),
+(55687, 0, 0, 61354, 18019),
+(55688, 57021, 57021, 0, 18019),
+(55693, 21573, 21572, 0, 18019),
+(55701, 60765, 0, 0, 18019),
+(55702, 61354, 0, 0, 18019),
+(55707, 68834, 0, 0, 18019),
+(55709, 23225, 0, 5261, 18019),
+(55710, 23225, 0, 5261, 18019),
+(55711, 23225, 0, 5261, 18019),
+(55716, 65979, 0, 0, 18019),
+(55740, 5598, 0, 0, 18019),
+(55773, 57021, 57021, 0, 18019),
+(55778, 54825, 3364, 0, 18019),
+(55791, 23225, 0, 5261, 18019),
+(55793, 23225, 0, 5261, 18019),
+(55806, 61620, 0, 0, 18019),
+(55810, 74819, 0, 42776, 18019),
+(55827, 55915, 55915, 0, 18019),
+(55832, 4994, 0, 0, 18019),
+(55833, 4994, 0, 0, 18019),
+(55842, 3364, 54825, 0, 18019),
+(55844, 33467, 74871, 49158, 18019),
+(55847, 74819, 0, 42776, 18019),
+(55848, 2705, 0, 0, 18019),
+(55886, 54825, 3364, 0, 18019),
+(55887, 16890, 16890, 0, 18019),
+(55901, 13607, 0, 0, 18019),
+(55902, 86560, 0, 0, 18019),
+(55904, 10613, 10613, 0, 18019),
+(55905, 2558, 0, 0, 18019),
+(55906, 3346, 0, 0, 18019),
+(55996, 40894, 0, 0, 18019),
+(56009, 54539, 0, 0, 18019),
+(56015, 12993, 56166, 0, 18019),
+(56018, 0, 12943, 0, 18019),
+(56030, 5284, 5284, 0, 18019),
+(56064, 1415, 0, 0, 18019),
+(56085, 33467, 74871, 49158, 18019),
+(56112, 77359, 0, 0, 18019),
+(56113, 82383, 0, 0, 18019),
+(56114, 77359, 0, 0, 18019),
+(56117, 3364, 54825, 0, 18019),
+(56128, 3350, 0, 0, 18019),
+(56181, 80124, 0, 0, 18019),
+(56209, 77359, 0, 0, 18019),
+(56222, 34286, 0, 0, 18019),
+(56227, 0, 0, 49761, 18019),
+(56232, 34291, 0, 0, 18019),
+(56234, 1514, 0, 0, 18019),
+(56240, 60765, 0, 0, 18019),
+(56242, 3350, 0, 0, 18019),
+(56261, 13607, 0, 0, 18019),
+(56264, 60765, 0, 0, 18019),
+(56288, 6229, 0, 0, 18019),
+(56289, 36990, 0, 0, 18019),
+(56303, 2809, 21551, 80434, 18019),
+(56306, 29441, 0, 0, 18019),
+(56309, 49423, 0, 0, 18019),
+(56313, 3350, 0, 0, 18019),
+(56339, 30848, 0, 0, 18019),
+(56340, 61354, 0, 0, 18019),
+(56360, 41979, 0, 0, 18019),
+(56362, 54825, 2184, 0, 18019),
+(56364, 5285, 5285, 0, 18019),
+(56366, 34286, 0, 0, 18019),
+(56379, 34286, 0, 0, 18019),
+(56385, 25, 143, 0, 18019),
+(56398, 86091, 0, 0, 18019),
+(56399, 34285, 0, 0, 18019),
+(56406, 31824, 2028, 0, 18019),
+(56407, 30848, 0, 0, 18019),
+(56448, 64880, 0, 0, 18019),
+(56473, 4560, 4560, 0, 18019),
+(56474, 80580, 0, 0, 18019),
+(56477, 5289, 0, 0, 18019),
+(56478, 57021, 57021, 0, 18019),
+(56484, 0, 0, 76979, 18019),
+(56489, 77388, 0, 0, 18019),
+(56490, 30848, 0, 0, 18019),
+(56491, 84769, 0, 0, 18019),
+(56493, 84767, 0, 0, 18019),
+(56494, 84769, 0, 0, 18019),
+(56495, 84769, 0, 0, 18019),
+(56496, 84769, 0, 0, 18019),
+(56497, 77357, 0, 0, 18019),
+(56498, 77376, 0, 0, 18019),
+(56499, 77377, 0, 0, 18019),
+(56500, 77360, 0, 0, 18019),
+(56512, 31824, 2028, 0, 18019),
+(56582, 19808, 0, 0, 18019),
+(56585, 79831, 0, 0, 18019),
+(56589, 82849, 0, 0, 18019),
+(56591, 79832, 0, 0, 18019),
+(56592, 24034, 24034, 0, 18019),
+(56593, 30848, 0, 0, 18019),
+(56614, 80580, 0, 0, 18019),
+(56636, 85576, 0, 0, 18019),
+(56638, 0, 0, 61354, 18019),
+(56639, 5870, 0, 0, 18019),
+(56645, 5870, 0, 0, 18019),
+(56656, 5289, 0, 0, 18019),
+(56670, 43014, 0, 0, 18019),
+(56672, 37120, 77595, 0, 18019),
+(56673, 21573, 21572, 0, 18019),
+(56674, 21551, 21551, 0, 18019),
+(56678, 76467, 0, 0, 18019),
+(56693, 1721, 0, 0, 18019),
+(56701, 34291, 0, 0, 18019),
+(56705, 2028, 0, 0, 18019),
+(56720, 86619, 0, 0, 18019),
+(56721, 84767, 0, 0, 18019),
+(56722, 85401, 0, 0, 18019),
+(56725, 43014, 0, 0, 18019),
+(56726, 37120, 77595, 0, 18019),
+(56727, 21551, 21551, 0, 18019),
+(56728, 21573, 21572, 0, 18019),
+(56747, 77221, 0, 0, 18019),
+(56767, 0, 0, 86538, 18019),
+(56771, 88846, 0, 76980, 18019),
+(56773, 2029, 0, 0, 18019),
+(56774, 2717, 0, 0, 18019),
+(56775, 2717, 0, 0, 18019),
+(56776, 2717, 0, 0, 18019),
+(56777, 2200, 0, 0, 18019),
+(56778, 2717, 0, 0, 18019),
+(56838, 61354, 0, 0, 18019),
+(56841, 57021, 57021, 0, 18019),
+(56862, 37924, 0, 0, 18019),
+(56866, 82383, 0, 0, 18019),
+(56868, 5289, 0, 0, 18019),
+(56875, 85576, 0, 0, 18019),
+(56876, 84767, 0, 0, 18019),
+(56890, 84769, 0, 0, 18019),
+(57108, 30848, 0, 0, 18019),
+(57119, 30440, 0, 0, 18019),
+(57120, 45123, 0, 0, 18019),
+(57121, 3367, 0, 0, 18019),
+(57122, 82352, 0, 0, 18019),
+(57132, 3362, 0, 0, 18019),
+(57134, 84769, 84769, 0, 18019),
+(57155, 45123, 0, 0, 18019),
+(57177, 4994, 0, 0, 18019),
+(57195, 85576, 0, 0, 18019),
+(57196, 85399, 0, 0, 18019),
+(57198, 77370, 1985, 0, 18019),
+(57202, 57407, 0, 0, 18019),
+(57204, 82383, 0, 0, 18019),
+(57213, 3346, 0, 0, 18019),
+(57242, 86613, 0, 0, 18019),
+(57316, 77357, 0, 0, 18019),
+(57317, 54825, 2184, 0, 18019),
+(57318, 57029, 0, 52692, 18019),
+(57319, 35942, 0, 0, 18019),
+(57324, 79719, 0, 0, 18019),
+(57325, 55193, 55194, 0, 18019),
+(57326, 75225, 0, 0, 18019),
+(57385, 3362, 0, 0, 18019),
+(57400, 75225, 0, 0, 18019),
+(57444, 0, 0, 34270, 18019),
+(57466, 1906, 0, 0, 18019),
+(57617, 5956, 0, 0, 18019),
+(57618, 5956, 0, 0, 18019),
+(57620, 1902, 0, 0, 18019),
+(57622, 5956, 0, 0, 18019),
+(57623, 5956, 0, 0, 18019),
+(57648, 19102, 0, 0, 18019),
+(57713, 82383, 0, 0, 18019),
+(57756, 23708, 12860, 0, 18019),
+(58030, 2813, 0, 0, 18019),
+(58032, 42755, 0, 0, 18019),
+(58033, 5289, 0, 0, 18019),
+(58068, 1726, 1726, 1726, 18019),
+(58108, 84769, 0, 0, 18019),
+(58117, 82771, 0, 0, 18019),
+(58146, 38296, 0, 0, 18019),
+(58158, 0, 0, 15460, 18019),
+(58162, 17040, 0, 0, 18019),
+(58165, 82771, 0, 0, 18019),
+(58181, 5288, 0, 49462, 18019),
+(58186, 75225, 0, 0, 18019),
+(58202, 77357, 0, 0, 18019),
+(58205, 75222, 0, 0, 18019),
+(58206, 77359, 0, 0, 18019),
+(58255, 5288, 0, 49462, 18019),
+(58256, 49770, 0, 0, 18019),
+(58257, 11864, 0, 0, 18019),
+(58273, 8196, 0, 0, 18019),
+(58274, 30753, 0, 55303, 18019),
+(58276, 5747, 0, 0, 18019),
+(58277, 55939, 0, 0, 18019),
+(58278, 55939, 0, 0, 18019),
+(58281, 5747, 0, 0, 18019),
+(58285, 39221, 0, 0, 18019),
+(58288, 84769, 0, 0, 18019),
+(58342, 3362, 13604, 0, 18019),
+(58361, 0, 0, 83751, 18019),
+(58367, 85400, 0, 0, 18019),
+(58368, 84769, 0, 0, 18019),
+(58377, 88833, 0, 0, 18019),
+(58408, 80125, 0, 0, 18019),
+(58412, 82348, 0, 0, 18019),
+(58421, 5278, 0, 15460, 18019),
+(58422, 0, 0, 2552, 18019),
+(58446, 0, 0, 2552, 18019),
+(58447, 5278, 0, 15460, 18019),
+(58460, 89543, 0, 0, 18019),
+(58461, 0, 0, 2552, 18019),
+(58462, 5278, 0, 15460, 18019),
+(58464, 14535, 0, 0, 18019),
+(58465, 43579, 0, 0, 18019),
+(58466, 82272, 0, 0, 18019),
+(58467, 77388, 0, 52692, 18019),
+(58468, 58804, 0, 0, 18019),
+(58469, 67161, 0, 0, 18019),
+(58470, 83071, 83071, 0, 18019),
+(58471, 80273, 89102, 0, 18019),
+(58501, 67161, 0, 0, 18019),
+(58502, 83071, 83071, 0, 18019),
+(58503, 43579, 0, 0, 18019),
+(58504, 80273, 89102, 0, 18019),
+(58505, 80273, 83122, 76979, 18019),
+(58543, 7826, 0, 0, 18019),
+(58544, 5289, 0, 0, 18019),
+(58546, 79340, 0, 0, 18019),
+(58569, 50181, 0, 0, 18019),
+(58580, 77359, 0, 0, 18019),
+(58590, 25759, 62235, 0, 18019),
+(58605, 80589, 80589, 0, 18019),
+(58607, 32450, 73425, 0, 18019),
+(58608, 1910, 0, 0, 18019),
+(58609, 7005, 0, 0, 18019),
+(58610, 82348, 0, 0, 18019),
+(58612, 1899, 1984, 2551, 18019),
+(58614, 55445, 0, 0, 18019),
+(58632, 7612, 0, 0, 18019),
+(58634, 1910, 0, 0, 18019),
+(58639, 1910, 0, 0, 18019),
+(58666, 32450, 73425, 0, 18019),
+(58668, 77359, 0, 0, 18019),
+(58671, 35235, 0, 0, 18019),
+(58676, 80069, 49732, 0, 18019),
+(58683, 80246, 13718, 0, 18019),
+(58684, 19354, 0, 0, 18019),
+(58685, 43619, 0, 0, 18019),
+(58695, 3362, 0, 0, 18019),
+(58721, 85777, 0, 0, 18019),
+(58722, 49340, 49340, 0, 18019),
+(58723, 85777, 0, 0, 18019),
+(58736, 1117, 0, 0, 18019),
+(58737, 72300, 2081, 0, 18019),
+(58738, 60640, 60640, 36755, 18019),
+(58739, 73894, 0, 0, 18019),
+(58740, 79718, 0, 76979, 18019),
+(58756, 60965, 0, 0, 18019),
+(58757, 80290, 0, 0, 18019),
+(58765, 4994, 2081, 50127, 18019),
+(58777, 62032, 0, 0, 18019),
+(58779, 0, 0, 15460, 18019),
+(58783, 5291, 0, 0, 18019),
+(58784, 5599, 0, 73039, 18019),
+(58785, 80580, 0, 0, 18019),
+(58790, 5599, 0, 0, 18019),
+(58791, 49340, 49340, 0, 18019),
+(58803, 77357, 0, 0, 18019),
+(58807, 77388, 0, 0, 18019),
+(58810, 77384, 77441, 0, 18019),
+(58814, 77359, 0, 0, 18019),
+(58817, 35235, 0, 0, 18019),
+(58822, 79319, 0, 0, 18019),
+(58823, 80292, 0, 0, 18019),
+(58824, 0, 0, 74588, 18019),
+(58826, 0, 0, 76981, 18019),
+(58830, 5598, 0, 0, 18019),
+(58832, 5599, 0, 0, 18019),
+(58840, 80132, 0, 0, 18019),
+(58843, 2196, 0, 0, 18019),
+(58844, 0, 0, 74588, 18019),
+(58850, 2182, 42543, 0, 18019),
+(58857, 5598, 0, 0, 18019),
+(58858, 5278, 0, 5260, 18019),
+(58870, 46957, 0, 0, 18019),
+(58872, 5598, 0, 0, 18019),
+(58873, 5598, 0, 0, 18019),
+(58875, 79321, 0, 0, 18019),
+(58877, 12290, 0, 2550, 18019),
+(58878, 13625, 13625, 2550, 18019),
+(58897, 1726, 1726, 1726, 18019),
+(58899, 89156, 0, 81391, 18019),
+(58900, 79322, 0, 5260, 18019),
+(58901, 79274, 0, 0, 18019),
+(58902, 79274, 0, 0, 18019),
+(58903, 79274, 0, 0, 18019),
+(58904, 79274, 0, 0, 18019),
+(58905, 79274, 0, 0, 18019),
+(58911, 82272, 0, 0, 18019),
+(58912, 1899, 1984, 2551, 18019),
+(58913, 33180, 0, 2551, 18019),
+(58914, 33180, 0, 2551, 18019),
+(58919, 43579, 0, 0, 18019),
+(58920, 80273, 89102, 0, 18019),
+(58927, 86395, 86395, 0, 18019),
+(58928, 65799, 0, 0, 18019),
+(58929, 1899, 79347, 2551, 18019),
+(58931, 1897, 11763, 0, 18019),
+(58932, 79340, 0, 0, 18019),
+(58934, 1897, 0, 6886, 18019),
+(58936, 80130, 79347, 2551, 18019),
+(58937, 45053, 0, 0, 18019),
+(58939, 11588, 0, 6230, 18019),
+(58943, 60765, 0, 0, 18019),
+(58945, 60765, 0, 0, 18019),
+(58948, 49935, 79712, 6230, 18019),
+(58949, 80939, 0, 0, 18019),
+(58956, 79718, 0, 0, 18019),
+(58958, 57029, 0, 0, 18019),
+(58963, 28133, 28133, 0, 18019),
+(58969, 79340, 0, 0, 18019),
+(58975, 12751, 12742, 0, 18019),
+(58981, 1897, 11763, 0, 18019),
+(58983, 1897, 11763, 0, 18019),
+(58984, 5278, 0, 5260, 18019),
+(58985, 5278, 0, 5260, 18019),
+(58986, 1897, 11763, 0, 18019),
+(58987, 1897, 11763, 0, 18019),
+(58989, 79718, 0, 76308, 18019),
+(58998, 80067, 76316, 0, 18019),
+(59003, 79340, 0, 0, 18019),
+(59007, 2558, 0, 0, 18019),
+(59021, 33465, 0, 0, 18019),
+(59025, 31824, 2028, 0, 18019),
+(59036, 77384, 0, 0, 18019),
+(59038, 79340, 0, 0, 18019),
+(59054, 79718, 0, 0, 18019),
+(59057, 79718, 0, 0, 18019),
+(59060, 31609, 0, 0, 18019),
+(59067, 34286, 0, 0, 18019),
+(59068, 5285, 5285, 0, 18019),
+(59069, 74819, 0, 0, 18019),
+(59070, 0, 0, 49761, 18019),
+(59073, 77359, 0, 0, 18019),
+(59076, 0, 0, 25248, 18019),
+(59077, 79716, 0, 0, 18019),
+(59080, 79321, 0, 0, 18019),
+(59083, 43623, 0, 0, 18019),
+(59086, 3774, 2081, 2551, 18019),
+(59087, 80132, 0, 2551, 18019),
+(59088, 80130, 80131, 2551, 18019),
+(59089, 61620, 0, 2551, 18019),
+(59098, 5278, 0, 5260, 18019),
+(59119, 1904, 0, 0, 18019),
+(59121, 12937, 0, 0, 18019),
+(59122, 19214, 0, 0, 18019),
+(59123, 10617, 0, 0, 18019),
+(59126, 77369, 0, 0, 18019),
+(59127, 77369, 0, 0, 18019),
+(59128, 77369, 0, 0, 18019),
+(59129, 77369, 0, 0, 18019),
+(59130, 77369, 0, 0, 18019),
+(59131, 79719, 0, 0, 18019),
+(59132, 79719, 0, 0, 18019),
+(59133, 79719, 0, 0, 18019),
+(59134, 79719, 0, 0, 18019),
+(59135, 79719, 0, 0, 18019),
+(59137, 5599, 0, 0, 18019),
+(59143, 79718, 0, 0, 18019),
+(59146, 14535, 0, 34269, 18019),
+(59148, 33465, 0, 0, 18019),
+(59150, 71039, 0, 0, 18019),
+(59159, 79832, 0, 0, 18019),
+(59162, 79718, 0, 0, 18019),
+(59165, 28965, 0, 0, 18019),
+(59166, 76369, 0, 0, 18019),
+(59173, 79719, 0, 0, 18019),
+(59175, 56696, 0, 55306, 18019),
+(59180, 73210, 0, 0, 18019),
+(59181, 79830, 0, 0, 18019),
+(59184, 13069, 0, 0, 18019),
+(59191, 27512, 0, 55306, 18019),
+(59200, 49340, 49340, 0, 18019),
+(59217, 13069, 0, 0, 18019),
+(59220, 13069, 0, 0, 18019),
+(59233, 79340, 0, 0, 18019),
+(59240, 34298, 0, 23052, 18019),
+(59241, 1903, 0, 0, 18019),
+(59263, 79719, 0, 0, 18019),
+(59273, 77389, 0, 0, 18019),
+(59281, 30418, 0, 0, 18019),
+(59299, 9379, 32375, 0, 18019),
+(59302, 9379, 32375, 0, 18019),
+(59303, 39140, 39140, 0, 18019),
+(59305, 31824, 2028, 0, 18019),
+(59310, 5300, 0, 0, 18019),
+(59317, 1896, 0, 2551, 18019),
+(59332, 80125, 0, 0, 18019),
+(59333, 82272, 0, 0, 18019),
+(59334, 58804, 0, 0, 18019),
+(59335, 81358, 0, 42921, 18019),
+(59337, 58804, 0, 0, 18019),
+(59338, 77388, 0, 52692, 18019),
+(59340, 80125, 0, 0, 18019),
+(59342, 83071, 83071, 0, 18019),
+(59343, 67161, 0, 0, 18019),
+(59350, 60765, 0, 0, 18019),
+(59353, 82352, 0, 0, 18019),
+(59361, 43014, 0, 0, 18019),
+(59362, 21551, 21551, 0, 18019),
+(59363, 37120, 77595, 0, 18019),
+(59364, 21573, 21572, 0, 18019),
+(59368, 75039, 75039, 0, 18019),
+(59369, 2827, 2827, 0, 18019),
+(59372, 43619, 0, 0, 18019),
+(59373, 2813, 0, 0, 18019),
+(59379, 82349, 82349, 0, 18019),
+(59382, 81358, 0, 42921, 18019),
+(59385, 12802, 0, 2504, 18019),
+(59387, 1903, 0, 0, 18019),
+(59403, 5956, 0, 0, 18019),
+(59410, 60957, 0, 0, 18019),
+(59412, 3433, 0, 5870, 18019),
+(59414, 60765, 0, 0, 18019),
+(59416, 5282, 0, 0, 18019),
+(59424, 49423, 0, 0, 18019),
+(59425, 12786, 0, 0, 18019),
+(59430, 1901, 0, 0, 18019),
+(59435, 49423, 0, 0, 18019),
+(59436, 60765, 0, 0, 18019),
+(59442, 30848, 0, 0, 18019),
+(59443, 60765, 0, 0, 18019),
+(59463, 36990, 0, 0, 18019),
+(59467, 13069, 0, 0, 18019),
+(59471, 2827, 0, 0, 18019),
+(59483, 44169, 0, 0, 18019),
+(59486, 46837, 0, 0, 18019),
+(59526, 30418, 0, 0, 18019),
+(59527, 30418, 0, 0, 18019),
+(59529, 3362, 0, 0, 18019),
+(59532, 0, 0, 59623, 18019),
+(59538, 81358, 0, 0, 18019),
+(59554, 60765, 0, 0, 18019),
+(59556, 10613, 0, 0, 18019),
+(59560, 60765, 0, 0, 18019),
+(59561, 47013, 0, 0, 18019),
+(59562, 60765, 0, 0, 18019),
+(59564, 21551, 21551, 0, 18019),
+(59565, 21573, 0, 0, 18019),
+(59572, 21551, 21551, 0, 18019),
+(59573, 3367, 0, 0, 18019),
+(59575, 55456, 15890, 0, 18019),
+(59577, 82351, 0, 0, 18019),
+(59578, 10614, 0, 0, 18019),
+(59580, 36492, 0, 0, 18019),
+(59584, 84660, 0, 0, 18019),
+(59586, 84660, 0, 84660, 18019),
+(59592, 3198, 0, 0, 18019),
+(59593, 55408, 0, 0, 18019),
+(59595, 12591, 0, 0, 18019),
+(59596, 13751, 0, 0, 18019),
+(59597, 6182, 0, 0, 18019),
+(59614, 28678, 0, 0, 18019),
+(59619, 0, 0, 49761, 18019),
+(59632, 76495, 0, 0, 18019),
+(59636, 3351, 0, 0, 18019),
+(59645, 17041, 0, 0, 18019),
+(59647, 82351, 0, 0, 18019),
+(59654, 86540, 9607, 0, 18019),
+(59656, 30182, 0, 0, 18019),
+(59678, 36492, 0, 0, 18019),
+(59682, 73051, 0, 0, 18019),
+(59690, 3346, 0, 0, 18019),
+(59697, 6182, 0, 0, 18019),
+(59705, 0, 0, 80271, 18019),
+(59714, 1897, 11763, 0, 18019),
+(59715, 30753, 0, 0, 18019),
+(59718, 81358, 0, 42921, 18019),
+(59728, 84660, 0, 0, 18019),
+(59746, 62531, 0, 0, 18019),
+(59749, 30418, 0, 0, 18019),
+(59752, 72822, 72822, 0, 18019),
+(59758, 82348, 0, 0, 18019),
+(59778, 82849, 0, 0, 18019),
+(59779, 80283, 80283, 0, 18019),
+(59789, 58470, 0, 0, 18019),
+(59790, 81358, 0, 0, 18019),
+(59797, 72481, 0, 0, 18019),
+(59800, 85401, 0, 0, 18019),
+(59801, 85947, 0, 0, 18019),
+(59802, 60957, 0, 0, 18019),
+(59803, 2023, 0, 0, 18019),
+(59805, 2176, 0, 0, 18019),
+(59820, 2081, 0, 74588, 18019),
+(59821, 0, 13609, 0, 18019),
+(59826, 12421, 0, 0, 18019),
+(59827, 1903, 0, 0, 18019),
+(59829, 80123, 0, 0, 18019),
+(59830, 80266, 80269, 0, 18019),
+(59831, 0, 72515, 0, 18019),
+(59832, 85401, 0, 0, 18019),
+(59835, 85399, 0, 0, 18019),
+(59842, 77359, 0, 0, 18019),
+(59843, 82383, 0, 0, 18019),
+(59845, 80269, 0, 76981, 18019),
+(59848, 79340, 0, 0, 18019),
+(59849, 5599, 0, 73038, 18019),
+(59850, 5599, 0, 0, 18019),
+(59851, 32450, 73425, 0, 18019),
+(59853, 5288, 0, 49462, 18019),
+(59858, 30418, 0, 0, 18019),
+(59859, 30418, 0, 0, 18019),
+(59888, 80304, 0, 0, 18019),
+(59914, 86539, 0, 0, 18019),
+(59921, 34681, 0, 0, 18019),
+(59922, 79716, 0, 76308, 18019),
+(59923, 79719, 0, 76308, 18019),
+(59924, 61297, 61297, 0, 18019),
+(59952, 79718, 0, 76308, 18019),
+(59958, 11383, 0, 0, 18019),
+(59968, 77384, 77384, 0, 18019),
+(59969, 43598, 0, 0, 18019),
+(59972, 76497, 0, 0, 18019),
+(59998, 85739, 0, 5261, 18019),
+(60000, 86470, 0, 5261, 18019),
+(60002, 83071, 83071, 0, 18019),
+(60016, 82767, 82767, 0, 18019),
+(60018, 82773, 82773, 0, 18019),
+(60019, 82770, 0, 0, 18019),
+(60020, 82771, 0, 0, 18019),
+(60030, 80522, 0, 0, 18019),
+(60031, 41364, 0, 0, 18019),
+(60032, 39312, 0, 0, 18019),
+(60035, 60836, 0, 0, 18019),
+(60040, 80537, 0, 0, 18019),
+(60057, 1905, 1905, 0, 18019),
+(60121, 60836, 0, 0, 18019),
+(60122, 60836, 0, 0, 18019),
+(60127, 59141, 0, 0, 18019),
+(60135, 88535, 0, 0, 18019),
+(60136, 45992, 0, 0, 18019),
+(60138, 1905, 1905, 0, 18019),
+(60141, 80123, 0, 0, 18019),
+(60142, 80123, 0, 0, 18019),
+(60149, 30848, 0, 0, 18019),
+(60152, 12801, 0, 0, 18019),
+(60161, 79006, 0, 0, 18019),
+(60163, 79723, 0, 0, 18019),
+(60168, 30182, 0, 0, 18019),
+(60169, 55169, 55170, 0, 18019),
+(60170, 55169, 55170, 0, 18019),
+(60173, 1117, 0, 0, 18019),
+(60175, 49423, 0, 0, 18019),
+(60180, 49423, 0, 0, 18019),
+(60182, 1117, 0, 0, 18019),
+(60190, 1908, 0, 0, 18019),
+(60195, 60765, 0, 0, 18019),
+(60214, 7826, 0, 0, 18019),
+(60221, 14535, 0, 34269, 18019),
+(60222, 14535, 0, 0, 18019),
+(60224, 23481, 0, 0, 18019),
+(60225, 60836, 0, 0, 18019),
+(60226, 1910, 0, 0, 18019),
+(60227, 1910, 0, 0, 18019),
+(60228, 1910, 0, 0, 18019),
+(60235, 1908, 0, 0, 18019),
+(60272, 75225, 0, 0, 18019),
+(60273, 34681, 0, 0, 18019),
+(60284, 75225, 0, 0, 18019),
+(60289, 1117, 0, 0, 18019),
+(60290, 1117, 0, 0, 18019),
+(60293, 1117, 0, 0, 18019),
+(60299, 2023, 54878, 0, 18019),
+(60302, 79721, 0, 0, 18019),
+(60354, 80906, 0, 0, 18019),
+(60357, 3346, 0, 0, 18019),
+(60358, 1904, 0, 0, 18019),
+(60359, 34681, 0, 0, 18019),
+(60365, 0, 0, 72606, 18019),
+(60368, 5278, 0, 5260, 18019),
+(60381, 80840, 80839, 0, 18019),
+(60386, 80841, 80842, 0, 18019),
+(60396, 81169, 81169, 0, 18019),
+(60397, 81170, 0, 0, 18019),
+(60398, 81171, 81172, 0, 18019),
+(60399, 80939, 0, 0, 18019),
+(60400, 80289, 0, 0, 18019),
+(60404, 14535, 0, 0, 18019),
+(60405, 14535, 0, 0, 18019),
+(60407, 80287, 0, 0, 18019),
+(60422, 1117, 0, 0, 18019),
+(60427, 80123, 0, 0, 18019),
+(60428, 80285, 80285, 0, 18019),
+(60429, 41358, 0, 0, 18019),
+(60431, 49457, 0, 0, 18019),
+(60434, 3783, 0, 44245, 18019),
+(60441, 6227, 0, 0, 18019),
+(60447, 84767, 0, 0, 18019),
+(60452, 1117, 0, 0, 18019),
+(60458, 2717, 0, 0, 18019),
+(60459, 33171, 0, 0, 18019),
+(60475, 2717, 0, 0, 18019),
+(60479, 49457, 0, 0, 18019),
+(60495, 76492, 0, 0, 18019),
+(60499, 73072, 0, 0, 18019),
+(60500, 61368, 0, 0, 18019),
+(60507, 28738, 0, 0, 18019),
+(60509, 54877, 54878, 0, 18019),
+(60510, 80272, 0, 0, 18019),
+(60515, 80287, 0, 0, 18019),
+(60516, 80280, 0, 0, 18019),
+(60520, 73051, 0, 0, 18019),
+(60524, 94849, 0, 0, 18019),
+(60536, 13631, 0, 0, 18019),
+(60554, 88553, 0, 0, 18019),
+(60560, 69844, 69844, 0, 18019),
+(60569, 82347, 0, 0, 18019),
+(60572, 94119, 0, 0, 18019),
+(60578, 79719, 0, 0, 18019),
+(60580, 42934, 0, 0, 18019),
+(60582, 82348, 0, 0, 18019),
+(60583, 81390, 0, 0, 18019),
+(60585, 81389, 81389, 0, 18019),
+(60586, 79832, 0, 0, 18019),
+(60591, 1905, 1905, 0, 18019),
+(60601, 79723, 0, 0, 18019),
+(60602, 79003, 79004, 0, 18019),
+(60603, 80123, 0, 0, 18019),
+(60604, 7826, 0, 0, 18019),
+(60625, 33171, 0, 0, 18019),
+(60626, 49457, 0, 0, 18019),
+(60628, 2717, 0, 0, 18019),
+(60647, 41358, 0, 0, 18019),
+(60673, 84660, 0, 0, 18019),
+(60674, 1117, 0, 0, 18019),
+(60675, 84660, 0, 0, 18019),
+(60676, 3433, 0, 5870, 18019),
+(60683, 89119, 0, 0, 18019),
+(60689, 80123, 0, 0, 18019),
+(60690, 80123, 0, 89708, 18019),
+(60692, 43581, 39384, 0, 18019),
+(60693, 84660, 0, 0, 18019),
+(60697, 79723, 0, 0, 18019),
+(60699, 3433, 0, 5870, 18019),
+(60701, 76369, 0, 0, 18019),
+(60706, 60957, 0, 5870, 18019),
+(60709, 86777, 0, 0, 18019),
+(60710, 80283, 80283, 60790, 18019),
+(60713, 56566, 39384, 0, 18019),
+(60724, 79719, 0, 0, 18019),
+(60725, 80522, 0, 0, 18019),
+(60726, 43581, 39384, 0, 18019),
+(60728, 54553, 0, 0, 18019),
+(60742, 2023, 0, 0, 18019),
+(60743, 60957, 0, 0, 18019),
+(60744, 60765, 0, 0, 18019),
+(60745, 5282, 0, 0, 18019),
+(60746, 3433, 0, 5870, 18019),
+(60749, 60957, 0, 0, 18019),
+(60752, 49423, 0, 0, 18019),
+(60753, 60765, 0, 0, 18019),
+(60756, 34640, 34640, 0, 18019),
+(60766, 1905, 1905, 0, 18019),
+(60767, 1897, 0, 13040, 18019),
+(60769, 1905, 1905, 0, 18019),
+(60770, 1907, 0, 0, 18019),
+(60774, 77384, 0, 0, 18019),
+(60779, 1389, 0, 0, 18019),
+(60786, 1905, 1905, 0, 18019),
+(60801, 76289, 76289, 0, 18019),
+(60802, 81245, 67458, 0, 18019),
+(60826, 82348, 81171, 0, 18019),
+(60832, 2147, 0, 12523, 18019),
+(60834, 1907, 0, 0, 18019),
+(60846, 753, 9843, 0, 18019),
+(60847, 68838, 32375, 0, 18019),
+(60851, 54825, 54825, 0, 18019),
+(60852, 5600, 11505, 0, 18019),
+(60853, 88682, 11586, 0, 18019),
+(60854, 88553, 0, 0, 18019),
+(60856, 2147, 0, 12523, 18019),
+(60877, 1907, 0, 0, 18019),
+(60878, 1907, 0, 0, 18019),
+(60879, 2023, 0, 0, 18019),
+(60890, 54825, 2184, 0, 18019),
+(60891, 88553, 0, 0, 18019),
+(60895, 1907, 0, 0, 18019),
+(60896, 1907, 0, 0, 18019),
+(60912, 82349, 82349, 0, 18019),
+(60924, 80123, 0, 0, 18019),
+(60925, 43581, 39384, 0, 18019),
+(60927, 2147, 0, 12523, 18019),
+(60928, 79719, 0, 0, 18019),
+(60929, 80522, 0, 0, 18019),
+(60936, 54877, 54878, 0, 18019),
+(60944, 54877, 54878, 0, 18019),
+(60945, 54877, 54878, 0, 18019),
+(60969, 89130, 83121, 76980, 18019),
+(60971, 34291, 0, 5261, 18019),
+(60978, 77359, 0, 0, 18019),
+(60980, 82383, 0, 0, 18019),
+(60995, 80284, 77582, 0, 18019),
+(60996, 4090, 0, 0, 18019),
+(61004, 29440, 0, 0, 18019),
+(61006, 34819, 0, 0, 18019),
+(61007, 15241, 15241, 0, 18019),
+(61008, 29996, 0, 0, 18019),
+(61010, 14524, 0, 0, 18019),
+(61013, 2884, 0, 0, 18019),
+(61016, 79718, 0, 0, 18019),
+(61017, 80123, 0, 0, 18019),
+(61018, 80283, 0, 76982, 18019),
+(61019, 77357, 0, 0, 18019),
+(61020, 2023, 0, 76980, 18019),
+(61021, 80266, 80266, 0, 18019),
+(61025, 43581, 56173, 0, 18019),
+(61038, 0, 0, 72283, 18019),
+(61042, 0, 0, 72283, 18019),
+(61046, 0, 0, 72283, 18019),
+(61050, 80123, 0, 0, 18019),
+(61060, 79721, 0, 0, 18019),
+(61065, 86091, 0, 0, 18019),
+(61066, 14879, 0, 0, 18019),
+(61067, 80287, 0, 0, 18019),
+(61082, 80123, 0, 0, 18019),
+(61083, 80283, 77414, 0, 18019),
+(61094, 79721, 0, 0, 18019),
+(61095, 79721, 0, 0, 18019),
+(61097, 49423, 0, 0, 18019),
+(61116, 7826, 0, 0, 18019),
+(61130, 29787, 0, 0, 18019),
+(61131, 77405, 0, 0, 18019),
+(61148, 41365, 0, 0, 18019),
+(61149, 41365, 0, 0, 18019),
+(61154, 82348, 81171, 0, 18019),
+(61155, 29748, 0, 0, 18019),
+(61173, 80123, 0, 0, 18019),
+(61175, 80266, 80266, 0, 18019),
+(61202, 1907, 0, 0, 18019),
+(61203, 79717, 0, 0, 18019),
+(61210, 80123, 0, 0, 18019),
+(61216, 81711, 0, 0, 18019),
+(61222, 2147, 0, 12523, 18019),
+(61239, 69858, 0, 0, 18019),
+(61240, 77075, 77075, 0, 18019),
+(61242, 75252, 77402, 0, 18019),
+(61243, 72484, 0, 0, 18019),
+(61250, 80522, 0, 0, 18019),
+(61252, 80288, 0, 0, 18019),
+(61292, 28426, 28754, 0, 18019),
+(61300, 28426, 28754, 0, 18019),
+(61301, 28426, 28754, 0, 18019),
+(61303, 88723, 0, 0, 18019),
+(61304, 68838, 32375, 0, 18019),
+(61305, 80522, 0, 0, 18019),
+(61309, 3350, 0, 0, 18019),
+(61310, 22215, 0, 0, 18019),
+(61311, 80273, 81555, 0, 18019),
+(61334, 82347, 0, 0, 18019),
+(61337, 75252, 77402, 0, 18019),
+(61338, 77075, 77075, 0, 18019),
+(61339, 69858, 0, 0, 18019),
+(61340, 81711, 0, 0, 18019),
+(61341, 80132, 0, 0, 18019),
+(61343, 3362, 0, 0, 18019),
+(61344, 68838, 32375, 0, 18019),
+(61345, 0, 0, 69207, 18019),
+(61346, 12862, 0, 0, 18019),
+(61347, 81170, 0, 0, 18019),
+(61354, 85576, 0, 0, 18019),
+(61355, 82849, 82849, 0, 18019),
+(61365, 85401, 0, 0, 18019),
+(61376, 85399, 84767, 0, 18019),
+(61377, 84769, 0, 0, 18019),
+(61378, 80283, 0, 76982, 18019),
+(61381, 1907, 0, 0, 18019),
+(61389, 82785, 77401, 0, 18019),
+(61390, 0, 0, 30227, 18019),
+(61392, 76364, 0, 0, 18019),
+(61395, 80283, 0, 76982, 18019),
+(61396, 80283, 80283, 76982, 18019),
+(61397, 80283, 0, 76982, 18019),
+(61398, 67153, 0, 0, 18019),
+(61399, 1906, 0, 0, 18019),
+(61404, 73894, 0, 0, 18019),
+(61412, 75242, 72479, 0, 18019),
+(61417, 1907, 0, 0, 18019),
+(61418, 82347, 0, 0, 18019),
+(61421, 76369, 0, 0, 18019),
+(61423, 81396, 0, 0, 18019),
+(61427, 80283, 80283, 60790, 18019),
+(61431, 1906, 0, 0, 18019),
+(61433, 76364, 0, 0, 18019),
+(61434, 85576, 0, 0, 18019),
+(61436, 85399, 85399, 0, 18019),
+(61442, 82349, 82349, 0, 18019),
+(61444, 82788, 0, 0, 18019),
+(61445, 82789, 0, 0, 18019),
+(61448, 84767, 0, 0, 18019),
+(61451, 80124, 0, 0, 18019),
+(61454, 80285, 74050, 0, 18019),
+(61461, 2202, 0, 0, 18019),
+(61467, 80283, 77414, 0, 18019),
+(61468, 80266, 80266, 0, 18019),
+(61469, 80266, 80266, 0, 18019),
+(61470, 80280, 0, 0, 18019),
+(61471, 25, 0, 39688, 18019),
+(61479, 5278, 5278, 62249, 18019),
+(61480, 5285, 5285, 0, 18019),
+(61485, 85401, 0, 0, 18019),
+(61488, 15241, 15241, 0, 18019),
+(61495, 0, 82058, 0, 18019),
+(61496, 45123, 0, 0, 18019),
+(61501, 5285, 5285, 49761, 18019),
+(61514, 85399, 85399, 0, 18019),
+(61517, 85947, 0, 0, 18019),
+(61518, 85400, 0, 0, 18019),
+(61520, 5956, 0, 0, 18019),
+(61521, 5278, 5278, 62249, 18019),
+(61524, 80283, 0, 76982, 18019),
+(61525, 80283, 0, 76982, 18019),
+(61526, 80283, 80283, 76982, 18019),
+(61527, 80283, 0, 76982, 18019),
+(61534, 81358, 0, 0, 18019),
+(61537, 28965, 0, 0, 18019),
+(61540, 0, 0, 81547, 18019),
+(61553, 79721, 0, 0, 18019),
+(61557, 60765, 0, 0, 18019),
+(61562, 60765, 0, 0, 18019),
+(61563, 80266, 80266, 0, 18019),
+(61564, 45123, 0, 0, 18019),
+(61570, 80273, 81555, 0, 18019),
+(61571, 0, 80522, 0, 18019),
+(61580, 80272, 81555, 0, 18019),
+(61581, 80272, 81555, 0, 18019),
+(61583, 79722, 0, 0, 18019),
+(61584, 0, 77409, 0, 18019),
+(61585, 1906, 2081, 0, 18019),
+(61600, 3350, 0, 0, 18019),
+(61624, 5956, 0, 0, 18019),
+(61634, 84769, 84767, 0, 18019),
+(61641, 0, 80522, 0, 18019),
+(61649, 77389, 0, 0, 18019),
+(61660, 82352, 0, 0, 18019),
+(61662, 77357, 0, 0, 18019),
+(61665, 19019, 0, 42486, 18019),
+(61666, 82465, 0, 0, 18019),
+(61672, 72299, 77402, 0, 18019),
+(61678, 81390, 0, 0, 18019),
+(61682, 7612, 0, 0, 18019),
+(61683, 80273, 81555, 0, 18019),
+(61695, 0, 0, 81547, 18019),
+(61696, 1910, 0, 0, 18019),
+(61698, 82349, 82349, 0, 18019),
+(61701, 85401, 0, 0, 18019),
+(61702, 80126, 0, 0, 18019),
+(61705, 79211, 0, 0, 18019),
+(61716, 77404, 0, 0, 18019),
+(61724, 73894, 0, 0, 18019),
+(61742, 0, 80522, 0, 18019),
+(61749, 5956, 0, 0, 18019),
+(61760, 29900, 79775, 0, 18019),
+(61766, 82348, 0, 0, 18019),
+(61783, 82349, 82349, 0, 18019),
+(61803, 82347, 0, 0, 18019),
+(61806, 71780, 0, 0, 18019),
+(61808, 80125, 0, 0, 18019),
+(61813, 82348, 0, 0, 18019),
+(61818, 80287, 0, 0, 18019),
+(61819, 80274, 73458, 0, 18019),
+(61820, 79718, 0, 0, 18019),
+(61821, 10613, 10613, 0, 18019),
+(61822, 30389, 30389, 0, 18019),
+(61823, 73362, 0, 0, 18019),
+(61834, 82278, 0, 0, 18019),
+(61836, 2549, 0, 0, 18019),
+(61837, 12751, 0, 0, 18019),
+(61838, 61327, 67460, 0, 18019),
+(61839, 28771, 34675, 0, 18019),
+(61840, 49560, 0, 0, 18019),
+(61841, 80580, 0, 0, 18019),
+(61842, 94106, 0, 0, 18019),
+(61860, 80287, 0, 0, 18019),
+(61861, 2028, 0, 0, 18019),
+(61881, 6680, 0, 0, 18019),
+(61884, 67153, 0, 0, 18019),
+(61886, 0, 0, 58800, 18019),
+(61906, 60765, 0, 0, 18019),
+(61917, 80125, 0, 0, 18019),
+(61928, 85401, 0, 0, 18019),
+(61929, 85947, 0, 0, 18019),
+(61933, 34819, 0, 0, 18019),
+(61934, 29440, 0, 0, 18019),
+(61935, 15241, 15241, 0, 18019),
+(61946, 80288, 0, 0, 18019),
+(61947, 82785, 82785, 0, 18019),
+(61968, 0, 0, 34270, 18019),
+(61970, 66956, 66956, 0, 18019),
+(61989, 82348, 0, 0, 18019),
+(62021, 87772, 87772, 0, 18019),
+(62074, 85947, 0, 0, 18019),
+(62075, 84769, 84767, 0, 18019),
+(62076, 85401, 0, 0, 18019),
+(62087, 30414, 0, 0, 18019),
+(62092, 30414, 0, 0, 18019),
+(62093, 79718, 0, 0, 18019),
+(62096, 6182, 0, 0, 18019),
+(62102, 82810, 82810, 0, 18019),
+(62107, 34286, 0, 0, 18019),
+(62108, 49423, 0, 0, 18019),
+(62112, 0, 0, 76308, 18019),
+(62122, 12937, 0, 0, 18019),
+(62123, 77384, 0, 14118, 18019),
+(62124, 77392, 0, 0, 18019),
+(62125, 80283, 0, 76982, 18019),
+(62126, 80283, 80283, 0, 18019),
+(62152, 85399, 85399, 0, 18019),
+(62153, 79718, 0, 0, 18019),
+(62193, 1117, 0, 0, 18019),
+(62194, 76711, 73203, 0, 18019),
+(62195, 73893, 0, 0, 18019),
+(62196, 2177, 0, 0, 18019),
+(62197, 30128, 0, 30128, 18019),
+(62202, 85399, 85399, 0, 18019),
+(62214, 7826, 0, 0, 18019),
+(62215, 24321, 0, 0, 18019),
+(62218, 80274, 73458, 0, 18019),
+(62220, 30455, 0, 0, 18019),
+(62221, 30455, 0, 0, 18019),
+(62227, 80274, 73458, 0, 18019),
+(62236, 80274, 73458, 0, 18019),
+(62243, 80274, 73458, 0, 18019),
+(62247, 0, 0, 15286, 18019),
+(62273, 14879, 0, 0, 18019),
+(62274, 14879, 0, 0, 18019),
+(62275, 14879, 0, 0, 18019),
+(62276, 80273, 81555, 0, 18019),
+(62279, 80266, 80266, 0, 18019),
+(62280, 79718, 0, 0, 18019),
+(62281, 80273, 81555, 0, 18019),
+(62286, 27512, 34553, 0, 18019),
+(62287, 28771, 34553, 0, 18019),
+(62288, 38175, 27449, 0, 18019),
+(62293, 82348, 0, 0, 18019),
+(62295, 80281, 0, 0, 18019),
+(62296, 81358, 0, 0, 18019),
+(62299, 49156, 0, 0, 18019),
+(62301, 85947, 0, 0, 18019),
+(62303, 80280, 0, 0, 18019),
+(62321, 79717, 0, 0, 18019),
+(62326, 2202, 0, 0, 18019),
+(62327, 12862, 0, 0, 18019),
+(62334, 1907, 0, 76980, 18019),
+(62348, 84767, 0, 0, 18019),
+(62350, 76715, 0, 76715, 18019),
+(62351, 83081, 0, 0, 18019),
+(62352, 76267, 0, 0, 18019),
+(62354, 80281, 0, 0, 18019),
+(62362, 42935, 0, 0, 18019),
+(62366, 81358, 0, 0, 18019),
+(62368, 80126, 0, 0, 18019),
+(62369, 57189, 0, 0, 18019),
+(62374, 83066, 83066, 0, 18019),
+(62376, 80266, 80266, 0, 18019),
+(62378, 80280, 0, 0, 18019),
+(62379, 80279, 0, 0, 18019),
+(62380, 80279, 0, 0, 18019),
+(62385, 82351, 0, 0, 18019),
+(62394, 85576, 0, 0, 18019),
+(62397, 85401, 0, 0, 18019),
+(62400, 80266, 80266, 0, 18019),
+(62401, 80266, 80266, 0, 18019),
+(62402, 85576, 0, 0, 18019),
+(62404, 80266, 80266, 0, 18019),
+(62405, 84769, 84769, 0, 18019),
+(62406, 80266, 80266, 0, 18019),
+(62407, 80266, 80266, 0, 18019),
+(62408, 85947, 0, 0, 18019),
+(62410, 14879, 0, 0, 18019),
+(62412, 14879, 0, 0, 18019),
+(62414, 79718, 0, 0, 18019),
+(62415, 1910, 0, 0, 18019),
+(62416, 1910, 0, 0, 18019),
+(62426, 82348, 0, 0, 18019),
+(62427, 81906, 0, 0, 18019),
+(62428, 82773, 0, 0, 18019),
+(62432, 82810, 0, 0, 18019),
+(62436, 80266, 80266, 0, 18019),
+(62437, 81358, 0, 0, 18019),
+(62440, 82771, 0, 0, 18019),
+(62441, 82347, 0, 0, 18019),
+(62443, 7826, 0, 0, 18019),
+(62444, 80266, 80266, 0, 18019),
+(62466, 4560, 4560, 15323, 18019),
+(62467, 79716, 0, 0, 18019),
+(62468, 2827, 77960, 0, 18019),
+(62471, 80057, 0, 0, 18019),
+(62474, 2023, 54878, 0, 18019),
+(62475, 80131, 54827, 0, 18019),
+(62477, 2023, 54878, 0, 18019),
+(62481, 2023, 54878, 0, 18019),
+(62485, 1904, 1904, 0, 18019),
+(62488, 0, 0, 73000, 18019),
+(62490, 2023, 54878, 0, 18019),
+(62491, 79716, 0, 0, 18019),
+(62492, 49423, 0, 0, 18019),
+(62494, 1951, 0, 0, 18019),
+(62495, 1904, 0, 0, 18019),
+(62499, 15241, 15241, 0, 18019),
+(62511, 86983, 0, 0, 18019),
+(62529, 79718, 0, 0, 18019),
+(62530, 83761, 0, 0, 18019),
+(62538, 85399, 85399, 0, 18019),
+(62540, 85947, 0, 0, 18019),
+(62543, 85401, 0, 0, 18019),
+(62546, 57114, 72982, 0, 18019),
+(62547, 0, 0, 30227, 18019),
+(62550, 69843, 0, 0, 18019),
+(62551, 85400, 85400, 0, 18019),
+(62552, 76497, 0, 0, 18019),
+(62553, 73045, 77402, 0, 18019),
+(62556, 0, 0, 81547, 18019),
+(62558, 3350, 0, 0, 18019),
+(62559, 82348, 0, 0, 18019),
+(62563, 85401, 0, 0, 18019),
+(62568, 75224, 0, 0, 18019),
+(62569, 80130, 36761, 0, 18019),
+(62571, 24018, 0, 0, 18019),
+(62573, 80283, 0, 76982, 18019),
+(62574, 2023, 0, 76980, 18019),
+(62577, 75200, 77402, 0, 18019),
+(62580, 85576, 0, 0, 18019),
+(62588, 85399, 85399, 0, 18019),
+(62589, 0, 0, 81397, 18019),
+(62590, 1951, 0, 0, 18019),
+(62593, 80266, 80266, 0, 18019),
+(62595, 79718, 0, 0, 18019),
+(62600, 2023, 0, 76980, 18019),
+(62603, 5289, 0, 0, 18019),
+(62605, 5289, 0, 0, 18019),
+(62606, 5289, 0, 0, 18019),
+(62608, 60642, 50710, 0, 18019),
+(62613, 73429, 0, 0, 18019),
+(62622, 71355, 34676, 0, 18019),
+(62624, 49156, 0, 0, 18019),
+(62630, 5289, 0, 0, 18019),
+(62631, 5289, 0, 0, 18019),
+(62632, 84767, 0, 0, 18019),
+(62636, 10613, 10613, 0, 18019),
+(62639, 82348, 0, 0, 18019),
+(62668, 80580, 0, 0, 18019),
+(62677, 76467, 0, 0, 18019),
+(62680, 82849, 82849, 0, 18019),
+(62686, 82849, 82849, 0, 18019),
+(62730, 79718, 0, 0, 18019),
+(62733, 79718, 0, 0, 18019),
+(62734, 80266, 80266, 0, 18019),
+(62735, 79718, 0, 0, 18019),
+(62736, 14879, 0, 0, 18019),
+(62749, 85401, 0, 0, 18019),
+(62754, 88772, 0, 0, 18019),
+(62755, 85947, 0, 0, 18019),
+(62756, 85400, 85467, 0, 18019),
+(62757, 85399, 85399, 0, 18019),
+(62774, 85576, 0, 0, 18019),
+(62781, 80279, 0, 0, 18019),
+(62782, 80279, 0, 0, 18019),
+(62785, 77359, 0, 0, 18019),
+(62786, 2023, 0, 76980, 18019),
+(62787, 82352, 0, 0, 18019),
+(62788, 2023, 0, 76980, 18019),
+(62789, 80278, 0, 0, 18019),
+(62790, 80278, 0, 0, 18019),
+(62793, 0, 13610, 0, 18019),
+(62796, 80266, 80266, 0, 18019),
+(62797, 80272, 77409, 0, 18019),
+(62798, 80266, 80266, 0, 18019),
+(62799, 79718, 0, 0, 18019),
+(62800, 2023, 0, 76980, 18019),
+(62801, 2023, 0, 76980, 18019),
+(62802, 80266, 80266, 0, 18019),
+(62803, 14879, 0, 0, 18019),
+(62804, 79718, 0, 0, 18019),
+(62805, 2023, 0, 76980, 18019),
+(62806, 80272, 77409, 0, 18019),
+(62810, 80278, 0, 0, 18019),
+(62811, 57114, 72982, 0, 18019),
+(62813, 85576, 0, 0, 18019),
+(62814, 88800, 0, 0, 18019),
+(62825, 80280, 0, 0, 18019),
+(62828, 80280, 0, 0, 18019),
+(62834, 80279, 0, 0, 18019),
+(62838, 85947, 0, 0, 18019),
+(62839, 85949, 85949, 0, 18019),
+(62840, 84769, 0, 0, 18019),
+(62842, 85947, 0, 0, 18019),
+(62844, 76496, 0, 0, 18019),
+(62846, 85948, 0, 0, 18019),
+(62850, 80280, 0, 0, 18019),
+(62863, 85947, 0, 0, 18019),
+(62880, 85963, 85963, 0, 18019),
+(62881, 89987, 0, 0, 18019),
+(62890, 69843, 0, 0, 18019),
+(62902, 81906, 0, 0, 18019),
+(62926, 80123, 0, 76980, 18019),
+(62928, 82771, 0, 0, 18019),
+(62941, 1493, 0, 76351, 18019),
+(62942, 1493, 0, 76351, 18019),
+(62966, 85401, 0, 0, 18019),
+(62968, 79259, 0, 0, 18019),
+(62978, 79718, 0, 0, 18019),
+(62980, 85947, 0, 0, 18019),
+(62986, 79718, 0, 0, 18019),
+(62993, 3362, 0, 0, 18019),
+(63013, 1827, 0, 0, 18019),
+(63017, 3433, 0, 0, 18019),
+(63030, 84676, 0, 0, 18019),
+(63032, 85399, 76313, 0, 18019),
+(63033, 12348, 0, 0, 18019),
+(63034, 80580, 0, 0, 18019),
+(63035, 84769, 84767, 0, 18019),
+(63036, 85576, 0, 0, 18019),
+(63041, 14535, 0, 0, 18019),
+(63044, 87203, 80263, 0, 18019),
+(63048, 85401, 0, 0, 18019),
+(63049, 82849, 84769, 0, 18019),
+(63056, 80580, 0, 0, 18019),
+(63065, 89545, 0, 0, 18019),
+(63071, 85576, 0, 0, 18019),
+(63081, 57030, 0, 0, 18019),
+(63101, 82349, 0, 0, 18019),
+(63102, 85576, 0, 0, 18019),
+(63103, 85399, 85399, 0, 18019),
+(63104, 85947, 0, 0, 18019),
+(63106, 85399, 0, 0, 18019),
+(63124, 69843, 0, 0, 18019),
+(63125, 69843, 0, 0, 18019),
+(63128, 69843, 0, 0, 18019),
+(63129, 89545, 0, 0, 18019),
+(63131, 57030, 0, 0, 18019),
+(63134, 79718, 0, 0, 18019),
+(63135, 79718, 0, 0, 18019),
+(63136, 79718, 0, 0, 18019),
+(63143, 82771, 0, 0, 18019),
+(63171, 57830, 0, 0, 18019),
+(63173, 3433, 0, 0, 18019),
+(63176, 84767, 0, 0, 18019),
+(63179, 84769, 84767, 0, 18019),
+(63195, 79718, 0, 0, 18019),
+(63196, 69843, 0, 0, 18019),
+(63197, 57114, 72982, 0, 18019),
+(63206, 85947, 0, 0, 18019),
+(63218, 84772, 0, 0, 18019),
+(63221, 89545, 0, 0, 18019),
+(63240, 38580, 0, 0, 18019),
+(63256, 45575, 0, 0, 18019),
+(63257, 85947, 0, 0, 18019),
+(63285, 79721, 0, 0, 18019),
+(63296, 79721, 0, 0, 18019),
+(63308, 2901, 0, 0, 18019),
+(63316, 79722, 0, 0, 18019),
+(63318, 85200, 85200, 0, 18019),
+(63327, 79721, 0, 0, 18019),
+(63331, 79722, 0, 0, 18019),
+(63332, 79719, 0, 0, 18019),
+(63335, 79718, 0, 0, 18019),
+(63350, 2028, 0, 0, 18019),
+(63351, 88846, 0, 76980, 18019),
+(63356, 0, 0, 6088, 18019),
+(63357, 1907, 0, 76980, 18019),
+(63364, 80123, 0, 76980, 18019),
+(63367, 52054, 0, 0, 18019),
+(63372, 80278, 0, 76980, 18019),
+(63373, 80278, 0, 76980, 18019),
+(63378, 80123, 0, 0, 18019),
+(63379, 80266, 80269, 0, 18019),
+(63380, 0, 72515, 0, 18019),
+(63390, 82383, 0, 0, 18019),
+(63400, 76982, 0, 76982, 18019),
+(63407, 82351, 0, 0, 18019),
+(63408, 82352, 0, 0, 18019),
+(63409, 82352, 0, 0, 18019),
+(63481, 79272, 0, 0, 18019),
+(63483, 79272, 0, 0, 18019),
+(63484, 0, 0, 76980, 18019),
+(63486, 79272, 0, 0, 18019),
+(63488, 79272, 0, 0, 18019),
+(63490, 3433, 0, 76308, 18019),
+(63491, 79272, 0, 0, 18019),
+(63492, 79272, 0, 0, 18019),
+(63493, 79272, 0, 0, 18019),
+(63494, 3433, 0, 0, 18019),
+(63495, 80123, 0, 0, 18019),
+(63496, 79272, 0, 0, 18019),
+(63512, 12801, 0, 0, 18019),
+(63513, 68834, 0, 0, 18019),
+(63514, 1901, 0, 0, 18019),
+(63526, 76497, 0, 0, 18019),
+(63528, 86197, 86197, 0, 18019),
+(63531, 63382, 0, 0, 18019),
+(63532, 5746, 12745, 0, 18019),
+(63536, 83021, 0, 0, 18019),
+(63560, 84769, 0, 0, 18019),
+(63564, 80288, 0, 0, 18019),
+(63570, 84677, 0, 0, 18019),
+(63571, 67161, 0, 0, 18019),
+(63576, 75224, 0, 0, 18019),
+(63589, 85399, 85399, 0, 18019),
+(63591, 85401, 0, 0, 18019),
+(63592, 88684, 88684, 0, 18019),
+(63593, 45926, 0, 0, 18019),
+(63602, 0, 82058, 0, 18019),
+(63604, 80274, 73458, 0, 18019),
+(63610, 82348, 0, 0, 18019),
+(63611, 87260, 0, 0, 18019),
+(63613, 84769, 0, 0, 18019),
+(63615, 84769, 0, 0, 18019),
+(63616, 80269, 80269, 0, 18019),
+(63617, 80266, 80266, 0, 18019),
+(63618, 2023, 0, 76980, 18019),
+(63622, 80269, 80269, 0, 18019),
+(63623, 80266, 80266, 0, 18019),
+(63624, 2023, 0, 76980, 18019),
+(63635, 84769, 0, 0, 18019),
+(63636, 84769, 0, 0, 18019),
+(63641, 88542, 0, 0, 18019),
+(63651, 81358, 0, 0, 18019),
+(63655, 77384, 77408, 0, 18019),
+(63656, 77357, 0, 0, 18019),
+(63657, 0, 0, 34269, 18019),
+(63662, 84769, 0, 0, 18019),
+(63664, 85401, 0, 0, 18019),
+(63673, 57034, 0, 0, 18019),
+(63678, 84677, 84677, 0, 18019),
+(63680, 84677, 0, 0, 18019),
+(63681, 84767, 85399, 0, 18019),
+(63684, 85947, 0, 0, 18019),
+(63685, 85399, 85949, 0, 18019),
+(63686, 85401, 0, 0, 18019),
+(63688, 85947, 0, 0, 18019),
+(63691, 87254, 87256, 0, 18019),
+(63693, 85400, 85400, 0, 18019),
+(63694, 85576, 0, 0, 18019),
+(63695, 82348, 0, 0, 18019),
+(63721, 1117, 0, 0, 18019),
+(63742, 3350, 0, 0, 18019),
+(63748, 3350, 0, 0, 18019),
+(63764, 12584, 2916, 0, 18019),
+(63771, 82351, 0, 0, 18019),
+(63772, 82351, 0, 0, 18019),
+(63776, 82351, 0, 0, 18019),
+(63777, 82351, 0, 0, 18019),
+(63782, 12584, 2916, 0, 18019),
+(63800, 0, 0, 25289, 18019),
+(63801, 30522, 0, 0, 18019),
+(63802, 3699, 12745, 0, 18019),
+(63806, 23546, 0, 0, 18019),
+(63809, 18867, 0, 0, 18019),
+(63810, 68834, 0, 0, 18019),
+(63812, 79716, 0, 0, 18019),
+(63817, 79718, 0, 76308, 18019),
+(63818, 0, 0, 25248, 18019),
+(63820, 49616, 49726, 0, 18019),
+(63821, 65494, 49728, 0, 18019),
+(63822, 0, 0, 85857, 18019),
+(63839, 56461, 0, 0, 18019),
+(63840, 82102, 0, 0, 18019),
+(63844, 82348, 0, 0, 18019),
+(63845, 80282, 83125, 0, 18019),
+(63846, 80282, 83125, 85857, 18019),
+(63851, 36524, 13629, 0, 18019),
+(63854, 85974, 0, 5870, 18019),
+(63856, 79830, 0, 0, 18019),
+(63866, 77371, 0, 0, 18019),
+(63867, 82347, 0, 0, 18019),
+(63875, 88834, 0, 0, 18019),
+(63876, 85947, 0, 0, 18019),
+(63882, 84660, 0, 0, 18019),
+(63883, 84660, 0, 0, 18019),
+(63884, 84660, 0, 0, 18019),
+(63885, 84660, 0, 0, 18019),
+(63886, 84660, 0, 0, 18019),
+(63887, 84660, 0, 0, 18019),
+(63888, 82790, 82349, 0, 18019),
+(63891, 62481, 0, 0, 18019),
+(63901, 80269, 80269, 0, 18019),
+(63902, 80266, 80266, 0, 18019),
+(63903, 2023, 0, 76980, 18019),
+(63904, 79718, 0, 0, 18019),
+(63905, 69843, 0, 0, 18019),
+(63906, 57114, 72982, 0, 18019),
+(63907, 80279, 0, 0, 18019),
+(63908, 80272, 77409, 0, 18019),
+(63909, 80280, 0, 0, 18019),
+(63910, 80281, 0, 0, 18019),
+(63916, 82347, 0, 0, 18019),
+(63917, 84660, 0, 0, 18019),
+(63923, 84677, 0, 0, 18019),
+(63924, 84677, 0, 0, 18019),
+(63925, 84677, 0, 0, 18019),
+(63933, 82348, 0, 0, 18019),
+(63936, 82348, 0, 0, 18019),
+(63939, 80273, 83122, 0, 18019),
+(63947, 57189, 1906, 0, 18019),
+(63948, 85951, 0, 0, 18019),
+(63974, 85399, 0, 0, 18019),
+(63975, 85576, 0, 0, 18019),
+(63976, 84769, 0, 0, 18019),
+(63977, 85576, 0, 0, 18019),
+(63993, 56232, 56232, 0, 18019),
+(63997, 56817, 0, 60789, 18019),
+(63998, 79831, 0, 0, 18019),
+(63999, 57013, 0, 0, 18019),
+(64000, 73892, 0, 0, 18019),
+(64003, 2901, 0, 0, 18019),
+(64008, 79830, 0, 0, 18019),
+(64010, 80403, 0, 0, 18019),
+(64013, 85947, 0, 0, 18019),
+(64033, 84660, 0, 0, 18019),
+(64034, 1897, 11763, 0, 18019),
+(64042, 12791, 0, 0, 18019),
+(64044, 71732, 0, 0, 18019),
+(64045, 71732, 0, 0, 18019),
+(64061, 82348, 0, 0, 18019),
+(64063, 77405, 0, 0, 18019),
+(64068, 77407, 0, 0, 18019),
+(64082, 3346, 0, 0, 18019),
+(64083, 88606, 0, 0, 18019),
+(64084, 25646, 0, 0, 18019),
+(64085, 45123, 0, 0, 18019),
+(64087, 84660, 0, 0, 18019),
+(64089, 0, 32375, 0, 18019),
+(64092, 88682, 0, 0, 18019),
+(64101, 77385, 77385, 0, 18019),
+(64103, 84767, 0, 76715, 18019),
+(64117, 23054, 28087, 0, 18019),
+(64120, 12991, 0, 21616, 18019),
+(64128, 6233, 0, 0, 18019),
+(64129, 3351, 0, 0, 18019),
+(64130, 8226, 0, 0, 18019),
+(64133, 80269, 80269, 0, 18019),
+(64159, 0, 0, 86602, 18019),
+(64162, 1117, 0, 0, 18019),
+(64165, 84777, 84777, 0, 18019),
+(64184, 85946, 0, 0, 18019),
+(64192, 57189, 1906, 0, 18019),
+(64194, 56817, 0, 60789, 18019),
+(64195, 79830, 0, 0, 18019),
+(64196, 57013, 0, 0, 18019),
+(64197, 56232, 56232, 0, 18019),
+(64199, 84767, 0, 76715, 18019),
+(64200, 80273, 83122, 0, 18019),
+(64201, 57189, 1906, 0, 18019),
+(64202, 41090, 0, 0, 18019),
+(64216, 12182, 0, 0, 18019),
+(64224, 29542, 29542, 0, 18019),
+(64234, 12182, 0, 0, 18019),
+(64236, 14879, 0, 0, 18019),
+(64237, 80266, 80266, 0, 18019),
+(64239, 79718, 0, 0, 18019),
+(64240, 2023, 0, 76980, 18019),
+(64241, 80272, 77409, 0, 18019),
+(64243, 1906, 0, 0, 18019),
+(64260, 0, 0, 34270, 18019),
+(64263, 81358, 0, 0, 18019),
+(64268, 86197, 0, 0, 18019),
+(64277, 82771, 0, 0, 18019),
+(64280, 86310, 0, 0, 18019),
+(64281, 87281, 87281, 28538, 18019),
+(64282, 17040, 0, 17040, 18019),
+(64286, 87281, 87281, 28538, 18019),
+(64324, 84660, 0, 0, 18019),
+(64325, 1117, 0, 0, 18019),
+(64326, 84660, 0, 0, 18019),
+(64331, 84660, 0, 0, 18019),
+(64333, 6232, 0, 0, 18019),
+(64338, 82849, 84677, 0, 18019),
+(64339, 85399, 76313, 0, 18019),
+(64340, 84677, 0, 0, 18019),
+(64341, 85401, 0, 0, 18019),
+(64342, 6225, 0, 0, 18019),
+(64343, 84660, 0, 0, 18019),
+(64344, 85947, 0, 0, 18019),
+(64353, 82849, 0, 0, 18019),
+(64355, 84677, 0, 0, 18019),
+(64357, 85399, 76313, 0, 18019),
+(64358, 85401, 0, 0, 18019),
+(64360, 30848, 0, 0, 18019),
+(64362, 57021, 57021, 0, 18019),
+(64363, 61354, 0, 0, 18019),
+(64364, 31824, 2028, 0, 18019),
+(64366, 36572, 36572, 0, 18019),
+(64370, 1951, 0, 0, 18019),
+(64380, 30848, 0, 0, 18019),
+(64381, 80283, 80283, 0, 18019),
+(64389, 1904, 0, 0, 18019),
+(64399, 79723, 0, 0, 18019),
+(64401, 83071, 83071, 0, 18019),
+(64406, 66689, 0, 30318, 18019),
+(64407, 0, 51526, 0, 18019),
+(64408, 86227, 65014, 0, 18019),
+(64409, 86394, 0, 0, 18019),
+(64412, 80841, 80842, 0, 18019),
+(64418, 18062, 0, 0, 18019),
+(64420, 14824, 0, 0, 18019),
+(64421, 37123, 0, 0, 18019),
+(64422, 34520, 29638, 0, 18019),
+(64423, 5305, 1984, 0, 18019),
+(64424, 5305, 0, 0, 18019),
+(64427, 57021, 57021, 0, 18019),
+(64434, 3350, 3350, 0, 18019),
+(64441, 2558, 0, 0, 18019),
+(64445, 85947, 0, 0, 18019),
+(64453, 85399, 85399, 0, 18019),
+(64454, 85947, 0, 0, 18019),
+(64458, 85576, 0, 0, 18019),
+(64464, 82351, 0, 0, 18019),
+(64466, 2023, 0, 76980, 18019),
+(64467, 0, 0, 76308, 18019),
+(64470, 2023, 0, 76980, 18019),
+(64471, 80269, 80269, 0, 18019),
+(64472, 80269, 80269, 0, 18019),
+(64473, 80269, 80269, 0, 18019),
+(64474, 2023, 0, 76980, 18019),
+(64480, 0, 0, 67434, 18019),
+(64490, 85947, 0, 0, 18019),
+(64500, 4090, 0, 0, 18019),
+(64517, 83020, 0, 0, 18019),
+(64519, 80278, 0, 76980, 18019),
+(64536, 14879, 0, 0, 18019),
+(64542, 32450, 73425, 0, 18019),
+(64549, 0, 0, 32730, 18019),
+(64559, 85947, 0, 0, 18019),
+(64560, 2177, 12869, 0, 18019),
+(64564, 42139, 0, 0, 18019),
+(64566, 32450, 73425, 0, 18019),
+(64570, 84660, 0, 0, 18019),
+(64572, 1907, 0, 0, 18019),
+(64573, 71739, 71741, 0, 18019),
+(64574, 0, 71736, 0, 18019),
+(64584, 5288, 0, 49462, 18019),
+(64586, 3364, 4067, 5261, 18019),
+(64587, 59807, 47287, 5261, 18019),
+(64601, 80265, 80265, 0, 18019),
+(64602, 80265, 80265, 0, 18019),
+(64614, 5599, 0, 0, 18019),
+(64615, 5599, 0, 2550, 18019),
+(64631, 12959, 0, 0, 18019),
+(64639, 33975, 33975, 23051, 18019),
+(64643, 33981, 33982, 0, 18019),
+(64646, 77384, 0, 14118, 18019),
+(64647, 83071, 83071, 0, 18019),
+(64648, 77384, 0, 14118, 18019),
+(64650, 12182, 0, 0, 18019),
+(64659, 35, 0, 0, 18019),
+(64660, 13623, 0, 0, 18019),
+(64663, 34681, 0, 0, 18019),
+(64683, 13623, 0, 0, 18019),
+(64694, 79275, 0, 0, 18019),
+(64705, 84677, 84769, 0, 18019),
+(64714, 0, 0, 2551, 18019),
+(64720, 85947, 0, 0, 18019),
+(64721, 85947, 0, 0, 18019),
+(64722, 85947, 0, 0, 18019),
+(64723, 49654, 0, 0, 18019),
+(64727, 2177, 12869, 0, 18019),
+(64729, 10612, 0, 0, 18019),
+(64732, 5289, 0, 2550, 18019),
+(64733, 12322, 0, 0, 18019),
+(64734, 88495, 0, 0, 18019),
+(64735, 85974, 0, 5870, 18019),
+(64738, 61368, 61368, 0, 18019),
+(64757, 87260, 0, 0, 18019),
+(64764, 61368, 61368, 0, 18019),
+(64827, 61368, 61368, 0, 18019),
+(64829, 45123, 0, 0, 18019),
+(64837, 61368, 61368, 0, 18019),
+(64838, 61368, 61368, 0, 18019),
+(64839, 61368, 61368, 0, 18019),
+(64841, 61368, 61368, 0, 18019),
+(64842, 61368, 61368, 0, 18019),
+(64852, 82347, 0, 0, 18019),
+(64853, 32450, 73425, 0, 18019),
+(64856, 851, 0, 0, 18019),
+(64859, 851, 0, 0, 18019),
+(64867, 30178, 0, 0, 18019),
+(64868, 30178, 0, 0, 18019),
+(64869, 30178, 0, 0, 18019),
+(64870, 30178, 0, 0, 18019),
+(64871, 49930, 0, 0, 18019),
+(64872, 851, 0, 0, 18019),
+(64873, 851, 0, 0, 18019),
+(64874, 851, 0, 0, 18019),
+(64884, 83071, 83071, 0, 18019),
+(64886, 83071, 83071, 0, 18019),
+(64888, 83071, 83071, 0, 18019),
+(64889, 67161, 0, 0, 18019),
+(64890, 85399, 84767, 0, 18019),
+(64892, 67161, 0, 0, 18019),
+(64900, 49018, 49018, 0, 18019),
+(64901, 77359, 0, 0, 18019),
+(64902, 85401, 0, 0, 18019),
+(64916, 82849, 0, 0, 18019),
+(64917, 84769, 0, 0, 18019),
+(64922, 0, 1910, 25972, 18019),
+(64930, 12182, 0, 0, 18019),
+(64931, 12182, 0, 0, 18019),
+(64932, 12182, 0, 0, 18019),
+(64933, 12182, 0, 0, 18019),
+(64934, 12182, 0, 0, 18019),
+(64935, 12182, 0, 0, 18019),
+(64947, 82348, 0, 0, 18019),
+(64969, 62481, 0, 0, 18019),
+(64970, 756, 0, 0, 18019),
+(64971, 85576, 0, 0, 18019),
+(64973, 85947, 0, 0, 18019),
+(64974, 54877, 54878, 0, 18019),
+(64975, 79719, 0, 0, 18019),
+(64978, 79719, 0, 0, 18019),
+(64979, 88263, 0, 0, 18019),
+(64980, 79721, 0, 0, 18019),
+(64994, 0, 84660, 0, 18019),
+(64995, 85947, 0, 0, 18019),
+(64997, 71732, 0, 0, 18019),
+(64998, 71732, 0, 0, 18019),
+(64999, 851, 0, 0, 18019),
+(65003, 0, 0, 89364, 18019),
+(65012, 2179, 0, 0, 18019),
+(65013, 2179, 0, 0, 18019),
+(65014, 2179, 0, 0, 18019),
+(65022, 49930, 0, 0, 18019),
+(65024, 82348, 0, 0, 18019),
+(65025, 851, 0, 0, 18019),
+(65026, 851, 0, 0, 18019),
+(65092, 1910, 0, 0, 18019),
+(65114, 2028, 0, 0, 18019),
+(65121, 5956, 0, 0, 18019),
+(65127, 2200, 0, 0, 18019),
+(65129, 2028, 0, 0, 18019),
+(65130, 88544, 90016, 0, 18019),
+(65131, 83020, 0, 0, 18019),
+(65132, 89805, 89805, 0, 18019),
+(65133, 38132, 0, 0, 18019),
+(65134, 86395, 86395, 0, 18019),
+(65135, 2028, 0, 0, 18019),
+(65136, 77388, 0, 0, 18019),
+(65138, 14535, 0, 76979, 18019),
+(65139, 14535, 0, 0, 18019),
+(65140, 14535, 0, 34269, 18019),
+(65144, 2028, 0, 0, 18019),
+(65151, 14870, 0, 2550, 18019),
+(65152, 10611, 10612, 2550, 18019),
+(65153, 46987, 143, 0, 18019),
+(65154, 10611, 66008, 2550, 18019),
+(65160, 31302, 31302, 0, 18019),
+(65171, 2028, 0, 0, 18019),
+(65172, 2028, 0, 0, 18019),
+(65176, 12182, 0, 0, 18019),
+(65177, 0, 0, 89364, 18019),
+(65186, 2716, 2717, 0, 18019),
+(65201, 84769, 0, 0, 18019),
+(65218, 3362, 0, 0, 18019),
+(65232, 2827, 0, 0, 18019),
+(65252, 84776, 84776, 0, 18019),
+(65273, 85576, 0, 0, 18019),
+(65274, 85947, 0, 0, 18019),
+(65289, 79716, 0, 0, 18019),
+(65352, 0, 0, 81547, 18019),
+(65373, 80278, 0, 0, 18019),
+(65382, 1117, 0, 0, 18019),
+(65384, 1117, 0, 0, 18019),
+(65402, 88494, 88494, 0, 18019),
+(65442, 47034, 0, 0, 18019),
+(65444, 29107, 0, 6230, 18019),
+(65445, 82849, 0, 0, 18019),
+(65446, 61620, 0, 0, 18019),
+(65447, 88668, 0, 0, 18019),
+(65455, 84769, 0, 0, 18019),
+(65472, 3362, 0, 0, 18019),
+(65474, 2695, 0, 5856, 18019),
+(65478, 85401, 0, 0, 18019),
+(65486, 85401, 0, 0, 18019),
+(65494, 10612, 0, 88712, 18019),
+(65495, 0, 0, 34270, 18019),
+(65498, 85947, 0, 0, 18019),
+(65499, 84769, 84769, 0, 18019),
+(65500, 85576, 0, 0, 18019),
+(65501, 85401, 0, 0, 18019),
+(65507, 88495, 0, 0, 18019),
+(65510, 11542, 0, 0, 18019),
+(65516, 85401, 0, 0, 18019),
+(65529, 82810, 0, 0, 18019),
+(65532, 0, 82058, 0, 18019),
+(65548, 1899, 1984, 2551, 18019),
+(65549, 1899, 1984, 2551, 18019),
+(65551, 84767, 0, 0, 18019),
+(65572, 85947, 0, 0, 18019),
+(65573, 84769, 0, 0, 18019),
+(65576, 31824, 0, 0, 18019),
+(65584, 88772, 0, 0, 18019),
+(65589, 5276, 0, 0, 18019),
+(65594, 37893, 50055, 0, 18019),
+(65598, 88837, 12867, 0, 18019),
+(65601, 1903, 0, 0, 18019),
+(65609, 61620, 0, 50150, 18019),
+(65610, 851, 0, 0, 18019),
+(65611, 88668, 0, 50150, 18019),
+(65621, 84676, 0, 0, 18019),
+(65623, 88553, 0, 0, 18019),
+(65626, 82348, 0, 0, 18019),
+(65628, 88553, 0, 0, 18019),
+(65631, 2827, 2827, 0, 18019),
+(65638, 62034, 12865, 0, 18019),
+(65639, 88553, 0, 0, 18019),
+(65646, 85947, 0, 0, 18019),
+(65648, 3367, 0, 0, 18019),
+(65652, 1951, 0, 0, 18019),
+(65654, 3364, 0, 2552, 18019),
+(65683, 84767, 0, 0, 18019),
+(65684, 85401, 0, 0, 18019),
+(65685, 88772, 0, 0, 18019),
+(65688, 778, 778, 0, 18019),
+(65690, 2023, 0, 76980, 18019),
+(65713, 80266, 80266, 0, 18019),
+(65714, 80266, 80266, 0, 18019),
+(65746, 2827, 19485, 0, 18019),
+(65747, 14527, 0, 0, 18019),
+(65749, 85576, 0, 0, 18019),
+(65766, 79718, 0, 0, 18019),
+(65779, 86560, 0, 0, 18019),
+(65781, 80285, 74050, 0, 18019),
+(65782, 80274, 73458, 0, 18019),
+(65785, 5289, 0, 2550, 18019),
+(65786, 11542, 0, 0, 18019),
+(65787, 85947, 0, 0, 18019),
+(65788, 7826, 0, 0, 18019),
+(65807, 10612, 0, 88712, 18019),
+(65810, 82349, 0, 0, 18019),
+(65840, 4994, 0, 0, 18019),
+(65841, 1896, 37119, 0, 18019),
+(65842, 1902, 12860, 0, 18019),
+(65856, 6633, 0, 0, 18019),
+(65864, 30179, 0, 49462, 18019),
+(65866, 80273, 83122, 0, 18019),
+(65867, 21553, 0, 2551, 18019),
+(65874, 3362, 0, 0, 18019),
+(65875, 33171, 0, 0, 18019),
+(65880, 41261, 0, 0, 18019),
+(65881, 21551, 0, 52579, 18019),
+(65882, 4994, 0, 0, 18019),
+(65883, 52278, 0, 0, 18019),
+(65885, 14879, 0, 0, 18019),
+(65899, 79272, 0, 0, 18019),
+(65900, 45123, 0, 0, 18019),
+(65905, 21573, 21572, 0, 18019),
+(65910, 79717, 0, 0, 18019),
+(65911, 21553, 0, 0, 18019),
+(65912, 43014, 0, 0, 18019),
+(65926, 12801, 0, 0, 18019),
+(65928, 72158, 0, 0, 18019),
+(65941, 7826, 0, 0, 18019),
+(65942, 7826, 0, 0, 18019),
+(65943, 7826, 0, 0, 18019),
+(65944, 7826, 0, 0, 18019),
+(65945, 7826, 0, 0, 18019),
+(65946, 7826, 0, 0, 18019),
+(65947, 7826, 0, 0, 18019),
+(65948, 7826, 0, 0, 18019),
+(65949, 7826, 0, 0, 18019),
+(65950, 7826, 0, 0, 18019),
+(65951, 7826, 0, 0, 18019),
+(65952, 7826, 0, 0, 18019),
+(65953, 7826, 0, 0, 18019),
+(65954, 7826, 0, 0, 18019),
+(65955, 7826, 0, 0, 18019),
+(65956, 7826, 0, 0, 18019),
+(65957, 7826, 0, 0, 18019),
+(65958, 7826, 0, 0, 18019),
+(65959, 21573, 21572, 0, 18019),
+(65960, 88550, 0, 0, 18019),
+(65977, 88846, 0, 0, 18019),
+(65978, 89543, 0, 0, 18019),
+(65995, 85401, 0, 0, 18019),
+(66000, 49072, 0, 42776, 18019),
+(66052, 49721, 49616, 0, 18019),
+(66053, 80125, 0, 0, 18019),
+(66055, 80273, 89102, 0, 18019),
+(66057, 82272, 0, 0, 18019),
+(66059, 83071, 83071, 0, 18019),
+(66061, 43579, 0, 0, 18019),
+(66066, 32450, 73425, 0, 18019),
+(66073, 88599, 88599, 0, 18019),
+(66078, 84660, 0, 0, 18019),
+(66095, 14527, 0, 0, 18019),
+(66138, 79272, 0, 0, 18019),
+(66149, 83066, 83066, 0, 18019),
+(66158, 43579, 0, 0, 18019),
+(66159, 80273, 89102, 0, 18019),
+(66160, 58804, 0, 0, 18019),
+(66162, 85401, 0, 0, 18019),
+(66165, 33982, 0, 0, 18019),
+(66169, 34816, 34816, 0, 18019),
+(66174, 47005, 0, 60293, 18019),
+(66180, 86613, 0, 0, 18019),
+(66182, 72294, 0, 0, 18019),
+(66195, 88553, 0, 0, 18019),
+(66200, 0, 0, 12523, 18019),
+(66206, 82348, 0, 0, 18019),
+(66207, 88846, 0, 0, 18019),
+(66219, 45123, 0, 89315, 18019),
+(66235, 3367, 0, 0, 18019),
+(66237, 79720, 0, 0, 18019),
+(66251, 5300, 0, 0, 18019),
+(66253, 79272, 0, 0, 18019),
+(66254, 88550, 0, 0, 18019),
+(66255, 88599, 88599, 0, 18019),
+(66256, 86613, 0, 0, 18019),
+(66257, 83066, 83066, 0, 18019),
+(66258, 79272, 0, 0, 18019),
+(66260, 88846, 0, 0, 18019),
+(66261, 50434, 0, 0, 18019),
+(66263, 57186, 0, 0, 18019),
+(66267, 63257, 0, 0, 18019),
+(66268, 89546, 72586, 0, 18019),
+(66269, 57014, 0, 0, 18019),
+(66270, 60966, 0, 0, 18019),
+(66271, 74691, 0, 0, 18019),
+(66272, 72298, 72477, 0, 18019),
+(66274, 76288, 0, 0, 18019),
+(66275, 85561, 0, 0, 18019),
+(66276, 89552, 0, 0, 18019),
+(66280, 1415, 0, 0, 18019),
+(66281, 89568, 0, 0, 18019),
+(66283, 49719, 49616, 0, 18019),
+(66285, 21573, 0, 0, 18019),
+(66286, 2182, 59484, 0, 18019),
+(66287, 49721, 21572, 0, 18019),
+(66288, 0, 0, 12523, 18019),
+(66289, 80522, 0, 0, 18019),
+(66290, 6219, 13606, 0, 18019),
+(66291, 0, 0, 12523, 18019),
+(66300, 3364, 4067, 61576, 18019),
+(66306, 29583, 0, 76351, 18019),
+(66309, 88007, 88007, 0, 18019),
+(66310, 82348, 0, 0, 18019),
+(66315, 89559, 0, 0, 18019),
+(66328, 25760, 0, 0, 18019),
+(66341, 6219, 0, 0, 18019),
+(66346, 31302, 31302, 0, 18019),
+(66347, 29583, 0, 76351, 18019),
+(66348, 31824, 0, 12523, 18019),
+(66350, 31302, 31302, 0, 18019),
+(66351, 29583, 0, 76351, 18019),
+(66353, 79273, 0, 0, 18019),
+(66354, 89161, 89376, 0, 18019),
+(66355, 89560, 0, 0, 18019),
+(66356, 79272, 0, 0, 18019),
+(66357, 87999, 89377, 0, 18019),
+(66358, 1117, 0, 0, 18019),
+(66359, 54877, 54878, 0, 18019),
+(66360, 45123, 0, 0, 18019),
+(66392, 6225, 6364, 0, 18019),
+(66395, 21551, 0, 12523, 18019),
+(66396, 89552, 0, 0, 18019),
+(66404, 31302, 31302, 0, 18019),
+(66406, 89552, 0, 0, 18019),
+(66407, 5285, 5285, 0, 18019),
+(66419, 0, 0, 76979, 18019),
+(66441, 3364, 4067, 61576, 18019),
+(66446, 2176, 0, 0, 18019),
+(66460, 0, 0, 61576, 18019),
+(66465, 85401, 0, 0, 18019),
+(66475, 4994, 0, 0, 18019),
+(66480, 1911, 0, 0, 18019),
+(66503, 21573, 0, 0, 18019),
+(66505, 31824, 0, 12523, 18019),
+(66506, 21551, 0, 12523, 18019),
+(66507, 0, 0, 12523, 18019),
+(66527, 0, 0, 49761, 18019),
+(66570, 56229, 0, 0, 18019),
+(66574, 0, 0, 49761, 18019),
+(66575, 21553, 0, 0, 18019),
+(66576, 43014, 0, 0, 18019),
+(66581, 5285, 5285, 0, 18019),
+(66596, 82351, 0, 0, 18019),
+(66603, 5285, 5285, 0, 18019),
+(66630, 7826, 0, 0, 18019),
+(66634, 5289, 0, 0, 18019),
+(66641, 61576, 0, 61576, 18019),
+(66646, 30848, 0, 0, 18019),
+(66647, 0, 0, 12523, 18019),
+(66648, 49721, 21572, 0, 18019),
+(66649, 2182, 59484, 0, 18019),
+(66650, 21573, 0, 0, 18019),
+(66653, 5289, 0, 0, 18019),
+(66659, 1908, 0, 0, 18019),
+(66666, 89130, 83121, 76980, 18019),
+(66667, 31824, 2028, 0, 18019),
+(66679, 57021, 57021, 0, 18019),
+(66682, 30848, 0, 0, 18019),
+(66693, 42939, 0, 0, 18019),
+(66694, 30848, 0, 0, 18019),
+(66700, 43219, 0, 0, 18019),
+(66704, 89552, 0, 0, 18019),
+(66727, 84769, 0, 0, 18019),
+(66732, 79719, 0, 0, 18019),
+(66744, 79719, 0, 0, 18019),
+(66769, 43579, 0, 0, 18019),
+(66770, 80273, 89102, 0, 18019),
+(66775, 85399, 85399, 0, 18019),
+(66776, 85576, 0, 0, 18019),
+(66777, 85576, 0, 0, 18019),
+(66784, 89350, 0, 89350, 18019),
+(66788, 84767, 0, 0, 18019),
+(66789, 85400, 0, 0, 18019),
+(66790, 85399, 85399, 0, 18019),
+(66791, 85947, 0, 0, 18019),
+(66793, 1911, 0, 0, 18019),
+(66796, 49719, 49616, 0, 18019),
+(66797, 85576, 0, 0, 18019),
+(66800, 85399, 85399, 0, 18019),
+(66816, 7826, 0, 0, 18019),
+(66825, 14707, 0, 0, 18019),
+(66836, 79272, 0, 0, 18019),
+(66845, 5289, 0, 0, 18019),
+(66847, 61354, 0, 0, 18019),
+(66848, 14707, 0, 0, 18019),
+(66860, 14535, 0, 0, 18019),
+(66861, 14535, 0, 0, 18019),
+(66875, 85576, 0, 0, 18019),
+(66899, 30848, 0, 0, 18019),
+(66905, 2081, 0, 74588, 18019),
+(66911, 89568, 0, 0, 18019),
+(66913, 1899, 143, 2551, 18019),
+(66915, 30178, 0, 0, 18019),
+(66921, 0, 0, 49761, 18019),
+(66927, 4994, 0, 0, 18019),
+(66931, 1899, 143, 0, 18019),
+(66948, 21573, 21573, 0, 18019),
+(66979, 2901, 0, 0, 18019),
+(66999, 2023, 54878, 0, 18019),
+(67013, 0, 71736, 0, 18019),
+(67014, 71739, 71741, 0, 18019),
+(67024, 2901, 0, 0, 18019),
+(67029, 2023, 54878, 0, 18019),
+(67030, 84769, 0, 0, 18019),
+(67034, 84769, 0, 0, 18019),
+(67035, 84769, 0, 0, 18019),
+(67037, 84769, 0, 0, 18019),
+(67038, 1911, 0, 0, 18019),
+(67052, 45123, 0, 0, 18019),
+(67093, 85947, 0, 0, 18019),
+(67149, 60765, 0, 5258, 18019),
+(67150, 79723, 0, 5258, 18019),
+(67158, 30178, 0, 0, 18019),
+(67160, 85401, 0, 2551, 18019),
+(67170, 45123, 0, 0, 18019),
+(67173, 45123, 0, 0, 18019),
+(67175, 45123, 0, 0, 18019),
+(67176, 45123, 0, 0, 18019),
+(67178, 45123, 0, 0, 18019),
+(67179, 80580, 0, 0, 18019),
+(67184, 85460, 0, 0, 18019),
+(67195, 1485, 0, 5260, 18019),
+(67196, 1485, 0, 5260, 18019),
+(67197, 77384, 83121, 76981, 18019),
+(67198, 77384, 83121, 76981, 18019),
+(67199, 89130, 83121, 76980, 18019),
+(67200, 89130, 83121, 76980, 18019),
+(67232, 18805, 0, 0, 18019),
+(67243, 7826, 0, 0, 18019),
+(67244, 7826, 0, 0, 18019),
+(67245, 7826, 0, 0, 18019),
+(67246, 7826, 0, 0, 18019),
+(67250, 31824, 2028, 0, 18019),
+(67252, 57021, 57021, 0, 18019),
+(67255, 89774, 0, 0, 18019),
+(67256, 69858, 0, 0, 18019),
+(67257, 77075, 77075, 0, 18019),
+(67258, 75252, 77402, 0, 18019),
+(67259, 6680, 0, 0, 18019),
+(67263, 75252, 77402, 0, 18019),
+(67264, 88833, 0, 0, 18019),
+(67266, 2164, 2163, 0, 18019),
+(67268, 70691, 0, 0, 18019),
+(67269, 87999, 0, 0, 18019),
+(67281, 31824, 0, 0, 18019),
+(67283, 31743, 0, 0, 18019),
+(67284, 50142, 0, 50147, 18019),
+(67294, 82348, 0, 0, 18019),
+(67295, 82771, 0, 0, 18019),
+(67296, 28800, 0, 0, 18019),
+(67297, 3780, 0, 3780, 18019),
+(67299, 82349, 82349, 0, 18019),
+(67302, 82771, 0, 0, 18019),
+(67304, 21573, 1203, 0, 18019),
+(67305, 86540, 1203, 0, 18019),
+(67306, 82347, 0, 28487, 18019),
+(67309, 90928, 90927, 0, 18019),
+(67310, 86560, 0, 0, 18019),
+(67312, 86540, 21572, 0, 18019),
+(67313, 90928, 43085, 0, 18019),
+(67315, 2179, 2179, 0, 18019),
+(67317, 71593, 56199, 71154, 18019),
+(67318, 1910, 0, 0, 18019),
+(67330, 24321, 0, 0, 18019),
+(67333, 27405, 27406, 0, 18019),
+(67334, 30178, 0, 0, 18019),
+(67346, 17383, 0, 5262, 18019),
+(67354, 21573, 21572, 0, 18019),
+(67357, 14875, 0, 0, 18019),
+(67360, 1906, 0, 2552, 18019),
+(67361, 54824, 0, 2552, 18019),
+(67362, 17383, 0, 5262, 18019),
+(67366, 54824, 0, 2552, 18019),
+(67369, 62032, 0, 0, 18019),
+(67373, 1910, 1910, 0, 18019),
+(67387, 1903, 0, 0, 18019),
+(67391, 54824, 0, 2552, 18019),
+(67396, 91793, 0, 91795, 18019),
+(67397, 91794, 0, 73039, 18019),
+(67399, 3326, 0, 33790, 18019),
+(67405, 1911, 0, 12523, 18019),
+(67407, 12951, 0, 69207, 18019),
+(67413, 47034, 0, 23889, 18019),
+(67418, 10612, 0, 5856, 18019),
+(67419, 91811, 0, 30128, 18019),
+(67425, 46987, 21572, 0, 18019),
+(67426, 54824, 0, 2552, 18019),
+(67427, 2884, 3774, 0, 18019),
+(67428, 10591, 10591, 0, 18019),
+(67429, 17383, 0, 5262, 18019),
+(67430, 60822, 60822, 0, 18019),
+(67431, 10591, 12456, 0, 18019),
+(67434, 58135, 53935, 0, 18019),
+(67441, 62229, 0, 93390, 18019),
+(67444, 47104, 47104, 0, 18019),
+(67447, 9659, 0, 0, 18019),
+(67460, 91813, 0, 91812, 18019),
+(67461, 14824, 0, 0, 18019),
+(67466, 89694, 89694, 0, 18019),
+(67487, 0, 11200, 0, 18019),
+(67488, 49617, 0, 28581, 18019),
+(67511, 2695, 0, 0, 18019),
+(67512, 18608, 0, 0, 18019),
+(67513, 3350, 0, 0, 18019),
+(67514, 1906, 0, 0, 18019),
+(67515, 2202, 0, 0, 18019),
+(67516, 54879, 0, 0, 18019),
+(67520, 18203, 18202, 0, 18019),
+(67530, 91842, 0, 0, 18019),
+(67548, 75213, 0, 0, 18019),
+(67550, 91849, 13219, 0, 18019),
+(67551, 92017, 92018, 0, 18019),
+(67558, 0, 0, 52052, 18019),
+(67560, 45899, 0, 0, 18019),
+(67561, 38175, 27449, 0, 18019),
+(67563, 31824, 0, 0, 18019),
+(67564, 31824, 0, 0, 18019),
+(67568, 3492, 0, 0, 18019),
+(67572, 5532, 5532, 0, 18019),
+(67579, 89144, 0, 0, 18019),
+(67580, 30414, 0, 0, 18019),
+(67581, 62232, 0, 0, 18019),
+(67582, 38175, 27449, 0, 18019),
+(67584, 24321, 0, 0, 18019),
+(67585, 30178, 0, 0, 18019),
+(67586, 12750, 0, 0, 18019),
+(67587, 82348, 0, 0, 18019),
+(67588, 30699, 30699, 0, 18019),
+(67591, 0, 0, 91901, 18019),
+(67598, 29541, 0, 0, 18019),
+(67599, 21573, 21573, 0, 18019),
+(67601, 1522, 0, 1522, 18019),
+(67603, 29981, 0, 0, 18019),
+(67618, 61354, 0, 0, 18019),
+(67619, 49618, 49617, 45937, 18019),
+(67620, 0, 0, 45937, 18019),
+(67621, 0, 0, 46383, 18019),
+(67622, 49618, 49617, 28581, 18019),
+(67623, 0, 0, 47523, 18019),
+(67626, 851, 1829, 0, 18019),
+(67627, 851, 851, 0, 18019),
+(67633, 1906, 0, 0, 18019),
+(67636, 62032, 43611, 0, 18019),
+(67637, 2716, 1905, 0, 18019),
+(67638, 2716, 1905, 0, 18019),
+(67646, 86310, 0, 0, 18019),
+(67647, 31669, 31669, 0, 18019),
+(67649, 29541, 0, 0, 18019),
+(67650, 29541, 0, 0, 18019),
+(67651, 29541, 0, 0, 18019),
+(67657, 29541, 0, 0, 18019),
+(67660, 35781, 0, 0, 18019),
+(67662, 41342, 0, 0, 18019),
+(67673, 24034, 24034, 0, 18019),
+(67681, 49615, 0, 0, 18019),
+(67682, 0, 1910, 25972, 18019),
+(67689, 21551, 21551, 0, 18019),
+(67690, 92013, 92012, 0, 18019),
+(67692, 92014, 92015, 0, 18019),
+(67710, 85576, 0, 0, 18019),
+(67711, 62481, 0, 0, 18019),
+(67713, 89988, 0, 0, 18019),
+(67714, 85947, 0, 0, 18019),
+(67715, 89787, 89374, 0, 18019),
+(67717, 89779, 89741, 0, 18019),
+(67719, 89897, 0, 0, 18019),
+(67720, 84769, 0, 0, 18019),
+(67721, 90534, 0, 0, 18019),
+(67722, 88469, 89900, 0, 18019),
+(67723, 88001, 89538, 0, 18019),
+(67725, 89988, 0, 0, 18019),
+(67726, 89787, 89374, 0, 18019),
+(67727, 77561, 77596, 0, 18019),
+(67728, 89779, 89741, 0, 18019),
+(67729, 89897, 0, 0, 18019),
+(67730, 90534, 0, 0, 18019),
+(67731, 88469, 89900, 0, 18019),
+(67732, 88001, 89538, 0, 18019),
+(67734, 91793, 0, 73039, 18019),
+(67746, 85576, 0, 0, 18019),
+(67748, 89776, 0, 0, 18019),
+(67749, 1910, 0, 0, 18019),
+(67752, 86208, 0, 0, 18019),
+(67754, 88792, 0, 0, 18019),
+(67757, 43219, 0, 0, 18019),
+(67762, 2559, 0, 0, 18019),
+(67764, 49154, 0, 0, 18019),
+(67765, 1829, 0, 47014, 18019),
+(67766, 4994, 0, 0, 18019),
+(67767, 49930, 0, 0, 18019),
+(67775, 49930, 0, 0, 18019),
+(67776, 5956, 0, 0, 18019),
+(67782, 1911, 0, 0, 18019),
+(67786, 30179, 0, 49462, 18019),
+(67790, 5599, 0, 0, 18019),
+(67801, 43008, 0, 42484, 18019),
+(67804, 24321, 0, 0, 18019),
+(67805, 38175, 27449, 0, 18019),
+(67806, 2901, 0, 0, 18019),
+(67809, 84769, 84767, 0, 18019),
+(67810, 77560, 0, 0, 18019),
+(67811, 1899, 143, 2551, 18019),
+(67812, 10612, 10611, 0, 18019),
+(67814, 5289, 0, 2550, 18019),
+(67815, 1899, 1984, 2551, 18019),
+(67818, 31669, 31669, 0, 18019),
+(67821, 49018, 46092, 0, 18019),
+(67822, 37120, 21572, 0, 18019),
+(67825, 10612, 10611, 0, 18019),
+(67826, 83126, 0, 0, 18019),
+(67832, 89895, 90403, 0, 18019),
+(67834, 29981, 0, 0, 18019),
+(67837, 12750, 0, 0, 18019),
+(67840, 30414, 0, 0, 18019),
+(67844, 1220, 1220, 0, 18019),
+(67846, 93233, 0, 0, 18019),
+(67847, 24324, 24324, 0, 18019),
+(67848, 85668, 0, 0, 18019),
+(67864, 62232, 0, 0, 18019),
+(67867, 30414, 0, 0, 18019),
+(67868, 49615, 0, 0, 18019),
+(67869, 1905, 0, 0, 18019),
+(67870, 1905, 0, 0, 18019),
+(67871, 1910, 0, 0, 18019),
+(67873, 1910, 0, 0, 18019),
+(67874, 5600, 11505, 0, 18019),
+(67880, 17383, 0, 5262, 18019),
+(67884, 5278, 0, 15460, 18019),
+(67886, 3492, 0, 0, 18019),
+(67887, 84769, 84767, 0, 18019),
+(67888, 3492, 0, 0, 18019),
+(67889, 3492, 0, 0, 18019),
+(67890, 3492, 0, 0, 18019),
+(67891, 3492, 0, 0, 18019),
+(67892, 18873, 0, 0, 18019),
+(67893, 1899, 1984, 2551, 18019),
+(67900, 91793, 0, 13147, 18019),
+(67901, 21573, 1203, 0, 18019),
+(67902, 18608, 0, 0, 18019),
+(67904, 5283, 12863, 0, 18019),
+(67905, 46987, 0, 47014, 18019),
+(67913, 31824, 0, 89364, 18019),
+(67919, 80057, 0, 91812, 18019),
+(67920, 92445, 0, 0, 18019),
+(67923, 88506, 0, 0, 18019),
+(67924, 5278, 0, 15460, 18019),
+(67926, 0, 0, 11021, 18019),
+(67927, 17383, 0, 5262, 18019),
+(67929, 3774, 79775, 0, 18019),
+(67932, 28771, 34553, 0, 18019),
+(67939, 30848, 0, 0, 18019),
+(67947, 45899, 0, 0, 18019),
+(67950, 0, 1910, 25972, 18019),
+(67951, 91793, 0, 73039, 18019),
+(67953, 77365, 0, 77364, 18019),
+(67959, 1903, 0, 0, 18019),
+(67964, 1908, 0, 0, 18019),
+(67965, 1899, 143, 2551, 18019),
+(67968, 2177, 12869, 0, 18019),
+(67970, 49499, 0, 0, 18019),
+(67971, 1911, 0, 58172, 18019),
+(67973, 46737, 0, 0, 18019),
+(67976, 1903, 0, 0, 18019),
+(67979, 21553, 0, 47014, 18019),
+(67983, 34305, 0, 34280, 18019),
+(67984, 5597, 0, 0, 18019),
+(67985, 40464, 0, 34280, 18019),
+(67987, 5598, 0, 2550, 18019),
+(67989, 29114, 0, 0, 18019),
+(67990, 62232, 0, 0, 18019),
+(67992, 2177, 12869, 0, 18019),
+(67993, 0, 0, 42140, 18019),
+(67994, 35781, 0, 6231, 18019),
+(67995, 34285, 34285, 24319, 18019),
+(67996, 35781, 0, 0, 18019),
+(67997, 42547, 0, 0, 18019),
+(67998, 42547, 0, 34281, 18019),
+(67999, 30423, 0, 0, 18019),
+(68002, 44236, 0, 0, 18019),
+(68003, 92961, 0, 0, 18019),
+(68005, 82348, 0, 0, 18019),
+(68009, 78475, 77938, 0, 18019),
+(68014, 42759, 17066, 0, 18019),
+(68016, 60957, 49728, 0, 18019),
+(68023, 14085, 0, 14118, 18019),
+(68025, 56228, 0, 0, 18019),
+(68038, 58137, 57763, 0, 18019),
+(68039, 85576, 0, 0, 18019),
+(68041, 30178, 0, 0, 18019),
+(68042, 49342, 44233, 0, 18019),
+(68043, 34288, 0, 34275, 18019),
+(68044, 13698, 0, 0, 18019),
+(68045, 49935, 49935, 0, 18019),
+(68046, 92518, 0, 0, 18019),
+(68047, 47032, 56043, 0, 18019),
+(68048, 56155, 0, 0, 18019),
+(68049, 92520, 92519, 0, 18019),
+(68050, 43619, 0, 0, 18019),
+(68051, 35117, 46093, 0, 18019),
+(68058, 1903, 0, 0, 18019),
+(68059, 56228, 0, 0, 18019),
+(68072, 49615, 0, 0, 18019),
+(68074, 85777, 0, 0, 18019),
+(68077, 29981, 0, 0, 18019),
+(68078, 93234, 0, 0, 18019),
+(68084, 62232, 0, 0, 18019),
+(68085, 29114, 0, 0, 18019),
+(68086, 35781, 0, 0, 18019),
+(68088, 30414, 0, 0, 18019),
+(68096, 29651, 0, 13924, 18019),
+(68098, 14707, 0, 0, 18019),
+(68126, 30367, 0, 0, 18019),
+(68128, 79275, 0, 0, 18019),
+(68129, 29681, 0, 13924, 18019),
+(68130, 92961, 0, 0, 18019),
+(68137, 30699, 30699, 0, 18019),
+(68141, 77580, 77597, 0, 18019),
+(68142, 77581, 0, 0, 18019),
+(68143, 77574, 0, 0, 18019),
+(68144, 92961, 0, 0, 18019),
+(68145, 14874, 14874, 0, 18019),
+(68147, 14874, 14874, 0, 18019),
+(68154, 46107, 45856, 2551, 18019),
+(68164, 89897, 0, 88688, 18019),
+(68175, 32731, 32731, 0, 18019),
+(68176, 32729, 0, 0, 18019),
+(68203, 32729, 0, 0, 18019),
+(68204, 32731, 32731, 0, 18019),
+(68223, 23459, 0, 0, 18019),
+(68224, 93242, 0, 0, 18019),
+(68234, 1908, 0, 0, 18019),
+(68235, 46737, 0, 0, 18019),
+(68236, 2177, 12869, 0, 18019),
+(68237, 77365, 0, 77364, 18019),
+(68242, 45899, 0, 0, 18019),
+(68278, 62232, 0, 0, 18019),
+(68287, 58367, 0, 0, 18019),
+(68293, 5288, 0, 49462, 18019),
+(68294, 85974, 0, 5870, 18019),
+(68304, 84660, 0, 0, 18019),
+(68305, 34819, 39384, 0, 18019),
+(68308, 34305, 0, 0, 18019),
+(68310, 21573, 1203, 0, 18019),
+(68311, 3780, 0, 3780, 18019),
+(68312, 0, 0, 12523, 18019),
+(68315, 6219, 0, 0, 18019),
+(68317, 49714, 49714, 0, 18019),
+(68318, 49721, 49720, 0, 18019),
+(68319, 49725, 0, 0, 18019),
+(68320, 49734, 49734, 0, 18019),
+(68321, 49729, 49732, 0, 18019),
+(68322, 49736, 0, 0, 18019),
+(68326, 5281, 5281, 0, 18019),
+(68328, 2901, 0, 0, 18019),
+(68329, 62232, 0, 0, 18019),
+(68331, 0, 0, 52052, 18019),
+(68332, 12290, 13625, 0, 18019),
+(68333, 5283, 12863, 0, 18019),
+(68334, 93192, 0, 0, 18019),
+(68335, 29981, 0, 0, 18019),
+(68336, 30414, 0, 0, 18019),
+(68337, 93233, 0, 0, 18019),
+(68342, 13698, 0, 0, 18019),
+(68352, 84660, 0, 0, 18019),
+(68354, 12421, 0, 0, 18019),
+(68355, 54553, 0, 0, 18019),
+(68363, 89777, 0, 0, 18019),
+(68364, 30732, 0, 0, 18019),
+(68365, 13061, 0, 0, 18019),
+(68367, 18828, 77597, 0, 18019),
+(68368, 93182, 0, 0, 18019),
+(68369, 43111, 0, 2550, 18019),
+(68370, 62232, 0, 0, 18019),
+(68371, 18828, 18826, 0, 18019),
+(68372, 13061, 0, 0, 18019),
+(68373, 2813, 0, 0, 18019),
+(68377, 84725, 0, 0, 18019),
+(68378, 87862, 0, 0, 18019),
+(68380, 18419, 0, 0, 18019),
+(68384, 53098, 0, 0, 18019),
+(68389, 0, 0, 34277, 18019),
+(68391, 53098, 0, 0, 18019),
+(68392, 45899, 0, 0, 18019),
+(68393, 0, 0, 34277, 18019),
+(68397, 94906, 0, 0, 18019),
+(68399, 21573, 0, 0, 18019),
+(68401, 88805, 0, 0, 18019),
+(68402, 0, 76393, 0, 18019),
+(68409, 1897, 11763, 0, 18019),
+(68418, 49615, 0, 0, 18019),
+(68420, 3492, 0, 0, 18019),
+(68429, 30414, 0, 0, 18019),
+(68431, 53098, 0, 0, 18019),
+(68432, 0, 0, 34277, 18019),
+(68470, 5599, 0, 0, 18019),
+(68471, 91793, 0, 73036, 18019),
+(68472, 91793, 0, 73039, 18019),
+(68474, 34693, 0, 0, 18019),
+(68475, 87642, 0, 0, 18019),
+(68477, 43175, 49728, 0, 18019),
+(68479, 91793, 0, 73039, 18019),
+(68483, 91793, 0, 13147, 18019),
+(68485, 12890, 1203, 0, 18019),
+(68486, 31309, 0, 0, 18019),
+(68490, 46069, 21572, 0, 18019),
+(68492, 0, 13604, 0, 18019),
+(68496, 30414, 0, 0, 18019),
+(68501, 93233, 0, 0, 18019),
+(68503, 91793, 0, 73039, 18019),
+(68508, 12786, 12452, 0, 18019),
+(68514, 45899, 0, 0, 18019),
+(68519, 0, 0, 12523, 18019),
+(68525, 29981, 0, 0, 18019),
+(68536, 89396, 0, 0, 18019),
+(68538, 92961, 0, 0, 18019),
+(68544, 92961, 0, 0, 18019),
+(68546, 1951, 0, 0, 18019),
+(68557, 91183, 0, 0, 18019),
+(68581, 5287, 0, 15460, 18019),
+(68586, 29114, 0, 0, 18019),
+(68588, 35117, 35117, 0, 18019),
+(68589, 29114, 0, 0, 18019),
+(68590, 29114, 0, 0, 18019),
+(68592, 29114, 0, 0, 18019),
+(68593, 29114, 0, 0, 18019),
+(68601, 93023, 93024, 0, 18019),
+(68603, 2717, 0, 0, 18019),
+(68605, 82347, 0, 0, 18019),
+(68609, 2177, 12869, 0, 18019),
+(68612, 5599, 0, 0, 18019),
+(68616, 49342, 44233, 0, 18019),
+(68617, 34884, 0, 0, 18019),
+(68619, 33177, 0, 0, 18019),
+(68631, 29114, 0, 0, 18019),
+(68632, 92520, 92519, 0, 18019),
+(68634, 29114, 0, 0, 18019),
+(68639, 24321, 0, 0, 18019),
+(68640, 34517, 93027, 0, 18019),
+(68642, 29114, 0, 0, 18019),
+(68644, 62232, 0, 0, 18019),
+(68645, 24324, 24324, 24326, 18019),
+(68646, 73362, 0, 0, 18019),
+(68647, 3364, 5284, 0, 18019),
+(68648, 91793, 0, 73039, 18019),
+(68651, 2177, 12869, 0, 18019),
+(68652, 2177, 12869, 0, 18019),
+(68667, 56910, 56910, 0, 18019),
+(68668, 85974, 0, 5870, 18019),
+(68669, 85974, 0, 5870, 18019),
+(68674, 18419, 0, 0, 18019),
+(68677, 2177, 12869, 0, 18019),
+(68680, 43619, 0, 0, 18019),
+(68685, 54825, 0, 0, 18019),
+(68687, 0, 0, 42140, 18019),
+(68689, 2177, 12869, 0, 18019),
+(68692, 34282, 34282, 0, 18019),
+(68707, 21553, 0, 46998, 18019),
+(68708, 43014, 0, 0, 18019),
+(68714, 41342, 0, 0, 18019),
+(68716, 30424, 0, 0, 18019),
+(68717, 34505, 12747, 0, 18019),
+(68727, 46069, 21572, 0, 18019),
+(68739, 43175, 49728, 0, 18019),
+(68749, 2177, 12869, 0, 18019),
+(68751, 31608, 0, 0, 18019),
+(68752, 13291, 12869, 0, 18019),
+(68753, 52278, 0, 0, 18019),
+(68754, 34516, 0, 0, 18019),
+(68755, 31608, 0, 0, 18019),
+(68756, 29403, 23241, 0, 18019),
+(68757, 13291, 12747, 0, 18019),
+(68758, 89705, 0, 0, 18019),
+(68760, 29537, 0, 0, 18019),
+(68761, 30181, 24038, 0, 18019),
+(68769, 60765, 0, 0, 18019),
+(68774, 82790, 0, 0, 18019),
+(68777, 92961, 0, 0, 18019),
+(68815, 86208, 0, 0, 18019),
+(68821, 31309, 0, 0, 18019),
+(68825, 50145, 49728, 0, 18019),
+(68826, 50154, 49728, 0, 18019),
+(68827, 0, 0, 61576, 18019),
+(68829, 1911, 0, 0, 18019),
+(68830, 47104, 47104, 0, 18019),
+(68832, 1903, 0, 0, 18019),
+(68833, 21553, 0, 47014, 18019),
+(68835, 0, 0, 2552, 18019),
+(68842, 0, 0, 77364, 18019),
+(68843, 0, 0, 2552, 18019),
+(68844, 1899, 143, 0, 18019),
+(68847, 1899, 143, 0, 18019),
+(68851, 43008, 0, 42776, 18019),
+(68854, 1911, 0, 0, 18019),
+(68857, 10612, 12452, 0, 18019),
+(68862, 1911, 0, 0, 18019),
+(68863, 1903, 0, 0, 18019),
+(68864, 0, 0, 2552, 18019),
+(68870, 49714, 49714, 0, 18019),
+(68871, 61969, 0, 61967, 18019),
+(68879, 28920, 0, 0, 18019),
+(68880, 28920, 0, 0, 18019),
+(68881, 93242, 0, 0, 18019),
+(68882, 23459, 0, 0, 18019),
+(68883, 31824, 1903, 0, 18019),
+(68903, 5289, 0, 0, 18019),
+(68904, 93774, 93778, 0, 18019),
+(68905, 93776, 93780, 0, 18019),
+(68906, 20412, 0, 0, 18019),
+(68920, 23459, 0, 0, 18019),
+(68922, 2177, 12869, 0, 18019),
+(68924, 92961, 0, 0, 18019),
+(68930, 45899, 0, 0, 18019),
+(68939, 93242, 0, 0, 18019),
+(68941, 23459, 0, 0, 18019),
+(68945, 0, 0, 12523, 18019),
+(68949, 6182, 0, 0, 18019),
+(68950, 6182, 0, 0, 18019),
+(68951, 82351, 0, 0, 18019),
+(68955, 23459, 0, 0, 18019),
+(68960, 21573, 0, 0, 18019),
+(68965, 2164, 2163, 0, 18019),
+(68966, 2177, 12869, 0, 18019),
+(68967, 49615, 0, 0, 18019),
+(68968, 21573, 0, 0, 18019),
+(68972, 2177, 12869, 0, 18019),
+(68975, 30414, 0, 0, 18019),
+(68977, 49615, 0, 0, 18019),
+(68979, 29417, 71741, 0, 18019),
+(68980, 29417, 71741, 0, 18019),
+(68981, 29417, 71741, 0, 18019),
+(68982, 29417, 71741, 0, 18019),
+(68983, 53055, 0, 30128, 18019),
+(68985, 3364, 0, 2508, 18019),
+(68988, 29981, 0, 0, 18019),
+(68993, 1388, 0, 0, 18019),
+(68997, 47034, 0, 0, 18019),
+(68998, 17383, 0, 5261, 18019),
+(68999, 31824, 1903, 0, 18019),
+(69000, 57021, 57021, 0, 18019),
+(69001, 93376, 0, 93377, 18019),
+(69002, 43205, 0, 21554, 18019),
+(69003, 53100, 0, 0, 18019),
+(69004, 2809, 13219, 0, 18019),
+(69005, 93368, 0, 0, 18019),
+(69006, 27407, 24331, 0, 18019),
+(69007, 53055, 0, 30128, 18019),
+(69008, 93372, 0, 93371, 18019),
+(69009, 91811, 0, 30128, 18019),
+(69020, 13338, 0, 0, 18019),
+(69029, 46987, 0, 47014, 18019),
+(69046, 29981, 0, 0, 18019),
+(69054, 21573, 0, 0, 18019),
+(69056, 37120, 21572, 0, 18019),
+(69057, 0, 0, 25273, 18019),
+(69059, 37917, 0, 0, 18019),
+(69060, 30182, 0, 0, 18019),
+(69064, 6231, 0, 6231, 18019),
+(69065, 2522, 2522, 33790, 18019),
+(69073, 49615, 0, 0, 18019),
+(69074, 49615, 0, 0, 18019),
+(69078, 93238, 0, 0, 18019),
+(69085, 85401, 0, 0, 18019),
+(69088, 2715, 0, 0, 18019),
+(69095, 93234, 0, 0, 18019),
+(69131, 93798, 93798, 0, 18019),
+(69132, 94313, 0, 0, 18019),
+(69136, 31609, 92018, 0, 18019),
+(69140, 50433, 0, 0, 18019),
+(69144, 11763, 0, 28023, 18019),
+(69152, 89559, 0, 0, 18019),
+(69154, 94317, 94317, 0, 18019),
+(69155, 92358, 0, 0, 18019),
+(69164, 19909, 0, 0, 18019),
+(69167, 19874, 0, 0, 18019),
+(69168, 33983, 0, 0, 18019),
+(69169, 33984, 33789, 0, 18019),
+(69171, 94105, 94105, 0, 18019),
+(69173, 9511, 9511, 0, 18019),
+(69175, 70733, 70733, 0, 18019),
+(69176, 93667, 0, 0, 18019),
+(69178, 50415, 0, 0, 18019),
+(69184, 37721, 0, 0, 18019),
+(69185, 49839, 0, 0, 18019),
+(69194, 1906, 0, 2552, 18019),
+(69196, 54824, 0, 2552, 18019),
+(69197, 54824, 0, 2552, 18019),
+(69198, 1903, 0, 0, 18019),
+(69201, 60822, 60822, 0, 18019),
+(69202, 54824, 0, 2552, 18019),
+(69211, 54824, 0, 2552, 18019),
+(69221, 92358, 0, 0, 18019),
+(69223, 94106, 94196, 0, 18019),
+(69224, 1907, 0, 0, 18019),
+(69225, 90144, 0, 0, 18019),
+(69226, 6680, 0, 0, 18019),
+(69229, 85930, 0, 0, 18019),
+(69231, 54824, 0, 2552, 18019),
+(69235, 82347, 0, 0, 18019),
+(69249, 1907, 0, 0, 18019),
+(69250, 91068, 0, 0, 18019),
+(69254, 94248, 0, 0, 18019),
+(69255, 94248, 0, 0, 18019),
+(69256, 94248, 0, 0, 18019),
+(69257, 12748, 0, 0, 18019),
+(69259, 5956, 0, 0, 18019),
+(69266, 2522, 2522, 33790, 18019),
+(69272, 41090, 0, 0, 18019),
+(69274, 80939, 0, 0, 18019),
+(69281, 94849, 0, 0, 18019),
+(69285, 94248, 0, 0, 18019),
+(69286, 94827, 0, 0, 18019),
+(69294, 94106, 0, 0, 18019),
+(69295, 91390, 95495, 0, 18019),
+(69298, 94248, 0, 0, 18019),
+(69300, 94118, 0, 0, 18019),
+(69301, 94119, 0, 0, 18019),
+(69312, 55990, 0, 0, 18019),
+(69314, 19909, 0, 0, 18019),
+(69321, 72301, 72301, 0, 18019),
+(69322, 72285, 0, 0, 18019),
+(69323, 75224, 0, 0, 18019),
+(69326, 89132, 89894, 0, 18019),
+(69333, 89988, 0, 0, 18019),
+(69334, 89897, 0, 0, 18019),
+(69338, 55169, 0, 0, 18019),
+(69339, 95795, 0, 0, 18019),
+(69348, 1904, 0, 0, 18019),
+(69371, 89552, 0, 0, 18019),
+(69374, 86617, 0, 0, 18019),
+(69376, 11763, 0, 28023, 18019),
+(69379, 2522, 2522, 33790, 18019),
+(69388, 89685, 0, 0, 18019),
+(69390, 94703, 89295, 0, 18019),
+(69397, 2522, 2522, 33790, 18019),
+(69399, 1904, 0, 0, 18019),
+(69401, 85930, 0, 0, 18019),
+(69412, 2522, 2522, 33790, 18019),
+(69413, 80266, 80266, 0, 18019),
+(69418, 35220, 0, 0, 18019),
+(69422, 12944, 49933, 0, 18019),
+(69425, 32450, 73425, 0, 18019),
+(69431, 82347, 0, 0, 18019),
+(69455, 89698, 0, 0, 18019),
+(69457, 80266, 80266, 0, 18019),
+(69461, 89701, 0, 0, 18019),
+(69463, 55990, 0, 0, 18019),
+(69468, 80266, 80266, 0, 18019),
+(69471, 82348, 0, 0, 18019),
+(69475, 94104, 0, 0, 18019),
+(69478, 62232, 0, 0, 18019),
+(69481, 62232, 0, 0, 18019),
+(69483, 80939, 0, 0, 18019),
+(69485, 34894, 34949, 27526, 18019),
+(69488, 34893, 34675, 0, 18019),
+(69501, 81107, 0, 0, 18019),
+(69504, 0, 0, 33991, 18019),
+(69507, 93766, 93770, 0, 18019),
+(69517, 95044, 93932, 0, 18019),
+(69518, 94248, 0, 0, 18019),
+(69521, 5856, 5856, 0, 18019),
+(69527, 94106, 94196, 0, 18019),
+(69530, 82347, 0, 0, 18019),
+(69532, 92806, 92806, 0, 18019),
+(69534, 82347, 0, 0, 18019),
+(69538, 94104, 0, 0, 18019),
+(69544, 80266, 80266, 0, 18019),
+(69552, 49156, 0, 0, 18019),
+(69557, 2522, 2522, 33790, 18019),
+(69559, 33980, 60822, 60294, 18019),
+(69565, 34894, 34949, 27526, 18019),
+(69573, 82348, 0, 0, 18019),
+(69581, 34893, 34675, 0, 18019),
+(69599, 2177, 12869, 0, 18019),
+(69600, 50268, 92405, 42140, 18019),
+(69615, 0, 0, 42140, 18019),
+(69616, 2177, 12869, 0, 18019),
+(69617, 62232, 0, 0, 18019),
+(69619, 35781, 0, 0, 18019),
+(69620, 34894, 34949, 27526, 18019),
+(69621, 80266, 80266, 0, 18019),
+(69624, 34877, 0, 34281, 18019),
+(69625, 24320, 24320, 24326, 18019),
+(69633, 83021, 89117, 0, 18019),
+(69644, 89559, 0, 0, 18019),
+(69652, 82347, 0, 0, 18019),
+(69657, 93766, 93770, 0, 18019),
+(69663, 93236, 0, 0, 18019),
+(69664, 78407, 0, 0, 18019),
+(69665, 94913, 94503, 0, 18019),
+(69666, 91207, 0, 0, 18019),
+(69668, 42547, 0, 0, 18019),
+(69670, 42547, 0, 0, 18019),
+(69677, 35781, 0, 0, 18019),
+(69678, 28456, 0, 0, 18019),
+(69680, 25197, 25197, 0, 18019),
+(69741, 2177, 12869, 0, 18019),
+(69742, 62232, 0, 0, 18019),
+(69743, 82347, 0, 0, 18019),
+(69744, 0, 0, 42140, 18019),
+(69749, 89144, 0, 0, 18019),
+(69768, 94118, 0, 0, 18019),
+(69769, 94106, 0, 0, 18019),
+(69780, 2522, 2522, 33790, 18019),
+(69791, 82224, 82224, 0, 18019),
+(69792, 86218, 0, 0, 18019),
+(69797, 62232, 0, 0, 18019),
+(69799, 62232, 0, 0, 18019),
+(69800, 82770, 0, 0, 18019),
+(69802, 35781, 0, 0, 18019),
+(69804, 50433, 0, 0, 18019),
+(69809, 94131, 0, 0, 18019),
+(69810, 80266, 80266, 0, 18019),
+(69821, 91080, 93659, 0, 18019),
+(69824, 80281, 0, 0, 18019),
+(69826, 94096, 94096, 28023, 18019),
+(69827, 80281, 0, 0, 18019),
+(69828, 45123, 94564, 0, 18019),
+(69833, 82348, 0, 0, 18019),
+(69834, 86093, 0, 0, 18019),
+(69835, 83020, 83020, 0, 18019),
+(69837, 94156, 94156, 0, 18019),
+(69840, 34893, 34675, 0, 18019),
+(69841, 94106, 0, 0, 18019),
+(69842, 94106, 0, 0, 18019),
+(69843, 86612, 0, 0, 18019),
+(69846, 84677, 84677, 0, 18019),
+(69865, 94106, 94196, 0, 18019),
+(69880, 95593, 0, 0, 18019),
+(69899, 93238, 0, 0, 18019),
+(69905, 90001, 90007, 0, 18019),
+(69906, 94134, 0, 0, 18019),
+(69909, 93241, 0, 0, 18019),
+(69910, 94118, 94194, 0, 18019),
+(69911, 93283, 0, 0, 18019),
+(69917, 80266, 80266, 0, 18019),
+(69925, 92358, 0, 0, 18019),
+(69927, 94122, 94193, 0, 18019),
+(69945, 94105, 94195, 33790, 18019),
+(69949, 34604, 34895, 42140, 18019),
+(69961, 82348, 0, 0, 18019),
+(69969, 18062, 0, 0, 18019),
+(69974, 5305, 0, 0, 18019),
+(69975, 5305, 1984, 0, 18019),
+(69976, 34520, 29638, 0, 18019),
+(69977, 37123, 0, 0, 18019),
+(69978, 14824, 0, 0, 18019),
+(69994, 45727, 94256, 0, 18019),
+(69995, 94257, 92519, 0, 18019),
+(69996, 89898, 0, 0, 18019),
+(70000, 94836, 0, 0, 18019),
+(70001, 42322, 0, 0, 18019),
+(70002, 94244, 94244, 0, 18019),
+(70003, 49886, 0, 0, 18019),
+(70030, 82271, 0, 82271, 18019),
+(70035, 59560, 0, 0, 18019),
+(70040, 2177, 12869, 0, 18019),
+(70041, 0, 0, 42140, 18019),
+(70044, 13291, 12747, 0, 18019),
+(70045, 29403, 23241, 0, 18019),
+(70046, 30181, 24038, 0, 18019),
+(70055, 62232, 0, 86538, 18019),
+(70068, 49721, 76315, 0, 18019),
+(70070, 89144, 0, 0, 18019),
+(70074, 94565, 94565, 0, 18019),
+(70075, 28923, 0, 0, 18019),
+(70080, 53924, 0, 0, 18019),
+(70084, 39659, 0, 0, 18019),
+(70085, 29417, 71741, 0, 18019),
+(70086, 29417, 71741, 0, 18019),
+(70087, 29417, 71741, 0, 18019),
+(70088, 29417, 71741, 0, 18019),
+(70089, 0, 0, 24319, 18019),
+(70090, 49935, 49935, 0, 18019),
+(70091, 92518, 0, 0, 18019),
+(70092, 2177, 12869, 0, 18019),
+(70096, 94121, 0, 0, 18019),
+(70099, 89895, 89376, 0, 18019),
+(70105, 80266, 80266, 0, 18019),
+(70106, 89895, 89901, 0, 18019),
+(70118, 1903, 0, 0, 18019),
+(70119, 55990, 0, 0, 18019),
+(70122, 25758, 0, 34271, 18019),
+(70126, 45861, 0, 0, 18019),
+(70131, 2177, 12869, 0, 18019),
+(70132, 2177, 12869, 0, 18019),
+(70133, 61969, 0, 61967, 18019),
+(70138, 33791, 6320, 0, 18019),
+(70160, 14879, 0, 0, 18019),
+(70165, 0, 0, 15460, 18019),
+(70167, 2493, 0, 0, 18019),
+(70168, 2493, 0, 0, 18019),
+(70169, 79273, 0, 0, 18019),
+(70170, 32450, 73425, 0, 18019),
+(70176, 63270, 0, 0, 18019),
+(70179, 85756, 0, 0, 18019),
+(70193, 34877, 0, 34281, 18019),
+(70194, 24320, 24320, 24326, 18019),
+(70202, 93764, 93764, 0, 18019),
+(70205, 93936, 93936, 0, 18019),
+(70213, 94257, 81088, 73036, 18019),
+(70230, 13632, 0, 0, 18019),
+(70236, 94703, 94703, 0, 18019),
+(70237, 34288, 0, 24319, 18019),
+(70240, 94107, 0, 0, 18019),
+(70246, 0, 93755, 0, 18019),
+(70253, 35117, 0, 34280, 18019),
+(70262, 34288, 0, 24319, 18019),
+(70274, 2884, 0, 0, 18019),
+(70275, 49024, 56084, 94714, 18019),
+(70276, 94719, 0, 0, 18019),
+(70279, 95049, 12865, 0, 18019),
+(70284, 80123, 0, 0, 18019),
+(70285, 93766, 93770, 0, 18019),
+(70286, 93766, 93770, 0, 18019),
+(70287, 92809, 95495, 0, 18019),
+(70290, 94248, 0, 0, 18019),
+(70291, 95044, 93932, 0, 18019),
+(70293, 80283, 0, 76982, 18019),
+(70295, 80266, 80266, 0, 18019),
+(70297, 80266, 80266, 0, 18019),
+(70298, 80266, 80266, 0, 18019),
+(70309, 4991, 0, 91795, 18019),
+(70312, 79718, 0, 0, 18019),
+(70313, 2023, 0, 76980, 18019),
+(70316, 80266, 80266, 0, 18019),
+(70317, 80281, 0, 0, 18019),
+(70320, 80266, 80266, 0, 18019),
+(70321, 80269, 80269, 0, 18019),
+(70322, 80266, 80266, 0, 18019),
+(70324, 82347, 0, 0, 18019),
+(70328, 94096, 94096, 28023, 18019),
+(70333, 45991, 0, 0, 18019),
+(70334, 82347, 0, 0, 18019),
+(70337, 4991, 0, 91795, 18019),
+(70338, 84661, 0, 0, 18019),
+(70339, 84661, 0, 0, 18019),
+(70340, 19970, 0, 0, 18019),
+(70350, 29403, 23241, 0, 18019),
+(70351, 13291, 12747, 0, 18019),
+(70352, 30181, 24038, 0, 18019),
+(70354, 2184, 0, 0, 18019),
+(70358, 34894, 34949, 27526, 18019),
+(70360, 0, 0, 42140, 18019),
+(70362, 62232, 0, 0, 18019),
+(70363, 2177, 12869, 0, 18019),
+(70370, 2177, 12869, 0, 18019),
+(70371, 62232, 0, 86538, 18019),
+(70372, 0, 0, 42140, 18019),
+(70373, 34894, 34949, 27526, 18019),
+(70377, 2522, 2522, 33790, 18019),
+(70381, 80273, 0, 76979, 18019),
+(70383, 79723, 0, 0, 18019),
+(70389, 35781, 0, 0, 18019),
+(70395, 49935, 49935, 0, 18019),
+(70396, 94257, 92519, 0, 18019),
+(70397, 92518, 0, 0, 18019),
+(70398, 1117, 13605, 0, 18019),
+(70399, 84660, 0, 0, 18019),
+(70401, 94096, 94096, 28023, 18019),
+(70404, 44050, 0, 0, 18019),
+(70407, 45992, 0, 0, 18019),
+(70408, 84660, 0, 0, 18019),
+(70411, 84660, 0, 0, 18019),
+(70415, 84660, 0, 0, 18019),
+(70418, 2884, 0, 0, 18019),
+(70419, 95593, 0, 0, 18019),
+(70420, 40598, 0, 0, 18019),
+(70421, 95594, 0, 0, 18019),
+(70427, 84660, 19485, 0, 18019),
+(70428, 68050, 80580, 0, 18019),
+(70433, 69643, 93904, 0, 18019),
+(70434, 94248, 0, 0, 18019),
+(70436, 88846, 0, 0, 18019),
+(70437, 94906, 0, 0, 18019),
+(70445, 94247, 0, 0, 18019),
+(70461, 12854, 12859, 0, 18019),
+(70463, 13632, 0, 58797, 18019),
+(70464, 95460, 95460, 0, 18019),
+(70465, 95463, 0, 0, 18019),
+(70468, 49716, 0, 0, 18019),
+(70469, 95459, 95459, 0, 18019),
+(70471, 95453, 0, 0, 18019),
+(70473, 60822, 60822, 0, 18019),
+(70480, 34894, 34949, 27526, 18019),
+(70482, 0, 0, 42140, 18019),
+(70498, 76492, 0, 76980, 18019),
+(70499, 91088, 0, 0, 18019),
+(70509, 2522, 2522, 33790, 18019),
+(70512, 12182, 0, 0, 18019),
+(70517, 34884, 0, 0, 18019),
+(70520, 24324, 24324, 24326, 18019),
+(70521, 94911, 0, 0, 18019),
+(70529, 94907, 0, 0, 18019),
+(70530, 49734, 0, 0, 18019),
+(70543, 94849, 0, 0, 18019),
+(70544, 94118, 95584, 0, 18019),
+(70551, 40464, 0, 34280, 18019),
+(70552, 42547, 0, 34281, 18019),
+(70557, 94248, 0, 0, 18019),
+(70566, 49156, 0, 0, 18019),
+(70588, 82348, 0, 0, 18019),
+(70605, 0, 0, 46383, 18019),
+(70606, 0, 0, 45937, 18019),
+(70607, 49618, 49617, 45937, 18019),
+(70608, 49618, 49617, 28581, 18019),
+(70609, 0, 0, 47523, 18019),
+(70616, 62484, 13609, 0, 18019),
+(70643, 1910, 0, 0, 18019),
+(70666, 93023, 93024, 0, 18019),
+(70673, 92961, 0, 0, 18019),
+(70677, 2884, 0, 0, 18019),
+(70683, 90865, 0, 0, 18019),
+(70708, 97257, 0, 0, 18019),
+(70709, 14618, 0, 0, 18019),
+(70739, 70217, 70218, 0, 18019),
+(70741, 32246, 0, 0, 18019),
+(70744, 1906, 0, 0, 18019),
+(70746, 1827, 2081, 0, 18019),
+(70762, 1911, 0, 12523, 18019),
+(70775, 3362, 0, 0, 18019),
+(70790, 42759, 0, 0, 18019),
+(70794, 31207, 0, 0, 18019),
+(70798, 91069, 0, 0, 18019),
+(70800, 61969, 0, 61967, 18019),
+(70801, 61969, 0, 61967, 18019),
+(70804, 5301, 0, 0, 18019),
+(70805, 5301, 0, 0, 18019),
+(70810, 5301, 0, 0, 18019),
+(70811, 5301, 0, 0, 18019),
+(70812, 5301, 0, 0, 18019),
+(70823, 4985, 0, 0, 18019),
+(70868, 2184, 2184, 0, 18019),
+(70873, 97457, 97457, 0, 18019),
+(70893, 1911, 0, 12523, 18019),
+(70908, 30647, 0, 0, 18019),
+(70954, 7826, 0, 0, 18019),
+(70955, 7826, 0, 0, 18019),
+(70956, 1911, 0, 0, 18019),
+(70963, 1911, 0, 12523, 18019),
+(70968, 5289, 0, 0, 18019),
+(70971, 57025, 58939, 5262, 18019),
+(70972, 1904, 0, 5262, 18019),
+(70973, 49615, 0, 0, 18019),
+(70984, 12862, 0, 0, 18019),
+(70986, 5289, 0, 0, 18019),
+(70998, 94315, 67460, 0, 18019),
+(70999, 104139, 104147, 0, 18019),
+(71006, 14823, 14818, 0, 18019),
+(71007, 47892, 0, 0, 18019),
+(71008, 89156, 89157, 0, 18019),
+(71010, 47285, 0, 18835, 18019),
+(71012, 1827, 1827, 0, 18019),
+(71025, 0, 0, 48697, 18019),
+(71028, 1906, 0, 0, 18019),
+(71030, 91069, 0, 0, 18019),
+(71037, 82770, 0, 0, 18019),
+(71052, 94650, 0, 0, 18019),
+(71053, 49018, 39926, 0, 18019),
+(71055, 57013, 0, 0, 18019),
+(71064, 81171, 95413, 0, 18019),
+(71065, 14879, 0, 0, 18019),
+(71066, 14823, 14818, 0, 18019),
+(71068, 85947, 0, 0, 18019),
+(71069, 82383, 0, 0, 18019),
+(71076, 82383, 0, 0, 18019),
+(71077, 85947, 0, 0, 18019),
+(71079, 81171, 95413, 0, 18019),
+(71083, 14879, 0, 0, 18019),
+(71084, 7826, 0, 0, 18019),
+(71087, 82770, 0, 0, 18019),
+(71089, 32450, 73425, 0, 18019),
+(71092, 7826, 0, 0, 18019),
+(71093, 7826, 0, 0, 18019),
+(71094, 7826, 0, 0, 18019),
+(71100, 31824, 0, 0, 18019),
+(71101, 41816, 0, 0, 18019),
+(71102, 61297, 61297, 0, 18019),
+(71103, 2884, 0, 0, 18019),
+(71105, 82770, 0, 0, 18019),
+(71108, 82770, 0, 0, 18019),
+(71113, 61969, 0, 97695, 18019),
+(71114, 53108, 2051, 0, 18019),
+(71121, 82770, 0, 0, 18019),
+(71125, 851, 0, 58800, 18019),
+(71131, 94649, 0, 48697, 18019),
+(71149, 56228, 0, 0, 18019),
+(71151, 58367, 0, 0, 18019),
+(71152, 97852, 0, 0, 18019),
+(71153, 0, 0, 97853, 18019),
+(71155, 97855, 97856, 0, 18019),
+(71156, 97851, 0, 0, 18019),
+(71157, 97858, 0, 0, 18019),
+(71158, 97922, 61295, 0, 18019),
+(71161, 97860, 97860, 0, 18019),
+(71172, 13631, 0, 0, 18019),
+(71177, 40534, 40534, 0, 18019),
+(71179, 57012, 0, 0, 18019),
+(71188, 47322, 47448, 0, 18019),
+(71202, 61969, 0, 97695, 18019),
+(71205, 49018, 39926, 0, 18019),
+(71235, 0, 0, 49462, 18019),
+(71244, 91082, 91082, 0, 18019),
+(71245, 94315, 94498, 0, 18019),
+(71247, 3364, 0, 0, 18019),
+(71249, 58367, 0, 0, 18019),
+(71252, 79003, 88557, 0, 18019),
+(71253, 80978, 0, 0, 18019),
+(71254, 85770, 85770, 0, 18019),
+(71255, 88591, 88591, 0, 18019),
+(71256, 85744, 69758, 0, 18019),
+(71257, 95455, 0, 0, 18019),
+(71258, 88738, 88740, 0, 18019),
+(71259, 72275, 72275, 36755, 18019),
+(71267, 3364, 0, 0, 18019),
+(71272, 41816, 0, 0, 18019),
+(71279, 82770, 0, 0, 18019),
+(71281, 57025, 58939, 5262, 18019),
+(71282, 1904, 0, 5262, 18019),
+(71283, 1904, 0, 5262, 18019),
+(71285, 57025, 58939, 5262, 18019),
+(71288, 12786, 39288, 0, 18019),
+(71290, 13631, 0, 0, 18019),
+(71292, 85744, 85744, 0, 18019),
+(71293, 61969, 0, 97695, 18019),
+(71298, 11763, 0, 28023, 18019),
+(71310, 12322, 0, 0, 18019),
+(71312, 3362, 0, 0, 18019),
+(71317, 82770, 0, 0, 18019),
+(71318, 85766, 0, 0, 18019),
+(71319, 1904, 0, 5262, 18019),
+(71320, 9477, 0, 0, 18019),
+(71321, 63255, 0, 0, 18019),
+(71322, 9477, 0, 0, 18019),
+(71326, 54824, 0, 2552, 18019),
+(71327, 54824, 0, 2552, 18019),
+(71328, 1911, 0, 12523, 18019),
+(71329, 1911, 0, 12523, 18019),
+(71330, 1911, 0, 12523, 18019),
+(71340, 13631, 0, 0, 18019),
+(71344, 56228, 0, 0, 18019),
+(71346, 5289, 0, 0, 18019),
+(71349, 851, 0, 58800, 18019),
+(71352, 82770, 0, 0, 18019),
+(71353, 76495, 0, 0, 18019),
+(71355, 9477, 0, 0, 18019),
+(71357, 82770, 0, 0, 18019),
+(71358, 3774, 0, 0, 18019),
+(71360, 94650, 0, 0, 18019),
+(71361, 9477, 0, 0, 18019),
+(71362, 9477, 0, 0, 18019),
+(71363, 63255, 0, 0, 18019),
+(71367, 54824, 0, 2552, 18019),
+(71369, 54880, 0, 0, 18019),
+(71379, 61969, 0, 97695, 18019),
+(71383, 85399, 85399, 0, 18019),
+(71384, 851, 0, 58800, 18019),
+(71386, 12332, 0, 73038, 18019),
+(71387, 82770, 0, 0, 18019),
+(71391, 2092, 0, 0, 18019),
+(71393, 92810, 0, 0, 18019),
+(71397, 85947, 0, 0, 18019),
+(71403, 9477, 0, 0, 18019),
+(71404, 82770, 0, 0, 18019),
+(71405, 85401, 0, 0, 18019),
+(71408, 104285, 95415, 0, 18019),
+(71409, 95073, 95073, 0, 18019),
+(71426, 82770, 0, 0, 18019),
+(71436, 54824, 0, 2552, 18019),
+(71442, 91069, 0, 0, 18019),
+(71445, 54824, 0, 2552, 18019),
+(71451, 0, 0, 49462, 18019),
+(71474, 80125, 0, 0, 18019),
+(71475, 82272, 0, 0, 18019),
+(71476, 59063, 0, 0, 18019),
+(71477, 89282, 90549, 0, 18019),
+(71478, 84776, 84776, 0, 18019),
+(71479, 83071, 83071, 0, 18019),
+(71480, 93638, 0, 0, 18019),
+(71482, 77388, 0, 52692, 18019),
+(71483, 35, 0, 0, 18019),
+(71492, 82347, 0, 0, 18019),
+(71515, 7612, 0, 0, 18019),
+(71516, 73894, 0, 0, 18019),
+(71517, 72484, 0, 0, 18019),
+(71518, 75254, 75254, 0, 18019),
+(71519, 73070, 77402, 0, 18019),
+(71530, 100188, 0, 0, 18019),
+(71589, 1910, 0, 0, 18019),
+(71597, 49615, 0, 0, 18019),
+(71656, 0, 0, 72278, 18019),
+(71658, 75006, 75006, 0, 18019),
+(71698, 54824, 0, 2552, 18019),
+(71699, 1906, 0, 2552, 18019),
+(71715, 5289, 0, 0, 18019),
+(71718, 1910, 0, 0, 18019),
+(71742, 85945, 0, 0, 18019),
+(71746, 13050, 0, 0, 18019),
+(71749, 100944, 0, 0, 18019),
+(71763, 76498, 0, 0, 18019),
+(71770, 73894, 0, 0, 18019),
+(71771, 72484, 0, 0, 18019),
+(71772, 75254, 75254, 0, 18019),
+(71773, 73070, 77402, 0, 18019),
+(71774, 5289, 0, 0, 18019),
+(71833, 82849, 82849, 0, 18019),
+(71834, 82849, 82849, 0, 18019),
+(71835, 33465, 0, 0, 18019),
+(71836, 33465, 0, 0, 18019),
+(71838, 74592, 74592, 0, 18019),
+(71839, 74592, 74592, 0, 18019),
+(71840, 101385, 0, 0, 18019),
+(71841, 94710, 0, 0, 18019),
+(71842, 94710, 0, 0, 18019),
+(71843, 101384, 12981, 0, 18019),
+(71847, 101386, 0, 0, 18019),
+(71851, 101386, 0, 0, 18019),
+(71852, 101387, 0, 0, 18019),
+(71853, 101454, 101390, 0, 18019),
+(71854, 101388, 101390, 0, 18019),
+(71858, 102103, 0, 0, 18019),
+(71859, 101737, 101737, 0, 18019),
+(71861, 101457, 101455, 0, 18019),
+(71862, 101456, 0, 0, 18019),
+(71865, 101441, 0, 0, 18019),
+(71924, 82770, 0, 0, 18019),
+(71931, 14879, 0, 0, 18019),
+(71966, 101487, 101487, 101491, 18019),
+(71968, 101486, 101486, 101483, 18019),
+(71972, 851, 0, 5309, 18019),
+(71979, 97221, 0, 0, 18019),
+(71983, 97816, 103981, 0, 18019),
+(71987, 851, 0, 5309, 18019),
+(71995, 80125, 0, 0, 18019),
+(71996, 82272, 0, 0, 18019),
+(72014, 19357, 0, 0, 18019),
+(72023, 18348, 32375, 0, 18019),
+(72024, 23577, 23014, 0, 18019),
+(72025, 19435, 19308, 0, 18019),
+(72029, 851, 0, 5309, 18019),
+(72032, 851, 0, 5309, 18019),
+(72033, 2711, 0, 0, 18019),
+(72034, 60965, 0, 0, 18019),
+(72048, 2711, 0, 0, 18019),
+(72057, 102574, 0, 0, 18019),
+(72129, 2559, 0, 0, 18019),
+(72130, 3346, 0, 0, 18019),
+(72131, 73894, 0, 0, 18019),
+(72132, 5277, 0, 0, 18019),
+(72139, 12864, 0, 0, 18019),
+(72144, 5277, 0, 0, 18019),
+(72145, 5277, 0, 0, 18019),
+(72150, 57120, 0, 0, 18019),
+(72151, 104200, 0, 0, 18019),
+(72152, 5277, 0, 0, 18019),
+(72153, 5304, 0, 0, 18019),
+(72157, 2199, 0, 0, 18019),
+(72158, 0, 0, 6231, 18019),
+(72159, 5304, 0, 0, 18019),
+(72161, 75266, 0, 0, 18019),
+(72173, 2179, 2711, 0, 18019),
+(72174, 2199, 34717, 0, 18019),
+(72175, 5278, 0, 0, 18019),
+(72177, 2184, 0, 0, 18019),
+(72180, 1900, 5281, 0, 18019),
+(72191, 18419, 0, 0, 18019),
+(72192, 63252, 0, 0, 18019),
+(72218, 83018, 88528, 0, 18019),
+(72219, 85668, 85668, 0, 18019),
+(72220, 0, 0, 89707, 18019),
+(72221, 86612, 0, 0, 18019),
+(72224, 101441, 0, 0, 18019),
+(72248, 57012, 0, 0, 18019),
+(72254, 96906, 96910, 0, 18019),
+(72257, 33598, 0, 0, 18019),
+(72261, 61969, 0, 62504, 18019),
+(72282, 49773, 0, 0, 18019),
+(72298, 67161, 0, 0, 18019),
+(72302, 2177, 12869, 0, 18019),
+(72311, 45899, 45899, 0, 18019),
+(72312, 1899, 143, 0, 18019),
+(72313, 1899, 143, 0, 18019),
+(72315, 1897, 0, 0, 18019),
+(72317, 2147, 2081, 0, 18019),
+(72318, 0, 0, 47014, 18019),
+(72338, 33465, 0, 0, 18019),
+(72339, 33465, 0, 0, 18019),
+(72340, 94710, 0, 0, 18019),
+(72341, 94710, 0, 0, 18019),
+(72342, 85947, 0, 0, 18019),
+(72343, 85947, 0, 0, 18019),
+(72344, 82383, 0, 0, 18019),
+(72346, 82383, 0, 0, 18019),
+(72349, 101441, 0, 0, 18019),
+(72350, 94650, 0, 0, 18019),
+(72351, 56050, 0, 0, 18019),
+(72352, 102454, 102454, 0, 18019),
+(72353, 0, 0, 85762, 18019),
+(72354, 33598, 0, 0, 18019),
+(72355, 41816, 0, 0, 18019),
+(72356, 0, 0, 47883, 18019),
+(72357, 33598, 0, 0, 18019),
+(72365, 102455, 0, 58173, 18019),
+(72366, 13631, 0, 5870, 18019),
+(72367, 55228, 0, 0, 18019),
+(72394, 58367, 0, 0, 18019),
+(72411, 75039, 19487, 0, 18019),
+(72412, 18419, 0, 0, 18019),
+(72421, 49615, 0, 0, 18019),
+(72427, 1903, 0, 0, 18019),
+(72428, 2200, 0, 0, 18019),
+(72429, 2827, 2196, 2551, 18019),
+(72430, 12329, 0, 0, 18019),
+(72432, 10612, 0, 0, 18019),
+(72433, 14824, 0, 0, 18019),
+(72434, 76496, 0, 0, 18019),
+(72440, 87843, 0, 0, 18019),
+(72451, 94315, 94498, 0, 18019),
+(72453, 12890, 1203, 0, 18019),
+(72455, 47516, 0, 0, 18019),
+(72456, 88837, 88837, 0, 18019),
+(72481, 57407, 0, 0, 18019),
+(72483, 2716, 0, 0, 18019),
+(72484, 2703, 0, 0, 18019),
+(72485, 2703, 0, 0, 18019),
+(72486, 2703, 0, 0, 18019),
+(72487, 2703, 0, 0, 18019),
+(72488, 6334, 0, 0, 18019),
+(72489, 0, 0, 2551, 18019),
+(72490, 47516, 0, 0, 18019),
+(72492, 1910, 0, 0, 18019),
+(72493, 12850, 12745, 0, 18019),
+(72496, 47516, 0, 0, 18019),
+(72501, 5289, 0, 2507, 18019),
+(72534, 5286, 6254, 2552, 18019),
+(72535, 82347, 0, 0, 18019),
+(72538, 38134, 38134, 0, 18019),
+(72545, 73894, 0, 0, 18019),
+(72546, 61969, 0, 97695, 18019),
+(72548, 21553, 0, 47014, 18019),
+(72549, 1899, 7188, 47014, 18019),
+(72553, 75266, 0, 0, 18019),
+(72559, 27862, 0, 49462, 18019),
+(72560, 62232, 0, 86538, 18019),
+(72561, 42775, 0, 42775, 18019),
+(72568, 49615, 0, 0, 18019),
+(72570, 5289, 0, 2507, 18019),
+(72572, 94315, 94498, 0, 18019),
+(72579, 35117, 0, 34280, 18019),
+(72581, 35117, 0, 34280, 18019),
+(72584, 1911, 0, 0, 18019),
+(72593, 5491, 0, 0, 18019),
+(72614, 13937, 0, 0, 18019),
+(72619, 32604, 32604, 0, 18019),
+(72620, 32605, 0, 0, 18019),
+(72728, 94649, 0, 0, 18019),
+(72744, 44735, 44735, 0, 18019),
+(72758, 86559, 86558, 0, 18019),
+(72770, 94315, 94498, 0, 18019),
+(72784, 0, 0, 77192, 18019),
+(72787, 89898, 0, 0, 18019),
+(72794, 86559, 86558, 0, 18019),
+(72796, 86559, 86558, 0, 18019),
+(72799, 86559, 86558, 0, 18019),
+(72801, 86559, 86558, 0, 18019),
+(72803, 86559, 86558, 0, 18019),
+(72810, 89149, 0, 0, 18019),
+(72828, 54877, 54878, 0, 18019),
+(72875, 102544, 0, 0, 18019),
+(72892, 76267, 88559, 0, 18019),
+(72893, 1903, 0, 0, 18019),
+(72894, 72482, 0, 0, 18019),
+(72895, 71779, 71779, 0, 18019),
+(72896, 71557, 0, 0, 18019),
+(72897, 71355, 0, 0, 18019),
+(72898, 32946, 32945, 0, 18019),
+(72929, 85937, 0, 0, 18019),
+(72939, 3361, 0, 0, 18019),
+(72941, 94650, 0, 0, 18019),
+(72942, 56050, 0, 0, 18019),
+(72944, 56912, 2081, 0, 18019),
+(72945, 33598, 0, 0, 18019),
+(72954, 82849, 82849, 0, 18019),
+(72956, 57012, 0, 0, 18019),
+(72958, 55228, 0, 0, 18019),
+(72981, 102046, 0, 0, 18019),
+(72988, 80266, 80266, 0, 18019),
+(72989, 2023, 0, 76980, 18019),
+(72992, 80269, 80269, 0, 18019),
+(72993, 79718, 0, 0, 18019),
+(72994, 57114, 72982, 0, 18019),
+(72995, 69843, 0, 0, 18019),
+(72996, 80279, 0, 0, 18019),
+(72997, 80281, 0, 0, 18019),
+(73000, 80274, 73458, 0, 18019),
+(73003, 79716, 0, 0, 18019),
+(73008, 79275, 0, 0, 18019),
+(73010, 1906, 0, 0, 18019),
+(73012, 84677, 84677, 0, 18019),
+(73016, 77359, 0, 0, 18019),
+(73017, 82383, 0, 0, 18019),
+(73029, 61354, 0, 0, 18019),
+(73061, 12748, 0, 0, 18019),
+(73081, 101441, 0, 0, 18019),
+(73091, 57006, 56141, 0, 18019),
+(73098, 94649, 0, 0, 18019),
+(73103, 101441, 0, 0, 18019),
+(73120, 13631, 0, 5870, 18019),
+(73122, 13631, 0, 5870, 18019),
+(73133, 92961, 0, 0, 18019),
+(73135, 80123, 0, 0, 18019),
+(73151, 100541, 0, 0, 18019),
+(73152, 76289, 76289, 0, 18019),
+(73153, 76723, 0, 0, 18019),
+(73155, 69805, 0, 0, 18019),
+(73169, 75006, 74679, 0, 18019),
+(73170, 72257, 0, 0, 18019),
+(73171, 71778, 71778, 0, 18019),
+(73172, 71780, 0, 0, 18019),
+(73173, 71615, 0, 0, 18019),
+(73174, 71360, 0, 0, 18019),
+(73190, 100229, 0, 0, 18019),
+(73195, 75006, 75006, 0, 18019),
+(73213, 0, 0, 42775, 18019),
+(73250, 0, 0, 38177, 18019),
+(73266, 75213, 0, 0, 18019),
+(73267, 101386, 0, 0, 18019),
+(73271, 0, 72586, 0, 18019),
+(73293, 101386, 0, 0, 18019),
+(73307, 71777, 0, 0, 18019),
+(73328, 52009, 0, 0, 18019),
+(73338, 92961, 0, 0, 18019),
+(73342, 82382, 0, 0, 18019),
+(73343, 88857, 0, 89875, 18019),
+(73347, 88846, 0, 89875, 18019),
+(73348, 103978, 0, 0, 18019),
+(73349, 82384, 0, 0, 18019),
+(73353, 103980, 103979, 0, 18019),
+(73361, 88857, 0, 89875, 18019),
+(73362, 88857, 0, 89875, 18019),
+(73385, 88857, 0, 89875, 18019),
+(73386, 88857, 0, 89875, 18019),
+(73401, 45630, 0, 0, 18019),
+(73403, 45630, 0, 0, 18019),
+(73414, 88792, 0, 0, 18019),
+(73434, 0, 62231, 0, 18019),
+(73452, 101671, 0, 0, 18019),
+(73462, 101441, 0, 0, 18019),
+(73481, 104045, 0, 0, 18019),
+(73483, 56228, 0, 0, 18019),
+(73484, 33791, 6320, 0, 18019),
+(73497, 50248, 104093, 0, 18019),
+(73498, 62032, 62032, 0, 18019),
+(73499, 104094, 0, 0, 18019),
+(73500, 104094, 0, 0, 18019),
+(73502, 104095, 104096, 0, 18019),
+(73508, 97695, 0, 61967, 18019),
+(73509, 47034, 0, 0, 18019),
+(73511, 104098, 43092, 0, 18019),
+(73530, 94650, 0, 0, 18019),
+(73547, 90030, 0, 0, 18019),
+(73554, 2177, 12869, 0, 18019),
+(73558, 45899, 0, 0, 18019),
+(73561, 5286, 6254, 2552, 18019),
+(73562, 1899, 7188, 47014, 18019),
+(73563, 2078, 60930, 47014, 18019),
+(73564, 1911, 0, 0, 18019),
+(73570, 101386, 0, 0, 18019),
+(73584, 85668, 0, 0, 18019),
+(73586, 0, 0, 16004, 18019),
+(73587, 61620, 0, 0, 18019),
+(73588, 2078, 10195, 0, 18019),
+(73590, 47285, 0, 18835, 18019),
+(73592, 45899, 0, 0, 18019),
+(73600, 1899, 143, 2551, 18019),
+(73602, 5289, 0, 0, 18019),
+(73606, 0, 0, 42775, 18019),
+(73613, 2714, 0, 0, 18019),
+(73614, 1903, 0, 0, 18019),
+(73615, 12868, 0, 0, 18019),
+(73618, 79717, 0, 0, 18019),
+(73648, 80580, 0, 0, 18019),
+(73649, 2827, 0, 0, 18019),
+(73650, 80580, 0, 0, 18019),
+(73651, 80580, 0, 0, 18019),
+(73656, 81677, 81680, 0, 18019),
+(73657, 2827, 0, 0, 18019),
+(73659, 0, 0, 77192, 18019),
+(73660, 94649, 0, 0, 18019),
+(73666, 71360, 0, 0, 18019),
+(73667, 85401, 0, 0, 18019),
+(73668, 94255, 94254, 0, 18019),
+(73670, 85949, 85949, 0, 18019),
+(73674, 101613, 101613, 0, 18019),
+(73703, 851, 851, 0, 18019),
+(73704, 851, 0, 5309, 18019),
+(73709, 14085, 0, 0, 18019),
+(73710, 58367, 0, 0, 18019),
+(73711, 0, 0, 61354, 18019),
+(73712, 35014, 73425, 0, 18019),
+(73713, 90010, 0, 0, 18019),
+(73714, 57021, 57021, 0, 18019),
+(73715, 1903, 0, 0, 18019),
+(73716, 21580, 0, 0, 18019),
+(73718, 2763, 0, 5309, 18019),
+(73723, 86560, 0, 0, 18019),
+(73724, 104283, 104283, 0, 18019),
+(73725, 104284, 0, 0, 18019),
+(73726, 82883, 6599, 0, 18019),
+(73727, 0, 0, 31000, 18019),
+(73728, 82883, 6599, 0, 18019),
+(73731, 90030, 0, 0, 18019),
+(73733, 71780, 0, 0, 18019),
+(73739, 851, 0, 5309, 18019),
+(73740, 851, 0, 5309, 18019),
+(73741, 2695, 0, 0, 18019),
+(73745, 44735, 59744, 0, 18019),
+(73760, 851, 0, 0, 18019),
+(73775, 65036, 43843, 0, 18019),
+(73811, 1910, 0, 0, 18019),
+(73812, 93648, 0, 0, 18019),
+(73817, 25646, 0, 0, 18019),
+(73850, 22394, 0, 0, 18019),
+(73855, 3740, 65713, 0, 18019),
+(73858, 13047, 0, 0, 18019),
+(73859, 3740, 65713, 0, 18019),
+(73860, 6219, 0, 0, 18019),
+(73871, 3368, 69627, 0, 18019),
+(73874, 3368, 69627, 0, 18019),
+(73887, 96619, 0, 0, 18019),
+(73889, 17743, 0, 0, 18019),
+(73893, 81547, 0, 0, 18019),
+(73898, 45123, 0, 0, 18019),
+(73900, 4089, 0, 4089, 18019),
+(73902, 25249, 0, 36636, 18019),
+(73903, 0, 0, 29010, 18019),
+(73904, 44735, 59744, 0, 18019),
+(73908, 3740, 65713, 0, 18019),
+(73909, 35781, 0, 0, 18019),
+(73910, 42140, 0, 42140, 18019),
+(73913, 79719, 0, 0, 18019),
+(73914, 79719, 0, 0, 18019),
+(73927, 53096, 11587, 0, 18019),
+(73929, 0, 0, 59599, 18019),
+(73939, 7612, 0, 0, 18019),
+(73941, 58367, 0, 0, 18019),
+(73942, 14085, 0, 0, 18019),
+(73948, 89910, 0, 0, 18019),
+(73949, 104410, 0, 0, 18019),
+(73951, 85399, 0, 0, 18019),
+(73958, 7612, 0, 0, 18019),
+(73959, 57012, 0, 0, 18019),
+(73962, 0, 0, 77364, 18019),
+(73963, 5599, 0, 0, 18019),
+(73964, 18419, 0, 0, 18019),
+(74091, 44735, 59744, 0, 18019),
+(74099, 1903, 0, 0, 18019),
+(74158, 0, 0, 77192, 18019),
+(74217, 53096, 11587, 0, 18019),
+(74218, 5286, 6254, 0, 18019),
+(74219, 5598, 0, 2550, 18019),
+(77440, 102984, 0, 0, 18019);
diff --git a/sql/updates/world/2015_05_02_05_world.sql b/sql/updates/world/2015_05_02_05_world.sql
new file mode 100644
index 00000000000..b62b508b988
--- /dev/null
+++ b/sql/updates/world/2015_05_02_05_world.sql
@@ -0,0 +1 @@
+UPDATE `command` SET `permission`=834 WHERE `name`='go quest';
diff --git a/sql/updates/world/2015_05_02_06_world.sql b/sql/updates/world/2015_05_02_06_world.sql
new file mode 100644
index 00000000000..090e2d3a4e6
--- /dev/null
+++ b/sql/updates/world/2015_05_02_06_world.sql
@@ -0,0 +1,6 @@
+ALTER TABLE `battleground_template`
+ CHANGE `id` `ID` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
+ DROP COLUMN `AllianceStartO`,
+ DROP COLUMN `HordeStartO`;
+
+UPDATE `battleground_template` SET `AllianceStartLoc`=1299, `HordeStartLoc`=1245 WHERE `ID`=30;
diff --git a/sql/updates/world/2015_05_02_07_world.sql b/sql/updates/world/2015_05_02_07_world.sql
new file mode 100644
index 00000000000..9d636c2e740
--- /dev/null
+++ b/sql/updates/world/2015_05_02_07_world.sql
@@ -0,0 +1,45 @@
+UPDATE `game_tele` SET `name`='PlainOfThieves' WHERE `id`=1574;
+
+UPDATE `areatrigger_teleport` SET `Name`='Jade Temple - Exit Target' WHERE `ID`=7687;
+UPDATE `areatrigger_teleport` SET `Name`='Jade Temple - Entrance Target' WHERE `ID`=7854;
+UPDATE `areatrigger_teleport` SET `Name`='Shadowpan Hideout - Exit Target' WHERE `ID`=7699;
+UPDATE `areatrigger_teleport` SET `Name`='Shadowpan Hideout - Entrance Target' WHERE `ID`=7694;
+UPDATE `areatrigger_teleport` SET `PortLocID`=4353, `Name`='Mantid Siege - Entrance Target' WHERE `ID`=8315;
+UPDATE `areatrigger_teleport` SET `Name`='Mantid Siege - Exit Target' WHERE `ID`=8312;
+
+
+DELETE FROM `areatrigger_teleport` WHERE `ID` IN (1468, 1470, 4352, 5530, 7838, 7999, 8001, 8027, 8314, 9245, 9302, 9303, 9681, 9680, 9964, 9965, 10022, 10023, 10097, 10098, 10104, 10124, 10205, 10232, 10237, 10241, 10242, 10244, 10272, 10273);
+INSERT INTO `areatrigger_teleport` (`ID`, `PortLocID`, `Name`) VALUES
+-- to be completed when these instances can be entered
+-- (, 4093, 'Mogu''shan Vaults - Exit Target'),
+-- (, 4145, 'Terrace of Endless Spring - Exit Target'),
+-- (, 4351, 'Heart of Fear - Exit Target'),
+-- (, 4573, 'Garrosh Raid - Exit Target'),
+(1468, 4501, 'Upper Blackrock Spire Entrance Target'),
+(5530, 3918, 'Isle of Conquest - Lighthouse Target'),
+(7838, 4094, 'Mogu''shan Vaults - Entrance Target'),
+(7999, 4139, 'Ring of Valor - Entrance Target'),
+(8001, 4140, 'Ring of Valor - Exit Target'),
+(8314, 4350, 'Heart of Fear - Entrance Target'),
+(9245, 4572, 'Garrosh Raid - Entrance Target'),
+(9302, 4613, 'Gold Rush BG - Pandaren Mine Catch'),
+(9303, 4614, 'Gold Rush BG - Goblin Mine Catch'),
+(9681, 4661, 'Bloodmaul Slave Mines - Entrance'),
+(9680, 4662, 'Bloodmaul Slave Mines - Exit'),
+(8027, 4144, 'Terrace of Endless Spring - Entrance Target'),
+(9964, 4683, 'Auchindoun Dungeon 6.0 - Entrance'),
+(9965, 4722, 'Auchindoun Dungeon 6.0 - Exit'),
+(10022, 4774, 'Shadowmoon Dungeon - Exit Target (Outside)'),
+(10023, 4713, 'Shadowmoon Dungeon - Entrance Target (Inside)'),
+(10097, 4823, 'Iron Docks - Exit Target (Outside)'),
+(10098, 4680, 'Iron Docks - Entrance Target (Inside)'),
+(10104, 4831, 'Blackrock Train Depot - Exit Target - KJD'),
+(10124, 3644, 'Lower Blackrock Spire Entrance Target'),
+(10205, 3645, 'Blackrock Spire Exit Target (New)'),
+(10232, 4831, 'Blackrock Train Depot - Exit Target - KJD'),
+(10237, 4712, 'Blackrock Train Depot - Entrance Target - KJD'),
+(10241, 4778, 'Foundry Raid - Graveyard - Entrance'),
+(10242, 4842, 'Gorgrond - Outside Foundry'),
+(10244, 4856, 'Overgrown Outpost - Entrance Target'),
+(10272, 4779, 'Highmaul Raid - Instance Entrance'),
+(10273, 4920, 'Lower Blackrock Spire - Exit Teleport');
diff --git a/sql/updates/world/2015_05_02_08_world.sql b/sql/updates/world/2015_05_02_08_world.sql
new file mode 100644
index 00000000000..8ffd155b7ae
--- /dev/null
+++ b/sql/updates/world/2015_05_02_08_world.sql
@@ -0,0 +1,16 @@
+SET @CGUID := 370837;
+SET @OGUID := 233411;
+
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+3;
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+0, 19007, 530, 1, -278.1424, 936.0903, 84.46306, 5.337643, 120, 0, 0),
+(@CGUID+1, 19007, 530, 1, -272.0104, 926.9375, 84.46307, 2.178597, 120, 0, 0),
+(@CGUID+2, 19006, 530, 1, -217.7188, 934.5504, 84.46307, 4.108852, 120, 0, 0),
+(@CGUID+3, 19006, 530, 1, -225.4236, 926.5052, 84.46307, 0.722914, 120, 0, 0);
+
+DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+1;
+INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES
+(@OGUID+0, 195139, 530, 1, -274.9913, 931.8889, 84.37974, 0.2412808, 0, 0, 0, 1, 120, 255, 1),
+(@OGUID+1, 195140, 530, 1, -221.974, 931.4427, 84.37974, 2.276257, 0, 0, 0, 1, 120, 255, 1);
+
+UPDATE `creature_template_addon` SET `auras`='32783' WHERE `entry` IN (19006, 19007);
diff --git a/sql/updates/world/2015_05_03_00_world.sql b/sql/updates/world/2015_05_03_00_world.sql
new file mode 100644
index 00000000000..a8aa643fe0e
--- /dev/null
+++ b/sql/updates/world/2015_05_03_00_world.sql
@@ -0,0 +1,10 @@
+DELETE FROM `areatrigger_teleport` WHERE `ID` IN (2068, 3606, 4901, 4909, 4953, 5254, 5493, 5495);
+INSERT INTO `areatrigger_teleport` (`ID`, `PortLocID`, `Name`) VALUES
+(2068, 3647, 'Blackrock Spire - Target - Shaft'),
+(3606, 3697, 'Molten Core Entrance Target'),
+(4901, 3797, 'Clayton Teleporter'),
+(4909, 3798, 'TEST - CSteele Teleporter Target'),
+(4953, 3818, 'Scott Test Target'),
+(5254, 3877, 'Teleport to Reliquary of Agony (Target)'),
+(5493, 3912, 'Mini House Target'),
+(5495, 3913, 'Mega House Target');
diff --git a/sql/updates/world/2015_05_04_00_world.sql b/sql/updates/world/2015_05_04_00_world.sql
new file mode 100644
index 00000000000..276464917a1
--- /dev/null
+++ b/sql/updates/world/2015_05_04_00_world.sql
@@ -0,0 +1,8 @@
+ALTER TABLE `creature` CHANGE `npcflag` `npcflag` bigint(20) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `creature_template` CHANGE `npcflag` `npcflag` bigint(20) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `game_event_npcflag` CHANGE `npcflag` `npcflag` bigint(20) unsigned NOT NULL DEFAULT '0';
+ALTER TABLE `gossip_menu_option` CHANGE `npc_option_npcflag` `npc_option_npcflag` bigint(20) unsigned NOT NULL DEFAULT '0';
+
+UPDATE `trinity_string` SET `content_default`='Player selected NPC\nDB GUID: %u, current %s.\nFaction: %u.\nnpcFlags: 0x%llX.\nEntry: %u.\nDisplayID: %u (Native: %u).' WHERE entry=539;
+UPDATE `trinity_string` SET `content_default`='%s, faction is %u, flags is 0x%X, npcflag is 0x%llX, dynflag is 0x%X.' WHERE entry=128;
+UPDATE `trinity_string` SET `content_default`='You changed %s Faction to %u, flags to 0x%X, npcflag to 0x%llX, dyflag to 0x%X.' WHERE entry=130;
diff --git a/sql/updates/world/2015_05_09_00_world.sql b/sql/updates/world/2015_05_09_00_world.sql
new file mode 100644
index 00000000000..0d8db7d7af2
--- /dev/null
+++ b/sql/updates/world/2015_05_09_00_world.sql
@@ -0,0 +1,422 @@
+SET @CGUID := 370841;
+SET @OGUID := 233413;
+
+
+DELETE FROM `creature` WHERE `map`=369;
+DELETE FROM `gameobject` WHERE `map`=369;
+
+UPDATE `gameobject_template` SET `flags`=32 WHERE `entry` IN (236744 /*-Unknown-*/, 233537 /*-Unknown-*/, 233540 /*-Unknown-*/, 233541 /*-Unknown-*/, 233542 /*-Unknown-*/, 233543 /*-Unknown-*/, 233544 /*-Unknown-*/, 233545 /*-Unknown-*/, 233546 /*-Unknown-*/, 233547 /*-Unknown-*/, 233548 /*-Unknown-*/, 234678 /*-Unknown-*/, 232509 /*-Unknown-*/, 236440 /*-Unknown-*/, 235373 /*-Unknown-*/, 224799 /*-Unknown-*/, 224806 /*-Unknown-*/, 234303 /*-Unknown-*/, 235990 /*-Unknown-*/, 230987 /*-Unknown-*/, 230476 /*-Unknown-*/, 237721 /*-Unknown-*/, 230486 /*-Unknown-*/, 225540 /*-Unknown-*/);
+UPDATE `gameobject_template` SET `faction`=114 WHERE `entry` IN (220087 /*Book Stack*/, 218224 /*Doodad_GnomeSign_Engineer01*/, 218225 /*Doodad_DwarfSign_Alchemist01*/, 218226 /*Doodad_DwarfSign_Fireworks01*/);
+UPDATE `gameobject_template` SET `flags`=48 WHERE `entry`=237407; -- -Unknown-
+UPDATE `gameobject_template` SET `flags`=4 WHERE `entry`=230865; -- -Unknown-
+UPDATE `gameobject_template` SET `faction`=94 WHERE `entry` IN (232542 /*-Unknown-*/, 232544 /*-Unknown-*/);
+
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+110;
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+0, 59481, 369, 1, -111.592, 2497.691, -49.03749, 3.245147, 7200, 0, 0), -- World Trigger (Area: Deeprun Tram)
+(@CGUID+1, 59481, 369, 1, -123.015, 2486.45, -49.03749, 1.610651, 7200, 0, 0), -- World Trigger (Area: Deeprun Tram)
+(@CGUID+2, 59481, 369, 1, -112.0902, 2502.644, -49.03749, 3.245147, 7200, 0, 0), -- World Trigger (Area: Deeprun Tram)
+(@CGUID+3, 66305, 369, 1, -120.93, 2499.215, -42.5099, 4.981629, 7200, 0, 0), -- Generic Bunny - PRK (Gigantic AOI) (Area: Deeprun Tram) (Auras: 131338 - Brawl Sound - Alliance, Fight (DNT))
+(@CGUID+4, 59481, 369, 1, -117.2557, 2488.732, -49.03749, 1.610651, 7200, 0, 0), -- World Trigger (Area: Deeprun Tram)
+(@CGUID+5, 13018, 369, 1, -19.66991, 2459.451, -4.297698, 4.315197, 7200, 0, 0), -- Nipsy (Area: Deeprun Tram)
+(@CGUID+6, 59481, 369, 1, -122.51, 2512.107, -49.03749, 1.610651, 7200, 0, 0), -- World Trigger (Area: Deeprun Tram)
+(@CGUID+7, 59481, 369, 1, -113.6001, 2492.852, -49.03749, 1.610651, 7200, 0, 0), -- World Trigger (Area: Deeprun Tram)
+(@CGUID+8, 68952, 369, 1, -11.66637, 2460.222, -13.67119, 0, 7200, 0, 0), -- Bizmo's Brawlpub Entrance (Area: Deeprun Tram)
+(@CGUID+9, 59481, 369, 1, -117.462, 2510.872, -49.03749, 1.610651, 7200, 0, 0), -- World Trigger (Area: Deeprun Tram)
+(@CGUID+10, 59481, 369, 1, -113.6244, 2507.23, -49.03749, 1.610651, 7200, 0, 0), -- World Trigger (Area: Deeprun Tram)
+(@CGUID+11, 59481, 369, 1, -128.5394, 2511.586, -49.03749, 1.610651, 7200, 0, 0), -- World Trigger (Area: Deeprun Tram)
+(@CGUID+12, 59481, 369, 1, -128.2716, 2486.095, -49.03749, 1.610651, 7200, 0, 0), -- World Trigger (Area: Deeprun Tram)
+(@CGUID+13, 68801, 369, 1, -72.61393, 2484.34, -42.56921, 2.688661, 7200, 0, 0), -- Flora (Area: Deeprun Tram)
+(@CGUID+14, 68798, 369, 1, -74.73705, 2488.276, -42.56943, 4.384407, 7200, 0, 0), -- Verah "Violet" Bustle (Area: Deeprun Tram)
+(@CGUID+15, 68408, 369, 1, -79.87337, 2456.72, -43.02885, 6.074724, 7200, 0, 0), -- Bizmo's Brawlpub Bouncer (Area: Deeprun Tram)
+(@CGUID+16, 68363, 369, 1, -80.62134, 2493.143, -43.04583, 3.141518, 7200, 0, 0), -- Quackenbush (Area: Deeprun Tram)
+(@CGUID+17, 68408, 369, 1, -79.48066, 2462.06, -43.04464, 0.006766027, 7200, 0, 0), -- Bizmo's Brawlpub Bouncer (Area: Deeprun Tram)
+(@CGUID+18, 68963, 369, 1, -69.9504, 2531.353, -43.03644, 4.470451, 7200, 0, 0), -- Boom Room Bouncer (Area: Deeprun Tram) (Auras: 134909 - Guard Area Trigger)
+(@CGUID+19, 68537, 369, 1, -77.59014, 2474.093, -42.57321, 5.390444, 7200, 0, 0), -- Keith "The Party" Westin (Area: Deeprun Tram) (Auras: 135041 - Wearing Glasses)
+(@CGUID+20, 68540, 369, 1, -92.56053, 2501.646, -43.0263, 3.215507, 7200, 0, 0), -- Twix Gearspark (Area: Deeprun Tram) (Auras: 135038 - Wearing A Rose)
+(@CGUID+21, 70752, 369, 1, -80.73928, 2496.621, -43.04459, 3.155379, 7200, 0, 0), -- Card Trader Leila (Area: Deeprun Tram)
+(@CGUID+22, 68408, 369, 1, -80.53696, 2503.729, -43.04551, 3.495188, 7200, 0, 0), -- Bizmo's Brawlpub Bouncer (Area: Deeprun Tram) (Auras: 134909 - Guard Area Trigger)
+(@CGUID+23, 68408, 369, 1, -92.82359, 2478.773, -43.02393, 5.454063, 7200, 0, 0), -- Bizmo's Brawlpub Bouncer (Area: Deeprun Tram) (Auras: 134909 - Guard Area Trigger)
+(@CGUID+24, 68442, 369, 1, -185.4213, 2403.296, -19.29758, 1.549658, 7200, 0, 0), -- Subway Car (Area: Deeprun Tram) (Auras: 46598 - Ride Vehicle Hardcoded) (possible waypoints or random movement)
+(@CGUID+25, 68994, 369, 1, -92.15841, 2508.988, -43.02711, 3.417215, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+26, 68442, 369, 1, -185.9497, 2378.302, -19.29758, 1.549658, 7200, 0, 0), -- Subway Car (Area: Deeprun Tram) (Auras: 46598 - Ride Vehicle Hardcoded) (possible waypoints or random movement)
+(@CGUID+27, 68803, 369, 1, -77.40304, 2527.581, -43.14859, 1.466077, 7200, 0, 0), -- Willow Cloudstep (Area: Deeprun Tram)
+(@CGUID+28, 68406, 369, 1, -90.78221, 2510.052, -43.02958, 3.444857, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+29, 68994, 369, 1, -91.88435, 2507.1, -43.02748, 3.360122, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+30, 68434, 369, 1, -184.8929, 2428.29, -19.29758, 1.549658, 7200, 0, 0), -- Subway Car (Area: Deeprun Tram) (Auras: )
+(@CGUID+31, 68963, 369, 1, -77.38558, 2531.209, -43.06725, 4.655104, 7200, 0, 0), -- Boom Room Bouncer (Area: Deeprun Tram) (Auras: 134909 - Guard Area Trigger)
+(@CGUID+32, 73645, 369, 1, -100.9014, 2521.038, -43.00908, 4.456221, 7200, 0, 0), -- Mochi (Area: Deeprun Tram)
+(@CGUID+33, 73642, 369, 1, -101.7706, 2521.221, -43.01014, 4.267982, 7200, 0, 0), -- Carman Cheung (Area: Deeprun Tram)
+(@CGUID+34, 68323, 369, 1, -100.3051, 2500.025, -38.27213, 4.704797, 7200, 0, 0), -- Bizmo (Area: Deeprun Tram) (Auras: 134727 - Announcer Control Aura) (possible waypoints or random movement)
+(@CGUID+35, 68994, 369, 1, -98.8081, 2528.282, -30.94316, 4.794365, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+36, 68994, 369, 1, -92.28378, 2495.343, -43.02649, 2.885064, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+37, 68408, 369, 1, -92.80369, 2520.167, -43.02577, 0.9440587, 7200, 0, 0), -- Bizmo's Brawlpub Bouncer (Area: Deeprun Tram) (Auras: 134909 - Guard Area Trigger)
+(@CGUID+38, 68408, 369, 1, -105.0908, 2536.745, -29.50906, 3.152398, 7200, 0, 0), -- Bizmo's Brawlpub Bouncer (Area: Deeprun Tram) (Auras: 134909 - Guard Area Trigger)
+(@CGUID+39, 68405, 369, 1, -92.70891, 2513.377, -41.73821, 3.517262, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+40, 68992, 369, 1, -97.60636, 2521.3, -43.0251, 4.362116, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+41, 73646, 369, 1, -110.409, 2521.234, -43.09079, 3.983943, 7200, 0, 0), -- Mugen (Area: Deeprun Tram)
+(@CGUID+42, 68994, 369, 1, -114.8847, 2528.314, -30.94316, 4.794365, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+43, 70722, 369, 1, -115.9391, 2548.06, -29.42094, 5.008683, 7200, 0, 0), -- Grant Lazarby (Area: Deeprun Tram)
+(@CGUID+44, 68406, 369, 1, -104.7996, 2478.275, -43.02339, 1.905591, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+45, 70354, 369, 1, -111.4123, 2521.159, -43.00659, 4.784949, 7200, 0, 0), -- Stabby Joe (Area: Deeprun Tram)
+(@CGUID+46, 68992, 369, 1, -107.2923, 2477.497, -41.59616, 1.724435, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+47, 68405, 369, 1, -115.9377, 2528.296, -30.94316, 4.794365, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+48, 68768, 369, 1, -107.1775, 2469.11, -43.02339, 4.816863, 7200, 0, 0), -- "Numbers" Pfeiffer (Area: Deeprun Tram)
+(@CGUID+49, 68541, 369, 1, -108.9182, 2465.788, -41.7275, 1.688493, 7200, 0, 0), -- "To Catch A Spy" - Controller Bunny (Area: Deeprun Tram)
+(@CGUID+50, 68992, 369, 1, -111.289, 2478.452, -43.02339, 1.660031, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+51, 68526, 369, 1, -107.7167, 2464.034, -43.02339, 1.513651, 7200, 0, 0), -- Barkeep Townsley (Area: Deeprun Tram)
+(@CGUID+52, 68405, 369, 1, -115.428, 2476.831, -43.02339, 1.412076, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram) (possible waypoints or random movement)
+(@CGUID+53, 67559, 369, 1, -120.3602, 2498.904, -49.03749, 1.610651, 7200, 0, 0), -- Center of Arena (Area: Deeprun Tram)
+(@CGUID+54, 68792, 369, 1, -117.8844, 2525.327, -43.0252, 0, 7200, 0, 0), -- Lidiya Peyton (Area: Deeprun Tram)
+(@CGUID+55, 41200, 369, 1, -122.3594, 2499.679, -49.02588, 6.281145, 7200, 0, 0), -- Generic Bunny - PRK (Area: Deeprun Tram)
+(@CGUID+56, 68406, 369, 1, -123.4395, 2476.39, -43.02323, 1.289963, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+57, 68992, 369, 1, -128.1297, 2522.312, -43.0252, 4.925224, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+58, 70719, 369, 1, -129.2251, 2546.816, -28.64184, 4.700079, 7200, 0, 0), -- Mozzle Gearbeer (Area: Deeprun Tram)
+(@CGUID+59, 68408, 369, 1, -119.6542, 2543.874, -29.51023, 4.66066, 7200, 0, 0), -- Bizmo's Brawlpub Bouncer (Area: Deeprun Tram) (Auras: 134909 - Guard Area Trigger)
+(@CGUID+60, 68535, 369, 1, -124.0146, 2470.271, -43.02339, 4.654057, 7200, 0, 0), -- Zoe Mae (Area: Deeprun Tram)
+(@CGUID+61, 68799, 369, 1, -133.157, 2522.6, -43.1086, 5.253441, 7200, 0, 0), -- Sniffy Pete (Area: Deeprun Tram)
+(@CGUID+62, 70721, 369, 1, -138.4244, 2531.526, -29.42594, 5.201118, 7200, 0, 0), -- Auriella Giggysprock (Area: Deeprun Tram)
+(@CGUID+63, 70723, 369, 1, -138.8784, 2553.276, -29.51023, 1.654117, 7200, 0, 0), -- Dame Jesepha (Area: Deeprun Tram)
+(@CGUID+64, 68408, 369, 1, -140.8107, 2543.777, -29.51023, 4.763262, 7200, 0, 0), -- Bizmo's Brawlpub Bouncer (Area: Deeprun Tram) (Auras: 134909 - Guard Area Trigger)
+(@CGUID+65, 68406, 369, 1, -147.5056, 2530.823, -29.45766, 5.258637, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+66, 68539, 369, 1, -123.2527, 2468.814, -43.02339, 4.693232, 7200, 0, 0), -- Tasha Windpaw (Area: Deeprun Tram) (Auras: 135042 - Wearing A Silly Hat)
+(@CGUID+67, 68992, 369, 1, -135.8501, 2520.722, -43.02504, 4.998402, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+68, 70720, 369, 1, -140.3198, 2531.583, -29.43665, 5.252556, 7200, 0, 0), -- Kreeg O'Lalley (Area: Deeprun Tram)
+(@CGUID+69, 68406, 369, 1, -135.3807, 2478.33, -41.82138, 0.4567683, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+70, 68405, 369, 1, -137.7543, 2476.543, -43.02323, 0.8270133, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+71, 68992, 369, 1, -147.7791, 2492.552, -43.12021, 0.06981317, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+72, 68405, 369, 1, -148.0988, 2486.217, -43.09425, 0.4335296, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+73, 68408, 369, 1, -146.7061, 2520.218, -43.04026, 2.367301, 7200, 0, 0), -- Bizmo's Brawlpub Bouncer (Area: Deeprun Tram) (Auras: 134909 - Guard Area Trigger)
+(@CGUID+74, 68994, 369, 1, -147.2167, 2488.962, -43.06815, 0.3635806, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+75, 68406, 369, 1, -147.3227, 2512.465, -43.07458, 6.069045, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+76, 68994, 369, 1, -147.2851, 2491.248, -43.07172, 0.2907128, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+77, 68406, 369, 1, -147.6912, 2490.127, -43.09228, 0.3222111, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+78, 68796, 369, 1, -133.553, 2465.56, -43.10672, 0.07545592, 7200, 0, 0), -- Brom Ironboot (Area: Deeprun Tram) (Auras: 32951 - Sleeping Sleep)
+(@CGUID+79, 68797, 369, 1, -134.0696, 2467.511, -43.10672, 0.1178655, 7200, 0, 0), -- Babby Ironboot (Area: Deeprun Tram) (Auras: 32951 - Sleeping Sleep) (possible waypoints or random movement)
+(@CGUID+80, 68408, 369, 1, -146.3822, 2478.488, -43.02087, 4.011124, 7200, 0, 0), -- Bizmo's Brawlpub Bouncer (Area: Deeprun Tram) (Auras: 134909 - Guard Area Trigger)
+(@CGUID+81, 68764, 369, 1, -146.3028, 2529.885, -43.02577, 4.902921, 7200, 0, 0), -- Willard "Bubbles" Wilcox (Area: Deeprun Tram)
+(@CGUID+82, 68406, 369, 1, -146.6423, 2475.746, -43.10672, 5.603979, 7200, 0, 0), -- Brawl Enthusiast (Area: Deeprun Tram)
+(@CGUID+83, 64367, 369, 1, -121.3079, 2499.617, -51.52943, 0, 7200, 0, 0), -- Invisible Man (Area: Bizmo's Brawlpub)
+(@CGUID+84, 10942, 369, 1, 75.55157, 1339.963, -117.9171, 1.745329, 7200, 0, 0), -- Nessy (Area: 0) (Auras: 3417 - Thrash)
+(@CGUID+85, 5186, 369, 1, -112.5415, 1154.451, -119.3451, 1.842971, 7200, 0, 0), -- Basking Shark (Area: 0)
+(@CGUID+86, 10956, 369, 1, 49.28621, 1190.869, -121.3143, 5.759336, 7200, 0, 0), -- Naga Siren (Area: 0) (possible waypoints or random movement)
+(@CGUID+87, 12997, 369, 1, -19.63116, 40.07523, -4.297364, 4.799655, 7200, 0, 0), -- Monty (Area: 0)
+(@CGUID+88, 13016, 369, 1, -72.91493, 28.83738, -4.295185, 4.817047, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+89, 13016, 369, 1, -48.21173, 83.58146, -13.86341, 4.895867, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+90, 13016, 369, 1, -74.56241, 26.27987, -4.296764, 1.524805, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+91, 13016, 369, 1, -64.81646, 9.109329, -4.298093, 2.861342, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+92, 13016, 369, 1, -46.58396, 50.17245, -13.86341, 1.715754, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+93, 13016, 369, 1, -57.21196, -21.82399, -4.297354, 5.160522, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+94, 13016, 369, 1, -43.35949, -36.59221, -4.297349, 2.571393, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+95, 13016, 369, 1, -69.88953, -16.39119, -4.297355, 5.97014, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+96, 13016, 369, 1, 25.99659, 8.834719, -4.297348, 5.974719, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+97, 13016, 369, 1, 2.777291, 58.8372, -13.86342, 3.297968, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+98, 14041, 369, 1, 25.26379, 14.66779, -4.29735, 0.02318603, 7200, 0, 0), -- Haggle (Area: 0) (possible waypoints or random movement)
+(@CGUID+99, 13016, 369, 1, -45.03532, -14.37037, -13.86343, 1.545782, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+100, 13016, 369, 1, 5.721666, 86.90855, -13.86341, 4.284974, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+101, 13016, 369, 1, 20.23471, 24.19788, -4.287271, 2.203791, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+102, 13016, 369, 1, 31.22039, -4.568573, -4.297352, 4.505353, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+103, 13016, 369, 1, 29.57163, -19.09113, -4.297352, 1.515674, 7200, 5, 1), -- Deeprun Rat (Area: 0)
+(@CGUID+104, 5186, 369, 1, 88.33257, 1046.559, -122.219, 1.076333, 7200, 0, 0), -- Basking Shark (Area: 0)
+(@CGUID+105, 14121, 369, 1, 32.48093, 1253.982, -123.7761, 1.58335, 7200, 0, 0), -- Deeprun Diver (Area: 0) (Auras: 22431 - Tag: Bubbles)
+(@CGUID+106, 10942, 369, 1, -113.8064, 1254.373, -123.0315, 0.541052, 7200, 0, 0), -- Nessy (Area: 0) (Auras: 3417 - Thrash)
+(@CGUID+107, 5186, 369, 1, 73.59551, 1359.462, -119.6585, 2.401082, 7200, 0, 0), -- Basking Shark (Area: 0)
+(@CGUID+108, 10942, 369, 1, 54.22202, 1148.91, -120.5259, 3.236281, 7200, 0, 0), -- Nessy (Area: 0) (Auras: 3417 - Thrash)
+(@CGUID+109, 10942, 369, 1, -113.8064, 1254.373, -123.0315, 0.541052, 7200, 0, 0), -- Nessy (Area: 0) (Auras: 3417 - Thrash)
+(@CGUID+110, 14121, 369, 1, 68.96642, 1107.01, -121.1463, 1.448623, 7200, 0, 0); -- Deeprun Diver (Area: 0) (Auras: 22431 - Tag: Bubbles)
+
+DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+196;
+INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES
+(@OGUID+0, 218240, 369, 1, 39.73352, 2508.677, -4.294677, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+1, 218241, 369, 1, 39.82929, 2514.314, -4.294678, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+2, 218242, 369, 1, 39.70155, 2501.759, -4.294677, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+3, 218243, 369, 1, 39.70155, 2469.287, -4.294677, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+4, 218244, 369, 1, 39.73352, 2476.204, -4.294677, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+5, 218245, 369, 1, 39.82929, 2481.842, -4.294678, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+6, 218262, 369, 1, -19.9828, 2513.025, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+7, 218263, 369, 1, -20.07856, 2507.387, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+8, 218264, 369, 1, -20.11053, 2500.469, -4.294851, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+9, 218265, 369, 1, -20.66589, 2474.819, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+10, 218266, 369, 1, -20.57011, 2480.457, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+11, 218267, 369, 1, -20.69785, 2467.902, -4.294851, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+12, 218268, 369, 1, -17.70583, 2473.837, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+13, 218269, 369, 1, -17.8016, 2468.2, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+14, 218270, 369, 1, -17.01946, 2513.227, -4.29485, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+15, 218271, 369, 1, -17.1472, 2500.672, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+16, 218230, 369, 1, 23.66657, 2511.292, -4.294677, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+17, 218231, 369, 1, 23.34438, 2507.955, -4.294676, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+18, 218203, 369, 1, 4.580645, 28.20966, 7.011068, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 24), -- 0 (Area: Deeprun Tram)
+(@OGUID+19, 218232, 369, 1, 23.49342, 2504.603, -4.294677, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+20, 218233, 369, 1, 23.34438, 2475.57, -4.294677, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+21, 218234, 369, 1, 23.49342, 2472.218, -4.294677, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+22, 218235, 369, 1, 23.66658, 2478.907, -4.294677, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+23, 218236, 369, 1, 20.55386, 2501.279, -4.294677, 2.932139, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+24, 218237, 369, 1, 20.75057, 2514.581, -4.294677, 3.220161, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+25, 218238, 369, 1, 20.75058, 2481.732, -4.294677, 3.220161, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+26, 218239, 369, 1, 20.55387, 2468.431, -4.294677, 2.932139, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+27, 218208, 369, 1, 4.498832, -11.34751, 7.011068, 4.71239, 0, 0, 1, -4.371139E-08, 7200, 255, 24), -- 0 (Area: Deeprun Tram)
+(@OGUID+28, 218204, 369, 1, 4.528066, 8.435292, 7.011068, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 24), -- 0 (Area: Deeprun Tram)
+(@OGUID+29, 218272, 369, 1, -17.05142, 2506.31, -4.29485, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+30, 218273, 369, 1, -17.67386, 2480.754, -4.294851, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+31, 218246, 369, 1, -64.48874, 2504.563, -4.294677, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+32, 218247, 369, 1, -64.16654, 2507.901, -4.294676, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+33, 218248, 369, 1, -64.31558, 2511.252, -4.294677, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+34, 218249, 369, 1, -63.73218, 2475.644, -4.294677, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+35, 218250, 369, 1, -63.88121, 2478.996, -4.294677, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+36, 218251, 369, 1, -64.05437, 2472.306, -4.294677, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+37, 218252, 369, 1, -61.37602, 2514.576, -4.294676, 6.073748, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+38, 218253, 369, 1, -61.57273, 2501.275, -4.294676, 0.07854, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+39, 218254, 369, 1, -61.13838, 2469.482, -4.294677, 0.07854, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+40, 218255, 369, 1, -60.94166, 2482.783, -4.294677, 6.073748, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+41, 218259, 369, 1, -80.64693, 2480.339, -4.294677, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+42, 218260, 369, 1, -80.6789, 2473.422, -4.294677, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+43, 218261, 369, 1, -80.77467, 2467.784, -4.294678, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+44, 218336, 369, 1, -71.31967, 2469.101, -42.869, 2.35619, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+45, 218337, 369, 1, -71.29236, 2474.231, -42.84547, 3.926991, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+46, 218338, 369, 1, -74.48042, 2475.56, -42.8726, 4.71239, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+47, 218339, 369, 1, -74.30511, 2482.061, -42.8726, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+48, 218341, 369, 1, -71.66871, 2483.934, -42.79978, 2.44346, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+49, 218342, 369, 1, -71.60806, 2487.854, -42.79978, 3.839725, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+50, 218344, 369, 1, -70.35074, 2500.099, -42.8726, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+51, 218345, 369, 1, -71.56815, 2497.768, -42.86273, 2.35619, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+52, 218334, 369, 1, -74.32562, 2467.829, -42.8726, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+53, 218335, 369, 1, -70.21131, 2471.709, -42.8726, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+54, 218340, 369, 1, -74.48042, 2489.804, -42.8726, 4.71239, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+55, 218346, 369, 1, -71.56815, 2502.425, -42.84547, 3.926991, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+56, 218256, 369, 1, -80.56744, 2507, -4.294678, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+57, 218257, 369, 1, -80.66321, 2501.362, -4.294678, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+58, 218258, 369, 1, -80.53547, 2513.917, -4.294677, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+59, 218343, 369, 1, -74.30511, 2496.409, -42.8726, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+60, 218347, 369, 1, -74.48042, 2503.618, -42.8726, 4.71239, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+61, 218348, 369, 1, -74.30511, 2510.373, -42.8726, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+62, 218349, 369, 1, -74.48042, 2517.582, -42.8726, 4.71239, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+63, 218350, 369, 1, -71.92816, 2512.242, -42.79978, 2.44346, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+64, 218351, 369, 1, -71.886, 2515.754, -42.79978, 3.839725, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+65, 220360, 369, 1, -96.89163, 2478.907, -43.10672, 4.717134, 0, 0, 0, 1, 7200, 255, 1), -- Remote Viewing Console (Area: Deeprun Tram)
+(@OGUID+66, 218332, 369, 1, -95.01887, 2464.429, -43.10918, 3.054327, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+67, 218333, 369, 1, -94.87846, 2458.042, -43.16341, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+68, 218331, 369, 1, -105.69, 2469.067, -43.10918, 4.625124, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+69, 218207, 369, 1, -45.39338, 2472.931, 6.988598, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 24), -- 0 (Area: Deeprun Tram)
+(@OGUID+70, 218205, 369, 1, -45.40052, 2492.792, 6.988598, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 24), -- 0 (Area: Deeprun Tram)
+(@OGUID+71, 218206, 369, 1, -45.40074, 2512.148, 6.988598, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 24), -- 0 (Area: Deeprun Tram)
+(@OGUID+72, 218366, 369, 1, -103.7942, 2521.406, -43.16342, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+73, 218361, 369, 1, -108.6291, 2549.7, -29.53149, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+74, 218363, 369, 1, -110.5395, 2552.282, -29.45867, 4.01426, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+75, 218364, 369, 1, -114.3652, 2552.402, -29.45867, 5.410522, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+76, 218367, 369, 1, -108.0164, 2521.269, -43.10919, 6.195921, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+77, 218319, 369, 1, -114.9488, 2531.119, -43.16342, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+78, 218321, 369, 1, -106.7227, 2530.981, -43.10919, 6.195921, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+79, 218322, 369, 1, -102.5006, 2531.119, -43.16342, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+80, 218370, 369, 1, -115.3981, 2521.104, -43.10919, 3.054327, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+81, 218330, 369, 1, -110.2254, 2468.849, -43.16341, 4.712392, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+82, 218329, 369, 1, -114.9488, 2468.849, -43.16341, 4.712392, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+83, 218365, 369, 1, -119.6202, 2520.967, -43.16342, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+84, 218328, 369, 1, -119.7294, 2468.745, -43.10918, 4.625124, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+85, 220360, 369, 1, -121.4181, 2545.575, -29.59357, 3.132858, 0, 0, 0, 1, 7200, 255, 1), -- Remote Viewing Console (Area: Deeprun Tram)
+(@OGUID+86, 218352, 369, 1, -133.5216, 2541.906, -29.50879, 1.483528, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+87, 218353, 369, 1, -128.9862, 2541.802, -29.56301, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+88, 218354, 369, 1, -123.4175, 2547.911, -29.55851, 3.054327, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+89, 218355, 369, 1, -123.3138, 2551.838, -29.61273, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+90, 218362, 369, 1, -116.1536, 2549.525, -29.53149, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+91, 218320, 369, 1, -126.5526, 2530.816, -43.10919, 3.054327, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+92, 218323, 369, 1, -119.1709, 2530.981, -43.10919, 6.195921, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+93, 218368, 369, 1, -127.8463, 2521.104, -43.10919, 3.054327, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+94, 220087, 369, 1, -128.901, 2546.624, -29.59357, 5.885697, 0, 0, 0, 1, 7200, 255, 1), -- Book Stack (Area: Deeprun Tram)
+(@OGUID+95, 220360, 369, 1, -142.9507, 2520.156, -43.0725, 1.592488, 0, 0, 0, 1, 7200, 255, 1), -- Remote Viewing Console (Area: Deeprun Tram)
+(@OGUID+96, 218356, 369, 1, -143.9925, 2549.628, -29.49515, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+97, 218318, 369, 1, -130.7747, 2530.679, -43.16342, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+98, 218327, 369, 1, -125.339, 2468.849, -43.16341, 4.712392, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+99, 218369, 369, 1, -132.0684, 2520.967, -43.16342, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+100, 218214, 369, 1, -138.2139, 2471.3, -43.10609, 4.127707, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+101, 218215, 369, 1, -141.3755, 2471.253, -43.10609, 5.401793, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+102, 218216, 369, 1, -139.5541, 2466.639, -43.10673, 1.570796, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+103, 218217, 369, 1, -137.1418, 2468.598, -43.10609, 2.940878, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+104, 218357, 369, 1, -147.8015, 2554.089, -29.49515, 4.71239, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+105, 218358, 369, 1, -145.2794, 2552.678, -29.34725, 3.926991, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+106, 218359, 369, 1, -150.3227, 2552.781, -29.46802, 5.497789, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+107, 218360, 369, 1, -151.6096, 2549.453, -29.49515, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+108, 218324, 369, 1, -133.7215, 2463.137, -43.16341, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+109, 218325, 369, 1, -133.6178, 2458.097, -43.10918, 6.195921, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+110, 218326, 369, 1, -130.3793, 2469.195, -43.10918, 4.625124, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+111, 218213, 369, 1, -140.3532, 2463.915, -43.10609, 3.900813, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+112, 218218, 369, 1, -141.942, 2468.055, -43.10609, 0.4363316, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+113, 218209, 369, 1, -144.8453, 2461.269, -43.10609, 0.1745321, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+114, 218210, 369, 1, -140.0449, 2460.966, -43.10673, 2.836158, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+115, 218211, 369, 1, -142.2138, 2459.56, -43.10674, 1.527163, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+116, 218212, 369, 1, -143.7642, 2464.378, -43.10609, 5.218536, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+117, 218219, 369, 1, -146.5631, 2466.862, -43.10674, 2.530723, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+118, 218220, 369, 1, -146.5619, 2469.745, -43.10609, 3.700098, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+119, 218221, 369, 1, -151.3983, 2467.785, -43.10673, 6.265733, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+120, 218222, 369, 1, -149.2733, 2465.646, -43.10673, 1.596976, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+121, 218223, 369, 1, -150.1574, 2470.702, -43.10609, 5.218536, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: Deeprun Tram)
+(@OGUID+122, 220360, 369, 1, -138.1376, 2456.681, -43.1059, 1.546259, 0, 0, 0, 1, 7200, 255, 1), -- Remote Viewing Console (Area: Deeprun Tram)
+(@OGUID+123, 179264, 369, 1, -79.30329, 1211.732, -122.8182, 0.4014249, 0, 0, 0, 1, 7200, 255, 1), -- Giant Clam (Area: 0)
+(@OGUID+124, 178304, 369, 1, -22.5045, 44.43635, -4.297362, 1.291542, 0, 0, 0, 1, 7200, 255, 1), -- Box o' Squirrels (Area: 0)
+(@OGUID+125, 208864, 369, 1, -18.80994, 28.25147, -4.297366, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+126, 178304, 369, 1, -16.77179, 44.47802, -4.297363, 1.832595, 0, 0, 0, 1, 7200, 255, 1), -- Box o' Squirrels (Area: 0)
+(@OGUID+127, 208864, 369, 1, -81.32017, 22.30112, -4.297349, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+128, 218306, 369, 1, -17.0512, 24.52901, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+129, 218307, 369, 1, -17.14698, 18.89099, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+130, 218308, 369, 1, -17.01924, 31.44611, -4.294851, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+131, 208864, 369, 1, -77.95713, 45.4724, -4.297347, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+132, 218315, 369, 1, -20.11032, 18.68863, -4.294851, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+133, 218316, 369, 1, -20.07835, 25.60595, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+134, 218317, 369, 1, -19.98258, 31.24376, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+135, 178304, 369, 1, -19.66363, 44.25616, -4.297363, 5.270896, 0, 0, 0, 1, 7200, 255, 1), -- Box o' Squirrels (Area: 0)
+(@OGUID+136, 218277, 369, 1, -64.24798, 25.16312, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+137, 218278, 369, 1, -64.39703, 28.51469, -4.29485, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+138, 218279, 369, 1, -64.57018, 21.82545, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+139, 218282, 369, 1, -61.65417, 19.00144, -4.294851, 0.07854, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+140, 218283, 369, 1, -61.45748, 32.30244, -4.294851, 6.073748, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+141, 218287, 369, 1, -80.60516, 31.44611, -4.294851, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+142, 218288, 369, 1, -80.63712, 24.52901, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+143, 218303, 369, 1, 39.74333, 20.39353, -4.294851, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+144, 208864, 369, 1, -63.69213, -15.59292, -4.297354, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+145, 208864, 369, 1, 9.727059, -23.84358, -13.86343, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+146, 208864, 369, 1, 21.24571, 17.08864, -4.29735, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+147, 208864, 369, 1, -0.5995102, 33.58908, -13.86343, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+148, 208864, 369, 1, 37.16822, 44.65622, -4.297347, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+149, 218304, 369, 1, 39.77528, 27.31064, -4.29485, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+150, 218305, 369, 1, 39.87106, 32.94865, -4.294852, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+151, 218309, 369, 1, -20.66567, -6.96157, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+152, 218310, 369, 1, -20.56989, -1.323543, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+153, 218311, 369, 1, -20.69763, -13.87867, -4.294851, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+154, 218312, 369, 1, -17.67365, -1.026118, -4.294851, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+155, 218313, 369, 1, -17.70562, -7.943435, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+156, 218314, 369, 1, -17.80138, -13.58124, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+157, 208864, 369, 1, -55.16456, -37.43731, -4.297352, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+158, 208864, 369, 1, 21.65013, -15.25156, -4.297355, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+159, 208864, 369, 1, -65.49454, -11.31814, -4.297354, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+160, 208864, 369, 1, -25.81312, -24.38962, -4.297369, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+161, 208864, 369, 1, 16.44149, 46.07506, -4.297347, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+162, 218274, 369, 1, -64.57018, -10.55954, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+163, 218275, 369, 1, -64.24798, -7.221652, -4.29485, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+164, 218276, 369, 1, -64.39702, -3.870082, -4.294851, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+165, 208864, 369, 1, -80.1594, -5.485014, -4.297352, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+166, 218280, 369, 1, -61.45747, -0.5463043, -4.29485, 6.073748, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+167, 218281, 369, 1, -61.65417, -13.84751, -4.294851, 0.07854, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+168, 208864, 369, 1, -62.29871, 0.4384706, -4.297353, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+169, 218284, 369, 1, -80.63712, -7.943434, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+170, 218285, 369, 1, -80.73289, -13.58124, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+171, 218286, 369, 1, -80.60516, -1.026123, -4.294851, 6.204646, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+172, 218289, 369, 1, -80.73289, 18.89098, -4.294851, 0, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+173, 208864, 369, 1, -18.22651, -5.197068, -4.297369, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+174, 218290, 369, 1, 23.58513, -3.829995, -4.29485, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+175, 218291, 369, 1, 23.26293, -7.167885, -4.29485, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+176, 218292, 369, 1, 23.41197, -10.51945, -4.294851, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+177, 218293, 369, 1, 22.82857, 25.08885, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+178, 218294, 369, 1, 22.97761, 21.73728, -4.29485, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+179, 218295, 369, 1, 23.15076, 28.42652, -4.29485, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+180, 218296, 369, 1, 20.47242, -13.84323, -4.29485, 2.932139, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+181, 218297, 369, 1, 20.66912, -0.5420112, -4.29485, 3.220161, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+182, 218298, 369, 1, 20.23477, 31.25052, -4.294851, 3.220161, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+183, 218299, 369, 1, 20.03805, 17.94952, -4.294851, 2.932139, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+184, 218300, 369, 1, 39.66383, -6.266836, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+185, 218301, 369, 1, 39.75959, -0.6290315, -4.294851, 3.141593, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+186, 218302, 369, 1, 39.63186, -13.18415, -4.294851, 3.063024, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Chair (Area: 0)
+(@OGUID+187, 208864, 369, 1, 40.01941, -25.9875, -4.297345, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+188, 208864, 369, 1, 14.71833, -37.30925, -4.297353, 0, 0, 0, 0, 1, 7200, 255, 1), -- Rat Trap (Area: 0)
+(@OGUID+189, 218226, 369, 1, 112.0717, 21.57919, -0.967929, 6.278823, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Doodad_DwarfSign_Fireworks01 (Area: 0)
+(@OGUID+190, 218227, 369, 1, 109.3507, 16.21418, -4.294435, 0.8508465, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Brazier (Area: 0)
+(@OGUID+191, 218228, 369, 1, 109.8475, 4.727702, -4.294435, 0.8508465, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Brazier (Area: 0)
+(@OGUID+192, 218229, 369, 1, 112.3642, 5.079133, -4.357647, 0.8508465, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Mailbox (Area: 0)
+(@OGUID+193, 218224, 369, 1, 146.9395, -6.104181, -3.154193, 2.412915, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Doodad_GnomeSign_Engineer01 (Area: 0)
+(@OGUID+194, 218225, 369, 1, 146.4382, 27.88295, -0.142696, 3.878999, 0, 0, 1, -4.371139E-08, 7200, 255, 1), -- Doodad_DwarfSign_Alchemist01 (Area: 0)
+(@OGUID+195, 179264, 369, 1, 37.43438, 1316.428, -121.9855, 3.839725, 0, 0, 0, 1, 7200, 255, 1), -- Giant Clam (Area: 0)
+(@OGUID+196, 179345, 369, 1, 57.43581, 1206.985, -121.5893, 3.630291, 0, 0, 0, 1, 7200, 255, 1); -- Deeprun Chest (Area: 0)
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN (59481, 66305, 13018, 68952, 68801, 68798, 68408, 68363, 68405, 68963, 68537, 68540, 70752, 68442, 68994, 68803, 68406, 68434, 73645, 73642, 68323, 68992, 73646, 70722, 70354, 68768, 68541, 68526, 67559, 68792, 41200, 70719, 71134, 70743, 68535, 68799, 70721, 70723, 68539, 70720, 70740, 68796, 68797, 68764, 64367, 70733);
+INSERT INTO `creature_template_addon` (`entry`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
+(41200, 0, 0x3000000, 0x1, ''), -- Generic Bunny - PRK
+(59481, 0, 0x0, 0x1, ''), -- World Trigger
+(64367, 0, 0x0, 0x1, ''), -- Invisible Man
+(66305, 0, 0x3000000, 0x1, '131338'), -- Generic Bunny - PRK (Gigantic AOI) - Brawl Sound - Alliance, Fight (DNT)
+(67559, 0, 0x0, 0x1, ''), -- Center of Arena
+(68323, 44634, 0x3000000, 0x1, '134727'), -- Bizmo - Announcer Control Aura
+(68363, 0, 0x0, 0x1, ''), -- Quackenbush
+(68405, 0, 0x0, 0x1, ''), -- Brawl Enthusiast
+(68406, 0, 0x0, 0x1, ''), -- Brawl Enthusiast
+(68408, 0, 0x0, 0x101, ''), -- Bizmo's Brawlpub Bouncer
+(68434, 0, 0x3000000, 0x1, ''), -- Subway Car
+(68442, 0, 0x3000000, 0x1, '46598'), -- Subway Car - Ride Vehicle Hardcoded
+(68526, 0, 0x0, 0x1, ''), -- Barkeep Townsley
+(68535, 0, 0x0, 0x1, ''), -- Zoe Mae
+(68537, 0, 0x0, 0x1, '135041'), -- Keith "The Party" Westin - Wearing Glasses
+(68539, 0, 0x0, 0x1, '135042'), -- Tasha Windpaw - Wearing A Silly Hat
+(68540, 0, 0x0, 0x1, '135038'), -- Twix Gearspark - Wearing A Rose
+(68541, 0, 0x0, 0x1, ''), -- "To Catch A Spy" - Controller Bunny
+(68764, 0, 0x0, 0x1, ''), -- Willard "Bubbles" Wilcox
+(68768, 0, 0x0, 0x1, ''), -- "Numbers" Pfeiffer
+(68792, 0, 0x0, 0x1, ''), -- Lidiya Peyton
+(68796, 0, 0x0, 0x1, '32951'), -- Brom Ironboot - Sleeping Sleep
+(68797, 0, 0x0, 0x1, '32951'), -- Babby Ironboot - Sleeping Sleep
+(68798, 0, 0x0, 0x1, ''), -- Verah "Violet" Bustle
+(68799, 0, 0x0, 0x1, ''), -- Sniffy Pete
+(68801, 0, 0x0, 0x1, ''), -- Flora
+(68803, 0, 0x0, 0x1, ''), -- Willow Cloudstep
+(68952, 0, 0x0, 0x1, ''), -- Bizmo's Brawlpub Entrance
+(68963, 0, 0x0, 0x1, '134909'), -- Boom Room Bouncer - Guard Area Trigger
+(68992, 0, 0x0, 0x1, ''), -- Brawl Enthusiast
+(68994, 0, 0x0, 0x1, ''), -- Brawl Enthusiast
+(70354, 0, 0x0, 0x1, ''), -- Stabby Joe
+(70719, 0, 0x0, 0x1, ''), -- Mozzle Gearbeer
+(70720, 0, 0x0, 0x1, ''), -- Kreeg O'Lalley
+(70721, 0, 0x0, 0x1, ''), -- Auriella Giggysprock
+(70722, 0, 0x0, 0x1, ''), -- Grant Lazarby
+(70723, 0, 0x0, 0x1, ''), -- Dame Jesepha
+(70733, 0, 0x0, 0x1, '132633'), -- Tyson Sanders - Ring of Valor - In the Arena (Fight)
+(70740, 0, 0x0, 0x1, '132633 142875'), -- Blingtron 3000 - Ring of Valor - In the Arena (Fight), Brawler's Guild Unit Frame
+(70743, 0, 0x0, 0x1, '141047'), -- Gnomish Tesla Coil - Gnomish Tesla Coil Visual
+(70752, 0, 0x0, 0x101, ''), -- Card Trader Leila
+(71134, 0, 0x0, 0x1, ''), -- Pile of Gold
+(73642, 0, 0x0, 0x1, ''), -- Carman Cheung
+(73645, 0, 0x0, 0x1, ''), -- Mochi
+(73646, 0, 0x0, 0x1, ''); -- Mugen
+
+DELETE FROM `npc_vendor` WHERE `entry` IN (70752, 68363, 68792, 13018);
+INSERT INTO `npc_vendor` (`entry`, `item`, `slot`, `maxcount`, `ExtendedCost`, `Type`, `VerifiedBuild`) VALUES
+-- 70752 (Card Trader Leila)
+(70752, 97566, 44, 0, 0, 1, 19865), -- Challenge Card: Razorgrin
+(70752, 97289, 45, 0, 0, 1, 19865), -- Challenge Card: Splat
+(70752, 97445, 48, 0, 0, 1, 19865), -- Challenge Card: Blingtron 3000
+(70752, 97560, 49, 0, 0, 1, 19865), -- Challenge Card: Ro-Shambo
+(70752, 97279, 51, 0, 0, 1, 19865), -- Challenge Card: Mingus Diggs
+(70752, 97321, 52, 0, 0, 1, 19865), -- Challenge Card: Blind Hero
+-- 68363 (Quackenbush)
+(68363, 118916, 1, 0, 0, 1, 19865), -- -Unknown-
+(68363, 118910, 2, 0, 0, 1, 19865), -- -Unknown-
+(68363, 118911, 3, 0, 0, 1, 19865), -- -Unknown-
+(68363, 118912, 4, 0, 0, 1, 19865), -- -Unknown-
+(68363, 118907, 5, 0, 5839, 1, 19865), -- -Unknown-
+(68363, 122396, 6, 0, 5565, 1, 19865), -- -Unknown-
+(68363, 98405, 7, 0, 5840, 1, 19865), -- Brawler's Burly Mushan Beast
+(68363, 93025, 8, 0, 0, 1, 19865), -- Clock'em
+(68363, 118913, 9, 0, 0, 1, 19865), -- -Unknown-
+(68363, 118914, 10, 0, 0, 1, 19865), -- -Unknown-
+(68363, 118915, 11, 0, 0, 1, 19865), -- -Unknown-
+-- 68792 (Lidiya Peyton)
+(68792, 93043, 1, 0, 0, 1, 19865), -- Rotten Apple
+(68792, 93044, 2, 0, 0, 1, 19865), -- Rotten Banana
+(68792, 93045, 3, 0, 0, 1, 19865), -- Rotten Watermelon
+(68792, 93158, 4, 0, 0, 1, 19865), -- Expired Blackout Brew
+-- 13018 (Nipsy)
+(13018, 17119, 285, 0, 0, 1, 19865); -- Deeprun Rat Kabob
+
+DELETE FROM `gossip_menu_option` WHERE (`menu_id`=15682 AND `id`=0);
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `box_coded`, `box_money`, `box_text`) VALUES
+(15682, 0, 0, 'I''d like to purchase a challenge card.', 73714, 0, 0, ''); -- Card Trader Leila
+
+DELETE FROM `npc_text` WHERE `ID` IN (5920, 5894, 22028, 22029, 22030, 22031, 22032, 21717, 22106, 21979, 21982, 22527);
+INSERT INTO `npc_text` (`ID`, `Probability0`, `BroadcastTextId0`, `Probability1`, `BroadcastTextId1`, `Probability2`, `BroadcastTextId2`, `Probability3`, `BroadcastTextId3`, `Probability4`, `BroadcastTextId4`, `Probability5`, `BroadcastTextId5`, `Probability6`, `BroadcastTextId6`, `Probability7`, `BroadcastTextId7`, `VerifiedBuild`) VALUES
+(5920, 1, 8475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 5920
+(5894, 1, 8463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 5894
+(22028, 1, 70719, 1, 70718, 1, 70717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 22028
+(22029, 1, 70722, 1, 70721, 1, 70720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 22029
+(22030, 1, 70725, 1, 70724, 1, 70723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 22030
+(22031, 1, 70728, 1, 70727, 1, 70726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 22031
+(22032, 1, 70729, 1, 70730, 1, 70731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 22032
+(21717, 1, 68843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 21717
+(22106, 1, 70736, 1, 70735, 1, 71237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 22106
+(21979, 1, 70253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 21979
+(21982, 1, 70254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 21982
+(22527, 1, 73713, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865); -- 22527
diff --git a/sql/updates/world/2015_05_09_01_world.sql b/sql/updates/world/2015_05_09_01_world.sql
new file mode 100644
index 00000000000..b3ddc193f24
--- /dev/null
+++ b/sql/updates/world/2015_05_09_01_world.sql
@@ -0,0 +1,8 @@
+UPDATE `gameobject` SET `id`=208246 WHERE `guid`=11765;
+UPDATE `gameobject` SET `id`=208247 WHERE `guid`=11766;
+UPDATE `gameobject` SET `id`=186043 WHERE `id`=186052;
+
+DELETE FROM `gameobject_template` WHERE `entry` IN (37, 38, 59, 167, 249, 251, 254, 337, 711, 1593, 1599, 1631, 1632, 1638, 1720, 1738, 1739, 1752, 1753, 1754, 1755, 1763, 1798, 1803, 1818, 1821, 1828, 1830, 1871, 1888, 1889, 1890, 1896, 1905, 1906, 1912, 1922, 1927, 1930, 1931, 1932, 1935, 1938, 1942, 1965, 1968, 1993, 1994, 1995, 1996, 2003, 2004, 2007, 2008, 2035, 2130, 2148, 2149, 2151, 2188, 2413, 2414, 2572, 2573, 2649, 2650, 2658, 2842, 2848, 2858, 2933, 3085, 3089, 3224, 3239, 3253, 3254, 3265, 3270, 3306, 3638, 3639, 3760, 3761, 3767, 3768, 4004, 4005, 4102, 4103, 6293, 6294, 6295, 6906, 6907, 6908, 9847, 10388, 12144, 12666, 13756, 13952, 15001, 15002, 15003, 15004, 15005, 15885, 16431, 17184, 17188, 17189, 18046, 18084, 18085, 18087, 19000, 19001, 19002, 19003, 19004, 19005, 19006, 19007, 19008, 19009, 19010, 19011, 19012, 19013, 19014, 19026, 19029, 19031, 19032, 19034, 19035, 19036, 19037, 19038, 19039, 19040, 19041, 19042, 19043, 19044, 19045, 19046, 19047, 19048, 19049, 19050, 19051, 19052, 19053, 19054, 19055, 19056, 19057, 19058, 19059, 19060, 19061, 19062, 19063, 19064, 19065, 19066, 19067, 19068, 19069, 19070, 19071, 19072, 19073, 19074, 19075, 19076, 19077, 19078, 19079, 19080, 19081, 19082, 19083, 19084, 19085, 19086, 19087, 19088, 19089, 19090, 19091, 19092, 19093, 19094, 19095, 19096, 19097, 19098, 19099, 19100, 19101, 19102, 19103, 19104, 19105, 19106, 19107, 19108, 19109, 19110, 19111, 19112, 19113, 19114, 19115, 19116, 19117, 19118, 19119, 19120, 19121, 19122, 19123, 19124, 19125, 19126, 19127, 19128, 19129, 19130, 19131, 19132, 19133, 19134, 19135, 19136, 19137, 19138, 19139, 19140, 19141, 19142, 19143, 19144, 19145, 19146, 19147, 19148, 19149, 19150, 19151, 19152, 19153, 19154, 19155, 19156, 19157, 19158, 19159, 19160, 19161, 19162, 19163, 19164, 19165, 19166, 19167, 19168, 19169, 19170, 19171, 19172, 19173, 19174, 19175, 19176, 19177, 19178, 19179, 19180, 19181, 19182, 19183, 19184, 19185, 19186, 19187, 19188, 19189, 19190, 19191, 19192, 19193, 19194, 19195, 19196, 19197, 19198, 19199, 19200, 19201, 19202, 19203, 19204, 19205, 19206, 19207, 19208, 19209, 19210, 19211, 19212, 19213, 19214, 19215, 19216, 19217, 19218, 19219, 19220, 19221, 19222, 19223, 19224, 19225, 19226, 19227, 19228, 19229, 19230, 19231, 19232, 19233, 19234, 19235, 19236, 19237, 19238, 19239, 19240, 19241, 19242, 19243, 19244, 19245, 19246, 19247, 19248, 19249, 19250, 19251, 19252, 19253, 19254, 19255, 19256, 19257, 19258, 19259, 19260, 19261, 19262, 19263, 19264, 19265, 19266, 19267, 19268, 19269, 19270, 19271, 19272, 19273, 19274, 19275, 19276, 19277, 19278, 19279, 19280, 19281, 19282, 19285, 19286, 19287, 19288, 19289, 19290, 19291, 19292, 19293, 19294, 19295, 19296, 19297, 19298, 19299, 19301, 19302, 19303, 19304, 19305, 19306, 19307, 19308, 19309, 19311, 19312, 19313, 19314, 19315, 19316, 19317, 19318, 19319, 19320, 19321, 19322, 19323, 19324, 19325, 19326, 19327, 19328, 19329, 19330, 19331, 19332, 19333, 19334, 19335, 19336, 19337, 19338, 19339, 19340, 19341, 19342, 19343, 19344, 19345, 19346, 19347, 19348, 19349, 19350, 19351, 19352, 19353, 19354, 19355, 19356, 19357, 19358, 19359, 19360, 19361, 19362, 19363, 19364, 19365, 19366, 19367, 19368, 19369, 19370, 19371, 19372, 19374, 19375, 19376, 19377, 19378, 19379, 19380, 19381, 19382, 19383, 19384, 19385, 19386, 19387, 19388, 19389, 19390, 19391, 19392, 19393, 19394, 19395, 19396, 19397, 19398, 19399, 19400, 19401, 19402, 19403, 19404, 19405, 19406, 19407, 19408, 19409, 19410, 19411, 19412, 19413, 19414, 19415, 19416, 19417, 19418, 19419, 19420, 19421, 19422, 19423, 19424, 19425, 19426, 19427, 19428, 19429, 19430, 19431, 19432, 19433, 19434, 19435, 19436, 19437, 19438, 19439, 19440, 19441, 19442, 19443, 19444, 19445, 19446, 19447, 19448, 19449, 19450, 19451, 19452, 19453, 19454, 19455, 19456, 19457, 19458, 19459, 19460, 19461, 19462, 19463, 19464, 19465, 19466, 19467, 19468, 19469, 19470, 19471, 19472, 19473, 19474, 19475, 19476, 19477, 19478, 19479, 19480, 19481, 19482, 19483, 19484, 19485, 19486, 19487, 19488, 19489, 19490, 19491, 19492, 19493, 19494, 19495, 19496, 19497, 19498, 19499, 19500, 19501, 19502, 19503, 19504, 19505, 19506, 19507, 19508, 19509, 19510, 19511, 19512, 19513, 19514, 19515, 19516, 19517, 19518, 19519, 19520, 19521, 19522, 19523, 19524, 19525, 19526, 19527, 19528, 19529, 19530, 19531, 19532, 19533, 19536, 19537, 19577, 19582, 19584, 19588, 19589, 19593, 19604, 19605, 19606, 19607, 19608, 19609, 19610, 19611, 19612, 19613, 19614, 19615, 19616, 19617, 19618, 19619, 19620, 19621, 19622, 19623, 19624, 19625, 19626, 19627, 19628, 19629, 19630, 19631, 19632, 19633, 19634, 19635, 19636, 19637, 19638, 19639, 19640, 19641, 19642, 19643, 19644, 19645, 19646, 19647, 19648, 19649, 19650, 19651, 19652, 19653, 19654, 19655, 19656, 19657, 19658, 19659, 19660, 19661, 19662, 19663, 19664, 19665, 19848, 19849, 19850, 19851, 19852, 19853, 19854, 19855, 19856, 19857, 19858, 19859, 19901, 19902, 20352, 20356, 20811, 20812, 20816, 20817, 20818, 20819, 20820, 20821, 20822, 20823, 20824, 20827, 20850, 20873, 20874, 20875, 20876, 20878, 20879, 20881, 20924, 20926, 20972, 20983, 21015, 21016, 21282, 21511, 21628, 21629, 21630, 21631, 21653, 21654, 21655, 21656, 22205, 22207, 22208, 22249, 22256, 22542, 22618, 22663, 22796, 22797, 22798, 22799, 22800, 22801, 22802, 22808, 22809, 22810, 22816, 22817, 23505, 23880, 23881, 24397, 24493, 24500, 24501, 24502, 24503, 24504, 24505, 24510, 24511, 25334, 25342, 25352, 25355, 25356, 25357, 26480, 26482, 26483, 26485, 26486, 26487, 26488, 26489, 26490, 26491, 26492, 26493, 26497, 26498, 28048, 28049, 28050, 28051, 28052, 28053, 28054, 28055, 28056, 28605, 28606, 28607, 28608, 28609, 28610, 28611, 28612, 28613, 31576, 32056, 32057, 32109, 32110, 32348, 32350, 32351, 32352, 32353, 32354, 32356, 32357, 32359, 32360, 32361, 32362, 32363, 32364, 32365, 32366, 32367, 32368, 32370, 32371, 32372, 32373, 32374, 32375, 32376, 32377, 32378, 32379, 32380, 32381, 32384, 32386, 32388, 32390, 32392, 32393, 32394, 32395, 32396, 32397, 32398, 32399, 32400, 32401, 32402, 32403, 32405, 32406, 32407, 32408, 32409, 32410, 32411, 32412, 32413, 32414, 32417, 32418, 32419, 32420, 32421, 32423, 32428, 32430, 32434, 32436, 32438, 32440, 32595, 32783, 32784, 32785, 32786, 32787, 32788, 32789, 32790, 32791, 32792, 32793, 34357, 34358, 34359, 34361, 34362, 34363, 35572, 35573, 35574, 35575, 35576, 35577, 35578, 35579, 35580, 35581, 35582, 35583, 35584, 35585, 35588, 35589, 36645, 36990, 36991, 36992, 36993, 36994, 36995, 37473, 37474, 37475, 37476, 37477, 37479, 37480, 37481, 37482, 37483, 37484, 37485, 37486, 37487, 37488, 37489, 37490, 37491, 37492, 37493, 38019, 38020, 38021, 38022, 38023, 38024, 38025, 38026, 38027, 40198, 40299, 55616, 56820, 57709, 57710, 57725, 57726, 57727, 57748, 57749, 57750, 57751, 57752, 57753, 59529, 59530, 60394, 61927, 61928, 61952, 61953, 64849, 64850, 67234, 69425, 69431, 70518, 70519, 70520, 70521, 70522, 70523, 70524, 70525, 70526, 70527, 70528, 70530, 70531, 70532, 70533, 70534, 70535, 70536, 70537, 70538, 70539, 70540, 70541, 70542, 70543, 70544, 70545, 70546, 70547, 70548, 70549, 70551, 70552, 70553, 70554, 70555, 70556, 70557, 74077, 74446, 74731, 80024, 82139, 82140, 83763, 88498, 91738, 92098, 94189, 100028, 100035, 101750, 111993, 111994, 111995, 111996, 111998, 112000, 112015, 112023, 112024, 112028, 112068, 112214, 112318, 113540, 113791, 138316, 138317, 138318, 138493, 140106, 140107, 140108, 140211, 140212, 140213, 140357, 140358, 140359, 140360, 140931, 141076, 141077, 141078, 141839, 141840, 141841, 141843, 141845, 141860, 141861, 141971, 142018, 142019, 142020, 142021, 142036, 142071, 142101, 142111, 142119, 142196, 142693, 142708, 142709, 142710, 142711, 142947, 142948, 142958, 142966, 143332, 143987, 143988, 143989, 143990, 144570, 146088, 146089, 146090, 147065, 147078, 147079, 147080, 147536, 147557, 148507, 148890, 148896, 148897, 148907, 148908, 149420, 149480, 149481, 149482, 149483, 150075, 150713, 151286, 151980, 151981, 151982, 151992, 152098, 152324, 152608, 152619, 153113, 153578, 153583, 163313, 164644, 164651, 164699, 164700, 164701, 164702, 164703, 164705, 165557, 169286, 170033, 170034, 170047, 170053, 170054, 170067, 171567, 171568, 171619, 171620, 171621, 171622, 171648, 171649, 171674, 171675, 171676, 171677, 171718, 171719, 171720, 171721, 171757, 171758, 171759, 171760, 171761, 171762, 171763, 172943, 172998, 172999, 173000, 173001, 173002, 173003, 173004, 173005, 173124, 173126, 173201, 173227, 173228, 173229, 173230, 173231, 174797, 174864, 174865, 174866, 174867, 174868, 174869, 174870, 174871, 174946, 174968, 175087, 175226, 175230, 175233, 175320, 175329, 175330, 175331, 175406, 175591, 175592, 175593, 175594, 175595, 175596, 175597, 175598, 175599, 175600, 175601, 175602, 175603, 175604, 175605, 175630, 175631, 175632, 175644, 175645, 175646, 175647, 175648, 175649, 175650, 175651, 175652, 175653, 175654, 175655, 175656, 175657, 175663, 175664, 175665, 175666, 175667, 175668, 175671, 175672, 175674, 175677, 175678, 175864, 175904, 175948, 176004, 176005, 176006, 176007, 176008, 176009, 176010, 176011, 176012, 176013, 176014, 176015, 176016, 176017, 176018, 176019, 176020, 176021, 176022, 176023, 176024, 176025, 176026, 176027, 176028, 176029, 176030, 176031, 176032, 176033, 176034, 176035, 176036, 176037, 176038, 176039, 176040, 176041, 176042, 176043, 176044, 176045, 176046, 176047, 176048, 176049, 176050, 176051, 176052, 176053, 176054, 176055, 176056, 176057, 176058, 176059, 176060, 176061, 176062, 176063, 176064, 176065, 176066, 176067, 176068, 176069, 176070, 176071, 176072, 176073, 176074, 176075, 176076, 176077, 176078, 176079, 176080, 176081, 176082, 176083, 176084, 176085, 176098, 176099, 176100, 176101, 176102, 176103, 176104, 176105, 176106, 176107, 176108, 176109, 176113, 176191, 176197, 176198, 176200, 176204, 176210, 176265, 176282, 176290, 176292, 176293, 176294, 176361, 176364, 176365, 176369, 176370, 176393, 176505, 176632, 176642, 176705, 176786, 176791, 176885, 176886, 176887, 176888, 176889, 176890, 176891, 176892, 176904, 176996, 177084, 177223, 177237, 177238, 177244, 177274, 177289, 177290, 177291, 177364, 177424, 178400, 179147, 179586, 179587, 179588, 179597, 179682, 179846, 179924, 179963, 180245, 180323, 180367, 180526, 180688, 180689, 181099, 181137, 181167, 181229, 181260, 181596, 181639, 182650, 182654, 182655, 182656, 182657, 182658, 182659, 182660, 182666, 182698, 182703, 182707, 182708, 182709, 182710, 182714, 182715, 182718, 182719, 182721, 182722, 182728, 182837, 182838, 182848, 183409, 183445, 184084, 184127, 184128, 184129, 184130, 184131, 184132, 184161, 184171, 184172, 184173, 184174, 184175, 184176, 184177, 184178, 184179, 184180, 184181, 184182, 184183, 184184, 184185, 184186, 184187, 184188, 184189, 184190, 184191, 184192, 184193, 184194, 184195, 184196, 184197, 184198, 184199, 184200, 184201, 184202, 184206, 184207, 184208, 184209, 184210, 184211, 184213, 184214, 184215, 184216, 184217, 184218, 184219, 184220, 184221, 184222, 184223, 184224, 184225, 184226, 184227, 184228, 184247, 184461, 184468, 184524, 184525, 184526, 184527, 184528, 184529, 184599, 184618, 184648, 184649, 184650, 184651, 184733, 184818, 184847, 185433, 185471, 186052, 186132, 186898, 187260, 187366, 188177, 188178, 190000, 190001, 190007, 190008, 190009, 190010, 190011, 190400, 190671, 190682, 191621, 191714, 191715, 191846, 191847, 191848, 191849, 192012, 192013, 192136, 192137, 192138, 192139, 192170, 192387, 192388, 192389, 192391, 192392, 192393, 192394, 192464, 192465, 192466, 192467, 192468, 192489, 192490, 192499, 192500, 192503, 192504, 192505, 192506, 192507, 192508, 192509, 192510, 192511, 192512, 192513, 192514, 192517, 192526, 192527, 192528, 192529, 192530, 192531, 192570, 192571, 192585, 192635, 192663, 192664, 192665, 192666, 192671, 192672, 192673, 192674, 192677, 192678, 192679, 192680, 192681, 192682, 192704, 192705, 192732, 192733, 192775, 192776, 192863, 192864, 192903, 192904, 193010, 193011, 193031, 193032, 193033, 193034, 193035, 193036, 193037, 193039, 193040, 193041, 193042, 193182, 193183, 193210, 193211, 193212, 193213, 193457, 193458, 193459, 193460, 193461, 193462, 193463, 193464, 193465, 193587, 193588, 193600, 193601, 193608, 193609, 194030, 194031, 194235, 194236, 194338, 194339, 194576, 194578, 194579, 194580, 194581, 194582, 194583, 194584, 194585, 194586, 194587, 195477, 195478, 195479, 195480, 195481, 195486, 195592, 195593, 195594, 195595, 195596, 195598, 195624, 195625, 195626, 195627, 195628, 195629, 196391, 196392, 196417, 196467, 196468, 196469, 196470, 200000, 200001, 200292, 200293, 200294, 200295, 201747, 201756, 201762, 201763, 201764, 201765, 201766, 201767, 201849, 201850, 201960, 201961, 201984, 202078, 202209, 202210, 202265, 202266, 202315, 202316, 202317, 202318, 202347, 202348, 202349, 202350, 202698, 202718, 202823, 202825, 202827, 202829, 203433, 203434, 203435, 203436, 203606, 203959, 203960, 203961, 203962, 204051, 204052, 204053, 204054, 204285, 204286, 204287, 204288, 204644, 204648, 204649, 204652, 204653, 204654, 204659, 204660, 204661, 204857, 204858, 204863, 204864, 204963, 204964, 206035, 206036, 206345, 206346, 206347, 206348, 206362, 206363, 206364, 206365, 206438, 206439, 206660, 206661, 206968, 206969, 207339, 207340, 207341, 207342, 207366, 207367, 207368, 207369, 207370, 207371, 207372, 207373, 207746, 207747, 207841, 207842, 207879, 207880, 207895, 207896, 207897, 207898, 207899, 207900, 207976, 207977, 207978, 207979, 207980, 207981, 208349, 208350, 208513, 208514, 208515, 208516, 208517, 208518, 208519, 208520, 208521, 208522, 208523, 208524, 208525, 208526, 208527, 208528, 208532, 208837, 208838, 208922, 208923, 208924, 208925, 209060, 209061, 209062, 209063, 209839, 209840, 209841, 210008, 210009, 210010, 210011, 210012, 210013, 210014, 210077, 210078, 210095, 210096, 210104, 210105, 210114, 210115, 210133, 210134, 210135, 210136, 210170, 210215, 210286, 210312, 210313, 210327, 210328, 210329, 210330, 210331, 210332, 210334, 210335, 210336, 210337, 210338, 210339, 210341, 210342, 210343, 210344, 210345, 210347, 210349, 211016);
+DELETE FROM `gameobject` WHERE `id` IN (37, 38, 59, 167, 249, 251, 254, 337, 711, 1593, 1599, 1631, 1632, 1638, 1720, 1738, 1739, 1752, 1753, 1754, 1755, 1763, 1798, 1803, 1818, 1821, 1828, 1830, 1871, 1888, 1889, 1890, 1896, 1905, 1906, 1912, 1922, 1927, 1930, 1931, 1932, 1935, 1938, 1942, 1965, 1968, 1993, 1994, 1995, 1996, 2003, 2004, 2007, 2008, 2035, 2130, 2148, 2149, 2151, 2188, 2413, 2414, 2572, 2573, 2649, 2650, 2658, 2842, 2848, 2858, 2933, 3085, 3089, 3224, 3239, 3253, 3254, 3265, 3270, 3306, 3638, 3639, 3760, 3761, 3767, 3768, 4004, 4005, 4102, 4103, 6293, 6294, 6295, 6906, 6907, 6908, 9847, 10388, 12144, 12666, 13756, 13952, 15001, 15002, 15003, 15004, 15005, 15885, 16431, 17184, 17188, 17189, 18046, 18084, 18085, 18087, 19000, 19001, 19002, 19003, 19004, 19005, 19006, 19007, 19008, 19009, 19010, 19011, 19012, 19013, 19014, 19026, 19029, 19031, 19032, 19034, 19035, 19036, 19037, 19038, 19039, 19040, 19041, 19042, 19043, 19044, 19045, 19046, 19047, 19048, 19049, 19050, 19051, 19052, 19053, 19054, 19055, 19056, 19057, 19058, 19059, 19060, 19061, 19062, 19063, 19064, 19065, 19066, 19067, 19068, 19069, 19070, 19071, 19072, 19073, 19074, 19075, 19076, 19077, 19078, 19079, 19080, 19081, 19082, 19083, 19084, 19085, 19086, 19087, 19088, 19089, 19090, 19091, 19092, 19093, 19094, 19095, 19096, 19097, 19098, 19099, 19100, 19101, 19102, 19103, 19104, 19105, 19106, 19107, 19108, 19109, 19110, 19111, 19112, 19113, 19114, 19115, 19116, 19117, 19118, 19119, 19120, 19121, 19122, 19123, 19124, 19125, 19126, 19127, 19128, 19129, 19130, 19131, 19132, 19133, 19134, 19135, 19136, 19137, 19138, 19139, 19140, 19141, 19142, 19143, 19144, 19145, 19146, 19147, 19148, 19149, 19150, 19151, 19152, 19153, 19154, 19155, 19156, 19157, 19158, 19159, 19160, 19161, 19162, 19163, 19164, 19165, 19166, 19167, 19168, 19169, 19170, 19171, 19172, 19173, 19174, 19175, 19176, 19177, 19178, 19179, 19180, 19181, 19182, 19183, 19184, 19185, 19186, 19187, 19188, 19189, 19190, 19191, 19192, 19193, 19194, 19195, 19196, 19197, 19198, 19199, 19200, 19201, 19202, 19203, 19204, 19205, 19206, 19207, 19208, 19209, 19210, 19211, 19212, 19213, 19214, 19215, 19216, 19217, 19218, 19219, 19220, 19221, 19222, 19223, 19224, 19225, 19226, 19227, 19228, 19229, 19230, 19231, 19232, 19233, 19234, 19235, 19236, 19237, 19238, 19239, 19240, 19241, 19242, 19243, 19244, 19245, 19246, 19247, 19248, 19249, 19250, 19251, 19252, 19253, 19254, 19255, 19256, 19257, 19258, 19259, 19260, 19261, 19262, 19263, 19264, 19265, 19266, 19267, 19268, 19269, 19270, 19271, 19272, 19273, 19274, 19275, 19276, 19277, 19278, 19279, 19280, 19281, 19282, 19285, 19286, 19287, 19288, 19289, 19290, 19291, 19292, 19293, 19294, 19295, 19296, 19297, 19298, 19299, 19301, 19302, 19303, 19304, 19305, 19306, 19307, 19308, 19309, 19311, 19312, 19313, 19314, 19315, 19316, 19317, 19318, 19319, 19320, 19321, 19322, 19323, 19324, 19325, 19326, 19327, 19328, 19329, 19330, 19331, 19332, 19333, 19334, 19335, 19336, 19337, 19338, 19339, 19340, 19341, 19342, 19343, 19344, 19345, 19346, 19347, 19348, 19349, 19350, 19351, 19352, 19353, 19354, 19355, 19356, 19357, 19358, 19359, 19360, 19361, 19362, 19363, 19364, 19365, 19366, 19367, 19368, 19369, 19370, 19371, 19372, 19374, 19375, 19376, 19377, 19378, 19379, 19380, 19381, 19382, 19383, 19384, 19385, 19386, 19387, 19388, 19389, 19390, 19391, 19392, 19393, 19394, 19395, 19396, 19397, 19398, 19399, 19400, 19401, 19402, 19403, 19404, 19405, 19406, 19407, 19408, 19409, 19410, 19411, 19412, 19413, 19414, 19415, 19416, 19417, 19418, 19419, 19420, 19421, 19422, 19423, 19424, 19425, 19426, 19427, 19428, 19429, 19430, 19431, 19432, 19433, 19434, 19435, 19436, 19437, 19438, 19439, 19440, 19441, 19442, 19443, 19444, 19445, 19446, 19447, 19448, 19449, 19450, 19451, 19452, 19453, 19454, 19455, 19456, 19457, 19458, 19459, 19460, 19461, 19462, 19463, 19464, 19465, 19466, 19467, 19468, 19469, 19470, 19471, 19472, 19473, 19474, 19475, 19476, 19477, 19478, 19479, 19480, 19481, 19482, 19483, 19484, 19485, 19486, 19487, 19488, 19489, 19490, 19491, 19492, 19493, 19494, 19495, 19496, 19497, 19498, 19499, 19500, 19501, 19502, 19503, 19504, 19505, 19506, 19507, 19508, 19509, 19510, 19511, 19512, 19513, 19514, 19515, 19516, 19517, 19518, 19519, 19520, 19521, 19522, 19523, 19524, 19525, 19526, 19527, 19528, 19529, 19530, 19531, 19532, 19533, 19536, 19537, 19577, 19582, 19584, 19588, 19589, 19593, 19604, 19605, 19606, 19607, 19608, 19609, 19610, 19611, 19612, 19613, 19614, 19615, 19616, 19617, 19618, 19619, 19620, 19621, 19622, 19623, 19624, 19625, 19626, 19627, 19628, 19629, 19630, 19631, 19632, 19633, 19634, 19635, 19636, 19637, 19638, 19639, 19640, 19641, 19642, 19643, 19644, 19645, 19646, 19647, 19648, 19649, 19650, 19651, 19652, 19653, 19654, 19655, 19656, 19657, 19658, 19659, 19660, 19661, 19662, 19663, 19664, 19665, 19848, 19849, 19850, 19851, 19852, 19853, 19854, 19855, 19856, 19857, 19858, 19859, 19901, 19902, 20352, 20356, 20811, 20812, 20816, 20817, 20818, 20819, 20820, 20821, 20822, 20823, 20824, 20827, 20850, 20873, 20874, 20875, 20876, 20878, 20879, 20881, 20924, 20926, 20972, 20983, 21015, 21016, 21282, 21511, 21628, 21629, 21630, 21631, 21653, 21654, 21655, 21656, 22205, 22207, 22208, 22249, 22256, 22542, 22618, 22663, 22796, 22797, 22798, 22799, 22800, 22801, 22802, 22808, 22809, 22810, 22816, 22817, 23505, 23880, 23881, 24397, 24493, 24500, 24501, 24502, 24503, 24504, 24505, 24510, 24511, 25334, 25342, 25352, 25355, 25356, 25357, 26480, 26482, 26483, 26485, 26486, 26487, 26488, 26489, 26490, 26491, 26492, 26493, 26497, 26498, 28048, 28049, 28050, 28051, 28052, 28053, 28054, 28055, 28056, 28605, 28606, 28607, 28608, 28609, 28610, 28611, 28612, 28613, 31576, 32056, 32057, 32109, 32110, 32348, 32350, 32351, 32352, 32353, 32354, 32356, 32357, 32359, 32360, 32361, 32362, 32363, 32364, 32365, 32366, 32367, 32368, 32370, 32371, 32372, 32373, 32374, 32375, 32376, 32377, 32378, 32379, 32380, 32381, 32384, 32386, 32388, 32390, 32392, 32393, 32394, 32395, 32396, 32397, 32398, 32399, 32400, 32401, 32402, 32403, 32405, 32406, 32407, 32408, 32409, 32410, 32411, 32412, 32413, 32414, 32417, 32418, 32419, 32420, 32421, 32423, 32428, 32430, 32434, 32436, 32438, 32440, 32595, 32783, 32784, 32785, 32786, 32787, 32788, 32789, 32790, 32791, 32792, 32793, 34357, 34358, 34359, 34361, 34362, 34363, 35572, 35573, 35574, 35575, 35576, 35577, 35578, 35579, 35580, 35581, 35582, 35583, 35584, 35585, 35588, 35589, 36645, 36990, 36991, 36992, 36993, 36994, 36995, 37473, 37474, 37475, 37476, 37477, 37479, 37480, 37481, 37482, 37483, 37484, 37485, 37486, 37487, 37488, 37489, 37490, 37491, 37492, 37493, 38019, 38020, 38021, 38022, 38023, 38024, 38025, 38026, 38027, 40198, 40299, 55616, 56820, 57709, 57710, 57725, 57726, 57727, 57748, 57749, 57750, 57751, 57752, 57753, 59529, 59530, 60394, 61927, 61928, 61952, 61953, 64849, 64850, 67234, 69425, 69431, 70518, 70519, 70520, 70521, 70522, 70523, 70524, 70525, 70526, 70527, 70528, 70530, 70531, 70532, 70533, 70534, 70535, 70536, 70537, 70538, 70539, 70540, 70541, 70542, 70543, 70544, 70545, 70546, 70547, 70548, 70549, 70551, 70552, 70553, 70554, 70555, 70556, 70557, 74077, 74446, 74731, 80024, 82139, 82140, 83763, 88498, 91738, 92098, 94189, 100028, 100035, 101750, 111993, 111994, 111995, 111996, 111998, 112000, 112015, 112023, 112024, 112028, 112068, 112214, 112318, 113540, 113791, 138316, 138317, 138318, 138493, 140106, 140107, 140108, 140211, 140212, 140213, 140357, 140358, 140359, 140360, 140931, 141076, 141077, 141078, 141839, 141840, 141841, 141843, 141845, 141860, 141861, 141971, 142018, 142019, 142020, 142021, 142036, 142071, 142101, 142111, 142119, 142196, 142693, 142708, 142709, 142710, 142711, 142947, 142948, 142958, 142966, 143332, 143987, 143988, 143989, 143990, 144570, 146088, 146089, 146090, 147065, 147078, 147079, 147080, 147536, 147557, 148507, 148890, 148896, 148897, 148907, 148908, 149420, 149480, 149481, 149482, 149483, 150075, 150713, 151286, 151980, 151981, 151982, 151992, 152098, 152324, 152608, 152619, 153113, 153578, 153583, 163313, 164644, 164651, 164699, 164700, 164701, 164702, 164703, 164705, 165557, 169286, 170033, 170034, 170047, 170053, 170054, 170067, 171567, 171568, 171619, 171620, 171621, 171622, 171648, 171649, 171674, 171675, 171676, 171677, 171718, 171719, 171720, 171721, 171757, 171758, 171759, 171760, 171761, 171762, 171763, 172943, 172998, 172999, 173000, 173001, 173002, 173003, 173004, 173005, 173124, 173126, 173201, 173227, 173228, 173229, 173230, 173231, 174797, 174864, 174865, 174866, 174867, 174868, 174869, 174870, 174871, 174946, 174968, 175087, 175226, 175230, 175233, 175320, 175329, 175330, 175331, 175406, 175591, 175592, 175593, 175594, 175595, 175596, 175597, 175598, 175599, 175600, 175601, 175602, 175603, 175604, 175605, 175630, 175631, 175632, 175644, 175645, 175646, 175647, 175648, 175649, 175650, 175651, 175652, 175653, 175654, 175655, 175656, 175657, 175663, 175664, 175665, 175666, 175667, 175668, 175671, 175672, 175674, 175677, 175678, 175864, 175904, 175948, 176004, 176005, 176006, 176007, 176008, 176009, 176010, 176011, 176012, 176013, 176014, 176015, 176016, 176017, 176018, 176019, 176020, 176021, 176022, 176023, 176024, 176025, 176026, 176027, 176028, 176029, 176030, 176031, 176032, 176033, 176034, 176035, 176036, 176037, 176038, 176039, 176040, 176041, 176042, 176043, 176044, 176045, 176046, 176047, 176048, 176049, 176050, 176051, 176052, 176053, 176054, 176055, 176056, 176057, 176058, 176059, 176060, 176061, 176062, 176063, 176064, 176065, 176066, 176067, 176068, 176069, 176070, 176071, 176072, 176073, 176074, 176075, 176076, 176077, 176078, 176079, 176080, 176081, 176082, 176083, 176084, 176085, 176098, 176099, 176100, 176101, 176102, 176103, 176104, 176105, 176106, 176107, 176108, 176109, 176113, 176191, 176197, 176198, 176200, 176204, 176210, 176265, 176282, 176290, 176292, 176293, 176294, 176361, 176364, 176365, 176369, 176370, 176393, 176505, 176632, 176642, 176705, 176786, 176791, 176885, 176886, 176887, 176888, 176889, 176890, 176891, 176892, 176904, 176996, 177084, 177223, 177237, 177238, 177244, 177274, 177289, 177290, 177291, 177364, 177424, 178400, 179147, 179586, 179587, 179588, 179597, 179682, 179846, 179924, 179963, 180245, 180323, 180367, 180526, 180688, 180689, 181099, 181137, 181167, 181229, 181260, 181596, 181639, 182650, 182654, 182655, 182656, 182657, 182658, 182659, 182660, 182666, 182698, 182703, 182707, 182708, 182709, 182710, 182714, 182715, 182718, 182719, 182721, 182722, 182728, 182837, 182838, 182848, 183409, 183445, 184084, 184127, 184128, 184129, 184130, 184131, 184132, 184161, 184171, 184172, 184173, 184174, 184175, 184176, 184177, 184178, 184179, 184180, 184181, 184182, 184183, 184184, 184185, 184186, 184187, 184188, 184189, 184190, 184191, 184192, 184193, 184194, 184195, 184196, 184197, 184198, 184199, 184200, 184201, 184202, 184206, 184207, 184208, 184209, 184210, 184211, 184213, 184214, 184215, 184216, 184217, 184218, 184219, 184220, 184221, 184222, 184223, 184224, 184225, 184226, 184227, 184228, 184247, 184461, 184468, 184524, 184525, 184526, 184527, 184528, 184529, 184599, 184618, 184648, 184649, 184650, 184651, 184733, 184818, 184847, 185433, 185471, 186052, 186132, 186898, 187260, 187366, 188177, 188178, 190000, 190001, 190007, 190008, 190009, 190010, 190011, 190400, 190671, 190682, 191621, 191714, 191715, 191846, 191847, 191848, 191849, 192012, 192013, 192136, 192137, 192138, 192139, 192170, 192387, 192388, 192389, 192391, 192392, 192393, 192394, 192464, 192465, 192466, 192467, 192468, 192489, 192490, 192499, 192500, 192503, 192504, 192505, 192506, 192507, 192508, 192509, 192510, 192511, 192512, 192513, 192514, 192517, 192526, 192527, 192528, 192529, 192530, 192531, 192570, 192571, 192585, 192635, 192663, 192664, 192665, 192666, 192671, 192672, 192673, 192674, 192677, 192678, 192679, 192680, 192681, 192682, 192704, 192705, 192732, 192733, 192775, 192776, 192863, 192864, 192903, 192904, 193010, 193011, 193031, 193032, 193033, 193034, 193035, 193036, 193037, 193039, 193040, 193041, 193042, 193182, 193183, 193210, 193211, 193212, 193213, 193457, 193458, 193459, 193460, 193461, 193462, 193463, 193464, 193465, 193587, 193588, 193600, 193601, 193608, 193609, 194030, 194031, 194235, 194236, 194338, 194339, 194576, 194578, 194579, 194580, 194581, 194582, 194583, 194584, 194585, 194586, 194587, 195477, 195478, 195479, 195480, 195481, 195486, 195592, 195593, 195594, 195595, 195596, 195598, 195624, 195625, 195626, 195627, 195628, 195629, 196391, 196392, 196417, 196467, 196468, 196469, 196470, 200000, 200001, 200292, 200293, 200294, 200295, 201747, 201756, 201762, 201763, 201764, 201765, 201766, 201767, 201849, 201850, 201960, 201961, 201984, 202078, 202209, 202210, 202265, 202266, 202315, 202316, 202317, 202318, 202347, 202348, 202349, 202350, 202698, 202718, 202823, 202825, 202827, 202829, 203433, 203434, 203435, 203436, 203606, 203959, 203960, 203961, 203962, 204051, 204052, 204053, 204054, 204285, 204286, 204287, 204288, 204644, 204648, 204649, 204652, 204653, 204654, 204659, 204660, 204661, 204857, 204858, 204863, 204864, 204963, 204964, 206035, 206036, 206345, 206346, 206347, 206348, 206362, 206363, 206364, 206365, 206438, 206439, 206660, 206661, 206968, 206969, 207339, 207340, 207341, 207342, 207366, 207367, 207368, 207369, 207370, 207371, 207372, 207373, 207746, 207747, 207841, 207842, 207879, 207880, 207895, 207896, 207897, 207898, 207899, 207900, 207976, 207977, 207978, 207979, 207980, 207981, 208349, 208350, 208513, 208514, 208515, 208516, 208517, 208518, 208519, 208520, 208521, 208522, 208523, 208524, 208525, 208526, 208527, 208528, 208532, 208837, 208838, 208922, 208923, 208924, 208925, 209060, 209061, 209062, 209063, 209839, 209840, 209841, 210008, 210009, 210010, 210011, 210012, 210013, 210014, 210077, 210078, 210095, 210096, 210104, 210105, 210114, 210115, 210133, 210134, 210135, 210136, 210170, 210215, 210286, 210312, 210313, 210327, 210328, 210329, 210330, 210331, 210332, 210334, 210335, 210336, 210337, 210338, 210339, 210341, 210342, 210343, 210344, 210345, 210347, 210349, 211016);
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=2933 AND `source_type`=1;
diff --git a/sql/updates/world/2015_05_10_00_world.sql b/sql/updates/world/2015_05_10_00_world.sql
new file mode 100644
index 00000000000..d1117dc931d
--- /dev/null
+++ b/sql/updates/world/2015_05_10_00_world.sql
@@ -0,0 +1 @@
+DELETE FROM `gameobject` WHERE `id` IN (80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 376, 377, 378, 379, 380, 381, 382, 387, 388, 389, 1162, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1572, 1573, 1595, 1596, 1597, 1598, 1630, 1633, 1634, 1639, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1668, 1669, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2036, 2037, 2038, 2048, 2049, 2050, 2051, 2052, 2670, 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2684, 2685, 2968, 2969, 2970, 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 3194, 3195, 3196, 3197, 3198, 3199, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3215, 3216, 3217, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3276, 3314, 4097, 4098, 4099, 4100, 4101, 4104, 4105, 4106, 4115, 4116, 4117, 4118, 4119, 4120, 4121, 4122, 4123, 4132, 4133, 4134, 4135, 4136, 4137, 4138, 12351, 12352, 12353, 12354, 12355, 12356, 12357, 12358, 12359, 12360, 12361, 12362, 12363, 12364, 12365, 12366, 12893, 12894, 12895, 12896, 12897, 12898, 12899, 12900, 12901, 12902, 12903, 12904, 12907, 12908, 12909, 13348, 13349, 13350, 13351, 13352, 13353, 13354, 13355, 13356, 13357, 13358, 13405, 13406, 13407, 13408, 13409, 13410, 13411, 13412, 16396, 18033, 18034, 19028, 19033, 19545, 19546, 19553, 19554, 19555, 19556, 19557, 19558, 19559, 19560, 19561, 19562, 19563, 19564, 19565, 19566, 19567, 19568, 19569, 19570, 19571, 19572, 19573, 19574, 19575, 19576, 19578, 19579, 19580, 19581, 19583, 19585, 19839, 19840, 19841, 19842, 19843, 19844, 19845, 19846, 19847, 19863, 21053, 21054, 21055, 21056, 21057, 21058, 21059, 21060, 21061, 21062, 21063, 21064, 21065, 21066, 21067, 21068, 21069, 21070, 21071, 21072, 21073, 21074, 21075, 21076, 21077, 21078, 21079, 21080, 21081, 21082, 21083, 21084, 21085, 21086, 21087, 21088, 21089, 21509, 38927, 41195, 50484, 50485, 50486, 50487, 50488, 50489, 50490, 50491, 50492, 50493, 50494, 50495, 50496, 50497, 50498, 50499, 50500, 50501, 50502, 50503, 50504, 50505, 50506, 50507, 50508, 50509, 50510, 50511, 50512, 50513, 50514, 50515, 50516, 50517, 50518, 50519, 50520, 50521, 50522, 50523, 50524, 50525, 50526, 50527, 50528, 50529, 50530, 50531, 50532, 50533, 50534, 50535, 50536, 50537, 50538, 55774, 113528, 123215, 123216, 123217, 146079, 146080, 146081, 148424, 148425, 148426, 149024, 151974, 151975, 151976, 151977, 151978, 151979, 151983, 151984, 152574, 152575, 152576, 152577, 152578, 152579, 152580, 152581, 152582, 152584, 152585, 152586, 152587, 165549, 165558, 176348, 176794, 176795, 176796, 176797, 176798, 176799, 176800, 176801, 176945, 176946, 176947, 176948, 176949, 176950, 176958, 176959, 176960, 176961, 176967, 176968, 176969, 176970, 176971, 176972, 176973, 176978, 176979, 176980, 176981, 176982, 176983, 176984, 176985, 176986, 176987, 176988, 176989, 176990, 176991, 176992, 176993, 176994, 177104, 177105, 177106, 177107, 177108, 177109, 177110, 177111, 177112, 177113, 177114, 177115, 177116, 177117, 177118, 177119, 177120, 177121, 177122, 177123, 177124, 177125, 177126, 177127, 177128, 177129, 177130, 177131, 177132, 177133, 177134, 177135, 177136, 177137, 177138, 177139, 177140, 177141, 177142, 177143, 177144, 177145, 177146, 177147, 177148, 177149, 177150, 177151, 177152, 177153, 177154, 177155, 177185, 177186, 179144, 179224, 181361, 181367, 181368, 181691, 181692, 181693, 181760, 181761, 181762, 181763, 181764, 181765, 181776, 181777, 181778, 181791, 181792, 181793, 181794, 181795, 181796, 181826, 181827, 181830, 181934, 181935, 181936, 181937, 181938, 181939, 181940, 181941, 181942, 181943, 181944, 181945, 181946, 181947, 181948, 181949, 181950, 181951, 181952, 181953, 181967, 181968, 181969, 181970, 181971, 181972, 181973, 181974, 181975, 181976, 181977, 181985, 181986, 182002, 182003, 182004, 182014, 182018, 182020, 182021, 182022, 182023, 182028, 182029, 182100, 182101, 182102, 182103, 182104, 182105, 182109, 182113, 182123, 182124, 182125, 182126, 182129, 182130, 182131, 182132, 182133, 182134, 182135, 182136, 182137, 182138, 182168, 182169, 182170, 182171, 182172, 182177, 182178, 182179, 182180, 182181, 182189, 182190, 182191, 182192, 182193, 182194, 182212, 182283, 182284, 182285, 182286, 182287, 182288, 182289, 182290, 182291, 182292, 182293, 182294, 182295, 182296, 182309, 182310, 182311, 182312, 182313, 182314, 182347, 182348, 182370, 182371, 182372, 182373, 182374, 182375, 182379, 182380, 182381, 182382, 182383, 182384, 182385, 182394, 182395, 182396, 182397, 182398, 182399, 182406, 182407, 182408, 182409, 182410, 182411, 182412, 182511, 182512, 182513, 182514, 182515, 182516, 182517, 182518, 182552, 182553, 182554, 182555, 182556, 182557, 183199, 183200, 183201, 183205, 183206, 183207, 183208, 183209, 183210, 183211, 183212, 183213, 183214, 183215, 183216, 183231, 183232, 183233, 183234, 183235, 183236, 183237, 183238, 183239, 183240, 183241, 183242, 183243, 183244, 183245, 183246, 183247, 183248, 183249, 183250, 183251, 183252, 183253, 183254, 183255, 183256, 183257, 183258, 183259, 183260, 183261, 183262, 183263, 183264, 183350, 183351, 183468, 183469, 183470, 183471, 183472, 183473, 183474, 183475, 183476, 183477, 183478, 183479, 183480, 183481, 183482, 183485, 183486, 183487, 183853, 183854, 183921, 184057, 184058, 184059, 184060, 184061, 184062, 184063, 184064, 184065, 184066, 184067, 184068, 184074, 184149, 184150, 184151, 184153, 184154, 184155, 184156, 184157, 184158, 184159, 184160, 184248, 184249, 184250, 184256, 184257, 184258, 184259, 184260, 184261, 184262, 184263, 184264, 184266, 184267, 184268, 184269, 184270, 184271, 184272, 184291, 184292, 184293, 184402, 184403, 184404, 184405, 184406, 184407, 184408, 184409, 184410, 184411, 184412, 184518, 184519, 184520, 184521, 184522, 184523, 184533, 184534, 184535, 184536, 184537, 184538, 184539, 184540, 184541, 184542, 184543, 184544, 184545, 184546, 184547, 184548, 184549, 184550, 184551, 184552, 184553, 184624, 184625, 184626, 184627, 184628, 184629, 184630, 185062, 185063, 185064, 185065, 185066, 185067, 185068, 185069, 185070, 185071, 185072, 185073, 185074, 185075, 185076, 185077, 185078, 185079, 185080, 185081, 185082, 185083, 185084, 185085, 185086, 185087, 185088, 185089, 185090, 185091, 185092, 185093, 185094, 185095, 185096, 185097, 185098, 185099, 185100, 185101, 186240, 186241, 186242, 186479, 186480, 186481, 186519, 186520, 186521, 186522, 186523, 186524, 186525, 186526, 186527, 186528, 186529, 186530, 186531, 186532, 186533, 186534, 186535, 186536, 186537, 186538, 186539, 186540, 186541, 186542, 186543, 186544, 186545, 186546, 186547, 186548, 186549, 186550, 186551, 186552, 186553, 186554, 186577, 186578, 186579, 186580, 186603, 186604, 186757, 187275, 187276, 187277, 187278, 187279, 187280, 187281, 187282, 187283, 187284, 187285, 187286, 187287, 187297, 187298, 187300, 187301, 187302, 187303, 187304, 187305, 187306, 187307, 187312, 187313, 187324, 187325, 187326, 187327, 187328, 187338, 187339, 187341, 187343, 187346, 187348, 187349, 187350, 187351, 187352, 187353, 187354, 187355, 188265, 188266, 188267, 188268, 188269, 188270, 188271, 188272, 188273, 188274, 188275, 188276, 188277, 188278, 188279, 188280, 188281, 188282, 188283, 188284, 188285, 188286, 188290, 188291, 188292, 188293, 188294, 188295, 188296, 188297, 188298, 188299, 188300, 188301, 188302, 188303, 188304, 188305, 188306, 188307, 188308, 188309, 188310, 188311, 188312, 188313, 188314, 188315, 188316, 188317, 188318, 188319, 188320, 188321, 188322, 188323, 188324, 188325, 188326, 188327, 188328, 188329, 188330, 188331, 188332, 188333, 188334, 188335, 188336, 188337, 188338, 188339, 188371, 188372, 188373, 188375, 188376, 188377, 188378, 188379, 188380, 188381, 188382, 188383, 188387, 188388, 188389, 188390, 188391, 188392, 188393, 188394, 188395, 188398, 188399, 188400, 188401, 188402, 188403, 188404, 188405, 188406, 188407, 188408, 188409, 188410, 188411, 188412, 188413, 188414, 188496, 188535, 190179, 190180, 190662, 190789, 190791, 190792, 190793, 190799, 190800, 190801, 190802, 190804, 190805, 190806, 190807, 190808, 190809, 190810, 190811, 190812, 190813, 190814, 190815, 190859, 190860, 190861, 190862, 190863, 190864, 190865, 190866, 190867, 190868, 190869, 190870, 190871, 190872, 190873, 190874, 190875, 190876, 190877, 190878, 190879, 190880, 190881, 190882, 190883, 190884, 190885, 190886, 190887, 190888, 190889, 190890, 190891, 190892, 190893, 190894, 190895, 190896, 190898, 190899, 190900, 190901, 190902, 190903, 190904, 190905, 190906, 190907, 190908, 190909, 190910, 190911, 190912, 190913, 190919, 190920, 190921, 190922, 190923, 190924, 190925, 190926, 190927, 190928, 190929, 190930, 190931, 190932, 190933, 190934, 190935, 191165, 191166, 191167, 191168, 191169, 191170, 191171, 191172, 191173, 191174, 191175, 191176, 191177, 191178, 191190, 191191, 191203, 191204, 191205, 191206, 191207, 191208, 191223, 191224, 191261, 191262, 191263, 191264, 191265, 191266, 191267, 191268, 191269, 191270, 191271, 191511, 191512, 191513, 191514, 191515, 191516, 191517, 191660, 191661, 192038, 192044, 192161, 192162, 192166, 192252, 192253, 192254, 192255, 192266, 192267, 192268, 192269, 192270, 192271, 192272, 192273, 192274, 192275, 192276, 192277, 192278, 192279, 192280, 192281, 192282, 192283, 192284, 192285, 192286, 192287, 192288, 192289, 192290, 192291, 192292, 192299, 192304, 192305, 192306, 192307, 192308, 192309, 192310, 192312, 192313, 192314, 192316, 192317, 192318, 192319, 192320, 192321, 192322, 192323, 192324, 192325, 192326, 192327, 192328, 192329, 192330, 192331, 192332, 192333, 192334, 192335, 192336, 192338, 192339, 192349, 192350, 192351, 192352, 192353, 192354, 192355, 192356, 192357, 192358, 192359, 192360, 192361, 192362, 192363, 192364, 192366, 192367, 192368, 192369, 192370, 192371, 192372, 192373, 192374, 192375, 192376, 192378, 192379, 192400, 192401, 192406, 192407, 192408, 192409, 192414, 192415, 192416, 192417, 192418, 192423, 192424, 192425, 192426, 192427, 192428, 192429, 192430, 192431, 192432, 192433, 192434, 192435, 192440, 192441, 192442, 192443, 192444, 192449, 192450, 192451, 192452, 192453, 192458, 192459, 192460, 192461, 192522, 192575, 192576, 192577, 192578, 192579, 192657, 192658, 192714, 192715, 192716, 192718, 192722, 192723, 192724, 192725, 192726, 192727, 192728, 192729, 192730, 192731, 192767, 192768, 192769, 192770, 192771, 192772, 192787, 192797, 192798, 192799, 192800, 192801, 192802, 192803, 192804, 192805, 192806, 192807, 192808, 192809, 192810, 192811, 192812, 192813, 192814, 192815, 192816, 192817, 192821, 192822, 192859, 192860, 192919, 192920, 192921, 192922, 192923, 192924, 192925, 192926, 192927, 192928, 192929, 192930, 192931, 192934, 192935, 192936, 192937, 192938, 192953, 192954, 192955, 192956, 192957, 192958, 192959, 192960, 192961, 192962, 192963, 192964, 192965, 192966, 192967, 192968, 192969, 192970, 192971, 192972, 192973, 192974, 192975, 192976, 192977, 192978, 192979, 192980, 192981, 192982, 192983, 192985, 192986, 192987, 192988, 192989, 192990, 192991, 192992, 192993, 192994, 192995, 192996, 192997, 192999, 193000, 193001, 193002, 193029, 193049, 193050, 193096, 193097, 193098, 193099, 193100, 193101, 193102, 193103, 193104, 193105, 193106, 193107, 193108, 193109, 193110, 193111, 193112, 193113, 193114, 193115, 193116, 193117, 193118, 193119, 193120, 193121, 193122, 193123, 193124, 193127, 193128, 193129, 193130, 193131, 193132, 193133, 193134, 193135, 193136, 193137, 193138, 193139, 193140, 193141, 193142, 193143, 193144, 193145, 193146, 193147, 193148, 193149, 193150, 193151, 193152, 193153, 193154, 193155, 193156, 193157, 193158, 193159, 193160, 193161, 193162, 193163, 193164, 193165, 193191, 193192, 193193, 193198, 193428, 193429, 193430, 193431, 193432, 193433, 193434, 193435, 193436, 193437, 193438, 193439, 193440, 193441, 193442, 193443, 193444, 193445, 193446, 193447, 193448, 193449, 193450, 193451, 193452, 193453, 193454, 193455, 193456, 193466, 193467, 193468, 193469, 193470, 193472, 193473, 193474, 193475, 193476, 193477, 193478, 193479, 193480, 193481, 193482, 193483, 193484, 193485, 193486, 193487, 193488, 193489, 193490, 193491, 193492, 193493, 193494, 193495, 193496, 193497, 193498, 193499, 193500, 193501, 193502, 193503, 193504, 193505, 193506, 193507, 193508, 193509, 193510, 193511, 193512, 193513, 193514, 193515, 193516, 193517, 193518, 193519, 193520, 193521, 193522, 193523, 193524, 193525, 193526, 193527, 193528, 193529, 193530, 193531, 193532, 193533, 193534, 193535, 193536, 193537, 193538, 193539, 193540, 193541, 193542, 193543, 193544, 193545, 193546, 193547, 193548, 193549, 193550, 193551, 193552, 193553, 193554, 193555, 193556, 193557, 193558, 193559, 193797, 193798, 193799, 193800, 193801, 193802, 193803, 193804, 193805, 193806, 193807, 193808, 193809, 193810, 193811, 193812, 193813, 193814, 193815, 193816, 193817, 193818, 193819, 193820, 193821, 193822, 193823, 193824, 193825, 193826, 193827, 193828, 193829, 193830, 193831, 193832, 193833, 193834, 193835, 193836, 193837, 193838, 193839, 193840, 193841, 193842, 193843, 193844, 193845, 193846, 193847, 193848, 193849, 193850, 193851, 193852, 193853, 193854, 193855, 193856, 193857, 193858, 193859, 193860, 193861, 193862, 193863, 193864, 193865, 193866, 193867, 193868, 193869, 193870, 193871, 193872, 193873, 193874, 193875, 193876, 193877, 193878, 193879, 193880, 193881, 193882, 193883, 193884, 193885, 193886, 193887, 193888, 193889, 193890, 193891, 193892, 193893, 193894, 193895, 193940, 193985, 194163, 194164, 194165, 194166, 194167, 194168, 194169, 194170, 194171, 194172, 194176, 194177, 194178, 194205, 194206, 194207, 194589, 194590, 194591, 194592, 194593, 194594, 194595, 194596, 194597, 194598, 194599, 194600, 194601, 194602, 194603, 194604, 194605, 194606, 194607, 194608, 194632, 194648, 194649, 194780, 194781, 194782, 194783, 194784, 194785, 194786, 194811, 194812, 194813, 194814, 194815, 194816, 194817, 194818, 194819, 194832, 194833, 194834, 194835, 194836, 194837, 194838, 194839, 194840, 194841, 194842, 194843, 194844, 194845, 194846, 194847, 194848, 194849, 194850, 194851, 194852, 194853, 194854, 194855, 194856, 194857, 194858, 194859, 194860, 194861, 194862, 194863, 194864, 194865, 194866, 194867, 194868, 194869, 194870, 194871, 194872, 194873, 194874, 194875, 194876, 194877, 194878, 194879, 194880, 194881, 194882, 194883, 194884, 194885, 194886, 194887, 194888, 194889, 194890, 194891, 194892, 194893, 194894, 194895, 194896, 194897, 194898, 194899, 194900, 194901, 195008, 195009, 195010, 195041, 195098, 195099, 195100, 195101, 195102, 195103, 195104, 195105, 195106, 195114, 195115, 195117, 196406, 196409, 196410, 196420, 196421, 196422, 196423, 196424, 196425, 196426, 196427, 196428, 196429, 196430, 196431, 196432, 196433, 196434, 196435, 196436, 196437, 196438, 196441, 196442, 196443, 196444, 196446, 196447, 196448, 196449, 196450, 196451, 196452, 196453, 196454, 196455, 196456, 196463, 196818, 196819, 196820, 196821, 196822, 196823, 196824, 196825, 196826, 196827, 196828, 196841, 196843, 196844, 196850, 196851, 196866, 196867, 196868, 196869, 196873, 196875, 196876, 196877, 196881, 196882, 201604, 201731, 201783, 201784, 201785, 201786, 201787, 201788, 201854, 201859, 201860, 201861, 201862, 201863, 201864, 201865, 202117, 202118, 202119, 202120, 202121, 202166, 202171, 202213, 202297, 202299, 202326, 202327, 202328, 202329, 202330, 202331, 202332, 202333, 202334, 202341, 202342, 202343, 202344, 202345, 202346, 202354, 202355, 202356, 202369, 202370, 202371, 202372, 202373, 202374, 202377, 202378, 202379, 202380, 202381, 202382, 202383, 202384, 202385, 202386, 202388, 202389, 202390, 202424, 202425, 202426, 202427, 202428, 202429, 202430, 202431, 202432, 202435, 202454, 202455, 202456, 202457, 202458, 202459, 202481, 202482, 202483, 202484, 202485, 202487, 202488, 202489, 202490, 202491, 202492, 202493, 202496, 202497, 202498, 202499, 202500, 202501, 202502, 202503, 202504, 202505, 202506, 202507, 202508, 202509, 202510, 202511, 202512, 202513, 202514, 202515, 202518, 202519, 202520, 202521, 202522, 202523, 202524, 202526, 202527, 202528, 202529, 202530, 202531, 202532, 203417, 203420, 203421, 203422, 203423, 203424, 203425, 203426, 203447, 203827, 203832, 203833, 203834, 203835, 203836, 203864, 203865, 203866, 203867, 203868, 203869, 203870, 203871, 203872, 203873, 203874, 203875, 203876, 203877, 203878, 203879, 203880, 203881, 203882, 203883, 203884, 203885, 203886, 203887, 203888, 203889, 203890, 203891, 203892, 203893, 203894, 203895, 203896, 203897, 203898, 203899, 203900, 203901, 203902, 203903, 203904, 203905, 203906, 203907, 203908, 203909, 203910, 203911, 203912, 203913, 203914, 203915, 203916, 203917, 203918, 203919, 203920, 203921, 203922, 204530, 204573, 204801, 204802, 204803, 204883, 204961, 205067, 205135, 205136, 205388, 205389, 205491, 205492, 205501, 205502, 205503, 205504, 205505, 205509, 205510, 205511, 205512, 205513, 205515, 205516, 205517, 205518, 205519, 205520, 205521, 205522, 205523, 205971, 205972, 205973, 205974, 205975, 205976, 205977, 205978, 205979, 205980, 205981, 205982, 205983, 205984, 205985, 205986, 205987, 205988, 206089, 206090, 206091, 206282, 206283, 206284, 206285, 206286, 206316, 206317, 206421, 206422, 206423, 206424, 206425, 206426, 206427, 206428, 206429, 206430, 206431, 206432, 206433, 206434, 206435, 206436, 206437, 206440, 206441, 206442, 206443, 206444, 206445, 206446, 206447, 206448, 206449, 206450, 206451, 206452, 206453, 206454, 206455, 206456, 206457, 206458, 206459, 206460, 206461, 206462, 206463, 206464, 206465, 206466, 206467, 206468, 206469, 206470, 206471, 206472, 206473, 206474, 206475, 206476, 206477, 206478, 206479, 206480, 206481, 206482, 206483, 206484, 206485, 206486, 206487, 206488, 206489, 206490, 206491, 206492, 206493, 206494, 206495, 206496, 206497, 206511, 206512, 206513, 206514, 206515, 206516, 206518, 206519, 206520, 206521, 206522, 206523, 206524, 206525, 206526, 206527, 206528, 206680, 206681, 206766, 206851, 206855, 206865, 206866, 206867, 206868, 206935, 206948, 206949, 207164, 207235, 207236, 207237, 207238, 207239, 207240, 207241, 207242, 207243, 207244, 207245, 207246, 207258, 207311, 207312, 207313, 207314, 207315, 207316, 207317, 207318, 207319, 207345, 207360, 207570, 207756, 207757, 207758, 207759, 207760, 207761, 207762, 207948, 207949, 208295, 208334, 208413, 208414, 208415, 208416, 208417, 208418, 208421, 208422, 209666, 209667, 209668, 209758, 209759, 209760, 209764, 209765, 209766, 209767, 209768, 209769, 209770, 209771, 209864, 209865, 209866, 210092, 210093, 210094, 210121, 210147, 210148, 210149, 210150, 210151, 210152, 210153, 210154, 210155, 210156, 210166, 210167, 210168, 210169, 210171, 210172, 210173, 210174, 210585, 210586, 210587, 210588, 210589, 210590, 210592, 210593, 210594, 210595, 210596, 210598, 210599, 210600, 210601, 210624, 210630, 210631, 210632, 210633, 210639, 210640, 210641, 210642, 210643, 210644, 210645, 210646, 210647, 210648, 210649, 210682, 210874, 210875, 210876, 210877, 210878, 210879, 210880, 210881, 210884, 210885, 210886, 210910, 210911, 210912, 210920, 210926, 210927, 210928, 210994, 210995, 210996, 210997, 210998, 210999, 211000, 211101, 211102, 211103, 211104, 211105, 211203, 211214, 211215, 211216, 211217, 211218, 211221, 211222, 211223, 211224, 211227, 211232, 211233, 211234, 211235, 211236, 211237, 211239, 211250, 211251, 211286, 211287, 211288, 211289, 211320, 211321, 211403, 211407, 211462, 211463, 211467, 211468, 211469, 211470, 211471, 211472, 211473, 211629, 211630, 211631, 211632, 211633, 211634, 211635, 211636, 211637, 211638, 211639, 211641, 211697, 211698, 211722, 211723, 211724, 211725, 211726, 211727, 211728, 211729, 211730, 211731, 211732, 211733, 211734, 211735, 211736, 211737, 211738, 211739, 211740, 211741, 211742, 211743, 211744, 211745, 211746, 211747, 211748, 211749, 211750, 211751, 211767, 211886, 211887, 211888, 211889, 211890, 211891, 211892, 211893, 211894, 211895, 211896, 211897, 212049, 212050, 212051, 212052, 212053, 212054, 212055, 212056, 212057, 212058, 212059, 212072, 212073, 212088, 212138, 212139, 212140, 212141, 212142, 212143, 212144, 212145, 212147, 212148, 212150, 212151, 212152, 212194, 212195, 212202, 212203, 212204, 212206, 212326, 212327, 212328, 212329, 212330, 212331, 212332, 212333, 212334, 212335, 212336, 212337, 212338, 212339, 212340, 212341, 212342, 212343, 212344, 212345, 212351, 212354, 212355, 212364, 212366, 212367, 212368, 212369, 212370, 212371, 212372, 212373, 212374, 212403, 212443, 212989, 212990, 212991, 212992, 212993, 212994, 212995, 212996, 212997, 212998, 212999, 213000, 213001, 213002, 213003, 213005, 213006, 213007, 213008, 213009, 213010, 213011, 213012, 213013, 213014, 213015, 213016, 213017, 213018, 213019, 213020, 213021, 213022, 213023, 213024, 213025, 213026, 213027, 213171, 213202, 213203, 213204, 213205, 213206, 213207, 213208, 213209, 213210, 213211, 213212, 213213, 213214, 213215, 213216, 213217, 213218, 213219, 213220, 213221, 213222, 213253, 213367, 213424, 213425, 213426, 213440, 213441, 213442, 213464, 213465, 213652, 214137, 214138, 214139, 214140, 214141, 214142, 214143, 214144, 214145, 214146, 214147, 214148, 214149, 214150, 214151, 214152, 214153, 214254, 214255, 214256, 214257, 214262, 214263, 214264, 214265, 214266, 214267, 214268, 214269, 214270, 214271, 214272, 214273, 214274, 214275, 214276, 214358, 214359, 214360, 214362, 214363, 214364, 214369, 214370, 214371, 214375, 214376, 214377, 214378, 215275, 215589, 215590, 215591, 215592, 215593, 216098, 216341, 216410, 216627, 216942, 216943, 216944, 217759, 217760, 217761, 217762, 217765, 217766, 217767, 218120, 218121, 218122, 218123, 218124, 218125, 218126, 218127, 218128, 218129, 218130, 218131, 218132, 218133, 218134, 218135, 218136, 218137, 218138, 218139, 218140, 218141, 218142, 218143, 218144, 218145, 218146, 218147, 218148, 218149, 218150, 218151, 218152, 218153, 218154, 218155, 218156, 218157, 218158, 218159, 218160, 218161, 218162, 218163, 218164, 218165, 218166, 218167, 218168, 218169, 218170, 218171, 218172, 218173, 218174, 218175, 218176, 218177, 218178, 218179, 218180, 218181, 218182, 218183, 218558, 218559, 218560, 218561, 218562, 218563, 218564, 218565, 218566, 218567, 218568, 218569, 218570, 218908, 218911, 218912, 218917, 227290, 229494, 229495, 229496, 232156, 232310, 232470, 232508, 232509, 232510, 233169, 233170, 233306, 233427, 233537, 233540, 233541, 233542, 233543, 233544, 233545, 233546, 233547, 233548, 233964, 233977, 234317, 234318, 234319, 234320, 234321, 234322, 234323, 234324, 234325, 234326, 234327, 234328, 234329, 234330, 234331, 234332, 234333, 234334, 234335, 234336, 234337, 234338, 234339, 234340, 234341, 234342, 234343, 234344, 234345, 234346, 234347, 234348, 234349, 234350, 234351, 234352, 234353, 234354, 234355, 234356, 234357, 234358, 234359, 234360, 234361, 234362, 234363, 234364, 234365, 234366, 234367, 234368, 234369, 234370, 234371, 234372, 234373, 234374, 234375, 234376, 234377, 234378, 234379, 234380, 234381, 234382, 234383, 234384, 234385, 234386, 234387, 234388, 234389, 234390, 234391, 234392, 234393, 234394, 234395, 234396, 234397, 234398, 234399, 234400, 234401, 234402, 234403, 234404, 234405, 234406, 234407, 234408, 234409, 234410, 234411, 234476, 234477, 234478, 234479, 234480, 234481, 234482, 234483, 234484, 234485, 234486, 234487, 234488, 234489, 234490, 234493, 234494, 234495, 234496, 234497, 234498, 234499, 234500, 234501, 234502, 234503, 234504, 234505, 234506, 234507, 234508, 234509, 234510, 234511, 234512, 234513, 234514, 234515, 234516, 234518, 234519, 234520, 234521, 234522, 234523, 234524, 234525, 234526, 234527, 234528, 234529, 234530, 234531, 234532, 234533, 234534, 234535, 234536, 234537, 234538, 234539, 234540, 234541, 234542, 234543, 234544, 234545, 234546, 234547, 234548, 234549, 234673, 234674, 234675, 234676, 234677, 236204, 236422, 236489, 236494, 236606, 236616, 236620, 236625, 236635, 236964, 236965, 236966, 236969, 236970, 236971, 236972, 236973, 236974, 236975, 236976, 236977, 236978, 237013, 237040, 237041, 237042, 237108, 237153, 237154, 237155, 237156, 237157, 237158, 237211, 237212, 237213, 237214, 237215, 237216, 237217, 237218, 237219, 237220, 237221, 237222, 237232, 237233, 237234, 237235, 237236, 237237, 237238, 237239, 237240, 237241, 237242, 237243, 237244, 237245, 237246, 237247, 237248, 237249, 237250, 237251, 237252, 237253, 237254, 237292, 237293, 237362, 237363, 237368, 237510, 237522, 237523, 237524, 237811, 237812, 237813, 237814, 237815, 237816, 237817, 237818, 237819, 237820, 237824, 237825, 237826, 237827, 237828, 237829, 237830, 237831, 237832, 237833, 237834, 237835, 237836, 237837, 237838, 237839, 237840, 237841, 237842, 237845, 237846, 237847, 237848, 237849, 237850, 237860, 237861, 237862, 237863, 237864, 237865, 237866, 237867, 237868, 237869, 237870, 237871, 237872, 237873, 237874, 237875, 237876, 237893, 237894, 237895, 237896, 237897, 237898, 237899, 237901, 237902, 238035, 238074, 238076, 238080, 238081, 238082, 238083, 238084, 238085, 238086, 238087, 238088, 238089, 238090, 238091, 238092, 238093, 238094, 238095, 238096, 238097, 238098, 238099, 238100, 238101, 238102, 238103, 238212, 238214, 238215, 238216, 238217, 238218, 238219, 238220, 238221, 238222, 238223, 238224, 238225, 238226, 238227, 238228, 238229, 238230, 238231, 238232, 238233, 238308, 238309, 238322, 238342, 238343, 238345, 238346, 238347, 238349, 238350, 238368, 238369, 238370, 238371, 238372, 238373, 238374, 238375, 238376, 238377, 238379, 238380, 238381, 238382, 238383, 238384, 238565, 238622, 238623, 238624, 238625, 238626, 238627, 238628, 238629, 238630, 238631, 238632, 238633, 238634, 238635, 238636, 238637, 238638, 238639, 238640, 238641, 238642, 238669, 238670, 238671, 238672, 238673, 238674, 238675, 238676, 238677, 238678, 238679, 238707, 238708, 238709, 238710, 238711, 238712, 238714, 238753, 238846, 238888, 238889, 238897, 238898, 238899, 238900, 239068, 239069, 239070, 239074, 239075, 239076, 239077, 239149, 239150, 239151, 239153, 239154, 239155, 239156, 239157, 239158, 239159, 239161, 239162, 239163, 239165, 239166, 239167, 239172, 239173, 239265);
diff --git a/sql/updates/world/2015_05_10_01_world.sql b/sql/updates/world/2015_05_10_01_world.sql
new file mode 100644
index 00000000000..ba2dc1516f2
--- /dev/null
+++ b/sql/updates/world/2015_05_10_01_world.sql
@@ -0,0 +1,505 @@
+SET @CGUID := 370955;
+SET @OGUID := 233610;
+
+
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=67329;
+
+DELETE FROM `creature` WHERE `id` IN (55475, 56160);
+DELETE FROM `gameobject` WHERE `id`=179965;
+DELETE FROM `gameobject` WHERE `guid` IN (213585, 213588, 213591, 213610, 213611, 213624, 213625, 213683);
+
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+315;
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+0, 55347, 974, 1, -3540.458, 6091.649, 3.064309, 2.75752, 120, 0, 0), -- 55347 (Area: 5869) (Auras: 73809 - 73809)
+(@CGUID+1, 55347, 974, 1, -3544.965, 6093.71, 4.785177, 2.75752, 120, 0, 0), -- 55347 (Area: 5869) (Auras: 70764 - 70764)
+(@CGUID+2, 55347, 974, 1, -3546.406, 6094.889, 3.710032, 2.75752, 120, 0, 0), -- 55347 (Area: 5869) (Auras: 73810 - 73810)
+(@CGUID+3, 55347, 974, 1, -3546.455, 6089.76, 5.124798, 2.75752, 120, 0, 0), -- 55347 (Area: 5869) (Auras: 73811 - 73811)
+(@CGUID+4, 55347, 974, 1, -3547.651, 6091.432, 4.107487, 2.776647, 120, 0, 0), -- 55347 (Area: 5869) (Auras: 70764 - 70764)
+(@CGUID+5, 55347, 974, 1, -3552.378, 6084.578, 4.111493, 2.75752, 120, 0, 0), -- 55347 (Area: 5869) (Auras: 70764 - 70764)
+(@CGUID+6, 55347, 974, 1, -3876.087, 6715.112, 3.523933, 2.75752, 120, 0, 0), -- 55347 (Area: 0) (Auras: 73811 - 73811)
+(@CGUID+7, 55347, 974, 1, -3876.469, 6713.583, 3.545249, 2.75752, 120, 0, 0), -- 55347 (Area: 0) (Auras: 73810 - 73810)
+(@CGUID+8, 55347, 974, 1, -3880.024, 6707.007, 2.658832, 2.164, 120, 0, 0), -- 55347 (Area: 0) (Auras: 73811 - 73811)
+(@CGUID+9, 55347, 974, 1, -4018.266, 6363.103, 13.20009, 2.098049, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73809 - 73809)
+(@CGUID+10, 55347, 974, 1, -4018.988, 6366.712, 13.20009, 4.435287, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 70764 - 70764)
+(@CGUID+11, 55347, 974, 1, -4021.135, 6365.648, 13.20009, 5.983479, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73104 - 73104)
+(@CGUID+12, 55347, 974, 1, -4046.467, 6351.809, 13.20009, 4.554671, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73811 - 73811)
+(@CGUID+13, 55347, 974, 1, -4046.663, 6348.137, 13.20009, 1.936678, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 70764 - 70764)
+(@CGUID+14, 55347, 974, 1, -4048.806, 6351.314, 13.20009, 5.70659, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73809 - 73809)
+(@CGUID+15, 55347, 974, 1, -4085.885, 6320.245, 11.04892, 3.857727, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73809 - 73809)
+(@CGUID+16, 55347, 974, 1, -4087.995, 6321.37, 11.16493, 5.009645, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73809 - 73809)
+(@CGUID+17, 55347, 974, 1, -4088.007, 6318.624, 11.74757, 1.196441, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 70764 - 70764)
+(@CGUID+18, 55347, 974, 1, -4397.738, 6259.018, 15.20177, 3.253297, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73810 - 73810)
+(@CGUID+19, 55347, 974, 1, -4398.509, 6262.621, 14.76891, 3.253297, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73809 - 73809)
+(@CGUID+20, 55347, 974, 1, -4399.425, 6416.393, 15.24004, 2.776647, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73104 - 73104)
+(@CGUID+21, 55347, 974, 1, -4399.543, 6260.809, 14.18574, 3.253297, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73809 - 73809)
+(@CGUID+22, 55347, 974, 1, -4399.634, 6403.269, 15.4001, 3.110595, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73810 - 73810)
+(@CGUID+23, 55347, 974, 1, -4399.684, 6400.793, 15.25402, 3.091469, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73811 - 73811)
+(@CGUID+24, 55347, 974, 1, -4400.174, 6390.691, 15.73887, 3.253298, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73810 - 73810)
+(@CGUID+25, 55347, 974, 1, -4400.186, 6388.663, 15.59765, 3.253297, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 70764 - 70764)
+(@CGUID+26, 55347, 974, 1, -4400.268, 6261.924, 13.73682, 3.253297, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73810 - 73810)
+(@CGUID+27, 55347, 974, 1, -4400.337, 6263.297, 13.77441, 3.253297, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73809 - 73809)
+(@CGUID+28, 55347, 974, 1, -4400.613, 6416.221, 14.66377, 2.75752, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73104 - 73104)
+(@CGUID+29, 55347, 974, 1, -4401.156, 6389.884, 14.98538, 3.253297, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 70764 - 70764)
+(@CGUID+30, 55347, 974, 1, -4401.266, 6386.76, 14.97509, 3.253297, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73811 - 73811)
+(@CGUID+31, 55347, 974, 1, -4401.724, 6399.641, 14.2447, 3.091469, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73811 - 73811)
+(@CGUID+32, 55347, 974, 1, -4401.832, 6413.436, 14.16104, 2.75752, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73811 - 73811)
+(@CGUID+33, 55347, 974, 1, -4401.965, 6391.114, 14.53761, 3.253297, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73104 - 73104)
+(@CGUID+34, 55347, 974, 1, -4402.168, 6387.969, 14.41535, 3.253297, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73809 - 73809)
+(@CGUID+35, 55347, 974, 1, -4402.316, 6415.527, 13.68543, 2.75752, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 70764 - 70764)
+(@CGUID+36, 55347, 974, 1, -4402.431, 6413.934, 13.73137, 2.75752, 120, 0, 0), -- 55347 (Area: 5870) (Auras: 73811 - 73811)
+(@CGUID+37, 55348, 974, 1, -3543.615, 6081.485, 3.064309, 2.922005, 120, 0, 0), -- 55348 (Area: 5869) (Auras: 73813 - 73813)
+(@CGUID+38, 55348, 974, 1, -3545.137, 6091.799, 5.200503, 2.922005, 120, 0, 0), -- 55348 (Area: 5869) (Auras: 73813 - 73813)
+(@CGUID+39, 55348, 974, 1, -3547.948, 6092.467, 3.654778, 2.922005, 120, 0, 0), -- 55348 (Area: 5869) (Auras: 73814 - 73814)
+(@CGUID+40, 55348, 974, 1, -3549.49, 6085.556, 5.243183, 2.922005, 120, 0, 0), -- 55348 (Area: 5869) (Auras: 73814 - 73814)
+(@CGUID+41, 55348, 974, 1, -3550.72, 6085.498, 4.617259, 2.947497, 120, 0, 0), -- 55348 (Area: 5869) (Auras: 73813 - 73813)
+(@CGUID+42, 55348, 974, 1, -3551.094, 6088.04, 3.703641, 3.207578, 120, 0, 0), -- 55348 (Area: 5869) (Auras: 73814 - 73814)
+(@CGUID+43, 55348, 974, 1, -3552.179, 6086.276, 3.646801, 2.922005, 120, 0, 0), -- 55348 (Area: 5869) (Auras: 71084 - 71084)
+(@CGUID+44, 55348, 974, 1, -3873.778, 6715.913, 4.638102, 2.947497, 120, 0, 0), -- 55348 (Area: 0) (Auras: 71084 - 71084)
+(@CGUID+45, 55348, 974, 1, -3874.514, 6713.628, 4.461677, 2.922005, 120, 0, 0), -- 55348 (Area: 0) (Auras: 73815 - 73815)
+(@CGUID+46, 55348, 974, 1, -3874.882, 6715.642, 4.027105, 2.922005, 120, 0, 0), -- 55348 (Area: 0) (Auras: 73815 - 73815)
+(@CGUID+47, 55348, 974, 1, -3875.983, 6712.429, 3.9605, 2.922005, 120, 0, 0), -- 55348 (Area: 0) (Auras: 71084 - 71084)
+(@CGUID+48, 55348, 974, 1, -3876.658, 6727.082, 2.908752, 3.207578, 120, 0, 0), -- 55348 (Area: 0) (Auras: 71084 - 71084)
+(@CGUID+49, 55348, 974, 1, -4024.365, 6339.249, 13.20009, 3.659704, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73814 - 73814)
+(@CGUID+50, 55348, 974, 1, -4026.936, 6336.401, 13.20008, 1.261948, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73813 - 73813)
+(@CGUID+51, 55348, 974, 1, -4027.979, 6338.556, 13.20009, 5.996943, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 71084 - 71084)
+(@CGUID+52, 55348, 974, 1, -4126.009, 6364.827, 10.47646, 3.212799, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73814 - 73814)
+(@CGUID+53, 55348, 974, 1, -4128.361, 6366.359, 10.59303, 4.916115, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73813 - 73813)
+(@CGUID+54, 55348, 974, 1, -4129.24, 6363.924, 10.10825, 0.8572226, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 71084 - 71084)
+(@CGUID+55, 55348, 974, 1, -4379.616, 6380.463, 12.01801, 1.850658, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73813 - 73813)
+(@CGUID+56, 55348, 974, 1, -4397.399, 6273.063, 15.19376, 2.947497, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73814 - 73814)
+(@CGUID+57, 55348, 974, 1, -4398.363, 6275.321, 14.73031, 2.947497, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73815 - 73815)
+(@CGUID+58, 55348, 974, 1, -4398.715, 6244.944, 14.6917, 2.947497, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73815 - 73815)
+(@CGUID+59, 55348, 974, 1, -4399.198, 6272.111, 14.19004, 2.947497, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73815 - 73815)
+(@CGUID+60, 55348, 974, 1, -4399.554, 6248.596, 14.33591, 2.947497, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73813 - 73813)
+(@CGUID+61, 55348, 974, 1, -4399.681, 6414.704, 15.16792, 2.922005, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73813 - 73813)
+(@CGUID+62, 55348, 974, 1, -4399.702, 6399.29, 15.23775, 2.922005, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73813 - 73813)
+(@CGUID+63, 55348, 974, 1, -4400.215, 6274.204, 13.71256, 2.947497, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 71084 - 71084)
+(@CGUID+64, 55348, 974, 1, -4400.252, 6276.461, 13.76355, 2.947497, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73814 - 73814)
+(@CGUID+65, 55348, 974, 1, -4400.3, 6417.96, 14.81304, 2.947497, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73814 - 73814)
+(@CGUID+66, 55348, 974, 1, -4400.573, 6401.828, 14.71149, 3.541528, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73815 - 73815)
+(@CGUID+67, 55348, 974, 1, -4400.856, 6403.986, 14.89527, 3.281446, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73813 - 73813)
+(@CGUID+68, 55348, 974, 1, -4400.995, 6413.729, 14.62116, 2.922005, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73813 - 73813)
+(@CGUID+69, 55348, 974, 1, -4401.505, 6403.733, 14.34081, 3.255954, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 71084 - 71084)
+(@CGUID+70, 55348, 974, 1, -4402.309, 6417.276, 13.71753, 2.922005, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73813 - 73813)
+(@CGUID+71, 55348, 974, 1, -4402.323, 6400.667, 13.79684, 3.255954, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73815 - 73815)
+(@CGUID+72, 55348, 974, 1, -4402.393, 6403.033, 13.79647, 3.255954, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73814 - 73814)
+(@CGUID+73, 55348, 974, 1, -4403.847, 6417.264, 13.19444, 3.207578, 120, 0, 0), -- 55348 (Area: 5870) (Auras: 73813 - 73813)
+(@CGUID+74, 55475, 974, 1, -3313.932, 6321.429, -26.46885, 5.073973, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+75, 55475, 974, 1, -3339.386, 6404.537, -27.57644, 5.386951, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+76, 55475, 974, 1, -3346.2, 6351.918, -19.01271, 5.107406, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+77, 55475, 974, 1, -3381.229, 6460.036, -24.86264, 4.886246, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+78, 55475, 974, 1, -3381.477, 6386.271, -23.9986, 1.459757, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+79, 55475, 974, 1, -3402.45, 6342.028, -17.38725, 3.010418, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+80, 55475, 974, 1, -3415.417, 6416.553, -21.49718, 2.96623, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+81, 55475, 974, 1, -3417.408, 6481.66, -23.58585, 3.368099, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+82, 55475, 974, 1, -3426.541, 6212.081, -23.02631, 1.561031, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+83, 55475, 974, 1, -3443.797, 6387.824, 1.670958, 1.845875, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+84, 55475, 974, 1, -3445.322, 6317.903, -2.592931, 0.1023915, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+85, 55475, 974, 1, -3447.342, 6363.225, 1.474651, 0.2970642, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+86, 55475, 974, 1, -3449.624, 6478.326, -7.744728, 2.338469, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+87, 55475, 974, 1, -3452.093, 6508.332, -9.212231, 1.255219, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+88, 55475, 974, 1, -3455.005, 6142.754, -30.86743, 3.929064, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+89, 55475, 974, 1, -3455.513, 6413.271, 2.663992, 4.0767, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+90, 55475, 974, 1, -3465.677, 6562.523, -13.99, 3.568454, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+91, 55475, 974, 1, -3471.428, 6459.488, -0.4364587, 0.3251488, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+92, 55475, 974, 1, -3478.317, 6469.908, 0.4252121, 5.246521, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+93, 55475, 974, 1, -3478.498, 6211.152, -27.73287, 6.228446, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+94, 55475, 974, 1, -3492.434, 6181.876, -31.7241, 2.82975, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+95, 55475, 974, 1, -3510.077, 6521.693, -6.995232, 2.019715, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+96, 55475, 974, 1, -3512.833, 6581.43, -16.43451, 5.336159, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+97, 55475, 974, 1, -3518.728, 6151.486, -35.04684, 5.750471, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+98, 55475, 974, 1, -3521.494, 6653.508, -15.92994, 1.675562, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+99, 55475, 974, 1, -3521.743, 6495.504, -0.2447563, 4.649848, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+100, 55475, 974, 1, -3532.04, 6079.061, -16.22413, 0.1291976, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+101, 55475, 974, 1, -3536.587, 5972.348, -25.70953, 3.983676, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+102, 55475, 974, 1, -3537.634, 6021.59, -12.38275, 3.854601, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+103, 55475, 974, 1, -3548.913, 6681.281, -16.2923, 2.347504, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+104, 55475, 974, 1, -3551.593, 6510.098, 0.6369895, 2.652493, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+105, 55475, 974, 1, -3576.409, 6117.609, -23.30301, 5.360305, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+106, 55475, 974, 1, -3581.899, 6165.564, -9.588398, 1.34465, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+107, 55475, 974, 1, -3583.029, 6653.2, -21.48125, 4.491813, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+108, 55475, 974, 1, -3585.837, 6713.762, -14.28456, 0.6416745, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+109, 55475, 974, 1, -3596.543, 5936.433, -28.12582, 2.927438, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+110, 55475, 974, 1, -3605.443, 6142.803, -1.119677, 1.598133, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+111, 55475, 974, 1, -3612.821, 6038.208, -22.87453, 0.3841309, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+112, 55475, 974, 1, -3612.865, 6753.339, -16.22926, 1.31397, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+113, 55475, 974, 1, -3618.269, 6117.788, -13.03176, 3.322225, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+114, 55475, 974, 1, -3623.945, 6615.721, -19.18533, 4.569964, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+115, 55475, 974, 1, -3636.703, 6153.813, 4.964289, 5.585937, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+116, 55475, 974, 1, -3641.342, 6858.263, -26.42858, 0.7066046, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+117, 55475, 974, 1, -3641.504, 6790.919, -18.86576, 0.5381923, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+118, 55475, 974, 1, -3644.3, 6652.433, 4.033398, 4.237825, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+119, 55475, 974, 1, -3644.798, 6082.059, -20.93716, 1.466425, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+120, 55475, 974, 1, -3645.861, 6883.971, -24.53216, 5.604813, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+121, 55475, 974, 1, -3650.303, 6673.94, 2.73331, 6.145986, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+122, 55475, 974, 1, -3652.542, 6726.625, -11.63122, 6.104555, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+123, 55475, 974, 1, -3653.366, 5959.856, -24.37609, 5.032287, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+124, 55475, 974, 1, -3665.284, 6686.991, 2.432378, 6.197391, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+125, 55475, 974, 1, -3673.565, 6748.247, -3.262143, 2.372767, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+126, 55475, 974, 1, -3682.457, 6819.666, -19.65886, 6.071726, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+127, 55475, 974, 1, -3685.824, 6053.145, -24.17451, 2.395765, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+128, 55475, 974, 1, -3691.061, 6708.265, 5.928362, 5.419367, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+129, 55475, 974, 1, -3696.415, 6854.742, -8.366364, 4.439289, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+130, 55475, 974, 1, -3712.752, 6769.752, 2.053334, 5.838404, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+131, 55475, 974, 1, -3714.802, 6022.569, -25.93663, 2.459033, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+132, 55475, 974, 1, -3718.174, 5984.207, -26.95175, 4.683887, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+133, 55475, 974, 1, -3729.87, 6076.369, -24.28646, 6.236253, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+134, 55475, 974, 1, -3741.677, 6808.621, -8.687475, 6.090551, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+135, 55475, 974, 1, -3749.409, 6019.45, -36.08316, 5.37283, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+136, 55475, 974, 1, -3749.938, 6747.255, 6.14193, 2.438644, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+137, 55475, 974, 1, -3776.875, 6038.385, -28.88736, 4.172343, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+138, 55475, 974, 1, -3781.219, 5985.999, -39.33307, 5.821286, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+139, 55475, 974, 1, -3785.611, 6853.598, -15.78474, 4.187766, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+140, 55475, 974, 1, -3788.819, 6793.6, -0.4130653, 2.948139, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+141, 55475, 974, 1, -3789.902, 5909.818, -34.90617, 1.069579, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+142, 55475, 974, 1, -3810.934, 6811.86, -3.405523, 3.065103, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+143, 55475, 974, 1, -3813.611, 5948.4, -34.03601, 4.259658, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+144, 55475, 974, 1, -3813.683, 6872.369, -16.24017, 5.83448, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+145, 55475, 974, 1, -3814.552, 5884.688, -31.88101, 0.6773392, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+146, 55475, 974, 1, -3815.823, 6756.446, 1.296972, 4.483981, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+147, 55475, 974, 1, -3849.52, 6848.309, -20.27527, 2.141776, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+148, 55475, 974, 1, -3851.174, 5914.97, -36.0111, 3.128898, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+149, 55475, 974, 1, -3851.811, 6790.34, -4.522545, 5.938585, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+150, 55475, 974, 1, -3852.365, 5955.535, -30.07961, 4.60087, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+151, 55475, 974, 1, -3854.069, 6726.759, 1.881665, 2.685318, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+152, 55475, 974, 1, -3876.026, 5977.604, -0.1827965, 0.2051714, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+153, 55475, 974, 1, -3882.063, 5882.401, -38.56639, 2.454017, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+154, 55475, 974, 1, -3886.623, 5815.576, -24.69967, 3.69432, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+155, 55475, 974, 1, -3891.935, 6813.063, -10.62362, 0.3393468, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+156, 55475, 974, 1, -3894.714, 6754.219, 1.289827, 3.004843, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+157, 55475, 974, 1, -3906.745, 5910.939, -28.37907, 2.851631, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+158, 55475, 974, 1, -3913.412, 6713.687, 5.58995, 4.635511, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+159, 55475, 974, 1, -3913.597, 6772.005, -7.913295, 1.181943, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+160, 55475, 974, 1, -3953.432, 5854.966, -24.49787, 2.724988, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+161, 55475, 974, 1, -3959.7, 6762.418, -4.656868, 6.195178, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+162, 55475, 974, 1, -3988.379, 6781.324, -19.78738, 3.959932, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+163, 55475, 974, 1, -4018.686, 5826.519, -24.92917, 1.823595, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+164, 55475, 974, 1, -4024.432, 6748.363, 0.7076148, 6.10209, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+165, 55475, 974, 1, -4048.701, 6780.272, -18.90916, 2.557926, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+166, 55475, 974, 1, -4079.737, 5781.727, -26.12824, 4.066347, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+167, 55475, 974, 1, -4080.309, 6725.129, 5.331882, 5.312101, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+168, 55475, 974, 1, -4085.937, 6746.07, -0.3708534, 4.537604, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+169, 55475, 974, 1, -4093.656, 5817.984, -5.46735, 2.203755, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+170, 55475, 974, 1, -4112.841, 5833.23, 12.42542, 4.525721, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+171, 55475, 974, 1, -4112.922, 5747.69, -25.27915, 2.884766, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+172, 55475, 974, 1, -4129.155, 6718.981, 0.2849679, 6.133136, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+173, 55475, 974, 1, -4145.771, 6705.766, 0.5044689, 2.851631, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+174, 55475, 974, 1, -4149.671, 5828.402, 9.382803, 3.671634, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+175, 55475, 974, 1, -4152.313, 5781.312, -11.43931, 5.392621, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+176, 55475, 974, 1, -4152.74, 5818.351, 5.761734, 2.389332, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+177, 55475, 974, 1, -4187.34, 5743.708, -24.87604, 3.728196, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+178, 55475, 974, 1, -4190.686, 6723.775, -11.94522, 2.42111, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+179, 55475, 974, 1, -4201.589, 5811.902, 3.438561, 2.781221, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+180, 55475, 974, 1, -4203.925, 6697.944, -0.4997884, 5.270574, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+181, 55475, 974, 1, -4213.943, 6751.24, -15.50737, 0.4753325, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+182, 55475, 974, 1, -4216.863, 5806.103, -0.3531361, 1.263399, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+183, 55475, 974, 1, -4222.583, 5783.536, -13.14024, 2.16576, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+184, 55475, 974, 1, -4254.156, 5827.959, 1.856683, 1.32416, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+185, 55475, 974, 1, -4255.951, 6712.135, -1.90819, 4.636142, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+186, 55475, 974, 1, -4280.682, 5781.994, -14.02826, 1.545411, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+187, 55475, 974, 1, -4281.057, 6705.473, 2.382472, 5.3203, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+188, 55475, 974, 1, -4311.102, 5776.852, -17.00743, 2.16313, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+189, 55475, 974, 1, -4318.055, 6752.943, -27.62305, 1.460733, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+190, 55475, 974, 1, -4320.882, 6684.345, 0.8362814, 1.844127, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+191, 55475, 974, 1, -4338.61, 6647.455, 3.207853, 5.542802, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+192, 55475, 974, 1, -4342.684, 6090.946, -4.94941, 3.508136, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+193, 55475, 974, 1, -4346.649, 5826.934, 1.740823, 6.089581, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+194, 55475, 974, 1, -4355.084, 6711.799, -28.20229, 4.021949, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+195, 55475, 974, 1, -4370.53, 6620.04, 2.050148, 6.087829, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+196, 55475, 974, 1, -4372.023, 5829.926, 0.8718023, 5.746428, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+197, 55475, 974, 1, -4385.319, 6681.877, -30.53719, 2.278209, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+198, 55475, 974, 1, -4387.277, 6151.067, 6.017407, 1.865997, 120, 5, 1), -- 55475 (Area: 5870) (Auras: 51583 - 51583)
+(@CGUID+199, 55475, 974, 1, -4400.032, 5888.301, 1.06333, 6.147976, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+200, 55475, 974, 1, -4402.498, 6588.392, 0.4260998, 1.354246, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+201, 55475, 974, 1, -4409.666, 6035.662, -14.26149, 6.100359, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+202, 55475, 974, 1, -4411.721, 6646.702, -29.32209, 5.713609, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+203, 55475, 974, 1, -4413.792, 6085.212, -14.79804, 3.423513, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+204, 55475, 974, 1, -4413.849, 6180.515, 5.317835, 5.96668, 120, 5, 1), -- 55475 (Area: 5870) (Auras: 51583 - 51583)
+(@CGUID+205, 55475, 974, 1, -4426.176, 6131.366, -9.031806, 1.985053, 120, 5, 1), -- 55475 (Area: 5870) (Auras: 51583 - 51583)
+(@CGUID+206, 55475, 974, 1, -4438.476, 6527.181, 2.461359, 0.6478799, 120, 5, 1), -- 55475 (Area: 5904) (Auras: 51583 - 51583)
+(@CGUID+207, 55475, 974, 1, -4439.464, 5931.841, -1.091784, 3.802293, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+208, 55475, 974, 1, -4439.572, 6291.448, -1.263654, 2.882133, 120, 5, 1), -- 55475 (Area: 5870) (Auras: 51583 - 51583)
+(@CGUID+209, 55475, 974, 1, -4445.36, 6457.672, 1.502735, 5.701409, 120, 5, 1), -- 55475 (Area: 5870) (Auras: 51583 - 51583)
+(@CGUID+210, 55475, 974, 1, -4446.387, 6247.357, -5.866472, 1.471781, 120, 5, 1), -- 55475 (Area: 5870) (Auras: 51583 - 51583)
+(@CGUID+211, 55475, 974, 1, -4446.448, 5895.423, -2.954503, 1.039438, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+212, 55475, 974, 1, -4447.519, 6617.916, -24.75529, 0.5312068, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+213, 55475, 974, 1, -4448.618, 6556.146, -11.14995, 1.13948, 120, 5, 1), -- 55475 (Area: 5904) (Auras: 51583 - 51583)
+(@CGUID+214, 55475, 974, 1, -4450.187, 6192.325, -3.249295, 0.3683649, 120, 5, 1), -- 55475 (Area: 5870) (Auras: 51583 - 51583)
+(@CGUID+215, 55475, 974, 1, -4451.172, 5986.111, -24.06742, 1.44293, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+216, 55475, 974, 1, -4455.343, 6392.197, -5.747448, 3.058451, 120, 5, 1), -- 55475 (Area: 5870) (Auras: 51583 - 51583)
+(@CGUID+217, 55475, 974, 1, -4462.831, 6435.464, -7.902214, 1.488819, 120, 5, 1), -- 55475 (Area: 5870) (Auras: 51583 - 51583)
+(@CGUID+218, 55475, 974, 1, -4477.391, 6353.027, -14.61291, 0.2626663, 120, 5, 1), -- 55475 (Area: 5904) (Auras: 51583 - 51583)
+(@CGUID+219, 55475, 974, 1, -4479.241, 6149.872, -14.53582, 5.868609, 120, 5, 1), -- 55475 (Area: 5904) (Auras: 51583 - 51583)
+(@CGUID+220, 55475, 974, 1, -4480.217, 6449.47, -14.22352, 3.138663, 120, 5, 1), -- 55475 (Area: 5904) (Auras: 51583 - 51583)
+(@CGUID+221, 55475, 974, 1, -4480.83, 6581.086, -24.30691, 0.2072032, 120, 5, 1), -- 55475 (Area: 0) (Auras: 51583 - 51583)
+(@CGUID+222, 55475, 974, 1, -4482.029, 6284.627, -14.99236, 0.07706382, 120, 5, 1), -- 55475 (Area: 5870) (Auras: 51583 - 51583)
+(@CGUID+223, 55475, 974, 1, -4482.697, 5949.789, -23.48953, 0.9695857, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+224, 55475, 974, 1, -4488.297, 6515.887, -17.99799, 5.806438, 120, 5, 1), -- 55475 (Area: 5904) (Auras: 51583 - 51583)
+(@CGUID+225, 55475, 974, 1, -4508.537, 6316.83, -13.48234, 5.84065, 120, 5, 1), -- 55475 (Area: 5904) (Auras: 51583 - 51583)
+(@CGUID+226, 55475, 974, 1, -4512.186, 6184.926, -10.88638, 3.63606, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+227, 55475, 974, 1, -4513.816, 6388.617, -11.04589, 4.789019, 120, 5, 1), -- 55475 (Area: 5904) (Auras: 51583 - 51583)
+(@CGUID+228, 55475, 974, 1, -4518.161, 6246.943, -13.29661, 3.27717, 120, 5, 1), -- 55475 (Area: 5904) (Auras: 51583 - 51583)
+(@CGUID+229, 55475, 974, 1, -4546.214, 6444.699, -17.15788, 2.611551, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+230, 55475, 974, 1, -4578.979, 6450.634, -14.52264, 0.6321713, 120, 5, 1), -- 55475 (Area: 5869) (Auras: 51583 - 51583)
+(@CGUID+231, 56160, 974, 1, -3793.068, 6480.5, 18.38577, 0.4216958, 120, 5, 1), -- Moonfang Snarler (Area: 0)
+(@CGUID+232, 56160, 974, 1, -3818.889, 6579.251, 13.75474, 5.759191, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+233, 56160, 974, 1, -3844.143, 6465.961, 11.9775, 5.368204, 120, 5, 1), -- Moonfang Snarler (Area: 0)
+(@CGUID+234, 56160, 974, 1, -3890.562, 6418.59, 14.22686, 2.802246, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+235, 56160, 974, 1, -3911.653, 6521.509, 15.92983, 0.8102549, 120, 5, 1), -- Moonfang Snarler (Area: 0)
+(@CGUID+236, 56160, 974, 1, -3930.605, 6634.611, 10.02799, 5.350228, 120, 5, 1), -- Moonfang Snarler (Area: 0) (Auras: ) (possible waypoints or random movement)
+(@CGUID+237, 56160, 974, 1, -3943.391, 6546.864, 13.23347, 4.229451, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+238, 56160, 974, 1, -3950.127, 6492.447, 19.88531, 2.936915, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+239, 56160, 974, 1, -3980.259, 6703.247, 12.42365, 1.112345, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+240, 56160, 974, 1, -3989.167, 6597.694, 17.62722, 4.199048, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+241, 56160, 974, 1, -4037.84, 6541.493, 16.26394, 5.63148, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+242, 56160, 974, 1, -4044.562, 6649.435, 14.87357, 1.629437, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+243, 56160, 974, 1, -4088.994, 6651.294, 13.36706, 4.611228, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+244, 56160, 974, 1, -4093.011, 6064.556, 16.05633, 0.04595588, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+245, 56160, 974, 1, -4134.839, 6585.866, 19.53601, 2.363102, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+246, 56160, 974, 1, -4158.418, 6640.745, 14.95826, 0.9648843, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+247, 56160, 974, 1, -4193.543, 6561.745, 13.59656, 4.542222, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+248, 56160, 974, 1, -4235.783, 6642.862, 14.43218, 5.552404, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+249, 56160, 974, 1, -4278.184, 6608.144, 12.35217, 0.8278429, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+250, 56160, 974, 1, -4349.397, 6576.323, 10.47269, 0.1333266, 120, 5, 1), -- Moonfang Snarler (Area: 0) (possible waypoints or random movement)
+(@CGUID+251, 58570, 974, 1, -3984.116, 6292.029, 13.20008, 0, 120, 0, 0), -- 58570 (Area: 0)
+(@CGUID+252, 67319, 974, 1, -4185.753, 6373.43, 14.24777, 5.030209, 120, 0, 0), -- 67319 (Area: 5870) (Auras: 132784 - 132784)
+(@CGUID+253, 67329, 974, 1, -3607.139, 6278.641, 118.5082, 2.07468, 120, 5, 1), -- 67329 (Area: 5902)
+(@CGUID+254, 67329, 974, 1, -3607.957, 6280.623, 118.5163, 0.9793978, 120, 5, 1), -- 67329 (Area: 0)
+(@CGUID+255, 67329, 974, 1, -3626.966, 6439.831, 127.972, 5.792733, 120, 5, 1), -- 67329 (Area: 0) (possible waypoints or random movement)
+(@CGUID+256, 67329, 974, 1, -3785.221, 6631.773, 53.54256, 5.370472, 120, 5, 1), -- 67329 (Area: 0)
+(@CGUID+257, 67329, 974, 1, -3852.511, 6124.995, 112.3432, 5.233043, 120, 5, 1), -- 67329 (Area: 5902) (possible waypoints or random movement)
+(@CGUID+258, 67329, 974, 1, -3945.39, 6414.303, 23.3153, 0.5833343, 120, 5, 1), -- 67329 (Area: 0) (possible waypoints or random movement)
+(@CGUID+259, 67329, 974, 1, -4041.083, 6079.592, 22.6864, 5.979221, 120, 5, 1), -- 67329 (Area: 0) (possible waypoints or random movement)
+(@CGUID+260, 67329, 974, 1, -4058.984, 6446.323, 18.21202, 3.934109, 120, 5, 1), -- 67329 (Area: 5870) (possible waypoints or random movement)
+(@CGUID+261, 67329, 974, 1, -4059.942, 5947.325, 108.9655, 4.19373, 120, 5, 1), -- 67329 (Area: 0) (possible waypoints or random movement)
+(@CGUID+262, 67329, 974, 1, -4119.329, 6160.051, 21.57265, 4.928595, 120, 5, 1), -- 67329 (Area: 0) (possible waypoints or random movement)
+(@CGUID+263, 67329, 974, 1, -4166.705, 5942.068, 120.6176, 4.127467, 120, 5, 1), -- 67329 (Area: 0) (Auras: )
+(@CGUID+264, 67329, 974, 1, -4189.683, 6186.318, 19.26264, 3.188899, 120, 5, 1), -- 67329 (Area: 0) (possible waypoints or random movement)
+(@CGUID+265, 67329, 974, 1, -4244.192, 6630.3, 20.72098, 5.278711, 120, 5, 1), -- 67329 (Area: 0) (possible waypoints or random movement)
+(@CGUID+266, 67329, 974, 1, -4279.63, 6112.081, 20.84612, 5.602487, 120, 5, 1), -- 67329 (Area: 0) (possible waypoints or random movement)
+(@CGUID+267, 67329, 974, 1, -4307.074, 5972.047, 99.51758, 2.038074, 120, 5, 1), -- 67329 (Area: 0) (possible waypoints or random movement)
+(@CGUID+268, 67370, 974, 1, -4100.752, 6394.637, 13.20008, 4.967449, 120, 0, 0), -- 67370 (Area: 5870)
+(@CGUID+269, 67382, 974, 1, -4102.958, 6394.549, 13.20009, 5.107639, 120, 0, 0), -- 67382 (Area: 5870) (Auras: )
+(@CGUID+270, 67383, 974, 1, -4098.874, 6395.912, 13.20008, 4.63765, 120, 0, 0), -- 67383 (Area: 5870) (Auras: )
+(@CGUID+271, 67384, 974, 1, -4101.963, 6394.777, 14.99535, 5.291093, 120, 0, 0), -- 67384 (Area: 5870) (Auras: )
+(@CGUID+272, 68231, 1113, 1, -6.62993, 3.931655, 1.201352, 1.110579, 120, 0, 0),
+(@CGUID+273, 68232, 1113, 1, -6.316076, -3.870045, 1.201352, 2.070338, 120, 0, 0),
+(@CGUID+274, 68233, 1113, 1, 6.576322, -3.682104, 1.201352, 4.203295, 120, 0, 0),
+(@CGUID+275, 68238, 1113, 1, -0.162043, 7.456628, 1.201352, 0.005866661, 120, 0, 0),
+(@CGUID+276, 68238, 1113, 1, 0.2709804, -7.295516, 1.201352, 3.181539, 120, 0, 0),
+(@CGUID+277, 68239, 1113, 1, 6.561924, 4.008928, 1.201351, 5.255444, 120, 0, 0),
+(@CGUID+278, 68402, 974, 1, -4058.214, 6331.024, 11.71875, 4.595937, 120, 0, 0), -- 68402 (Area: 5870)
+(@CGUID+279, 68407, 974, 1, -4042.303, 6313.233, 12.47493, 5.918468, 120, 0, 0), -- 68407 (Area: 5870) (possible waypoints or random movement)
+(@CGUID+280, 68426, 974, 1, -4030.906, 6352.476, 13.02155, 0, 120, 0, 0), -- 68426 (Area: 5870)
+(@CGUID+281, 68491, 974, 1, -3628.469, 6309.486, 113.2723, 0.8599741, 120, 0, 0), -- 68491 (Area: 5902)
+(@CGUID+282, 68491, 974, 1, -3632.155, 6310.541, 113.364, 1.543436, 120, 0, 0), -- 68491 (Area: 5902)
+(@CGUID+283, 68491, 974, 1, -4337.907, 6194.252, 13.24175, 0.9702372, 120, 5, 1), -- 68491 (Area: 5870) (possible waypoints or random movement)
+(@CGUID+284, 68492, 974, 1, -3630.217, 6310.871, 113.2768, 0.4937948, 120, 0, 0), -- 68492 (Area: 5902)
+(@CGUID+285, 71982, 974, 1, -3836.375, 6482.681, 11.89613, 4.776481, 120, 5, 1), -- 71982 (Area: 0) (Auras: 133836 - 133836) (possible waypoints or random movement)
+(@CGUID+286, 71982, 974, 1, -4242.462, 6114.348, 10.36993, 1.600085, 120, 5, 1), -- 71982 (Area: 0) (Auras: 133836 - 133836) (possible waypoints or random movement)
+(@CGUID+287, 74056, 974, 1, -4417.674, 6358.51, 15.52252, 0.5449456, 120, 0, 0), -- 74056 (Area: 5870)
+(@CGUID+288, 74333, 974, 1, -4416.618, 6256.221, 13.9757, 4.707499, 120, 0, 0), -- 74333 (Area: 5870) (Auras: 149665 - 149665)
+(@CGUID+289, 74333, 974, 1, -4417.828, 6383.495, 13.50524, 4.797968, 120, 0, 0), -- 74333 (Area: 5870) (Auras: 149665 - 149665)
+(@CGUID+290, 74388, 974, 1, -4406.752, 6252.348, 13.97506, 4.602068, 120, 0, 0), -- 74388 (Area: 5870) (Auras: 149746 - 149746, 151532 - 151532)
+(@CGUID+291, 74388, 974, 1, -4408.347, 6385.915, 13.50524, 4.725545, 120, 0, 0), -- 74388 (Area: 5870) (Auras: 149746 - 149746, 151532 - 151532)
+(@CGUID+292, 74388, 974, 1, -4425.403, 6252.244, 13.97578, 1.542731, 120, 0, 0), -- 74388 (Area: 5870) (Auras: 149746 - 149746, 151532 - 151532)
+(@CGUID+293, 74388, 974, 1, -4426.769, 6385.328, 13.50524, 4.653383, 120, 0, 0), -- 74388 (Area: 5870) (Auras: 149746 - 149746, 151532 - 151532)
+(@CGUID+294, 85484, 974, 1, -4253.323, 6311.426, 13.59743, 1.876229, 120, 0, 0), -- 85484 (Area: 5870)
+(@CGUID+295, 85519, 974, 1, -4091.094, 6390.395, 13.21238, 3.737871, 120, 0, 0), -- 85519 (Area: 5870)
+(@CGUID+296, 85522, 974, 1, -4091.582, 6392.194, 13.20008, 3.972317, 120, 0, 0), -- 85522 (Area: 5870) (Auras: )
+(@CGUID+297, 85523, 974, 1, -4089.521, 6388.737, 13.22179, 3.441971, 120, 0, 0), -- 85523 (Area: 5870) (Auras: )
+(@CGUID+298, 85525, 974, 1, -4090.34, 6389.697, 14.96317, 3.592749, 120, 0, 0), -- 85525 (Area: 5870) (Auras: )
+(@CGUID+299, 85531, 974, 1, -3852.58, 5905.405, -67.67389, 1.263545, 120, 0, 0), -- 85531 (Area: 5869)
+(@CGUID+300, 85531, 974, 1, -3855.25, 5875.085, -67.02758, 5.784174, 120, 0, 0), -- 85531 (Area: 5869)
+(@CGUID+301, 85531, 974, 1, -3858.149, 5898.472, -66.92779, 0.1291031, 120, 0, 0), -- 85531 (Area: 5869)
+(@CGUID+302, 85531, 974, 1, -3871.529, 5879.017, -66.34899, 1.548001, 120, 5, 1), -- 85531 (Area: 5869) (possible waypoints or random movement)
+(@CGUID+303, 85531, 974, 1, -3875.769, 5902.223, -66.88538, 0.07232627, 120, 5, 1), -- 85531 (Area: 5869) (possible waypoints or random movement)
+(@CGUID+304, 85531, 974, 1, -3881.434, 5910.238, -67.00465, 2.112158, 120, 0, 0), -- 85531 (Area: 5869)
+(@CGUID+305, 85531, 974, 1, -3884.201, 5910.596, -67.16608, 1.078099, 120, 0, 0), -- 85531 (Area: 5869)
+(@CGUID+306, 85531, 974, 1, -3890.763, 5883.829, -66.31542, 3.419037, 120, 5, 1), -- 85531 (Area: 5869) (possible waypoints or random movement)
+(@CGUID+307, 85546, 974, 1, -4207.55, 6369.76, 13.17307, 4.783828, 120, 0, 0), -- 85546 (Area: 5870)
+(@CGUID+308, 89715, 974, 1, -4033.719, 6289.453, 10.29123, 2.597398, 120, 0, 0), -- 89715 (Area: 5870) (Auras: 46598 - 46598)
+(@CGUID+309, 89734, 974, 1, -4408.507, 6273.993, 13.89466, 3.053421, 120, 0, 0), -- 89734 (Area: 5870) (Auras: 152760 - 152760, 151025 - 151025, 179281 - 179281)
+(@CGUID+310, 89734, 974, 1, -4409.213, 6366.121, 13.50524, 2.65413, 120, 0, 0), -- 89734 (Area: 5870) (Auras: 152760 - 152760, 151025 - 151025, 179281 - 179281)
+(@CGUID+311, 89736, 974, 1, -4424.276, 6273.732, 13.89585, 0.1174422, 120, 0, 0), -- 89736 (Area: 5870) (Auras: 152760 - 152760, 151025 - 151025, 179273 - 179273)
+(@CGUID+312, 89736, 974, 1, -4425.772, 6373.782, 13.50524, 5.81508, 120, 0, 0), -- 89736 (Area: 5870) (Auras: 152760 - 152760, 151025 - 151025, 179273 - 179273)
+(@CGUID+313, 90148, 974, 1, -4408.144, 6265.778, 13.94807, 2.210808, 120, 0, 0), -- 90148 (Area: 5870) (Auras: 152760 - 152760, 151025 - 151025, 179749 - 179749)
+(@CGUID+314, 90148, 974, 1, -4409.493, 6374.835, 13.50524, 3.375472, 120, 0, 0), -- 90148 (Area: 5870) (Auras: 152760 - 152760, 151025 - 151025, 179749 - 179749)
+(@CGUID+315, 90473, 974, 1, -4408.952, 6279.205, 14.65031, 3.060221, 120, 0, 0); -- 90473 (Area: 5870)
+
+DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+20;
+INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES
+(@OGUID+0, 180859, 974, 1, -3531.196, 6087.679, 6.77413, 0, 0, 0, 0, 1, 120, 255, 1), -- 180859 (Area: 5869)
+(@OGUID+1, 180859, 974, 1, -3556.832, 6083.604, 6.774127, 0, 0, 0, 0, 1, 120, 255, 1), -- 180859 (Area: 5869)
+(@OGUID+2, 210216, 974, 1, -4204.649, 6709.91, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 0)
+(@OGUID+3, 210216, 974, 1, -4418.03, 5864.06, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 5869)
+(@OGUID+4, 210216, 974, 1, -4407.03, 6115.59, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 5869)
+(@OGUID+5, 210216, 974, 1, -4444.221, 6215.84, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 5869)
+(@OGUID+6, 210216, 974, 1, -4457.5, 6366.06, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 5869)
+(@OGUID+7, 210216, 974, 1, -4332.729, 6702.681, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 5869)
+(@OGUID+8, 210216, 974, 1, -3740.07, 6907.34, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 5869)
+(@OGUID+9, 210216, 974, 1, -4399.809, 6618.7, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 0)
+(@OGUID+10, 216667, 974, 1, -4447.792, 6329.229, 13.26463, 3.09827, 0, 0, 0, 1, 120, 255, 1), -- 216667 (Area: 5870)
+(@OGUID+11, 210107, 974, 1, -4300.848, 6402.788, 16.55586, 3.115388, 0, 0, 0.9999143, 0.01308975, 120, 255, 1), -- 210107 (Area: 5870)
+(@OGUID+12, 235370, 974, 1, -4253.208, 6311.089, 13.11677, 1.906481, 0, 0, 0, 1, 120, 255, 1), -- 235370 (Area: 5870)
+(@OGUID+13, 216667, 974, 1, -3609.375, 6316.874, 113.1974, 3.09827, 0, 0, 0, 1, 120, 255, 1), -- 216667 (Area: 5902)
+(@OGUID+14, 210216, 974, 1, -4014.3, 6763.641, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 0)
+(@OGUID+15, 210216, 974, 1, -3941.611, 6769, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 0)
+(@OGUID+16, 210216, 974, 1, -3620.46, 6682.721, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 0)
+(@OGUID+17, 210216, 974, 1, -3455.5, 6469.79, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 5869)
+(@OGUID+18, 210216, 974, 1, -3382.33, 6234.8, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 5869)
+(@OGUID+19, 210216, 974, 1, -3579.271, 5992.71, 0, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- 210216 (Area: 5869)
+(@OGUID+20, 235637, 974, 1, -3895.724, 5902.836, -54.12026, 5.723681, 0, 0, 0, 1, 120, 255, 1); -- 235637 (Area: 5869)
+
+DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+299 AND @CGUID+306;
+INSERT INTO `creature_addon` (`guid`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
+(@CGUID+299, 0, 0x1, 0x1, ''),
+(@CGUID+300, 0, 0x1, 0x1, ''),
+(@CGUID+301, 0, 0x3, 0x1, ''),
+(@CGUID+302, 0, 0x0, 0x1, ''),
+(@CGUID+303, 0, 0x0, 0x1, ''),
+(@CGUID+304, 0, 0x1, 0x1, ''),
+(@CGUID+305, 0, 0x1, 0x1, ''),
+(@CGUID+306, 0, 0x0, 0x1, '');
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN (58342, 67319, 67329, 67370, 67382, 67383, 67384, 68231, 68232, 68233, 68238, 68239, 68402, 68407, 68426, 68491, 68492, 71982, 74056, 74333, 74388, 85519, 85522, 85523, 85525, 85546, 89715, 89734, 89736, 90148);
+INSERT INTO `creature_template_addon` (`entry`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
+(58342, 0, 0x0, 0x1, ''), -- 58342
+(67319, 0, 0x0, 0x1, '132784'), -- 67319 - 132784
+(67329, 0, 0x3000000, 0x1, ''), -- 67329
+(67370, 0, 0x0, 0x1, ''), -- 67370
+(67382, 0, 0x0, 0x1, ''), -- 67382
+(67383, 0, 0x0, 0x1, ''), -- 67383
+(67384, 0, 0x3000000, 0x1, ''), -- 67384
+(68231, 0, 0x0, 0x1, ''), -- 68231
+(68232, 0, 0x0, 0x1, ''), -- 68232
+(68233, 0, 0x0, 0x1, ''), -- 68233
+(68238, 0, 0x0, 0x1, ''), -- 68238
+(68239, 0, 0x0, 0x1, ''), -- 68239
+(68402, 0, 0x0, 0x1, ''), -- 68402
+(68407, 0, 0x0, 0x1, ''), -- 68407
+(68426, 0, 0x0, 0x1, ''), -- 68426
+(68491, 0, 0x0, 0x1, ''), -- 68491
+(68492, 0, 0x0, 0x1, ''), -- 68492
+(71982, 0, 0x0, 0x1, '133836'), -- 71982 - 133836
+(74056, 0, 0x0, 0x1, ''), -- 74056
+(74333, 0, 0x0, 0x1, '149665'), -- 74333 - 149665
+(74388, 0, 0x0, 0x1, '149746 151532'), -- 74388 - 149746, 151532
+(85519, 2410, 0x0, 0x1, ''), -- 85519
+(85522, 0, 0x0, 0x1, ''), -- 85522
+(85523, 0, 0x0, 0x1, ''), -- 85523
+(85525, 0, 0x3000000, 0x1, ''), -- 85525
+(85546, 0, 0x0, 0x1, ''), -- 85546
+(89715, 0, 0x0, 0x1, '46598'), -- 89715 - 46598
+(89734, 0, 0x0, 0x1, '152760 151025 179281'), -- 89734 - 152760, 151025, 179281
+(89736, 0, 0x0, 0x1, '152760 151025 179273'), -- 89736 - 152760, 151025, 179273
+(90148, 0, 0x0, 0x1, '152760 151025 179749'); -- 90148 - 152760, 151025, 179749
+
+DELETE FROM `creature_template_addon` WHERE `entry`=85484;
+INSERT INTO `creature_template_addon` (`entry`, `bytes1`, `bytes2`, `emote`) VALUES
+(85484, 0, 0x1, 461); -- 85484
+
+UPDATE `creature_template` SET `HoverHeight`=1.5 WHERE `entry`=55443; -- Goldwing
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912, `VehicleId`=2724 WHERE `entry`=68231; -- Carousel Dragon
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912, `VehicleId`=2724 WHERE `entry` IN (68232 /*Carousel Gryphon*/, 68233 /*Carousel Murloc*/, 68238 /*Carousel Rocket*/, 68239 /*Carousel Wyvern*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (58342 /*Christopher Lesson*/, 68492 /*"Dusty" Brandom*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=68402; -- Kae Ti
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=68407; -- "Olive" Ya
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=2050 WHERE `entry`=68426; -- [DND] Darkmoon Faire Carousel Bunny
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=67319; -- Darkmoon Hatchling
+UPDATE `creature_template` SET `speed_run`=1.142857, `unit_flags`=32768 WHERE `entry`=56160; -- Moonfang Snarler
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=67329; -- Darkmoon Glowfly
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=74056; -- -Unknown-
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=68491; -- Darkmoon Strider
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=67382; -- Fezwick
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=67383; -- Honky-Tonk
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=67384; -- Judgement
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=71982; -- Moonfang Dreadhowl
+UPDATE `creature_template` SET `minlevel`=95, `maxlevel`=95, `faction`=1555, `npcflag`=130, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=85484; -- -Unknown-
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587712, `unit_flags2`=2099200 WHERE `entry`=74333; -- -Unknown-
+UPDATE `creature_template` SET `gossip_menu_id`=16970, `minlevel`=100, `maxlevel`=100, `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=85546; -- -Unknown-
+UPDATE `creature_template` SET `maxlevel`=2, `speed_run`=1.190476, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4196352 WHERE `entry`=74388; -- -Unknown-
+UPDATE `creature_template` SET `minlevel`=60, `maxlevel`=60, `faction`=1555, `npcflag`=3, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=85519; -- -Unknown-
+UPDATE `creature_template` SET `minlevel`=25, `maxlevel`=25, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (85522 /*-Unknown-*/, 85523 /*-Unknown-*/, 85525 /*-Unknown-*/);
+UPDATE `creature_template` SET `minlevel`=100, `maxlevel`=100, `faction`=16, `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=85531; -- -Unknown-
+
+DELETE FROM `npc_vendor` WHERE `entry` IN (14846, 56335, 68402, 57983, 85484);
+INSERT INTO `npc_vendor` (`entry`, `item`, `slot`, `maxcount`, `ExtendedCost`, `Type`, `VerifiedBuild`) VALUES
+-- 56335
+(56335, 122338, 1, 0, 5547, 1, 19865), -- 122338
+(56335, 122339, 2, 0, 5548, 1, 19865), -- 122339
+(56335, 122387, 3, 0, 3806, 1, 19865), -- 122387
+(56335, 122388, 4, 0, 3806, 1, 19865), -- 122388
+(56335, 122381, 5, 0, 3806, 1, 19865), -- 122381
+(56335, 122355, 6, 0, 3806, 1, 19865), -- 122355
+(56335, 122356, 7, 0, 3806, 1, 19865), -- 122356
+(56335, 122379, 8, 0, 3806, 1, 19865), -- 122379
+(56335, 122357, 9, 0, 3806, 1, 19865), -- 122357
+(56335, 122380, 10, 0, 3806, 1, 19865), -- 122380
+(56335, 122382, 11, 0, 3806, 1, 19865), -- 122382
+(56335, 122359, 12, 0, 3806, 1, 19865), -- 122359
+(56335, 122358, 13, 0, 3806, 1, 19865), -- 122358
+(56335, 122383, 14, 0, 3806, 1, 19865), -- 122383
+(56335, 122360, 15, 0, 3806, 1, 19865), -- 122360
+(56335, 122384, 16, 0, 3806, 1, 19865), -- 122384
+(56335, 122350, 17, 0, 3806, 1, 19865), -- 122350
+(56335, 122349, 18, 0, 3811, 1, 19865), -- 122349
+(56335, 122352, 19, 0, 3811, 1, 19865), -- 122352
+(56335, 122354, 20, 0, 3806, 1, 19865), -- 122354
+(56335, 122353, 21, 0, 3811, 1, 19865), -- 122353
+(56335, 122386, 22, 0, 3811, 1, 19865), -- 122386
+(56335, 122351, 23, 0, 3806, 1, 19865), -- 122351
+(56335, 122385, 24, 0, 3806, 1, 19865), -- 122385
+(56335, 122389, 25, 0, 3806, 1, 19865), -- 122389
+(56335, 122362, 26, 0, 3812, 1, 19865), -- 122362
+(56335, 122361, 27, 0, 3812, 1, 19865), -- 122361
+(56335, 122363, 28, 0, 3811, 1, 19865), -- 122363
+(56335, 122390, 29, 0, 3806, 1, 19865), -- 122390
+(56335, 122391, 30, 0, 3806, 1, 19865), -- 122391
+(56335, 122392, 31, 0, 3806, 1, 19865), -- 122392
+-- 68402
+(68402, 92794, 7, 0, 0, 1, 19865), -- 92794
+-- 14846
+(14846, 73766, 1, 0, 3701, 1, 19865), -- 73766
+(14846, 72140, 2, 0, 3701, 1, 19865), -- 72140
+(14846, 91003, 3, 0, 3700, 1, 19865), -- 91003
+(14846, 73764, 4, 0, 3700, 1, 19865), -- 73764
+(14846, 74981, 5, 0, 3700, 1, 19865), -- 74981
+(14846, 73765, 6, 0, 3700, 1, 19865), -- 73765
+(14846, 73762, 7, 0, 3700, 1, 19865), -- 73762
+(14846, 73903, 8, 0, 3700, 1, 19865), -- 73903
+(14846, 73905, 9, 0, 3700, 1, 19865), -- 73905
+-- 85484
+(85484, 116133, 1, 0, 3814, 1, 19865), -- 116133
+(85484, 116052, 2, 0, 3814, 1, 19865), -- 116052
+(85484, 116134, 5, 0, 3813, 1, 19865), -- 116134
+(85484, 116139, 6, 0, 3700, 1, 19865), -- 116139
+(85484, 116138, 7, 0, 5800, 1, 19865); -- 116138
+
+DELETE FROM `creature_equip_template` WHERE `CreatureID` IN (74056, 85484, 85519, 90473);
+INSERT INTO `creature_equip_template` (`CreatureID`, `ItemID1`, `ItemID2`, `ItemID3`) VALUES
+(74056, 110708, 0, 0), -- -Unknown-
+(85484, 6235, 0, 0), -- -Unknown-
+(85519, 7944, 0, 0), -- -Unknown-
+(90473, 110708, 0, 0); -- -Unknown-
+
+DELETE FROM `gossip_menu` WHERE (`entry`=13019 AND `text_id`=18290) OR (`entry`=16970 AND `text_id`=24702);
+INSERT INTO `gossip_menu` (`entry`, `text_id`) VALUES
+(13019, 18290), -- 54605
+(16970, 24702); -- 85546
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=16970;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`) VALUES
+(16970, 0, 0, 'How do I play Firebird''s Challenge?', 87053), -- 85546
+(16970, 1, 0, 'Ready to fly! |cFF0008E8(Darkmoon Game Token)|r', 87062); -- 85546
+
+DELETE FROM `npc_text` WHERE `ID` IN (24704, 26114, 18472, 6961, 11538, 18290, 7381, 24702);
+INSERT INTO `npc_text` (`ID`, `Probability0`, `BroadcastTextId0`, `Probability1`, `BroadcastTextId1`, `Probability2`, `BroadcastTextId2`, `Probability3`, `BroadcastTextId3`, `Probability4`, `BroadcastTextId4`, `Probability5`, `BroadcastTextId5`, `Probability6`, `BroadcastTextId6`, `Probability7`, `BroadcastTextId7`, `VerifiedBuild`) VALUES
+(24704, 1, 87078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 24704
+(26114, 1, 92741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 26114
+(18472, 1, 53824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 18472
+(6961, 1, 9557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 6961
+(11538, 1, 22574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 11538
+(18290, 1, 53059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 18290
+(7381, 1, 10117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865), -- 7381
+(24702, 1, 87077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19865); -- 24702
diff --git a/sql/updates/world/2015_05_10_02_world_2015_05_09_00.sql b/sql/updates/world/2015_05_10_02_world_2015_05_09_00.sql
new file mode 100644
index 00000000000..1ab6c7d2357
--- /dev/null
+++ b/sql/updates/world/2015_05_10_02_world_2015_05_09_00.sql
@@ -0,0 +1,30 @@
+-- High Priest Venoxis
+UPDATE `creature_template` SET `lootid` = 52155 WHERE `entry` = 52155;
+
+DELETE FROM `creature_loot_template` WHERE `Entry` = 52155;
+INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `LootMode`, `MinCount`, `MaxCount`) VALUES
+(52155, 521550, 521550, 100, 1, 1, 1);
+
+DELETE FROM `reference_loot_template` WHERE `Entry` = 521550;
+INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Chance`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`) VALUES
+(521550, 69600, 0, 1, 1, 1, 1), -- Belt of Slithering Serpents
+(521550, 69603, 0, 1, 1, 1, 1), -- Breastplate of Serenity
+(521550, 69604, 0, 1, 1, 1, 1), -- Coils of Hate
+(521550, 69601, 0, 1, 1, 1, 1), -- Serpentine Leggings
+(521550, 69602, 0, 1, 1, 1, 1); -- Signet of Venoxis
+
+-- Bloodlord Mandokir
+UPDATE `creature_template` SET `lootid` = 52151 WHERE `entry` = 52151;
+
+DELETE FROM `creature_loot_template` WHERE `entry`= 52151;
+INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `LootMode`, `MinCount`, `MaxCount`) VALUES
+(52151, 521510, 521510, 100, 1, 1, 1);
+
+DELETE FROM `reference_loot_template` WHERE `Entry` = 521510;
+INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Chance`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`) VALUES
+(521510, 69605, 0, 1, 1, 1, 1), -- Amulet of the Watcher
+(521510, 69609, 0, 1, 1, 1, 1), -- Bloodlord's Protector
+(521510, 69608, 0, 1, 1, 1, 1), -- Deathcharged Wristguards
+(521510, 69606, 0, 1, 1, 1, 1), -- Hakkari Loa Drape
+(521510, 69607, 0, 1, 1, 1, 1), -- Touch of Discord
+(521510, 68823, 1, 1, 2, 1, 1); -- Amored Razzashi Raptor Mount
diff --git a/sql/updates/world/2015_05_15_00_world.sql b/sql/updates/world/2015_05_15_00_world.sql
new file mode 100644
index 00000000000..64985145721
--- /dev/null
+++ b/sql/updates/world/2015_05_15_00_world.sql
@@ -0,0 +1,14 @@
+UPDATE `creature_template` SET `ScriptName`="npc_meteor_strike_flame" WHERE `entry`=40055;
+
+DELETE FROM `spell_script_names` WHERE `spell_id`=75880 OR `ScriptName`="spell_halion_spawn_living_embers";
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(75880, "spell_halion_spawn_living_embers");
+
+DELETE FROM `spelleffect_dbc` WHERE `EffectSpellId` IN (75880, 75881);
+INSERT INTO `spelleffect_dbc` (`Id`, `EffectSpellId`, `EffectIndex`, `Effect`, `EffectImplicitTargetA`, `EffectImplicitTargetB`, `EffectRadiusIndex`, `EffectRadiusIndexMax`, `EffectMiscValue`, `EffectMiscValueB`) VALUES
+(155915, 75880, 0, 77, 22, 7, 12, 12, 0, 0),
+(155916, 75881, 0, 28, 18, 0, 12, 12, 40683, 64);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=75880;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `Comment`) VALUES
+(13, 1, 75880, 31, 0, 3, 40055, "Spawn Living Embers can only target Meteor Strike (Flame)");
diff --git a/sql/updates/world/2015_05_15_01_world.sql b/sql/updates/world/2015_05_15_01_world.sql
new file mode 100644
index 00000000000..bf996226a23
--- /dev/null
+++ b/sql/updates/world/2015_05_15_01_world.sql
@@ -0,0 +1 @@
+UPDATE `spelleffect_dbc` SET `EffectMiscValue`=40683 WHERE `Id`=155916;
diff --git a/sql/updates/world/2015_05_19_00_world.sql b/sql/updates/world/2015_05_19_00_world.sql
new file mode 100644
index 00000000000..420a94c7a0c
--- /dev/null
+++ b/sql/updates/world/2015_05_19_00_world.sql
@@ -0,0 +1,4 @@
+ALTER TABLE `terrain_swap_defaults` ENGINE=MyISAM;
+ALTER TABLE `terrain_phase_info` ENGINE=MyISAM;
+ALTER TABLE `terrain_worldmap` ENGINE=MyISAM;
+ALTER TABLE `phase_area` ENGINE=MyISAM;
diff --git a/sql/updates/world/2015_05_19_01_world_2015_04_24_00.sql b/sql/updates/world/2015_05_19_01_world_2015_04_24_00.sql
new file mode 100644
index 00000000000..d8fffb58bf5
--- /dev/null
+++ b/sql/updates/world/2015_05_19_01_world_2015_04_24_00.sql
@@ -0,0 +1,42 @@
+-- Manual Spawn Randy Whizzlesprocket
+SET @GUID := 49056;
+DELETE FROM `creature` WHERE `guid` = @GUID;
+INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`) VALUES
+(@GUID, 17288, 540, 0, 0, 2, 0, 0, 131.106, 254.520, -45.236, 3.951, 7200, 0, 0, 6104, 0, 0, 0, 0, 0);
+
+-- Missing 2xEmblem of Justice from quest 'Imprisoned in the citadel'
+-- UPDATE `quest_template` SET `RewardItemId1` = 29434, `RewardItemCount1` = 2 WHERE `Id` IN (9524,9525);
+
+-- Update Shattered Hand Executioner loot Table
+UPDATE `creature_loot_template` SET `LootMode` = 8, `GroupId` = 1, `Chance` = 0 WHERE `Entry` = 20585;
+DELETE FROM `creature_loot_template` WHERE `Entry` = 20585 AND `Item` IN (31716,29434,22829,22832,24726);
+INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
+(20585, 31716, 0, 100, 1, 2|4|8, 0, 1, 1, NULL), -- Unused Axe
+(20585, 29434, 0, 100, 0, 8, 0, 1, 1, NULL), -- 1x Emblem of Justice (3 Prisoners Rescued)
+(20585, 22829, 0, 0, 0, 2|4|8, 2, 2, 8, NULL), -- Greater Potions
+(20585, 22832, 0, 0, 0, 2|4|8, 2, 2, 8, NULL),
+(20585, 24726, 24726, 100, 0, 4|8, 0, 1, 1, NULL); -- Scroll of XXXX VI
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 17301 AND `source_type` = 0;
+UPDATE `creature_template` SET `AIName` = '', ScriptName = 'boss_shattered_executioner', `flags_extra` = 0 WHERE `entry` = 17301;
+UPDATE `creature_template` SET `unit_flags` = 33088 WHERE `entry` IN (17301,20585);
+UPDATE `creature_template` SET `unit_flags` = 33555200 WHERE `entry` IN (19523,19524,20572,20573);
+UPDATE `creature_template` SET `flags_extra` = 0 WHERE `entry` = 20585;
+
+DELETE FROM `areatrigger_scripts` WHERE `entry` = 4524;
+INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES
+(4524, 'at_nethekurse_exit');
+DELETE FROM `spell_script_names` WHERE `spell_id` IN (39288,39289,39290);
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(39288, 'spell_kargath_executioner'),
+(39289, 'spell_kargath_executioner'),
+(39290, 'spell_kargath_executioner');
+
+UPDATE `gameobject_template` SET `flags` = 34 WHERE `entry` IN (182539,182540); -- Sniffed value
+-- Missing texts
+SET @KARGATH := 16808;
+SET @BROADCAST := 13721;
+DELETE FROM `creature_text` WHERE `entry` = @KARGATH AND `groupid` IN (3,4);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
+(@KARGATH, 3, 0, 'The Alliance dares to intrude this far into my fortress? Bring out the Honor Hold prisoners and call for the executioner! They''ll pay with their lives for this trespass!', 14, 0, 100, 0, 0, 0, @BROADCAST+0, 3, 'kargath SAY_CALL_EXECUTIONER_A'),
+(@KARGATH, 4, 0, 'Thrall''s false Horde dares to intrude this far into my fortress? Bring out the Thrallmar prisoners and call for the executioner! They''ll pay with their lives for this trespass!', 14, 0, 100, 0, 0, 0, @BROADCAST+1, 3, 'kargath SAY_CALL_EXECUTIONER_H');
diff --git a/sql/updates/world/2015_05_19_02_world_2015_04_18_00.sql b/sql/updates/world/2015_05_19_02_world_2015_04_18_00.sql
new file mode 100644
index 00000000000..29d67fe0429
--- /dev/null
+++ b/sql/updates/world/2015_05_19_02_world_2015_04_18_00.sql
@@ -0,0 +1 @@
+UPDATE `creature_template` SET `InhabitType`=3 WHERE `entry` IN (5931, 3989, 3988, 3991, 3999, 4004, 4003);
diff --git a/sql/updates/world/2015_05_19_03_world_2015_04_18_01.sql b/sql/updates/world/2015_05_19_03_world_2015_04_18_01.sql
new file mode 100644
index 00000000000..707335c490e
--- /dev/null
+++ b/sql/updates/world/2015_05_19_03_world_2015_04_18_01.sql
@@ -0,0 +1,6 @@
+--
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=40060 AND `ConditionTypeOrReference`=29;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,40060,0,0,0,29,0,9461,100,0,1,0,0,'','Gor Grimgut cannot be a target for Exhaustion.'),
+(15,40060,0,0,1,29,0,9461,100,0,1,0,0,'','Gor Grimgut cannot be a target for Exhaustion.'),
+(15,40060,0,0,2,29,0,9461,100,0,1,0,0,'','Gor Grimgut cannot be a target for Exhaustion.');
diff --git a/sql/updates/world/2015_05_19_03_world_2015_04_18_02.sql b/sql/updates/world/2015_05_19_03_world_2015_04_18_02.sql
new file mode 100644
index 00000000000..6a299828e26
--- /dev/null
+++ b/sql/updates/world/2015_05_19_03_world_2015_04_18_02.sql
@@ -0,0 +1,13 @@
+--
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=17918;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=17918 AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+
+(17918, 0, 0, 0, 0, 0, 100, 0, 3000, 7000, 8000, 12000, 11, 31478, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,0,'Time Keeper - IC - Cast Sand Breath'),
+(17918, 0, 1, 0, 0, 0, 100, 0, 5000, 10000, 20000, 30000, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,0,'Time Keeper - IC - Cast Sand Breath');
+
+DELETE FROM `creature_text` WHERE `entry` IN (17918);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
+(17918, 0, 0, 'Victory will be ours!', 14, 0, 100, 0, 0, 0, 15194, 0, 'Time Keeper'),
+(17918, 0, 1, 'Carry on! Victory at all costs!', 14, 0, 100, 0, 0, 0, 15195, 0, 'Time Keeper'),
+(17918, 0, 2, 'Continue the fight! Do not falter!', 14, 0, 100, 0, 0, 0, 15196, 0, 'Time Keeper');
diff --git a/sql/updates/world/2015_05_19_04_world_2015_04_18_03.sql b/sql/updates/world/2015_05_19_04_world_2015_04_18_03.sql
new file mode 100644
index 00000000000..cc6d3d65dea
--- /dev/null
+++ b/sql/updates/world/2015_05_19_04_world_2015_04_18_03.sql
@@ -0,0 +1,4 @@
+--
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 54355 AND `spell_effect` = 54402;
+INSERT INTO `spell_linked_spell` (`spell_trigger`,`spell_effect`,`type`,`comment`) VALUES
+(54355, 54402, 0, 'Land Mine');
diff --git a/sql/updates/world/2015_05_19_04_world_2015_04_18_05.sql b/sql/updates/world/2015_05_19_04_world_2015_04_18_05.sql
new file mode 100644
index 00000000000..b61ff01bdfc
--- /dev/null
+++ b/sql/updates/world/2015_05_19_04_world_2015_04_18_05.sql
@@ -0,0 +1,9 @@
+--
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (-24869, -61874, -71074, -71068, -71073, -71071) AND `spell_effect` = 24870;
+INSERT INTO `spell_linked_spell` (`spell_trigger`,`spell_effect`,`type`,`comment`) VALUES
+(-24869, 24870, 0, 'Bobbing Apple, Bread of the Dead, Winter Veil Cookie'),
+(-61874, 24870, 0, 'Noblegarden Chocolate'),
+(-71074, 24870, 0, 'Buttermilk Delight'),
+(-71068, 24870, 0, 'Sweet Surprise'),
+(-71073, 24870, 0, 'Dark Desire'),
+(-71071, 24870, 0, 'Very Berry Cream');
diff --git a/sql/updates/world/2015_05_20_00_world_2015_05_19_01.sql b/sql/updates/world/2015_05_20_00_world_2015_05_19_01.sql
new file mode 100644
index 00000000000..12ab4d8677b
--- /dev/null
+++ b/sql/updates/world/2015_05_20_00_world_2015_05_19_01.sql
@@ -0,0 +1,22 @@
+-- Gossip Menu Option for Squire David (33447)
+SET @SourceGroup = 10340;
+SET @SourceEntry = 0;
+SET @ConditionTypeOrReference = 9;
+
+DELETE FROM conditions where SourceGroup=@SourceGroup and SourceEntry=@SourceEntry;
+INSERT INTO conditions(SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, ConditionTarget, ConditionValue1, ConditionValue2, ConditionValue3, NegativeCondition, ErrorType, ErrorTextId, ScriptName, Comment) VALUES
+(15, @SourceGroup, @SourceEntry, 0, 0, @ConditionTypeOrReference, 0, 13679, 0, 0, 0, 0, 0, '', 'Show gossip option if player has quest 13679'),
+(15, @SourceGroup, @SourceEntry, 0, 1, @ConditionTypeOrReference, 0, 13680, 0, 0, 0, 0, 0, '', 'Show gossip option if player has quest 13680');
+
+-- Squire David SAI
+SET @ENTRY := 33447;
+UPDATE creature_template SET ScriptName="" WHERE entry=33447;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,1,62,0,100,0,10340,0,0,0,11,63028,0,0,0,0,0,7,0,0,0,0,0,0,0,"Squire David - On Gossip Option 0 Selected - Cast 'Force Cast'"),
+(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Squire David - On Gossip Option 0 Selected - Close Gossip");
+
+DELETE FROM `spell_target_position` WHERE `id`=63026;
+INSERT INTO `spell_target_position` (`id`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`) VALUES
+(63026, 0, 571, 8575.38, 921.85, 547.554);
diff --git a/sql/updates/world/2015_05_20_01_world_2015_05_19_02.sql b/sql/updates/world/2015_05_20_01_world_2015_05_19_02.sql
new file mode 100644
index 00000000000..46125437940
--- /dev/null
+++ b/sql/updates/world/2015_05_20_01_world_2015_05_19_02.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_target_position` WHERE `id`=63171;
+INSERT INTO `spell_target_position` (`id`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`) VALUES
+(63171, 0, 571, 8533.11, 1069.66, 551.784);
diff --git a/sql/updates/world/2015_05_21_00_world_2015_04_18_06.sql b/sql/updates/world/2015_05_21_00_world_2015_04_18_06.sql
new file mode 100644
index 00000000000..aa532de444b
--- /dev/null
+++ b/sql/updates/world/2015_05_21_00_world_2015_04_18_06.sql
@@ -0,0 +1,5 @@
+DELETE FROM `smart_scripts` WHERE `entryorguid`=26472 AND `source_type`=0 AND `id` IN(4,5,6);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(26472, 0, 4, 5, 8, 0, 100, 1, 49319, 0, 0, 0, 89, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highland Mustang - On Spellhit \'Scare Highland Mustang\' - Flee For Assist (No Repeat)'),
+(26472, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49323, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Highland Mustang - On Spellhit \'Scare Highland Mustang\' - Cast \'Highland Mustang Spooking Credit\' (No Repeat)'),
+(26472, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 5000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highland Mustang - On Spellhit \'Scare Highland Mustang\' - Despawn In 5000 ms (No Repeat)');
diff --git a/sql/updates/world/2015_05_22_00_world.sql b/sql/updates/world/2015_05_22_00_world.sql
new file mode 100644
index 00000000000..f82e738ea20
--- /dev/null
+++ b/sql/updates/world/2015_05_22_00_world.sql
@@ -0,0 +1,91 @@
+DROP TABLE IF EXISTS `garrison_follower_class_spec_abilities`;
+CREATE TABLE `garrison_follower_class_spec_abilities` (
+ `classSpecId` int(10) unsigned NOT NULL DEFAULT '0',
+ `abilityId` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`classSpecId`,`abilityId`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+INSERT INTO `garrison_follower_class_spec_abilities` (`abilityId`,`classSpecId`) VALUES
+(119,3), -- Anti-Magic Shell
+(158,29),(158,30), -- Ascendance
+(131,22), -- Avenging Wrath
+(132,7),(132,8), -- Barkskin
+(138,7), -- Berserk
+(170,14),(170,15), -- Blink
+(5,15),(5,16), -- Blizzard
+(115,2),(115,4), -- Bone Shield
+(139,5), -- Celestial Alignment
+(106,29),(106,30),(106,31), -- Chain Heal
+(154,29),(154,30),(154,31), -- Chain Lightning
+(142,17),(142,18), -- Chi Wave
+(125,20),(125,21), -- Cleanse
+(120,35),(120,37),(120,38), -- Cleave
+(169,14), -- Conjure Food
+(166,12), -- Counter Shot
+(171,14),(171,15),(171,16), -- Counterspell
+(114,2),(114,3),(114,4), -- Dark Command
+(182,5),(182,7),(182,8), -- Dash
+(116,2),(116,3),(116,4), -- Death and Decay
+(164,13), -- Deterrence
+(145,18), -- Detox
+(165,10),(165,12),(165,13), -- Disengage
+(148,23),(148,24),(148,25), -- Dispel Magic
+(129,20), -- Divine Plea
+(124,21),(124,22), -- Divine Shield
+(130,22), -- Divine Storm
+(151,23),(151,25), -- Dominate Mind
+(175,34), -- Drain Life
+(118,2),(118,3),(118,4), -- Empower Rune Weapon
+(183,19), -- Energizing Brew
+(134,5),(134,8),(134,9), -- Entangling Roots
+(159,26),(159,28), -- Evasion
+(161,27),(161,28), -- Fan of Knives
+(180,32),(180,34), -- Fear
+(163,10), -- Feign Death
+(167,10),(167,12),(167,13), -- Freezing Trap
+(156,30), -- Ghost Wolf
+(108,7),(108,8), -- Growl
+(141,17), -- Guard
+(102,35),(102,37),(102,38), -- Heroic Leap
+(157,29),(157,30), -- Hex
+(128,20), -- Holy Radiance
+(137,5),(137,9), -- Hurricane
+(168,16), -- Ice Block
+(133,5),(133,7),(133,8),(133,9), -- Innervate
+(105,26),(105,27),(105,28), -- Kick
+(10,23),(10,24),(10,25), -- Leap of Faith
+(146,18), -- Mana Tea
+(162,26),(162,27), -- Marked for Death
+(177,33),(177,34), -- Metamorphosis
+(117,2),(117,3),(117,4), -- Mind Freeze
+(150,24),(150,25), -- Mind Sear
+(101,10),(101,12),(101,13), -- Multi-Shot
+(136,9), -- Nature's Cure
+(144,17),(144,19), -- Paralysis
+(172,14),(172,15),(172,16), -- Polymorph
+(152,25), -- Power Infusion
+(11,23),(11,24), -- Prayer of Healing
+(140,17),(140,19), -- Provoke
+(121,35),(121,37),(121,38), -- Pummel
+(107,31), -- Purify Spirit
+(178,32),(178,33), -- Rain of Fire
+(103,10),(103,12),(103,13), -- Rapid Fire
+(126,20),(126,21),(126,22), -- Rebuke
+(122,35),(122,37), -- Recklessness
+(123,21), -- Reckoning
+(127,20),(127,21),(127,22), -- Repentance
+(143,17),(143,18),(143,19), -- Roll
+(104,26),(104,27),(104,28), -- Sap
+(149,23),(149,24), -- Shadowfiend
+(6,37),(6,38), -- Shield Wall
+(176,32), -- Singe Magic
+(147,18),(147,19), -- Spear Hand Strike
+(179,32),(179,33),(179,34), -- Spell Lock
+(160,26),(160,27),(160,28), -- Sprint
+(181,32),(181,33),(181,34), -- Summon Infernal
+(100,35),(100,38), -- Taunt
+(173,14),(173,15),(173,16), -- Time Warp
+(174,33), -- Unending Resolve
+(153,31), -- Water Shield
+(135,9), -- Wild Growth
+(155,29),(155,31); -- Wind Shear
diff --git a/sql/updates/world/2015_05_27_00_world.sql b/sql/updates/world/2015_05_27_00_world.sql
new file mode 100644
index 00000000000..8e62a9e3343
--- /dev/null
+++ b/sql/updates/world/2015_05_27_00_world.sql
@@ -0,0 +1,51 @@
+--
+DELETE FROM `creature_formations` WHERE `leaderGUID`=366728;
+INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
+(366728, 366728, 0, 0, 2, 0, 0),
+(366728, 366739, 0, 0, 2, 0, 0),
+(366728, 366727, 0, 0, 2, 0, 0);
+
+DELETE FROM `creature_addon` WHERE `guid` IN (366739, 366727);
+INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(366739,0,0,0,1,0, ''),
+(366727,0,0,0,1,0, '');
+
+-- Magram Warden SAI
+SET @ENTRY := 36134;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,1,0,0,0,0,11,8258,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magram Warden - On Aggro - Cast 'Devotion Aura' (No Repeat)"),
+(@ENTRY,0,1,0,11,0,100,1,0,0,0,0,11,7165,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magram Warden - On Respawn - Cast 'Battle Stance' (No Repeat)"),
+(@ENTRY,0,2,0,0,0,100,0,2000,4500,12000,14000,11,25710,0,0,0,0,0,2,0,0,0,0,0,0,0,"Magram Warden - In Combat - Cast 'Heroic Strike'"),
+(@ENTRY,0,3,0,2,0,100,1,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magram Warden - Between 0-15% Health - Flee For Assist (No Repeat)"),
+(@ENTRY,0,4,0,6,0,100,0,0,0,0,0,45,1,0,0,0,0,0,11,36137,100,0,0,0,0,0,"Magram Warden - On Just Died - Set Data 1 0");
+
+-- Kolkar Prisoner SAI
+SET @ENTRY := 36137;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,2,0,100,1,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kolkar Prisoner - Between 0-15% Health - Flee For Assist (No Repeat)"),
+(@ENTRY,0,1,0,38,0,100,0,1,0,0,0,88,@ENTRY*100+00,@ENTRY*100+01,@ENTRY*100+02,0,0,0,1,0,0,0,0,0,0,0,"Kolkar Prisoner - On Data Set 1 0 - Run Random Script");
+
+-- Actionlist SAI
+SET @ENTRY := 3613700;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=9;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,9,0,0,0,0,100,0,0,0,0,0,69,0,0,0,0,0,0,8,0,0,0,-1256.915283,1051.419556,91.691681,2.778741,"On Script - Move To Position"),
+(@ENTRY,9,1,0,0,0,100,0,12000,12000,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"On Script - Despawn Instant");
+
+-- Actionlist SAI
+SET @ENTRY := 3613701;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=9;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,9,0,0,0,0,100,0,0,0,0,0,69,0,0,0,0,0,0,8,0,0,0,-1276.356445,1026.592651,91.140945,2.778741,"On Script - Move To Position"),
+(@ENTRY,9,1,0,0,0,100,0,12000,12000,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"On Script - Despawn Instant");
+
+-- Actionlist SAI
+SET @ENTRY := 3613702;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=9;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,9,0,0,0,0,100,0,0,0,0,0,69,0,0,0,0,0,0,8,0,0,0,-1263.007324,967.299744,90.557411,3.721225,"On Script - Move To Position"),
+(@ENTRY,9,1,0,0,0,100,0,12000,12000,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"On Script - Despawn Instant");
diff --git a/sql/updates/world/2015_05_29_00_world.sql b/sql/updates/world/2015_05_29_00_world.sql
new file mode 100644
index 00000000000..779427a0167
--- /dev/null
+++ b/sql/updates/world/2015_05_29_00_world.sql
@@ -0,0 +1 @@
+ALTER TABLE `quest_template` CHANGE `Float10` `RewardXPMultiplier` float NOT NULL DEFAULT '1';
diff --git a/sql/updates/world/2015_06_01_00_world_2015_05_26_05.sql b/sql/updates/world/2015_06_01_00_world_2015_05_26_05.sql
new file mode 100644
index 00000000000..d7ef0e17204
--- /dev/null
+++ b/sql/updates/world/2015_06_01_00_world_2015_05_26_05.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` = 39291;
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(39291, 'spell_remove_kargath_executioner');
diff --git a/sql/updates/world/2015_06_06_00_world.sql b/sql/updates/world/2015_06_06_00_world.sql
new file mode 100644
index 00000000000..c01777b7fd0
--- /dev/null
+++ b/sql/updates/world/2015_06_06_00_world.sql
@@ -0,0 +1,4277 @@
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857 WHERE `entry` IN (35880 /*Lady Silisthra*/, 35881 /*Lady Vesthra*/, 36335 /*Image of Archmage Xylem*/, 36336 /*Image of Archmage Xylem*/, 36345 /*Shadow Portal Bunny*/, 36364 /*Henny*/, 36368 /*Darwin*/, 36594 /*Lorekeeper Amberwind*/, 36599 /*Arcane Construct*/, 36662 /*Gorek*/, 36744 /*Glix Grindlock*/, 36785 /*Bombardier Captain Smooks*/, 36951 /*Real Estate Bunny (Vista)*/, 36952 /*Real Estate Bunny (Tower)*/, 39946 /*Caryssia Moonhunter*/, 39992 /*Rendow*/, 40071 /*Julia Scrabblewrench*/, 41124 /*Okrilla*/, 6648 /*Antilos*/, 6649 /*Lady Sesspira*/, 6650 /*General Fangferror*/, 44309 /*Innkeeper Grak*/, 11723 /*Hive'Ashi Sandstalker*/, 51791 /*Okril'lon Defender*/, 51918 /*Stonard Grunt*/, 18396 /*Boulderfist Saboteur*/, 19305 /*Goliathon*/, 19871 /*World Trigger (Not Immune NPC)*/, 20781 /*Seed of Revitalization Target Trigger*/, 24082 /*Proto-Drake Handler*/, 24213 /*Firjus the Soul Crusher*/, 31641 /*Icecrown - Pit Fall*/, 32325 /*Gold Priest*/, 32343 /*Green Priest*/, 34774 /*Fire Pillar Controller Bunny*/, 35065 /*Eye of Frost Beam Bunny*/, 35648 /*Will Robotronic*/, 35754 /*Quarla Whistlebreak*/, 35755 /*Tharkul Ironskull*/, 35756 /*Teresa Spireleaf*/, 35831 /*Spitelash Stormfury*/, 35832 /*Spitelash Seacaller*/, 35833 /*Spitelash Priestess*/);
+UPDATE `creature_template` SET `unit_flags2`=34816 WHERE `entry` IN (35892 /*Silisthra's Power Stone*/, 35968 /*Vesthra's Power Stone*/, 49233 /*Solid Ice*/, 34812 /*The Turkey Chair*/, 34819 /*The Stuffing Chair*/, 34822 /*The Pie Chair*/, 34823 /*The Cranberry Chair*/, 34824 /*The Sweet Potato Chair*/);
+UPDATE `creature_template` SET `unit_flags`=67108864 WHERE `entry` IN (114 /*Harvest Watcher*/, 3254 /*Sunscale Lashtail*/, 3281 /*Sarkoth*/, 42504 /*Mature Swine*/, 43732 /*Corpseweed*/, 20751 /*Daggermaw Lashtail*/, 26349 /*Goramosh*/, 35096 /*Weakened Mosshoof Stag*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (36155 /*Anzim Controller Bunny*/, 36165 /*7th Legion Deckhand*/, 36166 /*7th Legion Marine*/, 36476 /*Ick*/, 36477 /*Krick*/, 36497 /*Bronjahm*/, 36502 /*Devourer of Souls*/, 36508 /*Soulguard Beam Focus Target*/, 36658 /*Scourgelord Tyrannus*/, 36661 /*Rimefang*/, 36665 /*Warsong Assault Wind Rider*/, 36788 /*Deathwhisper Necrolyte*/, 36794 /*Scourgelord Tyrannus*/, 36840 /*Ymirjar Wrathbringer*/, 36841 /*Fallen Warrior*/, 36842 /*Wrathbone Coldwraith*/, 36852 /*Skychaser Hippogryph*/, 36868 /*Enslaved Son of Arkkoroc*/, 36881 /*Skeletal Slave*/, 36886 /*Geist Ambusher*/, 36890 /*Talrendis Glaive Thrower*/, 36892 /*Ymirjar Deathbringer*/, 36893 /*Ymirjar Flamebearer*/, 36896 /*Stonespine Gargoyle*/, 36907 /*Wrathbone Siegesmith*/, 36932 /*Azshara Bombing Bunny*/, 36967 /*Spiteful Apparition (Ambient)*/, 1768 /*Vile Fin Tidehunter*/, 37704 /*Frostmourne Altar Bunny (Quel'Delar)*/, 37712 /*Deathwhisper Shadowcaster*/, 37713 /*Deathwhisper Torturer*/, 37728 /*Wrathbone Sorcerer*/, 37729 /*Wrathbone Reaver*/, 1908 /*Vile Fin Oracle*/, 37965 /*Argent Commander*/, 37967 /*Ebon Blade Commander*/, 37974 /*Desolation Wind Rider*/, 37978 /*Triumph War Gryphon*/, 38487 /*Fallen Warrior*/, 38493 /*Argent Crusader*/, 38500 /*Argent Warhorse*/, 38505 /*Knight of the Ebon Blade*/, 2754 /*Anathemus*/, 38661 /*Rageroar Sea Dog*/, 38747 /*Rageroar Rowboat*/, 39022 /*Tidal Strider*/, 39071 /*Wagon of Unending Agony*/, 39140 /*Aronus*/, 39392 /*Faceless Corruptor*/, 39425 /*Temple Guardian Anhuur*/, 39428 /*Earthrager Ptah*/, 39436 /*Twilight Proveditor*/, 39450 /*Trogg Dweller*/, 39587 /*Isiset*/, 39625 /*General Umbriss*/, 39665 /*Rom'ogg Bonecrusher*/, 39679 /*Corla, Herald of Twilight*/, 39698 /*Karsh Steelbender*/, 39700 /*Beauty*/, 39705 /*Ascendant Lord Obsidius*/, 39731 /*Ammunae*/, 39788 /*Anraphet*/, 39838 /*Twilight Stormwaker*/, 39839 /*Twilight Stormwaker*/, 39842 /*Invisible Stalker (Hostile, Ignore Combat, Float, Uninteractible, Large AOI)*/, 39873 /*Twilight Wyrmcaller*/, 39960 /*Deep Murloc Drudge*/, 39984 /*Malignant Trogg*/, 40026 /*Mountain Giant*/, 40167 /*Twilight Beguiler*/, 40197 /*Twilight Archer*/, 40319 /*Drahga Shadowburner*/, 40320 /*Valiona*/, 40485 /*Twilight Egg*/, 40486 /*Alexstrasza's Egg*/, 40538 /*Crimson Wall Stalker*/, 40559 /*Ship to Vashj'ir Phase Caster Bunny*/, 40566 /*Shadow Gale Controller Stalker*/, 40573 /*Twilight Stormwaker*/, 40575 /*Twilight Stormwaker*/, 40579 /*Deep Murloc Hunter*/, 40586 /*Lady Naz'jar*/, 40816 /*Aronus*/, 40817 /*Shadow of Obsidius*/, 40923 /*Unstable Corruption*/, 40935 /*Gilgoblin Hunter*/, 40936 /*Faceless Watcher*/, 40943 /*Gilgoblin Aquamage*/, 41188 /*Mortar Target*/, 41189 /*Mortar Caster*/, 5359 /*Shore Strider*/, 41266 /*Goblin Hot Air Balloon*/, 41384 /*Rockpool Murloc*/, 5709 /*Shade of Eranikus*/, 5710 /*Jammal'an the Prophet*/, 5711 /*Ogom the Wretched*/, 41761 /*Water Spout*/, 41945 /*Deepholm Stalker Beam Target 00*/, 41946 /*Deepholm Stalker Beam Target 01*/, 41956 /*Deepholm Stalker Beam Target 02*/, 41957 /*Deepholm Stalker Beam Target*/, 41960 /*Deepholm Stalker Beam Target 04*/, 41965 /*Meteor Target*/, 42014 /*Ironforge Bomber*/, 6193 /*Spitelash Screamer*/, 6196 /*Spitelash Myrmidon*/, 42046 /*Burning Bomber Credit*/, 42129 /*Moira Thaurissan*/, 42131 /*Falstad Wildhammer*/, 42152 /*Arrest the Ambassador Credit*/, 42201 /*Bouncer Spike (Small)*/, 42204 /*The Indomitable*/, 42205 /*The Impervious*/, 42206 /*The Skyshredder*/, 42207 /*Heart of Orgrimmar*/, 42235 /*Darktail Bonepicker*/, 42241 /*Zeppelin Formation Bunny 01*/, 42245 /*Zeppelin Formation Bunny 02*/, 42246 /*Zeppelin Formation Bunny 03*/, 42247 /*Zeppelin Formation Bunny 04*/, 42254 /*Main Air Support Fleet*/, 42255 /*Air Support Formation Bunny*/, 42257 /*Air Support Fleet*/, 42258 /*Air Support Fleet*/, 42267 /*Garrosh Formation Bunny*/, 42268 /*Garrosh's Airship*/, 42277 /*Garrosh Hellscream*/, 42320 /*Twilight Sky Terror*/, 42367 /*Rockpool Gladiator*/, 42468 /*Felsen the Enduring*/, 42475 /*Fungal Behemoth*/, 42519 /*Twilight Sky Terror*/, 42522 /*Stone Drake*/, 42561 /*Twilight Sky Screamer*/, 42566 /*Twilight Sky Screamer*/, 42567 /*Twilight Sky Screamer*/, 42568 /*Twilight Sky Screamer*/, 42571 /*Battered Red Drake*/, 42576 /*Drake Rigging Bunny*/, 42577 /*Twilight Drake Swarmer*/, 42635 /*Ripsnarl*/, 42644 /*Smoot*/, 42766 /*Gorged Gyreworm*/, 42861 /*Deepholm Stalker Beam Target 06*/, 42899 /*Quartz Stonetender*/, 42928 /*Muradin Bronzebeard*/, 42944 /*Hose Anchor*/, 43025 /*Budd's Vehicle Bunny 02*/, 43176 /*Zin'jatar Raider*/, 43214 /*Slabhide*/, 43341 /*Blackrock Worg Captain*/, 43344 /*Berracite*/, 43356 /*Porecite the Silent*/, 43357 /*Stalactite Trigger - Trash, On Ground*/, 43358 /*Feldspar the Eternal*/, 43372 /*Fungalmancer Glop*/, 43438 /*Corborus*/, 43442 /*Ruberick*/, 43583 /*Goblin Barrage Balloon*/, 43586 /*Opal Stonethrower*/, 43601 /*Dragonmaw Fires*/, 43602 /*Small Dragonmaw Fires*/, 43612 /*High Prophet Barim*/, 43614 /*Lockmaw*/, 43662 /*Unbound Earth Rager*/, 7846 /*Teremus the Devourer*/, 43683 /*Goblin Barrage Balloon*/, 43752 /*Deepholm Stalker Beam Target 08*/, 43753 /*Deepholm Stalker Beam Target 10*/, 43755 /*Deepholm Stalker Beam Target 12*/, 43763 /*Deepholm Stalker Beam Target 15*/, 43765 /*Deepholm Stalker Beam Target 17*/, 43780 /*Deepholm Stalker Beam Target 19*/, 43785 /*Deepholm Stalker Beam Target 21*/, 43806 /*Terrath the Steady*/, 7977 /*Gammerita*/, 43873 /*Altairus*/, 43875 /*Asaad*/, 43878 /*Grand Vizier Ertan*/, 43943 /*Garrosh Hellscream*/, 43971 /*Stonescale Drake*/, 44003 /*Dragonmaw Smoke*/, 44148 /*Stonescale Matriarch*/, 44151 /*Bouldergut*/, 44154 /*ELM General Purpose Bunny (scale x0.01) Large - High Aggro & Level*/, 44173 /*Giant Mushroom*/, 44189 /*Twilight Pyremaw*/, 44257 /*Gyreworm*/, 44258 /*Colossal Gyreworm*/, 44259 /*Gorged Gyreworm*/, 8440 /*Shade of Hakkar*/, 44289 /*Abyssion*/, 44314 /*Faceless Portal Stalker*/, 44569 /*Sand Lasher*/, 44573 /*Dune Worm*/, 44598 /*Desert Bloom*/, 44732 /*Forsaken Trooper*/, 44733 /*Forsaken Trooper*/, 44766 /*Coffins*/, 44775 /*Generic Bunny - PRK (Large AOI)*/, 44819 /*Siamat*/, 44945 /*Pyrite Stonetender*/, 44950 /*Unyielding Behemoth (Hand Visual)*/, 9196 /*Highlord Omokk*/, 45033 /*Ma'haat the Indomitable*/, 9237 /*War Master Voone*/, 45188 /*Broken Tablet*/, 45253 /*Genn Greymane*/, 45342 /*Storm Locale*/, 45377 /*Augh*/, 9568 /*Overlord Wyrmthalak*/, 45467 /*Trogg Dweller*/, 45503 /*Vermillion Sentinel*/, 9816 /*Pyroguard Emberseer*/, 45749 /*Aura Generator Bunny*/, 45875 /*Scout's Journal*/, 10181 /*Lady Sylvanas Windrunner*/, 46053 /*Forsaken Trooper*/, 46087 /*Orsis Colossus Vehicle*/, 46195 /*Morning Star TARGET*/, 46196 /*Evening Star TARGET*/, 46197 /*Shooting Star TARGET*/, 46198 /*North Star TARGET*/, 10363 /*General Drakkisath*/, 10429 /*Warchief Rend Blackhand*/, 46911 /*Lava Surger*/, 46962 /*Baron Ashbury*/, 46963 /*Lord Walden*/, 46964 /*Lord Godfrey*/, 47032 /*Titanic Guardian*/, 47085 /*Grounding Field*/, 47122 /*Completion Bunny*/, 47285 /*Siamat*/, 47463 /*Searing Flamewraith*/, 47935 /*Fire Bunny*/, 47971 /*Area Trigger Bunny*/, 48166 /*Sea Cyclone*/, 48520 /*Crystalwing Stone Drake*/, 48629 /*Schnottz Infantryman*/, 48631 /*Schnottz Elite Infantryman*/, 48644 /*Confiscated Artillery*/, 48984 /*Troll Worker*/, 49131 /*Goblin Hot Rod*/, 49132 /*Goblin Trike*/, 49133 /*Goblin Epic Trike*/, 49251 /*Wild Gryphon*/, 49951 /*Repository Guardian*/, 50053 /*Thartuk the Exile*/, 50064 /*Cyrus the Black*/, 50088 /*Waters of Farseeing*/, 50325 /*Umbranse the Spiritspeaker*/, 50387 /*Baleflame*/, 50390 /*Velastrasza*/, 14661 /*Stinglasher*/, 50604 /*Wings*/, 15242 /*Bat Rider Guard*/, 15687 /*Moroes*/, 15688 /*Terestian Illhoof*/, 15689 /*Netherspite*/, 15690 /*Prince Malchezaar*/, 51711 /*Snow-Covered Burrow*/, 51760 /*Carrion Bird*/, 16151 /*Midnight*/, 52057 /*Lucky Bucket*/, 52219 /*Flame Terror*/, 16457 /*Maiden of Virtue*/, 52300 /*Seething Pyrelord*/, 16488 /*Arcane Anomaly*/, 16524 /*Shade of Aran*/, 52361 /*Toy Cart Bunny*/, 16598 /*Eye of Thrallmar*/, 52547 /*Ancient Hyjal Protector*/, 52594 /*Goldwing Hawk*/, 52595 /*Alpine Songbird*/, 52596 /*Forest Owl*/, 16887 /*Eye of Honor Hold*/, 52791 /*Charred Flamewaker*/, 52794 /*Brimstone Destroyer*/, 52795 /*Brimstone Hound*/, 52810 /*Toy Cart Bunny*/, 52816 /*Charred Invader*/, 17225 /*Nightbane*/, 53267 /*Andrazor*/, 53271 /*Fah Jarakk*/, 17521 /*The Big Bad Wolf*/, 17838 /*Time Rift*/, 17941 /*Mennu the Betrayer*/, 17942 /*Quagmirran*/, 17991 /*Rokmar the Crackler*/, 18100 /*Incineratus*/, 18101 /*Aborius*/, 18102 /*Kalandrios*/, 18238 /*Murkblood Invader*/, 18257 /*Gutripper*/, 18258 /*Bach'lor*/, 18352 /*Boulderfist Hunter*/, 18371 /*Shirrak the Dead Watcher*/, 18373 /*Exarch Maladaar*/, 18399 /*Murkblood Twin*/, 54242 /*Borean Beam Target*/, 18411 /*Durn the Hungerer*/, 54251 /*Fireball*/, 18497 /*Auchenai Monk*/, 54362 /*Scarred Acolyte*/, 54431 /*Echo of Baine*/, 54445 /*Echo of Jaina*/, 54496 /*Rock Island*/, 54543 /*Time-Twisted Drake*/, 18707 /*Torgos*/, 54552 /*Time-Twisted Breaker*/, 54553 /*Time-Twisted Seer*/, 18726 /*Flying Raging Soul*/, 18729 /*Infernal Rain (Hellfire)*/, 18757 /*Zangarmarsh PvP Beam (Red)*/, 18759 /*Zangarmarsh PvP Beam (Blue)*/, 18778 /*Cosmetic Raging Soul*/, 54639 /*Arcane Circle*/, 18945 /*Pit Commander*/, 19215 /*Infernal Relay (Hellfire)*/, 19291 /*Legion Transporter: Alpha*/, 19292 /*Legion Transporter: Beta*/, 19336 /*Void Spawner XL*/, 19358 /*Legion Transporter: Alpha (Alliance)*/, 19359 /*Legion Transporter: Beta (Alliance)*/, 55307 /*Balloon Cart Bunny*/, 19554 /*Dimensius the All-Devouring*/, 19565 /*Enormous Void Storm*/, 19568 /*Unending Voidwraith*/, 19872 /*Lady Catriona Von'Indi*/, 19874 /*Baron Rafe Dreuger*/, 19875 /*Baroness Dorothea Millstipe*/, 19876 /*Lord Robin Daris*/, 19918 /*Time Watcher*/, 19934 /*Zaladormu*/, 19950 /*Custodian of Time*/, 19951 /*Warden of Time*/, 20216 /*Grulloc*/, 20600 /*Maggoc*/, 21075 /*Infernal Target (Hyjal)*/, 21497 /*Blackscale*/, 22196 /*Wrath Reaver*/, 22268 /*Leokk*/, 22293 /*Inactive Fel Reaver*/, 22422 /*Blade's Edge - Legion - Anger Camp - Invis Bunny*/, 22517 /*World Trigger (Large AOI)*/, 23059 /*Legion Ring Event InvisMan*/, 23061 /*Rivendark*/, 23261 /*Furywing*/, 23281 /*Insidion*/, 23282 /*Obsidia*/, 23378 /*Simon Game Bunny Large*/, 23472 /*World Trigger (Large AOI, Not Immune PC/NPC)*/, 23500 /*Legion Ring Shield Zapper InvisMan*/, 23512 /*Crystalforge Bunny*/, 23557 /*Dragonflayer Raider*/, 23746 /*Zul'Aman Exterior InvisMan*/, 23803 /*Vengeance Landing Cannon Trigger*/, 23805 /*Vengeance Landing Cannon Controller*/, 23810 /*Blockade Explosion Bunny*/, 23867 /*Vengeance Landing Combatant Trigger*/, 23884 /*Vengeance Landing Crossbow Trigger*/, 23885 /*Lyana Trigger*/, 23915 /*Westguard Cannon Trigger*/, 23916 /*Westguard Cannon Trigger (Water)*/, 23917 /*Cannon Source Trigger*/, 23947 /*Westguard Ranged Trigger*/, 23953 /*Prince Keleseth*/, 23954 /*Ingvar the Plunderer*/, 23957 /*Westguard Cannon Credit Trigger East*/, 23968 /*Hanes Fire Trigger*/, 23972 /*Westguard Cannon Credit Trigger West*/, 24169 /*Dragonflayer Lieutenant*/, 24182 /*Winterskorn Dwelling Credit*/, 24183 /*Winterskorn Watchtower Credit*/, 24184 /*Winterskorn Barracks Credit*/, 24185 /*Winterskorn Bridge Credit*/, 24193 /*Baleheim Fire Bunny*/, 24194 /*Baleheim Fire Bunny Large*/, 24200 /*Skarvald the Constructor*/, 24201 /*Dalronn the Controller*/, 24222 /*Windy Cloud*/, 24289 /*Invisible Westguard Fire*/, 24290 /*New Agamand Plague Tank Bunny*/, 24371 /*Megalith*/, 24514 /*Steelfeather*/, 24515 /*Spotted Hippogryph Hatchling*/, 24518 /*Talonshrike*/, 24694 /*Vrykul Harpoon Gun (Wyrmskull)*/, 24701 /*Large Vrykul Harpoon Gun*/, 24707 /*Buoy*/, 24747 /*Fjord Hawk*/, 24770 /*Nexus Watcher*/, 24771 /*Coldarra Invisman*/, 24787 /*Fjord Hawk Matriarch*/, 24849 /*Proto-Drake Rider*/, 24862 /*Mage Hunter Target*/, 24879 /*Arctic Cloud*/, 25286 /*Warsong Wind Rider*/, 25289 /*Wind Master To'bor*/, 25356 /*Warmage Anzim*/, 25364 /*Red Guardian Drake*/, 25383 /*En'kilah Abomination*/, 25386 /*En'kilah Crypt Fiend*/, 25431 /*Kaskala Ancestor*/, 25451 /*Nerub'ar Sky Darkener*/, 25453 /*Ith'rix the Harvester*/, 25462 /*The Lich King*/, 25465 /*Kel'Thuzad*/, 25471 /*Temple A*/, 25472 /*Temple B*/, 25473 /*Temple C*/, 25490 /*East En'kilah Cauldron*/, 25492 /*Central En'kilah Cauldron*/, 25493 /*West En'kilah Cauldron*/, 25594 /*Beryl Point InvisMan*/, 25601 /*Prince Valanar*/, 25664 /*South Sinkhole*/, 25665 /*Northeast Sinkhole*/, 25666 /*Northwest Sinkhole*/, 25724 /*Ascended Mage Hunter*/, 25727 /*Warmage Moran*/, 25732 /*Warmage Preston*/, 25733 /*Warmage Austin*/, 25750 /*Oil-soaked Caribou*/, 25764 /*Kaskala Defender*/, 25765 /*Fizzcrank Bomber*/, 25791 /*Oil-stained Wolf*/, 25817 /*Oiled Fledgeling*/, 25845 /*Northwest Crash*/, 25846 /*South Crash*/, 25847 /*East Crash*/, 26041 /*Lightning Target*/, 26093 /*Naxxanar Target*/, 26094 /*Naxxanar Caster*/, 26127 /*Nexus Drake Hatchling*/, 26174 /*Carrion Condor*/, 26175 /*Coldarra - Drake Hunt Invisman*/, 26260 /*Kurun*/, 26264 /*Boulder Target*/, 26266 /*Heigarr the Horrible*/, 26276 /*Nexus Guardian*/, 26277 /*Bronze Shrine Warden*/, 26286 /*Emberwyrm*/, 26290 /*Jotun*/, 26298 /*ELM General Purpose Bunny (scale x0.01) Large*/, 26370 /*Arcanimus*/, 26406 /*The Anvil*/, 26417 /*Runed Giant*/, 26483 /*Dragonbone Condor*/, 26498 /*Drakuru's Bunny 01*/, 26529 /*Meathook*/, 26530 /*Salramm the Fleshcrafter*/, 26559 /*Drakuru's Bunny 02*/, 26572 /*Kor'kron War Rider*/, 26578 /*Mistress of the Coldwind*/, 26591 /*Pacer Bunny - Drak Theron Exterior*/, 26668 /*Svala Sorrowgrave*/, 26687 /*Gortok Palehoof*/, 26690 /*Ymirjar Warrior*/, 26691 /*Ymirjar Witch Doctor*/, 26692 /*Ymirjar Harpooner*/, 26693 /*Skadi the Ruthless*/, 26700 /*Drakuru's Bunny 03*/, 26712 /*Crystal Channel Target*/, 26716 /*Azure Warder*/, 26722 /*Azure Magus*/, 26723 /*Keristrasza*/, 26731 /*Grand Magus Telestra*/, 26736 /*Azure Skyrazor*/, 26763 /*Anomalus*/, 26789 /*Drakuru's Bunny 04*/, 26794 /*Ormorok the Tree-Shaper*/, 26796 /*Commander Stoutbeard*/, 26800 /*Alliance Berserker*/, 26802 /*Alliance Ranger*/, 26805 /*Alliance Cleric*/, 26836 /*Gigantaur*/, 26838 /*Dreadtalon*/, 26841 /*Reanimated Frost Wyrm*/, 26855 /*East Stone*/, 26856 /*North Stone*/, 26857 /*South Stone*/, 26861 /*King Ymiron*/, 26867 /*Mummy Effect Bunny*/, 26933 /*Wyrmrest Guardian*/, 27220 /*Forgotten Captain*/, 27244 /*Emerald Skytalon*/, 27285 /*Reconstructed Frost Wyrm*/, 27326 /*Outhouse Bunny - Grizzly*/, 27327 /*Ritual Target*/, 27413 /*Log Ride Bunny - Alliance*/, 27513 /*Covetous Geist*/, 27611 /*Plague Eruptor*/, 27631 /*Angrathar Aberration*/, 27654 /*Drakos the Interrogator*/, 27665 /*Kor'kron Pillager*/, 27671 /*Fordragon Armored Gryphon*/, 27673 /*Fordragon Stormtrooper*/, 27682 /*Azure Drake*/, 27693 /*Reconstructed Wyrm*/, 27773 /*Image of Patchwerk*/, 27776 /*Image of Anub'rekhan*/, 27789 /*Ysera*/, 27837 /*Nexus 70 - Buying Time Bunny*/, 27869 /*Wintergrasp Detection Unit*/, 27888 /*Warmage Archus*/, 27949 /*Alliance Commander*/, 27957 /*Angrathar Geist*/, 27969 /*Dark Rune Giant*/, 27978 /*Sjonnir The Ironshaper*/, 28015 /*Drakuru's Bunny 05*/, 28064 /*Drakkari Pedestal 01*/, 28068 /*Prophet of Sseratus*/, 28103 /*Urgreth of the Thousand Tombs*/, 28135 /*Westguard Gryphon*/, 28137 /*Leave No One Behind Bunny*/, 28157 /*Westguard Bombardier*/, 28181 /*Zul'Drak Gateway Trigger*/, 28207 /*Cerberon*/, 28208 /*Hailscorn*/, 28211 /*Glonn*/, 28212 /*Bythius the Flesh-Shaper*/, 28236 /*Azure Ring Captain*/, 28240 /*Finklestein's Cauldron Bunny*/, 28246 /*Sky Terror*/, 28255 /*Malas the Corrupter*/, 28274 /*Plague Sprayer*/, 28276 /*Greater Ley-Whelp*/, 28304 /*Drakkari Pedestal 02*/, 28305 /*Drakkari Pedestal 03*/, 28330 /*Ancient Dirt KC Bunny*/, 28351 /*Flame Breath Trigger (Skadi)*/, 28352 /*Nethurbian Crater KC Bunny*/, 28356 /*Prince Keleseth*/, 28357 /*Instructor Razuvious*/, 28409 /*Time Rift (CoT Stratholme)*/, 28416 /*Rhunok*/, 28439 /*Time Rift (CoT Stratholme, Large)*/, 28442 /*Prophet of Rhunok*/, 28444 /*Highlord Darion Mograine*/, 28445 /*Baron Rivendare*/, 28466 /*Fruit Tosser*/, 28478 /*Altar of Quetz'lun Gateway*/, 28492 /*Drak'Tharon - Drakuru Event Invisman 00*/, 28494 /*Kutube'sa*/, 28525 /*New Avalon Forge*/, 28529 /*Scarlet Crusader*/, 28530 /*Scarlet Commander*/, 28535 /*Wants Orange*/, 28536 /*Wants Papaya*/, 28537 /*Wants Banana*/, 28539 /*Steaming Valve*/, 28540 /*Wants Fire*/, 28542 /*Scarlet Hold*/, 28543 /*New Avalon Town Hall*/, 28544 /*Chapel of the Crimson Flame*/, 28548 /*High General Abbendis*/, 28558 /*High Abbot Landgren*/, 28559 /*Citizen of New Avalon*/, 28560 /*Citizen of New Avalon*/, 28565 /*Decaying Ghoul*/, 28577 /*Citizen of Havenshire*/, 28587 /*Volkhan*/, 28594 /*Scarlet Preacher*/, 28614 /*Scarlet Gryphon*/, 28616 /*Scarlet Gryphon Rider*/, 28617 /*Drakuramas Teleport Bunny 01*/, 28642 /*Scourge Sky Darkener*/, 28647 /*Orithos the Sky Darkener*/, 28658 /*Gothik the Harvester*/, 28660 /*Citizen of Havenshire*/, 28662 /*Citizen of Havenshire*/, 28684 /*Krik'thir the Gatewatcher*/, 28717 /*Overlord Drakuru*/, 28739 /*Blight Cauldron Bunny 00*/, 28751 /*Geist WP Bunny*/, 28761 /*Geist Spawn Bunny*/, 28765 /*The Lich King*/, 28778 /*Scourgewagon Bunny*/, 28789 /*Explosion Guy*/, 28793 /*Darmuk*/, 28823 /*Volkhan's Anvil*/, 28848 /*Prophet of Har'koa*/, 28856 /*Scarlet Fleet Guardian*/, 28874 /*Gargoyle Waypoint*/, 28890 /*Gothik the Harvester*/, 28907 /*Prince Valanar*/, 28909 /*Dark Rider of Acherus*/, 28911 /*Prince Keleseth*/, 28920 /*Stormforged Giant*/, 28921 /*Hadronox*/, 28922 /*Anub'ar Crusher*/, 28923 /*Loken*/, 28931 /*Blightblood Troll*/, 28932 /*Blight Effect Bunny*/, 29048 /*Ulduar Monitor*/, 29066 /*Titan Sentry*/, 29077 /*High General Abbendis*/, 29078 /*High Abbot Landgren*/, 29079 /*Shrine of the Tempest*/, 29080 /*Scarlet Champion*/, 29100 /*Totally Generic Bunny x8.0 (JSB)*/, 29103 /*Tirisfal Crusader*/, 29107 /*Prince Valanar*/, 29108 /*Prince Keleseth*/, 29109 /*Baron Rivendare*/, 29110 /*The Lich King*/, 29112 /*Gothik the Harvester*/, 29113 /*Noth the Plaguebringer*/, 29117 /*Anub'ar Champion*/, 29118 /*Anub'ar Crypt Fiend*/, 29119 /*Anub'ar Necromancer*/, 29120 /*Anub'arak*/, 29128 /*Anub'ar Prime Guard*/, 29144 /*Refurbished Steam Tank*/, 29175 /*Highlord Tirion Fordring*/, 29176 /*Korfax, Champion of the Light*/, 29177 /*Commander Eligor Dawnbringer*/, 29178 /*Lord Maxwell Tyrosus*/, 29179 /*Leonid Barthalomew the Revered*/, 29180 /*Duke Nicholas Zverenhoff*/, 29181 /*Rayne*/, 29182 /*Rimblat Earthshatter*/, 29183 /*The Lich King*/, 29190 /*Flesh Behemoth*/, 29199 /*Koltira Deathweaver*/, 29200 /*Thassarian*/, 29204 /*Orbaz Bloodbane*/, 29227 /*Highlord Alexandros Mograine*/, 29228 /*Darion Mograine*/, 29246 /*Highlord Darion Mograine*/, 29266 /*Xevozz*/, 29306 /*Gal'darah*/, 29310 /*Jedoga Shadowseeker*/, 29311 /*Herald Volazj*/, 29312 /*Lavanthor*/, 29313 /*Ichoron*/, 29314 /*Zuramat the Obliterator*/, 29316 /*Moragg*/, 29332 /*Gundrak Bat Rider*/, 29349 /*Anub'ar Darter*/, 29350 /*Torseg the Exiled*/, 29836 /*Drakkari Battle Rider*/, 29931 /*Drakkari Rhino*/, 29982 /*Drakkari Raider*/, 30188 /*Argent Champion*/, 30204 /*Forgotten Depths Ambusher*/, 30205 /*Forgotten Depths Acolyte*/, 30235 /*Glory*/, 30298 /*Invisible Stalker (Float, Uninteractible, LargeAOI)*/, 30333 /*Forgotten Depths Slayer*/, 30352 /*Skybreaker Marine*/, 30407 /*Captured Crusader*/, 30443 /*The Lich King*/, 30544 /*Forgotten Depths Underking*/, 30575 /*Frostbrood Destroyer*/, 30593 /*Forgotten Depths Slayer*/, 30595 /*Highlord Tirion Fordring*/, 30679 /*Teleportation Portal*/, 30752 /*Orgrim's Hammer Gunner*/, 30754 /*Orgrim's Hammer Crew*/, 30755 /*Kor'kron Reaver*/, 30837 /*Defense System*/, 30861 /*Unbound Ancient*/, 30866 /*Orgrim's Hammer Shadow-Warder*/, 30867 /*Skybreaker Shield-Mage*/, 30877 /*Water Revenant*/, 31011 /*Teleportation Portal (Intro)*/, 31088 /*Koltira Deathweaver*/, 31089 /*Thassarian*/, 31105 /*Ahn'kahet Brazier KC Bunny*/, 31229 /*Ancient Watcher*/, 31264 /*A Mysterious Voice*/, 31393 /*Crystal Wyrm*/, 31787 /*Citadel Watcher*/, 31887 /*Ebon Blade Marker*/, 32155 /*Destroyed War Machine*/, 32174 /*Teleportation Portal (Elite)*/, 32180 /*Tempus Wyrm*/, 32185 /*Infinite Eradicator*/, 32201 /*Orgrim's Hammer Scout*/, 32202 /*Desolation KC Bunny*/, 32273 /*Infinite Corruptor*/, 32299 /*Bone Sentinel*/, 32318 /*Summoning Stone Bunny*/, 32422 /*Grocklar*/, 32522 /*Cinder Cloud*/, 32534 /*Scalesworn Elite*/, 32544 /*Steam Cloud*/, 32596 /*Dalaran Visitor*/, 32597 /*Dalaran Visitor*/, 32598 /*Dalaran Visitor*/, 32600 /*Dalaran Visitor*/, 32601 /*Dalaran Visitor*/, 32602 /*Dalaran Visitor*/, 32662 /*Invisible Stalker (Floating, Uninteractible, Large, Sessile, Custom Phase 1)*/, 32725 /*Warmage Silva*/, 32768 /*Invisible Stalker (Floating, Uninteractible, Large, Sessile, Custom Phase 2)*/, 32845 /*Hodir*/, 32857 /*Stormcaller Brundir*/, 32865 /*Thorim*/, 32867 /*Steelbreaker*/, 32872 /*Runic Colossus*/, 32873 /*Ancient Rune Giant*/, 32882 /*Jormungar Behemoth*/, 32892 /*Thorim Event Bunny*/, 32927 /*Runemaster Molgeim*/, 32941 /*Tor Greycloud*/, 32946 /*Veesha Blazeweaver*/, 32948 /*Battle-Priest Eliza*/, 32950 /*Spiritwalker Yona*/, 33068 /*Darkmoon Faire - Cannon Target Bunny*/, 33118 /*Ignis the Furnace Master*/, 33121 /*Iron Construct*/, 33140 /*Thorim Golem Right Hand Bunny*/, 33141 /*Thorim Golem Left Hand Bunny*/, 33196 /*Sif*/, 33236 /*Steelforged Defender*/, 33267 /*Wounded Waypoint Bunny*/, 33271 /*General Vezax*/, 33280 /*Voice of Yogg-Saron*/, 33282 /*Razorscale Harpoon Fire State*/, 33283 /*Ashenvale Wrecker*/, 33303 /*Maiden of Winter's Breath Lake*/, 33336 /*Gorat's Target Bunny*/, 33337 /*XT-Toy Pile*/, 33350 /*Mimiron*/, 33354 /*Corrupted Servitor*/, 33355 /*Misguided Nymph*/, 33356 /*Orux Thrice-Damned*/, 33378 /*Thunder Orb*/, 33410 /*Freya*/, 33411 /*Hodir*/, 33413 /*Thorim*/, 33430 /*Guardian Lasher*/, 33431 /*Forest Swarmer*/, 33432 /*Leviathan Mk II*/, 33443 /*Keeper Heartwise*/, 33444 /*Harbinger Aphotic*/, 33446 /*Peon Lumber Bunny*/, 33500 /*Vezax Bunny*/, 33515 /*Auriaya*/, 33525 /*Mangrove Ent*/, 33526 /*Ironroot Lasher*/, 33527 /*Nature's Blade*/, 33528 /*Guardian of Life*/, 33571 /*Ulduar Gauntlet Generator*/, 33666 /*Demolisher Engineer Blastwrench*/, 33670 /*Aerial Command Unit*/, 33688 /*Raging Ancient*/, 33699 /*Storm Tempered Keeper*/, 33716 /*Ruby Consort*/, 33722 /*Storm Tempered Keeper*/, 33726 /*Splintertree Demolisher*/, 33736 /*Fel Fire Bunny*/, 33754 /*Dark Rune Thunderer*/, 33755 /*Dark Rune Ravager*/, 33772 /*Faceless Horror*/, 33778 /*Tournament Hippogryph*/, 33779 /*Ulduar Shield Bunny*/, 33818 /*Twilight Adherent*/, 33819 /*Twilight Frost Mage*/, 33820 /*Twilight Pyromancer*/, 33822 /*Twilight Guardian*/, 33823 /*Twilight Slayer*/, 33824 /*Twilight Shadowblade*/, 33847 /*Forest Heart Bunny (Horde)*/, 33859 /*Smoldering Brazier Bunny*/, 34014 /*Sanctum Sentry*/, 34069 /*Molten Colossus*/, 34099 /*Worm Hole*/, 34138 /*Ashenvale Oak Bunny*/, 34159 /*Ulduar Gauntlet Generator (small radius)*/, 34160 /*Watch Wind Rider*/, 34163 /*Hellscream's Hellion*/, 34190 /*Hardened Iron Golem*/, 34196 /*Rune Etched Sentry*/, 34197 /*Chamber Overseer*/, 34198 /*Iron Mender*/, 34199 /*Lightning Charged Iron Dwarf*/, 34212 /*Ashenvale Assassin Bunny 00*/, 34234 /*Runeforged Sentry*/, 34280 /*Barrens Burning Barn Fire Bunny*/, 34286 /*Orbital Support*/, 34431 /*Balgor Whipshank*/, 34597 /*Flooz Target Bunny*/, 34640 /*Barrens Vulture*/, 34702 /*Ambrose Boltspark*/, 34703 /*Lana Stouthammer*/, 34705 /*Marshal Jacob Alerius*/, 34890 /*Izzy*/, 34924 /*High Commander Halford Wyrmbane*/, 34928 /*Argent Confessor Paletress*/, 34954 /*Gobber*/, 34990 /*King Varian Wrynn*/, 34992 /*Lady Jaina Proudmoore*/, 34994 /*Thrall*/, 34995 /*Garrosh Hellscream*/, 34996 /*Highlord Tirion Fordring*/, 35119 /*Eadric the Pure*/, 35162 /*Azshara Sapling*/, 35451 /*The Black Knight*/, 35759 /*Balboa*/);
+UPDATE `creature_template` SET `unit_flags`=32832, `VehicleId`=506 WHERE `entry`=36156; -- Mutant Goblin
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry` IN (331 /*Maginor Dumas*/, 38037 /*Nortet*/, 3362 /*Ogunaro Wolfrunner*/, 39442 /*Condenna the Pitiless*/, 6251 /*Strahad Farsan*/, 42497 /*Mama Celeste*/, 8738 /*Vazario Linkgrease*/, 9087 /*Bashana Runetotem*/, 10618 /*Rivern Frostwind*/, 12919 /*Nat Pagle*/, 14450 /*Orphan Matron Nightingale*/, 14637 /*Zorbin Fandazzle*/, 14847 /*Professor Thaddeus Paleo*/, 16388 /*Koren*/, 17015 /*Taleris Dawngazer*/, 18530 /*Voren'thal the Seer*/, 20130 /*Andormu*/, 21283 /*Megzeg Nukklebust*/, 22823 /*Hch'uu*/, 23316 /*Torkus*/, 23895 /*Bombardier Petrov*/, 24040 /*McGoyver*/, 24468 /*Pol Amberstill*/, 26218 /*Elder Muahit*/, 26666 /*Scout Vor'takh*/, 27489 /*Ray'ma*/, 28042 /*Captain Brandon*/, 28044 /*Captain Rupert*/, 28099 /*Corporal Maga*/, 28283 /*Sergeant Moonshard*/, 28284 /*Specialist Cogwheel*/, 30944 /*Vereth the Cunning*/);
+UPDATE `creature_template` SET `unit_flags2`=1073743872 WHERE `entry` IN (36171 /*World Trigger (Infinite AOI)*/, 36494 /*Forgemaster Garfrost*/, 36913 /*Eye of the Lich King*/, 37755 /*Sindragosa*/, 42979 /*Kurzel*/, 42980 /*Tanzar*/, 42981 /*Bootstrap Blingbuckle*/, 42982 /*Turgore*/, 43175 /*Gerok*/, 44140 /*PetWait Trigger*/, 44842 /*Uldum Watcher [PH]*/, 45316 /*Uldum Watcher [PHASE Q01]*/, 45504 /*Slipstream Landing Zone*/, 46361 /*Uldum Sphere*/, 46644 /*Peregrine Statue*/, 46646 /*Obsidian Colossus*/, 46931 /*Star Fire Bunny*/, 47305 /*Air Current*/, 48606 /*Chamber of the Moon - Beam Effect Bunny*/, 48983 /*Geyser*/, 49526 /*Corla Quest Bang*/, 49529 /*Karsh Quest Bang*/, 49530 /*Beauty Quest Bang*/, 49531 /*Obsidius Quest Bang*/, 51060 /*Farseer Nobundo*/, 51065 /*Muln Earthfury*/, 51435 /*Alliance Gunship*/, 51436 /*Horde Gunship*/, 54432 /*Murozond*/, 18733 /*Fel Reaver*/, 24812 /*Storm Giant*/, 28243 /*Thrym*/, 30342 /*Orgrim's Hammer*/, 30343 /*The Skybreaker*/, 33108 /*Hodir's Fury Targetting Reticle*/, 33212 /*Hodir's Fury*/, 33259 /*Expedition Trapper*/, 33287 /*Expedition Engineer*/, 33293 /*XT-002 Deconstructor*/, 33377 /*Mortar Targetting Device*/, 33816 /*Expedition Defender*/, 34144 /*Expedition Mercenary*/, 34145 /*Expedition Engineer*/, 34295 /*Lord Magmathar*/);
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry` IN (36286 /*Generic Trigger LAB - Multiphase (Gigantic AOI)*/, 832 /*Unbound Cyclone*/, 37543 /*[DND] Shaker*/, 37574 /*[DND] Shaker - Small*/, 37804 /*Kaja'Cola Balloon*/, 38346 /*Devilsaur Queen*/, 38821 /*Dave's Industrial Light and Magic Bunny (Medium)(Sessile)*/, 39800 /*Flame Warden*/, 39801 /*Earth Warden*/, 39802 /*Water Warden*/, 39803 /*Air Warden*/, 39859 /*Dave's Industrial Light and Magic Bunny (Large)(Sessile)*/, 39867 /*Deathwing*/, 39919 /*Generic Trigger LAB - Multiphase (Gigantic AOI Not Sessile)*/, 40340 /*Nemesis*/, 40999 /*Tortolla*/, 42314 /*Air Defense Cannon*/, 42389 /*Tortolla's Chain Bunny*/, 42471 /*Boden the Imposing*/, 43094 /*Canyon Ettin*/, 43244 /*Rocketway Event Bunny (CSA)*/, 43370 /*Red Mist*/, 43718 /*Generic Trigger LAB (Gigantic AOI)*/, 44058 /*Horton Hornblower*/, 44403 /*Generic Controller Bunny, Gigantic (CSA)*/, 44731 /*Horde Hauler*/, 44737 /*Subdued Forest Ettin*/, 44764 /*Horde Coffin Hauler*/, 44835 /*Haethen Kaul*/, 44885 /*Bound Air Elemental*/, 44886 /*Bound Water Elemental*/, 44887 /*Bound Fire Elemental*/, 44888 /*Water Ward Kill Credit*/, 44889 /*Fire Ward Kill Credit*/, 44890 /*Air Ward Kill Credit*/, 44891 /*ELM General Purpose Bunny Gigantic (scale x4)*/, 45799 /*Prince Nadun*/, 46041 /*Colossus of the Sun*/, 46042 /*Colossus of the Moon*/, 46136 /*Vizier Tanotep*/, 46401 /*Mar'at Villager*/, 46402 /*Ramkahen Citizen*/, 46560 /*Subdued Forest Ettin*/, 46875 /*Budd*/, 46877 /*Tanzar*/, 46878 /*Mack*/, 46879 /*Harkor*/, 46880 /*Samir*/, 47201 /*Desert Fox*/, 47222 /*Schnottz Supplies*/, 47452 /*Schnottz's Siege Tank*/, 47455 /*Siege Tank Gun*/, 47484 /*Yetimus the Yeti Lord*/, 47594 /*Advisor Kathem*/, 47625 /*Samir*/, 47643 /*Tanzar*/, 47656 /*Budd*/, 47684 /*King Phaoris*/, 47732 /*Schnottz's Siege Tank*/, 47766 /*Bound Vortex*/, 47772 /*Siege Tank Gun*/, 47792 /*Blacksmith Verringtan*/, 47793 /*The Ray-Getz-Kalaba Monstrosity*/, 48012 /*Sergeant Mehat*/, 48028 /*Adarrah*/, 48168 /*Salhet's Lion*/, 48501 /*Sun Prophet Tumet*/, 48548 /*Immortal Colossus*/, 48858 /*Ishaq*/, 49111 /*Siege Tank*/, 49197 /*Coffer Shield*/, 50055 /*Firesworn*/, 50056 /*Garr*/, 50057 /*Blazewing*/, 50416 /*Halls of Origination Beam Bunny*/, 50470 /*Caravan Harness*/, 50939 /*Domesticated Kodo*/, 51276 /*Ozumat*/, 51346 /*Orgrimmar Wind Rider*/, 52176 /*Spirit of Malorne*/, 24019 /*Glacion*/, 24538 /*Dragonflayer Installation I*/, 24646 /*Dragonflayer Installation II*/, 24647 /*Dragonflayer Installation III*/, 27447 /*Varos Cloudstrider*/, 27655 /*Mage-Lord Urom*/, 27656 /*Ley-Guardian Eregos*/, 27992 /*Vrykul Harpoon Gun*/, 27993 /*Vrykul Harpoon Gun*/, 28586 /*General Bjarngrim*/, 29240 /*Stormforged Lieutenant*/, 30181 /*Jedoga Controller*/, 30288 /*Ahn'kahar Channeler*/, 30476 /*[DND] Icecrown Flight To Airship Bunny (A)*/, 30559 /*[DND] Icecrown Flight To Airship Bunny (A) Teleport Target*/, 30588 /*[DND] Icecrown Flight To Airship Bunny (H)*/, 30589 /*[DND] Icecrown Flight To Airship Bunny (H) Teleport Target*/, 31047 /*ELM General Purpose Bunny Gigantic*/, 31243 /*Warsong Cannon*/, 31400 /*Azure Front Channel Stalker*/, 32264 /*Aldur'thar Channel Bunny*/, 32400 /*Tukemuth*/, 32906 /*Freya*/, 32913 /*Elder Ironbranch*/, 32914 /*Elder Stonebark*/, 32915 /*Elder Brightleaf*/, 33060 /*Salvaged Siege Engine*/, 33067 /*Salvaged Siege Turret*/, 33189 /*Liquid Pyrite*/, 33216 /*Mechagnome Pilot*/, 33218 /*Pyrite Safety Container*/, 33237 /*Ulduar Colossus*/, 34085 /*Forge Construct*/, 34086 /*Magma Rager*/, 34164 /*Mechagnome Battletank*/, 35335 /*Alliance Boat*/, 35339 /*Boat Fire*/, 35377 /*Door Fire*/);
+UPDATE `creature_template` SET `npcflag`=19 WHERE `entry` IN (514 /*Smith Argus*/, 1317 /*Lucan Cordell*/, 3007 /*Una*/, 3009 /*Bena Winterhoof*/, 3345 /*Godan*/, 3347 /*Yelmak*/, 3355 /*Saru Steelfury*/, 3484 /*Kil'hala*/, 4611 /*Doctor Herbert Halsey*/, 5499 /*Lilyssia Nightbreeze*/, 5511 /*Therum Deepforge*/, 5566 /*Tannysa*/, 52657 /*Nahari Cloudchaser*/, 19052 /*Lorokeem*/, 21209 /*Dumphry*/, 26914 /*Benjamin Clegg*/, 26915 /*Ounhulo*/, 26960 /*Carter Tiffens*/, 26969 /*Raenah*/, 26982 /*Geba'li*/, 28699 /*Charles Worth*/, 28703 /*Linzy Blackbolt*/);
+UPDATE `creature_template` SET `speed_run`=0.8571429, `unit_flags2`=4196352 WHERE `entry` IN (36355 /*Siege Turret*/, 36356 /*Flame Turret*/);
+UPDATE `creature_template` SET `npcflag`=4194433 WHERE `entry` IN (543 /*Nalesette Wildbringer*/, 43630 /*Drek*/, 43634 /*Vorcha*/, 43770 /*Tathan Thunderstone*/, 43773 /*Stella Boomboom*/, 43988 /*Carthok*/, 44007 /*Shep Goldtend*/, 44346 /*Brandon Merriweather*/, 44347 /*Werner Eastbrook*/, 44378 /*Ajaye*/, 44382 /*Veir*/, 44384 /*Sora*/, 45297 /*Beast-Handler Rustclamp*/, 9986 /*Shyrka Wolfrunner*/, 10053 /*Anya Maulray*/, 47761 /*Hank Ford*/, 50069 /*Oltarin Graycloud*/, 15131 /*Qeeju*/, 16094 /*Durik*/, 16586 /*Huntsman Torf Angerhoof*/, 18984 /*Trag*/, 19018 /*Wilda Bearmane*/, 24974 /*Liza Cutlerflix*/);
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry` IN (721 /*Rabbit*/, 2620 /*Prairie Dog*/, 26282 /*Earthen Warrior*/, 32322 /*Gold Warrior*/, 34948 /*Isle of Conquest Emissary*/, 34949 /*Isle of Conquest Envoy*/, 34950 /*Isle of Conquest Emissary*/, 34951 /*Isle of Conquest Envoy*/, 34960 /*Alliance Gunship Captain*/);
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (727 /*Ironforge Mountaineer*/, 36618 /*Ungarl*/, 5501 /*Kaerbrus*/, 41402 /*Abandoned Bloodwash Crate*/, 42946 /*Kor'kron Deathbringer*/, 43389 /*Gorthul*/, 44000 /*Gilnean Emissary*/, 44004 /*Gilnean Envoy*/, 44013 /*Dragonmaw Envoy*/, 9460 /*Gadgetzan Bruiser*/, 12807 /*Greshka*/, 48922 /*Instructor Rufus*/, 48923 /*Drill Sergeant Magnus*/, 48924 /*Captain Crudbeard*/, 13180 /*Wing Commander Jeztor*/, 13181 /*Wing Commander Mulverick*/, 13437 /*Wing Commander Ichman*/, 13438 /*Wing Commander Slidore*/, 13439 /*Wing Commander Vipore*/, 50016 /*Pathstalker Arpalir*/, 14395 /*Griniblix the Spectator*/, 50550 /*Envoy Droln*/, 53842 /*Mardant Strongoak*/, 18480 /*Broken Corpse*/, 55125 /*Elder Daftusk*/, 20812 /*Corki*/, 21809 /*Wyrmcult Poacher*/, 24834 /*Galley Chief Grace*/, 24843 /*Engineer Combs*/, 29529 /*Ninsianna*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (36648 /*Baine Bloodhoof*/, 37596 /*Lady Sylvanas Windrunner*/, 38502 /*Nablya*/, 39605 /*Garrosh Hellscream*/, 3936 /*Shandris Feathermoon*/, 40036 /*Karonas*/, 40578 /*Farden Talonshrike*/, 42465 /*Therazane*/, 42466 /*Terrath the Steady*/, 42467 /*Diamant the Patient*/, 42472 /*Gorsik the Tumultuous*/, 43804 /*Gorsik the Tumultuous*/, 43805 /*Felsen the Enduring*/, 44973 /*Ruberick*/, 10162 /*Lord Victor Nefarius*/, 52207 /*Nagala Whipshank*/, 52212 /*Mor'shan Caravan Kodo*/, 17310 /*Gnarl*/, 17603 /*Grandmother*/, 18099 /*Gordawg*/, 18351 /*Lump*/, 21690 /*R-3D0*/, 21984 /*Rexxar*/, 24795 /*Surristrasz*/, 26420 /*Gavrock*/, 26917 /*Alexstrasza the Life-Binder*/, 27255 /*Nishera the Garden Keeper*/, 27292 /*Flamebringer*/, 27629 /*Wyrmrest Defender*/, 27801 /*Avatar of Freya*/, 27843 /*"Wyrmbait"*/, 28160 /*Archmage Pentarus*/, 28377 /*Prince Valanar*/, 28401 /*Har'koa*/, 28561 /*Spirit of Rhunok*/, 28653 /*Salanar the Horseman*/, 28908 /*Salanar the Horseman*/, 28910 /*Baron Rivendare*/, 28919 /*Noth the Plaguebringer*/, 29173 /*Highlord Darion Mograine*/, 29611 /*King Varian Wrynn*/, 29647 /*Gymer*/, 32548 /*Corastrasza*/, 33213 /*Hodir*/, 33241 /*Freya*/, 33242 /*Thorim*/, 33244 /*Mimiron*/, 33579 /*Brann Bronzebeard*/, 34119 /*Brann Bronzebeard*/, 34608 /*Big Baobob*/);
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` IN (869 /*Protector Dorana*/, 37208 /*Thunderhead*/, 2225 /*Zora Guthrek*/, 3343 /*Grelkor*/, 3625 /*Rarck*/, 4255 /*Brogus Thunderbrew*/, 4257 /*Lana Thunderbrew*/, 41478 /*Snow Tracker Wolf*/, 5853 /*Tempered War Golem*/, 42525 /*Jaspertip Ravager*/, 23487 /*Wild Wolpertinger*/, 23627 /*Becan Barleybrew*/, 23628 /*Daran Thunderbrew*/, 23683 /*Maeve Barleybrew*/, 23684 /*Ita Thunderbrew*/, 23685 /*Gordok Brew Barker*/, 23696 /*Gordok Brew Chief*/, 24418 /*Steel Gate Flying Machine*/, 24484 /*Brewfest Reveler*/, 26425 /*Drakkari Warrior*/, 26865 /*Tecahuna*/, 27047 /*Invisible Stalker (Floating Only)*/, 27677 /*Fordragon High Priest*/, 27727 /*Conqueror Krenna*/, 28093 /*Sholazar Tickbird*/, 28732 /*Anub'ar Warrior*/, 28733 /*Anub'ar Shadowcaster*/, 28734 /*Anub'ar Skirmisher*/, 29152 /*Stormwind Dock Worker*/, 29335 /*Anub'ar Webspinner*/, 32874 /*Iron Ring Guard*/);
+UPDATE `creature_template` SET `unit_class`=2 WHERE `entry` IN (928 /*Lord Grayson Shadowbreaker*/, 5491 /*Arthur the Faithful*/, 5492 /*Katherine the Pure*/);
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry` IN (36822 /*Lord Kassarus*/, 39040 /*Alliance Field Defender*/, 40051 /*General Skessesh*/, 40619 /*Commander Jarod Shadowsong*/, 40891 /*Dranosh'ar Laborer*/, 40892 /*Dranosh'ar Overseer*/, 43090 /*Hellscream's Vanguard*/, 43939 /*Zaela*/, 44911 /*Dreadguard*/, 47676 /*Baradin Fox*/, 50529 /*Jonny Throop*/, 50530 /*Ryan Sly*/, 50531 /*Jake Patton*/, 50532 /*Brian Horn*/, 50533 /*Judah Mehler*/, 50534 /*Mary Ann Skweres*/, 50535 /*Larissa Bussell*/, 50536 /*Matias Volkert*/, 50537 /*Lucas Merino*/, 50538 /*Casey Fulton*/, 50539 /*Brandan Vanderpool*/, 50541 /*Som Vanderpool*/, 50542 /*Rocky*/, 50543 /*Sandy*/, 50544 /*Rose*/, 51513 /*Irontree Bruiser*/, 51787 /*Den Grunt*/, 51794 /*Taunka'le Brave*/, 51799 /*Thrallmar Grunt*/, 51804 /*Swamprat Guard*/, 51880 /*Zabra'jin Guard*/, 51890 /*Warsong Battleguard*/, 51983 /*Deadwind Widow*/, 52838 /*Arch Druid Hamuul Runetotem*/, 18124 /*Withered Giant*/, 18558 /*Phasing Sorcerer*/, 18944 /*Fel Soldier*/, 19762 /*Coilskar Defender*/, 20324 /*Parched Hydra*/, 25479 /*Kvaldir Mistweaver*/, 25496 /*Kvaldir Mist Lord*/, 26447 /*Drakkari Shaman*/, 28028 /*Argent Shieldman*/, 28083 /*Serfex the Reaver*/, 28221 /*Trapdoor Crawler*/, 28936 /*Scarlet Commander*/, 30894 /*Lithe Stalker*/, 30920 /*Lumbering Atrocity*/, 30921 /*Skeletal Runesmith*/, 30922 /*Umbral Brute*/, 30957 /*Death Knight Initiate*/, 30958 /*Death Knight Initiate*/, 31042 /*Death Knight Adept*/, 34790 /*Southsea Mutineer*/);
+UPDATE `creature_template` SET `unit_flags`=67108928 WHERE `entry` IN (1063 /*Jade*/, 10357 /*Ressan the Needler*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags2`=2049 WHERE `entry`=36987; -- Sergeant Dynamo
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (36990 /*Lady Sylvanas Windrunner*/, 37223 /*Lady Sylvanas Windrunner*/, 40825 /*Erunak Stonespeaker*/, 24027 /*Sergeant Gorth*/, 26499 /*Arthas*/);
+UPDATE `creature_template` SET `npcflag`=16 WHERE `entry` IN (37072 /*Rogg*/, 3175 /*Krunn*/, 3184 /*Miao'zan*/, 3185 /*Mishiki*/, 4898 /*Brant Jasperbloom*/, 6290 /*Yonn Deepcut*/, 6306 /*Helene Peltskinner*/, 7087 /*Killian Hagey*/, 7088 /*Thuwd*/, 7089 /*Mooranta*/, 7230 /*Shayis Steelfury*/, 7231 /*Kelgruk Bloodaxe*/, 8144 /*Kulleg Stonehorn*/, 44782 /*Rento*/, 9584 /*Jalane Ayrole*/, 45548 /*Kark Helmbreaker*/, 46716 /*Nerog*/, 12025 /*Malvor*/, 52170 /*Gizzik Oregrab*/, 53437 /*Humbert Tanwell*/, 19251 /*Enchantress Volali*/, 20124 /*Kradu Grimblade*/, 20125 /*Zula Slagfury*/, 21087 /*Grikka*/, 25277 /*Chief Engineer Leveny*/, 26903 /*Lanolis Dewdrop*/, 26904 /*Rosina Rivet*/, 26906 /*Elizabeth Jackson*/, 26910 /*Fayin Whisperleaf*/, 26911 /*Bernadette Dexter*/, 26913 /*Frederic Burrhus*/, 26951 /*Wilhelmina Renel*/, 26952 /*Kristen Smythe*/, 26954 /*Emil Autumn*/, 26958 /*Marjory Kains*/, 26961 /*Gunter Hansen*/, 26963 /*Roberta Jacks*/, 26974 /*Tansy Wildmane*/, 26975 /*Arthur Henslowe*/, 26976 /*Brunna Ironaxe*/, 26980 /*Eorain Dawnstrike*/, 26981 /*Crog Steelspine*/, 26986 /*Tiponi Stormwhisper*/, 26996 /*Awan Iceborn*/, 27023 /*Apothecary Bressa*/, 27029 /*Apothecary Wormwick*/, 27034 /*Josric Fame*/, 28693 /*Enchanter Nalthanis*/, 28694 /*Alard Schmied*/, 28696 /*Derik Marks*/, 28697 /*Timofey Oshenko*/, 28698 /*Jedidiah Handers*/, 28700 /*Diane Cannings*/, 28702 /*Professor Pallin*/, 29506 /*Orland Schaeffer*/, 29507 /*Manfred Staller*/, 29508 /*Andellion*/, 29514 /*Findle Whistlesteam*/, 30706 /*Jo'mah*/, 30711 /*Margaux Parchley*/, 30713 /*Catarina Stanford*/, 30722 /*Neferatti*/, 33608 /*Alchemy*/, 33609 /*Blacksmithing*/, 33610 /*Enchanting*/, 33611 /*Engineering*/, 33612 /*Leatherworking*/, 33613 /*Tailoring*/, 33614 /*Jewelcrafting*/, 33615 /*Inscription*/, 33616 /*Herbalism*/, 33617 /*Mining*/, 33618 /*Skinning*/);
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (1241 /*Tognus Flintfire*/, 1385 /*Brawn*/, 1386 /*Rogvar*/, 1632 /*Adele Fielder*/, 3523 /*Bowen Brisboise*/, 4588 /*Arthur Moore*/, 4596 /*James Van Brunt*/, 4614 /*Martha Alliestar*/, 4616 /*Lavinia Crowe*/, 46675 /*Lugrah*/, 11098 /*Hahrana Ironhide*/, 52587 /*Neller Fayne*/, 18747 /*Krugosh*/);
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry` IN (37082 /*Dusthoof Giraffe*/, 31008 /*Azure Invader*/);
+UPDATE `creature_template` SET `unit_flags`=570687488, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=37088; -- Elder Zhevra
+UPDATE `creature_template` SET `unit_flags`=512 WHERE `entry` IN (1268 /*Ozzie Togglevolt*/, 40955 /*Goldrinn*/, 23008 /*Ethereum Jailor*/, 25284 /*Nerub'ar Victim*/, 33436 /*Garona*/);
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (1292 /*Maris Granger*/, 1346 /*Georgio Bolero*/, 2998 /*Karn Stonehoof*/, 3004 /*Tepa*/, 3011 /*Teg Dawnstrider*/, 3013 /*Komin Winterhoof*/, 3069 /*Chaw Stronghide*/, 3174 /*Dwukk*/, 3363 /*Magar*/, 3365 /*Karolek*/, 3404 /*Jandi*/, 3478 /*Traugh*/, 3704 /*Mahani*/, 4900 /*Alchemist Narett*/, 5564 /*Simon Tanner*/, 7948 /*Kylanna Windwhisper*/, 8146 /*Ruw*/, 44582 /*Theresa Denman*/, 44781 /*Opuno Ironhorn*/, 44783 /*Hiwahi Three-Feathers*/, 45559 /*Nivi Weavewell*/, 46357 /*Gonto*/, 46741 /*Muraga*/, 11025 /*Mukdrak*/, 18748 /*Ruak Stronghorn*/, 18755 /*Moorutu*/, 18776 /*Rorelien*/, 18779 /*Hurnak Grimmord*/, 19252 /*High Enchanter Bardolan*/);
+UPDATE `creature_template` SET `speed_run`=2.285714 WHERE `entry`=37216; -- Honor's Stand Officer
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry` IN (1750 /*Grand Admiral Jes-Tereth*/, 7957 /*Jer'kai Moonweaver*/, 50367 /*Friz Groundspin*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=1841; -- Scarlet Executioner
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (37968 /*Argent Hippogryph*/, 38161 /*Lady Sylvanas Windrunner*/, 38189 /*Lady Sylvanas Windrunner*/, 42333 /*High Priestess Azil*/, 42940 /*Northshire Vineyards Fire Trigger*/, 44372 /*Avalanchion*/, 46861 /*Nyxondra*/, 50044 /*Hell-Hoot*/, 15608 /*Medivh*/, 17076 /*Lady Liadrin*/, 25762 /*Vrykul Landing Ship*/, 26926 /*Duke Vallenhal*/, 29838 /*Drakkari Rhino*/, 30500 /*Argent Skytalon*/);
+UPDATE `creature_template` SET `unit_flags2`=0 WHERE `entry`=38038; -- Tiki Target
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (38141 /*Docile Island Boar*/, 41158 /*Nethergarde Defender*/, 46441 /*Neferset Overlord*/, 26159 /*Taunka'le Evacuee*/);
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (38225 /*Vol'jin*/, 2485 /*Larimaine Purdue*/, 38442 /*Morakki*/, 39062 /*Darkspear Jailor*/, 5957 /*Birgitte Cranston*/, 7232 /*Borgus Steelhand*/, 43576 /*Gorthul*/, 7775 /*Gregan Brewspewer*/, 8142 /*Jannos Lighthoof*/, 45139 /*Zirazi the Star-Gazer*/, 47253 /*Rundok*/, 47384 /*Lien Farner*/, 48510 /*Kall Worthaton*/, 14871 /*Morja*/, 16543 /*Garon Hutchins*/, 18482 /*Empoor*/, 18927 /*Human Commoner*/, 19175 /*Orc Commoner*/, 19180 /*Seymour*/, 19187 /*Darmari*/, 19576 /*Xyrol*/, 19679 /*"Slim"*/, 21493 /*Kablamm Farflinger*/, 23052 /*Bloodmaul Supplicant*/, 23053 /*Bladespire Supplicant*/, 23373 /*Mortog Steamhead*/, 23483 /*Arcanist Xorith*/, 23484 /*Haldor the Compulsive*/, 23862 /*Finlay Fletcher*/, 24137 /*Dark Ranger Marrah*/, 26547 /*Basil Crowe*/, 27291 /*Initiate Mehrtens*/, 27705 /*Lorrin Foxfire*/, 27818 /*Brew Vendor*/, 27819 /*Brew Vendor*/, 28217 /*Injured Rainspeaker Oracle*/, 29145 /*Pulik Swiftsnip*/, 29244 /*Jesse Masters*/, 31273 /*Dying Berserker*/, 31304 /*Dying Soldier*/, 35222 /*Trade Prince Gallywix*/);
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry` IN (38263 /*Ithis Moonwarden*/, 38269 /*Zen'Aliri*/, 38275 /*Gremix*/, 38276 /*Tara*/, 3233 /*Lorekeeper Raintotem*/, 3293 /*Rezlak*/, 3454 /*Cannoneer Smythe*/, 39723 /*Tambre*/, 4984 /*Argos Nightwhisper*/, 23888 /*Mage-Lieutenant Malister*/, 24038 /*Father Levariol*/, 26073 /*High Priest Talet-Kha*/, 27478 /*Larkin Thunderbrew*/);
+UPDATE `creature_template` SET `npcflag`=49 WHERE `entry`=2489; -- Milstaff Stormeye
+UPDATE `creature_template` SET `npcflag`=65537 WHERE `entry`=38488; -- Innkeeper Dreedle
+UPDATE `creature_template` SET `npcflag`=4224 WHERE `entry` IN (38561 /*Dramm Riverhorn*/, 8159 /*Worb Strongstitch*/, 9548 /*Cawind Trueaim*/, 10293 /*Dulciea Frostmoon*/, 19561 /*Hagash the Blind*/, 19694 /*Loolruna*/, 27055 /*Sentinel Amberline*/, 28040 /*Mardan Thunderhoof*/, 29014 /*Grakjek*/);
+UPDATE `creature_template` SET `npcflag`=640 WHERE `entry` IN (2803 /*Malygen*/, 7941 /*Mardrack Greenwell*/, 7942 /*Faralorn*/, 7943 /*Harklane*/, 8143 /*Loorana*/, 19197 /*Eral*/, 19243 /*Nalama the Merchant*/, 19245 /*Vinemaster Alamaro*/, 19534 /*Dealer Digriz*/, 19560 /*Lukra*/, 19572 /*Gant*/, 20249 /*Cymbre Starsong*/, 20892 /*Ruogo*/, 20893 /*Morula*/, 21082 /*Krugash*/, 24053 /*Helga Rumsbane*/, 24141 /*Stephen Barone*/, 26718 /*Trader Alorn*/, 26938 /*Groll*/, 27022 /*Afha*/, 27025 /*Harold Haggler*/, 27051 /*Doldaen*/, 27058 /*Korag Keeneye*/, 27071 /*Benjamin Jacobs*/, 27145 /*Tipvigut*/, 27182 /*Takubvik*/, 27940 /*Lethecus*/, 28691 /*Susana Averoy*/, 28792 /*Noggra*/, 28807 /*Amarante*/, 28830 /*Ra'wiri*/, 28867 /*Spiked*/, 29908 /*Plip Fatpurse*/, 31022 /*George Goodman*/, 33018 /*Jennifer Owings*/, 33019 /*Megan Owings*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857 WHERE `entry` IN (3038 /*Kary Thunderhorn*/, 3039 /*Holt Thunderhorn*/, 3040 /*Urek Thunderhorn*/, 3041 /*Torm Ragetotem*/, 3042 /*Sark Ragetotem*/, 3043 /*Ker Ragetotem*/, 13257 /*Murgot Deepforge*/, 16845 /*Gorkan Bloodfist*/, 16848 /*Provisioner Braknar*/, 17123 /*Earthcaller Ryga*/, 35187 /*Image of Archmage Xylem*/);
+UPDATE `creature_template` SET `npcflag`=4227, `unit_flags`=512 WHERE `entry`=3052; -- Skorn Whitecloud
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=33536 WHERE `entry` IN (38895 /*Lilian Voss*/, 49230 /*Marshal Redpath*/, 49231 /*Valdred Moray*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=0.8571429 WHERE `entry` IN (3068 /*Mazzranache*/, 43973 /*Hazzranache*/, 43974 /*Razzranache*/, 43975 /*Jazzranache*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000 WHERE `entry` IN (38913 /*Twilight Vanquisher*/, 44351 /*Stormcaller Jalara*/, 44357 /*Exhausted Fire Elemental*/, 44358 /*Exhausted Air Elemental*/, 44363 /*Greater Air Elemental*/, 44364 /*Greater Fire Elemental*/, 44371 /*Yuldris Smolderfury*/, 11605 /*Whitewhisker Overseer*/, 16409 /*Phantom Guest*/, 16873 /*Bleeding Hollow Dark Shaman*/, 18827 /*Gan'arg Sapper*/, 18950 /*Orgrimmar Grunt*/, 18966 /*Justinius the Harbinger*/, 18970 /*Darkspear Axe Thrower*/, 18972 /*Orgrimmar Shaman*/, 18976 /*Urga'zz*/, 27340 /*Bloodpaw Marauder*/, 29438 /*Rageclaw Primalist*/, 31144 /*Training Dummy*/);
+UPDATE `creature_template` SET `unit_flags2`=6293504 WHERE `entry` IN (38917 /*Alysra*/, 40178 /*Alysra*/, 30640 /*[DND] Icecrown Airship (A) - Cannon Target*/, 30646 /*[DND] Icecrown Airship (A) - Cannon, Even*/, 30649 /*[DND] Icecrown Airship (H) - Cannon Target*/, 30651 /*[DND] Icecrown Airship (A) - Cannon, Odd*/, 30690 /*[DND] Icecrown Airship (H) - Flak Cannon, Odd*/, 30699 /*[DND] Icecrown Airship (H) - Flak Cannon, Even*/, 33697 /*Raging Ancient Target*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_class`=2, `unit_flags`=33536 WHERE `entry`=38931; -- Zuni
+UPDATE `creature_template` SET `speed_run`=1.714286, `unit_flags`=33024 WHERE `entry` IN (39028 /*Darkspear Watcher*/, 43023 /*Budd*/);
+UPDATE `creature_template` SET `speed_run`=1.190476 WHERE `entry`=3285; -- Venture Co. Peon
+UPDATE `creature_template` SET `unit_flags`=33024 WHERE `entry` IN (3383 /*Southsea Cutthroat*/, 43022 /*Mack Fearsen*/, 43030 /*Captain Samir*/, 24073 /*Fearsome Horror*/, 27576 /*Fordragon Sentinel*/, 28317 /*Bushwhacker*/);
+UPDATE `creature_template` SET `npcflag`=16777216 WHERE `entry` IN (39270 /*Injured Razor Hill Grunt*/, 39997 /*Panicked Bunny*/, 39998 /*Terrified Squirrel*/, 43032 /*Slain Cannoneer*/, 43044 /*Unexploded Artillery Shell*/, 43046 /*Unexploded Artillery Shell Mount*/, 43048 /*Captain Skullshatter*/, 43984 /*Deactivated War Construct*/, 27626 /*Tatjana's Horse*/, 28683 /*Stable Master Kitrik*/, 34183 /*Arachnopod Destroyer*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768 WHERE `entry`=3451; -- Pilot Wizzlecrank
+UPDATE `creature_template` SET `unit_flags2`=35653632 WHERE `entry` IN (39294 /*Battered Red Drake*/, 39390 /*Twilight Drake*/, 40535 /*Ruby Defender*/, 40537 /*Ruby Guardian*/, 41095 /*Twilight Drake*/, 42479 /*Servant of Therazane*/, 42608 /*Battered Red Drake*/, 43101 /*Son of Kor*/, 43954 /*Fungal Terror*/, 43960 /*Stone Trogg Reinforcement*/, 44218 /*Emerald Colossus*/, 48523 /*Battered Red Drake*/, 48543 /*Falling Rubble Bunny*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000 WHERE `entry`=3475; -- Echeyakee
+UPDATE `creature_template` SET `npcflag`=2176 WHERE `entry` IN (3500 /*Tarhus*/, 3700 /*Jadenvis Seawatcher*/, 19235 /*Amshesha Stilldark*/, 19535 /*Dealer Zijaad*/, 26968 /*Drikka*/);
+UPDATE `creature_template` SET `unit_flags2`=2097152 WHERE `entry` IN (39378 /*Rajh*/, 39670 /*Raz the Crazed*/, 39870 /*Twilight Firecatcher*/, 39890 /*Twilight Earthshaper*/, 39954 /*Twilight Shadow Weaver*/, 39959 /*Lady Naz'jar*/, 39962 /*Twilight Stormbreaker*/, 40268 /*Twilight War-Mage*/, 40270 /*Twilight Thundercaller*/, 40306 /*Twilight Armsmaster*/, 41073 /*Twilight Armsmaster*/, 42516 /*Twilight Swarmer*/, 43391 /*Millhouse Manastorm*/, 44152 /*Flint Oremantle*/, 15691 /*The Curator*/, 18625 /*Dark Portal Dummy*/, 19397 /*Mo'arg Overseer*/, 19398 /*Gan'arg Peon*/, 19399 /*Fel Cannon*/, 19400 /*Fel Reaver Sentry*/, 20243 /*Scrapped Fel Reaver*/, 20899 /*Void Conduit*/, 21862 /*Dark Portal Dummy 1.30*/, 23076 /*Legion Flak Cannon*/, 26893 /*Grauf*/, 26918 /*Chaotic Rift*/, 27241 /*Risen Gryphon*/, 27268 /*Risen Gryphon Rider*/, 27605 /*Colossal Abomination*/, 27691 /*Frenzied Gargoyle*/, 30883 /*Dalaran Prison Event Controller*/, 32955 /*Collapsing Star*/, 33134 /*Sara*/, 33292 /*Ominous Cloud*/, 33990 /*Laughing Skull*/);
+UPDATE `creature_template` SET `unit_flags2`=35651584 WHERE `entry` IN (39381 /*Crimsonborne Guardian*/, 39405 /*Crimsonborne Seer*/, 39414 /*Ascended Windwalker*/, 39415 /*Ascended Flameseeker*/, 39626 /*Crimsonborne Warlord*/, 39854 /*Azureborne Guardian*/, 39909 /*Azureborne Warlord*/, 39956 /*Twilight Enforcer*/, 40272 /*Ascended Rockbreaker*/, 40273 /*Ascended Waterlasher*/, 40290 /*Crimsonborne Seer*/, 40291 /*Azureborne Seer*/, 40448 /*Twilight Enforcer*/);
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry` IN (39432 /*Takrik Ragehowl*/, 39433 /*Ian Duran*/);
+UPDATE `creature_template` SET `npcflag`=81 WHERE `entry` IN (3607 /*Androl Oakhand*/, 31247 /*Roxi Ramrocket*/);
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=32832 WHERE `entry`=3735; -- Apothecary Falthis
+UPDATE `creature_template` SET `unit_flags`=67141632 WHERE `entry` IN (39595 /*Furious Earthguard*/, 29334 /*Gundrak Raptor*/);
+UPDATE `creature_template` SET `unit_flags2`=2131968 WHERE `entry` IN (39612 /*Spatial Flux*/, 41381 /*Nordu*/, 44049 /*Giant Mushroom*/, 44153 /*Stonefather Oremantle*/, 48639 /*Ruby Gemstone Cluster*/, 48642 /*Enormous Gyreworm Bunny*/, 48707 /*Spatial Flux*/, 32930 /*Kologarn*/, 33329 /*Heart of the Deconstructor*/);
+UPDATE `creature_template` SET `unit_flags`=32832 WHERE `entry` IN (39616 /*Naz'jar Invader*/, 39985 /*Mad Prisoner*/, 41096 /*Naz'jar Spiritmender*/, 18682 /*Bog Lurker*/, 30953 /*Baelok*/, 30954 /*Rokir*/, 32481 /*Aotona*/);
+UPDATE `creature_template` SET `speed_walk`=1.111112 WHERE `entry` IN (39658 /*Spinescale Basilisk*/, 40403 /*Spinescale Matriarch*/, 48724 /*Spinescale Basilisk*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `unit_flags2`=2099200 WHERE `entry`=3887; -- Baron Silverlaine
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=512 WHERE `entry` IN (39858 /*Arch Druid Hamuul Runetotem*/, 41480 /*Arch Druid Hamuul Runetotem*/);
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry` IN (39908 /*Brann Bronzebeard*/, 41504 /*Tortolla*/, 45772 /*General Ammantep*/, 46134 /*High Commander Kamses*/, 46603 /*Nomarch Teneth*/, 46872 /*Prince Nadun*/, 47930 /*Asaq*/, 48564 /*King Phaoris*/, 49943 /*Itesh*/, 50038 /*Captain Hadan*/);
+UPDATE `creature_template` SET `unit_flags2`=33556480 WHERE `entry`=39947; -- Grimtotem Pillager
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=33556480, `dynamicflags`=0 WHERE `entry`=39951; -- Summit Defender
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=39972; -- Feralas Sentinel
+UPDATE `creature_template` SET `unit_flags`=294976 WHERE `entry`=39982; -- Crazed Mage
+UPDATE `creature_template` SET `unit_flags`=537166656, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=39990; -- Twilight Zealot
+UPDATE `creature_template` SET `unit_flags`=33849664 WHERE `entry`=40004; -- Quicksilver
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.8571429 WHERE `entry` IN (40073 /*Funafuti*/, 40074 /*Atiu*/, 40075 /*Avarua*/, 40076 /*Rima*/, 40077 /*Mata*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `unit_flags2`=2099200 WHERE `entry`=4278; -- Commander Springvale
+UPDATE `creature_template` SET `unit_flags`=64, `unit_flags2`=2099200 WHERE `entry`=40166; -- Enslaved Gronn Brute
+UPDATE `creature_template` SET `unit_flags2`=2164736 WHERE `entry` IN (40177 /*Forgemaster Throngus*/, 43952 /*Earthen Catapult*/, 44577 /*General Husam*/);
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=0 WHERE `entry` IN (40185 /*Twilight Initiate*/, 40563 /*Twilight Enforcer*/, 41672 /*Drowning Warrior*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `unit_flags`=64 WHERE `entry`=4380; -- Darkmist Widow
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=32768 WHERE `entry` IN (40331 /*Rayne Feathersong*/, 52309 /*Balgor Whipshank*/, 34828 /*Kala'ma*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629 WHERE `entry`=40332; -- Freewind Post Refugee
+UPDATE `creature_template` SET `unit_flags2`=4229120 WHERE `entry` IN (40341 /*Tortolla*/, 7024 /*Agent Kearnen*/);
+UPDATE `creature_template` SET `unit_flags`=537165824, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=40350; -- Generic Trigger LAB
+UPDATE `creature_template` SET `npcflag`=19 WHERE `entry` IN (4576 /*Josef Gregorian*/, 17637 /*Mack Diver*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=32768 WHERE `entry` IN (40435 /*Headless Ghost*/, 52897 /*Choluna*/, 52899 /*Rayne Feathersong*/, 52903 /*Tholo Whitehoof*/, 52904 /*Anren Shadowseeker*/, 34782 /*Alicia Cuthbert*/);
+UPDATE `creature_template` SET `unit_flags2`=138414080 WHERE `entry`=40484; -- Erudax
+UPDATE `creature_template` SET `unit_flags2`=1073776640 WHERE `entry` IN (40655 /*Ozumat*/, 44581 /*Ozumat Vehicle*/, 45030 /*Ozumat Vehicle, Big*/, 45042 /*Thrall*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags2`=2099200 WHERE `entry` IN (40757 /*Numa Skyclaw*/, 40792 /*Neptulon*/);
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=2099232 WHERE `entry`=40765; -- Commander Ulthok
+UPDATE `creature_template` SET `unit_flags2`=2230272 WHERE `entry` IN (40788 /*Mindbender Ghur'sha*/, 32934 /*Right Arm*/);
+UPDATE `creature_template` SET `BaseAttackTime`=3000, `unit_flags`=768, `unit_flags2`=4194304 WHERE `entry`=40793; -- Ragnaros
+UPDATE `creature_template` SET `speed_run`=1.714286, `unit_flags2`=2099200 WHERE `entry`=40794; -- Son of Flame
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=1.2, `speed_run`=1.428571, `unit_flags`=33280, `unit_flags2`=2097152 WHERE `entry`=40803; -- Cenarius
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_class`=2, `unit_flags`=33280, `unit_flags2`=4194304 WHERE `entry`=40804; -- Malfurion Stormrage
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=33280, `unit_flags2`=4194304 WHERE `entry`=40805; -- Arch Druid Hamuul Runetotem
+UPDATE `creature_template` SET `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry` IN (40812 /*Fire Cyclone*/, 42925 /*Ravenous Tunneler*/, 27064 /*Abandoned Fuel Tank*/, 30753 /*Orgrim's Hammer Engineer*/, 34071 /*Leviathan Mk II*/);
+UPDATE `creature_template` SET `unit_flags`=33536 WHERE `entry` IN (40820 /*War Kodo*/, 19545 /*Cohlien Frostweaver*/, 19589 /*Maxx A. Million Mk. V*/, 24253 /*Dragonflayer Prisoner*/, 24254 /*Dragonflayer Prisoner*/, 27620 /*Shade of Arugal*/, 28117 /*Argent Footman*/, 31075 /*Scourge Bomb*/, 34679 /*Francis Eaton*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=3000, `unit_flags`=33024, `unit_flags2`=34816 WHERE `entry`=40928; -- Ysera
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.5873, `unit_flags`=32768 WHERE `entry`=40934; -- Emerald Drake
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=1.714286, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry`=40938; -- Flame Tsunami
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=32768 WHERE `entry` IN (40956 /*Nordrassil Druid*/, 51777 /*Druid of the Talon*/, 52863 /*Leyara*/, 52907 /*Thisalee Crow*/);
+UPDATE `creature_template` SET `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry` IN (40974 /*Desperiona*/, 26608 /*Under-King Anub'et'kan*/);
+UPDATE `creature_template` SET `speed_run`=1.984126, `unit_flags`=163840 WHERE `entry`=41008; -- Druid of the Talon
+UPDATE `creature_template` SET `speed_walk`=1.111112, `unit_flags`=32768 WHERE `entry`=41026; -- Presence of Cenarius
+UPDATE `creature_template` SET `unit_flags`=537133824, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (5249 /*Woodpaw Mongrel*/, 5251 /*Woodpaw Trapper*/, 5253 /*Woodpaw Brute*/, 5254 /*Woodpaw Mystic*/, 5255 /*Woodpaw Reaver*/, 5258 /*Woodpaw Alpha*/, 47729 /*Neferset Savage*/, 25467 /*Bloodspore Harvester*/, 26160 /*Taunka'le Pack Kodo*/);
+UPDATE `creature_template` SET `speed_run`=1.031746 WHERE `entry` IN (41165 /*Shahandana*/, 18859 /*Wrath Priestess*/, 18860 /*Daughter of Destiny*/, 18981 /*Doomwhisperer*/, 19282 /*Subjugator Shi'aziv*/, 19299 /*Deathwhisperer*/, 19335 /*Subjugator Yalqiz*/, 22381 /*Hathyss the Wicked*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=64 WHERE `entry`=5347; -- Antilus the Soarer
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64 WHERE `entry` IN (5354 /*Gnarl Leafbrother*/, 11497 /*The Razza*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1300, `unit_class`=2 WHERE `entry`=41279; -- Loramus Thalipedes
+UPDATE `creature_template` SET `speed_run`=0.8571429, `unit_flags`=33088 WHERE `entry`=41280; -- Razelikh the Defiler
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2099200 WHERE `entry` IN (41614 /*Nemesis*/, 52227 /*Balgor Whipshank*/, 25387 /*En'kilah Gargoyle*/, 26925 /*Wyrmrest Temple Drake*/, 28729 /*Watcher Narjil*/, 28730 /*Watcher Gashra*/, 28731 /*Watcher Silthik*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.142857 WHERE `entry`=5843; -- Slave Worker
+UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry`=6119; -- Tog Rustsprocket
+UPDATE `creature_template` SET `speed_walk`=1 WHERE `entry` IN (6194 /*Spitelash Serpent Guard*/, 9454 /*Xavathras*/, 9877 /*Prince Xavalis*/, 18440 /*Warmaul Chef Bufferlo*/, 18444 /*Corki Event Controller*/, 18475 /*Mug'gok*/, 20329 /*Grishna Matriarch*/, 20442 /*Captain Bo'kar*/, 20475 /*Surveying Marker Two*/, 20476 /*Surveying Marker Three*/, 20564 /*Image of Agent Ya-six*/, 20685 /*Overseer Azarad*/, 21046 /*Boulder'mok Brute*/, 21047 /*Boulder'mok Shaman*/, 21048 /*Boulder'mok Chieftain*/, 21090 /*Professor Dabiri*/, 21103 /*Spiritcaller Grakosh*/, 21105 /*Spiritcaller Roxnak*/, 21106 /*Spiritcaller Skrash*/, 21783 /*Protectorate Regenerator*/, 21851 /*The Voice of the Raven God*/, 22350 /*Central Gehenna Teleporter Credit*/, 22351 /*Eastern Gehenna Teleporter Credit*/, 28167 /*Stratholme Citizen*/, 28169 /*Stratholme Resident*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=6240; -- Affray Challenger
+UPDATE `creature_template` SET `unit_flags2`=1073741824 WHERE `entry` IN (42098 /*Invisible Stalker (Cataclysm Boss, Ignore Combat, Floating)*/, 42844 /*Invisible Stalker (Cataclysm Boss, Ignore Combat)*/, 28781 /*Battleground Demolisher*/, 34775 /*Demolisher*/, 34802 /*Glaive Thrower*/, 34929 /*Alliance Gunship Cannon*/, 34935 /*Horde Gunship Cannon*/, 34944 /*Keep Cannon*/, 35273 /*Glaive Thrower*/);
+UPDATE `creature_template` SET `unit_flags`=33554432 WHERE `entry` IN (6271 /*Mouse*/, 6368 /*Cat*/, 16857 /*Marauding Crust Burster*/, 58065 /*General Purpose Bunny (DLA)*/, 25310 /*Borean - Westrift Cleftcliff Anomaly*/, 29483 /*K3 Perimeter Turret*/, 30413 /*Channel Image Target*/, 34050 /*Rocket (Mimiron Visual)*/);
+UPDATE `creature_template` SET `unit_class`=1 WHERE `entry` IN (42147 /*Dark Iron Guard*/, 24461 /*Chillmere Oracle*/);
+UPDATE `creature_template` SET `unit_flags2`=136316928 WHERE `entry`=42188; -- Ozruk
+UPDATE `creature_template` SET `unit_flags2`=2099232 WHERE `entry` IN (42189 /*Bouncer Spike*/, 26533 /*Mal'Ganis*/, 27688 /*Alliance Lumberboat*/, 27689 /*Alliance Lumberboat Explosions*/, 27702 /*Horde Lumberboat*/, 28546 /*Ionar*/, 32871 /*Algalon the Observer*/, 34192 /*Boomer XP-500*/, 35064 /*Eye of Frost*/);
+UPDATE `creature_template` SET `speed_run`=1.142857 WHERE `entry` IN (42231 /*Captain Metlek*/, 7726 /*Grimtotem Naturalist*/, 51758 /*Draenei Child*/, 21383 /*Wyrmcult Acolyte*/, 21902 /*Cabal Spell-weaver*/, 22314 /*Captive Child*/, 23739 /*Valgarde Defender*/, 26363 /*Tallhorn Stag*/, 27973 /*Crystalline Shardling*/, 28611 /*Scarlet Captain*/, 28706 /*Olisarra the Kind*/, 28714 /*Ildine Sorrowspear*/, 28716 /*Palja Amboss*/, 28990 /*Anthony Durain*/, 28995 /*Paldesse*/, 28997 /*Griselda Hunderland*/, 29106 /*Death Knight Champion*/, 29202 /*Knight of the Ebon Blade*/, 29255 /*Sunreaver Guardian Mage*/, 29511 /*Lalla Brightweave*/, 29628 /*Angelique Butler*/, 29641 /*Theresa Wolf*/, 31033 /*Crusader of Virtue*/, 31769 /*Stabled Hunter Pet*/, 32172 /*Harold Winston*/, 32515 /*Braeg Stoutbeard*/, 32651 /*Wounded Dalaran Shield Guard*/, 32744 /*Bakor the Gangly*/, 35496 /*Rueben Lauren*/, 35498 /*Horace Hunderland*/, 35768 /*Colosos' Mount*/);
+UPDATE `creature_template` SET `unit_flags2`=2131968 WHERE `entry` IN (42469 /*Kor the Immovable*/, 15192 /*Anachronos*/, 56027 /*Stormherald Eljrrin*/);
+UPDATE `creature_template` SET `npcflag`=4194433 WHERE `entry` IN (6749 /*Erma*/, 43379 /*Limiah Whitebranch*/, 43408 /*Aili Greenwillow*/, 43494 /*Oltarin Graycloud*/, 43982 /*Vernon Soursprye*/, 44252 /*Karin*/, 44349 /*Munada*/, 44788 /*Lonto*/, 45298 /*Mule Driver Ironshod*/, 45789 /*Bezzil*/, 9980 /*Shelby Stoneflint*/, 9981 /*Sikwa*/, 9987 /*Shoja'my*/, 9988 /*Xon'cha*/, 10047 /*Michael*/, 10054 /*Bulrug*/, 10059 /*Antarius*/, 10063 /*Reggifuz*/, 11069 /*Jenova Stoneshield*/, 11119 /*Azzleby*/, 47764 /*Murog*/, 47934 /*Karn Cragcare*/, 48216 /*Hurah*/, 48887 /*Darwishi*/, 49408 /*Farah Tamina*/, 15722 /*Squire Leoren Mal'derath*/, 17896 /*Kameel Longstride*/, 18244 /*Khalan*/, 18250 /*Joraal*/, 21518 /*Oruhe*/, 24066 /*Artie Grizzlehand*/, 24067 /*Mahana Frosthoof*/, 24154 /*Mary Darrow*/, 26044 /*Durkot Wolfbrother*/, 26721 /*Halona Stormwhisper*/, 27056 /*Sentinel Sweetspring*/, 27065 /*Breka Wolfsister*/, 27068 /*Matthew Ackerman*/, 27948 /*Risera*/, 28047 /*Hadrius Harlowe*/, 28057 /*Garmin Herzog*/, 28690 /*Tassia Whisperglen*/, 28790 /*Fala Softhoof*/, 29740 /*Craga Ironsting*/, 30039 /*Asgari*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000 WHERE `entry`=42730; -- Earthcaller Torunscar
+UPDATE `creature_template` SET `unit_flags`=262208, `unit_flags2`=35653632 WHERE `entry`=42781; -- Servant of Therazane
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `unit_flags2`=35653632 WHERE `entry`=42788; -- Hargoth Dimblaze
+UPDATE `creature_template` SET `unit_class`=2 WHERE `entry` IN (7110 /*Jadefire Shadowstalker*/, 54141 /*Edgar Goodwin*/, 23385 /*Simon Unit*/);
+UPDATE `creature_template` SET `unit_flags`=33554688, `unit_flags2`=2099200 WHERE `entry` IN (42990 /*Tentacle Pacer Bunny (H)*/, 42991 /*Tentacle Summon Bunny (Horde)*/, 52967 /*A Ritual of Flame Event Controller*/, 33651 /*VX-001*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=33587200, `unit_flags2`=4196352, `VehicleId`=553 WHERE `entry`=42992; -- Sea Monster Tentacle
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=33587200, `unit_flags2`=4196352, `VehicleId`=556 WHERE `entry` IN (42993 /*Sea Monster Tentacle*/, 42994 /*Sea Monster Tentacle*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=33587200, `unit_flags2`=4196352, `VehicleId`=698 WHERE `entry` IN (42995 /*Sea Monster Tentacle*/, 42996 /*Sea Monster Tentacle*/, 42997 /*Sea Monster Tentacle*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=33587200, `unit_flags2`=4196352 WHERE `entry`=42998; -- Sea Monster Tentacle
+UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry` IN (43051 /*Adarrah*/, 14499 /*Horde Orphan*/, 17660 /*Skeletal Gryphon*/, 27616 /*Prince Atherann*/, 27618 /*Prince Keleseth*/, 27624 /*Prince Theraldis*/, 32620 /*Eye of the Storm Portal*/, 35330 /*Exodar Champion*/, 35332 /*Darnassus Champion*/, 35345 /*Gnomish Mechanic*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=43100; -- Legionnaire Nazgrim
+UPDATE `creature_template` SET `speed_walk`=0.75, `speed_run`=0.7440472, `unit_flags`=4194304 WHERE `entry`=43170; -- Earthen Geomancer
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=32768 WHERE `entry` IN (43177 /*Drowning Warrior*/, 43179 /*Drowning Warrior*/, 51514 /*Camp Ataya Brave*/, 51785 /*Nesingwary Game Warden*/);
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=569 WHERE `entry`=43180; -- Zin'jatar Raider
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286 WHERE `entry` IN (43189 /*Warchief Mor'ghor*/, 18982 /*Sable Jaguar*/, 32340 /*Gold Shaman*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=33556481, `dynamicflags`=32 WHERE `entry`=43228; -- Stone Trogg Berserker
+UPDATE `creature_template` SET `unit_flags`=33280, `unit_flags2`=33556480, `dynamicflags`=0 WHERE `entry`=43250; -- Needlerock Rider
+UPDATE `creature_template` SET `unit_flags2`=1073743874 WHERE `entry`=43359; -- ELM General Purpose Bunny Infinite Hide Body
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `unit_flags2`=2099200 WHERE `entry`=43373; -- Raging Crystal-walker
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `unit_flags`=512 WHERE `entry`=7554; -- Snowy Owl
+UPDATE `creature_template` SET `npcflag`=66177 WHERE `entry` IN (7737 /*Innkeeper Greul*/, 18907 /*Innkeeper Coryth Stoktron*/, 19531 /*Eyonix*/, 24057 /*Christina Daniels*/);
+UPDATE `creature_template` SET `npcflag`=131 WHERE `entry`=7772; -- Kalin Windflight
+UPDATE `creature_template` SET `npcflag`=128 WHERE `entry` IN (7945 /*Savanne*/, 7947 /*Vivianna*/, 8145 /*Sheendra Tallgrass*/, 8157 /*Logannas*/, 8158 /*Bronk*/, 12956 /*Zannok Hidepiercer*/, 16769 /*Firewing Warlock*/, 19836 /*Mixie Farshot*/, 27143 /*Librarian Ingram*/, 28723 /*Larana Drome*/, 28994 /*Abra Cadabra*/, 29491 /*Karandonna*/, 29702 /*Chameli Banaphash*/, 35826 /*Kaye Toogie*/);
+UPDATE `creature_template` SET `npcflag`=80 WHERE `entry` IN (7946 /*Brannock*/, 45540 /*Krenk Choplimb*/, 18990 /*Burko*/, 18991 /*Aresella*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629 WHERE `entry` IN (44046 /*Earthen Ring Shaman*/, 18460 /*Lost Spirit*/, 21660 /*Cabal Abjurist*/, 26582 /*Horrified Drakkari Warrior*/, 31095 /*Val'kyr Battle-maiden*/, 32875 /*Iron Honor Guard*/, 33054 /*Thorim Trap Bunny*/, 33552 /*Yogg-Saron*/, 34193 /*Clockwork Sapper*/);
+UPDATE `creature_template` SET `speed_walk`=0.777776, `BaseAttackTime`=2600, `RangeAttackTime`=2000, `unit_flags`=64 WHERE `entry`=8215; -- Grimungous
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `unit_flags`=33280 WHERE `entry`=44120; -- Sauranok the Mystic
+UPDATE `creature_template` SET `speed_walk`=1.111112, `unit_flags`=64 WHERE `entry` IN (8298 /*Akubar the Seer*/, 45260 /*Blackleaf*/);
+UPDATE `creature_template` SET `unit_flags2`=35653632 WHERE `entry` IN (44352 /*Tawn Winterbluff*/, 44353 /*Stormcaller Mylra*/);
+UPDATE `creature_template` SET `npcflag`=66177 WHERE `entry`=44376; -- Chonk
+UPDATE `creature_template` SET `speed_walk`=1.4, `speed_run`=1.428571 WHERE `entry`=8660; -- The Evalcharr
+UPDATE `creature_template` SET `unit_flags2`=1207992320 WHERE `entry`=44566; -- Ozumat
+UPDATE `creature_template` SET `unit_flags`=64, `unit_flags2`=2097184 WHERE `entry`=44752; -- Faceless Sapper
+UPDATE `creature_template` SET `unit_flags2`=32 WHERE `entry`=44794; -- Training Dummy
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=0.8571429, `unit_flags2`=2099200 WHERE `entry`=44895; -- Augh
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9126986 WHERE `entry` IN (45262 /*Narixxus the Doombringer*/, 19191 /*Arazzius the Cruel*/);
+UPDATE `creature_template` SET `unit_flags2`=1140852736 WHERE `entry`=45455; -- Slipstream
+UPDATE `creature_template` SET `speed_walk`=2.4 WHERE `entry`=9623; -- A-Me 01
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=67108864 WHERE `entry` IN (9683 /*Lar'korwi Mate*/, 9684 /*Lar'korwi*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.4285714 WHERE `entry`=45704; -- Lurking Tempest
+UPDATE `creature_template` SET `unit_flags2`=4196353 WHERE `entry` IN (46003 /*Prophet Hadassi*/, 33063 /*Wrecked Siege Engine*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.289683, `unit_flags`=64 WHERE `entry`=10642; -- Eck'alom
+UPDATE `creature_template` SET `unit_flags`=16 WHERE `entry`=10990; -- Alterac Ram
+UPDATE `creature_template` SET `npcflag`=18 WHERE `entry`=11177; -- Okothos Ironrager
+UPDATE `creature_template` SET `npcflag`=18 WHERE `entry` IN (11178 /*Borgosh Corebender*/, 30709 /*Poshken Hardbinder*/);
+UPDATE `creature_template` SET `speed_run`=1.289683 WHERE `entry` IN (47138 /*Pustulant Monstrosity*/, 23131 /*Blood Knight Honor Guard*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1600 WHERE `entry` IN (47143 /*Spitebone Skeleton*/, 47145 /*Spitebone Guardian*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags2`=2099200 WHERE `entry`=47202; -- Diseased Vulture
+UPDATE `creature_template` SET `unit_flags2`=133120 WHERE `entry`=47208; -- Assistant Greely
+UPDATE `creature_template` SET `speed_run`=0.8571429, `unit_class`=4, `unit_flags`=16384, `unit_flags2`=4196352, `VehicleId`=888 WHERE `entry`=47210; -- Air Defense Cannon
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=768 WHERE `entry`=47217; -- Emergency Rampless Debarkation Device
+UPDATE `creature_template` SET `unit_flags2`=4194304 WHERE `entry` IN (47221 /*Schnottz Supply Chopper*/, 47546 /*Decrepit Watcher*/, 27894 /*Antipersonnel Cannon*/, 33109 /*Salvaged Demolisher*/, 33214 /*Mechanolift 304-A*/);
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=768 WHERE `entry`=47366; -- Impsy
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=33556481, `dynamicflags`=32 WHERE `entry`=47394; -- Twilight Guardsman
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags2`=2099200 WHERE `entry`=47462; -- Archduke Calcinder
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry` IN (11677 /*Taskmaster Snivvle*/, 13086 /*Aggi Rumblestomp*/, 18185 /*Feralfen Serpent Spirit*/, 20117 /*Vengeful Unyielding Knight*/, 21778 /*Doctor Gutrick*/);
+UPDATE `creature_template` SET `RangeAttackTime`=2000 WHERE `entry`=11678; -- Snowblind Ambusher
+UPDATE `creature_template` SET `unit_flags`=32768, `dynamicflags`=0 WHERE `entry`=11682; -- Warsong Grunt
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `unit_flags`=262144 WHERE `entry`=11949; -- Captain Balinda Stonehearth
+UPDATE `creature_template` SET `npcflag`=3712 WHERE `entry`=12096; -- Stormpike Quartermaster
+UPDATE `creature_template` SET `unit_flags`=768, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=47947; -- Schnottz's Bodyguard
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `BaseAttackTime`=2000 WHERE `entry`=12121; -- Drakan
+UPDATE `creature_template` SET `speed_run`=0.7857143 WHERE `entry`=48040; -- Pygmy Oaf
+UPDATE `creature_template` SET `unit_flags2`=1073743873 WHERE `entry`=48185; -- Whale Shark
+UPDATE `creature_template` SET `unit_flags2`=71303168 WHERE `entry`=48214; -- Schnottz Fighter
+UPDATE `creature_template` SET `unit_flags2`=2132000 WHERE `entry`=48334; -- Dust Devil
+UPDATE `creature_template` SET `speed_walk`=1.555556, `unit_flags`=67108928 WHERE `entry`=48352; -- Grolvitar the Everburning
+UPDATE `creature_template` SET `unit_flags`=33555200, `unit_flags2`=2131968, `VehicleId`=1339 WHERE `entry`=48640; -- Enormous Gyreworm Bunny
+UPDATE `creature_template` SET `unit_flags2`=37750784 WHERE `entry` IN (48697 /*Ramkahen Archer*/, 51131 /*Wildhammer Homesteader*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=12918; -- Chief Murgut
+UPDATE `creature_template` SET `unit_flags`=33555200 WHERE `entry`=13000; -- Gnome Engineer
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=13088; -- Masha Swiftcut
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=832 WHERE `entry`=13179; -- Wing Commander Guse
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `unit_flags2`=2099200 WHERE `entry`=49045; -- Augh
+UPDATE `creature_template` SET `unit_flags`=64 WHERE `entry` IN (13284 /*Frostwolf Shaman*/, 50958 /*Kalan'ii*/, 51403 /*Madexx*/, 23725 /*Stone Giant*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=13316; -- Coldmine Peon
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=13317; -- Coldmine Miner
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` IN (13448 /*Sergeant Yazra Bloodsnarl*/, 16993 /*Wounded Blood Elf Pilgrim*/);
+UPDATE `creature_template` SET `unit_flags`=33536, `unit_flags2`=0 WHERE `entry` IN (49355 /*Lord Harford*/, 49356 /*Gally Lumpstain*/);
+UPDATE `creature_template` SET `speed_run`=1.142857 WHERE `entry`=13577; -- Stormpike Ram Rider Commander
+UPDATE `creature_template` SET `npcflag`=4194304 WHERE `entry`=13617; -- Stormpike Stable Master
+UPDATE `creature_template` SET `npcflag`=1048577 WHERE `entry` IN (49573 /*Karba Blazemaw*/, 34976 /*Ruk Warstomper*/, 34978 /*Mosha Starhorn*/);
+UPDATE `creature_template` SET `dynamicflags`=0 WHERE `entry` IN (49871 /*Blackrock Battle Worg*/, 49874 /*Blackrock Spy*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags2`=2131968 WHERE `entry`=49956; -- Pebble
+UPDATE `creature_template` SET `unit_flags`=537166656 WHERE `entry` IN (50276 /*Naz'jar Spiritmender*/, 50278 /*Naz'jar Invader*/);
+UPDATE `creature_template` SET `unit_flags2`=69208064 WHERE `entry` IN (50291 /*Arcane Tesseract*/, 50401 /*Titan Mechanism*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=50350; -- Morgrinn Crackfang
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1.285714, `unit_flags`=262656, `unit_flags2`=67110912 WHERE `entry`=50410; -- Mysterious Camel Figurine
+UPDATE `creature_template` SET `npcflag`=4739 WHERE `entry` IN (14624 /*Master Smith Burninate*/, 18011 /*Zurai*/);
+UPDATE `creature_template` SET `npcflag`=4194435 WHERE `entry` IN (14741 /*Huntsman Markhor*/, 23733 /*Horatio the Stable Boy*/, 26504 /*Soar Hawkfury*/, 26944 /*Soulok Stormfury*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1154 WHERE `entry`=14764; -- Icewing Marshal
+UPDATE `creature_template` SET `npcflag`=1048577, `unit_flags`=576 WHERE `entry`=50684; -- Nathan Lamusga
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=1500, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=50823; -- Mister Ferocious
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` IN (14990 /*Defilers Envoy*/, 15105 /*Warsong Envoy*/, 23511 /*Gordok Brew Apprentice*/);
+UPDATE `creature_template` SET `RangeAttackTime`=2000 WHERE `entry`=15011; -- Wagner Hammerstrike
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=15012; -- Javnir Nashak
+UPDATE `creature_template` SET `speed_walk`=0.666668 WHERE `entry` IN (15062 /*Arathi Lumberjack*/, 27537 /*Fordragon Lumberjack*/, 29917 /*Field Corpse (Type B)*/);
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry` IN (15113 /*Honored Hero*/, 15115 /*Honored Ancestor*/);
+UPDATE `creature_template` SET `npcflag`=66179 WHERE `entry` IN (15174 /*Calandrath*/, 21110 /*Fizit "Doc" Clocktock*/);
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (51078 /*Ferdinand*/, 31255 /*Saronite Shaper*/);
+UPDATE `creature_template` SET `npcflag`=131, `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=15354; -- Rachelle Gothena
+UPDATE `creature_template` SET `unit_flags2`=1140852736, `VehicleId`=1532 WHERE `entry`=51340; -- Twilight Portal
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.428571 WHERE `entry`=51541; -- Sunveil Scout
+UPDATE `creature_template` SET `unit_flags`=33296 WHERE `entry`=51788; -- Darkspear Watcher
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=32768 WHERE `entry`=51808; -- Telaari Watcher
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=32768, `unit_flags2`=0 WHERE `entry`=51870; -- Ebon Watch Guardian
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `unit_class`=2, `unit_flags`=32768 WHERE `entry`=51906; -- Falcon Watch Ranger
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=512 WHERE `entry`=51938; -- Crithto
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.7142857 WHERE `entry`=16170; -- Coldmist Stalker
+UPDATE `creature_template` SET `unit_flags`=67141632, `unit_flags2`=2099200 WHERE `entry`=52289; -- Fiery Behemoth
+UPDATE `creature_template` SET `speed_walk`=2, `unit_flags`=512, `unit_flags2`=2099200, `VehicleId`=1586 WHERE `entry`=52310; -- Captured Caravan Cart
+UPDATE `creature_template` SET `npcflag`=4227 WHERE `entry`=16583; -- Rohok
+UPDATE `creature_template` SET `npcflag`=3219 WHERE `entry`=16588; -- Apothecary Antonivich
+UPDATE `creature_template` SET `unit_flags`=256, `unit_flags2`=67110912, `VehicleId`=1605 WHERE `entry`=52556; -- Druid Combat Circle
+UPDATE `creature_template` SET `speed_walk`=1.555556, `unit_flags`=32768 WHERE `entry`=52557; -- Raging Invader
+UPDATE `creature_template` SET `npcflag`=4241 WHERE `entry`=16823; -- Humphry
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.4960314 WHERE `entry`=16928; -- Stonescythe Ambusher
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2, `unit_flags2`=2099200 WHERE `entry`=16939; -- Void Baron Galaxis
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.9523814 WHERE `entry`=16945; -- Mo'arg Engineer
+UPDATE `creature_template` SET `speed_walk`=1.4, `speed_run`=1.142857 WHERE `entry` IN (16994 /*Draenei Anchorite*/, 16996 /*Draenei Vindicator*/);
+UPDATE `creature_template` SET `npcflag`=2, `unit_class`=2, `unit_flags`=32768 WHERE `entry`=52843; -- Skylord Omnuron
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `unit_flags`=32768 WHERE `entry`=52845; -- Malfurion Stormrage
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=33536 WHERE `entry`=52846; -- Hyjal Ritualist
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_class`=2, `unit_flags`=32768 WHERE `entry` IN (52847 /*Hyjal Assault Trooper*/, 52849 /*Hyjal Assault Trooper*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_class`=2, `unit_flags`=33536 WHERE `entry`=52848; -- Hyjal Assault Trooper
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (52853 /*Charred Invader*/, 25760 /*Kvaldir Raider*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `unit_flags`=32768 WHERE `entry`=52898; -- Avrilla
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=1.111112, `unit_flags`=32768 WHERE `entry`=52900; -- Keeper Taldros
+UPDATE `creature_template` SET `npcflag`=1, `unit_class`=2, `unit_flags`=32768 WHERE `entry`=52901; -- Morthis Whisperwing
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=33536 WHERE `entry`=52902; -- Commander Jarod Shadowsong
+UPDATE `creature_template` SET `speed_walk`=1.4, `speed_run`=1.428571 WHERE `entry`=17085; -- Aeranas
+UPDATE `creature_template` SET `unit_flags2`=2099201 WHERE `entry`=17890; -- Weeder Greenthumb
+UPDATE `creature_template` SET `unit_flags2`=1073743872 WHERE `entry` IN (53738 /*Aggra*/, 54313 /*Thrall*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=17955; -- Hungry Bog Lord
+UPDATE `creature_template` SET `speed_run`=1.714286 WHERE `entry`=53823; -- Hyjal Warden
+UPDATE `creature_template` SET `unit_flags`=33280 WHERE `entry` IN (53840 /*Gart Mistrunner*/, 53841 /*Zen'tabra*/, 53844 /*Celestine of the Harvest*/, 19353 /*Wildhammer Guard*/, 25329 /*Gorge the Corpsegrinder*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768 WHERE `entry`=18109; -- Living Fire
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=33280 WHERE `entry`=53977; -- Darkcaller Yanka
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry`=18152; -- Baby Murloc
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=2.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=18182; -- Gurok the Usurper
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768 WHERE `entry`=18186; -- Feralfen Totem
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=2.142857, `unit_flags2`=2097152 WHERE `entry`=18192; -- Horde Halaani Guard
+UPDATE `creature_template` SET `unit_flags`=67108864, `unit_flags2`=2099200 WHERE `entry`=18259; -- Banthar
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=18423; -- Cho'war the Pillager
+UPDATE `creature_template` SET `speed_run`=1.142857 WHERE `entry` IN (18424 /*Warden Treelos*/, 28687 /*Amisi Azuregaze*/, 28708 /*Kizi Copperclip*/, 29478 /*Jepetto Joybuzz*/, 32676 /*Grindle Firespark*/, 32678 /*Emeline Fizzlefry*/, 32680 /*Fabioso the Fabulous*/, 32684 /*Mona Everspring*/, 32689 /*Adorean Lew*/, 32731 /*Metopious Loreseeker*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.9920629, `unit_flags`=32768 WHERE `entry`=18445; -- Corki
+UPDATE `creature_template` SET `unit_flags`=537166592, `dynamicflags`=32 WHERE `entry`=18490; -- Fallen Druid
+UPDATE `creature_template` SET `speed_run`=1.428571 WHERE `entry` IN (18521 /*Raging Skeleton*/, 18524 /*Angered Skeleton*/, 32653 /*Wounded Dalaran Serpent*/);
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=570721024, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=54386; -- Scarlet Commander
+UPDATE `creature_template` SET `unit_flags`=294912 WHERE `entry` IN (18557 /*Phasing Cleric*/, 18559 /*Phasing Stalker*/);
+UPDATE `creature_template` SET `speed_run`=1.190476, `unit_flags`=32832 WHERE `entry`=18689; -- Crippler
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=18693; -- Speaker Mar'grom
+UPDATE `creature_template` SET `speed_run`=1.714286, `unit_flags`=64 WHERE `entry`=54533; -- Prince Lakma
+UPDATE `creature_template` SET `unit_flags2`=2129920 WHERE `entry` IN (54556 /*Volcano*/, 33890 /*Brain of Yogg-Saron*/);
+UPDATE `creature_template` SET `npcflag`=129 WHERE `entry` IN (18749 /*Dalinna*/, 18754 /*Barim Spilthoof*/, 19227 /*Griftah*/);
+UPDATE `creature_template` SET `npcflag`=129 WHERE `entry`=18752; -- Zebig
+UPDATE `creature_template` SET `npcflag`=145 WHERE `entry`=18753; -- Felannia
+UPDATE `creature_template` SET `npcflag`=145 WHERE `entry` IN (18773 /*Johan Barnes*/, 19539 /*Jazdalaad*/, 19540 /*Asarnan*/, 26916 /*Mindri Dinkles*/, 26977 /*Adelene Sunlance*/, 33635 /*Daenril*/, 33636 /*Miralisse*/, 33637 /*Kirembri Silvermane*/, 33638 /*Scribe Lanloer*/, 33641 /*Irduil*/, 33675 /*Onodo*/, 33677 /*Technician Mihila*/, 33678 /*Jijia*/, 33681 /*Korim*/, 33683 /*Dremm*/, 33684 /*Weaver Aoa*/);
+UPDATE `creature_template` SET `npcflag`=3, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=18816; -- Chief Researcher Amereldine
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (18821 /*Quartermaster Jaffrey Noreliqe*/, 21474 /*Coreiel*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry` IN (54870 /*General Nazgrim*/, 55135 /*General Nazgrim*/);
+UPDATE `creature_template` SET `npcflag`=131072 WHERE `entry` IN (19034 /*Mendorn*/, 19246 /*Berudan Keysworn*/, 19318 /*Gromden*/, 19338 /*L'lura Goldspun*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54913 /*Lin Tenderpaw*/, 54915 /*Groundskeeper Wu*/, 54917 /*Instructor Xann*/, 54922 /*Master Stone Fist*/, 54998 /*Apprentice Yufi*/, 56062 /*Tzu the Ironbelly*/, 56063 /*Inkmaster Jo Po*/, 56064 /*Inkmaster Glenzu*/, 56066 /*Bellmaster Li*/, 56708 /*Syra Goldendraft*/, 56774 /*Bolo*/, 58228 /*Instructor Skythorn*/, 58413 /*Jenova Longeye*/, 58420 /*Instructor Windblade*/, 58506 /*Ace Longpaw*/, 58508 /*Big Bao*/, 58509 /*Ningna Darkwheel*/, 58510 /*Suchi the Sweet*/, 58511 /*Qua-Ro Whitebrow*/, 58531 /*Toudu Tigerclaw*/, 58564 /*Elder Anli*/, 64030 /*Lao Lang*/, 64031 /*Xari the Kind*/, 64033 /*Master Angler Marina*/, 64036 /*Tang Ironhoe*/, 64488 /*Riki the Shifting Shadow*/, 65998 /*Merchant Zin*/, 66220 /*Mayor Honeydew*/, 66225 /*Cook Tsu*/, 66657 /*Taran Zhu*/, 66659 /*Sue-Ji the Tender*/, 66665 /*Taran Zhu*/, 66825 /*Ellie Honeypaw*/, 66845 /*Sergeant Gorrok*/, 66848 /*Ellie Honeypaw*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54914 /*High Elder Cloudfall*/, 54918 /*Instructor Myang*/, 54919 /*Spirit-Sage Gaoquan*/, 55094 /*Guard Shan Long*/, 59573 /*Farmer Chow*/, 59636 /*Uyen Chow*/, 61467 /*Mao the Lookout*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=54924; -- Zhi-Zhi
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=54925; -- Husshun
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54926 /*Xiao*/, 59569 /*Brewmaster Blanche*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54930 /*Greenwood Thief*/, 54944 /*Tian Pupil*/, 54980 /*Yao the Collector*/, 54987 /*Greenwood Trickster*/, 54988 /*Waxwood Hunter*/, 55092 /*Mother Wu*/, 55236 /*Jade Guardian*/, 55238 /*Waxwood Matriarch*/, 55438 /*Outcast Sprite*/, 55507 /*Animated Statuette*/, 56198 /*Thicket Stalker*/, 56201 /*Orchard Wasp*/, 56272 /*Forest Prowler*/, 56283 /*Tigerfly*/, 56771 /*Guardian of the Dawn*/, 56788 /*Serpent Trainer*/, 56790 /*Honeycatcher Lang*/, 56815 /*Garden Visitor*/, 57326 /*Yu'lon Guardian*/, 57444 /*Serpent Rider*/, 58692 /*Race Spectator*/, 59085 /*Mirror Strider*/, 59102 /*Forest Huntress*/, 59311 /*Veridian Carp*/, 59312 /*Grove Viper*/, 59357 /*Bucktooth Flapper*/, 59384 /*Bluff Hawk*/, 59486 /*Bataari Banner Guard*/, 59577 /*Farmstead Slave*/, 59645 /*Cookie McYaungol*/, 59670 /*Highlands Mushan*/, 59671 /*Highlands Calf*/, 59672 /*Summit Bonestripper*/, 59779 /*Thunderpaw Guardian*/, 59796 /*Blueback Beaver*/, 59973 /*Stone Guardian*/, 61406 /*Race Spectator*/, 61407 /*Instructor Starbloom*/, 61446 /*Mosstide Crab*/, 61861 /*Eyan Gerdzu*/, 62195 /*Shang'gok*/, 62334 /*Greenstone Monk*/, 62649 /*Crimson Peony*/, 62650 /*White Orchid*/, 62930 /*Water Sprite*/, 63357 /*Greenstone Monk*/, 63467 /*Enraged Treant*/, 64398 /*Mistweaver Monk*/, 64612 /*Observer Owl*/, 64707 /*Doji*/, 64708 /*Challenger*/, 64732 /*Rok'nah Grunt*/, 65048 /*Tushui Trainee*/, 65051 /*Tushui Monk*/, 65474 /*Rok'nah Peon*/, 65494 /*Rok'nah Skirmisher*/, 65610 /*Airship Crewman*/, 65611 /*Airship Marine*/, 65614 /*Seed of Doubt*/, 65616 /*Orchard Needler*/, 65711 /*Siftworm*/, 65785 /*Sergeant Grud*/, 65807 /*Overseer Lurguk*/, 65841 /*Strongarm Private*/, 65880 /*Morgus Grimhatchet*/, 65881 /*Corporal Jackson Silver*/, 65905 /*Strongarm Lieutenant*/, 66000 /*Strongarm Ace*/, 66052 /*Captain Doren*/, 66218 /*Lo Don*/, 66226 /*Brew Runner*/, 66235 /*Fieldwatcher Mao*/, 66237 /*Kan the Spiritful*/, 66285 /*Thunder Hold Infantryman*/, 66287 /*Thunder Hold Lieutenant*/, 66288 /*Thunder Hold Sharp-Shooter*/, 66348 /*Thunder Hold Armsman*/, 66395 /*Thunder Hold Cannoneer*/, 66425 /*Sha Haunt*/, 66426 /*Sha Harbinger*/, 66484 /*Thunder Hold Laborer*/, 66634 /*Hellscream's Vanguard*/, 66668 /*Sha-Infested Prowler*/, 66793 /*Hellscream's Fist Engineer*/, 66928 /*Sha Shooter*/, 66948 /*Twisted Corpse*/, 67038 /*Hellscream's Fist Engineer*/, 67040 /*Hellscream's Fist Deckswabber*/, 67071 /*Wary Forest Prowler*/, 67084 /*Giant Siftworm*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54981 /*June Whiteblossom*/, 54982 /*Brewmaster Lei Kanglei*/, 66678 /*Krystel*/);
+UPDATE `creature_template` SET `npcflag`=721 WHERE `entry`=19186; -- Kylene
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (55028 /*Tian Trainee*/, 55199 /*Tian Instructor*/, 56812 /*Yu'lon Priest*/, 61067 /*Gao-Ran the Tempered*/, 61895 /*Marty*/, 61896 /*Josie*/, 63309 /*Tsu the Wanderer*/, 65008 /*Huojin Monk*/, 65066 /*Jojo Ironbrow*/, 65148 /*Shikyo*/, 66283 /*Captain Doren*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=55029; -- Tian Trainee
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.031746 WHERE `entry`=19192; -- Mistress of Doom
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=55030; -- Tian Trainee
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry` IN (55054 /*General Nazgrim*/, 55172 /*General Nazgrim*/, 65999 /*General Nazgrim*/, 66190 /*General Nazgrim*/);
+UPDATE `creature_template` SET `unit_flags2`=1107298304 WHERE `entry`=55091; -- General Purpose Bunny JMF (Look 2 - Flying, Infinite AOI)
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (55141 /*Shademaster Kiryn*/, 55170 /*Shokia*/, 63546 /*Zidormi*/, 64728 /*Kruntog*/, 66847 /*Shokia*/, 67252 /*Shademaster Kiryn*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=34816 WHERE `entry`=55146; -- Rivett Clutchpop
+UPDATE `creature_template` SET `npcflag`=4737 WHERE `entry`=19315; -- Supply Officer Isabel
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (55162 /*Sergeant Gorrok*/, 62462 /*Tseh Rah, Peacebloom Teamaster*/, 66214 /*Terrified Field Worker*/);
+UPDATE `creature_template` SET `npcflag`=66193, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=55180; -- Shademaster Kiryn
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry` IN (55183 /*Training Bag*/, 55184 /*Training Bag*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (55198 /*Tian Student*/, 55207 /*Tian Beer-Fetcher*/);
+UPDATE `creature_template` SET `npcflag`=66179, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=55233; -- Lin Windfur
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=55234; -- An Windfur
+UPDATE `creature_template` SET `unit_flags`=33555200 WHERE `entry` IN (55261 /*Darkmoon Parade Creature*/, 21427 /*Strider Jock*/, 23033 /*Invisible Stalker (Floating)*/, 24889 /*Rodin Quest Credit*/, 25510 /*1st Kvaldir Vessel (The Serpent's Maw)*/, 25511 /*2nd Kvaldir Vessel (The Kur Drakkar)*/, 25512 /*3rd Kvaldir Vessel (Bor's Hammer)*/, 25513 /*4th Kvaldir Vessel (Bor's Anvil)*/, 26726 /*Borean Tundra Air Elemental*/, 28206 /*[DND] L70ETC Drums*/, 28253 /*Mistwhisper Lightning Cloud*/, 28273 /*Arranged Crystal Formation Bunny*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=55267; -- Scared Pandaren Cub
+UPDATE `creature_template` SET `npcflag`=4736 WHERE `entry` IN (19436 /*Supply Master Broog*/, 19452 /*Quartermaster Drake*/, 26934 /*Everett McGill*/, 29035 /*Loomee*/, 32477 /*Chester Copperpot*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=55279; -- Shan'ze Spiritbinder
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (55288 /*Stonebound Destroyer*/, 58412 /*Shao-Tien Marauder*/, 63610 /*Shao-Tien Dominator*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (55290 /*Wayward Ancestor*/, 55565 /*Crane Hunter*/, 56447 /*Muck Snapper*/, 58411 /*Docile Porcupine*/, 58811 /*Jade Snapping Turtle*/, 59009 /*Frugal Gambi*/, 59010 /*Strong Assai*/, 59011 /*Strong Jeemu*/, 59110 /*Fox Pup*/, 59666 /*Emerald Turtle*/, 61374 /*Krik'thik Deep-Scout*/, 65839 /*Razorquill Porcupine*/, 66750 /*Nurse Shark*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (55291 /*Shan'ze Spiritclaw*/, 63691 /*Huo-Shuang*/, 65779 /*Shan'ze Spiritclaw*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.031746, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=19493; -- Ekkorash the Inquisitor
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (55368 /*Widow Greenpaw*/, 62913 /*Dave the Quick*/, 64734 /*Rok'nah Hag*/, 65507 /*Rok'nah Felcaster*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=25 WHERE `entry` IN (55370 /*General Purpose Bunny ZTO*/, 62167 /*General Purpose Bunny ZTO*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2099200 WHERE `entry` IN (55379 /*Torso Kill Credit Bunny*/, 55383 /*Arm Kill Credit Bunny*/, 55388 /*Shoulder Kill Credit Bunny*/, 55392 /*Head Kill Credit Bunny*/, 58979 /*Quest Sparkles on Pottery*/, 58996 /*Flies in Fort Grookin*/, 61125 /*Coin Bunny*/, 62545 /*Large Fire*/, 62870 /*Rocket Jumpers Shoreline Bunny*/, 62891 /*Rocket Jumpers Shoreline Bunny 02*/, 63058 /*Quest - Jade Forest (Lay of the Land Kill Credit 01) - JSB*/, 63059 /*Quest - Jade Forest (Lay of the Land Kill Credit 02) - JSB*/);
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=32768 WHERE `entry` IN (19543 /*Battle-Mage Dathric*/, 20409 /*Kirin'Var Apprentice*/, 20410 /*Rhonsus*/, 22462 /*Vindicator Haylen*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262912, `unit_flags2`=34816 WHERE `entry`=55401; -- Master Greenpaw
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=4196352, `VehicleId`=1776 WHERE `entry`=55403; -- Zin'Jun
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555264, `unit_flags2`=2048 WHERE `entry` IN (55404 /*Zin'Jun's Eye Socket*/, 61507 /*Zin'Jun's Left Hand*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33817344, `unit_flags2`=34816 WHERE `entry` IN (55412 /*Lifelike Jade Guardian*/, 55430 /*Suspicious Jade Statue*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262912, `unit_flags2`=34816 WHERE `entry`=55439; -- Jade Statue
+UPDATE `creature_template` SET `HoverHeight`=1 WHERE `entry` IN (55443 /*Goldwing*/, 23680 /*Plagued Proto-Dragon*/, 28378 /*Primordial Drake*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=2048 WHERE `entry`=55451; -- Shin
+UPDATE `creature_template` SET `npcflag`=643 WHERE `entry`=19617; -- Boots
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry` IN (55455 /*General Purpose Bunny (DLA)*/, 59114 /*Generic Bunny*/, 63420 /*SLG Generic MoP*/, 63572 /*Fire Tile Trap Bunny*/, 63574 /*Cloud Tile Trap Bunny*/, 63575 /*Arrow Tile Trap Bunny*/, 65283 /*Falling Debris*/, 66795 /*Gunship Fire Bunny*/, 67129 /*Rapelling Manfred*/, 67136 /*Exploding Manfred*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2099200, `VehicleId`=1782 WHERE `entry`=55463; -- Hozen Corpse Cluster
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=55464; -- Hozen Corpse
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (55470 /*Hozen Groundpounder*/, 55509 /*Konk*/, 55555 /*Hozen Mudflinger*/, 56240 /*Hozen Beastrunner*/, 56242 /*Hozen Chitterer*/, 58943 /*Hozen Gutripper*/, 58945 /*Hozen Nibstabber*/, 59713 /*Grookin Scamperer*/, 59730 /*Grookin Muckflick*/, 60476 /*Hozu Ambusher*/, 62537 /*Hozen Dangler*/, 65628 /*Lord Oona*/, 66917 /*Hozen Groundpounder*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=55480; -- Pei-Zhi
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=55486; -- Shan Jitong
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=55489; -- Ancient Spirit
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (55521 /*Rivett Clutchpop*/, 67250 /*Rivett Clutchpop*/);
+UPDATE `creature_template` SET `npcflag`=80, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=55522; -- Sergeant Gorrok
+UPDATE `creature_template` SET `npcflag`=82, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=55523; -- Shokia
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=67110912 WHERE `entry`=55610; -- Lurching Blossom
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=55622; -- Dook Ookem
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry` IN (55626 /*General Purpose Bunny (DLA)*/, 56563 /*Jade Mines Arrival Trigger*/, 61622 /*Jade Mines Cave-In Bunny*/, 66336 /*Thunder Hold Fire Effects Bunny*/, 66477 /*Thunder Hold Cannon Fire Effects Bunny*/, 66554 /*Alliance Barricade*/, 66555 /*Alliance Barricade*/, 66556 /*Alliance Barricade*/, 66688 /*Sha Tendrils*/, 66742 /*Thunder Hold Fire Effects Bunny - Scorched Ground*/, 66840 /*Brew bunny*/, 66857 /*Parachute Bunny*/, 67016 /*Ancient Statue Torso*/, 67017 /*Ancient Statue Arm*/, 67018 /*Ancient Statue Head*/, 67019 /*Ancient Statue Shoulder*/);
+UPDATE `creature_template` SET `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=4196352 WHERE `entry`=55674; -- Recovered Gyrocopter
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33555200 WHERE `entry`=19842; -- Invis KV Defender
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=55681; -- Ayor
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry`=19862; -- Urtrak
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (19863 /*Vengeful Unyielding*/, 19864 /*Vengeful Unyielding Captain*/, 20137 /*Vengeful Unyielding Footman*/, 20931 /*Tyrantus*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry`=19870; -- Invis KV Shield Generator
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `unit_flags`=768 WHERE `entry`=55720; -- Wildhammer Fact Checker
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33817344, `unit_flags2`=34816 WHERE `entry`=55760; -- Jade Statue
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (55788 /*Lo Wanderbrew*/, 56346 /*Foreman Mann*/, 56347 /*Hao Mann*/, 59173 /*Kai Wanderbrew*/, 59178 /*Lo Wanderbrew*/, 62321 /*Brewmaster Tzu*/);
+UPDATE `creature_template` SET `npcflag`=66179, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (55809 /*Peiji Goldendraft*/, 62322 /*Graceful Swan*/);
+UPDATE `creature_template` SET `speed_walk`=1.6 WHERE `entry` IN (19992 /*Bloodmaul Shaman*/, 20673 /*Swiftwing Shredder*/, 21238 /*Bloodmaul Drudger*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200 WHERE `entry` IN (20086 /*Netherstorm Triangulation Point One Trigger*/, 20114 /*Netherstorm Triangulation Point Two Trigger*/);
+UPDATE `creature_template` SET `npcflag`=2691 WHERE `entry`=20092; -- Dealer Hazzin
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry` IN (20102 /*Goblin Commoner*/, 25475 /*Mobu*/, 25503 /*Elder Mootoo*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.385714 WHERE `entry`=20159; -- Magister Aledis
+UPDATE `creature_template` SET `npcflag`=1665 WHERE `entry`=20194; -- Dealer Dunar
+UPDATE `creature_template` SET `npcflag`=19, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56065; -- Inkmaster Wei
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.289683, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944 WHERE `entry`=20229; -- Void Spawner - Quest - Void Ridge - Galaxis
+UPDATE `creature_template` SET `speed_run`=1.190476, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56070 /*Silkwood Stalker*/, 65622 /*Weeping Widow*/, 65653 /*Weeping Widow*/, 65658 /*Widowspawn*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=56180; -- Speckled Trout
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=1839 WHERE `entry`=56183; -- Engorged Crocolisk
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (56199 /*Lightwing Hunter*/, 56349 /*Puckish Sprite*/, 56396 /*Hungry Bloodtalon*/, 56401 /*Greenstone Nibbler*/, 56404 /*Greenstone Gorger*/, 56464 /*Greenstone Miner*/, 56829 /*Garden Moth*/, 58363 /*Honeykeeper*/, 58696 /*Garden Frog*/, 58698 /*Temple Snake*/, 59112 /*Dawnfeather Flyer*/, 59774 /*Ivory Starling*/, 61844 /*Rivett Clutchpop*/, 61845 /*Hellscream's Vanguard*/, 61866 /*Shokia*/, 61867 /*Kiryn*/, 61868 /*Zin'jun*/, 61869 /*Snuff*/, 62323 /*La the Gentle*/, 62325 /*Meila*/, 62326 /*Portly Shung*/, 62516 /*Greenstone Villager*/, 64576 /*Bandit*/, 64776 /*Masked Tanuki Pup*/, 64797 /*Zooey Snake*/, 64957 /*Vicious Wyvern*/, 65205 /*Gilded Moth*/, 65734 /*Enchanted Guardian*/, 66430 /*Ethan Graveborn*/, 66437 /*Arcanist Xu*/, 66449 /*Ang the Wise*/, 67131 /*Hellscream's Vanguard*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (56206 /*Pandriarch Windfur*/, 56209 /*Pandriarch Bramblestaff*/, 56210 /*Pandriarch Goldendraft*/, 62445 /*Ji Firepaw*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048 WHERE `entry` IN (56226 /*Gong of Hope*/, 56509 /*Alliance Camp*/, 56583 /*Dynamite Fishing Event Bunny ZTO*/, 56671 /*Jade Witch Fight Controller Bunny*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=56264; -- Grookin Whomper
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=2048 WHERE `entry`=56286; -- Enthralled Forest Prowler
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (56289 /*Riverstride Jinyu*/, 61181 /*Krik'thik Limbpincer*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56309 /*Grookin Wildtail*/, 64994 /*Go Go*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=56315; -- Jinyu Captive
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2150 WHERE `entry`=56329; -- Kher Shan
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=56336; -- Chief Kah Kah
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=34816 WHERE `entry` IN (56345 /*Lorewalker Cho*/, 59383 /*Old Man Misteye*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=56358; -- Eekle Eekle
+UPDATE `creature_template` SET `speed_walk`=1 WHERE `entry` IN (20551 /*Agent Araxes*/, 20907 /*Professor Dabiri*/, 22004 /*Leoroxx*/, 22312 /*Spiritcaller Dohgar*/);
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=0 WHERE `entry`=20553; -- Image of Commander Ameer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=0 WHERE `entry`=20599; -- Lured Colossus
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587968 WHERE `entry`=20618; -- Mana Invader
+UPDATE `creature_template` SET `speed_walk`=0.777776, `speed_run`=0.9920629 WHERE `entry`=20801; -- Silroth
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.388889 WHERE `entry`=20803; -- Overmaster Grindgarr
+UPDATE `creature_template` SET `npcflag`=4227, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56705; -- Singegruff
+UPDATE `creature_template` SET `npcflag`=723, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56707; -- Chin
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56768 /*Dawn Watcher*/, 56775 /*Lee*/, 56776 /*Pan*/, 59160 /*Master Windfur*/, 62393 /*Ao Jian*/, 64037 /*Kichi of the Hundred Kegs*/, 64324 /*Anglers Fisherman*/, 64326 /*Anglers Fisherwoman*/, 64382 /*Thunderpaw Initiate*/, 64394 /*Mistweaver Chun*/, 64694 /*Sam the Wise*/, 64695 /*Mei Li-Sa*/, 64735 /*Rok'nah Headhunter*/, 66228 /*Tau Be*/, 66231 /*Sona Morningbreeze*/, 66232 /*Puya*/, 66233 /*Pio*/, 66234 /*Mitsua*/, 66239 /*Aimee Morningbreeze*/, 66265 /*Lu Jon Sun*/);
+UPDATE `creature_template` SET `npcflag`=145, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56777; -- Ni Gentlepaw
+UPDATE `creature_template` SET `npcflag`=641, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56778 /*Yol*/, 58827 /*Ka Saltboil*/, 61640 /*Chef Kyel*/, 64331 /*Bry Lang*/, 64365 /*Mili Wanderbrew*/, 66238 /*Herim Woo*/);
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56798; -- Tamed Serpent
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=1916 WHERE `entry`=56931; -- Bamboo Tree Branch
+UPDATE `creature_template` SET `npcflag`=641 WHERE `entry`=21172; -- Sarinei Whitestar
+UPDATE `creature_template` SET `unit_flags`=295680 WHERE `entry`=21349; -- T'chali the Witch Doctor
+UPDATE `creature_template` SET `unit_flags`=2147778560 WHERE `entry` IN (21416 /*Lakaan*/, 31012 /*Iceskin Sentry*/);
+UPDATE `creature_template` SET `unit_flags`=33555264 WHERE `entry`=21426; -- Gnome Defender - 209
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57316 /*Yu'lon Adept*/, 66286 /*Thunder Hold Mender*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=57319; -- Elder Sage Storm-Sing
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=21483; -- Tasaldan
+UPDATE `creature_template` SET `npcflag`=640, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=21484; -- Embelar
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=1935, `HoverHeight`=5.4 WHERE `entry`=57445; -- War Serpent
+UPDATE `creature_template` SET `speed_run`=1.385714 WHERE `entry` IN (21661 /*Cabal Skirmisher*/, 26448 /*Stars' Rest Sentinel*/);
+UPDATE `creature_template` SET `unit_flags`=2147745792 WHERE `entry`=21710; -- Uylaru
+UPDATE `creature_template` SET `unit_flags`=33587456 WHERE `entry`=21837; -- Summoned Wrath Hound
+UPDATE `creature_template` SET `speed_walk`=1.111112 WHERE `entry`=57864; -- Alurmi
+UPDATE `creature_template` SET `npcflag`=4737, `speed_walk`=1, `speed_run`=0.8571429 WHERE `entry`=22099; -- Wyrmcult Provisioner
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.9920629 WHERE `entry`=22110; -- Tethik
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57958 /*Wild Carp*/, 64359 /*Saltscale Carp*/);
+UPDATE `creature_template` SET `npcflag`=130 WHERE `entry` IN (22208 /*Nasmara Moonsong*/, 22212 /*Andrion Darkspinner*/, 22213 /*Gidge Spellweaver*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=34816 WHERE `entry`=58168; -- Training Target
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.8571429, `unit_flags`=32768 WHERE `entry`=22374; -- Hand of Kargath
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=32768 WHERE `entry`=22386; -- Watcher Moonshade
+UPDATE `creature_template` SET `unit_flags`=33024, `unit_flags2`=4196352 WHERE `entry`=22441; -- Teribus the Cursed
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256 WHERE `entry`=22452; -- Reanimated Exarch
+UPDATE `creature_template` SET `npcflag`=4194433, `speed_walk`=1 WHERE `entry`=22468; -- Ogrin
+UPDATE `creature_template` SET `npcflag`=3203 WHERE `entry`=22479; -- Sab'aoth
+UPDATE `creature_template` SET `speed_walk`=1.388888, `speed_run`=0.4960314, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=67143680 WHERE `entry`=58362; -- Orchard Beehive
+UPDATE `creature_template` SET `npcflag`=4225, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=58414; -- San Redscale
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2131968 WHERE `entry`=58440; -- Race Pennant
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58448 /*Black Bengal Goat*/, 59103 /*Forest Cub*/, 60242 /*Wild Mountain Goat*/, 61809 /*Green Dragon Turtle*/, 62106 /*Great Red Dragon Turtle*/, 64729 /*Rok'nah Raider*/, 65058 /*Black Dragon Turtle*/, 65060 /*Blue Dragon Turtle*/, 65061 /*Brown Dragon Turtle*/, 65063 /*Purple Dragon Turtle*/, 65065 /*Red Dragon Turtle*/, 65071 /*Great Green Dragon Turtle*/, 65072 /*Great Black Dragon Turtle*/, 65074 /*Great Blue Dragon Turtle*/, 65076 /*Great Brown Dragon Turtle*/, 65078 /*Great Purple Dragon Turtle*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58450 /*White Crane*/, 58694 /*Ink-Tipped Crane*/, 59105 /*Wandering Greenback*/, 59787 /*Sunrise Crane*/, 66284 /*Thunder Hold Laborer*/);
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=4.95 WHERE `entry` IN (58516 /*Agara the Red*/, 58517 /*Hyacinth*/, 58518 /*Li Ying*/, 58519 /*Sun*/, 58520 /*Cinder*/, 64486 /*Cloud Serpent*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=34816 WHERE `entry`=58530; -- Finish Line
+UPDATE `creature_template` SET `speed_run`=0.8571429 WHERE `entry` IN (22816 /*Black Cat*/, 28961 /*Titanium Siegebreaker*/, 28965 /*Titanium Thunderer*/, 30095 /*Dalaran Sewer Turtle*/, 32820 /*Wild Turkey*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry` IN (58693 /*Mistfall Worker*/, 59999 /*Bunny: Mogu Marauders*/, 61696 /*Human Miner*/, 63934 /*Mistfall Villager*/, 63935 /*Mistfall Villager*/, 65795 /*Golden Lotus Guard*/, 65796 /*Golden Lotus Guard*/);
+UPDATE `creature_template` SET `speed_run`=2.142857, `unit_flags2`=2099200 WHERE `entry`=22980; -- Skyguard Scout
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4196352 WHERE `entry`=58895; -- Sungraze Behemoth
+UPDATE `creature_template` SET `npcflag`=2177 WHERE `entry`=23112; -- Mingo
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=4196352 WHERE `entry`=59015; -- Dynamite Fishing Bunny ZTO/JLR
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537165824, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=59104; -- Shrine Elk
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry` IN (59113 /*Generic Bunny*/, 59115 /*Generic Bunny*/, 65663 /*Sha Bunny 1*/, 65666 /*Sha Bunny 2*/, 65667 /*Sha Bunny 3*/, 65755 /*Honey Bunny*/, 65770 /*Stormcaller Bunny*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200, `HoverHeight`=8 WHERE `entry`=59158; -- Subjugated Serpent
+UPDATE `creature_template` SET `npcflag`=8193, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=59186; -- Keg Runner Lee
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59483 /*Ur-Bataar*/, 63989 /*Saari*/, 64074 /*Tina Nguyen*/, 64075 /*Jai Maguri*/, 64111 /*Graceful Jessi*/, 64112 /*Keilan Hearthsong*/, 64113 /*David Guerrero*/, 64164 /*Ying Thunderspear*/, 64481 /*Priest Whitebrow*/, 64482 /*Healer Nan*/, 65574 /*Brad Rhodes*/, 65576 /*Philip Luke*/, 65577 /*Collin Gilbert*/, 65578 /*Vinnie Morrison*/, 65579 /*Eric Thibeau*/);
+UPDATE `creature_template` SET `speed_run`=2.857143, `HoverHeight`=5 WHERE `entry`=23665; -- Winterskorn Raider
+UPDATE `creature_template` SET `dynamicflags`=32 WHERE `entry`=23666; -- Winterskorn Berserker
+UPDATE `creature_template` SET `unit_flags`=570721024, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=23670; -- Winterskorn Elder
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry` IN (23674 /*Iron Rune Sage*/, 25488 /*Wooly Rhino Calf*/, 26271 /*Emaciated Mammoth Bull*/, 26816 /*Focus Wizard*/, 27953 /*Wyrmrest Protector*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200, `HoverHeight`=1 WHERE `entry` IN (23689 /*Proto-Drake*/, 24083 /*Enslaved Proto-Drake*/, 28467 /*Broodmother Slivina*/);
+UPDATE `creature_template` SET `npcflag`=83 WHERE `entry` IN (23734 /*Anchorite Yazmina*/, 35093 /*Wind Rider Jahubo*/);
+UPDATE `creature_template` SET `npcflag`=642 WHERE `entry`=23802; -- Wink Sprinklesprankle
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=59655; -- Wascally Wirmen
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=59679; -- Horde Yak
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=67143681, `dynamicflags`=32 WHERE `entry`=59685; -- Dead Highlands Mushan
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=59700; -- Northwind Hawk
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2078 WHERE `entry`=59720; -- Hozen Swing
+UPDATE `creature_template` SET `npcflag`=8193, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59732 /*Injar'i Lakebloom*/, 66227 /*Wing Hya*/);
+UPDATE `creature_template` SET `npcflag`=8192, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59733 /*Gingo Alebottom*/, 59735 /*Supplier Towsa*/, 59736 /*Studious Chu*/, 62903 /*Kite Master Nenshi*/);
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (59743 /*Silverhorn Stag*/, 59744 /*Silverhorn Yearling*/, 59745 /*Silverhorn Calf*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (59772 /*Smoky Porcupine*/, 64775 /*Masked Tanuki*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=59782; -- Cypress Condor
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=2048 WHERE `entry`=59788; -- Spirit Darter
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2088 WHERE `entry`=59883; -- Hozen Swing - Go Go
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=59961; -- Kuru the Light-Hearted
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=60035; -- Shao-Tien Tyrant
+UPDATE `creature_template` SET `npcflag`=80, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=34816, `HoverHeight`=4.5 WHERE `entry`=60166; -- Cloudrunner Leng
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_class`=1 WHERE `entry`=24411; -- Shattered Hand Centurion Image
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (60649 /*Black Lamb*/, 61071 /*Small Frog*/, 61080 /*Rabbit*/, 61081 /*Squirrel*/, 61141 /*Prairie Dog*/, 61143 /*Mouse*/, 61158 /*Shore Crab*/, 61160 /*Tiny Harvester*/, 61165 /*Fawn*/, 61167 /*Mountain Cottontail*/, 61168 /*Redridge Rat*/, 61169 /*Roach*/, 61255 /*Skunk*/, 61312 /*Strand Crab*/, 61313 /*Parrot*/, 61317 /*Long-tailed Mole*/, 61319 /*Beetle*/, 61326 /*Scorpid*/, 61366 /*Rat*/, 61368 /*Huge Toad*/, 61369 /*Toad*/, 61383 /*Lava Crab*/, 61384 /*Cockroach*/, 61440 /*Stripe-Tailed Scorpid*/, 61677 /*Mountain Skunk*/, 61689 /*Snow Cub*/, 61690 /*Alpine Hare*/, 61751 /*Hare*/, 61752 /*Brown Marmot*/, 61753 /*Maggot*/, 61757 /*Red-Tailed Chipmunk*/, 61827 /*Infected Fawn*/, 61828 /*Infected Squirrel*/, 61830 /*Festering Maggot*/, 61889 /*Undercity Rat*/, 61890 /*Blighted Squirrel*/, 62019 /*Cat*/, 62115 /*Dung Beetle*/, 62116 /*Creepy Crawly*/, 62118 /*Twilight Beetle*/, 62119 /*Robo-Chick*/, 62120 /*Rabid Nut Varmint 5000*/, 62121 /*Turquoise Turtle*/, 62129 /*Cheetah Cub*/, 62130 /*Giraffe Calf*/, 62176 /*Gazelle Fawn*/, 62178 /*Elfin Rabbit*/, 62189 /*Alpine Chipmunk*/, 62256 /*Stinkbug*/, 62312 /*Frog*/, 62313 /*Rusty Snail*/, 62314 /*Tainted Cockroach*/, 62316 /*Tainted Rat*/, 62370 /*Spotted Bell Frog*/, 62375 /*Diemetradon Hatchling*/, 62395 /*Nether Faerie Dragon*/, 62564 /*Sporeling Sprout*/, 62583 /*Warpstalker Hatchling*/, 62620 /*Clefthoof Runt*/, 62621 /*Fel Flame*/, 62625 /*Nether Roach*/, 62627 /*Fledgling Nether Ray*/, 62628 /*Scalded Basilisk Hatchling*/, 62664 /*Chicken*/, 62695 /*Borean Marmot*/, 62697 /*Oily Slimeling*/, 62815 /*Biletoad*/, 62816 /*Stunted Shardhorn*/, 62818 /*Grizzly Squirrel*/, 62819 /*Imperial Eagle Chick*/, 62820 /*Water Waveling*/, 62852 /*Dragonbone Hatchling*/, 62886 /*Fire-Proof Roach*/, 62887 /*Death's Head Cockroach*/, 62888 /*Nordrassil Wisp*/, 62892 /*Mac Frog*/, 62893 /*Locust*/, 62896 /*Leopard Scorpid*/, 62899 /*Tol'vir Scarab*/, 62924 /*Deepholm Cockroach*/, 62925 /*Crystal Beetle*/, 62927 /*Crimson Geode*/, 62953 /*Sea Gull*/, 62954 /*Stormwind Rat*/, 63585 /*Szechuan Chicken*/, 63841 /*Golden Civet*/, 63850 /*Effervescent Glowfly*/, 63919 /*Leopard Tree Frog*/, 63957 /*Yakrat*/);
+UPDATE `creature_template` SET `unit_flags2`=2052 WHERE `entry`=24901; -- Maddened Frosthorn
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (60761 /*Shore Crab*/, 61120 /*Wishing Frog*/, 63015 /*Tabbi*/, 63063 /*Shifty*/, 63074 /*Fluffy*/, 63085 /*Snappy*/, 64374 /*Nether Roach*/, 64577 /*The Fiddler*/, 64580 /*Cairo*/, 64774 /*Leopard Tree Frog*/, 64793 /*Prairie Mouse*/, 64794 /*Szechuan Chicken*/, 64801 /*Grassland Hopper*/, 64802 /*Yakrat*/, 65191 /*Mongoose*/, 65192 /*Mongoose Pup*/, 65204 /*Effervescent Glowfly*/, 65206 /*Golden Civet*/, 65207 /*Golden Civet Kitten*/, 65211 /*Yellow-Bellied Bullfrog*/, 66163 /*Cat*/);
+UPDATE `creature_template` SET `unit_flags`=2147746560 WHERE `entry` IN (24934 /*Snack-O-Matic IV*/, 24935 /*Vend-O-Tron D-Luxe*/, 35337 /*Bountiful Barrel*/, 35342 /*Bountiful Barrel*/);
+UPDATE `creature_template` SET `unit_flags`=2181300992 WHERE `entry`=25075; -- Zeppelin Controls
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (60925 /*Palewind Villager*/, 60929 /*Palewind Chief*/, 61561 /*Palewind Refugee*/, 65915 /*Strongarm Laborer*/, 66647 /*Thunder Hold Sharp-Shooter*/, 66648 /*Thunder Hold Lieutenant*/, 66650 /*Thunder Hold Infantryman*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=33556480 WHERE `entry`=60931; -- Training Target
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67108864, `unit_flags2`=2048 WHERE `entry`=60932; -- Ashfang Hyena
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (61017 /*Gao-Ran Blackguard*/, 61018 /*Gao-Ran Marksman*/, 61082 /*Gao-Ran Blackguard*/, 61083 /*Gao-Ran Blackguard*/, 61702 /*Gao-Ran Cannoneer*/, 64260 /*Shado-Pan Marksman*/, 64856 /*Sky Master Corpora*/, 64867 /*Kor'kron Shin*/, 64868 /*Kor'kron Dubs*/, 64869 /*Kor'kron Jo'mag*/, 64870 /*Kor'kron Spisak*/, 64871 /*Warbringer Ho'Gan*/, 64872 /*Sky Marshal Schwind*/, 64873 /*Cannoneer Powell*/, 64874 /*Cannoneer Buczacki*/, 66915 /*Kor'kron Elite*/, 67158 /*Kor'kron Elite*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=61019; -- Gao-Ran Magus
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=61088; -- Eternal Strider
+UPDATE `creature_template` SET `npcflag`=8192, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61121; -- Sharinga Springrunner
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (61142 /*Snake*/, 61253 /*Dusk Spiderling*/, 61318 /*Tree Python*/, 61325 /*Adder*/, 61327 /*Spider*/, 61329 /*Scorpling*/, 61367 /*Water Snake*/, 61372 /*Moccasin*/, 61385 /*Ash Viper*/, 61420 /*Ash Spiderling*/, 61439 /*Rattlesnake*/, 61443 /*King Snake*/, 62117 /*Twilight Spider*/, 62127 /*Emerald Boa*/, 62181 /*Topaz Shale Hatchling*/, 62182 /*Amethyst Shale Hatchling*/, 62184 /*Rock Viper*/, 62186 /*Desert Spider*/, 62435 /*Crystal Spider*/, 62523 /*Sidewinder*/, 62915 /*Emerald Shale Hatchling*/, 62922 /*Crimson Shale Hatchling*/, 63715 /*Jumping Spider*/);
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2099200 WHERE `entry` IN (25334 /*Horde Siege Tank*/, 27587 /*Alliance Steam Tank*/);
+UPDATE `creature_template` SET `unit_flags`=768, `unit_flags2`=2097152 WHERE `entry`=25349; -- Scourge Plague Spreader
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (61257 /*Black Rat*/, 61328 /*Fire Beetle*/, 61386 /*Lava Beetle*/, 62641 /*Fjord Rat*/, 62885 /*Carrion Rat*/, 62921 /*Stowaway Rat*/);
+UPDATE `creature_template` SET `unit_flags`=33536 WHERE `entry`=25504; -- Mootoo the Younger
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61404; -- Kor'kron Elite
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=61408; -- Adarogg
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=2.8 WHERE `entry`=61410; -- Young Cloud Serpent
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=61412; -- Dark Shaman Koranthal
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry`=61413; -- Flame Visual
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=1.111112, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=61425; -- Molten Hatchling
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=67110912 WHERE `entry`=61426; -- Shado-Pan Spike Trap
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.4, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (61441 /*Spiky Lizard*/, 62114 /*Spiny Lizard*/, 62364 /*Ash Lizard*/, 62894 /*Horned Lizard*/, 63547 /*Plains Monitor*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=136316928, `VehicleId`=2206 WHERE `entry`=61463; -- Slagmaw
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=61466; -- Krik'thik Scentlayer
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (61470 /*Septi the Herbalist*/, 63296 /*Gato*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=61528; -- Lava Guard Gordoth
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570458880, `unit_flags2`=67110912 WHERE `entry`=61535; -- Hozen Corpse
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry` IN (61560 /*Lava*/, 61601 /*Lava*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=33024 WHERE `entry`=25730; -- En'kilah Necrolord
+UPDATE `creature_template` SET `speed_walk`=1.555556, `unit_flags`=33536 WHERE `entry`=25742; -- Alluvius
+UPDATE `creature_template` SET `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry`=25748; -- Oil-covered Hawk
+UPDATE `creature_template` SET `unit_flags`=33554688 WHERE `entry`=25768; -- Lord Kryxix
+UPDATE `creature_template` SET `speed_walk`=1.555556, `unit_class`=2, `unit_flags`=33555200 WHERE `entry`=25769; -- Small Elemental
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry`=25771; -- Ice Elemental Target
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry`=61630; -- Ground Runes
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (61644 /*Dark Shaman Researcher*/, 61672 /*Dark Shaman Acolyte*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=61650; -- Big Keech
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (61657 /*Adolescent Flame Hound*/, 61658 /*Mature Flame Hound*/, 61666 /*Corrupted Houndmaster*/, 61678 /*Corrupted Reaver*/, 61705 /*Corrupted Flamecaller*/, 64356 /*Bluewater Shark*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570458880, `unit_flags2`=526337, `dynamicflags`=32 WHERE `entry`=61659; -- Slain Trogg
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=536904448, `unit_flags2`=526337, `dynamicflags`=32 WHERE `entry`=61669; -- Oggleflint
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721088, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=61680; -- Kor'kron Scout
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=61716; -- Invoker Xorenth
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61724; -- Commander Bagran
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2050 WHERE `entry`=61746; -- Dragon Launcher
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=33556481, `dynamicflags`=32 WHERE `entry`=61754; -- Krik'thik Limbpincer
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67143680 WHERE `entry` IN (61780 /*Suspicious Rock*/, 61790 /*Inconspicuous Crate*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=4194304 WHERE `entry`=61795; -- Dancing Flames
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=69208064 WHERE `entry`=61800; -- Magnaw's Head
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=61829; -- Bat
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (61834 /*Alyn Black*/, 61836 /*Moni Widdlesprock*/, 61837 /*Leria Nightwind*/, 61839 /*Lucas Severing*/, 61840 /*Naanae*/, 61841 /*Brunn Goldenmug*/, 62193 /*Rok'kal*/, 62196 /*Flekky Nox*/, 62197 /*Zazzle*/, 62198 /*Omakka Wolfbrother*/, 64733 /*Rok'nah Loa-Singer*/, 65510 /*Rok'nah Wave-Caller*/, 65786 /*Wave-Caller Zulga*/, 65842 /*Strongarm Medic*/, 65883 /*Gyro-Mechanic Lavenderp*/, 66446 /*Thunder Hold Mender*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (61838 /*Gavin Marlsbury*/, 62194 /*Ukos Bloodwhisper*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024 WHERE `entry`=61846; -- Gorrok
+UPDATE `creature_template` SET `speed_walk`=8, `speed_run`=5.714286 WHERE `entry`=26040; -- Fezzix's Flying Machine
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=1.111112, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=61905; -- Lost of Lordaeron
+UPDATE `creature_template` SET `unit_flags`=33587968 WHERE `entry`=26097; -- Fizzcrank Gnome Ghost
+UPDATE `creature_template` SET `unit_flags`=512, `unit_flags2`=2099200 WHERE `entry` IN (26261 /*Grizzly Hills Giant*/, 26510 /*Tu'u'gwar*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=62131; -- Plainsland Cheetah
+UPDATE `creature_template` SET `npcflag`=1073741824, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (62177 /*Forest Moth*/, 62315 /*Tainted Moth*/, 62373 /*Silky Moth*/, 62895 /*Oasis Moth*/, 62916 /*Fungal Moth*/, 62999 /*Temple Snake*/, 63002 /*Garden Frog*/, 63555 /*Zooey Snake*/, 63716 /*Masked Tanuki Pup*/, 63838 /*Gilded Moth*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=62199; -- Gogu
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=62200; -- Sasi
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.4, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=62255; -- Twilight Iguana
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166336, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (62276 /*Fear-Stricken Sentinel*/, 62281 /*Fear-Stricken Sentinel*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048, `VehicleId`=2229 WHERE `entry`=62277; -- Fear-Stricken Sentinel
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048, `VehicleId`=2230 WHERE `entry`=62282; -- Fear-Stricken Sentinel
+UPDATE `creature_template` SET `speed_run`=1.289683, `unit_flags`=32768 WHERE `entry`=26450; -- Ariut
+UPDATE `creature_template` SET `speed_run`=1.071429, `unit_flags`=32768 WHERE `entry`=26451; -- Ragnar Drakkarlund
+UPDATE `creature_template` SET `unit_flags`=832, `unit_flags2`=2099200, `dynamicflags`=0 WHERE `entry`=26475; -- Magmawyrm
+UPDATE `creature_template` SET `speed_walk`=0.888888 WHERE `entry`=26477; -- Dead Mage Hunter
+UPDATE `creature_template` SET `npcflag`=16, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=62327; -- Scribe Rinji
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=62328; -- Woodcarver Liupo
+UPDATE `creature_template` SET `speed_run`=1.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=2048 WHERE `entry`=62396; -- Shado-Pan Tiger
+UPDATE `creature_template` SET `npcflag`=1048577, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (62415 /*Silvershard Emissary*/, 62416 /*Silvershard Envoy*/, 62423 /*Huojin Envoy*/, 62424 /*Huojin Envoy*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=536904448, `unit_flags2`=2048 WHERE `entry`=62419; -- Aysa Cloudsinger
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (62421 /*Tushui Emissary*/, 62422 /*Tushui Emissary*/, 65735 /*Sapling of Lore*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=62425; -- Liu of the Bottomless Tankard
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2048 WHERE `entry` IN (62438 /*Injured Gao-Ran Defender*/, 62439 /*Injured Gao-Ran Defender*/);
+UPDATE `creature_template` SET `unit_flags`=320 WHERE `entry`=26620; -- Drakkari Guardian
+UPDATE `creature_template` SET `unit_flags`=33088, `unit_flags2`=2099200 WHERE `entry`=26626; -- Scourge Reanimator
+UPDATE `creature_template` SET `unit_flags`=33587200 WHERE `entry` IN (26645 /*Fizzcrank Engineering Crew*/, 28161 /*Chicken Escapee*/, 30385 /*Twilight Volunteer*/);
+UPDATE `creature_template` SET `npcflag`=2, `unit_flags2`=2099200 WHERE `entry`=26654; -- Roanauk Icemist
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2251 WHERE `entry`=62536; -- Hozen Dangler VEHICLE
+UPDATE `creature_template` SET `unit_flags2`=2099201 WHERE `entry` IN (26761 /*Crazed Mana-Wyrm*/, 28884 /*Scarlet Fleet Guardian*/, 33183 /*Bathran's Corpse*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (62648 /*Turkey*/, 63003 /*Masked Tanuki*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=1.2, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=62669; -- Fjord Worg Pup
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=62693; -- Arctic Hare
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=26943; -- Battered Drakkari Berserker
+UPDATE `creature_template` SET `npcflag`=1152 WHERE `entry`=26945; -- Zend'li Venomtusk
+UPDATE `creature_template` SET `npcflag`=134217728, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=62821; -- Mystic Birdhat
+UPDATE `creature_template` SET `npcflag`=6784, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=62822; -- Cousin Slowhands
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=62835; -- Tundra Penguin
+UPDATE `creature_template` SET `npcflag`=66177, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (62867 /*Bolo the Elder*/, 62875 /*Kim the Quiet*/, 66236 /*Brewmother Kiki*/);
+UPDATE `creature_template` SET `npcflag`=65537, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=62868; -- Lana the Sea Breeze
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133056, `unit_flags2`=67110913, `dynamicflags`=32, `HoverHeight`=5 WHERE `entry`=62918; -- Goblin Recovery Drone
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912, `HoverHeight`=1.25 WHERE `entry`=62920; -- Ice Thorn
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67143680, `HoverHeight`=5 WHERE `entry`=62923; -- Empty Package
+UPDATE `creature_template` SET `npcflag`=65537, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=62975; -- Grookin Bed-Haver
+UPDATE `creature_template` SET `npcflag`=1073741824, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (62992 /*Bucktooth Flapper*/, 62998 /*Mirror Strider*/, 63004 /*Grove Viper*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=62994; -- Emerald Turtle
+UPDATE `creature_template` SET `npcflag`=643, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63013; -- Sway Dish Chef
+UPDATE `creature_template` SET `npcflag`=51, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=63014; -- Marcus Jensen
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=63027; -- Tumbleweed
+UPDATE `creature_template` SET `npcflag`=51, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (63061 /*Narzak*/, 63075 /*Grady Bannson*/, 63086 /*Matty*/);
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.9920629 WHERE `entry`=27290; -- Hungering Dead
+UPDATE `creature_template` SET `BaseAttackTime`=1538 WHERE `entry`=27342; -- Bloodpaw Warrior
+UPDATE `creature_template` SET `unit_flags`=33536, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=27400; -- Forsaken Prisoner
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (63258 /*Bao*/, 63272 /*Ting, Strong of Stomach*/, 66660 /*Ellie Honeypaw*/, 66662 /*Gi-Oh*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=63310; -- Zabrax
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912 WHERE `entry`=63320; -- Mist
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912 WHERE `entry` IN (63321 /*Lorewalker Chang*/, 63322 /*Lorewalker Chi Chi*/, 63323 /*Lorewalker Lola*/, 63324 /*Lorewalker Chong*/, 63326 /*Lorewalker Cheech*/);
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2099200, `dynamicflags`=0 WHERE `entry`=27530; -- Ruby Keeper
+UPDATE `creature_template` SET `unit_flags`=33040 WHERE `entry`=27540; -- Fordragon Marksman
+UPDATE `creature_template` SET `speed_run`=1.142857, `unit_flags2`=2048 WHERE `entry`=27553; -- Kor'kron Vanguard
+UPDATE `creature_template` SET `unit_flags2`=2099200, `HoverHeight`=12.5 WHERE `entry`=27608; -- Azure Dragon
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=67635200 WHERE `entry` IN (63447 /*Mogu Statue*/, 63556 /*Mogu Statue*/);
+UPDATE `creature_template` SET `unit_flags`=768, `unit_flags2`=2099200 WHERE `entry` IN (27619 /*Prince Valanar*/, 32576 /*Orabus the Helmsman*/, 32577 /*Kvaldir Crewman*/, 32578 /*Kvaldir Crewman*/, 32579 /*Kvaldir Crewman*/, 32580 /*Kvaldir Crewman*/);
+UPDATE `creature_template` SET `speed_run`=2.571429, `unit_flags2`=2099200 WHERE `entry`=27638; -- Azure Ring Guardian
+UPDATE `creature_template` SET `speed_run`=0.4285714 WHERE `entry`=27641; -- Centrifuge Construct
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048, `VehicleId`=2321 WHERE `entry`=63562; -- Mogu Statue Mount Bunny
+UPDATE `creature_template` SET `unit_flags`=33600 WHERE `entry`=27744; -- Infinite Agent
+UPDATE `creature_template` SET `npcflag`=51, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=63596; -- Audrey Burnhep
+UPDATE `creature_template` SET `unit_flags`=832, `unit_flags2`=2099200 WHERE `entry`=27766; -- Image of Kel'Thuzad
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags2`=2099200 WHERE `entry`=27768; -- Image of Razuvious
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=67635200 WHERE `entry`=63605; -- Stonebound Watcher
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2048 WHERE `entry`=63607; -- Squirrel
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=63611; -- Shao-Tien Soul-Caller
+UPDATE `creature_template` SET `speed_walk`=0.8, `unit_flags2`=2099200 WHERE `entry`=27779; -- Image of Noth
+UPDATE `creature_template` SET `npcflag`=51, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=63626; -- Varzok
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63674; -- Mogu Statue
+UPDATE `creature_template` SET `npcflag`=16777216, `unit_flags2`=2099200 WHERE `entry`=27852; -- Wintergrasp Control Arms
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry`=63742; -- Grookin Pounder
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=1073776640 WHERE `entry`=63748; -- Jeek Jeek
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=63764; -- Battleworn Paratrooper
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=6293504 WHERE `entry`=63768; -- Flare Bunny
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=0.7142857, `unit_flags`=33554432, `unit_flags2`=2099200, `VehicleId`=311 WHERE `entry`=27939; -- The Helmsman's Ship
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (63782 /*Battleworn Paratrooper*/, 65151 /*Captain Seahoof*/, 65152 /*Captain Korthok*/, 65154 /*Blood Guard Grunk*/, 65609 /*Sky-Captain "Dashing" Dazrip*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=4196352 WHERE `entry`=63809; -- Jack Arrow
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2048, `VehicleId`=2344 WHERE `entry`=63899; -- Widing Toortle
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (63900 /*Toortle Wider*/, 64696 /*Ty*/, 64697 /*Liu*/, 66368 /*Carrion Vulture*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=0.9920629, `unit_flags`=33536 WHERE `entry`=28105; -- Warlord Tartek
+UPDATE `creature_template` SET `unit_flags`=570720512 WHERE `entry`=28113; -- Mosswalker Victim
+UPDATE `creature_template` SET `npcflag`=131072, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (63967 /*Vaultkeeper Shan*/, 63970 /*Vaultkeeper Melka*/, 64023 /*Vaultkeeper Pieta*/, 64024 /*Vaultkeeper Silverpaw*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=35653633, `dynamicflags`=32 WHERE `entry`=63974; -- Krik'thik Locust-Guard
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry`=63977; -- Vyraxxis
+UPDATE `creature_template` SET `npcflag`=4194433, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63988; -- Jaul Hsu
+UPDATE `creature_template` SET `npcflag`=131, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64028; -- Challenger Soong
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64029 /*Elder Lin*/, 64144 /*Brewmaster Tsu*/, 64484 /*Instructor Windspear*/);
+UPDATE `creature_template` SET `npcflag`=4227, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64032; -- Sage Whiteheart
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64042 /*Hara Alebelly*/, 64076 /*Bonni Chang*/, 64099 /*Pink Peony*/, 64101 /*Taijing the Cyclone*/, 64129 /*Wilhem Ken*/, 64130 /*Michael Bedernik*/, 64146 /*Collin Gooddreg*/);
+UPDATE `creature_template` SET `npcflag`=134217728, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=64045; -- Thaumaturge Faraket
+UPDATE `creature_template` SET `BaseAttackTime`=1250, `unit_flags`=32768 WHERE `entry`=28213; -- Hardknuckle Matriarch
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64052 /*Raishen the Needle*/, 64077 /*Kergan Swiftbeard*/, 64080 /*Clara Henry*/, 64081 /*Veronica Faraday*/, 64082 /*Tommy Tinkerspade*/, 64083 /*Apothecary Greenmoss*/, 64084 /*Jojo*/, 64092 /*Murphy Diremoor*/, 64094 /*Tanner Pang*/, 64096 /*Serenka*/, 64557 /*Aster*/);
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry` IN (28230 /*Nozronn's Eye*/, 28256 /*Voice of Nozronn*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64071 /*Zhen Zhen Wang*/, 64072 /*Omar Gonzalez*/, 64073 /*Andrea Toyas*/, 64108 /*Ann Stockton*/, 64110 /*Marsha Stockton*/, 64115 /*Scott Smith*/, 64116 /*Ian Gerdes*/, 64117 /*Soignera Strongbow*/, 64120 /*Jasso Strongbow*/, 64123 /*Whippie Jennson*/, 64124 /*Kata Arina*/, 64135 /*Narei Summersky*/, 64136 /*Raoshan the Eagleclaw*/, 64137 /*Heiran Stonebelly*/, 64138 /*Donnelly Firecask*/, 64139 /*Dao Ironplow*/, 64140 /*Waina Steelpaw*/, 64141 /*Merra Finklestorm*/, 64147 /*Duinn Steelbrew*/, 64148 /*Fitz Togglescrew*/, 64153 /*Coincounter Cammi*/, 64154 /*Historian Jenji*/, 64155 /*Historian Winterfur*/, 64156 /*Hans Shuffleshoe*/, 64157 /*Vamuu*/, 64159 /*Armorer Kisha*/, 64160 /*Frostflower*/, 64161 /*Jonathan Le Karf*/, 64166 /*Yuma Ironkettle*/, 64167 /*Shing Lightningpaw*/, 64168 /*Vienh Stormbrew*/, 64169 /*Ranna*/, 64170 /*Keri Reynolds*/, 64171 /*Isaac Eppstein*/, 64172 /*Advisor Kosa*/, 64173 /*Apo the Joyful Heart*/, 64174 /*Jenessa Riverbreeze*/, 64483 /*Meglette*/, 64572 /*Sara Finkleswitch*/);
+UPDATE `creature_template` SET `npcflag`=2176, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64079; -- Yanyra Moonfell
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64085 /*Cullen Hammerbrow*/, 64090 /*Missy Pickwicker*/, 64097 /*Bero*/, 64480 /*Pera Firestone*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64104 /*Watershaper Sharu*/, 64476 /*Poolwatcher Gui*/, 64477 /*Riverwarden Tuushuu*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `unit_flags`=33555200 WHERE `entry`=28279; -- Sholazar Witch Light
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (64125 /*Zooey*/, 64175 /*Maia*/, 64176 /*Connor*/);
+UPDATE `creature_template` SET `npcflag`=65537, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64149; -- Matron Vi Vinh
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (64150 /*Master Zhang*/, 64152 /*Kiang Redwhisker*/);
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64158; -- Arenji
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=4194304 WHERE `entry`=28366; -- Wintergrasp Tower Cannon
+UPDATE `creature_template` SET `speed_run`=0.9523814 WHERE `entry` IN (28381 /*Shattertusk Calf*/, 31768 /*Stabled Hunter Pet*/);
+UPDATE `creature_template` SET `unit_flags`=570720256, `unit_flags2`=2049 WHERE `entry`=28394; -- Death Knight Initiate
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `unit_flags`=33536 WHERE `entry`=28399; -- Zeptek the Destroyer
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=2048 WHERE `entry`=64272; -- Jade Warrior Statue
+UPDATE `creature_template` SET `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (28464 /*Cultist Corpse*/, 31094 /*Knight of the Ebon Blade*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=64325; -- Junior Fisher
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64332; -- Aerial
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64333 /*Mrs. Lang*/, 65068 /*Old Whitenose*/, 66022 /*Turtlemaster Odai*/);
+UPDATE `creature_template` SET `npcflag`=641, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64342; -- Nip Nip
+UPDATE `creature_template` SET `npcflag`=129, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64343; -- Dip Dip
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=1, `dynamicflags`=32 WHERE `entry`=64345; -- Saltscale Carp
+UPDATE `creature_template` SET `npcflag`=641, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64366; -- Smiling Waiyu
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4196352, `HoverHeight`=20 WHERE `entry`=64403; -- Alani
+UPDATE `creature_template` SET `unit_flags`=294912, `unit_flags2`=2099200 WHERE `entry`=28576; -- Citizen of Havenshire
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.4285714, `BaseAttackTime`=4000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2065 WHERE `entry`=64479; -- Gatecrusher
+UPDATE `creature_template` SET `unit_flags`=2147779072 WHERE `entry` IN (28667 /*Jaloot*/, 28668 /*Zepik the Gorloc Hunter*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64508; -- Scrollmaker Resshi
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64522; -- Nik Gi
+UPDATE `creature_template` SET `npcflag`=65536 WHERE `entry`=28686; -- Caliel Brightwillow
+UPDATE `creature_template` SET `npcflag`=147 WHERE `entry`=28701; -- Timothy Jones
+UPDATE `creature_template` SET `npcflag`=16, `speed_run`=1.142857 WHERE `entry` IN (28704 /*Dorothy Egan*/, 29505 /*Imindril Spearsong*/, 29509 /*Namha Moonwater*/, 29513 /*Didi the Wrench*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=64570; -- Tan Strongpole
+UPDATE `creature_template` SET `npcflag`=268435456, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=64573; -- Warpweaver Ramahesh
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64615; -- Sentinel Striker
+UPDATE `creature_template` SET `speed_run`=1 WHERE `entry` IN (28833 /*Scarlet Cannon*/, 29802 /*Cosmetic Toy Plane*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=2099200 WHERE `entry` IN (64688 /*Crackling Flames*/, 64709 /*Theramore Embers Bunny*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=536903680, `unit_flags2`=34816 WHERE `entry`=64702; -- Loh-Ki
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33280, `unit_flags2`=1073743872 WHERE `entry`=64727; -- Lady Jaina Proudmoore
+UPDATE `creature_template` SET `speed_walk`=0.666668, `unit_flags2`=2049 WHERE `entry`=28891; -- Scarlet Miner
+UPDATE `creature_template` SET `unit_flags2`=2049 WHERE `entry` IN (28892 /*Scarlet Peasant*/, 28893 /*Scarlet Gryphon*/, 28895 /*Scarlet Medic*/, 28896 /*Scarlet Infantryman*/, 28898 /*Scarlet Captain*/, 29029 /*Scarlet Inquisitor*/);
+UPDATE `creature_template` SET `speed_run`=1.289683, `unit_flags`=32768 WHERE `entry`=28912; -- Koltira Deathweaver
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64761; -- Jumping Spider
+UPDATE `creature_template` SET `unit_flags`=295680, `unit_flags2`=2099200 WHERE `entry`=28952; -- Akali
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=64792; -- Plains Monitor
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (64795 /*Tolai Hare*/, 64796 /*Tolai Hare Pup*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `unit_flags`=32768 WHERE `entry`=28964; -- Scarlet Lord Jesseriah McCree
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry`=64852; -- Jade Sentinel
+UPDATE `creature_template` SET `unit_flags2`=0 WHERE `entry` IN (29032 /*Malar Bravehorn*/, 29061 /*Ellen Stanbridge*/, 29065 /*Yazmina Oakenthorn*/, 29067 /*Donovan Pulfrost*/, 29068 /*Goby Blastenheimer*/, 29070 /*Valok the Righteous*/, 29071 /*Antoine Brack*/, 29072 /*Kug Ironjaw*/, 29073 /*Iggy Darktusk*/, 29074 /*Lady Eonys*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=64900; -- Gash'nul
+UPDATE `creature_template` SET `BaseAttackTime`=2300, `unit_flags2`=2099200 WHERE `entry`=29102; -- Hearthglen Crusader
+UPDATE `creature_template` SET `speed_run`=1, `unit_flags2`=2099200 WHERE `entry`=29104; -- Scarlet Ballista
+UPDATE `creature_template` SET `speed_walk`=1.44444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200, `HoverHeight`=10 WHERE `entry`=64965; -- Milau
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=32800 WHERE `entry`=64984; -- Jade Serpent Statue
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=65003; -- Martar the Not-So-Smart
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.285714, `BaseAttackTime`=2000 WHERE `entry`=29174; -- Defender of the Light
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=32768 WHERE `entry`=65069; -- Training Target
+UPDATE `creature_template` SET `npcflag`=81, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (65092 /*Smeltmaster Ashpaw*/, 66222 /*Elder Muur*/, 66979 /*Stonebreaker Ruian*/, 66980 /*Grower Miao*/);
+UPDATE `creature_template` SET `npcflag`=17, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (65098 /*Mai the Jade Shaper*/, 65127 /*Lai the Spellpaw*/, 66981 /*Trapper Ri*/);
+UPDATE `creature_template` SET `npcflag`=4241, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65114; -- Len the Hammer
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry` IN (29308 /*Prince Taldaram*/, 31137 /*Frostbrood Skytalon*/, 32629 /*Wintergrasp Siege Turret*/, 33062 /*Salvaged Chopper*/, 34776 /*Siege Engine*/, 35069 /*Siege Engine*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=65153; -- General Hammond Clay
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=67635200 WHERE `entry`=65170; -- Jade Warrior
+UPDATE `creature_template` SET `npcflag`=32768, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=65183; -- Spirit Healer
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=65223; -- Death's Head Cockroach
+UPDATE `creature_template` SET `unit_flags2`=2099200, `HoverHeight`=2 WHERE `entry`=29453; -- Vargul Plaguetalon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=67110912 WHERE `entry`=65374; -- Lightning Breath
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry`=65442; -- Warlord Rok'nah
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=65444; -- Captain Mousson
+UPDATE `creature_template` SET `npcflag`=128, `speed_run`=1.142857 WHERE `entry`=29703; -- Sheddle Glossgleam
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (65548 /*Marine Anderson*/, 65549 /*Marine Halters*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=34816 WHERE `entry` IN (65566 /*Rat Bunny*/, 65583 /*Shock Bunny*/, 65585 /*Flame Bunny*/, 66307 /*Flame Bunny*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=34816 WHERE `entry`=65568; -- Crate
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=65571; -- Leaking Oil Drum
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (65596 /*Lil' Canny*/, 66876 /*Tyler Stockton*/);
+UPDATE `creature_template` SET `npcflag`=2097153, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=65599; -- H.A.R.V.E.Y.
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (65621 /*Oona Goon*/, 65623 /*Oona Tuna-Catcher*/, 65624 /*Oona Brewchugger*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=6000, `RangeAttackTime`=2000 WHERE `entry`=65634; -- Widow's Web
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=18432 WHERE `entry`=65641; -- Misguided Serpent
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570688256, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=65643; -- Sabotaged Tank
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=2048 WHERE `entry`=65644; -- [DND] Mana Bomb Bunny
+UPDATE `creature_template` SET `speed_run`=1.289683, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry`=65680; -- Summoned Water Elemental
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65716; -- Mishi
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048, `HoverHeight`=4.05 WHERE `entry` IN (65731 /*Jade Cloud Serpent*/, 65732 /*Azure Cloud Serpent*/, 65733 /*Golden Cloud Serpent*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=4196352 WHERE `entry`=65743; -- General Purpose Bunny (Gigantic AOI) (DLA)
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=102795264 WHERE `entry`=65762; -- Shao-Tien Cannon
+UPDATE `creature_template` SET `unit_flags`=2181300224 WHERE `entry`=29929; -- Mechano-Hog
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048, `VehicleId`=2433 WHERE `entry`=65789; -- Corpse Pile Bunny
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry`=65794; -- Wayward Ancestor
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry` IN (65804 /*Golden Lotus Guard*/, 65817 /*Mistfall Villager*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33556480, `VehicleId`=2439 WHERE `entry`=65810; -- Shao-Tien Soul-Render
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=100665344 WHERE `entry`=65816; -- Granite Quilen
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2048 WHERE `entry`=65840; -- Strongarm Airman
+UPDATE `creature_template` SET `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=2445 WHERE `entry`=65843; -- Strongarm Gyrocopter
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2449 WHERE `entry`=65882; -- Master Engineer Cogswing
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65906; -- Strongarm Laborer
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65928; -- Ordo Raider
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=65974; -- Pandaren Volunteer
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2097152, `VehicleId`=246 WHERE `entry`=30236; -- Argent Cannon
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (66126 /*Zunta*/, 66442 /*Zoltan*/, 66452 /*Kela Grimtotem*/, 66466 /*Stone Cold Trixxy*/, 66515 /*Kortas Darkhammer*/, 66550 /*Nicki Tinytech*/, 66552 /*Narrok*/, 66635 /*Beegle Blastfuse*/, 66638 /*Okrut Dragonwaste*/, 66741 /*Aki the Chosen*/, 66815 /*Bordin Steadyfist*/, 66819 /*Brok*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (66135 /*Dagra the Fierce*/, 66136 /*Analynn*/, 66352 /*Traitor Gluk*/);
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (66144 /*Mumtar*/, 66154 /*Ripper*/, 66155 /*Springtail*/, 66156 /*Longneck*/, 66329 /*Flutterby*/, 66330 /*Oozer*/, 66331 /*Mister Pinch*/, 66361 /*Prancer*/, 66363 /*Rasp*/, 66364 /*Glimmer*/, 66443 /*Ultramus*/, 66444 /*Beamer*/, 66445 /*Hatewalker*/, 66454 /*Plague*/, 66455 /*Indigon*/, 66468 /*Blizzy*/, 66469 /*Frostmaw*/, 66531 /*Sploder*/, 66532 /*Goliath*/, 66533 /*ED-005*/, 66534 /*Fungor*/, 66535 /*Tripod*/, 66536 /*Glitterfly*/, 66537 /*Stompy*/, 66538 /*Dramaticus*/, 66539 /*Prince Wart*/, 66540 /*Cragmaw*/, 66541 /*Gnasher*/, 66542 /*Chomps*/, 66613 /*Warble*/, 66614 /*Gobbles*/, 66615 /*Dinner*/, 66616 /*Mort*/, 66618 /*Stitch*/, 66619 /*Spooky Strangler*/, 66624 /*Blight*/, 66626 /*Fleshrender*/, 66627 /*Cadavus*/, 66725 /*Whiskers*/, 66726 /*Stormlash*/, 66728 /*Chirrup*/, 66802 /*Fracture*/, 66804 /*Crystallus*/, 66805 /*Ruby*/, 66806 /*Incinderous*/, 66808 /*Kali*/, 66996 /*Sleet*/);
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (66145 /*Spike*/, 66453 /*Cho'guana*/, 66807 /*Ashtail*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2143 WHERE `entry`=30338; -- Ahn'kahar Swarmer
+UPDATE `creature_template` SET `speed_run`=1.357143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=512, `unit_flags2`=2048, `VehicleId`=2455 WHERE `entry`=66183; -- Gunship Turret
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry` IN (66200 /*Thunder Hold Soldier*/, 66291 /*Thunder Hold Soldier*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=66202; -- Thunder Hold Laborer
+UPDATE `creature_template` SET `speed_run`=1.357143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=104892416 WHERE `entry` IN (66203 /*Thunder Hold Cannon*/, 66210 /*Thunder Hold Explosive Barrel*/, 66394 /*Thunder Hold Cannon*/);
+UPDATE `creature_template` SET `npcflag`=4481, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66219; -- Kofa the Swift
+UPDATE `creature_template` SET `npcflag`=131, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66223; -- Elder Honeypaw
+UPDATE `creature_template` SET `npcflag`=4194433, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (66230 /*Su Mi*/, 66241 /*Hong the Kindly*/);
+UPDATE `creature_template` SET `npcflag`=4194435, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66247; -- Tigermaster Liu-Do
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=66293; -- Albino Riding Crane
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=67143680 WHERE `entry` IN (66308 /*Thunder Hold Munitions*/, 66654 /*Thunder Hold Supplies*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=100698112 WHERE `entry`=66320; -- Thunder Hold Explosive
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67143680 WHERE `entry`=66380; -- Swiftness Trap
+UPDATE `creature_template` SET `speed_walk`=0.64, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66418; -- Spotted Caterpillar
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=66447; -- Zoltanian Cultist
+UPDATE `creature_template` SET `speed_walk`=1.111112, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (66470 /*Tinygos*/, 66488 /*Obsidion*/, 66489 /*Veridia*/, 66490 /*Garnestrasz*/, 66620 /*Rot*/);
+UPDATE `creature_template` SET `unit_flags`=570688320, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=30659; -- Violet Hold Guard
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (66503 /*Thunder Hold Infantryman*/, 66505 /*Thunder Hold Armsman*/, 66506 /*Thunder Hold Cannoneer*/, 66507 /*Thunder Hold Sharp-Shooter*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (66551 /*Ras'an*/, 66553 /*Morulu The Elder*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=66636; -- Nearly Headless Jacob
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.8, `speed_run`=0.9920629, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=66639; -- Gutretch
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=66646; -- General Nazgrim
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=66649; -- Thunder Hold Mender
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=66651; -- Thunder Hold Laborer
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2131968 WHERE `entry`=66656; -- General Nazgrim
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=66667; -- Rivett Clutchpop
+UPDATE `creature_template` SET `speed_run`=1.357143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (66674 /*Gunship Turret*/, 66676 /*Gunship Turret*/, 66677 /*Gunship Turret*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=66694; -- General Nazgrim
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.5952386 WHERE `entry`=30872; -- Shadow Revenant
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66717; -- Beast-Haver Chi Chi
+UPDATE `creature_template` SET `speed_walk`=3.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=66743; -- Doubt
+UPDATE `creature_template` SET `npcflag`=3, `HoverHeight`=1 WHERE `entry`=30997; -- Chromie
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (66838 /*Kai-Lin Honeydew*/, 66841 /*Kai-Lin Honeydew*/);
+UPDATE `creature_template` SET `speed_walk`=1.111112, `speed_run`=0.4365086, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66881; -- Vale Strider
+UPDATE `creature_template` SET `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133824, `unit_flags2`=2099201, `dynamicflags`=32 WHERE `entry`=66896; -- Strongarm Gyrocopter
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2099200, `VehicleId`=2491 WHERE `entry`=66897; -- Strongarm Gyrocopter
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=66911; -- Lorbu Sadsummon
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2493 WHERE `entry`=66916; -- Hozen Dangler VEHICLE
+UPDATE `creature_template` SET `npcflag`=51, `speed_run`=1.385714, `unit_flags2`=2099200 WHERE `entry`=31084; -- Highlord Darion Mograine
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=66932; -- Akkalou
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.714286, `unit_flags2`=2099200 WHERE `entry`=31099; -- Patchwerk
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2099200 WHERE `entry`=31139; -- Pustulent Horror
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=66997; -- Drogar
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry` IN (67005 /*Fire Spirit*/, 67006 /*Water Spirit*/, 67007 /*Life Spirit*/);
+UPDATE `creature_template` SET `speed_run`=1.357143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry`=67032; -- Gunship Turret
+UPDATE `creature_template` SET `speed_run`=1.289683, `unit_flags`=32832 WHERE `entry`=31220; -- Plaguehoof
+UPDATE `creature_template` SET `speed_run`=1.289683, `unit_flags`=32832, `VehicleId`=265 WHERE `entry`=31221; -- Bloodsunder
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=67090; -- Pandaren Volunteer
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67149; -- Grookin Outrunner
+UPDATE `creature_template` SET `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (67150 /*Honeydew Village Guard*/, 67199 /*Arboretum Defender*/);
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=67170; -- Ironshaper Peng
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=67171; -- Lin the Brave
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000 WHERE `entry`=31900; -- Scourge Banner-Bearer
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `unit_flags`=256 WHERE `entry`=32321; -- Green Warrior
+UPDATE `creature_template` SET `unit_flags`=33555200, `unit_flags2`=4196352 WHERE `entry`=32347; -- Alumeth Summon Bunny
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629 WHERE `entry`=32572; -- Dragonblight Mage Hunter
+UPDATE `creature_template` SET `npcflag`=1048577, `unit_flags`=768 WHERE `entry` IN (32616 /*Alterac Valley Portal*/, 32621 /*Eye of the Storm Portal*/, 32622 /*Strand of the Ancients Portal*/, 32624 /*Warsong Gulch Portal*/);
+UPDATE `creature_template` SET `npcflag`=1048577 WHERE `entry`=32618; -- Arathi Basin Portal
+UPDATE `creature_template` SET `unit_flags2`=4327424 WHERE `entry`=32933; -- Left Arm
+UPDATE `creature_template` SET `unit_flags2`=4194305 WHERE `entry`=33059; -- Wrecked Demolisher
+UPDATE `creature_template` SET `unit_flags2`=2164736, `VehicleId`=340 WHERE `entry`=33113; -- Flame Leviathan
+UPDATE `creature_template` SET `unit_flags2`=6356992 WHERE `entry`=33114; -- Flame Leviathan Seat
+UPDATE `creature_template` SET `unit_flags2`=4261888 WHERE `entry` IN (33139 /*Flame Leviathan Turret*/, 33142 /*Leviathan Defense Turret*/);
+UPDATE `creature_template` SET `unit_flags2`=1073809408 WHERE `entry`=33143; -- Overload Control Device
+UPDATE `creature_template` SET `unit_flags2`=6291456 WHERE `entry`=33167; -- Salvaged Demolisher Mechanic Seat
+UPDATE `creature_template` SET `unit_flags2`=1075838976 WHERE `entry`=33186; -- Razorscale
+UPDATE `creature_template` SET `speed_walk`=0.9, `speed_run`=0.7714285, `BaseAttackTime`=200000 WHERE `entry`=33255; -- Titanium Stormlord
+UPDATE `creature_template` SET `npcflag`=16777216, `unit_flags2`=4196352 WHERE `entry`=33264; -- Ironwork Cannon
+UPDATE `creature_template` SET `unit_flags2`=2129952 WHERE `entry`=33288; -- Yogg-Saron
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags2`=2099200 WHERE `entry`=33412; -- Mimiron
+UPDATE `creature_template` SET `unit_flags`=262144, `unit_flags2`=2099200 WHERE `entry` IN (33433 /*Suit of Armor*/, 33567 /*Deathsworn Zealot*/, 33717 /*Azure Consort*/, 33719 /*Emerald Consort*/, 33720 /*Obsidian Consort*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=32832 WHERE `entry`=33437; -- King Llane
+UPDATE `creature_template` SET `unit_flags`=256, `unit_flags2`=2097152 WHERE `entry`=33441; -- The Lich King
+UPDATE `creature_template` SET `unit_flags2`=2097184 WHERE `entry`=33575; -- Channel Stalker Freya
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=2.857143, `unit_flags2`=2099200 WHERE `entry`=33576; -- Mimiron DB Target
+UPDATE `creature_template` SET `npcflag`=2193 WHERE `entry`=33633; -- Enchantress Andiala
+UPDATE `creature_template` SET `npcflag`=3217 WHERE `entry`=33674; -- Alchemist Kanhu
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=32832 WHERE `entry`=33776; -- Gondria
+UPDATE `creature_template` SET `unit_flags2`=4194304 WHERE `entry`=34161; -- Mechanostriker 54-A
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags2`=2131968 WHERE `entry`=34297; -- Kologarn
+UPDATE `creature_template` SET `VehicleId`=418 WHERE `entry`=34438; -- Riding Shotgun
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=1500 WHERE `entry`=34635; -- Kurak
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=33536 WHERE `entry`=34653; -- Bountiful Table Hostess
+UPDATE `creature_template` SET `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=34657; -- Jaelyne Evensong
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=34701; -- Colosos
+UPDATE `creature_template` SET `speed_run`=1, `unit_flags`=768 WHERE `entry`=34767; -- Limpet Mine
+UPDATE `creature_template` SET `speed_run`=0.8571429, `unit_flags`=33570816, `unit_flags2`=4196352 WHERE `entry` IN (34777 /*Siege Turret*/, 34778 /*Flame Turret*/);
+UPDATE `creature_template` SET `speed_run`=2.428571, `unit_flags2`=4196352 WHERE `entry`=34793; -- Catapult
+UPDATE `creature_template` SET `unit_flags`=295168 WHERE `entry`=34830; -- Defiant Troll
+UPDATE `creature_template` SET `unit_flags2`=35653632 WHERE `entry` IN (34835 /*Bruno Flameretardant*/, 34876 /*Frankie Gearslipper*/, 34877 /*Jack the Hammer*/, 34878 /*Sudsy Magee*/);
+UPDATE `creature_template` SET `speed_run`=1.142857, `unit_flags2`=2099200 WHERE `entry`=34922; -- Overlord Agmar
+UPDATE `creature_template` SET `npcflag`=130 WHERE `entry` IN (35099 /*Bana Wildmane*/, 35132 /*Tohfo Skyhoof*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags2`=2097152 WHERE `entry`=35198; -- Talrendis Ancient
+UPDATE `creature_template` SET `npcflag`=16777216, `unit_flags2`=4194304 WHERE `entry`=35336; -- Horde Boat
+UPDATE `creature_template` SET `npcflag`=2097152 WHERE `entry` IN (35594 /*Brassbolt Mechawrench*/, 35607 /*Reginald Arcfire*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (35879 /*Neptulon Engravings Bunny*/, 36068 /*Sar'theris Hammerhead*/, 36123 /*Fertile Mound Bunny*/, 36141 /*Spear of Kolkar Bunny*/, 36227 /*Grimfeather*/, 36723 /*Frostsworn General*/, 37014 /*Ice Wall Target*/, 37225 /*Uther the Lightbringer*/, 37226 /*The Lich King*/, 2726 /*Scorched Guardian*/, 38751 /*Black Knight Shield Proxy*/, 38984 /*ELM General Purpose Bunny (scale x2) Large*/, 3653 /*Kresh*/, 3654 /*Mutanus the Devourer*/, 3669 /*Lord Cobrahn*/, 3670 /*Lord Pythas*/, 3671 /*Lady Anacondra*/, 3673 /*Lord Serpentis*/, 3674 /*Skum*/, 39732 /*Setesh*/, 4714 /*Slitherblade Myrmidon*/, 4715 /*Slitherblade Razortail*/, 4716 /*Slitherblade Tidehunter*/, 4718 /*Slitherblade Oracle*/, 4719 /*Slitherblade Sea Witch*/, 40648 /*Zakkaru*/, 41353 /*Hatefury Channeler Bunny (fountain)*/, 41355 /*Hatefury Channeler Bunny (brazier)*/, 41356 /*Hatefury Channeler Bunny (chalice)*/, 41372 /*Frostmane Retreat North*/, 41373 /*Frostmane Retreat South*/, 41375 /*Bombardment Bunny*/, 5775 /*Verdan the Everliving*/, 41730 /*Sand Vortex*/, 42169 /*Amberstill Raid Controller*/, 42491 /*Hinkles Fastblast*/, 42557 /*Healing Shield*/, 43035 /*Gnome Restoration Apparatus*/, 7267 /*Chief Ukorz Sandscalp*/, 7272 /*Theka the Martyr*/, 7273 /*Gahz'rilla*/, 43131 /*Image of Gnomeregan Infantry*/, 43132 /*Image of Dwarf Mountaineer*/, 43133 /*Image of Mechano-Tank*/, 43533 /*Blackrock Drake Rider*/, 43596 /*Venture Co. Oil Worker*/, 7795 /*Hydromancer Velratha*/, 7797 /*Ruuzlu*/, 43742 /*Vengeful Protector*/, 7999 /*Tyrande Whisperwind*/, 8197 /*Chronalis*/, 8198 /*Tick*/, 44451 /*Lady Sylvanas Windrunner*/, 44475 /*Brownfeather Hawk*/, 44483 /*Kirtonos the Herald*/, 44694 /*Noxious Tunneler*/, 9018 /*High Interrogator Gerstahn*/, 9025 /*Lord Roccor*/, 9033 /*General Angerforge*/, 9236 /*Shadow Hunter Vosh'gajin*/, 9319 /*Houndmaster Grebmar*/, 45256 /*Dave's Camera Bunny*/, 45406 /*Highbank*/, 45435 /*Earthen Ring Gryphon*/, 45515 /*Nostrastrasz*/, 45746 /*Vermillion Mender*/, 45748 /*Twilight Wyrmkiller*/, 45788 /*Twilight Wyrmkiller*/, 46054 /*Forsaken Trooper*/, 10415 /*Ash'ari Crystal*/, 46258 /*Apexar*/, 46259 /*Aetharon*/, 10430 /*The Beast*/, 10435 /*Magistrate Barthilas*/, 10437 /*Nerub'enkan*/, 10558 /*Hearthsinger Forresten*/, 46399 /*Blindeye the Guardian*/, 46611 /*Magmatooth*/, 46668 /*Twilight Rune of Air Bunny*/, 46673 /*Twilight Rune of Fire Bunny*/, 46707 /*Blam Turret*/, 46785 /*Lord Cannon*/, 46947 /*Cadaver Collage*/, 47342 /*Twister*/, 11658 /*Molten Giant*/, 11659 /*Molten Destroyer*/, 11665 /*Lava Annihilator*/, 11668 /*Firelord*/, 11673 /*Core Hound*/, 47521 /*Carriage Harness*/, 47522 /*Stagecoach Horse*/, 47523 /*Stagecoach Carriage*/, 47780 /*Vermillion Skyscreamer*/, 11983 /*Firemaw*/, 12017 /*Broodlord Lashlayer*/, 12101 /*Lava Surger*/, 12203 /*Landslide*/, 12206 /*Primordial Behemoth*/, 12243 /*Spirit of Veng*/, 12435 /*Razorgore the Untamed*/, 48289 /*Minyoth*/, 12457 /*Blackwing Spellbinder*/, 12458 /*Blackwing Taskmaster*/, 12459 /*Blackwing Warlock*/, 12460 /*Death Talon Wyrmguard*/, 12461 /*Death Talon Overseer*/, 12463 /*Death Talon Flamescale*/, 12464 /*Death Talon Seether*/, 12465 /*Death Talon Wyrmkin*/, 12467 /*Death Talon Captain*/, 12468 /*Death Talon Hatcher*/, 12557 /*Grethok the Controller*/, 49263 /*Zephyrus*/, 13596 /*Rotgrip*/, 13601 /*Tinkerer Gizlock*/, 13996 /*Blackwing Technician*/, 14020 /*Chromaggus*/, 14449 /*Blackwing Orb Trigger*/, 14456 /*Blackwing Guardsman*/, 15974 /*Dread Creeper*/, 15975 /*Carrion Spinner*/, 15976 /*Venom Stalker*/, 15977 /*Poisonous Skitterer*/, 16017 /*Patchwork Golem*/, 16018 /*Bile Retcher*/, 16034 /*Plague Beast*/, 16145 /*Death Knight Captain*/, 16146 /*Death Knight*/, 16156 /*Dark Touched Warrior*/, 16164 /*Shade of Naxxramas*/, 16165 /*Necro Knight*/, 16167 /*Bony Construct*/, 16193 /*Skeletal Smith*/, 16243 /*Plague Slime*/, 16244 /*Infectious Ghoul*/, 52418 /*Lost Offspring of Gahz'ranka*/, 16604 /*Blackwing Spell Marker*/, 52442 /*Florawing Hive Queen*/, 54116 /*Dori'thur*/, 20132 /*Socrethar*/, 23409 /*Invisible Stalker - Large AOI (Scale x3)*/, 23687 /*Scorchscale Drake*/, 24769 /*Red Dragon Soldier*/, 26373 /*Coldarra Spell FX InvisMan*/, 26858 /*Sarathstra*/, 27105 /*Kreug Oathbreaker*/, 27270 /*Rotting Storm Giant*/, 28006 /*Grand Necrolord Antiok*/, 28008 /*Galakrond Spell Dummy*/, 28018 /*Thiassi the Lightning Bringer*/, 28860 /*Sartharion*/, 29424 /*Stormforged Lightning Target*/, 29485 /*Dolomite Giant*/, 30096 /*Dry Haystack*/, 30103 /*Valkyrion Fire Bunny*/, 30118 /*Portal (Malygos)*/, 30142 /*The Iron Watcher*/, 30151 /*Orb Lightning*/, 30209 /*North Lightning Forge*/, 30211 /*Central Lightning Forge*/, 30212 /*South Lightning Forge*/, 30252 /*Lorekeeper Randvir*/, 30262 /*Son of Hodir*/, 30294 /*Frostworg Denmother*/, 30302 /*Helm Sparkle Bunny*/, 30351 /*Skybreaker Deckhand*/, 30394 /*Skybreaker Engineer*/, 30448 /*Plains Mammoth*/, 30449 /*Vesperon*/, 30451 /*Shadron*/, 30452 /*Tenebron*/, 30453 /*Onyx Sanctum Guardian*/, 30455 /*Frostworg*/, 30456 /*Oloh*/, 30576 /*Vile Like Fire! Kill Credit Bunny*/, 30599 /*Vile Like Fire! Fire Bunny*/, 30616 /*Flame Tsunami*/, 30648 /*Fire Cyclone*/, 30680 /*Onyx Brood General*/, 30681 /*Onyx Blaze Mistress*/, 30682 /*Onyx Flight Captain*/, 30995 /*Patches Chain Target*/, 31198 /*Coprous the Defiled*/, 31280 /*Ymirheim Spear Gun*/, 31334 /*Korialstrasz*/, 31399 /*Foreman Thaldrin*/, 31773 /*Plague Cauldron Target*/, 31775 /*Thexal Deathchill*/, 31892 /*Darkspeaker R'khem*/, 32186 /*Infinite Timebreaker*/, 32427 /*Plague Cauldron Target 01*/, 32442 /*Plague Cauldron Target 02*/, 32571 /*Halvdan*/, 33041 /*Aetherion*/, 33045 /*ELM General Purpose Bunny Large (scale x5)*/, 33047 /*Aetherion Vortex Bunny*/, 33087 /*Signal Fire Invisman*/, 33111 /*ELM General Purpose Bunny (scale x3) Large*/, 33115 /*Lor'danel Sentinel*/, 33296 /*Ritual Bond Bunny*/, 34282 /*Twilight Rider*/, 34293 /*Twilight Rider (Humanoid)*/, 34424 /*Broken-down Wagon Bunny*/, 34810 /*CoD Eye Proxy*/, 34923 /*Harbinger Aph'lass*/, 34982 /*Emerald Spirit*/, 35089 /*Black Knight Spell Proxy*/, 35106 /*Black Knight Caster*/, 35152 /*Battlescar Ancient*/, 35363 /*Elune Cathedral Bunny*/, 35446 /*Cenarion Hippogryph*/, 35464 /*Vortex Starter Bunny*/, 35470 /*Icehowl*/, 35482 /*Hungry Jormungar*/, 35561 /*Raging Vortex Waypoint Bunny*/, 35581 /*Elune's Brazier Bunny*/, 35605 /*Slitherblade Invader*/, 35606 /*Slitherblade Siren*/, 35620 /*Elune's Handmaiden Bunny*/, 35621 /*Elune's Missile Bunny*/, 35645 /*Bleached Skull Target Bunny*/, 35828 /*Lord Hydronis*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=35898; -- Valishj
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=537166592, `unit_flags2`=2099201, `dynamicflags`=32 WHERE `entry`=35899; -- Slaughtered Sea Witch
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=2099201, `dynamicflags`=32 WHERE `entry` IN (35900 /*Murdered Myrmidon*/, 47457 /*Twilight's Hammer Horse*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_class`=2, `unit_flags`=512, `unit_flags2`=2099200 WHERE `entry`=35902; -- Lord Hydronis
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry` IN (90 /*Sea Giant*/, 36234 /*Hippogriff Waypoint*/, 1493 /*Mok'rash the Cleaver*/, 41417 /*The Bomb*/, 41418 /*Krom'gar Hot Air Balloon*/, 41988 /*The Bomb*/, 42017 /*Gnome Wing Commander*/, 42038 /*Krom'gar Hot Air Balloon*/, 44367 /*Forest Ettin*/, 45475 /*Plague Disseminator*/, 45492 /*Tower Range Finder*/, 45561 /*Tower Cannon Target*/, 45790 /*Ambermill Phase 002 Event Generator*/, 47186 /*Thundermar War Gryphon*/, 47763 /*Bound Fury*/, 47777 /*Animus*/, 47789 /*Clerk Horrace Whitesteed*/, 47790 /*Magistrate Burnside*/, 47791 /*Citizen Wilkes*/, 48538 /*Lava Well*/, 49910 /*Vermillion Vanguard*/, 14269 /*Seeker Aqualon*/, 51127 /*Wildhammer Gryphon*/, 52062 /*Zanzil's Toxic Gas*/, 30246 /*Dun Niffelem Spear Chain Bunny (Phase 2)*/, 31702 /*Frostbrood Spawn*/, 32479 /*Bone Guard*/, 32482 /*Pustulent Colossus*/, 35592 /*Invisible Stalker (Float, Uninteractible, GiganticAOI)*/, 35815 /*Korrah's voice*/, 35827 /*Valishj*/);
+UPDATE `creature_template` SET `unit_flags`=16 WHERE `entry`=97; -- Riverpaw Runt
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` IN (114 /*Harvest Watcher*/, 330 /*Princess*/, 721 /*Rabbit*/, 729 /*Sin'Dall*/, 870 /*Protector Deni*/, 874 /*Protector Korelor*/, 2022 /*Timberling*/, 2620 /*Prairie Dog*/, 3681 /*Wisp*/, 4641 /*Magram Windchaser*/, 6271 /*Mouse*/, 6368 /*Cat*/, 42504 /*Mature Swine*/, 43732 /*Corpseweed*/, 10990 /*Alterac Ram*/, 11949 /*Captain Balinda Stonehearth*/, 16864 /*Stormwind Infantry*/, 60932 /*Ashfang Hyena*/, 29978 /*Iron Dwarf Assailant*/, 29979 /*Iron Dwarf Magus*/, 30753 /*Orgrim's Hammer Engineer*/);
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry` IN (35984 /*Sunreaver Dragonhawk*/, 15476 /*Scorpid*/, 30281 /*Silver Covenant Hippogryph*/);
+UPDATE `creature_template` SET `unit_flags`=336, `unit_flags2`=2099200 WHERE `entry` IN (36065 /*Fjola Lightbane*/, 36066 /*Eydis Darkbane*/);
+UPDATE `creature_template` SET `BaseAttackTime`=3000 WHERE `entry`=36094; -- Enraged Kodo
+UPDATE `creature_template` SET `unit_flags`=33555200 WHERE `entry` IN (36162 /*Goblin Engineering Crew*/, 36530 /*[DND] Valentine Boss - Vial Bunny*/, 38035 /*Chemical Wagon*/, 38340 /*[DND] Holiday - Love - Bank Bunny*/, 38341 /*[DND] Holiday - Love - AH Bunny*/, 38342 /*[DND] Holiday - Love - Barber Bunny*/, 25610 /*Scourge Prisoner*/);
+UPDATE `creature_template` SET `unit_flags`=67108864 WHERE `entry` IN (345 /*Bellygrub*/, 772 /*Stranglethorn Tigress*/, 1548 /*Cursed Darkhound*/, 1551 /*Ironjaw Basilisk*/, 3475 /*Echeyakee*/, 5455 /*Centipaar Wasp*/, 7049 /*Flamescale Broodling*/, 9166 /*Pterrordax*/, 46748 /*Stonard Kodo Beast*/, 25294 /*Nerub'ar Web Lord*/, 25709 /*Glacial Ancient*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=1.428571, `unit_class`=2, `unit_flags`=768 WHERE `entry`=36196; -- Kherrah
+UPDATE `creature_template` SET `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry` IN (36272 /*Apothecary Frye*/, 36565 /*Apothecary Baxter*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry`=36296; -- Apothecary Hummel
+UPDATE `creature_template` SET `unit_flags`=33570816 WHERE `entry` IN (36355 /*Siege Turret*/, 36356 /*Flame Turret*/);
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry` IN (36378 /*Dumti*/, 1261 /*Veron Amberstill*/, 3685 /*Harb Clawhoof*/, 4730 /*Lelanai*/, 5496 /*Sandahl*/, 8126 /*Nixx Sprocketspring*/, 13617 /*Stormpike Stable Master*/, 14437 /*Gorzeeki Wildeyes*/, 16376 /*Craftsman Wilhelm*/, 25206 /*Ahlurglgr*/, 31261 /*Brother Keltan*/, 32301 /*Warbringer Davos Rioht*/, 33434 /*Bezzle Blastbolt*/, 33956 /*Prospector Doren*/);
+UPDATE `creature_template` SET `npcflag`=16777216 WHERE `entry` IN (36557 /*Argent Warhorse*/, 32286 /*Mekgineer's Chopper*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1.571429, `unit_flags`=256, `unit_flags2`=0 WHERE `entry`=36559; -- Argent Battleworg
+UPDATE `creature_template` SET `unit_flags`=576 WHERE `entry`=857; -- Donal Osgood
+UPDATE `creature_template` SET `unit_flags`=512 WHERE `entry` IN (869 /*Protector Dorana*/, 3682 /*Vrang Wildgore*/, 35005 /*Arelas Brightstar*/);
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry` IN (36745 /*Captain Tork*/, 36885 /*Crown Apothecary*/, 37214 /*Crown Lackey*/, 37674 /*Lovely Merchant*/, 13743 /*Corrupt Force of Nature*/, 15719 /*Thunder Bluff Reveler*/, 15905 /*Darnassus Reveler*/, 15907 /*Undercity Reveler*/, 51868 /*Hellscream Grunt*/, 51889 /*Fizzcrank Airman*/, 16541 /*Ghostlands Guardian*/, 25253 /*Valiance Keep Footman*/, 62396 /*Shado-Pan Tiger*/, 26645 /*Fizzcrank Engineering Crew*/, 27518 /*Fordragon Footman*/, 27540 /*Fordragon Marksman*/, 31414 /*Valiance Commando*/);
+UPDATE `creature_template` SET `npcflag`=16 WHERE `entry` IN (908 /*Flora Silverwind*/, 1473 /*Kali Healtouch*/, 2114 /*Faruza*/, 2132 /*Carolai Anise*/, 2856 /*Angrun*/, 3555 /*Johan Focht*/, 4578 /*Josephine Lister*/, 6289 /*Rand Rhobart*/, 6291 /*Balthus Stoneflayer*/, 6292 /*Eladriel*/, 6295 /*Wilma Ranthal*/, 8128 /*Pikkle*/, 26988 /*Argo Strongstout*/, 26999 /*Fendrig Redbeard*/, 29924 /*Brandig*/, 30715 /*Feyden Darkin*/, 30717 /*Elise Brightletter*/, 30721 /*Michael Schwan*/, 33580 /*Dustin Vail*/, 33581 /*Kul'de*/, 33583 /*Fael Morningsong*/, 33588 /*Crystal Brightspark*/, 33590 /*Oluros*/, 33591 /*Rekka the Hammer*/, 33603 /*Arthur Denny*/);
+UPDATE `creature_template` SET `unit_flags`=33587456 WHERE `entry`=36817; -- [DND] Love Boat Summoner
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857 WHERE `entry` IN (36894 /*Tora Halotrix*/, 36895 /*Sergeant Zelks*/, 39183 /*Scorpitar*/, 8932 /*Borer Beetle*/, 65928 /*Ordo Raider*/);
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (1103 /*Eldrin*/, 2627 /*Grarnik Goodstitch*/, 2836 /*Brikk Keencraft*/, 2837 /*Jaxin Chong*/, 3001 /*Brek Stonehoof*/, 3136 /*Clarise Gnarltree*/, 3137 /*Matt Johnson*/, 3357 /*Makaru*/, 3549 /*Shelene Rhobart*/, 3967 /*Aayndia Floralwind*/, 4159 /*Me'lynn*/, 4213 /*Taladan*/, 5695 /*Vance Undergloom*/, 43428 /*Faeyrin Willowmoon*/, 8736 /*Buzzek Bracketswing*/, 11037 /*Jenna Lemkenilli*/, 47384 /*Lien Farner*/, 47400 /*Nedric Sallow*/, 47419 /*Lalum Darkmane*/, 47420 /*Iranis Shadebloom*/, 52640 /*Rolf Karner*/, 52645 /*Aessa Silverdew*/, 18777 /*Jelena Nightsky*/);
+UPDATE `creature_template` SET `unit_flags`=570687488, `unit_flags2`=2049, `dynamicflags`=32, `VehicleId`=0 WHERE `entry`=36942; -- Fledgling Brave
+UPDATE `creature_template` SET `unit_flags`=262144 WHERE `entry` IN (36943 /*Bristleback Invader*/, 42521 /*Jaspertip Swarmer*/, 52227 /*Balgor Whipshank*/);
+UPDATE `creature_template` SET `unit_flags2`=1073743872 WHERE `entry` IN (36954 /*The Lich King*/, 41178 /*Northwatch Tower Stalker*/, 42015 /*Gnomish Bomber*/, 45344 /*Abandoned Siege Engine*/, 45423 /*Fiona's Caravan*/, 45510 /*Tentacle of Iso'rath*/, 45511 /*Tentacle of Iso'rath*/, 45681 /*Garginox*/, 45693 /*Tentacle of Iso'rath*/, 45694 /*Tentacle of Iso'rath*/, 46418 /*Lirastrasza*/, 48092 /*Wind Tunnel*/, 48097 /*Wind Tunnel Landing Zone*/, 26310 /*Malygos*/, 31253 /*Alexstrasza the Life-Binder*/, 32295 /*Alexstrasza the Life-Binder*/, 32448 /*Alexstrasza's Gift*/, 32492 /*Frostbrood Matriarch*/, 33364 /*Thorim's Hammer Targetting Reticle*/, 33365 /*Thorim's Hammer*/, 33366 /*Freya's Ward Targetting Reticle*/, 33367 /*Freya's Ward*/, 33369 /*Mimiron's Inferno Targetting Reticle*/, 33370 /*Mimiron's Inferno*/);
+UPDATE `creature_template` SET `unit_flags`=67141632 WHERE `entry` IN (1150 /*River Crocolisk*/, 42338 /*Tainted Screecher*/, 44089 /*Blackbelly Forager*/, 45321 /*Riverbed Crocolisk*/, 28096 /*Hardknuckle Charger*/, 28098 /*Hardknuckle Forager*/, 28358 /*Venomtip*/);
+UPDATE `creature_template` SET `unit_flags2`=2064 WHERE `entry`=37068; -- Spiritual Reflection
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry` IN (37088 /*Elder Zhevra*/, 5249 /*Woodpaw Mongrel*/, 5251 /*Woodpaw Trapper*/, 5253 /*Woodpaw Brute*/, 5254 /*Woodpaw Mystic*/, 5255 /*Woodpaw Reaver*/, 5258 /*Woodpaw Alpha*/, 25467 /*Bloodspore Harvester*/);
+UPDATE `creature_template` SET `speed_walk`=1.111112, `unit_flags2`=2048 WHERE `entry`=37107; -- Spiritual Reflection
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=4.285714 WHERE `entry`=37145; -- Military Gyrocopter
+UPDATE `creature_template` SET `unit_flags`=512 WHERE `entry` IN (37172 /*Detective Snap Snagglebolt*/, 38293 /*Junior Inspector*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry`=37221; -- Lady Jaina Proudmoore
+UPDATE `creature_template` SET `npcflag`=19 WHERE `entry` IN (1470 /*Ghak Healtouch*/, 3494 /*Tinkerwiz*/, 4160 /*Ainethil*/, 4212 /*Telonis*/, 11017 /*Roxxik*/, 52651 /*Engineer Palehoof*/);
+UPDATE `creature_template` SET `unit_flags2`=1073743872 WHERE `entry`=37554; -- Lady Sylvanas Windrunner
+UPDATE `creature_template` SET `unit_flags2`=1073741824 WHERE `entry` IN (37593 /*Icecrown Dungeon Horde Gunship Cannon*/, 28859 /*Malygos*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=32768 WHERE `entry` IN (37675 /*Public Relations Agent*/, 37887 /*Kwee Q. Peddlefeet*/);
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry`=38017; -- Kalecgos
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1, `unit_flags`=32768 WHERE `entry` IN (38041 /*Kwee Q. Peddlefeet*/, 38042 /*Kwee Q. Peddlefeet*/);
+UPDATE `creature_template` SET `unit_flags`=537165824, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (2206 /*Greymist Hunter*/, 26280 /*Dragonblight Mage Hunter*/, 26816 /*Focus Wizard*/);
+UPDATE `creature_template` SET `unit_flags`=33554432 WHERE `entry` IN (38288 /*Love Guard Perfume Bunny*/, 27047 /*Invisible Stalker (Floating Only)*/, 29152 /*Stormwind Dock Worker*/, 65205 /*Gilded Moth*/, 35825 /*Flammable Tree Stalker*/);
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (2489 /*Milstaff Stormeye*/, 3084 /*Bluffwatcher*/, 4731 /*Zachariah Post*/, 45904 /*Angus Stillmountain*/, 46768 /*The Warden*/, 46769 /*The Sentinel*/, 46935 /*Gurgthock*/, 11948 /*Vanndar Stormpike*/, 50504 /*Belrysa Starbreeze*/, 19148 /*Dwarf Commoner*/, 19169 /*Blood Elf Commoner*/, 19172 /*Gnome Commoner*/, 19173 /*Night Elf Commoner*/, 19176 /*Tauren Commoner*/, 19177 /*Troll Commoner*/, 19178 /*Forsaken Commoner*/, 19481 /*Archmage Vargoth*/, 20102 /*Goblin Commoner*/, 27040 /*Zybarus of Darnassus*/, 30007 /*Gurgthock*/, 33235 /*Brann Bronzebeard*/, 33554 /*Samamba*/, 33556 /*Doru Thunderhorn*/, 33557 /*Trellis Morningsun*/);
+UPDATE `creature_template` SET `npcflag`=49 WHERE `entry`=2492; -- Lexington Mortaim
+UPDATE `creature_template` SET `BaseAttackTime`=2000 WHERE `entry` IN (2502 /*"Shaky" Phillipe*/, 3887 /*Baron Silverlaine*/, 47143 /*Spitebone Skeleton*/, 47145 /*Spitebone Guardian*/, 33293 /*XT-002 Deconstructor*/);
+UPDATE `creature_template` SET `unit_flags`=33587200 WHERE `entry` IN (38661 /*Rageroar Sea Dog*/, 28083 /*Serfex the Reaver*/);
+UPDATE `creature_template` SET `npcflag`=83 WHERE `entry` IN (3009 /*Bena Winterhoof*/, 3347 /*Yelmak*/, 5174 /*Springspindle Fizzlegear*/, 42288 /*Robby Flay*/, 42506 /*Marogg*/, 28703 /*Linzy Blackbolt*/);
+UPDATE `creature_template` SET `npcflag`=81 WHERE `entry` IN (3013 /*Komin Winterhoof*/, 46741 /*Muraga*/, 18779 /*Hurnak Grimmord*/);
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (3557 /*Guillaume Sorouy*/, 3606 /*Alanna Raveneye*/, 4204 /*Firodren Mooncaller*/, 4598 /*Brom Killian*/, 5127 /*Fimble Finespindle*/, 5137 /*Reyna Stonebranch*/, 5153 /*Jormund Stonebrow*/, 5157 /*Gimble Thistlefuzz*/, 43429 /*Taryel Firestrike*/, 43431 /*Periale*/, 11072 /*Kitta Firewind*/, 52586 /*Hanner Gembold*/);
+UPDATE `creature_template` SET `speed_walk`=0.5 WHERE `entry`=3634; -- Deviate Stalker
+UPDATE `creature_template` SET `unit_flags`=32832 WHERE `entry` IN (39982 /*Crazed Mage*/, 5649 /*Sandfury Blood Drinker*/, 12224 /*Cavern Shambler*/, 50730 /*Venomspine*/, 50785 /*Skyshadow*/, 50818 /*The Dark Prowler*/, 50839 /*Chromehound*/, 50855 /*Jaxx the Rabid*/, 50882 /*Chupacabros*/, 50901 /*Teromak*/, 50916 /*Lamepaw the Whimperer*/, 50946 /*Hogzilla*/, 50952 /*Barnacle Jim*/, 51007 /*Serkett*/, 51010 /*Snips*/, 51018 /*Zormus*/, 51022 /*Chordix*/, 51025 /*Dilennaa*/, 51046 /*Fidonis*/, 51048 /*Rexxus*/, 51058 /*Aphis*/, 51066 /*Crystalfang*/, 51869 /*Frostborn Axemaster*/, 26626 /*Scourge Reanimator*/, 27383 /*Thel'zan the Duskbringer*/);
+UPDATE `creature_template` SET `unit_flags`=294976 WHERE `entry`=39985; -- Mad Prisoner
+UPDATE `creature_template` SET `npcflag`=16 WHERE `entry`=4258; -- Bengus Deepforge
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `unit_flags`=536870912 WHERE `entry`=40147; -- Baron Geddon
+UPDATE `creature_template` SET `speed_run`=1.142857 WHERE `entry` IN (40332 /*Freewind Post Refugee*/, 10096 /*High Justice Grimstone*/, 47271 /*Dig-Boss Dinwhisker*/, 13533 /*Spewed Larva*/, 19164 /*Refugee Child*/, 23131 /*Blood Knight Honor Guard*/, 26103 /*Darkfallen Deathblade*/, 26448 /*Stars' Rest Sentinel*/, 26582 /*Horrified Drakkari Warrior*/, 26583 /*Horrified Drakkari Shaman*/, 31768 /*Stabled Hunter Pet*/, 32596 /*Dalaran Visitor*/, 32597 /*Dalaran Visitor*/);
+UPDATE `creature_template` SET `unit_flags`=33554688, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=40350; -- Generic Trigger LAB
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=32768 WHERE `entry`=40438; -- Steamwheedle Shyster
+UPDATE `creature_template` SET `npcflag`=81 WHERE `entry`=4614; -- Martha Alliestar
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=1.428571 WHERE `entry` IN (4658 /*Maraudine Stormer*/, 4659 /*Maraudine Marauder*/);
+UPDATE `creature_template` SET `npcflag`=82 WHERE `entry`=4753; -- Jartsam
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry` IN (40591 /*Drag Master Miglen*/, 40595 /*Rugfizzle*/, 45729 /*Tarenar Sunstrike*/, 12238 /*Zaetar's Spirit*/, 64572 /*Sara Finkleswitch*/);
+UPDATE `creature_template` SET `unit_flags2`=2131968 WHERE `entry`=40869; -- Holdfast Cannon
+UPDATE `creature_template` SET `npcflag`=18 WHERE `entry`=5164; -- Grumnus Steelshaper
+UPDATE `creature_template` SET `unit_flags`=537133824, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=5184; -- Theramore Sentry
+UPDATE `creature_template` SET `npcflag`=129 WHERE `entry` IN (5191 /*Shalumon*/, 18772 /*Hama*/, 27291 /*Initiate Mehrtens*/);
+UPDATE `creature_template` SET `unit_flags2`=32768 WHERE `entry`=41055; -- Chaos Portal
+UPDATE `creature_template` SET `unit_flags`=67108928 WHERE `entry`=41166; -- Gomegaz
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2099200, `dynamicflags`=0 WHERE `entry`=41467; -- Idra'kess Enchantress
+UPDATE `creature_template` SET `npcflag`=49 WHERE `entry` IN (5957 /*Birgitte Cranston*/, 20791 /*Iorioa*/);
+UPDATE `creature_template` SET `speed_run`=1.385714 WHERE `entry` IN (42231 /*Captain Metlek*/, 53823 /*Hyjal Warden*/, 31033 /*Crusader of Virtue*/, 32598 /*Dalaran Visitor*/, 33698 /*Argent Peacekeeper*/, 35287 /*Furien's Mount*/);
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry`=42317; -- High Tinker Mekkatorque
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.385714, `RangeAttackTime`=2000 WHERE `entry` IN (6486 /*Black Skeletal Horse*/, 11153 /*Red Skeletal Horse*/, 11154 /*Blue Skeletal Horse*/);
+UPDATE `creature_template` SET `unit_flags`=67141632, `HoverHeight`=2.8 WHERE `entry`=42341; -- Barbfin Skimmer
+UPDATE `creature_template` SET `npcflag`=131 WHERE `entry`=42497; -- Mama Celeste
+UPDATE `creature_template` SET `unit_flags`=8421376 WHERE `entry`=42594; -- Orgrimmar Thief
+UPDATE `creature_template` SET `npcflag`=4194433 WHERE `entry` IN (43017 /*Fahlestad*/, 43877 /*Fina Stillgrove*/, 43979 /*Gravin Steelbeard*/, 44123 /*Emily Jackson*/, 9984 /*Ulbrek Firehand*/, 9985 /*Laziphus*/, 9989 /*Lina Hearthstove*/, 10045 /*Kirk Maxwell*/, 10051 /*Seriadne*/, 10052 /*Maluressian*/, 10055 /*Morganus*/, 10056 /*Alassin*/, 10062 /*Steven Black*/, 10085 /*Jaelysia*/, 11104 /*Shelgrayn*/, 48055 /*Deedee Dropbolt*/, 49593 /*Tarm Deepgale*/, 49600 /*Matthew Churchill*/, 16824 /*Master Sergeant Lorin Thalmerok*/, 26597 /*Toby "Mother Goose" Ironbolt*/, 29959 /*Andurg Slatechest*/, 33854 /*Thomas Partridge*/, 35290 /*Steen Horngrass*/, 35344 /*Bognar Ironfoot*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.9920629, `unit_flags`=0 WHERE `entry`=43170; -- Earthen Geomancer
+UPDATE `creature_template` SET `unit_flags`=33088 WHERE `entry` IN (43607 /*Danforth*/, 64403 /*Alani*/);
+UPDATE `creature_template` SET `npcflag`=2, `unit_flags`=33088 WHERE `entry` IN (43608 /*Krakauer*/, 43609 /*Jorgensen*/, 43610 /*Messner*/);
+UPDATE `creature_template` SET `speed_run`=0.8571429, `unit_flags`=33088 WHERE `entry`=43611; -- John J. Keeshan
+UPDATE `creature_template` SET `speed_run`=1, `unit_flags2`=4196352, `VehicleId`=984 WHERE `entry`=43714; -- Bravo Company Siege Tank
+UPDATE `creature_template` SET `unit_flags`=768, `unit_flags2`=34816 WHERE `entry`=43733; -- Colonel Troteman
+UPDATE `creature_template` SET `npcflag`=4224 WHERE `entry` IN (43880 /*Howah Deeptan*/, 43882 /*Stronghoof Gentlebend*/, 64092 /*Murphy Diremoor*/);
+UPDATE `creature_template` SET `npcflag`=2176 WHERE `entry`=43887; -- Brell Farglenn
+UPDATE `creature_template` SET `npcflag`=640 WHERE `entry` IN (8150 /*Janet Hommers*/, 12960 /*Christi Galvanis*/, 26388 /*Veira Langdon*/, 29925 /*Rutner Steelpick*/, 29962 /*Horgoru the Collector*/, 30256 /*Scout Ordimbral*/, 30827 /*Utamu*/, 33872 /*Torgah*/);
+UPDATE `creature_template` SET `npcflag`=1048577 WHERE `entry` IN (44000 /*Gilnean Emissary*/, 44004 /*Gilnean Envoy*/, 62421 /*Tushui Emissary*/, 62422 /*Tushui Emissary*/);
+UPDATE `creature_template` SET `npcflag`=1048577, `unit_flags`=576 WHERE `entry` IN (44060 /*Lormic Farroden*/, 50674 /*Henry Lew*/);
+UPDATE `creature_template` SET `speed_walk`=1.111112, `speed_run`=1.142857, `unit_flags`=67108864, `unit_flags2`=2099200 WHERE `entry`=44113; -- Ironjaw Behemoth
+UPDATE `creature_template` SET `npcflag`=4194433 WHERE `entry` IN (44191 /*Finzy Watchwoozle*/, 9979 /*Sarah Goode*/, 9982 /*Penny*/, 10058 /*Greth*/, 10060 /*Grimestack*/, 48095 /*Katrina Lyons*/, 49689 /*Bonnie Hennigan*/, 49767 /*Rukh Zumtarg*/);
+UPDATE `creature_template` SET `unit_flags`=16384 WHERE `entry`=44218; -- Emerald Colossus
+UPDATE `creature_template` SET `speed_run`=1.190476 WHERE `entry`=8917; -- Quarry Slave
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (9024 /*Pyromancer Loregrain*/, 46859 /*Kalaran the Annihilator*/, 12201 /*Princess Theradras*/, 12236 /*Lord Vyletongue*/, 13282 /*Noxxion*/, 49264 /*Bloodvenom*/, 49265 /*Teracula*/, 49268 /*D-1000*/, 35381 /*Cup of Elune Bunny*/, 35382 /*Elune Palace Bunny*/);
+UPDATE `creature_template` SET `speed_walk`=0.777778, `speed_run`=0.5714286, `unit_flags`=537166080, `unit_flags2`=4196353, `dynamicflags`=32 WHERE `entry`=44885; -- Bound Air Elemental
+UPDATE `creature_template` SET `unit_flags`=537166096, `unit_flags2`=4196353, `dynamicflags`=32 WHERE `entry`=44886; -- Bound Water Elemental
+UPDATE `creature_template` SET `unit_flags`=2147484480 WHERE `entry`=45067; -- Horde Spirit Guide
+UPDATE `creature_template` SET `BaseAttackTime`=2400 WHERE `entry`=9259; -- Firebrand Grunt
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (45198 /*Forsaken Catapult*/, 26870 /*Darkspear Dragon Hunter*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (45417 /*Fiona*/, 20142 /*Steward of Time*/, 26117 /*Raelorasz*/, 30105 /*King Jokkum*/, 30127 /*Njormeld*/, 31333 /*Alexstrasza the Life-Binder*/, 32540 /*Lillehoff*/, 32594 /*Calder*/, 35476 /*Wilfred Fizzlebang*/);
+UPDATE `creature_template` SET `VehicleId`=1112 WHERE `entry`=45455; -- Slipstream
+UPDATE `creature_template` SET `unit_flags2`=2097152 WHERE `entry` IN (45560 /*Acridostrasz*/, 45866 /*Novrastrasz*/, 24914 /*Sorlof*/, 31103 /*Twilight Egg (Cosmetic)*/, 32467 /*Skeletal Reaver*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=0.5714286 WHERE `entry`=45704; -- Lurking Tempest
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=768 WHERE `entry`=45707; -- Lord Raymond George
+UPDATE `creature_template` SET `unit_flags2`=35653632 WHERE `entry` IN (45787 /*Bloodeye Brute*/, 47491 /*Red Dragon Strafe Bunny*/, 47907 /*Tederastrasz*/, 47958 /*Acid Effect Bunny*/, 49025 /*Highbank Cannoneer*/);
+UPDATE `creature_template` SET `unit_flags2`=37750784 WHERE `entry` IN (45838 /*Twilight Ettin*/, 46321 /*Thundermar Gryphon Rider*/, 54020 /*General Purpose Bunny JMF (Look 2 - Flying, Huge AOI)*/);
+UPDATE `creature_template` SET `unit_flags`=294912, `unit_flags2`=2097152 WHERE `entry`=45857; -- Celastrasza
+UPDATE `creature_template` SET `unit_flags2`=4196353 WHERE `entry` IN (45886 /*Corpsebeast (Giant)*/, 45893 /*Corpsebeast (Dog)*/, 45895 /*Corpsebeast (Blob)*/);
+UPDATE `creature_template` SET `unit_flags`=295168 WHERE `entry`=45907; -- Feralas Sentinel
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=1, `speed_run`=1.142857 WHERE `entry`=45947; -- Jon-Jon Jellyneck
+UPDATE `creature_template` SET `unit_flags2`=136316928 WHERE `entry`=46141; -- Obsidian Pyrewing
+UPDATE `creature_template` SET `unit_flags`=64 WHERE `entry` IN (10357 /*Ressan the Needler*/, 23864 /*Zelfrax*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `unit_flags`=32768, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=46204; -- Corrupted Elementalist
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry` IN (46205 /*Citadel Veteran*/, 46578 /*Twilight Miner*/, 46579 /*Depths Overseer*/, 46610 /*Twilight Miner*/, 30058 /*Warden of the Chamber*/, 33071 /*Shatterspear Raider*/);
+UPDATE `creature_template` SET `unit_flags`=33587968 WHERE `entry` IN (10441 /*Plagued Rat*/, 19444 /*Peasant Worker*/);
+UPDATE `creature_template` SET `unit_flags2`=37750785 WHERE `entry`=46345; -- Destroyed Battle Suit
+UPDATE `creature_template` SET `speed_walk`=1, `RangeAttackTime`=2000, `unit_flags`=33587968 WHERE `entry`=10536; -- Plagued Maggot
+UPDATE `creature_template` SET `unit_flags2`=4194304 WHERE `entry`=46416; -- Twilight Skyterror
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags`=32768, `unit_flags2`=33554432 WHERE `entry`=46493; -- Warlord Halthar
+UPDATE `creature_template` SET `unit_flags2`=69240832 WHERE `entry`=46671; -- Twilight Rune of Earth
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2099200, `dynamicflags`=0 WHERE `entry`=46713; -- Stonevault Wanderer
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=10936; -- Joseph Redpath
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=10945; -- Davil Crokford
+UPDATE `creature_template` SET `speed_walk`=0.777776, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=10953; -- Servant of Horgus
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry`=46915; -- Darkflight Soldier
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.357143 WHERE `entry` IN (47116 /*Tokrog*/, 49747 /*Innkeeper Krum*/, 49751 /*Malo'wa*/, 49752 /*Rek Moshfang*/, 49754 /*Hama Brightleaf*/, 49756 /*Zoklaw Irtak*/);
+UPDATE `creature_template` SET `speed_walk`=1 WHERE `entry` IN (11328 /*Eastvale Peasant*/, 11787 /*Rock Borer*/, 11788 /*Rock Worm*/, 15864 /*Valadar Starsong*/, 17878 /*Scourge Siege Engineer*/, 20438 /*Ara Technician*/, 25843 /*Northsea Thug*/, 27779 /*Image of Noth*/);
+UPDATE `creature_template` SET `unit_flags2`=35653633 WHERE `entry`=47502; -- Silenced Twilight Patroller
+UPDATE `creature_template` SET `unit_flags`=33536, `unit_flags2`=0 WHERE `entry`=47503; -- Heartrazor
+UPDATE `creature_template` SET `unit_flags2`=4261888 WHERE `entry`=47510; -- Twilight Skymaster Richtofen
+UPDATE `creature_template` SET `speed_walk`=0.666668 WHERE `entry` IN (11685 /*Maraudine Priest*/, 11686 /*Ghostly Raider*/, 11687 /*Ghostly Marauder*/, 12240 /*Spirit of Kolk*/, 13718 /*The Nameless Prophet*/);
+UPDATE `creature_template` SET `speed_walk`=1.555556 WHERE `entry` IN (11777 /*Shadowshard Rumbler*/, 11778 /*Shadowshard Smasher*/);
+UPDATE `creature_template` SET `speed_walk`=2.6, `unit_flags2`=2099200, `HoverHeight`=1.5 WHERE `entry`=11897; -- Duskwing
+UPDATE `creature_template` SET `npcflag`=80 WHERE `entry` IN (12025 /*Malvor*/, 26974 /*Tansy Wildmane*/, 26975 /*Arthur Henslowe*/, 27023 /*Apothecary Bressa*/, 27029 /*Apothecary Wormwick*/, 28704 /*Dorothy Egan*/);
+UPDATE `creature_template` SET `npcflag`=128, `unit_class`=8, `unit_flags`=32768 WHERE `entry`=47897; -- Lunar Festival Vendor
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (47905 /*Baleflame*/, 12225 /*Celebras the Cursed*/, 50766 /*Sele'na*/, 50772 /*Eshelon*/, 32485 /*King Krush*/);
+UPDATE `creature_template` SET `npcflag`=3715 WHERE `entry`=12096; -- Stormpike Quartermaster
+UPDATE `creature_template` SET `speed_run`=0.2857143 WHERE `entry`=48040; -- Pygmy Oaf
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.2857143 WHERE `entry`=12222; -- Creeping Sludge
+UPDATE `creature_template` SET `speed_run`=1.142857, `unit_flags2`=2099200 WHERE `entry`=12258; -- Razorlash
+UPDATE `creature_template` SET `unit_flags`=272 WHERE `entry` IN (48111 /*Blackrock War Kodo*/, 32322 /*Gold Warrior*/);
+UPDATE `creature_template` SET `unit_flags`=67141696 WHERE `entry` IN (48291 /*Tugnar Goremaw*/, 26290 /*Jotun*/);
+UPDATE `creature_template` SET `HoverHeight`=1 WHERE `entry` IN (48546 /*Captain Winky*/, 31265 /*Savage Proto-Drake*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=768 WHERE `entry`=48559; -- Ariok
+UPDATE `creature_template` SET `unit_flags2`=71305216 WHERE `entry`=48560; -- Emberscar the Devourer
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (12996 /*Mounted Ironforge Mountaineer*/, 65599 /*H.A.R.V.E.Y.*/);
+UPDATE `creature_template` SET `unit_flags2`=2097152 WHERE `entry`=13020; -- Vaelastrasz the Corrupt
+UPDATE `creature_template` SET `unit_flags`=64 WHERE `entry`=13180; -- Wing Commander Jeztor
+UPDATE `creature_template` SET `speed_run`=0.9920629 WHERE `entry` IN (49161 /*Altered Beast*/, 27973 /*Crystalline Shardling*/, 33880 /*Mimiron Image*/);
+UPDATE `creature_template` SET `npcflag`=2, `unit_flags`=64 WHERE `entry`=13437; -- Wing Commander Ichman
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.385714 WHERE `entry`=13577; -- Stormpike Ram Rider Commander
+UPDATE `creature_template` SET `npcflag`=1, `RangeAttackTime`=2000, `unit_flags`=832 WHERE `entry`=13716; -- Celebras the Redeemed
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry` IN (13797 /*Mountaineer Boombellow*/, 33435 /*Bozzle Blastbolt*/);
+UPDATE `creature_template` SET `npcflag`=4194433, `speed_walk`=1, `speed_run`=1.357143 WHERE `entry`=49755; -- Zay'hana
+UPDATE `creature_template` SET `unit_flags2`=4229120 WHERE `entry`=49941; -- Brann Bronzebeard
+UPDATE `creature_template` SET `speed_run`=0.8571429 WHERE `entry`=49999; -- Grasslands Cottontail
+UPDATE `creature_template` SET `HoverHeight`=1.25 WHERE `entry`=14268; -- Lord Condar
+UPDATE `creature_template` SET `npcflag`=2097152 WHERE `entry` IN (50139 /*Auctioneer Kalaren*/, 50143 /*Auctioneer Itoran*/);
+UPDATE `creature_template` SET `speed_walk`=0.3555552, `speed_run`=0.3809526, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=50349; -- Kang the Soul Thief
+UPDATE `creature_template` SET `speed_walk`=0.888888, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (50355 /*Kah'tir*/, 50359 /*Urgolax*/);
+UPDATE `creature_template` SET `unit_flags`=33024 WHERE `entry`=14881; -- Spider
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=32832 WHERE `entry` IN (50726 /*Kalixx*/, 51028 /*The Deep Tunneler*/, 51076 /*Lopex*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (50733 /*Ski'thik*/, 50749 /*Kal'tik the Blight*/, 50791 /*Siltriss the Sharpener*/, 50805 /*Omnis Grinlok*/);
+UPDATE `creature_template` SET `unit_flags`=512, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=14901; -- Peon
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry` IN (14990 /*Defilers Envoy*/, 15105 /*Warsong Envoy*/);
+UPDATE `creature_template` SET `unit_flags`=33024 WHERE `entry` IN (14991 /*League of Arathor Emissary*/, 15607 /*Elder Farwhisper*/, 30348 /*Elder Sardis*/, 30357 /*Elder Beldak*/, 30358 /*Elder Morthie*/, 30359 /*Elder Fargal*/, 30360 /*Elder Northal*/, 30362 /*Elder Sandrene*/, 30363 /*Elder Thoim*/, 30364 /*Elder Arp*/, 30365 /*Elder Wanikaya*/, 30367 /*Elder Lunaro*/, 30368 /*Elder Bluewolf*/, 30369 /*Elder Tauros*/, 30370 /*Elder Graymane*/, 30371 /*Elder Pamuya*/, 30372 /*Elder Whurain*/, 30373 /*Elder Skywarden*/, 30374 /*Elder Muraco*/, 30375 /*Elder Stonebeard*/, 30531 /*Elder Jarten*/, 30533 /*Elder Nurgen*/, 30536 /*Elder Igasho*/, 30537 /*Elder Ohanzee*/, 30538 /*Elder Chogan'gada*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=1500, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (50832 /*The Yowler*/, 50836 /*Ik-Ik the Nimble*/);
+UPDATE `creature_template` SET `unit_flags`=537133376, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=50951; -- Carapin
+UPDATE `creature_template` SET `unit_flags`=64, `unit_flags2`=16779264 WHERE `entry`=50955; -- Carcinak
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=50964; -- Chops
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags2`=2097152 WHERE `entry`=15467; -- Omen
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=33024 WHERE `entry` IN (15549 /*Elder Morndeep*/, 15565 /*Elder Stormbrow*/, 15567 /*Elder Ironband*/, 15568 /*Elder Graveborn*/, 15569 /*Elder Goldwell*/, 15570 /*Elder Primestone*/, 15573 /*Elder Ragetotem*/, 15578 /*Elder Wildmane*/, 15581 /*Elder Grimtotem*/, 15583 /*Elder Thunderhorn*/, 15584 /*Elder Skyseer*/, 15586 /*Elder Dreamseer*/, 15595 /*Elder Bladeleaf*/, 15599 /*Elder Bladesing*/, 15601 /*Elder Starweave*/, 15604 /*Elder Morningdew*/, 15605 /*Elder Riversong*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024 WHERE `entry` IN (15556 /*Elder Splitrock*/, 15557 /*Elder Rumblerock*/, 15558 /*Elder Silvervein*/, 15560 /*Elder Stonefort*/, 15563 /*Elder Bellowrage*/, 15572 /*Elder Runetotem*/, 15574 /*Elder Stonespire*/, 15575 /*Elder Bloodhoof*/, 15577 /*Elder Skychaser*/, 15585 /*Elder Dawnstrider*/, 15587 /*Elder Mistwalker*/, 15588 /*Elder High Mountain*/, 15593 /*Elder Starsong*/, 15596 /*Elder Starglade*/, 15598 /*Elder Bladeswift*/, 15600 /*Elder Skygleam*/, 15603 /*Elder Nightwind*/, 15606 /*Elder Brightspear*/);
+UPDATE `creature_template` SET `speed_walk`=1, `unit_class`=8 WHERE `entry`=15559; -- Elder Highpeak
+UPDATE `creature_template` SET `speed_walk`=1 WHERE `entry` IN (15561 /*Elder Obsidian*/, 15564 /*Elder Darkcore*/, 15566 /*Elder Snowcrown*/, 15576 /*Elder Winterhoof*/, 15579 /*Elder Darkhorn*/, 15580 /*Elder Ezra Wheathoof*/, 15592 /*Elder Windrun*/, 15594 /*Elder Moonstrike*/, 15602 /*Elder Meadowrun*/);
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=33555200 WHERE `entry`=15730; -- Pat's Snowcloud Guy
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=512 WHERE `entry`=15732; -- Wonderform Operator
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=32768 WHERE `entry`=15760; -- Winter Reveler
+UPDATE `creature_template` SET `npcflag`=4225, `speed_walk`=1 WHERE `entry`=15909; -- Fariel Starsong
+UPDATE `creature_template` SET `speed_run`=1 WHERE `entry` IN (51758 /*Draenei Child*/, 19163 /*Refugee Kid*/, 34011 /*Button Image*/, 34032 /*Cache Image*/);
+UPDATE `creature_template` SET `unit_flags`=33554496, `unit_flags2`=2099200 WHERE `entry`=16168; -- Stoneskin Gargoyle
+UPDATE `creature_template` SET `npcflag`=66179 WHERE `entry`=16826; -- Sid Limbardi
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571 WHERE `entry`=16927; -- Stonescythe Whelp
+UPDATE `creature_template` SET `speed_run`=2.285714 WHERE `entry`=17076; -- Lady Liadrin
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=32768 WHERE `entry`=53714; -- Training Target
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry` IN (53840 /*Gart Mistrunner*/, 53841 /*Zen'tabra*/, 53842 /*Mardant Strongoak*/, 53844 /*Celestine of the Harvest*/, 18760 /*Isla Starmane*/);
+UPDATE `creature_template` SET `unit_flags`=768, `unit_flags2`=0 WHERE `entry`=54030; -- Invisible Stalker
+UPDATE `creature_template` SET `npcflag`=129 WHERE `entry`=18771; -- Brumman
+UPDATE `creature_template` SET `npcflag`=145 WHERE `entry` IN (18774 /*Tatiana*/, 33640 /*Hanlir*/);
+UPDATE `creature_template` SET `npcflag`=3219 WHERE `entry`=18802; -- Alchemist Gribble
+UPDATE `creature_template` SET `BaseAttackTime`=1250 WHERE `entry`=18948; -- Stormwind Soldier
+UPDATE `creature_template` SET `npcflag`=641 WHERE `entry`=19186; -- Kylene
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.666668, `unit_class`=2, `unit_flags`=33024 WHERE `entry` IN (55210 /*Elder Sekhemi*/, 55211 /*Elder Menkhaf*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_class`=8, `unit_flags`=33024 WHERE `entry` IN (55216 /*Elder Deepforge*/, 55217 /*Elder Stonebrand*/, 55218 /*Elder Darkfeather*/, 55219 /*Elder Firebeard*/, 55224 /*Elder Windsong*/, 55227 /*Elder Evershade*/, 55228 /*Elder Moonlance*/);
+UPDATE `creature_template` SET `unit_flags`=33280 WHERE `entry` IN (19725 /*"Epic" Malone*/, 19726 /*"Creepjack"*/, 63782 /*Battleworn Paratrooper*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56115 /*Ken-Ken*/, 59371 /*Lucky Eightcoins*/, 64011 /*Farmhand Dooka*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570720256, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=56132; -- Thunderfoot Pig
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.9523814 WHERE `entry`=20439; -- Ara Engineer
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=4196352 WHERE `entry`=56313; -- Tooki Tooki
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=56327; -- Nibi Nibi
+UPDATE `creature_template` SET `npcflag`=2, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=56351; -- Bo Bo
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=33556480, `VehicleId`=1826 WHERE `entry`=56524; -- Longfang Howler
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56526 /*Tawnyhide Fawn*/, 56531 /*Tawnyhide Doe*/, 57400 /*Yu'lon Guardian*/, 58215 /*Wildscale Saurok*/, 58454 /*Fairlands Gazelle*/, 58457 /*Silkfeather Hawk*/, 58545 /*Stonebark Trickster*/, 58893 /*Sungraze Mushan*/, 58899 /*Wildscale Poacher*/, 58900 /*Wildscale Hunter*/, 58901 /*Halfhill Goatherd*/, 58910 /*Plainshawk*/, 58944 /*Kun-Lai Refugee*/, 58992 /*Shado-Pan Trainee*/, 59019 /*Binan Villager*/, 59240 /*Scarlet Hall Guardian*/, 59241 /*Scarlet Treasurer*/, 59335 /*Burilgi Despoiler*/, 59382 /*Burilgi Despoiler*/, 59404 /*Knifetooth Swarmer*/, 59534 /*Summit Prowler*/, 59644 /*Halfhill Villager*/, 59647 /*Field Hand*/, 59690 /*Freed Farmhand*/, 59790 /*Ruqin Infantry*/, 60482 /*Auburn Rascal*/, 60647 /*Osul Sharphorn*/, 60689 /*Longying Defender*/, 60692 /*Osul Marauder*/, 60697 /*Osul Mist-Shaman*/, 60713 /*Osul Charger*/, 60725 /*Urang*/, 60739 /*Steppebeast*/, 60758 /*Small Swamp Rodent*/, 60875 /*Summit Prowler*/, 61070 /*Explosive Hatred*/, 61224 /*Blind Rage*/, 61299 /*Seething Fleshripper*/, 61302 /*Agitated Seedstealer*/, 61475 /*Ruqin Infantry*/, 61618 /*Longshadow Mushan*/, 61811 /*Agitated Nettleskin*/, 62029 /*Greatback Mushan*/, 62143 /*Dreadspinner Hatchling*/, 62308 /*Blackguard Disciple*/, 62386 /*Sapfly*/, 62554 /*Cheng Bo*/, 62568 /*Gai-Cho Gatewatcher*/, 62589 /*Gai-Cho Boltshooter*/, 62652 /*Groundskeeper Weiji*/, 62653 /*Jade*/, 62655 /*Zhang Oxfoot*/, 62939 /*Binan Journeyman*/, 62943 /*Madam Goya*/, 63280 /*Deckhand*/, 63495 /*Hatescale Ironface*/, 63586 /*Onyx Venomtail*/, 63587 /*Dread Scarab*/, 63725 /*Bonedust Moth*/, 63726 /*Mutating Scorpid*/, 63729 /*Bluehide Mushan*/, 63827 /*Young Bluehide Mushan*/, 63833 /*Mutating Scorpid*/, 63997 /*Muckscale Flesh-Hunter*/, 64109 /*Mister Chu*/, 64317 /*Danae*/, 64318 /*Janae*/, 64450 /*Kora Kang*/, 64452 /*Boatbuilder Shu*/, 64590 /*Magenta*/, 64598 /*Woodworker Laoren*/, 64976 /*Brownie*/, 65450 /*Ancient Guardian*/, 65790 /*Muck Sifter*/, 65864 /*Kor'kron Defender*/, 66184 /*Dread Stalker*/, 66194 /*Waste Scavenger*/, 66309 /*Bladescale Eviscerator*/, 66319 /*Fear-Touched Moth*/, 66463 /*Longshadow Bull*/, 66596 /*Grizz Grumblepaw*/, 66599 /*Greatback Calf*/, 66895 /*River Strider*/, 67087 /*Ashweb Hatchling*/, 67125 /*Thundergill*/, 67545 /*Dwarven Mortar Team Engineer*/, 67801 /*High Marshal Twinbraid*/, 68014 /*Fenix Hexwrench*/, 68026 /*Summit Sprite*/, 68328 /*Explorer's League Surveyor*/, 68667 /*Twinbraid's Bodyguard*/);
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=56532; -- Tawnyhide Stag
+UPDATE `creature_template` SET `speed_run`=1.031746 WHERE `entry`=20930; -- Hatecryer
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (57195 /*Ik'thik Swiftclaw*/, 57196 /*Ik'thik Wingblade*/, 59832 /*Ik'thik Slicewing*/, 64338 /*Instructor Kli'thak*/, 64339 /*Instructor Tak'thok*/, 64340 /*Instructor Maltik*/, 64341 /*Instructor Zarik*/, 64353 /*Set'thik Gale-Slicer*/, 64355 /*Kor'thik Silentwing*/, 64357 /*Kor'thik Swarmer*/, 64358 /*Set'thik Tempest*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (57242 /*Elder Sage Wind-Yi*/, 63751 /*Farmhand Ko*/, 63754 /*Farmhand Bo*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=57298; -- Farmer Fung
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57299 /*Glade Hunter*/, 58741 /*Glade Sprinter*/, 58766 /*Glade Singer*/, 63731 /*Mire Beast*/, 67128 /*Kracor*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (57301 /*Glade Glimmer*/, 58947 /*Shado-Pan Scout*/, 68312 /*Hilda Hornswaggle*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (57327 /*Lingering Doubt*/, 57330 /*Final Doubt*/, 57396 /*Lingering Doubt*/, 59303 /*Houndmaster Braun*/, 60841 /*Injured Longying Defender*/, 61153 /*Injured Longying Defender*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry` IN (57393 /*Void Rift*/, 60025 /*Generic Bunny*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=0.5, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=57457; -- Despondent Warden of Zhu
+UPDATE `creature_template` SET `speed_walk`=1.555556, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=57649; -- Weeping Horror
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (57744 /*Mei Barrelbottom*/, 60187 /*Jin Warmkeg*/, 60189 /*Ya Firebough*/, 60190 /*Old Lady Fung*/, 62550 /*Chao the Voice*/, 63367 /*Brewmaster Boof*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.5, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=57825; -- Yun
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2131968 WHERE `entry`=57872; -- Void Flame
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (57967 /*Dead Temple Defender*/, 60168 /*Dead Ruqin Infantry*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58216 /*Wildscale Herbalist*/, 66289 /*Osul Spitfire*/, 67835 /*Silvermoon Runeseeker*/, 67836 /*Silvermoon Runeseeker*/, 68333 /*Horde Priest*/);
+UPDATE `creature_template` SET `speed_run`=1.190476, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58237 /*Tweek*/, 58459 /*Ashweb Weaver*/, 58475 /*Ashweb Piercer*/, 58588 /*Ashweb Weaver*/, 59513 /*Springtail Trapper*/, 59515 /*Springtail Littlewhisker*/, 61981 /*Dreadspinner Tender*/, 62000 /*Dreadspinner*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58245 /*Nala*/, 59581 /*Spicemaster Jin Jao*/, 62642 /*Chunhua the Spinning Blossom*/, 62926 /*Exchange Guard*/, 64019 /*Brewmaster Linshi*/, 64316 /*Xiao Niao the Nightingale*/, 64327 /*Old Man Whitewhiskers*/, 64561 /*Jong Ming-Yiu*/, 64575 /*Chan Hoi-San*/, 64584 /*Dawnchaser Brave*/, 64614 /*Alynna Whisperblade*/, 64972 /*Clog Den*/, 66731 /*Mr. Creasey*/, 67133 /*Andy*/, 67134 /*Kat*/);
+UPDATE `creature_template` SET `unit_flags2`=2048 WHERE `entry`=58412; -- Shao-Tien Marauder
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2046 WHERE `entry` IN (58415 /*Mountain Yak*/, 60860 /*Young Mountain Yak*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (58449 /*Wooly Yak*/, 63770 /*Alliance Yak*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58455 /*Stillwater Crocolisk*/, 59165 /*Enraged Spearman*/, 59640 /*Cattail Grouper*/, 61130 /*Enraged Blacksmith*/, 61354 /*Sik'thik Vess-Guard*/, 61376 /*Kri'thik Boneslicer*/, 61572 /*Inkgill Refugee*/, 61762 /*Uigi*/, 61971 /*Sharpshell Wader*/, 62023 /*Coldbite Crocolisk*/, 62160 /*Chillwater Turtle*/, 62563 /*Shek'zeer Bladesworn*/, 62575 /*Sik'thik Venomspitter*/, 62576 /*Sik'thik Drone*/, 62579 /*Korvexxis*/, 62582 /*Shek'zeer Swarmborn*/, 62756 /*Kor'thik Chitinel*/, 62757 /*Kor'thik Havoc*/, 63176 /*Ik'thik Egg-Drone*/, 63206 /*Ik'thik Harvester*/, 63981 /*Brineshell Snapper*/, 64589 /*Tungsten*/, 64591 /*Seamus*/, 64714 /*Shek'zeer Needler*/, 64720 /*Shek'zeer Manipulator*/, 64831 /*Ik'thik Swarmborn*/, 65118 /*Needleback Porcupine*/, 65231 /*Kypari Crawler*/, 65452 /*Vengeful Gurthani Spirit*/, 65573 /*Ik'thik Warrior*/, 65584 /*Ik'thik Slayer*/, 66456 /*Nibblefin Grouper*/, 66465 /*Ik'thik Clutch-Guard*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=58456; -- Thundermaw
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (58460 /*Shao-Tien Soul-Render*/, 65978 /*Shao-Tien Soul-Render*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (58464 /*Golden Lotus Warrior*/, 58956 /*Binan Warrior*/, 58961 /*Bataari Yaungol*/, 58989 /*Binan Warrior*/, 59147 /*Bataari Yaungol*/, 59157 /*Granite Quilen*/, 62122 /*Dusklight Skirmisher*/, 62123 /*Dusklight Ranger*/, 62125 /*Farwatch Marksman*/, 63041 /*Golden Lotus Warrior*/, 63999 /*Muckscale Slayer*/, 64263 /*Shado-Pan Wallwatcher*/, 65138 /*Furious Golden Lotus Defender*/, 66860 /*Golden Lotus Warrior*/, 66861 /*Golden Lotus Warrior*/, 67636 /*Thane Stonehearth*/, 68310 /*Lion's Landing Guard Captain*/);
+UPDATE `creature_template` SET `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (58505 /*Golden Lotus Defender*/, 67195 /*Halfhill Defender*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166080, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=58533; -- Dustback Mushan
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry` IN (58591 /*Ashweb Hanging Web Bunny*/, 65888 /*Mogu Cannon Bunny*/, 66893 /*Manfred*/, 66894 /*Manfred*/, 66941 /*Water Spout*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200, `VehicleId`=2307 WHERE `entry`=58632; -- Armsmaster Harlan
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58646 /*Farmer Yoon*/, 58647 /*Ella*/, 58708 /*Sho*/, 59273 /*Swordmistress Mei*/, 59585 /*Lolo Lio*/, 60161 /*Shado-Master Chong*/, 61880 /*Initiate Chao*/, 61881 /*Initiate Feng*/, 62124 /*Initiate Pao-Me*/, 63349 /*Deck Boss Arie*/, 63484 /*Len the Whisperer*/, 64002 /*Sang-Bo*/, 64007 /*Weng the Merciful*/, 64010 /*Master Angler Karu*/, 64314 /*Seedkeeper Shing Sing*/, 64315 /*Stonecarver Mac*/, 64531 /*Lena Stonebrush*/, 64533 /*Wei Lakebreeze*/, 64534 /*Bowmaster Ku*/, 64597 /*Nana Mudclaw*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=58669; -- Echo of a Pandaren Monk
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=58671; -- Ancient Mogu Spirit
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=1, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags2`=65536, `VehicleId`=2022 WHERE `entry`=58674; -- Angry Hound
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (58676 /*Scarlet Defender*/, 60623 /*Enraged Mushan*/, 61818 /*Needlebottom*/, 66187 /*Dread Matriarch*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1700, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=58683; -- Scarlet Myrmidon
+UPDATE `creature_template` SET `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=58684; -- Scarlet Scourge Hewer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (58685 /*Scarlet Evangelist*/, 58756 /*Scarlet Evoker*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry` IN (58701 /*Stake*/, 67464 /*Quarry Pillar*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (58704 /*Kelari Featherfoot*/, 58743 /*Yumi Goldenpaw*/, 63266 /*Sinan the Dreamer*/, 63327 /*Shoyu*/);
+UPDATE `creature_template` SET `npcflag`=4227, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=58706; -- Gina Mudclaw
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=58710; -- Jogu the Drunk
+UPDATE `creature_template` SET `npcflag`=83, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58712 /*Kol Ironpaw*/, 58713 /*Anthea Ironpaw*/, 58714 /*Mei Mei Ironpaw*/, 58715 /*Yan Ironpaw*/, 58716 /*Jian Ironpaw*/, 58717 /*Bobo Ironpaw*/);
+UPDATE `creature_template` SET `npcflag`=131, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58718 /*Merchant Greenfield*/, 64395 /*Nam Ironpaw*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2800, `RangeAttackTime`=2000, `unit_flags`=33587264, `unit_flags2`=67110912 WHERE `entry`=58725; -- Scarlet Cannons
+UPDATE `creature_template` SET `BaseAttackTime`=2800, `RangeAttackTime`=2000, `unit_flags`=33088, `unit_flags2`=67143682 WHERE `entry`=58726; -- Scarlet Cannon
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.2857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=67584 WHERE `entry`=58727; -- Chained Dog Target
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (58731 /*Aspiring Trainee*/, 59231 /*Captive Pandaren Spirit*/, 59455 /*Recuperating Binan Warrior*/, 63752 /*Wounded Defender*/, 63753 /*Wounded Defender*/, 65288 /*Shado-Pan Trainer*/, 67004 /*Aspiring Trainee*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=67110912 WHERE `entry`=58767; -- Pomfruit
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67143680 WHERE `entry` IN (58786 /*Swirling Pool*/, 66687 /*Spider Egg*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=58876; -- Starving Hound
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58889 /*Longfang Patriarch*/, 58890 /*Longfang Den-Mother*/, 58891 /*Longfang Cub*/, 66421 /*Painted Stag*/, 66448 /*Veiled Basilisk*/, 66605 /*Ancient Stag*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58892 /*Wild Shaghorn*/, 58906 /*Shaghorn*/, 59538 /*Ruqin Outrider*/, 59656 /*The Fearmaster*/, 60511 /*Wild Mountain Kid*/, 60523 /*Summit Prowler Cub*/, 65685 /*Ik'thik Raider*/, 65995 /*Shek'zeer Bladesworn*/, 66298 /*Green Dragon Turtle*/, 68332 /*Horde Raider*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (58898 /*Vigilant Watchman*/, 59175 /*Master Archer*/, 59191 /*Commander Lindon*/, 59693 /*Mischievous Snow Sprite*/, 62552 /*Gai-Cho Yaungol*/, 62608 /*Gai-Cho Pitchthrower*/, 62763 /*Rikkilea Strider*/, 62942 /*Left*/, 63289 /*Luyu Moth*/, 63820 /*Alliance Trainee*/, 63821 /*Horde Trainee*/, 63980 /*Amber Moth*/, 64849 /*Kunchong Hatchling*/, 65757 /*Azure Flutterwing*/, 65759 /*Iridescent Flutterwing*/, 65760 /*Sun-Touched Flutterwing*/, 66602 /*Petulant Pumpkin*/, 67441 /*Shieldwall Engineer*/, 67929 /*Bilgewater Sapper*/, 68074 /*Troubled Slave Spirit*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58905 /*Dion*/, 59414 /*Broketooth Charger*/, 59958 /*Tak Tak*/, 62933 /*Highroad Grummle*/, 62936 /*Hozen Trader*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (58908 /*Esrus*/, 58909 /*Rim-Sim-Sim*/, 59648 /*Valley Yak*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.9285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58923 /*Little Ben*/, 58924 /*Ting Ting*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58925 /*Prize Shagskin*/, 65209 /*Dancing Water Skimmer*/, 66549 /*Wasteland Yak*/, 66595 /*Wasteland Calf*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58927 /*Shao-Tien Fist*/, 61010 /*The Blade*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=58928; -- Shao-Tien Antiquator
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry`=58930; -- Shado-Pan Scout
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58949 /*Bai-Jin the Butcher*/, 59406 /*Grummle Packer*/, 59858 /*Trail Packer*/);
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry` IN (58951 /*Trigger*/, 59155 /*Book Case*/, 59209 /*Books*/, 60145 /*Points Trigger*/, 60984 /*Controller*/, 61352 /*Story Time*/, 62962 /*Unstable Sha Target*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (59021 /*Bataari Flamecaller*/, 59148 /*Bataari Flamecaller*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=59053; -- Shao-Tien Fist
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59076 /*Commander Hsieh*/, 59821 /*Bao Jian*/, 64448 /*Hopsmaster Chang*/, 64457 /*Teng Firebrew*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=59083; -- Bataari Fire-Warrior
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=33554432 WHERE `entry`=59143; -- Injured Binan Warrior
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (59146 /*Golden Lotus Archer*/, 60690 /*Longying Archer*/, 64008 /*Muckscale Shaman*/, 67296 /*Shieldwall Vindicator*/, 68126 /*Reliquary Blood Knight*/, 68308 /*Reliquary Commander*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=59150; -- Flameweaver Koegler
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=2048 WHERE `entry`=59156; -- Mogu Effigy
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59166 /*Enraged Priest*/, 63257 /*Ik'thik Genemancer*/, 64559 /*Shek'zeer Clutch-Keeper*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280 WHERE `entry`=59183; -- Wounded Defender
+UPDATE `creature_template` SET `speed_walk`=3.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry`=59198; -- Dragon Breath Target
+UPDATE `creature_template` SET `speed_run`=1.071429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=59219; -- Spirit Vortex
+UPDATE `creature_template` SET `unit_class`=1 WHERE `entry`=23385; -- Simon Unit
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59263 /*Merchant Shi*/, 59272 /*Wu-Peng*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=34816 WHERE `entry` IN (59299 /*Scarlet Guardian*/, 59302 /*Sergeant Verdone*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.8571429, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=59309; -- Obedient Hound
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048, `VehicleId`=2046 WHERE `entry`=59319; -- Escaped Yak
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=67584, `VehicleId`=2051 WHERE `entry`=59339; -- Terrified Yak
+UPDATE `creature_template` SET `npcflag`=4739, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=295680, `unit_flags2`=2048 WHERE `entry`=59341; -- Merchant Tantan
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=59342; -- He Softfoot
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=59343; -- Ren Firetongue
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=59372; -- Scarlet Scholar
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59373; -- Scarlet Pupil
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=2048 WHERE `entry` IN (59379 /*Shao-Tien Surveyor*/, 59758 /*Terracotta Warrior*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=33556480 WHERE `entry` IN (59394 /*General Purpose Bunny JMF (Ground)*/, 59677 /*General Purpose Bunny JMF (Look 2, Flying)*/, 60575 /*Terracotta Boss*/, 67221 /*Terracotta Boss*/);
+UPDATE `creature_template` SET `npcflag`=4225, `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59403; -- Whetstone
+UPDATE `creature_template` SET `npcflag`=66179, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59405; -- Li Goldendraft
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133056, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (59408 /*Dead Packer*/, 59896 /*Dead Packer*/, 59897 /*Dead Packer*/, 59898 /*Dead Packer*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59416 /*Broketooth Tosser*/, 59424 /*Dak Dak*/);
+UPDATE `creature_template` SET `speed_run`=1.111111, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133824, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=59427; -- Dead Yeti
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=1333, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59430; -- Hateful Ko Ko
+UPDATE `creature_template` SET `unit_flags`=570720256, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=23594; -- Grimtotem Destroyer
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024 WHERE `entry` IN (59441 /*Admiral Taylor*/, 59442 /*General Nazgrim*/, 59448 /*Rivett Clutchpop*/, 59449 /*Shademaster Kiryn*/, 59450 /*Sully "The Pickle" McLeary*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768 WHERE `entry` IN (59443 /*Broketooth Spear-Haver*/, 60195 /*Broketooth Sneaker*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=2048 WHERE `entry` IN (59444 /*Binan Mender*/, 62677 /*Deadtalker Corpsedefiler*/, 67512 /*Lion's Landing Priest*/, 68114 /*Reliquary Mage*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048 WHERE `entry`=59456; -- Hozen Statue Eye (Right)
+UPDATE `creature_template` SET `speed_walk`=0.4, `BaseAttackTime`=5000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33554496, `unit_flags2`=2099200 WHERE `entry` IN (59481 /*World Trigger*/, 62213 /*Feng Attachment Point*/, 65687 /*Ability Controller*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2068 WHERE `entry`=59491; -- Escaped Shagskin
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (59511 /*Cattail Crab*/, 63068 /*Miles*/, 63069 /*Fester*/, 63084 /*Poe*/, 64782 /*Bandicoon*/, 64783 /*Bandicoon Kit*/, 64784 /*Malayan Quillrat*/, 64785 /*Malayan Quillrat Pup*/, 64786 /*Marsh Fiddler*/, 64799 /*Savory Beetle*/, 64803 /*Clouded Hedgehog*/, 64805 /*Crunchy Scorpion*/, 64807 /*Resilient Roach*/, 65097 /*Hoo*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=59523; -- Bataari Battleyak
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=294912, `unit_flags2`=2048 WHERE `entry`=59526; -- Trail Yakker
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=2048 WHERE `entry`=59527; -- Trail Packer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (59528 /*Cliff Kite*/, 64368 /*Apparition of Fear*/, 64717 /*Dread Kunchong*/, 64937 /*Great Cliff Hawk*/, 66100 /*Apparition of Terror*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (59556 /*Grummle Trail Guide*/, 59578 /*Grummle Trail Guide*/);
+UPDATE `creature_template` SET `npcflag`=65537, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59582 /*Innkeeper Lei Lan*/, 62873 /*Saito the Sleeping Shadow*/, 62996 /*Madam Vee Luo*/);
+UPDATE `creature_template` SET `npcflag`=4225, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59583 /*Trader Jambeezi*/, 61520 /*Fixxit Redhammer*/);
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1.571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2161 WHERE `entry`=59641; -- Monstrous Plainshawk
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=67143680 WHERE `entry`=59669; -- Offering Bowl
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2082 WHERE `entry`=59680; -- Battle Goat
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (59702 /*Prairie Mouse*/, 61171 /*Fledgling Buzzard*/, 61322 /*Polly*/, 61323 /*Wharf Rat*/, 61438 /*Gold Beetle*/, 61459 /*Little Black Ram*/, 61718 /*Jade Oozeling*/, 62242 /*Crested Owl*/, 62257 /*Sand Kitten*/, 62904 /*Yellow-Bellied Marmot*/, 62905 /*Highlands Mouse*/, 62907 /*Highlands Skunk*/, 63062 /*Bandicoon*/, 63095 /*Malayan Quillrat Pup*/, 63096 /*Marsh Fiddler*/, 63291 /*Savory Beetle*/, 63548 /*Crunchy Scorpion*/, 63549 /*Grassland Hopper*/, 63842 /*Golden Civet Kitten*/, 63849 /*Yellow-Bellied Bullfrog*/, 63953 /*Kuitan Mongoose*/, 63954 /*Mongoose Pup*/, 64238 /*Resilient Roach*/, 64242 /*Clouded Hedgehog*/, 64248 /*Summit Kid*/, 64804 /*Silent Hedgehog*/, 65190 /*Mongoose*/, 68839 /*Anodized Robo Cub*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59703; -- Brother Trailscenter
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=67584 WHERE `entry`=59718; -- Burilgi Despoiler
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=2048 WHERE `entry`=59773; -- Terracotta Guardian
+UPDATE `creature_template` SET `HoverHeight`=3 WHERE `entry` IN (59782 /*Cypress Condor*/, 26838 /*Dreadtalon*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=59797; -- Mogujia Soul-Caller
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (59814 /*Dead Packer*/, 59815 /*Dead Packer*/, 59816 /*Dead Packer*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59826 /*Ruqin Elder*/, 60730 /*Longying Ranger*/, 60756 /*Osul Mistbreaker*/, 61252 /*Shado-Pan Guard*/, 61968 /*Shado-Pan Marksman*/, 62162 /*Horrorscale Scorpid*/, 63494 /*Leechfingers*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59859; -- Trail Yakker
+UPDATE `creature_template` SET `npcflag`=4225, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59908 /*Jaluu the Generous*/, 65165 /*Doris Chiltonius*/, 65172 /*Len at Arms*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=64, `unit_flags2`=2099200, `VehicleId`=2115 WHERE `entry`=59915; -- Jasper Guardian
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2110 WHERE `entry`=59920; -- Monkey Idol Target
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry` IN (59926 /*Bunny: Refugee Caravan*/, 62248 /*Farwatch Landing Controller*/, 65287 /*Survival Ring Blades Controller*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=59959; -- Mokimo the Strong
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59967 /*Suspicious Snow Pile*/, 61761 /*Makkie*/, 61843 /*Kun-Lai Corpsepicker*/, 62643 /*Bratty Liu*/, 62644 /*Little Wen*/, 62645 /*Shy Sheng*/, 62646 /*Studious Cheng*/, 64578 /*Jong Jun-Keet*/, 64579 /*Jong Wik-Wung*/);
+UPDATE `creature_template` SET `speed_run`=4.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=2099 WHERE `entry`=59984; -- Trained Jibberwing
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200, `VehicleId`=2149 WHERE `entry`=60009; -- Feng the Accursed
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=4196352 WHERE `entry` IN (60028 /*ELM General Purpose Bunny Gigantic (scale x6)*/, 61330 /*Energy Vortex Stalker*/, 63121 /*Mogu Ritual Bunny*/, 65297 /*Invisible Stalker*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=64, `unit_flags2`=2099200, `VehicleId`=2116 WHERE `entry`=60047; -- Amethyst Guardian
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=64, `unit_flags2`=2099200, `VehicleId`=2113 WHERE `entry`=60051; -- Cobalt Guardian
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4196352 WHERE `entry` IN (60089 /*Stone Guard Controller*/, 60788 /*Pure Light Terrace*/, 63292 /*Gale Winds Stalker*/, 63421 /*Storm Unleashed Stalker Start Loc*/, 63423 /*Storm Unleashed West Loc Stalker*/, 63424 /*Storm Unleashed East Loc Stalker*/);
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.2857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=1141374976, `VehicleId`=2119 WHERE `entry`=60140; -- Mine Cart
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2099200, `VehicleId`=2132 WHERE `entry`=60143; -- Gara'jal the Spiritbinder
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=60163; -- Wu Kao Lee
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=16779264 WHERE `entry` IN (60164 /*Sha-Infested Yaungol*/, 68241 /*Sha-Infested Yaungol*/);
+UPDATE `creature_template` SET `npcflag`=80, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=34816, `HoverHeight`=4.5 WHERE `entry`=60167; -- Skydancer Shun
+UPDATE `creature_template` SET `npcflag`=8193, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60231; -- Wing Nga
+UPDATE `creature_template` SET `npcflag`=8192, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (60232 /*Gee Hung*/, 61122 /*Tania Summerbreeze*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_class`=1 WHERE `entry`=24410; -- Vazruden the Herald Image
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=0.4, `speed_run`=0.1428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=1141377024, `VehicleId`=2140 WHERE `entry`=60283; -- Track Switch
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570688256, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=60288; -- Dead Firebough Nook Villager
+UPDATE `creature_template` SET `unit_class`=8 WHERE `entry`=24461; -- Chillmere Oracle
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=154 WHERE `entry`=60375; -- Zandalari Skullcharger
+UPDATE `creature_template` SET `speed_walk`=6, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33587200, `unit_flags2`=1074266112, `VehicleId`=2261 WHERE `entry`=60378; -- Mine Cart
+UPDATE `creature_template` SET `speed_walk`=6, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33587200, `unit_flags2`=2621440 WHERE `entry`=60379; -- Mine Cart
+UPDATE `creature_template` SET `speed_walk`=6, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33587200, `unit_flags2`=1074266112, `VehicleId`=2260 WHERE `entry`=60380; -- Mine Cart
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=60381; -- Zandalari Infiltrator
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2097152, `VehicleId`=2145, `HoverHeight`=1.045 WHERE `entry`=60384; -- Zandalari Pterror Wing
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2099200, `VehicleId`=2448 WHERE `entry`=60385; -- Zandalari War Wyvern
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33685504, `unit_flags2`=2099200 WHERE `entry`=60386; -- Zandalari Terror Rider
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.214286, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=69206016 WHERE `entry`=60396; -- Emperor's Rage
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=69206016 WHERE `entry`=60397; -- Emperor's Strength
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=69206016 WHERE `entry`=60398; -- Emperor's Courage
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587520, `unit_flags2`=2097152, `VehicleId`=2504 WHERE `entry`=60399; -- Qin-xi
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33554752, `unit_flags2`=2097152, `VehicleId`=2158 WHERE `entry`=60400; -- Jan-xi
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=60402; -- Zandalari Fire-Dancer
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=4194304 WHERE `entry`=60410; -- Elegon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570720256, `unit_flags2`=33556481, `dynamicflags`=32 WHERE `entry`=60455; -- Osul Invader
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=64, `unit_flags2`=1073741824, `VehicleId`=2189 WHERE `entry`=60491; -- Sha of Anger
+UPDATE `creature_template` SET `speed_run`=1.801429, `BaseAttackTime`=1538, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60493; -- Kafa-Crazed Mountain Goat
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=69208064, `VehicleId`=2151 WHERE `entry`=60512; -- Spirit Totem
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=69208064 WHERE `entry` IN (60513 /*Spirit Totem*/, 63786 /*Eye of the Empress Gas Visual Bunny*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2099200 WHERE `entry` IN (60558 /*Zandalari Spirit*/, 60559 /*Zandalari Spirit*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587264, `unit_flags2`=2099200 WHERE `entry`=60576; -- Stone Quilen
+UPDATE `creature_template` SET `speed_run`=1.571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2099200, `VehicleId`=2466 WHERE `entry` IN (60583 /*Protector Kaolan*/, 60585 /*Elder Regail*/, 60586 /*Elder Asani*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166080, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=60593; -- Experienced Guide
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2099200 WHERE `entry`=60644; -- Troll Explosives
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=35686400 WHERE `entry`=60648; -- Ancient Mogu Machine
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=18432 WHERE `entry`=60669; -- Long-Haired Yak
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (60683 /*Dmong Naruuk*/, 60802 /*Jahesh of Osul*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33816576, `unit_flags2`=2099204 WHERE `entry` IN (60701 /*Zian of the Endless Shadow*/, 61250 /*Sorcerer Mogu*/, 61421 /*Zian of the Endless Shadow*/);
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33570816 WHERE `entry`=60705; -- Osul Ballista
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33816576, `unit_flags2`=2099204, `VehicleId`=2166 WHERE `entry` IN (60708 /*Meng the Demented*/, 61429 /*Meng the Demented*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=5000, `RangeAttackTime`=2000, `unit_flags`=33816576, `unit_flags2`=2099204 WHERE `entry`=60709; -- Qiang the Merciless
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33816576, `unit_flags2`=2099204 WHERE `entry` IN (60710 /*Subetai the Swift*/, 61345 /*Mogu Archer*/, 61347 /*Kingsguard*/, 61427 /*Subetai the Swift*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60726; -- Ku-Tong
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2324 WHERE `entry`=60728; -- Battat
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=2048 WHERE `entry` IN (60733 /*Swamp Rodent*/, 67099 /*Succula*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=60735; -- Katak the Defeated
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=2048 WHERE `entry`=60736; -- Chain Bunny
+UPDATE `creature_template` SET `speed_walk`=3.6, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=33556480 WHERE `entry`=60768; -- Emperor's Strength
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4227072 WHERE `entry`=60776; -- Empyreal Focus
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.8571429, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry`=60847; -- Flanking Mogu
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=60859; -- Dead Mountain Goat
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=2048 WHERE `entry` IN (60862 /*Steam Bunny*/, 68676 /*Explosives*/);
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60866; -- Upland Eagle
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=60899; -- Lin Silentstrike
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=60908; -- Archery Target Base
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry`=60957; -- Minion of Fear Controller
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2097152 WHERE `entry`=60958; -- Pinning Arrow
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2048 WHERE `entry` IN (60960 /*Core Target Stalker*/, 63668 /*Raging Flurry Stalker Left*/, 63669 /*Raging Flurry Stalker Right*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60973; -- Waterspeaker Gorai
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.4285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048, `VehicleId`=2179 WHERE `entry`=60997; -- The Wrestler
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=320, `unit_flags2`=1073776640 WHERE `entry`=60999; -- Sha of Fear
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (61038 /*Yang Guoshi*/, 61042 /*Cheng Kang*/, 61046 /*Jinlun Kun*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry`=61069; -- Shai Hu
+UPDATE `creature_template` SET `npcflag`=1073741824 WHERE `entry`=61088; -- Eternal Strider
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554496, `unit_flags2`=2048 WHERE `entry`=61124; -- Phase Controller
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (61131 /*Mogu'shan Secret-Keeper*/, 64063 /*Mogu'shan Arcanist*/, 64068 /*Mogu'shan Engine Keeper*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (61139 /*Shan-xi Watershaper*/, 63570 /*Sra'thik Pool-Tender*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (61258 /*Rat Snake*/, 61320 /*Forest Spiderling*/, 62187 /*Stone Armadillo*/, 62190 /*Coral Snake*/, 63057 /*Sifang Otter*/, 63304 /*Jungle Grub*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (61260 /*Coach Rok Rok*/, 64012 /*Egg Shell*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=16779264 WHERE `entry`=61303; -- Kobai
+UPDATE `creature_template` SET `npcflag`=1073741824, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (61314 /*Crimson Moth*/, 65187 /*Amber Moth*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.4, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (61321 /*Lizard Hatchling*/, 62185 /*Horny Toad*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587200, `unit_flags2`=2099200 WHERE `entry` IN (61334 /*Cursed Mogu Sculpture*/, 61989 /*Cursed Mogu Sculpture*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=4000, `RangeAttackTime`=2000, `unit_flags`=33816576, `unit_flags2`=2099204 WHERE `entry` IN (61341 /*Mounted Mogu*/, 61423 /*Qiang the Merciless*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=61348; -- Lorewalker Cho
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61377; -- Kri'thik Screamer
+UPDATE `creature_template` SET `unit_flags`=33536 WHERE `entry`=25589; -- Bonker Togglevolt
+UPDATE `creature_template` SET `npcflag`=8192, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (61473 /*Kite Master Ni*/, 61759 /*Shin the Weightless*/, 62909 /*Kite Master Yao-Li*/, 63497 /*Mai of the Wall*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=61490; -- Tankiss
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=69208064 WHERE `entry`=61500; -- Pool of Corruption
+UPDATE `creature_template` SET `npcflag`=641, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61519; -- Trader Hozenpaw
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=61537; -- Enraged Cavalier
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (61566 /*Inkgill Dissenter*/, 68984 /*Ruben Holen*/);
+UPDATE `creature_template` SET `speed_walk`=0.64, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (61619 /*Rankbite Tortoise*/, 66462 /*Rankbite Ancient*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133056, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=61648; -- Dead Pandaren Guard
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570720256, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=61655; -- Dead Inkgill Spearman
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=570720256, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=61656; -- Dead Inkgill Priest
+UPDATE `creature_template` SET `npcflag`=8192, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (61744 /*Tabo the Flyer*/, 61745 /*Soaring Paw*/, 65863 /*Morla Skyblade*/);
+UPDATE `creature_template` SET `npcflag`=641, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61756; -- Little Elsa
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133056, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (61806 /*Liu of the Thousand Blows*/, 61810 /*Shiya Boldblade*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=2, `unit_flags`=768, `VehicleId`=29 WHERE `entry`=25988; -- Stampeding Mammoth
+UPDATE `creature_template` SET `speed_run`=1.289683, `unit_flags`=768 WHERE `entry`=25989; -- Stampeding Caribou
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=3000, `unit_flags`=768 WHERE `entry`=25990; -- Stampeding Rhino
+UPDATE `creature_template` SET `npcflag`=643 WHERE `entry`=26110; -- Librarian Serrah
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61970; -- Mistblade Ripper
+UPDATE `creature_template` SET `speed_walk`=0.4, `BaseAttackTime`=5000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33554496, `unit_flags2`=2099200, `VehicleId`=2223 WHERE `entry`=62004; -- Ghost Essence
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=0 WHERE `entry`=26170; -- Thassarian
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67143680 WHERE `entry`=62077; -- Dreadspinner Egg
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (62112 /*Bowmistress Li*/, 64566 /*Sunwalker Dezco*/);
+UPDATE `creature_template` SET `HoverHeight`=12.5 WHERE `entry`=26276; -- Nexus Guardian
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480, `VehicleId`=1416 WHERE `entry`=62126; -- Farwatch Hawkmaster
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2099201, `dynamicflags`=32 WHERE `entry`=62128; -- Kor'thik Fleetwing
+UPDATE `creature_template` SET `HoverHeight`=1.6 WHERE `entry`=26322; -- Arcane Wyrm
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.4285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554752, `unit_flags2`=4196352, `VehicleId`=584 WHERE `entry`=62164; -- Garalon
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2129921, `dynamicflags`=32 WHERE `entry`=62203; -- Klaxxi'va Tik
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry` IN (62204 /*Dusklight Initiate*/, 67522 /*Shadowforge Looter*/);
+UPDATE `creature_template` SET `npcflag`=4194435 WHERE `entry`=26377; -- Squire Percy
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=1073743872 WHERE `entry` IN (62237 /*Yellow Beam*/, 62238 /*Blue Beam*/, 62239 /*Green Beam*/, 62240 /*Red Beam*/);
+UPDATE `creature_template` SET `unit_flags`=33536 WHERE `entry` IN (26402 /*Anub'ar Ambusher*/, 62438 /*Injured Gao-Ran Defender*/, 33479 /*Stormwind Valiant*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=33556480 WHERE `entry`=62253; -- Shado-Pan Hawk
+UPDATE `creature_template` SET `HoverHeight`=2 WHERE `entry`=26483; -- Dragonbone Condor
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2131968 WHERE `entry`=62377; -- Gardener Fran
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2099200 WHERE `entry` IN (62397 /*Wind Lord Mel'jarak*/, 62402 /*Kor'thik Elite Blademaster*/, 62405 /*Sra'thik Amber-Trapper*/, 62408 /*Zar'thik Battle-Mender*/, 64916 /*Kor'thik Swarmguard*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.571429, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=64, `unit_flags2`=2097152, `VehicleId`=2270, `HoverHeight`=10 WHERE `entry`=62442; -- Tsulong
+UPDATE `creature_template` SET `speed_run`=1.904763, `HoverHeight`=2.955 WHERE `entry`=26607; -- Anub'ar Blightbeast
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=69206016 WHERE `entry` IN (62447 /*The Kor'thik*/, 62451 /*The Sra'thik*/, 62452 /*The Zar'thik*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=536903680, `unit_flags2`=34816 WHERE `entry`=62450; -- Lanfen, Brewer of Fine Teas
+UPDATE `creature_template` SET `unit_flags`=33554496 WHERE `entry`=26620; -- Drakkari Guardian
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2099200 WHERE `entry`=62509; -- Amber Parasite
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2099200 WHERE `entry`=62511; -- Amber-Shaper Un'sok
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=320, `unit_flags2`=2099200 WHERE `entry`=62543; -- Blade Lord Ta'yak
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (62546 /*Protector Yi*/, 65160 /*Blacktalon Watcher*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry` IN (62553 /*Gai-Cho Earthtalker*/, 62577 /*Gai-Cho Cauterizer*/, 63998 /*Oracle Hiss'ir*/);
+UPDATE `creature_template` SET `unit_flags`=33600 WHERE `entry`=26723; -- Keristrasza
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (62572 /*Kri'thik Aggressor*/, 62679 /*Defiled Spirit*/, 63871 /*Ringtail Bandit*/, 64622 /*Ik'thik Whisperer*/, 64659 /*Jinyu Waterspeaker*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=62573; -- Marksman Ye
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=62601; -- Motherseed
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry`=62602; -- Kri'thik Screecher
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=62613; -- Uruk
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=4196352 WHERE `entry`=62671; -- BANANAS
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=4196352 WHERE `entry`=62672; -- Harrison Jones
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2.285714, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=2164736, `VehicleId`=2266 WHERE `entry`=62711; -- Amber Monstrosity
+UPDATE `creature_template` SET `npcflag`=2, `unit_flags`=537165824 WHERE `entry`=26896; -- Nozzlerust Supply Runner
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=2048 WHERE `entry`=62759; -- Kor'thik Scorpid
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4196352 WHERE `entry`=62762; -- Amber Pool Stalker
+UPDATE `creature_template` SET `speed_run`=0.7857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=62764; -- Rikkilea Flitterling
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=62770; -- Rikkitun Villager
+UPDATE `creature_template` SET `HoverHeight`=7.5 WHERE `entry`=26933; -- Wyrmrest Guardian
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=62771; -- Chief Rikkitun
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=62772; -- Boggeo
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=4194304, `VehicleId`=2323 WHERE `entry`=62837; -- Grand Empress Shek'zeer
+UPDATE `creature_template` SET `npcflag`=4736 WHERE `entry`=27011; -- Broff Bombast
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry` IN (62853 /*Paragon 05 Bunny*/, 64555 /*Glowing Amber Effect*/, 65512 /*Warlord Gurthan Controller*/, 67088 /*Hidden Paragon*/, 68952 /*Bizmo's Brawlpub Entrance*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537165824, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=62876; -- Withered Husk
+UPDATE `creature_template` SET `npcflag`=66177, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=62877; -- Stained Mug
+UPDATE `creature_template` SET `npcflag`=66177, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (62879 /*Rude Sho*/, 62917 /*Tong the Fixer*/, 63008 /*Brewmaster Skye*/, 63016 /*San the Sea Calmer*/);
+UPDATE `creature_template` SET `npcflag`=66177, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (62882 /*Kai the Restless*/, 62883 /*Mai the Sleepy*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=62906; -- Highlands Turkey
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=62929; -- Travel Yak
+UPDATE `creature_template` SET `npcflag`=4194433, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=62935; -- Kama the Beast Tamer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2097152, `unit_flags2`=2048 WHERE `entry`=62941; -- Right
+UPDATE `creature_template` SET `speed_walk`=5.6, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2164736, `VehicleId`=2320 WHERE `entry`=62980; -- Imperial Vizier Zor'lok
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.4285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33816640, `unit_flags2`=1073743872 WHERE `entry`=62983; -- Lei Shi
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=570720256, `unit_flags2`=2099200 WHERE `entry`=62995; -- Animated Protector
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=63007; -- Kyparite
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=63009; -- Master Snowdrift
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.571429, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags2`=4194304, `VehicleId`=2267, `HoverHeight`=10 WHERE `entry`=63025; -- Tsulong
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (63030 /*Enslaved Bonesmasher*/, 63031 /*Set'thik Fanatic*/, 63032 /*Sra'thik Shield Master*/, 63048 /*Kor'thik Slicer*/, 63049 /*Set'thik Swiftblade*/, 63853 /*Zar'thik Supplicant*/, 66181 /*Zar'thik Supplicant*/, 67177 /*Zar'thik Supplicant*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (63035 /*Zar'thik Zealot*/, 63036 /*Kor'thik Extremist*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=37879808 WHERE `entry`=63053; -- Garalon's Leg
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.2, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=63060; -- Softshell Snapling
+UPDATE `creature_template` SET `npcflag`=51, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (63067 /*Naleen*/, 63070 /*Valeena*/, 63073 /*Ansel Fincap*/, 63083 /*Will Larsons*/);
+UPDATE `creature_template` SET `speed_run`=1.071429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=69208064 WHERE `entry` IN (63089 /*Shao-Tien Ritual Statue*/, 63090 /*Shao-Tien Ritual Statue*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=63094; -- Malayan Quillrat
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=4327424 WHERE `entry`=63191; -- Garalon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=4196352 WHERE `entry` IN (63207 /*Storm Unleashed West 1 Stalker*/, 63208 /*Storm Unleashed West 2 Stalker*/, 63209 /*Storm Unleashed West 3 Stalker*/, 63212 /*Storm Unleashed East 1 Stalker*/, 63213 /*Storm Unleashed East 2 Stalker*/, 63214 /*Storm Unleashed East 3 Stalker*/, 63628 /*Storm Unleashed East 1 Target Stalker*/, 63629 /*Storm Unleashed East 2 Target Stalker*/, 63630 /*Storm Unleashed East 3 Target Stalker*/, 63631 /*Storm Unleashed West 1 Target Stalker*/, 63632 /*Storm Unleashed West 2 Target Stalker*/, 63633 /*Storm Unleashed West 3 Target Stalker*/);
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=63275; -- Corrupted Protector
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=63277; -- Dog
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=16779264 WHERE `entry`=63329; -- Emperor Crab
+UPDATE `creature_template` SET `unit_flags`=537133312, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=27501; -- Westfall Brigade Marine
+UPDATE `creature_template` SET `unit_flags`=537133056, `unit_flags2`=2099201, `dynamicflags`=32 WHERE `entry`=27530; -- Ruby Keeper
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=134219776 WHERE `entry`=63490; -- Hatescale Spitter
+UPDATE `creature_template` SET `npcflag`=8194, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63498; -- Min the Breeze Rider
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=526336 WHERE `entry`=63510; -- Wulon
+UPDATE `creature_template` SET `speed_walk`=3.6, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=63517; -- The Spring Drifter
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2048 WHERE `entry` IN (63535 /*Elder Shiao*/, 63542 /*Elder Tsulan*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (63550 /*Alpine Foxling*/, 63551 /*Alpine Foxling Kit*/, 63557 /*Tolai Hare*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry` IN (63563 /*Inhale Point*/, 65756 /*Player Kicker*/);
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1.571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2349 WHERE `entry`=63568; -- Amber-Ridden Mushan
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.9285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=63569; -- Amber Searsting
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=33556480 WHERE `entry`=63573; -- Lightning Tile Trap Bunny
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133824, `unit_flags2`=18433, `dynamicflags`=32 WHERE `entry`=63576; -- Osul Fire-Warrior
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry`=63589; -- Set'thik Windblade
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1.714286, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry`=63591; -- Kor'thik Reaver
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=63592; -- Set'thik Gustwing
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=63593; -- Set'thik Zephyrian
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags`=768 WHERE `entry`=27766; -- Image of Kel'Thuzad
+UPDATE `creature_template` SET `speed_run`=2.142857, `unit_flags`=832 WHERE `entry`=27768; -- Image of Razuvious
+UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry` IN (27806 /*Brew Vendor*/, 27820 /*Brew Vendor*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=768 WHERE `entry`=27810; -- Brew Vendor
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=33556480 WHERE `entry`=63728; -- Ik'thik Amberstinger
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=67143680 WHERE `entry`=63740; -- Amber Tap
+UPDATE `creature_template` SET `speed_walk`=1.6, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63755; -- Swamp Strider
+UPDATE `creature_template` SET `unit_flags`=294912 WHERE `entry`=28025; -- Rainspeaker Oracle
+UPDATE `creature_template` SET `speed_walk`=3.2, `BaseAttackTime`=5000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33554496, `unit_flags2`=2099200 WHERE `entry`=63942; -- Sha of Fear
+UPDATE `creature_template` SET `npcflag`=131072, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (63964 /*Vaultkeeper Kan*/, 63965 /*Vaultkeeper Goldpenny*/, 63966 /*Vaultkeeper Shifen*/, 63968 /*Vaultkeeper Xifa*/, 63969 /*Vaultkeeper Fizznoggin*/, 63971 /*Vaultkeeper Jiaku*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35651584 WHERE `entry`=63972; -- Krik'thik Hiveling
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry`=63976; -- Krik'thik Needler
+UPDATE `creature_template` SET `npcflag`=4194433, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63986; -- Tracker Lang
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63987; -- Shelly
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2438 WHERE `entry`=63993; -- Muckscale Ripper
+UPDATE `creature_template` SET `npcflag`=131, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63994; -- Challenger Wuli
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (63996 /*Elder Liao*/, 64582 /*Gentle San*/);
+UPDATE `creature_template` SET `npcflag`=4227, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64001; -- Sage Lotusbloom
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64038 /*Marli Two-Toes*/, 64040 /*Tina Wang*/, 64065 /*Brewmaster Roland*/, 64066 /*Brewmaster Vudia*/, 64078 /*Sarya Teaflower*/, 64100 /*Meng Chi the Fist*/, 65856 /*Ba'kon*/, 66998 /*Jinho the Wind Breaker*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64039 /*Hoka Stonecrush*/, 64049 /*Victor Pearce*/, 64050 /*Derenda Enkleshin*/, 64051 /*Esha the Loommaiden*/, 64053 /*Fang Whitescroll*/, 64054 /*Krogo Darkhide*/, 64056 /*Hafuna Landwalker*/, 64058 /*Jorunga Stonehoof*/, 64059 /*Razzie Coalwrench*/, 64060 /*Tixit Brightfuse*/, 64062 /*Gentle Dari*/, 64064 /*Vanaris Whitesong*/, 64067 /*Barleyflower*/, 64126 /*Stephen Wong*/);
+UPDATE `creature_template` SET `npcflag`=643, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64041; -- Mifan
+UPDATE `creature_template` SET `unit_flags`=2181300992 WHERE `entry`=28206; -- [DND] L70ETC Drums
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64043 /*Uncle Gus*/, 64106 /*Erin*/, 64107 /*Sadi*/, 64118 /*Erni Tanboshi*/, 64119 /*Dirki Tanboshi*/, 64122 /*Andrew Vestal*/, 64127 /*Frances Lin*/, 64128 /*Edward Hanes*/, 64131 /*Evangelia*/, 64134 /*Jontan Dum'okk*/, 64142 /*Jafu Windsword*/, 64143 /*Kressu*/, 64145 /*Kavanna Gooddreg*/, 64588 /*Armorer Relna*/, 65266 /*David Harrington*/);
+UPDATE `creature_template` SET `npcflag`=134217728, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=64044; -- Thaumaturge Anjool
+UPDATE `creature_template` SET `npcflag`=642, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64047; -- Kurong Caskhead
+UPDATE `creature_template` SET `npcflag`=2176, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64048; -- Sheena Sunweaver
+UPDATE `creature_template` SET `npcflag`=128, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64057; -- Moko Powderrun
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (64061 /*Mogu'shan Warden*/, 64947 /*Mogu'shan Warden*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64102 /*Seeker Arusshi*/, 64478 /*Aqualyte Shashin*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64105; -- Muffin
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64114; -- Joan Tremblay
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=64121; -- Eli
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.428571, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=64132; -- Amber Growth
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry`=28319; -- Wintergrasp Siege Turret
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=64183; -- Enormous Stone Quilen
+UPDATE `creature_template` SET `npcflag`=211, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64231; -- Sungshin Ironpaw
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.5714286, `BaseAttackTime`=5000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33555264, `unit_flags2`=2099200 WHERE `entry`=64247; -- Lesser Sha
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=35651584 WHERE `entry` IN (64274 /*Krik'thik War Wagon*/, 64275 /*Krik'thik Catapult*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (64292 /*Chuho Dawnchaser*/, 64293 /*Gunny Powderkeg*/, 64294 /*Teya Dawnchaser*/, 64296 /*Raj'ku*/, 64948 /*Wandering Celebrant*/, 66705 /*Wandering Celebrant*/);
+UPDATE `creature_template` SET `npcflag`=640, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64319; -- Den Den
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (64330 /*Julia Stevens*/, 66372 /*Merda Stronghoof*/, 66412 /*Elena Flutterfly*/, 66512 /*Deiza Plaguehorn*/, 66520 /*Durin Darkhammer*/, 66730 /*Hyuna of the Shrines*/, 66734 /*Farmer Nishi*/);
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (64334 /*Fangs*/, 64335 /*Slither*/, 65659 /*Teensy*/, 65660 /*Clucks*/, 65661 /*Foe Reaper 800*/, 65668 /*Flipsy*/, 66375 /*Rockhide*/, 66376 /*Ambershell*/, 66414 /*Lacewing*/, 66416 /*Beacon*/, 66417 /*Willow*/, 66485 /*Plaguebringer*/, 66486 /*Bleakspinner*/, 66487 /*Carrion*/, 66495 /*Moltar*/, 66496 /*Ignious*/, 66497 /*Comet*/, 66709 /*Dor the Wall*/, 66710 /*Fangor*/, 66711 /*Skyshaper*/, 66715 /*Brood of Mothallus*/, 66716 /*Toothbreaker*/, 66718 /*Siren*/, 66964 /*Dipsy*/, 66965 /*Flufftail*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=67635200, `VehicleId`=2365 WHERE `entry`=64336; -- Setting Sun Turret
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `HoverHeight`=5 WHERE `entry`=64346; -- Parasitoid Sha
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.16, `speed_run`=0.05714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=64352; -- Rapana Whelk
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262656, `unit_flags2`=67635200, `VehicleId`=2367 WHERE `entry`=64369; -- Hot Oil Cauldron
+UPDATE `creature_template` SET `speed_walk`=0.16, `speed_run`=0.05714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64375; -- Shimmershell Snail
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64405; -- Zealous Bug
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=64443; -- Enchanted Plant
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64449 /*Kim Won Gi*/, 64451 /*Yun Applebarrel*/, 67181 /*Chao of the Hundred Crabs*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry` IN (64453 /*Set'thik Windblade*/, 64454 /*Zar'thik Augurer*/, 64458 /*Kor'thik Warsinger*/);
+UPDATE `creature_template` SET `speed_walk`=0.555556, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64456; -- Chian Chian
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64464; -- Andi
+UPDATE `creature_template` SET `npcflag`=128, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64465; -- Noodles
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry`=64526; -- Ancient Mogu Artifact
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=67110912 WHERE `entry` IN (64529 /*Mogu Runes (Horizontal Visual)*/, 64600 /*Mogu Runes (Vertical Visual)*/, 65227 /*Mogu Runes (Pitch Forward 120) DNT*/, 65228 /*Mogu Runes (Pitch Forward 180) DNT*/);
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=4.95 WHERE `entry`=64535; -- Cloud Serpent
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (64574 /*Vaultkeeper Edouin*/, 68979 /*Voidbinder Zorlan*/, 68980 /*Voidbinder Sturzah*/, 68981 /*Voidbinder Shadzor*/, 68982 /*Voidbinder Lunshur*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64585 /*Reeler Uko*/, 64940 /*Merchant Cheng*/, 66685 /*Danky*/, 66973 /*Kai Featherfall*/);
+UPDATE `creature_template` SET `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64587; -- Horde Peacekeeper
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64610; -- Lyalia
+UPDATE `creature_template` SET `npcflag`=2177, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64613; -- Magister Xintar
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=34816 WHERE `entry`=64616; -- Wrathion
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (64641 /*Fen Stalker*/, 67423 /*Shieldwall Peasant*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=64724; -- Karanosh
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64787 /*Sifang Otter*/, 64798 /*Amethyst Spiderling*/, 65343 /*Bone Spider*/);
+UPDATE `creature_template` SET `speed_walk`=0.2, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64789; -- Softshell Snapling
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (64790 /*Alpine Foxling*/, 64791 /*Alpine Foxling Kit*/);
+UPDATE `creature_template` SET `unit_flags`=537133056, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=64793; -- Prairie Mouse
+UPDATE `creature_template` SET `speed_walk`=0.16, `speed_run`=0.05714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=64806; -- Rapana Whelk
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64890; -- Vess-Guard Na'kal
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=67110912 WHERE `entry`=64891; -- Resonating Crystal Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912 WHERE `entry`=64895; -- Survival Ring Blades Credit
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=64902; -- Kor'thik Fleshrender
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=64, `unit_flags2`=2099200 WHERE `entry`=64917; -- Sra'thik Ambercaller
+UPDATE `creature_template` SET `npcflag`=16, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry`=64924; -- Guyo Crystalgear
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry` IN (64925 /*Tivilix Bangalter*/, 68013 /*Gezzrah*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (64949 /*Wandering Pilgrim*/, 66706 /*Wandering Pilgrim*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=64971; -- Zan'thik Impaler
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=64973; -- Zan'thik Manipulator
+UPDATE `creature_template` SET `npcflag`=17, `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65121; -- Clean Pelt
+UPDATE `creature_template` SET `speed_run`=1.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (65136 /*Golden Lotus Outrider*/, 65140 /*Golden Lotus Pathguard*/);
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (65164 /*Lok'nor Bloodfist*/, 65514 /*Ethan Natice*/, 65515 /*Acon Deathwielder*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65169; -- Jade Colossus
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=4196352 WHERE `entry`=65178; -- Adele
+UPDATE `creature_template` SET `npcflag`=1073741824, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=16779264 WHERE `entry`=65203; -- Emperor Crab
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570688256, `unit_flags2`=67110913, `dynamicflags`=32 WHERE `entry`=65269; -- Orange Slime
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65274; -- Zan'thik Manipulator
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=256 WHERE `entry`=29477; -- Earthen Defender
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=4196352, `VehicleId`=1935, `HoverHeight`=5.4 WHERE `entry`=65335; -- War Serpent
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=4196352, `HoverHeight`=5.4 WHERE `entry`=65336; -- War Serpent
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry`=65379; -- Bucket of Meaty Dog Food
+UPDATE `creature_template` SET `speed_walk`=0.6, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2415 WHERE `entry`=65404; -- Shuffling Mistlurker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35653632, `VehicleId`=2431 WHERE `entry`=65432; -- Kyparite Pulverizer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (65496 /*Dread Fearbringer*/, 65632 /*Ik'thik Terrorclaw*/, 68318 /*Dalan Nightbreaker*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=320, `unit_flags2`=1073743872 WHERE `entry` IN (65498 /*Zar'thik Battle-Mender*/, 65499 /*Sra'thik Amber-Trapper*/, 65500 /*Kor'thik Elite Blademaster*/, 65501 /*Wind Lord Mel'jarak*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912, `VehicleId`=2419 WHERE `entry`=65519; -- Mantid Spear [DNT]
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912 WHERE `entry` IN (65521 /*[DNT] Speared Klaxxi*/, 65524 /*[DNT] Speared Klaxxi*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags2`=2048 WHERE `entry` IN (65546 /*Sekrit*/, 65547 /*Sekret*/, 67861 /*Reliquary Scout*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=65565; -- Squeakers
+UPDATE `creature_template` SET `unit_flags`=570721088, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=29730; -- Frostborn Stormrider
+UPDATE `creature_template` SET `VehicleId`=0 WHERE `entry`=29732; -- Fjorlin Frostbrow
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=65582; -- Ik'thik Kunchong
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=71337984 WHERE `entry`=65593; -- Brazier
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=71337984 WHERE `entry`=65597; -- Burning Brazier
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=65629; -- Upland Raven
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (65648 /*Old MacDonald*/, 65651 /*Lindsay*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=69208064 WHERE `entry`=65736; -- Return to the Terrace
+UPDATE `creature_template` SET `speed_walk`=2.4, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=34816 WHERE `entry`=65737; -- Cart
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048, `VehicleId`=2436 WHERE `entry`=65792; -- Crab Pile
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=67110912 WHERE `entry`=65815; -- Mogu Effigy
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry`=65818; -- Mistfall Villager
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4229120 WHERE `entry`=65824; -- Shao-Tien Behemoth
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (65851 /*Crimson Pandaren Phoenix*/, 66970 /*Violet Pandaren Phoenix*/, 66971 /*Ashen Pandaren Phoenix*/, 66972 /*Emerald Pandaren Phoenix*/);
+UPDATE `creature_template` SET `npcflag`=640, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65859; -- Beige Sugar
+UPDATE `creature_template` SET `npcflag`=80, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65862; -- Ala'thinel
+UPDATE `creature_template` SET `npcflag`=16, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65877; -- Han Flowerbloom
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570426112, `unit_flags2`=37750785, `dynamicflags`=32 WHERE `entry`=65886; -- Dead Kyparite Pulverizer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=570458880, `unit_flags2`=33556481, `dynamicflags`=32 WHERE `entry`=65887; -- Dead Muckscale
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=4196352 WHERE `entry`=65962; -- Shao-Tien Behemoth
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110914 WHERE `entry`=66091; -- Referee
+UPDATE `creature_template` SET `speed_walk`=0.64, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=2048 WHERE `entry`=66099; -- Riverbank Barbshell
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=34816 WHERE `entry` IN (66186 /*Luckydo*/, 66191 /*Luckydo*/, 66197 /*Luckydo*/);
+UPDATE `creature_template` SET `speed_walk`=1.111112, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66188; -- Amberscale Basilisk
+UPDATE `creature_template` SET `speed_run`=1.190476, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=66229; -- Springtail Thumper
+UPDATE `creature_template` SET `npcflag`=4194433, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (66244 /*Su the Tamer*/, 66248 /*Tigermistress Min-To*/, 66249 /*Rough-rider Kim*/, 68989 /*Beastblast Babblesnaff*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=4196354 WHERE `entry`=66305; -- Generic Bunny - PRK (Gigantic AOI)
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2097152, `unit_flags2`=2048 WHERE `entry` IN (66306 /*Blacktalon Agent*/, 66404 /*Blacktalon Sentry*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=66310; -- Shan'ze Obliterator
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=66315; -- Shan'ze Stonebender
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=37750784 WHERE `entry`=66316; -- Amber Fragment
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=33024 WHERE `entry` IN (30534 /*Elder Kilias*/, 30535 /*Elder Yurauk*/);
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=66377; -- Bounder
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=1.444444, `speed_run`=5.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2429, `HoverHeight`=4 WHERE `entry`=66386; -- Mishi
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=66415; -- Merchant Qiu
+UPDATE `creature_template` SET `BaseAttackTime`=1250, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=66451; -- Gilded Tern
+UPDATE `creature_template` SET `unit_flags`=64, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=30659; -- Violet Hold Guard
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4196352, `VehicleId`=2472 WHERE `entry`=66508; -- Invisible Man
+UPDATE `creature_template` SET `unit_flags2`=2099201 WHERE `entry` IN (30673 /*Forgotten Depths Slayer*/, 30674 /*Frostbrood Destroyer*/, 31293 /*(Wrathgate Monster) Angrathar Aberration*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66514; -- Fluttering Moth
+UPDATE `creature_template` SET `npcflag`=128 WHERE `entry` IN (30734 /*Jezebel Bican*/, 33598 /*Fanii*/);
+UPDATE `creature_template` SET `unit_flags2`=6293504 WHERE `entry` IN (30749 /*[DND] Icecrown Airship (H) - Cannon Target, Shield*/, 30832 /*[DND] Icecrown Airship (A) - Cannon Target, Shield*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=66587; -- Pengsong
+UPDATE `creature_template` SET `npcflag`=6275 WHERE `entry`=30825; -- Chief Engineer Copperclaw
+UPDATE `creature_template` SET `unit_flags2`=2099200, `HoverHeight`=2 WHERE `entry`=30988; -- Scourgebeak Fleshripper
+UPDATE `creature_template` SET `speed_walk`=1.111112, `speed_run`=0.4365086, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66880; -- Lake Strider
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66975; -- Anduin Wrynn
+UPDATE `creature_template` SET `npcflag`=536870912, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=67013; -- Vaultkeeper Meelad
+UPDATE `creature_template` SET `npcflag`=268435456, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=67014; -- Warpweaver Shafiee
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537165824, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=67065; -- Highroad Grummle
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=131072, `unit_flags2`=2048 WHERE `entry`=67127; -- Training Dummy
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=67130; -- D.E.N.T.
+UPDATE `creature_template` SET `npcflag`=4736, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=67176; -- Armorer Gang
+UPDATE `creature_template` SET `npcflag`=4736, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67180; -- Deckmender Lu
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=37750784 WHERE `entry`=67237; -- General Purpose Bunny JMF (Look 2 - Flying, Gigantic AOI)
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=134219776 WHERE `entry` IN (67297 /*Shieldwall Rifleman*/, 68334 /*Horde Hunter*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=67304; -- Shieldwall Footman
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=67317; -- Shieldwall Huntress
+UPDATE `creature_template` SET `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=67369; -- Shieldwall Gryphon Rider
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=34816 WHERE `entry`=67541; -- Dwarven Mortar Tube
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=2048 WHERE `entry`=67565; -- Barnaby Fletcher
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.9920629 WHERE `entry`=31755; -- Stabled Hunter Pet
+UPDATE `creature_template` SET `npcflag`=4227 WHERE `entry`=31776; -- Frazzle Geargrinder
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=67679; -- Eternal Strider
+UPDATE `creature_template` SET `unit_flags2`=2049 WHERE `entry`=31868; -- Wrecked Demolisher
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=67127296 WHERE `entry`=67833; -- Mercurial Guardian
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=68010; -- Hareem Helheim
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=68061; -- Spirit Trap
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=2048 WHERE `entry`=68070; -- Spiritbound Arcanist
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=68073; -- Spiritbound Brutalizer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768 WHERE `entry`=68154; -- Argent Peacekeeper
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286 WHERE `entry`=32325; -- Gold Priest
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (68169 /*Gen-li, Twister of Words*/, 68170 /*Meng-do, Strength of Mountains*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags`=272 WHERE `entry`=32340; -- Gold Shaman
+UPDATE `creature_template` SET `unit_flags`=262400 WHERE `entry`=32341; -- Gold Mage
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry`=68253; -- Ixx
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=768, `unit_flags2`=33556480 WHERE `entry`=68274; -- Kaelis Sunsoar
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=68285; -- Melia Sunsoar
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=68317; -- Mavis Harms
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=68319; -- Disha Fearwarden
+UPDATE `creature_template` SET `unit_flags`=2147746560 WHERE `entry` IN (32616 /*Alterac Valley Portal*/, 32618 /*Arathi Basin Portal*/, 32621 /*Eye of the Storm Portal*/, 32622 /*Strand of the Ancients Portal*/, 32624 /*Warsong Gulch Portal*/);
+UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry`=32617; -- Alterac Valley Portal
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=1.555556, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=68465; -- Thundering Pandaren Spirit
+UPDATE `creature_template` SET `unit_flags`=67141696, `unit_flags2`=4196352 WHERE `entry`=32630; -- Vyragosa
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=1.111112, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=68845; -- Nexus Whelpling
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry` IN (68868 /*Meng Meng*/, 68869 /*Luo Luo*/);
+UPDATE `creature_template` SET `unit_flags`=537165824, `unit_flags2`=2049 WHERE `entry`=33053; -- Grimclaw
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=68951; -- Little Jiwon
+UPDATE `creature_template` SET `unit_flags`=32784 WHERE `entry`=33236; -- Steelforged Defender
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=33554496 WHERE `entry` IN (33442 /*Immolated Champion*/, 33962 /*Turned Champion*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629 WHERE `entry`=33495; -- Ysera
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `unit_flags`=0 WHERE `entry`=33536; -- Alexstrasza
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.385714 WHERE `entry` IN (33564 /*Ironforge Valiant*/, 33739 /*Exodar Champion*/);
+UPDATE `creature_template` SET `speed_run`=1.428571 WHERE `entry` IN (33643 /*Silver Covenant Guardian*/, 33877 /*Sif Image*/);
+UPDATE `creature_template` SET `speed_walk`=1.111112 WHERE `entry`=33761; -- Elder Brightleaf Image
+UPDATE `creature_template` SET `speed_walk`=1.111112, `unit_flags`=64 WHERE `entry`=33862; -- Elder Stonebark Image
+UPDATE `creature_template` SET `speed_walk`=1.277776, `speed_run`=0.9920629 WHERE `entry`=33876; -- Freya Image
+UPDATE `creature_template` SET `speed_run`=0.9523814 WHERE `entry` IN (33878 /*Thorim Image*/, 33879 /*Hodir Image*/);
+UPDATE `creature_template` SET `npcflag`=721 WHERE `entry`=33996; -- William Saldean
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=32768 WHERE `entry`=34603; -- Ashenvale Assassin
+UPDATE `creature_template` SET `unit_flags`=16384 WHERE `entry`=34935; -- Horde Gunship Cannon
+UPDATE `creature_template` SET `unit_flags`=570426112, `unit_flags2`=2049, `dynamicflags`=32 WHERE `entry`=34968; -- Stonetalon Sentinel
+UPDATE `creature_template` SET `npcflag`=82 WHERE `entry`=35100; -- Hargen Bronzewing
+UPDATE `creature_template` SET `npcflag`=130 WHERE `entry` IN (35101 /*Grunda Bronzewing*/, 35131 /*Durgan Thunderbeak*/);
+UPDATE `creature_template` SET `unit_flags2`=37748736 WHERE `entry` IN (35150 /*Darnassian Glaive Thrower*/, 35163 /*Krom'gar Demolisher*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_class`=2 WHERE `entry`=35286; -- Furien
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (71718 /*Big Blossom Digger*/, 54627 /*Twinspire Taskmaster*/, 55490 /*Alliance Prisoner*/, 55593 /*Needle Sprite*/, 56253 /*Jian*/, 56254 /*Ling*/, 56255 /*Smelly*/, 56654 /*Wild Stalker*/, 56655 /*Wild Huntress*/, 56729 /*Lotus Farmer*/, 57213 /*Cornan*/, 57318 /*Serpent Rider*/, 57323 /*Elder Sage Snow-Ting*/, 58070 /*Krasari Huntress*/, 58139 /*Observer Owl*/, 58212 /*Slitherscale Ripper*/, 58221 /*Krasari Stalker*/, 58256 /*Dawnchaser Hunter*/, 58257 /*Riverblade Skinflayer*/, 58273 /*Riverblade Slayer*/, 58274 /*Riverblade Flesh-hunter*/, 58285 /*Slovan*/, 58361 /*Warden of Zhu*/, 58424 /*Dustback Mushan*/, 58427 /*Young Dustback Mushan*/, 58452 /*Silvery Carp*/, 58453 /*Mottled Cow*/, 58673 /*Slateskin Troublemaker*/, 58830 /*Wounded Sentinel*/, 58858 /*Riverblade Pathstalker*/, 58882 /*Feverbite Hatchling*/, 58884 /*Sha-Haunted Tigress*/, 58887 /*Krasari Mauler*/, 58902 /*Stoneplow Goatherd*/, 58931 /*Riverblade Bloodletter*/, 59005 /*Stormstout Brewer*/, 59006 /*Tanya Thickfingers*/, 59007 /*Ho Hai*/, 59008 /*Jon Greentill*/, 59041 /*Masterweaver Li*/, 59116 /*Krasari Huntress*/, 59171 /*Old Egshen*/, 59236 /*Haunt of Despair*/, 59237 /*Maw of Despair*/, 59295 /*Lost Mushan*/, 59315 /*Maw of Despair*/, 59356 /*Coral Adder*/, 59417 /*Sha Echo*/, 59434 /*Sha Remnant*/, 59542 /*Haunt of Despair*/, 59558 /*Haunt of Despair*/, 59601 /*Farm Sheep*/, 59603 /*Piggy*/, 59623 /*Spartacus*/, 59625 /*Ashli*/, 59628 /*Shiro*/, 59630 /*Cairo*/, 59651 /*Sha of Despair*/, 59667 /*Painted Carp*/, 59714 /*Riverblade Raider*/, 59766 /*Hollow Bloom*/, 59781 /*Thunderpaw Initiate*/, 59783 /*Deepwoods Spirit*/, 59784 /*Spirit Cub*/, 59785 /*Singing Moth*/, 59829 /*Fo Sho Knucklebump*/, 59968 /*Ordo Marauder*/, 59971 /*Stone Guardian*/, 60223 /*Granite Quilen*/, 60373 /*Reanimated Quilen*/, 60401 /*Snapclaw*/, 60431 /*Yongqi Brute*/, 60458 /*Tribal Alchemist*/, 60479 /*Yongqi Looter*/, 60550 /*Wild Spike Sprite*/, 60624 /*Furious Sprite*/, 60626 /*Burning Yaungol*/, 60693 /*Anglers Fisherman*/, 61027 /*Cobalt Hammerhead*/, 61306 /*Yao*/, 61307 /*Yachi*/, 61342 /*Woodcarver Liupo*/, 61343 /*La the Gentle*/, 61346 /*Scribe Rinji*/, 61350 /*Graceful Swan*/, 61461 /*Portly Shung*/, 61462 /*Meila*/, 61509 /*Sra'thik Kunchong*/, 61564 /*Niuzao Stonemason*/, 61610 /*Seething Sha*/, 61683 /*Sentinel Yalo*/, 61709 /*Spawn of Anger*/, 61747 /*Jeweled Macaw*/, 62149 /*Yoona*/, 62158 /*Zaiyu*/, 62219 /*Farmer Hei Mung*/, 62266 /*Bronze Quilen*/, 62268 /*Darkwoods Pixie*/, 62305 /*Wu Kao Disciple*/, 62307 /*Dread Shadow*/, 62457 /*Darkwoods Charmer*/, 62520 /*Darkwoods Charmer*/, 62571 /*Osul Farstalker*/, 62647 /*Lan Hua*/, 62651 /*Tanji the Fisher*/, 62659 /*Historian Leelee*/, 62768 /*Overgrown Seacarp*/, 62783 /*Binan Villager*/, 62784 /*Binan Villager*/, 62785 /*Mayor Bramblestaff*/, 62844 /*Deadtalker Crusher*/, 62902 /*Darkhatched Throatripper*/, 62945 /*Bloodthirsty Prowler*/, 63017 /*Darkhatched Skulker*/, 63033 /*Brewgarden Defender*/, 63082 /*Paleblade Flesheater*/, 63179 /*Mistblade Scale-Lord*/, 63219 /*Golden Lotus Defender*/, 63373 /*Guardian of the Peak*/, 63425 /*Darkhatched Broodling*/, 63470 /*Sea Monarch*/, 63480 /*Training Hawk*/, 63532 /*Slitherscale Eggdrinker*/, 63536 /*Slitherscale Lizard-Lord*/, 63538 /*Windward Huntress*/, 63540 /*Young Windward Tiger*/, 63588 /*Ruby Venomtail*/, 63696 /*Ravenous Kunchong*/, 63767 /*Chasheen*/, 63818 /*Commander Hsieh*/, 63877 /*Wandering Sea Turtle*/, 63878 /*Wandering Sea Hatchlet*/, 63882 /*Drunken Angler*/, 63883 /*Sully*/, 63884 /*Chu*/, 63885 /*Linnshi*/, 63886 /*Ryshan*/, 63887 /*Angler Marzai*/, 63901 /*Tenwu of the Red Smoke*/, 63903 /*Hawkmaster Nurong*/, 63905 /*Chao the Voice*/, 63906 /*Protector Yi*/, 63985 /*Binan Villager*/, 64034 /*Riverblade Thief*/, 64381 /*Thunderpaw Guardian*/, 64447 /*Old Lady Heng*/, 64626 /*Wake of Horror*/, 64639 /*Amani Outrider*/, 64643 /*Gurubashi Headsplitter*/, 64970 /*Thought-Bound Miner*/, 64982 /*Zan'thik Amberhusk*/, 64983 /*Amber-Fed Hatchling*/, 65271 /*Mayor Lin*/, 65304 /*Hateful Monstrosity*/, 65382 /*Angler Chris*/, 65383 /*Angler Abra*/, 65613 /*Shadowfae Madcap*/, 65627 /*Dustback Warder*/, 65635 /*Shadowfae Trickster*/, 65799 /*Fluttering Swallowtail*/, 65802 /*Krasari Hissing Wasp*/, 65814 /*Krasari Hissing Waspling*/, 65820 /*Yellowback Water Moccasin*/, 65821 /*Cobaltscale Death Adder*/, 65823 /*Flesh-Eating Sandsnapper*/, 65874 /*Rin Blackbrow*/, 65891 /*Traveling Trader*/, 65896 /*Zouchin Villager*/, 65897 /*Zouchin Villager*/, 65911 /*Lieutenant Daniel*/, 65912 /*Lieutenant Stanton*/, 65914 /*Jor Jor*/, 65926 /*Tender Long*/, 65979 /*Brewmaid Qi*/, 65980 /*Jaan Yu*/, 65981 /*Sikki*/, 65982 /*Bucci*/, 66070 /*Krasarang Tideskirter*/, 66071 /*Krasarang Croaker*/, 66096 /*Sungraze Mushan Calf*/, 66224 /*Sturdy Po*/, 66269 /*Twinspire Grunt*/, 66272 /*Twinspire Deathguard*/, 66273 /*Twinspire Demolitionist*/, 66300 /*Skyfire Marine*/, 66326 /*Stalwart Lo*/, 66423 /*Sha Haunt*/, 66424 /*Sha Harbinger*/, 66480 /*Skyfire Engineer*/, 66570 /*Farraki Assassin*/, 66670 /*Petuna*/, 66671 /*Piddle*/, 66672 /*Puddle*/, 66673 /*Poople*/, 66702 /*Marista Citizen*/, 66703 /*Fireworks Specialist*/, 66882 /*Sea Strider*/, 66891 /*Summit Strider*/, 66892 /*Fallstrider*/, 66898 /*Stream Strider*/, 67055 /*Bah Blacksoil*/, 67056 /*Stoneplow Farmer*/, 67085 /*Windward Alpha*/, 67281 /*Grease Worker*/, 67334 /*Bloodhilt Honor Guard*/, 67337 /*Warfront Peon*/, 67371 /*Shredmaster Packle*/, 67373 /*Grezik Oregrind*/, 67427 /*Chief Bombgineer Snicklefritz*/, 67429 /*Stone Guard Ruk'Ra*/, 67563 /*Off-Duty Miner*/, 67564 /*Off-Duty Miner*/, 67637 /*Off-Duty Logger*/, 67638 /*Off-Duty Logger*/, 67704 /*Barbtail Beaver*/, 67770 /*Acidfang Slitherer*/, 67777 /*Eva Dendra*/, 67786 /*Kor'kron Elite*/, 67787 /*Mei Laoshi*/, 67869 /*Bilgewater Logger*/, 67870 /*Bilgewater Logger*/, 67871 /*Bilgewater Miner*/, 67873 /*Bilgewater Miner*/, 67896 /*Polluted Viseclaw*/, 67913 /*Dwarven Mortar Team Engineer*/, 67979 /*Sky Marshal*/, 68016 /*Quirox the Illiterate*/, 68027 /*Sinister Needle*/, 68118 /*Kor'kron Pilot*/, 68268 /*Izu's Raven*/, 68409 /*Riverblade Scavenger*/, 68474 /*Commander Scargash*/, 68583 /*Polluted Viseclaw Fry*/, 68829 /*Skyfire Engineer*/, 68833 /*Sky Marshal*/, 68834 /*Seraphine of the Winter*/, 68835 /*Sully "The Pickle" McLeary*/, 68862 /*Kor'kron Engineer*/, 69056 /*Shieldwall Defender*/, 69265 /*Sunreaver Scout*/, 69429 /*Venom Skitterer*/, 69430 /*Darkeye Raven*/, 69444 /*Silver Covenant Scout*/, 69947 /*Degu*/, 70032 /*Dr. Ion Goldbloom*/, 70033 /*Nedris Smuggler*/, 70068 /*Ahoo'ru*/, 70091 /*Silver Covenant Captain*/, 70149 /*Ting*/, 70150 /*Ning*/, 70172 /*Shrimp Stuffed Seagull*/, 70185 /*Kazmo*/, 70262 /*Silver Covenant Ranger*/, 70418 /*Blastbait Cronie*/, 70424 /*Mad Qao-Pao*/, 70463 /*Frostmane Snowstalker*/, 70473 /*Frostmane Headhunter*/, 70498 /*Shado-Pan Enforcer*/, 70595 /*Frostmane Prowler*/, 70746 /*Frostmane Flesh-Eater*/, 70997 /*Hellscream Laborer*/, 70999 /*Kor'kron Marauder*/, 71000 /*Mercenary Engineer*/, 71001 /*Mercenary Shredder*/, 71002 /*Kor'kron Incinerator*/, 71006 /*Kor'kron Overseer*/, 71009 /*Kor'kron Flameworg*/, 71010 /*Kor'kron Outrider*/, 71012 /*Kor'kron Butcher*/, 71052 /*Kor'kron Motivator*/, 71055 /*Kor'kron Spotter*/, 71100 /*Underpaid Engineer*/, 71125 /*Kor'kron Caravan Raider*/, 71141 /*Overburdened Laborer*/, 71318 /*Kor'kron Grunt*/, 71379 /*Kor'kron Grunt*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2048 WHERE `entry` IN (71719 /*Trillium-Bladed Rock Cutter*/, 66472 /*King Spineclaw*/, 67967 /*Shieldwall Mecha-Pounder*/);
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` IN (97 /*Riverpaw Runt*/, 35984 /*Sunreaver Dragonhawk*/, 1548 /*Cursed Darkhound*/, 3254 /*Sunscale Lashtail*/, 3281 /*Sarkoth*/, 9166 /*Pterrordax*/, 15476 /*Scorpid*/, 16939 /*Void Baron Galaxis*/, 20751 /*Daggermaw Lashtail*/, 61369 /*Toad*/, 62115 /*Dung Beetle*/, 62256 /*Stinkbug*/, 62364 /*Ash Lizard*/, 62627 /*Fledgling Nether Ray*/, 62852 /*Dragonbone Hatchling*/, 62885 /*Carrion Rat*/, 63329 /*Emperor Crab*/, 29152 /*Stormwind Dock Worker*/, 65205 /*Gilded Moth*/, 34948 /*Isle of Conquest Emissary*/, 34950 /*Isle of Conquest Emissary*/, 35591 /*Lesser Infernal*/);
+UPDATE `creature_template` SET `unit_flags`=537133056, `unit_flags2`=2049 WHERE `entry` IN (305 /*White Stallion*/, 306 /*Palomino*/);
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=33555200, `VehicleId`=973 WHERE `entry`=309; -- "Buried Upside-Down" Vehicle
+UPDATE `creature_template` SET `speed_run`=1, `unit_flags`=0 WHERE `entry`=345; -- Bellygrub
+UPDATE `creature_template` SET `unit_flags`=67108864 WHERE `entry` IN (547 /*Great Goretusk*/, 1196 /*Ice Claw Bear*/, 2680 /*Vilebranch Wolf Pup*/, 38914 /*Sandstone Golem*/, 39394 /*Lethlas*/, 5268 /*Ironfur Bear*/, 5992 /*Ashmane Boar*/, 43254 /*Energized Geode*/, 17130 /*Talbuk Stag*/, 17156 /*Tortured Earth Spirit*/, 56404 /*Greenstone Gorger*/, 23874 /*Thornvine Creeper*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.190476, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=603; -- Grimtooth
+UPDATE `creature_template` SET `unit_class`=1 WHERE `entry`=653; -- Bridge Worker Alex
+UPDATE `creature_template` SET `unit_flags2`=1073743872 WHERE `entry` IN (36612 /*Lord Marrowgar*/, 36853 /*Sindragosa*/, 38569 /*Martyr Stalker (IGB)*/, 13116 /*Alliance Spirit Guide*/, 13117 /*Horde Spirit Guide*/, 32487 /*Putridus the Ancient*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (36626 /*Festergut*/, 36627 /*Rotface*/, 36678 /*Professor Putricide*/, 36805 /*Deathspeaker Servant*/, 36807 /*Deathspeaker Disciple*/, 36808 /*Deathspeaker Zealot*/, 36811 /*Deathspeaker Attendant*/, 36829 /*Deathspeaker High Priest*/, 36855 /*Lady Deathwhisper*/, 36998 /*Skybreaker Protector*/, 37004 /*Skybreaker Dreadblade*/, 37007 /*Deathbound Ward*/, 37012 /*Ancient Skeletal Soldier*/, 37016 /*Skybreaker Luminary*/, 37017 /*Skybreaker Assassin*/, 37023 /*Plague Scientist*/, 37026 /*Skybreaker Sorcerer*/, 37027 /*Skybreaker Hierophant*/, 37028 /*Kor'kron Stalker*/, 37029 /*Kor'kron Reaver*/, 37030 /*Kor'kron Primalist*/, 37031 /*Kor'kron Oracle*/, 37032 /*Kor'kron Defender*/, 37033 /*Kor'kron Invoker*/, 37034 /*Kor'kron Templar*/, 37035 /*Kor'kron Vanquisher*/, 37038 /*Vengeful Fleshreaper*/, 37098 /*Val'kyr Herald*/, 37129 /*Crok Scourgebane*/, 37144 /*Skybreaker Marksman*/, 37146 /*Kor'kron Sniper*/, 37149 /*Kor'kron Necrolyte*/, 37190 /*Alliance Commander*/, 37230 /*Spire Frostwyrm*/, 37545 /*Spire Minion*/, 37571 /*Darkfallen Advisor*/, 37595 /*Darkfallen Blood Knight*/, 37662 /*Darkfallen Commander*/, 37663 /*Darkfallen Noble*/, 37664 /*Darkfallen Archmage*/, 37665 /*Darkfallen Lieutenant*/, 37666 /*Darkfallen Tactician*/, 37702 /*Runeforge Bunny*/, 37813 /*Deathbringer Saurfang*/, 37928 /*Argent Champion*/, 37955 /*Blood-Queen Lana'thel*/, 37996 /*Ebon Champion*/, 38004 /*Blood-Queen Lana'thel*/, 38153 /*The Lich King*/, 38194 /*Torgo the Elder*/, 38308 /*Ooze Covered Tentacle Stalker*/, 38309 /*Slimy Tentacle Stalker*/, 38879 /*Putricide's Trap*/, 41603 /*Frostmane Raider*/, 41779 /*Injured Lookout*/, 42009 /*General Grimaxe Controller*/, 43279 /*Ammo Cart Bunny*/, 44608 /*Agatha*/, 44615 /*Grand Executor Mortuus*/, 45185 /*Diamond-Blade Shredder*/, 45396 /*Dave's Industrial Light and Magic Bunny (Medium)(Sessile)(Large AOI)*/, 9736 /*Quartermaster Zigris*/, 45739 /*The Unknown Soldier*/, 10220 /*Halycon*/, 46074 /*Krazzworks Gyrocopter*/, 46075 /*Krazzworks Invisible Stalker*/, 10596 /*Mother Smolderweb*/, 11502 /*Ragnaros*/, 11661 /*Flamewaker*/, 11662 /*Flamewaker Priest*/, 11663 /*Flamewaker Healer*/, 11664 /*Flamewaker Elite*/, 11666 /*Firewalker*/, 11667 /*Flameguard*/, 11669 /*Flame Imp*/, 11671 /*Core Hound*/, 11982 /*Magmadar*/, 11988 /*Golemagg the Incinerator*/, 12018 /*Majordomo Executus*/, 12056 /*Baron Geddon*/, 12057 /*Garr*/, 47906 /*Nostrastrasz*/, 12076 /*Lava Elemental*/, 12098 /*Sulfuron Harbinger*/, 12099 /*Firesworn*/, 12100 /*Lava Reaver*/, 12118 /*Lucifron*/, 12119 /*Flamewaker Protector*/, 12259 /*Gehennas*/, 12264 /*Shazzrah*/, 48545 /*High Warlord Cromush*/, 49683 /*Wildhammer Stormtalon*/, 15229 /*Vekniss Soldier*/, 15230 /*Vekniss Warrior*/, 15233 /*Vekniss Guardian*/, 15247 /*Qiraji Brainwasher*/, 15264 /*Anubisath Sentinel*/, 15300 /*Vekniss Drone*/, 15318 /*Hive'Zara Drone*/, 15319 /*Hive'Zara Collector*/, 15320 /*Hive'Zara Soldier*/, 15323 /*Hive'Zara Sandstalker*/, 15324 /*Qiraji Gladiator*/, 15325 /*Hive'Zara Wasp*/, 15327 /*Hive'Zara Stinger*/, 15333 /*Silicate Feeder*/, 15335 /*Flesh Hunter*/, 15336 /*Hive'Zara Tail Lasher*/, 15339 /*Ossirian the Unscarred*/, 15341 /*General Rajaxx*/, 15343 /*Qiraji Swarmguard*/, 15344 /*Swarmguard Needler*/, 15348 /*Kurinnaxx*/, 15355 /*Anubisath Guardian*/, 15369 /*Ayamiss the Hunter*/, 15370 /*Buru the Gorger*/, 15385 /*Colonel Zerran*/, 15386 /*Major Yeggeth*/, 15387 /*Qiraji Warrior*/, 15388 /*Major Pakkon*/, 15389 /*Captain Drenn*/, 15390 /*Captain Xurrem*/, 15391 /*Captain Qeez*/, 15392 /*Captain Tuubid*/, 15428 /*Sand Vortex*/, 15511 /*Lord Kri*/, 15514 /*Buru Egg*/, 15543 /*Princess Yauj*/, 15544 /*Vem*/, 15928 /*Thaddius*/, 15929 /*Stalagg*/, 15930 /*Feugen*/, 15931 /*Grobbulus*/, 15932 /*Gluth*/, 15936 /*Heigan the Unclean*/, 15952 /*Maexxna*/, 15953 /*Grand Widow Faerlina*/, 15954 /*Noth the Plaguebringer*/, 15956 /*Anub'Rekhan*/, 15978 /*Crypt Reaver*/, 15979 /*Tomb Horror*/, 15980 /*Naxxramas Cultist*/, 15981 /*Naxxramas Acolyte*/, 15984 /*Sartura's Royal Guard*/, 15989 /*Sapphiron*/, 15990 /*Kel'Thuzad*/, 16011 /*Loatheb*/, 16020 /*Mad Scientist*/, 16021 /*Living Monstrosity*/, 16022 /*Surgical Assistant*/, 16024 /*Embalming Slime*/, 16025 /*Stitched Giant*/, 16027 /*Living Poison*/, 16028 /*Patchwerk*/, 16029 /*Sludge Belcher*/, 16060 /*Gothik the Harvester*/, 16061 /*Instructor Razuvious*/, 16063 /*Sir Zeliek*/, 16064 /*Thane Korth'azz*/, 16065 /*Lady Blaumeux*/, 16067 /*Deathcharger Steed*/, 51974 /*Ironforge Sled*/, 16137 /*Naxxramas Military Sub-Boss Trigger*/, 51975 /*Ironforge Sled*/, 16154 /*Risen Squire*/, 16163 /*Death Knight Cavalier*/, 16194 /*Unholy Axe*/, 16215 /*Unholy Staff*/, 16216 /*Unholy Swords*/, 16218 /*Tesla Coil*/, 16447 /*Plagued Ghoul*/, 16505 /*Naxxramas Follower*/, 16506 /*Naxxramas Worshipper*/, 16573 /*Crypt Guard*/, 16803 /*Death Knight Understudy*/, 17007 /*Lady Keira Berrybuck*/, 53094 /*Patriarch Fire Turtle*/, 53095 /*Matriarch Fire Turtle*/, 53096 /*Fire Turtle Hatchling*/, 53116 /*Unbound Blazing Elemental*/, 53120 /*Flamewaker Pathfinder*/, 53127 /*Fire Scorpion*/, 53128 /*Giant Fire Scorpion*/, 53134 /*Ancient Core Hound*/, 53141 /*Molten Surger*/, 53167 /*Unbound Pyrelord*/, 53178 /*Spiderling Stalker*/, 53185 /*Flamewaker Overseer*/, 53187 /*Flamewaker Animator*/, 53188 /*Flamewaker Subjugator*/, 53224 /*Flamewaker Taskmaster*/, 53244 /*Flamewaker Trainee*/, 53375 /*Herald of the Burning End*/, 53435 /*Unstable Magma Elemental Stalker*/, 17645 /*Infernal Relay*/, 53494 /*Baleroc*/, 53640 /*Flamewaker Sentinel*/, 53734 /*Blazing Talon Clawshaper*/, 53793 /*Harbinger of Flame*/, 17965 /*Open Portal Target*/, 53901 /*Unstable Magma*/, 54019 /*Captive Druid of the Talon*/, 54161 /*Flame Archon*/, 18472 /*Darkweaver Syth*/, 18473 /*Talon King Ikiss*/, 18805 /*High Astromancer Solarian*/, 19514 /*Al'ar*/, 19516 /*Void Reaver*/, 19873 /*Lord Crispin Ference*/, 20031 /*Bloodwarder Legionnaire*/, 20032 /*Bloodwarder Vindicator*/, 20033 /*Astromancer*/, 20034 /*Star Scryer*/, 20035 /*Bloodwarder Marshal*/, 20036 /*Bloodwarder Squire*/, 20037 /*Tempest Falconer*/, 20038 /*Phoenix-Hawk Hatchling*/, 20039 /*Phoenix-Hawk*/, 20040 /*Crystalcore Devastator*/, 20041 /*Crystalcore Sentinel*/, 20042 /*Tempest-Smith*/, 20043 /*Apprentice Star Scryer*/, 20044 /*Novice Astromancer*/, 20045 /*Nether Scryer*/, 20046 /*Astromancer Lord*/, 20047 /*Crimson Hand Battle Mage*/, 20048 /*Crimson Hand Centurion*/, 20049 /*Crimson Hand Blood Knight*/, 20050 /*Crimson Hand Inquisitor*/, 20052 /*Crystalcore Mechanic*/, 20060 /*Lord Sanguinar*/, 20062 /*Grand Astromancer Capernian*/, 20063 /*Master Engineer Telonicus*/, 20064 /*Thaladred the Darkener*/, 21102 /*Uvuros*/, 21153 /*Kor'kron Wyvern Rider*/, 21166 /*Illidari Dreadlord*/, 21404 /*Legion Hold Fel Reaver*/, 21648 /*Mature Netherwing Drake*/, 21931 /*Avian Flyer*/, 22146 /*Summoning Voidstorm*/, 22274 /*Dragonmaw Skybreaker*/, 22844 /*Ashtongue Battlelord*/, 22845 /*Ashtongue Mystic*/, 22846 /*Ashtongue Stormcaller*/, 22847 /*Ashtongue Primalist*/, 22849 /*Ashtongue Feral Spirit*/, 22859 /*Shadowhoof Summoner*/, 22869 /*Illidari Boneslicer*/, 22873 /*Coilskar General*/, 22874 /*Coilskar Harpooner*/, 22875 /*Coilskar Sea-Caller*/, 22876 /*Coilskar Soothsayer*/, 22877 /*Coilskar Wrangler*/, 22878 /*Aqueous Lord*/, 22881 /*Aqueous Surger*/, 22882 /*Shadowmoon Deathshaper*/, 22883 /*Aqueous Spawn*/, 22884 /*Leviathan*/, 22885 /*Dragon Turtle*/, 22887 /*High Warlord Naj'entus*/, 22898 /*Supremus*/, 22945 /*Shadowmoon Blood Mage*/, 22953 /*Wrathbone Flayer*/, 22954 /*Illidari Fearbringer*/, 22960 /*Dragonmaw Wyrmcaller*/, 23147 /*Shadowmoon Grunt*/, 23188 /*Dragonmaw Transporter*/, 23283 /*Lady Sinestra*/, 23330 /*Dragonmaw Wind Reaver*/, 23337 /*Illidari Centurion*/, 23339 /*Illidari Heartseeker*/, 23340 /*Murg "Oldie" Muckjaw*/, 23342 /*Trope the Filth-Belcher*/, 23344 /*Corlok the Vet*/, 23346 /*Wing Commander Mulverick*/, 23348 /*Captain Skyshatter*/, 24533 /*Dragonflayer Defender*/, 24910 /*Captain Ellis*/, 24911 /*Cursed Sea Dog*/, 24973 /*Ellis Crew Trigger*/, 25175 /*Shattered Sun Dragonhawk*/, 25745 /*[PH] Ahune Summon Loc Bunny*/, 25952 /*Slippery Floor Bunny*/, 25964 /*Shaman Beam Bunny 000*/, 25965 /*Shaman Beam Bunny 001*/, 25966 /*Shaman Beam Bunny 002*/, 25971 /*Shaman Bonfire Bunny 000*/, 25972 /*Shaman Bonfire Bunny 001*/, 25973 /*Shaman Bonfire Bunny 002*/, 26120 /*Wisp Dest Bunny*/, 26121 /*Wisp Source Bunny*/, 26230 /*Snow Bunny*/, 30071 /*Stitched Colossus*/, 30085 /*Vigilant Shade*/, 30549 /*Baron Rivendare*/, 30675 /*Argent Champion*/, 31040 /*Wrathstrike Gargoyle*/, 31070 /*Argent Skytalon*/, 32486 /*Scourge Death Knight*/, 34780 /*Lord Jaraxxus*/, 34796 /*Gormok the Impaler*/, 34797 /*Icehowl*/, 34799 /*Dreadscale*/, 35144 /*Acidmaw*/, 35320 /*Lady Jaina Proudmoore*/, 35321 /*King Varian Wrynn*/, 35474 /*Vengeful Val'kyr*/, 35651 /*Purple Ground Rune Argent Raid*/);
+UPDATE `creature_template` SET `unit_flags`=64 WHERE `entry` IN (36725 /*Nerub'ar Broodkeeper*/, 41166 /*Gomegaz*/, 50829 /*Mr. Bonks*/, 23562 /*Unstoppable Abomination*/);
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry` IN (36737 /*Invisible Stalker*/, 37126 /*Sister Svalna*/, 37528 /*Spire Frostwyrm (Ambient)*/, 37533 /*Rimefang*/, 37534 /*Spinestalker*/, 53102 /*Inferno Hawk*/, 53115 /*Molten Lord*/, 53154 /*Generic Firelands Raid Bunny JMF*/, 53158 /*Volcano Fire Bunny*/, 53369 /*Blazing Talon Initiate*/, 53648 /*Inferno Hawk*/, 53691 /*Shannox*/, 53694 /*Riplimb*/, 53695 /*Rageface*/, 53786 /*Blazing Monstrosity*/, 53791 /*Blazing Monstrosity*/, 53896 /*Blazing Talon Initiate*/, 53986 /*Firestorm*/, 54143 /*Molten Flamefather*/, 24925 /*Boss Portal: Purple (3.00)*/);
+UPDATE `creature_template` SET `unit_flags2`=3145728 WHERE `entry`=36789; -- Valithria Dreamwalker
+UPDATE `creature_template` SET `unit_flags2`=1073741824 WHERE `entry` IN (36838 /*Alliance Gunship Cannon*/, 37215 /*Orgrim's Hammer*/, 37540 /*The Skybreaker*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000 WHERE `entry` IN (36880 /*Decaying Colossus*/, 7379 /*Deadwind Ogre Mage*/, 54344 /*Highlord's Nemesis Trainer*/, 18948 /*Stormwind Soldier*/, 23305 /*Crazed Murkblood Foreman*/, 59430 /*Hateful Ko Ko*/, 59483 /*Ur-Bataar*/, 27342 /*Bloodpaw Warrior*/, 67304 /*Shieldwall Footman*/);
+UPDATE `creature_template` SET `unit_flags2`=1073743872 WHERE `entry`=36955; -- Lady Jaina Proudmoore
+UPDATE `creature_template` SET `unit_flags2`=2097152 WHERE `entry` IN (36957 /*Kor'kron Reaver*/, 36960 /*Kor'kron Sergeant*/, 36968 /*Kor'kron Axethrower*/, 36982 /*Kor'kron Rocketeer*/, 37122 /*Captain Arnath*/, 37123 /*Captain Brandon*/, 37124 /*Captain Grondel*/, 37125 /*Captain Rupert*/, 37830 /*Skybreaker Marine*/, 38008 /*Blood Orb Controller*/, 15262 /*Obsidian Eradicator*/, 15338 /*Obsidian Destroyer*/, 15340 /*Moam*/, 15473 /*Kaldorei Elite*/, 15727 /*C'Thun*/, 52498 /*Beth'tilac*/, 52577 /*Left Foot*/, 53520 /*Plump Lava Worm*/, 54015 /*Majordomo Staghelm*/, 23421 /*Ashtongue Channeler*/, 25740 /*Ahune*/);
+UPDATE `creature_template` SET `unit_flags`=832, `unit_flags2`=2099200 WHERE `entry`=36970; -- Skybreaker Deckhand
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry` IN (1150 /*River Crocolisk*/, 40875 /*Megs Dreadshredder*/, 14881 /*Spider*/, 51888 /*New Agamand Deathguard*/, 51895 /*Thunderlord Grunt*/, 51904 /*Honor Hold Defender*/, 51908 /*Allerian Defender*/, 16842 /*Honor Hold Defender*/, 19353 /*Wildhammer Guard*/, 56524 /*Longfang Howler*/, 59156 /*Mogu Effigy*/, 59379 /*Shao-Tien Surveyor*/, 59526 /*Trail Yakker*/, 24073 /*Fearsome Horror*/, 60623 /*Enraged Mushan*/, 60733 /*Swamp Rodent*/, 25250 /*General Arlos*/, 61318 /*Tree Python*/, 61385 /*Ash Viper*/, 61439 /*Rattlesnake*/, 25834 /*Gearmaster Mechazod*/, 62186 /*Desert Spider*/, 26402 /*Anub'ar Ambusher*/, 62509 /*Amber Parasite*/, 62523 /*Sidewinder*/, 62980 /*Imperial Vizier Zor'lok*/, 63036 /*Kor'thik Extremist*/, 27576 /*Fordragon Sentinel*/, 27808 /*Turgid the Vile*/, 63782 /*Battleworn Paratrooper*/, 64900 /*Gash'nul*/, 66099 /*Riverbank Barbshell*/, 67099 /*Succula*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry` IN (37003 /*Skybreaker Vindicator*/, 37546 /*Frenzied Abomination*/);
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=37011; -- The Damned
+UPDATE `creature_template` SET `dynamicflags`=0 WHERE `entry` IN (1182 /*Brother Anton*/, 3203 /*Fizzle Darkclaw*/, 39087 /*Slain Scarlet Friar*/, 39464 /*Drowned Thunder Lizard*/, 39602 /*Kvaldir Marauder*/, 39990 /*Twilight Zealot*/, 40129 /*Lost Apprentice*/, 40939 /*Dead Crag Boar*/, 41099 /*Saltstone Crystalhide*/, 41100 /*Scorpid Reaver*/, 41101 /*Scorpid Terror*/, 41103 /*Sparkleshell Snapper*/, 41109 /*Saltstone Gazer*/, 41113 /*Sparkleshell Borer*/, 41158 /*Nethergarde Defender*/, 41466 /*Idra'kess Sentinel*/, 41783 /*Horde Assault Volunteer*/, 41899 /*Dark Iron Invader (Corpse)*/, 42259 /*Dead Thief*/, 42846 /*Azsh'ir Depthseeker*/, 42848 /*Faceless Mauler*/, 42851 /*Revenant of Neptulon*/, 43983 /*Azsh'ir Manhunter*/, 43985 /*Captain Vilethorn*/, 44592 /*Fallen Human*/, 44593 /*Fallen Human*/, 45517 /*Ravaged Dire Wolf*/, 45613 /*Half-Eaten Coalpelt Bear*/, 47207 /*Dead Trooper*/, 47213 /*Dead Trooper*/, 47216 /*Dead Trooper*/, 47219 /*Dead Trooper*/, 47729 /*Neferset Savage*/, 47870 /*Twinkles*/, 47871 /*Sludge Guard*/, 48147 /*Sparkleshell Tortoise*/, 48148 /*Sparkleshell Snapper*/, 48185 /*Whale Shark*/, 49340 /*Scarlet Corpse*/, 50276 /*Naz'jar Spiritmender*/, 50278 /*Naz'jar Invader*/, 50951 /*Carapin*/, 16852 /*Sedai's Corpse*/, 17062 /*Fel Orc Corpse*/, 18480 /*Broken Corpse*/, 18490 /*Fallen Druid*/, 54504 /*Damaged Tonk*/, 55464 /*Hozen Corpse*/, 56132 /*Thunderfoot Pig*/, 21725 /*Kagrosh*/, 21727 /*Flanis Swiftwing*/, 57967 /*Dead Temple Defender*/, 58533 /*Dustback Mushan*/, 59053 /*Shao-Tien Fist*/, 59408 /*Dead Packer*/, 59427 /*Dead Yeti*/, 23667 /*Winterskorn Rune-Seer*/, 59685 /*Dead Highlands Mushan*/, 59814 /*Dead Packer*/, 59815 /*Dead Packer*/, 59816 /*Dead Packer*/, 59896 /*Dead Packer*/, 59897 /*Dead Packer*/, 59898 /*Dead Packer*/, 24122 /*Pulroy the Archaeologist*/, 24196 /*Trapped Animal*/, 60035 /*Shao-Tien Tyrant*/, 24280 /*Slain Apothecary*/, 60168 /*Dead Ruqin Infantry*/, 60288 /*Dead Firebough Nook Villager*/, 60455 /*Osul Invader*/, 60859 /*Dead Mountain Goat*/, 60899 /*Lin Silentstrike*/, 60925 /*Palewind Villager*/, 60929 /*Palewind Chief*/, 61466 /*Krik'thik Scentlayer*/, 61561 /*Palewind Refugee*/, 61648 /*Dead Pandaren Guard*/, 61655 /*Dead Inkgill Spearman*/, 61656 /*Dead Inkgill Priest*/, 61754 /*Krik'thik Limbpincer*/, 62203 /*Klaxxi'va Tik*/, 62204 /*Dusklight Initiate*/, 62276 /*Fear-Stricken Sentinel*/, 62281 /*Fear-Stricken Sentinel*/, 26513 /*Drakkari Shaman Corpse*/, 26516 /*Drakkari Warrior Corpse*/, 62876 /*Withered Husk*/, 27219 /*Forsaken Prisoner*/, 27479 /*Slain Trapper*/, 27530 /*Ruby Keeper*/, 63576 /*Osul Fire-Warrior*/, 27787 /*Venomspite Riding Bat*/, 27828 /*Plunderbeard*/, 63974 /*Krik'thik Locust-Guard*/, 65269 /*Orange Slime*/, 65643 /*Sabotaged Tank*/, 65886 /*Dead Kyparite Pulverizer*/, 65887 /*Dead Muckscale*/, 30673 /*Forgotten Depths Slayer*/, 30674 /*Frostbrood Destroyer*/, 66647 /*Thunder Hold Sharp-Shooter*/, 66648 /*Thunder Hold Lieutenant*/, 66649 /*Thunder Hold Mender*/, 66650 /*Thunder Hold Infantryman*/, 66651 /*Thunder Hold Laborer*/, 31009 /*Azure Spellbreaker*/, 31177 /*Slain Alliance Soldier*/, 67065 /*Highroad Grummle*/, 31281 /*Dead Alliance Soldier*/, 31285 /*(Wrathgate Horde) Warsong Elite*/, 31292 /*(Wrathgate Monster) Frail Construct*/, 31293 /*(Wrathgate Monster) Angrathar Aberration*/, 31294 /*(Wrathgate Horde) Taunka Huntsman*/, 31295 /*(Wrathgate Horde) Darkspear*/, 31296 /*(Wrathgate Alliance) Fordragon Footman*/, 31297 /*(Wrathgate Alliance) Fordragon Sentinel*/, 31298 /*(Wrathgate Alliance) Fordragon Battle-Mage*/, 31299 /*(Wrathgate Alliance) Fordragon Marskman*/, 31308 /*(Wrathgate Monster) Abomination*/, 31309 /*(Wrathgate Scourge) Plague Eruptor*/);
+UPDATE `creature_template` SET `npcflag`=16 WHERE `entry` IN (1215 /*Alchemist Mallory*/, 2390 /*Aranae Venomblood*/, 24868 /*Niobe Whizzlespark*/, 26907 /*Tisha Longbridge*/, 26912 /*Grumbol Stoutpick*/, 26987 /*Falorn Nightwhisper*/, 26990 /*Alexis Marlowe*/, 26991 /*Sock Brightbolt*/, 26994 /*Kirea Moondancer*/, 28704 /*Dorothy Egan*/);
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (1218 /*Herbalist Pomeroy*/, 1676 /*Finbus Geargrind*/, 18779 /*Hurnak Grimmord*/);
+UPDATE `creature_template` SET `unit_flags2`=2048 WHERE `entry` IN (37068 /*Spiritual Reflection*/, 37182 /*High Captain Justin Bartlett*/, 24901 /*Maddened Frosthorn*/, 68868 /*Meng Meng*/);
+UPDATE `creature_template` SET `npcflag`=131 WHERE `entry`=1261; -- Veron Amberstill
+UPDATE `creature_template` SET `speed_run`=1.714286, `unit_flags2`=2097152 WHERE `entry`=37117; -- Kor'kron Battle-Mage
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (37119 /*Highlord Tirion Fordring*/, 37120 /*Highlord Darion Mograine*/, 18528 /*Xi'ri*/, 54404 /*Majordomo Executus*/, 21657 /*Neltharaku*/, 22112 /*Karynaku*/);
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry` IN (37127 /*Ymirjar Frostbinder*/, 37134 /*Ymirjar Huntress*/);
+UPDATE `creature_template` SET `npcflag`=81 WHERE `entry` IN (1292 /*Maris Granger*/, 5564 /*Simon Tanner*/, 8736 /*Buzzek Bracketswing*/, 11025 /*Mukdrak*/, 18777 /*Jelena Nightsky*/, 19180 /*Seymour*/, 19187 /*Darmari*/, 19576 /*Xyrol*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `BaseAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry` IN (37148 /*Skybreaker Summoner*/, 37544 /*Spire Gargoyle*/);
+UPDATE `creature_template` SET `unit_flags2`=2099202 WHERE `entry` IN (37181 /*The Lich King*/, 37503 /*Sindragosa's Ward*/);
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (1460 /*Unger Statforth*/, 37589 /*Stefan Vadu*/, 37688 /*Crusader Grimtong*/, 37997 /*Yili*/, 37998 /*Talan Moonstrike*/, 37999 /*Alana Moonstrike*/, 38054 /*Scott the Merciful*/, 38182 /*Niby the Almighty*/, 38283 /*Malfus Grimfrost*/, 38840 /*Jedebia*/, 43694 /*Katie Stokx*/, 15612 /*Krug Skullsplit*/, 20791 /*Iorioa*/, 27815 /*Brew Vendor*/, 29665 /*Pazik "The Pick" Prylock*/, 29725 /*Benik Boltshear*/, 33553 /*Freka Bloodaxe*/, 33555 /*Eliza Killian*/, 35766 /*Barrett Ramsey*/);
+UPDATE `creature_template` SET `npcflag`=81 WHERE `entry`=1632; -- Adele Fielder
+UPDATE `creature_template` SET `unit_class`=8, `unit_flags`=33280 WHERE `entry`=1649; -- Bolgor
+UPDATE `creature_template` SET `unit_flags`=537165888, `unit_flags2`=2049 WHERE `entry`=37582; -- Archmage Koreln
+UPDATE `creature_template` SET `unit_flags`=67141632 WHERE `entry` IN (1778 /*Ferocious Grizzled Bear*/, 42336 /*Tainted Black Bear*/, 65824 /*Shao-Tien Behemoth*/, 32572 /*Dragonblight Mage Hunter*/);
+UPDATE `creature_template` SET `npcflag`=4225 WHERE `entry` IN (37696 /*Crusader Halford*/, 5519 /*Billibub Cogspinner*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857 WHERE `entry` IN (37782 /*Flesh-eating Insect*/, 38228 /*Plagued Insect*/, 2586 /*Syndicate Highwayman*/, 56025 /*Cro Threadstrong*/, 56026 /*Darmari*/, 32321 /*Green Warrior*/, 32325 /*Gold Priest*/, 68253 /*Ixx*/);
+UPDATE `creature_template` SET `unit_flags`=33555200 WHERE `entry` IN (37850 /*Anub'Rekhan Image*/, 4640 /*Magram Wrangler*/, 4641 /*Magram Windchaser*/, 4645 /*Magram Mauler*/, 20611 /*Shimmerwing Moth*/, 28960 /*Totally Generic Bunny (JSB)*/);
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=6291456, `dynamicflags`=0 WHERE `entry`=37970; -- Prince Valanar
+UPDATE `creature_template` SET `BaseAttackTime`=1800 WHERE `entry`=38112; -- Falric
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (2399 /*Daryl Stack*/, 11097 /*Drakk Stonehand*/, 48619 /*Therisa Sallow*/, 66980 /*Grower Miao*/);
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry` IN (38316 /*Ormus the Penitent*/, 13447 /*Corporal Noreg Stormpike*/, 18482 /*Empoor*/, 20102 /*Goblin Commoner*/, 22433 /*Ja'y Nosliw*/, 23139 /*Overlord Mor'ghor*/, 23140 /*Taskmaster Varkule Dragonbreath*/, 23164 /*Toranaku*/, 24027 /*Sergeant Gorth*/, 24956 /*Juniper*/, 31081 /*Officer Van Rossem*/);
+UPDATE `creature_template` SET `unit_flags`=33554432 WHERE `entry` IN (38463 /*Empowering Orb Visual Stalker*/, 3681 /*Wisp*/, 63517 /*The Spring Drifter*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.289683, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=2776; -- Vengeful Surge
+UPDATE `creature_template` SET `unit_flags`=33280 WHERE `entry` IN (38967 /*Worgen Infiltrator*/, 44911 /*Dreadguard*/);
+UPDATE `creature_template` SET `npcflag`=80 WHERE `entry` IN (3175 /*Krunn*/, 6306 /*Helene Peltskinner*/, 8128 /*Pikkle*/, 26911 /*Bernadette Dexter*/, 26913 /*Frederic Burrhus*/, 64482 /*Healer Nan*/, 28697 /*Timofey Oshenko*/, 28698 /*Jedidiah Handers*/, 64924 /*Guyo Crystalgear*/, 29513 /*Didi the Wrench*/, 29514 /*Findle Whistlesteam*/);
+UPDATE `creature_template` SET `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry` IN (3236 /*Barrens Kodo*/, 5419 /*Glasshide Basilisk*/, 14901 /*Peon*/);
+UPDATE `creature_template` SET `speed_run`=1.142857 WHERE `entry` IN (3285 /*Venture Co. Peon*/, 42218 /*Stormwind Royal Guard*/, 42231 /*Captain Metlek*/, 8917 /*Quarry Slave*/, 16925 /*Bonechewer Raider*/, 19163 /*Refugee Kid*/, 25880 /*Minion of Kaw*/, 27365 /*Stabled Horse*/, 64729 /*Rok'nah Raider*/, 31033 /*Crusader of Virtue*/, 32598 /*Dalaran Visitor*/, 32602 /*Dalaran Visitor*/);
+UPDATE `creature_template` SET `unit_flags`=33536 WHERE `entry` IN (39323 /*Thonk*/, 59341 /*Merchant Tantan*/, 63934 /*Mistfall Villager*/, 63935 /*Mistfall Villager*/);
+UPDATE `creature_template` SET `npcflag`=83 WHERE `entry`=3494; -- Tinkerwiz
+UPDATE `creature_template` SET `unit_flags`=33088 WHERE `entry` IN (39616 /*Naz'jar Invader*/, 40765 /*Commander Ulthok*/, 41096 /*Naz'jar Spiritmender*/);
+UPDATE `creature_template` SET `BaseAttackTime`=4000 WHERE `entry`=39679; -- Corla, Herald of Twilight
+UPDATE `creature_template` SET `unit_flags`=294976 WHERE `entry`=39982; -- Crazed Mage
+UPDATE `creature_template` SET `unit_flags`=32832 WHERE `entry` IN (39985 /*Mad Prisoner*/, 50328 /*Fangor*/, 50329 /*Rrakk*/, 50330 /*Kree*/, 50745 /*Losaj*/, 50930 /*Hibernus the Sleeper*/, 50942 /*Snoot the Rooter*/, 51002 /*Scorpoxx*/, 26290 /*Jotun*/);
+UPDATE `creature_template` SET `unit_flags`=33024 WHERE `entry`=40443; -- Earthen Ring Scout
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=1.428571, `unit_flags`=33555200 WHERE `entry`=4643; -- Magram Pack Runner
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=33555200 WHERE `entry`=4662; -- Magram Bonepaw
+UPDATE `creature_template` SET `unit_flags2`=67110912 WHERE `entry` IN (40789 /*Generic Controller Bunny (CSA)*/, 54247 /*Circle of Thorns Portal*/);
+UPDATE `creature_template` SET `npcflag`=19 WHERE `entry` IN (5174 /*Springspindle Fizzlegear*/, 26997 /*Alestos*/, 27001 /*Darin Goodstitch*/, 28703 /*Linzy Blackbolt*/);
+UPDATE `creature_template` SET `unit_flags2`=35653632 WHERE `entry` IN (41911 /*Forsaken Invader*/, 41913 /*Gilneas Citizen*/, 41915 /*Worgen Warrior*/, 42053 /*Forsaken Plaguebearer*/, 53119 /*Flamewaker Forward Guard*/, 53121 /*Flamewaker Cauterizer*/, 53206 /*Hell Hound*/, 53222 /*Flamewaker Centurion*/, 53223 /*Flamewaker Beast Handler*/, 53693 /*Fiery Vortex*/, 54073 /*Flamewaker Hound Master*/);
+UPDATE `creature_template` SET `unit_flags`=33024, `unit_flags2`=67110912 WHERE `entry`=6145; -- School of Fish
+UPDATE `creature_template` SET `unit_flags`=32768, `HoverHeight`=2.4 WHERE `entry`=42341; -- Barbfin Skimmer
+UPDATE `creature_template` SET `unit_flags`=570720272, `dynamicflags`=0 WHERE `entry`=42847; -- Faceless Shadoweaver
+UPDATE `creature_template` SET `speed_walk`=0.777778, `speed_run`=0.5714286 WHERE `entry`=7031; -- Obsidian Elemental
+UPDATE `creature_template` SET `speed_run`=4.285714, `unit_flags`=768 WHERE `entry`=43289; -- Swift Seahorse
+UPDATE `creature_template` SET `unit_flags`=33024 WHERE `entry` IN (43571 /*Kidnapped Redridge Citizen*/, 43572 /*Kidnapped Redridge Citizen*/, 19444 /*Peasant Worker*/, 24014 /*Necrolord*/);
+UPDATE `creature_template` SET `npcflag`=18 WHERE `entry`=7869; -- Brumn Winterhoof
+UPDATE `creature_template` SET `npcflag`=82 WHERE `entry` IN (43769 /*Bralla Cloudwing*/, 35133 /*Maigra Keenfeather*/);
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry` IN (43775 /*Blackrock Invader*/, 43787 /*Blackrock Drake Rider*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.5873, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=4196352, `VehicleId`=992 WHERE `entry`=43788; -- Blackrock Drake
+UPDATE `creature_template` SET `npcflag`=1048577 WHERE `entry`=44013; -- Dragonmaw Envoy
+UPDATE `creature_template` SET `unit_flags2`=32 WHERE `entry`=44389; -- Training Dummy
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.428571, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=9596; -- Bannok Grimaxe
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (45524 /*Siege Tank Commander*/, 15293 /*Aendel Windspear*/, 51346 /*Orgrimmar Wind Rider*/, 19341 /*Grutah*/, 55181 /*Arakkoa Visitor*/, 65068 /*Old Whitenose*/, 29728 /*Walter Soref*/, 68312 /*Hilda Hornswaggle*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=9718; -- Ghok Bashguud
+UPDATE `creature_template` SET `BaseAttackTime`=2400 WHERE `entry`=45672; -- Naz'jar Soldier
+UPDATE `creature_template` SET `npcflag`=4194433 WHERE `entry` IN (10046 /*Bethaine Flinthammer*/, 10061 /*Killium Bouldertoe*/, 19368 /*Crinn Pathfinder*/, 19476 /*Lor*/, 21517 /*Ilthuril*/, 22469 /*Fiskal Shadowsong*/, 24905 /*Leassian*/, 27010 /*Celidh Aletracker*/, 27194 /*Trapper Saghani*/, 29658 /*Chelsea Reese*/);
+UPDATE `creature_template` SET `npcflag`=4194433 WHERE `entry` IN (10057 /*Theodore Mont Claire*/, 49395 /*Shannon Lamb*/, 49554 /*Kanath*/, 49790 /*Kazz Fetchum*/, 21336 /*Gedrah*/, 25037 /*Seraphina Bloodheart*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry` IN (10991 /*Wildpaw Gnoll*/, 55081 /*Wounded Nectarbreeze Farmer*/, 61498 /*Injured Villager*/, 61555 /*Zouchin Villager*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668 WHERE `entry`=11328; -- Eastvale Peasant
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=4.285714, `unit_flags2`=2099200 WHERE `entry`=11583; -- Nefarian
+UPDATE `creature_template` SET `BaseAttackTime`=1667 WHERE `entry` IN (11603 /*Whitewhisker Digger*/, 11604 /*Whitewhisker Geomancer*/, 26828 /*Magister Keldonus*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=11937; -- Demon Portal Guardian
+UPDATE `creature_template` SET `unit_class`=2 WHERE `entry`=47796; -- Obsidian Viletongue
+UPDATE `creature_template` SET `unit_flags2`=35651584 WHERE `entry`=47799; -- Vermillion Ashmaw
+UPDATE `creature_template` SET `speed_run`=2.142857, `unit_flags2`=2099200 WHERE `entry` IN (11981 /*Flamegor*/, 14601 /*Ebonroc*/);
+UPDATE `creature_template` SET `speed_run`=1.142857 WHERE `entry`=12996; -- Mounted Ironforge Mountaineer
+UPDATE `creature_template` SET `unit_flags`=512 WHERE `entry` IN (13000 /*Gnome Engineer*/, 63094 /*Malayan Quillrat*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=832 WHERE `entry`=13180; -- Wing Commander Jeztor
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (49266 /*Infernus*/, 15589 /*Eye of C'Thun*/, 19382 /*Wildhammer Gryphon Rider*/);
+UPDATE `creature_template` SET `unit_flags`=64 WHERE `entry`=13438; -- Wing Commander Slidore
+UPDATE `creature_template` SET `speed_run`=1.828571, `unit_flags`=64 WHERE `entry`=13439; -- Wing Commander Vipore
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry` IN (49548 /*Krazzworks Laborer*/, 59104 /*Shrine Elk*/, 23666 /*Winterskorn Berserker*/, 26280 /*Dragonblight Mage Hunter*/, 26816 /*Focus Wizard*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64 WHERE `entry`=13959; -- Alterac Yeti
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags2`=2099200 WHERE `entry`=13976; -- Tortured Drake
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry` IN (14187 /*Athramanis*/, 14188 /*Dirk Swindle*/, 21060 /*Enraged Air Spirit*/, 31059 /*Crusade Commander Entari*/, 31067 /*Crusader Sunborn*/);
+UPDATE `creature_template` SET `dynamicflags`=0 WHERE `entry`=50039; -- Goblin Assassin
+UPDATE `creature_template` SET `speed_run`=1.142857, `unit_flags2`=2099200 WHERE `entry`=14401; -- Master Elemental Shaper Krixix
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (50331 /*Go-Kan*/, 50332 /*Korda Torros*/, 50333 /*Lon the Bull*/, 50334 /*Dak the Breaker*/, 50336 /*Yorik Sharpeye*/, 50358 /*Haywire Sunreaver Construct*/, 50750 /*Aethis*/, 50768 /*Cournith Waterstrider*/, 50769 /*Zai the Outcast*/, 50770 /*Zorn*/, 50776 /*Nalash Verdantis*/, 50780 /*Sahn Tidehunter*/, 51059 /*Blackhoof*/, 23030 /*Dragonmaw Sky Stalker*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (50338 /*Kor'nas Nightsavage*/, 50340 /*Gaarn the Toxic*/, 50341 /*Borginn Darkfist*/, 50344 /*Norlaxx*/, 50347 /*Karr the Darkener*/);
+UPDATE `creature_template` SET `speed_walk`=0.444444, `speed_run`=0.4761907, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=50339; -- Sulik'shor
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814 WHERE `entry`=50349; -- Kang the Soul Thief
+UPDATE `creature_template` SET `speed_walk`=0.888888, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (50351 /*Jonn-Dar*/, 50352 /*Qu'nas*/, 50354 /*Havak*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=1500, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=50363; -- Krax'ik
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (50364 /*Nal'lak the Ripper*/, 50388 /*Torik-Ethis*/, 50734 /*Lith'ik the Stalker*/, 50739 /*Gar'lok*/, 50782 /*Sarnak*/, 50783 /*Salyin Warscout*/, 50787 /*Arness the Scale*/, 50789 /*Nessos the Oracle*/, 50806 /*Moldo One-Eye*/, 50808 /*Urobi the Walker*/, 50811 /*Nasra Spothide*/, 50816 /*Ruun Ghostpaw*/, 50817 /*Ahone the Wanderer*/, 50820 /*Yul Wildpaw*/, 50821 /*Ai-Li Skymirror*/, 50822 /*Ai-Ran the Shifting Cloud*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500 WHERE `entry`=14764; -- Icewing Marshal
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=1500, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (50828 /*Bonobos*/, 50830 /*Spriggin*/, 50831 /*Scritch*/, 50840 /*Major Nanners*/);
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry`=14991; -- League of Arathor Emissary
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` IN (15103 /*Stormpike Emissary*/, 19581 /*Maddix*/, 22013 /*Eye of the Storm Emissary*/, 30566 /*Strand of the Ancients Emissary*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=32832 WHERE `entry` IN (50967 /*Craw the Ravager*/, 51077 /*Bushtail*/);
+UPDATE `creature_template` SET `unit_class`=4, `unit_flags`=32832 WHERE `entry`=51071; -- Captain Florence
+UPDATE `creature_template` SET `unit_flags`=64, `unit_flags2`=2099200 WHERE `entry`=15263; -- The Prophet Skeram
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.9920629, `unit_flags`=33587200 WHERE `entry`=15313; -- Moonkin (Druid - Night Elf)
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags2`=2097152 WHERE `entry`=15471; -- Lieutenant General Andorov
+UPDATE `creature_template` SET `unit_flags2`=2099200, `HoverHeight`=1.375 WHERE `entry`=15516; -- Battleguard Sartura
+UPDATE `creature_template` SET `unit_flags2`=2097152 WHERE `entry`=15896; -- C'Thun Portal
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.428571 WHERE `entry`=16170; -- Coldmist Stalker
+UPDATE `creature_template` SET `npcflag`=4227 WHERE `entry`=16388; -- Koren
+UPDATE `creature_template` SET `unit_flags2`=138414080 WHERE `entry`=52530; -- Alysrazor
+UPDATE `creature_template` SET `unit_flags2`=1157629952 WHERE `entry`=52558; -- Lord Rhyolith
+UPDATE `creature_template` SET `unit_flags2`=1107298304 WHERE `entry` IN (52659 /*Movement Controller - Lord Rhyolith*/, 53723 /*Alysrsazor Timing Bunny*/);
+UPDATE `creature_template` SET `unit_flags2`=2129920 WHERE `entry`=53087; -- Right Foot
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=0.4, `speed_run`=0.1428571, `unit_flags`=768, `unit_flags2`=1141377024 WHERE `entry`=53194; -- Capture Point
+UPDATE `creature_template` SET `unit_flags2`=2099201, `dynamicflags`=0 WHERE `entry`=53209; -- Flamewaker Trapper
+UPDATE `creature_template` SET `unit_flags2`=2131968 WHERE `entry` IN (53395 /*Egg Satchel*/, 53433 /*Crackling Flame*/, 53795 /*Egg Pile*/, 53914 /*Molten Egg*/, 59481 /*World Trigger*/);
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry`=53408; -- Blue Drake
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry` IN (17660 /*Skeletal Gryphon*/, 53642 /*Cinderweb Spinner*/, 32322 /*Gold Warrior*/, 32340 /*Gold Shaman*/, 32341 /*Gold Mage*/);
+UPDATE `creature_template` SET `unit_flags`=320, `unit_flags2`=2099200 WHERE `entry`=53616; -- Kar the Everburning
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=33554432 WHERE `entry`=53635; -- Cinderweb Drone
+UPDATE `creature_template` SET `unit_flags2`=35686400 WHERE `entry`=53639; -- Flamewaker Cauterizer
+UPDATE `creature_template` SET `unit_flags2`=6293504 WHERE `entry` IN (53680 /*Blazing Broodmother*/, 53900 /*Blazing Broodmother*/);
+UPDATE `creature_template` SET `unit_flags2`=73402368 WHERE `entry` IN (53681 /*Molten Egg*/, 53899 /*Molten Egg*/);
+UPDATE `creature_template` SET `unit_flags2`=37750784 WHERE `entry`=53698; -- Fiery Tornado
+UPDATE `creature_template` SET `dynamicflags`=0 WHERE `entry` IN (17890 /*Weeder Greenthumb*/, 25342 /*Dead Caravan Guard*/, 25343 /*Dead Caravan Worker*/, 25841 /*Fizzcrank Recon Pilot*/);
+UPDATE `creature_template` SET `unit_flags2`=69208064 WHERE `entry` IN (53789 /*Blazing Monstrosity*/, 53792 /*Blazing Monstrosity*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags2`=71335936 WHERE `entry`=54299; -- Magma Orb
+UPDATE `creature_template` SET `speed_run`=0.9920629 WHERE `entry` IN (18600 /*Injured Refugee*/, 19149 /*Telaari Citizen*/, 21902 /*Cabal Spell-weaver*/, 59527 /*Trail Packer*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (54557 /*Amberglass Crab*/, 56441 /*Shade of Ling Heartfist*/, 56444 /*Tortured Spirit*/, 57406 /*Silk Farmer*/, 58230 /*Sandy Petrel*/, 58236 /*Sandy Petrel*/, 58546 /*Crane Wing Disciple*/, 58675 /*Spirebound Crab*/, 58880 /*Viseclaw Fisher*/, 58881 /*Viseclaw Scuttler*/, 59197 /*Canopy Screecher*/, 59351 /*Emerald Fenfly*/, 59668 /*Jungle Darter*/, 59742 /*Thunderfist Gorilla*/, 59747 /*Thunderfist Matriarch*/, 59753 /*Golden Tiger*/, 59754 /*Mottled Caterpillar*/, 59757 /*Duskstalker*/, 59767 /*Hollow Bloom*/, 59768 /*Jadeglow Wasp*/, 59770 /*Shrine Fly*/, 59979 /*Twinspire Peon*/, 60022 /*Neverrest Caravan Delivery Credit*/, 60196 /*Dusky Lory*/, 60198 /*Crimson Lory*/, 60200 /*Emerald Lory*/, 60508 /*Zengi*/, 60580 /*Amani Skullbreaker*/, 60581 /*Amani Raptor-Handler*/, 60774 /*Anglers Expedition Defender*/, 61090 /*Viseclaw Fry*/, 61159 /*Greenstone Terror*/, 61183 /*Belligerent Blossom*/, 61554 /*Zouchin Villager*/, 61586 /*Greenstone Miner*/, 62306 /*Dreadling*/, 62751 /*Dread Lurker*/, 62761 /*Sha-Haunted Rodent*/, 62778 /*Mama Stormstout*/, 63034 /*Brewgarden Brewer*/, 63347 /*Bitterwater Crab*/, 63477 /*Hawk Trainer*/, 63506 /*Zouchin Villager*/, 63507 /*Zouchin Villager*/, 63643 /*Shado-Pan Monastery Guard*/, 64436 /*Spineclaw Scuttler*/, 64832 /*Kovok*/, 65746 /*Tengfei Edgewater*/, 65747 /*Yanlin Edgewater*/, 65889 /*Su-Shi*/, 65894 /*Pao Pao*/, 65996 /*Nagging Dreadling*/, 66069 /*Krasarang Frog*/, 66597 /*Terrorling*/, 67020 /*Matthew Owens*/, 67362 /*Dominance Sniper*/, 67758 /*Shale Skitterers*/, 67759 /*Agitated Shale Spider*/, 67971 /*Shieldwall Engineer*/, 68405 /*Brawl Enthusiast*/, 68406 /*Brawl Enthusiast*/, 68584 /*Polluted Viseclaw Scuttler*/, 68764 /*Willard "Bubbles" Wilcox*/, 68963 /*Boom Room Bouncer*/, 68992 /*Brawl Enthusiast*/, 68994 /*Brawl Enthusiast*/, 69248 /*Ashen Weaver*/, 69382 /*Malignant Ooze*/, 69383 /*Quivering Blob*/, 69751 /*Agent Reginald*/, 69752 /*Agent Grisel*/, 69754 /*Agent Crowley*/, 69995 /*Silver Covenant Spellblade*/, 70219 /*Putrid Waste*/, 70237 /*Silver Covenant Ranger*/, 70354 /*Stabby Joe*/, 70380 /*Hawkmaster Anna*/, 70382 /*Hawkmaster Jer*/, 70574 /*Kirin Tor Mage*/, 70748 /*Argh*/, 71533 /*Andrestrasz*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=2048 WHERE `entry` IN (54558 /*Bog Crocolisk*/, 58431 /*Bulgeback Tortoise*/, 58548 /*Sly Fox*/, 58755 /*Manglemaw's Mother*/, 59084 /*Pearly Tortoise*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `HoverHeight`=4.5 WHERE `entry`=54559; -- Glittering Amberfly
+UPDATE `creature_template` SET `npcflag`=209 WHERE `entry`=18771; -- Brumman
+UPDATE `creature_template` SET `npcflag`=129 WHERE `entry` IN (18775 /*Lebowski*/, 29244 /*Jesse Masters*/);
+UPDATE `creature_template` SET `npcflag`=83, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=54614; -- Mishka
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=54616; -- Sully "The Pickle" McLeary
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54618 /*Nimm Codejack*/, 70316 /*Taoshi*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54697 /*Shao the Defiant*/, 54854 /*Gentle Mother Hanae*/, 55009 /*Shao the Defiant*/, 55283 /*Amber Kearnen*/, 56773 /*Yan*/, 57211 /*Grainlord Kai*/, 57407 /*Master Goh*/, 57424 /*Journeyman Chu*/, 58705 /*Fish Fellreed*/, 58707 /*Old Hillpaw*/, 58761 /*Tina Mudclaw*/, 58779 /*Daggle Bombstrider*/, 59073 /*Mayor Bramblestaff*/, 59353 /*Lao Muskpaw*/, 59354 /*Muskpaw Jr.*/, 59492 /*Pei-Zhi*/, 59716 /*Ji-Lu the Lucky*/, 60173 /*Jay Cloudfall*/, 60674 /*John "Big Hook" Marsock*/, 60795 /*Lorewalker Cho*/, 60981 /*Lin Tenderpaw*/, 61580 /*Ogo the Elder*/, 61581 /*Ogo the Younger*/, 61584 /*Sentinel Commander Qipan*/, 61585 /*Yak-Keeper Kyana*/, 61625 /*Provisioner Bamfu*/, 61962 /*Lorewalker Cho*/, 62304 /*Ban Bearheart*/, 62810 /*Moshu the Arcane*/, 63317 /*Captain "Soggy" Su-Dao*/, 63614 /*Ling of the Six Pools*/, 63784 /*Lorewalker Cho*/, 63822 /*Tani*/, 63983 /*Ms. Thai*/, 63984 /*Master Liu*/, 65908 /*Seer Yong*/, 66409 /*Lorewalker Pao*/, 67386 /*Sky Admiral Rogers*/, 67767 /*Brolic*/, 68526 /*Barkeep Townsley*/, 70980 /*Seer Hao Pham Roo*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=33556480 WHERE `entry`=54702; -- Gormali Raider
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (54703 /*Gormali Incinerator*/, 60912 /*Tomb Guardian*/, 69339 /*Electromancer Ju'le*/);
+UPDATE `creature_template` SET `unit_flags`=33587968 WHERE `entry` IN (18879 /*Phase Hunter*/, 19762 /*Coilskar Defender*/, 19768 /*Coilskar Siren*/, 63089 /*Shao-Tien Ritual Statue*/, 63090 /*Shao-Tien Ritual Statue*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (54763 /*Nectarbreeze Farmer*/, 54990 /*Captured Nectarbreeze Farmer*/, 56385 /*Skyfire Marine*/, 57223 /*Tricky Maizer*/, 57267 /*Maizerly Thief*/, 59232 /*Crane Wing Monk*/, 59378 /*Paleblade Flesheater*/, 60298 /*Deepflow Carp*/, 60422 /*Marista Fisherman*/, 60432 /*Nayeli Hammerhead*/, 63817 /*Binan Warrior*/, 64646 /*Shado-Pan Ranger*/, 64648 /*Shado-Pan Guard-Captain*/, 64859 /*Sky Captain Callanan*/, 65022 /*Wounded Warship Crew*/, 66196 /*Kernel Sprite*/, 67354 /*Shieldwall Marine*/, 67626 /*Captain Brent the Black*/, 67627 /*Captain Mulkey*/, 67646 /*Mazuru*/, 67689 /*SI:7 Saboteur*/, 67760 /*Skumblade Scrounger*/, 67826 /*Dominance Raider*/, 70284 /*Veteran Blackguard*/, 70293 /*Veteran Marksman*/, 70295 /*Wu Kao Ambusher*/, 70314 /*Whitefeather*/, 71202 /*Kor'kron Deadeye*/);
+UPDATE `creature_template` SET `unit_flags`=33536 WHERE `entry` IN (18927 /*Human Commoner*/, 19148 /*Dwarf Commoner*/, 19171 /*Draenei Commoner*/, 19172 /*Gnome Commoner*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=69208064 WHERE `entry`=54780; -- Orchard Fire
+UPDATE `creature_template` SET `npcflag`=640 WHERE `entry` IN (19053 /*Fabian Lanzonelli*/, 19343 /*Trop Rendlimb*/, 19348 /*Targrom*/, 19374 /*Salle Sunforge*/, 19472 /*Threlc*/, 19474 /*Karnaze*/, 19649 /*Dorni*/, 20916 /*Xerintha Ravenoak*/, 25035 /*Tyrael Flamekissed*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=33556480 WHERE `entry`=54896; -- Glade Porcupine
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54936 /*Gormali Raider*/, 54989 /*Gormali Slaver*/, 55016 /*Subjugator Gormal*/, 58068 /*Dojani Surveyor*/, 58377 /*Krasari Tormentor*/, 58610 /*Korjan Reaver*/, 58634 /*Korjan Collector*/, 59914 /*Shao-Tien Precursor*/, 60121 /*Reanimated Jade Warrior*/, 60225 /*Shao-Tien Marauder*/, 62293 /*Shan'ze Serpentbinder*/, 62440 /*Shan'ze Illusionist*/, 62530 /*Shan'ze Beastmaster*/, 63641 /*Shao-Tien Torturer*/, 63844 /*Shan'ze Invader*/, 63875 /*Shan'ze Infiltrator*/, 63888 /*Shan'ze Spymaster*/, 63933 /*Shan'ze Brutalizer*/, 63948 /*Shao-Tien Pillager*/, 65131 /*Shao-Tien Painweaver*/, 65132 /*Shao-Tien Conqueror*/, 65133 /*Shao-Tien Sorcerer*/, 65134 /*Shao-Tien Fist*/, 65626 /*Dojani Enforcer*/, 69235 /*Shan'ze Gravekeeper*/, 69238 /*Ancient Stone Conqueror*/, 69250 /*Kaida the Bloodletter*/, 70001 /*Backbreaker Uru*/, 70176 /*Horgak the Enslaver*/, 70588 /*Shan'ze Brutalizer*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54959 /*Pearlfin Aqualyte*/, 56690 /*Instructor Sharpfin*/, 59348 /*Pearlfin Villager*/, 64288 /*Watertaster Kurashel*/, 64289 /*Pearlshaper Jiying*/, 64290 /*Aqualyte Shussho*/, 64291 /*Poolwarden Abusshi*/, 64846 /*Springtender Ashani*/);
+UPDATE `creature_template` SET `speed_run`=1 WHERE `entry`=19164; -- Refugee Child
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (55110 /*Slingtail Stickypaw*/, 55195 /*Slingtail Fishripper*/, 61557 /*Slingtail Treeleaper*/, 61562 /*Slingtail Treeleaper*/);
+UPDATE `creature_template` SET `npcflag`=209, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=55143; -- Sally Fizzlefury
+UPDATE `creature_template` SET `npcflag`=4224 WHERE `entry`=19351; -- Daggle Ironshaper
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=33556481 WHERE `entry`=55193; -- Slingtail Mudseer
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=55196; -- Bold Karasshi
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (55201 /*Jinyu Prisoner*/, 58218 /*Saltback Turtle*/, 58219 /*Saltback Yearling*/, 58276 /*Fallsong Kai*/, 58277 /*Fallsong Om*/, 58367 /*Ik'thik Precursor*/, 58368 /*Ik'thik Vanguard*/, 58549 /*Sly Pup*/, 58754 /*Manglemaw*/, 58941 /*Seadragon*/, 59060 /*Beastslayer Insshu*/, 59775 /*Bluetip Reef Shark*/, 60037 /*Prickly Puffer*/, 60201 /*Mortbreath Snapper*/, 60202 /*Mortbreath Skulker*/, 60995 /*Enraged Enforcer*/, 61373 /*Krik'thik Scentlayer*/, 61516 /*Sra'thik Drone*/, 61517 /*Sra'thik Wound-Mender*/, 61518 /*Sra'thik Guard*/, 61540 /*Et'kil*/, 62008 /*Coldbite Matriarch*/, 62580 /*Serevex*/, 62581 /*Rothek*/, 62748 /*Shek'zeer Swarmborn*/, 62749 /*Shek'zeer Bladesworn*/, 62813 /*Vor'thik Dreadsworn*/, 62832 /*Kz'Kzik*/, 62833 /*Ilikkax*/, 62843 /*Azzix K'tai*/, 63375 /*Dreadmaw Grouper*/, 63677 /*Sra'thik Drone*/, 63680 /*Sra'thik Cacophyte*/, 63683 /*Sra'thik Swiftwing*/, 63684 /*Sra'thik Will-Breaker*/, 63685 /*Sra'thik Swarm-Leader*/, 63686 /*Sra'thik Vessguard*/, 63688 /*Sra'thik Deathmixer*/, 63944 /*Longfin Thresher*/, 64377 /*Dig*/, 64979 /*Vess-Guard Vik'az*/, 65551 /*Kor'thik Siegesmith*/, 65575 /*Vor'thik Swarmborn*/, 65935 /*Unleashed Spirit*/, 66752 /*Shark Pup*/, 66801 /*Shallow Grouper*/, 66818 /*Vicious Puffer*/, 67160 /*Klaxxi Vess-Guard*/, 67284 /*Drudge Mook*/, 67703 /*Slateshell Wanderer*/, 68536 /*Ja'Huk*/, 69251 /*Quivering Filth*/, 69335 /*Spirit-Bound Sentry*/, 70511 /*Zandalari Golem*/, 70690 /*Blood of Y'Shaarj*/, 70691 /*Mouth of Terror*/, 71112 /*Quivering Blood*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=55209; -- Traumatized Nectarbreeze Farmer
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (55284 /*Little Lu*/, 58278 /*Tired Shushen*/, 62538 /*Kil'ruk the Wind-Reaver*/, 62774 /*Malik the Unscathed*/, 63071 /*Skeer the Bloodseeker*/, 63072 /*Rik'kal the Dissector*/, 64815 /*Kor'ik*/, 70022 /*Ku'ma*/);
+UPDATE `creature_template` SET `npcflag`=66177 WHERE `entry` IN (19470 /*Gholah*/, 25036 /*Caregiver Inaara*/);
+UPDATE `creature_template` SET `npcflag`=643 WHERE `entry`=19471; -- Old Orok
+UPDATE `creature_template` SET `speed_walk`=0.16, `speed_run`=0.05714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=55336; -- Silkbead Snail
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=2048 WHERE `entry` IN (55376 /*Alchemy Bunny*/, 70311 /*Pillar Puzzle Bunny*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (55413 /*An Windfur*/, 59899 /*Fei*/);
+UPDATE `creature_template` SET `HoverHeight`=1.5 WHERE `entry` IN (55443 /*Goldwing*/, 24787 /*Fjord Hawk Matriarch*/, 26369 /*Imperial Eagle*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags2`=2099200 WHERE `entry`=19622; -- Kael'thas Sunstrider
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=1.555556, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=55597; -- Na Lek
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry` IN (19760 /*Cooling Infernal*/, 27501 /*Westfall Brigade Marine*/, 64793 /*Prairie Mouse*/, 31007 /*Azure Binder*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570688320, `unit_flags2`=2049 WHERE `entry`=55605; -- Pool of Blood
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (55646 /*Shademaster Kiryn*/, 58818 /*Cook Tope*/, 58819 /*Mayor Shiyo*/, 58820 /*Merchant Benny*/, 58962 /*Hai-Me Heavyhands*/, 60968 /*Xuen*/, 61660 /*Groundskeeper Ponch*/, 62278 /*Rensai Oakhide*/, 63285 /*Lo*/, 64521 /*Wanderer Chu*/, 67370 /*Jeremy Feasel*/, 69572 /*Vale of Eternal Blossoms Flame Warden*/, 69675 /*Lyalia*/, 70160 /*Taran Zhu*/, 70358 /*Scout Captain Elsia*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=34816 WHERE `entry` IN (55647 /*Shokia*/, 58547 /*Koro Mistwalker*/, 58609 /*Anduin Wrynn*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=55648; -- Riko
+UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry` IN (55713 /*Ol' Emma*/, 55724 /*Ram Master Ray*/);
+UPDATE `creature_template` SET `npcflag`=128, `unit_class`=8, `unit_flags`=33536 WHERE `entry`=55729; -- Griftah
+UPDATE `creature_template` SET `speed_run`=1.190476, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (55873 /*Snagtooth Troublemaker*/, 56184 /*Snagtooth Virmen*/, 56185 /*Snagtooth Tool-Grabber*/, 56462 /*Snagtooth Hooligan*/, 56513 /*Jinanya the Clawblade*/, 56514 /*Frenzyhop*/, 56520 /*Aiyu the Skillet*/, 56537 /*Chufa*/, 56538 /*Twitchheel Hoarder*/, 57413 /*Springtail Gnasher*/, 57415 /*Springtail Leaper*/, 57432 /*Springtail Ogler*/, 59514 /*Springtail Burrower*/, 59516 /*Springtail Warren-Mother*/, 60846 /*Blackmane Pillager*/, 65504 /*Snagtooth Pesterling*/, 66264 /*Springtail Digger*/, 66655 /*Twitchheel Sleepyhead*/, 68248 /*Corpse Spider*/, 68547 /*Skiggit*/, 68549 /*Light Watcher*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry` IN (56014 /*Tan Chao Bunny*/, 60079 /*General Purpose Bunny (JLR)*/, 60765 /*Ambush Event Bunny*/, 60910 /*Tombs Flavor Bunny*/, 60921 /*"Strange Happenings" - Ritual Credit*/, 60923 /*"Strange Happenings" - Book Credit*/, 61615 /*Momo Appears Smoke Bunny*/, 61787 /*Arrow Shooting Bunny*/, 61789 /*Arrow Receiving Bunny*/, 61799 /*Jump Landing Bunny*/, 61802 /*Jump Landing Bunny 1*/, 61815 /*Jump Landing Bunny 3*/, 63155 /*Stone Guardian*/, 63177 /*Ambush Trigger Visual*/, 63672 /*Fire Bunny*/, 64253 /*Finding Kovok - Effects Bunny*/, 64396 /*Invisible Stalker (Template)*/, 64680 /*Duskroot Fen Bunny*/, 65328 /*Discover Amberglow Bunny*/, 65416 /*Alchemist Yuan Bunny*/, 65768 /*Kite*/, 65808 /*Shrine of the Seeker's Body*/, 65811 /*Shrine of the Seeker's Breath*/, 65812 /*Shrine of the Seeker's Heart*/, 65884 /*Stew Bunny*/, 67064 /*Paragon Chat Controller*/, 67100 /*Hidden Paragon*/, 67422 /*Battle-Mine*/, 67741 /*Valve Bunny*/, 67802 /*Ship Controller*/, 67928 /*Stack Em High - Completion Bunny*/, 68541 /*"To Catch A Spy" - Controller Bunny*/, 68784 /*Northeastern Fuel Tank*/, 68785 /*Northern Fuel Tank*/, 68786 /*Northwestern Fuel Tank*/, 68813 /*Rusty Valve Bunny*/, 69019 /*General Purpose Bunny (JLR)*/, 69258 /*OLD General Purpose Stalker*/, 69451 /*Spell Focus Stalker*/, 69636 /*Gusts of the Hawk*/, 70390 /*Location 1*/, 70391 /*Location 2*/, 70392 /*Location 3*/, 70393 /*Location 4*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56032 /*General Rik-Rik Jr*/, 60979 /*Ken-Ken*/, 61289 /*Old Hat*/, 62738 /*Highroad Grummle*/, 64307 /*Brother Rabbitsfoot*/, 64376 /*Rusty Nail*/, 68681 /*Tak-Tak*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=33556480 WHERE `entry`=56033; -- Woolly Sheep
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=1823 WHERE `entry`=56034; -- Thieving Plainshawk
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=1826 WHERE `entry`=56106; -- Thieving Wolf
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56110 /*Xiao*/, 56133 /*Chen Stormstout*/, 56204 /*Pang Thunderfoot*/, 56205 /*Liang Thunderfoot*/, 56474 /*Mudmug*/, 56714 /*Master Bruised Paw*/, 56720 /*Loon Mai*/, 57402 /*Haohan Mudclaw*/, 57408 /*Mina Mudclaw*/, 62385 /*Den Mudclaw*/, 62779 /*Chen Stormstout*/, 67993 /*Vereesa Windrunner*/, 67995 /*Captain Elleane Wavecrest*/, 70552 /*Scout Captain Daelin*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56111 /*Lin Tenderpaw*/, 57209 /*Grainer Pan*/, 60289 /*Leni Kelpenstout*/, 61583 /*High Adept Paosha*/, 61706 /*Tai Ho*/, 62600 /*Hawkmaster Nurong*/, 66199 /*Lin Applebloom*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=56113; -- Clever Ashyo
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56138; -- Li Li
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=67143680 WHERE `entry`=56149; -- Rake Tree
+UPDATE `creature_template` SET `speed_run`=0.8571429, `unit_flags`=0 WHERE `entry`=56160; -- Moonfang Snarler
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=4196352 WHERE `entry`=56169; -- Generic Bunny 10.0
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=136316928, `VehicleId`=1837, `HoverHeight`=4 WHERE `entry`=56171; -- Great White Plainshawk
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=570687744, `unit_flags2`=2049 WHERE `entry`=56181; -- Shan'ze Spiritclaw
+UPDATE `creature_template` SET `unit_flags`=33587968 WHERE `entry`=56206; -- Pandriarch Windfur
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56207 /*Ang Thunderfoot*/, 56312 /*Shang Thunderfoot*/, 56465 /*Ana Thunderfoot*/, 57198 /*Guard Captain Oakenshield*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56208; -- Francis the Shepherd Boy
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry` IN (56233 /*Pearlfin Villager*/, 60279 /*Deceased Mortbreath*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.9285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56239 /*Adolescent Mushan*/, 56256 /*Wyrmhorn Turtle*/, 56523 /*Mushan Nomad*/, 58921 /*Thunder*/, 58922 /*Miss Rose*/, 59599 /*Miss Fifi*/, 66213 /*Koukou*/);
+UPDATE `creature_template` SET `unit_flags`=570720256, `unit_flags2`=33556481 WHERE `entry`=56264; -- Grookin Whomper
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56304 /*Mist Creeper*/, 56740 /*Mist Incarnation*/, 56752 /*Whitefisher Crane*/, 56753 /*Hornbill Strider*/, 58672 /*Fog Walker*/, 58885 /*Sha-Haunted Crane*/, 59665 /*Crested Bandit Crane*/, 59763 /*Great Crane*/, 59786 /*Lotus Crane*/, 62765 /*Ahgunoss*/, 62766 /*Mygoness*/, 64261 /*Exotic Pet Crane*/, 65819 /*Violetdown Songspinner*/, 67772 /*Creeping Moor Beast*/, 69065 /*Zandalari Beastcaller*/, 69154 /*Zandalari Saurcaller*/, 69170 /*Zandalari Commoner*/, 69171 /*Zandalari Jaguar Warrior*/, 69198 /*Zandalari Conscript*/, 69223 /*Zandalari Stoneshield*/, 69269 /*Zandalari Prospect*/, 69286 /*Master Caller*/, 69294 /*Zandalari Bloodguard*/, 69298 /*Zandalari Spearanger*/, 69302 /*Loa Speaker*/, 69312 /*Zandalari Beast Handler*/, 69376 /*Disciple of Jalak*/, 69521 /*Zandalari Beastcaller*/, 69552 /*Veteran Wingrider*/, 69622 /*Drakkari God-Hulk*/, 69663 /*Nurkala*/, 69780 /*Zandalari Beastcaller*/, 69865 /*Zandalari Stoneshield*/, 70003 /*Molthor*/, 70118 /*Zandalari Conscript*/, 70419 /*Zandalari Frostspear*/, 70420 /*Zandalari Prophet*/, 70421 /*Zandalari Firespear*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (56348 /*Toya*/, 56802 /*Zhang Yue*/, 58954 /*Ambassador Len*/, 59584 /*Fisherman Haito*/, 59905 /*Zhi the Harmonious*/, 59906 /*Sinan the Dreamer*/, 60135 /*Trawler Yotimo*/, 60506 /*Thelonius*/, 61495 /*Elder Shu*/, 62666 /*Sapmaster Vu*/, 62667 /*Lya of Ten Songs*/, 62707 /*Shomi*/, 71336 /*Gleep Chatterswitch*/, 71483 /*Abrogar Dusthoof*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56357 /*Lupello*/, 66479 /*Reef Thresher*/);
+UPDATE `creature_template` SET `HoverHeight`=1.2 WHERE `entry` IN (56396 /*Hungry Bloodtalon*/, 59384 /*Bluff Hawk*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56440; -- Muno the Farmhand
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (56467 /*Hao Mann*/, 57830 /*Sunni*/, 61379 /*Lin Whispercloud*/, 61380 /*Shin Whispercloud*/, 61791 /*Novice Snow*/, 63476 /*Hawkmaster Liu*/, 64371 /*Kar*/, 64825 /*Leng Windstaff*/, 64830 /*Toshi*/, 64901 /*Brewmaster Boof*/, 65748 /*Uncle Deming*/, 65890 /*Maolin Edgewater*/, 66095 /*Cousin Brackendeep*/, 66346 /*Blacktalon Watcher*/, 66350 /*Blacktalon Watcher*/, 70470 /*Feng Zhe*/, 70944 /*Shappu the Wise*/, 70945 /*Jash Fu-Hsing*/, 70946 /*Din Ayala*/, 70947 /*Craftsman Haneke*/, 70948 /*Jonathan Chen*/, 71526 /*Elizabeth Birdsong*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (56510 /*Hao Mann*/, 59586 /*Angler Shen*/, 60136 /*Fiznix*/, 60528 /*Kuo-Na Quillpaw*/, 60529 /*Yan Quillpaw*/, 62668 /*Olon*/);
+UPDATE `creature_template` SET `speed_run`=1.031746 WHERE `entry` IN (20683 /*Prophetess Cavrylin*/, 24999 /*Irespeaker*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56585 /*Pearlfin Aqualyte*/, 56591 /*Pearlfin Aqualyte*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56592; -- Pearlfin Aqualyte
+UPDATE `creature_template` SET `speed_walk`=1.111112, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56650 /*Stoneskin Basilisk*/, 64321 /*Echoweb Spinner*/, 64323 /*Echoweb Toxiclaw*/, 66686 /*Echoweb Cinderfang*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56659 /*Shin*/, 70461 /*Milly Greenfield*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=2048 WHERE `entry` IN (56683 /*Wild Stalker*/, 58631 /*Murkscale Striker*/, 63537 /*Windward Tiger*/, 63950 /*Stonebound Quilen*/, 64186 /*Stonebound Quilen*/, 67285 /*Jungle Shredder*/, 71011 /*Kor'kron Battlewolf*/);
+UPDATE `creature_template` SET `npcflag`=128, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56687 /*Metalworker Sashi*/, 56689 /*Pearldiver Su-Su*/);
+UPDATE `creature_template` SET `npcflag`=4225, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56693; -- Ot-Temmdo
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (56701 /*Pearlfin Poolwatcher*/, 60204 /*Great Grey Shark*/, 60282 /*Desperate Mortbreath*/, 61365 /*Krik'thik Locust-Guard*/, 62754 /*Kor'thik Warcaller*/);
+UPDATE `creature_template` SET `npcflag`=8193, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=56737; -- Ut-Nam
+UPDATE `creature_template` SET `BaseAttackTime`=1250, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56751; -- Emperor Tern
+UPDATE `creature_template` SET `npcflag`=3200 WHERE `entry`=20915; -- Noko Moonwhisper
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56769 /*Young Dawn Watcher*/, 65384 /*Grant*/, 70167 /*Maximo*/, 70168 /*Noah*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (56811 /*Yu'lon Disciple*/, 58010 /*Diver Zhang*/, 58011 /*Tumbler Feng*/, 58472 /*Kyo*/, 58639 /*Captive Sentinel*/, 58744 /*Shado-Pan Trainer*/, 59927 /*Caravan Driver*/, 60112 /*Anduin Wrynn*/, 60301 /*Kun-Lai Refugee*/, 60305 /*Kun-Lai Refugee*/, 60443 /*Avatar of Jade*/, 60930 /*Aspiring Monk*/, 60936 /*Tiger Style Monk*/, 60944 /*Trainer Ko*/, 60945 /*Trainer Lin*/, 61060 /*Serpent Style Monk*/, 61068 /*Crane Style Monk*/, 61529 /*Litter of Xuen*/, 62706 /*Cowardly Zue*/, 63652 /*Golden Lotus Captive*/, 63769 /*Kyo*/, 63893 /*Ben Fur*/, 63894 /*Helen Ry*/, 64299 /*Pyke Meadbeard*/, 64300 /*Mullony Shipswain*/, 64303 /*Kinna Persworth*/, 65004 /*Jonathan Jacobson*/, 65698 /*Restless Leng*/, 69391 /*The Royal Chamberlain*/, 70217 /*Sunreaver Captive*/, 70312 /*Lao-Chin the Iron Belly*/, 70313 /*Hawkmaster Nurong*/, 71065 /*Taran Zhu*/, 71340 /*Darkspear Headhunter*/, 71360 /*Kor'kron Elite*/);
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=56832; -- Razorback Snapper
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56833 /*Krosh*/, 58940 /*Elder Seadragon*/, 58942 /*Seadragon Hatchling*/, 59600 /*Shaggy*/, 59699 /*Mountain Yak*/, 60177 /*Mountain Yak*/, 61635 /*Wild Townlong Yak*/, 61668 /*Mooska*/, 61685 /*Ha-Cha*/, 65773 /*Ordo Yak*/, 65774 /*Ordo Yak Calf*/, 67895 /*Mature Terrapin*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57120 /*Wei Blacksoil*/, 57121 /*Feng Spadepaw*/, 57126 /*Zhang Marlfur*/, 57127 /*Mia Marlfur*/, 61004 /*Healiss*/, 61007 /*Hackiss*/, 63908 /*Ban Bearheart*/, 64978 /*Number Nine Jia*/, 67096 /*Nimble Shou*/, 67848 /*Seamus Goldenkicks*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768 WHERE `entry`=57122; -- Shu-Li Spadepaw
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57128 /*Ping Marlfur*/, 57161 /*Haiyun Greentill*/, 57162 /*Ying Greentill*/, 58937 /*Thunder Cleft Sunwalker*/, 59831 /*Jooru Elderblade*/, 60221 /*Golden Lotus Archer*/, 60475 /*Terrorbane*/, 60628 /*Mad Alchemist*/, 62928 /*Darkhatched Soulbleeder*/, 63044 /*Paleblade Slithertongue*/, 63564 /*Shado-Pan Gatewatcher*/, 63845 /*Shado-Pan Blackguard*/, 63846 /*Shado-Pan Wu Kao*/, 64631 /*Gurubashi Witch Doctor*/, 66267 /*Gatrul'lon Curseweaver*/, 66268 /*Gatrul'lon Flamecaller*/, 66270 /*Felstorm Warlock*/, 67283 /*Refining Specialist*/, 67435 /*Or'Dac*/, 68001 /*Savinia Loresong*/, 70089 /*Silver Covenant Spellbow*/, 70264 /*Jimmy Truong*/, 70265 /*Dan Mei*/, 70266 /*Kevin Horng*/, 70267 /*Emily Mei*/, 70309 /*Kirin Tor Guardian*/, 70337 /*Kirin Tor Defender*/, 70349 /*Kirin Tor Scholar*/, 70464 /*Frostmane Witch Doctor*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57129 /*Zhi Marlfur*/, 57130 /*Hua Marlfur*/, 57131 /*Ming Marlfur*/, 57163 /*Huizhong Greentill*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=33556480, `HoverHeight`=2 WHERE `entry`=57215; -- Grainhunter Hawk
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=1.5 WHERE `entry`=57216; -- Soaring Hunter
+UPDATE `creature_template` SET `unit_flags`=33685760 WHERE `entry`=21419; -- Infernal Attacker
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=34817 WHERE `entry`=57257; -- Cave Horror
+UPDATE `creature_template` SET `unit_flags`=33555008 WHERE `entry`=21426; -- Gnome Defender - 209
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=1934 WHERE `entry`=57285; -- General Purpose Pinpoint Bunny ZTO
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry` IN (57299 /*Glade Hunter*/, 58741 /*Glade Sprinter*/, 58893 /*Sungraze Mushan*/, 61354 /*Sik'thik Vess-Guard*/);
+UPDATE `creature_template` SET `npcflag`=641, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57312 /*Master Tao Woodear*/, 58162 /*Master Tao Woodear*/, 65937 /*Craftsman Hui*/);
+UPDATE `creature_template` SET `npcflag`=65537, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57313 /*Fela Woodear*/, 62869 /*Ni the Merciful*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57314 /*Sage Ja-Ro*/, 57433 /*Loommaster Jeng*/, 57441 /*Serpent Rider Kano*/, 58181 /*Thunder Cleft Brave*/, 58255 /*Dawnchaser Brave*/, 59224 /*Shai Cliffwatcher*/, 60530 /*Ellia Ravenmane*/, 60937 /*Shado-Pan Guardian*/, 60938 /*Shado-Pan Warden*/, 60939 /*Shado-Pan Warrior*/, 61006 /*Tankiss*/, 63372 /*Guardian of the Peak*/, 63524 /*Elder Hou*/, 63616 /*Tenwu of the Red Smoke*/, 63618 /*Hawkmaster Nurong*/, 63757 /*Elder Chi*/, 64191 /*Ghostly Pandaren Craftsman*/, 64287 /*Summer*/, 64311 /*Overlook Watcher*/, 64312 /*Grainsorter Pei*/, 64313 /*Mama Min*/, 64384 /*Mistweaver Lian*/, 64470 /*Hawkmaster Nurong*/, 64471 /*Tenwu of the Red Smoke*/, 64882 /*Madam Lani*/, 65893 /*Elder Yoon Su*/, 65909 /*Serenity*/, 65917 /*Cui Applebloom*/, 65923 /*Ju Applebloom*/, 65927 /*Chut Sri Nu*/, 66217 /*Siat Honeydew*/, 66251 /*Huntress Vael'yrie*/, 67927 /*Blood Guard Gro'tash*/, 68408 /*Bizmo's Brawlpub Bouncer*/, 68537 /*Keith "The Party" Westin*/, 68539 /*Tasha Windpaw*/, 68540 /*Twix Gearspark*/, 68796 /*Brom Ironboot*/, 68797 /*Babby Ironboot*/, 68798 /*Verah "Violet" Bustle*/, 68801 /*Flora*/, 68803 /*Willow Cloudstep*/, 68828 /*Sky Admiral Rogers*/, 70223 /*Lorewalker Cho's Image*/, 70720 /*Kreeg O'Lalley*/, 70721 /*Auriella Giggysprock*/, 70722 /*Grant Lazarby*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (57324 /*Elder Sage Tai-Feng*/, 58421 /*Hemet Nesingwary*/, 58434 /*Matt "Lucky" Gotcher*/, 67402 /*Zazzix "Toasty" Sparkrocket*/, 68166 /*Sully "The Pickle" McLeary*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (57325 /*Xiong the Brawler*/, 58608 /*Dawnchaser Captive*/, 69267 /*Silver Covenant Scout*/, 69305 /*Sunreaver Scout*/, 70666 /*Ty'thar*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry` IN (57338 /*Sha Spawner*/, 57625 /*Generic Sparkle Bunny (CSA)*/, 58275 /*Nest Bunny*/, 59169 /*Bunny: Spirits of the Water*/, 61316 /*Tablet Kill Credit*/, 63076 /*Banner Fire Bunny*/, 63137 /*Tree Trimming Effects Bunny*/, 63634 /*Mogu Tent Fire Bunny*/, 63797 /*Brazier Bunny*/, 63943 /*Mistfall Village Fire Bunny*/, 64893 /*Binan Village Roof Fire*/, 67753 /*Torch*/, 68163 /*Gunship Radio*/, 68701 /*Burning Stalker*/, 68860 /*Sky Admiral Rogers*/, 69047 /*Skyfire Gyrocopter*/, 69217 /*Manfred*/, 69361 /*Manfred*/, 69602 /*Manfred*/, 70097 /*Lightning Channel Target Bunny*/, 70388 /*Sunreaver Mana Collector Target*/, 70394 /*Kirin Tor Mana Focus Target*/, 70528 /*Sparkle Stalker (RKS)*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2131968 WHERE `entry`=57385; -- Gai Lan
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57389 /*Shadow of Doubt*/, 59715 /*Riverblade Chieftain*/, 63673 /*Farraki Sand-Stormer*/, 63907 /*Snow Blossom*/, 63909 /*Yalia Sagewhisper*/, 63910 /*Fei Li*/, 64642 /*Gurubashi Worshipper*/, 66707 /*Drakkari Frostweaver*/, 67330 /*Dominance Battlemage*/, 70315 /*Yalia Sagewhisper*/, 71007 /*Kor'kron Immolator*/, 71188 /*Kor'kron Earthshaker*/);
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `unit_flags`=536903680 WHERE `entry` IN (57400 /*Yu'lon Guardian*/, 62650 /*White Orchid*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=57401; -- Mung-Mung
+UPDATE `creature_template` SET `speed_walk`=0.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=57403; -- Hungry Silkworm
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67584, `VehicleId`=1936 WHERE `entry`=57404; -- Silky
+UPDATE `creature_template` SET `npcflag`=19, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (57405 /*Silkmaster Tsai*/, 64691 /*Lorewalker Huynh*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537165824, `unit_flags2`=4194304, `VehicleId`=1948, `HoverHeight`=3 WHERE `entry`=57421; -- Mothallus
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=2048 WHERE `entry` IN (57422 /*Mutated Silkmoth*/, 62760 /*Frightened Mushan*/, 65984 /*Tiny Mutated Silkmoth*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2099200, `VehicleId`=1934 WHERE `entry`=57456; -- Four Winds Clifftop
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.9920629, `unit_flags`=2147778560 WHERE `entry`=21709; -- Eykenen
+UPDATE `creature_template` SET `unit_flags`=2147778560 WHERE `entry`=21711; -- Haalum
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=57648; -- Mothfighter
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=1955 WHERE `entry`=57804; -- Mothallus Bait
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry` IN (57811 /*Bell Bunny*/, 57814 /*Bell Bunny Light*/, 60114 /*Generic Bunny 4.0*/, 63244 /*Spirit Channel Target Bunny*/);
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `HoverHeight`=3 WHERE `entry`=57851; -- Thunderbird
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=4.95 WHERE `entry`=57871; -- War Serpent
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=0.9920629 WHERE `entry`=22072; -- Shadowsworn Drakonid
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048, `VehicleId`=1975 WHERE `entry`=57998; -- Yi-Mo Questgiver Wheel
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=34816, `VehicleId`=1974 WHERE `entry`=57999; -- Yi-Mo Questgiver Axle
+UPDATE `creature_template` SET `speed_walk`=1.111112, `speed_run`=0.4365086, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58067 /*Jungle Skitterer*/, 60804 /*Lightfooted Snapclaw*/);
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58071 /*Trained Compy*/, 69244 /*Fierce Anklebiter*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry`=58116; -- Carp Hunter
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2306 WHERE `entry`=58117; -- Dojani Reclaimer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=34816 WHERE `entry` IN (58161 /*Red Beacon Bunny*/, 58170 /*Blue Beacon Bunny*/, 58173 /*Green Beacon Bunny*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58165 /*Dojani Dominator*/, 58224 /*Groundbreaker Brojai*/, 58614 /*Korjan Reclaimer*/, 60224 /*Shao-Tien Spiritrender*/, 60273 /*Zhao-Jin the Bloodletter*/, 63065 /*Shao-Tien Mindbender*/, 63221 /*Shao-Tien Mindbender*/, 63240 /*Shadowmaster Sydow*/, 64192 /*Shao-Tien Subjugator*/, 65598 /*Krasari Runekeeper*/, 65638 /*Korjan Slavemaster*/, 69264 /*Shan'ze Thundercaller*/, 69800 /*Haqin of the Hundred Spears*/, 69809 /*Forgemaster Deng*/, 71511 /*Shan'ze Thundercaller*/);
+UPDATE `creature_template` SET `npcflag`=641, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=58172; -- Supplies Kodo
+UPDATE `creature_template` SET `npcflag`=66177, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58184 /*Malaya Dawnchaser*/, 60605 /*Liu Ze*/, 62874 /*Kali the Night Watcher*/, 62878 /*Nan the Mason Mug*/, 62967 /*Aizra Dawnchaser*/, 65907 /*Jiayi Applebloom*/, 67775 /*Tonak*/, 70182 /*Isirami Fairwind*/);
+UPDATE `creature_template` SET `npcflag`=6785, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=58185; -- Kosta Dawnchaser
+UPDATE `creature_template` SET `speed_walk`=0.6, `speed_run`=0.6857143, `BaseAttackTime`=2660, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=58186; -- Yu'lon Guardian
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=4.8 WHERE `entry` IN (58213 /*Windward Matriarch*/, 58214 /*Windward Matriarch*/, 62448 /*Onyx Stormclaw*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=3.2 WHERE `entry`=58217; -- Windward Viper
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58220 /*Windward Hatchling*/, 58243 /*Windward Hatchling*/, 58244 /*Windward Hatchling*/, 62567 /*Cloudrunner Hatchling*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (58225 /*Instructor Tong*/, 59418 /*Lorewalker Cho*/, 59517 /*Fish Fellreed*/, 60436 /*Li Hai*/, 60757 /*Sage Liao*/, 64259 /*Master Angler Ju Lien*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=537166592, `unit_flags2`=1 WHERE `entry`=58227; -- Dojani Reclaimer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `HoverHeight`=1.5 WHERE `entry`=58231; -- Dampnet Osprey
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2048 WHERE `entry`=58354; -- Chufa Cannon Target
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (58408 /*Leven Dawnblade*/, 58465 /*Anji Autumnlight*/, 58466 /*Rook Stonetoe*/, 59338 /*Che Wildwalker*/);
+UPDATE `creature_template` SET `unit_flags2`=33556480 WHERE `entry`=58412; -- Shao-Tien Marauder
+UPDATE `creature_template` SET `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166336, `unit_flags2`=1 WHERE `entry`=58416; -- Injured Hatchling
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968 WHERE `entry`=58419; -- Sleeping Guardian
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=58422; -- Hemet Nesingwary Jr.
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=2131968 WHERE `entry` IN (58423 /*Cloud Ring*/, 58425 /*Cloud Ring*/, 58426 /*Cloud Ring*/);
+UPDATE `creature_template` SET `speed_walk`=1.4, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=1826 WHERE `entry`=58432; -- Gorge Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (58435 /*Darkhide*/, 58474 /*Bloodtip*/, 59013 /*Pack Mushan*/, 61414 /*Doom Bloom*/, 63521 /*Disturbed Saurok*/, 63812 /*Apothecary Cheng*/, 64309 /*Skyrange Mushan*/, 67424 /*Battletron*/, 67525 /*Fran*/, 68250 /*Unguloxx*/, 68348 /*Krasari Stalker*/, 68353 /*Jungle Strider*/, 69161 /*Oondasta*/, 69983 /*Primal Direhorn*/, 69991 /*Primal Devilsaur*/, 69992 /*Primal Direhorn Hatchling*/, 69993 /*Young Primal Devilsaur*/, 70004 /*Young Primal Devilsaur*/, 70005 /*Young Primal Devilsaur*/, 70006 /*Young Primal Devilsaur*/, 70007 /*Young Primal Devilsaur*/, 70009 /*Primal Devilsaur*/, 70010 /*Primal Devilsaur*/, 70011 /*Primal Devilsaur*/, 70012 /*Primal Direhorn Hatchling*/, 70013 /*Primal Direhorn Hatchling*/, 70014 /*Primal Direhorn Hatchling*/, 70015 /*Primal Direhorn Hatchling*/, 70016 /*Primal Direhorn*/, 70017 /*Primal Direhorn*/, 70018 /*Primal Direhorn*/, 70274 /*Wizak Blastbait*/, 70606 /*Newt*/, 70607 /*Patch*/, 70608 /*Volt*/, 70609 /*Ticker*/, 71101 /*Commander Ag'troz*/, 71102 /*Kar Greyskull*/, 71244 /*Kor'kron Shadowblade*/, 71245 /*Kor'kron Dark Shaman*/, 71251 /*Hoff Greasegun*/, 71349 /*Northwatch Caravan Leader*/, 71386 /*Astranaar Caravan Leader*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=4229120 WHERE `entry` IN (58437 /*Race Flag*/, 58479 /*Race Flag*/, 58480 /*Race Flag*/, 58481 /*Race Flag*/, 58482 /*Race Flag*/, 58483 /*Race Flag*/, 58484 /*Race Flag*/, 58485 /*Race Flag*/, 58487 /*Race Flag*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=4229120, `VehicleId`=2006 WHERE `entry`=58438; -- Checkpoint
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58439 /*Torjar's Bane*/, 59238 /*Twisted Tormentor*/, 60767 /*Captain Ripflesh*/, 71005 /*Kor'kron Demolisher*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (58467 /*Che Wildwalker*/, 69210 /*Skumblade Fleshripper*/, 69227 /*Skumblade Scavenger*/, 69228 /*Skumblade Filthmonger*/, 69348 /*Skumblade Shortfang*/, 69402 /*Tomma*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=58468; -- Sun Tenderheart
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=58469; -- Ren Firetongue
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=58470; -- He Softfoot
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=58471; -- Kun Autumnlight
+UPDATE `creature_template` SET `speed_walk`=1.388888, `speed_run`=0.4960314, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2131968 WHERE `entry`=58476; -- The Killem' Jaro
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58489 /*Wilderland Stag*/, 69349 /*Dark-Eye Raven*/);
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58490 /*Wilderland Doe*/, 59936 /*Armored Carp*/, 60946 /*Chillwater Carp*/, 65738 /*Whitescale Cranefish*/, 65739 /*Bluescale Cranefish*/, 65740 /*Redscale Cranefish*/, 65741 /*Greenscale Cranefish*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2099200 WHERE `entry` IN (58500 /*Wreckage on Fire*/, 65753 /*Totally Generic Bunny - GIGANTIC (JSB)*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133056, `unit_flags2`=2049 WHERE `entry`=58611; -- Crane Wing Initiate
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry` IN (58641 /*Krasari Prowler*/, 58953 /*Survival Ring Flames Controller*/, 58994 /*Battle Ring Controller*/, 60014 /*Bunny: Explosive Target*/, 60294 /*Gasaran*/, 63282 /*Buried Quilen*/, 65357 /*A Mysterious Voice*/, 65857 /*Buried Head*/, 65860 /*Mogu Lamppost*/, 69263 /*Tormented Skyscreamer*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=2048 WHERE `entry`=58642; -- Krasari Cub
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33849600 WHERE `entry`=58645; -- Ruined Guardian
+UPDATE `creature_template` SET `speed_walk`=0.007999999, `unit_flags2`=2099200 WHERE `entry`=22841; -- Shade of Akama
+UPDATE `creature_template` SET `npcflag`=65537, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=58691; -- Bartender Tomro
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (58695 /*Groundskeeper Chu*/, 61211 /*Tiger Temple Monk*/, 61212 /*Tiger Temple Spectator*/, 64298 /*Boyle Merribrew*/, 64301 /*Reagor Kennessy*/, 64302 /*Archie Wandswaddle*/, 64304 /*Eloanna*/, 65861 /*Sen the Optimist*/, 68768 /*"Numbers" Pfeiffer*/, 68799 /*Sniffy Pete*/, 70169 /*Master Nguyen*/, 70171 /*Elloric*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58709 /*Chee Chee*/, 59452 /*Brother Rabbitsfoot*/, 59701 /*Brother Lintpocket*/, 59755 /*Brother Oilyak*/, 60503 /*Uncle Keenbean*/, 60596 /*Cousin Gootfur*/, 63778 /*Messenger Grummle*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=58711; -- Wounded Traveller
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=58736; -- Gladecaster Lang
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=2099200 WHERE `entry`=58768; -- Cracklefang
+UPDATE `creature_template` SET `speed_walk`=0.48, `speed_run`=0.3857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32848, `unit_flags2`=32768, `VehicleId`=2379 WHERE `entry`=58769; -- Vicejaw
+UPDATE `creature_template` SET `speed_walk`=1.555556, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (58771 /*Quid*/, 58778 /*Aetha*/, 61174 /*Cursed Jade*/, 63519 /*Water Spirit*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=58784; -- Incursion Huntress
+UPDATE `creature_template` SET `npcflag`=4737, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58789 /*Elyssa Nightquiver*/, 59079 /*Christofen Moonfeather*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (58817 /*Spirit of Lao-Fe*/, 61305 /*Reclaimer Zuan*/, 66206 /*Mogu Infiltrator*/);
+UPDATE `creature_template` SET `npcflag`=8193, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=58843; -- "Dragonwing" Dan
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58850 /*Sunwalker Scout*/, 58857 /*Darnassian Outrider*/);
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (58918 /*Hillpaw's Chicken*/, 62230 /*Crypt Scarab*/, 63361 /*Mei Li Sparkler*/, 63979 /*Cave Crawler*/, 64088 /*Hungry Gull*/, 65844 /*Lumpy Toad*/, 65846 /*Pimple*/, 65847 /*Zitz*/, 65848 /*Rash*/, 67768 /*Swamp Hopper*/, 71444 /*Cow*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58938 /*Sha-Haunted Tiger Cub*/, 59139 /*Stout Shaghorn*/, 60459 /*Flame Rider*/, 60625 /*Rage Rider*/, 62938 /*Pack Goat*/, 65875 /*Yongqi Flamerider*/, 66208 /*Wild Shaghorn Calf*/, 66211 /*Injured Shaghorn*/, 68157 /*Swift Gray Wolf*/, 69523 /*Fatty Goat*/, 71228 /*Riderless Battle Worg*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133568, `unit_flags2`=1 WHERE `entry`=58955; -- Stoneplow Envoy
+UPDATE `creature_template` SET `speed_walk`=0.3, `speed_run`=0.3428572, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=58968; -- Hopeless Monk
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262144, `unit_flags2`=2048 WHERE `entry`=58969; -- Hopeless Acolyte
+UPDATE `creature_template` SET `npcflag`=3203 WHERE `entry`=23145; -- Rumpus
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.031746 WHERE `entry`=23149; -- Mistress of the Mines
+UPDATE `creature_template` SET `speed_walk`=0.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59002; -- Mutated Silkworm
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry` IN (59024 /*Fairlands Gazelle*/, 59137 /*Incursion Sentinel*/, 61311 /*Niuzao Sentinel*/, 63939 /*Golden Lotus Guard*/, 66942 /*Sha Haunt*/, 68700 /*Fallen Shieldwall Soldier*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2142 WHERE `entry`=59037; -- Kung Din
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59042 /*Mothwrangler Min*/, 69966 /*Acon Deathwielder*/, 69968 /*Ethan Natice*/, 69981 /*Hayden Christophen*/, 69982 /*Lok'nor Bloodfist*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59044 /*Silk Fist*/, 62656 /*Huo the Firestarter*/, 62660 /*Apothecary Sun*/, 62663 /*Inkmaster Trista*/, 67054 /*Mah Blacksoil*/);
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59045 /*Sniff*/, 62657 /*Jolly Chao*/, 62792 /*Provisioner Gira*/, 63815 /*Puli the Even Handed*/, 67988 /*Malley*/, 70719 /*Mozzle Gearbeer*/, 70723 /*Dame Jesepha*/);
+UPDATE `creature_template` SET `npcflag`=8192, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59046 /*Lira Skysplitter*/, 59047 /*Munch Windhoof*/, 59048 /*Maylen Moonfeather*/, 59049 /*Tylen Moonfeather*/, 61474 /*Jo the Wind Watcher*/, 61511 /*Bo the Wind Claimer*/, 62898 /*Kite Master Li-Sen*/, 62901 /*Kite Master Wong*/, 63500 /*Jin the Flying Keg*/, 68226 /*Daggin Windbeard*/, 69359 /*Beeble Sockwrench*/, 69360 /*Bozzle Blastinfuse*/);
+UPDATE `creature_template` SET `npcflag`=640, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59059; -- Eel-Charmer Shaoshu
+UPDATE `creature_template` SET `npcflag`=83, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59077; -- Apothecary Cheng
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=59081; -- Diminutive Cocoon
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59119 /*Kunzen Ravager*/, 59120 /*Kunzen Rockflinger*/, 59121 /*Kunzen Hunter*/, 59124 /*Kunzen Collector*/, 59125 /*Kunzen Soupmaster*/, 59282 /*Knucklethump Ambusher*/, 59410 /*Knucklethump Smasher*/, 59436 /*Ookin Marauder*/, 59567 /*Chief Yip-Yip*/, 59731 /*Brother Brokendice*/, 59802 /*Broketooth Ravager*/, 59837 /*Experienced Guide*/, 60090 /*Cho Cho the Wicked*/, 60186 /*Experienced Guide*/, 60299 /*Unga Fish-Getter*/, 60357 /*Unga Treasure-Hider*/, 60358 /*Unga Villager*/, 60667 /*Angry Hozen*/, 60904 /*Rescued Grummle*/, 61162 /*Cousin Bag-of-Rocks*/, 61546 /*Chief Gukgut*/, 62474 /*Unga Spearscamp*/, 62481 /*Unga Spearscamp*/, 62494 /*Unga Nibstabber*/, 62495 /*Unga Villager*/, 62499 /*Unga Beachbummer*/, 62503 /*Unga Beachbummer*/, 62961 /*Kota Peak Grummle*/, 63256 /*Unga Hozekateer*/, 66263 /*Hozen Face-Smasher*/, 66513 /*Kunzen Soggybottom*/, 70427 /*Hozen Fishnibbler*/, 70428 /*Hozen Beercatcher*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59123 /*Kunzen Ritualist*/, 59412 /*Knucklethump Jibstabber*/, 59435 /*Ookin Shaman*/, 59495 /*Knucklethump Smasher*/, 59682 /*Knucklethump Snatcher*/, 59803 /*Broketooth Leaper*/, 59805 /*Mo Mo*/, 60676 /*Raging Hozen*/, 60699 /*Furious Hozen*/, 60706 /*Mad Hozen*/, 62492 /*Unga Totemchipper*/);
+UPDATE `creature_template` SET `unit_flags`=536904448, `unit_flags2`=2049 WHERE `entry`=23287; -- Murkblood Miner
+UPDATE `creature_template` SET `unit_flags`=33817344 WHERE `entry`=23289; -- Mine Car
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (59126 /*Jokka-Jokka*/, 59127 /*Kon-Kon*/, 59128 /*Jim-Jim*/, 59129 /*Maaka*/, 59130 /*Teeku*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (59131 /*Lor-Lor*/, 59132 /*Rit-Rit*/, 59133 /*Buk-Buk*/, 59134 /*Yammo*/, 59135 /*Bimba*/, 70678 /*Grandpa Grumplefloot*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166080, `unit_flags2`=2049 WHERE `entry`=59151; -- Zhu's Watch Courier
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=67143680 WHERE `entry`=59154; -- Yak Statuette
+UPDATE `creature_template` SET `unit_flags`=67141696 WHERE `entry`=59158; -- Subjugated Serpent
+UPDATE `creature_template` SET `npcflag`=643 WHERE `entry` IN (59173 /*Kai Wanderbrew*/, 59569 /*Brewmaster Blanche*/, 64101 /*Taijing the Cyclone*/, 66998 /*Jinho the Wind Breaker*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59180 /*Orachi*/, 59181 /*Enraged Tideweaver*/, 62814 /*Vor'thik Fear-Shaper*/, 62838 /*Zan'thik Ambermancer*/, 62863 /*Qi'tar the Deathcaller*/, 63681 /*Sra'thik Regenerator*/, 65646 /*Ik'thik Fear-Shaper*/);
+UPDATE `creature_template` SET `npcflag`=2, `unit_flags2`=2099200 WHERE `entry`=23345; -- Wing Commander Ichman
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=2048 WHERE `entry` IN (59196 /*Krasari Prowler*/, 59602 /*Luna*/, 59621 /*Pookie*/, 59622 /*Bella*/, 59624 /*Virgil*/, 59627 /*Casper*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=294912 WHERE `entry`=23376; -- Dragonmaw Foreman
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2050 WHERE `entry` IN (59229 /*Burn the Rope Bunny*/, 59260 /*Kunzen Ritual Bunny*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=59233; -- Crane Wing Acolyte
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry` IN (59235 /*Albino Canopy Screecher*/, 68350 /*Wild Lory*/, 69815 /*Silentstrike Pterrorwing*/);
+UPDATE `creature_template` SET `unit_flags`=33554688 WHERE `entry` IN (23409 /*Invisible Stalker - Large AOI (Scale x3)*/, 60776 /*Empyreal Focus*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=1.25 WHERE `entry`=59251; -- Trenchwing Scavenger
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048, `VehicleId`=2044 WHERE `entry`=59252; -- Sha Wall Crawler
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2048 WHERE `entry` IN (59276 /*Weapons Credit*/, 59278 /*Tools Credit*/, 59279 /*Beer Credit*/, 59280 /*Grain Credit*/, 66215 /*Beer Bunny*/, 67687 /*Special Attack Manager*/, 68518 /*GNOME Trap Bunny*/, 69270 /*Sunreaver Scout's Soul*/, 69284 /*Mogu Corpse Bunny*/, 69369 /*Lightning Ritual Bunny*/, 69373 /*Dance Bunny*/, 69445 /*Silver Covenant Scout's Soul*/, 69623 /*Scenario 5.2 - Tear Down This Wall - Wall Destroyer Bunny - JSB*/, 69900 /*Stone Ritual Bunny*/, 71207 /*Barrens Rock*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (59306 /*Ripple of Despair*/, 61614 /*Bubblemaker Ashji*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048, `VehicleId`=2046 WHERE `entry` IN (59307 /*Clean Yak*/, 59407 /*Kobeyak*/);
+UPDATE `creature_template` SET `npcflag`=4194433, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59310 /*Teve Dawnchaser*/, 66243 /*Pan the Kind Hand*/, 66266 /*Cheung*/, 70184 /*Tassia Whisperglen*/);
+UPDATE `creature_template` SET `npcflag`=641, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=59320; -- Steven Walker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=134219776 WHERE `entry`=59385; -- Yongqi Scout
+UPDATE `creature_template` SET `npcflag`=2179, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59402; -- Slimy Inkstain
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2056 WHERE `entry`=59409; -- Hozen Swing
+UPDATE `creature_template` SET `npcflag`=4194433, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59413 /*Cousin Mountainmusk*/, 59509 /*Herder Muskfree*/);
+UPDATE `creature_template` SET `speed_run`=1.111111, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry`=59419; -- Chomp Chomp
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry`=59420; -- Dead Mountain Yak
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1.111111, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2105 WHERE `entry`=59421; -- Old Poot Poot
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (59438 /*Knucklethump Spectator*/, 60598 /*The Ook of Dook*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2061 WHERE `entry`=59439; -- Hozen Swing
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024 WHERE `entry` IN (59451 /*Mishka*/, 68182 /*Seraphine of the Winter*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry`=59462; -- Grookin Whomper
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=67110912 WHERE `entry`=59463; -- Pearlfin Trainee
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=59505; -- Suspicious Footprint
+UPDATE `creature_template` SET `HoverHeight`=2.25 WHERE `entry`=59528; -- Cliff Kite
+UPDATE `creature_template` SET `unit_flags2`=2052 WHERE `entry`=23691; -- Shoveltusk Stag
+UPDATE `creature_template` SET `HoverHeight`=2 WHERE `entry` IN (23693 /*Duskwing Eagle*/, 59700 /*Northwind Hawk*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59532; -- Wika-Wika
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=59533; -- Lost Dog
+UPDATE `creature_template` SET `speed_run`=1.111111, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59540; -- Hungry Yeti
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048, `VehicleId`=2071 WHERE `entry`=59549; -- Sha Ceiling Crawler
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2131968 WHERE `entry`=59574; -- Dusty Spot
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59576 /*Clovercatcher*/, 59698 /*Brother Furtrim*/, 69274 /*Lu-Shero*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (59592 /*Grummle Trail Guide*/, 59593 /*Grummle Trail Guide*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=59594; -- Haohan Mudclaw
+UPDATE `creature_template` SET `npcflag`=643, `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59597; -- Smokey Sootassle
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2172 WHERE `entry`=59639; -- Enormous Cattail Grouper
+UPDATE `creature_template` SET `HoverHeight`=2.5 WHERE `entry` IN (59641 /*Monstrous Plainshawk*/, 60866 /*Upland Eagle*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=59653; -- Chi-Ji
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=2048 WHERE `entry`=59687; -- Echo of Despair
+UPDATE `creature_template` SET `npcflag`=66177, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (59688 /*Chiyo Mistpaw*/, 69088 /*Keeper Jaril*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=320, `unit_flags2`=2048 WHERE `entry`=59689; -- Narjon the Gulper
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (59691 /*Alchemist Yuan*/, 64836 /*Zasha*/);
+UPDATE `creature_template` SET `npcflag`=643, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=59695; -- Big Sal
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=59696; -- Uncle Cloverleaf
+UPDATE `creature_template` SET `npcflag`=8193, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59727 /*Ginsa Arroweye*/, 64310 /*Sky Dancer Ji*/, 65189 /*Feather Keeper Li*/, 67785 /*Kromthar*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (59748 /*Thunderfist Young*/, 60825 /*Tormented Spirit*/, 63348 /*Briny Clacker*/, 64551 /*Duskwing Crow*/, 64745 /*Lowland Porcupine*/, 65423 /*Lost Soul*/, 66943 /*Serpent Statue*/, 67399 /*Heavy Mook*/, 69237 /*Risen Ancestor*/, 69342 /*Risen Ancestor*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2048 WHERE `entry`=59756; -- Chibee
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (59769 /*Bamboo Python*/, 62535 /*Cove Shark*/, 64444 /*Northwater Hunter*/, 65872 /*Incarnation of Despair*/, 66162 /*Scotty*/, 66617 /*Ro'shen*/, 70136 /*Shrimp Stuffed Shark*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=2049 WHERE `entry`=59817; -- Dead Packer
+UPDATE `creature_template` SET `npcflag`=4225, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=59827; -- Ironshaper Shou
+UPDATE `creature_template` SET `speed_run`=2.771429 WHERE `entry`=23991; -- Gjalerbron Warrior
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59830 /*Ko-Yan Na*/, 62593 /*Taoshi*/, 63339 /*Muckscale Skinflayer*/, 63902 /*Taoshi*/, 65594 /*Tweets Lightsprocket*/, 70090 /*Silver Covenant Assassin*/);
+UPDATE `creature_template` SET `npcflag`=643, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59894; -- Brother Yakshoe
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry`=59919; -- Mogu Siege Ram
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry` IN (59924 /*Shao-Tien Assassin*/, 60122 /*Shao-Tien Commander*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (59953 /*Caravan Yak*/, 60954 /*Cream*/, 60955 /*Sugar*/, 65853 /*Sturdy Yak*/);
+UPDATE `creature_template` SET `speed_walk`=2.4, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16896, `unit_flags2`=2048 WHERE `entry`=59957; -- Caravan Cart
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (59969 /*Musaan the Blazecaster*/, 60030 /*Harala the Firespeaker*/, 60031 /*Pao-kun the Pyromancer*/, 60032 /*Akonu the Embercaller*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32784, `unit_flags2`=33556480 WHERE `entry`=59970; -- Ordo Battleyak
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32784, `unit_flags2`=2048 WHERE `entry`=59972; -- Ordo Warrior
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry` IN (59976 /*Jade Warrior*/, 70334 /*Stone Sentinel*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2101 WHERE `entry`=60010; -- Battle Goat
+UPDATE `creature_template` SET `npcflag`=4736 WHERE `entry`=24188; -- Samuel Rosemond
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=64, `unit_flags2`=2099200, `VehicleId`=2114 WHERE `entry`=60043; -- Jade Guardian
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2050 WHERE `entry` IN (60096 /*Eastern Oil Rig*/, 60098 /*Southern Oil Rig*/, 60099 /*Western Oil Rig*/, 61885 /*Pool of Life*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832 WHERE `entry`=60127; -- Ordo Warbringer
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=4229120 WHERE `entry`=60139; -- Wise Ana Wu
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=34816, `HoverHeight`=4 WHERE `entry` IN (60154 /*Broken Barrel*/, 66829 /*Broken Crate*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=32768 WHERE `entry` IN (60162 /*Training Target*/, 67756 /*Domination Point Supply Cart*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (60169 /*Cagemaster*/, 60170 /*Big Gladiator Chief*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (60180 /*Lucky Bluestring*/, 60675 /*Fo Fook*/, 60679 /*Nephew Burrberry*/, 61161 /*Bluesaddle*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=60182; -- Tony Tuna
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.214286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=69208064 WHERE `entry`=60220; -- Ji-Lu's Cart Supplies
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=33556481 WHERE `entry` IN (60222 /*Golden Lotus Warrior*/, 71275 /*Darkspear Captive*/);
+UPDATE `creature_template` SET `npcflag`=8192, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60230; -- Princeton
+UPDATE `creature_template` SET `speed_walk`=2 WHERE `entry`=24410; -- Vazruden the Herald Image
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=33556480 WHERE `entry`=60272; -- Leven Dawnblade
+UPDATE `creature_template` SET `speed_run`=0.9920571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=1.35 WHERE `entry`=60278; -- Sting Ray
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (60293 /*Max Narstave*/, 70263 /*Elder Pterrorwing*/, 70333 /*Angler Johnny Rotten*/, 70338 /*Old Salty Sullivan*/, 70339 /*Angler Scottie*/, 70404 /*Angler In Bo Den*/, 70407 /*Angler Jo Ransom*/, 70408 /*Angler Dry*/, 70411 /*Fisherman Crow*/, 70415 /*Angler Lin Snowclaw*/, 70417 /*Lulu*/, 70431 /*Shelby*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry` IN (60296 /*Jade Guardian*/, 65224 /*Jade Guardian*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=34816 WHERE `entry` IN (60297 /*Jade Construct*/, 60371 /*Jade Construct*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570688256, `unit_flags2`=2049 WHERE `entry` IN (60355 /*Scrawny Carp*/, 69549 /*Dead Spy*/);
+UPDATE `creature_template` SET `HoverHeight`=3.5 WHERE `entry`=24518; -- Talonshrike
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024 WHERE `entry`=60359; -- Zhao-Jin the Bloodletter
+UPDATE `creature_template` SET `speed_walk`=0.1, `speed_run`=0.07142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512 WHERE `entry`=60367; -- Flailing Carp
+UPDATE `creature_template` SET `HoverHeight`=1.1 WHERE `entry`=60384; -- Zandalari Pterror Wing
+UPDATE `creature_template` SET `npcflag`=8193, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (60416 /*Uncle Eastwind*/, 61118 /*Big Greenfeather*/, 61504 /*Little Cleankite*/);
+UPDATE `creature_template` SET `npcflag`=66177, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60420; -- Clover Keeper
+UPDATE `creature_template` SET `npcflag`=641, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (60423 /*Cousin Copperfinder*/, 60425 /*Cousin Tealeaf*/, 61531 /*Full Flask*/, 64306 /*Brother Yakshoe*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (60434 /*Blackmane Tracker*/, 66693 /*Zandalari Overlord*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=16779264 WHERE `entry` IN (60437 /*Azure Prickly Crawler*/, 63722 /*Azure Prickly Crawler*/, 66476 /*Reef Pincher*/, 69384 /*Luminescent Crawler*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67127296 WHERE `entry`=60442; -- Lightning Spear
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=2049 WHERE `entry` IN (60478 /*Dead Villager*/, 66280 /*Garrosh'ar Peon*/, 66290 /*Garrosh'ar Gear-Greaser*/, 66457 /*Garrosh'ar Grunt*/, 66460 /*Skyfire Gyrocopter Pilot*/, 68326 /*7th Legion Scout*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048, `VehicleId`=2148 WHERE `entry`=60485; -- Lightning Wave
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587712, `unit_flags2`=2048 WHERE `entry` IN (60486 /*Lightning Wave*/, 70602 /*Scout Stonebeard*/);
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587712, `unit_flags2`=2099200 WHERE `entry`=60487; -- Spirit of the Crane
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2048 WHERE `entry` IN (60489 /*Lightning Wave*/, 70147 /*Waterspout*/, 70774 /*Trampoline*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000 WHERE `entry`=60493; -- Kafa-Crazed Mountain Goat
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (60524 /*Zandalari Shadow-Hunter*/, 69925 /*Zandalari Dinomancer*/, 70445 /*Stormbringer Draz'kil*/);
+UPDATE `creature_template` SET `speed_run`=1.190476, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60560; -- Blackmane Brigand
+UPDATE `creature_template` SET `speed_run`=1.111111, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=60564; -- Kafa-Crazed Yeti
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2 WHERE `entry`=60572; -- Nakk'rakas
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.111111, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=60587; -- Kota Kon
+UPDATE `creature_template` SET `unit_flags`=570720256, `dynamicflags`=0 WHERE `entry`=60593; -- Experienced Guide
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (60601 /*Student of Chi-Ji*/, 60602 /*Student of Chi-Ji*/, 67425 /*Shieldwall Stormcaller*/, 67520 /*Dominance Shaman*/, 67602 /*Dominance Shaman*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=294912, `unit_flags2`=33556480 WHERE `entry`=60603; -- Student of Chi-Ji
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=60616; -- Child of Chi-Ji
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2159 WHERE `entry`=60668; -- Furious Goat
+UPDATE `creature_template` SET `npcflag`=128 WHERE `entry` IN (24834 /*Galley Chief Grace*/, 26089 /*Kayri*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60673; -- Elder Fisherman Rassan
+UPDATE `creature_template` SET `npcflag`=6272 WHERE `entry`=24843; -- Engineer Combs
+UPDATE `creature_template` SET `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=60760; -- Hungry Rat
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (60762 /*Master Baiter*/, 61215 /*Claretta*/, 62661 /*Craftsman Yang*/, 62662 /*Armorer Moki*/, 62737 /*Supplier Xin*/, 62791 /*Supplier Bao*/, 64595 /*Rushi the Fox*/, 64606 /*Commander Oxheart*/, 64607 /*Commander Lo Ping*/, 65900 /*Jadori Ironeye*/, 67052 /*Spademender Yumba*/, 69059 /*Agent Malley*/, 69060 /*Tuskripper Grukna*/, 70318 /*Supplier Bao*/, 70346 /*Ao Pye*/, 70535 /*Teng of the Flying Daggers*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=60775; -- Gnoll Decoy
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=60826; -- Imperial Guard
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry`=60879; -- Dead Hozen
+UPDATE `creature_template` SET `npcflag`=1152 WHERE `entry`=25043; -- Sereth Duskbringer
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry` IN (25088 /*Captain Valindria*/, 25108 /*Vindicator Kaalan*/);
+UPDATE `creature_template` SET `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (60971 /*Furious Pearlfin Poolwatcher*/, 64586 /*Alliance Peacekeeper*/, 66666 /*Paw'don Defender*/, 67197 /*Anglers Wharf Defender*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (60978 /*Kang Bramblestaff*/, 60994 /*Lun-Chi*/, 64500 /*Brewmaster Chani*/, 64501 /*Lun-Chi*/, 64974 /*Fearsome Jang*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=60980; -- Clever Ashyo
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=34816 WHERE `entry`=61012; -- Master Windfur
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=61013; -- Master Boom Boom
+UPDATE `creature_template` SET `unit_flags`=163840 WHERE `entry`=61042; -- Cheng Kang
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33571584, `unit_flags2`=2048, `VehicleId`=25 WHERE `entry`=61061; -- Tiger Temple General Purpose Bunny
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286 WHERE `entry`=61070; -- Explosive Hatred
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry` IN (61078 /*Snow Boulder Bounce Bunny*/, 61084 /*Snow Boulder Generator*/, 61613 /*Sap Puddle*/, 61629 /*Sappling Summon Dest*/, 61964 /*Sap Spray*/, 61965 /*Sap Puddle*/, 61967 /*Resin Stalker*/, 64412 /*Zandalari Terror Rider*/, 69081 /*Area Trigger Caster Stalker*/, 69176 /*Amani'shi Beast Shaman*/);
+UPDATE `creature_template` SET `npcflag`=640 WHERE `entry`=25248; -- "Salty" John Thorpe
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2099200 WHERE `entry` IN (61091 /*Elder Viseclaw*/, 66748 /*Venerable Viseclaw*/);
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=61093; -- Niuzao
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry` IN (61096 /*Freezing Winds*/, 63706 /*Building 1 Credit*/, 63707 /*Building 2 Credit*/, 63708 /*Building 3 Credit*/, 63709 /*Building 4 Credit*/, 63710 /*Building 5 Credit*/, 63711 /*Building 6 Credit*/, 63714 /*Building 9 Credit*/, 64188 /*Invisible Man*/, 70615 /*Deactivated Access Generator*/);
+UPDATE `creature_template` SET `npcflag`=641, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=61119; -- Sweaty Glove
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry` IN (61155 /*Wily Woodling*/, 64202 /*Gurubashi Hexxer*/);
+UPDATE `creature_template` SET `speed_walk`=1.555556, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=61156; -- Vengeful Hui
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (61157 /*Sassy Seedling*/, 61204 /*Unconscious Monk*/, 66378 /*Wounded Shado-Pan*/, 67782 /*Grizzle Gearslip*/, 68277 /*Celia Dawnstrike*/, 69381 /*Malformed Saurok*/, 69403 /*Skumblade Prisoner*/, 69822 /*Kelly Aguilar*/, 69823 /*Waffle Joe*/, 71284 /*Boots*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=61203; -- Brewmaster Tzu
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=33556480 WHERE `entry`=61223; -- [DND] Monster Target (Wood)
+UPDATE `creature_template` SET `unit_flags`=32784 WHERE `entry` IN (61252 /*Shado-Pan Guard*/, 67297 /*Shieldwall Rifleman*/);
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2099200 WHERE `entry`=61347; -- Kingsguard
+UPDATE `creature_template` SET `HoverHeight`=3.2 WHERE `entry`=61410; -- Young Cloud Serpent
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (61418 /*Crypt Guardian*/, 61783 /*Crypt Guardian*/, 69326 /*Metal Lord Mono-Han*/, 69435 /*Fleshcrafter Hoku*/, 69461 /*Itoka*/, 69923 /*Slavemaster Shiaxu*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (61488 /*Hackiss*/, 61489 /*Healiss*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166336, `unit_flags2`=1, `VehicleId`=2190 WHERE `entry`=61492; -- Wounded Pilot
+UPDATE `creature_template` SET `npcflag`=641, `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61493; -- Wishbone
+UPDATE `creature_template` SET `npcflag`=641, `speed_run`=1.314286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61494; -- Brewmaster Chani
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (61502 /*Sra'thik Warcaller*/, 61508 /*Sra'thik Swiftclaw*/, 62073 /*Adjunct Ek'vem*/, 62074 /*Adjunct Ikkess*/, 62075 /*Adjunct Suruz*/, 62076 /*Adjunct Tzikzi*/, 62619 /*Jade Destroyer*/, 63694 /*Sra'thik Hivelord*/, 63973 /*Krik'thik Swarmer*/, 66753 /*Shrouded Carcharodon*/, 67922 /*Muckmaw Crocolisk*/, 68256 /*Yikkan Izu*/);
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=32768, `VehicleId`=2195 WHERE `entry`=61510; -- Sra'thik War Wagon
+UPDATE `creature_template` SET `npcflag`=8195, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61512; -- Kite Master Len
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200 WHERE `entry`=61514; -- Sra'thik Fleshrender
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (61522 /*Injured Sra'thik Soldier*/, 71085 /*Razorgrin*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=2223 WHERE `entry`=61541; -- Prophet Khar'zul
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=34816 WHERE `entry`=61545; -- Koa
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33571072, `unit_flags2`=2048, `VehicleId`=2191 WHERE `entry`=61547; -- Gukgut's Swing
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33571072, `unit_flags2`=2048, `VehicleId`=2193 WHERE `entry`=61558; -- Slingtail Swing
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587264, `unit_flags2`=2099200 WHERE `entry`=61567; -- Vizier Jin'bak
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280 WHERE `entry` IN (61570 /*Wounded Niuzao Sentinel*/, 66441 /*Skyfire Marine*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=2048 WHERE `entry` IN (61571 /*Imperial Soul-Harvester*/, 61641 /*Imperial Antiquator*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (61591 /*Jumoy*/, 61592 /*Mundu*/);
+UPDATE `creature_template` SET `speed_run`=1.142857, `unit_flags2`=2099200 WHERE `entry`=25754; -- Earthen Ring Flamecaller
+UPDATE `creature_template` SET `unit_flags`=33587200 WHERE `entry` IN (25760 /*Kvaldir Raider*/, 29212 /*Risen Drudge*/);
+UPDATE `creature_template` SET `npcflag`=65537, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61599; -- Cheerful Jessu
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry`=61600; -- Zandalari Nomad
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2196 WHERE `entry`=61602; -- Glasseye Turtle
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=67110912 WHERE `entry`=61603; -- Emperor RikkTik
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.4285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=61611; -- Tiny Goldfish
+UPDATE `creature_template` SET `speed_walk`=3.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=61620; -- Yang Ironclaw
+UPDATE `creature_template` SET `npcflag`=4225, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61624; -- Black Arrow
+UPDATE `creature_template` SET `npcflag`=65537, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=61651; -- Master Lao
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=33554432 WHERE `entry`=61692; -- Injured Gao-Ran Blackguard
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=67110912 WHERE `entry`=61698; -- Frozen Tomb Guardian
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=69208064 WHERE `entry`=61700; -- Jade Cart
+UPDATE `creature_template` SET `npcflag`=4225, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (61749 /*The Metal Paw*/, 64605 /*Tan Shin Tiao*/, 65171 /*Alin the Finder*/, 69965 /*Doris Chiltonius*/, 69967 /*Lucan Malory*/, 70101 /*Armsmaster Holinka*/, 70108 /*Roo Desvin*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry` IN (61794 /*Flame Spout*/, 63393 /*Lightning Crash*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry` IN (61804 /*Murdered Shado-Pan*/, 66747 /*Bloody Pool*/, 69437 /*Trampled Scavenger*/);
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=2211 WHERE `entry`=61812; -- Li Chu
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.714286, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=61814; -- Jin Ironfist
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=4196352 WHERE `entry`=61848; -- Wild Onyx Serpent
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=61910; -- Resin Flake
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (61928 /*Sik'thik Guardian*/, 61929 /*Sik'thik Amber-Weaver*/);
+UPDATE `creature_template` SET `unit_flags`=537166080, `unit_flags2`=2049 WHERE `entry`=62023; -- Coldbite Crocolisk
+UPDATE `creature_template` SET `speed_run`=0.9920629 WHERE `entry`=26221; -- Earthen Ring Elder
+UPDATE `creature_template` SET `speed_run`=5.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=62091; -- Sik'thik Flyer
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=62096; -- Nephew Bentnail
+UPDATE `creature_template` SET `HoverHeight`=10 WHERE `entry` IN (26276 /*Nexus Guardian*/, 27608 /*Azure Dragon*/);
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2099200, `dynamicflags`=0 WHERE `entry`=62128; -- Kor'thik Fleetwing
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry`=62134; -- Crypt Guardian
+UPDATE `creature_template` SET `VehicleId`=2309 WHERE `entry`=62167; -- General Purpose Bunny ZTO
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=62180; -- Korven the Prime
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2099201, `HoverHeight`=6 WHERE `entry`=62267; -- Wild Cloudrunner
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (62303 /*Yalia Sagewhisper*/, 62354 /*Fei Li*/, 62380 /*Snow Blossom*/, 68009 /*Shadowmancer Selenora*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=4196352 WHERE `entry`=62309; -- Hei Feng
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=138414080, `VehicleId`=2254, `HoverHeight`=6 WHERE `entry` IN (62311 /*Shan'ze Cloudrunner*/, 62584 /*Shan'ze Cloudrunner*/, 62585 /*Shan'ze Cloudrunner*/, 62586 /*Shan'ze Cloudrunner*/);
+UPDATE `creature_template` SET `speed_walk`=1, `dynamicflags`=0 WHERE `entry`=26477; -- Dead Mage Hunter
+UPDATE `creature_template` SET `speed_walk`=5.6, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=1073743872, `VehicleId`=2232 WHERE `entry`=62346; -- Galleon
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587200, `unit_flags2`=4196352 WHERE `entry` IN (62350 /*Salyin Skirmisher*/, 62352 /*Chief Salyis*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=62351; -- Salyin Warmonger
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587200, `unit_flags2`=71436288 WHERE `entry`=62355; -- Galleon Cannon
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry` IN (62381 /*Abandoned Kite*/, 62382 /*Abandoned Kite*/, 62383 /*Abandoned Kite*/, 62384 /*Abandoned Kite*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048, `VehicleId`=2234 WHERE `entry`=62429; -- Galleon Vehicle Bunny (Mid-Back)
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048, `VehicleId`=2235 WHERE `entry`=62431; -- Galleon Vehicle Bunny (Far Back)
+UPDATE `creature_template` SET `unit_flags`=537166592 WHERE `entry`=62438; -- Injured Gao-Ran Defender
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (62441 /*Shan Bu*/, 70240 /*Shan'ze Celestial Shaper*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=1073743872, `VehicleId`=2239 WHERE `entry`=62465; -- Captain Ook
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=4194304, `VehicleId`=2223 WHERE `entry`=62467; -- Brewmaster Bo
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry` IN (62468 /*Ookie*/, 62498 /*Chihozen Binono*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=131072, `unit_flags2`=4227072 WHERE `entry`=62469; -- Unga Totem
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=25 WHERE `entry` IN (62473 /*Mad Eye*/, 62483 /*Hozen Totem Fire Effect*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=163840, `unit_flags2`=2099200 WHERE `entry`=62475; -- Unga Bird-Haver
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (62477 /*Jibberwing Rider*/, 62590 /*Unga Scallywag*/, 67029 /*Jibberwing Rider*/);
+UPDATE `creature_template` SET `speed_run`=4.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=4196352, `VehicleId`=2240 WHERE `entry`=62478; -- Trained Jibberwing
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2241 WHERE `entry`=62482; -- Hozen Swing
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912, `HoverHeight`=1.2 WHERE `entry`=62484; -- Unga Jungle Brew Keg
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=4194304, `VehicleId`=2457 WHERE `entry`=62491; -- Brewmaster Bo
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (62497 /*Unga Keg-Blocker*/, 68257 /*Goredome*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2244 WHERE `entry`=62502; -- Hozen Swing
+UPDATE `creature_template` SET `speed_run`=5, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=71305216, `VehicleId`=2245 WHERE `entry`=62506; -- Hozen Pirate Ship
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4194304, `VehicleId`=2289 WHERE `entry`=62508; -- Unga Brewstealer
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2247 WHERE `entry`=62515; -- Shan'ze Beastmaster
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=4196352 WHERE `entry` IN (62517 /*Klaxxi'va Kek*/, 62521 /*Klaxxi'va Zan*/, 65398 /*Klaxxi'va Sra*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry` IN (62518 /*Klaxxi'va Set*/, 65396 /*Klaxxi'va Kor*/, 65397 /*Klaxxi'va Krik*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=4229120 WHERE `entry`=62519; -- Klaxxi'va Vor
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (62539 /*Ball and Chain*/, 66600 /*Claw of Anger*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `HoverHeight`=6 WHERE `entry` IN (62597 /*Wild Cloudrunner*/, 62598 /*Wild Cloudrunner*/, 62599 /*Wild Cloudrunner*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=256, `unit_flags2`=18432 WHERE `entry`=62629; -- Zandalari Prisoner
+UPDATE `creature_template` SET `speed_run`=1.289683, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=62637; -- Cursed Brew
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (62640 /*Devouring Maggot*/, 63064 /*Bandicoon Kit*/, 64246 /*Shy Bandicoon*/, 65185 /*Mei Li Sparkler*/, 68846 /*Kun-Lai Runt*/);
+UPDATE `creature_template` SET `npcflag`=8192, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (62658 /*Kim of the Mountain Winds*/, 66023 /*Wing Kyo*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=2262, `HoverHeight`=4 WHERE `entry`=62682; -- Burgled Barrel
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1.071429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `VehicleId`=2287 WHERE `entry`=62705; -- Brew Defender
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=4229120 WHERE `entry`=62713; -- Unstable Keg
+UPDATE `creature_template` SET `unit_flags`=536903680, `dynamicflags`=0 WHERE `entry`=26896; -- Nozzlerust Supply Runner
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=62747; -- Nurong's Cannon
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=62755; -- Kor'thik Resonator
+UPDATE `creature_template` SET `speed_run`=1.984126, `BaseAttackTime`=1000 WHERE `entry`=62757; -- Kor'thik Havoc
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=62758; -- Kor'thik Battlesinger
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2131968 WHERE `entry`=62767; -- Gokk'lok
+UPDATE `creature_template` SET `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry`=62773; -- Iyyokuk the Lucid
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2347 WHERE `entry`=62787; -- Assistant Kieu
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (62789 /*Omnia Mage*/, 62790 /*Omnia Priest*/, 65373 /*Li Vera*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2339 WHERE `entry`=62793; -- Assistant Tart
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=35653632, `VehicleId`=2211 WHERE `entry`=62794; -- Lo Chu
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=35651584 WHERE `entry`=62795; -- Sik'thik Warden
+UPDATE `creature_template` SET `speed_run`=1.190476, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=62807; -- Hungry Virmen
+UPDATE `creature_template` SET `npcflag`=145 WHERE `entry`=26995; -- Tink Brightbolt
+UPDATE `creature_template` SET `unit_flags`=33587520 WHERE `entry`=62837; -- Grand Empress Shek'zeer
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (62845 /*Big Dan Stormstout*/, 65316 /*Shield Captain Zeren*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=62859; -- Thirsty Missho
+UPDATE `creature_template` SET `npcflag`=66179, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (62871 /*Puli the Even Handed*/, 62872 /*Cranfur the Noodler*/, 65528 /*Nan Thunderfoot*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2281 WHERE `entry`=62937; -- Pack Goat
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=62978; -- Lao-Chin the Iron Belly
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (62988 /*Barrel-Chest Huo*/, 62989 /*Stonecutter Lon*/, 62990 /*Kiri Jade-Eyes*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (62991 /*Coral Adder*/, 65054 /*Feverbite Hatchling*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (62997 /*Jungle Darter*/, 63005 /*Spirebound Crab*/, 63006 /*Sandy Petrel*/, 65124 /*Luyu Moth*/, 65215 /*Garden Moth*/, 65216 /*Shrine Fly*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.16, `speed_run`=0.05714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=63001; -- Silkbead Snail
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=33556480 WHERE `entry`=63045; -- Dominated Scalelord
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (63081 /*Shao-Tien Reclaimer*/, 67466 /*Shan'ze Slaver*/);
+UPDATE `creature_template` SET `speed_run`=1.071429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=69208064 WHERE `entry` IN (63087 /*Shao-Tien Ritual Statue*/, 63088 /*Shao-Tien Ritual Statue*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=33556480 WHERE `entry`=63101; -- General Temuja
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (63139 /*Nightsaber*/, 67346 /*Dominance Raider*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=4196352 WHERE `entry` IN (63152 /*Painting Effects Bunny*/, 67156 /*Grain Gears Bunny*/, 67921 /*Murderous Manfred of Mortar Maiming*/, 68553 /*SLG Generic MoP (Large AOI)*/, 70175 /*Front Head Spawner*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (63218 /*Defender Azzo*/, 68531 /*Professor Kilt*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry`=63276; -- Mogu Weapon
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags2`=34816 WHERE `entry`=63280; -- Deckhand
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (63288 /*Amethyst Spiderling*/, 63358 /*Sifang Otter Pup*/, 69648 /*Thundertail Flapper*/, 69818 /*Elder Python*/, 69819 /*Swamp Croaker*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.2, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=63293; -- Spiny Terrapin
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1.357143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=63314; -- Wodin the Troll-Servant
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.357143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=63315; -- Gurgthock
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=4 WHERE `entry`=63353; -- Dread Remora
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=63355; -- Whispercloud's Balloon
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=2315 WHERE `entry`=63363; -- Whispercloud's Balloon
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=16779264 WHERE `entry` IN (63368 /*Rockshell Clacker*/, 63369 /*Rockshell Snapclaw*/);
+UPDATE `creature_template` SET `speed_walk`=1 WHERE `entry`=27537; -- Fordragon Lumberjack
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (63376 /*Coldwhisker Otter*/, 67886 /*Gnome Laborer*/, 67888 /*Gnome Laborer*/, 67889 /*Gnome Laborer*/, 67890 /*Gnome Laborer*/, 67891 /*Gnome Laborer*/, 68243 /*Pandaren Laborer*/, 68245 /*Pandaren Laborer*/, 68246 /*Pandaren Laborer*/, 68591 /*Night Elf Laborer*/, 68595 /*Night Elf Laborer*/, 68596 /*Night Elf Laborer*/, 68597 /*Night Elf Laborer*/, 68598 /*Night Elf Laborer*/, 70133 /*Dark Iron Mountaineer*/, 70275 /*Dark Iron Forgeguard*/, 70744 /*Scout Boldbrew*/, 70745 /*Scout Forgefellow*/, 70800 /*Dark Iron Mountaineer*/, 70801 /*Mountaineer Grimbolt*/);
+UPDATE `creature_template` SET `speed_run`=1.385714 WHERE `entry` IN (27553 /*Kor'kron Vanguard*/, 32597 /*Dalaran Visitor*/, 33543 /*Sunreaver Guardian*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry` IN (63422 /*Arrow Shooting Bunny Visual*/, 65838 /*Dead Woolly Sheep*/);
+UPDATE `creature_template` SET `BaseAttackTime`=800 WHERE `entry`=27631; -- Angrathar Aberration
+UPDATE `creature_template` SET `npcflag`=8193, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63501; -- Kik'tik
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=2049 WHERE `entry`=63503; -- Kafa-Crazed Mountain Goat
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `unit_flags`=67141632, `unit_flags2`=2048 WHERE `entry`=63510; -- Wulon
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2099200 WHERE `entry`=63518; -- Den Mother Moof
+UPDATE `creature_template` SET `speed_walk`=1.555556, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=2181332992, `unit_flags2`=2099200 WHERE `entry`=63520; -- Li Te
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=35651584 WHERE `entry` IN (63526 /*Bataari Flamecaller*/, 68142 /*Kor'kron Priest*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35651584 WHERE `entry` IN (63527 /*Bataari Yaungol*/, 66205 /*Granary Vandal*/, 67711 /*Yaungol Brute*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=63528; -- Warbringer Qobi
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (63529 /*Karsar the Bloodletter*/, 68143 /*Squad Leader Bosh*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=63558; -- Tolai Hare Pup
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=2.142857, `unit_flags`=832 WHERE `entry`=27766; -- Image of Kel'Thuzad
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=69240832 WHERE `entry`=63603; -- Ban's Balloon
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=768 WHERE `entry`=27768; -- Image of Razuvious
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (63612 /*Snowshoe*/, 63644 /*Golden Snow*/, 63650 /*Dejected Grummle Trader*/);
+UPDATE `creature_template` SET `speed_walk`=0.8 WHERE `entry`=27779; -- Image of Noth
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (63617 /*Taoshi*/, 69917 /*Taoshi*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (63645 /*Unmelting Icicle*/, 63646 /*Hawktail*/, 63647 /*Half-Eaten Fish*/, 63648 /*Mushan Pie*/, 63649 /*Wooden Spoon*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (63653 /*Golden Lotus Captive*/, 67661 /*Sunreaver Magus*/, 67970 /*Silver Covenant Spellblade*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63678; -- Sra'thik Mutilator
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=63693; -- Sra'thik Swarmlord
+UPDATE `creature_template` SET `npcflag`=4307, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=34816 WHERE `entry`=63721; -- Nat Pagle
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63758; -- Kaz'tik the Manipulator
+UPDATE `creature_template` SET `unit_flags2`=2099200, `HoverHeight`=1 WHERE `entry`=27925; -- Nozdormu
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry`=63783; -- Eye of the Empress
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2335 WHERE `entry`=63796; -- Needlebeak
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2336 WHERE `entry`=63811; -- Assistant Buzaki
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.1428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=69208064 WHERE `entry` IN (63813 /*Hozen Snot*/, 63941 /*Sack of Grain*/);
+UPDATE `creature_template` SET `speed_walk`=0.555556, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (63814 /*Poppers*/, 70386 /*Hoggle*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=69208064 WHERE `entry`=63819; -- Fireworks Launcher
+UPDATE `creature_template` SET `npcflag`=17, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (63825 /*Mr. Pleeb*/, 65129 /*Zen Master Lao*/, 67025 /*Orchard Keeper Li Mei*/, 67026 /*Hao of the Stag's Horns*/);
+UPDATE `creature_template` SET `speed_run`=5, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2048, `VehicleId`=2337 WHERE `entry`=63826; -- Tart's Boat
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=63847; -- Dancing Water Skimmer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048, `VehicleId`=2342 WHERE `entry`=63874; -- Spawn Burrowed
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=138414080, `HoverHeight`=6 WHERE `entry`=63895; -- Shan'ze Cloudrider
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (63904 /*Lao-Chin the Iron Belly*/, 69744 /*Vereesa Windrunner*/, 70041 /*Vereesa Windrunner*/);
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=71305216 WHERE `entry`=63913; -- Niuzao
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587456, `unit_flags2`=69208064 WHERE `entry`=63916; -- Shan Bu
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (63917 /*Rai*/, 64087 /*Marri*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=63920; -- Hei Feng
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=63929; -- Krasarang Wild Brew
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry`=63975; -- Krik'thik Warrior
+UPDATE `creature_template` SET `speed_run`=1.488094, `BaseAttackTime`=1481, `unit_flags`=2129920 WHERE `entry`=63976; -- Krik'thik Needler
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry`=63978; -- Kri'chon
+UPDATE `creature_template` SET `npcflag`=134217728 WHERE `entry`=64045; -- Thaumaturge Faraket
+UPDATE `creature_template` SET `npcflag`=147 WHERE `entry`=64058; -- Jorunga Stonehoof
+UPDATE `creature_template` SET `npcflag`=4243 WHERE `entry`=64085; -- Cullen Hammerbrow
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33554432 WHERE `entry`=64089; -- Xuen Shield Bearer
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35651584 WHERE `entry`=64165; -- Bataari Outrunner
+UPDATE `creature_template` SET `speed_run`=1.111111, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35651584 WHERE `entry`=64185; -- Bataari War Yeti
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry` IN (64187 /*Cornered Villager*/, 64999 /*Captain Matok*/, 66563 /*Skyfire Marine*/, 66568 /*Skyfire Marine*/, 66569 /*Skyfire Marine*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry` IN (64189 /*Tian Mistweaver*/, 65295 /*Mistweaver Nian*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=64203; -- Amani Behemoth
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2048, `VehicleId`=2354 WHERE `entry`=64209; -- Yaungol Boat
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64295; -- Autumn
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432 WHERE `entry`=64297; -- Townlong Steppes - Sra'vess - Amber Channel Target
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (64305 /*Lorewalker Cho*/, 67058 /*Four Winds Trader*/, 67059 /*Four Winds Trader*/, 68352 /*Nove Rainpaw*/, 69493 /*Wall Worm*/);
+UPDATE `creature_template` SET `unit_flags2`=34816 WHERE `entry`=64324; -- Anglers Fisherman
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=2048 WHERE `entry`=64344; -- Kaz'tik the Manipulator
+UPDATE `creature_template` SET `unit_flags`=33536, `unit_flags2`=0, `dynamicflags`=0 WHERE `entry`=64345; -- Saltscale Carp
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=4196352, `VehicleId`=2446 WHERE `entry`=64367; -- Invisible Man
+UPDATE `creature_template` SET `speed_run`=0.9920571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=64388; -- Kovok
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166336, `unit_flags2`=2049 WHERE `entry`=64391; -- Sheepie
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=2372 WHERE `entry`=64411; -- Zandalari Pterrorwing
+UPDATE `creature_template` SET `unit_flags`=33587456 WHERE `entry` IN (64453 /*Set'thik Windblade*/, 64454 /*Zar'thik Augurer*/, 64458 /*Kor'thik Warsinger*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=2.16, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=2378 WHERE `entry`=64514; -- Grand Expedition Yak
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=64515; -- Mystic Birdhat
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=64516; -- Cousin Slowhands
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=34816 WHERE `entry`=64517; -- Shado-Master Chum Kiu
+UPDATE `creature_template` SET `npcflag`=129, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64518; -- Uncle Bigpocket
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry` IN (64524 /*Oil Keg*/, 71271 /*Kor'kron Command Posts*/, 71273 /*Operation: Darkspear Destruction*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133312, `unit_flags2`=2049 WHERE `entry`=64567; -- Paleblade Flesheater
+UPDATE `creature_template` SET `npcflag`=268435456 WHERE `entry`=64573; -- Warpweaver Ramahesh
+UPDATE `creature_template` SET `npcflag`=536870912 WHERE `entry`=64574; -- Vaultkeeper Edouin
+UPDATE `creature_template` SET `npcflag`=643, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64596; -- Teng Applebloom
+UPDATE `creature_template` SET `npcflag`=4227, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64599; -- Ambersmith Zikk
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2381 WHERE `entry`=64638; -- Gurubashi Riding Raptor
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=34816 WHERE `entry`=64693; -- Invisible Man
+UPDATE `creature_template` SET `speed_walk`=0.6, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64725; -- Shoreshell Snapper
+UPDATE `creature_template` SET `speed_walk`=0.6, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64726; -- Elder Shoreshell Snapper
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=64757; -- Shonuf
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64788 /*Sifang Otter Pup*/, 67675 /*Sunreaver Mana Wyrm*/, 67676 /*Sunreaver Dragonhawk*/, 67763 /*Slateshell Ancient*/, 67930 /*Sunreaver Construct*/, 67934 /*Kirin Tor Construct*/, 67937 /*Kirin Tor Manafiend*/);
+UPDATE `creature_template` SET `speed_walk`=0.2, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64800; -- Spiny Terrapin
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=64826; -- Kaz'rik
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (64829 /*Steelbender Doshu*/, 68000 /*Hiren Loresong*/, 68792 /*Lidiya Peyton*/);
+UPDATE `creature_template` SET `unit_flags`=537165824, `unit_flags2`=33556481 WHERE `entry` IN (64868 /*Kor'kron Dubs*/, 66915 /*Kor'kron Elite*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry`=64883; -- Crumbling Jade Warrior
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=64884; -- He Softfoot
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33280, `unit_flags2`=33556480 WHERE `entry`=64892; -- Ren Firetongue
+UPDATE `creature_template` SET `npcflag`=209, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=64922; -- Brann Bronzebeard
+UPDATE `creature_template` SET `npcflag`=131072 WHERE `entry` IN (64925 /*Tivilix Bangalter*/, 65596 /*Lil' Canny*/);
+UPDATE `creature_template` SET `HoverHeight`=4 WHERE `entry`=64937; -- Great Cliff Hawk
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (64946 /*Chen Stormstout*/, 71205 /*Blacktotem Corrupter*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=64953; -- Lorewalker Shuchun
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=64975; -- Iron-Body Ponshu
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33600, `unit_flags2`=2048 WHERE `entry`=64980; -- Wise Scholar Lianji
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=64995; -- Adjunct Sek'ot
+UPDATE `creature_template` SET `npcflag`=17, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65186; -- Poisoncrafter Kil'zit
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4194304 WHERE `entry`=65213; -- Gluttonous Cove Shark
+UPDATE `creature_template` SET `npcflag`=66177, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65220; -- Zit'tix
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=65229; -- Kypa'rak
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=65252; -- Lao Softfoot
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=65280; -- Shao-Tien Imperion
+UPDATE `creature_template` SET `npcflag`=643, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33554432 WHERE `entry`=65289; -- Brewmaster Bo
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.944444, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=65321; -- Wild Crimson Hatchling
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.944444, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (65323 /*Wild Jade Hatchling*/, 65324 /*Wild Golden Hatchling*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65341; -- Ku-Mo
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=34816 WHERE `entry`=65372; -- Sonic Beam Bunny
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=4229120 WHERE `entry`=65395; -- Klaxxi'va Ik
+UPDATE `creature_template` SET `npcflag`=8192, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65511; -- Infiltrator Ik'thal
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=65525; -- Gusting Vortex
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.16, `speed_run`=0.05714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=65552; -- Glinting Rapana Whelk
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67635200 WHERE `entry` IN (65590 /*Lightning Trap*/, 71489 /*Fire Trap*/);
+UPDATE `creature_template` SET `npcflag`=2097153 WHERE `entry` IN (65599 /*H.A.R.V.E.Y.*/, 67130 /*D.E.N.T.*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912 WHERE `entry` IN (65605 /*[DNT] Fake Mist Incarnation*/, 65608 /*[DNT] Fireflies*/, 70306 /*Choking Gas*/, 70661 /*Entrance Stalker [DNT]*/, 71280 /*Controller*/, 71296 /*Emergency Teleporter*/);
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `HoverHeight`=0.9 WHERE `entry`=65617; -- Zijin Hollowfly
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=65669; -- Your Hatchling
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048, `HoverHeight`=3.52 WHERE `entry`=65672; -- Your Cloud Serpent
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262144, `unit_flags2`=2048 WHERE `entry`=65688; -- Mountain Climber
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2048, `VehicleId`=2427 WHERE `entry`=65689; -- Mountain Climber Rope
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048, `HoverHeight`=4 WHERE `entry`=65724; -- Azure Hatchling
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (65744 /*Jun-Jun Edgewater*/, 65745 /*Duyi Edgewater*/, 70949 /*Jae-Sun Di Fo*/, 70950 /*Hilda*/, 70951 /*Tom Wat*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33024, `unit_flags2`=33556480 WHERE `entry`=65787; -- Zan'thik Resonator
+UPDATE `creature_template` SET `VehicleId`=2437 WHERE `entry`=65810; -- Shao-Tien Soul-Render
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=4229120, `VehicleId`=2444 WHERE `entry`=65852; -- Portal to Kun-Lai Summit
+UPDATE `creature_template` SET `speed_walk`=2.4, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33571584, `unit_flags2`=2048 WHERE `entry`=65854; -- Caravan Cart
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65855; -- Mishi
+UPDATE `creature_template` SET `npcflag`=8192, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=65865; -- Tiper Windman
+UPDATE `creature_template` SET `speed_walk`=3.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (65870 /*Mei Blackbrow*/, 65871 /*Lo Blackbrow*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (65873 /*Source of Despair*/, 68321 /*Kar Warmaker*/, 68322 /*Muerta*/);
+UPDATE `creature_template` SET `speed_walk`=0.6222216, `speed_run`=0.666667, `unit_flags2`=2048 WHERE `entry`=65978; -- Shao-Tien Soul-Render
+UPDATE `creature_template` SET `npcflag`=81, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (65983 /*Soraka*/, 67024 /*Rockseeker Guo*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=67110913 WHERE `entry`=65997; -- Captive Pandaren Spirit Corpse
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=67110912 WHERE `entry`=66067; -- Ancient Rune of Striking
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (66164 /*Zouchin Tiger*/, 69202 /*Alliance Squallshaper*/, 69211 /*Admiral Hodgson*/, 69231 /*Alliance Captain*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4194304 WHERE `entry`=66195; -- Unga Rocket Surgeon
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (66207 /*Master Hsu*/, 66255 /*Master Yoon*/, 66256 /*Master Cheng*/, 66258 /*Master Cheng*/);
+UPDATE `creature_template` SET `npcflag`=4194433, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66242; -- Little Tib
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66245; -- Mount-haver Nik Nik
+UPDATE `creature_template` SET `npcflag`=4194433, `speed_run`=1.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66246; -- Tigermaster Gai-Lin
+UPDATE `creature_template` SET `npcflag`=4194433, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66250; -- Handler Kla'vik
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912, `HoverHeight`=2 WHERE `entry`=66252; -- Unga Jungle Brew Keg
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (66253 /*Master Kistane*/, 66854 /*Initiate Chuang*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=66254; -- Master Woo
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=2147483648, `unit_flags2`=2048 WHERE `entry`=66257; -- Master Tsang
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=66260; -- Master Hight
+UPDATE `creature_template` SET `speed_walk`=0.7, `speed_run`=0.8, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66271; -- Felstorm Summoner
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (66274 /*Dalgan*/, 66275 /*Bellandra Felstorm*/, 66276 /*Ga'trul*/, 66281 /*Fixxul Lonelyheart*/);
+UPDATE `creature_template` SET `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33024, `unit_flags2`=4196352 WHERE `entry`=66277; -- Xhu'daggab
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133312, `unit_flags2`=2049 WHERE `entry`=66279; -- Twinspire Demolisher
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=66328; -- Zazzo Twinklefingers
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2097152, `unit_flags2`=2048 WHERE `entry` IN (66347 /*Blacktalon Agent*/, 66351 /*Blacktalon Agent*/);
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=66349; -- Gurubashi Bat Rider
+UPDATE `creature_template` SET `npcflag`=721, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=66353; -- Master Chang
+UPDATE `creature_template` SET `npcflag`=17, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (66354 /*Master Cannon*/, 66355 /*Master Marshall*/, 66360 /*Master Brandom*/);
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (66356 /*Master Hwang*/, 66359 /*Master Tan*/);
+UPDATE `creature_template` SET `npcflag`=81, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=66357; -- Master Bier
+UPDATE `creature_template` SET `npcflag`=80, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=66358; -- Master Lo
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=66366; -- Captive Pandaren Cub
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.4285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66367; -- Eye of Ga'trul
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=4196352, `VehicleId`=25 WHERE `entry`=66371; -- Fire Stalker
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570688256, `unit_flags2`=71305217 WHERE `entry`=66432; -- Horde War Wagon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=71305216 WHERE `entry`=66433; -- Skyfire Gyrocopter
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=4196353 WHERE `entry`=66459; -- Garrosh'ar Shredder
+UPDATE `creature_template` SET `speed_run`=1.801429, `BaseAttackTime`=1538, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=66464; -- Zhing
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4196352 WHERE `entry`=66467; -- G'nathus
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=66471; -- Spawn of G'nathus
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048, `VehicleId`=2471 WHERE `entry`=66473; -- Skyfire Gyrocopter
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (66498 /*Nightstalker*/, 66500 /*Jack*/, 66543 /*Netherbite*/, 66544 /*Jadefire*/, 66545 /*Arcanus*/, 66628 /*Bloom*/, 66629 /*Beakmaster X-225*/, 66631 /*Grizzle*/, 66712 /*Woodcarver*/, 66713 /*Needleback*/, 66714 /*Lightstalker*/, 66719 /*Bleat*/, 66720 /*Lapin*/, 66721 /*Piqua*/, 66722 /*Mutilator*/, 66724 /*Crusher*/, 66925 /*Mollus*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=66499; -- Bishibosh
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (66522 /*Lydia Accoste*/, 66557 /*Bloodknight Antari*/, 66675 /*Major Payne*/, 66738 /*Courageous Yon*/, 66739 /*Wastewalker Shu*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=34816 WHERE `entry` IN (66526 /*Stinky Turnip*/, 66529 /*Stolen Brew Keg*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4196352 WHERE `entry`=66593; -- Ancient Leviathan
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=67110912 WHERE `entry`=66632; -- Lotus Basket
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=66658; -- Lon'li Guju
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66700; -- Zandalari Diviner
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=71305216, `VehicleId`=2482 WHERE `entry`=66701; -- Brewmaster Boat
+UPDATE `creature_template` SET `speed_walk`=1.555556, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (66723 /*Pounder*/, 66926 /*Diamond*/);
+UPDATE `creature_template` SET `speed_run`=0.9920571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66729; -- Krasarang Glider
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=66733; -- Mo'ruk
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4196352 WHERE `entry`=66755; -- Shrouded Cetacean
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=34816, `HoverHeight`=6 WHERE `entry`=66828; -- Broken Barrel
+UPDATE `creature_template` SET `unit_flags`=570688256, `unit_flags2`=2049 WHERE `entry`=31010; -- Azure Mage Slayer
+UPDATE `creature_template` SET `speed_walk`=1.555556, `speed_run`=1.357143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66850; -- Thousand-Year Guardian
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `HoverHeight`=3.5 WHERE `entry`=66852; -- Giant Stingray
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags2`=2099200 WHERE `entry`=31044; -- Highlord Tirion Fordring
+UPDATE `creature_template` SET `speed_run`=1.285714 WHERE `entry`=31045; -- Mirador
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66900; -- Huggalon the Heart Watcher
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=66918; -- Seeker Zusshi
+UPDATE `creature_template` SET `speed_walk`=1.111112, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=66923; -- Skimmer
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (66933 /*Kishak*/, 66935 /*Clamstok*/, 66938 /*Odd'nirok*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67143680, `VehicleId`=2494 WHERE `entry`=66946; -- Balance Pole
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (66947 /*Monk Trainee*/, 66986 /*Monk Trainee*/, 67009 /*Monk Trainee*/, 67015 /*Monk Trainee*/, 67066 /*Monk Trainee*/, 67092 /*Master Chow*/, 67095 /*Master Yeoh*/);
+UPDATE `creature_template` SET `npcflag`=7297 WHERE `entry`=31115; -- Quartermaster Vaskess
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry` IN (66969 /*Training Bag*/, 67885 /*Kor'kron Flak Cannon*/, 70789 /*Zandalari Rage Banner*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67108864 WHERE `entry`=66987; -- Training Bag
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2099201 WHERE `entry`=67011; -- Garrosh'ar Grunt
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=262144, `unit_flags2`=2048 WHERE `entry`=67021; -- Monk Trainee
+UPDATE `creature_template` SET `speed_walk`=0.222222, `speed_run`=0.2480157, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4194304, `VehicleId`=2289 WHERE `entry`=67027; -- Jungle Brewstealer
+UPDATE `creature_template` SET `speed_run`=4.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=4196352, `VehicleId`=2496 WHERE `entry`=67028; -- Trained Jibberwing
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67097; -- Wise Yang Wei
+UPDATE `creature_template` SET `npcflag`=4736, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=67173; -- Supplier Qiao
+UPDATE `creature_template` SET `npcflag`=4736, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (67175 /*Steelbender Jin*/, 67178 /*Lien the Maintainer*/);
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=67179; -- Cook Jun
+UPDATE `creature_template` SET `npcflag`=72320, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67182; -- Murn Stronghoof
+UPDATE `creature_template` SET `npcflag`=6784, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67183; -- Refuge Supplier An
+UPDATE `creature_template` SET `npcflag`=4736, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (67184 /*Bowfitter Suyin*/, 70034 /*Arnold Raygun*/);
+UPDATE `creature_template` SET `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=67196; -- Furious Halfhill Defender
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (67255 /*Darkhatched Shaman*/, 67256 /*Darkhatched Oracle*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=800, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67257; -- Darkhatched Skulker
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (67258 /*Darkhatched Skinflayer*/, 67259 /*Darkhatched Flesh-hunter*/, 67681 /*Kor'kron Bodyguard*/, 67748 /*Darkhatched Sorcerer*/, 67832 /*Corrupted Darkhatched Slayer*/, 67991 /*Silvermoon Spellbreaker*/, 68968 /*7th Legion Champion*/, 70750 /*Raaaargh*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=67262; -- Bruce
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=67263; -- Darkhatched Lizard-Lord
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=67264; -- Broodmaster Noshi
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1600, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=4196352 WHERE `entry`=67266; -- Rak'gor Bloodrazor
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (67268 /*Sanoriak*/, 67269 /*Kirrawk*/, 67485 /*Dominika the Illusionist*/, 68377 /*Leona Earthwind*/, 71254 /*Greska the Scorned*/, 71256 /*Jessina the Blazing*/, 71258 /*Ruka the Eruptor*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=1073743872 WHERE `entry` IN (67272 /*Scenario Controller*/, 68105 /*Shield Channel Point*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200, `VehicleId`=2509 WHERE `entry`=67273; -- Saurok Swarmling Ceiling Crawling Vehicle
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.1428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=1073741824 WHERE `entry` IN (67279 /*Sonic Control Tower*/, 67789 /*Sonic Control Tower*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048 WHERE `entry` IN (67328 /*Rope Anchor*/, 67341 /*Cannon Exploder*/, 67411 /*Emote Bunny*/, 67792 /*Saurok Egg*/, 67839 /*Skyfire Cannon*/, 69421 /*Sarcophagus Lid*/, 69449 /*Sarcophagus Lid*/, 69575 /*Sarcophagus Lid*/, 69576 /*Sarcophagus Lid*/, 69592 /*Warrior Summon Stalker*/, 70344 /*Ninja Rope*/, 70755 /*Explosive Barrel*/, 70894 /*Gunpowder Drop Visual Stalker*/, 71452 /*Admiral Yell Listener*/, 71590 /*Ominous Glow*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2516 WHERE `entry`=67343; -- Transport Cannon
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2517 WHERE `entry`=67344; -- Swift Gray Wolf
+UPDATE `creature_template` SET `speed_run`=5, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912, `VehicleId`=2556 WHERE `entry`=67352; -- Alliance Landing Ship
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=33556480 WHERE `entry`=67357; -- Dominance Grunt
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=2471 WHERE `entry`=67359; -- Skyfire Gyrocopter X2
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry` IN (67360 /*Horde Cannoneer*/, 69194 /*Alliance Cannoneer*/, 70396 /*Silver Covenant Spellblade*/, 70397 /*Silver Covenant Captain*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry` IN (67361 /*Horde Swashbuckler*/, 69196 /*Alliance Swashbuckler*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2524 WHERE `entry`=67366; -- Horde Officer
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=67391; -- Lieutenant Drak'on
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=4196352 WHERE `entry` IN (67392 /*Fire Bunny*/, 67393 /*Sail Fire Bunny*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=16384, `unit_flags2`=2048 WHERE `entry`=67394; -- Plant Explosives
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `VehicleId`=2531 WHERE `entry`=67395; -- Beachhead Demolisher
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67414; -- Vol'jin
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=1073743872 WHERE `entry`=67426; -- Admiral Hagman
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=16384 WHERE `entry`=67436; -- Ancient Bloodcrown Crane
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=16384 WHERE `entry`=67438; -- Krasari Elder
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.4285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=16384 WHERE `entry`=67439; -- Colossal Viseclaw
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=67444; -- Mishka
+UPDATE `creature_template` SET `npcflag`=131, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=67447; -- Jorn Skyseer
+UPDATE `creature_template` SET `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=67449; -- Shieldwall Excavationbot
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2623 WHERE `entry`=67461; -- Warlord Bloodhilt
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=33556480 WHERE `entry`=67473; -- Animated Warrior
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=67477; -- Defiant Devilsaur
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry`=67483; -- Disruptron Mk. 3R-Alpha
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry` IN (67487 /*Bo Bobble*/, 67488 /*Max Megablast*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `HoverHeight`=5 WHERE `entry`=67493; -- Siege-o-Matic 4000
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2129920 WHERE `entry`=67500; -- Shield Generator
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200 WHERE `entry` IN (67509 /*Leper Gnome Controller*/, 68297 /*Fran/Riddoh Controller*/);
+UPDATE `creature_template` SET `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry` IN (67511 /*Queasy*/, 67513 /*Sleazy*/, 67514 /*Greazy*/, 67515 /*Fleasy*/, 67516 /*Wheezy*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2541 WHERE `entry`=67524; -- Riddoh
+UPDATE `creature_template` SET `speed_run`=1.111111, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=67540; -- Crush
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (67544 /*Scout-o-Meter Mk I*/, 67546 /*Scout-o-Meter Mk II*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=1.111112, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=67547; -- Scout-o-Meter Mk III
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=67572; -- Dungeon Master Vishas
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=67573; -- Meatball
+UPDATE `creature_template` SET `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=67576; -- Adolescent Direhorn
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=67579; -- Vian the Volatile
+UPDATE `creature_template` SET `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570458112, `unit_flags2`=2048 WHERE `entry`=67590; -- Darkhatched Swarmling
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=67594; -- Blat
+UPDATE `creature_template` SET `BaseAttackTime`=2250, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=67598; -- Dominance Grunt
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=1322 WHERE `entry`=67625; -- Darlene Sizzlespark
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024 WHERE `entry` IN (67628 /*Shademaster Kiryn*/, 67630 /*Mishka*/, 67940 /*Admiral Taylor*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2048 WHERE `entry`=67631; -- Marshal Troteman
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (67633 /*Enlisted Cannoneer*/, 69144 /*Zandalari Beastlord*/, 71298 /*Zandalari Beastlord*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=67110912 WHERE `entry`=67639; -- Alliance Supply Drop
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33344, `unit_flags2`=2099200 WHERE `entry`=67647; -- Kor'kron Assassin
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=34816 WHERE `entry` IN (67648 /*Portal: Sparkrocket Outpost*/, 67655 /*Portal: Domination Point*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=34816 WHERE `entry` IN (67653 /*Portal: Lion's Landing*/, 67656 /*Portal: The Skyfire*/, 67737 /*Portal: Shrine of Seven Stars*/, 67738 /*Portal: Stormwind*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=2113536 WHERE `entry`=67671; -- Domination Point Demolisher
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.2857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2147516416, `unit_flags2`=2099200 WHERE `entry`=67678; -- Dark Summoner
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2553 WHERE `entry`=67694; -- Goblin Cannon
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=69208064 WHERE `entry` IN (67705 /*Guardian Spirit*/, 69895 /*Kirin Tor Sky Ward*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=3.2, `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `VehicleId`=2554 WHERE `entry`=67706; -- The Spring Saurok-Slayer
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=1107296256 WHERE `entry`=67710; -- Zan'thik Guardian
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=2097152 WHERE `entry`=67712; -- Wild Scorpid
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=35651584 WHERE `entry` IN (67714 /*Zan'thik Slaver*/, 67720 /*Zan'thik Drone*/);
+UPDATE `creature_template` SET `speed_run`=1.142857, `BaseAttackTime`=1818 WHERE `entry`=31900; -- Scourge Banner-Bearer
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=102760448 WHERE `entry`=67746; -- Amber Bomb
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (67751 /*Ongrom Black Tooth*/, 67881 /*Proveditor Grantley*/, 68107 /*Viv Wobbledigit*/, 68198 /*Field Merchant Skevin*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=4196352 WHERE `entry`=67761; -- Chi-Ji
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=134219776 WHERE `entry`=67765; -- Skyfire Gyrocopter Pilot
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67771; -- Amberglow Firefly
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33554432 WHERE `entry` IN (67774 /*Zan'thik Brutalizer*/, 70347 /*Skumblade Slasher*/, 70348 /*Skumblade Skirmisher*/);
+UPDATE `creature_template` SET `npcflag`=4224, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67776; -- Simple Sal
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=16384 WHERE `entry`=67779; -- Mature Saurok Egg
+UPDATE `creature_template` SET `speed_walk`=3.6, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=67783; -- The Spring Drifter
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=1073741824, `VehicleId`=2557 WHERE `entry`=67784; -- Scorpid Relocator
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.1428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2147483648, `unit_flags2`=1073741824 WHERE `entry`=67788; -- Sonic Control Tower
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=32768 WHERE `entry`=67798; -- Corrupted Darkhatched Egg
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570720256, `unit_flags2`=35651585 WHERE `entry`=67809; -- Zan'thik Slasher
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33344, `unit_flags2`=4196352 WHERE `entry`=67818; -- Kor'kron Assailant
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=67847; -- Belloc Brightblade
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=69208064 WHERE `entry` IN (67854 /*Blue Eye*/, 67855 /*Red Eye*/, 67856 /*Yellow Eye*/, 67857 /*Cross-Eye*/, 67858 /*Appraising Eye*/, 67859 /*Hungry Eye*/, 67860 /*Evil Eye*/, 67875 /*Mind's Eye*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=16384 WHERE `entry` IN (67862 /*Broken Mogu Tablet*/, 67863 /*Broken Mogu Tablet*/);
+UPDATE `creature_template` SET `speed_walk`=3.6, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048, `VehicleId`=2563 WHERE `entry`=67876; -- The Spring Drifter
+UPDATE `creature_template` SET `speed_walk`=3.6, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048, `VehicleId`=2564 WHERE `entry`=67878; -- The Spring Drifter
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=4196352 WHERE `entry`=67879; -- Commander Tel'vrak
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry` IN (67883 /*Rosey Axlerod*/, 68057 /*Duff McStrum*/, 68058 /*Dwarf Laborer*/, 68060 /*Dwarf Laborer*/, 68062 /*Dwarf Laborer*/, 68063 /*Dwarf Laborer*/, 68064 /*Dwarf Laborer*/, 68477 /*Kor'kron Sentry*/, 68599 /*Ferra Pearl*/, 68739 /*Kor'kron Elite*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33554432 WHERE `entry`=67887; -- Zan'thik Swarmer
+UPDATE `creature_template` SET `speed_walk`=12, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2097152, `VehicleId`=2565 WHERE `entry`=67897; -- Gnomish Flying Machine
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67143680 WHERE `entry`=67916; -- Dwarven Mortar Tube
+UPDATE `creature_template` SET `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=1073743872, `VehicleId`=2629 WHERE `entry`=67958; -- Gunship Cannon
+UPDATE `creature_template` SET `speed_run`=2.571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2097152 WHERE `entry`=67966; -- Whirl Turtle
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=4196352 WHERE `entry`=67974; -- Bogrot
+UPDATE `creature_template` SET `npcflag`=4227, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33600, `unit_flags2`=2048 WHERE `entry`=67976; -- Tinkmaster Overspark
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=64, `unit_flags2`=4229120, `VehicleId`=2653 WHERE `entry`=67977; -- Tortos
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33600, `unit_flags2`=2048 WHERE `entry`=67992; -- Lady Jaina Proudmoore
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67994; -- Warmage Yurias
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (67996 /*Archmage Modera*/, 69674 /*Dalvin Jaacor*/, 69677 /*Sanitation Sorcerer Stephen Litmatch*/, 70517 /*Archmage Lan'dalock*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry` IN (67997 /*Narasi Snowdawn*/, 69668 /*Danara Silverglass*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (68012 /*Chief Engineer Cogwrench*/, 70422 /*Zandalari Fleshrender*/);
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry`=68015; -- Jhevha
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.428571, `BaseAttackTime`=2667 WHERE `entry`=32186; -- Infinite Timebreaker
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2638 WHERE `entry`=68028; -- Lieutenant Ethan Jacobson
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2099200, `VehicleId`=2561, `HoverHeight`=28 WHERE `entry`=68036; -- Durumu the Forgotten
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=73400320 WHERE `entry`=68065; -- Megaera
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587264, `unit_flags2`=4196352, `VehicleId`=2604 WHERE `entry`=68078; -- Iron Qon
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=64, `unit_flags2`=4194304, `VehicleId`=2707 WHERE `entry`=68079; -- Ro'shak
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=320, `unit_flags2`=4196352, `VehicleId`=2571 WHERE `entry` IN (68080 /*Quet'zal*/, 68081 /*Dam'ren*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=2572 WHERE `entry`=68115; -- Skyfire Gyrocopter
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32784, `unit_flags2`=2048 WHERE `entry`=68130; -- The Monkey King
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33554688, `unit_flags2`=4196352 WHERE `entry`=68136; -- Back Head Spawner
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570720256, `unit_flags2`=35651585 WHERE `entry`=68141; -- Kor'kron Infiltrator
+UPDATE `creature_template` SET `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=1073743872, `VehicleId`=2640 WHERE `entry`=68153; -- Bomber
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2097152 WHERE `entry`=68194; -- Young Egg of Ji-Kun
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=1073743872, `VehicleId`=2580 WHERE `entry`=68213; -- Work Complete
+UPDATE `creature_template` SET `speed_walk`=0.84, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2147483648, `unit_flags2`=2048 WHERE `entry`=68220; -- Gastropod
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=67110912 WHERE `entry`=68221; -- Bore Worm
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2762, `HoverHeight`=3 WHERE `entry`=68222; -- Bow Fly Swarm
+UPDATE `creature_template` SET `npcflag`=16777216 WHERE `entry` IN (68231 /*Carousel Dragon*/, 35335 /*Alliance Boat*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2099200, `VehicleId`=2586 WHERE `entry`=68240; -- Master Brownstone
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (68244 /*Pandaren Laborer*/, 68247 /*Pandaren Laborer*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=67110912, `VehicleId`=2747 WHERE `entry`=68249; -- Web
+UPDATE `creature_template` SET `speed_walk`=1.4, `speed_run`=0.7142857, `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=68252; -- Proboskus
+UPDATE `creature_template` SET `speed_run`=0.7857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=68254; -- King Kulaka
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=68255; -- Dippy
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=69208064 WHERE `entry`=68262; -- Corpse Spider
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=69208064, `VehicleId`=2741 WHERE `entry`=68266; -- Web
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=69208064 WHERE `entry` IN (68269 /*Pandaren Keg*/, 68270 /*Vittles*/, 68271 /*Blast-brew Cauldron*/, 68273 /*Woodpile*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=69208064 WHERE `entry`=68279; -- Dragon Cannon
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2584 WHERE `entry`=68313; -- Roaming Fog
+UPDATE `creature_template` SET `speed_run`=2.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=68323; -- Bizmo
+UPDATE `creature_template` SET `speed_walk`=1.555556, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=2099200 WHERE `entry`=68347; -- Spirit-Kissed Sprite
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=68349; -- Lushwater Crane
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (68351 /*Jungle Stomper*/, 69905 /*Gurubashi Berserker*/);
+UPDATE `creature_template` SET `npcflag`=4224, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry`=68363; -- Quackenbush
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry` IN (68376 /*Master Brownstone*/, 69186 /*Kirin Tor Perimeter Ward*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=68392; -- King Varian Wrynn
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4196352 WHERE `entry`=68397; -- Lei Shen
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=256, `unit_flags2`=4196352, `VehicleId`=2726 WHERE `entry` IN (68398 /*Static Shock Conduit*/, 68696 /*Diffusion Chain Conduit*/, 68697 /*Overcharge Conduit*/, 68698 /*Bouncing Bolt Conduit*/);
+UPDATE `creature_template` SET `speed_run`=4.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=69208096, `VehicleId`=2588 WHERE `entry`=68434; -- Subway Car
+UPDATE `creature_template` SET `speed_run`=4.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=69208096 WHERE `entry`=68442; -- Subway Car
+UPDATE `creature_template` SET `speed_walk`=3.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=69208064, `HoverHeight`=10 WHERE `entry`=68459; -- Sewer Boulder
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=1.555556, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=68462; -- Flowing Pandaren Spirit
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=68476; -- Horridon
+UPDATE `creature_template` SET `speed_walk`=0.555556, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=68535; -- Zoe Mae
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (68555 /*Ka'wi the Gorger*/, 68558 /*Gorespine*/, 68559 /*No-No*/, 68560 /*Greyhoof*/, 68561 /*Lucky Yi*/, 68562 /*Ti'un the Wanderer*/, 68563 /*Kafi*/, 68564 /*Dos-Ryga*/, 68565 /*Nitun*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=1.111112, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=68566; -- Skitterer Xi'a
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=68741; -- Fennie Hornswaggle
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33850112, `unit_flags2`=2048 WHERE `entry`=68769; -- Royal Jibstabber
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=100665344 WHERE `entry`=68770; -- Jade-Trapped Quilen
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33817344, `unit_flags2`=2048 WHERE `entry`=68774; -- Disciple of Jade
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=1.388888, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=68804; -- Harpy Youngling
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=68819; -- Arcane Eye
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=68830; -- Mishka
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=68832; -- Tinkmaster Overspark
+UPDATE `creature_template` SET `speed_walk`=12, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `VehicleId`=2565 WHERE `entry`=68837; -- Gnomish Flying Machine
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33600, `unit_flags2`=2099200 WHERE `entry`=68842; -- Tyrande Whisperwind
+UPDATE `creature_template` SET `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=68843; -- Skyfire Fire Brigade
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133056, `unit_flags2`=4196353 WHERE `entry` IN (68844 /*Shieldwall Footman*/, 68847 /*Shieldwall Footman*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2099200, `VehicleId`=2510 WHERE `entry`=68848; -- Kor'kron Gunship
+UPDATE `creature_template` SET `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2099200, `VehicleId`=2640 WHERE `entry`=68849; -- Skyfire Gyrocopter
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=1.571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4196352, `VehicleId`=2727 WHERE `entry`=68852; -- Rushing Winds
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=1073743872, `VehicleId`=2579 WHERE `entry` IN (68894 /*Pandaren Construction Site*/, 68899 /*Gnome Construction Site*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=1073743872, `VehicleId`=2581 WHERE `entry` IN (68895 /*Pandaren Construction Site*/, 68900 /*Gnome Construction Site*/);
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=6291456 WHERE `entry` IN (68904 /*Suen*/, 68905 /*Lu'lin*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=68908; -- Amber Kearnen
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2097152, `VehicleId`=2692 WHERE `entry`=69017; -- Primordius
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=1073743872 WHERE `entry`=69018; -- Totally Generic Bunny (JSB)
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432 WHERE `entry` IN (69024 /*Quadrant Stalker*/, 69825 /*Thunder Trap*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=69026; -- King Varian Wrynn
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.2857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2097152 WHERE `entry`=69069; -- Living Fluid
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133312, `unit_flags2`=67110913 WHERE `entry` IN (69075 /*Zandalari Sacrifice*/, 69866 /*Zandalari Sacrifice*/, 69867 /*Zandalari Sacrifice*/, 69868 /*Zandalari Sacrifice*/);
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2097152, `VehicleId`=2670 WHERE `entry`=69078; -- Sul the Sandcrawler
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2048 WHERE `entry`=69098; -- Hillpaw's Chicken
+UPDATE `creature_template` SET `speed_walk`=1.44444, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=4196352, `HoverHeight`=20 WHERE `entry`=69099; -- Nalak
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2097152, `VehicleId`=2665 WHERE `entry`=69131; -- Frost King Malakk
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2097152, `VehicleId`=2668 WHERE `entry`=69132; -- High Priestess Mar'li
+UPDATE `creature_template` SET `speed_walk`=5.6, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2097152, `VehicleId`=2669 WHERE `entry`=69134; -- Kazra'jin
+UPDATE `creature_template` SET `speed_walk`=5.6, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33587456, `unit_flags2`=2099200 WHERE `entry`=69135; -- Gara'jal the Spiritbinder
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200, `VehicleId`=2660 WHERE `entry`=69142; -- Horned Battlebeast
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=35653632, `VehicleId`=2671 WHERE `entry`=69148; -- Bloodrender Devilsaur
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (69155 /*Zandalari Fetish-Binder*/, 69195 /*Zandalari Spirit-Twister*/, 69295 /*Zandalari Acolyte*/, 69296 /*Zandalari Soultwister*/, 69297 /*Zandalari Haruspex*/, 69300 /*Arcanital Ra'kul*/, 69301 /*Spiritbinder Tu'chek*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=4196352, `VehicleId`=2662 WHERE `entry`=69156; -- Zandalari Skyscreamer
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=69162; -- Juvenile Skyscreamer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2099200 WHERE `entry` IN (69164 /*Gurubashi Venom Priest*/, 69167 /*Gurubashi Bloodlord*/, 69168 /*Amani'shi Flame Caster*/, 69169 /*Amani'shi Protector*/, 69173 /*Farraki Skirmisher*/, 69175 /*Farraki Wastewalker*/, 69178 /*Drakkari Frozen Warlord*/);
+UPDATE `creature_template` SET `speed_walk`=1.111112, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=69172; -- Sul'lithuz Stonegazer
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2099200, `VehicleId`=2666 WHERE `entry`=69177; -- Amani Warbear
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480, `VehicleId`=2663 WHERE `entry`=69180; -- Tamed Bladetalon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200, `VehicleId`=2664 WHERE `entry`=69182; -- Gara'jal's Soul
+UPDATE `creature_template` SET `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry`=69183; -- Maturing Raptor
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2099200 WHERE `entry` IN (69184 /*Risen Drakkari Warrior*/, 69185 /*Risen Drakkari Champion*/);
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.4285714, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=69193; -- Loa-Infused Bloodhorn
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (69200 /*Drakkari God-Hulk*/, 69755 /*War-God Al'chukla*/, 69768 /*Zandalari Warscout*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2048 WHERE `entry`=69207; -- Young Skyscreamer
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=69216; -- Shan'ze Electrocutioner
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.428571, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4196352 WHERE `entry`=69218; -- Kroshik
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2099200 WHERE `entry` IN (69221 /*Zandalari Dinomancer*/, 69374 /*War-God Jalak*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (69224 /*Zandalari Arcweaver*/, 69225 /*Zandalari Spiritbinder*/, 69255 /*Spiritbinder Tec'uat*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry`=69226; -- Skumblade Seadragon
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry`=69229; -- Skumblade Saur-Priest
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=67110912 WHERE `entry`=69234; -- Ihgaluk Roach
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2674 WHERE `entry`=69236; -- Shan'ze Soulripper
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=67684352 WHERE `entry`=69240; -- Grave Guardian
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=32768 WHERE `entry`=69247; -- Fetid Meat Pile
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=34816 WHERE `entry` IN (69257 /*Anduin Wrynn*/, 70436 /*Blacktalon Quartermaster*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=69266; -- Beastcaller Aht'lutal
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.7142857, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=69271; -- Bladetalon Hatchling
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=33088, `unit_flags2`=2048 WHERE `entry`=69277; -- Defiant Direhorn
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2048 WHERE `entry`=69283; -- Mogu Corpse
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry`=69292; -- Sunreaver Perimeter Ward
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=2 WHERE `entry`=69303; -- Arcane Watcher
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=1920, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2680 WHERE `entry`=69306; -- Loa-Infused Bladetalon
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.7142857, `BaseAttackTime`=1600, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=69311; -- Loa-Infused Compy
+UPDATE `creature_template` SET `unit_flags`=2147779328 WHERE `entry`=33479; -- Stormwind Valiant
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67127296 WHERE `entry` IN (69316 /*Lightning Drill*/, 69319 /*Lightning Drill*/, 69320 /*Lightning Drill*/);
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=69318; -- Kylo Kelwin
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (69321 /*Herwin Steampop*/, 70183 /*Valaden Silverblade*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags2`=34816 WHERE `entry`=69327; -- Lightning Rod
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=34816 WHERE `entry` IN (69331 /*Mummified Remains*/, 69337 /*Mummified Remains*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=69334; -- Adherent Hanjun
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33024 WHERE `entry`=69336; -- Guardian Tak'u
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35653632, `VehicleId`=584 WHERE `entry`=69338; -- Skumblade Brute
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2099200 WHERE `entry`=69343; -- Lightning Field Stalker
+UPDATE `creature_template` SET `speed_run`=1.214286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=1.2 WHERE `entry`=69351; -- Greater Cave Bat
+UPDATE `creature_template` SET `speed_run`=1.214286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=69352; -- Vampiric Cave Bat
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry`=69367; -- Kulan's Spear
+UPDATE `creature_template` SET `speed_walk`=5.2, `speed_run`=1.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=69208064, `HoverHeight`=2 WHERE `entry`=69370; -- Sewer Shark
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=69208064 WHERE `entry`=69375; -- Hidden Fog
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=69208066, `VehicleId`=2690 WHERE `entry`=69377; -- Vigilant Lens Stalker A
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=69208066, `VehicleId`=2688 WHERE `entry`=69378; -- Vigilant Lens Stalker B
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=2, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=69388; -- Zandalari Spear-Shaper
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (69390 /*Zandalari Storm-Caller*/, 69455 /*Zandalari Water-Binder*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (69397 /*Zandalari Beastcaller*/, 70119 /*Zandalari Beast Handler*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=69404; -- Juvenile Skyscreamer
+UPDATE `creature_template` SET `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=69405; -- Zandalari Colossus
+UPDATE `creature_template` SET `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=69406; -- Mighty Devilsaur
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=4196352, `VehicleId`=2693 WHERE `entry`=69411; -- Zandalari Skyscreamer
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2099200 WHERE `entry`=69412; -- Zandalari Beastcaller
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=69413; -- Taoshi
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33570816, `unit_flags2`=34816, `VehicleId`=2695 WHERE `entry`=69420; -- Mogu Sarcophagus
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2696 WHERE `entry`=69423; -- Sarcophagus Lid
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587968, `unit_flags2`=2048, `VehicleId`=2697 WHERE `entry`=69424; -- Miura Brightweaver Sparkles
+UPDATE `creature_template` SET `speed_walk`=0.577776, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=262464, `unit_flags2`=2099200, `VehicleId`=2698 WHERE `entry`=69427; -- Dark Animus
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=69431; -- Shan'ze Bloodseeker
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2700 WHERE `entry`=69450; -- Sarcophagus Lid
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.4285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=268437504 WHERE `entry`=69456; -- Moon Lotus
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=69457; -- Taoshi
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=2733 WHERE `entry`=69458; -- Thunderwing
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=69460; -- Sun
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=2048 WHERE `entry`=69462; -- Ball Lightning
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry` IN (69463 /*Zandalari Wingrider*/, 69559 /*Beastmaster Horaki*/);
+UPDATE `creature_template` SET `speed_walk`=6.4, `speed_run`=2.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=4196352, `VehicleId`=2701 WHERE `entry`=69464; -- Zandalari Pterrorwing
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4259840, `VehicleId`=2703 WHERE `entry`=69465; -- Jin'rokh the Breaker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry`=69467; -- Statue
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=69482; -- Captain Halu'kal
+UPDATE `creature_template` SET `speed_walk`=0.888888, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=6293504 WHERE `entry`=69483; -- Hu'seng the Gatekeeper
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67143680 WHERE `entry`=69495; -- Splash Grate
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=69501; -- Taran Zhu
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=4196352 WHERE `entry`=69505; -- Sentry Totem
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry`=69506; -- Quilen Guardian
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=69732352 WHERE `entry`=69510; -- Palace Gatekeeper
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (69522 /*Dread Wastes Flame Guardian*/, 69529 /*Jade Forest Flame Guardian*/, 69533 /*Krasarang Wilds Flame Guardian*/, 69535 /*Kun-Lai Summit Flame Guardian*/, 69536 /*Townlong Steppes Flame Guardian*/, 69550 /*Valley of the Four Winds Flame Guardian*/, 69551 /*Vale of Eternal Blossoms Flame Keeper*/, 69673 /*Ako*/, 70360 /*Vereesa Windrunner*/, 71150 /*Chen Stormstout*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry`=69525; -- Shan'ze Electrocutioner
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry`=69527; -- Zandalari Stoneshield
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=4196352 WHERE `entry`=69530; -- Shan Bu
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=4196352, `VehicleId`=2732 WHERE `entry`=69534; -- Shan Bu
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=69544; -- Taoshi
+UPDATE `creature_template` SET `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=69558; -- Zandalari Colossus
+UPDATE `creature_template` SET `speed_walk`=1.44444, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=832, `unit_flags2`=4196352, `HoverHeight`=20 WHERE `entry`=69562; -- Nalak
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=69566; -- Midsummer Reveler
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (69567 /*Priest of the Serpent*/, 69568 /*Priest of the Hydra*/, 69569 /*Priest of the Direhorn*/, 69570 /*Priest of the Hawk*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=69573; -- Mogu Warrior Spirit
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33570816, `unit_flags2`=34816, `VehicleId`=2714 WHERE `entry`=69574; -- Warrior's Sarcophagus
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2715 WHERE `entry`=69577; -- Sarcophagus Lid
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2716 WHERE `entry`=69578; -- Sarcophagus Lid
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `HoverHeight`=4.8 WHERE `entry`=69580; -- Onyx Stormclaw
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry`=69598; -- Dead Compy
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2722 WHERE `entry`=69604; -- Tactical Mana Bomb Holder
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2099200, `VehicleId`=2723 WHERE `entry`=69608; -- Tactical Mana Bomb Holder
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=69615; -- Vereesa Windrunner
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33088, `unit_flags2`=2099200 WHERE `entry`=69616; -- Lady Jaina Proudmoore
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33088, `unit_flags2`=2099200 WHERE `entry`=69617; -- Lor'themar Theron
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=69618; -- Yalia Sagewhisper
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry` IN (69619 /*Archmage Aethas Sunreaver*/, 70683 /*Dark Shaman Xorenth*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=69620; -- Scout Captain Elsia
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=69621; -- Taoshi
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=256, `unit_flags2`=2048 WHERE `entry` IN (69624 /*Silver Covenant Spellbow*/, 70193 /*Silver Covenant Spellbow*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2048 WHERE `entry`=69625; -- Sunreaver Ranger
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2623488 WHERE `entry`=69626; -- Incubater
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2099200 WHERE `entry`=69628; -- Mature Egg of Ji-Kun
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2048 WHERE `entry`=69633; -- Kor'dok
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=1073743872 WHERE `entry`=69645; -- Overwhelming Power
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=69224448 WHERE `entry` IN (69655 /*Activated Forge*/, 69660 /*Activated Forge*/, 69661 /*Activated Forge*/, 69662 /*Activated Forge*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=69664; -- Mumta
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=69665; -- Arcweaver Jor'guva
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry`=69670; -- Vylene Amaranth
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=69678; -- Image of Archmage Vargoth
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (69688 /*Buried Silver Covenant Construct*/, 69695 /*Distressed Silver Covenant Construct*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=67110912, `VehicleId`=2731 WHERE `entry`=69690; -- Buried Silver Covenant Construct Vehicle
+UPDATE `creature_template` SET `speed_walk`=0.577776, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=262464, `unit_flags2`=2097152, `VehicleId`=2698 WHERE `entry`=69699; -- Massive Anima Golem
+UPDATE `creature_template` SET `speed_walk`=0.577776, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=262464, `unit_flags2`=2097152, `VehicleId`=2698 WHERE `entry`=69700; -- Large Anima Golem
+UPDATE `creature_template` SET `speed_walk`=0.577776, `speed_run`=1.071429, `BaseAttackTime`=4000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=262464, `unit_flags2`=2097152, `VehicleId`=2698 WHERE `entry`=69701; -- Anima Golem
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=64, `unit_flags2`=2099200 WHERE `entry`=69702; -- Dark Ritualist
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200, `VehicleId`=2727 WHERE `entry`=69703; -- Rushing Winds
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=4196352, `VehicleId`=2575 WHERE `entry`=69712; -- Ji-Kun
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (69717 /*Taran Zhu*/, 69803 /*Taran Zhu*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33088, `unit_flags2`=2048 WHERE `entry` IN (69741 /*Lady Jaina Proudmoore*/, 70040 /*Lady Jaina Proudmoore*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=69743; -- Shan Bu
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=570425856, `unit_flags2`=2099200, `VehicleId`=2698 WHERE `entry`=69756; -- Anima Orb
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=69769; -- Zandalari Warbringer
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67143680 WHERE `entry` IN (69770 /*Lightning Ritual Stone*/, 70196 /*Lightning Ritual Stone*/, 70197 /*Lightning Ritual Stone*/, 70201 /*Spirit Ritual Stone*/, 70203 /*Spirit Ritual Stone*/, 70614 /*Primal Ritual Stone*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=2.2, `speed_run`=0.7857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=69240832 WHERE `entry` IN (69771 /*Faded Image of Xuen*/, 69774 /*Faded Image of Chi-Ji*/, 69777 /*Faded Image of Niuzao*/, 69779 /*Faded Image of Yu'lon*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=2735 WHERE `entry`=69772; -- Zandalari Skyscreamer
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=34816 WHERE `entry`=69782; -- Wrathion
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=69794; -- Electrified Razortooth
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.8571429, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=536903744, `unit_flags2`=33554432, `VehicleId`=2764 WHERE `entry`=69795; -- Zandalari Battlebeast
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=69810; -- Taoshi
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=2737 WHERE `entry`=69811; -- Yalia's Tiger
+UPDATE `creature_template` SET `speed_walk`=0.444444, `speed_run`=0.8571429, `BaseAttackTime`=750, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=69821; -- Thunder Lord
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33554432 WHERE `entry`=69826; -- Zandalari Striker
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.714286, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=69834; -- Lightning Guardian
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (69841 /*Zandalari Warbringer*/, 70096 /*War-God Dokah*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=69842; -- Zandalari Warbringer
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=67110912, `VehicleId`=2739 WHERE `entry` IN (69885 /*Jump to Boss Platform*/, 69886 /*No Skipping Trash*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=575488 WHERE `entry`=69894; -- Grave Guardian
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (69899 /*Farraki Sand Conjurer*/, 69906 /*Zandalari High Priest*/, 69909 /*Amani'shi Flame Chanter*/, 69910 /*Drakkari Frost Warden*/, 70586 /*Eternal Guardian*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=1416 WHERE `entry`=69903; -- Shan'ze Soulripper
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2752 WHERE `entry` IN (69911 /*Zandalari Warlord*/, 69916 /*Gurubashi Berserker*/);
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555264, `unit_flags2`=2048 WHERE `entry`=69919; -- Strength of Kros
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2048 WHERE `entry`=69926; -- Dohaman the Beast Lord
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1.714286, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=69927; -- Zandalari Prelate
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=69943; -- Gumi
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=69946; -- Hutia
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587456, `unit_flags2`=4196352 WHERE `entry`=69949; -- Vereesa Windrunner
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry`=69952; -- Heavy Explosives
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (69971 /*Xazi Smolderpipe*/, 69973 /*Zom Bocom*/);
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (69974 /*Knight-Lieutenant T'Maire Sydes*/, 69975 /*Captain Dirgehammer*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=69979; -- Ecton Brasstumbler
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=69998; -- Goda
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32784, `unit_flags2`=2099200 WHERE `entry`=70008; -- Primal Devilsaur
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=2099200 WHERE `entry`=70019; -- Primal Direhorn
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry` IN (70020 /*Pterrorwing Skyscreamer*/, 70245 /*Training Dummy*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=70021; -- Pterrorwing Skyscreamer
+UPDATE `creature_template` SET `speed_walk`=5.6, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33587456, `unit_flags2`=2048 WHERE `entry`=70056; -- Gara'jal the Spiritbinder
+UPDATE `creature_template` SET `speed_run`=1.289683, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (70059 /*Stunted Direhorn*/, 70384 /*Lil' Griffin*/);
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70060; -- Shadowed Voodoo Spirit
+UPDATE `creature_template` SET `speed_run`=0.4285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=67110914 WHERE `entry`=70066; -- Point of Light
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry`=70069; -- Shan'ze Animator
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=70092; -- Lady Jaina Proudmoore
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=70120; -- Pterrorwing
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=70121; -- Zandalari Spirit-Twister
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=70123; -- Zandalari Raptor
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=4.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (70128 /*Tame Thunderwing*/, 70146 /*Thunderwing*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048, `VehicleId`=2664 WHERE `entry`=70137; -- Gara'jal's Trash Soul
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=18432 WHERE `entry`=70138; -- Royal Bodyguard
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=70153; -- Fungal Growth
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=70155; -- Griftah
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=1140852736 WHERE `entry`=70157; -- Geyser
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=18432 WHERE `entry`=70170; -- Sunwalker Dezco
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048, `HoverHeight`=2.5 WHERE `entry`=70173; -- Reef Octopus
+UPDATE `creature_template` SET `speed_walk`=0.444444, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2048 WHERE `entry`=70179; -- Ritual Guard
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (70202 /*Manchu*/, 70205 /*Weisheng*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (70206 /*Untrained Quilen*/, 70209 /*Untrained Quilen*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=71305216 WHERE `entry`=70207; -- No Fall Damage
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=4.8, `speed_run`=4.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=4196352, `VehicleId`=2708 WHERE `entry`=70208; -- Thunderwing
+UPDATE `creature_template` SET `speed_walk`=3.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=2048 WHERE `entry`=70211; -- Gate Bunny
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=4196352 WHERE `entry`=70212; -- Flaming Head
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=70224; -- Rotting Scavenger
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=33556480 WHERE `entry` IN (70227 /*Skittering Spiderling*/, 70232 /*Muckbat*/);
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=70230; -- Zandalari Blade Initiate
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry` IN (70235 /*Frozen Head*/, 70247 /*Venomous Head*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=70236; -- Zandalari Storm-Caller
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2099200 WHERE `entry`=70241; -- Celestial Construct
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry` IN (70242 /*Priceless Zandalari Vase*/, 70797 /*Crate of Artifacts*/, 71440 /*Shimmerweed Basket*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=67110912, `VehicleId`=2760 WHERE `entry`=70244; -- Priceless Zandalari Vase Mount
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2147483648, `unit_flags2`=2048 WHERE `entry`=70246; -- Spirit Flayer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587712, `unit_flags2`=2099200 WHERE `entry`=70279; -- Moira Thaurissan
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=67110912 WHERE `entry`=70294; -- Bow Fly
+UPDATE `creature_template` SET `npcflag`=82, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70296; -- Mei Lin
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=70297; -- Taoshi
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=6293504 WHERE `entry`=70308; -- Soul-Fed Construct
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33024, `unit_flags2`=33556480 WHERE `entry`=70317; -- Omnia Veteran
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=70340; -- Salty El
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=70341; -- Tormented Spirit
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=70395; -- Silver Covenant Assassin
+UPDATE `creature_template` SET `npcflag`=211, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70398; -- Ben of the Booming Voice
+UPDATE `creature_template` SET `unit_flags`=537133072, `dynamicflags`=0 WHERE `entry`=34576; -- Crossroads Caravan Kodo
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=51201 WHERE `entry`=70434; -- Talak
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=70441; -- Lost Soul
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=70448; -- Ancient Python
+UPDATE `creature_template` SET `speed_run`=1.371429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70465; -- Frostmane Bonechiller
+UPDATE `creature_template` SET `speed_run`=1.371429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70471; -- Frostmane Berserker
+UPDATE `creature_template` SET `speed_walk`=1.555556, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (70474 /*Farastu*/, 71187 /*Wild Earth*/);
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=70493; -- Direhorn
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (70494 /*Pterrorwing*/, 71401 /*Proto-Drake Whelp*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=70544; -- Hekima the Wise
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=69208064 WHERE `entry`=70545; -- Mysterious Mushroom
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=70557; -- Zandalari Prophet
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=66304, `unit_flags2`=67110912 WHERE `entry`=70561; -- Assignment Map
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.2857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=70566; -- Drunken Wingrider
+UPDATE `creature_template` SET `npcflag`=65537, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=34816 WHERE `entry`=70585; -- Farmer's Journal
+UPDATE `creature_template` SET `speed_walk`=3.36, `speed_run`=1.2, `BaseAttackTime`=1904, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=70587; -- Shale Stalker
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.4960314, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70589; -- Cavern Burrower
+UPDATE `creature_template` SET `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70591; -- Mighty Devilsaur
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=70594; -- Mist Lurker
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1.190476, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912, `VehicleId`=2785 WHERE `entry`=70597; -- Roasting Spit
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=547 WHERE `entry`=70605; -- Grit
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048, `VehicleId`=2820 WHERE `entry`=70628; -- Quilen Statue Mount Bunny
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry`=70633; -- Invisible Stalker [DO NOT LOCALIZE]
+UPDATE `creature_template` SET `BaseAttackTime`=1562, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70643; -- Big Blossom Digger
+UPDATE `creature_template` SET `speed_walk`=1.4, `speed_run`=0.5, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry`=70656; -- Nibbleh
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=5.25 WHERE `entry`=70659; -- Hexos
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=0.4, `speed_run`=0.1428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=69208064 WHERE `entry`=70662; -- Detonator
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2099200 WHERE `entry` IN (70663 /*Embercore*/, 70702 /*Flame Hound*/, 71030 /*Overseer Elaglo*/, 71384 /*Honor's Stand Caravan Leader*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2099200 WHERE `entry`=70665; -- Kor'kron Dire Soldier
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=69208064 WHERE `entry`=70672; -- Bomb
+UPDATE `creature_template` SET `BaseAttackTime`=1550, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=70682; -- Thunderhoof Supply Kodo
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2833 WHERE `entry`=70684; -- Frostmane Mauler
+UPDATE `creature_template` SET `speed_walk`=1.111112, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=70703; -- Core Spider
+UPDATE `creature_template` SET `BaseAttackTime`=1538, `RangeAttackTime`=2000, `unit_flags`=537133888, `unit_flags2`=2049 WHERE `entry`=70706; -- Trillium-Bladed Rock Cutter
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (70708 /*Cabalist Doombrow*/, 70709 /*Pyromancer Flamehearth*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=67110912 WHERE `entry` IN (70734 /*Exit Chamber [DNT]*/, 70981 /*Rope Anchor*/, 71171 /*Rope Anchor*/, 71194 /*Rope Anchor*/, 71196 /*Rope Anchor*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=3 WHERE `entry`=70740; -- Blingtron 3000
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=1550, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70741; -- Hamfisted Bruiser
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67160064 WHERE `entry`=70743; -- Gnomish Tesla Coil
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70749; -- Ro-Shambo
+UPDATE `creature_template` SET `npcflag`=131, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70752; -- Card Trader Leila
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=1073743872 WHERE `entry` IN (70762 /*Lieutenant Sparklighter*/, 70963 /*Lieutenant Fizzel*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `unit_flags`=33570816 WHERE `entry`=34935; -- Horde Gunship Cannon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=69208064 WHERE `entry` IN (70791 /*Book Artifact*/, 70792 /*Scroll Artifact*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70794; -- Blind Hero
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=70798; -- Kor'kron Emberguard
+UPDATE `creature_template` SET `npcflag`=2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587712, `unit_flags2`=2048 WHERE `entry`=70799; -- King Varian Wrynn
+UPDATE `creature_template` SET `speed_walk`=1.555556, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=70822; -- Earthborn Hatred
+UPDATE `creature_template` SET `speed_walk`=1.555556, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768 WHERE `entry`=70824; -- Fiery Anger
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `HoverHeight`=1.5 WHERE `entry`=70877; -- Volatile Earth
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=34816 WHERE `entry`=70889; -- Explosives Stash Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=1073743872, `VehicleId`=2845 WHERE `entry`=70893; -- Lieutenant Blasthammer
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=69208064 WHERE `entry` IN (70901 /*Supply Crates*/, 71031 /*Proto-Drake Eggs*/, 71032 /*Pandaria Artifacts*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry`=70956; -- Grizzle Gearslip
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=1073743872 WHERE `entry`=70959; -- Urtharges the Destroyer
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.4, `speed_run`=0.1428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67143680 WHERE `entry`=70976; -- Lorewalker Cho's Dream Brew
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=18432 WHERE `entry`=70978; -- Vol'jin
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2147647744, `unit_flags2`=34816 WHERE `entry`=71027; -- Amber Kearnen
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry` IN (71049 /*Orc Peon*/, 71050 /*Alliance Peasant*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=17152, `unit_flags2`=67110912 WHERE `entry`=71054; -- Barrel of Oranges
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2855 WHERE `entry`=71056; -- Battle Worg
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2147647744, `unit_flags2`=34816 WHERE `entry`=71057; -- Sully "The Pickle" McLeary
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587968, `unit_flags2`=2048, `VehicleId`=2859 WHERE `entry`=71061; -- Cloaking Chicken
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=71082; -- Grandpa Grumplefloot
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.1428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=67143680, `VehicleId`=2860 WHERE `entry`=71086; -- Razorgrin Vehicle
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.4285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=71095; -- Reflection of Lei Shi
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry`=71097; -- Ragefire Peon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=168 WHERE `entry`=71103; -- Laz Madwire
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2861 WHERE `entry`=71116; -- Kor'kron Battlewolf
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2097152, `VehicleId`=2862 WHERE `entry`=71119; -- Barrens Caravan
+UPDATE `creature_template` SET `speed_walk`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (71122 /*Barrens Caravan Kodo*/, 71235 /*Barrens Caravan Driver*/, 71451 /*Barrens Caravan Guard*/);
+UPDATE `creature_template` SET `speed_walk`=0.8888, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=71123; -- Echo of Y'Shaarj
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912 WHERE `entry`=71134; -- Pile of Gold
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=0.4, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=71140; -- Halfhill Kid
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2867 WHERE `entry`=71167; -- Transport Cannon
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=71305216, `VehicleId`=2869 WHERE `entry`=71174; -- Mantid Bomb
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=69208064 WHERE `entry` IN (71175 /*Pool Pony*/, 71176 /*Cannon Balls*/, 71195 /*Battery*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048, `VehicleId`=2894 WHERE `entry`=71177; -- Malkorok
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=71178; -- General Nazgrim
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=71179; -- Warlord Zaela
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=71180; -- Riko
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=0.4, `speed_run`=0.1428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=69208064 WHERE `entry`=71197; -- Broken Proto-Drake Egg
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=69208064 WHERE `entry` IN (71203 /*Supply Crates*/, 71208 /*Proto-Drake Eggs*/, 71209 /*Pandaria Artifacts*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33600, `unit_flags2`=2048, `HoverHeight`=1.5 WHERE `entry`=71206; -- Dragonmaw Proto-Drake
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2048, `HoverHeight`=1.25 WHERE `entry`=71211; -- Barrens Rock
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912 WHERE `entry`=71221; -- Mantid Bomb Throw Target
+UPDATE `creature_template` SET `npcflag`=4224, `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=18432 WHERE `entry`=71226; -- Ravika
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=256, `unit_flags2`=2099200 WHERE `entry`=71246; -- Norushen
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2129920, `unit_flags2`=2099328 WHERE `entry`=71252; -- Commander To'karg
+UPDATE `creature_template` SET `speed_walk`=0.3, `speed_run`=0.3428572, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (71253 /*Commander Knucklecrusher*/, 71257 /*Wavebinder Se'sha*/);
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67635200 WHERE `entry`=71268; -- Cursed Pirate
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912, `HoverHeight`=3 WHERE `entry`=71274; -- Kor'kron Supply Lines
+UPDATE `creature_template` SET `speed_run`=1.488094, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=71277; -- Summit Guster
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587200, `unit_flags2`=67584, `VehicleId`=2872 WHERE `entry`=71286; -- Turtle Jetski Stalker
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=67584 WHERE `entry` IN (71287 /*Turtle Jetski*/, 71294 /*Turtle Jetski*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=17152, `unit_flags2`=1073809408 WHERE `entry`=71289; -- Sea Turtle Rider
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2400, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480, `VehicleId`=2874 WHERE `entry`=71297; -- Tamed Bladetalon
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=18432 WHERE `entry`=71333; -- Ki'ta Arrowtusk
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67667968 WHERE `entry`=71341; -- Caravan Crate
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2097152 WHERE `entry`=71347; -- Pack Mule
+UPDATE `creature_template` SET `speed_walk`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2097152 WHERE `entry`=71348; -- Pack Kodo
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=71355; -- Zen'tabra
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry`=71358; -- Crafty the Ambitious
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33587968, `unit_flags2`=67110912 WHERE `entry`=71359; -- The Big One 4000
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=1073743872, `VehicleId`=2883 WHERE `entry`=71371; -- Alliance Caravan
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=67110912 WHERE `entry`=71372; -- Caravan Placeholder Bunny
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=33556480 WHERE `entry` IN (71373 /*Darkspear Captive*/, 71374 /*Darkspear Captive*/, 71375 /*Darkspear Captive*/, 71377 /*Darkspear Captive*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=2147614736, `unit_flags2`=67110912 WHERE `entry`=71389; -- Project C4T Controller
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048, `VehicleId`=2892 WHERE `entry`=71457; -- Honor's Stand Gyrocopter
+UPDATE `creature_template` SET `BaseAttackTime`=1923, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=71589; -- Big Blossom Digger
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33554432, `unit_flags2`=33556480, `VehicleId`=2906 WHERE `entry`=71683; -- Golden Lotus
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33554432, `unit_flags2`=33622016, `VehicleId`=2907 WHERE `entry`=71684; -- Golden Lotus
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33554432, `unit_flags2`=33556480, `VehicleId`=2908 WHERE `entry`=71686; -- Golden Lotus
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33554432, `unit_flags2`=33622016, `VehicleId`=2909 WHERE `entry`=71711; -- Golden Lotus
+UPDATE `creature_template` SET `unit_flags`=570721024, `unit_flags2`=2049 WHERE `entry` IN (71718 /*Big Blossom Digger*/, 56315 /*Jinyu Captive*/, 39138 /*Theramore Highway Guard*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1818, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200, `HoverHeight`=18 WHERE `entry`=71820; -- Xuen
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (71823 /*Nice Sprite*/, 73018 /*Spectral Brewmaster*/, 73021 /*Spectral Windwalker*/, 73025 /*Spectral Mistweaver*/, 74003 /*Luna the Beauty*/, 58783 /*Scarlet Initiate*/, 58939 /*7th Fleet Squallshaper*/, 59467 /*Candlestick Mage*/, 59595 /*Theramore Faithful*/, 59596 /*Theramore Arcanist*/, 59654 /*Knight of Theramore*/, 60852 /*Korga Strongmane*/, 67333 /*Dawnguard Bloodknight*/, 67674 /*Amariel Sunsworn*/, 67762 /*Ironforge Cabalist*/, 68639 /*Bloodhilt Battlemage*/, 68983 /*Gnomeregan Field Medic*/, 69004 /*Lion's Faithful*/, 69005 /*Lion's Arcanist*/, 69006 /*Lion's Vindicator*/, 69007 /*A.C.E. Medic*/, 69008 /*A.C.E. Beamgunner*/, 69009 /*A.C.E. Saboteur*/, 69254 /*Spiritbinder Cha'lat*/, 69281 /*Zandalari Arcanital*/, 69285 /*Zandalari Spiritweaver*/, 70000 /*Al'tabim the All-Seeing*/, 70253 /*Dawnseeker Guardian*/, 70468 /*Bonechiller Barafu*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (71864 /*Spelurk*/, 71908 /*Skunky Brew Alemental*/, 54130 /*Amberleaf Scamp*/, 54131 /*Fe-Feng Hozen*/, 54133 /*Mottled Rabbit*/, 54134 /*Mossback Toad*/, 72095 /*Fishgorged Crane*/, 72275 /*Black Bengal Goat*/, 72279 /*Vestige of Pride*/, 72280 /*Manifestation of Pride*/, 72481 /*Orgrimmar Refugee*/, 54586 /*Huojin Trainee*/, 54587 /*Tushui Trainee*/, 54611 /*Jaomin Ro*/, 72568 /*Kor'kron Overseer*/, 72570 /*Kor'kron Guard*/, 72572 /*Kor'kron Dark Shaman*/, 72593 /*Troll Worker*/, 72658 /*Amalgamated Hubris*/, 72763 /*Great Turtle Hatchling*/, 72777 /*Gulp Frog*/, 72842 /*Ironfur Herdling*/, 72843 /*Ironfur Grazer*/, 72875 /*Ordon Candlekeeper*/, 72892 /*Ordon Oathguard*/, 54976 /*Barbed Ray*/, 72908 /*Spotted Swarmer*/, 55015 /*Whitefeather Crane*/, 55019 /*Tushui Monk*/, 55022 /*Steam Fiend*/, 72990 /*Whitefeather*/, 73023 /*Moori*/, 73125 /*Displaced Orc Commoner*/, 73343 /*Celestial Guard*/, 73361 /*Tushui Sentry*/, 55483 /*Plump Virmen*/, 55504 /*Plump Carrotcruncher*/, 55506 /*Raggis*/, 55601 /*Fe-Feng Wiseman*/, 55633 /*Fe-Feng Firethief*/, 55634 /*Ruk-Ruk*/, 55640 /*Thornbranch Scamp*/, 73650 /*Han Stormstout*/, 73718 /*Southsea Lookout*/, 55946 /*Pei-Wu Tiger*/, 56172 /*Ash Moth*/, 56174 /*Pei-Wu Tiger Cub*/, 56241 /*Dai-Lo Farmer*/, 56274 /*Guardian of the Elders*/, 56362 /*Skyseeker Sailor*/, 56419 /*Jojo Ironbrow*/, 57132 /*Wu-Song Villager*/, 57164 /*Fe-Feng Leaper*/, 57205 /*Fe-Feng Hozen*/, 57317 /*Skyseeker Sailor*/, 57419 /*Morning Breeze Villager*/, 57465 /*Fe-Feng Ruffian*/, 57466 /*Fe-Feng Firethief*/, 57797 /*Corsac Fox*/, 58612 /*Theramore Footman*/, 58877 /*Sea Wolf Marine*/, 58878 /*Sergeant Brond*/, 58913 /*Theramore Officer*/, 58929 /*7th Fleet Marine*/, 59501 /*Reanimated Corpse*/, 60012 /*Imprisoned Grummle*/, 60411 /*Water Pincer*/, 60554 /*Escaped Horde Crewman*/, 60854 /*Escaped Horde Crewman*/, 60889 /*Delora Lionheart*/, 60890 /*Skyseeker Sailor*/, 60891 /*Escaped Horde Crewman*/, 60915 /*Mossback Toad*/, 61801 /*Amberleaf Troublemaker*/, 62098 /*Ji Firepaw*/, 63584 /*Corrupted Crane*/, 64440 /*Softshell Turtle*/, 64505 /*Ji Firepaw*/, 64506 /*Aysa Cloudsinger*/, 65035 /*Summer Lily*/, 65037 /*Treeshaper Shu*/, 65039 /*Eng Dirtplow*/, 65042 /*Shun the Serene*/, 65044 /*Gan Darkcask*/, 65045 /*Gao Longwagon*/, 65055 /*Hanshi One-Eye*/, 65056 /*Longbeard the Liar*/, 65057 /*Fan Slowplow*/, 65062 /*Shao-Li Ironbelly*/, 65067 /*Steepmaster Tira*/, 65073 /*Naira Watergarden*/, 65075 /*Hyacinth*/, 65077 /*Groundskeeper Amalia*/, 65080 /*Chi Master Lim*/, 65081 /*Master Cranewing*/, 65083 /*Foolish Chao*/, 65084 /*Crimson Butterfly*/, 65085 /*Jin*/, 65086 /*Da Na*/, 65088 /*Groundskeeper Shen*/, 65089 /*Old Yang*/, 65093 /*Seeress Weng Wu*/, 65094 /*Priestess of the Dawn*/, 65414 /*Ethereal Sha*/, 65468 /*Tushui Monk*/, 65470 /*Huojin Trainee*/, 65471 /*Tushui Trainee*/, 65472 /*Wu-Song Villager*/, 65473 /*Dai-Lo Farmer*/, 65545 /*Huojin Monk*/, 65581 /*Essence of Hate*/, 65742 /*Escaped Horde Crewman*/, 66691 /*Azrael*/, 66692 /*Samus*/, 67419 /*Gnomeregan Grenadier*/, 67574 /*Korune Guardian*/, 67585 /*Kor'kron Marine*/, 67669 /*Nargut*/, 67670 /*Rhukah*/, 67811 /*Lion's Footman*/, 67907 /*Goob*/, 68997 /*General Nazgrim*/, 69838 /*Arcanis Mechanica*/, 69840 /*Sunreaver Lieutenant*/, 69997 /*Progenitus*/, 69999 /*God-Hulk Ramuk*/, 70327 /*Stone Watcher*/, 70328 /*Zandalari Venomblade*/, 70402 /*Ashen Weaver*/, 70403 /*Darkeye Raven*/, 70984 /*Vol'jin Loyalist*/, 71312 /*Alliance Deckhand*/, 53704 /*Corsac Fox*/, 53705 /*Pangolin*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048, `HoverHeight`=4 WHERE `entry`=71907; -- Skunked Keg
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry` IN (71919 /*Zhu-Gon the Sour*/, 56870 /*Master Snowdrift*/);
+UPDATE `creature_template` SET `npcflag`=8192, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (71939 /*Chi-Ro the Skytamer*/, 71940 /*Michi Windblossom*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (71946 /*Manifestation of Pride*/, 72172 /*Reflection*/, 72764 /*Great Turtle*/, 72791 /*Lingering Corruption*/, 72841 /*Death Adder*/, 72888 /*Molten Guardian*/, 72895 /*Burning Berserker*/, 72896 /*Eternal Kilnmaster*/, 72898 /*High Priest of Ordos*/, 73158 /*Emerald Gander*/, 73161 /*Great Turtle Furyshell*/, 73163 /*Imperial Python*/, 73169 /*Jakur of Ordon*/, 73171 /*Champion of the Black Flame*/, 73172 /*Flintlord Gairan*/, 73173 /*Urdur the Cauterizer*/, 73174 /*Archiereus of Flame*/, 73175 /*Cinderfall*/, 55650 /*Shang Xi's Hot Air Balloon*/, 73666 /*Archiereus of Flame*/, 55786 /*Zhao-Ren*/, 56906 /*Saboteur Kip'tilak*/, 58840 /*Hedric Evencane*/, 58936 /*Lieutenant Granders*/, 59088 /*Captain Tellern*/, 59089 /*Captain Dashing*/, 59503 /*Brittle Skeleton*/, 61707 /*Abomination of Anger*/, 61766 /*Crypt Guardian*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=4196352 WHERE `entry` IN (71952 /*Chi-Ji*/, 71953 /*Xuen*/, 71954 /*Niuzao*/, 71955 /*Yu'lon*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=256, `unit_flags2`=2099200 WHERE `entry`=71965; -- Norushen
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=2048 WHERE `entry` IN (71986 /*Cove Shark*/, 55292 /*Fang-she*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (71987 /*Spectral Pirate*/, 58934 /*7th Fleet Sailor*/, 59317 /*Theramore Marksman*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry` IN (71988 /*Spectral Campfire*/, 73919 /*Apple Bucket*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=2048 WHERE `entry` IN (72005 /*Oriana*/, 72553 /*Ureda of the Black Flame*/, 73820 /*Emily Cole*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (72006 /*Allie*/, 54785 /*Min Dimwind*/, 54855 /*Min Dimwind*/, 72779 /*Taran Zhu*/, 73503 /*Chi-Chi, Hatchling of Chi-Ji*/, 73505 /*Xu-Fu, Cub of Xuen*/, 73506 /*Zao, Calfling of Niuzao*/, 73507 /*Yu'la, Broodling of Yu'lon*/, 73811 /*Big Blossom Digger*/, 56236 /*Injured Sailor*/, 56393 /*Excited Onlooker*/, 56394 /*Mesmerized Child*/, 56663 /*Ji Firepaw*/, 57258 /*Field Yak*/, 57414 /*Temple Guard*/, 57420 /*Ten Bitterrage*/, 57624 /*Yu Sugargale*/, 57709 /*Nourished Yak*/, 57712 /*Delivery Cart Tender*/, 57743 /*Nourished Yak*/, 57748 /*Instructor Qun*/, 57853 /*Big Bertha*/, 59499 /*Nourished Yak*/, 59960 /*Ji Firepaw*/, 59962 /*Aysa Cloudsinger*/, 59963 /*Jojo Ironbrow*/, 60176 /*Huojin Monk*/, 60183 /*Trainee Nim*/, 60244 /*Trainee Guang*/, 60245 /*Brewer Zhen*/, 60248 /*Chia-hui Autumnleaf*/, 60253 /*Brewer Lin*/, 60259 /*Kong*/, 60260 /*Jie*/, 60454 /*Vision of Shu*/, 60457 /*Vision of Young Liang*/, 60893 /*Aysa Cloudsinger*/, 60897 /*Injured Sailor*/, 60898 /*Injured Horde Crewman*/, 60917 /*Huo*/, 60918 /*Shu*/, 60919 /*Wugou*/, 60920 /*Dafeng*/, 61077 /*Wayward Lamb*/, 61411 /*Instructor Zhi*/, 63640 /*Golden Lotus Captive*/, 63654 /*Golden Lotus Captive*/, 64875 /*Lorewalker Amai*/, 64876 /*Lorewalker Ruolin*/, 64877 /*Tingting*/, 64878 /*Young Student*/, 64879 /*Yin*/, 64880 /*Nan*/, 64881 /*Hao*/, 64885 /*Lorewalker Zan*/, 65102 /*Dafeng*/, 65105 /*Shu*/, 65107 /*Huo*/, 65146 /*Zach Chow*/, 65147 /*Azunyan*/, 65467 /*Excited Onlooker*/, 65469 /*Aspiring Trainee*/, 65493 /*Shu*/, 65550 /*Tushui Monk*/, 65560 /*Vision of Dafeng*/, 66438 /*Firetooth*/, 66439 /*Flameclaw*/, 66966 /*Blaze*/, 67260 /*Boss Bazzelflange*/, 70220 /*Kirin Tor Captive*/, 70321 /*Tenwu of the Red Smoke*/, 53565 /*Aspiring Trainee*/);
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (72007 /*Master Kukuru*/, 73010 /*Brother Rabbitsfoot*/, 71621 /*Lok'nor Bloodfist*/, 71622 /*Acon Deathwielder*/);
+UPDATE `creature_template` SET `unit_flags2`=138414080 WHERE `entry`=54097; -- Alysrazor
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry`=72017; -- Shadow Prison
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=37783552 WHERE `entry`=72020; -- Jadefire Wall
+UPDATE `creature_template` SET `BaseAttackTime`=1200, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=67141632, `unit_flags2`=2048 WHERE `entry`=72049; -- Cranegnasher
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (54135 /*Master Li Fei*/, 72392 /*Vol'jin*/, 54567 /*Aysa Cloudsinger*/, 54568 /*Ji Firepaw*/, 54786 /*Master Shang Xi*/, 54975 /*Aysa Cloudsinger*/, 55020 /*Old Man Liang*/, 55477 /*Ji Firepaw*/, 55583 /*Ji Firepaw*/, 55672 /*Master Shang Xi*/, 55944 /*Delora Lionheart*/, 56013 /*Spirit of Master Shang Xi*/, 61636 /*Trial Master Rotun*/, 67542 /*Grizzle Gearslip*/, 67562 /*Duke*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=4196352 WHERE `entry`=72057; -- Ordos
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=34816 WHERE `entry`=72151; -- Fin Longpaw
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=1048576 WHERE `entry` IN (72218 /*Oto the Protector*/, 72219 /*Ki the Assassin*/, 72220 /*Sooli the Survivalist*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=1048576 WHERE `entry`=72221; -- Kavan the Arcanist
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (54323 /*Kirix*/, 8983 /*Golem Lord Argelmach*/, 9016 /*Bael'Gar*/, 9017 /*Lord Incendius*/, 9041 /*Warder Stilgiss*/, 9042 /*Verek*/, 9156 /*Ambassador Flamelash*/, 10184 /*Onyxia*/, 11262 /*Onyxian Whelp*/, 12129 /*Onyxian Warder*/, 53093 /*Flamewaker Shaman*/, 53245 /*Fire Hawk*/, 53269 /*Fall Recovery Secondary Controller*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (72245 /*Zesqua*/, 72897 /*Blazebound Chanter*/, 73170 /*Watcher Osu*/, 58633 /*Instructor Chillheart*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33600 WHERE `entry`=72283; -- Scribe Wei Wu
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000 WHERE `entry` IN (72336 /*Small Illusionary Ripper*/, 72337 /*Large Illusionary Ripper*/, 72340 /*Small Illusionary Conqueror*/, 72341 /*Large Illusionary Conqueror*/, 72343 /*Large Illusionary Hive-Singer*/, 72386 /*Small Illusionary Tunneler*/, 72387 /*Large Illusionary Tunneler*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry` IN (72338 /*Small Illusionary Flamecaller*/, 72339 /*Large Illusionary Flamecaller*/, 72342 /*Small Illusionary Hive-Singer*/, 71064 /*Large Illusionary Guardian*/, 71068 /*Large Illusionary Amber-Weaver*/, 71077 /*Small Illusionary Amber-Weaver*/, 71079 /*Small Illusionary Guardian*/, 71414 /*Large Illusionary Banana-Tosser*/, 71415 /*Small Illusionary Banana-Tosser*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000 WHERE `entry` IN (72344 /*Small Illusionary Aqualyte*/, 72346 /*Large Illusionary Aqualyte*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (72366 /*Darkspear Headhunter*/, 72376 /*Thunder Bluff Warrior*/, 72501 /*Kor'kron Guard*/, 72556 /*Orc Child*/, 72558 /*Orgrimmar Refugee*/, 72559 /*Thunder Bluff Warrior*/, 72989 /*Hawkmaster Nurong*/, 72992 /*Tenwu of the Red Smoke*/, 72994 /*Protector Yi*/, 72995 /*Chao the Voice*/, 73001 /*Ling of the Six Pools*/, 73002 /*Master Snowdrift*/, 73008 /*Sam the Wise*/, 73016 /*Kang Bramblestaff*/, 73017 /*Clever Ashyo*/, 73019 /*Ken-Ken*/, 73020 /*Lin Tenderpaw*/, 73022 /*Lyalia*/, 73037 /*Farmer Yoon*/, 73038 /*Gina Mudclaw*/, 73040 /*Tina Mudclaw*/, 73041 /*Sho*/, 73043 /*Chee Chee*/, 73044 /*Ella*/, 73046 /*Old Hillpaw*/, 73049 /*Fish Fellreed*/, 73053 /*Nana Mudclaw*/, 73135 /*Fo Sho Knucklebump*/, 73338 /*The Monkey King*/, 73340 /*Riko*/, 73347 /*Captain Huan*/, 73362 /*Huojin Sentry*/, 73385 /*Sentry Laofung*/, 73386 /*Sentry Jienfo*/, 73433 /*Warden Chadrik*/, 73434 /*Watcher Megana*/, 73632 /*Cowardly Zue*/, 56112 /*Kang Bramblestaff*/, 67267 /*Brawl'gar Arena Grunt*/, 68808 /*Nairi the Strong*/, 68998 /*Kromthar*/, 68999 /*Rivett Clutchpop*/, 69001 /*Shokia*/, 69002 /*Warlord Bloodhilt*/, 69252 /*Ranger Shalan*/, 70716 /*Libbiara Blightrunner*/, 70718 /*Helga Bonehewer*/, 70790 /*Kergil Sparkwrench*/, 71467 /*Duke Studlington*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33600, `unit_flags2`=2048 WHERE `entry`=72394; -- Baine Bloodhoof
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=2048 WHERE `entry` IN (72419 /*Horde Demolisher*/, 73083 /*Fledgling Chick*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (72426 /*Lin Chao-Wei*/, 56417 /*Aysa Cloudsinger*/, 56418 /*Ji Firepaw*/, 61539 /*Ku-Mo*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262144 WHERE `entry`=72431; -- Wounded Darkspear Headhunter
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (72515 /*Orgrimmar Peon*/, 57752 /*Quiet Lam*/, 57753 /*Ironfist Zhou*/, 59099 /*Fresh Test Subject*/, 59100 /*Expired Test Subject*/, 59649 /*Tushui Monk*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (54608 /*Master Shang Xi*/, 54609 /*Master Shang Xi*/, 54787 /*Huo*/, 55021 /*Jojo Ironbrow*/, 55478 /*Jojo Ironbrow*/, 55479 /*Gao Summerdraft*/, 55585 /*Jojo Ironbrow*/, 55586 /*Master Shang Xi*/, 55588 /*Elder Shaopai*/, 55940 /*Jojo Ironbrow*/, 55942 /*Ji Firepaw*/, 56012 /*Elder Shaopai*/, 56662 /*Aysa Cloudsinger*/, 57779 /*Huo*/, 60055 /*Makael Bay*/, 60570 /*Ji Firepaw*/, 67536 /*Sezik Steampot*/, 67608 /*Rivett Clutchpop*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (72536 /*Trial Master Rotun*/, 55556 /*Shu*/, 57720 /*Ji Firepaw*/, 57721 /*Aysa Cloudsinger*/, 57754 /*Instructor Mossthorn*/, 58870 /*Captain Drok*/, 64929 /*Lamplighter Deng*/, 64939 /*Lamplighter Sunny*/, 66690 /*Lamplighter Mu*/, 68767 /*Skizz Skuzzjock*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (72545 /*Mokvar the Treasurer*/, 72766 /*Ancient Spineclaw*/, 72767 /*Jademist Dancer*/, 72771 /*Damp Shambler*/, 72788 /*Sha-Infused Defender*/, 72807 /*Crag Stalker*/, 73329 /*Cave-In*/, 73573 /*Ashwing Moth*/, 73633 /*Sassy Seedling*/, 73648 /*Olon*/, 73828 /*Flamering Moth*/, 73829 /*Skywisp Moth*/, 56473 /*Flying Snow*/, 56484 /*Serpent's Spine Marksman*/, 56742 /*Serpent's Spine Defender*/, 56743 /*Serpent's Spine Defender*/, 56745 /*Serpent's Spine Trainee*/, 58198 /*Shado-Pan Disciple*/, 58782 /*Theramore Gryphon*/, 59741 /*Shado-Pan Guardian*/, 59750 /*Serpent's Spine Cannoneer*/, 59751 /*Shado-Pan Warden*/, 59752 /*Shado-Pan Ambusher*/, 64439 /*Long-Eared Mink*/, 64442 /*Emerald Singer*/, 64446 /*Training Dummy*/, 65537 /*Serpent's Spine Cannoneer*/, 67593 /*Arcane Sentry*/, 68403 /*Brawl Enthusiast*/, 68404 /*Brawl Enthusiast*/, 68990 /*Brawl Enthusiast*/, 68991 /*Brawl Enthusiast*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2223 WHERE `entry`=72546; -- Kor'kron Grunt
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912 WHERE `entry`=54635; -- Shrine of Air
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (72554 /*Mezlik*/, 73837 /*Pierre*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry`=72565; -- Blind Hatred
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (72584 /*Goblin Engineer*/, 65232 /*Krenk Choplimb*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry` IN (72588 /*Sha Cloud*/, 69087 /*Soul Jar*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (72619 /*Earthbreaker Haromm*/, 72620 /*Wavebinder Kardris*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (72655 /*Fragment of Pride*/, 72761 /*Windfeather Nestkeeper*/, 72762 /*Brilliant Windfeather*/, 71367 /*Horde Squallshaper*/, 71436 /*Admiral Hagman*/, 71445 /*Horde Captain*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (72661 /*Zeal*/, 72662 /*Vanity*/, 72663 /*Arrogance*/);
+UPDATE `creature_template` SET `npcflag`=32769, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=72676; -- Spirit Healer
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=72695; -- Wrathion
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=34816 WHERE `entry`=72723; -- Wrathion
+UPDATE `creature_template` SET `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=6293504 WHERE `entry`=72765; -- Elder Great Turtle
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry` IN (72769 /*Spirit of Jadefire*/, 72805 /*Primal Stalker*/, 72808 /*Tsavo'ka*/, 73166 /*Monstrous Spineclaw*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=1107298304 WHERE `entry`=72780; -- Ordo Stalker (Infinite)
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry` IN (72781 /*Blood Pool*/, 55123 /*Cursed Pool Transform Controller*/, 73487 /*Evermaw Time Locks*/, 73514 /*Devour*/, 56476 /*Injured Sailor Rescue Controller*/, 64553 /*"Lighting the Way" Kill Credit*/, 70406 /*Stasis Rune*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67108864 WHERE `entry`=72792; -- Sha Invisible Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=4196352 WHERE `entry` IN (72809 /*Eroded Cliffdweller*/, 56706 /*Krik'thik Bombardier*/, 56799 /*Krik'thik Bombadier*/, 56875 /*Krik'thik Demolisher*/, 56876 /*Krik'thik Sapper*/, 58824 /*Courtyard Defender*/, 58844 /*Panda Tar Tosser*/, 59778 /*Krik'thik Striker*/, 59794 /*Krik'thik Disruptor*/, 59820 /*Pandaren Cannoneer*/, 66905 /*Pandaren Cannoneer*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=2099200 WHERE `entry`=72844; -- Ironfur Great Bull
+UPDATE `creature_template` SET `npcflag`=643, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=54943; -- Merchant Lorvo
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (72870 /*Kairoz*/, 73570 /*Senior Historian Evelyna*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (72872 /*Lorewalker Cho*/, 73330 /*Lorewalker Cho*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=67141632, `unit_flags2`=4196352, `HoverHeight`=8 WHERE `entry`=72876; -- Crimsonscale Firestorm
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=67141632, `unit_flags2`=2048 WHERE `entry`=72877; -- Ashleaf Sprite
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570688320, `unit_flags2`=2049 WHERE `entry` IN (72886 /*Trillium-Bladed Rock Cutter*/, 70757 /*Pool of Blood*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (72894 /*Ordon Fire-Watcher*/, 59159 /*Pearlfin Mystic*/, 67604 /*Silvermoon Runeseeker*/, 67605 /*Silvermoon Runeseeker*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262144, `unit_flags2`=67110912, `VehicleId`=1749 WHERE `entry`=54993; -- Balance Pole
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry` IN (19177 /*Troll Commoner*/, 3399 /*Zamja*/, 24510 /*Driz Tumblequick*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=72939; -- Terga Earthbreaker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=35653632 WHERE `entry`=72973; -- General Purpose Bunny JMF (Look 2, Huge AOI)
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (72988 /*Taoshi*/, 69000 /*Shademaster Kiryn*/);
+UPDATE `creature_template` SET `npcflag`=641, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=72993; -- Lao-Chin the Iron Belly
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (72996 /*Snow Blossom*/, 72998 /*Yalia Sagewhisper*/, 73024 /*Magister Xintar*/, 67600 /*Dominance Medic*/);
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=72997; -- Fei Li
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262144, `unit_flags2`=67110912, `VehicleId`=1760 WHERE `entry`=55083; -- Balance Pole
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73000 /*Ban Bearheart*/, 73031 /*Li Li*/, 73045 /*Farmer Fung*/, 73048 /*Haohan Mudclaw*/, 73050 /*Gai Lan*/, 73052 /*Mung-Mung*/);
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=73003; -- Brewmaster Bo
+UPDATE `creature_template` SET `npcflag`=641, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73004 /*Brewmaster Blanche*/, 73007 /*Uncle Gao*/);
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (73005 /*Brewmaster Boof*/, 73649 /*Mama Stormstout*/);
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73006 /*Brewmaster Chani*/, 73047 /*Jogu the Drunk*/, 73618 /*Brewmaster Tzu*/, 73647 /*Sapmaster Vu*/, 65047 /*Yi*/, 65049 /*Er*/, 65050 /*San*/, 65052 /*Shi*/, 65053 /*Bai Hua*/, 65087 /*Trader Feng*/, 70713 /*Haxxil Drinkmeister*/, 70714 /*Harr Grayhide*/);
+UPDATE `creature_template` SET `npcflag`=641, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=73009; -- Brother Yakshoe
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=73015; -- Eli
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry` IN (73026 /*Admiral Taylor*/, 73028 /*Rivett Clutchpop*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry` IN (73027 /*Chief Kah Kah*/, 67580 /*Garrosh Hellscream*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (73029 /*Shokia*/, 73061 /*Anduin Wrynn*/, 73266 /*Warden Virgil*/, 73615 /*Historian Llore*/, 73616 /*Historian Ju'pa*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=73030; -- Chen Stormstout
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=3008 WHERE `entry`=73034; -- Hozen Swing
+UPDATE `creature_template` SET `npcflag`=145 WHERE `entry`=55143; -- Sally Fizzlefury
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=73066; -- Lorewalker Cho
+UPDATE `creature_template` SET `npcflag`=131, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=73082; -- Master Li
+UPDATE `creature_template` SET `npcflag`=66195 WHERE `entry`=55180; -- Shademaster Kiryn
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=55193; -- Slingtail Mudseer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432 WHERE `entry`=73124; -- Pressure Plate
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (73151 /*Deathguard Netharian*/, 73914 /*Brewmaster Tao*/);
+UPDATE `creature_template` SET `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=73160; -- Ironfur Steelhorn
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry` IN (73162 /*Foreboding Flame*/, 59614 /*Bored Student*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352, `HoverHeight`=12 WHERE `entry`=73167; -- Huolon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry` IN (73186 /*Leaking Beer*/, 73189 /*Skunky Suds*/, 56502 /*Panda Archer Target Gate Stalker*/, 56709 /*Flying Mantid Bombing Stalker*/, 56822 /*Boss 2 North Stalker*/, 56823 /*Boss 2 West Stalker*/, 56824 /*Boss 2 South Stalker*/, 56825 /*Boss 2 East Stalker*/, 56913 /*Boss 2 West/East Strafe Stalkers*/, 56926 /*Arc Lightning Stalker*/, 56932 /*Boss 2 North/South Strafe Stalkers*/, 58109 /*Mantid Infiltrator Rope Stalker*/, 58917 /*Book Spawn Target*/, 59375 /*Cosmetic Meat Pile*/, 59566 /*Tank Target*/, 59834 /*Boss 3 Encounter Add Generator*/, 59929 /*Ice Steps*/, 61638 /*Proving Grounds*/, 62731 /*Ice Wall*/, 63717 /*Shado-Pan Disciple*/, 64550 /*Ice Arrow Target*/, 65555 /*Bonfire Teleport Stalker*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry` IN (73191 /*Aqueous Defender*/, 73197 /*Lesser Sha Puddle*/, 73349 /*Tormented Initiate*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=69206016 WHERE `entry`=73192; -- Invisible Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768 WHERE `entry` IN (73222 /*Ooze Controller (Stalker)*/, 70483 /*Invisible Stalker*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=5244928 WHERE `entry`=73260; -- Lesser Contaminated Puddle
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (73267 /*Watcher Bianca*/, 73481 /*Weaver Belmaril*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (73277 /*Leafmender*/, 58777 /*Baldruc*/, 61247 /*Glintrok Greenhorn*/, 64564 /*Rhonin*/, 64565 /*Kalecgos*/, 67530 /*Joan Lorraine*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4194304, `VehicleId`=3024 WHERE `entry`=73279; -- Evermaw
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=4751360, `VehicleId`=3038 WHERE `entry`=73281; -- Dread Ship Vazuvius
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry`=73293; -- Whizzig
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=3021 WHERE `entry`=73295; -- Slimy
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166656, `unit_flags2`=2049 WHERE `entry`=73297; -- Fishgorged Crane
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=4196352 WHERE `entry`=73303; -- Emperor Shaohao
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (73305 /*Mistweaver Ai*/, 73306 /*Mistweaver Ku*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=73307; -- Speaker Gulan
+UPDATE `creature_template` SET `npcflag`=134217728, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=73326; -- Mystic Quillstar
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (73327 /*Furnisher Echoroot*/, 57617 /*Lee Sunspark*/, 57618 /*Jun Steelbreath*/, 57622 /*Lien-Hua Thunderhammer*/, 57623 /*Shen Stonecarver*/, 69977 /*Blood Guard Zar'shi*/, 69978 /*Sergeant Thunderhorn*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=73328; -- Nadaga Soulweaver
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=32768 WHERE `entry`=73333; -- Berserking
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=33587200 WHERE `entry`=73334; -- Proving Grounds
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=2147516416, `unit_flags2`=4196352 WHERE `entry`=73342; -- Fallen Pool Tender
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=73348; -- Watcher Lara
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=73353; -- Watcher Alundra
+UPDATE `creature_template` SET `npcflag`=1073741824, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (73368 /*Skywisp Moth*/, 73542 /*Ashwing Moth*/, 73543 /*Flamering Moth*/);
+UPDATE `creature_template` SET `npcflag`=2688, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73398 /*Sentry Mimao*/, 73399 /*Sentry "Big Belly" Fong*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048 WHERE `entry`=73400; -- Healing Ran Invisible Stalker DND
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73401 /*Sentry Yinli*/, 73403 /*Sentry Dondao*/, 73656 /*Crafter Kwon*/, 65091 /*Vu Blackbelly*/, 67672 /*Vasarin Redmorn*/, 69259 /*Lanesh the Steelweaver*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=73422; -- Miss Jadepaw
+UPDATE `creature_template` SET `unit_flags`=33280 WHERE `entry` IN (1756 /*Stormwind Royal Guard*/, 61385 /*Ash Viper*/, 69794 /*Electrified Razortooth*/);
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73435 /*Grimthorn Redbeard*/, 73812 /*Brother Noodle*/, 73813 /*Galu Wellspring*/, 73814 /*Noodle-Maker Monmon*/, 73815 /*Hearthminder Digao*/, 73816 /*Master Miantiao*/, 73817 /*Smiling Jade*/, 73819 /*Ku-Mo*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=295680, `unit_flags2`=2048 WHERE `entry` IN (55539 /*Wugou*/, 65104 /*Wugou*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=18432 WHERE `entry`=73484; -- Royal Bodyguard
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67108864 WHERE `entry`=73488; -- Invisible Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=33556480 WHERE `entry` IN (73489 /*General Purpose Bunny JMF (Ground, Slow)*/, 59316 /*Soulflame*/, 60106 /*Commander Durand*/, 60107 /*Dashing Strike Back Stalker*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry` IN (55592 /*Dafeng*/, 62092 /*Garrosh Hellscream*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2048 WHERE `entry`=55595; -- Aysa Cloudsinger
+UPDATE `creature_template` SET `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4194304, `VehicleId`=3031 WHERE `entry`=73531; -- Highwind Albatross
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry` IN (55632 /*Fe-Feng Ruffian*/, 56000 /*Escaped Horde Crewman*/, 56195 /*Escaped Horde Engineer*/, 58912 /*Slaughtered Footman*/, 58914 /*Slaughtered Officer*/, 60873 /*Skyseeker Sailor*/, 60874 /*Escaped Horde Crewman*/, 67587 /*Korune Warden*/, 70326 /*Stone Sentry*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2131968 WHERE `entry`=73557; -- Eerie Fog
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=2099200 WHERE `entry` IN (55665 /*Frightened Winds*/, 56004 /*Jade Forest Arrival Bunny*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=64, `unit_flags2`=2048 WHERE `entry`=73598; -- Lady Jaina Proudmoore
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=64, `unit_flags2`=2048 WHERE `entry`=73605; -- Lor'themar Theron
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=133120 WHERE `entry`=73613; -- Vazuvius Deckhand
+UPDATE `creature_template` SET `npcflag`=66177, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73622 /*Graceful Swan*/, 67668 /*Uda the Beast*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (73626 /*Little Tommy Newcomer*/, 66436 /*Grazzle the Great*/);
+UPDATE `creature_template` SET `npcflag`=67108865, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=73629; -- Hopswift
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=34816 WHERE `entry`=73639; -- Brie Loftis
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=73651; -- Big Dan Stormstout
+UPDATE `creature_template` SET `npcflag`=643, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=73657; -- Great Chef Woo
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (73674 /*Blizzix Sparkshiv*/, 74010 /*Nadina Stargem*/, 74012 /*Ki'agnuu*/, 74019 /*Tu'aho Pathcutter*/, 74020 /*Welbiz Cheerwhistle*/, 74021 /*Clarice Chapmann*/, 74022 /*Thelett Shaleheart*/, 74027 /*Lorry Warmheart*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=73691; -- Chromie
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2048 WHERE `entry` IN (73699 /*Tiny Bunny - GJC*/, 59811 /*Unstable Energy*/, 69446 /*Arcanital Ball of Energy*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73717 /*Nakaan*/, 74159 /*Swifty*/, 60033 /*Frenzied Spirit*/);
+UPDATE `creature_template` SET `unit_flags`=33024 WHERE `entry` IN (37937 /*Dark Iron Troublemaker*/, 61211 /*Tiger Temple Monk*/, 14881 /*Spider*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=832, `unit_flags2`=2048 WHERE `entry`=73818; -- Trillium-Bladed Rock Cutter
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280 WHERE `entry` IN (73821 /*Sentinel Ku-Yao*/, 61694 /*Sentinel Ku-Yao*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=67110912 WHERE `entry` IN (73823 /*Sky Lantern*/, 65607 /*Sha Spirit*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2131968, `VehicleId`=1887 WHERE `entry`=55918; -- Shang Xi's Hot Air Balloon
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=295680, `unit_flags2`=2048 WHERE `entry`=55943; -- Wei Palerage
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=4229120, `VehicleId`=3036 WHERE `entry`=73867; -- Surface
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=1 WHERE `entry` IN (55999 /*Injured Sailor*/, 67582 /*Dominance Knight*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=16384, `unit_flags2`=2048 WHERE `entry`=56007; -- Darkened Horror
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=2048 WHERE `entry` IN (56008 /*Darkened Terror*/, 60780 /*Deepscale Ravager*/, 60858 /*Deepscale Fleshripper*/);
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry` IN (56033 /*Woolly Sheep*/, 56683 /*Wild Stalker*/, 58116 /*Carp Hunter*/, 58431 /*Bulgeback Tortoise*/, 58755 /*Manglemaw's Mother*/, 23168 /*Or'kaos the Insane*/, 59084 /*Pearly Tortoise*/, 42594 /*Orgrimmar Thief*/, 63976 /*Krik'thik Needler*/, 67297 /*Shieldwall Rifleman*/, 69336 /*Guardian Tak'u*/, 70008 /*Primal Devilsaur*/);
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=38141; -- Docile Island Boar
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (56111 /*Lin Tenderpaw*/, 56115 /*Ken-Ken*/, 56309 /*Grookin Wildtail*/, 3400 /*Xen'to*/, 3405 /*Zeal'aya*/, 8404 /*Xan'tish*/, 45008 /*Batamsi*/, 45081 /*Makavu*/, 45082 /*Auctioneer Ziji*/, 45093 /*Huju*/, 45094 /*Jin'diza*/, 65599 /*H.A.R.V.E.Y.*/, 66022 /*Turtlemaster Odai*/, 30706 /*Jo'mah*/, 30723 /*Xantili*/, 67130 /*D.E.N.T.*/, 14942 /*Kartra Bloodsnarl*/);
+UPDATE `creature_template` SET `unit_flags2`=2048 WHERE `entry` IN (56113 /*Clever Ashyo*/, 64324 /*Anglers Fisherman*/);
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56132 /*Thunderfoot Pig*/, 58893 /*Sungraze Mushan*/, 6145 /*School of Fish*/, 61311 /*Niuzao Sentinel*/, 61354 /*Sik'thik Vess-Guard*/, 69183 /*Maturing Raptor*/, 70069 /*Shan'ze Animator*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=67143680 WHERE `entry` IN (56146 /*Barrow Bush*/, 56150 /*Hoe Tree*/, 56151 /*Plow Plant*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048, `VehicleId`=1830 WHERE `entry`=56147; -- Buried Wheelbarrow Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048, `VehicleId`=1832 WHERE `entry`=56152; -- Buried Rake Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048, `VehicleId`=1833 WHERE `entry`=56153; -- Buried Hoe Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048, `VehicleId`=1834 WHERE `entry`=56154; -- Buried Plow Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=32768 WHERE `entry` IN (74092 /*Huge Illusionary Slayer*/, 57873 /*Training Target*/, 62009 /*Shadows of Anger*/, 71062 /*Large Illusionary Slayer*/, 71067 /*Large Illusionary Varmint*/, 71069 /*Large Illusionary Mystic*/, 71076 /*Small Illusionary Mystic*/, 71078 /*Small Illusionary Varmint*/, 71080 /*Small Illusionary Slayer*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=1200, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=56203; -- Plump Marmot
+UPDATE `creature_template` SET `unit_flags`=537166080, `unit_flags2`=2049 WHERE `entry`=38300; -- Spitescale Wavethrasher
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=56264; -- Grookin Whomper
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2131968 WHERE `entry`=56339; -- General Nazgrim
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=34816 WHERE `entry`=56360; -- Deepscale Tormentor
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `VehicleId`=1884 WHERE `entry`=56395; -- Shado-Pan Novice
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=67143682 WHERE `entry`=56397; -- Position
+UPDATE `creature_template` SET `npcflag`=4227, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=56406; -- Rivett Clutchpop
+UPDATE `creature_template` SET `unit_flags`=33587456 WHERE `entry` IN (56462 /*Snagtooth Hooligan*/, 69238 /*Ancient Stone Conqueror*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=1890 WHERE `entry`=56472; -- Fragrant Lotus
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=1141377024 WHERE `entry`=56479; -- Legacy of Liu Lang
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry` IN (56501 /*Panda Archer Target Stalker*/, 60421 /*Flak Cannon Target Stalker*/, 63192 /*Cosmetic Client Stalker*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=67110914 WHERE `entry`=56505; -- Shado-pan Referee
+UPDATE `creature_template` SET `unit_flags`=33536 WHERE `entry` IN (2756 /*Chao-Ju*/, 5029 /*Jiming*/, 5034 /*Winwa*/, 59908 /*Jaluu the Generous*/, 62789 /*Omnia Mage*/, 63089 /*Shao-Tien Ritual Statue*/, 63090 /*Shao-Tien Ritual Statue*/, 67344 /*Swift Gray Wolf*/, 16868 /*Winsum*/, 16869 /*Jising*/);
+UPDATE `creature_template` SET `unit_flags`=8421376 WHERE `entry` IN (56526 /*Tawnyhide Fawn*/, 63494 /*Leechfingers*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2097152, `VehicleId`=1879 WHERE `entry`=56541; -- Master Snowdrift
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=18432 WHERE `entry`=56562; -- Anduin Wrynn
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=2099200, `VehicleId`=1902 WHERE `entry`=56589; -- Striker Ga'dok
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=69732352 WHERE `entry`=56622; -- Brazier
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=56636; -- Commander Ri'mok
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=71305216 WHERE `entry`=56676; -- Shen-zin Su
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688 WHERE `entry` IN (56678 /*Jade Staff*/, 71548 /*Swirl*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=35651584 WHERE `entry`=56719; -- Sha of Violence
+UPDATE `creature_template` SET `BaseAttackTime`=667, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56730; -- Fe-Feng Brewthief
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2050, `VehicleId`=1898 WHERE `entry`=56739; -- Hozen Hanging Bunny
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33088, `unit_flags2`=2099200 WHERE `entry`=56747; -- Gu Cloudstrike
+UPDATE `creature_template` SET `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=56754; -- Azure Serpent
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=33554432 WHERE `entry` IN (56763 /*Regenerating Sha*/, 56764 /*Consuming Sha*/, 56765 /*Destroying Sha*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33554432 WHERE `entry`=56766; -- Volatile Energy
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4196352 WHERE `entry` IN (56767 /*Shado-Pan Fire Archer*/, 64549 /*Shado-Pan Ice Archer*/);
+UPDATE `creature_template` SET `npcflag`=209 WHERE `entry`=56777; -- Ni Gentlepaw
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=2048, `VehicleId`=1909 WHERE `entry`=56869; -- Balance Pole Landing Bunny
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=6293504, `VehicleId`=1914 WHERE `entry`=56877; -- Raigonn
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=4196352, `VehicleId`=1910 WHERE `entry`=56879; -- Krik'thik Glider
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=4196352, `VehicleId`=1911 WHERE `entry`=56880; -- Krik'thik Glider
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (56884 /*Taran Zhu*/, 59153 /*Rattlegore*/, 59223 /*Brother Korloff*/, 61243 /*Gekkan*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=37748736 WHERE `entry` IN (56889 /*Serpent's Spine Defender*/, 65111 /*Serpent's Spine Defender*/, 65337 /*Serpent's Spine Defender*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=33556480 WHERE `entry` IN (56890 /*Krik'thik Infiltrator*/, 58202 /*Serpent's Spine Defender*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=6324224, `VehicleId`=1913 WHERE `entry`=56895; -- Weak Spot
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry`=21061; -- Enraged Fire Spirit
+UPDATE `creature_template` SET `npcflag`=16 WHERE `entry` IN (3175 /*Krunn*/, 64924 /*Guyo Crystalgear*/);
+UPDATE `creature_template` SET `dynamicflags`=0 WHERE `entry` IN (3225 /*Corrupted Mottled Boar*/, 23594 /*Grimtotem Destroyer*/, 25328 /*Shadowstalker Luther*/, 25797 /*Bloodmage Alkor*/, 62918 /*Goblin Recovery Drone*/, 28150 /*Destroyed Siege Tank*/, 65915 /*Strongarm Laborer*/, 66896 /*Strongarm Gyrocopter*/);
+UPDATE `creature_template` SET `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry`=21315; -- Ruul the Darkener
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (3404 /*Jandi*/, 44975 /*Old Umbehto*/, 9988 /*Xon'cha*/, 28067 /*Dark Iron Brewer*/, 28209 /*Mizli Crankwheel*/, 28210 /*Ognip Blastbolt*/);
+UPDATE `creature_template` SET `VehicleId`=154 WHERE `entry`=57285; -- General Purpose Pinpoint Bunny ZTO
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262144, `unit_flags2`=67110912, `VehicleId`=1749 WHERE `entry`=57431; -- Balance Pole
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2050, `VehicleId`=1937 WHERE `entry`=57464; -- Hozen Hanging Bunny
+UPDATE `creature_template` SET `npcflag`=66177, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=57619; -- Cheng Dawnscrive
+UPDATE `creature_template` SET `npcflag`=4225, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (57620 /*Whittler Dewei*/, 70319 /*Supplier Bao*/);
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=57621; -- Teamaster Ren
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262144, `unit_flags2`=67110914, `VehicleId`=1945 WHERE `entry`=57626; -- Exit Pole
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16896, `unit_flags2`=2048 WHERE `entry` IN (57710 /*Delivery Cart*/, 57741 /*Delivery Cart*/, 59497 /*Delivery Cart*/);
+UPDATE `creature_template` SET `unit_flags`=320, `unit_flags2`=2099200 WHERE `entry`=3977; -- High Inquisitor Whitemane
+UPDATE `creature_template` SET `unit_flags`=570687488, `unit_flags2`=2049 WHERE `entry`=4012; -- Pridewing Wyvern
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=1140852736 WHERE `entry`=57769; -- Shen-zin Su
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry`=22013; -- Eye of the Storm Emissary
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` IN (22015 /*Eye of the Storm Envoy*/, 15106 /*Frostwolf Envoy*/);
+UPDATE `creature_template` SET `unit_flags`=67108864 WHERE `entry`=22095; -- Infested Root-Walker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=536870912, `unit_flags2`=37750784 WHERE `entry`=58108; -- Krik'thik Infiltrator
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=37750784 WHERE `entry` IN (58146 /*Serpent's Spine Defender*/, 59800 /*Krik'thik Rager*/, 59801 /*Krik'thik Wind Shaper*/, 60502 /*Pandaren Disciple*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587200, `unit_flags2`=2048 WHERE `entry`=58201; -- Sha Manifestation
+UPDATE `creature_template` SET `unit_flags`=570720320, `unit_flags2`=2049 WHERE `entry`=4542; -- High Inquisitor Fairbanks
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=33536 WHERE `entry`=40437; -- Battered Brewer
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=33556481 WHERE `entry` IN (58412 /*Shao-Tien Marauder*/, 58460 /*Shao-Tien Soul-Render*/, 59146 /*Golden Lotus Archer*/, 59157 /*Granite Quilen*/, 63081 /*Shao-Tien Reclaimer*/, 64263 /*Shado-Pan Wallwatcher*/, 66860 /*Golden Lotus Warrior*/, 66861 /*Golden Lotus Warrior*/);
+UPDATE `creature_template` SET `VehicleId`=2007 WHERE `entry`=58438; -- Checkpoint
+UPDATE `creature_template` SET `HoverHeight`=1.2 WHERE `entry`=58457; -- Silkfeather Hawk
+UPDATE `creature_template` SET `unit_flags`=33587968 WHERE `entry` IN (58489 /*Wilderland Stag*/, 63934 /*Mistfall Villager*/, 63935 /*Mistfall Villager*/, 69771 /*Faded Image of Xuen*/, 69774 /*Faded Image of Chi-Ji*/, 69777 /*Faded Image of Niuzao*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1800, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=58555; -- Scarlet Fanatic
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=33556480 WHERE `entry`=58569; -- Scarlet Purifier
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (58590 /*Scarlet Zealot*/, 58803 /*Residual Hatred*/, 59193 /*Boneweaver*/, 61216 /*Glintrok Hexxer*/, 61239 /*Glintrok Oracle*/, 61339 /*Glintrok Oracle*/, 61340 /*Glintrok Hexxer*/, 61946 /*Harthak Stormcaller*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1700, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=58605; -- Scarlet Judicator
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048, `VehicleId`=2456 WHERE `entry`=58635; -- Antonidas' Self Help Guide to Standing in Fire
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33587200, `unit_flags2`=2099200, `VehicleId`=2020 WHERE `entry`=58662; -- Instructor Chillheart's Phylactery Vehicle
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33587264, `unit_flags2`=2129920 WHERE `entry`=58664; -- Instructor Chillheart's Phylactery
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (58665 /*Rig This Powder Barrel!*/, 58788 /*Unmanned Tank*/, 68884 /*Place Bombs Here!*/, 68885 /*Place Boomsticks Here!*/, 68886 /*Place Rockets Here!*/);
+UPDATE `creature_template` SET `unit_flags2`=34816 WHERE `entry`=58706; -- Gina Mudclaw
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (58722 /*Lilian Voss*/, 61387 /*Quilen Guardian*/, 61389 /*Kargesh Highguard*/, 61392 /*Harthak Flameseeker*/, 65402 /*Gurthan Swiftblade*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (58757 /*Scholomance Acolyte*/, 58823 /*Scholomance Neophyte*/, 67752 /*Korune Spellweaver*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry`=58765; -- Blastmaster Sparkfuse
+UPDATE `creature_template` SET `npcflag`=16777216 WHERE `entry` IN (58767 /*Pomfruit*/, 67648 /*Portal: Sparkrocket Outpost*/, 69292 /*Sunreaver Perimeter Ward*/);
+UPDATE `creature_template` SET `BaseAttackTime`=4000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=58787; -- Big Bessa
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537165824, `unit_flags2`=69208065 WHERE `entry`=58794; -- Slain Shado-Pan Defender
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (58807 /*Vestige of Hatred*/, 58810 /*Fragment of Hatred*/, 61240 /*Glintrok Skulker*/, 61242 /*Glintrok Ironhide*/, 61337 /*Glintrok Ironhide*/, 61338 /*Glintrok Skulker*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=526336 WHERE `entry`=58812; -- Hateful Essence
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=58816; -- Thalen Songweaver
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=526336 WHERE `entry`=58822; -- Risen Guard
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33088, `unit_flags2`=2099200, `VehicleId`=2024 WHERE `entry`=58875; -- Darkmaster Gandling
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=58919; -- Anji Autumnlight
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=58920; -- Kun Autumnlight
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570720256, `unit_flags2`=2099201 WHERE `entry`=59036; -- Slain Shado-pan Initiate
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (59058 /*Pearlkeeper Fujin*/, 67603 /*Fanlyr Silverthorn*/, 67673 /*Girana the Blooded*/, 67880 /*Blood Guard Gro'tash*/, 67984 /*Kethiel Sunlance*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry` IN (59080 /*Darkmaster Gandling*/, 59184 /*Jandice Barov*/, 59613 /*Professor Slate*/, 61398 /*Xin the Weaponmaster*/, 64560 /*Lady Jaina Proudmoore*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1538 WHERE `entry`=23305; -- Crazed Murkblood Foreman
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry` IN (59156 /*Mogu Effigy*/, 63065 /*Shao-Tien Mindbender*/, 63082 /*Paleblade Flesheater*/, 65840 /*Strongarm Airman*/, 65841 /*Strongarm Private*/, 65842 /*Strongarm Medic*/, 65905 /*Strongarm Lieutenant*/);
+UPDATE `creature_template` SET `unit_flags`=537166656, `unit_flags2`=2099201 WHERE `entry`=59158; -- Subjugated Serpent
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2048 WHERE `entry`=59167; -- Teleport Location
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=35653632 WHERE `entry`=59200; -- Lilian Voss
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2131968 WHERE `entry`=59220; -- Jandice Barov
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048, `HoverHeight`=6 WHERE `entry` IN (59227 /*Wander's Colossal Book of Shadow Puppets*/, 59230 /*The Anarchist Arcanist*/, 59707 /*The Anarchist Arcanist*/, 66240 /*Antonidas' Self Help Guide to Standing in Fire*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=69238784 WHERE `entry`=59304; -- Bone Pile
+UPDATE `creature_template` SET `unit_flags`=33587200 WHERE `entry` IN (59348 /*Pearlfin Villager*/, 59894 /*Brother Yakshoe*/, 62351 /*Salyin Warmonger*/, 70463 /*Frostmane Snowstalker*/);
+UPDATE `creature_template` SET `BaseAttackTime`=4000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2048, `VehicleId`=2097 WHERE `entry`=59359; -- Flesh Horror
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=163840 WHERE `entry` IN (59360 /*Meat Graft*/, 59980 /*Meat Graft*/, 59982 /*Meat Graft*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1905, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=59368; -- Krastinovian Carver
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` IN (23698 /*Drunken Brewfest Reveler*/, 25294 /*Nerub'ar Web Lord*/, 25748 /*Oil-covered Hawk*/, 62941 /*Right*/, 63517 /*The Spring Drifter*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=67110912 WHERE `entry`=59591; -- The Master's Flame
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=2048 WHERE `entry` IN (59626 /*Flame Spout*/, 60914 /*Water Spout Bunny*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=59642; -- Aysa Cloudsinger
+UPDATE `creature_template` SET `unit_flags`=537165824, `unit_flags2`=2099201 WHERE `entry`=59648; -- Valley Yak
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=33556480, `VehicleId`=2077 WHERE `entry`=59705; -- Scarlet Flamethrower
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2048 WHERE `entry`=59706; -- Fuel Tank
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=1077938176 WHERE `entry` IN (59721 /*Great Wall Explosion Target Stalker 2*/, 59723 /*Great Wall Explosion Caster Stalker*/, 63991 /*Great Wall Explosion Target Stalker 3*/, 63992 /*Great Wall Explosion Target Stalker 1*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (59722 /*Pile of Corpses*/, 66689 /*Mei Chele*/, 70617 /*Remains of Ajassa*/, 70618 /*The Golden Ram of Nahom*/, 70620 /*The Obsidian Peregrine*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=33556480 WHERE `entry` IN (59746 /*Scarlet Centurion*/, 61945 /*Gurthan Iron Maw*/, 61947 /*Kargesh Ribcrusher*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=59789; -- Thalnos the Soulrender
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4196352 WHERE `entry` IN (59792 /*Great Wall Bonfire Caster Stalker*/, 59793 /*Great Wall Bonfire Target Stalker 1*/, 59886 /*Great Wall Panda Archer Target Spawner*/, 59892 /*Krik'thik Invader*/, 63848 /*Great Wall Bonfire Target Stalker 2*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags2`=34816 WHERE `entry`=59808; -- Shado-Pan Stormbringer
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4196352, `VehicleId`=2085 WHERE `entry`=59819; -- Artillery
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=6324224, `VehicleId`=2087 WHERE `entry`=59836; -- Panda Seat
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=33556481 WHERE `entry`=59895; -- Shado-Pan Monk
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=4196352, `VehicleId`=2093 WHERE `entry`=59954; -- Krik'thik Glider
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=4196352, `VehicleId`=2095 WHERE `entry`=59955; -- Krik'thik Glider
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=18432, `VehicleId`=2109 WHERE `entry`=60008; -- Mok Mok
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `VehicleId`=2107 WHERE `entry`=60027; -- Prisoner Bindings
+UPDATE `creature_template` SET `BaseAttackTime`=2200, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2097152 WHERE `entry`=60040; -- Commander Durand
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (60042 /*Korga Strongmane*/, 69433 /*Magistrix Saia*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=131072, `unit_flags2`=2048 WHERE `entry`=60197; -- Training Dummy
+UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry` IN (6466 /*Gamon*/, 32623 /*Strand of the Ancients Portal*/);
+UPDATE `creature_template` SET `HoverHeight`=1.15 WHERE `entry`=60278; -- Sting Ray
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=71337984 WHERE `entry`=60415; -- Flak Cannon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry`=60571; -- Shang Xi's Hot Air Balloon
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4227072 WHERE `entry`=60694; -- Sage Liao
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537150208, `unit_flags2`=2049 WHERE `entry`=60722; -- Deepscale Tormentor
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768 WHERE `entry` IN (60770 /*Horde Druid*/, 60877 /*Alliance Priest*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33280 WHERE `entry` IN (60834 /*Horde Druid*/, 60878 /*Alliance Priest*/, 60895 /*Alliance Priest*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768 WHERE `entry`=60896; -- Horde Druid
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (25099 /*Jonathan Garrett*/, 66979 /*Stonebreaker Ruian*/);
+UPDATE `creature_template` SET `npcflag`=8193, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60952; -- Grookin Flapmaster
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=1073743872, `VehicleId`=2303 WHERE `entry`=61177; -- Raigonn
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=61213; -- Krik'thik Conscript
+UPDATE `creature_template` SET `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry`=25467; -- Bloodspore Harvester
+UPDATE `creature_template` SET `unit_flags`=512 WHERE `entry` IN (61369 /*Toad*/, 62115 /*Dung Beetle*/, 65323 /*Wild Jade Hatchling*/, 65324 /*Wild Golden Hatchling*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4720640 WHERE `entry`=61415; -- Giant Cave Bat
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry` IN (61431 /*Glintrok Scout*/, 61432 /*Glintrok Pillager*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33554496, `unit_flags2`=2131968 WHERE `entry`=61433; -- Animated Staff
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33088, `unit_flags2`=2097152 WHERE `entry`=61442; -- Kuai the Brute
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33088, `unit_flags2`=2097152 WHERE `entry`=61444; -- Ming the Cunning
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33088, `unit_flags2`=2097152 WHERE `entry`=61445; -- Haiyan the Unstoppable
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=33556480 WHERE `entry` IN (61447 /*Gurthan Scrapper*/, 61449 /*Harthak Adept*/, 61549 /*Gurthan Scrapper*/, 61550 /*Harthak Adept*/, 61551 /*Kargesh Grunt*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33554496, `unit_flags2`=2099200 WHERE `entry`=61451; -- Animated Axe
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570720256, `unit_flags2`=2049 WHERE `entry` IN (61532 /*Dead Inkgill Spearman*/, 67814 /*Bloodhilt Grunt*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=570720256, `unit_flags2`=2049 WHERE `entry`=61533; -- Dead Inkgill Priest
+UPDATE `creature_template` SET `unit_flags2`=67110913 WHERE `entry`=61535; -- Hozen Corpse
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry` IN (61565 /*Quilen Statue*/, 67421 /*Cordfellow Hack*/, 70324 /*Stone Sentinel*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048, `VehicleId`=2198 WHERE `entry`=61605; -- Jinyu Raft
+UPDATE `creature_template` SET `BaseAttackTime`=5000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33554496, `unit_flags2`=2099200 WHERE `entry`=61679; -- Crossbow
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=2046 WHERE `entry`=61874; -- Tuffi
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33600, `unit_flags2`=2099200 WHERE `entry`=61884; -- Xin the Weaponmaster
+UPDATE `creature_template` SET `unit_flags`=570720256, `unit_flags2`=2049 WHERE `entry`=61981; -- Dreadspinner Tender
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=4196352 WHERE `entry` IN (62097 /*Frozengore*/, 62100 /*Gadoon*/, 62102 /*Oggax*/);
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=2099201 WHERE `entry`=62128; -- Kor'thik Fleetwing
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=62159; -- Ji Firepaw
+UPDATE `creature_template` SET `VehicleId`=25 WHERE `entry`=62167; -- General Purpose Bunny ZTO
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=62236; -- Ban Bearheart
+UPDATE `creature_template` SET `unit_flags2`=32 WHERE `entry`=44614; -- Training Dummy
+UPDATE `creature_template` SET `unit_flags`=33587520 WHERE `entry`=8905; -- Warbringer Construct
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=8923; -- Panzor the Invincible
+UPDATE `creature_template` SET `npcflag`=82 WHERE `entry`=44919; -- Maztha
+UPDATE `creature_template` SET `npcflag`=65539 WHERE `entry` IN (62996 /*Madam Vee Luo*/, 64149 /*Matron Vi Vinh*/);
+UPDATE `creature_template` SET `npcflag`=179 WHERE `entry` IN (63061 /*Narzak*/, 63086 /*Matty*/, 63626 /*Varzok*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=63091; -- Jade Quilen
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=71305216 WHERE `entry`=63093; -- Jade Quilen Referee
+UPDATE `creature_template` SET `unit_flags2`=35653632 WHERE `entry`=63101; -- General Temuja
+UPDATE `creature_template` SET `npcflag`=128, `unit_flags2`=2099200 WHERE `entry`=9499; -- Plugger Spazzring
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (9502 /*Phalanx*/, 9543 /*Ribbly Screwspigot*/);
+UPDATE `creature_template` SET `unit_flags`=67141632 WHERE `entry` IN (63674 /*Mogu Statue*/, 65169 /*Jade Colossus*/, 70005 /*Young Primal Devilsaur*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587264, `unit_flags2`=2099200 WHERE `entry`=63739; -- Quilen Statue
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=64 WHERE `entry`=10043; -- Ribbly's Crony
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=69240832 WHERE `entry`=63808; -- Faintly Glowing Gem
+UPDATE `creature_template` SET `npcflag`=134217728 WHERE `entry`=64044; -- Thaumaturge Anjool
+UPDATE `creature_template` SET `npcflag`=641, `unit_flags2`=34816 WHERE `entry`=64100; -- Meng Chi the Fist
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags2`=2048 WHERE `entry`=64151; -- Sneaky Marmot
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=64243; -- Glintrok Scout
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=67110912 WHERE `entry`=64250; -- Beacon
+UPDATE `creature_template` SET `unit_flags`=33816832, `VehicleId`=2223 WHERE `entry`=64367; -- Invisible Man
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33600, `unit_flags2`=2099200 WHERE `entry`=64387; -- Master Snowdrift
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=536904448, `unit_flags2`=2048 WHERE `entry`=64432; -- Sinan the Dreamer
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33280, `unit_flags2`=37750784 WHERE `entry`=64467; -- Bowmistress Li
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=295680, `unit_flags2`=67110912 WHERE `entry`=64507; -- Firework Launcher
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=1073741824 WHERE `entry`=64554; -- Zhao-Ren
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=64593; -- Korga Strongmane
+UPDATE `creature_template` SET `unit_flags2`=4229120 WHERE `entry`=64693; -- Invisible Man
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=64710; -- Rope
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=2386 WHERE `entry`=64740; -- Rope Seat
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry`=11025; -- Mukdrak
+UPDATE `creature_template` SET `unit_flags`=537133056, `unit_flags2`=2049 WHERE `entry`=64793; -- Prairie Mouse
+UPDATE `creature_template` SET `unit_flags`=33554688 WHERE `entry`=28960; -- Totally Generic Bunny (JSB)
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=71305216 WHERE `entry` IN (64898 /*Speed Boost Rune*/, 65361 /*Tar Pool*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=2048 WHERE `entry` IN (65040 /*Apothecary Jung*/, 65059 /*Jing Stoutgut*/, 65064 /*Ki-Ro the Contemplative*/, 65070 /*Gokan Sharphoe*/, 65248 /*Kaydee Threesong*/);
+UPDATE `creature_template` SET `npcflag`=17, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry`=65043; -- Elder Oakpaw
+UPDATE `creature_template` SET `npcflag`=65537, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=65046; -- Lao Ma Liang
+UPDATE `creature_template` SET `npcflag`=49 WHERE `entry`=47253; -- Rundok
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=67110912 WHERE `entry`=65257; -- Unleashed Sha
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=67110912 WHERE `entry`=65267; -- Mistfall Brew Keg
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=4196352 WHERE `entry` IN (65400 /*Krik'thik Glider*/, 65401 /*Krik'thik Glider*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=33554432, `VehicleId`=1884 WHERE `entry`=65407; -- Shado-Pan Novice
+UPDATE `creature_template` SET `npcflag`=3, `unit_class`=8 WHERE `entry`=11704; -- Kriss Goldenlight
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2050, `VehicleId`=2416 WHERE `entry`=65476; -- Balloon Air Spirit Bunny
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2050, `VehicleId`=2417 WHERE `entry`=65477; -- Balloon Fire Spirit Bunny
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry`=65559; -- Vision of Zhao-Ren
+UPDATE `creature_template` SET `unit_flags`=2097152, `unit_flags2`=2176 WHERE `entry`=65746; -- Tengfei Edgewater
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=4196353 WHERE `entry`=65824; -- Shao-Tien Behemoth
+UPDATE `creature_template` SET `npcflag`=80 WHERE `entry`=65877; -- Han Flowerbloom
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133056, `unit_flags2`=2049 WHERE `entry`=66419; -- Serpent's Spine Marksman
+UPDATE `creature_template` SET `VehicleId`=2223 WHERE `entry`=66508; -- Invisible Man
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=4196352, `VehicleId`=2085 WHERE `entry`=66904; -- Artillery
+UPDATE `creature_template` SET `npcflag`=81 WHERE `entry`=66980; -- Grower Miao
+UPDATE `creature_template` SET `npcflag`=536870912 WHERE `entry`=67013; -- Vaultkeeper Meelad
+UPDATE `creature_template` SET `npcflag`=268435456 WHERE `entry`=67014; -- Warpweaver Shafiee
+UPDATE `creature_template` SET `npcflag`=4736, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (67185 /*Provisioner Phelps*/, 67186 /*Provisioner Drog*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554496, `unit_flags2`=67110914 WHERE `entry`=67229; -- Master Snowdrift
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554496, `unit_flags2`=67110912 WHERE `entry`=67231; -- Trial of the King
+UPDATE `creature_template` SET `unit_flags`=32832 WHERE `entry` IN (67285 /*Jungle Shredder*/, 69795 /*Zandalari Battlebeast*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2500 WHERE `entry`=67304; -- Shieldwall Footman
+UPDATE `creature_template` SET `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2532 WHERE `entry`=67420; -- Cordfellow Hack
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=67535; -- Boss-Lady Trixel
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=16384 WHERE `entry` IN (67555 /*Ancient Bloodcrown Crane*/, 67557 /*Colossal Viseclaw*/);
+UPDATE `creature_template` SET `npcflag`=131, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=67558; -- Huntsman Blake
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33600, `unit_flags2`=34816 WHERE `entry`=67581; -- Lor'themar Theron
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536 WHERE `entry`=67584; -- Dominance Mage
+UPDATE `creature_template` SET `npcflag`=81, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=67586; -- Elynara
+UPDATE `creature_template` SET `npcflag`=4736, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67597; -- Tux Fizzlezikker
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=34816 WHERE `entry`=67618; -- Shokia
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=67660; -- Archmage Aethas Sunreaver
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (67662 /*High Arcanist Savor*/, 69371 /*Amalia Penshire*/, 69389 /*Ryshelle Brightlock*/, 69418 /*Elina Zaralae*/, 69447 /*Harlan Whitedawn*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (67663 /*Magister Hathorel*/, 67983 /*Captain Aerthas Firehawk*/, 70520 /*Halduron Brightwing*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=34816 WHERE `entry` IN (67735 /*Portal: Shrine of Two Moons*/, 67736 /*Portal: Orgrimmar*/);
+UPDATE `creature_template` SET `npcflag`=640 WHERE `entry`=49889; -- Bruno Flameretardant
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=34816 WHERE `entry`=67939; -- General Nazgrim
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=67989; -- Grand Magister Rommath
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=34816 WHERE `entry`=67990; -- Lor'themar Theron
+UPDATE `creature_template` SET `npcflag`=2097152 WHERE `entry`=50145; -- Auctioneer Braku
+UPDATE `creature_template` SET `unit_flags`=2147746560 WHERE `entry` IN (32617 /*Alterac Valley Portal*/, 32620 /*Eye of the Storm Portal*/);
+UPDATE `creature_template` SET `npcflag`=4194433, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=68986; -- Li the Tamer
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2524 WHERE `entry`=69197; -- Alliance Officer
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry`=15476; -- Scorpid
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587968, `unit_flags2`=2048, `VehicleId`=2682 WHERE `entry`=69308; -- Magister C Sparkles
+UPDATE `creature_template` SET `BaseAttackTime`=2000 WHERE `entry`=69311; -- Loa-Infused Compy
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=69333; -- Disciple Jusi
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=69401; -- Akolik
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587968, `unit_flags2`=2048, `VehicleId`=2694 WHERE `entry`=69419; -- Magister Edien Sunhollow
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=69425; -- Sunwalker Dezco
+UPDATE `creature_template` SET `unit_flags`=537133824 WHERE `entry`=69549; -- Dead Spy
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=2049, `VehicleId`=25 WHERE `entry`=69656; -- Sunreaver Servant
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=17152, `unit_flags2`=67108864 WHERE `entry`=69759; -- Defense Crystal
+UPDATE `creature_template` SET `unit_flags`=32768, `HoverHeight`=7 WHERE `entry`=69779; -- Faded Image of Yu'lon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=320, `unit_flags2`=2048 WHERE `entry`=69783; -- Depleted Animus Golem
+UPDATE `creature_template` SET `BaseAttackTime`=1500 WHERE `entry`=69821; -- Thunder Lord
+UPDATE `creature_template` SET `unit_flags`=163840 WHERE `entry`=69826; -- Zandalari Striker
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67143680 WHERE `entry`=70200; -- Primal Ritual Stone
+UPDATE `creature_template` SET `npcflag`=82, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70301; -- Softpaws
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=70320; -- Taoshi
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=33556480 WHERE `entry`=70322; -- Wu Kao Rogue
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=33556480 WHERE `entry` IN (70329 /*Fire Tile Trap Bunny*/, 70330 /*Lightning Tile Trap Bunny*/, 70332 /*Arrow Tile Trap Bunny*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67143680 WHERE `entry`=70405; -- Speed Rune
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=2099200 WHERE `entry` IN (70409 /*Lightning Pillar Master Bunny*/, 70410 /*Lightning Pillar Target Bunny*/);
+UPDATE `creature_template` SET `npcflag`=129 WHERE `entry` IN (70436 /*Blacktalon Quartermaster*/, 70461 /*Milly Greenfield*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry`=70522; -- Dead Raptor
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2097152 WHERE `entry`=70555; -- Felled Leviathan
+UPDATE `creature_template` SET `npcflag`=16777218, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=66304, `unit_flags2`=67110912 WHERE `entry`=70567; -- Assignment Map
+UPDATE `creature_template` SET `BaseAttackTime`=1923, `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry`=70643; -- Big Blossom Digger
+UPDATE `creature_template` SET `BaseAttackTime`=1739, `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry`=70682; -- Thunderhoof Supply Kodo
+UPDATE `creature_template` SET `BaseAttackTime`=1626 WHERE `entry`=70706; -- Trillium-Bladed Rock Cutter
+UPDATE `creature_template` SET `npcflag`=131, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=70751; -- Card Trader Ami
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=70975; -- Sesebi
+UPDATE `creature_template` SET `BaseAttackTime`=1200, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=71143; -- Windfeather Chick
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry`=53261; -- Fall Recovery Primary Controller
+UPDATE `creature_template` SET `unit_flags`=33536, `unit_flags2`=33556480 WHERE `entry`=71275; -- Darkspear Captive
+UPDATE `creature_template` SET `unit_flags`=2129920 WHERE `entry`=71298; -- Zandalari Beastlord
+UPDATE `creature_template` SET `unit_flags2`=1073743872 WHERE `entry` IN (53394 /*Blue Dragon*/, 53396 /*Tarecgosa*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (71326 /*Lieutenant Parker*/, 71328 /*Lieutenant Fuseblast*/, 71329 /*Lieutenant Boltblaster*/, 71330 /*Lieutenant Fizzboil*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=71327; -- Admiral Hodgson
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2881 WHERE `entry`=71331; -- Transport Cannon
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=4196352, `VehicleId`=2878 WHERE `entry`=71364; -- Transport Cannon
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=4196352, `VehicleId`=2879 WHERE `entry`=71365; -- Transport Cannon
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=4196352, `VehicleId`=2880 WHERE `entry`=71366; -- Transport Cannon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2162688 WHERE `entry` IN (71474 /*Embodied Despair*/, 71482 /*Embodied Desperation*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2097152 WHERE `entry` IN (71476 /*Embodied Misery*/, 71477 /*Embodied Gloom*/, 71481 /*Embodied Sorrow*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33554432, `unit_flags2`=2162688 WHERE `entry`=71478; -- Embodied Anguish
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=295680, `unit_flags2`=2048, `VehicleId`=1416 WHERE `entry`=53566; -- Master Shang Xi
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=16, `unit_flags2`=557056, `VehicleId`=2901 WHERE `entry`=71543; -- Immerseus
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=4194304 WHERE `entry`=71550; -- Swirl Target
+UPDATE `creature_template` SET `npcflag`=4225, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (71617 /*Doris Chiltonius*/, 71618 /*Roo Desvin*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (71715 /*Orgrimmar Faithful*/, 71770 /*Kor'kron Ironblade*/, 71772 /*Kor'kron Assassin*/, 72433 /*Mokvar the Treasurer*/, 72434 /*Treasury Guard*/, 71516 /*Kor'kron Ironblade*/);
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2097152, `VehicleId`=2920 WHERE `entry`=71734; -- Sha of Pride
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33088, `unit_flags2`=2097152 WHERE `entry` IN (71742 /*Akolik*/, 71744 /*Skumblade Captive*/, 71764 /*Gai-Cho Refugee*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33600, `unit_flags2`=2097152 WHERE `entry` IN (71749 /*Waterspeaker Gorai*/, 71753 /*Inkgill Captive*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=4196352 WHERE `entry` IN (71752 /*Activated Laser Turret*/, 73742 /*Thresher Turret*/, 71638 /*Activated Missile Turret*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33088, `unit_flags2`=2097152 WHERE `entry`=71763; -- Montak
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=2048 WHERE `entry` IN (71771 /*Kor'kron Arcweaver*/, 71517 /*Kor'kron Arcweaver*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry` IN (71773 /*Kor'kron Warshaman*/, 73153 /*Arcweaver Reinforcements*/, 73155 /*Brute Reinforcements*/, 71519 /*Kor'kron Warshaman*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4196352 WHERE `entry` IN (71787 /*Body Stalker*/, 71645 /*Shock Collar*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=4196352 WHERE `entry`=71788; -- Crawler Mine
+UPDATE `creature_template` SET `unit_flags`=67108864 WHERE `entry` IN (114 /*Harvest Watcher*/, 115 /*Harvest Reaper*/, 157 /*Goretusk*/, 36062 /*Uprooted Lasher*/, 1085 /*Elder Stranglethorn Tiger*/, 1186 /*Black Bear*/, 37206 /*Plains Prowler*/, 37207 /*Plains Pridemane*/, 1557 /*Elder Mistvale Gorilla*/, 2042 /*Nightsaber*/, 2248 /*Cave Yeti*/, 2730 /*Rabid Crag Coyote*/, 39049 /*Plagued Bruin*/, 39385 /*Screamslash*/, 4316 /*Kolkar Packhound*/, 4324 /*Searing Whelp*/, 4382 /*Withervine Creeper*/, 4385 /*Withervine Rager*/, 5450 /*Hazzali Stinger*/, 5452 /*Hazzali Worker*/, 5465 /*Land Rager*/, 6506 /*Ravasaur Runner*/, 6551 /*Gorishi Wasp*/, 7432 /*Frostsaber Stalker*/, 7434 /*Frostsaber Pride Watcher*/, 8960 /*Felpaw Scavenger*/, 45118 /*Darkwood Treant*/, 9690 /*Ember Worg*/, 10737 /*Shy-Rotam*/, 46917 /*Darkflight Flameblade*/, 46918 /*Darkflight Shadowspeaker*/, 48628 /*Ferocious Yeti*/, 48960 /*Frostshard Rumbler*/, 16353 /*Mistbat*/, 17372 /*Timberstrider Fledgling*/, 19188 /*Raging Colossus*/, 19706 /*Marshrock Threshalisk*/, 24673 /*Frostwing Chimaera*/, 25585 /*Beryl Mage Hunter*/, 28009 /*Shardhorn Rhino*/, 30291 /*Ravenous Jormungar*/, 30422 /*Roaming Jormungar*/, 33083 /*Enraged Earth Elemental*/, 34894 /*Stonetalon Ram*/);
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry` IN (35984 /*Sunreaver Dragonhawk*/, 45847 /*S.A.F.E. Operative*/, 24547 /*Hozzer*/);
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2099200 WHERE `entry` IN (71858 /*Wavebinder Kardris*/, 71859 /*Earthbreaker Haromm*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33088, `unit_flags2`=4194304, `VehicleId`=2932 WHERE `entry`=71865; -- Garrosh Hellscream
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33554432, `unit_flags2`=4229120 WHERE `entry`=71889; -- Secured Stockpile of Pandaren Spoils
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=71906; -- Borer Drill
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4196352 WHERE `entry` IN (71910 /*Laser Array Bunny*/, 72710 /*Shockwave Missile Caster Stalker*/, 58869 /*Blanche's Lightning Rod*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4229120, `VehicleId`=2918 WHERE `entry`=71912; -- Laser Array Target Vehicle
+UPDATE `creature_template` SET `speed_walk`=0.4, `BaseAttackTime`=5000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33554496, `unit_flags2`=133120 WHERE `entry` IN (71913 /*Cannon*/, 71914 /*Tail Gun*/, 71468 /*Cannon*/, 71484 /*Top Cannon*/);
+UPDATE `creature_template` SET `speed_walk`=1.555556, `unit_flags`=32768 WHERE `entry`=71919; -- Zhu-Gon the Sour
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=25 WHERE `entry` IN (71921 /*Darkfang*/, 71923 /*Bloodclaw*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2308 WHERE `entry`=36094; -- Enraged Kodo
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2 WHERE `entry` IN (71946 /*Manifestation of Pride*/, 72172 /*Reflection*/, 72791 /*Lingering Corruption*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=2 WHERE `entry`=71952; -- Chi-Ji
+UPDATE `creature_template` SET `speed_run`=2 WHERE `entry` IN (71953 /*Xuen*/, 71954 /*Niuzao*/, 72572 /*Kor'kron Dark Shaman*/, 72619 /*Earthbreaker Haromm*/, 72620 /*Wavebinder Kardris*/, 71055 /*Kor'kron Spotter*/, 71476 /*Embodied Misery*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=2, `unit_flags`=0 WHERE `entry`=71955; -- Yu'lon
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1.428571 WHERE `entry`=71965; -- Norushen
+UPDATE `creature_template` SET `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=71967; -- Norushen
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4194304 WHERE `entry`=71979; -- Kor'kron Warbringer
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2048 WHERE `entry` IN (306 /*Palomino*/, 3236 /*Barrens Kodo*/, 5419 /*Glasshide Basilisk*/, 25467 /*Bloodspore Harvester*/, 64793 /*Prairie Mouse*/, 65746 /*Tengfei Edgewater*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=4194304 WHERE `entry`=71983; -- Farseer Wolf Rider
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=1.714286, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4194304 WHERE `entry`=71984; -- Siege Engineer
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=3.571429, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=4196352, `VehicleId`=2928 WHERE `entry`=71985; -- Ko'kron Iron Star
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `unit_flags`=32768 WHERE `entry`=71986; -- Cove Shark
+UPDATE `creature_template` SET `speed_run`=1 WHERE `entry` IN (71988 /*Spectral Campfire*/, 72006 /*Allie*/, 72556 /*Orc Child*/, 72676 /*Spirit Healer*/, 72844 /*Ironfur Great Bull*/, 73015 /*Eli*/, 73031 /*Li Li*/, 73281 /*Dread Ship Vazuvius*/, 73819 /*Ku-Mo*/, 74003 /*Luna the Beauty*/, 74159 /*Swifty*/, 55650 /*Shang Xi's Hot Air Balloon*/, 56147 /*Buried Wheelbarrow Stalker*/, 56150 /*Hoe Tree*/, 56152 /*Buried Rake Stalker*/, 56153 /*Buried Hoe Stalker*/, 56394 /*Mesmerized Child*/, 56622 /*Brazier*/, 57873 /*Training Target*/, 60259 /*Kong*/, 60260 /*Jie*/, 64878 /*Young Student*/, 64879 /*Yin*/, 64880 /*Nan*/, 64881 /*Hao*/, 65267 /*Mistfall Brew Keg*/, 32602 /*Dalaran Visitor*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629 WHERE `entry` IN (72007 /*Master Kukuru*/, 73009 /*Brother Yakshoe*/, 73010 /*Brother Rabbitsfoot*/, 73019 /*Ken-Ken*/, 73027 /*Chief Kah Kah*/, 73043 /*Chee Chee*/, 73052 /*Mung-Mung*/, 73338 /*The Monkey King*/, 73340 /*Riko*/, 73629 /*Hopswift*/, 73812 /*Brother Noodle*/, 73814 /*Noodle-Maker Monmon*/, 54131 /*Fe-Feng Hozen*/, 55601 /*Fe-Feng Wiseman*/, 55632 /*Fe-Feng Ruffian*/, 56730 /*Fe-Feng Brewthief*/, 57164 /*Fe-Feng Leaper*/, 57205 /*Fe-Feng Hozen*/);
+UPDATE `creature_template` SET `speed_run`=1.142857, `unit_flags`=67108864 WHERE `entry` IN (345 /*Bellygrub*/, 49161 /*Altered Beast*/);
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=1.428571 WHERE `entry`=72020; -- Jadefire Wall
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=72026; -- Cutter Laser
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=0.4, `BaseAttackTime`=5000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=34816 WHERE `entry`=72050; -- Crawler Mine
+UPDATE `creature_template` SET `speed_walk`=0.666668 WHERE `entry` IN (72095 /*Fishgorged Crane*/, 72761 /*Windfeather Nestkeeper*/, 72762 /*Brilliant Windfeather*/, 73158 /*Emerald Gander*/, 55015 /*Whitefeather Crane*/, 67555 /*Ancient Bloodcrown Crane*/, 71143 /*Windfeather Chick*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=536871680, `unit_flags2`=2049 WHERE `entry` IN (72129 /*Neeru Fireblade*/, 72139 /*Gan'rul Bloodeye*/, 72144 /*Zevrost*/, 72152 /*Mirket*/, 72649 /*Darkspear Headhunter*/);
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=72130; -- Kor'jus
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=72131; -- Blind Blademaster
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (72132 /*Craven Drok*/, 72155 /*Cazul*/, 72486 /*Doyo'da*/, 72487 /*Kozish*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=33556480 WHERE `entry` IN (72145 /*Grol'dar*/, 73900 /*Darkspear Marksman*/, 73902 /*Darkspear Marksman*/, 73903 /*Darkspear Marksman*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=33556480 WHERE `entry`=72150; -- Kor'kron Shadowmage
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=536871680, `unit_flags2`=2049 WHERE `entry`=72153; -- Kurgul
+UPDATE `creature_template` SET `npcflag`=2176, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=72157; -- Hagrus
+UPDATE `creature_template` SET `npcflag`=4224, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (72158 /*Katis*/, 72159 /*Muragus*/, 72173 /*Kareth*/);
+UPDATE `creature_template` SET `npcflag`=1152, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=72174; -- Rekkul
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (72175 /*Ormok*/, 72944 /*Mok*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=72180; -- Gordul
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (72191 /*Overlord Runthak*/, 72893 /*Orgrimmar Peon*/, 73095 /*Blackfuse Engineer*/, 73908 /*Darkspear Warrior*/, 74099 /*Kor'kron Machinist*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=3147776 WHERE `entry`=72192; -- Gamon
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=16384, `unit_flags2`=2097152 WHERE `entry`=72194; -- Hellscream Demolisher
+UPDATE `creature_template` SET `speed_run`=1.142857, `RangeAttackTime`=2000, `unit_flags`=64 WHERE `entry`=521; -- Lupos
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2.857143, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=4227072 WHERE `entry`=72215; -- Heart of Y'Shaarj
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` IN (547 /*Great Goretusk*/, 772 /*Stranglethorn Tigress*/, 36943 /*Bristleback Invader*/, 1196 /*Ice Claw Bear*/, 1551 /*Ironjaw Basilisk*/, 38914 /*Sandstone Golem*/, 3681 /*Wisp*/, 40999 /*Tortolla*/, 5268 /*Ironfur Bear*/, 5455 /*Centipaar Wasp*/, 5992 /*Ashmane Boar*/, 7049 /*Flamescale Broodling*/, 44113 /*Ironjaw Behemoth*/, 44587 /*Duneclaw Stalker*/, 46748 /*Stonard Kodo Beast*/, 11657 /*Morloch*/, 48111 /*Blackrock War Kodo*/, 13099 /*Irondeep Explorer*/, 15476 /*Scorpid*/, 52227 /*Balgor Whipshank*/, 17130 /*Talbuk Stag*/, 17156 /*Tortured Earth Spirit*/, 56404 /*Greenstone Gorger*/, 20611 /*Shimmerwing Moth*/, 22095 /*Infested Root-Walker*/, 23409 /*Invisible Stalker - Large AOI (Scale x3)*/, 23874 /*Thornvine Creeper*/, 25709 /*Glacial Ancient*/, 26261 /*Grizzly Hills Giant*/, 26349 /*Goramosh*/, 67788 /*Sonic Control Tower*/, 35096 /*Weakened Mosshoof Stag*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33587200, `unit_flags2`=2097152, `VehicleId`=2948 WHERE `entry`=72223; -- Quilen Guardians
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2.857143, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=71335936 WHERE `entry`=72228; -- Heart of Y'Shaarj
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (72236 /*Embodied Doubt*/, 72744 /*Kor'kron Skullsplitter*/, 74070 /*Gnomebot Siren*/);
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=72237; -- Embodied Fear
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2.857143, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2129920 WHERE `entry` IN (72239 /*Sha Vortex*/, 73411 /*Blood of Y'Shaarj*/);
+UPDATE `creature_template` SET `speed_run`=1.357143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=4196352 WHERE `entry`=72248; -- Warlord Zaela
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4194304, `VehicleId`=2961, `HoverHeight`=3 WHERE `entry`=72249; -- Galakras
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=35653632 WHERE `entry`=72261; -- Kor'kron Elite Sniper
+UPDATE `creature_template` SET `speed_run`=1.385714 WHERE `entry` IN (72275 /*Black Bengal Goat*/, 36642 /*Myralion Sunblaze*/, 73151 /*Deathguard Netharian*/, 41870 /*Krom'gar Enforcer*/, 42218 /*Stormwind Royal Guard*/, 12996 /*Mounted Ironforge Mountaineer*/, 16925 /*Bonechewer Raider*/, 29867 /*Lordaeron Footman Specimen*/, 30864 /*Shandaral Hunter Spirit*/, 31033 /*Crusader of Virtue*/, 67826 /*Dominance Raider*/, 32596 /*Dalaran Visitor*/, 32598 /*Dalaran Visitor*/, 71010 /*Kor'kron Outrider*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33554432, `unit_flags2`=4196352 WHERE `entry`=72281; -- Spoils of Pandaria
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=1818, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32832, `unit_flags2`=5242880 WHERE `entry`=72302; -- Lady Jaina Proudmoore
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.428571, `BaseAttackTime`=1818, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=5242880 WHERE `entry`=72311; -- King Varian Wrynn
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1818, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34603008 WHERE `entry` IN (72312 /*Highguard Kailus*/, 72313 /*Highguard Tyrius*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.666668 WHERE `entry`=36485; -- Khan Kammah
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.666668, `BaseAttackTime`=2200 WHERE `entry`=36486; -- Khan Leh'Prah
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.666668 WHERE `entry`=36487; -- Khan Shodo
+UPDATE `creature_template` SET `unit_class`=8, `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry`=36489; -- Burning Blade Warlock Corpse
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.428571, `unit_class`=2, `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry`=36490; -- Doomguard Corpse
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.428571, `unit_class`=2 WHERE `entry`=36493; -- Centaur Guardian
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2048 WHERE `entry` IN (72345 /*Steam Vent Bunny*/, 72406 /*Rilli Greasygob*/, 72694 /*Siegecrafter Blackfuse*/, 73565 /*Tower*/, 73628 /*Tower*/, 73970 /*Tesla Coil Stalker*/, 54900 /*Brazier Bunny, Red*/, 54901 /*Brazier Bunny, Purple*/, 54902 /*Brazier Bunny, Blue*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry` IN (72350 /*Dragonmaw Elite Grunt*/, 72351 /*Dragonmaw Flagbearer*/, 72352 /*Dragonmaw Ebon Stalker*/, 72354 /*Dragonmaw Bonecrusher*/, 72355 /*High Enforcer Thranok*/, 72356 /*Master Cannoneer Dagryn*/, 72357 /*Lieutenant Krugruk*/, 72365 /*Dragonmaw Cannoneer*/, 72942 /*Dragonmaw Flagbearer*/, 72945 /*Dragonmaw Bonecrusher*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=35651584 WHERE `entry` IN (72353 /*Dragonmaw Flameslinger*/, 72941 /*Dragonmaw Grunt*/);
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry` IN (36517 /*Aleric Hawkins*/, 39432 /*Takrik Ragehowl*/, 39433 /*Ian Duran*/, 39434 /*Rio Duran*/, 39435 /*Royce Duskwhisper*/, 6707 /*Fahrad*/, 16224 /*Rathis Tomber*/, 16712 /*Ganaar*/, 26814 /*Harrison Jones*/, 30401 /*Velog Icebellow*/, 34634 /*Gorgal Angerscar*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64, `unit_flags2`=2113536, `VehicleId`=2966 WHERE `entry`=72358; -- Kor'kron Cannon
+UPDATE `creature_template` SET `unit_flags`=67108864 WHERE `entry` IN (684 /*Shadowmaw Panther*/, 46860 /*General Jirakka*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry` IN (72367 /*Dragonmaw Tidal Shaman*/, 72958 /*Dragonmaw Tidal Shaman*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2099200 WHERE `entry`=72372; -- Riding Raptor
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=2099200 WHERE `entry`=72374; -- Kor'kron Grunt
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=2048 WHERE `entry`=72375; -- Kor'kron Engineer
+UPDATE `creature_template` SET `speed_run`=1.428571 WHERE `entry` IN (72392 /*Vol'jin*/, 72545 /*Mokvar the Treasurer*/, 72553 /*Ureda of the Black Flame*/, 72568 /*Kor'kron Overseer*/, 72661 /*Zeal*/, 72662 /*Vanity*/, 72663 /*Arrogance*/, 72777 /*Gulp Frog*/, 72809 /*Eroded Cliffdweller*/, 72897 /*Blazebound Chanter*/, 47138 /*Pustulant Monstrosity*/, 56763 /*Regenerating Sha*/, 56764 /*Consuming Sha*/, 56765 /*Destroying Sha*/, 33543 /*Sunreaver Guardian*/, 69842 /*Zandalari Warbringer*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry` IN (72403 /*Flekky Nox*/, 72404 /*Zazzle*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (72405 /*Sovik*/, 72407 /*Roxxik*/, 72410 /*Nogg*/, 64520 /*Shado-Pan Prisoner*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554496, `unit_flags2`=4210688, `VehicleId`=2971 WHERE `entry`=72408; -- Anti-Air Turret
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (72411 /*Kor'kron Provisioner*/, 72421 /*Kor'kron Overseer*/, 72455 /*Overseer Komak*/, 72490 /*Overseer Mojka*/, 72496 /*Overseer Thathung*/, 73250 /*Kor'kron Wild Gun*/, 62632 /*Sik'thik Engineer*/, 62633 /*Sik'thik Builder*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (72412 /*Kor'kron Grunt*/, 72427 /*Orgrimmar Peon*/, 72823 /*Bill Porter*/, 73590 /*Kor'kron Outrider*/, 59952 /*Kun-Lai Guardian*/, 60290 /*John Shin*/, 63351 /*Guardian of the Dawn*/, 65388 /*Seacarp*/, 65394 /*Overgrown Seacarp*/, 66030 /*Scrollkeeper Mushu*/, 66034 /*Kheila Fallingwater*/, 66093 /*Toud Duskgale*/, 66094 /*Burma Risingblossom*/, 68418 /*Kor'kron Guard*/, 70163 /*Mother Igarashi*/);
+UPDATE `creature_template` SET `speed_walk`=1.2 WHERE `entry`=72419; -- Horde Demolisher
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (72422 /*Auctioneer Drezmit*/, 72423 /*Auctioneer Fazdran*/, 72424 /*Auctioneer Ralinza*/, 72425 /*Auctioneer Xifa*/, 72483 /*Sarok*/, 72484 /*Zazo*/, 72485 /*Goma*/, 72492 /*Shimra*/, 72493 /*Trak'gen*/, 72498 /*Theramore Citizen*/, 73640 /*Steven Dowling*/, 73641 /*David Luong*/, 73644 /*Xena*/, 73855 /*Darkspear Warrior*/, 73858 /*Darkspear Battle Drummer*/, 73859 /*Darkspear Warrior*/, 73860 /*Darkspear Engineer*/, 73871 /*Darkspear Sentry*/, 73874 /*Darkspear Sentry*/, 73887 /*Stone Guard Rasconi*/, 73893 /*Darkspear Forward Observer*/, 73895 /*Supply Worker*/, 73898 /*Darkspear Metalworker*/, 73917 /*Siege Specialist Natoj*/, 73934 /*Darkspear Supply Provisioner*/, 73936 /*Darkspear Recruit*/, 54734 /*Master Li Fei*/, 63241 /*Monk Trainee*/, 68971 /*Explorer's League Researcher*/);
+UPDATE `creature_template` SET `npcflag`=2176, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=72428; -- Horthus
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (72429 /*Olvia*/, 72430 /*Shan'ti*/, 72488 /*Innkeeper Gryshka*/, 72489 /*Barkeep Morag*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=536870912 WHERE `entry`=72432; -- Eitrigg
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262144 WHERE `entry`=72435; -- Wounded Thunder Bluff Warrior
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=3046 WHERE `entry`=72438; -- Aysa Cloudsinger
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=72451; -- Kor'kron Dark Shaman
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048, `VehicleId`=2973 WHERE `entry`=72452; -- Kor'kron Dire Wolf
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=536903680 WHERE `entry`=72454; -- Ji Firepaw
+UPDATE `creature_template` SET `speed_run`=1.857143, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry`=72456; -- Korgra the Snake
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133056, `unit_flags2`=2049 WHERE `entry`=72497; -- Theramore Citizen
+UPDATE `creature_template` SET `BaseAttackTime`=1818, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34603008 WHERE `entry` IN (72534 /*Alliance Vanguard*/, 72548 /*Alliance Vanguard*/, 72549 /*Alliance Vanguard*/);
+UPDATE `creature_template` SET `speed_walk`=3.6, `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=72535; -- Stone Statue
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (72538 /*Tormentor Sipe*/, 73126 /*Xuen*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (72541 /*Spearguard Du'mont*/, 70164 /*Father Brunet*/);
+UPDATE `creature_template` SET `unit_flags`=512 WHERE `entry` IN (870 /*Protector Deni*/, 874 /*Protector Korelor*/, 45447 /*Arikara*/, 10600 /*Thontek Rumblehoof*/, 23009 /*Bessbi Jinglepocket*/, 23010 /*Wolgren Jinglepocket*/, 62256 /*Stinkbug*/, 62364 /*Ash Lizard*/, 62627 /*Fledgling Nether Ray*/, 62852 /*Dragonbone Hatchling*/);
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (72546 /*Kor'kron Grunt*/, 37742 /*Drugan Deepdraught*/, 2492 /*Lexington Mortaim*/, 39146 /*Clarice Hawthorne*/, 45150 /*Bree Ironstock*/, 47361 /*Doranir*/, 47362 /*Aelnara*/, 47556 /*Drizle*/, 51346 /*Orgrimmar Wind Rider*/, 53840 /*Gart Mistrunner*/, 53841 /*Zen'tabra*/, 53842 /*Mardant Strongoak*/, 53844 /*Celestine of the Harvest*/, 18586 /*Coosh'coosh*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=72557; -- Orc Child
+UPDATE `creature_template` SET `unit_flags`=832, `unit_flags2`=2099200 WHERE `entry`=36725; -- Nerub'ar Broodkeeper
+UPDATE `creature_template` SET `speed_run`=1.388889, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=35653632 WHERE `entry`=72564; -- Doomlord
+UPDATE `creature_template` SET `speed_run`=0.9920629 WHERE `entry` IN (72588 /*Sha Cloud*/, 72695 /*Wrathion*/, 73017 /*Clever Ashyo*/, 73047 /*Jogu the Drunk*/, 73197 /*Lesser Sha Puddle*/, 73260 /*Lesser Contaminated Puddle*/, 73342 /*Fallen Pool Tender*/, 73349 /*Tormented Initiate*/, 73598 /*Lady Jaina Proudmoore*/, 73813 /*Galu Wellspring*/, 3797 /*Cenarion Protector*/, 7726 /*Grimtotem Naturalist*/, 48546 /*Captain Winky*/, 53704 /*Corsac Fox*/, 19163 /*Refugee Kid*/, 57769 /*Shen-zin Su*/, 57797 /*Corsac Fox*/, 59058 /*Pearlkeeper Fujin*/, 59159 /*Pearlfin Mystic*/, 59591 /*The Master's Flame*/, 59593 /*Grummle Trail Guide*/, 59698 /*Brother Furtrim*/, 59703 /*Brother Trailscenter*/, 26582 /*Horrified Drakkari Warrior*/, 26583 /*Horrified Drakkari Shaman*/, 64440 /*Softshell Turtle*/, 70757 /*Pool of Blood*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33685760, `unit_flags2`=2048, `VehicleId`=2978 WHERE `entry`=72590; -- Archery Target
+UPDATE `creature_template` SET `speed_run`=1, `unit_flags`=33554944 WHERE `entry`=36761; -- Sharpshiv's Parachute
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2048 WHERE `entry`=72640; -- Wildhammer Shaman
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry` IN (72641 /*Darkspear Headhunter*/, 55168 /*Alliance Bodyguard*/, 55173 /*Horde Seadog*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (72642 /*Thunder Bluff Warrior*/, 73516 /*Rowdy*/, 73517 /*Vexie*/, 73637 /*Butterflies*/, 55155 /*Fine Leather Journal*/);
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.428571 WHERE `entry` IN (72655 /*Fragment of Pride*/, 72658 /*Amalgamated Hubris*/, 58198 /*Shado-Pan Disciple*/, 58803 /*Residual Hatred*/, 58807 /*Vestige of Hatred*/, 58810 /*Fragment of Hatred*/, 63717 /*Shado-Pan Disciple*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67127296 WHERE `entry`=72656; -- Spike Mine
+UPDATE `creature_template` SET `dynamicflags`=0 WHERE `entry` IN (36869 /*Bael'dun Digger Corpse*/, 36870 /*Bael'dun Appraiser Corpse*/, 36922 /*Wounded Soldier*/, 2344 /*Dun Garok Mountaineer*/, 2345 /*Dun Garok Rifleman*/, 2346 /*Dun Garok Priest*/, 38878 /*Mangled Body*/, 39086 /*Slain Scarlet Zealot*/, 3725 /*Dark Strand Cultist*/, 3727 /*Dark Strand Enforcer*/, 3728 /*Dark Strand Adept*/, 3730 /*Dark Strand Excavator*/, 40662 /*Steamwheedle Victim*/, 41097 /*Saltstone Basilisk*/, 41104 /*Sparkleshell Tortoise*/, 41111 /*Salt Flats Vulture*/, 42220 /*Dead Frostmane Troll*/, 42381 /*Overloaded Harvest Golem*/, 42441 /*Irradiated Trogg Corpse*/, 42945 /*GS-9x Prototype*/, 43261 /*Crushcog Battle Suit 1*/, 44149 /*Partially-Digested Mosshide Gnoll*/, 44150 /*Slowly Decaying Mosshide Mystic*/, 44618 /*Rusted Skystrider*/, 45129 /*Lurid*/, 45197 /*Veteran Forsaken Trooper*/, 45251 /*Orc Demolisher*/, 45271 /*Montarr*/, 45372 /*Slaughtered Dragonmaw Warrior*/, 45886 /*Corpsebeast (Giant)*/, 45893 /*Corpsebeast (Dog)*/, 45895 /*Corpsebeast (Blob)*/, 46003 /*Prophet Hadassi*/, 46345 /*Destroyed Battle Suit*/, 46609 /*Dunwald Victim*/, 46629 /*Butchered Drake*/, 46809 /*Doyle Gryphon Rider*/, 46810 /*Doyle Gryphon Rider*/, 47317 /*Keeland Doyle*/, 47344 /*Doyle Gryphon*/, 47399 /*Dead Miner*/, 47446 /*Dead Employee*/, 47457 /*Twilight's Hammer Horse*/, 49414 /*Pool of Blood*/, 49415 /*Pool of Blood*/, 52161 /*Foulweald Pathfinder*/, 18035 /*Scout Jyoba*/, 24678 /*Slain Tuskarr*/, 25384 /*Steeljaw's Corpse*/, 26514 /*Surveyor Orlond*/, 26737 /*Crazed Mana-Surge*/, 26761 /*Crazed Mana-Wyrm*/, 26772 /*Icemist Warrior*/, 26873 /*Mage-Commander Evenstar*/, 27457 /*Skirmisher Corpse*/, 27481 /*Westfall Infantry Corpse*/, 27610 /*Dead Caribou*/, 28162 /*Drakkari Corpse*/, 28852 /*Dead Mam'toth Disciple*/, 29546 /*K3 Snow Runner*/, 29916 /*Field Corpse (Type A)*/, 30177 /*Ravaged Cavedweller Worg*/, 30292 /*Dead Icemaw Bear*/, 33001 /*Thundris Windweaver*/, 33033 /*Sentinel Elissa Starbreeze*/, 33035 /*Taldan*/, 33037 /*Caylais Moonfeather*/, 33039 /*Enraged Hippogryph*/, 33040 /*Frenzied Cyclone Transform*/, 34299 /*Earth Elemental Remains*/, 34426 /*Laughing Sister*/, 34843 /*Dwarven Excavator*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (72728 /*Kor'kron Blood Axe*/, 72784 /*Kor'kron Gunner*/, 72903 /*Kor'kron Siegemaster*/, 73659 /*Kor'kron Gunner*/, 73660 /*Kor'kron Blood Axe*/);
+UPDATE `creature_template` SET `speed_run`=1.285714 WHERE `entry` IN (72763 /*Great Turtle Hatchling*/, 72764 /*Great Turtle*/, 72842 /*Ironfur Herdling*/, 72843 /*Ironfur Grazer*/, 73160 /*Ironfur Steelhorn*/, 73161 /*Great Turtle Furyshell*/, 57258 /*Field Yak*/, 57709 /*Nourished Yak*/, 57853 /*Big Bertha*/, 58941 /*Seadragon*/, 59499 /*Nourished Yak*/, 64877 /*Tingting*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `unit_flags`=32768 WHERE `entry`=72765; -- Elder Great Turtle
+UPDATE `creature_template` SET `unit_flags2`=16779264 WHERE `entry`=72766; -- Ancient Spineclaw
+UPDATE `creature_template` SET `speed_walk`=1.555556 WHERE `entry` IN (72767 /*Jademist Dancer*/, 73175 /*Cinderfall*/, 73191 /*Aqueous Defender*/, 54787 /*Huo*/, 55022 /*Steam Fiend*/, 55539 /*Wugou*/, 55556 /*Shu*/, 57779 /*Huo*/, 60454 /*Vision of Shu*/, 60917 /*Huo*/, 60918 /*Shu*/, 60919 /*Wugou*/, 65493 /*Shu*/);
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=2989 WHERE `entry`=72768; -- Kor'kron War Wolf
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=72770; -- Kor'kron Dark Farseer
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2048, `dynamicflags`=0, `VehicleId`=584 WHERE `entry`=36942; -- Fledgling Brave
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (36944 /*Wants Shirts*/, 36945 /*Wants Pants*/, 36946 /*Wants Unmentionables*/, 36947 /*Wants Water*/, 38571 /*Steamwheedle Survivor*/, 41185 /*Queen Silith*/, 42044 /*Pyrricion*/, 42420 /*Image of "Doc" Cogspin*/, 42422 /*Image of Hinkles Fastblast*/, 42423 /*Thermaplugg's Brag-bot*/, 7079 /*Viscous Fallout*/, 43422 /*Captured Demolitionist Credit*/, 8127 /*Antu'sul*/, 9019 /*Emperor Dagran Thaurissan*/, 45412 /*Lord Aurius Rivendare*/, 45502 /*Vordrastrasz*/, 45512 /*Setrastrasza*/, 45513 /*Tederastrasz*/, 45745 /*Ruby*/, 9938 /*Magmus*/, 46122 /*Gorfax Angerfang*/, 46208 /*Clean Cannon X-2*/, 10436 /*Baroness Anastari*/, 10438 /*Maleki the Pallid*/, 10808 /*Timmy the Cruel*/, 10811 /*Instructor Galford*/, 10813 /*Balnazzar*/, 46839 /*Servias Windterror*/, 11032 /*Commander Malor*/, 47199 /*Twilight Stormbender*/, 47241 /*Mullan Gryphon Mount*/, 47316 /*Firebeard Gryphon Mount*/, 47904 /*Velastrasza*/, 48648 /*Whirlpool Camera Bunny*/, 48650 /*Whrilpool Controller Bunny (CSA)*/, 49411 /*Boots*/, 50426 /*Moore Gryphon Mount*/, 52338 /*Burning Blade Attacker*/, 52386 /*Burning Blade Windrider*/, 52531 /*Fire Attacker Portal*/, 16800 /*Grand Magister Rommath*/, 16801 /*Halduron Brightwing*/, 52893 /*Molten Splash Origin Bunny*/, 52948 /*Furnace Bunny, Fire A, 1.0 scale*/, 53143 /*Flamewaker Hunter*/, 17308 /*Omor the Unscarred*/, 17309 /*Hellfire Watcher*/, 53212 /*Furnace Bunny, Fire A, 1.6 scale*/, 53213 /*Furnace Bunny, Fire A, 0.8 scale*/, 17435 /*Susurrus*/, 17533 /*Romulo*/, 17534 /*Julianne*/, 54036 /*Furnace Bunny, Fire B, 1.0 scale*/, 54037 /*Furnace Bunny, Fire C, 1.0 scale*/, 54038 /*Furnace Bunny, Fire B, 0.8 scale*/, 54039 /*Furnace Bunny, Fire C, 0.8 scale*/, 54040 /*Furnace Bunny, Fire B, 1.6 scale*/, 54320 /*Ban'thalos*/, 24025 /*Invis Firework Helper*/, 24786 /*Reef Bull*/, 24797 /*Reef Cow*/, 24899 /*"Scoodles"*/, 26798 /*Commander Kolurg*/, 26799 /*Horde Berserker*/, 26801 /*Horde Ranger*/, 26803 /*Horde Cleric*/, 27947 /*Horde Commander*/, 28495 /*Gawanil*/, 29558 /*Frost Giant Target Bunny*/, 29625 /*Hyldsmeet Proto-Drake*/, 29639 /*Brunnhildar Prisoner*/, 29798 /*Hyldsmeet Proto-Drake*/, 29974 /*Niffelem Forefather*/, 30052 /*Creteus*/, 30169 /*Smoldering Scrap Bunny*/, 30260 /*Stoic Mammoth*/, 30320 /*Battlescarred Frostworg*/, 30445 /*Ice Steppe Bull*/, 32188 /*Gargoyle Ambusher*/, 32242 /*Blue Sample KC Bunny*/, 32244 /*Green Sample KC Bunny*/, 32245 /*Dark Sample KC Bunny*/, 32523 /*Johnny Yes*/, 32608 /*Hodir's Spear Event Bunny*/, 33497 /*Modan Monster*/, 33687 /*Chillmaw*/, 33695 /*Cultist Bombardier*/, 34735 /*Black Knight's Grave*/, 34803 /*Stonetalon Ancient of War*/, 34811 /*Rolling Rock 1*/, 34817 /*Stonetalon Ancient of War*/, 34818 /*Stonetalon Ancient of War*/, 35368 /*Thrall*/, 35372 /*Garrosh Hellscream*/, 35373 /*Tournament Wind Rider*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=67108864 WHERE `entry` IN (72805 /*Primal Stalker*/, 72807 /*Crag Stalker*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry`=36993; -- Lady Jaina Proudmoore
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33570816, `unit_flags2`=2113536, `VehicleId`=2998 WHERE `entry`=72847; -- Hellscream Annihilator
+UPDATE `creature_template` SET `unit_flags`=32832 WHERE `entry` IN (37011 /*The Damned*/, 8905 /*Warbringer Construct*/, 50742 /*Qem*/, 50926 /*Grizzled Ben*/, 50937 /*Hamhide*/, 51014 /*Terrapis*/, 27808 /*Turgid the Vile*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.7142857 WHERE `entry` IN (72872 /*Lorewalker Cho*/, 59752 /*Shado-Pan Ambusher*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=1.714286, `unit_flags`=32768 WHERE `entry`=72876; -- Crimsonscale Firestorm
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry` IN (72877 /*Ashleaf Sprite*/, 1756 /*Stormwind Royal Guard*/, 38663 /*Karga Rageroar*/, 39220 /*Wounded Bael'dun Officer*/, 3383 /*Southsea Cutthroat*/, 39595 /*Furious Earthguard*/, 42336 /*Tainted Black Bear*/, 42338 /*Tainted Screecher*/, 44911 /*Dreadguard*/, 45321 /*Riverbed Crocolisk*/, 14881 /*Spider*/, 51515 /*Mulgore Protector*/, 51792 /*Nethergarde Defender*/, 51815 /*Mor'shan Defender*/, 51827 /*Krom'gar Enforcer*/, 52289 /*Fiery Behemoth*/, 54558 /*Bog Crocolisk*/, 19762 /*Coilskar Defender*/, 19768 /*Coilskar Siren*/, 56526 /*Tawnyhide Fawn*/, 57421 /*Mothallus*/, 58489 /*Wilderland Stag*/, 59348 /*Pearlfin Villager*/, 59602 /*Luna*/, 24014 /*Necrolord*/, 59894 /*Brother Yakshoe*/, 59970 /*Ordo Battleyak*/, 59972 /*Ordo Warrior*/, 60169 /*Cagemaster*/, 60170 /*Big Gladiator Chief*/, 61252 /*Shado-Pan Guard*/, 25760 /*Kvaldir Raider*/, 27359 /*Trapped Wintergarde Villager*/, 63494 /*Leechfingers*/, 63674 /*Mogu Statue*/, 28029 /*Argent Crusader*/, 28098 /*Hardknuckle Forager*/, 28117 /*Argent Footman*/, 28358 /*Venomtip*/, 29334 /*Gundrak Raptor*/, 29405 /*Uzo Deathcaller*/, 29456 /*Aurochs Grimbane*/, 29517 /*Darkmender's Ghoul*/, 30067 /*Initiate Claget*/, 67357 /*Dominance Grunt*/, 69826 /*Zandalari Striker*/, 70463 /*Frostmane Snowstalker*/, 71011 /*Kor'kron Battlewolf*/, 71298 /*Zandalari Beastlord*/);
+UPDATE `creature_template` SET `speed_walk`=1.555556, `unit_flags`=67141632 WHERE `entry`=72888; -- Molten Guardian
+UPDATE `creature_template` SET `speed_run`=1.714286, `BaseAttackTime`=1333 WHERE `entry`=72896; -- Eternal Kilnmaster
+UPDATE `creature_template` SET `speed_walk`=0.64, `speed_run`=0.5714286 WHERE `entry`=72908; -- Spotted Swarmer
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=67110912 WHERE `entry`=72910; -- Pressure Mine
+UPDATE `creature_template` SET `unit_flags`=570687488, `unit_flags2`=2049 WHERE `entry`=37082; -- Dusthoof Giraffe
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=72927; -- Kovok
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=72929; -- Sra'thik Amber-Master
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=37750784, `VehicleId`=2223 WHERE `entry`=72943; -- Dragonmaw Proto-Drake
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=35651584 WHERE `entry`=72947; -- Kor'kron Demolisher
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (72954 /*Kor'thik Honor Guard*/, 73696 /*Grand Master Alchemist Ki'xen*/);
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (1292 /*Maris Granger*/, 3013 /*Komin Winterhoof*/, 3605 /*Nadyia Maneweaver*/, 5564 /*Simon Tanner*/, 11052 /*Timothy Worthington*/, 16725 /*Nahogg*/, 16729 /*Refik*/, 16763 /*Remere*/, 18777 /*Jelena Nightsky*/, 19180 /*Seymour*/, 19187 /*Darmari*/, 19778 /*Farii*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=2, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=69208064, `VehicleId`=3007 WHERE `entry`=72972; -- Lift Hook
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=72981; -- Aggron
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=3010 WHERE `entry`=72983; -- Corrupted Skullsplitter
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry` IN (72986 /*Shanna Sparkfizz*/, 63318 /*Chagan Firehoof*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=73012; -- Klaxxi Skirmisher
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286 WHERE `entry` IN (73018 /*Spectral Brewmaster*/, 28010 /*Stranded Thresher*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2 WHERE `entry` IN (73034 /*Hozen Swing*/, 73400 /*Healing Ran Invisible Stalker DND*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512 WHERE `entry`=1365; -- Goli Krumn
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2048 WHERE `entry`=73073; -- Corrupted Boil
+UPDATE `creature_template` SET `speed_run`=0.8571429 WHERE `entry` IN (73083 /*Fledgling Chick*/, 73503 /*Chi-Chi, Hatchling of Chi-Ji*/, 73505 /*Xu-Fu, Cub of Xuen*/, 73506 /*Zao, Calfling of Niuzao*/, 73507 /*Yu'la, Broodling of Yu'lon*/, 73823 /*Sky Lantern*/, 73837 /*Pierre*/, 54133 /*Mottled Rabbit*/, 54134 /*Mossback Toad*/, 60915 /*Mossback Toad*/, 64439 /*Long-Eared Mink*/, 64442 /*Emerald Singer*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (73091 /*Blackfuse Sellsword*/, 73098 /*Kor'kron Overseer*/);
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=0.7142857 WHERE `entry`=73124; -- Pressure Plate
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=73127; -- Chi-Ji
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=1.444444, `speed_run`=1.5873, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=67143680 WHERE `entry`=73128; -- Yu'lon
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (1458 /*Telurinon Moonshadow*/, 1632 /*Adele Fielder*/, 4614 /*Martha Alliestar*/, 7949 /*Xylinnia Starshine*/, 11074 /*Hgarth*/, 16736 /*Cemmorhan*/);
+UPDATE `creature_template` SET `npcflag`=129 WHERE `entry` IN (1460 /*Unger Statforth*/, 43694 /*Katie Stokx*/, 16610 /*Kredis*/, 23484 /*Haldor the Compulsive*/, 27810 /*Brew Vendor*/);
+UPDATE `creature_template` SET `npcflag`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=73136; -- Lorewalker Cho
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=73152; -- Storeroom Guard
+UPDATE `creature_template` SET `speed_walk`=1.555556, `speed_run`=1.428571 WHERE `entry`=73162; -- Foreboding Flame
+UPDATE `creature_template` SET `speed_walk`=0.84, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=4196352 WHERE `entry`=73164; -- Monstrous Gastropod
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2097152 WHERE `entry`=73184; -- Starved Yeti
+UPDATE `creature_template` SET `RangeAttackTime`=2000 WHERE `entry` IN (1511 /*Enraged Silverback Gorilla*/, 6224 /*Leprous Machinesmith*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=73185; -- Enraged Mushan Beast
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=67108864 WHERE `entry`=1514; -- Mokk the Savage
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2099200 WHERE `entry` IN (73188 /*Captive Cave Bat*/, 73522 /*Captive Cave Bat*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=73190; -- Necrolord Sipe
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry`=73193; -- Hatchling
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=3017 WHERE `entry`=73194; -- Kor'kron Iron Scorpion
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4194304 WHERE `entry`=73195; -- Kor'kron Jailer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2099200 WHERE `entry`=73196; -- Tiger
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=4196352 WHERE `entry` IN (73198 /*Tesla Coil*/, 73199 /*Lever*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry` IN (73200 /*Foots Collar*/, 66699 /*Generic Invisible Stalker Controller NonImmune - IH*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200, `VehicleId`=3030 WHERE `entry`=73223; -- Pterrordax
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=67110912 WHERE `entry`=73309; -- Catch and Carry
+UPDATE `creature_template` SET `speed_walk`=2 WHERE `entry`=73330; -- Lorewalker Cho
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.714286 WHERE `entry` IN (73343 /*Celestial Guard*/, 73361 /*Tushui Sentry*/);
+UPDATE `creature_template` SET `speed_run`=1.714286 WHERE `entry` IN (73347 /*Captain Huan*/, 73362 /*Huojin Sentry*/, 73385 /*Sentry Laofung*/, 73386 /*Sentry Jienfo*/, 22980 /*Skyguard Scout*/);
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry` IN (73348 /*Watcher Lara*/, 13448 /*Sergeant Yazra Bloodsnarl*/, 17431 /*Velaada*/, 56115 /*Ken-Ken*/);
+UPDATE `creature_template` SET `npcflag`=81 WHERE `entry` IN (1676 /*Finbus Geargrind*/, 3137 /*Matt Johnson*/, 3357 /*Makaru*/, 46357 /*Gonto*/, 11025 /*Mukdrak*/, 11037 /*Jenna Lemkenilli*/, 16719 /*Mumman*/, 18779 /*Hurnak Grimmord*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=73414; -- Kor'kron Reaper
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=37582; -- Archmage Koreln
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=73452; -- Harbinger of Y'Shaarj
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2097152 WHERE `entry`=73460; -- Invisible Stalker
+UPDATE `creature_template` SET `speed_walk`=6, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=34816 WHERE `entry`=73461; -- Invisible Man
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.1428571 WHERE `entry`=73489; -- General Purpose Bunny JMF (Ground, Slow)
+UPDATE `creature_template` SET `BaseAttackTime`=1818, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=1048576 WHERE `entry` IN (73493 /*Demolitions Expert*/, 73494 /*Demolitions Assistant*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=1048576 WHERE `entry` IN (73495 /*Demolitions Expert*/, 73496 /*Demolitions Assistant*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=2097152 WHERE `entry`=73526; -- Starved Yeti
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry` IN (73538 /*Kor'kron War Wolf*/, 73539 /*Kor'kron Den Mother*/, 73541 /*Kor'kron Wolf Pup*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2230272 WHERE `entry`=73547; -- Dread Captain Genest
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33024, `unit_flags2`=2097152 WHERE `entry` IN (73554 /*Lady Jaina Proudmoore*/, 73584 /*Seamus Goldenkicks*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2097152 WHERE `entry` IN (73558 /*King Varian Wrynn*/, 73586 /*Amber Kearnen*/, 73587 /*Admiral Taylor*/, 73588 /*Marshal Troteman*/, 73927 /*High Tinker Mekkatorque*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=36700160 WHERE `entry` IN (73561 /*Alliance Vanguard*/, 73562 /*Alliance Vanguard*/, 73563 /*Alliance Vanguard*/);
+UPDATE `creature_template` SET `npcflag`=2176, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2097152 WHERE `entry`=73585; -- Mishka
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=34816 WHERE `entry` IN (73601 /*Eye Lasers*/, 66803 /*Ruukti Shadow Stalker*/);
+UPDATE `creature_template` SET `npcflag`=4224, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2097152 WHERE `entry`=73614; -- Tinkmaster Overspark
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (73667 /*Windreaver Tar'rath*/, 73670 /*Gate-Crasher Sav'ah*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9126986 WHERE `entry`=37862; -- Lord Jaraxxus Image
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=71305216 WHERE `entry` IN (73720 /*Mogu Spoils*/, 73721 /*Mantid Spoils*/, 73722 /*Mogu Spoils*/, 71512 /*Mantid Spoils*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=6291456 WHERE `entry` IN (73723 /*Jun-Wei*/, 73724 /*Zu Yin*/, 73725 /*Xiang-Lin*/, 71408 /*Kun-Da*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=294912, `unit_flags2`=2099200 WHERE `entry` IN (73775 /*War Master Kragg*/, 74091 /*Kor'kron Iron Sentinel*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=536870912, `unit_flags2`=33556481 WHERE `entry` IN (73847 /*Injured Darkspear Combatant*/, 73896 /*Injured Darkspear Combatant*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=33556480 WHERE `entry` IN (73850 /*Darkspear Emergency Medic*/, 73889 /*Advisor Mukkdor*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=73868; -- War Raptor
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=71303168 WHERE `entry`=73891; -- Cutter Beam Stalker Target
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=541097984, `unit_flags2`=2099200 WHERE `entry`=73904; -- Kor'kron Iron Sentinel
+UPDATE `creature_template` SET `BaseAttackTime`=1818, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=5242880 WHERE `entry`=73910; -- Vereesa Windrunner
+UPDATE `creature_template` SET `speed_run`=1.142857 WHERE `entry` IN (2242 /*Syndicate Spy*/, 41544 /*Frostmane Raider*/, 6206 /*Caverndeep Burrower*/, 6207 /*Caverndeep Ambusher*/, 6211 /*Caverndeep Reaver*/, 6212 /*Dark Iron Agent*/, 6218 /*Irradiated Slime*/, 6222 /*Leprous Technician*/, 6223 /*Leprous Defender*/, 6230 /*Peacekeeper Security Suit*/, 6232 /*Arcane Nullifier X-21*/, 6329 /*Irradiated Pillager*/, 6392 /*Holdout Medic*/, 43297 /*Gnome Traveler*/, 7603 /*Leprous Assistant*/, 9676 /*Tink Sprocketwhistle*/, 51758 /*Draenei Child*/, 18600 /*Injured Refugee*/, 19149 /*Telaari Citizen*/, 56149 /*Rake Tree*/, 21660 /*Cabal Abjurist*/, 23991 /*Gjalerbron Warrior*/, 59984 /*Trained Jibberwing*/, 62478 /*Trained Jibberwing*/, 27973 /*Crystalline Shardling*/, 65136 /*Golden Lotus Outrider*/, 65140 /*Golden Lotus Pathguard*/, 67028 /*Trained Jibberwing*/, 68247 /*Pandaren Laborer*/, 70465 /*Frostmane Bonechiller*/, 70471 /*Frostmane Berserker*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=67110912 WHERE `entry`=73920; -- Rope
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587456, `unit_flags2`=35651584 WHERE `entry`=73929; -- Gnomeregan Operative
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=768, `unit_flags2`=2048, `VehicleId`=2902 WHERE `entry`=73939; -- General Nazgrim
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024 WHERE `entry`=73941; -- Baine Bloodhoof
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33024 WHERE `entry`=73942; -- Vol'jin
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (73948 /*Commander Ik'tal*/, 73951 /*Commander Tik*/, 71409 /*Commander Zak'tar*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2097152, `VehicleId`=3047 WHERE `entry`=73957; -- Mekkatorque's Mechanostrider
+UPDATE `creature_template` SET `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=320, `unit_flags2`=4196352 WHERE `entry`=73961; -- Glaive Thrower
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=64, `unit_flags2`=2099200 WHERE `entry`=73962; -- Tyrande Whisperwind
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=35653632 WHERE `entry`=73963; -- Night Elf Sentinel
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=33556480 WHERE `entry`=73964; -- Kor'kron Grunt
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=33556480 WHERE `entry`=73968; -- Target Practice Aim Bunny
+UPDATE `creature_template` SET `unit_flags`=537133568, `unit_flags2`=2049 WHERE `entry`=38152; -- Weezil Slipshadow
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67108864 WHERE `entry` IN (74028 /*Bomb Spawner*/, 62142 /*Invisible Stalker*/);
+UPDATE `creature_template` SET `unit_flags`=32784 WHERE `entry` IN (2385 /*Foothill Stalker*/, 6011 /*Felguard Sentry*/, 41854 /*Sentinel Ambusher*/, 44432 /*Alliance Fox Hunter*/, 14762 /*Dun Baldar North Marshal*/, 14763 /*Dun Baldar South Marshal*/, 14764 /*Icewing Marshal*/, 14765 /*Stonehearth Marshal*/, 57648 /*Mothfighter*/, 27294 /*Tundra Scavenger*/, 70295 /*Wu Kao Ambusher*/);
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=3051 WHERE `entry`=74068; -- Gyrocopter
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=3052 WHERE `entry`=74071; -- Gnome Spider Tank
+UPDATE `creature_template` SET `speed_walk`=6, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=34816, `VehicleId`=3057 WHERE `entry`=74090; -- Invisible Man
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=3058 WHERE `entry`=74095; -- Kor'kron Shredder
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `VehicleId`=3059 WHERE `entry`=74108; -- Kor'kron Shredder
+UPDATE `creature_template` SET `unit_flags`=67108928 WHERE `entry`=2611; -- Fozruk
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry` IN (2769 /*Captain Steelgut*/, 2774 /*Doctor Draxlegauge*/, 40902 /*Chief Blastgineer Bombgutz*/, 6776 /*Magrin Rivermane*/, 15891 /*Lunar Festival Herald*/, 20206 /*Fei Fei*/, 56111 /*Lin Tenderpaw*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=2779; -- Prince Nazjak
+UPDATE `creature_template` SET `npcflag`=80 WHERE `entry` IN (3175 /*Krunn*/, 3555 /*Johan Focht*/, 52170 /*Gizzik Oregrab*/, 24868 /*Niobe Whizzlespark*/, 25277 /*Chief Engineer Leveny*/, 26907 /*Tisha Longbridge*/, 26912 /*Grumbol Stoutpick*/, 26976 /*Brunna Ironaxe*/, 26991 /*Sock Brightbolt*/, 26999 /*Fendrig Redbeard*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=33536 WHERE `entry`=39059; -- Kelsey Steelspark
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (39138 /*Theramore Highway Guard*/, 41158 /*Nethergarde Defender*/, 57299 /*Glade Hunter*/, 58741 /*Glade Sprinter*/, 23667 /*Winterskorn Rune-Seer*/, 61981 /*Dreadspinner Tender*/, 62023 /*Coldbite Crocolisk*/, 33053 /*Grimclaw*/);
+UPDATE `creature_template` SET `unit_flags`=295680, `unit_flags2`=0 WHERE `entry`=39188; -- Marley Twinbraid
+UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry`=3363; -- Magar
+UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry` IN (3364 /*Borya*/, 3369 /*Gotri*/, 25610 /*Scourge Prisoner*/, 63329 /*Emperor Crab*/, 68476 /*Horridon*/, 70956 /*Grizzle Gearslip*/, 71358 /*Crafty the Ambitious*/);
+UPDATE `creature_template` SET `unit_flags`=33555200 WHERE `entry` IN (39207 /*Bael'dun Phase 2 Effects Bunny (Medium)*/, 39213 /*Bael'dun Phase 2 Effects Bunny (Large)*/, 39227 /*Bael'dun Emergency Fire System*/, 4638 /*Magram Scout*/, 28206 /*[DND] L70ETC Drums*/, 70597 /*Roasting Spit*/);
+UPDATE `creature_template` SET `unit_flags`=33587200, `unit_flags2`=0 WHERE `entry`=39218; -- Bael'dun Survivor
+UPDATE `creature_template` SET `npcflag`=16777216, `unit_flags`=768, `VehicleId`=679 WHERE `entry`=39238; -- Burning Debris
+UPDATE `creature_template` SET `unit_flags`=67141632 WHERE `entry` IN (3461 /*Oasis Snapjaw*/, 44016 /*Coalpelt Bear*/, 47484 /*Yetimus the Yeti Lord*/, 56106 /*Thieving Wolf*/, 56357 /*Lupello*/, 58940 /*Elder Seadragon*/, 59037 /*Kung Din*/, 25712 /*Warbringer Goredrak*/, 26347 /*Runic War Golem*/, 28001 /*Dreadsaber*/, 67473 /*Animated Warrior*/);
+UPDATE `creature_template` SET `npcflag`=16 WHERE `entry` IN (3603 /*Cyndra Kindwhisper*/, 3604 /*Malorne Bladeleaf*/, 6287 /*Radnaal Maneweaver*/, 6306 /*Helene Peltskinner*/, 12025 /*Malvor*/, 16273 /*Mathreyn*/, 16278 /*Sathein*/, 16724 /*Miall*/, 16728 /*Akham*/, 17983 /*Heur*/, 26911 /*Bernadette Dexter*/, 26913 /*Frederic Burrhus*/, 26974 /*Tansy Wildmane*/, 26975 /*Arthur Henslowe*/, 26998 /*Rosemary Bovard*/, 27000 /*Trapper Jack*/, 27023 /*Apothecary Bressa*/, 65877 /*Han Flowerbloom*/, 30716 /*Thoth*/);
+UPDATE `creature_template` SET `unit_flags`=570721024, `unit_flags2`=33556481 WHERE `entry`=39972; -- Feralas Sentinel
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (4165 /*Elissa Dumas*/, 45151 /*High Cleric Alphus*/, 45152 /*Magus Bisp*/, 47253 /*Rundok*/, 16649 /*Torian*/, 16659 /*Lotheolan*/, 16685 /*Elara*/, 16738 /*Deremiis*/, 17484 /*Buruk*/, 17511 /*Fallat*/, 17520 /*Gurrag*/, 19177 /*Troll Commoner*/, 24713 /*"Crowleg" Dan*/, 29778 /*Scout Nisstina*/, 30008 /*Kari the Beastmaster*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags`=0 WHERE `entry`=40147; -- Baron Geddon
+UPDATE `creature_template` SET `npcflag`=81 WHERE `entry` IN (4598 /*Brom Killian*/, 43431 /*Periale*/);
+UPDATE `creature_template` SET `unit_flags`=33024 WHERE `entry` IN (40438 /*Steamwheedle Shyster*/, 45431 /*Gidwin Goldbraids*/, 45907 /*Feralas Sentinel*/, 46187 /*Marshtide Carouser*/, 46189 /*Stonard Carouser*/, 48391 /*Dragonmaw Warrior*/, 24073 /*Fearsome Horror*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=76357; -- Alterac Brew-Hound
+UPDATE `creature_template` SET `npcflag`=131 WHERE `entry` IN (4730 /*Lelanai*/, 9087 /*Bashana Runetotem*/, 10618 /*Rivern Frostwind*/);
+UPDATE `creature_template` SET `npcflag`=4241 WHERE `entry`=4888; -- Marie Holdston
+UPDATE `creature_template` SET `npcflag`=4225 WHERE `entry` IN (4892 /*Jensen Farran*/, 45148 /*Morris Vant*/, 45149 /*Outfitter Mendelev*/);
+UPDATE `creature_template` SET `npcflag`=8192 WHERE `entry`=40768; -- Tilly Topspin
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (4968 /*Lady Jaina Proudmoore*/, 47902 /*Lirastrasza*/, 52488 /*Elderlimb*/, 16802 /*Lor'themar Theron*/, 17468 /*Prophet Velen*/, 30406 /*Bethod Feigr*/, 32524 /*Willy Maybe*/);
+UPDATE `creature_template` SET `unit_flags`=33587968 WHERE `entry` IN (40820 /*War Kodo*/, 41206 /*World Invisible Trigger (flying)*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1 WHERE `entry` IN (5029 /*Jiming*/, 5034 /*Winwa*/, 13636 /*Strange Snowman*/, 16868 /*Winsum*/, 16869 /*Jising*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry` IN (5044 /*Theramore Skirmisher*/, 5045 /*Private Hallan*/, 5046 /*Lieutenant Caldwell*/);
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry` IN (40942 /*Warsong Wing Commander*/, 41987 /*Krom'gar Hot Air Balloon*/, 42419 /*Image of High Tinker Mekkatorque*/, 44923 /*North Tide's Invisible Stalker (Large)*/, 46949 /*Emberscar the Devourer*/, 53392 /*Kalecgos*/, 53398 /*Firebrand of Tarecgosa*/, 53400 /*Firebrand of Tarecgosa 01*/, 53406 /*Firebrand of Tarecgosa*/, 27641 /*Centrifuge Construct*/, 32254 /*Sniper Cannon*/, 34832 /*Warsong War Rider*/);
+UPDATE `creature_template` SET `unit_flags2`=1073743872 WHERE `entry`=40995; -- Azure Iron Ore
+UPDATE `creature_template` SET `npcflag`=83 WHERE `entry` IN (5174 /*Springspindle Fizzlegear*/, 11017 /*Roxxik*/, 16667 /*Danwe*/, 16726 /*Ockil*/, 17634 /*K. Lee Smallfry*/);
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry` IN (5184 /*Theramore Sentry*/, 30148 /*Infesting Jormungar*/, 34968 /*Stonetalon Sentinel*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1250, `unit_flags`=32832 WHERE `entry`=41280; -- Razelikh the Defiler
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry` IN (41400 /*Highland Razormaw*/, 58887 /*Krasari Mauler*/, 58893 /*Sungraze Mushan*/, 26271 /*Emaciated Mammoth Bull*/, 28380 /*Shattertusk Bull*/, 67763 /*Slateshell Ancient*/, 70069 /*Shan'ze Animator*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1538 WHERE `entry` IN (41422 /*Bloodwash Zealot*/, 41423 /*Bloodwash Acolyte*/, 58116 /*Carp Hunter*/);
+UPDATE `creature_template` SET `unit_flags`=33600 WHERE `entry`=5649; -- Sandfury Blood Drinker
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.8571429 WHERE `entry`=41609; -- Silversand Burrower
+UPDATE `creature_template` SET `speed_run`=1.190476 WHERE `entry` IN (5843 /*Slave Worker*/, 55483 /*Plump Virmen*/, 55504 /*Plump Carrotcruncher*/, 55506 /*Raggis*/);
+UPDATE `creature_template` SET `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry`=5996; -- Nethergarde Miner
+UPDATE `creature_template` SET `npcflag`=4194433 WHERE `entry` IN (41893 /*Gelbin*/, 43021 /*Adrius*/, 44348 /*Carey Willis*/, 10048 /*Gereck*/, 49577 /*Baird Darkfeather*/, 49803 /*Kennen*/, 53780 /*Limiah Whitebranch*/);
+UPDATE `creature_template` SET `unit_flags2`=4196353, `dynamicflags`=0 WHERE `entry`=41894; -- Goblin Heavy Gun
+UPDATE `creature_template` SET `speed_run`=1.142857, `BaseAttackTime`=2000 WHERE `entry` IN (6225 /*Mechano-Tank*/, 6226 /*Mechano-Flamewalker*/);
+UPDATE `creature_template` SET `speed_run`=1.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=6227; -- Mechano-Frostwalker
+UPDATE `creature_template` SET `speed_run`=1.428571, `RangeAttackTime`=2000 WHERE `entry` IN (6229 /*Crowd Pummeler 9-60*/, 7897 /*Alarm-a-bomb 2600*/);
+UPDATE `creature_template` SET `speed_run`=1.142857, `unit_flags2`=2099200 WHERE `entry` IN (6235 /*Electrocutioner 6000*/, 7800 /*Mekgineer Thermaplugg*/);
+UPDATE `creature_template` SET `unit_flags`=0, `dynamicflags`=0 WHERE `entry`=42155; -- Twilight Rifleman
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857 WHERE `entry` IN (6391 /*Holdout Warrior*/, 8582 /*Kadrak*/, 44559 /*Mecha-Marine*/, 44561 /*Face*/, 57825 /*Yun*/, 61070 /*Explosive Hatred*/, 66271 /*Felstorm Summoner*/, 69946 /*Hutia*/);
+UPDATE `creature_template` SET `speed_walk`=1, `RangeAttackTime`=2000 WHERE `entry`=6407; -- Holdout Technician
+UPDATE `creature_template` SET `unit_flags`=33587200, `unit_flags2`=67584 WHERE `entry`=42316; -- Gnomeregan Infantry
+UPDATE `creature_template` SET `speed_walk`=0.3, `speed_run`=0.3428572, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=6492; -- Rift Spawn
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (42563 /*Toxic Pool*/, 30272 /*Njorndar Proto-Drake*/, 35299 /*Royal Gryphon*/);
+UPDATE `creature_template` SET `HoverHeight`=1.5 WHERE `entry` IN (42657 /*Hyjal Eagle*/, 42658 /*Hyjal Roc*/, 42664 /*Hyjal Huntress*/);
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry`=42849; -- High Tinker Mekkatorque
+UPDATE `creature_template` SET `speed_walk`=1.555556, `speed_run`=1.142857 WHERE `entry`=7031; -- Obsidian Elemental
+UPDATE `creature_template` SET `npcflag`=4194433 WHERE `entry` IN (43019 /*Teldorae*/, 43766 /*Roslyn Paxton*/, 43994 /*Salustred*/, 45498 /*"Salty" Rocka*/, 10050 /*Seikwa*/, 16665 /*Paniar*/, 16764 /*Arthaid*/, 19019 /*Luftasia*/, 23392 /*Skyguard Stable Master*/, 27385 /*Ronald Anderson*/, 30304 /*Imhadria*/);
+UPDATE `creature_template` SET `unit_flags`=33088 WHERE `entry` IN (7268 /*Sandfury Guardian*/, 8120 /*Sul'lithuz Abomination*/, 26626 /*Scourge Reanimator*/);
+UPDATE `creature_template` SET `unit_flags`=33088, `unit_flags2`=2099200 WHERE `entry`=7271; -- Witch Doctor Zum'rah
+UPDATE `creature_template` SET `unit_flags2`=2162688 WHERE `entry`=43259; -- Rocket Defense Turret
+UPDATE `creature_template` SET `unit_flags`=33536 WHERE `entry` IN (43571 /*Kidnapped Redridge Citizen*/, 43572 /*Kidnapped Redridge Citizen*/, 55119 /*Pygmy Cockatrice*/, 55120 /*Darkmoon Penguin*/, 19725 /*"Epic" Malone*/, 19726 /*"Creepjack"*/, 26606 /*Anub'ar Slayer*/, 63934 /*Mistfall Villager*/, 63935 /*Mistfall Villager*/, 33460 /*Orgrimmar Valiant*/, 33479 /*Stormwind Valiant*/);
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=512 WHERE `entry`=7850; -- Kernobee
+UPDATE `creature_template` SET `npcflag`=18 WHERE `entry`=7871; -- Se'Jib
+UPDATE `creature_template` SET `npcflag`=640 WHERE `entry` IN (8152 /*Harnor*/, 16732 /*Onnis*/, 18810 /*Otonambusi*/, 27041 /*Fanny McLumpkins*/, 27193 /*Alornerk*/, 30011 /*Sigdis the Trader*/, 30257 /*Scout Yribria*/, 30310 /*Boltskull*/);
+UPDATE `creature_template` SET `unit_flags`=570688256, `unit_flags2`=2049 WHERE `entry` IN (8555 /*Crypt Stalker*/, 8556 /*Crypt Walker*/, 8557 /*Crypt Horror*/, 8558 /*Crypt Slayer*/, 31402 /*Azure Scalebane*/, 31403 /*Azure Spellweaver*/);
+UPDATE `creature_template` SET `unit_flags`=537165824, `unit_flags2`=2049 WHERE `entry` IN (44436 /*Hearthglen Shieldbearer*/, 59104 /*Shrine Elk*/, 26816 /*Focus Wizard*/);
+UPDATE `creature_template` SET `unit_flags`=570721024, `unit_flags2`=67110913 WHERE `entry`=44479; -- Redpine Shaman
+UPDATE `creature_template` SET `npcflag`=128 WHERE `entry` IN (8666 /*Lil Timmy*/, 9636 /*Kireena*/, 16782 /*Yatheon*/, 30732 /*Sessoh*/);
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (8927 /*Dark Screecher*/, 8928 /*Burrowing Thundersnout*/);
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=9029; -- Eviscerator
+UPDATE `creature_template` SET `unit_flags`=16 WHERE `entry`=9164; -- Elder Diemetradon
+UPDATE `creature_template` SET `unit_flags`=33536, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=45198; -- Forsaken Catapult
+UPDATE `creature_template` SET `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=9476; -- Watchman Doomgrip
+UPDATE `creature_template` SET `speed_walk`=0.444444, `speed_run`=0.6785714, `unit_flags`=536903680 WHERE `entry`=45746; -- Vermillion Mender
+UPDATE `creature_template` SET `unit_flags`=262144 WHERE `entry` IN (45830 /*Off-Duty Siegeworker*/, 60825 /*Tormented Spirit*/, 63139 /*Nightsaber*/);
+UPDATE `creature_template` SET `dynamicflags`=0 WHERE `entry` IN (45874 /*Schnottz Scout*/, 56371 /*Suspicious Infiltrator*/, 26219 /*Iruk*/, 28113 /*Mosswalker Victim*/);
+UPDATE `creature_template` SET `npcflag`=2, `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=10076; -- High Priestess of Thaurissan
+UPDATE `creature_template` SET `unit_class`=8, `unit_flags`=32768 WHERE `entry`=46067; -- Grimtotem Spirit
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=10376; -- Crystal Fang
+UPDATE `creature_template` SET `unit_flags`=528 WHERE `entry`=10599; -- Hulfnar Stonetotem
+UPDATE `creature_template` SET `unit_flags`=33587456 WHERE `entry`=46447; -- Injured Gnome
+UPDATE `creature_template` SET `unit_flags`=33554432 WHERE `entry` IN (46688 /*Rocket Hologram*/, 57478 /*Invisible Stalker*/, 29929 /*Mechano-Hog*/, 35591 /*Lesser Infernal*/);
+UPDATE `creature_template` SET `unit_flags`=33555200, `unit_flags2`=1073743872 WHERE `entry`=46692; -- ROCK ON HOLOGRAM
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (47372 /*Gloomwing*/, 59648 /*Valley Yak*/, 62128 /*Kor'thik Fleetwing*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000 WHERE `entry` IN (11603 /*Whitewhisker Digger*/, 11604 /*Whitewhisker Geomancer*/, 31438 /*Shadow Vault Abomination*/, 70741 /*Hamfisted Bruiser*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2400 WHERE `entry`=11605; -- Whitewhisker Overseer
+UPDATE `creature_template` SET `unit_flags2`=2049, `dynamicflags`=0 WHERE `entry` IN (47717 /*Benjamin Henderson*/, 47719 /*Alexis Torry*/, 47721 /*Foreman Milos*/);
+UPDATE `creature_template` SET `unit_flags`=33280 WHERE `entry` IN (47777 /*Animus*/, 25253 /*Valiance Keep Footman*/, 61318 /*Tree Python*/, 61439 /*Rattlesnake*/, 62186 /*Desert Spider*/, 62523 /*Sidewinder*/, 70602 /*Scout Stonebeard*/);
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=2099201 WHERE `entry`=47780; -- Vermillion Skyscreamer
+UPDATE `creature_template` SET `unit_flags`=16 WHERE `entry`=11948; -- Vanndar Stormpike
+UPDATE `creature_template` SET `unit_flags2`=35651584 WHERE `entry`=47798; -- Vermillion Slayer
+UPDATE `creature_template` SET `unit_flags`=33600 WHERE `entry`=47905; -- Baleflame
+UPDATE `creature_template` SET `npcflag`=3712, `speed_walk`=0.5, `speed_run`=0.5714286 WHERE `entry`=12096; -- Stormpike Quartermaster
+UPDATE `creature_template` SET `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry`=47947; -- Schnottz's Bodyguard
+UPDATE `creature_template` SET `npcflag`=643 WHERE `entry` IN (12384 /*Augustus the Touched*/, 16187 /*Quartermaster Lymel*/);
+UPDATE `creature_template` SET `unit_class`=2 WHERE `entry`=48322; -- Chet the Slime-Breeder
+UPDATE `creature_template` SET `npcflag`=82 WHERE `entry`=48513; -- Revi Ramrod
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=2.857143, `unit_flags`=768, `unit_flags2`=4196352, `VehicleId`=1337, `HoverHeight`=3 WHERE `entry`=48576; -- Kasha
+UPDATE `creature_template` SET `npcflag`=16777216 WHERE `entry` IN (48708 /*The Uncrashable*/, 68238 /*Carousel Rocket*/, 68239 /*Carousel Wyvern*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=33024 WHERE `entry`=48840; -- Barley H. Crown
+UPDATE `creature_template` SET `RangeAttackTime`=2000 WHERE `entry`=13079; -- Keetar
+UPDATE `creature_template` SET `unit_flags2`=37750784 WHERE `entry`=49113; -- Scorch Mark Bunny JSB
+UPDATE `creature_template` SET `unit_flags2`=2099201, `dynamicflags`=0 WHERE `entry` IN (49115 /*Schnottz Infantryman Corpse*/, 29543 /*Frostworg Carcass*/, 29544 /*Dead Frost Giant*/, 29571 /*Dead Drakerider*/, 30163 /*Dead Iron Giant*/, 32569 /*Corpse of the Fallen Worg*/);
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=512 WHERE `entry` IN (13433 /*Wulmort Jinglepocket*/, 13434 /*Macey Jinglepocket*/, 13435 /*Khole Jinglepocket*/, 23064 /*Eebee Jinglepocket*/, 23065 /*Olnayvi Copperpinch*/);
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=512 WHERE `entry`=13436; -- Guchie Jinglepocket
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=832 WHERE `entry` IN (13437 /*Wing Commander Ichman*/, 13438 /*Wing Commander Slidore*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.142857, `unit_flags`=832 WHERE `entry`=13439; -- Wing Commander Vipore
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=1, `speed_run`=1.385714 WHERE `entry`=13441; -- Frostwolf Wolf Rider Commander
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768 WHERE `entry`=13444; -- Greatfather Winter
+UPDATE `creature_template` SET `speed_run`=1.142857 WHERE `entry`=13577; -- Stormpike Ram Rider Commander
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64 WHERE `entry`=13616; -- Frostwolf Stable Master
+UPDATE `creature_template` SET `npcflag`=4194304 WHERE `entry`=13617; -- Stormpike Stable Master
+UPDATE `creature_template` SET `unit_flags`=33604352 WHERE `entry`=50047; -- Injured Stormwind Infantry
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=64 WHERE `entry`=14228; -- Giggler
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=14229; -- Accursed Slitherblade
+UPDATE `creature_template` SET `npcflag`=2097152 WHERE `entry`=50143; -- Auctioneer Itoran
+UPDATE `creature_template` SET `speed_run`=1, `unit_flags`=32832, `HoverHeight`=2 WHERE `entry`=50335; -- Alitus
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814 WHERE `entry`=50339; -- Sulik'shor
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=32832 WHERE `entry`=50361; -- Ornat
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry` IN (15102 /*Silverwing Emissary*/, 29344 /*Lord-Commander Arete*/);
+UPDATE `creature_template` SET `speed_run`=2.142857 WHERE `entry` IN (51372 /*Thunder Bluff Wind Rider*/, 71478 /*Embodied Anguish*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.289683 WHERE `entry`=15664; -- Metzen the Reindeer
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=32768 WHERE `entry` IN (51525 /*Marshal Expeditions Mercenary*/, 51535 /*Chillwind Guard*/, 51847 /*Mudsprocket Bruiser*/);
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512 WHERE `entry`=15745; -- Greatfather Winter's Helper
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=32768 WHERE `entry` IN (51610 /*Emerald Druid*/, 53563 /*Moonglade Warden*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.428571, `BaseAttackTime`=750, `unit_flags`=64, `unit_flags2`=2099200 WHERE `entry`=16181; -- Rokad the Ravager
+UPDATE `creature_template` SET `unit_flags`=528 WHERE `entry`=16197; -- Arcanist Vandril
+UPDATE `creature_template` SET `npcflag`=4227 WHERE `entry`=16376; -- Craftsman Wilhelm
+UPDATE `creature_template` SET `unit_flags`=16, `unit_flags2`=2099200 WHERE `entry`=52333; -- Balgor Whipshank
+UPDATE `creature_template` SET `unit_flags`=768, `unit_flags2`=2099200, `VehicleId`=1590 WHERE `entry`=52334; -- Mor'shan Caravan Attack Controller
+UPDATE `creature_template` SET `npcflag`=19 WHERE `entry` IN (16669 /*Bemarrin*/, 17215 /*Daedal*/);
+UPDATE `creature_template` SET `npcflag`=19 WHERE `entry`=16723; -- Lucc
+UPDATE `creature_template` SET `npcflag`=4224 WHERE `entry`=16735; -- Muhaa
+UPDATE `creature_template` SET `HoverHeight`=2.5 WHERE `entry` IN (52594 /*Goldwing Hawk*/, 53522 /*Baby Octopus*/, 30013 /*Stormcrest Eagle*/);
+UPDATE `creature_template` SET `npcflag`=2176 WHERE `entry`=16757; -- Bildine
+UPDATE `creature_template` SET `unit_flags`=64 WHERE `entry` IN (16831 /*Nethergarde Infantry*/, 26620 /*Drakkari Guardian*/, 30579 /*Marga Bearbrawn*/);
+UPDATE `creature_template` SET `npcflag`=2, `unit_flags`=512 WHERE `entry`=16993; -- Wounded Blood Elf Pilgrim
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry`=52986; -- Dorda'en Nightweaver
+UPDATE `creature_template` SET `unit_flags2`=136316928 WHERE `entry` IN (53085 /*Flamewaker Sentinel*/, 29694 /*Hyldsmeet Drakerider*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags2`=2099200 WHERE `entry`=17306; -- Watchkeeper Gargolmar
+UPDATE `creature_template` SET `unit_flags`=576, `unit_flags2`=2099200 WHERE `entry`=17307; -- Vazruden the Herald
+UPDATE `creature_template` SET `unit_flags2`=2097152 WHERE `entry` IN (17367 /*Nether Portal - Serenity*/, 17368 /*Nether Portal - Dominance*/, 17369 /*Nether Portal - Perseverence*/);
+UPDATE `creature_template` SET `npcflag`=209 WHERE `entry`=53409; -- "Kobold" Kerik
+UPDATE `creature_template` SET `npcflag`=145 WHERE `entry`=53410; -- Lissah Spellwick
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags2`=4196352 WHERE `entry`=53422; -- Dragonwrath, Tarecgosa's Rest
+UPDATE `creature_template` SET `npcflag`=83 WHERE `entry`=17637; -- Mack Diver
+UPDATE `creature_template` SET `speed_walk`=0.888888 WHERE `entry`=17878; -- Scourge Siege Engineer
+UPDATE `creature_template` SET `npcflag`=3203 WHERE `entry`=18019; -- Timothy Daniels
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `unit_flags`=32768 WHERE `entry`=54339; -- Ancient Charhound
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2.285714, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=949 WHERE `entry`=54499; -- The Abominable Greench
+UPDATE `creature_template` SET `speed_run`=0.8571429, `unit_flags`=33587200 WHERE `entry` IN (54509 /*Nasty Little Helper*/, 54524 /*Wicked Little Helper*/);
+UPDATE `creature_template` SET `npcflag`=145 WHERE `entry` IN (18771 /*Brumman*/, 56777 /*Ni Gentlepaw*/);
+UPDATE `creature_template` SET `npcflag`=209 WHERE `entry` IN (18775 /*Lebowski*/, 31247 /*Roxi Ramrocket*/, 33634 /*Engineer Sinbei*/, 33640 /*Hanlir*/, 33677 /*Technician Mihila*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=54615; -- Nodd Codejack
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166080, `unit_flags2`=33556481 WHERE `entry`=54623; -- Shipwrecked Footman
+UPDATE `creature_template` SET `npcflag`=66177 WHERE `entry` IN (18908 /*Innkeeper Kerp*/, 18914 /*Caregiver Isel*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=32768 WHERE `entry` IN (18927 /*Human Commoner*/, 19148 /*Dwarf Commoner*/, 19171 /*Draenei Commoner*/, 19172 /*Gnome Commoner*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54960 /*Elder Lusshan*/, 56222 /*Bold Karasshi*/);
+UPDATE `creature_template` SET `speed_run`=0.9920571, `HoverHeight`=1.15 WHERE `entry`=54976; -- Barbed Ray
+UPDATE `creature_template` SET `speed_run`=0.8571429, `unit_flags`=33536 WHERE `entry`=55003; -- Rotten Little Helper
+UPDATE `creature_template` SET `npcflag`=721 WHERE `entry`=19186; -- Kylene
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (55167 /*Alliance Banner*/, 55174 /*Naval Map*/, 55176 /*Alliance Orders*/);
+UPDATE `creature_template` SET `speed_run`=1.071429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=55175; -- Alliance Cannon
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587968, `unit_flags2`=2048 WHERE `entry`=55177; -- Bunny: Sapphire Explosion
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (55282 /*Sully "The Pickle" McLeary*/, 63238 /*Xi, Friend to the Small*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=55333; -- Rell Nightwind
+UPDATE `creature_template` SET `unit_flags`=537166080, `unit_flags2`=2049 WHERE `entry` IN (55438 /*Outcast Sprite*/, 55566 /*Azjol-anak Warrior*/);
+UPDATE `creature_template` SET `npcflag`=640, `unit_flags`=537166080, `unit_flags2`=2049 WHERE `entry`=19617; -- Boots
+UPDATE `creature_template` SET `unit_flags`=570721024, `unit_flags2`=2049 WHERE `entry` IN (55593 /*Needle Sprite*/, 68328 /*Explorer's League Surveyor*/);
+UPDATE `creature_template` SET `unit_flags`=570687744, `unit_flags2`=2049 WHERE `entry`=19760; -- Cooling Infernal
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570688320, `unit_flags2`=2049 WHERE `entry`=55606; -- Pool of Blood - small
+UPDATE `creature_template` SET `unit_flags2`=2176 WHERE `entry`=55783; -- Ravenholdt Sentry
+UPDATE `creature_template` SET `unit_flags`=33024 WHERE `entry`=20102; -- Goblin Commoner
+UPDATE `creature_template` SET `unit_flags`=33587200 WHERE `entry` IN (56033 /*Woolly Sheep*/, 62509 /*Amber Parasite*/, 63526 /*Bataari Flamecaller*/, 32472 /*Ebon Blade Gargoyle*/, 68829 /*Skyfire Engineer*/);
+UPDATE `creature_template` SET `unit_flags2`=34816 WHERE `entry` IN (56113 /*Clever Ashyo*/, 56312 /*Shang Thunderfoot*/, 64324 /*Anglers Fisherman*/, 66306 /*Blacktalon Agent*/, 68868 /*Meng Meng*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (56114 /*Kang Bramblestaff*/, 58821 /*Lyalia*/, 59620 /*Lorewalker Cho*/, 65910 /*Sunke Khang*/);
+UPDATE `creature_template` SET `speed_run`=1.142857, `unit_flags`=32768 WHERE `entry`=56160; -- Moonfang Snarler
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=33536 WHERE `entry`=56206; -- Pandriarch Windfur
+UPDATE `creature_template` SET `npcflag`=83, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56227; -- Mishka
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=570720256, `unit_flags2`=33556481 WHERE `entry`=56264; -- Grookin Whomper
+UPDATE `creature_template` SET `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=56315; -- Jinyu Captive
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286 WHERE `entry`=56719; -- Sha of Violence
+UPDATE `creature_template` SET `npcflag`=82 WHERE `entry`=20914; -- Aalun
+UPDATE `creature_template` SET `speed_walk`=0.333334, `speed_run`=0.9142857 WHERE `entry`=56753; -- Hornbill Strider
+UPDATE `creature_template` SET `speed_walk`=3.2 WHERE `entry`=56754; -- Azure Serpent
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1 WHERE `entry`=56766; -- Volatile Energy
+UPDATE `creature_template` SET `speed_walk`=1.6 WHERE `entry` IN (56767 /*Shado-Pan Fire Archer*/, 58794 /*Slain Shado-Pan Defender*/, 59036 /*Slain Shado-pan Initiate*/, 59895 /*Shado-Pan Monk*/, 64549 /*Shado-Pan Ice Archer*/);
+UPDATE `creature_template` SET `speed_walk`=2.4, `speed_run`=1.714286 WHERE `entry`=56884; -- Taran Zhu
+UPDATE `creature_template` SET `npcflag`=640, `speed_walk`=1 WHERE `entry`=21084; -- Braagor
+UPDATE `creature_template` SET `speed_walk`=1 WHERE `entry`=21088; -- Matron Varah
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (57119 /*Hozen Ravager*/, 66106 /*Hozen Scavenger*/, 66153 /*Hozen Scavenger*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=57123; -- Haiyun Greentill
+UPDATE `creature_template` SET `speed_walk`=1.6, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=21735; -- Infernal Oversoul
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.214286 WHERE `entry` IN (57710 /*Delivery Cart*/, 59497 /*Delivery Cart*/);
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry`=22015; -- Eye of the Storm Envoy
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33587968 WHERE `entry`=22205; -- Lord Corruptor
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry`=22232; -- Grishna Arakkoa
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry`=22233; -- Unsuspecting Leafbeard
+UPDATE `creature_template` SET `speed_walk`=0.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry`=22235; -- Evil Koi-Koi
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432 WHERE `entry` IN (22240 /*Leafbeard Flavor Event Channel Bunny*/, 22246 /*Leafbeard Flavor Event Particle Bunny*/);
+UPDATE `creature_template` SET `npcflag`=641 WHERE `entry` IN (22266 /*Ogri'la Grubgiver*/, 22270 /*Ogri'la Merchant*/, 23110 /*Ogri'la Keg King*/, 25248 /*"Salty" John Thorpe*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (58630 /*Ambassador Han*/, 60178 /*Sya Zhong*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2115584 WHERE `entry` IN (58737 /*Viletongue Raider*/, 58738 /*Viletongue Skirmisher*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33600, `unit_flags2`=6291456 WHERE `entry`=58739; -- Borokhula the Destroyer
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=2265 WHERE `entry`=58740; -- Brewmaster Blanche
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=0 WHERE `entry`=58769; -- Vicejaw
+UPDATE `creature_template` SET `speed_walk`=14, `speed_run`=1.714286, `unit_flags2`=2099200 WHERE `entry`=23051; -- Monstrous Kaliri
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=58916; -- Brewkeg
+UPDATE `creature_template` SET `npcflag`=2177, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=58926; -- Magister Xintar
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags`=262144 WHERE `entry`=58968; -- Hopeless Monk
+UPDATE `creature_template` SET `speed_walk`=0.7, `speed_run`=0.8 WHERE `entry`=59232; -- Crane Wing Monk
+UPDATE `creature_template` SET `speed_walk`=1 WHERE `entry` IN (23550 /*Valgarde Yeoman*/, 27779 /*Image of Noth*/, 29019 /*Dockhand*/);
+UPDATE `creature_template` SET `BaseAttackTime`=1000 WHERE `entry`=59483; -- Ur-Bataar
+UPDATE `creature_template` SET `speed_run`=1.142857, `HoverHeight`=1 WHERE `entry`=23665; -- Winterskorn Raider
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=294912 WHERE `entry`=59526; -- Trail Yakker
+UPDATE `creature_template` SET `unit_flags2`=2048 WHERE `entry` IN (23691 /*Shoveltusk Stag*/, 68869 /*Luo Luo*/, 69144 /*Zandalari Beastlord*/, 69180 /*Tamed Bladetalon*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200, `VehicleId`=2073 WHERE `entry`=59635; -- Viletongue Warrior Cliff-Scaling Vehicle
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200, `VehicleId`=2075 WHERE `entry`=59650; -- Viletongue Skirmisher Cliff-Scaling Vehicle
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry` IN (59734 /*Dave's Industrial Light and Magic Bunny (Large)(Sessile)(Large AOI)*/, 67688 /*Kor'kron Commando*/, 67708 /*Kor'kron Paratrooper*/, 71459 /*Controller*/);
+UPDATE `creature_template` SET `VehicleId`=2128 WHERE `entry`=60140; -- Mine Cart
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_class`=8 WHERE `entry`=24410; -- Vazruden the Herald Image
+UPDATE `creature_template` SET `speed_run`=1.142857, `unit_class`=8 WHERE `entry`=24411; -- Shattered Hand Centurion Image
+UPDATE `creature_template` SET `HoverHeight`=1.35 WHERE `entry`=60278; -- Sting Ray
+UPDATE `creature_template` SET `npcflag`=8192, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=60441; -- Nan-Po
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.6928571, `BaseAttackTime`=2600 WHERE `entry`=60493; -- Kafa-Crazed Mountain Goat
+UPDATE `creature_template` SET `BaseAttackTime`=1667 WHERE `entry`=60564; -- Kafa-Crazed Yeti
+UPDATE `creature_template` SET `unit_flags`=537166080 WHERE `entry`=60593; -- Experienced Guide
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (61259 /*Widow Spiderling*/, 61691 /*Irradiated Roach*/, 61704 /*Grasslands Cottontail*/, 61826 /*Blighthawk*/, 62020 /*Ruby Sapling*/, 62050 /*Grey Moth*/, 62250 /*Darkshore Cub*/, 62524 /*Scarab Hatchling*/, 68820 /*Infinite Whelpling*/, 68838 /*Fluxfire Feline*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=61370; -- Swamp Moth
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (61375 /*Restless Shadeling*/, 62191 /*Venomspitter Hatchling*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry` IN (61434 /*Sik'thik Vanguard*/, 61436 /*Sik'thik Bladedancer*/, 62348 /*Sik'thik Soldier*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=61483; -- Reinforcements Summoner
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4196352 WHERE `entry`=61485; -- General Pa'valak
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `unit_flags`=536903680 WHERE `entry`=61509; -- Sra'thik Kunchong
+UPDATE `creature_template` SET `npcflag`=640, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61596; -- Steepmaster Puoba
+UPDATE `creature_template` SET `npcflag`=128, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61598; -- Silkweaver Rui
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags`=33600, `unit_flags2`=2097152 WHERE `entry`=61634; -- Commander Vo'jak
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2097152 WHERE `entry`=61670; -- Sik'thik Demolisher
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2097152 WHERE `entry`=61699; -- Sik'thik Amberwing
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2097152 WHERE `entry`=61701; -- Sik'thik Warrior
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=67110912 WHERE `entry`=61817; -- Mantid Tar Keg
+UPDATE `creature_template` SET `HoverHeight`=12.5 WHERE `entry`=26276; -- Nexus Guardian
+UPDATE `creature_template` SET `unit_flags`=294912 WHERE `entry` IN (62122 /*Dusklight Skirmisher*/, 62396 /*Shado-Pan Tiger*/, 63033 /*Brewgarden Defender*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2097152 WHERE `entry`=62205; -- Wing Leader Ner'onok
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.16, `speed_run`=0.05714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=62246; -- Shimmershell Snail
+UPDATE `creature_template` SET `HoverHeight`=3.45 WHERE `entry`=26607; -- Anub'ar Blightbeast
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=34816 WHERE `entry`=62464; -- Pan of the Martial Spirit
+UPDATE `creature_template` SET `unit_flags`=33554496 WHERE `entry`=26638; -- Risen Drakkari Bat Rider
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (62485 /*Gagoon*/, 62486 /*Oku-Oku*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=67110912 WHERE `entry`=62504; -- Ookie's Orange
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=131072, `unit_flags2`=32768 WHERE `entry`=62557; -- Unga Totem
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2048 WHERE `entry` IN (62684 /*Barrel Target*/, 67961 /*GNOME Gadget Bunny*/);
+UPDATE `creature_template` SET `npcflag`=2, `unit_flags`=537165824 WHERE `entry`=26896; -- Nozzlerust Supply Runner
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000 WHERE `entry` IN (62757 /*Kor'thik Havoc*/, 63976 /*Krik'thik Needler*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry`=62932; -- Shinyseed
+UPDATE `creature_template` SET `unit_flags`=2097152 WHERE `entry`=62941; -- Right
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=62944; -- Rikkitun Chanter
+UPDATE `creature_template` SET `npcflag`=179 WHERE `entry` IN (63014 /*Marcus Jensen*/, 63067 /*Naleen*/, 63070 /*Valeena*/, 63073 /*Ansel Fincap*/, 63075 /*Grady Bannson*/, 63083 /*Will Larsons*/, 63596 /*Audrey Burnhep*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (63018 /*Brinyfin Trumpeter*/, 63019 /*Brinyfin Darter*/, 65386 /*Brinyfin Patriarch*/, 65390 /*Spindlegrin Hatchling*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=2 WHERE `entry`=63020; -- Spindlegrin Remora
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554944, `unit_flags2`=4229120 WHERE `entry`=63028; -- Stolen Unga Brew Keg
+UPDATE `creature_template` SET `npcflag`=179, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=63077; -- Lehna
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=63078; -- Flutters
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2097152 WHERE `entry`=63106; -- Sik'thik Swarmer
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (63194 /*Steven Lisbane*/, 66822 /*Goz Banefury*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=262144, `unit_flags2`=2048 WHERE `entry` IN (63239 /*Monk Trainee*/, 63242 /*Monk Trainee*/);
+UPDATE `creature_template` SET `unit_flags2`=2048 WHERE `entry`=63280; -- Deckhand
+UPDATE `creature_template` SET `speed_run`=0.7857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=63311; -- Scar-Shell
+UPDATE `creature_template` SET `speed_run`=1.714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33024, `unit_flags2`=2097152 WHERE `entry`=63312; -- Jol'Grum
+UPDATE `creature_template` SET `speed_walk`=1.555556, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=63313; -- Little Liuyang
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2099200 WHERE `entry`=63334; -- Xuen
+UPDATE `creature_template` SET `HoverHeight`=15 WHERE `entry`=27608; -- Azure Dragon
+UPDATE `creature_template` SET `npcflag`=8195 WHERE `entry`=63498; -- Min the Breeze Rider
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=63510; -- Wulon
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=4196352 WHERE `entry`=63565; -- Mantid Catapult
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=63695; -- Baolai the Immolator
+UPDATE `creature_template` SET `HoverHeight`=2 WHERE `entry`=28004; -- Goretalon Roc
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry`=63940; -- Fireworks Barrel
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=35653632 WHERE `entry`=63974; -- Krik'thik Locust-Guard
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (64004 /*Ghostly Pandaren Fisherman*/, 64133 /*Tenwu of the Red Smoke*/, 66031 /*Elder Daelo*/, 66032 /*Watcher Jo Lin*/, 70165 /*Julie Fabernackle*/);
+UPDATE `creature_template` SET `npcflag`=134217728 WHERE `entry`=64045; -- Thaumaturge Faraket
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=64263; -- Shado-Pan Wallwatcher
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_flags`=33088, `unit_flags2`=2099200 WHERE `entry`=64280; -- Maki Waterblade
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=1 WHERE `entry`=64345; -- Saltscale Carp
+UPDATE `creature_template` SET `unit_flags`=33554688, `VehicleId`=2447 WHERE `entry`=64367; -- Invisible Man
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64475; -- Mishi
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873 WHERE `entry`=64554; -- Zhao-Ren
+UPDATE `creature_template` SET `npcflag`=268435456 WHERE `entry`=64573; -- Warpweaver Ramahesh
+UPDATE `creature_template` SET `npcflag`=536870912 WHERE `entry`=64574; -- Vaultkeeper Edouin
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64764; -- Hooded Crusader
+UPDATE `creature_template` SET `npcflag`=131072 WHERE `entry`=64925; -- Tivilix Bangalter
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536 WHERE `entry` IN (65025 /*Captain Maloy*/, 65026 /*Wounded Alliance Sailor*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=32768 WHERE `entry`=29396; -- Setaal Darkmender
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2099200, `dynamicflags`=0 WHERE `entry`=29469; -- Ice Steppe Rhino
+UPDATE `creature_template` SET `unit_flags`=570721024, `unit_flags2`=2049, `dynamicflags`=0 WHERE `entry`=29515; -- Dead Death's Rise Vrykul
+UPDATE `creature_template` SET `unit_flags2`=2099201, `dynamicflags`=0, `HoverHeight`=1 WHERE `entry`=29545; -- Proto-Drake Corpse
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=1.75 WHERE `entry`=65389; -- Colossal Seacarp
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `HoverHeight`=3.5 WHERE `entry`=65391; -- Elder Spindlegrin
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571 WHERE `entry`=65414; -- Ethereal Sha
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=29730; -- Frostborn Stormrider
+UPDATE `creature_template` SET `unit_flags2`=2099200, `HoverHeight`=1 WHERE `entry` IN (29753 /*Stormpeak Wyrm*/, 29755 /*Stormpeak Hatchling*/);
+UPDATE `creature_template` SET `npcflag`=2097153 WHERE `entry` IN (65599 /*H.A.R.V.E.Y.*/, 67130 /*D.E.N.T.*/);
+UPDATE `creature_template` SET `HoverHeight`=0.6 WHERE `entry`=65617; -- Zijin Hollowfly
+UPDATE `creature_template` SET `speed_walk`=0.8, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `VehicleId`=2426 WHERE `entry`=65652; -- Unga Keg-Haver
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (65677 /*Nanners*/, 66809 /*Helios*/, 66810 /*Amythel*/, 66812 /*Clatter*/, 66813 /*Spring*/, 66814 /*Pyth*/, 66982 /*Emeralda*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `unit_flags`=67108864 WHERE `entry`=29844; -- Icebound Revenant
+UPDATE `creature_template` SET `speed_walk`=1, `dynamicflags`=0 WHERE `entry`=29917; -- Field Corpse (Type B)
+UPDATE `creature_template` SET `npcflag`=66177 WHERE `entry`=29944; -- Peon Gakra
+UPDATE `creature_template` SET `npcflag`=3200 WHERE `entry`=29947; -- Apothecary Maple
+UPDATE `creature_template` SET `npcflag`=3200, `unit_flags`=32768 WHERE `entry`=30069; -- Initiate Roderick
+UPDATE `creature_template` SET `npcflag`=640, `unit_flags`=32768 WHERE `entry`=30070; -- Initiate Gahark
+UPDATE `creature_template` SET `npcflag`=640, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=66035; -- Trader Jina
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=34816 WHERE `entry`=66092; -- Point Bunny
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2451 WHERE `entry`=66102; -- Hozen Swing
+UPDATE `creature_template` SET `unit_flags2`=2097152, `HoverHeight`=1.3 WHERE `entry`=30275; -- Wild Wyrm
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (66148 /*Hozen Diver*/, 68411 /*Uncle Greenlint*/);
+UPDATE `creature_template` SET `speed_run`=2.285714 WHERE `entry`=66256; -- Master Cheng
+UPDATE `creature_template` SET `unit_flags`=33280, `unit_flags2`=0 WHERE `entry`=66300; -- Skyfire Marine
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry` IN (66622 /*Rakira*/, 71353 /*Viletongue Decimator*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=1.714286 WHERE `entry`=66753; -- Shrouded Carcharodon
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=66811; -- Twilight
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.666668, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=66824; -- Obalis
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=66937; -- Akkalar
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=66983; -- Moonstalker
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=67093; -- Sik'thik Battle-Mender
+UPDATE `creature_template` SET `VehicleId`=2523 WHERE `entry`=67359; -- Skyfire Gyrocopter X2
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=16384 WHERE `entry`=67556; -- Krasari Elder
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.4285714 WHERE `entry`=67557; -- Colossal Viseclaw
+UPDATE `creature_template` SET `npcflag`=131 WHERE `entry`=67565; -- Barnaby Fletcher
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry`=67568; -- Fallsong Laborer
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry`=67569; -- Elder Adler
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=1.142857 WHERE `entry`=31755; -- Stabled Hunter Pet
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=67731; -- Lion's Landing Rogue
+UPDATE `creature_template` SET `npcflag`=16777216, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=67941; -- Oily Serpent
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=1073743872, `VehicleId`=2581 WHERE `entry`=68214; -- Jinyu Construction Site
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=33556480 WHERE `entry`=68275; -- Hilda Hornswaggle
+UPDATE `creature_template` SET `unit_flags`=67108928, `unit_flags2`=2099200 WHERE `entry`=32447; -- Zul'drak Sentinel
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags`=32768 WHERE `entry`=32572; -- Dragonblight Mage Hunter
+UPDATE `creature_template` SET `speed_run`=1.285714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (68413 /*Shaggy Longhorn*/, 68521 /*Reckless Millie*/);
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=68417; -- Cousin Goottooth
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=69208064 WHERE `entry` IN (68419 /*Woodpile*/, 68478 /*Snake Oil Boiler*/, 68481 /*Snacks*/);
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry` IN (68420 /*Fallsong Laborer*/, 68429 /*Garrosh Hellscream*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=68421; -- Nero
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=69208064 WHERE `entry`=68422; -- Bubble-Spikes
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry`=68423; -- Nourishment
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry`=68428; -- Delia Sunseeker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2048 WHERE `entry` IN (68484 /*Large Tent*/, 68487 /*Small Tents*/, 68488 /*Supplies*/);
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry`=68495; -- Gnomish Transformer
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=0.4, `speed_run`=0.1428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=69208064 WHERE `entry`=68499; -- Heavy Metal Bars
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2099200 WHERE `entry`=68775; -- Riverblade Marauder
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=4196352 WHERE `entry` IN (68844 /*Shieldwall Footman*/, 68847 /*Shieldwall Footman*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=1073743872, `VehicleId`=2579 WHERE `entry`=68898; -- Jinyu Construction Site
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=68913; -- Mogu Statue
+UPDATE `creature_template` SET `unit_flags`=272 WHERE `entry`=33285; -- Sen'jin Valiant
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `BaseAttackTime`=200000, `unit_flags2`=2048 WHERE `entry`=69210; -- Skumblade Fleshripper
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.385714 WHERE `entry`=33374; -- Brutusk
+UPDATE `creature_template` SET `VehicleId`=2684 WHERE `entry`=69236; -- Shan'ze Soulripper
+UPDATE `creature_template` SET `BaseAttackTime`=1600 WHERE `entry`=69311; -- Loa-Infused Compy
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=69322; -- Capps Carlin
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (69323 /*Tiny Tayger*/, 69980 /*Evee Copperspring*/);
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=33024 WHERE `entry`=33569; -- Ashenvale Assailant
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=4196352 WHERE `entry`=69595; -- Invisible Man
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.1428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048 WHERE `entry`=69798; -- Lightning Pillar Beam Stalker
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048 WHERE `entry` IN (69813 /*Lightning Pillar Spark Stalker*/, 70283 /*Thunder Forge*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.714286 WHERE `entry` IN (69821 /*Thunder Lord*/, 70179 /*Ritual Guard*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=800, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (69824 /*Shan'ze Pyromancer*/, 69827 /*Shan'ze Shadowcaster*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=800, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=69828; -- Celestial Blacksmith
+UPDATE `creature_template` SET `npcflag`=657 WHERE `entry`=33996; -- William Saldean
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (69833 /*Shan'ze Warrior*/, 70070 /*Shan'ze Electrocutioner*/, 70074 /*Forgemaster Vul'kon*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=69835; -- Shan'ze Battlemaster
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=4194304 WHERE `entry`=69837; -- Celestial Defender
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags2`=2048 WHERE `entry`=69846; -- Reislek's Ghost
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (70039 /*Sha Fiend*/, 70048 /*Sha Beast*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768 WHERE `entry` IN (70079 /*Anvil Stalker*/, 70299 /*Meteor Summoner Stalker*/, 70449 /*Cosmetic Sha Boss Stalker*/, 70481 /*Phase 3 Room Center Stalker*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (70099 /*Shado-Pan Defender*/, 70106 /*Shado-Pan Warrior*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=1.6, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=70100; -- Wrathion
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512 WHERE `entry` IN (70148 /*Small Sha Spawner Stalker*/, 70162 /*Medium Sha Spawner Stalker*/, 70556 /*Thunder Forge Crucible*/);
+UPDATE `creature_template` SET `unit_class`=2, `unit_flags`=256 WHERE `entry`=34376; -- Kathrena Winterwisp
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4196352 WHERE `entry`=70228; -- Sha Amalgamation
+UPDATE `creature_template` SET `npcflag`=3, `speed_walk`=1.111112, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=34816 WHERE `entry`=70438; -- Wrathion
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200 WHERE `entry`=70460; -- Lightning Lance
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048, `VehicleId`=2772 WHERE `entry`=70500; -- Lightning Spear Float Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=71303168 WHERE `entry`=70542; -- Invisible Stalker
+UPDATE `creature_template` SET `npcflag`=16777216, `unit_flags`=768 WHERE `entry`=70561; -- Assignment Map
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33570816, `unit_flags2`=2048 WHERE `entry`=70577; -- Thunder Forge
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=1.714286, `BaseAttackTime`=2000 WHERE `entry`=70587; -- Shale Stalker
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.9920629, `unit_flags`=33587200 WHERE `entry`=70589; -- Cavern Burrower
+UPDATE `creature_template` SET `BaseAttackTime`=1739 WHERE `entry`=70643; -- Big Blossom Digger
+UPDATE `creature_template` SET `BaseAttackTime`=1801 WHERE `entry`=70682; -- Thunderhoof Supply Kodo
+UPDATE `creature_template` SET `BaseAttackTime`=1754 WHERE `entry`=70706; -- Trillium-Bladed Rock Cutter
+UPDATE `creature_template` SET `unit_flags`=33587712 WHERE `entry`=70745; -- Scout Forgefellow
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=69208064 WHERE `entry`=71047; -- Assassins-Grade Blinding Powder
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=67110912 WHERE `entry`=71051; -- Assassins-Grade Flash Powder
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554688, `unit_flags2`=2048, `HoverHeight`=2 WHERE `entry`=71124; -- Blanche's Still
+UPDATE `creature_template` SET `npcflag`=4198528, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=71304; -- Iris Moondreamer
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry` IN (71378 /*Quilen Guardian*/, 71383 /*Kor'thik Warcaller*/, 71388 /*Amber-Encased Kunchong*/, 71392 /*Shadow Ritualist Phylactery*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2097152 WHERE `entry`=71380; -- Animated Stone Mogu
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry`=71382; -- Burial Urn
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=1.857143, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry`=71385; -- Sri'thik Bombardier
+UPDATE `creature_template` SET `speed_walk`=0.577776, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags2`=2097152, `VehicleId`=2888 WHERE `entry`=71395; -- Modified Anima Golem
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=3000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry`=71397; -- Zar'thik Amber Priest
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2097152 WHERE `entry`=71405; -- Set'thik Wind Wielder
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags2`=2097152, `VehicleId`=2891 WHERE `entry`=71454; -- Malkorok
+UPDATE `creature_template` SET `speed_walk`=6, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry` IN (71455 /*Arcing Smash*/, 71470 /*Implosion*/, 71513 /*Ancient Miasma*/);
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=1.857143, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32832, `unit_flags2`=4194304, `VehicleId`=2893 WHERE `entry`=71466; -- Iron Juggernaut
+UPDATE `creature_template` SET `speed_walk`=0.4, `BaseAttackTime`=5000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33554496, `unit_flags2`=165888 WHERE `entry`=71469; -- Sawblade
+UPDATE `creature_template` SET `speed_run`=1.571429, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=2097152 WHERE `entry`=71475; -- Rook Stonetoe
+UPDATE `creature_template` SET `speed_run`=1.571429, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=71479; -- He Softfoot
+UPDATE `creature_template` SET `speed_run`=1.571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2097152 WHERE `entry`=71480; -- Sun Tenderheart
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=4196352, `VehicleId`=2895 WHERE `entry`=71504; -- Siegecrafter Blackfuse
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags2`=2097152, `VehicleId`=2902 WHERE `entry`=71515; -- General Nazgrim
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.7142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=71518; -- Kor'kron Assassin
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=4196352 WHERE `entry`=71520; -- Siege Engineer Helper Bunny
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=4194304, `VehicleId`=2896 WHERE `entry`=71529; -- Thok the Bloodthirsty
+UPDATE `creature_template` SET `speed_run`=1.289683, `unit_flags`=0, `unit_flags2`=4718592 WHERE `entry`=71543; -- Immerseus
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=0.5714286 WHERE `entry`=71548; -- Swirl
+UPDATE `creature_template` SET `speed_walk`=4.8, `speed_run`=1.714286 WHERE `entry`=71550; -- Swirl Target
+UPDATE `creature_template` SET `BaseAttackTime`=1785 WHERE `entry`=71589; -- Big Blossom Digger
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=4196352 WHERE `entry`=71591; -- Automated Shredder
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=256, `unit_flags2`=69208064 WHERE `entry`=71592; -- The Klaxxi Paragons
+UPDATE `creature_template` SET `npcflag`=4225, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=71623; -- Lucan Malory
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4210688 WHERE `entry`=71658; -- Kor'kron Jailer
+UPDATE `creature_template` SET `dynamicflags`=0 WHERE `entry` IN (18035 /*Scout Jyoba*/, 2344 /*Dun Garok Mountaineer*/, 2345 /*Dun Garok Rifleman*/, 2346 /*Dun Garok Priest*/, 40662 /*Steamwheedle Victim*/, 42220 /*Dead Frostmane Troll*/, 42381 /*Overloaded Harvest Golem*/, 24808 /*Broken Sentinel*/, 42857 /*Sacrificed Vilebranch*/, 42945 /*GS-9x Prototype*/, 43150 /*Impaled Blackrock Orc*/, 43261 /*Crushcog Battle Suit 1*/, 25984 /*Crashed Recon Pilot*/, 26159 /*Taunka'le Evacuee*/, 26160 /*Taunka'le Pack Kodo*/, 44150 /*Slowly Decaying Mosshide Mystic*/, 44172 /*Moldy Dark Iron Trapper Corpse*/, 26772 /*Icemist Warrior*/, 27457 /*Skirmisher Corpse*/, 27481 /*Westfall Infantry Corpse*/, 27613 /*Slaughtered Drakkari*/, 45887 /*Bogpaddle Privateer*/, 46345 /*Destroyed Battle Suit*/, 28464 /*Cultist Corpse*/, 46609 /*Dunwald Victim*/, 29454 /*Burr*/, 47394 /*Twilight Guardsman*/, 29546 /*K3 Snow Runner*/, 30148 /*Infesting Jormungar*/, 30292 /*Dead Icemaw Bear*/, 34852 /*Slain Tualiq Villager*/, 35097 /*Sacrificed Aspirant*/, 35324 /*North Sea Shark*/);
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry` IN (35984 /*Sunreaver Dragonhawk*/, 45511 /*Tentacle of Iso'rath*/, 45693 /*Tentacle of Iso'rath*/, 34948 /*Isle of Conquest Emissary*/, 34950 /*Isle of Conquest Emissary*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=1048576 WHERE `entry`=71828; -- Sikari the Mistweaver
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.571429, `BaseAttackTime`=1500, `RangeAttackTime`=2000 WHERE `entry` IN (71829 /*Large Illusionary Ripper*/, 71830 /*Small Illusionary Ripper*/);
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000 WHERE `entry` IN (71831 /*Large Illusionary Forager*/, 71832 /*Small Illusionary Forager*/);
+UPDATE `creature_template` SET `unit_class`=1 WHERE `entry`=71939; -- Chi-Ro the Skytamer
+UPDATE `creature_template` SET `speed_walk`=0.666668, `speed_run`=2 WHERE `entry`=71952; -- Chi-Ji
+UPDATE `creature_template` SET `speed_run`=2 WHERE `entry` IN (71953 /*Xuen*/, 71954 /*Niuzao*/, 72057 /*Ordos*/, 72808 /*Tsavo'ka*/, 71055 /*Kor'kron Spotter*/);
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=2, `unit_flags`=0 WHERE `entry`=71955; -- Yu'lon
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4194304 WHERE `entry`=71979; -- Kor'kron Warbringer
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=4194304 WHERE `entry`=71983; -- Farseer Wolf Rider
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=1.714286, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=4194304 WHERE `entry`=71984; -- Siege Engineer
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=3.571429, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=4196352, `VehicleId`=2928 WHERE `entry`=71985; -- Ko'kron Iron Star
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=1, `unit_flags`=32768 WHERE `entry`=71986; -- Cove Shark
+UPDATE `creature_template` SET `speed_run`=1 WHERE `entry` IN (71988 /*Spectral Campfire*/, 72006 /*Allie*/, 72676 /*Spirit Healer*/, 73015 /*Eli*/, 73031 /*Li Li*/, 73819 /*Ku-Mo*/, 73919 /*Apple Bucket*/, 74003 /*Luna the Beauty*/, 56151 /*Plow Plant*/, 74159 /*Swifty*/, 65267 /*Mistfall Brew Keg*/, 31769 /*Stabled Hunter Pet*/, 32602 /*Dalaran Visitor*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (18242 /*Infernal Relay (Hyjal)*/, 24025 /*Invis Firework Helper*/, 42044 /*Pyrricion*/, 24132 /*Winterhoof Wind Rider*/, 24440 /*Gjalerbron Gargoyle*/, 24553 /*Apoko*/, 24554 /*Eramas Brightblaze*/, 24555 /*Garaxxas*/, 24556 /*Zelfan*/, 24557 /*Kagani Nightstrike*/, 24558 /*Ellrys Duskhallow*/, 24559 /*Warlord Salaris*/, 24561 /*Yazzai*/, 24722 /*Fel Crystal*/, 24744 /*Vexallus*/, 24762 /*Sunblade Keeper*/, 24781 /*Nether Energy*/, 42739 /*Frostmane Hold Target*/, 24850 /*Kalecgos*/, 24882 /*Brutallus*/, 24891 /*Kalecgos*/, 24895 /*Madrigosa*/, 42894 /*Trogg Tunnel*/, 25042 /*Magisters' Terrace - Scryer Quest Bunny*/, 25165 /*Lady Sacrolash*/, 25166 /*Grand Warlock Alythess*/, 25315 /*Kil'jaeden*/, 43422 /*Captured Demolitionist Credit*/, 25508 /*Shadowsword Guardian*/, 25588 /*Hand of the Deceiver*/, 25640 /*Orb Target*/, 25741 /*M'uru*/, 25954 /*Shadowsword Guardian Sunwell*/, 25955 /*Hand of the Deceiver Sunwell*/, 25956 /*Chaos Gazer Sunwell*/, 25957 /*Cataclysm Hound Sunwell*/, 25958 /*Volatile Felfire Fiend Sunwell*/, 25959 /*Apocalypse Guard Sunwell*/, 25960 /*M'uru Sunwell*/, 26046 /*Anveena*/, 26057 /*Anveena Marker*/, 26247 /*Lady Liadrin*/, 26265 /*Saragosa's End Invisman*/, 26579 /*Anveena Replica*/, 63978 /*Kri'chon*/, 46208 /*Clean Cannon X-2*/, 46265 /*ELM General Purpose Bunny Large (scale x3)*/, 46404 /*Twilight Skyterror*/, 29333 /*Onslaught Gryphon Rider*/, 29558 /*Frost Giant Target Bunny*/, 29625 /*Hyldsmeet Proto-Drake*/, 29754 /*Column Ornament*/, 29798 /*Hyldsmeet Proto-Drake*/, 30052 /*Creteus*/, 30260 /*Stoic Mammoth*/, 30320 /*Battlescarred Frostworg*/, 30445 /*Ice Steppe Bull*/, 30745 /*Third Summoning Altar*/, 30950 /*Fourth Summoning Altar*/, 31322 /*Saronite Shaper*/, 32242 /*Blue Sample KC Bunny*/, 32244 /*Green Sample KC Bunny*/, 32245 /*Dark Sample KC Bunny*/, 33687 /*Chillmaw*/, 33695 /*Cultist Bombardier*/, 52021 /*Moltanus*/, 34867 /*Shadowy Figure*/, 35092 /*Kvaldir Deepcaller*/, 35368 /*Thrall*/, 35372 /*Garrosh Hellscream*/, 35373 /*Tournament Wind Rider*/, 17533 /*Romulo*/, 17534 /*Julianne*/, 17767 /*Rage Winterchill*/, 17895 /*Ghoul*/, 17897 /*Crypt Fiend*/, 17898 /*Abomination*/, 17899 /*Shadowy Necromancer*/);
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629 WHERE `entry` IN (72007 /*Master Kukuru*/, 73009 /*Brother Yakshoe*/, 73010 /*Brother Rabbitsfoot*/, 73019 /*Ken-Ken*/, 73027 /*Chief Kah Kah*/, 73043 /*Chee Chee*/, 73052 /*Mung-Mung*/, 73326 /*Mystic Quillstar*/, 73327 /*Furnisher Echoroot*/, 73338 /*The Monkey King*/, 73340 /*Riko*/, 73629 /*Hopswift*/, 73812 /*Brother Noodle*/, 73814 /*Noodle-Maker Monmon*/);
+UPDATE `creature_template` SET `speed_run`=1.142857 WHERE `entry` IN (345 /*Bellygrub*/, 18460 /*Lost Spirit*/, 18600 /*Injured Refugee*/, 37216 /*Honor's Stand Officer*/, 56033 /*Woolly Sheep*/, 21660 /*Cabal Abjurist*/, 22018 /*Eclipsion Cavalier*/, 59984 /*Trained Jibberwing*/, 24411 /*Shattered Hand Centurion Image*/, 29329 /*Onslaught Paladin*/);
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=1.428571 WHERE `entry`=72020; -- Jadefire Wall
+UPDATE `creature_template` SET `unit_flags`=294912 WHERE `entry` IN (72049 /*Cranegnasher*/, 58456 /*Thundermaw*/, 62396 /*Shado-Pan Tiger*/, 65576 /*Philip Luke*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668 WHERE `entry` IN (72095 /*Fishgorged Crane*/, 72761 /*Windfeather Nestkeeper*/, 72762 /*Brilliant Windfeather*/, 72771 /*Damp Shambler*/, 73158 /*Emerald Gander*/, 73297 /*Fishgorged Crane*/, 41319 /*Menethil Peasant*/, 27537 /*Fordragon Lumberjack*/, 67555 /*Ancient Bloodcrown Crane*/, 71143 /*Windfeather Chick*/);
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` IN (547 /*Great Goretusk*/, 772 /*Stranglethorn Tigress*/, 869 /*Protector Dorana*/, 36943 /*Bristleback Invader*/, 1196 /*Ice Claw Bear*/, 21419 /*Infernal Attacker*/, 3681 /*Wisp*/, 22095 /*Infested Root-Walker*/, 5992 /*Ashmane Boar*/, 42221 /*Rockjaw Bonepicker*/, 43325 /*Rockjaw Fungus-Flinger*/, 25768 /*Lord Kryxix*/, 26349 /*Goramosh*/, 28320 /*Servant of Freya*/, 29775 /*Archivist Mechaton*/, 15476 /*Scorpid*/, 52227 /*Balgor Whipshank*/);
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2.857143, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=71335936 WHERE `entry`=72228; -- Heart of Y'Shaarj
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (18482 /*Empoor*/, 4165 /*Elissa Dumas*/, 4885 /*Gregor MacVince*/, 42384 /*Homeless Stormwind Citizen*/, 27817 /*Brew Vendor*/, 30008 /*Kari the Beastmaster*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (72236 /*Embodied Doubt*/, 72744 /*Kor'kron Skullsplitter*/);
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=72237; -- Embodied Fear
+UPDATE `creature_template` SET `unit_flags`=537133824, `unit_flags2`=2049 WHERE `entry`=604; -- Plague Spreader
+UPDATE `creature_template` SET `speed_run`=1.385714 WHERE `entry` IN (72275 /*Black Bengal Goat*/, 36642 /*Myralion Sunblaze*/, 42218 /*Stormwind Royal Guard*/, 31033 /*Crusader of Virtue*/, 67826 /*Dominance Raider*/, 32596 /*Dalaran Visitor*/);
+UPDATE `creature_template` SET `npcflag`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=72298; -- Ren Firetongue
+UPDATE `creature_template` SET `npcflag`=1 WHERE `entry` IN (18586 /*Coosh'coosh*/, 37742 /*Drugan Deepdraught*/, 39146 /*Clarice Hawthorne*/, 42386 /*Homeless Stormwind Citizen*/, 49957 /*Delemm*/, 51346 /*Orgrimmar Wind Rider*/, 34952 /*Isle of Conquest Portal*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `BaseAttackTime`=1500, `RangeAttackTime`=2000 WHERE `entry`=723; -- Mosh'Ogg Butcher
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry` IN (54558 /*Bog Crocolisk*/, 1756 /*Stormwind Royal Guard*/, 56526 /*Tawnyhide Fawn*/, 21080 /*Dormant Infernal*/, 39595 /*Furious Earthguard*/, 58768 /*Cracklefang*/, 59527 /*Trail Packer*/, 59602 /*Luna*/, 59773 /*Terracotta Guardian*/, 60169 /*Cagemaster*/, 60170 /*Big Gladiator Chief*/, 25087 /*Dawnblade Reservist*/, 61252 /*Shado-Pan Guard*/, 25760 /*Kvaldir Raider*/, 63045 /*Dominated Scalelord*/, 63494 /*Leechfingers*/, 63674 /*Mogu Statue*/, 28096 /*Hardknuckle Charger*/, 28098 /*Hardknuckle Forager*/, 64453 /*Set'thik Windblade*/, 64454 /*Zar'thik Augurer*/, 64458 /*Kor'thik Warsinger*/, 29330 /*Onslaught Harbor Guard*/, 29338 /*Onslaught Raven Bishop*/, 29392 /*Ravenous Jaws*/, 32572 /*Dragonblight Mage Hunter*/, 14881 /*Spider*/, 51515 /*Mulgore Protector*/, 70005 /*Young Primal Devilsaur*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=54615; -- Nodd Codejack
+UPDATE `creature_template` SET `unit_flags`=512 WHERE `entry` IN (870 /*Protector Deni*/, 874 /*Protector Korelor*/, 62256 /*Stinkbug*/, 62364 /*Ash Lizard*/, 62852 /*Dragonbone Hatchling*/, 62885 /*Carrion Rat*/, 10599 /*Hulfnar Stonetotem*/);
+UPDATE `creature_template` SET `npcflag`=640 WHERE `entry` IN (18811 /*Meriaad*/, 30011 /*Sigdis the Trader*/, 16732 /*Onnis*/);
+UPDATE `creature_template` SET `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33685760, `unit_flags2`=2048, `VehicleId`=2978 WHERE `entry`=72590; -- Archery Target
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `unit_flags`=536903680 WHERE `entry`=54697; -- Shao the Defiant
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857 WHERE `entry` IN (36803 /*Dyami Windsoar*/, 61070 /*Explosive Hatred*/, 9916 /*Jarquia*/, 66271 /*Felstorm Summoner*/);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=33024 WHERE `entry`=18927; -- Human Commoner
+UPDATE `creature_template` SET `speed_run`=0.9920629 WHERE `entry` IN (72695 /*Wrathion*/, 73017 /*Clever Ashyo*/, 73047 /*Jogu the Drunk*/, 73813 /*Galu Wellspring*/, 59058 /*Pearlkeeper Fujin*/, 59159 /*Pearlfin Mystic*/, 59593 /*Grummle Trail Guide*/, 61638 /*Proving Grounds*/, 26583 /*Horrified Drakkari Shaman*/, 64898 /*Speed Boost Rune*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry` IN (72728 /*Kor'kron Blood Axe*/, 72784 /*Kor'kron Gunner*/, 72903 /*Kor'kron Siegemaster*/);
+UPDATE `creature_template` SET `speed_run`=1.285714 WHERE `entry` IN (72763 /*Great Turtle Hatchling*/, 72842 /*Ironfur Herdling*/, 72843 /*Ironfur Grazer*/, 72844 /*Ironfur Great Bull*/, 73161 /*Great Turtle Furyshell*/);
+UPDATE `creature_template` SET `speed_run`=1.285714, `unit_flags`=67141632 WHERE `entry`=72764; -- Great Turtle
+UPDATE `creature_template` SET `speed_run`=1.285714, `unit_flags`=32768 WHERE `entry`=72765; -- Elder Great Turtle
+UPDATE `creature_template` SET `unit_flags2`=16779264 WHERE `entry`=72766; -- Ancient Spineclaw
+UPDATE `creature_template` SET `speed_walk`=1.555556 WHERE `entry` IN (72767 /*Jademist Dancer*/, 72769 /*Spirit of Jadefire*/, 72888 /*Molten Guardian*/, 73175 /*Cinderfall*/);
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=2989 WHERE `entry`=72768; -- Kor'kron War Wolf
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=72770; -- Kor'kron Dark Farseer
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2048, `dynamicflags`=0, `VehicleId`=584 WHERE `entry`=36942; -- Fledgling Brave
+UPDATE `creature_template` SET `speed_run`=1.428571 WHERE `entry` IN (72777 /*Gulp Frog*/, 72805 /*Primal Stalker*/, 72809 /*Eroded Cliffdweller*/, 72897 /*Blazebound Chanter*/, 33543 /*Sunreaver Guardian*/);
+UPDATE `creature_template` SET `speed_run`=1.428571, `unit_flags`=67108864 WHERE `entry`=72807; -- Crag Stalker
+UPDATE `creature_template` SET `unit_flags`=67141632 WHERE `entry` IN (1150 /*River Crocolisk*/, 72841 /*Death Adder*/, 58755 /*Manglemaw's Mother*/, 25487 /*Wooly Rhino Matriarch*/, 25488 /*Wooly Rhino Calf*/, 25489 /*Wooly Rhino Bull*/, 28097 /*Pitch*/, 28297 /*Shango*/, 29124 /*Lifeblood Elemental*/, 29411 /*Crystalweb Weaver*/, 67099 /*Succula*/, 70012 /*Primal Direhorn Hatchling*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry`=36993; -- Lady Jaina Proudmoore
+UPDATE `creature_template` SET `npcflag`=16777216, `speed_walk`=1.2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33570816, `unit_flags2`=2113536, `VehicleId`=2998 WHERE `entry`=72847; -- Hellscream Annihilator
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=1.714286, `unit_flags`=32768 WHERE `entry`=72876; -- Crimsonscale Firestorm
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (54960 /*Elder Lusshan*/, 56222 /*Bold Karasshi*/, 62151 /*Xaril the Poisoned Mind*/, 65541 /*Zer'ik*/);
+UPDATE `creature_template` SET `npcflag`=81 WHERE `entry` IN (1218 /*Herbalist Pomeroy*/, 3704 /*Mahani*/, 16719 /*Mumman*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=72893; -- Orgrimmar Peon
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=32768 WHERE `entry`=19148; -- Dwarf Commoner
+UPDATE `creature_template` SET `speed_walk`=0.64, `speed_run`=0.5714286 WHERE `entry`=72908; -- Spotted Swarmer
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=32768 WHERE `entry`=19172; -- Gnome Commoner
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry` IN (1261 /*Veron Amberstill*/, 17584 /*Torallius the Pack Handler*/);
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (19180 /*Seymour*/, 19187 /*Darmari*/, 1292 /*Maris Granger*/, 5564 /*Simon Tanner*/);
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2099200, `VehicleId`=3010 WHERE `entry`=72983; -- Corrupted Skullsplitter
+UPDATE `creature_template` SET `unit_flags`=32784 WHERE `entry` IN (73018 /*Spectral Brewmaster*/, 73025 /*Spectral Mistweaver*/, 51785 /*Nesingwary Game Warden*/);
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2 WHERE `entry` IN (73034 /*Hozen Swing*/, 73400 /*Healing Ran Invisible Stalker DND*/);
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587200, `unit_flags2`=2048 WHERE `entry`=73073; -- Corrupted Boil
+UPDATE `creature_template` SET `speed_run`=0.8571429 WHERE `entry` IN (73083 /*Fledgling Chick*/, 73503 /*Chi-Chi, Hatchling of Chi-Ji*/, 73505 /*Xu-Fu, Cub of Xuen*/, 73506 /*Zao, Calfling of Niuzao*/, 73507 /*Yu'la, Broodling of Yu'lon*/, 73823 /*Sky Lantern*/, 73837 /*Pierre*/);
+UPDATE `creature_template` SET `npcflag`=17 WHERE `entry` IN (1458 /*Telurinon Moonshadow*/, 1632 /*Adele Fielder*/);
+UPDATE `creature_template` SET `npcflag`=129 WHERE `entry` IN (1460 /*Unger Statforth*/, 23484 /*Haldor the Compulsive*/);
+UPDATE `creature_template` SET `npcflag`=4225, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73142 /*Armsmaster Holinka*/, 73144 /*Lucan Malory*/);
+UPDATE `creature_template` SET `npcflag`=129, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73143 /*Hayden Christophen*/, 73145 /*Acon Deathwielder*/, 73147 /*Ethan Natice*/);
+UPDATE `creature_template` SET `speed_walk`=0.666668, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry`=73157; -- Rock Moss
+UPDATE `creature_template` SET `speed_walk`=1.555556, `speed_run`=1.428571 WHERE `entry`=73162; -- Foreboding Flame
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286, `unit_flags`=4227072 WHERE `entry`=73163; -- Imperial Python
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=1.714286 WHERE `entry` IN (73167 /*Huolon*/, 66753 /*Shrouded Carcharodon*/);
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=73190; -- Necrolord Sipe
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200, `VehicleId`=3017 WHERE `entry`=73194; -- Kor'kron Iron Scorpion
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=34816 WHERE `entry` IN (55282 /*Sully "The Pickle" McLeary*/, 63238 /*Xi, Friend to the Small*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=55333; -- Rell Nightwind
+UPDATE `creature_template` SET `speed_run`=1.428571, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=73250; -- Kor'kron Wild Gun
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=73304; -- Chelon Stalker
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.714286 WHERE `entry` IN (73343 /*Celestial Guard*/, 73361 /*Tushui Sentry*/);
+UPDATE `creature_template` SET `speed_run`=1.714286 WHERE `entry` IN (73347 /*Captain Huan*/, 73362 /*Huojin Sentry*/, 73385 /*Sentry Laofung*/, 73386 /*Sentry Jienfo*/);
+UPDATE `creature_template` SET `npcflag`=3 WHERE `entry`=73348; -- Watcher Lara
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=37582; -- Archmage Koreln
+UPDATE `creature_template` SET `speed_walk`=0.4, `speed_run`=0.1428571 WHERE `entry`=73489; -- General Purpose Bunny JMF (Ground, Slow)
+UPDATE `creature_template` SET `unit_flags`=570687744, `unit_flags2`=2049 WHERE `entry`=19760; -- Cooling Infernal
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry` IN (73516 /*Rowdy*/, 73517 /*Vexie*/, 73636 /*Jasmine*/, 73637 /*Butterflies*/);
+UPDATE `creature_template` SET `speed_run`=2, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2099200 WHERE `entry` IN (73538 /*Kor'kron War Wolf*/, 73539 /*Kor'kron Den Mother*/, 73541 /*Kor'kron Wolf Pup*/);
+UPDATE `creature_template` SET `speed_walk`=1 WHERE `entry` IN (19823 /*Crazed Colossus*/, 2775 /*Daggerspine Marauder*/, 22084 /*Shadowmoon Chosen*/, 25157 /*Sunwell - Quest Bunny - Sunwell*/, 46204 /*Corrupted Elementalist*/);
+UPDATE `creature_template` SET `unit_flags`=537166080, `unit_flags2`=2049 WHERE `entry`=37786; -- Brown Stag
+UPDATE `creature_template` SET `speed_run`=1.714286, `BaseAttackTime`=1333 WHERE `entry`=73666; -- Archiereus of Flame
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (73703 /*Southsea Plunderer*/, 56653 /*Wild Prowler*/);
+UPDATE `creature_template` SET `unit_flags`=33555200 WHERE `entry` IN (2110 /*Black Rat*/, 38924 /*Quilboar Rope Bunny*/, 31117 /*Safirdrang's Controller Bunny*/);
+UPDATE `creature_template` SET `unit_flags`=33024 WHERE `entry`=20102; -- Goblin Commoner
+UPDATE `creature_template` SET `npcflag`=128, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=73913; -- Brewmaster Tsing
+UPDATE `creature_template` SET `npcflag`=2 WHERE `entry` IN (56111 /*Lin Tenderpaw*/, 2767 /*First Mate Nilzlix*/, 2769 /*Captain Steelgut*/, 2774 /*Doctor Draxlegauge*/, 6776 /*Magrin Rivermane*/);
+UPDATE `creature_template` SET `unit_flags2`=34816 WHERE `entry` IN (56113 /*Clever Ashyo*/, 56312 /*Shang Thunderfoot*/, 64324 /*Anglers Fisherman*/, 66306 /*Blacktalon Agent*/);
+UPDATE `creature_template` SET `npcflag`=83, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=56227; -- Mishka
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.142857 WHERE `entry`=2601; -- Foulbelly
+UPDATE `creature_template` SET `unit_flags`=67108864 WHERE `entry` IN (2725 /*Scalding Whelp*/, 2734 /*Ridge Stalker Patriarch*/, 21004 /*Lesser Nether Drake*/, 3244 /*Greater Plainstrider*/, 3630 /*Deviate Coiler*/, 21878 /*Felboar*/, 5420 /*Glasshide Gazer*/, 42226 /*Crushcog Battle Suit*/, 25585 /*Beryl Mage Hunter*/, 25716 /*General Cerulean*/, 25717 /*Coldarra Scalesworn*/, 43704 /*Dire Wolf*/, 9318 /*Incendosaur*/, 45185 /*Diamond-Blade Shredder*/, 9690 /*Ember Worg*/, 28009 /*Shardhorn Rhino*/, 46859 /*Kalaran the Annihilator*/, 29380 /*Stormforged War Golem*/, 16934 /*Quillfang Ravager*/);
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.7142857 WHERE `entry`=2731; -- Ridge Stalker
+UPDATE `creature_template` SET `npcflag`=82 WHERE `entry`=20914; -- Aalun
+UPDATE `creature_template` SET `npcflag`=145 WHERE `entry`=56777; -- Ni Gentlepaw
+UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry` IN (38872 /*Ambassador Gaines*/, 25225 /*Practice Dummy*/, 35314 /*Orgrimmar Champion*/, 35326 /*Silvermoon Champion*/, 35327 /*Undercity Champion*/);
+UPDATE `creature_template` SET `unit_flags`=67108928 WHERE `entry` IN (3058 /*Arra'chea*/, 41163 /*Illycor*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2857 WHERE `entry`=21254; -- Dullgrom Dredger
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry` IN (57119 /*Hozen Ravager*/, 66153 /*Hozen Scavenger*/);
+UPDATE `creature_template` SET `unit_flags`=33554944 WHERE `entry` IN (21427 /*Strider Jock*/, 29649 /*Captured Death's Rise Spy*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `unit_flags`=32768 WHERE `entry`=57400; -- Yu'lon Guardian
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=2049 WHERE `entry` IN (58070 /*Krasari Huntress*/, 58887 /*Krasari Mauler*/, 41400 /*Highland Razormaw*/);
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.142857, `BaseAttackTime`=2000 WHERE `entry`=58186; -- Yu'lon Guardian
+UPDATE `creature_template` SET `VehicleId`=2008 WHERE `entry`=58438; -- Checkpoint
+UPDATE `creature_template` SET `npcflag`=4241 WHERE `entry`=4888; -- Marie Holdston
+UPDATE `creature_template` SET `npcflag`=4225 WHERE `entry`=4892; -- Jensen Farran
+UPDATE `creature_template` SET `npcflag`=147 WHERE `entry`=4941; -- Caz Twosprocket
+UPDATE `creature_template` SET `unit_flags`=33536 WHERE `entry` IN (58693 /*Mistfall Worker*/, 43571 /*Kidnapped Redridge Citizen*/, 43572 /*Kidnapped Redridge Citizen*/, 63934 /*Mistfall Villager*/, 63935 /*Mistfall Villager*/);
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (4968 /*Lady Jaina Proudmoore*/, 25319 /*Kalecgos*/, 46413 /*Countess Verrall*/, 17468 /*Prophet Velen*/);
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry` IN (58741 /*Glade Sprinter*/, 23594 /*Grimtotem Destroyer*/, 23667 /*Winterskorn Rune-Seer*/, 61981 /*Dreadspinner Tender*/, 62023 /*Coldbite Crocolisk*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=1.285714, `unit_flags`=32832, `unit_flags2`=0 WHERE `entry`=58769; -- Vicejaw
+UPDATE `creature_template` SET `npcflag`=83 WHERE `entry`=5174; -- Springspindle Fizzlegear
+UPDATE `creature_template` SET `BaseAttackTime`=1000 WHERE `entry` IN (58928 /*Shao-Tien Antiquator*/, 45787 /*Bloodeye Brute*/);
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=5184; -- Theramore Sentry
+UPDATE `creature_template` SET `unit_flags`=537133120 WHERE `entry`=41173; -- Chief Prospector Hondo
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2048 WHERE `entry`=5419; -- Glasshide Basilisk
+UPDATE `creature_template` SET `npcflag`=128 WHERE `entry` IN (23437 /*Indormi*/, 8666 /*Lil Timmy*/);
+UPDATE `creature_template` SET `speed_run`=1.142857, `HoverHeight`=1 WHERE `entry`=23665; -- Winterskorn Raider
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=23670; -- Winterskorn Elder
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=59620; -- Lorewalker Cho
+UPDATE `creature_template` SET `unit_flags`=33024 WHERE `entry` IN (23795 /*Dark Iron Antagonist*/, 25115 /*Shattered Sun Warrior*/, 43213 /*Wildhammer Spirithunter*/, 43215 /*Gryphon Master Talonaxe*/, 46187 /*Marshtide Carouser*/, 46189 /*Stonard Carouser*/, 46831 /*Firebeard Militia*/, 67297 /*Shieldwall Rifleman*/);
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=256 WHERE `entry`=23872; -- Coren Direbrew
+UPDATE `creature_template` SET `unit_flags`=294928 WHERE `entry`=59758; -- Terracotta Warrior
+UPDATE `creature_template` SET `npcflag`=16 WHERE `entry` IN (6306 /*Helene Peltskinner*/, 65877 /*Han Flowerbloom*/);
+UPDATE `creature_template` SET `unit_flags2`=2049, `dynamicflags`=0 WHERE `entry`=42155; -- Twilight Rifleman
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=60178; -- Sya Zhong
+UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.714286 WHERE `entry`=24410; -- Vazruden the Herald Image
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.5714286 WHERE `entry`=42342; -- Energized Harvest Reaper
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=32768 WHERE `entry`=42391; -- West Plains Drifter
+UPDATE `creature_template` SET `HoverHeight`=1.067 WHERE `entry`=60384; -- Zandalari Pterror Wing
+UPDATE `creature_template` SET `speed_run`=1.031746, `unit_flags2`=2099200 WHERE `entry`=24560; -- Priestess Delrissa
+UPDATE `creature_template` SET `unit_flags2`=2099200 WHERE `entry` IN (42563 /*Toxic Pool*/, 35299 /*Royal Gryphon*/);
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.6928571, `BaseAttackTime`=2600 WHERE `entry`=60493; -- Kafa-Crazed Mountain Goat
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags2`=2099200 WHERE `entry`=24664; -- Kael'thas Sunstrider
+UPDATE `creature_template` SET `unit_flags2`=2097152 WHERE `entry` IN (24723 /*Selin Fireheart*/, 25031 /*Pit Overlord*/, 25033 /*Eredar Sorcerer*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2600 WHERE `entry`=60564; -- Kafa-Crazed Yeti
+UPDATE `creature_template` SET `unit_flags`=537166080 WHERE `entry`=60593; -- Experienced Guide
+UPDATE `creature_template` SET `unit_flags`=0, `unit_flags2`=2099200 WHERE `entry`=24844; -- Kalecgos
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=24892; -- Sathrovarr the Corruptor
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry`=42849; -- High Tinker Mekkatorque
+UPDATE `creature_template` SET `unit_flags`=33554432 WHERE `entry` IN (60776 /*Empyreal Focus*/, 25090 /*Sin'Loren Credit*/, 25091 /*Bloodoath Credit*/, 25092 /*Dawnchaser Credit*/);
+UPDATE `creature_template` SET `speed_walk`=1.555556, `speed_run`=1.142857 WHERE `entry`=7031; -- Obsidian Elemental
+UPDATE `creature_template` SET `speed_walk`=0.777776, `unit_flags`=0 WHERE `entry`=25027; -- Frenzied Ghoul
+UPDATE `creature_template` SET `speed_walk`=0.888888, `unit_flags`=0 WHERE `entry`=25028; -- Skeletal Ravager
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags`=0, `unit_flags2`=0 WHERE `entry`=25030; -- Wrath Enforcer
+UPDATE `creature_template` SET `speed_run`=1.285714, `unit_flags`=16448 WHERE `entry`=43007; -- Shadra
+UPDATE `creature_template` SET `unit_class`=4, `unit_flags`=33024 WHERE `entry`=43016; -- Deathstalker Bodychopper
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2.857143, `unit_flags2`=2099200 WHERE `entry`=25144; -- Shattered Sun Bombardier
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2.857143, `unit_flags`=0, `unit_flags2`=2099200 WHERE `entry`=25158; -- Brutallus
+UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=2.857143, `unit_flags2`=2099200 WHERE `entry`=25160; -- Madrigosa
+UPDATE `creature_template` SET `unit_flags`=2147516416 WHERE `entry`=61069; -- Shai Hu
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=2.571429, `unit_flags`=512, `unit_flags2`=2099200 WHERE `entry`=25236; -- Unrestrained Dragonhawk
+UPDATE `creature_template` SET `unit_flags2`=2162688 WHERE `entry`=43259; -- Rocket Defense Turret
+UPDATE `creature_template` SET `unit_flags`=33280 WHERE `entry` IN (61318 /*Tree Python*/, 61439 /*Rattlesnake*/);
+UPDATE `creature_template` SET `unit_flags`=33816576, `unit_flags2`=2099204 WHERE `entry`=61347; -- Kingsguard
+UPDATE `creature_template` SET `npcflag`=81 WHERE `entry` IN (43431 /*Periale*/, 11072 /*Kitta Firewind*/);
+UPDATE `creature_template` SET `npcflag`=1073741824, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=61370; -- Swamp Moth
+UPDATE `creature_template` SET `speed_run`=0.9920629 WHERE `entry`=25754; -- Earthen Ring Flamecaller
+UPDATE `creature_template` SET `npcflag`=640, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61596; -- Steepmaster Puoba
+UPDATE `creature_template` SET `npcflag`=128, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=61598; -- Silkweaver Rui
+UPDATE `creature_template` SET `npcflag`=18 WHERE `entry`=7871; -- Se'Jib
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=0.666668, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry`=61686; -- Tiny Bog Beast
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (61691 /*Irradiated Roach*/, 61704 /*Grasslands Cottontail*/, 62050 /*Grey Moth*/, 62051 /*Ravager Hatchling*/, 68820 /*Infinite Whelpling*/, 68841 /*Cogblade Raptor*/);
+UPDATE `creature_template` SET `speed_run`=1.289683 WHERE `entry`=26103; -- Darkfallen Deathblade
+UPDATE `creature_template` SET `unit_flags`=832, `unit_flags2`=2099200 WHERE `entry`=26237; -- Keristrasza
+UPDATE `creature_template` SET `HoverHeight`=12.5 WHERE `entry`=26276; -- Nexus Guardian
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2099200 WHERE `entry`=62128; -- Kor'thik Fleetwing
+UPDATE `creature_template` SET `unit_flags`=33554688, `unit_flags2`=2099200 WHERE `entry`=26297; -- Voice of Keristrasza
+UPDATE `creature_template` SET `unit_flags`=570688320, `unit_flags2`=2099201 WHERE `entry`=26475; -- Magmawyrm
+UPDATE `creature_template` SET `speed_walk`=0.888888 WHERE `entry`=26477; -- Dead Mage Hunter
+UPDATE `creature_template` SET `speed_run`=0.9523814, `HoverHeight`=1.5 WHERE `entry`=26607; -- Anub'ar Blightbeast
+UPDATE `creature_template` SET `BaseAttackTime`=2000 WHERE `entry`=26828; -- Magister Keldonus
+UPDATE `creature_template` SET `npcflag`=2, `unit_flags`=537165824 WHERE `entry`=26896; -- Nozzlerust Supply Runner
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000 WHERE `entry`=62757; -- Kor'thik Havoc
+UPDATE `creature_template` SET `unit_flags`=536903936, `unit_flags2`=2049 WHERE `entry`=26943; -- Battered Drakkari Berserker
+UPDATE `creature_template` SET `speed_walk`=1.6, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=9218; -- Spirestone Battle Lord
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=9219; -- Spirestone Butcher
+UPDATE `creature_template` SET `npcflag`=179 WHERE `entry` IN (63067 /*Naleen*/, 63075 /*Grady Bannson*/, 63596 /*Audrey Burnhep*/);
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=512, `unit_flags2`=2048 WHERE `entry` IN (63194 /*Steven Lisbane*/, 66518 /*Everessa*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry` IN (63239 /*Monk Trainee*/, 63241 /*Monk Trainee*/, 63242 /*Monk Trainee*/);
+UPDATE `creature_template` SET `unit_flags2`=2048 WHERE `entry`=63280; -- Deckhand
+UPDATE `creature_template` SET `unit_flags`=33088, `unit_flags2`=2099200 WHERE `entry`=9537; -- Hurley Blackbreath
+UPDATE `creature_template` SET `unit_flags`=33088 WHERE `entry`=9541; -- Blackbreath Crony
+UPDATE `creature_template` SET `unit_flags`=537133312, `unit_flags2`=2049 WHERE `entry`=27501; -- Westfall Brigade Marine
+UPDATE `creature_template` SET `npcflag`=8195 WHERE `entry`=63498; -- Min the Breeze Rider
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `unit_flags`=32768 WHERE `entry` IN (63510 /*Wulon*/, 29621 /*Grand Admiral Westwind*/);
+UPDATE `creature_template` SET `npcflag`=49 WHERE `entry` IN (27703 /*Ysuria*/, 16755 /*Lunaraa*/);
+UPDATE `creature_template` SET `speed_walk`=1.6, `speed_run`=2, `unit_flags2`=2099200 WHERE `entry`=45656; -- Forge Target
+UPDATE `creature_template` SET `speed_walk`=0.8, `BaseAttackTime`=2500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=63695; -- Baolai the Immolator
+UPDATE `creature_template` SET `unit_flags2`=2048 WHERE `entry`=45809; -- Swampshore Makrura
+UPDATE `creature_template` SET `npcflag`=3, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=63785; -- Hisek the Swarmkeeper
+UPDATE `creature_template` SET `npcflag`=4194433 WHERE `entry` IN (10050 /*Seikwa*/, 16764 /*Arthaid*/, 17666 /*Astur*/);
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry`=28161; -- Chicken Escapee
+UPDATE `creature_template` SET `npcflag`=134217728 WHERE `entry`=64045; -- Thaumaturge Faraket
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832 WHERE `entry`=10376; -- Crystal Fang
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=33556480 WHERE `entry`=64263; -- Shado-Pan Wallwatcher
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=1 WHERE `entry`=64345; -- Saltscale Carp
+UPDATE `creature_template` SET `unit_flags`=528 WHERE `entry`=10600; -- Thontek Rumblehoof
+UPDATE `creature_template` SET `npcflag`=1, `speed_walk`=0.944444, `speed_run`=0.3571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=64475; -- Mishi
+UPDATE `creature_template` SET `npcflag`=268435456 WHERE `entry`=64573; -- Warpweaver Ramahesh
+UPDATE `creature_template` SET `npcflag`=536870912 WHERE `entry`=64574; -- Vaultkeeper Edouin
+UPDATE `creature_template` SET `unit_flags2`=4196352 WHERE `entry`=64693; -- Invisible Man
+UPDATE `creature_template` SET `unit_flags2`=2099201, `dynamicflags`=0 WHERE `entry` IN (46837 /*Drowned Wildhammer Smith*/, 29543 /*Frostworg Carcass*/, 29544 /*Dead Frost Giant*/, 29571 /*Dead Drakerider*/, 32569 /*Corpse of the Fallen Worg*/);
+UPDATE `creature_template` SET `unit_flags`=32768, `unit_flags2`=2099200, `dynamicflags`=0 WHERE `entry`=29469; -- Ice Steppe Rhino
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=65303; -- Ka'roz the Locust
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=0.5714286, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=65305; -- Iyyokuk the Lucid
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=33556481 WHERE `entry` IN (47401 /*Twilight Stalker*/, 47406 /*Twilight Sentinel*/, 47407 /*Twilight Earthbinder*/, 47409 /*Twilight Cryomagus*/);
+UPDATE `creature_template` SET `unit_flags`=32832 WHERE `entry` IN (29542 /*Archbishop Landgren*/, 29614 /*Onslaught Darkweaver*/, 14447 /*Gilmorian*/, 50838 /*Tabbs*/, 50903 /*Orlix the Swamplord*/);
+UPDATE `creature_template` SET `unit_flags2`=2099201, `dynamicflags`=0, `HoverHeight`=1 WHERE `entry`=29545; -- Proto-Drake Corpse
+UPDATE `creature_template` SET `HoverHeight`=1 WHERE `entry` IN (29590 /*Blighted Proto-Drake*/, 65617 /*Zijin Hollowfly*/);
+UPDATE `creature_template` SET `unit_flags2`=136316928 WHERE `entry`=29694; -- Hyldsmeet Drakerider
+UPDATE `creature_template` SET `speed_run`=0.9920629, `unit_flags`=67108864 WHERE `entry`=29724; -- Library Guardian
+UPDATE `creature_template` SET `unit_flags`=32832, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=29730; -- Frostborn Stormrider
+UPDATE `creature_template` SET `unit_flags2`=2099200, `HoverHeight`=1 WHERE `entry` IN (29753 /*Stormpeak Wyrm*/, 29755 /*Stormpeak Hatchling*/);
+UPDATE `creature_template` SET `npcflag`=2097153 WHERE `entry`=65599; -- H.A.R.V.E.Y.
+UPDATE `creature_template` SET `npcflag`=3, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=65655; -- Eric Davidson
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry` IN (65662 /*Darkwidow*/, 65664 /*Blackfang*/, 65665 /*Webwinder*/, 65677 /*Nanners*/, 66492 /*Anklor*/, 66493 /*Croaker*/, 66494 /*Dampwing*/, 66982 /*Emeralda*/);
+UPDATE `creature_template` SET `unit_flags`=537166592, `unit_flags2`=2099201 WHERE `entry`=47780; -- Vermillion Skyscreamer
+UPDATE `creature_template` SET `unit_flags2`=35651584 WHERE `entry`=47798; -- Vermillion Slayer
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=537166592, `unit_flags2`=4196353 WHERE `entry`=65767; -- Klaxxi'va Ik
+UPDATE `creature_template` SET `HoverHeight`=2.5 WHERE `entry`=30013; -- Stormcrest Eagle
+UPDATE `creature_template` SET `unit_flags2`=2097152, `HoverHeight`=1.3 WHERE `entry`=30275; -- Wild Wyrm
+UPDATE `creature_template` SET `unit_class`=2 WHERE `entry`=48322; -- Chet the Slime-Breeder
+UPDATE `creature_template` SET `speed_run`=1.385714, `BaseAttackTime`=2000 WHERE `entry`=66464; -- Zhing
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=66622; -- Rakira
+UPDATE `creature_template` SET `speed_walk`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000 WHERE `entry` IN (12936 /*Badly Injured Alliance Soldier*/, 12938 /*Injured Alliance Soldier*/);
+UPDATE `creature_template` SET `npcflag`=1, `speed_run`=1.385714 WHERE `entry`=12996; -- Mounted Ironforge Mountaineer
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=34816 WHERE `entry`=66803; -- Ruukti Shadow Stalker
+UPDATE `creature_template` SET `speed_run`=0.9920629, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=66937; -- Akkalar
+UPDATE `creature_template` SET `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=66983; -- Moonstalker
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33536, `unit_flags2`=16384 WHERE `entry`=67556; -- Krasari Elder
+UPDATE `creature_template` SET `speed_walk`=1.2, `speed_run`=0.4285714 WHERE `entry`=67557; -- Colossal Viseclaw
+UPDATE `creature_template` SET `speed_run`=0.9523814 WHERE `entry`=31768; -- Stabled Hunter Pet
+UPDATE `creature_template` SET `npcflag`=4194433 WHERE `entry`=49803; -- Kennen
+UPDATE `creature_template` SET `unit_flags`=33604352 WHERE `entry`=50047; -- Injured Stormwind Infantry
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=2.857143, `BaseAttackTime`=2000 WHERE `entry`=32186; -- Infinite Timebreaker
+UPDATE `creature_template` SET `speed_walk`=1, `unit_flags2`=4196352 WHERE `entry`=14272; -- Snarlflare
+UPDATE `creature_template` SET `npcflag`=2097152 WHERE `entry`=50143; -- Auctioneer Itoran
+UPDATE `creature_template` SET `unit_flags`=570720256, `unit_flags2`=2049 WHERE `entry`=68157; -- Swift Gray Wolf
+UPDATE `creature_template` SET `speed_walk`=0.888888, `speed_run`=0.9523814 WHERE `entry`=50339; -- Sulik'shor
+UPDATE `creature_template` SET `speed_walk`=0.888888, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=50356; -- Krol the Blade
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33024, `unit_flags2`=2048 WHERE `entry`=68331; -- Marshal Troteman
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=570721024, `unit_flags2`=2049 WHERE `entry`=68380; -- Horde Raider
+UPDATE `creature_template` SET `unit_flags`=2147746560 WHERE `entry`=32623; -- Strand of the Ancients Portal
+UPDATE `creature_template` SET `unit_flags`=576 WHERE `entry`=14981; -- Elfarran
+UPDATE `creature_template` SET `unit_flags`=67141696 WHERE `entry`=50926; -- Grizzled Ben
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_walk`=1.444444, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=68850; -- Emerald Proto-Whelp
+UPDATE `creature_template` SET `unit_flags`=32768 WHERE `entry`=15102; -- Silverwing Emissary
+UPDATE `creature_template` SET `unit_flags`=256 WHERE `entry`=15106; -- Frostwolf Envoy
+UPDATE `creature_template` SET `npcflag`=209 WHERE `entry`=33640; -- Hanlir
+UPDATE `creature_template` SET `speed_walk`=0.75, `speed_run`=1.039286, `unit_flags`=8388608 WHERE `entry`=33744; -- Orgrimmar Champion
+UPDATE `creature_template` SET `speed_walk`=0.5, `speed_run`=0.6928571 WHERE `entry`=33747; -- Stormwind Champion
+UPDATE `creature_template` SET `speed_walk`=0.9, `speed_run`=1.039286, `unit_flags`=8388608 WHERE `entry`=33748; -- Thunder Bluff Champion
+UPDATE `creature_template` SET `speed_run`=1.571429, `unit_flags`=0 WHERE `entry`=33785; -- The Black Knight
+UPDATE `creature_template` SET `speed_run`=1.142857, `BaseAttackTime`=2000 WHERE `entry`=34127; -- Boneguard Commander
+UPDATE `creature_template` SET `speed_walk`=1.444444, `speed_run`=1.5873 WHERE `entry`=70020; -- Pterrorwing Skyscreamer
+UPDATE `creature_template` SET `BaseAttackTime`=1667 WHERE `entry`=16409; -- Phantom Guest
+UPDATE `creature_template` SET `unit_flags`=537133056 WHERE `entry`=34576; -- Crossroads Caravan Kodo
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=71303168 WHERE `entry`=70542; -- Invisible Stalker
+UPDATE `creature_template` SET `BaseAttackTime`=1886 WHERE `entry`=70643; -- Big Blossom Digger
+UPDATE `creature_template` SET `BaseAttackTime`=1600 WHERE `entry`=70682; -- Thunderhoof Supply Kodo
+UPDATE `creature_template` SET `BaseAttackTime`=1652 WHERE `entry`=70706; -- Trillium-Bladed Rock Cutter
+UPDATE `creature_template` SET `npcflag`=2, `unit_flags`=512 WHERE `entry`=16993; -- Wounded Blood Elf Pilgrim
+UPDATE `creature_template` SET `unit_flags2`=4194304 WHERE `entry`=34925; -- North Sea Kraken
+UPDATE `creature_template` SET `unit_flags`=570721024, `unit_flags2`=2049 WHERE `entry`=35084; -- Kvaldir Harpooner (Dead)
+UPDATE `creature_template` SET `npcflag`=1073741824, `speed_run`=0.8571429, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33280, `unit_flags2`=2048 WHERE `entry`=71163; -- Unborn Val'kyr
+UPDATE `creature_template` SET `npcflag`=4198528, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048 WHERE `entry`=71304; -- Iris Moondreamer
+UPDATE `creature_template` SET `unit_flags`=256, `unit_flags2`=2099200 WHERE `entry`=17592; -- Razormaw
+UPDATE `creature_template` SET `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry`=35569; -- Eressea Dawnsinger
+UPDATE `creature_template` SET `npcflag`=3, `unit_flags`=33024, `unit_flags2`=2099200 WHERE `entry` IN (35572 /*Mokra the Skullcrusher*/, 35617 /*Deathstalker Visceri*/);
+UPDATE `creature_template` SET `speed_walk`=2.8, `speed_run`=2, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_class`=4, `unit_flags2`=2097152, `VehicleId`=2891 WHERE `entry`=71454; -- Malkorok
+UPDATE `creature_template` SET `speed_walk`=6, `speed_run`=2.142857, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33554432, `unit_flags2`=2099200 WHERE `entry` IN (71455 /*Arcing Smash*/, 71470 /*Implosion*/, 71513 /*Ancient Miasma*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33555200, `unit_flags2`=2099200 WHERE `entry`=71459; -- Controller
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags2`=2099200 WHERE `entry` IN (17772 /*Lady Jaina Proudmoore*/, 17852 /*Thrall*/);
+UPDATE `creature_template` SET `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768 WHERE `entry`=17875; -- Hunter of the Hand
diff --git a/sql/updates/world/2015_06_07_00_world.sql b/sql/updates/world/2015_06_07_00_world.sql
new file mode 100644
index 00000000000..0e6e7e01c96
--- /dev/null
+++ b/sql/updates/world/2015_06_07_00_world.sql
@@ -0,0 +1,1603 @@
+ALTER TABLE `npc_text`
+ CHANGE `BroadcastTextID0` `BroadcastTextID0` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT '0' AFTER `Probability7`,
+ CHANGE `BroadcastTextID1` `BroadcastTextID1` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT '0' AFTER `BroadcastTextID0`,
+ CHANGE `BroadcastTextID2` `BroadcastTextID2` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT '0' AFTER `BroadcastTextID1`,
+ CHANGE `BroadcastTextID3` `BroadcastTextID3` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT '0' AFTER `BroadcastTextID2`,
+ CHANGE `BroadcastTextID4` `BroadcastTextID4` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT '0' AFTER `BroadcastTextID3`,
+ CHANGE `BroadcastTextID5` `BroadcastTextID5` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT '0' AFTER `BroadcastTextID4`,
+ CHANGE `BroadcastTextID6` `BroadcastTextID6` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT '0' AFTER `BroadcastTextID5`,
+ CHANGE `BroadcastTextID7` `BroadcastTextID7` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT '0' AFTER `BroadcastTextID6`;
+
+
+UPDATE `npc_text` SET `VerifiedBuild`=0 WHERE `VerifiedBuild` < 0;
+UPDATE `npc_text` SET `VerifiedBuild`=-`VerifiedBuild` WHERE `VerifiedBuild` <= 15595;
+
+DELETE FROM `npc_text` WHERE `ID` IN (22372, 20136, 22374, 22393, 22394, 20171, 22424, 22444, 22459, 20222, 22460, 22461, 20226, 20227, 20238, 20272, 20283, 22520, 22522, 22528, 20292, 22533, 22534, 22535, 22543, 22545, 22546, 22547, 22548, 22554, 22555, 22557, 22558, 22559, 22560, 20331, 20334, 20342, 22584, 20357, 20358, 20362, 20368, 20369, 20370, 20371, 20372, 20373, 20378, 20384, 20387, 20388, 20390, 20395, 20396, 20401, 20403, 20407, 20410, 20415, 20416, 20419, 20429, 20444, 20454, 20461, 20466, 20476, 20496, 20498, 20505, 20525, 18317, 20605, 20608, 20613, 18398, 20637, 20658, 20659, 20660, 20668, 20669, 20673, 20724, 7396, 20823, 20826, 14127, 18641, 18643, 18646, 20932, 20974, 20981, 21117, 21121, 18887, 18893, 18895, 18896, 21138, 21184, 21197, 21198, 18970, 18972, 21246, 19025, 19040, 21285, 21311, 21312, 19078, 19091, 19115, 19160, 19180, 19196, 21498, 19342, 19345, 19385, 19389, 19390, 19391, 21631, 19398, 19409, 19410, 19411, 19412, 19413, 19416, 19417, 19418, 19419, 19421, 19422, 19423, 19424, 19427, 19428, 19429, 19430, 19432, 19433, 19434, 19435, 19437, 19439, 19440, 19441, 19442, 19443, 19444, 19445, 19446, 19447, 19449, 19450, 19451, 19452, 19454, 19455, 19456, 19457, 21695, 21696, 19461, 19462, 19463, 19464, 19466, 19467, 19468, 19469, 19470, 19473, 21711, 19474, 19475, 21712, 19476, 19479, 19480, 19516, 19519, 19521, 19528, 19537, 19540, 19582, 19583, 19585, 19609, 19610, 19623, 19648, 21926, 19709, 19717, 21974, 21983, 22015, 22020, 22021, 22022, 22023, 19798, 22050, 19815, 19835, 19854, 19858, 22134, 19955, 20016, 22272, 22276, 22280, 20050, 20052, 22292, 22293, 22299, 22300, 17850, 17852, 20100, 22341, 20104, 22345, 22346, 22348, 22352, 20119, 22358, 22359, 22360, 21183, 21215, 21219, 21220, 20113, 21235, 21240, 21244, 21251, 21254, 21255, 21260, 21261, 21262, 21264, 21283, 21284, 22960, 21295, 21297, 21298, 19075, 22992, 23014, 21469, 22633, 20964, 20965, 20966, 20967, 20980, 7178, 21753, 18976, 21763, 21211, 22898, 22922, 22377, 22378, 21280, 22975, 19077, 22445, 20232, 19134, 19135, 22480, 18591, 20269, 20276, 18644, 19765, 19766, 19767, 20341, 20343, 20344, 20347, 22628, 18735, 22647, 20425, 19877, 19325, 20482, 20483, 21087, 19448, 18343, 18907, 22402, 22404, 22406, 22408, 22409, 22411, 22413, 22414, 22417, 22419, 22421, 22423, 22428, 22441, 17965, 17966, 17968, 22477, 22478, 22521, 22542, 18071, 18074, 22587, 22590, 22593, 22595, 18147, 22634, 22636, 22645, 22648, 22657, 18227, 18229, 18230, 18232, 18233, 18243, 22732, 22744, 22747, 22748, 22750, 22751, 22752, 22754, 22755, 22756, 22757, 22758, 22759, 22760, 22761, 22762, 22763, 22764, 22765, 22766, 22767, 22768, 22769, 22770, 22771, 22772, 22773, 22774, 22776, 22777, 22778, 22779, 22780, 22781, 22784, 22785, 22787, 18310, 22788, 18311, 22789, 22790, 22791, 22792, 22793, 22794, 22798, 22800, 22801, 18327, 18333, 18336, 18337, 18340, 22850, 22851, 22852, 22853, 22856, 22857, 22861, 22862, 22871, 18397, 22876, 18401, 18405, 22886, 18411, 18412, 22904, 22905, 22906, 22907, 22908, 22909, 22918, 22919, 22920, 22921, 22923, 22924, 22925, 22926, 18450, 22927, 22928, 22929, 18453, 22930, 22931, 22933, 22936, 18460, 22937, 22938, 22939, 22940, 22942, 22943, 22944, 22946, 18471, 18473, 22955, 22966, 22967, 22969, 22974, 18503, 22989, 22993, 22994, 22995, 23007, 23008, 23009, 18536, 23016, 18562, 23039, 23044, 23053, 23075, 23080, 23081, 18608, 18618, 18659, 18660, 18667, 18668, 18672, 18715, 18720, 18742, 18777, 18785, 18786, 18787, 18789, 18790, 18791, 18792, 18804, 18805, 18806, 18832, 18834, 18835, 18838, 18843, 18847, 18901, 18919, 18927, 18971, 14525, 14526, 19015, 19026, 19045, 19046, 19047, 10122, 19093, 19094, 19095, 19096, 19097, 19098, 19114, 19133, 19161, 19168, 19181, 19182, 19184, 19185, 19186, 19187, 19188, 19189, 19190, 19191, 19192, 19193, 19194, 19195, 14730, 19215, 19216, 19217, 19227, 19230, 19254, 19255, 14792, 19275, 19276, 19277, 19293, 19295, 19306, 19308, 14834, 19312, 10368, 19331, 19332, 19352, 19369, 19376, 19394, 19395, 19404, 19405, 19406, 19407, 14943, 19420, 19425, 19431, 19436, 19453, 19458, 19465, 19471, 19477, 19478, 19513, 19522, 19526, 19552, 19554, 19555, 19556, 19562, 19567, 19568, 19571, 19580, 19584, 19586, 19588, 19589, 19590, 19591, 15115, 19592, 19593, 19594, 19595, 19596, 19620, 19633, 19635, 19649, 19697, 19705, 19712, 19719, 19721, 19724, 19739, 19741, 19752, 19758, 19759, 19770, 19771, 19772, 19773, 19786, 19830, 19849, 19850, 19852, 19855, 19856, 19863, 19876, 19878, 19879, 19881, 19888, 19894, 19921, 19964, 19965, 19966, 15525, 20011, 15535, 20012, 15536, 20017, 15541, 20025, 20027, 20029, 20036, 20039, 20040, 20053, 20067, 20068, 15593, 20071, 20072, 20075, 20076, 20077, 20078, 20079, 20081, 20083, 20084, 20094, 20097, 20098, 20099, 20101, 20112, 20115, 20118, 20121, 20122, 20124, 20135, 20163, 20173, 20174, 20177, 20178, 20189, 20190, 20191, 15717, 15718, 20206, 20215, 20216, 20219, 20228, 20237, 20240, 20241, 20255, 20256, 20257, 20258, 20259, 20260, 20263, 20278, 20302, 20306, 15841, 20320, 20326, 20330, 20335, 20337, 20338, 20339, 20340, 20346, 20348, 20350, 20351, 20352, 20353, 20354, 20359, 20361, 20363, 20364, 20365, 20375, 20376, 20382, 20397, 20398, 20399, 20412, 20413, 20414, 20430, 20485, 20490, 20491, 20497, 20501, 20502, 20509, 20510, 20511, 20512, 20513, 20514, 20515, 20516, 20519, 20521, 20524, 20526, 20527, 20528, 20529, 20530, 20531, 20532, 20533, 20534, 20537, 20540, 20549, 20583, 20589, 20603, 20606, 20607, 20618, 20619, 20620, 20621, 20622, 20624, 20625, 20632, 20635, 20636, 20638, 20642, 20643, 20646, 20648, 20649, 20677, 20678, 20681, 20689, 20690, 20691, 20696, 20697, 20700, 20703, 16230, 20723, 20726, 20727, 20763, 20765, 20766, 20767, 20768, 20769, 20778, 20785, 20786, 20787, 20816, 20818, 20819, 20821, 20828, 20829, 20830, 20831, 20832, 20833, 20834, 20835, 20836, 20837, 20838, 20839, 20840, 20841, 20842, 20843, 20844, 20845, 20846, 20848, 20849, 20850, 20851, 20852, 20853, 20854, 20855, 20856, 20857, 20858, 20859, 20860, 20861, 20862, 20864, 20865, 20908, 20909, 20910, 20911, 20912, 20914, 20915, 20916, 20917, 20918, 20919, 20921, 20937, 20946, 20947, 20948, 20949, 20950, 20951, 20955, 20957, 20959, 20960, 20970, 20985, 20987, 20988, 20989, 20990, 20991, 20993, 21000, 21001, 21002, 21003, 21004, 21005, 21007, 21008, 21026, 21030, 21033, 16567, 21052, 21084, 21085, 21086, 21091, 21092, 21097, 21106, 21107, 21114, 21118, 21122, 21123, 21124, 21137, 16706, 21185, 21202, 21205, 21207, 21239, 21241, 21247, 21248, 21252, 21253, 21269, 21274, 21281, 21282, 21296, 21408, 12508, 16998, 21499, 21500, 21501, 17096, 21615, 21619, 21624, 21627, 21630, 21633, 21694, 21698, 21699, 21701, 21702, 21704, 21720, 21739, 21750, 21751, 21754, 21755, 21766, 21767, 21783, 21784, 17318, 17331, 21809, 17334, 21812, 21833, 21834, 21838, 21843, 21871, 21872, 21892, 21893, 21955, 17482, 21966, 17519, 17528, 22007, 22014, 22052, 22063, 8676, 22108, 22140, 17739, 17760, 22258, 22269, 22277, 22278, 22279, 22301, 17831, 17835, 22315, 22317, 22338, 22340, 22365, 17893, 17895, 22373, 22375, 22376, 22381, 22382, 22858, 22884, 22900, 22901, 22902, 22903, 20676, 21259, 10123, 22934, 22945, 22956, 22968, 22981, 20203, 21876, 20213, 19128, 20243, 22539, 22576, 20943, 19840, 19842, 19844, 20986, 12665, 19911, 22701, 19365, 17694, 19367, 21614, 20517, 20579, 21142);
+INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES
+(22372, 1, 0, 0, 0, 0, 0, 0, 0, 72883, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22372
+(20136, 1, 0, 0, 0, 0, 0, 0, 0, 62726, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20136
+(22374, 1, 0, 0, 0, 0, 0, 0, 0, 72885, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22374
+(22393, 1, 0, 0, 0, 0, 0, 0, 0, 72889, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22393
+(22394, 1, 0, 0, 0, 0, 0, 0, 0, 72890, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22394
+(20171, 1, 0, 0, 0, 0, 0, 0, 0, 63416, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20171
+(22424, 1, 0, 0, 0, 0, 0, 0, 0, 72667, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22424
+(22444, 1, 0, 0, 0, 0, 0, 0, 0, 71693, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22444
+(22459, 1, 1, 1, 0, 0, 0, 0, 0, 73133, 73134, 73135, 0, 0, 0, 0, 0, 17128), -- 22459
+(20222, 1, 0, 0, 0, 0, 0, 0, 0, 62274, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20222
+(22460, 1, 1, 1, 0, 0, 0, 0, 0, 73136, 73137, 73138, 0, 0, 0, 0, 0, 17128), -- 22460
+(22461, 1, 1, 1, 0, 0, 0, 0, 0, 73130, 73131, 73132, 0, 0, 0, 0, 0, 17128), -- 22461
+(20226, 1, 0, 0, 0, 0, 0, 0, 0, 63641, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20226
+(20227, 1, 0, 0, 0, 0, 0, 0, 0, 63643, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20227
+(20238, 1, 0, 0, 0, 0, 0, 0, 0, 63756, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20238
+(20272, 1, 0, 0, 0, 0, 0, 0, 0, 63908, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20272
+(20283, 1, 0, 0, 0, 0, 0, 0, 0, 63944, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20283
+(22520, 1, 1, 1, 0, 0, 0, 0, 0, 73655, 73654, 73653, 0, 0, 0, 0, 0, 17128), -- 22520
+(22522, 1, 0, 0, 0, 0, 0, 0, 0, 73688, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22522
+(22528, 1, 0, 0, 0, 0, 0, 0, 0, 73731, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22528
+(20292, 1, 1, 1, 0, 0, 0, 0, 0, 63968, 66332, 66333, 0, 0, 0, 0, 0, 17128), -- 20292
+(22533, 1, 0, 0, 0, 0, 0, 0, 0, 73738, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22533
+(22534, 1, 0, 0, 0, 0, 0, 0, 0, 73739, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22534
+(22535, 1, 0, 0, 0, 0, 0, 0, 0, 73740, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22535
+(22543, 1, 0, 0, 0, 0, 0, 0, 0, 73966, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22543
+(22545, 1, 0, 0, 0, 0, 0, 0, 0, 73992, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22545
+(22546, 1, 0, 0, 0, 0, 0, 0, 0, 73996, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22546
+(22547, 1, 0, 0, 0, 0, 0, 0, 0, 73997, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22547
+(22548, 1, 0, 0, 0, 0, 0, 0, 0, 73998, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22548
+(22554, 1, 0, 0, 0, 0, 0, 0, 0, 74008, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22554
+(22555, 1, 0, 0, 0, 0, 0, 0, 0, 74010, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22555
+(22557, 1, 0, 0, 0, 0, 0, 0, 0, 74087, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22557
+(22558, 1, 0, 0, 0, 0, 0, 0, 0, 74088, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22558
+(22559, 1, 1, 1, 1, 1, 0, 0, 0, 74096, 74095, 74093, 74092, 74090, 0, 0, 0, 17128), -- 22559
+(22560, 1, 0, 0, 0, 0, 0, 0, 0, 74098, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22560
+(20331, 1, 1, 0, 0, 0, 0, 0, 0, 64154, 64155, 0, 0, 0, 0, 0, 0, 17128), -- 20331
+(20334, 1, 1, 1, 1, 0, 0, 0, 0, 64156, 64157, 64158, 64159, 0, 0, 0, 0, 17128), -- 20334
+(20342, 1, 1, 1, 1, 0, 0, 0, 0, 64176, 64177, 64178, 64197, 0, 0, 0, 0, 17128), -- 20342
+(22584, 1, 0, 0, 0, 0, 0, 0, 0, 74254, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22584
+(20357, 1, 0, 0, 0, 0, 0, 0, 0, 64226, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20357
+(20358, 1, 0, 0, 0, 0, 0, 0, 0, 64227, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20358
+(20362, 1, 0, 0, 0, 0, 0, 0, 0, 64239, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20362
+(20368, 1, 0, 0, 0, 0, 0, 0, 0, 58898, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20368
+(20369, 1, 0, 0, 0, 0, 0, 0, 0, 58911, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20369
+(20370, 1, 0, 0, 0, 0, 0, 0, 0, 58928, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20370
+(20371, 1, 0, 0, 0, 0, 0, 0, 0, 58905, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20371
+(20372, 1, 0, 0, 0, 0, 0, 0, 0, 58933, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20372
+(20373, 1, 0, 0, 0, 0, 0, 0, 0, 64270, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20373
+(20378, 1, 0, 0, 0, 0, 0, 0, 0, 64292, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20378
+(20384, 1, 0, 0, 0, 0, 0, 0, 0, 64324, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20384
+(20387, 1, 0, 0, 0, 0, 0, 0, 0, 64338, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20387
+(20388, 1, 1, 1, 1, 1, 1, 0, 0, 64332, 64333, 64334, 64335, 64336, 64346, 0, 0, 17128), -- 20388
+(20390, 1, 1, 1, 1, 0, 0, 0, 0, 64366, 64369, 64376, 64377, 0, 0, 0, 0, 17128), -- 20390
+(20395, 1, 0, 0, 0, 0, 0, 0, 0, 64380, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20395
+(20396, 1, 0, 0, 0, 0, 0, 0, 0, 64381, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20396
+(20401, 1, 0, 0, 0, 0, 0, 0, 0, 64388, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20401
+(20403, 1, 0, 0, 0, 0, 0, 0, 0, 64390, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20403
+(20407, 1, 0, 0, 0, 0, 0, 0, 0, 64391, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20407
+(20410, 1, 0, 0, 0, 0, 0, 0, 0, 64395, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20410
+(20415, 1, 0, 0, 0, 0, 0, 0, 0, 64400, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20415
+(20416, 1, 0, 0, 0, 0, 0, 0, 0, 65682, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20416
+(20419, 1, 0, 0, 0, 0, 0, 0, 0, 64403, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20419
+(20429, 1, 0, 0, 0, 0, 0, 0, 0, 64423, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20429
+(20444, 1, 0, 0, 0, 0, 0, 0, 0, 64565, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20444
+(20454, 1, 0, 0, 0, 0, 0, 0, 0, 64573, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20454
+(20461, 1, 0, 0, 0, 0, 0, 0, 0, 64580, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20461
+(20466, 1, 0, 0, 0, 0, 0, 0, 0, 64585, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20466
+(20476, 1, 0, 0, 0, 0, 0, 0, 0, 64595, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20476
+(20496, 1, 1, 0, 0, 0, 0, 0, 0, 64666, 64667, 0, 0, 0, 0, 0, 0, 17128), -- 20496
+(20498, 1, 0, 0, 0, 0, 0, 0, 0, 64682, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20498
+(20505, 1, 0, 0, 0, 0, 0, 0, 0, 64713, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20505
+(20525, 1, 0, 0, 0, 0, 0, 0, 0, 64742, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20525
+(18317, 1, 1, 1, 0, 0, 0, 0, 0, 53125, 53126, 53127, 0, 0, 0, 0, 0, 17128), -- 18317
+(20605, 1, 1, 1, 1, 1, 1, 0, 0, 65130, 65131, 65132, 65133, 65134, 65136, 0, 0, 17128), -- 20605
+(20608, 1, 1, 1, 1, 1, 1, 0, 0, 65141, 65142, 65143, 65144, 65145, 65146, 0, 0, 17128), -- 20608
+(20613, 1, 0, 0, 0, 0, 0, 0, 0, 65222, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20613
+(18398, 1, 1, 1, 0, 0, 0, 0, 0, 53573, 53574, 53575, 0, 0, 0, 0, 0, 17128), -- 18398
+(20637, 1, 1, 1, 1, 1, 1, 0, 0, 65374, 65375, 65377, 65379, 65380, 65381, 0, 0, 17128), -- 20637
+(20658, 1, 0, 0, 0, 0, 0, 0, 0, 65400, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20658
+(20659, 1, 0, 0, 0, 0, 0, 0, 0, 65403, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20659
+(20660, 1, 0, 0, 0, 0, 0, 0, 0, 65408, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20660
+(20668, 1, 0, 0, 0, 0, 0, 0, 0, 65499, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20668
+(20669, 1, 1, 1, 1, 1, 0, 0, 0, 65624, 65625, 65626, 65627, 65628, 0, 0, 0, 17128), -- 20669
+(20673, 1, 0, 0, 0, 0, 0, 0, 0, 65630, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20673
+(20724, 1, 0, 0, 0, 0, 0, 0, 0, 66331, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20724
+(7396, 1, 0, 0, 0, 0, 0, 0, 0, 10163, 0, 0, 0, 0, 0, 0, 0, 17128), -- 7396
+(20823, 1, 0, 0, 0, 0, 0, 0, 0, 64874, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20823
+(20826, 1, 0, 0, 0, 0, 0, 0, 0, 64881, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20826
+(14127, 1, 0, 0, 0, 0, 0, 0, 0, 32779, 0, 0, 0, 0, 0, 0, 0, 17128), -- 14127
+(18641, 1, 0, 0, 0, 0, 0, 0, 0, 54768, 0, 0, 0, 0, 0, 0, 0, 17128), -- 18641
+(18643, 1, 0, 0, 0, 0, 0, 0, 0, 54787, 0, 0, 0, 0, 0, 0, 0, 17128), -- 18643
+(18646, 1, 0, 0, 0, 0, 0, 0, 0, 54794, 0, 0, 0, 0, 0, 0, 0, 17128), -- 18646
+(20932, 1, 0, 0, 0, 0, 0, 0, 0, 66728, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20932
+(20974, 1, 0, 0, 0, 0, 0, 0, 0, 66878, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20974
+(20981, 1, 1, 1, 1, 1, 1, 1, 1, 66917, 66918, 66919, 66920, 66921, 66922, 66923, 66924, 17128), -- 20981
+(21117, 1, 1, 1, 1, 1, 1, 1, 1, 67233, 67235, 67237, 67238, 67239, 67240, 67241, 67242, 17128), -- 21117
+(21121, 1, 0, 0, 0, 0, 0, 0, 0, 67267, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21121
+(18887, 1, 0, 0, 0, 0, 0, 0, 0, 56219, 0, 0, 0, 0, 0, 0, 0, 17128), -- 18887
+(18893, 1, 0, 0, 0, 0, 0, 0, 0, 56255, 0, 0, 0, 0, 0, 0, 0, 17128), -- 18893
+(18895, 1, 1, 1, 1, 0, 0, 0, 0, 56265, 56681, 56682, 56683, 0, 0, 0, 0, 17128), -- 18895
+(18896, 1, 0, 0, 0, 0, 0, 0, 0, 56266, 0, 0, 0, 0, 0, 0, 0, 17128), -- 18896
+(21138, 1, 0, 0, 0, 0, 0, 0, 0, 67343, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21138
+(21184, 1, 0, 0, 0, 0, 0, 0, 0, 67502, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21184
+(21197, 1, 0, 0, 0, 0, 0, 0, 0, 67572, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21197
+(21198, 1, 0, 0, 0, 0, 0, 0, 0, 67575, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21198
+(18970, 1, 1, 1, 1, 1, 0, 0, 0, 56684, 56685, 56686, 56825, 56826, 0, 0, 0, 17128), -- 18970
+(18972, 1, 0, 0, 0, 0, 0, 0, 0, 56688, 0, 0, 0, 0, 0, 0, 0, 17128), -- 18972
+(21246, 1, 0, 0, 0, 0, 0, 0, 0, 65129, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21246
+(19025, 1, 1, 1, 1, 1, 1, 0, 0, 56960, 56961, 56962, 56963, 56964, 56965, 0, 0, 17128), -- 19025
+(19040, 1, 0, 0, 0, 0, 0, 0, 0, 57027, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19040
+(21285, 1, 0, 0, 0, 0, 0, 0, 0, 67835, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21285
+(21311, 1, 0, 0, 0, 0, 0, 0, 0, 65941, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21311
+(21312, 1, 0, 0, 0, 0, 0, 0, 0, 65944, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21312
+(19078, 1, 0, 0, 0, 0, 0, 0, 0, 57219, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19078
+(19091, 1, 1, 1, 1, 1, 1, 1, 1, 57320, 57322, 57323, 57324, 66883, 66884, 66885, 66886, 17128), -- 19091
+(19115, 1, 0, 0, 0, 0, 0, 0, 0, 57421, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19115
+(19160, 1, 0, 0, 0, 0, 0, 0, 0, 57636, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19160
+(19180, 1, 0, 0, 0, 0, 0, 0, 0, 57702, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19180
+(19196, 1, 0, 0, 0, 0, 0, 0, 0, 57750, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19196
+(21498, 1, 1, 1, 1, 1, 1, 1, 0, 68296, 68297, 68298, 68299, 68300, 68301, 68302, 0, 17128), -- 21498
+(19342, 1, 0, 0, 0, 0, 0, 0, 0, 58438, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19342
+(19345, 1, 1, 1, 0, 0, 0, 0, 0, 58452, 58453, 58454, 0, 0, 0, 0, 0, 17128), -- 19345
+(19385, 1, 0, 0, 0, 0, 0, 0, 0, 58637, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19385
+(19389, 1, 1, 1, 0, 0, 0, 0, 0, 58667, 58896, 58900, 0, 0, 0, 0, 0, 17128), -- 19389
+(19390, 1, 0, 0, 0, 0, 0, 0, 0, 58669, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19390
+(19391, 1, 1, 1, 1, 0, 0, 0, 0, 58671, 58672, 58673, 58674, 0, 0, 0, 0, 17128), -- 19391
+(21631, 1, 0, 0, 0, 0, 0, 0, 0, 68514, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21631
+(19398, 1, 0, 0, 0, 0, 0, 0, 0, 58717, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19398
+(19409, 1, 1, 0, 0, 0, 0, 0, 0, 58758, 58760, 0, 0, 0, 0, 0, 0, 17128), -- 19409
+(19410, 1, 1, 0, 0, 0, 0, 0, 0, 58774, 58775, 0, 0, 0, 0, 0, 0, 17128), -- 19410
+(19411, 1, 1, 0, 0, 0, 0, 0, 0, 58784, 58785, 0, 0, 0, 0, 0, 0, 17128), -- 19411
+(19412, 1, 1, 0, 0, 0, 0, 0, 0, 58794, 58796, 0, 0, 0, 0, 0, 0, 17128), -- 19412
+(19413, 1, 1, 1, 0, 0, 0, 0, 0, 58804, 58805, 58806, 0, 0, 0, 0, 0, 17128), -- 19413
+(19416, 1, 1, 1, 0, 0, 0, 0, 0, 58815, 64136, 64137, 0, 0, 0, 0, 0, 17128), -- 19416
+(19417, 1, 1, 1, 0, 0, 0, 0, 0, 58816, 64140, 64141, 0, 0, 0, 0, 0, 17128), -- 19417
+(19418, 1, 1, 1, 0, 0, 0, 0, 0, 58817, 64142, 64143, 0, 0, 0, 0, 0, 17128), -- 19418
+(19419, 1, 1, 1, 0, 0, 0, 0, 0, 58818, 64144, 64145, 0, 0, 0, 0, 0, 17128), -- 19419
+(19421, 1, 1, 1, 1, 1, 0, 0, 0, 58820, 58821, 58822, 58823, 58824, 0, 0, 0, 17128), -- 19421
+(19422, 1, 1, 1, 1, 1, 0, 0, 0, 58825, 58826, 58827, 58828, 58829, 0, 0, 0, 17128), -- 19422
+(19423, 1, 1, 1, 1, 1, 1, 0, 0, 58830, 58831, 58832, 58833, 58834, 59035, 0, 0, 17128), -- 19423
+(19424, 1, 1, 1, 1, 1, 1, 0, 0, 58835, 58836, 58837, 58838, 58839, 59036, 0, 0, 17128), -- 19424
+(19427, 1, 1, 1, 1, 0, 0, 0, 0, 58849, 58850, 58851, 58852, 0, 0, 0, 0, 17128), -- 19427
+(19428, 1, 1, 1, 1, 1, 0, 0, 0, 58853, 58854, 58855, 58856, 58862, 0, 0, 0, 17128), -- 19428
+(19429, 1, 1, 1, 1, 1, 1, 0, 0, 58857, 58858, 58859, 58860, 58861, 59038, 0, 0, 17128), -- 19429
+(19430, 1, 1, 1, 1, 1, 1, 0, 0, 58863, 58864, 58865, 58866, 58867, 59039, 0, 0, 17128), -- 19430
+(19432, 1, 1, 1, 0, 0, 0, 0, 0, 58880, 58881, 58882, 0, 0, 0, 0, 0, 17128), -- 19432
+(19433, 1, 1, 1, 0, 0, 0, 0, 0, 58883, 58884, 58885, 0, 0, 0, 0, 0, 17128), -- 19433
+(19434, 1, 1, 1, 0, 0, 0, 0, 0, 58886, 58887, 58888, 0, 0, 0, 0, 0, 17128), -- 19434
+(19435, 1, 1, 1, 0, 0, 0, 0, 0, 58889, 58890, 58891, 0, 0, 0, 0, 0, 17128), -- 19435
+(19437, 1, 1, 1, 1, 1, 1, 0, 0, 58895, 58897, 58898, 58899, 58901, 58936, 0, 0, 17128), -- 19437
+(19439, 1, 1, 1, 1, 1, 1, 0, 0, 58902, 58903, 58904, 58906, 58907, 58937, 0, 0, 17128), -- 19439
+(19440, 1, 1, 1, 1, 1, 0, 0, 0, 58908, 58909, 58917, 58921, 58938, 0, 0, 0, 17128), -- 19440
+(19441, 1, 1, 1, 1, 1, 0, 0, 0, 58924, 58927, 58929, 58930, 58939, 0, 0, 0, 17128), -- 19441
+(19442, 1, 1, 1, 1, 1, 0, 0, 0, 58931, 58932, 58934, 58935, 58940, 0, 0, 0, 17128), -- 19442
+(19443, 1, 1, 1, 0, 0, 0, 0, 0, 58941, 58942, 58943, 0, 0, 0, 0, 0, 17128), -- 19443
+(19444, 1, 1, 1, 0, 0, 0, 0, 0, 58944, 58945, 58946, 0, 0, 0, 0, 0, 17128), -- 19444
+(19445, 1, 1, 1, 0, 0, 0, 0, 0, 58947, 58948, 58949, 0, 0, 0, 0, 0, 17128), -- 19445
+(19446, 1, 1, 1, 0, 0, 0, 0, 0, 58950, 58951, 58952, 0, 0, 0, 0, 0, 17128), -- 19446
+(19447, 1, 1, 1, 0, 0, 0, 0, 0, 58953, 58954, 58955, 0, 0, 0, 0, 0, 17128), -- 19447
+(19449, 1, 1, 1, 0, 0, 0, 0, 0, 58959, 58960, 58961, 0, 0, 0, 0, 0, 17128), -- 19449
+(19450, 1, 1, 1, 0, 0, 0, 0, 0, 58962, 58963, 58964, 0, 0, 0, 0, 0, 17128), -- 19450
+(19451, 1, 1, 1, 0, 0, 0, 0, 0, 58965, 58969, 58967, 0, 0, 0, 0, 0, 17128), -- 19451
+(19452, 1, 1, 1, 0, 0, 0, 0, 0, 58968, 58969, 58970, 0, 0, 0, 0, 0, 17128), -- 19452
+(19454, 1, 1, 1, 0, 0, 0, 0, 0, 58975, 58976, 58977, 0, 0, 0, 0, 0, 17128), -- 19454
+(19455, 1, 1, 1, 0, 0, 0, 0, 0, 58978, 58979, 58980, 0, 0, 0, 0, 0, 17128), -- 19455
+(19456, 1, 1, 1, 0, 0, 0, 0, 0, 58981, 58982, 58983, 0, 0, 0, 0, 0, 17128), -- 19456
+(19457, 1, 1, 1, 0, 0, 0, 0, 0, 58984, 58985, 58986, 0, 0, 0, 0, 0, 17128), -- 19457
+(21695, 1, 0, 0, 0, 0, 0, 0, 0, 68781, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21695
+(21696, 1, 0, 0, 0, 0, 0, 0, 0, 68783, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21696
+(19461, 1, 1, 1, 0, 0, 0, 0, 0, 58996, 58997, 58998, 0, 0, 0, 0, 0, 17128), -- 19461
+(19462, 1, 1, 1, 0, 0, 0, 0, 0, 59000, 59001, 59002, 0, 0, 0, 0, 0, 17128), -- 19462
+(19463, 1, 1, 1, 1, 0, 0, 0, 0, 59003, 59004, 59008, 59007, 0, 0, 0, 0, 17128), -- 19463
+(19464, 1, 1, 1, 1, 0, 0, 0, 0, 59009, 59010, 59011, 59012, 0, 0, 0, 0, 17128), -- 19464
+(19466, 1, 1, 1, 0, 0, 0, 0, 0, 59017, 59018, 59019, 0, 0, 0, 0, 0, 17128), -- 19466
+(19467, 1, 1, 1, 0, 0, 0, 0, 0, 59020, 59021, 59022, 0, 0, 0, 0, 0, 17128), -- 19467
+(19468, 1, 1, 1, 0, 0, 0, 0, 0, 59023, 59024, 59025, 0, 0, 0, 0, 0, 17128), -- 19468
+(19469, 1, 1, 1, 0, 0, 0, 0, 0, 59026, 59027, 59028, 0, 0, 0, 0, 0, 17128), -- 19469
+(19470, 1, 1, 1, 0, 0, 0, 0, 0, 59029, 59030, 59031, 0, 0, 0, 0, 0, 17128), -- 19470
+(19473, 1, 1, 0, 0, 0, 0, 0, 0, 59041, 59043, 0, 0, 0, 0, 0, 0, 17128), -- 19473
+(21711, 1, 1, 1, 1, 1, 1, 1, 1, 64961, 64964, 64965, 64966, 64967, 64968, 64969, 64970, 17128), -- 21711
+(19474, 1, 1, 1, 0, 0, 0, 0, 0, 59044, 59045, 59046, 0, 0, 0, 0, 0, 17128), -- 19474
+(19475, 1, 1, 0, 0, 0, 0, 0, 0, 59047, 59048, 0, 0, 0, 0, 0, 0, 17128), -- 19475
+(21712, 1, 1, 1, 1, 1, 1, 0, 0, 64971, 64972, 64973, 64974, 64976, 64975, 0, 0, 17128), -- 21712
+(19476, 1, 1, 1, 0, 0, 0, 0, 0, 59049, 59051, 59052, 0, 0, 0, 0, 0, 17128), -- 19476
+(19479, 1, 1, 1, 0, 0, 0, 0, 0, 59060, 59061, 59062, 0, 0, 0, 0, 0, 17128), -- 19479
+(19480, 1, 1, 1, 1, 1, 0, 0, 0, 59063, 59064, 59065, 59066, 59067, 0, 0, 0, 17128), -- 19480
+(19516, 1, 0, 0, 0, 0, 0, 0, 0, 59151, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19516
+(19519, 1, 0, 0, 0, 0, 0, 0, 0, 59153, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19519
+(19521, 1, 0, 0, 0, 0, 0, 0, 0, 59155, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19521
+(19528, 1, 0, 0, 0, 0, 0, 0, 0, 59166, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19528
+(19537, 1, 0, 0, 0, 0, 0, 0, 0, 59174, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19537
+(19540, 1, 0, 0, 0, 0, 0, 0, 0, 59223, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19540
+(19582, 1, 0, 0, 0, 0, 0, 0, 0, 59492, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19582
+(19583, 1, 1, 1, 1, 1, 0, 0, 0, 59496, 59497, 59498, 59499, 59500, 0, 0, 0, 17128), -- 19583
+(19585, 1, 0, 0, 0, 0, 0, 0, 0, 59512, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19585
+(19609, 1, 0, 0, 0, 0, 0, 0, 0, 59625, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19609
+(19610, 1, 1, 0, 0, 0, 0, 0, 0, 59626, 59627, 0, 0, 0, 0, 0, 0, 17128), -- 19610
+(19623, 1, 0, 0, 0, 0, 0, 0, 0, 59709, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19623
+(19648, 1, 1, 1, 0, 0, 0, 0, 0, 59836, 59981, 59982, 0, 0, 0, 0, 0, 17128), -- 19648
+(21926, 1, 0, 0, 0, 0, 0, 0, 0, 70040, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21926
+(19709, 1, 0, 0, 0, 0, 0, 0, 0, 60182, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19709
+(19717, 1, 0, 0, 0, 0, 0, 0, 0, 60250, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19717
+(21974, 1, 0, 0, 0, 0, 0, 0, 0, 70252, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21974
+(21983, 1, 0, 0, 0, 0, 0, 0, 0, 70255, 0, 0, 0, 0, 0, 0, 0, 17128), -- 21983
+(22015, 1, 0, 0, 0, 0, 0, 0, 0, 70690, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22015
+(22020, 1, 0, 0, 0, 0, 0, 0, 0, 70696, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22020
+(22021, 1, 0, 0, 0, 0, 0, 0, 0, 70697, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22021
+(22022, 1, 0, 0, 0, 0, 0, 0, 0, 70698, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22022
+(22023, 1, 0, 0, 0, 0, 0, 0, 0, 70699, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22023
+(19798, 1, 1, 0, 0, 0, 0, 0, 0, 60677, 60959, 0, 0, 0, 0, 0, 0, 17128), -- 19798
+(22050, 1, 0, 0, 0, 0, 0, 0, 0, 70839, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22050
+(19815, 1, 0, 0, 0, 0, 0, 0, 0, 60779, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19815
+(19835, 1, 0, 0, 0, 0, 0, 0, 0, 60840, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19835
+(19854, 1, 0, 0, 0, 0, 0, 0, 0, 60876, 0, 0, 0, 0, 0, 0, 0, 17128), -- 19854
+(19858, 1, 1, 1, 1, 1, 1, 0, 0, 60891, 60892, 60893, 60894, 60895, 60896, 0, 0, 17128), -- 19858
+(22134, 1, 0, 0, 0, 0, 0, 0, 0, 71306, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22134
+(19955, 1, 1, 1, 1, 0, 0, 0, 0, 61363, 61364, 61365, 61366, 0, 0, 0, 0, 17128), -- 19955
+(20016, 1, 0, 0, 0, 0, 0, 0, 0, 61769, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20016
+(22272, 1, 1, 1, 0, 0, 0, 0, 0, 71874, 71875, 71876, 0, 0, 0, 0, 0, 17128), -- 22272
+(22276, 1, 0, 0, 0, 0, 0, 0, 0, 71895, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22276
+(22280, 1, 0, 0, 0, 0, 0, 0, 0, 72002, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22280
+(20050, 1, 0, 0, 0, 0, 0, 0, 0, 62033, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20050
+(20052, 1, 0, 0, 0, 0, 0, 0, 0, 62036, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20052
+(22292, 1, 0, 0, 0, 0, 0, 0, 0, 72196, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22292
+(22293, 1, 0, 0, 0, 0, 0, 0, 0, 72197, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22293
+(22299, 1, 1, 1, 0, 0, 0, 0, 0, 72220, 72221, 72222, 0, 0, 0, 0, 0, 17128), -- 22299
+(22300, 1, 0, 0, 0, 0, 0, 0, 0, 72226, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22300
+(17850, 1, 1, 1, 0, 0, 0, 0, 0, 50806, 50902, 50903, 0, 0, 0, 0, 0, 17128), -- 17850
+(17852, 1, 0, 0, 0, 0, 0, 0, 0, 50809, 0, 0, 0, 0, 0, 0, 0, 17128), -- 17852
+(20100, 1, 0, 0, 0, 0, 0, 0, 0, 62371, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20100
+(22341, 1, 0, 0, 0, 0, 0, 0, 0, 72630, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22341
+(20104, 1, 0, 0, 0, 0, 0, 0, 0, 62385, 0, 0, 0, 0, 0, 0, 0, 17128), -- 20104
+(22345, 1, 0, 0, 0, 0, 0, 0, 0, 72641, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22345
+(22346, 1, 0, 0, 0, 0, 0, 0, 0, 72643, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22346
+(22348, 1, 0, 0, 0, 0, 0, 0, 0, 72665, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22348
+(22352, 1, 0, 0, 0, 0, 0, 0, 0, 72706, 0, 0, 0, 0, 0, 0, 0, 17128), -- 22352
+(20119, 1, 1, 1, 1, 1, 0, 0, 0, 62868, 62869, 62870, 62871, 62876, 0, 0, 0, 17128), -- 20119
+(22358, 1, 1, 0, 0, 0, 0, 0, 0, 72758, 72756, 0, 0, 0, 0, 0, 0, 17128), -- 22358
+(22359, 1, 1, 0, 0, 0, 0, 0, 0, 72759, 72760, 0, 0, 0, 0, 0, 0, 17128), -- 22359
+(22360, 1, 1, 0, 0, 0, 0, 0, 0, 72761, 72762, 0, 0, 0, 0, 0, 0, 17128), -- 22360
+(21183, 1, 0, 0, 0, 0, 0, 0, 0, 67499, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21183
+(21215, 1, 0, 0, 0, 0, 0, 0, 0, 67611, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21215
+(21219, 1, 0, 0, 0, 0, 0, 0, 0, 67620, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21219
+(21220, 1, 0, 0, 0, 0, 0, 0, 0, 67621, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21220
+(20113, 1, 0, 0, 0, 0, 0, 0, 0, 62447, 0, 0, 0, 0, 0, 0, 0, 17399), -- 20113
+(21235, 1, 0, 0, 0, 0, 0, 0, 0, 67640, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21235
+(21240, 1, 0, 0, 0, 0, 0, 0, 0, 67652, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21240
+(21244, 1, 0, 0, 0, 0, 0, 0, 0, 67671, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21244
+(21251, 1, 0, 0, 0, 0, 0, 0, 0, 67685, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21251
+(21254, 1, 0, 0, 0, 0, 0, 0, 0, 67689, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21254
+(21255, 1, 0, 0, 0, 0, 0, 0, 0, 67695, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21255
+(21260, 1, 0, 0, 0, 0, 0, 0, 0, 67760, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21260
+(21261, 1, 0, 0, 0, 0, 0, 0, 0, 67761, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21261
+(21262, 1, 0, 0, 0, 0, 0, 0, 0, 67763, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21262
+(21264, 1, 0, 0, 0, 0, 0, 0, 0, 67770, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21264
+(21283, 1, 0, 0, 0, 0, 0, 0, 0, 67833, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21283
+(21284, 1, 0, 0, 0, 0, 0, 0, 0, 67834, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21284
+(22960, 1, 0, 0, 0, 0, 0, 0, 0, 76547, 0, 0, 0, 0, 0, 0, 0, 17399), -- 22960
+(21295, 1, 0, 0, 0, 0, 0, 0, 0, 67893, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21295
+(21297, 1, 0, 0, 0, 0, 0, 0, 0, 67895, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21297
+(21298, 1, 0, 0, 0, 0, 0, 0, 0, 67897, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21298
+(19075, 1, 0, 0, 0, 0, 0, 0, 0, 57209, 0, 0, 0, 0, 0, 0, 0, 17399), -- 19075
+(22992, 1, 0, 0, 0, 0, 0, 0, 0, 76659, 0, 0, 0, 0, 0, 0, 0, 17399), -- 22992
+(23014, 1, 0, 0, 0, 0, 0, 0, 0, 76790, 0, 0, 0, 0, 0, 0, 0, 17399), -- 23014
+(21469, 1, 0, 0, 0, 0, 0, 0, 0, 68230, 0, 0, 0, 0, 0, 0, 0, 17399), -- 21469
+(22633, 1, 0, 0, 0, 0, 0, 0, 0, 74565, 0, 0, 0, 0, 0, 0, 0, 17399), -- 22633
+(20964, 1, 0, 0, 0, 0, 0, 0, 0, 66835, 0, 0, 0, 0, 0, 0, 0, 17399), -- 20964
+(20965, 1, 0, 0, 0, 0, 0, 0, 0, 66836, 0, 0, 0, 0, 0, 0, 0, 17399), -- 20965
+(20966, 1, 0, 0, 0, 0, 0, 0, 0, 66842, 0, 0, 0, 0, 0, 0, 0, 17399), -- 20966
+(20967, 1, 0, 0, 0, 0, 0, 0, 0, 66843, 0, 0, 0, 0, 0, 0, 0, 17399), -- 20967
+(20980, 1, 0, 0, 0, 0, 0, 0, 0, 66916, 0, 0, 0, 0, 0, 0, 0, 17399), -- 20980
+(7178, 1, 0, 0, 0, 0, 0, 0, 0, 9874, 0, 0, 0, 0, 0, 0, 0, 17399), -- 7178
+(21753, 1, 1, 1, 1, 1, 0, 0, 0, 68987, 69015, 69016, 69017, 69018, 0, 0, 0, 17538), -- 21753
+(18976, 1, 0, 0, 0, 0, 0, 0, 0, 56692, 0, 0, 0, 0, 0, 0, 0, 17538), -- 18976
+(21763, 1, 0, 0, 0, 0, 0, 0, 0, 69024, 0, 0, 0, 0, 0, 0, 0, 17538), -- 21763
+(21211, 1, 1, 1, 0, 0, 0, 0, 0, 65490, 65491, 65495, 0, 0, 0, 0, 0, 17538), -- 21211
+(22898, 1, 0, 0, 0, 0, 0, 0, 0, 76186, 0, 0, 0, 0, 0, 0, 0, 17538), -- 22898
+(22922, 1, 0, 0, 0, 0, 0, 0, 0, 76214, 0, 0, 0, 0, 0, 0, 0, 17538), -- 22922
+(22377, 1, 0, 0, 0, 0, 0, 0, 0, 74950, 0, 0, 0, 0, 0, 0, 0, 17538), -- 22377
+(22378, 1, 0, 0, 0, 0, 0, 0, 0, 74949, 0, 0, 0, 0, 0, 0, 0, 17538), -- 22378
+(21280, 1, 0, 0, 0, 0, 0, 0, 0, 67830, 0, 0, 0, 0, 0, 0, 0, 17538), -- 21280
+(22975, 1, 1, 1, 1, 1, 0, 0, 0, 76584, 76585, 76586, 76587, 76588, 0, 0, 0, 17538), -- 22975
+(19077, 1, 1, 0, 0, 0, 0, 0, 0, 57217, 57216, 0, 0, 0, 0, 0, 0, 17538), -- 19077
+(22445, 1, 0, 0, 0, 0, 0, 0, 0, 73039, 0, 0, 0, 0, 0, 0, 0, 17538), -- 22445
+(20232, 1, 0, 0, 0, 0, 0, 0, 0, 63677, 0, 0, 0, 0, 0, 0, 0, 17538), -- 20232
+(19134, 1, 1, 1, 0, 0, 0, 0, 0, 57495, 57496, 57497, 0, 0, 0, 0, 0, 17538), -- 19134
+(19135, 1, 0, 0, 0, 0, 0, 0, 0, 57498, 0, 0, 0, 0, 0, 0, 0, 17538), -- 19135
+(22480, 1, 0, 0, 0, 0, 0, 0, 0, 73253, 0, 0, 0, 0, 0, 0, 0, 17538), -- 22480
+(18591, 1, 0, 0, 0, 0, 0, 0, 0, 54516, 0, 0, 0, 0, 0, 0, 0, 17538), -- 18591
+(20269, 1, 0, 0, 0, 0, 0, 0, 0, 63889, 0, 0, 0, 0, 0, 0, 0, 17538), -- 20269
+(20276, 1, 0, 0, 0, 0, 0, 0, 0, 63914, 0, 0, 0, 0, 0, 0, 0, 17538), -- 20276
+(18644, 1, 0, 0, 0, 0, 0, 0, 0, 54792, 0, 0, 0, 0, 0, 0, 0, 17538), -- 18644
+(19765, 1, 0, 0, 0, 0, 0, 0, 0, 60518, 0, 0, 0, 0, 0, 0, 0, 17538), -- 19765
+(19766, 1, 0, 0, 0, 0, 0, 0, 0, 60520, 0, 0, 0, 0, 0, 0, 0, 17538), -- 19766
+(19767, 1, 0, 0, 0, 0, 0, 0, 0, 60522, 0, 0, 0, 0, 0, 0, 0, 17538), -- 19767
+(20341, 1, 1, 1, 1, 0, 0, 0, 0, 64172, 64173, 64174, 64195, 0, 0, 0, 0, 17538), -- 20341
+(20343, 1, 1, 0, 0, 0, 0, 0, 0, 64175, 64196, 0, 0, 0, 0, 0, 0, 17538), -- 20343
+(20344, 1, 1, 0, 0, 0, 0, 0, 0, 64179, 64180, 0, 0, 0, 0, 0, 0, 17538), -- 20344
+(20347, 1, 1, 0, 0, 0, 0, 0, 0, 64189, 64188, 0, 0, 0, 0, 0, 0, 17538), -- 20347
+(22628, 1, 0, 0, 0, 0, 0, 0, 0, 74540, 0, 0, 0, 0, 0, 0, 0, 17538), -- 22628
+(18735, 1, 0, 0, 0, 0, 0, 0, 0, 55318, 0, 0, 0, 0, 0, 0, 0, 17538), -- 18735
+(22647, 1, 0, 0, 0, 0, 0, 0, 0, 74650, 0, 0, 0, 0, 0, 0, 0, 17538), -- 22647
+(20425, 1, 0, 0, 0, 0, 0, 0, 0, 64410, 0, 0, 0, 0, 0, 0, 0, 17538), -- 20425
+(19877, 1, 0, 0, 0, 0, 0, 0, 0, 60968, 0, 0, 0, 0, 0, 0, 0, 17538), -- 19877
+(19325, 1, 0, 0, 0, 0, 0, 0, 0, 58359, 0, 0, 0, 0, 0, 0, 0, 17538), -- 19325
+(20482, 1, 0, 0, 0, 0, 0, 0, 0, 64606, 0, 0, 0, 0, 0, 0, 0, 17538), -- 20482
+(20483, 1, 1, 1, 1, 0, 0, 0, 0, 64608, 64609, 64610, 64611, 0, 0, 0, 0, 17538), -- 20483
+(21087, 1, 0, 0, 0, 0, 0, 0, 0, 67145, 0, 0, 0, 0, 0, 0, 0, 17538), -- 21087
+(19448, 1, 1, 1, 0, 0, 0, 0, 0, 58956, 58957, 58958, 0, 0, 0, 0, 0, 17538), -- 19448
+(18343, 1, 0, 0, 0, 0, 0, 0, 0, 53250, 0, 0, 0, 0, 0, 0, 0, 17538), -- 18343
+(18907, 1, 0, 0, 0, 0, 0, 0, 0, 56313, 0, 0, 0, 0, 0, 0, 0, 17538), -- 18907
+(22402, 1, 0, 0, 0, 0, 0, 0, 0, 72934, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22402
+(22404, 1, 0, 0, 0, 0, 0, 0, 0, 72936, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22404
+(22406, 1, 0, 0, 0, 0, 0, 0, 0, 72940, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22406
+(22408, 1, 0, 0, 0, 0, 0, 0, 0, 72942, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22408
+(22409, 1, 0, 0, 0, 0, 0, 0, 0, 72943, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22409
+(22411, 1, 0, 0, 0, 0, 0, 0, 0, 72948, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22411
+(22413, 1, 0, 0, 0, 0, 0, 0, 0, 72951, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22413
+(22414, 1, 0, 0, 0, 0, 0, 0, 0, 72952, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22414
+(22417, 1, 1, 1, 1, 1, 1, 0, 0, 72847, 72848, 72849, 72850, 72851, 72853, 0, 0, 17658), -- 22417
+(22419, 1, 1, 1, 1, 1, 0, 0, 0, 72969, 72971, 72972, 72973, 72974, 0, 0, 0, 17658), -- 22419
+(22421, 1, 0, 0, 0, 0, 0, 0, 0, 72976, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22421
+(22423, 1, 0, 0, 0, 0, 0, 0, 0, 72980, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22423
+(22428, 1, 0, 0, 0, 0, 0, 0, 0, 73006, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22428
+(22441, 1, 0, 0, 0, 0, 0, 0, 0, 73016, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22441
+(17965, 1, 0, 0, 0, 0, 0, 0, 0, 51349, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17965
+(17966, 1, 0, 0, 0, 0, 0, 0, 0, 51344, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17966
+(17968, 1, 0, 0, 0, 0, 0, 0, 0, 51345, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17968
+(22477, 1, 0, 0, 0, 0, 0, 0, 0, 73213, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22477
+(22478, 1, 0, 0, 0, 0, 0, 0, 0, 73214, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22478
+(22521, 1, 0, 0, 0, 0, 0, 0, 0, 73686, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22521
+(22542, 1, 0, 0, 0, 0, 0, 0, 0, 73956, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22542
+(18071, 1, 0, 0, 0, 0, 0, 0, 0, 51959, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18071
+(18074, 1, 0, 0, 0, 0, 0, 0, 0, 51966, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18074
+(22587, 1, 0, 0, 0, 0, 0, 0, 0, 74264, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22587
+(22590, 1, 0, 0, 0, 0, 0, 0, 0, 74282, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22590
+(22593, 1, 0, 0, 0, 0, 0, 0, 0, 74285, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22593
+(22595, 1, 0, 0, 0, 0, 0, 0, 0, 74287, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22595
+(18147, 1, 0, 0, 0, 0, 0, 0, 0, 52362, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18147
+(22634, 1, 1, 1, 1, 1, 1, 1, 10, 74569, 74571, 74572, 74573, 74574, 74575, 74576, 74577, 17658), -- 22634
+(22636, 1, 0, 0, 0, 0, 0, 0, 0, 74578, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22636
+(22645, 1, 0, 0, 0, 0, 0, 0, 0, 74622, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22645
+(22648, 1, 0, 0, 0, 0, 0, 0, 0, 74651, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22648
+(22657, 1, 1, 1, 1, 1, 1, 1, 0, 74775, 74776, 74777, 74778, 74779, 74780, 74781, 0, 17658), -- 22657
+(18227, 1, 0, 0, 0, 0, 0, 0, 0, 52854, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18227
+(18229, 1, 0, 0, 0, 0, 0, 0, 0, 52856, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18229
+(18230, 1, 0, 0, 0, 0, 0, 0, 0, 52857, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18230
+(18232, 1, 0, 0, 0, 0, 0, 0, 0, 52859, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18232
+(18233, 1, 0, 0, 0, 0, 0, 0, 0, 52860, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18233
+(18243, 1, 0, 0, 0, 0, 0, 0, 0, 52914, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18243
+(22732, 1, 0, 0, 0, 0, 0, 0, 0, 75315, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22732
+(22744, 1, 0, 0, 0, 0, 0, 0, 0, 75380, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22744
+(22747, 1, 0, 0, 0, 0, 0, 0, 0, 75401, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22747
+(22748, 1, 1, 1, 0, 0, 0, 0, 0, 75404, 75405, 75406, 0, 0, 0, 0, 0, 17658), -- 22748
+(22750, 1, 1, 1, 0, 0, 0, 0, 0, 75410, 75411, 75412, 0, 0, 0, 0, 0, 17658), -- 22750
+(22751, 1, 0, 0, 0, 0, 0, 0, 0, 75413, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22751
+(22752, 1, 1, 1, 0, 0, 0, 0, 0, 75414, 75415, 75416, 0, 0, 0, 0, 0, 17658), -- 22752
+(22754, 1, 1, 1, 0, 0, 0, 0, 0, 75420, 75421, 75422, 0, 0, 0, 0, 0, 17658), -- 22754
+(22755, 1, 1, 1, 0, 0, 0, 0, 0, 75423, 75424, 75425, 0, 0, 0, 0, 0, 17658), -- 22755
+(22756, 1, 1, 1, 0, 0, 0, 0, 0, 75426, 75427, 75428, 0, 0, 0, 0, 0, 17658), -- 22756
+(22757, 1, 1, 1, 0, 0, 0, 0, 0, 75429, 75431, 75432, 0, 0, 0, 0, 0, 17658), -- 22757
+(22758, 1, 1, 1, 0, 0, 0, 0, 0, 75434, 75435, 75436, 0, 0, 0, 0, 0, 17658), -- 22758
+(22759, 1, 1, 1, 0, 0, 0, 0, 0, 75437, 75438, 75439, 0, 0, 0, 0, 0, 17658), -- 22759
+(22760, 1, 1, 1, 0, 0, 0, 0, 0, 75440, 75441, 75442, 0, 0, 0, 0, 0, 17658), -- 22760
+(22761, 1, 1, 1, 0, 0, 0, 0, 0, 75443, 75444, 75445, 0, 0, 0, 0, 0, 17658), -- 22761
+(22762, 1, 0, 0, 0, 0, 0, 0, 0, 75451, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22762
+(22763, 1, 1, 1, 0, 0, 0, 0, 0, 75448, 75449, 75455, 0, 0, 0, 0, 0, 17658), -- 22763
+(22764, 1, 1, 1, 0, 0, 0, 0, 0, 75456, 75457, 75458, 0, 0, 0, 0, 0, 17658), -- 22764
+(22765, 1, 1, 1, 0, 0, 0, 0, 0, 75459, 75460, 75461, 0, 0, 0, 0, 0, 17658), -- 22765
+(22766, 1, 1, 1, 0, 0, 0, 0, 0, 75462, 75464, 75466, 0, 0, 0, 0, 0, 17658), -- 22766
+(22767, 1, 0, 0, 0, 0, 0, 0, 0, 75471, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22767
+(22768, 1, 1, 1, 0, 0, 0, 0, 0, 75478, 75479, 75480, 0, 0, 0, 0, 0, 17658), -- 22768
+(22769, 1, 1, 1, 0, 0, 0, 0, 0, 75481, 75482, 75483, 0, 0, 0, 0, 0, 17658), -- 22769
+(22770, 1, 1, 1, 0, 0, 0, 0, 0, 75484, 75485, 75486, 0, 0, 0, 0, 0, 17658), -- 22770
+(22771, 1, 1, 1, 0, 0, 0, 0, 0, 75487, 75488, 75489, 0, 0, 0, 0, 0, 17658), -- 22771
+(22772, 1, 1, 1, 0, 0, 0, 0, 0, 75490, 75491, 75492, 0, 0, 0, 0, 0, 17658), -- 22772
+(22773, 1, 1, 1, 0, 0, 0, 0, 0, 75494, 75496, 75497, 0, 0, 0, 0, 0, 17658), -- 22773
+(22774, 1, 1, 1, 0, 0, 0, 0, 0, 75499, 75501, 75506, 0, 0, 0, 0, 0, 17658), -- 22774
+(22776, 1, 1, 1, 0, 0, 0, 0, 0, 75508, 75509, 75510, 0, 0, 0, 0, 0, 17658), -- 22776
+(22777, 1, 1, 1, 0, 0, 0, 0, 0, 75512, 75513, 75518, 0, 0, 0, 0, 0, 17658), -- 22777
+(22778, 1, 1, 1, 0, 0, 0, 0, 0, 75523, 75525, 75526, 0, 0, 0, 0, 0, 17658), -- 22778
+(22779, 1, 1, 1, 0, 0, 0, 0, 0, 75527, 75528, 75529, 0, 0, 0, 0, 0, 17658), -- 22779
+(22780, 1, 1, 1, 0, 0, 0, 0, 0, 75533, 75538, 75539, 0, 0, 0, 0, 0, 17658), -- 22780
+(22781, 1, 1, 1, 0, 0, 0, 0, 0, 75540, 75541, 75542, 0, 0, 0, 0, 0, 17658), -- 22781
+(22784, 1, 1, 1, 0, 0, 0, 0, 0, 75549, 75550, 75551, 0, 0, 0, 0, 0, 17658), -- 22784
+(22785, 1, 0, 0, 0, 0, 0, 0, 0, 75553, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22785
+(22787, 1, 0, 0, 0, 0, 0, 0, 0, 75557, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22787
+(18310, 1, 0, 0, 0, 0, 0, 0, 0, 53108, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18310
+(22788, 1, 0, 0, 0, 0, 0, 0, 0, 75562, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22788
+(18311, 1, 0, 0, 0, 0, 0, 0, 0, 53109, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18311
+(22789, 1, 1, 1, 0, 0, 0, 0, 0, 75558, 75563, 75564, 0, 0, 0, 0, 0, 17658), -- 22789
+(22790, 1, 1, 1, 0, 0, 0, 0, 0, 75565, 75566, 75567, 0, 0, 0, 0, 0, 17658), -- 22790
+(22791, 1, 1, 1, 0, 0, 0, 0, 0, 75568, 75569, 75570, 0, 0, 0, 0, 0, 17658), -- 22791
+(22792, 1, 1, 1, 1, 1, 0, 0, 0, 75571, 75572, 75573, 75574, 75575, 0, 0, 0, 17658), -- 22792
+(22793, 1, 1, 1, 1, 0, 0, 0, 0, 75576, 75577, 75578, 75579, 0, 0, 0, 0, 17658), -- 22793
+(22794, 1, 1, 1, 0, 0, 0, 0, 0, 75581, 75582, 75583, 0, 0, 0, 0, 0, 17658), -- 22794
+(22798, 1, 0, 0, 0, 0, 0, 0, 0, 75618, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22798
+(22800, 1, 1, 1, 0, 0, 0, 0, 0, 75624, 75625, 75626, 0, 0, 0, 0, 0, 17658), -- 22800
+(22801, 1, 1, 1, 0, 0, 0, 0, 0, 62617, 75627, 75628, 0, 0, 0, 0, 0, 17658), -- 22801
+(18327, 1, 0, 0, 0, 0, 0, 0, 0, 53180, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18327
+(18333, 1, 1, 1, 0, 0, 0, 0, 0, 53199, 53200, 53201, 0, 0, 0, 0, 0, 17658), -- 18333
+(18336, 1, 1, 1, 0, 0, 0, 0, 0, 53208, 53209, 53210, 0, 0, 0, 0, 0, 17658), -- 18336
+(18337, 1, 1, 1, 0, 0, 0, 0, 0, 53215, 53216, 53217, 0, 0, 0, 0, 0, 17658), -- 18337
+(18340, 1, 0, 0, 0, 0, 0, 0, 0, 53245, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18340
+(22850, 1, 0, 0, 0, 0, 0, 0, 0, 75796, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22850
+(22851, 1, 0, 0, 0, 0, 0, 0, 0, 75802, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22851
+(22852, 1, 0, 0, 0, 0, 0, 0, 0, 75803, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22852
+(22853, 1, 0, 0, 0, 0, 0, 0, 0, 75805, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22853
+(22856, 1, 1, 1, 0, 0, 0, 0, 0, 75943, 75945, 75947, 0, 0, 0, 0, 0, 17658), -- 22856
+(22857, 1, 1, 1, 0, 0, 0, 0, 0, 75948, 75949, 75950, 0, 0, 0, 0, 0, 17658), -- 22857
+(22861, 1, 0, 0, 0, 0, 0, 0, 0, 75972, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22861
+(22862, 1, 0, 0, 0, 0, 0, 0, 0, 76009, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22862
+(22871, 1, 0, 0, 0, 0, 0, 0, 0, 76059, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22871
+(18397, 1, 1, 1, 0, 0, 0, 0, 0, 53569, 53571, 53572, 0, 0, 0, 0, 0, 17658), -- 18397
+(22876, 1, 0, 0, 0, 0, 0, 0, 0, 76088, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22876
+(18401, 1, 0, 0, 0, 0, 0, 0, 0, 53570, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18401
+(18405, 1, 1, 1, 0, 0, 0, 0, 0, 53609, 53611, 53615, 0, 0, 0, 0, 0, 17658), -- 18405
+(22886, 1, 0, 0, 0, 0, 0, 0, 0, 76117, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22886
+(18411, 1, 1, 1, 0, 0, 0, 0, 0, 53645, 53646, 66329, 0, 0, 0, 0, 0, 17658), -- 18411
+(18412, 1, 0, 0, 0, 0, 0, 0, 0, 53644, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18412
+(22904, 1, 0, 0, 0, 0, 0, 0, 0, 76196, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22904
+(22905, 1, 0, 0, 0, 0, 0, 0, 0, 76197, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22905
+(22906, 1, 0, 0, 0, 0, 0, 0, 0, 76198, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22906
+(22907, 1, 0, 0, 0, 0, 0, 0, 0, 76199, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22907
+(22908, 1, 0, 0, 0, 0, 0, 0, 0, 76200, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22908
+(22909, 1, 0, 0, 0, 0, 0, 0, 0, 76201, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22909
+(22918, 1, 0, 0, 0, 0, 0, 0, 0, 76210, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22918
+(22919, 1, 0, 0, 0, 0, 0, 0, 0, 76211, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22919
+(22920, 1, 0, 0, 0, 0, 0, 0, 0, 76212, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22920
+(22921, 1, 0, 0, 0, 0, 0, 0, 0, 76213, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22921
+(22923, 1, 0, 0, 0, 0, 0, 0, 0, 76215, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22923
+(22924, 1, 0, 0, 0, 0, 0, 0, 0, 76216, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22924
+(22925, 1, 0, 0, 0, 0, 0, 0, 0, 76217, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22925
+(22926, 1, 0, 0, 0, 0, 0, 0, 0, 76218, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22926
+(18450, 1, 1, 1, 0, 0, 0, 0, 0, 53769, 53984, 53985, 0, 0, 0, 0, 0, 17658), -- 18450
+(22927, 1, 0, 0, 0, 0, 0, 0, 0, 76219, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22927
+(22928, 1, 0, 0, 0, 0, 0, 0, 0, 76220, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22928
+(22929, 1, 0, 0, 0, 0, 0, 0, 0, 76221, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22929
+(18453, 1, 1, 1, 0, 0, 0, 0, 0, 53775, 53995, 53996, 0, 0, 0, 0, 0, 17658), -- 18453
+(22930, 1, 0, 0, 0, 0, 0, 0, 0, 76222, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22930
+(22931, 1, 0, 0, 0, 0, 0, 0, 0, 76223, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22931
+(22933, 1, 0, 0, 0, 0, 0, 0, 0, 76225, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22933
+(22936, 1, 0, 0, 0, 0, 0, 0, 0, 76228, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22936
+(18460, 1, 1, 1, 0, 0, 0, 0, 0, 54069, 53788, 54070, 0, 0, 0, 0, 0, 17658), -- 18460
+(22937, 1, 0, 0, 0, 0, 0, 0, 0, 76229, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22937
+(22938, 1, 0, 0, 0, 0, 0, 0, 0, 76230, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22938
+(22939, 1, 0, 0, 0, 0, 0, 0, 0, 76231, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22939
+(22940, 1, 0, 0, 0, 0, 0, 0, 0, 76232, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22940
+(22942, 1, 0, 0, 0, 0, 0, 0, 0, 76234, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22942
+(22943, 1, 0, 0, 0, 0, 0, 0, 0, 76235, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22943
+(22944, 1, 0, 0, 0, 0, 0, 0, 0, 76236, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22944
+(22946, 1, 0, 0, 0, 0, 0, 0, 0, 76238, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22946
+(18471, 1, 1, 1, 0, 0, 0, 0, 0, 53819, 54130, 54131, 0, 0, 0, 0, 0, 17658), -- 18471
+(18473, 1, 1, 1, 0, 0, 0, 0, 0, 53879, 53880, 55538, 0, 0, 0, 0, 0, 17658), -- 18473
+(22955, 1, 0, 0, 0, 0, 0, 0, 0, 76537, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22955
+(22966, 1, 0, 0, 0, 0, 0, 0, 0, 76553, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22966
+(22967, 1, 0, 0, 0, 0, 0, 0, 0, 76558, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22967
+(22969, 1, 0, 0, 0, 0, 0, 0, 0, 76561, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22969
+(22974, 1, 0, 0, 0, 0, 0, 0, 0, 76583, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22974
+(18503, 1, 0, 0, 0, 0, 0, 0, 0, 54024, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18503
+(22989, 1, 0, 0, 0, 0, 0, 0, 0, 76645, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22989
+(22993, 1, 0, 0, 0, 0, 0, 0, 0, 76662, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22993
+(22994, 1, 1, 1, 0, 0, 0, 0, 0, 76664, 76665, 76666, 0, 0, 0, 0, 0, 17658), -- 22994
+(22995, 1, 1, 1, 0, 0, 0, 0, 0, 76667, 76668, 76669, 0, 0, 0, 0, 0, 17658), -- 22995
+(23007, 1, 1, 1, 0, 0, 0, 0, 0, 76725, 76726, 76727, 0, 0, 0, 0, 0, 17658), -- 23007
+(23008, 1, 1, 1, 0, 0, 0, 0, 0, 76728, 76729, 76730, 0, 0, 0, 0, 0, 17658), -- 23008
+(23009, 1, 0, 0, 0, 0, 0, 0, 0, 76736, 0, 0, 0, 0, 0, 0, 0, 17658), -- 23009
+(18536, 1, 0, 0, 0, 0, 0, 0, 0, 54197, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18536
+(23016, 1, 0, 0, 0, 0, 0, 0, 0, 76792, 0, 0, 0, 0, 0, 0, 0, 17658), -- 23016
+(18562, 1, 1, 0, 0, 0, 0, 0, 0, 54330, 54331, 0, 0, 0, 0, 0, 0, 17658), -- 18562
+(23039, 1, 0, 0, 0, 0, 0, 0, 0, 76927, 0, 0, 0, 0, 0, 0, 0, 17658), -- 23039
+(23044, 1, 1, 1, 0, 0, 0, 0, 0, 76968, 76969, 76970, 0, 0, 0, 0, 0, 17658), -- 23044
+(23053, 1, 0, 0, 0, 0, 0, 0, 0, 77014, 0, 0, 0, 0, 0, 0, 0, 17658), -- 23053
+(23075, 1, 0, 0, 0, 0, 0, 0, 0, 77117, 0, 0, 0, 0, 0, 0, 0, 17658), -- 23075
+(23080, 1, 0, 0, 0, 0, 0, 0, 0, 77142, 0, 0, 0, 0, 0, 0, 0, 17658), -- 23080
+(23081, 1, 0, 0, 0, 0, 0, 0, 0, 77143, 0, 0, 0, 0, 0, 0, 0, 17658), -- 23081
+(18608, 1, 0, 0, 0, 0, 0, 0, 0, 54620, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18608
+(18618, 1, 0, 0, 0, 0, 0, 0, 0, 54664, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18618
+(18659, 1, 1, 0, 0, 0, 0, 0, 0, 54881, 55076, 0, 0, 0, 0, 0, 0, 17658), -- 18659
+(18660, 1, 0, 0, 0, 0, 0, 0, 0, 54882, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18660
+(18667, 1, 1, 1, 0, 0, 0, 0, 0, 54918, 54919, 54920, 0, 0, 0, 0, 0, 17658), -- 18667
+(18668, 1, 1, 0, 0, 0, 0, 0, 0, 54921, 54922, 0, 0, 0, 0, 0, 0, 17658), -- 18668
+(18672, 1, 0, 0, 0, 0, 0, 0, 0, 54957, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18672
+(18715, 1, 0, 0, 0, 0, 0, 0, 0, 55198, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18715
+(18720, 1, 1, 1, 0, 0, 0, 0, 0, 55228, 55229, 55230, 0, 0, 0, 0, 0, 17658), -- 18720
+(18742, 1, 1, 1, 1, 1, 1, 1, 1, 55400, 55401, 55402, 55403, 55404, 55405, 55407, 55408, 17658), -- 18742
+(18777, 1, 0, 0, 0, 0, 0, 0, 0, 55644, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18777
+(18785, 1, 0, 0, 0, 0, 0, 0, 0, 55707, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18785
+(18786, 1, 0, 0, 0, 0, 0, 0, 0, 55708, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18786
+(18787, 1, 1, 1, 0, 0, 0, 0, 0, 55709, 55710, 55711, 0, 0, 0, 0, 0, 17658), -- 18787
+(18789, 1, 0, 0, 0, 0, 0, 0, 0, 55717, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18789
+(18790, 1, 0, 0, 0, 0, 0, 0, 0, 55722, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18790
+(18791, 1, 1, 1, 0, 0, 0, 0, 0, 55724, 55725, 55726, 0, 0, 0, 0, 0, 17658), -- 18791
+(18792, 1, 1, 1, 0, 0, 0, 0, 0, 55730, 55732, 55733, 0, 0, 0, 0, 0, 17658), -- 18792
+(18804, 1, 0, 0, 0, 0, 0, 0, 0, 55808, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18804
+(18805, 1, 0, 0, 0, 0, 0, 0, 0, 55809, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18805
+(18806, 1, 0, 0, 0, 0, 0, 0, 0, 55810, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18806
+(18832, 1, 0, 0, 0, 0, 0, 0, 0, 55921, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18832
+(18834, 1, 0, 0, 0, 0, 0, 0, 0, 55932, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18834
+(18835, 1, 0, 0, 0, 0, 0, 0, 0, 55953, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18835
+(18838, 1, 1, 1, 1, 0, 0, 0, 0, 55958, 68509, 68507, 68508, 0, 0, 0, 0, 17658), -- 18838
+(18843, 1, 0, 0, 0, 0, 0, 0, 0, 55940, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18843
+(18847, 1, 0, 0, 0, 0, 0, 0, 0, 55949, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18847
+(18901, 1, 1, 1, 0, 0, 0, 0, 0, 56285, 56286, 56287, 0, 0, 0, 0, 0, 17658), -- 18901
+(18919, 1, 0, 0, 0, 0, 0, 0, 0, 56417, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18919
+(18927, 1, 0, 0, 0, 0, 0, 0, 0, 53245, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18927
+(18971, 1, 0, 0, 0, 0, 0, 0, 0, 11874, 0, 0, 0, 0, 0, 0, 0, 17658), -- 18971
+(14525, 1, 0, 0, 0, 0, 0, 0, 0, 34513, 0, 0, 0, 0, 0, 0, 0, 17658), -- 14525
+(14526, 1, 0, 0, 0, 0, 0, 0, 0, 34515, 0, 0, 0, 0, 0, 0, 0, 17658), -- 14526
+(19015, 1, 0, 0, 0, 0, 0, 0, 0, 56905, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19015
+(19026, 1, 1, 1, 1, 1, 0, 0, 0, 56968, 56969, 66879, 66880, 66882, 0, 0, 0, 17658), -- 19026
+(19045, 1, 0, 0, 0, 0, 0, 0, 0, 57052, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19045
+(19046, 1, 0, 0, 0, 0, 0, 0, 0, 57051, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19046
+(19047, 1, 0, 0, 0, 0, 0, 0, 0, 57055, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19047
+(10122, 1, 0, 0, 0, 0, 0, 0, 0, 18424, 0, 0, 0, 0, 0, 0, 0, 17658), -- 10122
+(19093, 1, 1, 1, 1, 1, 1, 1, 1, 57358, 57359, 57360, 57361, 57362, 57363, 57364, 57365, 17658), -- 19093
+(19094, 1, 1, 1, 1, 1, 1, 1, 1, 57366, 57367, 57368, 57369, 57370, 57371, 57396, 57397, 17658), -- 19094
+(19095, 1, 1, 1, 1, 1, 1, 1, 1, 57372, 57373, 57374, 57375, 57376, 57377, 57378, 57379, 17658), -- 19095
+(19096, 1, 1, 1, 1, 1, 1, 1, 1, 57380, 57381, 57382, 57383, 57384, 57385, 57386, 57387, 17658), -- 19096
+(19097, 1, 1, 1, 1, 1, 1, 1, 1, 57388, 57389, 57390, 57391, 57392, 57393, 57394, 57395, 17658), -- 19097
+(19098, 1, 1, 1, 1, 1, 1, 1, 0, 57398, 57399, 57400, 57401, 57402, 67020, 67021, 0, 17658), -- 19098
+(19114, 1, 0, 0, 0, 0, 0, 0, 0, 57420, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19114
+(19133, 1, 0, 0, 0, 0, 0, 0, 0, 57493, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19133
+(19161, 1, 0, 0, 0, 0, 0, 0, 0, 57647, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19161
+(19168, 1, 1, 1, 1, 1, 0, 0, 0, 57660, 57671, 57672, 57684, 57685, 0, 0, 0, 17658), -- 19168
+(19181, 1, 1, 1, 1, 0, 0, 0, 0, 57705, 57706, 57707, 57708, 0, 0, 0, 0, 17658), -- 19181
+(19182, 1, 0, 0, 0, 0, 0, 0, 0, 57713, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19182
+(19184, 1, 1, 0, 0, 0, 0, 0, 0, 57717, 57742, 0, 0, 0, 0, 0, 0, 17658), -- 19184
+(19185, 1, 0, 0, 0, 0, 0, 0, 0, 57737, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19185
+(19186, 1, 0, 0, 0, 0, 0, 0, 0, 57728, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19186
+(19187, 1, 0, 0, 0, 0, 0, 0, 0, 57730, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19187
+(19188, 1, 0, 0, 0, 0, 0, 0, 0, 57741, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19188
+(19189, 1, 0, 0, 0, 0, 0, 0, 0, 57732, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19189
+(19190, 1, 0, 0, 0, 0, 0, 0, 0, 57734, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19190
+(19191, 1, 0, 0, 0, 0, 0, 0, 0, 57736, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19191
+(19192, 1, 0, 0, 0, 0, 0, 0, 0, 57729, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19192
+(19193, 1, 0, 0, 0, 0, 0, 0, 0, 57731, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19193
+(19194, 1, 0, 0, 0, 0, 0, 0, 0, 57735, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19194
+(19195, 1, 1, 1, 1, 1, 0, 0, 0, 57744, 57745, 57747, 57749, 57751, 0, 0, 0, 17658), -- 19195
+(14730, 1, 0, 0, 0, 0, 0, 0, 0, 35480, 0, 0, 0, 0, 0, 0, 0, 17658), -- 14730
+(19215, 1, 1, 1, 1, 1, 1, 1, 1, 57784, 57785, 57786, 57787, 57788, 57789, 57790, 57791, 17658), -- 19215
+(19216, 1, 0, 0, 0, 0, 0, 0, 0, 57793, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19216
+(19217, 1, 0, 0, 0, 0, 0, 0, 0, 57795, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19217
+(19227, 1, 1, 1, 1, 0, 0, 0, 0, 57468, 57469, 57902, 57903, 0, 0, 0, 0, 17658), -- 19227
+(19230, 1, 0.25, 1, 0, 0, 0, 0, 0, 57821, 57820, 57920, 0, 0, 0, 0, 0, 17658), -- 19230
+(19254, 1, 1, 1, 0, 0, 0, 0, 0, 58052, 58053, 58054, 0, 0, 0, 0, 0, 17658), -- 19254
+(19255, 1, 1, 1, 1, 1, 0, 0, 0, 58058, 58059, 58060, 58061, 58062, 0, 0, 0, 17658), -- 19255
+(14792, 1, 0, 0, 0, 0, 0, 0, 0, 35958, 0, 0, 0, 0, 0, 0, 0, 17658), -- 14792
+(19275, 1, 0, 0, 0, 0, 0, 0, 0, 58124, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19275
+(19276, 1, 0, 0, 0, 0, 0, 0, 0, 58125, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19276
+(19277, 1, 0, 0, 0, 0, 0, 0, 0, 58126, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19277
+(19293, 1, 0, 0, 0, 0, 0, 0, 0, 58232, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19293
+(19295, 1, 0, 0, 0, 0, 0, 0, 0, 58236, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19295
+(19306, 1, 1, 1, 1, 0, 0, 0, 0, 58292, 58293, 58294, 58295, 0, 0, 0, 0, 17658), -- 19306
+(19308, 1, 1, 1, 1, 1, 1, 0, 0, 58301, 58302, 58303, 58304, 55517, 54797, 0, 0, 17658), -- 19308
+(14834, 1, 0, 0, 0, 0, 0, 0, 0, 36057, 0, 0, 0, 0, 0, 0, 0, 17658), -- 14834
+(19312, 1, 1, 1, 1, 1, 1, 0, 0, 58315, 58316, 58317, 58319, 58320, 58321, 0, 0, 17658), -- 19312
+(10368, 1, 0, 0, 0, 0, 0, 0, 0, 19136, 0, 0, 0, 0, 0, 0, 0, 17658), -- 10368
+(19331, 1, 0, 0, 0, 0, 0, 0, 0, 58386, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19331
+(19332, 1, 0, 0, 0, 0, 0, 0, 0, 58389, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19332
+(19352, 1, 0, 0, 0, 0, 0, 0, 0, 58504, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19352
+(19369, 1, 0, 0, 0, 0, 0, 0, 0, 58578, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19369
+(19376, 1, 0, 0, 0, 0, 0, 0, 0, 58602, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19376
+(19394, 1, 0, 0, 0, 0, 0, 0, 0, 58691, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19394
+(19395, 1, 0, 0, 0, 0, 0, 0, 0, 58692, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19395
+(19404, 1, 1, 1, 0, 0, 0, 0, 0, 58752, 58753, 58754, 0, 0, 0, 0, 0, 17658), -- 19404
+(19405, 1, 1, 1, 0, 0, 0, 0, 0, 58770, 58771, 58772, 0, 0, 0, 0, 0, 17658), -- 19405
+(19406, 1, 1, 1, 0, 0, 0, 0, 0, 58780, 58781, 58782, 0, 0, 0, 0, 0, 17658), -- 19406
+(19407, 1, 1, 1, 0, 0, 0, 0, 0, 58790, 58791, 58792, 0, 0, 0, 0, 0, 17658), -- 19407
+(14943, 1, 0, 0, 0, 0, 0, 0, 0, 36334, 0, 0, 0, 0, 0, 0, 0, 17658), -- 14943
+(19420, 1, 1, 1, 0, 0, 0, 0, 0, 58819, 64138, 64139, 0, 0, 0, 0, 0, 17658), -- 19420
+(19425, 1, 1, 1, 1, 1, 1, 0, 0, 58840, 58841, 58842, 58843, 58844, 59037, 0, 0, 17658), -- 19425
+(19431, 1, 1, 1, 1, 1, 1, 0, 0, 58868, 58869, 58870, 58871, 58872, 59040, 0, 0, 17658), -- 19431
+(19436, 1, 1, 1, 0, 0, 0, 0, 0, 58892, 58893, 58894, 0, 0, 0, 0, 0, 17658), -- 19436
+(19453, 1, 1, 1, 0, 0, 0, 0, 0, 58971, 58972, 58973, 0, 0, 0, 0, 0, 17658), -- 19453
+(19458, 1, 1, 1, 0, 0, 0, 0, 0, 58987, 58988, 58989, 0, 0, 0, 0, 0, 17658), -- 19458
+(19465, 1, 1, 1, 1, 0, 0, 0, 0, 59013, 59014, 59015, 59016, 0, 0, 0, 0, 17658), -- 19465
+(19471, 1, 1, 1, 0, 0, 0, 0, 0, 59032, 59033, 59034, 0, 0, 0, 0, 0, 17658), -- 19471
+(19477, 1, 1, 1, 1, 0, 0, 0, 0, 59053, 59054, 59055, 59056, 0, 0, 0, 0, 17658), -- 19477
+(19478, 1, 1, 1, 0, 0, 0, 0, 0, 59057, 59058, 59059, 0, 0, 0, 0, 0, 17658), -- 19478
+(19513, 1, 0, 0, 0, 0, 0, 0, 0, 59146, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19513
+(19522, 1, 0, 0, 0, 0, 0, 0, 0, 59156, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19522
+(19526, 1, 0, 0, 0, 0, 0, 0, 0, 59160, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19526
+(19552, 1, 1, 0, 0, 0, 0, 0, 0, 59235, 59236, 0, 0, 0, 0, 0, 0, 17658), -- 19552
+(19554, 1, 1, 0, 0, 0, 0, 0, 0, 59240, 59241, 0, 0, 0, 0, 0, 0, 17658), -- 19554
+(19555, 1, 0, 0, 0, 0, 0, 0, 0, 59242, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19555
+(19556, 1, 0, 0, 0, 0, 0, 0, 0, 59244, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19556
+(19562, 1, 0, 0, 0, 0, 0, 0, 0, 59333, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19562
+(19567, 1, 0, 0, 0, 0, 0, 0, 0, 59350, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19567
+(19568, 1, 1, 0, 0, 0, 0, 0, 0, 59357, 59359, 0, 0, 0, 0, 0, 0, 17658), -- 19568
+(19571, 1, 0, 0, 0, 0, 0, 0, 0, 59374, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19571
+(19580, 1, 1, 1, 1, 1, 1, 0, 0, 59462, 66582, 66583, 66584, 66585, 66587, 0, 0, 17658), -- 19580
+(19584, 1, 0, 0, 0, 0, 0, 0, 0, 59502, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19584
+(19586, 1, 0, 0, 0, 0, 0, 0, 0, 59514, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19586
+(19588, 1, 0, 0, 0, 0, 0, 0, 0, 59529, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19588
+(19589, 1, 0, 0, 0, 0, 0, 0, 0, 59531, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19589
+(19590, 1, 0, 0, 0, 0, 0, 0, 0, 59534, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19590
+(19591, 1, 0, 0, 0, 0, 0, 0, 0, 59535, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19591
+(15115, 1, 0, 0, 0, 0, 0, 0, 0, 36951, 0, 0, 0, 0, 0, 0, 0, 17658), -- 15115
+(19592, 1, 0, 0, 0, 0, 0, 0, 0, 59536, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19592
+(19593, 1, 0, 0, 0, 0, 0, 0, 0, 59537, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19593
+(19594, 1, 0, 0, 0, 0, 0, 0, 0, 59538, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19594
+(19595, 1, 0, 0, 0, 0, 0, 0, 0, 59539, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19595
+(19596, 1, 0, 0, 0, 0, 0, 0, 0, 59540, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19596
+(19620, 1, 0, 0, 0, 0, 0, 0, 0, 59691, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19620
+(19633, 1, 1, 1, 1, 0, 0, 0, 0, 59783, 59784, 59785, 59792, 0, 0, 0, 0, 17658), -- 19633
+(19635, 1, 1, 1, 1, 0, 0, 0, 0, 59787, 59788, 59789, 59790, 0, 0, 0, 0, 17658), -- 19635
+(19649, 1, 1, 1, 0, 0, 0, 0, 0, 59837, 59838, 59840, 0, 0, 0, 0, 0, 17658), -- 19649
+(19697, 1, 0, 0, 0, 0, 0, 0, 0, 60147, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19697
+(19705, 1, 0, 0, 0, 0, 0, 0, 0, 60155, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19705
+(19712, 1, 0, 0, 0, 0, 0, 0, 0, 60197, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19712
+(19719, 1, 0, 0, 0, 0, 0, 0, 0, 60251, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19719
+(19721, 1, 1, 1, 1, 0, 0, 0, 0, 60235, 60236, 60237, 60239, 0, 0, 0, 0, 17658), -- 19721
+(19724, 1, 1, 1, 1, 1, 1, 1, 1, 60280, 60281, 60282, 60283, 60284, 60285, 60286, 60287, 17658), -- 19724
+(19739, 1, 0, 0, 0, 0, 0, 0, 0, 60361, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19739
+(19741, 1, 0, 0, 0, 0, 0, 0, 0, 60363, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19741
+(19752, 1, 0, 0, 0, 0, 0, 0, 0, 59963, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19752
+(19758, 1, 0, 0, 0, 0, 0, 0, 0, 60458, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19758
+(19759, 1, 0, 0, 0, 0, 0, 0, 0, 60459, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19759
+(19770, 1, 0, 0, 0, 0, 0, 0, 0, 60541, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19770
+(19771, 1, 0, 0, 0, 0, 0, 0, 0, 60542, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19771
+(19772, 1, 0, 0, 0, 0, 0, 0, 0, 60543, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19772
+(19773, 1, 0, 0, 0, 0, 0, 0, 0, 60544, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19773
+(19786, 1, 0, 0, 0, 0, 0, 0, 0, 60597, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19786
+(19830, 1, 0, 0, 0, 0, 0, 0, 0, 60831, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19830
+(19849, 1, 1, 1, 0, 0, 0, 0, 0, 60863, 60864, 60866, 0, 0, 0, 0, 0, 17658), -- 19849
+(19850, 1, 1, 1, 0, 0, 0, 0, 0, 60869, 60870, 60871, 0, 0, 0, 0, 0, 17658), -- 19850
+(19852, 1, 1, 0, 0, 0, 0, 0, 0, 60873, 60874, 0, 0, 0, 0, 0, 0, 17658), -- 19852
+(19855, 1, 0, 0, 0, 0, 0, 0, 0, 60877, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19855
+(19856, 1, 1, 1, 1, 1, 1, 1, 0, 60878, 60879, 60880, 60881, 60882, 60883, 61002, 0, 17658), -- 19856
+(19863, 1, 0, 0, 0, 0, 0, 0, 0, 60914, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19863
+(19876, 1, 0, 0, 0, 0, 0, 0, 0, 60958, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19876
+(19878, 1, 0, 0, 0, 0, 0, 0, 0, 60970, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19878
+(19879, 1, 0, 0, 0, 0, 0, 0, 0, 60971, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19879
+(19881, 1, 0, 0, 0, 0, 0, 0, 0, 60977, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19881
+(19888, 1, 0, 0, 0, 0, 0, 0, 0, 61022, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19888
+(19894, 1, 1, 1, 0, 0, 0, 0, 0, 61043, 61042, 61044, 0, 0, 0, 0, 0, 17658), -- 19894
+(19921, 1, 1, 1, 1, 0, 0, 0, 0, 61181, 61200, 61201, 61202, 0, 0, 0, 0, 17658), -- 19921
+(19964, 1, 0, 0, 0, 0, 0, 0, 0, 61452, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19964
+(19965, 1, 0, 0, 0, 0, 0, 0, 0, 61460, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19965
+(19966, 1, 0, 0, 0, 0, 0, 0, 0, 61469, 0, 0, 0, 0, 0, 0, 0, 17658), -- 19966
+(15525, 1, 0, 0, 0, 0, 0, 0, 0, 39135, 0, 0, 0, 0, 0, 0, 0, 17658), -- 15525
+(20011, 1, 1, 1, 1, 1, 0, 0, 0, 61735, 62344, 62345, 62346, 62347, 0, 0, 0, 17658), -- 20011
+(15535, 1, 0, 0, 0, 0, 0, 0, 0, 39187, 0, 0, 0, 0, 0, 0, 0, 17658), -- 15535
+(20012, 1, 1, 1, 1, 0, 0, 0, 0, 61738, 61739, 61740, 61741, 0, 0, 0, 0, 17658), -- 20012
+(15536, 1, 0, 0, 0, 0, 0, 0, 0, 39188, 0, 0, 0, 0, 0, 0, 0, 17658), -- 15536
+(20017, 1, 0, 0, 0, 0, 0, 0, 0, 61780, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20017
+(15541, 1, 0, 0, 0, 0, 0, 0, 0, 39194, 0, 0, 0, 0, 0, 0, 0, 17658), -- 15541
+(20025, 1, 0, 0, 0, 0, 0, 0, 0, 61808, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20025
+(20027, 1, 0, 0, 0, 0, 0, 0, 0, 61810, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20027
+(20029, 1, 1, 0, 0, 0, 0, 0, 0, 61820, 61821, 0, 0, 0, 0, 0, 0, 17658), -- 20029
+(20036, 1, 0, 0, 0, 0, 0, 0, 0, 61842, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20036
+(20039, 1, 0, 0, 0, 0, 0, 0, 0, 61848, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20039
+(20040, 1, 0, 0, 0, 0, 0, 0, 0, 61857, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20040
+(20053, 1, 0, 0, 0, 0, 0, 0, 0, 62039, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20053
+(20067, 1, 1, 1, 1, 1, 1, 0, 0, 62211, 62348, 62349, 62350, 62351, 62352, 0, 0, 17658), -- 20067
+(20068, 1, 1, 1, 1, 0, 0, 0, 0, 62353, 62354, 62355, 62356, 0, 0, 0, 0, 17658), -- 20068
+(15593, 1, 0, 0, 0, 0, 0, 0, 0, 39358, 0, 0, 0, 0, 0, 0, 0, 17658), -- 15593
+(20071, 1, 0, 0, 0, 0, 0, 0, 0, 62223, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20071
+(20072, 1, 0, 0, 0, 0, 0, 0, 0, 62225, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20072
+(20075, 1, 0, 0, 0, 0, 0, 0, 0, 62253, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20075
+(20076, 1, 0, 0, 0, 0, 0, 0, 0, 62266, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20076
+(20077, 1, 0, 0, 0, 0, 0, 0, 0, 62275, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20077
+(20078, 1, 0, 0, 0, 0, 0, 0, 0, 62268, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20078
+(20079, 1, 1, 1, 0, 0, 0, 0, 0, 62276, 62277, 62278, 0, 0, 0, 0, 0, 17658), -- 20079
+(20081, 1, 0, 0, 0, 0, 0, 0, 0, 62292, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20081
+(20083, 1, 0, 0, 0, 0, 0, 0, 0, 62294, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20083
+(20084, 1, 0, 0, 0, 0, 0, 0, 0, 62296, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20084
+(20094, 1, 0, 0, 0, 0, 0, 0, 0, 62342, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20094
+(20097, 1, 1, 1, 1, 1, 1, 0, 0, 62363, 62364, 62365, 62366, 62367, 62368, 0, 0, 17658), -- 20097
+(20098, 1, 0, 0, 0, 0, 0, 0, 0, 62369, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20098
+(20099, 1, 0, 0, 0, 0, 0, 0, 0, 62370, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20099
+(20101, 1, 1, 3, 1, 1, 1, 1, 1, 62372, 62373, 62375, 62376, 62377, 62378, 62379, 62380, 17658), -- 20101
+(20112, 1, 0, 0, 0, 0, 0, 0, 0, 62446, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20112
+(20115, 1, 0, 0, 0, 0, 0, 0, 0, 62477, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20115
+(20118, 1, 1, 1, 1, 1, 0, 0, 0, 62561, 62748, 62749, 62750, 63578, 0, 0, 0, 17658), -- 20118
+(20121, 1, 0, 0, 0, 0, 0, 0, 0, 62592, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20121
+(20122, 1, 0, 0, 0, 0, 0, 0, 0, 62605, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20122
+(20124, 1, 0, 0, 0, 0, 0, 0, 0, 62617, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20124
+(20135, 1, 0, 0, 0, 0, 0, 0, 0, 62724, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20135
+(20163, 1, 0, 0, 0, 0, 0, 0, 0, 63378, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20163
+(20173, 1, 1, 1, 1, 0, 0, 0, 0, 63429, 63430, 63460, 63463, 0, 0, 0, 0, 17658), -- 20173
+(20174, 1, 1, 1, 0, 0, 0, 0, 0, 63432, 63431, 63433, 0, 0, 0, 0, 0, 17658), -- 20174
+(20177, 1, 0, 0, 0, 0, 0, 0, 0, 63459, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20177
+(20178, 1, 0, 0, 0, 0, 0, 0, 0, 63468, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20178
+(20189, 1, 1, 1, 0, 0, 0, 0, 0, 63519, 66012, 66013, 0, 0, 0, 0, 0, 17658), -- 20189
+(20190, 1, 1, 1, 0, 0, 0, 0, 0, 63520, 66004, 66006, 0, 0, 0, 0, 0, 17658), -- 20190
+(20191, 1, 1, 1, 0, 0, 0, 0, 0, 63521, 66002, 66003, 0, 0, 0, 0, 0, 17658), -- 20191
+(15717, 1, 0, 0, 0, 0, 0, 0, 0, 39738, 0, 0, 0, 0, 0, 0, 0, 17658), -- 15717
+(15718, 1, 0, 0, 0, 0, 0, 0, 0, 39739, 0, 0, 0, 0, 0, 0, 0, 17658), -- 15718
+(20206, 1, 1, 1, 1, 1, 1, 0, 0, 63558, 63559, 63560, 63561, 63562, 63564, 0, 0, 17658), -- 20206
+(20215, 1, 0, 0, 0, 0, 0, 0, 0, 63579, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20215
+(20216, 1, 0, 0, 0, 0, 0, 0, 0, 63590, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20216
+(20219, 1, 0, 0, 0, 0, 0, 0, 0, 63609, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20219
+(20228, 1, 1, 0, 0, 0, 0, 0, 0, 63647, 63646, 0, 0, 0, 0, 0, 0, 17658), -- 20228
+(20237, 1, 0, 0, 0, 0, 0, 0, 0, 63690, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20237
+(20240, 1, 0, 0, 0, 0, 0, 0, 0, 63798, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20240
+(20241, 1, 0, 0, 0, 0, 0, 0, 0, 63800, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20241
+(20255, 1, 0, 0, 0, 0, 0, 0, 0, 63841, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20255
+(20256, 1, 0, 0, 0, 0, 0, 0, 0, 63842, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20256
+(20257, 1, 0, 0, 0, 0, 0, 0, 0, 63843, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20257
+(20258, 1, 0, 0, 0, 0, 0, 0, 0, 63844, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20258
+(20259, 1, 0, 0, 0, 0, 0, 0, 0, 63845, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20259
+(20260, 1, 0, 0, 0, 0, 0, 0, 0, 63846, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20260
+(20263, 1, 1, 1, 0, 0, 0, 0, 0, 63867, 63868, 63869, 0, 0, 0, 0, 0, 17658), -- 20263
+(20278, 1, 0, 0, 0, 0, 0, 0, 0, 63922, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20278
+(20302, 1, 0, 0, 0, 0, 0, 0, 0, 64010, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20302
+(20306, 1, 0, 0, 0, 0, 0, 0, 0, 64020, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20306
+(15841, 1, 0, 0, 0, 0, 0, 0, 0, 40354, 0, 0, 0, 0, 0, 0, 0, 17658), -- 15841
+(20320, 1, 0, 0, 0, 0, 0, 0, 0, 64080, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20320
+(20326, 1, 0, 0, 0, 0, 0, 0, 0, 64116, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20326
+(20330, 1, 1, 1, 0, 0, 0, 0, 0, 64151, 64152, 64199, 0, 0, 0, 0, 0, 17658), -- 20330
+(20335, 1, 0, 0, 0, 0, 0, 0, 0, 64163, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20335
+(20337, 1, 1, 0, 0, 0, 0, 0, 0, 64165, 64190, 0, 0, 0, 0, 0, 0, 17658), -- 20337
+(20338, 1, 1, 1, 0, 0, 0, 0, 0, 64166, 64191, 68274, 0, 0, 0, 0, 0, 17658), -- 20338
+(20339, 1, 1, 1, 1, 1, 1, 0, 0, 64167, 64168, 64169, 64170, 64192, 64193, 0, 0, 17658), -- 20339
+(20340, 1, 1, 1, 1, 0, 0, 0, 0, 64171, 64194, 68275, 68276, 0, 0, 0, 0, 17658), -- 20340
+(20346, 1, 0, 0, 0, 0, 0, 0, 0, 64187, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20346
+(20348, 1, 0, 0, 0, 0, 0, 0, 0, 64205, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20348
+(20350, 1, 1, 1, 1, 1, 1, 1, 1, 64209, 64210, 64211, 64212, 64213, 64215, 64218, 64219, 17658), -- 20350
+(20351, 1, 0, 0, 0, 0, 0, 0, 0, 64220, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20351
+(20352, 1, 0, 0, 0, 0, 0, 0, 0, 64221, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20352
+(20353, 1, 1, 1, 1, 1, 0, 0, 0, 64208, 64214, 64216, 64217, 64222, 0, 0, 0, 17658), -- 20353
+(20354, 1, 0, 0, 0, 0, 0, 0, 0, 64223, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20354
+(20359, 1, 1, 1, 1, 1, 1, 0, 0, 64228, 64229, 64230, 64231, 64232, 64233, 0, 0, 17658), -- 20359
+(20361, 1, 1, 1, 1, 0, 0, 0, 0, 64236, 68248, 68249, 68250, 0, 0, 0, 0, 17658), -- 20361
+(20363, 1, 0, 0, 0, 0, 0, 0, 0, 64261, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20363
+(20364, 1, 0, 0, 0, 0, 0, 0, 0, 64262, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20364
+(20365, 1, 0, 0, 0, 0, 0, 0, 0, 64263, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20365
+(20375, 1, 1, 1, 1, 1, 1, 1, 0, 64275, 64276, 64277, 64278, 64279, 64280, 64281, 0, 17658), -- 20375
+(20376, 1, 1, 1, 1, 1, 1, 1, 1, 64282, 64283, 64284, 64285, 64286, 64287, 64288, 64289, 17658), -- 20376
+(20382, 1, 0, 0, 0, 0, 0, 0, 0, 64295, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20382
+(20397, 1, 0, 0, 0, 0, 0, 0, 0, 64382, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20397
+(20398, 1, 0, 0, 0, 0, 0, 0, 0, 64384, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20398
+(20399, 1, 0, 0, 0, 0, 0, 0, 0, 64386, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20399
+(20412, 1, 0, 0, 0, 0, 0, 0, 0, 64396, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20412
+(20413, 1, 0, 0, 0, 0, 0, 0, 0, 64398, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20413
+(20414, 1, 0, 0, 0, 0, 0, 0, 0, 64399, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20414
+(20430, 1, 1, 1, 1, 1, 1, 1, 1, 64431, 64432, 64433, 64434, 64435, 64436, 64437, 64438, 17658), -- 20430
+(20485, 1, 0, 0, 0, 0, 0, 0, 0, 64551, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20485
+(20490, 1, 0, 0, 0, 0, 0, 0, 0, 64638, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20490
+(20491, 1, 0, 0, 0, 0, 0, 0, 0, 64639, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20491
+(20497, 1, 0, 0, 0, 0, 0, 0, 0, 64669, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20497
+(20501, 1, 0, 0, 0, 0, 0, 0, 0, 64692, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20501
+(20502, 1, 0, 0, 0, 0, 0, 0, 0, 64691, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20502
+(20509, 1, 0, 0, 0, 0, 0, 0, 0, 64718, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20509
+(20510, 1, 0, 0, 0, 0, 0, 0, 0, 64719, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20510
+(20511, 1, 0, 0, 0, 0, 0, 0, 0, 64721, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20511
+(20512, 1, 0, 0, 0, 0, 0, 0, 0, 64723, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20512
+(20513, 1, 0, 0, 0, 0, 0, 0, 0, 64722, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20513
+(20514, 1, 0, 0, 0, 0, 0, 0, 0, 64726, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20514
+(20515, 1, 0, 0, 0, 0, 0, 0, 0, 64727, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20515
+(20516, 1, 0, 0, 0, 0, 0, 0, 0, 64728, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20516
+(20519, 1, 0, 0, 0, 0, 0, 0, 0, 64739, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20519
+(20521, 1, 0, 0, 0, 0, 0, 0, 0, 64736, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20521
+(20524, 1, 0, 0, 0, 0, 0, 0, 0, 64744, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20524
+(20526, 1, 0, 0, 0, 0, 0, 0, 0, 64743, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20526
+(20527, 1, 0, 0, 0, 0, 0, 0, 0, 64750, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20527
+(20528, 1, 0, 0, 0, 0, 0, 0, 0, 64749, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20528
+(20529, 1, 0, 0, 0, 0, 0, 0, 0, 64753, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20529
+(20530, 1, 0, 0, 0, 0, 0, 0, 0, 64754, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20530
+(20531, 1, 0, 0, 0, 0, 0, 0, 0, 64755, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20531
+(20532, 1, 0, 0, 0, 0, 0, 0, 0, 64758, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20532
+(20533, 1, 0, 0, 0, 0, 0, 0, 0, 64759, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20533
+(20534, 1, 0, 0, 0, 0, 0, 0, 0, 64760, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20534
+(20537, 1, 0, 0, 0, 0, 0, 0, 0, 64774, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20537
+(20540, 1, 0, 0, 0, 0, 0, 0, 0, 64778, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20540
+(20549, 1, 0, 0, 0, 0, 0, 0, 0, 64812, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20549
+(20583, 1, 0, 0, 0, 0, 0, 0, 0, 64862, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20583
+(20589, 1, 0, 0, 0, 0, 0, 0, 0, 64979, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20589
+(20603, 1, 1, 1, 1, 0, 0, 0, 0, 65068, 65069, 65070, 65071, 0, 0, 0, 0, 17658), -- 20603
+(20606, 1, 0, 0, 0, 0, 0, 0, 0, 65137, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20606
+(20607, 1, 1, 1, 0, 0, 0, 0, 0, 65138, 65139, 65140, 0, 0, 0, 0, 0, 17658), -- 20607
+(20618, 1, 0, 0, 0, 0, 0, 0, 0, 63984, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20618
+(20619, 1, 0, 0, 0, 0, 0, 0, 0, 65274, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20619
+(20620, 1, 0, 0, 0, 0, 0, 0, 0, 65283, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20620
+(20621, 1, 0, 0, 0, 0, 0, 0, 0, 65284, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20621
+(20622, 1, 0, 0, 0, 0, 0, 0, 0, 65285, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20622
+(20624, 1, 0, 0, 0, 0, 0, 0, 0, 65915, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20624
+(20625, 1, 1, 1, 1, 0, 0, 0, 0, 65289, 65290, 65291, 65292, 0, 0, 0, 0, 17658), -- 20625
+(20632, 1, 0, 0, 0, 0, 0, 0, 0, 65342, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20632
+(20635, 1, 0, 0, 0, 0, 0, 0, 0, 65358, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20635
+(20636, 1, 0, 0, 0, 0, 0, 0, 0, 65362, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20636
+(20638, 1, 0, 0, 0, 0, 0, 0, 0, 65383, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20638
+(20642, 1, 1, 1, 1, 0, 0, 0, 0, 65438, 65439, 65440, 65441, 0, 0, 0, 0, 17658), -- 20642
+(20643, 1, 1, 1, 0, 0, 0, 0, 0, 65452, 65453, 65454, 0, 0, 0, 0, 0, 17658), -- 20643
+(20646, 1, 1, 1, 0, 0, 0, 0, 0, 65458, 65459, 65460, 0, 0, 0, 0, 0, 17658), -- 20646
+(20648, 1, 1, 1, 0, 0, 0, 0, 0, 65464, 65465, 65466, 0, 0, 0, 0, 0, 17658), -- 20648
+(20649, 1, 1, 1, 0, 0, 0, 0, 0, 65467, 65468, 65469, 0, 0, 0, 0, 0, 17658), -- 20649
+(20677, 1, 0, 0, 0, 0, 0, 0, 0, 65901, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20677
+(20678, 1, 0, 0, 0, 0, 0, 0, 0, 65910, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20678
+(20681, 1, 0, 0, 0, 0, 0, 0, 0, 65974, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20681
+(20689, 1, 0, 0, 0, 0, 0, 0, 0, 66072, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20689
+(20690, 1, 0, 0, 0, 0, 0, 0, 0, 66087, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20690
+(20691, 1, 0, 0, 0, 0, 0, 0, 0, 66100, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20691
+(20696, 1, 0, 0, 0, 0, 0, 0, 0, 66191, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20696
+(20697, 1, 0, 0, 0, 0, 0, 0, 0, 66197, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20697
+(20700, 1, 0, 0, 0, 0, 0, 0, 0, 66235, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20700
+(20703, 1, 0, 0, 0, 0, 0, 0, 0, 66244, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20703
+(16230, 1, 0, 0, 0, 0, 0, 0, 0, 42275, 0, 0, 0, 0, 0, 0, 0, 17658), -- 16230
+(20723, 1, 0, 0, 0, 0, 0, 0, 0, 66328, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20723
+(20726, 1, 1, 1, 0, 0, 0, 0, 0, 66339, 66340, 66341, 0, 0, 0, 0, 0, 17658), -- 20726
+(20727, 1, 0, 0, 0, 0, 0, 0, 0, 66346, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20727
+(20763, 1, 0, 0, 0, 0, 0, 0, 0, 66475, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20763
+(20765, 1, 0, 0, 0, 0, 0, 0, 0, 66481, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20765
+(20766, 1, 0, 0, 0, 0, 0, 0, 0, 66482, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20766
+(20767, 1, 0, 0, 0, 0, 0, 0, 0, 66483, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20767
+(20768, 1, 0, 0, 0, 0, 0, 0, 0, 66484, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20768
+(20769, 1, 0, 0, 0, 0, 0, 0, 0, 66485, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20769
+(20778, 1, 0, 0, 0, 0, 0, 0, 0, 66068, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20778
+(20785, 1, 0, 0, 0, 0, 0, 0, 0, 66019, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20785
+(20786, 1, 0, 0, 0, 0, 0, 0, 0, 66535, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20786
+(20787, 1, 0, 0, 0, 0, 0, 0, 0, 16966, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20787
+(20816, 1, 0, 0, 0, 0, 0, 0, 0, 64863, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20816
+(20818, 1, 0, 0, 0, 0, 0, 0, 0, 64864, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20818
+(20819, 1, 0, 0, 0, 0, 0, 0, 0, 65015, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20819
+(20821, 1, 0, 0, 0, 0, 0, 0, 0, 66617, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20821
+(20828, 1, 0, 0, 0, 0, 0, 0, 0, 64876, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20828
+(20829, 1, 0, 0, 0, 0, 0, 0, 0, 64885, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20829
+(20830, 1, 0, 0, 0, 0, 0, 0, 0, 64878, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20830
+(20831, 1, 0, 0, 0, 0, 0, 0, 0, 65017, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20831
+(20832, 1, 0, 0, 0, 0, 0, 0, 0, 64880, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20832
+(20833, 1, 0, 0, 0, 0, 0, 0, 0, 64871, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20833
+(20834, 1, 0, 0, 0, 0, 0, 0, 0, 64870, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20834
+(20835, 1, 0, 0, 0, 0, 0, 0, 0, 64879, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20835
+(20836, 1, 0, 0, 0, 0, 0, 0, 0, 64877, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20836
+(20837, 1, 0, 0, 0, 0, 0, 0, 0, 64884, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20837
+(20838, 1, 0, 0, 0, 0, 0, 0, 0, 64875, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20838
+(20839, 1, 0, 0, 0, 0, 0, 0, 0, 64867, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20839
+(20840, 1, 0, 0, 0, 0, 0, 0, 0, 64882, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20840
+(20841, 1, 0, 0, 0, 0, 0, 0, 0, 66996, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20841
+(20842, 1, 0, 0, 0, 0, 0, 0, 0, 66639, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20842
+(20843, 1, 0, 0, 0, 0, 0, 0, 0, 66618, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20843
+(20844, 1, 0, 0, 0, 0, 0, 0, 0, 66619, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20844
+(20845, 1, 0, 0, 0, 0, 0, 0, 0, 66642, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20845
+(20846, 1, 0, 0, 0, 0, 0, 0, 0, 66620, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20846
+(20848, 1, 0, 0, 0, 0, 0, 0, 0, 66631, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20848
+(20849, 1, 0, 0, 0, 0, 0, 0, 0, 66625, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20849
+(20850, 1, 0, 0, 0, 0, 0, 0, 0, 66630, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20850
+(20851, 1, 0, 0, 0, 0, 0, 0, 0, 66629, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20851
+(20852, 1, 0, 0, 0, 0, 0, 0, 0, 66632, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20852
+(20853, 1, 0, 0, 0, 0, 0, 0, 0, 66627, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20853
+(20854, 1, 0, 0, 0, 0, 0, 0, 0, 66628, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20854
+(20855, 1, 0, 0, 0, 0, 0, 0, 0, 66622, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20855
+(20856, 1, 0, 0, 0, 0, 0, 0, 0, 66633, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20856
+(20857, 1, 0, 0, 0, 0, 0, 0, 0, 66634, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20857
+(20858, 1, 0, 0, 0, 0, 0, 0, 0, 66635, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20858
+(20859, 1, 0, 0, 0, 0, 0, 0, 0, 66624, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20859
+(20860, 1, 0, 0, 0, 0, 0, 0, 0, 66623, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20860
+(20861, 1, 0, 0, 0, 0, 0, 0, 0, 66626, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20861
+(20862, 1, 0, 0, 0, 0, 0, 0, 0, 66621, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20862
+(20864, 1, 0, 0, 0, 0, 0, 0, 0, 66674, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20864
+(20865, 1, 0, 0, 0, 0, 0, 0, 0, 66675, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20865
+(20908, 1, 0, 0, 0, 0, 0, 0, 0, 66686, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20908
+(20909, 1, 0, 0, 0, 0, 0, 0, 0, 66715, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20909
+(20910, 1, 0, 0, 0, 0, 0, 0, 0, 66699, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20910
+(20911, 1, 0, 0, 0, 0, 0, 0, 0, 66697, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20911
+(20912, 1, 0, 0, 0, 0, 0, 0, 0, 66687, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20912
+(20914, 1, 0, 0, 0, 0, 0, 0, 0, 66689, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20914
+(20915, 1, 0, 0, 0, 0, 0, 0, 0, 67108, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20915
+(20916, 1, 0, 0, 0, 0, 0, 0, 0, 66691, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20916
+(20917, 1, 0, 0, 0, 0, 0, 0, 0, 66692, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20917
+(20918, 1, 0, 0, 0, 0, 0, 0, 0, 66693, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20918
+(20919, 1, 0, 0, 0, 0, 0, 0, 0, 66694, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20919
+(20921, 1, 0, 0, 0, 0, 0, 0, 0, 66696, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20921
+(20937, 1, 0, 0, 0, 0, 0, 0, 0, 66739, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20937
+(20946, 1, 0, 0, 0, 0, 0, 0, 0, 66778, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20946
+(20947, 1, 0, 0, 0, 0, 0, 0, 0, 66779, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20947
+(20948, 1, 0, 0, 0, 0, 0, 0, 0, 66780, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20948
+(20949, 1, 0, 0, 0, 0, 0, 0, 0, 66782, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20949
+(20950, 1, 0, 0, 0, 0, 0, 0, 0, 66783, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20950
+(20951, 1, 0, 0, 0, 0, 0, 0, 0, 66785, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20951
+(20955, 1, 1, 1, 1, 0, 0, 0, 0, 66813, 66814, 66815, 66816, 0, 0, 0, 0, 17658), -- 20955
+(20957, 1, 0, 0, 0, 0, 0, 0, 0, 66823, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20957
+(20959, 1, 0, 0, 0, 0, 0, 0, 0, 65004, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20959
+(20960, 1, 0, 0, 0, 0, 0, 0, 0, 66824, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20960
+(20970, 1, 1, 1, 1, 1, 0, 0, 0, 66857, 66858, 66859, 66860, 66861, 0, 0, 0, 17658), -- 20970
+(20985, 1, 0, 0, 0, 0, 0, 0, 0, 64990, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20985
+(20987, 1, 0, 0, 0, 0, 0, 0, 0, 64988, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20987
+(20988, 1, 0, 0, 0, 0, 0, 0, 0, 64987, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20988
+(20989, 1, 0, 0, 0, 0, 0, 0, 0, 64992, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20989
+(20990, 1, 0, 0, 0, 0, 0, 0, 0, 64989, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20990
+(20991, 1, 0, 0, 0, 0, 0, 0, 0, 66698, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20991
+(20993, 1, 0, 0, 0, 0, 0, 0, 0, 64856, 0, 0, 0, 0, 0, 0, 0, 17658), -- 20993
+(21000, 1, 0, 0, 0, 0, 0, 0, 0, 66965, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21000
+(21001, 1, 0, 0, 0, 0, 0, 0, 0, 66966, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21001
+(21002, 1, 0, 0, 0, 0, 0, 0, 0, 66967, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21002
+(21003, 1, 0, 0, 0, 0, 0, 0, 0, 67079, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21003
+(21004, 1, 0, 0, 0, 0, 0, 0, 0, 66970, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21004
+(21005, 1, 0, 0, 0, 0, 0, 0, 0, 66971, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21005
+(21007, 1, 0, 0, 0, 0, 0, 0, 0, 66974, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21007
+(21008, 1, 0, 0, 0, 0, 0, 0, 0, 66975, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21008
+(21026, 1, 0, 0, 0, 0, 0, 0, 0, 66995, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21026
+(21030, 1, 1, 1, 1, 1, 0, 0, 0, 65926, 65925, 65924, 65923, 65922, 0, 0, 0, 17658), -- 21030
+(21033, 1, 0, 0, 0, 0, 0, 0, 0, 67008, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21033
+(16567, 1, 0, 0, 0, 0, 0, 0, 0, 44487, 0, 0, 0, 0, 0, 0, 0, 17658), -- 16567
+(21052, 1, 1, 1, 1, 0, 0, 0, 0, 67031, 67032, 67033, 67034, 0, 0, 0, 0, 17658), -- 21052
+(21084, 1, 0, 0, 0, 0, 0, 0, 0, 67116, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21084
+(21085, 1, 0, 0, 0, 0, 0, 0, 0, 67119, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21085
+(21086, 1, 0, 0, 0, 0, 0, 0, 0, 67122, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21086
+(21091, 1, 1, 1, 0, 0, 0, 0, 0, 67157, 67158, 67159, 0, 0, 0, 0, 0, 17658), -- 21091
+(21092, 1, 0, 0, 0, 0, 0, 0, 0, 67164, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21092
+(21097, 1, 1, 1, 0, 0, 0, 0, 0, 67178, 67179, 67181, 0, 0, 0, 0, 0, 17658), -- 21097
+(21106, 1, 1, 1, 0, 0, 0, 0, 0, 67209, 67210, 67211, 0, 0, 0, 0, 0, 17658), -- 21106
+(21107, 1, 0, 0, 0, 0, 0, 0, 0, 67214, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21107
+(21114, 1, 0, 0, 0, 0, 0, 0, 0, 67220, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21114
+(21118, 1, 1, 1, 1, 1, 1, 1, 1, 67243, 67244, 67245, 67246, 67247, 67248, 67249, 67250, 17658), -- 21118
+(21122, 1, 0, 0, 0, 0, 0, 0, 0, 67268, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21122
+(21123, 1, 0, 0, 0, 0, 0, 0, 0, 67272, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21123
+(21124, 1, 1, 1, 0, 0, 0, 0, 0, 67273, 67274, 67275, 0, 0, 0, 0, 0, 17658), -- 21124
+(21137, 1, 0, 0, 0, 0, 0, 0, 0, 67341, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21137
+(16706, 1, 0, 0, 0, 0, 0, 0, 0, 45121, 0, 0, 0, 0, 0, 0, 0, 17658), -- 16706
+(21185, 1, 0, 0, 0, 0, 0, 0, 0, 67516, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21185
+(21202, 1, 0, 0, 0, 0, 0, 0, 0, 67591, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21202
+(21205, 1, 0, 0, 0, 0, 0, 0, 0, 67604, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21205
+(21207, 1, 0, 0, 0, 0, 0, 0, 0, 67608, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21207
+(21239, 1, 0, 0, 0, 0, 0, 0, 0, 67650, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21239
+(21241, 1, 0, 0, 0, 0, 0, 0, 0, 67654, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21241
+(21247, 1, 0, 0, 0, 0, 0, 0, 0, 67680, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21247
+(21248, 1, 0, 0, 0, 0, 0, 0, 0, 67681, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21248
+(21252, 1, 0, 0, 0, 0, 0, 0, 0, 67686, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21252
+(21253, 1, 0, 0, 0, 0, 0, 0, 0, 67687, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21253
+(21269, 1, 0, 0, 0, 0, 0, 0, 0, 67788, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21269
+(21274, 1, 0, 0, 0, 0, 0, 0, 0, 67803, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21274
+(21281, 1, 0, 0, 0, 0, 0, 0, 0, 67831, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21281
+(21282, 1, 0, 0, 0, 0, 0, 0, 0, 67832, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21282
+(21296, 1, 0, 0, 0, 0, 0, 0, 0, 67894, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21296
+(21408, 1, 0, 0, 0, 0, 0, 0, 0, 68132, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21408
+(12508, 1, 0, 0, 0, 0, 0, 0, 0, 25110, 0, 0, 0, 0, 0, 0, 0, 17658), -- 12508
+(16998, 1, 0, 0, 0, 0, 0, 0, 0, 46376, 0, 0, 0, 0, 0, 0, 0, 17658), -- 16998
+(21499, 1, 0, 0, 0, 0, 0, 0, 0, 68312, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21499
+(21500, 1, 0, 0, 0, 0, 0, 0, 0, 68314, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21500
+(21501, 1, 0, 0, 0, 0, 0, 0, 0, 68315, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21501
+(17096, 1, 0, 0, 0, 0, 0, 0, 0, 46948, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17096
+(21615, 1, 0, 0, 0, 0, 0, 0, 0, 68460, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21615
+(21619, 1, 0, 0, 0, 0, 0, 0, 0, 68466, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21619
+(21624, 1, 1, 0, 0, 0, 0, 0, 0, 68483, 68484, 0, 0, 0, 0, 0, 0, 17658), -- 21624
+(21627, 1, 0, 0, 0, 0, 0, 0, 0, 68498, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21627
+(21630, 1, 0, 0, 0, 0, 0, 0, 0, 68511, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21630
+(21633, 1, 1, 1, 0, 0, 0, 0, 0, 68524, 68525, 68557, 0, 0, 0, 0, 0, 17658), -- 21633
+(21694, 1, 0, 0, 0, 0, 0, 0, 0, 68780, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21694
+(21698, 1, 0, 0, 0, 0, 0, 0, 0, 68812, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21698
+(21699, 1, 0, 0, 0, 0, 0, 0, 0, 68813, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21699
+(21701, 1, 0, 0, 0, 0, 0, 0, 0, 68824, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21701
+(21702, 1, 0, 0, 0, 0, 0, 0, 0, 68823, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21702
+(21704, 1, 0, 0, 0, 0, 0, 0, 0, 68822, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21704
+(21720, 1, 0, 0, 0, 0, 0, 0, 0, 68851, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21720
+(21739, 1, 0, 0, 0, 0, 0, 0, 0, 68901, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21739
+(21750, 1, 0, 0, 0, 0, 0, 0, 0, 68963, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21750
+(21751, 1, 0, 0, 0, 0, 0, 0, 0, 68968, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21751
+(21754, 1, 0, 0, 0, 0, 0, 0, 0, 68989, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21754
+(21755, 1, 0, 0, 0, 0, 0, 0, 0, 68988, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21755
+(21766, 1, 0, 0, 0, 0, 0, 0, 0, 69035, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21766
+(21767, 1, 0, 0, 0, 0, 0, 0, 0, 69036, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21767
+(21783, 1, 0, 0, 0, 0, 0, 0, 0, 69139, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21783
+(21784, 1, 0, 0, 0, 0, 0, 0, 0, 69154, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21784
+(17318, 1, 0, 0, 0, 0, 0, 0, 0, 47996, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17318
+(17331, 1, 0, 0, 0, 0, 0, 0, 0, 48044, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17331
+(21809, 1, 0, 0, 0, 0, 0, 0, 0, 69255, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21809
+(17334, 1, 0, 0, 0, 0, 0, 0, 0, 48049, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17334
+(21812, 1, 0, 0, 0, 0, 0, 0, 0, 69258, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21812
+(21833, 1, 0, 0, 0, 0, 0, 0, 0, 69302, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21833
+(21834, 1, 0, 0, 0, 0, 0, 0, 0, 69306, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21834
+(21838, 1, 0, 0, 0, 0, 0, 0, 0, 69329, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21838
+(21843, 1, 0, 0, 0, 0, 0, 0, 0, 69348, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21843
+(21871, 1, 0, 0, 0, 0, 0, 0, 0, 69784, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21871
+(21872, 1, 0, 0, 0, 0, 0, 0, 0, 69785, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21872
+(21892, 1, 0, 0, 0, 0, 0, 0, 0, 69905, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21892
+(21893, 1, 0, 0, 0, 0, 0, 0, 0, 69907, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21893
+(21955, 1, 1, 1, 1, 0, 0, 0, 0, 70146, 70147, 70148, 70149, 0, 0, 0, 0, 17658), -- 21955
+(17482, 1, 0, 0, 0, 0, 0, 0, 0, 48726, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17482
+(21966, 1, 0, 0, 0, 0, 0, 0, 0, 70183, 0, 0, 0, 0, 0, 0, 0, 17658), -- 21966
+(17519, 1, 0, 0, 0, 0, 0, 0, 0, 48894, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17519
+(17528, 1, 0, 0, 0, 0, 0, 0, 0, 49000, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17528
+(22007, 1, 0, 0, 0, 0, 0, 0, 0, 70564, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22007
+(22014, 1, 1, 1, 1, 0, 0, 0, 0, 70575, 70576, 70577, 70578, 0, 0, 0, 0, 17658), -- 22014
+(22052, 1, 0, 0, 0, 0, 0, 0, 0, 70853, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22052
+(22063, 1, 0, 0, 0, 0, 0, 0, 0, 70964, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22063
+(8676, 1, 0, 0, 0, 0, 0, 0, 0, 12784, 0, 0, 0, 0, 0, 0, 0, 17658), -- 8676
+(22108, 1, 0, 0, 0, 0, 0, 0, 0, 71276, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22108
+(22140, 1, 0, 0, 0, 0, 0, 0, 0, 71348, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22140
+(17739, 1, 0, 0, 0, 0, 0, 0, 0, 50307, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17739
+(17760, 0, 1, 0, 0, 0, 0, 0, 0, 7090, 50605, 0, 0, 0, 0, 0, 0, 17658), -- 17760
+(22258, 1, 0, 0, 0, 0, 0, 0, 0, 71585, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22258
+(22269, 1, 0, 0, 0, 0, 0, 0, 0, 71745, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22269
+(22277, 1, 0, 0, 0, 0, 0, 0, 0, 33918, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22277
+(22278, 1, 0, 0, 0, 0, 0, 0, 0, 72000, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22278
+(22279, 1, 0, 0, 0, 0, 0, 0, 0, 72001, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22279
+(22301, 1, 0, 0, 0, 0, 0, 0, 0, 72227, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22301
+(17831, 1, 0, 0, 0, 0, 0, 0, 0, 50741, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17831
+(17835, 1, 0, 0, 0, 0, 0, 0, 0, 50746, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17835
+(22315, 1, 0, 0, 0, 0, 0, 0, 0, 72417, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22315
+(22317, 1, 0, 0, 0, 0, 0, 0, 0, 72423, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22317
+(22338, 1, 0, 0, 0, 0, 0, 0, 0, 72596, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22338
+(22340, 1, 1, 1, 1, 1, 0, 0, 0, 72615, 72616, 72617, 72618, 72619, 0, 0, 0, 17658), -- 22340
+(22365, 1, 0, 0, 0, 0, 0, 0, 0, 72834, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22365
+(17893, 1, 0, 0, 0, 0, 0, 0, 0, 50957, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17893
+(17895, 1, 0, 0, 0, 0, 0, 0, 0, 50959, 0, 0, 0, 0, 0, 0, 0, 17658), -- 17895
+(22373, 1, 0, 0, 0, 0, 0, 0, 0, 72884, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22373
+(22375, 1, 0, 0, 0, 0, 0, 0, 0, 72886, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22375
+(22376, 1, 1, 0, 0, 0, 0, 0, 0, 72887, 72888, 0, 0, 0, 0, 0, 0, 17658), -- 22376
+(22381, 1, 0, 0, 0, 0, 0, 0, 0, 72901, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22381
+(22382, 1, 0, 0, 0, 0, 0, 0, 0, 72902, 0, 0, 0, 0, 0, 0, 0, 17658), -- 22382
+(22858, 1, 0, 0, 0, 0, 0, 0, 0, 75955, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22858
+(22884, 1, 0, 0, 0, 0, 0, 0, 0, 76115, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22884
+(22900, 1, 0, 0, 0, 0, 0, 0, 0, 76189, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22900
+(22901, 1, 0, 0, 0, 0, 0, 0, 0, 76193, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22901
+(22902, 1, 0, 0, 0, 0, 0, 0, 0, 76194, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22902
+(22903, 1, 0, 0, 0, 0, 0, 0, 0, 76195, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22903
+(20676, 1, 0, 0, 0, 0, 0, 0, 0, 65827, 0, 0, 0, 0, 0, 0, 0, 18414), -- 20676
+(21259, 1, 1, 1, 0, 0, 0, 0, 0, 67731, 67737, 67738, 0, 0, 0, 0, 0, 18414), -- 21259
+(10123, 1, 0, 0, 0, 0, 0, 0, 0, 18426, 0, 0, 0, 0, 0, 0, 0, 18414), -- 10123
+(22934, 1, 0, 0, 0, 0, 0, 0, 0, 76226, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22934
+(22945, 1, 0, 0, 0, 0, 0, 0, 0, 76237, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22945
+(22956, 1, 0, 0, 0, 0, 0, 0, 0, 76538, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22956
+(22968, 1, 0, 0, 0, 0, 0, 0, 0, 76559, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22968
+(22981, 1, 0, 0, 0, 0, 0, 0, 0, 76609, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22981
+(20203, 1, 0, 0, 0, 0, 0, 0, 0, 63548, 0, 0, 0, 0, 0, 0, 0, 18414), -- 20203
+(21876, 1, 0, 0, 0, 0, 0, 0, 0, 69798, 0, 0, 0, 0, 0, 0, 0, 18414), -- 21876
+(20213, 1, 0, 0, 0, 0, 0, 0, 0, 63575, 0, 0, 0, 0, 0, 0, 0, 18414), -- 20213
+(19128, 1, 0, 0, 0, 0, 0, 0, 0, 57471, 0, 0, 0, 0, 0, 0, 0, 18414), -- 19128
+(20243, 1, 0, 0, 0, 0, 0, 0, 0, 63806, 0, 0, 0, 0, 0, 0, 0, 18414), -- 20243
+(22539, 1, 1, 1, 1, 0, 0, 0, 0, 73918, 73919, 73920, 73921, 0, 0, 0, 0, 18414), -- 22539
+(22576, 1, 0, 0, 0, 0, 0, 0, 0, 74212, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22576
+(20943, 1, 0, 0, 0, 0, 0, 0, 0, 66772, 0, 0, 0, 0, 0, 0, 0, 18414), -- 20943
+(19840, 1, 1, 1, 0, 0, 0, 0, 0, 60849, 60850, 60851, 0, 0, 0, 0, 0, 18414), -- 19840
+(19842, 1, 0, 0, 0, 0, 0, 0, 0, 60853, 0, 0, 0, 0, 0, 0, 0, 18414), -- 19842
+(19844, 1, 0, 0, 0, 0, 0, 0, 0, 60855, 0, 0, 0, 0, 0, 0, 0, 18414), -- 19844
+(20986, 1, 0, 0, 0, 0, 0, 0, 0, 66936, 0, 0, 0, 0, 0, 0, 0, 18414), -- 20986
+(12665, 1, 0, 0, 0, 0, 0, 0, 0, 25862, 0, 0, 0, 0, 0, 0, 0, 18414), -- 12665
+(19911, 1, 0, 0, 0, 0, 0, 0, 0, 61150, 0, 0, 0, 0, 0, 0, 0, 18414), -- 19911
+(22701, 1, 0, 0, 0, 0, 0, 0, 0, 75143, 0, 0, 0, 0, 0, 0, 0, 18414), -- 22701
+(19365, 1, 0, 0, 0, 0, 0, 0, 0, 58574, 0, 0, 0, 0, 0, 0, 0, 18414), -- 19365
+(17694, 1, 0, 0, 0, 0, 0, 0, 0, 50050, 0, 0, 0, 0, 0, 0, 0, 18414), -- 17694
+(19367, 1, 0, 0, 0, 0, 0, 0, 0, 58576, 0, 0, 0, 0, 0, 0, 0, 18414), -- 19367
+(21614, 1, 1, 0, 0, 0, 0, 0, 0, 62763, 62764, 0, 0, 0, 0, 0, 0, 18414), -- 21614
+(20517, 1, 1, 0, 0, 0, 0, 0, 0, 64733, 66827, 0, 0, 0, 0, 0, 0, 18414), -- 20517
+(20579, 1, 0, 0, 0, 0, 0, 0, 0, 64856, 0, 0, 0, 0, 0, 0, 0, 18414), -- 20579
+(21142, 1, 0, 0, 0, 0, 0, 0, 0, 66082, 0, 0, 0, 0, 0, 0, 0, 18414); -- 21142
+
+
+
+UPDATE `npc_text` SET `BroadcastTextId0`=51857, `BroadcastTextId1`=51858, `BroadcastTextId2`=51859, `VerifiedBuild`=17128 WHERE `ID`=18037; -- 18037
+UPDATE `npc_text` SET `VerifiedBuild`=17128 WHERE `ID` IN (11330 /*11330*/, 2497 /*2497*/, 2499 /*2499*/, 2515 /*2515*/, 2557 /*2557*/, 2559 /*2559*/, 7046 /*7046*/, 13788 /*13788*/, 13853 /*13853*/, 13854 /*13854*/, 7155 /*7155*/, 7156 /*7156*/, 7256 /*7256*/, 9659 /*9659*/, 5243 /*5243*/, 12044 /*12044*/, 9841 /*9841*/, 12144 /*12144*/, 9919 /*9919*/, 9947 /*9947*/, 12190 /*12190*/, 12194 /*12194*/, 9994 /*9994*/, 12242 /*12242*/, 12323 /*12323*/, 7883 /*7883*/, 1210 /*1210*/, 14665 /*14665*/, 14667 /*14667*/, 14668 /*14668*/, 14678 /*14678*/, 14680 /*14680*/, 10233 /*10233*/, 12507 /*12507*/, 10280 /*10280*/, 14781 /*14781*/, 12572 /*12572*/, 14813 /*14813*/, 14814 /*14814*/, 12659 /*12659*/, 8214 /*8214*/, 8216 /*8216*/, 8217 /*8217*/, 10565 /*10565*/, 10605 /*10605*/, 10613 /*10613*/, 10666 /*10666*/, 3977 /*3977*/, 15189 /*15189*/, 12966 /*12966*/, 13001 /*13001*/, 13011 /*13011*/, 15290 /*15290*/, 8584 /*8584*/, 8585 /*8585*/, 10847 /*10847*/, 10849 /*10849*/, 10851 /*10851*/, 10864 /*10864*/, 15339 /*15339*/, 10892 /*10892*/, 10904 /*10904*/, 11090 /*11090*/);
+UPDATE `npc_text` SET `BroadcastTextId0`=40424, `VerifiedBuild`=17128 WHERE `ID`=15855; -- 15855
+UPDATE `npc_text` SET `BroadcastTextId0`=41132, `VerifiedBuild`=17128 WHERE `ID`=15997; -- 15997
+UPDATE `npc_text` SET `BroadcastTextId0`=4857, `VerifiedBuild`=17128 WHERE `ID`=2593; -- 2593
+UPDATE `npc_text` SET `BroadcastTextId0`=4858, `VerifiedBuild`=17128 WHERE `ID`=2594; -- 2594
+UPDATE `npc_text` SET `BroadcastTextId0`=4878, `VerifiedBuild`=17128 WHERE `ID`=2599; -- 2599
+UPDATE `npc_text` SET `BroadcastTextId0`=52970, `VerifiedBuild`=17128 WHERE `ID`=18269; -- 18269
+UPDATE `npc_text` SET `BroadcastTextId0`=53117, `VerifiedBuild`=17128 WHERE `ID`=18313; -- 18313
+UPDATE `npc_text` SET `BroadcastTextId0`=9846, `VerifiedBuild`=17128 WHERE `ID`=7134; -- 7134
+UPDATE `npc_text` SET `BroadcastTextId0`=53398, `VerifiedBuild`=17128 WHERE `ID`=18362; -- 18362
+UPDATE `npc_text` SET `BroadcastTextId0`=9903, `VerifiedBuild`=17128 WHERE `ID`=7198; -- 7198
+UPDATE `npc_text` SET `BroadcastTextId0`=9905, `VerifiedBuild`=17128 WHERE `ID`=7199; -- 7199
+UPDATE `npc_text` SET `BroadcastTextId0`=54324, `BroadcastTextId1`=54325, `VerifiedBuild`=17128 WHERE `ID`=18559; -- 18559
+UPDATE `npc_text` SET `BroadcastTextId0`=53041, `VerifiedBuild`=17128 WHERE `ID`=7397; -- 7397
+UPDATE `npc_text` SET `BroadcastTextId0`=45679, `VerifiedBuild`=17128 WHERE `ID`=16868; -- 16868
+UPDATE `npc_text` SET `BroadcastTextId2`=50625, `VerifiedBuild`=17128 WHERE `ID`=5974; -- 5974
+UPDATE `npc_text` SET `BroadcastTextId0`=47513, `VerifiedBuild`=17128 WHERE `ID`=17203; -- 17203
+UPDATE `npc_text` SET `BroadcastTextId0`=47515, `VerifiedBuild`=17128 WHERE `ID`=17204; -- 17204
+UPDATE `npc_text` SET `BroadcastTextId0`=47945, `VerifiedBuild`=17128 WHERE `ID`=17302; -- 17302
+UPDATE `npc_text` SET `BroadcastTextId0`=36886, `VerifiedBuild`=17128 WHERE `ID`=15081; -- 15081
+UPDATE `npc_text` SET `BroadcastTextId0`=37025, `VerifiedBuild`=17128 WHERE `ID`=15134; -- 15134
+UPDATE `npc_text` SET `BroadcastTextId0`=27288, `VerifiedBuild`=17128 WHERE `ID`=13002; -- 13002
+UPDATE `npc_text` SET `BroadcastTextId1`=50626, `VerifiedBuild`=17128 WHERE `ID`=13310; -- 13310
+UPDATE `npc_text` SET `BroadcastTextId0`=50758, `VerifiedBuild`=17128 WHERE `ID`=17840; -- 17840
+UPDATE `npc_text` SET `BroadcastTextId0`=50761, `VerifiedBuild`=17128 WHERE `ID`=17842; -- 17842
+UPDATE `npc_text` SET `VerifiedBuild`=17399 WHERE `ID` IN (12873 /*12873*/, 20119 /*20119*/, 11211 /*11211*/, 20227 /*20227*/, 14670 /*14670*/, 10851 /*10851*/, 11424 /*11424*/, 15339 /*15339*/, 20932 /*20932*/, 8770 /*8770*/, 18269 /*18269*/, 12154 /*12154*/, 12155 /*12155*/, 12156 /*12156*/, 12183 /*12183*/, 12744 /*12744*/, 12195 /*12195*/, 3868 /*3868*/, 18362 /*18362*/, 20605 /*20605*/);
+UPDATE `npc_text` SET `BroadcastTextId0`=45514, `VerifiedBuild`=17399 WHERE `ID`=16825; -- 16825
+UPDATE `npc_text` SET `BroadcastTextId0`=10166, `VerifiedBuild`=17399 WHERE `ID`=7399; -- 7399
+UPDATE `npc_text` SET `BroadcastTextId0`=46960, `VerifiedBuild`=17399 WHERE `ID`=17098; -- 17098
+UPDATE `npc_text` SET `BroadcastTextId0`=44840, `VerifiedBuild`=17399 WHERE `ID`=16669; -- 16669
+UPDATE `npc_text` SET `BroadcastTextId0`=44854, `VerifiedBuild`=17399 WHERE `ID`=16671; -- 16671
+UPDATE `npc_text` SET `VerifiedBuild`=17538 WHERE `ID` IN (560 /*560*/, 8952 /*8952*/, 9515 /*9515*/, 6733 /*6733*/, 14543 /*14543*/, 14544 /*14544*/, 9009 /*9009*/, 9010 /*9010*/, 10124 /*10124*/, 9011 /*9011*/, 10127 /*10127*/, 9578 /*9578*/, 9579 /*9579*/, 9580 /*9580*/, 9597 /*9597*/, 6255 /*6255*/, 10718 /*10718*/, 9610 /*9610*/, 9613 /*9613*/, 14627 /*14627*/, 9614 /*9614*/, 14628 /*14628*/, 14634 /*14634*/, 14639 /*14639*/, 6288 /*6288*/, 9636 /*9636*/, 9090 /*9090*/, 13557 /*13557*/, 9113 /*9113*/, 9118 /*9118*/, 9119 /*9119*/, 767 /*767*/, 768 /*768*/, 9144 /*9144*/, 8589 /*8589*/, 11960 /*11960*/, 6954 /*6954*/, 6955 /*6955*/, 6956 /*6956*/, 6958 /*6958*/, 10866 /*10866*/, 9778 /*9778*/, 9779 /*9779*/, 9781 /*9781*/, 9789 /*9789*/, 8678 /*8678*/, 7021 /*7021*/, 10413 /*10413*/, 10414 /*10414*/, 10416 /*10416*/, 10417 /*10417*/, 10418 /*10418*/, 10422 /*10422*/, 10425 /*10425*/, 10426 /*10426*/, 4863 /*4863*/, 10434 /*10434*/, 10439 /*10439*/, 10440 /*10440*/, 10442 /*10442*/, 12119 /*12119*/, 13798 /*13798*/, 9901 /*9901*/, 10506 /*10506*/, 11082 /*11082*/, 10000 /*10000*/, 10001 /*10001*/, 10002 /*10002*/, 538 /*538*/);
+UPDATE `npc_text` SET `BroadcastTextId0`=50743, `VerifiedBuild`=17538 WHERE `ID`=17833; -- 17833
+UPDATE `npc_text` SET `BroadcastTextId0`=50793, `VerifiedBuild`=17538 WHERE `ID`=17849; -- 17849
+UPDATE `npc_text` SET `BroadcastTextId0`=50744, `VerifiedBuild`=17538 WHERE `ID`=1833; -- 1833
+UPDATE `npc_text` SET `BroadcastTextId0`=35109, `VerifiedBuild`=17538 WHERE `ID`=14647; -- 14647
+UPDATE `npc_text` SET `BroadcastTextId0`=48579, `VerifiedBuild`=17538 WHERE `ID`=17462; -- 17462
+UPDATE `npc_text` SET `BroadcastTextId0`=16460, `VerifiedBuild`=17538 WHERE `ID`=9780; -- 9780
+UPDATE `npc_text` SET `BroadcastTextId0`=52460, `VerifiedBuild`=17538 WHERE `ID`=18189; -- 18189
+UPDATE `npc_text` SET `BroadcastTextId0`=52538, `VerifiedBuild`=17538 WHERE `ID`=18200; -- 18200
+UPDATE `npc_text` SET `BroadcastTextId0`=33409, `VerifiedBuild`=17538 WHERE `ID`=14332; -- 14332
+UPDATE `npc_text` SET `BroadcastTextId0`=33413, `VerifiedBuild`=17538 WHERE `ID`=14333; -- 14333
+UPDATE `npc_text` SET `BroadcastTextId0`=19498, `VerifiedBuild`=17538 WHERE `ID`=10474; -- 10474
+UPDATE `npc_text` SET `BroadcastTextId0`=53069, `VerifiedBuild`=17538 WHERE `ID`=18295; -- 18295
+UPDATE `npc_text` SET `BroadcastTextId0`=53074, `VerifiedBuild`=17538 WHERE `ID`=18297; -- 18297
+UPDATE `npc_text` SET `BroadcastTextId0`=41411, `VerifiedBuild`=17538 WHERE `ID`=16074; -- 16074
+UPDATE `npc_text` SET `BroadcastTextId0`=53111, `VerifiedBuild`=17538 WHERE `ID`=18312; -- 18312
+UPDATE `npc_text` SET `BroadcastTextId0`=33918, `VerifiedBuild`=17538 WHERE `ID`=14424; -- 14424
+UPDATE `npc_text` SET `BroadcastTextId0`=50695, `VerifiedBuild`=17538 WHERE `ID`=17816; -- 17816
+UPDATE `npc_text` SET `VerifiedBuild`=17658 WHERE `ID` IN (13431 /*13431*/, 8960 /*8960*/, 13439 /*13439*/, 13441 /*13441*/, 8966 /*8966*/, 13449 /*13449*/, 13454 /*13454*/, 13455 /*13455*/, 13459 /*13459*/, 13462 /*13462*/, 13481 /*13481*/, 9021 /*9021*/, 13503 /*13503*/, 13504 /*13504*/, 13506 /*13506*/, 13512 /*13512*/, 13517 /*13517*/, 13525 /*13525*/, 9052 /*9052*/, 9063 /*9063*/, 9071 /*9071*/, 9073 /*9073*/, 9074 /*9074*/, 9086 /*9086*/, 13574 /*13574*/, 9098 /*9098*/, 9099 /*9099*/, 9100 /*9100*/, 9101 /*9101*/, 9103 /*9103*/, 9104 /*9104*/, 9105 /*9105*/, 13583 /*13583*/, 9108 /*9108*/, 9109 /*9109*/, 13591 /*13591*/, 9124 /*9124*/, 9131 /*9131*/, 13609 /*13609*/, 13628 /*13628*/, 13637 /*13637*/, 9167 /*9167*/, 9176 /*9176*/, 9177 /*9177*/, 9180 /*9180*/, 13659 /*13659*/, 9182 /*9182*/, 9183 /*9183*/, 13661 /*13661*/, 13663 /*13663*/, 4716 /*4716*/, 9196 /*9196*/, 9199 /*9199*/, 9202 /*9202*/, 9208 /*9208*/, 13691 /*13691*/, 4753 /*4753*/, 13707 /*13707*/, 13709 /*13709*/, 9235 /*9235*/, 9236 /*9236*/, 9237 /*9237*/, 9238 /*9238*/, 9239 /*9239*/, 9242 /*9242*/, 18205 /*18205*/, 13734 /*13734*/, 13737 /*13737*/, 4783 /*4783*/, 9261 /*9261*/, 9262 /*9262*/, 13740 /*13740*/, 9263 /*9263*/, 9264 /*9264*/, 9265 /*9265*/, 9270 /*9270*/, 4794 /*4794*/, 9274 /*9274*/, 4798 /*4798*/, 4799 /*4799*/, 13764 /*13764*/, 13777 /*13777*/, 13783 /*13783*/, 13790 /*13790*/, 4839 /*4839*/, 13793 /*13793*/, 13794 /*13794*/, 13804 /*13804*/, 4859 /*4859*/, 13826 /*13826*/, 13827 /*13827*/, 13833 /*13833*/, 13839 /*13839*/, 13840 /*13840*/, 13844 /*13844*/, 9370 /*9370*/, 9374 /*9374*/, 9384 /*9384*/, 9385 /*9385*/, 9389 /*9389*/, 4913 /*4913*/, 4916 /*4916*/, 9393 /*9393*/, 13873 /*13873*/, 13881 /*13881*/, 13882 /*13882*/, 13884 /*13884*/, 13885 /*13885*/, 13886 /*13886*/, 13887 /*13887*/, 9414 /*9414*/, 9417 /*9417*/, 13896 /*13896*/, 13897 /*13897*/, 13901 /*13901*/, 13906 /*13906*/, 13908 /*13908*/, 9435 /*9435*/, 9440 /*9440*/, 9451 /*9451*/, 9457 /*9457*/, 9458 /*9458*/, 9459 /*9459*/, 4988 /*4988*/, 4993 /*4993*/, 9471 /*9471*/, 4994 /*4994*/, 4995 /*4995*/, 5000 /*5000*/, 9481 /*9481*/, 9482 /*9482*/, 13960 /*13960*/, 9484 /*9484*/, 13961 /*13961*/, 5009 /*5009*/, 9486 /*9486*/, 5010 /*5010*/, 13965 /*13965*/, 13966 /*13966*/, 13967 /*13967*/, 13968 /*13968*/, 9492 /*9492*/, 9493 /*9493*/, 13970 /*13970*/, 5016 /*5016*/, 13971 /*13971*/, 5019 /*5019*/, 13974 /*13974*/, 13975 /*13975*/, 13976 /*13976*/, 5025 /*5025*/, 13980 /*13980*/, 13981 /*13981*/, 5028 /*5028*/, 13983 /*13983*/, 13984 /*13984*/, 13985 /*13985*/, 5031 /*5031*/, 13986 /*13986*/, 13987 /*13987*/, 13988 /*13988*/, 13989 /*13989*/, 13990 /*13990*/, 13991 /*13991*/, 13992 /*13992*/, 561 /*561*/, 13993 /*13993*/, 13995 /*13995*/, 13996 /*13996*/, 9521 /*9521*/, 13998 /*13998*/, 14000 /*14000*/, 14001 /*14001*/, 14002 /*14002*/, 14003 /*14003*/, 5049 /*5049*/, 14004 /*14004*/, 9527 /*9527*/, 14005 /*14005*/, 9528 /*9528*/, 14006 /*14006*/, 9529 /*9529*/, 14007 /*14007*/, 14008 /*14008*/, 5054 /*5054*/, 14009 /*14009*/, 9532 /*9532*/, 9533 /*9533*/, 580 /*580*/, 9534 /*9534*/, 9535 /*9535*/, 14013 /*14013*/, 9536 /*9536*/, 9537 /*9537*/, 14015 /*14015*/, 9538 /*9538*/, 9539 /*9539*/, 14017 /*14017*/, 5064 /*5064*/, 14019 /*14019*/, 14020 /*14020*/, 9543 /*9543*/, 14021 /*14021*/, 14022 /*14022*/, 9545 /*9545*/, 14023 /*14023*/, 9546 /*9546*/, 14024 /*14024*/, 9547 /*9547*/, 14025 /*14025*/, 14026 /*14026*/, 9549 /*9549*/, 14027 /*14027*/, 9550 /*9550*/, 5074 /*5074*/, 9551 /*9551*/, 9552 /*9552*/, 9553 /*9553*/, 9554 /*9554*/, 9555 /*9555*/, 14033 /*14033*/, 9556 /*9556*/, 9557 /*9557*/, 9558 /*9558*/, 9559 /*9559*/, 14037 /*14037*/, 9562 /*9562*/, 14042 /*14042*/, 9566 /*9566*/, 14045 /*14045*/, 14046 /*14046*/, 5094 /*5094*/, 9575 /*9575*/, 14056 /*14056*/, 5104 /*5104*/, 14064 /*14064*/, 14065 /*14065*/, 5118 /*5118*/, 5121 /*5121*/, 9599 /*9599*/, 5124 /*5124*/, 5127 /*5127*/, 14082 /*14082*/, 14087 /*14087*/, 14090 /*14090*/, 14091 /*14091*/, 9615 /*9615*/, 9617 /*9617*/, 14095 /*14095*/, 5142 /*5142*/, 14096 /*14096*/, 14097 /*14097*/, 14098 /*14098*/, 14100 /*14100*/, 14101 /*14101*/, 5147 /*5147*/, 14102 /*14102*/, 9625 /*9625*/, 14103 /*14103*/, 9626 /*9626*/, 14104 /*14104*/, 14105 /*14105*/, 14106 /*14106*/, 5152 /*5152*/, 14107 /*14107*/, 9632 /*9632*/, 14109 /*14109*/, 14110 /*14110*/, 14111 /*14111*/, 14112 /*14112*/, 14113 /*14113*/, 14114 /*14114*/, 14117 /*14117*/, 5167 /*5167*/, 14123 /*14123*/, 9646 /*9646*/, 9647 /*9647*/, 9648 /*9648*/, 9649 /*9649*/, 9650 /*9650*/, 9653 /*9653*/, 5177 /*5177*/, 9656 /*9656*/, 14134 /*14134*/, 14138 /*14138*/, 5184 /*5184*/, 5187 /*5187*/, 14150 /*14150*/, 14151 /*14151*/, 5202 /*5202*/, 14161 /*14161*/, 5207 /*5207*/, 14162 /*14162*/, 14163 /*14163*/, 14165 /*14165*/, 9690 /*9690*/, 5213 /*5213*/, 9694 /*9694*/, 5218 /*5218*/, 14172 /*14172*/, 14179 /*14179*/, 14180 /*14180*/, 9713 /*9713*/, 9714 /*9714*/, 14192 /*14192*/, 14197 /*14197*/, 766 /*766*/, 14203 /*14203*/, 9730 /*9730*/, 14209 /*14209*/, 9733 /*9733*/, 9735 /*9735*/, 5260 /*5260*/, 9738 /*9738*/, 14216 /*14216*/, 5273 /*5273*/, 9751 /*9751*/, 5276 /*5276*/, 9766 /*9766*/, 14251 /*14251*/, 823 /*823*/, 824 /*824*/, 825 /*825*/, 14272 /*14272*/, 5320 /*5320*/, 5325 /*5325*/, 14281 /*14281*/, 14284 /*14284*/, 5330 /*5330*/, 14285 /*14285*/, 14286 /*14286*/, 9828 /*9828*/, 9832 /*9832*/, 879 /*879*/, 882 /*882*/, 5360 /*5360*/, 9844 /*9844*/, 9845 /*9845*/, 898 /*898*/, 899 /*899*/, 900 /*900*/, 901 /*901*/, 903 /*903*/, 14335 /*14335*/, 904 /*904*/, 905 /*905*/, 9863 /*9863*/, 9868 /*9868*/, 9869 /*9869*/, 5393 /*5393*/, 9872 /*9872*/, 919 /*919*/, 920 /*920*/, 9875 /*9875*/, 9876 /*9876*/, 922 /*922*/, 9877 /*9877*/, 9878 /*9878*/, 924 /*924*/, 9879 /*9879*/, 925 /*925*/, 5403 /*5403*/, 9880 /*9880*/, 9881 /*9881*/, 927 /*927*/, 14359 /*14359*/, 928 /*928*/, 929 /*929*/, 933 /*933*/, 5413 /*5413*/, 941 /*941*/, 5422 /*5422*/, 14379 /*14379*/, 5437 /*5437*/, 9916 /*9916*/, 14395 /*14395*/, 14396 /*14396*/, 9920 /*9920*/, 14398 /*14398*/, 14399 /*14399*/, 14408 /*14408*/, 9932 /*9932*/, 14409 /*14409*/, 9943 /*9943*/, 9944 /*9944*/, 9948 /*9948*/, 9949 /*9949*/, 5473 /*5473*/, 9951 /*9951*/, 5474 /*5474*/, 9953 /*9953*/, 9954 /*9954*/, 5477 /*5477*/, 5479 /*5479*/, 14453 /*14453*/, 9978 /*9978*/, 14455 /*14455*/, 9979 /*9979*/, 9980 /*9980*/, 14457 /*14457*/, 9984 /*9984*/, 14462 /*14462*/, 14463 /*14463*/, 9993 /*9993*/, 5517 /*5517*/, 1041 /*1041*/, 14472 /*14472*/, 14473 /*14473*/, 5519 /*5519*/, 14476 /*14476*/, 14487 /*14487*/, 5535 /*5535*/, 1058 /*1058*/, 5540 /*5540*/, 10022 /*10022*/, 14500 /*14500*/, 10025 /*10025*/, 10031 /*10031*/, 10040 /*10040*/, 10042 /*10042*/, 5571 /*5571*/, 10051 /*10051*/, 10055 /*10055*/, 5579 /*5579*/, 5580 /*5580*/, 10057 /*10057*/, 5581 /*5581*/, 5582 /*5582*/, 5583 /*5583*/, 10062 /*10062*/, 10066 /*10066*/, 10067 /*10067*/, 1118 /*1118*/, 10073 /*10073*/, 10074 /*10074*/, 10075 /*10075*/, 10076 /*10076*/, 10077 /*10077*/, 1123 /*1123*/, 10078 /*10078*/, 10081 /*10081*/, 10084 /*10084*/, 10085 /*10085*/, 10086 /*10086*/, 10113 /*10113*/, 10114 /*10114*/, 1202 /*1202*/, 1208 /*1208*/, 1225 /*1225*/, 14661 /*14661*/, 1233 /*1233*/, 5717 /*5717*/, 1240 /*1240*/, 1241 /*1241*/, 1242 /*1242*/, 1243 /*1243*/, 14675 /*14675*/, 5721 /*5721*/, 5722 /*5722*/, 5723 /*5723*/, 5724 /*5724*/, 5725 /*5725*/, 1249 /*1249*/, 1250 /*1250*/, 1252 /*1252*/, 1253 /*1253*/, 10208 /*10208*/, 1254 /*1254*/, 1255 /*1255*/, 1256 /*1256*/, 1258 /*1258*/, 1260 /*1260*/, 10217 /*10217*/, 10224 /*10224*/, 14712 /*14712*/, 14713 /*14713*/, 10245 /*10245*/, 10247 /*10247*/, 14724 /*14724*/, 10254 /*10254*/, 14736 /*14736*/, 10264 /*10264*/, 10266 /*10266*/, 10270 /*10270*/, 10271 /*10271*/, 5794 /*5794*/, 14751 /*14751*/, 10275 /*10275*/, 5798 /*5798*/, 14759 /*14759*/, 14761 /*14761*/, 14779 /*14779*/, 14787 /*14787*/, 5834 /*5834*/, 14791 /*14791*/, 5839 /*5839*/, 10321 /*10321*/, 14804 /*14804*/, 10359 /*10359*/, 10360 /*10360*/, 10379 /*10379*/, 10380 /*10380*/, 10381 /*10381*/, 10382 /*10382*/, 10383 /*10383*/, 10384 /*10384*/, 10385 /*10385*/, 10386 /*10386*/, 10387 /*10387*/, 10388 /*10388*/, 10389 /*10389*/, 10390 /*10390*/, 10391 /*10391*/, 10392 /*10392*/, 10393 /*10393*/, 10394 /*10394*/, 10396 /*10396*/, 10398 /*10398*/, 10399 /*10399*/, 10400 /*10400*/, 14882 /*14882*/, 5938 /*5938*/, 10423 /*10423*/, 10424 /*10424*/, 1471 /*1471*/, 10444 /*10444*/, 10450 /*10450*/, 10457 /*10457*/, 5980 /*5980*/, 5981 /*5981*/, 10458 /*10458*/, 5982 /*5982*/, 5983 /*5983*/, 5984 /*5984*/, 5985 /*5985*/, 5986 /*5986*/, 10465 /*10465*/, 10466 /*10466*/, 10468 /*10468*/, 10469 /*10469*/, 5994 /*5994*/, 10473 /*10473*/, 10491 /*10491*/, 10501 /*10501*/, 10524 /*10524*/, 10525 /*10525*/, 10527 /*10527*/, 10534 /*10534*/, 10538 /*10538*/, 10554 /*10554*/, 10562 /*10562*/, 10563 /*10563*/, 10568 /*10568*/, 15066 /*15066*/, 15076 /*15076*/, 1651 /*1651*/, 15103 /*15103*/, 6153 /*6153*/, 6154 /*6154*/, 10641 /*10641*/, 6164 /*6164*/, 10649 /*10649*/, 10650 /*10650*/, 10651 /*10651*/, 10652 /*10652*/, 10653 /*10653*/, 10654 /*10654*/, 10657 /*10657*/, 6194 /*6194*/, 15158 /*15158*/, 10682 /*10682*/, 10683 /*10683*/, 10686 /*10686*/, 10687 /*10687*/, 15166 /*15166*/, 10691 /*10691*/, 15170 /*15170*/, 15171 /*15171*/, 10696 /*10696*/, 10697 /*10697*/, 10698 /*10698*/, 10699 /*10699*/, 10707 /*10707*/, 1758 /*1758*/, 1759 /*1759*/, 10720 /*10720*/, 6250 /*6250*/, 10730 /*10730*/, 10735 /*10735*/, 15212 /*15212*/, 15221 /*15221*/, 1793 /*1793*/, 1794 /*1794*/, 10752 /*10752*/, 10793 /*10793*/, 10808 /*10808*/, 10809 /*10809*/, 15287 /*15287*/, 6333 /*6333*/, 15297 /*15297*/, 15298 /*15298*/, 10821 /*10821*/, 10831 /*10831*/, 10832 /*10832*/, 10833 /*10833*/, 10834 /*10834*/, 10842 /*10842*/, 10846 /*10846*/, 6383 /*6383*/, 10879 /*10879*/, 1933 /*1933*/, 6414 /*6414*/, 10893 /*10893*/, 10894 /*10894*/, 15400 /*15400*/, 6476 /*6476*/, 10957 /*10957*/, 15445 /*15445*/, 10969 /*10969*/, 15449 /*15449*/, 10972 /*10972*/, 15450 /*15450*/, 10978 /*10978*/, 10979 /*10979*/, 10983 /*10983*/, 10991 /*10991*/, 6514 /*6514*/, 2037 /*2037*/, 10993 /*10993*/, 10995 /*10995*/, 2054 /*2054*/, 11008 /*11008*/, 11021 /*11021*/, 11022 /*11022*/, 11028 /*11028*/, 6555 /*6555*/, 6556 /*6556*/, 11038 /*11038*/, 6574 /*6574*/, 11060 /*11060*/, 6594 /*6594*/, 11085 /*11085*/, 11089 /*11089*/, 2136 /*2136*/, 2138 /*2138*/, 11095 /*11095*/, 2153 /*2153*/, 2154 /*2154*/, 15602 /*15602*/, 15604 /*15604*/, 11136 /*11136*/, 2253 /*2253*/, 11224 /*11224*/, 2274 /*2274*/, 11230 /*11230*/, 11233 /*11233*/, 2288 /*2288*/, 2313 /*2313*/, 2315 /*2315*/, 2316 /*2316*/, 2317 /*2317*/, 11285 /*11285*/, 11291 /*11291*/, 11293 /*11293*/, 11297 /*11297*/, 11332 /*11332*/, 11352 /*11352*/, 11365 /*11365*/, 11376 /*11376*/, 11406 /*11406*/, 6936 /*6936*/, 11419 /*11419*/, 6949 /*6949*/, 11426 /*11426*/, 6950 /*6950*/, 2474 /*2474*/, 6951 /*6951*/, 6952 /*6952*/, 6953 /*6953*/, 6957 /*6957*/, 15921 /*15921*/, 6991 /*6991*/, 6995 /*6995*/, 11494 /*11494*/, 7017 /*7017*/, 11496 /*11496*/, 11498 /*11498*/, 11502 /*11502*/, 7026 /*7026*/, 11504 /*11504*/, 7055 /*7055*/, 2595 /*2595*/, 2596 /*2596*/, 2597 /*2597*/, 2600 /*2600*/, 2601 /*2601*/, 2602 /*2602*/, 7094 /*7094*/, 7095 /*7095*/, 2636 /*2636*/, 2639 /*2639*/, 7117 /*7117*/, 2640 /*2640*/, 2641 /*2641*/, 2643 /*2643*/, 7120 /*7120*/, 7121 /*7121*/, 7122 /*7122*/, 11614 /*11614*/, 7179 /*7179*/, 2713 /*2713*/, 2727 /*2727*/, 2734 /*2734*/, 2758 /*2758*/, 2761 /*2761*/, 2764 /*2764*/, 7243 /*7243*/, 7245 /*7245*/, 2768 /*2768*/, 2769 /*2769*/, 7247 /*7247*/, 2770 /*2770*/, 2773 /*2773*/, 2774 /*2774*/, 2775 /*2775*/, 7253 /*7253*/, 2776 /*2776*/, 2794 /*2794*/, 2795 /*2795*/, 2796 /*2796*/, 2797 /*2797*/, 2799 /*2799*/, 2800 /*2800*/, 2801 /*2801*/, 2802 /*2802*/, 2805 /*2805*/, 2807 /*2807*/, 2833 /*2833*/, 2838 /*2838*/, 7337 /*7337*/, 7338 /*7338*/, 7339 /*7339*/, 7340 /*7340*/, 7341 /*7341*/, 7355 /*7355*/, 7356 /*7356*/, 7357 /*7357*/, 7358 /*7358*/, 7359 /*7359*/, 7360 /*7360*/, 7364 /*7364*/, 7365 /*7365*/, 7387 /*7387*/, 7394 /*7394*/, 7400 /*7400*/, 11880 /*11880*/, 7404 /*7404*/, 7406 /*7406*/, 2954 /*2954*/, 7438 /*7438*/, 2973 /*2973*/, 11947 /*11947*/, 3014 /*3014*/, 3017 /*3017*/, 3019 /*3019*/, 3020 /*3020*/, 3021 /*3021*/, 3022 /*3022*/, 3023 /*3023*/, 3025 /*3025*/, 3026 /*3026*/, 3033 /*3033*/, 3034 /*3034*/, 3035 /*3035*/, 3036 /*3036*/, 3037 /*3037*/, 3038 /*3038*/, 7516 /*7516*/, 3039 /*3039*/, 7517 /*7517*/, 3040 /*3040*/, 3042 /*3042*/, 3044 /*3044*/, 12046 /*12046*/, 3095 /*3095*/, 12052 /*12052*/, 12097 /*12097*/, 12120 /*12120*/, 12121 /*12121*/, 12122 /*12122*/, 12173 /*12173*/, 12174 /*12174*/, 12179 /*12179*/, 12187 /*12187*/, 12191 /*12191*/, 7728 /*7728*/, 7729 /*7729*/, 7730 /*7730*/, 12207 /*12207*/, 7731 /*7731*/, 7732 /*7732*/, 12209 /*12209*/, 7733 /*7733*/, 12210 /*12210*/, 7734 /*7734*/, 12212 /*12212*/, 12214 /*12214*/, 12215 /*12215*/, 12216 /*12216*/, 12217 /*12217*/, 12218 /*12218*/, 7742 /*7742*/, 12219 /*12219*/, 12220 /*12220*/, 7747 /*7747*/, 12227 /*12227*/, 7752 /*7752*/, 3297 /*3297*/, 3298 /*3298*/, 7778 /*7778*/, 7779 /*7779*/, 7780 /*7780*/, 7782 /*7782*/, 12262 /*12262*/, 12263 /*12263*/, 12264 /*12264*/, 12268 /*12268*/, 12271 /*12271*/, 7795 /*7795*/, 12272 /*12272*/, 12273 /*12273*/, 12274 /*12274*/, 7801 /*7801*/, 7802 /*7802*/, 7803 /*7803*/, 7804 /*7804*/, 12281 /*12281*/, 3337 /*3337*/, 16779 /*16779*/, 3357 /*3357*/, 16796 /*16796*/, 12334 /*12334*/, 3395 /*3395*/, 7874 /*7874*/, 3398 /*3398*/, 3405 /*3405*/, 3406 /*3406*/, 12364 /*12364*/, 16850 /*16850*/, 7902 /*7902*/, 7933 /*7933*/, 3456 /*3456*/, 7935 /*7935*/, 7937 /*7937*/, 3461 /*3461*/, 12423 /*12423*/, 7956 /*7956*/, 12435 /*12435*/, 3488 /*3488*/, 7965 /*7965*/, 3494 /*3494*/, 12457 /*12457*/, 12458 /*12458*/, 12459 /*12459*/, 12460 /*12460*/, 12461 /*12461*/, 12462 /*12462*/, 12463 /*12463*/, 3523 /*3523*/, 12494 /*12494*/, 12495 /*12495*/, 12510 /*12510*/, 3566 /*3566*/, 12521 /*12521*/, 12525 /*12525*/, 12526 /*12526*/, 3573 /*3573*/, 12527 /*12527*/, 12528 /*12528*/, 12529 /*12529*/, 12530 /*12530*/, 12538 /*12538*/, 3585 /*3585*/, 3586 /*3586*/, 3587 /*3587*/, 12549 /*12549*/, 12553 /*12553*/, 8076 /*8076*/, 12555 /*12555*/, 12575 /*12575*/, 12590 /*12590*/, 8114 /*8114*/, 12591 /*12591*/, 12593 /*12593*/, 8124 /*8124*/, 12610 /*12610*/, 3657 /*3657*/, 8143 /*8143*/, 12623 /*12623*/, 3673 /*3673*/, 12634 /*12634*/, 12636 /*12636*/, 12637 /*12637*/, 12638 /*12638*/, 12640 /*12640*/, 12641 /*12641*/, 12642 /*12642*/, 12644 /*12644*/, 12645 /*12645*/, 12658 /*12658*/, 12673 /*12673*/, 8205 /*8205*/, 12687 /*12687*/, 8212 /*8212*/, 8213 /*8213*/, 8218 /*8218*/, 8219 /*8219*/, 8220 /*8220*/, 8221 /*8221*/, 8222 /*8222*/, 8223 /*8223*/, 8225 /*8225*/, 3754 /*3754*/, 12713 /*12713*/, 12714 /*12714*/, 8238 /*8238*/, 12727 /*12727*/, 12730 /*12730*/, 12734 /*12734*/, 12738 /*12738*/, 12740 /*12740*/, 12753 /*12753*/, 8280 /*8280*/, 3813 /*3813*/, 3814 /*3814*/, 12770 /*12770*/, 12779 /*12779*/, 12781 /*12781*/, 3833 /*3833*/, 12789 /*12789*/, 12790 /*12790*/, 3854 /*3854*/, 12810 /*12810*/, 8335 /*8335*/, 3864 /*3864*/, 12842 /*12842*/, 8366 /*8366*/, 12844 /*12844*/, 12862 /*12862*/, 12887 /*12887*/, 3935 /*3935*/, 3937 /*3937*/, 3942 /*3942*/, 8422 /*8422*/, 12904 /*12904*/, 12909 /*12909*/, 8448 /*8448*/, 3974 /*3974*/, 8452 /*8452*/, 12930 /*12930*/, 3976 /*3976*/, 12932 /*12932*/, 3980 /*3980*/, 3982 /*3982*/, 3983 /*3983*/, 3985 /*3985*/, 12940 /*12940*/, 12942 /*12942*/, 12946 /*12946*/, 3996 /*3996*/, 12953 /*12953*/, 12955 /*12955*/, 12961 /*12961*/, 12976 /*12976*/, 8513 /*8513*/, 4039 /*4039*/, 13004 /*13004*/, 13009 /*13009*/, 8539 /*8539*/, 13018 /*13018*/, 13022 /*13022*/, 13030 /*13030*/, 13032 /*13032*/, 13046 /*13046*/, 13050 /*13050*/, 13061 /*13061*/, 8586 /*8586*/, 13064 /*13064*/, 8588 /*8588*/, 8590 /*8590*/, 8592 /*8592*/, 13074 /*13074*/, 13092 /*13092*/, 13093 /*13093*/, 13094 /*13094*/, 8618 /*8618*/, 13097 /*13097*/, 13121 /*13121*/, 13132 /*13132*/, 8656 /*8656*/, 8658 /*8658*/, 13137 /*13137*/, 13156 /*13156*/, 8688 /*8688*/, 13176 /*13176*/, 13180 /*13180*/, 8712 /*8712*/, 4260 /*4260*/, 4262 /*4262*/, 4263 /*4263*/, 4264 /*4264*/, 4267 /*4267*/, 4268 /*4268*/, 4269 /*4269*/, 4270 /*4270*/, 4271 /*4271*/, 4272 /*4272*/, 8754 /*8754*/, 13234 /*13234*/, 4287 /*4287*/, 4288 /*4288*/, 4290 /*4290*/, 4291 /*4291*/, 4292 /*4292*/, 4293 /*4293*/, 8771 /*8771*/, 4294 /*4294*/, 8772 /*8772*/, 4295 /*4295*/, 4296 /*4296*/, 4297 /*4297*/, 4298 /*4298*/, 4299 /*4299*/, 8785 /*8785*/, 8792 /*8792*/, 13270 /*13270*/, 4316 /*4316*/, 4317 /*4317*/, 4319 /*4319*/, 4320 /*4320*/, 8798 /*8798*/, 4322 /*4322*/, 4323 /*4323*/, 8800 /*8800*/, 4324 /*4324*/, 8802 /*8802*/, 4325 /*4325*/, 4326 /*4326*/, 4327 /*4327*/, 13282 /*13282*/, 13288 /*13288*/, 13289 /*13289*/, 13303 /*13303*/, 4354 /*4354*/, 8840 /*8840*/, 8844 /*8844*/, 8851 /*8851*/, 13328 /*13328*/, 8852 /*8852*/, 8853 /*8853*/, 8854 /*8854*/, 8858 /*8858*/, 4393 /*4393*/, 4394 /*4394*/, 4395 /*4395*/, 13349 /*13349*/, 4396 /*4396*/, 8873 /*8873*/, 4398 /*4398*/, 8875 /*8875*/, 4401 /*4401*/, 13361 /*13361*/, 13367 /*13367*/, 13376 /*13376*/, 4434 /*4434*/, 4450 /*4450*/, 8939 /*8939*/, 13426 /*13426*/, 8953 /*8953*/);
+UPDATE `npc_text` SET `BroadcastTextId0`=29493, `VerifiedBuild`=17658 WHERE `ID`=13458; -- 13458
+UPDATE `npc_text` SET `BroadcastTextId0`=51215, `VerifiedBuild`=17658 WHERE `ID`=17941; -- 17941
+UPDATE `npc_text` SET `BroadcastTextId0`=51314, `VerifiedBuild`=17658 WHERE `ID`=17961; -- 17961
+UPDATE `npc_text` SET `BroadcastTextId0`=51341, `VerifiedBuild`=17658 WHERE `ID`=17967; -- 17967
+UPDATE `npc_text` SET `BroadcastTextId0`=51452, `VerifiedBuild`=17658 WHERE `ID`=17976; -- 17976
+UPDATE `npc_text` SET `BroadcastTextId0`=51470, `VerifiedBuild`=17658 WHERE `ID`=17983; -- 17983
+UPDATE `npc_text` SET `BroadcastTextId0`=51541, `VerifiedBuild`=17658 WHERE `ID`=17993; -- 17993
+UPDATE `npc_text` SET `BroadcastTextId0`=51573, `VerifiedBuild`=17658 WHERE `ID`=18000; -- 18000
+UPDATE `npc_text` SET `BroadcastTextId0`=30147, `VerifiedBuild`=17658 WHERE `ID`=13548; -- 13548
+UPDATE `npc_text` SET `BroadcastTextId0`=51742, `VerifiedBuild`=17658 WHERE `ID`=18026; -- 18026
+UPDATE `npc_text` SET `BroadcastTextId0`=51896, `VerifiedBuild`=17658 WHERE `ID`=18046; -- 18046
+UPDATE `npc_text` SET `BroadcastTextId0`=51903, `VerifiedBuild`=17658 WHERE `ID`=18047; -- 18047
+UPDATE `npc_text` SET `BroadcastTextId0`=51906, `VerifiedBuild`=17658 WHERE `ID`=18050; -- 18050
+UPDATE `npc_text` SET `BroadcastTextId0`=14514, `VerifiedBuild`=17658 WHERE `ID`=9102; -- 9102
+UPDATE `npc_text` SET `BroadcastTextId0`=51946, `VerifiedBuild`=17658 WHERE `ID`=18063; -- 18063
+UPDATE `npc_text` SET `BroadcastTextId0`=51948, `VerifiedBuild`=17658 WHERE `ID`=18064; -- 18064
+UPDATE `npc_text` SET `BroadcastTextId0`=51955, `VerifiedBuild`=17658 WHERE `ID`=18067; -- 18067
+UPDATE `npc_text` SET `BroadcastTextId0`=51958, `VerifiedBuild`=17658 WHERE `ID`=18070; -- 18070
+UPDATE `npc_text` SET `BroadcastTextId0`=51960, `VerifiedBuild`=17658 WHERE `ID`=18072; -- 18072
+UPDATE `npc_text` SET `BroadcastTextId0`=51969, `VerifiedBuild`=17658 WHERE `ID`=18076; -- 18076
+UPDATE `npc_text` SET `BroadcastTextId0`=52044, `VerifiedBuild`=17658 WHERE `ID`=18086; -- 18086
+UPDATE `npc_text` SET `BroadcastTextId0`=52050, `VerifiedBuild`=17658 WHERE `ID`=18087; -- 18087
+UPDATE `npc_text` SET `BroadcastTextId0`=52051, `VerifiedBuild`=17658 WHERE `ID`=18088; -- 18088
+UPDATE `npc_text` SET `BroadcastTextId0`=52052, `VerifiedBuild`=17658 WHERE `ID`=18089; -- 18089
+UPDATE `npc_text` SET `BroadcastTextId0`=52053, `VerifiedBuild`=17658 WHERE `ID`=18090; -- 18090
+UPDATE `npc_text` SET `BroadcastTextId0`=52054, `VerifiedBuild`=17658 WHERE `ID`=18091; -- 18091
+UPDATE `npc_text` SET `BroadcastTextId0`=30433, `VerifiedBuild`=17658 WHERE `ID`=13615; -- 13615
+UPDATE `npc_text` SET `BroadcastTextId0`=52055, `VerifiedBuild`=17658 WHERE `ID`=18092; -- 18092
+UPDATE `npc_text` SET `BroadcastTextId0`=52056, `VerifiedBuild`=17658 WHERE `ID`=18093; -- 18093
+UPDATE `npc_text` SET `BroadcastTextId0`=52057, `VerifiedBuild`=17658 WHERE `ID`=18094; -- 18094
+UPDATE `npc_text` SET `BroadcastTextId0`=52059, `VerifiedBuild`=17658 WHERE `ID`=18095; -- 18095
+UPDATE `npc_text` SET `BroadcastTextId0`=52060, `VerifiedBuild`=17658 WHERE `ID`=18096; -- 18096
+UPDATE `npc_text` SET `BroadcastTextId0`=52061, `VerifiedBuild`=17658 WHERE `ID`=18097; -- 18097
+UPDATE `npc_text` SET `BroadcastTextId0`=52062, `VerifiedBuild`=17658 WHERE `ID`=18098; -- 18098
+UPDATE `npc_text` SET `BroadcastTextId0`=52064, `VerifiedBuild`=17658 WHERE `ID`=18099; -- 18099
+UPDATE `npc_text` SET `BroadcastTextId0`=52065, `VerifiedBuild`=17658 WHERE `ID`=18100; -- 18100
+UPDATE `npc_text` SET `BroadcastTextId0`=52067, `VerifiedBuild`=17658 WHERE `ID`=18101; -- 18101
+UPDATE `npc_text` SET `BroadcastTextId0`=52068, `VerifiedBuild`=17658 WHERE `ID`=18102; -- 18102
+UPDATE `npc_text` SET `BroadcastTextId0`=52069, `VerifiedBuild`=17658 WHERE `ID`=18103; -- 18103
+UPDATE `npc_text` SET `BroadcastTextId0`=52070, `VerifiedBuild`=17658 WHERE `ID`=18104; -- 18104
+UPDATE `npc_text` SET `BroadcastTextId0`=52072, `VerifiedBuild`=17658 WHERE `ID`=18105; -- 18105
+UPDATE `npc_text` SET `BroadcastTextId0`=52074, `VerifiedBuild`=17658 WHERE `ID`=18106; -- 18106
+UPDATE `npc_text` SET `BroadcastTextId0`=52075, `VerifiedBuild`=17658 WHERE `ID`=18107; -- 18107
+UPDATE `npc_text` SET `BroadcastTextId0`=52078, `VerifiedBuild`=17658 WHERE `ID`=18108; -- 18108
+UPDATE `npc_text` SET `BroadcastTextId0`=52251, `VerifiedBuild`=17658 WHERE `ID`=18130; -- 18130
+UPDATE `npc_text` SET `BroadcastTextId0`=52253, `VerifiedBuild`=17658 WHERE `ID`=18131; -- 18131
+UPDATE `npc_text` SET `BroadcastTextId0`=52340, `VerifiedBuild`=17658 WHERE `ID`=18140; -- 18140
+UPDATE `npc_text` SET `BroadcastTextId0`=52351, `VerifiedBuild`=17658 WHERE `ID`=18142; -- 18142
+UPDATE `npc_text` SET `BroadcastTextId0`=52353, `BroadcastTextId1`=52354, `BroadcastTextId2`=52355, `BroadcastTextId3`=52356, `VerifiedBuild`=17658 WHERE `ID`=18143; -- 18143
+UPDATE `npc_text` SET `BroadcastTextId0`=52364, `VerifiedBuild`=17658 WHERE `ID`=18149; -- 18149
+UPDATE `npc_text` SET `BroadcastTextId0`=52369, `VerifiedBuild`=17658 WHERE `ID`=18153; -- 18153
+UPDATE `npc_text` SET `BroadcastTextId0`=52370, `VerifiedBuild`=17658 WHERE `ID`=18154; -- 18154
+UPDATE `npc_text` SET `BroadcastTextId0`=30804, `VerifiedBuild`=17658 WHERE `ID`=13690; -- 13690
+UPDATE `npc_text` SET `BroadcastTextId0`=30864, `VerifiedBuild`=17658 WHERE `ID`=13702; -- 13702
+UPDATE `npc_text` SET `BroadcastTextId0`=7457, `VerifiedBuild`=17658 WHERE `ID`=4780; -- 4780
+UPDATE `npc_text` SET `BroadcastTextId0`=7458, `VerifiedBuild`=17658 WHERE `ID`=4781; -- 4781
+UPDATE `npc_text` SET `BroadcastTextId0`=52823, `VerifiedBuild`=17658 WHERE `ID`=18224; -- 18224
+UPDATE `npc_text` SET `BroadcastTextId0`=52893, `VerifiedBuild`=17658 WHERE `ID`=18239; -- 18239
+UPDATE `npc_text` SET `BroadcastTextId0`=52895, `VerifiedBuild`=17658 WHERE `ID`=18240; -- 18240
+UPDATE `npc_text` SET `BroadcastTextId0`=52929, `VerifiedBuild`=17658 WHERE `ID`=18247; -- 18247
+UPDATE `npc_text` SET `BroadcastTextId0`=52931, `VerifiedBuild`=17658 WHERE `ID`=18248; -- 18248
+UPDATE `npc_text` SET `BroadcastTextId0`=52949, `VerifiedBuild`=17658 WHERE `ID`=18258; -- 18258
+UPDATE `npc_text` SET `BroadcastTextId0`=52952, `VerifiedBuild`=17658 WHERE `ID`=18259; -- 18259
+UPDATE `npc_text` SET `BroadcastTextId0`=7481, `VerifiedBuild`=17658 WHERE `ID`=4833; -- 4833
+UPDATE `npc_text` SET `BroadcastTextId0`=7493, `VerifiedBuild`=17658 WHERE `ID`=4837; -- 4837
+UPDATE `npc_text` SET `BroadcastTextId0`=53000, `VerifiedBuild`=17658 WHERE `ID`=18276; -- 18276
+UPDATE `npc_text` SET `BroadcastTextId0`=53018, `VerifiedBuild`=17658 WHERE `ID`=18280; -- 18280
+UPDATE `npc_text` SET `BroadcastTextId0`=53027, `VerifiedBuild`=17658 WHERE `ID`=18284; -- 18284
+UPDATE `npc_text` SET `BroadcastTextId0`=53037, `VerifiedBuild`=17658 WHERE `ID`=18286; -- 18286
+UPDATE `npc_text` SET `BroadcastTextId0`=53052, `BroadcastTextId1`=53053, `BroadcastTextId2`=53054, `BroadcastTextId3`=53055, `VerifiedBuild`=17658 WHERE `ID`=18288; -- 18288
+UPDATE `npc_text` SET `BroadcastTextId0`=53056, `VerifiedBuild`=17658 WHERE `ID`=18289; -- 18289
+UPDATE `npc_text` SET `BroadcastTextId0`=53062, `VerifiedBuild`=17658 WHERE `ID`=18291; -- 18291
+UPDATE `npc_text` SET `BroadcastTextId0`=53079, `VerifiedBuild`=17658 WHERE `ID`=18301; -- 18301
+UPDATE `npc_text` SET `BroadcastTextId0`=53140, `VerifiedBuild`=17658 WHERE `ID`=18320; -- 18320
+UPDATE `npc_text` SET `BroadcastTextId0`=53142, `VerifiedBuild`=17658 WHERE `ID`=18321; -- 18321
+UPDATE `npc_text` SET `BroadcastTextId0`=31371, `VerifiedBuild`=17658 WHERE `ID`=13846; -- 13846
+UPDATE `npc_text` SET `BroadcastTextId1`=0, `VerifiedBuild`=17658 WHERE `ID`=13848; -- 13848
+UPDATE `npc_text` SET `BroadcastTextId0`=53312, `VerifiedBuild`=17658 WHERE `ID`=18348; -- 18348
+UPDATE `npc_text` SET `BroadcastTextId0`=53319, `VerifiedBuild`=17658 WHERE `ID`=18350; -- 18350
+UPDATE `npc_text` SET `BroadcastTextId0`=53323, `VerifiedBuild`=17658 WHERE `ID`=18352; -- 18352
+UPDATE `npc_text` SET `BroadcastTextId0`=53328, `VerifiedBuild`=17658 WHERE `ID`=18353; -- 18353
+UPDATE `npc_text` SET `BroadcastTextId0`=53399, `VerifiedBuild`=17658 WHERE `ID`=18363; -- 18363
+UPDATE `npc_text` SET `BroadcastTextId0`=53401, `VerifiedBuild`=17658 WHERE `ID`=18364; -- 18364
+UPDATE `npc_text` SET `BroadcastTextId0`=53402, `VerifiedBuild`=17658 WHERE `ID`=18365; -- 18365
+UPDATE `npc_text` SET `BroadcastTextId0`=53404, `VerifiedBuild`=17658 WHERE `ID`=18366; -- 18366
+UPDATE `npc_text` SET `BroadcastTextId0`=53414, `VerifiedBuild`=17658 WHERE `ID`=18369; -- 18369
+UPDATE `npc_text` SET `BroadcastTextId0`=53416, `VerifiedBuild`=17658 WHERE `ID`=18370; -- 18370
+UPDATE `npc_text` SET `BroadcastTextId0`=53418, `VerifiedBuild`=17658 WHERE `ID`=18371; -- 18371
+UPDATE `npc_text` SET `BroadcastTextId0`=53421, `VerifiedBuild`=17658 WHERE `ID`=18372; -- 18372
+UPDATE `npc_text` SET `Probability0`=1, `VerifiedBuild`=17658 WHERE `ID` IN (4991 /*4991*/, 9717 /*9717*/, 11018 /*11018*/, 6932 /*6932*/, 2836 /*2836*/, 2837 /*2837*/);
+UPDATE `npc_text` SET `BroadcastTextId0`=7672, `VerifiedBuild`=17658 WHERE `ID`=5011; -- 5011
+UPDATE `npc_text` SET `BroadcastTextId0`=7674, `VerifiedBuild`=17658 WHERE `ID`=5012; -- 5012
+UPDATE `npc_text` SET `BroadcastTextId0`=53754, `VerifiedBuild`=17658 WHERE `ID`=18444; -- 18444
+UPDATE `npc_text` SET `BroadcastTextId0`=32089, `VerifiedBuild`=17658 WHERE `ID`=13969; -- 13969
+UPDATE `npc_text` SET `BroadcastTextId0`=2503, `VerifiedBuild`=17658 WHERE `ID`=539; -- 539
+UPDATE `npc_text` SET `BroadcastTextId0`=32096, `VerifiedBuild`=17658 WHERE `ID`=13972; -- 13972
+UPDATE `npc_text` SET `BroadcastTextId0`=32097, `VerifiedBuild`=17658 WHERE `ID`=13973; -- 13973
+UPDATE `npc_text` SET `BroadcastTextId0`=53773, `VerifiedBuild`=17658 WHERE `ID`=18452; -- 18452
+UPDATE `npc_text` SET `BroadcastTextId0`=32113, `VerifiedBuild`=17658 WHERE `ID`=13977; -- 13977
+UPDATE `npc_text` SET `Probability0`=1, `BroadcastTextId0`=76224, `VerifiedBuild`=17658 WHERE `ID`=22932; -- 22932
+UPDATE `npc_text` SET `BroadcastTextId0`=32123, `VerifiedBuild`=17658 WHERE `ID`=13982; -- 13982
+UPDATE `npc_text` SET `BroadcastTextId0`=2524, `VerifiedBuild`=17658 WHERE `ID`=559; -- 559
+UPDATE `npc_text` SET `BroadcastTextId0`=32139, `VerifiedBuild`=17658 WHERE `ID`=13994; -- 13994
+UPDATE `npc_text` SET `BroadcastTextId0`=15816, `VerifiedBuild`=17658 WHERE `ID`=9530; -- 9530
+UPDATE `npc_text` SET `Probability0`=0, `Probability1`=1, `BroadcastTextId1`=50625, `VerifiedBuild`=17658 WHERE `ID`=9531; -- 9531
+UPDATE `npc_text` SET `BroadcastTextId1`=50625, `VerifiedBuild`=17658 WHERE `ID`=14010; -- 14010
+UPDATE `npc_text` SET `BroadcastTextId0`=15845, `VerifiedBuild`=17658 WHERE `ID`=9544; -- 9544
+UPDATE `npc_text` SET `BroadcastTextId0`=54045, `VerifiedBuild`=17658 WHERE `ID`=18508; -- 18508
+UPDATE `npc_text` SET `BroadcastTextId0`=54082, `VerifiedBuild`=17658 WHERE `ID`=18512; -- 18512
+UPDATE `npc_text` SET `BroadcastTextId0`=32320, `VerifiedBuild`=17658 WHERE `ID`=14040; -- 14040
+UPDATE `npc_text` SET `BroadcastTextId0`=27932, `VerifiedBuild`=17658 WHERE `ID`=18532; -- 18532
+UPDATE `npc_text` SET `BroadcastTextId0`=32674, `VerifiedBuild`=17658 WHERE `ID`=14108; -- 14108
+UPDATE `npc_text` SET `BroadcastTextId0`=54524, `VerifiedBuild`=17658 WHERE `ID`=18593; -- 18593
+UPDATE `npc_text` SET `BroadcastTextId0`=32780, `VerifiedBuild`=17658 WHERE `ID`=14125; -- 14125
+UPDATE `npc_text` SET `BroadcastTextId0`=32778, `VerifiedBuild`=17658 WHERE `ID`=14126; -- 14126
+UPDATE `npc_text` SET `BroadcastTextId0`=54642, `VerifiedBuild`=17658 WHERE `ID`=18613; -- 18613
+UPDATE `npc_text` SET `BroadcastTextId0`=16176, `VerifiedBuild`=17658 WHERE `ID`=9686; -- 9686
+UPDATE `npc_text` SET `BroadcastTextId0`=33040, `VerifiedBuild`=17658 WHERE `ID`=14194; -- 14194
+UPDATE `npc_text` SET `BroadcastTextId0`=2750, `VerifiedBuild`=17658 WHERE `ID`=764; -- 764
+UPDATE `npc_text` SET `BroadcastTextId0`=2821, `VerifiedBuild`=17658 WHERE `ID`=820; -- 820
+UPDATE `npc_text` SET `BroadcastTextId0`=16654, `VerifiedBuild`=17658 WHERE `ID`=9805; -- 9805
+UPDATE `npc_text` SET `BroadcastTextId0`=33327, `VerifiedBuild`=17658 WHERE `ID`=14304; -- 14304
+UPDATE `npc_text` SET `BroadcastTextId0`=33349, `VerifiedBuild`=17658 WHERE `ID`=14315; -- 14315
+UPDATE `npc_text` SET `BroadcastTextId0`=33350, `VerifiedBuild`=17658 WHERE `ID`=14316; -- 14316
+UPDATE `npc_text` SET `BroadcastTextId0`=33410, `VerifiedBuild`=17658 WHERE `ID`=14327; -- 14327
+UPDATE `npc_text` SET `BroadcastTextId0`=44630, `BroadcastTextId1`=0, `BroadcastTextId2`=0, `VerifiedBuild`=17658 WHERE `ID`=902; -- 902
+UPDATE `npc_text` SET `BroadcastTextId0`=2927, `VerifiedBuild`=17658 WHERE `ID`=906; -- 906
+UPDATE `npc_text` SET `BroadcastTextId0`=2941, `VerifiedBuild`=17658 WHERE `ID`=918; -- 918
+UPDATE `npc_text` SET `BroadcastTextId0`=33572, `VerifiedBuild`=17658 WHERE `ID`=14351; -- 14351
+UPDATE `npc_text` SET `BroadcastTextId0`=2955, `VerifiedBuild`=17658 WHERE `ID`=921; -- 921
+UPDATE `npc_text` SET `BroadcastTextId0`=2957, `VerifiedBuild`=17658 WHERE `ID`=923; -- 923
+UPDATE `npc_text` SET `BroadcastTextId0`=3009, `VerifiedBuild`=17658 WHERE `ID`=940; -- 940
+UPDATE `npc_text` SET `BroadcastTextId2`=33749, `VerifiedBuild`=17658 WHERE `ID`=14384; -- 14384
+UPDATE `npc_text` SET `BroadcastTextId0`=17412, `VerifiedBuild`=17658 WHERE `ID`=9921; -- 9921
+UPDATE `npc_text` SET `BroadcastTextId0`=56178, `VerifiedBuild`=17658 WHERE `ID`=18879; -- 18879
+UPDATE `npc_text` SET `BroadcastTextId0`=17472, `VerifiedBuild`=17658 WHERE `ID`=9933; -- 9933
+UPDATE `npc_text` SET `BroadcastTextId0`=16444, `VerifiedBuild`=17658 WHERE `ID`=9962; -- 9962
+UPDATE `npc_text` SET `BroadcastTextId0`=56546, `VerifiedBuild`=17658 WHERE `ID`=18941; -- 18941
+UPDATE `npc_text` SET `BroadcastTextId0`=56547, `VerifiedBuild`=17658 WHERE `ID`=18942; -- 18942
+UPDATE `npc_text` SET `BroadcastTextId0`=56672, `VerifiedBuild`=17658 WHERE `ID`=18965; -- 18965
+UPDATE `npc_text` SET `BroadcastTextId0`=56673, `VerifiedBuild`=17658 WHERE `ID`=18966; -- 18966
+UPDATE `npc_text` SET `BroadcastTextId0`=34469, `VerifiedBuild`=17658 WHERE `ID`=14508; -- 14508
+UPDATE `npc_text` SET `BroadcastTextId0`=34472, `VerifiedBuild`=17658 WHERE `ID`=14510; -- 14510
+UPDATE `npc_text` SET `BroadcastTextId0`=56887, `VerifiedBuild`=17658 WHERE `ID`=18991; -- 18991
+UPDATE `npc_text` SET `BroadcastTextId0`=34485, `VerifiedBuild`=17658 WHERE `ID`=14517; -- 14517
+UPDATE `npc_text` SET `BroadcastTextId0`=56942, `VerifiedBuild`=17658 WHERE `ID`=19017; -- 19017
+UPDATE `npc_text` SET `BroadcastTextId0`=34584, `VerifiedBuild`=17658 WHERE `ID`=14541; -- 14541
+UPDATE `npc_text` SET `BroadcastTextId0`=34637, `VerifiedBuild`=17658 WHERE `ID`=14547; -- 14547
+UPDATE `npc_text` SET `BroadcastTextId0`=34638, `VerifiedBuild`=17658 WHERE `ID`=14548; -- 14548
+UPDATE `npc_text` SET `Probability0`=0, `Probability1`=1, `BroadcastTextId1`=50549, `VerifiedBuild`=17658 WHERE `ID`=10071; -- 10071
+UPDATE `npc_text` SET `Probability0`=0, `Probability1`=1, `BroadcastTextId1`=50367, `VerifiedBuild`=17658 WHERE `ID`=10101; -- 10101
+UPDATE `npc_text` SET `BroadcastTextId0`=18360, `VerifiedBuild`=17658 WHERE `ID`=10106; -- 10106
+UPDATE `npc_text` SET `BroadcastTextId0`=35011, `VerifiedBuild`=17658 WHERE `ID`=14612; -- 14612
+UPDATE `npc_text` SET `BroadcastTextId0`=3368, `BroadcastTextId1`=3369, `VerifiedBuild`=17658 WHERE `ID`=1231; -- 1231
+UPDATE `npc_text` SET `BroadcastTextId0`=3371, `BroadcastTextId1`=3372, `VerifiedBuild`=17658 WHERE `ID`=1232; -- 1232
+UPDATE `npc_text` SET `BroadcastTextId0`=3379, `BroadcastTextId1`=3380, `BroadcastTextId2`=3381, `VerifiedBuild`=17658 WHERE `ID`=1236; -- 1236
+UPDATE `npc_text` SET `BroadcastTextId0`=3382, `VerifiedBuild`=17658 WHERE `ID`=1237; -- 1237
+UPDATE `npc_text` SET `BroadcastTextId0`=3385, `VerifiedBuild`=17658 WHERE `ID`=1238; -- 1238
+UPDATE `npc_text` SET `BroadcastTextId0`=3386, `VerifiedBuild`=17658 WHERE `ID`=1239; -- 1239
+UPDATE `npc_text` SET `BroadcastTextId0`=3410, `VerifiedBuild`=17658 WHERE `ID`=1257; -- 1257
+UPDATE `npc_text` SET `BroadcastTextId0`=3412, `VerifiedBuild`=17658 WHERE `ID`=1259; -- 1259
+UPDATE `npc_text` SET `BroadcastTextId0`=8440, `VerifiedBuild`=17658 WHERE `ID`=5873; -- 5873
+UPDATE `npc_text` SET `BroadcastTextId0`=8443, `VerifiedBuild`=17658 WHERE `ID`=5875; -- 5875
+UPDATE `npc_text` SET `BroadcastTextId0`=8445, `VerifiedBuild`=17658 WHERE `ID`=5877; -- 5877
+UPDATE `npc_text` SET `BroadcastTextId0`=36055, `VerifiedBuild`=17658 WHERE `ID`=14832; -- 14832
+UPDATE `npc_text` SET `BroadcastTextId0`=8447, `VerifiedBuild`=17658 WHERE `ID`=5879; -- 5879
+UPDATE `npc_text` SET `BroadcastTextId0`=36058, `VerifiedBuild`=17658 WHERE `ID`=14835; -- 14835
+UPDATE `npc_text` SET `BroadcastTextId0`=36066, `VerifiedBuild`=17658 WHERE `ID`=14839; -- 14839
+UPDATE `npc_text` SET `BroadcastTextId0`=19132, `VerifiedBuild`=17658 WHERE `ID`=10363; -- 10363
+UPDATE `npc_text` SET `BroadcastTextId0`=36069, `VerifiedBuild`=17658 WHERE `ID`=14841; -- 14841
+UPDATE `npc_text` SET `BroadcastTextId0`=19134, `VerifiedBuild`=17658 WHERE `ID`=10365; -- 10365
+UPDATE `npc_text` SET `BroadcastTextId0`=36076, `VerifiedBuild`=17658 WHERE `ID`=14848; -- 14848
+UPDATE `npc_text` SET `BroadcastTextId0`=36253, `VerifiedBuild`=17658 WHERE `ID`=14897; -- 14897
+UPDATE `npc_text` SET `BroadcastTextId0`=36332, `VerifiedBuild`=17658 WHERE `ID`=14942; -- 14942
+UPDATE `npc_text` SET `BroadcastTextId0`=19655, `VerifiedBuild`=17658 WHERE `ID`=10528; -- 10528
+UPDATE `npc_text` SET `BroadcastTextId0`=19656, `VerifiedBuild`=17658 WHERE `ID`=10529; -- 10529
+UPDATE `npc_text` SET `BroadcastTextId0`=36651, `VerifiedBuild`=17658 WHERE `ID`=15040; -- 15040
+UPDATE `npc_text` SET `BroadcastTextId0`=36669, `VerifiedBuild`=17658 WHERE `ID`=15042; -- 15042
+UPDATE `npc_text` SET `BroadcastTextId0`=19861, `VerifiedBuild`=17658 WHERE `ID`=10612; -- 10612
+UPDATE `npc_text` SET `BroadcastTextId0`=36939, `VerifiedBuild`=17658 WHERE `ID`=15111; -- 15111
+UPDATE `npc_text` SET `BroadcastTextId0`=4309, `VerifiedBuild`=17658 WHERE `ID`=1853; -- 1853
+UPDATE `npc_text` SET `BroadcastTextId0`=8918, `VerifiedBuild`=17658 WHERE `ID`=6334; -- 6334
+UPDATE `npc_text` SET `BroadcastTextId0`=38325, `VerifiedBuild`=17658 WHERE `ID`=15324; -- 15324
+UPDATE `npc_text` SET `BroadcastTextId0`=38326, `VerifiedBuild`=17658 WHERE `ID`=15325; -- 15325
+UPDATE `npc_text` SET `BroadcastTextId0`=38394, `VerifiedBuild`=17658 WHERE `ID`=15345; -- 15345
+UPDATE `npc_text` SET `BroadcastTextId0`=38398, `VerifiedBuild`=17658 WHERE `ID`=15347; -- 15347
+UPDATE `npc_text` SET `BroadcastTextId0`=38477, `VerifiedBuild`=17658 WHERE `ID`=15371; -- 15371
+UPDATE `npc_text` SET `BroadcastTextId0`=38478, `VerifiedBuild`=17658 WHERE `ID`=15372; -- 15372
+UPDATE `npc_text` SET `BroadcastTextId0`=38479, `VerifiedBuild`=17658 WHERE `ID`=15373; -- 15373
+UPDATE `npc_text` SET `BroadcastTextId0`=38480, `VerifiedBuild`=17658 WHERE `ID`=15374; -- 15374
+UPDATE `npc_text` SET `BroadcastTextId0`=38481, `VerifiedBuild`=17658 WHERE `ID`=15375; -- 15375
+UPDATE `npc_text` SET `BroadcastTextId0`=38482, `VerifiedBuild`=17658 WHERE `ID`=15376; -- 15376
+UPDATE `npc_text` SET `BroadcastTextId0`=38575, `VerifiedBuild`=17658 WHERE `ID`=15394; -- 15394
+UPDATE `npc_text` SET `BroadcastTextId0`=38809, `VerifiedBuild`=17658 WHERE `ID`=15446; -- 15446
+UPDATE `npc_text` SET `BroadcastTextId0`=38810, `VerifiedBuild`=17658 WHERE `ID`=15447; -- 15447
+UPDATE `npc_text` SET `BroadcastTextId0`=38813, `VerifiedBuild`=17658 WHERE `ID`=15451; -- 15451
+UPDATE `npc_text` SET `BroadcastTextId0`=38814, `VerifiedBuild`=17658 WHERE `ID`=15452; -- 15452
+UPDATE `npc_text` SET `BroadcastTextId0`=38815, `VerifiedBuild`=17658 WHERE `ID`=15453; -- 15453
+UPDATE `npc_text` SET `BroadcastTextId0`=38816, `VerifiedBuild`=17658 WHERE `ID`=15454; -- 15454
+UPDATE `npc_text` SET `BroadcastTextId0`=39088, `VerifiedBuild`=17658 WHERE `ID`=15504; -- 15504
+UPDATE `npc_text` SET `BroadcastTextId0`=21829, `VerifiedBuild`=17658 WHERE `ID`=11064; -- 11064
+UPDATE `npc_text` SET `BroadcastTextId0`=39234, `VerifiedBuild`=17658 WHERE `ID`=15559; -- 15559
+UPDATE `npc_text` SET `BroadcastTextId0`=39239, `VerifiedBuild`=17658 WHERE `ID`=15561; -- 15561
+UPDATE `npc_text` SET `BroadcastTextId0`=4550, `VerifiedBuild`=17658 WHERE `ID`=2133; -- 2133
+UPDATE `npc_text` SET `BroadcastTextId0`=4552, `VerifiedBuild`=17658 WHERE `ID`=2134; -- 2134
+UPDATE `npc_text` SET `BroadcastTextId0`=39402, `VerifiedBuild`=17658 WHERE `ID`=15603; -- 15603
+UPDATE `npc_text` SET `BroadcastTextId0`=4584, `VerifiedBuild`=17658 WHERE `ID`=2193; -- 2193
+UPDATE `npc_text` SET `BroadcastTextId0`=4620, `VerifiedBuild`=17658 WHERE `ID`=2277; -- 2277
+UPDATE `npc_text` SET `BroadcastTextId0`=9148, `VerifiedBuild`=17658 WHERE `ID`=6755; -- 6755
+UPDATE `npc_text` SET `BroadcastTextId0`=39737, `VerifiedBuild`=17658 WHERE `ID`=15715; -- 15715
+UPDATE `npc_text` SET `BroadcastTextId0`=39814, `VerifiedBuild`=17658 WHERE `ID`=15742; -- 15742
+UPDATE `npc_text` SET `BroadcastTextId0`=4645, `VerifiedBuild`=17658 WHERE `ID`=2314; -- 2314
+UPDATE `npc_text` SET `BroadcastTextId0`=4653, `VerifiedBuild`=17658 WHERE `ID`=2318; -- 2318
+UPDATE `npc_text` SET `BroadcastTextId1`=22298, `VerifiedBuild`=17658 WHERE `ID`=11287; -- 11287
+UPDATE `npc_text` SET `BroadcastTextId0`=39989, `VerifiedBuild`=17658 WHERE `ID`=15771; -- 15771
+UPDATE `npc_text` SET `BroadcastTextId0`=40265, `VerifiedBuild`=17658 WHERE `ID`=15821; -- 15821
+UPDATE `npc_text` SET `BroadcastTextId0`=40288, `VerifiedBuild`=17658 WHERE `ID`=15828; -- 15828
+UPDATE `npc_text` SET `BroadcastTextId0`=40310, `VerifiedBuild`=17658 WHERE `ID`=15835; -- 15835
+UPDATE `npc_text` SET `BroadcastTextId0`=40330, `VerifiedBuild`=17658 WHERE `ID`=15838; -- 15838
+UPDATE `npc_text` SET `BroadcastTextId0`=40383, `VerifiedBuild`=17658 WHERE `ID`=15845; -- 15845
+UPDATE `npc_text` SET `BroadcastTextId0`=40428, `VerifiedBuild`=17658 WHERE `ID`=15857; -- 15857
+UPDATE `npc_text` SET `BroadcastTextId0`=40453, `VerifiedBuild`=17658 WHERE `ID`=15867; -- 15867
+UPDATE `npc_text` SET `BroadcastTextId0`=40502, `VerifiedBuild`=17658 WHERE `ID`=15883; -- 15883
+UPDATE `npc_text` SET `BroadcastTextId0`=40516, `VerifiedBuild`=17658 WHERE `ID`=15887; -- 15887
+UPDATE `npc_text` SET `BroadcastTextId0`=40524, `VerifiedBuild`=17658 WHERE `ID`=15893; -- 15893
+UPDATE `npc_text` SET `BroadcastTextId0`=9531, `VerifiedBuild`=17658 WHERE `ID`=6948; -- 6948
+UPDATE `npc_text` SET `BroadcastTextId0`=40591, `VerifiedBuild`=17658 WHERE `ID`=15906; -- 15906
+UPDATE `npc_text` SET `BroadcastTextId0`=9555, `VerifiedBuild`=17658 WHERE `ID`=6959; -- 6959
+UPDATE `npc_text` SET `BroadcastTextId0`=40731, `VerifiedBuild`=17658 WHERE `ID`=15932; -- 15932
+UPDATE `npc_text` SET `BroadcastTextId0`=40733, `VerifiedBuild`=17658 WHERE `ID`=15933; -- 15933
+UPDATE `npc_text` SET `BroadcastTextId0`=40813, `VerifiedBuild`=17658 WHERE `ID`=15946; -- 15946
+UPDATE `npc_text` SET `BroadcastTextId0`=22523, `VerifiedBuild`=17658 WHERE `ID`=11469; -- 11469
+UPDATE `npc_text` SET `BroadcastTextId0`=22527, `VerifiedBuild`=17658 WHERE `ID`=11472; -- 11472
+UPDATE `npc_text` SET `BroadcastTextId0`=40956, `VerifiedBuild`=17658 WHERE `ID`=15965; -- 15965
+UPDATE `npc_text` SET `BroadcastTextId0`=9659, `VerifiedBuild`=17658 WHERE `ID`=7011; -- 7011
+UPDATE `npc_text` SET `BroadcastTextId0`=22548, `BroadcastTextId1`=52043, `VerifiedBuild`=17658 WHERE `ID`=11492; -- 11492
+UPDATE `npc_text` SET `BroadcastTextId0`=40982, `VerifiedBuild`=17658 WHERE `ID`=15970; -- 15970
+UPDATE `npc_text` SET `BroadcastTextId0`=41042, `VerifiedBuild`=17658 WHERE `ID`=15979; -- 15979
+UPDATE `npc_text` SET `BroadcastTextId0`=41054, `VerifiedBuild`=17658 WHERE `ID`=15981; -- 15981
+UPDATE `npc_text` SET `BroadcastTextId0`=41109, `VerifiedBuild`=17658 WHERE `ID`=15991; -- 15991
+UPDATE `npc_text` SET `BroadcastTextId0`=41129, `VerifiedBuild`=17658 WHERE `ID`=15995; -- 15995
+UPDATE `npc_text` SET `BroadcastTextId0`=41140, `VerifiedBuild`=17658 WHERE `ID`=16004; -- 16004
+UPDATE `npc_text` SET `BroadcastTextId0`=41170, `VerifiedBuild`=17658 WHERE `ID`=16010; -- 16010
+UPDATE `npc_text` SET `BroadcastTextId0`=41212, `VerifiedBuild`=17658 WHERE `ID`=16018; -- 16018
+UPDATE `npc_text` SET `BroadcastTextId0`=41332, `VerifiedBuild`=17658 WHERE `ID`=16046; -- 16046
+UPDATE `npc_text` SET `BroadcastTextId0`=41333, `VerifiedBuild`=17658 WHERE `ID`=16047; -- 16047
+UPDATE `npc_text` SET `BroadcastTextId0`=41342, `VerifiedBuild`=17658 WHERE `ID`=16051; -- 16051
+UPDATE `npc_text` SET `BroadcastTextId0`=41354, `VerifiedBuild`=17658 WHERE `ID`=16053; -- 16053
+UPDATE `npc_text` SET `BroadcastTextId0`=41355, `VerifiedBuild`=17658 WHERE `ID`=16054; -- 16054
+UPDATE `npc_text` SET `BroadcastTextId0`=41356, `VerifiedBuild`=17658 WHERE `ID`=16055; -- 16055
+UPDATE `npc_text` SET `BroadcastTextId0`=41357, `VerifiedBuild`=17658 WHERE `ID`=16056; -- 16056
+UPDATE `npc_text` SET `BroadcastTextId0`=41359, `VerifiedBuild`=17658 WHERE `ID`=16057; -- 16057
+UPDATE `npc_text` SET `BroadcastTextId0`=41361, `VerifiedBuild`=17658 WHERE `ID`=16058; -- 16058
+UPDATE `npc_text` SET `BroadcastTextId0`=41396, `VerifiedBuild`=17658 WHERE `ID`=16072; -- 16072
+UPDATE `npc_text` SET `BroadcastTextId0`=41507, `VerifiedBuild`=17658 WHERE `ID`=16089; -- 16089
+UPDATE `npc_text` SET `BroadcastTextId0`=41543, `VerifiedBuild`=17658 WHERE `ID`=16094; -- 16094
+UPDATE `npc_text` SET `BroadcastTextId0`=41558, `VerifiedBuild`=17658 WHERE `ID`=16095; -- 16095
+UPDATE `npc_text` SET `BroadcastTextId0`=41679, `VerifiedBuild`=17658 WHERE `ID`=16112; -- 16112
+UPDATE `npc_text` SET `BroadcastTextId0`=41675, `VerifiedBuild`=17658 WHERE `ID`=16113; -- 16113
+UPDATE `npc_text` SET `BroadcastTextId0`=41676, `VerifiedBuild`=17658 WHERE `ID`=16114; -- 16114
+UPDATE `npc_text` SET `BroadcastTextId0`=22776, `VerifiedBuild`=17658 WHERE `ID`=11667; -- 11667
+UPDATE `npc_text` SET `BroadcastTextId0`=5077, `VerifiedBuild`=17658 WHERE `ID`=2760; -- 2760
+UPDATE `npc_text` SET `BroadcastTextId0`=5083, `VerifiedBuild`=17658 WHERE `ID`=2762; -- 2762
+UPDATE `npc_text` SET `BroadcastTextId0`=5089, `VerifiedBuild`=17658 WHERE `ID`=2766; -- 2766
+UPDATE `npc_text` SET `BroadcastTextId0`=5098, `VerifiedBuild`=17658 WHERE `ID`=2771; -- 2771
+UPDATE `npc_text` SET `BroadcastTextId0`=9993, `VerifiedBuild`=17658 WHERE `ID`=7249; -- 7249
+UPDATE `npc_text` SET `BroadcastTextId0`=5101, `VerifiedBuild`=17658 WHERE `ID`=2772; -- 2772
+UPDATE `npc_text` SET `BroadcastTextId0`=42172, `VerifiedBuild`=17658 WHERE `ID`=16211; -- 16211
+UPDATE `npc_text` SET `BroadcastTextId0`=42230, `VerifiedBuild`=17658 WHERE `ID`=16215; -- 16215
+UPDATE `npc_text` SET `BroadcastTextId0`=42232, `VerifiedBuild`=17658 WHERE `ID`=16216; -- 16216
+UPDATE `npc_text` SET `BroadcastTextId0`=42235, `VerifiedBuild`=17658 WHERE `ID`=16219; -- 16219
+UPDATE `npc_text` SET `BroadcastTextId0`=42245, `VerifiedBuild`=17658 WHERE `ID`=16222; -- 16222
+UPDATE `npc_text` SET `BroadcastTextId0`=5113, `VerifiedBuild`=17658 WHERE `ID`=2793; -- 2793
+UPDATE `npc_text` SET `BroadcastTextId0`=5124, `VerifiedBuild`=17658 WHERE `ID`=2798; -- 2798
+UPDATE `npc_text` SET `BroadcastTextId0`=5139, `VerifiedBuild`=17658 WHERE `ID`=2804; -- 2804
+UPDATE `npc_text` SET `BroadcastTextId0`=42365, `BroadcastTextId1`=42366, `BroadcastTextId2`=42367, `BroadcastTextId3`=42368, `BroadcastTextId4`=42369, `VerifiedBuild`=17658 WHERE `ID`=16250; -- 16250
+UPDATE `npc_text` SET `BroadcastTextId0`=42448, `VerifiedBuild`=17658 WHERE `ID`=16256; -- 16256
+UPDATE `npc_text` SET `BroadcastTextId0`=5192, `VerifiedBuild`=17658 WHERE `ID`=2834; -- 2834
+UPDATE `npc_text` SET `BroadcastTextId0`=42527, `VerifiedBuild`=17658 WHERE `ID`=16275; -- 16275
+UPDATE `npc_text` SET `BroadcastTextId0`=10034, `VerifiedBuild`=17658 WHERE `ID`=7335; -- 7335
+UPDATE `npc_text` SET `BroadcastTextId0`=42751, `VerifiedBuild`=17658 WHERE `ID`=16304; -- 16304
+UPDATE `npc_text` SET `BroadcastTextId2`=10147, `VerifiedBuild`=17658 WHERE `ID`=7390; -- 7390
+UPDATE `npc_text` SET `BroadcastTextId0`=42951, `VerifiedBuild`=17658 WHERE `ID`=16345; -- 16345
+UPDATE `npc_text` SET `BroadcastTextId0`=10165, `VerifiedBuild`=17658 WHERE `ID`=7398; -- 7398
+UPDATE `npc_text` SET `BroadcastTextId0`=43120, `VerifiedBuild`=17658 WHERE `ID`=16364; -- 16364
+UPDATE `npc_text` SET `BroadcastTextId0`=43282, `VerifiedBuild`=17658 WHERE `ID`=16393; -- 16393
+UPDATE `npc_text` SET `BroadcastTextId0`=43318, `VerifiedBuild`=17658 WHERE `ID`=16402; -- 16402
+UPDATE `npc_text` SET `BroadcastTextId0`=43444, `VerifiedBuild`=17658 WHERE `ID`=16418; -- 16418
+UPDATE `npc_text` SET `BroadcastTextId0`=43486, `VerifiedBuild`=17658 WHERE `ID`=16424; -- 16424
+UPDATE `npc_text` SET `BroadcastTextId0`=43523, `VerifiedBuild`=17658 WHERE `ID`=16427; -- 16427
+UPDATE `npc_text` SET `BroadcastTextId0`=43567, `VerifiedBuild`=17658 WHERE `ID`=16437; -- 16437
+UPDATE `npc_text` SET `BroadcastTextId0`=43575, `VerifiedBuild`=17658 WHERE `ID`=16440; -- 16440
+UPDATE `npc_text` SET `BroadcastTextId0`=43587, `VerifiedBuild`=17658 WHERE `ID`=16441; -- 16441
+UPDATE `npc_text` SET `Probability0`=0, `Probability1`=1, `VerifiedBuild`=17658 WHERE `ID`=3024; -- 3024
+UPDATE `npc_text` SET `BroadcastTextId0`=43983, `VerifiedBuild`=17658 WHERE `ID`=16498; -- 16498
+UPDATE `npc_text` SET `BroadcastTextId0`=43984, `VerifiedBuild`=17658 WHERE `ID`=16499; -- 16499
+UPDATE `npc_text` SET `BroadcastTextId0`=44236, `VerifiedBuild`=17658 WHERE `ID`=16505; -- 16505
+UPDATE `npc_text` SET `BroadcastTextId0`=44254, `VerifiedBuild`=17658 WHERE `ID`=16509; -- 16509
+UPDATE `npc_text` SET `BroadcastTextId0`=44301, `VerifiedBuild`=17658 WHERE `ID`=16510; -- 16510
+UPDATE `npc_text` SET `BroadcastTextId0`=5435, `VerifiedBuild`=17658 WHERE `ID`=3096; -- 3096
+UPDATE `npc_text` SET `BroadcastTextId0`=44356, `VerifiedBuild`=17658 WHERE `ID`=16527; -- 16527
+UPDATE `npc_text` SET `BroadcastTextId0`=44383, `VerifiedBuild`=17658 WHERE `ID`=16536; -- 16536
+UPDATE `npc_text` SET `BroadcastTextId0`=44426, `VerifiedBuild`=17658 WHERE `ID`=16547; -- 16547
+UPDATE `npc_text` SET `BroadcastTextId0`=44436, `VerifiedBuild`=17658 WHERE `ID`=16548; -- 16548
+UPDATE `npc_text` SET `BroadcastTextId0`=44441, `VerifiedBuild`=17658 WHERE `ID`=16550; -- 16550
+UPDATE `npc_text` SET `BroadcastTextId0`=44477, `VerifiedBuild`=17658 WHERE `ID`=16562; -- 16562
+UPDATE `npc_text` SET `BroadcastTextId0`=44494, `VerifiedBuild`=17658 WHERE `ID`=16569; -- 16569
+UPDATE `npc_text` SET `BroadcastTextId0`=44520, `VerifiedBuild`=17658 WHERE `ID`=16573; -- 16573
+UPDATE `npc_text` SET `BroadcastTextId0`=44525, `VerifiedBuild`=17658 WHERE `ID`=16574; -- 16574
+UPDATE `npc_text` SET `BroadcastTextId0`=44551, `VerifiedBuild`=17658 WHERE `ID`=16585; -- 16585
+UPDATE `npc_text` SET `BroadcastTextId0`=44588, `VerifiedBuild`=17658 WHERE `ID`=16601; -- 16601
+UPDATE `npc_text` SET `BroadcastTextId0`=44594, `VerifiedBuild`=17658 WHERE `ID`=16602; -- 16602
+UPDATE `npc_text` SET `BroadcastTextId0`=44595, `VerifiedBuild`=17658 WHERE `ID`=16603; -- 16603
+UPDATE `npc_text` SET `BroadcastTextId0`=44598, `VerifiedBuild`=17658 WHERE `ID`=16604; -- 16604
+UPDATE `npc_text` SET `BroadcastTextId0`=44602, `VerifiedBuild`=17658 WHERE `ID`=16605; -- 16605
+UPDATE `npc_text` SET `BroadcastTextId0`=44605, `VerifiedBuild`=17658 WHERE `ID`=16606; -- 16606
+UPDATE `npc_text` SET `BroadcastTextId0`=44607, `VerifiedBuild`=17658 WHERE `ID`=16607; -- 16607
+UPDATE `npc_text` SET `BroadcastTextId0`=44608, `VerifiedBuild`=17658 WHERE `ID`=16608; -- 16608
+UPDATE `npc_text` SET `Probability1`=0, `BroadcastTextId0`=44611, `VerifiedBuild`=17658 WHERE `ID`=16609; -- 16609
+UPDATE `npc_text` SET `BroadcastTextId0`=44631, `VerifiedBuild`=17658 WHERE `ID`=16617; -- 16617
+UPDATE `npc_text` SET `BroadcastTextId0`=44634, `VerifiedBuild`=17658 WHERE `ID`=16618; -- 16618
+UPDATE `npc_text` SET `BroadcastTextId0`=44636, `VerifiedBuild`=17658 WHERE `ID`=16619; -- 16619
+UPDATE `npc_text` SET `BroadcastTextId0`=44638, `VerifiedBuild`=17658 WHERE `ID`=16620; -- 16620
+UPDATE `npc_text` SET `BroadcastTextId0`=44640, `VerifiedBuild`=17658 WHERE `ID`=16621; -- 16621
+UPDATE `npc_text` SET `BroadcastTextId0`=44648, `VerifiedBuild`=17658 WHERE `ID`=16627; -- 16627
+UPDATE `npc_text` SET `BroadcastTextId0`=44650, `VerifiedBuild`=17658 WHERE `ID`=16628; -- 16628
+UPDATE `npc_text` SET `BroadcastTextId0`=44651, `VerifiedBuild`=17658 WHERE `ID`=16629; -- 16629
+UPDATE `npc_text` SET `BroadcastTextId0`=44653, `VerifiedBuild`=17658 WHERE `ID`=16630; -- 16630
+UPDATE `npc_text` SET `BroadcastTextId0`=44655, `VerifiedBuild`=17658 WHERE `ID`=16631; -- 16631
+UPDATE `npc_text` SET `BroadcastTextId0`=44658, `VerifiedBuild`=17658 WHERE `ID`=16632; -- 16632
+UPDATE `npc_text` SET `BroadcastTextId0`=44661, `VerifiedBuild`=17658 WHERE `ID`=16634; -- 16634
+UPDATE `npc_text` SET `BroadcastTextId0`=44809, `VerifiedBuild`=17658 WHERE `ID`=16661; -- 16661
+UPDATE `npc_text` SET `BroadcastTextId0`=44841, `VerifiedBuild`=17658 WHERE `ID`=16670; -- 16670
+UPDATE `npc_text` SET `BroadcastTextId0`=49463, `VerifiedBuild`=17658 WHERE `ID`=7727; -- 7727
+UPDATE `npc_text` SET `BroadcastTextId0`=44982, `VerifiedBuild`=17658 WHERE `ID`=16694; -- 16694
+UPDATE `npc_text` SET `BroadcastTextId0`=45085, `VerifiedBuild`=17658 WHERE `ID`=16705; -- 16705
+UPDATE `npc_text` SET `BroadcastTextId0`=45126, `VerifiedBuild`=17658 WHERE `ID`=16717; -- 16717
+UPDATE `npc_text` SET `BroadcastTextId0`=45130, `VerifiedBuild`=17658 WHERE `ID`=16720; -- 16720
+UPDATE `npc_text` SET `BroadcastTextId0`=10768, `VerifiedBuild`=17658 WHERE `ID`=7789; -- 7789
+UPDATE `npc_text` SET `BroadcastTextId0`=10770, `VerifiedBuild`=17658 WHERE `ID`=7790; -- 7790
+UPDATE `npc_text` SET `BroadcastTextId0`=10774, `VerifiedBuild`=17658 WHERE `ID`=7793; -- 7793
+UPDATE `npc_text` SET `BroadcastTextId0`=45262, `VerifiedBuild`=17658 WHERE `ID`=16747; -- 16747
+UPDATE `npc_text` SET `BroadcastTextId0`=24118, `VerifiedBuild`=17658 WHERE `ID`=12270; -- 12270
+UPDATE `npc_text` SET `BroadcastTextId0`=10776, `VerifiedBuild`=17658 WHERE `ID`=7794; -- 7794
+UPDATE `npc_text` SET `BroadcastTextId0`=45287, `VerifiedBuild`=17658 WHERE `ID`=16754; -- 16754
+UPDATE `npc_text` SET `BroadcastTextId0`=45290, `VerifiedBuild`=17658 WHERE `ID`=16756; -- 16756
+UPDATE `npc_text` SET `BroadcastTextId0`=45293, `VerifiedBuild`=17658 WHERE `ID`=16758; -- 16758
+UPDATE `npc_text` SET `BroadcastTextId0`=45296, `VerifiedBuild`=17658 WHERE `ID`=16760; -- 16760
+UPDATE `npc_text` SET `BroadcastTextId0`=45299, `VerifiedBuild`=17658 WHERE `ID`=16762; -- 16762
+UPDATE `npc_text` SET `BroadcastTextId0`=45302, `BroadcastTextId1`=45303, `BroadcastTextId2`=45304, `BroadcastTextId3`=45305, `VerifiedBuild`=17658 WHERE `ID`=16763; -- 16763
+UPDATE `npc_text` SET `BroadcastTextId0`=24247, `VerifiedBuild`=17658 WHERE `ID`=12309; -- 12309
+UPDATE `npc_text` SET `BroadcastTextId0`=45393, `VerifiedBuild`=17658 WHERE `ID`=16787; -- 16787
+UPDATE `npc_text` SET `BroadcastTextId0`=45478, `VerifiedBuild`=17658 WHERE `ID`=16816; -- 16816
+UPDATE `npc_text` SET `BroadcastTextId0`=45564, `VerifiedBuild`=17658 WHERE `ID`=16845; -- 16845
+UPDATE `npc_text` SET `BroadcastTextId0`=45674, `VerifiedBuild`=17658 WHERE `ID`=16865; -- 16865
+UPDATE `npc_text` SET `BroadcastTextId0`=45924, `VerifiedBuild`=17658 WHERE `ID`=16906; -- 16906
+UPDATE `npc_text` SET `BroadcastTextId0`=45925, `VerifiedBuild`=17658 WHERE `ID`=16907; -- 16907
+UPDATE `npc_text` SET `BroadcastTextId0`=45982, `VerifiedBuild`=17658 WHERE `ID`=16923; -- 16923
+UPDATE `npc_text` SET `BroadcastTextId0`=24898, `VerifiedBuild`=17658 WHERE `ID`=12456; -- 12456
+UPDATE `npc_text` SET `BroadcastTextId0`=46062, `VerifiedBuild`=17658 WHERE `ID`=16939; -- 16939
+UPDATE `npc_text` SET `BroadcastTextId0`=46094, `BroadcastTextId1`=46095, `BroadcastTextId2`=46096, `VerifiedBuild`=17658 WHERE `ID`=16947; -- 16947
+UPDATE `npc_text` SET `BroadcastTextId0`=46120, `VerifiedBuild`=17658 WHERE `ID`=16958; -- 16958
+UPDATE `npc_text` SET `BroadcastTextId0`=46137, `VerifiedBuild`=17658 WHERE `ID`=16963; -- 16963
+UPDATE `npc_text` SET `BroadcastTextId0`=46138, `VerifiedBuild`=17658 WHERE `ID`=16964; -- 16964
+UPDATE `npc_text` SET `BroadcastTextId0`=46228, `VerifiedBuild`=17658 WHERE `ID`=16975; -- 16975
+UPDATE `npc_text` SET `BroadcastTextId0`=46256, `VerifiedBuild`=17658 WHERE `ID`=16980; -- 16980
+UPDATE `npc_text` SET `BroadcastTextId0`=46262, `VerifiedBuild`=17658 WHERE `ID`=16981; -- 16981
+UPDATE `npc_text` SET `BroadcastTextId0`=46348, `VerifiedBuild`=17658 WHERE `ID`=16988; -- 16988
+UPDATE `npc_text` SET `BroadcastTextId0`=46353, `VerifiedBuild`=17658 WHERE `ID`=16991; -- 16991
+UPDATE `npc_text` SET `BroadcastTextId0`=46358, `VerifiedBuild`=17658 WHERE `ID`=16995; -- 16995
+UPDATE `npc_text` SET `BroadcastTextId0`=25309, `VerifiedBuild`=17658 WHERE `ID`=12554; -- 12554
+UPDATE `npc_text` SET `BroadcastTextId0`=11351, `VerifiedBuild`=17658 WHERE `ID`=8077; -- 8077
+UPDATE `npc_text` SET `BroadcastTextId0`=46539, `VerifiedBuild`=17658 WHERE `ID`=17034; -- 17034
+UPDATE `npc_text` SET `BroadcastTextId0`=46543, `VerifiedBuild`=17658 WHERE `ID`=17035; -- 17035
+UPDATE `npc_text` SET `BroadcastTextId0`=46804, `VerifiedBuild`=17658 WHERE `ID`=17068; -- 17068
+UPDATE `npc_text` SET `BroadcastTextId0`=46855, `VerifiedBuild`=17658 WHERE `ID`=17080; -- 17080
+UPDATE `npc_text` SET `BroadcastTextId0`=46928, `VerifiedBuild`=17658 WHERE `ID`=17091; -- 17091
+UPDATE `npc_text` SET `BroadcastTextId0`=46946, `VerifiedBuild`=17658 WHERE `ID`=17095; -- 17095
+UPDATE `npc_text` SET `BroadcastTextId0`=46950, `VerifiedBuild`=17658 WHERE `ID`=17097; -- 17097
+UPDATE `npc_text` SET `BroadcastTextId0`=46963, `VerifiedBuild`=17658 WHERE `ID`=17100; -- 17100
+UPDATE `npc_text` SET `BroadcastTextId0`=47052, `VerifiedBuild`=17658 WHERE `ID`=17110; -- 17110
+UPDATE `npc_text` SET `BroadcastTextId0`=47105, `VerifiedBuild`=17658 WHERE `ID`=17125; -- 17125
+UPDATE `npc_text` SET `BroadcastTextId0`=47108, `VerifiedBuild`=17658 WHERE `ID`=17126; -- 17126
+UPDATE `npc_text` SET `BroadcastTextId0`=47129, `VerifiedBuild`=17658 WHERE `ID`=17127; -- 17127
+UPDATE `npc_text` SET `BroadcastTextId0`=47130, `VerifiedBuild`=17658 WHERE `ID`=17128; -- 17128
+UPDATE `npc_text` SET `BroadcastTextId0`=47131, `VerifiedBuild`=17658 WHERE `ID`=17129; -- 17129
+UPDATE `npc_text` SET `BroadcastTextId0`=47132, `VerifiedBuild`=17658 WHERE `ID`=17130; -- 17130
+UPDATE `npc_text` SET `BroadcastTextId0`=47133, `VerifiedBuild`=17658 WHERE `ID`=17131; -- 17131
+UPDATE `npc_text` SET `BroadcastTextId0`=47134, `VerifiedBuild`=17658 WHERE `ID`=17132; -- 17132
+UPDATE `npc_text` SET `BroadcastTextId0`=47136, `VerifiedBuild`=17658 WHERE `ID`=17133; -- 17133
+UPDATE `npc_text` SET `BroadcastTextId0`=47137, `VerifiedBuild`=17658 WHERE `ID`=17134; -- 17134
+UPDATE `npc_text` SET `BroadcastTextId0`=47138, `VerifiedBuild`=17658 WHERE `ID`=17135; -- 17135
+UPDATE `npc_text` SET `BroadcastTextId0`=47139, `VerifiedBuild`=17658 WHERE `ID`=17136; -- 17136
+UPDATE `npc_text` SET `BroadcastTextId0`=47140, `VerifiedBuild`=17658 WHERE `ID`=17137; -- 17137
+UPDATE `npc_text` SET `BroadcastTextId0`=47141, `VerifiedBuild`=17658 WHERE `ID`=17138; -- 17138
+UPDATE `npc_text` SET `BroadcastTextId0`=11610, `VerifiedBuild`=17658 WHERE `ID`=8202; -- 8202
+UPDATE `npc_text` SET `BroadcastTextId0`=47283, `BroadcastTextId1`=47284, `BroadcastTextId2`=47285, `VerifiedBuild`=17658 WHERE `ID`=17167; -- 17167
+UPDATE `npc_text` SET `BroadcastTextId0`=47287, `VerifiedBuild`=17658 WHERE `ID`=17168; -- 17168
+UPDATE `npc_text` SET `BroadcastTextId0`=47419, `VerifiedBuild`=17658 WHERE `ID`=17187; -- 17187
+UPDATE `npc_text` SET `BroadcastTextId0`=47465, `VerifiedBuild`=17658 WHERE `ID`=17194; -- 17194
+UPDATE `npc_text` SET `BroadcastTextId0`=47503, `VerifiedBuild`=17658 WHERE `ID`=17200; -- 17200
+UPDATE `npc_text` SET `BroadcastTextId0`=26185, `VerifiedBuild`=17658 WHERE `ID`=12739; -- 12739
+UPDATE `npc_text` SET `BroadcastTextId0`=47604, `BroadcastTextId1`=47605, `BroadcastTextId2`=47606, `VerifiedBuild`=17658 WHERE `ID`=17227; -- 17227
+UPDATE `npc_text` SET `BroadcastTextId0`=6296, `VerifiedBuild`=17658 WHERE `ID`=3807; -- 3807
+UPDATE `npc_text` SET `BroadcastTextId0`=47697, `VerifiedBuild`=17658 WHERE `ID`=17248; -- 17248
+UPDATE `npc_text` SET `BroadcastTextId0`=6367, `VerifiedBuild`=17658 WHERE `ID`=3834; -- 3834
+UPDATE `npc_text` SET `BroadcastTextId0`=47803, `VerifiedBuild`=17658 WHERE `ID`=17270; -- 17270
+UPDATE `npc_text` SET `BroadcastTextId0`=6393, `BroadcastTextId1`=0, `VerifiedBuild`=17658 WHERE `ID`=3860; -- 3860
+UPDATE `npc_text` SET `BroadcastTextId0`=44606, `BroadcastTextId1`=0, `VerifiedBuild`=17658 WHERE `ID`=3861; -- 3861
+UPDATE `npc_text` SET `BroadcastTextId0`=47933, `VerifiedBuild`=17658 WHERE `ID`=17299; -- 17299
+UPDATE `npc_text` SET `BroadcastTextId0`=26518, `VerifiedBuild`=17658 WHERE `ID`=12823; -- 12823
+UPDATE `npc_text` SET `BroadcastTextId0`=48051, `VerifiedBuild`=17658 WHERE `ID`=17336; -- 17336
+UPDATE `npc_text` SET `BroadcastTextId0`=48099, `VerifiedBuild`=17658 WHERE `ID`=17349; -- 17349
+UPDATE `npc_text` SET `BroadcastTextId0`=48197, `VerifiedBuild`=17658 WHERE `ID`=17383; -- 17383
+UPDATE `npc_text` SET `BroadcastTextId0`=48198, `VerifiedBuild`=17658 WHERE `ID`=17384; -- 17384
+UPDATE `npc_text` SET `BroadcastTextId0`=48199, `VerifiedBuild`=17658 WHERE `ID`=17385; -- 17385
+UPDATE `npc_text` SET `BroadcastTextId0`=48200, `VerifiedBuild`=17658 WHERE `ID`=17386; -- 17386
+UPDATE `npc_text` SET `BroadcastTextId0`=48201, `VerifiedBuild`=17658 WHERE `ID`=17387; -- 17387
+UPDATE `npc_text` SET `BroadcastTextId0`=48242, `VerifiedBuild`=17658 WHERE `ID`=17394; -- 17394
+UPDATE `npc_text` SET `BroadcastTextId0`=48252, `VerifiedBuild`=17658 WHERE `ID`=17398; -- 17398
+UPDATE `npc_text` SET `BroadcastTextId0`=48264, `VerifiedBuild`=17658 WHERE `ID`=17401; -- 17401
+UPDATE `npc_text` SET `BroadcastTextId0`=6521, `VerifiedBuild`=17658 WHERE `ID`=3981; -- 3981
+UPDATE `npc_text` SET `BroadcastTextId0`=48373, `VerifiedBuild`=17658 WHERE `ID`=17426; -- 17426
+UPDATE `npc_text` SET `BroadcastTextId0`=12246, `VerifiedBuild`=17658 WHERE `ID`=8506; -- 8506
+UPDATE `npc_text` SET `BroadcastTextId0`=48729, `VerifiedBuild`=17658 WHERE `ID`=17484; -- 17484
+UPDATE `npc_text` SET `BroadcastTextId0`=48743, `VerifiedBuild`=17658 WHERE `ID`=17485; -- 17485
+UPDATE `npc_text` SET `BroadcastTextId0`=48742, `VerifiedBuild`=17658 WHERE `ID`=17486; -- 17486
+UPDATE `npc_text` SET `BroadcastTextId0`=48746, `VerifiedBuild`=17658 WHERE `ID`=17487; -- 17487
+UPDATE `npc_text` SET `BroadcastTextId0`=48873, `VerifiedBuild`=17658 WHERE `ID`=17513; -- 17513
+UPDATE `npc_text` SET `BroadcastTextId0`=49078, `VerifiedBuild`=17658 WHERE `ID`=17534; -- 17534
+UPDATE `npc_text` SET `BroadcastTextId0`=49088, `VerifiedBuild`=17658 WHERE `ID`=17536; -- 17536
+UPDATE `npc_text` SET `BroadcastTextId0`=6870, `VerifiedBuild`=17658 WHERE `ID`=4135; -- 4135
+UPDATE `npc_text` SET `BroadcastTextId0`=49720, `VerifiedBuild`=17658 WHERE `ID`=17598; -- 17598
+UPDATE `npc_text` SET `BroadcastTextId0`=49765, `VerifiedBuild`=17658 WHERE `ID`=17607; -- 17607
+UPDATE `npc_text` SET `BroadcastTextId0`=49783, `VerifiedBuild`=17658 WHERE `ID`=17611; -- 17611
+UPDATE `npc_text` SET `BroadcastTextId0`=49789, `VerifiedBuild`=17658 WHERE `ID`=17616; -- 17616
+UPDATE `npc_text` SET `BroadcastTextId0`=6879, `VerifiedBuild`=17658 WHERE `ID`=4193; -- 4193
+UPDATE `npc_text` SET `BroadcastTextId0`=49847, `VerifiedBuild`=17658 WHERE `ID`=17627; -- 17627
+UPDATE `npc_text` SET `BroadcastTextId0`=49975, `VerifiedBuild`=17658 WHERE `ID`=17659; -- 17659
+UPDATE `npc_text` SET `BroadcastTextId0`=13143, `VerifiedBuild`=17658 WHERE `ID`=8713; -- 8713
+UPDATE `npc_text` SET `BroadcastTextId0`=50037, `VerifiedBuild`=17658 WHERE `ID`=17686; -- 17686
+UPDATE `npc_text` SET `BroadcastTextId0`=6906, `VerifiedBuild`=17658 WHERE `ID`=4259; -- 4259
+UPDATE `npc_text` SET `Probability0`=0, `Probability1`=0, `Probability2`=1, `BroadcastTextId2`=50328, `VerifiedBuild`=17658 WHERE `ID`=4261; -- 4261
+UPDATE `npc_text` SET `Probability0`=0, `Probability1`=1, `BroadcastTextId1`=50342, `VerifiedBuild`=17658 WHERE `ID`=4265; -- 4265
+UPDATE `npc_text` SET `Probability0`=0, `Probability1`=1, `BroadcastTextId1`=50354, `VerifiedBuild`=17658 WHERE `ID`=4266; -- 4266
+UPDATE `npc_text` SET `BroadcastTextId0`=50093, `VerifiedBuild`=17658 WHERE `ID`=17712; -- 17712
+UPDATE `npc_text` SET `BroadcastTextId2`=50415, `VerifiedBuild`=17658 WHERE `ID`=4289; -- 4289
+UPDATE `npc_text` SET `BroadcastTextId0`=50233, `VerifiedBuild`=17658 WHERE `ID`=17726; -- 17726
+UPDATE `npc_text` SET `BroadcastTextId0`=50312, `VerifiedBuild`=17658 WHERE `ID`=17740; -- 17740
+UPDATE `npc_text` SET `BroadcastTextId0`=50382, `VerifiedBuild`=17658 WHERE `ID`=17745; -- 17745
+UPDATE `npc_text` SET `BroadcastTextId0`=50418, `VerifiedBuild`=17658 WHERE `ID`=17748; -- 17748
+UPDATE `npc_text` SET `BroadcastTextId0`=50429, `VerifiedBuild`=17658 WHERE `ID`=17749; -- 17749
+UPDATE `npc_text` SET `BroadcastTextId0`=50616, `VerifiedBuild`=17658 WHERE `ID`=17763; -- 17763
+UPDATE `npc_text` SET `BroadcastTextId0`=50623, `VerifiedBuild`=17658 WHERE `ID`=17770; -- 17770
+UPDATE `npc_text` SET `BroadcastTextId0`=50626, `VerifiedBuild`=17658 WHERE `ID`=17774; -- 17774
+UPDATE `npc_text` SET `BroadcastTextId0`=13547, `VerifiedBuild`=17658 WHERE `ID`=8823; -- 8823
+UPDATE `npc_text` SET `BroadcastTextId0`=13554, `VerifiedBuild`=17658 WHERE `ID`=8828; -- 8828
+UPDATE `npc_text` SET `BroadcastTextId0`=50625, `VerifiedBuild`=17658 WHERE `ID`=17793; -- 17793
+UPDATE `npc_text` SET `BroadcastTextId0`=28636, `VerifiedBuild`=17658 WHERE `ID`=13321; -- 13321
+UPDATE `npc_text` SET `BroadcastTextId0`=50652, `VerifiedBuild`=17658 WHERE `ID`=17800; -- 17800
+UPDATE `npc_text` SET `BroadcastTextId0`=7652, `VerifiedBuild`=17658 WHERE `ID`=17804; -- 17804
+UPDATE `npc_text` SET `BroadcastTextId0`=13654, `VerifiedBuild`=17658 WHERE `ID`=8855; -- 8855
+UPDATE `npc_text` SET `BroadcastTextId0`=50711, `VerifiedBuild`=17658 WHERE `ID`=17820; -- 17820
+UPDATE `npc_text` SET `BroadcastTextId1`=28923, `VerifiedBuild`=17658 WHERE `ID`=13365; -- 13365
+UPDATE `npc_text` SET `BroadcastTextId0`=50840, `VerifiedBuild`=17658 WHERE `ID`=17859; -- 17859
+UPDATE `npc_text` SET `BroadcastTextId0`=7155, `VerifiedBuild`=17658 WHERE `ID`=4435; -- 4435
+UPDATE `npc_text` SET `BroadcastTextId0`=7165, `VerifiedBuild`=17658 WHERE `ID`=4437; -- 4437
+UPDATE `npc_text` SET `BroadcastTextId0`=50953, `VerifiedBuild`=17658 WHERE `ID`=17892; -- 17892
+UPDATE `npc_text` SET `BroadcastTextId0`=51009, `VerifiedBuild`=17658 WHERE `ID`=17905; -- 17905
+UPDATE `npc_text` SET `BroadcastTextId0`=51010, `VerifiedBuild`=17658 WHERE `ID`=17906; -- 17906
+UPDATE `npc_text` SET `VerifiedBuild`=18414 WHERE `ID` IN (12256 /*12256*/, 12259 /*12259*/, 14489 /*14489*/, 14495 /*14495*/, 11714 /*11714*/, 12286 /*12286*/, 12850 /*12850*/, 8401 /*8401*/, 8404 /*8404*/, 8406 /*8406*/, 8970 /*8970*/, 8971 /*8971*/, 12338 /*12338*/, 11226 /*11226*/, 10115 /*10115*/, 9003 /*9003*/, 10117 /*10117*/, 10118 /*10118*/, 10119 /*10119*/, 12371 /*12371*/, 12374 /*12374*/, 12376 /*12376*/, 12934 /*12934*/, 9043 /*9043*/, 12390 /*12390*/, 9051 /*9051*/, 12395 /*12395*/, 14068 /*14068*/, 9056 /*9056*/, 9057 /*9057*/, 9058 /*9058*/, 9059 /*9059*/, 13540 /*13540*/, 14664 /*14664*/, 14692 /*14692*/, 10239 /*10239*/, 13584 /*13584*/, 8582 /*8582*/, 3016 /*3016*/, 10258 /*10258*/, 12498 /*12498*/, 12500 /*12500*/, 11945 /*11945*/, 12502 /*12502*/, 6933 /*6933*/, 12504 /*12504*/, 12506 /*12506*/, 14738 /*14738*/, 9168 /*9168*/, 9169 /*9169*/, 10291 /*10291*/, 15864 /*15864*/, 13639 /*13639*/, 13660 /*13660*/, 14783 /*14783*/, 14785 /*14785*/, 10889 /*10889*/, 14793 /*14793*/, 9800 /*9800*/, 9243 /*9243*/, 12596 /*12596*/, 12598 /*12598*/, 12599 /*12599*/, 12600 /*12600*/, 12601 /*12601*/, 12608 /*12608*/, 2637 /*2637*/, 12668 /*12668*/, 12670 /*12670*/, 13785 /*13785*/, 10471 /*10471*/, 7694 /*7694*/, 12708 /*12708*/, 12152 /*12152*/, 8838 /*8838*/, 14421 /*14421*/, 14425 /*14425*/, 9441 /*9441*/, 14456 /*14456*/, 14461 /*14461*/, 12237 /*12237*/, 12241 /*12241*/, 12251 /*12251*/, 12252 /*12252*/);
+UPDATE `npc_text` SET `BroadcastTextId0`=14050, `VerifiedBuild`=18414 WHERE `ID`=8969; -- 8969
+UPDATE `npc_text` SET `BroadcastTextId0`=39590, `VerifiedBuild`=18414 WHERE `ID`=15664; -- 15664
+UPDATE `npc_text` SET `BroadcastTextId0`=36941, `VerifiedBuild`=18414 WHERE `ID`=15112; -- 15112
+UPDATE `npc_text` SET `BroadcastTextId0`=18423, `VerifiedBuild`=18414 WHERE `ID`=10120; -- 10120
+UPDATE `npc_text` SET `BroadcastTextId0`=3376, `BroadcastTextId1`=3377, `BroadcastTextId2`=3378, `VerifiedBuild`=18414 WHERE `ID`=1235; -- 1235
+UPDATE `npc_text` SET `BroadcastTextId0`=42618, `VerifiedBuild`=18414 WHERE `ID`=16286; -- 16286
+UPDATE `npc_text` SET `BroadcastTextId0`=14377, `VerifiedBuild`=18414 WHERE `ID`=9060; -- 9060
+UPDATE `npc_text` SET `BroadcastTextId0`=51466, `VerifiedBuild`=18414 WHERE `ID`=17980; -- 17980
+UPDATE `npc_text` SET `BroadcastTextId0`=45688, `VerifiedBuild`=18414 WHERE `ID`=16869; -- 16869
+UPDATE `npc_text` SET `BroadcastTextId0`=35221, `VerifiedBuild`=18414 WHERE `ID`=14672; -- 14672
+UPDATE `npc_text` SET `BroadcastTextId0`=32780, `BroadcastTextId1`=32778, `BroadcastTextId2`=32779, `VerifiedBuild`=18414 WHERE `ID`=14128; -- 14128
+UPDATE `npc_text` SET `BroadcastTextId0`=43290, `VerifiedBuild`=18414 WHERE `ID`=16399; -- 16399
+UPDATE `npc_text` SET `BroadcastTextId0`=35536, `BroadcastTextId1`=35536, `VerifiedBuild`=18414 WHERE `ID`=14737; -- 14737
+UPDATE `npc_text` SET `BroadcastTextId0`=40430, `VerifiedBuild`=18414 WHERE `ID`=15858; -- 15858
+UPDATE `npc_text` SET `BroadcastTextId0`=40432, `VerifiedBuild`=18414 WHERE `ID`=15859; -- 15859
+UPDATE `npc_text` SET `BroadcastTextId0`=25561, `VerifiedBuild`=18414 WHERE `ID`=12606; -- 12606
+UPDATE `npc_text` SET `BroadcastTextId0`=46961, `VerifiedBuild`=18414 WHERE `ID`=17099; -- 17099
+UPDATE `npc_text` SET `BroadcastTextId0`=41231, `VerifiedBuild`=18414 WHERE `ID`=16022; -- 16022
+UPDATE `npc_text` SET `BroadcastTextId0`=23782, `VerifiedBuild`=18414 WHERE `ID`=12165; -- 12165
+UPDATE `npc_text` SET `BroadcastTextId0`=15392, `VerifiedBuild`=18414 WHERE `ID`=9380; -- 9380
+UPDATE `npc_text` SET `BroadcastTextId0`=15394, `VerifiedBuild`=18414 WHERE `ID`=9381; -- 9381
+UPDATE `npc_text` SET `BroadcastTextId0`=36422, `VerifiedBuild`=18414 WHERE `ID`=14976; -- 14976
+UPDATE `npc_text` SET `BroadcastTextId0`=53334, `VerifiedBuild`=18414 WHERE `ID`=18354; -- 18354 \ No newline at end of file
diff --git a/sql/updates/world/2015_06_08_00_world.sql b/sql/updates/world/2015_06_08_00_world.sql
new file mode 100644
index 00000000000..f85b6301e6c
--- /dev/null
+++ b/sql/updates/world/2015_06_08_00_world.sql
@@ -0,0 +1,609 @@
+DELETE FROM `npc_text` WHERE `ID` IN (20183, 18032, 18150, 18151, 18152, 18167, 18238, 16097, 16122, 18387, 18388, 18389, 18392, 18393, 20685, 20687, 18461, 18462, 18464, 18465, 20797, 20798, 20799, 18640, 18642, 16432, 21102, 21156, 21159, 21160, 21162, 21163, 21168, 21170, 21186, 21263, 21267, 21270, 21272, 21273, 21308, 21309, 14631, 14701, 14704, 19314, 19368, 21629, 21636, 21637, 21713, 15010, 19890, 19893, 19912, 19934, 19935, 17851, 17878, 14735, 14812, 14849, 20683, 20750, 20809, 15501, 24306, 24613, 24616, 24619, 24641, 24642, 24643, 24652, 24653, 24656, 24664, 24669, 24670, 24672, 24678, 24692, 24705, 24707, 24714, 24715, 24716, 24717, 24720, 24725, 24726, 24737, 24741, 24747, 24751, 20293, 24790, 24792, 24793, 24794, 24806, 24835, 24847, 24851, 24880, 24884, 24892, 22665, 24908, 24912, 24916, 24926, 24930, 24938, 22706, 24953, 24954, 24965, 24978, 24982, 24983, 24986, 24993, 25013, 25069, 25072, 25079, 25080, 22846, 25121, 25130, 25134, 25148, 25149, 25151, 25154, 25159, 25165, 25172, 25173, 25174, 25178, 25183, 25192, 25194, 20728, 25212, 25236, 25242, 25246, 25248, 25273, 25275, 25276, 25278, 25279, 25280, 25281, 23099, 23103, 23104, 23105, 23114, 25352, 23115, 9727, 25423, 25426, 25429, 25433, 25434, 23214, 25457, 23221, 25477, 25479, 23259, 23272, 23273, 23274, 23275, 23279, 25519, 25520, 25524, 25526, 25527, 25528, 25554, 25567, 23330, 25570, 23341, 25591, 25592, 25609, 25610, 25611, 16664, 25638, 25678, 25682, 25685, 23470, 25715, 25717, 23484, 25731, 25732, 23509, 23510, 23511, 25783, 25786, 23555, 23564, 25801, 25806, 25808, 23598, 23630, 23686, 25930, 23703, 23711, 23714, 23739, 23740, 23754, 23761, 23762, 23763, 23766, 23776, 23779, 23783, 23795, 23796, 23799, 23803, 23804, 23808, 23809, 23822, 23823, 23829, 23841, 23843, 23845, 23849, 23850, 23861, 23862, 23873, 21640, 23877, 23878, 23882, 23883, 23904, 23905, 23920, 23932, 23944, 23953, 23957, 23966, 23973, 23979, 23983, 23986, 23987, 23991, 23993, 23999, 24000, 24002, 24003, 24017, 24021, 24022, 24025, 24026, 24036, 24037, 24038, 24056, 24057, 24063, 24064, 24065, 24070, 24075, 24076, 24099, 24100, 24103, 24104, 24106, 24118, 24124, 24125, 24128, 24129, 24135, 24140, 24142, 24143, 24153, 24154, 24158, 24161, 24162, 24163, 24164, 24170, 24171, 24172, 24180, 24181, 24186, 24188, 24190, 24194, 24198, 24200, 24201, 24203, 24204, 24205, 24207, 24209, 24232, 24237, 24240, 24248, 24251, 24252, 24261, 24267, 24268, 24269, 24275, 24293, 24294, 24295, 24296, 24297, 24303, 24305, 24322, 24326, 24327, 24328, 24337, 24349, 24355, 24363, 24369, 24378, 24379, 24380, 24415, 24416, 24417, 24418, 24419, 24424, 24440, 24441, 24451, 24456, 24458, 24467, 24468, 24476, 24477, 24478, 24485, 24506, 24510, 24513, 24519, 24521, 24523, 24524, 24531, 24539, 24540, 24541, 24547, 24552, 24572, 24573, 24584, 24589, 24599);
+INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES
+(20183, 1, 1, 1, 1, 1, 1, 1, 1, 63483, 63484, 63485, 63486, 63487, 63488, 63489, 63490, 16135), -- 20183
+(18032, 1, 0, 0, 0, 0, 0, 0, 0, 51792, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18032
+(18150, 1, 0, 0, 0, 0, 0, 0, 0, 52367, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18150
+(18151, 1, 0, 0, 0, 0, 0, 0, 0, 52366, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18151
+(18152, 1, 0, 0, 0, 0, 0, 0, 0, 52368, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18152
+(18167, 1, 0, 0, 0, 0, 0, 0, 0, 52384, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18167
+(18238, 1, 0, 0, 0, 0, 0, 0, 0, 52892, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18238
+(16097, 1, 1, 0, 0, 0, 0, 0, 0, 41575, 41576, 0, 0, 0, 0, 0, 0, 16135), -- 16097
+(16122, 1, 0, 0, 0, 0, 0, 0, 0, 41698, 0, 0, 0, 0, 0, 0, 0, 16135), -- 16122
+(18387, 1, 0, 0, 0, 0, 0, 0, 0, 68004, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18387
+(18388, 1, 0, 0, 0, 0, 0, 0, 0, 53484, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18388
+(18389, 1, 0, 0, 0, 0, 0, 0, 0, 53493, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18389
+(18392, 1, 0, 0, 0, 0, 0, 0, 0, 53503, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18392
+(18393, 1, 0, 0, 0, 0, 0, 0, 0, 53509, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18393
+(20685, 1, 0, 0, 0, 0, 0, 0, 0, 66030, 0, 0, 0, 0, 0, 0, 0, 16135), -- 20685
+(20687, 1, 0, 0, 0, 0, 0, 0, 0, 66059, 0, 0, 0, 0, 0, 0, 0, 16135), -- 20687
+(18461, 1, 0, 0, 0, 0, 0, 0, 0, 53791, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18461
+(18462, 1, 0, 0, 0, 0, 0, 0, 0, 53793, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18462
+(18464, 1, 0, 0, 0, 0, 0, 0, 0, 53795, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18464
+(18465, 1, 0, 0, 0, 0, 0, 0, 0, 53807, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18465
+(20797, 1, 0, 0, 0, 0, 0, 0, 0, 66552, 0, 0, 0, 0, 0, 0, 0, 16135), -- 20797
+(20798, 1, 0, 0, 0, 0, 0, 0, 0, 66553, 0, 0, 0, 0, 0, 0, 0, 16135), -- 20798
+(20799, 1, 1, 1, 1, 0, 0, 0, 0, 66554, 66555, 66556, 66557, 0, 0, 0, 0, 16135), -- 20799
+(18640, 1, 0, 0, 0, 0, 0, 0, 0, 54767, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18640
+(18642, 1, 0, 0, 0, 0, 0, 0, 0, 54779, 0, 0, 0, 0, 0, 0, 0, 16135), -- 18642
+(16432, 1, 0, 0, 0, 0, 0, 0, 0, 43556, 0, 0, 0, 0, 0, 0, 0, 16135), -- 16432
+(21102, 1, 0, 0, 0, 0, 0, 0, 0, 67198, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21102
+(21156, 1, 1, 0, 0, 0, 0, 0, 0, 67400, 67401, 0, 0, 0, 0, 0, 0, 16135), -- 21156
+(21159, 1, 0, 0, 0, 0, 0, 0, 0, 67407, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21159
+(21160, 1, 0, 0, 0, 0, 0, 0, 0, 67409, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21160
+(21162, 1, 1, 0, 0, 0, 0, 0, 0, 67411, 67412, 0, 0, 0, 0, 0, 0, 16135), -- 21162
+(21163, 1, 1, 1, 0, 0, 0, 0, 0, 67413, 67414, 67415, 0, 0, 0, 0, 0, 16135), -- 21163
+(21168, 1, 1, 1, 1, 0, 0, 0, 0, 67443, 67444, 67445, 67446, 0, 0, 0, 0, 16135), -- 21168
+(21170, 1, 1, 1, 0, 0, 0, 0, 0, 67450, 67451, 67452, 0, 0, 0, 0, 0, 16135), -- 21170
+(21186, 1, 0, 0, 0, 0, 0, 0, 0, 67517, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21186
+(21263, 1, 1, 1, 1, 1, 0, 0, 0, 67764, 67765, 67766, 67767, 67768, 0, 0, 0, 16135), -- 21263
+(21267, 1, 1, 1, 1, 0, 0, 0, 0, 67781, 67782, 67783, 67784, 0, 0, 0, 0, 16135), -- 21267
+(21270, 1, 0, 0, 0, 0, 0, 0, 0, 67792, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21270
+(21272, 1, 0, 0, 0, 0, 0, 0, 0, 67797, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21272
+(21273, 1, 0, 0, 0, 0, 0, 0, 0, 67798, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21273
+(21308, 1, 0, 0, 0, 0, 0, 0, 0, 67959, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21308
+(21309, 1, 0, 0, 0, 0, 0, 0, 0, 67979, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21309
+(14631, 1, 0, 0, 0, 0, 0, 0, 0, 35077, 0, 0, 0, 0, 0, 0, 0, 16135), -- 14631
+(14701, 1, 0, 0, 0, 0, 0, 0, 0, 35362, 0, 0, 0, 0, 0, 0, 0, 16135), -- 14701
+(14704, 1, 0, 0, 0, 0, 0, 0, 0, 35382, 0, 0, 0, 0, 0, 0, 0, 16135), -- 14704
+(19314, 1, 0, 0, 0, 0, 0, 0, 0, 58324, 0, 0, 0, 0, 0, 0, 0, 16135), -- 19314
+(19368, 1, 0, 0, 0, 0, 0, 0, 0, 58577, 0, 0, 0, 0, 0, 0, 0, 16135), -- 19368
+(21629, 1, 0, 0, 0, 0, 0, 0, 0, 68510, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21629
+(21636, 1, 1, 1, 1, 1, 1, 0, 0, 68566, 68567, 68569, 68570, 68572, 68573, 0, 0, 16135), -- 21636
+(21637, 1, 1, 1, 1, 0, 0, 0, 0, 68570, 68573, 68575, 68577, 0, 0, 0, 0, 16135), -- 21637
+(21713, 1, 0, 0, 0, 0, 0, 0, 0, 68835, 0, 0, 0, 0, 0, 0, 0, 16135), -- 21713
+(15010, 1, 0, 0, 0, 0, 0, 0, 0, 36527, 0, 0, 0, 0, 0, 0, 0, 16135), -- 15010
+(19890, 1, 0, 0, 0, 0, 0, 0, 0, 61024, 0, 0, 0, 0, 0, 0, 0, 16135), -- 19890
+(19893, 1, 0, 0, 0, 0, 0, 0, 0, 61032, 0, 0, 0, 0, 0, 0, 0, 16135), -- 19893
+(19912, 1, 0, 0, 0, 0, 0, 0, 0, 61154, 0, 0, 0, 0, 0, 0, 0, 16135), -- 19912
+(19934, 1, 1, 0, 0, 0, 0, 0, 0, 61261, 61262, 0, 0, 0, 0, 0, 0, 16135), -- 19934
+(19935, 1, 0, 0, 0, 0, 0, 0, 0, 61263, 0, 0, 0, 0, 0, 0, 0, 16135), -- 19935
+(17851, 1, 0, 0, 0, 0, 0, 0, 0, 50808, 0, 0, 0, 0, 0, 0, 0, 16135), -- 17851
+(17878, 1, 0, 0, 0, 0, 0, 0, 0, 50901, 0, 0, 0, 0, 0, 0, 0, 16135), -- 17878
+(14735, 1, 0, 0, 0, 0, 0, 0, 0, 35501, 0, 0, 0, 0, 0, 0, 0, 16309), -- 14735
+(14812, 1, 0, 0, 0, 0, 0, 0, 0, 35985, 0, 0, 0, 0, 0, 0, 0, 16309), -- 14812
+(14849, 1, 0, 0, 0, 0, 0, 0, 0, 36077, 0, 0, 0, 0, 0, 0, 0, 16309), -- 14849
+(20683, 1, 0, 0, 0, 0, 0, 0, 0, 65981, 0, 0, 0, 0, 0, 0, 0, 16309), -- 20683
+(20750, 1, 0, 0, 0, 0, 0, 0, 0, 66439, 0, 0, 0, 0, 0, 0, 0, 16309), -- 20750
+(20809, 1, 1, 0, 0, 0, 0, 0, 0, 66599, 66828, 0, 0, 0, 0, 0, 0, 16309), -- 20809
+(15501, 1, 1, 1, 1, 1, 1, 0, 0, 39072, 39073, 39074, 39075, 39076, 39077, 0, 0, 19034), -- 15501
+(24306, 1, 0, 0, 0, 0, 0, 0, 0, 84755, 0, 0, 0, 0, 0, 0, 0, 19034), -- 24306
+(24613, 1, 1, 0, 0, 0, 0, 0, 0, 86637, 86638, 0, 0, 0, 0, 0, 0, 19342), -- 24613
+(24616, 1, 1, 1, 1, 0, 0, 0, 0, 86647, 86648, 86649, 86650, 0, 0, 0, 0, 19342), -- 24616
+(24619, 1, 0, 0, 0, 0, 0, 0, 0, 86664, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24619
+(24641, 1, 0, 0, 0, 0, 0, 0, 0, 86799, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24641
+(24642, 1, 0, 0, 0, 0, 0, 0, 0, 86800, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24642
+(24643, 1, 0, 0, 0, 0, 0, 0, 0, 86801, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24643
+(24652, 1, 0, 0, 0, 0, 0, 0, 0, 86821, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24652
+(24653, 1, 0, 0, 0, 0, 0, 0, 0, 86820, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24653
+(24656, 1, 0, 0, 0, 0, 0, 0, 0, 86831, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24656
+(24664, 1, 0, 0, 0, 0, 0, 0, 0, 86858, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24664
+(24669, 1, 0, 0, 0, 0, 0, 0, 0, 86870, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24669
+(24670, 1, 0, 0, 0, 0, 0, 0, 0, 86871, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24670
+(24672, 1, 0, 0, 0, 0, 0, 0, 0, 86877, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24672
+(24678, 1, 1, 1, 0, 0, 0, 0, 0, 86900, 86899, 86898, 0, 0, 0, 0, 0, 19342), -- 24678
+(24692, 1, 0, 0, 0, 0, 0, 0, 0, 86941, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24692
+(24705, 1, 0, 0, 0, 0, 0, 0, 0, 87079, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24705
+(24707, 1, 0, 0, 0, 0, 0, 0, 0, 87084, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24707
+(24714, 1, 0, 0, 0, 0, 0, 0, 0, 87144, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24714
+(24715, 1, 0, 0, 0, 0, 0, 0, 0, 87150, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24715
+(24716, 1, 0, 0, 0, 0, 0, 0, 0, 87153, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24716
+(24717, 1, 0, 0, 0, 0, 0, 0, 0, 87155, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24717
+(24720, 1, 0, 0, 0, 0, 0, 0, 0, 87164, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24720
+(24725, 1, 0, 0, 0, 0, 0, 0, 0, 87206, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24725
+(24726, 1, 0, 0, 0, 0, 0, 0, 0, 87207, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24726
+(24737, 1, 0, 0, 0, 0, 0, 0, 0, 87249, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24737
+(24741, 1, 0, 0, 0, 0, 0, 0, 0, 87264, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24741
+(24747, 1, 0, 0, 0, 0, 0, 0, 0, 87400, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24747
+(24751, 1, 1, 1, 1, 1, 1, 1, 0, 87408, 87409, 87410, 87411, 87412, 87416, 87417, 0, 19342), -- 24751
+(20293, 1, 0, 0, 0, 0, 0, 0, 0, 63979, 0, 0, 0, 0, 0, 0, 0, 19342), -- 20293
+(24790, 0.166, 0.166, 0.166, 0.166, 0.166, 0.166, 0, 0, 87266, 87267, 87268, 87269, 87270, 87271, 0, 0, 19342), -- 24790
+(24792, 0.166, 0.166, 0.166, 0.166, 0.166, 0.166, 0, 0, 87278, 87279, 87280, 87281, 87284, 87285, 0, 0, 19342), -- 24792
+(24793, 0.166, 0.166, 0.166, 0.166, 0.166, 0.166, 0, 0, 87286, 87287, 87288, 87290, 87292, 87293, 0, 0, 19342), -- 24793
+(24794, 0.166, 0.166, 0.166, 0.166, 0.166, 0.166, 0, 0, 87294, 87394, 87282, 87283, 87289, 87291, 0, 0, 19342), -- 24794
+(24806, 1, 0, 0, 0, 0, 0, 0, 0, 87483, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24806
+(24835, 1, 0, 0, 0, 0, 0, 0, 0, 87587, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24835
+(24847, 1, 0, 0, 0, 0, 0, 0, 0, 87643, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24847
+(24851, 1, 0, 0, 0, 0, 0, 0, 0, 87652, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24851
+(24880, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 87772, 87771, 87770, 87769, 87768, 87767, 87766, 87765, 19342), -- 24880
+(24884, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 87797, 87796, 87795, 87794, 87793, 87792, 87791, 87790, 19342), -- 24884
+(24892, 1, 0, 0, 0, 0, 0, 0, 0, 87807, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24892
+(22665, 1, 0, 0, 0, 0, 0, 0, 0, 74843, 0, 0, 0, 0, 0, 0, 0, 19342), -- 22665
+(24908, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 87863, 87862, 0, 0, 0, 0, 0, 0, 19342), -- 24908
+(24912, 0.33, 0.33, 0.33, 0, 0, 0, 0, 0, 87874, 87873, 87872, 0, 0, 0, 0, 0, 19342), -- 24912
+(24916, 0.33, 0.33, 0.33, 0, 0, 0, 0, 0, 87885, 87884, 87883, 0, 0, 0, 0, 0, 19342), -- 24916
+(24926, 0.33, 0.33, 0.33, 0, 0, 0, 0, 0, 87956, 87955, 87954, 0, 0, 0, 0, 0, 19342), -- 24926
+(24930, 0.33, 0.33, 0.33, 0, 0, 0, 0, 0, 87966, 87965, 87964, 0, 0, 0, 0, 0, 19342), -- 24930
+(24938, 0.2, 0.2, 0.2, 0.2, 0.2, 0, 0, 0, 87988, 87989, 87990, 87991, 87992, 0, 0, 0, 19342), -- 24938
+(22706, 1, 0, 0, 0, 0, 0, 0, 0, 75187, 0, 0, 0, 0, 0, 0, 0, 19342), -- 22706
+(24953, 1, 0, 0, 0, 0, 0, 0, 0, 88043, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24953
+(24954, 1, 0, 0, 0, 0, 0, 0, 0, 88044, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24954
+(24965, 0.25, 0.25, 0.25, 0.25, 0, 0, 0, 0, 88086, 88085, 88084, 88083, 0, 0, 0, 0, 19342), -- 24965
+(24978, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 88149, 88148, 88147, 88146, 88145, 88144, 88143, 88142, 19342), -- 24978
+(24982, 1, 0, 0, 0, 0, 0, 0, 0, 88159, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24982
+(24983, 1, 0, 0, 0, 0, 0, 0, 0, 88160, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24983
+(24986, 0.166, 0.166, 0.166, 0.166, 0.166, 0.166, 0, 0, 88181, 88180, 88179, 88178, 88177, 88176, 0, 0, 19342), -- 24986
+(24993, 1, 0, 0, 0, 0, 0, 0, 0, 88203, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24993
+(25013, 0.166, 0.166, 0.166, 0.166, 0.166, 0.166, 0, 0, 88311, 88309, 88308, 88307, 88306, 88305, 0, 0, 19342), -- 25013
+(25069, 1, 0, 0, 0, 0, 0, 0, 0, 88530, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25069
+(25072, 1, 0, 0, 0, 0, 0, 0, 0, 88537, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25072
+(25079, 1, 0, 0, 0, 0, 0, 0, 0, 88569, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25079
+(25080, 1, 0, 0, 0, 0, 0, 0, 0, 88571, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25080
+(22846, 1, 0, 0, 0, 0, 0, 0, 0, 76040, 0, 0, 0, 0, 0, 0, 0, 19342), -- 22846
+(25121, 1, 0, 0, 0, 0, 0, 0, 0, 88708, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25121
+(25130, 1, 0, 0, 0, 0, 0, 0, 0, 88736, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25130
+(25134, 0.25, 1, 1, 1, 0, 0, 0, 0, 88742, 88743, 88744, 88744, 0, 0, 0, 0, 19342), -- 25134
+(25148, 1, 0, 0, 0, 0, 0, 0, 0, 88784, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25148
+(25149, 1, 0, 0, 0, 0, 0, 0, 0, 88792, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25149
+(25151, 1, 0, 0, 0, 0, 0, 0, 0, 88799, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25151
+(25154, 1, 0, 0, 0, 0, 0, 0, 0, 88807, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25154
+(25159, 1, 0, 0, 0, 0, 0, 0, 0, 88832, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25159
+(25165, 1, 0, 0, 0, 0, 0, 0, 0, 88841, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25165
+(25172, 1, 0, 0, 0, 0, 0, 0, 0, 88880, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25172
+(25173, 1, 0, 0, 0, 0, 0, 0, 0, 87636, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25173
+(25174, 1, 0, 0, 0, 0, 0, 0, 0, 87642, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25174
+(25178, 1, 0, 0, 0, 0, 0, 0, 0, 88930, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25178
+(25183, 1, 0, 0, 0, 0, 0, 0, 0, 88941, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25183
+(25192, 1, 0, 0, 0, 0, 0, 0, 0, 88955, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25192
+(25194, 1, 0, 0, 0, 0, 0, 0, 0, 88959, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25194
+(20728, 1, 0, 0, 0, 0, 0, 0, 0, 66342, 0, 0, 0, 0, 0, 0, 0, 19342), -- 20728
+(25212, 1, 0, 0, 0, 0, 0, 0, 0, 89048, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25212
+(25236, 1, 0, 0, 0, 0, 0, 0, 0, 89198, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25236
+(25242, 1, 0, 0, 0, 0, 0, 0, 0, 89237, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25242
+(25246, 1, 0, 0, 0, 0, 0, 0, 0, 89245, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25246
+(25248, 1, 0, 0, 0, 0, 0, 0, 0, 89247, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25248
+(25273, 1, 0, 0, 0, 0, 0, 0, 0, 89362, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25273
+(25275, 1, 0, 0, 0, 0, 0, 0, 0, 89364, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25275
+(25276, 1, 0, 0, 0, 0, 0, 0, 0, 89365, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25276
+(25278, 1, 0, 0, 0, 0, 0, 0, 0, 89367, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25278
+(25279, 1, 0, 0, 0, 0, 0, 0, 0, 89369, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25279
+(25280, 1, 0, 0, 0, 0, 0, 0, 0, 89370, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25280
+(25281, 1, 0, 0, 0, 0, 0, 0, 0, 89371, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25281
+(23099, 1, 0, 0, 0, 0, 0, 0, 0, 77272, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23099
+(23103, 1, 0, 0, 0, 0, 0, 0, 0, 77276, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23103
+(23104, 1, 0, 0, 0, 0, 0, 0, 0, 77277, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23104
+(23105, 1, 0, 0, 0, 0, 0, 0, 0, 77278, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23105
+(23114, 1, 0, 0, 0, 0, 0, 0, 0, 77319, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23114
+(25352, 1, 1, 0, 0, 0, 0, 0, 0, 89597, 90704, 0, 0, 0, 0, 0, 0, 19342), -- 25352
+(23115, 1, 0, 0, 0, 0, 0, 0, 0, 77320, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23115
+(9727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19342), -- 9727
+(25423, 1, 1, 1, 1, 1, 1, 1, 1, 89947, 89948, 89949, 89950, 89951, 89952, 89953, 89954, 19342), -- 25423
+(25426, 1, 0, 0, 0, 0, 0, 0, 0, 89962, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25426
+(25429, 1, 0, 0, 0, 0, 0, 0, 0, 89983, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25429
+(25433, 1, 0, 0, 0, 0, 0, 0, 0, 85297, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25433
+(25434, 1, 0, 0, 0, 0, 0, 0, 0, 90015, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25434
+(23214, 1, 0, 0, 0, 0, 0, 0, 0, 77680, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23214
+(25457, 1, 0, 0, 0, 0, 0, 0, 0, 90070, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25457
+(23221, 1, 1, 1, 0, 0, 0, 0, 0, 77742, 77743, 77744, 0, 0, 0, 0, 0, 19342), -- 23221
+(25477, 1, 0, 0, 0, 0, 0, 0, 0, 90168, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25477
+(25479, 1, 0, 0, 0, 0, 0, 0, 0, 90139, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25479
+(23259, 1, 1, 1, 1, 0, 0, 0, 0, 78027, 78028, 78029, 78039, 0, 0, 0, 0, 19342), -- 23259
+(23272, 1, 0, 0, 0, 0, 0, 0, 0, 76110, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23272
+(23273, 1, 0, 0, 0, 0, 0, 0, 0, 76111, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23273
+(23274, 1, 0, 0, 0, 0, 0, 0, 0, 76112, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23274
+(23275, 1, 0, 0, 0, 0, 0, 0, 0, 76113, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23275
+(23279, 1, 1, 1, 0, 0, 0, 0, 0, 78014, 78109, 83144, 0, 0, 0, 0, 0, 19342), -- 23279
+(25519, 1, 0, 0, 0, 0, 0, 0, 0, 90186, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25519
+(25520, 1, 0, 0, 0, 0, 0, 0, 0, 90188, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25520
+(25524, 1, 0, 0, 0, 0, 0, 0, 0, 90219, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25524
+(25526, 1, 0, 0, 0, 0, 0, 0, 0, 90221, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25526
+(25527, 1, 0, 0, 0, 0, 0, 0, 0, 90229, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25527
+(25528, 1, 0, 0, 0, 0, 0, 0, 0, 90230, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25528
+(25554, 1, 0, 0, 0, 0, 0, 0, 0, 90335, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25554
+(25567, 1, 0, 0, 0, 0, 0, 0, 0, 90370, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25567
+(23330, 1, 0, 0, 0, 0, 0, 0, 0, 78401, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23330
+(25570, 1, 0, 0, 0, 0, 0, 0, 0, 90386, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25570
+(23341, 1, 1, 0, 0, 0, 0, 0, 0, 78488, 78489, 0, 0, 0, 0, 0, 0, 19342), -- 23341
+(25591, 1, 1, 1, 1, 1, 1, 0, 0, 90511, 90512, 90513, 90514, 90515, 90528, 0, 0, 19342), -- 25591
+(25592, 1, 0, 0, 0, 0, 0, 0, 0, 90524, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25592
+(25609, 1, 0, 0, 0, 0, 0, 0, 0, 90568, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25609
+(25610, 1, 0, 0, 0, 0, 0, 0, 0, 90567, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25610
+(25611, 1, 0, 0, 0, 0, 0, 0, 0, 90569, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25611
+(16664, 1, 0, 0, 0, 0, 0, 0, 0, 44820, 0, 0, 0, 0, 0, 0, 0, 19342), -- 16664
+(25638, 1, 0, 0, 0, 0, 0, 0, 0, 90723, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25638
+(25678, 1, 0, 0, 0, 0, 0, 0, 0, 90912, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25678
+(25682, 1, 0, 0, 0, 0, 0, 0, 0, 90930, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25682
+(25685, 1, 0, 0, 0, 0, 0, 0, 0, 90961, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25685
+(23470, 1, 0, 0, 0, 0, 0, 0, 0, 79152, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23470
+(25715, 1, 0, 0, 0, 0, 0, 0, 0, 91085, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25715
+(25717, 1, 0, 0, 0, 0, 0, 0, 0, 91084, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25717
+(23484, 1, 0, 0, 0, 0, 0, 0, 0, 79207, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23484
+(25731, 1, 0, 0, 0, 0, 0, 0, 0, 91301, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25731
+(25732, 1, 0, 0, 0, 0, 0, 0, 0, 91333, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25732
+(23509, 1, 1, 1, 0, 0, 0, 0, 0, 79410, 79409, 83149, 0, 0, 0, 0, 0, 19342), -- 23509
+(23510, 1, 0, 0, 0, 0, 0, 0, 0, 79411, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23510
+(23511, 1, 0, 0, 0, 0, 0, 0, 0, 79111, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23511
+(25783, 1, 0, 0, 0, 0, 0, 0, 0, 91437, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25783
+(25786, 1, 0, 0, 0, 0, 0, 0, 0, 91453, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25786
+(23555, 1, 0, 0, 0, 0, 0, 0, 0, 79922, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23555
+(23564, 1, 0, 0, 0, 0, 0, 0, 0, 80025, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23564
+(25801, 1, 0, 0, 0, 0, 0, 0, 0, 91472, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25801
+(25806, 1, 0, 0, 0, 0, 0, 0, 0, 91479, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25806
+(25808, 1, 0, 0, 0, 0, 0, 0, 0, 91482, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25808
+(23598, 1, 0, 0, 0, 0, 0, 0, 0, 80284, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23598
+(23630, 1, 0, 0, 0, 0, 0, 0, 0, 80599, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23630
+(23686, 1, 0, 0, 0, 0, 0, 0, 0, 81037, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23686
+(25930, 1, 0, 0, 0, 0, 0, 0, 0, 92002, 0, 0, 0, 0, 0, 0, 0, 19342), -- 25930
+(23703, 1, 0, 0, 0, 0, 0, 0, 0, 81094, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23703
+(23711, 1, 0, 0, 0, 0, 0, 0, 0, 81139, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23711
+(23714, 1, 0, 0, 0, 0, 0, 0, 0, 81195, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23714
+(23739, 1, 1, 1, 1, 1, 0, 0, 0, 81296, 81297, 81298, 81299, 81300, 0, 0, 0, 19342), -- 23739
+(23740, 1, 0, 0, 0, 0, 0, 0, 0, 81315, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23740
+(23754, 1, 0, 0, 0, 0, 0, 0, 0, 81411, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23754
+(23761, 1, 1, 1, 1, 0, 0, 0, 0, 81462, 85495, 85497, 86020, 0, 0, 0, 0, 19342), -- 23761
+(23762, 1, 0, 0, 0, 0, 0, 0, 0, 81508, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23762
+(23763, 1, 0, 0, 0, 0, 0, 0, 0, 81486, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23763
+(23766, 1, 0, 0, 0, 0, 0, 0, 0, 81547, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23766
+(23776, 1, 0, 0, 0, 0, 0, 0, 0, 81613, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23776
+(23779, 1, 0, 0, 0, 0, 0, 0, 0, 81640, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23779
+(23783, 1, 0, 0, 0, 0, 0, 0, 0, 81647, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23783
+(23795, 1, 0, 0, 0, 0, 0, 0, 0, 81690, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23795
+(23796, 1, 0, 0, 0, 0, 0, 0, 0, 81691, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23796
+(23799, 1, 0, 0, 0, 0, 0, 0, 0, 81696, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23799
+(23803, 1, 0, 0, 0, 0, 0, 0, 0, 81729, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23803
+(23804, 1, 0, 0, 0, 0, 0, 0, 0, 81730, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23804
+(23808, 1, 0, 0, 0, 0, 0, 0, 0, 81748, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23808
+(23809, 1, 0, 0, 0, 0, 0, 0, 0, 81751, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23809
+(23822, 1, 0, 0, 0, 0, 0, 0, 0, 81812, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23822
+(23823, 1, 0, 0, 0, 0, 0, 0, 0, 81828, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23823
+(23829, 1, 0, 0, 0, 0, 0, 0, 0, 81871, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23829
+(23841, 1, 0, 0, 0, 0, 0, 0, 0, 81955, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23841
+(23843, 1, 0, 0, 0, 0, 0, 0, 0, 81966, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23843
+(23845, 1, 1, 0, 0, 0, 0, 0, 0, 81976, 81977, 0, 0, 0, 0, 0, 0, 19342), -- 23845
+(23849, 1, 0, 0, 0, 0, 0, 0, 0, 82002, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23849
+(23850, 1, 1, 1, 1, 1, 2, 0, 0, 82011, 82012, 82014, 82016, 82017, 84719, 0, 0, 19342), -- 23850
+(23861, 1, 0, 0, 0, 0, 0, 0, 0, 82040, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23861
+(23862, 1, 0, 0, 0, 0, 0, 0, 0, 82041, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23862
+(23873, 1, 0, 0, 0, 0, 0, 0, 0, 82106, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23873
+(21640, 1, 0, 0, 0, 0, 0, 0, 0, 68663, 0, 0, 0, 0, 0, 0, 0, 19342), -- 21640
+(23877, 1, 0, 0, 0, 0, 0, 0, 0, 82125, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23877
+(23878, 1, 0, 0, 0, 0, 0, 0, 0, 82127, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23878
+(23882, 1, 0, 0, 0, 0, 0, 0, 0, 82170, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23882
+(23883, 1, 0, 0, 0, 0, 0, 0, 0, 82174, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23883
+(23904, 1, 0, 0, 0, 0, 0, 0, 0, 82304, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23904
+(23905, 1, 0, 0, 0, 0, 0, 0, 0, 82305, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23905
+(23920, 1, 0, 0, 0, 0, 0, 0, 0, 82368, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23920
+(23932, 1, 1, 1, 1, 1, 0, 0, 0, 77569, 77570, 77571, 77572, 77573, 0, 0, 0, 19342), -- 23932
+(23944, 1, 0, 0, 0, 0, 0, 0, 0, 82631, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23944
+(23953, 1, 0, 0, 0, 0, 0, 0, 0, 82683, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23953
+(23957, 1, 0, 0, 0, 0, 0, 0, 0, 82695, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23957
+(23966, 1, 0, 0, 0, 0, 0, 0, 0, 82726, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23966
+(23973, 1, 0, 0, 0, 0, 0, 0, 0, 82790, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23973
+(23979, 1, 0, 0, 0, 0, 0, 0, 0, 82867, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23979
+(23983, 1, 0, 0, 0, 0, 0, 0, 0, 82902, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23983
+(23986, 1, 0, 0, 0, 0, 0, 0, 0, 82907, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23986
+(23987, 1, 0, 0, 0, 0, 0, 0, 0, 82908, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23987
+(23991, 1, 0, 0, 0, 0, 0, 0, 0, 82916, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23991
+(23993, 1, 0, 0, 0, 0, 0, 0, 0, 82999, 0, 0, 0, 0, 0, 0, 0, 19342), -- 23993
+(23999, 1, 1, 1, 0, 0, 0, 0, 0, 83023, 83024, 83025, 0, 0, 0, 0, 0, 19342), -- 23999
+(24000, 1, 0, 0, 0, 0, 0, 0, 0, 83026, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24000
+(24002, 1, 0, 0, 0, 0, 0, 0, 0, 83030, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24002
+(24003, 1, 0, 0, 0, 0, 0, 0, 0, 83035, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24003
+(24017, 1, 0, 0, 0, 0, 0, 0, 0, 83137, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24017
+(24021, 1, 0, 0, 0, 0, 0, 0, 0, 83160, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24021
+(24022, 1, 0, 0, 0, 0, 0, 0, 0, 83163, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24022
+(24025, 1, 0, 0, 0, 0, 0, 0, 0, 83170, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24025
+(24026, 1, 0, 0, 0, 0, 0, 0, 0, 83173, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24026
+(24036, 1, 0, 0, 0, 0, 0, 0, 0, 83190, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24036
+(24037, 1, 0, 0, 0, 0, 0, 0, 0, 83191, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24037
+(24038, 1, 0, 0, 0, 0, 0, 0, 0, 83192, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24038
+(24056, 1, 0, 0, 0, 0, 0, 0, 0, 83315, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24056
+(24057, 1, 0, 0, 0, 0, 0, 0, 0, 83327, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24057
+(24063, 1, 0, 0, 0, 0, 0, 0, 0, 83345, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24063
+(24064, 1, 0, 0, 0, 0, 0, 0, 0, 83346, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24064
+(24065, 1, 0, 0, 0, 0, 0, 0, 0, 83347, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24065
+(24070, 1, 1, 0, 0, 0, 0, 0, 0, 83392, 83393, 0, 0, 0, 0, 0, 0, 19342), -- 24070
+(24075, 1, 0, 0, 0, 0, 0, 0, 0, 83411, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24075
+(24076, 1, 0, 0, 0, 0, 0, 0, 0, 83413, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24076
+(24099, 1, 1, 0, 0, 0, 0, 0, 0, 83484, 83485, 0, 0, 0, 0, 0, 0, 19342), -- 24099
+(24100, 1, 0, 0, 0, 0, 0, 0, 0, 83505, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24100
+(24103, 1, 0, 0, 0, 0, 0, 0, 0, 83537, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24103
+(24104, 1, 1, 1, 1, 0, 0, 0, 0, 83543, 83544, 83545, 83546, 0, 0, 0, 0, 19342), -- 24104
+(24106, 1, 1, 0, 0, 0, 0, 0, 0, 83552, 90550, 0, 0, 0, 0, 0, 0, 19342), -- 24106
+(24118, 1, 0, 0, 0, 0, 0, 0, 0, 83608, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24118
+(24124, 1, 0, 0, 0, 0, 0, 0, 0, 83623, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24124
+(24125, 1, 0, 0, 0, 0, 0, 0, 0, 83624, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24125
+(24128, 1, 0, 0, 0, 0, 0, 0, 0, 83636, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24128
+(24129, 1, 0, 0, 0, 0, 0, 0, 0, 83637, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24129
+(24135, 1, 0, 0, 0, 0, 0, 0, 0, 83682, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24135
+(24140, 1, 0, 0, 0, 0, 0, 0, 0, 83707, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24140
+(24142, 1, 0, 0, 0, 0, 0, 0, 0, 83722, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24142
+(24143, 1, 0, 0, 0, 0, 0, 0, 0, 83723, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24143
+(24153, 1, 0, 0, 0, 0, 0, 0, 0, 83756, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24153
+(24154, 1, 0, 0, 0, 0, 0, 0, 0, 83755, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24154
+(24158, 1, 0, 0, 0, 0, 0, 0, 0, 83777, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24158
+(24161, 1, 0, 0, 0, 0, 0, 0, 0, 83795, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24161
+(24162, 1, 0, 0, 0, 0, 0, 0, 0, 83796, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24162
+(24163, 1, 0, 0, 0, 0, 0, 0, 0, 83797, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24163
+(24164, 1, 0, 0, 0, 0, 0, 0, 0, 83802, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24164
+(24170, 1, 0, 0, 0, 0, 0, 0, 0, 83851, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24170
+(24171, 1, 0, 0, 0, 0, 0, 0, 0, 83870, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24171
+(24172, 1, 0, 0, 0, 0, 0, 0, 0, 83881, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24172
+(24180, 1, 0, 0, 0, 0, 0, 0, 0, 83900, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24180
+(24181, 1, 0, 0, 0, 0, 0, 0, 0, 83934, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24181
+(24186, 1, 0, 0, 0, 0, 0, 0, 0, 83977, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24186
+(24188, 1, 0, 0, 0, 0, 0, 0, 0, 83992, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24188
+(24190, 1, 0, 0, 0, 0, 0, 0, 0, 84007, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24190
+(24194, 1, 0, 0, 0, 0, 0, 0, 0, 84027, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24194
+(24198, 1, 0, 0, 0, 0, 0, 0, 0, 84039, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24198
+(24200, 1, 0, 0, 0, 0, 0, 0, 0, 84049, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24200
+(24201, 1, 0, 0, 0, 0, 0, 0, 0, 84050, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24201
+(24203, 1, 0, 0, 0, 0, 0, 0, 0, 84057, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24203
+(24204, 1, 0, 0, 0, 0, 0, 0, 0, 84059, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24204
+(24205, 1, 0, 0, 0, 0, 0, 0, 0, 84063, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24205
+(24207, 1, 0, 0, 0, 0, 0, 0, 0, 84077, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24207
+(24209, 1, 0, 0, 0, 0, 0, 0, 0, 84082, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24209
+(24232, 1, 0, 0, 0, 0, 0, 0, 0, 84284, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24232
+(24237, 1, 0, 0, 0, 0, 0, 0, 0, 84325, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24237
+(24240, 1, 0, 0, 0, 0, 0, 0, 0, 84336, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24240
+(24248, 1, 0, 0, 0, 0, 0, 0, 0, 84479, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24248
+(24251, 1, 0, 0, 0, 0, 0, 0, 0, 84512, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24251
+(24252, 1, 0, 0, 0, 0, 0, 0, 0, 84514, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24252
+(24261, 1, 0, 0, 0, 0, 0, 0, 0, 84548, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24261
+(24267, 1, 0, 0, 0, 0, 0, 0, 0, 84605, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24267
+(24268, 1, 0, 0, 0, 0, 0, 0, 0, 84606, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24268
+(24269, 1, 0, 0, 0, 0, 0, 0, 0, 84607, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24269
+(24275, 1, 0, 0, 0, 0, 0, 0, 0, 84622, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24275
+(24293, 1, 0, 0, 0, 0, 0, 0, 0, 84697, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24293
+(24294, 1, 0, 0, 0, 0, 0, 0, 0, 84699, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24294
+(24295, 1, 0, 0, 0, 0, 0, 0, 0, 84701, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24295
+(24296, 1, 0, 0, 0, 0, 0, 0, 0, 84702, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24296
+(24297, 1, 0, 0, 0, 0, 0, 0, 0, 84710, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24297
+(24303, 1, 0, 0, 0, 0, 0, 0, 0, 81764, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24303
+(24305, 1, 0, 0, 0, 0, 0, 0, 0, 84746, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24305
+(24322, 1, 0, 0, 0, 0, 0, 0, 0, 84835, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24322
+(24326, 1, 0, 0, 0, 0, 0, 0, 0, 84849, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24326
+(24327, 1, 0, 0, 0, 0, 0, 0, 0, 84857, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24327
+(24328, 1, 0, 0, 0, 0, 0, 0, 0, 84867, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24328
+(24337, 1, 0, 0, 0, 0, 0, 0, 0, 84936, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24337
+(24349, 1, 0, 0, 0, 0, 0, 0, 0, 85029, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24349
+(24355, 1, 0, 0, 0, 0, 0, 0, 0, 85068, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24355
+(24363, 1, 0, 0, 0, 0, 0, 0, 0, 85108, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24363
+(24369, 1, 0, 0, 0, 0, 0, 0, 0, 85142, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24369
+(24378, 1, 0, 0, 0, 0, 0, 0, 0, 85156, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24378
+(24379, 1, 0, 0, 0, 0, 0, 0, 0, 85157, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24379
+(24380, 1, 0, 0, 0, 0, 0, 0, 0, 85163, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24380
+(24415, 1, 0, 0, 0, 0, 0, 0, 0, 85352, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24415
+(24416, 1, 0, 0, 0, 0, 0, 0, 0, 85354, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24416
+(24417, 1, 0, 0, 0, 0, 0, 0, 0, 85356, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24417
+(24418, 1, 0, 0, 0, 0, 0, 0, 0, 85366, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24418
+(24419, 1, 0, 0, 0, 0, 0, 0, 0, 85332, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24419
+(24424, 1, 0, 0, 0, 0, 0, 0, 0, 85393, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24424
+(24440, 1, 0.8, 0.8, 1, 0, 0, 0, 0, 85485, 85486, 85487, 86021, 0, 0, 0, 0, 19342), -- 24440
+(24441, 1, 1, 1, 1, 0, 0, 0, 0, 85490, 85491, 85492, 85493, 0, 0, 0, 0, 19342), -- 24441
+(24451, 1, 0, 0, 0, 0, 0, 0, 0, 85530, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24451
+(24456, 1, 0, 0, 0, 0, 0, 0, 0, 85550, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24456
+(24458, 1, 0, 0, 0, 0, 0, 0, 0, 85552, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24458
+(24467, 1, 0, 0, 0, 0, 0, 0, 0, 85571, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24467
+(24468, 1, 0, 0, 0, 0, 0, 0, 0, 85588, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24468
+(24476, 1, 0, 0, 0, 0, 0, 0, 0, 85658, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24476
+(24477, 1, 0, 0, 0, 0, 0, 0, 0, 85659, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24477
+(24478, 1, 0, 0, 0, 0, 0, 0, 0, 85664, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24478
+(24485, 1, 0, 0, 0, 0, 0, 0, 0, 85691, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24485
+(24506, 1, 0, 0, 0, 0, 0, 0, 0, 85810, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24506
+(24510, 1, 0, 0, 0, 0, 0, 0, 0, 85819, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24510
+(24513, 1, 1, 1, 0, 0, 0, 0, 0, 85897, 85899, 85900, 0, 0, 0, 0, 0, 19342), -- 24513
+(24519, 1, 0, 0, 0, 0, 0, 0, 0, 85980, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24519
+(24521, 1, 0, 0, 0, 0, 0, 0, 0, 85993, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24521
+(24523, 1, 0, 0, 0, 0, 0, 0, 0, 85995, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24523
+(24524, 1, 0, 0, 0, 0, 0, 0, 0, 85996, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24524
+(24531, 1, 1, 0, 0, 0, 0, 0, 0, 81462, 85495, 0, 0, 0, 0, 0, 0, 19342), -- 24531
+(24539, 1, 0, 0, 0, 0, 0, 0, 0, 86080, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24539
+(24540, 1, 0, 0, 0, 0, 0, 0, 0, 86081, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24540
+(24541, 1, 0, 0, 0, 0, 0, 0, 0, 86086, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24541
+(24547, 1, 0, 0, 0, 0, 0, 0, 0, 86130, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24547
+(24552, 1, 0, 0, 0, 0, 0, 0, 0, 86184, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24552
+(24572, 1, 0, 0, 0, 0, 0, 0, 0, 86372, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24572
+(24573, 1, 0, 0, 0, 0, 0, 0, 0, 86395, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24573
+(24584, 1, 0, 0, 0, 0, 0, 0, 0, 86487, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24584
+(24589, 1, 0, 0, 0, 0, 0, 0, 0, 86515, 0, 0, 0, 0, 0, 0, 0, 19342), -- 24589
+(24599, 1, 0, 0, 0, 0, 0, 0, 0, 86568, 0, 0, 0, 0, 0, 0, 0, 19342); -- 24599
+
+
+UPDATE `npc_text` SET `BroadcastTextId0`=39580, `VerifiedBuild`=16135 WHERE `ID`=15661; -- 15661
+UPDATE `npc_text` SET `BroadcastTextId0`=39582, `VerifiedBuild`=16135 WHERE `ID`=15662; -- 15662
+UPDATE `npc_text` SET `VerifiedBuild`=16135 WHERE `ID` IN (13425 /*13425*/, 13430 /*13430*/, 13433 /*13433*/, 13445 /*13445*/, 11210 /*11210*/, 11231 /*11231*/, 9023 /*9023*/, 9085 /*9085*/, 9181 /*9181*/, 9203 /*9203*/, 9219 /*9219*/, 9248 /*9248*/, 9250 /*9250*/, 9256 /*9256*/, 9259 /*9259*/, 9260 /*9260*/, 9267 /*9267*/, 9269 /*9269*/, 9275 /*9275*/, 9288 /*9288*/, 9290 /*9290*/, 9361 /*9361*/, 9362 /*9362*/, 9363 /*9363*/, 9364 /*9364*/, 9365 /*9365*/, 9366 /*9366*/, 9367 /*9367*/, 9369 /*9369*/, 9373 /*9373*/, 9375 /*9375*/, 9377 /*9377*/, 9405 /*9405*/, 9407 /*9407*/, 13883 /*13883*/, 9419 /*9419*/, 13903 /*13903*/, 13910 /*13910*/, 9442 /*9442*/, 9443 /*9443*/, 9472 /*9472*/, 7239 /*7239*/, 9488 /*9488*/, 9494 /*9494*/, 9495 /*9495*/, 2810 /*2810*/, 9522 /*9522*/, 14014 /*14014*/, 14047 /*14047*/, 9620 /*9620*/, 7403 /*7403*/, 9644 /*9644*/, 9657 /*9657*/, 14174 /*14174*/, 14176 /*14176*/, 14182 /*14182*/, 14206 /*14206*/, 14208 /*14208*/, 14215 /*14215*/, 14221 /*14221*/, 9752 /*9752*/, 821 /*821*/, 14245 /*14245*/, 9771 /*9771*/, 7536 /*7536*/, 9774 /*9774*/, 9775 /*9775*/, 16490 /*16490*/, 9787 /*9787*/, 9801 /*9801*/, 12083 /*12083*/, 12084 /*12084*/, 9847 /*9847*/, 9848 /*9848*/, 12086 /*12086*/, 12087 /*12087*/, 12088 /*12088*/, 9853 /*9853*/, 938 /*938*/, 9922 /*9922*/, 9937 /*9937*/, 5475 /*5475*/, 9958 /*9958*/, 9959 /*9959*/, 9960 /*9960*/, 5495 /*5495*/, 9969 /*9969*/, 9970 /*9970*/, 5516 /*5516*/, 9995 /*9995*/, 10003 /*10003*/, 10004 /*10004*/, 10005 /*10005*/, 10006 /*10006*/, 10027 /*10027*/, 12267 /*12267*/, 12277 /*12277*/, 12278 /*12278*/, 10053 /*10053*/, 10056 /*10056*/, 10064 /*10064*/, 10103 /*10103*/, 10104 /*10104*/, 10105 /*10105*/, 14613 /*14613*/, 14614 /*14614*/, 14615 /*14615*/, 14617 /*14617*/, 14618 /*14618*/, 14619 /*14619*/, 12384 /*12384*/, 12422 /*12422*/, 12424 /*12424*/, 12441 /*12441*/, 14688 /*14688*/, 14689 /*14689*/, 12472 /*12472*/, 12477 /*12477*/, 12489 /*12489*/, 10301 /*10301*/, 12585 /*12585*/, 8123 /*8123*/, 12611 /*12611*/, 12618 /*12618*/, 12619 /*12619*/, 12620 /*12620*/, 12647 /*12647*/, 12678 /*12678*/, 12703 /*12703*/, 12715 /*12715*/, 12718 /*12718*/, 12720 /*12720*/, 12721 /*12721*/, 12722 /*12722*/, 12752 /*12752*/, 1571 /*1571*/, 12773 /*12773*/, 1606 /*1606*/, 12793 /*12793*/, 12794 /*12794*/, 12796 /*12796*/, 12797 /*12797*/, 12798 /*12798*/, 12811 /*12811*/, 12812 /*12812*/, 6101 /*6101*/, 3874 /*3874*/, 12824 /*12824*/, 12880 /*12880*/, 10643 /*10643*/, 10662 /*10662*/, 12906 /*12906*/, 10680 /*10680*/, 12939 /*12939*/, 15191 /*15191*/, 13003 /*13003*/, 13019 /*13019*/, 13033 /*13033*/, 13034 /*13034*/, 17564 /*17564*/, 17565 /*17565*/, 17566 /*17566*/, 17567 /*17567*/, 17569 /*17569*/, 17570 /*17570*/, 17571 /*17571*/, 13100 /*13100*/, 1920 /*1920*/, 8634 /*8634*/, 13120 /*13120*/, 13124 /*13124*/, 13125 /*13125*/, 8659 /*8659*/, 13138 /*13138*/, 13147 /*13147*/, 8674 /*8674*/, 17647 /*17647*/, 13177 /*13177*/, 13179 /*13179*/, 8750 /*8750*/, 13262 /*13262*/, 13267 /*13267*/, 13287 /*13287*/, 13304 /*13304*/, 13305 /*13305*/, 13306 /*13306*/, 13307 /*13307*/, 13308 /*13308*/, 13318 /*13318*/, 15572 /*15572*/, 13352 /*13352*/, 13355 /*13355*/, 8883 /*8883*/, 13359 /*13359*/, 13362 /*13362*/, 13375 /*13375*/, 4442 /*4442*/, 13395 /*13395*/, 13397 /*13397*/, 13402 /*13402*/);
+UPDATE `npc_text` SET `BroadcastTextId0`=39591, `VerifiedBuild`=16135 WHERE `ID`=15665; -- 15665
+UPDATE `npc_text` SET `BroadcastTextId0`=51017, `VerifiedBuild`=16135 WHERE `ID`=17907; -- 17907
+UPDATE `npc_text` SET `BroadcastTextId0`=22141, `VerifiedBuild`=16135 WHERE `ID`=11209; -- 11209
+UPDATE `npc_text` SET `BroadcastTextId1`=4623, `VerifiedBuild`=16135 WHERE `ID`=2278; -- 2278
+UPDATE `npc_text` SET `BroadcastTextId0`=29562, `VerifiedBuild`=16135 WHERE `ID`=13470; -- 13470
+UPDATE `npc_text` SET `BroadcastTextId0`=29578, `VerifiedBuild`=16135 WHERE `ID`=13471; -- 13471
+UPDATE `npc_text` SET `BroadcastTextId0`=39714, `BroadcastTextId1`=39715, `BroadcastTextId2`=39716, `BroadcastTextId3`=39717, `BroadcastTextId4`=39718, `BroadcastTextId5`=39719, `BroadcastTextId6`=39720, `BroadcastTextId7`=39721, `VerifiedBuild`=16135 WHERE `ID`=15711; -- 15711
+UPDATE `npc_text` SET `BroadcastTextId0`=39743, `VerifiedBuild`=16135 WHERE `ID`=15719; -- 15719
+UPDATE `npc_text` SET `BroadcastTextId0`=39758, `VerifiedBuild`=16135 WHERE `ID`=15725; -- 15725
+UPDATE `npc_text` SET `BroadcastTextId0`=39806, `VerifiedBuild`=16135 WHERE `ID`=15738; -- 15738
+UPDATE `npc_text` SET `BroadcastTextId0`=39812, `VerifiedBuild`=16135 WHERE `ID`=15741; -- 15741
+UPDATE `npc_text` SET `BroadcastTextId0`=39953, `VerifiedBuild`=16135 WHERE `ID`=15760; -- 15760
+UPDATE `npc_text` SET `BroadcastTextId0`=39995, `VerifiedBuild`=16135 WHERE `ID`=15772; -- 15772
+UPDATE `npc_text` SET `BroadcastTextId0`=39998, `VerifiedBuild`=16135 WHERE `ID`=15774; -- 15774
+UPDATE `npc_text` SET `BroadcastTextId0`=40011, `VerifiedBuild`=16135 WHERE `ID`=15778; -- 15778
+UPDATE `npc_text` SET `BroadcastTextId0`=40014, `VerifiedBuild`=16135 WHERE `ID`=15780; -- 15780
+UPDATE `npc_text` SET `BroadcastTextId0`=40016, `VerifiedBuild`=16135 WHERE `ID`=15781; -- 15781
+UPDATE `npc_text` SET `BroadcastTextId0`=40200, `VerifiedBuild`=16135 WHERE `ID`=15802; -- 15802
+UPDATE `npc_text` SET `BroadcastTextId0`=40209, `VerifiedBuild`=16135 WHERE `ID`=15807; -- 15807
+UPDATE `npc_text` SET `BroadcastTextId0`=40211, `VerifiedBuild`=16135 WHERE `ID`=15808; -- 15808
+UPDATE `npc_text` SET `BroadcastTextId0`=40241, `VerifiedBuild`=16135 WHERE `ID`=15816; -- 15816
+UPDATE `npc_text` SET `BroadcastTextId0`=40255, `VerifiedBuild`=16135 WHERE `ID`=15818; -- 15818
+UPDATE `npc_text` SET `BroadcastTextId0`=40238, `VerifiedBuild`=16135 WHERE `ID`=15819; -- 15819
+UPDATE `npc_text` SET `BroadcastTextId0`=40245, `VerifiedBuild`=16135 WHERE `ID`=15820; -- 15820
+UPDATE `npc_text` SET `BroadcastTextId0`=40306, `VerifiedBuild`=16135 WHERE `ID`=15834; -- 15834
+UPDATE `npc_text` SET `BroadcastTextId0`=40400, `VerifiedBuild`=16135 WHERE `ID`=15849; -- 15849
+UPDATE `npc_text` SET `BroadcastTextId0`=40414, `VerifiedBuild`=16135 WHERE `ID`=15852; -- 15852
+UPDATE `npc_text` SET `BroadcastTextId0`=4719, `VerifiedBuild`=16135 WHERE `ID`=2433; -- 2433
+UPDATE `npc_text` SET `BroadcastTextId0`=40485, `VerifiedBuild`=16135 WHERE `ID`=15878; -- 15878
+UPDATE `npc_text` SET `BroadcastTextId0`=40496, `VerifiedBuild`=16135 WHERE `ID`=15880; -- 15880
+UPDATE `npc_text` SET `BroadcastTextId0`=40515, `VerifiedBuild`=16135 WHERE `ID`=15886; -- 15886
+UPDATE `npc_text` SET `BroadcastTextId0`=40553, `VerifiedBuild`=16135 WHERE `ID`=15901; -- 15901
+UPDATE `npc_text` SET `BroadcastTextId2`=50625, `VerifiedBuild`=16135 WHERE `ID`=2504; -- 2504
+UPDATE `npc_text` SET `BroadcastTextId0`=40729, `VerifiedBuild`=16135 WHERE `ID`=15931; -- 15931
+UPDATE `npc_text` SET `BroadcastTextId0`=14851, `VerifiedBuild`=16135 WHERE `ID`=9220; -- 9220
+UPDATE `npc_text` SET `BroadcastTextId0`=40749, `VerifiedBuild`=16135 WHERE `ID`=15935; -- 15935
+UPDATE `npc_text` SET `BroadcastTextId0`=40802, `VerifiedBuild`=16135 WHERE `ID`=15942; -- 15942
+UPDATE `npc_text` SET `BroadcastTextId0`=40897, `VerifiedBuild`=16135 WHERE `ID`=15952; -- 15952
+UPDATE `npc_text` SET `BroadcastTextId0`=40898, `VerifiedBuild`=16135 WHERE `ID`=15953; -- 15953
+UPDATE `npc_text` SET `BroadcastTextId0`=40984, `VerifiedBuild`=16135 WHERE `ID`=15971; -- 15971
+UPDATE `npc_text` SET `BroadcastTextId0`=52756, `VerifiedBuild`=16135 WHERE `ID`=18217; -- 18217
+UPDATE `npc_text` SET `BroadcastTextId0`=41058, `BroadcastTextId1`=41059, `BroadcastTextId2`=41060, `BroadcastTextId3`=41061, `VerifiedBuild`=16135 WHERE `ID`=15982; -- 15982
+UPDATE `npc_text` SET `BroadcastTextId0`=41092, `VerifiedBuild`=16135 WHERE `ID`=15987; -- 15987
+UPDATE `npc_text` SET `BroadcastTextId0`=41094, `VerifiedBuild`=16135 WHERE `ID`=15988; -- 15988
+UPDATE `npc_text` SET `BroadcastTextId0`=41096, `VerifiedBuild`=16135 WHERE `ID`=15989; -- 15989
+UPDATE `npc_text` SET `BroadcastTextId0`=41134, `VerifiedBuild`=16135 WHERE `ID`=15998; -- 15998
+UPDATE `npc_text` SET `BroadcastTextId0`=41150, `VerifiedBuild`=16135 WHERE `ID`=16007; -- 16007
+UPDATE `npc_text` SET `BroadcastTextId0`=41255, `VerifiedBuild`=16135 WHERE `ID`=16025; -- 16025
+UPDATE `npc_text` SET `BroadcastTextId0`=31202, `VerifiedBuild`=16135 WHERE `ID`=13795; -- 13795
+UPDATE `npc_text` SET `BroadcastTextId0`=41304, `VerifiedBuild`=16135 WHERE `ID`=16035; -- 16035
+UPDATE `npc_text` SET `BroadcastTextId0`=53106, `VerifiedBuild`=16135 WHERE `ID`=18308; -- 18308
+UPDATE `npc_text` SET `BroadcastTextId0`=41412, `VerifiedBuild`=16135 WHERE `ID`=16075; -- 16075
+UPDATE `npc_text` SET `BroadcastTextId0`=41413, `VerifiedBuild`=16135 WHERE `ID`=16076; -- 16076
+UPDATE `npc_text` SET `BroadcastTextId0`=41417, `BroadcastTextId1`=41418, `BroadcastTextId2`=41419, `BroadcastTextId3`=41420, `BroadcastTextId4`=41421, `BroadcastTextId5`=41422, `BroadcastTextId6`=41423, `BroadcastTextId7`=41424, `VerifiedBuild`=16135 WHERE `ID`=16078; -- 16078
+UPDATE `npc_text` SET `BroadcastTextId0`=15328, `VerifiedBuild`=16135 WHERE `ID`=9368; -- 9368
+UPDATE `npc_text` SET `BroadcastTextId0`=41470, `VerifiedBuild`=16135 WHERE `ID`=16085; -- 16085
+UPDATE `npc_text` SET `BroadcastTextId0`=53146, `VerifiedBuild`=16135 WHERE `ID`=18324; -- 18324
+UPDATE `npc_text` SET `BroadcastTextId0`=41508, `VerifiedBuild`=16135 WHERE `ID`=16090; -- 16090
+UPDATE `npc_text` SET `BroadcastTextId0`=41587, `VerifiedBuild`=16135 WHERE `ID`=16100; -- 16100
+UPDATE `npc_text` SET `BroadcastTextId0`=41659, `VerifiedBuild`=16135 WHERE `ID`=16105; -- 16105
+UPDATE `npc_text` SET `BroadcastTextId0`=41664, `VerifiedBuild`=16135 WHERE `ID`=16108; -- 16108
+UPDATE `npc_text` SET `BroadcastTextId0`=41692, `VerifiedBuild`=16135 WHERE `ID`=16117; -- 16117
+UPDATE `npc_text` SET `BroadcastTextId0`=41700, `VerifiedBuild`=16135 WHERE `ID`=16125; -- 16125
+UPDATE `npc_text` SET `BroadcastTextId1`=50625, `VerifiedBuild`=16135 WHERE `ID`=13888; -- 13888
+UPDATE `npc_text` SET `BroadcastTextId0`=2464, `VerifiedBuild`=16135 WHERE `ID`=519; -- 519
+UPDATE `npc_text` SET `BroadcastTextId0`=41990, `VerifiedBuild`=16135 WHERE `ID`=16180; -- 16180
+UPDATE `npc_text` SET `BroadcastTextId0`=7660, `VerifiedBuild`=16135 WHERE `ID`=5006; -- 5006
+UPDATE `npc_text` SET `BroadcastTextId0`=42102, `VerifiedBuild`=16135 WHERE `ID`=16202; -- 16202
+UPDATE `npc_text` SET `BroadcastTextId0`=42107, `VerifiedBuild`=16135 WHERE `ID`=16203; -- 16203
+UPDATE `npc_text` SET `BroadcastTextId0`=53794, `VerifiedBuild`=16135 WHERE `ID`=18463; -- 18463
+UPDATE `npc_text` SET `BroadcastTextId0`=42328, `VerifiedBuild`=16135 WHERE `ID`=16239; -- 16239
+UPDATE `npc_text` SET `BroadcastTextId0`=42339, `VerifiedBuild`=16135 WHERE `ID`=16243; -- 16243
+UPDATE `npc_text` SET `BroadcastTextId0`=42459, `VerifiedBuild`=16135 WHERE `ID`=16259; -- 16259
+UPDATE `npc_text` SET `BroadcastTextId0`=42467, `VerifiedBuild`=16135 WHERE `ID`=16262; -- 16262
+UPDATE `npc_text` SET `BroadcastTextId0`=54163, `VerifiedBuild`=16135 WHERE `ID`=18521; -- 18521
+UPDATE `npc_text` SET `BroadcastTextId0`=42614, `VerifiedBuild`=16135 WHERE `ID`=16284; -- 16284
+UPDATE `npc_text` SET `BroadcastTextId0`=42617, `VerifiedBuild`=16135 WHERE `ID`=16285; -- 16285
+UPDATE `npc_text` SET `BroadcastTextId0`=42632, `VerifiedBuild`=16135 WHERE `ID`=16288; -- 16288
+UPDATE `npc_text` SET `BroadcastTextId0`=42721, `VerifiedBuild`=16135 WHERE `ID`=16298; -- 16298
+UPDATE `npc_text` SET `BroadcastTextId0`=42744, `VerifiedBuild`=16135 WHERE `ID`=16303; -- 16303
+UPDATE `npc_text` SET `BroadcastTextId0`=42857, `VerifiedBuild`=16135 WHERE `ID`=16321; -- 16321
+UPDATE `npc_text` SET `BroadcastTextId0`=43124, `VerifiedBuild`=16135 WHERE `ID`=16366; -- 16366
+UPDATE `npc_text` SET `BroadcastTextId0`=43188, `VerifiedBuild`=16135 WHERE `ID`=16372; -- 16372
+UPDATE `npc_text` SET `BroadcastTextId0`=43194, `VerifiedBuild`=16135 WHERE `ID`=16373; -- 16373
+UPDATE `npc_text` SET `BroadcastTextId0`=43216, `VerifiedBuild`=16135 WHERE `ID`=16383; -- 16383
+UPDATE `npc_text` SET `BroadcastTextId0`=43217, `VerifiedBuild`=16135 WHERE `ID`=16384; -- 16384
+UPDATE `npc_text` SET `BroadcastTextId0`=43255, `VerifiedBuild`=16135 WHERE `ID`=16388; -- 16388
+UPDATE `npc_text` SET `BroadcastTextId0`=43274, `VerifiedBuild`=16135 WHERE `ID`=16391; -- 16391
+UPDATE `npc_text` SET `BroadcastTextId0`=43372, `VerifiedBuild`=16135 WHERE `ID`=16406; -- 16406
+UPDATE `npc_text` SET `BroadcastTextId0`=43504, `BroadcastTextId1`=43505, `BroadcastTextId2`=43506, `BroadcastTextId3`=43507, `BroadcastTextId4`=43508, `BroadcastTextId5`=43509, `VerifiedBuild`=16135 WHERE `ID`=16425; -- 16425
+UPDATE `npc_text` SET `BroadcastTextId0`=43533, `BroadcastTextId1`=43534, `BroadcastTextId2`=43535, `BroadcastTextId3`=43536, `BroadcastTextId4`=43537, `BroadcastTextId5`=43538, `VerifiedBuild`=16135 WHERE `ID`=16430; -- 16430
+UPDATE `npc_text` SET `BroadcastTextId0`=43656, `VerifiedBuild`=16135 WHERE `ID`=16451; -- 16451
+UPDATE `npc_text` SET `BroadcastTextId0`=43721, `BroadcastTextId1`=43722, `BroadcastTextId2`=43723, `BroadcastTextId3`=43724, `BroadcastTextId4`=43725, `BroadcastTextId5`=43726, `VerifiedBuild`=16135 WHERE `ID`=16470; -- 16470
+UPDATE `npc_text` SET `BroadcastTextId0`=44248, `VerifiedBuild`=16135 WHERE `ID`=16508; -- 16508
+UPDATE `npc_text` SET `BroadcastTextId0`=44413, `VerifiedBuild`=16135 WHERE `ID`=16544; -- 16544
+UPDATE `npc_text` SET `BroadcastTextId0`=44416, `VerifiedBuild`=16135 WHERE `ID`=16545; -- 16545
+UPDATE `npc_text` SET `BroadcastTextId0`=22169, `VerifiedBuild`=16135 WHERE `ID`=12080; -- 12080
+UPDATE `npc_text` SET `BroadcastTextId0`=23450, `VerifiedBuild`=16135 WHERE `ID`=12085; -- 12085
+UPDATE `npc_text` SET `BroadcastTextId0`=55985, `VerifiedBuild`=16135 WHERE `ID`=18848; -- 18848
+UPDATE `npc_text` SET `BroadcastTextId0`=33761, `VerifiedBuild`=16135 WHERE `ID`=14391; -- 14391
+UPDATE `npc_text` SET `BroadcastTextId0`=33781, `VerifiedBuild`=16135 WHERE `ID`=14393; -- 14393
+UPDATE `npc_text` SET `BroadcastTextId0`=8146, `VerifiedBuild`=16135 WHERE `ID`=5529; -- 5529
+UPDATE `npc_text` SET `BroadcastTextId0`=45195, `VerifiedBuild`=16135 WHERE `ID`=16730; -- 16730
+UPDATE `npc_text` SET `BroadcastTextId0`=45323, `VerifiedBuild`=16135 WHERE `ID`=16768; -- 16768
+UPDATE `npc_text` SET `BroadcastTextId0`=34627, `VerifiedBuild`=16135 WHERE `ID`=14545; -- 14545
+UPDATE `npc_text` SET `BroadcastTextId0`=45370, `VerifiedBuild`=16135 WHERE `ID`=16783; -- 16783
+UPDATE `npc_text` SET `BroadcastTextId0`=45535, `VerifiedBuild`=16135 WHERE `ID`=16835; -- 16835
+UPDATE `npc_text` SET `BroadcastTextId0`=45536, `VerifiedBuild`=16135 WHERE `ID`=16836; -- 16836
+UPDATE `npc_text` SET `BroadcastTextId0`=35019, `VerifiedBuild`=16135 WHERE `ID`=14616; -- 14616
+UPDATE `npc_text` SET `BroadcastTextId0`=35049, `VerifiedBuild`=16135 WHERE `ID`=14624; -- 14624
+UPDATE `npc_text` SET `BroadcastTextId0`=35087, `VerifiedBuild`=16135 WHERE `ID`=14633; -- 14633
+UPDATE `npc_text` SET `BroadcastTextId0`=45801, `VerifiedBuild`=16135 WHERE `ID`=16886; -- 16886
+UPDATE `npc_text` SET `BroadcastTextId0`=45803, `VerifiedBuild`=16135 WHERE `ID`=16888; -- 16888
+UPDATE `npc_text` SET `BroadcastTextId0`=45865, `VerifiedBuild`=16135 WHERE `ID`=16901; -- 16901
+UPDATE `npc_text` SET `BroadcastTextId0`=46514, `VerifiedBuild`=16135 WHERE `ID`=17026; -- 17026
+UPDATE `npc_text` SET `BroadcastTextId0`=46528, `VerifiedBuild`=16135 WHERE `ID`=17030; -- 17030
+UPDATE `npc_text` SET `BroadcastTextId0`=46529, `VerifiedBuild`=16135 WHERE `ID`=17031; -- 17031
+UPDATE `npc_text` SET `BroadcastTextId0`=35980, `VerifiedBuild`=16135 WHERE `ID`=14807; -- 14807
+UPDATE `npc_text` SET `BroadcastTextId0`=46883, `VerifiedBuild`=16135 WHERE `ID`=17087; -- 17087
+UPDATE `npc_text` SET `BroadcastTextId0`=47289, `VerifiedBuild`=16135 WHERE `ID`=17170; -- 17170
+UPDATE `npc_text` SET `BroadcastTextId0`=36350, `VerifiedBuild`=16135 WHERE `ID`=14945; -- 14945
+UPDATE `npc_text` SET `BroadcastTextId0`=36454, `VerifiedBuild`=16135 WHERE `ID`=14982; -- 14982
+UPDATE `npc_text` SET `BroadcastTextId0`=47583, `VerifiedBuild`=16135 WHERE `ID`=17220; -- 17220
+UPDATE `npc_text` SET `BroadcastTextId0`=47632, `BroadcastTextId1`=47633, `BroadcastTextId2`=47634, `VerifiedBuild`=16135 WHERE `ID`=17235; -- 17235
+UPDATE `npc_text` SET `BroadcastTextId0`=47694, `VerifiedBuild`=16135 WHERE `ID`=17247; -- 17247
+UPDATE `npc_text` SET `BroadcastTextId0`=47801, `VerifiedBuild`=16135 WHERE `ID`=17268; -- 17268
+UPDATE `npc_text` SET `BroadcastTextId0`=48131, `VerifiedBuild`=16135 WHERE `ID`=17357; -- 17357
+UPDATE `npc_text` SET `BroadcastTextId0`=48169, `VerifiedBuild`=16135 WHERE `ID`=17374; -- 17374
+UPDATE `npc_text` SET `BroadcastTextId0`=26949, `VerifiedBuild`=16135 WHERE `ID`=12915; -- 12915
+UPDATE `npc_text` SET `BroadcastTextId0`=26950, `VerifiedBuild`=16135 WHERE `ID`=12916; -- 12916
+UPDATE `npc_text` SET `BroadcastTextId0`=26952, `VerifiedBuild`=16135 WHERE `ID`=12917; -- 12917
+UPDATE `npc_text` SET `BroadcastTextId0`=48457, `VerifiedBuild`=16135 WHERE `ID`=17445; -- 17445
+UPDATE `npc_text` SET `BroadcastTextId0`=37884, `VerifiedBuild`=16135 WHERE `ID`=15251; -- 15251
+UPDATE `npc_text` SET `BroadcastTextId0`=37958, `VerifiedBuild`=16135 WHERE `ID`=15274; -- 15274
+UPDATE `npc_text` SET `BroadcastTextId0`=49174, `BroadcastTextId1`=49175, `BroadcastTextId2`=49176, `BroadcastTextId3`=49177, `BroadcastTextId4`=49178, `BroadcastTextId5`=49179, `BroadcastTextId6`=49180, `BroadcastTextId7`=49181, `VerifiedBuild`=16135 WHERE `ID`=17549; -- 17549
+UPDATE `npc_text` SET `BroadcastTextId0`=27617, `VerifiedBuild`=16135 WHERE `ID`=13101; -- 13101
+UPDATE `npc_text` SET `BroadcastTextId0`=49746, `VerifiedBuild`=16135 WHERE `ID`=17600; -- 17600
+UPDATE `npc_text` SET `BroadcastTextId0`=27743, `VerifiedBuild`=16135 WHERE `ID`=13126; -- 13126
+UPDATE `npc_text` SET `BroadcastTextId0`=49821, `VerifiedBuild`=16135 WHERE `ID`=17620; -- 17620
+UPDATE `npc_text` SET `BroadcastTextId0`=49999, `VerifiedBuild`=16135 WHERE `ID`=17665; -- 17665
+UPDATE `npc_text` SET `BroadcastTextId0`=50001, `VerifiedBuild`=16135 WHERE `ID`=17666; -- 17666
+UPDATE `npc_text` SET `BroadcastTextId0`=50006, `VerifiedBuild`=16135 WHERE `ID`=17670; -- 17670
+UPDATE `npc_text` SET `BroadcastTextId0`=28081, `VerifiedBuild`=16135 WHERE `ID`=13238; -- 13238
+UPDATE `npc_text` SET `BroadcastTextId0`=50116, `VerifiedBuild`=16135 WHERE `ID`=17713; -- 17713
+UPDATE `npc_text` SET `BroadcastTextId0`=38964, `VerifiedBuild`=16135 WHERE `ID`=15484; -- 15484
+UPDATE `npc_text` SET `BroadcastTextId0`=39002, `VerifiedBuild`=16135 WHERE `ID`=15490; -- 15490
+UPDATE `npc_text` SET `BroadcastTextId0`=28092, `VerifiedBuild`=16135 WHERE `ID`=13256; -- 13256
+UPDATE `npc_text` SET `BroadcastTextId0`=28093, `VerifiedBuild`=16135 WHERE `ID`=13258; -- 13258
+UPDATE `npc_text` SET `BroadcastTextId0`=28428, `VerifiedBuild`=16135 WHERE `ID`=13268; -- 13268
+UPDATE `npc_text` SET `BroadcastTextId0`=50639, `VerifiedBuild`=16135 WHERE `ID`=17789; -- 17789
+UPDATE `npc_text` SET `BroadcastTextId0`=39271, `BroadcastTextId1`=39272, `BroadcastTextId2`=39273, `VerifiedBuild`=16135 WHERE `ID`=15569; -- 15569
+UPDATE `npc_text` SET `BroadcastTextId0`=50690, `VerifiedBuild`=16135 WHERE `ID`=17815; -- 17815
+UPDATE `npc_text` SET `BroadcastTextId1`=28913, `VerifiedBuild`=16135 WHERE `ID`=13366; -- 13366
+UPDATE `npc_text` SET `BroadcastTextId0`=39442, `VerifiedBuild`=16135 WHERE `ID`=15612; -- 15612
+UPDATE `npc_text` SET `BroadcastTextId0`=39480, `VerifiedBuild`=16135 WHERE `ID`=15622; -- 15622
+UPDATE `npc_text` SET `BroadcastTextId0`=39493, `VerifiedBuild`=16135 WHERE `ID`=15633; -- 15633
+UPDATE `npc_text` SET `BroadcastTextId0`=39494, `VerifiedBuild`=16135 WHERE `ID`=15634; -- 15634
+UPDATE `npc_text` SET `BroadcastTextId0`=39531, `VerifiedBuild`=16135 WHERE `ID`=15648; -- 15648
+UPDATE `npc_text` SET `BroadcastTextId0`=50916, `VerifiedBuild`=16309 WHERE `ID`=17881; -- 17881
+UPDATE `npc_text` SET `BroadcastTextId0`=45521, `VerifiedBuild`=16309 WHERE `ID`=16830; -- 16830
+UPDATE `npc_text` SET `BroadcastTextId0`=45553, `VerifiedBuild`=16309 WHERE `ID`=16839; -- 16839
+UPDATE `npc_text` SET `BroadcastTextId0`=45554, `VerifiedBuild`=16309 WHERE `ID`=16840; -- 16840
+UPDATE `npc_text` SET `BroadcastTextId0`=45555, `VerifiedBuild`=16309 WHERE `ID`=16841; -- 16841
+UPDATE `npc_text` SET `VerifiedBuild`=16309 WHERE `ID` IN (1205 /*1205*/, 5753 /*5753*/, 3546 /*3546*/, 7028 /*7028*/, 13759 /*13759*/, 13761 /*13761*/, 9391 /*9391*/, 9395 /*9395*/, 15157 /*15157*/, 15190 /*15190*/, 15206 /*15206*/, 699 /*699*/, 2999 /*2999*/, 14317 /*14317*/, 4273 /*4273*/, 4274 /*4274*/, 4275 /*4275*/, 4276 /*4276*/, 4277 /*4277*/, 4278 /*4278*/, 4279 /*4279*/, 4280 /*4280*/, 4281 /*4281*/, 4282 /*4282*/, 4283 /*4283*/, 4284 /*4284*/, 4285 /*4285*/, 4300 /*4300*/, 4301 /*4301*/, 4302 /*4302*/, 4303 /*4303*/, 4304 /*4304*/, 4305 /*4305*/, 4306 /*4306*/, 4307 /*4307*/, 4308 /*4308*/, 14363 /*14363*/, 4310 /*4310*/, 4311 /*4311*/, 4312 /*4312*/, 4313 /*4313*/, 14367 /*14367*/, 14383 /*14383*/, 14420 /*14420*/, 14428 /*14428*/, 9964 /*9964*/, 14496 /*14496*/, 14497 /*14497*/);
+UPDATE `npc_text` SET `BroadcastTextId0`=45563, `VerifiedBuild`=16309 WHERE `ID`=16844; -- 16844
+UPDATE `npc_text` SET `BroadcastTextId0`=45928, `VerifiedBuild`=16309 WHERE `ID`=16909; -- 16909
+UPDATE `npc_text` SET `BroadcastTextId0`=40129, `VerifiedBuild`=16309 WHERE `ID`=15794; -- 15794
+UPDATE `npc_text` SET `BroadcastTextId0`=35289, `VerifiedBuild`=16309 WHERE `ID`=14684; -- 14684
+UPDATE `npc_text` SET `BroadcastTextId0`=40547, `VerifiedBuild`=16309 WHERE `ID`=15898; -- 15898
+UPDATE `npc_text` SET `BroadcastTextId0`=35972, `VerifiedBuild`=16309 WHERE `ID`=14801; -- 14801
+UPDATE `npc_text` SET `BroadcastTextId0`=40650, `VerifiedBuild`=16309 WHERE `ID`=15918; -- 15918
+UPDATE `npc_text` SET `BroadcastTextId0`=36164, `VerifiedBuild`=16309 WHERE `ID`=14873; -- 14873
+UPDATE `npc_text` SET `BroadcastTextId0`=47374, `VerifiedBuild`=16309 WHERE `ID`=17178; -- 17178
+UPDATE `npc_text` SET `BroadcastTextId0`=47375, `VerifiedBuild`=16309 WHERE `ID`=17179; -- 17179
+UPDATE `npc_text` SET `BroadcastTextId0`=37564, `VerifiedBuild`=16309 WHERE `ID`=15215; -- 15215
+UPDATE `npc_text` SET `BroadcastTextId0`=2660, `VerifiedBuild`=16309 WHERE `ID`=698; -- 698
+UPDATE `npc_text` SET `BroadcastTextId0`=48583, `VerifiedBuild`=16309 WHERE `ID`=17464; -- 17464
+UPDATE `npc_text` SET `BroadcastTextId0`=16151, `VerifiedBuild`=16309 WHERE `ID`=9662; -- 9662
+UPDATE `npc_text` SET `BroadcastTextId0`=49048, `VerifiedBuild`=16309 WHERE `ID`=17532; -- 17532
+UPDATE `npc_text` SET `BroadcastTextId0`=43609, `VerifiedBuild`=16309 WHERE `ID`=16443; -- 16443
+UPDATE `npc_text` SET `BroadcastTextId0`=49764, `VerifiedBuild`=16309 WHERE `ID`=17606; -- 17606
+UPDATE `npc_text` SET `BroadcastTextId0`=44335, `VerifiedBuild`=16309 WHERE `ID`=16519; -- 16519
+UPDATE `npc_text` SET `BroadcastTextId0`=49885, `VerifiedBuild`=16309 WHERE `ID`=17638; -- 17638
+UPDATE `npc_text` SET `BroadcastTextId0`=33408, `VerifiedBuild`=16309 WHERE `ID`=14326; -- 14326
+UPDATE `npc_text` SET `BroadcastTextId0`=44483, `VerifiedBuild`=16309 WHERE `ID`=16566; -- 16566
+UPDATE `npc_text` SET `BroadcastTextId0`=33412, `VerifiedBuild`=16309 WHERE `ID`=14334; -- 14334
+UPDATE `npc_text` SET `BroadcastTextId0`=33650, `VerifiedBuild`=16309 WHERE `ID`=14368; -- 14368
+UPDATE `npc_text` SET `BroadcastTextId0`=33692, `VerifiedBuild`=16309 WHERE `ID`=14375; -- 14375
+UPDATE `npc_text` SET `BroadcastTextId0`=50271, `VerifiedBuild`=16309 WHERE `ID`=17736; -- 17736
+UPDATE `npc_text` SET `BroadcastTextId0`=44872, `VerifiedBuild`=16309 WHERE `ID`=16673; -- 16673
+UPDATE `npc_text` SET `BroadcastTextId0`=49777, `VerifiedBuild`=16309 WHERE `ID`=17791; -- 17791
+UPDATE `npc_text` SET `BroadcastTextId0`=45230, `VerifiedBuild`=16309 WHERE `ID`=16737; -- 16737
+UPDATE `npc_text` SET `VerifiedBuild`=19034 WHERE `ID` IN (17849 /*17849*/, 14425 /*14425*/, 10605 /*10605*/, 14463 /*14463*/, 10903 /*10903*/, 18189 /*18189*/, 14495 /*14495*/, 18200 /*18200*/, 13005 /*13005*/, 10819 /*10819*/, 14793 /*14793*/);
+UPDATE `npc_text` SET `VerifiedBuild`=19342 WHERE `ID` IN (17905 /*17905*/, 13466 /*13466*/, 20178 /*20178*/, 17976 /*17976*/, 20219 /*20219*/, 20222 /*20222*/, 9051 /*9051*/, 20292 /*20292*/, 13584 /*13584*/, 20326 /*20326*/, 13619 /*13619*/, 13658 /*13658*/, 18140 /*18140*/, 9196 /*9196*/, 18149 /*18149*/, 13679 /*13679*/, 6991 /*6991*/, 18205 /*18205*/, 15981 /*15981*/, 20517 /*20517*/, 18288 /*18288*/, 18291 /*18291*/, 2640 /*2640*/, 9395 /*9395*/, 18372 /*18372*/, 9452 /*9452*/, 22884 /*22884*/, 4995 /*4995*/, 2760 /*2760*/, 20685 /*20685*/, 580 /*580*/, 20724 /*20724*/, 20726 /*20726*/, 16256 /*16256*/, 9546 /*9546*/, 22981 /*22981*/, 9596 /*9596*/, 9598 /*9598*/, 20799 /*20799*/, 9626 /*9626*/, 14128 /*14128*/, 820 /*820*/, 823 /*823*/, 20967 /*20967*/, 16569 /*16569*/, 16573 /*16573*/, 5474 /*5474*/, 9962 /*9962*/, 7778 /*7778*/, 18965 /*18965*/, 18966 /*18966*/, 12262 /*12262*/, 12266 /*12266*/, 12267 /*12267*/, 12270 /*12270*/, 21281 /*21281*/, 21282 /*21282*/, 7883 /*7883*/, 14627 /*14627*/, 14640 /*14640*/, 1235 /*1235*/, 5721 /*5721*/, 1249 /*1249*/, 1250 /*1250*/, 1256 /*1256*/, 14736 /*14736*/, 14783 /*14783*/, 14785 /*14785*/, 17026 /*17026*/, 8109 /*8109*/, 8125 /*8125*/, 10368 /*10368*/, 15103 /*15103*/, 15111 /*15111*/, 6194 /*6194*/, 12915 /*12915*/, 12916 /*12916*/, 12917 /*12917*/, 3976 /*3976*/, 21876 /*21876*/, 6250 /*6250*/, 15221 /*15221*/, 17462 /*17462*/, 17464 /*17464*/, 8590 /*8590*/, 22052 /*22052*/, 10879 /*10879*/, 8676 /*8676*/, 19911 /*19911*/, 15484 /*15484*/, 19965 /*19965*/, 13256 /*13256*/, 13258 /*13258*/, 13267 /*13267*/, 17749 /*17749*/, 20040 /*20040*/, 20078 /*20078*/, 4434 /*4434*/, 20094 /*20094*/);
+UPDATE `npc_text` SET `BroadcastTextId0`=52363, `VerifiedBuild`=19342 WHERE `ID`=18148; -- 18148
+UPDATE `npc_text` SET `BroadcastTextId0`=52932, `VerifiedBuild`=19342 WHERE `ID`=18249; -- 18249
+UPDATE `npc_text` SET `BroadcastTextId0`=52933, `VerifiedBuild`=19342 WHERE `ID`=18250; -- 18250
+UPDATE `npc_text` SET `BroadcastTextId0`=52934, `VerifiedBuild`=19342 WHERE `ID`=18251; -- 18251
+UPDATE `npc_text` SET `BroadcastTextId0`=76755, `VerifiedBuild`=19342 WHERE `ID`=9478; -- 9478
+UPDATE `npc_text` SET `BroadcastTextId0`=35946, `VerifiedBuild`=19342 WHERE `ID`=14786; -- 14786
+UPDATE `npc_text` SET `BroadcastTextId0`=35965, `VerifiedBuild`=19342 WHERE `ID`=14798; -- 14798
+UPDATE `npc_text` SET `BroadcastTextId0`=36635, `VerifiedBuild`=19342 WHERE `ID`=15034; -- 15034
+UPDATE `npc_text` SET `BroadcastTextId0`=48581, `VerifiedBuild`=19342 WHERE `ID`=17463; -- 17463
+UPDATE `npc_text` SET `BroadcastTextId0`=38838, `VerifiedBuild`=19342 WHERE `ID`=15458; -- 15458
+UPDATE `npc_text` SET `BroadcastTextId0`=28091, `VerifiedBuild`=19342 WHERE `ID`=13254; -- 13254
diff --git a/sql/updates/world/2015_06_11_00_world_2015_05_22_00.sql b/sql/updates/world/2015_06_11_00_world_2015_05_22_00.sql
new file mode 100644
index 00000000000..2949d0eca4a
--- /dev/null
+++ b/sql/updates/world/2015_06_11_00_world_2015_05_22_00.sql
@@ -0,0 +1,2 @@
+--
+DELETE FROM `spell_target_position` WHERE `id`=63171;
diff --git a/sql/updates/world/2015_06_12_00_world.sql b/sql/updates/world/2015_06_12_00_world.sql
new file mode 100644
index 00000000000..8c8d2db9685
--- /dev/null
+++ b/sql/updates/world/2015_06_12_00_world.sql
@@ -0,0 +1,41 @@
+-- Pathing for Forsaken Courier Entry: 2714 'TDB FORMAT'
+SET @NPC := 285848;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-1644.767,`position_y`=-2970.928,`position_z`=26.889 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,-1644.767,-2970.928,26.889,0,0,0,0,100,0), -- 07:35:57
+(@PATH,2,-1643.685,-2961.697,27.81409,0,0,0,0,100,0), -- 07:36:03
+(@PATH,3,-1640.91,-2951.572,28.43296,0,0,0,0,100,0), -- 07:36:05
+(@PATH,4,-1639.894,-2948.18,28.76205,0,0,0,0,100,0), -- 07:36:11
+(@PATH,5,-1640.859,-2917.589,27.26082,0,0,0,0,100,0), -- 07:36:17
+(@PATH,6,-1641.814,-2914.426,26.85855,0,0,0,0,100,0), -- 07:36:25
+(@PATH,7,-1641.825,-2914.764,26.78742,0,0,0,0,100,0), -- 07:36:32
+(@PATH,8,-1639.265,-2923.267,27.66898,0,0,0,0,100,0), -- 07:36:36
+(@PATH,9,-1637.15,-2931.193,28.27434,0,0,0,0,100,0), -- 07:36:43
+(@PATH,10,-1642.04,-2955.996,28.04179,0,0,0,0,100,0); -- 07:36:49
+-- .go -1644.767 -2970.928 26.889
+
+-- Pathing for Lieutenant Valorcall Entry: 2612 'TDB FORMAT'
+SET @NPC := 285677;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-1446.705,`position_y`=-2441.104,`position_z`=58.81701 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,-1446.705,-2441.104,58.81701,0,0,0,0,100,0), -- 07:31:34
+(@PATH,2,-1463.374,-2435.582,58.04238,0,0,0,0,100,0), -- 07:31:48
+(@PATH,3,-1461.709,-2424.357,58.29197,0,0,0,0,100,0), -- 07:31:51
+(@PATH,4,-1454.812,-2409.983,60.27683,0,0,0,0,100,0), -- 07:31:57
+(@PATH,5,-1452.604,-2397.783,61.1295,0,0,0,0,100,0), -- 07:32:03
+(@PATH,6,-1451.443,-2379.965,61.44468,0,0,0,0,100,0), -- 07:32:27
+(@PATH,7,-1452.552,-2400.638,60.94978,0,0,0,0,100,0), -- 07:32:38
+(@PATH,8,-1457.302,-2415.967,59.68084,0,0,0,0,100,0), -- 07:32:49
+(@PATH,9,-1462.218,-2424.716,58.24706,0,0,0,0,100,0), -- 07:32:55
+(@PATH,10,-1465.748,-2430.155,57.81998,0,0,0,0,100,0), -- 07:33:00
+(@PATH,11,-1449.211,-2440.016,58.65489,0,0,0,0,100,0), -- 07:33:02
+(@PATH,12,-1425.944,-2451.505,59.25491,0,0,0,0,100,0); -- 07:33:08
+-- .go -1446.705 -2441.104 58.81701
diff --git a/src/server/bnetserver/Main.cpp b/src/server/bnetserver/Main.cpp
index 20d1193b8e2..86590bfa3f5 100644
--- a/src/server/bnetserver/Main.cpp
+++ b/src/server/bnetserver/Main.cpp
@@ -51,25 +51,52 @@ using namespace boost::program_options;
# define _TRINITY_BNET_CONFIG "bnetserver.conf"
#endif
+#if PLATFORM == PLATFORM_WINDOWS
+#include "ServiceWin32.h"
+char serviceName[] = "bnetserver";
+char serviceLongName[] = "TrinityCore bnet service";
+char serviceDescription[] = "TrinityCore Battle.net emulator authentication service";
+/*
+* -1 - not in service mode
+* 0 - stopped
+* 1 - running
+* 2 - paused
+*/
+int m_ServiceStatus = -1;
+
+static boost::asio::deadline_timer* _serviceStatusWatchTimer;
+void ServiceStatusWatcher(boost::system::error_code const& error);
+#endif
+
bool StartDB();
void StopDB();
void SignalHandler(const boost::system::error_code& error, int signalNumber);
void KeepDatabaseAliveHandler(const boost::system::error_code& error);
-variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile);
+variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile, std::string& configService);
-std::unique_ptr<boost::asio::io_service> _ioService;
-std::unique_ptr<boost::asio::deadline_timer> _dbPingTimer;
-uint32 _dbPingInterval;
+static boost::asio::io_service* _ioService;
+static boost::asio::deadline_timer* _dbPingTimer;
+static uint32 _dbPingInterval;
LoginDatabaseWorkerPool LoginDatabase;
int main(int argc, char** argv)
{
std::string configFile = _TRINITY_BNET_CONFIG;
- auto vm = GetConsoleArguments(argc, argv, configFile);
+ std::string configService;
+ auto vm = GetConsoleArguments(argc, argv, configFile, configService);
// exit if help is enabled
if (vm.count("help"))
return 0;
+#if PLATFORM == PLATFORM_WINDOWS
+ if (configService.compare("install") == 0)
+ return WinServiceInstall() ? 0 : 1;
+ else if (configService.compare("uninstall") == 0)
+ return WinServiceUninstall() ? 0 : 1;
+ else if (configService.compare("run") == 0)
+ return WinServiceRun() ? 0 : 1;
+#endif
+
std::string configError;
if (!sConfigMgr->LoadInitial(configFile, configError))
{
@@ -109,7 +136,7 @@ int main(int argc, char** argv)
sIpcContext->Initialize();
- _ioService.reset(new boost::asio::io_service());
+ _ioService = new boost::asio::io_service();
// Get the list of realms for the server
sRealmList->Initialize(*_ioService, sConfigMgr->GetIntDefault("RealmsStateUpdateDelay", 10), worldListenPort);
@@ -120,6 +147,7 @@ int main(int argc, char** argv)
{
TC_LOG_ERROR("server.bnetserver", "Specified battle.net port (%d) out of allowed range (1-65535)", bnport);
StopDB();
+ delete _ioService;
return 1;
}
@@ -139,13 +167,22 @@ int main(int argc, char** argv)
// Enabled a timed callback for handling the database keep alive ping
_dbPingInterval = sConfigMgr->GetIntDefault("MaxPingTime", 30);
- _dbPingTimer.reset(new boost::asio::deadline_timer(*_ioService));
+ _dbPingTimer = new boost::asio::deadline_timer(*_ioService);
_dbPingTimer->expires_from_now(boost::posix_time::minutes(_dbPingInterval));
_dbPingTimer->async_wait(KeepDatabaseAliveHandler);
sComponentMgr->Load();
sModuleMgr->Load();
+#if PLATFORM == PLATFORM_WINDOWS
+ if (m_ServiceStatus != -1)
+ {
+ _serviceStatusWatchTimer = new boost::asio::deadline_timer(*_ioService);
+ _serviceStatusWatchTimer->expires_from_now(boost::posix_time::seconds(1));
+ _serviceStatusWatchTimer->async_wait(ServiceStatusWatcher);
+ }
+#endif
+
// Start the io service worker loop
_ioService->run();
@@ -162,9 +199,10 @@ int main(int argc, char** argv)
TC_LOG_INFO("server.bnetserver", "Halting process...");
- signals.clear();
+ signals.cancel();
- _ioService.reset();
+ delete _dbPingTimer;
+ delete _ioService;
return 0;
}
@@ -211,24 +249,55 @@ void KeepDatabaseAliveHandler(const boost::system::error_code& error)
}
}
-variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile)
+#if PLATFORM == PLATFORM_WINDOWS
+void ServiceStatusWatcher(boost::system::error_code const& error)
+{
+ if (!error)
+ {
+ if (m_ServiceStatus == 0)
+ {
+ _ioService->stop();
+ delete _serviceStatusWatchTimer;
+ }
+ else
+ {
+ _serviceStatusWatchTimer->expires_from_now(boost::posix_time::seconds(1));
+ _serviceStatusWatchTimer->async_wait(ServiceStatusWatcher);
+ }
+ }
+}
+#endif
+
+variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile, std::string& configService)
{
+ (void)configService;
+
options_description all("Allowed options");
all.add_options()
("help,h", "print usage message")
("config,c", value<std::string>(&configFile)->default_value(_TRINITY_BNET_CONFIG), "use <arg> as configuration file")
;
+#if PLATFORM == PLATFORM_WINDOWS
+ options_description win("Windows platform specific options");
+ win.add_options()
+ ("service,s", value<std::string>(&configService)->default_value(""), "Windows service options: [install | uninstall]")
+ ;
+
+ all.add(win);
+#endif
variables_map variablesMap;
try
{
store(command_line_parser(argc, argv).options(all).allow_unregistered().run(), variablesMap);
notify(variablesMap);
}
- catch (std::exception& e) {
+ catch (std::exception& e)
+ {
std::cerr << e.what() << "\n";
}
- if (variablesMap.count("help")) {
+ if (variablesMap.count("help"))
+ {
std::cout << all << "\n";
}
diff --git a/src/server/collision/Management/MMapManager.cpp b/src/server/collision/Management/MMapManager.cpp
index bb752fd9b49..e0b1ed3b161 100644
--- a/src/server/collision/Management/MMapManager.cpp
+++ b/src/server/collision/Management/MMapManager.cpp
@@ -24,6 +24,9 @@
namespace MMAP
{
+ static char const* const MAP_FILE_NAME_FORMAT = "%smmaps/%04i.mmap";
+ static char const* const TILE_FILE_NAME_FORMAT = "%smmaps/%04i%02i%02i.mmtile";
+
// ######################## MMapManager ########################
MMapManager::~MMapManager()
{
@@ -41,15 +44,11 @@ namespace MMAP
return true;
// load and init dtNavMesh - read parameters from file
- uint32 pathLen = uint32(sWorld->GetDataPath().length() + strlen("mmaps/%03i.mmap") + 1);
- char *fileName = new char[pathLen];
- snprintf(fileName, pathLen, (sWorld->GetDataPath()+"mmaps/%03i.mmap").c_str(), mapId);
-
- FILE* file = fopen(fileName, "rb");
+ std::string fileName = Trinity::StringFormat(MAP_FILE_NAME_FORMAT, sWorld->GetDataPath().c_str(), mapId);
+ FILE* file = fopen(fileName.c_str(), "rb");
if (!file)
{
- TC_LOG_DEBUG("maps", "MMAP:loadMapData: Error: Could not open mmap file '%s'", fileName);
- delete [] fileName;
+ TC_LOG_DEBUG("maps", "MMAP:loadMapData: Error: Could not open mmap file '%s'", fileName.c_str());
return false;
}
@@ -58,8 +57,7 @@ namespace MMAP
fclose(file);
if (count != 1)
{
- TC_LOG_DEBUG("maps", "MMAP:loadMapData: Error: Could not read params from file '%s'", fileName);
- delete [] fileName;
+ TC_LOG_DEBUG("maps", "MMAP:loadMapData: Error: Could not read params from file '%s'", fileName.c_str());
return false;
}
@@ -68,14 +66,11 @@ namespace MMAP
if (dtStatusFailed(mesh->init(&params)))
{
dtFreeNavMesh(mesh);
- TC_LOG_ERROR("maps", "MMAP:loadMapData: Failed to initialize dtNavMesh for mmap %03u from file %s", mapId, fileName);
- delete [] fileName;
+ TC_LOG_ERROR("maps", "MMAP:loadMapData: Failed to initialize dtNavMesh for mmap %04u from file %s", mapId, fileName.c_str());
return false;
}
- delete [] fileName;
-
- TC_LOG_DEBUG("maps", "MMAP:loadMapData: Loaded %03i.mmap", mapId);
+ TC_LOG_DEBUG("maps", "MMAP:loadMapData: Loaded %04i.mmap", mapId);
// store inside our map list
MMapData* mmap_data = new MMapData(mesh, mapId);
@@ -104,33 +99,27 @@ namespace MMAP
if (mmap->loadedTileRefs.find(packedGridPos) != mmap->loadedTileRefs.end())
return false;
- // load this tile :: mmaps/MMMXXYY.mmtile
- uint32 pathLen = uint32(sWorld->GetDataPath().length() + strlen("mmaps/%03i%02i%02i.mmtile") + 1);
- char *fileName = new char[pathLen];
-
- snprintf(fileName, pathLen, (sWorld->GetDataPath()+"mmaps/%03i%02i%02i.mmtile").c_str(), mapId, x, y);
-
- FILE* file = fopen(fileName, "rb");
+ // load this tile :: mmaps/MMMMXXYY.mmtile
+ std::string fileName = Trinity::StringFormat(TILE_FILE_NAME_FORMAT, sWorld->GetDataPath().c_str(), mapId, x, y);
+ FILE* file = fopen(fileName.c_str(), "rb");
if (!file)
{
- TC_LOG_DEBUG("maps", "MMAP:loadMap: Could not open mmtile file '%s'", fileName);
- delete [] fileName;
+ TC_LOG_DEBUG("maps", "MMAP:loadMap: Could not open mmtile file '%s'", fileName.c_str());
return false;
}
- delete [] fileName;
// read header
MmapTileHeader fileHeader;
if (fread(&fileHeader, sizeof(MmapTileHeader), 1, file) != 1 || fileHeader.mmapMagic != MMAP_MAGIC)
{
- TC_LOG_ERROR("maps", "MMAP:loadMap: Bad header in mmap %03u%02i%02i.mmtile", mapId, x, y);
+ TC_LOG_ERROR("maps", "MMAP:loadMap: Bad header in mmap %04u%02i%02i.mmtile", mapId, x, y);
fclose(file);
return false;
}
if (fileHeader.mmapVersion != MMAP_VERSION)
{
- TC_LOG_ERROR("maps", "MMAP:loadMap: %03u%02i%02i.mmtile was built with generator v%i, expected v%i",
+ TC_LOG_ERROR("maps", "MMAP:loadMap: %04u%02i%02i.mmtile was built with generator v%i, expected v%i",
mapId, x, y, fileHeader.mmapVersion, MMAP_VERSION);
fclose(file);
return false;
@@ -142,7 +131,7 @@ namespace MMAP
size_t result = fread(data, fileHeader.size, 1, file);
if (!result)
{
- TC_LOG_ERROR("maps", "MMAP:loadMap: Bad header or data in mmap %03u%02i%02i.mmtile", mapId, x, y);
+ TC_LOG_ERROR("maps", "MMAP:loadMap: Bad header or data in mmap %04u%02i%02i.mmtile", mapId, x, y);
fclose(file);
return false;
}
@@ -157,14 +146,14 @@ namespace MMAP
{
mmap->loadedTileRefs.insert(std::pair<uint32, dtTileRef>(packedGridPos, tileRef));
++loadedTiles;
- TC_LOG_DEBUG("maps", "MMAP:loadMap: Loaded mmtile %03i[%02i, %02i] into %03i[%02i, %02i]", mapId, x, y, mapId, header->x, header->y);
+ TC_LOG_DEBUG("maps", "MMAP:loadMap: Loaded mmtile %04i[%02i, %02i] into %04i[%02i, %02i]", mapId, x, y, mapId, header->x, header->y);
LoadPhaseTiles(mapId, x, y);
return true;
}
- TC_LOG_ERROR("maps", "MMAP:loadMap: Could not load %03u%02i%02i.mmtile into navmesh", mapId, x, y);
+ TC_LOG_ERROR("maps", "MMAP:loadMap: Could not load %04u%02i%02i.mmtile into navmesh", mapId, x, y);
dtFree(data);
return false;
}
@@ -172,37 +161,33 @@ namespace MMAP
PhasedTile* MMapManager::LoadTile(uint32 mapId, int32 x, int32 y)
{
// load this tile :: mmaps/MMMXXYY.mmtile
- uint32 pathLen = sWorld->GetDataPath().length() + strlen("mmaps/%03i%02i%02i.mmtile") + 1;
- char *fileName = new char[pathLen];
-
- snprintf(fileName, pathLen, (sWorld->GetDataPath() + "mmaps/%03i%02i%02i.mmtile").c_str(), mapId, x, y);
-
- FILE* file = fopen(fileName, "rb");
+ std::string fileName = Trinity::StringFormat(TILE_FILE_NAME_FORMAT, sWorld->GetDataPath().c_str(), mapId, x, y);
+ FILE* file = fopen(fileName.c_str(), "rb");
if (!file)
{
// Not all tiles have phased versions, don't flood this msg
//TC_LOG_DEBUG("phase", "MMAP:LoadTile: Could not open mmtile file '%s'", fileName);
- delete[] fileName;
return NULL;
}
- delete[] fileName;
PhasedTile* pTile = new PhasedTile();
// read header
if (fread(&pTile->fileHeader, sizeof(MmapTileHeader), 1, file) != 1 || pTile->fileHeader.mmapMagic != MMAP_MAGIC)
{
- TC_LOG_ERROR("phase", "MMAP:LoadTile: Bad header in mmap %03u%02i%02i.mmtile", mapId, x, y);
+ TC_LOG_ERROR("phase", "MMAP:LoadTile: Bad header in mmap %04u%02i%02i.mmtile", mapId, x, y);
fclose(file);
- return NULL;
+ delete pTile;
+ return nullptr;
}
if (pTile->fileHeader.mmapVersion != MMAP_VERSION)
{
- TC_LOG_ERROR("phase", "MMAP:LoadTile: %03u%02i%02i.mmtile was built with generator v%i, expected v%i",
+ TC_LOG_ERROR("phase", "MMAP:LoadTile: %04u%02i%02i.mmtile was built with generator v%i, expected v%i",
mapId, x, y, pTile->fileHeader.mmapVersion, MMAP_VERSION);
fclose(file);
- return NULL;
+ delete pTile;
+ return nullptr;
}
pTile->data = (unsigned char*)dtAlloc(pTile->fileHeader.size, DT_ALLOC_PERM);
@@ -211,9 +196,10 @@ namespace MMAP
size_t result = fread(pTile->data, pTile->fileHeader.size, 1, file);
if (!result)
{
- TC_LOG_ERROR("phase", "MMAP:LoadTile: Bad header or data in mmap %03u%02i%02i.mmtile", mapId, x, y);
+ TC_LOG_ERROR("phase", "MMAP:LoadTile: Bad header or data in mmap %04u%02i%02i.mmtile", mapId, x, y);
fclose(file);
- return NULL;
+ delete pTile;
+ return nullptr;
}
fclose(file);
@@ -237,7 +223,7 @@ namespace MMAP
// only a few tiles have terrain swaps, do not write error for them
if (data)
{
- TC_LOG_DEBUG("phase", "MMAP:LoadPhaseTiles: Loaded phased %03u%02i%02i.mmtile for root phase map %u", map->ID, x, y, mapId);
+ TC_LOG_DEBUG("phase", "MMAP:LoadPhaseTiles: Loaded phased %04u%02i%02i.mmtile for root phase map %u", map->ID, x, y, mapId);
_phaseTiles[map->ID][packedGridPos] = data;
}
}
@@ -256,7 +242,7 @@ namespace MMAP
if (_phaseTiles[mapId][packedGridPos])
{
- TC_LOG_DEBUG("phase", "MMAP:UnloadPhaseTile: Unloaded phased %03u%02i%02i.mmtile for root phase map %u", mapId, x, y, rootMapId);
+ TC_LOG_DEBUG("phase", "MMAP:UnloadPhaseTile: Unloaded phased %04u%02i%02i.mmtile for root phase map %u", mapId, x, y, rootMapId);
delete _phaseTiles[mapId][packedGridPos]->data;
delete _phaseTiles[mapId][packedGridPos];
_phaseTiles[mapId].erase(packedGridPos);
@@ -269,7 +255,7 @@ namespace MMAP
if (loadedMMaps.find(mapId) == loadedMMaps.end())
{
// file may not exist, therefore not loaded
- TC_LOG_DEBUG("maps", "MMAP:unloadMap: Asked to unload not loaded navmesh map. %03u%02i%02i.mmtile", mapId, x, y);
+ TC_LOG_DEBUG("maps", "MMAP:unloadMap: Asked to unload not loaded navmesh map. %04u%02i%02i.mmtile", mapId, x, y);
return false;
}
@@ -280,7 +266,7 @@ namespace MMAP
if (mmap->loadedTileRefs.find(packedGridPos) == mmap->loadedTileRefs.end())
{
// file may not exist, therefore not loaded
- TC_LOG_DEBUG("maps", "MMAP:unloadMap: Asked to unload not loaded navmesh tile. %03u%02i%02i.mmtile", mapId, x, y);
+ TC_LOG_DEBUG("maps", "MMAP:unloadMap: Asked to unload not loaded navmesh tile. %04u%02i%02i.mmtile", mapId, x, y);
return false;
}
@@ -292,14 +278,14 @@ namespace MMAP
// this is technically a memory leak
// if the grid is later reloaded, dtNavMesh::addTile will return error but no extra memory is used
// we cannot recover from this error - assert out
- TC_LOG_ERROR("maps", "MMAP:unloadMap: Could not unload %03u%02i%02i.mmtile from navmesh", mapId, x, y);
+ TC_LOG_ERROR("maps", "MMAP:unloadMap: Could not unload %04u%02i%02i.mmtile from navmesh", mapId, x, y);
ASSERT(false);
}
else
{
mmap->loadedTileRefs.erase(packedGridPos);
--loadedTiles;
- TC_LOG_DEBUG("maps", "MMAP:unloadMap: Unloaded mmtile %03i[%02i, %02i] from %03i", mapId, x, y, mapId);
+ TC_LOG_DEBUG("maps", "MMAP:unloadMap: Unloaded mmtile %03i[%02i, %02i] from %04i", mapId, x, y, mapId);
UnloadPhaseTile(mapId, x, y);
return true;
@@ -313,7 +299,7 @@ namespace MMAP
if (loadedMMaps.find(mapId) == loadedMMaps.end())
{
// file may not exist, therefore not loaded
- TC_LOG_DEBUG("maps", "MMAP:unloadMap: Asked to unload not loaded navmesh map %03u", mapId);
+ TC_LOG_DEBUG("maps", "MMAP:unloadMap: Asked to unload not loaded navmesh map %04u", mapId);
return false;
}
@@ -324,18 +310,18 @@ namespace MMAP
uint32 x = (i->first >> 16);
uint32 y = (i->first & 0x0000FFFF);
if (dtStatusFailed(mmap->navMesh->removeTile(i->second, NULL, NULL)))
- TC_LOG_ERROR("maps", "MMAP:unloadMap: Could not unload %03u%02i%02i.mmtile from navmesh", mapId, x, y);
+ TC_LOG_ERROR("maps", "MMAP:unloadMap: Could not unload %04u%02i%02i.mmtile from navmesh", mapId, x, y);
else
{
UnloadPhaseTile(mapId, x, y);
--loadedTiles;
- TC_LOG_DEBUG("maps", "MMAP:unloadMap: Unloaded mmtile %03i[%02i, %02i] from %03i", mapId, x, y, mapId);
+ TC_LOG_DEBUG("maps", "MMAP:unloadMap: Unloaded mmtile %04i[%02i, %02i] from %04i", mapId, x, y, mapId);
}
}
delete mmap;
loadedMMaps.erase(mapId);
- TC_LOG_DEBUG("maps", "MMAP:unloadMap: Unloaded %03i.mmap", mapId);
+ TC_LOG_DEBUG("maps", "MMAP:unloadMap: Unloaded %04i.mmap", mapId);
return true;
}
@@ -346,14 +332,14 @@ namespace MMAP
if (loadedMMaps.find(mapId) == loadedMMaps.end())
{
// file may not exist, therefore not loaded
- TC_LOG_DEBUG("maps", "MMAP:unloadMapInstance: Asked to unload not loaded navmesh map %03u", mapId);
+ TC_LOG_DEBUG("maps", "MMAP:unloadMapInstance: Asked to unload not loaded navmesh map %04u", mapId);
return false;
}
MMapData* mmap = loadedMMaps[mapId];
if (mmap->navMeshQueries.find(instanceId) == mmap->navMeshQueries.end())
{
- TC_LOG_DEBUG("maps", "MMAP:unloadMapInstance: Asked to unload not loaded dtNavMeshQuery mapId %03u instanceId %u", mapId, instanceId);
+ TC_LOG_DEBUG("maps", "MMAP:unloadMapInstance: Asked to unload not loaded dtNavMeshQuery mapId %04u instanceId %u", mapId, instanceId);
return false;
}
@@ -361,7 +347,7 @@ namespace MMAP
dtFreeNavMeshQuery(query);
mmap->navMeshQueries.erase(instanceId);
- TC_LOG_DEBUG("maps", "MMAP:unloadMapInstance: Unloaded mapId %03u instanceId %u", mapId, instanceId);
+ TC_LOG_DEBUG("maps", "MMAP:unloadMapInstance: Unloaded mapId %04u instanceId %u", mapId, instanceId);
return true;
}
@@ -388,11 +374,11 @@ namespace MMAP
if (dtStatusFailed(query->init(mmap->GetNavMesh(swaps), 1024)))
{
dtFreeNavMeshQuery(query);
- TC_LOG_ERROR("maps", "MMAP:GetNavMeshQuery: Failed to initialize dtNavMeshQuery for mapId %03u instanceId %u", mapId, instanceId);
+ TC_LOG_ERROR("maps", "MMAP:GetNavMeshQuery: Failed to initialize dtNavMeshQuery for mapId %04u instanceId %u", mapId, instanceId);
return NULL;
}
- TC_LOG_DEBUG("maps", "MMAP:GetNavMeshQuery: created dtNavMeshQuery for mapId %03u instanceId %u", mapId, instanceId);
+ TC_LOG_DEBUG("maps", "MMAP:GetNavMeshQuery: created dtNavMeshQuery for mapId %04u instanceId %u", mapId, instanceId);
mmap->navMeshQueries.insert(std::pair<uint32, dtNavMeshQuery*>(instanceId, query));
}
@@ -426,25 +412,25 @@ namespace MMAP
if (loadedPhasedTiles[swap].find(packedXY) == loadedPhasedTiles[swap].end())
{
- TC_LOG_DEBUG("phase", "MMapData::RemoveSwap: mmtile %03u[%02i, %02i] unload skipped, due to not loaded", swap, x, y);
+ TC_LOG_DEBUG("phase", "MMapData::RemoveSwap: mmtile %04u[%02i, %02i] unload skipped, due to not loaded", swap, x, y);
return;
}
dtMeshHeader* header = (dtMeshHeader*)ptile->data;
// remove old tile
if (dtStatusFailed(navMesh->removeTile(loadedTileRefs[packedXY], NULL, NULL)))
- TC_LOG_ERROR("phase", "MMapData::RemoveSwap: Could not unload phased %03u%02i%02i.mmtile from navmesh", swap, x, y);
+ TC_LOG_ERROR("phase", "MMapData::RemoveSwap: Could not unload phased %04u%02i%02i.mmtile from navmesh", swap, x, y);
else
{
- TC_LOG_DEBUG("phase", "MMapData::RemoveSwap: Unloaded phased %03u%02i%02i.mmtile from navmesh", swap, x, y);
+ TC_LOG_DEBUG("phase", "MMapData::RemoveSwap: Unloaded phased %04u%02i%02i.mmtile from navmesh", swap, x, y);
// restore base tile
if (dtStatusSucceed(navMesh->addTile(_baseTiles[packedXY]->data, _baseTiles[packedXY]->dataSize, 0, 0, &loadedTileRefs[packedXY])))
{
- TC_LOG_DEBUG("phase", "MMapData::RemoveSwap: Loaded base mmtile %03u[%02i, %02i] into %03i[%02i, %02i]", _mapId, x, y, _mapId, header->x, header->y);
+ TC_LOG_DEBUG("phase", "MMapData::RemoveSwap: Loaded base mmtile %04u[%02i, %02i] into %04i[%02i, %02i]", _mapId, x, y, _mapId, header->x, header->y);
}
else
- TC_LOG_ERROR("phase", "MMapData::RemoveSwap: Could not load base %03u%02i%02i.mmtile to navmesh", _mapId, x, y);
+ TC_LOG_ERROR("phase", "MMapData::RemoveSwap: Could not load base %04u%02i%02i.mmtile to navmesh", _mapId, x, y);
}
loadedPhasedTiles[swap].erase(packedXY);
@@ -464,12 +450,12 @@ namespace MMAP
if (loadedTileRefs.find(packedXY) == loadedTileRefs.end())
{
- TC_LOG_DEBUG("phase", "MMapData::AddSwap: phased mmtile %03u[%02i, %02i] load skipped, due to not loaded base tile on map %u", swap, x, y, _mapId);
+ TC_LOG_DEBUG("phase", "MMapData::AddSwap: phased mmtile %04u[%02i, %02i] load skipped, due to not loaded base tile on map %u", swap, x, y, _mapId);
return;
}
if (loadedPhasedTiles[swap].find(packedXY) != loadedPhasedTiles[swap].end())
{
- TC_LOG_DEBUG("phase", "MMapData::AddSwap: WARNING! phased mmtile %03u[%02i, %02i] load skipped, due to already loaded on map %u", swap, x, y, _mapId);
+ TC_LOG_DEBUG("phase", "MMapData::AddSwap: WARNING! phased mmtile %04u[%02i, %02i] load skipped, due to already loaded on map %u", swap, x, y, _mapId);
return;
}
@@ -480,25 +466,25 @@ namespace MMAP
if (!oldTile)
{
- TC_LOG_DEBUG("phase", "MMapData::AddSwap: phased mmtile %03u[%02i, %02i] load skipped, due to not loaded base tile ref on map %u", swap, x, y, _mapId);
+ TC_LOG_DEBUG("phase", "MMapData::AddSwap: phased mmtile %04u[%02i, %02i] load skipped, due to not loaded base tile ref on map %u", swap, x, y, _mapId);
return;
}
- uint32 old_x = oldTile->header->x;
- uint32 old_y = oldTile->header->y;
-
// header xy is based on the swap map's tile set, wich doesn't have all the same tiles as root map, so copy the xy from the orignal header
- memcpy(ptile->data + 8, (char*)&old_x, 4);
- memcpy(ptile->data + 12, (char*)&old_y, 4);
+ header->x = oldTile->header->x;
+ header->y = oldTile->header->y;
// the removed tile's data
PhasedTile* pt = new PhasedTile();
// remove old tile
if (dtStatusFailed(navMesh->removeTile(loadedTileRefs[packedXY], &pt->data, &pt->dataSize)))
- TC_LOG_ERROR("phase", "MMapData::AddSwap: Could not unload %03u%02i%02i.mmtile from navmesh", _mapId, x, y);
+ {
+ TC_LOG_ERROR("phase", "MMapData::AddSwap: Could not unload %04u%02i%02i.mmtile from navmesh", _mapId, x, y);
+ delete pt;
+ }
else
{
- TC_LOG_DEBUG("phase", "MMapData::AddSwap: Unloaded %03u%02i%02i.mmtile from navmesh", _mapId, x, y);
+ TC_LOG_DEBUG("phase", "MMapData::AddSwap: Unloaded %04u%02i%02i.mmtile from navmesh", _mapId, x, y);
// store the removed data first time, this is the origonal, non-phased tile
if (_baseTiles.find(packedXY) == _baseTiles.end())
@@ -510,43 +496,38 @@ namespace MMAP
// add new swapped tile
if (dtStatusSucceed(navMesh->addTile(ptile->data, ptile->fileHeader.size, 0, 0, &loadedTileRefs[packedXY])))
{
- TC_LOG_DEBUG("phase", "MMapData::AddSwap: Loaded phased mmtile %03u[%02i, %02i] into %03i[%02i, %02i]", swap, x, y, _mapId, header->x, header->y);
+ TC_LOG_DEBUG("phase", "MMapData::AddSwap: Loaded phased mmtile %04u[%02i, %02i] into %04i[%02i, %02i]", swap, x, y, _mapId, header->x, header->y);
}
else
- TC_LOG_ERROR("phase", "MMapData::AddSwap: Could not load %03u%02i%02i.mmtile to navmesh", swap, x, y);
+ TC_LOG_ERROR("phase", "MMapData::AddSwap: Could not load %04u%02i%02i.mmtile to navmesh", swap, x, y);
}
}
dtNavMesh* MMapData::GetNavMesh(TerrainSet swaps)
{
- for (uint32 swap : _activeSwaps)
+ std::set<uint32> activeSwaps = _activeSwaps; // _activeSwaps is modified inside RemoveSwap
+ for (uint32 swap : activeSwaps)
{
- if (swaps.find(swap) == swaps.end()) // swap not active
+ if (!swaps.count(swap)) // swap not active
{
PhaseTileContainer ptc = MMAP::MMapFactory::createOrGetMMapManager()->GetPhaseTileContainer(swap);
for (PhaseTileContainer::const_iterator itr = ptc.begin(); itr != ptc.end(); ++itr)
- {
RemoveSwap(itr->second, swap, itr->first); // remove swap
- }
}
}
- if (!swaps.empty())
+ // for each of the calling unit's terrain swaps
+ for (uint32 swap : swaps)
{
- // for each of the calling unit's terrain swaps
- for (uint32 swap : swaps)
+ if (!_activeSwaps.count(swap)) // swap not active
{
// for each of the terrain swap's xy tiles
PhaseTileContainer ptc = MMAP::MMapFactory::createOrGetMMapManager()->GetPhaseTileContainer(swap);
for (PhaseTileContainer::const_iterator itr = ptc.begin(); itr != ptc.end(); ++itr)
- {
- if (_activeSwaps.find(swap) == _activeSwaps.end()) // swap not active
- {
- AddSwap(itr->second, swap, itr->first); // add swap
- }
- }
+ AddSwap(itr->second, swap, itr->first); // add swap
}
}
+
return navMesh;
}
}
diff --git a/src/server/collision/Management/VMapManager2.cpp b/src/server/collision/Management/VMapManager2.cpp
index f9fcff96ad2..0c3ff1a9bfa 100644
--- a/src/server/collision/Management/VMapManager2.cpp
+++ b/src/server/collision/Management/VMapManager2.cpp
@@ -66,7 +66,7 @@ namespace VMAP
std::string VMapManager2::getMapFileName(unsigned int mapId)
{
std::stringstream fname;
- fname.width(3);
+ fname.width(4);
fname << std::setfill('0') << mapId << std::string(MAP_FILENAME_EXTENSION2);
return fname.str();
diff --git a/src/server/collision/Maps/MapTree.cpp b/src/server/collision/Maps/MapTree.cpp
index b493ec18f5f..862f3e1cefe 100644
--- a/src/server/collision/Maps/MapTree.cpp
+++ b/src/server/collision/Maps/MapTree.cpp
@@ -90,7 +90,7 @@ namespace VMAP
{
std::stringstream tilefilename;
tilefilename.fill('0');
- tilefilename << std::setw(3) << mapID << '_';
+ tilefilename << std::setw(4) << mapID << '_';
//tilefilename << std::setw(2) << tileX << '_' << std::setw(2) << tileY << ".vmtile";
tilefilename << std::setw(2) << tileY << '_' << std::setw(2) << tileX << ".vmtile";
return tilefilename.str();
diff --git a/src/server/collision/Maps/TileAssembler.cpp b/src/server/collision/Maps/TileAssembler.cpp
index 172c556b9a7..ce39dc02da8 100644
--- a/src/server/collision/Maps/TileAssembler.cpp
+++ b/src/server/collision/Maps/TileAssembler.cpp
@@ -24,7 +24,6 @@
#include <set>
#include <iomanip>
#include <sstream>
-#include <iomanip>
using G3D::Vector3;
using G3D::AABox;
@@ -116,7 +115,7 @@ namespace VMAP
// write map tree file
std::stringstream mapfilename;
- mapfilename << iDestDir << '/' << std::setfill('0') << std::setw(3) << map_iter->first << ".vmtree";
+ mapfilename << iDestDir << '/' << std::setfill('0') << std::setw(4) << map_iter->first << ".vmtree";
FILE* mapfile = fopen(mapfilename.str().c_str(), "wb");
if (!mapfile)
{
@@ -157,7 +156,7 @@ namespace VMAP
uint32 nSpawns = tileEntries.count(tile->first);
std::stringstream tilefilename;
tilefilename.fill('0');
- tilefilename << iDestDir << '/' << std::setw(3) << map_iter->first << '_';
+ tilefilename << iDestDir << '/' << std::setw(4) << map_iter->first << '_';
uint32 x, y;
StaticMapTree::unpackTileID(tile->first, x, y);
tilefilename << std::setw(2) << x << '_' << std::setw(2) << y << ".vmtile";
diff --git a/src/server/collision/Models/GameObjectModel.cpp b/src/server/collision/Models/GameObjectModel.cpp
index 6140c266b18..607460a2784 100644
--- a/src/server/collision/Models/GameObjectModel.cpp
+++ b/src/server/collision/Models/GameObjectModel.cpp
@@ -188,12 +188,12 @@ bool GameObjectModel::intersectRay(const G3D::Ray& ray, float& MaxDist, bool Sto
return hit;
}
-bool GameObjectModel::Relocate(const GameObject& go)
+bool GameObjectModel::UpdatePosition()
{
if (!iModel)
return false;
- ModelList::const_iterator it = model_list.find(go.GetDisplayId());
+ ModelList::const_iterator it = model_list.find(owner->GetDisplayId());
if (it == model_list.end())
return false;
@@ -205,9 +205,9 @@ bool GameObjectModel::Relocate(const GameObject& go)
return false;
}
- iPos = Vector3(go.GetPositionX(), go.GetPositionY(), go.GetPositionZ());
+ iPos = Vector3(owner->GetPositionX(), owner->GetPositionY(), owner->GetPositionZ());
- G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(go.GetOrientation(), 0, 0);
+ G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(owner->GetOrientation(), 0, 0);
iInvRot = iRotation.inverse();
// transform bounding box:
mdl_box = AABox(mdl_box.low() * iScale, mdl_box.high() * iScale);
@@ -221,7 +221,7 @@ bool GameObjectModel::Relocate(const GameObject& go)
for (int i = 0; i < 8; ++i)
{
Vector3 pos(iBound.corner(i));
- go.SummonCreature(1, pos.x, pos.y, pos.z, 0, TEMPSUMMON_MANUAL_DESPAWN);
+ owner->SummonCreature(1, pos.x, pos.y, pos.z, 0, TEMPSUMMON_MANUAL_DESPAWN);
}
#endif
diff --git a/src/server/collision/Models/GameObjectModel.h b/src/server/collision/Models/GameObjectModel.h
index 232ebbee5e9..43d299d6d8f 100644
--- a/src/server/collision/Models/GameObjectModel.h
+++ b/src/server/collision/Models/GameObjectModel.h
@@ -68,7 +68,7 @@ public:
static GameObjectModel* Create(const GameObject& go);
- bool Relocate(GameObject const& go);
+ bool UpdatePosition();
};
#endif // _GAMEOBJECT_MODEL_H
diff --git a/src/server/collision/VMapDefinitions.h b/src/server/collision/VMapDefinitions.h
index 8d18372d2b1..7234256f069 100644
--- a/src/server/collision/VMapDefinitions.h
+++ b/src/server/collision/VMapDefinitions.h
@@ -25,8 +25,8 @@
namespace VMAP
{
- const char VMAP_MAGIC[] = "VMAP_4.2";
- const char RAW_VMAP_MAGIC[] = "VMAP042"; // used in extracted vmap files with raw data
+ const char VMAP_MAGIC[] = "VMAP_4.3";
+ const char RAW_VMAP_MAGIC[] = "VMAP043"; // used in extracted vmap files with raw data
const char GAMEOBJECT_MODELS[] = "GameObjectModels.dtree";
// defined in TileAssembler.cpp currently...
diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h
index 91eb00f17c5..3ea18f272ae 100644
--- a/src/server/game/AI/CoreAI/UnitAI.h
+++ b/src/server/game/AI/CoreAI/UnitAI.h
@@ -128,7 +128,7 @@ class UnitAI
virtual void InitializeAI() { if (!me->isDead()) Reset(); }
- virtual void Reset() { };
+ virtual void Reset() { }
// Called when unit is charmed
virtual void OnCharmed(bool apply) = 0;
diff --git a/src/server/game/AI/CreatureAISelector.cpp b/src/server/game/AI/CreatureAISelector.cpp
index f835206aba5..8a37186d0af 100644
--- a/src/server/game/AI/CreatureAISelector.cpp
+++ b/src/server/game/AI/CreatureAISelector.cpp
@@ -53,7 +53,7 @@ namespace FactorySelector
ai_factory = ai_registry.GetRegistryItem("VehicleAI");
else if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN) && ((Guardian*)creature)->GetOwner()->GetTypeId() == TYPEID_PLAYER)
ai_factory = ai_registry.GetRegistryItem("PetAI");
- else if (creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK))
+ else if (creature->HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK))
ai_factory = ai_registry.GetRegistryItem("NullCreatureAI");
else if (creature->IsGuard())
ai_factory = ai_registry.GetRegistryItem("GuardAI");
diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
index bc26fc42df8..66164730219 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
@@ -478,7 +478,7 @@ void npc_escortAI::Start(bool isActiveAttacker /* = true*/, bool run /* = false
}
//disable npcflags
- me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
+ me->SetUInt64Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC))
{
HasImmuneToNPCFlags = true;
diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
index 720847b2f20..ab91b0b5b27 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp
@@ -313,7 +313,7 @@ void FollowerAI::StartFollow(Player* player, uint32 factionForFollower, const Qu
TC_LOG_DEBUG("scripts", "FollowerAI start with WAYPOINT_MOTION_TYPE, set to MoveIdle.");
}
- me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
+ me->SetUInt64Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
AddFollowState(STATE_FOLLOW_INPROGRESS);
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index f3520820f30..f50bf1fe0e1 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -1355,7 +1355,31 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
}
case SMART_ACTION_SET_COUNTER:
{
- StoreCounter(e.action.setCounter.counterId, e.action.setCounter.value, e.action.setCounter.reset);
+ if (ObjectList* targets = GetTargets(e, unit))
+ {
+ for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
+ {
+ if (IsCreature(*itr))
+ {
+ if (SmartAI* ai = CAST_AI(SmartAI, (*itr)->ToCreature()->AI()))
+ ai->GetScript()->StoreCounter(e.action.setCounter.counterId, e.action.setCounter.value, e.action.setCounter.reset);
+ else
+ TC_LOG_ERROR("sql.sql", "SmartScript: Action target for SMART_ACTION_SET_COUNTER is not using SmartAI, skipping");
+ }
+ else if (IsGameObject(*itr))
+ {
+ if (SmartGameObjectAI* ai = CAST_AI(SmartGameObjectAI, (*itr)->ToGameObject()->AI()))
+ ai->GetScript()->StoreCounter(e.action.setCounter.counterId, e.action.setCounter.value, e.action.setCounter.reset);
+ else
+ TC_LOG_ERROR("sql.sql", "SmartScript: Action target for SMART_ACTION_SET_COUNTER is not using SmartGameObjectAI, skipping");
+ }
+ }
+
+ delete targets;
+ }
+ else
+ StoreCounter(e.action.setCounter.counterId, e.action.setCounter.value, e.action.setCounter.reset);
+
break;
}
case SMART_ACTION_WP_START:
@@ -1681,7 +1705,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
if (IsCreature(*itr))
- (*itr)->ToUnit()->SetUInt32Value(UNIT_NPC_FLAGS, e.action.unitFlag.flag);
+ (*itr)->ToUnit()->SetUInt64Value(UNIT_NPC_FLAGS, e.action.unitFlag.flag);
delete targets;
break;
@@ -1694,7 +1718,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
if (IsCreature(*itr))
- (*itr)->ToUnit()->SetFlag(UNIT_NPC_FLAGS, e.action.unitFlag.flag);
+ (*itr)->ToUnit()->SetFlag64(UNIT_NPC_FLAGS, e.action.unitFlag.flag);
delete targets;
break;
@@ -1707,7 +1731,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
if (IsCreature(*itr))
- (*itr)->ToUnit()->RemoveFlag(UNIT_NPC_FLAGS, e.action.unitFlag.flag);
+ (*itr)->ToUnit()->RemoveFlag64(UNIT_NPC_FLAGS, e.action.unitFlag.flag);
delete targets;
break;
diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h
index 0233d1aa7d0..c5cc5aedb43 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.h
+++ b/src/server/game/AI/SmartScripts/SmartScript.h
@@ -177,33 +177,25 @@ class SmartScript
GameObject* FindGameObjectNear(WorldObject* searchObject, ObjectGuid::LowType guid) const
{
- GameObject* gameObject = NULL;
+ auto bounds = searchObject->GetMap()->GetGameObjectBySpawnIdStore().equal_range(guid);
+ if (bounds.first == bounds.second)
+ return nullptr;
- CellCoord p(Trinity::ComputeCellCoord(searchObject->GetPositionX(), searchObject->GetPositionY()));
- Cell cell(p);
-
- Trinity::GameObjectWithDbGUIDCheck goCheck(*searchObject, guid);
- Trinity::GameObjectSearcher<Trinity::GameObjectWithDbGUIDCheck> checker(searchObject, gameObject, goCheck);
-
- TypeContainerVisitor<Trinity::GameObjectSearcher<Trinity::GameObjectWithDbGUIDCheck>, GridTypeMapContainer > objectChecker(checker);
- cell.Visit(p, objectChecker, *searchObject->GetMap(), *searchObject, searchObject->GetGridActivationRange());
-
- return gameObject;
+ return bounds.first->second;
}
Creature* FindCreatureNear(WorldObject* searchObject, ObjectGuid::LowType guid) const
{
- Creature* creature = NULL;
- CellCoord p(Trinity::ComputeCellCoord(searchObject->GetPositionX(), searchObject->GetPositionY()));
- Cell cell(p);
+ auto bounds = searchObject->GetMap()->GetCreatureBySpawnIdStore().equal_range(guid);
+ if (bounds.first == bounds.second)
+ return nullptr;
- Trinity::CreatureWithDbGUIDCheck target_check(searchObject, guid);
- Trinity::CreatureSearcher<Trinity::CreatureWithDbGUIDCheck> checker(searchObject, creature, target_check);
-
- TypeContainerVisitor<Trinity::CreatureSearcher <Trinity::CreatureWithDbGUIDCheck>, GridTypeMapContainer > unit_checker(checker);
- cell.Visit(p, unit_checker, *searchObject->GetMap(), *searchObject, searchObject->GetGridActivationRange());
+ auto creatureItr = std::find_if(bounds.first, bounds.second, [](Map::CreatureBySpawnIdContainer::value_type const& pair)
+ {
+ return pair.second->IsAlive();
+ });
- return creature;
+ return creatureItr != bounds.second ? creatureItr->second : bounds.first->second;
}
ObjectListMap* mTargetStorage;
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h
index 2a499db8fdb..6d56774e447 100644
--- a/src/server/game/Accounts/RBAC.h
+++ b/src/server/game/Accounts/RBAC.h
@@ -61,7 +61,7 @@ enum RBACPermissions
// 9 - reuse
RBAC_PERM_USE_CHARACTER_TEMPLATES = 10,
RBAC_PERM_LOG_GM_TRADE = 11,
- // 12 - reuse
+ // 12 - reuse
RBAC_PERM_SKIP_CHECK_INSTANCE_REQUIRED_BOSSES = 13,
RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_TEAMMASK = 14,
RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_CLASSMASK = 15,
@@ -738,6 +738,7 @@ enum RBACPermissions
RBAC_PERM_COMMAND_TICKET_RESET_BUG = 831,
RBAC_PERM_COMMAND_TICKET_RESET_COMPLAINT = 832,
RBAC_PERM_COMMAND_TICKET_RESET_SUGGESTION = 833,
+ RBAC_PERM_COMMAND_GO_QUEST = 834,
// custom permissions 1000+
RBAC_PERM_MAX
@@ -846,6 +847,7 @@ class RBACData
* @return Success or failure (with reason) to grant the permission
*
* Example Usage:
+ * @code
* // previously defined "RBACData* rbac" with proper initialization
* uint32 permissionId = 2;
* if (rbac->GrantRole(permissionId) == RBAC_IN_DENIED_LIST)
@@ -869,6 +871,7 @@ class RBACData
* @return Success or failure (with reason) to deny the permission
*
* Example Usage:
+ * @code
* // previously defined "RBACData* rbac" with proper initialization
* uint32 permissionId = 2;
* if (rbac->DenyRole(permissionId) == RBAC_ID_DOES_NOT_EXISTS)
@@ -893,6 +896,7 @@ class RBACData
* @return Success or failure (with reason) to remove the permission
*
* Example Usage:
+ * @code
* // previously defined "RBACData* rbac" with proper initialization
* uint32 permissionId = 2;
* if (rbac->RevokeRole(permissionId) == RBAC_OK)
@@ -983,9 +987,6 @@ class RBACData
*
* Given a list of permissions, gets all the inherited permissions
* @param permissions The list of permissions to expand
- *
- * @return new list of permissions containing original permissions and
- * all other pemissions that are linked to the original ones
*/
void ExpandPermissions(RBACPermissionContainer& permissions);
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index cfe93b0cde3..9c347879768 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -28,6 +28,7 @@
#include "DBCEnums.h"
#include "DisableMgr.h"
#include "GameEventMgr.h"
+#include "Garrison.h"
#include "GridNotifiersImpl.h"
#include "Group.h"
#include "Guild.h"
@@ -1161,6 +1162,7 @@ void AchievementMgr<T>::UpdateAchievementCriteria(AchievementCriteriaTypes type,
case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM:
case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM:
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT:
+ case ACHIEVEMENT_CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER:
SetCriteriaProgress(achievementCriteria, 1, referencePlayer);
break;
case ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT:
@@ -1269,6 +1271,39 @@ void AchievementMgr<T>::UpdateAchievementCriteria(AchievementCriteriaTypes type,
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ARCHAEOLOGY_PROJECTS:
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE:
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE:
+ case ACHIEVEMENT_CRITERIA_TYPE_LFR_DUNGEONS_COMPLETED:
+ case ACHIEVEMENT_CRITERIA_TYPE_LFR_LEAVES:
+ case ACHIEVEMENT_CRITERIA_TYPE_LFR_VOTE_KICKS_INITIATED_BY_PLAYER:
+ case ACHIEVEMENT_CRITERIA_TYPE_LFR_VOTE_KICKS_NOT_INIT_BY_PLAYER:
+ case ACHIEVEMENT_CRITERIA_TYPE_BE_KICKED_FROM_LFR:
+ case ACHIEVEMENT_CRITERIA_TYPE_COUNT_OF_LFR_QUEUE_BOOSTS_BY_TANK:
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_SCENARIO_COUNT:
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_SCENARIO:
+ case ACHIEVEMENT_CRITERIA_TYPE_OWN_BATTLE_PET:
+ case ACHIEVEMENT_CRITERIA_TYPE_OWN_BATTLE_PET_COUNT:
+ case ACHIEVEMENT_CRITERIA_TYPE_CAPTURE_BATTLE_PET:
+ case ACHIEVEMENT_CRITERIA_TYPE_WIN_PET_BATTLE:
+ case ACHIEVEMENT_CRITERIA_TYPE_LEVEL_BATTLE_PET:
+ case ACHIEVEMENT_CRITERIA_TYPE_CAPTURE_BATTLE_PET_CREDIT:
+ case ACHIEVEMENT_CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT:
+ case ACHIEVEMENT_CRITERIA_TYPE_ENTER_AREA:
+ case ACHIEVEMENT_CRITERIA_TYPE_LEAVE_AREA:
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER:
+ case ACHIEVEMENT_CRITERIA_TYPE_PLACE_GARRISON_BUILDING:
+ case ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING:
+ case ACHIEVEMENT_CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING:
+ case ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON:
+ case ACHIEVEMENT_CRITERIA_TYPE_START_GARRISON_MISSION:
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT:
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_MISSION:
+ case ACHIEVEMENT_CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_COUNT:
+ case ACHIEVEMENT_CRITERIA_TYPE_LEARN_GARRISON_BLUEPRINT_COUNT:
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT:
+ case ACHIEVEMENT_CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_ITEM_LEVEL:
+ case ACHIEVEMENT_CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_LEVEL:
+ case ACHIEVEMENT_CRITERIA_TYPE_OWN_TOY:
+ case ACHIEVEMENT_CRITERIA_TYPE_OWN_TOY_COUNT:
+ case ACHIEVEMENT_CRITERIA_TYPE_OWN_HEIRLOOMS:
break; // Not implemented yet :(
}
@@ -1413,6 +1448,7 @@ bool AchievementMgr<T>::IsCompletedCriteria(AchievementCriteria const* achieveme
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST:
case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL:
case ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA:
+ case ACHIEVEMENT_CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER:
return progress->counter >= 1;
case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL:
return progress->counter >= (requiredAmount * 75);
@@ -2492,6 +2528,44 @@ bool AchievementMgr<T>::AdditionalRequirementsSatisfied(ModifierTreeNode const*
if (!unit || unit->GetHealthPct() >= reqValue)
return false;
break;
+ case ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_QUALITY: // 145
+ {
+ if (!referencePlayer)
+ return false;
+ Garrison* garrison = referencePlayer->GetGarrison();
+ if (!garrison)
+ return false;
+ Garrison::Follower const* follower = garrison->GetFollower(miscValue1);
+ if (!follower || follower->PacketInfo.Quality != reqValue)
+ return false;
+
+ break;
+ }
+ case ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_LEVEL: // 146
+ {
+ if (!referencePlayer)
+ return false;
+ Garrison* garrison = referencePlayer->GetGarrison();
+ if (!garrison)
+ return false;
+ Garrison::Follower const* follower = garrison->GetFollower(miscValue1);
+ if (!follower || follower->PacketInfo.FollowerLevel < reqValue)
+ return false;
+
+ break;
+ }
+ case ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_ILVL: // 184
+ {
+ if (!referencePlayer)
+ return false;
+ Garrison* garrison = referencePlayer->GetGarrison();
+ if (!garrison)
+ return false;
+ Garrison::Follower const* follower = garrison->GetFollower(miscValue1);
+ if (!follower || follower->GetItemLevel() < reqValue)
+ return false;
+ break;
+ }
default:
break;
}
@@ -2729,6 +2803,74 @@ char const* AchievementGlobalMgr::GetCriteriaTypeString(AchievementCriteriaTypes
return "GUILD_CHALLENGE_TYPE";
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE:
return "GUILD_CHALLENGE";
+ case ACHIEVEMENT_CRITERIA_TYPE_LFR_DUNGEONS_COMPLETED:
+ return "LFR_DUNGEONS_COMPLETED";
+ case ACHIEVEMENT_CRITERIA_TYPE_LFR_LEAVES:
+ return "LFR_LEAVES";
+ case ACHIEVEMENT_CRITERIA_TYPE_LFR_VOTE_KICKS_INITIATED_BY_PLAYER:
+ return "LFR_VOTE_KICKS_INITIATED_BY_PLAYER";
+ case ACHIEVEMENT_CRITERIA_TYPE_LFR_VOTE_KICKS_NOT_INIT_BY_PLAYER:
+ return "LFR_VOTE_KICKS_NOT_INIT_BY_PLAYER";
+ case ACHIEVEMENT_CRITERIA_TYPE_BE_KICKED_FROM_LFR:
+ return "BE_KICKED_FROM_LFR";
+ case ACHIEVEMENT_CRITERIA_TYPE_COUNT_OF_LFR_QUEUE_BOOSTS_BY_TANK:
+ return "COUNT_OF_LFR_QUEUE_BOOSTS_BY_TANK";
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_SCENARIO_COUNT:
+ return "COMPLETE_SCENARIO_COUNT";
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_SCENARIO:
+ return "COMPLETE_SCENARIO";
+ case ACHIEVEMENT_CRITERIA_TYPE_OWN_BATTLE_PET:
+ return "OWN_BATTLE_PET";
+ case ACHIEVEMENT_CRITERIA_TYPE_OWN_BATTLE_PET_COUNT:
+ return "OWN_BATTLE_PET_COUNT";
+ case ACHIEVEMENT_CRITERIA_TYPE_CAPTURE_BATTLE_PET:
+ return "CAPTURE_BATTLE_PET";
+ case ACHIEVEMENT_CRITERIA_TYPE_WIN_PET_BATTLE:
+ return "WIN_PET_BATTLE";
+ case ACHIEVEMENT_CRITERIA_TYPE_LEVEL_BATTLE_PET:
+ return "LEVEL_BATTLE_PET";
+ case ACHIEVEMENT_CRITERIA_TYPE_CAPTURE_BATTLE_PET_CREDIT:
+ return "CAPTURE_BATTLE_PET_CREDIT";
+ case ACHIEVEMENT_CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT:
+ return "LEVEL_BATTLE_PET_CREDIT";
+ case ACHIEVEMENT_CRITERIA_TYPE_ENTER_AREA:
+ return "ENTER_AREA";
+ case ACHIEVEMENT_CRITERIA_TYPE_LEAVE_AREA:
+ return "LEAVE_AREA";
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER:
+ return "COMPLETE_DUNGEON_ENCOUNTER";
+ case ACHIEVEMENT_CRITERIA_TYPE_PLACE_GARRISON_BUILDING:
+ return "PLACE_GARRISON_BUILDING";
+ case ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING:
+ return "UPGRADE_GARRISON_BUILDING";
+ case ACHIEVEMENT_CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING:
+ return "CONSTRUCT_GARRISON_BUILDING";
+ case ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON:
+ return "UPGRADE_GARRISON";
+ case ACHIEVEMENT_CRITERIA_TYPE_START_GARRISON_MISSION:
+ return "START_GARRISON_MISSION";
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT:
+ return "COMPLETE_GARRISON_MISSION_COUNT";
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_MISSION:
+ return "COMPLETE_GARRISON_MISSION";
+ case ACHIEVEMENT_CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_COUNT:
+ return "RECRUIT_GARRISON_FOLLOWER_COUNT";
+ case ACHIEVEMENT_CRITERIA_TYPE_LEARN_GARRISON_BLUEPRINT_COUNT:
+ return "LEARN_GARRISON_BLUEPRINT_COUNT";
+ case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT:
+ return "COMPLETE_GARRISON_SHIPMENT";
+ case ACHIEVEMENT_CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_ITEM_LEVEL:
+ return "RAISE_GARRISON_FOLLOWER_ITEM_LEVEL";
+ case ACHIEVEMENT_CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_LEVEL:
+ return "RAISE_GARRISON_FOLLOWER_LEVEL";
+ case ACHIEVEMENT_CRITERIA_TYPE_OWN_TOY:
+ return "OWN_TOY";
+ case ACHIEVEMENT_CRITERIA_TYPE_OWN_TOY_COUNT:
+ return "OWN_TOY_COUNT";
+ case ACHIEVEMENT_CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER:
+ return "RECRUIT_GARRISON_FOLLOWER";
+ case ACHIEVEMENT_CRITERIA_TYPE_OWN_HEIRLOOMS:
+ return "OWN_HEIRLOOMS";
}
return "MISSING_TYPE";
}
diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
index 2b34d308763..76b2d849a73 100644
--- a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
+++ b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
@@ -320,7 +320,7 @@ bool AuctionBotSeller::Initialize()
continue;
}
- if (prototype->GetFlags() & ITEM_FLAG_UNLOCKED)
+ if (prototype->GetFlags() & ITEM_FIELD_FLAG_UNLOCKED)
{
// skip any not locked lootable items (mostly quest specific or reward cases)
if (!prototype->GetLockID())
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index c6c46c48f50..f37526ae71b 100644
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -71,7 +71,7 @@ namespace Trinity
void do_helper(WorldPacket& data, char const* text)
{
WorldPackets::Chat::Chat packet;
- packet.Initalize(_msgtype, LANG_UNIVERSAL, _source, _source, text);
+ packet.Initialize(_msgtype, LANG_UNIVERSAL, _source, _source, text);
packet.Write();
data = packet.Move();
}
@@ -98,7 +98,7 @@ namespace Trinity
snprintf(str, 2048, text, arg1str, arg2str);
WorldPackets::Chat::Chat packet;
- packet.Initalize(_msgtype, LANG_UNIVERSAL, _source, _source, str);
+ packet.Initialize(_msgtype, LANG_UNIVERSAL, _source, _source, str);
packet.Write();
data = packet.Move();
}
diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
index 1bb636078e2..a227dc1a07b 100644
--- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp
+++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
@@ -471,8 +471,8 @@ void BattlegroundMgr::LoadBattlegroundTemplates()
_battlegroundMapTemplates.clear();
_battlegroundTemplates.clear();
- // 0 1 2 3 4 5 6 7 8 9 10 11
- QueryResult result = WorldDatabase.Query("SELECT id, MinPlayersPerTeam, MaxPlayersPerTeam, MinLvl, MaxLvl, AllianceStartLoc, AllianceStartO, HordeStartLoc, HordeStartO, StartMaxDist, Weight, ScriptName FROM battleground_template");
+ // 0 1 2 3 4 5 6 7 8 9
+ QueryResult result = WorldDatabase.Query("SELECT ID, MinPlayersPerTeam, MaxPlayersPerTeam, MinLvl, MaxLvl, AllianceStartLoc, HordeStartLoc, StartMaxDist, Weight, ScriptName FROM battleground_template");
if (!result)
{
TC_LOG_ERROR("server.loading", ">> Loaded 0 battlegrounds. DB table `battleground_template` is empty.");
@@ -504,22 +504,22 @@ void BattlegroundMgr::LoadBattlegroundTemplates()
bgTemplate.MaxPlayersPerTeam = fields[2].GetUInt16();
bgTemplate.MinLevel = fields[3].GetUInt8();
bgTemplate.MaxLevel = fields[4].GetUInt8();
- float dist = fields[9].GetFloat();
+ float dist = fields[7].GetFloat();
bgTemplate.MaxStartDistSq = dist * dist;
- bgTemplate.Weight = fields[10].GetUInt8();
- bgTemplate.ScriptId = sObjectMgr->GetScriptId(fields[11].GetCString());
+ bgTemplate.Weight = fields[8].GetUInt8();
+ bgTemplate.ScriptId = sObjectMgr->GetScriptId(fields[9].GetCString());
bgTemplate.BattlemasterEntry = bl;
if (bgTemplate.MaxPlayersPerTeam == 0 || bgTemplate.MinPlayersPerTeam > bgTemplate.MaxPlayersPerTeam)
{
- TC_LOG_ERROR("sql.sql", "Table `battleground_template` for id %u has bad values for MinPlayersPerTeam (%u) and MaxPlayersPerTeam(%u)",
+ TC_LOG_ERROR("sql.sql", "Table `battleground_template` for ID %u has bad values for MinPlayersPerTeam (%u) and MaxPlayersPerTeam(%u)",
bgTemplate.Id, bgTemplate.MinPlayersPerTeam, bgTemplate.MaxPlayersPerTeam);
continue;
}
if (bgTemplate.MinLevel == 0 || bgTemplate.MaxLevel == 0 || bgTemplate.MinLevel > bgTemplate.MaxLevel)
{
- TC_LOG_ERROR("sql.sql", "Table `battleground_template` for id %u has bad values for MinLevel (%u) and MaxLevel (%u)",
+ TC_LOG_ERROR("sql.sql", "Table `battleground_template` for ID %u has bad values for MinLevel (%u) and MaxLevel (%u)",
bgTemplate.Id, bgTemplate.MinLevel, bgTemplate.MaxLevel);
continue;
}
@@ -529,22 +529,22 @@ void BattlegroundMgr::LoadBattlegroundTemplates()
uint32 startId = fields[5].GetUInt32();
if (WorldSafeLocsEntry const* start = sWorldSafeLocsStore.LookupEntry(startId))
{
- bgTemplate.StartLocation[TEAM_ALLIANCE].Relocate(start->Loc.X, start->Loc.Y, start->Loc.Z, fields[6].GetFloat());
+ bgTemplate.StartLocation[TEAM_ALLIANCE].Relocate(start->Loc.X, start->Loc.Y, start->Loc.Z, (start->Facing * M_PI) / 180);
}
else
{
- TC_LOG_ERROR("sql.sql", "Table `battleground_template` for id %u has non-existed WorldSafeLocs.dbc id %u in field `AllianceStartLoc`. BG not created.", bgTemplate.Id, startId);
+ TC_LOG_ERROR("sql.sql", "Table `battleground_template` for ID %u a non-existant WorldSafeLoc (ID: %u) in field `AllianceStartLoc`. BG not created.", bgTemplate.Id, startId);
continue;
}
- startId = fields[7].GetUInt32();
+ startId = fields[6].GetUInt32();
if (WorldSafeLocsEntry const* start = sWorldSafeLocsStore.LookupEntry(startId))
{
- bgTemplate.StartLocation[TEAM_HORDE].Relocate(start->Loc.X, start->Loc.Y, start->Loc.Z, fields[8].GetFloat());
+ bgTemplate.StartLocation[TEAM_HORDE].Relocate(start->Loc.X, start->Loc.Y, start->Loc.Z, (start->Facing * M_PI) / 180);
}
else
{
- TC_LOG_ERROR("sql.sql", "Table `battleground_template` for id %u has non-existed WorldSafeLocs.dbc id %u in field `HordeStartLoc`. BG not created.", bgTemplate.Id, startId);
+ TC_LOG_ERROR("sql.sql", "Table `battleground_template` for ID %u has a non-existant WorldSafeLoc (ID: %u) in field `HordeStartLoc`. BG not created.", bgTemplate.Id, startId);
continue;
}
}
diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.h b/src/server/game/Battlegrounds/BattlegroundQueue.h
index 9a65019a390..eb225250a56 100644
--- a/src/server/game/Battlegrounds/BattlegroundQueue.h
+++ b/src/server/game/Battlegrounds/BattlegroundQueue.h
@@ -106,7 +106,7 @@ class BattlegroundQueue
class SelectionPool
{
public:
- SelectionPool(): PlayerCount(0) { };
+ SelectionPool(): PlayerCount(0) { }
void Init();
bool AddGroup(GroupQueueInfo* ginfo, uint32 desiredCount);
bool KickGroup(uint32 size);
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBFG.h b/src/server/game/Battlegrounds/Zones/BattlegroundBFG.h
index 3694c62d663..8b6f16d1ff9 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundBFG.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundBFG.h
@@ -42,7 +42,7 @@ class BattlegroundBFGScore final : public BattlegroundScore
}
}
- void BuildObjectivesBlock(std::vector<int32>& stats)
+ void BuildObjectivesBlock(std::vector<int32>& stats) override
{
stats.push_back(BasesAssaulted);
stats.push_back(BasesDefended);
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundTP.h b/src/server/game/Battlegrounds/Zones/BattlegroundTP.h
index b11485d6025..1dfd3801864 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundTP.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundTP.h
@@ -42,7 +42,7 @@ class BattlegroundTPScore final : public BattlegroundScore
}
}
- void BuildObjectivesBlock(std::vector<int32>& stats)
+ void BuildObjectivesBlock(std::vector<int32>& stats) override
{
stats.push_back(FlagCaptures);
stats.push_back(FlagReturns);
diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt
index caa75c24121..9c3646c39ca 100644
--- a/src/server/game/CMakeLists.txt
+++ b/src/server/game/CMakeLists.txt
@@ -24,6 +24,7 @@ file(GLOB_RECURSE sources_DataStores DataStores/*.cpp DataStores/*.h)
file(GLOB_RECURSE sources_DungeonFinding DungeonFinding/*.cpp DungeonFinding/*.h)
file(GLOB_RECURSE sources_Entities Entities/*.cpp Entities/*.h)
file(GLOB_RECURSE sources_Events Events/*.cpp Events/*.h)
+file(GLOB_RECURSE sources_Garrison Garrison/*.cpp Garrison/*.h)
file(GLOB_RECURSE sources_Globals Globals/*.cpp Globals/*.h)
file(GLOB_RECURSE sources_Grids Grids/*.cpp Grids/*.h)
file(GLOB_RECURSE sources_Groups Groups/*.cpp Groups/*.h)
@@ -75,6 +76,7 @@ set(game_STAT_SRCS
${sources_DungeonFinding}
${sources_Entities}
${sources_Events}
+ ${sources_Garrison}
${sources_Globals}
${sources_Grids}
${sources_Groups}
@@ -172,6 +174,7 @@ include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/Entities/Vehicle
${CMAKE_CURRENT_SOURCE_DIR}/Entities/Transport
${CMAKE_CURRENT_SOURCE_DIR}/Events
+ ${CMAKE_CURRENT_SOURCE_DIR}/Garrison
${CMAKE_CURRENT_SOURCE_DIR}/Globals
${CMAKE_CURRENT_SOURCE_DIR}/Grids/Cells
${CMAKE_CURRENT_SOURCE_DIR}/Grids/Notifiers
@@ -217,8 +220,8 @@ include_directories(
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
add_library(game STATIC
- ${game_STAT_SRCS}
${game_STAT_PCH_SRC}
+ ${game_STAT_SRCS}
)
add_dependencies(game revision.h)
diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp
index 04b6eb1b5b1..97fa489d388 100644
--- a/src/server/game/Chat/Channels/Channel.cpp
+++ b/src/server/game/Chat/Channels/Channel.cpp
@@ -626,10 +626,10 @@ void Channel::Say(ObjectGuid const& guid, std::string const& what, uint32 lang)
WorldPackets::Chat::Chat packet;
if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
- packet.Initalize(CHAT_MSG_CHANNEL, Language(lang), player, player, what, 0, _name);
+ packet.Initialize(CHAT_MSG_CHANNEL, Language(lang), player, player, what, 0, _name);
else
{
- packet.Initalize(CHAT_MSG_CHANNEL, Language(lang), nullptr, nullptr, what, 0, _name);
+ packet.Initialize(CHAT_MSG_CHANNEL, Language(lang), nullptr, nullptr, what, 0, _name);
packet.SenderGUID = guid;
packet.TargetGUID = guid;
}
@@ -990,32 +990,42 @@ void Channel::MakeVoiceOff(WorldPackets::Channel::ChannelNotify& data, ObjectGui
void Channel::JoinNotify(Player const* player)
{
ObjectGuid const& guid = player->GetGUID();
- WorldPacket data(IsConstant() ? SMSG_USERLIST_ADD : SMSG_USERLIST_UPDATE, 8 + 1 + 1 + 4 + GetName().size());
- data << guid;
- data << uint8(GetPlayerFlags(guid));
- data << uint8(GetFlags());
- data << uint32(GetNumPlayers());
- data << GetName();
if (IsConstant())
- SendToAllButOne(&data, guid);
+ {
+ WorldPackets::Channel::UserlistAdd userlistAdd;
+ userlistAdd.AddedUserGUID = guid;
+ userlistAdd._ChannelFlags = GetFlags();
+ userlistAdd.UserFlags = GetPlayerFlags(guid);
+ userlistAdd.ChannelID = GetChannelId();
+ userlistAdd.ChannelName = GetName();
+ SendToAllButOne(userlistAdd.Write(), guid);
+ }
else
- SendToAll(&data);
+ {
+ WorldPackets::Channel::UserlistUpdate userlistUpdate;
+ userlistUpdate.UpdatedUserGUID = guid;
+ userlistUpdate._ChannelFlags = GetFlags();
+ userlistUpdate.UserFlags = GetPlayerFlags(guid);
+ userlistUpdate.ChannelID = GetChannelId();
+ userlistUpdate.ChannelName = GetName();
+ SendToAll(userlistUpdate.Write());
+ }
}
void Channel::LeaveNotify(Player const* player)
{
ObjectGuid const& guid = player->GetGUID();
- WorldPacket data(SMSG_USERLIST_REMOVE, 8 + 1 + 4 + GetName().size());
- data << guid;
- data << uint8(GetFlags());
- data << uint32(GetNumPlayers());
- data << GetName();
+ WorldPackets::Channel::UserlistRemove userlistRemove;
+ userlistRemove.RemovedUserGUID = guid;
+ userlistRemove._ChannelFlags = GetFlags();
+ userlistRemove.ChannelID = GetChannelId();
+ userlistRemove.ChannelName = GetName();
if (IsConstant())
- SendToAllButOne(&data, guid);
+ SendToAllButOne(userlistRemove.Write(), guid);
else
- SendToAll(&data);
+ SendToAll(userlistRemove.Write());
}
void Channel::SetModerator(ObjectGuid const& guid, bool set)
diff --git a/src/server/game/Chat/Channels/Channel.h b/src/server/game/Chat/Channels/Channel.h
index 2cfe0797bce..23cd4e4cada 100644
--- a/src/server/game/Chat/Channels/Channel.h
+++ b/src/server/game/Chat/Channels/Channel.h
@@ -72,7 +72,9 @@ enum ChatNotify
CHAT_NOT_IN_AREA_NOTICE = 0x20, //+ "[%s] You are not in the correct area for this channel."; -- The user is trying to send a chat to a zone specific channel, and they're not physically in that zone.
CHAT_NOT_IN_LFG_NOTICE = 0x21, //+ "[%s] You must be queued in looking for group before joining this channel."; -- The user must be in the looking for group system to join LFG chat channels.
CHAT_VOICE_ON_NOTICE = 0x22, //+ "[%s] Channel voice enabled by %s.";
- CHAT_VOICE_OFF_NOTICE = 0x23 //+ "[%s] Channel voice disabled by %s.";
+ CHAT_VOICE_OFF_NOTICE = 0x23, //+ "[%s] Channel voice disabled by %s.";
+ CHAT_TRIAL_RESTRICTED = 0x24,
+ CHAT_NOT_ALLOWED_IN_CHANNEL = 0x25
};
enum ChannelFlags
@@ -206,7 +208,7 @@ class Channel
void DeVoice(Player const* player);
void JoinNotify(Player const* player);
void LeaveNotify(Player const* player);
- void SetOwnership(bool ownership) { _ownership = ownership; };
+ void SetOwnership(bool ownership) { _ownership = ownership; }
static void CleanOldChannelsInDB();
private:
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp
index 837ff0be60f..52c52726b73 100644
--- a/src/server/game/Chat/Chat.cpp
+++ b/src/server/game/Chat/Chat.cpp
@@ -201,7 +201,7 @@ void ChatHandler::SendSysMessage(const char *str)
while (char* line = LineFromMessage(pos))
{
- packet.Initalize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
+ packet.Initialize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
m_session->SendPacket(packet.Write());
}
@@ -219,7 +219,7 @@ void ChatHandler::SendGlobalSysMessage(const char *str)
while (char* line = LineFromMessage(pos))
{
- packet.Initalize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
+ packet.Initialize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
sWorld->SendGlobalMessage(packet.Write());
}
@@ -237,7 +237,7 @@ void ChatHandler::SendGlobalGMSysMessage(const char *str)
while (char* line = LineFromMessage(pos))
{
- packet.Initalize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
+ packet.Initialize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
sWorld->SendGlobalGMMessage(packet.Write());
}
@@ -321,9 +321,9 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand* table, const char* text, st
std::string zoneName = "Unknown";
if (AreaTableEntry const* area = GetAreaEntryByAreaID(areaId))
{
- areaName = area->ZoneName;
+ areaName = area->AreaName_lang;
if (AreaTableEntry const* zone = GetAreaEntryByAreaID(area->ParentAreaID))
- zoneName = zone->ZoneName;
+ zoneName = zone->AreaName_lang;
}
sLog->outCommand(m_session->GetAccountId(), "Command: %s [Player: %s (%s) (Account: %u) X: %f Y: %f Z: %f Map: %u (%s) Area: %u (%s) Zone: %s Selected: %s (%s)]",
@@ -796,15 +796,11 @@ GameObject* ChatHandler::GetObjectGlobalyWithGuidOrNearWithDbGuid(ObjectGuid::Lo
if (!obj && sObjectMgr->GetGOData(lowguid)) // guid is DB guid of object
{
- // search near player then
- CellCoord p(Trinity::ComputeCellCoord(pl->GetPositionX(), pl->GetPositionY()));
- Cell cell(p);
+ auto bounds = pl->GetMap()->GetGameObjectBySpawnIdStore().equal_range(lowguid);
+ if (bounds.first == bounds.second)
+ return nullptr;
- Trinity::GameObjectWithDbGUIDCheck go_check(*pl, lowguid);
- Trinity::GameObjectSearcher<Trinity::GameObjectWithDbGUIDCheck> checker(pl, obj, go_check);
-
- TypeContainerVisitor<Trinity::GameObjectSearcher<Trinity::GameObjectWithDbGUIDCheck>, GridTypeMapContainer > object_checker(checker);
- cell.Visit(p, object_checker, *pl->GetMap(), *pl, pl->GetGridActivationRange());
+ return bounds.first->second;
}
return obj;
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index bed2cc793f4..01c65315d35 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -28,6 +28,18 @@ DB2Storage<AreaGroupMemberEntry> sAreaGroupMemberStore("AreaGroupMemb
DB2Storage<BroadcastTextEntry> sBroadcastTextStore("BroadcastText.db2", BroadcastTextFormat, HOTFIX_SEL_BROADCAST_TEXT);
DB2Storage<CurrencyTypesEntry> sCurrencyTypesStore("CurrencyTypes.db2", CurrencyTypesFormat, HOTFIX_SEL_CURRENCY_TYPES);
DB2Storage<CurvePointEntry> sCurvePointStore("CurvePoint.db2", CurvePointFormat, HOTFIX_SEL_CURVE_POINT);
+DB2Storage<GameObjectsEntry> sGameObjectsStore("GameObjects.db2", GameObjectsFormat, HOTFIX_SEL_GAMEOBJECTS);
+DB2Storage<GarrAbilityEntry> sGarrAbilityStore("GarrAbility.db2", GarrAbilityFormat, HOTFIX_SEL_GARR_ABILITY);
+DB2Storage<GarrBuildingEntry> sGarrBuildingStore("GarrBuilding.db2", GarrBuildingFormat, HOTFIX_SEL_GARR_BUILDING);
+DB2Storage<GarrBuildingPlotInstEntry> sGarrBuildingPlotInstStore("GarrBuildingPlotInst.db2", GarrBuildingPlotInstFormat, HOTFIX_SEL_GARR_BUILDING_PLOT_INST);
+DB2Storage<GarrClassSpecEntry> sGarrClassSpecStore("GarrClassSpec.db2", GarrClassSpecFormat, HOTFIX_SEL_GARR_CLASS_SPEC);
+DB2Storage<GarrFollowerEntry> sGarrFollowerStore("GarrFollower.db2", GarrFollowerFormat, HOTFIX_SEL_GARR_FOLLOWER);
+DB2Storage<GarrFollowerXAbilityEntry> sGarrFollowerXAbilityStore("GarrFollowerXAbility.db2", GarrFollowerXAbilityFormat, HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY);
+DB2Storage<GarrPlotBuildingEntry> sGarrPlotBuildingStore("GarrPlotBuilding.db2", GarrPlotBuildingFormat, HOTFIX_SEL_GARR_PLOT_BUILDING);
+DB2Storage<GarrPlotEntry> sGarrPlotStore("GarrPlot.db2", GarrPlotFormat, HOTFIX_SEL_GARR_PLOT);
+DB2Storage<GarrPlotInstanceEntry> sGarrPlotInstanceStore("GarrPlotInstance.db2", GarrPlotInstanceFormat, HOTFIX_SEL_GARR_PLOT_INSTANCE);
+DB2Storage<GarrSiteLevelEntry> sGarrSiteLevelStore("GarrSiteLevel.db2", GarrSiteLevelFormat, HOTFIX_SEL_GARR_SITE_LEVEL);
+DB2Storage<GarrSiteLevelPlotInstEntry> sGarrSiteLevelPlotInstStore("GarrSiteLevelPlotInst.db2", GarrSiteLevelPlotInstFormat, HOTFIX_SEL_GARR_SITE_LEVEL_PLOT_INST);
DB2Storage<HolidaysEntry> sHolidaysStore("Holidays.db2", HolidaysEntryFormat, HOTFIX_SEL_HOLIDAYS);
DB2Storage<ItemAppearanceEntry> sItemAppearanceStore("ItemAppearance.db2", ItemAppearanceFormat, HOTFIX_SEL_ITEM_APPEARANCE);
DB2Storage<ItemBonusEntry> sItemBonusStore("ItemBonus.db2", ItemBonusFormat, HOTFIX_SEL_ITEM_BONUS);
@@ -50,8 +62,8 @@ DB2Storage<SpellCastingRequirementsEntry> sSpellCastingRequirementsStore("Spel
DB2Storage<SpellClassOptionsEntry> sSpellClassOptionsStore("SpellClassOptions.db2", SpellClassOptionsFormat, HOTFIX_SEL_SPELL_CLASS_OPTIONS);
DB2Storage<SpellLearnSpellEntry> sSpellLearnSpellStore("SpellLearnSpell.db2", SpellLearnSpellFormat, HOTFIX_SEL_SPELL_LEARN_SPELL);
DB2Storage<SpellMiscEntry> sSpellMiscStore("SpellMisc.db2", SpellMiscFormat, HOTFIX_SEL_SPELL_MISC);
-DB2Storage<SpellPowerEntry> sSpellPowerStore("SpellPower.db2", SpellPowerFormat, HOTFIX_SEL_SPELL_POWER);
DB2Storage<SpellPowerDifficultyEntry> sSpellPowerDifficultyStore("SpellPowerDifficulty.db2", SpellPowerDifficultyFormat, HOTFIX_SEL_SPELL_POWER_DIFFICULTY);
+DB2Storage<SpellPowerEntry> sSpellPowerStore("SpellPower.db2", SpellPowerFormat, HOTFIX_SEL_SPELL_POWER);
DB2Storage<SpellReagentsEntry> sSpellReagentsStore("SpellReagents.db2", SpellReagentsFormat, HOTFIX_SEL_SPELL_REAGENTS);
DB2Storage<SpellRuneCostEntry> sSpellRuneCostStore("SpellRuneCost.db2", SpellRuneCostFormat, HOTFIX_SEL_SPELL_RUNE_COST);
DB2Storage<SpellTotemsEntry> sSpellTotemsStore("SpellTotems.db2", SpellTotemsFormat, HOTFIX_SEL_SPELL_TOTEMS);
@@ -125,41 +137,57 @@ void DB2Manager::LoadStores(std::string const& dataPath)
DB2StoreProblemList bad_db2_files;
uint32 availableDb2Locales = 0xFF;
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sAreaGroupStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sAreaGroupMemberStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sBroadcastTextStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sCurrencyTypesStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sCurvePointStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sHolidaysStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sItemAppearanceStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sItemBonusStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sItemBonusTreeNodeStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sItemCurrencyCostStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sItemEffectStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sItemExtendedCostStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sItemModifiedAppearanceStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sItemSparseStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sItemStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sItemXBonusTreeStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sKeyChainStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sMountStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sOverrideSpellDataStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sPhaseXPhaseGroupStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sQuestPackageItemStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSoundEntriesStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSpellAuraRestrictionsStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSpellCastingRequirementsStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSpellClassOptionsStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSpellLearnSpellStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSpellMiscStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSpellPowerStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSpellPowerDifficultyStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSpellReagentsStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSpellRuneCostStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sSpellTotemsStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sTaxiNodesStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sTaxiPathNodeStore, db2Path);
- LoadDB2(availableDb2Locales, bad_db2_files, _stores, &sTaxiPathStore, db2Path);
+#define LOAD_DB2(store) LoadDB2(availableDb2Locales, bad_db2_files, _stores, &store, db2Path)
+
+ LOAD_DB2(sAreaGroupMemberStore);
+ LOAD_DB2(sAreaGroupStore);
+ LOAD_DB2(sBroadcastTextStore);
+ LOAD_DB2(sCurrencyTypesStore);
+ LOAD_DB2(sCurvePointStore);
+ LOAD_DB2(sGameObjectsStore);
+ LOAD_DB2(sGarrAbilityStore);
+ LOAD_DB2(sGarrBuildingStore);
+ LOAD_DB2(sGarrBuildingPlotInstStore);
+ LOAD_DB2(sGarrClassSpecStore);
+ LOAD_DB2(sGarrFollowerStore);
+ LOAD_DB2(sGarrFollowerXAbilityStore);
+ LOAD_DB2(sGarrPlotBuildingStore);
+ LOAD_DB2(sGarrPlotInstanceStore);
+ LOAD_DB2(sGarrPlotStore);
+ LOAD_DB2(sGarrSiteLevelPlotInstStore);
+ LOAD_DB2(sGarrSiteLevelStore);
+ LOAD_DB2(sHolidaysStore);
+ LOAD_DB2(sItemAppearanceStore);
+ LOAD_DB2(sItemBonusStore);
+ LOAD_DB2(sItemBonusTreeNodeStore);
+ LOAD_DB2(sItemCurrencyCostStore);
+ LOAD_DB2(sItemEffectStore);
+ LOAD_DB2(sItemExtendedCostStore);
+ LOAD_DB2(sItemModifiedAppearanceStore);
+ LOAD_DB2(sItemSparseStore);
+ LOAD_DB2(sItemStore);
+ LOAD_DB2(sItemXBonusTreeStore);
+ LOAD_DB2(sKeyChainStore);
+ LOAD_DB2(sMountStore);
+ LOAD_DB2(sOverrideSpellDataStore);
+ LOAD_DB2(sPhaseXPhaseGroupStore);
+ LOAD_DB2(sQuestPackageItemStore);
+ LOAD_DB2(sSoundEntriesStore);
+ LOAD_DB2(sSpellAuraRestrictionsStore);
+ LOAD_DB2(sSpellCastingRequirementsStore);
+ LOAD_DB2(sSpellClassOptionsStore);
+ LOAD_DB2(sSpellLearnSpellStore);
+ LOAD_DB2(sSpellMiscStore);
+ LOAD_DB2(sSpellPowerDifficultyStore);
+ LOAD_DB2(sSpellPowerStore);
+ LOAD_DB2(sSpellReagentsStore);
+ LOAD_DB2(sSpellRuneCostStore);
+ LOAD_DB2(sSpellTotemsStore);
+ LOAD_DB2(sTaxiNodesStore);
+ LOAD_DB2(sTaxiPathNodeStore);
+ LOAD_DB2(sTaxiPathStore);
+
+#undef LOAD_DB2
for (AreaGroupMemberEntry const* areaGroupMember : sAreaGroupMemberStore)
_areaGroupMembers[areaGroupMember->AreaGroupID].push_back(areaGroupMember->AreaID);
@@ -493,6 +521,11 @@ MountEntry const* DB2Manager::GetMount(uint32 spellId) const
return nullptr;
}
+MountEntry const* DB2Manager::GetMountById(uint32 id) const
+{
+ return sMountStore.LookupEntry(id);
+}
+
std::vector<QuestPackageItemEntry const*> const* DB2Manager::GetQuestPackageItems(uint32 questPackageID) const
{
auto itr = _questPackages.find(questPackageID);
diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h
index ece71c7413e..a79b3d1c1fa 100644
--- a/src/server/game/DataStores/DB2Stores.h
+++ b/src/server/game/DataStores/DB2Stores.h
@@ -23,8 +23,20 @@
#include "SharedDefines.h"
extern DB2Storage<BroadcastTextEntry> sBroadcastTextStore;
-extern DB2Storage<HolidaysEntry> sHolidaysStore;
extern DB2Storage<CurrencyTypesEntry> sCurrencyTypesStore;
+extern DB2Storage<GameObjectsEntry> sGameObjectsStore;
+extern DB2Storage<GarrAbilityEntry> sGarrAbilityStore;
+extern DB2Storage<GarrBuildingEntry> sGarrBuildingStore;
+extern DB2Storage<GarrBuildingPlotInstEntry> sGarrBuildingPlotInstStore;
+extern DB2Storage<GarrClassSpecEntry> sGarrClassSpecStore;
+extern DB2Storage<GarrFollowerEntry> sGarrFollowerStore;
+extern DB2Storage<GarrFollowerXAbilityEntry> sGarrFollowerXAbilityStore;
+extern DB2Storage<GarrPlotBuildingEntry> sGarrPlotBuildingStore;
+extern DB2Storage<GarrPlotEntry> sGarrPlotStore;
+extern DB2Storage<GarrPlotInstanceEntry> sGarrPlotInstanceStore;
+extern DB2Storage<GarrSiteLevelEntry> sGarrSiteLevelStore;
+extern DB2Storage<GarrSiteLevelPlotInstEntry> sGarrSiteLevelPlotInstStore;
+extern DB2Storage<HolidaysEntry> sHolidaysStore;
extern DB2Storage<ItemCurrencyCostEntry> sItemCurrencyCostStore;
extern DB2Storage<ItemEffectEntry> sItemEffectStore;
extern DB2Storage<ItemEntry> sItemStore;
@@ -98,6 +110,7 @@ public:
std::set<uint32> GetItemBonusTree(uint32 itemId, uint32 itemBonusTreeMod) const;
uint32 GetItemDisplayId(uint32 itemId, uint32 appearanceModId) const;
MountEntry const* GetMount(uint32 spellId) const;
+ MountEntry const* GetMountById(uint32 id) const;
std::vector<QuestPackageItemEntry const*> const* GetQuestPackageItems(uint32 questPackageID) const;
std::set<uint32> GetPhasesForGroup(uint32 group) const;
std::vector<SpellPowerEntry const*> GetSpellPowers(uint32 spellId, Difficulty difficulty = DIFFICULTY_NONE, bool* hasDifficultyPowers = nullptr) const;
diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h
index 912ae5d60d5..80c79a94b96 100644
--- a/src/server/game/DataStores/DB2Structure.h
+++ b/src/server/game/DataStores/DB2Structure.h
@@ -81,6 +81,166 @@ struct CurvePointEntry
float Y; // 4
};
+struct GameObjectsEntry
+{
+ uint32 ID; // 0
+ uint32 MapID; // 1
+ uint32 DisplayID; // 2
+ DBCPosition3D Position; // 3-5
+ float RotationX; // 6
+ float RotationY; // 7
+ float RotationZ; // 8
+ float RotationW; // 9
+ float Size; // 10
+ uint32 PhaseUseFlags; // 11
+ uint32 PhaseID; // 12
+ uint32 PhaseGroupID; // 13
+ uint32 Type; // 14
+ uint32 Data[8]; // 15-22
+ LocalizedString* Name; // 23
+};
+
+struct GarrAbilityEntry
+{
+ uint32 ID; // 0
+ uint32 Flags; // 1
+ LocalizedString* Name; // 2
+ LocalizedString* Description; // 3
+ uint32 IconFileDataID; // 4
+ uint32 OtherFactionGarrAbilityID; // 5
+ uint32 GarrAbilityCategoryID; // 6
+};
+
+struct GarrBuildingEntry
+{
+ uint32 ID; // 0
+ uint32 HordeGameObjectID; // 1
+ uint32 AllianceGameObjectID; // 2
+ uint32 Unknown; // 3
+ uint32 Type; // 4
+ uint32 Level; // 5
+ LocalizedString* NameAlliance; // 6
+ LocalizedString* NameHorde; // 7
+ LocalizedString* Description; // 8
+ LocalizedString* Tooltip; // 9
+ uint32 BuildDuration; // 10
+ uint32 CostCurrencyID; // 11
+ int32 CostCurrencyAmount; // 12
+ uint32 HordeTexPrefixKitID; // 13
+ uint32 AllianceTexPrefixKitID; // 14
+ uint32 IconFileDataID; // 15
+ uint32 BonusAmount; // 16
+ uint32 Flags; // 17
+ uint32 AllianceActivationScenePackageID; // 18
+ uint32 HordeActivationScenePackageID; // 19
+ uint32 MaxShipments; // 20
+ uint32 FollowerRequiredGarrAbilityID; // 21
+ uint32 FollowerGarrAbilityEffectID; // 22
+ int32 CostMoney; // 23
+};
+
+struct GarrBuildingPlotInstEntry
+{
+ uint32 ID; // 0
+ uint32 GarrBuildingID; // 1
+ uint32 UiTextureAtlasMemberID; // 2
+ uint32 GarrSiteLevelPlotInstID; // 3
+ DBCPosition2D LandmarkOffset; // 4-5
+};
+
+struct GarrClassSpecEntry
+{
+ uint32 ID; // 0
+ LocalizedString* NameMale; // 1
+ LocalizedString* NameFemale; // 2
+ LocalizedString* NameGenderless; // 3
+ uint32 ClassAtlasID; // 4 UiTextureAtlasMember.db2 ref
+ uint32 GarrFollItemSetID; // 5
+};
+
+struct GarrFollowerEntry
+{
+ uint32 ID; // 0
+ uint32 HordeCreatureID; // 1
+ uint32 AllianceCreatureID; // 2
+ uint32 HordeUiAnimRaceInfoID; // 3
+ uint32 AllianceUiAnimRaceInfoID; // 4
+ uint32 Quality; // 5
+ uint32 HordeGarrClassSpecID; // 6
+ uint32 AllianceGarrClassSpecID; // 7
+ uint32 HordeGarrFollItemSetID; // 8
+ uint32 AllianceGarrFollItemSetID; // 9
+ uint32 Level; // 10
+ uint32 ItemLevelWeapon; // 11
+ uint32 ItemLevelArmor; // 12
+ uint32 Unknown1; // 13
+ uint32 Flags; // 14
+ LocalizedString* HordeSourceText; // 15
+ LocalizedString* AllianceSourceText; // 16
+ int32 Unknown2; // 17
+ int32 Unknown3; // 18
+ uint32 HordePortraitIconID; // 19
+ uint32 AlliancePortraitIconID; // 20
+};
+
+struct GarrFollowerXAbilityEntry
+{
+ uint32 ID; // 0
+ uint32 GarrFollowerID; // 1
+ uint32 GarrAbilityID; // 2
+ uint32 FactionIndex; // 3
+};
+
+struct GarrPlotEntry
+{
+ uint32 ID; // 0
+ uint32 GarrPlotUICategoryID; // 1
+ uint32 PlotType; // 2
+ uint32 Flags; // 3
+ LocalizedString* Name; // 4
+ uint32 MinCount; // 5
+ uint32 MaxCount; // 6
+ uint32 AllianceConstructionGameObjectID; // 7
+ uint32 HordeConstructionGameObjectID; // 8
+};
+
+struct GarrPlotBuildingEntry
+{
+ uint32 ID; // 0
+ uint32 GarrPlotID; // 1
+ uint32 GarrBuildingID; // 2
+};
+
+struct GarrPlotInstanceEntry
+{
+ uint32 ID; // 0
+ uint32 GarrPlotID; // 1
+ LocalizedString* Name; // 2
+};
+
+struct GarrSiteLevelEntry
+{
+ uint32 ID; // 0
+ uint32 Level; // 1
+ uint32 MapID; // 2
+ uint32 SiteID; // 3
+ uint32 UITextureKitID; // 4
+ DBCPosition2D TownHall; // 5-6
+ uint32 MovieID; // 7
+ uint32 Level2; // 8
+ uint32 UpgradeResourceCost; // 9
+ uint32 UpgradeMoneyCost; // 10
+};
+
+struct GarrSiteLevelPlotInstEntry
+{
+ uint32 ID; // 0
+ uint32 GarrSiteLevelID; // 1
+ uint32 GarrPlotInstanceID; // 2
+ DBCPosition2D Landmark; // 3-4
+ uint32 Unknown; // 5
+};
+
struct HolidaysEntry
{
uint32 ID; // 0
diff --git a/src/server/game/DataStores/DB2fmt.h b/src/server/game/DataStores/DB2fmt.h
index f59c7b56f56..7c915b37326 100644
--- a/src/server/game/DataStores/DB2fmt.h
+++ b/src/server/game/DataStores/DB2fmt.h
@@ -23,6 +23,18 @@ char const AreaGroupMemberFormat[] = "nii";
char const BroadcastTextFormat[] = "nissiiiiiiiii";
char const CurrencyTypesFormat[] = "nisssiiiiiis";
char const CurvePointFormat[] = "niiff";
+char const GameObjectsFormat[] = "niiffffffffiiiiiiiiiiiis";
+char const GarrAbilityFormat[] = "nissiii";
+char const GarrBuildingFormat[] = "niiiiissssiiiiiiiiiiiiii";
+char const GarrBuildingPlotInstFormat[] = "niiiff";
+char const GarrClassSpecFormat[] = "nsssii";
+char const GarrFollowerFormat[] = "niiiiiiiiiiiiiissiiii";
+char const GarrFollowerXAbilityFormat[] = "niii";
+char const GarrPlotBuildingFormat[] = "nii";
+char const GarrPlotFormat[] = "niiisiiii";
+char const GarrPlotInstanceFormat[] = "nis";
+char const GarrSiteLevelFormat[] = "niiiiffiiii";
+char const GarrSiteLevelPlotInstFormat[] = "niiffi";
char const HolidaysEntryFormat[] = "niiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisiii";
char const ItemFormat[] = "niiiiiiii";
char const ItemAppearanceFormat[] = "nii";
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index cc310fbdeb5..719e539a9c4 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -21,6 +21,8 @@
#include "Define.h"
+#pragma pack(push, 1)
+
struct DBCPosition2D
{
float X;
@@ -34,6 +36,8 @@ struct DBCPosition3D
float Z;
};
+#pragma pack(pop)
+
enum LevelLimit
{
// Client expected level limitation, like as used in DBC item max levels for "until max player level"
@@ -155,6 +159,12 @@ enum AchievementCriteriaAdditionalCondition
ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_RATED_BATTLEGROUND = 63, // NYI
ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_PROJECT_RARITY = 65,
ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_PROJECT_RACE = 66,
+ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_QUALITY = 145,
+ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_LEVEL = 146,
+ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_GARRISON_RARE_MISSION = 147, // NYI
+ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_GARRISON_BUILDING_LEVEL = 149, // NYI
+ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_GARRISON_MISSION_TYPE = 167, // NYI
+ ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_ILVL = 184,
};
enum AchievementCriteriaFlags
@@ -184,121 +194,169 @@ enum AchievementCriteriaTimedTypes
enum AchievementCriteriaTypes
{
- ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE = 0,
- ACHIEVEMENT_CRITERIA_TYPE_WIN_BG = 1,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ARCHAEOLOGY_PROJECTS = 3, // struct { uint32 itemCount; }
- ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL = 5,
- ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL = 7,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT = 9,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY = 10, // you have to complete a daily quest x times in a row
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11,
- ACHIEVEMENT_CRITERIA_TYPE_CURRENCY = 12,
- ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE = 13,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST = 14,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15,
- ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP = 16,
- ACHIEVEMENT_CRITERIA_TYPE_DEATH = 17,
- ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON = 18,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID = 19,
- ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE = 20,
- ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER = 23,
- ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING = 24,
- ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM = 26,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST = 27,
- ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET = 28,
- ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL = 29,
- ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30,
- ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31,
- ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA = 32,
- ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA = 33,
- ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL = 34,
- ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL = 35,
- ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM = 36,
- ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA = 37,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39,
- ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40,
- ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM = 41,
- ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM = 42,
- ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA = 43,
- ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK = 44,
- ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT = 45,
- ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION = 46,
- ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION = 47,
- ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP = 48,
- ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49,
- ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50, /// @todo itemlevel is mentioned in text but not present in dbc
- ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51,
- ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS = 52,
- ACHIEVEMENT_CRITERIA_TYPE_HK_RACE = 53,
- ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE = 54,
- ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE = 55,
- ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS = 56, /// @todo in some cases map not present, and in some cases need do without die
- ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM = 57,
- ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS = 59,
- ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS = 60,
- ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS = 61,
- ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD = 62,
- ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING = 63,
- ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER = 65,
- ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL = 66,
- ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY = 67,
- ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT = 68,
- ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2 = 69,
- ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL = 70,
- ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72,
+ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE = 0,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_BG = 1,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ARCHAEOLOGY_PROJECTS = 3, // struct { uint32 itemCount; }
+ ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL = 5,
+ ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL = 7,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT = 9,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY = 10, // you have to complete a daily quest x times in a row
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11,
+ ACHIEVEMENT_CRITERIA_TYPE_CURRENCY = 12,
+ ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE = 13,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST = 14,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15,
+ ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP = 16,
+ ACHIEVEMENT_CRITERIA_TYPE_DEATH = 17,
+ ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON = 18,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID = 19,
+ ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE = 20,
+ ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER = 23,
+ ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING = 24,
+ ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM = 26,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST = 27,
+ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET = 28,
+ ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL = 29,
+ ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30,
+ ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA = 32,
+ ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA = 33,
+ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL = 34,
+ ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL = 35,
+ ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM = 36,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA = 37,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39,
+ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40,
+ ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM = 41,
+ ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM = 42,
+ ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA = 43,
+ ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK = 44,
+ ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT = 45,
+ ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION = 46,
+ ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION = 47,
+ ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP = 48,
+ ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49,
+ ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50, /// @todo itemlevel is mentioned in text but not present in dbc
+ ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51,
+ ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS = 52,
+ ACHIEVEMENT_CRITERIA_TYPE_HK_RACE = 53,
+ ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE = 54,
+ ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE = 55,
+ ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS = 56, /// @todo in some cases map not present, and in some cases need do without die
+ ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM = 57,
+ ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS = 59,
+ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS = 60,
+ ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS = 61,
+ ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD = 62,
+ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING = 63,
+ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER = 65,
+ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL = 66,
+ ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY = 67,
+ ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT = 68,
+ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2 = 69,
+ ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL = 70,
+ ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72,
/// @todo 73: Achievements 1515, 1241, 1103 (Name: Mal'Ganis)
- ACHIEVEMENT_CRITERIA_TYPE_ON_LOGIN = 74,
- ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75,
- ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL = 76,
- ACHIEVEMENT_CRITERIA_TYPE_LOSE_DUEL = 77,
- ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE = 78,
- ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS = 80,
- ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION = 82,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID = 83,
- ACHIEVEMENT_CRITERIA_TYPE_WON_AUCTIONS = 84,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_SOLD = 85,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED = 86,
- ACHIEVEMENT_CRITERIA_TYPE_GAIN_REVERED_REPUTATION = 87,
- ACHIEVEMENT_CRITERIA_TYPE_GAIN_HONORED_REPUTATION = 88,
- ACHIEVEMENT_CRITERIA_TYPE_KNOWN_FACTIONS = 89,
- ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM = 90,
- ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM = 91,
- ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED = 93,
- ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED = 94,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT = 101,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_RECEIVED = 102,
- ACHIEVEMENT_CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED = 103,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEAL_CAST = 104,
- ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED = 105,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED = 106,
- ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED = 107,
- ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN = 108,
- ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109,
- ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2 = 110, /// @todo target entry is missing
- ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE = 112,
- ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL = 113,
- ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114,
- ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS = 115,
- ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS = 119,
- ACHIEVEMENT_CRITERIA_TYPE_SPENT_GOLD_GUILD_REPAIRS = 124,
- ACHIEVEMENT_CRITERIA_TYPE_REACH_GUILD_LEVEL = 125,
- ACHIEVEMENT_CRITERIA_TYPE_CRAFT_ITEMS_GUILD = 126,
- ACHIEVEMENT_CRITERIA_TYPE_CATCH_FROM_POOL = 127,
- ACHIEVEMENT_CRITERIA_TYPE_BUY_GUILD_BANK_SLOTS = 128,
- ACHIEVEMENT_CRITERIA_TYPE_EARN_GUILD_ACHIEVEMENT_POINTS = 129,
- ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_BATTLEGROUND = 130,
- ACHIEVEMENT_CRITERIA_TYPE_REACH_BG_RATING = 132,
- ACHIEVEMENT_CRITERIA_TYPE_BUY_GUILD_TABARD = 133,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_GUILD = 134,
- ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILLS_GUILD = 135,
- ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE_GUILD = 136,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE = 138, //struct { Flag flag; uint32 count; } 1: Guild Dungeon, 2:Guild Challenge, 3:Guild battlefield
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE = 139 //struct { uint32 count; } Guild Challenge
-};
-
-#define ACHIEVEMENT_CRITERIA_TYPE_TOTAL 188
+ ACHIEVEMENT_CRITERIA_TYPE_ON_LOGIN = 74,
+ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL = 76,
+ ACHIEVEMENT_CRITERIA_TYPE_LOSE_DUEL = 77,
+ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE = 78,
+ ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS = 80,
+ ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION = 82,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID = 83,
+ ACHIEVEMENT_CRITERIA_TYPE_WON_AUCTIONS = 84,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_SOLD = 85,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED = 86,
+ ACHIEVEMENT_CRITERIA_TYPE_GAIN_REVERED_REPUTATION = 87,
+ ACHIEVEMENT_CRITERIA_TYPE_GAIN_HONORED_REPUTATION = 88,
+ ACHIEVEMENT_CRITERIA_TYPE_KNOWN_FACTIONS = 89,
+ ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM = 90,
+ ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM = 91,
+ ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED = 93,
+ ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED = 94,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT = 101,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_RECEIVED = 102,
+ ACHIEVEMENT_CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED = 103,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEAL_CAST = 104,
+ ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED = 105,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED = 106,
+ ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED = 107,
+ ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN = 108,
+ ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109,
+ ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2 = 110, /// @todo target entry is missing
+ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE = 112,
+ ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL = 113,
+ ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114,
+ ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS = 115,
+ ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS = 119,
+ ACHIEVEMENT_CRITERIA_TYPE_SPENT_GOLD_GUILD_REPAIRS = 124,
+ ACHIEVEMENT_CRITERIA_TYPE_REACH_GUILD_LEVEL = 125,
+ ACHIEVEMENT_CRITERIA_TYPE_CRAFT_ITEMS_GUILD = 126,
+ ACHIEVEMENT_CRITERIA_TYPE_CATCH_FROM_POOL = 127,
+ ACHIEVEMENT_CRITERIA_TYPE_BUY_GUILD_BANK_SLOTS = 128,
+ ACHIEVEMENT_CRITERIA_TYPE_EARN_GUILD_ACHIEVEMENT_POINTS = 129,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_BATTLEGROUND = 130,
+ ACHIEVEMENT_CRITERIA_TYPE_REACH_BG_RATING = 132,
+ ACHIEVEMENT_CRITERIA_TYPE_BUY_GUILD_TABARD = 133,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_GUILD = 134,
+ ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILLS_GUILD = 135,
+ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE_GUILD = 136,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE = 138, //struct { Flag flag; uint32 count; } 1: Guild Dungeon, 2:Guild Challenge, 3:Guild battlefield
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE = 139, //struct { uint32 count; } Guild Challenge
+ // 140 unk
+ // 141 unk
+ // 142 unk
+ // 143 unk
+ // 144 unk
+ ACHIEVEMENT_CRITERIA_TYPE_LFR_DUNGEONS_COMPLETED = 145,
+ ACHIEVEMENT_CRITERIA_TYPE_LFR_LEAVES = 146,
+ ACHIEVEMENT_CRITERIA_TYPE_LFR_VOTE_KICKS_INITIATED_BY_PLAYER = 147,
+ ACHIEVEMENT_CRITERIA_TYPE_LFR_VOTE_KICKS_NOT_INIT_BY_PLAYER = 148,
+ ACHIEVEMENT_CRITERIA_TYPE_BE_KICKED_FROM_LFR = 149,
+ ACHIEVEMENT_CRITERIA_TYPE_COUNT_OF_LFR_QUEUE_BOOSTS_BY_TANK = 150,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_SCENARIO_COUNT = 151,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_SCENARIO = 152,
+ // ACHIEVEMENT_CRITERIA_TYPE_REACH_SOMETHING_LIKE_AREATRIGGER = 153,
+ // 154
+ ACHIEVEMENT_CRITERIA_TYPE_OWN_BATTLE_PET = 155,
+ ACHIEVEMENT_CRITERIA_TYPE_OWN_BATTLE_PET_COUNT = 156,
+ ACHIEVEMENT_CRITERIA_TYPE_CAPTURE_BATTLE_PET = 157,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_PET_BATTLE = 158,
+ // 159
+ ACHIEVEMENT_CRITERIA_TYPE_LEVEL_BATTLE_PET = 160,
+ ACHIEVEMENT_CRITERIA_TYPE_CAPTURE_BATTLE_PET_CREDIT = 161, // triggers a quest credit
+ ACHIEVEMENT_CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT = 162, // triggers a quest credit
+ ACHIEVEMENT_CRITERIA_TYPE_ENTER_AREA = 163, // triggers a quest credit
+ ACHIEVEMENT_CRITERIA_TYPE_LEAVE_AREA = 164, // triggers a quest credit
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER = 165,
+ ACHIEVEMENT_CRITERIA_TYPE_PLACE_GARRISON_BUILDING = 167,
+ ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING = 168,
+ ACHIEVEMENT_CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING = 169,
+ ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON = 170,
+ ACHIEVEMENT_CRITERIA_TYPE_START_GARRISON_MISSION = 171,
+ // 172
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT = 173,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_MISSION = 174,
+ ACHIEVEMENT_CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_COUNT = 175,
+ // 176
+ // 177
+ ACHIEVEMENT_CRITERIA_TYPE_LEARN_GARRISON_BLUEPRINT_COUNT = 178,
+ // 179
+ // 180
+ // 181
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT = 182,
+ ACHIEVEMENT_CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_ITEM_LEVEL = 183,
+ ACHIEVEMENT_CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_LEVEL = 184,
+ ACHIEVEMENT_CRITERIA_TYPE_OWN_TOY = 185,
+ ACHIEVEMENT_CRITERIA_TYPE_OWN_TOY_COUNT = 186,
+ ACHIEVEMENT_CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER = 187,
+ ACHIEVEMENT_CRITERIA_TYPE_OWN_HEIRLOOMS = 189
+};
+
+#define ACHIEVEMENT_CRITERIA_TYPE_TOTAL 190
enum AchievementCriteriaTreeOperator
{
@@ -427,6 +485,7 @@ enum MapFlags
MAP_FLAG_CAN_TOGGLE_DIFFICULTY = 0x0100,
MAP_FLAG_FLEX_LOCKING = 0x8000, // All difficulties share completed encounters lock, not bound to a single instance id
// heroic difficulty flag overrides it and uses instance id bind
+ MAP_FLAG_GARRISON = 0x4000000
};
enum AbilytyLearnType
diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp
index e1f0c595b5f..fcc6a23ddf3 100644
--- a/src/server/game/DataStores/DBCStores.cpp
+++ b/src/server/game/DataStores/DBCStores.cpp
@@ -60,6 +60,7 @@ static AreaFlagByMapID sAreaFlagByMapID; // for instances wit
static WMOAreaInfoByTripple sWMOAreaInfoByTripple;
DBCStorage <AchievementEntry> sAchievementStore(Achievementfmt);
+DBCStorage <AnimKitEntry> sAnimKitStore(AnimKitfmt);
DBCStorage <AreaTriggerEntry> sAreaTriggerStore(AreaTriggerEntryfmt);
DBCStorage <ArmorLocationEntry> sArmorLocationStore(ArmorLocationfmt);
DBCStorage <AuctionHouseEntry> sAuctionHouseStore(AuctionHouseEntryfmt);
@@ -131,6 +132,9 @@ GameTable <GtSpellScalingEntry> sGtSpellScalingStore(GtSpellScalingfmt)
GameTable <GtOCTBaseHPByClassEntry> sGtOCTBaseHPByClassStore(GtOCTBaseHPByClassfmt);
GameTable <GtOCTBaseMPByClassEntry> sGtOCTBaseMPByClassStore(GtOCTBaseMPByClassfmt);
DBCStorage <GuildPerkSpellsEntry> sGuildPerkSpellsStore(GuildPerkSpellsfmt);
+DBCStorage <GuildColorBackgroundEntry> sGuildColorBackgroundStore(GuildColorBackgroundfmt);
+DBCStorage <GuildColorBorderEntry> sGuildColorBorderStore(GuildColorBorderfmt);
+DBCStorage <GuildColorEmblemEntry> sGuildColorEmblemStore(GuildColorEmblemfmt);
DBCStorage <ImportPriceArmorEntry> sImportPriceArmorStore(ImportPriceArmorfmt);
DBCStorage <ImportPriceQualityEntry> sImportPriceQualityStore(ImportPriceQualityfmt);
@@ -369,6 +373,7 @@ void LoadDBCStores(const std::string& dataPath)
}
LoadDBC(availableDbcLocales, bad_dbc_files, sAchievementStore, dbcPath, "Achievement.dbc"/*, &CustomAchievementfmt, &CustomAchievementIndex*/);//19116
+ LoadDBC(availableDbcLocales, bad_dbc_files, sAnimKitStore, dbcPath, "AnimKit.dbc");//19865
LoadDBC(availableDbcLocales, bad_dbc_files, sAreaTriggerStore, dbcPath, "AreaTrigger.dbc");//19116
LoadDBC(availableDbcLocales, bad_dbc_files, sAuctionHouseStore, dbcPath, "AuctionHouse.dbc");//19116
LoadDBC(availableDbcLocales, bad_dbc_files, sArmorLocationStore, dbcPath, "ArmorLocation.dbc");//19116
@@ -462,6 +467,9 @@ void LoadDBCStores(const std::string& dataPath)
LoadDBC(availableDbcLocales, bad_dbc_files, sGlyphPropertiesStore, dbcPath, "GlyphProperties.dbc");//19116
LoadDBC(availableDbcLocales, bad_dbc_files, sGlyphSlotStore, dbcPath, "GlyphSlot.dbc");//19116
LoadDBC(availableDbcLocales, bad_dbc_files, sGuildPerkSpellsStore, dbcPath, "GuildPerkSpells.dbc");//19116
+ LoadDBC(availableDbcLocales, bad_dbc_files, sGuildColorBackgroundStore, dbcPath, "GuildColorBackground.dbc");//19865
+ LoadDBC(availableDbcLocales, bad_dbc_files, sGuildColorBorderStore, dbcPath, "GuildColorBorder.dbc"); //19865
+ LoadDBC(availableDbcLocales, bad_dbc_files, sGuildColorEmblemStore, dbcPath, "GuildColorEmblem.dbc");//19865
LoadDBC(availableDbcLocales, bad_dbc_files, sImportPriceArmorStore, dbcPath, "ImportPriceArmor.dbc"); // 19116
LoadDBC(availableDbcLocales, bad_dbc_files, sImportPriceQualityStore, dbcPath, "ImportPriceQuality.dbc"); // 19116
@@ -881,9 +889,9 @@ void Map2ZoneCoordinates(float& x, float& y, uint32 zone)
std::swap(x, y); // client have map coords swapped
}
-MapDifficultyEntry const* GetDefaultMapDifficulty(uint32 mapID)
+MapDifficultyEntry const* GetDefaultMapDifficulty(uint32 mapId, Difficulty* difficulty /*= nullptr*/)
{
- auto itr = sMapDifficultyMap.find(mapID);
+ auto itr = sMapDifficultyMap.find(mapId);
if (itr == sMapDifficultyMap.end())
return nullptr;
@@ -892,14 +900,22 @@ MapDifficultyEntry const* GetDefaultMapDifficulty(uint32 mapID)
for (auto& p : itr->second)
{
- DifficultyEntry const* difficulty = sDifficultyStore.LookupEntry(p.first);
- if (!difficulty)
+ DifficultyEntry const* difficultyEntry = sDifficultyStore.LookupEntry(p.first);
+ if (!difficultyEntry)
continue;
- if (difficulty->Flags & DIFFICULTY_FLAG_DEFAULT)
+ if (difficultyEntry->Flags & DIFFICULTY_FLAG_DEFAULT)
+ {
+ if (difficulty)
+ *difficulty = Difficulty(p.first);
+
return p.second;
+ }
}
+ if (difficulty)
+ *difficulty = Difficulty(itr->second.begin()->first);
+
return itr->second.begin()->second;
}
@@ -920,7 +936,7 @@ MapDifficultyEntry const* GetDownscaledMapDifficultyData(uint32 mapId, Difficult
{
DifficultyEntry const* diffEntry = sDifficultyStore.LookupEntry(difficulty);
if (!diffEntry)
- return GetDefaultMapDifficulty(mapId);
+ return GetDefaultMapDifficulty(mapId, &difficulty);
uint32 tmpDiff = difficulty;
MapDifficultyEntry const* mapDiff = GetMapDifficultyData(mapId, Difficulty(tmpDiff));
@@ -929,7 +945,7 @@ MapDifficultyEntry const* GetDownscaledMapDifficultyData(uint32 mapId, Difficult
tmpDiff = diffEntry->FallbackDifficultyID;
diffEntry = sDifficultyStore.LookupEntry(tmpDiff);
if (!diffEntry)
- return GetDefaultMapDifficulty(mapId);
+ return GetDefaultMapDifficulty(mapId, &difficulty);
// pull new data
mapDiff = GetMapDifficultyData(mapId, Difficulty(tmpDiff)); // we are 10 normal or 25 normal
diff --git a/src/server/game/DataStores/DBCStores.h b/src/server/game/DataStores/DBCStores.h
index 72c0c35f1cb..03eda581f28 100644
--- a/src/server/game/DataStores/DBCStores.h
+++ b/src/server/game/DataStores/DBCStores.h
@@ -66,7 +66,7 @@ void Zone2MapCoordinates(float &x, float &y, uint32 zone);
void Map2ZoneCoordinates(float &x, float &y, uint32 zone);
typedef std::unordered_map<uint32, std::unordered_map<uint32, MapDifficultyEntry const*>> MapDifficultyMap;
-MapDifficultyEntry const* GetDefaultMapDifficulty(uint32 mapID);
+MapDifficultyEntry const* GetDefaultMapDifficulty(uint32 mapId, Difficulty* difficulty = nullptr);
MapDifficultyEntry const* GetMapDifficultyData(uint32 mapId, Difficulty difficulty);
MapDifficultyEntry const* GetDownscaledMapDifficultyData(uint32 mapId, Difficulty &difficulty);
@@ -123,6 +123,7 @@ private:
};
extern DBCStorage <AchievementEntry> sAchievementStore;
+extern DBCStorage <AnimKitEntry> sAnimKitStore;
extern DBCStorage <AreaTableEntry> sAreaStore;// recommend access using functions
extern DBCStorage <AreaTriggerEntry> sAreaTriggerStore;
extern DBCStorage <ArmorLocationEntry> sArmorLocationStore;
@@ -184,6 +185,9 @@ extern GameTable <GtSpellScalingEntry> sGtSpellScalingStore;
extern GameTable <GtOCTBaseHPByClassEntry> sGtOCTBaseHPByClassStore;
extern GameTable <GtOCTBaseMPByClassEntry> sGtOCTBaseMPByClassStore;
extern DBCStorage <GuildPerkSpellsEntry> sGuildPerkSpellsStore;
+extern DBCStorage <GuildColorBackgroundEntry> sGuildColorBackgroundStore;
+extern DBCStorage <GuildColorBorderEntry> sGuildColorBorderStore;
+extern DBCStorage <GuildColorEmblemEntry> sGuildColorEmblemStore;
extern DBCStorage <ImportPriceArmorEntry> sImportPriceArmorStore;
extern DBCStorage <ImportPriceQualityEntry> sImportPriceQualityStore;
extern DBCStorage <ImportPriceShieldEntry> sImportPriceShieldStore;
diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h
index 178ab097d81..aac3cbd2193 100644
--- a/src/server/game/DataStores/DBCStructure.h
+++ b/src/server/game/DataStores/DBCStructure.h
@@ -50,12 +50,12 @@ struct AchievementEntry
uint32 CriteriaTree; // 14
};
-struct AchievementCategoryEntry
+struct AnimKitEntry
{
uint32 ID; // 0
- uint32 Parent; // 1 -1 for main category
- //char* Name_lang; // 2
- //uint32 UIOrder; // 3
+ //uint32 OneShotDuration; // 1
+ //uint32 OneShotStopAnimKitID; // 2
+ //uint32 LowDefAnimKitID; // 3
};
// Temporary define until max depth is found somewhere (adt?)
@@ -72,10 +72,10 @@ struct AreaTableEntry
//uint32 SoundProviderPrefUnderwater; // 7,
//uint32 AmbienceID; // 8,
//uint32 ZoneMusic; // 9,
- char* ZoneName; // 10
+ //char* ZoneName; // 10 - Internal name
//uint32 IntroSound; // 11
uint32 ExplorationLevel; // 12
- //char* AreaName_lang // 13
+ char* AreaName_lang; // 13 - In-game name
uint32 FactionGroupMask; // 14
uint32 LiquidTypeID[4]; // 15-18
//float AmbientMultiplier; // 19
@@ -494,12 +494,15 @@ struct CriteriaEntry
uint32 ObjectiveId;
// ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31
+ // ACHIEVEMENT_CRITERIA_TYPE_ENTER_AREA = 163
+ // ACHIEVEMENT_CRITERIA_TYPE_LEAVE_AREA = 164
uint32 AreaID;
// ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM = 36
// ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM = 41
// ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM = 42
// ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM = 57
+ // ACHIEVEMENT_CRITERIA_TYPE_OWN_TOY = 185
uint32 ItemID;
// ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38
@@ -544,6 +547,21 @@ struct CriteriaEntry
// ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109
uint32 LootType;
+
+ // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER = 165
+ uint32 DungeonEncounterID;
+
+ // ACHIEVEMENT_CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING = 169
+ uint32 GarrBuildingID;
+
+ // ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON = 170
+ uint32 GarrisonLevel;
+
+ // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_MISSION = 174
+ uint32 GarrMissionID;
+
+ // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT = 182
+ uint32 CharShipmentContainerID;
} Asset; // 2
uint32 StartEvent; // 3
uint32 StartAsset; // 4
@@ -935,6 +953,33 @@ struct GuildPerkSpellsEntry
uint32 SpellID; // 2
};
+// GuildColorBackground.dbc
+struct GuildColorBackgroundEntry
+{
+ uint32 ID;
+ //uint8 Red;
+ //uint8 Green;
+ //uint8 Blue;
+};
+
+// GuildColorBorder.dbc
+struct GuildColorBorderEntry
+{
+ uint32 ID;
+ //uint8 Red;
+ //uint8 Green;
+ //uint8 Blue;
+};
+
+// GuildColorEmblem.dbc
+struct GuildColorEmblemEntry
+{
+ uint32 ID;
+ //uint8 Red;
+ //uint8 Green;
+ //uint8 Blue;
+};
+
// ImportPriceArmor.dbc
struct ImportPriceArmorEntry
{
@@ -1235,13 +1280,13 @@ struct MapEntry
uint32 RaidOffset; // 17
uint32 MaxPlayers; // 18
int32 ParentMapID; // 19 related to phasing
- //uint32 CosmeticParentMapID // 20
+ int32 CosmeticParentMapID; // 20
//uint32 TimeOffset // 21
// Helpers
uint32 Expansion() const { return ExpansionID; }
- bool IsDungeon() const { return InstanceType == MAP_INSTANCE || InstanceType == MAP_RAID; }
+ bool IsDungeon() const { return (InstanceType == MAP_INSTANCE || InstanceType == MAP_RAID) && !IsGarrison(); }
bool IsNonRaidDungeon() const { return InstanceType == MAP_INSTANCE; }
bool Instanceable() const { return InstanceType == MAP_INSTANCE || InstanceType == MAP_RAID || InstanceType == MAP_BATTLEGROUND || InstanceType == MAP_ARENA; }
bool IsRaid() const { return InstanceType == MAP_RAID; }
@@ -1266,6 +1311,7 @@ struct MapEntry
}
bool IsDynamicDifficultyMap() const { return (Flags & MAP_FLAG_CAN_TOGGLE_DIFFICULTY) != 0; }
+ bool IsGarrison() const { return (Flags & MAP_FLAG_GARRISON) != 0; }
};
struct MapDifficultyEntry
diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h
index 8c067dabb27..c7aa00286e1 100644
--- a/src/server/game/DataStores/DBCfmt.h
+++ b/src/server/game/DataStores/DBCfmt.h
@@ -25,7 +25,8 @@
char const Achievementfmt[] = "niixsxiixixxiii";
const std::string CustomAchievementfmt = "pppaaaapapaapp";
const std::string CustomAchievementIndex = "ID";
-char const AreaTableEntryfmt[] = "iiiniixxxxsxixiiiiixxxxxxxxxx";
+char const AnimKitfmt[] = "nxxx";
+char const AreaTableEntryfmt[] = "iiiniixxxxxxisiiiiixxxxxxxxxx";
char const AreaTriggerEntryfmt[] = "nifffxxxfffffxxxx";
char const ArmorLocationfmt[] = "nfffff";
char const AuctionHouseEntryfmt[] = "niiix";
@@ -87,6 +88,9 @@ char const GtSpellScalingfmt[] = "df";
char const GtOCTBaseHPByClassfmt[] = "df";
char const GtOCTBaseMPByClassfmt[] = "df";
char const GuildPerkSpellsfmt[] = "dii";
+char const GuildColorBackgroundfmt[] = "nXXX";
+char const GuildColorBorderfmt[] = "nXXX";
+char const GuildColorEmblemfmt[] = "nXXX";
char const ImportPriceArmorfmt[] = "nffff";
char const ImportPriceQualityfmt[] = "nf";
char const ImportPriceShieldfmt[] = "nf";
@@ -113,7 +117,7 @@ char const LiquidTypefmt[] = "nxxixixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
char const LockEntryfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx";
char const PhaseEntryfmt[] = "ni";
char const MailTemplateEntryfmt[] = "nxs";
-char const MapEntryfmt[] = "nxiixxsixxixiffxiiiixx";
+char const MapEntryfmt[] = "nxiixxsixxixiffxiiiiix";
char const MapDifficultyEntryfmt[] = "diisiiii";
char const MinorTalentEntryfmt[] = "niii";
char const MovieEntryfmt[] = "nxxxx";
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index b077f3e6110..e786c3b9c7c 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -412,7 +412,7 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
joinData.result = LFG_JOIN_NOT_MEET_REQS;
else if (grp)
{
- if (grp->GetMembersCount() > MAXGROUPSIZE)
+ if (grp->GetMembersCount() > MAX_GROUP_SIZE)
joinData.result = LFG_JOIN_TOO_MUCH_MEMBERS;
else
{
diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp
index 97f87a4d814..30e9a587353 100644
--- a/src/server/game/DungeonFinding/LFGQueue.cpp
+++ b/src/server/game/DungeonFinding/LFGQueue.cpp
@@ -323,7 +323,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
LfgRolesMap proposalRoles;
// Check for correct size
- if (check.size() > MAXGROUPSIZE || check.empty())
+ if (check.size() > MAX_GROUP_SIZE || check.empty())
{
TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s): Size wrong - Not compatibles", strGuids.c_str());
return LFG_INCOMPATIBLES_WRONG_GROUP_SIZE;
@@ -349,7 +349,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
// Check if more than one LFG group and number of players joining
uint8 numPlayers = 0;
uint8 numLfgGroups = 0;
- for (GuidList::const_iterator it = check.begin(); it != check.end() && numLfgGroups < 2 && numPlayers <= MAXGROUPSIZE; ++it)
+ for (GuidList::const_iterator it = check.begin(); it != check.end() && numLfgGroups < 2 && numPlayers <= MAX_GROUP_SIZE; ++it)
{
ObjectGuid guid = *it;
LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(guid);
@@ -374,8 +374,8 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
}
}
- // Group with less that MAXGROUPSIZE members always compatible
- if (check.size() == 1 && numPlayers != MAXGROUPSIZE)
+ // Group with less that MAX_GROUP_SIZE members always compatible
+ if (check.size() == 1 && numPlayers != MAX_GROUP_SIZE)
{
TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) single group. Compatibles", strGuids.c_str());
LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(check.front());
@@ -396,7 +396,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
return LFG_INCOMPATIBLES_MULTIPLE_LFG_GROUPS;
}
- if (numPlayers > MAXGROUPSIZE)
+ if (numPlayers > MAX_GROUP_SIZE)
{
TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Too much players (%u)", strGuids.c_str(), numPlayers);
SetCompatibles(strGuids, LFG_INCOMPATIBLES_TOO_MUCH_PLAYERS);
@@ -473,7 +473,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
}
// Enough players?
- if (numPlayers != MAXGROUPSIZE)
+ if (numPlayers != MAX_GROUP_SIZE)
{
TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Compatibles but not enough players(%u)", strGuids.c_str(), numPlayers);
LfgCompatibilityData data(LFG_COMPATIBLES_WITH_LESS_PLAYERS);
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
index 426d47f88d3..b1ce1f0cdbb 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
+++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
@@ -18,6 +18,7 @@
#include "Unit.h"
#include "SpellInfo.h"
#include "Log.h"
+#include "UpdateData.h"
#include "AreaTrigger.h"
AreaTrigger::AreaTrigger() : WorldObject(false), _duration(0)
diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp
index 4294eb57dbd..15e560a8e7e 100644
--- a/src/server/game/Entities/Corpse/Corpse.cpp
+++ b/src/server/game/Entities/Corpse/Corpse.cpp
@@ -59,7 +59,7 @@ void Corpse::RemoveFromWorld()
if (IsInWorld())
GetMap()->GetObjectsStore().Remove<Corpse>(GetGUID());
- Object::RemoveFromWorld();
+ WorldObject::RemoveFromWorld();
}
bool Corpse::Create(ObjectGuid::LowType guidlow, Map* map)
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index ce7eadcae2b..70a2ab2307a 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -382,13 +382,14 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/)
setFaction(cInfo->faction);
- uint32 npcflag, unit_flags, dynamicflags;
+ uint32 unit_flags, dynamicflags;
+ uint64 npcflag;
ObjectMgr::ChooseCreatureFlags(cInfo, npcflag, unit_flags, dynamicflags, data);
if (cInfo->flags_extra & CREATURE_FLAG_EXTRA_WORLDEVENT)
- SetUInt32Value(UNIT_NPC_FLAGS, npcflag | sGameEventMgr->GetNPCFlag(this));
+ SetUInt64Value(UNIT_NPC_FLAGS, npcflag | sGameEventMgr->GetNPCFlag(this));
else
- SetUInt32Value(UNIT_NPC_FLAGS, npcflag);
+ SetUInt64Value(UNIT_NPC_FLAGS, npcflag);
SetUInt32Value(UNIT_FIELD_FLAGS, unit_flags);
SetUInt32Value(UNIT_FIELD_FLAGS_2, cInfo->unit_flags2);
@@ -965,7 +966,7 @@ void Creature::SaveToDB(uint32 mapid, uint32 spawnMask, uint32 phaseMask)
CreatureData& data = sObjectMgr->NewOrExistCreatureData(m_spawnId);
uint32 displayId = GetNativeDisplayId();
- uint32 npcflag = GetUInt32Value(UNIT_NPC_FLAGS);
+ uint64 npcflag = GetUInt64Value(UNIT_NPC_FLAGS);
uint32 unit_flags = GetUInt32Value(UNIT_FIELD_FLAGS);
uint32 dynamicflags = GetUInt32Value(OBJECT_DYNAMIC_FLAGS);
@@ -1053,7 +1054,7 @@ void Creature::SaveToDB(uint32 mapid, uint32 spawnMask, uint32 phaseMask)
stmt->setUInt32(index++, GetHealth());
stmt->setUInt32(index++, GetPower(POWER_MANA));
stmt->setUInt8(index++, uint8(GetDefaultMovementType()));
- stmt->setUInt32(index++, npcflag);
+ stmt->setUInt64(index++, npcflag);
stmt->setUInt32(index++, unit_flags);
stmt->setUInt32(index++, dynamicflags);
trans->Append(stmt);
@@ -1511,7 +1512,7 @@ void Creature::setDeathState(DeathState s)
SaveRespawnTime();
SetTarget(ObjectGuid::Empty); // remove target selection in any cases (can be set at aura remove in Unit::setDeathState)
- SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
+ SetUInt64Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0); // if creature is mounted on a virtual mount, remove it at death
@@ -1543,7 +1544,7 @@ void Creature::setDeathState(DeathState s)
UpdateMovementFlags();
CreatureTemplate const* cinfo = GetCreatureTemplate();
- SetUInt32Value(UNIT_NPC_FLAGS, cinfo->npcflag);
+ SetUInt64Value(UNIT_NPC_FLAGS, cinfo->npcflag);
ClearUnitState(uint32(UNIT_STATE_ALL_STATE & ~UNIT_STATE_IGNORE_PATHFINDING));
SetMeleeDamageSchool(SpellSchools(cinfo->dmgschool));
LoadCreaturesAddon(true);
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index adab2ea38bb..0e985ff3648 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -93,7 +93,7 @@ struct CreatureTemplate
int32 expansion;
uint32 expansionUnknown; // either 0 or 3, sent to the client / wdb
uint32 faction;
- uint32 npcflag;
+ uint64 npcflag;
float speed_walk;
float speed_run;
float scale;
@@ -304,7 +304,7 @@ struct CreatureData
uint32 curmana;
uint8 movementType;
uint32 spawnMask;
- uint32 npcflag;
+ uint64 npcflag;
uint32 unit_flags; // enum UnitFlags mask values
uint32 dynamicflags;
uint32 phaseid;
@@ -373,7 +373,7 @@ struct VendorItem
uint8 Type;
//helpers
- bool IsGoldRequired(ItemTemplate const* pProto) const { return pProto->GetFlags2() & ITEM_FLAGS_EXTRA_EXT_COST_REQUIRES_GOLD || !ExtendedCost; }
+ bool IsGoldRequired(ItemTemplate const* pProto) const { return pProto->GetFlags2() & ITEM_FLAG2_EXT_COST_REQUIRES_GOLD || !ExtendedCost; }
};
typedef std::vector<VendorItem*> VendorItemList;
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index 815c98c9710..faa458d45dc 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -505,7 +505,7 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const
packet.Info.SuggestedGroupNum = quest->GetSuggestedPlayers();
packet.Info.RewardNextQuest = quest->GetNextQuestInChain();
packet.Info.RewardXPDifficulty = quest->GetXPDifficulty();
- packet.Info.Float10 = quest->Float10; // Unk
+ packet.Info.RewardXPMultiplier = quest->GetXPMultiplier();
packet.Info.Float13 = quest->Float13; // Unk
if (quest->HasFlag(QUEST_FLAGS_HIDDEN_REWARDS))
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 852269855df..948579cd419 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -180,7 +180,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
m_stationaryPosition.Relocate(x, y, z, ang);
if (!IsPositionValid())
{
- TC_LOG_ERROR("misc", "Gameobject (GUID: " UI64FMTD " Entry: %u) not created. Suggested coordinates isn't valid (X: %f Y: %f)", guidlow, name_id, x, y);
+ TC_LOG_ERROR("misc", "Gameobject (GUID: " UI64FMTD " Spawn id: " UI64FMTD " Entry: %u) not created. Suggested coordinates isn't valid (X: %f Y: %f)", guidlow, GetSpawnId(), name_id, x, y);
return false;
}
@@ -195,13 +195,13 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
GameObjectTemplate const* goinfo = sObjectMgr->GetGameObjectTemplate(name_id);
if (!goinfo)
{
- TC_LOG_ERROR("sql.sql", "Gameobject (GUID: " UI64FMTD " Entry: %u) not created: non-existing entry in `gameobject_template`. Map: %u (X: %f Y: %f Z: %f)", guidlow, name_id, map->GetId(), x, y, z);
+ TC_LOG_ERROR("sql.sql", "Gameobject (GUID: " UI64FMTD " Spawn id: " UI64FMTD " Entry: %u) not created: non-existing entry in `gameobject_template`. Map: %u (X: %f Y: %f Z: %f)", guidlow, GetSpawnId(), name_id, map->GetId(), x, y, z);
return false;
}
if (goinfo->type == GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT)
{
- TC_LOG_ERROR("sql.sql", "Gameobject (GUID: " UI64FMTD " Entry: %u) not created: gameobject type GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT cannot be manually created.", guidlow, name_id);
+ TC_LOG_ERROR("sql.sql", "Gameobject (GUID: " UI64FMTD " Spawn id: " UI64FMTD " Entry: %u) not created: gameobject type GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT cannot be manually created.", guidlow, GetSpawnId(), name_id);
return false;
}
@@ -214,7 +214,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
if (goinfo->type >= MAX_GAMEOBJECT_TYPE)
{
- TC_LOG_ERROR("sql.sql", "Gameobject (GUID: " UI64FMTD " Entry: %u) not created: non-existing GO type '%u' in `gameobject_template`. It will crash client if created.", guidlow, name_id, goinfo->type);
+ TC_LOG_ERROR("sql.sql", "Gameobject (GUID: " UI64FMTD " Spawn id: " UI64FMTD " Entry: %u) not created: non-existing GO type '%u' in `gameobject_template`. It will crash client if created.", guidlow, GetSpawnId(), name_id, goinfo->type);
return false;
}
@@ -310,7 +310,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
break;
}
- if (GameObjectAddon const* addon = sObjectMgr->GetGameObjectAddon(guidlow))
+ if (GameObjectAddon const* addon = sObjectMgr->GetGameObjectAddon(GetSpawnId()))
{
if (addon->InvisibilityValue)
{
@@ -2163,7 +2163,7 @@ void GameObject::SetTransportState(GOState state, uint32 stopFrame /*= 0*/)
m_goValue.Transport.StateUpdateTimer = 0;
m_goValue.Transport.PathProgress = getMSTime();
if (GetGoState() >= GO_STATE_TRANSPORT_STOPPED)
- m_goValue.Transport.StopFrames->at(GetGoState() - GO_STATE_TRANSPORT_STOPPED);
+ m_goValue.Transport.PathProgress += m_goValue.Transport.StopFrames->at(GetGoState() - GO_STATE_TRANSPORT_STOPPED);
SetGoState(GO_STATE_TRANSPORT_ACTIVE);
}
else
@@ -2420,7 +2420,7 @@ void GameObject::UpdateModelPosition()
if (GetMap()->ContainsGameObjectModel(*m_model))
{
GetMap()->RemoveGameObjectModel(*m_model);
- m_model->Relocate(*this);
+ m_model->UpdatePosition();
GetMap()->InsertGameObjectModel(*m_model);
}
}
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index ee429c95475..c61f1ba87c4 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -1065,6 +1065,7 @@ class GameObject : public WorldObject, public GridObject<GameObject>, public Map
float GetStationaryY() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT) return m_stationaryPosition.GetPositionY(); return GetPositionY(); }
float GetStationaryZ() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT) return m_stationaryPosition.GetPositionZ(); return GetPositionZ(); }
float GetStationaryO() const override { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT) return m_stationaryPosition.GetOrientation(); return GetOrientation(); }
+ void RelocateStationaryPosition(float x, float y, float z, float o) { m_stationaryPosition.Relocate(x, y, z, o); }
float GetInteractionDistance() const;
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index 50994df7831..7250c0cff23 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -361,7 +361,7 @@ void Item::SaveToDB(SQLTransaction& trans)
trans->Append(stmt);
- if ((uState == ITEM_CHANGED) && HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED))
+ if ((uState == ITEM_CHANGED) && HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED))
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GIFT_OWNER);
stmt->setUInt64(0, GetOwnerGUID().GetCounter());
@@ -376,7 +376,7 @@ void Item::SaveToDB(SQLTransaction& trans)
stmt->setUInt64(0, GetGUID().GetCounter());
trans->Append(stmt);
- if (HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED))
+ if (HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED))
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GIFT);
stmt->setUInt64(0, GetGUID().GetCounter());
@@ -451,7 +451,7 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid ownerGuid, Field* fie
// Remove bind flag for items vs NO_BIND set
if (IsSoulBound() && proto->GetBonding() == NO_BIND)
{
- ApplyModFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_SOULBOUND, false);
+ ApplyModFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_SOULBOUND, false);
need_save = true;
}
@@ -760,7 +760,7 @@ bool Item::CanBeTraded(bool mail, bool trade) const
if (m_lootGenerated)
return false;
- if ((!mail || !IsBoundAccountWide()) && (IsSoulBound() && (!HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE) || !trade)))
+ if ((!mail || !IsBoundAccountWide()) && (IsSoulBound() && (!HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_BOP_TRADEABLE) || !trade)))
return false;
if (IsBag() && (Player::IsBagPos(GetPos()) || !((Bag const*)this)->IsEmpty()))
@@ -1071,7 +1071,7 @@ Item* Item::CloneItem(uint32 count, Player const* player) const
newItem->SetGuidValue(ITEM_FIELD_CREATOR, GetGuidValue(ITEM_FIELD_CREATOR));
newItem->SetGuidValue(ITEM_FIELD_GIFTCREATOR, GetGuidValue(ITEM_FIELD_GIFTCREATOR));
- newItem->SetUInt32Value(ITEM_FIELD_FLAGS, GetUInt32Value(ITEM_FIELD_FLAGS) & ~(ITEM_FLAG_REFUNDABLE | ITEM_FLAG_BOP_TRADEABLE));
+ newItem->SetUInt32Value(ITEM_FIELD_FLAGS, GetUInt32Value(ITEM_FIELD_FLAGS) & ~(ITEM_FIELD_FLAG_REFUNDABLE | ITEM_FIELD_FLAG_BOP_TRADEABLE));
newItem->SetUInt32Value(ITEM_FIELD_DURATION, GetUInt32Value(ITEM_FIELD_DURATION));
// player CAN be NULL in which case we must not update random properties because that accesses player's item update queue
if (player)
@@ -1089,7 +1089,7 @@ bool Item::IsBindedNotWith(Player const* player) const
if (GetOwnerGUID() == player->GetGUID())
return false;
- if (HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE))
+ if (HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_BOP_TRADEABLE))
if (allowedGUIDs.find(player->GetGUID()) != allowedGUIDs.end())
return false;
@@ -1211,10 +1211,10 @@ void Item::DeleteRefundDataFromDB(SQLTransaction* trans)
void Item::SetNotRefundable(Player* owner, bool changestate /*=true*/, SQLTransaction* trans /*=NULL*/)
{
- if (!HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE))
+ if (!HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE))
return;
- RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE);
+ RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE);
// Following is not applicable in the trading procedure
if (changestate)
SetState(ITEM_CHANGED, owner);
@@ -1269,13 +1269,13 @@ bool Item::IsRefundExpired()
void Item::SetSoulboundTradeable(GuidSet const& allowedLooters)
{
- SetFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE);
+ SetFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_BOP_TRADEABLE);
allowedGUIDs = allowedLooters;
}
void Item::ClearSoulboundTradeable(Player* currentOwner)
{
- RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE);
+ RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_BOP_TRADEABLE);
if (allowedGUIDs.empty())
return;
@@ -1315,7 +1315,7 @@ bool Item::CanBeTransmogrified() const
if (proto->GetClass() == ITEM_CLASS_WEAPON && proto->GetSubClass() == ITEM_SUBCLASS_WEAPON_FISHING_POLE)
return false;
- if (proto->GetFlags2() & ITEM_FLAGS_EXTRA_CANNOT_BE_TRANSMOG)
+ if (proto->GetFlags2() & ITEM_FLAG2_CANNOT_BE_TRANSMOG)
return false;
if (!HasStats())
@@ -1331,7 +1331,7 @@ bool Item::CanTransmogrify() const
if (!proto)
return false;
- if (proto->GetFlags2() & ITEM_FLAGS_EXTRA_CANNOT_TRANSMOG)
+ if (proto->GetFlags2() & ITEM_FLAG2_CANNOT_TRANSMOG)
return false;
if (proto->GetQuality() == ITEM_QUALITY_LEGENDARY)
@@ -1344,7 +1344,7 @@ bool Item::CanTransmogrify() const
if (proto->GetClass() == ITEM_CLASS_WEAPON && proto->GetSubClass() == ITEM_SUBCLASS_WEAPON_FISHING_POLE)
return false;
- if (proto->GetFlags2() & ITEM_FLAGS_EXTRA_CAN_TRANSMOG)
+ if (proto->GetFlags2() & ITEM_FLAG2_CAN_TRANSMOG)
return true;
if (!HasStats())
@@ -1405,7 +1405,7 @@ uint32 Item::GetSellPrice(ItemTemplate const* proto, bool& normalSellPrice)
{
normalSellPrice = true;
- if (proto->GetFlags2() & ITEM_FLAGS_EXTRA_HAS_NORMAL_PRICE)
+ if (proto->GetFlags2() & ITEM_FLAG2_HAS_NORMAL_PRICE)
{
return proto->GetBuyPrice();
}
@@ -1524,7 +1524,7 @@ uint32 Item::GetSpecialPrice(ItemTemplate const* proto, uint32 minimumPrice /*=
{
uint32 cost = 0;
- if (proto->GetFlags2() & ITEM_FLAGS_EXTRA_HAS_NORMAL_PRICE)
+ if (proto->GetFlags2() & ITEM_FLAG2_HAS_NORMAL_PRICE)
cost = proto->GetSellPrice();
else
{
diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h
index c204cbb1f17..7d03a0a68eb 100644
--- a/src/server/game/Entities/Item/Item.h
+++ b/src/server/game/Entities/Item/Item.h
@@ -261,10 +261,10 @@ class Item : public Object
void SetOwnerGUID(ObjectGuid guid) { SetGuidValue(ITEM_FIELD_OWNER, guid); }
Player* GetOwner()const;
- void SetBinding(bool val) { ApplyModFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_SOULBOUND, val); }
- bool IsSoulBound() const { return HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_SOULBOUND); }
- bool IsBoundAccountWide() const { return (GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_BIND_TO_ACCOUNT) != 0; }
- bool IsBattlenetAccountBound() const { return (GetTemplate()->GetFlags2() & ITEM_FLAGS_EXTRA_BNET_ACCOUNT_BOUND) != 0; }
+ void SetBinding(bool val) { ApplyModFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_SOULBOUND, val); }
+ bool IsSoulBound() const { return HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_SOULBOUND); }
+ bool IsBoundAccountWide() const { return (GetTemplate()->GetFlags() & ITEM_FLAG_BIND_TO_ACCOUNT) != 0; }
+ bool IsBattlenetAccountBound() const { return (GetTemplate()->GetFlags2() & ITEM_FLAG2_BNET_ACCOUNT_BOUND) != 0; }
bool IsBindedNotWith(Player const* player) const;
bool IsBoundByEnchant() const;
virtual void SaveToDB(SQLTransaction& trans);
@@ -291,7 +291,7 @@ class Item : public Object
Bag* ToBag() { if (IsBag()) return reinterpret_cast<Bag*>(this); else return NULL; }
const Bag* ToBag() const { if (IsBag()) return reinterpret_cast<const Bag*>(this); else return NULL; }
- bool IsLocked() const { return !HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_UNLOCKED); }
+ bool IsLocked() const { return !HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_UNLOCKED); }
bool IsBag() const { return GetTemplate()->GetInventoryType() == INVTYPE_BAG; }
bool IsCurrencyToken() const { return GetTemplate()->IsCurrencyToken(); }
bool IsNotEmptyBag() const;
diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp
index 34a6ee635a6..f9e2e2d4236 100644
--- a/src/server/game/Entities/Item/ItemTemplate.cpp
+++ b/src/server/game/Entities/Item/ItemTemplate.cpp
@@ -89,7 +89,7 @@ void ItemTemplate::GetDamage(uint32 itemLevel, float& minDamage, float& maxDamag
store = &sItemDamageAmmoStore;
break;
case INVTYPE_2HWEAPON:
- if (GetFlags2() & ITEM_FLAGS_EXTRA_CASTER_WEAPON)
+ if (GetFlags2() & ITEM_FLAG2_CASTER_WEAPON)
store = &sItemDamageTwoHandCasterStore;
else
store = &sItemDamageTwoHandStore;
@@ -117,7 +117,7 @@ void ItemTemplate::GetDamage(uint32 itemLevel, float& minDamage, float& maxDamag
case INVTYPE_WEAPON:
case INVTYPE_WEAPONMAINHAND:
case INVTYPE_WEAPONOFFHAND:
- if (GetFlags2() & ITEM_FLAGS_EXTRA_CASTER_WEAPON)
+ if (GetFlags2() & ITEM_FLAG2_CASTER_WEAPON)
store = &sItemDamageOneHandCasterStore;
else
store = &sItemDamageOneHandStore;
diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h
index 47523872151..c578b641ad2 100644
--- a/src/server/game/Entities/Item/ItemTemplate.h
+++ b/src/server/game/Entities/Item/ItemTemplate.h
@@ -127,101 +127,140 @@ enum ItemBondingType
#define MAX_BIND_TYPE 6
/* /// @todo: Requiring actual cases in which using (an) item isn't allowed while shapeshifted. Else, this flag would need an implementation.
- ITEM_PROTO_FLAG_USABLE_WHEN_SHAPESHIFTED = 0x00800000, // Item can be used in shapeshift forms */
-
-enum ItemProtoFlags
-{
- ITEM_PROTO_FLAG_UNK1 = 0x00000001, // ?
- ITEM_PROTO_FLAG_CONJURED = 0x00000002, // Conjured item
- ITEM_PROTO_FLAG_OPENABLE = 0x00000004, // Item can be right clicked to open for loot
- ITEM_PROTO_FLAG_HEROIC = 0x00000008, // Makes green "Heroic" text appear on item
- ITEM_PROTO_FLAG_DEPRECATED = 0x00000010, // Cannot equip or use
- ITEM_PROTO_FLAG_INDESTRUCTIBLE = 0x00000020, // Item can not be destroyed, except by using spell (item can be reagent for spell)
- ITEM_PROTO_FLAG_UNK2 = 0x00000040, // ?
- ITEM_PROTO_FLAG_NO_EQUIP_COOLDOWN = 0x00000080, // No default 30 seconds cooldown when equipped
- ITEM_PROTO_FLAG_UNK3 = 0x00000100, // ?
- ITEM_PROTO_FLAG_WRAPPER = 0x00000200, // Item can wrap other items
- ITEM_PROTO_FLAG_UNK4 = 0x00000400, // ?
- ITEM_PROTO_FLAG_PARTY_LOOT = 0x00000800, // Looting this item does not remove it from available loot
- ITEM_PROTO_FLAG_REFUNDABLE = 0x00001000, // Item can be returned to vendor for its original cost (extended cost)
- ITEM_PROTO_FLAG_CHARTER = 0x00002000, // Item is guild or arena charter
- ITEM_PROTO_FLAG_UNK5 = 0x00004000, // Only readable items have this (but not all)
- ITEM_PROTO_FLAG_UNK6 = 0x00008000, // ?
- ITEM_PROTO_FLAG_UNK7 = 0x00010000, // ?
- ITEM_PROTO_FLAG_UNK8 = 0x00020000, // ?
- ITEM_PROTO_FLAG_PROSPECTABLE = 0x00040000, // Item can be prospected
- ITEM_PROTO_FLAG_UNIQUE_EQUIPPED = 0x00080000, // You can only equip one of these
- ITEM_PROTO_FLAG_UNK9 = 0x00100000, // ?
- ITEM_PROTO_FLAG_USEABLE_IN_ARENA = 0x00200000, // Item can be used during arena match
- ITEM_PROTO_FLAG_THROWABLE = 0x00400000, // Some Thrown weapons have it (and only Thrown) but not all
- ITEM_PROTO_FLAG_USABLE_WHEN_SHAPESHIFTED = 0x00800000, // Item can be used in shapeshift forms
- ITEM_PROTO_FLAG_UNK10 = 0x01000000, // ?
- ITEM_PROTO_FLAG_SMART_LOOT = 0x02000000, // Profession recipes: can only be looted if you meet requirements and don't already know it
- ITEM_PROTO_FLAG_NOT_USEABLE_IN_ARENA = 0x04000000, // Item cannot be used in arena
- ITEM_PROTO_FLAG_BIND_TO_ACCOUNT = 0x08000000, // Item binds to account and can be sent only to your own characters
- ITEM_PROTO_FLAG_TRIGGERED_CAST = 0x10000000, // Spell is cast with triggered flag
- ITEM_PROTO_FLAG_MILLABLE = 0x20000000, // Item can be milled
- ITEM_PROTO_FLAG_UNK11 = 0x40000000, // ?
- ITEM_PROTO_FLAG_BOP_TRADEABLE = 0x80000000 // bound item that can be traded
-};
-
-enum ItemFieldFlags
-{
- ITEM_FLAG_SOULBOUND = 0x00000001, // Item is soulbound and cannot be traded <<--
- ITEM_FLAG_UNK1 = 0x00000002, // ?
- ITEM_FLAG_UNLOCKED = 0x00000004, // Item had lock but can be opened now
- ITEM_FLAG_WRAPPED = 0x00000008, // Item is wrapped and contains another item
- ITEM_FLAG_UNK2 = 0x00000010, // ?
- ITEM_FLAG_UNK3 = 0x00000020, // ?
- ITEM_FLAG_UNK4 = 0x00000040, // ?
- ITEM_FLAG_UNK5 = 0x00000080, // ?
- ITEM_FLAG_BOP_TRADEABLE = 0x00000100, // Allows trading soulbound items
- ITEM_FLAG_READABLE = 0x00000200, // Opens text page when right clicked
- ITEM_FLAG_UNK6 = 0x00000400, // ?
- ITEM_FLAG_UNK7 = 0x00000800, // ?
- ITEM_FLAG_REFUNDABLE = 0x00001000, // Item can be returned to vendor for its original cost (extended cost)
- ITEM_FLAG_UNK8 = 0x00002000, // ?
- ITEM_FLAG_UNK9 = 0x00004000, // ?
- ITEM_FLAG_UNK10 = 0x00008000, // ?
- ITEM_FLAG_UNK11 = 0x00010000, // ?
- ITEM_FLAG_UNK12 = 0x00020000, // ?
- ITEM_FLAG_UNK13 = 0x00040000, // ?
- ITEM_FLAG_UNK14 = 0x00080000, // ?
- ITEM_FLAG_UNK15 = 0x00100000, // ?
- ITEM_FLAG_UNK16 = 0x00200000, // ?
- ITEM_FLAG_UNK17 = 0x00400000, // ?
- ITEM_FLAG_UNK18 = 0x00800000, // ?
- ITEM_FLAG_UNK19 = 0x01000000, // ?
- ITEM_FLAG_UNK20 = 0x02000000, // ?
- ITEM_FLAG_UNK21 = 0x04000000, // ?
- ITEM_FLAG_UNK22 = 0x08000000, // ?
- ITEM_FLAG_UNK23 = 0x10000000, // ?
- ITEM_FLAG_UNK24 = 0x20000000, // ?
- ITEM_FLAG_UNK25 = 0x40000000, // ?
- ITEM_FLAG_UNK26 = 0x80000000, // ?
-
- ITEM_FLAG_MAIL_TEXT_MASK = ITEM_FLAG_READABLE | ITEM_FLAG_UNK13 | ITEM_FLAG_UNK14
-};
-
-enum ItemFlagsExtra
-{
- ITEM_FLAGS_EXTRA_HORDE_ONLY = 0x00000001,
- ITEM_FLAGS_EXTRA_ALLIANCE_ONLY = 0x00000002,
- ITEM_FLAGS_EXTRA_EXT_COST_REQUIRES_GOLD = 0x00000004, // when item uses extended cost, gold is also required
- ITEM_FLAGS_EXTRA_NEED_ROLL_DISABLED = 0x00000100,
- ITEM_FLAGS_EXTRA_CASTER_WEAPON = 0x00000200,
- ITEM_FLAGS_EXTRA_HAS_NORMAL_PRICE = 0x00004000,
- ITEM_FLAGS_EXTRA_BNET_ACCOUNT_BOUND = 0x00020000,
- ITEM_FLAGS_EXTRA_CANNOT_BE_TRANSMOG = 0x00200000,
- ITEM_FLAGS_EXTRA_CANNOT_TRANSMOG = 0x00400000,
- ITEM_FLAGS_EXTRA_CAN_TRANSMOG = 0x00800000,
+ ITEM_FLAG_USABLE_WHEN_SHAPESHIFTED = 0x00800000, // Item can be used in shapeshift forms */
+
+// ITEM_FIELD_FLAGS
+enum ItemFieldFlags : uint32
+{
+ ITEM_FIELD_FLAG_SOULBOUND = 0x00000001, // Item is soulbound and cannot be traded <<--
+ ITEM_FIELD_FLAG_TRANSLATED = 0x00000002, // Item text will not read as garbage when player does not know the language
+ ITEM_FIELD_FLAG_UNLOCKED = 0x00000004, // Item had lock but can be opened now
+ ITEM_FIELD_FLAG_WRAPPED = 0x00000008, // Item is wrapped and contains another item
+ ITEM_FIELD_FLAG_UNK2 = 0x00000010,
+ ITEM_FIELD_FLAG_UNK3 = 0x00000020,
+ ITEM_FIELD_FLAG_UNK4 = 0x00000040,
+ ITEM_FIELD_FLAG_UNK5 = 0x00000080,
+ ITEM_FIELD_FLAG_BOP_TRADEABLE = 0x00000100, // Allows trading soulbound items
+ ITEM_FIELD_FLAG_READABLE = 0x00000200, // Opens text page when right clicked
+ ITEM_FIELD_FLAG_UNK6 = 0x00000400,
+ ITEM_FIELD_FLAG_UNK7 = 0x00000800,
+ ITEM_FIELD_FLAG_REFUNDABLE = 0x00001000, // Item can be returned to vendor for its original cost (extended cost)
+ ITEM_FIELD_FLAG_UNK8 = 0x00002000,
+ ITEM_FIELD_FLAG_UNK9 = 0x00004000,
+ ITEM_FIELD_FLAG_UNK10 = 0x00008000,
+ ITEM_FIELD_FLAG_UNK11 = 0x00010000,
+ ITEM_FIELD_FLAG_UNK12 = 0x00020000,
+ ITEM_FIELD_FLAG_UNK13 = 0x00040000,
+ ITEM_FIELD_FLAG_UNK14 = 0x00080000,
+ ITEM_FIELD_FLAG_UNK15 = 0x00100000,
+ ITEM_FIELD_FLAG_UNK16 = 0x00200000,
+ ITEM_FIELD_FLAG_UNK17 = 0x00400000,
+ ITEM_FIELD_FLAG_UNK18 = 0x00800000,
+ ITEM_FIELD_FLAG_UNK19 = 0x01000000,
+ ITEM_FIELD_FLAG_UNK20 = 0x02000000,
+ ITEM_FIELD_FLAG_UNK21 = 0x04000000,
+ ITEM_FIELD_FLAG_UNK22 = 0x08000000,
+ ITEM_FIELD_FLAG_UNK23 = 0x10000000,
+ ITEM_FIELD_FLAG_UNK24 = 0x20000000,
+ ITEM_FIELD_FLAG_UNK25 = 0x40000000,
+ ITEM_FIELD_FLAG_UNK26 = 0x80000000,
+
+ ITEM_FIELD_FLAG_MAIL_TEXT_MASK = ITEM_FIELD_FLAG_READABLE | ITEM_FIELD_FLAG_UNK13 | ITEM_FIELD_FLAG_UNK14
+};
+
+enum ItemFlags : uint32
+{
+ ITEM_FLAG_UNK1 = 0x00000001,
+ ITEM_FLAG_CONJURED = 0x00000002, // Conjured item
+ ITEM_FLAG_OPENABLE = 0x00000004, // Item can be right clicked to open for loot
+ ITEM_FLAG_HEROIC = 0x00000008, // Makes green "Heroic" text appear on item
+ ITEM_FLAG_DEPRECATED = 0x00000010, // Cannot equip or use
+ ITEM_FLAG_INDESTRUCTIBLE = 0x00000020, // Item can not be destroyed, except by using spell (item can be reagent for spell)
+ ITEM_FLAG_UNK2 = 0x00000040,
+ ITEM_FLAG_NO_EQUIP_COOLDOWN = 0x00000080, // No default 30 seconds cooldown when equipped
+ ITEM_FLAG_UNK3 = 0x00000100,
+ ITEM_FLAG_WRAPPER = 0x00000200, // Item can wrap other items
+ ITEM_FLAG_UNK4 = 0x00000400,
+ ITEM_FLAG_PARTY_LOOT = 0x00000800, // Looting this item does not remove it from available loot
+ ITEM_FLAG_REFUNDABLE = 0x00001000, // Item can be returned to vendor for its original cost (extended cost)
+ ITEM_FLAG_CHARTER = 0x00002000, // Item is guild or arena charter
+ ITEM_FLAG_UNK5 = 0x00004000, // Only readable items have this (but not all)
+ ITEM_FLAG_UNK6 = 0x00008000,
+ ITEM_FLAG_UNK7 = 0x00010000,
+ ITEM_FLAG_UNK8 = 0x00020000,
+ ITEM_FLAG_PROSPECTABLE = 0x00040000, // Item can be prospected
+ ITEM_FLAG_UNIQUE_EQUIPPED = 0x00080000, // You can only equip one of these
+ ITEM_FLAG_UNK9 = 0x00100000,
+ ITEM_FLAG_USEABLE_IN_ARENA = 0x00200000, // Item can be used during arena match
+ ITEM_FLAG_THROWABLE = 0x00400000, // Some Thrown weapons have it (and only Thrown) but not all
+ ITEM_FLAG_USABLE_WHEN_SHAPESHIFTED = 0x00800000, // Item can be used in shapeshift forms
+ ITEM_FLAG_UNK10 = 0x01000000,
+ ITEM_FLAG_SMART_LOOT = 0x02000000, // Profession recipes: can only be looted if you meet requirements and don't already know it
+ ITEM_FLAG_NOT_USEABLE_IN_ARENA = 0x04000000, // Item cannot be used in arena
+ ITEM_FLAG_BIND_TO_ACCOUNT = 0x08000000, // Item binds to account and can be sent only to your own characters
+ ITEM_FLAG_TRIGGERED_CAST = 0x10000000, // Spell is cast with triggered flag
+ ITEM_FLAG_MILLABLE = 0x20000000, // Item can be milled
+ ITEM_FLAG_UNK11 = 0x40000000,
+ ITEM_FLAG_BOP_TRADEABLE = 0x80000000 // bound item that can be traded
+};
+
+enum ItemFlags2 : uint32
+{
+ ITEM_FLAG2_HORDE_ONLY = 0x00000001,
+ ITEM_FLAG2_ALLIANCE_ONLY = 0x00000002,
+ ITEM_FLAG2_EXT_COST_REQUIRES_GOLD = 0x00000004, // when item uses extended cost, gold is also required
+ ITEM_FLAG2_UNK1 = 0x00000008,
+ ITEM_FLAG2_UNK2 = 0x00000010,
+ ITEM_FLAG2_UNK3 = 0x00000020,
+ ITEM_FLAG2_UNK4 = 0x00000040,
+ ITEM_FLAG2_UNK5 = 0x00000080,
+ ITEM_FLAG2_NEED_ROLL_DISABLED = 0x00000100,
+ ITEM_FLAG2_CASTER_WEAPON = 0x00000200,
+ ITEM_FLAG2_UNK6 = 0x00000400,
+ ITEM_FLAG2_UNK7 = 0x00000800,
+ ITEM_FLAG2_UNK8 = 0x00001000,
+ ITEM_FLAG2_UNK9 = 0x00002000,
+ ITEM_FLAG2_HAS_NORMAL_PRICE = 0x00004000,
+ ITEM_FLAG2_UNK10 = 0x00008000,
+ ITEM_FLAG2_UNK11 = 0x00010000,
+ ITEM_FLAG2_BNET_ACCOUNT_BOUND = 0x00020000,
+ ITEM_FLAG2_UNK12 = 0x00040000,
+ ITEM_FLAG2_UNK13 = 0x00080000,
+ ITEM_FLAG2_UNK14 = 0x00100000,
+ ITEM_FLAG2_CANNOT_BE_TRANSMOG = 0x00200000,
+ ITEM_FLAG2_CANNOT_TRANSMOG = 0x00400000,
+ ITEM_FLAG2_CAN_TRANSMOG = 0x00800000,
+ ITEM_FLAG2_UNK15 = 0x01000000,
+ ITEM_FLAG2_UNK16 = 0x02000000,
+ ITEM_FLAG2_UNK17 = 0x04000000,
+ ITEM_FLAG2_UNK18 = 0x08000000,
+ ITEM_FLAG2_UNK19 = 0x10000000,
+ ITEM_FLAG2_UNK20 = 0x20000000,
+ ITEM_FLAG2_UNK21 = 0x40000000,
+ ITEM_FLAG2_CRAFTING_MATERIAL = 0x80000000
};
enum ItemFlags3
{
- ITEM_FLAG3_IGNORE_ITEM_LEVEL_DELTAS = 0x080, // Ignore item level adjustments from PLAYER_FIELD_ITEM_LEVEL_DELTA
- ITEM_FLAG3_IGNORE_PVP_ITEM_LEVEL_CAP = 0x100,
- ITEM_FLAG3_HEIRLOOM_QUALITY = 0x200, // Item appears as having heirloom quality ingame regardless of its real quality (does not affect stat calculation)
+ ITEM_FLAG3_UNK1 = 0x00000001,
+ ITEM_FLAG3_UNK2 = 0x00000002,
+ ITEM_FLAG3_UNK3 = 0x00000004,
+ ITEM_FLAG3_UNK4 = 0x00000008,
+ ITEM_FLAG3_UNK5 = 0x00000010,
+ ITEM_FLAG3_UNK6 = 0x00000020,
+ ITEM_FLAG3_UNK7 = 0x00000040,
+ ITEM_FLAG3_IGNORE_ITEM_LEVEL_DELTAS = 0x00000080, // Ignore item level adjustments from PLAYER_FIELD_ITEM_LEVEL_DELTA
+ ITEM_FLAG3_IGNORE_PVP_ITEM_LEVEL_CAP = 0x00000100,
+ ITEM_FLAG3_HEIRLOOM_QUALITY = 0x00000200, // Item appears as having heirloom quality ingame regardless of its real quality (does not affect stat calculation)
+ ITEM_FLAG3_UNK8 = 0x00000400,
+ ITEM_FLAG3_UNK9 = 0x00000800,
+ ITEM_FLAG3_DOESNT_APPEAR_IN_GUILD_NEWS = 0x00001000, // Item is not included in the guild news panel
+ ITEM_FLAG3_UNK10 = 0x00002000,
+ ITEM_FLAG3_UNK11 = 0x00004000,
+ ITEM_FLAG3_UNK12 = 0x00008000,
+ ITEM_FLAG3_UNK13 = 0x00010000,
+ ITEM_FLAG3_UNK14 = 0x00020000,
+ ITEM_FLAG3_UNK15 = 0x00040000
};
enum ItemFlagsCustom
@@ -710,7 +749,7 @@ struct ItemTemplate
bool IsPotion() const { return GetClass() == ITEM_CLASS_CONSUMABLE && GetSubClass() == ITEM_SUBCLASS_POTION; }
bool IsVellum() const { return GetClass() == ITEM_CLASS_TRADE_GOODS && GetSubClass() == ITEM_SUBCLASS_ENCHANTMENT; }
- bool IsConjuredConsumable() const { return GetClass() == ITEM_CLASS_CONSUMABLE && (GetFlags() & ITEM_PROTO_FLAG_CONJURED); }
+ bool IsConjuredConsumable() const { return GetClass() == ITEM_CLASS_CONSUMABLE && (GetFlags() & ITEM_FLAG_CONJURED); }
bool IsRangedWeapon() const
{
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 68650bdff59..655af613220 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -212,11 +212,16 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c
break;
}
- if (!(flags & UPDATEFLAG_LIVING))
- if (WorldObject const* worldObject = dynamic_cast<WorldObject const*>(this))
+ if (WorldObject const* worldObject = dynamic_cast<WorldObject const*>(this))
+ {
+ if (!(flags & UPDATEFLAG_LIVING))
if (!worldObject->m_movementInfo.transport.guid.IsEmpty())
flags |= UPDATEFLAG_TRANSPORT_POSITION;
+ if (worldObject->GetAIAnimKitId() || worldObject->GetMovementAnimKitId() || worldObject->GetMeleeAnimKitId())
+ flags |= UPDATEFLAG_ANIMKITS;
+ }
+
if (flags & UPDATEFLAG_STATIONARY_POSITION)
{
// UPDATETYPE_CREATE_OBJECT2 for some gameobject types...
@@ -237,14 +242,9 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c
}
if (Unit const* unit = ToUnit())
- {
if (unit->GetVictim())
flags |= UPDATEFLAG_HAS_TARGET;
- if (unit->GetAIAnimKitId() || unit->GetMovementAnimKitId() || unit->GetMeleeAnimKitId())
- flags |= UPDATEFLAG_ANIMKITS;
- }
-
ByteBuffer buf(0x400);
buf << uint8(updateType);
buf << GetPackGUID();
@@ -502,10 +502,10 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const
if (AnimKitCreate)
{
- Unit const* unit = ToUnit();
- *data << uint16(unit->GetAIAnimKitId()); // AiID
- *data << uint16(unit->GetMovementAnimKitId()); // MovementID
- *data << uint16(unit->GetMeleeAnimKitId()); // MeleeID
+ WorldObject const* self = static_cast<WorldObject const*>(this);
+ *data << uint16(self->GetAIAnimKitId()); // AiID
+ *data << uint16(self->GetMovementAnimKitId()); // MovementID
+ *data << uint16(self->GetMeleeAnimKitId()); // MeleeID
}
if (Rotation)
@@ -1408,62 +1408,6 @@ bool Object::PrintIndexError(uint32 index, bool set) const
return false;
}
-bool Position::operator==(Position const &a)
-{
- return (G3D::fuzzyEq(a.m_positionX, m_positionX) &&
- G3D::fuzzyEq(a.m_positionY, m_positionY) &&
- G3D::fuzzyEq(a.m_positionZ, m_positionZ) &&
- G3D::fuzzyEq(a._orientation, _orientation));
-}
-
-bool Position::HasInLine(WorldObject const* target, float width) const
-{
- if (!HasInArc(float(M_PI), target))
- return false;
- width += target->GetObjectSize();
- float angle = GetRelativeAngle(target);
- return std::fabs(std::sin(angle)) * GetExactDist2d(target->GetPositionX(), target->GetPositionY()) < width;
-}
-
-std::string Position::ToString() const
-{
- std::stringstream sstr;
- sstr << "X: " << m_positionX << " Y: " << m_positionY << " Z: " << m_positionZ << " O: " << _orientation;
- return sstr.str();
-}
-
-ByteBuffer& operator>>(ByteBuffer& buf, Position::PositionXYZOStreamer const& streamer)
-{
- float x, y, z, o;
- buf >> x >> y >> z >> o;
- streamer.Pos->Relocate(x, y, z, o);
- return buf;
-}
-ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYZStreamer const& streamer)
-{
- buf << streamer.Pos->GetPositionX();
- buf << streamer.Pos->GetPositionY();
- buf << streamer.Pos->GetPositionZ();
- return buf;
-}
-
-ByteBuffer& operator>>(ByteBuffer& buf, Position::PositionXYZStreamer const& streamer)
-{
- float x, y, z;
- buf >> x >> y >> z;
- streamer.Pos->Relocate(x, y, z);
- return buf;
-}
-
-ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYZOStreamer const& streamer)
-{
- buf << streamer.Pos->GetPositionX();
- buf << streamer.Pos->GetPositionY();
- buf << streamer.Pos->GetPositionZ();
- buf << streamer.Pos->GetOrientation();
- return buf;
-}
-
void MovementInfo::OutDebug()
{
TC_LOG_DEBUG("misc", "MOVEMENT INFO");
@@ -1502,7 +1446,9 @@ void MovementInfo::OutDebug()
WorldObject::WorldObject(bool isWorldObject) : WorldLocation(), LastUsedScriptID(0),
m_name(""), m_isActive(false), m_isWorldObject(isWorldObject), m_zoneScript(NULL),
m_transport(NULL), m_currMap(NULL), m_InstanceId(0),
-m_phaseMask(PHASEMASK_NORMAL), _dbPhase(0), m_notifyflags(0), m_executed_notifies(0)
+m_phaseMask(PHASEMASK_NORMAL), _dbPhase(0), m_notifyflags(0), m_executed_notifies(0),
+m_aiAnimKitId(0), m_movementAnimKitId(0), m_meleeAnimKitId(0)
+
{
m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE | GHOST_VISIBILITY_GHOST);
m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE);
@@ -1823,92 +1769,6 @@ bool WorldObject::IsInRange3d(float x, float y, float z, float minRange, float m
return distsq < maxdist * maxdist;
}
-void Position::RelocateOffset(const Position & offset)
-{
- m_positionX = GetPositionX() + (offset.GetPositionX() * std::cos(GetOrientation()) + offset.GetPositionY() * std::sin(GetOrientation() + float(M_PI)));
- m_positionY = GetPositionY() + (offset.GetPositionY() * std::cos(GetOrientation()) + offset.GetPositionX() * std::sin(GetOrientation()));
- m_positionZ = GetPositionZ() + offset.GetPositionZ();
- SetOrientation(GetOrientation() + offset.GetOrientation());
-}
-
-void Position::GetPositionOffsetTo(const Position & endPos, Position & retOffset) const
-{
- float dx = endPos.GetPositionX() - GetPositionX();
- float dy = endPos.GetPositionY() - GetPositionY();
-
- retOffset.m_positionX = dx * std::cos(GetOrientation()) + dy * std::sin(GetOrientation());
- retOffset.m_positionY = dy * std::cos(GetOrientation()) - dx * std::sin(GetOrientation());
- retOffset.m_positionZ = endPos.GetPositionZ() - GetPositionZ();
- retOffset.SetOrientation(endPos.GetOrientation() - GetOrientation());
-}
-
-Position Position::GetPositionWithOffset(Position const& offset) const
-{
- Position ret(*this);
- ret.RelocateOffset(offset);
- return ret;
-}
-
-float Position::GetAngle(const Position* obj) const
-{
- if (!obj)
- return 0;
-
- return GetAngle(obj->GetPositionX(), obj->GetPositionY());
-}
-
-// Return angle in range 0..2*pi
-float Position::GetAngle(const float x, const float y) const
-{
- float dx = x - GetPositionX();
- float dy = y - GetPositionY();
-
- float ang = std::atan2(dy, dx);
- ang = (ang >= 0) ? ang : 2 * float(M_PI) + ang;
- return ang;
-}
-
-void Position::GetSinCos(const float x, const float y, float &vsin, float &vcos) const
-{
- float dx = GetPositionX() - x;
- float dy = GetPositionY() - y;
-
- if (std::fabs(dx) < 0.001f && std::fabs(dy) < 0.001f)
- {
- float angle = (float)rand_norm()*static_cast<float>(2*M_PI);
- vcos = std::cos(angle);
- vsin = std::sin(angle);
- }
- else
- {
- float dist = std::sqrt((dx*dx) + (dy*dy));
- vcos = dx / dist;
- vsin = dy / dist;
- }
-}
-
-bool Position::HasInArc(float arc, const Position* obj, float border) const
-{
- // always have self in arc
- if (obj == this)
- return true;
-
- // move arc to range 0.. 2*pi
- arc = NormalizeOrientation(arc);
-
- float angle = GetAngle(obj);
- angle -= _orientation;
-
- // move angle to range -pi ... +pi
- angle = NormalizeOrientation(angle);
- if (angle > float(M_PI))
- angle -= 2.0f * float(M_PI);
-
- float lborder = -1 * (arc/border); // in range -pi..0
- float rborder = (arc/border); // in range 0..pi
- return ((angle >= lborder) && (angle <= rborder));
-}
-
bool WorldObject::IsInBetween(const WorldObject* obj1, const WorldObject* obj2, float size) const
{
if (!obj1 || !obj2)
@@ -2042,11 +1902,6 @@ void WorldObject::UpdateAllowedPositionZ(float x, float y, float &z) const
}
}
-bool Position::IsPositionValid() const
-{
- return Trinity::IsValidMapCoord(m_positionX, m_positionY, m_positionZ, _orientation);
-}
-
float WorldObject::GetGridActivationRange() const
{
if (ToPlayer())
@@ -3247,6 +3102,54 @@ ObjectGuid WorldObject::GetTransGUID() const
return ObjectGuid::Empty;
}
+void WorldObject::SetAIAnimKitId(uint16 animKitId)
+{
+ if (m_aiAnimKitId == animKitId)
+ return;
+
+ if (animKitId && !sAnimKitStore.LookupEntry(animKitId))
+ return;
+
+ m_aiAnimKitId = animKitId;
+
+ WorldPacket data(SMSG_SET_AI_ANIM_KIT, 8 + 2);
+ data << GetPackGUID();
+ data << uint16(animKitId);
+ SendMessageToSet(&data, true);
+}
+
+void WorldObject::SetMovementAnimKitId(uint16 animKitId)
+{
+ if (m_movementAnimKitId == animKitId)
+ return;
+
+ if (animKitId && !sAnimKitStore.LookupEntry(animKitId))
+ return;
+
+ m_movementAnimKitId = animKitId;
+
+ WorldPacket data(SMSG_SET_MOVEMENT_ANIM_KIT, 8 + 2);
+ data << GetPackGUID();
+ data << uint16(animKitId);
+ SendMessageToSet(&data, true);
+}
+
+void WorldObject::SetMeleeAnimKitId(uint16 animKitId)
+{
+ if (m_meleeAnimKitId == animKitId)
+ return;
+
+ if (animKitId && !sAnimKitStore.LookupEntry(animKitId))
+ return;
+
+ m_meleeAnimKitId = animKitId;
+
+ WorldPacket data(SMSG_SET_MELEE_ANIM_KIT, 8 + 2);
+ data << GetPackGUID();
+ data << uint16(animKitId);
+ SendMessageToSet(&data, true);
+}
+
void WorldObject::RebuildTerrainSwaps()
{
// Clear all terrain swaps, will be rebuilt below
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 04d5f306076..b9a6320a835 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -20,6 +20,7 @@
#define _OBJECT_H
#include "Common.h"
+#include "Position.h"
#include "UpdateMask.h"
#include "GridReference.h"
#include "ObjectDefines.h"
@@ -263,141 +264,6 @@ class Object
Object& operator=(Object const& right) = delete;
};
-struct Position
-{
- Position(float x = 0, float y = 0, float z = 0, float o = 0)
- : m_positionX(x), m_positionY(y), m_positionZ(z), _orientation(NormalizeOrientation(o)) { }
-
- Position(Position const& loc) { Relocate(loc); }
-
- struct PositionXYZStreamer
- {
- explicit PositionXYZStreamer(Position& pos) : Pos(&pos) { }
- Position* Pos;
- };
-
- struct PositionXYZOStreamer
- {
- explicit PositionXYZOStreamer(Position& pos) : Pos(&pos) { }
- Position* Pos;
- };
-
- float m_positionX;
- float m_positionY;
- float m_positionZ;
-// Better to limit access to _orientation field, to guarantee the value is normalized
-private:
- float _orientation;
-
-public:
- bool operator==(Position const &a);
-
- inline bool operator!=(Position const &a)
- {
- return !(operator==(a));
- }
-
- void Relocate(float x, float y)
- { m_positionX = x; m_positionY = y;}
- void Relocate(float x, float y, float z)
- { m_positionX = x; m_positionY = y; m_positionZ = z; }
- void Relocate(float x, float y, float z, float orientation)
- { m_positionX = x; m_positionY = y; m_positionZ = z; SetOrientation(orientation); }
- void Relocate(Position const &pos)
- { m_positionX = pos.m_positionX; m_positionY = pos.m_positionY; m_positionZ = pos.m_positionZ; SetOrientation(pos._orientation); }
- void Relocate(Position const* pos)
- { m_positionX = pos->m_positionX; m_positionY = pos->m_positionY; m_positionZ = pos->m_positionZ; SetOrientation(pos->_orientation); }
- void RelocateOffset(Position const &offset);
- void SetOrientation(float orientation)
- { _orientation = NormalizeOrientation(orientation); }
-
- float GetPositionX() const { return m_positionX; }
- float GetPositionY() const { return m_positionY; }
- float GetPositionZ() const { return m_positionZ; }
- float GetOrientation() const { return _orientation; }
-
- void GetPosition(float &x, float &y) const
- { x = m_positionX; y = m_positionY; }
- void GetPosition(float &x, float &y, float &z) const
- { x = m_positionX; y = m_positionY; z = m_positionZ; }
- void GetPosition(float &x, float &y, float &z, float &o) const
- { x = m_positionX; y = m_positionY; z = m_positionZ; o = _orientation; }
-
- Position GetPosition() const
- {
- return *this;
- }
-
- Position::PositionXYZStreamer PositionXYZStream()
- {
- return PositionXYZStreamer(*this);
- }
- Position::PositionXYZOStreamer PositionXYZOStream()
- {
- return PositionXYZOStreamer(*this);
- }
-
- bool IsPositionValid() const;
-
- float GetExactDist2dSq(float x, float y) const
- { float dx = m_positionX - x; float dy = m_positionY - y; return dx*dx + dy*dy; }
- float GetExactDist2d(const float x, const float y) const
- { return std::sqrt(GetExactDist2dSq(x, y)); }
- float GetExactDist2dSq(Position const* pos) const
- { float dx = m_positionX - pos->m_positionX; float dy = m_positionY - pos->m_positionY; return dx*dx + dy*dy; }
- float GetExactDist2d(Position const* pos) const
- { return std::sqrt(GetExactDist2dSq(pos)); }
- float GetExactDistSq(float x, float y, float z) const
- { float dz = m_positionZ - z; return GetExactDist2dSq(x, y) + dz*dz; }
- float GetExactDist(float x, float y, float z) const
- { return std::sqrt(GetExactDistSq(x, y, z)); }
- float GetExactDistSq(Position const* pos) const
- { float dx = m_positionX - pos->m_positionX; float dy = m_positionY - pos->m_positionY; float dz = m_positionZ - pos->m_positionZ; return dx*dx + dy*dy + dz*dz; }
- float GetExactDist(Position const* pos) const
- { return std::sqrt(GetExactDistSq(pos)); }
-
- void GetPositionOffsetTo(Position const & endPos, Position & retOffset) const;
- Position GetPositionWithOffset(Position const& offset) const;
-
- float GetAngle(Position const* pos) const;
- float GetAngle(float x, float y) const;
- float GetRelativeAngle(Position const* pos) const
- { return GetAngle(pos) - _orientation; }
- float GetRelativeAngle(float x, float y) const { return GetAngle(x, y) - _orientation; }
- void GetSinCos(float x, float y, float &vsin, float &vcos) const;
-
- bool IsInDist2d(float x, float y, float dist) const
- { return GetExactDist2dSq(x, y) < dist * dist; }
- bool IsInDist2d(Position const* pos, float dist) const
- { return GetExactDist2dSq(pos) < dist * dist; }
- bool IsInDist(float x, float y, float z, float dist) const
- { return GetExactDistSq(x, y, z) < dist * dist; }
- bool IsInDist(Position const* pos, float dist) const
- { return GetExactDistSq(pos) < dist * dist; }
- bool HasInArc(float arcangle, Position const* pos, float border = 2.0f) const;
- bool HasInLine(WorldObject const* target, float width) const;
- std::string ToString() const;
-
- // modulos a radian orientation to the range of 0..2PI
- static float NormalizeOrientation(float o)
- {
- // fmod only supports positive numbers. Thus we have
- // to emulate negative numbers
- if (o < 0)
- {
- float mod = o *-1;
- mod = std::fmod(mod, 2.0f * static_cast<float>(M_PI));
- mod = -mod + 2.0f * static_cast<float>(M_PI);
- return mod;
- }
- return std::fmod(o, 2.0f * static_cast<float>(M_PI));
- }
-};
-ByteBuffer& operator>>(ByteBuffer& buf, Position::PositionXYZOStreamer const& streamer);
-ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYZStreamer const& streamer);
-ByteBuffer& operator>>(ByteBuffer& buf, Position::PositionXYZStreamer const& streamer);
-ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYZOStreamer const& streamer);
-
struct MovementInfo
{
// common
@@ -783,6 +649,13 @@ class WorldObject : public Object, public WorldLocation
virtual float GetStationaryZ() const { return GetPositionZ(); }
virtual float GetStationaryO() const { return GetOrientation(); }
+ uint16 GetAIAnimKitId() const { return m_aiAnimKitId; }
+ void SetAIAnimKitId(uint16 animKitId);
+ uint16 GetMovementAnimKitId() const { return m_movementAnimKitId; }
+ void SetMovementAnimKitId(uint16 animKitId);
+ uint16 GetMeleeAnimKitId() const { return m_meleeAnimKitId; }
+ void SetMeleeAnimKitId(uint16 animKitId);
+
protected:
std::string m_name;
bool m_isActive;
@@ -823,6 +696,10 @@ class WorldObject : public Object, public WorldLocation
bool CanDetect(WorldObject const* obj, bool ignoreStealth) const;
bool CanDetectInvisibilityOf(WorldObject const* obj) const;
bool CanDetectStealthOf(WorldObject const* obj) const;
+
+ uint16 m_aiAnimKitId;
+ uint16 m_movementAnimKitId;
+ uint16 m_meleeAnimKitId;
};
namespace Trinity
diff --git a/src/server/game/Entities/Object/Position.cpp b/src/server/game/Entities/Object/Position.cpp
new file mode 100644
index 00000000000..530e51cd8f5
--- /dev/null
+++ b/src/server/game/Entities/Object/Position.cpp
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Position.h"
+#include "ByteBuffer.h"
+#include "G3D/g3dmath.h"
+#include "GridDefines.h"
+
+bool Position::operator==(Position const &a)
+{
+ return (G3D::fuzzyEq(a.m_positionX, m_positionX) &&
+ G3D::fuzzyEq(a.m_positionY, m_positionY) &&
+ G3D::fuzzyEq(a.m_positionZ, m_positionZ) &&
+ G3D::fuzzyEq(a.m_orientation, m_orientation));
+}
+
+void Position::RelocateOffset(const Position & offset)
+{
+ m_positionX = GetPositionX() + (offset.GetPositionX() * std::cos(GetOrientation()) + offset.GetPositionY() * std::sin(GetOrientation() + float(M_PI)));
+ m_positionY = GetPositionY() + (offset.GetPositionY() * std::cos(GetOrientation()) + offset.GetPositionX() * std::sin(GetOrientation()));
+ m_positionZ = GetPositionZ() + offset.GetPositionZ();
+ SetOrientation(GetOrientation() + offset.GetOrientation());
+}
+
+bool Position::IsPositionValid() const
+{
+ return Trinity::IsValidMapCoord(m_positionX, m_positionY, m_positionZ, m_orientation);
+}
+
+void Position::GetPositionOffsetTo(const Position & endPos, Position & retOffset) const
+{
+ float dx = endPos.GetPositionX() - GetPositionX();
+ float dy = endPos.GetPositionY() - GetPositionY();
+
+ retOffset.m_positionX = dx * std::cos(GetOrientation()) + dy * std::sin(GetOrientation());
+ retOffset.m_positionY = dy * std::cos(GetOrientation()) - dx * std::sin(GetOrientation());
+ retOffset.m_positionZ = endPos.GetPositionZ() - GetPositionZ();
+ retOffset.SetOrientation(endPos.GetOrientation() - GetOrientation());
+}
+
+Position Position::GetPositionWithOffset(Position const& offset) const
+{
+ Position ret(*this);
+ ret.RelocateOffset(offset);
+ return ret;
+}
+
+float Position::GetAngle(const Position* obj) const
+{
+ if (!obj)
+ return 0;
+
+ return GetAngle(obj->GetPositionX(), obj->GetPositionY());
+}
+
+// Return angle in range 0..2*pi
+float Position::GetAngle(float x, float y) const
+{
+ float dx = x - GetPositionX();
+ float dy = y - GetPositionY();
+
+ float ang = std::atan2(dy, dx);
+ ang = (ang >= 0) ? ang : 2 * float(M_PI) + ang;
+ return ang;
+}
+
+void Position::GetSinCos(const float x, const float y, float &vsin, float &vcos) const
+{
+ float dx = GetPositionX() - x;
+ float dy = GetPositionY() - y;
+
+ if (std::fabs(dx) < 0.001f && std::fabs(dy) < 0.001f)
+ {
+ float angle = (float)rand_norm()*static_cast<float>(2 * M_PI);
+ vcos = std::cos(angle);
+ vsin = std::sin(angle);
+ }
+ else
+ {
+ float dist = std::sqrt((dx*dx) + (dy*dy));
+ vcos = dx / dist;
+ vsin = dy / dist;
+ }
+}
+
+bool Position::HasInArc(float arc, const Position* obj, float border) const
+{
+ // always have self in arc
+ if (obj == this)
+ return true;
+
+ // move arc to range 0.. 2*pi
+ arc = NormalizeOrientation(arc);
+
+ float angle = GetAngle(obj);
+ angle -= m_orientation;
+
+ // move angle to range -pi ... +pi
+ angle = NormalizeOrientation(angle);
+ if (angle > float(M_PI))
+ angle -= 2.0f * float(M_PI);
+
+ float lborder = -1 * (arc / border); // in range -pi..0
+ float rborder = (arc / border); // in range 0..pi
+ return ((angle >= lborder) && (angle <= rborder));
+}
+
+bool Position::HasInLine(Position const* pos, float width) const
+{
+ if (!HasInArc(float(M_PI), pos))
+ return false;
+
+ float angle = GetRelativeAngle(pos);
+ return std::fabs(std::sin(angle)) * GetExactDist2d(pos->GetPositionX(), pos->GetPositionY()) < width;
+}
+
+std::string Position::ToString() const
+{
+ std::stringstream sstr;
+ sstr << "X: " << m_positionX << " Y: " << m_positionY << " Z: " << m_positionZ << " O: " << m_orientation;
+ return sstr.str();
+}
+
+ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYStreamer const& streamer)
+{
+ buf << streamer.Pos->GetPositionX();
+ buf << streamer.Pos->GetPositionY();
+ return buf;
+}
+
+ByteBuffer& operator>>(ByteBuffer& buf, Position::PositionXYStreamer const& streamer)
+{
+ float x, y;
+ buf >> x >> y;
+ streamer.Pos->Relocate(x, y);
+ return buf;
+}
+
+ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYZStreamer const& streamer)
+{
+ buf << streamer.Pos->GetPositionX();
+ buf << streamer.Pos->GetPositionY();
+ buf << streamer.Pos->GetPositionZ();
+ return buf;
+}
+
+ByteBuffer& operator>>(ByteBuffer& buf, Position::PositionXYZStreamer const& streamer)
+{
+ float x, y, z;
+ buf >> x >> y >> z;
+ streamer.Pos->Relocate(x, y, z);
+ return buf;
+}
+
+ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYZOStreamer const& streamer)
+{
+ buf << streamer.Pos->GetPositionX();
+ buf << streamer.Pos->GetPositionY();
+ buf << streamer.Pos->GetPositionZ();
+ buf << streamer.Pos->GetOrientation();
+ return buf;
+}
+
+ByteBuffer& operator>>(ByteBuffer& buf, Position::PositionXYZOStreamer const& streamer)
+{
+ float x, y, z, o;
+ buf >> x >> y >> z >> o;
+ streamer.Pos->Relocate(x, y, z, o);
+ return buf;
+}
diff --git a/src/server/game/Entities/Object/Position.h b/src/server/game/Entities/Object/Position.h
new file mode 100644
index 00000000000..5bd37567811
--- /dev/null
+++ b/src/server/game/Entities/Object/Position.h
@@ -0,0 +1,225 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef Trinity_game_Position_h__
+#define Trinity_game_Position_h__
+
+#include "Common.h"
+
+class ByteBuffer;
+
+struct Position
+{
+ Position(float x = 0, float y = 0, float z = 0, float o = 0)
+ : m_positionX(x), m_positionY(y), m_positionZ(z), m_orientation(NormalizeOrientation(o)) { }
+
+ Position(Position const& loc) { Relocate(loc); }
+
+ struct PositionXYStreamer
+ {
+ explicit PositionXYStreamer(Position& pos) : Pos(&pos) { }
+ Position* Pos;
+ };
+
+ struct PositionXYZStreamer
+ {
+ explicit PositionXYZStreamer(Position& pos) : Pos(&pos) { }
+ Position* Pos;
+ };
+
+ struct PositionXYZOStreamer
+ {
+ explicit PositionXYZOStreamer(Position& pos) : Pos(&pos) { }
+ Position* Pos;
+ };
+
+ float m_positionX;
+ float m_positionY;
+ float m_positionZ;
+ // Better to limit access to _orientation field, to guarantee the value is normalized
+private:
+ float m_orientation;
+
+public:
+ bool operator==(Position const &a);
+
+ inline bool operator!=(Position const &a)
+ {
+ return !(operator==(a));
+ }
+
+ void Relocate(float x, float y)
+ {
+ m_positionX = x; m_positionY = y;
+ }
+
+ void Relocate(float x, float y, float z)
+ {
+ m_positionX = x; m_positionY = y; m_positionZ = z;
+ }
+
+ void Relocate(float x, float y, float z, float orientation)
+ {
+ m_positionX = x; m_positionY = y; m_positionZ = z; SetOrientation(orientation);
+ }
+
+ void Relocate(Position const &pos)
+ {
+ m_positionX = pos.m_positionX; m_positionY = pos.m_positionY; m_positionZ = pos.m_positionZ; SetOrientation(pos.m_orientation);
+ }
+
+ void Relocate(Position const* pos)
+ {
+ m_positionX = pos->m_positionX; m_positionY = pos->m_positionY; m_positionZ = pos->m_positionZ; SetOrientation(pos->m_orientation);
+ }
+
+ void RelocateOffset(Position const &offset);
+
+ void SetOrientation(float orientation)
+ {
+ m_orientation = NormalizeOrientation(orientation);
+ }
+
+ float GetPositionX() const { return m_positionX; }
+ float GetPositionY() const { return m_positionY; }
+ float GetPositionZ() const { return m_positionZ; }
+ float GetOrientation() const { return m_orientation; }
+
+ void GetPosition(float &x, float &y) const
+ {
+ x = m_positionX; y = m_positionY;
+ }
+
+ void GetPosition(float &x, float &y, float &z) const
+ {
+ x = m_positionX; y = m_positionY; z = m_positionZ;
+ }
+
+ void GetPosition(float &x, float &y, float &z, float &o) const
+ {
+ x = m_positionX; y = m_positionY; z = m_positionZ; o = m_orientation;
+ }
+
+ Position GetPosition() const { return *this; }
+
+ Position::PositionXYStreamer PositionXYStream() { return PositionXYStreamer(*this); }
+ Position::PositionXYZStreamer PositionXYZStream() { return PositionXYZStreamer(*this); }
+ Position::PositionXYZOStreamer PositionXYZOStream() { return PositionXYZOStreamer(*this); }
+
+ bool IsPositionValid() const;
+
+ float GetExactDist2dSq(float x, float y) const
+ {
+ float dx = m_positionX - x; float dy = m_positionY - y; return dx*dx + dy*dy;
+ }
+
+ float GetExactDist2d(const float x, const float y) const
+ {
+ return std::sqrt(GetExactDist2dSq(x, y));
+ }
+
+ float GetExactDist2dSq(Position const* pos) const
+ {
+ float dx = m_positionX - pos->m_positionX; float dy = m_positionY - pos->m_positionY; return dx*dx + dy*dy;
+ }
+
+ float GetExactDist2d(Position const* pos) const
+ {
+ return std::sqrt(GetExactDist2dSq(pos));
+ }
+
+ float GetExactDistSq(float x, float y, float z) const
+ {
+ float dz = m_positionZ - z; return GetExactDist2dSq(x, y) + dz*dz;
+ }
+
+ float GetExactDist(float x, float y, float z) const
+ {
+ return std::sqrt(GetExactDistSq(x, y, z));
+ }
+
+ float GetExactDistSq(Position const* pos) const
+ {
+ float dx = m_positionX - pos->m_positionX; float dy = m_positionY - pos->m_positionY; float dz = m_positionZ - pos->m_positionZ; return dx*dx + dy*dy + dz*dz;
+ }
+
+ float GetExactDist(Position const* pos) const
+ {
+ return std::sqrt(GetExactDistSq(pos));
+ }
+
+ void GetPositionOffsetTo(Position const & endPos, Position & retOffset) const;
+ Position GetPositionWithOffset(Position const& offset) const;
+
+ float GetAngle(Position const* pos) const;
+ float GetAngle(float x, float y) const;
+ float GetRelativeAngle(Position const* pos) const
+ {
+ return GetAngle(pos) - m_orientation;
+ }
+
+ float GetRelativeAngle(float x, float y) const { return GetAngle(x, y) - m_orientation; }
+ void GetSinCos(float x, float y, float &vsin, float &vcos) const;
+
+ bool IsInDist2d(float x, float y, float dist) const
+ {
+ return GetExactDist2dSq(x, y) < dist * dist;
+ }
+
+ bool IsInDist2d(Position const* pos, float dist) const
+ {
+ return GetExactDist2dSq(pos) < dist * dist;
+ }
+
+ bool IsInDist(float x, float y, float z, float dist) const
+ {
+ return GetExactDistSq(x, y, z) < dist * dist;
+ }
+
+ bool IsInDist(Position const* pos, float dist) const
+ {
+ return GetExactDistSq(pos) < dist * dist;
+ }
+
+ bool HasInArc(float arcangle, Position const* pos, float border = 2.0f) const;
+ bool HasInLine(Position const* pos, float width) const;
+ std::string ToString() const;
+
+ // modulos a radian orientation to the range of 0..2PI
+ static float NormalizeOrientation(float o)
+ {
+ // fmod only supports positive numbers. Thus we have
+ // to emulate negative numbers
+ if (o < 0)
+ {
+ float mod = o *-1;
+ mod = std::fmod(mod, 2.0f * static_cast<float>(M_PI));
+ mod = -mod + 2.0f * static_cast<float>(M_PI);
+ return mod;
+ }
+ return std::fmod(o, 2.0f * static_cast<float>(M_PI));
+ }
+};
+
+ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYStreamer const& streamer);
+ByteBuffer& operator>>(ByteBuffer& buf, Position::PositionXYStreamer const& streamer);
+ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYZStreamer const& streamer);
+ByteBuffer& operator>>(ByteBuffer& buf, Position::PositionXYZStreamer const& streamer);
+ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYZOStreamer const& streamer);
+ByteBuffer& operator>>(ByteBuffer& buf, Position::PositionXYZOStreamer const& streamer);
+
+#endif // Trinity_game_Position_h__
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index f91986ddbfd..b6430a8dd26 100644
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -39,7 +39,7 @@
Pet::Pet(Player* owner, PetType type) :
Guardian(NULL, owner, true), m_usedTalentCount(0), m_removed(false),
- m_petType(type), m_duration(0), m_auraRaidUpdateMask(0), m_loading(false),
+ m_petType(type), m_duration(0), m_loading(false), m_groupUpdateMask(0),
m_declinedname(NULL)
{
ASSERT(GetOwner());
@@ -208,7 +208,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
SetDisplayId(fields[3].GetUInt32());
SetNativeDisplayId(fields[3].GetUInt32());
uint32 petlevel = fields[4].GetUInt16();
- SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
+ SetUInt64Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
SetName(fields[8].GetString());
switch (getPetType())
@@ -337,8 +337,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
owner->PetSpellInitialize();
- if (owner->GetGroup())
- owner->SetGroupUpdateFlag(GROUP_UPDATE_PET);
+ SetGroupUpdateFlag(GROUP_UPDATE_PET_FULL);
// TODO: 6.x remove/update pet talents
//owner->SendTalentsInfoData(true);
@@ -785,7 +784,7 @@ bool Pet::CreateBaseAtTamed(CreatureTemplate const* cinfo, Map* map)
SetUInt32Value(UNIT_FIELD_PET_NAME_TIMESTAMP, 0);
SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0);
SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, uint32(sObjectMgr->GetXPForLevel(getLevel()+1)*PET_XP_FACTOR));
- SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
+ SetUInt64Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
if (cinfo->type == CREATURE_TYPE_BEAST)
{
@@ -1938,6 +1937,21 @@ void Pet::SetDisplayId(uint32 modelId)
if (!isControlled())
return;
+ SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_MODEL_ID);
+}
+
+void Pet::SetGroupUpdateFlag(uint32 flag)
+{
+ if (GetOwner()->GetGroup())
+ {
+ m_groupUpdateMask |= flag;
+ GetOwner()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET);
+ }
+}
+
+void Pet::ResetGroupUpdateFlag()
+{
+ m_groupUpdateMask = GROUP_UPDATE_FLAG_PET_NONE;
if (GetOwner()->GetGroup())
- GetOwner()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_MODEL_ID);
+ GetOwner()->RemoveGroupUpdateFlag(GROUP_UPDATE_FLAG_PET);
}
diff --git a/src/server/game/Entities/Pet/Pet.h b/src/server/game/Entities/Pet/Pet.h
index 494db54208d..70f14fbd7ca 100644
--- a/src/server/game/Entities/Pet/Pet.h
+++ b/src/server/game/Entities/Pet/Pet.h
@@ -134,9 +134,9 @@ class Pet : public Guardian
uint32 m_usedTalentCount;
- uint64 GetAuraUpdateMaskForRaid() const { return m_auraRaidUpdateMask; }
- void SetAuraUpdateMaskForRaid(uint8 slot) { m_auraRaidUpdateMask |= (uint64(1) << slot); }
- void ResetAuraUpdateMaskForRaid() { m_auraRaidUpdateMask = 0; }
+ uint32 GetGroupUpdateFlag() const { return m_groupUpdateMask; }
+ void SetGroupUpdateFlag(uint32 flag);
+ void ResetGroupUpdateFlag();
DeclinedName const* GetDeclinedNames() const { return m_declinedname; }
@@ -147,9 +147,9 @@ class Pet : public Guardian
protected:
PetType m_petType;
int32 m_duration; // time until unsummon (used mostly for summoned guardians and not used for controlled pets)
- uint64 m_auraRaidUpdateMask;
bool m_loading;
uint32 m_regenTimer;
+ uint32 m_groupUpdateMask;
DeclinedName *m_declinedname;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index d7e48947600..3c0510cf3c5 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -31,20 +31,22 @@
#include "ChannelMgr.h"
#include "CharacterDatabaseCleaner.h"
#include "CharacterPackets.h"
-#include "TalentPackets.h"
#include "Chat.h"
+#include "ChatPackets.h"
#include "CombatLogPackets.h"
#include "CombatPackets.h"
#include "Common.h"
#include "ConditionMgr.h"
#include "CreatureAI.h"
-#include "DatabaseEnv.h"
#include "DB2Stores.h"
+#include "DatabaseEnv.h"
#include "DisableMgr.h"
+#include "DuelPackets.h"
#include "EquipmentSetPackets.h"
#include "Formulas.h"
#include "GameEventMgr.h"
#include "GameObjectAI.h"
+#include "Garrison.h"
#include "GossipDef.h"
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
@@ -52,14 +54,19 @@
#include "GroupMgr.h"
#include "Guild.h"
#include "GuildMgr.h"
+#include "InstancePackets.h"
#include "InstanceSaveMgr.h"
#include "InstanceScript.h"
+#include "ItemPackets.h"
#include "LFGMgr.h"
#include "Language.h"
#include "Log.h"
+#include "LootPackets.h"
#include "MailPackets.h"
#include "MapInstanced.h"
#include "MapManager.h"
+#include "MiscPackets.h"
+#include "MovementPackets.h"
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
#include "Opcodes.h"
@@ -67,6 +74,7 @@
#include "OutdoorPvPMgr.h"
#include "Pet.h"
#include "QuestDef.h"
+#include "QuestPackets.h"
#include "ReputationMgr.h"
#include "revision.h"
#include "SkillDiscovery.h"
@@ -77,27 +85,22 @@
#include "SpellHistory.h"
#include "SpellMgr.h"
#include "SpellPackets.h"
+#include "TalentPackets.h"
+#include "TradePackets.h"
#include "Transport.h"
#include "UpdateData.h"
#include "UpdateFieldFlags.h"
#include "UpdateMask.h"
#include "Util.h"
#include "Vehicle.h"
+#include "VehiclePackets.h"
#include "Weather.h"
#include "WeatherMgr.h"
#include "World.h"
#include "WorldPacket.h"
#include "WorldSession.h"
#include "WorldStatePackets.h"
-#include "MiscPackets.h"
-#include "ChatPackets.h"
-#include "DuelPackets.h"
-#include "MovementPackets.h"
-#include "ItemPackets.h"
-#include "QuestPackets.h"
-#include "LootPackets.h"
-#include "TradePackets.h"
-#include "VehiclePackets.h"
+#include "InstancePackets.h"
#define ZONE_UPDATE_INTERVAL (1*IN_MILLISECONDS)
@@ -699,7 +702,6 @@ Player::Player(WorldSession* session): Unit(true)
// group is initialized in the reference constructor
SetGroupInvite(NULL);
m_groupUpdateMask = 0;
- m_auraRaidUpdateMask = 0;
m_bPassOnGroupLoot = false;
duel = NULL;
@@ -800,7 +802,7 @@ Player::Player(WorldSession* session): Unit(true)
m_dungeonDifficulty = DIFFICULTY_NORMAL;
m_raidDifficulty = DIFFICULTY_NORMAL_RAID;
m_legacyRaidDifficulty = DIFFICULTY_10_N;
- m_raidMapDifficulty = DIFFICULTY_NORMAL_RAID;
+ m_prevMapDifficulty = DIFFICULTY_NORMAL_RAID;
m_lastPotionId = 0;
_talentMgr = new PlayerTalentInfo();
@@ -885,7 +887,6 @@ Player::Player(WorldSession* session): Unit(true)
_maxPersonalArenaRate = 0;
memset(_voidStorageItems, 0, VOID_STORAGE_MAX_SLOT * sizeof(VoidStorageItem*));
- memset(_CUFProfiles, 0, MAX_CUF_PROFILES * sizeof(CUFProfile*));
m_achievementMgr = new AchievementMgr<Player>(this);
m_reputationMgr = new ReputationMgr(this);
@@ -925,9 +926,6 @@ Player::~Player()
for (uint8 i = 0; i < VOID_STORAGE_MAX_SLOT; ++i)
delete _voidStorageItems[i];
- for (uint8 i = 0; i < MAX_CUF_PROFILES; ++i)
- delete _CUFProfiles[i];
-
ClearResurrectRequestData();
sWorld->DecreasePlayerCount();
@@ -1123,10 +1121,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac
UpdateMaxHealth(); // Update max Health (for add bonus from stamina)
SetFullHealth();
if (getPowerType() == POWER_MANA)
- {
- UpdateMaxPower(POWER_MANA); // Update max Mana (for add bonus from intellect)
SetPower(POWER_MANA, GetMaxPower(POWER_MANA));
- }
if (getPowerType() == POWER_RUNIC_POWER)
{
@@ -2057,6 +2052,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
// this will be used instead of the current location in SaveToDB
m_teleport_dest = WorldLocation(mapid, x, y, z, orientation);
+ m_teleport_options = options;
SetFallInformation(0, z);
// code for finish transfer called in WorldSession::HandleMovementOpcodes()
@@ -2086,6 +2082,12 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
if (!sMapMgr->CanPlayerEnter(mapid, this, false))
return false;
+ // Seamless teleport can happen only if cosmetic maps match
+ if (!oldmap ||
+ (oldmap->GetEntry()->CosmeticParentMapID != int32(mapid) && int32(GetMapId()) != mEntry->CosmeticParentMapID &&
+ !((oldmap->GetEntry()->CosmeticParentMapID != -1) ^ (oldmap->GetEntry()->CosmeticParentMapID != mEntry->CosmeticParentMapID))))
+ options &= ~TELE_TO_SEAMLESS;
+
//I think this always returns true. Correct me if I am wrong.
// If the map is not created, assume it is possible to enter it.
// It will be created in the WorldPortAck.
@@ -2148,7 +2150,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
//remove auras before removing from map...
RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_CHANGE_MAP | AURA_INTERRUPT_FLAG_MOVE | AURA_INTERRUPT_FLAG_TURNING);
- if (!GetSession()->PlayerLogout())
+ if (!GetSession()->PlayerLogout() && !(options & TELE_TO_SEAMLESS))
{
// send transfer packets
WorldPackets::Movement::TransferPending transferPending;
@@ -2168,19 +2170,25 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
oldmap->RemovePlayerFromMap(this, false);
m_teleport_dest = WorldLocation(mapid, x, y, z, orientation);
+ m_teleport_options = options;
SetFallInformation(0, z);
// if the player is saved before worldportack (at logout for example)
// this will be used instead of the current location in SaveToDB
if (!GetSession()->PlayerLogout())
{
+ if (mEntry->IsDungeon())
+ {
+ WorldPackets::Instance::UpdateLastInstance updateLastInstance;
+ updateLastInstance.MapID = mapid;
+ SendDirectMessage(updateLastInstance.Write());
+ }
+
WorldPackets::Movement::NewWorld packet;
packet.MapID = mapid;
packet.Pos = m_teleport_dest;
- packet.Reason = NEW_WORLD_NORMAL;
-
+ packet.Reason = !(options & TELE_TO_SEAMLESS) ? NEW_WORLD_NORMAL : NEW_WORLD_SEAMLESS;
SendDirectMessage(packet.Write());
- SendSavedInstances();
}
// move packet sent by client always after far teleport
@@ -2300,17 +2308,16 @@ void Player::RemoveFromWorld()
sBattlefieldMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId);
}
+ // Remove items from world before self - player must be found in Item::RemoveFromObjectUpdate
+ for (uint8 i = PLAYER_SLOT_START; i < PLAYER_SLOT_END; ++i)
+ if (m_items[i])
+ m_items[i]->RemoveFromWorld();
+
///- Do not add/remove the player from the object storage
///- It will crash when updating the ObjectAccessor
///- The player should only be removed when logging out
Unit::RemoveFromWorld();
- for (uint8 i = PLAYER_SLOT_START; i < PLAYER_SLOT_END; ++i)
- {
- if (m_items[i])
- m_items[i]->RemoveFromWorld();
- }
-
for (ItemMap::iterator iter = mMitems.begin(); iter != mMitems.end(); ++iter)
iter->second->RemoveFromWorld();
@@ -2620,7 +2627,7 @@ bool Player::CanInteractWithQuestGiver(Object* questGiver)
return false;
}
-Creature* Player::GetNPCIfCanInteractWith(ObjectGuid guid, uint32 npcflagmask)
+Creature* Player::GetNPCIfCanInteractWith(ObjectGuid guid, uint64 npcflagmask)
{
// unit checks
if (!guid)
@@ -2646,7 +2653,7 @@ Creature* Player::GetNPCIfCanInteractWith(ObjectGuid guid, uint32 npcflagmask)
return NULL;
// appropriate npc type
- if (npcflagmask && !creature->HasFlag(UNIT_NPC_FLAGS, npcflagmask))
+ if (npcflagmask && !creature->HasFlag64(UNIT_NPC_FLAGS, npcflagmask))
return NULL;
// not allow interaction under control, but allow with own pets
@@ -4136,7 +4143,7 @@ TrainerSpellState Player::GetTrainerSpellState(TrainerSpell const* trainer_spell
return TRAINER_SPELL_RED;
bool hasSpell = true;
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ for (uint8 i = 0; i < MAX_TRAINERSPELL_ABILITY_REQS; ++i)
{
if (!trainer_spell->ReqAbility[i])
continue;
@@ -4159,7 +4166,7 @@ TrainerSpellState Player::GetTrainerSpellState(TrainerSpell const* trainer_spell
if (getLevel() < trainer_spell->ReqLevel)
return TRAINER_SPELL_RED;
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ for (uint8 i = 0; i < MAX_TRAINERSPELL_ABILITY_REQS; ++i)
{
if (!trainer_spell->ReqAbility[i])
continue;
@@ -4186,7 +4193,7 @@ TrainerSpellState Player::GetTrainerSpellState(TrainerSpell const* trainer_spell
// check primary prof. limit
// first rank of primary profession spell when there are no proffesions avalible is disabled
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ for (uint8 i = 0; i < MAX_TRAINERSPELL_ABILITY_REQS; ++i)
{
if (!trainer_spell->ReqAbility[i])
continue;
@@ -4568,6 +4575,22 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
stmt->setUInt64(0, guid);
trans->Append(stmt);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON);
+ stmt->setUInt64(0, guid);
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_BLUEPRINTS);
+ stmt->setUInt64(0, guid);
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_BUILDINGS);
+ stmt->setUInt64(0, guid);
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_FOLLOWERS);
+ stmt->setUInt64(0, guid);
+ trans->Append(stmt);
+
CharacterDatabase.CommitTransaction(trans);
sWorld->DeleteCharacterInfo(playerguid);
@@ -5206,7 +5229,7 @@ void Player::UpdateLocalChannels(uint32 newZone)
if (channel->Flags & CHANNEL_DBC_FLAG_CITY_ONLY)
currentNameExt = sObjectMgr->GetTrinityStringForDBCLocale(LANG_CHANNEL_CITY);
else
- currentNameExt = current_zone->ZoneName;
+ currentNameExt = current_zone->AreaName_lang;
snprintf(new_channel_name_buf, 100, channel->Name_lang, currentNameExt);
@@ -6182,6 +6205,22 @@ bool Player::IsActionButtonDataValid(uint8 button, uint32 action, uint8 type)
return false;
}
break;
+ case ACTION_BUTTON_MOUNT:
+ {
+ auto mount = sDB2Manager.GetMountById(action);
+ if (!mount)
+ {
+ TC_LOG_ERROR("entities.player", "Mount action %u not added into button %u for player %s (%s): mount does not exist", action, button, GetName().c_str(), GetGUID().ToString().c_str());
+ return false;
+ }
+
+ if (!HasSpell(mount->SpellId))
+ {
+ TC_LOG_ERROR("entities.player", "Mount action %u not added into button %u for player %s (%s): Player does not know this mount", action, button, GetName().c_str(), GetGUID().ToString().c_str());
+ return false;
+ }
+ break;
+ }
case ACTION_BUTTON_C:
case ACTION_BUTTON_CMACRO:
case ACTION_BUTTON_MACRO:
@@ -6743,12 +6782,12 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto
// victim_rank [1..4] HK: <dishonored rank>
// victim_rank [5..19] HK: <alliance\horde rank>
// victim_rank [0, 20+] HK: <>
- WorldPacket data(SMSG_PVP_CREDIT, 4+8+4);
- data << uint32(honor);
- data << victim_guid;
- data << uint32(victim_rank);
+ WorldPackets::Combat::PvPCredit data;
+ data.Honor = honor;
+ data.Target = victim_guid;
+ data.Rank = victim_rank;
- GetSession()->SendPacket(&data);
+ GetSession()->SendPacket(data.Write());
// add honor points
ModifyCurrency(CURRENCY_TYPE_HONOR_POINTS, int32(honor));
@@ -7345,7 +7384,11 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea)
// group update
if (GetGroup())
+ {
SetGroupUpdateFlag(GROUP_UPDATE_FULL);
+ if (Pet* pet = GetPet())
+ pet->SetGroupUpdateFlag(GROUP_UPDATE_PET_FULL);
+ }
m_zoneUpdateId = newZone;
m_zoneUpdateTimer = ZONE_UPDATE_INTERVAL;
@@ -7656,23 +7699,23 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply)
break;
case ITEM_MOD_AGILITY: // modify agility
HandleStatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply);
- ApplyStatBuffMod(STAT_AGILITY, float(val), apply);
+ ApplyStatBuffMod(STAT_AGILITY, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_AGILITY, BASE_PCT_EXCLUDE_CREATE)), apply);
break;
case ITEM_MOD_STRENGTH: //modify strength
HandleStatModifier(UNIT_MOD_STAT_STRENGTH, BASE_VALUE, float(val), apply);
- ApplyStatBuffMod(STAT_STRENGTH, float(val), apply);
+ ApplyStatBuffMod(STAT_STRENGTH, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_STRENGTH, BASE_PCT_EXCLUDE_CREATE)), apply);
break;
case ITEM_MOD_INTELLECT: //modify intellect
HandleStatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val), apply);
- ApplyStatBuffMod(STAT_INTELLECT, float(val), apply);
+ ApplyStatBuffMod(STAT_INTELLECT, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_INTELLECT, BASE_PCT_EXCLUDE_CREATE)), apply);
break;
case ITEM_MOD_SPIRIT: //modify spirit
HandleStatModifier(UNIT_MOD_STAT_SPIRIT, BASE_VALUE, float(val), apply);
- ApplyStatBuffMod(STAT_SPIRIT, float(val), apply);
+ ApplyStatBuffMod(STAT_SPIRIT, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_SPIRIT, BASE_PCT_EXCLUDE_CREATE)), apply);
break;
case ITEM_MOD_STAMINA: //modify stamina
HandleStatModifier(UNIT_MOD_STAT_STAMINA, BASE_VALUE, float(val), apply);
- ApplyStatBuffMod(STAT_STAMINA, float(val), apply);
+ ApplyStatBuffMod(STAT_STAMINA, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_STAMINA, BASE_PCT_EXCLUDE_CREATE)), apply);
break;
case ITEM_MOD_DEFENSE_SKILL_RATING:
ApplyRatingMod(CR_DEFENSE_SKILL, int32(val), apply);
@@ -7805,6 +7848,32 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply)
case ITEM_MOD_ARCANE_RESISTANCE:
HandleStatModifier(UNIT_MOD_RESISTANCE_ARCANE, BASE_VALUE, float(val), apply);
break;
+ case ITEM_MOD_AGI_STR_INT:
+ HandleStatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply);
+ HandleStatModifier(UNIT_MOD_STAT_STRENGTH, BASE_VALUE, float(val), apply);
+ HandleStatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val), apply);
+ ApplyStatBuffMod(STAT_AGILITY, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_AGILITY, BASE_PCT_EXCLUDE_CREATE)), apply);
+ ApplyStatBuffMod(STAT_STRENGTH, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_STRENGTH, BASE_PCT_EXCLUDE_CREATE)), apply);
+ ApplyStatBuffMod(STAT_INTELLECT, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_INTELLECT, BASE_PCT_EXCLUDE_CREATE)), apply);
+ break;
+ case ITEM_MOD_AGI_STR:
+ HandleStatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply);
+ HandleStatModifier(UNIT_MOD_STAT_STRENGTH, BASE_VALUE, float(val), apply);
+ ApplyStatBuffMod(STAT_AGILITY, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_AGILITY, BASE_PCT_EXCLUDE_CREATE)), apply);
+ ApplyStatBuffMod(STAT_STRENGTH, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_STRENGTH, BASE_PCT_EXCLUDE_CREATE)), apply);
+ break;
+ case ITEM_MOD_AGI_INT:
+ HandleStatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply);
+ HandleStatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val), apply);
+ ApplyStatBuffMod(STAT_AGILITY, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_AGILITY, BASE_PCT_EXCLUDE_CREATE)), apply);
+ ApplyStatBuffMod(STAT_INTELLECT, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_INTELLECT, BASE_PCT_EXCLUDE_CREATE)), apply);
+ break;
+ case ITEM_MOD_STR_INT:
+ HandleStatModifier(UNIT_MOD_STAT_STRENGTH, BASE_VALUE, float(val), apply);
+ HandleStatModifier(UNIT_MOD_STAT_INTELLECT, BASE_VALUE, float(val), apply);
+ ApplyStatBuffMod(STAT_STRENGTH, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_STRENGTH, BASE_PCT_EXCLUDE_CREATE)), apply);
+ ApplyStatBuffMod(STAT_INTELLECT, CalculatePct(val, GetModifierValue(UNIT_MOD_STAT_INTELLECT, BASE_PCT_EXCLUDE_CREATE)), apply);
+ break;
}
}
@@ -11403,10 +11472,10 @@ InventoryResult Player::CanUseItem(ItemTemplate const* proto) const
if (!proto)
return EQUIP_ERR_ITEM_NOT_FOUND;
- if ((proto->GetFlags2() & ITEM_FLAGS_EXTRA_HORDE_ONLY) && GetTeam() != HORDE)
+ if ((proto->GetFlags2() & ITEM_FLAG2_HORDE_ONLY) && GetTeam() != HORDE)
return EQUIP_ERR_CANT_EQUIP_EVER;
- if ((proto->GetFlags2() & ITEM_FLAGS_EXTRA_ALLIANCE_ONLY) && GetTeam() != ALLIANCE)
+ if ((proto->GetFlags2() & ITEM_FLAG2_ALLIANCE_ONLY) && GetTeam() != ALLIANCE)
return EQUIP_ERR_CANT_EQUIP_EVER;
if ((proto->GetAllowableClass() & getClassMask()) == 0 || (proto->GetAllowableRace() & getRaceMask()) == 0)
@@ -11996,7 +12065,7 @@ void Player::MoveItemToInventory(ItemPosCountVec const& dest, Item* pItem, bool
// in case trade we already have item in other player inventory
pLastItem->SetState(in_characterInventoryDB ? ITEM_CHANGED : ITEM_NEW, this);
- if (pLastItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE))
+ if (pLastItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_BOP_TRADEABLE))
AddTradeableItem(pLastItem);
}
}
@@ -12013,7 +12082,7 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update)
for (uint8 i = 0; i < MAX_BAG_SIZE; ++i)
DestroyItem(slot, i, update);
- if (pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED))
+ if (pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED))
{
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GIFT);
@@ -12086,7 +12155,7 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update)
// Delete rolled money / loot from db.
// MUST be done before RemoveFromWorld() or GetTemplate() fails
if (ItemTemplate const* pTmp = pItem->GetTemplate())
- if (pTmp->GetFlags() & ITEM_PROTO_FLAG_OPENABLE)
+ if (pTmp->GetFlags() & ITEM_FLAG_OPENABLE)
pItem->ItemContainerDeleteLootMoneyAndLootItemsFromDB();
if (IsInWorld() && update)
@@ -13670,11 +13739,11 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
if (menuItemBounds.first == menuItemBounds.second && menuId == GetDefaultGossipMenuForSource(source))
menuItemBounds = sObjectMgr->GetGossipMenuItemsMapBounds(0);
- uint32 npcflags = 0;
+ uint64 npcflags = 0;
if (source->GetTypeId() == TYPEID_UNIT)
{
- npcflags = source->GetUInt32Value(UNIT_NPC_FLAGS);
+ npcflags = source->GetUInt64Value(UNIT_NPC_FLAGS);
if (showQuests && npcflags & UNIT_NPC_FLAG_QUESTGIVER)
PrepareQuestMenu(source->GetGUID());
}
@@ -14115,7 +14184,7 @@ void Player::SendPreparedQuest(ObjectGuid guid)
return;
}
- if (object->GetTypeId() != TYPEID_UNIT || object->ToCreature()->GetUInt32Value(UNIT_NPC_FLAGS) & UNIT_NPC_FLAG_GOSSIP)
+ if (object->GetTypeId() != TYPEID_UNIT || object->GetUInt64Value(UNIT_NPC_FLAGS) & UNIT_NPC_FLAG_GOSSIP)
{
if (quest->IsAutoAccept() && CanAddQuest(quest, true) && CanTakeQuest(quest, true))
AddQuestAndCheckCompletion(quest, object);
@@ -14636,7 +14705,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
DestroyItemCount(obj.ObjectID, obj.Amount, true);
break;
case QUEST_OBJECTIVE_CURRENCY:
- ModifyCurrency(obj.ObjectID, -int32(obj.Amount));
+ ModifyCurrency(obj.ObjectID, -int32(obj.Amount), false, true);
break;
}
}
@@ -17302,12 +17371,19 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder)
_LoadDeclinedNames(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES));
- m_achievementMgr->CheckAllAchievementCriteria(this);
-
_LoadEquipmentSets(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_EQUIPMENT_SETS));
_LoadCUFProfiles(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_CUF_PROFILES));
+ std::unique_ptr<Garrison> garrison = Trinity::make_unique<Garrison>(this);
+ if (garrison->LoadFromDB(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_GARRISON),
+ holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_GARRISON_BLUEPRINTS),
+ holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_GARRISON_BUILDINGS),
+ holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_GARRISON_FOLLOWERS),
+ holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_GARRISON_FOLLOWER_ABILITIES)))
+ _garrison = std::move(garrison);
+
+ m_achievementMgr->CheckAllAchievementCriteria(this);
return true;
}
@@ -17321,19 +17397,19 @@ void Player::_LoadCUFProfiles(PreparedQueryResult result)
// SELECT id, name, frameHeight, frameWidth, sortBy, healthText, boolOptions, unk146, unk147, unk148, unk150, unk152, unk154 FROM character_cuf_profiles WHERE guid = ?
Field* fields = result->Fetch();
- uint8 id = fields[0].GetUInt8();
- std::string name = fields[1].GetString();
- uint16 frameHeight = fields[2].GetUInt16();
- uint16 frameWidth = fields[3].GetUInt16();
- uint8 sortBy = fields[4].GetUInt8();
- uint8 healthText = fields[5].GetUInt8();
- uint32 boolOptions = fields[6].GetUInt32();
- uint8 unk146 = fields[7].GetUInt8();
- uint8 unk147 = fields[8].GetUInt8();
- uint8 unk148 = fields[9].GetUInt8();
- uint16 unk150 = fields[10].GetUInt16();
- uint16 unk152 = fields[11].GetUInt16();
- uint16 unk154 = fields[12].GetUInt16();
+ uint8 id = fields[0].GetUInt8();
+ std::string name = fields[1].GetString();
+ uint16 frameHeight = fields[2].GetUInt16();
+ uint16 frameWidth = fields[3].GetUInt16();
+ uint8 sortBy = fields[4].GetUInt8();
+ uint8 healthText = fields[5].GetUInt8();
+ uint32 boolOptions = fields[6].GetUInt32();
+ uint8 topPoint = fields[7].GetUInt8();
+ uint8 bottomPoint = fields[8].GetUInt8();
+ uint8 leftPoint = fields[9].GetUInt8();
+ uint16 topOffset = fields[10].GetUInt16();
+ uint16 bottomOffset = fields[11].GetUInt16();
+ uint16 leftOffset = fields[12].GetUInt16();
if (id > MAX_CUF_PROFILES)
{
@@ -17341,7 +17417,7 @@ void Player::_LoadCUFProfiles(PreparedQueryResult result)
continue;
}
- _CUFProfiles[id] = new CUFProfile(name, frameHeight, frameWidth, sortBy, healthText, boolOptions, unk146, unk147, unk148, unk150, unk152, unk154);
+ _CUFProfiles[id] = Trinity::make_unique<CUFProfile>(name, frameHeight, frameWidth, sortBy, healthText, boolOptions, topPoint, bottomPoint, leftPoint, topOffset, bottomOffset, leftOffset);
}
while (result->NextRow());
}
@@ -17759,13 +17835,13 @@ Item* Player::_LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, F
remove = true;
}
// "Conjured items disappear if you are logged out for more than 15 minutes"
- else if (timeDiff > 15 * MINUTE && proto->GetFlags() & ITEM_PROTO_FLAG_CONJURED)
+ else if (timeDiff > 15 * MINUTE && proto->GetFlags() & ITEM_FLAG_CONJURED)
{
TC_LOG_DEBUG("entities.player.loading", "Player::_LoadInventory: player (%s, name: '%s', diff: %u) has conjured item (%s, entry: %u) with expired lifetime (15 minutes). Deleting item.",
GetGUID().ToString().c_str(), GetName().c_str(), timeDiff, item->GetGUID().ToString().c_str(), item->GetEntry());
remove = true;
}
- else if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE))
+ else if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE))
{
if (item->GetPlayedTime() > (2 * HOUR))
{
@@ -17776,7 +17852,7 @@ Item* Player::_LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, F
stmt->setUInt64(0, item->GetGUID().GetCounter());
trans->Append(stmt);
- item->RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE);
+ item->RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE);
}
else
{
@@ -17794,11 +17870,11 @@ Item* Player::_LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, F
{
TC_LOG_DEBUG("entities.player.loading", "Player::_LoadInventory: player (%s, name: '%s') has item (%s, entry: %u) with refundable flags, but without data in item_refund_instance. Removing flag.",
GetGUID().ToString().c_str(), GetName().c_str(), item->GetGUID().ToString().c_str(), item->GetEntry());
- item->RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE);
+ item->RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE);
}
}
}
- else if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE))
+ else if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_BOP_TRADEABLE))
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ITEM_BOP_TRADE);
stmt->setUInt64(0, item->GetGUID().GetCounter());
@@ -17820,9 +17896,9 @@ Item* Player::_LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, F
}
else
{
- TC_LOG_DEBUG("entities.player.loading", "Player::_LoadInventory: player (%s, name: '%s') has item (%s, entry: %u) with ITEM_FLAG_BOP_TRADEABLE flag, but without data in item_soulbound_trade_data. Removing flag.",
+ TC_LOG_DEBUG("entities.player.loading", "Player::_LoadInventory: player (%s, name: '%s') has item (%s, entry: %u) with ITEM_FIELD_FLAG_BOP_TRADEABLE flag, but without data in item_soulbound_trade_data. Removing flag.",
GetGUID().ToString().c_str(), GetName().c_str(), item->GetGUID().ToString().c_str(), item->GetEntry());
- item->RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE);
+ item->RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_BOP_TRADEABLE);
}
}
else if (proto->GetHolidayID())
@@ -18509,12 +18585,7 @@ void Player::SetPendingBind(uint32 instanceId, uint32 bindTimer)
void Player::SendRaidInfo()
{
- uint32 counter = 0;
-
- WorldPacket data(SMSG_INSTANCE_INFO, 4);
-
- size_t p_counter = data.wpos();
- data << uint32(counter); // placeholder
+ WorldPackets::Instance::InstanceInfo instanceInfo;
time_t now = time(NULL);
@@ -18525,69 +18596,28 @@ void Player::SendRaidInfo()
if (itr->second.perm)
{
InstanceSave* save = itr->second.save;
- bool isHeroic = save->GetDifficultyID() == DIFFICULTY_10_HC || save->GetDifficultyID() == DIFFICULTY_25_HC;
- uint32 completedEncounters = 0;
- if (Map* map = sMapMgr->FindMap(save->GetMapId(), save->GetInstanceId()))
- if (InstanceScript* instanceScript = ((InstanceMap*)map)->GetInstanceScript())
- completedEncounters = instanceScript->GetCompletedEncounterMask();
- data << uint32(save->GetMapId()); // map id
- data << uint32(save->GetDifficultyID()); // difficulty
- data << uint32(isHeroic); // heroic
- data << uint64(save->GetInstanceId()); // instance id
- data << uint8(1); // expired = 0
- data << uint8(0); // extended = 1
- data << uint32(save->GetResetTime() - now); // reset time
- data << uint32(completedEncounters); // completed encounters mask
- ++counter;
- }
- }
- }
+ WorldPackets::Instance::InstanceLockInfos lockInfos;
- data.put<uint32>(p_counter, counter);
- GetSession()->SendPacket(&data);
-}
-
-/*
-- called on every successful teleportation to a map
-*/
-void Player::SendSavedInstances()
-{
- bool hasBeenSaved = false;
- WorldPacket data;
+ lockInfos.InstanceID = save->GetInstanceId();
+ lockInfos.MapID = save->GetMapId();
+ lockInfos.DifficultyID = save->GetDifficultyID();
+ lockInfos.TimeRemaining = save->GetResetTime() - now;
- for (uint8 i = 0; i < MAX_DIFFICULTY; ++i)
- {
- for (BoundInstancesMap::iterator itr = m_boundInstances[i].begin(); itr != m_boundInstances[i].end(); ++itr)
- {
- if (itr->second.perm) // only permanent binds are sent
- {
- hasBeenSaved = true;
- break;
- }
- }
- }
-
- //Send opcode SMSG_UPDATE_INSTANCE_OWNERSHIP. true or false means, whether you have current raid/heroic instances
- data.Initialize(SMSG_UPDATE_INSTANCE_OWNERSHIP, 4);
- data << uint32(hasBeenSaved);
- GetSession()->SendPacket(&data);
+ lockInfos.CompletedMask = 0;
+ if (Map* map = sMapMgr->FindMap(save->GetMapId(), save->GetInstanceId()))
+ if (InstanceScript* instanceScript = ((InstanceMap*)map)->GetInstanceScript())
+ lockInfos.CompletedMask = instanceScript->GetCompletedEncounterMask();
- if (!hasBeenSaved)
- return;
+ lockInfos.Locked = lockInfos.TimeRemaining <= 0;
+ lockInfos.Extended = false;
- for (uint8 i = 0; i < MAX_DIFFICULTY; ++i)
- {
- for (BoundInstancesMap::iterator itr = m_boundInstances[i].begin(); itr != m_boundInstances[i].end(); ++itr)
- {
- if (itr->second.perm)
- {
- data.Initialize(SMSG_UPDATE_LAST_INSTANCE, 4);
- data << uint32(itr->second.save->GetMapId());
- GetSession()->SendPacket(&data);
+ instanceInfo.LockList.push_back(lockInfos);
}
}
}
+
+ GetSession()->SendPacket(instanceInfo.Write());
}
/// convert the player's binds to the group
@@ -19107,6 +19137,8 @@ void Player::SaveToDB(bool create /*=false*/)
_SaveInstanceTimeRestrictions(trans);
_SaveCurrency(trans);
_SaveCUFProfiles(trans);
+ if (_garrison)
+ _garrison->SaveToDB(trans);
// check if stats should only be saved on logout
// save stats can be out of transaction
@@ -19410,13 +19442,13 @@ void Player::_SaveCUFProfiles(SQLTransaction& trans)
stmt->setUInt16(4, _CUFProfiles[i]->FrameWidth);
stmt->setUInt8(5, _CUFProfiles[i]->SortBy);
stmt->setUInt8(6, _CUFProfiles[i]->HealthText);
- stmt->setUInt32(7, _CUFProfiles[i]->BoolOptions.to_ulong()); // 27 of 32 fields used, fits in an int
- stmt->setUInt8(8, _CUFProfiles[i]->Unk146);
- stmt->setUInt8(9, _CUFProfiles[i]->Unk147);
- stmt->setUInt8(10, _CUFProfiles[i]->Unk148);
- stmt->setUInt16(11, _CUFProfiles[i]->Unk150);
- stmt->setUInt16(12, _CUFProfiles[i]->Unk152);
- stmt->setUInt16(13, _CUFProfiles[i]->Unk154);
+ stmt->setUInt32(7, _CUFProfiles[i]->BoolOptions.to_ulong()); // 25 of 32 fields used, fits in an int
+ stmt->setUInt8(8, _CUFProfiles[i]->TopPoint);
+ stmt->setUInt8(9, _CUFProfiles[i]->BottomPoint);
+ stmt->setUInt8(10, _CUFProfiles[i]->LeftPoint);
+ stmt->setUInt16(11, _CUFProfiles[i]->TopOffset);
+ stmt->setUInt16(12, _CUFProfiles[i]->BottomOffset);
+ stmt->setUInt16(13, _CUFProfiles[i]->LeftOffset);
}
trans->Append(stmt);
@@ -19958,10 +19990,10 @@ void Player::SendExplorationExperience(uint32 Area, uint32 Experience)
GetSession()->SendPacket(WorldPackets::Misc::ExplorationExperience(Experience, Area).Write());
}
-void Player::SendDungeonDifficulty()
+void Player::SendDungeonDifficulty(int32 forcedDifficulty /*= -1*/)
{
WorldPackets::Misc::DungeonDifficultySet dungeonDifficultySet;
- dungeonDifficultySet.DifficultyID = GetDungeonDifficultyID();
+ dungeonDifficultySet.DifficultyID = forcedDifficulty == -1 ? GetDungeonDifficultyID() : forcedDifficulty;
GetSession()->SendPacket(dungeonDifficultySet.Write());
}
@@ -19975,8 +20007,8 @@ void Player::SendRaidDifficulty(bool legacy, int32 forcedDifficulty /*= -1*/)
void Player::SendResetFailedNotify(uint32 /*mapid*/)
{
- WorldPacket data(SMSG_RESET_FAILED_NOTIFY, 4);
- GetSession()->SendPacket(&data);
+ WorldPackets::Instance::ResetFailedNotify data;
+ GetSession()->SendPacket(data.Write());
}
/// Reset all solo instances and optionally send a message on success for each
@@ -20037,9 +20069,9 @@ void Player::ResetInstances(uint8 method, bool isRaid, bool isLegacy)
void Player::SendResetInstanceSuccess(uint32 MapId)
{
- WorldPacket data(SMSG_INSTANCE_RESET, 4);
- data << uint32(MapId);
- GetSession()->SendPacket(&data);
+ WorldPackets::Instance::InstanceReset data;
+ data.MapID = MapId;
+ GetSession()->SendPacket(data.Write());
}
void Player::SendResetInstanceFailed(uint32 reason, uint32 MapId)
@@ -20049,10 +20081,11 @@ void Player::SendResetInstanceFailed(uint32 reason, uint32 MapId)
// 1: There are players offline in your party.
// 2>: There are players in your party attempting to zone into an instance.
*/
- WorldPacket data(SMSG_INSTANCE_RESET_FAILED, 8);
- data << uint32(reason);
- data << uint32(MapId);
- GetSession()->SendPacket(&data);
+
+ WorldPackets::Instance::InstanceResetFailed data;
+ data.MapID = MapId;
+ data.ResetFailedReason = reason;
+ GetSession()->SendPacket(data.Write());
}
/*********************************************************/
@@ -20212,7 +20245,7 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent)
GetSession()->SendPacket(&data);
if (GetGroup())
- SetGroupUpdateFlag(GROUP_UPDATE_PET);
+ SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET);
}
}
@@ -20251,7 +20284,7 @@ void Player::Say(std::string const& text, Language language, WorldObject const*
sScriptMgr->OnPlayerChat(this, CHAT_MSG_SAY, language, _text);
WorldPackets::Chat::Chat packet;
- packet.Initalize(CHAT_MSG_SAY, language, this, this, _text);
+ packet.Initialize(CHAT_MSG_SAY, language, this, this, _text);
SendMessageToSetInRange(packet.Write(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), true);
}
@@ -20261,7 +20294,7 @@ void Player::Yell(std::string const& text, Language language, WorldObject const*
sScriptMgr->OnPlayerChat(this, CHAT_MSG_YELL, language, _text);
WorldPackets::Chat::Chat packet;
- packet.Initalize(CHAT_MSG_YELL, language, this, this, _text);
+ packet.Initialize(CHAT_MSG_YELL, language, this, this, _text);
SendMessageToSetInRange(packet.Write(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL), true);
}
@@ -20271,7 +20304,7 @@ void Player::TextEmote(std::string const& text, WorldObject const* /*= nullptr*/
sScriptMgr->OnPlayerChat(this, CHAT_MSG_EMOTE, LANG_UNIVERSAL, _text);
WorldPackets::Chat::Chat packet;
- packet.Initalize(CHAT_MSG_EMOTE, LANG_UNIVERSAL, this, this, _text);
+ packet.Initialize(CHAT_MSG_EMOTE, LANG_UNIVERSAL, this, this, _text);
SendMessageToSetInRange(packet.Write(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), true, !GetSession()->HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT));
}
@@ -20284,7 +20317,7 @@ void Player::WhisperAddon(std::string const& text, const std::string& prefix, Pl
return;
WorldPackets::Chat::Chat packet;
- packet.Initalize(CHAT_MSG_WHISPER, LANG_ADDON, this, this, text, 0, "", DEFAULT_LOCALE, prefix);
+ packet.Initialize(CHAT_MSG_WHISPER, LANG_ADDON, this, this, text, 0, "", DEFAULT_LOCALE, prefix);
receiver->SendDirectMessage(packet.Write());
}
@@ -20301,14 +20334,14 @@ void Player::Whisper(std::string const& text, Language language, Player* target,
sScriptMgr->OnPlayerChat(this, CHAT_MSG_WHISPER, language, _text, target);
WorldPackets::Chat::Chat packet;
- packet.Initalize(CHAT_MSG_WHISPER, Language(language), this, this, _text);
+ packet.Initialize(CHAT_MSG_WHISPER, Language(language), this, this, _text);
target->SendDirectMessage(packet.Write());
// rest stuff shouldn't happen in case of addon message
if (isAddonMessage)
return;
- packet.Initalize(CHAT_MSG_WHISPER_INFORM, Language(language), target, target, _text);
+ packet.Initialize(CHAT_MSG_WHISPER_INFORM, Language(language), target, target, _text);
SendDirectMessage(packet.Write());
if (!isAcceptWhispers() && !IsGameMaster() && !target->IsGameMaster())
@@ -21235,9 +21268,9 @@ inline bool Player::_StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 c
if (!bStore)
AutoUnequipOffhandIfNeed();
- if (pProto->GetFlags() & ITEM_PROTO_FLAG_REFUNDABLE && crItem->ExtendedCost && pProto->GetMaxStackSize() == 1)
+ if (pProto->GetFlags() & ITEM_FLAG_REFUNDABLE && crItem->ExtendedCost && pProto->GetMaxStackSize() == 1)
{
- it->SetFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE);
+ it->SetFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE);
it->SetRefundRecipient(GetGUID());
it->SetPaidMoney(price);
it->SetPaidExtendedCost(crItem->ExtendedCost);
@@ -21427,7 +21460,7 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin
return false;
}
- if (!IsGameMaster() && ((pProto->GetFlags2() & ITEM_FLAGS_EXTRA_HORDE_ONLY && GetTeam() == ALLIANCE) || (pProto->GetFlags2() == ITEM_FLAGS_EXTRA_ALLIANCE_ONLY && GetTeam() == HORDE)))
+ if (!IsGameMaster() && ((pProto->GetFlags2() & ITEM_FLAG2_HORDE_ONLY && GetTeam() == ALLIANCE) || (pProto->GetFlags2() == ITEM_FLAG2_ALLIANCE_ONLY && GetTeam() == HORDE)))
return false;
Creature* creature = GetNPCIfCanInteractWith(vendorguid, UNIT_NPC_FLAG_VENDOR);
@@ -22276,7 +22309,7 @@ void Player::UpdateVisibilityOf(T* target, UpdateData& data, std::set<Unit*>& vi
m_clientGUIDs.erase(target->GetGUID());
#ifdef TRINITY_DEBUG
- TC_LOG_DEBUG("maps", "Object %u (%s) is out of range for %s. Distance = %f", target->GetGUID().ToString().c_str(), target->GetEntry(), GetGUID().ToString().c_str(), GetDistance(target));
+ TC_LOG_DEBUG("maps", "Object %s (%u) is out of range for %s. Distance = %f", target->GetGUID().ToString().c_str(), target->GetEntry(), GetGUID().ToString().c_str(), GetDistance(target));
#endif
}
}
@@ -22288,7 +22321,7 @@ void Player::UpdateVisibilityOf(T* target, UpdateData& data, std::set<Unit*>& vi
UpdateVisibilityOf_helper(m_clientGUIDs, target, visibleNow);
#ifdef TRINITY_DEBUG
- TC_LOG_DEBUG("maps", "Object %u (%s) is visible now for %s. Distance = %f", target->GetGUID().ToString().c_str(), target->GetEntry(), GetGUID().ToString().c_str(), GetDistance(target));
+ TC_LOG_DEBUG("maps", "Object %s (%u) is visible now for %s. Distance = %f", target->GetGUID().ToString().c_str(), target->GetEntry(), GetGUID().ToString().c_str(), GetDistance(target));
#endif
}
}
@@ -22610,11 +22643,23 @@ void Player::SendInitialPacketsAfterAddToMap()
if (GetMap()->IsRaid())
{
- DifficultyEntry const* difficulty = sDifficultyStore.AssertEntry(GetMap()->GetDifficultyID());
- SendRaidDifficulty((difficulty->Flags & DIFFICULTY_FLAG_LEGACY) != 0, GetMap()->GetDifficultyID());
+ m_prevMapDifficulty = GetMap()->GetDifficultyID();
+ DifficultyEntry const* difficulty = sDifficultyStore.AssertEntry(m_prevMapDifficulty);
+ SendRaidDifficulty((difficulty->Flags & DIFFICULTY_FLAG_LEGACY) != 0, m_prevMapDifficulty);
}
else if (GetMap()->IsNonRaidDungeon())
- SendDungeonDifficulty();
+ {
+ m_prevMapDifficulty = GetMap()->GetDifficultyID();
+ SendDungeonDifficulty(m_prevMapDifficulty);
+ }
+ else if (!GetMap()->Instanceable())
+ {
+ DifficultyEntry const* difficulty = sDifficultyStore.AssertEntry(m_prevMapDifficulty);
+ SendRaidDifficulty((difficulty->Flags & DIFFICULTY_FLAG_LEGACY) != 0);
+ }
+
+ if (_garrison)
+ _garrison->SendRemoteInfo();
}
void Player::SendUpdateToOutOfRangeGroupMembers()
@@ -22625,9 +22670,8 @@ void Player::SendUpdateToOutOfRangeGroupMembers()
group->UpdatePlayerOutOfRange(this);
m_groupUpdateMask = GROUP_UPDATE_FLAG_NONE;
- m_auraRaidUpdateMask = 0;
if (Pet* pet = GetPet())
- pet->ResetAuraUpdateMaskForRaid();
+ pet->ResetGroupUpdateFlag();
}
void Player::SendTransferAborted(uint32 mapid, TransferAbortReason reason, uint8 arg)
@@ -22667,7 +22711,7 @@ void Player::SendInstanceResetWarning(uint32 mapid, Difficulty difficulty, uint3
void Player::ApplyEquipCooldown(Item* pItem)
{
- if (pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_PROTO_FLAG_NO_EQUIP_COOLDOWN))
+ if (pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_NO_EQUIP_COOLDOWN))
return;
ItemTemplate const* proto = pItem->GetTemplate();
@@ -22686,10 +22730,10 @@ void Player::ApplyEquipCooldown(Item* pItem)
GetSpellHistory()->AddCooldown(effectData->SpellID, pItem->GetEntry(), std::chrono::seconds(30));
- WorldPacket data(SMSG_ITEM_COOLDOWN, 12);
- data << pItem->GetGUID();
- data << uint32(effectData->SpellID);
- GetSession()->SendPacket(&data);
+ WorldPackets::Item::ItemCooldown data;
+ data.ItemGuid = pItem->GetGUID();
+ data.SpellID = effectData->SpellID;
+ GetSession()->SendPacket(data.Write());
}
}
@@ -23057,7 +23101,7 @@ void Player::SetMonthlyQuestStatus(uint32 quest_id)
m_MonthlyQuestChanged = true;
}
-void Player::ResetDailyQuestStatus()
+void Player::DailyReset()
{
for (uint32 questId : GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS))
if (uint32 questBit = GetQuestUniqueBitFlag(questId))
@@ -23070,6 +23114,9 @@ void Player::ResetDailyQuestStatus()
// DB data deleted in caller
m_DailyQuestChanged = false;
m_lastDailyQuestTime = 0;
+
+ if (_garrison)
+ _garrison->ResetFollowerActivationLimit();
}
void Player::ResetWeeklyQuestStatus()
@@ -23351,7 +23398,7 @@ void Player::UpdateForQuestWorldObjects()
continue;
// check if this unit requires quest specific flags
- if (!obj->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK))
+ if (!obj->HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK))
continue;
SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(obj->GetEntry());
@@ -24837,7 +24884,7 @@ InventoryResult Player::CanEquipUniqueItem(Item* pItem, uint8 eslot, uint32 limi
InventoryResult Player::CanEquipUniqueItem(ItemTemplate const* itemProto, uint8 except_slot, uint32 limit_count) const
{
// check unique-equipped on item
- if (itemProto->GetFlags() & ITEM_PROTO_FLAG_UNIQUE_EQUIPPED)
+ if (itemProto->GetFlags() & ITEM_FLAG_UNIQUE_EQUIPPED)
{
// there is an equip limit on this item
if (HasItemOrGemWithIdEquipped(itemProto->GetId(), 1, except_slot))
@@ -25132,7 +25179,7 @@ bool Player::IsPetNeedBeTemporaryUnsummoned() const
bool Player::CanSeeSpellClickOn(Creature const* c) const
{
- if (!c->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK))
+ if (!c->HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK))
return false;
SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(c->GetEntry());
@@ -25696,10 +25743,10 @@ void Player::DeleteRefundReference(ObjectGuid it)
void Player::SendRefundInfo(Item* item)
{
- // This function call unsets ITEM_FLAGS_REFUNDABLE if played time is over 2 hours.
+ // This function call unsets ITEM_FIELD_FLAG_REFUNDABLE if played time is over 2 hours.
item->UpdatePlayedTime(this);
- if (!item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE))
+ if (!item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE))
{
TC_LOG_DEBUG("entities.player.items", "Item refund: item not refundable!");
return;
@@ -25847,7 +25894,7 @@ void Player::SendItemRefundResult(Item* item, ItemExtendedCostEntry const* iece,
void Player::RefundItem(Item* item)
{
- if (!item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE))
+ if (!item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE))
{
TC_LOG_DEBUG("entities.player.items", "Item refund: item not refundable!");
return;
@@ -25935,7 +25982,7 @@ void Player::RefundItem(Item* item)
uint32 count = iece->RequiredCurrencyCount[i];
uint32 currencyid = iece->RequiredCurrency[i];
if (count && currencyid)
- ModifyCurrency(currencyid, count);
+ ModifyCurrency(currencyid, count, true, true);
}
// Grant back money
@@ -26151,6 +26198,13 @@ void Player::OnCombatExit()
m_holyPowerRegenTimerCount = 20000; // first charge of holy power decays 20 seconds after leaving combat
}
+void Player::CreateGarrison(uint32 garrSiteId)
+{
+ std::unique_ptr<Garrison> garrison(new Garrison(this));
+ if (garrison->Create(garrSiteId))
+ _garrison = std::move(garrison);
+}
+
void Player::SendMovementSetCanTransitionBetweenSwimAndFly(bool apply)
{
WorldPackets::Movement::MoveSetFlag packet(apply ? SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY : SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY);
@@ -26217,9 +26271,9 @@ std::string Player::GetMapAreaAndZoneString()
std::string zoneName = "Unknown";
if (AreaTableEntry const* area = GetAreaEntryByAreaID(areaId))
{
- areaName = area->ZoneName;
+ areaName = area->AreaName_lang;
if (AreaTableEntry const* zone = GetAreaEntryByAreaID(area->ParentAreaID))
- zoneName = zone->ZoneName;
+ zoneName = zone->AreaName_lang;
}
std::ostringstream str;
@@ -26301,7 +26355,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy
pet->SetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE, getFaction());
pet->setPowerType(POWER_MANA);
- pet->SetUInt32Value(UNIT_NPC_FLAGS, 0);
+ pet->SetUInt64Value(UNIT_NPC_FLAGS, 0);
pet->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
pet->InitStatsForLevel(getLevel());
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index d61b7845abf..5bae50edb68 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -47,6 +47,7 @@ class ReputationMgr;
class Channel;
class Creature;
class DynamicObject;
+class Garrison;
class Group;
class Guild;
class OutdoorPvP;
@@ -206,8 +207,9 @@ enum CUFBoolOptions
CUF_DISPLAY_POWER_BAR,
CUF_DISPLAY_BORDER,
CUF_USE_CLASS_COLORS,
- CUF_DISPLAY_NON_BOSS_DEBUFFS,
CUF_DISPLAY_HORIZONTAL_GROUPS,
+ CUF_DISPLAY_NON_BOSS_DEBUFFS,
+ CUF_DYNAMIC_POSITION,
CUF_LOCKED,
CUF_SHOWN,
CUF_AUTO_ACTIVATE_2_PLAYERS,
@@ -221,9 +223,6 @@ enum CUFBoolOptions
CUF_AUTO_ACTIVATE_SPEC_2,
CUF_AUTO_ACTIVATE_PVP,
CUF_AUTO_ACTIVATE_PVE,
- CUF_UNK_145,
- CUF_UNK_156,
- CUF_UNK_157,
// The unks is _LOCKED and _SHOWN and _DYNAMIC, unknown order
@@ -235,32 +234,32 @@ struct CUFProfile
{
CUFProfile() : ProfileName(), BoolOptions() // might want to change default value for options
{
- FrameHeight = 0;
- FrameWidth = 0;
- SortBy = 0;
- HealthText = 0;
- Unk146 = 0;
- Unk147 = 0;
- Unk148 = 0;
- Unk150 = 0;
- Unk152 = 0;
- Unk154 = 0;
+ FrameHeight = 0;
+ FrameWidth = 0;
+ SortBy = 0;
+ HealthText = 0;
+ TopPoint = 0;
+ BottomPoint = 0;
+ LeftPoint = 0;
+ TopOffset = 0;
+ BottomOffset = 0;
+ LeftOffset = 0;
}
CUFProfile(const std::string& name, uint16 frameHeight, uint16 frameWidth, uint8 sortBy, uint8 healthText, uint32 boolOptions,
- uint8 unk146, uint8 unk147, uint8 unk148, uint16 unk150, uint16 unk152, uint16 unk154)
+ uint8 topPoint, uint8 bottomPoint, uint8 leftPoint, uint16 topOffset, uint16 bottomOffset, uint16 leftOffset)
: ProfileName(name), BoolOptions((int)boolOptions)
{
- FrameHeight = frameHeight;
- FrameWidth = frameWidth;
- SortBy = sortBy;
- HealthText = healthText;
- Unk146 = unk146;
- Unk147 = unk147;
- Unk148 = unk148;
- Unk150 = unk150;
- Unk152 = unk152;
- Unk154 = unk154;
+ FrameHeight = frameHeight;
+ FrameWidth = frameWidth;
+ SortBy = sortBy;
+ HealthText = healthText;
+ TopPoint = topPoint;
+ BottomPoint = bottomPoint;
+ LeftPoint = leftPoint;
+ TopOffset = topOffset;
+ BottomOffset = bottomOffset;
+ LeftOffset = leftOffset;
}
std::string ProfileName;
@@ -269,15 +268,15 @@ struct CUFProfile
uint8 SortBy;
uint8 HealthText;
- // LeftAlign, TopAlight, BottomAllign (unk order)
- uint8 Unk146;
- uint8 Unk147;
- uint8 Unk148;
+ // LeftAlign, TopAlight, BottomAlign
+ uint8 TopPoint;
+ uint8 BottomPoint;
+ uint8 LeftPoint;
- // LeftOffset, TopOffset and BottomOffset (unk order)
- uint16 Unk150;
- uint16 Unk152;
- uint16 Unk154;
+ // LeftOffset, TopOffset and BottomOffset
+ uint16 TopOffset;
+ uint16 BottomOffset;
+ uint16 LeftOffset;
std::bitset<CUF_BOOL_OPTIONS_COUNT> BoolOptions;
@@ -310,6 +309,7 @@ enum ActionButtonType
ACTION_BUTTON_DROPDOWN = 0x30,
ACTION_BUTTON_MACRO = 0x40,
ACTION_BUTTON_CMACRO = ACTION_BUTTON_C | ACTION_BUTTON_MACRO,
+ ACTION_BUTTON_MOUNT = 0x60,
ACTION_BUTTON_ITEM = 0x80
};
@@ -484,9 +484,9 @@ struct Runes
struct EnchantDuration
{
- EnchantDuration() : item(NULL), slot(MAX_ENCHANTMENT_SLOT), leftduration(0) { };
+ EnchantDuration() : item(NULL), slot(MAX_ENCHANTMENT_SLOT), leftduration(0) { }
EnchantDuration(Item* _item, EnchantmentSlot _slot, uint32 _leftduration) : item(_item), slot(_slot),
- leftduration(_leftduration){ ASSERT(item); };
+ leftduration(_leftduration){ ASSERT(item); }
Item* item;
EnchantmentSlot slot;
@@ -918,7 +918,8 @@ enum TeleportToOptions
TELE_TO_NOT_LEAVE_TRANSPORT = 0x02,
TELE_TO_NOT_LEAVE_COMBAT = 0x04,
TELE_TO_NOT_UNSUMMON_PET = 0x08,
- TELE_TO_SPELL = 0x10
+ TELE_TO_SPELL = 0x10,
+ TELE_TO_SEAMLESS = 0x20
};
/// Type of environmental damages
@@ -983,6 +984,11 @@ enum PlayerLoginQueryIndex
PLAYER_LOGIN_QUERY_LOAD_VOID_STORAGE,
PLAYER_LOGIN_QUERY_LOAD_CURRENCY,
PLAYER_LOGIN_QUERY_LOAD_CUF_PROFILES,
+ PLAYER_LOGIN_QUERY_LOAD_GARRISON,
+ PLAYER_LOGIN_QUERY_LOAD_GARRISON_BLUEPRINTS,
+ PLAYER_LOGIN_QUERY_LOAD_GARRISON_BUILDINGS,
+ PLAYER_LOGIN_QUERY_LOAD_GARRISON_FOLLOWERS,
+ PLAYER_LOGIN_QUERY_LOAD_GARRISON_FOLLOWER_ABILITIES,
MAX_PLAYER_LOGIN_QUERY
};
@@ -1319,7 +1325,6 @@ private:
PlayerTalentInfo(PlayerTalentInfo const&);
};
-
class Player : public Unit, public GridObject<Player>
{
friend class WorldSession;
@@ -1364,7 +1369,7 @@ class Player : public Unit, public GridObject<Player>
void SendInstanceResetWarning(uint32 mapid, Difficulty difficulty, uint32 time);
bool CanInteractWithQuestGiver(Object* questGiver);
- Creature* GetNPCIfCanInteractWith(ObjectGuid guid, uint32 npcflagmask);
+ Creature* GetNPCIfCanInteractWith(ObjectGuid guid, uint64 npcflagmask);
GameObject* GetGameObjectIfCanInteractWith(ObjectGuid guid, GameobjectTypes type) const;
void ToggleAFK();
@@ -1676,7 +1681,7 @@ class Player : public Unit, public GridObject<Player>
void SetWeeklyQuestStatus(uint32 quest_id);
void SetMonthlyQuestStatus(uint32 quest_id);
void SetSeasonalQuestStatus(uint32 quest_id);
- void ResetDailyQuestStatus();
+ void DailyReset();
void ResetWeeklyQuestStatus();
void ResetMonthlyQuestStatus();
void ResetSeasonalQuestStatus(uint16 event_id);
@@ -1732,8 +1737,9 @@ class Player : public Unit, public GridObject<Player>
void AddTimedQuest(uint32 questId) { m_timedquests.insert(questId); }
void RemoveTimedQuest(uint32 questId) { m_timedquests.erase(questId); }
- void SaveCUFProfile(uint8 id, CUFProfile* profile) { delete _CUFProfiles[id]; _CUFProfiles[id] = profile; } ///> Replaces a CUF profile at position 0-4
- CUFProfile* GetCUFProfile(uint8 id) const { return _CUFProfiles[id]; } ///> Retrieves a CUF profile at position 0-4
+ void SaveCUFProfile(uint8 id, std::nullptr_t) { _CUFProfiles[id] = nullptr; } ///> Empties a CUF profile at position 0-4
+ void SaveCUFProfile(uint8 id, std::unique_ptr<CUFProfile> profile) { _CUFProfiles[id] = std::move(profile); } ///> Replaces a CUF profile at position 0-4
+ CUFProfile* GetCUFProfile(uint8 id) const { return _CUFProfiles[id].get(); } ///> Retrieves a CUF profile at position 0-4
uint8 GetCUFProfilesCount() const
{
uint8 count = 0;
@@ -2051,7 +2057,6 @@ class Player : public Unit, public GridObject<Player>
uint32 GetSpellByProto(ItemTemplate* proto);
float GetHealthBonusFromStamina();
- float GetManaBonusFromIntellect();
bool UpdateStats(Stats stat) override;
bool UpdateAllStats() override;
@@ -2127,7 +2132,7 @@ class Player : public Unit, public GridObject<Player>
void SendAutoRepeatCancel(Unit* target);
void SendExplorationExperience(uint32 Area, uint32 Experience);
- void SendDungeonDifficulty();
+ void SendDungeonDifficulty(int32 forcedDifficulty = -1);
void SendRaidDifficulty(bool legacy, int32 forcedDifficulty = -1);
void ResetInstances(uint8 method, bool isRaid, bool isLegacy);
void SendResetInstanceSuccess(uint32 MapId);
@@ -2138,7 +2143,7 @@ class Player : public Unit, public GridObject<Player>
bool UpdatePosition(const Position &pos, bool teleport = false) { return UpdatePosition(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teleport); }
void UpdateUnderwaterState(Map* m, float x, float y, float z) override;
- void SendMessageToSet(WorldPacket const* data, bool self) override {SendMessageToSetInRange(data, GetVisibilityRange(), self); };// overwrite Object::SendMessageToSet
+ void SendMessageToSet(WorldPacket const* data, bool self) override {SendMessageToSetInRange(data, GetVisibilityRange(), self); }// overwrite Object::SendMessageToSet
void SendMessageToSetInRange(WorldPacket const* data, float dist, bool self) override; // overwrite Object::SendMessageToSetInRange
void SendMessageToSetInRange(WorldPacket const* data, float dist, bool self, bool own_team_only);
void SendMessageToSet(WorldPacket const* data, Player const* skipped_rcvr) override;
@@ -2188,6 +2193,7 @@ class Player : public Unit, public GridObject<Player>
bool IsBeingTeleported() const { return mSemaphoreTeleport_Near || mSemaphoreTeleport_Far; }
bool IsBeingTeleportedNear() const { return mSemaphoreTeleport_Near; }
bool IsBeingTeleportedFar() const { return mSemaphoreTeleport_Far; }
+ bool IsBeingTeleportedSeamlessly() const { return IsBeingTeleportedFar() && m_teleport_options & TELE_TO_SEAMLESS; }
void SetSemaphoreTeleportNear(bool semphsetting) { mSemaphoreTeleport_Near = semphsetting; }
void SetSemaphoreTeleportFar(bool semphsetting) { mSemaphoreTeleport_Far = semphsetting; }
void ProcessDelayedOperations();
@@ -2493,7 +2499,6 @@ class Player : public Unit, public GridObject<Player>
void SetPendingBind(uint32 instanceId, uint32 bindTimer);
bool HasPendingBind() const { return _pendingBindId > 0; }
void SendRaidInfo();
- void SendSavedInstances();
static void ConvertInstancesToGroup(Player* player, Group* group, bool switchLeader);
bool Satisfy(AccessRequirement const* ar, uint32 target_map, bool report = false);
bool CheckInstanceLoginValid();
@@ -2517,8 +2522,7 @@ class Player : public Unit, public GridObject<Player>
uint8 GetSubGroup() const { return m_group.getSubGroup(); }
uint32 GetGroupUpdateFlag() const { return m_groupUpdateMask; }
void SetGroupUpdateFlag(uint32 flag) { m_groupUpdateMask |= flag; }
- uint64 GetAuraUpdateMaskForRaid() const { return m_auraRaidUpdateMask; }
- void SetAuraUpdateMaskForRaid(uint8 slot) { m_auraRaidUpdateMask |= (uint64(1) << slot); }
+ void RemoveGroupUpdateFlag(uint32 flag) { m_groupUpdateMask &= ~flag; }
Player* GetNextRandomRaidMember(float radius);
PartyResult CanUninviteFromGroup(ObjectGuid guidMember = ObjectGuid::Empty) const;
@@ -2624,6 +2628,9 @@ class Player : public Unit, public GridObject<Player>
void OnCombatExit();
+ void CreateGarrison(uint32 garrSiteId);
+ Garrison* GetGarrison() { return _garrison.get(); }
+
protected:
// Gamemaster whisper whitelist
GuidList WhisperList;
@@ -2753,7 +2760,7 @@ class Player : public Unit, public GridObject<Player>
Difficulty m_dungeonDifficulty;
Difficulty m_raidDifficulty;
Difficulty m_legacyRaidDifficulty;
- Difficulty m_raidMapDifficulty;
+ Difficulty m_prevMapDifficulty;
uint32 m_atLoginFlags;
@@ -2881,7 +2888,6 @@ class Player : public Unit, public GridObject<Player>
GroupReference m_originalGroup;
Group* m_groupInvite;
uint32 m_groupUpdateMask;
- uint64 m_auraRaidUpdateMask;
bool m_bPassOnGroupLoot;
// last used pet number (for BG's)
@@ -2904,7 +2910,7 @@ class Player : public Unit, public GridObject<Player>
uint8 m_grantableLevels;
- CUFProfile* _CUFProfiles[MAX_CUF_PROFILES];
+ std::array<std::unique_ptr<CUFProfile>, MAX_CUF_PROFILES> _CUFProfiles = {};
private:
// internal common parts for CanStore/StoreItem functions
@@ -2973,6 +2979,8 @@ class Player : public Unit, public GridObject<Player>
uint32 _activeCheats;
uint32 _maxPersonalArenaRate;
+
+ std::unique_ptr<Garrison> _garrison;
};
void AddItemsSetItem(Player* player, Item* item);
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp
index 81497029e55..e61c23c8c37 100644
--- a/src/server/game/Entities/Transport/Transport.cpp
+++ b/src/server/game/Entities/Transport/Transport.cpp
@@ -36,7 +36,7 @@
Transport::Transport() : GameObject(),
_transportInfo(NULL), _isMoving(true), _pendingStop(false),
_triggeredArrivalEvent(false), _triggeredDepartureEvent(false),
- _passengerTeleportItr(_passengers.begin()), _delayedAddModel(false)
+ _passengerTeleportItr(_passengers.begin()), _delayedAddModel(false), _delayedTeleport(false)
{
m_updateFlag = UPDATEFLAG_TRANSPORT | UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_ROTATION;
}
@@ -231,6 +231,14 @@ void Transport::Update(uint32 diff)
sScriptMgr->OnTransportUpdate(this, diff);
}
+void Transport::DelayedUpdate(uint32 /*diff*/)
+{
+ if (GetKeyFrames().size() <= 1)
+ return;
+
+ DelayedTeleportTransport();
+}
+
void Transport::AddPassenger(WorldObject* passenger)
{
if (!IsInWorld())
@@ -607,36 +615,8 @@ bool Transport::TeleportTransport(uint32 newMapid, float x, float y, float z, fl
if (oldMap->GetId() != newMapid)
{
- Map* newMap = sMapMgr->CreateBaseMap(newMapid);
+ _delayedTeleport = true;
UnloadStaticPassengers();
- GetMap()->RemoveFromMap<Transport>(this, false);
- SetMap(newMap);
-
- for (_passengerTeleportItr = _passengers.begin(); _passengerTeleportItr != _passengers.end();)
- {
- WorldObject* obj = (*_passengerTeleportItr++);
-
- float destX, destY, destZ, destO;
- obj->m_movementInfo.transport.pos.GetPosition(destX, destY, destZ, destO);
- TransportBase::CalculatePassengerPosition(destX, destY, destZ, &destO, x, y, z, o);
-
- switch (obj->GetTypeId())
- {
- case TYPEID_PLAYER:
- if (!obj->ToPlayer()->TeleportTo(newMapid, destX, destY, destZ, destO, TELE_TO_NOT_LEAVE_TRANSPORT))
- RemovePassenger(obj);
- break;
- case TYPEID_DYNAMICOBJECT:
- obj->AddObjectToRemoveList();
- break;
- default:
- RemovePassenger(obj);
- break;
- }
- }
-
- Relocate(x, y, z, o);
- GetMap()->AddToMap<Transport>(this);
return true;
}
else
@@ -659,6 +639,48 @@ bool Transport::TeleportTransport(uint32 newMapid, float x, float y, float z, fl
}
}
+void Transport::DelayedTeleportTransport()
+{
+ if (!_delayedTeleport)
+ return;
+
+ _delayedTeleport = false;
+ Map* newMap = sMapMgr->CreateBaseMap(_nextFrame->Node->MapID);
+ GetMap()->RemoveFromMap<Transport>(this, false);
+ SetMap(newMap);
+
+ float x = _nextFrame->Node->Loc.X,
+ y = _nextFrame->Node->Loc.Y,
+ z = _nextFrame->Node->Loc.Z,
+ o =_nextFrame->InitialOrientation;
+
+ for (_passengerTeleportItr = _passengers.begin(); _passengerTeleportItr != _passengers.end();)
+ {
+ WorldObject* obj = (*_passengerTeleportItr++);
+
+ float destX, destY, destZ, destO;
+ obj->m_movementInfo.transport.pos.GetPosition(destX, destY, destZ, destO);
+ TransportBase::CalculatePassengerPosition(destX, destY, destZ, &destO, x, y, z, o);
+
+ switch (obj->GetTypeId())
+ {
+ case TYPEID_PLAYER:
+ if (!obj->ToPlayer()->TeleportTo(_nextFrame->Node->MapID, destX, destY, destZ, destO, TELE_TO_NOT_LEAVE_TRANSPORT))
+ RemovePassenger(obj);
+ break;
+ case TYPEID_DYNAMICOBJECT:
+ obj->AddObjectToRemoveList();
+ break;
+ default:
+ RemovePassenger(obj);
+ break;
+ }
+ }
+
+ Relocate(x, y, z, o);
+ GetMap()->AddToMap<Transport>(this);
+}
+
void Transport::UpdatePassengerPositions(PassengerSet& passengers)
{
for (PassengerSet::iterator itr = passengers.begin(); itr != passengers.end(); ++itr)
@@ -697,6 +719,7 @@ void Transport::UpdatePassengerPositions(PassengerSet& passengers)
break;
case TYPEID_GAMEOBJECT:
GetMap()->GameObjectRelocation(passenger->ToGameObject(), x, y, z, o, false);
+ passenger->ToGameObject()->RelocateStationaryPosition(x, y, z, o);
break;
case TYPEID_DYNAMICOBJECT:
GetMap()->DynamicObjectRelocation(passenger->ToDynObject(), x, y, z, o);
diff --git a/src/server/game/Entities/Transport/Transport.h b/src/server/game/Entities/Transport/Transport.h
index 193e32300c0..d6598a0036c 100644
--- a/src/server/game/Entities/Transport/Transport.h
+++ b/src/server/game/Entities/Transport/Transport.h
@@ -39,6 +39,7 @@ class Transport : public GameObject, public TransportBase
void CleanupsBeforeDelete(bool finalCleanup = true) override;
void Update(uint32 diff) override;
+ void DelayedUpdate(uint32 diff);
void BuildUpdate(UpdateDataMapType& data_map) override;
@@ -103,6 +104,7 @@ class Transport : public GameObject, public TransportBase
void MoveToNextWaypoint();
float CalculateSegmentPos(float perc);
bool TeleportTransport(uint32 newMapid, float x, float y, float z, float o);
+ void DelayedTeleportTransport();
void UpdatePassengerPositions(PassengerSet& passengers);
void DoEventIfAny(KeyFrame const& node, bool departure);
@@ -127,6 +129,7 @@ class Transport : public GameObject, public TransportBase
PassengerSet _staticPassengers;
bool _delayedAddModel;
+ bool _delayedTeleport;
};
#endif
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index e9af35ff952..7cc25c5a5a1 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -117,7 +117,6 @@ bool Player::UpdateStats(Stats stat)
UpdateMaxHealth();
break;
case STAT_INTELLECT:
- UpdateMaxPower(POWER_MANA);
UpdateAllSpellCritChances();
UpdateArmor(); //SPELL_AURA_MOD_RESISTANCE_OF_INTELLECT_PERCENT, only armor currently
break;
@@ -155,12 +154,18 @@ bool Player::UpdateStats(Stats stat)
void Player::ApplySpellPowerBonus(int32 amount, bool apply)
{
+ if (HasAuraType(SPELL_AURA_OVERRIDE_SPELL_POWER_BY_AP_PCT))
+ return;
+
apply = _ModifyUInt32(apply, m_baseSpellPower, amount);
// For speed just update for client
ApplyModUInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS, amount, apply);
for (int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i)
ApplyModUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, amount, apply);
+
+ if (HasAuraType(SPELL_AURA_OVERRIDE_ATTACK_POWER_BY_SP_PCT))
+ UpdateAttackPowerAndDamage();
}
void Player::UpdateSpellDamageAndHealingBonus()
@@ -172,6 +177,9 @@ void Player::UpdateSpellDamageAndHealingBonus()
// Get damage bonus for all schools
for (int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i)
SetStatInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS+i, SpellBaseDamageBonusDone(SpellSchoolMask(1 << i)));
+
+ if (HasAuraType(SPELL_AURA_OVERRIDE_ATTACK_POWER_BY_SP_PCT))
+ UpdateAttackPowerAndDamage();
}
bool Player::UpdateAllStats()
@@ -266,17 +274,6 @@ float Player::GetHealthBonusFromStamina()
return stamina * ratio;
}
-float Player::GetManaBonusFromIntellect()
-{
- // Taken from PaperDollFrame.lua - 4.3.4.15595
- float intellect = GetStat(STAT_INTELLECT);
-
- float baseInt = std::min(20.0f, intellect);
- float moreInt = intellect - baseInt;
-
- return baseInt + (moreInt * 15.0f);
-}
-
void Player::UpdateMaxHealth()
{
UnitMods unitMod = UNIT_MOD_HEALTH;
@@ -293,11 +290,9 @@ void Player::UpdateMaxPower(Powers power)
{
UnitMods unitMod = UnitMods(UNIT_MOD_POWER_START + power);
- float bonusPower = (power == POWER_MANA && GetCreatePowers(power) > 0) ? GetManaBonusFromIntellect() : 0;
-
float value = GetModifierValue(unitMod, BASE_VALUE) + GetCreatePowers(power);
value *= GetModifierValue(unitMod, BASE_PCT);
- value += GetModifierValue(unitMod, TOTAL_VALUE) + bonusPower;
+ value += GetModifierValue(unitMod, TOTAL_VALUE);
value *= GetModifierValue(unitMod, TOTAL_PCT);
SetMaxPower(power, uint32(value));
@@ -312,13 +307,17 @@ void Player::UpdateAttackPowerAndDamage(bool ranged)
UnitMods unitMod = ranged ? UNIT_MOD_ATTACK_POWER_RANGED : UNIT_MOD_ATTACK_POWER;
uint16 index = UNIT_FIELD_ATTACK_POWER;
+ uint16 index_mod = UNIT_FIELD_ATTACK_POWER_MOD_POS;
+ uint16 index_mult = UNIT_FIELD_ATTACK_POWER_MULTIPLIER;
if (ranged)
{
index = UNIT_FIELD_RANGED_ATTACK_POWER;
+ index_mod = UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS;
+ index_mult = UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER;
val2 = (level + std::max(GetStat(STAT_AGILITY), 0.0f)) * entry->RangedAttackPowerPerAgility;
}
- else
+ else if (!HasAuraType(SPELL_AURA_OVERRIDE_ATTACK_POWER_BY_SP_PCT))
{
float strengthValue = std::max(GetStat(STAT_STRENGTH) * entry->AttackPowerPerStrength, 0.0f);
float agilityValue = std::max(GetStat(STAT_AGILITY) * entry->AttackPowerPerAgility, 0.0f);
@@ -330,11 +329,20 @@ void Player::UpdateAttackPowerAndDamage(bool ranged)
val2 = strengthValue + agilityValue;
}
+ else
+ {
+ int32 minSpellPower = GetInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS);
+ for (int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i)
+ minSpellPower = std::min(minSpellPower, GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i));
+
+ val2 = CalculatePct(float(minSpellPower), GetFloatValue(PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT));
+ }
SetModifierValue(unitMod, BASE_VALUE, val2);
float base_attPower = GetModifierValue(unitMod, BASE_VALUE) * GetModifierValue(unitMod, BASE_PCT);
float attPowerMod = GetModifierValue(unitMod, TOTAL_VALUE);
+ float attPowerMultiplier = GetModifierValue(unitMod, TOTAL_PCT) - 1.0f;
//add dynamic flat mods
if (!ranged)
@@ -346,6 +354,8 @@ void Player::UpdateAttackPowerAndDamage(bool ranged)
}
SetInt32Value(index, (uint32)base_attPower); //UNIT_FIELD_(RANGED)_ATTACK_POWER field
+ SetInt32Value(index_mod, (uint32)attPowerMod); //UNIT_FIELD_(RANGED)_ATTACK_POWER_MOD_POS field
+ SetFloatValue(index_mult, attPowerMultiplier); //UNIT_FIELD_(RANGED)_ATTACK_POWER_MULTIPLIER field
Pet* pet = GetPet(); //update pet's AP
Guardian* guardian = GetGuardianPet();
@@ -361,7 +371,9 @@ void Player::UpdateAttackPowerAndDamage(bool ranged)
UpdateDamagePhysical(BASE_ATTACK);
if (CanDualWield() && haveOffhandWeapon()) //allow update offhand damage only if player knows DualWield Spec and has equipped offhand weapon
UpdateDamagePhysical(OFF_ATTACK);
- if (getClass() == CLASS_SHAMAN || getClass() == CLASS_PALADIN) // mental quickness
+ if (HasAuraType(SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER) ||
+ HasAuraType(SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER) ||
+ HasAuraType(SPELL_AURA_OVERRIDE_SPELL_POWER_BY_AP_PCT))
UpdateSpellDamageAndHealingBonus();
if (pet && pet->IsPetGhoul()) // At melee attack power change for DK pet
@@ -746,10 +758,6 @@ void Player::UpdateManaRegen()
// Apply PCT bonus from SPELL_AURA_MOD_POWER_REGEN_PERCENT aura on spirit base regen
spirit_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_MANA);
- // SpiritRegen(SPI, INT, LEVEL) = (0.001 + (SPI x sqrt(INT) x BASE_REGEN[LEVEL])) x 5
- if (GetStat(STAT_INTELLECT) > 0.0f)
- spirit_regen *= std::sqrt(GetStat(STAT_INTELLECT));
-
// CombatRegen = 5% of Base Mana
float base_regen = GetCreateMana() * 0.01f + GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA) / 5.0f;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 46ef88128cf..4c61f23126f 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -237,6 +237,7 @@ Unit::Unit(bool isWorldObject) :
for (uint8 i = 0; i < UNIT_MOD_END; ++i)
{
m_auraModifiersGroup[i][BASE_VALUE] = 0.0f;
+ m_auraModifiersGroup[i][BASE_PCT_EXCLUDE_CREATE] = 100.0f;
m_auraModifiersGroup[i][BASE_PCT] = 1.0f;
m_auraModifiersGroup[i][TOTAL_VALUE] = 0.0f;
m_auraModifiersGroup[i][TOTAL_PCT] = 1.0f;
@@ -284,10 +285,6 @@ Unit::Unit(bool isWorldObject) :
_oldFactionId = 0;
_isWalkingBeforeCharm = false;
-
- _aiAnimKitId = 0;
- _movementAnimKitId = 0;
- _meleeAnimKitId = 0;
}
////////////////////////////////////////////////////////////
@@ -4822,50 +4819,29 @@ void Unit::ProcDamageAndSpell(Unit* victim, uint32 procAttacker, uint32 procVict
victim->ProcDamageAndSpellFor(true, this, procVictim, procExtra, attType, procSpell, amount, procAura);
}
-void Unit::SendPeriodicAuraLog(SpellPeriodicAuraLogInfo* pInfo)
+void Unit::SendPeriodicAuraLog(SpellPeriodicAuraLogInfo* info)
{
- AuraEffect const* aura = pInfo->auraEff;
+ AuraEffect const* aura = info->auraEff;
+ WorldPackets::CombatLog::SpellPeriodicAuraLog data;
+ data.TargetGUID = GetGUID();
+ data.CasterGUID = aura->GetCasterGUID();
+ data.SpellID = aura->GetId();
- WorldPacket data(SMSG_SPELL_PERIODIC_AURA_LOG, 30);
- data << GetPackGUID();
- data << aura->GetCasterGUID().WriteAsPacked();
- data << uint32(aura->GetId()); // spellId
- data << uint32(1); // count
- data << uint32(aura->GetAuraType()); // auraId
- switch (aura->GetAuraType())
- {
- case SPELL_AURA_PERIODIC_DAMAGE:
- case SPELL_AURA_PERIODIC_DAMAGE_PERCENT:
- data << uint32(pInfo->damage); // damage
- data << uint32(pInfo->overDamage); // overkill?
- data << uint32(aura->GetSpellInfo()->GetSchoolMask());
- data << uint32(pInfo->absorb); // absorb
- data << uint32(pInfo->resist); // resist
- data << uint8(pInfo->critical); // new 3.1.2 critical tick
- break;
- case SPELL_AURA_PERIODIC_HEAL:
- case SPELL_AURA_OBS_MOD_HEALTH:
- data << uint32(pInfo->damage); // damage
- data << uint32(pInfo->overDamage); // overheal
- data << uint32(pInfo->absorb); // absorb
- data << uint8(pInfo->critical); // new 3.1.2 critical tick
- break;
- case SPELL_AURA_OBS_MOD_POWER:
- case SPELL_AURA_PERIODIC_ENERGIZE:
- data << uint32(aura->GetMiscValue()); // power type
- data << uint32(pInfo->damage); // damage
- break;
- case SPELL_AURA_PERIODIC_MANA_LEECH:
- data << uint32(aura->GetMiscValue()); // power type
- data << uint32(pInfo->damage); // amount
- data << float(pInfo->multiplier); // gain multiplier
- break;
- default:
- TC_LOG_ERROR("entities.unit", "Unit::SendPeriodicAuraLog: unknown aura %u", uint32(aura->GetAuraType()));
- return;
- }
+ /// @todo: should send more logs in one packet when multistrike
+ WorldPackets::CombatLog::SpellPeriodicAuraLog::SpellLogEffect spellLogEffect;
+ spellLogEffect.Effect = aura->GetAuraType();
+ spellLogEffect.Amount = info->damage;
+ spellLogEffect.OverHealOrKill = info->overDamage;
+ spellLogEffect.SchoolMaskOrPower = aura->GetSpellInfo()->GetSchoolMask();
+ spellLogEffect.AbsorbedOrAmplitude = info->absorb;
+ spellLogEffect.Resisted = info->resist;
+ spellLogEffect.Crit = info->critical;
+ spellLogEffect.Multistrike = false; // NYI
+ /// @todo: implement debug info
- SendMessageToSet(&data, true);
+ data.Effects.push_back(spellLogEffect);
+
+ SendMessageToSet(data.Write(), true);
}
void Unit::SendSpellMiss(Unit* target, uint32 spellID, SpellMissInfo missInfo)
@@ -6957,15 +6933,11 @@ void Unit::setPowerType(Powers new_powertype)
if (ToPlayer()->GetGroup())
ToPlayer()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_POWER_TYPE);
}
- else if (Pet* pet = ToCreature()->ToPet())
+ /*else if (Pet* pet = ToCreature()->ToPet()) TODO 6.x
{
if (pet->isControlled())
- {
- Unit* owner = GetOwner();
- if (owner && (owner->GetTypeId() == TYPEID_PLAYER) && owner->ToPlayer()->GetGroup())
- owner->ToPlayer()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_POWER_TYPE);
- }
- }
+ pet->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_POWER_TYPE);
+ }*/
float powerMultiplier = 1.0f;
if (!IsPet())
@@ -8157,13 +8129,14 @@ int32 Unit::HealBySpell(Unit* victim, SpellInfo const* spellInfo, uint32 addHeal
void Unit::SendEnergizeSpellLog(Unit* victim, uint32 spellId, int32 damage, Powers powerType)
{
- WorldPacket data(SMSG_SPELL_ENERGIZE_LOG, (8+8+4+4+4+1));
- data << victim->GetPackGUID();
- data << GetPackGUID();
- data << uint32(spellId);
- data << uint32(powerType);
- data << int32(damage);
- SendMessageToSet(&data, true);
+ WorldPackets::CombatLog::SpellEnergizeLog data;
+ data.CasterGUID = GetGUID();
+ data.TargetGUID = victim->GetGUID();
+ data.SpellID = spellId;
+ data.Type = powerType;
+ data.Amount = damage;
+
+ SendMessageToSet(data.Write(), true);
}
void Unit::EnergizeBySpell(Unit* victim, uint32 spellId, int32 damage, Powers powerType)
@@ -8547,6 +8520,13 @@ uint32 Unit::SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, ui
int32 Unit::SpellBaseDamageBonusDone(SpellSchoolMask schoolMask) const
{
+ if (GetTypeId() == TYPEID_PLAYER)
+ {
+ float overrideSP = GetFloatValue(PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT);
+ if (overrideSP > 0.0f)
+ return int32(CalculatePct(GetTotalAttackPowerValue(BASE_ATTACK), overrideSP) + 0.5f);
+ }
+
int32 DoneAdvertisedBenefit = 0;
AuraEffectList const& mDamageDone = GetAuraEffectsByType(SPELL_AURA_MOD_DAMAGE_DONE);
@@ -9117,6 +9097,13 @@ uint32 Unit::SpellHealingBonusTaken(Unit* caster, SpellInfo const* spellProto, u
int32 Unit::SpellBaseHealingBonusDone(SpellSchoolMask schoolMask) const
{
+ if (GetTypeId() == TYPEID_PLAYER)
+ {
+ float overrideSP = GetFloatValue(PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT);
+ if (overrideSP > 0.0f)
+ return int32(CalculatePct(GetTotalAttackPowerValue(BASE_ATTACK), overrideSP) + 0.5f);
+ }
+
int32 advertisedBenefit = 0;
AuraEffectList const& mHealingDone = GetAuraEffectsByType(SPELL_AURA_MOD_HEALING_DONE);
@@ -9675,9 +9662,9 @@ void Unit::Dismount()
if (Player* thisPlayer = ToPlayer())
thisPlayer->SendMovementSetCollisionHeight(thisPlayer->GetCollisionHeight(false));
- WorldPacket data(SMSG_DISMOUNT, 8);
- data << GetPackGUID();
- SendMessageToSet(&data, true);
+ WorldPackets::Misc::Dismount data;
+ data.Guid = GetGUID();
+ SendMessageToSet(data.Write(), true);
// dismount as a vehicle
if (GetTypeId() == TYPEID_PLAYER && GetVehicleKit())
@@ -9763,7 +9750,7 @@ MountCapabilityEntry const* Unit::GetMountCapability(uint32 mountType) const
bool Unit::IsServiceProvider() const
{
- return HasFlag(UNIT_NPC_FLAGS,
+ return HasFlag64(UNIT_NPC_FLAGS,
UNIT_NPC_FLAG_VENDOR | UNIT_NPC_FLAG_TRAINER | UNIT_NPC_FLAG_FLIGHTMASTER |
UNIT_NPC_FLAG_PETITIONER | UNIT_NPC_FLAG_BATTLEMASTER | UNIT_NPC_FLAG_BANKER |
UNIT_NPC_FLAG_INNKEEPER | UNIT_NPC_FLAG_SPIRITHEALER |
@@ -11245,6 +11232,7 @@ bool Unit::HandleStatModifier(UnitMods unitMod, UnitModifierType modifierType, f
switch (modifierType)
{
case BASE_VALUE:
+ case BASE_PCT_EXCLUDE_CREATE:
case TOTAL_VALUE:
m_auraModifiersGroup[unitMod][modifierType] += apply ? amount : -amount;
break;
@@ -11320,7 +11308,8 @@ float Unit::GetTotalStatValue(Stats stat) const
return 0.0f;
// value = ((base_value * base_pct) + total_value) * total_pct
- float value = m_auraModifiersGroup[unitMod][BASE_VALUE] + GetCreateStat(stat);
+ float value = CalculatePct(m_auraModifiersGroup[unitMod][BASE_VALUE], std::max(m_auraModifiersGroup[unitMod][BASE_PCT_EXCLUDE_CREATE], -100.0f));
+ value += GetCreateStat(stat);
value *= m_auraModifiersGroup[unitMod][BASE_PCT];
value += m_auraModifiersGroup[unitMod][TOTAL_VALUE];
value *= m_auraModifiersGroup[unitMod][TOTAL_PCT];
@@ -11339,7 +11328,7 @@ float Unit::GetTotalAuraModValue(UnitMods unitMod) const
if (m_auraModifiersGroup[unitMod][TOTAL_PCT] <= 0.0f)
return 0.0f;
- float value = m_auraModifiersGroup[unitMod][BASE_VALUE];
+ float value = CalculatePct(m_auraModifiersGroup[unitMod][BASE_VALUE], std::max(m_auraModifiersGroup[unitMod][BASE_PCT_EXCLUDE_CREATE], -100.0f));
value *= m_auraModifiersGroup[unitMod][BASE_PCT];
value += m_auraModifiersGroup[unitMod][TOTAL_VALUE];
value *= m_auraModifiersGroup[unitMod][TOTAL_PCT];
@@ -11470,11 +11459,7 @@ void Unit::SetHealth(uint32 val)
else if (Pet* pet = ToCreature()->ToPet())
{
if (pet->isControlled())
- {
- Unit* owner = GetOwner();
- if (owner && (owner->GetTypeId() == TYPEID_PLAYER) && owner->ToPlayer()->GetGroup())
- owner->ToPlayer()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_CUR_HP);
- }
+ pet->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_CUR_HP);
}
}
@@ -11495,11 +11480,7 @@ void Unit::SetMaxHealth(uint32 val)
else if (Pet* pet = ToCreature()->ToPet())
{
if (pet->isControlled())
- {
- Unit* owner = GetOwner();
- if (owner && (owner->GetTypeId() == TYPEID_PLAYER) && owner->ToPlayer()->GetGroup())
- owner->ToPlayer()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_MAX_HP);
- }
+ pet->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_MAX_HP);
}
if (val < health)
@@ -11551,15 +11532,11 @@ void Unit::SetPower(Powers power, int32 val)
if (player->GetGroup())
player->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_CUR_POWER);
}
- else if (Pet* pet = ToCreature()->ToPet())
+ /*else if (Pet* pet = ToCreature()->ToPet()) TODO 6.x
{
if (pet->isControlled())
- {
- Unit* owner = GetOwner();
- if (owner && (owner->GetTypeId() == TYPEID_PLAYER) && owner->ToPlayer()->GetGroup())
- owner->ToPlayer()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_CUR_POWER);
- }
- }
+ pet->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_CUR_POWER);
+ }*/
}
void Unit::SetMaxPower(Powers power, int32 val)
@@ -11577,15 +11554,11 @@ void Unit::SetMaxPower(Powers power, int32 val)
if (ToPlayer()->GetGroup())
ToPlayer()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_MAX_POWER);
}
- else if (Pet* pet = ToCreature()->ToPet())
+ /*else if (Pet* pet = ToCreature()->ToPet()) TODO 6.x
{
if (pet->isControlled())
- {
- Unit* owner = GetOwner();
- if (owner && (owner->GetTypeId() == TYPEID_PLAYER) && owner->ToPlayer()->GetGroup())
- owner->ToPlayer()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_MAX_POWER);
- }
- }
+ pet->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_MAX_POWER);
+ }*/
if (val < cur_power)
SetPower(power, val);
@@ -13007,23 +12980,13 @@ void Unit::UpdateAuraForGroup(uint8 slot)
if (Player* player = ToPlayer())
{
if (player->GetGroup())
- {
player->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_AURAS);
- player->SetAuraUpdateMaskForRaid(slot);
- }
}
else if (GetTypeId() == TYPEID_UNIT && ToCreature()->IsPet())
{
Pet* pet = ((Pet*)this);
if (pet->isControlled())
- {
- Unit* owner = GetOwner();
- if (owner && (owner->GetTypeId() == TYPEID_PLAYER) && owner->ToPlayer()->GetGroup())
- {
- owner->ToPlayer()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_AURAS);
- pet->SetAuraUpdateMaskForRaid(slot);
- }
- }
+ pet->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_AURAS);
}
}
@@ -13401,45 +13364,6 @@ void Unit::SendDurabilityLoss(Player* receiver, uint32 percent)
receiver->GetSession()->SendPacket(packet.Write());
}
-void Unit::SetAIAnimKitId(uint16 animKitId)
-{
- if (_aiAnimKitId == animKitId)
- return;
-
- _aiAnimKitId = animKitId;
-
- WorldPacket data(SMSG_SET_AI_ANIM_KIT, 8 + 2);
- data << GetPackGUID();
- data << uint16(animKitId);
- SendMessageToSet(&data, true);
-}
-
-void Unit::SetMovementAnimKitId(uint16 animKitId)
-{
- if (_movementAnimKitId == animKitId)
- return;
-
- _movementAnimKitId = animKitId;
-
- WorldPacket data(SMSG_SET_MOVEMENT_ANIM_KIT, 8 + 2);
- data << GetPackGUID();
- data << uint16(animKitId);
- SendMessageToSet(&data, true);
-}
-
-void Unit::SetMeleeAnimKitId(uint16 animKitId)
-{
- if (_meleeAnimKitId == animKitId)
- return;
-
- _meleeAnimKitId = animKitId;
-
- WorldPacket data(SMSG_SET_MELEE_ANIM_KIT, 8 + 2);
- data << GetPackGUID();
- data << uint16(animKitId);
- SendMessageToSet(&data, true);
-}
-
void Unit::PlayOneShotAnimKit(uint16 animKitId)
{
WorldPacket data(SMSG_PLAY_ONE_SHOT_ANIM_KIT, 7+2);
@@ -14276,7 +14200,7 @@ void Unit::RemoveVehicleKit(bool onRemoveFromWorld /*= false*/)
m_updateFlag &= ~UPDATEFLAG_VEHICLE;
m_unitTypeMask &= ~UNIT_MASK_VEHICLE;
- RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK | UNIT_NPC_FLAG_PLAYER_VEHICLE);
+ RemoveFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK | UNIT_NPC_FLAG_PLAYER_VEHICLE);
}
bool Unit::IsOnVehicle(const Unit* vehicle) const
@@ -16401,7 +16325,7 @@ void Unit::Whisper(std::string const& text, Language language, Player* target, b
LocaleConstant locale = target->GetSession()->GetSessionDbLocaleIndex();
WorldPackets::Chat::Chat packet;
- packet.Initalize(isBossWhisper ? CHAT_MSG_RAID_BOSS_WHISPER : CHAT_MSG_MONSTER_WHISPER, language, this, target, text, 0, "", locale);
+ packet.Initialize(isBossWhisper ? CHAT_MSG_RAID_BOSS_WHISPER : CHAT_MSG_MONSTER_WHISPER, language, this, target, text, 0, "", locale);
target->SendDirectMessage(packet.Write());
}
@@ -16448,7 +16372,7 @@ void Unit::Whisper(uint32 textId, Player* target, bool isBossWhisper /*= false*/
LocaleConstant locale = target->GetSession()->GetSessionDbLocaleIndex();
WorldPackets::Chat::Chat packet;
- packet.Initalize(isBossWhisper ? CHAT_MSG_RAID_BOSS_WHISPER : CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, this, target, DB2Manager::GetBroadcastTextValue(bct, locale, getGender()), 0, "", locale);
+ packet.Initialize(isBossWhisper ? CHAT_MSG_RAID_BOSS_WHISPER : CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, this, target, DB2Manager::GetBroadcastTextValue(bct, locale, getGender()), 0, "", locale);
target->SendDirectMessage(packet.Write());
}
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index f92c2f278f3..538bcea9eba 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -330,13 +330,6 @@ enum UnitRename
#define MAX_AGGRO_RESET_TIME 10 // in seconds
#define MAX_AGGRO_RADIUS 45.0f // yards
-enum Swing
-{
- NOSWING = 0,
- SINGLEHANDEDSWING = 1,
- TWOHANDEDSWING = 2
-};
-
enum VictimState
{
VICTIMSTATE_INTACT = 0, // set when attacker misses
@@ -418,7 +411,7 @@ namespace Movement
}
typedef std::list<Unit*> UnitList;
-typedef std::list< std::pair<Aura*, uint8> > DispelChargesList;
+typedef std::list<std::pair<Aura*, uint8>> DispelChargesList;
struct SpellImmune
{
@@ -431,10 +424,11 @@ typedef std::list<SpellImmune> SpellImmuneList;
enum UnitModifierType
{
BASE_VALUE = 0,
- BASE_PCT = 1,
- TOTAL_VALUE = 2,
- TOTAL_PCT = 3,
- MODIFIER_TYPE_END = 4
+ BASE_PCT_EXCLUDE_CREATE = 1, // percent modifier affecting all stat values from auras and gear but not player base for level
+ BASE_PCT = 2,
+ TOTAL_VALUE = 3,
+ TOTAL_PCT = 4,
+ MODIFIER_TYPE_END = 5
};
enum WeaponDamageRange
@@ -443,13 +437,6 @@ enum WeaponDamageRange
MAXDAMAGE
};
-enum DamageTypeToSchool
-{
- RESISTANCE,
- DAMAGE_DEALT,
- DAMAGE_TAKEN
-};
-
enum AuraRemoveMode
{
AURA_REMOVE_NONE = 0,
@@ -729,40 +716,45 @@ enum UnitFlags2
};
/// Non Player Character flags
-enum NPCFlags : uint32
-{
- UNIT_NPC_FLAG_NONE = 0x00000000,
- UNIT_NPC_FLAG_GOSSIP = 0x00000001, // 100%
- UNIT_NPC_FLAG_QUESTGIVER = 0x00000002, // 100%
- UNIT_NPC_FLAG_UNK1 = 0x00000004,
- UNIT_NPC_FLAG_UNK2 = 0x00000008,
- UNIT_NPC_FLAG_TRAINER = 0x00000010, // 100%
- UNIT_NPC_FLAG_TRAINER_CLASS = 0x00000020, // 100%
- UNIT_NPC_FLAG_TRAINER_PROFESSION = 0x00000040, // 100%
- UNIT_NPC_FLAG_VENDOR = 0x00000080, // 100%
- UNIT_NPC_FLAG_VENDOR_AMMO = 0x00000100, // 100%, general goods vendor
- UNIT_NPC_FLAG_VENDOR_FOOD = 0x00000200, // 100%
- UNIT_NPC_FLAG_VENDOR_POISON = 0x00000400, // guessed
- UNIT_NPC_FLAG_VENDOR_REAGENT = 0x00000800, // 100%
- UNIT_NPC_FLAG_REPAIR = 0x00001000, // 100%
- UNIT_NPC_FLAG_FLIGHTMASTER = 0x00002000, // 100%
- UNIT_NPC_FLAG_SPIRITHEALER = 0x00004000, // guessed
- UNIT_NPC_FLAG_SPIRITGUIDE = 0x00008000, // guessed
- UNIT_NPC_FLAG_INNKEEPER = 0x00010000, // 100%
- UNIT_NPC_FLAG_BANKER = 0x00020000, // 100%
- UNIT_NPC_FLAG_PETITIONER = 0x00040000, // 100% 0xC0000 = guild petitions, 0x40000 = arena team petitions
- UNIT_NPC_FLAG_TABARDDESIGNER = 0x00080000, // 100%
- UNIT_NPC_FLAG_BATTLEMASTER = 0x00100000, // 100%
- UNIT_NPC_FLAG_AUCTIONEER = 0x00200000, // 100%
- UNIT_NPC_FLAG_STABLEMASTER = 0x00400000, // 100%
- UNIT_NPC_FLAG_GUILD_BANKER = 0x00800000, // cause client to send 997 opcode
- UNIT_NPC_FLAG_SPELLCLICK = 0x01000000, // cause client to send 1015 opcode (spell click)
- UNIT_NPC_FLAG_PLAYER_VEHICLE = 0x02000000, // players with mounts that have vehicle data should have it set
- UNIT_NPC_FLAG_MAILBOX = 0x04000000, // mailbox
- UNIT_NPC_FLAG_REFORGER = 0x08000000, // reforging
- UNIT_NPC_FLAG_TRANSMOGRIFIER = 0x10000000, // transmogrification
- UNIT_NPC_FLAG_VAULTKEEPER = 0x20000000, // void storage
- UNIT_NPC_FLAG_BLACK_MARKET = 0x80000000 // black market
+enum NPCFlags : uint64
+{
+ UNIT_NPC_FLAG_NONE = 0x0000000000,
+ UNIT_NPC_FLAG_GOSSIP = 0x0000000001, // 100%
+ UNIT_NPC_FLAG_QUESTGIVER = 0x0000000002, // 100%
+ UNIT_NPC_FLAG_UNK1 = 0x0000000004,
+ UNIT_NPC_FLAG_UNK2 = 0x0000000008,
+ UNIT_NPC_FLAG_TRAINER = 0x0000000010, // 100%
+ UNIT_NPC_FLAG_TRAINER_CLASS = 0x0000000020, // 100%
+ UNIT_NPC_FLAG_TRAINER_PROFESSION = 0x0000000040, // 100%
+ UNIT_NPC_FLAG_VENDOR = 0x0000000080, // 100%
+ UNIT_NPC_FLAG_VENDOR_AMMO = 0x0000000100, // 100%, general goods vendor
+ UNIT_NPC_FLAG_VENDOR_FOOD = 0x0000000200, // 100%
+ UNIT_NPC_FLAG_VENDOR_POISON = 0x0000000400, // guessed
+ UNIT_NPC_FLAG_VENDOR_REAGENT = 0x0000000800, // 100%
+ UNIT_NPC_FLAG_REPAIR = 0x0000001000, // 100%
+ UNIT_NPC_FLAG_FLIGHTMASTER = 0x0000002000, // 100%
+ UNIT_NPC_FLAG_SPIRITHEALER = 0x0000004000, // guessed
+ UNIT_NPC_FLAG_SPIRITGUIDE = 0x0000008000, // guessed
+ UNIT_NPC_FLAG_INNKEEPER = 0x0000010000, // 100%
+ UNIT_NPC_FLAG_BANKER = 0x0000020000, // 100%
+ UNIT_NPC_FLAG_PETITIONER = 0x0000040000, // 100% 0xC0000 = guild petitions, 0x40000 = arena team petitions
+ UNIT_NPC_FLAG_TABARDDESIGNER = 0x0000080000, // 100%
+ UNIT_NPC_FLAG_BATTLEMASTER = 0x0000100000, // 100%
+ UNIT_NPC_FLAG_AUCTIONEER = 0x0000200000, // 100%
+ UNIT_NPC_FLAG_STABLEMASTER = 0x0000400000, // 100%
+ UNIT_NPC_FLAG_GUILD_BANKER = 0x0000800000, // cause client to send 997 opcode
+ UNIT_NPC_FLAG_SPELLCLICK = 0x0001000000, // cause client to send 1015 opcode (spell click)
+ UNIT_NPC_FLAG_PLAYER_VEHICLE = 0x0002000000, // players with mounts that have vehicle data should have it set
+ UNIT_NPC_FLAG_MAILBOX = 0x0004000000, // mailbox
+ UNIT_NPC_FLAG_REFORGER = 0x0008000000, // reforging
+ UNIT_NPC_FLAG_TRANSMOGRIFIER = 0x0010000000, // transmogrification
+ UNIT_NPC_FLAG_VAULTKEEPER = 0x0020000000, // void storage
+ UNIT_NPC_FLAG_BLACK_MARKET = 0x0080000000, // black market
+ UNIT_NPC_FLAG_ITEM_UPGRADE_MASTER = 0x0100000000,
+ UNIT_NPC_FLAG_GARRISON_ARCHITECT = 0x0200000000,
+ UNIT_NPC_FLAG_SHIPMENT_CRAFTER = 0x2000000000,
+ UNIT_NPC_FLAG_GARRISON_MISSION_NPC = 0x4000000000,
+ UNIT_NPC_FLAG_TRADESKILL_NPC = 0x8000000000
};
enum MovementFlags
@@ -1484,12 +1476,6 @@ class Unit : public WorldObject
MountCapabilityEntry const* GetMountCapability(uint32 mountType) const;
void SendDurabilityLoss(Player* receiver, uint32 percent);
- uint16 GetAIAnimKitId() const { return _aiAnimKitId; }
- void SetAIAnimKitId(uint16 animKitId);
- uint16 GetMovementAnimKitId() const { return _movementAnimKitId; }
- void SetMovementAnimKitId(uint16 animKitId);
- uint16 GetMeleeAnimKitId() const { return _meleeAnimKitId; }
- void SetMeleeAnimKitId(uint16 animKitId);
void PlayOneShotAnimKit(uint16 animKitId);
uint16 GetMaxSkillValueForLevel(Unit const* target = NULL) const { return (target ? getLevelForTarget(target) : getLevel()) * 5; }
@@ -1547,22 +1533,22 @@ class Unit : public WorldObject
MeleeHitOutcome RollMeleeOutcomeAgainst (const Unit* victim, WeaponAttackType attType) const;
MeleeHitOutcome RollMeleeOutcomeAgainst (const Unit* victim, WeaponAttackType attType, int32 crit_chance, int32 miss_chance, int32 dodge_chance, int32 parry_chance, int32 block_chance) const;
- bool IsVendor() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_VENDOR); }
- bool IsTrainer() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_TRAINER); }
- bool IsQuestGiver() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); }
- bool IsGossip() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); }
- bool IsTaxi() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_FLIGHTMASTER); }
- bool IsGuildMaster() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_PETITIONER); }
- bool IsBattleMaster() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_BATTLEMASTER); }
- bool IsBanker() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_BANKER); }
- bool IsInnkeeper() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_INNKEEPER); }
- bool IsSpiritHealer() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITHEALER); }
- bool IsSpiritGuide() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITGUIDE); }
- bool IsTabardDesigner()const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_TABARDDESIGNER); }
- bool IsAuctioner() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_AUCTIONEER); }
- bool IsArmorer() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_REPAIR); }
+ bool IsVendor() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_VENDOR); }
+ bool IsTrainer() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_TRAINER); }
+ bool IsQuestGiver() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); }
+ bool IsGossip() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); }
+ bool IsTaxi() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_FLIGHTMASTER); }
+ bool IsGuildMaster() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_PETITIONER); }
+ bool IsBattleMaster() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_BATTLEMASTER); }
+ bool IsBanker() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_BANKER); }
+ bool IsInnkeeper() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_INNKEEPER); }
+ bool IsSpiritHealer() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITHEALER); }
+ bool IsSpiritGuide() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITGUIDE); }
+ bool IsTabardDesigner()const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_TABARDDESIGNER); }
+ bool IsAuctioner() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_AUCTIONEER); }
+ bool IsArmorer() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_REPAIR); }
bool IsServiceProvider() const;
- bool IsSpiritService() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITHEALER | UNIT_NPC_FLAG_SPIRITGUIDE); }
+ bool IsSpiritService() const { return HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITHEALER | UNIT_NPC_FLAG_SPIRITGUIDE); }
bool IsCritter() const { return GetCreatureType() == CREATURE_TYPE_CRITTER; }
bool IsInFlight() const { return HasUnitState(UNIT_STATE_IN_FLIGHT); }
@@ -1981,7 +1967,7 @@ class Unit : public WorldObject
void TauntApply(Unit* victim);
void TauntFadeOut(Unit* taunter);
ThreatManager& getThreatManager() { return m_ThreatManager; }
- void addHatedBy(HostileReference* pHostileReference) { m_HostileRefManager.insertFirst(pHostileReference); };
+ void addHatedBy(HostileReference* pHostileReference) { m_HostileRefManager.insertFirst(pHostileReference); }
void removeHatedBy(HostileReference* /*pHostileReference*/) { /* nothing to do yet */ }
HostileRefManager& getHostileRefManager() { return m_HostileRefManager; }
@@ -2341,10 +2327,6 @@ class Unit : public WorldObject
time_t _lastDamagedTime; // Part of Evade mechanics
- uint16 _aiAnimKitId;
- uint16 _movementAnimKitId;
- uint16 _meleeAnimKitId;
-
SpellHistory* _spellHistory;
};
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
index c2f298beeb7..08efa9b9cae 100644
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp
@@ -50,9 +50,9 @@ UsableSeatNum(0), _me(unit), _vehicleInfo(vehInfo), _creatureEntry(creatureEntry
// Set or remove correct flags based on available seats. Will overwrite db data (if wrong).
if (UsableSeatNum)
- _me->SetFlag(UNIT_NPC_FLAGS, (_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK));
+ _me->SetFlag64(UNIT_NPC_FLAGS, (_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK));
else
- _me->RemoveFlag(UNIT_NPC_FLAGS, (_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK));
+ _me->RemoveFlag64(UNIT_NPC_FLAGS, (_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK));
InitMovementInfoForBase();
}
@@ -479,7 +479,7 @@ Vehicle* Vehicle::RemovePassenger(Unit* unit)
unit->GetName().c_str(), _me->GetEntry(), _vehicleInfo->ID, _me->GetGUID().ToString().c_str(), (int32)seat->first);
if (seat->second.SeatInfo->CanEnterOrExit() && ++UsableSeatNum)
- _me->SetFlag(UNIT_NPC_FLAGS, (_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK));
+ _me->SetFlag64(UNIT_NPC_FLAGS, (_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK));
// Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle
if (seat->second.SeatInfo->Flags & VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE && !seat->second.Passenger.IsUnselectable)
@@ -768,9 +768,9 @@ bool VehicleJoinEvent::Execute(uint64, uint32)
if (!Target->UsableSeatNum)
{
if (Target->GetBase()->GetTypeId() == TYPEID_PLAYER)
- Target->GetBase()->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_PLAYER_VEHICLE);
+ Target->GetBase()->RemoveFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_PLAYER_VEHICLE);
else
- Target->GetBase()->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
+ Target->GetBase()->RemoveFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
}
}
diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp
index 00d6afdd6e4..0d6b971ec15 100644
--- a/src/server/game/Events/GameEventMgr.cpp
+++ b/src/server/game/Events/GameEventMgr.cpp
@@ -715,7 +715,7 @@ void GameEventMgr::LoadFromDB()
ObjectGuid::LowType guid = fields[0].GetUInt64();
uint16 event_id = fields[1].GetUInt8();
- uint32 npcflag = fields[2].GetUInt32();
+ uint64 npcflag = fields[2].GetUInt64();
if (event_id >= mGameEvent.size())
{
@@ -916,9 +916,9 @@ void GameEventMgr::LoadFromDB()
}
}
-uint32 GameEventMgr::GetNPCFlag(Creature* cr)
+uint64 GameEventMgr::GetNPCFlag(Creature* cr)
{
- uint32 mask = 0;
+ uint64 mask = 0;
ObjectGuid::LowType guid = cr->GetSpawnId();
for (ActiveEvents::iterator e_itr = m_ActiveEvents.begin(); e_itr != m_ActiveEvents.end(); ++e_itr)
@@ -1139,7 +1139,7 @@ void GameEventMgr::UpdateEventNPCFlags(uint16 event_id)
if (CreatureTemplate const* creatureTemplate = creature->GetCreatureTemplate())
npcflag |= creatureTemplate->npcflag;
- creature->SetUInt32Value(UNIT_NPC_FLAGS, npcflag);
+ creature->SetUInt64Value(UNIT_NPC_FLAGS, npcflag);
// reset gossip options, since the flag change might have added / removed some
//cr->ResetGossipOptions();
}
@@ -1266,8 +1266,12 @@ void GameEventMgr::GameEventUnspawn(int16 event_id)
sMapMgr->DoForAllMapsWithMapId(data->mapid, [&itr](Map* map)
{
auto creatureBounds = map->GetCreatureBySpawnIdStore().equal_range(*itr);
- for (auto itr = creatureBounds.first; itr != creatureBounds.second; ++itr)
- itr->second->AddObjectToRemoveList();
+ for (auto itr2 = creatureBounds.first; itr2 != creatureBounds.second;)
+ {
+ Creature* creature = itr2->second;
+ ++itr2;
+ creature->AddObjectToRemoveList();
+ }
});
}
}
@@ -1292,11 +1296,16 @@ void GameEventMgr::GameEventUnspawn(int16 event_id)
sMapMgr->DoForAllMapsWithMapId(data->mapid, [&itr](Map* map)
{
auto gameobjectBounds = map->GetGameObjectBySpawnIdStore().equal_range(*itr);
- for (auto itr = gameobjectBounds.first; itr != gameobjectBounds.second; ++itr)
- itr->second->AddObjectToRemoveList();
+ for (auto itr2 = gameobjectBounds.first; itr2 != gameobjectBounds.second;)
+ {
+ GameObject* go = itr2->second;
+ ++itr2;
+ go->AddObjectToRemoveList();
+ }
});
}
}
+
if (internal_event_id < 0 || internal_event_id >= int32(mGameEventPoolIds.size()))
{
TC_LOG_ERROR("gameevent", "GameEventMgr::GameEventUnspawn attempt access to out of range mGameEventPoolIds element %u (size: %zu)", internal_event_id, mGameEventPoolIds.size());
diff --git a/src/server/game/Events/GameEventMgr.h b/src/server/game/Events/GameEventMgr.h
index bbddd5698d8..6f3b5c63180 100644
--- a/src/server/game/Events/GameEventMgr.h
+++ b/src/server/game/Events/GameEventMgr.h
@@ -98,7 +98,7 @@ class GameEventMgr
{
private:
GameEventMgr();
- ~GameEventMgr() { };
+ ~GameEventMgr() { }
public:
static GameEventMgr* instance()
@@ -124,7 +124,7 @@ class GameEventMgr
void StopEvent(uint16 event_id, bool overwrite = false);
void HandleQuestComplete(uint32 quest_id); // called on world event type quest completions
void HandleWorldEventGossip(Player* player, Creature* c);
- uint32 GetNPCFlag(Creature* cr);
+ uint64 GetNPCFlag(Creature* cr);
uint32 GetNpcTextId(uint32 guid);
uint16 GetEventIdForQuest(Quest const* quest) const;
private:
@@ -162,7 +162,7 @@ class GameEventMgr
typedef std::list<NPCVendorEntry> NPCVendorList;
typedef std::vector<NPCVendorList> GameEventNPCVendorMap;
typedef std::map<uint32 /*quest id*/, GameEventQuestToEventConditionNum> QuestIdToEventConditionMap;
- typedef std::pair<ObjectGuid::LowType /*guid*/, uint32 /*npcflag*/> GuidNPCFlagPair;
+ typedef std::pair<ObjectGuid::LowType /*guid*/, uint64 /*npcflag*/> GuidNPCFlagPair;
typedef std::list<GuidNPCFlagPair> NPCFlagList;
typedef std::vector<NPCFlagList> GameEventNPCFlagMap;
typedef std::vector<uint32> GameEventBitmask;
diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp
new file mode 100644
index 00000000000..749ebb562c5
--- /dev/null
+++ b/src/server/game/Garrison/Garrison.cpp
@@ -0,0 +1,690 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Garrison.h"
+#include "GameObject.h"
+#include "GarrisonMgr.h"
+#include "MapManager.h"
+#include "ObjectMgr.h"
+
+Garrison::Garrison(Player* owner) : _owner(owner), _siteLevel(nullptr), _followerActivationsRemainingToday(1)
+{
+}
+
+bool Garrison::LoadFromDB(PreparedQueryResult garrison, PreparedQueryResult blueprints, PreparedQueryResult buildings,
+ PreparedQueryResult followers, PreparedQueryResult abilities)
+{
+ if (!garrison)
+ return false;
+
+ Field* fields = garrison->Fetch();
+ _siteLevel = sGarrSiteLevelStore.LookupEntry(fields[0].GetUInt32());
+ _followerActivationsRemainingToday = fields[1].GetUInt32();
+ if (!_siteLevel)
+ return false;
+
+ InitializePlots();
+
+ if (blueprints)
+ {
+ do
+ {
+ fields = blueprints->Fetch();
+ if (GarrBuildingEntry const* building = sGarrBuildingStore.LookupEntry(fields[0].GetUInt32()))
+ _knownBuildings.insert(building->ID);
+
+ } while (blueprints->NextRow());
+ }
+
+ if (buildings)
+ {
+ do
+ {
+ fields = buildings->Fetch();
+ uint32 plotInstanceId = fields[0].GetUInt32();
+ uint32 buildingId = fields[1].GetUInt32();
+ time_t timeBuilt = time_t(fields[2].GetUInt64());
+ bool active = fields[3].GetBool();
+
+
+ Plot* plot = GetPlot(plotInstanceId);
+ if (!plot)
+ continue;
+
+ if (!sGarrBuildingStore.LookupEntry(buildingId))
+ continue;
+
+ plot->BuildingInfo.PacketInfo = boost::in_place();
+ plot->BuildingInfo.PacketInfo->GarrPlotInstanceID = plotInstanceId;
+ plot->BuildingInfo.PacketInfo->GarrBuildingID = buildingId;
+ plot->BuildingInfo.PacketInfo->TimeBuilt = timeBuilt;
+ plot->BuildingInfo.PacketInfo->Active = active;
+
+ } while (buildings->NextRow());
+ }
+
+ // 0 1 2 3 4 5 6 7 8 9
+ // SELECT dbId, followerId, quality, level, itemLevelWeapon, itemLevelArmor, xp, currentBuilding, currentMission, status FROM character_garrison_followers WHERE guid = ?
+ if (followers)
+ {
+ do
+ {
+ Field* fields = followers->Fetch();
+
+ uint64 dbId = fields[0].GetUInt64();
+ uint32 followerId = fields[1].GetUInt32();
+ if (!sGarrFollowerStore.LookupEntry(followerId))
+ continue;
+
+ _followerIds.insert(followerId);
+ Follower& follower = _followers[dbId];
+ follower.PacketInfo.DbID = dbId;
+ follower.PacketInfo.GarrFollowerID = followerId;
+ follower.PacketInfo.Quality = fields[2].GetUInt32();
+ follower.PacketInfo.FollowerLevel = fields[3].GetUInt32();
+ follower.PacketInfo.ItemLevelWeapon = fields[4].GetUInt32();
+ follower.PacketInfo.ItemLevelArmor = fields[5].GetUInt32();
+ follower.PacketInfo.Xp = fields[6].GetUInt32();
+ follower.PacketInfo.CurrentBuildingID = fields[7].GetUInt32();
+ follower.PacketInfo.CurrentMissionID = fields[8].GetUInt32();
+ follower.PacketInfo.FollowerStatus = fields[9].GetUInt32();
+ if (!sGarrBuildingStore.LookupEntry(follower.PacketInfo.CurrentBuildingID))
+ follower.PacketInfo.CurrentBuildingID = 0;
+
+ //if (!sGarrMissionStore.LookupEntry(follower.PacketInfo.CurrentMissionID))
+ // follower.PacketInfo.CurrentMissionID = 0;
+
+ } while (followers->NextRow());
+
+ if (abilities)
+ {
+ do
+ {
+ Field* fields = abilities->Fetch();
+ uint64 dbId = fields[0].GetUInt64();
+ GarrAbilityEntry const* ability = sGarrAbilityStore.LookupEntry(fields[1].GetUInt32());
+
+ if (!ability)
+ continue;
+
+ auto itr = _followers.find(dbId);
+ if (itr == _followers.end())
+ continue;
+
+ itr->second.PacketInfo.AbilityID.push_back(ability);
+ } while (abilities->NextRow());
+ }
+ }
+
+ return true;
+}
+
+void Garrison::SaveToDB(SQLTransaction& trans)
+{
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON);
+ stmt->setUInt64(0, _owner->GetGUID().GetCounter());
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_BLUEPRINTS);
+ stmt->setUInt64(0, _owner->GetGUID().GetCounter());
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_BUILDINGS);
+ stmt->setUInt64(0, _owner->GetGUID().GetCounter());
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_FOLLOWERS);
+ stmt->setUInt64(0, _owner->GetGUID().GetCounter());
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_GARRISON);
+ stmt->setUInt64(0, _owner->GetGUID().GetCounter());
+ stmt->setUInt32(1, _siteLevel->ID);
+ stmt->setUInt32(2, _followerActivationsRemainingToday);
+ trans->Append(stmt);
+
+ for (uint32 building : _knownBuildings)
+ {
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_GARRISON_BLUEPRINTS);
+ stmt->setUInt64(0, _owner->GetGUID().GetCounter());
+ stmt->setUInt32(1, building);
+ trans->Append(stmt);
+ }
+
+ for (auto const& p : _plots)
+ {
+ Plot const& plot = p.second;
+ if (plot.BuildingInfo.PacketInfo)
+ {
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_GARRISON_BUILDINGS);
+ stmt->setUInt64(0, _owner->GetGUID().GetCounter());
+ stmt->setUInt32(1, plot.BuildingInfo.PacketInfo->GarrPlotInstanceID);
+ stmt->setUInt32(2, plot.BuildingInfo.PacketInfo->GarrBuildingID);
+ stmt->setUInt64(3, plot.BuildingInfo.PacketInfo->TimeBuilt);
+ stmt->setBool(4, plot.BuildingInfo.PacketInfo->Active);
+ trans->Append(stmt);
+ }
+ }
+
+ for (auto const& p : _followers)
+ {
+ Follower const& follower = p.second;
+ uint8 index = 0;
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_GARRISON_FOLLOWERS);
+ stmt->setUInt64(index++, follower.PacketInfo.DbID);
+ stmt->setUInt64(index++, _owner->GetGUID().GetCounter());
+ stmt->setUInt32(index++, follower.PacketInfo.GarrFollowerID);
+ stmt->setUInt32(index++, follower.PacketInfo.Quality);
+ stmt->setUInt32(index++, follower.PacketInfo.FollowerLevel);
+ stmt->setUInt32(index++, follower.PacketInfo.ItemLevelWeapon);
+ stmt->setUInt32(index++, follower.PacketInfo.ItemLevelArmor);
+ stmt->setUInt32(index++, follower.PacketInfo.Xp);
+ stmt->setUInt32(index++, follower.PacketInfo.CurrentBuildingID);
+ stmt->setUInt32(index++, follower.PacketInfo.CurrentMissionID);
+ stmt->setUInt32(index++, follower.PacketInfo.FollowerStatus);
+ trans->Append(stmt);
+
+ uint8 slot = 0;
+ for (GarrAbilityEntry const* ability : follower.PacketInfo.AbilityID)
+ {
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_GARRISON_FOLLOWER_ABILITIES);
+ stmt->setUInt64(0, follower.PacketInfo.DbID);
+ stmt->setUInt32(1, ability->ID);
+ stmt->setUInt8(2, slot++);
+ trans->Append(stmt);
+ }
+ }
+}
+
+bool Garrison::Create(uint32 garrSiteId)
+{
+ _siteLevel = sGarrisonMgr.GetGarrSiteLevelEntry(garrSiteId, 1);
+ if (!_siteLevel)
+ return false;
+
+ InitializePlots();
+
+ WorldPackets::Garrison::GarrisonCreateResult garrisonCreateResult;
+ garrisonCreateResult.GarrSiteLevelID = _siteLevel->ID;
+ _owner->SendDirectMessage(garrisonCreateResult.Write());
+ _owner->SendUpdatePhasing();
+ SendRemoteInfo();
+ return true;
+}
+
+void Garrison::InitializePlots()
+{
+ if (std::vector<GarrSiteLevelPlotInstEntry const*> const* plots = sGarrisonMgr.GetGarrPlotInstForSiteLevel(_siteLevel->ID))
+ {
+ for (std::size_t i = 0; i < plots->size(); ++i)
+ {
+ uint32 garrPlotInstanceId = plots->at(i)->GarrPlotInstanceID;
+ GarrPlotInstanceEntry const* plotInstance = sGarrPlotInstanceStore.LookupEntry(garrPlotInstanceId);
+ GameObjectsEntry const* gameObject = sGarrisonMgr.GetPlotGameObject(_siteLevel->MapID, garrPlotInstanceId);
+ if (!plotInstance || !gameObject)
+ continue;
+
+ GarrPlotEntry const* plot = sGarrPlotStore.LookupEntry(plotInstance->GarrPlotID);
+ if (!plot)
+ continue;
+
+ Plot& plotInfo = _plots[garrPlotInstanceId];
+ plotInfo.PacketInfo.GarrPlotInstanceID = garrPlotInstanceId;
+ plotInfo.PacketInfo.PlotPos.Relocate(gameObject->Position.X, gameObject->Position.Y, gameObject->Position.Z, 2 * std::acos(gameObject->RotationW));
+ plotInfo.PacketInfo.PlotType = plot->PlotType;
+ plotInfo.EmptyGameObjectId = gameObject->ID;
+ plotInfo.GarrSiteLevelPlotInstId = plots->at(i)->ID;
+ }
+ }
+}
+
+void Garrison::Upgrade()
+{
+}
+
+void Garrison::Enter() const
+{
+ WorldLocation loc(_siteLevel->MapID);
+ loc.Relocate(_owner);
+ _owner->TeleportTo(loc, TELE_TO_SEAMLESS);
+}
+
+void Garrison::Leave() const
+{
+ if (MapEntry const* map = sMapStore.LookupEntry(_siteLevel->MapID))
+ {
+ WorldLocation loc(map->ParentMapID);
+ loc.Relocate(_owner);
+ _owner->TeleportTo(loc, TELE_TO_SEAMLESS);
+ }
+}
+
+GarrisonFactionIndex Garrison::GetFaction() const
+{
+ return _owner->GetTeam() == HORDE ? GARRISON_FACTION_INDEX_HORDE : GARRISON_FACTION_INDEX_ALLIANCE;
+}
+
+std::vector<Garrison::Plot*> Garrison::GetPlots()
+{
+ std::vector<Plot*> plots;
+ plots.reserve(_plots.size());
+ for (auto& p : _plots)
+ plots.push_back(&p.second);
+
+ return plots;
+}
+
+Garrison::Plot* Garrison::GetPlot(uint32 garrPlotInstanceId)
+{
+ auto itr = _plots.find(garrPlotInstanceId);
+ if (itr != _plots.end())
+ return &itr->second;
+
+ return nullptr;
+}
+
+Garrison::Plot const* Garrison::GetPlot(uint32 garrPlotInstanceId) const
+{
+ auto itr = _plots.find(garrPlotInstanceId);
+ if (itr != _plots.end())
+ return &itr->second;
+
+ return nullptr;
+}
+
+void Garrison::LearnBlueprint(uint32 garrBuildingId)
+{
+ WorldPackets::Garrison::GarrisonLearnBlueprintResult learnBlueprintResult;
+ learnBlueprintResult.BuildingID = garrBuildingId;
+ learnBlueprintResult.Result = GARRISON_SUCCESS;
+
+ if (!sGarrBuildingStore.LookupEntry(garrBuildingId))
+ learnBlueprintResult.Result = GARRISON_ERROR_INVALID_BUILDINGID;
+ else if (_knownBuildings.count(garrBuildingId))
+ learnBlueprintResult.Result = GARRISON_ERROR_BLUEPRINT_KNOWN;
+ else
+ _knownBuildings.insert(garrBuildingId);
+
+ _owner->SendDirectMessage(learnBlueprintResult.Write());
+}
+
+void Garrison::UnlearnBlueprint(uint32 garrBuildingId)
+{
+ WorldPackets::Garrison::GarrisonUnlearnBlueprintResult unlearnBlueprintResult;
+ unlearnBlueprintResult.BuildingID = garrBuildingId;
+ unlearnBlueprintResult.Result = GARRISON_SUCCESS;
+
+ if (!sGarrBuildingStore.LookupEntry(garrBuildingId))
+ unlearnBlueprintResult.Result = GARRISON_ERROR_INVALID_BUILDINGID;
+ else if (!_knownBuildings.count(garrBuildingId))
+ unlearnBlueprintResult.Result = GARRISON_ERROR_BLUEPRINT_NOT_KNOWN;
+ else
+ _knownBuildings.erase(garrBuildingId);
+
+ _owner->SendDirectMessage(unlearnBlueprintResult.Write());
+}
+
+void Garrison::PlaceBuilding(uint32 garrPlotInstanceId, uint32 garrBuildingId)
+{
+ WorldPackets::Garrison::GarrisonPlaceBuildingResult placeBuildingResult;
+ placeBuildingResult.Result = CheckBuildingPlacement(garrPlotInstanceId, garrBuildingId);
+ if (placeBuildingResult.Result == GARRISON_SUCCESS)
+ {
+ placeBuildingResult.BuildingInfo.GarrPlotInstanceID = garrPlotInstanceId;
+ placeBuildingResult.BuildingInfo.GarrBuildingID = garrBuildingId;
+ placeBuildingResult.BuildingInfo.TimeBuilt = time(nullptr);
+
+ Plot* plot = GetPlot(garrPlotInstanceId);
+ uint32 oldBuildingId = 0;
+ Map* map = FindMap();
+ GarrBuildingEntry const* building = sGarrBuildingStore.AssertEntry(garrBuildingId);
+ if (map)
+ plot->DeleteGameObject(map);
+
+ if (plot->BuildingInfo.PacketInfo)
+ {
+ oldBuildingId = plot->BuildingInfo.PacketInfo->GarrBuildingID;
+ if (sGarrBuildingStore.AssertEntry(oldBuildingId)->Type != building->Type)
+ plot->ClearBuildingInfo(_owner);
+ }
+
+ plot->SetBuildingInfo(placeBuildingResult.BuildingInfo, _owner);
+ if (map)
+ if (GameObject* go = plot->CreateGameObject(map, GetFaction()))
+ map->AddToMap(go);
+
+ _owner->ModifyCurrency(building->CostCurrencyID, -building->CostCurrencyAmount, false, true);
+ _owner->ModifyMoney(-building->CostMoney * GOLD, false);
+
+ if (oldBuildingId)
+ {
+ WorldPackets::Garrison::GarrisonBuildingRemoved buildingRemoved;
+ buildingRemoved.Result = GARRISON_SUCCESS;
+ buildingRemoved.GarrPlotInstanceID = garrPlotInstanceId;
+ buildingRemoved.GarrBuildingID = oldBuildingId;
+ _owner->SendDirectMessage(buildingRemoved.Write());
+ }
+ }
+
+ _owner->SendDirectMessage(placeBuildingResult.Write());
+}
+
+void Garrison::CancelBuildingConstruction(uint32 garrPlotInstanceId)
+{
+ WorldPackets::Garrison::GarrisonBuildingRemoved buildingRemoved;
+ buildingRemoved.Result = CheckBuildingRemoval(garrPlotInstanceId);
+ if (buildingRemoved.Result == GARRISON_SUCCESS)
+ {
+ Plot* plot = GetPlot(garrPlotInstanceId);
+
+ buildingRemoved.GarrPlotInstanceID = garrPlotInstanceId;
+ buildingRemoved.GarrBuildingID = plot->BuildingInfo.PacketInfo->GarrBuildingID;
+
+ Map* map = FindMap();
+ if (map)
+ plot->DeleteGameObject(map);
+
+ plot->ClearBuildingInfo(_owner);
+ _owner->SendDirectMessage(buildingRemoved.Write());
+
+ GarrBuildingEntry const* constructing = sGarrBuildingStore.AssertEntry(buildingRemoved.GarrBuildingID);
+ // Refund construction/upgrade cost
+ _owner->ModifyCurrency(constructing->CostCurrencyID, constructing->CostCurrencyAmount, false, true);
+ _owner->ModifyMoney(constructing->CostMoney * GOLD, false);
+
+ if (constructing->Level > 1)
+ {
+ // Restore previous level building
+ GarrBuildingEntry const* restored = sGarrisonMgr.GetPreviousLevelBuilding(constructing->Type, constructing->Level);
+ ASSERT(restored);
+
+ WorldPackets::Garrison::GarrisonPlaceBuildingResult placeBuildingResult;
+ placeBuildingResult.Result = GARRISON_SUCCESS;
+ placeBuildingResult.BuildingInfo.GarrPlotInstanceID = garrPlotInstanceId;
+ placeBuildingResult.BuildingInfo.GarrBuildingID = restored->ID;
+ placeBuildingResult.BuildingInfo.TimeBuilt = time(nullptr);
+ placeBuildingResult.BuildingInfo.Active = true;
+
+ plot->SetBuildingInfo(placeBuildingResult.BuildingInfo, _owner);
+ _owner->SendDirectMessage(placeBuildingResult.Write());
+ }
+
+ if (map)
+ if (GameObject* go = plot->CreateGameObject(map, GetFaction()))
+ map->AddToMap(go);
+ }
+ else
+ _owner->SendDirectMessage(buildingRemoved.Write());
+}
+
+void Garrison::AddFollower(uint32 garrFollowerId)
+{
+ WorldPackets::Garrison::GarrisonAddFollowerResult addFollowerResult;
+ GarrFollowerEntry const* followerEntry = sGarrFollowerStore.LookupEntry(garrFollowerId);
+ if (_followerIds.count(garrFollowerId) || !followerEntry)
+ {
+ addFollowerResult.Result = GARRISON_GENERIC_UNKNOWN_ERROR;
+ _owner->SendDirectMessage(addFollowerResult.Write());
+ return;
+ }
+
+ _followerIds.insert(garrFollowerId);
+ uint64 dbId = sGarrisonMgr.GenerateFollowerDbId();
+ Follower& follower = _followers[dbId];
+ follower.PacketInfo.DbID = dbId;
+ follower.PacketInfo.GarrFollowerID = garrFollowerId;
+ follower.PacketInfo.Quality = followerEntry->Quality; // TODO: handle magic upgrades
+ follower.PacketInfo.FollowerLevel = followerEntry->Level;
+ follower.PacketInfo.ItemLevelWeapon = followerEntry->ItemLevelWeapon;
+ follower.PacketInfo.ItemLevelArmor = followerEntry->ItemLevelArmor;
+ follower.PacketInfo.Xp = 0;
+ follower.PacketInfo.CurrentBuildingID = 0;
+ follower.PacketInfo.CurrentMissionID = 0;
+ follower.PacketInfo.AbilityID = sGarrisonMgr.RollFollowerAbilities(followerEntry, follower.PacketInfo.Quality, GetFaction(), true);
+ follower.PacketInfo.FollowerStatus = 0;
+
+ addFollowerResult.Follower = follower.PacketInfo;
+ _owner->SendDirectMessage(addFollowerResult.Write());
+
+ _owner->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER, follower.PacketInfo.DbID);
+}
+
+Garrison::Follower const* Garrison::GetFollower(uint64 dbId) const
+{
+ auto itr = _followers.find(dbId);
+ if (itr != _followers.end())
+ return &itr->second;
+
+ return nullptr;
+}
+
+void Garrison::SendInfo()
+{
+ WorldPackets::Garrison::GetGarrisonInfoResult garrisonInfo;
+ garrisonInfo.GarrSiteID = _siteLevel->SiteID;
+ garrisonInfo.GarrSiteLevelID = _siteLevel->ID;
+ garrisonInfo.FactionIndex = GetFaction();
+ garrisonInfo.NumFollowerActivationsRemaining = _followerActivationsRemainingToday;
+ for (auto& p : _plots)
+ {
+ Plot& plot = p.second;
+ garrisonInfo.Plots.push_back(&plot.PacketInfo);
+ if (plot.BuildingInfo.PacketInfo)
+ garrisonInfo.Buildings.push_back(plot.BuildingInfo.PacketInfo.get_ptr());
+ }
+
+ for (auto const& p : _followers)
+ garrisonInfo.Followers.push_back(&p.second.PacketInfo);
+
+ _owner->SendDirectMessage(garrisonInfo.Write());
+}
+
+void Garrison::SendRemoteInfo() const
+{
+ MapEntry const* garrisonMap = sMapStore.LookupEntry(_siteLevel->MapID);
+ if (!garrisonMap || int32(_owner->GetMapId()) != garrisonMap->ParentMapID)
+ return;
+
+ WorldPackets::Garrison::GarrisonRemoteInfo remoteInfo;
+ remoteInfo.Sites.resize(1);
+
+ WorldPackets::Garrison::GarrisonRemoteSiteInfo& remoteSiteInfo = remoteInfo.Sites[0];
+ remoteSiteInfo.GarrSiteLevelID = _siteLevel->ID;
+ for (auto const& p : _plots)
+ if (p.second.BuildingInfo.PacketInfo)
+ remoteSiteInfo.Buildings.emplace_back(p.first, p.second.BuildingInfo.PacketInfo->GarrBuildingID);
+
+ _owner->SendDirectMessage(remoteInfo.Write());
+}
+
+void Garrison::SendBlueprintAndSpecializationData()
+{
+ WorldPackets::Garrison::GarrisonRequestBlueprintAndSpecializationDataResult data;
+ data.BlueprintsKnown = &_knownBuildings;
+ _owner->SendDirectMessage(data.Write());
+}
+
+void Garrison::SendBuildingLandmarks(Player* receiver) const
+{
+ WorldPackets::Garrison::GarrisonBuildingLandmarks buildingLandmarks;
+ buildingLandmarks.Landmarks.reserve(_plots.size());
+
+ for (auto const& p : _plots)
+ {
+ Plot const& plot = p.second;
+ if (plot.BuildingInfo.PacketInfo)
+ if (uint32 garrBuildingPlotInstId = sGarrisonMgr.GetGarrBuildingPlotInst(plot.BuildingInfo.PacketInfo->GarrBuildingID, plot.GarrSiteLevelPlotInstId))
+ buildingLandmarks.Landmarks.emplace_back(garrBuildingPlotInstId, plot.PacketInfo.PlotPos);
+ }
+
+ receiver->SendDirectMessage(buildingLandmarks.Write());
+}
+
+Map* Garrison::FindMap() const
+{
+ return sMapMgr->FindMap(_siteLevel->MapID, _owner->GetGUID().GetCounter());
+}
+
+GarrisonError Garrison::CheckBuildingPlacement(uint32 garrPlotInstanceId, uint32 garrBuildingId) const
+{
+ GarrPlotInstanceEntry const* plotInstance = sGarrPlotInstanceStore.LookupEntry(garrPlotInstanceId);
+ Plot const* plot = GetPlot(garrPlotInstanceId);
+ if (!plotInstance || !plot)
+ return GARRISON_ERROR_INVALID_PLOT;
+
+ GarrBuildingEntry const* building = sGarrBuildingStore.LookupEntry(garrBuildingId);
+ if (!building)
+ return GARRISON_ERROR_INVALID_BUILDINGID;
+
+ if (!sGarrisonMgr.IsPlotMatchingBuilding(plotInstance->GarrPlotID, garrBuildingId))
+ return GARRISON_ERROR_INVALID_PLOT_BUILDING;
+
+ // Cannot place buldings of higher level than garrison level
+ if (building->Level > _siteLevel->Level)
+ return GARRISON_ERROR_INVALID_BUILDINGID;
+
+ if (building->Flags & GARRISON_BUILDING_FLAG_NEEDS_PLAN)
+ {
+ if (!_knownBuildings.count(garrBuildingId))
+ return GARRISON_ERROR_BLUEPRINT_NOT_KNOWN;
+ }
+ else // Building is built as a quest reward
+ return GARRISON_ERROR_INVALID_BUILDINGID;
+
+ // Check all plots to find if we already have this building
+ GarrBuildingEntry const* existingBuilding;
+ for (auto const& p : _plots)
+ {
+ if (p.second.BuildingInfo.PacketInfo)
+ {
+ existingBuilding = sGarrBuildingStore.AssertEntry(p.second.BuildingInfo.PacketInfo->GarrBuildingID);
+ if (existingBuilding->Type == building->Type)
+ if (p.first != garrPlotInstanceId || existingBuilding->Level + 1 != building->Level) // check if its an upgrade in same plot
+ return GARRISON_ERROR_BUILDING_EXISTS;
+ }
+ }
+
+ if (!_owner->HasCurrency(building->CostCurrencyID, building->CostCurrencyAmount))
+ return GARRISON_ERROR_NOT_ENOUGH_CURRENCY;
+
+ if (!_owner->HasEnoughMoney(uint64(building->CostMoney) * GOLD))
+ return GARRISON_ERROR_NOT_ENOUGH_GOLD;
+
+ // New building cannot replace another building currently under construction
+ if (plot->BuildingInfo.PacketInfo)
+ if (!plot->BuildingInfo.PacketInfo->Active)
+ return GARRISON_ERROR_NO_BUILDING;
+
+ return GARRISON_SUCCESS;
+}
+
+GarrisonError Garrison::CheckBuildingRemoval(uint32 garrPlotInstanceId) const
+{
+ Plot const* plot = GetPlot(garrPlotInstanceId);
+ if (!plot)
+ return GARRISON_ERROR_INVALID_PLOT;
+
+ if (!plot->BuildingInfo.PacketInfo)
+ return GARRISON_ERROR_NO_BUILDING;
+
+ if (plot->BuildingInfo.CanActivate())
+ return GARRISON_ERROR_BUILDING_EXISTS;
+
+ return GARRISON_SUCCESS;
+}
+
+GameObject* Garrison::Plot::CreateGameObject(Map* map, GarrisonFactionIndex faction)
+{
+ uint32 entry = EmptyGameObjectId;
+ if (BuildingInfo.PacketInfo)
+ {
+ GarrPlotInstanceEntry const* plotInstance = sGarrPlotInstanceStore.AssertEntry(PacketInfo.GarrPlotInstanceID);
+ GarrPlotEntry const* plot = sGarrPlotStore.AssertEntry(plotInstance->GarrPlotID);
+ GarrBuildingEntry const* building = sGarrBuildingStore.AssertEntry(BuildingInfo.PacketInfo->GarrBuildingID);
+ if (BuildingInfo.PacketInfo->Active)
+ entry = faction == GARRISON_FACTION_INDEX_HORDE ? building->HordeGameObjectID : building->AllianceGameObjectID;
+ else
+ entry = faction == GARRISON_FACTION_INDEX_HORDE ? plot->HordeConstructionGameObjectID : plot->AllianceConstructionGameObjectID;
+ }
+
+ if (!sObjectMgr->GetGameObjectTemplate(entry))
+ {
+ TC_LOG_ERROR("garrison", "Garrison attempted to spawn gameobject whose template doesn't exist (%u)", entry);
+ return nullptr;
+ }
+
+ Position const& pos = PacketInfo.PlotPos;
+ GameObject* go = new GameObject();
+ if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), entry, map, 0, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(),
+ 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_ACTIVE))
+ {
+ delete go;
+ return nullptr;
+ }
+
+ BuildingInfo.Guid = go->GetGUID();
+ return go;
+}
+
+void Garrison::Plot::DeleteGameObject(Map* map)
+{
+ if (BuildingInfo.Guid.IsEmpty())
+ return;
+
+ if (GameObject* oldBuilding = map->GetGameObject(BuildingInfo.Guid))
+ oldBuilding->Delete();
+
+ BuildingInfo.Guid.Clear();
+}
+
+void Garrison::Plot::ClearBuildingInfo(Player* owner)
+{
+ WorldPackets::Garrison::GarrisonPlotPlaced plotPlaced;
+ plotPlaced.PlotInfo = &PacketInfo;
+ owner->SendDirectMessage(plotPlaced.Write());
+
+ BuildingInfo.PacketInfo = boost::none;
+}
+
+void Garrison::Plot::SetBuildingInfo(WorldPackets::Garrison::GarrisonBuildingInfo const& buildingInfo, Player* owner)
+{
+ if (!BuildingInfo.PacketInfo)
+ {
+ WorldPackets::Garrison::GarrisonPlotRemoved plotRemoved;
+ plotRemoved.GarrPlotInstanceID = PacketInfo.GarrPlotInstanceID;
+ owner->SendDirectMessage(plotRemoved.Write());
+ }
+
+ BuildingInfo.PacketInfo = buildingInfo;
+}
+
+bool Garrison::Building::CanActivate() const
+{
+ if (PacketInfo)
+ {
+ GarrBuildingEntry const* building = sGarrBuildingStore.AssertEntry(PacketInfo->GarrBuildingID);
+ if (PacketInfo->TimeBuilt + building->BuildDuration <= time(nullptr))
+ return true;
+ }
+
+ return false;
+}
+
+uint32 Garrison::Follower::GetItemLevel() const
+{
+ return (PacketInfo.ItemLevelWeapon + PacketInfo.ItemLevelArmor) / 2;
+}
diff --git a/src/server/game/Garrison/Garrison.h b/src/server/game/Garrison/Garrison.h
new file mode 100644
index 00000000000..71d67a1b6b5
--- /dev/null
+++ b/src/server/game/Garrison/Garrison.h
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef Garrison_h__
+#define Garrison_h__
+
+#include "Player.h"
+#include "GarrisonPackets.h"
+
+enum GarrisonFactionIndex
+{
+ GARRISON_FACTION_INDEX_HORDE = 0,
+ GARRISON_FACTION_INDEX_ALLIANCE = 1
+};
+
+enum GarrisonBuildingFlags
+{
+ GARRISON_BUILDING_FLAG_NEEDS_PLAN = 0x1
+};
+
+enum GarrisonFollowerFlags
+{
+ GARRISON_FOLLOWER_FLAG_UNIQUE = 0x1
+};
+
+enum GarrisonAbilityFlags
+{
+ GARRISON_ABILITY_FLAG_TRAIT = 0x01,
+ GARRISON_ABILITY_CANNOT_ROLL = 0x02,
+ GARRISON_ABILITY_HORDE_ONLY = 0x04,
+ GARRISON_ABILITY_ALLIANCE_ONLY = 0x08,
+ GARRISON_ABILITY_FLAG_CANNOT_REMOVE = 0x10,
+ GARRISON_ABILITY_FLAG_EXCLUSIVE = 0x20
+};
+
+enum GarrisonError
+{
+ GARRISON_SUCCESS = 0,
+ GARRISON_ERROR_INVALID_PLOT = 1,
+ GARRISON_ERROR_INVALID_BUILDINGID = 2,
+ GARRISON_ERROR_INVALID_PLOT_BUILDING = 7,
+ GARRISON_ERROR_NO_BUILDING = 8,
+ GARRISON_ERROR_SPECIALIZATION_KNOWN = 19,
+ GARRISON_ERROR_BLUEPRINT_KNOWN = 21,
+ GARRISON_ERROR_BLUEPRINT_NOT_KNOWN = 22,
+ GARRISON_ERROR_BUILDING_EXISTS = 24,
+ GARRISON_ERROR_NOT_ENOUGH_CURRENCY = 46,
+ GARRISON_ERROR_NOT_ENOUGH_GOLD = 47,
+
+ GARRISON_GENERIC_UNKNOWN_ERROR = 255 // custom value for packets whose handlers only check if error != 0
+};
+
+enum GarrisonFollowerStatus
+{
+ FOLLOWER_STATUS_FAVORITE = 0x01,
+ FOLLOWER_STATUS_EXHAUSTED = 0x02,
+ FOLLOWER_STATUS_INACTIVE = 0x04
+};
+
+class GameObject;
+class Map;
+
+class Garrison
+{
+public:
+ struct Building
+ {
+ bool CanActivate() const;
+
+ ObjectGuid Guid;
+ Optional<WorldPackets::Garrison::GarrisonBuildingInfo> PacketInfo;
+ };
+
+ struct Plot
+ {
+ GameObject* CreateGameObject(Map* map, GarrisonFactionIndex faction);
+ void DeleteGameObject(Map* map);
+ void ClearBuildingInfo(Player* owner);
+ void SetBuildingInfo(WorldPackets::Garrison::GarrisonBuildingInfo const& buildingInfo, Player* owner);
+
+ WorldPackets::Garrison::GarrisonPlotInfo PacketInfo;
+ uint32 EmptyGameObjectId = 0;
+ uint32 GarrSiteLevelPlotInstId = 0;
+ Building BuildingInfo;
+ };
+
+ struct Follower
+ {
+ uint32 GetItemLevel() const;
+
+ WorldPackets::Garrison::GarrisonFollower PacketInfo;
+ };
+
+ explicit Garrison(Player* owner);
+
+ bool LoadFromDB(PreparedQueryResult garrison, PreparedQueryResult blueprints, PreparedQueryResult buildings,
+ PreparedQueryResult followers, PreparedQueryResult abilities);
+ void SaveToDB(SQLTransaction& trans);
+
+ bool Create(uint32 garrSiteId);
+ void Upgrade();
+
+ void Enter() const;
+ void Leave() const;
+
+ GarrisonFactionIndex GetFaction() const;
+
+ // Plots
+ std::vector<Plot*> GetPlots();
+ Plot* GetPlot(uint32 garrPlotInstanceId);
+ Plot const* GetPlot(uint32 garrPlotInstanceId) const;
+
+ // Buildings
+ void LearnBlueprint(uint32 garrBuildingId);
+ void UnlearnBlueprint(uint32 garrBuildingId);
+ void PlaceBuilding(uint32 garrPlotInstanceId, uint32 garrBuildingId);
+ void CancelBuildingConstruction(uint32 garrPlotInstanceId);
+
+ // Followers
+ void AddFollower(uint32 garrFollowerId);
+ Follower const* GetFollower(uint64 dbId) const;
+
+ void SendInfo();
+ void SendRemoteInfo() const;
+ void SendBlueprintAndSpecializationData();
+ void SendBuildingLandmarks(Player* receiver) const;
+
+ void ResetFollowerActivationLimit() { _followerActivationsRemainingToday = 1; }
+
+private:
+ Map* FindMap() const;
+ void InitializePlots();
+ GarrisonError CheckBuildingPlacement(uint32 garrPlotInstanceId, uint32 garrBuildingId) const;
+ GarrisonError CheckBuildingRemoval(uint32 garrPlotInstanceId) const;
+ Player* _owner;
+ GarrSiteLevelEntry const* _siteLevel;
+ uint32 _followerActivationsRemainingToday;
+
+ std::unordered_map<uint32 /*garrPlotInstanceId*/, Plot> _plots;
+ std::unordered_set<uint32 /*garrBuildingId*/> _knownBuildings;
+ std::unordered_map<uint64 /*dbId*/, Follower> _followers;
+ std::unordered_set<uint32> _followerIds;
+};
+
+#endif // Garrison_h__
diff --git a/src/server/game/Garrison/GarrisonMap.cpp b/src/server/game/Garrison/GarrisonMap.cpp
new file mode 100644
index 00000000000..b9cf63140b4
--- /dev/null
+++ b/src/server/game/Garrison/GarrisonMap.cpp
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "GarrisonMap.h"
+#include "Garrison.h"
+#include "ObjectAccessor.h"
+#include "ObjectGridLoader.h"
+#include "GameObject.h"
+
+class GarrisonGridLoader
+{
+public:
+ GarrisonGridLoader(NGridType* grid, GarrisonMap* map, Cell const& cell)
+ : i_cell(cell), i_grid(grid), i_map(map), i_garrison(map->GetGarrison()), i_gameObjects(0), i_creatures(0)
+ { }
+
+ void Visit(GameObjectMapType& m);
+ void Visit(CreatureMapType& m);
+
+ void LoadN();
+
+ template<class T> static void SetObjectCell(T* obj, CellCoord const& cellCoord);
+ template<class T> void Visit(GridRefManager<T>& /*m*/) { }
+
+private:
+ Cell i_cell;
+ NGridType* i_grid;
+ GarrisonMap* i_map;
+ Garrison* i_garrison;
+ uint32 i_gameObjects;
+ uint32 i_creatures;
+};
+
+void GarrisonGridLoader::LoadN()
+{
+ if (i_garrison)
+ {
+ i_cell.data.Part.cell_y = 0;
+ for (uint32 x = 0; x < MAX_NUMBER_OF_CELLS; ++x)
+ {
+ i_cell.data.Part.cell_x = x;
+ for (uint32 y = 0; y < MAX_NUMBER_OF_CELLS; ++y)
+ {
+ i_cell.data.Part.cell_y = y;
+
+ //Load creatures and game objects
+ TypeContainerVisitor<GarrisonGridLoader, GridTypeMapContainer> visitor(*this);
+ i_grid->VisitGrid(x, y, visitor);
+ }
+ }
+ }
+
+ TC_LOG_DEBUG("maps", "%u GameObjects and %u Creatures loaded for grid %u on map %u", i_gameObjects, i_creatures, i_grid->GetGridId(), i_map->GetId());
+}
+
+void GarrisonGridLoader::Visit(GameObjectMapType& m)
+{
+ std::vector<Garrison::Plot*> plots = i_garrison->GetPlots();
+ if (!plots.empty())
+ {
+ CellCoord cellCoord = i_cell.GetCellCoord();
+ for (Garrison::Plot* plot : plots)
+ {
+ Position const& spawn = plot->PacketInfo.PlotPos;
+ if (cellCoord != Trinity::ComputeCellCoord(spawn.GetPositionX(), spawn.GetPositionY()))
+ continue;
+
+ GameObject* go = plot->CreateGameObject(i_map, i_garrison->GetFaction());
+ if (!go)
+ continue;
+
+ go->AddToGrid(m);
+ ObjectGridLoader::SetObjectCell(go, cellCoord);
+ go->AddToWorld();
+ ++i_gameObjects;
+ }
+ }
+}
+
+void GarrisonGridLoader::Visit(CreatureMapType& /*m*/)
+{
+
+}
+
+GarrisonMap::GarrisonMap(uint32 id, time_t expiry, uint32 instanceId, Map* parent, ObjectGuid const& owner)
+ : Map(id, expiry, instanceId, DIFFICULTY_NORMAL, parent), _owner(owner), _loadingPlayer(nullptr)
+{
+ GarrisonMap::InitVisibilityDistance();
+}
+
+void GarrisonMap::LoadGridObjects(NGridType* grid, Cell const& cell)
+{
+ Map::LoadGridObjects(grid, cell);
+
+ GarrisonGridLoader loader(grid, this, cell);
+ loader.LoadN();
+}
+
+Garrison* GarrisonMap::GetGarrison()
+{
+ if (_loadingPlayer)
+ return _loadingPlayer->GetGarrison();
+
+ if (Player* owner = ObjectAccessor::FindConnectedPlayer(_owner))
+ return owner->GetGarrison();
+
+ return nullptr;
+}
+
+void GarrisonMap::InitVisibilityDistance()
+{
+ //init visibility distance for instances
+ m_VisibleDistance = World::GetMaxVisibleDistanceInBGArenas();
+ m_VisibilityNotifyPeriod = World::GetVisibilityNotifyPeriodInBGArenas();
+}
+
+bool GarrisonMap::AddPlayerToMap(Player* player, bool initPlayer /*= true*/)
+{
+ if (player->GetGUID() == _owner)
+ _loadingPlayer = player;
+
+ bool result = Map::AddPlayerToMap(player, initPlayer);
+
+ if (player->GetGUID() == _owner)
+ _loadingPlayer = nullptr;
+
+ return result;
+}
diff --git a/src/server/game/Garrison/GarrisonMap.h b/src/server/game/Garrison/GarrisonMap.h
new file mode 100644
index 00000000000..5f5c9b134b7
--- /dev/null
+++ b/src/server/game/Garrison/GarrisonMap.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GarrisonMap_h__
+#define GarrisonMap_h__
+
+#include "Map.h"
+
+class Garrison;
+class Player;
+
+class GarrisonMap : public Map
+{
+public:
+ GarrisonMap(uint32 id, time_t, uint32 instanceId, Map* parent, ObjectGuid const& owner);
+
+ void LoadGridObjects(NGridType* grid, Cell const& cell) override;
+ Garrison* GetGarrison();
+
+ void InitVisibilityDistance() override;
+
+ bool AddPlayerToMap(Player* player, bool initPlayer = true) override;
+
+private:
+ ObjectGuid _owner;
+ Player* _loadingPlayer; ///< @workaround Player is not registered in ObjectAccessor during login
+};
+
+#endif // GarrisonMap_h__
diff --git a/src/server/game/Garrison/GarrisonMgr.cpp b/src/server/game/Garrison/GarrisonMgr.cpp
new file mode 100644
index 00000000000..f95acef952c
--- /dev/null
+++ b/src/server/game/Garrison/GarrisonMgr.cpp
@@ -0,0 +1,353 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "GarrisonMgr.h"
+#include "Containers.h"
+#include "DatabaseEnv.h"
+#include "Garrison.h"
+#include "ObjectDefines.h"
+#include "World.h"
+
+void GarrisonMgr::Initialize()
+{
+ for (GarrSiteLevelPlotInstEntry const* plotInstance : sGarrSiteLevelPlotInstStore)
+ _garrisonPlotInstBySiteLevel[plotInstance->GarrSiteLevelID].push_back(plotInstance);
+
+ for (GameObjectsEntry const* gameObject : sGameObjectsStore)
+ if (gameObject->Type == GAMEOBJECT_TYPE_GARRISON_PLOT)
+ _garrisonPlots[gameObject->MapID][gameObject->Data[0]] = gameObject;
+
+ for (GarrPlotBuildingEntry const* plotBuilding : sGarrPlotBuildingStore)
+ _garrisonBuildingsByPlot[plotBuilding->GarrPlotID].insert(plotBuilding->GarrBuildingID);
+
+ for (GarrBuildingPlotInstEntry const* buildingPlotInst : sGarrBuildingPlotInstStore)
+ _garrisonBuildingPlotInstances[MAKE_PAIR64(buildingPlotInst->GarrBuildingID, buildingPlotInst->GarrSiteLevelPlotInstID)] = buildingPlotInst->ID;
+
+ for (GarrBuildingEntry const* building : sGarrBuildingStore)
+ _garrisonBuildingsByType[building->Type].push_back(building);
+
+ for (GarrFollowerXAbilityEntry const* followerAbility : sGarrFollowerXAbilityStore)
+ {
+ if (GarrAbilityEntry const* ability = sGarrAbilityStore.LookupEntry(followerAbility->GarrAbilityID))
+ {
+ if (!(ability->Flags & GARRISON_ABILITY_CANNOT_ROLL) && ability->Flags & GARRISON_ABILITY_FLAG_TRAIT)
+ _garrisonFollowerRandomTraits.insert(ability);
+
+ if (followerAbility->FactionIndex < 2)
+ {
+ if (ability->Flags & GARRISON_ABILITY_FLAG_TRAIT)
+ _garrisonFollowerAbilities[followerAbility->FactionIndex][followerAbility->GarrFollowerID].Traits.insert(ability);
+ else
+ _garrisonFollowerAbilities[followerAbility->FactionIndex][followerAbility->GarrFollowerID].Counters.insert(ability);
+ }
+ }
+ }
+
+ InitializeDbIdSequences();
+ LoadFollowerClassSpecAbilities();
+}
+
+GarrSiteLevelEntry const* GarrisonMgr::GetGarrSiteLevelEntry(uint32 garrSiteId, uint32 level) const
+{
+ for (GarrSiteLevelEntry const* garrSiteLevel : sGarrSiteLevelStore)
+ if (garrSiteLevel->SiteID == garrSiteId && garrSiteLevel->Level == level)
+ return garrSiteLevel;
+
+ return nullptr;
+}
+
+std::vector<GarrSiteLevelPlotInstEntry const*> const* GarrisonMgr::GetGarrPlotInstForSiteLevel(uint32 garrSiteLevelId) const
+{
+ auto itr = _garrisonPlotInstBySiteLevel.find(garrSiteLevelId);
+ if (itr != _garrisonPlotInstBySiteLevel.end())
+ return &itr->second;
+
+ return nullptr;
+}
+
+GameObjectsEntry const* GarrisonMgr::GetPlotGameObject(uint32 mapId, uint32 garrPlotInstanceId) const
+{
+ auto mapItr = _garrisonPlots.find(mapId);
+ if (mapItr != _garrisonPlots.end())
+ {
+ auto plotItr = mapItr->second.find(garrPlotInstanceId);
+ if (plotItr != mapItr->second.end())
+ return plotItr->second;
+ }
+
+ return nullptr;
+}
+
+bool GarrisonMgr::IsPlotMatchingBuilding(uint32 garrPlotId, uint32 garrBuildingId) const
+{
+ auto plotItr = _garrisonBuildingsByPlot.find(garrPlotId);
+ if (plotItr != _garrisonBuildingsByPlot.end())
+ return plotItr->second.count(garrBuildingId) > 0;
+
+ return false;
+}
+
+uint32 GarrisonMgr::GetGarrBuildingPlotInst(uint32 garrBuildingId, uint32 garrSiteLevelPlotInstId) const
+{
+ auto itr = _garrisonBuildingPlotInstances.find(MAKE_PAIR64(garrBuildingId, garrSiteLevelPlotInstId));
+ if (itr != _garrisonBuildingPlotInstances.end())
+ return itr->second;
+
+ return 0;
+}
+
+GarrBuildingEntry const* GarrisonMgr::GetPreviousLevelBuilding(uint32 buildingType, uint32 currentLevel) const
+{
+ auto itr = _garrisonBuildingsByType.find(buildingType);
+ if (itr != _garrisonBuildingsByType.end())
+ for (GarrBuildingEntry const* building : itr->second)
+ if (building->Level == currentLevel - 1)
+ return building;
+
+ return nullptr;
+}
+
+uint64 GarrisonMgr::GenerateFollowerDbId()
+{
+ if (_followerDbIdGenerator >= std::numeric_limits<uint64>::max())
+ {
+ TC_LOG_ERROR("misc", "Garrison follower db id overflow! Can't continue, shutting down server. ");
+ World::StopNow(ERROR_EXIT_CODE);
+ }
+
+ return _followerDbIdGenerator++;
+}
+
+uint32 const AbilitiesForQuality[][2] =
+{
+ // Counters, Traits
+ { 0, 0 },
+ { 1, 0 },
+ { 1, 1 }, // Uncommon
+ { 1, 2 }, // Rare
+ { 2, 3 }, // Epic
+ { 2, 3 } // Legendary
+};
+
+std::list<GarrAbilityEntry const*> GarrisonMgr::RollFollowerAbilities(GarrFollowerEntry const* follower, uint32 quality, uint32 faction, bool initial) const
+{
+ ASSERT(faction < 2);
+
+ bool hasForcedExclusiveTrait = false;
+ std::list<GarrAbilityEntry const*> result;
+ int32 slots[2] = { AbilitiesForQuality[quality][0], AbilitiesForQuality[quality][1] };
+
+ GarrAbilities const* abilities = nullptr;
+ auto itr = _garrisonFollowerAbilities[faction].find(follower->ID);
+ if (itr != _garrisonFollowerAbilities[faction].end())
+ abilities = &itr->second;
+
+ std::list<GarrAbilityEntry const*> abilityList, forcedAbilities, traitList, forcedTraits;
+ if (abilities)
+ {
+ for (GarrAbilityEntry const* ability : abilities->Counters)
+ {
+ if (ability->Flags & GARRISON_ABILITY_HORDE_ONLY && faction != GARRISON_FACTION_INDEX_HORDE)
+ continue;
+ else if (ability->Flags & GARRISON_ABILITY_ALLIANCE_ONLY && faction != GARRISON_FACTION_INDEX_ALLIANCE)
+ continue;
+
+ if (ability->Flags & GARRISON_ABILITY_FLAG_CANNOT_REMOVE)
+ forcedAbilities.push_back(ability);
+ else
+ abilityList.push_back(ability);
+ }
+
+ for (GarrAbilityEntry const* ability : abilities->Traits)
+ {
+ if (ability->Flags & GARRISON_ABILITY_HORDE_ONLY && faction != GARRISON_FACTION_INDEX_HORDE)
+ continue;
+ else if (ability->Flags & GARRISON_ABILITY_ALLIANCE_ONLY && faction != GARRISON_FACTION_INDEX_ALLIANCE)
+ continue;
+
+ if (ability->Flags & GARRISON_ABILITY_FLAG_CANNOT_REMOVE)
+ forcedTraits.push_back(ability);
+ else
+ traitList.push_back(ability);
+ }
+ }
+
+ Trinity::Containers::RandomResizeList(abilityList, std::max<int32>(0, slots[0] - forcedAbilities.size()));
+ Trinity::Containers::RandomResizeList(traitList, std::max<int32>(0, slots[1] - forcedTraits.size()));
+
+ // Add abilities specified in GarrFollowerXAbility.db2 before generic classspec ones on follower creation
+ if (initial)
+ {
+ forcedAbilities.splice(forcedAbilities.end(), abilityList);
+ forcedTraits.splice(forcedTraits.end(), traitList);
+ }
+
+ forcedAbilities.sort();
+ abilityList.sort();
+ forcedTraits.sort();
+ traitList.sort();
+
+ // check if we have a trait from exclusive category
+ for (GarrAbilityEntry const* ability : forcedTraits)
+ {
+ if (ability->Flags & GARRISON_ABILITY_FLAG_EXCLUSIVE)
+ {
+ hasForcedExclusiveTrait = true;
+ break;
+ }
+ }
+
+ if (slots[0] > forcedAbilities.size() + abilityList.size())
+ {
+ std::list<GarrAbilityEntry const*> classSpecAbilities = GetClassSpecAbilities(follower, faction);
+ std::list<GarrAbilityEntry const*> classSpecAbilitiesTemp, classSpecAbilitiesTemp2;
+ classSpecAbilitiesTemp2.swap(abilityList);
+ std::set_difference(classSpecAbilities.begin(), classSpecAbilities.end(), forcedAbilities.begin(), forcedAbilities.end(), std::back_inserter(classSpecAbilitiesTemp));
+ std::set_union(classSpecAbilitiesTemp.begin(), classSpecAbilitiesTemp.end(), classSpecAbilitiesTemp2.begin(), classSpecAbilitiesTemp2.end(), std::back_inserter(abilityList));
+
+ Trinity::Containers::RandomResizeList(abilityList, std::max<int32>(0, slots[0] - forcedAbilities.size()));
+ }
+
+ if (slots[1] > forcedTraits.size() + traitList.size())
+ {
+ std::list<GarrAbilityEntry const*> genericTraits, genericTraitsTemp;
+ for (GarrAbilityEntry const* ability : _garrisonFollowerRandomTraits)
+ {
+ if (ability->Flags & GARRISON_ABILITY_HORDE_ONLY && faction != GARRISON_FACTION_INDEX_HORDE)
+ continue;
+ else if (ability->Flags & GARRISON_ABILITY_ALLIANCE_ONLY && faction != GARRISON_FACTION_INDEX_ALLIANCE)
+ continue;
+
+ // forced exclusive trait exists, skip other ones entirely
+ if (hasForcedExclusiveTrait && ability->Flags & GARRISON_ABILITY_FLAG_EXCLUSIVE)
+ continue;
+
+ genericTraitsTemp.push_back(ability);
+ }
+
+ std::set_difference(genericTraitsTemp.begin(), genericTraitsTemp.end(), forcedTraits.begin(), forcedTraits.end(), std::back_inserter(genericTraits));
+ genericTraits.splice(genericTraits.begin(), traitList);
+ // "split" the list into two parts [nonexclusive, exclusive] to make selection later easier
+ genericTraits.sort([](GarrAbilityEntry const* a1, GarrAbilityEntry const* a2)
+ {
+ uint32 e1 = a1->Flags & GARRISON_ABILITY_FLAG_EXCLUSIVE;
+ uint32 e2 = a2->Flags & GARRISON_ABILITY_FLAG_EXCLUSIVE;
+ if (e1 != e2)
+ return e1 < e2;
+
+ return a1->ID < a2->ID;
+ });
+ genericTraits.unique();
+
+ std::size_t firstExclusive = 0, total = genericTraits.size();
+ for (auto itr = genericTraits.begin(); itr != genericTraits.end(); ++itr, ++firstExclusive)
+ if ((*itr)->Flags & GARRISON_ABILITY_FLAG_EXCLUSIVE)
+ break;
+
+ while (traitList.size() < std::max<int32>(0, slots[1] - forcedTraits.size()) && total)
+ {
+ auto itr = genericTraits.begin();
+ std::advance(itr, urand(0, total-- - 1));
+ if ((*itr)->Flags & GARRISON_ABILITY_FLAG_EXCLUSIVE)
+ total = firstExclusive; // selected exclusive trait - no other can be selected now
+ else
+ --firstExclusive;
+
+ traitList.push_back(*itr);
+ genericTraits.erase(itr);
+ }
+ }
+
+ result.splice(result.end(), forcedAbilities);
+ result.splice(result.end(), abilityList);
+ result.splice(result.end(), forcedTraits);
+ result.splice(result.end(), traitList);
+
+ return result;
+}
+
+std::list<GarrAbilityEntry const*> GarrisonMgr::GetClassSpecAbilities(GarrFollowerEntry const* follower, uint32 faction) const
+{
+ std::list<GarrAbilityEntry const*> abilities;
+ uint32 classSpecId;
+ switch (faction)
+ {
+ case GARRISON_FACTION_INDEX_HORDE:
+ classSpecId = follower->HordeGarrClassSpecID;
+ break;
+ case GARRISON_FACTION_INDEX_ALLIANCE:
+ classSpecId = follower->AllianceGarrClassSpecID;
+ break;
+ default:
+ return abilities;
+ }
+
+ if (!sGarrClassSpecStore.LookupEntry(classSpecId))
+ return abilities;
+
+ auto itr = _garrisonFollowerClassSpecAbilities.find(classSpecId);
+ if (itr != _garrisonFollowerClassSpecAbilities.end())
+ abilities = itr->second;
+
+ return abilities;
+}
+
+void GarrisonMgr::InitializeDbIdSequences()
+{
+ if (QueryResult result = CharacterDatabase.Query("SELECT MAX(dbId) FROM character_garrison_followers"))
+ _followerDbIdGenerator = (*result)[0].GetUInt64() + 1;
+}
+
+void GarrisonMgr::LoadFollowerClassSpecAbilities()
+{
+ QueryResult result = WorldDatabase.Query("SELECT classSpecId, abilityId FROM garrison_follower_class_spec_abilities");
+ if (!result)
+ {
+ TC_LOG_INFO("server.loading", ">> Loaded 0 garrison follower class spec abilities. DB table `garrison_follower_class_spec_abilities` is empty.");
+ return;
+ }
+
+ uint32 count = 0;
+ do
+ {
+ Field* fields = result->Fetch();
+ uint32 classSpecId = fields[0].GetUInt32();
+ uint32 abilityId = fields[1].GetUInt32();
+
+ if (!sGarrClassSpecStore.LookupEntry(classSpecId))
+ {
+ TC_LOG_ERROR("sql.sql", "Non-existing GarrClassSpec.db2 entry %u was referenced in `garrison_follower_class_spec_abilities` by row (%u, %u).", classSpecId, classSpecId, abilityId);
+ continue;
+ }
+
+ GarrAbilityEntry const* ability = sGarrAbilityStore.LookupEntry(abilityId);
+ if (!ability)
+ {
+ TC_LOG_ERROR("sql.sql", "Non-existing GarrAbility.db2 entry %u was referenced in `garrison_follower_class_spec_abilities` by row (%u, %u).", abilityId, classSpecId, abilityId);
+ continue;
+ }
+
+ _garrisonFollowerClassSpecAbilities[classSpecId].push_back(ability);
+ ++count;
+
+ } while (result->NextRow());
+
+ for (auto& pair : _garrisonFollowerClassSpecAbilities)
+ pair.second.sort();
+
+ TC_LOG_INFO("server.loading", ">> Loaded %u garrison follower class spec abilities.", count);
+}
diff --git a/src/server/game/Garrison/GarrisonMgr.h b/src/server/game/Garrison/GarrisonMgr.h
new file mode 100644
index 00000000000..63810e3c3ab
--- /dev/null
+++ b/src/server/game/Garrison/GarrisonMgr.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GarrisonMgr_h__
+#define GarrisonMgr_h__
+
+#include "DB2Stores.h"
+#include <unordered_set>
+
+struct GarrAbilities
+{
+ std::unordered_set<GarrAbilityEntry const*> Counters;
+ std::unordered_set<GarrAbilityEntry const*> Traits;
+};
+
+class GarrisonMgr
+{
+public:
+ static GarrisonMgr& Instance()
+ {
+ static GarrisonMgr instance;
+ return instance;
+ }
+
+ void Initialize();
+
+ GarrSiteLevelEntry const* GetGarrSiteLevelEntry(uint32 garrSiteId, uint32 level) const;
+ std::vector<GarrSiteLevelPlotInstEntry const*> const* GetGarrPlotInstForSiteLevel(uint32 garrSiteLevelId) const;
+ GameObjectsEntry const* GetPlotGameObject(uint32 mapId, uint32 garrPlotInstanceId) const;
+ bool IsPlotMatchingBuilding(uint32 garrPlotId, uint32 garrBuildingId) const;
+ uint32 GetGarrBuildingPlotInst(uint32 garrBuildingId, uint32 garrSiteLevelPlotInstId) const;
+ GarrBuildingEntry const* GetPreviousLevelBuilding(uint32 buildingType, uint32 currentLevel) const;
+ uint64 GenerateFollowerDbId();
+ std::list<GarrAbilityEntry const*> RollFollowerAbilities(GarrFollowerEntry const* follower, uint32 quality, uint32 faction, bool initial) const;
+ std::list<GarrAbilityEntry const*> GetClassSpecAbilities(GarrFollowerEntry const* follower, uint32 faction) const;
+
+private:
+ void InitializeDbIdSequences();
+ void LoadFollowerClassSpecAbilities();
+
+ std::unordered_map<uint32 /*garrSiteId*/, std::vector<GarrSiteLevelPlotInstEntry const*>> _garrisonPlotInstBySiteLevel;
+ std::unordered_map<uint32 /*mapId*/, std::unordered_map<uint32 /*garrPlotId*/, GameObjectsEntry const*>> _garrisonPlots;
+ std::unordered_map<uint32 /*garrPlotId*/, std::unordered_set<uint32/*garrBuildingId*/>> _garrisonBuildingsByPlot;
+ std::unordered_map<uint64 /*garrBuildingId | garrSiteLevelPlotInstId << 32*/, uint32 /*garrBuildingPlotInstId*/> _garrisonBuildingPlotInstances;
+ std::unordered_map<uint32 /*buildingType*/, std::vector<GarrBuildingEntry const*>> _garrisonBuildingsByType;
+ std::unordered_map<uint32 /*garrFollowerId*/, GarrAbilities> _garrisonFollowerAbilities[2];
+ std::unordered_map<uint32 /*classSpecId*/, std::list<GarrAbilityEntry const*>> _garrisonFollowerClassSpecAbilities;
+ std::set<GarrAbilityEntry const*> _garrisonFollowerRandomTraits;
+
+ uint64 _followerDbIdGenerator = UI64LIT(1);
+};
+
+#define sGarrisonMgr GarrisonMgr::Instance()
+
+#endif // GarrisonMgr_h__
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 6beae09bb20..fa52653811f 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -474,7 +474,7 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields)
creatureTemplate.expansion = fields[17].GetInt16();
creatureTemplate.expansionUnknown = fields[18].GetUInt16();
creatureTemplate.faction = fields[19].GetUInt16();
- creatureTemplate.npcflag = fields[20].GetUInt32();
+ creatureTemplate.npcflag = fields[20].GetUInt64();
creatureTemplate.speed_walk = fields[21].GetFloat();
creatureTemplate.speed_run = fields[22].GetFloat();
creatureTemplate.scale = fields[23].GetFloat();
@@ -678,9 +678,9 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo)
if (cInfo->npcflag != difficultyInfo->npcflag)
{
- TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, `npcflag`: %u) has different `npcflag` in difficulty %u mode (Entry: %u, `npcflag`: %u).",
+ TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, `npcflag`: " UI64FMTD ") has different `npcflag` in difficulty %u mode (Entry: %u, `npcflag`: " UI64FMTD ").",
cInfo->Entry, cInfo->npcflag, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->npcflag);
- TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `npcflag`=%u WHERE `entry`=%u;",
+ TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `npcflag`=" UI64FMTD " WHERE `entry`=%u;",
cInfo->npcflag, cInfo->DifficultyEntry[diff]);
continue;
}
@@ -1171,7 +1171,7 @@ void ObjectMgr::LoadEquipmentTemplates()
uint32 oldMSTime = getMSTime();
// 0 1 2 3 4
- QueryResult result = WorldDatabase.Query("SELECT entry, id, itemEntry1, itemEntry2, itemEntry3 FROM creature_equip_template");
+ QueryResult result = WorldDatabase.Query("SELECT CreatureID, ID, ItemID1, ItemID2, ItemID3 FROM creature_equip_template");
if (!result)
{
@@ -1188,7 +1188,7 @@ void ObjectMgr::LoadEquipmentTemplates()
if (!sObjectMgr->GetCreatureTemplate(entry))
{
- TC_LOG_ERROR("sql.sql", "Creature template (Entry: %u) does not exist but has a record in `creature_equip_template`", entry);
+ TC_LOG_ERROR("sql.sql", "Creature template (CreatureID: %u) does not exist but has a record in `creature_equip_template`", entry);
continue;
}
@@ -1214,7 +1214,7 @@ void ObjectMgr::LoadEquipmentTemplates()
if (!dbcItem)
{
- TC_LOG_ERROR("sql.sql", "Unknown item (entry=%u) in creature_equip_template.itemEntry%u for entry = %u and id=%u, forced to 0.",
+ TC_LOG_ERROR("sql.sql", "Unknown item (ID=%u) in creature_equip_template.ItemID%u for CreatureID = %u and ID=%u, forced to 0.",
equipmentInfo.ItemEntry[i], i+1, entry, id);
equipmentInfo.ItemEntry[i] = 0;
continue;
@@ -1230,7 +1230,7 @@ void ObjectMgr::LoadEquipmentTemplates()
dbcItem->InventoryType != INVTYPE_THROWN &&
dbcItem->InventoryType != INVTYPE_RANGEDRIGHT)
{
- TC_LOG_ERROR("sql.sql", "Item (entry=%u) in creature_equip_template.itemEntry%u for entry = %u and id = %u is not equipable in a hand, forced to 0.",
+ TC_LOG_ERROR("sql.sql", "Item (ID=%u) in creature_equip_template.ItemID%u for CreatureID = %u and ID = %u is not equipable in a hand, forced to 0.",
equipmentInfo.ItemEntry[i], i+1, entry, id);
equipmentInfo.ItemEntry[i] = 0;
}
@@ -1261,7 +1261,7 @@ uint32 ObjectMgr::ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData co
return cinfo->GetRandomValidModelId();
}
-void ObjectMgr::ChooseCreatureFlags(const CreatureTemplate* cinfo, uint32& npcflag, uint32& unit_flags, uint32& dynamicflags, const CreatureData* data /*= NULL*/)
+void ObjectMgr::ChooseCreatureFlags(CreatureTemplate const* cinfo, uint64& npcflag, uint32& unit_flags, uint32& dynamicflags, CreatureData const* data /*= NULL*/)
{
npcflag = cinfo->npcflag;
unit_flags = cinfo->unit_flags;
@@ -1743,11 +1743,11 @@ void ObjectMgr::LoadCreatures()
data.spawnMask = fields[15].GetUInt32();
int16 gameEvent = fields[16].GetInt8();
uint32 PoolId = fields[17].GetUInt32();
- data.npcflag = fields[18].GetUInt32();
+ data.npcflag = fields[18].GetUInt64();
data.unit_flags = fields[19].GetUInt32();
data.dynamicflags = fields[20].GetUInt32();
- data.phaseid = fields[21].GetUInt32();
- data.phaseGroup = fields[22].GetUInt32();
+ data.phaseid = fields[21].GetUInt32();
+ data.phaseGroup = fields[22].GetUInt32();
MapEntry const* mapEntry = sMapStore.LookupEntry(data.mapid);
if (!mapEntry)
@@ -1825,6 +1825,25 @@ void ObjectMgr::LoadCreatures()
data.phaseGroup = 0;
}
+ if (data.phaseid)
+ {
+ PhaseEntry const* phase = sPhaseStore.LookupEntry(data.phaseid);
+ if (!phase)
+ {
+ TC_LOG_ERROR("sql.sql", "Table `creature` have creature (GUID: " UI64FMTD " Entry: %u) with `phaseid` %u does not exist, set to 0", guid, data.id, data.phaseid);
+ data.phaseid = 0;
+ }
+ }
+
+ if (data.phaseGroup)
+ {
+ if (sDB2Manager.GetPhasesForGroup(data.phaseGroup).empty())
+ {
+ TC_LOG_ERROR("sql.sql", "Table `creature` have creature (GUID: " UI64FMTD " Entry: %u) with `phasegroup` %u does not exist, set to 0", guid, data.id, data.phaseGroup);
+ data.phaseGroup = 0;
+ }
+ }
+
if (sWorld->getBoolConfig(CONFIG_CALCULATE_CREATURE_ZONE_AREA_DATA))
{
uint32 zoneId = 0;
@@ -2084,8 +2103,8 @@ void ObjectMgr::LoadGameobjects()
int16 gameEvent = fields[15].GetInt8();
uint32 PoolId = fields[16].GetUInt32();
- data.phaseid = fields[17].GetUInt32();
- data.phaseGroup = fields[18].GetUInt32();
+ data.phaseid = fields[17].GetUInt32();
+ data.phaseGroup = fields[18].GetUInt32();
if (data.phaseGroup && data.phaseid)
{
@@ -2093,6 +2112,25 @@ void ObjectMgr::LoadGameobjects()
data.phaseGroup = 0;
}
+ if (data.phaseid)
+ {
+ PhaseEntry const* phase = sPhaseStore.LookupEntry(data.phaseid);
+ if (!phase)
+ {
+ TC_LOG_ERROR("sql.sql", "Table `gameobject` have gameobject (GUID: " UI64FMTD " Entry: %u) with `phaseid` %u does not exist, set to 0", guid, data.id, data.phaseid);
+ data.phaseid = 0;
+ }
+ }
+
+ if (data.phaseGroup)
+ {
+ if (sDB2Manager.GetPhasesForGroup(data.phaseGroup).empty())
+ {
+ TC_LOG_ERROR("sql.sql", "Table `gameobject` have gameobject (GUID: " UI64FMTD " Entry: %u) with `phaseGroup` %u does not exist, set to 0", guid, data.id, data.phaseGroup);
+ data.phaseGroup = 0;
+ }
+ }
+
if (std::abs(data.orientation) > 2 * float(M_PI))
{
TC_LOG_ERROR("sql.sql", "Table `gameobject` has gameobject (GUID: " UI64FMTD " Entry: %u) with abs(`orientation`) > 2*PI (orientation is expressed in radians), normalized.", guid, data.id);
@@ -2204,6 +2242,25 @@ bool ObjectMgr::GetPlayerNameByGUID(ObjectGuid const& guid, std::string& name)
return false;
}
+bool ObjectMgr::GetPlayerNameAndClassByGUID(ObjectGuid const& guid, std::string& name, uint8& _class)
+{
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
+ {
+ name = player->GetName();
+ _class = player->getClass();
+ return true;
+ }
+
+ if (CharacterInfo const* characterInfo = sWorld->GetCharacterInfo(guid))
+ {
+ name = characterInfo->Name;
+ _class = characterInfo->Class;
+ return true;
+ }
+
+ return false;
+}
+
uint32 ObjectMgr::GetPlayerTeamByGUID(ObjectGuid const& guid)
{
if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
@@ -2328,7 +2385,7 @@ void FillDisenchantFields(uint32* disenchantID, uint32* requiredDisenchantSkill,
{
*disenchantID = 0;
*(int32*)requiredDisenchantSkill = -1;
- if ((itemTemplate.GetFlags() & (ITEM_PROTO_FLAG_CONJURED | ITEM_PROTO_FLAG_UNK6)) ||
+ if ((itemTemplate.GetFlags() & (ITEM_FLAG_CONJURED | ITEM_FLAG_UNK6)) ||
itemTemplate.GetBonding() == BIND_QUEST_ITEM || itemTemplate.GetArea() || itemTemplate.GetMap() ||
itemTemplate.GetMaxStackSize() > 1 ||
itemTemplate.GetQuality() < ITEM_QUALITY_UNCOMMON || itemTemplate.GetQuality() > ITEM_QUALITY_EPIC ||
@@ -3582,10 +3639,10 @@ void ObjectMgr::LoadQuests()
mExclusiveQuestGroups.clear();
QueryResult result = WorldDatabase.Query("SELECT "
- //0 1 2 3 4 5 6 7 8 9 10 11 12
- "ID, QuestType, QuestLevel, QuestPackageID, MinLevel, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, Float10, RewardMoney, RewardMoneyDifficulty, "
- //13 14 15 16 17 18 19 20 21
- "Float13, RewardBonusMoney, RewardDisplaySpell, RewardSpell, RewardHonor, RewardKillHonor, StartItem, Flags, FlagsEx, "
+ //0 1 2 3 4 5 6 7 8 9 10
+ "ID, QuestType, QuestLevel, QuestPackageID, MinLevel, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, "
+ //11 12 13 14 15 16 17 18 19 20 21
+ "RewardMoney, RewardMoneyDifficulty, Float13, RewardBonusMoney, RewardDisplaySpell, RewardSpell, RewardHonor, RewardKillHonor, StartItem, Flags, FlagsEx, "
//22 23 24 25 26 27 28 29
"RewardItem1, RewardAmount1, ItemDrop1, ItemDropQuantity1, RewardItem2, RewardAmount2, ItemDrop2, ItemDropQuantity2, "
//30 31 32 33 34 35 36 37
@@ -5236,14 +5293,8 @@ void ObjectMgr::LoadNPCText()
uint32 oldMSTime = getMSTime();
QueryResult result = WorldDatabase.Query("SELECT ID, "
- "BroadcastTextID0, Probability0, "
- "BroadcastTextID1, Probability1, "
- "BroadcastTextID2, Probability2, "
- "BroadcastTextID3, Probability3, "
- "BroadcastTextID4, Probability4, "
- "BroadcastTextID5, Probability5, "
- "BroadcastTextID6, Probability6, "
- "BroadcastTextID7, Probability7"
+ "Probability0, Probability1, Probability2, Probability3, Probability4, Probability5, Probability6, Probability7, "
+ "BroadcastTextID0, BroadcastTextID1, BroadcastTextID2, BroadcastTextID3, BroadcastTextID4, BroadcastTextID5, BroadcastTextID6, BroadcastTextID7"
" FROM npc_text");
if (!result)
{
@@ -5268,27 +5319,30 @@ void ObjectMgr::LoadNPCText()
for (uint8 i = 0; i < MAX_NPC_TEXT_OPTIONS; ++i)
{
- npcText.Data[i].BroadcastTextID = fields[1 + i].GetUInt32();
- npcText.Data[i].Probability = fields[1 + i * 2].GetFloat();
+ npcText.Data[i].Probability = fields[1 + i].GetFloat();
+ npcText.Data[i].BroadcastTextID = fields[9 + i].GetUInt32();
}
- bool isValid = false;
for (uint8 i = 0; i < MAX_NPC_TEXT_OPTIONS; i++)
{
if (npcText.Data[i].BroadcastTextID)
{
if (!sBroadcastTextStore.LookupEntry(npcText.Data[i].BroadcastTextID))
{
- TC_LOG_ERROR("sql.sql", "NpcText (Id: %u) in table `npc_text` has non-existing or incompatible Index: %u BroadcastTextID %u.", textID, i, npcText.Data[i].BroadcastTextID);
+ TC_LOG_ERROR("sql.sql", "NPCText (ID: %u) has a non-existing or incompatible BroadcastText (ID: %u, Index: %u)", textID, npcText.Data[i].BroadcastTextID, i);
npcText.Data[i].BroadcastTextID = 0;
}
- else
- isValid = true;
}
}
- if (!isValid)
- TC_LOG_ERROR("sql.sql", "NpcText (Id: %u) in table `npc_text` is invalid", textID);
+ for (uint8 i = 0; i < MAX_NPC_TEXT_OPTIONS; i++)
+ {
+ if (npcText.Data[i].Probability > 0 && npcText.Data[i].BroadcastTextID == 0)
+ {
+ TC_LOG_ERROR("sql.sql", "NPCText (ID: %u) has a probability (Index: %u) set, but no BroadcastTextID to go with it", textID, i);
+ npcText.Data[i].Probability = 0;
+ }
+ }
}
while (result->NextRow());
@@ -6421,6 +6475,22 @@ void ObjectMgr::LoadGameObjectTemplate()
{
uint32 oldMSTime = getMSTime();
+ for (GameObjectsEntry const* db2go : sGameObjectsStore)
+ {
+ GameObjectTemplate& go = _gameObjectTemplateStore[db2go->ID];
+ go.entry = db2go->ID;
+ go.type = db2go->Type;
+ go.displayId = db2go->DisplayID;
+ go.name = db2go->Name->Str[sWorld->GetDefaultDbcLocale()];
+ go.faction = 0;
+ go.flags = 0;
+ go.size = db2go->Size;
+ memset(go.raw.data, 0, sizeof(go.raw.data));
+ memcpy(go.raw.data, db2go->Data, std::min(sizeof(db2go->Data), sizeof(go.raw.data)));
+ go.unkInt32 = 0;
+ go.ScriptId = 0;
+ }
+
// 0 1 2 3 4 5 6 7 8 9
QueryResult result = WorldDatabase.Query("SELECT entry, type, displayId, name, IconName, castBarCaption, unk1, faction, flags, size, "
// 10 11 12 13 14 15 16 17 18 19 20 21 22
@@ -7075,6 +7145,9 @@ void ObjectMgr::LoadQuestPOI()
int32 PlayerConditionID = fields[12].GetInt32();
int32 WoDUnk1 = fields[13].GetInt32();
+ if (!sObjectMgr->GetQuestTemplate(QuestID))
+ TC_LOG_ERROR("sql.sql", "`quest_poi` quest id (%u) Idx1 (%u) does not exist in `quest_template`", QuestID, Idx1);
+
QuestPOI POI(BlobIndex, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1);
if (QuestID < int32(POIs.size()) && Idx1 < int32(POIs[QuestID].size()))
{
@@ -8198,7 +8271,7 @@ void ObjectMgr::LoadGossipMenuItems()
gMenuItem.OptionText = fields[3].GetString();
gMenuItem.OptionBroadcastTextId = fields[4].GetUInt32();
gMenuItem.OptionType = fields[5].GetUInt8();
- gMenuItem.OptionNpcflag = fields[6].GetUInt32();
+ gMenuItem.OptionNpcflag = fields[6].GetUInt64();
gMenuItem.ActionMenuId = fields[7].GetUInt32();
gMenuItem.ActionPoiId = fields[8].GetUInt32();
gMenuItem.BoxCoded = fields[9].GetBool();
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index d55492ac0f1..4277ab74048 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -510,7 +510,7 @@ struct GossipMenuItems
std::string OptionText;
uint32 OptionBroadcastTextId;
uint32 OptionType;
- uint32 OptionNpcflag;
+ uint64 OptionNpcflag;
uint32 ActionMenuId;
uint32 ActionPoiId;
bool BoxCoded;
@@ -728,7 +728,7 @@ class ObjectMgr
CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId);
CreatureModelInfo const* GetCreatureModelRandomGender(uint32* displayID);
static uint32 ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = NULL);
- static void ChooseCreatureFlags(CreatureTemplate const* cinfo, uint32& npcflag, uint32& unit_flags, uint32& dynamicflags, CreatureData const* data = NULL);
+ static void ChooseCreatureFlags(CreatureTemplate const* cinfo, uint64& npcflag, uint32& unit_flags, uint32& dynamicflags, CreatureData const* data = NULL);
EquipmentInfo const* GetEquipmentInfo(uint32 entry, int8& id);
CreatureAddon const* GetCreatureAddon(ObjectGuid::LowType lowguid);
GameObjectAddon const* GetGameObjectAddon(ObjectGuid::LowType lowguid);
@@ -780,6 +780,7 @@ class ObjectMgr
* @return true if player was found, false otherwise
*/
static bool GetPlayerNameByGUID(ObjectGuid const& guid, std::string& name);
+ static bool GetPlayerNameAndClassByGUID(ObjectGuid const& guid, std::string& name, uint8& _class);
static uint32 GetPlayerTeamByGUID(ObjectGuid const& guid);
static uint32 GetPlayerAccountIdByGUID(ObjectGuid const& guid);
static uint32 GetPlayerAccountIdByPlayerName(std::string const& name);
@@ -1364,7 +1365,7 @@ class ObjectMgr
{
auto itr = _guidGenerators.find(high);
if (itr == _guidGenerators.end())
- itr = _guidGenerators.insert(std::make_pair(high, std::unique_ptr<ObjectGuidGenerator<high>>(new ObjectGuidGenerator<high>()))).first;
+ itr = _guidGenerators.insert(std::make_pair(high, Trinity::make_unique<ObjectGuidGenerator<high>>())).first;
return *itr->second;
}
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h
index 8a5386684bb..aea2d8ec383 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiers.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.h
@@ -736,18 +736,6 @@ namespace Trinity
NearestGameObjectTypeInObjectRangeCheck(NearestGameObjectTypeInObjectRangeCheck const&);
};
- class GameObjectWithDbGUIDCheck
- {
- public:
- GameObjectWithDbGUIDCheck(WorldObject const& /*obj*/, ObjectGuid::LowType db_guid) : i_db_guid(db_guid) { }
- bool operator()(GameObject const* go) const
- {
- return go->GetSpawnId() == i_db_guid;
- }
- private:
- ObjectGuid::LowType i_db_guid;
- };
-
// Unit checks
class MostHPMissingInRange
@@ -849,18 +837,6 @@ namespace Trinity
float i_range;
};
- class CreatureWithDbGUIDCheck
- {
- public:
- CreatureWithDbGUIDCheck(WorldObject const* /*obj*/, ObjectGuid::LowType lowguid) : i_lowguid(lowguid) { }
- bool operator()(Creature* u)
- {
- return u->GetSpawnId() == i_lowguid;
- }
- private:
- ObjectGuid::LowType i_lowguid;
- };
-
class AnyFriendlyUnitInObjectRangeCheck
{
public:
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp
index c73aeb3a719..fadf7e1970e 100644
--- a/src/server/game/Groups/Group.cpp
+++ b/src/server/game/Groups/Group.cpp
@@ -21,6 +21,7 @@
#include "WorldPacket.h"
#include "WorldSession.h"
#include "Player.h"
+#include "Pet.h"
#include "World.h"
#include "ObjectMgr.h"
#include "GroupMgr.h"
@@ -35,6 +36,7 @@
#include "Util.h"
#include "LFGMgr.h"
#include "UpdateFieldFlags.h"
+#include "PartyPackets.h"
Roll::Roll(ObjectGuid _guid, LootItem const& li) : itemGUID(_guid), itemid(li.itemid),
itemRandomPropId(li.randomPropertyId), itemRandomSuffix(li.randomSuffix), itemCount(li.count),
@@ -55,11 +57,15 @@ Loot* Roll::getLoot()
Group::Group() : m_leaderGuid(), m_leaderName(""), m_groupType(GROUPTYPE_NORMAL),
m_dungeonDifficulty(DIFFICULTY_NORMAL), m_raidDifficulty(DIFFICULTY_NORMAL_RAID), m_legacyRaidDifficulty(DIFFICULTY_10_N),
-m_bgGroup(NULL), m_bfGroup(NULL), m_lootMethod(FREE_FOR_ALL), m_lootThreshold(ITEM_QUALITY_UNCOMMON), m_looterGuid(),
-m_masterLooterGuid(), m_subGroupsCounts(NULL), m_guid(), m_counter(0), m_maxEnchantingLevel(0), m_dbStoreId(0)
+m_bgGroup(nullptr), m_bfGroup(nullptr), m_lootMethod(FREE_FOR_ALL), m_lootThreshold(ITEM_QUALITY_UNCOMMON), m_looterGuid(),
+m_masterLooterGuid(), m_subGroupsCounts(nullptr), m_guid(), m_counter(0), m_maxEnchantingLevel(0), m_dbStoreId(0),
+m_readyCheckStarted(false), m_readyCheckTimer(0), m_activeMarkers(0)
{
- for (uint8 i = 0; i < TARGETICONCOUNT; ++i)
+ for (uint8 i = 0; i < TARGET_ICONS_COUNT; ++i)
m_targetIcons[i].Clear();
+
+ for (uint8 i = 0; i < RAID_MARKERS_COUNT; ++i)
+ m_markers[i] = nullptr;
}
Group::~Group()
@@ -176,7 +182,7 @@ void Group::LoadGroupFromDB(Field* fields)
m_looterGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt64());
m_lootThreshold = ItemQualities(fields[3].GetUInt8());
- for (uint8 i = 0; i < TARGETICONCOUNT; ++i)
+ for (uint8 i = 0; i < TARGET_ICONS_COUNT; ++i)
m_targetIcons[i].SetRawValue(fields[4 + i].GetBinary());
m_groupType = GroupType(fields[12].GetUInt8());
@@ -199,7 +205,7 @@ void Group::LoadMemberFromDB(ObjectGuid::LowType guidLow, uint8 memberFlags, uin
member.guid = ObjectGuid::Create<HighGuid::Player>(guidLow);
// skip non-existed member
- if (!ObjectMgr::GetPlayerNameByGUID(member.guid, member.name))
+ if (!ObjectMgr::GetPlayerNameAndClassByGUID(member.guid, member.name, member._class))
{
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GROUP_MEMBER);
stmt->setUInt64(0, guidLow);
@@ -207,9 +213,10 @@ void Group::LoadMemberFromDB(ObjectGuid::LowType guidLow, uint8 memberFlags, uin
return;
}
- member.group = subgroup;
- member.flags = memberFlags;
- member.roles = roles;
+ member.group = subgroup;
+ member.flags = memberFlags;
+ member.roles = roles;
+ member.readyChecked = false;
m_memberSlots.push_back(member);
@@ -368,7 +375,7 @@ bool Group::AddMember(Player* player)
bool groupFound = false;
for (; subGroup < MAX_RAID_SUBGROUPS; ++subGroup)
{
- if (m_subGroupsCounts[subGroup] < MAXGROUPSIZE)
+ if (m_subGroupsCounts[subGroup] < MAX_GROUP_SIZE)
{
groupFound = true;
break;
@@ -380,11 +387,13 @@ bool Group::AddMember(Player* player)
}
MemberSlot member;
- member.guid = player->GetGUID();
- member.name = player->GetName();
- member.group = subGroup;
- member.flags = 0;
- member.roles = 0;
+ member.guid = player->GetGUID();
+ member.name = player->GetName();
+ member._class = player->getClass();
+ member.group = subGroup;
+ member.flags = 0;
+ member.roles = 0;
+ member.readyChecked = false;
m_memberSlots.push_back(member);
SubGroupCounterIncrease(subGroup);
@@ -407,7 +416,7 @@ bool Group::AddMember(Player* player)
if (!isRaidGroup()) // reset targetIcons for non-raid-groups
{
- for (uint8 i = 0; i < TARGETICONCOUNT; ++i)
+ for (uint8 i = 0; i < TARGET_ICONS_COUNT; ++i)
m_targetIcons[i].Clear();
}
@@ -455,7 +464,11 @@ bool Group::AddMember(Player* player)
}
}
}
+
player->SetGroupUpdateFlag(GROUP_UPDATE_FULL);
+ if (Pet* pet = player->GetPet())
+ pet->SetGroupUpdateFlag(GROUP_UPDATE_PET_FULL);
+
UpdatePlayerOutOfRange(player);
// quest related GO state dependent from raid membership
@@ -552,12 +565,6 @@ bool Group::RemoveMember(ObjectGuid guid, const RemoveMethod& method /*= GROUP_R
player->GetSession()->SendPacket(&data);
}
- // Do we really need to send this opcode?
- data.Initialize(SMSG_PARTY_UPDATE, 1+1+1+1+8+4+4+8);
- data << uint8(0x10) << uint8(0) << uint8(0) << uint8(0);
- data << m_guid << uint32(m_counter) << uint32(0) << uint64(0);
- player->GetSession()->SendPacket(&data);
-
_homebindIfInstance(player);
}
@@ -644,7 +651,7 @@ bool Group::RemoveMember(ObjectGuid guid, const RemoveMethod& method /*= GROUP_R
}
}
-void Group::ChangeLeader(ObjectGuid newLeaderGuid)
+void Group::ChangeLeader(ObjectGuid newLeaderGuid, int8 partyIndex)
{
member_witerator slot = _getMemberWSlot(newLeaderGuid);
@@ -707,9 +714,10 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid)
m_leaderName = newLeader->GetName();
ToggleGroupMemberFlag(slot, MEMBER_FLAG_ASSISTANT, false);
- WorldPacket data(SMSG_GROUP_NEW_LEADER, m_leaderName.size()+1);
- data << slot->name;
- BroadcastPacket(&data, true);
+ WorldPackets::Party::GroupNewLeader groupNewLeader;
+ groupNewLeader.Name = m_leaderName;
+ groupNewLeader.PartyIndex = partyIndex;
+ BroadcastPacket(groupNewLeader.Write(), true);
}
void Group::Disband(bool hideDestroy /* = false */)
@@ -1136,7 +1144,7 @@ void Group::NeedBeforeGreed(Loot* loot, WorldObject* lootedObject)
if (item->DisenchantID && m_maxEnchantingLevel >= item->RequiredDisenchantSkill)
r->rollVoteMask |= ROLL_FLAG_TYPE_DISENCHANT;
- if (item->GetFlags2() & ITEM_FLAGS_EXTRA_NEED_ROLL_DISABLED)
+ if (item->GetFlags2() & ITEM_FLAG2_NEED_ROLL_DISABLED)
r->rollVoteMask &= ~ROLL_FLAG_TYPE_NEED;
loot->items[itemSlot].is_blocked = true;
@@ -1491,45 +1499,38 @@ void Group::CountTheRoll(Rolls::iterator rollI)
delete roll;
}
-void Group::SetTargetIcon(uint8 id, ObjectGuid whoGuid, ObjectGuid targetGuid)
+void Group::SetTargetIcon(uint8 symbol, ObjectGuid target, ObjectGuid changedBy, uint8 partyIndex)
{
- if (id >= TARGETICONCOUNT)
+ if (symbol >= TARGET_ICONS_COUNT)
return;
// clean other icons
- if (!targetGuid.IsEmpty())
- for (int i = 0; i < TARGETICONCOUNT; ++i)
- if (m_targetIcons[i] == targetGuid)
- SetTargetIcon(i, ObjectGuid::Empty, ObjectGuid::Empty);
+ if (!target.IsEmpty())
+ for (uint8 i = 0; i < TARGET_ICONS_COUNT; ++i)
+ if (m_targetIcons[i] == target)
+ SetTargetIcon(i, ObjectGuid::Empty, changedBy, partyIndex);
- m_targetIcons[id] = targetGuid;
+ m_targetIcons[symbol] = target;
- WorldPacket data(SMSG_SEND_RAID_TARGET_UPDATE_SINGLE, (1+8+1+8));
- data << uint8(0); // set targets
- data << whoGuid;
- data << uint8(id);
- data << targetGuid;
- BroadcastPacket(&data, true);
+ WorldPackets::Party::SendRaidTargetUpdateSingle updateSingle;
+ updateSingle.PartyIndex = partyIndex;
+ updateSingle.Target = target;
+ updateSingle.ChangedBy = changedBy;
+ updateSingle.Symbol = symbol;
+ BroadcastPacket(updateSingle.Write(), true);
}
-void Group::SendTargetIconList(WorldSession* session)
+void Group::SendTargetIconList(WorldSession* session, int8 partyIndex)
{
if (!session)
return;
- WorldPacket data(SMSG_SEND_RAID_TARGET_UPDATE_ALL, (1+TARGETICONCOUNT*9));
- data << uint8(1); // list targets
+ WorldPackets::Party::SendRaidTargetUpdateAll updateAll;
+ updateAll.PartyIndex = partyIndex;
+ for (uint8 i = 0; i < TARGET_ICONS_COUNT; i++)
+ updateAll.TargetIcons.insert(std::pair<uint8, ObjectGuid>(i, m_targetIcons[i]));
- for (uint8 i = 0; i < TARGETICONCOUNT; ++i)
- {
- if (m_targetIcons[i].IsEmpty())
- continue;
-
- data << uint8(i);
- data << m_targetIcons[i];
- }
-
- session->SendPacket(&data);
+ session->SendPacket(updateAll.Write());
}
void Group::SendUpdate()
@@ -1556,56 +1557,79 @@ void Group::SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot)
slot = &(*witr);
}
- WorldPacket data(SMSG_PARTY_UPDATE, (1+1+1+1+1+4+8+4+4+(GetMembersCount()-1)*(13+8+1+1+1+1)+8+1+8+1+1+1+1));
- data << uint8(m_groupType); // group type (flags in 3.3)
- data << uint8(slot->group);
- data << uint8(slot->flags);
- data << uint8(slot->roles);
- if (isLFGGroup())
- {
- data << uint8(sLFGMgr->GetState(m_guid) == lfg::LFG_STATE_FINISHED_DUNGEON ? 2 : 0); // FIXME - Dungeon save status? 2 = done
- data << uint32(sLFGMgr->GetDungeon(m_guid));
- data << uint8(0); // 4.x new
- }
+ WorldPackets::Party::PartyUpdate partyUpdate;
- data << m_guid;
- data << uint32(m_counter++); // 3.3, value increases every time this packet gets sent
- data << uint32(GetMembersCount()-1);
- for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
+ partyUpdate.PartyType = m_groupType;
+ partyUpdate.PartyIndex = 0;
+ partyUpdate.PartyFlags = uint8(IsCreated());
+
+ partyUpdate.PartyGUID = m_guid;
+ partyUpdate.LeaderGUID = m_leaderGuid;
+
+ partyUpdate.SequenceNum = m_counter++; // 3.3, value increases every time this packet gets sent
+
+ partyUpdate.MyIndex = -1;
+ uint8 index = 0;
+ for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr, ++index)
{
if (slot->guid == citr->guid)
- continue;
+ partyUpdate.MyIndex = index;
Player* member = ObjectAccessor::FindConnectedPlayer(citr->guid);
- uint8 onlineState = (member && !member->GetSession()->PlayerLogout()) ? MEMBER_STATUS_ONLINE : MEMBER_STATUS_OFFLINE;
- onlineState = onlineState | ((isBGGroup() || isBFGroup()) ? MEMBER_STATUS_PVP : 0);
+ WorldPackets::Party::GroupPlayerInfos playerInfos;
- data << citr->name;
- data << citr->guid; // guid
- data << uint8(onlineState); // online-state
- data << uint8(citr->group); // groupid
- data << uint8(citr->flags); // See enum GroupMemberFlags
- data << uint8(citr->roles); // Lfg Roles
+ playerInfos.GUID = citr->guid;
+ playerInfos.Name = citr->name;
+ playerInfos.Class = citr->_class;
+
+ playerInfos.Status = MEMBER_STATUS_OFFLINE;
+ if (member && member->GetSession() && !member->GetSession()->PlayerLogout())
+ playerInfos.Status = MEMBER_STATUS_ONLINE | (isBGGroup() || isBFGroup() ? MEMBER_STATUS_PVP : 0);
+
+ playerInfos.Subgroup = citr->group; // groupid
+ playerInfos.Flags = citr->flags; // See enum GroupMemberFlags
+ playerInfos.RolesAssigned = citr->roles; // Lfg Roles
+
+ partyUpdate.PlayerList.push_back(playerInfos);
}
- data << m_leaderGuid; // leader guid
+ if (GetMembersCount() > 1)
+ {
+ // LootSettings
+ partyUpdate.LootSettings = boost::in_place();
+ partyUpdate.LootSettings->Method = m_lootMethod;
+ partyUpdate.LootSettings->Threshold = m_lootThreshold;
+ partyUpdate.LootSettings->LootMaster = m_lootMethod == MASTER_LOOT ? m_masterLooterGuid : ObjectGuid::Empty;
+
+ // Difficulty Settings
+ partyUpdate.DifficultySettings = boost::in_place();
+ partyUpdate.DifficultySettings->DungeonDifficultyID = m_dungeonDifficulty;
+ partyUpdate.DifficultySettings->RaidDifficultyID = m_raidDifficulty;
+ partyUpdate.DifficultySettings->LegacyRaidDifficultyID = m_legacyRaidDifficulty;
+ }
- if (GetMembersCount() - 1)
+ // LfgInfos
+ if (isLFGGroup())
{
- data << uint8(m_lootMethod); // loot method
+ partyUpdate.LfgInfos = boost::in_place();
- if (m_lootMethod == MASTER_LOOT)
- data << m_masterLooterGuid; // master looter guid
- else
- data << uint64(0);
+ partyUpdate.LfgInfos->Slot = sLFGMgr->GetDungeon(m_guid);
+ partyUpdate.LfgInfos->BootCount = 0; // new 6.x
+ partyUpdate.LfgInfos->Aborted = false; // new 6.x
+
+ partyUpdate.LfgInfos->MyFlags = 0; // new 6.x
+ partyUpdate.LfgInfos->MyRandomSlot = 0; // new 6.x
+
+ partyUpdate.LfgInfos->MyPartialClear = sLFGMgr->GetState(m_guid) == lfg::LFG_STATE_FINISHED_DUNGEON ? 2 : 0; // FIXME - Dungeon save status? 2 = done
+ partyUpdate.LfgInfos->MyGearDiff = 0.f; // new 6.x
+ partyUpdate.LfgInfos->MyFirstReward = false; // new 6.x
- data << uint8(m_lootThreshold); // loot threshold
- data << uint8(m_dungeonDifficulty); // Dungeon Difficulty
- data << uint8(m_raidDifficulty); // Raid Difficulty
+ partyUpdate.LfgInfos->MyStrangerCount = 0; // new 6.x
+ partyUpdate.LfgInfos->MyKickVoteCount = 0; // new 6.x
}
- player->GetSession()->SendPacket(&data);
+ player->GetSession()->SendPacket(partyUpdate.Write());
}
void Group::UpdatePlayerOutOfRange(Player* player)
@@ -1613,15 +1637,15 @@ void Group::UpdatePlayerOutOfRange(Player* player)
if (!player || !player->IsInWorld())
return;
- WorldPacket data;
- player->GetSession()->BuildPartyMemberStatsChangedPacket(player, &data);
+ WorldPackets::Party::PartyMemberStats packet;
+ packet.Initialize(player);
Player* member;
for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next())
{
member = itr->GetSource();
if (member && member != player && (!member->IsInMap(player) || !member->IsWithinDist(player, member->GetSightRange(), false)))
- member->GetSession()->SendPacket(&data);
+ member->GetSession()->SendPacket(packet.Write());
}
}
@@ -1653,32 +1677,6 @@ void Group::BroadcastPacket(WorldPacket const* packet, bool ignorePlayersInBGRai
}
}
-void Group::BroadcastReadyCheck(WorldPacket const* packet)
-{
- for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next())
- {
- Player* player = itr->GetSource();
- if (player && player->GetSession())
- if (IsLeader(player->GetGUID()) || IsAssistant(player->GetGUID()))
- player->GetSession()->SendPacket(packet);
- }
-}
-
-void Group::OfflineReadyCheck()
-{
- for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
- {
- Player* player = ObjectAccessor::FindConnectedPlayer(citr->guid);
- if (!player || !player->GetSession())
- {
- WorldPacket data(SMSG_READY_CHECK_RESPONSE, 9);
- data << citr->guid;
- data << uint8(0);
- BroadcastReadyCheck(&data);
- }
- }
-}
-
bool Group::_setMembersGroup(ObjectGuid guid, uint8 group)
{
member_witerator slot = _getMemberWSlot(guid);
@@ -1725,8 +1723,8 @@ void Group::ChangeMembersGroup(ObjectGuid guid, uint8 group)
if (slot == m_memberSlots.end())
return;
+ uint8 prevSubGroup = slot->group;
// Abort if the player is already in the target sub group
- uint8 prevSubGroup = GetMemberGroup(guid);
if (prevSubGroup == group)
return;
@@ -1758,7 +1756,6 @@ void Group::ChangeMembersGroup(ObjectGuid guid, uint8 group)
else
{
// If player is in BG raid, it is possible that he is also in normal raid - and that normal raid is stored in m_originalGroup reference
- prevSubGroup = player->GetOriginalSubGroup();
player->GetOriginalGroupRef().setSubGroup(group);
}
}
@@ -1767,6 +1764,51 @@ void Group::ChangeMembersGroup(ObjectGuid guid, uint8 group)
SendUpdate();
}
+void Group::SwapMembersGroups(ObjectGuid firstGuid, ObjectGuid secondGuid)
+{
+ if (!isRaidGroup())
+ return;
+
+ member_witerator slots[2];
+ slots[0] = _getMemberWSlot(firstGuid);
+ slots[1] = _getMemberWSlot(secondGuid);
+ if (slots[0] == m_memberSlots.end() || slots[1] == m_memberSlots.end())
+ return;
+
+ if (slots[0]->group == slots[1]->group)
+ return;
+
+ uint8 tmp = slots[0]->group;
+ slots[0]->group = slots[1]->group;
+ slots[1]->group = tmp;
+
+ SQLTransaction trans = CharacterDatabase.BeginTransaction();
+ for (uint8 i = 0; i < 2; i++)
+ {
+ // Preserve new sub group in database for non-raid groups
+ if (!isBGGroup() && !isBFGroup())
+ {
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_MEMBER_SUBGROUP);
+
+ stmt->setUInt8(0, slots[i]->group);
+ stmt->setUInt64(1, slots[i]->guid.GetCounter());
+
+ trans->Append(stmt);
+ }
+
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(slots[i]->guid))
+ {
+ if (player->GetGroup() == this)
+ player->GetGroupRef().setSubGroup(slots[i]->group);
+ else
+ player->GetOriginalGroupRef().setSubGroup(slots[i]->group);
+ }
+ }
+ CharacterDatabase.CommitTransaction(trans);
+
+ SendUpdate();
+}
+
// Retrieve the next Round-Roubin player for the group
//
// No update done if loot method is FFA.
@@ -2262,9 +2304,167 @@ void Group::SetLfgRoles(ObjectGuid guid, uint8 roles)
SendUpdate();
}
+uint8 Group::GetLfgRoles(ObjectGuid guid)
+{
+ member_witerator slot = _getMemberWSlot(guid);
+ if (slot == m_memberSlots.end())
+ return 0;
+
+ return slot->roles;
+}
+
+void Group::Update(uint32 diff)
+{
+ UpdateReadyCheck(diff);
+}
+
+void Group::UpdateReadyCheck(uint32 diff)
+{
+ if (!m_readyCheckStarted)
+ return;
+
+ m_readyCheckTimer -= diff;
+ if (m_readyCheckTimer <= 0)
+ EndReadyCheck();
+}
+
+void Group::StartReadyCheck(ObjectGuid starterGuid, int8 partyIndex, uint32 duration)
+{
+ if (m_readyCheckStarted)
+ return;
+
+ member_witerator slot = _getMemberWSlot(starterGuid);
+ if (slot == m_memberSlots.end())
+ return ;
+
+ m_readyCheckStarted = true;
+ m_readyCheckTimer = duration;
+
+ SetOfflineMembersReadyChecked();
+
+ SetMemberReadyChecked(&(*slot));
+
+ WorldPackets::Party::ReadyCheckStarted readyCheckStarted;
+ readyCheckStarted.PartyGUID = m_guid;
+ readyCheckStarted.PartyIndex = partyIndex;
+ readyCheckStarted.InitiatorGUID = starterGuid;
+ readyCheckStarted.Duration = duration;
+ BroadcastPacket(readyCheckStarted.Write(), false);
+}
+
+void Group::EndReadyCheck(void)
+{
+ if (!m_readyCheckStarted)
+ return;
+
+ m_readyCheckStarted = false;
+ m_readyCheckTimer = 0;
+
+ ResetMemberReadyChecked();
+
+ WorldPackets::Party::ReadyCheckCompleted readyCheckCompleted;
+ readyCheckCompleted.PartyIndex = 0;
+ readyCheckCompleted.PartyGUID = m_guid;
+ BroadcastPacket(readyCheckCompleted.Write(), false);
+}
+
+bool Group::IsReadyCheckCompleted(void) const
+{
+ for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
+ if (!citr->readyChecked)
+ return false;
+ return true;
+}
+
+void Group::SetMemberReadyCheck(ObjectGuid guid, bool ready)
+{
+ if (!m_readyCheckStarted)
+ return;
+
+ member_witerator slot = _getMemberWSlot(guid);
+ if (slot != m_memberSlots.end())
+ SetMemberReadyCheck(&(*slot), ready);
+}
+
+void Group::SetMemberReadyCheck(MemberSlot* slot, bool ready)
+{
+ WorldPackets::Party::ReadyCheckResponse response;
+ response.PartyGUID = m_guid;
+ response.Player = slot->guid;
+ response.IsReady = ready;
+ BroadcastPacket(response.Write(), false);
+
+ SetMemberReadyChecked(slot);
+}
+
+void Group::SetOfflineMembersReadyChecked(void)
+{
+ for (member_witerator itr = m_memberSlots.begin(); itr != m_memberSlots.end(); ++itr)
+ {
+ Player* player = ObjectAccessor::FindConnectedPlayer(itr->guid);
+ if (!player || !player->GetSession())
+ SetMemberReadyCheck(&(*itr), false);
+ }
+}
+
+void Group::SetMemberReadyChecked(MemberSlot* slot)
+{
+ slot->readyChecked = true;
+ if (IsReadyCheckCompleted())
+ EndReadyCheck();
+}
+
+void Group::ResetMemberReadyChecked(void)
+{
+ for (member_witerator itr = m_memberSlots.begin(); itr != m_memberSlots.end(); ++itr)
+ itr->readyChecked = false;
+}
+
+void Group::AddRaidMarker(uint8 markerId, uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid)
+{
+ if (markerId >= RAID_MARKERS_COUNT || m_markers[markerId])
+ return;
+
+ m_activeMarkers |= (1 << markerId);
+ m_markers[markerId] = Trinity::make_unique<RaidMarker>(mapId, positionX, positionY, positionZ, transportGuid);
+ SendRaidMarkersChanged();
+}
+
+void Group::DeleteRaidMarker(uint8 markerId)
+{
+ if (markerId > RAID_MARKERS_COUNT)
+ return;
+
+ for (uint8 i = 0; i < RAID_MARKERS_COUNT; i++)
+ if (m_markers[i] && (markerId == i || markerId == RAID_MARKERS_COUNT))
+ {
+ m_markers[i] = nullptr;
+ m_activeMarkers &= ~(1 << i);
+ }
+
+ SendRaidMarkersChanged();
+}
+
+void Group::SendRaidMarkersChanged(WorldSession* session, int8 partyIndex)
+{
+ WorldPackets::Party::RaidMarkersChanged packet;
+
+ packet.PartyIndex = partyIndex;
+ packet.ActiveMarkers = m_activeMarkers;
+
+ for (uint8 i = 0; i < RAID_MARKERS_COUNT; i++)
+ if (m_markers[i])
+ packet.RaidMarkers.push_back(m_markers[i].get());
+
+ if (session)
+ session->SendPacket(packet.Write());
+ else
+ BroadcastPacket(packet.Write(), false);
+}
+
bool Group::IsFull() const
{
- return isRaidGroup() ? (m_memberSlots.size() >= MAXRAIDSIZE) : (m_memberSlots.size() >= MAXGROUPSIZE);
+ return isRaidGroup() ? (m_memberSlots.size() >= MAX_RAID_SIZE) : (m_memberSlots.size() >= MAX_GROUP_SIZE);
}
bool Group::isLFGGroup() const
@@ -2371,10 +2571,9 @@ bool Group::SameSubGroup(ObjectGuid guid1, MemberSlot const* slot2) const
bool Group::HasFreeSlotSubGroup(uint8 subgroup) const
{
- return (m_subGroupsCounts && m_subGroupsCounts[subgroup] < MAXGROUPSIZE);
+ return (m_subGroupsCounts && m_subGroupsCounts[subgroup] < MAX_GROUP_SIZE);
}
-
uint8 Group::GetMemberGroup(ObjectGuid guid) const
{
member_citerator mslot = _getMemberCSlot(guid);
@@ -2522,3 +2721,15 @@ void Group::ToggleGroupMemberFlag(member_witerator slot, uint8 flag, bool apply)
slot->flags &= ~flag;
}
+void Group::SetEveryoneIsAssistant(bool apply)
+{
+ if (apply)
+ m_groupType = GroupType(m_groupType | GROUPTYPE_EVERYONE_ASSISTANT);
+ else
+ m_groupType = GroupType(m_groupType & ~GROUPTYPE_EVERYONE_ASSISTANT);
+
+ for (member_witerator itr = m_memberSlots.begin(); itr != m_memberSlots.end(); ++itr)
+ ToggleGroupMemberFlag(itr, MEMBER_FLAG_ASSISTANT, apply);
+
+ SendUpdate();
+}
diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h
index 4154f31a410..634d1f0f37b 100644
--- a/src/server/game/Groups/Group.h
+++ b/src/server/game/Groups/Group.h
@@ -24,6 +24,7 @@
#include "LootMgr.h"
#include "QueryResult.h"
#include "SharedDefines.h"
+#include "Object.h"
class Battlefield;
class Battleground;
@@ -38,10 +39,14 @@ class WorldSession;
struct MapEntry;
-#define MAXGROUPSIZE 5
-#define MAXRAIDSIZE 40
-#define MAX_RAID_SUBGROUPS MAXRAIDSIZE/MAXGROUPSIZE
-#define TARGETICONCOUNT 8
+#define MAX_GROUP_SIZE 5
+#define MAX_RAID_SIZE 40
+#define MAX_RAID_SUBGROUPS MAX_RAID_SIZE / MAX_GROUP_SIZE
+
+#define TARGET_ICONS_COUNT 8
+#define RAID_MARKERS_COUNT 8
+
+#define READYCHECK_DURATION 35000
enum RollVote
{
@@ -81,50 +86,59 @@ enum GroupMemberAssignment
enum GroupType
{
- GROUPTYPE_NORMAL = 0x00,
- GROUPTYPE_BG = 0x01,
- GROUPTYPE_RAID = 0x02,
- GROUPTYPE_BGRAID = GROUPTYPE_BG | GROUPTYPE_RAID, // mask
- GROUPTYPE_LFG_RESTRICTED = 0x04, // Script_HasLFGRestrictions()
- GROUPTYPE_LFG = 0x08,
+ GROUPTYPE_NORMAL = 0x00,
+ GROUPTYPE_BG = 0x01,
+ GROUPTYPE_RAID = 0x02,
+ GROUPTYPE_BGRAID = GROUPTYPE_BG | GROUPTYPE_RAID, // mask
+ GROUPTYPE_LFG_RESTRICTED = 0x04, // Script_HasLFGRestrictions()
+ GROUPTYPE_LFG = 0x08,
+ GROUPTYPE_EVERYONE_ASSISTANT = 0x40, // Script_IsEveryoneAssistant() (4.x)
// 0x10, leave/change group?, I saw this flag when leaving group and after leaving BG while in group
// GROUPTYPE_ONE_PERSON_PARTY = 0x20, 4.x Script_IsOnePersonParty()
- // GROUPTYPE_EVERYONE_ASSISTANT = 0x40 4.x Script_IsEveryoneAssistant()
};
enum GroupUpdateFlags
{
GROUP_UPDATE_FLAG_NONE = 0x00000000, // nothing
- GROUP_UPDATE_FLAG_STATUS = 0x00000001, // uint16 (GroupMemberStatusFlag)
- GROUP_UPDATE_FLAG_CUR_HP = 0x00000002, // uint32 (HP)
- GROUP_UPDATE_FLAG_MAX_HP = 0x00000004, // uint32 (HP)
- GROUP_UPDATE_FLAG_POWER_TYPE = 0x00000008, // uint8 (PowerType)
- GROUP_UPDATE_FLAG_CUR_POWER = 0x00000010, // int16 (power value)
- GROUP_UPDATE_FLAG_MAX_POWER = 0x00000020, // int16 (power value)
- GROUP_UPDATE_FLAG_LEVEL = 0x00000040, // uint16 (level value)
- GROUP_UPDATE_FLAG_ZONE = 0x00000080, // uint16 (zone id)
- GROUP_UPDATE_FLAG_UNK100 = 0x00000100, // int16 (unk)
- GROUP_UPDATE_FLAG_POSITION = 0x00000200, // uint16 (x), uint16 (y), uint16 (z)
- GROUP_UPDATE_FLAG_AURAS = 0x00000400, // uint8 (unk), uint64 (mask), uint32 (count), for each bit set: uint32 (spell id) + uint16 (AuraFlags) (if has flags Scalable -> 3x int32 (bps))
- GROUP_UPDATE_FLAG_PET_GUID = 0x00000800, // uint64 (pet guid)
- GROUP_UPDATE_FLAG_PET_NAME = 0x00001000, // cstring (name, NULL terminated string)
- GROUP_UPDATE_FLAG_PET_MODEL_ID = 0x00002000, // uint16 (model id)
- GROUP_UPDATE_FLAG_PET_CUR_HP = 0x00004000, // uint32 (HP)
- GROUP_UPDATE_FLAG_PET_MAX_HP = 0x00008000, // uint32 (HP)
- GROUP_UPDATE_FLAG_PET_POWER_TYPE = 0x00010000, // uint8 (PowerType)
- GROUP_UPDATE_FLAG_PET_CUR_POWER = 0x00020000, // uint16 (power value)
- GROUP_UPDATE_FLAG_PET_MAX_POWER = 0x00040000, // uint16 (power value)
- GROUP_UPDATE_FLAG_PET_AURAS = 0x00080000, // [see GROUP_UPDATE_FLAG_AURAS]
- GROUP_UPDATE_FLAG_VEHICLE_SEAT = 0x00100000, // int32 (vehicle seat id)
- GROUP_UPDATE_FLAG_PHASE = 0x00200000, // int32 (unk), uint32 (phase count), for (count) uint16(phaseId)
-
- GROUP_UPDATE_PET = GROUP_UPDATE_FLAG_PET_GUID | GROUP_UPDATE_FLAG_PET_NAME | GROUP_UPDATE_FLAG_PET_MODEL_ID |
- GROUP_UPDATE_FLAG_PET_CUR_HP | GROUP_UPDATE_FLAG_PET_MAX_HP | GROUP_UPDATE_FLAG_PET_POWER_TYPE |
- GROUP_UPDATE_FLAG_PET_CUR_POWER | GROUP_UPDATE_FLAG_PET_MAX_POWER | GROUP_UPDATE_FLAG_PET_AURAS, // all pet flags
- GROUP_UPDATE_FULL = GROUP_UPDATE_FLAG_STATUS | GROUP_UPDATE_FLAG_CUR_HP | GROUP_UPDATE_FLAG_MAX_HP |
- GROUP_UPDATE_FLAG_POWER_TYPE | GROUP_UPDATE_FLAG_CUR_POWER | GROUP_UPDATE_FLAG_MAX_POWER |
- GROUP_UPDATE_FLAG_LEVEL | GROUP_UPDATE_FLAG_ZONE | GROUP_UPDATE_FLAG_POSITION |
- GROUP_UPDATE_FLAG_AURAS | GROUP_UPDATE_PET | GROUP_UPDATE_FLAG_PHASE // all known flags, except UNK100 and VEHICLE_SEAT
+ GROUP_UPDATE_FLAG_UNK704 = 0x00000001, // uint8[2] (unk)
+ GROUP_UPDATE_FLAG_STATUS = 0x00000002, // uint16 (GroupMemberStatusFlag)
+ GROUP_UPDATE_FLAG_POWER_TYPE = 0x00000004, // uint8 (PowerType)
+ GROUP_UPDATE_FLAG_UNK322 = 0x00000008, // uint16 (unk)
+ GROUP_UPDATE_FLAG_CUR_HP = 0x00000010, // uint32 (HP)
+ GROUP_UPDATE_FLAG_MAX_HP = 0x00000020, // uint32 (max HP)
+ GROUP_UPDATE_FLAG_CUR_POWER = 0x00000040, // int16 (power value)
+ GROUP_UPDATE_FLAG_MAX_POWER = 0x00000080, // int16 (max power value)
+ GROUP_UPDATE_FLAG_LEVEL = 0x00000100, // uint16 (level value)
+ GROUP_UPDATE_FLAG_UNK200000 = 0x00000200, // int16 (unk)
+ GROUP_UPDATE_FLAG_ZONE = 0x00000400, // uint16 (zone id)
+ GROUP_UPDATE_FLAG_UNK2000000 = 0x00000800, // int16 (unk)
+ GROUP_UPDATE_FLAG_UNK4000000 = 0x00001000, // int32 (unk)
+ GROUP_UPDATE_FLAG_POSITION = 0x00002000, // uint16 (x), uint16 (y), uint16 (z)
+ GROUP_UPDATE_FLAG_VEHICLE_SEAT = 0x00104000, // int32 (vehicle seat id)
+ GROUP_UPDATE_FLAG_AURAS = 0x00008000, // uint8 (unk), uint64 (mask), uint32 (count), for each bit set: uint32 (spell id) + uint16 (AuraFlags) (if has flags Scalable -> 3x int32 (bps))
+ GROUP_UPDATE_FLAG_PET = 0x00010000, // complex (pet)
+ GROUP_UPDATE_FLAG_PHASE = 0x00020000, // int32 (unk), uint32 (phase count), for (count) uint16(phaseId)
+
+ GROUP_UPDATE_FULL = GROUP_UPDATE_FLAG_UNK704 | GROUP_UPDATE_FLAG_STATUS | GROUP_UPDATE_FLAG_POWER_TYPE |
+ GROUP_UPDATE_FLAG_UNK322 | GROUP_UPDATE_FLAG_CUR_HP | GROUP_UPDATE_FLAG_MAX_HP |
+ GROUP_UPDATE_FLAG_CUR_POWER | GROUP_UPDATE_FLAG_MAX_POWER | GROUP_UPDATE_FLAG_LEVEL |
+ GROUP_UPDATE_FLAG_UNK200000 | GROUP_UPDATE_FLAG_ZONE | GROUP_UPDATE_FLAG_UNK2000000 |
+ GROUP_UPDATE_FLAG_UNK4000000 | GROUP_UPDATE_FLAG_POSITION | GROUP_UPDATE_FLAG_VEHICLE_SEAT |
+ GROUP_UPDATE_FLAG_AURAS | GROUP_UPDATE_FLAG_PET | GROUP_UPDATE_FLAG_PHASE // all known flags
+};
+
+enum GroupUpdatePetFlags
+{
+ GROUP_UPDATE_FLAG_PET_NONE = 0x00000000, // nothing
+ GROUP_UPDATE_FLAG_PET_GUID = 0x00000001, // ObjectGuid (pet guid)
+ GROUP_UPDATE_FLAG_PET_NAME = 0x00000002, // cstring (name, NULL terminated string)
+ GROUP_UPDATE_FLAG_PET_MODEL_ID = 0x00000004, // uint16 (model id)
+ GROUP_UPDATE_FLAG_PET_CUR_HP = 0x00000008, // uint32 (HP)
+ GROUP_UPDATE_FLAG_PET_MAX_HP = 0x00000010, // uint32 (max HP)
+ GROUP_UPDATE_FLAG_PET_AURAS = 0x00000020, // [see GROUP_UPDATE_FLAG_AURAS]
+
+ GROUP_UPDATE_PET_FULL = GROUP_UPDATE_FLAG_PET_GUID | GROUP_UPDATE_FLAG_PET_NAME | GROUP_UPDATE_FLAG_PET_MODEL_ID |
+ GROUP_UPDATE_FLAG_PET_CUR_HP | GROUP_UPDATE_FLAG_PET_MAX_HP | GROUP_UPDATE_FLAG_PET_AURAS // all pet flags
};
class Roll : public LootValidatorRef
@@ -160,6 +174,18 @@ struct InstanceGroupBind
InstanceGroupBind() : save(NULL), perm(false) { }
};
+struct RaidMarker
+{
+ WorldLocation Location;
+ ObjectGuid TransportGUID;
+
+ RaidMarker(uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid = ObjectGuid::Empty)
+ {
+ Location.WorldRelocate(mapId, positionX, positionY, positionZ);
+ TransportGUID = transportGuid;
+ }
+};
+
/** request member stats checken **/
/// @todo uninvite people that not accepted invite
class Group
@@ -169,9 +195,11 @@ class Group
{
ObjectGuid guid;
std::string name;
+ uint8 _class;
uint8 group;
uint8 flags;
uint8 roles;
+ bool readyChecked;
};
typedef std::list<MemberSlot> MemberSlotList;
typedef MemberSlotList::const_iterator member_citerator;
@@ -197,7 +225,7 @@ class Group
bool AddLeaderInvite(Player* player);
bool AddMember(Player* player);
bool RemoveMember(ObjectGuid guid, const RemoveMethod &method = GROUP_REMOVEMETHOD_DEFAULT, ObjectGuid kicker = ObjectGuid::Empty, const char* reason = NULL);
- void ChangeLeader(ObjectGuid guid);
+ void ChangeLeader(ObjectGuid guid, int8 partyIndex = 0);
void SetLootMethod(LootMethod method);
void SetLooterGuid(ObjectGuid guid);
void SetMasterLooterGuid(ObjectGuid guid);
@@ -205,6 +233,31 @@ class Group
void SetLootThreshold(ItemQualities threshold);
void Disband(bool hideDestroy = false);
void SetLfgRoles(ObjectGuid guid, uint8 roles);
+ uint8 GetLfgRoles(ObjectGuid guid);
+ void SetEveryoneIsAssistant(bool apply);
+
+ // Update
+ void Update(uint32 diff);
+ void UpdateReadyCheck(uint32 diff);
+
+ // Ready check
+ void StartReadyCheck(ObjectGuid starterGuid, int8 partyIndex, uint32 duration = READYCHECK_DURATION);
+ void EndReadyCheck();
+
+ bool IsReadyCheckStarted(void) const { return m_readyCheckStarted; }
+ bool IsReadyCheckCompleted(void) const;
+
+ void SetOfflineMembersReadyChecked(void);
+ void SetMemberReadyCheck(ObjectGuid guid, bool ready);
+ void SetMemberReadyCheck(MemberSlot* slot, bool ready);
+
+ void SetMemberReadyChecked(MemberSlot* slot);
+ void ResetMemberReadyChecked(void);
+
+ // Raid Markers
+ void AddRaidMarker(uint8 markerId, uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid = ObjectGuid::Empty);
+ void DeleteRaidMarker(uint8 markerId);
+ void SendRaidMarkersChanged(WorldSession* session = nullptr, int8 partyIndex = 0);
// properties accessories
bool IsFull() const;
@@ -221,7 +274,7 @@ class Group
ObjectGuid GetMasterLooterGuid() const;
ItemQualities GetLootThreshold() const;
- uint32 GetDbStoreId() const { return m_dbStoreId; };
+ uint32 GetDbStoreId() const { return m_dbStoreId; }
// member manipulation methods
bool IsMember(ObjectGuid guid) const;
@@ -254,7 +307,8 @@ class Group
GroupJoinBattlegroundResult CanJoinBattlegroundQueue(Battleground const* bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 MaxPlayerCount, bool isRated, uint32 arenaSlot, ObjectGuid& errorGuid);
void ChangeMembersGroup(ObjectGuid guid, uint8 group);
- void SetTargetIcon(uint8 id, ObjectGuid whoGuid, ObjectGuid targetGuid);
+ void SwapMembersGroups(ObjectGuid firstGuid, ObjectGuid secondGuid);
+ void SetTargetIcon(uint8 symbol, ObjectGuid target, ObjectGuid changedBy, uint8 partyIndex);
void SetGroupMemberFlag(ObjectGuid guid, bool apply, GroupMemberFlags flag);
void RemoveUniqueGroupMemberFlag(GroupMemberFlags flag);
@@ -269,7 +323,7 @@ class Group
// -no description-
//void SendInit(WorldSession* session);
- void SendTargetIconList(WorldSession* session);
+ void SendTargetIconList(WorldSession* session, int8 partyIndex = 0);
void SendUpdate();
void SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot = NULL);
void UpdatePlayerOutOfRange(Player* player);
@@ -290,8 +344,6 @@ class Group
void BroadcastPacket(WorldPacket const* packet, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignoredPlayer = ObjectGuid::Empty);
void BroadcastAddonMessagePacket(WorldPacket const* packet, const std::string& prefix, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignore = ObjectGuid::Empty);
- void BroadcastReadyCheck(WorldPacket const* packet);
- void OfflineReadyCheck();
/*********************************************************/
/*** LOOT SYSTEM ***/
@@ -351,7 +403,7 @@ class Group
Difficulty m_legacyRaidDifficulty;
Battleground* m_bgGroup;
Battlefield* m_bfGroup;
- ObjectGuid m_targetIcons[TARGETICONCOUNT];
+ ObjectGuid m_targetIcons[TARGET_ICONS_COUNT];
LootMethod m_lootMethod;
ItemQualities m_lootThreshold;
ObjectGuid m_looterGuid;
@@ -363,5 +415,13 @@ class Group
uint32 m_counter; // used only in SMSG_GROUP_LIST
uint32 m_maxEnchantingLevel;
uint32 m_dbStoreId; // Represents the ID used in database (Can be reused by other groups if group was disbanded)
+
+ // Ready Check
+ bool m_readyCheckStarted;
+ int32 m_readyCheckTimer;
+
+ // Raid markers
+ std::array<std::unique_ptr<RaidMarker>, RAID_MARKERS_COUNT> m_markers;
+ uint32 m_activeMarkers;
};
#endif
diff --git a/src/server/game/Groups/GroupMgr.cpp b/src/server/game/Groups/GroupMgr.cpp
index f0c764e7269..7fb239cec48 100644
--- a/src/server/game/Groups/GroupMgr.cpp
+++ b/src/server/game/Groups/GroupMgr.cpp
@@ -233,3 +233,10 @@ void GroupMgr::LoadGroups()
TC_LOG_INFO("server.loading", ">> Loaded %u group-instance saves in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
}
+
+void GroupMgr::Update(uint32 diff)
+{
+ for (GroupContainer::iterator itr = GroupStore.begin(); itr != GroupStore.end(); itr++)
+ if (itr->second)
+ itr->second->Update(diff);
+}
diff --git a/src/server/game/Groups/GroupMgr.h b/src/server/game/Groups/GroupMgr.h
index 6aafe77432c..2fdd6d978e9 100644
--- a/src/server/game/Groups/GroupMgr.h
+++ b/src/server/game/Groups/GroupMgr.h
@@ -50,6 +50,8 @@ public:
void AddGroup(Group* group);
void RemoveGroup(Group* group);
+ void Update(uint32 diff);
+
protected:
ObjectGuid::LowType NextGroupId;
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index c5812999490..d4ba420d44d 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -678,13 +678,23 @@ void EmblemInfo::ReadPacket(WorldPackets::Guild::SaveGuildEmblem& packet)
m_backgroundColor = packet.Bg;
}
-void EmblemInfo::LoadFromDB(Field* fields)
+bool EmblemInfo::ValidateEmblemColors()
+{
+ return sGuildColorBackgroundStore.LookupEntry(m_backgroundColor) &&
+ sGuildColorBorderStore.LookupEntry(m_borderColor) &&
+ sGuildColorEmblemStore.LookupEntry(m_color);
+
+}
+
+bool EmblemInfo::LoadFromDB(Field* fields)
{
m_style = fields[3].GetUInt8();
m_color = fields[4].GetUInt8();
m_borderStyle = fields[5].GetUInt8();
m_borderColor = fields[6].GetUInt8();
m_backgroundColor = fields[7].GetUInt8();
+
+ return ValidateEmblemColors();
}
void EmblemInfo::SaveToDB(ObjectGuid::LowType guildId) const
@@ -1602,11 +1612,11 @@ void Guild::HandleInviteMember(WorldSession* session, std::string const& name)
}
// Invited player cannot be in another guild
- /*if (pInvitee->GetGuildId())
+ if (pInvitee->GetGuildId())
{
SendCommandResult(session, GUILD_COMMAND_INVITE_PLAYER, ERR_ALREADY_IN_GUILD_S, name);
return;
- }*/
+ }
// Invited player cannot be invited
if (pInvitee->GetGuildIdInvited())
@@ -2244,7 +2254,14 @@ bool Guild::LoadFromDB(Field* fields)
m_id = fields[0].GetUInt64();
m_name = fields[1].GetString();
m_leaderGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt64());
- m_emblemInfo.LoadFromDB(fields);
+
+ if (!m_emblemInfo.LoadFromDB(fields))
+ {
+ TC_LOG_ERROR("guild", "Guild " UI64FMTD " has invalid emblem colors (Background: %u, Border: %u, Emblem: %u), skipped.",
+ m_id, m_emblemInfo.GetBackgroundColor(), m_emblemInfo.GetBorderColor(), m_emblemInfo.GetColor());
+ return false;
+ }
+
m_info = fields[8].GetString();
m_motd = fields[9].GetString();
m_createdDate = time_t(fields[10].GetUInt32());
@@ -2466,7 +2483,7 @@ void Guild::BroadcastToGuild(WorldSession* session, bool officerOnly, std::strin
if (session && session->GetPlayer() && _HasRankRight(session->GetPlayer(), officerOnly ? GR_RIGHT_OFFCHATSPEAK : GR_RIGHT_GCHATSPEAK))
{
WorldPackets::Chat::Chat packet;
- packet.Initalize(officerOnly ? CHAT_MSG_OFFICER : CHAT_MSG_GUILD, Language(language), session->GetPlayer(), nullptr, msg);
+ packet.Initialize(officerOnly ? CHAT_MSG_OFFICER : CHAT_MSG_GUILD, Language(language), session->GetPlayer(), nullptr, msg);
WorldPacket const* data = packet.Write();
for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
if (Player* player = itr->second->FindConnectedPlayer())
@@ -2481,7 +2498,7 @@ void Guild::BroadcastAddonToGuild(WorldSession* session, bool officerOnly, std::
if (session && session->GetPlayer() && _HasRankRight(session->GetPlayer(), officerOnly ? GR_RIGHT_OFFCHATSPEAK : GR_RIGHT_GCHATSPEAK))
{
WorldPackets::Chat::Chat packet;
- packet.Initalize(officerOnly ? CHAT_MSG_OFFICER : CHAT_MSG_GUILD, LANG_ADDON, session->GetPlayer(), nullptr, msg, 0, "", DEFAULT_LOCALE, prefix);
+ packet.Initialize(officerOnly ? CHAT_MSG_OFFICER : CHAT_MSG_GUILD, LANG_ADDON, session->GetPlayer(), nullptr, msg, 0, "", DEFAULT_LOCALE, prefix);
WorldPacket const* data = packet.Write();
for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
if (Player* player = itr->second->FindPlayer())
diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h
index 42951320885..777147f2595 100644
--- a/src/server/game/Guilds/Guild.h
+++ b/src/server/game/Guilds/Guild.h
@@ -266,9 +266,10 @@ class EmblemInfo
public:
EmblemInfo() : m_style(0), m_color(0), m_borderStyle(0), m_borderColor(0), m_backgroundColor(0) { }
- void LoadFromDB(Field* fields);
+ bool LoadFromDB(Field* fields);
void SaveToDB(ObjectGuid::LowType guildId) const;
void ReadPacket(WorldPackets::Guild::SaveGuildEmblem& packet);
+ bool ValidateEmblemColors();
uint32 GetStyle() const { return m_style; }
uint32 GetColor() const { return m_color; }
diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp
index 0d9f292c4c2..88f45056187 100644
--- a/src/server/game/Handlers/AuctionHouseHandler.cpp
+++ b/src/server/game/Handlers/AuctionHouseHandler.cpp
@@ -174,7 +174,7 @@ void WorldSession::HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSell
}
if (sAuctionMgr->GetAItem(item->GetGUID().GetCounter()) || !item->CanBeTraded() || item->IsNotEmptyBag() ||
- item->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_CONJURED || item->GetUInt32Value(ITEM_FIELD_DURATION) ||
+ item->GetTemplate()->GetFlags() & ITEM_FLAG_CONJURED || item->GetUInt32Value(ITEM_FIELD_DURATION) ||
item->GetCount() < packetItem.UseCount)
{
SendAuctionCommandResult(NULL, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR);
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index e7818a841aa..7b22d46d67b 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -236,6 +236,26 @@ bool LoginQueryHolder::Initialize()
stmt->setUInt64(0, lowGuid);
res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_CURRENCY, stmt);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GARRISON);
+ stmt->setUInt64(0, lowGuid);
+ res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_GARRISON, stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GARRISON_BLUEPRINTS);
+ stmt->setUInt64(0, lowGuid);
+ res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_GARRISON_BLUEPRINTS, stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GARRISON_BUILDINGS);
+ stmt->setUInt64(0, lowGuid);
+ res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_GARRISON_BUILDINGS, stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GARRISON_FOLLOWERS);
+ stmt->setUInt64(0, lowGuid);
+ res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_GARRISON_FOLLOWERS, stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GARRISON_FOLLOWER_ABILITIES);
+ stmt->setUInt64(0, lowGuid);
+ res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_GARRISON_FOLLOWER_ABILITIES, stmt);
+
return res;
}
@@ -2554,25 +2574,18 @@ void WorldSession::SendCharRename(ResponseCodes result, WorldPackets::Character:
void WorldSession::SendCharCustomize(ResponseCodes result, WorldPackets::Character::CharCustomizeInfo const* customizeInfo)
{
- /// @todo: fix 6.x implementation
- (void)result;
- (void)customizeInfo;
- /*
- WorldPacket data(SMSG_CHAR_CUSTOMIZE, 1 + 8 + customizeInfo.NewName.size() + 1 + 6);
- data << uint8(result);
if (result == RESPONSE_SUCCESS)
{
- data << customizeInfo.Guid;
- data << customizeInfo.NewName;
- data << uint8(customizeInfo.Gender);
- data << uint8(customizeInfo.Skin);
- data << uint8(customizeInfo.Face);
- data << uint8(customizeInfo.HairStyle);
- data << uint8(customizeInfo.HairColor);
- data << uint8(customizeInfo.FacialHair);
+ WorldPackets::Character::CharCustomizeResponse response(customizeInfo);
+ SendPacket(response.Write());
+ }
+ else
+ {
+ WorldPackets::Character::CharCustomizeFailed failed;
+ failed.Result = uint8(result);
+ failed.CharGUID = customizeInfo->CharGUID;
+ SendPacket(failed.Write());
}
- SendPacket(&data);
- */
}
void WorldSession::SendCharFactionChange(ResponseCodes result, WorldPackets::Character::CharRaceOrFactionChangeInfo const* factionChangeInfo)
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index b5550c2c073..b9fd383b19d 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -288,7 +288,7 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,
sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group);
WorldPackets::Chat::Chat packet;
- packet.Initalize(ChatMsg(type), Language(lang), sender, nullptr, msg);
+ packet.Initialize(ChatMsg(type), Language(lang), sender, nullptr, msg);
group->BroadcastPacket(packet.Write(), false, group->GetMemberGroup(GetPlayer()->GetGUID()));
break;
}
@@ -320,8 +320,8 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,
}
case CHAT_MSG_RAID:
{
- Group* group = GetPlayer()->GetOriginalGroup();
- if (!group)
+ Group* group = GetPlayer()->GetGroup();
+ if (!group || !group->isRaidGroup() || group->isBGGroup())
return;
if (group->IsLeader(GetPlayer()->GetGUID()))
@@ -330,7 +330,7 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,
sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group);
WorldPackets::Chat::Chat packet;
- packet.Initalize(ChatMsg(type), Language(lang), sender, nullptr, msg);
+ packet.Initialize(ChatMsg(type), Language(lang), sender, nullptr, msg);
group->BroadcastPacket(packet.Write(), false);
break;
}
@@ -344,7 +344,7 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,
WorldPackets::Chat::Chat packet;
//in battleground, raid warning is sent only to players in battleground - code is ok
- packet.Initalize(CHAT_MSG_RAID_WARNING, Language(lang), sender, NULL, msg);
+ packet.Initialize(CHAT_MSG_RAID_WARNING, Language(lang), sender, NULL, msg);
group->BroadcastPacket(packet.Write(), false);
break;
}
@@ -381,7 +381,7 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,
sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group);
WorldPackets::Chat::Chat packet;
- packet.Initalize(ChatMsg(type), Language(lang), sender, nullptr, msg);
+ packet.Initialize(ChatMsg(type), Language(lang), sender, nullptr, msg);
group->BroadcastPacket(packet.Write(), false);
break;
}
@@ -484,7 +484,7 @@ void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std:
}
WorldPackets::Chat::Chat packet;
- packet.Initalize(type, LANG_ADDON, sender, nullptr, text, 0, "", DEFAULT_LOCALE, prefix);
+ packet.Initialize(type, LANG_ADDON, sender, nullptr, text, 0, "", DEFAULT_LOCALE, prefix);
group->BroadcastAddonMessagePacket(packet.Write(), prefix, true, subGroup, sender->GetGUID());
break;
}
@@ -666,7 +666,7 @@ void WorldSession::HandleChatIgnoredOpcode(WorldPacket& recvData)
return;
WorldPackets::Chat::Chat packet;
- packet.Initalize(CHAT_MSG_IGNORED, LANG_UNIVERSAL, _player, _player, GetPlayer()->GetName());
+ packet.Initialize(CHAT_MSG_IGNORED, LANG_UNIVERSAL, _player, _player, GetPlayer()->GetName());
player->SendDirectMessage(packet.Write());
}
diff --git a/src/server/game/Handlers/GarrisonHandler.cpp b/src/server/game/Handlers/GarrisonHandler.cpp
new file mode 100644
index 00000000000..54c7f4242fd
--- /dev/null
+++ b/src/server/game/Handlers/GarrisonHandler.cpp
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "WorldSession.h"
+#include "Garrison.h"
+#include "GarrisonPackets.h"
+
+void WorldSession::HandleGetGarrisonInfo(WorldPackets::Garrison::GetGarrisonInfo& /*getGarrisonInfo*/)
+{
+ if (Garrison* garrison = _player->GetGarrison())
+ garrison->SendInfo();
+}
+
+void WorldSession::HandleGarrisonPurchaseBuilding(WorldPackets::Garrison::GarrisonPurchaseBuilding& garrisonPurchaseBuilding)
+{
+ if (!_player->GetNPCIfCanInteractWith(garrisonPurchaseBuilding.NpcGUID, UNIT_NPC_FLAG_GARRISON_ARCHITECT))
+ return;
+
+ if (Garrison* garrison = _player->GetGarrison())
+ garrison->PlaceBuilding(garrisonPurchaseBuilding.PlotInstanceID, garrisonPurchaseBuilding.BuildingID);
+}
+
+void WorldSession::HandleGarrisonCancelConstruction(WorldPackets::Garrison::GarrisonCancelConstruction& garrisonCancelConstruction)
+{
+ if (!_player->GetNPCIfCanInteractWith(garrisonCancelConstruction.NpcGUID, UNIT_NPC_FLAG_GARRISON_ARCHITECT))
+ return;
+
+ if (Garrison* garrison = _player->GetGarrison())
+ garrison->CancelBuildingConstruction(garrisonCancelConstruction.PlotInstanceID);
+}
+
+void WorldSession::HandleGarrisonRequestBlueprintAndSpecializationData(WorldPackets::Garrison::GarrisonRequestBlueprintAndSpecializationData& /*garrisonRequestBlueprintAndSpecializationData*/)
+{
+ if (Garrison* garrison = _player->GetGarrison())
+ garrison->SendBlueprintAndSpecializationData();
+}
+
+void WorldSession::HandleGarrisonGetBuildingLandmarks(WorldPackets::Garrison::GarrisonGetBuildingLandmarks& /*garrisonGetBuildingLandmarks*/)
+{
+ if (Garrison* garrison = _player->GetGarrison())
+ garrison->SendBuildingLandmarks(_player);
+}
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index 9552c9a0655..eefe89fef74 100644
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -35,6 +35,7 @@
#include "SpellAuraEffects.h"
#include "MiscPackets.h"
#include "LootPackets.h"
+#include "PartyPackets.h"
class Aura;
@@ -51,103 +52,59 @@ class Aura;
void WorldSession::SendPartyResult(PartyOperation operation, const std::string& member, PartyResult res, uint32 val /* = 0 */)
{
- WorldPacket data(SMSG_PARTY_COMMAND_RESULT, 4 + member.size() + 1 + 4 + 4 + 8);
- data << uint32(operation);
- data << member;
- data << uint32(res);
- data << uint32(val); // LFD cooldown related (used with ERR_PARTY_LFG_BOOT_COOLDOWN_S and ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S)
- data << uint64(0); // player who caused error (in some cases).
-
- SendPacket(&data);
-}
-
-void WorldSession::HandleGroupInviteOpcode(WorldPacket& recvData)
-{
- ObjectGuid crossRealmGuid; // unused
-
- recvData.read_skip<uint32>(); // Non-zero in cross realm invites
- recvData.read_skip<uint32>(); // Always 0
-
- crossRealmGuid[2] = recvData.ReadBit();
- crossRealmGuid[7] = recvData.ReadBit();
-
- uint8 realmLen = recvData.ReadBits(9);
-
- crossRealmGuid[3] = recvData.ReadBit();
-
- uint8 nameLen = recvData.ReadBits(10);
-
- crossRealmGuid[5] = recvData.ReadBit();
- crossRealmGuid[4] = recvData.ReadBit();
- crossRealmGuid[6] = recvData.ReadBit();
- crossRealmGuid[0] = recvData.ReadBit();
- crossRealmGuid[1] = recvData.ReadBit();
+ WorldPackets::Party::PartyCommandResult packet;
- recvData.ReadByteSeq(crossRealmGuid[4]);
- recvData.ReadByteSeq(crossRealmGuid[7]);
- recvData.ReadByteSeq(crossRealmGuid[6]);
+ packet.Name = member;
+ packet.Command = uint8(operation);
+ packet.Result = uint8(res);
+ packet.ResultData = val;
+ packet.ResultGUID = ObjectGuid::Empty;
- std::string memberName, realmName;
- memberName = recvData.ReadString(nameLen);
- realmName = recvData.ReadString(realmLen); // unused
-
- recvData.ReadByteSeq(crossRealmGuid[1]);
- recvData.ReadByteSeq(crossRealmGuid[0]);
- recvData.ReadByteSeq(crossRealmGuid[5]);
- recvData.ReadByteSeq(crossRealmGuid[3]);
- recvData.ReadByteSeq(crossRealmGuid[2]);
-
- // attempt add selected player
-
- // cheating
- if (!normalizePlayerName(memberName))
- {
- SendPartyResult(PARTY_OP_INVITE, memberName, ERR_BAD_PLAYER_NAME_S);
- return;
- }
+ SendPacket(packet.Write());
+}
- Player* player = ObjectAccessor::FindPlayerByName(memberName);
+void WorldSession::HandlePartyInviteOpcode(WorldPackets::Party::PartyInviteClient& packet)
+{
+ Player* player = ObjectAccessor::FindPlayerByName(packet.TargetName);
// no player
if (!player)
{
- SendPartyResult(PARTY_OP_INVITE, memberName, ERR_BAD_PLAYER_NAME_S);
+ SendPartyResult(PARTY_OP_INVITE, packet.TargetName, ERR_BAD_PLAYER_NAME_S);
return;
}
// restrict invite to GMs
if (!sWorld->getBoolConfig(CONFIG_ALLOW_GM_GROUP) && !GetPlayer()->IsGameMaster() && player->IsGameMaster())
{
- SendPartyResult(PARTY_OP_INVITE, memberName, ERR_BAD_PLAYER_NAME_S);
+ SendPartyResult(PARTY_OP_INVITE, player->GetName(), ERR_BAD_PLAYER_NAME_S);
return;
}
// can't group with
if (!GetPlayer()->IsGameMaster() && !sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP) && GetPlayer()->GetTeam() != player->GetTeam())
{
- SendPartyResult(PARTY_OP_INVITE, memberName, ERR_PLAYER_WRONG_FACTION);
+ SendPartyResult(PARTY_OP_INVITE, player->GetName(), ERR_PLAYER_WRONG_FACTION);
return;
}
if (GetPlayer()->GetInstanceId() != 0 && player->GetInstanceId() != 0 && GetPlayer()->GetInstanceId() != player->GetInstanceId() && GetPlayer()->GetMapId() == player->GetMapId())
{
- SendPartyResult(PARTY_OP_INVITE, memberName, ERR_TARGET_NOT_IN_INSTANCE_S);
+ SendPartyResult(PARTY_OP_INVITE, player->GetName(), ERR_TARGET_NOT_IN_INSTANCE_S);
return;
}
// just ignore us
if (player->GetInstanceId() != 0 && player->GetDungeonDifficultyID() != GetPlayer()->GetDungeonDifficultyID())
{
- SendPartyResult(PARTY_OP_INVITE, memberName, ERR_IGNORING_YOU_S);
+ SendPartyResult(PARTY_OP_INVITE, player->GetName(), ERR_IGNORING_YOU_S);
return;
}
if (player->GetSocial()->HasIgnore(GetPlayer()->GetGUID()))
{
- SendPartyResult(PARTY_OP_INVITE, memberName, ERR_IGNORING_YOU_S);
+ SendPartyResult(PARTY_OP_INVITE, player->GetName(), ERR_IGNORING_YOU_S);
return;
}
- ObjectGuid invitedGuid = player->GetGUID();
-
Group* group = GetPlayer()->GetGroup();
if (group && group->isBGGroup())
group = GetPlayer()->GetOriginalGroup();
@@ -155,67 +112,18 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket& recvData)
Group* group2 = player->GetGroup();
if (group2 && group2->isBGGroup())
group2 = player->GetOriginalGroup();
+
// player already in another group or invited
if (group2 || player->GetGroupInvite())
{
- SendPartyResult(PARTY_OP_INVITE, memberName, ERR_ALREADY_IN_GROUP_S);
+ SendPartyResult(PARTY_OP_INVITE, player->GetName(), ERR_ALREADY_IN_GROUP_S);
if (group2)
{
// tell the player that they were invited but it failed as they were already in a group
- WorldPacket data(SMSG_PARTY_INVITE, 45);
-
- data.WriteBit(0);
-
- data.WriteBit(invitedGuid[0]);
- data.WriteBit(invitedGuid[3]);
- data.WriteBit(invitedGuid[2]);
-
- data.WriteBit(0); // Inverse already in group
-
- data.WriteBit(invitedGuid[6]);
- data.WriteBit(invitedGuid[5]);
-
- data.WriteBits(0, 9); // Realm name
-
- data.WriteBit(invitedGuid[4]);
-
- data.WriteBits(GetPlayer()->GetName().size(), 7); // Inviter name length
-
- data.WriteBits(0, 24); // Count 2
-
- data.WriteBit(0);
-
- data.WriteBit(invitedGuid[1]);
- data.WriteBit(invitedGuid[7]);
-
- data.FlushBits();
-
- data.WriteByteSeq(invitedGuid[1]);
- data.WriteByteSeq(invitedGuid[4]);
-
- data << int32(getMSTime());
- data << int32(0);
- data << int32(0);
-
- data.WriteByteSeq(invitedGuid[6]);
- data.WriteByteSeq(invitedGuid[0]);
- data.WriteByteSeq(invitedGuid[2]);
- data.WriteByteSeq(invitedGuid[3]);
-
- // for count2 { int32(0) }
-
- data.WriteByteSeq(invitedGuid[5]);
-
- // data.append(realm name);
-
- data.WriteByteSeq(invitedGuid[7]);
-
- data.WriteString(GetPlayer()->GetName()); // inviter name
-
- data << int32(0);
-
- player->GetSession()->SendPacket(&data);
+ WorldPackets::Party::PartyInvite partyInvite;
+ partyInvite.Initialize(GetPlayer(), packet.ProposedRoles, false);
+ player->GetSession()->SendPacket(partyInvite.Write());
}
return;
@@ -264,79 +172,21 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket& recvData)
}
}
- // ok, we do it
- WorldPacket data(SMSG_PARTY_INVITE, 45);
-
- data.WriteBit(0);
-
- data.WriteBit(invitedGuid[0]);
- data.WriteBit(invitedGuid[3]);
- data.WriteBit(invitedGuid[2]);
-
- data.WriteBit(1); // Inverse already in group
-
- data.WriteBit(invitedGuid[6]);
- data.WriteBit(invitedGuid[5]);
-
- data.WriteBits(0, 9); // Realm name
-
- data.WriteBit(invitedGuid[4]);
-
- data.WriteBits(GetPlayer()->GetName().size(), 7); // Inviter name length
-
- data.WriteBits(0, 24); // Count 2
-
- data.WriteBit(0);
-
- data.WriteBit(invitedGuid[1]);
- data.WriteBit(invitedGuid[7]);
-
- data.FlushBits();
+ WorldPackets::Party::PartyInvite partyInvite;
+ partyInvite.Initialize(GetPlayer(), packet.ProposedRoles, true);
+ player->GetSession()->SendPacket(partyInvite.Write());
- data.WriteByteSeq(invitedGuid[1]);
- data.WriteByteSeq(invitedGuid[4]);
-
- data << int32(getMSTime());
- data << int32(0);
- data << int32(0);
-
- data.WriteByteSeq(invitedGuid[6]);
- data.WriteByteSeq(invitedGuid[0]);
- data.WriteByteSeq(invitedGuid[2]);
- data.WriteByteSeq(invitedGuid[3]);
-
- // for count2 { int32(0) }
-
- data.WriteByteSeq(invitedGuid[5]);
-
- // data.append(realm name);
-
- data.WriteByteSeq(invitedGuid[7]);
-
- data.WriteString(GetPlayer()->GetName());
-
- data << int32(0);
-
- player->GetSession()->SendPacket(&data);
-
- SendPartyResult(PARTY_OP_INVITE, memberName, ERR_PARTY_RESULT_OK);
+ SendPartyResult(PARTY_OP_INVITE, player->GetName(), ERR_PARTY_RESULT_OK);
}
-void WorldSession::HandleGroupInviteResponseOpcode(WorldPacket& recvData)
+void WorldSession::HandlePartyInviteResponseOpcode(WorldPackets::Party::PartyInviteResponse& packet)
{
- recvData.ReadBit(); // unk always 0
- bool accept = recvData.ReadBit();
-
- // Never actually received?
- /*if (accept)
- recvData.read_skip<uint32>(); // unk*/
-
Group* group = GetPlayer()->GetGroupInvite();
if (!group)
return;
- if (accept)
+ if (packet.Accept)
{
// Remove player from invitees in any case
group->RemoveInvite(GetPlayer());
@@ -391,28 +241,22 @@ void WorldSession::HandleGroupInviteResponseOpcode(WorldPacket& recvData)
return;
// report
- WorldPacket data(SMSG_GROUP_DECLINE, GetPlayer()->GetName().size());
- data << GetPlayer()->GetName();
- leader->GetSession()->SendPacket(&data);
+ WorldPackets::Party::GroupDecline decline(GetPlayer()->GetName());
+ leader->GetSession()->SendPacket(decline.Write());
}
}
-void WorldSession::HandleGroupUninviteOpcode(WorldPacket& recvData)
+void WorldSession::HandlePartyUninviteOpcode(WorldPackets::Party::PartyUninvite& packet)
{
- ObjectGuid guid;
- std::string reason;
- recvData >> guid;
- recvData >> reason;
-
- //can't uninvite yourself
- if (guid == GetPlayer()->GetGUID())
+ // can't uninvite yourself
+ if (packet.TargetGUID == GetPlayer()->GetGUID())
{
TC_LOG_ERROR("network", "WorldSession::HandleGroupUninviteGuidOpcode: leader %s (%s) tried to uninvite himself from the group.",
GetPlayer()->GetName().c_str(), GetPlayer()->GetGUID().ToString().c_str());
return;
}
- PartyResult res = GetPlayer()->CanUninviteFromGroup(guid);
+ PartyResult res = GetPlayer()->CanUninviteFromGroup(packet.TargetGUID);
if (res != ERR_PARTY_RESULT_OK)
{
SendPartyResult(PARTY_OP_UNINVITE, "", res);
@@ -423,13 +267,13 @@ void WorldSession::HandleGroupUninviteOpcode(WorldPacket& recvData)
// grp is checked already above in CanUninviteFromGroup()
ASSERT(grp);
- if (grp->IsMember(guid))
+ if (grp->IsMember(packet.TargetGUID))
{
- Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), reason.c_str());
+ Player::RemoveFromGroup(grp, packet.TargetGUID, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), packet.Reason.c_str());
return;
}
- if (Player* player = grp->GetInvited(guid))
+ if (Player* player = grp->GetInvited(packet.TargetGUID))
{
player->UninviteFromGroup();
return;
@@ -438,12 +282,9 @@ void WorldSession::HandleGroupUninviteOpcode(WorldPacket& recvData)
SendPartyResult(PARTY_OP_UNINVITE, "", ERR_TARGET_NOT_IN_GROUP_S);
}
-void WorldSession::HandleGroupSetLeaderOpcode(WorldPacket& recvData)
+void WorldSession::HandleSetPartyLeaderOpcode(WorldPackets::Party::SetPartyLeader& packet)
{
- ObjectGuid guid;
- recvData >> guid;
-
- Player* player = ObjectAccessor::FindConnectedPlayer(guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(packet.TargetGUID);
Group* group = GetPlayer()->GetGroup();
if (!group || !player)
@@ -453,87 +294,35 @@ void WorldSession::HandleGroupSetLeaderOpcode(WorldPacket& recvData)
return;
// Everything's fine, accepted.
- group->ChangeLeader(guid);
+ group->ChangeLeader(packet.TargetGUID, packet.PartyIndex);
group->SendUpdate();
}
-void WorldSession::HandleGroupSetRolesOpcode(WorldPacket& recvData)
+void WorldSession::HandleSetRoleOpcode(WorldPackets::Party::SetRole& packet)
{
- uint32 newRole;
- ObjectGuid guid1; // Assigner GUID
- ObjectGuid guid2; // Target GUID
-
- guid1 = GetPlayer()->GetGUID();
-
- recvData >> newRole;
-
- guid2[2] = recvData.ReadBit();
- guid2[6] = recvData.ReadBit();
- guid2[3] = recvData.ReadBit();
- guid2[7] = recvData.ReadBit();
- guid2[5] = recvData.ReadBit();
- guid2[1] = recvData.ReadBit();
- guid2[0] = recvData.ReadBit();
- guid2[4] = recvData.ReadBit();
-
- recvData.ReadByteSeq(guid2[6]);
- recvData.ReadByteSeq(guid2[4]);
- recvData.ReadByteSeq(guid2[1]);
- recvData.ReadByteSeq(guid2[3]);
- recvData.ReadByteSeq(guid2[0]);
- recvData.ReadByteSeq(guid2[5]);
- recvData.ReadByteSeq(guid2[2]);
- recvData.ReadByteSeq(guid2[7]);
-
- WorldPacket data(SMSG_ROLE_CHANGED_INFORM, 24);
-
- data.WriteBit(guid1[1]);
- data.WriteBit(guid2[0]);
- data.WriteBit(guid2[2]);
- data.WriteBit(guid2[4]);
- data.WriteBit(guid2[7]);
- data.WriteBit(guid2[3]);
- data.WriteBit(guid1[7]);
- data.WriteBit(guid2[5]);
- data.WriteBit(guid1[5]);
- data.WriteBit(guid1[4]);
- data.WriteBit(guid1[3]);
- data.WriteBit(guid2[6]);
- data.WriteBit(guid1[2]);
- data.WriteBit(guid1[6]);
- data.WriteBit(guid2[1]);
- data.WriteBit(guid1[0]);
-
- data.WriteByteSeq(guid1[7]);
- data.WriteByteSeq(guid2[3]);
- data.WriteByteSeq(guid1[6]);
- data.WriteByteSeq(guid2[4]);
- data.WriteByteSeq(guid2[0]);
- data << uint32(newRole); // New Role
- data.WriteByteSeq(guid2[6]);
- data.WriteByteSeq(guid2[2]);
- data.WriteByteSeq(guid1[0]);
- data.WriteByteSeq(guid1[4]);
- data.WriteByteSeq(guid2[1]);
- data.WriteByteSeq(guid1[3]);
- data.WriteByteSeq(guid1[5]);
- data.WriteByteSeq(guid1[2]);
- data.WriteByteSeq(guid2[5]);
- data.WriteByteSeq(guid2[7]);
- data.WriteByteSeq(guid1[1]);
- data << uint32(0); // Old Role
-
- if (Group* group = GetPlayer()->GetGroup())
+ WorldPackets::Party::RoleChangedInform roleChangedInform;
+
+ Group* group = GetPlayer()->GetGroup();
+ uint8 oldRole = group ? group->GetLfgRoles(packet.TargetGUID) : 0;
+ if (oldRole == packet.Role)
+ return;
+
+ roleChangedInform.PartyIndex = packet.PartyIndex;
+ roleChangedInform.From = GetPlayer()->GetGUID();
+ roleChangedInform.ChangedUnit = packet.TargetGUID;
+ roleChangedInform.OldRole = oldRole;
+ roleChangedInform.NewRole = packet.Role;
+
+ if (group)
{
- /// @todo probably should be sent only if (oldRole != newRole)
- group->BroadcastPacket(&data, false);
- group->SetLfgRoles(guid2, newRole);
+ group->BroadcastPacket(roleChangedInform.Write(), false);
+ group->SetLfgRoles(packet.TargetGUID, packet.Role);
}
else
- SendPacket(&data);
+ SendPacket(roleChangedInform.Write());
}
-void WorldSession::HandleGroupDisbandOpcode(WorldPacket& /*recvData*/)
+void WorldSession::HandleLeaveGroupOpcode(WorldPackets::Party::LeaveGroup& /*packet*/)
{
Group* grp = GetPlayer()->GetGroup();
if (!grp)
@@ -554,13 +343,8 @@ void WorldSession::HandleGroupDisbandOpcode(WorldPacket& /*recvData*/)
GetPlayer()->RemoveFromGroup(GROUP_REMOVEMETHOD_LEAVE);
}
-void WorldSession::HandleLootMethodOpcode(WorldPacket& recvData)
+void WorldSession::HandleSetLootMethodOpcode(WorldPackets::Party::SetLootMethod& packet)
{
- uint32 lootMethod;
- ObjectGuid lootMaster;
- uint32 lootThreshold;
- recvData >> lootMethod >> lootMaster >> lootThreshold;
-
Group* group = GetPlayer()->GetGroup();
if (!group)
return;
@@ -569,20 +353,20 @@ void WorldSession::HandleLootMethodOpcode(WorldPacket& recvData)
if (!group->IsLeader(GetPlayer()->GetGUID()))
return;
- if (lootMethod > NEED_BEFORE_GREED)
+ if (packet.LootMethod > NEED_BEFORE_GREED)
return;
- if (lootThreshold < ITEM_QUALITY_UNCOMMON || lootThreshold > ITEM_QUALITY_ARTIFACT)
+ if (packet.LootThreshold < ITEM_QUALITY_UNCOMMON || packet.LootThreshold > ITEM_QUALITY_ARTIFACT)
return;
- if (lootMethod == MASTER_LOOT && !group->IsMember(lootMaster))
+ if (packet.LootMethod == MASTER_LOOT && !group->IsMember(packet.LootMasterGUID))
return;
/********************/
// everything's fine, do it
- group->SetLootMethod((LootMethod)lootMethod);
- group->SetMasterLooterGuid(lootMaster);
- group->SetLootThreshold((ItemQualities)lootThreshold);
+ group->SetLootMethod((LootMethod)packet.LootMethod);
+ group->SetMasterLooterGuid(packet.LootMasterGUID);
+ group->SetLootThreshold((ItemQualities)packet.LootThreshold);
group->SendUpdate();
}
@@ -605,28 +389,16 @@ void WorldSession::HandleLootRoll(WorldPackets::Loot::LootRoll& packet)
}
}
-void WorldSession::HandleMinimapPingOpcode(WorldPacket& recvData)
+void WorldSession::HandleMinimapPingOpcode(WorldPackets::Party::MinimapPingClient& packet)
{
- TC_LOG_DEBUG("network", "WORLD: Received MSG_MINIMAP_PING");
-
if (!GetPlayer()->GetGroup())
return;
- float x, y;
- recvData >> x;
- recvData >> y;
-
- //TC_LOG_DEBUG("misc", "Received opcode MSG_MINIMAP_PING X: %f, Y: %f", x, y);
-
- /** error handling **/
- /********************/
-
- // everything's fine, do it
- WorldPacket data(SMSG_MINIMAP_PING, (8+4+4));
- data << GetPlayer()->GetGUID();
- data << float(x);
- data << float(y);
- GetPlayer()->GetGroup()->BroadcastPacket(&data, true, -1, GetPlayer()->GetGUID());
+ WorldPackets::Party::MinimapPing minimapPing;
+ minimapPing.Sender = GetPlayer()->GetGUID();
+ minimapPing.PositionX = packet.PositionX;
+ minimapPing.PositionY = packet.PositionY;
+ GetPlayer()->GetGroup()->BroadcastPacket(minimapPing.Write(), true, -1, GetPlayer()->GetGUID());
}
void WorldSession::HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet)
@@ -643,8 +415,6 @@ void WorldSession::HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient&
// everything's fine, do it
roll = urand(minimum, maximum);
- //TC_LOG_DEBUG("misc", "ROLL: MIN: %u, MAX: %u, ROLL: %u", minimum, maximum, roll);
-
WorldPackets::Misc::RandomRoll randomRoll;
randomRoll.Min = minimum;
randomRoll.Max = maximum;
@@ -657,44 +427,31 @@ void WorldSession::HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient&
SendPacket(randomRoll.Write());
}
-void WorldSession::HandleRaidTargetUpdateOpcode(WorldPacket& recvData)
+void WorldSession::HandleUpdateRaidTargetOpcode(WorldPackets::Party::UpdateRaidTarget& packet)
{
- TC_LOG_DEBUG("network", "WORLD: Received MSG_RAID_TARGET_UPDATE");
-
Group* group = GetPlayer()->GetGroup();
if (!group)
return;
- uint8 x;
- recvData >> x;
-
- /** error handling **/
- /********************/
-
- // everything's fine, do it
- if (x == 0xFF) // target icon request
- group->SendTargetIconList(this);
- else // target icon update
+ if (packet.Symbol == 0xFF) // target icon request
+ group->SendTargetIconList(this, packet.PartyIndex);
+ else // target icon update
{
if (group->isRaidGroup() && !group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID()))
return;
- ObjectGuid guid;
- recvData >> guid;
-
- if (guid.IsPlayer())
+ if (packet.Target.IsPlayer())
{
- Player* target = ObjectAccessor::FindConnectedPlayer(guid);
-
+ Player* target = ObjectAccessor::FindConnectedPlayer(packet.Target);
if (!target || target->IsHostileTo(GetPlayer()))
return;
}
- group->SetTargetIcon(x, _player->GetGUID(), guid);
+ group->SetTargetIcon(packet.Symbol, packet.Target, GetPlayer()->GetGUID(), packet.PartyIndex);
}
}
-void WorldSession::HandleGroupRaidConvertOpcode(WorldPacket& recvData)
+void WorldSession::HandleConvertRaidOpcode(WorldPackets::Party::ConvertRaid& packet)
{
Group* group = GetPlayer()->GetGroup();
if (!group)
@@ -711,71 +468,56 @@ void WorldSession::HandleGroupRaidConvertOpcode(WorldPacket& recvData)
SendPartyResult(PARTY_OP_INVITE, "", ERR_PARTY_RESULT_OK);
// New 4.x: it is now possible to convert a raid to a group if member count is 5 or less
-
- bool toRaid;
- recvData >> toRaid;
-
- if (toRaid)
+ if (packet.Raid)
group->ConvertToRaid();
else
group->ConvertToGroup();
}
-void WorldSession::HandleGroupRequestJoinUpdates(WorldPacket& /*recvData*/)
+void WorldSession::HandleRequestPartyJoinUpdates(WorldPackets::Party::RequestPartyJoinUpdates& packet)
{
Group* group = GetPlayer()->GetGroup();
if (!group)
return;
- // does some stuff. dunno what.
+ group->SendTargetIconList(this, packet.PartyIndex);
+ group->SendRaidMarkersChanged(this, packet.PartyIndex);
}
-void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket& recvData)
+void WorldSession::HandleChangeSubGroupOpcode(WorldPackets::Party::ChangeSubGroup& packet)
{
// we will get correct pointer for group here, so we don't have to check if group is BG raid
Group* group = GetPlayer()->GetGroup();
if (!group)
return;
- std::string name;
- uint8 groupNr;
- recvData >> name;
- recvData >> groupNr;
-
- if (groupNr >= MAX_RAID_SUBGROUPS)
+ if (packet.NewSubGroup >= MAX_RAID_SUBGROUPS)
return;
ObjectGuid senderGuid = GetPlayer()->GetGUID();
if (!group->IsLeader(senderGuid) && !group->IsAssistant(senderGuid))
return;
- if (!group->HasFreeSlotSubGroup(groupNr))
+ if (!group->HasFreeSlotSubGroup(packet.NewSubGroup))
return;
- Player* movedPlayer = ObjectAccessor::FindConnectedPlayerByName(name);
- ObjectGuid guid;
-
- if (movedPlayer)
- guid = movedPlayer->GetGUID();
- else
- {
- CharacterDatabase.EscapeString(name);
- guid = ObjectMgr::GetPlayerGUIDByName(name.c_str());
- }
-
- group->ChangeMembersGroup(guid, groupNr);
+ group->ChangeMembersGroup(packet.TargetGUID, packet.NewSubGroup);
}
-void WorldSession::HandleGroupSwapSubGroupOpcode(WorldPacket& recvData)
+void WorldSession::HandleSwapSubGroupsOpcode(WorldPackets::Party::SwapSubGroups& packet)
{
- std::string unk1;
- std::string unk2;
+ Group* group = GetPlayer()->GetGroup();
+ if (!group)
+ return;
- recvData >> unk1;
- recvData >> unk2;
+ ObjectGuid senderGuid = GetPlayer()->GetGUID();
+ if (!group->IsLeader(senderGuid) && !group->IsAssistant(senderGuid))
+ return;
+
+ group->SwapMembersGroups(packet.FirstTarget, packet.SecondTarget);
}
-void WorldSession::HandleGroupAssistantLeaderOpcode(WorldPacket& recvData)
+void WorldSession::HandleSetAssistantLeaderOpcode(WorldPackets::Party::SetAssistantLeader& packet)
{
Group* group = GetPlayer()->GetGroup();
if (!group)
@@ -784,12 +526,7 @@ void WorldSession::HandleGroupAssistantLeaderOpcode(WorldPacket& recvData)
if (!group->IsLeader(GetPlayer()->GetGUID()))
return;
- ObjectGuid guid;
- bool apply;
- recvData >> guid;
- recvData >> apply;
-
- group->SetGroupMemberFlag(guid, apply, MEMBER_FLAG_ASSISTANT);
+ group->SetGroupMemberFlag(packet.Target, packet.Apply, MEMBER_FLAG_ASSISTANT);
}
void WorldSession::HandlePartyAssignmentOpcode(WorldPacket& recvData)
@@ -826,509 +563,102 @@ void WorldSession::HandlePartyAssignmentOpcode(WorldPacket& recvData)
group->SendUpdate();
}
-void WorldSession::HandleRaidReadyCheckOpcode(WorldPacket& recvData)
+void WorldSession::HandleDoReadyCheckOpcode(WorldPackets::Party::DoReadyCheck& packet)
{
Group* group = GetPlayer()->GetGroup();
if (!group)
return;
- if (recvData.empty()) // request
- {
- /** error handling **/
- if (!group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID()))
- return;
- /********************/
-
- // everything's fine, do it
- WorldPacket data(SMSG_READY_CHECK_STARTED, 8);
- data << GetPlayer()->GetGUID();
- group->BroadcastPacket(&data, false, -1);
+ /** error handling **/
+ if (!group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID()))
+ return;
+ /********************/
- group->OfflineReadyCheck();
- }
- else // answer
- {
- uint8 state;
- recvData >> state;
-
- // everything's fine, do it
- WorldPacket data(SMSG_READY_CHECK_RESPONSE, 9);
- data << GetPlayer()->GetGUID();
- data << uint8(state);
- group->BroadcastReadyCheck(&data);
- }
+ // everything's fine, do it
+ group->StartReadyCheck(GetPlayer()->GetGUID(), packet.PartyIndex);
}
-void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacket* data)
+void WorldSession::HandleReadyCheckResponseOpcode(WorldPackets::Party::ReadyCheckResponseClient& packet)
{
- uint32 mask = player->GetGroupUpdateFlag();
-
- if (mask == GROUP_UPDATE_FLAG_NONE)
+ Group* group = GetPlayer()->GetGroup();
+ if (!group)
return;
- std::set<uint32> const& phases = player->GetPhases();
-
- if (mask & GROUP_UPDATE_FLAG_POWER_TYPE) // if update power type, update current/max power also
- mask |= (GROUP_UPDATE_FLAG_CUR_POWER | GROUP_UPDATE_FLAG_MAX_POWER);
-
- if (mask & GROUP_UPDATE_FLAG_PET_POWER_TYPE) // same for pets
- mask |= (GROUP_UPDATE_FLAG_PET_CUR_POWER | GROUP_UPDATE_FLAG_PET_MAX_POWER);
-
- data->Initialize(SMSG_PARTY_MEMBER_STATE, 80); // average value
- *data << player->GetPackGUID();
- *data << uint32(mask);
-
- if (mask & GROUP_UPDATE_FLAG_STATUS)
- {
- uint16 playerStatus = MEMBER_STATUS_ONLINE;
- if (player->IsPvP())
- playerStatus |= MEMBER_STATUS_PVP;
-
- if (!player->IsAlive())
- {
- if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST))
- playerStatus |= MEMBER_STATUS_GHOST;
- else
- playerStatus |= MEMBER_STATUS_DEAD;
- }
-
- if (player->IsFFAPvP())
- playerStatus |= MEMBER_STATUS_PVP_FFA;
-
- if (player->isAFK())
- playerStatus |= MEMBER_STATUS_AFK;
-
- if (player->isDND())
- playerStatus |= MEMBER_STATUS_DND;
-
- *data << uint16(playerStatus);
- }
-
- if (mask & GROUP_UPDATE_FLAG_CUR_HP)
- *data << uint32(player->GetHealth());
-
- if (mask & GROUP_UPDATE_FLAG_MAX_HP)
- *data << uint32(player->GetMaxHealth());
-
- Powers powerType = player->getPowerType();
- if (mask & GROUP_UPDATE_FLAG_POWER_TYPE)
- *data << uint8(powerType);
-
- if (mask & GROUP_UPDATE_FLAG_CUR_POWER)
- *data << uint16(player->GetPower(powerType));
-
- if (mask & GROUP_UPDATE_FLAG_MAX_POWER)
- *data << uint16(player->GetMaxPower(powerType));
-
- if (mask & GROUP_UPDATE_FLAG_LEVEL)
- *data << uint16(player->getLevel());
-
- if (mask & GROUP_UPDATE_FLAG_ZONE)
- *data << uint16(player->GetZoneId());
-
- if (mask & GROUP_UPDATE_FLAG_UNK100)
- *data << uint16(0);
-
- if (mask & GROUP_UPDATE_FLAG_POSITION)
- {
- *data << uint16(player->GetPositionX());
- *data << uint16(player->GetPositionY());
- *data << uint16(player->GetPositionZ());
- }
-
- if (mask & GROUP_UPDATE_FLAG_AURAS)
- {
- *data << uint8(0);
- uint64 auramask = player->GetAuraUpdateMaskForRaid();
- *data << uint64(auramask);
- *data << uint32(MAX_AURAS); // count
- for (uint32 i = 0; i < MAX_AURAS; ++i)
- {
- if (auramask & (uint64(1) << i))
- {
- AuraApplication const* aurApp = player->GetVisibleAura(i);
- if (!aurApp)
- {
- *data << uint32(0);
- *data << uint16(0);
- continue;
- }
-
- *data << uint32(aurApp->GetBase()->GetId());
- *data << uint16(aurApp->GetFlags());
-
- if (aurApp->GetFlags() & AFLAG_SCALABLE)
- {
- for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- {
- if (AuraEffect const* eff = aurApp->GetBase()->GetEffect(i))
- *data << int32(eff->GetAmount());
- else
- *data << int32(0);
- }
- }
- }
- }
- }
-
- Pet* pet = player->GetPet();
- if (mask & GROUP_UPDATE_FLAG_PET_GUID)
- {
- if (pet)
- *data << pet->GetGUID();
- else
- *data << ObjectGuid::Empty;
- }
-
- if (mask & GROUP_UPDATE_FLAG_PET_NAME)
- {
- if (pet)
- *data << pet->GetName();
- else
- *data << uint8(0);
- }
-
- if (mask & GROUP_UPDATE_FLAG_PET_MODEL_ID)
- {
- if (pet)
- *data << uint16(pet->GetDisplayId());
- else
- *data << uint16(0);
- }
-
- if (mask & GROUP_UPDATE_FLAG_PET_CUR_HP)
- {
- if (pet)
- *data << uint32(pet->GetHealth());
- else
- *data << uint32(0);
- }
-
- if (mask & GROUP_UPDATE_FLAG_PET_MAX_HP)
- {
- if (pet)
- *data << uint32(pet->GetMaxHealth());
- else
- *data << uint32(0);
- }
-
- if (mask & GROUP_UPDATE_FLAG_PET_POWER_TYPE)
- {
- if (pet)
- *data << uint8(pet->getPowerType());
- else
- *data << uint8(0);
- }
-
- if (mask & GROUP_UPDATE_FLAG_PET_CUR_POWER)
- {
- if (pet)
- *data << uint16(pet->GetPower(pet->getPowerType()));
- else
- *data << uint16(0);
- }
-
- if (mask & GROUP_UPDATE_FLAG_PET_MAX_POWER)
- {
- if (pet)
- *data << uint16(pet->GetMaxPower(pet->getPowerType()));
- else
- *data << uint16(0);
- }
-
- if (mask & GROUP_UPDATE_FLAG_PET_AURAS)
- {
- if (pet)
- {
- *data << uint8(0);
- uint64 auramask = pet->GetAuraUpdateMaskForRaid();
- *data << uint64(auramask);
- *data << uint32(MAX_AURAS); // count
- for (uint32 i = 0; i < MAX_AURAS; ++i)
- {
- if (auramask & (uint64(1) << i))
- {
- AuraApplication const* aurApp = pet->GetVisibleAura(i);
- if (!aurApp)
- {
- *data << uint32(0);
- *data << uint16(0);
- continue;
- }
-
- *data << uint32(aurApp->GetBase()->GetId());
- *data << uint16(aurApp->GetFlags());
-
- if (aurApp->GetFlags() & AFLAG_SCALABLE)
- {
- for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- {
- if (AuraEffect const* eff = aurApp->GetBase()->GetEffect(i))
- *data << int32(eff->GetAmount());
- else
- *data << int32(0);
- }
- }
- }
- }
- }
- else
- {
- *data << uint8(0);
- *data << uint64(0);
- }
- }
-
- if (mask & GROUP_UPDATE_FLAG_VEHICLE_SEAT)
- {
- if (Vehicle* veh = player->GetVehicle())
- *data << uint32(veh->GetVehicleInfo()->SeatID[player->m_movementInfo.transport.seat]);
- else
- *data << uint32(0);
-
- }
-
- if (mask & GROUP_UPDATE_FLAG_PHASE)
- {
- *data << uint32(phases.empty() ? 8 : 0);
- *data << uint32(phases.size());
- for (std::set<uint32>::const_iterator itr = phases.begin(); itr != phases.end(); ++itr)
- *data << uint16(*itr);
- }
+ // everything's fine, do it
+ group->SetMemberReadyCheck(GetPlayer()->GetGUID(), packet.IsReady);
}
-/*this procedure handles clients CMSG_REQUEST_PARTY_MEMBER_STATS request*/
-void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData)
+void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPackets::Party::RequestPartyMemberStats& packet)
{
- ObjectGuid Guid;
- recvData >> Guid;
+ WorldPackets::Party::PartyMemberStats partyMemberStats;
- Player* player = ObjectAccessor::FindConnectedPlayer(Guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(packet.TargetGUID);
if (!player)
{
- WorldPacket data(SMSG_PARTY_MEMBER_STATE, 3 + 4 + 2);
- data << uint8(0); // only for SMSG_PARTY_MEMBER_STATS_FULL, probably arena/bg related
- data << Guid.WriteAsPacked();
- data << uint32(GROUP_UPDATE_FLAG_STATUS);
- data << uint16(MEMBER_STATUS_OFFLINE);
- SendPacket(&data);
- return;
- }
-
- Pet* pet = player->GetPet();
- Powers powerType = player->getPowerType();
- std::set<uint32> const& phases = player->GetPhases();
-
- WorldPacket data(SMSG_PARTY_MEMBER_STATE, 4 + 2 + 2 + 2 + 1 + 2 * 6 + 8 + 1 + 8);
- data << uint8(0); // only for SMSG_PARTY_MEMBER_STATS_FULL, probably arena/bg related
- data << player->GetPackGUID();
-
- uint32 updateFlags = GROUP_UPDATE_FLAG_STATUS | GROUP_UPDATE_FLAG_CUR_HP | GROUP_UPDATE_FLAG_MAX_HP
- | GROUP_UPDATE_FLAG_CUR_POWER | GROUP_UPDATE_FLAG_MAX_POWER | GROUP_UPDATE_FLAG_LEVEL
- | GROUP_UPDATE_FLAG_ZONE | GROUP_UPDATE_FLAG_POSITION | GROUP_UPDATE_FLAG_AURAS
- | GROUP_UPDATE_FLAG_PET_NAME | GROUP_UPDATE_FLAG_PET_MODEL_ID | GROUP_UPDATE_FLAG_PET_AURAS;
-
- if (powerType != POWER_MANA)
- updateFlags |= GROUP_UPDATE_FLAG_POWER_TYPE;
-
- if (pet)
- updateFlags |= GROUP_UPDATE_FLAG_PET_GUID | GROUP_UPDATE_FLAG_PET_CUR_HP | GROUP_UPDATE_FLAG_PET_MAX_HP
- | GROUP_UPDATE_FLAG_PET_POWER_TYPE | GROUP_UPDATE_FLAG_PET_CUR_POWER | GROUP_UPDATE_FLAG_PET_MAX_POWER;
-
- if (player->GetVehicle())
- updateFlags |= GROUP_UPDATE_FLAG_VEHICLE_SEAT;
-
- if (!phases.empty())
- updateFlags |= GROUP_UPDATE_FLAG_PHASE;
-
- uint16 playerStatus = MEMBER_STATUS_ONLINE;
- if (player->IsPvP())
- playerStatus |= MEMBER_STATUS_PVP;
-
- if (!player->IsAlive())
- {
- if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST))
- playerStatus |= MEMBER_STATUS_GHOST;
- else
- playerStatus |= MEMBER_STATUS_DEAD;
- }
-
- if (player->IsFFAPvP())
- playerStatus |= MEMBER_STATUS_PVP_FFA;
-
- if (player->isAFK())
- playerStatus |= MEMBER_STATUS_AFK;
-
- if (player->isDND())
- playerStatus |= MEMBER_STATUS_DND;
-
- data << uint32(updateFlags);
- data << uint16(playerStatus); // GROUP_UPDATE_FLAG_STATUS
- data << uint32(player->GetHealth()); // GROUP_UPDATE_FLAG_CUR_HP
- data << uint32(player->GetMaxHealth()); // GROUP_UPDATE_FLAG_MAX_HP
- if (updateFlags & GROUP_UPDATE_FLAG_POWER_TYPE)
- data << uint8(powerType);
-
- data << uint16(player->GetPower(powerType)); // GROUP_UPDATE_FLAG_CUR_POWER
- data << uint16(player->GetMaxPower(powerType)); // GROUP_UPDATE_FLAG_MAX_POWER
- data << uint16(player->getLevel()); // GROUP_UPDATE_FLAG_LEVEL
- data << uint16(player->GetZoneId()); // GROUP_UPDATE_FLAG_ZONE
- data << uint16(player->GetPositionX()); // GROUP_UPDATE_FLAG_POSITION
- data << uint16(player->GetPositionY()); // GROUP_UPDATE_FLAG_POSITION
- data << uint16(player->GetPositionZ()); // GROUP_UPDATE_FLAG_POSITION
-
- // GROUP_UPDATE_FLAG_AURAS
- data << uint8(1);
- uint64 auramask = 0;
- size_t maskPos = data.wpos();
- data << uint64(auramask); // placeholder
- data << uint32(MAX_AURAS); // count
-
- for (uint8 i = 0; i < MAX_AURAS; ++i)
- {
- if (AuraApplication const* aurApp = player->GetVisibleAura(i))
- {
- auramask |= (uint64(1) << i);
-
- data << uint32(aurApp->GetBase()->GetId());
- data << uint16(aurApp->GetFlags());
-
- if (aurApp->GetFlags() & AFLAG_SCALABLE)
- {
- for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- {
- if (AuraEffect const* eff = aurApp->GetBase()->GetEffect(i))
- data << int32(eff->GetAmount());
- else
- data << int32(0);
- }
- }
- }
- }
-
- data.put<uint64>(maskPos, auramask); // GROUP_UPDATE_FLAG_AURAS
-
- if (updateFlags & GROUP_UPDATE_FLAG_PET_GUID)
- data << pet->GetGUID();
-
- data << std::string(pet ? pet->GetName() : ""); // GROUP_UPDATE_FLAG_PET_NAME
- data << uint16(pet ? pet->GetDisplayId() : 0); // GROUP_UPDATE_FLAG_PET_MODEL_ID
-
- if (updateFlags & GROUP_UPDATE_FLAG_PET_CUR_HP)
- data << uint32(pet->GetHealth());
-
- if (updateFlags & GROUP_UPDATE_FLAG_PET_MAX_HP)
- data << uint32(pet->GetMaxHealth());
-
- if (updateFlags & GROUP_UPDATE_FLAG_PET_POWER_TYPE)
- data << (uint8)pet->getPowerType();
-
- if (updateFlags & GROUP_UPDATE_FLAG_PET_CUR_POWER)
- data << uint16(pet->GetPower(pet->getPowerType()));
-
- if (updateFlags & GROUP_UPDATE_FLAG_PET_MAX_POWER)
- data << uint16(pet->GetMaxPower(pet->getPowerType()));
-
- // GROUP_UPDATE_FLAG_PET_AURAS
- uint64 petAuraMask = 0;
- data << uint8(1);
- maskPos = data.wpos();
- data << uint64(petAuraMask); // placeholder
- data << uint32(MAX_AURAS); // count
- if (pet)
- {
- for (uint8 i = 0; i < MAX_AURAS; ++i)
- {
- if (AuraApplication const* aurApp = pet->GetVisibleAura(i))
- {
- petAuraMask |= (uint64(1) << i);
-
- data << uint32(aurApp->GetBase()->GetId());
- data << uint16(aurApp->GetFlags());
-
- if (aurApp->GetFlags() & AFLAG_SCALABLE)
- {
- for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- {
- if (AuraEffect const* eff = aurApp->GetBase()->GetEffect(i))
- data << int32(eff->GetAmount());
- else
- data << int32(0);
- }
- }
- }
- }
- }
-
- data.put<uint64>(maskPos, petAuraMask); // GROUP_UPDATE_FLAG_PET_AURAS
-
- if (updateFlags & GROUP_UPDATE_FLAG_VEHICLE_SEAT)
- data << uint32(player->GetVehicle()->GetVehicleInfo()->SeatID[player->m_movementInfo.transport.seat]);
-
- if (updateFlags & GROUP_UPDATE_FLAG_PHASE)
- {
- data << uint32(phases.empty() ? 8 : 0);
- data << uint32(phases.size());
- for (std::set<uint32>::const_iterator itr = phases.begin(); itr != phases.end(); ++itr)
- data << uint16(*itr);
+ partyMemberStats.MemberStats.GUID = packet.TargetGUID;
+ partyMemberStats.MemberStats.Status = MEMBER_STATUS_OFFLINE;
}
+ else
+ partyMemberStats.Initialize(player);
- SendPacket(&data);
+ SendPacket(partyMemberStats.Write());
}
-void WorldSession::HandleRequestRaidInfoOpcode(WorldPacket& /*recvData*/)
+void WorldSession::HandleRequestRaidInfoOpcode(WorldPackets::Party::RequestRaidInfo& /*packet*/)
{
// every time the player checks the character screen
_player->SendRaidInfo();
}
-void WorldSession::HandleOptOutOfLootOpcode(WorldPacket& recvData)
+void WorldSession::HandleOptOutOfLootOpcode(WorldPackets::Party::OptOutOfLoot& packet)
{
- bool passOnLoot;
- recvData >> passOnLoot; // 1 always pass, 0 do not pass
-
// ignore if player not loaded
if (!GetPlayer()) // needed because STATUS_AUTHED
{
- if (passOnLoot)
+ if (packet.PassOnLoot)
TC_LOG_ERROR("network", "CMSG_OPT_OUT_OF_LOOT value<>0 for not-loaded character!");
return;
}
- GetPlayer()->SetPassOnGroupLoot(passOnLoot != 0);
+ GetPlayer()->SetPassOnGroupLoot(packet.PassOnLoot);
}
-void WorldSession::HandleRolePollBeginOpcode(WorldPacket& recvData)
+void WorldSession::HandleInitiateRolePoll(WorldPackets::Party::InitiateRolePoll& packet)
{
Group* group = GetPlayer()->GetGroup();
if (!group)
return;
- if (recvData.empty())
- {
- if (!group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID()))
- return;
+ ObjectGuid guid = GetPlayer()->GetGUID();
+ if (!group->IsLeader(guid) && !group->IsAssistant(guid))
+ return;
- ObjectGuid guid = GetPlayer()->GetGUID();
-
- WorldPacket data(SMSG_ROLE_POLL_INFORM, 8);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[6]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[3]);
-
- GetPlayer()->GetGroup()->BroadcastPacket(&data, true);
- }
+ WorldPackets::Party::RolePollInform rolePollInform;
+ rolePollInform.From = GetPlayer()->GetGUID();
+ rolePollInform.PartyIndex = packet.PartyIndex;
+ group->BroadcastPacket(rolePollInform.Write(), true);
+}
+
+void WorldSession::HandleSetEveryoneIsAssistant(WorldPackets::Party::SetEveryoneIsAssistant& packet)
+{
+ Group* group = GetPlayer()->GetGroup();
+ if (!group)
+ return;
+
+ if (!group->IsLeader(GetPlayer()->GetGUID()))
+ return;
+
+ group->SetEveryoneIsAssistant(packet.EveryoneIsAssistant);
+}
+
+void WorldSession::HandleClearRaidMarker(WorldPackets::Party::ClearRaidMarker& packet)
+{
+ Group* group = GetPlayer()->GetGroup();
+ if (!group)
+ return;
+
+ if (group->isRaidGroup() && !group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID()))
+ return;
+
+ group->DeleteRaidMarker(packet.MarkerId);
}
diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp
index ad3de84beb5..fbd1d5a7183 100644
--- a/src/server/game/Handlers/GuildHandler.cpp
+++ b/src/server/game/Handlers/GuildHandler.cpp
@@ -191,6 +191,12 @@ void WorldSession::HandleSaveGuildEmblem(WorldPackets::Guild::SaveGuildEmblem& p
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
+ if (!emblemInfo.ValidateEmblemColors())
+ {
+ Guild::SendSaveEmblemResult(this, ERR_GUILDEMBLEM_INVALID_TABARD_COLORS);
+ return;
+ }
+
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetEmblem(this, emblemInfo);
else
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index 9e282582b7d..e6aecff9137 100644
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -295,7 +295,7 @@ void WorldSession::HandleDestroyItemOpcode(WorldPackets::Item::DestroyItem& dest
return;
}
- if (item->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_INDESTRUCTIBLE)
+ if (item->GetTemplate()->GetFlags() & ITEM_FLAG_INDESTRUCTIBLE)
{
_player->SendEquipError(EQUIP_ERR_DROP_BOUND_ITEM, NULL, NULL);
return;
@@ -388,7 +388,7 @@ void WorldSession::HandleSellItemOpcode(WorldPackets::Item::SellItem& packet)
// prevent selling item for sellprice when the item is still refundable
// this probably happens when right clicking a refundable item, the client sends both
// CMSG_SELL_ITEM and CMSG_REFUND_ITEM (unverified)
- if (pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE))
+ if (pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE))
return; // Therefore, no feedback to client
// special case at auto sell (sell all)
@@ -494,38 +494,6 @@ void WorldSession::HandleBuybackItem(WorldPackets::Item::BuyBackItem& packet)
_player->SendBuyError(BUY_ERR_CANT_FIND_ITEM, creature, 0, 0);
}
-void WorldSession::HandleBuyItemInSlotOpcode(WorldPacket& recvData)
-{
- ObjectGuid vendorguid, bagguid;
- uint32 item, slot, count;
- uint8 bagslot;
-
- recvData >> vendorguid >> item >> slot >> bagguid >> bagslot >> count;
-
- // client expects count starting at 1, and we send vendorslot+1 to client already
- if (slot > 0)
- --slot;
- else
- return; // cheating
-
- uint8 bag = NULL_BAG; // init for case invalid bagGUID
- Item* bagItem = NULL;
- // find bag slot by bag guid
- if (bagguid == _player->GetGUID())
- bag = INVENTORY_SLOT_BAG_0;
- else
- bagItem = _player->GetItemByGuid(bagguid);
-
- if (bagItem && bagItem->IsBag())
- bag = bagItem->GetSlot();
-
- // bag not found, cheating?
- if (bag == NULL_BAG)
- return;
-
- GetPlayer()->BuyItemFromVendorSlot(vendorguid, slot, item, count, bag, bagslot);
-}
-
void WorldSession::HandleBuyItemOpcode(WorldPackets::Item::BuyItem& packet)
{
// client expects count starting at 1, and we send vendorslot+1 to client already
@@ -623,8 +591,8 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid)
continue;
// Only display items in vendor lists for the team the player is on
- if ((itemTemplate->GetFlags2() & ITEM_FLAGS_EXTRA_HORDE_ONLY && _player->GetTeam() == ALLIANCE) ||
- (itemTemplate->GetFlags2() & ITEM_FLAGS_EXTRA_ALLIANCE_ONLY && _player->GetTeam() == HORDE))
+ if ((itemTemplate->GetFlags2() & ITEM_FLAG2_HORDE_ONLY && _player->GetTeam() == ALLIANCE) ||
+ (itemTemplate->GetFlags2() & ITEM_FLAG2_ALLIANCE_ONLY && _player->GetTeam() == HORDE))
continue;
// Items sold out are not displayed in list
@@ -748,13 +716,12 @@ void WorldSession::SendEnchantmentLog(ObjectGuid target, ObjectGuid caster, uint
void WorldSession::SendItemEnchantTimeUpdate(ObjectGuid Playerguid, ObjectGuid Itemguid, uint32 slot, uint32 Duration)
{
- // last check 2.0.10
- WorldPacket data(SMSG_ITEM_ENCHANT_TIME_UPDATE, (8+4+4+8));
- data << Itemguid;
- data << uint32(slot);
- data << uint32(Duration);
- data << Playerguid;
- SendPacket(&data);
+ WorldPackets::Item::ItemEnchantTimeUpdate data;
+ data.ItemGuid = Itemguid;
+ data.DurationLeft = Duration;
+ data.Slot = slot;
+ data.OwnerGuid = Playerguid;
+ SendPacket(data.Write());
}
void WorldSession::HandleWrapItem(WorldPackets::Item::WrapItem& packet)
@@ -782,7 +749,7 @@ void WorldSession::HandleWrapItem(WorldPackets::Item::WrapItem& packet)
return;
}
- if (!(gift->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_WRAPPER)) // cheating: non-wrapper wrapper
+ if (!(gift->GetTemplate()->GetFlags() & ITEM_FLAG_WRAPPER)) // cheating: non-wrapper wrapper
{
_player->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, gift, NULL);
return;
@@ -872,7 +839,7 @@ void WorldSession::HandleWrapItem(WorldPackets::Item::WrapItem& packet)
}
item->SetGuidValue(ITEM_FIELD_GIFTCREATOR, _player->GetGUID());
- item->SetUInt32Value(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED);
+ item->SetUInt32Value(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED);
item->SetState(ITEM_CHANGED, _player);
if (item->GetState() == ITEM_NEW) // save new item, to have alway for `character_gifts` record in `item_instance`
@@ -979,7 +946,7 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recvData)
ItemTemplate const* iGemProto = Gems[i]->GetTemplate();
// unique item (for new and already placed bit removed enchantments
- if (iGemProto->GetFlags() & ITEM_PROTO_FLAG_UNIQUE_EQUIPPED)
+ if (iGemProto->GetFlags() & ITEM_FLAG_UNIQUE_EQUIPPED)
{
for (int j = 0; j < MAX_GEM_SOCKETS; ++j)
{
@@ -1094,17 +1061,13 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recvData)
itemTarget->SendUpdateSockets();
}
-void WorldSession::HandleCancelTempEnchantmentOpcode(WorldPacket& recvData)
+void WorldSession::HandleCancelTempEnchantmentOpcode(WorldPackets::Item::CancelTempEnchantment& cancelTempEnchantment)
{
- uint32 slot;
-
- recvData >> slot;
-
// apply only to equipped item
- if (!Player::IsEquipmentPos(INVENTORY_SLOT_BAG_0, slot))
+ if (!Player::IsEquipmentPos(INVENTORY_SLOT_BAG_0, cancelTempEnchantment.Slot))
return;
- Item* item = GetPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, slot);
+ Item* item = GetPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, cancelTempEnchantment.Slot);
if (!item)
return;
@@ -1149,34 +1112,6 @@ void WorldSession::HandleItemRefund(WorldPacket &recvData)
GetPlayer()->RefundItem(item);
}
-/**
- * Handles the packet sent by the client when requesting information about item text.
- *
- * This function is called when player clicks on item which has some flag set
- */
-void WorldSession::HandleItemTextQuery(WorldPacket& recvData )
-{
- ObjectGuid itemGuid;
- recvData >> itemGuid;
-
- TC_LOG_DEBUG("network", "CMSG_ITEM_TEXT_QUERY %s", itemGuid.ToString().c_str());
-
- WorldPacket data(SMSG_QUERY_ITEM_TEXT_RESPONSE, 14); // guess size
-
- if (Item* item = _player->GetItemByGuid(itemGuid))
- {
- data << uint8(0); // has text
- data << itemGuid; // item guid
- data << item->GetText();
- }
- else
- {
- data << uint8(1); // no text
- }
-
- SendPacket(&data);
-}
-
void WorldSession::HandleTransmogrifyItems(WorldPacket& recvData)
{
Player* player = GetPlayer();
diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp
index c4d3358a333..4a3866cbb1b 100644
--- a/src/server/game/Handlers/LFGHandler.cpp
+++ b/src/server/game/Handlers/LFGHandler.cpp
@@ -86,7 +86,7 @@ void WorldSession::HandleLfgJoinOpcode(WorldPacket& recvData)
{
if (!sLFGMgr->isOptionEnabled(lfg::LFG_OPTION_ENABLE_DUNGEON_FINDER | lfg::LFG_OPTION_ENABLE_RAID_BROWSER) ||
(GetPlayer()->GetGroup() && GetPlayer()->GetGroup()->GetLeaderGUID() != GetPlayer()->GetGUID() &&
- (GetPlayer()->GetGroup()->GetMembersCount() == MAXGROUPSIZE || !GetPlayer()->GetGroup()->isLFGGroup())))
+ (GetPlayer()->GetGroup()->GetMembersCount() == MAX_GROUP_SIZE || !GetPlayer()->GetGroup()->isLFGGroup())))
{
recvData.rfinish();
return;
diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp
index 4f7a42c3770..ddd084cbd9d 100644
--- a/src/server/game/Handlers/LootHandler.cpp
+++ b/src/server/game/Handlers/LootHandler.cpp
@@ -325,7 +325,7 @@ void WorldSession::DoLootRelease(ObjectGuid lguid)
ItemTemplate const* proto = pItem->GetTemplate();
// destroy only 5 items from stack in case prospecting and milling
- if (proto->GetFlags() & (ITEM_PROTO_FLAG_PROSPECTABLE | ITEM_PROTO_FLAG_MILLABLE))
+ if (proto->GetFlags() & (ITEM_FLAG_PROSPECTABLE | ITEM_FLAG_MILLABLE))
{
pItem->m_lootGenerated = false;
pItem->loot.clear();
@@ -341,7 +341,7 @@ void WorldSession::DoLootRelease(ObjectGuid lguid)
else
{
// Only delete item if no loot or money (unlooted loot is saved to db) or if it isn't an openable item
- if (pItem->loot.isLooted() || !(proto->GetFlags() & ITEM_PROTO_FLAG_OPENABLE))
+ if (pItem->loot.isLooted() || !(proto->GetFlags() & ITEM_FLAG_OPENABLE))
player->DestroyItem(pItem->GetBagSlot(), pItem->GetSlot(), true);
}
return; // item can be looted only single player
diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp
index b8ac779887b..dd55c6f2f06 100644
--- a/src/server/game/Handlers/MailHandler.cpp
+++ b/src/server/game/Handlers/MailHandler.cpp
@@ -196,7 +196,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& packet)
if (Item* item = player->GetItemByGuid(att.ItemGUID))
{
ItemTemplate const* itemProto = item->GetTemplate();
- if (!itemProto || !(itemProto->GetFlags() & ITEM_PROTO_FLAG_BIND_TO_ACCOUNT))
+ if (!itemProto || !(itemProto->GetFlags() & ITEM_FLAG_BIND_TO_ACCOUNT))
{
accountBound = false;
break;
@@ -250,13 +250,13 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& packet)
}
}
- if (item->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_CONJURED || item->GetUInt32Value(ITEM_FIELD_DURATION))
+ if (item->GetTemplate()->GetFlags() & ITEM_FLAG_CONJURED || item->GetUInt32Value(ITEM_FIELD_DURATION))
{
player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_MAIL_BOUND_ITEM);
return;
}
- if (packet.Info.Cod && item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED))
+ if (packet.Info.Cod && item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED))
{
player->SendMailResult(0, MAIL_SEND, MAIL_ERR_CANT_SEND_WRAPPED_COD);
return;
@@ -636,7 +636,7 @@ void WorldSession::HandleMailCreateTextItem(WorldPackets::Mail::MailCreateTextIt
if (m->messageType == MAIL_NORMAL)
bodyItem->SetGuidValue(ITEM_FIELD_CREATOR, ObjectGuid::Create<HighGuid::Player>(m->sender));
- bodyItem->SetFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_MAIL_TEXT_MASK);
+ bodyItem->SetFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_MAIL_TEXT_MASK);
ItemPosCountVec dest;
uint8 msg = _player->CanStoreItem(NULL_BAG, NULL_SLOT, dest, bodyItem, false);
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index b01f0c6c147..0aa941de4e2 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -209,7 +209,7 @@ void WorldSession::HandleWhoOpcode(WorldPackets::Who::WhoRequestPkt& whoRequest)
{
std::string aName;
if (AreaTableEntry const* areaEntry = GetAreaEntryByAreaID(target->GetZoneId()))
- aName = areaEntry->ZoneName;
+ aName = areaEntry->AreaName_lang;
bool show = false;
for (size_t i = 0; i < wWords.size(); ++i)
@@ -848,12 +848,9 @@ void WorldSession::HandleRealmSplitOpcode(WorldPacket& recvData)
//TC_LOG_DEBUG("response sent %u", unk);
}
-void WorldSession::HandleFarSightOpcode(WorldPacket& recvData)
+void WorldSession::HandleFarSightOpcode(WorldPackets::Misc::FarSight& packet)
{
- bool apply;
- recvData >> apply;
-
- if (apply)
+ if (packet.Enable)
{
TC_LOG_DEBUG("network", "Added FarSight %s to %s", _player->GetGuidValue(PLAYER_FARSIGHT).ToString().c_str(), _player->GetGUID().ToString().c_str());
if (WorldObject* target = _player->GetViewpoint())
@@ -907,7 +904,7 @@ void WorldSession::HandleTimeSyncResponse(WorldPackets::Misc::TimeSyncResponse&
_player->m_timeSyncQueue.pop();
}
-void WorldSession::HandleResetInstancesOpcode(WorldPacket& /*recvData*/)
+void WorldSession::HandleResetInstancesOpcode(WorldPackets::Instance::ResetInstances& /*packet*/)
{
if (Group* group = _player->GetGroup())
{
@@ -1216,129 +1213,29 @@ void WorldSession::HandleObjectUpdateRescuedOpcode(WorldPackets::Misc::ObjectUpd
_player->m_clientGUIDs.insert(objectUpdateRescued.ObjectGUID);
}
-void WorldSession::HandleSaveCUFProfiles(WorldPacket& recvPacket)
+void WorldSession::HandleSaveCUFProfiles(WorldPackets::Misc::SaveCUFProfiles& packet)
{
- uint8 count = (uint8)recvPacket.ReadBits(20);
-
- if (count > MAX_CUF_PROFILES)
+ if (packet.CUFProfiles.size() > MAX_CUF_PROFILES)
{
TC_LOG_ERROR("entities.player", "HandleSaveCUFProfiles - %s tried to save more than %i CUF profiles. Hacking attempt?", GetPlayerName().c_str(), MAX_CUF_PROFILES);
- recvPacket.rfinish();
return;
}
- CUFProfile* profiles[MAX_CUF_PROFILES];
- uint8 strlens[MAX_CUF_PROFILES];
-
- for (uint8 i = 0; i < count; ++i)
- {
- profiles[i] = new CUFProfile;
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_SPEC_2 , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_10_PLAYERS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_UNK_157 , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_DISPLAY_HEAL_PREDICTION , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_SPEC_1 , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_PVP , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_DISPLAY_POWER_BAR , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_15_PLAYERS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_40_PLAYERS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_DISPLAY_PETS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_5_PLAYERS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_DISPLAY_ONLY_DISPELLABLE_DEBUFFS, recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_2_PLAYERS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_UNK_156 , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_DISPLAY_NON_BOSS_DEBUFFS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_DISPLAY_MAIN_TANK_AND_ASSIST , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_DISPLAY_AGGRO_HIGHLIGHT , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_3_PLAYERS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_DISPLAY_BORDER , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_USE_CLASS_COLORS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_UNK_145 , recvPacket.ReadBit());
- strlens[i] = (uint8)recvPacket.ReadBits(8);
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_PVE , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_DISPLAY_HORIZONTAL_GROUPS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_AUTO_ACTIVATE_25_PLAYERS , recvPacket.ReadBit());
- profiles[i]->BoolOptions.set(CUF_KEEP_GROUPS_TOGETHER , recvPacket.ReadBit());
- }
-
- for (uint8 i = 0; i < count; ++i)
- {
- recvPacket >> profiles[i]->Unk146;
- profiles[i]->ProfileName = recvPacket.ReadString(strlens[i]);
- recvPacket >> profiles[i]->Unk152;
- recvPacket >> profiles[i]->FrameHeight;
- recvPacket >> profiles[i]->FrameWidth;
- recvPacket >> profiles[i]->Unk150;
- recvPacket >> profiles[i]->HealthText;
- recvPacket >> profiles[i]->Unk147;
- recvPacket >> profiles[i]->SortBy;
- recvPacket >> profiles[i]->Unk154;
- recvPacket >> profiles[i]->Unk148;
-
- GetPlayer()->SaveCUFProfile(i, profiles[i]);
- }
+ for (uint8 i = 0; i < packet.CUFProfiles.size(); ++i)
+ GetPlayer()->SaveCUFProfile(i, std::move(packet.CUFProfiles[i]));
- for (uint8 i = count; i < MAX_CUF_PROFILES; ++i)
- GetPlayer()->SaveCUFProfile(i, NULL);
+ for (uint8 i = packet.CUFProfiles.size(); i < MAX_CUF_PROFILES; ++i)
+ GetPlayer()->SaveCUFProfile(i, nullptr);
}
void WorldSession::SendLoadCUFProfiles()
{
Player* player = GetPlayer();
- uint8 count = player->GetCUFProfilesCount();
-
- ByteBuffer byteBuffer(25 * count);
- WorldPacket data(SMSG_LOAD_CUF_PROFILES, 5 * count + 25 * count);
-
- data.WriteBits(count, 20);
- for (uint8 i = 0; i < MAX_CUF_PROFILES; ++i)
- {
- CUFProfile* profile = player->GetCUFProfile(i);
- if (!profile)
- continue;
-
- data.WriteBit(profile->BoolOptions[CUF_UNK_157]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_10_PLAYERS]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_5_PLAYERS]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_25_PLAYERS]);
- data.WriteBit(profile->BoolOptions[CUF_DISPLAY_HEAL_PREDICTION]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_PVE]);
- data.WriteBit(profile->BoolOptions[CUF_DISPLAY_HORIZONTAL_GROUPS]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_40_PLAYERS]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_3_PLAYERS]);
- data.WriteBit(profile->BoolOptions[CUF_DISPLAY_AGGRO_HIGHLIGHT]);
- data.WriteBit(profile->BoolOptions[CUF_DISPLAY_BORDER]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_2_PLAYERS]);
- data.WriteBit(profile->BoolOptions[CUF_DISPLAY_NON_BOSS_DEBUFFS]);
- data.WriteBit(profile->BoolOptions[CUF_DISPLAY_MAIN_TANK_AND_ASSIST]);
- data.WriteBit(profile->BoolOptions[CUF_UNK_156]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_SPEC_2]);
- data.WriteBit(profile->BoolOptions[CUF_USE_CLASS_COLORS]);
- data.WriteBit(profile->BoolOptions[CUF_DISPLAY_POWER_BAR]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_SPEC_1]);
- data.WriteBits(profile->ProfileName.size(), 8);
- data.WriteBit(profile->BoolOptions[CUF_DISPLAY_ONLY_DISPELLABLE_DEBUFFS]);
- data.WriteBit(profile->BoolOptions[CUF_KEEP_GROUPS_TOGETHER]);
- data.WriteBit(profile->BoolOptions[CUF_UNK_145]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_15_PLAYERS]);
- data.WriteBit(profile->BoolOptions[CUF_DISPLAY_PETS]);
- data.WriteBit(profile->BoolOptions[CUF_AUTO_ACTIVATE_PVP]);
-
- byteBuffer << uint16(profile->Unk154);
- byteBuffer << uint16(profile->FrameHeight);
- byteBuffer << uint16(profile->Unk152);
- byteBuffer << uint8(profile->Unk147);
- byteBuffer << uint16(profile->Unk150);
- byteBuffer << uint8(profile->Unk146);
- byteBuffer << uint8(profile->HealthText);
- byteBuffer << uint8(profile->SortBy);
- byteBuffer << uint16(profile->FrameWidth);
- byteBuffer << uint8(profile->Unk148);
- byteBuffer.WriteString(profile->ProfileName);
- }
+ WorldPackets::Misc::LoadCUFProfiles loadCUFProfiles;
- data.FlushBits();
- data.append(byteBuffer);
- SendPacket(&data);
+ for (uint8 i = 0; i < MAX_CUF_PROFILES; i++)
+ if (CUFProfile* cufProfile = player->GetCUFProfile(i))
+ loadCUFProfiles.CUFProfiles.push_back(cufProfile);
+ SendPacket(loadCUFProfiles.Write());
}
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 3835a0642f9..240825faade 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -23,6 +23,7 @@
#include "Log.h"
#include "Corpse.h"
#include "Player.h"
+#include "Garrison.h"
#include "SpellAuras.h"
#include "MapManager.h"
#include "Transport.h"
@@ -46,6 +47,7 @@ void WorldSession::HandleMoveWorldportAckOpcode()
if (!GetPlayer()->IsBeingTeleportedFar())
return;
+ bool seamlessTeleport = GetPlayer()->IsBeingTeleportedSeamlessly();
GetPlayer()->SetSemaphoreTeleportFar(false);
// get the teleport destination
@@ -88,13 +90,16 @@ void WorldSession::HandleMoveWorldportAckOpcode()
float z = loc.GetPositionZ();
if (GetPlayer()->HasUnitMovementFlag(MOVEMENTFLAG_HOVER))
z += GetPlayer()->GetFloatValue(UNIT_FIELD_HOVERHEIGHT);
+
GetPlayer()->Relocate(loc.GetPositionX(), loc.GetPositionY(), z, loc.GetOrientation());
GetPlayer()->ResetMap();
GetPlayer()->SetMap(newMap);
- GetPlayer()->SendInitialPacketsBeforeAddToMap();
- if (!GetPlayer()->GetMap()->AddPlayerToMap(GetPlayer()))
+ if (!seamlessTeleport)
+ GetPlayer()->SendInitialPacketsBeforeAddToMap();
+
+ if (!GetPlayer()->GetMap()->AddPlayerToMap(GetPlayer(), !seamlessTeleport))
{
TC_LOG_ERROR("network", "WORLD: failed to teleport player %s (%s) to map %d (%s) because of unknown reason!",
GetPlayer()->GetName().c_str(), GetPlayer()->GetGUID().ToString().c_str(), loc.GetMapId(), newMap ? newMap->GetMapName() : "Unknown");
@@ -124,16 +129,26 @@ void WorldSession::HandleMoveWorldportAckOpcode()
}
}
- GetPlayer()->SendInitialPacketsAfterAddToMap();
+ if (!seamlessTeleport)
+ GetPlayer()->SendInitialPacketsAfterAddToMap();
+ else
+ {
+ GetPlayer()->UpdateVisibilityForPlayer();
+ if (Garrison* garrison = GetPlayer()->GetGarrison())
+ garrison->SendRemoteInfo();
+ }
// flight fast teleport case
if (GetPlayer()->GetMotionMaster()->GetCurrentMovementGeneratorType() == FLIGHT_MOTION_TYPE)
{
if (!_player->InBattleground())
{
- // short preparations to continue flight
- FlightPathMovementGenerator* flight = (FlightPathMovementGenerator*)(GetPlayer()->GetMotionMaster()->top());
- flight->Initialize(GetPlayer());
+ if (!seamlessTeleport)
+ {
+ // short preparations to continue flight
+ FlightPathMovementGenerator* flight = (FlightPathMovementGenerator*)(GetPlayer()->GetMotionMaster()->top());
+ flight->Initialize(GetPlayer());
+ }
return;
}
diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp
index a5dc60b8494..2418bb84cac 100644
--- a/src/server/game/Handlers/NPCHandler.cpp
+++ b/src/server/game/Handlers/NPCHandler.cpp
@@ -130,7 +130,7 @@ void WorldSession::SendTrainerList(ObjectGuid guid, const std::string& strTitle)
bool valid = true;
bool primary_prof_first_rank = false;
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ for (uint8 i = 0; i < MAX_TRAINERSPELL_ABILITY_REQS; ++i)
{
if (!tSpell->ReqAbility[i])
continue;
@@ -173,7 +173,7 @@ void WorldSession::SendTrainerList(ObjectGuid guid, const std::string& strTitle)
break;
SpellsRequiringSpellMapBounds spellsRequired = sSpellMgr->GetSpellsRequiredForSpellBounds(tSpell->ReqAbility[i]);
- for (SpellsRequiringSpellMap::const_iterator itr2 = spellsRequired.first; itr2 != spellsRequired.second && maxReq < 3; ++itr2)
+ for (SpellsRequiringSpellMap::const_iterator itr2 = spellsRequired.first; itr2 != spellsRequired.second && maxReq < MAX_TRAINERSPELL_ABILITY_REQS; ++itr2)
{
spell.ReqAbility[maxReq] = itr2->second;
++maxReq;
@@ -189,19 +189,14 @@ void WorldSession::SendTrainerList(ObjectGuid guid, const std::string& strTitle)
SendPacket(packet.Write());
}
-void WorldSession::HandleTrainerBuySpellOpcode(WorldPacket& recvData)
+void WorldSession::HandleTrainerBuySpellOpcode(WorldPackets::NPC::TrainerBuySpell& packet)
{
- ObjectGuid guid;
- uint32 spellId;
- uint32 trainerId;
-
- recvData >> guid >> trainerId >> spellId;
- TC_LOG_DEBUG("network", "WORLD: Received CMSG_TRAINER_BUY_SPELL %s, learn spell id is: %u", guid.ToString().c_str(), spellId);
+ TC_LOG_DEBUG("network", "WORLD: Received CMSG_TRAINER_BUY_SPELL %s, learn spell id is: %i", packet.TrainerGUID.ToString().c_str(), packet.SpellID);
- Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_TRAINER);
+ Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(packet.TrainerGUID, UNIT_NPC_FLAG_TRAINER);
if (!unit)
{
- TC_LOG_DEBUG("network", "WORLD: HandleTrainerBuySpellOpcode - %s not found or you can not interact with him.", guid.ToString().c_str());
+ TC_LOG_DEBUG("network", "WORLD: HandleTrainerBuySpellOpcode - %s not found or you can not interact with him.", packet.TrainerGUID.ToString().c_str());
return;
}
@@ -213,32 +208,32 @@ void WorldSession::HandleTrainerBuySpellOpcode(WorldPacket& recvData)
TrainerSpellData const* trainer_spells = unit->GetTrainerSpells();
if (!trainer_spells)
{
- SendTrainerBuyFailed(guid, spellId, 0);
+ SendTrainerBuyFailed(packet.TrainerGUID, packet.SpellID, 0);
return;
}
// not found, cheat?
- TrainerSpell const* trainer_spell = trainer_spells->Find(spellId);
- if (!trainer_spell)
+ TrainerSpell const* trainerSpell = trainer_spells->Find(packet.SpellID);
+ if (!trainerSpell)
{
- SendTrainerBuyFailed(guid, spellId, 0);
+ SendTrainerBuyFailed(packet.TrainerGUID, packet.SpellID, 0);
return;
}
// can't be learn, cheat? Or double learn with lags...
- if (_player->GetTrainerSpellState(trainer_spell) != TRAINER_SPELL_GREEN)
+ if (_player->GetTrainerSpellState(trainerSpell) != TRAINER_SPELL_GREEN)
{
- SendTrainerBuyFailed(guid, spellId, 0);
+ SendTrainerBuyFailed(packet.TrainerGUID, packet.SpellID, 0);
return;
}
// apply reputation discount
- uint32 nSpellCost = uint32(floor(trainer_spell->MoneyCost * _player->GetReputationPriceDiscount(unit)));
+ uint32 nSpellCost = uint32(floor(trainerSpell->MoneyCost * _player->GetReputationPriceDiscount(unit)));
// check money requirement
if (!_player->HasEnoughMoney(uint64(nSpellCost)))
{
- SendTrainerBuyFailed(guid, spellId, 1);
+ SendTrainerBuyFailed(packet.TrainerGUID, packet.SpellID, 1);
return;
}
@@ -248,19 +243,19 @@ void WorldSession::HandleTrainerBuySpellOpcode(WorldPacket& recvData)
_player->SendPlaySpellVisualKit(362, 1); // 113 EmoteSalute
// learn explicitly or cast explicitly
- if (trainer_spell->IsCastable())
- _player->CastSpell(_player, trainer_spell->SpellID, true);
+ if (trainerSpell->IsCastable())
+ _player->CastSpell(_player, trainerSpell->SpellID, true);
else
- _player->LearnSpell(spellId, false);
+ _player->LearnSpell(packet.SpellID, false);
}
-void WorldSession::SendTrainerBuyFailed(ObjectGuid guid, uint32 spellId, uint32 reason)
+void WorldSession::SendTrainerBuyFailed(ObjectGuid trainerGUID, uint32 spellID, int32 trainerFailedReason)
{
- WorldPacket data(SMSG_TRAINER_BUY_FAILED, 16);
- data << guid;
- data << uint32(spellId); // should be same as in packet from client
- data << uint32(reason); // 1 == "Not enough money for trainer service." 0 == "Trainer service %d unavailable."
- SendPacket(&data);
+ WorldPackets::NPC::TrainerBuyFailed trainerBuyFailed;
+ trainerBuyFailed.TrainerGUID = trainerGUID;
+ trainerBuyFailed.SpellID = spellID; // should be same as in packet from client
+ trainerBuyFailed.TrainerFailedReason = trainerFailedReason; // 1 == "Not enough money for trainer service." 0 == "Trainer service %d unavailable."
+ SendPacket(trainerBuyFailed.Write());
}
void WorldSession::HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet)
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp
index 7f1782ea1f0..429d3565052 100644
--- a/src/server/game/Handlers/PetHandler.cpp
+++ b/src/server/game/Handlers/PetHandler.cpp
@@ -616,8 +616,7 @@ void WorldSession::HandlePetRename(WorldPacket& recvData)
pet->SetName(name);
- if (pet->GetOwner()->GetGroup())
- pet->GetOwner()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_NAME);
+ pet->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_NAME);
pet->RemoveByteFlag(UNIT_FIELD_BYTES_2, 2, UNIT_CAN_BE_RENAMED);
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp
index e92fdab9409..eec80888559 100644
--- a/src/server/game/Handlers/QueryHandler.cpp
+++ b/src/server/game/Handlers/QueryHandler.cpp
@@ -414,3 +414,22 @@ void WorldSession::HandleDBQueryBulk(WorldPackets::Query::DBQueryBulk& packet)
SendPacket(response.Write());
}
}
+
+/**
+* Handles the packet sent by the client when requesting information about item text.
+*
+* This function is called when player clicks on item which has some flag set
+*/
+void WorldSession::HandleItemTextQuery(WorldPackets::Query::ItemTextQuery& itemTextQuery)
+{
+ WorldPackets::Query::QueryItemTextResponse queryItemTextResponse;
+ queryItemTextResponse.Id = itemTextQuery.Id;
+
+ if (Item* item = _player->GetItemByGuid(itemTextQuery.Id))
+ {
+ queryItemTextResponse.Valid = true;
+ queryItemTextResponse.Item.Text = item->GetText();
+ }
+
+ SendPacket(queryItemTextResponse.Write());
+}
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index 36296355577..c1d61ca49f4 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -659,7 +659,7 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::Ques
Creature* questgiver = ObjectAccessor::GetCreatureOrPetOrVehicle(*GetPlayer(), *itr);
if (!questgiver || questgiver->IsHostileTo(_player))
continue;
- if (!questgiver->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER))
+ if (!questgiver->HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER))
continue;
response.QuestGiver.emplace_back(questgiver->GetGUID(), _player->GetQuestDialogStatus(questgiver));
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index 2cfa14164fe..2d3090825da 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -81,14 +81,14 @@ void WorldSession::HandleUseItemOpcode(WorldPackets::Spells::UseItem& packet)
}
// only allow conjured consumable, bandage, poisons (all should have the 2^21 item flag set in DB)
- if (proto->GetClass() == ITEM_CLASS_CONSUMABLE && !(proto->GetFlags() & ITEM_PROTO_FLAG_USEABLE_IN_ARENA) && user->InArena())
+ if (proto->GetClass() == ITEM_CLASS_CONSUMABLE && !(proto->GetFlags() & ITEM_FLAG_USEABLE_IN_ARENA) && user->InArena())
{
user->SendEquipError(EQUIP_ERR_NOT_DURING_ARENA_MATCH, item, NULL);
return;
}
// don't allow items banned in arena
- if (proto->GetFlags() & ITEM_PROTO_FLAG_NOT_USEABLE_IN_ARENA && user->InArena())
+ if (proto->GetFlags() & ITEM_FLAG_NOT_USEABLE_IN_ARENA && user->InArena())
{
user->SendEquipError(EQUIP_ERR_NOT_DURING_ARENA_MATCH, item, NULL);
return;
@@ -153,7 +153,7 @@ void WorldSession::HandleOpenItemOpcode(WorldPackets::Spells::OpenItem& packet)
}
// Verify that the bag is an actual bag or wrapped item that can be used "normally"
- if (!(proto->GetFlags() & ITEM_PROTO_FLAG_OPENABLE) && !item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED))
+ if (!(proto->GetFlags() & ITEM_FLAG_OPENABLE) && !item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED))
{
player->SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, item, NULL);
TC_LOG_ERROR("network", "Possible hacking attempt: Player %s [%s] tried to open item [%s, entry: %u] which is not openable!",
@@ -182,7 +182,7 @@ void WorldSession::HandleOpenItemOpcode(WorldPackets::Spells::OpenItem& packet)
}
}
- if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED))// wrapped?
+ if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED))// wrapped?
{
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GIFT_BY_ITEM);
@@ -281,8 +281,8 @@ void WorldSession::HandleCastSpellOpcode(WorldPackets::Spells::CastSpell& cast)
caster = _player;
}
- // check known spell
- if (caster->GetTypeId() == TYPEID_PLAYER && !caster->ToPlayer()->HasActiveSpell(spellInfo->Id))
+ // check known spell or raid marker spell (which not requires player to know it)
+ if (caster->GetTypeId() == TYPEID_PLAYER && !caster->ToPlayer()->HasActiveSpell(spellInfo->Id) && !spellInfo->HasEffect(SPELL_EFFECT_CHANGE_RAID_MARKER))
return;
// Check possible spell cast overrides
diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp
index 159876fdebd..ddfc0cef55c 100644
--- a/src/server/game/Handlers/TradeHandler.cpp
+++ b/src/server/game/Handlers/TradeHandler.cpp
@@ -67,7 +67,7 @@ void WorldSession::SendUpdateTrade(bool trader_data /*= true*/)
tradeItem.EntryID = item->GetEntry();
tradeItem.StackCount = item->GetCount();
tradeItem.GiftCreator = item->GetGuidValue(ITEM_FIELD_GIFTCREATOR);
- if (!item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED))
+ if (!item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED))
{
tradeItem.Unwrapped = boost::in_place();
@@ -76,7 +76,7 @@ void WorldSession::SendUpdateTrade(bool trader_data /*= true*/)
tradeItem.Unwrapped->OnUseEnchantmentID = item->GetEnchantmentId(USE_ENCHANTMENT_SLOT);
tradeItem.Unwrapped->Creator = item->GetGuidValue(ITEM_FIELD_CREATOR);
tradeItem.Unwrapped->Charges = item->GetSpellCharges();
- tradeItem.Unwrapped->Lock = item->GetTemplate()->GetLockID() && !item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_UNLOCKED);
+ tradeItem.Unwrapped->Lock = item->GetTemplate()->GetLockID() && !item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_UNLOCKED);
tradeItem.Unwrapped->MaxDurability = item->GetUInt32Value(ITEM_FIELD_MAXDURABILITY);
tradeItem.Unwrapped->Durability = item->GetUInt32Value(ITEM_FIELD_DURABILITY);
@@ -124,7 +124,7 @@ void WorldSession::moveItems(Item* myItems[], Item* hisItems[])
}
// adjust time (depends on /played)
- if (myItems[i]->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE))
+ if (myItems[i]->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_BOP_TRADEABLE))
myItems[i]->SetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME, trader->GetTotalPlayedTime()-(_player->GetTotalPlayedTime()-myItems[i]->GetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME)));
// store
trader->MoveItemToInventory(traderDst, myItems[i], true, true);
@@ -142,7 +142,7 @@ void WorldSession::moveItems(Item* myItems[], Item* hisItems[])
}
// adjust time (depends on /played)
- if (hisItems[i]->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_BOP_TRADEABLE))
+ if (hisItems[i]->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_BOP_TRADEABLE))
hisItems[i]->SetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME, _player->GetTotalPlayedTime()-(trader->GetTotalPlayedTime()-hisItems[i]->GetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME)));
// store
_player->MoveItemToInventory(playerDst, hisItems[i], true, true);
diff --git a/src/server/game/Handlers/VoidStorageHandler.cpp b/src/server/game/Handlers/VoidStorageHandler.cpp
index dcca2f81711..46e2f1270c1 100644
--- a/src/server/game/Handlers/VoidStorageHandler.cpp
+++ b/src/server/game/Handlers/VoidStorageHandler.cpp
@@ -158,7 +158,7 @@ void WorldSession::HandleVoidStorageTransfer(WorldPackets::VoidStorage::VoidStor
Item* item = _player->GetItemByGuid(voidStorageTransfer.Deposits[i]);
if (!item)
{
- TC_LOG_DEBUG("network", "WORLD: HandleVoidStorageTransfer - %s %s wants to deposit an invalid item (%s).", _player->GetGUID().ToString().c_str(), _player->GetName().c_str(), item->GetGUID().ToString().c_str());
+ TC_LOG_DEBUG("network", "WORLD: HandleVoidStorageTransfer - %s %s wants to deposit an invalid item (%s).", _player->GetGUID().ToString().c_str(), _player->GetName().c_str(), voidStorageTransfer.Deposits[i].ToString().c_str());
continue;
}
diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp
index efb3810d00c..189b620b805 100644
--- a/src/server/game/Loot/LootMgr.cpp
+++ b/src/server/game/Loot/LootMgr.cpp
@@ -155,12 +155,6 @@ uint32 LootStore::LoadLootTable()
uint8 mincount = fields[7].GetUInt8();
uint8 maxcount = fields[8].GetUInt8();
- if (maxcount > std::numeric_limits<uint8>::max())
- {
- TC_LOG_ERROR("sql.sql", "Table '%s' Entry %d Item %d: MaxCount value (%u) to large. must be less %u - skipped", GetName(), entry, item, maxcount, std::numeric_limits<uint8>::max());
- continue; // error already printed to log/console.
- }
-
if (groupid >= 1 << 7) // it stored in 7 bit field
{
TC_LOG_ERROR("sql.sql", "Table '%s' Entry %d Item %d: GroupId (%u) must be less %u - skipped", GetName(), entry, item, groupid, 1 << 7);
@@ -365,7 +359,7 @@ LootItem::LootItem(LootStoreItem const& li)
conditions = li.conditions;
ItemTemplate const* proto = sObjectMgr->GetItemTemplate(itemid);
- freeforall = proto && (proto->GetFlags() & ITEM_PROTO_FLAG_PARTY_LOOT);
+ freeforall = proto && (proto->GetFlags() & ITEM_FLAG_PARTY_LOOT);
follow_loot_rules = proto && (proto->FlagsCu & ITEM_FLAGS_CU_FOLLOW_LOOT_RULES);
needs_quest = li.needs_quest;
@@ -392,14 +386,14 @@ bool LootItem::AllowedForPlayer(Player const* player) const
return false;
// not show loot for players without profession or those who already know the recipe
- if ((pProto->GetFlags() & ITEM_PROTO_FLAG_SMART_LOOT) && (!player->HasSkill(pProto->GetRequiredSkill()) || player->HasSpell(pProto->Effects[1]->SpellID)))
+ if ((pProto->GetFlags() & ITEM_FLAG_SMART_LOOT) && (!player->HasSkill(pProto->GetRequiredSkill()) || player->HasSpell(pProto->Effects[1]->SpellID)))
return false;
// not show loot for not own team
- if ((pProto->GetFlags2() & ITEM_FLAGS_EXTRA_HORDE_ONLY) && player->GetTeam() != HORDE)
+ if ((pProto->GetFlags2() & ITEM_FLAG2_HORDE_ONLY) && player->GetTeam() != HORDE)
return false;
- if ((pProto->GetFlags2() & ITEM_FLAGS_EXTRA_ALLIANCE_ONLY) && player->GetTeam() != ALLIANCE)
+ if ((pProto->GetFlags2() & ITEM_FLAG2_ALLIANCE_ONLY) && player->GetTeam() != ALLIANCE)
return false;
// check quest requirements
@@ -447,7 +441,7 @@ void Loot::AddItem(LootStoreItem const& item)
// non-conditional one-player only items are counted here,
// free for all items are counted in FillFFALoot(),
// non-ffa conditionals are counted in FillNonQuestNonFFAConditionalLoot()
- if (!item.needs_quest && item.conditions.empty() && !(proto->GetFlags() & ITEM_PROTO_FLAG_PARTY_LOOT))
+ if (!item.needs_quest && item.conditions.empty() && !(proto->GetFlags() & ITEM_FLAG_PARTY_LOOT))
++unlootedCount;
}
}
@@ -1651,7 +1645,7 @@ void LoadLootTemplates_Item()
// remove real entries and check existence loot
ItemTemplateContainer const* its = sObjectMgr->GetItemTemplateStore();
for (ItemTemplateContainer::const_iterator itr = its->begin(); itr != its->end(); ++itr)
- if (lootIdSet.find(itr->second.GetId()) != lootIdSet.end() && itr->second.GetFlags() & ITEM_PROTO_FLAG_OPENABLE)
+ if (lootIdSet.find(itr->second.GetId()) != lootIdSet.end() && itr->second.GetFlags() & ITEM_FLAG_OPENABLE)
lootIdSet.erase(itr->second.GetId());
// output error for any still listed (not referenced from appropriate table) ids
@@ -1676,7 +1670,7 @@ void LoadLootTemplates_Milling()
ItemTemplateContainer const* its = sObjectMgr->GetItemTemplateStore();
for (ItemTemplateContainer::const_iterator itr = its->begin(); itr != its->end(); ++itr)
{
- if (!(itr->second.GetFlags() & ITEM_PROTO_FLAG_MILLABLE))
+ if (!(itr->second.GetFlags() & ITEM_FLAG_MILLABLE))
continue;
if (lootIdSet.find(itr->second.GetId()) != lootIdSet.end())
@@ -1739,7 +1733,7 @@ void LoadLootTemplates_Prospecting()
ItemTemplateContainer const* its = sObjectMgr->GetItemTemplateStore();
for (ItemTemplateContainer::const_iterator itr = its->begin(); itr != its->end(); ++itr)
{
- if (!(itr->second.GetFlags() & ITEM_PROTO_FLAG_PROSPECTABLE))
+ if (!(itr->second.GetFlags() & ITEM_FLAG_PROSPECTABLE))
continue;
if (lootIdSet.find(itr->second.GetId()) != lootIdSet.end())
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index ebfdaaf3b73..26a3d38635d 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -40,7 +40,7 @@
#include "Weather.h"
u_map_magic MapMagic = { {'M','A','P','S'} };
-u_map_magic MapVersionMagic = { {'v','1','.','4'} };
+u_map_magic MapVersionMagic = { {'v','1','.','5'} };
u_map_magic MapAreaMagic = { {'A','R','E','A'} };
u_map_magic MapHeightMagic = { {'M','H','G','T'} };
u_map_magic MapLiquidMagic = { {'M','L','I','Q'} };
@@ -78,33 +78,29 @@ Map::~Map()
bool Map::ExistMap(uint32 mapid, int gx, int gy)
{
- int len = sWorld->GetDataPath().length() + strlen("maps/%03u%02u%02u.map") + 1;
- char* fileName = new char[len];
- snprintf(fileName, len, (char *)(sWorld->GetDataPath() + "maps/%03u%02u%02u.map").c_str(), mapid, gx, gy);
+ std::string fileName = Trinity::StringFormat("%smaps/%04u_%02u_%02u.map", sWorld->GetDataPath().c_str(), mapid, gx, gy);
bool ret = false;
- FILE* pf = fopen(fileName, "rb");
-
- if (!pf)
+ FILE* file = fopen(fileName.c_str(), "rb");
+ if (!file)
{
- TC_LOG_ERROR("maps", "Map file '%s' does not exist!", fileName);
+ TC_LOG_ERROR("maps", "Map file '%s' does not exist!", fileName.c_str());
TC_LOG_ERROR("maps", "Please place MAP-files (*.map) in the appropriate directory (%s), or correct the DataDir setting in your worldserver.conf file.", (sWorld->GetDataPath()+"maps/").c_str());
}
else
{
map_fileheader header;
- if (fread(&header, sizeof(header), 1, pf) == 1)
+ if (fread(&header, sizeof(header), 1, file) == 1)
{
if (header.mapMagic.asUInt != MapMagic.asUInt || header.versionMagic.asUInt != MapVersionMagic.asUInt)
TC_LOG_ERROR("maps", "Map file '%s' is from an incompatible map version (%.*s %.*s), %.*s %.*s is expected. Please recreate using the mapextractor.",
- fileName, 4, header.mapMagic.asChar, 4, header.versionMagic.asChar, 4, MapMagic.asChar, 4, MapVersionMagic.asChar);
+ fileName.c_str(), 4, header.mapMagic.asChar, 4, header.versionMagic.asChar, 4, MapMagic.asChar, 4, MapVersionMagic.asChar);
else
ret = true;
}
- fclose(pf);
+ fclose(file);
}
- delete[] fileName;
return ret;
}
@@ -191,16 +187,12 @@ void Map::LoadMap(int gx, int gy, bool reload)
}
// map file name
- char* tmp = NULL;
- int len = sWorld->GetDataPath().length() + strlen("maps/%03u%02u%02u.map") + 1;
- tmp = new char[len];
- snprintf(tmp, len, (char *)(sWorld->GetDataPath() + "maps/%03u%02u%02u.map").c_str(), GetId(), gx, gy);
- TC_LOG_DEBUG("maps", "Loading map %s", tmp);
+ std::string fileName = Trinity::StringFormat("%smaps/%04u_%02u_%02u.map", sWorld->GetDataPath().c_str(), GetId(), gx, gy);
+ TC_LOG_DEBUG("maps", "Loading map %s", fileName.c_str());
// loading data
GridMaps[gx][gy] = new GridMap();
- if (!GridMaps[gx][gy]->loadData(tmp))
- TC_LOG_ERROR("maps", "Error loading map file: \n %s\n", tmp);
- delete[] tmp;
+ if (!GridMaps[gx][gy]->loadData(fileName.c_str()))
+ TC_LOG_ERROR("maps", "Error loading map file: %s", fileName.c_str());
sScriptMgr->OnLoadGridMap(this, GridMaps[gx][gy], gx, gy);
}
@@ -456,8 +448,7 @@ bool Map::EnsureGridLoaded(const Cell &cell)
setGridObjectDataLoaded(true, cell.GridX(), cell.GridY());
- ObjectGridLoader loader(*grid, this, cell);
- loader.LoadN();
+ LoadGridObjects(grid, cell);
// Add resurrectable corpses to world object list in grid
sObjectAccessor->AddCorpsesToGrid(GridCoord(cell.GridX(), cell.GridY()), grid->GetGridType(cell.CellX(), cell.CellY()), this);
@@ -468,12 +459,18 @@ bool Map::EnsureGridLoaded(const Cell &cell)
return false;
}
+void Map::LoadGridObjects(NGridType* grid, Cell const& cell)
+{
+ ObjectGridLoader loader(*grid, this, cell);
+ loader.LoadN();
+}
+
void Map::LoadGrid(float x, float y)
{
EnsureGridLoaded(Cell(x, y));
}
-bool Map::AddPlayerToMap(Player* player)
+bool Map::AddPlayerToMap(Player* player, bool initPlayer /*= true*/)
{
CellCoord cellCoord = Trinity::ComputeCellCoord(player->GetPositionX(), player->GetPositionY());
if (!cellCoord.IsCoordValid())
@@ -491,13 +488,16 @@ bool Map::AddPlayerToMap(Player* player)
player->SetMap(this);
player->AddToWorld();
- SendInitSelf(player);
+ if (initPlayer)
+ SendInitSelf(player);
+
SendInitTransports(player);
SendZoneDynamicInfo(player);
- player->m_clientGUIDs.clear();
- player->UpdateObjectVisibility(false);
+ if (initPlayer)
+ player->m_clientGUIDs.clear();
+ player->UpdateObjectVisibility(false);
player->SendUpdatePhasing();
sScriptMgr->OnPlayerEnterMap(this, player);
@@ -2600,7 +2600,7 @@ void Map::SendObjectUpdates()
while (!_updateObjects.empty())
{
Object* obj = *_updateObjects.begin();
- ASSERT(obj && obj->IsInWorld());
+ ASSERT(obj->IsInWorld());
_updateObjects.erase(_updateObjects.begin());
obj->BuildUpdate(update_players);
}
@@ -2616,6 +2616,17 @@ void Map::SendObjectUpdates()
void Map::DelayedUpdate(const uint32 t_diff)
{
+ for (_transportsUpdateIter = _transports.begin(); _transportsUpdateIter != _transports.end();)
+ {
+ Transport* transport = *_transportsUpdateIter;
+ ++_transportsUpdateIter;
+
+ if (!transport->IsInWorld())
+ continue;
+
+ transport->DelayedUpdate(t_diff);
+ }
+
RemoveAllObjectsInRemoveList();
// Don't unload grids if it's battleground, since we may have manually added GOs, creatures, those doesn't load from DB at grid re-load !
@@ -2955,7 +2966,7 @@ bool InstanceMap::CanEnter(Player* player)
/*
Do map specific checks and add the player to the map if successful.
*/
-bool InstanceMap::AddPlayerToMap(Player* player)
+bool InstanceMap::AddPlayerToMap(Player* player, bool initPlayer /*= true*/)
{
/// @todo Not sure about checking player level: already done in HandleAreaTriggerOpcode
// GMs still can teleport player in instance.
@@ -3065,7 +3076,7 @@ bool InstanceMap::AddPlayerToMap(Player* player)
}
// this will acquire the same mutex so it cannot be in the previous block
- Map::AddPlayerToMap(player);
+ Map::AddPlayerToMap(player, initPlayer);
if (i_data)
i_data->OnPlayerEnter(player);
@@ -3323,7 +3334,7 @@ bool BattlegroundMap::CanEnter(Player* player)
return Map::CanEnter(player);
}
-bool BattlegroundMap::AddPlayerToMap(Player* player)
+bool BattlegroundMap::AddPlayerToMap(Player* player, bool initPlayer /*= true*/)
{
{
std::lock_guard<std::mutex> lock(_mapLock);
@@ -3333,7 +3344,7 @@ bool BattlegroundMap::AddPlayerToMap(Player* player)
// reset instance validity, battleground maps do not homebind
player->m_InstanceValid = true;
}
- return Map::AddPlayerToMap(player);
+ return Map::AddPlayerToMap(player, initPlayer);
}
void BattlegroundMap::RemovePlayerFromMap(Player* player, bool remove)
diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h
index 1394808b2cc..fb1ac3cc62d 100644
--- a/src/server/game/Maps/Map.h
+++ b/src/server/game/Maps/Map.h
@@ -274,7 +274,7 @@ class Map : public GridRefManager<NGridType>
return false;
}
- virtual bool AddPlayerToMap(Player*);
+ virtual bool AddPlayerToMap(Player* player, bool initPlayer = true);
virtual void RemovePlayerFromMap(Player*, bool);
template<class T> bool AddToMap(T *);
template<class T> void RemoveFromMap(T *, bool);
@@ -394,6 +394,7 @@ class Map : public GridRefManager<NGridType>
bool IsBattleground() const { return i_mapEntry && i_mapEntry->IsBattleground(); }
bool IsBattleArena() const { return i_mapEntry && i_mapEntry->IsBattleArena(); }
bool IsBattlegroundOrArena() const { return i_mapEntry && i_mapEntry->IsBattlegroundOrArena(); }
+ bool IsGarrison() const { return i_mapEntry && i_mapEntry->IsGarrison(); }
bool GetEntrancePos(int32 &mapid, float &x, float &y)
{
if (!i_mapEntry)
@@ -601,6 +602,7 @@ class Map : public GridRefManager<NGridType>
protected:
void SetUnloadReferenceLock(const GridCoord &p, bool on) { getNGrid(p.x_coord, p.y_coord)->setUnloadReferenceLock(on); }
+ virtual void LoadGridObjects(NGridType* grid, Cell const& cell);
std::mutex _mapLock;
std::mutex _gridLock;
@@ -697,7 +699,7 @@ class Map : public GridRefManager<NGridType>
{
auto itr = _guidGenerators.find(high);
if (itr == _guidGenerators.end())
- itr = _guidGenerators.insert(std::make_pair(high, std::unique_ptr<ObjectGuidGenerator<high>>(new ObjectGuidGenerator<high>()))).first;
+ itr = _guidGenerators.insert(std::make_pair(high, Trinity::make_unique<ObjectGuidGenerator<high>>())).first;
return *itr->second;
}
@@ -725,7 +727,7 @@ class InstanceMap : public Map
public:
InstanceMap(uint32 id, time_t, uint32 InstanceId, uint8 SpawnMode, Map* _parent);
~InstanceMap();
- bool AddPlayerToMap(Player*) override;
+ bool AddPlayerToMap(Player* player, bool initPlayer = true) override;
void RemovePlayerFromMap(Player*, bool) override;
void Update(const uint32) override;
void CreateInstanceData(bool load);
@@ -755,7 +757,7 @@ class BattlegroundMap : public Map
BattlegroundMap(uint32 id, time_t, uint32 InstanceId, Map* _parent, uint8 spawnMode);
~BattlegroundMap();
- bool AddPlayerToMap(Player*) override;
+ bool AddPlayerToMap(Player* player, bool initPlayer = true) override;
void RemovePlayerFromMap(Player*, bool) override;
bool CanEnter(Player* player) override;
void SetUnload();
diff --git a/src/server/game/Maps/MapInstanced.cpp b/src/server/game/Maps/MapInstanced.cpp
index c48b616788e..bd69844ae7c 100644
--- a/src/server/game/Maps/MapInstanced.cpp
+++ b/src/server/game/Maps/MapInstanced.cpp
@@ -26,6 +26,7 @@
#include "World.h"
#include "Group.h"
#include "Player.h"
+#include "GarrisonMap.h"
MapInstanced::MapInstanced(uint32 id, time_t expiry) : Map(id, expiry, 0, DIFFICULTY_NORMAL)
{
@@ -138,7 +139,7 @@ Map* MapInstanced::CreateInstanceForPlayer(const uint32 mapId, Player* player)
}
}
}
- else
+ else if (!IsGarrison())
{
InstancePlayerBind* pBind = player->GetBoundInstance(GetId(), player->GetDifficultyID(GetEntry()));
InstanceSave* pSave = pBind ? pBind->save : NULL;
@@ -180,6 +181,13 @@ Map* MapInstanced::CreateInstanceForPlayer(const uint32 mapId, Player* player)
map = CreateInstance(newInstanceId, NULL, diff);
}
}
+ else
+ {
+ newInstanceId = player->GetGUID().GetCounter();
+ map = FindInstanceMap(newInstanceId);
+ if (!map)
+ map = CreateGarrison(newInstanceId, player);
+ }
return map;
}
@@ -206,7 +214,7 @@ InstanceMap* MapInstanced::CreateInstance(uint32 InstanceId, InstanceSave* save,
// some instances only have one difficulty
GetDownscaledMapDifficultyData(GetId(), difficulty);
- TC_LOG_DEBUG("maps", "MapInstanced::CreateInstance: %s map instance %d for %d created with difficulty %s", save?"":"new ", InstanceId, GetId(), difficulty?"heroic":"normal");
+ TC_LOG_DEBUG("maps", "MapInstanced::CreateInstance: %s map instance %d for %d created with difficulty %s", save ? "" : "new ", InstanceId, GetId(), difficulty ? "heroic" : "normal");
InstanceMap* map = new InstanceMap(GetId(), GetGridExpiry(), InstanceId, difficulty, this);
ASSERT(map->IsDungeon());
@@ -237,6 +245,17 @@ BattlegroundMap* MapInstanced::CreateBattleground(uint32 InstanceId, Battlegroun
return map;
}
+GarrisonMap* MapInstanced::CreateGarrison(uint32 instanceId, Player* owner)
+{
+ std::lock_guard<std::mutex> lock(_mapLock);
+
+ GarrisonMap* map = new GarrisonMap(GetId(), GetGridExpiry(), instanceId, this, owner->GetGUID());
+ ASSERT(map->IsGarrison());
+
+ m_InstancedMaps[instanceId] = map;
+ return map;
+}
+
// increments the iterator after erase
bool MapInstanced::DestroyInstance(InstancedMaps::iterator &itr)
{
diff --git a/src/server/game/Maps/MapInstanced.h b/src/server/game/Maps/MapInstanced.h
index c385215ba76..e487957ed6e 100644
--- a/src/server/game/Maps/MapInstanced.h
+++ b/src/server/game/Maps/MapInstanced.h
@@ -23,6 +23,8 @@
#include "InstanceSaveMgr.h"
#include "DBCEnums.h"
+class GarrisonMap;
+
class MapInstanced : public Map
{
friend class MapManager;
@@ -66,6 +68,7 @@ class MapInstanced : public Map
private:
InstanceMap* CreateInstance(uint32 InstanceId, InstanceSave* save, Difficulty difficulty);
BattlegroundMap* CreateBattleground(uint32 InstanceId, Battleground* bg);
+ GarrisonMap* CreateGarrison(uint32 instanceId, Player* owner);
InstancedMaps m_InstancedMaps;
diff --git a/src/server/game/Maps/ZoneScript.h b/src/server/game/Maps/ZoneScript.h
index d8dba57d438..fd52bdd4c14 100644
--- a/src/server/game/Maps/ZoneScript.h
+++ b/src/server/game/Maps/ZoneScript.h
@@ -29,8 +29,8 @@ class ZoneScript
ZoneScript() { }
virtual ~ZoneScript() { }
- virtual uint32 GetCreatureEntry(uint32 /*guidlow*/, CreatureData const* data) { return data->id; }
- virtual uint32 GetGameObjectEntry(uint32 /*guidlow*/, uint32 entry) { return entry; }
+ virtual uint32 GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureData const* data) { return data->id; }
+ virtual uint32 GetGameObjectEntry(ObjectGuid::LowType /*guidLow*/, uint32 entry) { return entry; }
virtual void OnCreatureCreate(Creature* ) { }
virtual void OnCreatureRemove(Creature* ) { }
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 975d74795fc..86e1c80bbd1 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -1113,7 +1113,7 @@ enum SpellEffectName
SPELL_EFFECT_REPUTATION = 103,
SPELL_EFFECT_SUMMON_OBJECT_SLOT1 = 104,
SPELL_EFFECT_SUMMON_OBJECT_SLOT2 = 105,
- SPELL_EFFECT_SUMMON_OBJECT_SLOT3 = 106,
+ SPELL_EFFECT_CHANGE_RAID_MARKER = 106,
SPELL_EFFECT_SUMMON_OBJECT_SLOT4 = 107,
SPELL_EFFECT_DISPEL_MECHANIC = 108,
SPELL_EFFECT_RESURRECT_PET = 109,
@@ -1174,7 +1174,7 @@ enum SpellEffectName
SPELL_EFFECT_REMOVE_AURA = 164,
SPELL_EFFECT_DAMAGE_FROM_MAX_HEALTH_PCT = 165,
SPELL_EFFECT_GIVE_CURRENCY = 166,
- SPELL_EFFECT_167 = 167,
+ SPELL_EFFECT_UPDATE_PLAYER_PHASE = 167,
SPELL_EFFECT_ALLOW_CONTROL_PET = 168, // NYI
SPELL_EFFECT_DESTROY_ITEM = 169,
SPELL_EFFECT_UPDATE_ZONE_AURAS_AND_PHASES = 170, // NYI
@@ -1199,8 +1199,8 @@ enum SpellEffectName
SPELL_EFFECT_LOOT = 189, // NYI, lootid in MiscValue ?
SPELL_EFFECT_190 = 190,
SPELL_EFFECT_TELEPORT_TO_DIGSITE = 191, // NYI
- SPELL_EFFECT_192 = 192,
- SPELL_EFFECT_193 = 193,
+ SPELL_EFFECT_UNCAGE_BATTLEPET = 192,
+ SPELL_EFFECT_START_PET_BATTLE = 193,
SPELL_EFFECT_194 = 194,
SPELL_EFFECT_195 = 195,
SPELL_EFFECT_196 = 196,
@@ -1211,53 +1211,53 @@ enum SpellEffectName
SPELL_EFFECT_ENABLE_BATTLE_PETS = 201, // NYI
SPELL_EFFECT_202 = 202,
SPELL_EFFECT_203 = 203,
- SPELL_EFFECT_204 = 204,
- SPELL_EFFECT_205 = 205,
+ SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY = 204,
+ SPELL_EFFECT_LAUNCH_QUEST_CHOICE = 205,
SPELL_EFFECT_206 = 206,
- SPELL_EFFECT_207 = 207,
+ SPELL_EFFECT_LAUNCH_QUEST_TASK = 207, // Starts one of the "progress bar" quests
SPELL_EFFECT_208 = 208,
SPELL_EFFECT_209 = 209,
- SPELL_EFFECT_210 = 210,
- SPELL_EFFECT_211 = 211,
+ SPELL_EFFECT_LEARN_GARRISON_BUILDING = 210,
+ SPELL_EFFECT_LEARN_GARRISON_SPECIALIZATION = 211,
SPELL_EFFECT_212 = 212,
SPELL_EFFECT_213 = 213,
- SPELL_EFFECT_214 = 214,
- SPELL_EFFECT_215 = 215,
- SPELL_EFFECT_216 = 216,
- SPELL_EFFECT_217 = 217,
+ SPELL_EFFECT_CREATE_GARRISON = 214,
+ SPELL_EFFECT_UPGRADE_CHARACTER_SPELLS = 215, // Unlocks boosted players' spells (ChrUpgrade*.db2)
+ SPELL_EFFECT_CREATE_SHIPMENT = 216,
+ SPELL_EFFECT_UPGRADE_GARRISON = 217,
SPELL_EFFECT_218 = 218,
SPELL_EFFECT_219 = 219,
- SPELL_EFFECT_220 = 220,
+ SPELL_EFFECT_ADD_GARRISON_FOLLOWER = 220,
SPELL_EFFECT_221 = 221,
- SPELL_EFFECT_222 = 222,
- SPELL_EFFECT_223 = 223,
- SPELL_EFFECT_224 = 224,
- SPELL_EFFECT_225 = 225,
+ SPELL_EFFECT_CREATE_HEIRLOOM_ITEM = 222,
+ SPELL_EFFECT_CHANGE_ITEM_BONUSES = 223,
+ SPELL_EFFECT_ACTIVATE_GARRISON_BUILDING = 224,
+ SPELL_EFFECT_GRANT_BATTLEPET_LEVEL = 225,
SPELL_EFFECT_226 = 226,
SPELL_EFFECT_227 = 227,
SPELL_EFFECT_228 = 228,
- SPELL_EFFECT_229 = 229,
- SPELL_EFFECT_230 = 230,
- SPELL_EFFECT_231 = 231,
- SPELL_EFFECT_232 = 232,
- SPELL_EFFECT_233 = 233,
+ SPELL_EFFECT_SET_FOLLOWER_QUALITY = 229,
+ SPELL_EFFECT_INCREASE_FOLLOWER_ITEM_LEVEL = 230,
+ SPELL_EFFECT_INCREASE_FOLLOWER_EXPERIENCE = 231,
+ SPELL_EFFECT_REMOVE_PHASE = 232,
+ SPELL_EFFECT_RANDOMIZE_FOLLOWER_ABILITIES = 233,
SPELL_EFFECT_234 = 234,
SPELL_EFFECT_235 = 235,
- SPELL_EFFECT_236 = 236,
- SPELL_EFFECT_237 = 237,
- SPELL_EFFECT_238 = 238,
- SPELL_EFFECT_239 = 239,
+ SPELL_EFFECT_GIVE_EXPERIENCE = 236, // Increases players XP
+ SPELL_EFFECT_GIVE_RESTED_EXPERIENCE_BONUS = 237,
+ SPELL_EFFECT_INCREASE_SKILL = 238,
+ SPELL_EFFECT_END_GARRISON_BUILDING_CONSTRUCTION = 239, // Instantly finishes building construction
SPELL_EFFECT_240 = 240,
SPELL_EFFECT_241 = 241,
SPELL_EFFECT_242 = 242,
- SPELL_EFFECT_243 = 243,
- SPELL_EFFECT_244 = 244,
- SPELL_EFFECT_245 = 245,
- SPELL_EFFECT_246 = 246,
- SPELL_EFFECT_247 = 247,
- SPELL_EFFECT_248 = 248,
+ SPELL_EFFECT_APPLY_ENCHANT_ILLUSION = 243,
+ SPELL_EFFECT_LEARN_FOLLOWER_ABILITY = 244,
+ SPELL_EFFECT_UPGRADE_HEIRLOOM = 245,
+ SPELL_EFFECT_FINISH_GARRISON_MISSION = 246,
+ SPELL_EFFECT_ADD_GARRISON_MISSION = 247,
+ SPELL_EFFECT_FINISH_SHIPMENT = 248,
SPELL_EFFECT_249 = 249,
- SPELL_EFFECT_250 = 250,
+ SPELL_EFFECT_TAKE_SCREENSHOT = 250, // Serverside marker for selfie screenshot - achievement check
TOTAL_SPELL_EFFECTS = 251,
};
@@ -4882,7 +4882,7 @@ enum PartyResult
};
const uint32 MMAP_MAGIC = 0x4d4d4150; // 'MMAP'
-#define MMAP_VERSION 6
+#define MMAP_VERSION 7
struct MmapTileHeader
{
diff --git a/src/server/game/Movement/MotionMaster.h b/src/server/game/Movement/MotionMaster.h
index 0b547d96e7f..c8da50364ba 100644
--- a/src/server/game/Movement/MotionMaster.h
+++ b/src/server/game/Movement/MotionMaster.h
@@ -182,7 +182,7 @@ class MotionMaster //: private std::stack<MovementGenerator *>
void MoveKnockbackFrom(float srcX, float srcY, float speedXY, float speedZ);
void MoveJumpTo(float angle, float speedXY, float speedZ);
void MoveJump(Position const& pos, float speedXY, float speedZ, uint32 id = EVENT_JUMP)
- { MoveJump(pos.m_positionX, pos.m_positionY, pos.m_positionZ, speedXY, speedZ, id); };
+ { MoveJump(pos.m_positionX, pos.m_positionY, pos.m_positionZ, speedXY, speedZ, id); }
void MoveJump(float x, float y, float z, float speedXY, float speedZ, uint32 id = EVENT_JUMP);
void MoveCirclePath(float x, float y, float z, float radius, bool clockwise, uint8 stepCount);
void MoveFall(uint32 id = 0);
diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h
index f50633205aa..acd0c94bbf1 100644
--- a/src/server/game/Movement/Spline/MoveSplineFlag.h
+++ b/src/server/game/Movement/Spline/MoveSplineFlag.h
@@ -32,12 +32,12 @@ namespace Movement
{
None = 0x00000000,
// x00-x07 used as animation Ids storage in pair with Animation flag
- Unknown0 = 0x00000008, // NOT VERIFIED
+ Unknown0 = 0x00000008, // NOT VERIFIED - does someting related to falling/fixed orientation
FallingSlow = 0x00000010,
Done = 0x00000020,
Falling = 0x00000040, // Affects elevation computation, can't be combined with Parabolic flag
No_Spline = 0x00000080,
- Unknown2 = 0x00000100, // NOT VERIFIED
+ Unknown1 = 0x00000100, // NOT VERIFIED
Flying = 0x00000200, // Smooth movement(Catmullrom interpolation mode), flying animation
OrientationFixed = 0x00000400, // Model orientation fixed
Catmullrom = 0x00000800, // Used Catmullrom interpolation mode
@@ -46,21 +46,21 @@ namespace Movement
Frozen = 0x00004000, // Will never arrive
TransportEnter = 0x00008000,
TransportExit = 0x00010000,
- Unknown3 = 0x00020000, // NOT VERIFIED
- Unknown4 = 0x00040000, // NOT VERIFIED
+ Unknown2 = 0x00020000, // NOT VERIFIED
+ Unknown3 = 0x00040000, // NOT VERIFIED
OrientationInversed = 0x00080000,
SmoothGroundPath = 0x00100000,
Walkmode = 0x00200000,
UncompressedPath = 0x00400000,
- Unknown6 = 0x00800000, // NOT VERIFIED
- Animation = 0x01000000, // Plays animation after some time passed
- Parabolic = 0x02000000, // Affects elevation computation, can't be combined with Falling flag
- Final_Point = 0x04000000,
- Final_Target = 0x08000000,
- Final_Angle = 0x10000000,
- Unknown7 = 0x20000000, // NOT VERIFIED
- Unknown8 = 0x40000000, // NOT VERIFIED
- Unknown9 = 0x80000000, // NOT VERIFIED
+ Unknown4 = 0x00800000, // NOT VERIFIED
+ Unknown5 = 0x01000000, // NOT VERIFIED
+ Animation = 0x02000000, // Plays animation after some time passed
+ Parabolic = 0x04000000, // Affects elevation computation, can't be combined with Falling flag
+ Final_Point = 0x08000000,
+ Final_Target = 0x10000000,
+ Final_Angle = 0x20000000,
+ Unknown6 = 0x40000000, // NOT VERIFIED
+ Unknown7 = 0x80000000, // NOT VERIFIED
// Masks
Mask_Final_Facing = Final_Point | Final_Target | Final_Angle,
@@ -69,7 +69,7 @@ namespace Movement
// flags that shouldn't be appended into SMSG_MONSTER_MOVE\SMSG_MONSTER_MOVE_TRANSPORT packet, should be more probably
Mask_No_Monster_Move = Mask_Final_Facing | Mask_Animations | Done,
// Unused, not suported flags
- Mask_Unused = No_Spline|Enter_Cycle|Frozen|Unknown0|Unknown2|Unknown3|Unknown4|Unknown6|Unknown7|Unknown8|Unknown9
+ Mask_Unused = No_Spline|Enter_Cycle|Frozen|Unknown0|Unknown1|Unknown2|Unknown3|Unknown4|Unknown5|Unknown6|Unknown7
};
inline uint32& raw() { return (uint32&)*this; }
@@ -114,7 +114,7 @@ namespace Movement
bool done : 1;
bool falling : 1;
bool no_spline : 1;
- bool unknown2 : 1;
+ bool unknown1 : 1;
bool flying : 1;
bool orientationFixed : 1;
bool catmullrom : 1;
@@ -123,21 +123,21 @@ namespace Movement
bool frozen : 1;
bool transportEnter : 1;
bool transportExit : 1;
+ bool unknown2 : 1;
bool unknown3 : 1;
- bool unknown4 : 1;
bool orientationInversed : 1;
bool smoothGroundPath : 1;
bool walkmode : 1;
bool uncompressedPath : 1;
- bool unknown6 : 1;
+ bool unknown4 : 1;
+ bool unknown5 : 1;
bool animation : 1;
bool parabolic : 1;
bool final_point : 1;
bool final_target : 1;
bool final_angle : 1;
+ bool unknown6 : 1;
bool unknown7 : 1;
- bool unknown8 : 1;
- bool unknown9 : 1;
};
#pragma pack(pop)
}
diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp
index 0343e92c506..117891140da 100644
--- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp
+++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp
@@ -162,12 +162,14 @@ bool OPvPCapturePoint::DelCreature(uint32 type)
}
auto bounds = m_PvP->GetMap()->GetCreatureBySpawnIdStore().equal_range(spawnId);
- for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ for (auto itr = bounds.first; itr != bounds.second;)
{
+ Creature* c = itr->second;
+ ++itr;
// Don't save respawn time
- itr->second->SetRespawnTime(0);
- itr->second->RemoveCorpse();
- itr->second->AddObjectToRemoveList();
+ c->SetRespawnTime(0);
+ c->RemoveCorpse();
+ c->AddObjectToRemoveList();
}
TC_LOG_DEBUG("outdoorpvp", "deleting opvp creature type %u", type);
@@ -196,11 +198,13 @@ bool OPvPCapturePoint::DelObject(uint32 type)
ObjectGuid::LowType spawnId = m_Objects[type];
auto bounds = m_PvP->GetMap()->GetGameObjectBySpawnIdStore().equal_range(spawnId);
- for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ for (auto itr = bounds.first; itr != bounds.second;)
{
+ GameObject* go = itr->second;
+ ++itr;
// Don't save respawn time
- itr->second->SetRespawnTime(0);
- itr->second->Delete();
+ go->SetRespawnTime(0);
+ go->Delete();
}
sObjectMgr->DeleteGOData(spawnId);
diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp
index 15f378e138a..a82652d2f03 100644
--- a/src/server/game/Pools/PoolMgr.cpp
+++ b/src/server/game/Pools/PoolMgr.cpp
@@ -225,8 +225,12 @@ void PoolGroup<Creature>::Despawn1Object(uint64 guid)
if (!map->Instanceable())
{
auto creatureBounds = map->GetCreatureBySpawnIdStore().equal_range(guid);
- for (auto itr = creatureBounds.first; itr != creatureBounds.second; ++itr)
- itr->second->AddObjectToRemoveList();
+ for (auto itr = creatureBounds.first; itr != creatureBounds.second;)
+ {
+ Creature* creature = itr->second;
+ ++itr;
+ creature->AddObjectToRemoveList();
+ }
}
}
}
@@ -243,8 +247,12 @@ void PoolGroup<GameObject>::Despawn1Object(uint64 guid)
if (!map->Instanceable())
{
auto gameobjectBounds = map->GetGameObjectBySpawnIdStore().equal_range(guid);
- for (auto itr = gameobjectBounds.first; itr != gameobjectBounds.second; ++itr)
- itr->second->AddObjectToRemoveList();
+ for (auto itr = gameobjectBounds.first; itr != gameobjectBounds.second;)
+ {
+ GameObject* go = itr->second;
+ ++itr;
+ go->AddObjectToRemoveList();
+ }
}
}
}
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index c878287b4ac..148cdeab68e 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -34,7 +34,7 @@ Quest::Quest(Field* questRecord)
SuggestedPlayers = questRecord[7].GetUInt8();
NextQuestInChain = questRecord[8].GetUInt32();
RewardXPDifficulty = questRecord[9].GetUInt32();
- Float10 = questRecord[10].GetFloat();
+ RewardXPMultiplier = questRecord[10].GetFloat();
RewardMoney = questRecord[11].GetUInt32();
RewardMoneyDifficulty = questRecord[12].GetUInt32();
Float13 = questRecord[13].GetFloat();
@@ -225,7 +225,7 @@ uint32 Quest::XPValue(uint32 playerLevel) const
else if (diffFactor > 10)
diffFactor = 10;
- uint32 xp = diffFactor * xpentry->Exp[RewardXPDifficulty] / 10;
+ uint32 xp = diffFactor * xpentry->Exp[RewardXPDifficulty] * RewardXPMultiplier / 10;
if (xp <= 100)
xp = 5 * ((xp + 2) / 5);
else if (xp <= 500)
diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h
index 8433a549c60..e11794dc64c 100644
--- a/src/server/game/Quests/QuestDef.h
+++ b/src/server/game/Quests/QuestDef.h
@@ -226,7 +226,8 @@ enum QuestObjectiveType
QUEST_OBJECTIVE_AREATRIGGER = 10,
QUEST_OBJECTIVE_WINPETBATTLEAGAINSTNPC = 11,
QUEST_OBJECTIVE_DEFEATBATTLEPET = 12,
- QUEST_OBJECTIVE_WINPVPPETBATTLES = 13
+ QUEST_OBJECTIVE_WINPVPPETBATTLES = 13,
+ QUEST_OBJECTIVE_CRITERIA_TREE = 14
};
struct QuestTemplateLocale
@@ -318,6 +319,7 @@ class Quest
uint32 GetBonusTalents() const { return RewardTalents; }
int32 GetRewArenaPoints() const {return RewardArenaPoints; }
uint32 GetXPDifficulty() const { return RewardXPDifficulty; }
+ float GetXPMultiplier() const { return RewardXPMultiplier; }
uint32 GetSrcItemId() const { return SourceItemId; }
uint32 GetSrcItemCount() const { return SourceItemIdCount; }
uint32 GetSrcSpell() const { return SourceSpellID; }
@@ -332,7 +334,7 @@ class Quest
std::string const& GetPortraitGiverName() const { return PortraitGiverName; }
std::string const& GetPortraitTurnInText() const { return PortraitTurnInText; }
std::string const& GetPortraitTurnInName() const { return PortraitTurnInName; }
- QuestObjectives const& GetObjectives() const { return Objectives; };
+ QuestObjectives const& GetObjectives() const { return Objectives; }
uint32 GetRewMoney() const;
uint32 GetRewMoneyDifficulty() const { return RewardMoneyDifficulty; }
uint32 GetRewHonor() const { return RewardHonor; }
@@ -401,7 +403,7 @@ class Quest
uint32 SuggestedPlayers;
uint32 NextQuestInChain;
uint32 RewardXPDifficulty;
- float Float10;
+ float RewardXPMultiplier;
int32 RewardMoney;
uint32 RewardMoneyDifficulty;
float Float13;
diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp
index 1db3dbb9f93..ecfc069ca78 100644
--- a/src/server/game/Scripting/MapScripts.cpp
+++ b/src/server/game/Scripting/MapScripts.cpp
@@ -283,18 +283,11 @@ inline void Map::_ScriptProcessDoor(Object* source, Object* target, const Script
inline GameObject* Map::_FindGameObject(WorldObject* searchObject, ObjectGuid::LowType guid) const
{
- GameObject* gameobject = NULL;
+ auto bounds = searchObject->GetMap()->GetGameObjectBySpawnIdStore().equal_range(guid);
+ if (bounds.first == bounds.second)
+ return nullptr;
- CellCoord p(Trinity::ComputeCellCoord(searchObject->GetPositionX(), searchObject->GetPositionY()));
- Cell cell(p);
-
- Trinity::GameObjectWithDbGUIDCheck goCheck(*searchObject, guid);
- Trinity::GameObjectSearcher<Trinity::GameObjectWithDbGUIDCheck> checker(searchObject, gameobject, goCheck);
-
- TypeContainerVisitor<Trinity::GameObjectSearcher<Trinity::GameObjectWithDbGUIDCheck>, GridTypeMapContainer > objectChecker(checker);
- cell.Visit(p, objectChecker, *searchObject->GetMap(), *searchObject, searchObject->GetGridActivationRange());
-
- return gameobject;
+ return bounds.first->second;
}
/// Process queued scripts
@@ -806,26 +799,17 @@ void Map::ScriptsProcess()
}
Creature* cTarget = NULL;
- WorldObject* wSource = dynamic_cast <WorldObject*> (source);
- if (wSource) //using grid searcher
+ WorldObject* wSource = dynamic_cast<WorldObject*>(source);
+ auto creatureBounds = _creatureBySpawnIdStore.equal_range(step.script->CallScript.CreatureEntry);
+ if (creatureBounds.first != creatureBounds.second)
{
- CellCoord p(Trinity::ComputeCellCoord(wSource->GetPositionX(), wSource->GetPositionY()));
- Cell cell(p);
-
- Trinity::CreatureWithDbGUIDCheck target_check(wSource, uint64(step.script->CallScript.CreatureEntry));
- Trinity::CreatureSearcher<Trinity::CreatureWithDbGUIDCheck> checker(wSource, cTarget, target_check);
-
- TypeContainerVisitor<Trinity::CreatureSearcher <Trinity::CreatureWithDbGUIDCheck>, GridTypeMapContainer > unit_checker(checker);
- cell.Visit(p, unit_checker, *wSource->GetMap(), *wSource, wSource->GetGridActivationRange());
- }
- else //check hashmap holders
- {
- if (CreatureData const* data = sObjectMgr->GetCreatureData(step.script->CallScript.CreatureEntry))
+ // Prefer alive (last respawned) creature
+ auto creatureItr = std::find_if(creatureBounds.first, creatureBounds.second, [](Map::CreatureBySpawnIdContainer::value_type const& pair)
{
- auto creatureBounds = _creatureBySpawnIdStore.equal_range(step.script->CallScript.CreatureEntry);
- if (creatureBounds.first != creatureBounds.second)
- cTarget = creatureBounds.first->second;
- }
+ return pair.second->IsAlive();
+ });
+
+ cTarget = creatureItr != creatureBounds.second ? creatureItr->second : creatureBounds.first->second;
}
if (!cTarget)
diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp
index 553c752ccce..aa8be4946e4 100644
--- a/src/server/game/Scripting/ScriptLoader.cpp
+++ b/src/server/game/Scripting/ScriptLoader.cpp
@@ -634,6 +634,7 @@ void AddSC_instance_magtheridons_lair();
void AddSC_boss_grand_warlock_nethekurse(); //HC Shattered Halls
void AddSC_boss_warbringer_omrogg();
void AddSC_boss_warchief_kargath_bladefist();
+void AddSC_shattered_halls();
void AddSC_instance_shattered_halls();
void AddSC_boss_watchkeeper_gargolmar(); //HC Ramparts
void AddSC_boss_omor_the_unscarred();
@@ -1188,6 +1189,7 @@ void AddOutlandScripts()
AddSC_boss_grand_warlock_nethekurse(); //HC Shattered Halls
AddSC_boss_warbringer_omrogg();
AddSC_boss_warchief_kargath_bladefist();
+ AddSC_shattered_halls();
AddSC_instance_shattered_halls();
AddSC_boss_watchkeeper_gargolmar(); //HC Ramparts
AddSC_boss_omor_the_unscarred();
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp
index 12161867004..40af397e110 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.cpp
+++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp
@@ -60,6 +60,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
_worldPacket << uint8(Result);
_worldPacket.WriteBit(SuccessInfo.is_initialized());
_worldPacket.WriteBit(WaitInfo.is_initialized());
+ _worldPacket.FlushBits();
if (SuccessInfo)
{
@@ -83,6 +84,8 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
_worldPacket.WriteBit(realm.IsInternalRealm);
_worldPacket.WriteBits(realm.RealmNameActual.length(), 8);
_worldPacket.WriteBits(realm.RealmNameNormalized.length(), 8);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(realm.RealmNameActual);
_worldPacket.WriteString(realm.RealmNameNormalized);
}
@@ -111,6 +114,8 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
_worldPacket.WriteBits(templat.Name.length(), 7);
_worldPacket.WriteBits(templat.Description.length(), 10);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(templat.Name);
_worldPacket.WriteString(templat.Description);
}
@@ -120,6 +125,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
_worldPacket.WriteBit(SuccessInfo->NumPlayersHorde.is_initialized());
_worldPacket.WriteBit(SuccessInfo->NumPlayersAlliance.is_initialized());
_worldPacket.WriteBit(SuccessInfo->IsVeteranTrial);
+ _worldPacket.FlushBits();
if (SuccessInfo->NumPlayersHorde)
_worldPacket << uint16(*SuccessInfo->NumPlayersHorde);
@@ -132,9 +138,9 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
{
_worldPacket << uint32(WaitInfo->WaitCount);
_worldPacket.WriteBit(WaitInfo->HasFCM);
+ _worldPacket.FlushBits();
}
- _worldPacket.FlushBits();
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp
index 5acb018b46f..cc6406b81bc 100644
--- a/src/server/game/Server/Packets/ChannelPackets.cpp
+++ b/src/server/game/Server/Packets/ChannelPackets.cpp
@@ -83,6 +83,49 @@ WorldPacket const* WorldPackets::Channel::ChannelNotifyLeft::Write()
return &_worldPacket;
}
+WorldPacket const* WorldPackets::Channel::UserlistAdd::Write()
+{
+ _worldPacket << AddedUserGUID;
+ _worldPacket << uint8(_ChannelFlags);
+ _worldPacket << uint8(UserFlags);
+
+ _worldPacket << uint32(ChannelID);
+
+ _worldPacket.WriteBits(ChannelName.length(), 7);
+ _worldPacket.FlushBits();
+ _worldPacket.WriteString(ChannelName);
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Channel::UserlistRemove::Write()
+{
+ _worldPacket << RemovedUserGUID;
+
+ _worldPacket << uint8(_ChannelFlags);
+
+ _worldPacket << uint32(ChannelID);
+
+ _worldPacket.WriteBits(ChannelName.length(), 7);
+ _worldPacket.FlushBits();
+ _worldPacket.WriteString(ChannelName);
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Channel::UserlistUpdate::Write()
+{
+ _worldPacket << UpdatedUserGUID;
+
+ _worldPacket << uint8(_ChannelFlags);
+ _worldPacket << uint8(UserFlags);
+
+ _worldPacket << uint32(ChannelID);
+
+ _worldPacket.WriteBits(ChannelName.length(), 7);
+ _worldPacket.FlushBits();
+ _worldPacket.WriteString(ChannelName);
+ return &_worldPacket;
+}
+
void WorldPackets::Channel::ChannelPlayerCommand::Read()
{
switch (GetOpcode())
diff --git a/src/server/game/Server/Packets/ChannelPackets.h b/src/server/game/Server/Packets/ChannelPackets.h
index ca47c76edc9..7464e9bd391 100644
--- a/src/server/game/Server/Packets/ChannelPackets.h
+++ b/src/server/game/Server/Packets/ChannelPackets.h
@@ -95,6 +95,56 @@ namespace WorldPackets
bool Suspended = false; ///< User Leave - false, On Zone Change - true
};
+ class UserlistAdd final : public ServerPacket
+ {
+ public:
+ UserlistAdd() : ServerPacket(SMSG_USERLIST_ADD, 30) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid AddedUserGUID;
+
+ uint8 _ChannelFlags = CHANNEL_FLAG_NONE; ///< @see enum ChannelFlags
+ uint8 UserFlags = MEMBER_FLAG_NONE;
+
+ int32 ChannelID = 0;
+
+ std::string ChannelName;
+ };
+
+ class UserlistRemove final : public ServerPacket
+ {
+ public:
+ UserlistRemove() : ServerPacket(SMSG_USERLIST_REMOVE, 30) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid RemovedUserGUID;
+
+ uint8 _ChannelFlags = CHANNEL_FLAG_NONE; ///< @see enum ChannelFlags
+
+ uint32 ChannelID = 0;
+
+ std::string ChannelName;
+ };
+
+ class UserlistUpdate final : public ServerPacket
+ {
+ public:
+ UserlistUpdate() : ServerPacket(SMSG_USERLIST_UPDATE, 30) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid UpdatedUserGUID;
+
+ uint8 _ChannelFlags = CHANNEL_FLAG_NONE; ///< @see enum ChannelFlags
+ uint8 UserFlags = MEMBER_FLAG_NONE;
+
+ int32 ChannelID = 0;
+
+ std::string ChannelName;
+ };
+
class ChannelPlayerCommand final : public ClientPacket
{
public:
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index d3b3050216c..9c6bb07f56e 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -154,6 +154,8 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write()
_worldPacket.WriteBit(charInfo.FirstLogin);
_worldPacket.WriteBit(charInfo.BoostInProgress);
_worldPacket.WriteBits(charInfo.unkWod61x, 5);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(charInfo.Name);
}
@@ -215,11 +217,13 @@ WorldPacket const* WorldPackets::Character::CharacterRenameResult::Write()
_worldPacket << uint8(Result);
_worldPacket.WriteBit(Guid.is_initialized());
_worldPacket.WriteBits(Name.length(), 6);
+ _worldPacket.FlushBits();
if (Guid)
_worldPacket << *Guid;
_worldPacket.WriteString(Name);
+
return &_worldPacket;
}
@@ -305,19 +309,21 @@ WorldPacket const* WorldPackets::Character::GenerateRandomCharacterNameResult::W
{
_worldPacket.WriteBit(Success);
_worldPacket.WriteBits(Name.length(), 6);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(Name);
+
return &_worldPacket;
}
void WorldPackets::Character::ReorderCharacters::Read()
{
uint32 count = std::min<uint32>(_worldPacket.ReadBits(9), sWorld->getIntConfig(CONFIG_CHARACTERS_PER_REALM));
- while (count--)
+ Entries.resize(count);
+ for (ReorderInfo& reorderInfo : Entries)
{
- ReorderInfo reorderInfo;
_worldPacket >> reorderInfo.PlayerGUID;
_worldPacket >> reorderInfo.NewPosition;
- Entries.emplace_back(reorderInfo);
}
}
@@ -492,3 +498,40 @@ WorldPacket const* WorldPackets::Character::SetFactionVisible::Write()
_worldPacket << FactionIndex;
return &_worldPacket;
}
+
+WorldPackets::Character::CharCustomizeResponse::CharCustomizeResponse(WorldPackets::Character::CharCustomizeInfo const* info)
+ : ServerPacket(SMSG_CHAR_CUSTOMIZE, 16 + 1 + 1 + 1 + 1 + 1 + 1 + 1)
+{
+ CharGUID = info->CharGUID;
+ SexID = info->SexID;
+ SkinID = info->SkinID;
+ HairColorID = info->HairColorID;
+ HairStyleID = info->HairStyleID;
+ FacialHairStyleID = info->FacialHairStyleID;
+ FaceID = info->FaceID;
+ CharName = info->CharName;
+}
+
+WorldPacket const* WorldPackets::Character::CharCustomizeResponse::Write()
+{
+ _worldPacket << CharGUID;
+ _worldPacket << uint8(SexID);
+ _worldPacket << uint8(SkinID);
+ _worldPacket << uint8(HairColorID);
+ _worldPacket << uint8(HairStyleID);
+ _worldPacket << uint8(FacialHairStyleID);
+ _worldPacket << uint8(FaceID);
+ _worldPacket.WriteBits(CharName.length(), 6);
+ _worldPacket.FlushBits();
+ _worldPacket.WriteString(CharName);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Character::CharCustomizeFailed::Write()
+{
+ _worldPacket << uint8(Result);
+ _worldPacket << CharGUID;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index cee4f5edb5c..10f1053f8ee 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -608,7 +608,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
- BarberShopResult Result;
+ BarberShopResult Result = BARBER_SHOP_RESULT_SUCCESS;
};
class LogXPGain final : public ServerPacket
@@ -686,6 +686,35 @@ namespace WorldPackets
uint32 FactionIndex = 0;
};
+
+ class CharCustomizeResponse final : public ServerPacket
+ {
+ public:
+ CharCustomizeResponse() : ServerPacket(SMSG_CHAR_CUSTOMIZE, 16 + 1 + 1 + 1 + 1 + 1 + 1 + 1) { }
+ CharCustomizeResponse(CharCustomizeInfo const* customizeInfo);
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid CharGUID;
+ std::string CharName;
+ uint8 SexID = 0;
+ uint8 SkinID = 0;
+ uint8 HairColorID = 0;
+ uint8 HairStyleID = 0;
+ uint8 FacialHairStyleID = 0;
+ uint8 FaceID = 0;
+ };
+
+ class CharCustomizeFailed final : public ServerPacket
+ {
+ public:
+ CharCustomizeFailed() : ServerPacket(SMSG_CHAR_CUSTOMIZE_FAILED, 1 + 16) { }
+
+ WorldPacket const* Write() override;
+
+ uint8 Result = 0;
+ ObjectGuid CharGUID;
+ };
}
}
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index de4194db023..4204278d514 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -92,7 +92,7 @@ void WorldPackets::Chat::ChatMessageEmote::Read()
Text = _worldPacket.ReadString(len);
}
-void WorldPackets::Chat::Chat::Initalize(ChatMsg chatType, Language language, WorldObject const* sender, WorldObject const* receiver, std::string message,
+void WorldPackets::Chat::Chat::Initialize(ChatMsg chatType, Language language, WorldObject const* sender, WorldObject const* receiver, std::string message,
uint32 achievementId /*= 0*/, std::string channelName /*= ""*/, LocaleConstant locale /*= DEFAULT_LOCALE*/, std::string addonPrefix /*= ""*/)
{
// Clear everything because same packet can be used multiple times
@@ -165,6 +165,8 @@ WorldPacket const* WorldPackets::Chat::Chat::Write()
_worldPacket.WriteBits(_ChatFlags, 11);
_worldPacket.WriteBit(HideChatLog);
_worldPacket.WriteBit(FakeSenderName);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(SenderName);
_worldPacket.WriteString(TargetName);
_worldPacket.WriteString(Prefix);
@@ -203,14 +205,43 @@ WorldPacket const* WorldPackets::Chat::STextEmote::Write()
WorldPacket const* WorldPackets::Chat::PrintNotification::Write()
{
_worldPacket.WriteBits(NotifyText.size(), 12);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(NotifyText);
+
return &_worldPacket;
}
WorldPacket const* WorldPackets::Chat::ChatPlayerNotfound::Write()
{
_worldPacket.WriteBits(Name.length(), 9);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(Name);
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Chat::ChatServerMessage::Write()
+{
+ _worldPacket << MessageID;
+
+ _worldPacket.WriteBits(StringParam.length(), 11);
+ _worldPacket.FlushBits();
+
+ _worldPacket.WriteString(StringParam);
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Chat::ChatRegisterAddonPrefixes::Read()
+{
+ int32 count;
+ _worldPacket >> count;
+
+ for (int32 i = 0; i < count; ++i)
+ {
+ uint32 lenghts = _worldPacket.ReadBits(5);
+ Prefixes.push_back(_worldPacket.ReadString(lenghts));
+ }
+}
diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h
index b794d118d88..c8bb038ce19 100644
--- a/src/server/game/Server/Packets/ChatPackets.h
+++ b/src/server/game/Server/Packets/ChatPackets.h
@@ -151,7 +151,7 @@ namespace WorldPackets
public:
Chat() : ServerPacket(SMSG_CHAT, 100) { }
- void Initalize(ChatMsg chatType, Language language, WorldObject const* sender, WorldObject const* receiver, std::string message, uint32 achievementId = 0, std::string channelName = "", LocaleConstant locale = DEFAULT_LOCALE, std::string addonPrefix = "");
+ void Initialize(ChatMsg chatType, Language language, WorldObject const* sender, WorldObject const* receiver, std::string message, uint32 achievementId = 0, std::string channelName = "", LocaleConstant locale = DEFAULT_LOCALE, std::string addonPrefix = "");
WorldPacket const* Write() override;
uint8 SlashCmd = 0; ///< @see enum ChatMsg
@@ -239,6 +239,35 @@ namespace WorldPackets
std::string Name;
};
+
+ class ChatServerMessage final : public ServerPacket
+ {
+ public:
+ ChatServerMessage() : ServerPacket(SMSG_CHAT_SERVER_MESSAGE, 4 + 2) { }
+
+ WorldPacket const* Write() override;
+
+ int32 MessageID = 0;
+ std::string StringParam;
+ };
+
+ class ChatRegisterAddonPrefixes final : public ClientPacket
+ {
+ public:
+ ChatRegisterAddonPrefixes(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_REGISTER_ADDON_PREFIXES, std::move(packet)) { }
+
+ void Read() override;
+
+ std::vector<std::string> Prefixes;
+ };
+
+ class ChatUnregisterAllAddonPrefixes final : public ClientPacket
+ {
+ public:
+ ChatUnregisterAllAddonPrefixes(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, std::move(packet)) { }
+
+ void Read() override { }
+ };
}
}
diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp
index 0702ad63f05..295f27375da 100644
--- a/src/server/game/Server/Packets/CombatLogPackets.cpp
+++ b/src/server/game/Server/Packets/CombatLogPackets.cpp
@@ -147,3 +147,76 @@ WorldPacket const* WorldPackets::CombatLog::SpellHealLog::Write()
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::CombatLog::SpellPeriodicAuraLog::Write()
+{
+ _worldPacket << TargetGUID;
+ _worldPacket << CasterGUID;
+ _worldPacket << SpellID;
+
+ _worldPacket << uint32(Effects.size());
+
+ for (SpellLogEffect const& effect : Effects)
+ {
+ _worldPacket << effect.Effect;
+ _worldPacket << int32(effect.Amount);
+ _worldPacket << int32(effect.OverHealOrKill);
+ _worldPacket << int32(effect.SchoolMaskOrPower);
+ _worldPacket << int32(effect.AbsorbedOrAmplitude);
+ _worldPacket << int32(effect.Resisted);
+
+ _worldPacket.WriteBit(effect.Crit);
+ _worldPacket.WriteBit(effect.Multistrike);
+
+ if (_worldPacket.WriteBit(effect.DebugInfo.is_initialized()))
+ {
+ _worldPacket << float(effect.DebugInfo->CritRollMade);
+ _worldPacket << float(effect.DebugInfo->CritRollNeeded);
+ }
+
+ _worldPacket.FlushBits();
+ }
+
+ _worldPacket.WriteBit(LogData.is_initialized());
+ _worldPacket.FlushBits();
+ if (LogData)
+ _worldPacket << *LogData;
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::CombatLog::SpellInterruptLog::Write()
+{
+ _worldPacket << Caster;
+ _worldPacket << Victim;
+ _worldPacket << int32(InterruptedSpellID);
+ _worldPacket << int32(SpellID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::CombatLog::SpellEnergizeLog::Write()
+{
+ _worldPacket << CasterGUID;
+ _worldPacket << TargetGUID;
+
+ _worldPacket << int32(SpellID);
+ _worldPacket << int32(Type);
+ _worldPacket << int32(Amount);
+
+ _worldPacket.WriteBit(LogData.is_initialized());
+ _worldPacket.FlushBits();
+ if (LogData)
+ _worldPacket << *LogData;
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::CombatLog::SpellInstakillLog::Write()
+{
+ _worldPacket << Target;
+ _worldPacket << Caster;
+ _worldPacket << int32(SpellID);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/CombatLogPackets.h b/src/server/game/Server/Packets/CombatLogPackets.h
index c74e8112698..1962bc2c2fc 100644
--- a/src/server/game/Server/Packets/CombatLogPackets.h
+++ b/src/server/game/Server/Packets/CombatLogPackets.h
@@ -91,7 +91,6 @@ namespace WorldPackets
class SpellHealLog final : public ServerPacket
{
public:
-
SpellHealLog() : ServerPacket(SMSG_SPELL_HEAL_LOG, 16 + 16 + 4 * 4 + 1) { }
WorldPacket const* Write() override;
@@ -108,6 +107,79 @@ namespace WorldPackets
Optional<float> CritRollNeeded;
Optional<Spells::SpellCastLogData> LogData; /// @todo: find the correct way where to use it, in sniff always false
};
+
+ class SpellPeriodicAuraLog final : public ServerPacket
+ {
+ public:
+ struct PeriodicalAuraLogEffectDebugInfo
+ {
+ float CritRollMade = 0.0f;
+ float CritRollNeeded = 0.0f;
+ };
+
+ struct SpellLogEffect
+ {
+ int32 Effect = 0;
+ int32 Amount = 0;
+ int32 OverHealOrKill = 0;
+ int32 SchoolMaskOrPower = 0;
+ int32 AbsorbedOrAmplitude = 0;
+ int32 Resisted = 0;
+ bool Crit = false;
+ bool Multistrike = false;
+ Optional<PeriodicalAuraLogEffectDebugInfo> DebugInfo;
+ };
+
+ SpellPeriodicAuraLog() : ServerPacket(SMSG_SPELL_PERIODIC_AURA_LOG, 16 + 16 + 4 + 4 + 1) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid TargetGUID;
+ ObjectGuid CasterGUID;
+ int32 SpellID = 0;
+ std::vector<SpellLogEffect> Effects;
+ Optional<Spells::SpellCastLogData> LogData; /// @todo: find the correct way where to use it, in sniff always false
+ };
+
+ class SpellInterruptLog final : public ServerPacket
+ {
+ public:
+ SpellInterruptLog() : ServerPacket(SMSG_SPELL_INTERRUPT_LOG, 16 + 16 + 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Caster;
+ ObjectGuid Victim;
+ int32 InterruptedSpellID = 0;
+ int32 SpellID = 0;
+ };
+
+ class SpellEnergizeLog final : public ServerPacket
+ {
+ public:
+ SpellEnergizeLog() : ServerPacket(SMSG_SPELL_ENERGIZE_LOG, 16 + 16 + 4 + 4 + 4 + 1) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid CasterGUID;
+ ObjectGuid TargetGUID;
+ int32 SpellID = 0;
+ int32 Type = 0;
+ int32 Amount = 0;
+ Optional<Spells::SpellCastLogData> LogData; /// @todo: find the correct way where to use it, in sniff always false
+ };
+
+ class SpellInstakillLog final : public ServerPacket
+ {
+ public:
+ SpellInstakillLog() : ServerPacket(SMSG_SPELL_INSTAKILL_LOG, 16 + 16 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Target;
+ ObjectGuid Caster;
+ int32 SpellID;
+ };
}
}
diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp
index e095e951e36..d47f2275ee6 100644
--- a/src/server/game/Server/Packets/CombatPackets.cpp
+++ b/src/server/game/Server/Packets/CombatPackets.cpp
@@ -198,3 +198,12 @@ WorldPacket const* WorldPackets::Combat::ThreatClear::Write()
_worldPacket << UnitGUID;
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Combat::PvPCredit::Write()
+{
+ _worldPacket << int32(Honor);
+ _worldPacket << Target;
+ _worldPacket << int32(Rank);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h
index 0cab58044eb..deeb98fe335 100644
--- a/src/server/game/Server/Packets/CombatPackets.h
+++ b/src/server/game/Server/Packets/CombatPackets.h
@@ -246,6 +246,18 @@ namespace WorldPackets
ObjectGuid UnitGUID;
};
+
+ class PvPCredit final : public ServerPacket
+ {
+ public:
+ PvPCredit() : ServerPacket(SMSG_PVP_CREDIT, 4 + 16 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Target;
+ int32 Honor = 0;
+ int32 Rank = 0;
+ };
}
}
diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp
index 0dc948f5170..3fe30d2b8e7 100644
--- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp
+++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp
@@ -40,9 +40,10 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write()
_worldPacket.WriteBits(equipSet->SetName.length(), 8);
_worldPacket.WriteBits(equipSet->SetIcon.length(), 9);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(equipSet->SetName);
_worldPacket.WriteString(equipSet->SetIcon);
- _worldPacket.FlushBits();
}
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.h b/src/server/game/Server/Packets/EquipmentSetPackets.h
index a26eee383ae..a7936cc1b79 100644
--- a/src/server/game/Server/Packets/EquipmentSetPackets.h
+++ b/src/server/game/Server/Packets/EquipmentSetPackets.h
@@ -63,7 +63,7 @@ namespace WorldPackets
void Read() override;
- uint64 ID;
+ uint64 ID = 0;
};
class UseEquipmentSet final : public ClientPacket
diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp
new file mode 100644
index 00000000000..88374e7ce62
--- /dev/null
+++ b/src/server/game/Server/Packets/GarrisonPackets.cpp
@@ -0,0 +1,247 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "GarrisonPackets.h"
+
+WorldPacket const* WorldPackets::Garrison::GarrisonCreateResult::Write()
+{
+ _worldPacket << uint32(Result);
+ _worldPacket << uint32(GarrSiteLevelID);
+
+ return &_worldPacket;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonPlotInfo& plotInfo)
+{
+ data << uint32(plotInfo.GarrPlotInstanceID);
+ data << plotInfo.PlotPos.PositionXYZOStream();
+ data << uint32(plotInfo.PlotType);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonBuildingInfo const& buildingInfo)
+{
+ data << uint32(buildingInfo.GarrPlotInstanceID);
+ data << uint32(buildingInfo.GarrBuildingID);
+ data << uint32(buildingInfo.TimeBuilt);
+ data << uint32(buildingInfo.CurrentGarSpecID);
+ data << uint32(buildingInfo.TimeSpecCooldown);
+ data.WriteBit(buildingInfo.Active);
+ data.FlushBits();
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonFollower const& follower)
+{
+ data << uint64(follower.DbID);
+ data << uint32(follower.GarrFollowerID);
+ data << uint32(follower.Quality);
+ data << uint32(follower.FollowerLevel);
+ data << uint32(follower.ItemLevelWeapon);
+ data << uint32(follower.ItemLevelArmor);
+ data << uint32(follower.Xp);
+ data << uint32(follower.CurrentBuildingID);
+ data << uint32(follower.CurrentMissionID);
+ data << uint32(follower.AbilityID.size());
+ data << uint32(follower.FollowerStatus);
+ for (GarrAbilityEntry const* ability : follower.AbilityID)
+ data << uint32(ability->ID);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonMission const& mission)
+{
+ data << uint64(mission.DbID);
+ data << uint32(mission.MissionRecID);
+ data << uint32(mission.OfferTime);
+ data << uint32(mission.OfferDuration);
+ data << uint32(mission.StartTime);
+ data << uint32(mission.TravelDuration);
+ data << uint32(mission.MissionDuration);
+ data << uint32(mission.MissionState);
+
+ return data;
+}
+
+WorldPacket const* WorldPackets::Garrison::GetGarrisonInfoResult::Write()
+{
+ _worldPacket.reserve(4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 +
+ Buildings.size() * sizeof(GarrisonBuildingInfo) +
+ Plots.size() * sizeof(GarrisonPlotInfo) +
+ Followers.size() * (sizeof(GarrisonFollower) + 5 * 4) +
+ Missions.size() * sizeof(GarrisonMission) +
+ ArchivedMissions.size() * 4);
+
+ _worldPacket << int32(GarrSiteID);
+ _worldPacket << int32(GarrSiteLevelID);
+ _worldPacket << int32(FactionIndex);
+ _worldPacket << uint32(Buildings.size());
+ _worldPacket << uint32(Plots.size());
+ _worldPacket << uint32(Followers.size());
+ _worldPacket << uint32(Missions.size());
+ _worldPacket << uint32(ArchivedMissions.size());
+ _worldPacket << int32(NumFollowerActivationsRemaining);
+
+ for (GarrisonBuildingInfo const* building : Buildings)
+ _worldPacket << *building;
+
+ for (GarrisonPlotInfo* plot : Plots)
+ _worldPacket << *plot;
+
+ for (GarrisonFollower const* follower : Followers)
+ _worldPacket << *follower;
+
+ for (GarrisonMission const* mission : Missions)
+ _worldPacket << *mission;
+
+ if (!ArchivedMissions.empty())
+ _worldPacket.append(ArchivedMissions.data(), ArchivedMissions.size());
+
+ return &_worldPacket;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonRemoteBuildingInfo const& building)
+{
+ data << uint32(building.GarrPlotInstanceID);
+ data << uint32(building.GarrBuildingID);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonRemoteSiteInfo const& site)
+{
+ data << uint32(site.GarrSiteLevelID);
+ data << uint32(site.Buildings.size());
+ for (WorldPackets::Garrison::GarrisonRemoteBuildingInfo const& building : site.Buildings)
+ data << building;
+
+ return data;
+}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonRemoteInfo::Write()
+{
+ _worldPacket << uint32(Sites.size());
+ for (GarrisonRemoteSiteInfo const& site : Sites)
+ _worldPacket << site;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Garrison::GarrisonPurchaseBuilding::Read()
+{
+ _worldPacket >> NpcGUID;
+ _worldPacket >> PlotInstanceID;
+ _worldPacket >> BuildingID;
+}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonPlaceBuildingResult::Write()
+{
+ _worldPacket << uint32(Result);
+ _worldPacket << BuildingInfo;
+ _worldPacket.WriteBit(PlayActivationCinematic);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Garrison::GarrisonCancelConstruction::Read()
+{
+ _worldPacket >> NpcGUID;
+ _worldPacket >> PlotInstanceID;
+}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonBuildingRemoved::Write()
+{
+ _worldPacket << uint32(Result);
+ _worldPacket << uint32(GarrPlotInstanceID);
+ _worldPacket << uint32(GarrBuildingID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonLearnBlueprintResult::Write()
+{
+ _worldPacket << uint32(Result);
+ _worldPacket << uint32(BuildingID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonUnlearnBlueprintResult::Write()
+{
+ _worldPacket << uint32(Result);
+ _worldPacket << uint32(BuildingID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonRequestBlueprintAndSpecializationDataResult::Write()
+{
+ _worldPacket << uint32(BlueprintsKnown ? BlueprintsKnown->size() : 0);
+ _worldPacket << uint32(SpecializationsKnown ? SpecializationsKnown->size() : 0);
+ if (BlueprintsKnown)
+ for (uint32 blueprint : *BlueprintsKnown)
+ _worldPacket << uint32(blueprint);
+
+ if (SpecializationsKnown)
+ for (uint32 specialization : *SpecializationsKnown)
+ _worldPacket << uint32(specialization);
+
+ return &_worldPacket;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonBuildingLandmark& landmark)
+{
+ data << uint32(landmark.GarrBuildingPlotInstID);
+ data << landmark.Pos.PositionXYZStream();
+
+ return data;
+}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonBuildingLandmarks::Write()
+{
+ _worldPacket << uint32(Landmarks.size());
+ for (GarrisonBuildingLandmark& landmark : Landmarks)
+ _worldPacket << landmark;
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonPlotPlaced::Write()
+{
+ _worldPacket << *PlotInfo;
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonPlotRemoved::Write()
+{
+ _worldPacket << uint32(GarrPlotInstanceID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonAddFollowerResult::Write()
+{
+ _worldPacket << uint32(Result);
+ _worldPacket << Follower;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h
new file mode 100644
index 00000000000..1bb04c7ba95
--- /dev/null
+++ b/src/server/game/Server/Packets/GarrisonPackets.h
@@ -0,0 +1,285 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GarrisonPackets_h__
+#define GarrisonPackets_h__
+
+#include "Packet.h"
+#include "ObjectGuid.h"
+#include "Position.h"
+#include "PacketUtilities.h"
+#include "DB2Structure.h"
+
+namespace WorldPackets
+{
+ namespace Garrison
+ {
+ class GarrisonCreateResult final : public ServerPacket
+ {
+ public:
+ GarrisonCreateResult() : ServerPacket(SMSG_GARRISON_CREATE_RESULT, 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 GarrSiteLevelID = 0;
+ uint32 Result = 0;
+ };
+
+ class GetGarrisonInfo final : public ClientPacket
+ {
+ public:
+ GetGarrisonInfo(WorldPacket&& packet) : ClientPacket(CMSG_GET_GARRISON_INFO, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ struct GarrisonPlotInfo
+ {
+ uint32 GarrPlotInstanceID = 0;
+ Position PlotPos;
+ uint32 PlotType = 0;
+ };
+
+ struct GarrisonBuildingInfo
+ {
+ uint32 GarrPlotInstanceID = 0;
+ uint32 GarrBuildingID = 0;
+ time_t TimeBuilt = time_t(0);
+ uint32 CurrentGarSpecID = 0;
+ time_t TimeSpecCooldown = time_t(2288912640); // 06/07/1906 18:35:44 - another in the series of magic blizz dates
+ bool Active = false;
+ };
+
+ struct GarrisonFollower
+ {
+ uint64 DbID = 0;
+ uint32 GarrFollowerID = 0;
+ uint32 Quality = 0;
+ uint32 FollowerLevel = 0;
+ uint32 ItemLevelWeapon = 0;
+ uint32 ItemLevelArmor = 0;
+ uint32 Xp = 0;
+ uint32 CurrentBuildingID = 0;
+ uint32 CurrentMissionID = 0;
+ std::list<GarrAbilityEntry const*> AbilityID;
+ uint32 FollowerStatus;
+ };
+
+ struct GarrisonMission
+ {
+ uint64 DbID = 0;
+ uint32 MissionRecID = 0;
+ time_t OfferTime = time_t(0);
+ uint32 OfferDuration = 0;
+ time_t StartTime = time_t(2288912640);
+ uint32 TravelDuration = 0;
+ uint32 MissionDuration = 0;
+ uint32 MissionState = 0;
+ };
+
+ class GetGarrisonInfoResult final : public ServerPacket
+ {
+ public:
+ GetGarrisonInfoResult() : ServerPacket(SMSG_GET_GARRISON_INFO_RESULT) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 GarrSiteID = 0;
+ uint32 GarrSiteLevelID = 0;
+ uint32 FactionIndex = 0;
+ uint32 NumFollowerActivationsRemaining = 0;
+ std::vector<GarrisonPlotInfo*> Plots;
+ std::vector<GarrisonBuildingInfo const*> Buildings;
+ std::vector<GarrisonFollower const*> Followers;
+ std::vector<GarrisonMission const*> Missions;
+ std::vector<int32> ArchivedMissions;
+ };
+
+ struct GarrisonRemoteBuildingInfo
+ {
+ GarrisonRemoteBuildingInfo() : GarrPlotInstanceID(0), GarrBuildingID(0) { }
+ GarrisonRemoteBuildingInfo(uint32 plotInstanceId, uint32 buildingId) : GarrPlotInstanceID(plotInstanceId), GarrBuildingID(buildingId) { }
+
+ uint32 GarrPlotInstanceID;
+ uint32 GarrBuildingID;
+ };
+
+ struct GarrisonRemoteSiteInfo
+ {
+ uint32 GarrSiteLevelID = 0;
+ std::vector<GarrisonRemoteBuildingInfo> Buildings;
+ };
+
+ class GarrisonRemoteInfo final : public ServerPacket
+ {
+ public:
+ GarrisonRemoteInfo() : ServerPacket(SMSG_GARRISON_REMOTE_INFO) { }
+
+ WorldPacket const* Write() override;
+
+ std::vector<GarrisonRemoteSiteInfo> Sites;
+ };
+
+ class GarrisonPurchaseBuilding final : public ClientPacket
+ {
+ public:
+ GarrisonPurchaseBuilding(WorldPacket&& packet) : ClientPacket(CMSG_GARRISON_PURCHASE_BUILDING, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid NpcGUID;
+ uint32 BuildingID = 0;
+ uint32 PlotInstanceID = 0;
+ };
+
+ class GarrisonPlaceBuildingResult final : public ServerPacket
+ {
+ public:
+ GarrisonPlaceBuildingResult() : ServerPacket(SMSG_GARRISON_PLACE_BUILDING_RESULT) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 Result = 0;
+ GarrisonBuildingInfo BuildingInfo;
+ bool PlayActivationCinematic = false;
+ };
+
+ class GarrisonCancelConstruction final : public ClientPacket
+ {
+ public:
+ GarrisonCancelConstruction(WorldPacket&& packet) : ClientPacket(CMSG_GARRISON_CANCEL_CONSTRUCTION, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid NpcGUID;
+ uint32 PlotInstanceID = 0;
+ };
+
+ class GarrisonBuildingRemoved final : public ServerPacket
+ {
+ public:
+ GarrisonBuildingRemoved() : ServerPacket(SMSG_GARRISON_BUILDING_REMOVED, 4 + 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 Result = 0;
+ uint32 GarrPlotInstanceID = 0;
+ uint32 GarrBuildingID = 0;
+ };
+
+ class GarrisonLearnBlueprintResult final : public ServerPacket
+ {
+ public:
+ GarrisonLearnBlueprintResult() : ServerPacket(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 BuildingID = 0;
+ uint32 Result = 0;
+ };
+
+ class GarrisonUnlearnBlueprintResult final : public ServerPacket
+ {
+ public:
+ GarrisonUnlearnBlueprintResult() : ServerPacket(SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT, 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 BuildingID = 0;
+ uint32 Result = 0;
+ };
+
+ class GarrisonRequestBlueprintAndSpecializationData final : public ClientPacket
+ {
+ public:
+ GarrisonRequestBlueprintAndSpecializationData(WorldPacket&& packet) : ClientPacket(CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ class GarrisonRequestBlueprintAndSpecializationDataResult final : public ServerPacket
+ {
+ public:
+ GarrisonRequestBlueprintAndSpecializationDataResult() : ServerPacket(SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT, 400) { }
+
+ WorldPacket const* Write() override;
+
+ std::unordered_set<uint32> const* SpecializationsKnown = nullptr;
+ std::unordered_set<uint32> const* BlueprintsKnown = nullptr;
+ };
+
+ class GarrisonGetBuildingLandmarks final : public ClientPacket
+ {
+ public:
+ GarrisonGetBuildingLandmarks(WorldPacket&& packet) : ClientPacket(CMSG_GARRISON_GET_BUILDING_LANDMARKS, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ struct GarrisonBuildingLandmark
+ {
+ GarrisonBuildingLandmark() : GarrBuildingPlotInstID(0), Pos() { }
+ GarrisonBuildingLandmark(uint32 buildingPlotInstId, Position const& pos) : GarrBuildingPlotInstID(buildingPlotInstId), Pos(pos) { }
+
+ uint32 GarrBuildingPlotInstID;
+ Position Pos;
+ };
+
+ class GarrisonBuildingLandmarks final : public ServerPacket
+ {
+ public:
+ GarrisonBuildingLandmarks() : ServerPacket(SMSG_GARRISON_BUILDING_LANDMARKS) { }
+
+ WorldPacket const* Write() override;
+
+ std::vector<GarrisonBuildingLandmark> Landmarks;
+ };
+
+ class GarrisonPlotPlaced final : public ServerPacket
+ {
+ public:
+ GarrisonPlotPlaced() : ServerPacket(SMSG_GARRISON_PLOT_PLACED) { }
+
+ WorldPacket const* Write() override;
+
+ GarrisonPlotInfo* PlotInfo = nullptr;
+ };
+
+ class GarrisonPlotRemoved final : public ServerPacket
+ {
+ public:
+ GarrisonPlotRemoved() : ServerPacket(SMSG_GARRISON_PLOT_REMOVED, 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 GarrPlotInstanceID = 0;
+ };
+
+ class GarrisonAddFollowerResult final : public ServerPacket
+ {
+ public:
+ GarrisonAddFollowerResult() : ServerPacket(SMSG_GARRISON_ADD_FOLLOWER_RESULT, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 5 * 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ GarrisonFollower Follower;
+ uint32 Result = 0;
+ };
+ }
+}
+
+#endif // GarrisonPackets_h__
diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp
index d0383a82160..34ea92ce27c 100644
--- a/src/server/game/Server/Packets/GuildPackets.cpp
+++ b/src/server/game/Server/Packets/GuildPackets.cpp
@@ -30,6 +30,7 @@ WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write()
{
_worldPacket << GuildGuid;
_worldPacket.WriteBit(Info.is_initialized());
+ _worldPacket.FlushBits();
if (Info)
{
@@ -48,13 +49,16 @@ WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write()
_worldPacket << uint32(rank.RankOrder);
_worldPacket.WriteBits(rank.RankName.size(), 7);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(rank.RankName);
}
_worldPacket.WriteBits(Info->GuildName.size(), 7);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(Info->GuildName);
}
- _worldPacket.FlushBits();
return &_worldPacket;
}
@@ -69,7 +73,6 @@ WorldPacket const* WorldPackets::Guild::GuildRoster::Write()
for (GuildRosterMemberData const& member : MemberData)
_worldPacket << member;
- _worldPacket.ResetBitPos();
_worldPacket.WriteBits(WelcomeText.length(), 10);
_worldPacket.WriteBits(InfoText.length(), 10);
_worldPacket.FlushBits();
@@ -798,10 +801,10 @@ WorldPacket const* WorldPackets::Guild::GuildChallengeUpdate::Write()
void WorldPackets::Guild::SaveGuildEmblem::Read()
{
_worldPacket >> Vendor;
- _worldPacket >> BStyle;
_worldPacket >> EStyle;
- _worldPacket >> BColor;
_worldPacket >> EColor;
+ _worldPacket >> BStyle;
+ _worldPacket >> BColor;
_worldPacket >> Bg;
}
diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp
new file mode 100644
index 00000000000..7cf46454533
--- /dev/null
+++ b/src/server/game/Server/Packets/InstancePackets.cpp
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "InstancePackets.h"
+
+WorldPacket const* WorldPackets::Instance::UpdateLastInstance::Write()
+{
+ _worldPacket << uint32(MapID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Instance::UpdateInstanceOwnership::Write()
+{
+ _worldPacket << int32(IOwnInstance);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Instance::InstanceInfo::Write()
+{
+ _worldPacket << int32(LockList.size());
+
+ for (InstanceLockInfos const& lockInfos : LockList)
+ _worldPacket << lockInfos;
+
+ return &_worldPacket;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInfos const& lockInfos)
+{
+ data << lockInfos.MapID;
+ data << lockInfos.DifficultyID;
+ data << lockInfos.InstanceID;
+ data << lockInfos.TimeRemaining;
+ data << lockInfos.CompletedMask;
+
+ data.WriteBit(lockInfos.Locked);
+ data.WriteBit(lockInfos.Extended);
+
+ data.FlushBits();
+
+ return data;
+}
+
+WorldPacket const* WorldPackets::Instance::InstanceReset::Write()
+{
+ _worldPacket << uint32(MapID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Instance::InstanceResetFailed::Write()
+{
+ _worldPacket << uint32(MapID);
+ _worldPacket.WriteBits(ResetFailedReason, 2);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h
new file mode 100644
index 00000000000..bfc14dddc5b
--- /dev/null
+++ b/src/server/game/Server/Packets/InstancePackets.h
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef InstancePackets_h__
+#define InstancePackets_h__
+
+#include "Packet.h"
+#include "ObjectGuid.h"
+
+namespace WorldPackets
+{
+ namespace Instance
+ {
+ class UpdateLastInstance final : public ServerPacket
+ {
+ public:
+ UpdateLastInstance() : ServerPacket(SMSG_UPDATE_LAST_INSTANCE, 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 MapID = 0;
+ };
+
+ // This packet is no longer sent - it is only here for documentation purposes
+ class UpdateInstanceOwnership final : public ServerPacket
+ {
+ public:
+ UpdateInstanceOwnership() : ServerPacket(SMSG_UPDATE_INSTANCE_OWNERSHIP, 4) { }
+
+ WorldPacket const* Write() override;
+
+ int32 IOwnInstance = 0; // Used to control whether "Reset all instances" button appears on the UI - Script_CanShowResetInstances()
+ // but it has been deperecated in favor of simply checking group leader, being inside an instance or using dungeon finder
+ };
+
+ struct InstanceLockInfos
+ {
+ uint64 InstanceID = 0u;
+ uint32 MapID = 0u;
+ uint32 DifficultyID = 0u;
+ int32 TimeRemaining = 0;
+ uint32 CompletedMask = 0u;
+
+ bool Locked = false;
+ bool Extended = false;
+ };
+
+ class InstanceInfo final : public ServerPacket
+ {
+ public:
+ InstanceInfo() : ServerPacket(SMSG_INSTANCE_INFO, 4) { }
+
+ WorldPacket const* Write() override;
+
+ std::vector<InstanceLockInfos> LockList;
+ };
+
+ class ResetInstances final : public ClientPacket
+ {
+ public:
+ ResetInstances(WorldPacket&& packet) : ClientPacket(CMSG_RESET_INSTANCES, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ class InstanceReset final : public ServerPacket
+ {
+ public:
+ InstanceReset() : ServerPacket(SMSG_INSTANCE_RESET, 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 MapID = 0;
+ };
+
+ class InstanceResetFailed final : public ServerPacket
+ {
+ public:
+ InstanceResetFailed() : ServerPacket(SMSG_INSTANCE_RESET_FAILED, 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 MapID = 0;
+ uint8 ResetFailedReason = 0;
+ };
+
+ class ResetFailedNotify final : public ServerPacket
+ {
+ public:
+ ResetFailedNotify() : ServerPacket(SMSG_RESET_FAILED_NOTIFY, 0) { }
+
+ WorldPacket const* Write() override { return &_worldPacket; }
+ };
+ }
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInfos const& lockInfos);
+
+#endif // InstancePackets_h__
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp
index 3feea2cdc98..8b0bec535b3 100644
--- a/src/server/game/Server/Packets/ItemPackets.cpp
+++ b/src/server/game/Server/Packets/ItemPackets.cpp
@@ -369,3 +369,26 @@ void WorldPackets::Item::WrapItem::Read()
{
_worldPacket >> Inv;
}
+
+void WorldPackets::Item::CancelTempEnchantment::Read()
+{
+ _worldPacket >> Slot;
+}
+
+WorldPacket const* WorldPackets::Item::ItemCooldown::Write()
+{
+ _worldPacket << ItemGuid;
+ _worldPacket << uint32(SpellID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Item::ItemEnchantTimeUpdate::Write()
+{
+ _worldPacket << ItemGuid;
+ _worldPacket << uint32(DurationLeft);
+ _worldPacket << uint32(Slot);
+ _worldPacket << OwnerGuid;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h
index d37df357513..e73f42bcaf2 100644
--- a/src/server/game/Server/Packets/ItemPackets.h
+++ b/src/server/game/Server/Packets/ItemPackets.h
@@ -353,6 +353,40 @@ namespace WorldPackets
InvUpdate Inv;
};
+ class CancelTempEnchantment final : public ClientPacket
+ {
+ public:
+ CancelTempEnchantment(WorldPacket&& packet) : ClientPacket(CMSG_CANCEL_TEMP_ENCHANTMENT, std::move(packet)) { }
+
+ void Read() override;
+
+ int32 Slot = 0;
+ };
+
+ class ItemCooldown final : public ServerPacket
+ {
+ public:
+ ItemCooldown() : ServerPacket(SMSG_ITEM_COOLDOWN, 20) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid ItemGuid;
+ uint32 SpellID = 0;
+ };
+
+ class ItemEnchantTimeUpdate final : public ServerPacket
+ {
+ public:
+ ItemEnchantTimeUpdate() : ServerPacket(SMSG_ITEM_ENCHANT_TIME_UPDATE, 40) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid OwnerGuid;
+ ObjectGuid ItemGuid;
+ uint32 DurationLeft = 0;
+ uint32 Slot = 0;
+ };
+
ByteBuffer& operator>>(ByteBuffer& data, InvUpdate& invUpdate);
}
}
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index 40dde52700b..bbd3fcb2ba7 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -439,3 +439,84 @@ WorldPacket const* WorldPackets::Misc::PlaySound::Write()
return &_worldPacket;
}
+
+void WorldPackets::Misc::FarSight::Read()
+{
+ Enable = _worldPacket.ReadBit();
+}
+
+WorldPacket const* WorldPackets::Misc::Dismount::Write()
+{
+ _worldPacket << Guid;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Misc::SaveCUFProfiles::Read()
+{
+ uint32 count;
+ _worldPacket >> count;
+
+ for (uint8 i = 0; i < count && i < MAX_CUF_PROFILES; i++)
+ {
+ std::unique_ptr<CUFProfile> cufProfile = Trinity::make_unique<CUFProfile>();
+
+ uint8 strLen = _worldPacket.ReadBits(7);
+
+ // Bool Options
+ for (uint8 option = 0; option < CUF_BOOL_OPTIONS_COUNT; option++)
+ cufProfile->BoolOptions.set(option, _worldPacket.ReadBit());
+
+ // Other Options
+ _worldPacket >> cufProfile->FrameHeight;
+ _worldPacket >> cufProfile->FrameWidth;
+
+ _worldPacket >> cufProfile->SortBy;
+ _worldPacket >> cufProfile->HealthText;
+
+ _worldPacket >> cufProfile->TopPoint;
+ _worldPacket >> cufProfile->BottomPoint;
+ _worldPacket >> cufProfile->LeftPoint;
+
+ _worldPacket >> cufProfile->TopOffset;
+ _worldPacket >> cufProfile->BottomOffset;
+ _worldPacket >> cufProfile->LeftOffset;
+
+ cufProfile->ProfileName = _worldPacket.ReadString(strLen);
+
+ CUFProfiles.push_back(std::move(cufProfile));
+ }
+}
+
+WorldPacket const* WorldPackets::Misc::LoadCUFProfiles::Write()
+{
+ _worldPacket << uint32(CUFProfiles.size());
+
+ for (CUFProfile const* cufProfile : CUFProfiles)
+ {
+ _worldPacket.WriteBits(cufProfile->ProfileName.size(), 7);
+
+ // Bool Options
+ for (uint8 option = 0; option < CUF_BOOL_OPTIONS_COUNT; option++)
+ _worldPacket.WriteBit(cufProfile->BoolOptions[option]);
+
+ // Other Options
+ _worldPacket << cufProfile->FrameHeight;
+ _worldPacket << cufProfile->FrameWidth;
+
+ _worldPacket << cufProfile->SortBy;
+ _worldPacket << cufProfile->HealthText;
+
+ _worldPacket << cufProfile->TopPoint;
+ _worldPacket << cufProfile->BottomPoint;
+ _worldPacket << cufProfile->LeftPoint;
+
+ _worldPacket << cufProfile->TopOffset;
+ _worldPacket << cufProfile->BottomOffset;
+ _worldPacket << cufProfile->LeftOffset;
+
+ _worldPacket.WriteString(cufProfile->ProfileName);
+ }
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index 5673680afe6..93bac0d208b 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -24,6 +24,7 @@
#include "G3D/Vector3.h"
#include "Object.h"
#include "Unit.h"
+#include "Player.h"
#include "Weather.h"
namespace WorldPackets
@@ -622,6 +623,46 @@ namespace WorldPackets
void Read() override { }
};
+
+ class FarSight final : public ClientPacket
+ {
+ public:
+ FarSight(WorldPacket&& packet) : ClientPacket(CMSG_FAR_SIGHT, std::move(packet)) { }
+
+ void Read() override;
+
+ bool Enable = false;
+ };
+
+ class Dismount final : public ServerPacket
+ {
+ public:
+ Dismount() : ServerPacket(SMSG_DISMOUNT, 16) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Guid;
+ };
+
+ class SaveCUFProfiles final : public ClientPacket
+ {
+ public:
+ SaveCUFProfiles(WorldPacket&& packet) : ClientPacket(CMSG_SAVE_CUF_PROFILES, std::move(packet)) { }
+
+ void Read() override;
+
+ std::vector<std::unique_ptr<CUFProfile>> CUFProfiles;
+ };
+
+ class LoadCUFProfiles final : public ServerPacket
+ {
+ public:
+ LoadCUFProfiles() : ServerPacket(SMSG_LOAD_CUF_PROFILES, 20) { }
+
+ WorldPacket const* Write() override;
+
+ std::vector<CUFProfile const*> CUFProfiles;
+ };
}
}
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index f0db56302f6..14fb2ecb33c 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -198,9 +198,9 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MonsterSplineFi
data << monsterSplineFilter.BaseSpeed;
data << monsterSplineFilter.StartOffset;
data << monsterSplineFilter.DistToPrevFilterKey;
+ data << monsterSplineFilter.AddedToStart;
for (WorldPackets::Movement::MonsterSplineFilterKey const& filterKey : monsterSplineFilter.FilterKeys)
data << filterKey;
- data << monsterSplineFilter.AddedToStart;
data.WriteBits(monsterSplineFilter.FilterFlags, 2);
data.FlushBits();
diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h
index 6803bdf3b95..d4fb41cf330 100644
--- a/src/server/game/Server/Packets/MovementPackets.h
+++ b/src/server/game/Server/Packets/MovementPackets.h
@@ -398,7 +398,7 @@ namespace WorldPackets
void Read() override;
ObjectGuid MoverGUID;
- uint32 TimeSkipped;
+ uint32 TimeSkipped = 0;
};
}
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
index 4e44f07fd01..a6c74459bf5 100644
--- a/src/server/game/Server/Packets/NPCPackets.cpp
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -175,3 +175,19 @@ WorldPacket const* WorldPackets::NPC::SpiritHealerConfirm::Write()
return &_worldPacket;
}
+
+void WorldPackets::NPC::TrainerBuySpell::Read()
+{
+ _worldPacket >> TrainerGUID;
+ _worldPacket >> TrainerID;
+ _worldPacket >> SpellID;
+}
+
+WorldPacket const* WorldPackets::NPC::TrainerBuyFailed::Write()
+{
+ _worldPacket << TrainerGUID;
+ _worldPacket << SpellID;
+ _worldPacket << TrainerFailedReason;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index ec23c51a206..990ef897986 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -216,6 +216,30 @@ namespace WorldPackets
ObjectGuid Unit;
};
+
+ class TrainerBuySpell final : public ClientPacket
+ {
+ public:
+ TrainerBuySpell(WorldPacket&& packet) : ClientPacket(CMSG_TRAINER_BUY_SPELL, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid TrainerGUID;
+ int32 TrainerID = 0;
+ int32 SpellID = 0;
+ };
+
+ class TrainerBuyFailed final : public ServerPacket
+ {
+ public:
+ TrainerBuyFailed() : ServerPacket(SMSG_TRAINER_BUY_FAILED, 16 + 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid TrainerGUID;
+ int32 SpellID = 0;
+ int32 TrainerFailedReason = 0;
+ };
}
}
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
new file mode 100644
index 00000000000..f5cbfd7f5c2
--- /dev/null
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -0,0 +1,715 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "PartyPackets.h"
+
+#include "Player.h"
+#include "Pet.h"
+#include "Vehicle.h"
+#include "SpellAuras.h"
+#include "SpellAuraEffects.h"
+#include "ObjectMgr.h"
+
+WorldPacket const* WorldPackets::Party::PartyCommandResult::Write()
+{
+ _worldPacket.WriteBits(Name.size(), 9);
+
+ _worldPacket.WriteBits(Command, 4);
+ _worldPacket.WriteBits(Result, 6);
+
+ _worldPacket << ResultData;
+ _worldPacket << ResultGUID;
+ _worldPacket.WriteString(Name);
+
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::PartyInviteClient::Read()
+{
+ uint32 targetNameLen, targetRealmLen;
+
+ _worldPacket >> PartyIndex;
+ _worldPacket >> ProposedRoles;
+ _worldPacket >> TargetGUID;
+ _worldPacket >> TargetCfgRealmID;
+
+ targetNameLen = _worldPacket.ReadBits(9);
+ targetRealmLen = _worldPacket.ReadBits(9);
+
+ TargetName = _worldPacket.ReadString(targetNameLen);
+ TargetRealm = _worldPacket.ReadString(targetRealmLen);
+}
+
+WorldPacket const* WorldPackets::Party::PartyInvite::Write()
+{
+ // Order guessed
+ _worldPacket.WriteBit(CanAccept);
+ _worldPacket.WriteBit(MightCRZYou);
+ _worldPacket.WriteBit(MustBeBNetFriend);
+ _worldPacket.WriteBit(AllowMultipleRoles);
+ _worldPacket.WriteBit(IsXRealm);
+
+ _worldPacket.WriteBits(InviterName.size(), 6);
+
+ _worldPacket << InviterGUID;
+ _worldPacket << InviterBNetAccountId;
+
+ _worldPacket << InviterVirtualRealmAddress;
+ _worldPacket << Unk1;
+
+ _worldPacket.WriteBit(IsLocal);
+ _worldPacket.WriteBit(Unk2);
+
+ _worldPacket.WriteBits(InviterRealmNameActual.size(), 8);
+ _worldPacket.WriteBits(InviterRealmNameNormalized.size(), 8);
+ _worldPacket.WriteString(InviterRealmNameActual);
+ _worldPacket.WriteString(InviterRealmNameNormalized);
+
+ _worldPacket << ProposedRoles;
+ _worldPacket << int32(LfgSlots.size());
+ _worldPacket << LfgCompletedMask;
+
+ _worldPacket.WriteString(InviterName);
+
+ for (int32 LfgSlot : LfgSlots)
+ _worldPacket << LfgSlot;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::PartyInvite::Initialize(Player* const inviter, int32 proposedRoles, bool canAccept)
+{
+ CanAccept = canAccept;
+
+ InviterName = inviter->GetName();
+ InviterGUID = inviter->GetGUID();
+ InviterBNetAccountId = inviter->GetSession()->GetAccountGUID();
+
+ ProposedRoles = proposedRoles;
+
+ std::string realmName = sObjectMgr->GetRealmName(realmHandle.Index);
+
+ InviterVirtualRealmAddress = GetVirtualRealmAddress();
+ InviterRealmNameActual = realmName;
+ InviterRealmNameNormalized = realmName;
+}
+
+void WorldPackets::Party::PartyInviteResponse::Read()
+{
+ _worldPacket >> PartyIndex;
+
+ Accept = _worldPacket.ReadBit();
+
+ bool hasRolesDesired = _worldPacket.ReadBit();
+ if (hasRolesDesired)
+ {
+ RolesDesired = boost::in_place();
+ _worldPacket >> *RolesDesired;
+ }
+}
+
+void WorldPackets::Party::PartyUninvite::Read()
+{
+ _worldPacket >> PartyIndex;
+ _worldPacket >> TargetGUID;
+
+ uint8 reasonLen = _worldPacket.ReadBits(8);
+ Reason = _worldPacket.ReadString(reasonLen);
+}
+
+WorldPacket const* WorldPackets::Party::GroupDecline::Write()
+{
+ _worldPacket.WriteBits(Name.length(), 9);
+ _worldPacket.FlushBits();
+ _worldPacket.WriteString(Name);
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::RequestPartyMemberStats::Read()
+{
+ _worldPacket >> PartyIndex;
+ _worldPacket >> TargetGUID;
+}
+
+WorldPacket const* WorldPackets::Party::PartyMemberStats::Write()
+{
+ _worldPacket.WriteBit(ForEnemy);
+
+ _worldPacket << MemberStats;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::SetPartyLeader::Read()
+{
+ _worldPacket >> PartyIndex;
+ _worldPacket >> TargetGUID;
+}
+
+void WorldPackets::Party::SetRole::Read()
+{
+ _worldPacket >> PartyIndex;
+ _worldPacket >> TargetGUID;
+ _worldPacket >> Role;
+}
+
+WorldPacket const* WorldPackets::Party::RoleChangedInform::Write()
+{
+ _worldPacket << PartyIndex;
+ _worldPacket << From;
+ _worldPacket << ChangedUnit;
+ _worldPacket << OldRole;
+ _worldPacket << NewRole;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::LeaveGroup::Read()
+{
+ _worldPacket >> PartyIndex;
+}
+
+void WorldPackets::Party::SetLootMethod::Read()
+{
+ _worldPacket >> PartyIndex;
+ _worldPacket >> LootMethod;
+ _worldPacket >> LootMasterGUID;
+ _worldPacket >> LootThreshold;
+}
+
+void WorldPackets::Party::MinimapPingClient::Read()
+{
+ _worldPacket >> PositionX;
+ _worldPacket >> PositionY;
+ _worldPacket >> PartyIndex;
+}
+
+WorldPacket const* WorldPackets::Party::MinimapPing::Write()
+{
+ _worldPacket << Sender;
+ _worldPacket << PositionX;
+ _worldPacket << PositionY;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::UpdateRaidTarget::Read()
+{
+ _worldPacket >> PartyIndex;
+ _worldPacket >> Target;
+ _worldPacket >> Symbol;
+}
+
+WorldPacket const* WorldPackets::Party::SendRaidTargetUpdateSingle::Write()
+{
+ _worldPacket << PartyIndex;
+ _worldPacket << Symbol;
+ _worldPacket << Target;
+ _worldPacket << ChangedBy;
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Party::SendRaidTargetUpdateAll::Write()
+{
+ _worldPacket << PartyIndex;
+
+ _worldPacket << int32(TargetIcons.size());
+
+ std::map<uint8, ObjectGuid>::const_iterator itr;
+ for (itr = TargetIcons.begin(); itr != TargetIcons.end(); itr++)
+ {
+ _worldPacket << itr->second;
+ _worldPacket << itr->first;
+ }
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::ConvertRaid::Read()
+{
+ Raid = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Party::RequestPartyJoinUpdates::Read()
+{
+ _worldPacket >> PartyIndex;
+}
+
+void WorldPackets::Party::SetAssistantLeader::Read()
+{
+ _worldPacket >> PartyIndex;
+ _worldPacket >> Target;
+ Apply = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Party::DoReadyCheck::Read()
+{
+ _worldPacket >> PartyIndex;
+}
+
+WorldPacket const* WorldPackets::Party::ReadyCheckStarted::Write()
+{
+ _worldPacket << PartyIndex;
+ _worldPacket << PartyGUID;
+ _worldPacket << InitiatorGUID;
+ _worldPacket << Duration;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::ReadyCheckResponseClient::Read()
+{
+ _worldPacket >> PartyIndex;
+ IsReady = _worldPacket.ReadBit();
+}
+
+WorldPacket const* WorldPackets::Party::ReadyCheckResponse::Write()
+{
+ _worldPacket << PartyGUID;
+ _worldPacket << Player;
+
+ _worldPacket.WriteBit(IsReady);
+
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Party::ReadyCheckCompleted::Write()
+{
+ _worldPacket << PartyIndex;
+ _worldPacket << PartyGUID;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::OptOutOfLoot::Read()
+{
+ PassOnLoot = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Party::InitiateRolePoll::Read()
+{
+ _worldPacket >> PartyIndex;
+}
+
+WorldPacket const* WorldPackets::Party::RolePollInform::Write()
+{
+ _worldPacket << PartyIndex;
+ _worldPacket << From;
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Party::GroupNewLeader::Write()
+{
+ _worldPacket << PartyIndex;
+ _worldPacket.WriteBits(Name.size(), 6);
+ _worldPacket.WriteString(Name);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Party::PartyUpdate::Write()
+{
+ _worldPacket << PartyType;
+ _worldPacket << PartyIndex;
+ _worldPacket << PartyFlags;
+
+ _worldPacket << MyIndex;
+ _worldPacket << PartyGUID;
+ _worldPacket << SequenceNum;
+ _worldPacket << LeaderGUID;
+
+ _worldPacket << PlayerList;
+
+ _worldPacket.WriteBit(LfgInfos.is_initialized());
+ _worldPacket.WriteBit(LootSettings.is_initialized());
+ _worldPacket.WriteBit(DifficultySettings.is_initialized());
+
+ _worldPacket.FlushBits();
+
+ if (LfgInfos.is_initialized())
+ _worldPacket << *LfgInfos;
+
+ if (LootSettings.is_initialized())
+ _worldPacket << *LootSettings;
+
+ if (DifficultySettings.is_initialized())
+ _worldPacket << *DifficultySettings;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::SetEveryoneIsAssistant::Read()
+{
+ _worldPacket >> PartyIndex;
+ EveryoneIsAssistant = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Party::ChangeSubGroup::Read()
+{
+ _worldPacket >> TargetGUID;
+ _worldPacket >> PartyIndex;
+ _worldPacket >> NewSubGroup;
+}
+
+void WorldPackets::Party::SwapSubGroups::Read()
+{
+ _worldPacket >> PartyIndex;
+ _worldPacket >> FirstTarget;
+ _worldPacket >> SecondTarget;
+}
+
+void WorldPackets::Party::ClearRaidMarker::Read()
+{
+ _worldPacket >> MarkerId;
+}
+
+WorldPacket const* WorldPackets::Party::RaidMarkersChanged::Write()
+{
+ _worldPacket << PartyIndex;
+ _worldPacket << ActiveMarkers;
+
+ _worldPacket.WriteBits(RaidMarkers.size(), 4);
+ _worldPacket.FlushBits();
+
+ for (RaidMarker* raidMarker : RaidMarkers)
+ {
+ _worldPacket << raidMarker->TransportGUID;
+ _worldPacket << raidMarker->Location.GetMapId();
+ _worldPacket << raidMarker->Location.PositionXYZStream();
+ }
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Party::PartyMemberStats::Initialize(Player const* player)
+{
+ ForEnemy = false;
+
+ MemberStats.GUID = player->GetGUID();
+
+ // Status
+ MemberStats.Status = MEMBER_STATUS_ONLINE;
+
+ if (player->IsPvP())
+ MemberStats.Status |= MEMBER_STATUS_PVP;
+
+ if (!player->IsAlive())
+ {
+ if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST))
+ MemberStats.Status |= MEMBER_STATUS_GHOST;
+ else
+ MemberStats.Status |= MEMBER_STATUS_DEAD;
+ }
+
+ if (player->IsFFAPvP())
+ MemberStats.Status |= MEMBER_STATUS_PVP_FFA;
+
+ if (player->isAFK())
+ MemberStats.Status |= MEMBER_STATUS_AFK;
+
+ if (player->isDND())
+ MemberStats.Status |= MEMBER_STATUS_DND;
+
+ // Level
+ MemberStats.Level = player->getLevel();
+
+ // Health
+ MemberStats.CurrentHealth = player->GetHealth();
+ MemberStats.MaxHealth = player->GetMaxHealth();
+
+ // Power
+ MemberStats.PowerType = player->getPowerType();
+ MemberStats.CurrentPower = player->GetPower(player->getPowerType());
+ MemberStats.MaxPower = player->GetMaxPower(player->getPowerType());
+
+ // Position
+ MemberStats.ZoneID = player->GetZoneId();
+ MemberStats.PositionX = int16(player->GetPositionX());
+ MemberStats.PositionY = int16(player->GetPositionY());
+ MemberStats.PositionZ = int16(player->GetPositionZ());
+
+ // Unk
+ MemberStats.Unk322 = 0; // Always 0
+ MemberStats.Unk704[0] = 1; // Always 1
+ MemberStats.Unk704[1] = 0; // Always 0
+ MemberStats.Unk200000 = 0; // Always 0
+
+ MemberStats.Unk2000000 = 0;
+ MemberStats.Unk4000000 = 0;
+
+ // Vehicle
+ if (player->GetVehicle() && player->GetVehicle()->GetVehicleInfo())
+ MemberStats.VehicleSeat = player->GetVehicle()->GetVehicleInfo()->SeatID[player->m_movementInfo.transport.seat];
+
+ // Auras
+ for (uint8 i = 0; i < MAX_AURAS; ++i)
+ {
+ if (AuraApplication const* aurApp = player->GetVisibleAura(i))
+ {
+ WorldPackets::Party::GroupAura aura;
+
+ aura.SpellId = aurApp->GetBase()->GetId();
+ aura.EffectMask = aurApp->GetEffectMask();
+ aura.Scalings = aurApp->GetFlags(); // ??
+
+ if (aurApp->GetFlags() & AFLAG_SCALABLE)
+ {
+ for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ {
+ float scale = 0.f;
+ if (AuraEffect const* eff = aurApp->GetBase()->GetEffect(i))
+ scale = float(eff->GetAmount());
+ aura.EffectScales.push_back(scale);
+ }
+ }
+
+ MemberStats.AuraList.push_back(aura);
+ }
+ }
+
+ // Phases
+ std::set<uint32> const& phases = player->GetPhases();
+ MemberStats.Phases.PhaseShiftFlags = 0x08 | (phases.size() ? 0x10 : 0);
+ MemberStats.Phases.PersonalGUID = ObjectGuid::Empty;
+ for (uint32 phaseId : phases)
+ {
+ WorldPackets::Party::GroupPhase phase;
+ phase.Id = phaseId;
+ phase.Flags = 1;
+ MemberStats.Phases.List.push_back(phase);
+ }
+
+ // Pet
+ if (player->GetPet())
+ {
+ Pet* pet = player->GetPet();
+
+ MemberStats.PetStats = boost::in_place();
+
+ MemberStats.PetStats->GUID = pet->GetGUID();
+ MemberStats.PetStats->Name = pet->GetName();
+ MemberStats.PetStats->ModelId = pet->GetDisplayId();
+
+ MemberStats.PetStats->CurrentHealth = pet->GetHealth();
+ MemberStats.PetStats->MaxHealth = pet->GetMaxHealth();
+
+ for (uint8 i = 0; i < MAX_AURAS; ++i)
+ {
+ if (AuraApplication const* aurApp = pet->GetVisibleAura(i))
+ {
+ WorldPackets::Party::GroupAura aura;
+
+ aura.SpellId = aurApp->GetBase()->GetId();
+ aura.EffectMask = aurApp->GetEffectMask();
+ aura.Scalings = aurApp->GetFlags(); // ??
+
+ if (aurApp->GetFlags() & AFLAG_SCALABLE)
+ {
+ for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ {
+ float scale = 0.f;
+ if (AuraEffect const* eff = aurApp->GetBase()->GetEffect(i))
+ scale = float(eff->GetAmount());
+ aura.EffectScales.push_back(scale);
+ }
+ }
+
+ MemberStats.PetStats->AuraList.push_back(aura);
+ }
+ }
+ }
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupPhase const& phase)
+{
+ data << phase.Flags;
+ data << phase.Id;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupPhases const& phases)
+{
+ data << phases.PhaseShiftFlags;
+ data << int32(phases.List.size());
+ data << phases.PersonalGUID;
+
+ for (WorldPackets::Party::GroupPhase const& phase : phases.List)
+ data << phase;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupAura const& aura)
+{
+ data << aura.SpellId;
+ data << aura.Scalings;
+ data << aura.EffectMask;
+
+ data << int32(aura.EffectScales.size());
+ for (float scale : aura.EffectScales)
+ data << scale;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, std::vector<WorldPackets::Party::GroupAura> const& auraList)
+{
+ data << int32(auraList.size());
+ for (WorldPackets::Party::GroupAura const& aura : auraList)
+ data << aura;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupPetStats const& petStats)
+{
+ data << petStats.GUID;
+
+ data << petStats.ModelId;
+
+ data << petStats.CurrentHealth;
+ data << petStats.MaxHealth;
+
+ data << petStats.AuraList;
+
+ data.WriteBits(petStats.Name.size(), 8);
+ data.FlushBits();
+ data.WriteString(petStats.Name);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupMemberStats const& memberStats)
+{
+ data << memberStats.GUID;
+
+ for (uint8 i = 0; i < 2; i++)
+ data << memberStats.Unk704[i];
+
+ data << memberStats.Status;
+
+ data << memberStats.PowerType;
+
+ data << memberStats.Unk322;
+
+ data << memberStats.CurrentHealth;
+ data << memberStats.MaxHealth;
+
+ data << memberStats.CurrentPower;
+ data << memberStats.MaxPower;
+
+ data << memberStats.Level;
+
+ data << memberStats.Unk200000;
+
+ data << memberStats.ZoneID;
+
+ data << memberStats.Unk2000000;
+ data << memberStats.Unk4000000;
+
+ data << memberStats.PositionX;
+ data << memberStats.PositionY;
+ data << memberStats.PositionZ;
+
+ data << memberStats.VehicleSeat;
+
+ data << int32(memberStats.AuraList.size());
+
+ data << memberStats.Phases;
+
+ for (WorldPackets::Party::GroupAura const& aura : memberStats.AuraList)
+ data << aura;
+
+ data.WriteBit(memberStats.PetStats.is_initialized());
+ data.FlushBits();
+
+ if (memberStats.PetStats.is_initialized())
+ data << *memberStats.PetStats;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, std::vector<WorldPackets::Party::GroupPlayerInfos> const& playerList)
+{
+ data << int32(playerList.size());
+
+ for (WorldPackets::Party::GroupPlayerInfos const& playerInfos : playerList)
+ data << playerInfos;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupPlayerInfos const& playerInfos)
+{
+ data.WriteBits(playerInfos.Name.size(), 6);
+ data.FlushBits();
+
+ data << playerInfos.GUID;
+ data << playerInfos.Status;
+ data << playerInfos.Subgroup;
+ data << playerInfos.Flags;
+ data << playerInfos.RolesAssigned;
+ data << playerInfos.Class;
+
+ data.WriteString(playerInfos.Name);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupLfgInfos const& lfgInfos)
+{
+ data << lfgInfos.MyFlags;
+ data << lfgInfos.Slot;
+ data << lfgInfos.MyRandomSlot;
+ data << lfgInfos.MyPartialClear;
+ data << lfgInfos.MyGearDiff;
+ data << lfgInfos.MyStrangerCount;
+ data << lfgInfos.MyKickVoteCount;
+ data << lfgInfos.BootCount;
+
+ data.WriteBit(lfgInfos.Aborted);
+ data.WriteBit(lfgInfos.MyFirstReward);
+ data.FlushBits();
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupLootSettings const& lootSettings)
+{
+ data << lootSettings.Method;
+ data << lootSettings.LootMaster;
+ data << lootSettings.Threshold;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupDifficultySettings const& difficultySettings)
+{
+ data << difficultySettings.DungeonDifficultyID;
+ data << difficultySettings.RaidDifficultyID;
+ data << difficultySettings.LegacyRaidDifficultyID;
+
+ return data;
+}
diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h
new file mode 100644
index 00000000000..ed3eed60ef4
--- /dev/null
+++ b/src/server/game/Server/Packets/PartyPackets.h
@@ -0,0 +1,616 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef PartyPackets_h__
+#define PartyPackets_h__
+
+#include "Packet.h"
+#include "ObjectGuid.h"
+#include "Group.h"
+
+namespace WorldPackets
+{
+ namespace Party
+ {
+ class PartyCommandResult final : public ServerPacket
+ {
+ public:
+ PartyCommandResult() : ServerPacket(SMSG_PARTY_COMMAND_RESULT, 23) { }
+
+ WorldPacket const* Write() override;
+
+ std::string Name;
+ uint8 Command = 0u;
+ uint8 Result = 0u;
+ uint32 ResultData = 0u;
+ ObjectGuid ResultGUID;
+ };
+
+ class PartyInviteClient final : public ClientPacket
+ {
+ public:
+ PartyInviteClient(WorldPacket&& packet) : ClientPacket(CMSG_PARTY_INVITE, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ int32 ProposedRoles = 0;
+ int32 TargetCfgRealmID = 0;
+ std::string TargetName;
+ std::string TargetRealm;
+ ObjectGuid TargetGUID;
+ };
+
+ class PartyInvite final : public ServerPacket
+ {
+ public:
+ PartyInvite() : ServerPacket(SMSG_PARTY_INVITE, 55) { }
+
+ WorldPacket const* Write() override;
+ void Initialize(Player* const inviter, int32 proposedRoles, bool canAccept);
+
+ bool MightCRZYou = false;
+ bool MustBeBNetFriend = false;
+ bool AllowMultipleRoles = false;
+ bool Unk2 = false;
+ int16 Unk1 = 0;
+
+ bool CanAccept = false;
+
+ // Inviter
+ ObjectGuid InviterGUID;
+ ObjectGuid InviterBNetAccountId;
+ std::string InviterName;
+
+ // Realm
+ bool IsXRealm = false;
+ bool IsLocal = true;
+ uint32 InviterVirtualRealmAddress = 0u;
+ std::string InviterRealmNameActual;
+ std::string InviterRealmNameNormalized;
+
+ // Lfg
+ int32 ProposedRoles = 0;
+ int32 LfgCompletedMask = 0;
+ std::vector<int32> LfgSlots;
+ };
+
+ class PartyInviteResponse final : public ClientPacket
+ {
+ public:
+ PartyInviteResponse(WorldPacket&& packet) : ClientPacket(CMSG_PARTY_INVITE_RESPONSE, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ bool Accept = false;
+ Optional<int32> RolesDesired;
+ };
+
+ class PartyUninvite final : public ClientPacket
+ {
+ public:
+ PartyUninvite(WorldPacket&& packet) : ClientPacket(CMSG_PARTY_UNINVITE, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid TargetGUID;
+ std::string Reason;
+ };
+
+ class GroupDecline final : public ServerPacket
+ {
+ public:
+ GroupDecline(std::string const& name) : ServerPacket(SMSG_GROUP_DECLINE, 2 + name.size()), Name(name) { }
+
+ WorldPacket const* Write() override;
+
+ std::string Name;
+ };
+
+ class RequestPartyMemberStats final : public ClientPacket
+ {
+ public:
+ RequestPartyMemberStats(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_PARTY_MEMBER_STATS, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid TargetGUID;
+ };
+
+ struct GroupPhase
+ {
+ uint16 Flags = 0u;
+ uint16 Id = 0u;
+ };
+
+ struct GroupPhases
+ {
+ int32 PhaseShiftFlags = 0;
+ ObjectGuid PersonalGUID;
+ std::vector<GroupPhase> List;
+ };
+
+ struct GroupAura
+ {
+ uint32 SpellId = 0u;
+ uint8 Scalings = 0;
+ uint32 EffectMask = 0u;
+ std::vector<float> EffectScales;
+ };
+
+ struct GroupPetStats
+ {
+ ObjectGuid GUID;
+ std::string Name;
+ int16 ModelId = 0;
+
+ int32 CurrentHealth = 0;
+ int32 MaxHealth = 0;
+
+ std::vector<GroupAura> AuraList;
+ };
+
+ struct GroupMemberStats
+ {
+ ObjectGuid GUID;
+ int16 Level = 0;
+ int16 Status = 0;
+
+ int32 CurrentHealth = 0;
+ int32 MaxHealth;
+
+ uint8 PowerType = 0u;
+ int16 CurrentPower = 0;
+ int16 MaxPower = 0;
+
+ int16 ZoneID = 0;
+ int16 PositionX = 0;
+ int16 PositionY = 0;
+ int16 PositionZ = 0;
+
+ int32 VehicleSeat = 0;
+
+ GroupPhases Phases;
+ std::vector<GroupAura> AuraList;
+ Optional<GroupPetStats> PetStats;
+
+ int16 Unk322 = 0;
+ int16 Unk200000 = 0;
+ int16 Unk2000000 = 0;
+ int32 Unk4000000 = 0;
+ int8 Unk704[2];
+ };
+
+ class PartyMemberStats final : public ServerPacket
+ {
+ public:
+ PartyMemberStats() : ServerPacket(SMSG_PARTY_MEMBER_STATE, 80) { }
+
+ WorldPacket const* Write() override;
+ void Initialize(Player const* player);
+
+ GroupMemberStats MemberStats;
+ bool ForEnemy = false;
+ };
+
+ class SetPartyLeader final : public ClientPacket
+ {
+ public:
+ SetPartyLeader(WorldPacket&& packet) : ClientPacket(CMSG_SET_PARTY_LEADER, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid TargetGUID;
+ };
+
+ class SetRole final : public ClientPacket
+ {
+ public:
+ SetRole(WorldPacket&& packet) : ClientPacket(CMSG_SET_ROLE, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid TargetGUID;
+ int32 Role = 0;
+ };
+
+ class RoleChangedInform final : public ServerPacket
+ {
+ public:
+ RoleChangedInform() : ServerPacket(SMSG_ROLE_CHANGED_INFORM, 41) { }
+
+ WorldPacket const* Write() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid From;
+ ObjectGuid ChangedUnit;
+ int32 OldRole = 0;
+ int32 NewRole = 0;
+ };
+
+ class LeaveGroup final : public ClientPacket
+ {
+ public:
+ LeaveGroup(WorldPacket&& packet) : ClientPacket(CMSG_LEAVE_GROUP, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ };
+
+ class SetLootMethod final : public ClientPacket
+ {
+ public:
+ SetLootMethod(WorldPacket&& packet) : ClientPacket(CMSG_SET_LOOT_METHOD, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid LootMasterGUID;
+ uint8 LootMethod = 0u;
+ uint32 LootThreshold = 0u;
+ };
+
+ class MinimapPingClient final : public ClientPacket
+ {
+ public:
+ MinimapPingClient(WorldPacket&& packet) : ClientPacket(CMSG_MINIMAP_PING, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ float PositionX = 0.f;
+ float PositionY = 0.f;
+ };
+
+ class MinimapPing final : public ServerPacket
+ {
+ public:
+ MinimapPing() : ServerPacket(SMSG_MINIMAP_PING, 24) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Sender;
+ float PositionX = 0.f;
+ float PositionY = 0.f;
+ };
+
+ class UpdateRaidTarget final : public ClientPacket
+ {
+ public:
+ UpdateRaidTarget(WorldPacket&& packet) : ClientPacket(CMSG_UPDATE_RAID_TARGET, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid Target;
+ int8 Symbol = 0;
+ };
+
+ class SendRaidTargetUpdateSingle final : public ServerPacket
+ {
+ public:
+ SendRaidTargetUpdateSingle() : ServerPacket(SMSG_SEND_RAID_TARGET_UPDATE_SINGLE, 34) { }
+
+ WorldPacket const* Write() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid Target;
+ ObjectGuid ChangedBy;
+ int8 Symbol = 0;
+ };
+
+ class SendRaidTargetUpdateAll final : public ServerPacket
+ {
+ public:
+ SendRaidTargetUpdateAll() : ServerPacket(SMSG_SEND_RAID_TARGET_UPDATE_ALL, 1 + TARGET_ICONS_COUNT * (1 + 16)) { }
+
+ WorldPacket const* Write() override;
+
+ int8 PartyIndex = 0;
+ std::map<uint8, ObjectGuid> TargetIcons;
+ };
+
+ class ConvertRaid final : public ClientPacket
+ {
+ public:
+ ConvertRaid(WorldPacket&& packet) : ClientPacket(CMSG_CONVERT_RAID, std::move(packet)) { }
+
+ void Read() override;
+
+ bool Raid = false;
+ };
+
+ class RequestPartyJoinUpdates final : public ClientPacket
+ {
+ public:
+ RequestPartyJoinUpdates(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_PARTY_JOIN_UPDATES, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ };
+
+ class SetAssistantLeader final : public ClientPacket
+ {
+ public:
+ SetAssistantLeader(WorldPacket&& packet) : ClientPacket(CMSG_SET_ASSISTANT_LEADER, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Target;
+ int8 PartyIndex = 0;
+ bool Apply = false;
+ };
+
+ class DoReadyCheck final : public ClientPacket
+ {
+ public:
+ DoReadyCheck(WorldPacket&& packet) : ClientPacket(CMSG_DO_READY_CHECK, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ };
+
+ class ReadyCheckStarted final : public ServerPacket
+ {
+ public:
+ ReadyCheckStarted() : ServerPacket(SMSG_READY_CHECK_STARTED, 37) { }
+
+ WorldPacket const* Write() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid PartyGUID;
+ ObjectGuid InitiatorGUID;
+ uint32 Duration = 0u;
+ };
+
+ class ReadyCheckResponseClient final : public ClientPacket
+ {
+ public:
+ ReadyCheckResponseClient(WorldPacket&& packet) : ClientPacket(CMSG_READY_CHECK_RESPONSE, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ bool IsReady = false;
+ };
+
+ class ReadyCheckResponse final : public ServerPacket
+ {
+ public:
+ ReadyCheckResponse() : ServerPacket(SMSG_READY_CHECK_RESPONSE, 19) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid PartyGUID;
+ ObjectGuid Player;
+ bool IsReady = false;
+ };
+
+ class ReadyCheckCompleted final : public ServerPacket
+ {
+ public:
+ ReadyCheckCompleted() : ServerPacket(SMSG_READY_CHECK_COMPLETED, 17) { }
+
+ WorldPacket const* Write() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid PartyGUID;
+ };
+
+ class RequestRaidInfo final : public ClientPacket
+ {
+ public:
+ RequestRaidInfo(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_RAID_INFO, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ class OptOutOfLoot final : public ClientPacket
+ {
+ public:
+ OptOutOfLoot(WorldPacket&& packet) : ClientPacket(CMSG_OPT_OUT_OF_LOOT, std::move(packet)) { }
+
+ void Read() override;
+
+ bool PassOnLoot = false;
+ };
+
+ class InitiateRolePoll final : public ClientPacket
+ {
+ public:
+ InitiateRolePoll(WorldPacket&& packet) : ClientPacket(CMSG_INITIATE_ROLE_POLL, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ };
+
+ class RolePollInform final : public ServerPacket
+ {
+ public:
+ RolePollInform() : ServerPacket(SMSG_ROLE_POLL_INFORM, 17) { }
+
+ WorldPacket const* Write() override;
+
+ int8 PartyIndex = 0;
+ ObjectGuid From;
+ };
+
+ class GroupNewLeader final : public ServerPacket
+ {
+ public:
+ GroupNewLeader() : ServerPacket(SMSG_GROUP_NEW_LEADER, 14) { }
+
+ WorldPacket const* Write() override;
+
+ int8 PartyIndex = 0;
+ std::string Name;
+ };
+
+ struct GroupPlayerInfos
+ {
+ ObjectGuid GUID;
+ std::string Name;
+ uint8 Class = 0;
+
+ uint8 Status = 0u;
+ uint8 Subgroup = 0u;
+ uint8 Flags = 0u;
+ uint8 RolesAssigned = 0u;
+ };
+
+ struct GroupLfgInfos
+ {
+ int32 Slot = 0u;
+ int8 BootCount = 0;
+
+ bool Aborted = false;
+
+ int32 MyRandomSlot = 0;
+ uint8 MyFlags = 0u;
+ uint8 MyPartialClear = 0u;
+ float MyGearDiff = 0.f;
+
+ int8 MyStrangerCount = 0;
+ int8 MyKickVoteCount = 0;
+
+ bool MyFirstReward = false;
+ };
+
+ struct GroupLootSettings
+ {
+ uint8 Method = 0u;
+ ObjectGuid LootMaster;
+ uint8 Threshold = 0u;
+ };
+
+ struct GroupDifficultySettings
+ {
+ uint32 DungeonDifficultyID = 0u;
+ uint32 RaidDifficultyID = 0u;
+ uint32 LegacyRaidDifficultyID = 0u;
+ };
+
+ class PartyUpdate final : public ServerPacket
+ {
+ public:
+ PartyUpdate() : ServerPacket(SMSG_PARTY_UPDATE, 200) { }
+
+ WorldPacket const* Write() override;
+
+ int8 PartyFlags = 0;
+ int8 PartyIndex = 0;
+ int8 PartyType = 0;
+
+ ObjectGuid PartyGUID;
+ ObjectGuid LeaderGUID;
+
+ int32 MyIndex = 0;
+ int32 SequenceNum = 0;
+
+ std::vector<GroupPlayerInfos> PlayerList;
+
+ Optional<GroupLfgInfos> LfgInfos;
+ Optional<GroupLootSettings> LootSettings;
+ Optional<GroupDifficultySettings> DifficultySettings;
+ };
+
+ class SetEveryoneIsAssistant final : public ClientPacket
+ {
+ public:
+ SetEveryoneIsAssistant(WorldPacket&& packet) : ClientPacket(CMSG_SET_EVERYONE_IS_ASSISTANT, std::move(packet)) { }
+
+ void Read() override;
+
+ int8 PartyIndex = 0;
+ bool EveryoneIsAssistant = false;
+ };
+
+ class ChangeSubGroup final : public ClientPacket
+ {
+ public:
+ ChangeSubGroup(WorldPacket&& packet) : ClientPacket(CMSG_CHANGE_SUB_GROUP, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid TargetGUID;
+ int8 PartyIndex = 0;
+ uint8 NewSubGroup = 0u;
+ };
+
+ class SwapSubGroups final : public ClientPacket
+ {
+ public:
+ SwapSubGroups(WorldPacket&& packet) : ClientPacket(CMSG_SWAP_SUB_GROUPS, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid FirstTarget;
+ ObjectGuid SecondTarget;
+ int8 PartyIndex = 0;
+ };
+
+ class ClearRaidMarker final : public ClientPacket
+ {
+ public:
+ ClearRaidMarker(WorldPacket&& packet) : ClientPacket(CMSG_CLEAR_RAID_MARKER, std::move(packet)) { }
+
+ void Read() override;
+
+ uint8 MarkerId = 0u;
+ };
+
+ class RaidMarkersChanged final : public ServerPacket
+ {
+ public:
+ RaidMarkersChanged() : ServerPacket(SMSG_RAID_MARKERS_CHANGED, 6) { }
+
+ WorldPacket const* Write() override;
+
+ int8 PartyIndex = 0;
+ uint32 ActiveMarkers = 0u;
+
+ std::vector<RaidMarker*> RaidMarkers;
+ };
+ }
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupPhase const& phase);
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupPhases const& phases);
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupAura const& aura);
+ByteBuffer& operator<<(ByteBuffer& data, std::vector<WorldPackets::Party::GroupAura> const& auraList);
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupPetStats const& petStats);
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupMemberStats const& memberStats);
+
+ByteBuffer& operator<<(ByteBuffer& data, std::vector<WorldPackets::Party::GroupPlayerInfos> const& playerList);
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupPlayerInfos const& playerInfos);
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupLfgInfos const& lfgInfos);
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupLootSettings const& lootSettings);
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupDifficultySettings const& difficultySettings);
+
+#endif // PartyPackets_h__
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index 2325c5efac0..f7806a9e588 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -176,8 +176,6 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa
data << uint8(lookupData.Level);
data.WriteString(lookupData.Name);
- data.FlushBits();
-
return data;
}
@@ -210,6 +208,8 @@ WorldPacket const* WorldPackets::Query::QueryPageTextResponse::Write()
_worldPacket << Info.ID;
_worldPacket << Info.NextPageID;
_worldPacket.WriteBits(Info.Text.length(), 12);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(Info.Text);
}
@@ -290,6 +290,7 @@ WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write()
{
_worldPacket << GameObjectID;
_worldPacket.WriteBit(Allow);
+ _worldPacket.FlushBits();
if (Allow)
{
@@ -464,3 +465,27 @@ WorldPacket const* WorldPackets::Query::QueryPetNameResponse::Write()
return &_worldPacket;
}
+
+void WorldPackets::Query::ItemTextQuery::Read()
+{
+ _worldPacket >> Id;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::ItemTextCache const& itemTextCache)
+{
+ data.WriteBits(itemTextCache.Text.length(), 13);
+ data.FlushBits();
+
+ data.WriteString(itemTextCache.Text);
+
+ return data;
+}
+
+WorldPacket const* WorldPackets::Query::QueryItemTextResponse::Write()
+{
+ _worldPacket.WriteBit(Valid);
+ _worldPacket << Id;
+ _worldPacket << Item;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index a5d7e5de8c4..88bf5a887f6 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -418,6 +418,33 @@ namespace WorldPackets
uint32 Timestamp = 0;
std::string Name;
};
+
+ class ItemTextQuery final : public ClientPacket
+ {
+ public:
+ ItemTextQuery(WorldPacket&& packet) : ClientPacket(CMSG_ITEM_TEXT_QUERY, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Id;
+ };
+
+ struct ItemTextCache
+ {
+ std::string Text;
+ };
+
+ class QueryItemTextResponse final : public ServerPacket
+ {
+ public:
+ QueryItemTextResponse() : ServerPacket(SMSG_QUERY_ITEM_TEXT_RESPONSE) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Id;
+ bool Valid = false;
+ ItemTextCache Item;
+ };
}
}
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 5a5320a4e2f..d792783cf9a 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -72,7 +72,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket << Info.SuggestedGroupNum;
_worldPacket << Info.RewardNextQuest;
_worldPacket << Info.RewardXPDifficulty;
- _worldPacket << Info.Float10; // Unk
+ _worldPacket << Info.RewardXPMultiplier;
_worldPacket << Info.RewardMoney;
_worldPacket << Info.RewardMoneyDifficulty;
_worldPacket << Info.Float13; // Unk
@@ -149,10 +149,12 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket << questObjective.UnkFloat;
_worldPacket << int32(questObjective.VisualEffects.size());
- for (auto& visualEffect : questObjective.VisualEffects)
+ for (int32 visualEffect : questObjective.VisualEffects)
_worldPacket << visualEffect;
_worldPacket.WriteBits(questObjective.Description.size(), 8);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(questObjective.Description);
}
@@ -165,6 +167,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
_worldPacket.WriteBits(Info.PortraitTurnInText.size(), 10);
_worldPacket.WriteBits(Info.PortraitTurnInName.size(), 8);
_worldPacket.WriteBits(Info.QuestCompletionLog.size(), 11);
+ _worldPacket.FlushBits();
_worldPacket.WriteString(Info.LogTitle);
_worldPacket.WriteString(Info.LogDescription);
@@ -277,6 +280,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write()
_worldPacket.WriteBits(PortraitGiverName.size(), 8);
_worldPacket.WriteBits(PortraitGiverText.size(), 10);
_worldPacket.WriteBits(PortraitTurnInName.size(), 8);
+ _worldPacket.FlushBits();
_worldPacket.WriteString(QuestTitle);
_worldPacket.WriteString(RewardText);
@@ -362,6 +366,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write()
_worldPacket.WriteBit(DisplayPopup);
_worldPacket.WriteBit(StartCheat);
_worldPacket.WriteBit(AutoLaunched);
+ _worldPacket.FlushBits();
_worldPacket.WriteString(QuestTitle);
_worldPacket.WriteString(DescriptionText);
@@ -406,6 +411,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverRequestItems::Write()
_worldPacket.WriteBits(QuestTitle.size(), 9);
_worldPacket.WriteBits(CompletionText.size(), 12);
+ _worldPacket.FlushBits();
_worldPacket.WriteString(QuestTitle);
_worldPacket.WriteString(CompletionText);
@@ -477,6 +483,8 @@ WorldPacket const* WorldPackets::Quest::QuestConfirmAcceptResponse::Write()
_worldPacket << InitiatedBy;
_worldPacket.WriteBits(QuestTitle.size(), 10);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(QuestTitle);
return &_worldPacket;
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index a83bcc219be..b2d7269ebb0 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -116,6 +116,7 @@ namespace WorldPackets
int32 SuggestedGroupNum = 0;
int32 RewardNextQuest = 0; // client will request this quest from NPC, if not 0
int32 RewardXPDifficulty = 0; // used for calculating rewarded experience
+ float RewardXPMultiplier = 1.0f;
int32 RewardMoney = 0; // reward money (below max lvl)
int32 RewardMoneyDifficulty = 0; // used in XP calculation at client
int32 RewardBonusMoney = 0;
@@ -163,8 +164,6 @@ namespace WorldPackets
int32 RewardCurrencyID[QUEST_REWARD_CURRENCY_COUNT] = {};
int32 RewardCurrencyQty[QUEST_REWARD_CURRENCY_COUNT] = {};
- // Non JAM data
- float Float10 = 1.0f;
float Float13 = 1.0f;
int32 AllowableRaces = -1;
};
diff --git a/src/server/game/Server/Packets/ReferAFriendPackets.cpp b/src/server/game/Server/Packets/ReferAFriendPackets.cpp
index 0f3211936f6..8bc017223f8 100644
--- a/src/server/game/Server/Packets/ReferAFriendPackets.cpp
+++ b/src/server/game/Server/Packets/ReferAFriendPackets.cpp
@@ -30,6 +30,7 @@ void WorldPackets::RaF::GrantLevel::Read()
WorldPacket const* WorldPackets::RaF::ProposeLevelGrant::Write()
{
_worldPacket << Sender;
+
return &_worldPacket;
}
@@ -39,6 +40,8 @@ WorldPacket const* WorldPackets::RaF::ReferAFriendFailure::Write()
// Client uses this string only if Reason == ERR_REFER_A_FRIEND_NOT_IN_GROUP || Reason == ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S
// but always reads it from packet
_worldPacket.WriteBits(Str.length(), 6);
+ _worldPacket.FlushBits();
_worldPacket.WriteString(Str);
+
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index 365dc742e85..b03994aebab 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -121,6 +121,8 @@ WorldPacket const* WorldPackets::System::SetTimeZoneInformation::Write()
{
_worldPacket.WriteBits(ServerTimeTZ.length(), 7);
_worldPacket.WriteBits(GameTimeTZ.length(), 7);
+ _worldPacket.FlushBits();
+
_worldPacket.WriteString(ServerTimeTZ);
_worldPacket.WriteString(GameTimeTZ);
diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp
index 80a6dad3bd2..cdbeea53e32 100644
--- a/src/server/game/Server/Packets/TicketPackets.cpp
+++ b/src/server/game/Server/Packets/TicketPackets.cpp
@@ -70,6 +70,7 @@ WorldPacket const* WorldPackets::Ticket::GMTicketGetTicketResponse::Write()
{
_worldPacket << Result;
_worldPacket.WriteBit(Info.is_initialized());
+ _worldPacket.FlushBits();
if (Info)
{
@@ -84,12 +85,12 @@ WorldPacket const* WorldPackets::Ticket::GMTicketGetTicketResponse::Write()
_worldPacket.WriteBits(Info->TicketDescription.size(), 11);
_worldPacket.WriteBits(Info->WaitTimeOverrideMessage.size(), 10);
+ _worldPacket.FlushBits();
_worldPacket.WriteString(Info->TicketDescription);
_worldPacket.WriteString(Info->WaitTimeOverrideMessage);
}
- _worldPacket.FlushBits();
return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/WhoPackets.cpp b/src/server/game/Server/Packets/WhoPackets.cpp
index 99ce0805e8b..632aeba0e12 100644
--- a/src/server/game/Server/Packets/WhoPackets.cpp
+++ b/src/server/game/Server/Packets/WhoPackets.cpp
@@ -25,9 +25,10 @@ void WorldPackets::Who::WhoIsRequest::Read()
WorldPacket const* WorldPackets::Who::WhoIsResponse::Write()
{
_worldPacket.WriteBits(AccountName.length(), 11);
- _worldPacket.WriteString(AccountName);
_worldPacket.FlushBits();
+ _worldPacket.WriteString(AccountName);
+
return &_worldPacket;
}
@@ -102,10 +103,10 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Who::WhoEntry const& entr
data.WriteBits(entry.GuildName.length(), 7);
data.WriteBit(entry.IsGM);
- data.WriteString(entry.GuildName);
-
data.FlushBits();
+ data.WriteString(entry.GuildName);
+
return data;
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 2886b079c93..45071d14cd4 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -23,16 +23,19 @@
#include "Packets/BankPackets.h"
#include "Packets/BattlegroundPackets.h"
#include "Packets/BlackMarketPackets.h"
-#include "Packets/CharacterPackets.h"
#include "Packets/ChannelPackets.h"
+#include "Packets/CharacterPackets.h"
#include "Packets/ChatPackets.h"
#include "Packets/ClientConfigPackets.h"
#include "Packets/CombatPackets.h"
#include "Packets/DuelPackets.h"
#include "Packets/EquipmentSetPackets.h"
#include "Packets/GameObjectPackets.h"
+#include "Packets/GarrisonPackets.h"
#include "Packets/GuildPackets.h"
+#include "Packets/PartyPackets.h"
#include "Packets/InspectPackets.h"
+#include "Packets/InstancePackets.h"
#include "Packets/ItemPackets.h"
#include "Packets/LootPackets.h"
#include "Packets/MailPackets.h"
@@ -47,9 +50,9 @@
#include "Packets/ScenePackets.h"
#include "Packets/SocialPackets.h"
#include "Packets/TalentPackets.h"
+#include "Packets/TicketPackets.h"
#include "Packets/TokenPackets.h"
#include "Packets/TradePackets.h"
-#include "Packets/TicketPackets.h"
#include "Packets/VehiclePackets.h"
#include "Packets/VoidStoragePackets.h"
#include "Packets/WhoPackets.h"
@@ -249,7 +252,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CANCEL_MOUNT_AURA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::CancelMountAura, &WorldSession::HandleCancelMountAuraOpcode);
DEFINE_HANDLER(CMSG_CANCEL_QUEUED_SPELL, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_TEMP_ENCHANTMENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelTempEnchantmentOpcode);
+ DEFINE_HANDLER(CMSG_CANCEL_TEMP_ENCHANTMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::CancelTempEnchantment, &WorldSession::HandleCancelTempEnchantmentOpcode);
DEFINE_HANDLER(CMSG_CANCEL_TRADE, STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT, PROCESS_THREADUNSAFE, WorldPackets::Trade::CancelTrade, &WorldSession::HandleCancelTradeOpcode);
DEFINE_HANDLER(CMSG_CAN_DUEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Duel::CanDuel, &WorldSession::HandleCanDuel);
DEFINE_HANDLER(CMSG_CAST_SPELL, STATUS_LOGGEDIN, PROCESS_THREADSAFE, WorldPackets::Spells::CastSpell, &WorldSession::HandleCastSpellOpcode);
@@ -257,7 +260,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CHANGE_SUB_GROUP, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGroupChangeSubGroupOpcode );
+ DEFINE_HANDLER(CMSG_CHANGE_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::ChangeSubGroup, &WorldSession::HandleChangeSubGroupOpcode);
DEFINE_HANDLER(CMSG_CHARACTER_RENAME_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharacterRenameRequest, &WorldSession::HandleCharRenameOpcode);
DEFINE_HANDLER(CMSG_CHAR_CUSTOMIZE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharCustomize, &WorldSession::HandleCharCustomizeOpcode);
DEFINE_HANDLER(CMSG_CHAR_DELETE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharDelete, &WorldSession::HandleCharDeleteOpcode);
@@ -306,14 +309,14 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHAT_MESSAGE_SAY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatMessage, &WorldSession::HandleChatMessageOpcode);
DEFINE_HANDLER(CMSG_CHAT_MESSAGE_WHISPER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatMessageWhisper, &WorldSession::HandleChatMessageWhisperOpcode);
DEFINE_HANDLER(CMSG_CHAT_MESSAGE_YELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatMessage, &WorldSession::HandleChatMessageOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_REGISTER_ADDON_PREFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAddonRegisteredPrefixesOpcode);
+ DEFINE_HANDLER(CMSG_CHAT_REGISTER_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatRegisterAddonPrefixes, &WorldSession::HandleAddonRegisteredPrefixesOpcode);
DEFINE_HANDLER(CMSG_CHAT_REPORT_FILTERED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_REPORT_IGNORED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChatIgnoredOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUnregisterAddonPrefixesOpcode);
+ DEFINE_HANDLER(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatUnregisterAllAddonPrefixes, &WorldSession::HandleUnregisterAllAddonPrefixesOpcode);
DEFINE_HANDLER(CMSG_CHECK_RAF_EMAIL_ENABLED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHOICE_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_CLEAR_RAID_MARKER, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CLEAR_RAID_MARKER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::ClearRaidMarker, &WorldSession::HandleClearRaidMarker);
DEFINE_HANDLER(CMSG_CLEAR_TRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Trade::ClearTradeItem, &WorldSession::HandleClearTradeItemOpcode);
DEFINE_HANDLER(CMSG_CLIENT_PORT_GRAVEYARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::PortGraveyard, &WorldSession::HandlePortGraveyard);
DEFINE_HANDLER(CMSG_CLOSE_INTERACTION, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -329,7 +332,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_COMPLETE_MOVIE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_CONFIRM_RESPEC_WIPE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleConfirmRespecWipeOpcode );
DEFINE_HANDLER(CMSG_CONNECT_TO_FAILED, STATUS_NEVER, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CONVERT_RAID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGroupRaidConvertOpcode );
+ DEFINE_HANDLER(CMSG_CONVERT_RAID, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::ConvertRaid, &WorldSession::HandleConvertRaidOpcode);
DEFINE_HANDLER(CMSG_CREATE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CreateCharacter, &WorldSession::HandleCharCreateOpcode);
DEFINE_HANDLER(CMSG_CREATE_SHIPMENT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DB_QUERY_BULK, STATUS_AUTHED, PROCESS_INPLACE, WorldPackets::Query::DBQueryBulk, &WorldSession::HandleDBQueryBulk);
@@ -355,7 +358,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_DISCARDED_TIME_SYNC_ACKS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_DISMISS_CRITTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleDismissCritter );
DEFINE_HANDLER(CMSG_DO_MASTER_LOOT_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_DO_READY_CHECK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRaidReadyCheckOpcode );
+ DEFINE_HANDLER(CMSG_DO_READY_CHECK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::DoReadyCheck, &WorldSession::HandleDoReadyCheckOpcode);
DEFINE_HANDLER(CMSG_DUEL_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Duel::DuelResponse, &WorldSession::HandleDuelResponseOpcode);
DEFINE_HANDLER(CMSG_EJECT_PASSENGER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::EjectPassenger, &WorldSession::HandleEjectPassenger);
DEFINE_HANDLER(CMSG_EMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::EmoteClient, &WorldSession::HandleEmoteOpcode);
@@ -364,21 +367,21 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_ENGINE_SURVEY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_ENUM_CHARACTERS, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::EnumCharacters, &WorldSession::HandleCharEnumOpcode);
DEFINE_HANDLER(CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::EnumCharacters, &WorldSession::HandleCharUndeleteEnumOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_FAR_SIGHT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleFarSightOpcode );
+ DEFINE_HANDLER(CMSG_FAR_SIGHT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::FarSight, &WorldSession::HandleFarSightOpcode);
DEFINE_HANDLER(CMSG_GAME_OBJ_REPORT_USE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::GameObject::GameObjReportUse, &WorldSession::HandleGameobjectReportUse);
DEFINE_HANDLER(CMSG_GAME_OBJ_USE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::GameObject::GameObjUse, &WorldSession::HandleGameObjectUseOpcode);
DEFINE_HANDLER(CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_GARRISON_CANCEL_CONSTRUCTION, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GARRISON_CANCEL_CONSTRUCTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Garrison::GarrisonCancelConstruction, &WorldSession::HandleGarrisonCancelConstruction);
DEFINE_HANDLER(CMSG_GARRISON_CHECK_UPGRADEABLE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_COMPLETE_MISSION, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_GENERATE_RECRUITS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_GARRISON_GET_BUILDING_LANDMARKS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GARRISON_GET_BUILDING_LANDMARKS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Garrison::GarrisonGetBuildingLandmarks, &WorldSession::HandleGarrisonGetBuildingLandmarks);
DEFINE_HANDLER(CMSG_GARRISON_MISSION_BONUS_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_GARRISON_PURCHASE_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GARRISON_PURCHASE_BUILDING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Garrison::GarrisonPurchaseBuilding, &WorldSession::HandleGarrisonPurchaseBuilding);
DEFINE_HANDLER(CMSG_GARRISON_RECRUIT_FOLLOWER, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_REMOVE_FOLLOWER, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Garrison::GarrisonRequestBlueprintAndSpecializationData, &WorldSession::HandleGarrisonRequestBlueprintAndSpecializationData);
DEFINE_HANDLER(CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_REQUEST_SHIPMENT_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GARRISON_SET_BUILDING_ACTIVE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -389,7 +392,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_GARRISON_SWAP_BUILDINGS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_GENERATE_RANDOM_CHARACTER_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::GenerateRandomCharacterName, &WorldSession::HandleRandomizeCharNameOpcode);
DEFINE_HANDLER(CMSG_GET_CHALLENGE_MODE_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_GET_GARRISON_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_GET_GARRISON_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Garrison::GetGarrisonInfo, &WorldSession::HandleGetGarrisonInfo);
DEFINE_HANDLER(CMSG_GET_ITEM_PURCHASE_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::GetItemPurchaseData, &WorldSession::HandleGetItemPurchaseData);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_MIRROR_IMAGE_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMirrorImageDataRequest );
DEFINE_HANDLER(CMSG_GET_PVP_OPTIONS_ENABLED, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Battleground::GetPVPOptionsEnabled, &WorldSession::HandleGetPVPOptionsEnabled);
@@ -456,20 +459,20 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_HEARTH_AND_RESURRECT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Battleground::HearthAndResurrect, &WorldSession::HandleHearthAndResurrect);
DEFINE_HANDLER(CMSG_IGNORE_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Trade::IgnoreTrade, &WorldSession::HandleIgnoreTradeOpcode);
DEFINE_HANDLER(CMSG_INCREASE_CAST_TIME_FOR_SPELL, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_INITIATE_ROLE_POLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRolePollBeginOpcode);
+ DEFINE_HANDLER(CMSG_INITIATE_ROLE_POLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::InitiateRolePoll, &WorldSession::HandleInitiateRolePoll);
DEFINE_HANDLER(CMSG_INITIATE_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Trade::InitiateTrade, &WorldSession::HandleInitiateTradeOpcode);
DEFINE_HANDLER(CMSG_INSPECT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Inspect::Inspect, &WorldSession::HandleInspectOpcode);
DEFINE_HANDLER(CMSG_INSPECT_PVP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Inspect::InspectPVPRequest, &WorldSession::HandleInspectPVP);
DEFINE_OPCODE_HANDLER_OLD(CMSG_INSTANCE_LOCK_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleInstanceLockResponse);
DEFINE_OPCODE_HANDLER_OLD(CMSG_ITEM_PURCHASE_REFUND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleItemRefund );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_ITEM_TEXT_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleItemTextQuery );
+ DEFINE_HANDLER(CMSG_ITEM_TEXT_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::ItemTextQuery, &WorldSession::HandleItemTextQuery);
DEFINE_HANDLER(CMSG_JOIN_PET_BATTLE_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_JOIN_RATED_BATTLEGROUND, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_KEEP_ALIVE, STATUS_NEVER, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess);
DEFINE_HANDLER(CMSG_KEYBOUND_OVERRIDE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LEARN_PET_SPECIALIZATION_GROUP, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LEARN_TALENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Talent::LearnTalents, &WorldSession::HandleLearnTalentsOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_LEAVE_GROUP, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGroupDisbandOpcode );
+ DEFINE_HANDLER(CMSG_LEAVE_GROUP, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::LeaveGroup, &WorldSession::HandleLeaveGroupOpcode);
DEFINE_HANDLER(CMSG_LEAVE_PET_BATTLE_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LFG_LIST_APPLY_TO_GROUP, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_LFG_LIST_CANCEL_APPLICATION, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -512,7 +515,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_MAIL_TAKE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Mail::MailTakeItem, &WorldSession::HandleMailTakeItem);
DEFINE_HANDLER(CMSG_MAIL_TAKE_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Mail::MailTakeMoney, &WorldSession::HandleMailTakeMoney);
DEFINE_OPCODE_HANDLER_OLD(CMSG_MASTER_LOOT_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleLootMasterGiveOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_MINIMAP_PING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMinimapPingOpcode );
+ DEFINE_HANDLER(CMSG_MINIMAP_PING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::MinimapPingClient, &WorldSession::HandleMinimapPingOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_MISSILE_TRAJECTORY_COLLISION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateProjectilePosition );
DEFINE_HANDLER(CMSG_MOUNT_SET_FAVORITE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_MOUNT_SPECIAL_ANIM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSpecialAnimOpcode );
@@ -588,10 +591,10 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_OPEN_MISSION_NPC, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_OPEN_SHIPMENT_NPC, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_OPEN_TRADESKILL_NPC, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_OPT_OUT_OF_LOOT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleOptOutOfLootOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_PARTY_INVITE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupInviteOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_PARTY_INVITE_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupInviteResponseOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_PARTY_UNINVITE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupUninviteOpcode );
+ DEFINE_HANDLER(CMSG_OPT_OUT_OF_LOOT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::OptOutOfLoot, &WorldSession::HandleOptOutOfLootOpcode);
+ DEFINE_HANDLER(CMSG_PARTY_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::PartyInviteClient, &WorldSession::HandlePartyInviteOpcode);
+ DEFINE_HANDLER(CMSG_PARTY_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::PartyInviteResponse, &WorldSession::HandlePartyInviteResponseOpcode);
+ DEFINE_HANDLER(CMSG_PARTY_UNINVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::PartyUninvite, &WorldSession::HandlePartyUninviteOpcode);
DEFINE_HANDLER(CMSG_PETITION_BUY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::PetitionBuy, &WorldSession::HandlePetitionBuy);
DEFINE_HANDLER(CMSG_PETITION_RENAME_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::PetitionRenameGuild, &WorldSession::HandlePetitionRenameGuild);
DEFINE_HANDLER(CMSG_PETITION_SHOW_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::PetitionShowList, &WorldSession::HandlePetitionShowList);
@@ -653,7 +656,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUEST_PUSH_RESULT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestPushResult );
DEFINE_HANDLER(CMSG_QUEUED_MESSAGES_END, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_RANDOM_ROLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::RandomRollClient, &WorldSession::HandleRandomRollOpcode);
- DEFINE_HANDLER(CMSG_READY_CHECK_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_READY_CHECK_RESPONSE, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::ReadyCheckResponseClient, &WorldSession::HandleReadyCheckResponseOpcode);
DEFINE_HANDLER(CMSG_READ_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::ReadItem, &WorldSession::HandleReadItem);
DEFINE_HANDLER(CMSG_RECLAIM_CORPSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::ReclaimCorpse, &WorldSession::HandleReclaimCorpse);
DEFINE_HANDLER(CMSG_RECRUIT_A_FRIEND, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -674,12 +677,12 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_REQUEST_GUILD_REWARDS_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Guild::RequestGuildRewardsList, &WorldSession::HandleRequestGuildRewardsList);
DEFINE_HANDLER(CMSG_REQUEST_HONOR_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Inspect::RequestHonorStats, &WorldSession::HandleRequestHonorStatsOpcode);
DEFINE_HANDLER(CMSG_REQUEST_LFG_LIST_BLACKLIST, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PARTY_JOIN_UPDATES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupRequestJoinUpdates);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PARTY_MEMBER_STATS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPartyMemberStatsOpcode);
+ DEFINE_HANDLER(CMSG_REQUEST_PARTY_JOIN_UPDATES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::RequestPartyJoinUpdates, &WorldSession::HandleRequestPartyJoinUpdates);
+ DEFINE_HANDLER(CMSG_REQUEST_PARTY_MEMBER_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::RequestPartyMemberStats, &WorldSession::HandleRequestPartyMemberStatsOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PET_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPetInfoOpcode );
DEFINE_HANDLER(CMSG_REQUEST_PLAYED_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::RequestPlayedTime, &WorldSession::HandlePlayedTime);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PVP_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleRequestPvpReward );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RAID_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRaidInfoOpcode );
+ DEFINE_HANDLER(CMSG_REQUEST_RAID_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::RequestRaidInfo, &WorldSession::HandleRequestRaidInfoOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RATED_BATTLEFIELD_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRatedBattlefieldInfo);
DEFINE_HANDLER(CMSG_REQUEST_RESEARCH_HISTORY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_STABLED_PETS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleListStabledPetsOpcode );
@@ -689,11 +692,11 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_SWITCH_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::RequestVehicleSwitchSeat, &WorldSession::HandleRequestVehicleSwitchSeat);
DEFINE_HANDLER(CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Token::RequestWowTokenMarketPrice, &WorldSession::HandleRequestWowTokenMarketPrice);
DEFINE_HANDLER(CMSG_RESET_CHALLENGE_MODE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_RESET_INSTANCES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleResetInstancesOpcode );
+ DEFINE_HANDLER(CMSG_RESET_INSTANCES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Instance::ResetInstances, &WorldSession::HandleResetInstancesOpcode);
DEFINE_HANDLER(CMSG_RESURRECT_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::ResurrectResponse, &WorldSession::HandleResurrectResponse);
DEFINE_HANDLER(CMSG_REVERT_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_RIDE_VEHICLE_INTERACT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::RideVehicleInteract, &WorldSession::HandleRideVehicleInteract);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SAVE_CUF_PROFILES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleSaveCUFProfiles );
+ DEFINE_HANDLER(CMSG_SAVE_CUF_PROFILES, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Misc::SaveCUFProfiles, &WorldSession::HandleSaveCUFProfiles);
DEFINE_HANDLER(CMSG_SAVE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::EquipmentSet::SaveEquipmentSet, &WorldSession::HandleEquipmentSetSave);
DEFINE_HANDLER(CMSG_SAVE_GUILD_EMBLEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::SaveGuildEmblem, &WorldSession::HandleSaveGuildEmblem);
DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_CANCELED, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Scenes::ScenePlaybackCanceled, &WorldSession::HandleScenePlaybackCanceled);
@@ -714,7 +717,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_ACTIVE_MOVER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Movement::SetActiveMover, &WorldSession::HandleSetActiveMoverOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACTIVE_VOICE_CHANNEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActiveVoiceChannel );
DEFINE_HANDLER(CMSG_SET_ADVANCED_COMBAT_LOGGING, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ASSISTANT_LEADER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGroupAssistantLeaderOpcode);
+ DEFINE_HANDLER(CMSG_SET_ASSISTANT_LEADER, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::SetAssistantLeader, &WorldSession::HandleSetAssistantLeaderOpcode);
DEFINE_HANDLER(CMSG_SET_BACKPACK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_BANK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_BANK_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -722,22 +725,22 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_CURRENCY_FLAGS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_DIFFICULTY_ID, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_DUNGEON_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetDungeonDifficulty, &WorldSession::HandleSetDungeonDifficultyOpcode);
- DEFINE_HANDLER(CMSG_SET_EVERYONE_IS_ASSISTANT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_SET_EVERYONE_IS_ASSISTANT, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::SetEveryoneIsAssistant, &WorldSession::HandleSetEveryoneIsAssistant);
DEFINE_HANDLER(CMSG_SET_FACTION_AT_WAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::SetFactionAtWar, &WorldSession::HandleSetFactionAtWar);
DEFINE_HANDLER(CMSG_SET_FACTION_INACTIVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::SetFactionInactive, &WorldSession::HandleSetFactionInactiveOpcode);
DEFINE_HANDLER(CMSG_SET_FACTION_NOT_AT_WAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::SetFactionNotAtWar, &WorldSession::HandleSetFactionNotAtWar);
DEFINE_HANDLER(CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_LFG_BONUS_FACTION_ID, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_LOOT_METHOD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleLootMethodOpcode );
+ DEFINE_HANDLER(CMSG_SET_LOOT_METHOD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::SetLootMethod, &WorldSession::HandleSetLootMethodOpcode);
DEFINE_HANDLER(CMSG_SET_LOOT_SPECIALIZATION, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_PARTY_ASSIGNMENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyAssignmentOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_PARTY_LEADER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGroupSetLeaderOpcode );
+ DEFINE_HANDLER(CMSG_SET_PARTY_LEADER, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::SetPartyLeader, &WorldSession::HandleSetPartyLeaderOpcode);
DEFINE_HANDLER(CMSG_SET_PET_SLOT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_PLAYER_DECLINED_NAMES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetPlayerDeclinedNames );
DEFINE_HANDLER(CMSG_SET_PREFERRED_CEMETERY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_PVP, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_RAID_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetRaidDifficulty, &WorldSession::HandleSetRaidDifficultyOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ROLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGroupSetRolesOpcode );
+ DEFINE_HANDLER(CMSG_SET_ROLE, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::SetRole, &WorldSession::HandleSetRoleOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SAVED_INSTANCE_EXTEND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetSavedInstanceExtend );
DEFINE_HANDLER(CMSG_SET_SELECTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetSelection, &WorldSession::HandleSetSelectionOpcode);
DEFINE_HANDLER(CMSG_SET_SHEATHED, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Combat::SetSheathed, &WorldSession::HandleSetSheathedOpcode);
@@ -773,7 +776,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SUSPEND_TOKEN_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SWAP_INV_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::SwapInvItem, &WorldSession::HandleSwapInvItemOpcode);
DEFINE_HANDLER(CMSG_SWAP_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::SwapItem, &WorldSession::HandleSwapItem);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SWAP_SUB_GROUPS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGroupSwapSubGroupOpcode );
+ DEFINE_HANDLER(CMSG_SWAP_SUB_GROUPS, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::SwapSubGroups, &WorldSession::HandleSwapSubGroupsOpcode);
DEFINE_HANDLER(CMSG_SWAP_VOID_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::VoidStorage::SwapVoidItem, &WorldSession::HandleVoidSwapItem);
DEFINE_HANDLER(CMSG_TABARD_VENDOR_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleTabardVendorActivateOpcode);
DEFINE_HANDLER(CMSG_TALK_TO_GOSSIP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleGossipHelloOpcode);
@@ -789,7 +792,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_TOGGLE_PVP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTogglePvP );
DEFINE_OPCODE_HANDLER_OLD(CMSG_TOTEM_DESTROYED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTotemDestroyed );
DEFINE_HANDLER(CMSG_TOY_SET_FAVORITE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_TRAINER_BUY_SPELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTrainerBuySpellOpcode );
+ DEFINE_HANDLER(CMSG_TRAINER_BUY_SPELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::TrainerBuySpell, &WorldSession::HandleTrainerBuySpellOpcode);
DEFINE_HANDLER(CMSG_TRAINER_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleTrainerListOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_TRANSMOGRIFY_ITEMS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogrifyItems );
DEFINE_HANDLER(CMSG_TURN_IN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::TurnInPetition, &WorldSession::HandleTurnInPetition);
@@ -807,7 +810,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::ClientConfig::UserClientUpdateAccountData, &WorldSession::HandleUpdateAccountData);
DEFINE_HANDLER(CMSG_UPDATE_CLIENT_SETTINGS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_MISSILE_TRAJECTORY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateMissileTrajectory );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_RAID_TARGET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRaidTargetUpdateOpcode );
+ DEFINE_HANDLER(CMSG_UPDATE_RAID_TARGET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::UpdateRaidTarget, &WorldSession::HandleUpdateRaidTargetOpcode);
DEFINE_HANDLER(CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Token::UpdateListedAuctionableTokens, &WorldSession::HandleUpdateListedAuctionableTokens);
DEFINE_HANDLER(CMSG_UPDATE_WOW_TOKEN_COUNT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UPGRADE_GARRISON, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -988,7 +991,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_JOINED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY_LEFT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_LOGIN_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -998,8 +1001,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_STARTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_FACTION_CHANGE_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_AUTO_RESPONDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1011,7 +1014,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_PLAYER_NOTFOUND, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_RECONNECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_RESTRICTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_SERVER_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_SERVER_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHEAT_IGNORE_DIMISHING_RETURNS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_WARGAME_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHUNKED_PACKET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1058,7 +1061,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DIFFERENT_INSTANCE_FROM_PARTY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISENCHANT_CREDIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISMOUNT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISMOUNT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISMOUNT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPEL_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DISPLAY_GAME_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1081,7 +1084,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENUM_CHARACTERS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTAL_DAMAGE_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTAL_DAMAGE_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_ID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1107,51 +1110,51 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_SPEED_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_FOLLOWER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_ACTIVATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_LANDMARKS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COMPLETE_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CREATE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_DELETE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL2, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_XP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_IS_UPGRADEABLE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LANDINGPAGE_SHIPMENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LIST_MISSIONS_CHEAT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_NUM_FOLLOWER_ACTIVATIONS_REMAINING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_ARCHITECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_MISSION_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_TRADESKILL_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLACE_BUILDING_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLOT_PLACED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLOT_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECALL_PORTAL_LAST_USED_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECALL_PORTAL_USED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECRUITMENT_FOLLOWERS_GENERATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOTE_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOVE_FOLLOWER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_START_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UPGRADE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_FOLLOWER_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_ACTIVATED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_LANDMARKS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_REMOVED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COMPLETE_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CREATE_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_DELETE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL2, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_XP, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_IS_UPGRADEABLE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LANDINGPAGE_SHIPMENTS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_LIST_MISSIONS_CHEAT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_MISSION_BONUS_ROLL_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_NUM_FOLLOWER_ACTIVATIONS_REMAINING, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_ARCHITECT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_MISSION_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_OPEN_TRADESKILL_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLACE_BUILDING_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLOT_PLACED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_PLOT_REMOVED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECALL_PORTAL_LAST_USED_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECALL_PORTAL_USED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECRUITMENT_FOLLOWERS_GENERATED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_RECRUIT_FOLLOWER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOTE_INFO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REMOVE_FOLLOWER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_START_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_UPGRADE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_DISPLAYED_TROPHY_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_GARRISON_INFO_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_SHIPMENT_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_TROPHY_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_DISPLAYED_TROPHY_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_GARRISON_INFO_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_SHIPMENT_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GET_TROPHY_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_PLAYER_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_REQUEST_PLAYER_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_CASE_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1167,10 +1170,10 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_POI, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_ACTION_THROTTLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DECLINE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DESTROYED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_NEW_LEADER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_UNINVITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DECLINE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DESTROYED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_NEW_LEADER, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_UNINVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_DELETED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_EARNED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_MEMBERS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1246,21 +1249,21 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_ENCOUNTER_TIMER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_GROUP_SIZE_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_SAVE_CREATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALIDATE_PLAYER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALID_PROMOTION_CODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVENTORY_CHANGE_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_IS_QUEST_COMPLETE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_ENCHANT_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_ENCHANT_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_EXPIRE_PURCHASE_REFUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PURCHASE_REFUND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_KICK_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARN_TALENT_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1296,7 +1299,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_CHARACTER_COPY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_CUF_PROFILES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_CUF_PROFILES, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_EQUIPMENT_SET, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_SELECTED_TROPHY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_SET_TIME_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1325,7 +1328,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MAP_OBJ_EVENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MASTER_LOOT_CANDIDATE_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MESSAGE_BOX, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_MINIMAP_PING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MINIMAP_PING, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MIRROR_IMAGE_COMPONENTED_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MIRROR_IMAGE_CREATURE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MISSILE_CANCEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1420,7 +1423,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MONEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_RECEIVED_MAIL, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_OFFER_PETITION_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_OFFER_PETITION_ERROR, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ON_MONSTER_MOVE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_CONTAINER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1429,14 +1432,14 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_SHIPMENT_NPC_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OVERRIDE_LIGHT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAGE_TEXT, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_COMMAND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_INVITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_KILL_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAUSE_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PENDING_RAID_LOCK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_ALREADY_SIGNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_ALREADY_SIGNED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_RENAME_GUILD_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_SIGNATURES, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1495,7 +1498,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRINT_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROC_RESIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROPOSE_LEVEL_GRANT, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_LOG_DATA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_SEASON, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1504,7 +1507,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GAME_OBJECT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GARRISON_CREATURE_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GUILD_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_ITEM_TEXT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_ITEM_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_NPC_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PAGE_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PETITION_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1537,12 +1540,12 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_DIFFICULTY_SET, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_GROUP_ONLY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_INSTANCE_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_MARKERS_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_MARKERS_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RANDOM_ROLL, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RATED_BATTLEFIELD_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_READY_CHECK_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_READY_CHECK_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_READY_CHECK_STARTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_READY_CHECK_COMPLETED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_READY_CHECK_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_READY_CHECK_STARTED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_READ_ITEM_RESULT_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_READ_ITEM_RESULT_OK, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_QUERY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1561,7 +1564,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_WOW_TOKEN_MARKET_PRICE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESEARCH_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_COMPRESSION_CONTEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_FAILED_NOTIFY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_FAILED_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_RANGED_COMBAT_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_WEEKLY_CURRENCY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPEC_WIPE_CONFIRM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1571,9 +1574,9 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_TOKEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESURRECT_REQUEST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESYNC_RUNES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHANGED_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHANGED_INFORM, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHOSEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_POLL_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_POLL_INFORM, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RUNE_REGEN_DEBUG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_BOOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1592,8 +1595,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SELL_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_ITEM_PASSIVES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_KNOWN_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_RAID_TARGET_UPDATE_ALL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_RAID_TARGET_UPDATE_SINGLE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_RAID_TARGET_UPDATE_ALL, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_RAID_TARGET_UPDATE_SINGLE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_SPELL_HISTORY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_UNLEARN_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1625,7 +1628,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PLAYER_DECLINED_NAMES_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PLAY_HOVER_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PROFICIENCY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_SPELL_CHARGES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_TASK_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_TIME_ZONE_INFORMATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_VEHICLE_REC_ID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1643,19 +1646,19 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DAMAGE_SHIELD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DELAYED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DISPELL_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_ENERGIZE_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_ENERGIZE_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_EXECUTE_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_FAILED_OTHER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_FAILURE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_GO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_HEAL_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_INSTAKILL_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_INTERRUPT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_INSTAKILL_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_INTERRUPT_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_MISS_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_MULTISTRIKE_EFFECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_NON_MELEE_DAMAGE_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_OR_DAMAGE_IMMUNE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_PERIODIC_AURA_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_PERIODIC_AURA_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_UPDATE_CHAIN_TARGETS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPIRIT_HEALER_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1691,8 +1694,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_MOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRADE_STATUS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRADE_UPDATED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAINER_BUY_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAINER_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAINER_BUY_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAINER_LIST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSFER_ABORTED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSFER_PENDING, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_CINEMATIC, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1709,17 +1712,17 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_CHARACTER_FLAGS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_DUNGEON_ENCOUNTER_FOR_LOOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_EXPANSION_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_INSTANCE_OWNERSHIP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_LAST_INSTANCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_INSTANCE_OWNERSHIP, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_LAST_INSTANCE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_OBJECT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_TALENT_DATA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_TASK_PROGRESS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_WEEKLY_SPELL_USAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_WORLD_STATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_ADD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_REMOVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_ADD, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_REMOVE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_USERLIST_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_USE_EQUIPMENT_SET_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VENDOR_INVENTORY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_VIGNETTE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index db4ec66ea00..650e100f514 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -322,6 +322,10 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
if (IsConnectionIdle())
m_Socket[CONNECTION_TYPE_REALM]->CloseSocket();
+ if (updater.ProcessUnsafe())
+ while (_player && _player->IsBeingTeleportedSeamlessly())
+ HandleMoveWorldportAckOpcode();
+
///- Retrieve packets from the receive queue and call the appropriate handlers
/// not process packets if socket already closed
WorldPacket* packet = NULL;
@@ -453,7 +457,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
//check if we are safe to proceed with logout
//logout procedure should happen only in World::UpdateSessions() method!!!
- if (updater.ProcessLogout())
+ if (updater.ProcessUnsafe())
{
time_t currTime = time(NULL);
///- If necessary, log the player out
@@ -909,31 +913,23 @@ bool WorldSession::IsAddonRegistered(const std::string& prefix) const
return itr != _registeredAddonPrefixes.end();
}
-void WorldSession::HandleUnregisterAddonPrefixesOpcode(WorldPacket& /*recvPacket*/) // empty packet
+void WorldSession::HandleUnregisterAllAddonPrefixesOpcode(WorldPackets::Chat::ChatUnregisterAllAddonPrefixes& /*packet*/) // empty packet
{
_registeredAddonPrefixes.clear();
}
-void WorldSession::HandleAddonRegisteredPrefixesOpcode(WorldPacket& recvPacket)
+void WorldSession::HandleAddonRegisteredPrefixesOpcode(WorldPackets::Chat::ChatRegisterAddonPrefixes& packet)
{
- // This is always sent after CMSG_UNREGISTER_ALL_ADDON_PREFIXES
+ // This is always sent after CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES
- uint32 count = recvPacket.ReadBits(25);
-
- if (count > REGISTERED_ADDON_PREFIX_SOFTCAP)
+ if (packet.Prefixes.size() > REGISTERED_ADDON_PREFIX_SOFTCAP)
{
// if we have hit the softcap (64) nothing should be filtered
_filterAddonMessages = false;
- recvPacket.rfinish();
return;
}
- std::vector<uint8> lengths(count);
- for (uint32 i = 0; i < count; ++i)
- lengths[i] = recvPacket.ReadBits(5);
-
- for (uint32 i = 0; i < count; ++i)
- _registeredAddonPrefixes.push_back(recvPacket.ReadString(lengths[i]));
+ _registeredAddonPrefixes.insert(_registeredAddonPrefixes.end(), packet.Prefixes.begin(), packet.Prefixes.end());
if (_registeredAddonPrefixes.size() > REGISTERED_ADDON_PREFIX_SOFTCAP) // shouldn't happen
{
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 631f87aeb11..d0242b86440 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -186,6 +186,8 @@ namespace WorldPackets
class ChatMessageEmote;
class CTextEmote;
class EmoteClient;
+ class ChatRegisterAddonPrefixes;
+ class ChatUnregisterAllAddonPrefixes;
}
namespace Combat
@@ -214,6 +216,15 @@ namespace WorldPackets
class GameObjUse;
}
+ namespace Garrison
+ {
+ class GetGarrisonInfo;
+ class GarrisonPurchaseBuilding;
+ class GarrisonCancelConstruction;
+ class GarrisonRequestBlueprintAndSpecializationData;
+ class GarrisonGetBuildingLandmarks;
+ }
+
namespace Guild
{
class QueryGuildInfo;
@@ -266,6 +277,12 @@ namespace WorldPackets
class RequestHonorStats;
}
+ namespace Instance
+ {
+ class InstanceInfo;
+ class ResetInstances;
+ }
+
namespace Item
{
class AutoEquipItem;
@@ -282,6 +299,7 @@ namespace WorldPackets
class SwapInvItem;
class SwapItem;
class WrapItem;
+ class CancelTempEnchantment;
}
namespace Loot
@@ -327,6 +345,9 @@ namespace WorldPackets
class ObjectUpdateRescued;
class CompleteCinematic;
class NextCinematicCamera;
+ class FarSight;
+ class LoadCUFProfiles;
+ class SaveCUFProfiles;
}
namespace Movement
@@ -346,6 +367,48 @@ namespace WorldPackets
class Hello;
class GossipSelectOption;
class SpiritHealerActivate;
+ class TrainerBuySpell;
+ }
+
+ namespace Party
+ {
+ class PartyCommandResult;
+ class PartyInviteClient;
+ class PartyInvite;
+ class PartyInviteResponse;
+ class PartyUninvite;
+ class GroupDecline;
+ class RequestPartyMemberStats;
+ class PartyMemberStats;
+ class SetPartyLeader;
+ class SetRole;
+ class RoleChangedInform;
+ class SetLootMethod;
+ class LeaveGroup;
+ class MinimapPingClient;
+ class MinimapPing;
+ class UpdateRaidTarget;
+ class SendRaidTargetUpdateSingle;
+ class SendRaidTargetUpdateAll;
+ class ConvertRaid;
+ class RequestPartyJoinUpdates;
+ class SetAssistantLeader;
+ class DoReadyCheck;
+ class ReadyCheckStarted;
+ class ReadyCheckResponseClient;
+ class ReadyCheckResponse;
+ class ReadyCheckCompleted;
+ class RequestRaidInfo;
+ class OptOutOfLoot;
+ class InitiateRolePoll;
+ class RolePollInform;
+ class GroupNewLeader;
+ class PartyUpdate;
+ class SetEveryoneIsAssistant;
+ class ChangeSubGroup;
+ class SwapSubGroups;
+ class RaidMarkersChanged;
+ class ClearRaidMarker;
}
namespace Petition
@@ -375,6 +438,7 @@ namespace WorldPackets
class QueryPetName;
class QuestPOIQuery;
class QueryQuestCompletionNPCs;
+ class ItemTextQuery;
}
namespace Quest
@@ -635,8 +699,8 @@ public:
explicit PacketFilter(WorldSession* pSession) : m_pSession(pSession) { }
virtual ~PacketFilter() { }
- virtual bool Process(WorldPacket* /*packet*/) { return true; }
- virtual bool ProcessLogout() const { return true; }
+ virtual bool Process(WorldPacket* /*packet*/) = 0;
+ virtual bool ProcessUnsafe() const { return false; }
protected:
WorldSession* const m_pSession;
@@ -653,9 +717,7 @@ public:
explicit MapSessionFilter(WorldSession* pSession) : PacketFilter(pSession) { }
~MapSessionFilter() { }
- virtual bool Process(WorldPacket* packet) override;
- //in Map::Update() we do not process player logout!
- virtual bool ProcessLogout() const override { return false; }
+ bool Process(WorldPacket* packet) override;
};
//class used to filer only thread-unsafe packets from queue
@@ -666,7 +728,8 @@ public:
explicit WorldSessionFilter(WorldSession* pSession) : PacketFilter(pSession) { }
~WorldSessionFilter() { }
- virtual bool Process(WorldPacket* packet) override;
+ bool Process(WorldPacket* packet) override;
+ bool ProcessUnsafe() const override { return true; }
};
struct PacketCounter
@@ -843,8 +906,6 @@ class WorldSession
void SendNotInArenaTeamPacket(uint8 type);
void SendPetitionShowList(ObjectGuid guid);
- void BuildPartyMemberStatsChangedPacket(Player* player, WorldPacket* data);
-
void DoLootRelease(ObjectGuid lguid);
// Account mute time
@@ -1039,28 +1100,31 @@ class WorldSession
void HandleMoveTimeSkippedOpcode(WorldPackets::Movement::MoveTimeSkipped& moveTimeSkipped);
void HandleMovementAckMessage(WorldPackets::Movement::MovementAckMessage& movementAck);
- void HandleRequestRaidInfoOpcode(WorldPacket& recvData);
+ void HandleRequestRaidInfoOpcode(WorldPackets::Party::RequestRaidInfo& packet);
- void HandleGroupInviteOpcode(WorldPacket& recvPacket);
+ void HandlePartyInviteOpcode(WorldPackets::Party::PartyInviteClient& packet);
//void HandleGroupCancelOpcode(WorldPacket& recvPacket);
- void HandleGroupInviteResponseOpcode(WorldPacket& recvPacket);
- void HandleGroupUninviteOpcode(WorldPacket& recvPacket);
- void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
- void HandleGroupSetRolesOpcode(WorldPacket& recvData);
- void HandleGroupDisbandOpcode(WorldPacket& recvPacket);
- void HandleOptOutOfLootOpcode(WorldPacket& recvData);
- void HandleLootMethodOpcode(WorldPacket& recvPacket);
+ void HandlePartyInviteResponseOpcode(WorldPackets::Party::PartyInviteResponse& packet);
+ void HandlePartyUninviteOpcode(WorldPackets::Party::PartyUninvite& packet);
+ void HandleSetPartyLeaderOpcode(WorldPackets::Party::SetPartyLeader& packet);
+ void HandleSetRoleOpcode(WorldPackets::Party::SetRole& packet);
+ void HandleLeaveGroupOpcode(WorldPackets::Party::LeaveGroup& packet);
+ void HandleOptOutOfLootOpcode(WorldPackets::Party::OptOutOfLoot& packet);
+ void HandleSetLootMethodOpcode(WorldPackets::Party::SetLootMethod& packet);
void HandleLootRoll(WorldPackets::Loot::LootRoll& packet);
- void HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData);
- void HandleRaidTargetUpdateOpcode(WorldPacket& recvData);
- void HandleRaidReadyCheckOpcode(WorldPacket& recvData);
- void HandleGroupRaidConvertOpcode(WorldPacket& recvData);
- void HandleGroupRequestJoinUpdates(WorldPacket& recvData);
- void HandleGroupChangeSubGroupOpcode(WorldPacket& recvData);
- void HandleGroupSwapSubGroupOpcode(WorldPacket& recvData);
- void HandleGroupAssistantLeaderOpcode(WorldPacket& recvData);
+ void HandleRequestPartyMemberStatsOpcode(WorldPackets::Party::RequestPartyMemberStats& packet);
+ void HandleUpdateRaidTargetOpcode(WorldPackets::Party::UpdateRaidTarget& packet);
+ void HandleDoReadyCheckOpcode(WorldPackets::Party::DoReadyCheck& packet);
+ void HandleReadyCheckResponseOpcode(WorldPackets::Party::ReadyCheckResponseClient& packet);
+ void HandleConvertRaidOpcode(WorldPackets::Party::ConvertRaid& packet);
+ void HandleRequestPartyJoinUpdates(WorldPackets::Party::RequestPartyJoinUpdates& packet);
+ void HandleChangeSubGroupOpcode(WorldPackets::Party::ChangeSubGroup& packet);
+ void HandleSwapSubGroupsOpcode(WorldPackets::Party::SwapSubGroups& packet);
+ void HandleSetAssistantLeaderOpcode(WorldPackets::Party::SetAssistantLeader& packet);
void HandlePartyAssignmentOpcode(WorldPacket& recvData);
- void HandleRolePollBeginOpcode(WorldPacket& recvData);
+ void HandleInitiateRolePoll(WorldPackets::Party::InitiateRolePoll& packet);
+ void HandleSetEveryoneIsAssistant(WorldPackets::Party::SetEveryoneIsAssistant& packet);
+ void HandleClearRaidMarker(WorldPackets::Party::ClearRaidMarker& packet);
void HandleDeclinePetition(WorldPackets::Petition::DeclinePetition& packet);
void HandleOfferPetition(WorldPackets::Petition::OfferPetition& packet);
@@ -1119,7 +1183,7 @@ class WorldSession
void HandleTabardVendorActivateOpcode(WorldPackets::NPC::Hello& packet);
void HandleBankerActivateOpcode(WorldPackets::NPC::Hello& packet);
void HandleTrainerListOpcode(WorldPackets::NPC::Hello& packet);
- void HandleTrainerBuySpellOpcode(WorldPacket& recvPacket);
+ void HandleTrainerBuySpellOpcode(WorldPackets::NPC::TrainerBuySpell& packet);
void HandlePetitionShowList(WorldPackets::Petition::PetitionShowList& packet);
void HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet);
void HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelectOption& packet);
@@ -1135,7 +1199,7 @@ class WorldSession
void HandleStableRevivePet(WorldPacket& recvPacket);
void HandleStableSwapPet(WorldPacket& recvPacket);
void HandleStableSwapPetCallback(PreparedQueryResult result, uint32 petId);
- void SendTrainerBuyFailed(ObjectGuid guid, uint32 spellId, uint32 reason);
+ void SendTrainerBuyFailed(ObjectGuid trainerGUID, uint32 spellID, int32 trainerFailedReason);
void HandleCanDuel(WorldPackets::Duel::CanDuel& packet);
void HandleDuelResponseOpcode(WorldPackets::Duel::DuelResponse& duelResponse);
@@ -1179,7 +1243,7 @@ class WorldSession
void HandleMailMarkAsRead(WorldPackets::Mail::MailMarkAsRead& packet);
void HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSender& packet);
void HandleMailDelete(WorldPackets::Mail::MailDelete& packet);
- void HandleItemTextQuery(WorldPacket& recvData);
+ void HandleItemTextQuery(WorldPackets::Query::ItemTextQuery& itemTextQuery);
void HandleMailCreateTextItem(WorldPackets::Mail::MailCreateTextItem& packet);
void HandleQueryNextMailTime(WorldPackets::Mail::MailQueryNextMailTime& packet);
void HandleCancelChanneling(WorldPacket& recvData);
@@ -1190,7 +1254,6 @@ class WorldSession
void HandleDestroyItemOpcode(WorldPackets::Item::DestroyItem& destroyItem);
void HandleAutoEquipItemOpcode(WorldPackets::Item::AutoEquipItem& autoEquipItem);
void HandleSellItemOpcode(WorldPackets::Item::SellItem& packet);
- void HandleBuyItemInSlotOpcode(WorldPacket& recvPacket);
void HandleBuyItemOpcode(WorldPackets::Item::BuyItem& packet);
void HandleListInventoryOpcode(WorldPackets::NPC::Hello& packet);
void HandleAutoStoreBagItemOpcode(WorldPackets::Item::AutoStoreBagItem& packet);
@@ -1252,8 +1315,8 @@ class WorldSession
void HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet);
void HandleChatIgnoredOpcode(WorldPacket& recvPacket);
- void HandleUnregisterAddonPrefixesOpcode(WorldPacket& recvPacket);
- void HandleAddonRegisteredPrefixesOpcode(WorldPacket& recvPacket);
+ void HandleUnregisterAllAddonPrefixesOpcode(WorldPackets::Chat::ChatUnregisterAllAddonPrefixes& packet);
+ void HandleAddonRegisteredPrefixesOpcode(WorldPackets::Chat::ChatRegisterAddonPrefixes& packet);
void HandleReclaimCorpse(WorldPackets::Misc::ReclaimCorpse& packet);
void HandleQueryCorpseLocation(WorldPackets::Query::QueryCorpseLocationFromClient& packet);
@@ -1326,9 +1389,9 @@ class WorldSession
void HandleWardenDataOpcode(WorldPacket& recvData);
void HandleWorldTeleportOpcode(WorldPacket& recvData);
- void HandleMinimapPingOpcode(WorldPacket& recvData);
+ void HandleMinimapPingOpcode(WorldPackets::Party::MinimapPingClient& packet);
void HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet);
- void HandleFarSightOpcode(WorldPacket& recvData);
+ void HandleFarSightOpcode(WorldPackets::Misc::FarSight& packet);
void HandleSetDungeonDifficultyOpcode(WorldPackets::Misc::SetDungeonDifficulty& setDungeonDifficulty);
void HandleSetRaidDifficultyOpcode(WorldPackets::Misc::SetRaidDifficulty& setRaidDifficulty);
void HandleMoveSetCanFlyAckOpcode(WorldPacket& recvData);
@@ -1336,7 +1399,7 @@ class WorldSession
void HandleRealmSplitOpcode(WorldPacket& recvData);
void HandleTimeSyncResponse(WorldPackets::Misc::TimeSyncResponse& packet);
void HandleWhoIsOpcode(WorldPackets::Who::WhoIsRequest& packet);
- void HandleResetInstancesOpcode(WorldPacket& recvData);
+ void HandleResetInstancesOpcode(WorldPackets::Instance::ResetInstances& packet);
void HandleInstanceLockResponse(WorldPacket& recvPacket);
// Looking for Dungeon/Raid
@@ -1374,7 +1437,7 @@ class WorldSession
// Socket gem
void HandleSocketOpcode(WorldPacket& recvData);
- void HandleCancelTempEnchantmentOpcode(WorldPacket& recvData);
+ void HandleCancelTempEnchantmentOpcode(WorldPackets::Item::CancelTempEnchantment& cancelTempEnchantment);
void HandleGetItemPurchaseData(WorldPackets::Item::GetItemPurchaseData& packet);
void HandleItemRefund(WorldPacket& recvData);
@@ -1459,9 +1522,16 @@ class WorldSession
void HandleRequestWowTokenMarketPrice(WorldPackets::Token::RequestWowTokenMarketPrice& requestWowTokenMarketPrice);
// Compact Unit Frames (4.x)
- void HandleSaveCUFProfiles(WorldPacket& recvPacket);
+ void HandleSaveCUFProfiles(WorldPackets::Misc::SaveCUFProfiles& packet);
void SendLoadCUFProfiles();
+ // Garrison
+ void HandleGetGarrisonInfo(WorldPackets::Garrison::GetGarrisonInfo& getGarrisonInfo);
+ void HandleGarrisonPurchaseBuilding(WorldPackets::Garrison::GarrisonPurchaseBuilding& garrisonPurchaseBuilding);
+ void HandleGarrisonCancelConstruction(WorldPackets::Garrison::GarrisonCancelConstruction& garrisonCancelConstruction);
+ void HandleGarrisonRequestBlueprintAndSpecializationData(WorldPackets::Garrison::GarrisonRequestBlueprintAndSpecializationData& garrisonRequestBlueprintAndSpecializationData);
+ void HandleGarrisonGetBuildingLandmarks(WorldPackets::Garrison::GarrisonGetBuildingLandmarks& garrisonGetBuildingLandmarks);
+
private:
void InitializeQueryCallbackParameters();
void ProcessQueryCallbacks();
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index e4b98f1c54b..bc1306d73e1 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -44,8 +44,8 @@ struct CompressedWorldPacket
using boost::asio::ip::tcp;
std::string const WorldSocket::ServerConnectionInitialize("WORLD OF WARCRAFT CONNECTION - SERVER TO CLIENT");
-
std::string const WorldSocket::ClientConnectionInitialize("WORLD OF WARCRAFT CONNECTION - CLIENT TO SERVER");
+uint32 const WorldSocket::MinSizeForCompression = 0x400;
uint32 const SizeOfClientHeader[2][2] =
{
@@ -54,7 +54,6 @@ uint32 const SizeOfClientHeader[2][2] =
};
uint32 const SizeOfServerHeader[2] = { sizeof(uint16) + sizeof(uint32), sizeof(uint32) };
-
WorldSocket::WorldSocket(tcp::socket&& socket) : Socket(std::move(socket)),
_type(CONNECTION_TYPE_REALM), _authSeed(rand32()), _OverSpeedPings(0),
_worldSession(nullptr), _authed(false), _compressionStream(nullptr), _initialized(false)
@@ -375,7 +374,7 @@ void WorldSocket::SendPacket(WorldPacket const& packet)
uint32 packetSize = packet.size();
uint32 sizeOfHeader = SizeOfServerHeader[_authCrypt.IsInitialized()];
- if (packetSize > 0x400)
+ if (packetSize > MinSizeForCompression && _authCrypt.IsInitialized())
packetSize = compressBound(packetSize) + sizeof(CompressedWorldPacket);
std::unique_lock<std::mutex> guard(_writeLock);
@@ -403,7 +402,7 @@ void WorldSocket::WritePacketToBuffer(WorldPacket const& packet, MessageBuffer&
uint8* headerPos = buffer.GetWritePointer();
buffer.WriteCompleted(sizeOfHeader);
- if (packetSize > 0x400)
+ if (packetSize > MinSizeForCompression && _authCrypt.IsInitialized())
{
CompressedWorldPacket cmp;
cmp.UncompressedSize = packetSize + 4;
@@ -451,7 +450,7 @@ uint32 WorldSocket::CompressPacket(uint8* buffer, WorldPacket const& packet)
_compressionStream->next_in = (Bytef*)&opcode;
_compressionStream->avail_in = sizeof(uint32);
- int32 z_res = deflate(_compressionStream, Z_BLOCK);
+ int32 z_res = deflate(_compressionStream, Z_NO_FLUSH);
if (z_res != Z_OK)
{
TC_LOG_ERROR("network", "Can't compress packet opcode (zlib: deflate) Error code: %i (%s, msg: %s)", z_res, zError(z_res), _compressionStream->msg);
diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h
index e42a310f470..b82029f88d5 100644
--- a/src/server/game/Server/WorldSocket.h
+++ b/src/server/game/Server/WorldSocket.h
@@ -69,8 +69,8 @@ union ClientPktHeader
class WorldSocket : public Socket<WorldSocket>
{
static std::string const ServerConnectionInitialize;
-
static std::string const ClientConnectionInitialize;
+ static uint32 const MinSizeForCompression;
public:
WorldSocket(tcp::socket&& socket);
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h
index 7e60ac9b5da..497b416ded1 100644
--- a/src/server/game/Spells/Auras/SpellAuraDefines.h
+++ b/src/server/game/Spells/Auras/SpellAuraDefines.h
@@ -461,7 +461,7 @@ enum AuraType
SPELL_AURA_401 = 401,
SPELL_AURA_402 = 402,
SPELL_AURA_403 = 403,
- SPELL_AURA_404 = 404,
+ SPELL_AURA_OVERRIDE_ATTACK_POWER_BY_SP_PCT = 404,
SPELL_AURA_405 = 405,
SPELL_AURA_406 = 406,
SPELL_AURA_MOD_FEAR_2 = 407, // NYI
@@ -476,7 +476,7 @@ enum AuraType
SPELL_AURA_416 = 416,
SPELL_AURA_417 = 417,
SPELL_AURA_418 = 418,
- SPELL_AURA_419 = 419,
+ SPELL_AURA_MOD_BASE_MANA_PCT = 419,
SPELL_AURA_MOD_BATTLE_PET_XP_PCT = 420, // NYI
SPELL_AURA_421 = 421,
SPELL_AURA_422 = 422,
@@ -523,8 +523,8 @@ enum AuraType
SPELL_AURA_CONVER_CRIT_RATING_PCT_TO_PARRY_RATING = 463, // NYI
SPELL_AURA_464 = 464,
SPELL_AURA_465 = 465,
- SPELL_AURA_466 = 466,
- SPELL_AURA_467 = 467,
+ SPELL_AURA_MOD_BONUS_ARMOR_PCT = 466, // Affects bonus armor gain from all sources except base stats
+ SPELL_AURA_MOD_STAT_BONUS_PCT = 467, // Affects stat gain from all sources except base stats
SPELL_AURA_468 = 468,
SPELL_AURA_469 = 469,
SPELL_AURA_471 = 471,
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index a3b0c4788e7..b5f154e6fe1 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -426,7 +426,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //363 SPELL_AURA_MOD_NEXT_SPELL
&AuraEffect::HandleUnused, //364 unused (4.3.4)
&AuraEffect::HandleNULL, //365 SPELL_AURA_MAX_FAR_CLIP_PLANE
- &AuraEffect::HandleNULL, //366 SPELL_AURA_OVERRIDE_SPELL_POWER_BY_AP_PCT
+ &AuraEffect::HandleOverrideSpellPowerByAttackPower, //366 SPELL_AURA_OVERRIDE_SPELL_POWER_BY_AP_PCT
&AuraEffect::HandleNULL, //367 SPELL_AURA_367
&AuraEffect::HandleUnused, //368 unused (4.3.4)
&AuraEffect::HandleNULL, //369 SPELL_AURA_ENABLE_POWER_BAR_TIMER
@@ -464,7 +464,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //401
&AuraEffect::HandleNULL, //402
&AuraEffect::HandleNULL, //403
- &AuraEffect::HandleNULL, //404
+ &AuraEffect::HandleOverrideAttackPowerBySpellPower, //404 SPELL_AURA_OVERRIDE_ATTACK_POWER_BY_SP_PCT
&AuraEffect::HandleNULL, //405
&AuraEffect::HandleNULL, //406
&AuraEffect::HandleNULL, //407 SPELL_AURA_MOD_FEAR_2
@@ -479,7 +479,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //416
&AuraEffect::HandleNULL, //417
&AuraEffect::HandleNULL, //418
- &AuraEffect::HandleNULL, //419
+ &AuraEffect::HandleAuraModIncreaseBaseManaPercent, //419 SPELL_AURA_MOD_BASE_MANA_PCT
&AuraEffect::HandleNULL, //420 SPELL_AURA_MOD_BATTLE_PET_XP_PCT
&AuraEffect::HandleNULL, //421
&AuraEffect::HandleNULL, //422
@@ -526,8 +526,8 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //463 SPELL_AURA_CRIT_RATING_AFFECTS_PARRY used by Riposte
&AuraEffect::HandleNULL, //464
&AuraEffect::HandleNULL, //465
- &AuraEffect::HandleNULL, //466
- &AuraEffect::HandleNULL, //467
+ &AuraEffect::HandleNULL, //466 SPELL_AURA_MOD_BONUS_ARMOR_PCT
+ &AuraEffect::HandleModStatBonusPercent, //467 SPELL_AURA_MOD_STAT_BONUS_PCT
&AuraEffect::HandleNULL, //468
&AuraEffect::HandleNULL, //469
&AuraEffect::HandleNULL, //470
@@ -3982,6 +3982,59 @@ void AuraEffect::HandleAuraModExpertise(AuraApplication const* aurApp, uint8 mod
target->ToPlayer()->UpdateExpertise(OFF_ATTACK);
}
+void AuraEffect::HandleModStatBonusPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const
+{
+ if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT)))
+ return;
+
+ Unit* target = aurApp->GetTarget();
+
+ if (GetMiscValue() < -1 || GetMiscValue() > 4)
+ {
+ TC_LOG_ERROR("spells", "WARNING: Misc Value for SPELL_AURA_MOD_STAT_BONUS_PCT not valid");
+ return;
+ }
+
+ // only players have base stats
+ if (target->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ for (int32 i = STAT_STRENGTH; i < MAX_STATS; ++i)
+ {
+ if (GetMiscValue() == i || GetMiscValue() == -1)
+ {
+ target->HandleStatModifier(UnitMods(UNIT_MOD_STAT_START + i), BASE_PCT_EXCLUDE_CREATE, float(m_amount), apply);
+ target->ApplyStatPercentBuffMod(Stats(i), float(m_amount), apply);
+ }
+ }
+}
+
+void AuraEffect::HandleOverrideSpellPowerByAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const
+{
+ if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT)))
+ return;
+
+ Player* target = aurApp->GetTarget()->ToPlayer();
+ if (!target)
+ return;
+
+ target->ApplyModSignedFloatValue(PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT, float(m_amount), apply);
+ target->UpdateSpellDamageAndHealingBonus();
+}
+
+void AuraEffect::HandleOverrideAttackPowerBySpellPower(AuraApplication const* aurApp, uint8 mode, bool apply) const
+{
+ if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT)))
+ return;
+
+ Player* target = aurApp->GetTarget()->ToPlayer();
+ if (!target)
+ return;
+
+ target->ApplyModSignedFloatValue(PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT, float(m_amount), apply);
+ target->UpdateAttackPowerAndDamage();
+}
+
/********************************/
/*** HEAL & ENERGIZE ***/
/********************************/
@@ -4141,6 +4194,14 @@ void AuraEffect::HandleAuraIncreaseBaseHealthPercent(AuraApplication const* aurA
target->HandleStatModifier(UNIT_MOD_HEALTH, BASE_PCT, float(GetAmount()), apply);
}
+void AuraEffect::HandleAuraModIncreaseBaseManaPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const
+{
+ if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT)))
+ return;
+
+ aurApp->GetTarget()->HandleStatModifier(UNIT_MOD_MANA, BASE_PCT, float(GetAmount()), apply);
+}
+
/********************************/
/*** FIGHT ***/
/********************************/
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h
index e8431e202ba..91cf75dbe87 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.h
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.h
@@ -234,6 +234,9 @@ class AuraEffect
void HandleModTotalPercentStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraModResistenceOfStatPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraModExpertise(AuraApplication const* aurApp, uint8 mode, bool apply) const;
+ void HandleModStatBonusPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
+ void HandleOverrideSpellPowerByAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
+ void HandleOverrideAttackPowerBySpellPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
// heal and energize
void HandleModPowerRegen(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleModPowerRegenPCT(AuraApplication const* aurApp, uint8 mode, bool apply) const;
@@ -244,6 +247,7 @@ class AuraEffect
void HandleAuraModIncreaseEnergyPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraModIncreaseHealthPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraIncreaseBaseHealthPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
+ void HandleAuraModIncreaseBaseManaPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
// fight
void HandleAuraModParryPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraModDodgePercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index e8da248160b..cb0f34c162b 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -857,12 +857,14 @@ void Spell::SelectSpellTargets()
// Do not check for selfcast
if (!ihit->scaleAura && ihit->targetGUID != m_caster->GetGUID())
{
- m_UniqueTargetInfo.erase(ihit++);
- continue;
+ ihit = m_UniqueTargetInfo.erase(ihit);
+ continue;
}
}
+
++ihit;
}
+
if (checkLvl && m_UniqueTargetInfo.empty())
{
SendCastResult(SPELL_FAILED_LOWLEVEL);
@@ -2298,7 +2300,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
target->processed = true; // Target checked in apply effects procedure
// Get mask of effects for target
- uint8 mask = target->effectMask;
+ uint32 mask = target->effectMask;
Unit* unit = m_caster->GetGUID() == target->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, target->targetGUID);
if (!unit && target->targetGUID.IsPlayer()) // only players may be targeted across maps
@@ -2326,6 +2328,9 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
return;
}
+ if (!unit)
+ return;
+
if (unit->IsAlive() != target->alive)
return;
@@ -2850,8 +2855,8 @@ bool Spell::UpdateChanneledTargetList()
if (m_channelTargetEffectMask == 0)
return true;
- uint8 channelTargetEffectMask = m_channelTargetEffectMask;
- uint8 channelAuraMask = 0;
+ uint32 channelTargetEffectMask = m_channelTargetEffectMask;
+ uint32 channelAuraMask = 0;
for (SpellEffectInfo const* effect : GetEffects())
if (effect && effect->Effect == SPELL_EFFECT_APPLY_AURA)
channelAuraMask |= 1 << effect->EffectIndex;
@@ -2866,7 +2871,7 @@ bool Spell::UpdateChanneledTargetList()
modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_RANGE, range, this);
}
- for (std::vector<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
+ for (std::vector<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
{
if (ihit->missCondition == SPELL_MISS_NONE && (channelTargetEffectMask & ihit->effectMask))
{
@@ -3359,10 +3364,10 @@ void Spell::handle_immediate()
// process immediate effects (items, ground, etc.) also initialize some variables
_handle_immediate_phase();
- for (std::vector<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
+ for (std::vector<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
DoAllEffectOnTarget(&(*ihit));
- for (std::vector<GOTargetInfo>::iterator ihit= m_UniqueGOTargetInfo.begin(); ihit != m_UniqueGOTargetInfo.end(); ++ihit)
+ for (std::vector<GOTargetInfo>::iterator ihit = m_UniqueGOTargetInfo.begin(); ihit != m_UniqueGOTargetInfo.end(); ++ihit)
DoAllEffectOnTarget(&(*ihit));
FinishTargetProcessing();
@@ -3402,7 +3407,7 @@ uint64 Spell::handle_delayed(uint64 t_offset)
bool single_missile = (m_targets.HasDst());
// now recheck units targeting correctness (need before any effects apply to prevent adding immunity at first effect not allow apply second spell effect and similar cases)
- for (std::vector<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
+ for (std::vector<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
{
if (ihit->processed == false)
{
@@ -3417,7 +3422,7 @@ uint64 Spell::handle_delayed(uint64 t_offset)
}
// now recheck gameobject targeting correctness
- for (std::vector<GOTargetInfo>::iterator ighit= m_UniqueGOTargetInfo.begin(); ighit != m_UniqueGOTargetInfo.end(); ++ighit)
+ for (std::vector<GOTargetInfo>::iterator ighit = m_UniqueGOTargetInfo.begin(); ighit != m_UniqueGOTargetInfo.end(); ++ighit)
{
if (ighit->processed == false)
{
@@ -3475,7 +3480,7 @@ void Spell::_handle_immediate_phase()
}
// process items
- for (std::vector<ItemTargetInfo>::iterator ihit= m_UniqueItemInfo.begin(); ihit != m_UniqueItemInfo.end(); ++ihit)
+ for (std::vector<ItemTargetInfo>::iterator ihit = m_UniqueItemInfo.begin(); ihit != m_UniqueItemInfo.end(); ++ihit)
DoAllEffectOnTarget(&(*ihit));
if (!m_originalCaster)
@@ -4145,47 +4150,13 @@ void Spell::ExecuteLogEffectExtraAttacks(uint8 effIndex, Unit* victim, uint32 nu
void Spell::ExecuteLogEffectInterruptCast(uint8 /*effIndex*/, Unit* victim, uint32 spellId)
{
- ObjectGuid casterGuid = m_caster->GetGUID();
- ObjectGuid targetGuid = victim->GetGUID();
-
- WorldPacket data(SMSG_SPELL_INTERRUPT_LOG, 8 + 8 + 4 + 4);
- data.WriteBit(targetGuid[4]);
- data.WriteBit(casterGuid[5]);
- data.WriteBit(casterGuid[6]);
- data.WriteBit(casterGuid[1]);
- data.WriteBit(casterGuid[3]);
- data.WriteBit(casterGuid[0]);
- data.WriteBit(targetGuid[3]);
- data.WriteBit(targetGuid[5]);
- data.WriteBit(targetGuid[1]);
- data.WriteBit(casterGuid[4]);
- data.WriteBit(casterGuid[7]);
- data.WriteBit(targetGuid[7]);
- data.WriteBit(targetGuid[6]);
- data.WriteBit(targetGuid[2]);
- data.WriteBit(casterGuid[2]);
- data.WriteBit(targetGuid[0]);
-
- data.WriteByteSeq(casterGuid[7]);
- data.WriteByteSeq(casterGuid[6]);
- data.WriteByteSeq(casterGuid[3]);
- data.WriteByteSeq(casterGuid[2]);
- data.WriteByteSeq(targetGuid[3]);
- data.WriteByteSeq(targetGuid[6]);
- data.WriteByteSeq(targetGuid[2]);
- data.WriteByteSeq(targetGuid[4]);
- data.WriteByteSeq(targetGuid[7]);
- data.WriteByteSeq(targetGuid[0]);
- data.WriteByteSeq(casterGuid[4]);
- data << uint32(m_spellInfo->Id);
- data.WriteByteSeq(targetGuid[1]);
- data.WriteByteSeq(casterGuid[0]);
- data.WriteByteSeq(casterGuid[5]);
- data.WriteByteSeq(casterGuid[1]);
- data << uint32(spellId);
- data.WriteByteSeq(targetGuid[5]);
+ WorldPackets::CombatLog::SpellInterruptLog data;
+ data.Caster = m_caster->GetGUID();
+ data.Victim = victim->GetGUID();
+ data.InterruptedSpellID = m_spellInfo->Id;
+ data.SpellID = spellId;
- m_caster->SendMessageToSet(&data, true);
+ m_caster->SendMessageToSet(data.Write(), true);
}
void Spell::ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit* victim, int32 itemId, int32 amount)
@@ -4313,7 +4284,7 @@ void Spell::SendResurrectRequest(Player* target)
// for player resurrections the name is looked up by guid
std::string const sentName(m_caster->GetTypeId() == TYPEID_PLAYER
? "" : m_caster->GetNameForLocaleIdx(target->GetSession()->GetSessionDbLocaleIndex()));
-
+
WorldPackets::Spells::ResurrectRequest resurrectRequest;
resurrectRequest.ResurrectOffererGUID = m_caster->GetGUID();
resurrectRequest.ResurrectOffererVirtualRealmAddress = GetVirtualRealmAddress();
@@ -4585,7 +4556,7 @@ void Spell::TakeReagents()
ItemTemplate const* castItemTemplate = m_CastItem ? m_CastItem->GetTemplate() : NULL;
// do not take reagents for these item casts
- if (castItemTemplate && castItemTemplate->GetFlags() & ITEM_PROTO_FLAG_TRIGGERED_CAST)
+ if (castItemTemplate && castItemTemplate->GetFlags() & ITEM_FLAG_TRIGGERED_CAST)
return;
Player* p_caster = m_caster->ToPlayer();
@@ -5815,7 +5786,7 @@ bool Spell::CanAutoCast(Unit* target)
{
SelectSpellTargets();
//check if among target units, our WANTED target is as well (->only self cast spells return false)
- for (std::vector<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
+ for (std::vector<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
if (ihit->targetGUID == targetguid)
return true;
}
@@ -6016,7 +5987,7 @@ SpellCastResult Spell::CheckItems()
}
// do not take reagents for these item casts
- if (!(m_CastItem && m_CastItem->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_TRIGGERED_CAST))
+ if (!(m_CastItem && m_CastItem->GetTemplate()->GetFlags() & ITEM_FLAG_TRIGGERED_CAST))
{
bool checkReagents = !(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_AND_REAGENT_COST) && !player->CanNoReagentCast(m_spellInfo);
// Not own traded item (in trader trade slot) requires reagents even if triggered spell
@@ -6143,7 +6114,7 @@ SpellCastResult Spell::CheckItems()
if (m_targets.GetItemTarget()->GetOwner() != m_caster)
return SPELL_FAILED_NOT_TRADEABLE;
// do not allow to enchant vellum from scroll made by vellum-prevent exploit
- if (m_CastItem && m_CastItem->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_TRIGGERED_CAST)
+ if (m_CastItem && m_CastItem->GetTemplate()->GetFlags() & ITEM_FLAG_TRIGGERED_CAST)
return SPELL_FAILED_TOTEM_CATEGORY;
ItemPosCountVec dest;
InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, effect->ItemType, 1);
@@ -6266,7 +6237,7 @@ SpellCastResult Spell::CheckItems()
if (!m_targets.GetItemTarget())
return SPELL_FAILED_CANT_BE_PROSPECTED;
//ensure item is a prospectable ore
- if (!(m_targets.GetItemTarget()->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_PROSPECTABLE))
+ if (!(m_targets.GetItemTarget()->GetTemplate()->GetFlags() & ITEM_FLAG_PROSPECTABLE))
return SPELL_FAILED_CANT_BE_PROSPECTED;
//prevent prospecting in trade slot
if (m_targets.GetItemTarget()->GetOwnerGUID() != m_caster->GetGUID())
@@ -6289,7 +6260,7 @@ SpellCastResult Spell::CheckItems()
if (!m_targets.GetItemTarget())
return SPELL_FAILED_CANT_BE_MILLED;
//ensure item is a millable herb
- if (!(m_targets.GetItemTarget()->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_MILLABLE))
+ if (!(m_targets.GetItemTarget()->GetTemplate()->GetFlags() & ITEM_FLAG_MILLABLE))
return SPELL_FAILED_CANT_BE_MILLED;
//prevent milling in trade slot
if (m_targets.GetItemTarget()->GetOwnerGUID() != m_caster->GetGUID())
@@ -6832,7 +6803,7 @@ void Spell::HandleLaunchPhase()
if (effect && (m_applyMultiplierMask & (1 << effect->EffectIndex)))
multiplier[effect->EffectIndex] = effect->CalcDamageMultiplier(m_originalCaster, this);
- for (std::vector<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
+ for (std::vector<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
{
TargetInfo& target = *ihit;
@@ -7502,7 +7473,7 @@ bool WorldObjectSpellConeTargetCheck::operator()(WorldObject* target)
}
else if (_spellInfo->HasAttribute(SPELL_ATTR0_CU_CONE_LINE))
{
- if (!_caster->HasInLine(target, _caster->GetObjectSize()))
+ if (!_caster->HasInLine(target, _caster->GetObjectSize() + target->GetObjectSize()))
return false;
}
else
@@ -7519,7 +7490,7 @@ WorldObjectSpellTrajTargetCheck::WorldObjectSpellTrajTargetCheck(float range, Po
bool WorldObjectSpellTrajTargetCheck::operator()(WorldObject* target)
{
// return all targets on missile trajectory (0 - size of a missile)
- if (!_caster->HasInLine(target, 0))
+ if (!_caster->HasInLine(target, target->GetObjectSize()))
return false;
return WorldObjectSpellAreaTargetCheck::operator ()(target);
}
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index ddf6cb055ae..ec716a0e03d 100644
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -338,6 +338,7 @@ class Spell
void EffectApplyGlyph(SpellEffIndex effIndex);
void EffectEnchantHeldItem(SpellEffIndex effIndex);
void EffectSummonObject(SpellEffIndex effIndex);
+ void EffectChangeRaidMarker(SpellEffIndex effIndex);
void EffectResurrect(SpellEffIndex effIndex);
void EffectParry(SpellEffIndex effIndex);
void EffectBlock(SpellEffIndex effIndex);
@@ -405,6 +406,9 @@ class Spell
void EffectCreateAreaTrigger(SpellEffIndex effIndex);
void EffectRemoveTalent(SpellEffIndex effIndex);
void EffectDestroyItem(SpellEffIndex effIndex);
+ void EffectLearnGarrisonBuilding(SpellEffIndex effIndex);
+ void EffectCreateGarrison(SpellEffIndex effIndex);
+ void EffectAddGarrisonFollower(SpellEffIndex effIndex);
typedef std::set<Aura*> UsedSpellMods;
@@ -669,7 +673,7 @@ class Spell
uint64 timeDelay;
SpellMissInfo missCondition:8;
SpellMissInfo reflectResult:8;
- uint32 effectMask:32;
+ uint32 effectMask;
bool processed:1;
bool alive:1;
bool crit:1;
@@ -683,8 +687,8 @@ class Spell
{
ObjectGuid targetGUID;
uint64 timeDelay;
- uint32 effectMask:32;
- bool processed:1;
+ uint32 effectMask;
+ bool processed;
};
std::vector<GOTargetInfo> m_UniqueGOTargetInfo;
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 372ff5faba8..36e544de3bd 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -67,6 +67,8 @@
#include "GuildMgr.h"
#include "ReputationMgr.h"
#include "AreaTrigger.h"
+#include "Garrison.h"
+#include "CombatLogPackets.h"
#include "DuelPackets.h"
#include "MiscPackets.h"
#include "SpellPackets.h"
@@ -179,7 +181,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectReputation, //103 SPELL_EFFECT_REPUTATION
&Spell::EffectSummonObject, //104 SPELL_EFFECT_SUMMON_OBJECT_SLOT1
&Spell::EffectSummonObject, //105 SPELL_EFFECT_SUMMON_OBJECT_SLOT2
- &Spell::EffectSummonObject, //106 SPELL_EFFECT_SUMMON_OBJECT_SLOT3
+ &Spell::EffectChangeRaidMarker, //106 SPELL_EFFECT_CHANGE_RAID_MARKER
&Spell::EffectSummonObject, //107 SPELL_EFFECT_SUMMON_OBJECT_SLOT4
&Spell::EffectDispelMechanic, //108 SPELL_EFFECT_DISPEL_MECHANIC
&Spell::EffectResurrectPet, //109 SPELL_EFFECT_RESURRECT_PET
@@ -240,7 +242,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectRemoveAura, //164 SPELL_EFFECT_REMOVE_AURA
&Spell::EffectDamageFromMaxHealthPCT, //165 SPELL_EFFECT_DAMAGE_FROM_MAX_HEALTH_PCT
&Spell::EffectGiveCurrency, //166 SPELL_EFFECT_GIVE_CURRENCY
- &Spell::EffectNULL, //167 SPELL_EFFECT_167
+ &Spell::EffectNULL, //167 SPELL_EFFECT_UPDATE_PLAYER_PHASE
&Spell::EffectNULL, //168 SPELL_EFFECT_ALLOW_CONTROL_PET
&Spell::EffectDestroyItem, //169 SPELL_EFFECT_DESTROY_ITEM
&Spell::EffectNULL, //170 SPELL_EFFECT_UPDATE_ZONE_AURAS_AND_PHASES
@@ -265,8 +267,8 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectNULL, //189 SPELL_EFFECT_LOOT
&Spell::EffectNULL, //190 SPELL_EFFECT_190
&Spell::EffectNULL, //191 SPELL_EFFECT_TELEPORT_TO_DIGSITE
- &Spell::EffectNULL, //192 SPELL_EFFECT_192
- &Spell::EffectNULL, //193 SPELL_EFFECT_193
+ &Spell::EffectNULL, //192 SPELL_EFFECT_UNCAGE_BATTLEPET
+ &Spell::EffectNULL, //193 SPELL_EFFECT_START_PET_BATTLE
&Spell::EffectNULL, //194 SPELL_EFFECT_194
&Spell::EffectNULL, //195 SPELL_EFFECT_195
&Spell::EffectNULL, //196 SPELL_EFFECT_196
@@ -277,53 +279,53 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectNULL, //201 SPELL_EFFECT_ENABLE_BATTLE_PETS
&Spell::EffectNULL, //202 SPELL_EFFECT_202
&Spell::EffectNULL, //203 SPELL_EFFECT_203
- &Spell::EffectNULL, //204 SPELL_EFFECT_204
- &Spell::EffectNULL, //205 SPELL_EFFECT_205
+ &Spell::EffectNULL, //204 SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY
+ &Spell::EffectNULL, //205 SPELL_EFFECT_LAUNCH_QUEST_CHOICE
&Spell::EffectNULL, //206 SPELL_EFFECT_206
- &Spell::EffectNULL, //207 SPELL_EFFECT_207
+ &Spell::EffectNULL, //207 SPELL_EFFECT_LAUNCH_QUEST_TASK
&Spell::EffectNULL, //208 SPELL_EFFECT_208
&Spell::EffectNULL, //209 SPELL_EFFECT_209
- &Spell::EffectNULL, //210 SPELL_EFFECT_210
- &Spell::EffectNULL, //211 SPELL_EFFECT_211
+ &Spell::EffectLearnGarrisonBuilding, //210 SPELL_EFFECT_LEARN_GARRISON_BUILDING
+ &Spell::EffectNULL, //211 SPELL_EFFECT_LEARN_GARRISON_SPECIALIZATION
&Spell::EffectNULL, //212 SPELL_EFFECT_212
&Spell::EffectNULL, //213 SPELL_EFFECT_213
- &Spell::EffectNULL, //214 SPELL_EFFECT_214
- &Spell::EffectNULL, //215 SPELL_EFFECT_215
- &Spell::EffectNULL, //216 SPELL_EFFECT_216
- &Spell::EffectNULL, //217 SPELL_EFFECT_217
+ &Spell::EffectCreateGarrison, //214 SPELL_EFFECT_CREATE_GARRISON
+ &Spell::EffectNULL, //215 SPELL_EFFECT_UPGRADE_CHARACTER_SPELLS
+ &Spell::EffectNULL, //216 SPELL_EFFECT_CREATE_SHIPMENT
+ &Spell::EffectNULL, //217 SPELL_EFFECT_UPGRADE_GARRISON
&Spell::EffectNULL, //218 SPELL_EFFECT_218
&Spell::EffectNULL, //219 SPELL_EFFECT_219
- &Spell::EffectNULL, //220 SPELL_EFFECT_220
+ &Spell::EffectAddGarrisonFollower, //220 SPELL_EFFECT_ADD_GARRISON_FOLLOWER
&Spell::EffectNULL, //221 SPELL_EFFECT_221
- &Spell::EffectNULL, //222 SPELL_EFFECT_222
- &Spell::EffectNULL, //223 SPELL_EFFECT_223
- &Spell::EffectNULL, //224 SPELL_EFFECT_224
- &Spell::EffectNULL, //225 SPELL_EFFECT_225
+ &Spell::EffectNULL, //222 SPELL_EFFECT_CREATE_HEIRLOOM_ITEM
+ &Spell::EffectNULL, //223 SPELL_EFFECT_CHANGE_ITEM_BONUSES
+ &Spell::EffectNULL, //224 SPELL_EFFECT_ACTIVATE_GARRISON_BUILDING
+ &Spell::EffectNULL, //225 SPELL_EFFECT_GRANT_BATTLEPET_LEVEL
&Spell::EffectNULL, //226 SPELL_EFFECT_226
&Spell::EffectNULL, //227 SPELL_EFFECT_227
&Spell::EffectNULL, //228 SPELL_EFFECT_228
- &Spell::EffectNULL, //229 SPELL_EFFECT_229
- &Spell::EffectNULL, //230 SPELL_EFFECT_230
- &Spell::EffectNULL, //231 SPELL_EFFECT_231
- &Spell::EffectNULL, //232 SPELL_EFFECT_232
- &Spell::EffectNULL, //233 SPELL_EFFECT_233
+ &Spell::EffectNULL, //229 SPELL_EFFECT_SET_FOLLOWER_QUALITY
+ &Spell::EffectNULL, //230 SPELL_EFFECT_INCREASE_FOLLOWER_ITEM_LEVEL
+ &Spell::EffectNULL, //231 SPELL_EFFECT_INCREASE_FOLLOWER_EXPERIENCE
+ &Spell::EffectNULL, //232 SPELL_EFFECT_REMOVE_PHASE
+ &Spell::EffectNULL, //233 SPELL_EFFECT_RANDOMIZE_FOLLOWER_ABILITIES
&Spell::EffectNULL, //234 SPELL_EFFECT_234
&Spell::EffectNULL, //235 SPELL_EFFECT_235
- &Spell::EffectNULL, //236 SPELL_EFFECT_236
- &Spell::EffectNULL, //237 SPELL_EFFECT_237
- &Spell::EffectNULL, //238 SPELL_EFFECT_238
- &Spell::EffectNULL, //239 SPELL_EFFECT_239
+ &Spell::EffectNULL, //236 SPELL_EFFECT_GIVE_EXPERIENCE
+ &Spell::EffectNULL, //237 SPELL_EFFECT_GIVE_RESTED_EXPERIENCE_BONUS
+ &Spell::EffectNULL, //238 SPELL_EFFECT_INCREASE_SKILL
+ &Spell::EffectNULL, //239 SPELL_EFFECT_END_GARRISON_BUILDING_CONSTRUCTION
&Spell::EffectNULL, //240 SPELL_EFFECT_240
&Spell::EffectNULL, //241 SPELL_EFFECT_241
&Spell::EffectNULL, //242 SPELL_EFFECT_242
- &Spell::EffectNULL, //243 SPELL_EFFECT_243
- &Spell::EffectNULL, //244 SPELL_EFFECT_244
- &Spell::EffectNULL, //244 SPELL_EFFECT_245
- &Spell::EffectNULL, //244 SPELL_EFFECT_246
- &Spell::EffectNULL, //244 SPELL_EFFECT_247
- &Spell::EffectNULL, //244 SPELL_EFFECT_248
- &Spell::EffectNULL, //244 SPELL_EFFECT_249
- &Spell::EffectNULL, //244 SPELL_EFFECT_250
+ &Spell::EffectNULL, //243 SPELL_EFFECT_APPLY_ENCHANT_ILLUSION
+ &Spell::EffectNULL, //244 SPELL_EFFECT_LEARN_FOLLOWER_ABILITY
+ &Spell::EffectNULL, //245 SPELL_EFFECT_UPGRADE_HEIRLOOM
+ &Spell::EffectNULL, //246 SPELL_EFFECT_FINISH_GARRISON_MISSION
+ &Spell::EffectNULL, //247 SPELL_EFFECT_ADD_GARRISON_MISSION
+ &Spell::EffectNULL, //248 SPELL_EFFECT_FINISH_SHIPMENT
+ &Spell::EffectNULL, //249 SPELL_EFFECT_249
+ &Spell::EffectNULL, //250 SPELL_EFFECT_TAKE_SCREENSHOT
};
void Spell::EffectNULL(SpellEffIndex /*effIndex*/)
@@ -377,11 +379,12 @@ void Spell::EffectInstaKill(SpellEffIndex /*effIndex*/)
if (m_caster == unitTarget) // prevent interrupt message
finish();
- WorldPacket data(SMSG_SPELL_INSTAKILL_LOG, 8+8+4);
- data << m_caster->GetGUID();
- data << unitTarget->GetGUID();
- data << uint32(m_spellInfo->Id);
- m_caster->SendMessageToSet(&data, true);
+ WorldPackets::CombatLog::SpellInstakillLog data;
+ data.Target = unitTarget->GetGUID();
+ data.Caster = m_caster->GetGUID();
+ data.SpellID = m_spellInfo->Id;
+
+ m_caster->SendMessageToSet(data.Write(), true);
m_caster->DealDamage(unitTarget, unitTarget->GetHealth(), NULL, NODAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
}
@@ -420,7 +423,7 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex)
if (m_spellInfo->HasAttribute(SPELL_ATTR0_CU_SHARE_DAMAGE))
{
uint32 count = 0;
- for (std::vector<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
+ for (std::vector<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
if (ihit->effectMask & (1<<effIndex))
++count;
@@ -431,7 +434,7 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex)
{
// Consumption
case 28865:
- damage = (((InstanceMap*)m_caster->GetMap())->GetDifficultyID() == DIFFICULTY_NONE ? 2750 : 4250);
+ damage = (m_caster->GetMap()->GetDifficultyID() == DIFFICULTY_NONE ? 2750 : 4250);
break;
// percent from health with min
case 25599: // Thundercrash
@@ -1907,7 +1910,7 @@ void Spell::EffectOpenLock(SpellEffIndex effIndex)
if (gameObjTarget)
SendLoot(guid, LOOT_SKINNING);
else if (itemTarget)
- itemTarget->SetFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_UNLOCKED);
+ itemTarget->SetFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_UNLOCKED);
// not allow use skill grow at item base open
if (!m_CastItem && skillId != SKILL_NONE)
@@ -2166,7 +2169,7 @@ void Spell::EffectSummonType(SpellEffIndex effIndex)
return;
summon->SelectLevel(); // some summoned creaters have different from 1 DB data for level/hp
- summon->SetUInt32Value(UNIT_NPC_FLAGS, summon->GetCreatureTemplate()->npcflag);
+ summon->SetUInt64Value(UNIT_NPC_FLAGS, summon->GetCreatureTemplate()->npcflag);
summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
@@ -2544,7 +2547,7 @@ void Spell::EffectEnchantItemPerm(SpellEffIndex effIndex)
else
{
// do not increase skill if vellum used
- if (!(m_CastItem && m_CastItem->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_TRIGGERED_CAST))
+ if (!(m_CastItem && m_CastItem->GetTemplate()->GetFlags() & ITEM_FLAG_TRIGGERED_CAST))
player->UpdateCraftSkill(m_spellInfo->Id);
uint32 enchant_id = effectInfo->MiscValue;
@@ -2922,7 +2925,7 @@ void Spell::EffectTaunt(SpellEffIndex /*effIndex*/)
unitTarget->ToCreature()->AI()->AttackStart(m_caster);
}
-void Spell::EffectWeaponDmg(SpellEffIndex /*effIndex*/)
+void Spell::EffectWeaponDmg(SpellEffIndex effIndex)
{
if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH_TARGET)
return;
@@ -2933,8 +2936,9 @@ void Spell::EffectWeaponDmg(SpellEffIndex /*effIndex*/)
// multiple weapon dmg effect workaround
// execute only the last weapon damage
// and handle all effects at once
- for (SpellEffectInfo const* effect : GetEffects())
+ for (uint8 index = effIndex + 1; index < MAX_SPELL_EFFECTS; ++index)
{
+ SpellEffectInfo const* effect = GetEffect(index);
if (!effect)
continue;
switch (effect->Effect)
@@ -4646,6 +4650,25 @@ void Spell::EffectPullTowards(SpellEffIndex /*effIndex*/)
unitTarget->GetMotionMaster()->MoveJump(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), speedXY, speedZ);
}
+void Spell::EffectChangeRaidMarker(SpellEffIndex /*effIndex*/)
+{
+ if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
+ return;
+
+ Player* player = m_caster->ToPlayer();
+ if (!player || !m_targets.HasDst())
+ return;
+
+ Group* group = player->GetGroup();
+ if (!group || (group->isRaidGroup() && !group->IsLeader(player->GetGUID()) && !group->IsAssistant(player->GetGUID())))
+ return;
+
+ float x, y, z;
+ destTarget->GetPosition(x, y, z);
+
+ group->AddRaidMarker(damage, player->GetMapId(), x, y, z);
+}
+
void Spell::EffectDispelMechanic(SpellEffIndex /*effIndex*/)
{
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
@@ -4981,7 +5004,7 @@ void Spell::EffectProspecting(SpellEffIndex /*effIndex*/)
if (!player)
return;
- if (!itemTarget || !(itemTarget->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_PROSPECTABLE))
+ if (!itemTarget || !(itemTarget->GetTemplate()->GetFlags() & ITEM_FLAG_PROSPECTABLE))
return;
if (itemTarget->GetCount() < 5)
@@ -5006,7 +5029,7 @@ void Spell::EffectMilling(SpellEffIndex /*effIndex*/)
if (!player)
return;
- if (!itemTarget || !(itemTarget->GetTemplate()->GetFlags() & ITEM_PROTO_FLAG_MILLABLE))
+ if (!itemTarget || !(itemTarget->GetTemplate()->GetFlags() & ITEM_FLAG_MILLABLE))
return;
if (itemTarget->GetCount() < 5)
@@ -5801,3 +5824,38 @@ void Spell::EffectDestroyItem(SpellEffIndex effIndex)
if (Item* item = player->GetItemByEntry(itemId))
player->DestroyItem(item->GetBagSlot(), item->GetSlot(), true);
}
+
+void Spell::EffectLearnGarrisonBuilding(SpellEffIndex effIndex)
+{
+ if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
+ return;
+
+ if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ if (Garrison* garrison = unitTarget->ToPlayer()->GetGarrison())
+ garrison->LearnBlueprint(GetEffect(effIndex)->MiscValue);
+}
+
+void Spell::EffectCreateGarrison(SpellEffIndex effIndex)
+{
+ if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
+ return;
+
+ if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ unitTarget->ToPlayer()->CreateGarrison(GetEffect(effIndex)->MiscValue);
+}
+
+void Spell::EffectAddGarrisonFollower(SpellEffIndex effIndex)
+{
+ if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
+ return;
+
+ if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ if (Garrison* garrison = unitTarget->ToPlayer()->GetGarrison())
+ garrison->AddFollower(GetEffect(effIndex)->MiscValue);
+}
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 4db7091f971..6560309527c 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -806,7 +806,7 @@ SpellEffectInfo::StaticData SpellEffectInfo::_data[TOTAL_SPELL_EFFECTS] =
{EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_UNIT}, // 103 SPELL_EFFECT_REPUTATION
{EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_DEST}, // 104 SPELL_EFFECT_SUMMON_OBJECT_SLOT1
{EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_DEST}, // 105 SPELL_EFFECT_SUMMON_OBJECT_SLOT2
- {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_DEST}, // 106 SPELL_EFFECT_SUMMON_OBJECT_SLOT3
+ {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_DEST}, // 106 SPELL_EFFECT_CHANGE_RAID_MARKER
{EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_DEST}, // 107 SPELL_EFFECT_SUMMON_OBJECT_SLOT4
{EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_UNIT}, // 108 SPELL_EFFECT_DISPEL_MECHANIC
{EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_DEST}, // 109 SPELL_EFFECT_SUMMON_DEAD_PET
@@ -1822,6 +1822,7 @@ SpellCastResult SpellInfo::CheckLocation(uint32 map_id, uint32 zone_id, uint32 a
if (!player->CanFlyInZone(map_id, zone_id))
return SPELL_FAILED_INCORRECT_AREA;
}
+ break;
}
case SPELL_AURA_MOUNTED:
{
@@ -1958,7 +1959,7 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, WorldObject const* ta
}
// not allow casting on flying player
- if (unitTarget->HasUnitState(UNIT_STATE_IN_FLIGHT))
+ if (unitTarget->HasUnitState(UNIT_STATE_IN_FLIGHT) && !(AttributesCu & SPELL_ATTR0_CU_ALLOW_INFLIGHT_TARGET))
return SPELL_FAILED_BAD_TARGETS;
/* TARGET_UNIT_MASTER gets blocked here for passengers, because the whole idea of this check is to
@@ -2577,6 +2578,8 @@ std::vector<SpellInfo::CostData> SpellInfo::CalcPowerCost(Unit const* caster, Sp
powerCost += int32(CalculatePct(caster->GetMaxHealth(), power->ManaCostPercentage));
break;
case POWER_MANA:
+ powerCost += int32(CalculatePct(caster->GetCreateMana(), power->ManaCostPercentage));
+ break;
case POWER_RAGE:
case POWER_FOCUS:
case POWER_ENERGY:
@@ -2635,7 +2638,7 @@ std::vector<SpellInfo::CostData> SpellInfo::CalcPowerCost(Unit const* caster, Sp
modOwner->ApplySpellMod(Id, SPELLMOD_SPELL_COST2, powerCost);
}
- if (!caster->IsControlledByPlayer())
+ if (!caster->IsControlledByPlayer() && G3D::fuzzyEq(power->ManaCostPercentage, 0.0f))
{
if (Attributes & SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION)
{
@@ -2693,7 +2696,7 @@ std::vector<SpellInfo::CostData> SpellInfo::CalcPowerCost(Unit const* caster, Sp
}
};
- if (_hasPowerDifficultyData) // optimization - use static data for 99.5% cases (4753 of 4772 in build 6.1.0.19702)
+ if (!_hasPowerDifficultyData) // optimization - use static data for 99.5% cases (4753 of 4772 in build 6.1.0.19702)
collector(PowerCosts);
else
collector(sDB2Manager.GetSpellPowers(Id, caster->GetMap()->GetDifficultyID()));
diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h
index 62381372657..6d1d787e303 100644
--- a/src/server/game/Spells/SpellInfo.h
+++ b/src/server/game/Spells/SpellInfo.h
@@ -197,6 +197,7 @@ enum SpellCustomAttributes
SPELL_ATTR0_CU_IGNORE_ARMOR = 0x00008000,
SPELL_ATTR0_CU_REQ_TARGET_FACING_CASTER = 0x00010000,
SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET = 0x00020000,
+ SPELL_ATTR0_CU_ALLOW_INFLIGHT_TARGET = 0x00040000,
SPELL_ATTR0_CU_NEGATIVE = SPELL_ATTR0_CU_NEGATIVE_EFF0 | SPELL_ATTR0_CU_NEGATIVE_EFF1 | SPELL_ATTR0_CU_NEGATIVE_EFF2
};
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 2f74218ba7b..4f73eee601f 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -3030,6 +3030,10 @@ void SpellMgr::LoadSpellInfoCorrections()
switch (spellInfo->Id)
{
+ case 63026: // Summon Aspirant Test NPC (HACK: Target shouldn't be changed)
+ case 63137: // Summon Valiant Test (HACK: Target shouldn't be changed; summon position should be untied from spell destination)
+ const_cast<SpellEffectInfo*>(spellInfo->GetEffect(EFFECT_0))->TargetA = SpellImplicitTargetInfo(TARGET_DEST_DB);
+ break;
case 42436: // Drink! (Brewfest)
const_cast<SpellEffectInfo*>(spellInfo->GetEffect(EFFECT_0))->TargetA = SpellImplicitTargetInfo(TARGET_UNIT_TARGET_ANY);
break;
diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp
index 33773a57631..4fd8b5d8bf6 100644
--- a/src/server/game/Spells/SpellScript.cpp
+++ b/src/server/game/Spells/SpellScript.cpp
@@ -64,9 +64,9 @@ _SpellScript::EffectHook::EffectHook(uint8 _effIndex)
effIndex = _effIndex;
}
-uint8 _SpellScript::EffectHook::GetAffectedEffectsMask(SpellInfo const* spellEntry)
+uint32 _SpellScript::EffectHook::GetAffectedEffectsMask(SpellInfo const* spellEntry)
{
- uint8 mask = 0;
+ uint32 mask = 0;
if ((effIndex == EFFECT_ALL) || (effIndex == EFFECT_FIRST_FOUND))
{
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
@@ -74,13 +74,13 @@ uint8 _SpellScript::EffectHook::GetAffectedEffectsMask(SpellInfo const* spellEnt
if ((effIndex == EFFECT_FIRST_FOUND) && mask)
return mask;
if (CheckEffect(spellEntry, i))
- mask |= (uint8)1<<i;
+ mask |= 1 << i;
}
}
else
{
if (CheckEffect(spellEntry, effIndex))
- mask |= (uint8)1<<effIndex;
+ mask |= 1 << effIndex;
}
return mask;
}
diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h
index fb9e1ed3937..f9a2f1ec847 100644
--- a/src/server/game/Spells/SpellScript.h
+++ b/src/server/game/Spells/SpellScript.h
@@ -74,7 +74,7 @@ class _SpellScript
EffectHook(uint8 _effIndex);
virtual ~EffectHook() { }
- uint8 GetAffectedEffectsMask(SpellInfo const* spellInfo);
+ uint32 GetAffectedEffectsMask(SpellInfo const* spellInfo);
bool IsEffectAffected(SpellInfo const* spellInfo, uint8 effIndex);
virtual bool CheckEffect(SpellInfo const* spellInfo, uint8 effIndex) = 0;
std::string EffIndexToString();
diff --git a/src/server/game/Support/SupportMgr.cpp b/src/server/game/Support/SupportMgr.cpp
index 90afcfd1511..5afd6fc1d81 100644
--- a/src/server/game/Support/SupportMgr.cpp
+++ b/src/server/game/Support/SupportMgr.cpp
@@ -38,7 +38,7 @@ std::string Ticket::FormatViewMessageString(ChatHandler& handler, char const* cl
{
std::stringstream ss;
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTGUID, _id);
- ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayer()->GetName().c_str());
+ ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayerName().c_str());
if (closedName)
ss << handler.PGetParseString(LANG_COMMAND_TICKETCLOSED, closedName);
if (assignedToName)
@@ -173,13 +173,12 @@ std::string GmTicket::FormatViewMessageString(ChatHandler& handler, bool detaile
std::stringstream ss;
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTGUID, _id);
- ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayer()->GetName().c_str());
+ ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayerName().c_str());
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTAGECREATE, (secsToTimeString(curTime - _createTime, true, false)).c_str());
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTAGE, (secsToTimeString(curTime - _lastModifiedTime, true, false)).c_str());
- std::string name;
- if (ObjectMgr::GetPlayerNameByGUID(_assignedTo, name))
- ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, name.c_str());
+ if (!_assignedTo.IsEmpty())
+ ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, GetAssignedToName().c_str());
if (detailed)
{
@@ -196,7 +195,7 @@ std::string GmTicket::FormatViewMessageString(ChatHandler& handler, const char*
{
std::stringstream ss;
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTGUID, _id);
- ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayer()->GetName().c_str());
+ ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayerName().c_str());
if (szClosedName)
ss << handler.PGetParseString(LANG_COMMAND_TICKETCLOSED, szClosedName);
if (szAssignedToName)
@@ -281,12 +280,11 @@ std::string BugTicket::FormatViewMessageString(ChatHandler& handler, bool detail
std::stringstream ss;
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTGUID, _id);
- ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayer()->GetName().c_str());
+ ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayerName().c_str());
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTAGECREATE, (secsToTimeString(curTime - _createTime, true, false)).c_str());
- std::string name;
- if (ObjectMgr::GetPlayerNameByGUID(_assignedTo, name))
- ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, name.c_str());
+ if (!_assignedTo.IsEmpty())
+ ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, GetAssignedToName().c_str());
if (detailed)
{
@@ -408,12 +406,11 @@ std::string ComplaintTicket::FormatViewMessageString(ChatHandler& handler, bool
std::stringstream ss;
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTGUID, _id);
- ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayer()->GetName().c_str());
+ ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayerName().c_str());
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTAGECREATE, (secsToTimeString(curTime - _createTime, true, false)).c_str());
- std::string name;
- if (ObjectMgr::GetPlayerNameByGUID(_assignedTo, name))
- ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, name.c_str());
+ if (!_assignedTo.IsEmpty())
+ ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, GetAssignedToName().c_str());
if (detailed)
{
@@ -495,12 +492,11 @@ std::string SuggestionTicket::FormatViewMessageString(ChatHandler& handler, bool
std::stringstream ss;
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTGUID, _id);
- ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayer()->GetName().c_str());
+ ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTNAME, GetPlayerName().c_str());
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTAGECREATE, (secsToTimeString(curTime - _createTime, true, false)).c_str());
- std::string name;
- if (ObjectMgr::GetPlayerNameByGUID(_assignedTo, name))
- ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, name.c_str());
+ if (!_assignedTo.IsEmpty())
+ ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, GetAssignedToName().c_str());
if (detailed)
{
diff --git a/src/server/game/Support/SupportMgr.h b/src/server/game/Support/SupportMgr.h
index e0adb411aa0..10bd90d4f80 100644
--- a/src/server/game/Support/SupportMgr.h
+++ b/src/server/game/Support/SupportMgr.h
@@ -93,8 +93,16 @@ public:
uint32 GetId() const { return _id; }
ObjectGuid GetPlayerGuid() const { return _playerGuid; }
- Player* GetPlayer() const { return ObjectAccessor::FindPlayer(_playerGuid); }
- Player* GetAssignedPlayer() const { return ObjectAccessor::FindPlayer(_assignedTo); }
+ Player* GetPlayer() const { return ObjectAccessor::FindConnectedPlayer(_playerGuid); }
+ std::string GetPlayerName() const
+ {
+ std::string name;
+ if (!_playerGuid.IsEmpty())
+ ObjectMgr::GetPlayerNameByGUID(_playerGuid, name);
+
+ return name;
+ }
+ Player* GetAssignedPlayer() const { return ObjectAccessor::FindConnectedPlayer(_assignedTo); }
ObjectGuid GetAssignedToGUID() const { return _assignedTo; }
std::string GetAssignedToName() const
{
diff --git a/src/server/game/Texts/ChatTextBuilder.h b/src/server/game/Texts/ChatTextBuilder.h
index dcee6f08ac3..167680f1cd2 100644
--- a/src/server/game/Texts/ChatTextBuilder.h
+++ b/src/server/game/Texts/ChatTextBuilder.h
@@ -34,7 +34,7 @@ namespace Trinity
{
BroadcastTextEntry const* bct = sBroadcastTextStore.LookupEntry(_textId);
WorldPackets::Chat::Chat packet;
- packet.Initalize(_msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? DB2Manager::GetBroadcastTextValue(bct, locale, _source->getGender()) : "", _achievementId, "", locale);
+ packet.Initialize(_msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? DB2Manager::GetBroadcastTextValue(bct, locale, _source->getGender()) : "", _achievementId, "", locale);
packet.Write();
data = packet.Move();
}
@@ -56,7 +56,7 @@ namespace Trinity
void operator()(WorldPacket& data, LocaleConstant locale)
{
WorldPackets::Chat::Chat packet;
- packet.Initalize(_msgType, _language, _source, _target, _text, 0, "", locale);
+ packet.Initialize(_msgType, _language, _source, _target, _text, 0, "", locale);
packet.Write();
data = packet.Move();
}
diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp
index 281504b9aaf..c1ea235a3e2 100644
--- a/src/server/game/Texts/CreatureTextMgr.cpp
+++ b/src/server/game/Texts/CreatureTextMgr.cpp
@@ -37,7 +37,7 @@ class CreatureTextBuilder
{
std::string const& text = sCreatureTextMgr->GetLocalizedChatString(_source->GetEntry(), _gender, _textGroup, _textId, locale);
WorldPackets::Chat::Chat packet;
- packet.Initalize(_msgType, Language(_language), _source, _target, text, 0, "", locale);
+ packet.Initialize(_msgType, Language(_language), _source, _target, text, 0, "", locale);
packet.Write();
data = packet.Move();
}
@@ -62,7 +62,7 @@ class PlayerTextBuilder
{
std::string const& text = sCreatureTextMgr->GetLocalizedChatString(_source->GetEntry(), _gender, _textGroup, _textId, locale);
WorldPackets::Chat::Chat packet;
- packet.Initalize(_msgType, Language(_language), _talker, _target, text, 0, "", locale);
+ packet.Initialize(_msgType, Language(_language), _talker, _target, text, 0, "", locale);
packet.Write();
data = packet.Move();
}
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 94f13abfb6c..d68da8fbc63 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -38,6 +38,7 @@
#include "DatabaseEnv.h"
#include "DisableMgr.h"
#include "GameEventMgr.h"
+#include "GarrisonMgr.h"
#include "GridNotifiersImpl.h"
#include "GroupMgr.h"
#include "GuildFinderMgr.h"
@@ -1520,7 +1521,6 @@ void World::SetInitialWorldSettings()
sObjectMgr->LoadGameObjectLocales();
sObjectMgr->LoadQuestTemplateLocale();
sObjectMgr->LoadQuestObjectivesLocale();
- sObjectMgr->LoadQuestGreetings();
sObjectMgr->LoadPageTextLocales();
sObjectMgr->LoadGossipMenuItemsLocales();
sObjectMgr->LoadPointOfInterestLocales();
@@ -1660,6 +1660,9 @@ void World::SetInitialWorldSettings()
TC_LOG_INFO("server.loading", "Loading Quests Starters and Enders...");
sObjectMgr->LoadQuestStartersAndEnders(); // must be after quest load
+ TC_LOG_INFO("server.loading", "Loading Quest Greetings...");
+ sObjectMgr->LoadQuestGreetings();
+
TC_LOG_INFO("server.loading", "Loading Objects Pooling Data...");
sPoolMgr->LoadFromDB();
@@ -1869,6 +1872,9 @@ void World::SetInitialWorldSettings()
TC_LOG_INFO("server.loading", "Loading client addons...");
AddonMgr::LoadFromDB();
+ TC_LOG_INFO("server.loading", "Loading garrison info...");
+ sGarrisonMgr.Initialize();
+
///- Handle outdated emails (delete/return)
TC_LOG_INFO("server.loading", "Returning old mails...");
sObjectMgr->ReturnOrDeleteOldMails(false);
@@ -2121,7 +2127,7 @@ void World::Update(uint32 diff)
/// Handle daily quests reset time
if (m_gameTime > m_NextDailyQuestReset)
{
- ResetDailyQuests();
+ DailyReset();
m_NextDailyQuestReset += DAY;
}
@@ -2246,6 +2252,9 @@ void World::Update(uint32 diff)
sLFGMgr->Update(diff);
RecordTimeDiff("UpdateLFGMgr");
+ sGroupMgr->Update(diff);
+ RecordTimeDiff("GroupMgr");
+
// execute callbacks from sql queries that were queued recently
ProcessQueryCallbacks();
RecordTimeDiff("ProcessQueryCallbacks");
@@ -2375,7 +2384,7 @@ namespace Trinity
while (char* line = ChatHandler::LineFromMessage(text))
{
WorldPackets::Chat::Chat packet;
- packet.Initalize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
+ packet.Initialize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
packet.Write();
dataList.emplace_back(new WorldPacket(packet.Move()));
}
@@ -2441,7 +2450,7 @@ void World::SendGlobalText(const char* text, WorldSession* self)
while (char* line = ChatHandler::LineFromMessage(pos))
{
WorldPackets::Chat::Chat packet;
- packet.Initalize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
+ packet.Initialize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
SendGlobalMessage(packet.Write(), self);
}
@@ -2475,7 +2484,7 @@ bool World::SendZoneMessage(uint32 zone, WorldPacket const* packet, WorldSession
void World::SendZoneText(uint32 zone, const char* text, WorldSession* self, uint32 team)
{
WorldPackets::Chat::Chat packet;
- packet.Initalize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, text);
+ packet.Initialize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, text);
SendZoneMessage(zone, packet.Write(), self, team);
}
@@ -2747,7 +2756,7 @@ void World::ShutdownMsg(bool show, Player* player, const std::string& reason)
ServerMessageType msgid = (m_ShutdownMask & SHUTDOWN_MASK_RESTART) ? SERVER_MSG_RESTART_TIME : SERVER_MSG_SHUTDOWN_TIME;
- SendServerMessage(msgid, str.c_str(), player);
+ SendServerMessage(msgid, str, player);
TC_LOG_DEBUG("misc", "Server is %s in %s", (m_ShutdownMask & SHUTDOWN_MASK_RESTART ? "restart" : "shuttingdown"), str.c_str());
}
}
@@ -2772,17 +2781,17 @@ void World::ShutdownCancel()
}
/// Send a server message to the user(s)
-void World::SendServerMessage(ServerMessageType type, const char *text, Player* player)
+void World::SendServerMessage(ServerMessageType messageID, std::string stringParam /*= ""*/, Player* player /*= NULL*/)
{
- WorldPacket data(SMSG_CHAT_SERVER_MESSAGE, 50); // guess size
- data << uint32(type);
- if (type <= SERVER_MSG_STRING)
- data << text;
+ WorldPackets::Chat::ChatServerMessage chatServerMessage;
+ chatServerMessage.MessageID = int32(messageID);
+ if (messageID <= SERVER_MSG_STRING)
+ chatServerMessage.StringParam = stringParam;
if (player)
- player->GetSession()->SendPacket(&data);
+ player->GetSession()->SendPacket(chatServerMessage.Write());
else
- SendGlobalMessage(&data);
+ SendGlobalMessage(chatServerMessage.Write());
}
void World::UpdateSessions(uint32 diff)
@@ -3050,16 +3059,20 @@ void World::InitCurrencyResetTime()
sWorld->setWorldState(WS_CURRENCY_RESET_TIME, uint64(m_NextCurrencyReset));
}
-void World::ResetDailyQuests()
+void World::DailyReset()
{
TC_LOG_INFO("misc", "Daily quests reset for all characters.");
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RESET_CHARACTER_QUESTSTATUS_DAILY);
CharacterDatabase.Execute(stmt);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_GARRISON_FOLLOWER_ACTIVATIONS);
+ stmt->setUInt32(0, 1);
+ CharacterDatabase.Execute(stmt);
+
for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr)
if (itr->second->GetPlayer())
- itr->second->GetPlayer()->ResetDailyQuestStatus();
+ itr->second->GetPlayer()->DailyReset();
// change available dailies
sPoolMgr->ChangeDailyQuests();
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index b3bebca08e3..b169431f2fd 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -671,7 +671,7 @@ class World
void SendWorldText(uint32 string_id, ...);
void SendGlobalText(const char* text, WorldSession* self);
void SendGMText(uint32 string_id, ...);
- void SendServerMessage(ServerMessageType type, const char *text = "", Player* player = NULL);
+ void SendServerMessage(ServerMessageType messageID, std::string stringParam = "", Player* player = NULL);
void SendGlobalMessage(WorldPacket const* packet, WorldSession* self = nullptr, uint32 team = 0);
void SendGlobalGMMessage(WorldPacket const* packet, WorldSession* self = nullptr, uint32 team = 0);
bool SendZoneMessage(uint32 zone, WorldPacket const* packet, WorldSession* self = nullptr, uint32 team = 0);
@@ -805,7 +805,7 @@ class World
void InitRandomBGResetTime();
void InitGuildResetTime();
void InitCurrencyResetTime();
- void ResetDailyQuests();
+ void DailyReset();
void ResetWeeklyQuests();
void ResetMonthlyQuests();
void ResetRandomBG();
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp
index ecd98595723..7f1a364fd57 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -485,7 +485,7 @@ public:
char const* msg = "testtest";
uint8 type = atoi(args);
WorldPackets::Chat::Chat packet;
- packet.Initalize(ChatMsg(type), LANG_UNIVERSAL, handler->GetSession()->GetPlayer(), handler->GetSession()->GetPlayer(), msg, 0, "chan");
+ packet.Initialize(ChatMsg(type), LANG_UNIVERSAL, handler->GetSession()->GetPlayer(), handler->GetSession()->GetPlayer(), msg, 0, "chan");
handler->GetSession()->SendPacket(packet.Write());
return true;
}
diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp
index c12c9b5d43e..53522736718 100644
--- a/src/server/scripts/Commands/cs_go.cpp
+++ b/src/server/scripts/Commands/cs_go.cpp
@@ -44,6 +44,7 @@ public:
{ "graveyard", rbac::RBAC_PERM_COMMAND_GO_GRAVEYARD, false, &HandleGoGraveyardCommand, "", NULL },
{ "grid", rbac::RBAC_PERM_COMMAND_GO_GRID, false, &HandleGoGridCommand, "", NULL },
{ "object", rbac::RBAC_PERM_COMMAND_GO_OBJECT, false, &HandleGoObjectCommand, "", NULL },
+ { "quest", rbac::RBAC_PERM_COMMAND_GO_QUEST, false, &HandleGoQuestCommand, "", NULL },
{ "taxinode", rbac::RBAC_PERM_COMMAND_GO_TAXINODE, false, &HandleGoTaxinodeCommand, "", NULL },
{ "trigger", rbac::RBAC_PERM_COMMAND_GO_TRIGGER, false, &HandleGoTriggerCommand, "", NULL },
{ "zonexy", rbac::RBAC_PERM_COMMAND_GO_ZONEXY, false, &HandleGoZoneXYCommand, "", NULL },
@@ -315,6 +316,71 @@ public:
return true;
}
+ static bool HandleGoQuestCommand(ChatHandler* handler, char const* args)
+ {
+ if (!*args)
+ return false;
+
+ Player* player = handler->GetSession()->GetPlayer();
+
+ char* id = handler->extractKeyFromLink((char*)args, "Hquest");
+ if (!id)
+ return false;
+
+ uint32 questID = atoi(id);
+ if (!questID)
+ return false;
+
+ if (!sObjectMgr->GetQuestTemplate(questID))
+ {
+ handler->PSendSysMessage(LANG_COMMAND_QUEST_NOTFOUND, questID);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ float x, y, z;
+ uint32 mapId;
+
+ if (QuestPOIVector const* poiData = sObjectMgr->GetQuestPOIVector(questID))
+ {
+ auto data = poiData->front();
+
+ mapId = data.MapID;
+
+ x = data.points.front().X;
+ y = data.points.front().Y;
+ }
+ else
+ {
+ handler->PSendSysMessage(LANG_COMMAND_QUEST_NOTFOUND, questID);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (!MapManager::IsValidMapCoord(mapId, x, y) || sObjectMgr->IsTransportMap(mapId))
+ {
+ handler->PSendSysMessage(LANG_INVALID_TARGET_COORD, x, y, mapId);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ // stop flight if need
+ if (player->IsInFlight())
+ {
+ player->GetMotionMaster()->MovementExpired();
+ player->CleanupAfterTaxiFlight();
+ }
+ // save only in non-flight case
+ else
+ player->SaveRecallPosition();
+
+ Map const* map = sMapMgr->CreateBaseMap(mapId);
+ z = std::max(map->GetHeight(x, y, MAX_HEIGHT), map->GetWaterLevel(x, y));
+
+ player->TeleportTo(mapId, x, y, z, 0.0f);
+ return true;
+ }
+
static bool HandleGoTaxinodeCommand(ChatHandler* handler, char const* args)
{
Player* player = handler->GetSession()->GetPlayer();
@@ -448,7 +514,7 @@ public:
if (map->Instanceable())
{
- handler->PSendSysMessage(LANG_INVALID_ZONE_MAP, areaEntry->ID, areaEntry->ZoneName, map->GetId(), map->GetMapName());
+ handler->PSendSysMessage(LANG_INVALID_ZONE_MAP, areaEntry->ID, areaEntry->AreaName_lang, map->GetId(), map->GetMapName());
handler->SetSentErrorMessage(true);
return false;
}
diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp
index ef52f6ebd95..ad877bdefb4 100644
--- a/src/server/scripts/Commands/cs_gobject.cpp
+++ b/src/server/scripts/Commands/cs_gobject.cpp
@@ -168,6 +168,8 @@ public:
// fill the gameobject data and save to the db
object->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), player->GetPhaseMask());
+ guidLow = object->GetSpawnId();
+
// delete the old object and do a clean load from DB with a fresh new GameObject instance.
// this is required to avoid weird behavior and memory leaks
delete object;
@@ -431,14 +433,14 @@ public:
}
object->Relocate(object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), o);
+ object->RelocateStationaryPosition(object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), o);
object->UpdateRotationFields();
object->DestroyForNearbyPlayers();
object->UpdateObjectVisibility();
object->SaveToDB();
- object->Refresh();
- handler->PSendSysMessage(LANG_COMMAND_TURNOBJMESSAGE, object->GetGUID().GetCounter(), object->GetGOInfo()->name.c_str(), object->GetGUID().ToString().c_str(), o);
+ handler->PSendSysMessage(LANG_COMMAND_TURNOBJMESSAGE, object->GetSpawnId(), object->GetGOInfo()->name.c_str(), object->GetGUID().ToString().c_str(), o);
return true;
}
@@ -472,21 +474,20 @@ public:
char* toY = strtok(NULL, " ");
char* toZ = strtok(NULL, " ");
+ float x, y, z;
if (!toX)
{
Player* player = handler->GetSession()->GetPlayer();
- object->Relocate(player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), object->GetOrientation());
- object->DestroyForNearbyPlayers();
- object->UpdateObjectVisibility();
+ player->GetPosition(x, y, z);
}
else
{
if (!toY || !toZ)
return false;
- float x = (float)atof(toX);
- float y = (float)atof(toY);
- float z = (float)atof(toZ);
+ x = (float)atof(toX);
+ y = (float)atof(toY);
+ z = (float)atof(toZ);
if (!MapManager::IsValidMapCoord(object->GetMapId(), x, y, z))
{
@@ -494,16 +495,15 @@ public:
handler->SetSentErrorMessage(true);
return false;
}
-
- object->Relocate(x, y, z, object->GetOrientation());
- object->DestroyForNearbyPlayers();
- object->UpdateObjectVisibility();
}
+ object->DestroyForNearbyPlayers();
+ object->RelocateStationaryPosition(x, y, z, object->GetOrientation());
+ object->GetMap()->GameObjectRelocation(object, x, y, z, object->GetOrientation());
+
object->SaveToDB();
- object->Refresh();
- handler->PSendSysMessage(LANG_COMMAND_MOVEOBJMESSAGE, object->GetGUID().GetCounter(), object->GetGOInfo()->name.c_str(), object->GetGUID().ToString().c_str());
+ handler->PSendSysMessage(LANG_COMMAND_MOVEOBJMESSAGE, object->GetSpawnId(), object->GetGOInfo()->name.c_str(), object->GetGUID().ToString().c_str());
return true;
}
diff --git a/src/server/scripts/Commands/cs_group.cpp b/src/server/scripts/Commands/cs_group.cpp
index ae7b2039e81..5e5694ba23a 100644
--- a/src/server/scripts/Commands/cs_group.cpp
+++ b/src/server/scripts/Commands/cs_group.cpp
@@ -354,7 +354,7 @@ public:
{
AreaTableEntry const* zone = GetAreaEntryByAreaID(area->ParentAreaID);
if (zone)
- zoneName = zone->ZoneName;
+ zoneName = zone->AreaName_lang;
}
}
else
diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp
index d8f98e90275..4d1d484cb2f 100644
--- a/src/server/scripts/Commands/cs_lookup.cpp
+++ b/src/server/scripts/Commands/cs_lookup.cpp
@@ -106,7 +106,7 @@ public:
AreaTableEntry const* areaEntry = sAreaStore.LookupEntry(areaflag);
if (areaEntry)
{
- std::string name = areaEntry->ZoneName;
+ std::string name = areaEntry->AreaName_lang;
if (name.empty())
continue;
diff --git a/src/server/scripts/Commands/cs_message.cpp b/src/server/scripts/Commands/cs_message.cpp
index 519ae1e1f97..be3a027277c 100644
--- a/src/server/scripts/Commands/cs_message.cpp
+++ b/src/server/scripts/Commands/cs_message.cpp
@@ -134,9 +134,9 @@ public:
if (!*args)
return false;
- char buff[2048];
- sprintf(buff, handler->GetTrinityString(LANG_SYSTEMMESSAGE), args);
- sWorld->SendServerMessage(SERVER_MSG_STRING, buff);
+ std::string str = handler->PGetParseString(LANG_SYSTEMMESSAGE, args);
+
+ sWorld->SendServerMessage(SERVER_MSG_STRING, str);
return true;
}
// announce to logged in GMs
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 9e537e42d20..b9765223add 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -236,8 +236,8 @@ public:
handler->PSendSysMessage(LANG_MAP_POSITION,
mapId, (mapEntry ? mapEntry->MapName_lang : unknown),
- zoneId, (zoneEntry ? zoneEntry->ZoneName : unknown),
- areaId, (areaEntry ? areaEntry->ZoneName : unknown),
+ zoneId, (zoneEntry ? zoneEntry->AreaName_lang : unknown),
+ areaId, (areaEntry ? areaEntry->AreaName_lang : unknown),
object->GetPhaseMask(),
object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), object->GetOrientation());
handler->PSendSysMessage(LANG_GRID_POSITION,
@@ -1465,7 +1465,7 @@ public:
* Player %s %s (guid: %u) - I. LANG_PINFO_PLAYER
* ** GM Mode active, Phase: -1 - II. LANG_PINFO_GM_ACTIVE (if GM)
* ** Banned: (Type, Reason, Time, By) - III. LANG_PINFO_BANNED (if banned)
- * ** Muted: (Time, Reason, By) - IV. LANG_PINFO_MUTED (if muted)
+ * ** Muted: (Reason, Time, By) - IV. LANG_PINFO_MUTED (if muted)
* * Account: %s (id: %u), GM Level: %u - V. LANG_PINFO_ACC_ACCOUNT
* * Last Login: %u (Failed Logins: %u) - VI. LANG_PINFO_ACC_LASTLOGIN
* * Uses OS: %s - Latency: %u ms - VII. LANG_PINFO_ACC_OS
@@ -1716,7 +1716,7 @@ public:
// Output IV. LANG_PINFO_MUTED if mute is applied
if (muteTime > 0)
- handler->PSendSysMessage(LANG_PINFO_MUTED, secsToTimeString(muteTime - time(NULL), true).c_str(), muteReason.c_str(), muteBy.c_str());
+ handler->PSendSysMessage(LANG_PINFO_MUTED, muteReason.c_str(), secsToTimeString(muteTime - time(nullptr), true).c_str(), muteBy.c_str());
// Output V. LANG_PINFO_ACC_ACCOUNT
handler->PSendSysMessage(LANG_PINFO_ACC_ACCOUNT, userName.c_str(), accId, security);
@@ -1762,11 +1762,11 @@ public:
AreaTableEntry const* area = GetAreaEntryByAreaID(areaId);
if (area)
{
- areaName = area->ZoneName;
+ areaName = area->AreaName_lang;
AreaTableEntry const* zone = GetAreaEntryByAreaID(area->ParentAreaID);
if (zone)
- zoneName = zone->ZoneName;
+ zoneName = zone->AreaName_lang;
}
if (target)
diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp
index 48a514fd0db..3bcb6862b7f 100644
--- a/src/server/scripts/Commands/cs_modify.cpp
+++ b/src/server/scripts/Commands/cs_modify.cpp
@@ -313,7 +313,7 @@ public:
{
uint32 factionid = target->getFaction();
uint32 flag = target->GetUInt32Value(UNIT_FIELD_FLAGS);
- uint32 npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS);
+ uint64 npcflag = target->GetUInt64Value(UNIT_NPC_FLAGS);
uint32 dyflag = target->GetUInt32Value(OBJECT_DYNAMIC_FLAGS);
handler->PSendSysMessage(LANG_CURRENT_FACTION, target->GetGUID().ToString().c_str(), factionid, flag, npcflag, dyflag);
return true;
@@ -330,11 +330,11 @@ public:
char* pnpcflag = strtok(NULL, " ");
- uint32 npcflag;
+ uint64 npcflag;
if (!pnpcflag)
- npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS);
+ npcflag = target->GetUInt64Value(UNIT_NPC_FLAGS);
else
- npcflag = atoi(pnpcflag);
+ npcflag = std::strtoull(pnpcflag, nullptr, 10);
char* pdyflag = strtok(NULL, " ");
@@ -355,7 +355,7 @@ public:
target->setFaction(factionid);
target->SetUInt32Value(UNIT_FIELD_FLAGS, flag);
- target->SetUInt32Value(UNIT_NPC_FLAGS, npcflag);
+ target->SetUInt64Value(UNIT_NPC_FLAGS, npcflag);
target->SetUInt32Value(OBJECT_DYNAMIC_FLAGS, dyflag);
return true;
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp
index 5dc1696057e..2c91a9e6e3e 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -374,28 +374,13 @@ public:
ObjectGuid::LowType lowGuid = strtoull(guidStr, nullptr, 10);
- Creature* creature = NULL;
-
- /* FIXME: impossible without entry
- if (lowguid)
- creature = ObjectAccessor::GetCreature(*handler->GetSession()->GetPlayer(), MAKE_GUID(lowguid, HIGHGUID_UNIT));
- */
-
// attempt check creature existence by DB data
- if (!creature)
- {
- CreatureData const* data = sObjectMgr->GetCreatureData(lowGuid);
- if (!data)
- {
- handler->PSendSysMessage(LANG_COMMAND_CREATGUIDNOTFOUND, lowGuid);
- handler->SetSentErrorMessage(true);
- return false;
- }
- }
- else
+ CreatureData const* data = sObjectMgr->GetCreatureData(lowGuid);
+ if (!data)
{
- // obtain real GUID for DB operations
- lowGuid = creature->GetSpawnId();
+ handler->PSendSysMessage(LANG_COMMAND_CREATGUIDNOTFOUND, lowGuid);
+ handler->SetSentErrorMessage(true);
+ return false;
}
int wait = waitStr ? atoi(waitStr) : 0;
@@ -411,18 +396,6 @@ public:
WorldDatabase.Execute(stmt);
- if (creature && creature->GetWaypointPath())
- {
- creature->SetDefaultMovementType(WAYPOINT_MOTION_TYPE);
- creature->GetMotionMaster()->Initialize();
- if (creature->IsAlive()) // dead creature will reset movement generator at respawn
- {
- creature->setDeathState(JUST_DIED);
- creature->Respawn(true);
- }
- creature->SaveToDB();
- }
-
handler->SendSysMessage(LANG_WAYPOINT_ADDED);
return true;
@@ -634,7 +607,7 @@ public:
if (!*args)
return false;
- uint32 npcFlags = (uint32) atoi((char*)args);
+ uint64 npcFlags = std::strtoull(args, nullptr, 10);
Creature* creature = handler->getSelectedCreature();
@@ -645,11 +618,11 @@ public:
return false;
}
- creature->SetUInt32Value(UNIT_NPC_FLAGS, npcFlags);
+ creature->SetUInt64Value(UNIT_NPC_FLAGS, npcFlags);
PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_NPCFLAG);
- stmt->setUInt32(0, npcFlags);
+ stmt->setUInt64(0, npcFlags);
stmt->setUInt32(1, creature->GetEntry());
WorldDatabase.Execute(stmt);
@@ -726,7 +699,7 @@ public:
CreatureTemplate const* cInfo = target->GetCreatureTemplate();
uint32 faction = target->getFaction();
- uint32 npcflags = target->GetUInt32Value(UNIT_NPC_FLAGS);
+ uint64 npcflags = target->GetUInt64Value(UNIT_NPC_FLAGS);
uint32 mechanicImmuneMask = cInfo->MechanicImmuneMask;
uint32 displayid = target->GetDisplayId();
uint32 nativeid = target->GetNativeDisplayId();
@@ -836,34 +809,22 @@ public:
lowguid = strtoull(cId, nullptr, 10);
- /* FIXME: impossible without entry
- if (lowguid)
- creature = ObjectAccessor::GetCreature(*handler->GetSession()->GetPlayer(), MAKE_GUID(lowguid, HIGHGUID_UNIT));
- */
-
// Attempting creature load from DB data
- if (!creature)
+ CreatureData const* data = sObjectMgr->GetCreatureData(lowguid);
+ if (!data)
{
- CreatureData const* data = sObjectMgr->GetCreatureData(lowguid);
- if (!data)
- {
- handler->PSendSysMessage(LANG_COMMAND_CREATGUIDNOTFOUND, lowguid);
- handler->SetSentErrorMessage(true);
- return false;
- }
+ handler->PSendSysMessage(LANG_COMMAND_CREATGUIDNOTFOUND, lowguid);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
- uint32 map_id = data->mapid;
+ uint32 map_id = data->mapid;
- if (handler->GetSession()->GetPlayer()->GetMapId() != map_id)
- {
- handler->PSendSysMessage(LANG_COMMAND_CREATUREATSAMEMAP, lowguid);
- handler->SetSentErrorMessage(true);
- return false;
- }
- }
- else
+ if (handler->GetSession()->GetPlayer()->GetMapId() != map_id)
{
- lowguid = creature->GetSpawnId();
+ handler->PSendSysMessage(LANG_COMMAND_CREATUREATSAMEMAP, lowguid);
+ handler->SetSentErrorMessage(true);
+ return false;
}
}
else
diff --git a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp
index 1d7e1594d05..ca944f7037b 100644
--- a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp
+++ b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp
@@ -102,7 +102,7 @@ public:
}
}
- virtual void Update(uint32 /*diff*/) // correct order goes form 1-6
+ virtual void Update(uint32 /*diff*/) override // correct order goes form 1-6
{
switch (State)
{
diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
index ec2f41cc625..15280bc7848 100644
--- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
+++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
@@ -197,7 +197,7 @@ class boss_archaedas : public CreatureScript
DoMeleeAttackIfReady();
}
- void JustDied (Unit* /*killer*/)
+ void JustDied (Unit* /*killer*/) override
{
instance->SetData(DATA_ANCIENT_DOOR, DONE); // open the vault door
instance->SetData(DATA_MINIONS, SPECIAL); // deactivate his minions
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index f1c4c22527b..d261b7a623a 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -25,14 +25,6 @@
#include "ruby_sanctum.h"
#include "Player.h"
-/* ScriptData
-SDName: ruby_sanctum
-SDAuthors: Kaelima, Warpten
-SD%Complete: 90%
-SDComment: Based on Kaelima's initial work (half of it). Corporeality handling is a pure guess, we lack info.
-SDCategory: Chamber of Aspects
-EndScriptData */
-
enum Texts
{
// Shared
@@ -86,6 +78,8 @@ enum Spells
// Living Inferno
SPELL_BLAZING_AURA = 75885,
+ SPELL_SPAWN_LIVING_EMBERS = 75880,
+ SPELL_SUMMON_LIVING_EMBER = 75881,
// Halion Controller
SPELL_COSMETIC_FIRE_PILLAR = 76006,
@@ -142,7 +136,7 @@ enum Events
EVENT_CHECK_CORPOREALITY = 14,
EVENT_SHADOW_PULSARS_SHOOT = 15,
EVENT_TRIGGER_BERSERK = 16,
- EVENT_TWILIGHT_MENDING = 17
+ EVENT_TWILIGHT_MENDING = 17,
};
enum Actions
@@ -155,7 +149,13 @@ enum Actions
ACTION_MONITOR_CORPOREALITY = 3,
// Orb Carrier
- ACTION_SHOOT = 4
+ ACTION_SHOOT = 4,
+
+ // Living Inferno
+ ACTION_SUMMON_LIVING_EMBERS = 5,
+
+ // Meteor Flame
+ ACTION_SUMMON_FLAME = 6
};
enum Phases
@@ -173,7 +173,8 @@ enum Misc
DATA_MATERIAL_DAMAGE_TAKEN = 2,
DATA_STACKS_DISPELLED = 3,
DATA_FIGHT_PHASE = 4,
- DATA_EVADE_METHOD = 5
+ DATA_EVADE_METHOD = 5,
+ DATA_SPAWNED_FLAMES = 6,
};
enum OrbCarrierSeats
@@ -702,7 +703,7 @@ class npc_halion_controller : public CreatureScript
// The IsInCombat() check is needed because that check should be false when Halion is
// not engaged, while it would return true without as UpdateVictim() checks for
// combat state.
- if (!(_events.IsInPhase(PHASE_INTRO)) && me->IsInCombat() && !UpdateVictim())
+ if (!_events.IsInPhase(PHASE_INTRO) && me->IsInCombat() && !UpdateVictim())
{
EnterEvadeMode();
return;
@@ -893,8 +894,6 @@ class npc_halion_controller : public CreatureScript
}
};
-typedef npc_halion_controller::npc_halion_controllerAI controllerAI;
-
class npc_orb_carrier : public CreatureScript
{
public:
@@ -996,7 +995,7 @@ class npc_meteor_strike_initial : public CreatureScript
if (!owner)
return;
- // Let Halion Controller count as summoner
+ // Let Controller count as summoner
if (Creature* controller = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_HALION_CONTROLLER)))
controller->AI()->JustSummoned(me);
@@ -1006,11 +1005,13 @@ class npc_meteor_strike_initial : public CreatureScript
if (HalionAI* halionAI = CAST_AI(HalionAI, owner->AI()))
{
Position const* ownerPos = halionAI->GetMeteorStrikePosition();
+ // Adjust randomness between 0 and pi.
+ float randomAdjustment = frand(static_cast<float>(M_PI / 14), static_cast<float>(13 * M_PI / 14));
float angle[4];
angle[0] = me->GetAngle(ownerPos);
- angle[1] = me->GetAngle(ownerPos) - static_cast<float>(M_PI/2);
- angle[2] = me->GetAngle(ownerPos) - static_cast<float>(-M_PI/2);
- angle[3] = me->GetAngle(ownerPos) - static_cast<float>(M_PI);
+ angle[1] = angle[0] + randomAdjustment;
+ angle[2] = angle[0] + static_cast<float>(M_PI);
+ angle[3] = angle[2] + randomAdjustment;
_meteorList.clear();
for (uint8 i = 0; i < 4; i++)
@@ -1019,7 +1020,10 @@ class npc_meteor_strike_initial : public CreatureScript
me->SetOrientation(angle[i]);
Position newPos = me->GetNearPosition(10.0f, 0.0f); // Exact distance
if (Creature* meteor = me->SummonCreature(NPC_METEOR_STRIKE_NORTH + i, newPos, TEMPSUMMON_TIMED_DESPAWN, 30000))
+ {
+ meteor->SetOrientation(angle[i]);
_meteorList.push_back(meteor);
+ }
}
}
}
@@ -1045,11 +1049,8 @@ class npc_meteor_strike : public CreatureScript
struct npc_meteor_strikeAI : public ScriptedAI
{
npc_meteor_strikeAI(Creature* creature) : ScriptedAI(creature),
- _instance(creature->GetInstanceScript())
+ _instance(creature->GetInstanceScript()), _spawnCount(0)
{
- _range = 5.0f;
- _spawnCount = 0;
-
SetCombatMovement(false);
}
@@ -1070,34 +1071,38 @@ class npc_meteor_strike : public CreatureScript
controller->AI()->JustSummoned(me);
}
- void UpdateAI(uint32 diff) override
+ void SetData(uint32 dataType, uint32 dataCount) override
{
- if (_spawnCount > 5)
- return;
+ if (dataType == DATA_SPAWNED_FLAMES)
+ _spawnCount += dataCount;
+ }
- _events.Update(diff);
+ uint32 GetData(uint32 dataType) const override
+ {
+ if (dataType == DATA_SPAWNED_FLAMES)
+ return _spawnCount;
+ return 0;
+ }
+ void UpdateAI(uint32 diff) override
+ {
+ _events.Update(diff);
if (_events.ExecuteEvent() == EVENT_SPAWN_METEOR_FLAME)
{
- Position pos = me->GetNearPosition( _range, 0.0f);
-
+ Position pos = me->GetNearPosition(5.0f, 0.0f);
if (Creature* flame = me->SummonCreature(NPC_METEOR_STRIKE_FLAME, pos, TEMPSUMMON_TIMED_DESPAWN, 25000))
{
- if (Creature* controller = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_HALION_CONTROLLER)))
- controller->AI()->JustSummoned(flame);
+ flame->SetOrientation(me->GetOrientation());
- flame->CastSpell(flame, SPELL_METEOR_STRIKE_FIRE_AURA_2, true);
- ++_spawnCount;
+ flame->AI()->SetGUID(GetGUID());
+ flame->AI()->DoAction(ACTION_SUMMON_FLAME);
}
- _range += 5.0f;
- _events.ScheduleEvent(EVENT_SPAWN_METEOR_FLAME, 800);
}
}
private:
InstanceScript* _instance;
EventMap _events;
- float _range;
uint8 _spawnCount;
};
@@ -1107,6 +1112,67 @@ class npc_meteor_strike : public CreatureScript
}
};
+class npc_meteor_strike_flame : public CreatureScript
+{
+ public:
+ npc_meteor_strike_flame() : CreatureScript("npc_meteor_strike_flame") { }
+
+ struct npc_meteor_strike_flameAI : public ScriptedAI
+ {
+ npc_meteor_strike_flameAI(Creature* creature) : ScriptedAI(creature),
+ _instance(creature->GetInstanceScript())
+ {
+ SetCombatMovement(false);
+ }
+
+ void SetGUID(ObjectGuid guid, int32 /*id = 0 */)
+ {
+ _rootOwnerGuid = guid;
+ }
+
+ void DoAction(int32 action) override
+ {
+ if (action != ACTION_SUMMON_FLAME || _rootOwnerGuid.IsEmpty())
+ return;
+
+ me->CastSpell(me, SPELL_METEOR_STRIKE_FIRE_AURA_2, true);
+
+ Creature* meteorStrike = ObjectAccessor::GetCreature(*me, _rootOwnerGuid);
+ if (!meteorStrike || meteorStrike->AI()->GetData(DATA_SPAWNED_FLAMES) > 5)
+ return;
+
+ me->SetOrientation(me->GetOrientation() + frand(static_cast<float>(-M_PI / 16), static_cast<float>(M_PI / 16)));
+ Position pos = me->GetNearPosition(5.0f, 0.0f);
+
+ if (Creature* flame = me->SummonCreature(NPC_METEOR_STRIKE_FLAME, pos, TEMPSUMMON_TIMED_DESPAWN, 25000))
+ {
+ flame->AI()->SetGUID(_rootOwnerGuid);
+ meteorStrike->AI()->SetData(DATA_SPAWNED_FLAMES, 1);
+ }
+ }
+
+ void IsSummonedBy(Unit* /*summoner*/) override
+ {
+ // Let Halion Controller count as summoner.
+ if (Creature* controller = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_HALION_CONTROLLER)))
+ controller->AI()->JustSummoned(me);
+ }
+
+ void UpdateAI(uint32 /*diff*/) override { }
+ void EnterEvadeMode() override { }
+
+ private:
+ InstanceScript* _instance;
+ EventMap _events;
+ ObjectGuid _rootOwnerGuid = ObjectGuid::Empty;
+ };
+
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return GetRubySanctumAI<npc_meteor_strike_flameAI>(creature);
+ }
+};
+
class npc_combustion_consumption : public CreatureScript
{
public:
@@ -1119,26 +1185,23 @@ class npc_combustion_consumption : public CreatureScript
{
SetCombatMovement(false);
- switch (me->GetEntry())
+ switch (creature->GetEntry())
{
case NPC_COMBUSTION:
_explosionSpell = SPELL_FIERY_COMBUSTION_EXPLOSION;
_damageSpell = SPELL_COMBUSTION_DAMAGE_AURA;
- me->SetPhaseMask(0x01, true);
+ creature->SetPhaseMask(IsHeroic() ? 0x21 : 0x01, true);
break;
case NPC_CONSUMPTION:
_explosionSpell = SPELL_SOUL_CONSUMPTION_EXPLOSION;
_damageSpell = SPELL_CONSUMPTION_DAMAGE_AURA;
- me->SetPhaseMask(0x20, true);
+ creature->SetPhaseMask(IsHeroic() ? 0x21 : 0x20, true);
break;
default: // Should never happen
_explosionSpell = 0;
_damageSpell = 0;
break;
}
-
- if (IsHeroic())
- me->SetPhaseMask(0x01 | 0x20, true);
}
void IsSummonedBy(Unit* summoner) override
@@ -1160,7 +1223,7 @@ class npc_combustion_consumption : public CreatureScript
me->CastCustomSpell(SPELL_SCALE_AURA, SPELLVALUE_AURA_STACK, stackAmount, me);
DoCast(me, _damageSpell);
- int32 damage = 1200 + (stackAmount * 1290); // Needs more researches.
+ int32 damage = 1200 + (stackAmount * 1290); // Needs more research.
summoner->CastCustomSpell(_explosionSpell, SPELLVALUE_BASE_POINT0, damage, summoner);
}
@@ -1193,6 +1256,10 @@ class npc_living_inferno : public CreatureScript
me->SetInCombatWithZone();
me->CastSpell(me, SPELL_BLAZING_AURA, true);
+ // SMSG_SPELL_GO for the living ember stuff isn't even sent to the client - Blizzard on drugs.
+ if (me->GetMap()->GetDifficultyID() == DIFFICULTY_25_HC)
+ me->CastSpell(me, SPELL_SPAWN_LIVING_EMBERS, true);
+
if (InstanceScript* instance = me->GetInstanceScript())
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_HALION_CONTROLLER)))
controller->AI()->JustSummoned(me);
@@ -1210,7 +1277,6 @@ class npc_living_inferno : public CreatureScript
}
};
-//! Need sniff data
class npc_living_ember : public CreatureScript
{
public:
@@ -1738,12 +1804,46 @@ class spell_halion_summon_exit_portals : public SpellScriptLoader
}
};
+class spell_halion_spawn_living_embers : public SpellScriptLoader
+{
+ public:
+ spell_halion_spawn_living_embers() : SpellScriptLoader("spell_halion_spawn_living_embers") { }
+
+ class spell_halion_spawn_living_embers_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_halion_spawn_living_embers_SpellScript);
+
+ void SelectMeteorFlames(std::list<WorldObject*>& unitList)
+ {
+ if (!unitList.empty())
+ Trinity::Containers::RandomResizeList(unitList, 10);
+ }
+
+ void HandleScript(SpellEffIndex /* effIndex */)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_SUMMON_LIVING_EMBER, true);
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_halion_spawn_living_embers_SpellScript::SelectMeteorFlames, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY);
+ OnEffectHitTarget += SpellEffectFn(spell_halion_spawn_living_embers_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_halion_spawn_living_embers_SpellScript();
+ }
+};
+
void AddSC_boss_halion()
{
new boss_halion();
new boss_twilight_halion();
new npc_halion_controller();
+ new npc_meteor_strike_flame();
new npc_meteor_strike_initial();
new npc_meteor_strike();
new npc_combustion_consumption();
@@ -1765,4 +1865,5 @@ void AddSC_boss_halion()
new spell_halion_twilight_phasing();
new spell_halion_twilight_cutter();
new spell_halion_clear_debuffs();
+ new spell_halion_spawn_living_embers();
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
index 0fc4f1a4a8b..7f88a56f22c 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
@@ -196,7 +196,7 @@ class instance_halls_of_reflection : public InstanceMapScript
}
}
- uint32 GetGameObjectEntry(uint32 /*guidLow*/, uint32 entry) override
+ uint32 GetGameObjectEntry(ObjectGuid::LowType /*guidLow*/, uint32 entry) override
{
if (!_teamInInstance)
{
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index faa448ef539..51756834e77 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -1059,8 +1059,8 @@ class spell_putricide_ooze_eruption_searcher : public SpellScriptLoader
{
if (GetHitUnit()->HasAura(SPELL_VOLATILE_OOZE_ADHESIVE))
{
- GetCaster()->CastSpell(GetHitUnit(), SPELL_OOZE_ERUPTION, true);
GetHitUnit()->RemoveAurasDueToSpell(SPELL_VOLATILE_OOZE_ADHESIVE, GetCaster()->GetGUID(), 0, AURA_REMOVE_BY_ENEMY_SPELL);
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_OOZE_ERUPTION, true);
}
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index 7bd1dee15ca..423c1049452 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -348,7 +348,7 @@ class boss_sindragosa : public CreatureScript
events.ScheduleEvent(EVENT_AIR_MOVEMENT, 1);
break;
case POINT_AIR_PHASE:
- me->CastCustomSpell(SPELL_ICE_TOMB_TARGET, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 5, 2, 6), NULL);
+ me->CastCustomSpell(SPELL_ICE_TOMB_TARGET, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 5, 2, 6), NULL, TRIGGERED_FULL_MASK);
me->SetFacingTo(float(M_PI));
events.ScheduleEvent(EVENT_AIR_MOVEMENT_FAR, 1);
events.ScheduleEvent(EVENT_FROST_BOMB, 9000);
@@ -490,7 +490,7 @@ class boss_sindragosa : public CreatureScript
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, FrostBeaconSelector(me)))
{
Talk(EMOTE_WARN_FROZEN_ORB, target);
- DoCast(target, SPELL_ICE_TOMB_DUMMY, true);
+ me->CastCustomSpell(SPELL_ICE_TOMB_TARGET, SPELLVALUE_MAX_TARGETS, 1, nullptr, TRIGGERED_FULL_MASK);
}
events.ScheduleEvent(EVENT_ICE_TOMB, urand(16000, 23000));
break;
@@ -1630,7 +1630,7 @@ void AddSC_boss_sindragosa()
new spell_rimefang_icy_blast();
new spell_frostwarden_handler_order_whelp();
new spell_frostwarden_handler_focus_fire();
- new spell_trigger_spell_from_caster("spell_sindragosa_ice_tomb", SPELL_ICE_TOMB_DUMMY);
+ new spell_trigger_spell_from_caster("spell_sindragosa_ice_tomb", SPELL_ICE_TOMB_DUMMY, TRIGGERED_IGNORE_SET_FACING);
new spell_trigger_spell_from_caster("spell_sindragosa_ice_tomb_dummy", SPELL_FROST_BEACON);
new at_sindragosa_lair();
new achievement_all_you_can_eat();
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
index 8bf8e5ee6fb..091190b6b4e 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
@@ -524,14 +524,16 @@ enum AreaIds
class spell_trigger_spell_from_caster : public SpellScriptLoader
{
public:
- spell_trigger_spell_from_caster(char const* scriptName, uint32 triggerId) : SpellScriptLoader(scriptName), _triggerId(triggerId) { }
+ spell_trigger_spell_from_caster(char const* scriptName, uint32 triggerId, TriggerCastFlags triggerFlags = TRIGGERED_FULL_MASK)
+ : SpellScriptLoader(scriptName), _triggerId(triggerId), _triggerFlags(triggerFlags) { }
class spell_trigger_spell_from_caster_SpellScript : public SpellScript
{
PrepareSpellScript(spell_trigger_spell_from_caster_SpellScript);
public:
- spell_trigger_spell_from_caster_SpellScript(uint32 triggerId) : SpellScript(), _triggerId(triggerId) { }
+ spell_trigger_spell_from_caster_SpellScript(uint32 triggerId, TriggerCastFlags triggerFlags)
+ : SpellScript(), _triggerId(triggerId), _triggerFlags(triggerFlags) { }
bool Validate(SpellInfo const* /*spell*/) override
{
@@ -542,7 +544,7 @@ class spell_trigger_spell_from_caster : public SpellScriptLoader
void HandleTrigger()
{
- GetCaster()->CastSpell(GetHitUnit(), _triggerId, true);
+ GetCaster()->CastSpell(GetHitUnit(), _triggerId, _triggerFlags);
}
void Register() override
@@ -551,15 +553,17 @@ class spell_trigger_spell_from_caster : public SpellScriptLoader
}
uint32 _triggerId;
+ TriggerCastFlags _triggerFlags;
};
SpellScript* GetSpellScript() const override
{
- return new spell_trigger_spell_from_caster_SpellScript(_triggerId);
+ return new spell_trigger_spell_from_caster_SpellScript(_triggerId, _triggerFlags);
}
private:
uint32 _triggerId;
+ TriggerCastFlags _triggerFlags;
};
template<class AI>
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index aee14edd0c3..d38d630f775 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -317,7 +317,7 @@ class instance_icecrown_citadel : public InstanceMapScript
}
// Weekly quest spawn prevention
- uint32 GetCreatureEntry(uint32 /*guidLow*/, CreatureData const* data) override
+ uint32 GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureData const* data) override
{
uint32 entry = data->id;
switch (entry)
@@ -372,7 +372,7 @@ class instance_icecrown_citadel : public InstanceMapScript
return entry;
}
- uint32 GetGameObjectEntry(uint32 /*guidLow*/, uint32 entry) override
+ uint32 GetGameObjectEntry(ObjectGuid::LowType /*guidLow*/, uint32 entry) override
{
switch (entry)
{
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index 0c79b42f20c..b939c40cabb 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -128,7 +128,6 @@ enum Spells
SPELL_ARCANE_BARRAGE_DAMAGE = 63934, // the actual damage - cast by affected player by script spell
// Transition /II-III/
- SPELL_SUMMOM_RED_DRAGON_BUDYY = 56070,
SPELL_RIDE_RED_DRAGON_BUDDY = 56071,
SPELL_SUMMON_RED_DRAGON_BUDDY_F_CAST = 58846, // After implicitly hit player targets they will force cast 56070 on self
SPELL_DESTROY_PLATFORM_CHANNEL = 58842,
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h b/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
index b6a0d3f9b62..d9b921b38a1 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
@@ -80,7 +80,8 @@ enum InstanceSpells
SPELL_VORTEX_5 = 56263, // damage | used to enter to the vehicle
SPELL_PORTAL_OPENED = 61236,
SPELL_RIDE_RED_DRAGON_TRIGGERED = 56072,
- SPELL_IRIS_OPENED = 61012 // visual when starting encounter
+ SPELL_IRIS_OPENED = 61012, // visual when starting encounter
+ SPELL_SUMMOM_RED_DRAGON_BUDDY = 56070
};
#endif
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
index 79a7c5cb772..11d19d76d80 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
@@ -39,6 +39,12 @@ public:
SetBossNumber(MAX_ENCOUNTER);
}
+ void OnPlayerEnter(Player* player) override
+ {
+ if (GetBossState(DATA_MALYGOS_EVENT) == DONE)
+ player->CastSpell(player, SPELL_SUMMOM_RED_DRAGON_BUDDY, true);
+ }
+
bool SetBossState(uint32 type, EncounterState state) override
{
if (!InstanceScript::SetBossState(type, state))
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
index 9ca88f4fdfa..525ecacd39a 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -482,40 +482,47 @@ class boss_flame_leviathan : public CreatureScript
if (action && action <= 4) // Tower destruction, debuff leviathan loot and reduce active tower count
{
if (me->HasLootMode(LOOT_MODE_DEFAULT | LOOT_MODE_HARD_MODE_1 | LOOT_MODE_HARD_MODE_2 | LOOT_MODE_HARD_MODE_3 | LOOT_MODE_HARD_MODE_4) && ActiveTowersCount == 4)
- {
me->RemoveLootMode(LOOT_MODE_HARD_MODE_4);
- --ActiveTowersCount;
- }
+
if (me->HasLootMode(LOOT_MODE_DEFAULT | LOOT_MODE_HARD_MODE_1 | LOOT_MODE_HARD_MODE_2 | LOOT_MODE_HARD_MODE_3) && ActiveTowersCount == 3)
- {
me->RemoveLootMode(LOOT_MODE_HARD_MODE_3);
- --ActiveTowersCount;
- }
+
if (me->HasLootMode(LOOT_MODE_DEFAULT | LOOT_MODE_HARD_MODE_1 | LOOT_MODE_HARD_MODE_2) && ActiveTowersCount == 2)
- {
me->RemoveLootMode(LOOT_MODE_HARD_MODE_2);
- --ActiveTowersCount;
- }
+
if (me->HasLootMode(LOOT_MODE_DEFAULT | LOOT_MODE_HARD_MODE_1) && ActiveTowersCount == 1)
- {
me->RemoveLootMode(LOOT_MODE_HARD_MODE_1);
- --ActiveTowersCount;
- }
}
switch (action)
{
case ACTION_TOWER_OF_STORM_DESTROYED:
- towerOfStorms = false;
+ if (towerOfStorms)
+ {
+ towerOfStorms = false;
+ --ActiveTowersCount;
+ }
break;
case ACTION_TOWER_OF_FROST_DESTROYED:
- towerOfFrost = false;
+ if (towerOfFrost)
+ {
+ towerOfFrost = false;
+ --ActiveTowersCount;
+ }
break;
case ACTION_TOWER_OF_FLAMES_DESTROYED:
- towerOfFlames = false;
+ if (towerOfFlames)
+ {
+ towerOfFlames = false;
+ --ActiveTowersCount;
+ }
break;
case ACTION_TOWER_OF_LIFE_DESTROYED:
- towerOfLife = false;
+ if (towerOfLife)
+ {
+ towerOfLife = false;
+ --ActiveTowersCount;
+ }
break;
case ACTION_START_HARD_MODE: // Activate hard-mode enable all towers, apply buffs on leviathan
ActiveTowers = true;
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
index 134783ccf07..6a1ff6d4eea 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -903,17 +903,15 @@ class boss_yogg_saron : public CreatureScript
DoCast(me, SPELL_KNOCK_AWAY);
me->ResetLootMode();
- switch (_instance->GetData(DATA_KEEPERS_COUNT))
- {
- case 0:
- me->AddLootMode(LOOT_MODE_HARD_MODE_4);
- case 1:
- me->AddLootMode(LOOT_MODE_HARD_MODE_3);
- case 2:
- me->AddLootMode(LOOT_MODE_HARD_MODE_2);
- case 3:
- me->AddLootMode(LOOT_MODE_HARD_MODE_1);
- }
+ uint32 keepersCount = _instance->GetData(DATA_KEEPERS_COUNT);
+ if (keepersCount == 0)
+ me->AddLootMode(LOOT_MODE_HARD_MODE_4);
+ if (keepersCount <= 1)
+ me->AddLootMode(LOOT_MODE_HARD_MODE_3);
+ if (keepersCount <= 2)
+ me->AddLootMode(LOOT_MODE_HARD_MODE_2);
+ if (keepersCount <= 3)
+ me->AddLootMode(LOOT_MODE_HARD_MODE_1);
}
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp
index 7f29a6621bd..2e426fd77cf 100644
--- a/src/server/scripts/Northrend/zone_icecrown.cpp
+++ b/src/server/scripts/Northrend/zone_icecrown.cpp
@@ -25,53 +25,6 @@
#include "CombatAI.h"
/*######
-## npc_squire_david
-######*/
-
-enum SquireDavid
-{
- QUEST_THE_ASPIRANT_S_CHALLENGE_H = 13680,
- QUEST_THE_ASPIRANT_S_CHALLENGE_A = 13679,
-
- NPC_ARGENT_VALIANT = 33448,
-
- GOSSIP_TEXTID_SQUIRE = 14407
-};
-
-#define GOSSIP_SQUIRE_ITEM_1 "I am ready to fight!"
-#define GOSSIP_SQUIRE_ITEM_2 "How do the Argent Crusader raiders fight?"
-
-class npc_squire_david : public CreatureScript
-{
-public:
- npc_squire_david() : CreatureScript("npc_squire_david") { }
-
- bool OnGossipHello(Player* player, Creature* creature) override
- {
- if (player->GetQuestStatus(QUEST_THE_ASPIRANT_S_CHALLENGE_H) == QUEST_STATUS_INCOMPLETE ||
- player->GetQuestStatus(QUEST_THE_ASPIRANT_S_CHALLENGE_A) == QUEST_STATUS_INCOMPLETE)//We need more info about it.
- {
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SQUIRE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SQUIRE_ITEM_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
- }
-
- player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_SQUIRE, creature->GetGUID());
- return true;
- }
-
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
- {
- player->PlayerTalkClass->ClearMenus();
- if (action == GOSSIP_ACTION_INFO_DEF+1)
- {
- player->CLOSE_GOSSIP_MENU();
- creature->SummonCreature(NPC_ARGENT_VALIANT, 8575.451f, 952.472f, 547.554f, 0.38f);
- }
- return true;
- }
-};
-
-/*######
## npc_argent_valiant
######*/
@@ -837,7 +790,6 @@ class npc_frostbrood_skytalon : public CreatureScript
void AddSC_icecrown()
{
- new npc_squire_david;
new npc_argent_valiant;
new npc_guardian_pavilion;
new npc_tournament_training_dummy;
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h
index c2dd71ce7cf..77a7c338118 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h
@@ -261,13 +261,13 @@ class OPvPCapturePointNA : public OPvPCapturePoint
public:
OPvPCapturePointNA(OutdoorPvP* pvp);
- bool Update(uint32 diff);
+ bool Update(uint32 diff) override;
- void ChangeState();
+ void ChangeState() override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet);
+ void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
- bool HandleCustomSpell(Player* player, uint32 spellId, GameObject* go);
+ bool HandleCustomSpell(Player* player, uint32 spellId, GameObject* go) override;
int32 HandleOpenGo(Player* player, GameObject* go) override;
diff --git a/src/server/scripts/Outland/CMakeLists.txt b/src/server/scripts/Outland/CMakeLists.txt
index 24658dbc21f..42621b76941 100644
--- a/src/server/scripts/Outland/CMakeLists.txt
+++ b/src/server/scripts/Outland/CMakeLists.txt
@@ -27,6 +27,7 @@ set(scripts_STAT_SRCS
Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h
Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
+ Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp
Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp
Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
index fb44a403d86..dfc5f5992a6 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
@@ -108,6 +108,7 @@ class boss_grand_warlock_nethekurse : public CreatureScript
void Reset() override
{
+ _Reset();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
Initialize();
@@ -115,9 +116,8 @@ class boss_grand_warlock_nethekurse : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
+ _JustDied();
Talk(SAY_DIE);
-
- instance->SetBossState(DATA_NETHEKURSE, DONE);
}
void SetData(uint32 data, uint32 value) override
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp
index 7d00cd97126..a950882eddd 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp
@@ -160,6 +160,7 @@ class boss_warbringer_omrogg : public CreatureScript
void Reset() override
{
+ _Reset();
if (Unit* LeftHead = ObjectAccessor::GetUnit(*me, LeftHeadGUID))
{
LeftHead->setDeathState(JUST_DIED);
@@ -257,14 +258,14 @@ class boss_warbringer_omrogg : public CreatureScript
Creature* LeftHead = ObjectAccessor::GetCreature(*me, LeftHeadGUID);
Creature* RightHead = ObjectAccessor::GetCreature(*me, RightHeadGUID);
+ _JustDied();
+
if (!LeftHead || !RightHead)
return;
LeftHead->AI()->Talk(YELL_DIE_L);
RightHead->AI()->SetData(SETDATA_DATA, SETDATA_YELL);
-
- instance->SetBossState(DATA_OMROGG, DONE);
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
index b44ae46c78c..7f2e08b39ca 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
@@ -35,7 +35,10 @@ enum Says
{
SAY_AGGRO = 0,
SAY_SLAY = 1,
- SAY_DEATH = 2
+ SAY_DEATH = 2,
+
+ SAY_CALL_EXECUTIONER_A = 3,
+ SAY_CALL_EXECUTIONER_H = 4
};
enum Spells
@@ -84,10 +87,28 @@ class boss_warchief_kargath_bladefist : public CreatureScript
resetcheck_timer = 5000;
}
+ void DoAction(int32 action) override
+ {
+ if (action == ACTION_EXECUTIONER_TAUNT)
+ {
+ switch (instance->GetData(DATA_TEAM_IN_INSTANCE))
+ {
+ case ALLIANCE:
+ Talk(SAY_CALL_EXECUTIONER_A);
+ break;
+ case HORDE:
+ Talk(SAY_CALL_EXECUTIONER_H);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
void Reset() override
{
removeAdds();
-
+ _Reset();
me->SetSpeed(MOVE_RUN, 2);
me->SetWalk(false);
@@ -96,10 +117,9 @@ class boss_warchief_kargath_bladefist : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
+ _JustDied();
Talk(SAY_DEATH);
removeAdds();
-
- instance->SetBossState(DATA_KARGATH, DONE);
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
index c6b08bdada1..a781861d47f 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
@@ -26,6 +26,18 @@ EndScriptData */
#include "ScriptMgr.h"
#include "InstanceScript.h"
#include "shattered_halls.h"
+#include "Player.h"
+#include "SpellAuras.h"
+#include "CreatureAI.h"
+#include "ScriptedCreature.h"
+#include "SpellScript.h"
+
+DoorData const doorData[] =
+{
+ { GO_GRAND_WARLOCK_CHAMBER_DOOR_1, DATA_NETHEKURSE, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
+ { GO_GRAND_WARLOCK_CHAMBER_DOOR_2, DATA_NETHEKURSE, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
+ { 0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE }
+};
class instance_shattered_halls : public InstanceMapScript
{
@@ -43,6 +55,41 @@ class instance_shattered_halls : public InstanceMapScript
{
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
+ LoadDoorData(doorData);
+ executionTimer = 0;
+ executed = 0;
+ _team = 0;
+ }
+
+ void OnPlayerEnter(Player* player) override
+ {
+ Aura* ex = nullptr;
+
+ if (!_team)
+ _team = player->GetTeam();
+
+ player->CastSpell(player, SPELL_REMOVE_KARGATH_EXECUTIONER, true);
+
+ if (!executionTimer || executionerGUID.IsEmpty())
+ return;
+
+ switch (executed)
+ {
+ case 0:
+ ex = player->AddAura(SPELL_KARGATH_EXECUTIONER_1, player);
+ break;
+ case 1:
+ ex = player->AddAura(SPELL_KARGATH_EXECUTIONER_2, player);
+ break;
+ case 2:
+ ex = player->AddAura(SPELL_KARGATH_EXECUTIONER_3, player);
+ break;
+ default:
+ break;
+ }
+
+ if (ex)
+ ex->SetDuration(executionTimer);
}
void OnGameObjectCreate(GameObject* go) override
@@ -50,21 +97,65 @@ class instance_shattered_halls : public InstanceMapScript
switch (go->GetEntry())
{
case GO_GRAND_WARLOCK_CHAMBER_DOOR_1:
- nethekurseDoor1GUID = go->GetGUID();
+ case GO_GRAND_WARLOCK_CHAMBER_DOOR_2:
+ AddDoor(go, true);
+ default:
break;
+ }
+ }
+
+ void OnGameObjectRemove(GameObject* go) override
+ {
+ switch (go->GetEntry())
+ {
+ case GO_GRAND_WARLOCK_CHAMBER_DOOR_1:
case GO_GRAND_WARLOCK_CHAMBER_DOOR_2:
- nethekurseDoor2GUID = go->GetGUID();
+ AddDoor(go, false);
+ default:
break;
}
}
void OnCreatureCreate(Creature* creature) override
{
+ if (!_team)
+ {
+ Map::PlayerList const &players = instance->GetPlayers();
+ if (!players.isEmpty())
+ if (Player* player = players.begin()->GetSource())
+ _team = player->GetTeam();
+ }
+
switch (creature->GetEntry())
{
case NPC_GRAND_WARLOCK_NETHEKURSE:
nethekurseGUID = creature->GetGUID();
break;
+ case NPC_KARGATH_BLADEFIST:
+ kargathGUID = creature->GetGUID();
+ break;
+ case NPC_RANDY_WHIZZLESPROCKET:
+ if (_team == HORDE)
+ creature->UpdateEntry(NPC_DRISELLA);
+ break;
+ case NPC_SHATTERED_EXECUTIONER:
+ executionTimer = 55 * MINUTE * IN_MILLISECONDS;
+ DoCastSpellOnPlayers(SPELL_KARGATH_EXECUTIONER_1);
+ executionerGUID = creature->GetGUID();
+ SaveToDB();
+ break;
+ case NPC_CAPTAIN_ALINA:
+ case NPC_CAPTAIN_BONESHATTER:
+ victimsGUID[0] = creature->GetGUID();
+ break;
+ case NPC_ALLIANCE_VICTIM_1:
+ case NPC_HORDE_VICTIM_1:
+ victimsGUID[1] = creature->GetGUID();
+ break;
+ case NPC_ALLIANCE_VICTIM_2:
+ case NPC_HORDE_VICTIM_2:
+ victimsGUID[2] = creature->GetGUID();
+ break;
}
}
@@ -75,18 +166,18 @@ class instance_shattered_halls : public InstanceMapScript
switch (type)
{
- case DATA_NETHEKURSE:
- if (state == IN_PROGRESS)
- {
- HandleGameObject(nethekurseDoor1GUID, false);
- HandleGameObject(nethekurseDoor2GUID, false);
- }
- else
+ case DATA_SHATTERED_EXECUTIONER:
+ if (state == DONE)
{
- HandleGameObject(nethekurseDoor1GUID, true);
- HandleGameObject(nethekurseDoor2GUID, true);
+ DoCastSpellOnPlayers(SPELL_REMOVE_KARGATH_EXECUTIONER);
+ executionTimer = 0;
+ SaveToDB();
}
break;
+ case DATA_KARGATH:
+ if (Creature* executioner = instance->GetCreature(executionerGUID))
+ executioner->AI()->Reset(); // trigger removal of IMMUNE_TO_PC flag
+ break;
case DATA_OMROGG:
break;
}
@@ -99,24 +190,120 @@ class instance_shattered_halls : public InstanceMapScript
{
case NPC_GRAND_WARLOCK_NETHEKURSE:
return nethekurseGUID;
- break;
- case GO_GRAND_WARLOCK_CHAMBER_DOOR_1:
- return nethekurseDoor1GUID;
- break;
- case GO_GRAND_WARLOCK_CHAMBER_DOOR_2:
- return nethekurseDoor2GUID;
- break;
+ case NPC_KARGATH_BLADEFIST:
+ return kargathGUID;
+ case NPC_SHATTERED_EXECUTIONER:
+ return executionerGUID;
+ case DATA_FIRST_PRISONER:
+ case DATA_SECOND_PRISONER:
+ case DATA_THIRD_PRISONER:
+ return victimsGUID[data - DATA_FIRST_PRISONER];
+ default:
+ return ObjectGuid::Empty;
}
- return ObjectGuid::Empty;
}
- protected:
+ void WriteSaveDataMore(std::ostringstream& data) override
+ {
+ if (!instance->IsHeroic())
+ return;
+
+ data << uint32(executed) << ' '
+ << executionTimer << ' ';
+ }
+
+ void ReadSaveDataMore(std::istringstream& data) override
+ {
+ if (!instance->IsHeroic())
+ return;
+
+ uint32 readbuff;
+ data >> readbuff;
+ executed = uint8(readbuff);
+ data >> readbuff;
+
+ if (executed > VictimCount)
+ {
+ executed = VictimCount;
+ executionTimer = 0;
+ return;
+ }
+
+ if (!readbuff)
+ return;
+
+ Creature* executioner = nullptr;
+
+ instance->LoadGrid(Executioner.GetPositionX(), Executioner.GetPositionY());
+ if (Creature* kargath = instance->GetCreature(kargathGUID))
+ if (executionerGUID.IsEmpty())
+ executioner = kargath->SummonCreature(NPC_SHATTERED_EXECUTIONER, Executioner);
+
+ if (executioner)
+ for (uint8 i = executed; i < VictimCount; ++i)
+ executioner->SummonCreature(executionerVictims[i](GetData(DATA_TEAM_IN_INSTANCE)), executionerVictims[i].GetPos());
+
+ executionTimer = readbuff;
+ }
+
+ uint32 GetData(uint32 type) const override
+ {
+ switch (type)
+ {
+ case DATA_PRISONERS_EXECUTED:
+ return executed;
+ case DATA_TEAM_IN_INSTANCE:
+ return _team;
+ default:
+ return 0;
+ }
+ }
+
+ void Update(uint32 diff) override
+ {
+ if (!executionTimer)
+ return;
+
+ if (executionTimer <= diff)
+ {
+ DoCastSpellOnPlayers(SPELL_REMOVE_KARGATH_EXECUTIONER);
+ switch (++executed)
+ {
+ case 1:
+ DoCastSpellOnPlayers(SPELL_KARGATH_EXECUTIONER_2);
+ executionTimer = 10 * MINUTE * IN_MILLISECONDS;
+ break;
+ case 2:
+ DoCastSpellOnPlayers(SPELL_KARGATH_EXECUTIONER_3);
+ executionTimer = 15 * MINUTE * IN_MILLISECONDS;
+ break;
+ default:
+ executionTimer = 0;
+ break;
+ }
+
+ if (Creature* executioner = instance->GetCreature(executionerGUID))
+ executioner->AI()->SetData(DATA_PRISONERS_EXECUTED, executed);
+
+ SaveToDB();
+ }
+ else
+ executionTimer -= diff;
+ }
+
+ private:
ObjectGuid nethekurseGUID;
- ObjectGuid nethekurseDoor1GUID;
- ObjectGuid nethekurseDoor2GUID;
+ ObjectGuid kargathGUID;
+ ObjectGuid executionerGUID;
+ ObjectGuid victimsGUID[3];
+
+ uint8 executed;
+ uint32 executionTimer;
+ uint32 _team;
};
};
+
void AddSC_instance_shattered_halls()
{
new instance_shattered_halls();
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp
new file mode 100644
index 00000000000..d31fa4c4f09
--- /dev/null
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
+#include "SpellScript.h"
+#include "SpellAuraEffects.h"
+#include "InstanceScript.h"
+#include "Player.h"
+#include "SpellAuras.h"
+#include "shattered_halls.h"
+
+class at_nethekurse_exit : public AreaTriggerScript
+{
+ public:
+ at_nethekurse_exit() : AreaTriggerScript("at_nethekurse_exit") { };
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const*, bool /*entered*/) override
+ {
+ if (InstanceScript* is = player->GetInstanceScript())
+ {
+ if (is->instance->IsHeroic())
+ {
+ Creature* executioner = nullptr;
+
+ is->instance->LoadGrid(Executioner.GetPositionX(), Executioner.GetPositionY());
+ if (Creature* kargath = ObjectAccessor::GetCreature(*player, is->GetGuidData(NPC_KARGATH_BLADEFIST)))
+ {
+ if (is->GetGuidData(NPC_SHATTERED_EXECUTIONER).IsEmpty())
+ {
+ executioner = kargath->SummonCreature(NPC_SHATTERED_EXECUTIONER, Executioner);
+ kargath->AI()->DoAction(ACTION_EXECUTIONER_TAUNT);
+ }
+ }
+
+ if (executioner)
+ for (uint8 i = 0; i < VictimCount; ++i)
+ executioner->SummonCreature(executionerVictims[i](is->GetData(DATA_TEAM_IN_INSTANCE)), executionerVictims[i].GetPos());
+ }
+ }
+
+ return false;
+ }
+};
+
+enum Spells
+{
+ SPELL_CLEAVE = 15284
+};
+
+class boss_shattered_executioner : public CreatureScript
+{
+ public:
+ boss_shattered_executioner() : CreatureScript("boss_shattered_executioner") { }
+
+ struct boss_shattered_executionerAI : public BossAI
+ {
+ boss_shattered_executionerAI(Creature* creature) : BossAI(creature, DATA_SHATTERED_EXECUTIONER)
+ {
+ Initialize();
+ };
+
+ void Initialize()
+ {
+ cleaveTimer = 500;
+ }
+
+ void Reset() override
+ {
+ _Reset();
+
+ // _Reset() resets the loot mode, so we add them again, if any
+ uint32 prisonersExecuted = instance->GetData(DATA_PRISONERS_EXECUTED);
+ if (prisonersExecuted == 0)
+ me->AddLootMode(LOOT_MODE_HARD_MODE_3);
+ if (prisonersExecuted <= 1)
+ me->AddLootMode(LOOT_MODE_HARD_MODE_2);
+ if (prisonersExecuted <= 2)
+ me->AddLootMode(LOOT_MODE_HARD_MODE_1);
+
+ if (instance->GetBossState(DATA_KARGATH) == DONE)
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
+ else
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
+
+ Initialize();
+ }
+
+ void JustSummoned(Creature*) override { } // avoid despawn of prisoners on death/reset
+
+ void JustDied(Unit*) override
+ {
+ _JustDied();
+
+ if (instance->GetData(DATA_PRISONERS_EXECUTED) > 0)
+ return;
+
+ Map::PlayerList const &players = instance->instance->GetPlayers();
+ for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
+ {
+ Player* pl = itr->GetSource();
+ uint32 qId = pl->GetTeam() == ALLIANCE ? QUEST_IMPRISONED_A : QUEST_IMPRISONED_H;
+ if (pl->GetQuestStatus(qId) == QUEST_STATUS_INCOMPLETE)
+ pl->CompleteQuest(qId);
+ }
+ }
+
+ void SetData(uint32 type, uint32 data) override
+ {
+ if (type == DATA_PRISONERS_EXECUTED && data <= 3)
+ {
+ if (Creature* victim = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FIRST_PRISONER + data - 1)))
+ me->Kill(victim);
+
+ if (data == 1)
+ {
+ Map::PlayerList const &players = instance->instance->GetPlayers();
+ for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
+ {
+ Player* pl = itr->GetSource();
+ uint32 qId = pl->GetTeam() == ALLIANCE ? QUEST_IMPRISONED_A : QUEST_IMPRISONED_H;
+ if (pl->GetQuestStatus(qId) == QUEST_STATUS_INCOMPLETE)
+ pl->FailQuest(qId);
+ }
+ }
+
+ switch (data)
+ {
+ case 3:
+ me->RemoveLootMode(LOOT_MODE_HARD_MODE_1);
+ case 2:
+ me->RemoveLootMode(LOOT_MODE_HARD_MODE_2);
+ case 1:
+ me->RemoveLootMode(LOOT_MODE_HARD_MODE_3);
+ default:
+ break;
+ }
+ }
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
+
+ if (cleaveTimer <= diff)
+ {
+ DoCast(SPELL_CLEAVE);
+ cleaveTimer = urand(5000, 7000);
+ }
+ else
+ cleaveTimer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+ private:
+ uint32 cleaveTimer;
+ };
+
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return GetInstanceAI<boss_shattered_executionerAI>(creature);
+ }
+};
+
+class spell_kargath_executioner : public SpellScriptLoader
+{
+ public:
+ spell_kargath_executioner() : SpellScriptLoader("spell_kargath_executioner") { }
+
+ class spell_kargath_executioner_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_kargath_executioner_AuraScript);
+
+ bool AreaCheck(Unit* target)
+ {
+ if (target->GetMap()->GetId() != 540)
+ return false;
+
+ return true;
+ }
+
+ bool Load() override
+ {
+ return GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ }
+
+ void Register() override
+ {
+ DoCheckAreaTarget += AuraCheckAreaTargetFn(spell_kargath_executioner_AuraScript::AreaCheck);
+ }
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_kargath_executioner_AuraScript();
+ }
+};
+
+class spell_remove_kargath_executioner : public SpellScriptLoader
+{
+ public:
+ spell_remove_kargath_executioner() : SpellScriptLoader("spell_remove_kargath_executioner") { }
+
+ class spell_remove_kargath_executioner_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_remove_kargath_executioner_SpellScript);
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* target = GetCaster();
+
+ target->RemoveAurasDueToSpell(SPELL_KARGATH_EXECUTIONER_1);
+ target->RemoveAurasDueToSpell(SPELL_KARGATH_EXECUTIONER_2);
+ target->RemoveAurasDueToSpell(SPELL_KARGATH_EXECUTIONER_3);
+ }
+
+ bool Load() override
+ {
+ return GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_remove_kargath_executioner_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_remove_kargath_executioner_SpellScript();
+ }
+};
+
+void AddSC_shattered_halls()
+{
+ new at_nethekurse_exit();
+ new boss_shattered_executioner();
+ new spell_kargath_executioner();
+ new spell_remove_kargath_executioner();
+}
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h
index 90cbbe2a438..894cc9c40a6 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h
@@ -21,18 +21,45 @@
#define DataHeader "SH"
-uint32 const EncounterCount = 3;
+uint32 const EncounterCount = 4;
+uint32 const VictimCount = 3;
enum DataTypes
{
- DATA_NETHEKURSE = 1,
- DATA_OMROGG = 2,
- DATA_KARGATH = 3
+ DATA_NETHEKURSE = 0,
+ DATA_OMROGG = 1,
+ DATA_KARGATH = 2,
+
+ DATA_SHATTERED_EXECUTIONER = 3,
+ DATA_PRISONERS_EXECUTED = 4,
+
+ DATA_TEAM_IN_INSTANCE = 5,
+
+ DATA_FIRST_PRISONER,
+ DATA_SECOND_PRISONER,
+ DATA_THIRD_PRISONER
};
enum CreatureIds
{
- NPC_GRAND_WARLOCK_NETHEKURSE = 16807
+ NPC_GRAND_WARLOCK_NETHEKURSE = 16807,
+ NPC_KARGATH_BLADEFIST = 16808,
+
+ NPC_SHATTERED_EXECUTIONER = 17301,
+
+ // Alliance Ids
+ NPC_RANDY_WHIZZLESPROCKET = 17288,
+
+ NPC_CAPTAIN_ALINA = 17290,
+ NPC_ALLIANCE_VICTIM_1 = 17289,
+ NPC_ALLIANCE_VICTIM_2 = 17292,
+
+ // Horde Ids
+ NPC_DRISELLA = 17294,
+
+ NPC_CAPTAIN_BONESHATTER = 17296,
+ NPC_HORDE_VICTIM_1 = 17295,
+ NPC_HORDE_VICTIM_2 = 17297
};
enum GameobjectIds
@@ -41,4 +68,47 @@ enum GameobjectIds
GO_GRAND_WARLOCK_CHAMBER_DOOR_2 = 182540
};
+enum QuestIds
+{
+ QUEST_IMPRISONED_A = 9524,
+ QUEST_IMPRISONED_H = 9525
+};
+
+enum InstanceSpells
+{
+ SPELL_KARGATH_EXECUTIONER_1 = 39288,
+ SPELL_KARGATH_EXECUTIONER_2 = 39289,
+ SPELL_KARGATH_EXECUTIONER_3 = 39290,
+
+ SPELL_REMOVE_KARGATH_EXECUTIONER = 39291
+};
+
+enum Actions
+{
+ ACTION_EXECUTIONER_TAUNT = 1
+};
+
+const Position Executioner = { 152.8524f, -83.63912f, 2.021005f, 0.06981317f };
+
+struct FactionSpawnerHelper
+{
+ FactionSpawnerHelper(uint32 allianceEntry, uint32 hordeEntry, const Position& pos) : _allianceNPC(allianceEntry), _hordeNPC(hordeEntry), _spawnPos(pos) { }
+
+ inline uint32 operator()(uint32 teamID) const { return teamID == ALLIANCE ? _allianceNPC : _hordeNPC; }
+ inline Position const& GetPos() const { return _spawnPos; }
+
+private:
+ const uint32 _allianceNPC;
+ const uint32 _hordeNPC;
+ const Position _spawnPos;
+};
+
+const FactionSpawnerHelper executionerVictims[VictimCount] =
+{
+ { NPC_CAPTAIN_ALINA, NPC_CAPTAIN_BONESHATTER, { 138.8807f, -84.22707f, 1.992269f, 0.06981317f } },
+ { NPC_ALLIANCE_VICTIM_1, NPC_HORDE_VICTIM_1, { 151.2411f, -91.02930f, 2.019741f, 1.57079600f } },
+ { NPC_ALLIANCE_VICTIM_2, NPC_HORDE_VICTIM_2, { 151.0459f, -77.51981f, 2.021008f, 4.74729500f } }
+};
+
+
#endif
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
index cc825afd3a0..48508aa4790 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
@@ -77,12 +77,11 @@ class boss_alar : public CreatureScript
public:
boss_alar() : CreatureScript("boss_alar") { }
- struct boss_alarAI : public ScriptedAI
+ struct boss_alarAI : public BossAI
{
- boss_alarAI(Creature* creature) : ScriptedAI(creature)
+ boss_alarAI(Creature* creature) : BossAI(creature, DATA_ALAR)
{
Initialize();
- instance = creature->GetInstanceScript();
DefaultMoveSpeedRate = creature->GetSpeedRate(MOVE_RUN);
DiveBomb_Timer = 0;
MeltArmor_Timer = 0;
@@ -105,8 +104,6 @@ class boss_alar : public CreatureScript
cur_wp = 4;
}
- InstanceScript* instance;
-
WaitEventType WaitEvent;
uint32 WaitTimer;
@@ -129,9 +126,8 @@ class boss_alar : public CreatureScript
void Reset() override
{
- instance->SetData(DATA_ALAREVENT, NOT_STARTED);
-
Initialize();
+ _Reset();
me->SetDisplayId(me->GetNativeDisplayId());
me->SetSpeed(MOVE_RUN, DefaultMoveSpeedRate);
@@ -145,18 +141,11 @@ class boss_alar : public CreatureScript
void EnterCombat(Unit* /*who*/) override
{
- instance->SetData(DATA_ALAREVENT, IN_PROGRESS);
-
+ _EnterCombat();
me->SetDisableGravity(true); // after enterevademode will be set walk movement
- DoZoneInCombat();
me->setActive(true);
}
- void JustDied(Unit* /*killer*/) override
- {
- instance->SetData(DATA_ALAREVENT, DONE);
- }
-
void JustSummoned(Creature* summon) override
{
if (summon->GetEntry() == CREATURE_EMBER_OF_ALAR)
@@ -508,7 +497,7 @@ class npc_ember_of_alar : public CreatureScript
DoCast(me, SPELL_EMBER_BLAST, true);
me->SetDisplayId(11686);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- if (instance->GetData(DATA_ALAREVENT) == 2)
+ if (instance->GetBossState(DATA_ALAR) == IN_PROGRESS)
{
if (Unit* Alar = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_ALAR)))
{
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp
index b3324980bd4..c8e3e57ac3b 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp
@@ -92,17 +92,13 @@ class boss_high_astromancer_solarian : public CreatureScript
{
public:
- boss_high_astromancer_solarian()
- : CreatureScript("boss_high_astromancer_solarian")
- {
- }
+ boss_high_astromancer_solarian() : CreatureScript("boss_high_astromancer_solarian") { }
- struct boss_high_astromancer_solarianAI : public ScriptedAI
+ struct boss_high_astromancer_solarianAI : public BossAI
{
- boss_high_astromancer_solarianAI(Creature* creature) : ScriptedAI(creature), Summons(me)
+ boss_high_astromancer_solarianAI(Creature* creature) : BossAI(creature, DATA_HIGH_ASTROMANCER_SOLARIAN)
{
Initialize();
- instance = creature->GetInstanceScript();
defaultarmor = creature->GetArmor();
defaultsize = creature->GetObjectScale();
@@ -126,9 +122,6 @@ class boss_high_astromancer_solarian : public CreatureScript
Phase = 1;
}
- InstanceScript* instance;
- SummonList Summons;
-
uint8 Phase;
uint32 ArcaneMissiles_Timer;
@@ -152,16 +145,13 @@ class boss_high_astromancer_solarian : public CreatureScript
void Reset() override
{
Initialize();
-
- instance->SetData(DATA_HIGHASTROMANCERSOLARIANEVENT, NOT_STARTED);
-
+ _Reset();
me->SetArmor(defaultarmor);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetVisible(true);
me->SetObjectScale(defaultsize);
me->SetDisplayId(MODEL_HUMAN);
- Summons.DespawnAll();
}
void KilledUnit(Unit* /*victim*/) override
@@ -174,15 +164,13 @@ class boss_high_astromancer_solarian : public CreatureScript
me->SetObjectScale(defaultsize);
me->SetDisplayId(MODEL_HUMAN);
Talk(SAY_DEATH);
- instance->SetData(DATA_HIGHASTROMANCERSOLARIANEVENT, DONE);
+ _JustDied();
}
void EnterCombat(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
- DoZoneInCombat();
-
- instance->SetData(DATA_HIGHASTROMANCERSOLARIANEVENT, IN_PROGRESS);
+ _EnterCombat();
}
void SummonMinion(uint32 entry, float x, float y, float z)
@@ -193,7 +181,7 @@ class boss_high_astromancer_solarian : public CreatureScript
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
Summoned->AI()->AttackStart(target);
- Summons.Summon(Summoned);
+ summons.Summon(Summoned);
}
}
@@ -431,10 +419,7 @@ class npc_solarium_priest : public CreatureScript
{
public:
- npc_solarium_priest()
- : CreatureScript("npc_solarium_priest")
- {
- }
+ npc_solarium_priest() : CreatureScript("npc_solarium_priest") { }
struct npc_solarium_priestAI : public ScriptedAI
{
@@ -462,9 +447,7 @@ class npc_solarium_priest : public CreatureScript
Initialize();
}
- void EnterCombat(Unit* /*who*/) override
- {
- }
+ void EnterCombat(Unit* /*who*/) override { }
void UpdateAI(uint32 diff) override
{
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
index 38ccf33a612..3eae867b86c 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
@@ -286,17 +286,13 @@ class boss_kaelthas : public CreatureScript
{
public:
- boss_kaelthas()
- : CreatureScript("boss_kaelthas")
- {
- }
- //Kael'thas AI
- struct boss_kaelthasAI : public ScriptedAI
+ boss_kaelthas() : CreatureScript("boss_kaelthas") { }
+
+ struct boss_kaelthasAI : public BossAI
{
- boss_kaelthasAI(Creature* creature) : ScriptedAI(creature), summons(me)
+ boss_kaelthasAI(Creature* creature) : BossAI(creature, DATA_KAELTHAS)
{
Initialize();
- instance = creature->GetInstanceScript();
PhaseSubphase = 0;
Phase_Timer = 0;
}
@@ -320,8 +316,6 @@ class boss_kaelthas : public CreatureScript
ChainPyros = false;
}
- InstanceScript* instance;
-
uint32 Fireball_Timer;
uint32 ArcaneDisruption_Timer;
uint32 Phoenix_Timer;
@@ -341,8 +335,6 @@ class boss_kaelthas : public CreatureScript
bool IsCastingFireball;
bool ChainPyros;
- SummonList summons;
-
ObjectGuid m_auiAdvisorGuid[MAX_ADVISORS];
void Reset() override
@@ -352,7 +344,7 @@ class boss_kaelthas : public CreatureScript
if (me->IsInCombat())
PrepareAdvisors();
- summons.DespawnAll();
+ _Reset();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -413,7 +405,6 @@ class boss_kaelthas : public CreatureScript
}
void MoveInLineOfSight(Unit* who) override
-
{
if (!me->HasUnitState(UNIT_STATE_STUNNED) && me->CanCreatureAttack(who))
{
@@ -444,6 +435,8 @@ class boss_kaelthas : public CreatureScript
{
if (!instance->GetData(DATA_KAELTHASEVENT) && !Phase)
StartEvent();
+
+ instance->SetBossState(DATA_KAELTHAS, IN_PROGRESS);
}
void KilledUnit(Unit* /*victim*/) override
@@ -463,11 +456,6 @@ class boss_kaelthas : public CreatureScript
}
}
- void SummonedCreatureDespawn(Creature* summon) override
- {
- summons.Despawn(summon);
- }
-
void JustDied(Unit* /*killer*/) override
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -475,8 +463,6 @@ class boss_kaelthas : public CreatureScript
Talk(SAY_DEATH);
- summons.DespawnAll();
-
instance->SetData(DATA_KAELTHASEVENT, 0);
for (uint8 i = 0; i < MAX_ADVISORS; ++i)
@@ -484,6 +470,7 @@ class boss_kaelthas : public CreatureScript
if (Unit* pAdvisor = ObjectAccessor::GetUnit(*me, m_auiAdvisorGuid[i]))
pAdvisor->Kill(pAdvisor);
}
+ _JustDied();
}
void UpdateAI(uint32 diff) override
@@ -1024,10 +1011,8 @@ class boss_thaladred_the_darkener : public CreatureScript
{
public:
- boss_thaladred_the_darkener()
- : CreatureScript("boss_thaladred_the_darkener")
- {
- }
+ boss_thaladred_the_darkener() : CreatureScript("boss_thaladred_the_darkener") { }
+
struct boss_thaladred_the_darkenerAI : public advisorbase_ai
{
boss_thaladred_the_darkenerAI(Creature* creature) : advisorbase_ai(creature)
@@ -1130,10 +1115,8 @@ class boss_lord_sanguinar : public CreatureScript
{
public:
- boss_lord_sanguinar()
- : CreatureScript("boss_lord_sanguinar")
- {
- }
+ boss_lord_sanguinar() : CreatureScript("boss_lord_sanguinar") { }
+
struct boss_lord_sanguinarAI : public advisorbase_ai
{
boss_lord_sanguinarAI(Creature* creature) : advisorbase_ai(creature)
@@ -1205,10 +1188,8 @@ class boss_grand_astromancer_capernian : public CreatureScript
{
public:
- boss_grand_astromancer_capernian()
- : CreatureScript("boss_grand_astromancer_capernian")
- {
- }
+ boss_grand_astromancer_capernian() : CreatureScript("boss_grand_astromancer_capernian") { }
+
struct boss_grand_astromancer_capernianAI : public advisorbase_ai
{
boss_grand_astromancer_capernianAI(Creature* creature) : advisorbase_ai(creature)
@@ -1358,10 +1339,8 @@ class boss_master_engineer_telonicus : public CreatureScript
{
public:
- boss_master_engineer_telonicus()
- : CreatureScript("boss_master_engineer_telonicus")
- {
- }
+ boss_master_engineer_telonicus() : CreatureScript("boss_master_engineer_telonicus") { }
+
struct boss_master_engineer_telonicusAI : public advisorbase_ai
{
boss_master_engineer_telonicusAI(Creature* creature) : advisorbase_ai(creature)
@@ -1449,10 +1428,8 @@ class npc_kael_flamestrike : public CreatureScript
{
public:
- npc_kael_flamestrike()
- : CreatureScript("npc_kael_flamestrike")
- {
- }
+ npc_kael_flamestrike() : CreatureScript("npc_kael_flamestrike") { }
+
struct npc_kael_flamestrikeAI : public ScriptedAI
{
npc_kael_flamestrikeAI(Creature* creature) : ScriptedAI(creature)
@@ -1482,7 +1459,6 @@ class npc_kael_flamestrike : public CreatureScript
void MoveInLineOfSight(Unit* /*who*/) override { }
-
void EnterCombat(Unit* /*who*/) override { }
void UpdateAI(uint32 diff) override
@@ -1523,10 +1499,8 @@ class npc_phoenix_tk : public CreatureScript
{
public:
- npc_phoenix_tk()
- : CreatureScript("npc_phoenix_tk")
- {
- }
+ npc_phoenix_tk() : CreatureScript("npc_phoenix_tk") { }
+
struct npc_phoenix_tkAI : public ScriptedAI
{
npc_phoenix_tkAI(Creature* creature) : ScriptedAI(creature)
@@ -1585,10 +1559,8 @@ class npc_phoenix_egg_tk : public CreatureScript
{
public:
- npc_phoenix_egg_tk()
- : CreatureScript("npc_phoenix_egg_tk")
- {
- }
+ npc_phoenix_egg_tk() : CreatureScript("npc_phoenix_egg_tk") { }
+
struct npc_phoenix_egg_tkAI : public ScriptedAI
{
npc_phoenix_egg_tkAI(Creature* creature) : ScriptedAI(creature)
@@ -1611,7 +1583,6 @@ class npc_phoenix_egg_tk : public CreatureScript
//ignore any
void MoveInLineOfSight(Unit* /*who*/) override { }
-
void AttackStart(Unit* who) override
{
if (me->Attack(who, false))
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp
index 9186b491fa4..29504166846 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -16,13 +15,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Boss_Void_Reaver
-SD%Complete: 90
-SDComment: Should reset if raid are out of room.
-SDCategory: Tempest Keep, The Eye
-EndScriptData */
-
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "the_eye.h"
@@ -43,48 +35,35 @@ enum Spells
SPELL_BERSERK = 27680
};
+enum Events
+{
+ EVENT_POUNDING = 1,
+ EVENT_ARCANE_ORB,
+ EVENT_KNOCK_AWAY,
+ EVENT_BERSERK
+};
+
class boss_void_reaver : public CreatureScript
{
public:
+ boss_void_reaver() : CreatureScript("boss_void_reaver") { }
- boss_void_reaver()
- : CreatureScript("boss_void_reaver")
- {
- }
-
- struct boss_void_reaverAI : public ScriptedAI
+ struct boss_void_reaverAI : public BossAI
{
- boss_void_reaverAI(Creature* creature) : ScriptedAI(creature)
+ boss_void_reaverAI(Creature* creature) : BossAI(creature, DATA_VOID_REAVER)
{
Initialize();
- instance = creature->GetInstanceScript();
}
void Initialize()
{
- Pounding_Timer = 15000;
- ArcaneOrb_Timer = 3000;
- KnockAway_Timer = 30000;
- Berserk_Timer = 600000;
-
Enraged = false;
}
- InstanceScript* instance;
-
- uint32 Pounding_Timer;
- uint32 ArcaneOrb_Timer;
- uint32 KnockAway_Timer;
- uint32 Berserk_Timer;
-
- bool Enraged;
-
void Reset() override
{
Initialize();
-
- if (me->IsAlive())
- instance->SetData(DATA_VOIDREAVEREVENT, NOT_STARTED);
+ _Reset();
}
void KilledUnit(Unit* /*victim*/) override
@@ -96,82 +75,91 @@ class boss_void_reaver : public CreatureScript
{
Talk(SAY_DEATH);
DoZoneInCombat();
-
- instance->SetData(DATA_VOIDREAVEREVENT, DONE);
+ _JustDied();
}
void EnterCombat(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
+ _EnterCombat();
- instance->SetData(DATA_VOIDREAVEREVENT, IN_PROGRESS);
+ events.ScheduleEvent(EVENT_POUNDING, 15000);
+ events.ScheduleEvent(EVENT_ARCANE_ORB, 3000);
+ events.ScheduleEvent(EVENT_KNOCK_AWAY, 30000);
+ events.ScheduleEvent(EVENT_BERSERK, 600000);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
- // Pounding
- if (Pounding_Timer <= diff)
- {
- DoCastVictim(SPELL_POUNDING);
- Talk(SAY_POUNDING);
- Pounding_Timer = 15000; //cast time(3000) + cooldown time(12000)
- }
- else
- Pounding_Timer -= diff;
- // Arcane Orb
- if (ArcaneOrb_Timer <= diff)
- {
- Unit* target = NULL;
- std::list<HostileReference*> t_list = me->getThreatManager().getThreatList();
- std::vector<Unit*> target_list;
- for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
- {
- target = ObjectAccessor::GetUnit(*me, (*itr)->getUnitGuid());
- if (!target)
- continue;
- // exclude pets & totems, 18 yard radius minimum
- if (target->GetTypeId() == TYPEID_PLAYER && target->IsAlive() && !target->IsWithinDist(me, 18, false))
- target_list.push_back(target);
- target = NULL;
- }
- if (!target_list.empty())
- target = *(target_list.begin() + rand32() % target_list.size());
- else
- target = me->GetVictim();
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- if (target)
- me->CastSpell(target, SPELL_ARCANE_ORB, false, NULL, NULL);
- ArcaneOrb_Timer = 3000;
- }
- else
- ArcaneOrb_Timer -= diff;
- // Single Target knock back, reduces aggro
- if (KnockAway_Timer <= diff)
+ while (uint32 eventId = events.ExecuteEvent())
{
- DoCastVictim(SPELL_KNOCK_AWAY);
- //Drop 25% aggro
- if (DoGetThreat(me->GetVictim()))
- DoModifyThreatPercent(me->GetVictim(), -25);
- KnockAway_Timer = 30000;
- }
- else
- KnockAway_Timer -= diff;
- //Berserk
- if (Berserk_Timer < diff && !Enraged)
- {
- DoCast(me, SPELL_BERSERK);
- Enraged = true;
+ switch (eventId)
+ {
+ case EVENT_POUNDING:
+ DoCastVictim(SPELL_POUNDING);
+ Talk(SAY_POUNDING);
+ events.ScheduleEvent(EVENT_POUNDING, 15000);
+ break;
+ case EVENT_ARCANE_ORB:
+ {
+ Unit* target = NULL;
+ std::list<HostileReference*> t_list = me->getThreatManager().getThreatList();
+ std::vector<Unit*> target_list;
+ for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr != t_list.end(); ++itr)
+ {
+ target = ObjectAccessor::GetUnit(*me, (*itr)->getUnitGuid());
+ if (!target)
+ continue;
+ // exclude pets & totems, 18 yard radius minimum
+ if (target->GetTypeId() == TYPEID_PLAYER && target->IsAlive() && !target->IsWithinDist(me, 18, false))
+ target_list.push_back(target);
+ target = NULL;
+ }
+
+ if (!target_list.empty())
+ target = *(target_list.begin() + rand32() % target_list.size());
+ else
+ target = me->GetVictim();
+
+ if (target)
+ me->CastSpell(target, SPELL_ARCANE_ORB, false, NULL, NULL);
+
+ events.ScheduleEvent(EVENT_ARCANE_ORB, 3000);
+ break;
+ }
+ case EVENT_KNOCK_AWAY:
+ DoCastVictim(SPELL_KNOCK_AWAY);
+ // Drop 25% aggro
+ if (DoGetThreat(me->GetVictim()))
+ DoModifyThreatPercent(me->GetVictim(), -25);
+
+ events.ScheduleEvent(EVENT_KNOCK_AWAY, 30000);
+ break;
+ case EVENT_BERSERK:
+ if (!Enraged)
+ {
+ DoCast(me, SPELL_BERSERK);
+ Enraged = true;
+ }
+ break;
+ default:
+ break;
+ }
}
- else
- Berserk_Timer -= diff;
DoMeleeAttackIfReady();
EnterEvadeIfOutOfCombatArea(diff);
}
+
+ private:
+ bool Enraged;
};
CreatureAI* GetAI(Creature* creature) const override
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp b/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp
index 38c9cdd487c..c421b9974ce 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp
@@ -27,8 +27,6 @@ EndScriptData */
#include "InstanceScript.h"
#include "the_eye.h"
-#define MAX_ENCOUNTER 5
-
/* The Eye encounters:
0 - Kael'thas event
1 - Al' ar event
@@ -39,20 +37,16 @@ EndScriptData */
class instance_the_eye : public InstanceMapScript
{
public:
- instance_the_eye()
- : InstanceMapScript("instance_the_eye", 550)
- {
- }
+ instance_the_eye() : InstanceMapScript("instance_the_eye", 550) { }
struct instance_the_eye_InstanceMapScript : public InstanceScript
{
instance_the_eye_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+ SetBossNumber(EncounterCount);
KaelthasEventPhase = 0;
- AlarEventPhase = 0;
}
ObjectGuid ThaladredTheDarkener;
@@ -63,44 +57,34 @@ class instance_the_eye : public InstanceMapScript
ObjectGuid Astromancer;
ObjectGuid Alar;
uint8 KaelthasEventPhase;
- uint8 AlarEventPhase;
-
- uint32 m_auiEncounter[MAX_ENCOUNTER];
-
- bool IsEncounterInProgress() const override
- {
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- if (m_auiEncounter[i] == IN_PROGRESS)
- return true;
-
- return false;
- }
void OnCreatureCreate(Creature* creature) override
{
switch (creature->GetEntry())
{
- case 20064:
- ThaladredTheDarkener = creature->GetGUID();
- break;
- case 20063:
- MasterEngineerTelonicus = creature->GetGUID();
- break;
- case 20062:
- GrandAstromancerCapernian = creature->GetGUID();
- break;
- case 20060:
- LordSanguinar = creature->GetGUID();
- break;
- case 19622:
- Kaelthas = creature->GetGUID();
- break;
- case 18805:
- Astromancer = creature->GetGUID();
- break;
- case 19514:
- Alar = creature->GetGUID();
- break;
+ case NPC_SANGUINAR:
+ LordSanguinar = creature->GetGUID();
+ break;
+ case NPC_CAPERNIAN:
+ GrandAstromancerCapernian = creature->GetGUID();
+ break;
+ case NPC_TELONICUS:
+ MasterEngineerTelonicus = creature->GetGUID();
+ break;
+ case NPC_THALADRED:
+ ThaladredTheDarkener = creature->GetGUID();
+ break;
+ case NPC_KAELTHAS:
+ Kaelthas = creature->GetGUID();
+ break;
+ case NPC_HIGH_ASTROMANCER_SOLARIAN:
+ Astromancer = creature->GetGUID();
+ break;
+ case NPC_ALAR:
+ Alar = creature->GetGUID();
+ break;
+ default:
+ break;
}
}
@@ -113,7 +97,7 @@ class instance_the_eye : public InstanceMapScript
case DATA_GRANDASTROMANCERCAPERNIAN: return GrandAstromancerCapernian;
case DATA_MASTERENGINEERTELONICUS: return MasterEngineerTelonicus;
case DATA_KAELTHAS: return Kaelthas;
- case DATA_ASTROMANCER: return Astromancer;
+ case DATA_HIGH_ASTROMANCER_SOLARIAN: return Astromancer;
case DATA_ALAR: return Alar;
}
return ObjectGuid::Empty;
@@ -123,64 +107,23 @@ class instance_the_eye : public InstanceMapScript
{
switch (type)
{
- case DATA_ALAREVENT:
- AlarEventPhase = data;
- m_auiEncounter[0] = data;
- break;
- case DATA_HIGHASTROMANCERSOLARIANEVENT:
- m_auiEncounter[1] = data;
- break;
- case DATA_VOIDREAVEREVENT:
- m_auiEncounter[2] = data;
- break;
- case DATA_KAELTHASEVENT:
- KaelthasEventPhase = data;
- m_auiEncounter[3] = data;
- break;
+ case DATA_KAELTHASEVENT:
+ KaelthasEventPhase = data;
+ break;
+ default:
+ break;
}
- if (data == DONE)
- SaveToDB();
}
uint32 GetData(uint32 type) const override
{
switch (type)
{
- case DATA_ALAREVENT: return AlarEventPhase;
- case DATA_HIGHASTROMANCERSOLARIANEVENT: return m_auiEncounter[1];
- case DATA_VOIDREAVEREVENT: return m_auiEncounter[2];
- case DATA_KAELTHASEVENT: return KaelthasEventPhase;
+ case DATA_KAELTHASEVENT:
+ return KaelthasEventPhase;
}
return 0;
}
-
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream stream;
- stream << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << m_auiEncounter[3];
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return stream.str();
- }
-
- void Load(const char* in) override
- {
- if (!in)
- {
- OUT_LOAD_INST_DATA_FAIL;
- return;
- }
- OUT_LOAD_INST_DATA(in);
-
- std::istringstream stream(in);
- stream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3];
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- if (m_auiEncounter[i] == IN_PROGRESS) // Do not load an encounter as "In Progress" - reset it instead.
- m_auiEncounter[i] = NOT_STARTED;
- OUT_LOAD_INST_DATA_COMPLETE;
- }
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/the_eye.h b/src/server/scripts/Outland/TempestKeep/Eye/the_eye.h
index 718f37861d9..c46fe408274 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/the_eye.h
+++ b/src/server/scripts/Outland/TempestKeep/Eye/the_eye.h
@@ -21,19 +21,33 @@
#define DataHeader "TE"
+uint32 const EncounterCount = 4;
+
enum DataTypes
{
- DATA_ALAREVENT = 1,
- DATA_ASTROMANCER = 2,
- DATA_GRANDASTROMANCERCAPERNIAN = 3,
- DATA_HIGHASTROMANCERSOLARIANEVENT = 4,
- DATA_KAELTHAS = 5,
+ // Encounter States/Boss GUIDs
+ DATA_KAELTHAS = 0,
+ DATA_ALAR = 1,
+ DATA_HIGH_ASTROMANCER_SOLARIAN = 2,
+ DATA_VOID_REAVER = 3,
+
+ DATA_ASTROMANCER = 4,
+ DATA_GRANDASTROMANCERCAPERNIAN = 5,
DATA_KAELTHASEVENT = 6,
DATA_LORDSANGUINAR = 7,
DATA_MASTERENGINEERTELONICUS = 8,
- DATA_THALADREDTHEDARKENER = 10,
- DATA_VOIDREAVEREVENT = 11,
- DATA_ALAR = 12
+ DATA_THALADREDTHEDARKENER = 9
+};
+
+enum CreatureIds
+{
+ NPC_SANGUINAR = 20060,
+ NPC_CAPERNIAN = 20062,
+ NPC_TELONICUS = 20063,
+ NPC_THALADRED = 20064,
+ NPC_KAELTHAS = 19622,
+ NPC_HIGH_ASTROMANCER_SOLARIAN = 18805,
+ NPC_ALAR = 19514
};
#endif
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp
index f3c8396832c..87bd5923c8f 100644
--- a/src/server/scripts/Spells/spell_quest.cpp
+++ b/src/server/scripts/Spells/spell_quest.cpp
@@ -338,7 +338,7 @@ class spell_q11396_11399_scourging_crystal_controller : public SpellScriptLoader
SpellScript* GetSpellScript() const override
{
return new spell_q11396_11399_scourging_crystal_controller_SpellScript();
- };
+ }
};
// 43882 Scourging Crystal Controller Dummy
@@ -374,7 +374,7 @@ class spell_q11396_11399_scourging_crystal_controller_dummy : public SpellScript
SpellScript* GetSpellScript() const override
{
return new spell_q11396_11399_scourging_crystal_controller_dummy_SpellScript();
- };
+ }
};
// http://www.wowhead.com/quest=11515 Blood for Blood
@@ -855,7 +855,7 @@ class spell_symbol_of_life_dummy : public SpellScriptLoader
SpellScript* GetSpellScript() const override
{
return new spell_symbol_of_life_dummy_SpellScript();
- };
+ }
};
// http://www.wowhead.com/quest=12659 Scalps!
@@ -898,7 +898,7 @@ class spell_q12659_ahunaes_knife : public SpellScriptLoader
SpellScript* GetSpellScript() const override
{
return new spell_q12659_ahunaes_knife_SpellScript();
- };
+ }
};
enum StoppingTheSpread
@@ -944,7 +944,7 @@ class spell_q9874_liquid_fire : public SpellScriptLoader
SpellScript* GetSpellScript() const override
{
return new spell_q9874_liquid_fire_SpellScript();
- };
+ }
};
enum SalvagingLifesStength
@@ -988,7 +988,7 @@ class spell_q12805_lifeblood_dummy : public SpellScriptLoader
SpellScript* GetSpellScript() const override
{
return new spell_q12805_lifeblood_dummy_SpellScript();
- };
+ }
};
/*
diff --git a/src/server/shared/Common.h b/src/server/shared/Common.h
index dc9e948966d..e83340bdd84 100644
--- a/src/server/shared/Common.h
+++ b/src/server/shared/Common.h
@@ -38,6 +38,7 @@
#include <queue>
#include <sstream>
#include <algorithm>
+#include <memory>
#include <boost/optional.hpp>
#include <boost/utility/in_place_factory.hpp>
@@ -164,4 +165,14 @@ struct LocalizedString
template <typename T>
using Optional = boost::optional<T>;
+namespace Trinity
+{
+ //! std::make_unique implementation (TODO: remove this once C++14 is supported)
+ template<typename T, typename ...Args>
+ std::unique_ptr<T> make_unique(Args&& ...args)
+ {
+ return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+ }
+}
+
#endif
diff --git a/src/server/shared/Cryptography/SHA1.h b/src/server/shared/Cryptography/SHA1.h
index ebd9f721d4a..f59bdc25556 100644
--- a/src/server/shared/Cryptography/SHA1.h
+++ b/src/server/shared/Cryptography/SHA1.h
@@ -39,8 +39,8 @@ class SHA1Hash
void Initialize();
void Finalize();
- uint8 *GetDigest(void) { return mDigest; };
- int GetLength(void) const { return SHA_DIGEST_LENGTH; };
+ uint8 *GetDigest(void) { return mDigest; }
+ int GetLength(void) const { return SHA_DIGEST_LENGTH; }
private:
SHA_CTX mC;
diff --git a/src/server/shared/Cryptography/SHA256.h b/src/server/shared/Cryptography/SHA256.h
index 659236f9495..1d85545b2e0 100644
--- a/src/server/shared/Cryptography/SHA256.h
+++ b/src/server/shared/Cryptography/SHA256.h
@@ -38,8 +38,8 @@ class SHA256Hash
void Initialize();
void Finalize();
- uint8 *GetDigest(void) { return mDigest; };
- int GetLength(void) const { return SHA256_DIGEST_LENGTH; };
+ uint8 *GetDigest(void) { return mDigest; }
+ int GetLength(void) const { return SHA256_DIGEST_LENGTH; }
private:
SHA256_CTX mC;
diff --git a/src/server/shared/DataStores/DB2Store.h b/src/server/shared/DataStores/DB2Store.h
index 4ce77c1cd28..c541a6651a3 100644
--- a/src/server/shared/DataStores/DB2Store.h
+++ b/src/server/shared/DataStores/DB2Store.h
@@ -112,6 +112,8 @@ public:
void EraseRecord(uint32 id) override { if (id < _indexTableSize) _indexTable.AsT[id] = nullptr; }
T const* LookupEntry(uint32 id) const { return (id >= _indexTableSize) ? nullptr : _indexTable.AsT[id]; }
+ T const* AssertEntry(uint32 id) const { return ASSERT_NOTNULL(LookupEntry(id)); }
+
std::string const& GetFileName() const { return _fileName; }
uint32 GetNumRows() const { return _indexTableSize; }
char const* GetFormat() const { return _format; }
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index 6c18a0e76ee..277ccd4569a 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -681,4 +681,21 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_UPD_QUEST_TRACK_GM_COMPLETE, "UPDATE quest_tracker SET completed_by_gm = 1 WHERE id = ? AND character_guid = ? ORDER BY quest_accept_time DESC LIMIT 1", CONNECTION_ASYNC);
PrepareStatement(CHAR_UPD_QUEST_TRACK_COMPLETE_TIME, "UPDATE quest_tracker SET quest_complete_time = NOW() WHERE id = ? AND character_guid = ? ORDER BY quest_accept_time DESC LIMIT 1", CONNECTION_ASYNC);
PrepareStatement(CHAR_UPD_QUEST_TRACK_ABANDON_TIME, "UPDATE quest_tracker SET quest_abandon_time = NOW() WHERE id = ? AND character_guid = ? ORDER BY quest_accept_time DESC LIMIT 1", CONNECTION_ASYNC);
+
+ // Garrison
+ PrepareStatement(CHAR_SEL_CHARACTER_GARRISON, "SELECT siteLevelId, followerActivationsRemainingToday FROM character_garrison WHERE guid = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_INS_CHARACTER_GARRISON, "INSERT INTO character_garrison (guid, siteLevelId, followerActivationsRemainingToday) VALUES (?, ?, ?)", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_DEL_CHARACTER_GARRISON, "DELETE FROM character_garrison WHERE guid = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_UPD_CHARACTER_GARRISON_FOLLOWER_ACTIVATIONS, "UPDATE character_garrison SET followerActivationsRemainingToday = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_SEL_CHARACTER_GARRISON_BLUEPRINTS, "SELECT buildingId FROM character_garrison_blueprints WHERE guid = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_INS_CHARACTER_GARRISON_BLUEPRINTS, "INSERT INTO character_garrison_blueprints (guid, buildingId) VALUES (?, ?)", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_DEL_CHARACTER_GARRISON_BLUEPRINTS, "DELETE FROM character_garrison_blueprints WHERE guid = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_SEL_CHARACTER_GARRISON_BUILDINGS, "SELECT plotInstanceId, buildingId, timeBuilt, active FROM character_garrison_buildings WHERE guid = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_INS_CHARACTER_GARRISON_BUILDINGS, "INSERT INTO character_garrison_buildings (guid, plotInstanceId, buildingId, timeBuilt, active) VALUES (?, ?, ?, ?, ?)", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_DEL_CHARACTER_GARRISON_BUILDINGS, "DELETE FROM character_garrison_buildings WHERE guid = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_SEL_CHARACTER_GARRISON_FOLLOWERS, "SELECT dbId, followerId, quality, level, itemLevelWeapon, itemLevelArmor, xp, currentBuilding, currentMission, status FROM character_garrison_followers WHERE guid = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_INS_CHARACTER_GARRISON_FOLLOWERS, "INSERT INTO character_garrison_followers (dbId, guid, followerId, quality, level, itemLevelWeapon, itemLevelArmor, xp, currentBuilding, currentMission, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_DEL_CHARACTER_GARRISON_FOLLOWERS, "DELETE gfab, gf FROM character_garrison_follower_abilities gfab INNER JOIN character_garrison_followers gf ON gfab.dbId = gf.dbId WHERE gf.guid = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_SEL_CHARACTER_GARRISON_FOLLOWER_ABILITIES, "SELECT gfab.dbId, gfab.abilityId FROM character_garrison_follower_abilities gfab INNER JOIN character_garrison_followers gf ON gfab.dbId = gf.dbId WHERE guid = ? ORDER BY gfab.slot", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_INS_CHARACTER_GARRISON_FOLLOWER_ABILITIES, "INSERT INTO character_garrison_follower_abilities (dbId, abilityId, slot) VALUES (?, ?, ?)", CONNECTION_ASYNC);
}
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
index ed3b6dd8098..fc9c930e6b1 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -598,6 +598,22 @@ enum CharacterDatabaseStatements
CHAR_UPD_QUEST_TRACK_COMPLETE_TIME,
CHAR_UPD_QUEST_TRACK_ABANDON_TIME,
+ CHAR_SEL_CHARACTER_GARRISON,
+ CHAR_INS_CHARACTER_GARRISON,
+ CHAR_DEL_CHARACTER_GARRISON,
+ CHAR_UPD_CHARACTER_GARRISON_FOLLOWER_ACTIVATIONS,
+ CHAR_SEL_CHARACTER_GARRISON_BLUEPRINTS,
+ CHAR_INS_CHARACTER_GARRISON_BLUEPRINTS,
+ CHAR_DEL_CHARACTER_GARRISON_BLUEPRINTS,
+ CHAR_SEL_CHARACTER_GARRISON_BUILDINGS,
+ CHAR_INS_CHARACTER_GARRISON_BUILDINGS,
+ CHAR_DEL_CHARACTER_GARRISON_BUILDINGS,
+ CHAR_SEL_CHARACTER_GARRISON_FOLLOWERS,
+ CHAR_INS_CHARACTER_GARRISON_FOLLOWERS,
+ CHAR_DEL_CHARACTER_GARRISON_FOLLOWERS,
+ CHAR_SEL_CHARACTER_GARRISON_FOLLOWER_ABILITIES,
+ CHAR_INS_CHARACTER_GARRISON_FOLLOWER_ABILITIES,
+
MAX_CHARACTERDATABASE_STATEMENTS
};
diff --git a/src/server/shared/Database/Implementation/HotfixDatabase.cpp b/src/server/shared/Database/Implementation/HotfixDatabase.cpp
index e13863d9326..a7043b1d5ff 100644
--- a/src/server/shared/Database/Implementation/HotfixDatabase.cpp
+++ b/src/server/shared/Database/Implementation/HotfixDatabase.cpp
@@ -39,12 +39,70 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_LOCALE_STMT(HOTFIX_SEL_BROADCAST_TEXT, "SELECT ID, MaleText_lang, FemaleText_lang FROM broadcast_text_locale WHERE locale = ?", CONNECTION_SYNCH);
// CurrencyTypes.db2
- PrepareStatement(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, CategoryID, Name, InventoryIcon1, InventoryIcon2, SpellWeight, SpellCategory, MaxQty, MaxEarnablePerWeek, Flags, Quality, Description FROM currency_types ORDER BY ID DESC", CONNECTION_SYNCH);
- PREPARE_LOCALE_STMT(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name_lang, InventoryIcon1_lang, InventoryIcon2_lang, Description_lang FROM currency_types_locale WHERE locale = ?", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, CategoryID, Name, InventoryIcon1, InventoryIcon2, SpellWeight, SpellCategory, "
+ "MaxQty, MaxEarnablePerWeek, Flags, Quality, Description FROM currency_types ORDER BY ID DESC", CONNECTION_SYNCH);
+ PREPARE_LOCALE_STMT(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name_lang, InventoryIcon1_lang, InventoryIcon2_lang, "
+ "Description_lang FROM currency_types_locale WHERE locale = ?", CONNECTION_SYNCH);
// CurvePoint.db2
PrepareStatement(HOTFIX_SEL_CURVE_POINT, "SELECT ID, CurveID, `Index`, X, Y FROM curve_point ORDER BY ID DESC", CONNECTION_SYNCH);
+ // GameObjects.db2
+ PrepareStatement(HOTFIX_SEL_GAMEOBJECTS, "SELECT ID, MapID, DisplayID, PositionX, PositionY, PositionZ, RotationX, RotationY, RotationZ, RotationW, Size, "
+ "PhaseUseFlags, PhaseID, PhaseGroupID, Type, Data0, Data1, Data2, Data3, Data4, Data5, Data6, Data7, Name FROM gameobjects ORDER BY ID DESC", CONNECTION_SYNCH);
+ PREPARE_LOCALE_STMT(HOTFIX_SEL_GAMEOBJECTS, "SELECT ID, Name_lang FROM gameobjects_locale WHERE locale = ?", CONNECTION_SYNCH);
+
+ // GarrAbility.db2
+ PrepareStatement(HOTFIX_SEL_GARR_ABILITY, "SELECT ID, Flags, Name, Description, IconFileDataID, OtherFactionGarrAbilityID, "
+ "GarrAbilityCategoryID FROM garr_ability ORDER BY ID DESC", CONNECTION_SYNCH);
+ PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_ABILITY, "SELECT ID, Name_lang, Description_lang FROM garr_ability_locale WHERE locale = ?", CONNECTION_SYNCH);
+
+ // GarrBuilding.db2
+ PrepareStatement(HOTFIX_SEL_GARR_BUILDING, "SELECT ID, HordeGameObjectID, AllianceGameObjectID, Unknown, Type, Level, NameAlliance, NameHorde, Description, "
+ "Tooltip, BuildDuration, CostCurrencyID, CostCurrencyAmount, HordeTexPrefixKitID, AllianceTexPrefixKitID, IconFileDataID, BonusAmount, Flags, "
+ "AllianceActivationScenePackageID, HordeActivationScenePackageID, MaxShipments, FollowerRequiredGarrAbilityID, FollowerGarrAbilityEffectID, CostMoney "
+ "FROM garr_building ORDER BY ID DESC", CONNECTION_SYNCH);
+ PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_BUILDING, "SELECT ID, NameAlliance_lang, NameHorde_lang, Description_lang, Tooltip_lang "
+ "FROM garr_building_locale WHERE locale = ?", CONNECTION_SYNCH);
+
+ // GarrBuildingPlotInst.db2
+ PrepareStatement(HOTFIX_SEL_GARR_BUILDING_PLOT_INST, "SELECT ID, GarrBuildingID, UiTextureAtlasMemberID, GarrSiteLevelPlotInstID, "
+ "LandmarkOffsetX, LandmarkOffsetY FROM garr_building_plot_inst ORDER BY ID DESC", CONNECTION_SYNCH);
+
+ // GarrClassSpec.db2
+ PrepareStatement(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT ID, NameMale, NameFemale, NameGenderless, ClassAtlasID, GarrFollItemSetID "
+ "FROM garr_class_spec ORDER BY ID DESC", CONNECTION_SYNCH);
+ PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT ID, NameMale_lang, NameFemale_lang, NameGenderless_lang FROM garr_class_spec_locale WHERE locale = ?", CONNECTION_SYNCH);
+
+ // GarrFollower.db2
+ PrepareStatement(HOTFIX_SEL_GARR_FOLLOWER, "SELECT ID, HordeCreatureID, AllianceCreatureID, HordeUiAnimRaceInfoID, AllianceUiAnimRaceInfoID, Quality, "
+ "HordeGarrClassSpecID, AllianceGarrClassSpecID, HordeGarrFollItemSetID, AllianceGarrFollItemSetID, Level, ItemLevelWeapon, ItemLevelArmor, Unknown1, Flags, "
+ "HordeSourceText, AllianceSourceText, Unknown2, Unknown3, HordePortraitIconID, AlliancePortraitIconID FROM garr_follower ORDER BY ID DESC", CONNECTION_SYNCH);
+ PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_FOLLOWER, "SELECT ID, HordeSourceText_lang, AllianceSourceText_lang FROM garr_follower_locale WHERE locale = ?", CONNECTION_SYNCH);
+
+ // GarrFollowerXAbility.db2
+ PrepareStatement(HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY, "SELECT ID, GarrFollowerID, GarrAbilityID, FactionIndex FROM garr_follower_x_ability ORDER BY ID DESC", CONNECTION_SYNCH);
+
+ // GarrPlot.db2
+ PrepareStatement(HOTFIX_SEL_GARR_PLOT, "SELECT ID, GarrPlotUICategoryID, PlotType, Flags, Name, MinCount, MaxCount, "
+ "AllianceConstructionGameObjectID, HordeConstructionGameObjectID FROM garr_plot ORDER BY ID DESC", CONNECTION_SYNCH);
+ PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_PLOT, "SELECT ID, Name_lang FROM garr_plot_locale WHERE locale = ?", CONNECTION_SYNCH);
+
+ // GarrPlotBuilding.db2
+ PrepareStatement(HOTFIX_SEL_GARR_PLOT_BUILDING, "SELECT ID, GarrPlotID, GarrBuildingID FROM garr_plot_building ORDER BY ID DESC", CONNECTION_SYNCH);
+
+ // GarrPlotInstance.db2
+ PrepareStatement(HOTFIX_SEL_GARR_PLOT_INSTANCE, "SELECT ID, GarrPlotID, Name FROM garr_plot_instance ORDER BY ID DESC", CONNECTION_SYNCH);
+ PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_PLOT_INSTANCE, "SELECT ID, Name_lang FROM garr_plot_instance_locale WHERE locale = ?", CONNECTION_SYNCH);
+
+ // GarrSiteLevel.db2
+ PrepareStatement(HOTFIX_SEL_GARR_SITE_LEVEL, "SELECT ID, Level, MapID, SiteID, UITextureKitID, TownHallX, TownHallY, MovieID, Level2, "
+ "UpgradeResourceCost, UpgradeMoneyCost FROM garr_site_level ORDER BY ID DESC", CONNECTION_SYNCH);
+
+ // GarrSiteLevelPlotInst.db2
+ PrepareStatement(HOTFIX_SEL_GARR_SITE_LEVEL_PLOT_INST, "SELECT ID, GarrSiteLevelID, GarrPlotInstanceID, LandmarkX, LandmarkY, "
+ "Unknown FROM garr_site_level_plot_inst ORDER BY ID DESC", CONNECTION_SYNCH);
+
// Holidays.db2
PrepareStatement(HOTFIX_SEL_HOLIDAYS, "SELECT ID, Duration1, Duration2, Duration3, Duration4, Duration5, Duration6, Duration7, Duration8, Duration9, Duration10, "
"Date1, Date2, Date3, Date4, Date5, Date6, Date7, Date8, Date9, Date10, Date11, Date12, Date13, Date14, Date15, Date16, Region, Looping, "
diff --git a/src/server/shared/Database/Implementation/HotfixDatabase.h b/src/server/shared/Database/Implementation/HotfixDatabase.h
index 3d8e528cd98..4adf555dc2f 100644
--- a/src/server/shared/Database/Implementation/HotfixDatabase.h
+++ b/src/server/shared/Database/Implementation/HotfixDatabase.h
@@ -54,6 +54,37 @@ enum HotfixDatabaseStatements
HOTFIX_SEL_CURVE_POINT,
+ HOTFIX_SEL_GAMEOBJECTS,
+ HOTFIX_SEL_GAMEOBJECTS_LOCALE,
+
+ HOTFIX_SEL_GARR_ABILITY,
+ HOTFIX_SEL_GARR_ABILITY_LOCALE,
+
+ HOTFIX_SEL_GARR_BUILDING,
+ HOTFIX_SEL_GARR_BUILDING_LOCALE,
+
+ HOTFIX_SEL_GARR_BUILDING_PLOT_INST,
+
+ HOTFIX_SEL_GARR_CLASS_SPEC,
+ HOTFIX_SEL_GARR_CLASS_SPEC_LOCALE,
+
+ HOTFIX_SEL_GARR_FOLLOWER,
+ HOTFIX_SEL_GARR_FOLLOWER_LOCALE,
+
+ HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY,
+
+ HOTFIX_SEL_GARR_PLOT,
+ HOTFIX_SEL_GARR_PLOT_LOCALE,
+
+ HOTFIX_SEL_GARR_PLOT_BUILDING,
+
+ HOTFIX_SEL_GARR_PLOT_INSTANCE,
+ HOTFIX_SEL_GARR_PLOT_INSTANCE_LOCALE,
+
+ HOTFIX_SEL_GARR_SITE_LEVEL,
+
+ HOTFIX_SEL_GARR_SITE_LEVEL_PLOT_INST,
+
HOTFIX_SEL_HOLIDAYS,
HOTFIX_SEL_HOLIDAYS_LOCALE,
@@ -86,7 +117,7 @@ enum HotfixDatabaseStatements
HOTFIX_SEL_OVERRIDE_SPELL_DATA,
HOTFIX_SEL_PHASE_GROUP,
-
+
HOTFIX_SEL_QUEST_PACKAGE_ITEM,
HOTFIX_SEL_SOUND_ENTRIES,
diff --git a/src/server/shared/Database/Implementation/LoginDatabase.cpp b/src/server/shared/Database/Implementation/LoginDatabase.cpp
index 70350f3136c..0b2967f8922 100644
--- a/src/server/shared/Database/Implementation/LoginDatabase.cpp
+++ b/src/server/shared/Database/Implementation/LoginDatabase.cpp
@@ -46,7 +46,7 @@ void LoginDatabaseConnection::DoPrepareStatements()
PrepareStatement(LOGIN_INS_IP_BANNED, "INSERT INTO ip_banned (ip, bandate, unbandate, bannedby, banreason) VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(LOGIN_DEL_IP_NOT_BANNED, "DELETE FROM ip_banned WHERE ip = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_INS_ACCOUNT_BANNED, "INSERT INTO account_banned VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, ?, ?, 1)", CONNECTION_ASYNC);
- PrepareStatement(LOGIN_UPD_ACCOUNT_NOT_BANNED, "UPDATE account_banned SET active = 0 WHERE id = ? AND active != 0", CONNECTION_ASYNC);
+ PrepareStatement(LOGIN_UPD_ACCOUNT_NOT_BANNED, "UPDATE account_banned SET unbandate = UNIX_TIMESTAMP(), active = 0 WHERE id = ? AND active != 0", CONNECTION_ASYNC);
PrepareStatement(LOGIN_DEL_REALM_CHARACTERS_BY_REALM, "DELETE FROM realmcharacters WHERE acctid = ? AND realmid = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_DEL_REALM_CHARACTERS, "DELETE FROM realmcharacters WHERE acctid = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_INS_REALM_CHARACTERS, "INSERT INTO realmcharacters (numchars, acctid, realmid) VALUES (?, ?, ?)", CONNECTION_ASYNC);
@@ -124,7 +124,7 @@ void LoginDatabaseConnection::DoPrepareStatements()
PrepareStatement(LOGIN_SEL_BNET_ACCOUNT_EMAIL_BY_ID, "SELECT email FROM battlenet_accounts WHERE id = ?", CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_BNET_ACCOUNT_ID_BY_EMAIL, "SELECT id FROM battlenet_accounts WHERE email = ?", CONNECTION_SYNCH);
PrepareStatement(LOGIN_UPD_BNET_PASSWORD, "UPDATE battlenet_accounts SET v = '', s = '', sha_pass_hash = ? WHERE id = ?", CONNECTION_ASYNC);
- PrepareStatement(LOGIN_SEL_BNET_CHECK_PASSWORD, "SELECT 1 FROM battlenet_accounts WHERE id = ? AND sha_pass_hash = ?", CONNECTION_ASYNC);
+ PrepareStatement(LOGIN_SEL_BNET_CHECK_PASSWORD, "SELECT 1 FROM battlenet_accounts WHERE id = ? AND sha_pass_hash = ?", CONNECTION_SYNCH);
PrepareStatement(LOGIN_UPD_BNET_ACCOUNT_LOCK, "UPDATE battlenet_accounts SET locked = ? WHERE id = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_UPD_BNET_ACCOUNT_LOCK_CONTRY, "UPDATE battlenet_accounts SET lock_country = ? WHERE id = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_BNET_ACCOUNT_ID_BY_GAME_ACCOUNT, "SELECT battlenet_account FROM account WHERE id = ?", CONNECTION_SYNCH);
diff --git a/src/server/shared/Debugging/WheatyExceptionReport.cpp b/src/server/shared/Debugging/WheatyExceptionReport.cpp
index f8f641a9ea7..e50cf42e439 100644
--- a/src/server/shared/Debugging/WheatyExceptionReport.cpp
+++ b/src/server/shared/Debugging/WheatyExceptionReport.cpp
@@ -61,6 +61,7 @@ HANDLE WheatyExceptionReport::m_hDumpFile;
HANDLE WheatyExceptionReport::m_hProcess;
SymbolPairs WheatyExceptionReport::symbols;
std::stack<SymbolDetail> WheatyExceptionReport::symbolDetails;
+bool WheatyExceptionReport::stackOverflowException;
// Declare global instance of class
WheatyExceptionReport g_WheatyExceptionReport;
@@ -72,6 +73,7 @@ WheatyExceptionReport::WheatyExceptionReport() // Constructor
// Install the unhandled exception filter function
m_previousFilter = SetUnhandledExceptionFilter(WheatyUnhandledExceptionFilter);
m_hProcess = GetCurrentProcess();
+ stackOverflowException = false;
if (!IsDebuggerPresent())
{
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
@@ -97,6 +99,9 @@ WheatyExceptionReport::~WheatyExceptionReport()
LONG WINAPI WheatyExceptionReport::WheatyUnhandledExceptionFilter(
PEXCEPTION_POINTERS pExceptionInfo)
{
+ if (pExceptionInfo->ExceptionRecord->ExceptionCode == STATUS_STACK_OVERFLOW)
+ stackOverflowException = true;
+
TCHAR module_folder_name[MAX_PATH];
GetModuleFileName(0, module_folder_name, MAX_PATH);
TCHAR* pos = _tcsrchr(module_folder_name, '\\');
@@ -419,107 +424,114 @@ void WheatyExceptionReport::printTracesForAllThreads(bool bWriteVariables)
void WheatyExceptionReport::GenerateExceptionReport(
PEXCEPTION_POINTERS pExceptionInfo)
{
- SYSTEMTIME systime;
- GetLocalTime(&systime);
-
- // Start out with a banner
- _tprintf(_T("Revision: %s\r\n"), _FULLVERSION);
- _tprintf(_T("Date %u:%u:%u. Time %u:%u \r\n"), systime.wDay, systime.wMonth, systime.wYear, systime.wHour, systime.wMinute);
- PEXCEPTION_RECORD pExceptionRecord = pExceptionInfo->ExceptionRecord;
-
- PrintSystemInfo();
- // First print information about the type of fault
- _tprintf(_T("\r\n//=====================================================\r\n"));
- _tprintf(_T("Exception code: %08X %s\r\n"),
- pExceptionRecord->ExceptionCode,
- GetExceptionString(pExceptionRecord->ExceptionCode));
-
- // Now print information about where the fault occured
- TCHAR szFaultingModule[MAX_PATH];
- DWORD section;
- DWORD_PTR offset;
- GetLogicalAddress(pExceptionRecord->ExceptionAddress,
- szFaultingModule,
- sizeof(szFaultingModule),
- section, offset);
+ __try
+ {
+ SYSTEMTIME systime;
+ GetLocalTime(&systime);
+
+ // Start out with a banner
+ _tprintf(_T("Revision: %s\r\n"), _FULLVERSION);
+ _tprintf(_T("Date %u:%u:%u. Time %u:%u \r\n"), systime.wDay, systime.wMonth, systime.wYear, systime.wHour, systime.wMinute);
+ PEXCEPTION_RECORD pExceptionRecord = pExceptionInfo->ExceptionRecord;
+
+ PrintSystemInfo();
+ // First print information about the type of fault
+ _tprintf(_T("\r\n//=====================================================\r\n"));
+ _tprintf(_T("Exception code: %08X %s\r\n"),
+ pExceptionRecord->ExceptionCode,
+ GetExceptionString(pExceptionRecord->ExceptionCode));
+
+ // Now print information about where the fault occured
+ TCHAR szFaultingModule[MAX_PATH];
+ DWORD section;
+ DWORD_PTR offset;
+ GetLogicalAddress(pExceptionRecord->ExceptionAddress,
+ szFaultingModule,
+ sizeof(szFaultingModule),
+ section, offset);
#ifdef _M_IX86
- _tprintf(_T("Fault address: %08X %02X:%08X %s\r\n"),
- pExceptionRecord->ExceptionAddress,
- section, offset, szFaultingModule);
+ _tprintf(_T("Fault address: %08X %02X:%08X %s\r\n"),
+ pExceptionRecord->ExceptionAddress,
+ section, offset, szFaultingModule);
#endif
#ifdef _M_X64
- _tprintf(_T("Fault address: %016I64X %02X:%016I64X %s\r\n"),
- pExceptionRecord->ExceptionAddress,
- section, offset, szFaultingModule);
+ _tprintf(_T("Fault address: %016I64X %02X:%016I64X %s\r\n"),
+ pExceptionRecord->ExceptionAddress,
+ section, offset, szFaultingModule);
#endif
- PCONTEXT pCtx = pExceptionInfo->ContextRecord;
+ PCONTEXT pCtx = pExceptionInfo->ContextRecord;
- // Show the registers
- #ifdef _M_IX86 // X86 Only!
- _tprintf(_T("\r\nRegisters:\r\n"));
+ // Show the registers
+#ifdef _M_IX86 // X86 Only!
+ _tprintf(_T("\r\nRegisters:\r\n"));
- _tprintf(_T("EAX:%08X\r\nEBX:%08X\r\nECX:%08X\r\nEDX:%08X\r\nESI:%08X\r\nEDI:%08X\r\n")
- , pCtx->Eax, pCtx->Ebx, pCtx->Ecx, pCtx->Edx,
- pCtx->Esi, pCtx->Edi);
+ _tprintf(_T("EAX:%08X\r\nEBX:%08X\r\nECX:%08X\r\nEDX:%08X\r\nESI:%08X\r\nEDI:%08X\r\n")
+ , pCtx->Eax, pCtx->Ebx, pCtx->Ecx, pCtx->Edx,
+ pCtx->Esi, pCtx->Edi);
- _tprintf(_T("CS:EIP:%04X:%08X\r\n"), pCtx->SegCs, pCtx->Eip);
- _tprintf(_T("SS:ESP:%04X:%08X EBP:%08X\r\n"),
- pCtx->SegSs, pCtx->Esp, pCtx->Ebp);
- _tprintf(_T("DS:%04X ES:%04X FS:%04X GS:%04X\r\n"),
- pCtx->SegDs, pCtx->SegEs, pCtx->SegFs, pCtx->SegGs);
- _tprintf(_T("Flags:%08X\r\n"), pCtx->EFlags);
- #endif
+ _tprintf(_T("CS:EIP:%04X:%08X\r\n"), pCtx->SegCs, pCtx->Eip);
+ _tprintf(_T("SS:ESP:%04X:%08X EBP:%08X\r\n"),
+ pCtx->SegSs, pCtx->Esp, pCtx->Ebp);
+ _tprintf(_T("DS:%04X ES:%04X FS:%04X GS:%04X\r\n"),
+ pCtx->SegDs, pCtx->SegEs, pCtx->SegFs, pCtx->SegGs);
+ _tprintf(_T("Flags:%08X\r\n"), pCtx->EFlags);
+#endif
- #ifdef _M_X64
- _tprintf(_T("\r\nRegisters:\r\n"));
- _tprintf(_T("RAX:%016I64X\r\nRBX:%016I64X\r\nRCX:%016I64X\r\nRDX:%016I64X\r\nRSI:%016I64X\r\nRDI:%016I64X\r\n")
- _T("R8: %016I64X\r\nR9: %016I64X\r\nR10:%016I64X\r\nR11:%016I64X\r\nR12:%016I64X\r\nR13:%016I64X\r\nR14:%016I64X\r\nR15:%016I64X\r\n")
- , pCtx->Rax, pCtx->Rbx, pCtx->Rcx, pCtx->Rdx,
- pCtx->Rsi, pCtx->Rdi, pCtx->R9, pCtx->R10, pCtx->R11, pCtx->R12, pCtx->R13, pCtx->R14, pCtx->R15);
- _tprintf(_T("CS:RIP:%04X:%016I64X\r\n"), pCtx->SegCs, pCtx->Rip);
- _tprintf(_T("SS:RSP:%04X:%016X RBP:%08X\r\n"),
- pCtx->SegSs, pCtx->Rsp, pCtx->Rbp);
- _tprintf(_T("DS:%04X ES:%04X FS:%04X GS:%04X\r\n"),
- pCtx->SegDs, pCtx->SegEs, pCtx->SegFs, pCtx->SegGs);
- _tprintf(_T("Flags:%08X\r\n"), pCtx->EFlags);
- #endif
+#ifdef _M_X64
+ _tprintf(_T("\r\nRegisters:\r\n"));
+ _tprintf(_T("RAX:%016I64X\r\nRBX:%016I64X\r\nRCX:%016I64X\r\nRDX:%016I64X\r\nRSI:%016I64X\r\nRDI:%016I64X\r\n")
+ _T("R8: %016I64X\r\nR9: %016I64X\r\nR10:%016I64X\r\nR11:%016I64X\r\nR12:%016I64X\r\nR13:%016I64X\r\nR14:%016I64X\r\nR15:%016I64X\r\n")
+ , pCtx->Rax, pCtx->Rbx, pCtx->Rcx, pCtx->Rdx,
+ pCtx->Rsi, pCtx->Rdi, pCtx->R9, pCtx->R10, pCtx->R11, pCtx->R12, pCtx->R13, pCtx->R14, pCtx->R15);
+ _tprintf(_T("CS:RIP:%04X:%016I64X\r\n"), pCtx->SegCs, pCtx->Rip);
+ _tprintf(_T("SS:RSP:%04X:%016X RBP:%08X\r\n"),
+ pCtx->SegSs, pCtx->Rsp, pCtx->Rbp);
+ _tprintf(_T("DS:%04X ES:%04X FS:%04X GS:%04X\r\n"),
+ pCtx->SegDs, pCtx->SegEs, pCtx->SegFs, pCtx->SegGs);
+ _tprintf(_T("Flags:%08X\r\n"), pCtx->EFlags);
+#endif
- SymSetOptions(SYMOPT_DEFERRED_LOADS);
+ SymSetOptions(SYMOPT_DEFERRED_LOADS);
- // Initialize DbgHelp
- if (!SymInitialize(GetCurrentProcess(), 0, TRUE))
- {
- _tprintf(_T("\n\rCRITICAL ERROR.\n\r Couldn't initialize the symbol handler for process.\n\rError [%s].\n\r\n\r"),
- ErrorMessage(GetLastError()));
- }
+ // Initialize DbgHelp
+ if (!SymInitialize(GetCurrentProcess(), 0, TRUE))
+ {
+ _tprintf(_T("\n\rCRITICAL ERROR.\n\r Couldn't initialize the symbol handler for process.\n\rError [%s].\n\r\n\r"),
+ ErrorMessage(GetLastError()));
+ }
- CONTEXT trashableContext = *pCtx;
+ CONTEXT trashableContext = *pCtx;
- WriteStackDetails(&trashableContext, false, NULL);
- printTracesForAllThreads(false);
+ WriteStackDetails(&trashableContext, false, NULL);
+ printTracesForAllThreads(false);
-// #ifdef _M_IX86 // X86 Only!
+ // #ifdef _M_IX86 // X86 Only!
- _tprintf(_T("========================\r\n"));
- _tprintf(_T("Local Variables And Parameters\r\n"));
+ _tprintf(_T("========================\r\n"));
+ _tprintf(_T("Local Variables And Parameters\r\n"));
- trashableContext = *pCtx;
- WriteStackDetails(&trashableContext, true, NULL);
- printTracesForAllThreads(true);
+ trashableContext = *pCtx;
+ WriteStackDetails(&trashableContext, true, NULL);
+ printTracesForAllThreads(true);
- /*_tprintf(_T("========================\r\n"));
- _tprintf(_T("Global Variables\r\n"));
+ /*_tprintf(_T("========================\r\n"));
+ _tprintf(_T("Global Variables\r\n"));
- SymEnumSymbols(GetCurrentProcess(),
+ SymEnumSymbols(GetCurrentProcess(),
(UINT_PTR)GetModuleHandle(szFaultingModule),
0, EnumerateSymbolsCallback, 0);*/
- // #endif // X86 Only!
+ // #endif // X86 Only!
- SymCleanup(GetCurrentProcess());
+ SymCleanup(GetCurrentProcess());
- _tprintf(_T("\r\n"));
+ _tprintf(_T("\r\n"));
+ }
+ __except (EXCEPTION_EXECUTE_HANDLER)
+ {
+ _tprintf(_T("Error writing the crash log\r\n"));
+ }
}
//======================================================================
@@ -1313,16 +1325,43 @@ DWORD_PTR WheatyExceptionReport::DereferenceUnsafePointer(DWORD_PTR address)
//============================================================================
int __cdecl WheatyExceptionReport::_tprintf(const TCHAR * format, ...)
{
- TCHAR szBuff[WER_LARGE_BUFFER_SIZE];
int retValue;
- DWORD cbWritten;
va_list argptr;
-
va_start(argptr, format);
+ if (stackOverflowException)
+ {
+ retValue = heapprintf(format, argptr);
+ va_end(argptr);
+ }
+ else
+ {
+ retValue = stackprintf(format, argptr);
+ va_end(argptr);
+ }
+
+ return retValue;
+}
+
+int __cdecl WheatyExceptionReport::stackprintf(const TCHAR * format, va_list argptr)
+{
+ int retValue;
+ DWORD cbWritten;
+
+ TCHAR szBuff[WER_LARGE_BUFFER_SIZE];
retValue = vsprintf(szBuff, format, argptr);
- va_end(argptr);
+ WriteFile(m_hReportFile, szBuff, retValue * sizeof(TCHAR), &cbWritten, 0);
+ return retValue;
+}
+
+int __cdecl WheatyExceptionReport::heapprintf(const TCHAR * format, va_list argptr)
+{
+ int retValue;
+ DWORD cbWritten;
+ TCHAR* szBuff = (TCHAR*)malloc(sizeof(TCHAR) * WER_LARGE_BUFFER_SIZE);
+ retValue = vsprintf(szBuff, format, argptr);
WriteFile(m_hReportFile, szBuff, retValue * sizeof(TCHAR), &cbWritten, 0);
+ free(szBuff);
return retValue;
}
diff --git a/src/server/shared/Debugging/WheatyExceptionReport.h b/src/server/shared/Debugging/WheatyExceptionReport.h
index b7731daaa2b..101b6187f2b 100644
--- a/src/server/shared/Debugging/WheatyExceptionReport.h
+++ b/src/server/shared/Debugging/WheatyExceptionReport.h
@@ -178,6 +178,8 @@ class WheatyExceptionReport
static DWORD_PTR DereferenceUnsafePointer(DWORD_PTR address);
static int __cdecl _tprintf(const TCHAR * format, ...);
+ static int __cdecl stackprintf(const TCHAR * format, va_list argptr);
+ static int __cdecl heapprintf(const TCHAR * format, va_list argptr);
static bool StoreSymbol(DWORD type , DWORD_PTR offset);
static void ClearSymbols();
@@ -191,6 +193,7 @@ class WheatyExceptionReport
static HANDLE m_hProcess;
static SymbolPairs symbols;
static std::stack<SymbolDetail> symbolDetails;
+ static bool stackOverflowException;
static char* PushSymbolDetail(char* pszCurrBuffer);
static char* PopSymbolDetail(char* pszCurrBuffer);
diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h
index e22a06e635e..5b3782fce55 100644
--- a/src/server/shared/Logging/Log.h
+++ b/src/server/shared/Logging/Log.h
@@ -23,6 +23,7 @@
#include "Appender.h"
#include "Logger.h"
#include "StringFormat.h"
+#include "Common.h"
#include <boost/asio/io_service.hpp>
#include <boost/asio/strand.hpp>
@@ -64,7 +65,7 @@ class Log
template<typename... Args>
inline void outMessage(std::string const& filter, LogLevel const level, const char* fmt, Args const&... args)
{
- write(std::unique_ptr<LogMessage>(new LogMessage(level, filter, Trinity::StringFormat(fmt, args...))));
+ write(Trinity::make_unique<LogMessage>(level, filter, Trinity::StringFormat(fmt, args...)));
}
template<typename... Args>
@@ -73,7 +74,7 @@ class Log
if (!ShouldLog("commands.gm", LOG_LEVEL_INFO))
return;
- std::unique_ptr<LogMessage> msg(new LogMessage(LOG_LEVEL_INFO, "commands.gm", std::move(Trinity::StringFormat(fmt, args...))));
+ std::unique_ptr<LogMessage> msg = Trinity::make_unique<LogMessage>(LOG_LEVEL_INFO, "commands.gm", std::move(Trinity::StringFormat(fmt, args...)));
msg->param1 = std::to_string(account);
diff --git a/src/server/shared/Networking/MessageBuffer.h b/src/server/shared/Networking/MessageBuffer.h
index 802442b5c31..d0c65f05c3d 100644
--- a/src/server/shared/Networking/MessageBuffer.h
+++ b/src/server/shared/Networking/MessageBuffer.h
@@ -55,9 +55,9 @@ public:
uint8* GetBasePointer() { return _storage.data(); }
- uint8* GetReadPointer() { return &_storage[_rpos]; }
+ uint8* GetReadPointer() { return GetBasePointer() + _rpos; }
- uint8* GetWritePointer() { return &_storage[_wpos]; }
+ uint8* GetWritePointer() { return GetBasePointer() + _wpos; }
void ReadCompleted(size_type bytes) { _rpos += bytes; }
diff --git a/src/server/shared/PrecompiledHeaders/sharedPCH.h b/src/server/shared/PrecompiledHeaders/sharedPCH.h
index d0c15b17f0c..87af9f44eb7 100644
--- a/src/server/shared/PrecompiledHeaders/sharedPCH.h
+++ b/src/server/shared/PrecompiledHeaders/sharedPCH.h
@@ -6,3 +6,4 @@
#include "SQLOperation.h"
#include "Errors.h"
#include "TypeList.h"
+#include "TaskScheduler.h"
diff --git a/src/server/shared/Updater/DBUpdater.cpp b/src/server/shared/Updater/DBUpdater.cpp
index 9806151b4c4..10c8c163ec4 100644
--- a/src/server/shared/Updater/DBUpdater.cpp
+++ b/src/server/shared/Updater/DBUpdater.cpp
@@ -381,8 +381,27 @@ void DBUpdater<T>::ApplyFile(DatabaseWorkerPool<T>& pool, std::string const& hos
args.push_back("-h" + host);
args.push_back("-u" + user);
args.push_back("-p" + password);
+
+ // Check if we want to connect through ip or socket (Unix only)
+#ifdef _WIN32
+
args.push_back("-P" + port_or_socket);
+#else
+
+ if (!std::isdigit(port_or_socket[0]))
+ {
+ // We can't check here if host == "." because is named localhost if socket option is enabled
+ args.push_back("-P0");
+ args.push_back("--protocol=SOCKET");
+ args.push_back("-S" + port_or_socket);
+ }
+ else
+ // generic case
+ args.push_back("-P" + port_or_socket);
+
+#endif
+
// Set the default charset to utf8
args.push_back("--default-character-set=utf8");
diff --git a/src/server/shared/Utilities/TaskScheduler.cpp b/src/server/shared/Utilities/TaskScheduler.cpp
new file mode 100644
index 00000000000..4b261413fd9
--- /dev/null
+++ b/src/server/shared/Utilities/TaskScheduler.cpp
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "TaskScheduler.h"
+
+TaskScheduler& TaskScheduler::Update()
+{
+ _now = clock_t::now();
+ Dispatch();
+ return *this;
+}
+
+TaskScheduler& TaskScheduler::Update(size_t const milliseconds)
+{
+ return Update(std::chrono::milliseconds(milliseconds));
+}
+
+TaskScheduler& TaskScheduler::Async(std::function<void()> const& callable)
+{
+ _asyncHolder.push(callable);
+ return *this;
+}
+
+TaskScheduler& TaskScheduler::CancelAll()
+{
+ /// Clear the task holder
+ _task_holder.Clear();
+ _asyncHolder = AsyncHolder();
+ return *this;
+}
+
+TaskScheduler& TaskScheduler::CancelGroup(group_t const group)
+{
+ _task_holder.RemoveIf([group](TaskContainer const& task) -> bool
+ {
+ return task->IsInGroup(group);
+ });
+ return *this;
+}
+
+TaskScheduler& TaskScheduler::CancelGroupsOf(std::vector<group_t> const& groups)
+{
+ std::for_each(groups.begin(), groups.end(),
+ std::bind(&TaskScheduler::CancelGroup, this, std::placeholders::_1));
+
+ return *this;
+}
+
+TaskScheduler& TaskScheduler::InsertTask(TaskContainer task)
+{
+ _task_holder.Push(std::move(task));
+ return *this;
+}
+
+void TaskScheduler::Dispatch()
+{
+ // Process all asyncs
+ while (!_asyncHolder.empty())
+ {
+ _asyncHolder.front()();
+ _asyncHolder.pop();
+ }
+
+ while (!_task_holder.IsEmpty())
+ {
+ if (_task_holder.First()->_end > _now)
+ break;
+
+ // Perfect forward the context to the handler
+ // Use weak references to catch destruction before callbacks.
+ TaskContext context(_task_holder.Pop(), std::weak_ptr<TaskScheduler>(self_reference));
+
+ // Invoke the context
+ context.Invoke();
+ }
+}
+
+void TaskScheduler::TaskQueue::Push(TaskContainer&& task)
+{
+ container.insert(task);
+}
+
+auto TaskScheduler::TaskQueue::Pop() -> TaskContainer
+{
+ TaskContainer result = *container.begin();
+ container.erase(container.begin());
+ return result;
+}
+
+auto TaskScheduler::TaskQueue::First() const -> TaskContainer const&
+{
+ return *container.begin();
+}
+
+void TaskScheduler::TaskQueue::Clear()
+{
+ container.clear();
+}
+
+void TaskScheduler::TaskQueue::RemoveIf(std::function<bool(TaskContainer const&)> const& filter)
+{
+ for (auto itr = container.begin(); itr != container.end();)
+ if (filter(*itr))
+ itr = container.erase(itr);
+ else
+ ++itr;
+}
+
+void TaskScheduler::TaskQueue::ModifyIf(std::function<bool(TaskContainer const&)> const& filter)
+{
+ std::vector<TaskContainer> cache;
+ for (auto itr = container.begin(); itr != container.end();)
+ if (filter(*itr))
+ {
+ cache.push_back(*itr);
+ itr = container.erase(itr);
+ }
+ else
+ ++itr;
+
+ container.insert(cache.begin(), cache.end());
+}
+
+bool TaskScheduler::TaskQueue::IsEmpty() const
+{
+ return container.empty();
+}
+
+TaskContext& TaskContext::Dispatch(std::function<TaskScheduler&(TaskScheduler&)> const& apply)
+{
+ if (auto const owner = _owner.lock())
+ apply(*owner);
+
+ return *this;
+}
+
+bool TaskContext::IsExpired() const
+{
+ return _owner.expired();
+}
+
+bool TaskContext::IsInGroup(TaskScheduler::group_t const group) const
+{
+ return _task->IsInGroup(group);
+}
+
+TaskContext& TaskContext::SetGroup(TaskScheduler::group_t const group)
+{
+ _task->_group = group;
+ return *this;
+}
+
+TaskContext& TaskContext::ClearGroup()
+{
+ _task->_group = boost::none;
+ return *this;
+}
+
+TaskScheduler::repeated_t TaskContext::GetRepeatCounter() const
+{
+ return _task->_repeated;
+}
+
+TaskContext& TaskContext::Async(std::function<void()> const& callable)
+{
+ return Dispatch(std::bind(&TaskScheduler::Async, std::placeholders::_1, callable));
+}
+
+TaskContext& TaskContext::CancelAll()
+{
+ return Dispatch(std::mem_fn(&TaskScheduler::CancelAll));
+}
+
+TaskContext& TaskContext::CancelGroup(TaskScheduler::group_t const group)
+{
+ return Dispatch(std::bind(&TaskScheduler::CancelGroup, std::placeholders::_1, group));
+}
+
+TaskContext& TaskContext::CancelGroupsOf(std::vector<TaskScheduler::group_t> const& groups)
+{
+ return Dispatch(std::bind(&TaskScheduler::CancelGroupsOf, std::placeholders::_1, std::cref(groups)));
+}
+
+void TaskContext::AssertOnConsumed() const
+{
+ // This was adapted to TC to prevent static analysis tools from complaining.
+ // If you encounter this assertion check if you repeat a TaskContext more then 1 time!
+ ASSERT(!(*_consumed) && "Bad task logic, task context was consumed already!");
+}
+
+void TaskContext::Invoke()
+{
+ _task->_task(*this);
+}
diff --git a/src/server/shared/Utilities/TaskScheduler.h b/src/server/shared/Utilities/TaskScheduler.h
new file mode 100644
index 00000000000..98e210e55b1
--- /dev/null
+++ b/src/server/shared/Utilities/TaskScheduler.h
@@ -0,0 +1,627 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _TASK_SCHEDULER_H_
+#define _TASK_SCHEDULER_H_
+
+#include <algorithm>
+#include <chrono>
+#include <vector>
+#include <queue>
+#include <memory>
+#include <utility>
+#include <set>
+
+#include <boost/optional.hpp>
+
+#include "Util.h"
+
+class TaskContext;
+
+/// The TaskScheduler class provides the ability to schedule std::function's in the near future.
+/// Use TaskScheduler::Update to update the scheduler.
+/// Popular methods are:
+/// * Schedule (Schedules a std::function which will be executed in the near future).
+/// * Schedules an asynchronous function which will be executed at the next update tick.
+/// * Cancel, Delay & Reschedule (Methods to manipulate already scheduled tasks).
+/// Tasks are organized in groups (uint), multiple tasks can have the same group id,
+/// you can provide a group or not, but keep in mind that you can only manipulate specific tasks through its group id!
+/// Tasks callbacks use the function signature void(TaskContext) where TaskContext provides
+/// access to the function schedule plan which makes it possible to repeat the task
+/// with the same duration or a new one.
+/// It also provides access to the repeat counter which is useful for task that repeat itself often
+/// but behave different every time (spoken event dialogs for example).
+class TaskScheduler
+{
+ friend class TaskContext;
+
+ // Time definitions (use steady clock)
+ typedef std::chrono::steady_clock clock_t;
+ typedef clock_t::time_point timepoint_t;
+ typedef clock_t::duration duration_t;
+
+ // Task group type
+ typedef uint32 group_t;
+ // Task repeated type
+ typedef uint32 repeated_t;
+ // Task handle type
+ typedef std::function<void(TaskContext)> task_handler_t;
+
+ class Task
+ {
+ friend class TaskContext;
+ friend class TaskScheduler;
+
+ timepoint_t _end;
+ duration_t _duration;
+ boost::optional<group_t> _group;
+ repeated_t _repeated;
+ task_handler_t _task;
+
+ public:
+ // All Argument construct
+ Task(timepoint_t const& end, duration_t const& duration, boost::optional<group_t> const& group,
+ repeated_t const repeated, task_handler_t const& task)
+ : _end(end), _duration(duration), _group(group), _repeated(repeated), _task(task) { }
+
+ // Minimal Argument construct
+ Task(timepoint_t const& end, duration_t const& duration, task_handler_t const& task)
+ : _end(end), _duration(duration), _group(boost::none), _repeated(0), _task(task) { }
+
+ // Copy construct
+ Task(Task const&) = delete;
+ // Move construct
+ Task(Task&&) = delete;
+ // Copy Assign
+ Task& operator= (Task const&) = default;
+ // Move Assign
+ Task& operator= (Task&& right) = delete;
+
+ // Order tasks by its end
+ inline bool operator< (Task const& other) const
+ {
+ return _end < other._end;
+ }
+
+ inline bool operator> (Task const& other) const
+ {
+ return _end > other._end;
+ }
+
+ // Compare tasks with its end
+ inline bool operator== (Task const& other)
+ {
+ return _end == other._end;
+ }
+
+ // Returns true if the task is in the given group
+ inline bool IsInGroup(group_t const group) const
+ {
+ return _group == group;
+ }
+ };
+
+ typedef std::shared_ptr<Task> TaskContainer;
+
+ /// Container which provides Task order, insert and reschedule operations.
+ struct Compare
+ {
+ bool operator() (TaskContainer const& left, TaskContainer const& right)
+ {
+ return (*left.get()) < (*right.get());
+ };
+ };
+
+ class TaskQueue
+ {
+ std::multiset<TaskContainer, Compare> container;
+
+ public:
+ // Pushes the task in the container
+ void Push(TaskContainer&& task);
+
+ /// Pops the task out of the container
+ TaskContainer Pop();
+
+ TaskContainer const& First() const;
+
+ void Clear();
+
+ void RemoveIf(std::function<bool(TaskContainer const&)> const& filter);
+
+ void ModifyIf(std::function<bool(TaskContainer const&)> const& filter);
+
+ bool IsEmpty() const;
+ };
+
+ /// Contains a self reference to track if this object was deleted or not.
+ std::shared_ptr<TaskScheduler> self_reference;
+
+ /// The current time point (now)
+ timepoint_t _now;
+
+ /// The Task Queue which contains all task objects.
+ TaskQueue _task_holder;
+
+ typedef std::queue<std::function<void()>> AsyncHolder;
+
+ /// Contains all asynchronous tasks which will be invoked at
+ /// the next update tick.
+ AsyncHolder _asyncHolder;
+
+public:
+ TaskScheduler() : self_reference(this, [](TaskScheduler const*) { }),
+ _now(clock_t::now()) { }
+
+ TaskScheduler(TaskScheduler const&) = delete;
+ TaskScheduler(TaskScheduler&&) = delete;
+ TaskScheduler& operator= (TaskScheduler const&) = delete;
+ TaskScheduler& operator= (TaskScheduler&&) = delete;
+
+ /// Update the scheduler to the current time.
+ TaskScheduler& Update();
+
+ /// Update the scheduler with a difftime in ms.
+ TaskScheduler& Update(size_t const milliseconds);
+
+ /// Update the scheduler with a difftime.
+ template<class _Rep, class _Period>
+ TaskScheduler& Update(std::chrono::duration<_Rep, _Period> const& difftime)
+ {
+ _now += difftime;
+ Dispatch();
+ return *this;
+ }
+
+ /// Schedule an callable function that is executed at the next update tick.
+ /// Its safe to modify the TaskScheduler from within the callable.
+ TaskScheduler& Async(std::function<void()> const& callable);
+
+ /// Schedule an event with a fixed rate.
+ /// Never call this from within a task context! Use TaskContext::Schedule instead!
+ template<class _Rep, class _Period>
+ TaskScheduler& Schedule(std::chrono::duration<_Rep, _Period> const& time,
+ task_handler_t const& task)
+ {
+ return ScheduleAt(_now, time, task);
+ }
+
+ /// Schedule an event with a fixed rate.
+ /// Never call this from within a task context! Use TaskContext::Schedule instead!
+ template<class _Rep, class _Period>
+ TaskScheduler& Schedule(std::chrono::duration<_Rep, _Period> const& time,
+ group_t const group, task_handler_t const& task)
+ {
+ return ScheduleAt(_now, time, group, task);
+ }
+
+ /// Schedule an event with a randomized rate between min and max rate.
+ /// Never call this from within a task context! Use TaskContext::Schedule instead!
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskScheduler& Schedule(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max, task_handler_t const& task)
+ {
+ return Schedule(RandomDurationBetween(min, max), task);
+ }
+
+ /// Schedule an event with a fixed rate.
+ /// Never call this from within a task context! Use TaskContext::Schedule instead!
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskScheduler& Schedule(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max, group_t const group,
+ task_handler_t const& task)
+ {
+ return Schedule(RandomDurationBetween(min, max), group, task);
+ }
+
+ /// Cancels all tasks.
+ /// Never call this from within a task context! Use TaskContext::CancelAll instead!
+ TaskScheduler& CancelAll();
+
+ /// Cancel all tasks of a single group.
+ /// Never call this from within a task context! Use TaskContext::CancelGroup instead!
+ TaskScheduler& CancelGroup(group_t const group);
+
+ /// Cancels all groups in the given std::vector.
+ /// Hint: Use std::initializer_list for this: "{1, 2, 3, 4}"
+ TaskScheduler& CancelGroupsOf(std::vector<group_t> const& groups);
+
+ /// Delays all tasks with the given duration.
+ template<class _Rep, class _Period>
+ TaskScheduler& DelayAll(std::chrono::duration<_Rep, _Period> const& duration)
+ {
+ _task_holder.ModifyIf([&duration](TaskContainer const& task) -> bool
+ {
+ task->_end += duration;
+ return true;
+ });
+ return *this;
+ }
+
+ /// Delays all tasks with a random duration between min and max.
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskScheduler& DelayAll(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max)
+ {
+ return DelayAll(RandomDurationBetween(min, max));
+ }
+
+ /// Delays all tasks of a group with the given duration.
+ template<class _Rep, class _Period>
+ TaskScheduler& DelayGroup(group_t const group, std::chrono::duration<_Rep, _Period> const& duration)
+ {
+ _task_holder.ModifyIf([&duration, group](TaskContainer const& task) -> bool
+ {
+ if (task->IsInGroup(group))
+ {
+ task->_end += duration;
+ return true;
+ }
+ else
+ return false;
+ });
+ return *this;
+ }
+
+ /// Delays all tasks of a group with a random duration between min and max.
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskScheduler& DelayGroup(group_t const group,
+ std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max)
+ {
+ return DelayGroup(group, RandomDurationBetween(min, max));
+ }
+
+ /// Reschedule all tasks with a given duration.
+ template<class _Rep, class _Period>
+ TaskScheduler& RescheduleAll(std::chrono::duration<_Rep, _Period> const& duration)
+ {
+ auto const end = _now + duration;
+ _task_holder.ModifyIf([end](TaskContainer const& task) -> bool
+ {
+ task->_end = end;
+ return true;
+ });
+ return *this;
+ }
+
+ /// Reschedule all tasks with a random duration between min and max.
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskScheduler& RescheduleAll(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max)
+ {
+ return RescheduleAll(RandomDurationBetween(min, max));
+ }
+
+ /// Reschedule all tasks of a group with the given duration.
+ template<class _Rep, class _Period>
+ TaskScheduler& RescheduleGroup(group_t const group, std::chrono::duration<_Rep, _Period> const& duration)
+ {
+ auto const end = _now + duration;
+ _task_holder.ModifyIf([end, group](TaskContainer const& task) -> bool
+ {
+ if (task->IsInGroup(group))
+ {
+ task->_end = end;
+ return true;
+ }
+ else
+ return false;
+ });
+ return *this;
+ }
+
+ /// Reschedule all tasks of a group with a random duration between min and max.
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskScheduler& RescheduleGroup(group_t const group,
+ std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max)
+ {
+ return RescheduleGroup(group, RandomDurationBetween(min, max));
+ }
+
+private:
+ /// Insert a new task to the enqueued tasks.
+ TaskScheduler& InsertTask(TaskContainer task);
+
+ template<class _Rep, class _Period>
+ TaskScheduler& ScheduleAt(timepoint_t const& end,
+ std::chrono::duration<_Rep, _Period> const& time, task_handler_t const& task)
+ {
+ return InsertTask(TaskContainer(new Task(end + time, time, task)));
+ }
+
+ /// Schedule an event with a fixed rate.
+ /// Never call this from within a task context! Use TaskContext::schedule instead!
+ template<class _Rep, class _Period>
+ TaskScheduler& ScheduleAt(timepoint_t const& end,
+ std::chrono::duration<_Rep, _Period> const& time,
+ group_t const group, task_handler_t const& task)
+ {
+ static repeated_t const DEFAULT_REPEATED = 0;
+ return InsertTask(TaskContainer(new Task(end + time, time, group, DEFAULT_REPEATED, task)));
+ }
+
+ // Returns a random duration between min and max
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ static std::chrono::milliseconds
+ RandomDurationBetween(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max)
+ {
+ auto const milli_min = std::chrono::duration_cast<std::chrono::milliseconds>(min);
+ auto const milli_max = std::chrono::duration_cast<std::chrono::milliseconds>(max);
+
+ // TC specific: use SFMT URandom
+ return std::chrono::milliseconds(urand(milli_min.count(), milli_max.count()));
+ }
+
+ /// Dispatch remaining tasks
+ void Dispatch();
+};
+
+class TaskContext
+{
+ friend class TaskScheduler;
+
+ /// Associated task
+ TaskScheduler::TaskContainer _task;
+
+ /// Owner
+ std::weak_ptr<TaskScheduler> _owner;
+
+ /// Marks the task as consumed
+ std::shared_ptr<bool> _consumed;
+
+ /// Dispatches an action safe on the TaskScheduler
+ TaskContext& Dispatch(std::function<TaskScheduler&(TaskScheduler&)> const& apply);
+
+public:
+ // Empty constructor
+ TaskContext()
+ : _task(), _owner(), _consumed(std::make_shared<bool>(true)) { }
+
+ // Construct from task and owner
+ explicit TaskContext(TaskScheduler::TaskContainer&& task, std::weak_ptr<TaskScheduler>&& owner)
+ : _task(task), _owner(owner), _consumed(std::make_shared<bool>(false)) { }
+
+ // Copy construct
+ TaskContext(TaskContext const& right)
+ : _task(right._task), _owner(right._owner), _consumed(right._consumed) { }
+
+ // Move construct
+ TaskContext(TaskContext&& right)
+ : _task(std::move(right._task)), _owner(std::move(right._owner)), _consumed(std::move(right._consumed)) { }
+
+ // Copy assign
+ TaskContext& operator= (TaskContext const& right)
+ {
+ _task = right._task;
+ _owner = right._owner;
+ _consumed = right._consumed;
+ return *this;
+ }
+
+ // Move assign
+ TaskContext& operator= (TaskContext&& right)
+ {
+ _task = std::move(right._task);
+ _owner = std::move(right._owner);
+ _consumed = std::move(right._consumed);
+ return *this;
+ }
+
+ /// Returns true if the owner was deallocated and this context has expired.
+ bool IsExpired() const;
+
+ /// Returns true if the event is in the given group
+ bool IsInGroup(TaskScheduler::group_t const group) const;
+
+ /// Sets the event in the given group
+ TaskContext& SetGroup(TaskScheduler::group_t const group);
+
+ /// Removes the group from the event
+ TaskContext& ClearGroup();
+
+ /// Returns the repeat counter which increases every time the task is repeated.
+ TaskScheduler::repeated_t GetRepeatCounter() const;
+
+ /// Repeats the event and sets a new duration.
+ /// std::chrono::seconds(5) for example.
+ /// This will consume the task context, its not possible to repeat the task again
+ /// from the same task context!
+ template<class _Rep, class _Period>
+ TaskContext& Repeat(std::chrono::duration<_Rep, _Period> const& duration)
+ {
+ AssertOnConsumed();
+
+ // Set new duration, in-context timing and increment repeat counter
+ _task->_duration = duration;
+ _task->_end += duration;
+ _task->_repeated += 1;
+ (*_consumed) = true;
+ return Dispatch(std::bind(&TaskScheduler::InsertTask, std::placeholders::_1, _task));
+ }
+
+ /// Repeats the event with the same duration.
+ /// This will consume the task context, its not possible to repeat the task again
+ /// from the same task context!
+ TaskContext& Repeat()
+ {
+ return Repeat(_task->_duration);
+ }
+
+ /// Repeats the event and set a new duration that is randomized between min and max.
+ /// std::chrono::seconds(5) for example.
+ /// This will consume the task context, its not possible to repeat the task again
+ /// from the same task context!
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskContext& Repeat(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max)
+ {
+ return Repeat(TaskScheduler::RandomDurationBetween(min, max));
+ }
+
+ /// Schedule a callable function that is executed at the next update tick from within the context.
+ /// Its safe to modify the TaskScheduler from within the callable.
+ TaskContext& Async(std::function<void()> const& callable);
+
+ /// Schedule an event with a fixed rate from within the context.
+ /// Its possible that the new event is executed immediately!
+ /// Use TaskScheduler::Async to create a task
+ /// which will be called at the next update tick.
+ template<class _Rep, class _Period>
+ TaskContext& Schedule(std::chrono::duration<_Rep, _Period> const& time,
+ TaskScheduler::task_handler_t const& task)
+ {
+ auto const end = _task->_end;
+ return Dispatch([end, time, task](TaskScheduler& scheduler) -> TaskScheduler&
+ {
+ return scheduler.ScheduleAt<_Rep, _Period>(end, time, task);
+ });
+ }
+
+ /// Schedule an event with a fixed rate from within the context.
+ /// Its possible that the new event is executed immediately!
+ /// Use TaskScheduler::Async to create a task
+ /// which will be called at the next update tick.
+ template<class _Rep, class _Period>
+ TaskContext& Schedule(std::chrono::duration<_Rep, _Period> const& time,
+ TaskScheduler::group_t const group, TaskScheduler::task_handler_t const& task)
+ {
+ auto const end = _task->_end;
+ return Dispatch([end, time, group, task](TaskScheduler& scheduler) -> TaskScheduler&
+ {
+ return scheduler.ScheduleAt<_Rep, _Period>(end, time, group, task);
+ });
+ }
+
+ /// Schedule an event with a randomized rate between min and max rate from within the context.
+ /// Its possible that the new event is executed immediately!
+ /// Use TaskScheduler::Async to create a task
+ /// which will be called at the next update tick.
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskContext& Schedule(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max, TaskScheduler::task_handler_t const& task)
+ {
+ return Schedule(TaskScheduler::RandomDurationBetween(min, max), task);
+ }
+
+ /// Schedule an event with a randomized rate between min and max rate from within the context.
+ /// Its possible that the new event is executed immediately!
+ /// Use TaskScheduler::Async to create a task
+ /// which will be called at the next update tick.
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskContext& Schedule(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max, TaskScheduler::group_t const group,
+ TaskScheduler::task_handler_t const& task)
+ {
+ return Schedule(TaskScheduler::RandomDurationBetween(min, max), group, task);
+ }
+
+ /// Cancels all tasks from within the context.
+ TaskContext& CancelAll();
+
+ /// Cancel all tasks of a single group from within the context.
+ TaskContext& CancelGroup(TaskScheduler::group_t const group);
+
+ /// Cancels all groups in the given std::vector from within the context.
+ /// Hint: Use std::initializer_list for this: "{1, 2, 3, 4}"
+ TaskContext& CancelGroupsOf(std::vector<TaskScheduler::group_t> const& groups);
+
+ /// Delays all tasks with the given duration from within the context.
+ template<class _Rep, class _Period>
+ TaskContext& DelayAll(std::chrono::duration<_Rep, _Period> const& duration)
+ {
+ return Dispatch(std::bind(&TaskScheduler::DelayAll<_Rep, _Period>, std::placeholders::_1, duration));
+ }
+
+ /// Delays all tasks with a random duration between min and max from within the context.
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskContext& DelayAll(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max)
+ {
+ return DelayAll(TaskScheduler::RandomDurationBetween(min, max));
+ }
+
+ /// Delays all tasks of a group with the given duration from within the context.
+ template<class _Rep, class _Period>
+ TaskContext& DelayGroup(TaskScheduler::group_t const group, std::chrono::duration<_Rep, _Period> const& duration)
+ {
+ return Dispatch(std::bind(&TaskScheduler::DelayGroup<_Rep, _Period>, std::placeholders::_1, group, duration));
+ }
+
+ /// Delays all tasks of a group with a random duration between min and max from within the context.
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskContext& DelayGroup(TaskScheduler::group_t const group,
+ std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max)
+ {
+ return DelayGroup(group, TaskScheduler::RandomDurationBetween(min, max));
+ }
+
+ /// Reschedule all tasks with the given duration.
+ template<class _Rep, class _Period>
+ TaskContext& RescheduleAll(std::chrono::duration<_Rep, _Period> const& duration)
+ {
+ return Dispatch(std::bind(&TaskScheduler::RescheduleAll, std::placeholders::_1, duration));
+ }
+
+ /// Reschedule all tasks with a random duration between min and max.
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskContext& RescheduleAll(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max)
+ {
+ return RescheduleAll(TaskScheduler::RandomDurationBetween(min, max));
+ }
+
+ /// Reschedule all tasks of a group with the given duration.
+ template<class _Rep, class _Period>
+ TaskContext& RescheduleGroup(TaskScheduler::group_t const group, std::chrono::duration<_Rep, _Period> const& duration)
+ {
+ return Dispatch(std::bind(&TaskScheduler::RescheduleGroup<_Rep, _Period>, std::placeholders::_1, group, duration));
+ }
+
+ /// Reschedule all tasks of a group with a random duration between min and max.
+ template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
+ TaskContext& RescheduleGroup(TaskScheduler::group_t const group,
+ std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
+ std::chrono::duration<_RepRight, _PeriodRight> const& max)
+ {
+ return RescheduleGroup(group, TaskScheduler::RandomDurationBetween(min, max));
+ }
+
+private:
+ /// Asserts if the task was consumed already.
+ void AssertOnConsumed() const;
+
+ /// Invokes the associated hook of the task.
+ void Invoke();
+};
+
+/// Milliseconds shorthand typedef.
+typedef std::chrono::milliseconds Milliseconds;
+
+/// Seconds shorthand typedef.
+typedef std::chrono::seconds Seconds;
+
+/// Minutes shorthand typedef.
+typedef std::chrono::minutes Minutes;
+
+/// Hours shorthand typedef.
+typedef std::chrono::hours Hours;
+
+#endif /// _TASK_SCHEDULER_H_
diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp
index d4a6915894d..e39ccb3c98f 100644
--- a/src/server/worldserver/Main.cpp
+++ b/src/server/worldserver/Main.cpp
@@ -111,11 +111,11 @@ extern int main(int argc, char** argv)
#ifdef _WIN32
if (configService.compare("install") == 0)
- return WinServiceInstall() == true ? 0 : 1;
+ return WinServiceInstall() ? 0 : 1;
else if (configService.compare("uninstall") == 0)
- return WinServiceUninstall() == true ? 0 : 1;
+ return WinServiceUninstall() ? 0 : 1;
else if (configService.compare("run") == 0)
- WinServiceRun();
+ return WinServiceRun() ? 0 : 0;
#endif
std::string configError;
@@ -613,11 +613,13 @@ variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile
store(command_line_parser(argc, argv).options(all).allow_unregistered().run(), vm);
notify(vm);
}
- catch (std::exception& e) {
+ catch (std::exception& e)
+ {
std::cerr << e.what() << "\n";
}
- if (vm.count("help")) {
+ if (vm.count("help"))
+ {
std::cout << all << "\n";
}
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index c59b845e454..668cec43aca 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -1018,7 +1018,7 @@ OffhandCheckAtSpellUnlearn = 1
# ClientCacheVersion
# Description: Client cache version for client cache data reset. Use any value different
# from DB and not recently been used to trigger client side cache reset.
-# Default: 0 - (Use DB value from world DB db_version.cache_id field)
+# Default: 0 - (Use DB value from world DB version.cache_id field)
ClientCacheVersion = 0
diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp
index ab9774a3038..9059867dce4 100644
--- a/src/tools/map_extractor/System.cpp
+++ b/src/tools/map_extractor/System.cpp
@@ -402,7 +402,7 @@ void ReadLiquidTypeTableDBC()
// Map file format data
static char const* MAP_MAGIC = "MAPS";
-static char const* MAP_VERSION_MAGIC = "v1.4";
+static char const* MAP_VERSION_MAGIC = "v1.5";
static char const* MAP_AREA_MAGIC = "AREA";
static char const* MAP_HEIGHT_MAGIC = "MHGT";
static char const* MAP_LIQUID_MAGIC = "MLIQ";
@@ -1091,7 +1091,7 @@ void ExtractMaps(uint32 build)
continue;
sprintf(storagePath, "World\\Maps\\%s\\%s_%u_%u.adt", map_ids[z].name, map_ids[z].name, x, y);
- sprintf(output_filename, "%s/maps/%03u%02u%02u.map", output_path, map_ids[z].id, y, x);
+ sprintf(output_filename, "%s/maps/%04u_%02u_%02u.map", output_path, map_ids[z].id, y, x);
ConvertADT(storagePath, output_filename, y, x, build);
sprintf(storagePath, "World\\Maps\\%s\\%s_%u_%u_obj0.adt", map_ids[z].name, map_ids[z].name, x, y);
diff --git a/src/tools/mmaps_generator/CMakeLists.txt b/src/tools/mmaps_generator/CMakeLists.txt
index 48e30b1c3cf..4dfe106bd3e 100644
--- a/src/tools/mmaps_generator/CMakeLists.txt
+++ b/src/tools/mmaps_generator/CMakeLists.txt
@@ -12,7 +12,7 @@ file(GLOB_RECURSE mmap_gen_sources *.cpp *.h)
set(mmap_gen_Includes
${CMAKE_BINARY_DIR}
- ${CMAKE_SOURCE_DIR}/dep/libmpq
+ ${CMAKE_SOURCE_DIR}/dep/cppformat
${CMAKE_SOURCE_DIR}/dep/zlib
${CMAKE_SOURCE_DIR}/dep/bzip2
${CMAKE_SOURCE_DIR}/dep/g3dlite/include
@@ -30,13 +30,6 @@ set(mmap_gen_Includes
${CMAKE_SOURCE_DIR}/src/server/collision/Models
)
-if( WIN32 )
- set(mmap_gen_Includes
- ${mmap_gen_Includes}
- ${CMAKE_SOURCE_DIR}/dep/libmpq/win
- )
-endif()
-
include_directories(${mmap_gen_Includes})
add_executable(mmaps_generator ${mmap_gen_sources})
@@ -46,6 +39,7 @@ target_link_libraries(mmaps_generator
g3dlib
Recast
Detour
+ format
${BZIP2_LIBRARIES}
${ZLIB_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp
index 412ba7a0055..b3d495f8a7e 100644
--- a/src/tools/mmaps_generator/MapBuilder.cpp
+++ b/src/tools/mmaps_generator/MapBuilder.cpp
@@ -19,6 +19,7 @@
#include "PathCommon.h"
#include "MapBuilder.h"
+#include "StringFormat.h"
#include "MapTree.h"
#include "ModelInstance.h"
@@ -28,7 +29,7 @@
#include "DetourCommon.h"
#define MMAP_MAGIC 0x4d4d4150 // 'MMAP'
-#define MMAP_VERSION 6
+#define MMAP_VERSION 7
struct MmapTileHeader
{
@@ -83,13 +84,12 @@ namespace MMAP
{
std::vector<std::string> files;
uint32 mapID, tileX, tileY, tileID, count = 0;
- char filter[12];
printf("Discovering maps... ");
getDirContents(files, "maps");
for (uint32 i = 0; i < files.size(); ++i)
{
- mapID = uint32(atoi(files[i].substr(0,3).c_str()));
+ mapID = uint32(atoi(files[i].substr(0, 4).c_str()));
if (std::find(m_tiles.begin(), m_tiles.end(), mapID) == m_tiles.end())
{
m_tiles.emplace_back(MapTiles(mapID, new std::set<uint32>));
@@ -101,7 +101,7 @@ namespace MMAP
getDirContents(files, "vmaps", "*.vmtree");
for (uint32 i = 0; i < files.size(); ++i)
{
- mapID = uint32(atoi(files[i].substr(0,3).c_str()));
+ mapID = uint32(atoi(files[i].substr(0, 4).c_str()));
if (std::find(m_tiles.begin(), m_tiles.end(), mapID) == m_tiles.end())
{
m_tiles.emplace_back(MapTiles(mapID, new std::set<uint32>));
@@ -117,26 +117,24 @@ namespace MMAP
std::set<uint32>* tiles = (*itr).m_tiles;
mapID = (*itr).m_mapId;
- sprintf(filter, "%03u*.vmtile", mapID);
files.clear();
- getDirContents(files, "vmaps", filter);
+ getDirContents(files, "vmaps", Trinity::StringFormat("%04u*.vmtile", mapID));
for (uint32 i = 0; i < files.size(); ++i)
{
- tileX = uint32(atoi(files[i].substr(7,2).c_str()));
- tileY = uint32(atoi(files[i].substr(4,2).c_str()));
+ tileX = uint32(atoi(files[i].substr(8, 2).c_str()));
+ tileY = uint32(atoi(files[i].substr(5, 2).c_str()));
tileID = StaticMapTree::packTileID(tileY, tileX);
tiles->insert(tileID);
count++;
}
- sprintf(filter, "%03u*", mapID);
files.clear();
- getDirContents(files, "maps", filter);
+ getDirContents(files, "maps", Trinity::StringFormat("%04u*", mapID));
for (uint32 i = 0; i < files.size(); ++i)
{
- tileY = uint32(atoi(files[i].substr(3,2).c_str()));
- tileX = uint32(atoi(files[i].substr(5,2).c_str()));
+ tileY = uint32(atoi(files[i].substr(5, 2).c_str()));
+ tileX = uint32(atoi(files[i].substr(8, 2).c_str()));
tileID = StaticMapTree::packTileID(tileX, tileY);
if (tiles->insert(tileID).second)
@@ -386,12 +384,12 @@ namespace MMAP
buildNavMesh(mapID, navMesh);
if (!navMesh)
{
- printf("[Map %03i] Failed creating navmesh!\n", mapID);
+ printf("[Map %04i] Failed creating navmesh!\n", mapID);
return;
}
// now start building mmtiles for each tile
- printf("[Map %03i] We have %u tiles. \n", mapID, (unsigned int)tiles->size());
+ printf("[Map %04i] We have %u tiles. \n", mapID, (unsigned int)tiles->size());
for (std::set<uint32>::iterator it = tiles->begin(); it != tiles->end(); ++it)
{
uint32 tileX, tileY;
@@ -408,13 +406,13 @@ namespace MMAP
dtFreeNavMesh(navMesh);
}
- printf("[Map %03i] Complete!\n", mapID);
+ printf("[Map %04u] Complete!\n", mapID);
}
/**************************************************************************/
void MapBuilder::buildTile(uint32 mapID, uint32 tileX, uint32 tileY, dtNavMesh* navMesh)
{
- printf("[Map %03i] Building tile [%02u,%02u]\n", mapID, tileX, tileY);
+ printf("[Map %04i] Building tile [%02u,%02u]\n", mapID, tileX, tileY);
MeshData meshData;
@@ -500,22 +498,22 @@ namespace MMAP
navMeshParams.maxPolys = maxPolysPerTile;
navMesh = dtAllocNavMesh();
- printf("[Map %03i] Creating navMesh...\n", mapID);
+ printf("[Map %04u] Creating navMesh...\n", mapID);
if (!navMesh->init(&navMeshParams))
{
- printf("[Map %03i] Failed creating navmesh! \n", mapID);
+ printf("[Map %04u] Failed creating navmesh! \n", mapID);
return;
}
char fileName[25];
- sprintf(fileName, "mmaps/%03u.mmap", mapID);
+ sprintf(fileName, "mmaps/%04u.mmap", mapID);
FILE* file = fopen(fileName, "wb");
if (!file)
{
dtFreeNavMesh(navMesh);
char message[1024];
- sprintf(message, "[Map %03i] Failed to open %s for writing!\n", mapID, fileName);
+ sprintf(message, "[Map %04u] Failed to open %s for writing!\n", mapID, fileName);
perror(message);
return;
}
@@ -531,9 +529,8 @@ namespace MMAP
dtNavMesh* navMesh)
{
// console output
- char tileString[20];
- sprintf(tileString, "[Map %03i] [%02i,%02i]: ", mapID, tileX, tileY);
- printf("%s Building movemap tiles...\n", tileString);
+ std::string tileString = Trinity::StringFormat("[Map %04u] [%02i,%02i]: ", mapID, tileX, tileY);
+ printf("%s Building movemap tiles...\n", tileString.c_str());
IntermediateValues iv;
@@ -614,7 +611,7 @@ namespace MMAP
tile.solid = rcAllocHeightfield();
if (!tile.solid || !rcCreateHeightfield(m_rcContext, *tile.solid, tileCfg.width, tileCfg.height, tileCfg.bmin, tileCfg.bmax, tileCfg.cs, tileCfg.ch))
{
- printf("%s Failed building heightfield! \n", tileString);
+ printf("%s Failed building heightfield! \n", tileString.c_str());
continue;
}
@@ -635,33 +632,33 @@ namespace MMAP
tile.chf = rcAllocCompactHeightfield();
if (!tile.chf || !rcBuildCompactHeightfield(m_rcContext, tileCfg.walkableHeight, tileCfg.walkableClimb, *tile.solid, *tile.chf))
{
- printf("%s Failed compacting heightfield! \n", tileString);
+ printf("%s Failed compacting heightfield! \n", tileString.c_str());
continue;
}
// build polymesh intermediates
if (!rcErodeWalkableArea(m_rcContext, config.walkableRadius, *tile.chf))
{
- printf("%s Failed eroding area! \n", tileString);
+ printf("%s Failed eroding area! \n", tileString.c_str());
continue;
}
if (!rcBuildDistanceField(m_rcContext, *tile.chf))
{
- printf("%s Failed building distance field! \n", tileString);
+ printf("%s Failed building distance field! \n", tileString.c_str());
continue;
}
if (!rcBuildRegions(m_rcContext, *tile.chf, tileCfg.borderSize, tileCfg.minRegionArea, tileCfg.mergeRegionArea))
{
- printf("%s Failed building regions! \n", tileString);
+ printf("%s Failed building regions! \n", tileString.c_str());
continue;
}
tile.cset = rcAllocContourSet();
if (!tile.cset || !rcBuildContours(m_rcContext, *tile.chf, tileCfg.maxSimplificationError, tileCfg.maxEdgeLen, *tile.cset))
{
- printf("%s Failed building contours! \n", tileString);
+ printf("%s Failed building contours! \n", tileString.c_str());
continue;
}
@@ -669,14 +666,14 @@ namespace MMAP
tile.pmesh = rcAllocPolyMesh();
if (!tile.pmesh || !rcBuildPolyMesh(m_rcContext, *tile.cset, tileCfg.maxVertsPerPoly, *tile.pmesh))
{
- printf("%s Failed building polymesh! \n", tileString);
+ printf("%s Failed building polymesh! \n", tileString.c_str());
continue;
}
tile.dmesh = rcAllocPolyMeshDetail();
if (!tile.dmesh || !rcBuildPolyMeshDetail(m_rcContext, *tile.pmesh, *tile.chf, tileCfg.detailSampleDist, tileCfg.detailSampleMaxError, *tile.dmesh))
{
- printf("%s Failed building polymesh detail! \n", tileString);
+ printf("%s Failed building polymesh detail! \n", tileString.c_str());
continue;
}
@@ -699,7 +696,7 @@ namespace MMAP
iv.polyMesh = rcAllocPolyMesh();
if (!iv.polyMesh)
{
- printf("%s alloc iv.polyMesh FIALED!\n", tileString);
+ printf("%s alloc iv.polyMesh FAILED!\n", tileString.c_str());
delete[] pmmerge;
delete[] dmmerge;
delete[] tiles;
@@ -710,7 +707,7 @@ namespace MMAP
iv.polyMeshDetail = rcAllocPolyMeshDetail();
if (!iv.polyMeshDetail)
{
- printf("%s alloc m_dmesh FIALED!\n", tileString);
+ printf("%s alloc m_dmesh FAILED!\n", tileString.c_str());
delete[] pmmerge;
delete[] dmmerge;
delete[] tiles;
@@ -774,12 +771,12 @@ namespace MMAP
// so we have a clear error message
if (params.nvp > DT_VERTS_PER_POLYGON)
{
- printf("%s Invalid verts-per-polygon value! \n", tileString);
+ printf("%s Invalid verts-per-polygon value! \n", tileString.c_str());
break;
}
if (params.vertCount >= 0xffff)
{
- printf("%s Too many vertices! \n", tileString);
+ printf("%s Too many vertices! \n", tileString.c_str());
break;
}
if (!params.vertCount || !params.verts)
@@ -788,7 +785,7 @@ namespace MMAP
// loaded but those models don't span into this tile
// message is an annoyance
- //printf("%sNo vertices to build tile! \n", tileString);
+ //printf("%sNo vertices to build tile! \n", tileString.c_str());
break;
}
if (!params.polyCount || !params.polys ||
@@ -797,47 +794,47 @@ namespace MMAP
// we have flat tiles with no actual geometry - don't build those, its useless
// keep in mind that we do output those into debug info
// drop tiles with only exact count - some tiles may have geometry while having less tiles
- printf("%s No polygons to build on tile! \n", tileString);
+ printf("%s No polygons to build on tile! \n", tileString.c_str());
break;
}
if (!params.detailMeshes || !params.detailVerts || !params.detailTris)
{
- printf("%s No detail mesh to build tile! \n", tileString);
+ printf("%s No detail mesh to build tile! \n", tileString.c_str());
break;
}
- printf("%s Building navmesh tile...\n", tileString);
+ printf("%s Building navmesh tile...\n", tileString.c_str());
if (!dtCreateNavMeshData(&params, &navData, &navDataSize))
{
- printf("%s Failed building navmesh tile! \n", tileString);
+ printf("%s Failed building navmesh tile! \n", tileString.c_str());
break;
}
dtTileRef tileRef = 0;
- printf("%s Adding tile to navmesh...\n", tileString);
+ printf("%s Adding tile to navmesh...\n", tileString.c_str());
// DT_TILE_FREE_DATA tells detour to unallocate memory when the tile
// is removed via removeTile()
dtStatus dtResult = navMesh->addTile(navData, navDataSize, DT_TILE_FREE_DATA, 0, &tileRef);
if (!tileRef || dtResult != DT_SUCCESS)
{
- printf("%s Failed adding tile to navmesh! \n", tileString);
+ printf("%s Failed adding tile to navmesh! \n", tileString.c_str());
break;
}
// file output
char fileName[255];
- sprintf(fileName, "mmaps/%03u%02i%02i.mmtile", mapID, tileY, tileX);
+ sprintf(fileName, "mmaps/%04u%02i%02i.mmtile", mapID, tileY, tileX);
FILE* file = fopen(fileName, "wb");
if (!file)
{
char message[1024];
- sprintf(message, "[Map %03i] Failed to open %s for writing!\n", mapID, fileName);
+ sprintf(message, "[Map %04u] Failed to open %s for writing!\n", mapID, fileName);
perror(message);
navMesh->removeTile(tileRef, NULL, NULL);
break;
}
- printf("%s Writing to file...\n", tileString);
+ printf("%s Writing to file...\n", tileString.c_str());
// write header
MmapTileHeader header;
@@ -898,6 +895,8 @@ namespace MMAP
case 1:
case 530:
case 571:
+ case 870:
+ case 1116:
return true;
default:
break;
@@ -916,6 +915,12 @@ namespace MMAP
case 597: // CraigTest.wdt
case 605: // development_nonweighted.wdt
case 606: // QA_DVD.wdt
+ case 651: // ElevatorSpawnTest.wdt
+ case 1060: // LevelDesignLand-DevOnly.wdt
+ case 1181: // PattyMackTestGarrisonBldgMap.wdt
+ case 1264: // Propland-DevOnly.wdt
+ case 1270: // devland3.wdt
+ case 1427: // PattyMackTestGarrisonBldgMap2.wdt
return true;
default:
if (isTransportMap(mapID))
@@ -926,13 +931,21 @@ namespace MMAP
if (m_skipBattlegrounds)
switch (mapID)
{
- case 30: // AV
+ case 30: // Alterac Valley
case 37: // ?
- case 489: // WSG
- case 529: // AB
- case 566: // EotS
- case 607: // SotA
- case 628: // IoC
+ case 489: // Warsong Gulch
+ case 529: // Arathi Basin
+ case 566: // Eye of the Storm
+ case 607: // Strand of the Ancients
+ case 628: // Isle of Conquest
+ case 726: // Twin Peaks
+ case 727: // Silvershard Mines
+ case 761: // The Battle for Gilneas
+ case 968: // Rated Eye of the Storm
+ case 998: // Temple of Kotmogu
+ case 1010: // CTF3
+ case 1105: // Deepwind Gorge
+ case 1280: // Southshore vs. Tarren Mill
return true;
default:
break;
@@ -970,11 +983,35 @@ namespace MMAP
case 641:
case 642:
case 647:
+ case 662:
case 672:
case 673:
+ case 674:
case 712:
case 713:
case 718:
+ case 738:
+ case 739:
+ case 740:
+ case 741:
+ case 742:
+ case 743:
+ case 747:
+ case 748:
+ case 749:
+ case 750:
+ case 762:
+ case 763:
+ case 765:
+ case 766:
+ case 767:
+ case 1113:
+ case 1132:
+ case 1133:
+ case 1172:
+ case 1173:
+ case 1192:
+ case 1231:
return true;
default:
return false;
@@ -985,7 +1022,7 @@ namespace MMAP
bool MapBuilder::shouldSkipTile(uint32 mapID, uint32 tileX, uint32 tileY)
{
char fileName[255];
- sprintf(fileName, "mmaps/%03u%02i%02i.mmtile", mapID, tileY, tileX);
+ sprintf(fileName, "mmaps/%04u%02i%02i.mmtile", mapID, tileY, tileX);
FILE* file = fopen(fileName, "rb");
if (!file)
return false;
diff --git a/src/tools/mmaps_generator/TerrainBuilder.cpp b/src/tools/mmaps_generator/TerrainBuilder.cpp
index 8f85cfdbe83..125f630bb13 100644
--- a/src/tools/mmaps_generator/TerrainBuilder.cpp
+++ b/src/tools/mmaps_generator/TerrainBuilder.cpp
@@ -80,7 +80,7 @@ struct map_liquidHeader
namespace MMAP
{
- char const* MAP_VERSION_MAGIC = "v1.4";
+ char const* MAP_VERSION_MAGIC = "v1.5";
TerrainBuilder::TerrainBuilder(bool skipLiquid) : m_skipLiquid (skipLiquid){ }
TerrainBuilder::~TerrainBuilder() { }
@@ -134,7 +134,7 @@ namespace MMAP
bool TerrainBuilder::loadMap(uint32 mapID, uint32 tileX, uint32 tileY, MeshData &meshData, Spot portion)
{
char mapFileName[255];
- sprintf(mapFileName, "maps/%03u%02u%02u.map", mapID, tileY, tileX);
+ sprintf(mapFileName, "maps/%04u_%02u_%02u.map", mapID, tileY, tileX);
FILE* mapFile = fopen(mapFileName, "rb");
if (!mapFile)
diff --git a/src/tools/vmap4_extractor/vmapexport.cpp b/src/tools/vmap4_extractor/vmapexport.cpp
index fb2cc0a20d0..9b01ecfb1df 100644
--- a/src/tools/vmap4_extractor/vmapexport.cpp
+++ b/src/tools/vmap4_extractor/vmapexport.cpp
@@ -72,7 +72,7 @@ bool preciseVectorData = false;
//static const char * szWorkDirMaps = ".\\Maps";
const char* szWorkDirWmo = "./Buildings";
-const char* szRawVMAPMagic = "VMAP042";
+const char* szRawVMAPMagic = "VMAP043";
bool OpenCascStorage()
{
@@ -249,7 +249,7 @@ void ParsMapFiles()
char id[10];
for (unsigned int i=0; i<map_count; ++i)
{
- sprintf(id,"%03u",map_ids[i].id);
+ sprintf(id, "%04u", map_ids[i].id);
sprintf(fn,"World\\Maps\\%s\\%s.wdt", map_ids[i].name, map_ids[i].name);
WDTFile WDT(fn,map_ids[i].name);
if(WDT.init(id, map_ids[i].id))
@@ -355,7 +355,7 @@ bool processArgv(int argc, char ** argv, const char *versionString)
int main(int argc, char ** argv)
{
bool success = true;
- const char *versionString = "V4.00 2012_02";
+ const char *versionString = "V4.03 2015_05";
// Use command line arguments, when some
if (!processArgv(argc, argv, versionString))