From b53810ea3745fc795baae13ec14b5a4dca35152c Mon Sep 17 00:00:00 2001 From: Rochet2 Date: Sat, 25 Oct 2014 11:28:25 +0300 Subject: [PATCH 01/11] AH related fixes Load items from memory instead of DB (may break 3rd party programs) Fix item suffix search Closes #9196 For AHBot set expired auctions ignored from update process --- .../game/AuctionHouse/AuctionHouseMgr.cpp | 64 ++++++++++--------- .../game/AuctionHouseBot/AuctionHouseBot.cpp | 2 +- .../AuctionHouseBot/AuctionHouseBotSeller.cpp | 10 ++- .../Implementation/CharacterDatabase.cpp | 1 - .../Implementation/CharacterDatabase.h | 1 - 5 files changed, 42 insertions(+), 36 deletions(-) diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 53267a6e565..0661c7ae2ea 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -447,30 +447,26 @@ bool AuctionHouseObject::RemoveAuction(AuctionEntry* auction, uint32 /*itemEntry void AuctionHouseObject::Update() { - time_t curTime = sWorld->GetGameTime(); ///- Handle expired auctions // If storage is empty, no need to update. next == NULL in this case. if (AuctionsMap.empty()) return; - PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_AUCTION_BY_TIME); - stmt->setUInt32(0, (uint32)curTime+60); - PreparedQueryResult result = CharacterDatabase.Query(stmt); + time_t curTime = sWorld->GetGameTime(); + SQLTransaction trans = CharacterDatabase.BeginTransaction(); - if (!result) - return; - - do + for (AuctionEntryMap::iterator it = AuctionsMap.begin(); it != AuctionsMap.end();) { // from auctionhousehandler.cpp, creates auction pointer & player pointer - AuctionEntry* auction = GetAuction(result->Fetch()->GetUInt32()); + AuctionEntry* auction = it->second; + // Increment iterator due to deletion + ++it; - if (!auction) + ///- filter auctions exipred on next update + if (auction->expire_time > curTime + 60) continue; - SQLTransaction trans = CharacterDatabase.BeginTransaction(); - ///- Either cancel the auction if there was no bidder if (auction->bidder == 0) { @@ -488,16 +484,15 @@ void AuctionHouseObject::Update() sScriptMgr->OnAuctionSuccessful(this, auction); } - uint32 itemEntry = auction->itemEntry; - ///- In any case clear the auction auction->DeleteFromDB(trans); - CharacterDatabase.CommitTransaction(trans); sAuctionMgr->RemoveAItem(auction->itemGUIDLow); - RemoveAuction(auction, itemEntry); + RemoveAuction(auction, auction->itemEntry); } - while (result->NextRow()); + + // Run DB changes + CharacterDatabase.CommitTransaction(trans); } void AuctionHouseObject::BuildListBidderItems(WorldPacket& data, Player* player, uint32& count, uint32& totalcount) @@ -592,22 +587,31 @@ void AuctionHouseObject::BuildListAuctionItems(WorldPacket& data, Player* player if (propRefID) { // Append the suffix to the name (ie: of the Monkey) if one exists - // These are found in ItemRandomProperties.dbc, not ItemRandomSuffix.dbc - // even though the DBC names seem misleading - const ItemRandomPropertiesEntry* itemRandProp = sItemRandomPropertiesStore.LookupEntry(propRefID); + // These are found in ItemRandomSuffix.dbc and ItemRandomProperties.dbc + // even though the DBC name seems misleading - if (itemRandProp) + char* const* suffix = nullptr; + + if (propRefID < 0) { - char* const* temp = itemRandProp->nameSuffix; + const ItemRandomSuffixEntry* itemRandEntry = sItemRandomSuffixStore.LookupEntry(-item->GetItemRandomPropertyId()); + if (itemRandEntry) + suffix = itemRandEntry->nameSuffix; + } + else + { + const ItemRandomPropertiesEntry* itemRandEntry = sItemRandomPropertiesStore.LookupEntry(item->GetItemRandomPropertyId()); + if (itemRandEntry) + suffix = itemRandEntry->nameSuffix; + } - // dbc local name - if (temp) - { - // Append the suffix (ie: of the Monkey) to the name using localization - // or default enUS if localization is invalid - name += ' '; - name += temp[locdbc_idx >= 0 ? locdbc_idx : LOCALE_enUS]; - } + // dbc local name + if (suffix) + { + // Append the suffix (ie: of the Monkey) to the name using localization + // or default enUS if localization is invalid + name += ' '; + name += suffix[locdbc_idx >= 0 ? locdbc_idx : LOCALE_enUS]; } } diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBot.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBot.cpp index 6bf5fa0aaa5..804a1508d3e 100644 --- a/src/server/game/AuctionHouseBot/AuctionHouseBot.cpp +++ b/src/server/game/AuctionHouseBot/AuctionHouseBot.cpp @@ -388,7 +388,7 @@ void AuctionHouseBot::Rebuild(bool all) AuctionHouseObject* auctionHouse = sAuctionMgr->GetAuctionsMap(AuctionHouseType(i)); for (AuctionHouseObject::AuctionEntryMap::const_iterator itr = auctionHouse->GetAuctionsBegin(); itr != auctionHouse->GetAuctionsEnd(); ++itr) if (!itr->second->owner) // ahbot auction - if (all || itr->second->bid == 0) // expire now auction if no bid or forced + if (all || itr->second->bidder == 0) // expire auction if forced or no bids itr->second->expire_time = sWorld->GetGameTime(); } } diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp index 513b23afd70..f7eac1a40dc 100644 --- a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp +++ b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp @@ -18,6 +18,7 @@ #include "Log.h" #include "DBCStores.h" #include "ObjectMgr.h" +#include "World.h" #include "AuctionHouseMgr.h" #include "AuctionHouseBotSeller.h" @@ -614,17 +615,20 @@ uint32 AuctionBotSeller::SetStat(SellerConfiguration& config) { AllItemsArray itemsSaved(MAX_AUCTION_QUALITY, std::vector(MAX_ITEM_CLASS)); + time_t curTime = sWorld->GetGameTime(); AuctionHouseObject* auctionHouse = sAuctionMgr->GetAuctionsMap(config.GetHouseType()); for (AuctionHouseObject::AuctionEntryMap::const_iterator itr = auctionHouse->GetAuctionsBegin(); itr != auctionHouse->GetAuctionsEnd(); ++itr) { AuctionEntry* auctionEntry = itr->second; + if (auctionEntry->owner != 0) // Add only ahbot items + continue; + if (auctionEntry->expire_time > curTime) // Add only nonexpired items + continue; Item* item = sAuctionMgr->GetAItem(auctionEntry->itemGUIDLow); if (item) { ItemTemplate const* prototype = item->GetTemplate(); - if (prototype) - if (!auctionEntry->owner) // Add only ahbot items - ++itemsSaved[prototype->Quality][prototype->Class]; + ++itemsSaved[prototype->Quality][prototype->Class]; } } diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 010ceb12d78..ac9e17fb872 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -129,7 +129,6 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_SEL_AUCTIONS, "SELECT id, auctioneerguid, itemguid, itemEntry, count, itemowner, buyoutprice, time, buyguid, lastbid, startbid, deposit FROM auctionhouse ah INNER JOIN item_instance ii ON ii.guid = ah.itemguid", CONNECTION_SYNCH); PrepareStatement(CHAR_INS_AUCTION, "INSERT INTO auctionhouse (id, auctioneerguid, itemguid, itemowner, buyoutprice, time, buyguid, lastbid, startbid, deposit) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_AUCTION, "DELETE FROM auctionhouse WHERE id = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_SEL_AUCTION_BY_TIME, "SELECT id FROM auctionhouse WHERE time <= ? ORDER BY TIME ASC", CONNECTION_SYNCH); PrepareStatement(CHAR_UPD_AUCTION_BID, "UPDATE auctionhouse SET buyguid = ?, lastbid = ? WHERE id = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_MAIL, "INSERT INTO mail(id, messageType, stationery, mailTemplateId, sender, receiver, subject, body, has_items, expire_time, deliver_time, money, cod, checked) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_MAIL_BY_ID, "DELETE FROM mail WHERE id = ?", CONNECTION_ASYNC); diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index 7305568d9ab..b04a484b248 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -128,7 +128,6 @@ enum CharacterDatabaseStatements CHAR_SEL_AUCTION_ITEMS, CHAR_INS_AUCTION, CHAR_DEL_AUCTION, - CHAR_SEL_AUCTION_BY_TIME, CHAR_UPD_AUCTION_BID, CHAR_SEL_AUCTIONS, CHAR_INS_MAIL, From d508472046f9c6f93a401c978d04cb5039f5a6d4 Mon Sep 17 00:00:00 2001 From: Rochet2 Date: Thu, 23 Oct 2014 11:24:08 +0300 Subject: [PATCH 02/11] AHBot related fixes Fix rebuild command requiring a dummy value Fix ahbot config to normal Fix sellprice setting in core. Closes #13425 --- src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp | 6 +++--- src/server/scripts/Commands/cs_ahbot.cpp | 4 +--- src/server/worldserver/worldserver.conf.dist | 7 +++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp index 513b23afd70..e5e5facd30a 100644 --- a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp +++ b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp @@ -207,12 +207,12 @@ bool AuctionBotSeller::Initialize() { if (sAuctionBotConfig->GetConfig(CONFIG_AHBOT_BUYPRICE_SELLER)) { - if (prototype->BuyPrice == 0) + if (prototype->SellPrice == 0) continue; } else { - if (prototype->SellPrice == 0) + if (prototype->BuyPrice == 0) continue; } } @@ -706,7 +706,7 @@ void AuctionBotSeller::SetPricesOfItem(ItemTemplate const* itemProto, SellerConf if (sellPrice == 0) sellPrice = (buyPrice > 10 ? buyPrice / GetSellModifier(itemProto) : buyPrice); - if (!sAuctionBotConfig->GetConfig(CONFIG_AHBOT_BUYPRICE_SELLER)) + if (sAuctionBotConfig->GetConfig(CONFIG_AHBOT_BUYPRICE_SELLER)) buyPrice = sellPrice; uint32 basePrice = (buyPrice * stackCount * priceRatio) / (itemProto->Class == 6 ? 200 : itemProto->BuyCount) / 100; diff --git a/src/server/scripts/Commands/cs_ahbot.cpp b/src/server/scripts/Commands/cs_ahbot.cpp index 04647d51ff0..772e1a69b21 100644 --- a/src/server/scripts/Commands/cs_ahbot.cpp +++ b/src/server/scripts/Commands/cs_ahbot.cpp @@ -146,11 +146,9 @@ public: static bool HandleAHBotRebuildCommand(ChatHandler* /*handler*/, const char* args) { char* arg = strtok((char*)args, " "); - if (!arg) - return false; bool all = false; - if (strcmp(arg, "all") == 0) + if (arg && strcmp(arg, "all") == 0) all = true; sAuctionBot->Rebuild(all); diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 992ae4f8100..37f907a9c96 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -27,6 +27,9 @@ # CONSOLE AND REMOTE ACCESS # CHARACTER DELETE OPTIONS # CUSTOM SERVER OPTIONS +# AUCTION HOUSE BOT SETTINGS +# AUCTION HOUSE BOT ITEM FINE TUNING +# AUCTION HOUSE BOT BUYER CONFIG # LOGGING SYSTEM SETTINGS # PACKET SPOOF PROTECTION SETTINGS # @@ -2901,8 +2904,8 @@ AuctionHouseBot.Class.Glyph = 3 ################################################################################################### ################################################################################################### +# AUCTION HOUSE BOT ITEM FINE TUNING # -# AHBot ITEM FINE TUNING # The following are usefull for limiting what character levels can # benefit from the auction house # @@ -2975,7 +2978,7 @@ AuctionHouseBot.forceExcludeItems = "" ################################################################################################### ################################################################################################### -# AHBot Buyer config +# AUCTION HOUSE BOT BUYER CONFIG # # AuctionHouseBot.Buyer.Enabled # Description: General enable or disable AuctionHouseBot Buyer functionality From 8d39ad435a1f85d73e438c07e81003bfaa0c125f Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sun, 26 Oct 2014 19:37:07 +0100 Subject: [PATCH 03/11] Core/AH: Code cleanup Remove unused paramters from RemoveAuction(), kept till now for compatibility with ahbot patch. Reverts 28dffbee11024c1abc82a29a3fef655d9262904b --- src/server/game/AuctionHouse/AuctionHouseMgr.cpp | 4 ++-- src/server/game/AuctionHouse/AuctionHouseMgr.h | 2 +- src/server/game/Handlers/AuctionHouseHandler.cpp | 6 ++---- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 822c5a2cf04..03270114a2a 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -432,7 +432,7 @@ void AuctionHouseObject::AddAuction(AuctionEntry* auction) sScriptMgr->OnAuctionAdd(this, auction); } -bool AuctionHouseObject::RemoveAuction(AuctionEntry* auction, uint32 /*itemEntry*/) +bool AuctionHouseObject::RemoveAuction(AuctionEntry* auction) { bool wasInMap = AuctionsMap.erase(auction->Id) ? true : false; @@ -489,7 +489,7 @@ void AuctionHouseObject::Update() auction->DeleteFromDB(trans); sAuctionMgr->RemoveAItem(auction->itemGUIDLow); - RemoveAuction(auction, auction->itemEntry); + RemoveAuction(auction); } // Run DB changes diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index fc70946d6c4..af8d8d48c59 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -117,7 +117,7 @@ class AuctionHouseObject void AddAuction(AuctionEntry* auction); - bool RemoveAuction(AuctionEntry* auction, uint32 itemEntry); + bool RemoveAuction(AuctionEntry* auction); void Update(); diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index 9f227bd5710..f1ec44ae4ad 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -501,9 +501,8 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket& recvData) auction->DeleteFromDB(trans); - uint32 itemEntry = auction->itemEntry; sAuctionMgr->RemoveAItem(auction->itemGUIDLow); - auctionHouse->RemoveAuction(auction, itemEntry); + auctionHouse->RemoveAuction(auction); } player->SaveInventoryAndGoldToDB(trans); CharacterDatabase.CommitTransaction(trans); @@ -581,9 +580,8 @@ void WorldSession::HandleAuctionRemoveItem(WorldPacket& recvData) auction->DeleteFromDB(trans); CharacterDatabase.CommitTransaction(trans); - uint32 itemEntry = auction->itemEntry; sAuctionMgr->RemoveAItem(auction->itemGUIDLow); - auctionHouse->RemoveAuction(auction, itemEntry); + auctionHouse->RemoveAuction(auction); } //called when player lists his bids From 1494583d034b11f9f39c855c18e8dcd6aab7c8dd Mon Sep 17 00:00:00 2001 From: MitchesD Date: Sun, 26 Oct 2014 22:28:21 +0100 Subject: [PATCH 04/11] DB/SAI: Added SAI for the second part of mobs before the gunship battle --- sql/updates/world/2014_10_26_00_world.sql | 101 ++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 sql/updates/world/2014_10_26_00_world.sql diff --git a/sql/updates/world/2014_10_26_00_world.sql b/sql/updates/world/2014_10_26_00_world.sql new file mode 100644 index 00000000000..2d9c9c57d50 --- /dev/null +++ b/sql/updates/world/2014_10_26_00_world.sql @@ -0,0 +1,101 @@ +-- Skybreaker Assassin SAI +SET @ENTRY := 37017; +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,1,0,0,0,100,0,60000,60000,100000,120000,11,69921,0,0,0,0,0,1,0,0,0,0,0,0,0,"Skybreaker Assassin - In Combat - Cast 'Fan of Knives'"), +(@ENTRY,0,2,0,0,0,100,0,0,0,4000,5000,11,69920,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Assassin - In Combat - Cast 'Sinister Strike'"); + +-- Skybreaker Marksman SAI +SET @ENTRY := 37144; +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,3000,3000,10000,14000,11,69989,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Marksman - In Combat - Cast 'Arcane Shot'"), +(@ENTRY,0,1,0,0,0,100,0,6000,6000,7000,14000,11,69975,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Marksman - In Combat - Cast 'Explosive Shot'"), +(@ENTRY,0,2,0,0,0,100,0,0,0,3000,4000,11,69974,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Marksman - In Combat - Cast 'Shoot'"); + +-- Kor'kron Sniper SAI +SET @ENTRY := 37146; +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,3000,3000,10000,14000,11,69989,0,0,0,0,0,2,0,0,0,0,0,0,0,"Kor'kron Sniper - In Combat - Cast 'Arcane Shot'"), +(@ENTRY,0,1,0,0,0,100,0,6000,6000,7000,14000,11,69975,0,0,0,0,0,2,0,0,0,0,0,0,0,"Kor'kron Sniper - In Combat - Cast 'Explosive Shot'"), +(@ENTRY,0,2,0,0,0,100,0,0,0,3000,4000,11,69974,0,0,0,0,0,2,0,0,0,0,0,0,0,"Kor'kron Sniper - In Combat - Cast 'Shoot'"); + +-- Skybreaker Dreadblade SAI +SET @ENTRY := 37004; +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,3000,3000,6000,6000,11,69911,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Dreadblade - In Combat - Cast 'Blood Plague'"), +(@ENTRY,0,1,0,0,0,100,0,0,0,5000,6000,11,69917,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Dreadblade - In Combat - Cast 'Frost Fever'"), +(@ENTRY,0,2,0,0,0,100,0,0,500,5000,6000,11,69916,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Dreadblade - In Combat - Cast 'Icy Touch'"), +(@ENTRY,0,3,0,0,0,100,0,4000,5000,6000,6000,11,69912,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Dreadblade - In Combat - Cast 'Plague Strike'"); + +-- Kor'kron Reaver +SET @ENTRY := 37029; +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,3000,3000,6000,6000,11,69911,0,0,0,0,0,2,0,0,0,0,0,0,0,"Kor'kron Reaver - In Combat - Cast 'Blood Plague'"), +(@ENTRY,0,1,0,0,0,100,0,0,0,5000,6000,11,69917,0,0,0,0,0,2,0,0,0,0,0,0,0,"Kor'kron Reaver - In Combat - Cast 'Frost Fever'"), +(@ENTRY,0,2,0,0,0,100,0,0,500,5000,6000,11,69916,0,0,0,0,0,2,0,0,0,0,0,0,0,"Kor'kron Reaver - In Combat - Cast 'Icy Touch'"), +(@ENTRY,0,3,0,0,0,100,0,4000,5000,6000,6000,11,69912,0,0,0,0,0,2,0,0,0,0,0,0,0,"Kor'kron Reaver- In Combat - Cast 'Plague Strike'"); + +-- Skybreaker Vicar SAI +SET @ENTRY := 37021; +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,7000,7000,5000,10000,11,69963,0,0,0,0,0,26,40,0,0,0,0,0,0,"Skybreaker Vicar - In Combat - Cast 'Greater Heal'"), +(@ENTRY,0,1,0,0,0,100,0,0,0,7000,8000,11,69967,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Vicar - In Combat - Cast 'Smite'"), +(@ENTRY,0,2,0,0,0,100,0,25000,30000,25000,30000,11,69910,0,0,0,0,0,26,40,0,0,0,0,0,0,"Skybreaker Vicar - In Combat - Cast 'Pain Suppression'"); + +-- Kor'kron Templar SAI +SET @ENTRY := 37034; +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,7000,7000,5000,10000,11,69963,0,0,0,0,0,26,40,0,0,0,0,0,0,"Kor'kron Templar - In Combat - Cast 'Greater Heal'"), +(@ENTRY,0,1,0,0,0,100,0,0,0,7000,8000,11,69967,0,0,0,0,0,2,0,0,0,0,0,0,0,"Kor'kron Templar - In Combat - Cast 'Smite'"), +(@ENTRY,0,2,0,0,0,100,0,25000,30000,25000,30000,11,69910,0,0,0,0,0,26,40,0,0,0,0,0,0,"Kor'kron Templar - In Combat - Cast 'Pain Suppression'"); + +-- Skybreaker Sorcerer SAI +SET @ENTRY := 37026; +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,0,0,3000,4000,11,69869,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Sorcerer - In Combat - Cast 'Frostfire Bolt'"), +(@ENTRY,0,1,0,0,0,100,0,30000,30000,180000,180000,11,69904,0,0,0,0,0,1,0,0,0,0,0,0,0,"Skybreaker Sorcerer - In Combat - Cast 'Blink'"), +(@ENTRY,0,2,0,0,0,100,1,60000,60000,60000,60000,11,69810,0,0,0,0,0,1,0,0,0,0,0,0,0,"Skybreaker Sorcerer - In Combat - Cast 'Summon Skybreaker Battle Standard' (No Repeat)"); + +-- Kor'kron Invoker SAI +SET @ENTRY := 37033; +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,0,0,3000,4000,11,69869,0,0,0,0,0,2,0,0,0,0,0,0,0,"Kor'kron Invoker - In Combat - Cast 'Frostfire Bolt'"), +(@ENTRY,0,1,0,0,0,100,0,30000,30000,180000,180000,11,69904,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kor'kron Invoker - In Combat - Cast 'Blink'"), +(@ENTRY,0,2,0,0,0,100,1,60000,60000,60000,60000,11,69810,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kor'kron Invoker - In Combat - Cast 'Summon Kor'kron Battle Standard' (No Repeat)"); + +-- Skybreaker Hierophant SAI +SET @ENTRY := 37027; +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,0,0,3000,5000,11,69898,0,0,0,0,0,26,40,0,0,0,0,0,0,"Skybreaker Hierophant - In Combat - Cast 'Rejuvenation'"), +(@ENTRY,0,1,0,0,0,100,0,7000,7000,18000,24000,11,69882,0,0,0,0,0,26,40,0,0,0,0,0,0,"Skybreaker Hierophant - In Combat - Cast 'Regrowth'"), +(@ENTRY,0,2,0,0,0,100,0,25000,25000,10000,15000,11,69899,0,0,0,0,0,26,40,0,0,0,0,0,0,"Skybreaker Hierophant - In Combat - Cast 'Healing Touch'"), +(@ENTRY,0,3,0,0,0,100,0,0,500,3000,5000,11,69968,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skybreaker Hierophant - In Combat - Cast 'Wrath'"); + +-- Kor'kron Primalist SAI +SET @ENTRY := 37030; +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,0,0,3000,5000,11,69898,0,0,0,0,0,26,40,0,0,0,0,0,0,"Kor'kron Primalist - In Combat - Cast 'Rejuvenation'"), +(@ENTRY,0,1,0,0,0,100,0,7000,7000,18000,24000,11,69882,0,0,0,0,0,26,40,0,0,0,0,0,0,"Kor'kron Primalist - In Combat - Cast 'Regrowth'"), +(@ENTRY,0,2,0,0,0,100,0,25000,25000,10000,15000,11,69899,0,0,0,0,0,26,40,0,0,0,0,0,0,"Kor'kron Primalist - In Combat - Cast 'Healing Touch'"), +(@ENTRY,0,3,0,0,0,100,0,0,500,3000,5000,11,69968,0,0,0,0,0,2,0,0,0,0,0,0,0,"Kor'kron Primalist - In Combat - Cast 'Wrath'"); From e0512dd4b43503d58a0334c54aed513bf24f6eff Mon Sep 17 00:00:00 2001 From: treak Date: Mon, 27 Oct 2014 01:25:39 +0000 Subject: [PATCH 05/11] Scripts/Freya: Fix Lumberjacked Achieve Closes #13435 Fixes #8166 --- sql/updates/world/2014_10_27_00_world.sql | 1 + .../Ulduar/Ulduar/instance_ulduar.cpp | 24 ++++++++++++++++++- .../scripts/Northrend/Ulduar/Ulduar/ulduar.h | 5 ++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 sql/updates/world/2014_10_27_00_world.sql diff --git a/sql/updates/world/2014_10_27_00_world.sql b/sql/updates/world/2014_10_27_00_world.sql new file mode 100644 index 00000000000..d4526804133 --- /dev/null +++ b/sql/updates/world/2014_10_27_00_world.sql @@ -0,0 +1 @@ +UPDATE `spell_dbc` SET `Effect1` = 3, `EffectImplicitTargetA1` = 22, `EffectImplicitTargetB1` = 7, `EffectRadiusIndex1` = 28 WHERE `Id` = 65296; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index 4f40abde5b6..27b8d3e2fcc 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -78,6 +78,7 @@ class instance_ulduar : public InstanceMapScript illusion = 0; keepersCount = 0; conSpeedAtory = false; + lumberjacked = false; Unbroken = true; IsDriveMeCrazyEligible = true; _algalonSummoned = false; @@ -102,6 +103,7 @@ class instance_ulduar : public InstanceMapScript ObjectGuid ThorimGUID; ObjectGuid FreyaGUID; ObjectGuid ElderGUIDs[3]; + ObjectGuid FreyaAchieveTriggerGUID; ObjectGuid MimironGUID; ObjectGuid MimironVehicleGUIDs[3]; ObjectGuid MimironComputerGUID; @@ -141,6 +143,7 @@ class instance_ulduar : public InstanceMapScript uint8 illusion; uint8 keepersCount; bool conSpeedAtory; + bool lumberjacked; bool Unbroken; bool IsDriveMeCrazyEligible; @@ -321,7 +324,10 @@ class instance_ulduar : public InstanceMapScript ElderGUIDs[2] = creature->GetGUID(); if (GetBossState(BOSS_FREYA) == DONE) creature->DespawnOrUnsummon(); - break; + break; + case NPC_FREYA_ACHIEVE_TRIGGER: + FreyaAchieveTriggerGUID = creature->GetGUID(); + break; // Mimiron case NPC_MIMIRON: @@ -606,6 +612,15 @@ class instance_ulduar : public InstanceMapScript conSpeedAtory = true; } break; + case NPC_IRONBRANCH: + case NPC_STONEBARK: + case NPC_BRIGHTLEAF: + if (!lumberjacked) + { + DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, CRITERIA_LUMBERJACKED); + lumberjacked = true; + } + break; default: break; } @@ -669,6 +684,13 @@ class instance_ulduar : public InstanceMapScript if (state == DONE) instance->SummonCreature(NPC_FREYA_OBSERVATION_RING, ObservationRingKeepersPos[0]); break; + case BOSS_IRONBRANCH: + case BOSS_STONEBARK: + case BOSS_BRIGHTLEAF: + if (GetBossState(BOSS_BRIGHTLEAF) == DONE && GetBossState(BOSS_IRONBRANCH) == DONE && GetBossState(BOSS_STONEBARK) == DONE && GetBossState(BOSS_FREYA) != DONE) + if (Creature* trigger = instance->GetCreature(FreyaAchieveTriggerGUID)) + trigger->CastSpell(trigger, SPELL_LUMBERJACKED_CREDIT, true); + break; case BOSS_KOLOGARN: if (state == DONE) { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h index 9b95d7cf7b8..82c4ef140f1 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h @@ -129,6 +129,9 @@ enum UlduarNPCs NPC_NATURES_BLADE = 33527, NPC_GUARDIAN_OF_LIFE = 33528, + // Freya Achievement Trigger + NPC_FREYA_ACHIEVE_TRIGGER = 33406, + // Yogg-Saron NPC_SARA = 33134, NPC_GUARDIAN_OF_YOGG_SARON = 33136, @@ -273,6 +276,7 @@ enum LeviathanActions enum UlduarAchievementCriteriaIds { CRITERIA_CON_SPEED_ATORY = 21597, + CRITERIA_LUMBERJACKED = 21686, CRITERIA_DISARMED = 21687, CRITERIA_WAITS_DREAMING_STORMWIND_25 = 10321, CRITERIA_WAITS_DREAMING_CHAMBER_25 = 10322, @@ -362,6 +366,7 @@ enum UlduarAchievementData DATA_UNBROKEN = 29052906, // 2905, 2906 are achievement IDs, MAX_HERALD_ARMOR_ITEMLEVEL = 226, MAX_HERALD_WEAPON_ITEMLEVEL = 232, + SPELL_LUMBERJACKED_CREDIT = 65296 }; enum UlduarEvents From 4c93ac74da81eeb5af27320777b64d347050f8e2 Mon Sep 17 00:00:00 2001 From: Nyeriah Date: Mon, 27 Oct 2014 00:57:20 -0200 Subject: [PATCH 06/11] Scripts/Ulduar: Fix Kologarn's arms being despawned before they're used to access the rubble spawning triggers --- src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index 9486d95639f..d643b3bd8ce 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -166,7 +166,6 @@ class boss_kologarn : public CreatureScript left = apply; if (!apply && isEncounterInProgress) { - who->ToCreature()->DespawnOrUnsummon(); Talk(SAY_LEFT_ARM_GONE); events.ScheduleEvent(EVENT_RESPAWN_LEFT_ARM, 40000); } @@ -177,7 +176,6 @@ class boss_kologarn : public CreatureScript right = apply; if (!apply && isEncounterInProgress) { - who->ToCreature()->DespawnOrUnsummon(); Talk(SAY_RIGHT_ARM_GONE); events.ScheduleEvent(EVENT_RESPAWN_RIGHT_ARM, 40000); } @@ -194,6 +192,7 @@ class boss_kologarn : public CreatureScript { rubbleStalker->CastSpell(rubbleStalker, SPELL_FALLING_RUBBLE, true); rubbleStalker->CastSpell(rubbleStalker, SPELL_SUMMON_RUBBLE, true); + who->ToCreature()->DespawnOrUnsummon(); } if (!right && !left) From aac03a86f4375702d4b7ba77df9885d73b0d1508 Mon Sep 17 00:00:00 2001 From: Dr-J Date: Mon, 27 Oct 2014 14:05:10 +0000 Subject: [PATCH 07/11] DB/Item: Northrend Mystery Gem Pouch (3.3.5) * This is probably only valid for 3.3.5 as item is marked as no longer available in game and last comment on wowhead is from 4.1.0 saying item is now worthless, was added in 3.2 * Remove northrend rare gems for emblem of heroism from Lhara and replace with this item --- sql/updates/world/2014_10_27_01_world_335.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 sql/updates/world/2014_10_27_01_world_335.sql diff --git a/sql/updates/world/2014_10_27_01_world_335.sql b/sql/updates/world/2014_10_27_01_world_335.sql new file mode 100644 index 00000000000..443603fca24 --- /dev/null +++ b/sql/updates/world/2014_10_27_01_world_335.sql @@ -0,0 +1,13 @@ +-- Link reference loot to item (using one of the reference loot template ids from icy prism as same 6 loot items +DELETE FROM `item_loot_template` WHERE `Entry`=46812; +INSERT INTO `item_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(46812, 1, 45010, 100, 0, 1, 0, 1, 1, NULL), +(46812, 2, 45010, 50, 0, 1, 0, 1, 1, NULL); + +-- Add Northrend Mystery Gem Pouch to Lhara +DELETE FROM `npc_vendor` WHERE `entry`=14846 AND `item`=46812; +INSERT INTO `npc_vendor` (`entry`, `slot`, `item`, `maxcount`, `incrtime`, `ExtendedCost`, `VerifiedBuild`) VALUES +(14846, 0, 46812, 1, 43200, 0, 0); + +-- Delete NR Rare nr gems for Emblem of Heroism from Lhara +DELETE FROM `npc_vendor` WHERE `entry`=14846 AND `item` IN(36927,36918,36933,36921,36924,36930); From ad9914d523afa1b7f8f98b895795a63394a26966 Mon Sep 17 00:00:00 2001 From: Dr-J Date: Mon, 27 Oct 2014 16:12:53 +0000 Subject: [PATCH 08/11] DB/Misc: Zone Wide Texts --- sql/updates/world/2014_10_27_02_world.sql | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 sql/updates/world/2014_10_27_02_world.sql diff --git a/sql/updates/world/2014_10_27_02_world.sql b/sql/updates/world/2014_10_27_02_world.sql new file mode 100644 index 00000000000..8bc4564b2f3 --- /dev/null +++ b/sql/updates/world/2014_10_27_02_world.sql @@ -0,0 +1,21 @@ +UPDATE `creature_text` SET `TextRange`=2 WHERE `entry`=16128 AND `groupid` IN(1,2,3,4,5,6,7); +UPDATE `creature_text` SET `TextRange`=2 WHERE `entry`=30007 AND `groupid`=14 AND `id`=0; + +UPDATE `smart_scripts` SET `link`=27 WHERE `entryorguid`=18471 AND `source_type`=0 AND `id`=23 AND `link`=0; + +DELETE FROM `smart_scripts` WHERE `entryorguid`=18471 AND `source_type`=0 AND `id`=27; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(18471, 0, 27, 0, 61, 0, 100, 0, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Gurgthock - On Data Set 15 15 - Say'); + +DELETE FROM `creature_text` WHERE `entry`=18471 AND `groupid`=12; +DELETE FROM `creature_text` WHERE `entry`=22941; + +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(18471, 12, 0, '$n has defeated the hero of the Warmaul, Mogor! All hail $n!', 12, 0, 100, 15, 0, 0, 15482, 2, 'Gurgthock'), +(22941, 0, 0, 'All hail, $n, the new $G King : Queen; of the ogres!!!', 12, 0, 100, 0, 0, 0, 20791, 2, 'Mog''dorg the Wizened'); + +UPDATE `creature_template` SET `ainame`='SmartAI', `scriptname`='' WHERE `entry` =22941; +DELETE FROM `smart_scripts` WHERE `entryorguid` =22941 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 +(22941, 0, 0, 0, 20, 0, 100, 0, 11000, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Mog''dorg the Wizened - On Quest Complete (Into the Soulgrinder) - Say'); From 9af10e6a9280ade4ea763efa37c3c1b2d36185d2 Mon Sep 17 00:00:00 2001 From: Dr-J Date: Tue, 28 Oct 2014 17:22:58 +0000 Subject: [PATCH 09/11] DB/Misc: Short John Mithril / Arena Treasure Chest * Remove permament spawn of Arena Treasure Chest * Script Short John Mithril to start wp at start of event, say his 2 lines (1st zone wide) and summon Arena Treasure Chest --- sql/updates/world/2014_10_28_00_world.sql | 53 +++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 sql/updates/world/2014_10_28_00_world.sql diff --git a/sql/updates/world/2014_10_28_00_world.sql b/sql/updates/world/2014_10_28_00_world.sql new file mode 100644 index 00000000000..bdb90e47854 --- /dev/null +++ b/sql/updates/world/2014_10_28_00_world.sql @@ -0,0 +1,53 @@ +DELETE FROM `waypoints` WHERE `entry`=14508; +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +(14508,1,-13187.14, 319.7746, 33.2346, 'Short John Mithril'), +(14508,2,-13215.14, 322.7813, 33.24456, 'Short John Mithril'), +(14508,3,-13234.32, 314.1292, 33.20762, 'Short John Mithril'), +(14508,4,-13248.82, 299.0459, 33.22644, 'Short John Mithril'), +(14508,5,-13254.88, 284.0705, 33.24255, 'Short John Mithril'), +(14508,6,-13255.58, 264.5797, 33.24498, 'Short John Mithril'), +(14508,7,-13247.58, 243.589, 33.20824, 'Short John Mithril'), +(14508,8,-13237.57, 231.7462, 33.23737, 'Short John Mithril'), +(14508,9,-13233.31, 231.8894, 33.2352, 'Short John Mithril'), +(14508,10,-13235.35, 231.8208, 33.23225, 'Short John Mithril'), +(14508,11,-13234.51, 239.4648, 33.36068, 'Short John Mithril'), +(14508,12,-13239.65, 247.5611, 29.29738, 'Short John Mithril'), +(14508,13,-13244.49, 256.3933, 22.63047, 'Short John Mithril'), +(14508,14,-13241.24, 261.35, 21.93297, 'Short John Mithril'), +(14508,15,-13204.08, 277.1676, 21.98207, 'Short John Mithril'), +(14508,16,-13219.24, 275.4513, 21.98207, 'Short John Mithril'), +(14508,17,-13240.61, 268.921, 21.93298, 'Short John Mithril'), +(14508,18,-13240.61, 268.921, 21.93298, 'Short John Mithril'), +(14508,19,-13244.04, 261.8775, 21.93297, 'Short John Mithril'), +(14508,20,-13243.42, 254.9109, 23.88685, 'Short John Mithril'), +(14508,21,-13239.03, 245.3709, 29.23729, 'Short John Mithril'), +(14508,22,-13233.62, 238.1597, 33.35011, 'Short John Mithril'), +(14508,23,-13237.55, 232.776, 33.23082, 'Short John Mithril'), +(14508,24,-13250.02, 248.9038, 33.23286, 'Short John Mithril'), +(14508,25,-13255.25, 264.0384, 33.24439, 'Short John Mithril'), +(14508,26,-13255.29, 282.6273, 33.24288, 'Short John Mithril'), +(14508,27,-13248.91, 298.4456, 33.24187, 'Short John Mithril'), +(14508,28,-13233.84, 314.3157, 33.20814, 'Short John Mithril'), +(14508,29,-13215.96, 322.7598, 33.24435, 'Short John Mithril'), +(14508,30,-13199.4, 323.3979, 33.24255, 'Short John Mithril'), +(14508,31,-13188.29, 320.0755, 33.23479, 'Short John Mithril'), +(14508,32,-13184.82, 329.8854, 37.95504, 'Short John Mithril'), +(14508,33,-13184.48, 332.6711, 40.32992, 'Short John Mithril'); + +DELETE FROM `game_event_gameobject` WHERE `guid`=12029 AND `eventEntry`=16; +DELETE FROM `gameobject` WHERE `guid`=12029; + +UPDATE `creature_template` SET `ainame`='SmartAI', `scriptname`='' WHERE `entry` =14508; +DELETE FROM `smart_scripts` WHERE `entryorguid` =14508 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 +(14508, 0, 0, 0, 68, 0, 100, 0, 16, 0, 0, 0, 53, 0, 14508, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Short John Mithril - On Event Start - Start WP'), +(14508, 0, 1, 0, 40, 0, 100, 0, 1, 14508, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Short John Mithril - On Reached WP1 - Say'), +(14508, 0, 2, 3, 40, 0, 100, 0, 16, 14508, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Short John Mithril - On Reached WP16 - Say'), +(14508, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 50, 179697, 10740, 0, 0, 0, 0, 8, 0, 0, 0, -13202.89, 276.757,21.85707,2.775069, 'Short John Mithril - On Reached WP19 - Spawn Chest'), +(14508, 0, 4, 0, 40, 0, 100, 0, 33, 14508, 0, 0, 66, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 4.415683, 'Short John Mithril - On Reached WP33 - Set orientation'); + +DELETE FROM `creature_text` WHERE `entry`=14508; +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(14508, 0, 0, 'Arrr, Me Hearties! I be havin'' some extra Treasure that I be givin'' away at the Gurubashi Arena! All ye need do to collect it is open the chest I leave on the arena floor!', 14, 0, 100, 0, 0, 0, 9730, 2, 'Short John Mithril'), +(14508, 1, 0, 'Let the Bloodletting Begin!', 14, 0, 100, 0, 0, 0, 9731, 0, 'Short John Mithril'); From 21820b425b0b573229f683a2d45b23d8a42c888d Mon Sep 17 00:00:00 2001 From: Nyeriah Date: Wed, 29 Oct 2014 21:46:51 -0200 Subject: [PATCH 10/11] Scripts/Ulduar: Fix Ignis' Slag Pot periodic ticks and enable achievement "Hot Pocket" --- sql/updates/world/2014_10_29_00_world.sql | 7 +++++++ .../Northrend/Ulduar/Ulduar/boss_ignis.cpp | 15 +++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 sql/updates/world/2014_10_29_00_world.sql diff --git a/sql/updates/world/2014_10_29_00_world.sql b/sql/updates/world/2014_10_29_00_world.sql new file mode 100644 index 00000000000..f29b6745133 --- /dev/null +++ b/sql/updates/world/2014_10_29_00_world.sql @@ -0,0 +1,7 @@ +-- Spell difficulty entry for Slag Pot Damage spell +DELETE FROM `spelldifficulty_dbc` WHERE `id` = 65722; +INSERT INTO `spelldifficulty_dbc` (`id`, `spellid0`, `spellid1`, `spellid2`, `spellid3`) VALUES +(65722, 65722, 65723, 0, 0); + +-- Clean up unneeded criteria data, enables achievement Hot Pocket +DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10430, 10431) AND `type` = 18; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp index 14087ace975..276e3a10513 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp @@ -241,7 +241,7 @@ class boss_ignis : public CreatureScript case EVENT_CHANGE_POT: if (Unit* slagPotTarget = ObjectAccessor::GetUnit(*me, _slagPotGUID)) { - slagPotTarget->AddAura(SPELL_SLAG_POT, slagPotTarget); + DoCast(slagPotTarget, SPELL_SLAG_POT, true); slagPotTarget->EnterVehicle(me, 1); events.CancelEvent(EVENT_CHANGE_POT); events.ScheduleEvent(EVENT_END_POT, 10000); @@ -458,14 +458,13 @@ class spell_ignis_slag_pot : public SpellScriptLoader return true; } - void HandleEffectPeriodic(AuraEffect const* aurEff) + void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) { - Unit* aurEffCaster = aurEff->GetCaster(); - if (!aurEffCaster) - return; - - Unit* target = GetTarget(); - aurEffCaster->CastSpell(target, SPELL_SLAG_POT_DAMAGE, true); + if (Unit* caster = GetCaster()) + { + Unit* target = GetTarget(); + caster->CastSpell(target, SPELL_SLAG_POT_DAMAGE, true); + } } void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) From 799bdc17105c566a705cb93b4f1d1813c23f2ba2 Mon Sep 17 00:00:00 2001 From: Nyeriah Date: Thu, 30 Oct 2014 04:38:55 -0200 Subject: [PATCH 11/11] DB/Disables: Remove criteria for the "Shattered" achievement from disables ...as it works fine. Ulduar/Ignis achievement. --- sql/updates/world/2014_10_30_00_world.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 sql/updates/world/2014_10_30_00_world.sql diff --git a/sql/updates/world/2014_10_30_00_world.sql b/sql/updates/world/2014_10_30_00_world.sql new file mode 100644 index 00000000000..30c528cf3f0 --- /dev/null +++ b/sql/updates/world/2014_10_30_00_world.sql @@ -0,0 +1 @@ +DELETE FROM `disables` WHERE `entry` IN (10068, 10069) AND `sourceType` = 4;