aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml13
-rw-r--r--contrib/grafana/1_General.json889
-rw-r--r--contrib/grafana/2_Maps.json339
-rw-r--r--contrib/grafana/3_Network.json242
-rw-r--r--dep/recastnavigation/CMakeLists.txt2
-rw-r--r--sql/base/characters_database.sql3
-rw-r--r--sql/updates/characters/6.x/2016_05_26_00_characters.sql1
-rw-r--r--sql/updates/world/6.x/2016_05_26_00_world.sql6
-rw-r--r--sql/updates/world/6.x/2016_05_26_01_world.sql35
-rw-r--r--sql/updates/world/6.x/2016_05_26_02_world.sql7
-rw-r--r--sql/updates/world/6.x/2016_05_26_03_world.sql34
-rw-r--r--sql/updates/world/6.x/2016_05_26_04_world.sql13
-rw-r--r--sql/updates/world/6.x/2016_05_26_05_world.sql2
-rw-r--r--sql/updates/world/6.x/2016_05_26_06_world.sql8
-rw-r--r--sql/updates/world/6.x/2016_05_26_07_world.sql5
-rw-r--r--sql/updates/world/6.x/2016_05_27_00_world.sql2
-rw-r--r--sql/updates/world/6.x/2016_05_30_00_world.sql20
-rw-r--r--sql/updates/world/6.x/2016_05_30_01_world.sql2
-rw-r--r--sql/updates/world/6.x/2016_05_30_02_world.sql2
-rw-r--r--sql/updates/world/6.x/2016_05_30_03_world.sql3
-rw-r--r--sql/updates/world/6.x/2016_05_30_04_world.sql17
-rw-r--r--sql/updates/world/6.x/2016_05_31_00_world.sql68
-rw-r--r--sql/updates/world/6.x/2016_05_31_01_world.sql46
-rw-r--r--sql/updates/world/6.x/2016_05_31_02_world.sql253
-rw-r--r--sql/updates/world/6.x/2016_05_31_03_world.sql325
-rw-r--r--sql/updates/world/6.x/2016_05_31_04_world.sql4
-rw-r--r--sql/updates/world/6.x/2016_05_31_05_world.sql13
-rw-r--r--sql/updates/world/6.x/2016_05_31_06_world.sql9
-rw-r--r--sql/updates/world/6.x/2016_06_05_00_world.sql3
-rw-r--r--sql/updates/world/6.x/2016_06_05_01_world.sql3
-rw-r--r--sql/updates/world/6.x/2016_06_05_02_world.sql26
-rw-r--r--sql/updates/world/6.x/2016_06_05_03_world.sql4
-rw-r--r--sql/updates/world/6.x/2016_06_05_04_world.sql3
-rw-r--r--sql/updates/world/6.x/2016_06_07_00_world.sql2
-rw-r--r--sql/updates/world/6.x/2016_06_07_01_world.sql2
-rw-r--r--sql/updates/world/6.x/2016_06_07_02_world.sql133
-rw-r--r--sql/updates/world/6.x/2016_06_07_03_world.sql10
-rw-r--r--sql/updates/world/6.x/2016_06_07_04_world.sql10
-rw-r--r--sql/updates/world/6.x/2016_06_07_05_world.sql16
-rw-r--r--sql/updates/world/6.x/2016_06_07_06_world.sql104
-rw-r--r--sql/updates/world/6.x/2016_06_10_00_world.sql1212
-rw-r--r--sql/updates/world/6.x/2016_06_13_00_world.sql306
-rw-r--r--sql/updates/world/6.x/2016_06_13_01_world.sql590
-rw-r--r--sql/updates/world/6.x/2016_06_13_02_world.sql430
-rw-r--r--sql/updates/world/6.x/2016_06_13_03_world.sql448
-rw-r--r--sql/updates/world/6.x/2016_06_13_04_world.sql837
-rw-r--r--sql/updates/world/6.x/2016_06_13_05_world.sql268
-rw-r--r--sql/updates/world/6.x/2016_06_13_06_world.sql6
-rw-r--r--sql/updates/world/6.x/2016_06_13_07_world.sql261
-rw-r--r--src/common/Collision/Maps/MapTree.cpp5
-rw-r--r--src/common/Metric/Metric.cpp235
-rw-r--r--src/common/Metric/Metric.h141
-rw-r--r--src/common/Utilities/Containers.h4
-rw-r--r--src/server/bnetserver/REST/LoginRESTService.h2
-rw-r--r--src/server/bnetserver/Server/Session.cpp2
-rw-r--r--src/server/database/Database/Implementation/CharacterDatabase.cpp12
-rw-r--r--src/server/database/Database/Implementation/CharacterDatabase.h3
-rw-r--r--src/server/database/Database/Implementation/LoginDatabase.cpp2
-rw-r--r--src/server/database/Updater/UpdateFetcher.cpp46
-rw-r--r--src/server/game/AI/CoreAI/GameObjectAI.h2
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp2
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.h2
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.cpp6
-rw-r--r--src/server/game/Battlefield/Battlefield.cpp2
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp9
-rw-r--r--src/server/game/Battlegrounds/Battleground.h4
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp13
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAB.h7
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp13
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAV.h7
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp15
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundEY.h7
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp12
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundIC.h7
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp13
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundWS.h7
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp6
-rw-r--r--src/server/game/Conditions/ConditionMgr.h2
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp26
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h2
-rw-r--r--src/server/game/Entities/Object/Object.cpp2
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.h16
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp379
-rw-r--r--src/server/game/Entities/Pet/Pet.h18
-rw-r--r--src/server/game/Entities/Player/Player.cpp42
-rw-r--r--src/server/game/Entities/Player/Player.h4
-rw-r--r--src/server/game/Entities/Taxi/TaxiPathGraph.cpp5
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp132
-rw-r--r--src/server/game/Entities/Unit/Unit.h4
-rw-r--r--src/server/game/Garrison/Garrison.cpp5
-rw-r--r--src/server/game/Globals/ObjectAccessor.cpp13
-rw-r--r--src/server/game/Globals/ObjectAccessor.h3
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp19
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp5
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp32
-rw-r--r--src/server/game/Handlers/PetHandler.cpp17
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp2
-rw-r--r--src/server/game/Maps/Map.cpp2
-rw-r--r--src/server/game/Maps/MapScripts.cpp8
-rw-r--r--src/server/game/Maps/TransportMgr.cpp2
-rw-r--r--src/server/game/Maps/ZoneScript.h2
-rw-r--r--src/server/game/Miscellaneous/Language.h2
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h264
-rw-r--r--src/server/game/Movement/PathGenerator.cpp3
-rw-r--r--src/server/game/Server/Packets/BattlenetPackets.h4
-rw-r--r--src/server/game/Server/Packets/BlackMarketPackets.h4
-rw-r--r--src/server/game/Server/Packets/GuildFinderPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp23
-rw-r--r--src/server/game/Server/Packets/MovementPackets.h32
-rw-r--r--src/server/game/Server/Packets/PetPackets.cpp21
-rw-r--r--src/server/game/Server/Packets/PetPackets.h13
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp10
-rw-r--r--src/server/game/Server/WorldSession.cpp10
-rw-r--r--src/server/game/Server/WorldSession.h2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h31
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp107
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h4
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp4
-rw-r--r--src/server/game/Spells/Spell.cpp24
-rw-r--r--src/server/game/Spells/SpellEffects.cpp26
-rw-r--r--src/server/game/Spells/SpellHistory.cpp25
-rw-r--r--src/server/game/Spells/SpellInfo.cpp5
-rw-r--r--src/server/game/World/World.cpp8
-rw-r--r--src/server/scripts/Commands/cs_gobject.cpp14
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp12
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp4
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp30
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp5
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp4
-rw-r--r--src/server/scripts/Pet/pet_mage.cpp4
-rw-r--r--src/server/scripts/Spells/spell_shaman.cpp2
-rw-r--r--src/server/scripts/World/go_scripts.cpp9
-rw-r--r--src/server/worldserver/Main.cpp11
-rw-r--r--src/server/worldserver/worldserver.conf.dist42
138 files changed, 8443 insertions, 694 deletions
diff --git a/.travis.yml b/.travis.yml
index 3edd9096ca8..17131315324 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,3 +1,6 @@
+sudo: required
+dist: trusty
+
language: cpp
compiler:
- clang
@@ -6,16 +9,10 @@ git:
depth: 1
before_install:
- - echo "yes" | sudo add-apt-repository ppa:george-edison55/precise-backports
- - echo "yes" | sudo add-apt-repository ppa:boost-latest/ppa
- - echo "yes" | sudo add-apt-repository ppa:ubuntu-toolchain-r/test
- - echo "yes" | sudo add-apt-repository 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.5 main'
- - wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
- - sudo apt-get -qq update
- - sudo apt-get -qq install build-essential libtool gcc-4.8 g++-4.8 make cmake cmake-data openssl clang-3.5
+ - sudo apt-get -qq install build-essential libtool make cmake cmake-data openssl
- sudo apt-get -qq install libssl-dev libmysqlclient-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev
- sudo apt-get -qq install libboost1.55-dev libboost-thread1.55-dev libboost-filesystem1.55-dev libboost-system1.55-dev libboost-program-options1.55-dev libboost-iostreams1.55-dev libboost-regex1.55-dev
- - export CC=clang-3.5 CXX=clang++-3.5
+ - sudo apt-get -qq install mysql-server
- git config user.email "travis@build.bot" && git config user.name "Travis CI"
- git tag -a -m "Travis build" init
diff --git a/contrib/grafana/1_General.json b/contrib/grafana/1_General.json
new file mode 100644
index 00000000000..e54791f190e
--- /dev/null
+++ b/contrib/grafana/1_General.json
@@ -0,0 +1,889 @@
+{
+ "id": 1,
+ "title": "General info",
+ "originalTitle": "General info",
+ "tags": [],
+ "style": "dark",
+ "timezone": "browser",
+ "editable": true,
+ "hideControls": false,
+ "sharedCrosshair": false,
+ "rows": [
+ {
+ "collapse": false,
+ "editable": true,
+ "height": "25px",
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Influx",
+ "editable": true,
+ "error": false,
+ "format": "none",
+ "id": 5,
+ "interval": null,
+ "isNew": true,
+ "links": [],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "auto"
+ ],
+ "type": "time"
+ }
+ ],
+ "measurement": "online_players",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "type": "field",
+ "params": [
+ "value"
+ ]
+ },
+ {
+ "type": "last",
+ "params": []
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "realm",
+ "operator": "=~",
+ "value": "/^$realm$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": "",
+ "title": "Online players",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current",
+ "timeFrom": null,
+ "timeShift": null,
+ "hideTimeOverride": false
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Influx",
+ "editable": true,
+ "error": false,
+ "format": "none",
+ "id": 6,
+ "interval": null,
+ "isNew": true,
+ "links": [],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "auto"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "update_time_diff",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "realm",
+ "operator": "=~",
+ "value": "/^$realm$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": "",
+ "title": "Update diff (avg)",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg",
+ "timeFrom": "1m"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Influx",
+ "editable": true,
+ "error": false,
+ "format": "none",
+ "id": 7,
+ "interval": null,
+ "isNew": true,
+ "links": [],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "auto"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "update_time_diff",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": "",
+ "title": "Update diff (avg)",
+ "transparent": false,
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg",
+ "timeFrom": "5m"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "Influx",
+ "editable": true,
+ "error": false,
+ "format": "none",
+ "id": 8,
+ "interval": null,
+ "isNew": true,
+ "links": [],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "targets": [
+ {
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "auto"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "update_time_diff",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "realm",
+ "operator": "=~",
+ "value": "/^$realm$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": "",
+ "title": "Update diff (avg)",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg",
+ "timeFrom": "15m",
+ "timeShift": null
+ }
+ ],
+ "title": "New row"
+ },
+ {
+ "collapse": false,
+ "editable": true,
+ "height": "250px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "Influx",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {
+ "leftLogBase": 1,
+ "leftMax": null,
+ "leftMin": null,
+ "rightLogBase": 1,
+ "rightMax": null,
+ "rightMin": null,
+ "threshold1": null,
+ "threshold1Color": "rgba(216, 200, 27, 0.27)",
+ "threshold2": null,
+ "threshold2Color": "rgba(234, 112, 112, 0.22)"
+ },
+ "id": 1,
+ "isNew": true,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Update diff",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "update_time_diff",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"update_time_diff\" WHERE \"realm\" =~ /$realm$/ AND $timeFilter GROUP BY time($interval) fill(null)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "realm",
+ "operator": "=~",
+ "value": "/$realm$/"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Update diff",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "x-axis": true,
+ "xaxis": {
+ "show": true
+ },
+ "y-axis": true,
+ "y_formats": [
+ "ms",
+ "short"
+ ],
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "title": "Row"
+ },
+ {
+ "collapse": false,
+ "editable": true,
+ "height": "250px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "Influx",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {
+ "leftLogBase": 1,
+ "leftMax": null,
+ "leftMin": null,
+ "rightLogBase": 1,
+ "rightMax": null,
+ "rightMin": null,
+ "threshold1": null,
+ "threshold1Color": "rgba(216, 200, 27, 0.27)",
+ "threshold2": null,
+ "threshold2Color": "rgba(234, 112, 112, 0.22)"
+ },
+ "id": 4,
+ "isNew": true,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Online players",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "online_players",
+ "policy": "default",
+ "query": "SELECT mean(\"value\") FROM \"online_players\" WHERE \"realm\" =~ /$realm$/ AND $timeFilter GROUP BY time($interval) fill(null)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "realm",
+ "operator": "=~",
+ "value": "/$realm$/"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Online players",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "x-axis": true,
+ "xaxis": {
+ "show": true
+ },
+ "y-axis": true,
+ "y_formats": [
+ "short",
+ "short"
+ ],
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "title": "New row"
+ },
+ {
+ "collapse": false,
+ "editable": true,
+ "height": "250px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "Influx",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {
+ "leftLogBase": 1,
+ "leftMax": null,
+ "leftMin": null,
+ "rightLogBase": 1,
+ "rightMax": null,
+ "rightMin": null,
+ "threshold1": null,
+ "threshold1Color": "rgba(216, 200, 27, 0.27)",
+ "threshold2": null,
+ "threshold2Color": "rgba(234, 112, 112, 0.22)"
+ },
+ "id": 3,
+ "isNew": true,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Logouts",
+ "transform": "negative-Y"
+ }
+ ],
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Logins",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "player_events",
+ "policy": "default",
+ "query": "SELECT count(\"text\") FROM \"player_events\" WHERE \"realm\" =~ /$realm$/ AND \"title\" = 'Login' AND $timeFilter GROUP BY time($interval) fill(0)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "text"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "count"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "realm",
+ "operator": "=",
+ "value": "Trinity"
+ }
+ ]
+ },
+ {
+ "alias": "Logouts",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "policy": "default",
+ "query": "SELECT count(\"text\") FROM \"player_events\" WHERE \"realm\" =~ /$realm$/ AND \"title\" = 'Logout' AND $timeFilter GROUP BY time($interval) fill(0)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Player login/logout",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "x-axis": true,
+ "xaxis": {
+ "show": true
+ },
+ "y-axis": true,
+ "y_formats": [
+ "short",
+ "short"
+ ],
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "title": "New row"
+ }
+ ],
+ "time": {
+ "from": "now-15m",
+ "to": "now"
+ },
+ "timepicker": {
+ "now": true,
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "templating": {
+ "list": [
+ {
+ "allFormat": "regex values",
+ "current": {
+ "text": "Trinity",
+ "value": "Trinity"
+ },
+ "datasource": "Influx",
+ "includeAll": false,
+ "multi": false,
+ "multiFormat": "regex values",
+ "name": "realm",
+ "options": [
+ {
+ "text": "Trinity",
+ "value": "Trinity",
+ "selected": true
+ }
+ ],
+ "query": "show tag values from events with key = realm",
+ "refresh": 1,
+ "regex": "",
+ "type": "query"
+ }
+ ]
+ },
+ "annotations": {
+ "list": [
+ {
+ "datasource": "Influx",
+ "enable": true,
+ "iconColor": "#C0C6BE",
+ "iconSize": 13,
+ "lineColor": "rgba(255, 96, 96, 0.592157)",
+ "name": "Global Events",
+ "query": "select title, text from events where $timeFilter and realm =~ /$realm$/",
+ "showLine": true,
+ "textColumn": "text",
+ "titleColumn": "title"
+ }
+ ]
+ },
+ "refresh": "1m",
+ "schemaVersion": 12,
+ "version": 7,
+ "links": []
+} \ No newline at end of file
diff --git a/contrib/grafana/2_Maps.json b/contrib/grafana/2_Maps.json
new file mode 100644
index 00000000000..6c2cecb1035
--- /dev/null
+++ b/contrib/grafana/2_Maps.json
@@ -0,0 +1,339 @@
+{
+ "id": 2,
+ "title": "Maps, vmaps and mmaps",
+ "originalTitle": "Maps, vmaps and mmaps",
+ "tags": [],
+ "style": "dark",
+ "timezone": "browser",
+ "editable": true,
+ "hideControls": false,
+ "sharedCrosshair": false,
+ "rows": [
+ {
+ "collapse": false,
+ "editable": true,
+ "height": "250px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "Influx",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {
+ "leftLogBase": 1,
+ "leftMax": null,
+ "leftMin": null,
+ "rightLogBase": 1,
+ "rightMax": null,
+ "rightMin": null,
+ "threshold1": null,
+ "threshold1Color": "rgba(216, 200, 27, 0.27)",
+ "threshold2": null,
+ "threshold2Color": "rgba(234, 112, 112, 0.22)"
+ },
+ "id": 2,
+ "isNew": true,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Unload tile",
+ "transform": "negative-Y"
+ }
+ ],
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Load tile",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "query": "SELECT count(\"title\") FROM \"map_events\" WHERE \"realm\" =~ /$realm$/ AND \"title\" = 'LoadMapTile' AND $timeFilter GROUP BY time($interval) fill(0)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ },
+ {
+ "alias": "Unload tile",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "query": "SELECT count(\"title\") FROM \"map_events\" WHERE \"realm\" =~ /$realm$/ AND \"title\" = 'UnloadMapTile' AND $timeFilter GROUP BY time($interval) fill(0)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Map",
+ "tooltip": {
+ "shared": true,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "x-axis": true,
+ "y-axis": true,
+ "y_formats": [
+ "short",
+ "short"
+ ]
+ }
+ ],
+ "title": "Row"
+ },
+ {
+ "collapse": false,
+ "editable": true,
+ "height": "250px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "Influx",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {
+ "leftLogBase": 1,
+ "leftMax": null,
+ "leftMin": null,
+ "rightLogBase": 1,
+ "rightMax": null,
+ "rightMin": null,
+ "threshold1": null,
+ "threshold1Color": "rgba(216, 200, 27, 0.27)",
+ "threshold2": null,
+ "threshold2Color": "rgba(234, 112, 112, 0.22)"
+ },
+ "id": 1,
+ "isNew": true,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Pathfinding queries",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "query": "SELECT count(\"title\") FROM \"mmap_events\" WHERE \"realm\" =~ /$realm$/ AND \"title\" = 'CalculatePath' AND $timeFilter GROUP BY time($interval) fill(0)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "MMap",
+ "tooltip": {
+ "shared": true,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "x-axis": true,
+ "y-axis": true,
+ "y_formats": [
+ "short",
+ "short"
+ ]
+ }
+ ],
+ "title": "New row"
+ }
+ ],
+ "time": {
+ "from": "now-15m",
+ "to": "now"
+ },
+ "timepicker": {
+ "now": true,
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "templating": {
+ "list": [
+ {
+ "allFormat": "regex values",
+ "current": {
+ "text": "Trinity",
+ "value": "Trinity"
+ },
+ "datasource": "Influx",
+ "includeAll": false,
+ "multi": false,
+ "multiFormat": "regex values",
+ "name": "realm",
+ "options": [
+ {
+ "text": "Trinity",
+ "value": "Trinity",
+ "selected": true
+ }
+ ],
+ "query": "show tag values from events with key = realm",
+ "refresh": true,
+ "type": "query"
+ }
+ ]
+ },
+ "annotations": {
+ "list": [
+ {
+ "datasource": "Influx",
+ "enable": true,
+ "iconColor": "#C0C6BE",
+ "iconSize": 13,
+ "lineColor": "rgba(255, 96, 96, 0.592157)",
+ "name": "Global Events",
+ "query": "select title, text from events where $timeFilter and realm =~ /$realm$/",
+ "showLine": true,
+ "textColumn": "text",
+ "titleColumn": "title"
+ }
+ ]
+ },
+ "refresh": "1m",
+ "schemaVersion": 8,
+ "version": 11,
+ "links": []
+} \ No newline at end of file
diff --git a/contrib/grafana/3_Network.json b/contrib/grafana/3_Network.json
new file mode 100644
index 00000000000..98c190e1185
--- /dev/null
+++ b/contrib/grafana/3_Network.json
@@ -0,0 +1,242 @@
+{
+ "id": 3,
+ "title": "Network",
+ "originalTitle": "Network",
+ "tags": [],
+ "style": "dark",
+ "timezone": "browser",
+ "editable": true,
+ "hideControls": false,
+ "sharedCrosshair": false,
+ "rows": [
+ {
+ "collapse": false,
+ "editable": true,
+ "height": "250px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "Influx",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {
+ "leftLogBase": 1,
+ "leftMax": null,
+ "leftMin": null,
+ "rightLogBase": 1,
+ "rightMax": null,
+ "rightMin": null,
+ "threshold1": null,
+ "threshold1Color": "rgba(216, 200, 27, 0.27)",
+ "threshold2": null,
+ "threshold2Color": "rgba(234, 112, 112, 0.22)"
+ },
+ "id": 1,
+ "isNew": true,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Processed packets",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "processed_packets",
+ "query": "SELECT sum(\"value\") FROM \"processed_packets\" WHERE \"realm\" =~ /$realm$/ AND $timeFilter GROUP BY time($interval) fill(0)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "sum"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "realm",
+ "operator": "=~",
+ "value": "/$realm$/"
+ }
+ ]
+ },
+ {
+ "alias": "Processed packets / mean per session",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "processed_packets",
+ "query": "SELECT mean(\"value\") FROM \"processed_packets\" WHERE \"realm\" =~ /$realm$/ AND $timeFilter GROUP BY time($interval) fill(0)",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "realm",
+ "operator": "=~",
+ "value": "/$realm$/"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Processed packets",
+ "tooltip": {
+ "shared": true,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "x-axis": true,
+ "y-axis": true,
+ "y_formats": [
+ "short",
+ "short"
+ ]
+ }
+ ],
+ "title": "Row"
+ }
+ ],
+ "time": {
+ "from": "now-15m",
+ "to": "now"
+ },
+ "timepicker": {
+ "now": true,
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "templating": {
+ "list": [
+ {
+ "allFormat": "regex values",
+ "current": {
+ "text": "Trinity",
+ "value": "Trinity"
+ },
+ "datasource": "Influx",
+ "includeAll": false,
+ "multi": false,
+ "multiFormat": "regex values",
+ "name": "realm",
+ "options": [
+ {
+ "text": "Trinity",
+ "value": "Trinity",
+ "selected": true
+ }
+ ],
+ "query": "show tag values from events with key = realm",
+ "refresh": true,
+ "type": "query"
+ }
+ ]
+ },
+ "annotations": {
+ "list": [
+ {
+ "datasource": "Influx",
+ "enable": true,
+ "iconColor": "#C0C6BE",
+ "iconSize": 13,
+ "lineColor": "rgba(255, 96, 96, 0.592157)",
+ "name": "Global Events",
+ "query": "select title, text from events where $timeFilter and realm =~ /$realm$/",
+ "showLine": true,
+ "textColumn": "text",
+ "titleColumn": "title"
+ }
+ ]
+ },
+ "refresh": "1m",
+ "schemaVersion": 8,
+ "version": 7,
+ "links": []
+} \ No newline at end of file
diff --git a/dep/recastnavigation/CMakeLists.txt b/dep/recastnavigation/CMakeLists.txt
index 4a406f7833c..dd28884eb1f 100644
--- a/dep/recastnavigation/CMakeLists.txt
+++ b/dep/recastnavigation/CMakeLists.txt
@@ -1,4 +1,4 @@
-#
+# Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
# Copyright (C) 2005-2011 MaNGOS project <http://getmangos.com/>
#
# This program is free software; you can redistribute it and/or modify
diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql
index 1f20780bc92..1467f83d6a8 100644
--- a/sql/base/characters_database.sql
+++ b/sql/base/characters_database.sql
@@ -1071,6 +1071,7 @@ CREATE TABLE `character_pet` (
`curmana` int(10) unsigned NOT NULL DEFAULT '0',
`savetime` int(10) unsigned NOT NULL DEFAULT '0',
`abdata` text,
+ `specialization` smallint(5) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `owner` (`owner`),
KEY `idx_slot` (`slot`)
@@ -3136,7 +3137,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 15:55:55',0),('2014_10_23_00_characters.sql','E2AC4758133EE19B7F08464A445802154D1261C8','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_23_01_characters.sql','20029E6323D9773B32C34D84FFED1711CC60F09F','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_23_02_characters.sql','8A7A16886EE71E7ACDDB3DDA6D0ECAC2FD2FDCA8','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_24_00_characters.sql','D008FE81AE844FCA686439D6ECC5108FB0DD1EB9','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_25_00_characters.sql','A39C7BE46686B54776BDAB9D7A882D91EDEC51A4','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_26_00_characters.sql','C787954CC35FE34B4101FDE6527F14C027F4947C','ARCHIVED','2015-03-21 15:55:55',0),('2014_11_12_00_characters.sql','B160BB2313F1BD5F3B076A5A9279DC10D4796E34','ARCHIVED','2015-03-21 15:55:55',0),('2014_12_23_00_characters.sql','3D9D648B2387B357F4BD090B33F80682F7924882','ARCHIVED','2015-03-21 15:55:55',0),('2014_12_28_00_characters.sql','5362922FF4483A336311D73082A5727309CD9219','ARCHIVED','2015-03-21 15:55:55',0),('2014_12_31_00_characters.sql','498DDF2DD936CF156D74A8208DC93DCE9FCAB5AA','ARCHIVED','2015-03-21 15:55:55',0),('2015_01_02_00_characters.sql','E5940BE836F253982E07930120422E598D08BDE1','ARCHIVED','2015-03-21 15:55:55',0),('2015_01_10_00_characters.sql','30796056C8623699B2FE1BF626A19D38262E9284','ARCHIVED','2015-03-21 15:55:55',0),('2015_01_16_00_characters.sql','96642760A54C8D799AAFE438049A63AA521656F2','ARCHIVED','2015-03-21 15:55:55',0),('2015_01_27_00_characters.sql','EB710E3EB9F2CAFD84AB62CDC84E898403A80A4F','ARCHIVED','2015-03-21 15:55:55',0),('2015_02_13_00_characters.sql','405BEB4ED207DC6076442A37EE2AFB1F21E274A0','ARCHIVED','2015-03-21 15:55:55',0),('2015_02_13_01_characters.sql','35F582D4F33BF55D1685A1BA89273ED895FD09C5','ARCHIVED','2015-03-21 15:55:55',0),('2015_02_17_00_characters.sql','8D21FC5A55BF8B55D6DCDCE5F02CF2B640230E94','ARCHIVED','2015-03-21 15:55:55',0),('2015_03_10_00_characters.sql','E565B89B145C340067742DFF2DEF1B74F5F1BD4E','ARCHIVED','2015-03-21 15:55:55',0),('2015_03_20_00_characters.sql','B761760804EA73BD297F296C5C1919687DF7191C','ARCHIVED','2015-03-21 15:55:55',0),('2015_03_20_01_characters.sql','20BD68468C57FCF7E665B4DA185DCD52FACE8B3F','ARCHIVED','2015-03-21 15:55:55',0),('2015_03_20_02_characters.sql','0296995DCD3676BA9AE6024CA7C91C5F39D927A3','ARCHIVED','2015-03-21 15:56:46',0),('2015_03_29_00_characters.sql','95D6A46BB746A8BD3EE3FE2086DF1A07F7C33B92','ARCHIVED','2015-05-02 15:43:06',0),('2015_04_21_00_characters.sql','F2032B9BF4EDA7EDE5065554724ED392FD91657D','ARCHIVED','2015-05-02 15:43:06',0),('2015_04_28_00_characters.sql','949F62DB3A3461D420A1230ECF7A6A3ED6435703','ARCHIVED','2015-05-02 15:43:06',0),('2015_05_08_00_characters.sql','0F14B7821618D1C872625B6EDDAA9A667B211167','ARCHIVED','2015-07-10 19:32:17',0),('2015_05_22_00_characters.sql','65B82152413FAB23BE413656E59A486A74447FF7','ARCHIVED','2015-07-10 19:32:17',0),('2015_07_08_00_characters.sql','DAB25360ACB5244C8F8E6214CF6BD97160588A5B','ARCHIVED','2015-07-10 19:32:17',0),('2015_07_11_00_characters.sql','B421B6C0E57BD0FD587071358863D9DABF4BA849','ARCHIVED','2015-07-13 21:50:02',0),('2015_07_12_00_characters.sql','E98E7FD61EF6426E7EDE8ED9AD8C15D8D7132589','ARCHIVED','2015-07-13 21:50:02',0),('2015_07_28_00_characters.sql','0711BC3A658D189EF71B0CB68DCFF2E9B781C4A0','ARCHIVED','2015-07-29 16:23:56',0),('2015_08_08_00_characters.sql','EA12BB2DC24FAF2300A96D0888A45BBEA158D5DC','ARCHIVED','2015-08-08 16:34:07',0),('2015_08_12_00_characters.sql','4FD7F89FE5DA51D4E0C33E520719986AA3EBD31B','ARCHIVED','2015-08-12 12:35:20',0),('2015_09_05_00_characters.sql','4C22BB29365BE4B6B95E64DAD84B63CA002304EA','ARCHIVED','2015-09-05 12:35:20',0),('2015_09_09_00_characters.sql','AFC32E693BC17CFD9A17919FE5317B8FE337ACAD','ARCHIVED','2015-09-09 12:35:20',0),('2015_09_10_00_characters.sql','4555A7F35C107E54C13D74D20F141039ED42943E','ARCHIVED','2015-09-10 22:50:42',0),('2015_10_16_00_characters.sql','E3A3FFF0CB42F04A8DCF0CE4362143C16E2083AF','ARCHIVED','2015-10-15 21:54:11',0),('2015_11_06_00_characters_2015_10_12_00.sql','D6F9927BDED72AD0A81D6EC2C6500CBC34A39FA2','ARCHIVED','2015-11-06 23:43:27',0),('2015_11_08_00_characters.sql','0ACDD35EC9745231BCFA701B78056DEF94D0CC53','ARCHIVED','2015-11-08 00:51:45',15),('2015_11_23_00_characters.sql','9FC828E9E48E8E2E9B99A5A0073D6614C5BFC6B5','ARCHIVED','2015-11-22 23:27:34',0),('2016_01_05_00_characters.sql','0EAD24977F40DE2476B4567DA2B477867CC0DA1A','ARCHIVED','2016-01-04 23:07:40',0),('2016_04_05_00_characters_2016_02_10_00_characters.sql','F1B4DA202819CABC7319A4470A2D224A34609E97','ARCHIVED','2016-04-05 20:34:41',0),('2016_04_11_00_characters.sql','0ACDD35EC9745231BCFA701B78056DEF94D0CC53','RELEASED','2016-04-11 02:24:14',30),('2016_04_11_01_characters.sql','CA90F6D99C1EEA7B25BD58BC8368A8D78234BBEF','RELEASED','2016-04-11 18:14:18',0),('2016_05_07_00_characters.sql','D1DB5557B21A552C935564D829B4E98B98149077','RELEASED','2016-05-07 00:00:00',0);
+INSERT INTO `updates` VALUES ('2014_10_20_00_characters.sql','A5882DA0979CF4DAE33DA011EBAA006C24BE7230','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_23_00_characters.sql','E2AC4758133EE19B7F08464A445802154D1261C8','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_23_01_characters.sql','20029E6323D9773B32C34D84FFED1711CC60F09F','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_23_02_characters.sql','8A7A16886EE71E7ACDDB3DDA6D0ECAC2FD2FDCA8','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_24_00_characters.sql','D008FE81AE844FCA686439D6ECC5108FB0DD1EB9','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_25_00_characters.sql','A39C7BE46686B54776BDAB9D7A882D91EDEC51A4','ARCHIVED','2015-03-21 15:55:55',0),('2014_10_26_00_characters.sql','C787954CC35FE34B4101FDE6527F14C027F4947C','ARCHIVED','2015-03-21 15:55:55',0),('2014_11_12_00_characters.sql','B160BB2313F1BD5F3B076A5A9279DC10D4796E34','ARCHIVED','2015-03-21 15:55:55',0),('2014_12_23_00_characters.sql','3D9D648B2387B357F4BD090B33F80682F7924882','ARCHIVED','2015-03-21 15:55:55',0),('2014_12_28_00_characters.sql','5362922FF4483A336311D73082A5727309CD9219','ARCHIVED','2015-03-21 15:55:55',0),('2014_12_31_00_characters.sql','498DDF2DD936CF156D74A8208DC93DCE9FCAB5AA','ARCHIVED','2015-03-21 15:55:55',0),('2015_01_02_00_characters.sql','E5940BE836F253982E07930120422E598D08BDE1','ARCHIVED','2015-03-21 15:55:55',0),('2015_01_10_00_characters.sql','30796056C8623699B2FE1BF626A19D38262E9284','ARCHIVED','2015-03-21 15:55:55',0),('2015_01_16_00_characters.sql','96642760A54C8D799AAFE438049A63AA521656F2','ARCHIVED','2015-03-21 15:55:55',0),('2015_01_27_00_characters.sql','EB710E3EB9F2CAFD84AB62CDC84E898403A80A4F','ARCHIVED','2015-03-21 15:55:55',0),('2015_02_13_00_characters.sql','405BEB4ED207DC6076442A37EE2AFB1F21E274A0','ARCHIVED','2015-03-21 15:55:55',0),('2015_02_13_01_characters.sql','35F582D4F33BF55D1685A1BA89273ED895FD09C5','ARCHIVED','2015-03-21 15:55:55',0),('2015_02_17_00_characters.sql','8D21FC5A55BF8B55D6DCDCE5F02CF2B640230E94','ARCHIVED','2015-03-21 15:55:55',0),('2015_03_10_00_characters.sql','E565B89B145C340067742DFF2DEF1B74F5F1BD4E','ARCHIVED','2015-03-21 15:55:55',0),('2015_03_20_00_characters.sql','B761760804EA73BD297F296C5C1919687DF7191C','ARCHIVED','2015-03-21 15:55:55',0),('2015_03_20_01_characters.sql','20BD68468C57FCF7E665B4DA185DCD52FACE8B3F','ARCHIVED','2015-03-21 15:55:55',0),('2015_03_20_02_characters.sql','0296995DCD3676BA9AE6024CA7C91C5F39D927A3','ARCHIVED','2015-03-21 15:56:46',0),('2015_03_29_00_characters.sql','95D6A46BB746A8BD3EE3FE2086DF1A07F7C33B92','ARCHIVED','2015-05-02 15:43:06',0),('2015_04_21_00_characters.sql','F2032B9BF4EDA7EDE5065554724ED392FD91657D','ARCHIVED','2015-05-02 15:43:06',0),('2015_04_28_00_characters.sql','949F62DB3A3461D420A1230ECF7A6A3ED6435703','ARCHIVED','2015-05-02 15:43:06',0),('2015_05_08_00_characters.sql','0F14B7821618D1C872625B6EDDAA9A667B211167','ARCHIVED','2015-07-10 19:32:17',0),('2015_05_22_00_characters.sql','65B82152413FAB23BE413656E59A486A74447FF7','ARCHIVED','2015-07-10 19:32:17',0),('2015_07_08_00_characters.sql','DAB25360ACB5244C8F8E6214CF6BD97160588A5B','ARCHIVED','2015-07-10 19:32:17',0),('2015_07_11_00_characters.sql','B421B6C0E57BD0FD587071358863D9DABF4BA849','ARCHIVED','2015-07-13 21:50:02',0),('2015_07_12_00_characters.sql','E98E7FD61EF6426E7EDE8ED9AD8C15D8D7132589','ARCHIVED','2015-07-13 21:50:02',0),('2015_07_28_00_characters.sql','0711BC3A658D189EF71B0CB68DCFF2E9B781C4A0','ARCHIVED','2015-07-29 16:23:56',0),('2015_08_08_00_characters.sql','EA12BB2DC24FAF2300A96D0888A45BBEA158D5DC','ARCHIVED','2015-08-08 16:34:07',0),('2015_08_12_00_characters.sql','4FD7F89FE5DA51D4E0C33E520719986AA3EBD31B','ARCHIVED','2015-08-12 12:35:20',0),('2015_09_05_00_characters.sql','4C22BB29365BE4B6B95E64DAD84B63CA002304EA','ARCHIVED','2015-09-05 12:35:20',0),('2015_09_09_00_characters.sql','AFC32E693BC17CFD9A17919FE5317B8FE337ACAD','ARCHIVED','2015-09-09 12:35:20',0),('2015_09_10_00_characters.sql','4555A7F35C107E54C13D74D20F141039ED42943E','ARCHIVED','2015-09-10 22:50:42',0),('2015_10_16_00_characters.sql','E3A3FFF0CB42F04A8DCF0CE4362143C16E2083AF','ARCHIVED','2015-10-15 21:54:11',0),('2015_11_06_00_characters_2015_10_12_00.sql','D6F9927BDED72AD0A81D6EC2C6500CBC34A39FA2','ARCHIVED','2015-11-06 23:43:27',0),('2015_11_08_00_characters.sql','0ACDD35EC9745231BCFA701B78056DEF94D0CC53','ARCHIVED','2015-11-08 00:51:45',15),('2015_11_23_00_characters.sql','9FC828E9E48E8E2E9B99A5A0073D6614C5BFC6B5','ARCHIVED','2015-11-22 23:27:34',0),('2016_01_05_00_characters.sql','0EAD24977F40DE2476B4567DA2B477867CC0DA1A','ARCHIVED','2016-01-04 23:07:40',0),('2016_04_05_00_characters_2016_02_10_00_characters.sql','F1B4DA202819CABC7319A4470A2D224A34609E97','ARCHIVED','2016-04-05 20:34:41',0),('2016_04_11_00_characters.sql','0ACDD35EC9745231BCFA701B78056DEF94D0CC53','RELEASED','2016-04-11 02:24:14',30),('2016_04_11_01_characters.sql','CA90F6D99C1EEA7B25BD58BC8368A8D78234BBEF','RELEASED','2016-04-11 18:14:18',0),('2016_05_07_00_characters.sql','D1DB5557B21A552C935564D829B4E98B98149077','RELEASED','2016-05-07 00:00:00',0),('2016_05_26_00_characters.sql','4179ADC32B96FD8D7D4CF5509A470B1ACE00BE85','RELEASED','2016-05-26 17:06:16',0);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/characters/6.x/2016_05_26_00_characters.sql b/sql/updates/characters/6.x/2016_05_26_00_characters.sql
new file mode 100644
index 00000000000..41a5222ac16
--- /dev/null
+++ b/sql/updates/characters/6.x/2016_05_26_00_characters.sql
@@ -0,0 +1 @@
+ALTER TABLE `character_pet` ADD `specialization` smallint(5) unsigned NOT NULL DEFAULT '0' AFTER `abdata`;
diff --git a/sql/updates/world/6.x/2016_05_26_00_world.sql b/sql/updates/world/6.x/2016_05_26_00_world.sql
new file mode 100644
index 00000000000..f907fd8a6c1
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_26_00_world.sql
@@ -0,0 +1,6 @@
+-- NPC 25288 Turida Coldwind, update existing gossip menu option with missing values
+UPDATE `gossip_menu_option` SET `OptionBroadcastTextID`= 53141, `option_id`= 4, `npc_option_npcflag`= 8192 WHERE `menu_id`= 13048;
+
+-- insert missing gossip menu
+DELETE FROM `gossip_menu` WHERE `entry` = 13048 AND `text_id`= 18324;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (13048,18324);
diff --git a/sql/updates/world/6.x/2016_05_26_01_world.sql b/sql/updates/world/6.x/2016_05_26_01_world.sql
new file mode 100644
index 00000000000..fe75d9e51fa
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_26_01_world.sql
@@ -0,0 +1,35 @@
+SET @ENTRY_PRINCE_LIAM_GREYMANE := 34850;
+SET @GOSSIP_MENU_ENTRY_PRINCE_LIAM_GREYMANE := 10669;
+SET @TEXT_ID_PRINCE_LIAM_GREYMANE := 14786;
+SET @BROADCAST_TEXT_ID_PRINCE_LIAM_GREYMANE := 35946;
+
+-- Prince Liam Greymane (mount)
+UPDATE `creature_template_addon` SET `mount` = 2410 WHERE `entry` = @ENTRY_PRINCE_LIAM_GREYMANE;
+
+-- Prince Liam Greymane (says)
+DELETE FROM `creature_text` WHERE `entry` = @ENTRY_PRINCE_LIAM_GREYMANE;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
+(@ENTRY_PRINCE_LIAM_GREYMANE,0,0,'Stand ready, guards! We don\'t know how many intruders we\'re dealing with, but the Headlands are overrun and we\'re cut off from the harbor towns. Expect to be outnumbered.',12,0,100,1,0,19614,0,0,'Prince Liam Greymane - Say 0'),
+(@ENTRY_PRINCE_LIAM_GREYMANE,1,0,'I want the perimeter secured and the gates manned by two guards at all times. No one gets in, no one gets out.',12,0,100,1,0,19615,0,0,'Prince Liam Greymane - Say 1'),
+(@ENTRY_PRINCE_LIAM_GREYMANE,2,0,'We protected Gilneas from the Scourge. We protected Gilneas during the Northgate rebellion. We will protect Gilneas from whatever this new threat may be.',12,0,100,25,0,19616,0,0,'Prince Liam Greymane - Say 2');
+
+-- Prince Liam Greymane (smartAI)
+UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = @ENTRY_PRINCE_LIAM_GREYMANE;
+DELETE FROM `smart_scripts` WHERE (source_type = 0 AND entryorguid = @ENTRY_PRINCE_LIAM_GREYMANE);
+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_PRINCE_LIAM_GREYMANE, 0, 0, 0, 60, 0, 100, 0, 5000, 5000, 62000, 62000, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Prince Liam Greymane - On Update - Say Line 0'),
+(@ENTRY_PRINCE_LIAM_GREYMANE, 0, 1, 0, 60, 0, 100, 0, 26000, 26000, 62000, 62000, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Prince Liam Greymane - On Update - Say Line 1'),
+(@ENTRY_PRINCE_LIAM_GREYMANE, 0, 2, 0, 60, 0, 100, 0, 47000, 47000, 62000, 62000, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Prince Liam Greymane - On Update - Say Line 2');
+
+-- Prince Liam Greymane (gossip)
+UPDATE `creature_template` SET `gossip_menu_id` = @GOSSIP_MENU_ENTRY_PRINCE_LIAM_GREYMANE
+WHERE `entry` = @ENTRY_PRINCE_LIAM_GREYMANE;
+
+-- Gossip Menu
+DELETE FROM gossip_menu WHERE (`entry`=@GOSSIP_MENU_ENTRY_PRINCE_LIAM_GREYMANE AND `text_id`=@TEXT_ID_PRINCE_LIAM_GREYMANE);
+INSERT INTO gossip_menu (`entry`, `text_id`) VALUES (@GOSSIP_MENU_ENTRY_PRINCE_LIAM_GREYMANE, @TEXT_ID_PRINCE_LIAM_GREYMANE);
+
+-- NPC Text
+DELETE FROM npc_text WHERE `ID`= @TEXT_ID_PRINCE_LIAM_GREYMANE;
+INSERT INTO npc_text (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES
+(@TEXT_ID_PRINCE_LIAM_GREYMANE, 1, 0, 0, 0, 0, 0, 0, 0, @BROADCAST_TEXT_ID_PRINCE_LIAM_GREYMANE, 0, 0, 0, 0, 0, 0, 0, 20886);
diff --git a/sql/updates/world/6.x/2016_05_26_02_world.sql b/sql/updates/world/6.x/2016_05_26_02_world.sql
new file mode 100644
index 00000000000..7ce86e26d2b
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_26_02_world.sql
@@ -0,0 +1,7 @@
+-- Disciple of Hate SAI
+SET @ENTRY := 56350;
+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,0,0,100,0,15000,15000,15000,15000,11,105859,1,0,0,0,0,2,0,0,0,0,0,0,0,"Disciple of Hate - In Combat - Cast Run Through"),
+(@ENTRY,0,1,0,0,0,100,0,25000,25000,25000,25000,11,105855,0,0,0,0,0,1,0,0,0,0,0,0,0,"Disciple of Hate - In Combat - Cast Whirl of Blades");
diff --git a/sql/updates/world/6.x/2016_05_26_03_world.sql b/sql/updates/world/6.x/2016_05_26_03_world.sql
new file mode 100644
index 00000000000..3dd9e5e8f21
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_26_03_world.sql
@@ -0,0 +1,34 @@
+DELETE FROM `spell_area` WHERE `spell` IN (66927, 66928, 66908);
+INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `autocast`,`quest_start_status`) VALUES
+(66927,4765,14153,14153,0,0,1,1,8),
+(66928,4765,14113,14113,0,0,0,1,8),
+(66908,4765,14153,14153,0,0,2,1,8),
+(66908,4765,14113,14113,0,0,2,1,8);
+
+DELETE FROM `creature_text` WHERE `entry` = 35186;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`comment`, `BroadcastTextID`) VALUES
+(35186, 0, 0, "If only I had someone to dance with.", 12, 0, 100, "Kezan Partygoer", 40224),
+(35186, 1, 0, "Ugh... I need a bucket!", 12, 0, 100, "Kezan Partygoer", 40223),
+(35186, 2, 0, "I could really use a refill on my drink here.", 12, 0, 100, "Kezan Partygoer", 40222),
+(35186, 3, 0, "I love fireworks!", 12, 0, 100, "Kezan Partygoer", 40225),
+(35186, 4, 0, "This is delicious! Are there more hors d'oeuvres?", 12, 0, 100, "Kezan Partygoer", 40226),
+(35186, 5, 0, "A fresh glass of bubbly. Just what the doctor ordered, $n.", 12, 0, 100, "Kezan Partygoer", 35417),
+(35186, 5, 1, "Thanks for the refill, $g sir : ma'am;!", 12, 0, 100, "Kezan Partygoer", 35418),
+(35186, 5, 2, "This sparkling white wine is delicious! Wherever did you get it?", 12, 0, 100, "Kezan Partygoer", 35419),
+(35186, 5, 3, "I think this one will have to be my last. I'm driving home after the party.", 12, 0, 100, "Kezan Partygoer", 35420),
+(35186, 5, 4, "Thanksh!", 12, 0, 100, "Kezan Partygoer", 35421),
+(35186, 6, 0, "I feel much better now...hic!", 12, 0, 100, "Kezan Partygoer", 35422),
+(35186, 6, 1, "Oh, my head hurtsh.", 12, 0, 100, "Kezan Partygoer", 35423),
+(35186, 6, 2, "Shorry about your shoes.", 12, 0, 100, "Kezan Partygoer", 35424),
+(35186, 7, 0, "A disco ball?! Groovy!", 12, 0, 100, "Kezan Partygoer", 35425),
+(35186, 7, 1, "How do you like my moves, $n?", 12, 0, 100, "Kezan Partygoer", 35426),
+(35186, 7, 2, "We should totally have a pants-off dance-off!", 12, 0, 100, "Kezan Partygoer", 35427),
+(35186, 7, 3, "Shake it like a goblinoid picture!", 12, 0, 100, "Kezan Partygoer", 35428),
+(35186, 8, 0, "Wow! That sure beats this puny, little sparkler!", 12, 0, 100, "Kezan Partygoer", 35429),
+(35186, 8, 1, "You really stop at no expense, $n! Amazing!", 12, 0, 100, "Kezan Partygoer", 35430),
+(35186, 8, 2, "Best... Party... Evar!", 12, 0, 100, "Kezan Partygoer", 35431),
+(35186, 8, 3, "Woo hoo, fireworks! More, more!", 12, 0, 100, "Kezan Partygoer", 35432),
+(35186, 9, 0, "Thanks. I was almost out. So hungry!", 12, 0, 100, "Kezan Partygoer", 35433),
+(35186, 9, 1, "These are the most delicious hors d'oeurves I have ever tasted. You must share your recipe, $n!", 12, 0, 100, "Kezan Partygoer", 35434),
+(35186, 9, 2, "Finger licking good!", 12, 0, 100, "Kezan Partygoer", 35435),
+(35186, 9, 3, "Nom, nom, nom!", 12, 0, 100, "Kezan Partygoer", 35436);
diff --git a/sql/updates/world/6.x/2016_05_26_04_world.sql b/sql/updates/world/6.x/2016_05_26_04_world.sql
new file mode 100644
index 00000000000..268b44c9616
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_26_04_world.sql
@@ -0,0 +1,13 @@
+-- Thirst Unending 6.x
+-- Arcane Torrent Monk 129597
+-- Arcane Torrent Paladin 155145
+-- Arcane Torrent Warrior 69179
+-- Arcane Torrent Hunter 80483
+
+SET @WYRM := 15274;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@WYRM AND `source_type`=0 and `id` in (4,5,6,7);
+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
+(@WYRM,0,4,0,8,0,100,1,69179,0,0,0,11,61314,0,0,0,0,0,7,0,0,0,0,0,0,0,"Mana Wyrm - On Spellhit 'Arcane Torrent' - Cast 'Quest Credit 8346' (No Repeat)"),
+(@WYRM,0,5,0,8,0,100,1,80483,0,0,0,11,61314,0,0,0,0,0,7,0,0,0,0,0,0,0,"Mana Wyrm - On Spellhit 'Arcane Torrent' - Cast 'Quest Credit 8346' (No Repeat)"),
+(@WYRM,0,6,0,8,0,100,1,129597,0,0,0,11,61314,0,0,0,0,0,7,0,0,0,0,0,0,0,"Mana Wyrm - On Spellhit 'Arcane Torrent' - Cast 'Quest Credit 8346' (No Repeat)"),
+(@WYRM,0,7,0,8,0,100,1,155145,0,0,0,11,61314,0,0,0,0,0,7,0,0,0,0,0,0,0,"Mana Wyrm - On Spellhit 'Arcane Torrent' - Cast 'Quest Credit 8346' (No Repeat)");
diff --git a/sql/updates/world/6.x/2016_05_26_05_world.sql b/sql/updates/world/6.x/2016_05_26_05_world.sql
new file mode 100644
index 00000000000..766dbbb8e49
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_26_05_world.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `instance_template` SET `parent`=1064, `allowMount`=1 WHERE `map`=1098;
diff --git a/sql/updates/world/6.x/2016_05_26_06_world.sql b/sql/updates/world/6.x/2016_05_26_06_world.sql
new file mode 100644
index 00000000000..343bc6f0a17
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_26_06_world.sql
@@ -0,0 +1,8 @@
+--
+DELETE FROM `smart_scripts` WHERE `entryorguid`=18794 AND `id`=34;
+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
+(18794,0,34,0,1,0,100,0,0,0,0,0,11,32958,0,0,0,0,0,1,0,0,0,0,0,0,0,"Cabal Ritualist - Out of Combat - Cast 'Crystal Channel'");
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceGroup`=1 AND `SourceEntry`=32958;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,32958,0,0,31,0,3,18793,0,0,"","Crystal Channel – Effect 0 - Cast only on Invisible Target 18793.");
diff --git a/sql/updates/world/6.x/2016_05_26_07_world.sql b/sql/updates/world/6.x/2016_05_26_07_world.sql
new file mode 100644
index 00000000000..d97a3204978
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_26_07_world.sql
@@ -0,0 +1,5 @@
+-- Anvilrage Overseer SAI (6.x Only)
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=8889;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=8889 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
+(8889, 0, 0, 0, 0, 0, 100, 2, 4000, 6000, 7000, 9000, 11, 87081, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Anvilrage Overseer - In Combat - Cast \'Strike\' (Normal Dungeon)');
diff --git a/sql/updates/world/6.x/2016_05_27_00_world.sql b/sql/updates/world/6.x/2016_05_27_00_world.sql
new file mode 100644
index 00000000000..4d4230e5d72
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_27_00_world.sql
@@ -0,0 +1,2 @@
+UPDATE `battleground_template` SET `MaxLvl`=100;
+UPDATE `battleground_template` SET StartMaxDist=150 WHERE `ID`=1; -- Alterac Valley
diff --git a/sql/updates/world/6.x/2016_05_30_00_world.sql b/sql/updates/world/6.x/2016_05_30_00_world.sql
new file mode 100644
index 00000000000..a8929689e1a
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_30_00_world.sql
@@ -0,0 +1,20 @@
+--
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=41 AND `horde_id`=1360;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=970 AND `horde_id`=971;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1167 AND `horde_id`=1168;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1169 AND `horde_id`=1170;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1172 AND `horde_id`=1173;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1262 AND `horde_id`=1274;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1681 AND `horde_id`=1682;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1684 AND `horde_id`=1683;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1692 AND `horde_id`=1691;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1707 AND `horde_id`=1693;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=2797 AND `horde_id`=2798;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1563 AND `horde_id`=1784;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1656 AND `horde_id`=1657;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1676 AND `horde_id`=1677;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1678 AND `horde_id`=1680;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=1752 AND `horde_id`=2776;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=2144 AND `horde_id`=2145;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=2194 AND `horde_id`=2195;
+DELETE FROM `player_factionchange_achievement` WHERE `alliance_id`=3478 AND `horde_id`=3656;
diff --git a/sql/updates/world/6.x/2016_05_30_01_world.sql b/sql/updates/world/6.x/2016_05_30_01_world.sql
new file mode 100644
index 00000000000..9ed0b8128f4
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_30_01_world.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `creature_template` SET `npcflag`=`npcflag`|128 WHERE entry IN (SELECT `entry` FROM `npc_vendor`);
diff --git a/sql/updates/world/6.x/2016_05_30_02_world.sql b/sql/updates/world/6.x/2016_05_30_02_world.sql
new file mode 100644
index 00000000000..7c287da579f
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_30_02_world.sql
@@ -0,0 +1,2 @@
+--
+DELETE FROM `criteria_data` WHERE `type` IN (6, 12);
diff --git a/sql/updates/world/6.x/2016_05_30_03_world.sql b/sql/updates/world/6.x/2016_05_30_03_world.sql
new file mode 100644
index 00000000000..3f7906f0df2
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_30_03_world.sql
@@ -0,0 +1,3 @@
+--
+DELETE FROM `game_event_creature` WHERE `guid` NOT IN (SELECT `guid` FROM `creature`);
+DELETE FROM `game_event_gameobject` WHERE `guid` NOT IN (SELECT `guid` FROM `gameobject`);
diff --git a/sql/updates/world/6.x/2016_05_30_04_world.sql b/sql/updates/world/6.x/2016_05_30_04_world.sql
new file mode 100644
index 00000000000..16e6ffab042
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_30_04_world.sql
@@ -0,0 +1,17 @@
+--
+UPDATE `gameobject` SET `spawnMask`=2 WHERE `guid`=5638;
+UPDATE `gameobject` SET `spawnMask`=6 WHERE `guid`=5639;
+UPDATE `gameobject` SET `spawnMask`=6 WHERE `guid`=20496;
+UPDATE `gameobject` SET `spawnMask`=6 WHERE `guid`=2568;
+UPDATE `gameobject` SET `spawnMask`=1 WHERE `guid`=35834;
+UPDATE `gameobject` SET `spawnMask`=120 WHERE `guid`=5286;
+UPDATE `gameobject` SET `spawnMask`=8 WHERE `guid` IN(334,32360);
+
+UPDATE `gameobject` SET `spawnMask`=2 WHERE `map`=230;
+UPDATE `gameobject` SET `spawnMask`=24 WHERE `map`=533 AND `spawnMask`=3;
+UPDATE `gameobject` SET `spawnMask`=6 WHERE `map`=547 AND `spawnMask`=1;
+UPDATE `gameobject` SET `spawnMask`=16 WHERE `map`=548 AND `spawnMask`=1;
+UPDATE `gameobject` SET `spawnMask`=16 WHERE `map`=550 AND `spawnMask`=1;
+UPDATE `gameobject` SET `spawnMask`=6 WHERE `map`=560 AND `spawnMask`=3;
+UPDATE `gameobject` SET `spawnMask`=6 WHERE `map`=668 AND `spawnMask`=3;
+UPDATE `gameobject` SET `spawnMask`=248 WHERE `map`=967 AND `spawnMask`=3;
diff --git a/sql/updates/world/6.x/2016_05_31_00_world.sql b/sql/updates/world/6.x/2016_05_31_00_world.sql
new file mode 100644
index 00000000000..d32fafbb906
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_31_00_world.sql
@@ -0,0 +1,68 @@
+--
+SET @RidingLowlevel := 202010;
+SET @RidingMedlevel := 202011;
+SET @RidingHighlevel := 202012;
+
+SET @RidingSkill := 762;
+SET @ApprenticeRiding := 33389;
+SET @JourneymanRiding := 33392;
+SET @ExpertRiding := 34092;
+SET @ArtisanRiding := 34093;
+SET @ColdWeatherFlying := 54198;
+SET @FlightMastersLicense := 90267;
+SET @WisdomOfTheFourWinds := 115913;
+SET @MasterRiding := 90266;
+
+DELETE FROM `npc_trainer` WHERE `ID` IN (@RidingLowlevel,@RidingMedlevel,@RidingHighlevel);
+DELETE FROM `npc_trainer` WHERE `SpellID` IN (-@RidingLowlevel,-@RidingMedlevel,-@RidingHighlevel);
+
+INSERT INTO `npc_trainer` (`ID`,`SpellID`,`MoneyCost`,`ReqSkillLine`,`ReqSkillRank`,`ReqLevel`) VALUES
+-- Riding Low Level
+(@RidingLowlevel,@ApprenticeRiding,40000,0,0,20), -- Spell Apprentice Riding
+(@RidingLowlevel,@JourneymanRiding,500000,@RidingSkill,75,40), -- Spell Journeyman Riding
+-- Riding Med Level
+(@RidingMedlevel,@ApprenticeRiding,40000,0,0,20), -- Spell Aprentice Riding
+(@RidingMedlevel,@JourneymanRiding,500000,@RidingSkill,75,40), -- Spell Journeyman Riding
+(@RidingMedlevel,@ExpertRiding,2500000,@RidingSkill,150,60), -- Spell Expert Riding
+(@RidingMedlevel,@ArtisanRiding,50000000,@RidingSkill,225,70), -- Spell Artisan Riding
+(@RidingMedlevel,@ColdWeatherFlying,5000000,@RidingSkill,225,68), -- Spell Cold Weather Flying
+(@RidingMedlevel,@FlightMastersLicense,2500000,@RidingSkill,225,60), -- Spell Flight Master's License
+(@RidingMedlevel,@MasterRiding,50000000,@RidingSkill,300,80), -- Spell Master Riding
+-- Riding High Level
+(@RidingHighlevel,@ApprenticeRiding,40000,0,0,20), -- Spell Aprentice Riding
+(@RidingHighlevel,@JourneymanRiding,500000,@RidingSkill,75,40), -- Spell Journeyman Riding
+(@RidingHighlevel,@ExpertRiding,2500000,@RidingSkill,150,60), -- Spell Expert Riding
+(@RidingHighlevel,@ArtisanRiding,50000000,@RidingSkill,225,70), -- Spell Artisan Riding
+(@RidingHighlevel,@ColdWeatherFlying,5000000,@RidingSkill,225,68), -- Spell Cold Weather Flying
+(@RidingHighlevel,@FlightMastersLicense,2500000,@RidingSkill,225,60), -- Spell Flight Master's License
+(@RidingHighlevel,@MasterRiding,50000000,@RidingSkill,300,80), -- Spell Master Riding
+(@RidingHighlevel,@WisdomOfTheFourWinds,25000000,@RidingSkill,225,85), -- Spell Wisdom of the Four Winds
+-- Trainer
+(60166,-@RidingHighlevel,0,0,0,0), -- Trainer Cloudrunner Leng - Vale of Eternal Blossoms
+(60167,-@RidingHighlevel,0,0,0,0), -- Trainer Skydancer Shun - Vale of Eternal Blossom
+(43769,-@RidingHighlevel,0,0,0,0), -- Trainer Bralla Cloudwing - Stormwind City
+(43693,-@RidingHighlevel,0,0,0,0), -- Trainer Darlene Stokx - Stormwind City
+(35100,-@RidingHighlevel,0,0,0,0), -- Trainer Hargen Bronzewing - Hellfire Peninsula
+(31238,-@RidingHighlevel,0,0,0,0), -- Trainer Hira Snowdawn - Dalaran
+(20511,-@RidingHighlevel,0,0,0,0), -- Trainer Ilsa Blusterbrew - Shadowmoon Valley
+(35133,-@RidingHighlevel,0,0,0,0), -- Trainer Maigra Keenfeather - Borean Tundra
+(44919,-@RidingHighlevel,0,0,0,0), -- Trainer Maztha - Orgrimmar
+(20500,-@RidingHighlevel,0,0,0,0), -- Trainer Olrokk - Shadowmoon Valley
+(28746,-@RidingHighlevel,0,0,0,0), -- Trainer Pilot Vic - Sholazar Basin
+(31247,-@RidingHighlevel,0,0,0,0), -- Trainer Roxi Ramrocket - The Storm Peaks
+(35093,-@RidingHighlevel,0,0,0,0), -- Trainer Wind Rider Jahubo - Hellfire Peninsula
+(35135,-@RidingHighlevel,0,0,0,0), -- Trainer Wind Rider Sabamba - Borean Tundra
+(20914,-@RidingHighlevel,0,0,0,0), -- Trainer Aalun - The Exodar
+(7954,-@RidingHighlevel,0,0,0,0), -- Trainer Binjy Featherwhistle - Dun Morogh
+(4753,-@RidingHighlevel,0,0,0,0), -- Trainer Jartsam - Darnassus
+(3690,-@RidingHighlevel,0,0,0,0), -- Trainer Kar Stormsinger - Mulgore
+(4752,-@RidingHighlevel,0,0,0,0), -- Trainer Kildar - Orgrimmar
+(70296,-@RidingHighlevel,0,0,0,0), -- Trainer Mei Lin - Stormwind City
+(16280,-@RidingHighlevel,0,0,0,0), -- Trainer Perascamin - Everson Woods
+(4732,-@RidingHighlevel,0,0,0,0), -- Trainer Randal Hunter - Elwynn Forest
+(48513,-@RidingHighlevel,0,0,0,0), -- Trainer Revi Ramrod - Orgrimmar
+(53407,-@RidingHighlevel,0,0,0,0), -- Trainer Sansha MacVince - Dustwallow Marsh
+(70301,-@RidingHighlevel,0,0,0,0), -- Trainer Softpaws - Orgrimmar
+(4772,-@RidingHighlevel,0,0,0,0), -- Trainer Ultham Ironhorn - Dun Morogh
+(4773,-@RidingHighlevel,0,0,0,0), -- Trainer Velma Warnam - Tirisfal Glades
+(7953,-@RidingHighlevel,0,0,0,0); -- Trainer Xar'Ti - Durotar
diff --git a/sql/updates/world/6.x/2016_05_31_01_world.sql b/sql/updates/world/6.x/2016_05_31_01_world.sql
new file mode 100644
index 00000000000..0a11cc583cb
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_31_01_world.sql
@@ -0,0 +1,46 @@
+-- Cloud Prince SAI
+UPDATE `creature_template` SET `AIName` = "SmartAI" WHERE `entry` = 45917;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 45917 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
+(45917, 0, 0, 0, 4, 0, 100, 0, 0, 0, 0, 0, 11, 88081, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Cloud Prince - On Aggro - Cast 'Whipping Winds'"),
+(45917, 0, 1, 0, 0, 0, 100, 0, 5000, 10000, 5000, 10000, 11, 88073, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, "Cloud Prince - In Combat - Cast 'Starfall'"),
+(45917, 0, 2, 0, 0, 0, 100, 0, 10000, 15000, 10000, 15000, 11, 88075, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, "Cloud Prince - In Combat - Cast 'Typhoon'"),
+(45917,0,3,0,17,0,100,0,47238,0,0,0,13,1,0,0,0,0,0,7,0,0,0,0,0,0,0,"Cloud Prince - On Summoned Whipping Winds - Add Threat 1 Percent."),
+(45917,0,4,0,17,0,100,0,47238,0,0,0,80,45917*100+00,2,0,0,0,0,7,0,0,0,0,0,0,0,"Cloud Prince - On Summoned Whipping Winds - Run Script."),
+(45917,0,5,0,7,0,100,0,0,0,0,0,45,1,1,0,0,0,0,24,0,0,0,0,0,0,0,"Cloud Prince - On Evade - Set Data 1 1 on Full Threat List for despawn full whipping winds list.");
+
+-- Cloud Prince Actionlist SAI
+SET @ENTRY := 4591700;
+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,500,500,500,500,64,1,0,0,0,0,0,24,0,0,0,0,0,0,0,"Cloud Prince - On Script - Store Target List Full Threat List.");
+
+-- Whipping Wind SAI
+SET @ENTRY := 47238;
+UPDATE `creature_template` SET `AIName` = "SmartAI" WHERE `entry` = 47238;
+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, 0, 0, 100, 0, 0, 0, 1500, 1500, 11, 88080, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, "Whipping Wind - In Combat - Cast 'Lightning Bolt'"),
+(@ENTRY,0,1,0,38,0,100,0,1,1,1000,1000,41,500,0,0,0,0,0,1,0,0,0,0,0,0,0,"Whipping Wind - On Data Set 1 1 - Force Despawn.");
+
+-- Young Storm Dragon SAI
+SET @ENTRY := 45919;
+UPDATE `creature_template` SET `AIName` = "SmartAI" WHERE `entry` = 45919;
+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,1,0,25,0,100,0,0,0,0,0,91,3,3,0,0,0,0,1,0,0,0,0,0,0,0,"Young Storm Dragon - On Reset - Remove Hover and Always Stand Unit Byte Flag."),
+(@ENTRY,0,2,0,25,0,100,0,0,0,0,0,60,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Young Storm Dragon - On Reset - Set Fly Off."),
+(@ENTRY,0,3,0,25,0,100,0,0,0,0,0,8,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Young Storm Dragon - On Reset - Set React Passive."),
+(@ENTRY,0,4,0,4,0,100,0,0,0,0,0,11,88201,1,0,0,0,0,1,0,0,0,0,0,0,0,"Young Storm Dragon - On Aggro - Cast Healing Well."),
+(@ENTRY,0,5,0,0,0,100,0,3000,3000,0,0,45,1,1,0,0,0,0,1,0,0,0,0,0,0,0,"Young Storm Dragon - On Combat - Set Data 1 1."),
+(@ENTRY,0,6,0,38,0,100,1,1,1,0,0,60,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Young Storm Dragon - On Data Set 1 1 - Set Fly On."),
+(@ENTRY,0,7,0,38,0,100,1,1,1,0,0,90,3,3,0,0,0,0,1,0,0,0,0,0,0,0,"Young Storm Dragon - On Data Set 1 1 - Set Hover Byte."),
+(@ENTRY,0,8,0,38,0,100,1,1,1,0,0,114,10,0,0,0,0,0,1,0,0,0,0,0,0,0,"Young Storm Dragon - On Data Set 1 1 - Rise Up on 10 Yards."),
+(@ENTRY,0,9,0,4,0,100,0,0,0,0,0,8,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Young Storm Dragon - On Reset - Set React Aggressive."),
+(@ENTRY,0,10,0,0,0,100,1,6000,6000,0,0,80,@ENTRY*100+00,1,0,0,0,0,1,0,0,0,0,0,0,0,"Young Storm Dragon - On Combat - Run Script.");
+
+-- Young Storm Dragon Actionlist SAI
+SET @ENTRY := 4591900;
+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,11,88194,0,0,0,0,0,2,0,0,0,0,0,0,0,"Young Storm Dragon - On Script - Cast Chilling Blast.");
diff --git a/sql/updates/world/6.x/2016_05_31_02_world.sql b/sql/updates/world/6.x/2016_05_31_02_world.sql
new file mode 100644
index 00000000000..2517207fd32
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_31_02_world.sql
@@ -0,0 +1,253 @@
+-- DB/Profession: Added Enchanting trainer spells
+SET @EnchantingLowLevel := 201124;
+SET @EnchantingMidLevel := 201125;
+SET @EnchantingHighLevel := 201126;
+
+SET @EnchantingSkill := 333;
+
+DELETE FROM `npc_trainer` WHERE `ID` IN
+(@EnchantingLowLevel,@EnchantingMidLevel,@EnchantingHighLevel,
+1317,3011,3345,3606,4213,4616,5157,5695,11072,11073,11074,
+16160,16633,16725,18753,18773,19251,19252,26906,26980,26990,
+28693,33583,33610,33633,33676,53410,65127,85914,86027);
+
+INSERT INTO `npc_trainer` (`ID`,`SpellID`,`MoneyCost`,`ReqSkillLine`,`ReqSkillRank`,`ReqLevel`) VALUES
+
+-- Enchanting-HighLevel --
+(@EnchantingHighLevel,7411,10,@EnchantingSkill,0,5), -- Enchanting Rank 1
+(@EnchantingHighLevel,14293,50,@EnchantingSkill,10,0), -- Lesser Magic Wand
+(@EnchantingHighLevel,7420,50,@EnchantingSkill,15,0), -- Minor Health
+(@EnchantingHighLevel,7426,100,@EnchantingSkill,40,0), -- Minor Absorbtion
+(@EnchantingHighLevel,7412,500,@EnchantingSkill,50,10), -- Enchanting Rank 2
+(@EnchantingHighLevel,7457,250,@EnchantingSkill,50,0), -- Minor Stamina
+(@EnchantingHighLevel,7748,250,@EnchantingSkill,60,0), -- Lesser Health
+(@EnchantingHighLevel,7771,200,@EnchantingSkill,70,0), -- Minor Protection
+(@EnchantingHighLevel,14807,200,@EnchantingSkill,70,0), -- Greater Magic Wand
+(@EnchantingHighLevel,7779,400,@EnchantingSkill,80,0), -- Minor Agility
+(@EnchantingHighLevel,7788,500,@EnchantingSkill,90,0), -- Minor Striking
+(@EnchantingHighLevel,7745,500,@EnchantingSkill,100,0), -- Minor Impact
+(@EnchantingHighLevel,13378,600,@EnchantingSkill,105,0), -- Minor Stamina
+(@EnchantingHighLevel,13421,800,@EnchantingSkill,115,0), -- Lesser Protection
+(@EnchantingHighLevel,7857,1000,@EnchantingSkill,120,0), -- Health
+(@EnchantingHighLevel,7413,5000,@EnchantingSkill,125,20), -- Enchanting Rank 3
+(@EnchantingHighLevel,7863,1400,@EnchantingSkill,125,0), -- Minor Stamina
+(@EnchantingHighLevel,13485,1500,@EnchantingSkill,130,0), -- Lesser Spirit
+(@EnchantingHighLevel,13501,1500,@EnchantingSkill,130,0), -- Lesser Stamina
+(@EnchantingHighLevel,13538,2500,@EnchantingSkill,140,0), -- Lesser Absorbtion
+(@EnchantingHighLevel,13503,2000,@EnchantingSkill,140,0), -- Lesser Striking
+(@EnchantingHighLevel,13529,2400,@EnchantingSkill,145,0), -- Lesser Impact
+(@EnchantingHighLevel,13607,2400,@EnchantingSkill,145,0), -- Mana
+(@EnchantingHighLevel,13622,2500,@EnchantingSkill,150,0), -- Lesser Intellect
+(@EnchantingHighLevel,13626,2500,@EnchantingSkill,150,0), -- Minor Stats
+(@EnchantingHighLevel,13635,2600,@EnchantingSkill,155,0), -- Defense
+(@EnchantingHighLevel,13631,2600,@EnchantingSkill,155,0), -- Lesser Stamina
+(@EnchantingHighLevel,11289,2600,@EnchantingSkill,155,0), -- Lesser Mystic Wand
+(@EnchantingHighLevel,13640,2700,@EnchantingSkill,160,0), -- Greater Health
+(@EnchantingHighLevel,13637,2800,@EnchantingSkill,160,0), -- Lesser Agility
+(@EnchantingHighLevel,13642,2800,@EnchantingSkill,165,0), -- Spirit
+(@EnchantingHighLevel,13646,2800,@EnchantingSkill,170,0), -- Lesser Dodge
+(@EnchantingHighLevel,13644,2800,@EnchantingSkill,170,0), -- Lesser Stamina
+(@EnchantingHighLevel,13648,2800,@EnchantingSkill,170,0), -- Stamina
+(@EnchantingHighLevel,11290,3000,@EnchantingSkill,175,0), -- Greater Mystic Wand
+(@EnchantingHighLevel,13659,3200,@EnchantingSkill,180,0), -- Spirit
+(@EnchantingHighLevel,13661,3600,@EnchantingSkill,180,0), -- Strength
+(@EnchantingHighLevel,13663,3800,@EnchantingSkill,185,0), -- Greater Mana
+(@EnchantingHighLevel,13693,4000,@EnchantingSkill,195,0), -- Striking
+(@EnchantingHighLevel,13920,50000,@EnchantingSkill,200,35), -- Enchanting Rank 4
+(@EnchantingHighLevel,13695,4000,@EnchantingSkill,200,0), -- Impact
+(@EnchantingHighLevel,13700,4000,@EnchantingSkill,200,0), -- Lesser Stats
+(@EnchantingHighLevel,13746,4200,@EnchantingSkill,205,0), -- Greater Defense
+(@EnchantingHighLevel,13815,4400,@EnchantingSkill,210,0), -- Agility
+(@EnchantingHighLevel,13822,4400,@EnchantingSkill,210,0), -- Intellect
+(@EnchantingHighLevel,13836,4600,@EnchantingSkill,215,0), -- Stamina
+(@EnchantingHighLevel,13858,4800,@EnchantingSkill,220,0), -- Superior Health
+(@EnchantingHighLevel,63746,5000,@EnchantingSkill,225,0), -- Lesser Accuracy
+(@EnchantingHighLevel,13890,5000,@EnchantingSkill,225,0), -- Minor Speed
+(@EnchantingHighLevel,13887,5000,@EnchantingSkill,225,0), -- Strength
+(@EnchantingHighLevel,13905,5400,@EnchantingSkill,230,0), -- Greater Spirit
+(@EnchantingHighLevel,13917,5400,@EnchantingSkill,230,0), -- Superior Mana
+(@EnchantingHighLevel,13935,5800,@EnchantingSkill,235,0), -- Agility
+(@EnchantingHighLevel,13937,6200,@EnchantingSkill,240,0), -- Greater Impact
+(@EnchantingHighLevel,13939,6200,@EnchantingSkill,240,0), -- Greater Strength
+(@EnchantingHighLevel,13943,6200,@EnchantingSkill,245,0), -- Greater Striking
+(@EnchantingHighLevel,13941,6200,@EnchantingSkill,245,0), -- Stats
+(@EnchantingHighLevel,12810,10000,@EnchantingSkill,250,0), -- Enchanted Leather
+(@EnchantingHighLevel,12655,10000,@EnchantingSkill,250,0), -- Enchanted Thorium Bar
+(@EnchantingHighLevel,13948,6500,@EnchantingSkill,250,0), -- Minor Haste
+(@EnchantingHighLevel,20008,10000,@EnchantingSkill,255,0), -- Greater Intellect
+(@EnchantingHighLevel,20012,10000,@EnchantingSkill,270,0), -- Greater Agility
+(@EnchantingHighLevel,28029,100000,@EnchantingSkill,275,50), -- Enchanting Rank 5
+(@EnchantingHighLevel,20016,15000,@EnchantingSkill,280,0), -- Vitality
+(@EnchantingHighLevel,20028,15000,@EnchantingSkill,290,0), -- Major Mana
+(@EnchantingHighLevel,20023,20000,@EnchantingSkill,295,0), -- Greater Agility
+(@EnchantingHighLevel,20013,20000,@EnchantingSkill,295,0), -- Greater Strength
+(@EnchantingHighLevel,42613,10000,@EnchantingSkill,300,0), -- Nexus Transformation
+(@EnchantingHighLevel,34002,12500,@EnchantingSkill,300,0), -- Lesser Assault
+(@EnchantingHighLevel,33991,20000,@EnchantingSkill,300,0), -- Restore Mana Prime
+(@EnchantingHighLevel,33993,12500,@EnchantingSkill,305,0), -- Blasting
+(@EnchantingHighLevel,27899,12500,@EnchantingSkill,305,0), -- Brawn
+(@EnchantingHighLevel,34001,12500,@EnchantingSkill,305,0), -- Major Intellect
+(@EnchantingHighLevel,33996,15000,@EnchantingSkill,310,0), -- Assault
+(@EnchantingHighLevel,34004,15000,@EnchantingSkill,310,0), -- Greater Agility
+(@EnchantingHighLevel,27944,15000,@EnchantingSkill,310,0), -- Lesser Dodge
+(@EnchantingHighLevel,27961,15000,@EnchantingSkill,310,0), -- Major Armor
+(@EnchantingHighLevel,27957,17500,@EnchantingSkill,315,0), -- Exceptional Health
+(@EnchantingHighLevel,27905,12500,@EnchantingSkill,315,0), -- Stats
+(@EnchantingHighLevel,33990,20000,@EnchantingSkill,320,0), -- Major Spirit
+(@EnchantingHighLevel,28027,40000,@EnchantingSkill,325,0), -- Prismatic Sphere
+(@EnchantingHighLevel,44383,25000,@EnchantingSkill,330,0), -- Resilience
+(@EnchantingHighLevel,42615,40000,@EnchantingSkill,335,0), -- Small Prismatic Shard
+(@EnchantingHighLevel,33995,25000,@EnchantingSkill,340,0), -- Major Strength
+(@EnchantingHighLevel,51313,350000,@EnchantingSkill,350,65), -- Enchanting Rank 6
+(@EnchantingHighLevel,28028,80000,@EnchantingSkill,350,0), -- Void Sphere
+(@EnchantingHighLevel,27958,50000,@EnchantingSkill,350,0), -- Exceptional mana
+(@EnchantingHighLevel,60609,50000,@EnchantingSkill,350,0), -- Speed
+(@EnchantingHighLevel,60616,50000,@EnchantingSkill,360,0), -- Assault
+(@EnchantingHighLevel,44592,50000,@EnchantingSkill,360,0), -- Exceptional Spellpower
+(@EnchantingHighLevel,44623,50000,@EnchantingSkill,370,0), -- Super Stats
+(@EnchantingHighLevel,44555,50000,@EnchantingSkill,375,0), -- Exceptional Intellect
+(@EnchantingHighLevel,60606,50000,@EnchantingSkill,375,0), -- Assault
+(@EnchantingHighLevel,44506,50000,@EnchantingSkill,375,0), -- Gatherer
+(@EnchantingHighLevel,60621,80000,@EnchantingSkill,380,0), -- Greater Potency
+(@EnchantingHighLevel,60623,90000,@EnchantingSkill,385,0), -- Icewalker
+(@EnchantingHighLevel,62959,90000,@EnchantingSkill,385,0), -- Spellpower
+(@EnchantingHighLevel,44528,90000,@EnchantingSkill,385,0), -- Greater Fortitude
+(@EnchantingHighLevel,69412,50000,@EnchantingSkill,390,0), -- Abyssal Shatter
+(@EnchantingHighLevel,44630,80000,@EnchantingSkill,390,0), -- Greater Savagery
+(@EnchantingHighLevel,44582,100000,@EnchantingSkill,395,0), -- Minor Power
+(@EnchantingHighLevel,44629,100000,@EnchantingSkill,395,0), -- Exceptional Spellpower
+(@EnchantingHighLevel,44513,100000,@EnchantingSkill,395,0), -- Greater Assault
+(@EnchantingHighLevel,60653,100000,@EnchantingSkill,395,0), -- Greater Intellect
+(@EnchantingHighLevel,44635,100000,@EnchantingSkill,395,0), -- Greater Spellpower
+(@EnchantingHighLevel,44492,100000,@EnchantingSkill,395,0), -- Mighty Health
+(@EnchantingHighLevel,44500,100000,@EnchantingSkill,395,0), -- Superior Agility
+(@EnchantingHighLevel,47766,100000,@EnchantingSkill,400,0), -- Greater Dodge
+(@EnchantingHighLevel,44616,100000,@EnchantingSkill,400,0), -- Greater Stats
+(@EnchantingHighLevel,44584,150000,@EnchantingSkill,405,0), -- Greater Vitality
+(@EnchantingHighLevel,44484,150000,@EnchantingSkill,405,0), -- Haste
+(@EnchantingHighLevel,44633,150000,@EnchantingSkill,410,0), -- Exceptional Agility
+(@EnchantingHighLevel,44510,150000,@EnchantingSkill,410,0), -- Exceptional Spirit
+(@EnchantingHighLevel,44508,150000,@EnchantingSkill,410,0), -- Greater Spirit
+(@EnchantingHighLevel,44488,150000,@EnchantingSkill,410,0), -- Precision
+(@EnchantingHighLevel,44598,150000,@EnchantingSkill,415,0), -- Haste
+(@EnchantingHighLevel,44529,150000,@EnchantingSkill,415,0), -- Major Agility
+(@EnchantingHighLevel,44589,150000,@EnchantingSkill,415,0), -- Superior Agility
+(@EnchantingHighLevel,44489,150000,@EnchantingSkill,420,0), -- Dodge
+(@EnchantingHighLevel,44509,150000,@EnchantingSkill,420,0), -- Greater Mana Restoration
+(@EnchantingHighLevel,60663,150000,@EnchantingSkill,420,0), -- Major Agility
+(@EnchantingHighLevel,44593,150000,@EnchantingSkill,420,0), -- Major Spirit
+(@EnchantingHighLevel,74258,500000,@EnchantingSkill,425,75), -- Enchanting Rank 7
+(@EnchantingHighLevel,60668,150000,@EnchantingSkill,425,0), -- Crusher
+(@EnchantingHighLevel,47900,150000,@EnchantingSkill,425,0), -- Super Health
+(@EnchantingHighLevel,74189,30000,@EnchantingSkill,425,0), -- Earthen Vitality
+(@EnchantingHighLevel,74132,30000,@EnchantingSkill,425,0), -- Mastery
+(@EnchantingHighLevel,74191,30000,@EnchantingSkill,425,0), -- Mighty Stats
+(@EnchantingHighLevel,74192,30000,@EnchantingSkill,435,0), -- Lesser Power
+(@EnchantingHighLevel,74193,30000,@EnchantingSkill,435,0), -- Speed
+(@EnchantingHighLevel,74197,30000,@EnchantingSkill,450,0), -- Avalanche
+(@EnchantingHighLevel,74195,30000,@EnchantingSkill,450,0), -- Mending
+(@EnchantingHighLevel,74199,30000,@EnchantingSkill,455,0), -- Haste
+(@EnchantingHighLevel,74198,30000,@EnchantingSkill,455,0), -- Haste
+(@EnchantingHighLevel,74201,30000,@EnchantingSkill,460,0), -- Critical Strike
+(@EnchantingHighLevel,74200,30000,@EnchantingSkill,460,0), -- Stamina
+(@EnchantingHighLevel,74202,30000,@EnchantingSkill,465,0), -- Intellect
+(@EnchantingHighLevel,74207,30000,@EnchantingSkill,465,0), -- Protection
+(@EnchantingHighLevel,74211,30000,@EnchantingSkill,470,0), -- Elemental Slayer
+(@EnchantingHighLevel,74212,30000,@EnchantingSkill,470,0), -- Exceptional Strength
+(@EnchantingHighLevel,95471,30000,@EnchantingSkill,470,0), -- Mighty Agility
+(@EnchantingHighLevel,74213,30000,@EnchantingSkill,475,0), -- Major Agility
+(@EnchantingHighLevel,74214,30000,@EnchantingSkill,475,0), -- Mighty Resilience
+(@EnchantingHighLevel,74220,30000,@EnchantingSkill,480,0), -- Greater Haste
+(@EnchantingHighLevel,74223,30000,@EnchantingSkill,480,0), -- Hurricane
+(@EnchantingHighLevel,74225,30000,@EnchantingSkill,485,0), -- Heartsong
+(@EnchantingHighLevel,74226,30000,@EnchantingSkill,485,0), -- Mastery
+(@EnchantingHighLevel,74230,30000,@EnchantingSkill,490,0), -- Critical Strike
+(@EnchantingHighLevel,74229,30000,@EnchantingSkill,490,0), -- Superior Dodge
+(@EnchantingHighLevel,74231,30000,@EnchantingSkill,495,0), -- Exceptional Spirit
+(@EnchantingHighLevel,74232,30000,@EnchantingSkill,495,0), -- Precision
+(@EnchantingHighLevel,110400,600000,@EnchantingSkill,500,85), -- Enchanting Rank 8
+(@EnchantingHighLevel,116497,20000,@EnchantingSkill,500,0), -- Mysterious Essence
+(@EnchantingHighLevel,74234,30000,@EnchantingSkill,500,0), -- Prootection
+(@EnchantingHighLevel,74235,30000,@EnchantingSkill,500,0), -- Superior Intellect
+(@EnchantingHighLevel,104338,20000,@EnchantingSkill,500,0), -- Mastery
+(@EnchantingHighLevel,104404,20000,@EnchantingSkill,500,0), -- Superior Critical Strike
+(@EnchantingHighLevel,74236,30000,@EnchantingSkill,505,0), -- Precision
+(@EnchantingHighLevel,74237,30000,@EnchantingSkill,505,0), -- Exceptional Spirit
+(@EnchantingHighLevel,74269,30000,@EnchantingSkill,510,0), -- Greater Haste
+(@EnchantingHighLevel,74240,30000,@EnchantingSkill,510,0), -- Greater Intellect
+(@EnchantingHighLevel,74238,30000,@EnchantingSkill,510,0), -- Mastery
+(@EnchantingHighLevel,104698,30000,@EnchantingSkill,515,0), -- Maelstrom Shatter
+(@EnchantingHighLevel,104430,20000,@EnchantingSkill,525,0), -- Elemental Force
+(@EnchantingHighLevel,104416,20000,@EnchantingSkill,525,0), -- Greater Haste
+(@EnchantingHighLevel,104408,20000,@EnchantingSkill,525,0), -- Greater Precision
+(@EnchantingHighLevel,104385,20000,@EnchantingSkill,525,0), -- Major Dodge
+(@EnchantingHighLevel,104393,20000,@EnchantingSkill,525,0), -- Mighty Spirit
+(@EnchantingHighLevel,104392,20000,@EnchantingSkill,525,0), -- Super Resilience
+(@EnchantingHighLevel,104403,20000,@EnchantingSkill,525,0), -- Superior Intellect
+(@EnchantingHighLevel,118237,20000,@EnchantingSkill,535,0), -- Mysterious Diffusion
+(@EnchantingHighLevel,116498,20000,@EnchantingSkill,550,0), -- Ethereal Shard
+(@EnchantingHighLevel,104398,20000,@EnchantingSkill,550,0), -- Accuracy
+(@EnchantingHighLevel,104409,20000,@EnchantingSkill,550,0), -- Blurred Speed
+(@EnchantingHighLevel,104407,20000,@EnchantingSkill,550,0), -- Greater Haste
+(@EnchantingHighLevel,104417,20000,@EnchantingSkill,550,0), -- Superior Haste
+(@EnchantingHighLevel,104397,20000,@EnchantingSkill,550,0), -- Superior Stamina
+(@EnchantingHighLevel,104425,20000,@EnchantingSkill,550,0), -- Windsong
+(@EnchantingHighLevel,104440,20000,@EnchantingSkill,575,0), -- Colossus
+(@EnchantingHighLevel,104395,20000,@EnchantingSkill,575,0), -- Glorious Stats
+(@EnchantingHighLevel,130758,20000,@EnchantingSkill,575,0), -- Greater Parry
+(@EnchantingHighLevel,104401,20000,@EnchantingSkill,575,0), -- Greater Protection
+(@EnchantingHighLevel,104445,20000,@EnchantingSkill,575,0), -- Major Intellect
+(@EnchantingHighLevel,104414,20000,@EnchantingSkill,575,0), -- Pandaren's Step
+(@EnchantingHighLevel,104419,20000,@EnchantingSkill,575,0), -- Super Strength
+(@EnchantingHighLevel,104420,20000,@EnchantingSkill,575,0), -- Superior Mastery
+(@EnchantingHighLevel,118238,20000,@EnchantingSkill,585,0), -- Ethereal Shatter
+(@EnchantingHighLevel,116499,20000,@EnchantingSkill,600,0), -- Sha Crystal
+(@EnchantingHighLevel,118239,20000,@EnchantingSkill,600,0), -- Sha Shatter
+-- Enchanting-LowlLevel --
+(@EnchantingLowLevel,7411,10,0,0,5), -- Enchanting Rank 1
+(@EnchantingLowLevel,14293,50,@EnchantingSkill,10,0), -- Lesser Magic Wand
+(@EnchantingLowLevel,7420,50,@EnchantingSkill,15,0), -- Minor Health
+(@EnchantingLowLevel,7426,100,@EnchantingSkill,40,0), -- Minor Absorbtion
+(@EnchantingLowLevel,7457,250,@EnchantingSkill,50,0), -- Minor Stamina
+(@EnchantingLowLevel,7748,250,@EnchantingSkill,60,0), -- Lesser Health
+(@EnchantingLowLevel,7771,200,@EnchantingSkill,70,0), -- Minor Protection
+(@EnchantingLowLevel,14807,200,@EnchantingSkill,70,0), -- Greater Magic Wand
+-- Enchanting-Trainer --
+(1317,-@EnchantingHighLevel,0,0,0,0), -- Lucan Cordell - Stormwind City
+(3011,-@EnchantingHighLevel,0,0,0,0), -- Teg Dawnstrider - Thunder Bluff
+(3345,-@EnchantingHighLevel,0,0,0,0), -- Godan - Orgrimmar
+(3606,-@EnchantingHighLevel,0,0,0,0), -- Alanna Raveneye - Teldrassil
+(4213,-@EnchantingHighLevel,0,0,0,0), -- Taladan - Darnassus
+(4616,-@EnchantingHighLevel,0,0,0,0), -- Lavinia Crowe - Undercity
+(5157,-@EnchantingHighLevel,0,0,0,0), -- Gimble Thistlefuzz - Ironforge
+(5695,-@EnchantingHighLevel,0,0,0,0), -- Vance Undergloom - Tirisfal Glades
+(11072,-@EnchantingHighLevel,0,0,0,0), -- Kitta Firewind - Elwynn Forest
+(11073,-@EnchantingHighLevel,0,0,0,0), -- Annora - Uldaman
+(11074,-@EnchantingHighLevel,0,0,0,0), -- Hgarth - Stonetalon Mountains
+(16160,-@EnchantingHighLevel,0,0,0,0), -- Magistrix Eredania - Eversong Woods
+(16633,-@EnchantingHighLevel,0,0,0,0), -- Sedana - Silvermoon City
+(16725,-@EnchantingHighLevel,0,0,0,0), -- Nahogg - The Exodar
+(18753,-@EnchantingHighLevel,0,0,0,0), -- Felannia - Hellfire Peninsula
+(18773,-@EnchantingHighLevel,0,0,0,0), -- Johan Barnes - Hellfire Peninsula
+(19251,-@EnchantingHighLevel,0,0,0,0), -- Enchantress Volali - Shattrath City
+(19252,-@EnchantingHighLevel,0,0,0,0), -- High Enchanter Bardolan - Shattrath City
+(26906,-@EnchantingHighLevel,0,0,0,0), -- Elizabeth Jackson - Howling Fjord
+(26980,-@EnchantingHighLevel,0,0,0,0), -- Eorain Dawnstrike - Borean Tundra
+(26990,-@EnchantingHighLevel,0,0,0,0), -- Alxis Marlowe - Borean Tundra
+(28693,-@EnchantingHighLevel,0,0,0,0), -- Enchanter Nalthanis - Dalaran
+(33583,-@EnchantingHighLevel,0,0,0,0), -- Fael Morningsong - Icecrown
+(33610,-@EnchantingHighLevel,0,0,0,0), -- Enchanting - Shattrath City
+(33633,-@EnchantingHighLevel,0,0,0,0), -- Enchantress Andiala - Shattrath City
+(33676,-@EnchantingHighLevel,0,0,0,0), -- Zurii - Shattrath City
+(53410,-@EnchantingHighLevel,0,0,0,0), -- Lissah Spellwick - Dustwallow Marsh
+(65127,-@EnchantingHighLevel,0,0,0,0), -- Lai the Spellpaw - The Jade Forest
+(85914,-@EnchantingHighLevel,0,0,0,0), -- Bil Sparktonic - Stormshield
+(86027,-@EnchantingHighLevel,0,0,0,0); -- Hane'ke - Warspear
+
+-- Enchanting Rank 8
+-- Add rank 8 Enchanting to spell_ranks
+-- first_spell_id = 7411
+-- spell_id = 110400
+-- rank = 8
+DELETE FROM `spell_ranks` WHERE `first_spell_id` = 7411 && `rank` = 8;
+INSERT INTO `spell_ranks` (`first_spell_id`,`spell_id`,`rank`) VALUES (7411,110400,8);
diff --git a/sql/updates/world/6.x/2016_05_31_03_world.sql b/sql/updates/world/6.x/2016_05_31_03_world.sql
new file mode 100644
index 00000000000..3d2b75d26c6
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_31_03_world.sql
@@ -0,0 +1,325 @@
+-- DB/Profession: Fixed Jewelcrafting teachers and their spells
+SET @JewelcraftingLowlevel := 201024;
+SET @JewelcraftingMedlevel := 201025;
+SET @JewelcraftingHighlevel := 201026;
+
+SET @JewelcraftingSkill := 755;
+
+DELETE FROM `npc_trainer` WHERE `ID` IN
+(@JewelcraftingHighlevel,@JewelcraftingMedlevel,@JewelcraftingLowlevel,
+52645,15501,26997,86010,85916,19778,26982,19063,52586,33614,18751,
+19775,46675,65098,52657,52587,33680,33590,26915,18774,44582,28701);
+
+INSERT INTO `npc_trainer` (`ID`,`SpellID`,`MoneyCost`,`ReqSkillLine`,`ReqSkillRank`,`ReqLevel`) VALUES
+
+-- Jewelcrafting-Highlevel --
+(@JewelcraftingHighlevel,25229,10,@JewelcraftingSkill,0,5), -- Spell Jewelcrafting Rank 1
+(@JewelcraftingHighlevel,25230,500,@JewelcraftingSkill,50,0), -- Spell Jewelcrafting Rank 2
+(@JewelcraftingHighlevel,28894,5000,@JewelcraftingSkill,125,0), -- Spell Jewelcrafting Rank 3
+(@JewelcraftingHighlevel,28895,50000,@JewelcraftingSkill,200,0), -- Spell Jewelcrafting Rank 4
+(@JewelcraftingHighlevel,28897,100000,@JewelcraftingSkill,275,0), -- Spell Jewelcrafting Rank 5
+(@JewelcraftingHighlevel,51311,350000,@JewelcraftingSkill,350,0), -- Spell Jewelcrafting Rank 6
+(@JewelcraftingHighlevel,73318,500000,@JewelcraftingSkill,425,0), -- Spell Jewelcrafting Rank 7
+(@JewelcraftingHighlevel,110420,600000,@JewelcraftingSkill,500,0), -- Spell Jewelcrafting Rank 8
+(@JewelcraftingHighlevel,31252,100,@JewelcraftingSkill,20,0), -- Spell Prospecting
+(@JewelcraftingHighlevel,63743,3000,@JewelcraftingSkill,200,0), -- Spell Amulet of Truesight
+(@JewelcraftingHighlevel,26874,5000,@JewelcraftingSkill,210,0), -- Spell Aquamarine Signet
+(@JewelcraftingHighlevel,26916,20000,@JewelcraftingSkill,310,0), -- Spell Band of Natural Fire
+(@JewelcraftingHighlevel,56196,80000,@JewelcraftingSkill,380,0), -- Spell Blood Sun Necklace
+(@JewelcraftingHighlevel,47280,30000,@JewelcraftingSkill,350,0), -- Spell Brilliant Glass
+(@JewelcraftingHighlevel,41414,10000,@JewelcraftingSkill,325,0), -- Spell Brilliant Pearl Band
+(@JewelcraftingHighlevel,37818,500,@JewelcraftingSkill,65,0), -- Spell Bronze Band of Force
+(@JewelcraftingHighlevel,41418,30000,@JewelcraftingSkill,365,0), -- Spell Crown of the Sea Witch
+(@JewelcraftingHighlevel,56197,100000,@JewelcraftingSkill,420,0), -- Spell Dream Signet
+(@JewelcraftingHighlevel,58143,30000,@JewelcraftingSkill,350,0), -- Spell Earthshadow Ring
+(@JewelcraftingHighlevel,64725,100000,@JewelcraftingSkill,420,0), -- Spell Emerald Choker
+(@JewelcraftingHighlevel,56531,100000,@JewelcraftingSkill,390,0), -- Spell Enchanted Tear
+(@JewelcraftingHighlevel,56203,150000,@JewelcraftingSkill,400,0), -- Spell Figurine - Emerald Boar
+(@JewelcraftingHighlevel,59759,150000,@JewelcraftingSkill,400,0), -- Spell Figurine - Monarch Crab
+(@JewelcraftingHighlevel,56199,150000,@JewelcraftingSkill,400,0), -- Spell Figurine - Ruby Hare
+(@JewelcraftingHighlevel,56202,150000,@JewelcraftingSkill,400,0), -- Spell Figurine - Saphire Owl
+(@JewelcraftingHighlevel,56201,150000,@JewelcraftingSkill,400,0), -- Spell Figurine - Twilight Serpent
+(@JewelcraftingHighlevel,73478,30000,@JewelcraftingSkill,500,0), -- Spell Fire Prism
+(@JewelcraftingHighlevel,34955,2500,@JewelcraftingSkill,180,0), -- Spell Golden Ring of Power
+(@JewelcraftingHighlevel,25305,1000,@JewelcraftingSkill,90,0), -- Spell Heavy Silver Ring
+(@JewelcraftingHighlevel,62242,150000,@JewelcraftingSkill,425,0), -- Spell Icy Prism
+(@JewelcraftingHighlevel,131691,40000,@JewelcraftingSkill,545,0), -- Spell Imperial Amethyst
+(@JewelcraftingHighlevel,56195,120000,@JewelcraftingSkill,380,0), -- Spell Jade Dagger Pendant
+(@JewelcraftingHighlevel,58144,30000,@JewelcraftingSkill,350,0), -- Spell Jade Ring of Slaying
+(@JewelcraftingHighlevel,26911,15000,@JewelcraftingSkill,290,0), -- Spell Living Emerald Pendant
+(@JewelcraftingHighlevel,38068,20000,@JewelcraftingSkill,325,0), -- Spell Mercurial Adamantite
+(@JewelcraftingHighlevel,25321,1500,@JewelcraftingSkill,120,0), -- Spell Moonsoul Crown
+(@JewelcraftingHighlevel,40514,8500,@JewelcraftingSkill,340,0), -- Spell Necklace of the Deep
+(@JewelcraftingHighlevel,55402,120000,@JewelcraftingSkill,420,0), -- Spell Persistent Earthsiege Diamond
+(@JewelcraftingHighlevel,55399,120000,@JewelcraftingSkill,420,0), -- Spell Powerful Earthsiege Diamond
+(@JewelcraftingHighlevel,131686,40000,@JewelcraftingSkill,550,0), -- Spell Primordial Ruby
+(@JewelcraftingHighlevel,41429,10000,@JewelcraftingSkill,350,0), -- Spell Purified Shadow Pearl
+(@JewelcraftingHighlevel,131593,40000,@JewelcraftingSkill,525,0), -- Spell River's Heart
+(@JewelcraftingHighlevel,64727,100000,@JewelcraftingSkill,420,0), -- Spell Runed Mana Band
+(@JewelcraftingHighlevel,26903,10000,@JewelcraftingSkill,275,0), -- Spell Sapphire Signet
+(@JewelcraftingHighlevel,64728,100000,@JewelcraftingSkill,420,0), -- Spell Scarlet Signet
+(@JewelcraftingHighlevel,131759,40000,@JewelcraftingSkill,550,0), -- Spell Secrets of the Stone
+(@JewelcraftingHighlevel,64726,100000,@JewelcraftingSkill,420,0), -- Spell Sky Sapphire Amulet
+(@JewelcraftingHighlevel,131695,40000,@JewelcraftingSkill,525,0), -- Spell Sun's Radiance
+(@JewelcraftingHighlevel,55394,120000,@JewelcraftingSkill,420,0), -- Spell Swift Skyflare Diamond
+(@JewelcraftingHighlevel,41415,10000,@JewelcraftingSkill,330,0), -- Spell The Black Pearl
+(@JewelcraftingHighlevel,73621,30000,@JewelcraftingSkill,490,0), -- Spell The Perforator
+(@JewelcraftingHighlevel,55386,120000,@JewelcraftingSkill,420,0), -- Spell Tireless Skyflare Diamond
+(@JewelcraftingHighlevel,34959,3000,@JewelcraftingSkill,200,0), -- Spell Truesilver Commander's Ring
+(@JewelcraftingHighlevel,131690,40000,@JewelcraftingSkill,535,0), -- Spell Vermillion Onyx
+(@JewelcraftingHighlevel,99540,40000,@JewelcraftingSkill,510,0), -- Spell Vicious Amberjewel Band
+(@JewelcraftingHighlevel,99543,45000,@JewelcraftingSkill,520,0), -- Spell Vicious Amberjewel Pendant
+(@JewelcraftingHighlevel,99544,45000,@JewelcraftingSkill,520,0), -- Spell Vicious Ruby Choker
+(@JewelcraftingHighlevel,99541,40000,@JewelcraftingSkill,510,0), -- Spell Vicious Ruby Signet
+(@JewelcraftingHighlevel,99542,45000,@JewelcraftingSkill,520,0), -- Spell Vicious Sapphire Necklace
+(@JewelcraftingHighlevel,99539,40000,@JewelcraftingSkill,510,0), -- Spell Vicious Sapphire Ring
+(@JewelcraftingHighlevel,131688,40000,@JewelcraftingSkill,535,0), -- Spell Wild Jade
+(@JewelcraftingHighlevel,73250,30000,@JewelcraftingSkill,425,0), -- Spell Accurate Nightstone
+(@JewelcraftingHighlevel,107627,40000,@JewelcraftingSkill,550,0), -- Spell Accurate Roguestone
+(@JewelcraftingHighlevel,53892,10000,@JewelcraftingSkill,350,0), -- Spell Accurate Shadow Crystal
+(@JewelcraftingHighlevel,73268,30000,@JewelcraftingSkill,425,0), -- Spell Adept Hessonite
+(@JewelcraftingHighlevel,107645,40000,@JewelcraftingSkill,550,0), -- Spell Adept Tiger Opal
+(@JewelcraftingHighlevel,73496,30000,@JewelcraftingSkill,435,0), -- Spell Alicite Pendant
+(@JewelcraftingHighlevel,26876,3000,@JewelcraftingSkill,220,0), -- Spell Aquamarine Pendant of the Warrior
+(@JewelcraftingHighlevel,73270,30000,@JewelcraftingSkill,425,0), -- Spell Artful Hessonite
+(@JewelcraftingHighlevel,107646,40000,@JewelcraftingSkill,525,0), -- Spell Artful Tiger Opal
+(@JewelcraftingHighlevel,130656,40000,@JewelcraftingSkill,530,0), -- Spell Assassin's Roguestone
+(@JewelcraftingHighlevel,31050,25000,@JewelcraftingSkill,320,0), -- Spell Azure Moonstone Ring
+(@JewelcraftingHighlevel,107598,40000,@JewelcraftingSkill,550,0), -- Spell Balanced Alexandrite
+(@JewelcraftingHighlevel,25498,600,@JewelcraftingSkill,110,0), -- Spell Barbaric Iron Collar
+(@JewelcraftingHighlevel,25617,1500,@JewelcraftingSkill,150,0), -- Spell Blazing Citrine Ring
+(@JewelcraftingHighlevel,56193,10000,@JewelcraftingSkill,350,0), -- Spell Bloodstone Band
+(@JewelcraftingHighlevel,28905,10000,@JewelcraftingSkill,300,0), -- Spell Bold Blood Garnet
+(@JewelcraftingHighlevel,53831,10000,@JewelcraftingSkill,350,0), -- Spell Bold Bloodstone
+(@JewelcraftingHighlevel,73222,30000,@JewelcraftingSkill,425,0), -- Spell Bold Carnelian
+(@JewelcraftingHighlevel,107622,40000,@JewelcraftingSkill,570,0), -- Spell Bold Pandarian Garnet
+(@JewelcraftingHighlevel,53852,10000,@JewelcraftingSkill,350,0), -- Spell Brilliant Bloodstone
+(@JewelcraftingHighlevel,73225,30000,@JewelcraftingSkill,425,0), -- Spell Brilliant Carnelian
+(@JewelcraftingHighlevel,36523,600,@JewelcraftingSkill,75,0), -- Spell Brilliant Necklace
+(@JewelcraftingHighlevel,107623,40000,@JewelcraftingSkill,560,0), -- Spell Brilliant Pandarian Garnet
+(@JewelcraftingHighlevel,38175,650,@JewelcraftingSkill,80,0), -- Spell Bronze Torc
+(@JewelcraftingHighlevel,73620,30000,@JewelcraftingSkill,460,0), -- Spell Carnelian Spikes
+(@JewelcraftingHighlevel,53874,10000,@JewelcraftingSkill,350,0), -- Spell Champion's Huge Citrine
+(@JewelcraftingHighlevel,107647,40000,@JewelcraftingSkill,545,0), -- Spell Champion's Tiger Opal
+(@JewelcraftingHighlevel,25621,2000,@JewelcraftingSkill,180,0), -- Spell Citrine Ring of Rapid Healing
+(@JewelcraftingHighlevel,107648,40000,@JewelcraftingSkill,565,0), -- Spell Crafty Tiger Opal
+(@JewelcraftingHighlevel,58142,30000,@JewelcraftingSkill,350,0), -- Spell Crystal Chalcedony Amulet
+(@JewelcraftingHighlevel,58141,30000,@JewelcraftingSkill,350,0), -- Spell Crystal Citrine Necklace
+(@JewelcraftingHighlevel,56205,10000,@JewelcraftingSkill,350,0), -- Spell Dark Jade Focusing Lens
+(@JewelcraftingHighlevel,107649,40000,@JewelcraftingSkill,525,0), -- Spell Deadly Tiger Opal
+(@JewelcraftingHighlevel,107628,40000,@JewelcraftingSkill,555,0), -- Spell Defender's Roguestone
+(@JewelcraftingHighlevel,53880,10000,@JewelcraftingSkill,350,0), -- Spell Deft Huge Citrine
+(@JewelcraftingHighlevel,107650,40000,@JewelcraftingSkill,530,0), -- Spell Deft Tiger Opal
+(@JewelcraftingHighlevel,34590,10000,@JewelcraftingSkill,300,0), -- Spell Delicate Blood Garnet
+(@JewelcraftingHighlevel,53832,10000,@JewelcraftingSkill,350,0), -- Spell Delicate Bloodstone
+(@JewelcraftingHighlevel,73223,30000,@JewelcraftingSkill,425,0), -- Spell Delicate Carnelian
+(@JewelcraftingHighlevel,107624,40000,@JewelcraftingSkill,530,0), -- Spell Delicate Pandarian Garnet
+(@JewelcraftingHighlevel,36526,10000,@JewelcraftingSkill,265,0), -- Spell Diamond Focus Ring
+(@JewelcraftingHighlevel,107599,40000,@JewelcraftingSkill,550,0), -- Spell Effulgent Alexandrite
+(@JewelcraftingHighlevel,25280,200,@JewelcraftingSkill,50,0), -- Spell Elegant Silver Ring
+(@JewelcraftingHighlevel,34961,10000,@JewelcraftingSkill,290,0), -- Spell Emerald Lion Ring
+(@JewelcraftingHighlevel,56530,10000,@JewelcraftingSkill,350,0), -- Spell Enchanted Pearl
+(@JewelcraftingHighlevel,107600,40000,@JewelcraftingSkill,560,0), -- Spell Energized Alexandrite
+(@JewelcraftingHighlevel,53925,10000,@JewelcraftingSkill,350,0), -- Spell Energized Dark Jade
+(@JewelcraftingHighlevel,25620,2000,@JewelcraftingSkill,170,0), -- Spell Engraved Truesilver Ring
+(@JewelcraftingHighlevel,53923,10000,@JewelcraftingSkill,350,0), -- Spell Lighting Dark Jade
+(@JewelcraftingHighlevel,73246,30000,@JewelcraftingSkill,425,0), -- Spell Etched Nightstone
+(@JewelcraftingHighlevel,107630,40000,@JewelcraftingSkill,525,0), -- Spell Etched Roguestone
+(@JewelcraftingHighlevel,53873,10000,@JewelcraftingSkill,350,0), -- Spell Etched Shadow Crystal
+(@JewelcraftingHighlevel,31048,20000,@JewelcraftingSkill,305,0), -- Spell Fel Iron Blood Ring
+(@JewelcraftingHighlevel,53876,10000,@JewelcraftingSkill,350,0), -- Spell Fierce Huge Citrine
+(@JewelcraftingHighlevel,107651,40000,@JewelcraftingSkill,555,0), -- Spell Fierce Tiger Opal
+(@JewelcraftingHighlevel,26872,2500,@JewelcraftingSkill,200,0), -- Spell Figurine - Jade Owl
+(@JewelcraftingHighlevel,107652,40000,@JewelcraftingSkill,535,0), -- Spell Fine Tiger Opal
+(@JewelcraftingHighlevel,53844,10000,@JewelcraftingSkill,350,0), -- Spell Flashing Bloodstone
+(@JewelcraftingHighlevel,107625,40000,@JewelcraftingSkill,550,0), -- Spell Flashing Pandarian Garnet
+(@JewelcraftingHighlevel,107601,40000,@JewelcraftingSkill,565,0), -- Spell Forceful Alexandrite
+(@JewelcraftingHighlevel,53920,10000,@JewelcraftingSkill,350,0), -- Spell Forceful Dark Jade
+(@JewelcraftingHighlevel,73239,30000,@JewelcraftingSkill,425,0), -- Spell Fractured Alicite
+(@JewelcraftingHighlevel,107640,40000,@JewelcraftingSkill,535,0), -- Spell Fractured Sunstone
+(@JewelcraftingHighlevel,73247,30000,@JewelcraftingSkill,425,0), -- Spell Glinting Nightstone
+(@JewelcraftingHighlevel,107631,40000,@JewelcraftingSkill,540,0), -- Spell Glinting Roguestone
+(@JewelcraftingHighlevel,53861,10000,@JewelcraftingSkill,350,0), -- Spell Glinting Shadow Crystal
+(@JewelcraftingHighlevel,28914,10000,@JewelcraftingSkill,315,0), -- Spell Glinting Shadow Draenite
+(@JewelcraftingHighlevel,25287,400,@JewelcraftingSkill,70,0), -- Spell Gloom Band
+(@JewelcraftingHighlevel,34960,10000,@JewelcraftingSkill,280,0), -- Spell Glowing Thorium Band
+(@JewelcraftingHighlevel,31049,20000,@JewelcraftingSkill,305,0), -- Spell Golden Draenite Ring
+(@JewelcraftingHighlevel,25613,1200,@JewelcraftingSkill,135,0), -- Spell Golden Dragon Ring
+(@JewelcraftingHighlevel,107632,40000,@JewelcraftingSkill,545,0), -- Spell Guardian's Roguestone
+(@JewelcraftingHighlevel,53871,10000,@JewelcraftingSkill,350,0), -- Spell Guardian's Shadow Crystal
+(@JewelcraftingHighlevel,31052,30000,@JewelcraftingSkill,335,0), -- Spell Heavy Adamantite Ring
+(@JewelcraftingHighlevel,26926,50,@JewelcraftingSkill,5,0), -- Spell Heavy Copper Ring
+(@JewelcraftingHighlevel,25612,1500,@JewelcraftingSkill,125,0), -- Spell Heavy Iron Knuckles
+(@JewelcraftingHighlevel,36524,800,@JewelcraftingSkill,105,0), -- Spell Heavy Jade Ring
+(@JewelcraftingHighlevel,73495,30000,@JewelcraftingSkill,450,0), -- Spell Hessonite Band
+(@JewelcraftingHighlevel,25283,100,@JewelcraftingSkill,30,0), -- Spell Inlaid Malachite Ring
+(@JewelcraftingHighlevel,28910,10000,@JewelcraftingSkill,300,0), -- Spell Inscribed Flame Spessarite
+(@JewelcraftingHighlevel,53872,10000,@JewelcraftingSkill,350,0), -- Spell Inscribed Huge Citrine
+(@JewelcraftingHighlevel,107653,40000,@JewelcraftingSkill,555,0), -- Spell Inscribed Tiger Opal
+(@JewelcraftingHighlevel,107602,40000,@JewelcraftingSkill,530,0), -- Spell Jagged Alexandrite
+(@JewelcraftingHighlevel,53870,10000,@JewelcraftingSkill,350,0), -- Spell Jagged Dark Jade
+(@JewelcraftingHighlevel,28917,10000,@JewelcraftingSkill,300,0), -- Spell Jagged Deep Peridot
+(@JewelcraftingHighlevel,73274,30000,@JewelcraftingSkill,425,0), -- Spell Jagged Jasper
+(@JewelcraftingHighlevel,73494,30000,@JewelcraftingSkill,425,0), -- Spell Jasper Ring
+(@JewelcraftingHighlevel,107654,40000,@JewelcraftingSkill,530,0), -- Spell Keen Tiger Opal
+(@JewelcraftingHighlevel,107604,40000,@JewelcraftingSkill,525,0), -- Spell Lighting Alexandrite
+(@JewelcraftingHighlevel,107655,40000,@JewelcraftingSkill,540,0), -- Spell Lucent Tiger Opal
+(@JewelcraftingHighlevel,32178,100,@JewelcraftingSkill,20,0), -- Spell Malachite Pendat
+(@JewelcraftingHighlevel,107605,40000,@JewelcraftingSkill,540,0), -- Spell Misty Alexandrite
+(@JewelcraftingHighlevel,53922,10000,@JewelcraftingSkill,350,0), -- Spell Misty Dark Jade
+(@JewelcraftingHighlevel,107633,40000,@JewelcraftingSkill,525,0), -- Spell Mysterious Roguestone
+(@JewelcraftingHighlevel,107641,40000,@JewelcraftingSkill,545,0), -- Spell Mystic Sunstone
+(@JewelcraftingHighlevel,73497,30000,@JewelcraftingSkill,460,0), -- Spell Nightstone Choker
+(@JewelcraftingHighlevel,107606,40000,@JewelcraftingSkill,530,0), -- Spell Nimble Alexandrite
+(@JewelcraftingHighlevel,26907,10000,@JewelcraftingSkill,280,0), -- Spell Onslaught Ring
+(@JewelcraftingHighlevel,122661,40000,@JewelcraftingSkill,500,0), -- Spell Ornate Band
+(@JewelcraftingHighlevel,26928,100,@JewelcraftingSkill,30,0), -- Spell Ornate Tigerseye Necklace
+(@JewelcraftingHighlevel,25610,1500,@JewelcraftingSkill,120,0), -- Spell Pendant of the Agate Shield
+(@JewelcraftingHighlevel,107607,40000,@JewelcraftingSkill,555,0), -- Spell Piercing Alexandrite
+(@JewelcraftingHighlevel,107656,40000,@JewelcraftingSkill,545,0), -- Spell Polished Tiger Opal
+(@JewelcraftingHighlevel,53882,10000,@JewelcraftingSkill,350,0), -- Spell Potent Huge Citrine
+(@JewelcraftingHighlevel,107657,40000,@JewelcraftingSkill,560,0), -- Spell Potent Tiger Opal
+(@JewelcraftingHighlevel,54017,10000,@JewelcraftingSkill,350,0), -- Spell Precise Bloodstone
+(@JewelcraftingHighlevel,73226,30000,@JewelcraftingSkill,425,0), -- Spell Precise Carnelian
+(@JewelcraftingHighlevel,107626,40000,@JewelcraftingSkill,540,0), -- Spell Precise Pandarian Garnet
+(@JewelcraftingHighlevel,62941,10000,@JewelcraftingSkill,300,0), -- Spell Prismatic Black Diamond
+(@JewelcraftingHighlevel,107608,40000,@JewelcraftingSkill,570,0), -- Spell Puissant Alexandrite
+(@JewelcraftingHighlevel,73279,30000,@JewelcraftingSkill,425,0), -- Spell Puissant Jasper
+(@JewelcraftingHighlevel,41420,8500,@JewelcraftingSkill,325,0), -- Spell Purified Jaggal Pearl
+(@JewelcraftingHighlevel,107634,40000,@JewelcraftingSkill,565,0), -- Spell Purified Roguestone
+(@JewelcraftingHighlevel,73234,30000,@JewelcraftingSkill,425,0), -- Spell Quick Alicite
+(@JewelcraftingHighlevel,53856,10000,@JewelcraftingSkill,350,0), -- Spell Quick Sun Crystal
+(@JewelcraftingHighlevel,107642,40000,@JewelcraftingSkill,555,0), -- Spell Quick Sunstone
+(@JewelcraftingHighlevel,107609,40000,@JewelcraftingSkill,575,0), -- Spell Radiant Alexandrite
+(@JewelcraftingHighlevel,28916,10000,@JewelcraftingSkill,300,0), -- Spell Radiant Deep Peridot
+(@JewelcraftingHighlevel,73266,30000,@JewelcraftingSkill,425,0), -- Spell Reckless Hessonite
+(@JewelcraftingHighlevel,107658,40000,@JewelcraftingSkill,540,0), -- Spell Reckless Tiger Opal
+(@JewelcraftingHighlevel,36525,4000,@JewelcraftingSkill,230,0), -- Spell Red Ring of Destruction
+(@JewelcraftingHighlevel,107610,40000,@JewelcraftingSkill,535,0), -- Spell Regal Alexandrite
+(@JewelcraftingHighlevel,53918,10000,@JewelcraftingSkill,350,0), -- Spell Regal Dark Jade
+(@JewelcraftingHighlevel,53893,10000,@JewelcraftingSkill,350,0), -- Spell Resolute Huge Citrine
+(@JewelcraftingHighlevel,107659,40000,@JewelcraftingSkill,575,0), -- Spell Resolute Tiger Opal
+(@JewelcraftingHighlevel,107660,40000,@JewelcraftingSkill,575,0), -- Spell Resplendent Tiger Opal
+(@JewelcraftingHighlevel,107635,40000,@JewelcraftingSkill,575,0), -- Spell Retaliating Roguestone
+(@JewelcraftingHighlevel,28948,10000,@JewelcraftingSkill,325,0), -- Spell Rigid Azure Moonstone
+(@JewelcraftingHighlevel,53854,10000,@JewelcraftingSkill,350,0), -- Spell Rigid Chalcedony
+(@JewelcraftingHighlevel,107617,40000,@JewelcraftingSkill,525,0), -- Spell Rigid Lapis Lazuli
+(@JewelcraftingHighlevel,73230,30000,@JewelcraftingSkill,425,0), -- Spell Rigid Zephyrite
+(@JewelcraftingHighlevel,25317,600,@JewelcraftingSkill,80,0), -- Spell Ring of Silver Might
+(@JewelcraftingHighlevel,25318,800,@JewelcraftingSkill,100,0), -- Spell Ring of Twilight Shadows
+(@JewelcraftingHighlevel,26883,4000,@JewelcraftingSkill,235,0), -- Spell Ruby Pendant of Fire
+(@JewelcraftingHighlevel,26908,12000,@JewelcraftingSkill,280,0), -- Spell Sapphire Pendant of Winter Night
+(@JewelcraftingHighlevel,107611,40000,@JewelcraftingSkill,545,0), -- Spell Sensei's Alexandrite
+(@JewelcraftingHighlevel,73281,30000,@JewelcraftingSkill,425,0), -- Spell Sensei's Jasper
+(@JewelcraftingHighlevel,56206,10000,@JewelcraftingSkill,350,0), -- Spell Shadow Crystal Focusing Lens
+(@JewelcraftingHighlevel,56208,10000,@JewelcraftingSkill,350,0), -- Spell Shadow Jade Focusing Lens
+(@JewelcraftingHighlevel,122662,40000,@JewelcraftingSkill,510,0), -- Spell Shadowfire Necklace
+(@JewelcraftingHighlevel,58146,50000,@JewelcraftingSkill,390,0), -- Spell Shadowmight Ring
+(@JewelcraftingHighlevel,107612,40000,@JewelcraftingSkill,540,0), -- Spell Shattered Alexandrite
+(@JewelcraftingHighlevel,73241,30000,@JewelcraftingSkill,425,0), -- Spell Shifting Nightstone
+(@JewelcraftingHighlevel,107636,40000,@JewelcraftingSkill,535,0), -- Spell Shifting Roguestone
+(@JewelcraftingHighlevel,53860,10000,@JewelcraftingSkill,350,0), -- Spell Shifting Shadow Crystal
+(@JewelcraftingHighlevel,26902,10000,@JewelcraftingSkill,260,0), -- Spell Simple Opal Ring
+(@JewelcraftingHighlevel,25284,400,@JewelcraftingSkill,60,0), -- Spell Simple Pearl Ring
+(@JewelcraftingHighlevel,73267,30000,@JewelcraftingSkill,425,0), -- Spell Skillful Hessonite
+(@JewelcraftingHighlevel,107661,40000,@JewelcraftingSkill,560,0), -- Spell Skillful Tiger Opal
+(@JewelcraftingHighlevel,73232,30000,@JewelcraftingSkill,425,0), -- Spell Smooth Alicite
+(@JewelcraftingHighlevel,53845,10000,@JewelcraftingSkill,350,0), -- Spell Smooth Sund Crystal
+(@JewelcraftingHighlevel,107643,40000,@JewelcraftingSkill,565,0), -- Spell Smooth Sunstone
+(@JewelcraftingHighlevel,28950,10000,@JewelcraftingSkill,300,0), -- Spell Solid Azure Moonstone
+(@JewelcraftingHighlevel,25490,300,@JewelcraftingSkill,50,0), -- Spell Aolid Bronze Ring
+(@JewelcraftingHighlevel,53934,10000,@JewelcraftingSkill,350,0), -- Spell Solid Chalcedony
+(@JewelcraftingHighlevel,107619,40000,@JewelcraftingSkill,535,0), -- Spell Solid Lapis Lazuli
+(@JewelcraftingHighlevel,73227,30000,@JewelcraftingSkill,425,0), -- Spell Solid Zephyrite
+(@JewelcraftingHighlevel,73240,30000,@JewelcraftingSkill,425,0), -- Spell Sovereign Nightstone
+(@JewelcraftingHighlevel,107637,40000,@JewelcraftingSkill,535,0), -- Spell Sovereign Roguestone
+(@JewelcraftingHighlevel,53859,10000,@JewelcraftingSkill,350,0), -- Spell Sovereign Shadow Crystal
+(@JewelcraftingHighlevel,28936,10000,@JewelcraftingSkill,325,0), -- Spell Sovereign Shadow Draenite
+(@JewelcraftingHighlevel,28953,10000,@JewelcraftingSkill,300,0), -- Spell Sparkling Azure Moonstone
+(@JewelcraftingHighlevel,53941,10000,@JewelcraftingSkill,350,0), -- Spell Sparkling Chalcedony
+(@JewelcraftingHighlevel,107620,40000,@JewelcraftingSkill,545,0), -- Spell Sparkling Lapis Lazuli
+(@JewelcraftingHighlevel,73228,30000,@JewelcraftingSkill,425,0), -- Spell Sparkling Zephyrite
+(@JewelcraftingHighlevel,107662,40000,@JewelcraftingSkill,570,0), -- Spell Splendid Tiger Opal
+(@JewelcraftingHighlevel,53891,10000,@JewelcraftingSkill,350,0), -- Spell Stalwart Huge Citrine
+(@JewelcraftingHighlevel,107663,40000,@JewelcraftingSkill,565,0), -- Spell Stalwart Tiger Opal
+(@JewelcraftingHighlevel,107613,40000,@JewelcraftingSkill,555,0), -- Spell Steady Alexandrite
+(@JewelcraftingHighlevel,58145,50000,@JewelcraftingSkill,390,0), -- Spell Stoneguard Band
+(@JewelcraftingHighlevel,107621,40000,@JewelcraftingSkill,555,0), -- Spell Stormy Lapis Lazuli
+(@JewelcraftingHighlevel,53843,10000,@JewelcraftingSkill,350,0), -- Spell Subtle Sun Crystal
+(@JewelcraftingHighlevel,107644,40000,@JewelcraftingSkill,575,0), -- Spell Subtle Sunstone
+(@JewelcraftingHighlevel,56194,10000,@JewelcraftingSkill,350,0), -- Spell Sun ROck Ring
+(@JewelcraftingHighlevel,130655,40000,@JewelcraftingSkill,570,0), -- Spell Tense Roguestone
+(@JewelcraftingHighlevel,107665,40000,@JewelcraftingSkill,550,0), -- Spell Tenuous Tiger Opal
+(@JewelcraftingHighlevel,31051,30000,@JewelcraftingSkill,335,0), -- Spell Thick Adamantite Necklace
+(@JewelcraftingHighlevel,26927,300,@JewelcraftingSkill,50,0), -- Spell Thick Bronze Necklace
+(@JewelcraftingHighlevel,32179,100,@JewelcraftingSkill,20,0), -- Spell Tigersece Band
+(@JewelcraftingHighlevel,73243,30000,@JewelcraftingSkill,425,0), -- Spell Timeless Nightstone
+(@JewelcraftingHighlevel,107638,40000,@JewelcraftingSkill,560,0), -- Spell Timeless Roguestone
+(@JewelcraftingHighlevel,53894,10000,@JewelcraftingSkill,350,0), -- Spell Timeless Shadow Crystal
+(@JewelcraftingHighlevel,28925,10000,@JewelcraftingSkill,300,0), -- Spell Timeless Shadow Draenite
+(@JewelcraftingHighlevel,26885,5000,@JewelcraftingSkill,240,0), -- Spell Truesilver Healing Ring
+(@JewelcraftingHighlevel,107614,40000,@JewelcraftingSkill,545,0), -- Spell Turbid Alexandrite
+(@JewelcraftingHighlevel,73249,30000,@JewelcraftingSkill,425,0), -- Spell Veiled Nightstone
+(@JewelcraftingHighlevel,107639,40000,@JewelcraftingSkill,530,0), -- Spell Veiled Roguestone
+(@JewelcraftingHighlevel,53883,10000,@JewelcraftingSkill,350,0), -- Spell Veiled Shadow Crystal
+(@JewelcraftingHighlevel,107615,40000,@JewelcraftingSkill,525,0), -- Spell Vivid Alexandrite
+(@JewelcraftingHighlevel,107666,40000,@JewelcraftingSkill,570,0), -- Spell Wicked Tiger Opal
+(@JewelcraftingHighlevel,107667,40000,@JewelcraftingSkill,535,0), -- Spell Willful Tiger Opal
+(@JewelcraftingHighlevel,107616,40000,@JewelcraftingSkill,535,0), -- Spell Zen Alexandrite
+(@JewelcraftingHighlevel,25278,200,@JewelcraftingSkill,50,0), -- Spell Bronze Setting
+(@JewelcraftingHighlevel,32801,200,@JewelcraftingSkill,50,0), -- Spell Coarse Stone Statue
+(@JewelcraftingHighlevel,32809,3500,@JewelcraftingSkill,225,0), -- Spell Dense Stone Statue
+(@JewelcraftingHighlevel,32807,600,@JewelcraftingSkill,110,0), -- Spell Heavy Stone Statue
+(@JewelcraftingHighlevel,25615,1500,@JewelcraftingSkill,150,0), -- Spell Mithril Filigree
+(@JewelcraftingHighlevel,122663,40000,@JewelcraftingSkill,525,0), -- Spell Scrying Roguestone
+(@JewelcraftingHighlevel,32808,2000,@JewelcraftingSkill,175,0), -- Spell Solid Stone Statue
+(@JewelcraftingHighlevel,73622,30000,@JewelcraftingSkill,435,0), -- Spell Stardust
+(@JewelcraftingHighlevel,26880,3500,@JewelcraftingSkill,225,0), -- Spell Thorium Setting
+-- Jewelcrafting-Lowlevel --
+(@JewelcraftingLowlevel, 25229, 10, 0, 0, 5), -- Spell Jewelcrafting Rank 1
+(@JewelcraftingLowlevel, 32801, 200,@JewelcraftingSkill, 50, 0), -- Spell Coarse Stone Statue
+(@JewelcraftingLowlevel, 25283, 100,@JewelcraftingSkill, 30, 0), -- Spell Inlaid Malachite Ring
+(@JewelcraftingLowlevel, 25284, 400,@JewelcraftingSkill, 60, 0), -- Spell Simple Pearl Ring
+(@JewelcraftingLowlevel, 25287, 400,@JewelcraftingSkill, 70, 0), -- Spell Gloom Band
+(@JewelcraftingLowlevel, 25490, 300,@JewelcraftingSkill, 50, 0), -- Spell Solid Bronze Ring
+(@JewelcraftingLowlevel, 25278, 200,@JewelcraftingSkill, 50, 0), -- Spell Bronze Setting
+(@JewelcraftingLowlevel, 25280, 200,@JewelcraftingSkill, 50, 0), -- Spell Elegant Silver Ring
+(@JewelcraftingLowlevel, 26926, 50,@JewelcraftingSkill, 5, 0), -- Spell Heavy Copper Ring
+(@JewelcraftingLowlevel, 26927, 300,@JewelcraftingSkill, 50, 0), -- Spell Thick Bronze Necklace
+(@JewelcraftingLowlevel, 26928, 100,@JewelcraftingSkill, 30, 0), -- Spell Ornate Tigerseye Necklace
+(@JewelcraftingLowlevel, 31252, 100,@JewelcraftingSkill, 20, 5), -- Spell Prospecting
+(@JewelcraftingLowlevel, 32179, 100,@JewelcraftingSkill, 20, 0), -- Spell Tigerseye Band
+(@JewelcraftingLowlevel, 32178, 100,@JewelcraftingSkill, 20, 0), -- Spell Malachite Pendant
+(@JewelcraftingLowlevel, 37818, 500,@JewelcraftingSkill, 65, 0), -- Spell Bronze Band of Force
+(@JewelcraftingLowlevel, 36523, 600,@JewelcraftingSkill, 75, 0), -- Spell Brilliant Necklace
+-- Jewelcrafting-Teacher --
+(52645,-@JewelcraftingHighlevel,0,0,0,0), -- Aessa Silverdew - Darnassus
+(15501,-@JewelcraftingHighlevel,0,0,0,0), -- Aleinia - Silvermoon City
+(26997,-@JewelcraftingHighlevel,0,0,0,0), -- Alestos - Borean Tundra
+(86010,-@JewelcraftingHighlevel,0,0,0,0), -- Alixander Swiftsteel - Silvermoon City
+(85916,-@JewelcraftingHighlevel,0,0,0,0), -- Artificer Nissea - Stormshield
+(19778,-@JewelcraftingHighlevel,0,0,0,0), -- Farii - The Exodar
+(26982,-@JewelcraftingHighlevel,0,0,0,0), -- Geba'li - Borean Tundra
+(19063,-@JewelcraftingHighlevel,0,0,0,0), -- Hamanar - Shattrath City
+(52586,-@JewelcraftingHighlevel,0,0,0,0), -- Hanner Gembold - Ironforge
+(33614,-@JewelcraftingHighlevel,0,0,0,0), -- Jewelcrafting - Shattrath City
+(18751,-@JewelcraftingHighlevel,0,0,0,0), -- Kalaen - Hellfire Peninsula
+(19775,-@JewelcraftingHighlevel,0,0,0,0), -- Kalinda - Silvermoon City
+(46675,-@JewelcraftingHighlevel,0,0,0,0), -- Lugrah - Orgrimmar
+(65098,-@JewelcraftingHighlevel,0,0,0,0), -- Mai the Jade Shaper - The Jade Forest
+(52657,-@JewelcraftingHighlevel,0,0,0,0), -- Nahari Cloudchaser - Thunder Buff
+(52587,-@JewelcraftingHighlevel,0,0,0,0), -- Neller Fayne - Undercity
+(33680,-@JewelcraftingHighlevel,0,0,0,0), -- Nemiha - Shattrath City
+(33590,-@JewelcraftingHighlevel,0,0,0,0), -- Oluros - Icecrown
+(26915,-@JewelcraftingHighlevel,0,0,0,0), -- Ounhulo - Howling Fjord
+(18774,-@JewelcraftingHighlevel,0,0,0,0), -- Tatiana - Hellfire Peninsula
+(44582,-@JewelcraftingHighlevel,0,0,0,0), -- Theresa Denman - Stormwind
+(28701,-@JewelcraftingHighlevel,0,0,0,0); -- Timothy Jones - Dalaran
+
+-- Jewelcrafting Rank 8
+-- Added the, so far, last rank of Jewelcrafting(8) to the table
+-- first_spell_id = 25229
+-- spell_id = 110420
+-- rank = 8
+DELETE FROM `spell_ranks` WHERE `first_spell_id` = 25229 && `rank` = 8;
+INSERT INTO `spell_ranks` (`first_spell_id`,`spell_id`,`rank`) VALUES (25229,110420,8);
diff --git a/sql/updates/world/6.x/2016_05_31_04_world.sql b/sql/updates/world/6.x/2016_05_31_04_world.sql
new file mode 100644
index 00000000000..4c1cc0586e4
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_31_04_world.sql
@@ -0,0 +1,4 @@
+--
+DELETE FROM `spell_target_position` WHERE `ID` = 140395;
+INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`) VALUES
+(140395,0,1098,5633.36,4679.78,55.6488);
diff --git a/sql/updates/world/6.x/2016_05_31_05_world.sql b/sql/updates/world/6.x/2016_05_31_05_world.sql
new file mode 100644
index 00000000000..9f960d52763
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_31_05_world.sql
@@ -0,0 +1,13 @@
+-- Scorpion SmartScript
+DELETE FROM smart_scripts WHERE entryorguid = 3125 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
+(3125,0,0,0,0,0,100,0,4000,4500,32000,38000,11,79687,0,0,0,0,0,2,0,0,0,0,0,0,0,'Clattering Scorpid - In Combat - Cast \Poison\ (No Repeat)'),
+(3125,0,1,0,0,0,100,0,2000,9000,15000,24000,11,73672,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Envenom'),
+(3125,0,2,0,31,0,100,0,73672,0,0,0,33,39236,0,0,0,0,0,2,0,0,0,0,0,0,0,'Give Credit on Totem Aura');
+
+-- Condition to give credit
+DELETE FROM conditions WHERE Sourceentry = 3125 AND SourceTypeOrReferenceId = 22;
+INSERT INTO conditions (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`)
+VALUES
+(22,3,3125,0,0,1,0,73673,1,0,0,0,0,'','SAI - Give kill credit when Aura');
diff --git a/sql/updates/world/6.x/2016_05_31_06_world.sql b/sql/updates/world/6.x/2016_05_31_06_world.sql
new file mode 100644
index 00000000000..dfef4f8d9d9
--- /dev/null
+++ b/sql/updates/world/6.x/2016_05_31_06_world.sql
@@ -0,0 +1,9 @@
+--
+-- set these quests to be exclusive to the Monk class:
+-- Alliance Monk quest Palm of the Tiger (31142)
+-- Horde Monk quest Tiger Palm (31147,31157)
+DELETE FROM `quest_template_addon` WHERE `ID` IN (31142,31147,31157);
+INSERT INTO `quest_template_addon` (`ID`,`AllowableClasses`,`NextQuestID`,`ExclusiveGroup`) VALUES
+(31142, 10, 31143, 0),
+(31147, 10, 31148, 24964),
+(31157, 10, 0, 0);
diff --git a/sql/updates/world/6.x/2016_06_05_00_world.sql b/sql/updates/world/6.x/2016_06_05_00_world.sql
new file mode 100644
index 00000000000..6de35c03ea0
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_05_00_world.sql
@@ -0,0 +1,3 @@
+--
+UPDATE `creature_template` SET `ScriptName`='' WHERE `entry` IN (4488,17209,17238,89713,97229);
+DELETE from `item_script_names` WHERE `ScriptName` IN ('423','internalitemhandler');
diff --git a/sql/updates/world/6.x/2016_06_05_01_world.sql b/sql/updates/world/6.x/2016_06_05_01_world.sql
new file mode 100644
index 00000000000..a05c0962722
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_05_01_world.sql
@@ -0,0 +1,3 @@
+--
+UPDATE `gossip_menu_option` SET `option_text`='Trick or Treat!' WHERE `menu_id`=1291 AND `id`=0;
+UPDATE `gossip_menu_option` SET `option_text`='What can I do at an inn?', `OptionBroadcastTextID`=4307 WHERE `menu_id`=1291 AND `id`=2;
diff --git a/sql/updates/world/6.x/2016_06_05_02_world.sql b/sql/updates/world/6.x/2016_06_05_02_world.sql
new file mode 100644
index 00000000000..b6135cf1189
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_05_02_world.sql
@@ -0,0 +1,26 @@
+-- Pile of Corpses
+SET @ENTRY := 59722;
+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,25,0,100,6,0,0,0,0,11,114951,0,0,0,0,0,1,0,0,0,0,0,0,0,"Pile of Corpses - Cast Pile of Corpses On Reset"),
+(@ENTRY,0,1,0,0,0,100,6,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Pile of Corpses - Set React Passive on Reset.");
+
+
+-- Scarlet Centurion SAI
+SET @ENTRY := 59746;
+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,0,0,100,6,15000,15000,35000,35000,11,115511,2,0,0,0,0,1,0,0,0,0,0,0,0,"Scarlet Centurion - On IC Timer - Cast Retaliation."),
+(@ENTRY,0,1,0,1,0,100,6,1000,1000,1000,1000,49,0,0,0,0,0,0,11,59771,20,0,0,0,0,0,"Scarlet Centurion - On OOC Timer - Attack Start on Zombified Corpse."),
+(@ENTRY,0,2,0,0,0,100,6,7000,7000,16000,16000,11,115519,0,0,0,0,0,2,0,0,0,0,0,0,0,"Scarlet Centurion - On IC Timer - Cast Cleave.");
+
+
+-- Scarlet Flamethrower SAI
+SET @ENTRY := 59705;
+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,0,0,100,6,7000,7000,20000,20000,11,115506,0,0,0,0,0,1,0,0,0,0,0,0,0,"Scarlet Flamethrower - On IC Timer - Cast Flamethrower."),
+(@ENTRY,0,1,0,1,0,100,6,1000,1000,1000,1000,49,0,0,0,0,0,0,11,59771,20,0,0,0,0,0,"Scarlet Flamethrower - On OOC Timer - Attack Start on Zombified Corpse.");
diff --git a/sql/updates/world/6.x/2016_06_05_03_world.sql b/sql/updates/world/6.x/2016_06_05_03_world.sql
new file mode 100644
index 00000000000..ea17874ede8
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_05_03_world.sql
@@ -0,0 +1,4 @@
+--
+DELETE FROM `instance_template` WHERE `map` = 1448;
+INSERT INTO `instance_template` (`map`, `parent`, `allowMount`) VALUES
+(1448, 1116, 1);
diff --git a/sql/updates/world/6.x/2016_06_05_04_world.sql b/sql/updates/world/6.x/2016_06_05_04_world.sql
new file mode 100644
index 00000000000..36b52243afd
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_05_04_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `trinity_string` WHERE `entry`=5007;
+INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES
+(5007,"Uses invalid phaseID.");
diff --git a/sql/updates/world/6.x/2016_06_07_00_world.sql b/sql/updates/world/6.x/2016_06_07_00_world.sql
new file mode 100644
index 00000000000..ac66e65b9a7
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_07_00_world.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `creature_template` SET `npcflag`=`npcflag`|16 WHERE `entry` IN (86010,86027);
diff --git a/sql/updates/world/6.x/2016_06_07_01_world.sql b/sql/updates/world/6.x/2016_06_07_01_world.sql
new file mode 100644
index 00000000000..858aa3ab006
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_07_01_world.sql
@@ -0,0 +1,2 @@
+--
+DELETE FROM `npc_trainer` WHERE `SpellID` IN (11289,11290,12810);
diff --git a/sql/updates/world/6.x/2016_06_07_02_world.sql b/sql/updates/world/6.x/2016_06_07_02_world.sql
new file mode 100644
index 00000000000..e333f8064ef
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_07_02_world.sql
@@ -0,0 +1,133 @@
+--
+DELETE FROM creature_model_info WHERE `DisplayID` IN (63353, 62228, 63352, 63355, 63357, 63363, 62056, 63356, 63348, 63358, 63362, 63360, 63361, 62357, 62676, 62011, 63023, 61989, 62012, 62816, 63549, 62458, 64433, 63547, 63139, 62633, 62014, 63285, 63282, 63289, 63281, 64438, 64685, 63552, 62040, 63081, 61857, 63022, 61751, 61753, 61885, 62650, 64724, 64721, 64725, 64723, 64101, 63024, 62882, 64119, 63144, 63751, 62555, 64043, 62180, 64042, 61982, 64044, 62179, 62186, 63099, 64131, 63343, 64023, 63193, 63238, 63241, 63240, 61851, 62747, 63210, 62006, 64134, 63208, 61781, 63214, 62579, 62578, 62679, 62677, 64854, 63052, 63542, 63546, 63545, 63539, 63541, 63543, 63169, 63515, 63178, 63180, 63514, 62258, 63171, 63168, 62036, 62035, 62185, 61842, 61806, 64266, 61752, 63467, 62368, 62311, 64115, 62632, 63044, 64112, 63143, 62227, 62240, 62183, 64049, 64884, 63447, 64196, 62241, 64596, 65663, 65704, 62467, 62007, 63761, 63753, 63757, 62361, 64702, 64242);
+INSERT INTO creature_model_info (`DisplayID`, `BoundingRadius`, `CombatReach`, `DisplayID_Other_Gender`) VALUES
+(63353, 0.347, 1.5, 0), -- 63353
+(62228, 1, 1.5, 0), -- 62228
+(63352, 0.347, 1.5, 0), -- 63352
+(63355, 0.208, 1.5, 0), -- 63355
+(63357, 0.306, 1.5, 0), -- 63357
+(63363, 0.698, 3, 0), -- 63363
+(62056, 0.403, 1.3, 0), -- 62056
+(63356, 0.306, 1.5, 0), -- 63356
+(63348, 0.306, 1.5, 0), -- 63348
+(63358, 0.383, 1.5, 0), -- 63358
+(63362, 0.7797601, 3.24, 0), -- 63362
+(63360, 0.372, 1.5, 0), -- 63360
+(63361, 0.372, 1.5, 0), -- 63361
+(62357, 0.558, 2.25, 0), -- 62357
+(62676, 2, 1.5, 0), -- 62676
+(62011, 0.372, 1.5, 0), -- 62011
+(63023, 2.4, 1.5, 0), -- 63023
+(61989, 0.09, 0.09, 0), -- 61989
+(62012, 0.236, 1.5, 0), -- 62012
+(62816, 4, 1.5, 0), -- 62816
+(63549, 0.4836, 1.95, 0), -- 63549
+(62458, 0.6, 2.4, 0), -- 62458
+(64433, 1.6, 3.2, 0), -- 64433
+(63547, 0.744, 3, 0), -- 63547
+(63139, 0.7068, 2.85, 0), -- 63139
+(62633, 0.372, 1.5, 0), -- 62633
+(62014, 0.372, 1.5, 0), -- 62014
+(63285, 0.306, 1.5, 0), -- 63285
+(63282, 0.8725, 3.75, 0), -- 63282
+(63289, 0.347222, 1.5, 0), -- 63289
+(63281, 0.372, 1.5, 0), -- 63281
+(64438, 0.372, 1.5, 0), -- 64438
+(64685, 0.306, 1.5, 0), -- 64685
+(63552, 0.383, 1.5, 0), -- 63552
+(62040, 0.372, 1.5, 0), -- 62040
+(63081, 0.306, 1.5, 0), -- 63081
+(61857, 2.8, 1.5, 0), -- 61857
+(63022, 2.4, 1.5, 0), -- 63022
+(61751, 0.5208, 2.1, 0), -- 61751
+(61753, 0.5394, 2.175, 0), -- 61753
+(61885, 0.6696, 2.7, 0), -- 61885
+(62650, 7.5, 28.5, 0), -- 62650
+(64724, 0.5, 5, 0), -- 64724
+(64721, 0.5, 5, 0), -- 64721
+(64725, 0.5, 5, 0), -- 64725
+(64723, 1.5, 10.5, 0), -- 64723
+(64101, 0.555, 1.5, 0), -- 64101
+(63024, 2.3, 1.388889, 0), -- 63024
+(62882, 0.5, 1, 0), -- 62882
+(64119, 3.6, 24, 0), -- 64119
+(63144, 0.75, 2.5, 0), -- 63144
+(63751, 0.694, 3, 0), -- 63751
+(62555, 0.9, 1.5, 0), -- 62555
+(64043, 3.5, 1.401869, 0), -- 64043
+(62180, 0.3, 4, 0), -- 62180
+(64042, 3.5, 1.5, 0), -- 64042
+(61982, 0.3, 1.5, 0), -- 61982
+(64044, 3.5, 1.376147, 0), -- 64044
+(62179, 1, 1.5, 0), -- 62179
+(62186, 1, 1.5, 0), -- 62186
+(63099, 0.6, 1.5, 0), -- 63099
+(64131, 0.155, 0.75, 0), -- 64131
+(63343, 0.5, 5, 0), -- 63343
+(64023, 0.9, 3, 0), -- 64023
+(63193, 0.75, 10.5, 0), -- 63193
+(63238, 1.733715, 1.5, 0), -- 63238
+(63241, 1.444762, 1.25, 0), -- 63241
+(63240, 0.68751, 30, 0), -- 63240
+(61851, 0.744, 3, 0), -- 61851
+(62747, 0.45, 1.5, 0), -- 62747
+(63210, 3, 1.5, 0), -- 63210
+(62006, 0.306, 1.5, 0), -- 62006
+(64134, 0.217, 0.7, 0), -- 64134
+(63208, 0.472, 3, 0), -- 63208
+(61781, 0.236, 1.5, 0), -- 61781
+(63214, 2.5, 1.5, 0), -- 63214
+(62579, 0.465, 1.875, 0), -- 62579
+(62578, 0.465, 1.875, 0), -- 62578
+(62679, 2, 1.5, 0), -- 62679
+(62677, 2, 1.5, 0), -- 62677
+(64854, 0.5, 5, 0), -- 64854
+(63052, 0.975, 4.875, 0), -- 63052
+(63542, 0.372, 1.5, 0), -- 63542
+(63546, 0.558, 2.25, 0), -- 63546
+(63545, 0.236, 1.5, 0), -- 63545
+(63539, 0.372, 1.5, 0), -- 63539
+(63541, 0.372, 1.5, 0), -- 63541
+(63543, 0.236, 1.5, 0), -- 63543
+(63169, 0.24, 1.5, 0), -- 63169
+(63515, 1.14, 2.85, 0), -- 63515
+(63178, 3.15, 13.5, 0), -- 63178
+(63180, 3.15, 13.5, 0), -- 63180
+(63514, 1.65, 4.125, 0), -- 63514
+(62258, 6.335, 6.25, 0), -- 62258
+(63171, 0.42, 1.5, 0), -- 63171
+(63168, 0.24, 1.5, 0), -- 63168
+(62036, 1.1, 1.65, 0), -- 62036
+(62035, 1.1, 1.65, 0), -- 62035
+(62185, 1, 1.5, 0), -- 62185
+(61842, 0.2596, 1.65, 0), -- 61842
+(61806, 0.4092, 1.65, 0), -- 61806
+(64266, 0.31, 12, 0), -- 64266
+(61752, 0.5394, 2.175, 0), -- 61752
+(63467, 0.225, 3, 0), -- 63467
+(62368, 0.1175, 0.5, 0), -- 62368
+(62311, 22, 44, 0), -- 62311
+(64115, 0.6, 1.5, 0), -- 64115
+(62632, 1.2, 1.5, 0), -- 62632
+(63044, 2.75, 4.125, 0), -- 63044
+(64112, 0.15, 0.75, 0), -- 64112
+(63143, 0.45, 1.5, 0), -- 63143
+(62227, 0.6, 3.5, 0), -- 62227
+(62240, 0.8100001, 2.025, 0), -- 62240
+(62183, 1, 1, 0), -- 62183
+(64049, 0.306, 1.5, 0), -- 64049
+(64884, 0.306, 1.5, 0), -- 64884
+(63447, 0.09, 1.5, 0), -- 63447
+(64196, 0.372, 1.5, 0), -- 64196
+(62241, 0.306, 1.5, 0), -- 62241
+(64596, 0.306, 1.5, 0), -- 64596
+(65663, 0.306, 1.5, 0), -- 65663
+(65704, 0.389, 1.5, 0), -- 65704
+(62467, 0.347222, 1.5, 0), -- 62467
+(62007, 0.306, 1.5, 0), -- 62007
+(63761, 0.9747, 4.05, 0), -- 63761
+(63753, 0.236, 1.5, 0), -- 63753
+(63757, 0.306, 1.5, 0), -- 63757
+(62361, 0.4464, 1.8, 0), -- 62361
+(64702, 1.07217, 4.455, 0), -- 64702
+(64242, 3, 2, 0); -- 64242
diff --git a/sql/updates/world/6.x/2016_06_07_03_world.sql b/sql/updates/world/6.x/2016_06_07_03_world.sql
new file mode 100644
index 00000000000..55cc3797e5b
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_07_03_world.sql
@@ -0,0 +1,10 @@
+--
+DELETE FROM `npc_trainer` WHERE `SpellID` IN (14809, 14810, 17181);
+INSERT INTO `npc_trainer` (`ID`, `SpellID`, `MoneyCost`, `ReqSkillLine`, `ReqSkillRank`, `ReqLevel`) VALUES
+(201126, 14809, 2600, 333, 155, 0),
+(201126, 14810, 3000, 333, 175, 0),
+(201126, 17181, 10000, 333, 250, 0);
+
+UPDATE `npc_trainer` SET `ID`=201009 WHERE `ID`=201124;
+UPDATE `npc_trainer` SET `ID`=201011 WHERE `ID`=201126;
+UPDATE `npc_trainer` SET `SpellID`=-201011 WHERE `SpellID`=-201126;
diff --git a/sql/updates/world/6.x/2016_06_07_04_world.sql b/sql/updates/world/6.x/2016_06_07_04_world.sql
new file mode 100644
index 00000000000..4c0d3628bdb
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_07_04_world.sql
@@ -0,0 +1,10 @@
+--
+DELETE FROM creature_model_info WHERE `DisplayID` IN (64716, 62440, 64184, 64185, 63927, 64703, 62103);
+INSERT INTO creature_model_info (`DisplayID`, `BoundingRadius`, `CombatReach`, `DisplayID_Other_Gender`) VALUES
+(64716, 0.306, 1.5, 0), -- 64716
+(62440, 0.105, 0.3, 0), -- 62440
+(64184, 0.465, 1.5, 0), -- 64184
+(64185, 0.465, 1.5, 0), -- 64185
+(63927, 2, 1.5, 0), -- 63927
+(64703, 0.345, 1.725, 0), -- 64703
+(62103, 1, 1.5, 0); -- 62103
diff --git a/sql/updates/world/6.x/2016_06_07_05_world.sql b/sql/updates/world/6.x/2016_06_07_05_world.sql
new file mode 100644
index 00000000000..db99efb192a
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_07_05_world.sql
@@ -0,0 +1,16 @@
+--
+UPDATE `smart_scripts` SET `link`=0, `event_type`=0 WHERE `source_type`=9;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid` IN (33419, 35161, 36890, 37212, 37548, 38912, 38942) AND `id`=0;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid` IN (2018, 2206, 3502, 3845, 5862, 8338, 12864, 14715, 23636, 24841, 24842, 29647, 34830, 36636, 36708, 36815, 36942, 38070, 39261, 39268, 43325, 47762) AND `id`=1;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid` IN (3845, 34309, 36660, 36942, 39261, 39268) AND `id`=2;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid` IN (5953, 14753, 39317) AND `id`=3;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=3696 AND `id`=4;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=45438 AND `id`=7;
+UPDATE `smart_scripts` SET `link`=0, `event_type`=61, `event_param2`=0 WHERE `entryorguid`=34872 AND `id`=2;
+UPDATE `smart_scripts` SET `event_param2`=34872, `action_param2`=0 WHERE `entryorguid`=34872 AND `id`=3;
+UPDATE `smart_scripts` SET `event_type`=61 WHERE `entryorguid`=45410 AND `id`=1;
+UPDATE `smart_scripts` SET `action_param1`=170 WHERE `entryorguid` IN (18707300, 19055500) AND `id`=0;
+UPDATE `smart_scripts` SET `action_param1`=169 WHERE `entryorguid` IN (18707300, 19055500) AND `id`=1;
+UPDATE `smart_scripts` SET `action_param1`=169 WHERE `entryorguid`=29884 AND `id`=5;
+UPDATE `smart_scripts` SET `event_param1`=0, `event_param2`=15 WHERE `entryorguid`=25073 AND `id`=4;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (-3621, -3620, 50897);
diff --git a/sql/updates/world/6.x/2016_06_07_06_world.sql b/sql/updates/world/6.x/2016_06_07_06_world.sql
new file mode 100644
index 00000000000..9f28f41fbc4
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_07_06_world.sql
@@ -0,0 +1,104 @@
+--
+DELETE FROM creature_model_info WHERE `DisplayID` IN (60891, 64194, 62895, 62427, 62900, 62398, 62896, 64118, 63037, 61795, 62249, 63277, 62248, 63274, 63271, 63269, 63268, 64462, 63158, 63137, 63135, 62027, 63159, 62116, 61923, 62033, 62115, 64128, 61820, 64722, 61838, 61837, 64771, 64136, 61981, 61832, 61831, 61867, 61787, 61878, 61788, 63745, 61822, 61856, 62142, 62057, 62058, 62126, 64133, 62002, 63349, 62000, 64434, 63278, 63245, 63244, 63213, 63248, 63280, 63211, 63303, 63290, 62114, 62117, 62034, 62620, 63083, 62019, 62018, 63167, 62017, 62020, 63084, 62042, 63368, 63366, 63365, 63424, 64435, 64436, 64437, 63206, 61755, 61756, 61757, 64129, 61775, 61776, 63079, 63080, 63078, 64127, 63283, 63150, 62853, 63691, 63718, 61995, 61985, 61940, 61943);
+INSERT INTO creature_model_info (`DisplayID`, `BoundingRadius`, `CombatReach`, `DisplayID_Other_Gender`) VALUES
+(60891, 0.0525, 0.15, 0), -- 60891
+(64194, 0.062, 0.2, 0), -- 64194
+(62895, 0.5394, 2.175, 0), -- 62895
+(62427, 0.5394, 2.175, 0), -- 62427
+(62900, 0.5952, 2.4, 0), -- 62900
+(62398, 0.5394, 2.175, 0), -- 62398
+(62896, 0.5394, 2.175, 0), -- 62896
+(64118, 0.03, 0.15, 0), -- 64118
+(63037, 0.525, 0.875, 0), -- 63037
+(61795, 0.39, 1.5, 0), -- 61795
+(62249, 0.208, 1.5, 0), -- 62249
+(63277, 0.347222, 1.5, 0), -- 63277
+(62248, 0.306, 1.5, 0), -- 62248
+(63274, 0.389, 1.5, 0), -- 63274
+(63271, 0.459, 2.25, 0), -- 63271
+(63269, 0.2912, 2.1, 0), -- 63269
+(63268, 0.5362, 2.1, 0), -- 63268
+(64462, 0.306, 1.5, 0), -- 64462
+(63158, 1, 1.5, 0), -- 63158
+(63137, 1.75, 2.625, 0), -- 63137
+(63135, 1.75, 2.625, 0), -- 63135
+(62027, 1.05, 1.5, 0), -- 62027
+(63159, 1, 1.5, 0), -- 63159
+(62116, 1, 1.5, 0), -- 62116
+(61923, 1, 1.5, 0), -- 61923
+(62033, 1.2, 1.8, 0), -- 62033
+(62115, 1, 1.5, 0), -- 62115
+(64128, 0.5, 0.75, 0), -- 64128
+(61820, 0.4836, 1.95, 0), -- 61820
+(64722, 0.5, 5, 0), -- 64722
+(61838, 0.2714, 1.725, 0), -- 61838
+(61837, 0.4278, 1.725, 0), -- 61837
+(64771, 0.372, 1.5, 0), -- 64771
+(64136, 0.35, 0.875, 0), -- 64136
+(61981, 1.528, 4, 0), -- 61981
+(61832, 0.4092, 1.65, 0), -- 61832
+(61831, 0.4092, 1.65, 0), -- 61831
+(61867, 0.93, 3.75, 0), -- 61867
+(61787, 0.4464, 1.8, 0), -- 61787
+(61878, 0.465, 1.875, 0), -- 61878
+(61788, 0.4092, 1.65, 0), -- 61788
+(63745, 0.537204, 1.5, 0), -- 63745
+(61822, 0.4836, 1.95, 0), -- 61822
+(61856, 0.35, 4.2, 0), -- 61856
+(62142, 0.744, 3, 0), -- 62142
+(62057, 0.6, 3, 0), -- 62057
+(62058, 0.6, 3, 0), -- 62058
+(62126, 0.137779, 1.5, 0), -- 62126
+(64133, 0.0465, 1.8, 0), -- 64133
+(62002, 0.2832, 1.8, 0), -- 62002
+(63349, 0.3519, 1.725, 0), -- 63349
+(62000, 0.2832, 1.8, 0), -- 62000
+(64434, 0.6511, 2.55, 0), -- 64434
+(63278, 0.9, 1.35, 0), -- 63278
+(63245, 0.2124, 1.35, 0), -- 63245
+(63244, 0.236, 1.5, 0), -- 63244
+(63213, 0.9, 1.35, 0), -- 63213
+(63248, 0.3348, 1.35, 0), -- 63248
+(63280, 0.9, 1.35, 0), -- 63280
+(63211, 0.9, 1.35, 0), -- 63211
+(63303, 0.3348, 1.35, 0), -- 63303
+(63290, 0.9, 1.35, 0), -- 63290
+(62114, 1, 1.5, 0), -- 62114
+(62117, 1, 1.5, 0), -- 62117
+(62034, 1.2, 1.8, 0), -- 62034
+(62620, 0.375, 1.5, 0), -- 62620
+(63083, 1, 1.5, 0), -- 63083
+(62019, 1, 1.5, 0), -- 62019
+(62018, 1, 1.5, 0), -- 62018
+(63167, 0.75, 0.75, 0), -- 63167
+(62017, 1, 1.5, 0), -- 62017
+(62020, 1, 1.5, 0), -- 62020
+(63084, 1, 1.5, 0), -- 63084
+(62042, 15, 1.5, 0), -- 62042
+(63368, 0.4, 0.4, 0), -- 63368
+(63366, 0.3, 0.3, 0), -- 63366
+(63365, 0.4, 0.4, 0), -- 63365
+(63424, 0.591, 1.5, 0), -- 63424
+(64435, 2.5, 3.125, 0), -- 64435
+(64436, 2.25, 2.8125, 0), -- 64436
+(64437, 2, 2.5, 0), -- 64437
+(63206, 0.69, 2.76, 0), -- 63206
+(61755, 0.5022, 2.025, 0), -- 61755
+(61756, 0.5208, 2.1, 0), -- 61756
+(61757, 0.3422, 2.175, 0), -- 61757
+(64129, 0.1085, 0.35, 0), -- 64129
+(61775, 0.45, 2.25, 0), -- 61775
+(61776, 0.45, 2.25, 0), -- 61776
+(63079, 0.6, 3, 0), -- 63079
+(63080, 0.69, 3.45, 0), -- 63080
+(63078, 0.9, 4.5, 0), -- 63078
+(64127, 0.35, 0.35, 0), -- 64127
+(63283, 0.306, 1.5, 0), -- 63283
+(63150, 0.611112, 10, 0), -- 63150
+(62853, 0.306, 1.5, 0), -- 62853
+(63691, 0.3, 0.375, 0), -- 63691
+(63718, 0.625, 1.25, 0), -- 63718
+(61995, 0.306, 1.5, 0), -- 61995
+(61985, 0.306, 1.5, 0), -- 61985
+(61940, 1, 5, 0), -- 61940
+(61943, 1, 1.5, 0); -- 61943
diff --git a/sql/updates/world/6.x/2016_06_10_00_world.sql b/sql/updates/world/6.x/2016_06_10_00_world.sql
new file mode 100644
index 00000000000..da4abb77d23
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_10_00_world.sql
@@ -0,0 +1,1212 @@
+--
+--
+UPDATE `creature_template` SET `difficulty_entry_1`= 48944 WHERE `entry`= 47739;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48787 WHERE `entry`= 48502;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48791 WHERE `entry`= 48505;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48792 WHERE `entry`= 48417;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48781 WHERE `entry`= 48447;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48913, `unit_flags`=33554500, `spell1`=91065, `spell2`=95494, `spell3`=91066, `mechanic_immune_mask`=16384 WHERE `entry`= 48266;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48777 WHERE `entry`= 48522;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48779 WHERE `entry`= 48451;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48778 WHERE `entry`= 48521;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48820 WHERE `entry`= 48338;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48819 WHERE `entry`= 48279;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48826 WHERE `entry`= 48440;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48814 WHERE `entry`= 48445;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48827 WHERE `entry`= 48442;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48824 WHERE `entry`= 48278;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48823 WHERE `entry`= 48441;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48835 WHERE `entry`= 48284;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48811 WHERE `entry`= 48419;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48914 WHERE `entry`= 48421;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48782 WHERE `entry`= 48450;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48834 WHERE `entry`= 48229;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48936 WHERE `entry`= 47162;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48812 WHERE `entry`= 48418;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48803 WHERE `entry`= 47404;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48804 WHERE `entry`= 47403;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48821 WHERE `entry`= 48351;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48829 WHERE `entry`= 48230;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48830 WHERE `entry`= 48262;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48810 WHERE `entry`= 48420;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48943 WHERE `entry`= 47626;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48940 WHERE `entry`= 47296;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48939 WHERE `entry`= 47297;
+UPDATE `creature_template` SET `difficulty_entry_1`= 48941 WHERE `entry`= 43778;
+UPDATE `creature_template` SET `mingold`=20008, `maxgold`=20008, `DamageModifier`=17.7, `npcflag`=0 WHERE `entry`=43778;
+UPDATE `creature_template` SET `mingold`=13158, `maxgold`=13158, `DamageModifier`=16, `npcflag`=0 WHERE `entry`=47162;
+UPDATE `creature_template` SET `mingold`=13404, `maxgold`=13404, `DamageModifier`=57.5, `npcflag`=0 WHERE `entry`=47296;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=8.5 WHERE `entry`=47297;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=21 WHERE `entry`=47403;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=21 WHERE `entry`=47404;
+UPDATE `creature_template` SET `mingold`=13029, `maxgold`=13029, `DamageModifier`=15, `npcflag`=0 WHERE `entry`=47626;
+UPDATE `creature_template` SET `mingold`=12490, `maxgold`=12490, `DamageModifier`=15, `npcflag`=0 WHERE `entry`=47739;
+UPDATE `creature_template` SET `mingold`=7684, `maxgold`=7684, `DamageModifier`=2 WHERE `entry`=48229;
+UPDATE `creature_template` SET `mingold`=7084, `maxgold`=7084, `DamageModifier`=15 WHERE `entry`=48230;
+UPDATE `creature_template` SET `mingold`=4819, `maxgold`=4819, `DamageModifier`=15 WHERE `entry`=48262;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=7 WHERE `entry`=48266;
+UPDATE `creature_template` SET `mingold`=2137, `maxgold`=2137, `DamageModifier`=1 WHERE `entry`=48278;
+UPDATE `creature_template` SET `mingold`=6975, `maxgold`=6975, `DamageModifier`=15 WHERE `entry`=48279;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=7 WHERE `entry`=48284;
+UPDATE `creature_template` SET `mingold`=8244, `maxgold`=8244, `DamageModifier`=125 WHERE `entry`=48338;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=125 WHERE `entry`=48351;
+UPDATE `creature_template` SET `mingold`=8562, `maxgold`=8562, `DamageModifier`=20.8 WHERE `entry`=48417;
+UPDATE `creature_template` SET `mingold`=8541, `maxgold`=8541, `DamageModifier`=20.8 WHERE `entry`=48418;
+UPDATE `creature_template` SET `mingold`=7906, `maxgold`=7906, `DamageModifier`=7 WHERE `entry`=48419;
+UPDATE `creature_template` SET `mingold`=7903, `maxgold`=7903, `DamageModifier`=7 WHERE `entry`=48420;
+UPDATE `creature_template` SET `mingold`=7165, `maxgold`=7165, `DamageModifier`=15 WHERE `entry`=48421;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=1.4 WHERE `entry`=48440;
+UPDATE `creature_template` SET `mingold`=2285, `maxgold`=2285, `DamageModifier`=1.4 WHERE `entry`=48441;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=1.4 WHERE `entry`=48442;
+UPDATE `creature_template` SET `mingold`=7141, `maxgold`=7141, `DamageModifier`=5 WHERE `entry`=48445;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=7 WHERE `entry`=48447;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=5 WHERE `entry`=48450;
+UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `DamageModifier`=7 WHERE `entry`=48451;
+UPDATE `creature_template` SET `mingold`=7576, `maxgold`=7576, `DamageModifier`=15 WHERE `entry`=48502;
+UPDATE `creature_template` SET `mingold`=7403, `maxgold`=7403, `DamageModifier`=17.9 WHERE `entry`=48505;
+UPDATE `creature_template` SET `mingold`=5920, `maxgold`=5920, `DamageModifier`=20.8 WHERE `entry`=48521;
+UPDATE `creature_template` SET `mingold`=6028, `maxgold`=6028, `DamageModifier`=15 WHERE `entry`=48522;
+
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=90906, `spell2`=90905, `spell3`=0, `spell4`=0, `VehicleId`=0, `mingold`=6028, `maxgold`=6028, `DamageModifier`=35, `mechanic_immune_mask`=0 WHERE `entry`=48777;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=90914, `spell2`=90912, `spell3`=90398, `spell4`=0, `VehicleId`=0, `mingold`=5920, `maxgold`=5920, `DamageModifier`=48, `mechanic_immune_mask`=0,`unit_class`=8 WHERE `entry`= 48778;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=72, `spell1`=90918, `spell2`=90913, `spell3`=90920, `spell4`=90921, `VehicleId`=0, `mingold`=0, `maxgold`=0, `DamageModifier`=18, `mechanic_immune_mask`=0 WHERE `entry`= 48779;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=90918, `spell2`=90913, `spell3`=90920, `spell4`=90921, `VehicleId`=0, `mingold`=0, `maxgold`=0, `DamageModifier`=7, `mechanic_immune_mask`=0 WHERE `entry`= 48781;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=72, `spell1`=90918, `spell2`=90913, `spell3`=90920, `spell4`=90921, `VehicleId`=0, `mingold`=0, `maxgold`=0, `DamageModifier`=7, `mechanic_immune_mask`=0 WHERE `entry`= 48782;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=90925, `spell2`=90928, `spell3`=90931, `spell4`=90930, `VehicleId`=0, `mingold`=7576, `maxgold`=7576, `DamageModifier`=35, `mechanic_immune_mask`=0 WHERE `entry`= 48787;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=32832, `spell1`=90955, `spell2`=90954, `spell3`=90959, `spell4`=90958, `VehicleId`=0, `mingold`=7403, `maxgold`=7403, `DamageModifier`=42.2, `mechanic_immune_mask`=0, `unit_class`=4 WHERE `entry`= 48791;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=32832, `spell1`=90939, `spell2`=90938, `spell3`=90947, `spell4`=90933, `VehicleId`=0, `mingold`=8562, `maxgold`=8562, `DamageModifier`=48, `mechanic_immune_mask`=0, `unit_class`=8 WHERE `entry`= 48792;
+UPDATE `creature_template` SET `MinLevel`= 86, `MaxLevel`=86, `exp`=3, `faction`=17, `npcflag`=16777216, `speed_walk`=0.4, `speed_run`=1.14286, `unit_flags`=64, `spell1`=90981, `spell2`=91736, `spell3`=91737, `spell4`=91735, `VehicleId`=1389, `mingold`=0, `maxgold`=0, `DamageModifier`=42.2, `mechanic_immune_mask`=16384, `unit_class`=4 WHERE `entry`= 48803;
+UPDATE `creature_template` SET `MinLevel`= 86, `MaxLevel`=86, `exp`=3, `faction`=17, `npcflag`=16777216, `speed_walk`=0.4, `speed_run`=1.14286, `unit_flags`=64, `spell1`=90981, `spell2`=91737, `spell3`=90979, `spell4`=91736, `VehicleId`=1389, `mingold`=0, `maxgold`=0, `DamageModifier`=42.2, `mechanic_immune_mask`=16384, `unit_class`=4 WHERE `entry`= 48804;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=0.666668, `speed_run`=1.14286, `unit_flags`=32832, `spell1`=91010, `spell2`=90995, `spell3`=90994, `spell4`=0, `VehicleId`=0, `mingold`=7903, `maxgold`=7903, `DamageModifier`=7, `mechanic_immune_mask`=0 WHERE `entry`= 48810;
+UPDATE `creature_template` SET `MinLevel`= 84, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=0.666668, `speed_run`=1.14286, `unit_flags`=64, `spell1`=91010, `spell2`=90995, `spell3`=90994, `spell4`=0, `VehicleId`=0, `mingold`=7906, `maxgold`=7906, `DamageModifier`=7, `mechanic_immune_mask`=0 WHERE `entry`= 48811;
+UPDATE `creature_template` SET `MinLevel`= 84, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=32832, `spell1`=92001, `spell2`=91004, `spell3`=91005, `spell4`=91006, `VehicleId`=0, `mingold`=8541, `maxgold`=8541, `DamageModifier`=48, `mechanic_immune_mask`=0, `unit_class`=8 WHERE `entry`= 48812;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=0.992063, `unit_flags`=64, `spell1`=91016, `spell2`=90098, `spell3`=8599, `spell4`=0, `VehicleId`=0, `mingold`=7141, `maxgold`=7141, `DamageModifier`=37.7, `mechanic_immune_mask`=0, `unit_class`=2 WHERE `entry`= 48814;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=2102, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=91037, `spell2`=91036, `spell3`=91034, `spell4`=91035, `VehicleId`=0, `mingold`=6975, `maxgold`=6975, `DamageModifier`=35, `mechanic_immune_mask`=0 WHERE `entry`= 48819;
+UPDATE `creature_template` SET `MinLevel`= 80, `MaxLevel`=85, `exp`=3, `faction`=2102, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=91033, `spell2`=91032, `spell3`=0, `spell4`=0, `VehicleId`=1322, `mingold`=8244, `maxgold`=8244, `DamageModifier`=35, `mechanic_immune_mask`=0 WHERE `entry`= 48820;
+UPDATE `creature_template` SET `MinLevel`= 80, `MaxLevel`=85, `exp`=3, `faction`=2102, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=91033, `spell2`=91032, `spell3`=0, `spell4`=0, `VehicleId`=1322, `mingold`=0, `maxgold`=0, `DamageModifier`=35, `mechanic_immune_mask`=0 WHERE `entry`= 48821;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=190, `npcflag`=0, `speed_walk`=1, `speed_run`=0.857143, `unit_flags`=32792, `spell1`=91038, `spell2`=91039, `spell3`=0, `spell4`=0, `VehicleId`=0, `mingold`=2285, `maxgold`=2285, `DamageModifier`=18, `mechanic_immune_mask`=0 WHERE `entry`= 48823;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=190, `npcflag`=0, `speed_walk`=1, `speed_run`=1.48571, `unit_flags`=32784, `spell1`=91039, `spell2`=91038, `spell3`=0, `spell4`=0, `VehicleId`=0, `mingold`=2137, `maxgold`=2137, `DamageModifier`=18, `mechanic_immune_mask`=0 WHERE `entry`= 48824;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=190, `npcflag`=0, `speed_walk`=1, `speed_run`=1.48571, `unit_flags`=2147516432, `spell1`=91038, `spell2`=91039, `spell3`=0, `spell4`=0, `VehicleId`=0, `mingold`=0, `maxgold`=0, `DamageModifier`=18, `mechanic_immune_mask`=0 WHERE `entry`= 48826;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=190, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=32792, `spell1`=91039, `spell2`=91038, `spell3`=0, `spell4`=0, `VehicleId`=0, `mingold`=0, `maxgold`=0, `DamageModifier`=18, `mechanic_immune_mask`=0 WHERE `entry`= 48827;
+UPDATE `creature_template` SET `MinLevel`= 84, `MaxLevel`=86, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=91043, `spell2`=89652, `spell3`=92748, `spell4`=91046, `VehicleId`=1311, `mingold`=7084, `maxgold`=7084, `DamageModifier`=35, `mechanic_immune_mask`=0 WHERE `entry`= 48829;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=86, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=91051, `spell2`=91050, `spell3`=91054, `spell4`=91053, `VehicleId`=0, `mingold`=4819, `maxgold`=4819, `DamageModifier`=35, `mechanic_immune_mask`=0 WHERE `entry`= 48830;
+UPDATE `creature_template` SET `MinLevel`= 83, `MaxLevel`=85, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=89663, `spell2`=91057, `spell3`=0, `spell4`=0, `VehicleId`=0, `mingold`=7684, `maxgold`=7684, `DamageModifier`=7, `mechanic_immune_mask`=0 WHERE `entry`= 48834;
+UPDATE `creature_template` SET `MinLevel`= 80, `MaxLevel`=85, `exp`=3, `faction`=188, `npcflag`=0, `speed_walk`=1, `speed_run`=1, `unit_flags`=0, `spell1`=91063, `spell2`=0, `spell3`=0, `spell4`=0, `VehicleId`=0, `mingold`=0, `maxgold`=0, `DamageModifier`=7, `mechanic_immune_mask`=0 WHERE `entry`= 48835;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=190, `npcflag`=16777216, `speed_walk`=1, `speed_run`=1.07143, `unit_flags`=33554500, `spell1`=91065, `spell2`=95494, `spell3`=91066, `spell4`=0, `VehicleId`=1390, `mingold`=0, `maxgold`=0, `DamageModifier`=7, `mechanic_immune_mask`=16384 WHERE `entry`= 48913;
+UPDATE `creature_template` SET `MinLevel`= 85, `MaxLevel`=85, `exp`=3, `faction`=189, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=64, `spell1`=0, `spell2`=0, `spell3`=0, `spell4`=0, `VehicleId`=0, `mingold`=7165, `maxgold`=7165, `DamageModifier`=35, `mechanic_immune_mask`=0 WHERE `entry`= 48914;
+UPDATE `creature_template` SET `MinLevel`= 87, `MaxLevel`=87, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1.2, `speed_run`=0.857143, `unit_flags`=32832, `spell1`=88009, `spell2`=88129, `spell3`=91286, `spell4`=87859, `VehicleId`=0, `mingold`=13158, `maxgold`=13158, `DamageModifier`=125, `mechanic_immune_mask`=617299967, `unit_class`=2 WHERE `entry`= 48936;
+UPDATE `creature_template` SET `MinLevel`= 86, `MaxLevel`=87, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=0.992063, `unit_flags`=64, `spell1`=88288, `spell2`=0, `spell3`=0, `spell4`=0, `VehicleId`=1259, `mingold`=0, `maxgold`=0, `DamageModifier`=35, `mechanic_immune_mask`=0 WHERE `entry`= 48939;
+UPDATE `creature_template` SET `MinLevel`= 87, `MaxLevel`=87, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=32832, `spell1`=88352, `spell2`=0, `spell3`=0, `spell4`=0, `VehicleId`=0, `mingold`=13404, `maxgold`=13404, `DamageModifier`=125, `mechanic_immune_mask`=617299967 WHERE `entry`= 48940;
+UPDATE `creature_template` SET `MinLevel`= 87, `MaxLevel`=87, `exp`=3, `faction`=14, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=67371328, `spell1`=88495, `spell2`=91718, `spell3`=88521, `spell4`=88348, `VehicleId`=0, `mingold`=20008, `maxgold`=20008, `DamageModifier`=125, `mechanic_immune_mask`=617316351, `unit_class`=4 WHERE `entry`= 48941;
+UPDATE `creature_template` SET `MinLevel`= 86, `MaxLevel`=87, `exp`=3, `faction`=14, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=32832, `spell1`=91863, `spell2`=88839, `spell3`=91859, `spell4`=88736, `VehicleId`=0, `mingold`=13029, `maxgold`=13029, `DamageModifier`=125, `mechanic_immune_mask`=617299967 WHERE `entry`= 48943;
+UPDATE `creature_template` SET `MinLevel`= 87, `MaxLevel`=87, `exp`=3, `faction`=17, `npcflag`=0, `speed_walk`=1, `speed_run`=1.14286, `unit_flags`=33587264, `spell1`=89252, `spell2`=90602, `spell3`=92842, `spell4`=89263, `VehicleId`=0, `mingold`=12490, `maxgold`=12490, `DamageModifier`=125, `mechanic_immune_mask`=617299967 WHERE `entry`= 48944;
+
+UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry` IN (47284,47282,47242,47677,48974,48446, 49454, 51624, 49520);
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry` IN (49457, 48447, 48781, 48450, 48782);
+DELETE FROM `creature_queststarter` WHERE `id` IN (43778, 47162, 47296, 47739, 47626);
+
+SET @Oguid:=235286;
+DELETE FROM `gameobject` WHERE `map`=36;
+DELETE FROM `gameobject` WHERE `guid` BETWEEN @Oguid+0 AND @Oguid+77;
+INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES
+(@Oguid+0, 75293, 36, 0, 0, 2, 0, 0, -121.301, -810.208, 16.9638, 1.76278, 0, 0, 0.771624, 0.636079, 86400, 100, 1, 0),
+(@Oguid+1, 75293, 36, 0, 0, 2, 0, 0, -155.3, -913.896, 10.2809, 0.90757, 0, 0, 0.438371, 0.898794, 86400, 100, 1, 0),
+(@Oguid+2, 75293, 36, 0, 0, 2, 0, 0, -300.887, -532.542, 49.4236, 0.226893, 0, 0, 0.113203, 0.993572, 86400, 100, 1, 0),
+(@Oguid+3, 75293, 36, 0, 0, 2, 0, 0, -63.0889, -797.013, 39.0067, 1.55334, 0, 0, 0.700908, 0.713252, 86400, 100, 1, 0),
+(@Oguid+4, 75293, 36, 0, 0, 2, 0, 0, -209.206, -602.72, 19.3065, -0.139626, 0, 0, -0.0697563, 0.997564, 86400, 100, 1, 0),
+(@Oguid+5, 75293, 36, 0, 0, 2, 0, 0, -77.7409, -788.596, 26.1097, 1.16937, 0, 0, 0.551937, 0.833886, 86400, 100, 1, 0),
+(@Oguid+6, 75293, 36, 0, 0, 2, 0, 0, -312.046, -477.501, 49.5979, -1.55334, 0, 0, -0.700908, 0.713252, 86400, 100, 1, 0),
+(@Oguid+8, 101831, 36, 0, 0, 6, 0, 0, -188.137, -460.313, 54.5591, 1.72787, 0, 0, 0.760405, 0.649449, 7200, 255, 1, 0),
+(@Oguid+9, 208515, 36, 0, 0, 6, 0, 0, -14.7567, -389.097, 63.5901, 1.55334, 0, 0, 0.700909, 0.713251, 7200, 255, 1, 0),
+(@Oguid+10, 208516, 36, 0, 0, 6, 0, 0, -14.7567, -389.097, 63.5901, 1.55334, 0, 0, 0.700909, 0.713251, 7200, 255, 1, 0),
+(@Oguid+11, 207290, 36, 0, 0, 4, 0, 0, -205.186, -544.938, 54.5354, -1.5708, 0, 0, -0.707107, 0.707107, 7200, 255, 1, 0),
+(@Oguid+12, 101833, 36, 0, 0, 6, 0, 0, -96.9277, -670.597, 7.40338, 1.90241, 0, 0, 0.814116, 0.580703, 7200, 255, 1, 0),
+(@Oguid+13, 101834, 36, 0, 0, 6, 0, 0, -165.404, -576.924, 19.3064, -2.9845, 0, 0, -0.996917, 0.0784662, 7200, 255, 1, 0),
+(@Oguid+14, 101832, 36, 0, 0, 6, 0, 0, -287.282, -539.877, 49.4321, 1.72787, 0, 0, 0.760405, 0.649449, 7200, 255, 1, 0),
+(@Oguid+15, 207079, 36, 0, 0, 6, 0, 0, -210.984, -511.063, 50.8982, -3.00195, 0, 0, -0.997563, 0.0697663, 7200, 255, 1, 0),
+(@Oguid+16, 207079, 36, 0, 0, 6, 0, 0, -205.415, -502.424, 52.0631, -0.104719, 0, 0, -0.0523357, 0.99863, 7200, 255, 1, 0),
+(@Oguid+17, 207079, 36, 0, 0, 6, 0, 0, -219.762, -504.585, 50.4594, 0, 0, 0, 0, 1, 7200, 255, 1, 0),
+(@Oguid+18, 207079, 36, 0, 0, 6, 0, 0, -236.092, -488.552, 49.4053, 3.00195, 0, 0, 0.997563, 0.0697663, 7200, 255, 1, 0),
+(@Oguid+19, 207079, 36, 0, 0, 6, 0, 0, -197.436, -490.266, 53.8617, -1.90241, 0, 0, -0.814116, 0.580703, 7200, 255, 1, 0),
+(@Oguid+20, 207079, 36, 0, 0, 6, 0, 0, -158.554, -530.83, 52.3817, 1.22173, 0, 0, 0.573576, 0.819152, 7200, 255, 1, 0),
+(@Oguid+21, 207079, 36, 0, 0, 6, 0, 0, -221.563, -485.286, 48.9329, -1.27409, 0, 0, -0.594823, 0.803857, 7200, 255, 1, 0),
+(@Oguid+22, 207079, 36, 0, 0, 6, 0, 0, -182.196, -502.55, 53.5372, 2.96704, 0, 0, 0.996194, 0.087165, 7200, 255, 1, 0),
+(@Oguid+23, 207079, 36, 0, 0, 6, 0, 0, -158.422, -508.253, 53.4218, 0, 0, 0, 0, 1, 7200, 255, 1, 0),
+(@Oguid+24, 207079, 36, 0, 0, 6, 0, 0, -156.175, -520.281, 52.3784, 2.04204, 0, 0, 0.85264, 0.522499, 7200, 255, 1, 0),
+(@Oguid+25, 207079, 36, 0, 0, 6, 0, 0, -192.778, -505.63, 53.1919, 3.03684, 0, 0, 0.998629, 0.0523535, 7200, 255, 1, 0),
+(@Oguid+26, 207079, 36, 0, 0, 6, 0, 0, -154.227, -529.694, 49.7548, -2.26892, 0, 0, -0.906307, 0.422619, 7200, 255, 1, 0),
+(@Oguid+27, 207079, 36, 0, 0, 6, 0, 0, -150.311, -519.649, 52.8737, 0.698132, 0, 0, 0.34202, 0.939693, 7200, 255, 1, 0),
+(@Oguid+28, 207079, 36, 0, 0, 6, 0, 0, -169.604, -509.63, 53.5638, -1.22173, 0, 0, -0.573576, 0.819152, 7200, 255, 1, 0),
+(@Oguid+29, 207079, 36, 0, 0, 6, 0, 0, -179.665, -492.655, 54.3416, 0, 0, 0, 0, 1, 7200, 255, 1, 0),
+(@Oguid+30, 207079, 36, 0, 0, 6, 0, 0, -149.149, -532.719, 49.8969, -1.27409, 0, 0, -0.594823, 0.803857, 7200, 255, 1, 0),
+(@Oguid+31, 208002, 36, 0, 0, 6, 0, 0, -129.915, -788.898, 17.3409, 0.366518, 0, 0, 0.182235, 0.983255, 7200, 255, 1, 0),
+(@Oguid+32, 208002, 36, 0, 0, 6, 0, 0, -64.1528, -385.99, 53.192, 1.85005, 0, 0, 0.798635, 0.601815, 7200, 255, 1, 0),
+(@Oguid+33, 208002, 36, 0, 0, 6, 0, 0, -201.096, -606.05, 19.3022, 2.74016, 0, 0, 0.979924, 0.19937, 7200, 255, 1, 0),
+(@Oguid+34, 208002, 36, 0, 0, 6, 0, 0, -305.321, -491.292, 49.232, 0.488691, 0, 0, 0.241921, 0.970296, 7200, 255, 1, 0),
+(@Oguid+35, 1732, 36, 0, 0, 6, 0, 0, -134.418, -640.136, 16.6032, 1.309, 0, 0, 0.608761, 0.793354, 600, 100, 1, 0), -- 65535
+(@Oguid+36, 1732, 36, 0, 0, 6, 0, 0, -234.677, -492.153, 51.5503, 2.05949, 0, 0, 0.857167, 0.515038, 600, 100, 1, 0), --
+(@Oguid+37, 1731, 36, 0, 0, 6, 0, 0, -75.6958, -407.331, 56.1338, -1.93732, 0, 0, -0.824126, 0.566406, 600, 100, 1, 0), --
+(@Oguid+38, 1731, 36, 0, 0, 6, 0, 0, -286.103, -577.582, 50.9829, -0.0698117, 0, 0, -0.0348988, 0.999391, 600, 100, 1, 0), --
+(@Oguid+39, 1732, 36, 0, 0, 6, 0, 0, -127.871, -444.354, 57.161, 0.349065, 0, 0, 0.173648, 0.984808, 600, 100, 1, 0), --
+(@Oguid+40, 3662, 36, 0, 0, 2, 0, 0, -43.7597, -733.648, 9.18536, 1.18682, 0, 0, 0.559193, 0.829038, 7200, 100, 1, 0),
+(@Oguid+41, 19019, 36, 0, 0, 2, 0, 0, -200.774, -574.159, 20.9768, 0.767944, 0, 0, 0.374606, 0.927184, 7200, 100, 1, 0),
+(@Oguid+42, 3662, 36, 0, 0, 2, 0, 0, -144.899, -891.56, 4.30954, 1.51844, 0, 0, 0.688354, 0.725375, 7200, 100, 1, 0),
+(@Oguid+43, 75293, 36, 0, 0, 2, 0, 0, -104.089, -619.026, 14.3827, 2.79252, 0, 0, 0.984807, 0.173652, 7200, 100, 1, 0),
+(@Oguid+44, 75293, 36, 0, 0, 2, 0, 0, -151.997, -533.563, 49.5133, 1.55334, 0, 0, 0.700909, 0.713251, 7200, 100, 1, 0),
+(@Oguid+45, 3662, 36, 0, 0, 2, 0, 0, -103.57, -723.359, 8.49449, 0.698132, 0, 0, 0.34202, 0.939693, 7200, 100, 1, 0),
+(@Oguid+46, 19019, 36, 0, 0, 2, 0, 0, -43.0481, -691.144, 4.21301, 2.94959, 0, 0, 0.995396, 0.0958513, 7200, 100, 1, 0),
+(@Oguid+47, 19019, 36, 0, 0, 2, 0, 0, -209.953, -595.73, 20.9768, 1.16937, 0, 0, 0.551936, 0.833886, 7200, 100, 1, 0),
+(@Oguid+48, 17153, 36, 0, 0, 6, 0, 0, -262.714, -482.361, 49.4353, -0.0174525, 0, 0, -0.00872612, 0.999962, 7200, 255, 1, 0),
+(@Oguid+49, 123211, 36, 0, 0, 6, 0, 0, -205.973, -613.262, 19.4004, -0.104717, 0, 0, -0.0523348, 0.99863, 7200, 255, 1, 0),
+(@Oguid+50, 123210, 36, 0, 0, 6, 0, 0, -205.805, -583.964, 20.9987, -1.58825, 0, 0, -0.71325, 0.70091, 7200, 255, 1, 0),
+(@Oguid+51, 123209, 36, 0, 0, 6, 0, 0, -201.043, -579.374, 20.9987, -0.0174525, 0, 0, -0.00872612, 0.999962, 7200, 255, 1, 0),
+(@Oguid+52, 123208, 36, 0, 0, 6, 0, 0, -210.428, -579.201, 20.9987, 3.12412, 0, 0, 0.999962, 0.00873456, 7200, 255, 1, 0),
+(@Oguid+53, 123207, 36, 0, 0, 6, 0, 0, -205.664, -574.581, 20.9987, 1.55334, 0, 0, 0.700909, 0.713251, 7200, 255, 1, 0),
+(@Oguid+54, 16399, 36, 0, 0, 4, 0, 0, -168.514, -579.861, 19.3159, 3.12412, 0, 0, 0.999962, 0.00873456, 7200, 255, 1, 0),
+(@Oguid+55, 16398, 36, 0, 0, 6, 0, 0, -107.562, -659.674, 7.21211, -0.890292, -0.00222349, 0.0110998, -0.430507, 0.902516, 7200, 255, 1, 0),
+(@Oguid+56, 16400, 36, 0, 0, 6, 0, 0, -290.294, -536.96, 49.4353, 1.55334, 0, 0, 0.700909, 0.713251, 7200, 255, 1, 0),
+(@Oguid+57, 123212, 36, 0, 0, 6, 0, 0, -196.417, -610.981, 19.4004, -2.02458, 0, 0, -0.848047, 0.529921, 7200, 255, 1, 0),
+(@Oguid+58, 123213, 36, 0, 0, 6, 0, 0, -196.491, -605.381, 19.4004, 1.64061, 0, 0, 0.731353, 0.681999, 7200, 255, 1, 0),
+(@Oguid+59, 17154, 36, 0, 0, 6, 0, 0, -242.965, -578.561, 51.1366, 3.12412, 0, 0, 0.999962, 0.00873456, 7200, 255, 1, 0),
+(@Oguid+60, 16399, 36, 0, 0, 2, 0, 0, -168.514, -579.861, 19.3159, 3.12414, 0, 0, 0.999962, 0.0087262, 43200, 100, 1, 0),
+(@Oguid+61, 187235, 36, 0, 0, 6, 0, 0, -75.4167, -826.026, 40.1773, 6.07375, 0, 0, -0.104528, 0.994522, 300, 255, 1, 0), --
+(@Oguid+62, 187235, 36, 0, 0, 6, 0, 0, -27.9983, -830.658, 24.1006, 5.75959, 0, 0, -0.258819, 0.965926, 300, 255, 1, 0), --
+(@Oguid+63, 187235, 36, 0, 0, 6, 0, 0, -116.594, -830.503, 20.9212, 3.80482, 0, 0, -0.945518, 0.325568, 300, 255, 1, 0), --
+(@Oguid+64, 187235, 36, 0, 0, 6, 0, 0, -130.38, -785.007, 17.5194, 5.35816, 0, 0, -0.446198, 0.894934, 300, 255, 1, 0), --
+(@Oguid+65, 187235, 36, 0, 0, 6, 0, 0, -35.7344, -794.68, 39.3818, 3.47321, 0, 0, -0.986285, 0.16505, 300, 255, 1, 0), --
+(@Oguid+66, 187235, 36, 0, 0, 6, 0, 0, -98.092, -796.042, 21.1539, 2.16421, 0, 0, 0.882947, 0.469473, 300, 255, 1, 0), --
+(@Oguid+67, 187235, 36, 0, 0, 6, 0, 0, -99.5816, -843.132, 21.1552, 4.27606, 0, 0, -0.843391, 0.5373, 300, 255, 1, 0), --
+(@Oguid+68, 187235, 36, 0, 0, 6, 0, 0, -75.1076, -813.993, 40.1856, 0.209439, 0, 0, 0.104528, 0.994522, 300, 255, 1, 0), --
+(@Oguid+69, 187235, 36, 0, 0, 6, 0, 0, -87.7135, -792.007, 21.3973, 1.91986, 0, 0, 0.819152, 0.573577, 300, 255, 1, 0), --
+(@Oguid+70, 187235, 36, 0, 0, 6, 0, 0, -70.658, -780.273, 26.071, 3.47321, 0, 0, -0.986285, 0.16505, 300, 255, 1, 0), --
+(@Oguid+71, 187235, 36, 0, 0, 6, 0, 0, -51.1875, -849.135, 22.8147, 4.97419, 0, 0, -0.608761, 0.793354, 300, 255, 1, 0), --
+(@Oguid+72, 187235, 36, 0, 0, 6, 0, 0, -109.443, -791.79, 28.2624, 0.0349062, 0, 0, 0.0174522, 0.999848, 300, 255, 1, 0), --
+(@Oguid+73, 187235, 36, 0, 0, 6, 0, 0, -109.233, -837.198, 20.9996, 4.06662, 0, 0, -0.894934, 0.446199, 300, 255, 1, 0), --
+(@Oguid+74, 3705, 36, 0, 0, 2, 0, 0, -89.3315, -682.574, 7.42373, 3.64774, 0, 0, -0.968147, 0.250381, 7200, 255, 1, 0),
+(@Oguid+75, 3705, 36, 0, 0, 2, 0, 0, -144.899, -891.56, 4.30954, 1.51844, 0, 0, 0.688354, 0.725375, 7200, 255, 1, 0),
+(@Oguid+76, 16397, 36, 0, 0, 6, 0, 0, -100.502, -668.771, 7.41049, 1.81514, 0, 0, 0.78801, 0.615662, 180, 255, 1, 0),
+(@Oguid+77, 13965, 36, 0, 0, 6, 0, 0, -191.414, -457.446, 54.4391, 1.69297, 0, 0, 0.748956, 0.66262, 180, 255, 1, 0);
+
+DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @Oguid+61 AND @Oguid+73 AND `eventEntry`=2;
+INSERT INTO `game_event_gameobject` SELECT 2, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @Oguid+61 AND @Oguid+73;
+
+SET @Cguid:= 375811;
+DELETE FROM `creature` WHERE `map`=36;
+DELETE FROM `creature` WHERE `guid` BETWEEN @Cguid+0 AND @Cguid+430;
+INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `VerifiedBuild`) VALUES
+(@CGUID+0, 4075, 36, 0, 0, 6, 0, 0, 1418, 0, -102.851, -787.181, 16.952, 5.31885, 7200, 0, 0, 8, 0, 2, 0, 0, 0, 0), -- 127
+(@CGUID+1, 4075, 36, 0, 0, 6, 0, 0, 1418, 0, -205.921, -428.379, 54.5232, 2.9596, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+2, 4075, 36, 0, 0, 6, 0, 0, 1141, 0, -112.585, -386.28, 57.1845, 0.0346062, 7200, 0, 0, 8, 0, 2, 0, 0, 0, 0), -- 126
+(@CGUID+3, 4075, 36, 0, 0, 6, 0, 0, 1418, 0, -68.713, -405.519, 54.8365, 0.68601, 7200, 0, 0, 8, 0, 2, 0, 0, 0, 0), -- 125
+(@CGUID+4, 4075, 36, 0, 0, 6, 0, 0, 2176, 0, -120.65, -642.223, 11.7238, 2.70965, 7200, 0, 0, 8, 0, 2, 0, 0, 0, 0), -- 124
+(@CGUID+5, 4075, 36, 0, 0, 6, 0, 0, 1418, 0, -119.45, -414.621, 58.2127, 6.23633, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+6, 4075, 36, 0, 0, 6, 0, 0, 2176, 0, -304.125, -592.91, 47.7657, 0.976182, 7200, 0, 0, 8, 0, 2, 0, 0, 0, 0), -- 123
+(@CGUID+7, 48420, 36, 0, 0, 6, 0, 0, 2441, 1, -285.055, -604.104, 49.285, 5.283573, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+8, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -206.177, -608.375, 29.0938, 3.49066, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+9, 48419, 36, 0, 0, 6, 0, 0, 2444, 1, -270.012, -585.599, 50.186, 6.00393, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 122 --
+(@CGUID+10, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -206.753, -554.3, 51.3129, 5.13127, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+11, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -235.134, -569.219, 19.3898, 5.18363, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+12, 48419, 36, 0, 0, 6, 0, 0, 2444, 1, -295.143, -607.005,47.6168,4.813607, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 121 --
+(@CGUID+13, 48419, 36, 0, 0, 6, 0, 0, 2444, 1, -282.567, -601.632, 50.343, 4.943196, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 120 --
+(@CGUID+14, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -214.366, -587.153, 21.0601, 6.24828, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+15, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -198.247, -571.009, 21.0601, 3.52556, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+16, 48419, 36, 0, 0, 6, 0, 0, 2444, 1, -267.22, -573.174, 50.7612, 1.97222, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+17, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -181.766, -416.976, 54.7594, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+18, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -181.127, -423.819, 54.8461, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+19, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -187.719, -440.285, 53.5591, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+20, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -183.901, -430.757, 54.2875, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+21, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -196.948, -427.533, 54.2706, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+22, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -203.391, -431.139, 54.4389, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+23, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -176.377, -440.444, 55.2961, 0.553008, 7200, 0, 0, 42, 0, 2, 0, 0, 0, 0), -- 119
+(@CGUID+24, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -181.012, -456.194, 54.7731, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+25, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -194.476, -433.931, 53.5273, 4.85202, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+26, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -186.178, -435.354, 65.2601, 3.39465, 7200, 0, 0, 42, 0, 2, 0, 0, 0, 0), -- 118
+(@CGUID+27, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -64.2552, -820.245, 41.2374, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+28, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -205.2, -561.354, 21.0601, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+29, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -211.88, -568.484, 23.0489, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+30, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -208.552, -568.122, 25.2074, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+31, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -208.259, -567.292, 21.0601, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+32, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -218.965, -565.441, 21.0601, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+33, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -200.03, -565.434, 21.0601, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+34, 43778, 36, 0, 0, 6, 0, 0, 35606, 0, -209.837, -568.622, 21.0601, 1.97222, 86400, 0, 0, 10680, 100, 0, 0, 0, 0, 0), -- 117
+(@CGUID+35, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -202.276, -571.061, 21.0601, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+36, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -208.491, -576.698, 27.9501, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+37, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -212.122, -570.392, 26.4326, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+38, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -289.809, -527.215, 49.8021, 1.62316, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+39, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -289.587, -489.575, 49.9126, 4.71239, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+40, 47297, 36, 0, 0, 6, 0, 0, 33003, 1, -302.361, -516.346, 52.0315, 0.174533, 7200, 0, 0, 7120, 0, 0, 0, 0, 0, 0),
+(@CGUID+41, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -289.16, -505.155, 50.0993, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+42, 47677, 36, 0, 0, 6, 0, 0, 11686, 0, -63.7604, -820.811, 41.2875, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+43, 47626, 36, 0, 0, 6, 0, 0, 35739, 0, -62.3434, -822.814, 42.8083, 1.1835, 86400, 0, 0, 8900, 0, 2, 0, 0, 0, 0), -- 115
+(@CGUID+44, 48230, 36, 0, 0, 6, 0, 0, 10704, 0, -115.373, -431.387, 54.9933, 3.59538, 7200, 5, 0, 1312, 0, 1, 0, 0, 0, 0),
+(@CGUID+45, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -175.089, -400.432, 57.5112, 2.46091, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 114
+(@CGUID+46, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -179.307, -415.161, 55.0199, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+47, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -105.993, -403.417, 59.9879, 4.71239, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+48, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -108.866, -426.997, 55.5585, 1.3439, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+49, 48446, 36, 0, 0, 6, 0, 0, 36147, 0, -90.3924, -375.684, 58.0291, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+50, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -140.661, -409.825, 58.8828, 3.735, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+51, 48262, 36, 0, 0, 6, 0, 0, 37382, 1, -185.094, -428.71, 54.1505, 2.54818, 7200, 0, 0, 1968, 0, 0, 0, 0, 0, 0),
+(@CGUID+52, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -97.0885, -391.076, 59.0574, 0.837758, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+53, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -148.8, -406.87, 57.6224, 3.87463, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+54, 48279, 36, 0, 0, 6, 0, 0, 36134, 0, -151.997, -518.648, 52.7741, 0.593412, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+55, 48279, 36, 0, 0, 6, 0, 0, 36135, 0, -159.293, -507.467, 53.403, 0.226893, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+56, 48445, 36, 0, 0, 6, 0, 0, 30261, 1, -257.077, -486.376221, 49.43986, 0.0192855, 7200, 0, 0, 1806, 326, 0, 0, 0, 0, 0),
+(@CGUID+57, 48440, 36, 0, 0, 6, 0, 0, 30184, 1, -157.717, -520.205, 52.495, 2.30383, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 113
+(@CGUID+58, 48279, 36, 0, 0, 6, 0, 0, 36135, 0, -186.094, -496.744, 53.4963, 1.77017, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+59, 48502, 36, 0, 0, 6, 0, 0, 36165, 1, -131.684, -602.8, 15.7192, 1.65806, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+60, 48505, 36, 0, 0, 6, 0, 0, 184, 1, -135.177, -633.656, 14.5447, 1.23918, 7200, 0, 0, 1312, 100, 0, 0, 0, 0, 0), -- 112
+(@CGUID+61, 48502, 36, 0, 0, 6, 0, 0, 36165, 1, -144.295, -575.267, 19.1305, 3.40339, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+62, 48417, 36, 0, 0, 6, 0, 0, 36164, 1, -138.802, -578.325, 18.572, 3.10669, 7200, 0, 0, 1140, 1580, 0, 0, 0, 0, 0),
+(@CGUID+63, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -106.967, -660.372, 7.50513, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+64, 48502, 36, 0, 0, 6, 0, 0, 36165, 1, -143.554, -582.24, 18.8237, 2.9147, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+65, 48505, 36, 0, 0, 6, 0, 0, 210, 1, -127.726, -602.797, 16.1609, 1.93731, 7200, 0, 0, 1312, 100, 0, 0, 0, 0, 0), -- 111
+(@CGUID+66, 48502, 36, 0, 0, 6, 0, 0, 36167, 1, -133.95, -629.488, 14.1015, 1.79769, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+67, 48417, 36, 0, 0, 6, 0, 0, 36163, 1, -129.417, -633.34, 13.2763, 1.78024, 7200, 0, 0, 1140, 1580, 0, 0, 0, 0, 0),
+(@CGUID+68, 48502, 36, 0, 0, 6, 0, 0, 36166, 1, -128.217, -627.396, 13.4368, 2.19912, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+69, 48521, 36, 0, 0, 6, 0, 0, 2349, 1, -122.405, -794.535, 16.9422, 1.53589, 7200, 0, 0, 1204, 1580, 0, 0, 0, 0, 0),
+(@CGUID+70, 48521, 36, 0, 0, 6, 0, 0, 2350, 1, -58.66, -782.222, 17.978, 3.0539, 7200, 0, 0, 1204, 1580, 2, 0, 0, 0, 0), -- 110
+(@CGUID+71, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -12.0556, -740.252, 9.10946, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+72, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, 0.512153, -768.229, 9.80134, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+73, 48521, 36, 0, 0, 6, 0, 0, 2349, 1, -121.389, -832.83, 17.0271, 4.06662, 7200, 0, 0, 1204, 1580, 0, 0, 0, 0, 0),
+(@CGUID+74, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -29.5, -846.29, 19.3106, 3.56047, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+75, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -49.3264, -730.056, 9.32048, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+76, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -30.6337, -727.731, 8.52102, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+77, 48446, 36, 0, 0, 6, 0, 0, 36147, 0, -72.559, -731.221, 8.5869, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+78, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -31.9462, -845.813, 19.1758, 6.17846, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+79, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -96.1215, -662.59, 7.49677, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+80, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -117.422, -412.74, 58.5219, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+81, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -149.915, -524.575, 52.2205, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+82, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -150.373, -533.181, 49.6118, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+83, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -192.785, -495.118, 53.5662, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+84, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -158.859, -533.128, 52.419, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+85, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -109.484, -621.764, 14.7253, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+86, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -153.231, -532.743, 49.6474, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+87, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -154.483, -532.689, 49.8082, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+88, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -146.743, -586.997, 18.936, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+89, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -203, -589.443, 21.0601, 4.01426, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+90, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -222.319, -561.106, 19.3898, 2.35619, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+91, 48418, 36, 0, 0, 6, 0, 0, 36139, 1, -304.667, -587.62, 47.665, 4.24907, 7200, 5, 0, 1140, 1580, 1, 0, 0, 0, 0),
+(@CGUID+92, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -228.839, -561.601, 51.3129, 3.45575, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+93, 48420, 36, 0, 0, 6, 0, 0, 2441, 1, -286.096, -592.7, 49.809, 1.880441, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+94, 48421, 36, 0, 0, 6, 0, 0, 2316, 1, -303.453, -609.116, 47.72813, 3.403392, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+95, 48419, 36, 0, 0, 6, 0, 0, 308, 1, -282.78, -557.547, 49.3715, 6.23082, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+96, 48419, 36, 0, 0, 6, 0, 0, 2444, 1, -303.998, -579.311, 48.0751, 2.334103, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 109 --
+(@CGUID+97, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -234.089, -587.472, 19.3898, 3.59538, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+98, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -185.151, -559.092, 19.3898, 3.07178, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+99, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -204.636, -442.863, 54.1788, 1.50488, 7200, 0, 0, 42, 0, 2, 0, 0, 0, 0), -- 108
+(@CGUID+100, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -189.061, -422.387, 54.1955, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+101, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -199.15, -434.636, 65.1862, 1.43509, 7200, 0, 0, 42, 0, 2, 0, 0, 0, 0), -- 107
+(@CGUID+102, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -190.347, -431.764, 53.7694, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+103, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -214.543, -441.151, 54.6617, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+104, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -193.269, -442.016, 53.7124, 1.69297, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+105, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -178.859, -427.351, 63.6494, 5.50465, 7200, 0, 0, 42, 0, 2, 0, 0, 0, 0), -- 106
+(@CGUID+106, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -207.479, -441.516, 54.0559, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+107, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -211.063, -463.714, 54.0187, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+108, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -204.993, -456.09, 54.2894, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+109, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -211.771, -564.958, 21.0601, 1.8675, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+110, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -209.266, -569.715, 27.3194, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+111, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -216.793, -571.972, 21.0601, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+112, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -206.163, -568.849, 24.6352, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+113, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -169.663, -407.125, 57.6002, 5.88176, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 105
+(@CGUID+114, 48230, 36, 0, 0, 6, 0, 0, 10704, 0, -168.764, -401.113, 57.2797, 0.610865, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- none
+(@CGUID+115, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -123.439, -392.214, 58.795, 2.47837, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 104
+(@CGUID+116, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -140.064, -399.931, 58.3888, 1.5708, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+117, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -163.722, -402.238, 57.0364, 5.446437, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 103
+(@CGUID+118, 48230, 36, 0, 0, 6, 0, 0, 10704, 0, -135.946, -405.498, 58.1496, 3.00197, 7200, 5, 0, 1312, 0, 1, 0, 0, 0, 0),
+(@CGUID+119, 48262, 36, 0, 0, 6, 0, 0, 37382, 1, -190.826, -425.172, 54.1097, 5.89921, 7200, 0, 0, 1968, 0, 0, 0, 0, 0, 0),
+(@CGUID+120, 48230, 36, 0, 0, 6, 0, 0, 10704, 0, -126.363, -392.281, 58.8804, 0.855211, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+121, 48230, 36, 0, 0, 6, 0, 0, 10704, 0, -97.5538, -398.875, 58.4307, 2.56563, 7200, 5, 0, 1312, 0, 1, 0, 0, 0, 0),
+(@CGUID+122, 48266, 36, 0, 0, 6, 0, 0, 21788, 0, -122.925, -388.813, 59.0769, 0.401426, 7200, 0, 0, 328, 0, 0, 0, 0, 0, 0),
+(@CGUID+123, 48445, 36, 0, 0, 6, 0, 0, 30262, 1, -275.003, -519.023, 49.9407, 0.698132, 7200, 0, 0, 1806, 326, 0, 0, 0, 0, 0), -- 102
+(@CGUID+124, 48351, 36, 0, 0, 6, 0, 0, 36120, 0, -210.811, -502.945, 51.3915, 2.51883, 7200, 0, 0, 1312, 0, 2, 0, 0, 0, 0), -- 101
+(@CGUID+125, 48440, 36, 0, 0, 6, 0, 0, 30184, 1, -147.781, -532.668, 50.3866, 5.8294, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 100
+(@CGUID+126, 48278, 36, 0, 0, 6, 0, 0, 30187, 1, -205.488, -501.338, 52.1324, 1.152725, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 99
+(@CGUID+127, 48441, 36, 0, 0, 6, 0, 0, 30186, 1, -197.078, -491.455, 53.95, 3.648228, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 98
+(@CGUID+128, 48279, 36, 0, 0, 6, 0, 0, 36133, 0, -156.708, -519.698, 52.5334, 3.9968, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+129, 48278, 36, 0, 0, 6, 0, 0, 30187, 1, -179.098, -492.231, 54.4337, 0.0838069, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 97
+(@CGUID+130, 48279, 36, 0, 0, 6, 0, 0, 36132, 0, -221.134, -488.538, 48.7575, 1.44862, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+131, 48441, 36, 0, 0, 6, 0, 0, 30186, 1, -183.823, -503.42, 53.3411, 4.812, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0),
+(@CGUID+132, 48505, 36, 0, 0, 6, 0, 0, 210, 1, -136.177, -603.12, 15.8018, 1.36136, 7200, 0, 0, 1312, 100, 0, 0, 0, 0, 0), -- 96
+(@CGUID+133, 48505, 36, 0, 0, 6, 0, 0, 184, 1, -110.326, -617.406, 13.6003, 3.10669, 7200, 0, 0, 1312, 100, 0, 0, 0, 0, 0), -- 95
+(@CGUID+134, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -48.3003, -852.727, 18.4557, 5.39307, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 94
+(@CGUID+135, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -88.4253, -724.722, 8.67503, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+136, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -103.72, -846.056, 17.1134, 3.07178, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+137, 48522, 36, 0, 0, 6, 0, 0, 2347, 1, -42.0486, -796.323, 39.4285, 0.994838, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 93
+(@CGUID+138, 48521, 36, 0, 0, 6, 0, 0, 2350, 1, -77.3224, -791.051, 38.733, 1.67064, 7200, 0, 0, 1204, 1580, 2, 0, 0, 0, 0), -- 92
+(@CGUID+139, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -108.859, -843.837, 17.0549, 5.68977, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+140, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -48.2222, -786.179, 18.42, 1.09956, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 91
+(@CGUID+141, 48447, 36, 0, 0, 6, 0, 0, 36148, 0, -35.3811, -722.848, 20.8815, 5.27407, 7200, 0, 0, 300, 100, 2, 0, 0, 0, 0), -- 90
+(@CGUID+142, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -72.559, -731.221, 8.5869, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+143, 48446, 36, 0, 0, 6, 0, 0, 36147, 0, 0.512153, -768.229, 9.80134, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+144, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -179.148, -425.917, 55.0343, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+145, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -250.729, -584.616, 51.2278, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+146, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -149.479, -533.724, 49.7047, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+147, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -138.866, -412.375, 58.8345, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+148, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -249.444, -492.528, 49.2208, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+149, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -292.052, -575.366, 48.8457, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+150, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -127.288, -599.422, 16.8903, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+151, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -158.8, -531.5, 52.4572, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+152, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -146.592, -528.896, 52.0218, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+153, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -98.1962, -388.095, 58.9235, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+154, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -180.807, -561.872, 51.3129, 0.506145, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+155, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -182.872, -574.391, 48.223, 3.64774, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+156, 48419, 36, 0, 0, 6, 0, 0, 2438, 1, -302.648, -576.9338, 48.2987, 2.602829, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 89 --
+(@CGUID+157, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -211.707, -561.788, 21.0601, 6.14356, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+158, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -183.33, -593.04, 40.1064, 0.314159, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+159, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -205.578, -561.946, 21.0601, 1.37881, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+160, 48418, 36, 0, 0, 6, 0, 0, 36138, 1, -289.589, -562.243, 49.0151, 6.00393, 7200, 5, 0, 1140, 1580, 1, 0, 0, 0, 0),
+(@CGUID+161, 47403, 36, 0, 0, 6, 0, 0, 35604, 0, -228.675, -565.753, 19.3898, 5.98648, 7200, 0, 0, 3280, 100, 0, 0, 0, 0, 0),
+(@CGUID+162, 47404, 36, 0, 0, 6, 0, 0, 35605, 0, -205.535, -552.747, 19.3898, 4.53786, 7200, 0, 0, 3280, 100, 0, 0, 0, 0, 0),
+(@CGUID+163, 47403, 36, 0, 0, 6, 0, 0, 35604, 0, -182.743, -565.969, 19.3898, 3.35103, 7200, 0, 0, 3280, 100, 0, 0, 0, 0, 0),
+(@CGUID+164, 47404, 36, 0, 0, 6, 0, 0, 35605, 0, -229.724, -590.372, 19.3898, 0.715585, 7200, 0, 0, 3280, 100, 0, 0, 0, 0, 0),
+(@CGUID+165, 48418, 36, 0, 0, 6, 0, 0, 36141, 1, -283.961, -595.05, 49.7824, 6.09552, 7200, 5, 0, 1140, 1580, 1, 0, 0, 0, 0), -- 88
+(@CGUID+166, 48419, 36, 0, 0, 6, 0, 0, 2444, 1, -289.462, -598.220, 47.729, 1.771875, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 87 --
+(@CGUID+167, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -201.273, -462.531, 54.3655, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+168, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -197.944, -446.873, 59.5037, 1.42555, 7200, 0, 0, 42, 0, 2, 0, 0, 0, 0), -- 86
+(@CGUID+169, 47162, 36, 0, 0, 6, 0, 0, 37410, 0, -193.368, -441.828, 53.5993, 1.71042, 86400, 0, 0, 11375, 357, 0, 0, 0, 0, 0),
+(@CGUID+170, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -176.099, -431.241, 55.2092, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+171, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -180.252, -437.943, 54.7876, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+172, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -195.924, -436.646, 53.4248, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+173, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -188.757, -452.146, 54.5701, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+174, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -197.222, -453.622, 54.8957, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+175, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -203.043, -448.563, 54.1013, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+176, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -183.608, -446.207, 54.8357, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+177, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -116.497, -420.271, 56.8943, 0.907571, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+178, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -126.455, -441.102, 55.5273, 4.43314, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+179, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -165.851, -395.592, 57.4267, 1.98968, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 85
+(@CGUID+180, 48229, 36, 0, 0, 6, 0, 0, 373, 1, -112.92, -445.181, 55.6213, 5.39307, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 84
+(@CGUID+181, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -90.4306, -375.743, 58.0161, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+182, 48279, 36, 0, 0, 6, 0, 0, 36134, 0, -191.279, -485.839, 54.0441, 1.21275, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+183, 48441, 36, 0, 0, 6, 0, 0, 30186, 1, -220.229, -503.561, 50.3507, 3.29867, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 83
+(@CGUID+184, 48442, 36, 0, 0, 6, 0, 0, 30185, 1, -159.908, -529.783, 52.3288, 3.01942, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 82
+(@CGUID+185, 48279, 36, 0, 0, 6, 0, 0, 36132, 0, -153.231, -531.007, 49.7449, 3.1765, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+186, 48442, 36, 0, 0, 6, 0, 0, 30185, 1, -236.847, -489.092, 49.9486, 4.39823, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 81
+(@CGUID+187, 48445, 36, 0, 0, 6, 0, 0, 30262, 1, -290.559, -490.45, 49.9544, 1.37881, 7200, 0, 0, 1806, 326, 0, 0, 0, 0, 0), -- 80
+(@CGUID+188, 48441, 36, 0, 0, 6, 0, 0, 30186, 1, -154.549, -530.686, 49.8494, 3.71755, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 79
+(@CGUID+189, 48447, 36, 0, 0, 6, 0, 0, 36148, 0, -92.48, -705.064, 9.33688, 4.6445, 7200, 0, 0, 300, 100, 2, 0, 0, 0, 0), -- 78
+(@CGUID+190, 48266, 36, 0, 0, 6, 0, 0, 21788, 0, -89.2569, -782.528, 17.2564, 1.55334, 7200, 0, 0, 328, 0, 0, 0, 0, 0, 0),
+(@CGUID+191, 48521, 36, 0, 0, 6, 0, 0, 2349, 1, -123.168, -790.698, 17.2485, 5.84685, 7200, 0, 0, 1204, 1580, 0, 0, 0, 0, 0),
+(@CGUID+192, 48522, 36, 0, 0, 6, 0, 0, 2347, 1, -119.554, -791.314, 17.193, 2.86234, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+193, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -76.5903, -787.217, 26.2657, 5.42797, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 77
+(@CGUID+194, 48522, 36, 0, 0, 6, 0, 0, 2347, 1, -72.0347, -790.8, 39.3369, 1.78024, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 76
+(@CGUID+195, 48447, 36, 0, 0, 6, 0, 0, 36148, 0, -57.2437, -727.385, 16.8742, 5.54957, 7200, 0, 0, 300, 100, 2, 0, 0, 0, 0), -- 75
+(@CGUID+196, 48522, 36, 0, 0, 6, 0, 0, 2347, 1, -59.0538, -791.024, 39.1883, 1.37881, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 74
+(@CGUID+197, 48446, 36, 0, 0, 6, 0, 0, 36147, 0, -88.4253, -724.722, 8.67503, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+198, 48450, 36, 0, 0, 6, 0, 0, 36150, 0, -4.68842, -746.402, 8.80825, 3.77815, 7200, 8, 0, 300, 100, 1, 0, 0, 0, 0),
+(@CGUID+199, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -136.859, -630.3, 14.8651, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+200, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -213.526, -496.017, 49.7937, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+201, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -123.663, -395.759, 58.4454, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+202, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -153.854, -533.601, 49.6608, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+203, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -302.448, -504.391, 49.5412, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+204, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -276.222, -579.795, 50.4263, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+205, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -275.771, -502.406, 50.0816, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+206, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -284.227, -550.545, 49.5303, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+207, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -149.052, -523.596, 52.4815, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+208, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -308.819, -599.736, 48.2892, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+209, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -223.089, -575.111, 21.0601, 3.68265, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+210, 48421, 36, 0, 0, 6, 0, 0, 2317, 1, -306.72, -606.372, 47.8699, 4.20624, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+211, 48419, 36, 0, 0, 6, 0, 0, 2438, 1, -260.201, -571.132, 50.862, 1.8675, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+212, 48419, 36, 0, 0, 6, 0, 0, 2438, 1, -284.108, -561.8715, 49.307, 6.030968, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 73 --
+(@CGUID+213, 48419, 36, 0, 0, 6, 0, 0, 308, 1, -305.8432, -582.1897, 48.493, 2.565131, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0), -- 72 --
+(@CGUID+214, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -195.891, -600.521, 33.9845, 1.39626, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+215, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -217.95, -598.425, 23.3113, 2.02458, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+216, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -216.05, -578.45, 21.0601, 0.593412, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0),
+(@CGUID+217, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -205.197, -450.986, 65.2096, 3.6569, 7200, 0, 0, 42, 0, 2, 0, 0, 0, 0), -- 71
+(@CGUID+218, 47284, 36, 0, 0, 6, 0, 0, 11686, 0, -200.88, -440.773, 53.4445, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+219, 47677, 36, 0, 0, 6, 0, 0, 11686, 0, -193.358, -442.031, 53.7168, 1.69297, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+220, 47282, 36, 0, 0, 6, 0, 0, 11686, 0, -193.694, -445.674, 54.2208, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+221, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -180.47, -449.579, 65.2876, 5.02563, 7200, 0, 0, 42, 0, 2, 0, 0, 0, 0), -- 70
+(@CGUID+222, 48441, 36, 0, 0, 6, 0, 0, 30186, 1, -211.255, -512.712, 50.905, 5.23599, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 69
+(@CGUID+223, 48278, 36, 0, 0, 6, 0, 0, 30187, 1, -219.513, -484.183, 50.0064, 1.39033, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 68
+(@CGUID+224, 48445, 36, 0, 0, 6, 0, 0, 30261, 1, -256.983, -478.148, 49.5233, 6.16101, 7200, 0, 0, 1806, 326, 0, 0, 0, 0, 0), -- 67
+(@CGUID+225, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -87.7917, -786.304, 17.3169, 1.76278, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 66
+(@CGUID+226, 48522, 36, 0, 0, 6, 0, 0, 2347, 1, -22.316, -833.927, 19.6427, 0.139626, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+227, 48521, 36, 0, 0, 6, 0, 0, 2349, 1, -124.783, -834.497, 16.9262, 5.98648, 7200, 0, 0, 1204, 1580, 0, 0, 0, 0, 0),
+(@CGUID+228, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -100.849, -703.773, 9.29407, 0, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+229, 48447, 36, 0, 0, 6, 0, 0, 36148, 0, -102.604, -720.311, 8.58634, 5.40141, 7200, 8, 0, 300, 100, 1, 0, 0, 0, 0),
+(@CGUID+230, 48266, 36, 0, 0, 6, 0, 0, 21788, 0, -30.2622, -793.069, 19.237, 0.802851, 7200, 0, 0, 328, 0, 0, 0, 0, 0, 0),
+(@CGUID+231, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -81.4913, -779.387, 26.7951, 1.79769, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 65
+(@CGUID+232, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -107.352, -847.233, 17.0334, 1.0821, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+233, 48266, 36, 0, 0, 6, 0, 0, 21788, 0, -40.0035, -793.302, 39.4754, 1.0472, 7200, 0, 0, 328, 0, 0, 0, 0, 0, 0),
+(@CGUID+234, 48446, 36, 0, 0, 6, 0, 0, 36147, 0, -12.0556, -740.252, 9.10946, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+235, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -182.821, -485.785, 54.1321, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+236, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -228.181, -491.986, 48.785, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+237, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -168.455, -396.632, 57.568, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+238, 48284, 36, 0, 0, 6, 0, 0, 36085, 0, -206.377, -511.821, 51.6158, 0, 7200, 0, 0, 3, 0, 0, 0, 0, 0, 0),
+(@CGUID+239, 48279, 36, 0, 0, 6, 0, 0, 36135, 0, -217.524, -502.311, 50.8115, 3.56047, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+240, 48441, 36, 0, 0, 6, 0, 0, 30186, 1, -157.344, -507.266, 53.5206, 0.645772, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 64
+(@CGUID+241, 48278, 36, 0, 0, 6, 0, 0, 30187, 1, -168.326, -510.337, 53.5563, 4.71239, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0),
+(@CGUID+242, 48279, 36, 0, 0, 6, 0, 0, 36132, 0, -168.495, -508.53, 53.5882, 4.90438, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+243, 48442, 36, 0, 0, 6, 0, 0, 30185, 1, -192.204, -506.94, 53.2189, 0.17152, 7200, 0, 0, 300, 100, 2, 0, 0, 0, 0), -- 63
+(@CGUID+244, 48279, 36, 0, 0, 6, 0, 0, 36132, 0, -234.918, -487.356, 48.5705, 3.80482, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+245, 48445, 36, 0, 0, 6, 0, 0, 30261, 1, -281.757, -494.666, 49.2797, 2.0268, 7200, 0, 0, 1806, 326, 2, 0, 0, 0, 0), -- 62
+(@CGUID+246, 48440, 36, 0, 0, 6, 0, 0, 30184, 1, -150.635, -518.189, 52.9936, 0.767945, 7200, 0, 0, 300, 100, 0, 0, 0, 0, 0), -- 61
+(@CGUID+247, 48279, 36, 0, 0, 6, 0, 0, 36132, 0, -203.663, -502.885, 52.9165, 2.19912, 7200, 0, 0, 1640, 0, 0, 0, 0, 0, 0),
+(@CGUID+248, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -121.691, -835.438, 16.9671, 2.6529, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+249, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -19.1372, -813.344, 19.793, 1.46608, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 60
+(@CGUID+250, 48522, 36, 0, 0, 6, 0, 0, 2347, 1, -19.5833, -832.882, 19.8021, 3.50811, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+251, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -91.2517, -852.661, 17.2657, 5.55015, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+252, 48521, 36, 0, 0, 6, 0, 0, 2349, 1, -32.0191, -847.84, 19.1876, 0.558505, 7200, 0, 0, 1204, 1580, 0, 0, 0, 0, 0),
+(@CGUID+253, 48521, 36, 0, 0, 6, 0, 0, 2349, 1, -89.0278, -854.734, 17.305, 2.49582, 7200, 0, 0, 1204, 1580, 0, 0, 0, 0, 0),
+(@CGUID+254, 48446, 36, 0, 0, 6, 0, 0, 36147, 0, -100.849, -703.773, 9.29407, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+255, 48446, 36, 0, 0, 6, 0, 0, 36147, 0, -30.6337, -727.731, 8.52102, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+256, 48266, 36, 0, 0, 6, 0, 0, 21788, 0, -58.6424, -787.132, 39.3505, 1.39626, 7200, 0, 0, 328, 0, 0, 0, 0, 0, 0),
+(@CGUID+257, 48447, 36, 0, 0, 6, 0, 0, 36148, 0, -74.648, -730.786, 19.0409, 4.32596, 7200, 0, 0, 300, 100, 2, 0, 0, 0, 0), -- 59
+(@CGUID+258, 46890, 36, 0, 0, 6, 0, 0, 35340, 1, -68.9063, -382.668, 54.0049, 2.67035, 7200, 0, 0, 1452, 0, 0, 0, 0, 0, 0),
+(@CGUID+259, 46902, 36, 0, 0, 6, 0, 0, 35342, 1, -57.0278, -403.214, 54.3313, 2.37365, 7200, 0, 0, 2715, 0, 0, 0, 0, 0, 0),
+(@CGUID+260, 46890, 36, 0, 0, 6, 0, 0, 35340, 1, -15.3507, -375.851, 60.8098, 4.2586, 7200, 0, 0, 1452, 0, 0, 0, 0, 0, 0),
+(@CGUID+261, 46889, 36, 0, 0, 6, 0, 0, 35333, 1, -66.2517, -401.241, 54.2756, 1.51844, 7200, 0, 0, 2865, 0, 0, 0, 0, 0, 0),
+(@CGUID+262, 46903, 36, 0, 0, 6, 0, 0, 5299, 0, -53.5035, -402.894, 55.534, 2.40855, 7200, 0, 0, 1668, 0, 0, 0, 0, 0, 0),
+(@CGUID+263, 46890, 36, 0, 0, 6, 0, 0, 35340, 1, -66.9566, -373.967, 55.1601, 3.1765, 7200, 0, 0, 1452, 0, 0, 0, 0, 0, 0),
+(@CGUID+264, 46903, 36, 0, 0, 6, 0, 0, 5299, 0, -59.4844, -405.837, 55.0932, 1.81514, 7200, 0, 0, 1668, 0, 0, 0, 0, 0, 0),
+(@CGUID+265, 46890, 36, 0, 0, 6, 0, 0, 35340, 1, -45.0608, -384.533, 55.6289, 1.29154, 7200, 0, 0, 1452, 0, 0, 0, 0, 0, 0),
+(@CGUID+266, 46906, 36, 0, 0, 6, 0, 0, 29346, 1, -66.6233, -398.573, 54.6927, 4.85202, 7200, 0, 0, 800, 100, 0, 0, 0, 0, 0),
+(@CGUID+267, 48338, 36, 0, 0, 6, 0, 0, 36119, 0, -188.042, -497.331, 53.3695, 4.41967, 7200, 0, 0, 1312, 0, 2, 0, 0, 0, 0), -- 58
+(@CGUID+268, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -124.016, -809.231, 16.9686, 4.03171, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 57
+(@CGUID+269, 48446, 36, 0, 0, 6, 0, 0, 36147, 0, -49.3264, -730.056, 9.32048, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+270, 48447, 36, 0, 0, 6, 0, 0, 36148, 0, -92.6043, -693.693, 8.39226, 5.16272, 7200, 8, 0, 300, 100, 1, 0, 0, 0, 0),
+(@CGUID+271, 48522, 36, 0, 0, 6, 0, 0, 2347, 1, -32.6267, -795.549, 19.089, 0.698132, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 56
+(@CGUID+272, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -45.6111, -851.63, 18.5623, 4.79965, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 55
+(@CGUID+273, 48521, 36, 0, 0, 6, 0, 0, 2350, 1, -32.9757, -790.03, 19.0157, 0.818257, 7200, 0, 0, 1204, 1580, 0, 0, 0, 0, 0),
+(@CGUID+274, 48451, 36, 0, 0, 6, 0, 0, 36152, 0, -138.689, -769.642, 3.17489, 1.40024, 7200, 0, 0, 300, 100, 2, 0, 0, 0, 0), -- 54
+(@CGUID+275, 48522, 36, 0, 0, 6, 0, 0, 2347, 1, -17.9792, -818.58, 19.8577, 2.37365, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 53
+(@CGUID+276, 48266, 36, 0, 0, 6, 0, 0, 21788, 0, -72.1059, -786.894, 39.5538, 1.64061, 7200, 0, 0, 328, 0, 0, 0, 0, 0, 0),
+(@CGUID+277, 48266, 36, 0, 0, 6, 0, 0, 21788, 0, -82.3142, -775.5, 26.8933, 1.72788, 7200, 0, 0, 328, 0, 0, 0, 0, 0, 0),
+(@CGUID+278, 48522, 36, 0, 0, 6, 0, 0, 2348, 1, -105.021, -843.693, 17.1262, 4.17134, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0), -- 52
+(@CGUID+279, 48266, 36, 0, 0, 6, 0, 0, 21788, 0, -46.901, -783.154, 18.4898, 1.16937, 7200, 0, 0, 328, 0, 0, 0, 0, 0, 0),
+(@CGUID+280, 48447, 36, 0, 0, 6, 0, 0, 36148, 0, -0.889659, -757.723, 9.19812, 2.21015, 7200, 8, 0, 300, 100, 1, 0, 0, 0, 0),
+(@CGUID+281, 24935, 36, 0, 0, 6, 0, 0, 0, 0, -55.457, -405.350, 55.03, 2.086530, 7200, 0, 0, 60, 0, 0, 0, 0, 0, 0),
+(@CGUID+282, 48278, 36, 0, 0, 6, 0, 0, 0, 1, -193.557, -507.0221, 53.1868, 5.050059, 7200, 0, 0, 60, 0, 0, 0, 0, 0, 0),
+(@CGUID+283, 48417, 36, 0, 0, 6, 0, 0, 0, 1, -139.2213, -582.9287, 18.2842, 2.928735, 7200, 0, 0, 60, 0, 0, 0, 0, 0, 0),
+(@CGUID+284, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -277.722, -495.944, 49.6921, 4.76221, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0), -- 51
+(@CGUID+285, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -272.104, -488.595, 49.2876, 5.79361, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0), -- 50
+(@CGUID+291, 48439, 36, 0, 0, 6, 0, 0, 7109, 1, -273.826, -477.703, 49.2435, 1.04438, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0), -- 48
+(@CGUID+292, 48280, 36, 0, 0, 6, 0, 0, 7110, 0, -278.252, -485.319, 48.8387, 0.289022, 7200, 0, 0, 984, 0, 0, 0, 0, 0, 0), -- 49
+(@CGUID+293, 48417, 36, 0, 0, 6, 0, 0, 36163, 1, -97.467, -675.726, 7.50242, 1.78024, 7200, 0, 0, 1140, 1580, 0, 0, 0, 0, 0), -- 47
+(@CGUID+294, 48417, 36, 0, 0, 6, 0, 0, 2447, 1, -100.878, -676.349, 7.49962, 1.78024, 7200, 0, 0, 1140, 1580, 0, 0, 0, 0, 0), -- 46
+(@CGUID+295, 48505, 36, 0, 0, 6, 0, 0, 210, 1, -98.4774, -672.389, 7.50265, 1.23918, 7200, 0, 0, 1312, 100, 0, 0, 0, 0, 0), -- 45
+(@CGUID+296, 48502, 36, 0, 0, 6, 0, 0, 36167, 1, -101.089, -673.014, 7.50165, 1.79769, 7200, 0, 0, 1312, 0, 0, 0, 0, 0, 0),
+(@CGUID+297, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -64.4392, -819.938, 41.2188, 0.0523599, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+298, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -70.941, -835.523, 40.6859, 4.17134, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 44
+(@CGUID+299, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -79.2431, -834.884, 39.9758, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 43
+(@CGUID+300, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -88.1024, -831.63, 39.2559, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 42
+(@CGUID+301, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -95.3628, -828.319, 38.6867, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 41
+(@CGUID+302, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -99.684, -818.974, 38.3542, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 40
+(@CGUID+303, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -101.174, -824.677, 38.2535, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 39
+(@CGUID+304, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -104.384, -819.276, 38.0203, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 38
+(@CGUID+305, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -101.122, -813.936, 38.2438, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 37
+(@CGUID+306, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -94.2292, -809.929, 38.7469, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 36
+(@CGUID+307, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -85.6667, -808.549, 39.4228, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 35
+(@CGUID+308, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -79.3229, -806.665, 39.93, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 34
+(@CGUID+309, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -72.8733, -808.346, 40.4807, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 33
+(@CGUID+310, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -66.6615, -805.149, 41.0334, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 32
+(@CGUID+311, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -60, -807.571, 41.6455, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 31
+(@CGUID+312, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -55.0469, -805.922, 42.1087, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 30
+(@CGUID+313, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -47.6163, -808.856, 42.8273, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 29
+(@CGUID+314, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -82.5642, -830.498, 39.7044, 5.39307, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 28
+(@CGUID+315, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -75.5295, -831.818, 40.2749, 2.46091, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 27
+(@CGUID+316, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -51.8837, -833.491, 42.4604, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 26
+(@CGUID+317, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -57.3889, -822.721, 41.915, 3.24631, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 25
+(@CGUID+318, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -47.4358, -831.122, 42.8763, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 24
+(@CGUID+319, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -51.8299, -829.847, 42.455, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 23
+(@CGUID+320, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -58.0365, -812.931, 41.8374, 5.67232, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 22
+(@CGUID+321, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -73.6458, -814.604, 40.402, 3.97935, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 21
+(@CGUID+322, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -56.4115, -827.823, 42.0163, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 20
+(@CGUID+323, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -61.9878, -829.885, 41.5003, 2.44346, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 19
+(@CGUID+324, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -73.9705, -819.941, 40.3588, 4.38078, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 18
+(@CGUID+325, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -53.2882, -810.453, 42.2844, 2.47837, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 17
+(@CGUID+326, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -56.9514, -832.986, 41.9731, 2.05949, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 16
+(@CGUID+327, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -65.401, -833.352, 41.2017, 2.14675, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 15
+(@CGUID+328, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -60.9792, -835.979, 41.5982, 0, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 14
+(@CGUID+329, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -68.934, -829.365, 40.8772, 3.10669, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 13
+(@CGUID+330, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -72.9931, -825.99, 40.4834, 0.244346, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 12
+(@CGUID+331, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -56.901, -818.264, 41.954, 2.46091, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 11
+(@CGUID+332, 45979, 36, 0, 0, 6, 0, 0, 11686, 0, -66.8785, -820.351, 40.9776, 0.0523599, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0), -- 10
+(@CGUID+333, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -62.6597, -823.653, 41.4015, 2.05949, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 9
+(@CGUID+334, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -68.1302, -822.918, 40.888, 4.08407, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 8
+(@CGUID+335, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -67.6128, -814.219, 40.944, 3.76991, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 7
+(@CGUID+336, 47242, 36, 0, 0, 6, 0, 0, 11686, 0, -62.6927, -814.031, 41.3843, 4.32842, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0), -- 6
+(@CGUID+337, 4075, 36, 0, 0, 6, 0, 0, 1141, 0, -19.7409, -817.841, 19.7463, 0.767945, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+338, 51624, 36, 0, 0, 6, 0, 0, 11686, 0, -205.769, -579.092, 51.1029, 5.98648, 7200, 0, 0, 77490, 0, 0, 0, 0, 0, 0),
+(@CGUID+339, 49208, 36, 0, 0, 4, 0, 0, 36412, 0, -205.823, -553.793, 51.3129, 4.71239, 7200, 0, 0, 333360, 100, 0, 0, 0, 0, 0),
+(@CGUID+340, 49552, 36, 0, 0, 6, 0, 0, 11686, 0, -74.2969, -877.101, 195.044, 4.60767, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+341, 49552, 36, 0, 0, 6, 0, 0, 11686, 0, -63.6059, -862.786, 202.73, 4.60767, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+342, 49552, 36, 0, 0, 6, 0, 0, 11686, 0, -71.1146, -868.464, 200.771, 4.60767, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+343, 49552, 36, 0, 0, 6, 0, 0, 11686, 0, -69.1545, -868.964, 195.248, 4.60767, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+344, 49552, 36, 0, 0, 6, 0, 0, 11686, 0, -64.217, -866.182, 195.395, 4.60767, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+345, 48974, 36, 0, 0, 6, 0, 0, 11686, 0, -193.287, -441.953, 53.7636, 1.77497, 7200, 0, 0, 6141, 0, 2, 0, 0, 0, 0), -- 128
+(@CGUID+346, 48975, 36, 0, 0, 6, 0, 0, 11686, 0, -194.489, -448.895, 55.7367, 2.96513, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+347, 48976, 36, 0, 0, 6, 0, 0, 11686, 0, -192.315, -433.549, 55.7642, 6.16542, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+348, 48976, 36, 0, 0, 6, 0, 0, 11686, 0, -191.956, -430.578, 55.7367, 6.16542, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+349, 48976, 36, 0, 0, 6, 0, 0, 11686, 0, -194.62, -447.334, 55.7367, 2.89493, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+350, 48976, 36, 0, 0, 6, 0, 0, 11686, 0, -193.888, -444.425, 55.7367, 2.89493, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+351, 49039, 36, 0, 0, 6, 0, 0, 11686, 0, -191.069, -423.138, 55.7092, 6.16542, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+352, 49041, 36, 0, 0, 6, 0, 0, 11686, 0, -189.436, -421.866, 55.7367, 6.09396, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+353, 49041, 36, 0, 0, 6, 0, 0, 11686, 0, -188.866, -418.928, 55.7092, 6.09396, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+354, 49041, 36, 0, 0, 6, 0, 0, 11686, 0, -189.995, -424.821, 55.7092, 6.09396, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+355, 49041, 36, 0, 0, 6, 0, 0, 11686, 0, -190.559, -427.767, 55.7092, 6.09396, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+356, 49040, 36, 0, 0, 6, 0, 0, 11686, 0, -189.659, -411.221, 55.7092, 6.16542, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+357, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -187.179, -410.08, 55.7367, 6.09396, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+358, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -186.609, -407.142, 55.7092, 6.09396, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+359, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -187.738, -413.035, 55.7092, 6.09396, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+360, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -188.302, -415.982, 55.7092, 6.09396, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+361, 49040, 36, 0, 0, 6, 0, 0, 11686, 0, -236.065, -437.8, 55.7092, 1.47229, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+362, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -237.134, -434.464, 55.7367, 1.40015, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+363, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -240.082, -433.948, 55.7092, 1.40015, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+364, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -234.169, -434.967, 55.7092, 1.40015, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+365, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -231.212, -435.477, 55.7092, 1.40015, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+366, 48975, 36, 0, 0, 6, 0, 0, 11686, 0, -197.041, -438.707, 55.7092, 3.99851, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+367, 48976, 36, 0, 0, 6, 0, 0, 11686, 0, -195.68, -439.46, 55.7367, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+368, 48976, 36, 0, 0, 6, 0, 0, 11686, 0, -193.605, -441.616, 55.7092, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+369, 48976, 36, 0, 0, 6, 0, 0, 11686, 0, -197.776, -437.303, 55.7092, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+370, 48976, 36, 0, 0, 6, 0, 0, 11686, 0, -199.862, -435.147, 55.7092, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+371, 49039, 36, 0, 0, 6, 0, 0, 11686, 0, -206.111, -430.85, 55.7092, 3.99851, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+372, 49041, 36, 0, 0, 6, 0, 0, 11686, 0, -204.023, -430.835, 55.7367, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+373, 49041, 36, 0, 0, 6, 0, 0, 11686, 0, -201.947, -432.991, 55.7092, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+374, 49041, 36, 0, 0, 6, 0, 0, 11686, 0, -206.119, -428.678, 55.7092, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+375, 49041, 36, 0, 0, 6, 0, 0, 11686, 0, -208.204, -426.522, 55.7092, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+376, 49040, 36, 0, 0, 6, 0, 0, 11686, 0, -215.181, -422.993, 55.7092, 3.99851, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+377, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -212.366, -422.209, 55.7367, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+378, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -210.29, -424.365, 55.7092, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+379, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -214.462, -420.053, 55.7092, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+380, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -216.547, -417.896, 55.7092, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+381, 49040, 36, 0, 0, 6, 0, 0, 11686, 0, -221.762, -412.505, 55.7092, 3.91034, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+382, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -218.405, -411.525, 55.7367, 3.83193, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+383, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -216.505, -413.837, 55.7092, 3.83193, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+384, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -220.325, -409.211, 55.7092, 3.83193, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+385, 49042, 36, 0, 0, 6, 0, 0, 11686, 0, -238.781, -441.79, 55.7092, 4.70847, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+391, 51462, 36, 0, 0, 6, 0, 0, 1418, 0, -291.012, -482.49, 49.8879, 3.52556, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+392, 51462, 36, 0, 0, 6, 0, 0, 1141, 0, -290.448, -484.328, 49.8879, 3.52556, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+393, 51462, 36, 0, 0, 6, 0, 0, 1141, 0, -288.988, -483.201, 49.8879, 3.52556, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+394, 51462, 36, 0, 0, 6, 0, 0, 1141, 0, -293.786, -483.819, 49.1596, 3.52556, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+395, 51462, 36, 0, 0, 6, 0, 0, 1141, 0, -286.944, -482.965, 49.8879, 3.52556, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+396, 51462, 36, 0, 0, 6, 0, 0, 1141, 0, -288.165, -484.811, 49.8879, 3.52556, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+397, 51462, 36, 0, 0, 6, 0, 0, 1141, 0, -289.672, -487.222, 49.8879, 3.52556, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+398, 51462, 36, 0, 0, 6, 0, 0, 2176, 0, -291.99, -486.26, 49.8879, 3.52556, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+399, 51462, 36, 0, 0, 6, 0, 0, 1141, 0, -290.905, -486.493, 49.8879, 3.52556, 7200, 0, 0, 8, 0, 0, 0, 0, 0, 0),
+(@CGUID+400, 49457, 36, 0, 0, 6, 0, 0, 36493, 0, -212.352, -575.398, 37.3316, 5.70723, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+401, 49454, 36, 0, 0, 6, 0, 0, 11686, 0, -205.757, -579.097, 42.9862, 0, 7200, 0, 0, 6141, 0, 0, 0, 0, 0, 0),
+(@CGUID+402, 49457, 36, 0, 0, 6, 0, 0, 36493, 0, -199.194, -583.154, 37.3316, 2.60054, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+403, 49457, 36, 0, 0, 6, 0, 0, 36493, 0, -201.809, -572.622, 37.3316, 4.17134, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+404, 49457, 36, 0, 0, 6, 0, 0, 36493, 0, -209.682, -585.892, 37.3316, 0.959931, 7200, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+405, 46614, 36, 0, 0, 6, 0, 0, 32776, 0, -65.5035, -352.451, 55.5116, 2.9147, 7200, 0, 0, 1210, 0, 0, 0, 0, 0, 0), -- 140
+(@CGUID+406, 46614, 36, 0, 0, 6, 0, 0, 32775, 0, -67.6649, -391.128, 53.8918, 2.54818, 7200, 0, 0, 1210, 0, 0, 0, 0, 0, 0),
+(@CGUID+407, 46613, 36, 0, 0, 6, 0, 0, 23408, 0, -66.467, -399.774, 54.5068, 1.92549, 7200, 0, 0, 562, 0, 2, 0, 0, 0, 0), -- 141
+(@CGUID+408, 50595, 36, 0, 0, 6, 0, 0, 5446, 1, -20.4427, -381.738, 61.2574, 5.39307, 7200, 0, 0, 484, 0, 0, 0, 0, 0, 0),
+(@CGUID+409, 46613, 36, 0, 0, 6, 0, 0, 23408, 0, -46.3871, -375.625, 55.5072, 1.77465, 7200, 0, 0, 562, 0, 2, 0, 0, 0, 0), -- 142
+(@CGUID+410, 46613, 36, 0, 0, 6, 0, 0, 23408, 0, -56.1597, -381.604, 54.2186, 0.916678, 7200, 0, 0, 562, 0, 2, 0, 0, 0, 0), -- 143
+(@CGUID+411, 46613, 36, 0, 0, 6, 0, 0, 23408, 0, -18.7778, -375.767, 60.9287, 5.98081, 7200, 0, 0, 562, 0, 2, 0, 0, 0, 0), -- 144
+(@CGUID+412, 491, 36, 0, 0, 6, 0, 0, 3342, 1, -60.6806, -406.563, 55.2114, 1.76278, 7200, 0, 0, 484, 0, 0, 0, 0, 0, 0),
+(@CGUID+413, 46613, 36, 0, 0, 6, 0, 0, 23408, 0, -47.2049, -391.17, 55.8687, 1.17221, 7200, 0, 0, 562, 0, 2, 0, 0, 0, 0), -- 145
+(@CGUID+414, 50595, 36, 0, 0, 6, 0, 0, 3167, 1, -82.6979, -371.33, 57.0672, 3.45575, 7200, 0, 0, 484, 0, 0, 0, 0, 0, 0),
+(@CGUID+415, 46614, 36, 0, 0, 6, 0, 0, 32775, 0, -47.5799, -395.679, 55.5444, 5.60251, 7200, 0, 0, 1210, 0, 0, 0, 0, 0, 0), -- 146
+(@CGUID+416, 50595, 36, 0, 0, 6, 0, 0, 5446, 1, -81.8646, -379.493, 56.3603, 2.9147, 7200, 0, 0, 484, 0, 0, 0, 0, 0, 0),
+(@CGUID+417, 50595, 36, 0, 0, 6, 0, 0, 3167, 1, -47.5174, -384.691, 55.6103, 0.785398, 7200, 0, 0, 484, 0, 0, 0, 0, 0, 0), -- 147
+(@CGUID+418, 46612, 36, 0, 0, 6, 0, 0, 32774, 0, -71.3333, -406.488, 55.1161, 0.890118, 7200, 0, 0, 2865, 0, 0, 0, 0, 0, 0),
+(@CGUID+419, 50595, 36, 0, 0, 6, 0, 0, 3167, 1, -11.1354, -378.773, 61.4627, 4.57276, 7200, 0, 0, 484, 0, 0, 0, 0, 0, 0),
+(@CGUID+420, 46614, 36, 0, 0, 6, 0, 0, 32775, 0, -50.1111, -371.186, 55.3895, 1.90241, 7200, 0, 0, 1210, 0, 0, 0, 0, 0, 0), -- 148
+(@CGUID+421, 53488, 36, 0, 0, 6, 0, 0, 16925, 0, -17.8333, -380.266, 61.0198, 2.82743, 300, 0, 0, 12600, 0, 0, 0, 0, 0, 0),
+(@CGUID+422, 53488, 36, 0, 0, 6, 0, 0, 16925, 0, -34.3038, -374.941, 58.9365, 2.82743, 300, 0, 0, 12600, 0, 0, 0, 0, 0, 0),
+(@CGUID+423, 53488, 36, 0, 0, 6, 0, 0, 16925, 0, -53.2951, -377.964, 54.4068, 2.82743, 300, 0, 0, 12600, 0, 0, 0, 0, 0, 0),
+(@CGUID+424, 53488, 36, 0, 0, 6, 0, 0, 16925, 0, -56.3576, -395.175, 54.7245, 2.82743, 300, 0, 0, 12600, 0, 0, 0, 0, 0, 0),
+(@CGUID+425, 53488, 36, 0, 0, 6, 0, 0, 16925, 0, -75.8715, -375.174, 54.9733, 2.82743, 300, 0, 0, 12600, 0, 0, 0, 0, 0, 0),
+(@CGUID+426, 51335, 36, 0, 0, 6, 0, 0, 11686, 0, -289.966, -479.01, 49.368, 3.11686, 300, 0, 0, 42, 0, 0, 0, 0, 0, 0),
+(@CGUID+427, 48445, 36, 0, 0, 6, 0, 0, 30262, 1, -301.9776, -505.963, 49.433, 0.148095, 7200, 0, 0, 1806, 326, 0, 0, 0, 0, 0), -- 150
+(@CGUID+428, 48445, 36, 0, 0, 6, 0, 0, 30262, 1, -276.9211, -501.2, 49.796, 3.560654, 7200, 0, 0, 1806, 326, 0, 0, 0, 0, 0), -- 151
+(@CGUID+429, 48419, 36, 0, 0, 6, 0, 0, 2438, 1, -285.7058, -568.935, 49.3223, 6.164480, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0),
+(@CGUID+430, 48419, 36, 0, 0, 6, 0, 0, 2438, 1, -295.617828, -583.863159, 48.657822, 5.868490, 7200, 0, 0, 300, 0, 0, 0, 0, 0, 0);
+
+DELETE FROM `linked_respawn` WHERE `guid` IN (79127,79128,79129,79130,79131,79133,79134,79135,79136,79137,79138,79139,79140,79142,79143,79144,79145,79146,79148,79149,79151,79152,79154,79155,79156,79157,79158,79159,79160,79161,79162,79163,79164,79165,79167,79169,79170,79171,79172,79173,79174,79175,79176,79177,79178,79179,79180,79181,79182,79183,79184,79185,79187,79188,79189,79190,79191,79192,79193,79194,79195,79196,79197,79198,79199,79200,79201,79202,79203,79204,79205,79207,79208,79209,79210,79211,79212,79213,79214,79215,79216,79217,79218,79219,79220,79221,79222,79224,79225,79226,79227,79229,79230,79231,79232,79233,79234,79235,79236,79237,79238,79239,79240,79241,79242,79243,79244,79245,79247,79248,79249,79250,79251,79252,79253,79258,79259,79260,79261,79271,79273,79277,79280,79281,79283,79284,79285,79288,79289,79290,79291,79292,79294,79296,79297,79299,79300,79301,79302,79304,79305,79306,79307,79308,79309,79310,79311,79313,79314,79315,79316,79317,79319,79320,79321,79322,79323,79324,79325,79326,79327,79328,79329,79330,79332,79334,79335,79338,79340,79341,79342,79343,79345,79346,79347,79348,79349,79350,79351,79352,79353,79354,79355,79356,79358,79360,79361,79368,79370,79373,79374,79376,79377,79378,79379,79380,79383,79384,79385,79388,79389,79390,84079); -- From old spawns
+DELETE FROM `creature_addon` WHERE `guid` IN (79260, 79223, 79333, 79344); -- From old spawns
+DELETE FROM `creature_addon` WHERE `guid` IN (@CGUID+295,@CGUID+294,@CGUID+293,@CGUID+291,@CGUID+292,@CGUID+285,@CGUID+284,@CGUID+278,@CGUID+275,@CGUID+274,@CGUID+272,@CGUID+271,@CGUID+268,@CGUID+267,@CGUID+257,@CGUID+249,@CGUID+246,@CGUID+245,@CGUID+243,@CGUID+240,@CGUID+231,@CGUID+225,@CGUID+224,@CGUID+223,@CGUID+222,@CGUID+221,@CGUID+217,@CGUID+196,@CGUID+195,@CGUID+194,@CGUID+193,@CGUID+189,@CGUID+188,@CGUID+187,@CGUID+186,@CGUID+184,@CGUID+183,@CGUID+168,@CGUID+165,@CGUID+141,@CGUID+140,@CGUID+138,@CGUID+137,@CGUID+134,@CGUID+133,@CGUID+132,@CGUID+129,@CGUID+125,@CGUID+124,@CGUID+123,@CGUID+115,@CGUID+114,@CGUID+105,@CGUID+101,@CGUID+99, @CGUID+70, @CGUID+65, @CGUID+60, @CGUID+57, @CGUID+43, @CGUID+34, @CGUID+26, @CGUID+23, @CGUID+6, @CGUID+4, @CGUID+3, @CGUID+2, @CGUID+0, @CGUID+345,@CGUID+405,@CGUID+407,@CGUID+409,@CGUID+410,@CGUID+411,@CGUID+413,@CGUID+415,@CGUID+417,@CGUID+420,@CGUID+427,@CGUID+428);
+INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
+(@CGUID+295, 0, 0, 0, 1, 333, ""), -- 45
+(@CGUID+294, 0, 0, 0, 1, 375, ""), -- 46
+(@CGUID+293, 0, 0, 0, 1, 375, ""), -- 47
+(@CGUID+291, 0, 0, 0, 1, 431, "78087"), -- 48
+(@CGUID+292, 0, 0, 0, 1, 0, "78087"), -- 49
+(@CGUID+285, 0, 0, 0, 1, 431, "78087"), -- 50
+(@CGUID+284, 0, 0, 0, 1, 431, "78087"), -- 51
+(@CGUID+278, 0, 0, 1, 1, 0, ""), -- 52
+(@CGUID+275, 0, 0, 0, 1, 69, ""), -- 53
+(@CGUID+274, (@CGUID+274)*10, 0, 0, 0, 0, ""), -- 54
+(@CGUID+272, 0, 0, 1, 1, 0, ""), -- 55
+(@CGUID+271, 0, 0, 0, 1, 333, ""), -- 56
+(@CGUID+268, 0, 0, 0, 1, 69, ""), -- 57
+(@CGUID+267, (@CGUID+267)*10, 0, 0, 0, 0, "89842"), -- 58
+(@CGUID+257, (@CGUID+257)*10, 0, 0, 0, 0, ""), -- 59
+(@CGUID+249, 0, 0, 1, 1, 0, ""), -- 60
+(@CGUID+246, 0, 0, 0, 1, 233, ""), -- 61
+(@CGUID+245, (@CGUID+245)*10, 0, 0, 0, 0, ""), -- 62
+(@CGUID+243, (@CGUID+243)*10, 0, 0, 0, 0, ""), -- 63
+(@CGUID+240, 0, 0, 0, 1, 233, ""), -- 64
+(@CGUID+231, 0, 0, 0, 1, 333, ""), -- 65
+(@CGUID+225, 0, 0, 0, 1, 333, ""), -- 66
+(@CGUID+224, 0, 0, 0, 1, 333, ""), -- 67
+(@CGUID+222, 0, 0, 0, 1, 233, ""), -- 69
+(@CGUID+221, (@CGUID+221)*10, 0, 0, 0, 0, ""), -- 70
+(@CGUID+217, (@CGUID+217)*10, 0, 0, 0, 0, ""), -- 71
+(@CGUID+196, 0, 0, 0, 1, 333, ""), -- 74
+(@CGUID+195, (@CGUID+195)*10, 0, 0, 0, 0, ""), -- 75
+(@CGUID+194, 0, 0, 0, 1, 333, ""), -- 76
+(@CGUID+193, 0, 0, 0, 1, 69, ""), -- 77
+(@CGUID+189, (@CGUID+189)*10, 0, 0, 0, 0, ""), -- 78
+(@CGUID+188, 0, 0, 0, 1, 233, ""), -- 79
+(@CGUID+187, 0, 0, 0, 1, 234, ""), -- 80
+(@CGUID+186, 0, 0, 0, 1, 233, ""), -- 81
+(@CGUID+184, 0, 0, 0, 1, 233, ""), -- 82
+(@CGUID+183, 0, 0, 0, 1, 233, ""), -- 83
+(@CGUID+168, (@CGUID+168)*10, 0, 0, 0, 0, ""), -- 86
+(@CGUID+165, 0, 0, 0, 1, 0, "92001"), -- 88
+(@CGUID+141, (@CGUID+141)*10, 0, 0, 0, 0, ""), -- 90
+(@CGUID+140, 0, 0, 0, 1, 333, ""), -- 91
+(@CGUID+138, (@CGUID+138)*10, 0, 0, 0, 0, ""), -- 92
+(@CGUID+137, 0, 0, 0, 1, 333, ""), -- 93
+(@CGUID+134, 0, 0, 1, 1, 0, ""), -- 94
+(@CGUID+133, 0, 0, 0, 1, 0, "90954"), -- 95
+(@CGUID+132, 0, 0, 0, 1, 0, "90954"), -- 96
+(@CGUID+125, 0, 0, 0, 1, 233, ""), -- 100
+(@CGUID+124, (@CGUID+124)*10, 0, 0, 0, 0, "89842"), -- 101
+(@CGUID+123, 0, 0, 0, 1, 234, ""), -- 102
+(@CGUID+115, 0, 0, 0, 1, 0, "88906 89706"), -- 104
+(@CGUID+114, 0, 0, 0, 1, 0, "78677"), -- none
+(@CGUID+105, (@CGUID+105)*10, 0, 0, 0, 0, ""), -- 106
+(@CGUID+101, (@CGUID+101)*10, 0, 0, 0, 0, ""), -- 107
+(@CGUID+99, (@CGUID+99)*10, 0, 0, 0, 0, ""), -- 108
+(@CGUID+70, (@CGUID+70)*10, 0, 0, 0, 0, ""), -- 110
+(@CGUID+65, 0, 0, 0, 1, 0, "90954"), -- 111
+(@CGUID+60, 0, 0, 0, 1, 0, "90954"), -- 112
+(@CGUID+57, 0, 0, 0, 1, 233, ""), -- 113
+(@CGUID+43, (@CGUID+43)*10, 0, 0, 0, 0, ""), -- 115
+(@CGUID+34, 0, 0, 0, 1, 0, "87239 88348"), -- 117
+(@CGUID+26, (@CGUID+26)*10, 0, 0, 0, 0, ""), -- 118
+(@CGUID+23, (@CGUID+23)*10, 0, 0, 0, 0, ""), -- 119
+(@CGUID+6, (@CGUID+6)*10, 0, 0, 0, 0, ""), -- 123
+(@CGUID+4, (@CGUID+4)*10, 0, 0, 0, 0, ""), -- 124
+(@CGUID+3, (@CGUID+3)*10, 0, 0, 0, 0, ""), -- 125
+(@CGUID+2, (@CGUID+2)*10, 0, 0, 0, 0, ""), -- 126
+(@CGUID+0, (@CGUID+0)*10, 0, 0, 0, 0, ""), -- 127
+(@CGUID+345, (@CGUID+345)*10, 0, 0, 0, 0, ""), -- 128
+(@CGUID+405, 0, 0, 8, 1, 0, ""), -- 140
+(@CGUID+407, (@CGUID+407)*10, 0, 0, 0, 0, ""), -- 141
+(@CGUID+409, (@CGUID+409)*10, 0, 0, 0, 0, ""), -- 142
+(@CGUID+410, (@CGUID+410)*10, 0, 0, 0, 0, ""), -- 143
+(@CGUID+411, (@CGUID+411)*10, 0, 0, 0, 0, ""), -- 144
+(@CGUID+413, (@CGUID+413)*10, 0, 0, 0, 0, ""), -- 145
+(@CGUID+415, 0, 0, 8, 1, 0, ""), -- 146
+(@CGUID+417, 0, 0, 0, 1, 0, ""), -- 147
+(@CGUID+420, 0, 0, 8, 1, 0, ""), -- 148
+(@CGUID+427, 0, 0, 0, 1, 455, ""), -- 150
+(@CGUID+428, 0, 0, 0, 1, 455, ""); -- 151
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN (48823, 48826, 48827, 48824, 48440, 48810, 48940, 4075, 48276, 46889, 46902, 46903, 46890, 48006, 46906, 48672, 48302, 48298, 48297, 48300, 48295, 48296, 47739, 47242, 45979, 48502, 48505, 48417, 48439, 48280, 47314, 48447, 48266, 48522, 48451, 48521, 48446, 48343, 48342, 48341, 48340, 48338, 48279, 48440, 48445, 48442, 48278, 48441, 48284, 47282, 47677, 47284, 48419, 48421, 48450, 48229, 47162, 48418, 47404, 47403, 48351, 48230, 48262, 48420, 47626, 47296, 47297, 43778, 51624, 49208, 49552, 48974, 48975, 48976, 49039, 49041, 49040, 49042, 49139, 49138, 49136, 49137, 51462, 49229, 48299, 48294, 48293, 49564, 49429, 49457, 49454, 49670, 49671, 49674, 49494, 49495, 49681, 49520, 49521, 49682, 49534, 49532, 49535, 49539, 49536, 49541, 49550, 46614, 46613, 50595, 491, 46612, 657, 1732, 3947, 647, 645, 646, 636, 42700, 42697, 42698, 42371, 598, 3586, 53488, 51335, 639, 48834, 48811, 48420);
+INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
+(4075, 0, 0, 0, 1, 0, ""),
+(48276, 0, 0, 0, 1, 0, ""),
+(46889, 0, 0, 0, 1, 0, ""),
+(46902, 0, 0, 0, 1, 0, ""),
+(46903, 0, 0, 0, 1, 0, ""),
+(46890, 0, 0, 0, 1, 433, "86603"),
+(48006, 0, 0, 0, 1, 0, ""),
+(46906, 0, 0, 0, 1, 0, ""),
+(48672, 0, 0, 0, 1, 0, ""),
+(48302, 0, 0, 0, 1, 0, ""),
+(48298, 0, 0, 0, 1, 0, ""),
+(48297, 0, 0, 0, 1, 0, ""),
+(48300, 0, 0, 0, 1, 0, ""),
+(48295, 0, 0, 0, 1, 0, ""),
+(48296, 0, 0, 0, 1, 0, ""),
+(47739, 0, 0, 0, 1, 0, "89339 88873"),
+(47242, 0, 0, 0, 1, 0, ""),
+(45979, 0, 0, 0, 1, 0, ""),
+(48502, 0, 0, 0, 1, 333, ""),
+(48505, 0, 0, 0, 1, 0, "90955"),
+(48417, 0, 0, 0, 1, 0, "90389"),
+(48439, 0, 0, 0, 1, 0, "70628"),
+(48280, 0, 0, 0, 1, 0, "70628"),
+(47314, 0, 0, 0, 1, 0, ""),
+(48447, 0, 0, 50331648, 1, 0, ""),
+(48266, 0, 0, 0, 1, 0, ""),
+(48522, 0, 0, 0, 1, 0, ""),
+(48451, 0, 0, 0, 1, 0, ""),
+(48521, 0, 0, 0, 1, 0, ""),
+(48446, 0, 0, 0, 1, 0, "90101"),
+(48343, 0, 0, 0, 1, 0, ""),
+(48342, 0, 0, 0, 1, 0, ""),
+(48341, 0, 0, 0, 1, 0, ""),
+(48340, 0, 0, 0, 1, 0, ""),
+(48338, 0, 0, 0, 1, 0, "89842"),
+(48279, 0, 0, 0, 1, 0, ""),
+(48440, 0, 0, 0, 1, 233, ""),
+(48823, 0, 0, 0, 1, 233, ""),
+(48826, 0, 0, 0, 1, 233, ""),
+(48824, 0, 0, 0, 1, 233, ""),
+(48827, 0, 0, 0, 1, 233, ""),
+(48445, 0, 0, 0, 1, 0, ""),
+(48442, 0, 0, 0, 1, 233, ""),
+(48278, 0, 0, 0, 1, 233, ""),
+(48441, 0, 0, 0, 1, 233, ""),
+(48284, 0, 0, 0, 1, 0, ""),
+(47282, 0, 0, 0, 1, 0, ""),
+(47677, 0, 0, 0, 1, 0, ""),
+(47284, 0, 0, 0, 1, 0, ""),
+(48419, 0, 0, 0, 1, 233, ""),
+(48811, 0, 0, 0, 1, 233, ""),
+(48421, 0, 0, 0, 1, 0, ""),
+(48450, 0, 0, 50331648, 1, 0, ""),
+(48229, 0, 0, 0, 1, 233, ""),
+(48834, 0, 0, 0, 1, 233, ""),
+(47162, 0, 0, 0, 1, 0, ""),
+(48418, 0, 0, 0, 1, 0, ""),
+(47404, 0, 0, 0, 1, 0, ""),
+(47403, 0, 0, 0, 1, 0, ""),
+(48351, 0, 0, 0, 1, 0, "89842"),
+(48230, 0, 0, 0, 1, 0, ""),
+(48262, 0, 0, 0, 1, 0, ""),
+(48420, 0, 0, 0, 1, 233, ""),
+(48810, 0, 0, 0, 1, 233, ""),
+(47626, 0, 0, 0, 1, 0, "88736"),
+(47296, 0, 0, 0, 1, 0, "90546"),
+(48940, 0, 0, 0, 1, 0, "90546"),
+(47297, 0, 0, 0, 1, 0, ""),
+(43778, 0, 0, 0, 1, 0, "87239 24263"),
+(51624, 0, 0, 0, 1, 0, ""),
+(49208, 0, 0, 0, 1, 0, "87239 91731"),
+(49552, 0, 0, 0, 1, 0, ""),
+(48974, 0, 0, 50331648, 1, 0, ""),
+(48975, 0, 0, 50331648, 1, 0, ""),
+(48976, 0, 0, 50331648, 1, 0, ""),
+(49039, 0, 0, 50331648, 1, 0, ""),
+(49041, 0, 0, 50331648, 1, 0, ""),
+(49040, 0, 0, 50331648, 1, 0, ""),
+(49042, 0, 0, 50331648, 1, 0, ""),
+(49139, 0, 0, 0, 1, 0, ""),
+(49138, 0, 0, 0, 1, 0, ""),
+(49136, 0, 0, 0, 1, 0, ""),
+(49137, 0, 0, 0, 1, 0, ""),
+(51462, 0, 0, 0, 1, 0, ""),
+(49229, 0, 0, 33554432, 1, 0, ""),
+(48299, 0, 0, 0, 1, 0, ""),
+(48294, 0, 0, 0, 1, 0, ""),
+(48293, 0, 0, 0, 1, 0, ""),
+(49564, 0, 0, 50331648, 1, 0, "92376"),
+(49429, 0, 0, 0, 1, 0, "89279"),
+(49457, 0, 0, 0, 1, 0, "95514 92399"),
+(49454, 0, 0, 0, 1, 0, ""),
+(49670, 0, 0, 0, 1, 431, "48143 69676"),
+(49671, 0, 0, 0, 1, 0, "48143 69676"),
+(49674, 0, 0, 0, 1, 431, "48143 69676"),
+(49494, 0, 0, 0, 1, 0, ""),
+(49495, 0, 0, 0, 1, 0, ""),
+(49681, 0, 0, 0, 1, 0, "48143 69676 88348"),
+(49520, 0, 0, 50331648, 1, 0, "95519"),
+(49521, 0, 0, 50331648, 1, 0, "92277"),
+(49682, 0, 0, 0, 1, 431, "48143 69676"),
+(49534, 0, 0, 0, 1, 431, ""),
+(49532, 0, 0, 0, 1, 0, ""),
+(49535, 0, 0, 0, 1, 431, ""),
+(49539, 0, 0, 0, 1, 468, ""),
+(49536, 0, 0, 0, 1, 0, "92608"),
+(49541, 0, 0, 0, 1, 333, ""),
+(49550, 0, 0, 0, 1, 0, "95527"),
+(46614, 0, 0, 0, 1, 0, ""),
+(46613, 0, 0, 0, 1, 0, ""),
+(50595, 0, 0, 0, 1, 333, ""),
+(491, 0, 0, 0, 1, 0, ""),
+(46612, 0, 0, 0, 1, 0, ""),
+(657, 0, 0, 0, 1, 0, "29266"),
+(1732, 0, 0, 0, 1, 0, "29266"),
+(3947, 0, 0, 0, 1, 0, "29266"),
+(647, 0, 0, 0, 1, 0, "29266"),
+(645, 0, 0, 0, 1, 0, "29266"),
+(646, 0, 0, 0, 1, 0, "29266 6433"),
+(636, 0, 0, 0, 1, 0, "29266"),
+(42700, 0, 0, 0, 1, 0, ""),
+(42697, 0, 0, 0, 1, 0, ""),
+(42698, 0, 0, 0, 1, 0, ""),
+(42371, 0, 0, 0, 1, 0, ""),
+(598, 0, 0, 0, 4097, 233, ""),
+(3586, 0, 0, 0, 4097, 233, ""),
+(53488, 0, 0, 0, 1, 0, "99201"),
+(51335, 0, 0, 0, 1, 0, ""),
+(639, 0, 0, 0, 4097, 0, "");
+
+DELETE FROM `waypoint_data` WHERE `id` IN ((@CGUID+274)*10,(@CGUID+267)*10,(@CGUID+257)*10,(@CGUID+245)*10,(@CGUID+243)*10,(@CGUID+221)*10,(@CGUID+217)*10,(@CGUID+195)*10,(@CGUID+189)*10,(@CGUID+168)*10,(@CGUID+141)*10,(@CGUID+138)*10,(@CGUID+124)*10,(@CGUID+105)*10,(@CGUID+101)*10,(@CGUID+99)*10,(@CGUID+70)*10,(@CGUID+43)*10,(@CGUID+26)*10,(@CGUID+23)*10,(@CGUID+6)*10,(@CGUID+4)*10,(@CGUID+3)*10,(@CGUID+2)*10,(@CGUID+0)*10,(@CGUID+345)*10,(@CGUID+407)*10,(@CGUID+409)*10,(@CGUID+410)*10,(@CGUID+411)*10,(@CGUID+413)*10);
+INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
+((@CGUID+274)*10, 1, -137.866, -769.075, 3.17489, 0, 0, 0, 0, 100, 0), -- 54
+((@CGUID+274)*10, 2, -138.689, -769.643, 3.17489, 0, 0, 0, 0, 100, 0), -- 54
+((@CGUID+274)*10, 3, -138.35, -767.67, 3.92489, 0, 0, 0, 0, 100, 0), -- 54
+((@CGUID+274)*10, 4, -137.44, -762.42, 4.58898, 0, 0, 0, 0, 100, 0), -- 54
+((@CGUID+274)*10, 5, -137.44, -762.42, 4.58898, 0, 0, 0, 0, 100, 0), -- 54
+((@CGUID+267)*10, 1, -187.7809, -496.4649, 53.43021,0, 0, 0, 0, 100, 0), -- 58
+((@CGUID+267)*10, 2, -188.2805, -497.7679, 53.42399,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 3, -188.5305, -498.5179, 53.42399,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 4, -191.5305, -500.5179, 53.17399,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 5, -193.2846, -501.5853, 53.10095,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 6, -195.5346, -503.0853, 53.60095,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 7, -199.0346, -505.3353, 53.35095,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 8, -199.8429, -505.8283, 53.07471,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 9, -202.8429, -505.5783, 52.82471,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 10, -204.5929, -505.5783, 52.57471,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 11, -205.932, -505.509, 51.93829,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 12, -204.656, -505.542, 52.485,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 13, -202.906, -505.792, 52.735,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 14, -199.6233, -505.7488, 53.11173,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 15, -195.3733, -502.9988, 53.61173,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 16, -194.9211, -502.6909, 53.22779,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 17, -192.9216, -501.3915, 53.23337,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 18, -191.6716, -500.6415, 52.98337,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 19, -188.422, -498.592, 53.23896,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 20, -188.0654, -498.3488, 53.28645,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 21, -187.0654, -493.3488, 53.78645,0, 0, 0, 0, 100, 0),
+((@CGUID+267)*10, 22, -186.297, -490.74, 53.58403,0, 0, 0, 0, 100, 0),
+((@CGUID+257)*10, 1, -75.7076, -725.39, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+257)*10, 2, -74.2431, -728.925, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+257)*10, 3, -75.7076, -732.461, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+257)*10, 4, -79.2431, -733.925, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+257)*10, 5, -82.7786, -732.461, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+257)*10, 6, -84.2431, -728.925, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+257)*10, 7, -82.7786, -725.39, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+257)*10, 8, -79.2431, -723.925, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+257)*10, 9, -75.7076, -725.39, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+257)*10, 10, -74.2431, -728.925, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+257)*10, 11, -75.7076, -732.461, 19.0409, 0, 0, 0, 0, 100, 0), -- 59
+((@CGUID+245)*10, 1, -272.0497, -480.895, 48.929, 0, 0, 0, 0, 100, 0), -- 62
+((@CGUID+245)*10, 2, -280.0988, -490.497, 49.175, 0, 0, 0, 0, 100, 0), -- 62
+((@CGUID+245)*10, 3, -290.1299, -504.558, 50.037, 0, 0, 0, 0, 100, 0), -- 62
+((@CGUID+245)*10, 4, -289.9256, -526.885, 49.706, 0, 0, 0, 0, 100, 0), -- 62
+((@CGUID+245)*10, 5, -289.4137, -504.421, 50.043, 0, 0, 0, 0, 100, 0), -- 62
+((@CGUID+245)*10, 6, -281.7569, -494.665, 49.279, 0, 0, 0, 0, 100, 0), -- 62
+((@CGUID+243)*10, 1, -194.123, -507.48, 53.1961, 0, 0, 0, 0, 100, 0), -- 63
+((@CGUID+243)*10, 2, -193.194, -507.111, 53.1961, 0, 0, 0, 0, 100, 0), -- 63
+((@CGUID+243)*10, 3, -191.235, -506.772, 53.2412, 0, 0, 0, 0, 100, 0), -- 63
+((@CGUID+243)*10, 4, -191.235, -506.772, 53.2412, 0, 0, 0, 0, 100, 0), -- 63
+((@CGUID+243)*10, 5, 1773.45, 256.141, 59.8356, 0, 0, 0, 0, 100, 0), -- 63
+((@CGUID+243)*10, 6, 1773.45, 256.141, 59.8356, 0, 0, 0, 0, 100, 0), -- 63
+((@CGUID+221)*10, 1, -181.684, -447.482, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+221)*10, 2, -180.219, -451.017, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+221)*10, 3, -181.684, -454.552, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+221)*10, 4, -185.219, -456.017, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+221)*10, 5, -188.755, -454.552, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+221)*10, 6, -190.219, -451.017, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+221)*10, 7, -188.755, -447.482, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+221)*10, 8, -185.219, -446.017, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+221)*10, 9, -181.684, -447.482, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+221)*10, 10, -180.219, -451.017, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+221)*10, 11, -181.684, -454.552, 65.2876, 0, 0, 0, 0, 100, 0), -- 70
+((@CGUID+217)*10, 1, -199.759, -459.365, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+217)*10, 2, -197.703, -456.137, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+217)*10, 3, -198.531, -452.401, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+217)*10, 4, -201.759, -450.345, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+217)*10, 5, -205.495, -451.173, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+217)*10, 6, -207.551, -454.401, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+217)*10, 7, -206.723, -458.137, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+217)*10, 8, -203.495, -460.193, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+217)*10, 9, -199.759, -459.365, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+217)*10, 10, -197.703, -456.137, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+217)*10, 11, -198.531, -452.401, 65.2096, 0, 0, 0, 0, 100, 0), -- 71
+((@CGUID+195)*10, 1, -57.1121, -727.51, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+195)*10, 2, -55.6476, -731.045, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+195)*10, 3, -57.1121, -734.581, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+195)*10, 4, -60.6476, -736.045, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+195)*10, 5, -64.1831, -734.581, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+195)*10, 6, -65.6476, -731.045, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+195)*10, 7, -64.1831, -727.51, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+195)*10, 8, -60.6476, -726.045, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+195)*10, 9, -57.1121, -727.51, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+195)*10, 10, -55.6476, -731.045, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+195)*10, 11, -57.1121, -734.581, 16.8742, 0, 0, 0, 0, 100, 0), -- 75
+((@CGUID+189)*10, 1, -92.4122, -704.067, 9.93114, 0, 0, 0, 0, 100, 0), -- 78
+((@CGUID+189)*10, 2, -92.48, -705.064, 9.93114, 0, 0, 0, 0, 100, 0), -- 78
+((@CGUID+189)*10, 3, -88.6301, -712.426, 9.82163, 0, 0, 0, 0, 100, 0), -- 78
+((@CGUID+189)*10, 4, -88.0645, -721.426, 9.63911, 0, 0, 0, 0, 100, 0), -- 78
+((@CGUID+189)*10, 5, -84.1405, -725.201, 10.0151, 0, 0, 0, 0, 100, 0), -- 78
+((@CGUID+189)*10, 6, -82.2617, -727.009, 9.9926, 0, 0, 0, 0, 100, 0), -- 78
+((@CGUID+189)*10, 7, -82.2617, -727.009, 9.9926, 0, 0, 0, 0, 100, 0), -- 78
+((@CGUID+168)*10, 1, -199.365, -449.842, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+168)*10, 2, -197.901, -446.307, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+168)*10, 3, -199.365, -442.772, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+168)*10, 4, -202.901, -441.307, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+168)*10, 5, -206.436, -442.772, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+168)*10, 6, -207.901, -446.307, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+168)*10, 7, -206.436, -449.842, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+168)*10, 8, -202.901, -451.307, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+168)*10, 9, -199.365, -449.842, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+168)*10, 10, -197.901, -446.307, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+168)*10, 11, -199.365, -442.772, 59.5037, 0, 0, 0, 0, 100, 0), -- 86
+((@CGUID+141)*10, 1, -35.9697, -722.096, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+141)*10, 2, -34.5052, -725.632, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+141)*10, 3, -35.9697, -729.167, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+141)*10, 4, -39.5052, -730.632, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+141)*10, 5, -43.0407, -729.167, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+141)*10, 6, -44.5052, -725.632, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+141)*10, 7, -43.0407, -722.096, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+141)*10, 8, -39.5052, -720.632, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+141)*10, 9, -35.9697, -722.096, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+141)*10, 10, -34.5052, -725.632, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+141)*10, 11, -35.9697, -729.167, 20.8815, 0, 0, 0, 0, 100, 0), -- 90
+((@CGUID+138)*10, 1, -43.6738, -791.992, 39.3433, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 2, -43.191, -791.116, 39.3433, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 3, -44.5938, -793.762, 39.2852, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 4, -47.5833, -792.149, 38.9391, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 5, -50.9722, -791.601, 38.586, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 6, -54.8368, -792.896, 38.6745, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 7, -57.8993, -792.816, 38.9231, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 8, -61.8125, -792.222, 39.2473, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 9, -64.4115, -793.281, 39.3821, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 10, -68.0642, -793.012, 39.5645, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 11, -73.6111, -793.453, 38.927, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 12, -77.1823, -792.45, 38.6679, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 13, -77.6406, -787.875, 38.8808, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 14, -77.7309, -785.984, 38.9725, 0, 0, 0, 0, 100, 0), -- 92
+((@CGUID+138)*10, 15, -77.7309, -785.984, 38.9725, 0, 0, 0, 0, 100, 0), --
+((@CGUID+124)*10, 1, -214.7209, -500.1381, 50.13339, 0, 0, 0, 0, 100, 0), -- 101
+((@CGUID+124)*10, 2, -215.1694, -499.6891, 49.94113, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 3, -216.1694, -498.9391, 49.69113, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 4, -217.4194, -497.6891, 49.44113, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 5, -219.9194, -495.1891, 48.69113, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 6, -220.1903, -495.1266, 48.66558, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 7, -220.6903, -494.3766, 48.41558, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 8, -221.4403, -493.6266, 48.41558, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 9, -223.776, -491.035, 48.09993, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 10, -223.7307, -490.8906, 48.22522, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 11, -226.716, -488.9385, 48.327, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 12, -227.287, -488.1827, 48.5573, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 13, -230.1799, -485.971, 48.66693, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 14, -231.419, -484.6175, 48.8757, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 15, -232.419, -484.1175, 49.1257, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 16, -233.8588, -483.2879, 49.01107, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 17, -234.5529, -482.789, 49.25063, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 18, -236.8029, -482.539, 49.25063, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 19, -238.2535, -482.4292, 49.10532, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 20, -239.6242, -482.1886, 49.21041, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 21, -241.3742, -482.6886, 48.96041, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 22, -241.8715, -482.619, 48.90281, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 23, -240.3715, -482.369, 49.15281, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 24, -240.0698, -482.3726, 48.99197, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 25, -239.5698, -482.3726, 49.24197, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 26, -237.0698, -482.6226, 49.24197, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 27, -236.4474, -482.5974, 49.16932, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 28, -234.4027, -482.7622, 49.22845, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 29, -232.4027, -484.0122, 48.97845, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 30, -232.3407, -484.2829, 48.9041, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 31, -231.0739, -484.8999, 48.88837, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 32, -228.8199, -487.1763, 48.52761, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 33, -227.0479, -488.6057, 48.56377, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 34, -225.2354, -489.9943, 48.21265, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 35, -223.4267, -491.1171, 48.23076, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 36, -221.9267, -492.8671, 48.23076, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 37, -221.1767, -493.8671, 48.23076, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 38, -221.9789, -493.1433, 47.84938, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 39, -220.8005, -494.1376, 48.44578, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 40, -220.3005, -494.6376, 48.69578, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 41, -217.3005, -497.6376, 49.44578, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 42, -216.5505, -498.3876, 49.69578, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 43, -216.799, -498.4706, 49.40113, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 44, -216.3445, -498.8057, 49.84602, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 45, -215.8445, -499.0557, 49.84602, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 46, -214.8445, -499.8057, 50.34602, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 47, -213.3445, -500.8057, 51.34602, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 48, -210.8899, -502.6407, 51.29091, 0, 0, 0, 0, 100, 0),
+((@CGUID+124)*10, 49, -213.256, -500.8863, 51.41654, 0, 0, 0, 0, 100, 0),
+((@CGUID+105)*10, 1, -178.842, -427.367, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+105)*10, 2, -177.378, -430.903, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+105)*10, 3, -178.842, -434.439, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+105)*10, 4, -182.378, -435.903, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+105)*10, 5, -185.913, -434.439, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+105)*10, 6, -187.378, -430.903, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+105)*10, 7, -185.913, -427.367, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+105)*10, 8, -182.378, -425.903, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+105)*10, 9, -178.842, -427.367, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+105)*10, 10, -177.378, -430.903, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+105)*10, 11, -178.842, -434.439, 63.6494, 0, 0, 0, 0, 100, 0), -- 106
+((@CGUID+101)*10, 1, -200.577, -437.648, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+101)*10, 2, -199.113, -434.113, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+101)*10, 3, -200.577, -430.578, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+101)*10, 4, -204.113, -429.113, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+101)*10, 5, -207.648, -430.578, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+101)*10, 6, -209.113, -434.113, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+101)*10, 7, -207.648, -437.648, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+101)*10, 8, -204.113, -439.113, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+101)*10, 9, -200.577, -437.648, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+101)*10, 10, -199.113, -434.113, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+101)*10, 11, -200.577, -430.578, 65.1862, 0, 0, 0, 0, 100, 0), -- 107
+((@CGUID+99)*10, 1, -206.092, -446.164, 54.201, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+99)*10, 2, -204.628, -442.628, 54.201, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+99)*10, 3, -206.092, -439.092, 54.201, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+99)*10, 4, -209.628, -437.628, 54.201, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+99)*10, 5, -213.163, -439.092, 54.8909, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+99)*10, 6, -214.628, -442.628, 55.0118, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+99)*10, 7, -213.163, -446.164, 65.3748, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+99)*10, 8, -209.628, -447.628, 65.3748, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+99)*10, 9, -206.092, -446.164, 54.201, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+99)*10, 10, -204.628, -442.628, 54.201, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+99)*10, 11, -206.092, -439.092, 54.201, 0, 0, 0, 0, 100, 0), -- 108
+((@CGUID+70)*10, 1, -50.431, -782.816, 18.2862, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+70)*10, 2, -50.2274, -781.837, 18.2862, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+70)*10, 3, -50.8854, -783.806, 18.2555, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+70)*10, 4, -55.3906, -782.509, 18.0852, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+70)*10, 5, -61.7483, -781.95, 17.8768, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+70)*10, 6, -69.3385, -782.148, 17.6475, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+70)*10, 7, -75.4826, -782.425, 17.4824, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+70)*10, 8, -79.2813, -783.182, 17.3983, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+70)*10, 9, -81.3247, -782.252, 17.3553, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+70)*10, 10, -81.6823, -780.378, 17.3339, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+70)*10, 11, -81.6823, -780.378, 17.3339, 0, 0, 0, 0, 100, 0), -- 110
+((@CGUID+43)*10, 1, -65.8309, -830.752, 41.0723, 0, 0, 0, 0, 100, 0), -- 115
+((@CGUID+43)*10, 2, -65.9844, -831.74, 41.0723, 0, 0, 0, 0, 100, 0), -- 115
+((@CGUID+43)*10, 3, -59.0103, -814.643, 41.6644, 0, 0, 0, 0, 100, 0), -- 115
+((@CGUID+43)*10, 4, -59.0103, -814.643, 41.6644, 0, 0, 0, 0, 100, 0), -- 115
+((@CGUID+26)*10, 1, -181.54, -443.737, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+26)*10, 2, -180.075, -440.201, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+26)*10, 3, -181.54, -436.665, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+26)*10, 4, -185.075, -435.201, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+26)*10, 5, -188.611, -436.665, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+26)*10, 6, -190.075, -440.201, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+26)*10, 7, -188.611, -443.737, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+26)*10, 8, -185.075, -445.201, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+26)*10, 9, -181.54, -443.737, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+26)*10, 10, -180.075, -440.201, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+26)*10, 11, -181.54, -436.665, 65.2601, 0, 0, 0, 0, 100, 0), -- 118
+((@CGUID+23)*10, 1, -175.587, -439.831, 55.0878, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+23)*10, 2, -174.122, -436.295, 55.0878, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+23)*10, 3, -175.587, -432.759, 55.9283, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+23)*10, 4, -179.122, -431.295, 55.0878, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+23)*10, 5, -182.658, -432.759, 55.0878, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+23)*10, 6, -184.122, -436.295, 55.0878, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+23)*10, 7, -182.658, -439.831, 55.0878, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+23)*10, 8, -179.122, -441.295, 55.9352, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+23)*10, 9, -175.587, -439.831, 55.0878, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+23)*10, 10, -174.122, -436.295, 55.0878, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+23)*10, 11, -175.587, -432.759, 55.9283, 0, 0, 0, 0, 100, 0), -- 119
+((@CGUID+6)*10, 1, -300.071, -600.779, 47.9177, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 2, -301.065, -600.886, 47.9177, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 3, -305.272, -601.336, 47.7347, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 4, -306.934, -601.514, 47.9583, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 5, -308.793, -599.814, 48.2026, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 6, -308.109, -598.802, 48.2317, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 7, -305.918, -595.562, 48.1384, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 8, -304.657, -593.697, 47.78, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 9, -302.134, -589.966, 47.7125, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 10, -301.037, -588.345, 47.7818, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 11, -299.014, -585.353, 47.4188, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 12, -297.491, -583.1, 47.7223, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 13, -296.123, -581.078, 48.5619, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 14, -294.199, -578.232, 48.5322, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+6)*10, 15, -294.199, -578.232, 48.5322, 0, 0, 0, 0, 100, 0), -- 123
+((@CGUID+4)*10, 1, -110.507, -649.064, 7.98265, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+4)*10, 2, -111.227, -648.37, 7.98265, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+4)*10, 3, -111.745, -647.871, 8.25029, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+4)*10, 4, -114.81, -644.916, 10.022, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+4)*10, 5, -117.645, -643.609, 10.8814, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+4)*10, 6, -118.677, -643.133, 10.9956, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+4)*10, 7, -122.076, -641.566, 12.2503, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+4)*10, 8, -123.266, -641.018, 12.8583, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+4)*10, 9, -125.149, -640.15, 12.971, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+4)*10, 10, -133.624, -636.243, 14.3046, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+4)*10, 11, -133.624, -636.243, 14.3046, 0, 0, 0, 0, 100, 0), -- 124
+((@CGUID+3)*10, 1, -73.1759, -409.172, 54.825, 0, 0, 0, 0, 100, 0), -- 125
+((@CGUID+3)*10, 2, -72.4021, -408.539, 54.825, 0, 0, 0, 0, 100, 0), -- 125
+((@CGUID+3)*10, 3, -71.7676, -408.019, 54.8069, 0, 0, 0, 0, 100, 0), -- 125
+((@CGUID+3)*10, 4, -69.8922, -406.484, 55.1231, 0, 0, 0, 0, 100, 0), -- 125
+((@CGUID+3)*10, 5, -67.1771, -404.261, 54.4633, 0, 0, 0, 0, 100, 0), -- 125
+((@CGUID+3)*10, 6, -64.1463, -403.267, 54.7104, 0, 0, 0, 0, 100, 0), -- 125
+((@CGUID+3)*10, 7, -62.4753, -402.719, 54.5596, 0, 0, 0, 0, 100, 0), -- 125
+((@CGUID+3)*10, 8, -61.9801, -402.557, 54.3487, 0, 0, 0, 0, 100, 0), -- 125
+((@CGUID+3)*10, 9, -61.9801, -402.557, 54.3487, 0, 0, 0, 0, 100, 0), -- 125
+((@CGUID+2)*10, 1, -115.984, -386.398, 57.0739, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+2)*10, 2, -114.985, -386.363, 57.0739, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+2)*10, 3, -112.068, -386.262, 57.2083, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+2)*10, 4, -110.421, -386.205, 57.0019, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+2)*10, 5, -110.026, -387.378, 56.8644, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+2)*10, 6, -109.616, -388.599, 56.885, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+2)*10, 7, -109.284, -389.587, 56.8955, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+2)*10, 8, -108.558, -396.586, 57.6848, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+2)*10, 9, -108.393, -398.175, 59.5312, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+2)*10, 10, -108.311, -398.969, 59.6777, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+2)*10, 11, -108.311, -398.969, 59.6777, 0, 0, 0, 0, 100, 0), -- 126
+((@CGUID+0)*10, 1, -105.702, -787.578, 16.9174, 0, 0, 0, 0, 100, 0), -- 127
+((@CGUID+0)*10, 2, -104.784, -787.18, 16.9174, 0, 0, 0, 0, 100, 0), -- 127
+((@CGUID+0)*10, 3, -103.299, -786.536, 16.9366, 0, 0, 0, 0, 100, 0), -- 127
+((@CGUID+0)*10, 4, -102.481, -787.715, 16.9646, 0, 0, 0, 0, 100, 0), -- 127
+((@CGUID+0)*10, 5, -100.289, -786.716, 16.9925, 0, 0, 0, 0, 100, 0), -- 127
+((@CGUID+0)*10, 6, -91.8951, -782.022, 17.0894, 0, 0, 0, 0, 100, 0), -- 127
+((@CGUID+0)*10, 7, -91.8951, -782.022, 17.0894, 0, 0, 0, 0, 100, 0), -- 127
+((@CGUID+345)*10, 1, -193.104, -442.987, 53.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 2, -193.278, -442.002, 53.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 3, -193.451, -441.017, 55.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 4, -192.704, -441.183, 55.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 5, -192.293, -441.828, 55.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 6, -192.459, -442.575, 55.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 7, -193.104, -442.987, 55.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 8, -193.851, -442.821, 55.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 9, -194.263, -442.175, 55.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 10, -194.097, -441.428, 55.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 11, -193.451, -441.017, 55.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+345)*10, 12, -192.704, -441.183, 55.7092, 0, 0, 0, 0, 100, 0), -- 128
+((@CGUID+407)*10, 1, -67.467, -399.774, 54.4236, 0, 0, 0, 0, 100, 0), -- 141
+((@CGUID+407)*10, 2, -66.467, -399.774, 54.4236, 0, 0, 0, 0, 100, 0), -- 141
+((@CGUID+407)*10, 3, -66.9735, -398.407, 54.6933, 0, 0, 0, 0, 100, 0), -- 141
+((@CGUID+407)*10, 4, -66.9735, -398.407, 54.6933, 0, 0, 0, 0, 100, 0), -- 141
+((@CGUID+409)*10, 1, -47.3871, -375.625, 55.4237, 0, 0, 0, 0, 100, 0), -- 142
+((@CGUID+409)*10, 2, -46.3871, -375.625, 55.4237, 0, 0, 0, 0, 100, 0), -- 142
+((@CGUID+409)*10, 3, -46.7736, -373.756, 55.369, 0, 0, 0, 0, 100, 0), -- 142
+((@CGUID+409)*10, 4, -46.7736, -373.756, 55.369, 0, 0, 0, 0, 100, 0), -- 142
+((@CGUID+410)*10, 1, -57.1597, -381.604, 54.2186, 0, 0, 0, 0, 100, 0), -- 143
+((@CGUID+410)*10, 2, -56.1597, -381.604, 54.2186, 0, 0, 0, 0, 100, 0), -- 143
+((@CGUID+410)*10, 3, -55.7375, -381.053, 54.1608, 0, 0, 0, 0, 100, 0), -- 143
+((@CGUID+410)*10, 4, -55.7375, -381.053, 54.1608, 0, 0, 0, 0, 100, 0), -- 143
+((@CGUID+411)*10, 1, -19.7778, -375.767, 60.8425, 0, 0, 0, 0, 100, 0), -- 144
+((@CGUID+411)*10, 2, -18.7778, -375.767, 60.8425, 0, 0, 0, 0, 100, 0), -- 144
+((@CGUID+411)*10, 3, -17.229, -376.25, 60.7404, 0, 0, 0, 0, 100, 0), -- 144
+((@CGUID+411)*10, 4, -17.229, -376.25, 60.7404, 0, 0, 0, 0, 100, 0), -- 144
+((@CGUID+413)*10, 1, -48.2049, -391.17, 55.7854, 0, 0, 0, 0, 100, 0), -- 145
+((@CGUID+413)*10, 2, -47.2049, -391.17, 55.7854, 0, 0, 0, 0, 100, 0), -- 145
+((@CGUID+413)*10, 3, -46.0251, -388.369, 55.8612, 0, 0, 0, 0, 100, 0), -- 145
+((@CGUID+413)*10, 4, -46.0251, -388.369, 55.8612, 0, 0, 0, 0, 100, 0); -- 145
+
+DELETE FROM `vehicle_template_accessory` WHERE `entry` IN (48338, 48351, 47297, 48939, 48820, 48821, 49520);
+INSERT INTO `vehicle_template_accessory` (`entry`,`accessory_entry`,`seat_id`,`minion`,`description`,`summontype`,`summontimer`) VALUES
+(48338,48340,0,0,'Mine Bunny',8,0),
+(48338,48341,1,0,'Mine Bunny',8,0),
+(48338,48341,2,0,'Mine Bunny',8,0),
+(48338,48342,3,0,'Mine Bunny',8,0),
+(48338,48343,4,0,'Mine Bunny',8,0),
+(48351,48340,0,0,'Mine Bunny',8,0),
+(48351,48341,1,0,'Mine Bunny',8,0),
+(48351,48341,2,0,'Mine Bunny',8,0),
+(48351,48342,3,0,'Mine Bunny',8,0),
+(48351,48343,4,0,'Mine Bunny',8,0),
+(48820,48340,0,0,'Mine Bunny',8,0),
+(48820,48341,1,0,'Mine Bunny',8,0),
+(48820,48341,2,0,'Mine Bunny',8,0),
+(48820,48342,3,0,'Mine Bunny',8,0),
+(48820,48343,4,0,'Mine Bunny',8,0),
+(48821,48340,0,0,'Mine Bunny',8,0),
+(48821,48341,1,0,'Mine Bunny',8,0),
+(48821,48341,2,0,'Mine Bunny',8,0),
+(48821,48342,3,0,'Mine Bunny',8,0),
+(48821,48343,4,0,'Mine Bunny',8,0),
+(47297,47296,0,0,'Lumbering Oaf_Normal',8,0),
+(48939,47296,0,0,'Lumbering Oaf_Heroic',8,0),
+(49520,49521,0,0,'Vanessa Lightning Platter',8,0),
+(49520,49521,1,0,'Vanessa Lightning Platter',8,0),
+(49520,49521,2,0,'Vanessa Lightning Platter',8,0),
+(49520,49521,3,0,'Vanessa Lightning Platter',8,0),
+(49520,49521,4,0,'Vanessa Lightning Platter',8,0),
+(49520,49521,5,0,'Vanessa Lightning Platter',8,0),
+(49520,49521,6,0,'Vanessa Lightning Platter',8,0),
+(49520,49521,7,0,'Vanessa Lightning Platter',8,0);
+
+DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (48338, 48351, 48820, 48821, 47297, 48939, 49520, 48913, 48803, 48804);
+INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`,`cast_flags`,`user_type`) VALUES
+(48338, 46598, 1, 0),
+(48351, 46598, 1, 0),
+(48820, 46598, 1, 0),
+(48821, 46598, 1, 0),
+(47297, 46598, 1, 0),
+(48939, 46598, 1, 0),
+(49520, 46598, 1, 0),
+(48913, 46598, 1, 0),
+(48803, 46598, 1, 0),
+(48804, 46598, 1, 0);
diff --git a/sql/updates/world/6.x/2016_06_13_00_world.sql b/sql/updates/world/6.x/2016_06_13_00_world.sql
new file mode 100644
index 00000000000..29813fb9283
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_13_00_world.sql
@@ -0,0 +1,306 @@
+--
+-- Alliance Sea-Scout
+SET @ENTRY := 42114;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,15000,15000,11,79537,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Strangling Rope'),
+(@ENTRY,0,1,0,0,0,100,0,2000,3000,11000,13000,11,5208,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Poisoned Harpoon'),
+(@ENTRY,0,2,0,9,0,100,0,0,20,15000,25000,11,12024,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Net on Close');
+
+-- Ascendant of the Deeps
+SET @ENTRY := 41658;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,32011,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Water Bolt'),
+(@ENTRY,0,1,0,9,0,100,0,0,20,18000,25000,11,79539,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Crashing Wave on Close');
+
+-- Ascended Zealot
+SET @ENTRY := 42361;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,57825,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt');
+
+-- Azsh'ir Depthseeker
+SET @ENTRY := 42819;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,12000,14000,11,79086,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Chain Lightning');
+
+-- Bloodcrazed Thresher
+SET @ENTRY := 41643;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,40,0,0,11,79561,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Blood Craze at 40% HP');
+
+-- Bound Torrent
+SET @ENTRY := 47969;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,7000,8000,15000,18000,11,79566,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Aqua Jet');
+
+-- Chasm Stalker
+SET @ENTRY := 41645;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,32939,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Phase Burst on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,15000,15000,11,32922,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Slow'),
+(@ENTRY,0,2,0,2,0,100,1,0,55,0,0,11,32942,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Phasing Invisibility at 55% HP');
+
+-- Coldlight Hunter
+SET @ENTRY := 41925;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,12000,15000,11,79554,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fish Slap'),
+(@ENTRY,0,1,0,0,0,100,0,8000,10000,18000,22000,11,79556,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fish Toss');
+
+-- Coldlight Oracle
+SET @ENTRY := 41926;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,1,0,100,0,500,1000,600000,600000,11,12550,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Lightning Shield on Spawn'),
+(@ENTRY,0,1,0,16,0,100,0,12550,1,15000,30000,11,12550,1,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Lightning Shield on Repeat'),
+(@ENTRY,0,2,0,0,0,100,0,0,0,3400,4700,11,9672,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt'),
+(@ENTRY,0,3,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP');
+
+-- Compelled Elemental
+SET @ENTRY := 42210;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9672,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt');
+
+-- Crushing Eel
+SET @ENTRY := 41646;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,4000,8000,18000,22000,11,79560,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Crushing Bite');
+
+-- Deepfin Scrounger
+SET @ENTRY := 41593;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,79546,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Anchor Attack!');
+
+-- Deepfin Seer
+SET @ENTRY := 41592;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,40,22000,25000,11,11431,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Healing Touch at 40% HP'),
+(@ENTRY,0,1,0,14,0,100,0,2500,40,15000,18000,11,11431,0,0,0,0,0,7,0,0,0,0,0,0,0,'Cast Healing Touch on Friendlies'),
+(@ENTRY,0,2,0,0,0,100,0,0,0,3400,4700,11,57780,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Lightning Bolt');
+
+-- Devious Great-Eel
+SET @ENTRY := 41927;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,18000,19000,11,69203,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Vicious Bite'),
+(@ENTRY,0,1,0,2,0,100,1,0,40,0,0,11,83088,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Slimy Skin at 40% HP'),
+(@ENTRY,0,2,0,0,0,100,0,5000,5000,12000,13000,11,32739,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Venomous Bite');
+
+-- Faceless Defiler
+SET @ENTRY := 42051;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,14000,15000,11,13860,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mind Blast');
+
+-- Faceless Defiler
+SET @ENTRY := 41644;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,14000,15000,11,13860,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mind Blast');
+
+-- Ghostcrawler
+SET @ENTRY := 50051;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,50000,60000,11,93082,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Nerfbat'),
+(@ENTRY,0,1,0,2,0,100,0,0,55,15000,18000,11,19615,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Frenzy at 55% HP');
+
+-- Hallazeal the Ascended
+SET @ENTRY := 41659;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,6000,8000,14000,15000,11,90550,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Arcane Barrage'),
+(@ENTRY,0,1,0,0,0,100,0,12000,12000,10000,22000,11,90551,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Overwhelming Power');
+
+-- Hellscream Seadog
+SET @ENTRY := 42115;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,15000,15000,11,79537,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Strangling Rope'),
+(@ENTRY,0,1,0,0,0,100,0,2000,3000,11000,13000,11,5208,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Poisoned Harpoon'),
+(@ENTRY,0,2,0,9,0,100,0,0,20,15000,25000,11,12024,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Net on Close');
+
+-- Ick'thys the Unfathomable
+SET @ENTRY := 41648;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,15000,22000,34000,39000,11,79675,0,0,0,0,0,5,0,0,0,0,0,0,0,'Cast Mental Battle'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,2,0,0,0,100,0,8000,8000,20000,28000,11,79673,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Void Zone');
+
+-- Luxscale Grouper
+SET @ENTRY := 41923;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,3000,4500,20000,22000,11,79559,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Luxscale Light');
+
+-- Merciless One
+SET @ENTRY := 41601;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,7500,9500,17000,19000,11,79542,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mesmerize');
+
+-- Mobus <The Crushing Tide>
+SET @ENTRY := 50009;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,40,0,0,11,8599,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Enrage at 40% HP'),
+(@ENTRY,0,1,0,0,0,100,0,8000,8000,25000,25000,11,93491,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Algae'),
+(@ENTRY,0,2,0,9,0,100,0,30,50,15000,25000,11,93492,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Ram on Close'),
+(@ENTRY,0,3,0,0,0,100,0,5000,8000,14000,15000,11,93494,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Wake');
+
+-- Neph'Lahim
+SET @ENTRY := 41656;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt');
+
+-- Pyreshell Scuttler
+SET @ENTRY := 41922;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,14000,15000,11,79558,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Bioluminescence');
+
+-- Seabrush Terrapin
+SET @ENTRY := 42108;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,79384,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sea Slam');
+
+-- Shok'sharak
+SET @ENTRY := 50050;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,8,15000,25000,11,75073,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shadow Nova on Close');
+
+-- Sira'kess Guardian
+SET @ENTRY := 41586;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,5000,6000,14000,15000,11,11977,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rend');
+
+-- Sira'kess Sea Witch
+SET @ENTRY := 41588;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,1,0,100,0,500,1000,600000,600000,11,12550,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Lightning Shield on Spawn'),
+(@ENTRY,0,1,0,16,0,100,0,12550,1,15000,30000,11,12550,1,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Lightning Shield on Repeat'),
+(@ENTRY,0,2,0,0,0,100,0,0,0,3400,4700,11,9532,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Lightning Bolt');
+
+-- Sira'kess Tide Priestess
+SET @ENTRY := 41589;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9734,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Holy Smite'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,22419,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Riptide on Close');
+
+-- Sku'Bu
+SET @ENTRY := 41655;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,15091,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Blast Wave on Close');
+
+-- Spinescale Hammerhead
+SET @ENTRY := 42113;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,79384,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sea Slam');
+
+-- Taken Gilblin
+SET @ENTRY := 41729;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,79544,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Psionic Overload');
+
+-- Tentacle Horror
+SET @ENTRY := 41641;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,4,0,100,1,0,0,0,0,21,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Stop Moving on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,2000,3000,12000,19000,11,78331,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt');
+
+-- Twilight Candidate
+SET @ENTRY := 41657;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,79564,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Twilight Fireball'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,79565,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Twilight Shockwave on Close');
+
+-- Twilight Champion
+SET @ENTRY := 41652;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,30,0,0,11,42745,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Enrage at 30% HP'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,37704,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Whirlwind on Close');
+
+-- Twilight Devotee
+SET @ENTRY := 42280;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,22000,27000,11,22678,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Fear');
+
+-- Twilight Devotee
+SET @ENTRY := 42281;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,22000,27000,11,22678,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Fear');
+
+-- Ur'Goz
+SET @ENTRY := 41654;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9672,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,38033,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Frost Nova on Close');
diff --git a/sql/updates/world/6.x/2016_06_13_01_world.sql b/sql/updates/world/6.x/2016_06_13_01_world.sql
new file mode 100644
index 00000000000..f788b053f85
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_13_01_world.sql
@@ -0,0 +1,590 @@
+--
+-- Apothecary Jorell
+SET @ENTRY := 2733;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,40,0,0,11,54633,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Drink Healing Potion at 40% HP'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,15000,15000,11,84713,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Toxic Potion');
+
+-- Boulderfist Brute
+SET @ENTRY := 2566;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,2,0,100,0,0,60,22000,25000,11,4955,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Fist of Stone at 60% HP'),
+(@ENTRY,0,2,0,9,0,100,0,0,8,15000,25000,11,84709,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Stomp on Close');
+-- NPC talk text insert
+SET @ENTRY := 2566;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Boulderfist Enforcer
+SET @ENTRY := 2564;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,2,0,100,0,0,60,22000,25000,11,4955,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Fist of Stone at 60% HP');
+-- NPC talk text insert
+SET @ENTRY := 2564;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Boulderfist Lord
+SET @ENTRY := 2571;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,2,0,100,0,0,60,22000,25000,11,4955,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Fist of Stone at 60% HP'),
+(@ENTRY,0,2,0,4,0,100,1,0,0,0,0,11,8258,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Devotion Aura on Aggro');
+-- NPC talk text insert
+SET @ENTRY := 2571;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Boulderfist Magus
+SET @ENTRY := 2567;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,20822,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt'),
+(@ENTRY,0,2,0,9,0,100,0,0,8,15000,25000,11,11831,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Frost Nova on Close');
+-- NPC talk text insert
+SET @ENTRY := 2567;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Boulderfist Mauler
+SET @ENTRY := 2569;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,2,0,100,0,0,60,22000,25000,11,4955,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Fist of Stone at 60% HP');
+-- NPC talk text insert
+SET @ENTRY := 2569;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Boulderfist Ogre
+SET @ENTRY := 2562;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,2,0,100,0,0,60,22000,25000,11,4955,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Fist of Stone at 60% HP');
+-- NPC talk text insert
+SET @ENTRY := 2562;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Boulderfist Shaman
+SET @ENTRY := 2570;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,9532,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Lightning Bolt'),
+(@ENTRY,0,2,0,14,0,100,0,350,40,15000,18000,11,11986,0,0,0,0,0,7,0,0,0,0,0,0,0,'Cast Healing Wave on Friendlies'),
+(@ENTRY,0,3,0,2,0,100,0,0,40,22000,25000,11,11986,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Healing Wav at 40% HP');
+-- NPC talk text insert
+SET @ENTRY := 2570;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Dabyrie Laborer
+SET @ENTRY := 2582;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,22000,23000,11,80382,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Dirt Toss'),
+(@ENTRY,0,1,0,0,0,100,0,5000,5000,12000,12500,11,6016,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Pierce Armor');
+
+-- Dabyrie Militia
+SET @ENTRY := 2581;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,13,0,100,0,5000,8000,20000,30000,11,82800,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shield Bash on Player Spell Cast');
+
+-- Daggerspine Raider
+SET @ENTRY := 2595;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,7000,8000,14000,15000,11,6533,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Net');
+
+-- Daggerspine Sorceress
+SET @ENTRY := 2596;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9532,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Lightning Bolt'),
+(@ENTRY,0,1,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP');
+
+-- Darbel Montrose
+SET @ENTRY := 2598;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,0,0,100,0,7000,8000,13000,16000,11,8994,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Banish'),
+(@ENTRY,0,2,0,0,0,100,0,5000,6000,22000,23000,11,12741,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Curse of Weakness');
+
+-- Defiler Elite
+SET @ENTRY := 15128;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,15496,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave');
+
+-- Drywhisker Digger
+SET @ENTRY := 2574;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,82617,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Heave');
+
+-- Drywhisker Kobold
+SET @ENTRY := 2572;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,12000,13000,11,11976,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Strike');
+
+-- Drywhisker Surveyor
+SET @ENTRY := 2573;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,20822,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt');
+
+-- Fardel Dabyrie
+SET @ENTRY := 4479;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,2000,3200,9000,9100,11,3391,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Thrash'),
+(@ENTRY,0,1,0,0,0,100,0,5000,5000,12000,15000,11,3583,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Deadly Poison');
+
+-- Foulbelly
+SET @ENTRY := 2601;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,2500,7000,10000,20000,11,7992,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Slowing Poison'),
+(@ENTRY,0,1,0,0,0,100,0,5000,5000,12000,15000,11,3583,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Deadly Poison');
+
+-- Geomancer Flintdagger
+SET @ENTRY := 2609;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,20823,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball'),
+(@ENTRY,0,1,0,2,0,100,0,0,70,22000,25000,11,2601,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Fire Shield at 70% HP');
+
+-- Giant Plains Creeper
+SET @ENTRY := 2565;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,14000,15000,11,744,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Poison'),
+(@ENTRY,0,1,0,9,0,100,0,8,20,15000,25000,11,4962,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Encasing Webs on Close');
+
+-- Hammerfall Grunt
+SET @ENTRY := 2619;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,15572,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sunder Armor'),
+(@ENTRY,0,1,0,2,0,100,1,0,40,0,0,11,82836,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Blood Fury at 40% HP');
+
+-- Hammerfall Guardian
+SET @ENTRY := 2621;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,10000,15000,11,12169,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shield Block'),
+(@ENTRY,0,1,0,0,0,100,0,4500,4500,13000,13000,11,12170,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Revenge');
+
+-- Hammerfall Peon
+SET @ENTRY := 2618;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,15572,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sunder Armor');
+
+-- Highland Fleshstalker
+SET @ENTRY := 2561;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,7000,8000,14000,16000,11,3393,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Consume Flesh');
+
+-- Highland Strider
+SET @ENTRY := 2559;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,4000,6000,12000,15000,11,13445,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rend'),
+(@ENTRY,0,1,0,4,0,100,1,0,0,0,0,11,6268,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Rushing Charge on Aggro');
+
+-- Highland Thrasher
+SET @ENTRY := 2560;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,15000,15000,11,83366,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Howling Screech');
+
+-- Kenata Dabyrie
+SET @ENTRY := 4480;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,18000,22000,11,8379,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Disarm');
+
+-- Kor'gresh Coldrage
+SET @ENTRY := 2793;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9672,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt'),
+(@ENTRY,0,1,0,0,0,100,0,8000,8000,25000,26000,11,4320,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Trelane\'s Freezing Touch');
+
+-- Kovork
+SET @ENTRY := 2603;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,30,0,0,11,8269,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Frenzy at 30% HP');
+
+-- League of Arathor Elite
+SET @ENTRY := 15130;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,15496,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave');
+
+-- Lieutenant Valorcall
+SET @ENTRY := 2612;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,13953,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Holy Strike');
+
+-- Lord Falconcrest <Syndicate Leader>
+SET @ENTRY := 2597;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,32064,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Battle Shout on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,18000,22000,11,6713,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Disarm');
+
+-- Marcel Dabyrie
+SET @ENTRY := 4481;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,7164,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Defensive Stance on Aggro'),
+(@ENTRY,0,1,0,13,0,100,0,5000,8000,20000,30000,11,11972,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shield Bash on Player Spell Cast');
+
+-- Marez Cowl
+SET @ENTRY := 2783;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt');
+
+-- Mesa Buzzard
+SET @ENTRY := 2579;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,8139,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fevered Fatigue');
+
+-- Molok the Crusher
+SET @ENTRY := 2604;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,14000,16000,11,6253,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Backhand');
+
+-- Myzrael
+SET @ENTRY := 2755;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,10000,11000,25000,26000,11,4938,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Myzrael Earthquake'),
+(@ENTRY,0,1,0,2,0,100,1,0,30,0,0,11,4937,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Prismatic Exiles at 30% HP'),
+(@ENTRY,0,2,0,2,0,100,1,0,60,0,0,11,10388,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Prismatic Exiles at 60% HP');
+
+-- Nimar the Slayer <Warband Leader>
+SET @ENTRY := 2606;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,32064,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Battle Shout on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,10000,10000,22000,24000,11,17207,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Whirlwind');
+
+-- Or'Kalar
+SET @ENTRY := 2773;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,10,40,15000,25000,11,92072,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Impaling Pull on Close'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,84709,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Stomp on Close');
+
+-- Otto <Bodyguard>
+SET @ENTRY := 2599;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,80182,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Uppercut');
+
+-- Plains Creeper
+SET @ENTRY := 2563;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,14000,15000,11,744,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Poison'),
+(@ENTRY,0,1,0,9,0,100,0,8,20,15000,25000,11,4962,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Encasing Webs on Close');
+
+-- Prismatic Exile
+SET @ENTRY := 2887;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,34083,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,11831,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Frost Nova on Close'),
+(@ENTRY,0,2,0,1,0,100,0,500,1000,600000,600000,11,12550,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Lightning Shield on Spawn'),
+(@ENTRY,0,3,0,16,0,100,0,12550,1,15000,30000,11,12550,1,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Lightning Shield on Repeat');
+
+-- Refuge Pointe Defender
+SET @ENTRY := 10696;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shoot'),
+(@ENTRY,0,1,0,4,0,100,1,0,0,0,0,11,7164,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Defensive Stance on Aggro'),
+(@ENTRY,0,2,0,13,0,100,0,5000,8000,20000,30000,11,11972,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shield Bash on Player Spell Cast');
+
+-- Rumbling Exile
+SET @ENTRY := 2592;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,82839,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Hardened on Spawn'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,12000,15000,11,82841,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rock Bash');
+
+-- Rutherford Twing <Defilers Supply Officer>
+SET @ENTRY := 15126;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,32064,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Battle Shout on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,10000,10000,22000,24000,11,17207,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Whirlwind');
+
+-- Ruul Onestone
+SET @ENTRY := 2602;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,20822,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt'),
+(@ENTRY,0,2,0,2,0,100,1,0,25,0,0,11,6742,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Bloodlust at 25% HP');
+-- NPC talk text insert
+SET @ENTRY := 2602;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Samuel Hawke <League of Arathor Supply Officer>
+SET @ENTRY := 15127;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,15284,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave');
+
+-- Singer
+SET @ENTRY := 2600;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,28000,38000,11,14515,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Dominate Mind');
+
+-- Stromgarde Defender
+SET @ENTRY := 2584;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,7164,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Defensive Stance on Aggro'),
+(@ENTRY,0,1,0,13,0,100,0,5000,8000,20000,30000,11,11972,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shield Bash on Player Spell Cast');
+
+-- Stromgarde Soldier
+SET @ENTRY := 2585;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,7164,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Defensive Stance on Aggro');
+
+-- Syndicate Conjuror
+SET @ENTRY := 2590;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP');
+
+-- Syndicate Highwayman
+SET @ENTRY := 2586;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,22766,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sneak on Spawn'),
+(@ENTRY,0,1,0,7,0,100,1,0,0,0,0,11,22766,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sneak on Evade'),
+(@ENTRY,0,2,0,67,0,100,0,3900,6900,0,0,11,37685,0,0,0,0,0,2,0,0,0,0,0,0,0,'Casts Backstab');
+
+-- Syndicate Magus
+SET @ENTRY := 2591;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9672,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt'),
+(@ENTRY,0,1,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP'),
+(@ENTRY,0,2,0,0,0,100,0,8000,8000,18000,25000,11,8364,1,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Blizzard');
+
+-- Syndicate Pathstalker
+SET @ENTRY := 2587;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shoot'),
+(@ENTRY,0,1,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP');
+
+-- Syndicate Prowler
+SET @ENTRY := 2588;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,22766,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sneak on Spawn'),
+(@ENTRY,0,1,0,7,0,100,1,0,0,0,0,11,22766,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sneak on Evade'),
+(@ENTRY,0,2,0,0,0,100,0,5000,8000,12000,15000,11,14873,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sinister Strike'),
+(@ENTRY,0,3,0,0,0,100,0,9000,11000,18000,25000,11,6713,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Disarm');
+
+-- The Black Bride <Arathi Basin Battlemaster>
+SET @ENTRY := 19905;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,15284,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave');
+
+-- Thenan
+SET @ENTRY := 2763;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,8,15000,25000,11,80835,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Thundering Stomp on Close');
+
+-- Thundering Exile
+SET @ENTRY := 2762;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9532,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Lightning Bolt'),
+(@ENTRY,0,1,0,9,0,100,0,0,20,14000,17000,11,11824,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shock on Close');
+
+-- Witherbark Axe Thrower
+SET @ENTRY := 2554;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,20000,25000,11,4974,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Wither Touch');
+
+-- Witherbark Berserker
+SET @ENTRY := 2558;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,20000,25000,11,4974,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Wither Touch'),
+(@ENTRY,0,1,0,2,0,100,1,0,30,0,0,11,3019,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Frenzy at 30% HP');
+
+-- Witherbark Headhunter
+SET @ENTRY := 2556;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,20000,25000,11,4974,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Wither Touch'),
+(@ENTRY,0,1,0,0,0,100,0,7000,8000,14000,15000,11,6533,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Net');
+
+-- Witherbark Shadow Hunter
+SET @ENTRY := 2557;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,19000,27000,11,6726,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Silence');
+
+-- Witherbark Shadowcaster
+SET @ENTRY := 2553;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,1,0,100,1,3000,5000,0,0,11,11939,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Imp on Spawn'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt');
+
+-- Witherbark Troll
+SET @ENTRY := 2552;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,20000,25000,11,4974,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Wither Touch');
+
+-- Witherbark Witch Doctor
+SET @ENTRY := 2555;
+SET @TOTEMENTRY := 22895;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@TOTEMENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@TOTEMENTRY;
+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,0,0,100,0,5000,8000,25000,37000,11,39591,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Searing Totem'),
+(@TOTEMENTRY,0,0,0,11,0,100,1,0,0,0,0,11,39592,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sear on Spawn'),
+(@ENTRY,0,1,0,2,0,100,1,0,40,0,0,11,5605,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Healing Ward at 40% HP');
+
+-- Zalas Witherbark <Warband Leader>
+SET @ENTRY := 2605;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,20000,25000,11,4974,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Wither Touch'),
+(@ENTRY,0,1,0,0,0,100,0,2000,2000,14000,16000,11,512,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Chains of Ice'),
+(@ENTRY,0,2,0,0,0,100,0,10000,12000,28000,32000,11,851,0,0,0,0,0,5,0,0,0,0,0,0,0,'Cast Polymorph: Sheep'),
+(@ENTRY,0,3,0,2,0,100,1,0,40,0,0,11,8599,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Enrage at 40% HP'),
+(@ENTRY,0,4,0,0,0,100,0,3000,5000,12000,13000,11,9081,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt Volley');
diff --git a/sql/updates/world/6.x/2016_06_13_02_world.sql b/sql/updates/world/6.x/2016_06_13_02_world.sql
new file mode 100644
index 00000000000..6fb53afab4a
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_13_02_world.sql
@@ -0,0 +1,430 @@
+--
+-- Ambassador Infernus
+SET @ENTRY := 2745;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,8,15000,25000,11,11970,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Fire Nova on Close');
+
+-- Anathemus
+SET @ENTRY := 2754;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,81147,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Boulder'),
+(@ENTRY,0,1,0,0,0,100,0,8000,12000,18500,24000,11,85855,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Quake');
+
+-- Barnabus
+SET @ENTRY := 2753;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,30,0,0,11,18501,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Enrage at 30% HP'),
+(@ENTRY,0,1,0,0,0,100,0,5000,7500,12000,13000,11,32919,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Snarl');
+
+-- Broken Tooth
+SET @ENTRY := 2850;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,30,0,0,11,18501,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Enrage at 30% HP'),
+(@ENTRY,0,1,0,0,0,100,0,4000,7000,12000,13000,11,36590,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rip');
+
+-- Darkflight Flameblade
+SET @ENTRY := 46917;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,30,0,0,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Enrage at 30% HP'),
+(@ENTRY,0,1,0,0,0,100,0,4000,5000,18000,24000,11,38793,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flameblade');
+
+-- Darkflight Shadowspeaker
+SET @ENTRY := 46918;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,0,0,100,0,8000,8000,17000,20000,11,18266,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Curse of Agony');
+
+-- Darkflight Soldier
+SET @ENTRY := 46915;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,22120,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Charge on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,8500,10000,22000,24000,11,49807,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Whirlwind');
+
+-- Dustbelcher Butcher
+SET @ENTRY := 46928;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,9,0,100,0,0,5,12000,13000,11,15496,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave on Close');
+-- NPC talk text insert
+SET @ENTRY := 46928;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Dustbelcher Instructor
+SET @ENTRY := 46693;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,20822,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt'),
+(@ENTRY,0,2,0,2,0,100,1,0,25,0,0,11,6742,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Bloodlust at 25% HP');
+-- NPC talk text insert
+SET @ENTRY := 46693;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Dustbelcher Mauler
+SET @ENTRY := 2717;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,9,0,100,0,0,5,17000,27000,11,90208,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mauler Mash on Close');
+-- NPC talk text insert
+SET @ENTRY := 2717;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Dustbelcher Merchant
+SET @ENTRY := 46929;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,9,0,100,0,0,5,14500,19500,11,80182,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Uppercut on Close');
+-- NPC talk text insert
+SET @ENTRY := 46929;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Dustbelcher Shaman
+SET @ENTRY := 2718;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,9532,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Lightning Bolt');
+-- NPC talk text insert
+SET @ENTRY := 2718;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Dustbelcher Trainee
+SET @ENTRY := 46695;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+-- NPC talk text insert
+SET @ENTRY := 46695;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Dustwind Overseer
+SET @ENTRY := 51538;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,40505,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave');
+
+-- Elder Crag Coyote
+SET @ENTRY := 2729;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,32919,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Snarl');
+
+-- Explorers' League Excavator <The Explorers' League>
+SET @ENTRY := 46773;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3500,4100,11,7978,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Throw Dynamite'),
+(@ENTRY,0,1,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP');
+
+-- Feral Crag Coyote
+SET @ENTRY := 2728;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,2000,3200,9000,9100,11,3391,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Thrash');
+
+-- Fuselight Bruiser
+SET @ENTRY := 51862;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,20,15000,25000,11,12024,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Net on Close');
+
+-- Fuselight Bruiser
+SET @ENTRY := 48075;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,20,15000,25000,11,12024,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Net on Close');
+
+-- General Jirakka
+SET @ENTRY := 46860;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,8,15000,25000,11,90255,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Fire Nova on Close'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,12000,14000,11,10452,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Buffet');
+
+-- Giant Buzzard
+SET @ENTRY := 2831;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,12000,13000,11,3427,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Infected Wound');
+
+-- Kalaran the Annihilator
+SET @ENTRY := 46859;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,17000,18000,11,51219,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Breath');
+
+-- Moldarr
+SET @ENTRY := 46938;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,7000,9000,17000,22000,11,90257,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Conflagration');
+
+-- Moltanus
+SET @ENTRY := 52021;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,81147,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Boulder'),
+(@ENTRY,0,1,0,0,0,100,0,8000,12000,18500,24000,11,85855,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Quake');
+
+-- New Kargath Grunt
+SET @ENTRY := 47073;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,11971,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sunder Armor'),
+(@ENTRY,0,1,0,2,0,100,1,0,40,0,0,11,82836,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Blood Fury at 40% HP');
+
+-- Nyxondra
+SET @ENTRY := 46861;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,17000,18000,11,51219,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Breath'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,12000,14000,11,10452,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Buffet'),
+(@ENTRY,0,2,0,0,0,100,0,12000,12000,27000,33000,11,36922,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Bellowing Roar');
+
+-- Nyxondra
+SET @ENTRY := 46658;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,17000,20000,11,8873,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Breath');
+
+-- Nyxondra's Broodling
+SET @ENTRY := 46916;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,11985,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+
+-- Obsidian Golem
+SET @ENTRY := 4872;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,6000,8000,14000,18000,11,9941,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Obsidian Reflection');
+
+-- Parched Buzzard
+SET @ENTRY := 2830;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5500,16500,18500,11,3427,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Infected Wound');
+
+-- Rabid Crag Coyote
+SET @ENTRY := 2730;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,1,0,20,0,30000,600000,120000,600000,4,1018,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Howl OOC'),
+(@ENTRY,0,1,0,61,0,20,0,0,0,0,0,5,393,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Emote OOC'),
+(@ENTRY,0,2,0,0,0,100,0,5000,5500,16500,18500,11,3427,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Infected Wound');
+
+-- Raging Whelp
+SET @ENTRY := 46914;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,11985,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+
+-- Reliquary Excavator <The Reliquary>
+SET @ENTRY := 46772;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3500,4100,11,7978,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Throw Dynamite');
+
+-- Ridge Huntress
+SET @ENTRY := 2732;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,30,0,0,11,18501,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Enrage at 30% HP'),
+(@ENTRY,0,1,0,0,0,100,0,4000,7000,12000,13000,11,36590,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rip');
+
+-- Ridge Stalker
+SET @ENTRY := 2731;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,22766,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sneak on Spawn'),
+(@ENTRY,0,1,0,7,0,100,1,0,0,0,0,11,22766,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sneak on Evade');
+
+-- Ridge Stalker Patriarch
+SET @ENTRY := 2734;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,30,0,0,11,18501,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Enrage at 30% HP'),
+(@ENTRY,0,1,0,0,0,100,0,4000,7000,12000,13000,11,36590,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rip');
+
+-- Rock Elemental
+SET @ENTRY := 92;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,22000,27000,11,6524,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Ground Tremor'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,5568,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Trample on Close');
+
+-- Rumbler
+SET @ENTRY := 2752;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,22000,27000,11,6524,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Ground Tremor'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,5568,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Trample on Close');
+
+-- Scalding Whelp
+SET @ENTRY := 2725;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,34083,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+
+-- Scorched Guardian
+SET @ENTRY := 2726;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,17000,20000,11,8873,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Breath');
+
+-- Shadowforge Chanter
+SET @ENTRY := 2742;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,17000,21000,11,15970,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Sleep');
+
+-- Shadowforge Darkweaver
+SET @ENTRY := 2740;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP'),
+(@ENTRY,0,2,0,1,0,100,0,500,1000,600000,600000,11,79934,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Demon Armor on Spawn');
+
+-- Shadowforge Digger
+SET @ENTRY := 4846;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,12000,13000,11,11971,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sunder Armor');
+
+-- Shadowforge Ruffian
+SET @ENTRY := 4845;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,13,0,100,0,5000,8000,20000,30000,11,11978,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Kick on Player Spell Cast');
+
+-- Shadowforge Surveyor
+SET @ENTRY := 4844;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball'),
+(@ENTRY,0,1,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP'),
+(@ENTRY,0,2,0,9,0,100,0,0,8,15000,25000,11,11831,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Frost Nova on Close');
+
+-- Shadowforge Tunneler
+SET @ENTRY := 2739;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,12000,13000,11,76622,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sunder Armor');
+
+-- Shadowforge Warrior
+SET @ENTRY := 2743;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,32064,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Battle Shout on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,10000,10000,22000,24000,11,17207,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Whirlwind');
+
+-- Starving Buzzard
+SET @ENTRY := 2829;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5500,16500,18500,11,3427,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Infected Wound');
+
+-- Stonevault Cave Hunter
+SET @ENTRY := 4856;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,20,15000,25000,11,6533,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Net on Close');
+
+-- Stonevault Wanderer
+SET @ENTRY := 46713;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,6000,8000,14000,15000,11,84857,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Stone Splinter');
+
+-- War Golem
+SET @ENTRY := 2751;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,9000,9500,18500,23500,11,9576,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Lock Down');
diff --git a/sql/updates/world/6.x/2016_06_13_03_world.sql b/sql/updates/world/6.x/2016_06_13_03_world.sql
new file mode 100644
index 00000000000..d2d015ac95d
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_13_03_world.sql
@@ -0,0 +1,448 @@
+--
+-- Black Dragonspawn
+SET @ENTRY := 7040;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,12000,15000,11,15284,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave'),
+(@ENTRY,0,1,0,0,0,100,0,8000,10000,18000,22000,11,12054,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rend');
+
+-- Black Wyrmkin
+SET @ENTRY := 7041;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,11969,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Fire Nova on Close');
+
+-- Blackrock Invader
+SET @ENTRY := 48432;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shoot');
+
+-- Blackrock Necromancer
+SET @ENTRY := 48413;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt');
+
+-- Blackrock Sergeant
+SET @ENTRY := 48201;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,55,22000,25000,11,3248,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Improved Blocking at 55% HP'),
+(@ENTRY,0,1,0,9,0,100,0,0,100,15000,25000,11,89596,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Unmask on Close'),
+(@ENTRY,0,2,0,0,0,100,0,5000,8000,12000,15000,11,12170,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Revenge');
+
+-- Blackrock Slayer
+SET @ENTRY := 7027;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,12000,13000,11,87081,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Strike'),
+(@ENTRY,0,1,0,0,0,100,0,8000,8000,14000,18000,11,9080,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Hamstring');
+
+-- Blackrock Soldier
+SET @ENTRY := 7025;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,55,22000,25000,11,3248,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Improved Blocking at 55% HP'),
+(@ENTRY,0,1,0,9,0,100,0,0,100,15000,25000,11,89596,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Unmask on Close'),
+(@ENTRY,0,2,0,0,0,100,0,5000,8000,12000,15000,11,12170,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Revenge');
+
+-- Blackrock Sorcerer
+SET @ENTRY := 7026;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,15000,15000,11,11829,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flamestrike'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+
+-- Blackrock War Kodo
+SET @ENTRY := 48111;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,8,15000,25000,11,6266,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Kodo Stomp on Close');
+
+-- Blackrock Warlock
+SET @ENTRY := 7026;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,15000,18000,11,20826,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Immolate'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,20825,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,2,0,0,0,100,0,7000,9000,18000,24000,11,13338,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Curse of Tongues');
+
+-- Blackrock Whelper
+SET @ENTRY := 47782;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,40,0,0,11,82836,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Blood Fury at 40% HP'),
+(@ENTRY,0,1,0,0,0,100,0,4000,7000,13000,15000,11,11971,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sunder Armor');
+
+-- Blackrock Worg
+SET @ENTRY := 7055;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,7000,12000,13000,11,32919,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Snarl');
+
+-- Deathmaw
+SET @ENTRY := 10077;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,3604,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Tendon Rip');
+
+-- Dragon-Lord Neeralak
+SET @ENTRY := 48314;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,18000,22000,11,11977,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rend'),
+(@ENTRY,0,1,0,0,0,100,0,4000,4000,12000,17000,11,79881,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Slam'),
+(@ENTRY,0,2,0,2,0,100,0,0,60,22000,25000,11,79877,2,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Bloodthirst at 60% HP'),
+(@ENTRY,0,3,0,4,0,100,1,0,0,0,0,11,32064,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Battle Shout on Aggro');
+
+-- Ember Worg
+SET @ENTRY := 9690;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,17000,19000,11,7367,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Infected Bite');
+
+-- Firegut Brute
+SET @ENTRY := 7035;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,5000,5500,12000,13000,11,87081,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Strike');
+-- NPC talk text insert
+SET @ENTRY := 7035;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Firegut Flamespeaker
+SET @ENTRY := 48121;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,7000,8000,17000,22000,11,79846,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Flamestrike'),
+(@ENTRY,0,2,0,9,0,100,0,0,100,15000,25000,11,89596,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Unmask on Close'),
+(@ENTRY,0,3,0,0,0,100,0,0,0,3400,4700,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+-- NPC talk text insert
+SET @ENTRY := 48121;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Firegut Ogre
+SET @ENTRY := 7033;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro');
+-- NPC talk text insert
+SET @ENTRY := 7033;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Firegut Ogre Mage
+SET @ENTRY := 7034;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,11,0,100,1,0,0,0,0,11,35916,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Molten Armor on Spawn'),
+(@ENTRY,0,2,0,2,0,100,1,0,40,0,0,11,6742,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Bloodlust at 40% HP'),
+(@ENTRY,0,3,0,0,0,100,0,0,0,3400,4700,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+-- NPC talk text insert
+SET @ENTRY := 7034;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Firegut Reaver
+SET @ENTRY := 48120;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,7000,7000,13000,17000,11,80182,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Uppercut');
+-- NPC talk text insert
+SET @ENTRY := 48120;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Flamekin Spitter
+SET @ENTRY := 9776;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,15664,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Venom Spit');
+
+-- Flamekin Torcher
+SET @ENTRY := 9778;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,15665,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+
+-- Flamescale Broodling
+SET @ENTRY := 7049;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,13375,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+
+-- Flamescale Hatchling
+SET @ENTRY := 48966;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,13375,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+
+-- General Thorg'izog
+SET @ENTRY := 48316;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,12000,13000,11,32736,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mortal Strike'),
+(@ENTRY,0,1,0,0,0,100,0,8000,8000,14000,18000,11,9080,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Hamstring');
+
+-- Giant Ember Worg
+SET @ENTRY := 9697;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,18000,22000,11,13443,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rend'),
+(@ENTRY,0,1,0,2,0,100,0,0,55,22000,25000,11,3149,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Furious Howl at 55% HP');
+
+-- Goblin Flamethrower
+SET @ENTRY := 7025;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,55,22000,25000,11,48153,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Improved Blocking at 55% HP');
+
+-- Gorgon'och
+SET @ENTRY := 9604;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,20,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Say Text on Aggro'),
+(@ENTRY,0,1,0,11,0,100,1,0,0,0,0,11,35916,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Molten Armor on Spawn'),
+(@ENTRY,0,2,0,2,0,100,1,0,40,0,0,11,6742,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Bloodlust at 40% HP'),
+(@ENTRY,0,3,0,0,0,100,0,0,0,3400,4700,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+-- NPC talk text insert
+SET @ENTRY := 9604;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `broadcasttextid`) VALUES
+(@ENTRY,0,0, 'I\'ll crush you!',12,0,100,0,0,0, 'on Aggro Text',1925),
+(@ENTRY,0,1, 'Me smash! You die!',12,0,100,0,0,0, 'on Aggro Text',1926),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'on Aggro Text',1927);
+
+-- Greater Obsidian Elemental
+SET @ENTRY := 7032;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,40,0,0,11,9941,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Obsidian Reflection at 40% HP');
+
+-- Gruklash
+SET @ENTRY := 8979;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,40,0,0,11,8269,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Frenzy at 40% HP'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,12000,15000,11,6253,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Backhand');
+
+-- Hematos
+SET @ENTRY := 8976;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,15000,15000,11,9573,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Breath');
+
+-- High Warlock Xi'lun
+SET @ENTRY := 48312;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,1,0,100,0,500,1000,600000,600000,11,13787,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Demon Armor on Spawn'),
+(@ENTRY,0,1,0,1,0,100,1,3000,5000,0,0,11,30842,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Felhunter on Spawn'),
+(@ENTRY,0,2,0,2,0,100,0,0,40,22000,25000,11,17173,2,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Drain Life at 40% HP'),
+(@ENTRY,0,3,0,0,0,100,0,5000,8000,12000,15000,11,15245,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt Volley');
+
+-- Magma Lord Kolob
+SET @ENTRY := 48156;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,80549,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Gout of Flame');
+
+-- Malfunctioning Reaver
+SET @ENTRY := 8981;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,15000,15000,11,10966,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Uppercut'),
+(@ENTRY,0,1,0,0,0,100,0,2000,3200,9000,9100,11,3391,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Thrash');
+
+-- Minyoth
+SET @ENTRY := 48289;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,7000,8000,17000,18000,11,8873,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Breath'),
+(@ENTRY,0,1,0,0,0,100,0,5000,5500,12000,13500,11,32914,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Wing Buffet');
+
+-- Ner'gosh the Shadow
+SET @ENTRY := 47805;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,1,0,100,0,500,1000,600000,600000,11,79934,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Demon Armor on Spawn');
+
+-- Obsidian Elemental
+SET @ENTRY := 7031;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,40,0,0,11,9941,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Obsidian Reflection at 40% HP');
+
+-- Smolderthorn Assassin
+SET @ENTRY := 48119;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,67,0,100,0,3900,6900,0,0,11,15582,0,0,0,0,0,2,0,0,0,0,0,0,0,'Casts Backstab'),
+(@ENTRY,0,1,0,9,0,100,0,0,100,15000,25000,11,89596,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Unmask on Close');
+
+-- Smolderthorn Shaman
+SET @ENTRY := 48118;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,1,0,100,0,500,1000,600000,600000,11,12550,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Lightning Shield on Spawn'),
+(@ENTRY,0,1,0,16,0,100,0,12550,1,15000,30000,11,12550,1,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Lightning Shield on Repeat'),
+(@ENTRY,0,2,0,0,0,100,0,5000,8000,12000,15000,11,15039,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Shock');
+
+-- Terromath the Seared
+SET @ENTRY := 48288;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,6500,8000,18000,19500,11,18543,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Lash');
+
+-- Terrorspark
+SET @ENTRY := 10078;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,11962,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Immolate');
+
+-- Thauris Balgarr
+SET @ENTRY := 8978;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shoot'),
+(@ENTRY,0,1,0,9,0,100,0,0,20,15000,25000,11,6533,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Net on Close');
+
+-- Thaurissan Agent
+SET @ENTRY := 7038;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,4000,5000,12000,13000,11,14873,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sinister Strike'),
+(@ENTRY,0,1,0,0,0,100,0,7000,9000,22000,25000,11,12540,0,0,0,0,0,5,0,0,0,0,0,0,0,'Cast Gouge'),
+(@ENTRY,0,2,0,2,0,100,0,0,40,15000,15000,11,80576,2,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadowstep at 40% HP');
+
+-- Thaurissan Firewalker
+SET @ENTRY := 7037;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,19000,23000,11,10452,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Buffet'),
+(@ENTRY,0,1,0,0,0,100,0,8000,9000,14000,16000,11,10733,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Spray');
+
+-- Thaurissan Spy
+SET @ENTRY := 7036;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,67,0,100,0,3900,6900,0,0,11,7159,0,0,0,0,0,2,0,0,0,0,0,0,0,'Casts Backstab'),
+(@ENTRY,0,1,0,0,0,100,0,5000,5000,12000,15000,11,744,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Poison');
+
+-- Tugnar Goremaw
+SET @ENTRY := 48291;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,22120,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Charge on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,8000,8000,17000,22000,11,91294,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Whirling Blade');
+
+-- Venomtip Scorpid
+SET @ENTRY := 9691;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,18000,20000,11,744,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Poison');
+
+-- Volchan
+SET @ENTRY := 10119;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,8,15000,25000,11,12470,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Fire Nova on Close'),
+(@ENTRY,0,1,0,0,0,100,0,8000,8000,15000,15000,11,15743,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Flamecrack');
+
+-- Voodooist Timan
+SET @ENTRY := 48100;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,9000,9000,24000,27000,11,89459,0,0,0,0,0,5,0,0,0,0,0,0,0,'Cast Hex'),
+(@ENTRY,0,1,0,0,0,100,0,5000,5000,27000,32000,11,15802,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shrink'),
+(@ENTRY,0,2,0,2,0,100,0,0,40,22000,25000,11,17173,2,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Drain Life at 40% HP'),
+(@ENTRY,0,3,0,0,0,100,0,0,0,3400,4700,11,21067,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Poison Bolt');
+
+-- War Reaver
+SET @ENTRY := 7039;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,14000,15000,11,10966,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Uppercut');
+
+-- Whelptamer Akumi
+SET @ENTRY := 48287;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,2300,3900,11,74613,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shoot'),
+(@ENTRY,0,1,0,0,0,100,0,7000,8000,14000,15000,11,83014,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Rapid Shot'),
+(@ENTRY,0,2,0,2,0,100,1,0,55,0,0,11,91297,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Whelps at 55% HP');
diff --git a/sql/updates/world/6.x/2016_06_13_04_world.sql b/sql/updates/world/6.x/2016_06_13_04_world.sql
new file mode 100644
index 00000000000..fe0f90bc1f3
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_13_04_world.sql
@@ -0,0 +1,837 @@
+--
+-- Argent Sentry <The Argent Crusade>
+SET @ENTRY := 16378;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shoot'),
+(@ENTRY,0,1,0,13,0,100,0,5000,8000,20000,30000,11,15618,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Snap Kick on Player Spell Cast'),
+(@ENTRY,0,2,0,9,0,100,0,0,5,15000,25000,11,19643,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mortal Strike on Close');
+
+-- Argent Sentry <The Argent Crusade>
+SET @ENTRY := 47060;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shoot'),
+(@ENTRY,0,1,0,13,0,100,0,5000,8000,20000,30000,11,15618,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Snap Kick on Player Spell Cast'),
+(@ENTRY,0,2,0,9,0,100,0,0,5,15000,25000,11,19643,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mortal Strike on Close');
+
+-- Baron Bloodbane
+SET @ENTRY := 10819;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,1,0,100,0,500,1000,600000,600000,11,13787,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Demon Armor on Spawn'),
+(@ENTRY,0,1,0,9,0,100,0,0,5,15000,25000,11,12555,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Pummel on Close'),
+(@ENTRY,0,2,0,0,0,100,0,5000,8000,12000,15000,11,16583,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Shock'),
+(@ENTRY,0,3,0,0,0,100,0,9000,10000,18000,22000,11,12057,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Strike');
+
+-- Blighted Horror
+SET @ENTRY := 8521;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,24000,25000,11,16555,0,0,0,0,0,5,0,0,0,0,0,0,0,'Cast Drowning Death'),
+(@ENTRY,0,1,0,0,0,100,0,12000,14000,30000,35000,11,12542,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fear'),
+(@ENTRY,0,2,0,4,0,100,1,0,0,0,0,11,85873,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Flow of Gratitude on Aggro');
+
+-- Blighted Surge
+SET @ENTRY := 8519;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,24000,25000,11,16555,0,0,0,0,0,5,0,0,0,0,0,0,0,'Cast Drowning Death'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,16554,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Toxic Bolt'),
+(@ENTRY,0,2,0,4,0,100,1,0,0,0,0,11,85873,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Flow of Gratitude on Aggro');
+
+-- Blighthound
+SET @ENTRY := 45453;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,13445,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rend'),
+(@ENTRY,0,1,0,11,0,100,1,0,0,0,0,11,16577,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Disease Cloud on Spawn');
+
+-- Borelgore
+SET @ENTRY := 11896;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,6917,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Venom Spit'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,5568,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Trample on Close');
+
+-- Cannibal Ghoul
+SET @ENTRY := 8530;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,26047,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Birth on Spawn'),
+(@ENTRY,0,1,0,14,0,100,0,600,40,15000,18000,11,16569,0,0,0,0,0,7,0,0,0,0,0,0,0,'Cast Health Funnel on Friendlies'),
+(@ENTRY,0,2,0,6,0,100,1,0,0,0,0,12,11064,3,60000,0,0,0,0,1,0,0,0,0,0,0,'Summon Darrowshire Spirit on Death');
+
+-- Carrion Devourer
+SET @ENTRY := 8605;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,24000,28000,11,16449,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Maggot Slime'),
+(@ENTRY,0,1,0,6,0,100,1,0,0,0,0,11,17197,3,0,0,0,0,0,1,0,0,0,0,0,0,'Cast Maggot Goo on Death');
+
+-- Carrion Grub
+SET @ENTRY := 8603;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,24000,28000,11,16449,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Maggot Slime');
+
+-- Coldwraith
+SET @ENTRY := 28488;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,15043,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt');
+
+-- Crusader Lord Valdelmar
+SET @ENTRY := 46096;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,17232,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Devotion Aura on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,12000,15000,11,15284,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave'),
+(@ENTRY,0,2,0,9,0,100,0,0,5,15000,25000,11,13005,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Hammer of Justice on Close'),
+(@ENTRY,0,3,0,0,0,100,0,12000,12000,24000,27000,11,14517,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Crusader Strike');
+
+-- Crypt Horror
+SET @ENTRY := 8557;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,55,22000,25000,11,17169,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Carrion Scarab at 55% HP');
+
+-- Crypt Slayer
+SET @ENTRY := 8558;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,17170,2,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fatal Sting at 15% HP');
+
+-- Crypt Stalker
+SET @ENTRY := 8555;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,25000,28000,11,31600,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Crypt Scarabs');
+
+-- Crypt Walker
+SET @ENTRY := 8556;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,18000,19000,11,744,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Poison'),
+(@ENTRY,0,1,0,9,0,100,0,0,30,15000,25000,11,745,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Web on Close');
+
+-- Cursed Mage
+SET @ENTRY := 8524;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,20829,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Arcane Bolt'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,25000,28000,11,16567,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Tainted Mind');
+
+-- Dark Adept <Cult of the Damned>
+SET @ENTRY := 8546;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP'),
+(@ENTRY,0,1,0,13,0,100,0,5000,8000,20000,30000,11,8646,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Snap Kick on Player Spell Cast');
+
+-- Dark Caster
+SET @ENTRY := 8526;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,20825,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,0,0,100,0,8000,8000,17000,19000,11,11639,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Word: Pain');
+
+-- Dark Summoner <Cult of the Damned>
+SET @ENTRY := 8551;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,20829,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Arcane Bolt'),
+(@ENTRY,0,1,0,4,0,100,1,0,0,0,0,11,16590,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Zombie on Aggro'),
+(@ENTRY,0,3,0,1,0,100,1,1000,1000,1000,1000,11,51733,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shadow Aura on Spawn'),
+(@ENTRY,0,4,0,7,0,100,1,0,0,0,0,11,51733,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shadow Aura on Evade');
+
+-- Darrowshire Spirit
+SET @ENTRY := 11064;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,17321,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Spirit Spawn-in on Spawn');
+
+-- Death Cultist <Cult of the Damned>
+SET @ENTRY := 8547;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,14000,11,16583,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Shock');
+
+-- Death Knight Soulbearer
+SET @ENTRY := 10818;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,1,0,100,0,500,1000,600000,600000,11,79934,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Demon Armor on Spawn'),
+(@ENTRY,0,1,0,9,0,100,0,0,5,15000,25000,11,12555,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Pummel on Close'),
+(@ENTRY,0,2,0,0,0,100,0,5000,8000,12000,15000,11,16583,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Shock'),
+(@ENTRY,0,3,0,0,0,100,0,9000,10000,18000,22000,11,12057,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Strike');
+
+-- Death Singer
+SET @ENTRY := 8542;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,18000,20000,11,5884,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Banshee Curse'),
+(@ENTRY,0,1,0,9,0,100,0,0,5,25000,25000,11,6605,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Terrifying Screech on Close');
+
+-- Death-Hunter Hawkspear
+SET @ENTRY := 10824;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,13,0,100,0,5000,8000,20000,30000,11,11978,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Kick on Player Spell Cast'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,12000,15000,11,12057,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Strike');
+
+-- Death's Step Miscreation
+SET @ENTRY := 45444;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,6,0,100,1,0,0,0,0,11,83021,3,0,0,0,0,0,1,0,0,0,0,0,0,'Cast Blight Bomb on Death'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,19000,26000,11,83019,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Toxic Waste');
+
+-- Death's Step Putrifier <Cult of the Damned>
+SET @ENTRY := 45443;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,1,0,100,1,1000,1000,1000,1000,11,51733,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shadow Aura on Spawn'),
+(@ENTRY,0,1,0,7,0,100,1,0,0,0,0,11,51733,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shadow Aura on Evade'),
+(@ENTRY,0,2,0,0,0,100,0,0,0,3400,4700,11,79938,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Incinerate');
+
+-- Deathspeaker Selendre <Cult of the Damned>
+SET @ENTRY := 10827;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,12471,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,22000,25000,11,13338,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Curse of Tongues'),
+(@ENTRY,0,2,0,2,0,100,0,0,40,22000,25000,11,17173,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Drain Life at 40% HP');
+
+-- Diseased Flayer
+SET @ENTRY := 8532;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,26047,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Birth on Spawn'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,18000,22000,11,12541,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Ghoul Rot');
+
+-- Dread Weaver
+SET @ENTRY := 8528;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,27000,28000,11,12542,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fear');
+
+-- Duggan Wildhammer
+SET @ENTRY := 10817;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,15284,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave');
+
+-- Duke Ragereaver
+SET @ENTRY := 10820;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,12471,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,1,0,100,0,500,1000,600000,600000,11,79934,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Demon Armor on Spawn');
+
+-- Duskwing
+SET @ENTRY := 11897;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,77522,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Swoop'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,8281,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sonic Burst on Close');
+
+-- Foreman Jerris
+SET @ENTRY := 1843;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,2000,3200,9000,9100,11,3391,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Thrash'),
+(@ENTRY,0,1,0,13,0,100,0,5000,8000,20000,30000,11,15618,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Snap Kick on Player Spell Cast');
+
+-- Foreman Marcrid
+SET @ENTRY := 1844;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,15284,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave'),
+(@ENTRY,0,1,0,0,0,100,0,4000,10000,17000,20000,11,16583,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Shock');
+
+-- Frenzied Plaguehound
+SET @ENTRY := 8598;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,30,0,0,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Enrage at 30% HP'),
+(@ENTRY,0,1,0,0,0,100,0,5000,6000,17000,19000,11,90789,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Plague Bite');
+
+-- Gangled Golem
+SET @ENTRY := 8544;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,4000,8000,17000,22000,11,11428,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Knockdown');
+
+-- Garginox
+SET @ENTRY := 45681;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,15,15000,25000,11,60960,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast War Stomp on Close');
+
+-- Ghost of the Past
+SET @ENTRY := 10940;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,15089,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frost Shock');
+
+-- Gibbering Ghoul
+SET @ENTRY := 8531;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,26047,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Birth on Spawn'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,15000,15000,11,13338,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Curse of Tongues'),
+(@ENTRY,0,2,0,6,0,100,1,0,0,0,0,12,11064,3,60000,0,0,0,0,1,0,0,0,0,0,0,'Summon Darrowshire Spirit on Death');
+
+-- Gish the Unmoving
+SET @ENTRY := 10825;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,16564,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Gargoyle Strike'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,18000,22000,11,13445,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rend'),
+(@ENTRY,0,2,0,2,0,100,1,0,40,0,0,11,7020,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Stoneform at 40% HP');
+
+-- Hate Shrieker
+SET @ENTRY := 8541;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,18000,20000,11,5884,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Banshee Curse'),
+(@ENTRY,0,1,0,9,0,100,0,0,5,25000,25000,11,6605,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Terrifying Screech on Close');
+
+-- Hed'mush the Rotting
+SET @ENTRY := 10821;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,14099,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mighty Blow'),
+(@ENTRY,0,1,0,11,0,100,1,0,0,0,0,11,16577,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Disease Cloud on Spawn'),
+(@ENTRY,0,2,0,2,0,100,1,0,30,0,0,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Enrage at 30% HP');
+
+-- Infected Mossflayer
+SET @ENTRY := 12261;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,22000,25000,11,3427,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Infected Wound');
+
+-- Interloper
+SET @ENTRY := 8537;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,8,15000,25000,11,11975,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Arcane Explosion on Close');
+
+-- Ix'lar the Underlord
+SET @ENTRY := 45744;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,18000,25000,11,50284,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Blinding Swarm'),
+(@ENTRY,0,1,0,0,0,100,0,10000,10000,18000,18000,11,90908,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Mandible Crush'),
+(@ENTRY,0,2,0,2,0,100,0,0,40,22000,25000,11,17169,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Carrion Scarab at 55% HP');
+
+-- Karthis Darkrune
+SET @ENTRY := 45868;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,79899,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Chains of Ice'),
+(@ENTRY,0,1,0,0,0,100,0,4000,9000,10000,19000,11,79895,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frost Strike'),
+(@ENTRY,0,2,0,9,0,100,0,0,20,15000,25000,11,79897,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Icy Touch on Close');
+
+-- Lord Darkscythe
+SET @ENTRY := 10826;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,79901,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Blood Plague'),
+(@ENTRY,0,1,0,0,0,100,0,4000,4000,17000,18000,11,15284,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave'),
+(@ENTRY,0,2,0,1,0,100,0,500,1000,600000,600000,11,79934,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Demon Armor on Spawn'),
+(@ENTRY,0,3,0,0,0,100,0,10000,11000,14000,16500,11,79902,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Plague Strike'),
+(@ENTRY,0,4,0,0,0,100,0,15000,16000,10000,22000,11,11971,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sunder Armor');
+
+-- Lynnia Abbendis <The Fallen Hope>
+SET @ENTRY := 10828;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,17143,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Holy Strike'),
+(@ENTRY,0,1,0,4,0,100,1,0,0,0,0,11,9128,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Battle Shout on Aggro');
+
+-- Monstrous Plaguebat
+SET @ENTRY := 8602;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,17000,19000,11,64140,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sonic Burst');
+
+-- Mossflayer Cannibal
+SET @ENTRY := 8562;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,20000,25000,11,17172,0,0,0,0,0,5,0,0,0,0,0,0,0,'Cast Hex'),
+(@ENTRY,0,1,0,2,0,100,0,0,60,22000,25000,11,17173,2,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Drain Life at 60% HP');
+
+-- Mossflayer Rogue
+SET @ENTRY := 45579;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,14873,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sinister Strike');
+
+-- Mossflayer Scout
+SET @ENTRY := 8560;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,17000,22000,11,9080,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Hamstring');
+
+-- Mossflayer Shadowhunter
+SET @ENTRY := 8561;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shoot'),
+(@ENTRY,0,1,0,9,0,100,0,5,30,19000,25000,11,17171,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Shot on Close');
+
+-- Mossflayer Zombie
+SET @ENTRY := 11290;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,14000,15000,11,3234,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Disease Touch');
+
+-- Necromancer <Cult of the Damned>
+SET @ENTRY := 8553;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,12420,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Skeletal Servant on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,4000,6000,12000,13000,11,11443,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cripple');
+
+-- Nerubian Overseer
+SET @ENTRY := 16184;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,31601,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Crypt Scarabs'),
+(@ENTRY,0,1,0,13,0,100,0,5000,8000,20000,30000,11,32322,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Dark Shriek on Player Spell Cast'),
+(@ENTRY,0,2,0,9,0,100,0,0,20,15000,25000,11,15471,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Enveloping Web on Close');
+
+-- Nerubian Sycophant
+SET @ENTRY := 45743;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,40,22000,25000,11,17169,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Carrion Scarab at 55% HP');
+
+-- Noxious Assassin <Cult of the Damned>
+SET @ENTRY := 45692;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,67,0,100,0,3900,6900,0,0,11,7159,0,0,0,0,0,2,0,0,0,0,0,0,0,'Casts Backstab'),
+(@ENTRY,0,1,0,13,0,100,0,5000,8000,20000,30000,11,34802,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Kick on Player Spell Cast'),
+(@ENTRY,0,2,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP');
+
+-- Noxious Plaguebat
+SET @ENTRY := 8601;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,7000,12000,16000,11,7992,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Slowing Poison');
+
+-- Omasum Blighthoof
+SET @ENTRY := 45867;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,10000,10000,21000,25000,11,79893,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Bloodworm'),
+(@ENTRY,0,1,0,0,0,100,0,5000,5000,15000,15000,11,79887,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Death and Decay'),
+(@ENTRY,0,2,0,9,0,100,0,10,30,15000,25000,11,79894,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Death Grip on Close');
+
+-- Overstuffed Golem
+SET @ENTRY := 45851;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,14099,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mighty Blow'),
+(@ENTRY,0,1,0,11,0,100,1,0,0,0,0,11,16577,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Disease Cloud on Spawn');
+
+-- Plague Monstrosity
+SET @ENTRY := 8522;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,24000,25000,11,16555,0,0,0,0,0,5,0,0,0,0,0,0,0,'Cast Drowning Death'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,12000,15000,11,14099,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mighty Blow'),
+(@ENTRY,0,2,0,4,0,100,1,0,0,0,0,11,85873,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Flow of Gratitude on Aggro');
+
+-- Plague Ravager
+SET @ENTRY := 8520;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,24000,25000,11,16555,0,0,0,0,0,5,0,0,0,0,0,0,0,'Cast Drowning Death'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,12000,15000,11,14099,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mighty Blow'),
+(@ENTRY,0,2,0,4,0,100,1,0,0,0,0,11,85873,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Flow of Gratitude on Aggro');
+
+-- Plaguebat
+SET @ENTRY := 8600;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,5,25000,25000,11,6605,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Terrifying Screech on Close');
+
+-- Plagued Swine
+SET @ENTRY := 16117;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,3385,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Boar Charge on Aggro');
+
+-- Plaguehound
+SET @ENTRY := 8597;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,14000,17000,11,3427,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Infected Wound');
+
+-- Plaguehound Runt
+SET @ENTRY := 8596;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,31279,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Swipe');
+
+-- Plaguewood Reanimator <Cult of the Damned>
+SET @ENTRY := 45897;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,5000,12000,13000,11,16583,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Shock');
+
+-- Putrid Gargoyle
+SET @ENTRY := 8534;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,7000,9000,14000,19000,11,16573,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Putrid Bile');
+
+-- Putrid Gargoyle
+SET @ENTRY := 8535;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,7000,9000,14000,19000,11,16573,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Putrid Bile'),
+(@ENTRY,0,1,0,13,0,100,0,5000,8000,20000,30000,11,8281,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sonic Burst on Player Spell Cast');
+
+-- Rohan the Assassin <The Scarlet Crusade>
+SET @ENTRY := 46095;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,34189,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Stealth on Spawn'),
+(@ENTRY,0,1,0,7,0,100,1,0,0,0,0,11,34189,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Stealth on Evade'),
+(@ENTRY,0,2,0,67,0,100,0,3900,6900,0,0,11,37685,0,0,0,0,0,2,0,0,0,0,0,0,0,'Casts Backstab'),
+(@ENTRY,0,3,0,0,0,100,0,0,0,3500,4100,11,90783,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Deadly Throw'),
+(@ENTRY,0,4,0,0,0,100,0,5000,8000,17000,19000,11,30478,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Hemorrhage');
+
+-- Scarlet Archmage
+SET @ENTRY := 9451;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,15242,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Fireball');
+
+-- Scarlet Cleric
+SET @ENTRY := 9449;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,15587,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mind Blast'),
+(@ENTRY,0,1,0,14,0,100,0,500,40,15000,18000,11,15586,0,0,0,0,0,7,0,0,0,0,0,0,0,'Cast Heal on Friendlies'),
+(@ENTRY,0,2,0,2,0,100,0,0,40,22000,25000,11,15586,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Heal at 40% HP');
+
+-- Scarlet Commander Marjhan <The Scarlet Crusade>
+SET @ENTRY := 46092;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,14000,15000,11,79970,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Divine Storm'),
+(@ENTRY,0,1,0,9,0,100,0,0,40,15000,25000,11,79971,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Hammer of Wrath on Close'),
+(@ENTRY,0,2,0,4,0,100,1,0,0,0,0,11,79976,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Retribution Aura on Aggro');
+
+-- Scarlet Curate
+SET @ENTRY := 9450;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,25054,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Holy Smite'),
+(@ENTRY,0,1,0,14,0,100,0,500,40,15000,18000,11,25058,0,0,0,0,0,7,0,0,0,0,0,0,0,'Cast Renew on Friendlies'),
+(@ENTRY,0,2,0,2,0,100,0,0,40,22000,25000,11,25058,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Renew at 40% HP');
+
+-- Scarlet Enchanter
+SET @ENTRY := 9452;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,25055,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Arcane Bolt'),
+(@ENTRY,0,1,0,9,0,100,0,0,8,15000,25000,11,11975,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Arcane Explosion on Close');
+
+-- Scarlet Praetorian
+SET @ENTRY := 9448;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,5,14000,17000,11,17143,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Holy Strike on Close'),
+(@ENTRY,0,1,0,0,0,100,0,5000,7000,12000,19000,11,79964,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Exorcism');
+
+-- Scarlet Warder
+SET @ENTRY := 9447;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,5,14000,16000,11,14518,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Crusader Strike on Close'),
+(@ENTRY,0,1,0,2,0,100,1,0,40,0,0,11,15493,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Holy Light at 40% HP'),
+(@ENTRY,0,2,0,14,0,100,0,800,40,15000,18000,11,15493,0,0,0,0,0,7,0,0,0,0,0,0,0,'Cast Holy Light on Friendlies');
+
+-- Scourge Champion
+SET @ENTRY := 8529;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,5,12000,17000,11,13737,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mortal Strike on Close');
+
+-- Scourge Guard
+SET @ENTRY := 8527;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,5,20000,25000,11,6713,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Disarm on Close'),
+(@ENTRY,0,1,0,13,0,100,0,5000,8000,20000,30000,11,8242,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shield Slam on Player Spell Cast');
+
+-- Scourge Necromancer
+SET @ENTRY := 31096;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,20298,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,1,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP'),
+(@ENTRY,0,2,0,0,0,100,0,7000,8000,20000,25000,11,51337,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadowflame'),
+(@ENTRY,0,3,0,0,0,100,0,4000,4000,12000,16000,11,51338,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadowflame');
+
+-- Scourge Siege Engineer
+SET @ENTRY := 17878;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3500,4100,11,86088,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Throw Dynamite'),
+(@ENTRY,0,1,0,0,0,100,0,8000,8000,18000,22000,11,86087,2,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Burning Blaze');
+
+-- Scourge Soldier
+SET @ENTRY := 8523;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,11976,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Strike');
+
+-- Scourge Warder
+SET @ENTRY := 8525;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,30000,35000,11,12040,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shadow Shield'),
+(@ENTRY,0,1,0,2,0,100,0,0,40,8000,12000,11,12169,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shield Block at 40% HP');
+
+-- Shadowmage <Cult of the Damned>
+SET @ENTRY := 8550;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,16592,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shadowform on Spawn'),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3400,4700,11,20825,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shadow Bolt'),
+(@ENTRY,0,2,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP');
+
+-- Skullmage <Cult of the Damned>
+SET @ENTRY := 45691;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3400,4700,11,9672,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Frostbolt'),
+(@ENTRY,0,1,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP'),
+(@ENTRY,0,2,0,4,0,100,1,0,0,0,0,11,85243,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Summon Chattering Swarm on Aggro'),
+(@ENTRY,0,3,0,1,0,100,1,1000,1000,1000,1000,11,51733,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shadow Aura on Spawn'),
+(@ENTRY,0,4,0,7,0,100,1,0,0,0,0,11,51733,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shadow Aura on Evade');
+
+-- Spectral Betrayer
+SET @ENTRY := 11288;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,5337,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Wither Strike');
+
+-- Spectral Defender
+SET @ENTRY := 11289;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,11976,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Strike'),
+(@ENTRY,0,1,0,2,0,100,0,0,40,22000,25000,11,12169,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shield Block at 40% HP');
+
+-- Stephen Browman
+SET @ENTRY := 46167;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,26047,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Birth on Spawn');
+
+-- Stitched Golem
+SET @ENTRY := 8545;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,11,0,100,1,0,0,0,0,11,16577,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Disease Cloud on Spawn');
+
+-- Stitched Horror
+SET @ENTRY := 8543;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,10,17000,25000,11,14099,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Mighty Blow on Close');
+
+-- The Lone Hunter
+SET @ENTRY := 45450;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,15000,17000,11,32901,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Carnivorous Bite'),
+(@ENTRY,0,1,0,0,0,100,0,4000,4000,12000,12000,11,3604,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Tendon Rip'),
+(@ENTRY,0,2,0,9,0,100,0,0,8,15000,25000,11,3264,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Blood Howl on Close');
+
+-- Torn Screamer
+SET @ENTRY := 8540;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,18000,20000,11,5884,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Banshee Curse');
+
+-- Unliving Mossflayer
+SET @ENTRY := 11291;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,5,15000,18000,11,11428,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Knockdown on Close'),
+(@ENTRY,0,1,0,0,0,100,0,5000,5000,20000,22000,11,4974,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Wither Touch');
+
+-- Unseen Servant
+SET @ENTRY := 8538;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,12000,14000,11,38240,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Chilling Touch'),
+(@ENTRY,0,1,0,0,0,100,0,3000,5000,20000,27000,11,18267,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Curse of Weakness');
+
+-- Vile Tutor <Cult of the Damned>
+SET @ENTRY := 8548;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,30000,35000,11,12040,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Shadow Shield'),
+(@ENTRY,0,1,0,4,0,100,1,0,0,0,0,11,16587,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Dark Whispers on Aggro'),
+(@ENTRY,0,2,0,16,0,100,0,16587,40,22000,25000,11,16587,2,0,0,0,0,7,0,0,0,0,0,0,0,'Cast Dark Whispers on Friendlies Missing Buff'),
+(@ENTRY,0,3,0,2,0,100,1,0,15,0,0,25,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP');
+
+-- Warlord Thresh'jin
+SET @ENTRY := 10822;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,9080,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Hamstring'),
+(@ENTRY,0,1,0,0,0,100,0,10000,11000,18000,24000,11,11971,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sunder Armor'),
+(@ENTRY,0,2,0,9,0,100,0,0,5,15000,25000,11,17207,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Whirlwind on Close');
+
+-- Wretched Pathstrider
+SET @ENTRY := 8565;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,18000,19000,11,16498,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Faerie Fire');
+
+-- Wretched Ranger
+SET @ENTRY := 8564;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shoot'),
+(@ENTRY,0,1,0,9,0,100,0,5,30,18000,25000,11,14443,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Multi-Shot on Close'),
+(@ENTRY,0,2,0,0,0,100,0,8000,8000,17000,22000,11,17174,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Concussive Shot');
+
+-- Wretched Woodsman
+SET @ENTRY := 8563;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,6000,8000,17000,18000,11,43410,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Chop'),
+(@ENTRY,0,1,0,0,0,100,0,4000,4000,10000,12000,11,11971,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sunder Armor');
+
+-- Zaeldarr the Outcast
+SET @ENTRY := 12250;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cleave'),
+(@ENTRY,0,1,0,9,0,100,0,0,5,18000,25000,11,19128,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Knockdown on Close');
+
+-- Zul'Brin Warpbranch
+SET @ENTRY := 10823;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,20,17000,25000,11,15039,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Flame Shock on Close'),
+(@ENTRY,0,1,0,0,0,100,0,8000,8000,17000,18000,11,20831,0,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Chain Lightning'),
+(@ENTRY,0,2,0,2,0,100,0,0,60,27000,28000,11,17172,2,0,0,0,0,4,0,0,0,0,0,0,0,'Cast Hex at 60% HP'),
+(@ENTRY,0,3,0,2,0,100,0,0,40,22000,23000,11,12491,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Healing Wave at 40% HP');
diff --git a/sql/updates/world/6.x/2016_06_13_05_world.sql b/sql/updates/world/6.x/2016_06_13_05_world.sql
new file mode 100644
index 00000000000..c074b7d46a2
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_13_05_world.sql
@@ -0,0 +1,268 @@
+--
+-- Akasha
+SET @ENTRY := 39964;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,14000,15000,11,79400,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Brinescale Venom');
+
+-- Brinescale Serpent
+SET @ENTRY := 39948;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,14000,15000,11,79400,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Brinescale Venom');
+
+-- Clacksnap Pincer
+SET @ENTRY := 39918;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,19000,21000,11,33661,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Crush Armor');
+
+-- Famished Great Shark
+SET @ENTRY := 41998;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,69203,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Vicious Bite');
+
+-- Famished Great Shark
+SET @ENTRY := 41997;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,69203,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Vicious Bite');
+
+-- Giant Sea Grub
+SET @ENTRY := 41042;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,17000,19000,11,35201,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Paralytic Poison');
+
+-- Gilblin Collector
+SET @ENTRY := 41017;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3500,4100,11,79413,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Secret Shiny');
+
+-- Gilblin Hoarder
+SET @ENTRY := 41016;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,7000,8000,17000,19000,11,79379,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cannonball Bash');
+
+-- Gilblin Plunderer
+SET @ENTRY := 41746;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,7000,8000,17000,19000,11,79379,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cannonball Bash');
+
+-- Gilblin Scavenger
+SET @ENTRY := 40810;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP');
+
+-- Gilblin Scavenger
+SET @ENTRY := 40811;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,7000,8000,17000,19000,11,79379,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Cannonball Bash');
+
+-- Gilblin Scavenger
+SET @ENTRY := 40677;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Flee at 15% HP');
+
+-- Gilblingle
+SET @ENTRY := 41183;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,0,0,3500,4100,11,79413,64,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Secret Shiny');
+
+-- Gnash
+SET @ENTRY := 40987;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,8000,8000,17000,25000,11,81026,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Sea Splash');
+
+-- King Gurboggle
+SET @ENTRY := 41018;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,32064,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Battle Shout on Aggro');
+
+-- Kliklak
+SET @ENTRY := 40282;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,6268,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rushing Charge on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,7500,9500,13500,15500,11,33661,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Crush Armor');
+
+-- Lady La-La <Siren of the Deeps>
+SET @ENTRY := 49913;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,19000,21000,11,92895,2,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Briny Romance'),
+(@ENTRY,0,1,0,2,0,100,0,0,40,22000,25000,11,92888,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Siren\'s Song at 40% HP'),
+(@ENTRY,0,2,0,1,0,100,0,500,1000,60000,60000,11,92888,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Siren\'s Song on Spawn');
+
+-- Ravenous Thresher
+SET @ENTRY := 40219;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,69203,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Vicious Bite');
+
+-- Sabreclaw Skitterer
+SET @ENTRY := 40276;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,49978,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Claw Grasp');
+
+-- Salty Dog
+SET @ENTRY := 41037;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,18000,21000,11,79414,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Brittle Touch');
+
+-- Shimmerspine Harvester
+SET @ENTRY := 46474;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,70,15000,17000,11,80522,2,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Demoralizing Mmmrrrggglll at 70% HP'),
+(@ENTRY,0,1,0,9,0,100,0,0,20,15000,25000,11,6533,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Net on Close');
+
+-- Slickskin Eel
+SET @ENTRY := 41002;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,21000,22000,11,79356,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Slithering Slime');
+
+-- Slitherfin Eel
+SET @ENTRY := 40855;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,6000,21000,22000,11,79356,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Slithering Slime');
+
+-- Speckled Sea Turtle
+SET @ENTRY := 40223;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,79384,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Sea Slam'),
+(@ENTRY,0,1,0,4,0,100,1,0,0,0,0,11,75275,0,0,0,0,0,1,0,0,0,0,0,0,0,'Cast Giddyup! on Aggro');
+
+-- Splitclaw Skitterer
+SET @ENTRY := 40685;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,0,0,100,0,5000,8000,12000,15000,11,49978,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Claw Grasp');
+
+-- Warden Azjakir
+SET @ENTRY := 41530;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,0,10,15000,16000,11,86405,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Shell Shock on Close'),
+(@ENTRY,0,1,0,9,0,100,0,0,15,20000,24000,11,86407,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Opalescent Prison on Close');
+
+-- Zin'jatar Guardian
+SET @ENTRY := 41996;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,14000,15000,11,13445,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rend');
+
+-- Zin'jatar Guardian
+SET @ENTRY := 41481;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,14000,15000,11,13445,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Rend');
+
+-- Zin'jatar Overseer
+SET @ENTRY := 41549;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,10,40,8000,12000,11,79583,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Impaling Pull on Close');
+
+-- Zin'jatar Pearlbinder
+SET @ENTRY := 41477;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,9,0,100,0,20,30,15000,19000,11,79411,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Foul Waters on Close'),
+(@ENTRY,0,1,0,0,0,100,0,5000,8000,12000,15000,11,79409,2,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Pearlbinding');
+
+-- Zin'jatar Raider
+SET @ENTRY := 41805;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro');
+
+-- Zin'jatar Raider
+SET @ENTRY := 41808;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro');
+
+-- Zin'jatar Raider
+SET @ENTRY := 41781;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro');
+
+-- Zin'jatar Raider
+SET @ENTRY := 39313;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro');
+
+-- Zin'jatar Raider
+SET @ENTRY := 40782;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro');
+
+-- Zin'jatar Raider
+SET @ENTRY := 40759;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro');
+
+-- Zin'jatar Raider
+SET @ENTRY := 40770;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+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,76892,0,0,0,0,0,2,0,0,0,0,0,0,0,'Cast Serpentine Lunge on Aggro');
diff --git a/sql/updates/world/6.x/2016_06_13_06_world.sql b/sql/updates/world/6.x/2016_06_13_06_world.sql
new file mode 100644
index 00000000000..e24e6862de8
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_13_06_world.sql
@@ -0,0 +1,6 @@
+--
+DELETE FROM `spell_custom_attr` WHERE `entry`=35009;
+DELETE FROM `disables` WHERE `entry` IN(28098,28110);
+UPDATE `creature_template` SET `type`=15 WHERE `entry` IN (48845,48828,48822,48818);
+UPDATE `creature_template` SET `type`=5 WHERE `entry`=48693;
+UPDATE `creature` SET `spawndist`=0 WHERE `MovementType`=0 AND `spawndist`!=0;
diff --git a/sql/updates/world/6.x/2016_06_13_07_world.sql b/sql/updates/world/6.x/2016_06_13_07_world.sql
new file mode 100644
index 00000000000..be5d6ef6900
--- /dev/null
+++ b/sql/updates/world/6.x/2016_06_13_07_world.sql
@@ -0,0 +1,261 @@
+--
+DELETE FROM `creature_classlevelstats` WHERE `level` IN (101, 102, 103);
+INSERT INTO `creature_classlevelstats` (`level`, `class`, `basemana`, `basearmor`, `attackpower`, `rangedattackpower`, `damage_base`, `damage_exp1`, `damage_exp2`, `damage_exp3`, `damage_exp4`, `damage_exp5`, `comment`) VALUES
+(101, 1, 0, 1670, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(101, 2, 12082, 1670, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(101, 4, 0, 1670, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(101, 8, 25282, 1336, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(102, 1, 0, 1804, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(102, 2, 12082, 1804, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(102, 4, 0, 1804, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(102, 8, 25282, 1443, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(103, 1, 0, 1938, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(103, 2, 12082, 1938, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(103, 4, 0, 1938, 0, 0, 0, 0, 0, 0, 0, 0, NULL),
+(103, 8, 25282, 1550, 0, 0, 0, 0, 0, 0, 0, 0, NULL);
+-- basemana UnitClass Paladin
+UPDATE `creature_classlevelstats` SET `basemana` = 9916 WHERE `level` = 90 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 10084 WHERE `level` = 91 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 10312 WHERE `level` = 92 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 10514 WHERE `level` = 93 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 10748 WHERE `level` = 94 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 10954 WHERE `level` = 95 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 11164 WHERE `level` = 96 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 11404 WHERE `level` = 97 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 11618 WHERE `level` = 98 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 11864 WHERE `level` = 99 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 12082 WHERE `level` = 100 AND `class` = 2;
+-- basemana UnitClass Mage
+UPDATE `creature_classlevelstats` SET `basemana` = 21262 WHERE `level` = 90 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 21620 WHERE `level` = 91 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 22012 WHERE `level` = 92 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 22406 WHERE `level` = 93 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 22804 WHERE `level` = 94 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 23204 WHERE `level` = 95 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 23578 WHERE `level` = 96 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 24014 WHERE `level` = 97 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 24394 WHERE `level` = 98 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 24836 WHERE `level` = 99 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 25282 WHERE `level` = 100 AND `class` = 8;
+
+-- BaseArmor UnitClass Warrior/Paladin/Rogue
+UPDATE `creature_classlevelstats` SET `basearmor`= 67 WHERE `level` = 1 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 71 WHERE `level` = 2 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 75 WHERE `level` = 3 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 80 WHERE `level` = 4 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 84 WHERE `level` = 5 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 88 WHERE `level` = 6 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 92 WHERE `level` = 7 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 97 WHERE `level` = 8 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 101 WHERE `level` = 9 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 105 WHERE `level` = 10 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 109 WHERE `level` = 11 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 114 WHERE `level` = 12 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 118 WHERE `level` = 13 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 122 WHERE `level` = 14 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 126 WHERE `level` = 15 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 131 WHERE `level` = 16 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 135 WHERE `level` = 17 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 139 WHERE `level` = 18 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 143 WHERE `level` = 19 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 148 WHERE `level` = 20 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 152 WHERE `level` = 21 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 156 WHERE `level` = 22 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 160 WHERE `level` = 23 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 165 WHERE `level` = 24 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 169 WHERE `level` = 25 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 173 WHERE `level` = 26 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 177 WHERE `level` = 27 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 182 WHERE `level` = 28 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 186 WHERE `level` = 29 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 190 WHERE `level` = 30 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 194 WHERE `level` = 31 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 199 WHERE `level` = 32 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 203 WHERE `level` = 33 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 207 WHERE `level` = 34 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 211 WHERE `level` = 35 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 216 WHERE `level` = 36 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 220 WHERE `level` = 37 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 224 WHERE `level` = 38 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 228 WHERE `level` = 39 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 233 WHERE `level` = 40 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 237 WHERE `level` = 41 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 241 WHERE `level` = 42 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 245 WHERE `level` = 43 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 250 WHERE `level` = 44 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 254 WHERE `level` = 45 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 258 WHERE `level` = 46 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 262 WHERE `level` = 47 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 267 WHERE `level` = 48 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 271 WHERE `level` = 49 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 275 WHERE `level` = 50 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 279 WHERE `level` = 51 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 284 WHERE `level` = 52 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 288 WHERE `level` = 53 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 292 WHERE `level` = 54 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 296 WHERE `level` = 55 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 301 WHERE `level` = 56 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 305 WHERE `level` = 57 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 309 WHERE `level` = 58 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 313 WHERE `level` = 59 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 318 WHERE `level` = 60 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 322 WHERE `level` = 61 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 326 WHERE `level` = 62 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 330 WHERE `level` = 63 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 335 WHERE `level` = 64 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 339 WHERE `level` = 65 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 343 WHERE `level` = 66 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 347 WHERE `level` = 67 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 352 WHERE `level` = 68 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 356 WHERE `level` = 69 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 360 WHERE `level` = 70 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 365 WHERE `level` = 71 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 369 WHERE `level` = 72 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 373 WHERE `level` = 73 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 377 WHERE `level` = 74 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 382 WHERE `level` = 75 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 386 WHERE `level` = 76 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 390 WHERE `level` = 77 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 394 WHERE `level` = 78 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 399 WHERE `level` = 79 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 403 WHERE `level` = 80 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 407 WHERE `level` = 81 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 411 WHERE `level` = 82 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 416 WHERE `level` = 83 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 420 WHERE `level` = 84 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 424 WHERE `level` = 85 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 428 WHERE `level` = 86 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 433 WHERE `level` = 87 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 437 WHERE `level` = 88 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 441 WHERE `level` = 89 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 445 WHERE `level` = 90 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 504 WHERE `level` = 91 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 571 WHERE `level` = 92 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 646 WHERE `level` = 93 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 731 WHERE `level` = 94 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 827 WHERE `level` = 95 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 936 WHERE `level` = 96 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 1059 WHERE `level` = 97 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 1199 WHERE `level` = 98 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 1357 WHERE `level` = 99 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 1536 WHERE `level` = 100 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 1670 WHERE `level` = 101 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 1804 WHERE `level` = 102 AND `class` IN (1, 2, 4);
+UPDATE `creature_classlevelstats` SET `basearmor`= 1938 WHERE `level` = 103 AND `class` IN (1, 2, 4);
+-- BaseArmor UnitClass Mage
+UPDATE `creature_classlevelstats` SET `basearmor` = 53 WHERE `level` = 1 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 57 WHERE `level` = 2 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 60 WHERE `level` = 3 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 64 WHERE `level` = 4 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 67 WHERE `level` = 5 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 70 WHERE `level` = 6 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 74 WHERE `level` = 7 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 77 WHERE `level` = 8 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 81 WHERE `level` = 9 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 84 WHERE `level` = 10 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 87 WHERE `level` = 11 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 91 WHERE `level` = 12 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 94 WHERE `level` = 13 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 98 WHERE `level` = 14 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 101 WHERE `level` = 15 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 104 WHERE `level` = 16 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 108 WHERE `level` = 17 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 111 WHERE `level` = 18 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 115 WHERE `level` = 19 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 118 WHERE `level` = 20 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 121 WHERE `level` = 21 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 125 WHERE `level` = 22 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 128 WHERE `level` = 23 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 132 WHERE `level` = 24 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 135 WHERE `level` = 25 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 139 WHERE `level` = 26 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 142 WHERE `level` = 27 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 145 WHERE `level` = 28 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 149 WHERE `level` = 29 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 152 WHERE `level` = 30 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 156 WHERE `level` = 31 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 159 WHERE `level` = 32 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 162 WHERE `level` = 33 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 166 WHERE `level` = 34 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 169 WHERE `level` = 35 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 173 WHERE `level` = 36 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 176 WHERE `level` = 37 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 179 WHERE `level` = 38 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 183 WHERE `level` = 39 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 186 WHERE `level` = 40 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 190 WHERE `level` = 41 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 193 WHERE `level` = 42 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 196 WHERE `level` = 43 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 200 WHERE `level` = 44 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 203 WHERE `level` = 45 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 207 WHERE `level` = 46 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 210 WHERE `level` = 47 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 213 WHERE `level` = 48 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 217 WHERE `level` = 49 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 220 WHERE `level` = 50 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 224 WHERE `level` = 51 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 227 WHERE `level` = 52 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 230 WHERE `level` = 53 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 234 WHERE `level` = 54 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 237 WHERE `level` = 55 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 241 WHERE `level` = 56 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 244 WHERE `level` = 57 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 247 WHERE `level` = 58 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 251 WHERE `level` = 59 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 254 WHERE `level` = 60 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 258 WHERE `level` = 61 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 261 WHERE `level` = 62 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 264 WHERE `level` = 63 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 268 WHERE `level` = 64 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 271 WHERE `level` = 65 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 275 WHERE `level` = 66 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 278 WHERE `level` = 67 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 281 WHERE `level` = 68 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 285 WHERE `level` = 69 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 288 WHERE `level` = 70 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 292 WHERE `level` = 71 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 295 WHERE `level` = 72 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 298 WHERE `level` = 73 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 302 WHERE `level` = 74 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 305 WHERE `level` = 75 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 309 WHERE `level` = 76 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 312 WHERE `level` = 77 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 315 WHERE `level` = 78 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 319 WHERE `level` = 79 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 322 WHERE `level` = 80 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 326 WHERE `level` = 81 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 329 WHERE `level` = 82 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 332 WHERE `level` = 83 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 336 WHERE `level` = 84 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 339 WHERE `level` = 85 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 343 WHERE `level` = 86 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 346 WHERE `level` = 87 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 350 WHERE `level` = 88 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 353 WHERE `level` = 89 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 356 WHERE `level` = 90 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 403 WHERE `level` = 91 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 457 WHERE `level` = 92 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 517 WHERE `level` = 93 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 585 WHERE `level` = 94 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 662 WHERE `level` = 95 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 749 WHERE `level` = 96 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 847 WHERE `level` = 97 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 959 WHERE `level` = 98 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 1086 WHERE `level` = 99 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basearmor` = 1229 WHERE `level` = 100 AND `class` = 8;
+-- MoP
+-- basemana UnitClass Paladin
+UPDATE `creature_classlevelstats` SET `basemana` = 8726 WHERE `level` = 84 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 8908 WHERE `level` = 85 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 9094 WHERE `level` = 86 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 9310 WHERE `level` = 87 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 9470 WHERE `level` = 88 AND `class` = 2;
+UPDATE `creature_classlevelstats` SET `basemana` = 9692 WHERE `level` = 89 AND `class` = 2;
+-- basemana UnitClass Mage
+UPDATE `creature_classlevelstats` SET `basemana` = 18656 WHERE `level` = 83 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 19024 WHERE `level` = 84 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 19394 WHERE `level` = 85 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 19738 WHERE `level` = 86 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 20114 WHERE `level` = 87 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 20464 WHERE `level` = 88 AND `class` = 8;
+UPDATE `creature_classlevelstats` SET `basemana` = 20846 WHERE `level` = 89 AND `class` = 8;
diff --git a/src/common/Collision/Maps/MapTree.cpp b/src/common/Collision/Maps/MapTree.cpp
index faabdbdffb8..b7b98199502 100644
--- a/src/common/Collision/Maps/MapTree.cpp
+++ b/src/common/Collision/Maps/MapTree.cpp
@@ -22,6 +22,7 @@
#include "VMapDefinitions.h"
#include "Log.h"
#include "Errors.h"
+#include "Metric.h"
#include <string>
#include <sstream>
@@ -415,6 +416,8 @@ namespace VMAP
}
else
iLoadedTiles[packTileID(tileX, tileY)] = false;
+ TC_METRIC_EVENT("map_events", "LoadMapTile",
+ "Map: " + std::to_string(iMapID) + " TileX: " + std::to_string(tileX) + " TileY: " + std::to_string(tileY));
return result;
}
@@ -473,6 +476,8 @@ namespace VMAP
}
}
iLoadedTiles.erase(tile);
+ TC_METRIC_EVENT("map_events", "UnloadMapTile",
+ "Map: " + std::to_string(iMapID) + " TileX: " + std::to_string(tileX) + " TileY: " + std::to_string(tileY));
}
void StaticMapTree::getModelInstances(ModelInstance* &models, uint32 &count)
diff --git a/src/common/Metric/Metric.cpp b/src/common/Metric/Metric.cpp
new file mode 100644
index 00000000000..9484cebcc72
--- /dev/null
+++ b/src/common/Metric/Metric.cpp
@@ -0,0 +1,235 @@
+/*
+* Copyright (C) 2008-2016 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 "Metric.h"
+#include "Log.h"
+#include "Config.h"
+#include "Util.h"
+
+void Metric::Initialize(std::string const& realmName, boost::asio::io_service& ioService, std::function<void()> overallStatusLogger)
+{
+ _realmName = realmName;
+ _batchTimer = Trinity::make_unique<boost::asio::deadline_timer>(ioService);
+ _overallStatusTimer = Trinity::make_unique<boost::asio::deadline_timer>(ioService);
+ _overallStatusLogger = overallStatusLogger;
+ LoadFromConfigs();
+}
+
+bool Metric::Connect()
+{
+ _dataStream.connect(_hostname, _port);
+ auto error = _dataStream.error();
+ if (error)
+ {
+ TC_LOG_ERROR("metric", "Error connecting to '%s:%s', disabling Metric. Error message : %s",
+ _hostname.c_str(), _port.c_str(), error.message().c_str());
+ _enabled = false;
+ return false;
+ }
+ _dataStream.clear();
+ return true;
+}
+
+void Metric::LoadFromConfigs()
+{
+ bool previousValue = _enabled;
+ _enabled = sConfigMgr->GetBoolDefault("Metric.Enable", false);
+ _updateInterval = sConfigMgr->GetIntDefault("Metric.Interval", 10);
+ if (_updateInterval < 1)
+ {
+ TC_LOG_ERROR("metric", "'Metric.Interval' config set to %d, overriding to 1.", _updateInterval);
+ _updateInterval = 1;
+ }
+
+ _overallStatusTimerInterval = sConfigMgr->GetIntDefault("Metric.OverallStatusInterval", 1);
+ if (_overallStatusTimerInterval < 1)
+ {
+ TC_LOG_ERROR("metric", "'Metric.OverallStatusInterval' config set to %d, overriding to 1.", _overallStatusTimerInterval);
+ _overallStatusTimerInterval = 1;
+ }
+
+ // Schedule a send at this point only if the config changed from Disabled to Enabled.
+ // Cancel any scheduled operation if the config changed from Enabled to Disabled.
+ if (_enabled && !previousValue)
+ {
+ std::string connectionInfo = sConfigMgr->GetStringDefault("Metric.ConnectionInfo", "");
+ if (connectionInfo.empty())
+ {
+ TC_LOG_ERROR("metric", "'Metric.ConnectionInfo' not specified in configuration file.");
+ return;
+ }
+
+ Tokenizer tokens(connectionInfo, ';');
+ if (tokens.size() != 3)
+ {
+ TC_LOG_ERROR("metric", "'Metric.ConnectionInfo' specified with wrong format in configuration file.");
+ return;
+ }
+
+ _hostname.assign(tokens[0]);
+ _port.assign(tokens[1]);
+ _databaseName.assign(tokens[2]);
+ Connect();
+
+ ScheduleSend();
+ ScheduleOverallStatusLog();
+ }
+}
+
+void Metric::Update()
+{
+ if (_overallStatusTimerTriggered)
+ {
+ _overallStatusTimerTriggered = false;
+ _overallStatusLogger();
+ }
+}
+
+void Metric::LogEvent(std::string const& category, std::string const& title, std::string const& description)
+{
+ using namespace std::chrono;
+
+ MetricData* data = new MetricData;
+ data->Category = category;
+ data->Timestamp = system_clock::now();
+ data->Type = METRIC_DATA_EVENT;
+ data->Title = title;
+ data->Text = description;
+
+ _queuedData.Enqueue(data);
+}
+
+void Metric::SendBatch()
+{
+ using namespace std::chrono;
+
+ std::stringstream batchedData;
+ MetricData* data;
+ bool firstLoop = true;
+ while (_queuedData.Dequeue(data))
+ {
+ if (!firstLoop)
+ batchedData << "\n";
+
+ batchedData << data->Category;
+ if (!_realmName.empty())
+ batchedData << ",realm=" << _realmName;
+
+ batchedData << " ";
+
+ switch (data->Type)
+ {
+ case METRIC_DATA_VALUE:
+ batchedData << "value=" << data->Value;
+ break;
+ case METRIC_DATA_EVENT:
+ batchedData << "title=\"" << data->Title << "\",text=\"" << data->Text << "\"";
+ break;
+ }
+
+ batchedData << " ";
+
+ batchedData << std::to_string(duration_cast<nanoseconds>(data->Timestamp.time_since_epoch()).count());
+
+ firstLoop = false;
+ delete data;
+ }
+
+ // Check if there's any data to send
+ if (batchedData.tellp() == std::streampos(0))
+ {
+ ScheduleSend();
+ return;
+ }
+
+ if (!_dataStream.good() && !Connect())
+ return;
+
+ _dataStream << "POST " << "/write?db=" << _databaseName << " HTTP/1.1\r\n";
+ _dataStream << "Host: " << _hostname << ":" << _port << "\r\n";
+ _dataStream << "Accept: */*\r\n";
+ _dataStream << "Content-Type: application/octet-stream\r\n";
+ _dataStream << "Content-Transfer-Encoding: binary\r\n";
+
+ _dataStream << "Content-Length: " << std::to_string(batchedData.tellp()) << "\r\n\r\n";
+ _dataStream << batchedData.rdbuf();
+
+ std::string http_version;
+ _dataStream >> http_version;
+ unsigned int status_code = 0;
+ _dataStream >> status_code;
+ if (status_code != 204)
+ {
+ TC_LOG_ERROR("metric", "Error sending data, returned HTTP code: %u", status_code);
+ }
+
+ // Read and ignore the status description
+ std::string status_description;
+ std::getline(_dataStream, status_description);
+ // Read headers
+ std::string header;
+ while (std::getline(_dataStream, header) && header != "\r")
+ {
+ if (header == "Connection: close\r")
+ _dataStream.close();
+ }
+
+ ScheduleSend();
+}
+
+void Metric::ScheduleSend()
+{
+ if (_enabled)
+ {
+ _batchTimer->expires_from_now(boost::posix_time::seconds(_updateInterval));
+ _batchTimer->async_wait(std::bind(&Metric::SendBatch, this));
+ }
+ else
+ {
+ _dataStream.close();
+ MetricData* data;
+ // Clear the queue
+ while (_queuedData.Dequeue(data))
+ ;
+ }
+}
+
+void Metric::ForceSend()
+{
+ // Send what's queued only if io_service is stopped (so only on shutdown)
+ if (_enabled && _batchTimer->get_io_service().stopped())
+ SendBatch();
+}
+
+void Metric::ScheduleOverallStatusLog()
+{
+ if (_enabled)
+ {
+ _overallStatusTimer->expires_from_now(boost::posix_time::seconds(_overallStatusTimerInterval));
+ _overallStatusTimer->async_wait([this](const boost::system::error_code&)
+ {
+ _overallStatusTimerTriggered = true;
+ ScheduleOverallStatusLog();
+ });
+ }
+}
+
+Metric* Metric::instance()
+{
+ static Metric instance;
+ return &instance;
+}
diff --git a/src/common/Metric/Metric.h b/src/common/Metric/Metric.h
new file mode 100644
index 00000000000..1855e1d0098
--- /dev/null
+++ b/src/common/Metric/Metric.h
@@ -0,0 +1,141 @@
+/*
+* Copyright (C) 2008-2016 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 METRIC_H__
+#define METRIC_H__
+
+#include "Common.h"
+#include "Threading/MPSCQueue.h"
+#include <boost/asio/ip/tcp.hpp>
+#include <boost/algorithm/string.hpp>
+#include <type_traits>
+
+enum MetricDataType
+{
+ METRIC_DATA_VALUE,
+ METRIC_DATA_EVENT
+};
+
+struct MetricData
+{
+ std::string Category;
+ std::chrono::time_point<std::chrono::system_clock> Timestamp;
+ MetricDataType Type;
+
+ // LogValue-specific fields
+ std::string Value;
+
+ // LogEvent-specific fields
+ std::string Title;
+ std::string Text;
+};
+
+class TC_COMMON_API Metric
+{
+private:
+ boost::asio::ip::tcp::iostream _dataStream;
+ MPSCQueue<MetricData> _queuedData;
+ std::unique_ptr<boost::asio::deadline_timer> _batchTimer;
+ std::unique_ptr<boost::asio::deadline_timer> _overallStatusTimer;
+ int32 _updateInterval = 0;
+ int32 _overallStatusTimerInterval = 0;
+ bool _enabled = false;
+ bool _overallStatusTimerTriggered = false;
+ std::string _hostname;
+ std::string _port;
+ std::string _databaseName;
+ std::function<void()> _overallStatusLogger;
+ std::string _realmName;
+
+ bool Connect();
+ void SendBatch();
+ void ScheduleSend();
+ void ScheduleOverallStatusLog();
+
+ template<class T, typename std::enable_if<std::is_integral<T>::value>::type* = nullptr>
+ static std::string FormatInfluxDBValue(T value) { return std::to_string(value) + 'i'; }
+
+ static std::string FormatInfluxDBValue(std::string const& value)
+ {
+ return '"' + boost::replace_all_copy(value, "\"", "\\\"") + '"';
+ }
+
+ static std::string FormatInfluxDBValue(bool value) { return value ? "t" : "f"; }
+ static std::string FormatInfluxDBValue(const char* value) { return FormatInfluxDBValue(std::string(value)); }
+ static std::string FormatInfluxDBValue(double value) { return std::to_string(value); }
+ static std::string FormatInfluxDBValue(float value) { return FormatInfluxDBValue(double(value)); }
+
+public:
+ static Metric* instance();
+
+ void Initialize(std::string const& realmName, boost::asio::io_service& ioService, std::function<void()> overallStatusLogger = [](){});
+ void LoadFromConfigs();
+ void Update();
+
+ template<class T>
+ void LogValue(std::string const& category, T value)
+ {
+ using namespace std::chrono;
+
+ MetricData* data = new MetricData;
+ data->Category = category;
+ data->Timestamp = system_clock::now();
+ data->Type = METRIC_DATA_VALUE;
+ data->Value = FormatInfluxDBValue(value);
+
+ _queuedData.Enqueue(data);
+ }
+
+ void LogEvent(std::string const& category, std::string const& title, std::string const& description);
+
+ void ForceSend();
+ bool IsEnabled() const { return _enabled; }
+};
+
+#define sMetric Metric::instance()
+
+#if PLATFORM != PLATFORM_WINDOWS
+#define TC_METRIC_EVENT(category, title, description) \
+ do { \
+ if (sMetric->IsEnabled()) \
+ sMetric->LogEvent(category, title, description); \
+ } while (0)
+#define TC_METRIC_VALUE(category, value) \
+ do { \
+ if (sMetric->IsEnabled()) \
+ sMetric->LogValue(category, value); \
+ } while (0)
+#else
+#define TC_METRIC_EVENT(category, title, description) \
+ __pragma(warning(push)) \
+ __pragma(warning(disable:4127)) \
+ do { \
+ if (sMetric->IsEnabled()) \
+ sMetric->LogEvent(category, title, description); \
+ } while (0) \
+ __pragma(warning(pop))
+#define TC_METRIC_VALUE(category, value) \
+ __pragma(warning(push)) \
+ __pragma(warning(disable:4127)) \
+ do { \
+ if (sMetric->IsEnabled()) \
+ sMetric->LogValue(category, value); \
+ } while (0) \
+ __pragma(warning(pop))
+#endif
+
+#endif // METRIC_H__
diff --git a/src/common/Utilities/Containers.h b/src/common/Utilities/Containers.h
index 554dcb1b3de..5edb245fd87 100644
--- a/src/common/Utilities/Containers.h
+++ b/src/common/Utilities/Containers.h
@@ -31,7 +31,7 @@ namespace Trinity
namespace Containers
{
template<class T>
- void RandomResizeList(std::list<T> &list, uint32 size)
+ void RandomResizeList(std::list<T>& list, uint32 size)
{
uint32 list_size = uint32(list.size());
@@ -56,7 +56,7 @@ namespace Trinity
if (size)
RandomResizeList(listCopy, size);
- list = listCopy;
+ list = std::move(listCopy);
}
/*
diff --git a/src/server/bnetserver/REST/LoginRESTService.h b/src/server/bnetserver/REST/LoginRESTService.h
index 5c78ef3e09d..881c656f15e 100644
--- a/src/server/bnetserver/REST/LoginRESTService.h
+++ b/src/server/bnetserver/REST/LoginRESTService.h
@@ -35,7 +35,7 @@ struct soap_plugin;
class LoginRESTService
{
public:
- LoginRESTService() : _stopped(false), _port(0) { }
+ LoginRESTService() : _stopped(false), _port(0), _loginTicketCleanupTimer(nullptr) { }
static LoginRESTService& Instance();
diff --git a/src/server/bnetserver/Server/Session.cpp b/src/server/bnetserver/Server/Session.cpp
index 66d55480796..844f80cba06 100644
--- a/src/server/bnetserver/Server/Session.cpp
+++ b/src/server/bnetserver/Server/Session.cpp
@@ -647,7 +647,7 @@ bool Battlenet::Session::ReadHeaderHandler()
bool Battlenet::Session::ReadDataHandler()
{
Header header;
- header.ParseFromArray(_headerBuffer.GetReadPointer(), _headerBuffer.GetActiveSize());
+ ASSERT(header.ParseFromArray(_headerBuffer.GetReadPointer(), _headerBuffer.GetActiveSize()));
if (header.service_id() != 0xFE)
{
diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp
index 7d8023fa272..14e7ac54bab 100644
--- a/src/server/database/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp
@@ -648,10 +648,10 @@ void CharacterDatabaseConnection::DoPrepareStatements()
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_BOTH);
PrepareStatement(CHAR_INS_PET_AURA_EFFECT, "INSERT INTO pet_aura_effect (guid, casterGuid, spell, effectMask, effectIndex, amount, baseAmount) "
"VALUES (?, ?, ?, ?, ?, ?, ?)", CONNECTION_BOTH);
- PrepareStatement(CHAR_SEL_CHAR_PET_BY_ENTRY, "SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType FROM character_pet WHERE owner = ? AND id = ?", CONNECTION_SYNCH);
- PrepareStatement(CHAR_SEL_CHAR_PET_BY_ENTRY_AND_SLOT_2, "SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType FROM character_pet WHERE owner = ? AND entry = ? AND (slot = ? OR slot > ?)", CONNECTION_SYNCH);
- PrepareStatement(CHAR_SEL_CHAR_PET_BY_SLOT, "SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType FROM character_pet WHERE owner = ? AND (slot = ? OR slot > ?) ", CONNECTION_SYNCH);
- PrepareStatement(CHAR_SEL_CHAR_PET_BY_ENTRY_AND_SLOT, "SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType FROM character_pet WHERE owner = ? AND slot = ?", CONNECTION_SYNCH);
+ PrepareStatement(CHAR_SEL_CHAR_PET_BY_ENTRY, "SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType, specialization FROM character_pet WHERE owner = ? AND id = ?", CONNECTION_SYNCH);
+ PrepareStatement(CHAR_SEL_CHAR_PET_BY_ENTRY_AND_SLOT_2, "SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType, specialization FROM character_pet WHERE owner = ? AND entry = ? AND (slot = ? OR slot > ?)", CONNECTION_SYNCH);
+ PrepareStatement(CHAR_SEL_CHAR_PET_BY_SLOT, "SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType, specialization FROM character_pet WHERE owner = ? AND (slot = ? OR slot > ?) ", CONNECTION_SYNCH);
+ PrepareStatement(CHAR_SEL_CHAR_PET_BY_ENTRY_AND_SLOT, "SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType, specialization FROM character_pet WHERE owner = ? AND slot = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_DEL_CHAR_PET_BY_OWNER, "DELETE FROM character_pet WHERE owner = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_UPD_CHAR_PET_NAME, "UPDATE character_pet SET name = ?, renamed = 1 WHERE owner = ? AND id = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_UPD_CHAR_PET_SLOT_BY_SLOT_EXCLUDE_ID, "UPDATE character_pet SET slot = ? WHERE owner = ? AND slot = ? AND id <> ?", CONNECTION_ASYNC);
@@ -659,6 +659,10 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID, "UPDATE character_pet SET slot = ? WHERE owner = ? AND id = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_CHAR_PET_BY_ID, "DELETE FROM character_pet WHERE id = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_CHAR_PET_BY_SLOT, "DELETE FROM character_pet WHERE owner = ? AND (slot = ? OR slot > ?)", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_DEL_ALL_PET_SPELLS_BY_OWNER, "DELETE FROM pet_spell WHERE guid in (SELECT id FROM character_pet WHERE owner=?)", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_UPD_PET_SPECS_BY_OWNER, "UPDATE character_pet SET specialization = 0 WHERE owner=?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_INS_PET, "INSERT INTO character_pet (id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType, specialization) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
// PvPstats
PrepareStatement(CHAR_SEL_PVPSTATS_MAXID, "SELECT MAX(id) FROM pvpstats_battlegrounds", CONNECTION_SYNCH);
diff --git a/src/server/database/Database/Implementation/CharacterDatabase.h b/src/server/database/Database/Implementation/CharacterDatabase.h
index 1941f221eb3..ea6d9bd186f 100644
--- a/src/server/database/Database/Implementation/CharacterDatabase.h
+++ b/src/server/database/Database/Implementation/CharacterDatabase.h
@@ -558,6 +558,9 @@ enum CharacterDatabaseStatements
CHAR_UPD_CHAR_PET_SLOT_BY_ID,
CHAR_DEL_CHAR_PET_BY_ID,
CHAR_DEL_CHAR_PET_BY_SLOT,
+ CHAR_DEL_ALL_PET_SPELLS_BY_OWNER,
+ CHAR_UPD_PET_SPECS_BY_OWNER,
+ CHAR_INS_PET,
CHAR_SEL_ITEMCONTAINER_ITEMS,
CHAR_DEL_ITEMCONTAINER_ITEMS,
diff --git a/src/server/database/Database/Implementation/LoginDatabase.cpp b/src/server/database/Database/Implementation/LoginDatabase.cpp
index e37258001ea..249839c079b 100644
--- a/src/server/database/Database/Implementation/LoginDatabase.cpp
+++ b/src/server/database/Database/Implementation/LoginDatabase.cpp
@@ -119,7 +119,7 @@ void LoginDatabaseConnection::DoPrepareStatements()
PrepareStatement(LOGIN_SEL_BNET_ACCOUNT_INFO, "SELECT " BnetAccountInfo ", " BnetGameAccountInfo
" FROM battlenet_accounts ba LEFT JOIN battlenet_account_bans bab ON ba.id = bab.id LEFT JOIN account a ON ba.id = a.battlenet_account"
- " LEFT JOIN account_banned ab ON a.id = ab.id AND ab.active = 1 LEFT JOIN account_access aa ON a.id = aa.id AND aa.RealmID = -1 WHERE ba.email = ? AND ba.sha_pass_hash = ?", CONNECTION_SYNCH);
+ " LEFT JOIN account_banned ab ON a.id = ab.id AND ab.active = 1 LEFT JOIN account_access aa ON a.id = aa.id AND aa.RealmID = -1 WHERE ba.email = ? AND ba.sha_pass_hash = ? ORDER BY a.id", CONNECTION_SYNCH);
PrepareStatement(LOGIN_UPD_BNET_LAST_LOGIN_INFO, "UPDATE battlenet_accounts SET last_ip = ?, last_login = NOW(), locale = ?, failed_logins = 0, os = ? WHERE id = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_UPD_BNET_GAME_ACCOUNT_LOGIN_INFO, "UPDATE account SET sessionkey = ?, last_ip = ?, last_login = NOW(), locale = ?, failed_logins = 0, os = ? WHERE username = ?", CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_BNET_CHARACTER_COUNTS_BY_ACCOUNT_ID, "SELECT rc.acctid, rc.numchars, r.id, r.Region, r.Battlegroup FROM realmcharacters rc INNER JOIN realmlist r ON rc.realmid = r.id WHERE rc.acctid = ?", CONNECTION_ASYNC);
diff --git a/src/server/database/Updater/UpdateFetcher.cpp b/src/server/database/Updater/UpdateFetcher.cpp
index 7dc0a307ca2..3d81b9e035e 100644
--- a/src/server/database/Updater/UpdateFetcher.cpp
+++ b/src/server/database/Updater/UpdateFetcher.cpp
@@ -67,11 +67,11 @@ void UpdateFetcher::FillFileListRecursively(Path const& path, LocaleFileStorage&
LocaleFileEntry const entry = { itr->path(), state };
// Check for doubled filenames
- // Since elements are only compared through their filenames this is ok
+ // Because elements are only compared by their filenames, this is ok
if (storage.find(entry) != storage.end())
{
- TC_LOG_FATAL("sql.updates", "Duplicated filename occurred \"%s\", since updates are ordered " \
- "through its filename every name needs to be unique!", itr->path().generic_string().c_str());
+ TC_LOG_FATAL("sql.updates", "Duplicate filename \"%s\" occurred. Because updates are ordered " \
+ "by their filenames, every name needs to be unique!", itr->path().generic_string().c_str());
throw UpdateException("Updating failed, see the log for details.");
}
@@ -101,7 +101,7 @@ UpdateFetcher::DirectoryStorage UpdateFetcher::ReceiveIncludedDirectories() cons
if (!is_directory(p))
{
- TC_LOG_WARN("sql.updates", "DBUpdater: Given update include directory \"%s\" isn't existing, skipped!", p.generic_string().c_str());
+ TC_LOG_WARN("sql.updates", "DBUpdater: Given update include directory \"%s\" does not exist, skipped!", p.generic_string().c_str());
continue;
}
@@ -144,7 +144,7 @@ std::string UpdateFetcher::ReadSQLUpdate(boost::filesystem::path const& file) co
{
TC_LOG_FATAL("sql.updates", "Failed to open the sql update \"%s\" for reading! "
"Stopping the server to keep the database integrity, "
- "try to identify and solve the issue or disabled the database updater.",
+ "try to identify and solve the issue or disable the database updater.",
file.generic_string().c_str());
throw UpdateException("Opening the sql update failed!");
@@ -192,7 +192,7 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks,
AppliedFileStorage::const_iterator iter = applied.find(availableQuery.first.filename().string());
if (iter != applied.end())
{
- // If redundancy is disabled skip it since the update is already applied.
+ // If redundancy is disabled, skip it, because the update is already applied.
if (!redundancyChecks)
{
TC_LOG_DEBUG("sql.updates", ">> Update is already applied, skipping redundancy checks.");
@@ -200,7 +200,7 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks,
continue;
}
- // If the update is in an archived directory and is marked as archived in our database skip redundancy checks (archived updates never change).
+ // If the update is in an archived directory and is marked as archived in our database, skip redundancy checks (archived updates never change).
if (!archivedRedundancy && (iter->second.state == ARCHIVED) && (availableQuery.second == ARCHIVED))
{
TC_LOG_DEBUG("sql.updates", ">> Update is archived and marked as archived in database, skipping redundancy checks.");
@@ -217,11 +217,11 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks,
// Update is not in our applied list
if (iter == applied.end())
{
- // Catch renames (different filename but same hash)
+ // Catch renames (different filename, but same hash)
HashToFileNameStorage::const_iterator const hashIter = hashToName.find(hash);
if (hashIter != hashToName.end())
{
- // Check if the original file was removed if not we've got a problem.
+ // Check if the original file was removed. If not, we've got a problem.
LocaleFileStorage::const_iterator localeIter;
// Push localeIter forward
for (localeIter = available.begin(); (localeIter != available.end()) &&
@@ -230,12 +230,12 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks,
// Conflict!
if (localeIter != available.end())
{
- TC_LOG_WARN("sql.updates", ">> Seems like update \"%s\" \'%s\' was renamed, but the old file is still there! " \
- "Trade it as a new file! (Probably its an unmodified copy of file \"%s\")",
+ TC_LOG_WARN("sql.updates", ">> It seems like the update \"%s\" \'%s\' was renamed, but the old file is still there! " \
+ "Treating it as a new file! (It is probably an unmodified copy of the file \"%s\")",
availableQuery.first.filename().string().c_str(), hash.substr(0, 7).c_str(),
localeIter->first.filename().string().c_str());
}
- // Its save to trade the file as renamed here
+ // It is safe to treat the file as renamed here
else
{
TC_LOG_INFO("sql.updates", ">> Renaming update \"%s\" to \"%s\" \'%s\'.",
@@ -253,7 +253,7 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks,
availableQuery.first.filename().string().c_str(), hash.substr(0, 7).c_str());
}
}
- // Rehash the update entry if it is contained in our database but with an empty hash.
+ // Rehash the update entry if it exists in our database with an empty hash.
else if (allowRehash && iter->second.hash.empty())
{
mode = MODE_REHASH;
@@ -263,7 +263,7 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks,
}
else
{
- // If the hash of the files differs from the one stored in our database reapply the update (because it was changed).
+ // If the hash of the files differs from the one stored in our database, reapply the update (because it changed).
if (iter->second.hash != hash)
{
TC_LOG_INFO("sql.updates", ">> Reapplying update \"%s\" \'%s\' -> \'%s\' (it changed)...", availableQuery.first.filename().string().c_str(),
@@ -271,16 +271,16 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks,
}
else
{
- // If the file wasn't changed and just moved update its state if necessary.
+ // If the file wasn't changed and just moved, update its state (if necessary).
if (iter->second.state != availableQuery.second)
{
- TC_LOG_DEBUG("sql.updates", ">> Updating state of \"%s\" to \'%s\'...",
+ TC_LOG_DEBUG("sql.updates", ">> Updating the state of \"%s\" to \'%s\'...",
availableQuery.first.filename().string().c_str(), AppliedFileEntry::StateConvert(availableQuery.second).c_str());
UpdateState(availableQuery.first.filename().string(), availableQuery.second);
}
- TC_LOG_DEBUG("sql.updates", ">> Update is already applied and is matching hash \'%s\'.", hash.substr(0, 7).c_str());
+ TC_LOG_DEBUG("sql.updates", ">> Update is already applied and matches the hash \'%s\'.", hash.substr(0, 7).c_str());
applied.erase(iter);
continue;
@@ -307,14 +307,14 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks,
++importedUpdates;
}
- // Cleanup up orphaned entries if enabled
+ // Cleanup up orphaned entries (if enabled)
if (!applied.empty())
{
bool const doCleanup = (cleanDeadReferencesMaxCount < 0) || (applied.size() <= static_cast<size_t>(cleanDeadReferencesMaxCount));
for (auto const& entry : applied)
{
- TC_LOG_WARN("sql.updates", ">> File \'%s\' was applied to the database but is missing in" \
+ TC_LOG_WARN("sql.updates", ">> The file \'%s\' was applied to the database, but is missing in" \
" your update directory now!", entry.first.c_str());
if (doCleanup)
@@ -325,8 +325,8 @@ UpdateResult UpdateFetcher::Update(bool const redundancyChecks,
CleanUp(applied);
else
{
- TC_LOG_ERROR("sql.updates", "Cleanup is disabled! There are " SZFMTD " dirty files that were applied to your database " \
- "but are now missing in your source directory!", applied.size());
+ TC_LOG_ERROR("sql.updates", "Cleanup is disabled! There were " SZFMTD " dirty files applied to your database, " \
+ "but they are now missing in your source directory!", applied.size());
}
}
@@ -343,7 +343,7 @@ uint32 UpdateFetcher::Apply(Path const& path) const
// Update database
_applyFile(path);
- // Return time the query took to apply
+ // Return the time it took the query to apply
return uint32(std::chrono::duration_cast<std::chrono::milliseconds>(Time::now() - begin).count());
}
@@ -358,7 +358,7 @@ void UpdateFetcher::UpdateEntry(AppliedFileEntry const& entry, uint32 const spee
void UpdateFetcher::RenameEntry(std::string const& from, std::string const& to) const
{
- // Delete target if it exists
+ // Delete the target if it exists
{
std::string const update = "DELETE FROM `updates` WHERE `name`=\"" + to + "\"";
diff --git a/src/server/game/AI/CoreAI/GameObjectAI.h b/src/server/game/AI/CoreAI/GameObjectAI.h
index 7a2f23ac804..6d02f97e0ec 100644
--- a/src/server/game/AI/CoreAI/GameObjectAI.h
+++ b/src/server/game/AI/CoreAI/GameObjectAI.h
@@ -47,7 +47,7 @@ class TC_GAME_API GameObjectAI
static int Permissible(GameObject const* go);
- virtual bool GossipHello(Player* /*player*/) { return false; }
+ virtual bool GossipHello(Player* /*player*/, bool /*isUse*/) { return false; }
virtual bool GossipSelect(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/) { return false; }
virtual bool GossipSelectCode(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/, char const* /*code*/) { return false; }
virtual bool QuestAccept(Player* /*player*/, Quest const* /*quest*/) { return false; }
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index 914a476cf7d..5cda5fce674 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -840,7 +840,7 @@ void SmartGameObjectAI::Reset()
}
// Called when a player opens a gossip dialog with the gameobject.
-bool SmartGameObjectAI::GossipHello(Player* player)
+bool SmartGameObjectAI::GossipHello(Player* player, bool /*isUse*/)
{
TC_LOG_DEBUG("scripts.ai", "SmartGameObjectAI::GossipHello");
GetScript()->ProcessEventsFor(SMART_EVENT_GOSSIP_HELLO, player, 0, 0, false, NULL, go);
diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h
index aa7c9ace0b3..67a7bd4c330 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.h
+++ b/src/server/game/AI/SmartScripts/SmartAI.h
@@ -242,7 +242,7 @@ class TC_GAME_API SmartGameObjectAI : public GameObjectAI
SmartScript* GetScript() { return &mScript; }
static int Permissible(const GameObject* g);
- bool GossipHello(Player* player) override;
+ bool GossipHello(Player* player, bool isUse) override;
bool GossipSelect(Player* player, uint32 sender, uint32 action) override;
bool GossipSelectCode(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/, const char* /*code*/) override;
bool QuestAccept(Player* player, Quest const* quest) override;
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
index 53cc4d57033..3b3be37b0b3 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
@@ -442,11 +442,11 @@ void AuctionHouseMgr::PendingAuctionProcess(Player* player)
totaldeposit = GetAuctionDeposit(itr->auctionHouseEntry, itr->etime, item, totalItems);
uint32 depositremain = totaldeposit;
- for (auto itr = thisAH->begin(); itr != thisAH->end(); ++itr)
+ for (auto itrAH = thisAH->begin(); itrAH != thisAH->end(); ++itrAH)
{
- AuctionEntry* AH = (*itr);
+ AuctionEntry* AH = (*itrAH);
- if (next(itr) == thisAH->end())
+ if (next(itrAH) == thisAH->end())
AH->deposit = depositremain;
else
{
diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp
index 58874e394e5..0db3ed09ef2 100644
--- a/src/server/game/Battlefield/Battlefield.cpp
+++ b/src/server/game/Battlefield/Battlefield.cpp
@@ -828,7 +828,7 @@ GameObject* Battlefield::SpawnGameObject(uint32 entry, float x, float y, float z
// Create gameobject
GameObject* go = new GameObject;
- if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), entry, map, PHASEMASK_NORMAL, x, y, z, o, 0, 0, 0, 0, 100, GO_STATE_READY))
+ if (!go->Create(entry, map, PHASEMASK_NORMAL, x, y, z, o, 0, 0, 0, 0, 100, GO_STATE_READY))
{
TC_LOG_ERROR("bg.battlefield", "Battlefield::SpawnGameObject: Could not create gameobject template %u! Battlefield has not been created!", entry);
delete go;
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index 825a56820f2..449e614a900 100644
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -1076,6 +1076,12 @@ void Battleground::StartBattleground()
TC_LOG_DEBUG("bg.arena", "Arena match type: %u for Team1Id: %u - Team2Id: %u started.", m_ArenaType, m_ArenaTeamIds[TEAM_ALLIANCE], m_ArenaTeamIds[TEAM_HORDE]);
}
+void Battleground::TeleportPlayerToExploitLocation(Player* player)
+{
+ if (WorldSafeLocsEntry const* loc = GetExploitTeleportLocation(Team(player->GetBGTeam())))
+ player->TeleportTo(loc->MapID, loc->Loc.X, loc->Loc.Y, loc->Loc.Z, loc->Facing);
+}
+
void Battleground::AddPlayer(Player* player)
{
// remove afk from player
@@ -1455,8 +1461,7 @@ bool Battleground::AddObject(uint32 type, uint32 entry, float x, float y, float
// and when loading it (in go::LoadFromDB()), a new guid would be assigned to the object, and a new object would be created
// So we must create it specific for this instance
GameObject* go = new GameObject;
- if (!go->Create(GetBgMap()->GenerateLowGuid<HighGuid::GameObject>(), entry, GetBgMap(),
- PHASEMASK_NORMAL, x, y, z, o, rotation0, rotation1, rotation2, rotation3, 100, goState))
+ if (!go->Create(entry, GetBgMap(), PHASEMASK_NORMAL, x, y, z, o, rotation0, rotation1, rotation2, rotation3, 100, goState))
{
TC_LOG_ERROR("bg.battleground", "Battleground::AddObject: cannot create gameobject (entry: %u) for BG (map: %u, instance id: %u)!",
entry, m_MapId, m_InstanceID);
diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h
index 2ef7eca4aa1..4d2f5da1a24 100644
--- a/src/server/game/Battlegrounds/Battleground.h
+++ b/src/server/game/Battlegrounds/Battleground.h
@@ -438,6 +438,10 @@ class TC_GAME_API Battleground
// Death related
virtual WorldSafeLocsEntry const* GetClosestGraveYard(Player* player);
+ virtual WorldSafeLocsEntry const* GetExploitTeleportLocation(Team /*team*/) { return nullptr; }
+ // GetExploitTeleportLocation(TeamId) must be implemented in the battleground subclass.
+ void TeleportPlayerToExploitLocation(Player* player);
+
virtual void AddPlayer(Player* player); // must be implemented in BG subclass
void AddOrSetPlayerToCorrectBgGroup(Player* player, uint32 team);
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
index 911fe259fc3..60e0a5f8db8 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
@@ -231,11 +231,13 @@ void BattlegroundAB::RemovePlayer(Player* /*player*/, ObjectGuid /*guid*/, uint3
void BattlegroundAB::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
{
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
-
switch (trigger)
{
+ case 6635: // Horde Start
+ case 6634: // Alliance Start
+ if (GetStatus() == STATUS_WAIT_JOIN && !entered)
+ TeleportPlayerToExploitLocation(player);
+ break;
case 3948: // Arathi Basin Alliance Exit.
if (player->GetTeam() != ALLIANCE)
player->GetSession()->SendNotification("Only The Alliance can use that portal");
@@ -690,6 +692,11 @@ WorldSafeLocsEntry const* BattlegroundAB::GetClosestGraveYard(Player* player)
return good_entry;
}
+WorldSafeLocsEntry const* BattlegroundAB::GetExploitTeleportLocation(Team team)
+{
+ return sWorldSafeLocsStore.LookupEntry(team == ALLIANCE ? AB_EXPLOIT_TELEPORT_LOCATION_ALLIANCE : AB_EXPLOIT_TELEPORT_LOCATION_HORDE);
+}
+
bool BattlegroundAB::UpdatePlayerScore(Player* player, uint32 type, uint32 value, bool doAddHonor)
{
if (!Battleground::UpdatePlayerScore(player, type, value, doAddHonor))
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h
index e4bdf2f16d6..c452ca6fa2f 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h
@@ -179,6 +179,12 @@ enum BG_AB_Objectives
AB_OBJECTIVE_DEFEND_BASE = 123
};
+enum BG_AB_ExploitTeleportLocations
+{
+ AB_EXPLOIT_TELEPORT_LOCATION_ALLIANCE = 3705,
+ AB_EXPLOIT_TELEPORT_LOCATION_HORDE = 3706
+};
+
#define BG_AB_NotABBGWeekendHonorTicks 260
#define BG_AB_ABBGWeekendHonorTicks 160
#define BG_AB_NotABBGWeekendReputationTicks 160
@@ -288,6 +294,7 @@ class BattlegroundAB : public Battleground
void Reset() override;
void EndBattleground(uint32 winner) override;
WorldSafeLocsEntry const* GetClosestGraveYard(Player* player) override;
+ WorldSafeLocsEntry const* GetExploitTeleportLocation(Team team) override;
/* Scorekeeping */
bool UpdatePlayerScore(Player* player, uint32 type, uint32 value, bool doAddHonor = true) override;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
index 59d01df8237..031228013ef 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
@@ -493,11 +493,13 @@ void BattlegroundAV::RemovePlayer(Player* player, ObjectGuid /*guid*/, uint32 /*
void BattlegroundAV::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
{
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
-
switch (trigger)
{
+ case 6633: // Horde Start
+ case 6632: // Alliance Start
+ if (GetStatus() == STATUS_WAIT_JOIN && entered)
+ TeleportPlayerToExploitLocation(player);
+ break;
case 95:
case 2608:
if (player->GetTeam() != ALLIANCE)
@@ -1124,6 +1126,11 @@ WorldSafeLocsEntry const* BattlegroundAV::GetClosestGraveYard(Player* player)
return pGraveyard;
}
+WorldSafeLocsEntry const* BattlegroundAV::GetExploitTeleportLocation(Team team)
+{
+ return sWorldSafeLocsStore.LookupEntry(team == ALLIANCE ? AV_EXPLOIT_TELEPORT_LOCATION_ALLIANCE: AV_EXPLOIT_TELEPORT_LOCATION_HORDE);
+}
+
bool BattlegroundAV::SetupBattleground()
{
// Create starting objects
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h
index 8bf97822426..eae03d83bc1 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h
@@ -1536,6 +1536,12 @@ enum Texts
TEXT_SNIVVLE_RANDOM = 0
};
+enum BG_AV_ExploitTeleportLocations
+{
+ AV_EXPLOIT_TELEPORT_LOCATION_ALLIANCE = 3664,
+ AV_EXPLOIT_TELEPORT_LOCATION_HORDE = 3665
+};
+
struct BG_AV_NodeInfo
{
BG_AV_States State;
@@ -1633,6 +1639,7 @@ class BattlegroundAV : public Battleground
void EndBattleground(uint32 winner) override;
WorldSafeLocsEntry const* GetClosestGraveYard(Player* player) override;
+ WorldSafeLocsEntry const* GetExploitTeleportLocation(Team team) override;
// Achievement: Av perfection and Everything counts
bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const* source, Unit const* target = nullptr, uint32 miscvalue1 = 0) override;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
index 461420fe962..8bcba2ca204 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
@@ -406,14 +406,16 @@ void BattlegroundEY::RemovePlayer(Player* player, ObjectGuid guid, uint32 /*team
void BattlegroundEY::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
{
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
-
if (!player->IsAlive()) //hack code, must be removed later
return;
switch (trigger)
{
+ case 4530: // Horde Start
+ case 4531: // Alliance Start
+ if (GetStatus() == STATUS_WAIT_JOIN && !entered)
+ TeleportPlayerToExploitLocation(player);
+ break;
case TR_BLOOD_ELF_POINT:
if (m_PointState[BLOOD_ELF] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[BLOOD_ELF] == player->GetTeam())
if (m_FlagState && GetFlagPickerGUID() == player->GetGUID())
@@ -438,8 +440,6 @@ void BattlegroundEY::HandleAreaTrigger(Player* player, uint32 trigger, bool ente
case 4515:
case 4517:
case 4519:
- case 4530:
- case 4531:
case 4568:
case 4569:
case 4570:
@@ -950,6 +950,11 @@ WorldSafeLocsEntry const* BattlegroundEY::GetClosestGraveYard(Player* player)
return nearestEntry;
}
+WorldSafeLocsEntry const* BattlegroundEY::GetExploitTeleportLocation(Team team)
+{
+ return sWorldSafeLocsStore.LookupEntry(team == ALLIANCE ? EY_EXPLOIT_TELEPORT_LOCATION_ALLIANCE : EY_EXPLOIT_TELEPORT_LOCATION_HORDE);
+}
+
bool BattlegroundEY::IsAllNodesControlledByTeam(uint32 team) const
{
uint32 count = 0;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
index e25601f51b9..a1e63e356b8 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
@@ -248,6 +248,12 @@ enum BG_EY_Objectives
EY_OBJECTIVE_CAPTURE_FLAG = 183
};
+enum BG_EY_ExploitTeleportLocations
+{
+ EY_EXPLOIT_TELEPORT_LOCATION_ALLIANCE = 3773,
+ EY_EXPLOIT_TELEPORT_LOCATION_HORDE = 3772
+};
+
struct BattlegroundEYPointIconsStruct
{
BattlegroundEYPointIconsStruct(uint32 _WorldStateControlIndex, uint32 _WorldStateAllianceControlledIndex, uint32 _WorldStateHordeControlledIndex)
@@ -376,6 +382,7 @@ class BattlegroundEY : public Battleground
void HandleAreaTrigger(Player* source, uint32 trigger, bool entered) override;
void HandleKillPlayer(Player* player, Player* killer) override;
WorldSafeLocsEntry const* GetClosestGraveYard(Player* player) override;
+ WorldSafeLocsEntry const* GetExploitTeleportLocation(Team team) override;
bool SetupBattleground() override;
void Reset() override;
void UpdateTeamScore(uint32 Team);
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
index d31fd47819f..085da3d6b5a 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
@@ -263,11 +263,12 @@ void BattlegroundIC::RemovePlayer(Player* player, ObjectGuid /*guid*/, uint32 /*
}
}
-void BattlegroundIC::HandleAreaTrigger(Player* player, uint32 trigger, bool /*entered*/)
+void BattlegroundIC::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
{
// this is wrong way to implement these things. On official it done by gameobject spell cast.
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
+ if (GetStatus() == STATUS_WAIT_JOIN && !entered)
+ if (trigger == 9176 || trigger == 9178)
+ TeleportPlayerToExploitLocation(player);
/// @hack: this spell should be cast by npc 22515 (World Trigger) and not by the player
if (trigger == 5555 && player->GetTeamId() == TEAM_HORDE)
@@ -884,6 +885,11 @@ WorldSafeLocsEntry const* BattlegroundIC::GetClosestGraveYard(Player* player)
return good_entry;
}
+WorldSafeLocsEntry const * BattlegroundIC::GetExploitTeleportLocation(Team team)
+{
+ return sWorldSafeLocsStore.LookupEntry(team == ALLIANCE ? IC_EXPLOIT_TELEPORT_LOCATION_ALLIANCE : IC_EXPLOIT_TELEPORT_LOCATION_HORDE);
+}
+
bool BattlegroundIC::IsAllNodesControlledByTeam(uint32 team) const
{
uint32 count = 0;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h
index f60d9324e48..d65b69e62f4 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h
@@ -468,6 +468,12 @@ enum BG_IC_MaxSpawns
MAX_CAPTAIN_SPAWNS_PER_FACTION = 2,
};
+enum BG_IC_ExploitTeleportLocations
+{
+ IC_EXPLOIT_TELEPORT_LOCATION_ALLIANCE = 3986,
+ IC_EXPLOIT_TELEPORT_LOCATION_HORDE = 3983
+};
+
const ICNpc BG_IC_NpcSpawnlocs[MAX_NORMAL_NPCS_SPAWNS] =
{
{BG_IC_NPC_OVERLORD_AGMAR, NPC_OVERLORD_AGMAR, TEAM_HORDE, 1295.44f, -765.733f, 70.0541f, 0.0f}, //Overlord Agmar 1
@@ -940,6 +946,7 @@ class BattlegroundIC : public Battleground
void DestroyGate(Player* player, GameObject* go) override;
WorldSafeLocsEntry const* GetClosestGraveYard(Player* player) override;
+ WorldSafeLocsEntry const* GetExploitTeleportLocation(Team team) override;
/* Scorekeeping */
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
index 0df4fd6f88e..37b39043e42 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
@@ -650,13 +650,15 @@ void BattlegroundWS::UpdateTeamScore(uint32 team)
void BattlegroundWS::HandleAreaTrigger(Player* player, uint32 trigger, bool entered)
{
- if (GetStatus() != STATUS_IN_PROGRESS)
- return;
-
//uint32 SpellId = 0;
//uint64 buff_guid = 0;
switch (trigger)
{
+ case 8965: // Horde Start
+ case 8966: // Alliance Start
+ if (GetStatus() == STATUS_WAIT_JOIN && !entered)
+ TeleportPlayerToExploitLocation(player);
+ break;
case 3686: // Alliance elixir of speed spawn. Trigger not working, because located inside other areatrigger, can be replaced by IsWithinDist(object, dist) in Battleground::Update().
//buff_guid = BgObjects[BG_WS_OBJECT_SPEEDBUFF_1];
break;
@@ -851,6 +853,11 @@ WorldSafeLocsEntry const* BattlegroundWS::GetClosestGraveYard(Player* player)
}
}
+WorldSafeLocsEntry const* BattlegroundWS::GetExploitTeleportLocation(Team team)
+{
+ return sWorldSafeLocsStore.LookupEntry(team == ALLIANCE ? WS_EXPLOIT_TELEPORT_LOCATION_ALLIANCE : WS_EXPLOIT_TELEPORT_LOCATION_HORDE);
+}
+
void BattlegroundWS::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
{
packet.Worldstates.emplace_back(uint32(BG_WS_FLAG_CAPTURES_ALLIANCE), int32(GetTeamScore(TEAM_ALLIANCE)));
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h
index 3561d6f2fc3..8731255cd32 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h
@@ -125,6 +125,12 @@ enum BG_WS_Graveyards
WS_GRAVEYARD_MAIN_HORDE = 772
};
+enum BG_WS_ExploitTeleportLocations
+{
+ WS_EXPLOIT_TELEPORT_LOCATION_ALLIANCE = 3784,
+ WS_EXPLOIT_TELEPORT_LOCATION_HORDE = 3785
+};
+
enum BG_WS_CreatureTypes
{
WS_SPIRIT_MAIN_ALLIANCE = 0,
@@ -222,6 +228,7 @@ class BattlegroundWS : public Battleground
void Reset() override;
void EndBattleground(uint32 winner) override;
WorldSafeLocsEntry const* GetClosestGraveYard(Player* player) override;
+ WorldSafeLocsEntry const* GetExploitTeleportLocation(Team team) override;
void UpdateFlagState(uint32 team, uint32 value);
void SetLastFlagCapture(uint32 team) { _lastFlagCaptureTeam = team; }
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index a052d4d44d4..dcc18fdf64a 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -446,7 +446,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) const
if (Unit* unit = object->ToUnit())
{
if (ConditionValue1 == 0)
- condMeets = (unit->GetStandState() == ConditionValue2);
+ condMeets = (unit->GetStandState() == UnitStandStateType(ConditionValue2));
else if (ConditionValue2 == 0)
condMeets = unit->IsStandState();
else if (ConditionValue2 == 1)
@@ -2368,7 +2368,7 @@ inline bool PlayerConditionLogic(uint32 logic, std::array<bool, N>& results)
return result;
}
-bool ConditionMgr::IsPlayerMeetingCondition(Player* player, PlayerConditionEntry const* condition)
+bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditionEntry const* condition)
{
if (condition->MinLevel && player->getLevel() < condition->MinLevel)
return false;
@@ -2489,7 +2489,7 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player* player, PlayerConditionEntry
if (condition->PartyStatus)
{
- Group* group = player->GetGroup();
+ Group const* group = player->GetGroup();
switch (condition->PartyStatus)
{
case 1:
diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h
index 7c61b4d2955..fb754ab5349 100644
--- a/src/server/game/Conditions/ConditionMgr.h
+++ b/src/server/game/Conditions/ConditionMgr.h
@@ -271,7 +271,7 @@ class TC_GAME_API ConditionMgr
bool IsObjectMeetingSmartEventConditions(int64 entryOrGuid, uint32 eventId, uint32 sourceType, Unit* unit, WorldObject* baseObject) const;
bool IsObjectMeetingVendorItemConditions(uint32 creatureId, uint32 itemId, Player* player, Creature* vendor) const;
- static bool IsPlayerMeetingCondition(Player* player, PlayerConditionEntry const* condition);
+ static bool IsPlayerMeetingCondition(Player const* player, PlayerConditionEntry const* condition);
struct ConditionTypeInfo
{
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index c13c4f775ca..6ea2dfef591 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -176,7 +176,7 @@ void GameObject::RemoveFromWorld()
}
}
-bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, uint32 /*phaseMask*/, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 animprogress, GOState go_state, uint32 artKit)
+bool GameObject::Create(uint32 name_id, Map* map, uint32 /*phaseMask*/, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 animprogress, GOState go_state, uint32 artKit)
{
ASSERT(map);
SetMap(map);
@@ -185,14 +185,14 @@ 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 " Spawn id: " UI64FMTD " Entry: %u) not created. Suggested coordinates isn't valid (X: %f Y: %f)", guidlow, GetSpawnId(), name_id, x, y);
+ TC_LOG_ERROR("misc", "Gameobject (Spawn id: " UI64FMTD " Entry: %u) not created. Suggested coordinates isn't valid (X: %f Y: %f)", GetSpawnId(), name_id, x, y);
return false;
}
SetZoneScript();
if (m_zoneScript)
{
- name_id = m_zoneScript->GetGameObjectEntry(guidlow, name_id);
+ name_id = m_zoneScript->GetGameObjectEntry(m_spawnId, name_id);
if (!name_id)
return false;
}
@@ -200,26 +200,32 @@ 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 " 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);
+ TC_LOG_ERROR("sql.sql", "Gameobject (Spawn id: " UI64FMTD " Entry: %u) not created: non-existing entry in `gameobject_template`. Map: %u (X: %f Y: %f Z: %f)", 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 " Spawn id: " UI64FMTD " Entry: %u) not created: gameobject type GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT cannot be manually created.", guidlow, GetSpawnId(), name_id);
+ TC_LOG_ERROR("sql.sql", "Gameobject (Spawn id: " UI64FMTD " Entry: %u) not created: gameobject type GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT cannot be manually created.", GetSpawnId(), name_id);
return false;
}
- if (goinfo->type == GAMEOBJECT_TYPE_TRANSPORT)
+ ObjectGuid guid;
+ if (goinfo->type != GAMEOBJECT_TYPE_TRANSPORT)
+ guid = ObjectGuid::Create<HighGuid::GameObject>(map->GetId(), goinfo->entry, map->GenerateLowGuid<HighGuid::GameObject>());
+ else
+ {
+ guid = ObjectGuid::Create<HighGuid::Transport>(map->GenerateLowGuid<HighGuid::Transport>());
m_updateFlag |= UPDATEFLAG_TRANSPORT;
+ }
- Object::_Create(ObjectGuid::Create<HighGuid::GameObject>(map->GetId(), goinfo->entry, guidlow));
+ Object::_Create(guid);
m_goInfo = goinfo;
if (goinfo->type >= MAX_GAMEOBJECT_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);
+ TC_LOG_ERROR("sql.sql", "Gameobject (%s Spawn id: " UI64FMTD " Entry: %u) not created: non-existing GO type '%u' in `gameobject_template`. It will crash client if created.", guid.ToString().c_str(), GetSpawnId(), name_id, goinfo->type);
return false;
}
@@ -888,7 +894,7 @@ bool GameObject::LoadGameObjectFromDB(ObjectGuid::LowType spawnId, Map* map, boo
uint32 artKit = data->artKit;
m_spawnId = spawnId;
- if (!Create(map->GenerateLowGuid<HighGuid::GameObject>(), entry, map, phaseMask, x, y, z, ang, rotation0, rotation1, rotation2, rotation3, animprogress, go_state, artKit))
+ if (!Create(entry, map, phaseMask, x, y, z, ang, rotation0, rotation1, rotation2, rotation3, animprogress, go_state, artKit))
return false;
if (data->phaseid)
@@ -1250,7 +1256,7 @@ void GameObject::Use(Unit* user)
if (sScriptMgr->OnGossipHello(playerUser, this))
return;
- if (AI()->GossipHello(playerUser))
+ if (AI()->GossipHello(playerUser, true))
return;
}
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index a83b04e2a58..40e00531497 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -933,7 +933,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
void RemoveFromWorld() override;
void CleanupsBeforeDelete(bool finalCleanup = true) override;
- bool Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, uint32 phaseMask, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 animprogress, GOState go_state, uint32 artKit = 0);
+ bool Create(uint32 name_id, Map* map, uint32 phaseMask, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 animprogress, GOState go_state, uint32 artKit = 0);
void Update(uint32 p_time) override;
GameObjectTemplate const* GetGOInfo() const { return m_goInfo; }
GameObjectData const* GetGOData() const { return m_goData; }
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 47751548922..0522ef13095 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -2406,7 +2406,7 @@ GameObject* WorldObject::SummonGameObject(uint32 entry, float x, float y, float
Map* map = GetMap();
GameObject* go = new GameObject();
- if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), entry, map, GetPhaseMask(), x, y, z, ang, rotation0, rotation1, rotation2, rotation3, 100, GO_STATE_READY))
+ if (!go->Create(entry, map, GetPhaseMask(), x, y, z, ang, rotation0, rotation1, rotation2, rotation3, 100, GO_STATE_READY))
{
delete go;
return NULL;
diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h
index 000028ef852..aa7b4a4a23e 100644
--- a/src/server/game/Entities/Object/ObjectGuid.h
+++ b/src/server/game/Entities/Object/ObjectGuid.h
@@ -160,7 +160,6 @@ GUID_TRAIT_GLOBAL(HighGuid::CommerceObj)
GUID_TRAIT_GLOBAL(HighGuid::ClientSession)
GUID_TRAIT_REALM_SPECIFIC(HighGuid::Player)
GUID_TRAIT_REALM_SPECIFIC(HighGuid::Item) // This is not exactly correct, there are 2 more unknown parts in highguid: (high >> 10 & 0xFF), (high >> 18 & 0xFFFFFF)
-GUID_TRAIT_REALM_SPECIFIC(HighGuid::Transport)
GUID_TRAIT_REALM_SPECIFIC(HighGuid::Guild)
GUID_TRAIT_MAP_SPECIFIC(HighGuid::WorldTransaction)
GUID_TRAIT_MAP_SPECIFIC(HighGuid::Conversation)
@@ -183,6 +182,19 @@ GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILock)
GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILockTicket)
GUID_TRAIT_MAP_SPECIFIC(HighGuid::Cast)
+// Special case
+// Global transports are loaded from `transports` table, RealmSpecific part is used for them.
+// after worldserver finishes loading, no more global transports can be created, only the ones existing within instances that never change maps
+// here is where MapSpecific comes into play - each map takes over the responsibility to generate transport guids
+// on top of this, regular elevators (GAMEOBJECT_TYPE_TRANSPORT) must also use Transport highguid type, otherwise client will reject seeing other players on them
+template<>
+struct ObjectGuidTraits<HighGuid::Transport>
+{
+ static bool const Global = false;
+ static bool const RealmSpecific = true;
+ static bool const MapSpecific = true;
+};
+
class ObjectGuid;
class PackedGuid;
@@ -207,7 +219,7 @@ class TC_GAME_API ObjectGuid
static typename std::enable_if<ObjectGuidTraits<type>::RealmSpecific, ObjectGuid>::type Create(LowType counter) { return RealmSpecific(type, counter); }
template<HighGuid type>
- static typename std::enable_if<ObjectGuidTraits<type>::MapSpecific, ObjectGuid>::type Create(uint16 mapId, uint32 entry, LowType counter) { return MapSpecific(type, 0, mapId, 0, entry, counter); }
+ static typename std::enable_if<ObjectGuidTraits<type>::MapSpecific && type != HighGuid::Transport, ObjectGuid>::type Create(uint16 mapId, uint32 entry, LowType counter) { return MapSpecific(type, 0, mapId, 0, entry, counter); }
template<HighGuid type>
static typename std::enable_if<ObjectGuidTraits<type>::MapSpecific, ObjectGuid>::type Create(uint8 subType, uint16 mapId, uint32 entry, LowType counter) { return MapSpecific(type, subType, mapId, 0, entry, counter); }
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index fb7ba8f22b7..06036f5cbf7 100644
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -37,9 +37,9 @@
#define PET_XP_FACTOR 0.05f
Pet::Pet(Player* owner, PetType type) :
- Guardian(NULL, owner, true), m_usedTalentCount(0), m_removed(false),
+ Guardian(NULL, owner, true), m_removed(false),
m_petType(type), m_duration(0), m_loading(false), m_groupUpdateMask(0),
- m_declinedname(NULL)
+ m_declinedname(NULL), m_petSpecialization(0)
{
ASSERT(GetOwner());
@@ -312,8 +312,6 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
owner->SetMinion(this, true);
map->AddToMap(this->ToCreature());
- InitTalentForLevel(); // set original talents points before spell loading
-
uint32 timediff = uint32(time(NULL) - fields[13].GetUInt32());
_LoadAuras(timediff);
@@ -323,23 +321,28 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
m_charmInfo->LoadPetActionBar(fields[12].GetString());
_LoadSpells();
- InitTalentForLevel(); // re-init to check talent count
_LoadSpellCooldowns();
LearnPetPassives();
InitLevelupSpellsForLevel();
CastPetAuras(current);
}
- CleanupActionBar(); // remove unknown spells from action bar after load
-
TC_LOG_DEBUG("entities.pet", "New Pet has %s", GetGUID().ToString().c_str());
- owner->PetSpellInitialize();
+ uint16 specId = fields[16].GetUInt16();
+ if (ChrSpecializationEntry const* petSpec = sChrSpecializationStore.LookupEntry(specId))
+ specId = sDB2Manager.GetChrSpecializationByIndex(owner->HasAuraType(SPELL_AURA_OVERRIDE_PET_SPECS) ? PET_SPEC_OVERRIDE_CLASS_INDEX : 0, petSpec->OrderIndex)->ID;
- SetGroupUpdateFlag(GROUP_UPDATE_PET_FULL);
+ SetSpecialization(specId);
- // TODO: 6.x remove/update pet talents
- //owner->SendTalentsInfoData(true);
+ // The SetSpecialization function will run these functions if the pet's spec is not 0
+ if (!GetSpecialization())
+ {
+ CleanupActionBar(); // remove unknown spells from action bar after load
+ owner->PetSpellInitialize();
+ }
+
+ SetGroupUpdateFlag(GROUP_UPDATE_PET_FULL);
if (getPetType() == HUNTER_PET)
{
@@ -415,8 +418,6 @@ void Pet::SavePetToDB(PetSaveMode mode)
if (mode >= PET_SAVE_AS_CURRENT)
{
ObjectGuid::LowType ownerLowGUID = GetOwnerGUID().GetCounter();
- std::string name = m_name;
- CharacterDatabase.EscapeString(name);
trans = CharacterDatabase.BeginTransaction();
// remove current data
@@ -445,34 +446,28 @@ void Pet::SavePetToDB(PetSaveMode mode)
}
// save pet
- std::ostringstream ss;
- ss << "INSERT INTO character_pet (id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType) "
- << "VALUES ("
- << m_charmInfo->GetPetNumber() << ','
- << GetEntry() << ','
- << ownerLowGUID << ','
- << GetNativeDisplayId() << ','
- << uint32(getLevel()) << ','
- << GetUInt32Value(UNIT_FIELD_PETEXPERIENCE) << ','
- << uint32(GetReactState()) << ','
- << uint32(mode) << ", '"
- << name.c_str() << "', "
- << uint32(HasByteFlag(UNIT_FIELD_BYTES_2, 2, UNIT_CAN_BE_RENAMED) ? 0 : 1) << ','
- << curhealth << ','
- << curmana << ", '";
-
- for (uint32 i = ACTION_BAR_INDEX_START; i < ACTION_BAR_INDEX_END; ++i)
- {
- ss << uint32(m_charmInfo->GetActionBarEntry(i)->GetType()) << ' '
- << uint32(m_charmInfo->GetActionBarEntry(i)->GetAction()) << ' ';
- };
-
- ss << "', "
- << time(NULL) << ','
- << GetUInt32Value(UNIT_CREATED_BY_SPELL) << ','
- << uint32(getPetType()) << ')';
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET);
+ stmt->setUInt32(0, m_charmInfo->GetPetNumber());
+ stmt->setUInt32(1, GetEntry());
+ stmt->setUInt64(2, ownerLowGUID);
+ stmt->setUInt32(3, GetNativeDisplayId());
+ stmt->setUInt8(4, getLevel());
+ stmt->setUInt32(5, GetUInt32Value(UNIT_FIELD_PETEXPERIENCE));
+ stmt->setUInt8(6, GetReactState());
+ stmt->setInt16(7, mode);
+ stmt->setString(8, m_name);
+ stmt->setUInt8(9, HasByteFlag(UNIT_FIELD_BYTES_2, 2, UNIT_CAN_BE_RENAMED) ? 0 : 1);
+ stmt->setUInt32(10, curhealth);
+ stmt->setUInt32(11, curmana);
+
+ stmt->setString(12, GenerateActionBarData());
+
+ stmt->setUInt32(13, time(NULL));
+ stmt->setUInt32(14, GetUInt32Value(UNIT_CREATED_BY_SPELL));
+ stmt->setUInt8(15, getPetType());
+ stmt->setUInt16(16, m_petSpecialization);
+ trans->Append(stmt);
- trans->Append(ss.str().c_str());
CharacterDatabase.CommitTransaction(trans);
}
// delete
@@ -724,7 +719,6 @@ void Pet::GivePetLevel(uint8 level)
InitStatsForLevel(level);
InitLevelupSpellsForLevel();
- InitTalentForLevel();
}
bool Pet::CreateBaseAtCreature(Creature* creature)
@@ -1436,6 +1430,22 @@ bool Pet::learnSpell(uint32 spell_id)
return true;
}
+void Pet::learnSpells(std::vector<uint32> const& spellIds)
+{
+ WorldPackets::Pet::PetLearnedSpells packet;
+
+ for (uint32 spell : spellIds)
+ {
+ if (!addSpell(spell))
+ continue;
+
+ packet.Spells.push_back(spell);
+ }
+
+ if (!m_loading)
+ GetOwner()->GetSession()->SendPacket(packet.Write());
+}
+
void Pet::InitLevelupSpellsForLevel()
{
uint8 level = getLevel();
@@ -1488,6 +1498,22 @@ bool Pet::unlearnSpell(uint32 spell_id, bool learn_prev, bool clear_ab)
return false;
}
+void Pet::unlearnSpells(std::vector<uint32> const& spellIds, bool learn_prev, bool clear_ab)
+{
+ WorldPackets::Pet::PetUnlearnedSpells packet;
+
+ for (uint32 spell : spellIds)
+ {
+ if (!removeSpell(spell, learn_prev, clear_ab))
+ continue;
+
+ packet.Spells.push_back(spell);
+ }
+
+ if (!m_loading)
+ GetOwner()->GetSession()->SendPacket(packet.Write());
+}
+
bool Pet::removeSpell(uint32 spell_id, bool learn_prev, bool clear_ab)
{
PetSpellMap::iterator itr = m_spells.find(spell_id);
@@ -1513,7 +1539,7 @@ bool Pet::removeSpell(uint32 spell_id, bool learn_prev, bool clear_ab)
}
// if remove last rank or non-ranked then update action bar at server and client if need
- if (clear_ab && !learn_prev && m_charmInfo->RemoveSpellFromActionBar(spell_id))
+ if (m_charmInfo->RemoveSpellFromActionBar(spell_id) && !learn_prev && clear_ab)
{
if (!m_loading)
GetOwner()->PetSpellInitialize(); // need update action bar for last removed rank
@@ -1549,182 +1575,6 @@ void Pet::InitPetCreateSpells()
CastPetAuras(false);
}
-bool Pet::resetTalents()
-{
- /* TODO: 6.x remove pet talents
- Player* player = GetOwner();
-
- // not need after this call
- if (player->HasAtLoginFlag(AT_LOGIN_RESET_PET_TALENTS))
- player->RemoveAtLoginFlag(AT_LOGIN_RESET_PET_TALENTS, true);
-
- CreatureTemplate const* ci = GetCreatureTemplate();
- if (!ci)
- return false;
- // Check pet talent type
- CreatureFamilyEntry const* pet_family = sCreatureFamilyStore.LookupEntry(ci->family);
- if (!pet_family || pet_family->PetTalentType < 0)
- return false;
-
- uint8 level = getLevel();
- uint32 talentPointsForLevel = GetMaxTalentPointsForLevel(level);
-
- if (m_usedTalentCount == 0)
- {
- SetFreeTalentPoints(talentPointsForLevel);
- return false;
- }
-
- for (uint32 i = 0; i < sTalentStore.GetNumRows(); ++i)
- {
- TalentEntry const* talentInfo = sTalentStore.LookupEntry(i);
-
- if (!talentInfo)
- continue;
-
- TalentTabEntry const* talentTabInfo = sTalentTabStore.LookupEntry(talentInfo->TalentTab);
-
- if (!talentTabInfo)
- continue;
-
- // unlearn only talents for pets family talent type
- if (!((1 << pet_family->PetTalentType) & talentTabInfo->petTalentMask))
- continue;
-
- for (uint8 j = 0; j < MAX_TALENT_RANK; ++j)
- {
- for (PetSpellMap::const_iterator itr = m_spells.begin(); itr != m_spells.end();)
- {
- if (itr->second.state == PETSPELL_REMOVED)
- {
- ++itr;
- continue;
- }
- // remove learned spells (all ranks)
- uint32 itrFirstId = sSpellMgr->GetFirstSpellInChain(itr->first);
-
- // unlearn if first rank is talent or learned by talent
- if (itrFirstId == talentInfo->RankID[j] || sSpellMgr->IsSpellLearnToSpell(talentInfo->RankID[j], itrFirstId))
- {
- unlearnSpell(itr->first, false);
- itr = m_spells.begin();
- continue;
- }
- else
- ++itr;
- }
- }
- }
-
- SetFreeTalentPoints(talentPointsForLevel);
-
- if (!m_loading)
- player->PetSpellInitialize();*/
- return true;
-}
-
-void Pet::resetTalentsForAllPetsOf(Player* /*owner*/, Pet* /*onlinePet*/ /*= NULL*/)
-{
- /* TODO: 6.x remove pet talents
- // not need after this call
- if (owner->HasAtLoginFlag(AT_LOGIN_RESET_PET_TALENTS))
- owner->RemoveAtLoginFlag(AT_LOGIN_RESET_PET_TALENTS, true);
-
- // reset for online
- if (onlinePet)
- onlinePet->resetTalents();
-
- // now need only reset for offline pets (all pets except online case)
- uint32 exceptPetNumber = onlinePet ? onlinePet->GetCharmInfo()->GetPetNumber() : 0;
-
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PET);
- stmt->setUInt64(0, owner->GetGUID().GetCounter());
- stmt->setUInt32(1, exceptPetNumber);
- PreparedQueryResult resultPets = CharacterDatabase.Query(stmt);
-
- // no offline pets
- if (!resultPets)
- return;
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_SPELL_LIST);
- stmt->setUInt64(0, owner->GetGUID().GetCounter());
- stmt->setUInt32(1, exceptPetNumber);
- PreparedQueryResult result = CharacterDatabase.Query(stmt);
-
- if (!result)
- return;
-
- bool need_comma = false;
- std::ostringstream ss;
- ss << "DELETE FROM pet_spell WHERE guid IN (";
-
- do
- {
- Field* fields = resultPets->Fetch();
-
- uint32 id = fields[0].GetUInt32();
-
- if (need_comma)
- ss << ',';
-
- ss << id;
-
- need_comma = true;
- } while (resultPets->NextRow());
-
- ss << ") AND spell IN (";
-
- bool need_execute = false;
- do
- {
- Field* fields = result->Fetch();
-
- uint32 spell = fields[0].GetUInt32();
-
- if (!GetTalentSpellCost(spell))
- continue;
-
- if (need_execute)
- ss << ',';
-
- ss << spell;
-
- need_execute = true;
- }
- while (result->NextRow());
-
- if (!need_execute)
- return;
-
- ss << ')';
-
- CharacterDatabase.Execute(ss.str().c_str());*/
-}
-
-void Pet::InitTalentForLevel()
-{
- /* TODO: 6.x remove/update pet talents
- uint8 level = getLevel();
- uint32 talentPointsForLevel = GetMaxTalentPointsForLevel(level);
- // Reset talents in case low level (on level down) or wrong points for level (hunter can unlearn TP increase talent)
- if (talentPointsForLevel == 0 || m_usedTalentCount > talentPointsForLevel)
- resetTalents(); // Remove all talent points
-
- SetFreeTalentPoints(talentPointsForLevel - m_usedTalentCount);
-
- if (!m_loading)
- GetOwner()->SendTalentsInfoData(true);
- */
-}
-
-uint8 Pet::GetMaxTalentPointsForLevel(uint8 level) const
-{
- uint8 points = (level >= 20) ? ((level - 16) / 4) : 0;
- // Mod points from owner SPELL_AURA_MOD_PET_TALENT_POINTS
- points += GetOwner()->GetTotalAuraModifier(SPELL_AURA_MOD_PET_TALENT_POINTS);
- return points;
-}
-
void Pet::ToggleAutocast(SpellInfo const* spellInfo, bool apply)
{
ASSERT(spellInfo);
@@ -1940,3 +1790,96 @@ void Pet::ResetGroupUpdateFlag()
if (GetOwner()->GetGroup())
GetOwner()->RemoveGroupUpdateFlag(GROUP_UPDATE_FLAG_PET);
}
+
+void Pet::LearnSpecializationSpells()
+{
+ std::vector<uint32> learnedSpells;
+
+ if (std::vector<SpecializationSpellsEntry const*> const* specSpells = sDB2Manager.GetSpecializationSpells(m_petSpecialization))
+ {
+ for (size_t j = 0; j < specSpells->size(); ++j)
+ {
+ SpecializationSpellsEntry const* specSpell = specSpells->at(j);
+ SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(specSpell->SpellID);
+ if (!spellInfo || spellInfo->SpellLevel > getLevel())
+ continue;
+
+ learnedSpells.push_back(specSpell->SpellID);
+ }
+ }
+
+ learnSpells(learnedSpells);
+}
+
+void Pet::RemoveSpecializationSpells(bool clearActionBar)
+{
+ std::vector<uint32> unlearnedSpells;
+
+ for (uint32 i = 0; i < MAX_SPECIALIZATIONS; ++i)
+ {
+ if (ChrSpecializationEntry const* specialization = sDB2Manager.GetChrSpecializationByIndex(0, i))
+ {
+ if (std::vector<SpecializationSpellsEntry const*> const* specSpells = sDB2Manager.GetSpecializationSpells(specialization->ID))
+ {
+ for (size_t j = 0; j < specSpells->size(); ++j)
+ {
+ SpecializationSpellsEntry const* specSpell = specSpells->at(j);
+ unlearnedSpells.push_back(specSpell->SpellID);
+ }
+ }
+ }
+
+ if (ChrSpecializationEntry const* specialization = sDB2Manager.GetChrSpecializationByIndex(PET_SPEC_OVERRIDE_CLASS_INDEX, i))
+ {
+ if (std::vector<SpecializationSpellsEntry const*> const* specSpells = sDB2Manager.GetSpecializationSpells(specialization->ID))
+ {
+ for (size_t j = 0; j < specSpells->size(); ++j)
+ {
+ SpecializationSpellsEntry const* specSpell = specSpells->at(j);
+ unlearnedSpells.push_back(specSpell->SpellID);
+ }
+ }
+ }
+ }
+
+ unlearnSpells(unlearnedSpells, true, clearActionBar);
+}
+
+void Pet::SetSpecialization(uint16 spec)
+{
+ if (m_petSpecialization == spec)
+ return;
+
+ // remove all the old spec's specalization spells, set the new spec, then add the new spec's spells
+ // clearActionBars is false because we'll be updating the pet actionbar later so we don't have to do it now
+ RemoveSpecializationSpells(false);
+ if (!sChrSpecializationStore.LookupEntry(spec))
+ {
+ m_petSpecialization = 0;
+ return;
+ }
+
+ m_petSpecialization = spec;
+ LearnSpecializationSpells();
+
+ // resend SMSG_PET_SPELLS_MESSAGE to remove old specialization spells from the pet action bar
+ CleanupActionBar();
+ GetOwner()->PetSpellInitialize();
+
+ WorldPackets::Pet::SetPetSpecialization setPetSpecialization;
+ setPetSpecialization.SpecID = m_petSpecialization;
+ GetOwner()->GetSession()->SendPacket(setPetSpecialization.Write());
+}
+
+std::string Pet::GenerateActionBarData() const
+{
+ std::ostringstream ss;
+
+ for (uint32 i = ACTION_BAR_INDEX_START; i < ACTION_BAR_INDEX_END; ++i)
+ {
+ ss << uint32(m_charmInfo->GetActionBarEntry(i)->GetType()) << ' '
+ << uint32(m_charmInfo->GetActionBarEntry(i)->GetAction()) << ' ';
+ }
+
+ return ss.str();
+}
diff --git a/src/server/game/Entities/Pet/Pet.h b/src/server/game/Entities/Pet/Pet.h
index 170b881fa50..38d78ec181b 100644
--- a/src/server/game/Entities/Pet/Pet.h
+++ b/src/server/game/Entities/Pet/Pet.h
@@ -119,26 +119,24 @@ class TC_GAME_API Pet : public Guardian
bool addSpell(uint32 spellId, ActiveStates active = ACT_DECIDE, PetSpellState state = PETSPELL_NEW, PetSpellType type = PETSPELL_NORMAL);
bool learnSpell(uint32 spell_id);
+ void learnSpells(std::vector<uint32> const& spellIds);
void learnSpellHighRank(uint32 spellid);
void InitLevelupSpellsForLevel();
bool unlearnSpell(uint32 spell_id, bool learn_prev, bool clear_ab = true);
+ void unlearnSpells(std::vector<uint32> const& spellIds, bool learn_prev, bool clear_ab = true);
bool removeSpell(uint32 spell_id, bool learn_prev, bool clear_ab = true);
void CleanupActionBar();
+ std::string GenerateActionBarData() const;
PetSpellMap m_spells;
AutoSpellList m_autospells;
void InitPetCreateSpells();
- bool resetTalents();
- static void resetTalentsForAllPetsOf(Player* owner, Pet* online_pet = nullptr);
- void InitTalentForLevel();
-
- uint8 GetMaxTalentPointsForLevel(uint8 level) const;
- uint8 GetFreeTalentPoints() const { return GetByteValue(UNIT_FIELD_BYTES_1, 1); }
- void SetFreeTalentPoints(uint8 points) { SetByteValue(UNIT_FIELD_BYTES_1, 1, points); }
-
- uint32 m_usedTalentCount;
+ uint16 GetSpecialization() { return m_petSpecialization; }
+ void SetSpecialization(uint16 spec);
+ void LearnSpecializationSpells();
+ void RemoveSpecializationSpells(bool clearActionBar);
uint32 GetGroupUpdateFlag() const { return m_groupUpdateMask; }
void SetGroupUpdateFlag(uint32 flag);
@@ -159,6 +157,8 @@ class TC_GAME_API Pet : public Guardian
DeclinedName *m_declinedname;
+ uint16 m_petSpecialization;
+
private:
void SaveToDB(uint32, uint32, uint32) override // override of Creature::SaveToDB - must not be called
{
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index e119c1d8199..c35e9bc99ca 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1220,7 +1220,7 @@ void Player::Update(uint32 p_time)
m_zoneUpdateTimer -= p_time;
}
- if (m_timeSyncTimer > 0)
+ if (m_timeSyncTimer > 0 && !IsBeingTeleportedFar())
{
if (p_time >= m_timeSyncTimer)
SendTimeSync();
@@ -1635,18 +1635,10 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
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 = static_cast<Position>(m_teleport_dest);
- packet.Reason = !(options & TELE_TO_SEAMLESS) ? NEW_WORLD_NORMAL : NEW_WORLD_SEAMLESS;
- SendDirectMessage(packet.Write());
+ WorldPackets::Movement::SuspendToken suspendToken;
+ suspendToken.SequenceIndex = m_movementCounter; // not incrementing
+ suspendToken.Reason = options & TELE_TO_SEAMLESS ? 2 : 1;
+ SendDirectMessage(suspendToken.Write());
}
// move packet sent by client always after far teleport
@@ -20140,7 +20132,7 @@ void Player::PetSpellInitialize()
WorldPackets::Pet::PetSpells petSpellsPacket;
petSpellsPacket.PetGUID = pet->GetGUID();
petSpellsPacket._CreatureFamily = pet->GetCreatureTemplate()->family; // creature family (required for pet talents)
- //petSpellsPacket.Specialization = pet->GetSpecialization(); NYI
+ petSpellsPacket.Specialization = pet->GetSpecialization();
petSpellsPacket.TimeLimit = pet->GetDuration();
petSpellsPacket.ReactState = pet->GetReactState();
petSpellsPacket.CommandState = charmInfo->GetCommandState();
@@ -21968,7 +21960,7 @@ void Player::UpdateTriggerVisibility()
creature->BuildValuesUpdateBlockForPlayer(&udata, this);
creature->RemoveFieldNotifyFlag(UF_FLAG_PUBLIC);
}
- else if (itr->IsGameObject())
+ else if (itr->IsAnyTypeGameObject())
{
GameObject* go = GetMap()->GetGameObject(*itr);
if (!go)
@@ -22186,6 +22178,14 @@ void Player::SetGroup(Group* group, int8 subgroup)
void Player::SendInitialPacketsBeforeAddToMap()
{
+ if (!(m_teleport_options & TELE_TO_SEAMLESS))
+ {
+ m_movementCounter = 0;
+ ResetTimeSync();
+ }
+
+ SendTimeSync();
+
/// Pass 'this' as argument because we're not stored in ObjectAccessor yet
GetSocial()->SendSocialList(this, SOCIAL_FLAG_ALL);
@@ -22275,9 +22275,6 @@ void Player::SendInitialPacketsAfterAddToMap()
GetZoneAndAreaId(newzone, newarea);
UpdateZone(newzone, newarea); // also call SendInitWorldStates();
- ResetTimeSync();
- SendTimeSync();
-
GetSession()->SendLoadCUFProfiles();
CastSpell(this, 836, true); // LOGINEFFECT
@@ -25581,14 +25578,6 @@ void Player::DeleteGarrison()
}
}
-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);
- packet.MoverGUID = GetGUID();
- packet.SequenceIndex = m_movementCounter++;
- SendMessageToSet(packet.Write(), true);
-}
-
void Player::SendMovementSetCollisionHeight(float height)
{
WorldPackets::Movement::MoveSetCollisionHeight setCollisionHeight;
@@ -25746,7 +25735,6 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy
{
case SUMMON_PET:
pet->InitPetCreateSpells();
- pet->InitTalentForLevel();
pet->SavePetToDB(PET_SAVE_AS_CURRENT);
PetSpellInitialize();
break;
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index e46712d0580..4e4e116f65e 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2417,10 +2417,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void ValidateMovementInfo(MovementInfo* mi);
- /*! These methods send different packets to the client in apply and unapply case.
- These methods are only sent to the current unit.
- */
- void SendMovementSetCanTransitionBetweenSwimAndFly(bool apply);
void SendMovementSetCollisionHeight(float height);
bool CanFly() const override { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY); }
diff --git a/src/server/game/Entities/Taxi/TaxiPathGraph.cpp b/src/server/game/Entities/Taxi/TaxiPathGraph.cpp
index 709a5debf4d..3ff288b0c50 100644
--- a/src/server/game/Entities/Taxi/TaxiPathGraph.cpp
+++ b/src/server/game/Entities/Taxi/TaxiPathGraph.cpp
@@ -184,8 +184,9 @@ uint32 TaxiPathGraph::EdgeCost::EvaluateDistance(Player const* player) const
if (!(To->Flags & requireFlag))
return std::numeric_limits<uint16>::max();
- //if (To->ConditionID && !player->MeetsCondition(To->ConditionID))
- // return std::numeric_limits<uint16>::max();
+ if (PlayerConditionEntry const* condition = sPlayerConditionStore.LookupEntry(To->ConditionID))
+ if (!sConditionMgr->IsPlayerMeetingCondition(player, condition))
+ return std::numeric_limits<uint16>::max();
return Distance;
}
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index c3b8ef8e07e..035bc4d8703 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -301,7 +301,7 @@ void Player::UpdateAttackPowerAndDamage(bool ranged)
float val2 = 0.0f;
float level = float(getLevel());
- ChrClassesEntry const* entry = sChrClassesStore.LookupEntry(getClass());
+ ChrClassesEntry const* entry = sChrClassesStore.AssertEntry(getClass());
UnitMods unitMod = ranged ? UNIT_MOD_ATTACK_POWER_RANGED : UNIT_MOD_ATTACK_POWER;
uint16 index = UNIT_FIELD_ATTACK_POWER;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index c473e4fb535..ab16b8275c9 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -9952,20 +9952,20 @@ void Unit::SetSpeedRate(UnitMoveType mtype, float rate)
pet->SetSpeedRate(mtype, m_speed_rate[mtype]);
}
- if (GetTypeId() == TYPEID_PLAYER && ToPlayer()->m_mover->GetTypeId() == TYPEID_PLAYER)
+ if (Player* playerMover = GetPlayerMover()) // unit controlled by a player.
{
// Send notification to self
WorldPackets::Movement::MoveSetSpeed selfpacket(moveTypeToOpcode[mtype][1]);
selfpacket.MoverGUID = GetGUID();
selfpacket.SequenceIndex = m_movementCounter++;
selfpacket.Speed = GetSpeed(mtype);
- ToPlayer()->GetSession()->SendPacket(selfpacket.Write());
+ playerMover->GetSession()->SendPacket(selfpacket.Write());
// Send notification to other players
WorldPackets::Movement::MoveUpdateSpeed packet(moveTypeToOpcode[mtype][2]);
packet.movementInfo = &m_movementInfo;
packet.Speed = GetSpeed(mtype);
- SendMessageToSet(packet.Write(), false);
+ playerMover->SendMessageToSet(packet.Write(), false);
}
else
{
@@ -11535,6 +11535,20 @@ void CharmInfo::SetSpellAutocast(SpellInfo const* spellInfo, bool state)
}
}
+Unit* Unit::GetMover() const
+{
+ if (Player const* player = ToPlayer())
+ return player->m_mover;
+ return nullptr;
+}
+
+Player* Unit::GetPlayerMover() const
+{
+ if (Unit* mover = GetMover())
+ return mover->ToPlayer();
+ return nullptr;
+}
+
bool Unit::isFrozen() const
{
return HasAuraState(AURA_STATE_FROZEN);
@@ -13417,12 +13431,16 @@ void Unit::SetRooted(bool apply, bool packetOnly /*= false*/)
{ SMSG_MOVE_SPLINE_ROOT, SMSG_MOVE_ROOT }
};
- if (GetTypeId() == TYPEID_PLAYER && ToPlayer()->m_mover->GetTypeId() == TYPEID_PLAYER)
+ if (Player* playerMover = GetPlayerMover()) // unit controlled by a player.
{
WorldPackets::Movement::MoveSetFlag packet(rootOpcodeTable[apply][1]);
packet.MoverGUID = GetGUID();
packet.SequenceIndex = m_movementCounter++;
- SendMessageToSet(packet.Write(), true);
+ playerMover->SendDirectMessage(packet.Write());
+
+ WorldPackets::Movement::MoveUpdate moveUpdate;
+ moveUpdate.movementInfo = &m_movementInfo;
+ SendMessageToSet(moveUpdate.Write(), playerMover);
}
else
{
@@ -14903,8 +14921,9 @@ void Unit::SendTeleportPacket(Position& pos)
WorldPackets::Movement::MoveUpdateTeleport moveUpdateTeleport;
moveUpdateTeleport.movementInfo = &m_movementInfo;
+ Unit* broadcastSource = this;
- if (GetTypeId() == TYPEID_PLAYER)
+ if (Player* playerMover = GetPlayerMover())
{
WorldPackets::Movement::MoveTeleport moveTeleport;
moveTeleport.MoverGUID = GetGUID();
@@ -14914,7 +14933,9 @@ void Unit::SendTeleportPacket(Position& pos)
moveTeleport.TransportGUID = GetTransGUID();
moveTeleport.Facing = pos.GetOrientation();
moveTeleport.SequenceIndex = m_movementCounter++;
- ToPlayer()->SendDirectMessage(moveTeleport.Write());
+ playerMover->SendDirectMessage(moveTeleport.Write());
+
+ broadcastSource = playerMover;
}
else
{
@@ -14926,7 +14947,7 @@ void Unit::SendTeleportPacket(Position& pos)
}
// Broadcast the packet to everyone except self.
- SendMessageToSet(moveUpdateTeleport.Write(), false);
+ broadcastSource->SendMessageToSet(moveUpdateTeleport.Write(), false);
}
bool Unit::UpdatePosition(float x, float y, float z, float orientation, bool teleport)
@@ -15307,14 +15328,16 @@ bool Unit::SetDisableGravity(bool disable, bool packetOnly /*= false*/)
{ SMSG_MOVE_SPLINE_DISABLE_GRAVITY, SMSG_MOVE_DISABLE_GRAVITY }
};
- bool player = GetTypeId() == TYPEID_PLAYER && ToPlayer()->m_mover->GetTypeId() == TYPEID_PLAYER;
-
- if (player)
+ if (Player* playerMover = GetPlayerMover())
{
WorldPackets::Movement::MoveSetFlag packet(gravityOpcodeTable[disable][1]);
packet.MoverGUID = GetGUID();
packet.SequenceIndex = m_movementCounter++;
- SendMessageToSet(packet.Write(), true);
+ playerMover->SendDirectMessage(packet.Write());
+
+ WorldPackets::Movement::MoveUpdate moveUpdate;
+ moveUpdate.movementInfo = &m_movementInfo;
+ SendMessageToSet(moveUpdate.Write(), playerMover);
}
else
{
@@ -15385,16 +15408,19 @@ bool Unit::SetCanFly(bool enable)
{ SMSG_MOVE_SPLINE_SET_FLYING, SMSG_MOVE_SET_CAN_FLY }
};
- bool player = GetTypeId() == TYPEID_PLAYER && ToPlayer()->m_mover->GetTypeId() == TYPEID_PLAYER;
- if (!enable && player)
+ if (!enable && GetTypeId() == TYPEID_PLAYER)
ToPlayer()->SetFallInformation(0, GetPositionZ());
- if (player)
+ if (Player* playerMover = GetPlayerMover())
{
WorldPackets::Movement::MoveSetFlag packet(flyOpcodeTable[enable][1]);
packet.MoverGUID = GetGUID();
packet.SequenceIndex = m_movementCounter++;
- SendMessageToSet(packet.Write(), true);
+ playerMover->SendDirectMessage(packet.Write());
+
+ WorldPackets::Movement::MoveUpdate moveUpdate;
+ moveUpdate.movementInfo = &m_movementInfo;
+ SendMessageToSet(moveUpdate.Write(), playerMover);
}
else
{
@@ -15425,14 +15451,16 @@ bool Unit::SetWaterWalking(bool enable, bool packetOnly /*= false */)
{ SMSG_MOVE_SPLINE_SET_WATER_WALK, SMSG_MOVE_SET_WATER_WALK }
};
- bool player = GetTypeId() == TYPEID_PLAYER && ToPlayer()->m_mover->GetTypeId() == TYPEID_PLAYER;
-
- if (player)
+ if (Player* playerMover = GetPlayerMover())
{
WorldPackets::Movement::MoveSetFlag packet(waterWalkingOpcodeTable[enable][1]);
packet.MoverGUID = GetGUID();
packet.SequenceIndex = m_movementCounter++;
- SendMessageToSet(packet.Write(), true);
+ playerMover->SendDirectMessage(packet.Write());
+
+ WorldPackets::Movement::MoveUpdate moveUpdate;
+ moveUpdate.movementInfo = &m_movementInfo;
+ SendMessageToSet(moveUpdate.Write(), playerMover);
}
else
{
@@ -15463,14 +15491,16 @@ bool Unit::SetFeatherFall(bool enable, bool packetOnly /*= false */)
{ SMSG_MOVE_SPLINE_SET_FEATHER_FALL, SMSG_MOVE_SET_FEATHER_FALL }
};
- bool player = GetTypeId() == TYPEID_PLAYER && ToPlayer()->m_mover->GetTypeId() == TYPEID_PLAYER;
-
- if (player)
+ if (Player* playerMover = GetPlayerMover())
{
WorldPackets::Movement::MoveSetFlag packet(featherFallOpcodeTable[enable][1]);
packet.MoverGUID = GetGUID();
packet.SequenceIndex = m_movementCounter++;
- SendMessageToSet(packet.Write(), true);
+ playerMover->SendDirectMessage(packet.Write());
+
+ WorldPackets::Movement::MoveUpdate moveUpdate;
+ moveUpdate.movementInfo = &m_movementInfo;
+ SendMessageToSet(moveUpdate.Write(), playerMover);
}
else
{
@@ -15516,14 +15546,16 @@ bool Unit::SetHover(bool enable, bool packetOnly /*= false*/)
{ SMSG_MOVE_SPLINE_SET_HOVER, SMSG_MOVE_SET_HOVERING }
};
- bool player = GetTypeId() == TYPEID_PLAYER && ToPlayer()->m_mover->GetTypeId() == TYPEID_PLAYER;
-
- if (player)
+ if (Player* playerMover = GetPlayerMover())
{
WorldPackets::Movement::MoveSetFlag packet(hoverOpcodeTable[enable][1]);
packet.MoverGUID = GetGUID();
packet.SequenceIndex = m_movementCounter++;
- SendMessageToSet(packet.Write(), true);
+ playerMover->SendDirectMessage(packet.Write());
+
+ WorldPackets::Movement::MoveUpdate moveUpdate;
+ moveUpdate.movementInfo = &m_movementInfo;
+ SendMessageToSet(moveUpdate.Write(), playerMover);
}
else
{
@@ -15551,14 +15583,16 @@ bool Unit::SetCollision(bool disable)
{ SMSG_MOVE_SPLINE_DISABLE_COLLISION, SMSG_MOVE_DISABLE_COLLISION }
};
- bool player = GetTypeId() == TYPEID_PLAYER && ToPlayer()->m_mover->GetTypeId() == TYPEID_PLAYER;
-
- if (player)
+ if (Player* playerMover = GetPlayerMover())
{
WorldPackets::Movement::MoveSetFlag packet(collisionOpcodeTable[disable][1]);
packet.MoverGUID = GetGUID();
packet.SequenceIndex = m_movementCounter++;
- SendMessageToSet(packet.Write(), true);
+ playerMover->SendDirectMessage(packet.Write());
+
+ WorldPackets::Movement::MoveUpdate moveUpdate;
+ moveUpdate.movementInfo = &m_movementInfo;
+ SendMessageToSet(moveUpdate.Write(), playerMover);
}
else
{
@@ -15570,6 +15604,40 @@ bool Unit::SetCollision(bool disable)
return true;
}
+bool Unit::SetCanTransitionBetweenSwimAndFly(bool enable)
+{
+ if (GetTypeId() != TYPEID_PLAYER)
+ return false;
+
+ if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS))
+ return false;
+
+ if (enable)
+ AddExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS);
+ else
+ RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS);
+
+ static OpcodeServer const swimToFlyTransOpcodeTable[2] =
+ {
+ SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY,
+ SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY
+ };
+
+ if (Player* playerMover = GetPlayerMover())
+ {
+ WorldPackets::Movement::MoveSetFlag packet(swimToFlyTransOpcodeTable[enable]);
+ packet.MoverGUID = GetGUID();
+ packet.SequenceIndex = m_movementCounter++;
+ playerMover->SendDirectMessage(packet.Write());
+
+ WorldPackets::Movement::MoveUpdate moveUpdate;
+ moveUpdate.movementInfo = &m_movementInfo;
+ SendMessageToSet(moveUpdate.Write(), playerMover);
+ }
+
+ return true;
+}
+
void Unit::SendSetVehicleRecId(uint32 vehicleId)
{
if (Player* player = ToPlayer())
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 2032b8210d3..15792d4f543 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1686,6 +1686,7 @@ class TC_GAME_API Unit : public WorldObject
bool SetFeatherFall(bool enable, bool packetOnly = false);
bool SetHover(bool enable, bool packetOnly = false);
bool SetCollision(bool disable);
+ bool SetCanTransitionBetweenSwimAndFly(bool enable);
void SendSetVehicleRecId(uint32 vehicleId);
void SetInFront(WorldObject const* target);
@@ -1759,7 +1760,8 @@ class TC_GAME_API Unit : public WorldObject
CharmInfo* InitCharmInfo();
void DeleteCharmInfo();
void UpdateCharmAI();
- //Player* GetMoverSource() const;
+ Unit* GetMover() const;
+ Player* GetPlayerMover() const;
Player* m_movedPlayer;
SharedVisionList const& GetSharedVisionList() { return m_sharedVision; }
void AddPlayerToVision(Player* player);
diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp
index 59315b7ffc7..233fc1fa311 100644
--- a/src/server/game/Garrison/Garrison.cpp
+++ b/src/server/game/Garrison/Garrison.cpp
@@ -715,8 +715,7 @@ GameObject* Garrison::Plot::CreateGameObject(Map* map, GarrisonFactionIndex fact
Position const& pos = PacketInfo.PlotPos;
GameObject* building = new GameObject();
- if (!building->Create(map->GenerateLowGuid<HighGuid::GameObject>(), entry, map, 0, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(),
- 0.0f, 0.0f, 0.0f, 0.0f, 255, GO_STATE_READY))
+ if (!building->Create(entry, map, 0, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 255, GO_STATE_READY))
{
delete building;
return nullptr;
@@ -728,7 +727,7 @@ GameObject* Garrison::Plot::CreateGameObject(Map* map, GarrisonFactionIndex fact
{
Position const& pos2 = finalizeInfo->FactionInfo[faction].Pos;
GameObject* finalizer = new GameObject();
- if (finalizer->Create(map->GenerateLowGuid<HighGuid::GameObject>(), finalizeInfo->FactionInfo[faction].GameObjectId, map, 0, pos2.GetPositionX(), pos2.GetPositionY(),
+ if (finalizer->Create(finalizeInfo->FactionInfo[faction].GameObjectId, map, 0, pos2.GetPositionX(), pos2.GetPositionY(),
pos2.GetPositionZ(), pos2.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 255, GO_STATE_READY))
{
// set some spell id to make the object delete itself after use
diff --git a/src/server/game/Globals/ObjectAccessor.cpp b/src/server/game/Globals/ObjectAccessor.cpp
index 7cb21321f04..553cf67cc3c 100644
--- a/src/server/game/Globals/ObjectAccessor.cpp
+++ b/src/server/game/Globals/ObjectAccessor.cpp
@@ -84,12 +84,12 @@ WorldObject* ObjectAccessor::GetWorldObject(WorldObject const& p, ObjectGuid con
case HighGuid::Transport:
case HighGuid::GameObject: return GetGameObject(p, guid);
case HighGuid::Vehicle:
- case HighGuid::Creature: return GetCreature(p, guid);
+ case HighGuid::Creature: return GetCreature(p, guid);
case HighGuid::Pet: return GetPet(p, guid);
case HighGuid::DynamicObject: return GetDynamicObject(p, guid);
case HighGuid::AreaTrigger: return GetAreaTrigger(p, guid);
case HighGuid::Corpse: return GetCorpse(p, guid);
- default: return NULL;
+ default: return nullptr;
}
}
@@ -132,7 +132,7 @@ Object* ObjectAccessor::GetObjectByTypeMask(WorldObject const& p, ObjectGuid con
break;
}
- return NULL;
+ return nullptr;
}
Corpse* ObjectAccessor::GetCorpse(WorldObject const& u, ObjectGuid const& guid)
@@ -145,11 +145,16 @@ GameObject* ObjectAccessor::GetGameObject(WorldObject const& u, ObjectGuid const
return u.GetMap()->GetGameObject(guid);
}
-Transport* ObjectAccessor::GetTransport(WorldObject const& u, ObjectGuid const& guid)
+Transport* ObjectAccessor::GetTransportOnMap(WorldObject const& u, ObjectGuid const& guid)
{
return u.GetMap()->GetTransport(guid);
}
+Transport* ObjectAccessor::GetTransport(ObjectGuid const& guid)
+{
+ return HashMapHolder<Transport>::Find(guid);
+}
+
DynamicObject* ObjectAccessor::GetDynamicObject(WorldObject const& u, ObjectGuid const& guid)
{
return u.GetMap()->GetDynamicObject(guid);
diff --git a/src/server/game/Globals/ObjectAccessor.h b/src/server/game/Globals/ObjectAccessor.h
index 83bbdf42239..4ac3b7a79d1 100644
--- a/src/server/game/Globals/ObjectAccessor.h
+++ b/src/server/game/Globals/ObjectAccessor.h
@@ -72,7 +72,8 @@ namespace ObjectAccessor
TC_GAME_API Object* GetObjectByTypeMask(WorldObject const&, ObjectGuid const&, uint32 typemask);
TC_GAME_API Corpse* GetCorpse(WorldObject const& u, ObjectGuid const& guid);
TC_GAME_API GameObject* GetGameObject(WorldObject const& u, ObjectGuid const& guid);
- TC_GAME_API Transport* GetTransport(WorldObject const& u, ObjectGuid const& guid);
+ TC_GAME_API Transport* GetTransportOnMap(WorldObject const& u, ObjectGuid const& guid);
+ TC_GAME_API Transport* GetTransport(ObjectGuid const& guid);
TC_GAME_API DynamicObject* GetDynamicObject(WorldObject const& u, ObjectGuid const& guid);
TC_GAME_API AreaTrigger* GetAreaTrigger(WorldObject const& u, ObjectGuid const& guid);
TC_GAME_API Unit* GetUnit(WorldObject const&, ObjectGuid const& guid);
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 63431e7e4ad..b8c6072f60e 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -54,6 +54,7 @@
#include "World.h"
#include "WorldPacket.h"
#include "WorldSession.h"
+#include "Metric.h"
class LoginQueryHolder : public SQLQueryHolder
{
@@ -1079,7 +1080,17 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
// reset for all pets before pet loading
if (pCurrChar->HasAtLoginFlag(AT_LOGIN_RESET_PET_TALENTS))
- Pet::resetTalentsForAllPetsOf(pCurrChar);
+ {
+ // Delete all of the player's pet spells
+ PreparedStatement* stmtSpells = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_PET_SPELLS_BY_OWNER);
+ stmtSpells->setUInt64(0, pCurrChar->GetGUID().GetCounter());
+ CharacterDatabase.Execute(stmtSpells);
+
+ // Then reset all of the player's pet specualizations
+ PreparedStatement* stmtSpec = CharacterDatabase.GetPreparedStatement(CHAR_UPD_PET_SPECS_BY_OWNER);
+ stmtSpec->setUInt64(0, pCurrChar->GetGUID().GetCounter());
+ CharacterDatabase.Execute(stmtSpec);
+ }
// Load pet if any (if player not alive and in taxi flight or another then pet will remember as temporary unsummoned)
pCurrChar->LoadPet();
@@ -1139,6 +1150,8 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
sScriptMgr->OnPlayerLogin(pCurrChar, firstLogin);
+ TC_METRIC_EVENT("player_events", "Login", pCurrChar->GetName());
+
delete holder;
}
@@ -2166,8 +2179,8 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(PreparedQueryResult res
uint32 title_alliance = it->first;
uint32 title_horde = it->second;
- CharTitlesEntry const* atitleInfo = sCharTitlesStore.LookupEntry(title_alliance);
- CharTitlesEntry const* htitleInfo = sCharTitlesStore.LookupEntry(title_horde);
+ CharTitlesEntry const* atitleInfo = sCharTitlesStore.AssertEntry(title_alliance);
+ CharTitlesEntry const* htitleInfo = sCharTitlesStore.AssertEntry(title_horde);
// new team
if (newTeamId == TEAM_ALLIANCE)
{
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 0d37806d170..afcced346df 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -485,7 +485,7 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::Misc::AreaTrigger& pack
return;
}
- if (!player->IsInAreaTriggerRadius(atEntry))
+ if (packet.Entered && !player->IsInAreaTriggerRadius(atEntry))
{
TC_LOG_DEBUG("network", "HandleAreaTriggerOpcode: Player '%s' (%s) too far, ignore Area Trigger ID: %u",
player->GetName().c_str(), player->GetGUID().ToString().c_str(), packet.AreaTriggerID);
@@ -535,8 +535,7 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::Misc::AreaTrigger& pack
}
if (Battleground* bg = player->GetBattleground())
- if (bg->GetStatus() == STATUS_IN_PROGRESS)
- bg->HandleAreaTrigger(player, packet.AreaTriggerID, packet.Entered);
+ bg->HandleAreaTrigger(player, packet.AreaTriggerID, packet.Entered);
if (OutdoorPvP* pvp = player->GetOutdoorPvP())
if (pvp->HandleAreaTrigger(_player, packet.AreaTriggerID, packet.Entered))
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 0349fad420a..9e11c044f3e 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -31,6 +31,7 @@
#include "InstanceSaveMgr.h"
#include "ObjectMgr.h"
#include "Vehicle.h"
+#include "InstancePackets.h"
#include "MovementPackets.h"
#define MOVEMENT_PACKET_TIME_DELAY 0
@@ -95,6 +96,11 @@ void WorldSession::HandleMoveWorldportAckOpcode()
GetPlayer()->ResetMap();
GetPlayer()->SetMap(newMap);
+ WorldPackets::Movement::ResumeToken resumeToken;
+ resumeToken.SequenceIndex = _player->m_movementCounter;
+ resumeToken.Reason = seamlessTeleport ? 2 : 1;
+ SendPacket(resumeToken.Write());
+
if (!seamlessTeleport)
GetPlayer()->SendInitialPacketsBeforeAddToMap();
@@ -214,6 +220,30 @@ void WorldSession::HandleMoveWorldportAckOpcode()
GetPlayer()->ProcessDelayedOperations();
}
+void WorldSession::HandleSuspendTokenResponse(WorldPackets::Movement::SuspendTokenResponse& /*suspendTokenResponse*/)
+{
+ if (!_player->IsBeingTeleportedFar())
+ return;
+
+ WorldLocation const& loc = GetPlayer()->GetTeleportDest();
+
+ if (sMapStore.AssertEntry(loc.GetMapId())->IsDungeon())
+ {
+ WorldPackets::Instance::UpdateLastInstance updateLastInstance;
+ updateLastInstance.MapID = loc.GetMapId();
+ SendPacket(updateLastInstance.Write());
+ }
+
+ WorldPackets::Movement::NewWorld packet;
+ packet.MapID = loc.GetMapId();
+ packet.Pos.Relocate(loc);
+ packet.Reason = !_player->IsBeingTeleportedSeamlessly() ? NEW_WORLD_NORMAL : NEW_WORLD_SEAMLESS;
+ SendPacket(packet.Write());
+
+ if (_player->IsBeingTeleportedSeamlessly())
+ HandleMoveWorldportAckOpcode();
+}
+
void WorldSession::HandleMoveTeleportAck(WorldPackets::Movement::MoveTeleportAck& packet)
{
TC_LOG_DEBUG("network", "CMSG_MOVE_TELEPORT_ACK: Guid: %s, Sequence: %u, Time: %u", packet.MoverGUID.ToString().c_str(), packet.AckIndex, packet.MoveTime);
@@ -330,7 +360,7 @@ void WorldSession::HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMov
{
GameObject* go = mover->GetMap()->GetGameObject(movementInfo.transport.guid);
if (!go || go->GetGoType() != GAMEOBJECT_TYPE_TRANSPORT)
- movementInfo.transport.guid.Clear();
+ movementInfo.transport.Reset();
}
}
else if (plrMover && plrMover->GetTransport()) // if we were on a transport, leave
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp
index faf13940eff..416ff57a6ab 100644
--- a/src/server/game/Handlers/PetHandler.cpp
+++ b/src/server/game/Handlers/PetHandler.cpp
@@ -515,10 +515,9 @@ void WorldSession::HandlePetSetAction(WorldPackets::Pet::PetSetAction& packet)
void WorldSession::HandlePetRename(WorldPackets::Pet::PetRename& packet)
{
ObjectGuid petguid = packet.RenameData.PetGUID;
- bool isdeclined = packet.RenameData.HasDeclinedNames;
std::string name = packet.RenameData.NewName;
- DeclinedName declinedname = packet.RenameData.DeclinedNames;
+ DeclinedName* declinedname = packet.RenameData.DeclinedNames.get_ptr();
Pet* pet = ObjectAccessor::GetPet(*_player, petguid);
// check it!
@@ -546,21 +545,21 @@ void WorldSession::HandlePetRename(WorldPackets::Pet::PetRename& packet)
pet->RemoveByteFlag(UNIT_FIELD_BYTES_2, 2, UNIT_CAN_BE_RENAMED);
- if (isdeclined)
+ if (declinedname)
{
std::wstring wname;
if (!Utf8toWStr(name, wname))
return;
- if (!ObjectMgr::CheckDeclinedNames(wname, declinedname))
+ if (!ObjectMgr::CheckDeclinedNames(wname, *declinedname))
{
- SendPetNameInvalid(PET_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME, name, &declinedname);
+ SendPetNameInvalid(PET_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME, name, declinedname);
return;
}
}
SQLTransaction trans = CharacterDatabase.BeginTransaction();
- if (isdeclined)
+ if (declinedname)
{
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_DECLINEDNAME);
stmt->setUInt32(0, pet->GetCharmInfo()->GetPetNumber());
@@ -571,7 +570,7 @@ void WorldSession::HandlePetRename(WorldPackets::Pet::PetRename& packet)
stmt->setUInt64(1, _player->GetGUID().GetCounter());
for (uint8 i = 0; i < 5; i++)
- stmt->setString(i + 2, declinedname.name[i]);
+ stmt->setString(i + 2, declinedname->name[i]);
trans->Append(stmt);
}
@@ -721,8 +720,8 @@ void WorldSession::SendPetNameInvalid(uint32 error, const std::string& name, Dec
WorldPackets::Pet::PetNameInvalid petNameInvalid;
petNameInvalid.Result = error;
petNameInvalid.RenameData.NewName = name;
- for (int i = 0; i < MAX_DECLINED_NAME_CASES; i++)
- petNameInvalid.RenameData.DeclinedNames.name[i] = declinedName[i].name[i];
+ if (declinedName)
+ petNameInvalid.RenameData.DeclinedNames = *declinedName;
SendPacket(petNameInvalid.Write());
}
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index 323dec31e5a..8ce4a88ef5a 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -234,7 +234,7 @@ void WorldSession::HandleGameobjectReportUse(WorldPackets::GameObject::GameObjRe
if (GameObject* go = GetPlayer()->GetGameObjectIfCanInteractWith(packet.Guid))
{
- if (go->AI()->GossipHello(_player))
+ if (go->AI()->GossipHello(_player, false))
return;
_player->UpdateCriteria(CRITERIA_TYPE_USE_GAMEOBJECT, go->GetEntry());
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 37321344782..0b0868eddf4 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -255,6 +255,8 @@ i_scriptLock(false), _defaultLight(DB2Manager::GetDefaultMapLight(id))
//lets initialize visibility distance for map
Map::InitVisibilityDistance();
+ GetGuidSequenceGenerator<HighGuid::Transport>().Set(sObjectMgr->GetGenerator<HighGuid::Transport>().GetNextAfterMaxUsed());
+
sScriptMgr->OnCreateMap(this);
}
diff --git a/src/server/game/Maps/MapScripts.cpp b/src/server/game/Maps/MapScripts.cpp
index fd1f798d2d0..c60b4d8096d 100644
--- a/src/server/game/Maps/MapScripts.cpp
+++ b/src/server/game/Maps/MapScripts.cpp
@@ -322,14 +322,12 @@ void Map::ScriptsProcess()
source = HashMapHolder<Player>::Find(step.sourceGUID);
break;
case HighGuid::GameObject:
+ case HighGuid::Transport:
source = GetGameObject(step.sourceGUID);
break;
case HighGuid::Corpse:
source = GetCorpse(step.sourceGUID);
break;
- case HighGuid::Transport:
- source = GetTransport(step.sourceGUID);
- break;
default:
TC_LOG_ERROR("scripts", "%s source with unsupported high guid %s.",
step.script->GetDebugInfo().c_str(), step.sourceGUID.ToString().c_str());
@@ -353,14 +351,12 @@ void Map::ScriptsProcess()
target = HashMapHolder<Player>::Find(step.targetGUID);
break;
case HighGuid::GameObject:
+ case HighGuid::Transport:
target = GetGameObject(step.targetGUID);
break;
case HighGuid::Corpse:
target = GetCorpse(step.targetGUID);
break;
- case HighGuid::Transport:
- target = GetTransport(step.targetGUID);
- break;
default:
TC_LOG_ERROR("scripts", "%s target with unsupported high guid %s.",
step.script->GetDebugInfo().c_str(), step.targetGUID.ToString().c_str());
diff --git a/src/server/game/Maps/TransportMgr.cpp b/src/server/game/Maps/TransportMgr.cpp
index 5de0133c342..4e695547c42 100644
--- a/src/server/game/Maps/TransportMgr.cpp
+++ b/src/server/game/Maps/TransportMgr.cpp
@@ -389,7 +389,7 @@ Transport* TransportMgr::CreateTransport(uint32 entry, ObjectGuid::LowType guid
float o = tInfo->keyFrames.begin()->InitialOrientation;
// initialize the gameobject base
- ObjectGuid::LowType guidLow = guid ? guid : sObjectMgr->GetGenerator<HighGuid::Transport>().Generate();
+ ObjectGuid::LowType guidLow = guid ? guid : ASSERT_NOTNULL(map)->GenerateLowGuid<HighGuid::Transport>();
if (!trans->Create(guidLow, entry, mapId, x, y, z, o, 255))
{
delete trans;
diff --git a/src/server/game/Maps/ZoneScript.h b/src/server/game/Maps/ZoneScript.h
index e54c96dbb11..e83c6654912 100644
--- a/src/server/game/Maps/ZoneScript.h
+++ b/src/server/game/Maps/ZoneScript.h
@@ -30,7 +30,7 @@ class ZoneScript
virtual ~ZoneScript() { }
virtual uint32 GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureData const* data) { return data->id; }
- virtual uint32 GetGameObjectEntry(ObjectGuid::LowType /*guidLow*/, uint32 entry) { return entry; }
+ virtual uint32 GetGameObjectEntry(ObjectGuid::LowType /*spawnId*/, uint32 entry) { return entry; }
virtual void OnCreatureCreate(Creature* ) { }
virtual void OnCreatureRemove(Creature* ) { }
diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
index a4051c7e865..6f1f4cb2409 100644
--- a/src/server/game/Miscellaneous/Language.h
+++ b/src/server/game/Miscellaneous/Language.h
@@ -1069,7 +1069,7 @@ enum TrinityStrings
LANG_COMMAND_NO_FROZEN_PLAYERS = 5004,
LANG_COMMAND_LIST_FREEZE = 5005,
LANG_COMMAND_PERMA_FROZEN_PLAYER = 5006,
- // = 5007, unused
+ LANG_PHASE_NOTFOUND = 5007,
LANG_INSTANCE_CLOSED = 5008,
LANG_COMMAND_PLAYED_TO_ALL = 5009,
LANG_NPCINFO_LINKGUID = 5010,
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index a1114c0e28c..7320119f739 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -717,138 +717,138 @@ enum SpellAttr9
enum SpellAttr10
{
- SPELL_ATTR10_UNK0 = 0x00000001, // 0
- SPELL_ATTR10_UNK1 = 0x00000002, // 1
- SPELL_ATTR10_UNK2 = 0x00000004, // 2
- SPELL_ATTR10_UNK3 = 0x00000008, // 3
- SPELL_ATTR10_WATER_SPOUT = 0x00000010, // 4
- SPELL_ATTR10_UNK5 = 0x00000020, // 5
- SPELL_ATTR10_UNK6 = 0x00000040, // 6
- SPELL_ATTR10_TELEPORT_PLAYER = 0x00000080, // 7 4 Teleport Player spells
- SPELL_ATTR10_UNK8 = 0x00000100, // 8
- SPELL_ATTR10_UNK9 = 0x00000200, // 9
- SPELL_ATTR10_UNK10 = 0x00000400, // 10
- SPELL_ATTR10_HERB_GATHERING_MINING = 0x00000800, // 11 Only Herb Gathering and Mining
- SPELL_ATTR10_USE_SPELL_BASE_LEVEL_FOR_SCALING = 0x00001000, // 12
- SPELL_ATTR10_UNK13 = 0x00002000, // 13
- SPELL_ATTR10_UNK14 = 0x00004000, // 14
- SPELL_ATTR10_UNK15 = 0x00008000, // 15
- SPELL_ATTR10_UNK16 = 0x00010000, // 16
- SPELL_ATTR10_UNK17 = 0x00020000, // 17
- SPELL_ATTR10_UNK18 = 0x00040000, // 18
- SPELL_ATTR10_UNK19 = 0x00080000, // 19
- SPELL_ATTR10_UNK20 = 0x00100000, // 20
- SPELL_ATTR10_UNK21 = 0x00200000, // 21
- SPELL_ATTR10_UNK22 = 0x00400000, // 22
- SPELL_ATTR10_UNK23 = 0x00800000, // 23
- SPELL_ATTR10_UNK24 = 0x01000000, // 24
- SPELL_ATTR10_UNK25 = 0x02000000, // 25
- SPELL_ATTR10_UNK26 = 0x04000000, // 26
- SPELL_ATTR10_UNK27 = 0x08000000, // 27
- SPELL_ATTR10_UNK28 = 0x10000000, // 28
- SPELL_ATTR10_MOUNT_IS_NOT_ACCOUNT_WIDE = 0x20000000, // 29 This mount is stored per-character
- SPELL_ATTR10_UNK30 = 0x40000000, // 30
- SPELL_ATTR10_UNK31 = 0x80000000 // 31
+ SPELL_ATTR10_UNK0 = 0x00000001, // 0
+ SPELL_ATTR10_UNK1 = 0x00000002, // 1
+ SPELL_ATTR10_UNK2 = 0x00000004, // 2
+ SPELL_ATTR10_UNK3 = 0x00000008, // 3
+ SPELL_ATTR10_WATER_SPOUT = 0x00000010, // 4
+ SPELL_ATTR10_UNK5 = 0x00000020, // 5
+ SPELL_ATTR10_UNK6 = 0x00000040, // 6
+ SPELL_ATTR10_TELEPORT_PLAYER = 0x00000080, // 7 4 Teleport Player spells
+ SPELL_ATTR10_UNK8 = 0x00000100, // 8
+ SPELL_ATTR10_UNK9 = 0x00000200, // 9
+ SPELL_ATTR10_UNK10 = 0x00000400, // 10
+ SPELL_ATTR10_HERB_GATHERING_MINING = 0x00000800, // 11 Only Herb Gathering and Mining
+ SPELL_ATTR10_USE_SPELL_BASE_LEVEL_FOR_SCALING= 0x00001000, // 12
+ SPELL_ATTR10_UNK13 = 0x00002000, // 13
+ SPELL_ATTR10_UNK14 = 0x00004000, // 14
+ SPELL_ATTR10_UNK15 = 0x00008000, // 15
+ SPELL_ATTR10_UNK16 = 0x00010000, // 16
+ SPELL_ATTR10_UNK17 = 0x00020000, // 17
+ SPELL_ATTR10_UNK18 = 0x00040000, // 18
+ SPELL_ATTR10_UNK19 = 0x00080000, // 19
+ SPELL_ATTR10_UNK20 = 0x00100000, // 20
+ SPELL_ATTR10_UNK21 = 0x00200000, // 21
+ SPELL_ATTR10_UNK22 = 0x00400000, // 22
+ SPELL_ATTR10_UNK23 = 0x00800000, // 23
+ SPELL_ATTR10_UNK24 = 0x01000000, // 24
+ SPELL_ATTR10_UNK25 = 0x02000000, // 25
+ SPELL_ATTR10_UNK26 = 0x04000000, // 26
+ SPELL_ATTR10_UNK27 = 0x08000000, // 27
+ SPELL_ATTR10_UNK28 = 0x10000000, // 28
+ SPELL_ATTR10_MOUNT_IS_NOT_ACCOUNT_WIDE = 0x20000000, // 29 This mount is stored per-character
+ SPELL_ATTR10_UNK30 = 0x40000000, // 30
+ SPELL_ATTR10_UNK31 = 0x80000000 // 31
};
enum SpellAttr11
{
- SPELL_ATTR11_UNK0 = 0x00000001, // 0
- SPELL_ATTR11_UNK1 = 0x00000002, // 1
- SPELL_ATTR11_SCALES_WITH_ITEM_LEVEL = 0x00000004, // 2
- SPELL_ATTR11_UNK3 = 0x00000008, // 3
- SPELL_ATTR11_UNK4 = 0x00000010, // 4
- SPELL_ATTR11_UNK5 = 0x00000020, // 5
- SPELL_ATTR11_UNK6 = 0x00000040, // 6
- SPELL_ATTR11_RANK_IGNORES_CASTER_LEVEL = 0x00000080, // 7 Spell_C_GetSpellRank returns SpellLevels->MaxLevel * 5 instead of std::min(SpellLevels->MaxLevel, caster->Level) * 5
- SPELL_ATTR11_UNK8 = 0x00000100, // 8
- SPELL_ATTR11_UNK9 = 0x00000200, // 9
- SPELL_ATTR11_UNK10 = 0x00000400, // 10
- SPELL_ATTR11_UNK11 = 0x00000800, // 11
- SPELL_ATTR11_UNK12 = 0x00001000, // 12
- SPELL_ATTR11_UNK13 = 0x00002000, // 13
- SPELL_ATTR11_UNK14 = 0x00004000, // 14
- SPELL_ATTR11_UNK15 = 0x00008000, // 15
- SPELL_ATTR11_NOT_USABLE_IN_CHALLENGE_MODE = 0x00010000, // 16
- SPELL_ATTR11_UNK17 = 0x00020000, // 17
- SPELL_ATTR11_UNK18 = 0x00040000, // 18
- SPELL_ATTR11_UNK19 = 0x00080000, // 19
- SPELL_ATTR11_UNK20 = 0x00100000, // 20
- SPELL_ATTR11_UNK21 = 0x00200000, // 21
- SPELL_ATTR11_UNK22 = 0x00400000, // 22
- SPELL_ATTR11_UNK23 = 0x00800000, // 23
- SPELL_ATTR11_UNK24 = 0x01000000, // 24
- SPELL_ATTR11_UNK25 = 0x02000000, // 25
- SPELL_ATTR11_UNK26 = 0x04000000, // 26
- SPELL_ATTR11_UNK27 = 0x08000000, // 27
- SPELL_ATTR11_UNK28 = 0x10000000, // 28
- SPELL_ATTR11_UNK29 = 0x20000000, // 29
- SPELL_ATTR11_UNK30 = 0x40000000, // 30
- SPELL_ATTR11_UNK31 = 0x80000000 // 31
+ SPELL_ATTR11_UNK0 = 0x00000001, // 0
+ SPELL_ATTR11_UNK1 = 0x00000002, // 1
+ SPELL_ATTR11_SCALES_WITH_ITEM_LEVEL = 0x00000004, // 2
+ SPELL_ATTR11_UNK3 = 0x00000008, // 3
+ SPELL_ATTR11_UNK4 = 0x00000010, // 4
+ SPELL_ATTR11_UNK5 = 0x00000020, // 5
+ SPELL_ATTR11_UNK6 = 0x00000040, // 6
+ SPELL_ATTR11_RANK_IGNORES_CASTER_LEVEL = 0x00000080, // 7 Spell_C_GetSpellRank returns SpellLevels->MaxLevel * 5 instead of std::min(SpellLevels->MaxLevel, caster->Level) * 5
+ SPELL_ATTR11_UNK8 = 0x00000100, // 8
+ SPELL_ATTR11_UNK9 = 0x00000200, // 9
+ SPELL_ATTR11_UNK10 = 0x00000400, // 10
+ SPELL_ATTR11_UNK11 = 0x00000800, // 11
+ SPELL_ATTR11_UNK12 = 0x00001000, // 12
+ SPELL_ATTR11_UNK13 = 0x00002000, // 13
+ SPELL_ATTR11_UNK14 = 0x00004000, // 14
+ SPELL_ATTR11_UNK15 = 0x00008000, // 15
+ SPELL_ATTR11_NOT_USABLE_IN_CHALLENGE_MODE = 0x00010000, // 16
+ SPELL_ATTR11_UNK17 = 0x00020000, // 17
+ SPELL_ATTR11_UNK18 = 0x00040000, // 18
+ SPELL_ATTR11_UNK19 = 0x00080000, // 19
+ SPELL_ATTR11_UNK20 = 0x00100000, // 20
+ SPELL_ATTR11_UNK21 = 0x00200000, // 21
+ SPELL_ATTR11_UNK22 = 0x00400000, // 22
+ SPELL_ATTR11_UNK23 = 0x00800000, // 23
+ SPELL_ATTR11_UNK24 = 0x01000000, // 24
+ SPELL_ATTR11_UNK25 = 0x02000000, // 25
+ SPELL_ATTR11_UNK26 = 0x04000000, // 26
+ SPELL_ATTR11_UNK27 = 0x08000000, // 27
+ SPELL_ATTR11_UNK28 = 0x10000000, // 28
+ SPELL_ATTR11_UNK29 = 0x20000000, // 29
+ SPELL_ATTR11_UNK30 = 0x40000000, // 30
+ SPELL_ATTR11_UNK31 = 0x80000000 // 31
};
enum SpellAttr12
{
- SPELL_ATTR12_UNK0 = 0x00000001, // 0
- SPELL_ATTR12_UNK1 = 0x00000002, // 1
- SPELL_ATTR12_UNK2 = 0x00000004, // 2
- SPELL_ATTR12_UNK3 = 0x00000008, // 3
- SPELL_ATTR12_UNK4 = 0x00000010, // 4
- SPELL_ATTR12_UNK5 = 0x00000020, // 5
- SPELL_ATTR12_UNK6 = 0x00000040, // 6
- SPELL_ATTR12_UNK7 = 0x00000080, // 7
- SPELL_ATTR12_UNK8 = 0x00000100, // 8
- SPELL_ATTR12_UNK9 = 0x00000200, // 9
- SPELL_ATTR12_UNK10 = 0x00000400, // 10
- SPELL_ATTR12_UNK11 = 0x00000800, // 11
- SPELL_ATTR12_UNK12 = 0x00001000, // 12
- SPELL_ATTR12_UNK13 = 0x00002000, // 13
- SPELL_ATTR12_UNK14 = 0x00004000, // 14
- SPELL_ATTR12_UNK15 = 0x00008000, // 15
- SPELL_ATTR12_UNK16 = 0x00010000, // 16
- SPELL_ATTR12_UNK17 = 0x00020000, // 17
- SPELL_ATTR12_UNK18 = 0x00040000, // 18
- SPELL_ATTR12_UNK19 = 0x00080000, // 19
- SPELL_ATTR12_UNK20 = 0x00100000, // 20
- SPELL_ATTR12_UNK21 = 0x00200000, // 21
- SPELL_ATTR12_UNK22 = 0x00400000, // 22
- SPELL_ATTR12_UNK23 = 0x00800000, // 23
- SPELL_ATTR12_UNK24 = 0x01000000, // 24
- SPELL_ATTR12_UNK25 = 0x02000000, // 25
- SPELL_ATTR12_UNK26 = 0x04000000, // 26
- SPELL_ATTR12_IS_READINESS_SPELL = 0x08000000, // 27
- SPELL_ATTR12_UNK28 = 0x10000000, // 28
- SPELL_ATTR12_UNK29 = 0x20000000, // 29
- SPELL_ATTR12_UNK30 = 0x40000000, // 30
- SPELL_ATTR12_UNK31 = 0x80000000 // 31
+ SPELL_ATTR12_UNK0 = 0x00000001, // 0
+ SPELL_ATTR12_UNK1 = 0x00000002, // 1
+ SPELL_ATTR12_UNK2 = 0x00000004, // 2
+ SPELL_ATTR12_UNK3 = 0x00000008, // 3
+ SPELL_ATTR12_UNK4 = 0x00000010, // 4
+ SPELL_ATTR12_UNK5 = 0x00000020, // 5
+ SPELL_ATTR12_UNK6 = 0x00000040, // 6
+ SPELL_ATTR12_UNK7 = 0x00000080, // 7
+ SPELL_ATTR12_UNK8 = 0x00000100, // 8
+ SPELL_ATTR12_UNK9 = 0x00000200, // 9
+ SPELL_ATTR12_UNK10 = 0x00000400, // 10
+ SPELL_ATTR12_UNK11 = 0x00000800, // 11
+ SPELL_ATTR12_UNK12 = 0x00001000, // 12
+ SPELL_ATTR12_UNK13 = 0x00002000, // 13
+ SPELL_ATTR12_UNK14 = 0x00004000, // 14
+ SPELL_ATTR12_UNK15 = 0x00008000, // 15
+ SPELL_ATTR12_UNK16 = 0x00010000, // 16
+ SPELL_ATTR12_UNK17 = 0x00020000, // 17
+ SPELL_ATTR12_UNK18 = 0x00040000, // 18
+ SPELL_ATTR12_UNK19 = 0x00080000, // 19
+ SPELL_ATTR12_UNK20 = 0x00100000, // 20
+ SPELL_ATTR12_UNK21 = 0x00200000, // 21
+ SPELL_ATTR12_UNK22 = 0x00400000, // 22
+ SPELL_ATTR12_UNK23 = 0x00800000, // 23
+ SPELL_ATTR12_IS_GARRISON_BUFF = 0x01000000, // 24
+ SPELL_ATTR12_UNK25 = 0x02000000, // 25
+ SPELL_ATTR12_UNK26 = 0x04000000, // 26
+ SPELL_ATTR12_IS_READINESS_SPELL = 0x08000000, // 27
+ SPELL_ATTR12_UNK28 = 0x10000000, // 28
+ SPELL_ATTR12_UNK29 = 0x20000000, // 29
+ SPELL_ATTR12_UNK30 = 0x40000000, // 30
+ SPELL_ATTR12_UNK31 = 0x80000000 // 31
};
enum SpellAttr13
{
- SPELL_ATTR13_UNK0 = 0x00000001, // 0
- SPELL_ATTR13_UNK1 = 0x00000002, // 1
- SPELL_ATTR13_UNK2 = 0x00000004, // 2
- SPELL_ATTR13_UNK3 = 0x00000008, // 3
- SPELL_ATTR13_UNK4 = 0x00000010, // 4
- SPELL_ATTR13_UNK5 = 0x00000020, // 5
- SPELL_ATTR13_UNK6 = 0x00000040, // 6
- SPELL_ATTR13_UNK7 = 0x00000080, // 7
- SPELL_ATTR13_UNK8 = 0x00000100, // 8
- SPELL_ATTR13_UNK9 = 0x00000200, // 9
- SPELL_ATTR13_UNK10 = 0x00000400, // 10
- SPELL_ATTR13_UNK11 = 0x00000800, // 11
- SPELL_ATTR13_UNK12 = 0x00001000, // 12
- SPELL_ATTR13_UNK13 = 0x00002000, // 13
- SPELL_ATTR13_UNK14 = 0x00004000, // 14
- SPELL_ATTR13_UNK15 = 0x00008000, // 15
- SPELL_ATTR13_UNK16 = 0x00010000, // 16
- SPELL_ATTR13_UNK17 = 0x00020000, // 17
- SPELL_ATTR13_ACTIVATES_REQUIRED_SHAPESHIFT = 0x00040000, // 18
- SPELL_ATTR13_UNK19 = 0x00080000, // 19
- SPELL_ATTR13_UNK20 = 0x00100000, // 20
- SPELL_ATTR13_UNK21 = 0x00200000, // 21
- SPELL_ATTR13_UNK22 = 0x00400000, // 22
- SPELL_ATTR13_UNK23 = 0x00800000 // 23
+ SPELL_ATTR13_UNK0 = 0x00000001, // 0
+ SPELL_ATTR13_UNK1 = 0x00000002, // 1
+ SPELL_ATTR13_UNK2 = 0x00000004, // 2
+ SPELL_ATTR13_UNK3 = 0x00000008, // 3
+ SPELL_ATTR13_UNK4 = 0x00000010, // 4
+ SPELL_ATTR13_UNK5 = 0x00000020, // 5
+ SPELL_ATTR13_UNK6 = 0x00000040, // 6
+ SPELL_ATTR13_UNK7 = 0x00000080, // 7
+ SPELL_ATTR13_UNK8 = 0x00000100, // 8
+ SPELL_ATTR13_UNK9 = 0x00000200, // 9
+ SPELL_ATTR13_UNK10 = 0x00000400, // 10
+ SPELL_ATTR13_UNK11 = 0x00000800, // 11
+ SPELL_ATTR13_UNK12 = 0x00001000, // 12
+ SPELL_ATTR13_UNK13 = 0x00002000, // 13
+ SPELL_ATTR13_UNK14 = 0x00004000, // 14
+ SPELL_ATTR13_UNK15 = 0x00008000, // 15
+ SPELL_ATTR13_UNK16 = 0x00010000, // 16
+ SPELL_ATTR13_UNK17 = 0x00020000, // 17
+ SPELL_ATTR13_ACTIVATES_REQUIRED_SHAPESHIFT = 0x00040000, // 18
+ SPELL_ATTR13_UNK19 = 0x00080000, // 19
+ SPELL_ATTR13_UNK20 = 0x00100000, // 20
+ SPELL_ATTR13_UNK21 = 0x00200000, // 21
+ SPELL_ATTR13_UNK22 = 0x00400000, // 22
+ SPELL_ATTR13_UNK23 = 0x00800000 // 23
};
#define MIN_TALENT_GROUP 0
@@ -1229,7 +1229,7 @@ enum SpellEffectName
SPELL_EFFECT_203 = 203,
SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY = 204,
SPELL_EFFECT_LAUNCH_QUEST_CHOICE = 205,
- SPELL_EFFECT_206 = 206,
+ SPELL_EFFECT_ALTER_ITEM = 206, // NYI
SPELL_EFFECT_LAUNCH_QUEST_TASK = 207, // Starts one of the "progress bar" quests
SPELL_EFFECT_208 = 208,
SPELL_EFFECT_209 = 209,
@@ -2322,18 +2322,18 @@ enum GameobjectTypes : uint8 // (6.0.3.19103)
enum GameObjectFlags
{
- GO_FLAG_IN_USE = 0x00000001, // disables interaction while animated
- GO_FLAG_LOCKED = 0x00000002, // require key, spell, event, etc to be opened. Makes "Locked" appear in tooltip
- GO_FLAG_INTERACT_COND = 0x00000004, // cannot interact (condition to interact - requires GO_DYNFLAG_LO_ACTIVATE to enable interaction clientside)
- GO_FLAG_TRANSPORT = 0x00000008, // any kind of transport? Object can transport (elevator, boat, car)
- GO_FLAG_NOT_SELECTABLE = 0x00000010, // not selectable even in GM mode
- GO_FLAG_NODESPAWN = 0x00000020, // never despawn, typically for doors, they just change state
- GO_FLAG_AI_OBSTACLE = 0x00000040,
- GO_FLAG_FREEZE_ANIMATION = 0x00000080,
- GO_FLAG_DAMAGED = 0x00000200,
- GO_FLAG_DESTROYED = 0x00000400,
+ GO_FLAG_IN_USE = 0x00000001, // disables interaction while animated
+ GO_FLAG_LOCKED = 0x00000002, // require key, spell, event, etc to be opened. Makes "Locked" appear in tooltip
+ GO_FLAG_INTERACT_COND = 0x00000004, // cannot interact (condition to interact - requires GO_DYNFLAG_LO_ACTIVATE to enable interaction clientside)
+ GO_FLAG_TRANSPORT = 0x00000008, // any kind of transport? Object can transport (elevator, boat, car)
+ GO_FLAG_NOT_SELECTABLE = 0x00000010, // not selectable even in GM mode
+ GO_FLAG_NODESPAWN = 0x00000020, // never despawn, typically for doors, they just change state
+ GO_FLAG_AI_OBSTACLE = 0x00000040, // makes the client register the object in something called AIObstacleMgr, unknown what it does
+ GO_FLAG_FREEZE_ANIMATION = 0x00000080,
+ GO_FLAG_DAMAGED = 0x00000200,
+ GO_FLAG_DESTROYED = 0x00000400,
GO_FLAG_INTERACT_DISTANCE_USES_TEMPLATE_MODEL = 0x00080000, // client checks interaction distance from model sent in SMSG_QUERY_GAMEOBJECT_RESPONSE instead of GAMEOBJECT_DISPLAYID
- GO_FLAG_MAP_OBJECT = 0x00100000 // pre-7.0 model loading used to be controlled by file extension (wmo vs m2)
+ GO_FLAG_MAP_OBJECT = 0x00100000 // pre-7.0 model loading used to be controlled by file extension (wmo vs m2)
};
enum GameObjectDynamicLowFlags
diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp
index fe09aa26af2..39087269e54 100644
--- a/src/server/game/Movement/PathGenerator.cpp
+++ b/src/server/game/Movement/PathGenerator.cpp
@@ -26,6 +26,7 @@
#include "DisableMgr.h"
#include "DetourCommon.h"
#include "DetourNavMeshQuery.h"
+#include "Metric.h"
////////////////// PathGenerator //////////////////
PathGenerator::PathGenerator(const Unit* owner) :
@@ -62,6 +63,8 @@ bool PathGenerator::CalculatePath(float destX, float destY, float destZ, bool fo
if (!Trinity::IsValidMapCoord(destX, destY, destZ) || !Trinity::IsValidMapCoord(x, y, z))
return false;
+ TC_METRIC_EVENT("mmap_events", "CalculatePath", "");
+
G3D::Vector3 dest(destX, destY, destZ);
SetEndPosition(dest);
diff --git a/src/server/game/Server/Packets/BattlenetPackets.h b/src/server/game/Server/Packets/BattlenetPackets.h
index f059b39b75f..76aa499799c 100644
--- a/src/server/game/Server/Packets/BattlenetPackets.h
+++ b/src/server/game/Server/Packets/BattlenetPackets.h
@@ -76,8 +76,8 @@ namespace WorldPackets
WorldPacket const* Write() override;
- uint32 Token;
- bool Allow;
+ uint32 Token = 0;
+ bool Allow = false;
ByteBuffer Ticket;
};
diff --git a/src/server/game/Server/Packets/BlackMarketPackets.h b/src/server/game/Server/Packets/BlackMarketPackets.h
index 1193a9f0147..19853a212a5 100644
--- a/src/server/game/Server/Packets/BlackMarketPackets.h
+++ b/src/server/game/Server/Packets/BlackMarketPackets.h
@@ -122,7 +122,7 @@ namespace WorldPackets
int32 MarketID = 0;
Item::ItemInstance Item;
- int32 RandomPropertiesID;
+ int32 RandomPropertiesID = 0;
};
class BlackMarketWon final : public ServerPacket
@@ -134,7 +134,7 @@ namespace WorldPackets
int32 MarketID = 0;
Item::ItemInstance Item;
- int32 RandomPropertiesID;
+ int32 RandomPropertiesID = 0;
};
}
}
diff --git a/src/server/game/Server/Packets/GuildFinderPackets.cpp b/src/server/game/Server/Packets/GuildFinderPackets.cpp
index 137b5f29986..eb2f1178925 100644
--- a/src/server/game/Server/Packets/GuildFinderPackets.cpp
+++ b/src/server/game/Server/Packets/GuildFinderPackets.cpp
@@ -92,8 +92,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::GuildFinder::LFGuildAppli
WorldPacket const* WorldPackets::GuildFinder::LFGuildApplications::Write()
{
- _worldPacket << uint32(Application.size());
_worldPacket << int32(NumRemaining);
+ _worldPacket << uint32(Application.size());
for (LFGuildApplicationData const& application : Application)
_worldPacket << application;
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index 16b3b98646f..ff8337c88c4 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -736,3 +736,26 @@ WorldPacket const* WorldPackets::Movement::SummonRequest::Write()
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Movement::SuspendToken::Write()
+{
+ _worldPacket << uint32(SequenceIndex);
+ _worldPacket.WriteBits(Reason, 2);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Movement::SuspendTokenResponse::Read()
+{
+ _worldPacket >> SequenceIndex;
+}
+
+WorldPacket const* WorldPackets::Movement::ResumeToken::Write()
+{
+ _worldPacket << uint32(SequenceIndex);
+ _worldPacket.WriteBits(Reason, 2);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h
index 7b56074db28..1c21c034c86 100644
--- a/src/server/game/Server/Packets/MovementPackets.h
+++ b/src/server/game/Server/Packets/MovementPackets.h
@@ -504,6 +504,38 @@ namespace WorldPackets
SummonReason Reason = SPELL;
bool SkipStartingArea = false;
};
+
+ class SuspendToken final : public ServerPacket
+ {
+ public:
+ SuspendToken() : ServerPacket(SMSG_SUSPEND_TOKEN, 4 + 1) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 SequenceIndex = 1;
+ uint32 Reason = 1;
+ };
+
+ class SuspendTokenResponse final : public ClientPacket
+ {
+ public:
+ SuspendTokenResponse(WorldPacket&& packet) : ClientPacket(CMSG_SUSPEND_TOKEN_RESPONSE, std::move(packet)) { }
+
+ void Read() override;
+
+ uint32 SequenceIndex = 0;
+ };
+
+ class ResumeToken final : public ServerPacket
+ {
+ public:
+ ResumeToken() : ServerPacket(SMSG_RESUME_TOKEN, 4 + 1) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 SequenceIndex = 1;
+ uint32 Reason = 1;
+ };
}
ByteBuffer& operator<<(ByteBuffer& data, Movement::MonsterSplineFilterKey const& monsterSplineFilterKey);
diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp
index b07a74dfb10..cb5593167f0 100644
--- a/src/server/game/Server/Packets/PetPackets.cpp
+++ b/src/server/game/Server/Packets/PetPackets.cpp
@@ -99,19 +99,19 @@ WorldPacket const* WorldPackets::Pet::PetNameInvalid::Write()
_worldPacket << uint8(RenameData.NewName.length());
- _worldPacket.WriteBit(RenameData.HasDeclinedNames);
+ _worldPacket.WriteBit(RenameData.DeclinedNames.is_initialized());
_worldPacket.FlushBits();
- if (RenameData.HasDeclinedNames)
+ if (RenameData.DeclinedNames)
{
for (int32 i = 0; i < MAX_DECLINED_NAME_CASES; i++)
{
- _worldPacket.WriteBits(RenameData.DeclinedNames.name[i].length(), 7);
+ _worldPacket.WriteBits(RenameData.DeclinedNames->name[i].length(), 7);
_worldPacket.FlushBits();
}
for (int32 i = 0; i < MAX_DECLINED_NAME_CASES; i++)
- _worldPacket << RenameData.DeclinedNames.name[i];
+ _worldPacket << RenameData.DeclinedNames->name[i];
}
_worldPacket.WriteString(RenameData.NewName);
@@ -126,15 +126,15 @@ void WorldPackets::Pet::PetRename::Read()
int8 nameLen = 0;
_worldPacket >> nameLen;
- RenameData.HasDeclinedNames = _worldPacket.ReadBit();
- if (RenameData.HasDeclinedNames)
+ if (_worldPacket.ReadBit())
{
+ RenameData.DeclinedNames = boost::in_place();
int32 count[MAX_DECLINED_NAME_CASES];
for (int32 i = 0; i < MAX_DECLINED_NAME_CASES; i++)
count[i] = _worldPacket.ReadBits(7);
for (int32 i = 0; i < MAX_DECLINED_NAME_CASES; i++)
- RenameData.DeclinedNames.name[i] = _worldPacket.ReadString(count[i]);
+ RenameData.DeclinedNames->name[i] = _worldPacket.ReadString(count[i]);
}
RenameData.NewName = _worldPacket.ReadString(nameLen);
@@ -185,3 +185,10 @@ void WorldPackets::Pet::PetCancelAura::Read()
_worldPacket >> PetGUID;
_worldPacket >> SpellID;
}
+
+WorldPacket const* WorldPackets::Pet::SetPetSpecialization::Write()
+{
+ _worldPacket << uint16(SpecID);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/PetPackets.h b/src/server/game/Server/Packets/PetPackets.h
index 500fef3a249..813d82d4827 100644
--- a/src/server/game/Server/Packets/PetPackets.h
+++ b/src/server/game/Server/Packets/PetPackets.h
@@ -163,8 +163,7 @@ namespace WorldPackets
ObjectGuid PetGUID;
int32 PetNumber = 0;
std::string NewName;
- bool HasDeclinedNames = false;
- DeclinedName DeclinedNames;
+ Optional<DeclinedName> DeclinedNames;
};
class PetNameInvalid final : public ServerPacket
@@ -226,6 +225,16 @@ namespace WorldPackets
int32 SpellID = 0;
};
+ class SetPetSpecialization final : public ServerPacket
+ {
+ public:
+ SetPetSpecialization() : ServerPacket(SMSG_SET_PET_SPECIALIZATION, 2) { }
+
+ WorldPacket const* Write() override;
+
+ uint16 SpecID = 0;
+ };
+
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 8efd98c19f9..1f9badfbdef 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -714,7 +714,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_PARTY_ASSIGNMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::SetPartyAssignment, &WorldSession::HandleSetPartyAssignment);
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_HANDLER(CMSG_SET_PLAYER_DECLINED_NAMES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::SetPlayerDeclinedNames, &WorldSession::HandleSetPlayerDeclinedNames);
+ DEFINE_HANDLER(CMSG_SET_PLAYER_DECLINED_NAMES, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::SetPlayerDeclinedNames, &WorldSession::HandleSetPlayerDeclinedNames);
DEFINE_HANDLER(CMSG_SET_PREFERRED_CEMETERY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_PVP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetPvP, &WorldSession::HandleSetPvP);
DEFINE_HANDLER(CMSG_SET_RAID_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetRaidDifficulty, &WorldSession::HandleSetRaidDifficultyOpcode);
@@ -749,7 +749,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Ticket::SupportTicketSubmitComplaint, &WorldSession::HandleSupportTicketSubmitComplaint);
DEFINE_HANDLER(CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Ticket::SupportTicketSubmitSuggestion, &WorldSession::HandleSupportTicketSubmitSuggestion);
DEFINE_HANDLER(CMSG_SUSPEND_COMMS_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_SUSPEND_TOKEN_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_SUSPEND_TOKEN_RESPONSE, STATUS_TRANSFER, PROCESS_THREADUNSAFE, WorldPackets::Movement::SuspendTokenResponse, &WorldSession::HandleSuspendTokenResponse);
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_HANDLER(CMSG_SWAP_SUB_GROUPS, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::SwapSubGroups, &WorldSession::HandleSwapSubGroupsOpcode);
@@ -1576,7 +1576,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPOND_INSPECT_ACHIEVEMENTS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_CAST_BAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_COMMS, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_TOKEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_TOKEN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESURRECT_REQUEST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESYNC_RUNES, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHANGED_INFORM, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1628,7 +1628,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_MELEE_ANIM_KIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_MOVEMENT_ANIM_KIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PCT_SPELL_MODIFIER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PET_SPECIALIZATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PET_SPECIALIZATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PLAYER_DECLINED_NAMES_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PLAY_HOVER_ANIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PROFICIENCY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1687,7 +1687,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_REQUEST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUPERCEDED_SPELLS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUSPEND_COMMS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUSPEND_TOKEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUSPEND_TOKEN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TALENTS_INVOLUNTARILY_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TAXI_NODE_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TEXT_EMOTE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index 5203cdc1f9b..937961ad571 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -51,6 +51,7 @@
#include "BattlePetMgr.h"
#include "PacketUtilities.h"
#include "CollectionMgr.h"
+#include "Metric.h"
#include <zlib.h>
@@ -117,6 +118,7 @@ WorldSession::WorldSession(uint32 id, std::string&& name, uint32 battlenetAccoun
_battlenetAccountId(battlenetAccountId),
m_expansion(expansion),
_os(os),
+ _battlenetRequestToken(0),
_warden(NULL),
_logoutTime(0),
m_inQueue(false),
@@ -334,10 +336,6 @@ 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;
@@ -456,6 +454,8 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
break;
}
+ TC_METRIC_VALUE("processed_packets", processedPackets);
+
_recvQueue.readd(requeuePackets.begin(), requeuePackets.end());
if (m_Socket[CONNECTION_TYPE_REALM] && m_Socket[CONNECTION_TYPE_REALM]->IsOpen() && _warden)
@@ -614,6 +614,8 @@ void WorldSession::LogoutPlayer(bool save)
//! Call script hook before deletion
sScriptMgr->OnPlayerLogout(_player);
+ TC_METRIC_EVENT("player_events", "Logout", _player->GetName());
+
//! Remove the player from the world
// the player may not be in the world when logging out
// e.g if he got disconnected during a transfer to another map
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 5b06c9ce03f..3093b05163c 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -439,6 +439,7 @@ namespace WorldPackets
class MoveTimeSkipped;
class SummonResponse;
class MoveSplineDone;
+ class SuspendTokenResponse;
}
namespace NPC
@@ -1232,6 +1233,7 @@ class TC_GAME_API WorldSession
void HandleMoveWorldportAckOpcode(WorldPackets::Movement::WorldPortResponse& packet);
void HandleMoveWorldportAckOpcode(); // for server-side calls
+ void HandleSuspendTokenResponse(WorldPackets::Movement::SuspendTokenResponse& suspendTokenResponse);
void HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMovement& packet);
void HandleSetActiveMoverOpcode(WorldPackets::Movement::SetActiveMover& packet);
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h
index 5130ebd7876..9eb6ad5c864 100644
--- a/src/server/game/Spells/Auras/SpellAuraDefines.h
+++ b/src/server/game/Spells/Auras/SpellAuraDefines.h
@@ -404,7 +404,7 @@ enum AuraType
SPELL_AURA_MOD_AUTOATTACK_DAMAGE = 344, // NYI
SPELL_AURA_BYPASS_ARMOR_FOR_CASTER = 345,
SPELL_AURA_ENABLE_ALT_POWER = 346, // NYI
- SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE = 347, // NYI
+ SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE = 347,
SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT = 348,
SPELL_AURA_MOD_CURRENCY_GAIN = 349,
SPELL_AURA_MOD_GATHERING_ITEMS_GAINED_PERCENT = 350, // NYI
@@ -433,11 +433,11 @@ enum AuraType
SPELL_AURA_373 = 373,
SPELL_AURA_MODIFY_FALL_DAMAGE_PCT = 374, // NYI
SPELL_AURA_375 = 375,
- SPELL_AURA_MOD_CURRENCY_GAIN_2 = 376, // NYI
+ SPELL_AURA_MOD_CURRENCY_GAIN_FROM_SOURCE = 376, // NYI
SPELL_AURA_CAST_WHILE_WALKING_2 = 377, // NYI
SPELL_AURA_378 = 378,
SPELL_AURA_379 = 379,
- SPELL_AURA_380 = 380,
+ SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE = 380, // Allows melee abilities to benefit from haste GCD reduction
SPELL_AURA_381 = 381,
SPELL_AURA_MOD_PET_STAT_PCT = 382, // NYI
SPELL_AURA_IGNORE_SPELL_COOLDOWN = 383, // NYI
@@ -451,7 +451,7 @@ enum AuraType
SPELL_AURA_391 = 391,
SPELL_AURA_392 = 392,
SPELL_AURA_393 = 393,
- SPELL_AURA_394 = 394,
+ SPELL_AURA_SHOW_CONFIRMATION_PROMPT = 394,
SPELL_AURA_AREA_TRIGGER = 395, // NYI
SPELL_AURA_396 = 396,
SPELL_AURA_397 = 397,
@@ -473,8 +473,8 @@ enum AuraType
SPELL_AURA_413 = 413,
SPELL_AURA_414 = 414,
SPELL_AURA_415 = 415,
- SPELL_AURA_MOD_COOLDOWN_BY_HASTE_EFFECTS = 416, // NYI
- SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE_EFFECTS = 417, // NYI
+ SPELL_AURA_MOD_COOLDOWN_BY_HASTE_REGEN = 416,
+ SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE_REGEN = 417,
SPELL_AURA_MOD_MAX_POWER = 418, // NYI
SPELL_AURA_MOD_BASE_MANA_PCT = 419,
SPELL_AURA_MOD_BATTLE_PET_XP_PCT = 420, // NYI
@@ -497,10 +497,10 @@ enum AuraType
SPELL_AURA_437 = 437,
SPELL_AURA_438 = 438,
SPELL_AURA_439 = 439,
- SPELL_AURA_440 = 440,
- SPELL_AURA_441 = 441,
- SPELL_AURA_442 = 442,
- SPELL_AURA_443 = 443,
+ SPELL_AURA_MOD_MULTISTRIKE_DAMAGE = 440, // NYI
+ SPELL_AURA_MOD_MULTISTRIKE_CHANCE = 441, // NYI
+ SPELL_AURA_MOD_READINESS = 442, // NYI
+ SPELL_AURA_MOD_LEECH = 443, // NYI
SPELL_AURA_444 = 444,
SPELL_AURA_445 = 445,
SPELL_AURA_446 = 446,
@@ -508,7 +508,7 @@ enum AuraType
SPELL_AURA_448 = 448,
SPELL_AURA_449 = 449,
SPELL_AURA_450 = 450,
- SPELL_AURA_OVERRIDE_PET_SPECS = 451, // NYI
+ SPELL_AURA_OVERRIDE_PET_SPECS = 451,
SPELL_AURA_452 = 452,
SPELL_AURA_CHARGE_RECOVERY_MOD = 453,
SPELL_AURA_CHARGE_RECOVERY_MULTIPLIER = 454,
@@ -526,13 +526,14 @@ enum AuraType
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,
+ SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY = 469,
+ SPELL_AURA_470 = 470,
+ SPELL_AURA_MOD_VERSATILITY = 471, // NYI
SPELL_AURA_472 = 472,
SPELL_AURA_PREVENT_DURABILITY_LOSS_FROM_COMBAT = 473, // Prevents durability loss from dealing/taking damage
SPELL_AURA_474 = 474,
- SPELL_AURA_475 = 475,
- SPELL_AURA_476 = 476,
+ SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED = 475,
+ SPELL_AURA_MOD_CURRENCY_GAIN_LOOTED = 476,
SPELL_AURA_477 = 477,
SPELL_AURA_478 = 478,
SPELL_AURA_479 = 479,
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 9962a214f97..58375e3f0df 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -204,7 +204,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleAuraModBaseResistancePCT, //142 SPELL_AURA_MOD_BASE_RESISTANCE_PCT
&AuraEffect::HandleAuraModResistanceExclusive, //143 SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE
&AuraEffect::HandleNoImmediateEffect, //144 SPELL_AURA_SAFE_FALL implemented in WorldSession::HandleMovementOpcodes
- &AuraEffect::HandleAuraModPetTalentsPoints, //145 SPELL_AURA_MOD_PET_TALENT_POINTS
+ &AuraEffect::HandleNULL, //145 used by 5 spells in 6.2.4 dbc but the meaning of this aura changed (it's used by mind control spells but isn't the control itself)
&AuraEffect::HandleNoImmediateEffect, //146 SPELL_AURA_ALLOW_TAME_PET_TYPE
&AuraEffect::HandleModStateImmunityMask, //147 SPELL_AURA_MECHANIC_IMMUNITY_MASK
&AuraEffect::HandleAuraRetainComboPoints, //148 SPELL_AURA_RETAIN_COMBO_POINTS
@@ -406,7 +406,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //344 SPELL_AURA_MOD_AUTOATTACK_DAMAGE
&AuraEffect::HandleNoImmediateEffect, //345 SPELL_AURA_BYPASS_ARMOR_FOR_CASTER
&AuraEffect::HandleEnableAltPower, //346 SPELL_AURA_ENABLE_ALT_POWER
- &AuraEffect::HandleNULL, //347 SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE
+ &AuraEffect::HandleNoImmediateEffect, //347 SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE implemented in SpellHistory::StartCooldown
&AuraEffect::HandleNoImmediateEffect, //348 SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT implemented in WorldSession::HandleLootMoneyOpcode
&AuraEffect::HandleNoImmediateEffect, //349 SPELL_AURA_MOD_CURRENCY_GAIN implemented in Player::ModifyCurrency
&AuraEffect::HandleNULL, //350 SPELL_AURA_MOD_GATHERING_ITEMS_GAINED_PERCENT
@@ -435,11 +435,11 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //373
&AuraEffect::HandleNULL, //374 SPELL_AURA_MODIFY_FALL_DAMAGE_PCT
&AuraEffect::HandleNULL, //375
- &AuraEffect::HandleNULL, //376 SPELL_AURA_MOD_CURRENCY_GAIN_2
+ &AuraEffect::HandleNULL, //376 SPELL_AURA_MOD_CURRENCY_GAIN_FROM_SOURCE
&AuraEffect::HandleNULL, //377 SPELL_AURA_CAST_WHILE_WALKING_2
&AuraEffect::HandleNULL, //378
&AuraEffect::HandleNULL, //379
- &AuraEffect::HandleNULL, //380
+ &AuraEffect::HandleNoImmediateEffect, //380 SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE implemented in Spell::TriggerGlobalCooldown
&AuraEffect::HandleNULL, //381
&AuraEffect::HandleNULL, //382 SPELL_AURA_MOD_PET_STAT_PCT
&AuraEffect::HandleNULL, //383 SPELL_AURA_IGNORE_SPELL_COOLDOWN
@@ -453,7 +453,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //391
&AuraEffect::HandleNULL, //392
&AuraEffect::HandleNULL, //393
- &AuraEffect::HandleNULL, //394
+ &AuraEffect::HandleShowConfirmationPrompt, //394 SPELL_AURA_SHOW_CONFIRMATION_PROMPT
&AuraEffect::HandleNULL, //395 SPELL_AURA_AREA_TRIGGER
&AuraEffect::HandleNULL, //396
&AuraEffect::HandleNULL, //397
@@ -475,8 +475,8 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //413
&AuraEffect::HandleNULL, //414
&AuraEffect::HandleNULL, //415
- &AuraEffect::HandleNULL, //416 SPELL_AURA_MOD_COOLDOWN_BY_HASTE_EFFECTS
- &AuraEffect::HandleNULL, //417 SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE_EFFECTS
+ &AuraEffect::HandleNoImmediateEffect, //416 SPELL_AURA_MOD_COOLDOWN_BY_HASTE_REGEN implemented in SpellHistory::StartCooldown
+ &AuraEffect::HandleNoImmediateEffect, //417 SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE_REGEN implemented in Spell::TriggerGlobalCooldown
&AuraEffect::HandleNULL, //418 SPELL_AURA_MOD_MAX_POWER
&AuraEffect::HandleAuraModIncreaseBaseManaPercent, //419 SPELL_AURA_MOD_BASE_MANA_PCT
&AuraEffect::HandleNULL, //420 SPELL_AURA_MOD_BATTLE_PET_XP_PCT
@@ -499,10 +499,10 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //437
&AuraEffect::HandleNULL, //438
&AuraEffect::HandleNULL, //439
- &AuraEffect::HandleNULL, //440
- &AuraEffect::HandleNULL, //441
- &AuraEffect::HandleNULL, //442
- &AuraEffect::HandleNULL, //443
+ &AuraEffect::HandleNULL, //440 SPELL_AURA_MOD_MULTISTRIKE_DAMAGE
+ &AuraEffect::HandleNULL, //441 SPELL_AURA_MOD_MULTISTRIKE_CHANCE
+ &AuraEffect::HandleNULL, //442 SPELL_AURA_MOD_READINESS
+ &AuraEffect::HandleNULL, //443 SPELL_AURA_MOD_LEECH
&AuraEffect::HandleNULL, //444
&AuraEffect::HandleNULL, //445
&AuraEffect::HandleNULL, //446
@@ -510,7 +510,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //448
&AuraEffect::HandleNULL, //449
&AuraEffect::HandleNULL, //450
- &AuraEffect::HandleNULL, //451 SPELL_AURA_OVERRIDE_PET_SPECS
+ &AuraEffect::HandleOverridePetSpecs, //451 SPELL_AURA_OVERRIDE_PET_SPECS
&AuraEffect::HandleNULL, //452
&AuraEffect::HandleNoImmediateEffect, //453 SPELL_AURA_CHARGE_RECOVERY_MOD implemented in SpellHistory::GetChargeRecoveryTime
&AuraEffect::HandleNoImmediateEffect, //454 SPELL_AURA_CHARGE_RECOVERY_MULTIPLIER implemented in SpellHistory::GetChargeRecoveryTime
@@ -528,14 +528,14 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&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::HandleShowConfirmationPrompt, //469 SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY
&AuraEffect::HandleNULL, //470
- &AuraEffect::HandleNULL, //471
+ &AuraEffect::HandleNULL, //471 SPELL_AURA_MOD_VERSATILITY
&AuraEffect::HandleNULL, //472
&AuraEffect::HandleNoImmediateEffect, //473 SPELL_AURA_PREVENT_DURABILITY_LOSS_FROM_COMBAT implemented in Player::DurabilityPointLossForEquipSlot
&AuraEffect::HandleNULL, //474
- &AuraEffect::HandleNULL, //475
- &AuraEffect::HandleNULL, //476
+ &AuraEffect::HandleAllowUsingGameobjectsWhileMounted, //475 SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED
+ &AuraEffect::HandleNULL, //476 SPELL_AURA_MOD_CURRENCY_GAIN_LOOTED
&AuraEffect::HandleNULL, //477
&AuraEffect::HandleNULL, //478
&AuraEffect::HandleNULL, //479
@@ -706,6 +706,11 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
break;
}
}
+ case SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY:
+ if (caster)
+ amount = caster->GetMap()->GetDifficultyID();
+ m_canBeRecalculated = false;
+ break;
default:
break;
}
@@ -846,6 +851,9 @@ void AuraEffect::ChangeAmount(int32 newAmount, bool mark, bool onStackOrReapply)
for (std::list<AuraApplication*>::const_iterator apptItr = effectApplications.begin(); apptItr != effectApplications.end(); ++apptItr)
if ((*apptItr)->HasEffect(GetEffIndex()))
HandleEffect(*apptItr, handleMask, true);
+
+ if (GetSpellInfo()->HasAttribute(SPELL_ATTR8_AURA_SEND_AMOUNT))
+ GetBase()->SetNeedClientUpdateForTargets();
}
void AuraEffect::HandleEffect(AuraApplication * aurApp, uint8 mode, bool apply)
@@ -2584,21 +2592,6 @@ void AuraEffect::HandleAuraUntrackable(AuraApplication const* aurApp, uint8 mode
/*** SKILLS & TALENTS ***/
/****************************/
-void AuraEffect::HandleAuraModPetTalentsPoints(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const
-{
- if (!(mode & AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK))
- return;
-
- Unit* target = aurApp->GetTarget();
-
- if (target->GetTypeId() != TYPEID_PLAYER)
- return;
-
- // Recalculate pet talent points
- if (Pet* pet = target->ToPlayer()->GetPet())
- pet->InitTalentForLevel();
-}
-
void AuraEffect::HandleAuraModSkill(AuraApplication const* aurApp, uint8 mode, bool apply) const
{
if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_SKILL)))
@@ -6603,3 +6596,55 @@ void AuraEffect::HandleModSpellCategoryCooldown(AuraApplication const* aurApp, u
if (Player* player = aurApp->GetTarget()->ToPlayer())
player->SendSpellCategoryCooldowns();
}
+
+void AuraEffect::HandleShowConfirmationPrompt(AuraApplication const* aurApp, uint8 mode, bool apply) const
+{
+ if (!(mode & AURA_EFFECT_HANDLE_REAL))
+ return;
+
+ Player* player = aurApp->GetTarget()->ToPlayer();
+ if (!player)
+ return;
+
+ if (apply)
+ player->AddTemporarySpell(_effectInfo->TriggerSpell);
+ else
+ player->RemoveTemporarySpell(_effectInfo->TriggerSpell);
+}
+
+void AuraEffect::HandleOverridePetSpecs(AuraApplication const* aurApp, uint8 mode, bool apply) const
+{
+ if (!(mode & AURA_EFFECT_HANDLE_REAL))
+ return;
+
+ Player* player = aurApp->GetTarget()->ToPlayer();
+ if (!player)
+ return;
+
+ if (player->getClass() != CLASS_HUNTER)
+ return;
+
+ Pet* pet = player->GetPet();
+ if (!pet)
+ return;
+
+ ChrSpecializationEntry const* currSpec = sChrSpecializationStore.LookupEntry(pet->GetSpecialization());
+ if (!currSpec)
+ return;
+
+ pet->SetSpecialization(sDB2Manager.GetChrSpecializationByIndex(apply ? PET_SPEC_OVERRIDE_CLASS_INDEX : 0, currSpec->OrderIndex)->ID);
+}
+
+void AuraEffect::HandleAllowUsingGameobjectsWhileMounted(AuraApplication const* aurApp, uint8 mode, bool apply) const
+{
+ if (!(mode & AURA_EFFECT_HANDLE_REAL))
+ return;
+
+ if (aurApp->GetTarget()->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ if (apply)
+ aurApp->GetTarget()->SetFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED);
+ else if (!aurApp->GetTarget()->HasAuraType(SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED))
+ aurApp->GetTarget()->RemoveFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED);
+}
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h
index 46a0ccdabc6..8df069df7f3 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.h
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.h
@@ -174,7 +174,6 @@ class TC_GAME_API AuraEffect
void HandleAuraModStalked(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraUntrackable(AuraApplication const* aurApp, uint8 mode, bool apply) const;
// skills & talents
- void HandleAuraModPetTalentsPoints(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraModSkill(AuraApplication const* aurApp, uint8 mode, bool apply) const;
// movement
void HandleAuraMounted(AuraApplication const* aurApp, uint8 mode, bool apply) const;
@@ -304,6 +303,9 @@ class TC_GAME_API AuraEffect
void HandleAuraForceWeather(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleEnableAltPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleModSpellCategoryCooldown(AuraApplication const* aurApp, uint8 mode, bool apply) const;
+ void HandleShowConfirmationPrompt(AuraApplication const* aurApp, uint8 mode, bool apply) const;
+ void HandleOverridePetSpecs(AuraApplication const* aurApp, uint8 mode, bool apply) const;
+ void HandleAllowUsingGameobjectsWhileMounted(AuraApplication const* aurApp, uint8 mode, bool apply) const;
// aura effect periodic tick handlers
void HandlePeriodicDummyAuraTick(Unit* target, Unit* caster) const;
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index ec060f253b9..d0af2af8f97 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -1760,6 +1760,10 @@ bool Aura::CanStackWith(Aura const* existingAura) const
return true; // Empty seat available (skip rest)
}
+ if (HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT) || HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY))
+ if (existingAura->HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT) || existingAura->HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY))
+ return false;
+
// spell of same spell rank chain
if (m_spellInfo->IsRankOf(existingSpellInfo))
{
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 005d15d8291..d109667cd85 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -4187,13 +4187,11 @@ void Spell::UpdateSpellCastDataAmmo(WorldPackets::Spells::SpellAmmo& ammo)
void Spell::SendSpellExecuteLog()
{
WorldPackets::CombatLog::SpellExecuteLog spellExecuteLog;
-
spellExecuteLog.Caster = m_caster->GetGUID();
spellExecuteLog.SpellID = m_spellInfo->Id;
for (SpellEffectInfo const* effect : GetEffects())
{
- WorldPackets::CombatLog::SpellExecuteLog::SpellLogEffect spellLogEffect;
if (!effect)
continue;
@@ -4202,6 +4200,9 @@ void Spell::SendSpellExecuteLog()
_tradeSkillTargets[effect->EffectIndex].empty() && _feedPetTargets[effect->EffectIndex].empty())
continue;
+ spellExecuteLog.Effects.emplace_back();
+
+ WorldPackets::CombatLog::SpellExecuteLog::SpellLogEffect& spellLogEffect = spellExecuteLog.Effects.back();
spellLogEffect.Effect = effect->Effect;
spellLogEffect.PowerDrainTargets = std::move(_powerDrainTargets[effect->EffectIndex]);
spellLogEffect.ExtraAttacksTargets = std::move(_extraAttacksTargets[effect->EffectIndex]);
@@ -4209,8 +4210,6 @@ void Spell::SendSpellExecuteLog()
spellLogEffect.GenericVictimTargets = std::move(_genericVictimTargets[effect->EffectIndex]);
spellLogEffect.TradeSkillTargets = std::move(_tradeSkillTargets[effect->EffectIndex]);
spellLogEffect.FeedPetTargets = std::move(_feedPetTargets[effect->EffectIndex]);
-
- spellExecuteLog.Effects.push_back(spellLogEffect);
}
if (!spellExecuteLog.Effects.empty())
@@ -7346,7 +7345,7 @@ bool Spell::HasGlobalCooldown() const
void Spell::TriggerGlobalCooldown()
{
int32 gcd = m_spellInfo->StartRecoveryTime;
- if (!gcd)
+ if (!gcd || !m_spellInfo->StartRecoveryCategory)
return;
// Only players or controlled units have global cooldown
@@ -7366,12 +7365,17 @@ void Spell::TriggerGlobalCooldown()
if (m_caster->GetTypeId() == TYPEID_PLAYER)
m_caster->ToPlayer()->ApplySpellMod(m_spellInfo->Id, SPELLMOD_GLOBAL_COOLDOWN, gcd, this);
+ bool isMeleeOrRangedSpell = m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MELEE ||
+ m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_RANGED ||
+ m_spellInfo->HasAttribute(SPELL_ATTR0_REQ_AMMO) ||
+ m_spellInfo->HasAttribute(SPELL_ATTR0_ABILITY);
+
// Apply haste rating
- gcd = int32(float(gcd) * m_caster->GetFloatValue(UNIT_MOD_CAST_SPEED));
- if (gcd < MIN_GCD)
- gcd = MIN_GCD;
- else if (gcd > MAX_GCD)
- gcd = MAX_GCD;
+ if (gcd > MIN_GCD && ((m_spellInfo->StartRecoveryCategory == 133 && !isMeleeOrRangedSpell) || m_caster->HasAuraTypeWithAffectMask(SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE, m_spellInfo)))
+ gcd = std::min<int32>(std::max<int32>(int32(float(gcd) * m_caster->GetFloatValue(UNIT_MOD_CAST_HASTE)), MIN_GCD), MAX_GCD);
+
+ if (gcd > MIN_GCD && m_caster->HasAuraTypeWithAffectMask(SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE_REGEN, m_spellInfo))
+ gcd = std::min<int32>(std::max<int32>(int32(float(gcd) * m_caster->GetFloatValue(UNIT_FIELD_MOD_HASTE_REGEN)), MIN_GCD), MAX_GCD);
}
m_caster->GetSpellHistory()->AddGlobalCooldown(m_spellInfo, gcd);
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 3e9dec9f485..11a92fd67b8 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -271,7 +271,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectNULL, //203 SPELL_EFFECT_203
&Spell::EffectNULL, //204 SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY
&Spell::EffectNULL, //205 SPELL_EFFECT_LAUNCH_QUEST_CHOICE
- &Spell::EffectNULL, //206 SPELL_EFFECT_206
+ &Spell::EffectNULL, //206 SPELL_EFFECT_ALTER_ITEM
&Spell::EffectNULL, //207 SPELL_EFFECT_LAUNCH_QUEST_TASK
&Spell::EffectNULL, //208 SPELL_EFFECT_208
&Spell::EffectNULL, //209 SPELL_EFFECT_209
@@ -1725,7 +1725,7 @@ void Spell::SendLoot(ObjectGuid guid, LootType loottype)
if (sScriptMgr->OnGossipHello(player, gameObjTarget))
return;
- if (gameObjTarget->AI()->GossipHello(player))
+ if (gameObjTarget->AI()->GossipHello(player, true))
return;
switch (gameObjTarget->GetGoType())
@@ -2728,8 +2728,6 @@ void Spell::EffectTameCreature(SpellEffIndex /*effIndex*/)
// caster have pet now
m_caster->SetMinion(pet, true);
- pet->InitTalentForLevel();
-
if (m_caster->GetTypeId() == TYPEID_PLAYER)
{
pet->SavePetToDB(PET_SAVE_AS_CURRENT);
@@ -3170,8 +3168,7 @@ void Spell::EffectSummonObjectWild(SpellEffIndex effIndex)
Map* map = target->GetMap();
- if (!pGameObj->Create(map->GenerateLowGuid<HighGuid::GameObject>(), gameobject_id, map,
- m_caster->GetPhaseMask(), x, y, z, target->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
+ if (!pGameObj->Create(gameobject_id, map, m_caster->GetPhaseMask(), x, y, z, target->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
{
delete pGameObj;
return;
@@ -3197,8 +3194,7 @@ void Spell::EffectSummonObjectWild(SpellEffIndex effIndex)
if (uint32 linkedEntry = pGameObj->GetGOInfo()->GetLinkedGameObjectEntry())
{
GameObject* linkedGO = new GameObject;
- if (linkedGO->Create(map->GenerateLowGuid<HighGuid::GameObject>(), linkedEntry, map,
- m_caster->GetPhaseMask(), x, y, z, target->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
+ if (linkedGO->Create(linkedEntry, map, m_caster->GetPhaseMask(), x, y, z, target->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
{
linkedGO->CopyPhaseFrom(m_caster);
@@ -3791,8 +3787,7 @@ void Spell::EffectDuel(SpellEffIndex effIndex)
uint32 gameobject_id = effectInfo->MiscValue;
Map* map = m_caster->GetMap();
- if (!pGameObj->Create(map->GenerateLowGuid<HighGuid::GameObject>(), gameobject_id,
- map, 0,
+ if (!pGameObj->Create(gameobject_id, map, 0,
m_caster->GetPositionX()+(unitTarget->GetPositionX()-m_caster->GetPositionX())/2,
m_caster->GetPositionY()+(unitTarget->GetPositionY()-m_caster->GetPositionY())/2,
m_caster->GetPositionZ(),
@@ -4097,8 +4092,7 @@ void Spell::EffectSummonObject(SpellEffIndex effIndex)
m_caster->GetClosePoint(x, y, z, DEFAULT_WORLD_OBJECT_SIZE);
Map* map = m_caster->GetMap();
- if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), go_id, map,
- 0, x, y, z, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY))
+ if (!go->Create(go_id, map, 0, x, y, z, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY))
{
delete go;
return;
@@ -4756,8 +4750,7 @@ void Spell::EffectTransmitted(SpellEffIndex effIndex)
GameObject* pGameObj = new GameObject;
- if (!pGameObj->Create(cMap->GenerateLowGuid<HighGuid::GameObject>(), name_id, cMap,
- 0, fx, fy, fz, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
+ if (!pGameObj->Create(name_id, cMap, 0, fx, fy, fz, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
{
delete pGameObj;
return;
@@ -4824,8 +4817,7 @@ void Spell::EffectTransmitted(SpellEffIndex effIndex)
if (uint32 linkedEntry = pGameObj->GetGOInfo()->GetLinkedGameObjectEntry())
{
GameObject* linkedGO = new GameObject;
- if (linkedGO->Create(cMap->GenerateLowGuid<HighGuid::GameObject>(), linkedEntry, cMap,
- 0, fx, fy, fz, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
+ if (linkedGO->Create(linkedEntry, cMap, 0, fx, fy, fz, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
{
linkedGO->CopyPhaseFrom(m_caster);
@@ -5178,8 +5170,6 @@ void Spell::EffectCreateTamedPet(SpellEffIndex /*effIndex*/)
// unitTarget has pet now
unitTarget->SetMinion(pet, true);
- pet->InitTalentForLevel();
-
if (unitTarget->GetTypeId() == TYPEID_PLAYER)
{
pet->SavePetToDB(PET_SAVE_AS_CURRENT);
diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp
index bb991b66cf9..b6c7fdc17ec 100644
--- a/src/server/game/Spells/SpellHistory.cpp
+++ b/src/server/game/Spells/SpellHistory.cpp
@@ -330,7 +330,7 @@ void SpellHistory::WritePacket(WorldPackets::Spells::SendSpellCharges* sendSpell
WorldPackets::Spells::SpellChargeEntry chargeEntry;
chargeEntry.Category = p.first;
chargeEntry.NextRecoveryTime = uint32(cooldownDuration.count());
- chargeEntry.ConsumedCharges = p.second.size();
+ chargeEntry.ConsumedCharges = uint8(p.second.size());
sendSpellCharges->Entries.push_back(chargeEntry);
}
}
@@ -359,6 +359,8 @@ void SpellHistory::WritePacket(WorldPackets::Pet::PetSpells* petSpells) const
if (categoryDuration.count() > 0)
petSpellCooldown.CategoryDuration = uint32(categoryDuration.count());
}
+ else
+ petSpellCooldown.CategoryDuration = 0x80000000;
petSpells->Cooldowns.push_back(petSpellCooldown);
}
@@ -375,14 +377,13 @@ void SpellHistory::WritePacket(WorldPackets::Pet::PetSpells* petSpells) const
WorldPackets::Pet::PetSpellHistory petChargeEntry;
petChargeEntry.CategoryID = p.first;
petChargeEntry.RecoveryTime = uint32(cooldownDuration.count());
- petChargeEntry.ConsumedCharges = p.second.size();
+ petChargeEntry.ConsumedCharges = int8(p.second.size());
petSpells->SpellHistory.push_back(petChargeEntry);
}
}
}
-
void SpellHistory::StartCooldown(SpellInfo const* spellInfo, uint32 itemId, Spell* spell /*= nullptr*/, bool onHold /*= false*/)
{
// init cooldown values
@@ -421,6 +422,18 @@ void SpellHistory::StartCooldown(SpellInfo const* spellInfo, uint32 itemId, Spel
modOwner->ApplySpellMod(spellInfo->Id, SPELLMOD_COOLDOWN, categoryCooldown, spell);
}
+ if (_owner->HasAuraTypeWithAffectMask(SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE, spellInfo))
+ {
+ cooldown = int32(cooldown * _owner->GetFloatValue(UNIT_MOD_CAST_HASTE));
+ categoryCooldown = int32(categoryCooldown * _owner->GetFloatValue(UNIT_MOD_CAST_HASTE));
+ }
+
+ if (_owner->HasAuraTypeWithAffectMask(SPELL_AURA_MOD_COOLDOWN_BY_HASTE_REGEN, spellInfo))
+ {
+ cooldown = int32(cooldown * _owner->GetFloatValue(UNIT_FIELD_MOD_HASTE_REGEN));
+ categoryCooldown = int32(categoryCooldown * _owner->GetFloatValue(UNIT_FIELD_MOD_HASTE_REGEN));
+ }
+
if (int32 cooldownMod = _owner->GetTotalAuraModifier(SPELL_AURA_MOD_COOLDOWN))
{
// Apply SPELL_AURA_MOD_COOLDOWN only to own spells
@@ -731,7 +744,7 @@ void SpellHistory::RestoreCharge(uint32 chargeCategoryId)
setSpellCharges.Category = chargeCategoryId;
if (!itr->second.empty())
setSpellCharges.NextRecoveryTime = uint32(std::chrono::duration_cast<std::chrono::milliseconds>(itr->second.front().RechargeEnd - Clock::now()).count());
- setSpellCharges.ConsumedCharges = itr->second.size();
+ setSpellCharges.ConsumedCharges = uint8(itr->second.size());
setSpellCharges.IsPet = player != _owner;
player->SendDirectMessage(setSpellCharges.Write());
@@ -802,7 +815,7 @@ int32 SpellHistory::GetChargeRecoveryTime(uint32 chargeCategoryId) const
int32 recoveryTime = chargeCategoryEntry->ChargeRecoveryTime;
recoveryTime += _owner->GetTotalAuraModifierByMiscValue(SPELL_AURA_CHARGE_RECOVERY_MOD, chargeCategoryId);
- float recoveryTimeF = recoveryTime;
+ float recoveryTimeF = float(recoveryTime);
recoveryTimeF *= _owner->GetTotalAuraMultiplierByMiscValue(SPELL_AURA_CHARGE_RECOVERY_MULTIPLIER, chargeCategoryId);
if (_owner->HasAuraType(SPELL_AURA_CHARGE_RECOVERY_AFFECTED_BY_HASTE))
@@ -923,7 +936,7 @@ void SpellHistory::RestoreCooldownStateAfterDuel()
for (auto const& c : _spellCooldowns)
{
Clock::time_point now = Clock::now();
- uint32 cooldownDuration = c.second.CooldownEnd > now ? std::chrono::duration_cast<std::chrono::milliseconds>(c.second.CooldownEnd - now).count() : 0;
+ uint32 cooldownDuration = uint32(c.second.CooldownEnd > now ? std::chrono::duration_cast<std::chrono::milliseconds>(c.second.CooldownEnd - now).count() : 0);
// cooldownDuration must be between 0 and 10 minutes in order to avoid any visual bugs
if (cooldownDuration <= 0 || cooldownDuration > 10 * MINUTE * IN_MILLISECONDS || c.second.OnHold)
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 6e8db741a3d..362d5e8df35 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -926,7 +926,7 @@ SpellEffectInfo::StaticData SpellEffectInfo::_data[TOTAL_SPELL_EFFECTS] =
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 203 SPELL_EFFECT_203
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 204 SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 205 SPELL_EFFECT_LAUNCH_QUEST_CHOICE
- {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 206 SPELL_EFFECT_206
+ {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_ITEM}, // 206 SPELL_EFFECT_ALTER_IETM
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 207 SPELL_EFFECT_LAUNCH_QUEST_TASK
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 208 SPELL_EFFECT_208
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 209 SPELL_EFFECT_209
@@ -2820,6 +2820,9 @@ inline float CalcPPMItemLevelMod(SpellProcsPerMinuteModEntry const* mod, int32 i
float SpellInfo::CalcProcPPM(Unit* caster, int32 itemLevel) const
{
float ppm = ProcBasePPM;
+ if (!caster)
+ return ppm;
+
for (SpellProcsPerMinuteModEntry const* mod : ProcPPMMods)
{
switch (mod->Type)
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 4262cf11e27..bf536765901 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -64,6 +64,7 @@
#include "SkillDiscovery.h"
#include "SkillExtraItems.h"
#include "SmartAI.h"
+#include "Metric.h"
#include "SupportMgr.h"
#include "TaxiPathGraph.h"
#include "TransportMgr.h"
@@ -438,6 +439,7 @@ void World::LoadConfigSettings(bool reload)
return;
}
sLog->LoadFromConfig();
+ sMetric->LoadFromConfigs();
}
m_defaultDbcLocale = LocaleConstant(sConfigMgr->GetIntDefault("DBC.Locale", 0));
@@ -2124,6 +2126,8 @@ void World::SetInitialWorldSettings()
TC_LOG_INFO("server.worldserver", "World initialized in %u minutes %u seconds", (startupDuration / 60000), ((startupDuration % 60000) / 1000));
+ TC_METRIC_EVENT("events", "World initialized", "World initialized in " + std::to_string(startupDuration / 60000) + " minutes " + std::to_string((startupDuration % 60000) / 1000) + " seconds");
+
if (uint32 realmId = sConfigMgr->GetIntDefault("RealmID", 0)) // 0 reserved for auth
sLog->SetRealmId(realmId);
}
@@ -2426,6 +2430,10 @@ void World::Update(uint32 diff)
ProcessCliCommands();
sScriptMgr->OnWorldUpdate(diff);
+
+ // Stats logger update
+ sMetric->Update();
+ TC_METRIC_VALUE("update_time_diff", diff);
}
void World::ForceGameEventUpdate()
diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp
index 22e9bfe704a..982a15e314d 100644
--- a/src/server/scripts/Commands/cs_gobject.cpp
+++ b/src/server/scripts/Commands/cs_gobject.cpp
@@ -146,9 +146,7 @@ public:
Map* map = player->GetMap();
GameObject* object = new GameObject;
- ObjectGuid::LowType guidLow = map->GenerateLowGuid<HighGuid::GameObject>();
-
- if (!object->Create(guidLow, objectInfo->entry, map, 0, x, y, z, o, 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY))
+ if (!object->Create(objectInfo->entry, map, 0, x, y, z, o, 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY))
{
delete object;
return false;
@@ -164,7 +162,7 @@ public:
// fill the gameobject data and save to the db
object->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), player->GetPhaseMask());
- guidLow = object->GetSpawnId();
+ ObjectGuid::LowType spawnId = 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
@@ -172,16 +170,16 @@ public:
object = new GameObject();
// this will generate a new guid if the object is in an instance
- if (!object->LoadGameObjectFromDB(guidLow, map))
+ if (!object->LoadGameObjectFromDB(spawnId, map))
{
delete object;
return false;
}
/// @todo is it really necessary to add both the real and DB table guid here ?
- sObjectMgr->AddGameobjectToGrid(guidLow, ASSERT_NOTNULL(sObjectMgr->GetGOData(guidLow)));
+ sObjectMgr->AddGameobjectToGrid(spawnId, ASSERT_NOTNULL(sObjectMgr->GetGOData(spawnId)));
- handler->PSendSysMessage(LANG_GAMEOBJECT_ADD, objectId, objectInfo->name.c_str(), guidLow, x, y, z);
+ handler->PSendSysMessage(LANG_GAMEOBJECT_ADD, objectId, objectInfo->name.c_str(), spawnId, x, y, z);
return true;
}
@@ -669,7 +667,7 @@ public:
int32 objectState = atoi(state);
if (objectType < 4)
- object->SetByteValue(GAMEOBJECT_BYTES_1, objectType, objectState);
+ object->SetByteValue(GAMEOBJECT_BYTES_1, uint8(objectType), uint8(objectState));
else if (objectType == 4)
object->SendCustomAnim(objectState);
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp
index 5fd9ff8028a..96acb89f1cb 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -1106,7 +1106,13 @@ public:
if (!*args)
return false;
- uint32 phase = (uint32) atoi((char*)args);
+ uint32 phaseID = uint32(atoi((char*)args));
+ if (!sPhaseStore.LookupEntry(phaseID))
+ {
+ handler->SendSysMessage(LANG_PHASE_NOTFOUND);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
Creature* creature = handler->getSelectedCreature();
if (!creature || creature->IsPet())
@@ -1117,8 +1123,8 @@ public:
}
creature->ClearPhases();
- creature->SetInPhase(phase, true, true);
- creature->SetDBPhase(phase);
+ creature->SetInPhase(phaseID, true, true);
+ creature->SetDBPhase(phaseID);
creature->SaveToDB();
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index 8c68fe4cc18..9d7c41ffd7b 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -1353,8 +1353,10 @@ class go_twilight_portal : public GameObjectScript
}
}
- bool GossipHello(Player* player) override
+ bool GossipHello(Player* player, bool isUse) override
{
+ if (!isUse)
+ return true;
if (_spellId != 0)
player->CastSpell(player, _spellId, true);
return true;
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
index 106c567b24e..d755fa15d23 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
@@ -1113,7 +1113,7 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript
me->RemoveAurasDueToSpell(SPELL_HARVEST_SOUL);
if (_instance->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE)
Talk(SAY_JAINA_ESCAPE_9);
- if (Transport* gunship = ObjectAccessor::GetTransport(*me, _instance->GetGuidData(DATA_GUNSHIP)))
+ if (Transport* gunship = ObjectAccessor::GetTransportOnMap(*me, _instance->GetGuidData(DATA_GUNSHIP)))
gunship->EnableMovement(true);
_instance->SetBossState(DATA_THE_LICH_KING_ESCAPE, DONE);
break;
@@ -1185,7 +1185,7 @@ class npc_the_lich_king_escape_hor : public CreatureScript
if (Creature* target = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_ESCAPE_LEADER)))
DoCast(target, SPELL_HARVEST_SOUL);
- if (Transport* gunship = ObjectAccessor::GetTransport(*me, _instance->GetGuidData(DATA_GUNSHIP)))
+ if (Transport* gunship = ObjectAccessor::GetTransportOnMap(*me, _instance->GetGuidData(DATA_GUNSHIP)))
gunship->EnableMovement(true);
break;
default:
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index 037b6a2988e..1a165780224 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -400,7 +400,7 @@ class instance_icecrown_citadel : public InstanceMapScript
return entry;
}
- uint32 GetGameObjectEntry(ObjectGuid::LowType /*guidLow*/, uint32 entry) override
+ uint32 GetGameObjectEntry(ObjectGuid::LowType /*spawnId*/, uint32 entry) override
{
switch (entry)
{
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
index ef6ccf5bf4b..69dbc7bf9e6 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
@@ -200,7 +200,7 @@ public:
if (zombie)
{
zombieToBeEatenGUID = zombie->GetGUID(); // save for later use
-
+
// the soon-to-be-eaten zombie should stop moving and stop attacking
zombie->AI()->SetData(DATA_ZOMBIE_STATE, STATE_ZOMBIE_TOBE_EATEN);
@@ -225,7 +225,7 @@ public:
case EVENT_KILL_ZOMBIE_SINGLE:
{
Creature* zombieToBeEaten = ObjectAccessor::GetCreature(*me, zombieToBeEatenGUID);
- if (zombieToBeEaten && zombieToBeEaten->IsAlive() && zombieToBeEaten->IsWithinDistInMap(me, 10.0))
+ if (zombieToBeEaten && zombieToBeEaten->IsAlive() && zombieToBeEaten->IsWithinDistInMap(me, 10.0))
DoCast(zombieToBeEaten, SPELL_ZOMBIE_CHOW_SEARCH_SINGLE); // do the killing + healing in done inside by spell script see below.
zombieToBeEatenGUID = ObjectGuid::Empty;
@@ -249,11 +249,11 @@ public:
if (zombie && zombie->IsAlive() && zombie->GetExactDist2d(me) > 18.0)
zombie = nullptr;
}
-
+
if (zombie) // cast the aoe spell only if at least one zombie is found nearby
{
Talk(EMOTE_DEVOURS_ALL);
- DoCastAOE(SPELL_ZOMBIE_CHOW_SEARCH_MULTI);
+ DoCastAOE(SPELL_ZOMBIE_CHOW_SEARCH_MULTI);
}
break;
}
@@ -269,7 +269,7 @@ public:
me->GetMotionMaster()->MoveIdle();
events.ScheduleEvent(EVENT_KILL_ZOMBIE_SINGLE, Seconds(1));
}
-
+
}
void DoAction(int32 action) override
@@ -405,17 +405,19 @@ public:
if (state == STATE_ZOMBIE_DECIMATED)
{
timer += diff;
- Creature* gluth = ObjectAccessor::GetCreature(*me, GluthGUID);
// Putting this in the UpdateAI loop fixes an issue where death gripping a decimated zombie would make the zombie stand still until the rest of the fight.
// Also fix the issue where if one or more zombie is rooted when decimates hits (and MovePoint() is called), the zombie teleport to the boss. pretty weird behavior.
- if (gluth && timer>1600 && me->GetExactDist2d(gluth) > 10.0 && me->CanFreeMove()) // it takes about 1600 ms for the animation to cycle. This way, the animation looks relatively smooth.
+ if (Creature* gluth = ObjectAccessor::GetCreature(*me, GluthGUID))
{
- me->GetMotionMaster()->MovePoint(0, gluth->GetPosition()); // isn't dynamic. So, to take into account Gluth's movement, it must be called periodicly.
- timer = 0;
- }
+ if (timer > 1600 && me->GetExactDist2d(gluth) > 10.0 && me->CanFreeMove()) // it takes about 1600 ms for the animation to cycle. This way, the animation looks relatively smooth.
+ {
+ me->GetMotionMaster()->MovePoint(0, gluth->GetPosition()); // isn't dynamic. So, to take into account Gluth's movement, it must be called periodicly.
+ timer = 0;
+ }
- if (me->GetExactDist2d(gluth) <= 10.0)
- me->StopMoving();
+ if (me->GetExactDist2d(gluth) <= 10.0)
+ me->StopMoving();
+ }
}
else if (state == STATE_ZOMBIE_NORMAL)
DoMeleeAttackIfReady();
@@ -430,10 +432,10 @@ public:
{
me->SetReactState(ReactStates::REACT_PASSIVE);
me->AttackStop();
- me->SetTarget(ObjectGuid::Empty);
+ me->SetTarget(ObjectGuid::Empty);
// at this point, the zombie should be non attacking and non moving.
- me->SetWalk(true); // it doesnt seem to work with MoveFollow() (but it does work with MovePoint()).
+ me->SetWalk(true); // it doesnt seem to work with MoveFollow() (but it does work with MovePoint()).
timer = 1000;
}
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 e5944841ad5..f6c829590b9 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
@@ -86,8 +86,7 @@ public:
void SpawnGameObject(uint32 entry, Position const& pos)
{
GameObject* go = new GameObject();
- if (!go->Create(instance->GenerateLowGuid<HighGuid::GameObject>(), entry, instance,
- PHASEMASK_NORMAL, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(),
+ if (!go->Create(entry, instance, PHASEMASK_NORMAL, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(),
0, 0, 0, 0, 120, GO_STATE_READY))
{
delete go;
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
index 0d8f9a6bce1..33afada15fd 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
@@ -977,8 +977,11 @@ class go_celestial_planetarium_access : public GameObjectScript
{
}
- bool GossipHello(Player* player) override
+ bool GossipHello(Player* player, bool isUse) override
{
+ if (!isUse)
+ return true;
+
if (go->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE))
return true;
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
index 59ff06ea66b..c7f49a67328 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
@@ -163,7 +163,7 @@ bool OutdoorPvPSI::HandleDropFlag(Player* player, uint32 spellId)
GameObject* go = new GameObject;
Map* map = player->GetMap();
- if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), 0, 0, 0, 0, 100, GO_STATE_READY))
+ if (!go->Create(SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), 0, 0, 0, 0, 100, GO_STATE_READY))
{
delete go;
return true;
@@ -194,7 +194,7 @@ bool OutdoorPvPSI::HandleDropFlag(Player* player, uint32 spellId)
GameObject* go = new GameObject;
Map* map = player->GetMap();
- if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), 0, 0, 0, 0, 100, GO_STATE_READY))
+ if (!go->Create(SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), 0, 0, 0, 0, 100, GO_STATE_READY))
{
delete go;
return true;
diff --git a/src/server/scripts/Pet/pet_mage.cpp b/src/server/scripts/Pet/pet_mage.cpp
index 9ec779703d3..659a24773b7 100644
--- a/src/server/scripts/Pet/pet_mage.cpp
+++ b/src/server/scripts/Pet/pet_mage.cpp
@@ -198,8 +198,8 @@ class npc_pet_mage_mirror_image : public CreatureScript
if (!target || me->GetVictim() != target)
{
Unit* ownerTarget = nullptr;
- if (Player* owner = me->GetCharmerOrOwner()->ToPlayer())
- ownerTarget = owner->GetSelectedUnit();
+ if (Player* ownerPlayer = me->GetCharmerOrOwner()->ToPlayer())
+ ownerTarget = ownerPlayer->GetSelectedUnit();
// recognize which victim will be choosen
if (ownerTarget && ownerTarget->GetTypeId() == TYPEID_PLAYER)
diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp
index 0829441e17a..ad43ed92d3e 100644
--- a/src/server/scripts/Spells/spell_shaman.cpp
+++ b/src/server/scripts/Spells/spell_shaman.cpp
@@ -442,7 +442,7 @@ class spell_sha_fulmination : public SpellScriptLoader
uint32 stacks = aura->GetCharges();
if (stacks > 1)
{
- SpellInfo const* triggerSpell = sSpellMgr->GetSpellInfo(aura->GetSpellEffectInfo(EFFECT_0)->TriggerSpell);
+ SpellInfo const* triggerSpell = sSpellMgr->AssertSpellInfo(aura->GetSpellEffectInfo(EFFECT_0)->TriggerSpell);
SpellEffectInfo const* triggerEffect = triggerSpell->GetEffect(EFFECT_0);
uint32 damage;
diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp
index 0e9a972a3fb..c9481f2e6b8 100644
--- a/src/server/scripts/World/go_scripts.cpp
+++ b/src/server/scripts/World/go_scripts.cpp
@@ -834,12 +834,11 @@ class go_soulwell : public GameObjectScript
{
}
- /// Due to the fact that this GameObject triggers CMSG_GAMEOBJECT_USE
- /// _and_ CMSG_GAMEOBJECT_REPORT_USE, this GossipHello hook is called
- /// twice. The script's handling is fine as it won't remove two charges
- /// on the well. We have to find how to segregate REPORT_USE and USE.
- bool GossipHello(Player* player) override
+ bool GossipHello(Player* player, bool isUse) override
{
+ if (!isUse)
+ return true;
+
Unit* owner = go->GetOwner();
if (!owner || owner->GetTypeId() != TYPEID_PLAYER || !player->IsInSameRaidWith(owner->ToPlayer()))
return true;
diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp
index 5d8d0819102..2d14e3301a3 100644
--- a/src/server/worldserver/Main.cpp
+++ b/src/server/worldserver/Main.cpp
@@ -45,6 +45,7 @@
#include "RealmList.h"
#include "DatabaseLoader.h"
#include "AppenderDB.h"
+#include "Metric.h"
#include <openssl/opensslv.h>
#include <openssl/crypto.h>
#include <boost/asio/io_service.hpp>
@@ -200,6 +201,13 @@ extern int main(int argc, char** argv)
LoadRealmInfo();
+ sMetric->Initialize(realm.Name, _ioService, []()
+ {
+ TC_METRIC_VALUE("online_players", sWorld->GetPlayerCount());
+ });
+
+ TC_METRIC_EVENT("events", "Worldserver started", "");
+
// Initialize the World
sScriptMgr->SetScriptLoader(AddScripts);
sWorld->SetInitialWorldSettings();
@@ -300,6 +308,9 @@ extern int main(int argc, char** argv)
StopDB();
+ TC_METRIC_EVENT("events", "Worldserver shutdown", "");
+ sMetric->ForceSend();
+
TC_LOG_INFO("server.worldserver", "Halting process...");
ShutdownCLIThread(cliThread);
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 3cd2222339c..73b5719ec18 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -37,6 +37,7 @@
# LOGGING SYSTEM SETTINGS
# CURRENCIES SETTINGS
# PACKET SPOOF PROTECTION SETTINGS
+# METRIC SETTINGS
#
###################################################################################################
@@ -3301,7 +3302,7 @@ AuctionHouseBot.Items.Amount.Yellow = 0
# Armor: 8
# Reagent: 1
# Projectile: 2
-# TradeGod: 10
+# TradeGood: 10
# Generic: 1
# Recipe: 6
# Quiver: 1
@@ -3853,3 +3854,42 @@ PacketSpoof.BanDuration = 86400
#
###################################################################################################
+
+###################################################################################################
+# METRIC SETTINGS
+#
+# These settings control the statistics sent to the metric database (currently InfluxDB)
+#
+# Metric.Enable
+# Description: Enables statistics sent to the metric database.
+# Default: 0 - (Disabled)
+# 1 - (Enabled)
+
+Metric.Enable = 0
+
+#
+# Metric.Interval
+# Description: Interval between every batch of data sent in seconds
+# Default: 10 seconds
+#
+
+Metric.Interval = 10
+
+#
+# Metric.ConnectionInfo
+# Description: Connection settings for metric database (currently InfluxDB).
+# Example: "hostname;port;database"
+# Default: "127.0.0.1;8086;worldserver"
+
+Metric.ConnectionInfo = "127.0.0.1;8086;worldserver"
+
+#
+# Metric.OverallStatusInterval
+# Description: Interval between every gathering of overall worldserver status data in seconds
+# Default: 1 second
+#
+
+Metric.OverallStatusInterval = 1
+
+#
+###################################################################################################