From b426262d1ba634e44829228b9edfce390f8a5080 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 21 May 2016 11:25:58 +0200 Subject: Core/PacketIO: Fixed LFGuildApplications structure --- src/server/game/Server/Packets/GuildFinderPackets.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; -- cgit v1.2.3 From 18d28e8dc603e4e55bf164edd6917d75e8a42774 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 22 May 2016 23:15:11 +0200 Subject: Core/PacketIO: Fixed sending OnHold pet cooldowns --- src/server/game/Spells/SpellHistory.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp index 7de2c2a9d46..82822a3b873 100644 --- a/src/server/game/Spells/SpellHistory.cpp +++ b/src/server/game/Spells/SpellHistory.cpp @@ -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); } @@ -382,7 +384,6 @@ void SpellHistory::WritePacket(WorldPackets::Pet::PetSpells* petSpells) const } } - void SpellHistory::StartCooldown(SpellInfo const* spellInfo, uint32 itemId, Spell* spell /*= nullptr*/, bool onHold /*= false*/) { // init cooldown values -- cgit v1.2.3 From dae31c9182315c68b109f577f6c0e8ed52c82969 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 23 May 2016 08:50:54 +0200 Subject: Update CMakeLists.txt --- dep/recastnavigation/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 # Copyright (C) 2005-2011 MaNGOS project # # This program is free software; you can redistribute it and/or modify -- cgit v1.2.3 From 40b38658c46ccabecc3b54588468d0846b35032d Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 23 May 2016 21:18:54 +0200 Subject: Core/DataStores: Fixed loading non-localized db2 strings --- src/server/shared/DataStores/DB2StorageLoader.cpp | 27 +++++++++++------------ 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/server/shared/DataStores/DB2StorageLoader.cpp b/src/server/shared/DataStores/DB2StorageLoader.cpp index d2be433806f..a1acd3b5eac 100644 --- a/src/server/shared/DataStores/DB2StorageLoader.cpp +++ b/src/server/shared/DataStores/DB2StorageLoader.cpp @@ -353,8 +353,7 @@ char* DB2FileLoader::AutoProduceStringsArrayHolders(const char* format, char* da std::size_t localizedStringFields = GetFormatLocalizedStringFieldCount(format); // each string field at load have array of string for each locale - std::size_t stringHolderSize = sizeof(char*) * TOTAL_LOCALES; - std::size_t stringHoldersRecordPoolSize = localizedStringFields * stringHolderSize + (stringFields - localizedStringFields) * sizeof(char*); + std::size_t stringHoldersRecordPoolSize = localizedStringFields * sizeof(LocalizedString) + (stringFields - localizedStringFields) * sizeof(char*); std::size_t stringHoldersPoolSize = stringHoldersRecordPoolSize * recordCount; char* stringHoldersPool = new char[stringHoldersPoolSize]; @@ -392,9 +391,9 @@ char* DB2FileLoader::AutoProduceStringsArrayHolders(const char* format, char* da char const*** slot = (char const***)(&dataTable[offset]); *slot = (char const**)(&stringHoldersPool[stringHoldersRecordPoolSize * y + stringFieldOffset]); if (format[x] == FT_STRING) - stringFieldOffset += stringHolderSize; + stringFieldOffset += sizeof(LocalizedString); else - ++stringFieldOffset; + stringFieldOffset += sizeof(char*); offset += sizeof(char*); break; @@ -497,19 +496,19 @@ char* DB2DatabaseLoader::Load(const char* format, HotfixDatabaseStatements prepa uint32 recordSize = DB2FileLoader::GetFormatRecordSize(format, &indexField); // we store flat holders pool as single memory block - size_t stringFields = DB2FileLoader::GetFormatStringFieldCount(format); + std::size_t stringFields = DB2FileLoader::GetFormatStringFieldCount(format); + std::size_t localizedStringFields = DB2FileLoader::GetFormatLocalizedStringFieldCount(format); // each string field at load have array of string for each locale - size_t stringHolderSize = sizeof(char*) * TOTAL_LOCALES; - size_t stringHoldersRecordPoolSize = stringFields * stringHolderSize; + std::size_t stringHoldersRecordPoolSize = localizedStringFields * sizeof(LocalizedString) + (stringFields - localizedStringFields) * sizeof(char*); if (stringFields) { - size_t stringHoldersPoolSize = stringHoldersRecordPoolSize * result->GetRowCount(); + std::size_t stringHoldersPoolSize = stringHoldersRecordPoolSize * result->GetRowCount(); stringHolders = new char[stringHoldersPoolSize]; // DB2 strings expected to have at least empty string - for (size_t i = 0; i < stringHoldersPoolSize / sizeof(char*); ++i) + for (std::size_t i = 0; i < stringHoldersPoolSize / sizeof(char*); ++i) ((char const**)stringHolders)[i] = nullStr; } else @@ -545,7 +544,7 @@ char* DB2DatabaseLoader::Load(const char* format, HotfixDatabaseStatements prepa { Field* fields = result->Fetch(); uint32 offset = 0; - uint32 stringFieldNumInRecord = 0; + uint32 stringFieldOffset = 0; uint32 indexValue; if (indexField >= 0) @@ -585,28 +584,28 @@ char* DB2DatabaseLoader::Load(const char* format, HotfixDatabaseStatements prepa case FT_STRING: { LocalizedString** slot = (LocalizedString**)(&dataValue[offset]); - *slot = (LocalizedString*)(&stringHolders[stringHoldersRecordPoolSize * rec + stringHolderSize * stringFieldNumInRecord]); + *slot = (LocalizedString*)(&stringHolders[stringHoldersRecordPoolSize * rec + stringFieldOffset]); ASSERT(*slot); // Value in database in main table field must be for enUS locale if (char* str = AddString(&(*slot)->Str[LOCALE_enUS], fields[f].GetString())) stringPool.push_back(str); - ++stringFieldNumInRecord; + stringFieldOffset += sizeof(LocalizedString); offset += sizeof(char*); break; } case FT_STRING_NOT_LOCALIZED: { char const** slot = (char const**)(&dataValue[offset]); - *slot = (char*)(&stringHolders[stringHoldersRecordPoolSize * rec + stringHolderSize * stringFieldNumInRecord]); + *slot = (char*)(&stringHolders[stringHoldersRecordPoolSize * rec + sizeof(LocalizedString) * stringFieldOffset]); ASSERT(*slot); // Value in database in main table field must be for enUS locale if (char* str = AddString(slot, fields[f].GetString())) stringPool.push_back(str); - ++stringFieldNumInRecord; + stringFieldOffset += sizeof(char*); offset += sizeof(char*); break; } -- cgit v1.2.3 From a6205e40350e283f81d3fcc6672bfdbd2b8aa4c7 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 24 May 2016 18:51:31 +0200 Subject: Core/Containers: Warning fixes and RandomResizeList with predicate optimization (cherry picked from commit 0fbfa8ead04a59f3eef70f4f2e454e318d895bd9) --- src/common/Utilities/Containers.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 - void RandomResizeList(std::list &list, uint32 size) + void RandomResizeList(std::list& 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); } /* -- cgit v1.2.3 From 6b30b88910c12e5b1619a1a086b7014e95055a30 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 25 May 2016 20:55:28 +0200 Subject: Core/Bnet: Order account list by id when the bnet account has more than 1 game account attached --- src/server/database/Database/Implementation/LoginDatabase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); -- cgit v1.2.3 From 49b9c1c9b292dbb4a2b8cc66814ae688d2720278 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Thu, 26 May 2016 04:26:54 +0200 Subject: DB/Creature: Missing Flightpath gossip Turida Coldwind By tkrokli, closes #16508 --- sql/updates/world/6.x/2016_05_26_00_world.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_26_00_world.sql 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); -- cgit v1.2.3 From f830cf30bef30419adc1d30118e9a973192c97a1 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Thu, 26 May 2016 04:30:23 +0200 Subject: DB/Creature: Prince Liam Greymane (34850) fix By Heaven31415, closes #16771 --- sql/updates/world/6.x/2016_05_26_01_world.sql | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_26_01_world.sql 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); -- cgit v1.2.3 From 027e32ff67ff2f5874490fc959daf6d996b92aab Mon Sep 17 00:00:00 2001 From: Aokromes Date: Thu, 26 May 2016 04:34:25 +0200 Subject: DB/Creature: Disciple of Hate SAI (Baradin Hold - Alizabal thrash) By Ulduar, closes #16802 --- sql/updates/world/6.x/2016_05_26_02_world.sql | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_26_02_world.sql 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"); -- cgit v1.2.3 From 507e722ee41bfa00d2d33c645bf72af3e264a86a Mon Sep 17 00:00:00 2001 From: Aokromes Date: Thu, 26 May 2016 04:43:36 +0200 Subject: DB/Quest:Life of the Party By Wylath, closes #17110 --- sql/updates/world/6.x/2016_05_26_03_world.sql | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_26_03_world.sql 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); -- cgit v1.2.3 From 3e1d8636a96ccd5ba1a7b7a5f8b4cffed22b9ea8 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Thu, 26 May 2016 04:50:52 +0200 Subject: DB/Quest: Thirst Unending By CrisPj, closes #17098 --- sql/updates/world/6.x/2016_05_26_04_world.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_26_04_world.sql 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)"); -- cgit v1.2.3 From 18345d785bd84411fe15192e4dc4a306293593bc Mon Sep 17 00:00:00 2001 From: Aokromes Date: Thu, 26 May 2016 04:59:15 +0200 Subject: DB/Misc: Fix parent map for Throne of Thunder By Ulduar, closes #15282 --- sql/updates/world/6.x/2016_05_26_05_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_26_05_world.sql 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; -- cgit v1.2.3 From 2fffa51a65ff8d963c4ec0dc6f3b483a739b9438 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Thu, 26 May 2016 06:20:47 +0200 Subject: DB/Creature: Cabal Ritualists don't cast Crystal Channel By Saben65, closes #16986 --- sql/updates/world/6.x/2016_05_26_06_world.sql | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_26_06_world.sql 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..705a6c3ac21 --- /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`=0 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."); -- cgit v1.2.3 From b539ac6afafbddcb75855511d66d97bbc2e95c30 Mon Sep 17 00:00:00 2001 From: Shocker Date: Thu, 26 May 2016 13:09:56 +0300 Subject: Core/GameObjects: Add isUse parameter to GossipHello for distinction between CMSG_GAMEOBJECT_USE and CMSG_GAMEOBJECT_REPORT_USE --- src/server/game/AI/CoreAI/GameObjectAI.h | 2 +- src/server/game/AI/SmartScripts/SmartAI.cpp | 2 +- src/server/game/AI/SmartScripts/SmartAI.h | 2 +- src/server/game/Entities/GameObject/GameObject.cpp | 2 +- src/server/game/Handlers/SpellHandler.cpp | 2 +- src/server/game/Spells/SpellEffects.cpp | 2 +- .../Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp | 4 +++- .../Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp | 5 ++++- src/server/scripts/World/go_scripts.cpp | 9 ++++----- 9 files changed, 17 insertions(+), 13 deletions(-) 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/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 42d7ff404db..a43ab95c80c 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1247,7 +1247,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/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 7d639d57f80..45ce6399c24 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -235,7 +235,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/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index d605e1d8679..58f1f24e584 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1721,7 +1721,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()) 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/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/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; -- cgit v1.2.3 From 6c71c8694f91f6254e8a913f0550e4ff78cb6875 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 26 May 2016 14:47:36 +0200 Subject: Core/Auras: Implemented SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE, SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE, SPELL_AURA_MOD_COOLDOWN_BY_HASTE_REGEN and SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE_REGEN --- src/server/game/Spells/Auras/SpellAuraDefines.h | 8 ++++---- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 8 ++++---- src/server/game/Spells/Spell.cpp | 17 +++++++++++------ src/server/game/Spells/SpellHistory.cpp | 22 +++++++++++++++++----- 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 5130ebd7876..d781a8822b8 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 @@ -437,7 +437,7 @@ enum AuraType 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 @@ -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 diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index a35d5e37b47..911db589f2d 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -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 @@ -439,7 +439,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &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 @@ -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 diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index dac9b82549c..aa02dfa3f63 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -7450,7 +7450,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 @@ -7470,12 +7470,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(std::max(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(std::max(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/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp index 82822a3b873..fe56eb3c01b 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); } } @@ -377,7 +377,7 @@ 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); } @@ -422,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 @@ -735,7 +747,7 @@ void SpellHistory::RestoreCharge(SpellCategoryEntry const* chargeCategoryEntry) setSpellCharges.Category = chargeCategoryEntry->ID; if (!itr->second.empty()) setSpellCharges.NextRecoveryTime = uint32(std::chrono::duration_cast(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()); @@ -807,7 +819,7 @@ int32 SpellHistory::GetChargeRecoveryTime(SpellCategoryEntry const* chargeCatego int32 recoveryTime = chargeCategoryEntry->ChargeRecoveryTime; recoveryTime += _owner->GetTotalAuraModifierByMiscValue(SPELL_AURA_CHARGE_RECOVERY_MOD, chargeCategoryEntry->ID); - float recoveryTimeF = recoveryTime; + float recoveryTimeF = float(recoveryTime); recoveryTimeF *= _owner->GetTotalAuraMultiplierByMiscValue(SPELL_AURA_CHARGE_RECOVERY_MULTIPLIER, chargeCategoryEntry->ID); if (_owner->HasAuraType(SPELL_AURA_CHARGE_RECOVERY_AFFECTED_BY_HASTE)) @@ -928,7 +940,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(c.second.CooldownEnd - now).count() : 0; + uint32 cooldownDuration = uint32(c.second.CooldownEnd > now ? std::chrono::duration_cast(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) -- cgit v1.2.3 From bc1a81747ae032bc2ae3681d99f5f6058d20caff Mon Sep 17 00:00:00 2001 From: myran2 Date: Fri, 29 Apr 2016 11:49:07 -0400 Subject: Core/Pets: Implemented pet specializations (#17058) * Use prepared statements in Pet::SavePetToDB * Add support for resetting all of a player's pet specializations * Send one big spell unlearn/learn packet instead of lots of small ones * Implemented Adaptation talent --- sql/base/characters_database.sql | 3 +- .../characters/6.x/2016_05_26_00_characters.sql | 1 + .../Database/Implementation/CharacterDatabase.cpp | 12 +- .../Database/Implementation/CharacterDatabase.h | 3 + src/server/game/Entities/Pet/Pet.cpp | 379 +++++++++------------ src/server/game/Entities/Pet/Pet.h | 18 +- src/server/game/Entities/Player/Player.cpp | 3 +- src/server/game/Handlers/CharacterHandler.cpp | 12 +- src/server/game/Handlers/PetHandler.cpp | 34 ++ src/server/game/Server/Packets/PetPackets.cpp | 13 + src/server/game/Server/Packets/PetPackets.h | 21 ++ src/server/game/Server/Protocol/Opcodes.cpp | 4 +- src/server/game/Server/WorldSession.h | 2 + src/server/game/Spells/Auras/SpellAuraEffects.cpp | 42 ++- src/server/game/Spells/Auras/SpellAuraEffects.h | 2 +- src/server/game/Spells/SpellEffects.cpp | 4 - 16 files changed, 294 insertions(+), 259 deletions(-) create mode 100644 sql/updates/characters/6.x/2016_05_26_00_characters.sql diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index bccc4176530..2d5104196b6 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`) @@ -3109,7 +3110,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/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index a7e7394fc87..24f798f7f98 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -649,10 +649,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); @@ -660,6 +660,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 18faea4c5b0..459b0dfe98d 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.h +++ b/src/server/database/Database/Implementation/CharacterDatabase.h @@ -559,6 +559,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/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index deefff1423b..4678d3d0455 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 = sChrSpecializationByIndexStore[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 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 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 learnedSpells; + + if (std::vector 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 unlearnedSpells; + + for (uint32 i = 0; i < MAX_SPECIALIZATIONS; ++i) + { + if (ChrSpecializationEntry const* specialization = sChrSpecializationByIndexStore[0][i]) + { + if (std::vector 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 = sChrSpecializationByIndexStore[PET_SPEC_OVERRIDE_CLASS_INDEX][i]) + { + if (std::vector 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 const& spellIds); void learnSpellHighRank(uint32 spellid); void InitLevelupSpellsForLevel(); bool unlearnSpell(uint32 spell_id, bool learn_prev, bool clear_ab = true); + void unlearnSpells(std::vector 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 1efc4988a08..da964ef691f 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -20162,7 +20162,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(); @@ -25954,7 +25954,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/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index ee75a4ed58c..95a1317b17c 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1077,7 +1077,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_DEL_ALL_PET_SPELLS_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(); diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index a1e57ff087a..849a5097c61 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -722,3 +722,37 @@ void WorldSession::SendPetNameInvalid(uint32 error, const std::string& name, Dec SendPacket(petNameInvalid.Write()); } + +void WorldSession::HandlePetSetSpecializationOpcode(WorldPackets::Pet::LearnPetSpecializationGroup& learnPetSpecializationGroup) +{ + if (!_player->IsInWorld()) + return; + + Pet* pet = ObjectAccessor::GetPet(*_player, learnPetSpecializationGroup.PetGUID); + + if (!pet || !pet->IsPet() || ((Pet*)pet)->getPetType() != HUNTER_PET || + pet->GetOwnerGUID() != _player->GetGUID() || !pet->GetCharmInfo()) + return; + + if (learnPetSpecializationGroup.SpecGroupIndex >= MAX_SPECIALIZATIONS) + { + TC_LOG_DEBUG("network", "WORLD: HandlePetSetSpecializationOpcode - specialization index %u out of range", learnPetSpecializationGroup.SpecGroupIndex); + return; + } + + uint32 specIndex = _player->HasAuraType(SPELL_AURA_OVERRIDE_PET_SPECS) ? PET_SPEC_OVERRIDE_CLASS_INDEX : 0; + ChrSpecializationEntry const* petSpec = sChrSpecializationByIndexStore[specIndex][learnPetSpecializationGroup.SpecGroupIndex]; + if (!petSpec) + { + TC_LOG_DEBUG("network", "WORLD: HandlePetSetSpecializationOpcode - specialization index %u not found", learnPetSpecializationGroup.SpecGroupIndex); + return; + } + + if (_player->getLevel() < MIN_SPECIALIZATION_LEVEL) + { + TC_LOG_DEBUG("network", "WORLD: HandlePetSetSpecializationOpcode - player level too low for specializations"); + return; + } + + pet->SetSpecialization(petSpec->ID); +} diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp index b07a74dfb10..36a71ba9c53 100644 --- a/src/server/game/Server/Packets/PetPackets.cpp +++ b/src/server/game/Server/Packets/PetPackets.cpp @@ -185,3 +185,16 @@ void WorldPackets::Pet::PetCancelAura::Read() _worldPacket >> PetGUID; _worldPacket >> SpellID; } + +void WorldPackets::Pet::LearnPetSpecializationGroup::Read() +{ + _worldPacket >> PetGUID; + _worldPacket >> SpecGroupIndex; +} + +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..f11a71a936c 100644 --- a/src/server/game/Server/Packets/PetPackets.h +++ b/src/server/game/Server/Packets/PetPackets.h @@ -226,6 +226,27 @@ namespace WorldPackets int32 SpellID = 0; }; + class LearnPetSpecializationGroup final : public ClientPacket + { + public: + LearnPetSpecializationGroup(WorldPacket&& packet) : ClientPacket(CMSG_LEARN_PET_SPECIALIZATION_GROUP, std::move(packet)) { } + + void Read() override; + + ObjectGuid PetGUID; + uint32 SpecGroupIndex = 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 44d05585373..c69d3613ada 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -430,7 +430,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_JOIN_RATED_BATTLEGROUND, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_KEEP_ALIVE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess); DEFINE_HANDLER(CMSG_KEYBOUND_OVERRIDE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_LEARN_PET_SPECIALIZATION_GROUP, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_LEARN_PET_SPECIALIZATION_GROUP, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Pet::LearnPetSpecializationGroup, &WorldSession::HandlePetSetSpecializationOpcode); DEFINE_HANDLER(CMSG_LEARN_TALENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Talent::LearnTalents, &WorldSession::HandleLearnTalentsOpcode); DEFINE_HANDLER(CMSG_LEAVE_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::LeaveGroup, &WorldSession::HandleLeaveGroupOpcode); DEFINE_HANDLER(CMSG_LEAVE_PET_BATTLE_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); @@ -1586,7 +1586,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); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 3d661e1a8ff..b65a8b30d56 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -506,6 +506,7 @@ namespace WorldPackets class PetAction; class PetCancelAura; class PetSetAction; + class LearnPetSpecializationGroup; } namespace Petition @@ -1516,6 +1517,7 @@ class TC_GAME_API WorldSession void HandlePetCancelAuraOpcode(WorldPackets::Spells::PetCancelAura& packet); void HandlePetSpellAutocastOpcode(WorldPackets::Pet::PetSpellAutocast& packet); void HandlePetCastSpellOpcode(WorldPackets::Spells::PetCastSpell& petCastSpell); + void HandlePetSetSpecializationOpcode(WorldPackets::Pet::LearnPetSpecializationGroup& learnPetSpecializationGroup); void HandleSetActionBarToggles(WorldPackets::Character::SetActionBarToggles& packet); diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 911db589f2d..d866691bda5 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 @@ -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 @@ -2601,21 +2601,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))) @@ -6666,3 +6651,26 @@ void AuraEffect::HandleModSpellCategoryCooldown(AuraApplication const* aurApp, u if (Player* player = aurApp->GetTarget()->ToPlayer()) player->SendSpellCategoryCooldowns(); } + +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(sChrSpecializationByIndexStore[apply ? PET_SPEC_OVERRIDE_CLASS_INDEX : 0][currSpec->OrderIndex]->ID); +} diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 0d907e4148c..512852a39ec 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; @@ -305,6 +304,7 @@ 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 HandleOverridePetSpecs(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/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 58f1f24e584..b72c03dc08a 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2724,8 +2724,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); @@ -5265,8 +5263,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); -- cgit v1.2.3 From 23e0369821a8b5c9547b0d2bac32b5cb39cd88c3 Mon Sep 17 00:00:00 2001 From: Kittnz Date: Thu, 26 May 2016 19:35:17 +0200 Subject: DB/Creature: Add missing Anvilrage Overseer SAI (6.x Only) by Kodekc Closes #17148 --- sql/updates/world/6.x/2016_05_26_07_world.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_26_07_world.sql 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..184a79db922 --- /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)'); -- cgit v1.2.3 From 5776a256b8eae7125e7eba229709b2872b33304b Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 26 May 2016 23:13:31 +0200 Subject: Core/Pets: Fixed wrong prepared statement in bc1a81747ae032bc2ae3681d99f5f6058d20caff Thanks Lordron for pointing it out --- src/server/database/Database/Implementation/CharacterDatabase.cpp | 2 +- src/server/game/Handlers/CharacterHandler.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index 24f798f7f98..67aa54c5679 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -660,7 +660,7 @@ 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_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); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 95a1317b17c..ee1d69571f0 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1084,7 +1084,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder) CharacterDatabase.Execute(stmtSpells); // Then reset all of the player's pet specualizations - PreparedStatement* stmtSpec = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_PET_SPELLS_BY_OWNER); + PreparedStatement* stmtSpec = CharacterDatabase.GetPreparedStatement(CHAR_UPD_PET_SPECS_BY_OWNER); stmtSpec->setUInt64(0, pCurrChar->GetGUID().GetCounter()); CharacterDatabase.Execute(stmtSpec); } -- cgit v1.2.3 From d60fe0e5d55eeba9d8c422b7135e789f4af4b4b3 Mon Sep 17 00:00:00 2001 From: Golrag Date: Fri, 27 May 2016 15:17:51 +0200 Subject: Core/Battleground: Areatriggers will now check if player leaves the start area before the battleground begins in the following battlegrounds: (#15935) --- sql/updates/world/6.x/yyyy_mm_dd_xx.sql | 2 ++ src/server/game/Battlegrounds/Battleground.cpp | 6 ++++++ src/server/game/Battlegrounds/Battleground.h | 4 ++++ src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp | 13 ++++++++++--- src/server/game/Battlegrounds/Zones/BattlegroundAB.h | 7 +++++++ src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp | 13 ++++++++++--- src/server/game/Battlegrounds/Zones/BattlegroundAV.h | 7 +++++++ src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp | 15 ++++++++++----- src/server/game/Battlegrounds/Zones/BattlegroundEY.h | 7 +++++++ src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp | 12 +++++++++--- src/server/game/Battlegrounds/Zones/BattlegroundIC.h | 7 +++++++ src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp | 13 ++++++++++--- src/server/game/Battlegrounds/Zones/BattlegroundWS.h | 7 +++++++ src/server/game/Handlers/MiscHandler.cpp | 5 ++--- 14 files changed, 98 insertions(+), 20 deletions(-) create mode 100644 sql/updates/world/6.x/yyyy_mm_dd_xx.sql diff --git a/sql/updates/world/6.x/yyyy_mm_dd_xx.sql b/sql/updates/world/6.x/yyyy_mm_dd_xx.sql new file mode 100644 index 00000000000..4d4230e5d72 --- /dev/null +++ b/sql/updates/world/6.x/yyyy_mm_dd_xx.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/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 0051f0698d9..68a61a28708 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 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/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index a43ec6c2202..382b8d70f38 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)) -- cgit v1.2.3 From 468dbd8a65e6362552edcc2f24f94b9e394d37b7 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 27 May 2016 15:18:37 +0200 Subject: Rename sql --- sql/updates/world/6.x/2016_05_27_00.sql | 2 ++ sql/updates/world/6.x/yyyy_mm_dd_xx.sql | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 sql/updates/world/6.x/2016_05_27_00.sql delete mode 100644 sql/updates/world/6.x/yyyy_mm_dd_xx.sql diff --git a/sql/updates/world/6.x/2016_05_27_00.sql b/sql/updates/world/6.x/2016_05_27_00.sql new file mode 100644 index 00000000000..4d4230e5d72 --- /dev/null +++ b/sql/updates/world/6.x/2016_05_27_00.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/yyyy_mm_dd_xx.sql b/sql/updates/world/6.x/yyyy_mm_dd_xx.sql deleted file mode 100644 index 4d4230e5d72..00000000000 --- a/sql/updates/world/6.x/yyyy_mm_dd_xx.sql +++ /dev/null @@ -1,2 +0,0 @@ -UPDATE `battleground_template` SET `MaxLvl`=100; -UPDATE `battleground_template` SET StartMaxDist=150 WHERE `ID`=1; -- Alterac Valley -- cgit v1.2.3 From cd51e27e195c67bc9f2e3a38c1e5e8a5a243e6bf Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 28 May 2016 11:33:06 +0200 Subject: Core/Auras: Implemented aura 475 - SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED --- src/server/game/Spells/Auras/SpellAuraDefines.h | 2 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 16 +++++++++++++++- src/server/game/Spells/Auras/SpellAuraEffects.h | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index d781a8822b8..3663843868a 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -531,7 +531,7 @@ enum AuraType 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_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED = 475, SPELL_AURA_476 = 476, SPELL_AURA_477 = 477, SPELL_AURA_478 = 478, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index d866691bda5..a5926e8f85c 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -534,7 +534,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //472 &AuraEffect::HandleNoImmediateEffect, //473 SPELL_AURA_PREVENT_DURABILITY_LOSS_FROM_COMBAT implemented in Player::DurabilityPointLossForEquipSlot &AuraEffect::HandleNULL, //474 - &AuraEffect::HandleNULL, //475 + &AuraEffect::HandleAllowUsingGameobjectsWhileMounted, //475 SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED &AuraEffect::HandleNULL, //476 &AuraEffect::HandleNULL, //477 &AuraEffect::HandleNULL, //478 @@ -6674,3 +6674,17 @@ void AuraEffect::HandleOverridePetSpecs(AuraApplication const* aurApp, uint8 mod pet->SetSpecialization(sChrSpecializationByIndexStore[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 512852a39ec..39b1cdf3eb8 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -305,6 +305,7 @@ class TC_GAME_API AuraEffect void HandleEnableAltPower(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModSpellCategoryCooldown(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; -- cgit v1.2.3 From 8d4deb0a9504055a32c68c3f0e174c09e173792a Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 29 May 2016 13:33:13 +0200 Subject: Update 2016_05_26_06_world.sql --- sql/updates/world/6.x/2016_05_26_06_world.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 705a6c3ac21..343bc6f0a17 100644 --- a/sql/updates/world/6.x/2016_05_26_06_world.sql +++ b/sql/updates/world/6.x/2016_05_26_06_world.sql @@ -3,6 +3,6 @@ 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`=0 AND `SourceEntry`=32958; +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."); -- cgit v1.2.3 From 186375d997caab33eee878a1e102f41939c7a688 Mon Sep 17 00:00:00 2001 From: Trond B Krokli Date: Sun, 29 May 2016 16:06:07 +0200 Subject: Core/DB/Updater: English grammar corrections (#17207) Improve English text in strings and comments in UpdateFetcher.cpp - replace incorrect text with the intended words in some output strings - corrections in the comments to point out the intention of the code --- src/server/database/Updater/UpdateFetcher.cpp | 46 +++++++++++++-------------- 1 file changed, 23 insertions(+), 23 deletions(-) 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(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(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 + "\""; -- cgit v1.2.3 From 529e072fa34e3b7f73fb1783124ae50488d762c2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 29 May 2016 19:05:45 +0200 Subject: Core/Spells: Defined new spell attribute (SPELL_ATTR12_IS_GARRISON_BUFF) --- src/server/game/Miscellaneous/SharedDefines.h | 240 +++++++++++++------------- 1 file changed, 120 insertions(+), 120 deletions(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 63079904a67..e9f6c3f3aff 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -713,138 +713,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_UNK12 = 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_UNK12 = 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_NO_RANK = 0x00000080, // 7 Spell_C_GetSpellRank returns 0 instead of 5 * std::min(SpellLevels->MaxLevel, caster->Level) - 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_NO_RANK = 0x00000080, // 7 Spell_C_GetSpellRank returns 0 instead of 5 * std::min(SpellLevels->MaxLevel, caster->Level) + 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 -- cgit v1.2.3 From 4454a2af1d58161ef9b7a9441ca0394016531cfe Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 30 May 2016 07:12:27 +0200 Subject: Rename file, again. --- sql/updates/world/6.x/2016_05_27_00.sql | 2 -- sql/updates/world/6.x/2016_05_27_00_world.sql | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 sql/updates/world/6.x/2016_05_27_00.sql create mode 100644 sql/updates/world/6.x/2016_05_27_00_world.sql diff --git a/sql/updates/world/6.x/2016_05_27_00.sql b/sql/updates/world/6.x/2016_05_27_00.sql deleted file mode 100644 index 4d4230e5d72..00000000000 --- a/sql/updates/world/6.x/2016_05_27_00.sql +++ /dev/null @@ -1,2 +0,0 @@ -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_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 -- cgit v1.2.3 From c676f70cf654e90f88977a0fb0427b8080702129 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 30 May 2016 07:12:49 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_05_30_00_world.sql | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_30_00_world.sql 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; -- cgit v1.2.3 From f217b48e95b7c7e6a93386cf48a2353f5e02e101 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 30 May 2016 07:27:35 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_05_30_01_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_30_01_world.sql 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`); -- cgit v1.2.3 From 9d085681bdff579c5dafeb074310ebb442eaae37 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 30 May 2016 07:31:19 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_05_30_02_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_30_02_world.sql 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..177c8508d20 --- /dev/null +++ b/sql/updates/world/6.x/2016_05_30_02_world.sql @@ -0,0 +1,2 @@ +-- +DELETE FROM achievement_criteria_data WHERE `type` IN (6, 12); -- cgit v1.2.3 From cd226a4f6c298b3eccb9d761d63c57eb782d60ff Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 30 May 2016 07:39:12 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_05_30_03_world.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_30_03_world.sql 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`); -- cgit v1.2.3 From 02155710a9b2ebe74fc7121a4ab671e3eb7717d1 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 30 May 2016 08:03:23 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_05_30_04_world.sql | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_30_04_world.sql 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; -- cgit v1.2.3 From fc8641b76325110130ce8c0d953f4d1811c4fecc Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 30 May 2016 08:10:23 +0200 Subject: Update 2016_05_30_02_world.sql --- sql/updates/world/6.x/2016_05_30_02_world.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 177c8508d20..7c287da579f 100644 --- a/sql/updates/world/6.x/2016_05_30_02_world.sql +++ b/sql/updates/world/6.x/2016_05_30_02_world.sql @@ -1,2 +1,2 @@ -- -DELETE FROM achievement_criteria_data WHERE `type` IN (6, 12); +DELETE FROM `criteria_data` WHERE `type` IN (6, 12); -- cgit v1.2.3 From fde9e8985f203048f07909bf0d3b0865cda55c42 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 30 May 2016 18:31:30 +0200 Subject: Core/Spells: Implemented auras 394 and 469 SPELL_AURA_SHOW_CONFIRMATION_PROMPT (WITH_DIFFICULTY) --- src/server/game/Spells/Auras/SpellAuraDefines.h | 5 +++-- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 24 +++++++++++++++++++++-- src/server/game/Spells/Auras/SpellAuraEffects.h | 1 + src/server/game/Spells/Auras/SpellAuras.cpp | 4 ++++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 3663843868a..1d1de78b18b 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -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, @@ -526,7 +526,8 @@ 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_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY = 469, + SPELL_AURA_470 = 470, SPELL_AURA_471 = 471, SPELL_AURA_472 = 472, SPELL_AURA_PREVENT_DURABILITY_LOSS_FROM_COMBAT = 473, // Prevents durability loss from dealing/taking damage diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index a5926e8f85c..d3fc6c5e592 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -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 @@ -528,7 +528,7 @@ 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, //472 @@ -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; } @@ -6652,6 +6657,21 @@ void AuraEffect::HandleModSpellCategoryCooldown(AuraApplication const* aurApp, u 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)) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 39b1cdf3eb8..7d1df37eb42 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -304,6 +304,7 @@ 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; diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 521abd26e7b..790e4abd3f0 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1774,6 +1774,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_WITH_DIFFICULTY) || existingAura->HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY)) + return false; + // spell of same spell rank chain if (m_spellInfo->IsRankOf(existingSpellInfo)) { -- cgit v1.2.3 From bd8c173c9bb842cc8bb4dd101a924051dfa09a66 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 31 May 2016 12:14:30 +0200 Subject: DB/Profession: Fixed riding teachers and their spells Closes #17161 by Fredi100 --- sql/updates/world/6.x/2016_05_31_00_world.sql | 68 +++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_31_00_world.sql 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 -- cgit v1.2.3 From d868e06db6d8aa10382bb2923c47b232f7f4b3dc Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 31 May 2016 12:18:46 +0200 Subject: DB/SAI: Cloud Prince (upgrade script) and Storm Young Dragon Closes #17173, by Mihapro --- sql/updates/world/6.x/2016_05_31_01_world.sql | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_31_01_world.sql 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..703e19be2ab --- /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` = 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,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."); -- cgit v1.2.3 From c273bca24fcc912c4abb0ed7bb3ab5ea8367d9a2 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 31 May 2016 13:22:17 +0200 Subject: DB/Profession: Added Enchanting trainer spells Closes #17162 by IzFrost --- sql/updates/world/6.x/2016_05_31_02_world.sql | 253 ++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_31_02_world.sql 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); -- cgit v1.2.3 From bc0c71add77a0510d6ff6eda7c245bf9a617004f Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 31 May 2016 13:23:32 +0200 Subject: DB/Profession: Fixed Jewelcrafting teachers and their spells Closes #17151 by Fredi100 --- sql/updates/world/6.x/2016_05_31_03_world.sql | 325 ++++++++++++++++++++++++++ 1 file changed, 325 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_31_03_world.sql 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); -- cgit v1.2.3 From 522fe01e38a9a7e10a35a75ccb2dd277039c005e Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 31 May 2016 13:39:25 +0200 Subject: DB/Spell: Teleport to Saurok Creation Pit Closes #16694 (by deleted account) --- sql/updates/world/6.x/2016_05_31_04_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_31_04_world.sql 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..73985c8a7c9 --- /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,210.507); -- cgit v1.2.3 From 0bdb2ce8e304256da4c27be89dfd291d32b5f238 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 31 May 2016 14:11:55 +0200 Subject: Update 2016_05_31_01_world.sql --- sql/updates/world/6.x/2016_05_31_01_world.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 703e19be2ab..0a11cc583cb 100644 --- a/sql/updates/world/6.x/2016_05_31_01_world.sql +++ b/sql/updates/world/6.x/2016_05_31_01_world.sql @@ -25,7 +25,7 @@ INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type -- Young Storm Dragon SAI SET @ENTRY := 45919; -UPDATE `creature_template` SET `AIName` = "SmartAI" WHERE `entry` = 47238; +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."), -- cgit v1.2.3 From 8e7d59abcc21077552ffdb635ea0de0edbf5b9fb Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 31 May 2016 14:13:55 +0200 Subject: DB/Quest: Never Trust a Big Barb and a Smile Closes #16311 by Crosha --- sql/updates/world/6.x/2016_05_31_05_world.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_31_05_world.sql 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'); -- cgit v1.2.3 From 0e47d4211bc3409dfddeb735a9862bd16247827c Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 31 May 2016 16:19:18 +0200 Subject: Update 2016_05_31_04_world.sql --- sql/updates/world/6.x/2016_05_31_04_world.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 73985c8a7c9..4c1cc0586e4 100644 --- a/sql/updates/world/6.x/2016_05_31_04_world.sql +++ b/sql/updates/world/6.x/2016_05_31_04_world.sql @@ -1,4 +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,210.507); +(140395,0,1098,5633.36,4679.78,55.6488); -- cgit v1.2.3 From e78abe9911855a86c5dad543ac78edf5d87ed2f6 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 31 May 2016 17:02:22 +0200 Subject: Core/Auras: Fix copypaste mistake from fde9e8985f203048f07909bf0d3b0865cda55c42 --- src/server/game/Spells/Auras/SpellAuras.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 790e4abd3f0..e7c932e8a3b 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1775,7 +1775,7 @@ bool Aura::CanStackWith(Aura const* existingAura) const } if (HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT) || HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY)) - if (existingAura->HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY) || existingAura->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 -- cgit v1.2.3 From 2cead228d298392c2cf86046488594cd1b164aa3 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 31 May 2016 17:03:05 +0200 Subject: Core/PacketIO: Fixed setting player declined names Closes #16669 --- src/server/game/Server/Protocol/Opcodes.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index c69d3613ada..7dd7b2dc3e9 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -695,7 +695,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); -- cgit v1.2.3 From a6f6bb4fccb6c0a5123ef7fd553cf12b6a31db1f Mon Sep 17 00:00:00 2001 From: Killyana Date: Tue, 31 May 2016 19:14:31 +0200 Subject: DB/Quest: Fix some Monk Trainer quests Closes #16017 By Suraf --- sql/updates/world/6.x/2016_05_31_06_world.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 sql/updates/world/6.x/2016_05_31_06_world.sql 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); -- cgit v1.2.3 From a6731f9a977eb1e13d1f96617e142878829aa9d0 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Wed, 16 Dec 2015 22:27:07 +0100 Subject: Travis: Move to Ubuntu 14.04 Trusty Travic-CI from Ubuntu 12.04 (cherry picked from commit 21ee9be110b20b95e319c8aa14d64083fbf33736) # Conflicts: # .travis.yml --- .travis.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3edd9096ca8..266657eee33 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,6 @@ +sudo: required +dist: trusty + language: cpp compiler: - clang @@ -6,16 +9,11 @@ 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 -- cgit v1.2.3 From 3ccb1e665fcab401aa66b3d5796b835a72e768d0 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 1 Jun 2016 23:08:30 +0200 Subject: Core/Auras: Send aura update to client when aura amount changes and aura has SPELL_ATTR8_AURA_SEND_AMOUNT --- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index d3fc6c5e592..3272eedc265 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -851,6 +851,9 @@ void AuraEffect::ChangeAmount(int32 newAmount, bool mark, bool onStackOrReapply) for (std::list::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) -- cgit v1.2.3 From 11175b148eba4269289e7290faca32aed7867406 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Thu, 2 Jun 2016 14:15:55 +0200 Subject: Travis: Remove unneeded apt-get update (cherry picked from commit 24ac2bb9be5099b67edfd3239ab2ec8c12362a7a) --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 266657eee33..17131315324 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,6 @@ git: depth: 1 before_install: - - sudo apt-get -qq update - 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 -- cgit v1.2.3 From 63f8f54e5c1efd379ce8758a19c6b9ebfec43ed8 Mon Sep 17 00:00:00 2001 From: Shocker Date: Thu, 2 Jun 2016 17:07:07 +0300 Subject: Core/Spells: Define SPELL_EFFECT_ALTER_ITEM --- src/server/game/Miscellaneous/SharedDefines.h | 2 +- src/server/game/Spells/SpellEffects.cpp | 2 +- src/server/game/Spells/SpellInfo.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index e9f6c3f3aff..b836611609e 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -1213,7 +1213,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, diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index b72c03dc08a..71ab0858534 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 diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 28ac49fde1f..72f30e14dac 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -928,7 +928,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 -- cgit v1.2.3 From 9db75766e77b69295551c987eaa2b965a7c6f45c Mon Sep 17 00:00:00 2001 From: Sean Rhone Date: Thu, 2 Jun 2016 19:35:24 -0400 Subject: Update worldserver.conf.dist (#17270) - Very minor typo --- src/server/worldserver/worldserver.conf.dist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 83313537cdb..87d76c3f8a1 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -3301,7 +3301,7 @@ AuctionHouseBot.Items.Amount.Yellow = 0 # Armor: 8 # Reagent: 1 # Projectile: 2 -# TradeGod: 10 +# TradeGood: 10 # Generic: 1 # Recipe: 6 # Quiver: 1 -- cgit v1.2.3 From 2c2bb4a2377b40af2fccd484b13993aa16ad6380 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 3 Jun 2016 23:27:07 +0200 Subject: Core/Auras: Named currency gain modifying aura types --- src/server/game/Spells/Auras/SpellAuraDefines.h | 4 ++-- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 1d1de78b18b..4588b134614 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -433,7 +433,7 @@ 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, @@ -533,7 +533,7 @@ enum AuraType SPELL_AURA_PREVENT_DURABILITY_LOSS_FROM_COMBAT = 473, // Prevents durability loss from dealing/taking damage SPELL_AURA_474 = 474, SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED = 475, - SPELL_AURA_476 = 476, + 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 3272eedc265..40db543002b 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -435,7 +435,7 @@ 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 @@ -535,7 +535,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNoImmediateEffect, //473 SPELL_AURA_PREVENT_DURABILITY_LOSS_FROM_COMBAT implemented in Player::DurabilityPointLossForEquipSlot &AuraEffect::HandleNULL, //474 &AuraEffect::HandleAllowUsingGameobjectsWhileMounted, //475 SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED - &AuraEffect::HandleNULL, //476 + &AuraEffect::HandleNULL, //476 SPELL_AURA_MOD_CURRENCY_GAIN_LOOTED &AuraEffect::HandleNULL, //477 &AuraEffect::HandleNULL, //478 &AuraEffect::HandleNULL, //479 -- cgit v1.2.3 From 8b26aea95a301af5a6af888df4fd3e7683e1ef62 Mon Sep 17 00:00:00 2001 From: DDuarte Date: Sat, 4 Jun 2016 11:26:57 +0100 Subject: Implement real time statistic visualization (#16956) Docs at https://trinitycore.atlassian.net/wiki/display/tc/Monitoring+a+TrinityCore+server * Common/Graphs: Initial proof of concept * Move influx db code to its own class * Reuse the same socket * Allow to log values of different categories * Allow to log events * Pass the timestamp to influxdb * Send events in batches * Send data async * Log server shutdown. Fix memory leak. * Allow to enable/disable Stats in the settings and at runtime * Read interval between each batch send from config * Add InfluxDB connection info to configs * Move each event category to its own table * Log pathfinding queries * Move categories table initialization to constructor using enum as key to avoid assigning the table name to the wrong enum value * Log player login/logout events. Pass the hostname correctly in the HTTP request. * Fix linux build * Handle "Connection: close" HTTP header, reconnecting on next scheduled send. Disable StatsLogger if connection fails, logging the error. * Add an enum for categories of logged values, it's still possible to pass a string instead of the enum. * Don't log the whole batchedData when InfluxDB returns an error, it's too long and unreadable on console. * Allow to call a function at a specified interval in thread-safe World::Update() context to log data like player count. * Log map tile load/unload * Core/StatsLogger: Allow logging more value types other than ints https://docs.influxdata.com/influxdb/v0.10/write_protocols/write_syntax/ * Fix a typo in string escape of StatsLogger * Yet more fixes to the escaping in FormatInfluxDBValue * DB/Gameobject: Fix respawn time of few Quest GameObjects By Tauriella, closes #16701 * DB/Misc: Fix some engrish By tkrokli closes #16648 * Tools/MMaps: Add format library linking to mmaps_generator (Very) partial cherry pick of ed75b0649add23e082976fa4e5d504bc0c312602 * Core/StatsLogger: Simplify code Convert values and categories arrays to maps initialized in-place Remove constructor and destructor * Core/StatsLogger: Add realm name to the event and value tags * Log amount of processed packet of each session * Apply recent singleton changes to sStatsLogger too * Fix influxdb data format if no realm name is present * Remove unneeded newlines from request body, fixes response 400 from InfluxDB 0.10 * Rename Reporting folder to Metric * Rename StatsLogger to Metric * Rename InfluxDB configs to Metric * Add Grafana dashboards * Add a random annoying macro * Move string formatting to Metric::SendBatch(), reducing performance footprint of Metric::LogEvent() and Metric::LogValue() * Update grafana graphs refresing tags on load and showing now-15m data, refreshing every minute. These settings can be modified in grafana. * Rename MetricData fields * Contrib/Grafana: Rename dashboard files * Contrib/Grafana: Replace hardcoded Windows/Ubuntu realm names by the default, Trinity * Config/Worldserver: Add missing section to the index * Contrib/Grafana: Add singlestat panels with current online players, update diff averages (1 min, 5 mins and 15 mins) http://i.imgur.com/Zi8lfvS.png * Core/Metric: Replace the enums MetricEventCategory and MetricValueCategory by strings For the sake of simplicity and less recompile time when adding new metrics, similar to how TC_LOG_* works * Contrib/Grafana: Display the current number of online players and not its average Closes #15075 (cherry picked from commit 3ae10160820782d039c3449107960108fb3a63b9) # Conflicts: # src/server/game/Server/WorldSession.cpp # src/server/game/World/World.cpp # src/server/worldserver/Main.cpp --- contrib/grafana/1_General.json | 889 ++++++++++++++++++++++++++ contrib/grafana/2_Maps.json | 339 ++++++++++ contrib/grafana/3_Network.json | 242 +++++++ src/common/Collision/Maps/MapTree.cpp | 5 + src/common/Metric/Metric.cpp | 235 +++++++ src/common/Metric/Metric.h | 141 ++++ src/server/game/Handlers/CharacterHandler.cpp | 3 + src/server/game/Movement/PathGenerator.cpp | 3 + src/server/game/Server/WorldSession.cpp | 5 + src/server/game/World/World.cpp | 8 + src/server/worldserver/Main.cpp | 11 + src/server/worldserver/worldserver.conf.dist | 39 ++ 12 files changed, 1920 insertions(+) create mode 100644 contrib/grafana/1_General.json create mode 100644 contrib/grafana/2_Maps.json create mode 100644 contrib/grafana/3_Network.json create mode 100644 src/common/Metric/Metric.cpp create mode 100644 src/common/Metric/Metric.h diff --git a/contrib/grafana/1_General.json b/contrib/grafana/1_General.json new file mode 100644 index 00000000000..96b0c9170af --- /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": null, + "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": null, + "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": null, + "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": null, + "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": null, + "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/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 #include @@ -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 +* +* 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 . +*/ + +#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 overallStatusLogger) +{ + _realmName = realmName; + _batchTimer = Trinity::make_unique(ioService); + _overallStatusTimer = Trinity::make_unique(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(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 +* +* 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 . +*/ + +#ifndef METRIC_H__ +#define METRIC_H__ + +#include "Common.h" +#include "Threading/MPSCQueue.h" +#include +#include +#include + +enum MetricDataType +{ + METRIC_DATA_VALUE, + METRIC_DATA_EVENT +}; + +struct MetricData +{ + std::string Category; + std::chrono::time_point 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 _queuedData; + std::unique_ptr _batchTimer; + std::unique_ptr _overallStatusTimer; + int32 _updateInterval = 0; + int32 _overallStatusTimerInterval = 0; + bool _enabled = false; + bool _overallStatusTimerTriggered = false; + std::string _hostname; + std::string _port; + std::string _databaseName; + std::function _overallStatusLogger; + std::string _realmName; + + bool Connect(); + void SendBatch(); + void ScheduleSend(); + void ScheduleOverallStatusLog(); + + template::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 overallStatusLogger = [](){}); + void LoadFromConfigs(); + void Update(); + + template + 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/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index ee1d69571f0..e4b03ed79c7 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 { @@ -1147,6 +1148,8 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder) sScriptMgr->OnPlayerLogin(pCurrChar, firstLogin); + TC_METRIC_EVENT("player_events", "Login", pCurrChar->GetName()); + delete holder; } 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/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 41141148922..c11c85aaffa 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 @@ -456,6 +457,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 +617,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/World/World.cpp b/src/server/game/World/World.cpp index 61e1755b4e4..5513c8e94dd 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -63,6 +63,7 @@ #include "SkillDiscovery.h" #include "SkillExtraItems.h" #include "SmartAI.h" +#include "Metric.h" #include "SupportMgr.h" #include "TaxiPathGraph.h" #include "TransportMgr.h" @@ -437,6 +438,7 @@ void World::LoadConfigSettings(bool reload) return; } sLog->LoadFromConfig(); + sMetric->LoadFromConfigs(); } m_defaultDbcLocale = LocaleConstant(sConfigMgr->GetIntDefault("DBC.Locale", 0)); @@ -2128,6 +2130,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); } @@ -2430,6 +2434,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/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 #include #include @@ -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 87d76c3f8a1..dcaad115812 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 # ################################################################################################### @@ -3853,3 +3854,41 @@ 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 + +################################################################################################### -- cgit v1.2.3 From 1379505bf2c98318085eeebdc9912ba89439e78e Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 4 Jun 2016 12:49:07 +0200 Subject: Update worldserver.conf.dist --- src/server/worldserver/worldserver.conf.dist | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index dcaad115812..2bf6b42d703 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -3891,4 +3891,5 @@ Metric.ConnectionInfo = "127.0.0.1;8086;worldserver" Metric.OverallStatusInterval = 1 +# ################################################################################################### -- cgit v1.2.3 From 3f02f9edcd68548bc6ae0625d706452f626a0b03 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sat, 4 Jun 2016 13:11:35 +0200 Subject: Grafana/Dashboards: Fix General info datasources Fix General info datasources for counter panels (cherry picked from commit 911bffd20826bf8898ccff02d3315720097a1da6) --- contrib/grafana/1_General.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/contrib/grafana/1_General.json b/contrib/grafana/1_General.json index 96b0c9170af..e54791f190e 100644 --- a/contrib/grafana/1_General.json +++ b/contrib/grafana/1_General.json @@ -23,7 +23,7 @@ "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)" ], - "datasource": null, + "datasource": "Influx", "editable": true, "error": false, "format": "none", @@ -108,7 +108,7 @@ "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)" ], - "datasource": null, + "datasource": "Influx", "editable": true, "error": false, "format": "none", @@ -197,7 +197,7 @@ "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)" ], - "datasource": null, + "datasource": "Influx", "editable": true, "error": false, "format": "none", @@ -281,7 +281,7 @@ "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)" ], - "datasource": null, + "datasource": "Influx", "editable": true, "error": false, "format": "none", @@ -847,7 +847,7 @@ "text": "Trinity", "value": "Trinity" }, - "datasource": null, + "datasource": "Influx", "includeAll": false, "multi": false, "multiFormat": "regex values", -- cgit v1.2.3 From dd1533b315bda37e1d43ebe0fb8bde87381c6e66 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 4 Jun 2016 16:40:57 +0200 Subject: Core/Utils: Added additional argument to Tokenizer class to make it behave like strtok - not returning empty tokens in case of multiple consecutive separators in input string --- src/common/Utilities/Util.cpp | 7 ++++--- src/common/Utilities/Util.h | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/common/Utilities/Util.cpp b/src/common/Utilities/Util.cpp index 28ffc891034..4f758c9cff1 100644 --- a/src/common/Utilities/Util.cpp +++ b/src/common/Utilities/Util.cpp @@ -30,7 +30,7 @@ #include #endif -Tokenizer::Tokenizer(const std::string &src, const char sep, uint32 vectorReserve) +Tokenizer::Tokenizer(const std::string &src, const char sep, uint32 vectorReserve /*= 0*/, bool keepEmptyStrings /*= true*/) { m_str = new char[src.length() + 1]; memcpy(m_str, src.c_str(), src.length() + 1); @@ -45,9 +45,10 @@ Tokenizer::Tokenizer(const std::string &src, const char sep, uint32 vectorReserv { if (*posnew == sep) { - m_storage.push_back(posold); - posold = posnew + 1; + if (keepEmptyStrings || posold != posnew) + m_storage.push_back(posold); + posold = posnew + 1; *posnew = '\0'; } else if (*posnew == '\0') diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h index 7f0fc907964..ff737eb33bd 100644 --- a/src/common/Utilities/Util.h +++ b/src/common/Utilities/Util.h @@ -54,7 +54,7 @@ public: typedef StorageType::const_reference const_reference; public: - Tokenizer(const std::string &src, char const sep, uint32 vectorReserve = 0); + Tokenizer(const std::string &src, char const sep, uint32 vectorReserve = 0, bool keepEmptyStrings = true); ~Tokenizer() { delete[] m_str; } const_iterator begin() const { return m_storage.begin(); } -- cgit v1.2.3 From 6ce84d9401a630958d3aec11e69c1382c56d6bf9 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 5 Jun 2016 01:19:25 +0200 Subject: Core/PacketIO: Fixed sending SMSG_SPELL_EXECUTE_LOG --- src/server/game/Spells/Spell.cpp | 54 +++++++++++----------------------------- src/server/game/Spells/Spell.h | 1 - 2 files changed, 15 insertions(+), 40 deletions(-) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index aa02dfa3f63..31bcfc39980 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -616,7 +616,6 @@ m_spellValue(new SpellValue(caster->GetMap()->GetDifficultyID(), m_spellInfo)), && !m_spellInfo->IsPassive() && !m_spellInfo->IsPositive(); CleanupTargetList(); - CleanupExecuteLogList(); for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) m_destTargets[i] = SpellDestination(*m_caster); @@ -645,7 +644,6 @@ Spell::~Spell() ASSERT(m_caster->ToPlayer()->m_spellModTakingSpell != this); delete m_spellValue; - CleanupExecuteLogList(); } void Spell::InitExplicitTargets(SpellCastTargets const& targets) @@ -4178,45 +4176,33 @@ void Spell::UpdateSpellCastDataAmmo(WorldPackets::Spells::SpellAmmo& ammo) void Spell::SendSpellExecuteLog() { WorldPackets::CombatLog::SpellExecuteLog spellExecuteLog; - spellExecuteLog.Caster = m_caster->GetGUID(); spellExecuteLog.SpellID = m_spellInfo->Id; - if (_powerDrainTargets->empty() && _extraAttacksTargets->empty() && - _durabilityDamageTargets->empty() && _genericVictimTargets->empty() && - _tradeSkillTargets->empty() && _feedPetTargets->empty()) - return; - for (SpellEffectInfo const* effect : GetEffects()) { - WorldPackets::CombatLog::SpellExecuteLog::SpellLogEffect spellLogEffect; if (!effect) continue; - spellLogEffect.Effect = effect->Effect; - - for (SpellLogEffectPowerDrainParams const& powerDrainParam : _powerDrainTargets[effect->EffectIndex]) - spellLogEffect.PowerDrainTargets.push_back(powerDrainParam); - - for (SpellLogEffectExtraAttacksParams const& extraAttacksTarget : _extraAttacksTargets[effect->EffectIndex]) - spellLogEffect.ExtraAttacksTargets.push_back(extraAttacksTarget); - - for (SpellLogEffectDurabilityDamageParams const& durabilityDamageTarget : _durabilityDamageTargets[effect->EffectIndex]) - spellLogEffect.DurabilityDamageTargets.push_back(durabilityDamageTarget); - - for (SpellLogEffectGenericVictimParams const& genericVictimTarget : _genericVictimTargets[effect->EffectIndex]) - spellLogEffect.GenericVictimTargets.push_back(genericVictimTarget); - - for (SpellLogEffectTradeSkillItemParams const& tradeSkillTarget : _tradeSkillTargets[effect->EffectIndex]) - spellLogEffect.TradeSkillTargets.push_back(tradeSkillTarget); + if (_powerDrainTargets[effect->EffectIndex].empty() && _extraAttacksTargets[effect->EffectIndex].empty() && + _durabilityDamageTargets[effect->EffectIndex].empty() && _genericVictimTargets[effect->EffectIndex].empty() && + _tradeSkillTargets[effect->EffectIndex].empty() && _feedPetTargets[effect->EffectIndex].empty()) + continue; - for (SpellLogEffectFeedPetParams const& feedPetTarget : _feedPetTargets[effect->EffectIndex]) - spellLogEffect.FeedPetTargets.push_back(feedPetTarget); + spellExecuteLog.Effects.emplace_back(); - spellExecuteLog.Effects.push_back(spellLogEffect); + 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]); + spellLogEffect.DurabilityDamageTargets = std::move(_durabilityDamageTargets[effect->EffectIndex]); + spellLogEffect.GenericVictimTargets = std::move(_genericVictimTargets[effect->EffectIndex]); + spellLogEffect.TradeSkillTargets = std::move(_tradeSkillTargets[effect->EffectIndex]); + spellLogEffect.FeedPetTargets = std::move(_feedPetTargets[effect->EffectIndex]); } - m_caster->SendCombatLogMessage(&spellExecuteLog); + if (!spellExecuteLog.Effects.empty()) + m_caster->SendCombatLogMessage(&spellExecuteLog); } void Spell::ExecuteLogEffectTakeTargetPower(uint8 effIndex, Unit* target, uint32 powerType, uint32 points, float amplitude) @@ -4309,16 +4295,6 @@ void Spell::ExecuteLogEffectResurrect(uint8 effect, Unit* target) _genericVictimTargets[effect].push_back(spellLogEffectGenericVictimParams); } -void Spell::CleanupExecuteLogList() -{ - _durabilityDamageTargets->clear(); - _extraAttacksTargets->clear(); - _feedPetTargets->clear(); - _genericVictimTargets->clear(); - _powerDrainTargets->clear(); - _tradeSkillTargets->clear(); -} - void Spell::SendInterrupted(uint8 result) { WorldPackets::Spells::SpellFailure failurePacket; diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 192ed942ce0..f08aa39b4c4 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -539,7 +539,6 @@ class TC_GAME_API Spell void ExecuteLogEffectSummonObject(uint8 effIndex, WorldObject* obj); void ExecuteLogEffectUnsummonObject(uint8 effIndex, WorldObject* obj); void ExecuteLogEffectResurrect(uint8 effIndex, Unit* target); - void CleanupExecuteLogList(); void SendInterrupted(uint8 result); void SendChannelUpdate(uint32 time); void SendChannelStart(uint32 duration); -- cgit v1.2.3 From b5bafef8af4b27bdde4efc13edf30e086263897a Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 5 Jun 2016 04:37:13 +0200 Subject: DB/Misc: Fix startup errors Updates #17237 by tkrokli --- sql/updates/world/6.x/2016_06_05_00_world.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_05_00_world.sql 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'); -- cgit v1.2.3 From 3d93c12f5feb0cc456399e0b1111f9cc822bf65a Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 5 Jun 2016 07:56:29 +0200 Subject: DB/Creature: Innkeeper Farley - Lion's Pride Inn - Goldshire Closes #16227 --- sql/updates/world/6.x/2016_06_05_01_world.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_05_01_world.sql 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; -- cgit v1.2.3 From 08c6b2aed5eb87eddc2ab9104817c2aeb8831409 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 5 Jun 2016 09:18:20 +0200 Subject: DB/Creature: Scarlet Centurion, Flamethrower and Pile of Corpses SAI By unknown closes #15467 --- sql/updates/world/6.x/2016_06_05_02_world.sql | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_05_02_world.sql 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."); -- cgit v1.2.3 From 18aa8df320e736daf506876bcdf6143405c10bc6 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 5 Jun 2016 14:20:14 +0200 Subject: DB/Misc: Instance template for Hellfire Citadel Closes #17114 by Ulduar --- sql/updates/world/6.x/2016_06_05_03_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_05_03_world.sql 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); -- cgit v1.2.3 From 9d7a17d9f5f29c928e14d175479da68b2118add9 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sun, 5 Jun 2016 16:43:41 +0200 Subject: Core/Commands: Added ".npc set phase" command error message for invalid phaseid Closes #14927 --- sql/updates/world/6.x/2016_06_05_04_world.sql | 3 +++ src/server/game/Miscellaneous/Language.h | 2 +- src/server/scripts/Commands/cs_npc.cpp | 12 +++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 sql/updates/world/6.x/2016_06_05_04_world.sql 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/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/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index d9d54353246..c71e0f01940 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(); -- cgit v1.2.3 From 1c139214b5ffbae993d4162c555c81cf45b52228 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 6 Jun 2016 08:38:39 +0200 Subject: Core/Spells: Silence coverity false positive - CID 1356246 --- src/server/scripts/Spells/spell_shaman.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index d41dcb42411..7ad37ba5bc2 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; -- cgit v1.2.3 From b920d6a35c0977c6bc806558b26d14c2fd351a97 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 6 Jun 2016 08:45:09 +0200 Subject: Core/Spells: Fixed possible null pointer dereference Coverity CID 1355243 --- src/server/game/Spells/SpellInfo.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 72f30e14dac..e7ac181e69f 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -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) -- cgit v1.2.3 From d8e0ce4d4009c707e99163d35214d24776b5c6bb Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 6 Jun 2016 08:49:10 +0200 Subject: Core/Misc: Fixed uninitialized fields in black market packets Coverity CID 1354736 and 1354737 --- src/server/game/Server/Packets/BlackMarketPackets.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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; }; } } -- cgit v1.2.3 From d59bba3c5dcc0915247c86c4b89f0325b2af97be Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 6 Jun 2016 08:51:42 +0200 Subject: Core/Misc: Fixed uninitialized field Coverity CID 1354596 --- src/server/bnetserver/REST/LoginRESTService.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); -- cgit v1.2.3 From 8396dabdad65fbe86c525584e38ccfacde85f9f1 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 6 Jun 2016 09:16:59 +0200 Subject: Core/Misc: Fixed coverity issues Uninitialized fields: CID 1354593, 1354595, 1354738 Unchecked return value: CID 1354558 Out of bounds access: CID 1352989, 1352993 Null pointer dereference: CID 1296286 --- src/server/bnetserver/Server/Session.cpp | 2 +- src/server/game/Entities/Unit/StatSystem.cpp | 2 +- src/server/game/Handlers/CharacterHandler.cpp | 4 +-- src/server/game/Handlers/PetHandler.cpp | 17 ++++++------ src/server/game/Server/Packets/BattlenetPackets.h | 4 +-- src/server/game/Server/Packets/PetPackets.cpp | 14 +++++----- src/server/game/Server/Packets/PetPackets.h | 3 +-- src/server/game/Server/WorldSession.cpp | 1 + .../scripts/Northrend/Naxxramas/boss_gluth.cpp | 30 ++++++++++++---------- 9 files changed, 39 insertions(+), 38 deletions(-) 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/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index f5660efe00e..4fa79a91eee 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -302,7 +302,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/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index e4b03ed79c7..c1455d355d7 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -2210,8 +2210,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/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 849a5097c61..84b89968dfb 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); } @@ -717,8 +716,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/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/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp index 36a71ba9c53..8bbf0b051e4 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); diff --git a/src/server/game/Server/Packets/PetPackets.h b/src/server/game/Server/Packets/PetPackets.h index f11a71a936c..3d3c3e76f72 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 DeclinedNames; }; class PetNameInvalid final : public ServerPacket diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index c11c85aaffa..59f18bc79b0 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -118,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), 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; } -- cgit v1.2.3 From d4f97a43bb4d0d4b1681f35c854472b6e3d0f566 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 7 Jun 2016 06:02:27 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_06_07_00_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_07_00_world.sql 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); -- cgit v1.2.3 From cf99984225e6c6aed3a7a0f2f8af9ade5510ee01 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 7 Jun 2016 06:16:56 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_06_07_01_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_07_01_world.sql 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); -- cgit v1.2.3 From 21cbffae917ea7b78f7717a3e138b0b509bcce51 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 7 Jun 2016 07:57:51 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_06_07_02_world.sql | 133 ++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_07_02_world.sql 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 -- cgit v1.2.3 From ed346c69fbd0dcb0e2ae5c22e98ae0cfe4ed8b41 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 7 Jun 2016 08:05:28 +0200 Subject: DB/Misc: More trainers work By Lopfest --- sql/updates/world/6.x/2016_06_07_03_world.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_07_03_world.sql 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; -- cgit v1.2.3 From 85851d5f27bade03c749432821b4c22fb9b28f38 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 7 Jun 2016 08:57:54 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_06_07_04_world.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_07_04_world.sql 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 -- cgit v1.2.3 From 919d08fca3921575fb71b8744b2d0994cbf06344 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 7 Jun 2016 09:33:11 +0200 Subject: Update 2016_05_26_07_world.sql --- sql/updates/world/6.x/2016_05_26_07_world.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 184a79db922..d97a3204978 100644 --- a/sql/updates/world/6.x/2016_05_26_07_world.sql +++ b/sql/updates/world/6.x/2016_05_26_07_world.sql @@ -1,4 +1,4 @@ --- Anvilrage Overseer SAI (6.x Only) +-- 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 -- cgit v1.2.3 From 8776e350a0f1b5c7aeb9cb97e39706ceaf8ad5e7 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 7 Jun 2016 10:47:36 +0200 Subject: DB/Misc: Fix startup errors By Lopfest --- sql/updates/world/6.x/2016_06_07_05_world.sql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_07_05_world.sql 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); -- cgit v1.2.3 From e4adeadaef4e4d6a59c44e17d6bbec3d7e9b99f5 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 7 Jun 2016 16:24:09 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_06_07_06_world.sql | 104 ++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_07_06_world.sql 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 -- cgit v1.2.3 From 15bea97f83f655d7c7b8f0db2ee95e08e4f09ceb Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 7 Jun 2016 18:59:11 +0200 Subject: Core/GameObjects: Defined more GO flags (cherry picked from commit 4b00ca02993141a0a5a3e3cf8dea1cde853e9276) --- src/server/game/Miscellaneous/SharedDefines.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index b836611609e..4a69eadb6b1 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -2120,13 +2120,15 @@ 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) + 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_TRIGGERED = 0x00000040, // typically, summoned objects. Triggered by spell or other events + 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_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 }; enum GameObjectDynamicLowFlags -- cgit v1.2.3 From 7eceba09d79823f015d16cdacc6d9477f7f4cea0 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Wed, 8 Jun 2016 13:05:23 +0200 Subject: Core/Misc: Fixed warnings --- src/server/game/AuctionHouse/AuctionHouseMgr.cpp | 6 +++--- src/server/game/Conditions/ConditionMgr.cpp | 2 +- src/server/scripts/Pet/pet_mage.cpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index b937f2194e2..9fcb66da1ce 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -443,11 +443,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/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 2ff7196a2dc..2f9093a31a5 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) 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) -- cgit v1.2.3 From de2efe01055fba7cb254ca5eac211c4c9f390a9b Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 8 Jun 2016 21:46:08 +0200 Subject: Core/Taxi: Implemented PlayerCondition requirements on taxi paths --- src/server/game/Conditions/ConditionMgr.cpp | 4 ++-- src/server/game/Conditions/ConditionMgr.h | 2 +- src/server/game/Entities/Taxi/TaxiPathGraph.cpp | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 2f9093a31a5..76e065f8ddc 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -2368,7 +2368,7 @@ inline bool PlayerConditionLogic(uint32 logic, std::array& 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/Taxi/TaxiPathGraph.cpp b/src/server/game/Entities/Taxi/TaxiPathGraph.cpp index 6617267be6a..6670c8ea2cb 100644 --- a/src/server/game/Entities/Taxi/TaxiPathGraph.cpp +++ b/src/server/game/Entities/Taxi/TaxiPathGraph.cpp @@ -185,8 +185,9 @@ uint32 TaxiPathGraph::EdgeCost::EvaluateDistance(Player const* player) const if (!(To->Flags & requireFlag)) return std::numeric_limits::max(); - //if (To->ConditionID && !player->MeetsCondition(To->ConditionID)) - // return std::numeric_limits::max(); + if (PlayerConditionEntry const* condition = sPlayerConditionStore.LookupEntry(To->ConditionID)) + if (!sConditionMgr->IsPlayerMeetingCondition(player, condition)) + return std::numeric_limits::max(); return Distance; } -- cgit v1.2.3 From e744c43a3002a7bf216385a3b3e911449dcf71f2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 9 Jun 2016 21:55:40 +0200 Subject: Core/Auras: Defined more known stat related aura types --- src/server/game/Spells/Auras/SpellAuraDefines.h | 12 ++++++------ src/server/game/Spells/Auras/SpellAuraEffects.cpp | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 4588b134614..9eb6ad5c864 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -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, @@ -528,7 +528,7 @@ enum AuraType SPELL_AURA_468 = 468, SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY = 469, SPELL_AURA_470 = 470, - SPELL_AURA_471 = 471, + 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, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 40db543002b..db1767fa8d4 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -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 @@ -530,7 +530,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //468 &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 -- cgit v1.2.3 From 9d9ad7b618f5f67da2518da0dfede3d953ba10b0 Mon Sep 17 00:00:00 2001 From: Killyana Date: Fri, 10 Jun 2016 02:47:03 +0200 Subject: BD: DeadMines full respawn --- sql/updates/world/6.x/2016_06_10_00_world.sql | 1212 +++++++++++++++++++++++++ 1 file changed, 1212 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_10_00_world.sql 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); -- cgit v1.2.3 From 051d4036247e196801f40d4cb7826978f970cd99 Mon Sep 17 00:00:00 2001 From: treeston Date: Tue, 31 May 2016 22:49:28 +0200 Subject: Entities/Unit: Fix speed update packets if player is being moved by something else. Closes #17184 Closes #17254 (cherry picked from commit 19fa504ff5a51ded47f516640fc57deb6793547a) --- src/server/game/Entities/Unit/Unit.cpp | 20 +++++++++++++++++--- src/server/game/Entities/Unit/Unit.h | 3 ++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 4328af96d90..c53389d89a2 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -10024,20 +10024,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 { @@ -11610,6 +11610,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); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 415c46afa5d..3a7d25c9ef5 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1751,7 +1751,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); -- cgit v1.2.3 From ee2b8b4e87164328e9e7133a6d654f7ac6cd5f8c Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 10 Jun 2016 19:57:49 +0200 Subject: Core/PacketIO: Fixed sending wrong movement packets to nearby players that require ACK response --- src/server/game/Entities/Player/Player.cpp | 8 --- src/server/game/Entities/Player/Player.h | 4 -- src/server/game/Entities/Unit/Unit.cpp | 112 +++++++++++++++++++++-------- src/server/game/Entities/Unit/Unit.h | 1 + 4 files changed, 84 insertions(+), 41 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index da964ef691f..b9ba699b7d0 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -25789,14 +25789,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; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 5ff09881eb3..3c630c42fda 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2457,10 +2457,6 @@ class TC_GAME_API Player : public Unit, public GridObject 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/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c53389d89a2..76c91b05df7 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -13506,12 +13506,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; + playerMover->SendMessageToSet(moveUpdate.Write(), false); } else { @@ -14991,8 +14995,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(); @@ -15002,7 +15007,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 { @@ -15014,7 +15021,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) @@ -15395,14 +15402,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; + playerMover->SendMessageToSet(moveUpdate.Write(), false); } else { @@ -15473,16 +15482,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; + playerMover->SendMessageToSet(moveUpdate.Write(), false); } else { @@ -15513,14 +15525,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; + playerMover->SendMessageToSet(moveUpdate.Write(), false); } else { @@ -15551,14 +15565,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; + playerMover->SendMessageToSet(moveUpdate.Write(), false); } else { @@ -15604,14 +15620,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; + playerMover->SendMessageToSet(moveUpdate.Write(), false); } else { @@ -15639,14 +15657,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; + playerMover->SendMessageToSet(moveUpdate.Write(), false); } else { @@ -15658,6 +15678,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; + playerMover->SendMessageToSet(moveUpdate.Write(), false); + } + + 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 3a7d25c9ef5..05149a4cd0a 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1678,6 +1678,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); -- cgit v1.2.3 From f583476f9ace18a578678c2f8ae7feba9de1a02d Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 11 Jun 2016 00:56:31 +0200 Subject: Core/PacketIO: Send movement status changes around moving unit, not its controller --- src/server/game/Entities/Unit/Unit.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 76c91b05df7..84494f5eff0 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -13515,7 +13515,7 @@ void Unit::SetRooted(bool apply, bool packetOnly /*= false*/) WorldPackets::Movement::MoveUpdate moveUpdate; moveUpdate.movementInfo = &m_movementInfo; - playerMover->SendMessageToSet(moveUpdate.Write(), false); + SendMessageToSet(moveUpdate.Write(), playerMover); } else { @@ -15411,7 +15411,7 @@ bool Unit::SetDisableGravity(bool disable, bool packetOnly /*= false*/) WorldPackets::Movement::MoveUpdate moveUpdate; moveUpdate.movementInfo = &m_movementInfo; - playerMover->SendMessageToSet(moveUpdate.Write(), false); + SendMessageToSet(moveUpdate.Write(), playerMover); } else { @@ -15494,7 +15494,7 @@ bool Unit::SetCanFly(bool enable) WorldPackets::Movement::MoveUpdate moveUpdate; moveUpdate.movementInfo = &m_movementInfo; - playerMover->SendMessageToSet(moveUpdate.Write(), false); + SendMessageToSet(moveUpdate.Write(), playerMover); } else { @@ -15534,7 +15534,7 @@ bool Unit::SetWaterWalking(bool enable, bool packetOnly /*= false */) WorldPackets::Movement::MoveUpdate moveUpdate; moveUpdate.movementInfo = &m_movementInfo; - playerMover->SendMessageToSet(moveUpdate.Write(), false); + SendMessageToSet(moveUpdate.Write(), playerMover); } else { @@ -15574,7 +15574,7 @@ bool Unit::SetFeatherFall(bool enable, bool packetOnly /*= false */) WorldPackets::Movement::MoveUpdate moveUpdate; moveUpdate.movementInfo = &m_movementInfo; - playerMover->SendMessageToSet(moveUpdate.Write(), false); + SendMessageToSet(moveUpdate.Write(), playerMover); } else { @@ -15629,7 +15629,7 @@ bool Unit::SetHover(bool enable, bool packetOnly /*= false*/) WorldPackets::Movement::MoveUpdate moveUpdate; moveUpdate.movementInfo = &m_movementInfo; - playerMover->SendMessageToSet(moveUpdate.Write(), false); + SendMessageToSet(moveUpdate.Write(), playerMover); } else { @@ -15666,7 +15666,7 @@ bool Unit::SetCollision(bool disable) WorldPackets::Movement::MoveUpdate moveUpdate; moveUpdate.movementInfo = &m_movementInfo; - playerMover->SendMessageToSet(moveUpdate.Write(), false); + SendMessageToSet(moveUpdate.Write(), playerMover); } else { @@ -15706,7 +15706,7 @@ bool Unit::SetCanTransitionBetweenSwimAndFly(bool enable) WorldPackets::Movement::MoveUpdate moveUpdate; moveUpdate.movementInfo = &m_movementInfo; - playerMover->SendMessageToSet(moveUpdate.Write(), false); + SendMessageToSet(moveUpdate.Write(), playerMover); } return true; -- cgit v1.2.3 From c529566ac41e6d14c33015664e43c195a7a36bb6 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 12 Jun 2016 00:11:00 +0200 Subject: Core/GameObejcts: Fixed disconnects happening when viewing nearby players on elevators Closes #17335 --- src/server/game/Battlefield/Battlefield.cpp | 2 +- src/server/game/Battlegrounds/Battleground.cpp | 3 +-- src/server/game/Entities/GameObject/GameObject.cpp | 24 ++++++++++++++-------- src/server/game/Entities/GameObject/GameObject.h | 2 +- src/server/game/Entities/Object/Object.cpp | 2 +- src/server/game/Entities/Object/ObjectGuid.h | 16 +++++++++++++-- src/server/game/Entities/Player/Player.cpp | 2 +- src/server/game/Garrison/Garrison.cpp | 5 ++--- src/server/game/Globals/ObjectAccessor.cpp | 13 ++++++++---- src/server/game/Globals/ObjectAccessor.h | 3 ++- src/server/game/Handlers/MovementHandler.cpp | 2 +- src/server/game/Maps/Map.cpp | 2 ++ src/server/game/Maps/MapScripts.cpp | 8 ++------ src/server/game/Maps/TransportMgr.cpp | 2 +- src/server/game/Maps/ZoneScript.h | 2 +- src/server/game/Spells/SpellEffects.cpp | 18 ++++++---------- src/server/scripts/Commands/cs_gobject.cpp | 14 ++++++------- .../HallsOfReflection/halls_of_reflection.cpp | 4 ++-- .../IcecrownCitadel/instance_icecrown_citadel.cpp | 2 +- .../EyeOfEternity/instance_eye_of_eternity.cpp | 3 +-- src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp | 4 ++-- 21 files changed, 72 insertions(+), 61 deletions(-) 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(), 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 68a61a28708..e96286692d2 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1461,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(), 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/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index a43ab95c80c..ee7241a02d7 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(map->GetId(), goinfo->entry, map->GenerateLowGuid()); + else + { + guid = ObjectGuid::Create(map->GenerateLowGuid()); m_updateFlag |= UPDATEFLAG_TRANSPORT; + } - Object::_Create(ObjectGuid::Create(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(), 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) diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index ada26800505..07d1ae7acd6 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -889,7 +889,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject 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 f9fa1b3aeb6..9493df4449c 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2385,7 +2385,7 @@ GameObject* WorldObject::SummonGameObject(uint32 entry, float x, float y, float Map* map = GetMap(); GameObject* go = new GameObject(); - if (!go->Create(map->GenerateLowGuid(), 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 505170a2663..86593a7c211 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -159,7 +159,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) @@ -181,6 +180,19 @@ GUID_TRAIT_MAP_SPECIFIC(HighGuid::AIResource) GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILock) GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILockTicket) +// 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 +{ + static bool const Global = false; + static bool const RealmSpecific = true; + static bool const MapSpecific = true; +}; + class ObjectGuid; class PackedGuid; @@ -205,7 +217,7 @@ class TC_GAME_API ObjectGuid static typename std::enable_if::RealmSpecific, ObjectGuid>::type Create(LowType counter) { return RealmSpecific(type, counter); } template - static typename std::enable_if::MapSpecific, ObjectGuid>::type Create(uint16 mapId, uint32 entry, LowType counter) { return MapSpecific(type, 0, mapId, 0, entry, counter); } + static typename std::enable_if::MapSpecific && type != HighGuid::Transport, ObjectGuid>::type Create(uint16 mapId, uint32 entry, LowType counter) { return MapSpecific(type, 0, mapId, 0, entry, counter); } ObjectGuid() : _low(0), _high(0) { } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b9ba699b7d0..4499d5473fb 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22004,7 +22004,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) diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp index 56cbb9ad58e..5a25f91876e 100644 --- a/src/server/game/Garrison/Garrison.cpp +++ b/src/server/game/Garrison/Garrison.cpp @@ -713,8 +713,7 @@ GameObject* Garrison::Plot::CreateGameObject(Map* map, GarrisonFactionIndex fact Position const& pos = PacketInfo.PlotPos; GameObject* building = new GameObject(); - if (!building->Create(map->GenerateLowGuid(), 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; @@ -726,7 +725,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(), 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::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/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index cace773b65e..6464dd1838a 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -330,7 +330,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/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 2389d8e0fc1..81aa0fd174c 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -255,6 +255,8 @@ i_scriptLock(false), _defaultLight(GetDefaultMapLight(id)) //lets initialize visibility distance for map Map::InitVisibilityDistance(); + GetGuidSequenceGenerator().Set(sObjectMgr->GetGenerator().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::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::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().Generate(); + ObjectGuid::LowType guidLow = guid ? guid : ASSERT_NOTNULL(map)->GenerateLowGuid(); 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/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 71ab0858534..d9930ce890a 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3164,8 +3164,7 @@ void Spell::EffectSummonObjectWild(SpellEffIndex effIndex) Map* map = target->GetMap(); - if (!pGameObj->Create(map->GenerateLowGuid(), 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; @@ -3191,8 +3190,7 @@ void Spell::EffectSummonObjectWild(SpellEffIndex effIndex) if (uint32 linkedEntry = pGameObj->GetGOInfo()->GetLinkedGameObjectEntry()) { GameObject* linkedGO = new GameObject; - if (linkedGO->Create(map->GenerateLowGuid(), 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); @@ -3785,8 +3783,7 @@ void Spell::EffectDuel(SpellEffIndex effIndex) uint32 gameobject_id = effectInfo->MiscValue; Map* map = m_caster->GetMap(); - if (!pGameObj->Create(map->GenerateLowGuid(), 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(), @@ -4154,8 +4151,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(), 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; @@ -4813,8 +4809,7 @@ void Spell::EffectTransmitted(SpellEffIndex effIndex) GameObject* pGameObj = new GameObject; - if (!pGameObj->Create(cMap->GenerateLowGuid(), 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; @@ -4881,8 +4876,7 @@ void Spell::EffectTransmitted(SpellEffIndex effIndex) if (uint32 linkedEntry = pGameObj->GetGOInfo()->GetLinkedGameObjectEntry()) { GameObject* linkedGO = new GameObject; - if (linkedGO->Create(cMap->GenerateLowGuid(), 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); 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(); - - 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/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 1d6b1ffb61e..7e8ddeda484 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/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(), 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/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(), 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(), 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; -- cgit v1.2.3 From ac81d300316d8ce496a988890c0cfe6563cb4680 Mon Sep 17 00:00:00 2001 From: Killyana Date: Mon, 13 Jun 2016 03:39:45 +0200 Subject: DB/SAI: Abyssal Depths 6.x Only By cooler-SAI --- sql/updates/world/6.x/2016_06_13_00_world.sql | 306 ++++++++++++++++++++++++++ 1 file changed, 306 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_13_00_world.sql 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 +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'); -- cgit v1.2.3 From f23f5433e3492eab74c0dccb69b590a70abf4dff Mon Sep 17 00:00:00 2001 From: Killyana Date: Mon, 13 Jun 2016 03:48:26 +0200 Subject: DB/SAI: Arathi Highlands 6.x Only By cooler-SAI --- sql/updates/world/6.x/2016_06_13_01_world.sql | 590 ++++++++++++++++++++++++++ 1 file changed, 590 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_13_01_world.sql 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 +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 +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 +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 +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 +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 +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 +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'); -- cgit v1.2.3 From 9c60162847a32efc880525885c60609968179337 Mon Sep 17 00:00:00 2001 From: Killyana Date: Mon, 13 Jun 2016 03:53:01 +0200 Subject: DB/SAI: Badlands 6.x Only By cooler-SAI --- sql/updates/world/6.x/2016_06_13_02_world.sql | 430 ++++++++++++++++++++++++++ 1 file changed, 430 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_13_02_world.sql 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 +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 +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'); -- cgit v1.2.3 From 6bdd31cf4b9265e03b14597e64800771269bac34 Mon Sep 17 00:00:00 2001 From: Killyana Date: Mon, 13 Jun 2016 03:57:59 +0200 Subject: DB/SAI: Burning Steppes 6.x Only By cooler-SAI --- sql/updates/world/6.x/2016_06_13_03_world.sql | 448 ++++++++++++++++++++++++++ 1 file changed, 448 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_13_03_world.sql 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'); -- cgit v1.2.3 From 8b06360e4d7549094782e013ad954fb17d0170a0 Mon Sep 17 00:00:00 2001 From: Killyana Date: Mon, 13 Jun 2016 04:02:47 +0200 Subject: DB/SAI: Eastern Plaguelands 6.x Only By cooler-SAI --- sql/updates/world/6.x/2016_06_13_04_world.sql | 837 ++++++++++++++++++++++++++ 1 file changed, 837 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_13_04_world.sql 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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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'); -- cgit v1.2.3 From b5cbc4a37a166c1c5d5a512170ac6e731c3a8a75 Mon Sep 17 00:00:00 2001 From: Killyana Date: Mon, 13 Jun 2016 04:05:50 +0200 Subject: DB/SAI: Kelp'thar Forest 6.x Only By cooler-SAI --- sql/updates/world/6.x/2016_06_13_05_world.sql | 268 ++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_13_05_world.sql 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 +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'); -- cgit v1.2.3 From 1bf26d1e6ab3f5038e874f96fcb5e1d8f29a0e0d Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 13 Jun 2016 08:46:06 +0200 Subject: DB/Misc: Fix startup errors --- sql/updates/world/6.x/2016_06_13_06_world.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_13_06_world.sql 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; -- cgit v1.2.3 From a906ba140881495f45b40367ccc5c4af4feee4d4 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 13 Jun 2016 10:02:49 +0200 Subject: DB/Misc: Update for creature_classlevelstats Mop + WoD Closes #17029 by funjoker --- sql/updates/world/6.x/2016_06_13_07_world.sql | 261 ++++++++++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 sql/updates/world/6.x/2016_06_13_07_world.sql 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; -- cgit v1.2.3 From 2fe6fc63d79655a96ee2135a6b380ce353729088 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 13 Jun 2016 18:00:55 +0200 Subject: Core/Movement: Fixed weird loading screen behavior (progress bar loading to full then disappearing) - also makes teleporting between maps faster --- src/server/game/Entities/Player/Player.cpp | 29 +++++++++----------- src/server/game/Handlers/MovementHandler.cpp | 30 ++++++++++++++++++++ src/server/game/Server/Packets/MovementPackets.cpp | 23 ++++++++++++++++ src/server/game/Server/Packets/MovementPackets.h | 32 ++++++++++++++++++++++ src/server/game/Server/Protocol/Opcodes.cpp | 6 ++-- src/server/game/Server/WorldSession.cpp | 4 --- src/server/game/Server/WorldSession.h | 2 ++ 7 files changed, 103 insertions(+), 23 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 4499d5473fb..1dd3f63097a 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(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 @@ -22222,6 +22214,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); @@ -22313,9 +22313,6 @@ void Player::SendInitialPacketsAfterAddToMap() GetZoneAndAreaId(newzone, newarea); UpdateZone(newzone, newarea); // also call SendInitWorldStates(); - ResetTimeSync(); - SendTimeSync(); - GetSession()->SendLoadCUFProfiles(); CastSpell(this, 836, true); // LOGINEFFECT diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 6464dd1838a..d8943099a93 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); diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 582a057e09f..6fdad7553a3 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -715,3 +715,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 6d97161d9c9..3bce8ed665c 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -461,6 +461,38 @@ namespace WorldPackets int32 AreaID = 0; 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/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 7dd7b2dc3e9..a2e4bfe6321 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -732,7 +732,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, STATUS_LOGGEDIN, 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); @@ -1534,7 +1534,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPOND_INSPECT_ACHIEVEMENTS, STATUS_NEVER, 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); @@ -1641,7 +1641,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUPERCEDED_SPELLS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUPPRESS_NPC_GREETINGS, 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 59f18bc79b0..8e1a912623e 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -336,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; diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index b65a8b30d56..26e8329ee9c 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -442,6 +442,7 @@ namespace WorldPackets class MoveTimeSkipped; class SummonResponse; class MoveSplineDone; + class SuspendTokenResponse; } namespace NPC @@ -1243,6 +1244,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); -- cgit v1.2.3