From 2ef96fbbe01dfb8713de2af938c9d449ba06335d Mon Sep 17 00:00:00 2001 From: vcrx6 Date: Tue, 21 Jun 2011 02:03:18 -0700 Subject: [PATCH 01/58] Scripts/Ulduar: typo in spell_pool_of_tar --- .../Ulduar/ulduar/boss_flame_leviathan.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp index f54417d46b..d086ae88d3 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp @@ -846,15 +846,14 @@ class npc_mechanolift : public CreatureScript } }; -// WHY IS THIS CALLED spell_??? -class spell_pool_of_tar : public CreatureScript +class npc_pool_of_tar : public CreatureScript { public: - spell_pool_of_tar() : CreatureScript("spell_pool_of_tar") { } + npc_pool_of_tar() : CreatureScript("npc_pool_of_tar") { } - struct spell_pool_of_tarAI : public ScriptedAI + struct npc_pool_of_tarAI : public ScriptedAI { - spell_pool_of_tarAI(Creature* creature) : ScriptedAI(creature) + npc_pool_of_tarAI(Creature* creature) : ScriptedAI(creature) { me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetReactState(REACT_PASSIVE); @@ -877,7 +876,7 @@ class spell_pool_of_tar : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new spell_pool_of_tarAI(creature); + return new npc_pool_of_tarAI(creature); } }; @@ -1421,7 +1420,7 @@ void AddSC_boss_flame_leviathan() new boss_flame_leviathan_overload_device(); new boss_flame_leviathan_safety_container(); new npc_mechanolift(); - new spell_pool_of_tar(); + new npc_pool_of_tar(); new npc_colossus(); new npc_thorims_hammer(); new npc_mimirons_inferno(); From 5052e39b8c3a9e59c3bed847b887b5bee6c9853c Mon Sep 17 00:00:00 2001 From: click Date: Thu, 23 Jun 2011 18:15:13 +0200 Subject: [PATCH 02/58] Core/Spells: Remove now deprecated spellscript for Shroud of Death --- src/server/scripts/Spells/spell_generic.cpp | 36 --------------------- 1 file changed, 36 deletions(-) diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index f693c1b249..2c8ab099ce 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -623,42 +623,6 @@ class spell_gen_animal_blood : public SpellScriptLoader } }; -class spell_gen_shroud_of_death : public SpellScriptLoader -{ - public: - spell_gen_shroud_of_death() : SpellScriptLoader("spell_gen_shroud_of_death") { } - - class spell_gen_shroud_of_death_AuraScript : public AuraScript - { - PrepareAuraScript(spell_gen_shroud_of_death_AuraScript); - - void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - Unit* target = GetTarget(); - target->m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST); - target->m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST); - } - - void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - Unit* target = GetTarget(); - target->m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE); - target->m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE); - } - - void Register() - { - OnEffectApply += AuraEffectApplyFn(spell_gen_shroud_of_death_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - OnEffectRemove += AuraEffectRemoveFn(spell_gen_shroud_of_death_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const - { - return new spell_gen_shroud_of_death_AuraScript(); - } -}; - enum DivineStormSpell { SPELL_DIVINE_STORM = 53385, From 3966d9fae3f5f0ae1cc0103aeaf0653b6dad4b08 Mon Sep 17 00:00:00 2001 From: click Date: Thu, 23 Jun 2011 18:36:00 +0200 Subject: [PATCH 03/58] Core/DB: Remove entry for Shroud of Death from world_scripts_full.sql as well, since it's now GONE. --- sql/scripts/world_scripts_full.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index 583b44bd54..4da237e2f2 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -1919,7 +1919,6 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES ( 39228, 'spell_gen_absorb0_hitlimit1'), ( 60218, 'spell_gen_absorb0_hitlimit1'), ( 6962, 'spell_gen_pet_summoned'), -( 10848, 'spell_gen_shroud_of_death'), ( 24750, 'spell_gen_trick'), ( 24751, 'spell_gen_trick_or_treat'), ( 29266, 'spell_creature_permanent_feign_death'), From 713e2df3f76270846ca216646dd2ad36eca3ffbb Mon Sep 17 00:00:00 2001 From: click Date: Thu, 23 Jun 2011 18:41:34 +0200 Subject: [PATCH 04/58] Core/Spells: remove the Shroud of Death from the spell-script list as well - thanks Rasmusik for reminding me --- src/server/scripts/Spells/spell_generic.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 2c8ab099ce..583e199979 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1140,7 +1140,6 @@ void AddSC_generic_spell_scripts() new spell_creature_permanent_feign_death(); new spell_pvp_trinket_wotf_shared_cd(); new spell_gen_animal_blood(); - new spell_gen_shroud_of_death(); new spell_gen_divine_storm_cd_reset(); new spell_gen_parachute_ic(); new spell_gen_gunship_portal(); From 42a80ceaafe14ccb44b212cd7629e59efd89a1e6 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Thu, 23 Jun 2011 21:18:11 +0200 Subject: [PATCH 05/58] Scripts/Gundrak: Properly fixed achievement What the Eck? --- .../world/2011_06_23_04_world_achievement_criteria_data.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sql/updates/world/2011_06_23_04_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_23_04_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_23_04_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..e827105a94 --- /dev/null +++ b/sql/updates/world/2011_06_23_04_world_achievement_criteria_data.sql @@ -0,0 +1,5 @@ +DELETE FROM `disables` WHERE `entry`=7136 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7136 AND `type`=5; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) VALUES +(7136,5,55817,0,''); From 327c5d65bd889b0e44f7630c5d2226b83b63c97a Mon Sep 17 00:00:00 2001 From: Lopin Date: Thu, 23 Jun 2011 21:20:54 +0200 Subject: [PATCH 06/58] Scripts/Azjol'Nerub: Properly fixed achievement Watch Him Die and remove forgotten stuff from last recent commit --- ..._23_05_world_achievement_criteria_data.sql | 6 ++ .../boss_krikthir_the_gatewatcher.cpp | 67 ++++++++++--------- .../Northrend/Gundrak/boss_gal_darah.cpp | 20 ------ 3 files changed, 42 insertions(+), 51 deletions(-) create mode 100644 sql/updates/world/2011_06_23_05_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_23_05_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_23_05_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..6e39da9abb --- /dev/null +++ b/sql/updates/world/2011_06_23_05_world_achievement_criteria_data.sql @@ -0,0 +1,6 @@ +DELETE FROM `disables` WHERE `entry`=4240 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=4240 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(4240,11,0,0,'achievement_watch_him_die'); diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp index 71063c9a80..0affcc5960 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp @@ -75,11 +75,6 @@ enum Yells SAY_PREFIGHT_3 = -1601019 }; -enum Misc -{ - ACHIEV_WATH_HIM_DIE = 1296 -}; - const Position SpawnPoint[] = { { 566.164f, 682.087f, 769.079f, 2.21657f }, @@ -186,24 +181,8 @@ public: { DoScriptText(SAY_DEATH, me); - if (!pInstance) - return; - - pInstance->SetData(DATA_KRIKTHIR_THE_GATEWATCHER_EVENT, DONE); - //Achievement: Watch him die - Creature *pAdd = Unit::GetCreature(*me, pInstance->GetData64(DATA_WATCHER_GASHRA)); - if (!pAdd || !pAdd->isAlive()) - return; - - pAdd = Unit::GetCreature(*me, pInstance->GetData64(DATA_WATCHER_SILTHIK)); - if (!pAdd || !pAdd->isAlive()) - return; - - pAdd = Unit::GetCreature(*me, pInstance->GetData64(DATA_WATCHER_NARJIL)); - if (!pAdd || !pAdd->isAlive()) - return; - - pInstance->DoCompleteAchievement(ACHIEV_WATH_HIM_DIE); + if (pInstance) + pInstance->SetData(DATA_KRIKTHIR_THE_GATEWATCHER_EVENT, DONE); } void KilledUnit(Unit* victim) @@ -551,14 +530,40 @@ public: } }; +class achievement_watch_him_die : public AchievementCriteriaScript +{ + public: + achievement_watch_him_die() : AchievementCriteriaScript("achievement_watch_him_die") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + InstanceScript* instance = target->GetInstanceScript(); + Creature* Watcher[3]; + if (!instance) + return false; + + for (uint8 n = 0; n < 3; ++n) + { + Watcher[n] = ObjectAccessor::GetCreature(*target, instance->GetData64(DATA_WATCHER_GASHRA + n)); + if (Watcher[n] && !Watcher[n]->isAlive()) + return false; + } + + return true; + } +}; + void AddSC_boss_krik_thir() { - new boss_krik_thir; - new npc_skittering_infector; - new npc_anub_ar_skirmisher; - new npc_anub_ar_shadowcaster; - new npc_watcher_gashra; - new npc_anub_ar_warrior; - new npc_watcher_silthik; - new npc_watcher_narjil; + new boss_krik_thir(); + new npc_skittering_infector(); + new npc_anub_ar_skirmisher(); + new npc_anub_ar_shadowcaster(); + new npc_watcher_gashra(); + new npc_anub_ar_warrior(); + new npc_watcher_silthik(); + new npc_watcher_narjil(); + new achievement_watch_him_die(); } diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp index 93acb74cee..6adf8314d5 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp @@ -32,7 +32,6 @@ enum Spells SPELL_STAMPEDE = 55218, SPELL_WHIRLING_SLASH = 55250, H_SPELL_WHIRLING_SLASH = 59824, - SPELL_ECK_RESIDUE = 55817 }; //Yells @@ -50,11 +49,6 @@ enum Yells SAY_TRANSFORM_2 = -1604009 }; -enum Achievements -{ - ACHIEV_WHAT_THE_ECK = 1864, -}; - enum Displays { DISPLAY_RHINO = 26265, @@ -276,21 +270,7 @@ public: DoScriptText(SAY_DEATH, me); if (pInstance) - { - if (IsHeroic()) - { - AchievementEntry const *achievWhatTheEck = GetAchievementStore()->LookupEntry(ACHIEV_WHAT_THE_ECK); - if (achievWhatTheEck) - { - Map::PlayerList const &players = pInstance->instance->GetPlayers(); - for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - if (itr->getSource()->HasAura(SPELL_ECK_RESIDUE)) - itr->getSource()->CompletedAchievement(achievWhatTheEck); - } - } - pInstance->SetData(DATA_GAL_DARAH_EVENT, DONE); - } } void KilledUnit(Unit* victim) From 0ae926e28e9ea913174526b942515eeaec5bf96c Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 23 Jun 2011 21:24:16 +0200 Subject: [PATCH 07/58] Core/Creatures: Items out of stock or items which are required for quests will no longer be displayed in vendor list --- .../Server/Protocol/Handlers/ItemHandler.cpp | 67 +++++++++++-------- src/server/game/Server/WorldSession.h | 2 +- 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp index db2c76b422..97e17f487b 100755 --- a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp @@ -718,12 +718,12 @@ void WorldSession::HandleListInventoryOpcode(WorldPacket & recv_data) SendListInventory(guid); } -void WorldSession::SendListInventory(uint64 vendorguid) +void WorldSession::SendListInventory(uint64 vendorGuid) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_LIST_INVENTORY"); - Creature *pCreature = GetPlayer()->GetNPCIfCanInteractWith(vendorguid, UNIT_NPC_FLAG_VENDOR); - if (!pCreature) + Creature* vendor = GetPlayer()->GetNPCIfCanInteractWith(vendorGuid, UNIT_NPC_FLAG_VENDOR); + if (!vendor) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: SendListInventory - Unit (GUID: %u) not found or you can not interact with him.", uint32(GUID_LOPART(vendorguid))); _player->SendSellError(SELL_ERR_CANT_FIND_VENDOR, NULL, 0, 0); @@ -735,56 +735,65 @@ void WorldSession::SendListInventory(uint64 vendorguid) GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH); // Stop the npc if moving - if (pCreature->HasUnitState(UNIT_STAT_MOVING)) - pCreature->StopMoving(); + if (vendor->HasUnitState(UNIT_STAT_MOVING)) + vendor->StopMoving(); - VendorItemData const* vItems = pCreature->GetVendorItems(); - if (!vItems) + VendorItemData const* items = vendor->GetVendorItems(); + if (!items) { - WorldPacket data(SMSG_LIST_INVENTORY, (8+1+1)); - data << uint64(vendorguid); - data << uint8(0); // count==0, next will be error code + WorldPacket data(SMSG_LIST_INVENTORY, 8 + 1 + 1); + data << uint64(vendorGuid); + data << uint8(0); // count == 0, next will be error code data << uint8(0); // "Vendor has no inventory" SendPacket(&data); return; } - uint8 numitems = vItems->GetItemCount(); + uint8 itemCount = items->GetItemCount(); uint8 count = 0; - WorldPacket data(SMSG_LIST_INVENTORY, (8+1+numitems*8*4)); - data << uint64(vendorguid); + WorldPacket data(SMSG_LIST_INVENTORY, 8 + 1 + itemCount * 8 * 4); + data << uint64(vendorGuid); - size_t count_pos = data.wpos(); + size_t countPos = data.wpos(); data << uint8(count); - float discountMod = _player->GetReputationPriceDiscount(pCreature); + float discountMod = _player->GetReputationPriceDiscount(vendor); - for (uint8 vendorslot = 0; vendorslot < numitems; ++vendorslot ) + for (uint8 slot = 0; slot < itemCount; ++slot) { - if (VendorItem const* crItem = vItems->GetItem(vendorslot)) + if (VendorItem const* item = items->GetItem(slot)) { - if (ItemTemplate const *pProto = sObjectMgr->GetItemTemplate(crItem->item)) + if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(item->item)) { - if ((pProto->AllowableClass & _player->getClassMask()) == 0 && pProto->Bonding == BIND_WHEN_PICKED_UP && !_player->isGameMaster()) + if (!(itemTemplate->AllowableClass & _player->getClassMask()) && itemTemplate->Bonding == BIND_WHEN_PICKED_UP && !_player->isGameMaster()) continue; // Only display items in vendor lists for the team the // player is on. If GM on, display all items. - if (!_player->isGameMaster() && ((pProto->Flags2 & ITEM_FLAGS_EXTRA_HORDE_ONLY && _player->GetTeam() == ALLIANCE) || (pProto->Flags2 == ITEM_FLAGS_EXTRA_ALLIANCE_ONLY && _player->GetTeam() == HORDE))) + if (!_player->isGameMaster() && ((itemTemplate->Flags2 & ITEM_FLAGS_EXTRA_HORDE_ONLY && _player->GetTeam() == ALLIANCE) || (itemTemplate->Flags2 == ITEM_FLAGS_EXTRA_ALLIANCE_ONLY && _player->GetTeam() == HORDE))) continue; + + // Items sold out are not displayed in list + uint32 leftInStock = !item->maxcount ? 0xFFFFFFFF : vendor->GetVendorItemCurrentCount(item); + if (!leftInStock) + continue; + + if (itemTemplate->Class == ITEM_CLASS_QUEST && !_player->HasQuestForItem(item->item)) + continue; + ++count; // reputation discount - int32 price = crItem->IsGoldRequired(pProto) ? uint32(floor(pProto->BuyPrice * discountMod)) : 0; + int32 price = item->IsGoldRequired(itemTemplate) ? uint32(floor(itemTemplate->BuyPrice * discountMod)) : 0; - data << uint32(vendorslot+1); // client expects counting to start at 1 - data << uint32(crItem->item); - data << uint32(pProto->DisplayInfoID); - data << int32(crItem->maxcount <= 0 ? 0xFFFFFFFF : pCreature->GetVendorItemCurrentCount(crItem)); + data << uint32(slot + 1); // client expects counting to start at 1 + data << uint32(item->item); + data << uint32(itemTemplate->DisplayInfoID); + data << int32(leftInStock); data << uint32(price); - data << uint32(pProto->MaxDurability); - data << uint32(pProto->BuyCount); - data << uint32(crItem->ExtendedCost); + data << uint32(itemTemplate->MaxDurability); + data << uint32(itemTemplate->BuyCount); + data << uint32(item->ExtendedCost); } } } @@ -796,7 +805,7 @@ void WorldSession::SendListInventory(uint64 vendorguid) return; } - data.put(count_pos, count); + data.put(countPos, count); SendPacket(&data); } diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index eb1fd068bc..f45ee79847 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -284,7 +284,7 @@ class WorldSession void SendTrainerList(uint64 guid); void SendTrainerList(uint64 guid, const std::string& strTitle); - void SendListInventory(uint64 guid); + void SendListInventory(uint64 vendorGuid); void SendShowBank(uint64 guid); void SendTabardVendorActivate(uint64 guid); void SendSpiritResurrect(); From 36d6ca471115b101ffb62d7cd4b994ba3b6347fd Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Thu, 23 Jun 2011 21:24:20 +0200 Subject: [PATCH 08/58] Scripts/Ulduar: Fixed Sentinel Blast affecting whole instance and small typo in a script --- ...2011_06_23_06_world_spell_script_names.sql | 5 +++ .../Northrend/Ulduar/ulduar/boss_auriaya.cpp | 41 ++++++++++++++++--- 2 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 sql/updates/world/2011_06_23_06_world_spell_script_names.sql diff --git a/sql/updates/world/2011_06_23_06_world_spell_script_names.sql b/sql/updates/world/2011_06_23_06_world_spell_script_names.sql new file mode 100644 index 0000000000..33d20e467c --- /dev/null +++ b/sql/updates/world/2011_06_23_06_world_spell_script_names.sql @@ -0,0 +1,5 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN (64679,64392); +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) +VALUES +(64679,'spell_auriaya_sentinel_blast'), +(64392,'spell_auriaya_sentinel_blast'); diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp index ee0dd85519..051fd1ad5f 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp @@ -113,7 +113,7 @@ class boss_auriaya : public CreatureScript { _Reset(); DefenderGUID = 0; - defenderLifes = 8; + defenderLives = 8; crazyCatLady = true; nineLives = false; } @@ -165,8 +165,8 @@ class boss_auriaya : public CreatureScript SetData(DATA_CRAZY_CAT_LADY, 0); break; case ACTION_RESPAWN_DEFENDER: - --defenderLifes; - if (!defenderLifes) + --defenderLives; + if (!defenderLives) { SetData(DATA_NINE_LIVES, 1); break; @@ -247,8 +247,8 @@ class boss_auriaya : public CreatureScript if (Creature* Defender = ObjectAccessor::GetCreature(*me, DefenderGUID)) { Defender->Respawn(); - if (defenderLifes) - Defender->SetAuraStack(SPELL_FERAL_ESSENCE, Defender, defenderLifes); + if (defenderLives) + Defender->SetAuraStack(SPELL_FERAL_ESSENCE, Defender, defenderLives); Defender->SetInCombatWithZone(); if (!Defender->isInCombat()) Defender->AI()->AttackStart(me->getVictim()); @@ -273,7 +273,7 @@ class boss_auriaya : public CreatureScript private: uint64 DefenderGUID; - uint8 defenderLifes; + uint8 defenderLives; bool crazyCatLady; bool nineLives; }; @@ -507,6 +507,34 @@ class spell_auriaya_strenght_of_the_pack : public SpellScriptLoader } }; +class spell_auriaya_sentinel_blast : public SpellScriptLoader +{ + public: + spell_auriaya_sentinel_blast() : SpellScriptLoader("spell_auriaya_sentinel_blast") { } + + class spell_auriaya_sentinel_blast_SpellScript : public SpellScript + { + PrepareSpellScript(spell_auriaya_sentinel_blast_SpellScript); + + void FilterTargets(std::list& unitList) + { + unitList.remove_if(PlayerOrPetCheck()); + } + + void Register() + { + OnUnitTargetSelect += SpellUnitTargetFn(spell_auriaya_sentinel_blast_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_AREA_ENEMY_SRC); + OnUnitTargetSelect += SpellUnitTargetFn(spell_auriaya_sentinel_blast_SpellScript::FilterTargets, EFFECT_1, TARGET_UNIT_AREA_ENEMY_SRC); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_auriaya_sentinel_blast_SpellScript(); + } +}; + + class achievement_nine_lives : public AchievementCriteriaScript { public: @@ -548,6 +576,7 @@ void AddSC_boss_auriaya() new npc_feral_defender(); new npc_sanctum_sentry(); new spell_auriaya_strenght_of_the_pack(); + new spell_auriaya_sentinel_blast(); new achievement_nine_lives(); new achievement_crazy_cat_lady(); } From e033d4c7cc32a7553b94a9132424891c4e406875 Mon Sep 17 00:00:00 2001 From: tobmaps Date: Fri, 24 Jun 2011 02:57:06 +0700 Subject: [PATCH 09/58] Fix build --- src/server/game/Server/Protocol/Handlers/ItemHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp index 97e17f487b..cc0f2a9a51 100755 --- a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp @@ -725,7 +725,7 @@ void WorldSession::SendListInventory(uint64 vendorGuid) Creature* vendor = GetPlayer()->GetNPCIfCanInteractWith(vendorGuid, UNIT_NPC_FLAG_VENDOR); if (!vendor) { - sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: SendListInventory - Unit (GUID: %u) not found or you can not interact with him.", uint32(GUID_LOPART(vendorguid))); + sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: SendListInventory - Unit (GUID: %u) not found or you can not interact with him.", uint32(GUID_LOPART(vendorGuid))); _player->SendSellError(SELL_ERR_CANT_FIND_VENDOR, NULL, 0, 0); return; } From 5afdef0ec37dca66f2df86689e55a904cc9c4de8 Mon Sep 17 00:00:00 2001 From: Lopin Date: Thu, 23 Jun 2011 22:17:48 +0200 Subject: [PATCH 10/58] DB/SQL: Added today's changes to world_scripts_full.sql --- sql/scripts/world_scripts_full.sql | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index 4da237e2f2..7fa403cad5 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -1827,7 +1827,7 @@ UPDATE `outdoorpvp_template` SET `ScriptName`='outdoorpvp_si' WHERE `TypeId`=5; UPDATE `outdoorpvp_template` SET `ScriptName`='outdoorpvp_ep' WHERE `TypeId`=6; /* ACHIEVEMENTS */ -DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (3693,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,1234,1239,5605,5606,12778,13036,13035,13037,12977,12967,12986,12982,12993,12780,13012,13011,13013,12062,12063,12064,12065,12183,12068,12060,12061,12822,12996,12972,12989,10062,10063,10054,10055,10046,10047,10048,10049,10050,10051,10044,10045,6446,7625,7628,5541,5542,5543,7573,7574,7265,7549,12971,12978,12979,12980,7598,7587,7264,7548,10068,10069,10173,10306,10451,10462,10447,10448,10449,10459,10460,10461) AND `type` IN (0,11); +DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (3693,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,1234,1239,5605,5606,12778,13036,13035,13037,12977,12967,12986,12982,12993,12780,13012,13011,13013,12062,12063,12064,12065,12183,12068,12060,12061,12822,12996,12972,12989,10062,10063,10054,10055,10046,10047,10048,10049,10050,10051,10044,10045,6446,7625,7628,5541,5542,5543,7573,7574,7265,7549,12971,12978,12979,12980,7598,7587,7264,7548,10068,10069,10173,10306,10451,10462,10447,10448,10449,10459,10460,10461,7316,7317,7318,7583,4240) AND `type` IN (0,11); INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) VALUES (3693,11,0,0, 'achievement_storm_glory'), (3804,11,0,0, 'achievement_resilient_victory'), @@ -1911,7 +1911,12 @@ INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`, (10460,11,0,0,'achievement_knock_knock_on_wood'), (10461,11,0,0,'achievement_knock_knock_knock_on_wood'), (10445,11,0,0,'achievement_getting_back_to_nature'), -(10758,11,0,0,'achievement_getting_back_to_nature'); +(10758,11,0,0,'achievement_getting_back_to_nature'), +(7317,11,0,0,'achievement_respect_your_elders'), +(7318,11,0,0,'achievement_king_dred'), +(7316,11,0,0,'achievement_chaos_theory'), +(7583,11,0,0,'achievement_share_the_love'), +(4240,11,0,0,'achievement_watch_him_die'); /* SPELLS */ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES @@ -2241,6 +2246,8 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES ( 37751, 'spell_xt002_submerged'), ( 37752, 'spell_xt002_stand'), ( 64381, 'spell_auriaya_strenght_of_the_pack'), +( 64679, 'spell_auriaya_sentinel_blast'), +( 64392, 'spell_auriaya_sentinel_blast'), -- Eye Of Eternity ( 56105, 'spell_malygos_vortex_dummy'), ( 55873, 'spell_malygos_vortex_visual'), From 05842713ef5fad0919e76e9cbce7a443bf019322 Mon Sep 17 00:00:00 2001 From: tobmaps Date: Fri, 24 Jun 2011 03:18:06 +0700 Subject: [PATCH 11/58] Core/Spells: Allow direct damage effect of Seal of Vengeance and Seal of Corruption to proc from Shield of Righteousness --- src/server/game/Entities/Unit/Unit.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c5122b04d6..66992062fb 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6808,7 +6808,8 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger // At melee attack or Hammer of the Righteous spell damage considered as melee attack bool stacker = !procSpell || procSpell->Id == 53595; - bool damager = procSpell && procSpell->EquippedItemClass == ITEM_CLASS_WEAPON; + // spells with SPELL_DAMAGE_CLASS_MELEE excluding Judgements + bool damager = procSpell && procSpell->EquippedItemClass != -1; if (!stacker && !damager) return false; @@ -6839,7 +6840,8 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger // At melee attack or Hammer of the Righteous spell damage considered as melee attack bool stacker = !procSpell || procSpell->Id == 53595; - bool damager = procSpell && procSpell->EquippedItemClass == ITEM_CLASS_WEAPON; + // spells with SPELL_DAMAGE_CLASS_MELEE excluding Judgements + bool damager = procSpell && procSpell->EquippedItemClass != -1; if (!stacker && !damager) return false; From c33dbded94ea07d3ad51b6206372e390e9b65d0b Mon Sep 17 00:00:00 2001 From: tobmaps Date: Fri, 24 Jun 2011 03:25:59 +0700 Subject: [PATCH 12/58] DB/SQL: Added lost change to world_scripts_full.sql --- sql/scripts/world_scripts_full.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index 7fa403cad5..92c5b80d60 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -2372,6 +2372,7 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (-33851, 'spell_dru_primal_tenacity'), ( 62606, 'spell_dru_savage_defense'), ( 70691, 'spell_dru_t10_restoration_4p_bonus'), +(-50294, 'spell_dru_starfall_aoe'), -- example ( 66244, 'spell_ex_66244'), ( 5581, 'spell_ex_5581'), From 5ddf90c5fe8e51a72697fea5b483b0138bf0d308 Mon Sep 17 00:00:00 2001 From: Shocker Date: Thu, 23 Jun 2011 23:43:49 +0300 Subject: [PATCH 13/58] Core/Spells: Don't allow players to cast client-side hidden spells directly --- src/server/game/Server/Protocol/Handlers/SpellHandler.cpp | 2 +- src/server/game/Spells/Spell.cpp | 6 +++++- src/server/game/Spells/Spell.h | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp b/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp index b127831bad..6193b0c621 100755 --- a/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp @@ -402,7 +402,7 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket) spellInfo = actualSpellInfo; } - Spell* spell = new Spell(mover, spellInfo, false); + Spell* spell = new Spell(mover, spellInfo, false, 0, false, true); spell->m_cast_count = castCount; // set count of casts spell->prepare(&targets); } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index bf444f27e8..4357fb4bbc 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -439,7 +439,7 @@ void SpellCastTargets::OutDebug() const sLog->outString("elevation: %f", m_elevation); } -Spell::Spell(Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID, bool skipCheck): +Spell::Spell(Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID, bool skipCheck, bool castedClientside): m_spellInfo(sSpellMgr->GetSpellForDifficultyFromSpell(info, Caster)), m_caster(Caster), m_spellValue(new SpellValue(m_spellInfo)) { @@ -502,6 +502,7 @@ m_caster(Caster), m_spellValue(new SpellValue(m_spellInfo)) m_spellState = SPELL_STATE_NULL; + m_castedClientside = castedClientside; m_IsTriggeredSpell = bool(triggered || (info->AttributesEx4 & SPELL_ATTR4_TRIGGERED)); m_CastItem = NULL; @@ -4651,6 +4652,9 @@ SpellCastResult Spell::CheckCast(bool strict) if (m_spellInfo->AttributesEx7 & SPELL_ATTR7_IS_CHEAT_SPELL && !m_caster->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_ALLOW_CHEAT_SPELLS)) return SPELL_FAILED_SPELL_UNAVAILABLE; + if (m_castedClientside && m_spellInfo->Attributes & SPELL_ATTR0_HIDDEN_CLIENTSIDE && m_caster->GetTypeId() == TYPEID_PLAYER && !m_CastItem) + return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; + // Check global cooldown if (strict && !m_IsTriggeredSpell && HasGlobalCooldown()) return SPELL_FAILED_NOT_READY; diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index ddb700aa8a..9a5b98efaa 100755 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -386,7 +386,7 @@ class Spell typedef std::set UsedSpellMods; - Spell(Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID = 0, bool skipCheck = false); + Spell(Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID = 0, bool skipCheck = false, bool castedClientside = false); ~Spell(); void prepare(SpellCastTargets const* targets, AuraEffect const* triggeredByAura = NULL); @@ -683,6 +683,7 @@ class Spell uint32 m_timer; bool m_IsTriggeredSpell; + bool m_castedClientside; // if need this can be replaced by Aura copy // we can't store original aura link to prevent access to deleted auras From 1b9a2dc4dceee0c6c663f4af8389a0c67c551942 Mon Sep 17 00:00:00 2001 From: maanuel Date: Thu, 23 Jun 2011 18:41:38 -0300 Subject: [PATCH 14/58] Isle of Conquest: Corrected message sent when node is claimed or captured. --- src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp | 4 ++-- src/server/game/Miscellaneous/Language.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp index bd3125ff18..d5fd8cca11 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp @@ -186,7 +186,7 @@ void BattlegroundIC::Update(uint32 diff) siege->Respawn(true); } - // we need to confirm this, i am not sure if this every 3 minutes + // we need to confirm if it is every 3 minutes for (uint8 u = (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_A : BG_IC_NPC_DEMOLISHER_1_H); u < (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_4_A : BG_IC_NPC_DEMOLISHER_4_H); u++) { if (Creature* demolisher = GetBGCreature(u)) @@ -200,7 +200,7 @@ void BattlegroundIC::Update(uint32 diff) } } - // the point is waiting for a change on his banner + // the point is waiting for a change on its banner if (nodePoint[i].needChange) { if (nodePoint[i].timer <= diff) diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 41458ecaf5..bd2c34aef5 100755 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -831,8 +831,8 @@ enum TrinityStrings LANG_BG_IC_REFINERY = 1222, LANG_BG_IC_QUARRY = 1223, LANG_BG_IC_HANGAR = 1224, - LANG_BG_IC_ALLIANCE = 1225, - LANG_BG_IC_HORDE = 1226, + LANG_BG_IC_ALLIANCE = 1300, + LANG_BG_IC_HORDE = 1301, // FREE IDS 1228-9999 From 08d5dd5a6551486730a3ae00ac0fde692c25bf22 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Fri, 24 Jun 2011 03:22:04 +0200 Subject: [PATCH 15/58] DB/Waypoints: Add waypoints for a ton of creatures: Signed-off-by: click --- .../world/2011_06_23_07_world_misc.sql | 959 ++++++++++++++++++ 1 file changed, 959 insertions(+) create mode 100644 sql/updates/world/2011_06_23_07_world_misc.sql diff --git a/sql/updates/world/2011_06_23_07_world_misc.sql b/sql/updates/world/2011_06_23_07_world_misc.sql new file mode 100644 index 0000000000..e160887bfb --- /dev/null +++ b/sql/updates/world/2011_06_23_07_world_misc.sql @@ -0,0 +1,959 @@ +-- Pathing for Arctic Ram Entry: 26426 +SET @NPC := 133248; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=3509.64,`position_y`=-750.9414,`position_z`=294.3868 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,3511.387,-733.5805,299.6368,49000,0,0,100,0), +(@PATH,2,3509.64,-750.9414,294.3868,0,0,0,100,0), +(@PATH,3,3498.443,-768.702,291.2594,0,0,0,100,0), +(@PATH,4,3509.64,-750.9414,294.3868,0,0,0,100,0); + +-- Pathing for Illusia Lune Entry: 27042 +SET @NPC := 133617; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=3647.948,`position_y`=-717.1948,`position_z`=215.0342 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,3648.265,-715.3195,215.0314,0,0,0,100,0), +(@PATH,2,3644.507,-714.7984,214.2407,0,0,0,100,0), +(@PATH,3,3635.043,-713.5746,214.2407,0,0,0,100,0), +(@PATH,4,3644.625,-714.8554,214.2407,0,0,0,100,0), +(@PATH,5,3648.25,-715.2807,215.0314,0,0,0,100,0), +(@PATH,6,3647.977,-717.1859,215.0342,0,0,0,100,0), +(@PATH,7,3655.216,-718.0604,215.0296,0,0,0,100,0), +(@PATH,8,3647.948,-717.1948,215.0342,0,0,0,100,0); + +-- Pathing for Ordal McLumpkins Entry: 27044 +SET @NPC := 133619; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=3621.722,`position_y`=-718.3648,`position_z`=215.0349 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,2,3619.423,-714.603,215.0349,35000,0,@PATH+1,100,0), +(@PATH,4,3616.081,-716.1984,215.0349,50000,0,@PATH+2,100,0), +(@PATH,6,3621.722,-718.3648,215.0349,35000,0,@PATH+2,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1,@PATH+2,@PATH+3); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,0,30,0,0,1.466077,846), +(@PATH+1,1,2,83,69,0,847), +(@PATH+2,0,30,0,0,4.639134,848), +(@PATH+2,1,2,83,69,0,849); + +-- Pathing for Hulking Jormungar Entry: 26293 +SET @NPC := 113071; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4686.325,`position_y`=338.1416,`position_z`=116.9954 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,4700.168,367.0156,118.5855,0,0,0,100,0), +(@PATH,2,4731.135,364.8878,126.2894,0,0,0,100,0), +(@PATH,3,4743.483,343.251,129.0478,0,0,0,100,0), +(@PATH,4,4713.793,315.9503,120.7992,0,0,0,100,0), +(@PATH,5,4686.325,338.1416,116.9954,0,0,0,100,0); + +-- Pathing for Magnataur Patriarch Entry: 26295 +SET @NPC := 113266; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4049.302,`position_y`=-29.04574,`position_z`=55.26999 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,4047.976,-37.78185,55.98508,0,0,0,100,0), +(@PATH,2,4047.698,-50.11871,53.98508,0,0,0,100,0), +(@PATH,3,4047.976,-37.78185,55.98508,0,0,0,100,0), +(@PATH,4,4049.302,-29.04574,55.26999,0,0,0,100,0), +(@PATH,5,4047.754,-16.93381,53.89499,0,0,0,100,0), +(@PATH,6,4049.302,-29.04574,55.26999,0,0,0,100,0); + +-- Pathing for Crystalline Ice Elemental Entry: 26316 +SET @NPC := 115062; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4860.147,`position_y`=992.9332,`position_z`=210.192 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,4869.752,1002.653,215.5425,0,0,0,100,0), +(@PATH,2,4860.147,992.9332,210.192,0,0,0,100,0), +(@PATH,3,4850.6,983.3943,204.442,0,0,0,100,0), +(@PATH,4,4844.505,971.259,198.692,0,0,0,100,0), +(@PATH,5,4858.342,938.2769,188.1321,0,0,0,100,0), +(@PATH,6,4844.505,971.259,198.692,0,0,0,100,0), +(@PATH,7,4850.6,983.3943,204.442,0,0,0,100,0), +(@PATH,8,4860.147,992.9332,210.192,0,0,0,100,0); + +-- Pathing for Crystalline Ice Elemental Entry: 26316 +SET @NPC := 115054; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4917.303,`position_y`=924.0703,`position_z`=223.1336 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,4929.146,915.8573,220.6336,0,0,0,100,0), +(@PATH,2,4940.256,927.373,227.7124,0,0,0,100,0), +(@PATH,3,4941.91,938.2441,233.9879,0,0,0,100,0), +(@PATH,4,4938.07,947.0781,238.7379,0,0,0,100,0), +(@PATH,5,4917.303,924.0703,223.1336,0,0,0,100,0); + +-- Pathing for Crystalline Ice Giant Entry: 26291 +SET @NPC := 112865; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4770.23,`position_y`=469.9691,`position_z`=111.7675 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,4796.084,455.2377,109.338,54000,0,@PATH+1,100,0), +(@PATH,2,4770.23,469.9691,111.7675,22000,0,@PATH+2,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1,@PATH+2); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,0,30,0,0,2.9147,850), +(@PATH+2,0,30,0,0,5.201081,851); + +-- Pathing for Crystalline Ice Giant Entry: 26291 +SET @NPC := 112866; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4874.087,`position_y`=452.3281,`position_z`=115.6979 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,4888.814,445.456,118.1979,5000,0,@PATH+1,100,0), +(@PATH,2,4901.041,426.041,116.2949,0,0,0,100,0), +(@PATH,3,4901.041,426.041,116.2949,6000,0,@PATH+2,100,0), +(@PATH,4,4874.087,452.3281,115.6979,0,0,0,100,0), +(@PATH,5,4874.087,452.3281,115.6979,8000,0,@PATH+3,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1,@PATH+2,@PATH+3); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,0,30,0,0,0.8552113,852), +(@PATH+2,0,30,0,0,0.8901179,853), +(@PATH+3,0,30,0,0,0.06981317,854); + +-- Pathing for Rabbit Entry: 721 +SET @NPC := 115702; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=5753.539,`position_y`=772.873,`position_z`=640.8826 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,5767.785,754.2614,641.7114,0,0,0,100,0), +(@PATH,2,5773.825,766.6644,640.7427,0,0,0,100,0), +(@PATH,3,5767.785,754.2614,641.7114,5000,0,0,100,0), +(@PATH,4,5753.539,772.873,640.8826,0,0,0,100,0), +(@PATH,5,5748.938,764.3101,641.9448,0,0,0,100,0), +(@PATH,6,5733.615,778.2639,641.7114,0,0,0,100,0), +(@PATH,7,5737.831,782.386,641.448,0,0,0,100,0), +(@PATH,8,5740.602,787.1411,641.0325,0,0,0,100,0), +(@PATH,9,5733.241,793.4806,640.9481,0,0,0,100,0), +(@PATH,10,5722.088,796.697,641.5259,0,0,0,100,0), +(@PATH,11,5726.339,806.3635,640.8337,0,0,0,100,0), +(@PATH,12,5722.138,815.5085,640.8914,0,0,0,100,0), +(@PATH,13,5714.45,821.5867,641.2027,0,0,0,100,0), +(@PATH,14,5700.078,828.2365,641.8647,0,0,0,100,0), +(@PATH,15,5698.136,820.8531,641.5467,0,0,0,100,0), +(@PATH,16,5709.789,810.5593,641.5497,0,0,0,100,0), +(@PATH,17,5698.065,820.5817,641.5533,0,0,0,100,0), +(@PATH,18,5700.078,828.2365,641.8647,0,0,0,100,0), +(@PATH,19,5714.45,821.5867,641.2027,0,0,0,100,0), +(@PATH,20,5722.138,815.5085,640.8914,0,0,0,100,0), +(@PATH,21,5726.339,806.3635,640.8337,0,0,0,100,0), +(@PATH,22,5722.088,796.697,641.5259,0,0,0,100,0), +(@PATH,23,5733.241,793.4806,640.9481,0,0,0,100,0), +(@PATH,24,5740.602,787.1411,641.0325,0,0,0,100,0), +(@PATH,25,5737.831,782.386,641.448,0,0,0,100,0), +(@PATH,26,5733.615,778.2639,641.7114,0,0,0,100,0), +(@PATH,27,5748.938,764.3101,641.9448,0,0,0,100,0), +(@PATH,28,5753.539,772.873,640.8826,0,0,0,100,0); + +-- Pathing for Putrid Wight Entry: 23992 +SET @NPC := 113344; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2668.823,`position_y`=-3746.312,`position_z`=249.9565 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2646.826,-3743.444,246.5889,0,0,0,100,0), +(@PATH,2,2629.433,-3732.29,245.4538,0,0,0,100,0), +(@PATH,3,2623.224,-3719.469,245.4964,0,0,0,100,0), +(@PATH,4,2627.88,-3711.047,246.3409,0,0,0,100,0), +(@PATH,5,2639.799,-3709.354,243.2022,0,0,0,100,0), +(@PATH,6,2647.973,-3713.873,239.3536,0,0,0,100,0), +(@PATH,7,2655.269,-3720.628,235.0643,0,0,0,100,0), +(@PATH,8,2664.609,-3723.947,230.2771,0,0,0,100,0), +(@PATH,9,2672.977,-3721.034,225.9482,0,0,0,100,0), +(@PATH,10,2680.715,-3711.313,221.8469,6000,0,0,100,0), +(@PATH,11,2677.229,-3716.424,222.8778,0,0,0,100,0), +(@PATH,12,2668.853,-3722.688,228.2985,0,0,0,100,0), +(@PATH,13,2659.52,-3723.743,232.6282,0,0,0,100,0), +(@PATH,14,2651.728,-3716.389,237.3867,0,0,0,100,0), +(@PATH,15,2643.281,-3709.406,241.6877,0,0,0,100,0), +(@PATH,16,2632.315,-3711.092,245.6459,0,0,0,100,0), +(@PATH,17,2624.75,-3717.884,245.7113,0,0,0,100,0), +(@PATH,18,2624.219,-3728.446,245.2014,0,0,0,100,0), +(@PATH,19,2631.771,-3736.979,245.6085,0,0,0,100,0), +(@PATH,20,2643.255,-3747.242,246.4638,0,0,0,100,0), +(@PATH,21,2655.134,-3751.437,248.9429,0,0,0,100,0), +(@PATH,22,2662.831,-3751.152,249.8362,0,0,0,100,0), +(@PATH,23,2668.823,-3746.312,249.9565,8000,0,0,100,0); + +-- Pathing for Putrid Wight Entry: 23992 +SET @NPC := 113343; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2785.402,`position_y`=-3613.447,`position_z`=250.922 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2785.402,-3613.447,250.922,0,0,0,100,0), +(@PATH,2,2785.44,-3590.348,251.3575,0,0,0,100,0), +(@PATH,3,2780.647,-3566.933,248.1158,0,0,0,100,0), +(@PATH,4,2776.989,-3563.271,247.6174,6000,0,0,100,0), +(@PATH,5,2786.118,-3579.14,249.4645,0,0,0,100,0), +(@PATH,6,2789.177,-3593.625,250.844,0,0,0,100,0), +(@PATH,7,2784.655,-3606.138,251.7757,0,0,0,100,0), +(@PATH,8,2778.348,-3606.077,253.5872,0,0,0,100,0), +(@PATH,9,2781.997,-3610.31,252.2005,0,0,0,100,0), +(@PATH,10,2789.771,-3615.286,249.8559,0,0,0,100,0), +(@PATH,11,2796.63,-3628.361,248.4757,0,0,0,100,0), +(@PATH,12,2798.595,-3636.199,247.7422,0,0,0,100,0), +(@PATH,13,2794.572,-3637.352,248.0836,0,0,0,100,0), +(@PATH,14,2806.817,-3639.35,246.4777,0,0,0,100,0), +(@PATH,15,2815.37,-3643.385,242.7697,0,0,0,100,0), +(@PATH,16,2817.436,-3655.363,242.607,0,0,0,100,0), +(@PATH,17,2803.864,-3660.431,246.2676,0,0,0,100,0), +(@PATH,18,2790.148,-3659.774,245.6176,0,0,0,100,0), +(@PATH,19,2783.257,-3650.315,241.2681,0,0,0,100,0), +(@PATH,20,2778.241,-3638.333,235.9849,0,0,0,100,0), +(@PATH,21,2771.057,-3630.219,230.9954,0,0,0,100,0), +(@PATH,22,2761.502,-3627.29,226.378,0,0,0,100,0), +(@PATH,23,2751.042,-3632.291,221.8077,6000,0,0,100,0), +(@PATH,24,2754.787,-3630.722,223.3591,0,0,0,100,0), +(@PATH,25,2766.29,-3628.396,228.8643,0,0,0,100,0), +(@PATH,26,2774.306,-3633.359,232.863,0,0,0,100,0), +(@PATH,27,2779.261,-3642.92,237.6714,0,0,0,100,0), +(@PATH,28,2785.011,-3652.979,242.7388,0,0,0,100,0), +(@PATH,29,2792.728,-3659.369,246.4393,0,0,0,100,0), +(@PATH,30,2806.87,-3658.866,245.5233,0,0,0,100,0), +(@PATH,31,2817.342,-3650.064,242.2243,0,0,0,100,0), +(@PATH,32,2799.635,-3631.787,247.9718,0,0,0,100,0), +(@PATH,33,2785.402,-3613.447,250.922,0,0,0,100,0); + +-- Pathing for Necrolord Entry: 24014 +SET @NPC := 97230; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `id`=24014,`modelid`=0,`spawndist`=0,`MovementType`=2,`position_x`=2809.687,`position_y`=-3622.016,`position_z`=161.3961 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2814.799,-3624.542,161.3958,0,0,0,100,0), +(@PATH,2,2823.035,-3625.648,161.3949,0,0,0,100,0), +(@PATH,3,2829.876,-3624.724,161.3975,0,0,0,100,0), +(@PATH,4,2836.048,-3620.994,161.3983,0,0,0,100,0), +(@PATH,5,2841.855,-3615.051,161.3947,0,0,0,100,0), +(@PATH,6,2844.207,-3609.994,161.3975,0,0,0,100,0), +(@PATH,7,2845.186,-3601.875,161.3951,0,0,0,100,0), +(@PATH,8,2844.337,-3594.973,161.3975,0,0,0,100,0), +(@PATH,9,2840.764,-3588.99,161.3957,0,0,0,100,0), +(@PATH,10,2834.76,-3583.182,161.3952,0,0,0,100,0), +(@PATH,11,2829.575,-3580.736,161.3979,0,0,0,100,0), +(@PATH,12,2821.425,-3579.65,161.3952,0,0,0,100,0), +(@PATH,13,2814.341,-3580.5,161.4046,0,0,0,100,0), +(@PATH,14,2808.07,-3583.772,161.4029,0,0,0,100,0), +(@PATH,15,2802.685,-3590.109,161.395,0,0,0,100,0), +(@PATH,16,2800.225,-3595.279,161.3977,0,0,0,100,0), +(@PATH,17,2799.105,-3603.418,161.3947,0,0,0,100,0), +(@PATH,18,2800.01,-3610.333,161.3973,0,0,0,100,0), +(@PATH,19,2803.705,-3616.418,161.3981,0,0,0,100,0), +(@PATH,20,2809.687,-3622.016,161.3961,0,0,0,100,0); + +-- Pathing for Necrolord Entry: 24014 +SET @NPC := 97248; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `id`=24014,`modelid`=0,`spawndist`=0,`MovementType`=2,`position_x`=2824.036,`position_y`=-3624.829,`position_z`=221.4252 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2816.773,-3623.985,221.4255,0,0,0,100,0), +(@PATH,2,2809.992,-3621.294,221.4247,0,0,0,100,0), +(@PATH,3,2803.77,-3615.729,221.4243,0,0,0,100,0), +(@PATH,4,2800.449,-3608.825,221.4259,0,0,0,100,0), +(@PATH,5,2799.794,-3601.215,221.4245,0,0,0,100,0), +(@PATH,6,2802.056,-3593.389,221.4274,0,0,0,100,0), +(@PATH,7,2806.402,-3587.211,221.4274,0,0,0,100,0), +(@PATH,8,2812.614,-3583.304,221.4273,0,0,0,100,0), +(@PATH,9,2819.016,-3581.604,221.4285,0,0,0,100,0), +(@PATH,10,2825.446,-3581.84,221.4301,0,0,0,100,0), +(@PATH,11,2831.818,-3583.644,221.4293,0,0,0,100,0), +(@PATH,12,2836.348,-3587.178,221.4313,0,0,0,100,0), +(@PATH,13,2839.835,-3592.544,221.434,0,0,0,100,0), +(@PATH,14,2842.145,-3599.79,221.4294,0,0,0,100,0), +(@PATH,15,2843.347,-3608.321,221.4291,0,0,0,100,0), +(@PATH,16,2840.997,-3614.059,221.4281,0,0,0,100,0), +(@PATH,17,2836.926,-3619.116,221.4238,0,0,0,100,0), +(@PATH,18,2831.312,-3622.841,221.4241,0,0,0,100,0), +(@PATH,19,2824.036,-3624.829,221.4252,0,0,0,100,0); + +-- Pathing for Necrolord Entry: 24014 +SET @NPC := 97260; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `id`=24014,`modelid`=0,`spawndist`=0,`MovementType`=2,`position_x`=2586.513,`position_y`=-3756.084,`position_z`=161.398 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2594.313,-3758.43,161.3953,0,0,0,100,0), +(@PATH,2,2601.175,-3758.778,161.3977,0,0,0,100,0), +(@PATH,3,2607.68,-3756.348,161.3983,0,0,0,100,0), +(@PATH,4,2614.385,-3751.512,161.3951,0,0,0,100,0), +(@PATH,5,2617.877,-3746.704,161.3976,0,0,0,100,0), +(@PATH,6,2620.328,-3738.942,161.3956,0,0,0,100,0), +(@PATH,7,2620.506,-3731.859,161.3961,0,0,0,100,0), +(@PATH,8,2618.016,-3725.396,161.3984,0,0,0,100,0), +(@PATH,9,2612.961,-3718.617,161.3952,0,0,0,100,0), +(@PATH,10,2608.518,-3715.498,161.398,0,0,0,100,0), +(@PATH,11,2600.665,-3713.045,161.3954,0,0,0,100,0), +(@PATH,12,2593.633,-3712.684,161.4046,0,0,0,100,0), +(@PATH,13,2586.809,-3714.743,161.4106,0,0,0,100,0), +(@PATH,14,2580.48,-3720.084,161.3953,0,0,0,100,0), +(@PATH,15,2577.218,-3724.641,161.3979,0,0,0,100,0), +(@PATH,16,2574.743,-3732.453,161.3959,0,0,0,100,0), +(@PATH,17,2574.244,-3739.552,161.3972,0,0,0,100,0), +(@PATH,18,2576.927,-3746.14,161.3958,0,0,0,100,0), +(@PATH,19,2581.687,-3752.61,161.398,0,0,0,100,0), +(@PATH,20,2586.513,-3756.084,161.398,0,0,0,100,0); + +-- Pathing for Necrolord Entry: 24014 +SET @NPC := 203503; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2603.992,`position_y`=-3713.681,`position_z`=141.3663 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2597.609,-3712.674,141.3633,0,0,0,100,0), +(@PATH,2,2593.398,-3712.327,141.3879,0,0,0,100,0), +(@PATH,3,2587.152,-3715.266,141.3655,0,0,0,100,0), +(@PATH,4,2580.309,-3720.183,141.3624,0,0,0,100,0), +(@PATH,5,2576.709,-3724.49,141.3625,0,0,0,100,0), +(@PATH,6,2574.215,-3732.656,141.3617,0,0,0,100,0), +(@PATH,7,2574.386,-3739.554,141.3635,0,0,0,100,0), +(@PATH,8,2576.045,-3746.666,141.3606,0,0,0,100,0), +(@PATH,9,2579.443,-3751.851,141.3886,0,0,0,100,0), +(@PATH,10,2584.13,-3754.667,141.3627,0,0,0,100,0), +(@PATH,11,2590.743,-3758.33,141.3646,0,0,0,100,0), +(@PATH,12,2597.277,-3758.514,141.364,0,0,0,100,0), +(@PATH,13,2605.202,-3757.24,141.363,0,0,0,100,0), +(@PATH,14,2611.11,-3754.3,141.3651,0,0,0,100,0), +(@PATH,15,2616.42,-3749.062,141.363,0,0,0,100,0), +(@PATH,16,2619.533,-3741.9,141.3637,0,0,0,100,0), +(@PATH,17,2620.534,-3736.029,141.3637,0,0,0,100,0), +(@PATH,18,2618.751,-3727.877,141.3636,0,0,0,100,0), +(@PATH,19,2616.373,-3722.089,141.3558,0,0,0,100,0), +(@PATH,20,2610.62,-3717.114,141.3638,0,0,0,100,0), +(@PATH,21,2603.992,-3713.681,141.3663,0,0,0,100,0); + +-- Pathing for Necrolord Entry: 24014 +SET @NPC := 115178; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2810.375,`position_y`=-3582.374,`position_z`=141.3599 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2805.214,-3586.358,141.3641,0,0,0,100,0), +(@PATH,2,2801.175,-3592.824,141.363,0,0,0,100,0), +(@PATH,3,2798.759,-3600.248,141.3618,0,0,0,100,0), +(@PATH,4,2799.583,-3606.401,141.3644,0,0,0,100,0), +(@PATH,5,2802.503,-3614.063,141.3632,0,0,0,100,0), +(@PATH,6,2805.852,-3619.302,141.3641,0,0,0,100,0), +(@PATH,7,2812.384,-3623.335,141.3662,0,0,0,100,0), +(@PATH,8,2819.554,-3625.753,141.3661,0,0,0,100,0), +(@PATH,9,2825.986,-3625.251,141.364,0,0,0,100,0), +(@PATH,10,2833.809,-3622.541,141.3623,0,0,0,100,0), +(@PATH,11,2838.974,-3618.843,141.3642,0,0,0,100,0), +(@PATH,12,2843.044,-3612.401,141.3634,0,0,0,100,0), +(@PATH,13,2845.442,-3605.066,141.3624,0,0,0,100,0), +(@PATH,14,2845.091,-3598.814,141.3633,0,0,0,100,0), +(@PATH,15,2842.213,-3590.969,141.3621,0,0,0,100,0), +(@PATH,16,2838.518,-3585.883,141.3633,0,0,0,100,0), +(@PATH,17,2831.972,-3581.769,141.3635,0,0,0,100,0), +(@PATH,18,2824.755,-3579.538,141.3658,0,0,0,100,0), +(@PATH,19,2818.303,-3579.807,141.3651,0,0,0,100,0), +(@PATH,20,2810.375,-3582.374,141.3599,0,0,0,100,0); + +-- Pathing for Necrolord Entry: 24014 +SET @NPC := 97251; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `id`=24014,`modelid`=0,`spawndist`=0,`MovementType`=2,`position_x`=2801.415,`position_y`=-3592.805,`position_z`=181.4086 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2805.63,-3586.741,181.4093,0,0,0,100,0), +(@PATH,2,2810.837,-3582.852,181.4067,0,0,0,100,0), +(@PATH,3,2818.372,-3579.891,181.4075,0,0,0,100,0), +(@PATH,4,2824.698,-3579.42,181.4061,0,0,0,100,0), +(@PATH,5,2831.986,-3581.824,181.4095,0,0,0,100,0), +(@PATH,6,2838.559,-3585.897,181.4075,0,0,0,100,0), +(@PATH,7,2842.173,-3590.988,181.4084,0,0,0,100,0), +(@PATH,8,2845.01,-3598.905,181.3987,0,0,0,100,0), +(@PATH,9,2845.163,-3605.083,181.4067,0,0,0,100,0), +(@PATH,10,2842.933,-3612.533,181.4066,0,0,0,100,0), +(@PATH,11,2839.144,-3618.943,181.4076,0,0,0,100,0), +(@PATH,12,2833.877,-3622.96,181.4045,0,0,0,100,0), +(@PATH,13,2826.177,-3625.395,181.4086,0,0,0,100,0), +(@PATH,14,2819.915,-3625.802,181.4059,0,0,0,100,0), +(@PATH,15,2812.322,-3623.443,181.3985,0,0,0,100,0), +(@PATH,16,2805.912,-3619.149,181.4085,0,0,0,100,0), +(@PATH,17,2801.737,-3614.466,181.4039,0,0,0,100,0), +(@PATH,18,2799.258,-3606.344,181.4081,0,0,0,100,0), +(@PATH,19,2798.46,-3600.148,181.4072,0,0,0,100,0), +(@PATH,20,2801.415,-3592.805,181.4086,0,0,0,100,0); + +-- Pathing for Necrolord Entry: 24014 +SET @NPC := 115180; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2819.609,`position_y`=-3625.823,`position_z`=201.4168 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2825.926,-3625.365,201.4147,0,0,0,100,0), +(@PATH,2,2833.738,-3622.546,201.414,0,0,0,100,0), +(@PATH,3,2838.858,-3618.962,201.4162,0,0,0,100,0), +(@PATH,4,2842.757,-3612.3,201.4155,0,0,0,100,0), +(@PATH,5,2845.156,-3605.187,201.4145,0,0,0,100,0), +(@PATH,6,2845.112,-3598.919,201.4165,0,0,0,100,0), +(@PATH,7,2842.278,-3590.991,201.4143,0,0,0,100,0), +(@PATH,8,2838.798,-3585.699,201.4129,0,0,0,100,0), +(@PATH,9,2832.123,-3581.366,201.4112,0,0,0,100,0), +(@PATH,10,2824.705,-3579.036,201.4159,0,0,0,100,0), +(@PATH,11,2818.319,-3579.608,201.414,0,0,0,100,0), +(@PATH,12,2810.397,-3582.356,201.4127,0,0,0,100,0), +(@PATH,13,2805.141,-3585.997,201.4149,0,0,0,100,0), +(@PATH,14,2801.093,-3592.536,201.4165,0,0,0,100,0), +(@PATH,15,2798.692,-3600.158,201.4118,0,0,0,100,0), +(@PATH,16,2799.542,-3606.275,201.4129,0,0,0,100,0), +(@PATH,17,2802.349,-3614.061,201.4144,0,0,0,100,0), +(@PATH,18,2805.995,-3619.276,201.4165,0,0,0,100,0), +(@PATH,19,2812.382,-3623.6,201.4161,0,0,0,100,0), +(@PATH,20,2819.609,-3625.823,201.4168,0,0,0,100,0); + +-- Pathing for Necrolord Entry: 24014 +SET @NPC := 97241; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `id`=24014,`modelid`=0,`spawndist`=0,`MovementType`=2,`position_x`=2576.456,`position_y`=-3746.067,`position_z`=201.4139 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2581.68,-3752.681,201.414,0,0,0,100,0), +(@PATH,2,2586.568,-3756.62,201.413,0,0,0,100,0), +(@PATH,3,2594.226,-3758.521,201.4138,0,0,0,100,0), +(@PATH,4,2601.322,-3758.976,201.4392,0,0,0,100,0), +(@PATH,5,2608.325,-3756.202,201.4066,0,0,0,100,0), +(@PATH,6,2614.482,-3751.383,201.4148,0,0,0,100,0), +(@PATH,7,2617.85,-3746.781,201.4146,0,0,0,100,0), +(@PATH,8,2620.605,-3739.148,201.4127,0,0,0,100,0), +(@PATH,9,2620.888,-3731.896,201.415,0,0,0,100,0), +(@PATH,10,2618.019,-3725.131,201.4144,0,0,0,100,0), +(@PATH,11,2613.131,-3718.841,201.4171,0,0,0,100,0), +(@PATH,12,2608.565,-3715.357,201.4166,0,0,0,100,0), +(@PATH,13,2600.781,-3713.322,201.4151,0,0,0,100,0), +(@PATH,14,2593.642,-3712.292,201.4142,0,0,0,100,0), +(@PATH,15,2586.736,-3714.775,201.4059,0,0,0,100,0), +(@PATH,16,2580.157,-3719.908,201.413,0,0,0,100,0), +(@PATH,17,2577.031,-3724.391,201.4146,0,0,0,100,0), +(@PATH,18,2574.256,-3732.734,201.4134,0,0,0,100,0), +(@PATH,19,2573.823,-3739.465,201.4134,0,0,0,100,0), +(@PATH,20,2576.456,-3746.067,201.4139,0,0,0,100,0); + +-- Pathing for Necrolord Entry: 24014 +SET @NPC := 97249; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `id`=24014,`modelid`=0,`spawndist`=0,`MovementType`=2,`position_x`=2611.017,`position_y`=-3716.675,`position_z`=181.398 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2616.453,-3722.186,181.4082,0,0,0,100,0), +(@PATH,2,2619.343,-3727.752,181.4051,0,0,0,100,0), +(@PATH,3,2620.622,-3735.984,181.4042,0,0,0,100,0), +(@PATH,4,2619.866,-3742.29,181.4087,0,0,0,100,0), +(@PATH,5,2616.442,-3749.24,181.4057,0,0,0,100,0), +(@PATH,6,2611.063,-3754.8,181.4085,0,0,0,100,0), +(@PATH,7,2604.478,-3757.701,181.4068,0,0,0,100,0), +(@PATH,8,2597.286,-3758.759,181.4067,0,0,0,100,0), +(@PATH,9,2590.852,-3757.972,181.4083,0,0,0,100,0), +(@PATH,10,2584.248,-3754.43,181.4082,0,0,0,100,0), +(@PATH,11,2578.261,-3749.372,181.4069,0,0,0,100,0), +(@PATH,12,2575.873,-3743.828,181.4057,0,0,0,100,0), +(@PATH,13,2574.191,-3735.234,181.4073,0,0,0,100,0), +(@PATH,14,2575.195,-3729.327,181.4094,0,0,0,100,0), +(@PATH,15,2578.681,-3722.37,181.4084,0,0,0,100,0), +(@PATH,16,2583.938,-3716.915,181.4063,0,0,0,100,0), +(@PATH,17,2589.764,-3714.326,181.4076,0,0,0,100,0), +(@PATH,18,2597.566,-3712.55,181.4071,0,0,0,100,0), +(@PATH,19,2604.017,-3713.141,181.4054,0,0,0,100,0), +(@PATH,20,2611.017,-3716.675,181.398,0,0,0,100,0); + +-- Pathing for Necrolord Entry: 24014 +SET @NPC := 97250; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `id`=24014,`modelid`=0,`spawndist`=0,`MovementType`=2,`position_x`=2585.757,`position_y`=-3717.824,`position_z`=221.4304 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2579.807,-3722.263,221.4254,0,0,0,100,0), +(@PATH,2,2575.761,-3730.515,221.4254,0,0,0,100,0), +(@PATH,3,2575.521,-3739.346,221.4455,0,0,0,100,0), +(@PATH,4,2577.731,-3745.002,221.4266,0,0,0,100,0), +(@PATH,5,2581.885,-3751.379,221.4258,0,0,0,100,0), +(@PATH,6,2588.023,-3755.677,221.4271,0,0,0,100,0), +(@PATH,7,2596.354,-3757.416,221.4265,0,0,0,100,0), +(@PATH,8,2602.154,-3756.99,221.4272,0,0,0,100,0), +(@PATH,9,2608.952,-3753.872,221.4283,0,0,0,100,0), +(@PATH,10,2613.777,-3748.49,221.4299,0,0,0,100,0), +(@PATH,11,2616.507,-3743.333,221.4301,0,0,0,100,0), +(@PATH,12,2617.603,-3736.914,221.4314,0,0,0,100,0), +(@PATH,13,2616.173,-3730.112,221.4334,0,0,0,100,0), +(@PATH,14,2611.927,-3721.691,221.432,0,0,0,100,0), +(@PATH,15,2605.345,-3717.231,221.4332,0,0,0,100,0), +(@PATH,16,2595.783,-3715.589,221.4307,0,0,0,100,0), +(@PATH,17,2585.757,-3717.824,221.4304,0,0,0,100,0); + +-- Pathing for Fearsome Horror Entry: 24073 +SET @NPC := 97267; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2685.435,`position_y`=-3516.336,`position_z`=161.3539 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2662.709,-3500.542,161.3926,0,0,0,100,0), +(@PATH,2,2650.608,-3502.922,161.3893,0,0,0,100,0), +(@PATH,3,2642.166,-3507.048,161.4015,0,0,0,100,0), +(@PATH,4,2640.603,-3513.472,161.4016,0,0,0,100,0), +(@PATH,5,2643.823,-3521.674,161.4016,0,0,0,100,0), +(@PATH,6,2647.113,-3529.029,161.403,0,0,0,100,0), +(@PATH,7,2655.038,-3531.975,161.4017,0,0,0,100,0), +(@PATH,8,2671.99,-3521.808,161.3573,0,0,0,100,0), +(@PATH,9,2673.333,-3507.633,161.3396,0,0,0,100,0), +(@PATH,10,2675.246,-3494.586,161.3678,0,0,0,100,0), +(@PATH,11,2685.497,-3487.036,161.3884,0,0,0,100,0), +(@PATH,12,2692.917,-3484.15,161.3961,0,0,0,100,0), +(@PATH,13,2699.012,-3487.089,161.4006,0,0,0,100,0), +(@PATH,14,2706.217,-3502.243,161.4013,0,0,0,100,0), +(@PATH,15,2703.759,-3510.093,161.4025,0,0,0,100,0), +(@PATH,16,2685.435,-3516.336,161.3539,0,0,0,100,0); + +-- Pathing for Fearsome Horror Entry: 24073 +SET @NPC := 97246; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2579.879,`position_y`=-3696.3,`position_z`=161.4409 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2588.232,-3690.074,161.4458,0,0,0,100,0), +(@PATH,2,2589.271,-3684.429,161.4359,0,0,0,100,0), +(@PATH,3,2585.342,-3675.472,161.4335,0,0,0,100,0), +(@PATH,4,2581.837,-3668.191,161.4327,0,0,0,100,0), +(@PATH,5,2575.887,-3666.925,161.4406,0,0,0,100,0), +(@PATH,6,2570.748,-3698.407,161.4427,0,0,0,100,0), +(@PATH,7,2579.879,-3696.3,161.4409,0,0,0,100,0); + +-- Pathing for Fearsome Horror Entry: 24073 +SET @NPC := 105763; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `id`=24073,`modelid`=0,`spawndist`=0,`MovementType`=2,`position_x`=2725.236,`position_y`=-3392.25,`position_z`=159.6907 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2727.104,-3390.643,159.6644,0,0,0,100,0), +(@PATH,2,2724.281,-3389.372,159.6592,0,0,0,100,0), +(@PATH,3,2721.806,-3387.376,159.6504,0,0,0,100,0), +(@PATH,4,2722.977,-3393.822,159.6598,0,0,0,100,0), +(@PATH,5,2725.236,-3392.25,159.6907,0,0,0,100,0); + +-- Pathing for Fearsome Horror Entry: 24073 +SET @NPC := 97252; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2813.579,`position_y`=-3620.822,`position_z`=161.4043 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2820.259,-3622.993,161.4039,0,0,0,100,0), +(@PATH,2,2825.655,-3622.695,161.4055,0,0,0,100,0), +(@PATH,3,2832.094,-3620.313,161.4071,0,0,0,100,0), +(@PATH,4,2836.655,-3616.929,161.4057,0,0,0,100,0), +(@PATH,5,2840.545,-3611.404,161.4061,0,0,0,100,0), +(@PATH,6,2842.39,-3604.52,161.4045,0,0,0,100,0), +(@PATH,7,2842.031,-3599.292,161.4063,0,0,0,100,0), +(@PATH,8,2839.814,-3592.598,161.4043,0,0,0,100,0), +(@PATH,9,2836.608,-3587.857,161.4041,0,0,0,100,0), +(@PATH,10,2830.603,-3584.255,161.4064,0,0,0,100,0), +(@PATH,11,2823.961,-3581.964,161.4031,0,0,0,100,0), +(@PATH,12,2818.599,-3582.841,161.4023,0,0,0,100,0), +(@PATH,13,2809.316,-3579.184,161.4106,0,0,0,100,0), +(@PATH,14,2801.529,-3572.713,161.4457,0,0,0,100,0), +(@PATH,15,2795.903,-3559.435,161.579,0,0,0,100,0), +(@PATH,16,2793.693,-3547.917,161.4434,0,0,0,100,0), +(@PATH,17,2794.609,-3538.025,161.6062,0,0,0,100,0), +(@PATH,18,2789.339,-3527.189,166.2076,0,0,0,100,0), +(@PATH,19,2778.46,-3527.366,166.1371,0,0,0,100,0), +(@PATH,20,2772.763,-3531.095,166.1371,0,0,0,100,0), +(@PATH,21,2765.156,-3536.607,166.1371,0,0,0,100,0), +(@PATH,22,2763.8,-3543.712,166.3489,0,0,0,100,0), +(@PATH,23,2772.348,-3554.362,161.5688,0,0,0,100,0), +(@PATH,24,2780.89,-3556.149,161.4322,0,0,0,100,0), +(@PATH,25,2791.389,-3562.775,161.5777,0,0,0,100,0), +(@PATH,26,2803.1,-3574.7,161.4174,0,0,0,100,0), +(@PATH,27,2803.814,-3581.895,161.3991,0,0,0,100,0), +(@PATH,28,2804,-3593.935,161.4066,0,0,0,100,0), +(@PATH,29,2801.798,-3600.579,161.4039,0,0,0,100,0), +(@PATH,30,2802.101,-3606.185,161.4054,0,0,0,100,0), +(@PATH,31,2804.482,-3612.46,161.4072,0,0,0,100,0), +(@PATH,32,2807.753,-3617.282,161.405,0,0,0,100,0), +(@PATH,33,2813.579,-3620.822,161.4043,0,0,0,100,0); + +-- Pathing for Gjalerbron Warrior Entry: 23991 +SET @NPC := 113286; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2656.009,`position_y`=-3595.201,`position_z`=205.3548 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,2619.413,-3562.591,205.3707,0,0,0,100,0), +(@PATH,2,2578.914,-3535.467,206.4749,0,0,0,100,0), +(@PATH,3,2569.813,-3526.975,206.25688,0,0,0,100,0), +(@PATH,4,2547.857,-3503.03,187.9234,0,0,0,100,0), +(@PATH,5,2550.461,-3454.087,184.147,0,0,0,100,0), +(@PATH,6,2603.13,-3431.154,184.0111,0,0,0,100,0), +(@PATH,7,2618.346,-3441.865,186.16079,0,0,0,100,0), +(@PATH,8,2636.813,-3462.923,202.8718,0,0,0,100,0), +(@PATH,9,2639.909,-3468.866,206.72212,0,0,0,100,0), +(@PATH,10,2659.177,-3506.079,205.3751,0,0,0,100,0), +(@PATH,11,2684.902,-3549.402,205.3751,0,0,0,100,0), +(@PATH,12,2687.326,-3578.99,205.3152,0,0,0,100,0), +(@PATH,13,2656.009,-3595.201,205.3548,0,0,0,100,0); + +-- Allerian Stronghold Fixup + +-- Update position for Erick Nateson +UPDATE `creature` SET `position_x`=-2947.306,`position_y`=3982.602,`position_z`=0.04192996,`orientation`=3.493307 WHERE `id`=21399; + +-- Pathing for High Elf Ranger Entry: 19000 +SET @NPC := 68300; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-2892.84,`position_y`=3947.823,`position_z`=13.40542 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,258,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2900.541,3949.979,13.40506,8000,0,0,100,0), +(@PATH,2,-2892.84,3947.823,13.40542,16000,0,0,100,0); + +-- Pathing for High Elf Ranger Entry: 19000 +SET @NPC := 68302; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-2984.74,`position_y`=4065.979,`position_z`=16.47879 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,258,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2989.837,4072.737,16.47879,16000,0,0,100,0), +(@PATH,2,-2984.74,4065.979,16.47879,8000,0,0,100,0); + +-- Pathing for High Elf Ranger Entry: 19000 +SET @NPC := 68304; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-3057.808,`position_y`=4017.832,`position_z`=16.17462 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,258,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-3052.007,4011.99,16.17451,8000,0,0,100,0), +(@PATH,2,-3057.808,4017.832,16.17462,16000,0,0,100,0); + +-- Pathing for Allerian Horseman Entry: 19003 +SET @NPC := 68308; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-2872.895,`position_y`=3981.621,`position_z`=5.133294 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,2404, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2862.589,3983.513,4.859164,23000,0,0,100,0), +(@PATH,2,-2877.861,3980.92,4.691218,22000,0,@PATH+1,100,0), +(@PATH,3,-2872.895,3981.621,5.133294,0,0,0,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,1,30,0,0,0.1919862,822); + +-- Pathing for Allerian Horseman Entry: 19003 +SET @NPC := 68309; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-2965.397,`position_y`=4084.842,`position_z`=3.064998 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,2404, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2971.184,4089.91,4.059246,0,0,0,100,0), +(@PATH,2,-2974.546,4096.034,4.809246,0,0,0,100,0), +(@PATH,3,-2975.984,4102.904,5.563596,0,0,0,100,0), +(@PATH,4,-2976.84,4109.215,6.188596,0,0,0,100,0), +(@PATH,5,-2977.442,4116.1,6.438596,29000,0,0,100,0), +(@PATH,6,-2976.687,4106.692,6.063596,0,0,0,100,0), +(@PATH,7,-2975.544,4099.55,5.309246,0,0,0,100,0), +(@PATH,8,-2973.493,4091.829,4.309246,0,0,0,100,0), +(@PATH,9,-2969.062,4087.132,3.684246,0,0,0,100,0), +(@PATH,10,-2965.397,4084.842,3.064998,29000,0,@PATH+1,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,1,30,0,0,2.321288,823); + +-- Pathing for Lemla Hopewing Entry: 19181 +SET @NPC := 68626; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-2981.203,`position_y`=3879.134,`position_z`=9.613096 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2992.487,3878.415,9.613096,9000,0,@PATH+1,100,0), +(@PATH,2,-2996.076,3870.127,9.613096,20000,0,0,100,0), +(@PATH,3,-2997.53,3865.11,9.484549,8000,0,0,100,0), +(@PATH,4,-2993.53,3863.55,9.484549,7000,0,0,100,0), +(@PATH,5,-2981.203,3879.134,9.613096,7000,0,0,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,0,30,0,0,1.27409,824); + +-- Pathing for Allerian Defender Entry: 18999 +SET @NPC := 68292; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-2947.596,`position_y`=3983.544,`position_z`=-0.08307004 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2944.827,3979.540,0.041929,0,0,0,100,0), +(@PATH,2,-2942.500,3979.078,-0.20807,25000,0,@PATH+1,100,0), +(@PATH,3,-2939.759,3978.620,-0.425645,0,0,0,100,0), +(@PATH,4,-2936.500,3981.641,-0.33307,0,0,0,100,0), +(@PATH,5,-2935.938,3983.333,-0.33307,29000,0,@PATH+2,100,0), +(@PATH,6,-2935.374,3986.827,-0.594707,0,0,0,100,0), +(@PATH,7,-2937.500,3990.625,-0.58307,0,0,0,100,0), +(@PATH,8,-2940.678,3990.862,-0.70807,23000,0,@PATH+3,100,0), +(@PATH,9,-2943.362,3990.967,-0.597971,0,0,0,100,0), +(@PATH,10,-2947.396,3988.542,-0.20807,0,0,0,100,0), +(@PATH,11,-2947.596,3983.544,-0.08307004,27000,0,@PATH+4,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1,@PATH+2,@PATH+3,@PATH+4); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,1,30,0,0,4.729842,825), +(@PATH+2,1,30,0,0,6.091199,826), +(@PATH+3,1,30,0,0,1.815142,827), +(@PATH+4,1,30,0,0,3.560472,828); + +-- Pathing for Allerian Defender Entry: 18999 +SET @NPC := 68296; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-3004.182,`position_y`=4059.2,`position_z`=16.47264 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-3016.535,4050.462,16.47229,0,0,0,100,0), +(@PATH,2,-3022.042,4045.356,17.46166,0,0,0,100,0), +(@PATH,3,-3030.056,4039.186,17.46166,0,0,0,100,0), +(@PATH,4,-3032.783,4036.933,16.18017,0,0,0,100,0), +(@PATH,5,-3044.368,4027.187,16.17542,12000,0,@PATH+1,100,0), +(@PATH,6,-3039.387,4030.45,16.1769,0,0,0,100,0), +(@PATH,7,-3032.683,4037.32,16.1804,0,0,0,100,0), +(@PATH,8,-3025.89,4042.386,17.46166,0,0,0,100,0), +(@PATH,9,-3019.17,4047.763,17.46166,0,0,0,100,0), +(@PATH,10,-3016.295,4049.834,16.47264,0,0,0,100,0), +(@PATH,11,-3004.042,4059.303,16.47269,12000,0,@PATH+2,100,0), +(@PATH,12,-2992.944,4066.828,16.47743,0,0,0,100,0), +(@PATH,13,-2989.875,4062.297,16.47566,0,0,0,100,0), +(@PATH,14,-2999.597,4055.534,10.61597,0,0,0,100,0), +(@PATH,15,-3008.305,4049.41,5.663261,10000,0,@PATH+3,100,0), +(@PATH,16,-3003.988,4052.784,7.524997,0,0,0,100,0), +(@PATH,17,-2989.94,4062.394,16.47567,0,0,0,100,0), +(@PATH,18,-2992.964,4066.766,16.47739,0,0,0,100,0), +(@PATH,19,-3004.182,4059.2,16.47264,12000,0,@PATH+4,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1,@PATH+2,@PATH+3,@PATH+4); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,1,30,0,0,2.373648,829), +(@PATH+2,1,30,0,0,2.164208,830), +(@PATH+3,1,30,0,0,0.3490658,831), +(@PATH+4,1,30,0,0,2.164208,832); + +-- Pathing for Allerian Defender Entry: 18999 +SET @NPC := 68290; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-2908.265,`position_y`=3922.398,`position_z`=13.40726 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2905.809,3933.479,7.323796,0,0,0,100,0), +(@PATH,2,-2903.188,3943.559,2.596507,11000,0,@PATH+1,100,0), +(@PATH,3,-2907.823,3925.806,12.06445,0,0,0,100,0), +(@PATH,4,-2908.265,3922.398,13.40726,0,0,0,100,0), +(@PATH,5,-2903.021,3920.76,13.40938,19000,0,@PATH+2,100,0), +(@PATH,6,-2900.368,3931.102,13.40561,0,0,0,100,0), +(@PATH,7,-2896.775,3945.807,13.40281,29000,0,@PATH+3,100,0), +(@PATH,8,-2898.747,3936.718,13.40411,0,0,0,100,0), +(@PATH,9,-2903.021,3920.76,13.40938,28000,0,@PATH+4,100,0), +(@PATH,10,-2908.265,3922.398,13.40726,0,0,0,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1,@PATH+2,@PATH+3,@PATH+4); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,1,30,0,0,2.80998,833), +(@PATH+2,1,30,0,0,6.021386,834), +(@PATH+3,1,30,0,0,6.161012,835), +(@PATH+4,1,30,0,0,6.003932,836); + +-- Allerian Defender SAI +SET @ENTRY := 18999; -- NPC entry +SET @SPELL1 := 18396; -- Dismounting Blast +SET @GUID1 := 68293; -- One Defender is scripted +UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY; -- Set SAI as AI. Remove cpp ScriptName if one exist +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; -- Remove EAI if exist +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid` IN (@ENTRY,-@GUID1); +DELETE FROM `smart_scripts` WHERE `source_type`=9 AND `entryorguid` IN (@ENTRY*100); +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`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,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Allerian Defender - On Aggro - Cast Dismounting Blast on victim'), +(-@GUID1,0,0,0,4,0,100,1,0,0,0,0,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Allerian Defender - On Aggro - Cast Dismounting Blast on victim'), +(-@GUID1,0,1,0,1,0,100,0,40000,80000,180000,180000,80,@ENTRY*100,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Allerian Defender - OOC - Run Script'), +(@ENTRY*100,9,0,0,0,0,100,0,0,0,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,4.642576, 'Allerian Defender - Script - turn to'), +(@ENTRY*100,9,1,0,0,0,100,0,1000,1000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Allerian Defender - Script - Say text 0'), +(@ENTRY*100,9,2,0,0,0,100,0,5000,5000,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,1.466077, 'Allerian Defender - Script - turn to'), +(@ENTRY*100,9,3,0,0,0,100,0,1000,1000,0,0,1,1,0,0,0,0,0,10,68291,@ENTRY,0,0,0,0,0, 'Allerian Defender - Script - Say text 0'); +-- NPC talk text insert from sniff +DELETE FROM `creature_text` WHERE `entry`=18999; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(18999,0,0, 'Hey, did you read the bounty on this wanted poster?',12,7,100,6,0,0, 'Allerian Defender'), +(18999,0,1, 'The Bone Wastes! I don''t care what''s being offered as a reward, I''m not going into the Bone Wastes!',12,7,100,6,0,0, 'Allerian Defender'), +(18999,0,2, 'This wanted poster says that they''re offering gold to these so-called adventurers to go kill things. Isn''t that what we do? I don''t think I''m being paid enough!',12,7,100,6,0,0, 'Allerian Defender'), +(18999,0,3, 'You want to go do the bounty off of this wanted poster after the shift is over?',12,7,100,6,0,0, 'Allerian Defender'), +(18999,0,4, 'This poster has a bounty on bonelashers. You think I should do that?',12,7,100,6,0,0, 'Allerian Defender'), +(18999,1,0, 'Is that wanted poster all that you''re going to talk about today?',12,7,100,1,0,0, 'Allerian Defender'), +(18999,1,1, 'I''m up to looking into that bounty after this shift.',12,7,100,1,0,0, 'Allerian Defender'), +(18999,1,2, 'I could use the extra money.',12,7,100,1,0,0, 'Allerian Defender'), +(18999,1,3, 'I don''t know and I don''t care.',12,7,100,1,0,0, 'Allerian Defender'), +(18999,1,4, 'The bonelashers of the wastes are no laughing matter. I hear they carry diseases!',12,7,100,1,0,0, 'Allerian Defender'); +-- Remove old crappy script +UPDATE `creature` SET `MovementType`=0 WHERE `guid` IN (68291,68293); +UPDATE `creature_addon` SET `path_id`=0 WHERE `guid` IN (68291,68293); +DELETE FROM `waypoint_data` WHERE `id` IN (682910,682930); +DELETE FROM `waypoint_scripts` WHERE `id` BETWEEN 170 AND 171; +DELETE FROM `db_script_string` WHERE `entry` IN (2000005046,2000005047); + +-- Pathing for Allerian Peasant Entry: 19147 +SET @NPC := 68470; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-2983.204,`position_y`=3971.366,`position_z`=2.162047 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2981.773,3966.45,2.614914,0,0,0,100,0), +(@PATH,2,-2981.005,3960.968,2.989914,0,0,0,100,0), +(@PATH,3,-2981.881,3954.581,2.614914,0,0,0,100,0), +(@PATH,4,-2982.862,3947.319,3.114914,0,0,0,100,0), +(@PATH,5,-2986.684,3945.63,3.239914,0,0,0,100,0), +(@PATH,6,-2986.646,3950.593,3.761735,6000,0,@PATH+1,100,0), +(@PATH,7,-2986.979,3946.354,3.114914,0,0,0,100,0), +(@PATH,8,-2982.707,3945.763,3.364914,0,0,0,100,0), +(@PATH,9,-2980.747,3953.042,2.739914,0,0,0,100,0), +(@PATH,10,-2980.202,3961.786,2.864914,0,0,0,100,0), +(@PATH,11,-2983.204,3971.366,2.162047,4000,0,@PATH+2,100,0); +-- F1304ACB07BEF300 .go -2981.773 3966.45 2.614914 +DELETE FROM `waypoint_scripts` WHERE `id` IN (188,189,@PATH+1,@PATH+2); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,0,30,0,0,1.413717,837), +(@PATH+1,1,2,83,381,0,838), +(@PATH+2,1,2,83,381,0,839); + +-- Pathing for Allerian Peasant Entry: 19147 +SET @NPC := 68468; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-2977.357,`position_y`=4012.234,`position_z`=1.424733 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2978.323,4006.793,1.174733,0,0,0,100,0), +(@PATH,2,-2973.405,4002.646,1.424733,0,0,0,100,0), +(@PATH,3,-2967.158,4003.521,1.299733,0,0,0,100,0), +(@PATH,4,-2964.591,4008.163,1.124218,0,0,0,100,0), +(@PATH,5,-2966.771,4010.062,1.299733,0,0,0,100,0), +(@PATH,6,-2969.096,4008.951,1.830398,5000,0,@PATH+1,100,0), +(@PATH,7,-2966.771,4010.062,1.299733,0,0,0,100,0), +(@PATH,8,-2964.591,4008.163,1.124218,0,0,0,100,0), +(@PATH,9,-2965.665,4005.173,1.249218,0,0,0,100,0), +(@PATH,10,-2972.548,4002.835,1.424733,0,0,0,100,0), +(@PATH,11,-2977.689,4007.088,1.174733,0,0,0,100,0), +(@PATH,12,-2977.357,4012.234,1.424733,4000,0,@PATH+2,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (184,185,@PATH+1,@PATH+2); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,0,30,0,0,3.839724,840), +(@PATH+1,1,2,83,381,0,841), +(@PATH+2,1,2,83,381,0,842); + +-- Pathing for Allerian Peasant Entry: 19147 +SET @NPC := 68469; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-2994.862,`position_y`=4029.217,`position_z`=1.799733 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2995.501,4024.677,1.674733,0,0,0,100,0), +(@PATH,2,-2991.115,4017.175,1.424733,0,0,0,100,0), +(@PATH,3,-2986.05,4011.426,0.7997329,0,0,0,100,0), +(@PATH,4,-2980.667,4005.888,1.049733,0,0,0,100,0), +(@PATH,5,-2974.792,4001.254,1.424733,0,0,0,100,0), +(@PATH,6,-2969.111,3999.192,1.787047,0,0,0,100,0), +(@PATH,7,-2962.025,4001.197,1.249218,0,0,0,100,0), +(@PATH,8,-2955.767,4003.337,0.8742183,0,0,0,100,0), +(@PATH,9,-2949.479,4006.26,-0.5007817,0,0,0,100,0), +(@PATH,10,-2943.639,4005.681,-0.8757817,0,0,0,100,0), +(@PATH,11,-2938.82,4004.248,-0.8757817,5000,0,@PATH+2,100,0), +(@PATH,12,-2944.247,4006.454,-0.8757817,0,0,0,100,0), +(@PATH,13,-2950.113,4005.459,-0.2507817,0,0,0,100,0), +(@PATH,14,-2958.819,4002.142,1.124218,0,0,0,100,0), +(@PATH,15,-2968.181,3999.478,1.662047,0,0,0,100,0), +(@PATH,16,-2976.377,4001.348,1.424733,0,0,0,100,0), +(@PATH,17,-2982.522,4005.211,1.049733,0,0,0,100,0), +(@PATH,18,-2987.678,4011.322,0.6747329,0,0,0,100,0), +(@PATH,19,-2991.716,4016.418,1.174733,0,0,0,100,0), +(@PATH,20,-2994.956,4023.157,1.549733,0,0,0,100,0), +(@PATH,21,-2994.996,4027.696,1.799733,0,0,0,100,0), +(@PATH,22,-2994.862,4029.217,1.799733,5000,0,@PATH+1,100,0); +DELETE FROM `waypoint_scripts` WHERE `id` IN (186,187,@PATH+1,@PATH+2); +INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES +(@PATH+1,0,30,0,0,1.570796,843), +(@PATH+1,1,2,83,381,0,844), +(@PATH+2,1,2,83,69,0,845); From 7954d9a0991b5ad88dd2faf138d3da3d0a56a3d0 Mon Sep 17 00:00:00 2001 From: Lopin Date: Fri, 24 Jun 2011 08:20:56 +0200 Subject: [PATCH 16/58] Scripts/VioletHold: Properly fixed achievement Defenseless --- ..._24_00_world_achievement_criteria_data.sql | 6 ++++++ .../Northrend/VioletHold/boss_cyanigosa.cpp | 21 +++++++++++++++++++ .../VioletHold/instance_violet_hold.cpp | 11 +++++----- .../Northrend/VioletHold/violet_hold.h | 3 ++- 4 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 sql/updates/world/2011_06_24_00_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_24_00_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_24_00_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..28f1569638 --- /dev/null +++ b/sql/updates/world/2011_06_24_00_world_achievement_criteria_data.sql @@ -0,0 +1,6 @@ +DELETE FROM `disables` WHERE `entry`=6803 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=6803 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(6803,11,0,0,'achievement_defenseless'); diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index 017da20a17..804d602a06 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -159,7 +159,28 @@ public: }; +class achievement_defenseless : public AchievementCriteriaScript +{ + public: + achievement_defenseless() : AchievementCriteriaScript("achievement_defenseless") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + InstanceScript* instance = target->GetInstanceScript(); + if (!instance) + return false; + + if (!instance->GetData(DATA_DEFENSELESS)) + return false; + + return true; + } +}; + void AddSC_boss_cyanigosa() { new boss_cyanigosa(); + new achievement_defenseless(); } diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index 93ef8256fe..98731f4aa7 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -93,15 +93,12 @@ enum Yells { CYANIGOSA_SAY_SPAWN = -1608005 }; + enum Spells { CYANIGOSA_SPELL_TRANSFORM = 58668, CYANIGOSA_BLUE_AURA = 47759, }; -enum Achievements -{ - ACHIEV_DEFENSELESS = 1816 -}; class instance_violet_hold : public InstanceMapScript { @@ -165,6 +162,7 @@ public: bool bWiped; bool bIsDoorSpellCasted; bool bCrystalActivated; + bool defenseless; std::list NpcAtDoorCastingList; @@ -214,6 +212,7 @@ public: bActive = false; bIsDoorSpellCasted = false; bCrystalActivated = false; + defenseless = true; uiMainEventPhase = NOT_STARTED; memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); @@ -334,8 +333,6 @@ public: uiMainEventPhase = DONE; if (GameObject* pMainDoor = instance->GetGameObject(uiMainDoor)) pMainDoor->SetGoState(GO_STATE_ACTIVE); - if (!bCrystalActivated && uiDoorIntegrity == 100) - DoCompleteAchievement(ACHIEV_DEFENSELESS); } break; case DATA_WAVE_COUNT: @@ -350,6 +347,7 @@ public: break; case DATA_DOOR_INTEGRITY: uiDoorIntegrity = data; + defenseless = false; DoUpdateWorldState(WORLD_STATE_VH_PRISON_STATE, uiDoorIntegrity); break; case DATA_NPC_PRESENCE_AT_DOOR_ADD: @@ -432,6 +430,7 @@ public: case DATA_FIRST_BOSS: return uiFirstBoss; case DATA_SECOND_BOSS: return uiSecondBoss; case DATA_MAIN_EVENT_PHASE: return uiMainEventPhase; + case DATA_DEFENSELESS: return defenseless ? 1 : 0; } return 0; diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.h b/src/server/scripts/Northrend/VioletHold/violet_hold.h index 5fe8b75e97..ff663efe27 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.h +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.h @@ -52,7 +52,8 @@ enum Data DATA_FIRST_BOSS, DATA_SECOND_BOSS, DATA_ACTIVATE_CRYSTAL, - DATA_MAIN_EVENT_PHASE + DATA_MAIN_EVENT_PHASE, + DATA_DEFENSELESS, }; enum Data64 From 9582f596e28049a081ac27319c72a316ec94768b Mon Sep 17 00:00:00 2001 From: Lopin Date: Fri, 24 Jun 2011 14:40:23 +0200 Subject: [PATCH 17/58] Scripts/Gundrak: Properly fixed achievement Less Rabi --- ..._24_01_world_achievement_criteria_data.sql | 6 +++ .../Northrend/Gundrak/boss_moorabi.cpp | 38 ++++++++++++++----- 2 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 sql/updates/world/2011_06_24_01_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_24_01_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_24_01_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..1054e710fe --- /dev/null +++ b/sql/updates/world/2011_06_24_01_world_achievement_criteria_data.sql @@ -0,0 +1,6 @@ +DELETE FROM `disables` WHERE `entry`=7319 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7319 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(7319,11,0,0,'achievement_less_rabi'); diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp index d02a906b79..71cd150e2e 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp @@ -31,11 +31,6 @@ enum eSpells SPELL_TRANSFORMATION = 55098, //Periodic, The caster transforms into a powerful mammoth, increasing Physical damage done by 25% and granting immunity to Stun effects. }; -enum eArchivements -{ - ACHIEV_LESS_RABI = 2040 -}; - enum eSays { SAY_AGGRO = -1604010, @@ -48,6 +43,8 @@ enum eSays EMOTE_TRANSFORM = -1604017 }; +#define DATA_LESS_RABI 1 + class boss_moorabi : public CreatureScript { public: @@ -146,17 +143,20 @@ public: DoMeleeAttackIfReady(); } + uint32 GetData(uint32 type) + { + if (type == DATA_LESS_RABI) + return bPhase ? 0 : 1; + + return 0; + } + void JustDied(Unit* /*pKiller*/) { DoScriptText(SAY_DEATH, me); if (pInstance) - { pInstance->SetData(DATA_MOORABI_EVENT, DONE); - - if (IsHeroic() && !bPhase) - pInstance->DoCompleteAchievement(ACHIEV_LESS_RABI); - } } void KilledUnit(Unit* pVictim) @@ -170,7 +170,25 @@ public: }; +class achievement_less_rabi : public AchievementCriteriaScript +{ + public: + achievement_less_rabi() : AchievementCriteriaScript("achievement_less_rabi") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + if (Creature* Moorabi = target->ToCreature()) + if (Moorabi->AI()->GetData(DATA_LESS_RABI)) + return true; + + return false; + } +}; + void AddSC_boss_moorabi() { new boss_moorabi(); + new achievement_less_rabi(); } From 2e1542d738b793d5148557c96922a96428e8e842 Mon Sep 17 00:00:00 2001 From: Lopin Date: Fri, 24 Jun 2011 14:41:42 +0200 Subject: [PATCH 18/58] Scripts/Nexus: Properly fixed achievement Split Personality --- ..._24_02_world_achievement_criteria_data.sql | 6 ++ .../Nexus/Nexus/boss_magus_telestra.cpp | 79 +++++++++++++------ 2 files changed, 61 insertions(+), 24 deletions(-) create mode 100644 sql/updates/world/2011_06_24_02_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_24_02_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_24_02_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..1668e24133 --- /dev/null +++ b/sql/updates/world/2011_06_24_02_world_achievement_criteria_data.sql @@ -0,0 +1,6 @@ +DELETE FROM `disables` WHERE `entry`=7577 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7577 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(7577,11,0,0,'achievement_split_personality'); diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp index 66d9818697..b93090aac3 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp @@ -32,12 +32,14 @@ enum Spells SPELL_FROST_MAGUS_VISUAL = 47706, SPELL_ARCANE_MAGUS_VISUAL = 47704 }; + enum Creatures { MOB_FIRE_MAGUS = 26928, MOB_FROST_MAGUS = 26930, MOB_ARCANE_MAGUS = 26929 }; + enum Yells { SAY_AGGRO = -1576000, @@ -47,11 +49,9 @@ enum Yells SAY_SPLIT_1 = -1576004, SAY_SPLIT_2 = -1576005, }; -enum Achievements -{ - ACHIEV_SPLIT_PERSONALITY = 2150, - ACHIEV_TIMER = 5*IN_MILLISECONDS -}; + +#define ACTION_MAGUS_DEAD 1 +#define DATA_SPLIT_PERSONALITY 2 const Position CenterOfRoom = {504.80f, 89.07f, -16.12f, 6.27f}; @@ -82,17 +82,16 @@ public: bool bFrostMagusDead; bool bArcaneMagusDead; bool bIsWaitingToAppear; - bool bIsAchievementTimerRunning; uint32 uiIsWaitingToAppearTimer; uint32 uiIceNovaTimer; uint32 uiFireBombTimer; uint32 uiGravityWellTimer; uint32 uiCooldown; - uint32 uiAchievementTimer; uint8 Phase; - uint8 uiAchievementProgress; + uint8 splitPersonality; + time_t time[3]; void Reset() { @@ -107,10 +106,10 @@ public: uiFrostMagusGUID = 0; uiArcaneMagusGUID = 0; - uiAchievementProgress = 0; - uiAchievementTimer = 0; + for (uint8 n = 0; n < 3; ++n) + time[n] = 0; - bIsAchievementTimerRunning = false; + splitPersonality = 0; bIsWaitingToAppear = false; me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); @@ -133,11 +132,7 @@ public: DoScriptText(SAY_DEATH, me); if (pInstance) - { - if (IsHeroic() && uiAchievementProgress == 2) - pInstance->DoCompleteAchievement(ACHIEV_SPLIT_PERSONALITY); pInstance->SetData(DATA_MAGUS_TELESTRA_EVENT, DONE); - } } void KilledUnit(Unit* /*victim*/) @@ -145,6 +140,28 @@ public: DoScriptText(SAY_KILL, me); } + void DoAction(int32 const action) + { + if (action == ACTION_MAGUS_DEAD) + { + uint8 i = 0; + while (time[i] != 0) + ++i; + + time[i] = sWorld->GetGameTime(); + if (i == 2 && (time[2] - time[1] < 5) && (time[1] - time[0] < 5)) + ++splitPersonality; + } + } + + uint32 GetData(uint32 type) + { + if (type == DATA_SPLIT_PERSONALITY) + return splitPersonality; + + return 0; + } + uint64 SplitPersonality(uint32 entry) { if (Creature* Summoned = me->SummonCreature(entry, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILLISECONDS)) @@ -181,18 +198,18 @@ public: if (summon->GetGUID() == uiFireMagusGUID) { + me->AI()->DoAction(ACTION_MAGUS_DEAD); bFireMagusDead = true; - bIsAchievementTimerRunning = true; } else if (summon->GetGUID() == uiFrostMagusGUID) { + me->AI()->DoAction(ACTION_MAGUS_DEAD); bFrostMagusDead = true; - bIsAchievementTimerRunning = true; } else if (summon->GetGUID() == uiArcaneMagusGUID) { + me->AI()->DoAction(ACTION_MAGUS_DEAD); bArcaneMagusDead = true; - bIsAchievementTimerRunning = true; } } @@ -216,12 +233,10 @@ public: if ((Phase == 1) ||(Phase == 3)) { - if (bIsAchievementTimerRunning) - uiAchievementTimer += diff; if (bFireMagusDead && bFrostMagusDead && bArcaneMagusDead) { - if (uiAchievementTimer <= ACHIEV_TIMER) - uiAchievementProgress +=1; + for (uint8 n = 0; n < 3; ++n) + time[n] = 0; me->GetMotionMaster()->Clear(); me->GetMap()->CreatureRelocation(me, CenterOfRoom.GetPositionX(), CenterOfRoom.GetPositionY(), CenterOfRoom.GetPositionZ(), CenterOfRoom.GetOrientation()); DoCast(me, SPELL_TELESTRA_BACK); @@ -236,8 +251,6 @@ public: bIsWaitingToAppear = true; uiIsWaitingToAppearTimer = 4*IN_MILLISECONDS; DoScriptText(SAY_MERGE, me); - bIsAchievementTimerRunning = false; - uiAchievementTimer = 0; } else return; @@ -324,7 +337,25 @@ public: }; +class achievement_split_personality : public AchievementCriteriaScript +{ + public: + achievement_split_personality() : AchievementCriteriaScript("achievement_split_personality") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + if (Creature* Telestra = target->ToCreature()) + if (Telestra->AI()->GetData(DATA_SPLIT_PERSONALITY) == 2) + return true; + + return false; + } +}; + void AddSC_boss_magus_telestra() { new boss_magus_telestra(); + new achievement_split_personality(); } From 5af6bf41b312a94892c223d949dd39a58db1a532 Mon Sep 17 00:00:00 2001 From: Lopin Date: Fri, 24 Jun 2011 14:43:03 +0200 Subject: [PATCH 19/58] Scripts/Violet Hold: Properly fixed achievement Dehydration --- ..._24_03_world_achievement_criteria_data.sql | 6 +++ .../Northrend/VioletHold/boss_ichoron.cpp | 43 +++++++++++++------ 2 files changed, 37 insertions(+), 12 deletions(-) create mode 100644 sql/updates/world/2011_06_24_03_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_24_03_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_24_03_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..be782da496 --- /dev/null +++ b/sql/updates/world/2011_06_24_03_world_achievement_criteria_data.sql @@ -0,0 +1,6 @@ +DELETE FROM `disables` WHERE `entry`=7320 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7320 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(7320,11,0,0,'achievement_dehydration'); diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index 3f2ea65958..db85422942 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -50,11 +50,6 @@ enum Yells SAY_BUBBLE = -1608026 }; -enum Achievements -{ - ACHIEVEMENT_DEHYDRATION = 2041, -}; - enum Actions { ACTION_WATER_ELEMENT_HIT = 1, @@ -72,6 +67,8 @@ static Position SpawnLoc[MAX_SPAWN_LOC]= {1935.50f, 796.224f, 52.492f, 4.224f}, }; +#define DATA_DEHYDRATION 1 + class boss_ichoron : public CreatureScript { public: @@ -91,7 +88,7 @@ public: bool bIsExploded; bool bIsFrenzy; - bool bAchievement; + bool dehydration; uint32 uiBubbleCheckerTimer; uint32 uiWaterBoltVolleyTimer; @@ -104,7 +101,7 @@ public: { bIsExploded = false; bIsFrenzy = false; - bAchievement = true; + dehydration = true; uiBubbleCheckerTimer = 1000; uiWaterBoltVolleyTimer = urand(10000, 15000); @@ -168,7 +165,7 @@ public: if (bIsExploded) DoExplodeCompleted(); - bAchievement = false; + dehydration = false; break; case ACTION_WATER_ELEMENT_KILLED: uint32 damage = me->CountPctFromMaxHealth(3); @@ -199,11 +196,18 @@ public: me->GetMotionMaster()->MoveChase(me->getVictim()); } + uint32 GetData(uint32 type) + { + if (type == DATA_DEHYDRATION) + return dehydration ? 1 : 0; + + return 0; + } + void MoveInLineOfSight(Unit* /*pWho*/) {} void UpdateAI(const uint32 uiDiff) { - //Return since we have no target if (!UpdateVictim()) return; @@ -284,9 +288,6 @@ public: if (pInstance) { - if (IsHeroic() && bAchievement) - pInstance->DoCompleteAchievement(ACHIEVEMENT_DEHYDRATION); - if (pInstance->GetData(DATA_WAVE_COUNT) == 6) { pInstance->SetData(DATA_1ST_BOSS_EVENT, DONE); @@ -394,8 +395,26 @@ public: }; +class achievement_dehydration : public AchievementCriteriaScript +{ + public: + achievement_dehydration() : AchievementCriteriaScript("achievement_dehydration") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + if (Creature* Ichoron = target->ToCreature()) + if (Ichoron->AI()->GetData(DATA_DEHYDRATION)) + return true; + + return false; + } +}; + void AddSC_boss_ichoron() { new boss_ichoron(); new mob_ichor_globule(); + new achievement_dehydration(); } From e08b539813889d71cd8dd3ab66fefb8b89f900a5 Mon Sep 17 00:00:00 2001 From: Lopin Date: Fri, 24 Jun 2011 14:44:40 +0200 Subject: [PATCH 20/58] Core/Log: Killed one log pointing to missing instance achievement criteria data for achievement in Halls of Stone --- .../world/2011_06_24_04_world_achievement_criteria_data.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 sql/updates/world/2011_06_24_04_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_24_04_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_24_04_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..056450445e --- /dev/null +++ b/sql/updates/world/2011_06_24_04_world_achievement_criteria_data.sql @@ -0,0 +1 @@ +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7590 AND `type`=18; \ No newline at end of file From 0bdbd771cea06d2def29f83d999e5ecf0fdd83ef Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 24 Jun 2011 15:11:29 +0200 Subject: [PATCH 21/58] Core/Creatures: Reverted quest requirement for vendors, this has to be done differently --- src/server/game/Server/Protocol/Handlers/ItemHandler.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp index cc0f2a9a51..84f5478625 100755 --- a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp @@ -775,10 +775,7 @@ void WorldSession::SendListInventory(uint64 vendorGuid) // Items sold out are not displayed in list uint32 leftInStock = !item->maxcount ? 0xFFFFFFFF : vendor->GetVendorItemCurrentCount(item); - if (!leftInStock) - continue; - - if (itemTemplate->Class == ITEM_CLASS_QUEST && !_player->HasQuestForItem(item->item)) + if (!_player->isGameMaster() && !leftInStock) continue; ++count; From 4ec9ecd3e0404b6e9c5de7055c8e0f474aeadf20 Mon Sep 17 00:00:00 2001 From: click Date: Fri, 24 Jun 2011 17:07:31 +0200 Subject: [PATCH 22/58] Scripts/EmeraldDragons: Fix a few small snaggs: - Teleport highest aggro player to front of dragon if exceeding 50 yards - Clean up target selection/handling slightly - Remove UpdateAI-segments from the dragons, it's already handled in the base AI --- .../scripts/World/boss_emerald_dragons.cpp | 76 +++---------------- 1 file changed, 9 insertions(+), 67 deletions(-) diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp index 223dbb43f1..ac101d239b 100644 --- a/src/server/scripts/World/boss_emerald_dragons.cpp +++ b/src/server/scripts/World/boss_emerald_dragons.cpp @@ -85,9 +85,6 @@ enum Events * --- * --- Emerald Dragons : Base AI-structure used for all the Emerald dragons * --- - * - * TODO - * - Fix player teleportation when running off too far from the dragon (emerald_dragonAI) */ struct emerald_dragonAI : public WorldBossAI @@ -153,10 +150,8 @@ struct emerald_dragonAI : public WorldBossAI while (uint32 eventId = events.ExecuteEvent()) ExecuteEvent(eventId); - std::list threats = me->getThreatManager().getThreatList(); - if (Unit* target = threats.front()->getTarget()) - if ((target->GetTypeId() == TYPEID_PLAYER) && (me->GetDistance(target) > 20.0f)) - DoCast(target, SPELL_SUMMON_PLAYER); + if (Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, 0, -50.0f, true)) + DoCast(target, SPELL_SUMMON_PLAYER); DoMeleeAttackIfReady(); } @@ -190,8 +185,7 @@ class npc_dream_fog : public CreatureScript if (!_roamTimer) { // Chase target, but don't attack - otherwise just roam around - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true); - if (target) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { _roamTimer = urand(15000, 30000); me->GetMotionMaster()->Clear(false); @@ -397,22 +391,6 @@ class boss_ysondre : public CreatureScript } } - void UpdateAI(uint32 const diff) - { - if (!UpdateVictim()) - return; - - events.Update(diff); - - if (me->HasUnitState(UNIT_STAT_CASTING)) - return; - - while (uint32 eventId = events.ExecuteEvent()) - ExecuteEvent(eventId); - - DoMeleeAttackIfReady(); - } - private: uint8 _stage; }; @@ -496,22 +474,6 @@ class boss_lethon : public CreatureScript } } - void UpdateAI(uint32 const diff) - { - if (!UpdateVictim()) - return; - - events.Update(diff); - - if (me->HasUnitState(UNIT_STAT_CASTING)) - return; - - while (uint32 eventId = events.ExecuteEvent()) - ExecuteEvent(eventId); - - DoMeleeAttackIfReady(); - } - private: uint8 _stage; }; @@ -597,22 +559,6 @@ class boss_emeriss : public CreatureScript } } - void UpdateAI(uint32 const diff) - { - if (!UpdateVictim()) - return; - - events.Update(diff); - - if (me->HasUnitState(UNIT_STAT_CASTING)) - return; - - while (uint32 eventId = events.ExecuteEvent()) - ExecuteEvent(eventId); - - DoMeleeAttackIfReady(); - } - private: uint8 _stage; }; @@ -738,12 +684,7 @@ class boss_taerar : public CreatureScript void UpdateAI(uint32 const diff) { - if (!UpdateVictim()) - return; - - events.Update(diff); - - if (me->HasUnitState(UNIT_STAT_CASTING)) + if (!me->isInCombat()) return; if (_banished) @@ -760,13 +701,14 @@ class boss_taerar : public CreatureScript // _banishtimer has not expired, and we still have active shades: else _banishedTimer -= diff; + + // Update the events before we return (handled under emerald_dragonAI::UpdateAI(diff); if we're not inside this check) + events.Update(diff); + return; } - while (uint32 eventId = events.ExecuteEvent()) - ExecuteEvent(eventId); - - DoMeleeAttackIfReady(); + emerald_dragonAI::UpdateAI(diff); } private: From b7ba9a7fa857f09109848ff6aa1f1140e95b7507 Mon Sep 17 00:00:00 2001 From: click Date: Fri, 24 Jun 2011 18:05:50 +0200 Subject: [PATCH 23/58] Core: Clear up some confusion regarding the GM.AllowAchievementGain.Level config-entry Closes #2110. --- src/server/worldserver/worldserver.conf.dist | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 66ca7645e4..c0292786f7 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -1895,11 +1895,12 @@ GM.LowerSecurity = 0 # # GM.AllowAchievementGain.Level -# Description: Max GM level that can obtain achievements. -# Default: 3 - (Anyone) -# 0 - (Only players) -# 1 - (Only moderators) -# 2 - (Only gamemasters) +# Description: Max GM level allowed to obtain achievements. +# Default: 3 - (Players, Moderators, GameMasters, Owners) +# 0 - (Players) +# 1 - (Players, Moderators) +# 2 - (Players, Moderators, GameMasters) +# 3 - (Players, Moderators, GameMasters, Owners) GM.AllowAchievementGain.Level = 3 From 1340a3d3825895f768c4fdc699a91f3382fef641 Mon Sep 17 00:00:00 2001 From: tobmaps Date: Fri, 24 Jun 2011 23:04:16 +0700 Subject: [PATCH 24/58] Core/Spells: Fix Paladin T8 Holy 2P Bonus --- sql/base/world_database.sql | 1 + sql/updates/world/2011_06_24_05_world_spell_bonus_data.sql | 3 +++ src/server/game/Entities/Unit/Unit.cpp | 7 +++++++ 3 files changed, 11 insertions(+) create mode 100644 sql/updates/world/2011_06_24_05_world_spell_bonus_data.sql diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index c3347731ab..436102d989 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -16959,6 +16959,7 @@ INSERT INTO `spell_bonus_data` (`entry`,`direct_bonus`,`dot_bonus`,`ap_bonus`,`a (53600, 0, 0, 0, 0 ,'Paladin - Shield of Righteousness'), (20267, 0, 0, 0, 0, 'Paladin - Judgement of Light Proc'), (25997, 0, 0, 0, 0, 'Paladin - Eye for an Eye'), +(64891, -1, 0, -1, -1, 'Paladin - T8 Holy 2P - Holy Mending'), (50256, -1, -1, 0.08, -1, 'Pet Skills - Bear (Swipe)'), (32546, 0.8068, -1, -1, -1, 'Priest - Binding Heal'), (27813, 0, 0, 0, 0, 'Priest - Blessed Recovery Rank 1'), diff --git a/sql/updates/world/2011_06_24_05_world_spell_bonus_data.sql b/sql/updates/world/2011_06_24_05_world_spell_bonus_data.sql new file mode 100644 index 0000000000..58ae76c310 --- /dev/null +++ b/sql/updates/world/2011_06_24_05_world_spell_bonus_data.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_bonus_data` WHERE `entry` = 64891; +INSERT INTO `spell_bonus_data` VALUES +(64891, -1, 0, -1, -1, 'Paladin - T8 Holy 2P - Holy Mending'); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 66992062fb..607ad66572 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6915,6 +6915,13 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger basepoints0 = CalculatePctN(int32(damage), triggerAmount); break; } + // Item - Paladin T8 Holy 2P Bonus + case 64890: + { + triggered_spell_id = 64891; + basepoints0 = triggerAmount * damage / 300; + break; + } case 71406: // Tiny Abomination in a Jar case 71545: // Tiny Abomination in a Jar (Heroic) { From cf4114894a92c30fdc7c6011da256379e9b57598 Mon Sep 17 00:00:00 2001 From: tobmaps Date: Sat, 25 Jun 2011 00:04:59 +0700 Subject: [PATCH 25/58] Core/Spells: Fix Paladin T8 Holy 4P Bonus --- src/server/game/Entities/Unit/Unit.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 607ad66572..ab6ce6e4c6 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6688,7 +6688,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger { if (procFlag & PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS) { - if ((procSpell->SpellFamilyName == SPELLFAMILY_PALADIN) && (procSpell->SpellFamilyFlags[0] & 0x40000000)) + if (procSpell->SpellFamilyName == SPELLFAMILY_PALADIN && (procSpell->SpellFamilyFlags[0] & 0x40000000)) { basepoints0 = damage / 12; @@ -6703,6 +6703,10 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger else if (damage > 0) triggered_spell_id = 58597; + // Item - Paladin T8 Holy 4P Bonus + if (AuraEffect* aurEff = GetAuraEffect(64895, 0)) + cooldown = aurEff->GetAmount(); + target = this; break; } From 14cb9496e3254b8a9e45471bcc7b69e5af1dc942 Mon Sep 17 00:00:00 2001 From: tobmaps Date: Sat, 25 Jun 2011 00:45:38 +0700 Subject: [PATCH 26/58] Core/Spell: Some random code cleanups --- src/server/game/Entities/Unit/Unit.cpp | 29 ++++++++++---------- src/server/worldserver/worldserver.conf.dist | 4 +-- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index ab6ce6e4c6..6a8b1b21b6 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5704,7 +5704,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger { if (effIndex != 0) return false; - AuraEffect* counter = triggeredByAura->GetBase()->GetEffect(1); + AuraEffect* counter = triggeredByAura->GetBase()->GetEffect(EFFECT_1); if (!counter) return true; @@ -6040,7 +6040,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger // regen mana for caster CastCustomSpell(this, 59117, &basepoints0, NULL, NULL, true, castItem, triggeredByAura); // Get second aura of spell for replenishment effect on party - if (AuraEffect const* aurEff = (*i)->GetBase()->GetEffect(1)) + if (AuraEffect const* aurEff = (*i)->GetBase()->GetEffect(EFFECT_1)) { // Replenishment - roll chance if (roll_chance_i(aurEff->GetAmount())) @@ -6605,7 +6605,6 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger // This effect only from Rapid Killing (mana regen) if (!(procSpell->SpellFamilyFlags[1] & 0x01000000)) return false; - triggered_spell_id = 56654; target = this; @@ -6704,8 +6703,9 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger triggered_spell_id = 58597; // Item - Paladin T8 Holy 4P Bonus - if (AuraEffect* aurEff = GetAuraEffect(64895, 0)) - cooldown = aurEff->GetAmount(); + if (Unit* caster = triggeredByAura->GetCaster()) + if (AuraEffect const* aurEff = caster->GetAuraEffect(64895, 0)) + cooldown = aurEff->GetAmount(); target = this; break; @@ -6714,7 +6714,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger if (dummySpell->SpellIconID == 3025) { // 4 damage tick - basepoints0 = triggerAmount*damage/400; + basepoints0 = triggerAmount * damage / 400; triggered_spell_id = 61840; // Add remaining ticks to damage done basepoints0 += pVictim->GetRemainingPeriodicAmount(GetGUID(), triggered_spell_id, SPELL_AURA_PERIODIC_DAMAGE); @@ -6724,7 +6724,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger if (dummySpell->SpellIconID == 3030) { // 4 healing tick - basepoints0 = triggerAmount*damage/400; + basepoints0 = triggerAmount * damage / 400; triggered_spell_id = 54203; break; } @@ -8027,7 +8027,7 @@ bool Unit::HandleAuraProc(Unit* pVictim, uint32 damage, Aura * triggeredByAura, return false; int32 bp0 = int32(CalculatePctN(GetCreateMana(), SpellMgr::CalculateSpellEffectAmount(spInfo, 0))); - CastCustomSpell(this, 67545, &bp0, NULL, NULL, true, NULL, triggeredByAura->GetEffect(0), GetGUID()); + CastCustomSpell(this, 67545, &bp0, NULL, NULL, true, NULL, triggeredByAura->GetEffect(EFFECT_0), GetGUID()); return true; } } @@ -8050,7 +8050,7 @@ bool Unit::HandleAuraProc(Unit* pVictim, uint32 damage, Aura * triggeredByAura, // can't proc from death rune use if (rune == RUNE_DEATH) return false; - AuraEffect* aurEff = triggeredByAura->GetEffect(0); + AuraEffect* aurEff = triggeredByAura->GetEffect(EFFECT_0); if (!aurEff) return false; // Reset amplitude - set death rune remove timer to 30s @@ -10953,7 +10953,7 @@ bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM // Improved Faerie Fire if (pVictim->HasAuraState(AURA_STATE_FAERIE_FIRE)) if (AuraEffect const* aurEff = GetDummyAuraEffect(SPELLFAMILY_DRUID, 109, 0)) - crit_chance+=aurEff->GetAmount(); + crit_chance += aurEff->GetAmount(); // cumulative effect - don't break @@ -10963,7 +10963,7 @@ bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM // Improved Insect Swarm if (AuraEffect const* aurEff = GetDummyAuraEffect(SPELLFAMILY_DRUID, 1771, 0)) if (pVictim->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_DRUID, 0x00000002, 0, 0)) - crit_chance+=aurEff->GetAmount(); + crit_chance += aurEff->GetAmount(); break; } break; @@ -10977,9 +10977,8 @@ bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM if (spellProto->SpellFamilyFlags[0] & 0x40000000) { // Sacred Shield - AuraEffect const* aura = pVictim->GetAuraEffect(58597, 1); - if (aura && aura->GetCasterGUID() == GetGUID()) - crit_chance+=aura->GetAmount(); + if (AuraEffect const* aura = pVictim->GetAuraEffect(58597, 1, GetGUID())) + crit_chance += aura->GetAmount(); break; } // Exorcism @@ -11852,7 +11851,7 @@ void Unit::MeleeDamageBonus(Unit *pVictim, uint32 *pdamage, WeaponAttackType att case 6427: case 6428: // Dirty Deeds if (pVictim->HasAuraState(AURA_STATE_HEALTHLESS_35_PERCENT, spellProto, this)) { - AuraEffect* eff0 = (*i)->GetBase()->GetEffect(0); + AuraEffect* eff0 = (*i)->GetBase()->GetEffect(EFFECT_0); if (!eff0 || (*i)->GetEffIndex() != 1) { sLog->outError("Spell structure of DD (%u) changed.", (*i)->GetId()); diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index c0292786f7..eb1e33626c 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -1896,11 +1896,11 @@ GM.LowerSecurity = 0 # # GM.AllowAchievementGain.Level # Description: Max GM level allowed to obtain achievements. -# Default: 3 - (Players, Moderators, GameMasters, Owners) +# Default: 3 - (Players, Moderators, GameMasters, Admins) # 0 - (Players) # 1 - (Players, Moderators) # 2 - (Players, Moderators, GameMasters) -# 3 - (Players, Moderators, GameMasters, Owners) +# 3 - (Players, Moderators, GameMasters, Admins) GM.AllowAchievementGain.Level = 3 From 3de42791ee0343696586137d385f53bcc46ebd90 Mon Sep 17 00:00:00 2001 From: Shocker Date: Fri, 24 Jun 2011 21:56:37 +0300 Subject: [PATCH 27/58] Core/Spells: Partial revert of 5ddf90c5fe8e51a72697, use checkcast hook for disallowing spells to be casted directly Closes #2108 --- sql/scripts/world_scripts_full.sql | 5 ++++ ...2011_06_24_06_world_spell_script_names.sql | 7 +++++ src/server/game/Spells/Spell.cpp | 3 -- src/server/scripts/Spells/spell_generic.cpp | 30 +++++++++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 sql/updates/world/2011_06_24_06_world_spell_script_names.sql diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index 92c5b80d60..c9f3efd4b8 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -1976,6 +1976,11 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES ( 25281, 'spell_gen_turkey_marker'), (-55428, 'spell_gen_lifeblood'), ( 65917, 'spell_gen_magic_rooster'), +( 4073, 'spell_gen_allow_cast_from_item_only'), +( 19804, 'spell_gen_allow_cast_from_item_only'), +( 12749, 'spell_gen_allow_cast_from_item_only'), +( 13258, 'spell_gen_allow_cast_from_item_only'), +( 13166, 'spell_gen_allow_cast_from_item_only'), -- instances -- Black Temple ( 41475, 'spell_boss_lady_malande_shield'), diff --git a/sql/updates/world/2011_06_24_06_world_spell_script_names.sql b/sql/updates/world/2011_06_24_06_world_spell_script_names.sql new file mode 100644 index 0000000000..5c7b6e9bfc --- /dev/null +++ b/sql/updates/world/2011_06_24_06_world_spell_script_names.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN(4073,19804,12749,13258,13166); +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(4073,'spell_gen_allow_cast_from_item_only'), +(19804,'spell_gen_allow_cast_from_item_only'), +(12749,'spell_gen_allow_cast_from_item_only'), +(13258,'spell_gen_allow_cast_from_item_only'), +(13166,'spell_gen_allow_cast_from_item_only'); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 4357fb4bbc..118f46cd70 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4652,9 +4652,6 @@ SpellCastResult Spell::CheckCast(bool strict) if (m_spellInfo->AttributesEx7 & SPELL_ATTR7_IS_CHEAT_SPELL && !m_caster->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_ALLOW_CHEAT_SPELLS)) return SPELL_FAILED_SPELL_UNAVAILABLE; - if (m_castedClientside && m_spellInfo->Attributes & SPELL_ATTR0_HIDDEN_CLIENTSIDE && m_caster->GetTypeId() == TYPEID_PLAYER && !m_CastItem) - return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; - // Check global cooldown if (strict && !m_IsTriggeredSpell && HasGlobalCooldown()) return SPELL_FAILED_NOT_READY; diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 583e199979..9de0ffa6f5 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1125,6 +1125,35 @@ class spell_gen_magic_rooster : public SpellScriptLoader } }; +class spell_gen_allow_cast_from_item_only : public SpellScriptLoader +{ +public: + spell_gen_allow_cast_from_item_only() : SpellScriptLoader("spell_gen_allow_cast_from_item_only") { } + + class spell_gen_allow_cast_from_item_only_SpellScript : public SpellScript + { + PrepareSpellScript(spell_gen_allow_cast_from_item_only_SpellScript); + + SpellCastResult CheckRequirement() + { + if (!GetCastItem()) + return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; + + return SPELL_CAST_OK; + } + + void Register() + { + OnCheckCast += SpellCheckCastFn(spell_gen_allow_cast_from_item_only_SpellScript::CheckRequirement); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_gen_allow_cast_from_item_only_SpellScript(); + } +}; + void AddSC_generic_spell_scripts() { new spell_gen_absorb0_hitlimit1(); @@ -1151,4 +1180,5 @@ void AddSC_generic_spell_scripts() new spell_gen_turkey_marker(); new spell_gen_lifeblood(); new spell_gen_magic_rooster(); + new spell_gen_allow_cast_by_item_only(); } From 9c70f586e0a30a57c78bd62929b807e8fd222a8a Mon Sep 17 00:00:00 2001 From: Shocker Date: Fri, 24 Jun 2011 22:41:13 +0300 Subject: [PATCH 28/58] Core/Misc: Build fix --- src/server/scripts/Spells/spell_generic.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 9de0ffa6f5..67939a61f2 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1180,5 +1180,5 @@ void AddSC_generic_spell_scripts() new spell_gen_turkey_marker(); new spell_gen_lifeblood(); new spell_gen_magic_rooster(); - new spell_gen_allow_cast_by_item_only(); + new spell_gen_allow_cast_from_item_only(); } From 29cacd96b2968d43f9bc6b27615377f2f848f2b9 Mon Sep 17 00:00:00 2001 From: Lopin Date: Fri, 24 Jun 2011 22:03:14 +0200 Subject: [PATCH 29/58] Scripts/Halls Of Stone: Properly fixed achievement Brann Sparklin' News --- ..._24_07_world_achievement_criteria_data.sql | 9 +++ .../Ulduar/HallsOfStone/halls_of_stone.cpp | 57 ++++++++++++------- 2 files changed, 45 insertions(+), 21 deletions(-) create mode 100644 sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..e228625014 --- /dev/null +++ b/sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql @@ -0,0 +1,9 @@ +DELETE FROM `spell_dbc` WHERE `id`=59046; +INSERT INTO `spell_dbc` (`Id`,`Effect1`,`EffectRadiusIndex1`,`EffectImplicitTargetA1`,`EffectImplicitTargetB1`,`comment`) +VALUES +(59046,3,28,22,30,'Tribunal of Ages - Criteria Marker'); + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7590 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(7590,11,0,0,'achievement_brann_sparklin_news'); diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp index f237871ef9..9d2f5647df 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp @@ -110,7 +110,9 @@ enum Spells H_SPELL_DARK_MATTER = 59868, //Abedneum SPELL_SEARING_GAZE = 51136, - H_SPELL_SEARING_GAZE = 59867 + H_SPELL_SEARING_GAZE = 59867, + + SPELL_REWARD_ACHIEVEMENT = 59046, }; enum Quests @@ -118,13 +120,9 @@ enum Quests QUEST_HALLS_OF_STONE = 13207 }; -enum Achievements -{ - ACHIEV_BRANN_SPANKIN_NEW = 2154 -}; - #define GOSSIP_ITEM_START "Brann, it would be our honor!" #define GOSSIP_ITEM_PROGRESS "Let's move Brann, enough of the history lessons!" +#define DATA_BRANN_SPARKLIN_NEWS 1 static Position SpawnLocations[]= { @@ -184,7 +182,7 @@ public: } void UpdateFacesList() - { + { /*GetCreatureListWithEntryInGrid(lKaddrakGUIDList, me, CREATURE_KADDRAK, 50.0f); if (!lKaddrakGUIDList.empty()) { @@ -315,7 +313,7 @@ public: bool bIsBattle; bool bIsLowHP; - bool bHasBeenDamaged; + bool brannSparklinNews; void Reset() { @@ -323,10 +321,10 @@ public: { bIsLowHP = false; bIsBattle = false; - bHasBeenDamaged = false; uiStep = 0; uiPhaseTimer = 0; uiControllerGUID = 0; + brannSparklinNews = true; DespawnDwarf(); @@ -425,8 +423,16 @@ public: void DamageTaken(Unit* /*done_by*/, uint32 & /*damage*/) { - if (!bHasBeenDamaged) - bHasBeenDamaged = true; + if (brannSparklinNews) + brannSparklinNews = false; + } + + uint32 GetData(uint32 type) + { + if (type == DATA_BRANN_SPARKLIN_NEWS) + return brannSparklinNews ? 1 : 0; + + return 0; } void UpdateEscortAI(const uint32 uiDiff) @@ -590,17 +596,8 @@ public: case 29: DoScriptText(SAY_EVENT_END_02, me); if (pInstance) - { pInstance->SetData(DATA_BRANN_EVENT, DONE); - - // Achievement criteria is with spell 59046 which does not exist. - // There is thus no way it can be given by casting the spell on the players. - pInstance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, 59046); - - if (!bHasBeenDamaged) - pInstance->DoCompleteAchievement(ACHIEV_BRANN_SPANKIN_NEW); - } - + me->CastSpell(me, SPELL_REWARD_ACHIEVEMENT, true); JumpToNextStep(5500); break; case 30: @@ -738,8 +735,26 @@ public: }; +class achievement_brann_sparklin_news : public AchievementCriteriaScript +{ + public: + achievement_brann_sparklin_news() : AchievementCriteriaScript("achievement_brann_sparklin_news") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + if (Creature* Brann = target->ToCreature()) + if (Brann->AI()->GetData(DATA_BRANN_SPARKLIN_NEWS)) + return true; + + return false; + } +}; + void AddSC_halls_of_stone() { new npc_brann_hos(); new mob_tribuna_controller(); + new achievement_brann_sparklin_news(); } From 3cb41ddb1f8fc1ca545d03a4aec48799b08a1973 Mon Sep 17 00:00:00 2001 From: Lopin Date: Fri, 24 Jun 2011 22:04:20 +0200 Subject: [PATCH 30/58] Scripts/Drak'Tharon Keep: Properly fixed achievement Oh Novos! --- ..._24_08_world_achievement_criteria_data.sql | 6 ++ .../Northrend/DraktharonKeep/boss_novos.cpp | 69 +++++++++++++------ 2 files changed, 54 insertions(+), 21 deletions(-) create mode 100644 sql/updates/world/2011_06_24_08_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_24_08_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_24_08_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..4e64ce26ae --- /dev/null +++ b/sql/updates/world/2011_06_24_08_world_achievement_criteria_data.sql @@ -0,0 +1,6 @@ +DELETE FROM `disables` WHERE `entry`=7361 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7361 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(7361,11,0,0,'achievement_oh_novos'); diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp index 2672a22d26..4441c95a68 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp @@ -31,6 +31,7 @@ enum Spells H_SPELL_WRATH_OF_MISERY = 59856, SPELL_SUMMON_MINIONS = 59910 //Summons an army of Fetid Troll Corpses to assist the caster. }; + //not in db enum Yells { @@ -41,6 +42,7 @@ enum Yells SAY_REUBBLE_1 = -1600004, SAY_REUBBLE_2 = -1600005 }; + enum Creatures { CREATURE_RISEN_SHADOWCASTER = 27600, @@ -48,16 +50,16 @@ enum Creatures CREATURE_HULKING_CORPSE = 27597, CREATURE_CRYSTAL_HANDLER = 26627 }; + enum CombatPhase { IDLE, PHASE_1, PHASE_2 }; -enum Achievements -{ - ACHIEV_OH_NOVOS = 2057 -}; + +#define ACTION_MINION_REACHED 1 +#define DATA_OH_NOVOS 2 static Position AddSpawnPoint = { -379.20f, -816.76f, 59.70f, 0.0f }; static Position CrystalHandlerSpawnPoint = { -326.626343f, -709.956604f, 27.813314f, 0.0f }; @@ -79,7 +81,7 @@ public: uint32 uiCrystalHandlerTimer; uint8 crystalHandlerAmount; - bool bAchiev; + bool ohNovos; SummonList lSummons; @@ -93,7 +95,7 @@ public: { Phase = IDLE; luiCrystals.clear(); - bAchiev = true; + ohNovos = true; me->CastStop(); lSummons.DespawnAll(); crystalHandlerAmount = 0; @@ -108,10 +110,8 @@ public: if (pInstance) { pInstance->SetData(DATA_NOVOS_EVENT, NOT_STARTED); - luiCrystals.push_back(pInstance->GetData64(DATA_NOVOS_CRYSTAL_1)); - luiCrystals.push_back(pInstance->GetData64(DATA_NOVOS_CRYSTAL_2)); - luiCrystals.push_back(pInstance->GetData64(DATA_NOVOS_CRYSTAL_3)); - luiCrystals.push_back(pInstance->GetData64(DATA_NOVOS_CRYSTAL_4)); + for (uint8 n = 0; n < 4; ++n) + luiCrystals.push_back(pInstance->GetData64(DATA_NOVOS_CRYSTAL_1 + n)); for (std::list::const_iterator itr = luiCrystals.begin(); itr != luiCrystals.end(); ++itr) { if (GameObject* pTemp = pInstance->instance->GetGameObject(*itr)) @@ -182,12 +182,7 @@ public: { DoScriptText(SAY_DEATH, me); if (pInstance) - { pInstance->SetData(DATA_NOVOS_EVENT, DONE); - - if (IsHeroic() && bAchiev) - pInstance->DoCompleteAchievement(ACHIEV_OH_NOVOS); - } lSummons.DespawnAll(); } @@ -206,6 +201,20 @@ public: lSummons.Summon(summon); } + void DoAction(int32 const action) + { + if (action == ACTION_MINION_REACHED) + ohNovos = false; + } + + uint32 GetData(uint32 type) + { + if (type == DATA_OH_NOVOS) + return ohNovos ? 1 : 0; + + return 0; + } + void RemoveCrystal() { if (!luiCrystals.empty()) @@ -319,10 +328,10 @@ public: { if (type != POINT_MOTION_TYPE || id !=0) return; - if (Creature* pNovos = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_NOVOS) : 0)) + if (Creature* Novos = ObjectAccessor::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_NOVOS) : 0)) { - CAST_AI(boss_novos::boss_novosAI, pNovos->AI())->bAchiev = false; - if (Unit *pTarget = CAST_AI(boss_novos::boss_novosAI, pNovos->AI())->GetRandomTarget()) + Novos->AI()->DoAction(ACTION_MINION_REACHED); + if (Unit *pTarget = CAST_AI(boss_novos::boss_novosAI, Novos->AI())->GetRandomTarget()) AttackStart(pTarget); } } @@ -334,9 +343,27 @@ public: } }; +class achievement_oh_novos : public AchievementCriteriaScript +{ + public: + achievement_oh_novos() : AchievementCriteriaScript("achievement_oh_novos") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + if (Creature* Novos = target->ToCreature()) + if (Novos->AI()->GetData(DATA_OH_NOVOS)) + return true; + + return false; + } +}; + void AddSC_boss_novos() { - new boss_novos; - new mob_crystal_handler; - new mob_novos_minion; + new boss_novos(); + new mob_crystal_handler(); + new mob_novos_minion(); + new achievement_oh_novos(); } From 7b1cf629ea5126c8c150f8e11ef510462b74fb76 Mon Sep 17 00:00:00 2001 From: Lopin Date: Fri, 24 Jun 2011 22:08:52 +0200 Subject: [PATCH 31/58] DB/SQL: Added today's changes to world_scripts_full.sql --- sql/scripts/world_scripts_full.sql | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index c9f3efd4b8..ace8b335a9 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -1827,7 +1827,7 @@ UPDATE `outdoorpvp_template` SET `ScriptName`='outdoorpvp_si' WHERE `TypeId`=5; UPDATE `outdoorpvp_template` SET `ScriptName`='outdoorpvp_ep' WHERE `TypeId`=6; /* ACHIEVEMENTS */ -DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (3693,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,1234,1239,5605,5606,12778,13036,13035,13037,12977,12967,12986,12982,12993,12780,13012,13011,13013,12062,12063,12064,12065,12183,12068,12060,12061,12822,12996,12972,12989,10062,10063,10054,10055,10046,10047,10048,10049,10050,10051,10044,10045,6446,7625,7628,5541,5542,5543,7573,7574,7265,7549,12971,12978,12979,12980,7598,7587,7264,7548,10068,10069,10173,10306,10451,10462,10447,10448,10449,10459,10460,10461,7316,7317,7318,7583,4240) AND `type` IN (0,11); +DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (3693,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,1234,1239,5605,5606,12778,13036,13035,13037,12977,12967,12986,12982,12993,12780,13012,13011,13013,12062,12063,12064,12065,12183,12068,12060,12061,12822,12996,12972,12989,10062,10063,10054,10055,10046,10047,10048,10049,10050,10051,10044,10045,6446,7625,7628,5541,5542,5543,7573,7574,7265,7549,12971,12978,12979,12980,7598,7587,7264,7548,10068,10069,10173,10306,10451,10462,10447,10448,10449,10459,10460,10461,7316,7317,7318,7583,4240,6803,7319,7577,7320,7590,7361) AND `type` IN (0,11); INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) VALUES (3693,11,0,0, 'achievement_storm_glory'), (3804,11,0,0, 'achievement_resilient_victory'), @@ -1916,7 +1916,13 @@ INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`, (7318,11,0,0,'achievement_king_dred'), (7316,11,0,0,'achievement_chaos_theory'), (7583,11,0,0,'achievement_share_the_love'), -(4240,11,0,0,'achievement_watch_him_die'); +(4240,11,0,0,'achievement_watch_him_die'), +(6803,11,0,0,'achievement_defenseless'), +(7319,11,0,0,'achievement_less_rabi'), +(7577,11,0,0,'achievement_split_personality'), +(7320,11,0,0,'achievement_dehydration'), +(7590,11,0,0,'achievement_brann_sparklin_news'), +(7361,11,0,0,'achievement_oh_novos'); /* SPELLS */ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES From 96697db6045e607e7f7474352a0cb921d4d5c792 Mon Sep 17 00:00:00 2001 From: tobmaps Date: Sat, 25 Jun 2011 03:24:25 +0700 Subject: [PATCH 32/58] Core/Spells: Fix Paladin T9 Holy 4P Bonus --- src/server/game/Entities/Unit/Unit.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 6a8b1b21b6..c08fb51d37 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6108,7 +6108,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger { // Multiple effects stack, so let's try to find this aura. int32 bonus = 0; - if (AuraEffect* aurEff = target->GetAuraEffect(47753, 0)) + if (AuraEffect const* aurEff = target->GetAuraEffect(47753, 0)) bonus = aurEff->GetAmount(); basepoints0 = CalculatePctN(int32(damage), triggerAmount) + bonus; @@ -7955,6 +7955,9 @@ bool Unit::HandleAuraProc(Unit* pVictim, uint32 damage, Aura * triggeredByAura, if (pVictim->HasAura(53601)) { int32 bp0 = CalculatePctN(int32(damage / 12), SpellMgr::CalculateSpellEffectAmount(dummySpell, 2)); + // Item - Paladin T9 Holy 4P Bonus + if (AuraEffect const* aurEff = GetAuraEffect(67191, 0)) + AddPctN(bp0, aurEff->GetAmount()); CastCustomSpell(pVictim, 66922, &bp0, NULL, NULL, true); return true; } From 83f7363123b253f75d778d7774011fe7a922b9cf Mon Sep 17 00:00:00 2001 From: elecyb Date: Sat, 25 Jun 2011 03:57:37 +0700 Subject: [PATCH 33/58] Core/Spells: Drop some unneeded and wrong code --- src/server/game/Spells/SpellMgr.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 28dce44e2c..a177b249cf 100755 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -4233,9 +4233,6 @@ void SpellMgr::LoadSpellCustomAttr() // Starfall Target Selection if (spellInfo->SpellFamilyFlags[2] & 0x100) spellInfo->MaxAffectedTargets = 2; - // Starfall AOE Damage - else if (spellInfo->SpellFamilyFlags[2] & 0x800000) - mSpellCustomAttr[i] |= SPELL_ATTR0_CU_EXCLUDE_SELF; // Roar else if (spellInfo->SpellFamilyFlags[0] & 0x8) mSpellCustomAttr[i] |= SPELL_ATTR0_CU_AURA_CC; From 6bda92ac15afca83561c50dc790af7bd7ee4058f Mon Sep 17 00:00:00 2001 From: elecyb Date: Sat, 25 Jun 2011 04:17:27 +0700 Subject: [PATCH 34/58] Core/Spells: Removed unneded hack --- src/server/game/Spells/SpellMgr.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index a177b249cf..9698799a9b 100755 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3825,7 +3825,6 @@ void SpellMgr::LoadSpellCustomAttr() case 45641: // Fire Bloom case 55665: // Life Drain - Sapphiron (H) case 28796: // Poison Bolt Volly - Faerlina - case 5484: // Howl Of Terror (Warlock) spellInfo->MaxAffectedTargets = 5; ++count; break; From 0a26e659aece208ba94864005ddc527400e0195c Mon Sep 17 00:00:00 2001 From: elecyb Date: Sat, 25 Jun 2011 04:30:11 +0700 Subject: [PATCH 35/58] Core/Spells: Removed more unneeded hacks --- src/server/game/Spells/SpellMgr.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 9698799a9b..3de7b7a783 100755 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3892,10 +3892,6 @@ void SpellMgr::LoadSpellCustomAttr() spellInfo->EffectMiscValue[0] |= 1; ++count; break; - case 52025: // Cleansing Totem Effect - spellInfo->EffectDieSides[1] = 1; - ++count; - break; case 51904: // Summon Ghouls On Scarlet Crusade (core does not know the triggered spell is summon spell) spellInfo->EffectImplicitTargetA[0] = TARGET_UNIT_CASTER; ++count; @@ -4181,7 +4177,6 @@ void SpellMgr::LoadSpellCustomAttr() spellInfo->AreaGroupId = 0; // originally, these require area 4522, which is... outside of Icecrown Citadel ++count; break; - case 70588: // Suppression case 70602: // Corruption spellInfo->AttributesEx |= SPELL_ATTR1_STACK_FOR_DIFF_CASTERS; ++count; From 4fb820dbc796df7d8415ebede27dc7de11e2703b Mon Sep 17 00:00:00 2001 From: click Date: Sat, 25 Jun 2011 01:18:47 +0200 Subject: [PATCH 36/58] Core/DBC: Add missing spell for Summon Shadoe Of Jin'Do (from 1.12 DBC) --- sql/updates/world/2011_06_25_00_world_spell_dbc.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sql/updates/world/2011_06_25_00_world_spell_dbc.sql diff --git a/sql/updates/world/2011_06_25_00_world_spell_dbc.sql b/sql/updates/world/2011_06_25_00_world_spell_dbc.sql new file mode 100644 index 0000000000..782a29db90 --- /dev/null +++ b/sql/updates/world/2011_06_25_00_world_spell_dbc.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_dbc` WHERE `Id`=24308; +INSERT INTO `spell_dbc`(`Id`,`Dispel`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`Stances`,`StancesNot`,`Targets`,`CastingTimeIndex`,`AuraInterruptFlags`,`ProcFlags`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`RangeIndex`,`StackAmount`,`EquippedItemClass`,`EquippedItemSubClassMask`,`EquippedItemInventoryTypeMask`,`Effect1`,`Effect2`,`Effect3`,`EffectDieSides1`,`EffectDieSides2`,`EffectDieSides3`,`EffectRealPointsPerLevel1`,`EffectRealPointsPerLevel2`,`EffectRealPointsPerLevel3`,`EffectBasePoints1`,`EffectBasePoints2`,`EffectBasePoints3`,`EffectMechanic1`,`EffectMechanic2`,`EffectMechanic3`,`EffectImplicitTargetA1`,`EffectImplicitTargetA2`,`EffectImplicitTargetA3`,`EffectImplicitTargetB1`,`EffectImplicitTargetB2`,`EffectImplicitTargetB3`,`EffectRadiusIndex1`,`EffectRadiusIndex2`,`EffectRadiusIndex3`,`EffectApplyAuraName1`,`EffectApplyAuraName2`,`EffectApplyAuraName3`,`EffectAmplitude1`,`EffectAmplitude2`,`EffectAmplitude3`,`EffectMultipleValue1`,`EffectMultipleValue2`,`EffectMultipleValue3`,`EffectMiscValue1`,`EffectMiscValue2`,`EffectMiscValue3`,`EffectMiscValueB1`,`EffectMiscValueB2`,`EffectMiscValueB3`,`EffectTriggerSpell1`,`EffectTriggerSpell2`,`EffectTriggerSpell3`,`EffectSpellClassMaskA1`,`EffectSpellClassMaskA2`,`EffectSpellClassMaskA3`,`EffectSpellClassMaskB1`,`EffectSpellClassMaskB2`,`EffectSpellClassMaskB3`,`EffectSpellClassMaskC1`,`EffectSpellClassMaskC2`,`EffectSpellClassMaskC3`,`MaxTargetLevel`,`SpellFamilyName`,`SpellFamilyFlags1`,`SpellFamilyFlags2`,`SpellFamilyFlags3`,`MaxAffectedTargets`,`DmgClass`,`PreventionType`,`DmgMultiplier1`,`DmgMultiplier2`,`DmgMultiplier3`,`AreaGroupId`,`SchoolMask`,`Comment`) VALUES +('24308','0','0','256','0','0','0','0','0','0','0','0','1','0','0','101','0','0','0','0','26','1','0','-1','0','0','41','0','0','1','0','0','0','0','0','0','0','0','0','0','0','18','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','14986','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1','0','0','0','0','Summon Shade of Jin''Do'); From 6f8f82ce130e806585983fd0b0c09426a13e23f3 Mon Sep 17 00:00:00 2001 From: click Date: Sat, 25 Jun 2011 02:06:26 +0200 Subject: [PATCH 37/58] Scripts/DB: Fix a silly typo for Ragnaros' Magmaburst - thanks to Discover --- sql/updates/world/2011_06_25_01_world_script_texts.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/2011_06_25_01_world_script_texts.sql diff --git a/sql/updates/world/2011_06_25_01_world_script_texts.sql b/sql/updates/world/2011_06_25_01_world_script_texts.sql new file mode 100644 index 0000000000..8b0a68f41c --- /dev/null +++ b/sql/updates/world/2011_06_25_01_world_script_texts.sql @@ -0,0 +1,2 @@ +-- Fix typo for Ragnaros' Magmaburst +UPDATE `script_texts` SET `content_default`='MY PATIENCE IS DWINDLING! COME, GNATS, TO YOUR DEATH!' WHERE `npc_entry`=11502 AND `entry`='-1409018'; From df5657871a64bf5b05f3b2f6cc144c8d5787137f Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sat, 25 Jun 2011 04:22:44 +0200 Subject: [PATCH 38/58] DB/SAI: Fix quest 11465 "The Ransacked Caravan" Signed-off-by: click --- .../world/2011_06_25_02_world_misc.sql | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 sql/updates/world/2011_06_25_02_world_misc.sql diff --git a/sql/updates/world/2011_06_25_02_world_misc.sql b/sql/updates/world/2011_06_25_02_world_misc.sql new file mode 100644 index 0000000000..a30d849226 --- /dev/null +++ b/sql/updates/world/2011_06_25_02_world_misc.sql @@ -0,0 +1,31 @@ +-- Fix Quest 11465 "The Ransacked Caravan" +-- Fjord Turkey SAI +SET @ENTRY := 24746; -- NPC entry +SET @SPELL1 := 44323; -- Hawk Hunting +SET @SPELL2 := 44327; -- Hawk Hunting +UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_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,8,0,100,0,@SPELL1,0,0,0,11,@SPELL2,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Fjord Turkey - On Spellhit - Cast spell on invoker'), +(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Fjord Turkey - On Spellhit - Despawn'); +-- Fix condition for Item 34111 to only target Fjord Turkey +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceEntry`=34111; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(18,0,34111,0,24,1,@ENTRY,0,63,'','Item Trained Rock Falcon targets only Fjord Turkey'); +-- Dragonflayer Ambusher SAI +SET @ENTRY := 24779; -- NPC entry +SET @SPELL1 := 38557; -- Throw +UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`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,0,0,0,0,0,89,10,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Dragonflayer Ambusher - On spawn - Set random movement'), +(@ENTRY,0,1,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Dragonflayer Ambusher - On aggro - Say text'), +(@ENTRY,0,2,0,0,0,100,1,0,0,0,0,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Dragonflayer Ambusher - Combat - Cast spell on victim'); +-- NPC talk text insert from sniff +DELETE FROM `creature_text` WHERE `entry`=24779; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(24779,0,0, 'Tonight we feast on you!',12,0,100,0,0,0, 'Dragonflayer Ambusher'), +(24779,0,1, 'Such easy prey...',12,0,100,0,0,0, 'Dragonflayer Ambusher'), +(24779,0,2, 'Who''s hunting who?',12,0,100,0,0,0, 'Dragonflayer Ambusher'); From 835efdacd1fd6671f14e2a83ef5a11c0d27b044a Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sat, 25 Jun 2011 04:38:53 +0200 Subject: [PATCH 39/58] DB/SAI: Add a few more SAI-scripts for: - Ice Heart Jormungar Feeder - Fulgorge - assorted Hellfire creatures Signed-off-by: click --- sql/updates/world/2011_06_25_03_world_sai.sql | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 sql/updates/world/2011_06_25_03_world_sai.sql diff --git a/sql/updates/world/2011_06_25_03_world_sai.sql b/sql/updates/world/2011_06_25_03_world_sai.sql new file mode 100644 index 0000000000..61ab8ff2b8 --- /dev/null +++ b/sql/updates/world/2011_06_25_03_world_sai.sql @@ -0,0 +1,52 @@ +-- Ice Heart Jormungar Feeder SAI +SET @ENTRY := 26358; -- NPC entry +SET @SPELL1 := 47447; -- Corrosive Spit +UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`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,11000,20000,26000,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Ice Heart Jormungar Feeder - Combat - Cast Corrosive Spit'); + +-- SAI for Fulgorge +SET @ENTRY := 18678; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +UPDATE `creature` SET `spawndist`=20,`MovementType`=1 WHERE `id`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_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,100,1,0,0,0,0,11,34038,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - OOC - Cast Submerge Visual'), +(@ENTRY,0,1,0,61,0,100,1,0,0,0,0,18,33554434,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - OOC - Set Unselectable and Unattackable Flags'), +(@ENTRY,0,2,3,0,0,100,1,0,0,0,0,28,34038,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - On Aggro - Remove Submerge Visual'), +(@ENTRY,0,3,4,61,0,100,0,0,0,0,0,19,33554434,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - On Aggro - Remove Unselectable and Unattackable Flags'), +(@ENTRY,0,4,5,61,0,100,0,0,0,0,0,21,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - On Aggro - Prevent Combat Movement'), +(@ENTRY,0,5,0,61,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - On Aggro - Set Phase 1'), +(@ENTRY,0,6,7,0,1,100,0,1000,1000,2100,4500,11,31747,1,0,0,0,0,2,0,0,0,0,0,0,0,'Fulgorge - Combat - Cast Poison (Phase 1)'), +(@ENTRY,0,7,0,61,1,100,0,0,0,0,0,21,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - Combat - Prevent Combat Movement (Phase 1)'), +(@ENTRY,0,8,0,0,1,100,0,20400,20400,45000,50000,11,32738,1,0,0,0,0,2,0,0,0,0,0,0,0,'Fulgorge - Combat - Cast Bore (Phase 1)'), +(@ENTRY,0,9,10,9,1,100,0,20,60,0,0,11,34038,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - At 20 - 60 Yards Range - Cast Submerge Visual (Phase 1)'), +(@ENTRY,0,10,0,61,1,100,0,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - At 20 - 60 Yards Range - Set Phase 2 (Phase 1)'), +(@ENTRY,0,11,12,9,2,100,0,0,8,0,0,28,34038,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - At 0 - 8 Yards - Remove Submerge Visual (Phase 2)'), +(@ENTRY,0,12,13,61,2,100,0,0,0,0,0,21,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - Combat - Prevent Combat Movement (Phase 2)'), +(@ENTRY,0,13,14,61,2,100,0,0,8,0,0,19,33554434,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - At 0 - 8 Yards - Remove Unselectable and Unattackable Flags (Phase 2)'), +(@ENTRY,0,14,0,61,2,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fulgorge - At 20 - 60 Yards Range - Set Phase 1 (Phase 2)'); + +-- Deranged Helboar SAI +SET @ENTRY := 16863; -- NPC entry +SET @SPELL1 := 33908; -- Burning Spikes +SET @SPELL2 := 8599; -- Enrage +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`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,0,0,0,0,0,11,@SPELL1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Deranged Helboar - On spawn - Cast Burning Spikes on self'), +(@ENTRY,0,1,0,2,0,100,1,0,30,0,0,11,@SPELL2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Deranged Helboar - On Health level - Cast Enrage When Below 30% HP'); + +-- Stonescythe Alpha SAI +SET @ENTRY := 16929; -- NPC entry +SET @SPELL1 := 33911; -- Tear Armor +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,0,0,50,0,3000,3000,8000,8000,11,@SPELL1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Stonescythe Alpha - Combat - Cast Tear Armor'); + From ea55e54a50b53ff6d69023d14a64788b05f75fa8 Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 13:30:51 +0200 Subject: [PATCH 40/58] Scripts/Halls Of Stone: Properly fixed achievement Abuse the Ooze --- ..._25_04_world_achievement_criteria_data.sql | 6 ++ .../Ulduar/HallsOfStone/boss_sjonnir.cpp | 56 +++++++++++++------ 2 files changed, 45 insertions(+), 17 deletions(-) create mode 100644 sql/updates/world/2011_06_25_04_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_25_04_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_25_04_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..66a9ff7f11 --- /dev/null +++ b/sql/updates/world/2011_06_25_04_world_achievement_criteria_data.sql @@ -0,0 +1,6 @@ +DELETE FROM `disables` WHERE `entry`=7593 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7593 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(7593,11,0,0,'achievement_abuse_the_ooze'); diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp index 2377c5e908..6de54d357c 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp @@ -60,11 +60,7 @@ enum SjonnirCreatures CREATURE_IRON_SLUDGE = 28165 }; -enum Misc -{ - DATA_TIME_BEFORE_OOZE = 150000, //2min 30 secs - ACHIEV_ABUSE_THE_OOZE = 2155 -}; +#define DATA_TIME_BEFORE_OOZE 150000 //2min 30 secs struct Locations { @@ -73,10 +69,13 @@ struct Locations static Locations PipeLocations[] = { - {1295.44f, 734.07f, 200.3f}, //left - {1297.7f, 595.6f, 199.9f} //right + {1295.44f, 734.07f, 200.3f}, //left + {1297.7f, 595.6f, 199.9f} //right }; +#define ACTION_OOZE_DEAD 1 +#define DATA_ABUSE_THE_OOZE 2 + static Locations CenterPoint = {1295.21f, 667.157f, 189.691f}; class boss_sjonnir : public CreatureScript @@ -105,7 +104,7 @@ public: uint32 uiSummonTimer; uint32 uiFrenzyTimer; uint32 uiEncounterTimer; - uint32 uiKilledIronSludges; + uint8 abuseTheOoze; SummonList lSummons; @@ -122,7 +121,7 @@ public: uiLightningRingTimer = 30000 + rand()%5000; uiSummonTimer = 5000; uiFrenzyTimer = 300000; //5 minutes - uiKilledIronSludges = 0; + abuseTheOoze = 0; lSummons.DespawnAll(); @@ -221,11 +220,7 @@ public: lSummons.DespawnAll(); if (pInstance) - { pInstance->SetData(DATA_SJONNIR_EVENT, DONE); - if (IsHeroic() && uiKilledIronSludges > 4) - pInstance->DoCompleteAchievement(ACHIEV_ABUSE_THE_OOZE); - } } void KilledUnit(Unit* victim) { @@ -234,9 +229,18 @@ public: DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me); } - void KilledIronSludge() + void DoAction(int32 const action) { - ++uiKilledIronSludges; + if (action == ACTION_OOZE_DEAD) + ++abuseTheOoze; + } + + uint32 GetData(uint32 type) + { + if (type == DATA_ABUSE_THE_OOZE) + return abuseTheOoze; + + return 0; } }; @@ -307,16 +311,34 @@ public: void JustDied(Unit* /*pKiller*/) { if (pInstance) - if (Creature* pSjonnir = Unit::GetCreature(*me, pInstance->GetData64(DATA_SJONNIR))) - CAST_AI(boss_sjonnir::boss_sjonnirAI, pSjonnir->AI())->KilledIronSludge(); + if (Creature* Sjonnir = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_SJONNIR))) + Sjonnir->AI()->DoAction(ACTION_OOZE_DEAD); } }; }; +class achievement_abuse_the_ooze : public AchievementCriteriaScript +{ + public: + achievement_abuse_the_ooze() : AchievementCriteriaScript("achievement_abuse_the_ooze") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + if (Creature* Sjonnir = target->ToCreature()) + if (Sjonnir->AI()->GetData(DATA_ABUSE_THE_OOZE) >= 5) + return true; + + return false; + } +}; + void AddSC_boss_sjonnir() { new boss_sjonnir(); new mob_malformed_ooze(); new mob_iron_sludge(); + new achievement_abuse_the_ooze(); } From cec8ea0b4e0a4d6c224b7be4c9bf8990f326ad91 Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 13:31:41 +0200 Subject: [PATCH 41/58] Scripts/Drak'Tharon Keep: Properly fixed achievement Consumption Junction --- ..._25_05_world_achievement_criteria_data.sql | 6 +++ .../DraktharonKeep/boss_trollgore.cpp | 52 +++++++++++++------ 2 files changed, 43 insertions(+), 15 deletions(-) create mode 100644 sql/updates/world/2011_06_25_05_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_25_05_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_25_05_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..c67289b76a --- /dev/null +++ b/sql/updates/world/2011_06_25_05_world_achievement_criteria_data.sql @@ -0,0 +1,6 @@ +DELETE FROM `disables` WHERE `entry`=7579 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7579 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(7579,11,0,0,'achievement_consumption_junction'); diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp index db28530607..641c3bed19 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp @@ -34,6 +34,7 @@ enum Spells H_SPELL_CONSUME = 59803, H_SPELL_CONSUME_AURA = 59805, }; + enum Yells { SAY_AGGRO = -1600006, @@ -42,16 +43,15 @@ enum Yells SAY_EXPLODE = -1600009, SAY_DEATH = -1600010 }; -enum Achievements -{ - ACHIEV_CONSUMPTION_JUNCTION = 2151 -}; + enum Creatures { NPC_DRAKKARI_INVADER_1 = 27753, NPC_DRAKKARI_INVADER_2 = 27709 }; +#define DATA_CONSUMPTION_JUNCTION 1 + Position AddSpawnPoint = { -260.493011f, -622.968018f, 26.605301f, 3.036870f }; class boss_trollgore : public CreatureScript @@ -73,7 +73,7 @@ public: uint32 uiExplodeCorpseTimer; uint32 uiSpawnTimer; - bool bAchiev; + bool consumptionJunction; SummonList lSummons; @@ -88,7 +88,7 @@ public: uiExplodeCorpseTimer = 3*IN_MILLISECONDS; uiSpawnTimer = urand(30*IN_MILLISECONDS, 40*IN_MILLISECONDS); - bAchiev = IsHeroic(); + consumptionJunction = true; lSummons.DespawnAll(); @@ -127,11 +127,11 @@ public: uiConsumeTimer = 15*IN_MILLISECONDS; } else uiConsumeTimer -= diff; - if (bAchiev) + if (consumptionJunction) { - Aura *pConsumeAura = me->GetAura(DUNGEON_MODE(SPELL_CONSUME_AURA, H_SPELL_CONSUME_AURA)); - if (pConsumeAura && pConsumeAura->GetStackAmount() > 9) - bAchiev = false; + Aura* ConsumeAura = me->GetAura(DUNGEON_MODE(SPELL_CONSUME_AURA, H_SPELL_CONSUME_AURA)); + if (ConsumeAura && ConsumeAura->GetStackAmount() > 9) + consumptionJunction = false; } if (uiCrushTimer <= diff) @@ -163,11 +163,15 @@ public: lSummons.DespawnAll(); if (pInstance) - { - if (bAchiev) - pInstance->DoCompleteAchievement(ACHIEV_CONSUMPTION_JUNCTION); pInstance->SetData(DATA_TROLLGORE_EVENT, DONE); - } + } + + uint32 GetData(uint32 type) + { + if (type == DATA_CONSUMPTION_JUNCTION) + return consumptionJunction ? 1 : 0; + + return 0; } void KilledUnit(Unit* victim) @@ -191,7 +195,25 @@ public: } }; +class achievement_consumption_junction : public AchievementCriteriaScript +{ + public: + achievement_consumption_junction() : AchievementCriteriaScript("achievement_consumption_junction") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + if (Creature* Trollgore = target->ToCreature()) + if (Trollgore->AI()->GetData(DATA_CONSUMPTION_JUNCTION)) + return true; + + return false; + } +}; + void AddSC_boss_trollgore() { - new boss_trollgore; + new boss_trollgore(); + new achievement_consumption_junction(); } From b6283412c66ec3262538341c6da35efad03d319a Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 13:32:43 +0200 Subject: [PATCH 42/58] Scripts/Forge of Souls: Properly fixed achievement Three Faced --- ..._25_06_world_achievement_criteria_data.sql | 4 ++ .../ForgeOfSouls/boss_devourer_of_souls.cpp | 38 +++++++++++++++---- 2 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 sql/updates/world/2011_06_25_06_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_25_06_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_25_06_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..3fa82b56f4 --- /dev/null +++ b/sql/updates/world/2011_06_25_06_world_achievement_criteria_data.sql @@ -0,0 +1,4 @@ +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=12976 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(12976,11,0,0,'achievement_three_faced'); diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp index 38af9ad3a4..bcaf643136 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp @@ -77,7 +77,6 @@ enum Events enum eEnum { - ACHIEV_THREE_FACED = 4523, DISPLAY_ANGER = 30148, DISPLAY_SORROW = 30149, DISPLAY_DESIRE = 30150, @@ -115,6 +114,8 @@ struct outroPosition { { 0, 0 }, { 0.0f, 0.0f, 0.0f, 0.0f } } }; +#define DATA_THREE_FACED 1 + class boss_devourer_of_souls : public CreatureScript { public: @@ -143,7 +144,7 @@ class boss_devourer_of_souls : public CreatureScript events.Reset(); summons.DespawnAll(); - threeFaceAchievement = true; + threeFaced = true; mirroredSoulTarget = 0; instance->SetData(DATA_DEVOURER_EVENT, NOT_STARTED); @@ -214,9 +215,6 @@ class boss_devourer_of_souls : public CreatureScript instance->SetData(DATA_DEVOURER_EVENT, DONE); - if (threeFaceAchievement && IsHeroic()) - instance->DoCompleteAchievement(ACHIEV_THREE_FACED); - int32 entryIndex; if (instance->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE) entryIndex = 0; @@ -239,7 +237,15 @@ class boss_devourer_of_souls : public CreatureScript void SpellHitTarget(Unit* /*target*/, const SpellEntry *spell) { if (spell->Id == H_SPELL_PHANTOM_BLAST) - threeFaceAchievement = false; + threeFaced = false; + } + + uint32 GetData(uint32 type) + { + if (type == DATA_THREE_FACED) + return threeFaced; + + return 0; } void UpdateAI(const uint32 diff) @@ -344,7 +350,7 @@ class boss_devourer_of_souls : public CreatureScript } private: - bool threeFaceAchievement; + bool threeFaced; // wailing soul event float beamAngle; @@ -360,7 +366,25 @@ class boss_devourer_of_souls : public CreatureScript } }; +class achievement_three_faced : public AchievementCriteriaScript +{ + public: + achievement_three_faced() : AchievementCriteriaScript("achievement_three_faced") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + if (Creature* Devourer = target->ToCreature()) + if (Devourer->AI()->GetData(DATA_THREE_FACED)) + return true; + + return false; + } +}; + void AddSC_boss_devourer_of_souls() { new boss_devourer_of_souls(); + new achievement_three_faced(); } From a82a35c655f284ea0bc91d2353631274ae8dcef5 Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 13:33:58 +0200 Subject: [PATCH 43/58] Scripts/Ahn'Kahet: Properly fixed achievement Volunteer Work --- ..._25_07_world_achievement_criteria_data.sql | 6 ++ .../Northrend/AzjolNerub/ahnkahet/ahnkahet.h | 1 - .../ahnkahet/boss_jedoga_shadowseeker.cpp | 72 +++++++++++++++---- .../AzjolNerub/ahnkahet/instance_ahnkahet.cpp | 10 +-- 4 files changed, 67 insertions(+), 22 deletions(-) create mode 100644 sql/updates/world/2011_06_25_07_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_25_07_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_25_07_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..f714e984a1 --- /dev/null +++ b/sql/updates/world/2011_06_25_07_world_achievement_criteria_data.sql @@ -0,0 +1,6 @@ +DELETE FROM `disables` WHERE `entry`=7359 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7359 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(7359,11,0,0,'achievement_volunteer_work'); diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/ahnkahet.h b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/ahnkahet.h index a25093579b..e19054d2f4 100644 --- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/ahnkahet.h +++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/ahnkahet.h @@ -44,7 +44,6 @@ enum Data DATA_SPHERE2_EVENT, DATA_JEDOGA_TRIGGER_SWITCH, DATA_JEDOGA_RESET_INITIANDS, - DATA_INITIAND_KILLED, DATA_ALL_INITIAND_DEAD }; diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp index 68d1272750..2923359e0f 100644 --- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp @@ -63,6 +63,9 @@ const Position JedogaPosition[2] = {372.330994f, -705.278015f, -16.179716f, 5.427970f} }; +#define ACTION_INITIAND_KILLED 1 +#define DATA_VOLUNTEER_WORK 2 + class boss_jedoga_shadowseeker : public CreatureScript { public: @@ -89,7 +92,7 @@ public: bool bOnGround; bool bOpFerokFail; bool bCanDown; - + bool volunteerWork; bool bFirstTime; void Reset() @@ -104,6 +107,7 @@ public: bOpFerokFail = false; bOnGround = false; bCanDown = false; + volunteerWork = true; if (pInstance) { @@ -152,6 +156,20 @@ public: pInstance->SetData(DATA_JEDOGA_SHADOWSEEKER_EVENT, DONE); } + void DoAction(int32 const action) + { + if (action == ACTION_INITIAND_KILLED) + volunteerWork = false; + } + + uint32 GetData(uint32 type) + { + if (type == DATA_VOLUNTEER_WORK) + return volunteerWork ? 1 : 0; + + return 0; + } + void MoveInLineOfSight(Unit* who) { if (!pInstance || !who || (who->GetTypeId() == TYPEID_UNIT && who->GetEntry() == NPC_JEDOGA_CONTROLLER)) @@ -374,43 +392,53 @@ public: void JustDied(Unit* Killer) { - if (!Killer || !pInstance) return; + if (!Killer || !pInstance) + return; if (bWalking) { - Creature* boss = me->GetMap()->GetCreature(pInstance->GetData64(DATA_JEDOGA_SHADOWSEEKER)); - if (boss && !CAST_AI(boss_jedoga_shadowseeker::boss_jedoga_shadowseekerAI, boss->AI())->bOpFerok) CAST_AI(boss_jedoga_shadowseeker::boss_jedoga_shadowseekerAI, boss->AI())->bOpFerokFail = true; + if (Creature* boss = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_JEDOGA_SHADOWSEEKER))) + { + if (!CAST_AI(boss_jedoga_shadowseeker::boss_jedoga_shadowseekerAI, boss->AI())->bOpFerok) + CAST_AI(boss_jedoga_shadowseeker::boss_jedoga_shadowseekerAI, boss->AI())->bOpFerokFail = true; + + boss->AI()->DoAction(ACTION_INITIAND_KILLED); + } - if (Killer->GetTypeId() == TYPEID_PLAYER) pInstance->SetData(DATA_INITIAND_KILLED, 1); pInstance->SetData64(DATA_ADD_JEDOGA_OPFER, 0); bWalking = false; } - if (Killer->GetTypeId() == TYPEID_PLAYER) pInstance->SetData64(DATA_PL_JEDOGA_TARGET, Killer->GetGUID()); + if (Killer->GetTypeId() == TYPEID_PLAYER) + pInstance->SetData64(DATA_PL_JEDOGA_TARGET, Killer->GetGUID()); } void EnterCombat(Unit* who) { - if ((pInstance && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS) || !who) return; + if ((pInstance && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS) || !who) + return; } void AttackStart(Unit* victim) { - if ((pInstance && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS) || !victim) return; + if ((pInstance && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS) || !victim) + return; ScriptedAI::AttackStart(victim); } void MoveInLineOfSight(Unit* who) { - if ((pInstance && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS) || !who) return; + if ((pInstance && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS) || !who) + return; ScriptedAI::MoveInLineOfSight(who); } void MovementInform(uint32 uiType, uint32 uiPointId) { - if (uiType != POINT_MOTION_TYPE || !pInstance) return; + if (uiType != POINT_MOTION_TYPE || !pInstance) + return; switch(uiPointId) { @@ -569,9 +597,27 @@ public: } }; +class achievement_volunteer_work : public AchievementCriteriaScript +{ + public: + achievement_volunteer_work() : AchievementCriteriaScript("achievement_volunteer_work") + { + } + + bool OnCheck(Player* /*player*/, Unit* target) + { + if (Creature* Jedoga = target->ToCreature()) + if (Jedoga->AI()->GetData(DATA_VOLUNTEER_WORK)) + return true; + + return false; + } +}; + void AddSC_boss_jedoga_shadowseeker() { - new boss_jedoga_shadowseeker; - new mob_jedoga_initiand; - new npc_jedogas_aufseher_trigger; + new boss_jedoga_shadowseeker(); + new mob_jedoga_initiand(); + new npc_jedogas_aufseher_trigger(); + new achievement_volunteer_work(); } diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp index 55346cd819..b10a49b711 100644 --- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp @@ -59,9 +59,8 @@ public: uint32 m_auiEncounter[MAX_ENCOUNTER]; uint32 spheres[2]; - uint8 InitiandCnt, - switchtrigger, - initiandkilled; + uint8 InitiandCnt; + uint8 switchtrigger; std::string str_data; @@ -81,7 +80,6 @@ public: InitiandCnt = 0; switchtrigger = 0; - initiandkilled = 0; JedogaSacrifices = 0; JedogaTarget = 0; } @@ -200,8 +198,6 @@ public: cr->RemoveCorpse(); } } - if (!initiandkilled && instance->IsHeroic()) - DoCompleteAchievement(ACHIEV_VOLUNTEER_WORK); } break; case DATA_HERALD_VOLAZJ_EVENT: m_auiEncounter[3] = data; break; @@ -209,7 +205,6 @@ public: case DATA_SPHERE1_EVENT: spheres[0] = data; break; case DATA_SPHERE2_EVENT: spheres[1] = data; break; case DATA_JEDOGA_TRIGGER_SWITCH: switchtrigger = data; break; - case DATA_INITIAND_KILLED: initiandkilled = data; break; case DATA_JEDOGA_RESET_INITIANDS: for (std::set::const_iterator itr = InitiandGUIDs.begin(); itr != InitiandGUIDs.end(); ++itr) { @@ -245,7 +240,6 @@ public: } return 1; case DATA_JEDOGA_TRIGGER_SWITCH: return switchtrigger; - case DATA_INITIAND_KILLED: return initiandkilled; } return 0; } From b576be1b571430c9f6ff7364e099c9657bf3f384 Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 13:39:23 +0200 Subject: [PATCH 44/58] Scripts/Halls of Stone: Fixed typo in achievement name. Thanks qaywsx for notice --- .../world/2011_06_24_07_world_achievement_criteria_data.sql | 2 +- .../world/2011_06_25_08_world_achievement_criteria_data.sql | 1 + .../Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 sql/updates/world/2011_06_25_08_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql index e228625014..cb76cbb1d4 100644 --- a/sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql +++ b/sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql @@ -6,4 +6,4 @@ VALUES DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7590 AND `type`=11; INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) VALUES -(7590,11,0,0,'achievement_brann_sparklin_news'); +(7590,11,0,0,'achievement_brann_spankin_new'); diff --git a/sql/updates/world/2011_06_25_08_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_25_08_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..fd2567ed52 --- /dev/null +++ b/sql/updates/world/2011_06_25_08_world_achievement_criteria_data.sql @@ -0,0 +1 @@ +UPDATE `achievement_criteria_data` SET `ScriptName`='achievement_brann_spankin_new' WHERE `ScriptName`='achievement_brann_sparklin_news'; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp index 9d2f5647df..19bc5e9da7 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp @@ -735,10 +735,10 @@ public: }; -class achievement_brann_sparklin_news : public AchievementCriteriaScript +class achievement_brann_spankin_new : public AchievementCriteriaScript { public: - achievement_brann_sparklin_news() : AchievementCriteriaScript("achievement_brann_sparklin_news") + achievement_brann_spankin_new() : AchievementCriteriaScript("achievement_brann_spankin_new") { } @@ -756,5 +756,5 @@ void AddSC_halls_of_stone() { new npc_brann_hos(); new mob_tribuna_controller(); - new achievement_brann_sparklin_news(); + new achievement_brann_spankin_new(); } From 7bdc090681fc1fd064517a065acdb6fcdafa2da2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 25 Jun 2011 15:39:43 +0200 Subject: [PATCH 45/58] Core/GameObject: Removed useless typecast --- src/server/game/Entities/GameObject/GameObject.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 6634760fdf..95be55e595 100755 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -774,7 +774,7 @@ class GameObject : public WorldObject, public GridObject uint64 GetRotation() const { return m_rotation; } virtual uint32 GetScriptId() const { return GetGOInfo()->ScriptId; } - GameObjectAI* AI() const { return (GameObjectAI*)m_AI; } + GameObjectAI* AI() const { return m_AI; } std::string GetAIName() const; protected: From 88e53f978ec7b2daf648811e4bb890bf52e7124d Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 15:47:58 +0200 Subject: [PATCH 46/58] Scripts/Obsidian Sanctum: Properly fixed achievements Twilight Assist & Twilight Duo & Twilight Zone --- ..._25_09_world_achievement_criteria_data.sql | 11 ++ .../ObsidianSanctum/boss_sartharion.cpp | 106 ++++++++++++------ 2 files changed, 85 insertions(+), 32 deletions(-) create mode 100644 sql/updates/world/2011_06_25_09_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_25_09_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_25_09_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..6a2681b5e7 --- /dev/null +++ b/sql/updates/world/2011_06_25_09_world_achievement_criteria_data.sql @@ -0,0 +1,11 @@ +DELETE FROM `disables` WHERE `entry` IN (7328,7329,7330,7331,7332,7333) AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (7328,7329,7330,7331,7332,7333) AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(7328,11,0,0,'achievement_twilight_assist'), +(7329,11,0,0,'achievement_twilight_duo'), +(7330,11,0,0,'achievement_twilight_zone'), +(7331,11,0,0,'achievement_twilight_assist'), +(7332,11,0,0,'achievement_twilight_duo'), +(7333,11,0,0,'achievement_twilight_zone'); diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp index bc844698fd..aaf2dad111 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp @@ -122,14 +122,6 @@ enum eEnums //using these custom points for dragons start and end POINT_ID_INIT = 100, POINT_ID_LAND = 200, - - //Achievements - ACHIEV_TWILIGHT_ASSIST = 2049, - H_ACHIEV_TWILIGHT_ASSIST = 2052, - ACHIEV_TWILIGHT_DUO = 2050, - H_ACHIEV_TWILIGHT_DUO = 2053, - ACHIEV_TWILIGHT_ZONE = 2051, - H_ACHIEV_TWILIGHT_ZONE = 2054 }; #define DATA_CAN_LOOT 0 @@ -213,6 +205,8 @@ Locations TwilightEggsSarth[] = {3257.54f, 502.285f , 58.2077f} }; +#define TWILIGHT_ACHIEVEMENTS 1 + /*###### ## Boss Sartharion ######*/ @@ -256,7 +250,7 @@ public: bool m_bHasCalledShadron; bool m_bHasCalledVesperon; - uint32 achievProgress; + uint8 drakeCount; void Reset() { @@ -285,7 +279,7 @@ public: me->SetHomePosition(3246.57f, 551.263f, 58.6164f, 4.66003f); - achievProgress = 0; + drakeCount = 0; // Drakes respawning system if (pInstance) @@ -384,20 +378,6 @@ public: if (pVesperon && pVesperon->isAlive()) pVesperon->DisappearAndDie(); - if (achievProgress == 1) - pInstance->DoCompleteAchievement(RAID_MODE(ACHIEV_TWILIGHT_ASSIST, H_ACHIEV_TWILIGHT_ASSIST)); - else if (achievProgress == 2) - { - pInstance->DoCompleteAchievement(RAID_MODE(ACHIEV_TWILIGHT_ASSIST, H_ACHIEV_TWILIGHT_ASSIST)); - pInstance->DoCompleteAchievement(RAID_MODE(ACHIEV_TWILIGHT_DUO, H_ACHIEV_TWILIGHT_DUO)); - } - else if (achievProgress == 3) - { - pInstance->DoCompleteAchievement(RAID_MODE(ACHIEV_TWILIGHT_ASSIST, H_ACHIEV_TWILIGHT_ASSIST)); - pInstance->DoCompleteAchievement(RAID_MODE(ACHIEV_TWILIGHT_DUO, H_ACHIEV_TWILIGHT_DUO)); - pInstance->DoCompleteAchievement(RAID_MODE(ACHIEV_TWILIGHT_ZONE, H_ACHIEV_TWILIGHT_ZONE)); - } - pInstance->SetData(TYPE_SARTHARION_EVENT, DONE); } } @@ -419,13 +399,21 @@ public: me->AddLootMode(LOOT_MODE_HARD_MODE_1); // Add 1st Drake loot mode } + uint32 GetData(uint32 type) + { + if (type == TWILIGHT_ACHIEVEMENTS) + return drakeCount; + + return 0; + } + void FetchDragons() { - if(!pInstance) + if (!pInstance) return; me->ResetLootMode(); - achievProgress = 0; + drakeCount = 0; Creature* pFetchTene = Unit::GetCreature(*me, pInstance->GetData64(DATA_TENEBRON)); Creature* pFetchShad = Unit::GetCreature(*me, pInstance->GetData64(DATA_SHADRON)); @@ -437,10 +425,10 @@ public: if (pFetchTene && pFetchTene->isAlive() && !pFetchTene->getVictim()) { bCanUseWill = true; - if(!pFetchTene->isInCombat()) + if (!pFetchTene->isInCombat()) { AddDrakeLootMode(); - achievProgress++; + ++drakeCount; } pFetchTene->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aTene[0].m_fX, m_aTene[0].m_fY, m_aTene[0].m_fZ); @@ -451,10 +439,10 @@ public: if (pFetchShad && pFetchShad->isAlive() && !pFetchShad->getVictim()) { bCanUseWill = true; - if(!pFetchShad->isInCombat()) + if (!pFetchShad->isInCombat()) { AddDrakeLootMode(); - achievProgress++; + ++drakeCount; } pFetchShad->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aShad[0].m_fX, m_aShad[0].m_fY, m_aShad[0].m_fZ); @@ -465,10 +453,10 @@ public: if (pFetchVesp && pFetchVesp->isAlive() && !pFetchVesp->getVictim()) { bCanUseWill = true; - if(!pFetchVesp->isInCombat()) + if (!pFetchVesp->isInCombat()) { AddDrakeLootMode(); - achievProgress++; + ++drakeCount; } pFetchVesp->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aVesp[0].m_fX, m_aVesp[0].m_fY, m_aVesp[0].m_fZ); @@ -1710,6 +1698,57 @@ public: }; +class achievement_twilight_assist : public AchievementCriteriaScript +{ + public: + achievement_twilight_assist() : AchievementCriteriaScript("achievement_twilight_assist") + { + } + + bool OnCheck(Player* player, Unit* target) + { + if (Creature* Sartharion = target->ToCreature()) + if (Sartharion->AI()->GetData(TWILIGHT_ACHIEVEMENTS) >= 1) + return true; + + return false; + } +}; + +class achievement_twilight_duo : public AchievementCriteriaScript +{ + public: + achievement_twilight_duo() : AchievementCriteriaScript("achievement_twilight_duo") + { + } + + bool OnCheck(Player* player, Unit* target) + { + if (Creature* Sartharion = target->ToCreature()) + if (Sartharion->AI()->GetData(TWILIGHT_ACHIEVEMENTS) >= 2) + return true; + + return false; + } +}; + +class achievement_twilight_zone : public AchievementCriteriaScript +{ + public: + achievement_twilight_zone() : AchievementCriteriaScript("achievement_twilight_zone") + { + } + + bool OnCheck(Player* player, Unit* target) + { + if (Creature* Sartharion = target->ToCreature()) + if (Sartharion->AI()->GetData(TWILIGHT_ACHIEVEMENTS) == 3) + return true; + + return false; + } +}; + void AddSC_boss_sartharion() { new boss_sartharion(); @@ -1722,4 +1761,7 @@ void AddSC_boss_sartharion() new npc_flame_tsunami(); new npc_twilight_fissure(); new mob_twilight_whelp(); + new achievement_twilight_assist(); + new achievement_twilight_duo(); + new achievement_twilight_zone(); } From 6fd2bc4f288817c128f9bf09bfed9fc42eb26bf2 Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 16:40:10 +0200 Subject: [PATCH 47/58] Scripts/Nexus: Properly fixed achievement Intense Cold --- ..._25_10_world_achievement_criteria_data.sql | 11 ++ .../Nexus/Nexus/boss_keristrasza.cpp | 104 ++++++++++++------ 2 files changed, 80 insertions(+), 35 deletions(-) create mode 100644 sql/updates/world/2011_06_25_10_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_25_10_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_25_10_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..1fddea0ad5 --- /dev/null +++ b/sql/updates/world/2011_06_25_10_world_achievement_criteria_data.sql @@ -0,0 +1,11 @@ +DELETE FROM `disables` WHERE `entry`=7315 AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7315 AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(7315,11,0,0,'achievement_intense_cold'); + +DELETE FROM `spell_script_names` WHERE `spell_id`=48095; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) +VALUES +(48095,'spell_intense_cold'); diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp index 7a5261a054..7a7afb229e 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp @@ -32,6 +32,7 @@ enum Spells SPELL_INTENSE_COLD = 48094, SPELL_INTENSE_COLD_TRIGGERED = 48095 }; + enum Yells { //Yell @@ -41,13 +42,11 @@ enum Yells SAY_DEATH = -1576043, SAY_CRYSTAL_NOVA = -1576044 }; -enum Achievements -{ - ACHIEV_INTENSE_COLD = 2036 -}; + enum Misc { - DATA_CONTAINMENT_SPHERES = 3 + DATA_INTENSE_COLD = 1, + DATA_CONTAINMENT_SPHERES = 3, }; class boss_keristrasza : public CreatureScript @@ -69,16 +68,14 @@ public: InstanceScript* pInstance; + std::list intenseColdList; + uint64 auiContainmentSphereGUIDs[DATA_CONTAINMENT_SPHERES]; uint32 uiCrystalfireBreathTimer; uint32 uiCrystalChainsCrystalizeTimer; uint32 uiTailSweepTimer; + bool intenseCold; bool bEnrage; - uint64 auiContainmentSphereGUIDs[DATA_CONTAINMENT_SPHERES]; - - uint32 uiCheckIntenseColdTimer; - bool bMoreThanTwoIntenseCold; // needed for achievement: Intense Cold(2036) - void Reset() { uiCrystalfireBreathTimer = 14*IN_MILLISECONDS; @@ -86,8 +83,8 @@ public: uiTailSweepTimer = 5*IN_MILLISECONDS; bEnrage = false; - uiCheckIntenseColdTimer = 2*IN_MILLISECONDS; - bMoreThanTwoIntenseCold = false; + intenseCold = true; + intenseColdList.clear(); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED); @@ -111,11 +108,7 @@ public: DoScriptText(SAY_DEATH, me); if (pInstance) - { - if (IsHeroic() && !bMoreThanTwoIntenseCold) - pInstance->DoCompleteAchievement(ACHIEV_INTENSE_COLD); pInstance->SetData(DATA_KERISTRASZA_EVENT, DONE); - } } void KilledUnit(Unit* /*victim*/) @@ -164,30 +157,17 @@ public: } } + void SetData(uint32 id, uint32 data) + { + if (id == DATA_INTENSE_COLD) + intenseColdList.push_back(data); + } + void UpdateAI(const uint32 diff) { if (!UpdateVictim()) return; - if (uiCheckIntenseColdTimer < diff && !bMoreThanTwoIntenseCold) - { - std::list ThreatList = me->getThreatManager().getThreatList(); - for (std::list::const_iterator itr = ThreatList.begin(); itr != ThreatList.end(); ++itr) - { - Unit *pTarget = Unit::GetUnit(*me, (*itr)->getUnitGuid()); - if (!pTarget || pTarget->GetTypeId() != TYPEID_PLAYER) - continue; - - Aura *AuraIntenseCold = pTarget->GetAura(SPELL_INTENSE_COLD_TRIGGERED); - if (AuraIntenseCold && AuraIntenseCold->GetStackAmount() > 2) - { - bMoreThanTwoIntenseCold = true; - break; - } - } - uiCheckIntenseColdTimer = 2*IN_MILLISECONDS; - } else uiCheckIntenseColdTimer -= diff; - if (!bEnrage && HealthBelowPct(25)) { DoScriptText(SAY_ENRAGE, me); @@ -246,8 +226,62 @@ public: }; +class spell_intense_cold : public SpellScriptLoader +{ + public: + spell_intense_cold() : SpellScriptLoader("spell_intense_cold") { } + + class spell_intense_cold_AuraScript : public AuraScript + { + PrepareAuraScript(spell_intense_cold_AuraScript); + + void HandlePeriodicTick(AuraEffect const* aurEff) + { + Unit* caster = GetCaster(); + if (!caster) + return; + + if (aurEff->GetBase()->GetStackAmount() >= 2) + caster->ToCreature()->AI()->SetData(DATA_INTENSE_COLD, GetTarget()->GetGUID()); + } + + void Register() + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_intense_cold_AuraScript::HandlePeriodicTick, EFFECT_1, SPELL_AURA_PERIODIC_DAMAGE); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_intense_cold_AuraScript(); + } +}; + +class achievement_intense_cold : public AchievementCriteriaScript +{ + public: + achievement_intense_cold() : AchievementCriteriaScript("achievement_intense_cold") + { + } + + bool OnCheck(Player* player, Unit* target) + { + std::list intenseColdList = CAST_AI(boss_keristrasza::boss_keristraszaAI, target->ToCreature()->AI())->intenseColdList; + if (intenseColdList.empty()) + return true; + + for (std::list::iterator itr = intenseColdList.begin(); itr != intenseColdList.end(); ++itr) + if (player->GetGUID() != *itr) + return true; + + return false; + } +}; + void AddSC_boss_keristrasza() { new boss_keristrasza(); new containment_sphere(); + new achievement_intense_cold(); + new spell_intense_cold(); } From 365c74cf8e281f891143bf1e18f29c1f89822605 Mon Sep 17 00:00:00 2001 From: Shocker Date: Sat, 25 Jun 2011 17:44:25 +0300 Subject: [PATCH 48/58] Scripts/SQL: Update SQL after recent pull --- sql/scripts/world_scripts_full.sql | 2 +- sql/updates/world/2011_06_25_11_world_creature_template.sql | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 sql/updates/world/2011_06_25_11_world_creature_template.sql diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index ace8b335a9..9cf49eb561 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -1544,7 +1544,7 @@ UPDATE `creature_template` SET `ScriptName`='boss_flame_leviathan_defense_turret UPDATE `creature_template` SET `ScriptName`='boss_flame_leviathan_overload_device' WHERE `entry`=33143; UPDATE `creature_template` SET `ScriptName`='boss_flame_leviathan_defense_cannon' WHERE `entry`=33139; UPDATE `creature_template` SET `ScriptName`='npc_colossus' WHERE `entry`=33237; -UPDATE `creature_template` SET `ScriptName`='spell_pool_of_tar' WHERE `entry`=33090; +UPDATE `creature_template` SET `ScriptName`='npc_pool_of_tar' WHERE `entry`=33090; UPDATE `creature_template` SET `ScriptName`='boss_ignis' WHERE `entry`=33118; UPDATE `creature_template` SET `ScriptName`='npc_iron_construct' WHERE `entry`=33121; UPDATE `creature_template` SET `ScriptName`='npc_scorch_ground' WHERE `entry`=33221; diff --git a/sql/updates/world/2011_06_25_11_world_creature_template.sql b/sql/updates/world/2011_06_25_11_world_creature_template.sql new file mode 100644 index 0000000000..a0a41fb74c --- /dev/null +++ b/sql/updates/world/2011_06_25_11_world_creature_template.sql @@ -0,0 +1 @@ +UPDATE `creature_template` SET `ScriptName`='npc_pool_of_tar' WHERE `entry`=33090; From 66362cbc1de79ebbfbd99415d18ef4609cf53f36 Mon Sep 17 00:00:00 2001 From: Shocker Date: Sat, 25 Jun 2011 18:16:45 +0300 Subject: [PATCH 49/58] Core/Misc: Typo fix in trinity_string Thanks to sebid, closes #2100 --- sql/base/world_database.sql | 2 +- sql/updates/world/2011_06_25_11_world_trinity_string.sql | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 sql/updates/world/2011_06_25_11_world_trinity_string.sql diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index 436102d989..dc601b4d26 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -27582,7 +27582,7 @@ INSERT INTO `trinity_string` (`entry`,`content_default`,`content_loc1`,`content_ (1131, 'The following characters match your query:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (1132, 'Currently Banned Characters:', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (1133, '| Character | BanDate | UnbanDate | Banned By | Ban Reason |', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), -(1200, 'You try to view cinemitic %u but it doesn''t exist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1200, 'You try to view cinematic %u but it doesn''t exist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (1201, 'You try to view movie %u but it doesn''t exist.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (1205, 'The battle will begin in two minutes.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (1206, 'The battle will begin in 1 minute.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), diff --git a/sql/updates/world/2011_06_25_11_world_trinity_string.sql b/sql/updates/world/2011_06_25_11_world_trinity_string.sql new file mode 100644 index 0000000000..cb4cbbe4a9 --- /dev/null +++ b/sql/updates/world/2011_06_25_11_world_trinity_string.sql @@ -0,0 +1 @@ +UPDATE `trinity_string` SET `content_default`='You try to view cinematic %u but it doesn\'t exist.' WHERE entry='1200'; From d88e25d476ae36267a04a3dd9529187bc7be3e3f Mon Sep 17 00:00:00 2001 From: Shocker Date: Sat, 25 Jun 2011 18:28:13 +0300 Subject: [PATCH 50/58] Core/Spells: Fix Curse of Mending Thanks to joschiwald, closes #2118 --- src/server/game/Entities/Unit/Unit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c08fb51d37..67c5db70d1 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8802,7 +8802,7 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig } // Cast positive spell on enemy target case 7099: // Curse of Mending - case 39647: // Curse of Mending + case 39703: // Curse of Mending case 29494: // Temptation case 20233: // Improved Lay on Hands (cast on target) { From 956c5f0e5e6b580f998383e915a62bcbb422d3f9 Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 17:51:01 +0200 Subject: [PATCH 51/58] DB/Conditions: Correct conditions for Powerful Healing Ward and fix naming of SQL file in recent commit --- ...trinity_string.sql => 2011_06_25_12_world_trinity_string.sql} | 0 .../world/2011_06_25_13_world_achievement_criteria_data.sql | 1 + 2 files changed, 1 insertion(+) rename sql/updates/world/{2011_06_25_11_world_trinity_string.sql => 2011_06_25_12_world_trinity_string.sql} (100%) create mode 100644 sql/updates/world/2011_06_25_13_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_25_11_world_trinity_string.sql b/sql/updates/world/2011_06_25_12_world_trinity_string.sql similarity index 100% rename from sql/updates/world/2011_06_25_11_world_trinity_string.sql rename to sql/updates/world/2011_06_25_12_world_trinity_string.sql diff --git a/sql/updates/world/2011_06_25_13_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_25_13_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..a7a9de5cbd --- /dev/null +++ b/sql/updates/world/2011_06_25_13_world_achievement_criteria_data.sql @@ -0,0 +1 @@ +DELETE FROM `conditions` WHERE `SourceEntry`=24311 AND `ConditionValue2` IN (14825,14986,14826,14883); \ No newline at end of file From af023a40f745c48dc7e2e0ff8e45d2e79cff8717 Mon Sep 17 00:00:00 2001 From: tobmaps Date: Sat, 25 Jun 2011 23:23:14 +0700 Subject: [PATCH 52/58] Core/Spells: Fix Shaman T10 Elemental 4P Bonus Closes #1501 --- sql/base/world_database.sql | 1 + .../2011_06_25_14_world_spell_proc_event.sql | 3 +++ src/server/game/Entities/Unit/Unit.cpp | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 sql/updates/world/2011_06_25_14_world_spell_proc_event.sql diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index dc601b4d26..97c48dc705 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -19401,6 +19401,7 @@ INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFam ( 70803, 0x00, 8, 0x003E0000, 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Item - Rogue T10 4P Bonus ( 70805, 0x00, 8, 0x00000000, 0x00020000, 0x00000000, 0x00004000, 0x00000000, 0, 0, 0), -- Item - Rogue T10 2P Bonus ( 70807, 0x00, 11, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0x00000000, 0, 0, 0), -- Item - Shaman T10 Restoration 2P Bonus +( 70817, 0x00, 11, 0x00000000, 0x00001000, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0), -- Item - Shaman T10 Elemental 4P Bonus ( 70830, 0x00, 11, 0x00000000, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Item - Shaman T10 Enhancement 2P Bonus ( 70841, 0x00, 5, 0x00000004, 0x00000100, 0x00000000, 0x00040000, 0x00000000, 0, 0, 0), -- Item - Warlock T10 4P Bonus ( 70844, 0x00, 4, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Item - Warrior T10 Protection 4P Bonus diff --git a/sql/updates/world/2011_06_25_14_world_spell_proc_event.sql b/sql/updates/world/2011_06_25_14_world_spell_proc_event.sql new file mode 100644 index 0000000000..b78a9c087a --- /dev/null +++ b/sql/updates/world/2011_06_25_14_world_spell_proc_event.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_proc_event` WHERE `entry` = 70817; +INSERT INTO `spell_proc_event` VALUES +(70817,0,11,0,0x1000,0,0x10000,0,0,0,0); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 67c5db70d1..fd8be29c3e 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -7252,6 +7252,26 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger } return false; } + // Item - Shaman T10 Elemental 4P Bonus + case 70817: + { + // try to find spell Flame Shock on the target + if (AuraEffect const* aurEff = target->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_SHAMAN, 0x10000000, 0x0, 0x0, GetGUID())) + { + Aura* flameShock = aurEff->GetBase(); + int32 maxDuration = flameShock->GetMaxDuration(); + int32 newDuration = flameShock->GetDuration() + 2 * aurEff->GetAmplitude(); + + flameShock->SetDuration(newDuration); + // is it blizzlike to change max duration for FS? + if (newDuration > maxDuration) + flameShock->SetMaxDuration(newDuration); + + return true; + } + // if not found Flame Shock + return false; + } case 63280: // Glyph of Totem of Wrath { if (procSpell->SpellIconID != 2019) From 0cf40b897c6ed20cfe38bd607f1109ed6e9641c7 Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 19:11:56 +0200 Subject: [PATCH 53/58] Scripts/Achievements: Fixed a crash in Heigan's achievement script & more possible crashes & small improvements to handling datas for achievements --- .../boss_krikthir_the_gatewatcher.cpp | 3 +++ .../AzjolNerub/ahnkahet/boss_elder_nadox.cpp | 9 +++----- .../ahnkahet/boss_jedoga_shadowseeker.cpp | 3 +++ .../ObsidianSanctum/boss_sartharion.cpp | 9 ++++++++ .../Northrend/DraktharonKeep/boss_dred.cpp | 3 +++ .../Northrend/DraktharonKeep/boss_novos.cpp | 3 +++ .../DraktharonKeep/boss_trollgore.cpp | 3 +++ .../ForgeOfSouls/boss_devourer_of_souls.cpp | 3 +++ .../Northrend/Gundrak/boss_gal_darah.cpp | 3 +++ .../Northrend/Gundrak/boss_moorabi.cpp | 3 +++ .../Northrend/Naxxramas/boss_heigan.cpp | 3 +++ .../Northrend/Nexus/Nexus/boss_anomalus.cpp | 3 +++ .../Nexus/Nexus/boss_magus_telestra.cpp | 3 +++ .../Ulduar/HallsOfStone/boss_sjonnir.cpp | 3 +++ .../Ulduar/HallsOfStone/halls_of_stone.cpp | 3 +++ .../Northrend/Ulduar/ulduar/boss_auriaya.cpp | 6 +++++ .../Northrend/Ulduar/ulduar/boss_freya.cpp | 12 ++++++++++ .../Ulduar/ulduar/boss_general_vezax.cpp | 23 +++++++------------ .../UtgardePinnacle/boss_ymiron.cpp | 11 ++++----- .../Northrend/VioletHold/boss_ichoron.cpp | 3 +++ .../Northrend/VioletHold/boss_zuramat.cpp | 11 ++++----- 21 files changed, 88 insertions(+), 35 deletions(-) diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp index 0affcc5960..39aefd4528 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp @@ -539,6 +539,9 @@ class achievement_watch_him_die : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + InstanceScript* instance = target->GetInstanceScript(); Creature* Watcher[3]; if (!instance) diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_elder_nadox.cpp index 25164e08f6..1513bebead 100644 --- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_elder_nadox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_elder_nadox.cpp @@ -127,12 +127,6 @@ class boss_elder_nadox : public CreatureScript return 0; } - void SetData(uint32 id, uint32 data) - { - if (id == DATA_RESPECT_YOUR_ELDERS) - respectYourElders = data ? true : false; - } - void UpdateAI(uint32 const diff) { if (!UpdateVictim()) @@ -311,6 +305,9 @@ class achievement_respect_your_elders : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Nadox = target->ToCreature()) if (Nadox->AI()->GetData(DATA_RESPECT_YOUR_ELDERS)) return true; diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp index 2923359e0f..a3fd20c830 100644 --- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp @@ -606,6 +606,9 @@ class achievement_volunteer_work : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Jedoga = target->ToCreature()) if (Jedoga->AI()->GetData(DATA_VOLUNTEER_WORK)) return true; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp index aaf2dad111..847b5ddb9c 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp @@ -1707,6 +1707,9 @@ class achievement_twilight_assist : public AchievementCriteriaScript bool OnCheck(Player* player, Unit* target) { + if (!target) + return false; + if (Creature* Sartharion = target->ToCreature()) if (Sartharion->AI()->GetData(TWILIGHT_ACHIEVEMENTS) >= 1) return true; @@ -1724,6 +1727,9 @@ class achievement_twilight_duo : public AchievementCriteriaScript bool OnCheck(Player* player, Unit* target) { + if (!target) + return false; + if (Creature* Sartharion = target->ToCreature()) if (Sartharion->AI()->GetData(TWILIGHT_ACHIEVEMENTS) >= 2) return true; @@ -1741,6 +1747,9 @@ class achievement_twilight_zone : public AchievementCriteriaScript bool OnCheck(Player* player, Unit* target) { + if (!target) + return false; + if (Creature* Sartharion = target->ToCreature()) if (Sartharion->AI()->GetData(TWILIGHT_ACHIEVEMENTS) == 3) return true; diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp index 2274b30b29..3dcc620c87 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp @@ -283,6 +283,9 @@ class achievement_king_dred : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Dred = target->ToCreature()) if (Dred->AI()->GetData(DATA_KING_DRED) >= 6) return true; diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp index 4441c95a68..a92ed4abdb 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp @@ -352,6 +352,9 @@ class achievement_oh_novos : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Novos = target->ToCreature()) if (Novos->AI()->GetData(DATA_OH_NOVOS)) return true; diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp index 641c3bed19..745c092b67 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp @@ -204,6 +204,9 @@ class achievement_consumption_junction : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Trollgore = target->ToCreature()) if (Trollgore->AI()->GetData(DATA_CONSUMPTION_JUNCTION)) return true; diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp index bcaf643136..c7f54e2719 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp @@ -375,6 +375,9 @@ class achievement_three_faced : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Devourer = target->ToCreature()) if (Devourer->AI()->GetData(DATA_THREE_FACED)) return true; diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp index 6adf8314d5..96f7fb200a 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp @@ -293,6 +293,9 @@ class achievement_share_the_love : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* GalDarah = target->ToCreature()) if (GalDarah->AI()->GetData(DATA_SHARE_THE_LOVE) >= 5) return true; diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp index 71cd150e2e..660cf571c6 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp @@ -179,6 +179,9 @@ class achievement_less_rabi : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Moorabi = target->ToCreature()) if (Moorabi->AI()->GetData(DATA_LESS_RABI)) return true; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp index b11e5eb82f..2fc5a8499c 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp @@ -216,6 +216,9 @@ class achievement_safety_dance : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Heigan = target->ToCreature()) if (Heigan->AI()->GetData(DATA_SAFETY_DANCE)) return true; diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp index eece702f98..98f821eb15 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp @@ -263,6 +263,9 @@ class achievement_chaos_theory : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Anomalus = target->ToCreature()) if (Anomalus->AI()->GetData(DATA_CHAOS_THEORY)) return true; diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp index b93090aac3..3440ba0a02 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp @@ -346,6 +346,9 @@ class achievement_split_personality : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Telestra = target->ToCreature()) if (Telestra->AI()->GetData(DATA_SPLIT_PERSONALITY) == 2) return true; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp index 6de54d357c..808f0d6a8e 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp @@ -327,6 +327,9 @@ class achievement_abuse_the_ooze : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Sjonnir = target->ToCreature()) if (Sjonnir->AI()->GetData(DATA_ABUSE_THE_OOZE) >= 5) return true; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp index 19bc5e9da7..2af26df382 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp @@ -744,6 +744,9 @@ class achievement_brann_spankin_new : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Brann = target->ToCreature()) if (Brann->AI()->GetData(DATA_BRANN_SPARKLIN_NEWS)) return true; diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp index 051fd1ad5f..0684e8a4fa 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp @@ -544,6 +544,9 @@ class achievement_nine_lives : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Auriaya = target->ToCreature()) if (Auriaya->AI()->GetData(DATA_NINE_LIVES)) return true; @@ -561,6 +564,9 @@ class achievement_crazy_cat_lady : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Auriaya = target->ToCreature()) if (Auriaya->AI()->GetData(DATA_CRAZY_CAT_LADY)) return true; diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp index bcd22a5c24..b3dea49203 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp @@ -1620,6 +1620,9 @@ class achievement_knock_on_wood : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Freya = target->ToCreature()) if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) >= 1) return true; @@ -1637,6 +1640,9 @@ class achievement_knock_knock_on_wood : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Freya = target->ToCreature()) if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) >= 2) return true; @@ -1654,6 +1660,9 @@ class achievement_knock_knock_knock_on_wood : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Freya = target->ToCreature()) if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) == 3) return true; @@ -1671,6 +1680,9 @@ class achievement_getting_back_to_nature : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Freya = target->ToCreature()) if (Freya->AI()->GetData(DATA_GETTING_BACK_TO_NATURE) >= 25) return true; diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp index cbb4550a3e..f45b0815ab 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp @@ -203,7 +203,7 @@ class boss_general_vezax : public CreatureScript void SpellHitTarget(Unit* who, SpellEntry const* spell) { if (who && who->GetTypeId() == TYPEID_PLAYER && spell->Id == SPELL_SHADOW_CRASH_HIT) - SetData(DATA_SHADOWDODGER, 0); + shadowDodger = false; } void KilledUnit(Unit* /*who*/) @@ -245,25 +245,12 @@ class boss_general_vezax : public CreatureScript return 0; } - void SetData(uint32 id, uint32 data) - { - switch (id) - { - case DATA_SHADOWDODGER: - shadowDodger = data ? true : false; - break; - case DATA_SMELL_SARONITE: - smellSaronite = data ? true : false; - break; - } - } - void DoAction(int32 const action) { switch (action) { case ACTION_VAPORS_DIE: - SetData(DATA_SMELL_SARONITE, 0); + smellSaronite = false; break; case ACTION_ANIMUS_DIE: me->RemoveAurasDueToSpell(SPELL_SARONITE_BARRIER); @@ -487,6 +474,9 @@ class achievement_shadowdodger : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Vezax = target->ToCreature()) if (Vezax->AI()->GetData(DATA_SHADOWDODGER)) return true; @@ -504,6 +494,9 @@ class achievement_smell_saronite : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Vezax = target->ToCreature()) if (Vezax->AI()->GetData(DATA_SMELL_SARONITE)) return true; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp index 1fb24699b6..7bd659400b 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp @@ -194,13 +194,7 @@ public: void SpellHitTarget(Unit* who, SpellEntry const* spell) { if (who && who->GetTypeId() == TYPEID_PLAYER && spell->Id == 59302) - SetData(DATA_KINGS_BANE, 0); - } - - void SetData(uint32 id, uint32 data) - { - if (id == DATA_KINGS_BANE) - kingsBane = data ? true : false; + kingsBane = false; } uint32 GetData(uint32 type) @@ -406,6 +400,9 @@ class achievement_kings_bane : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Ymiron = target->ToCreature()) if (Ymiron->AI()->GetData(DATA_KINGS_BANE)) return true; diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index db85422942..1e3914ab40 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -404,6 +404,9 @@ class achievement_dehydration : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Ichoron = target->ToCreature()) if (Ichoron->AI()->GetData(DATA_DEHYDRATION)) return true; diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index af7321b4dd..16f4931678 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -154,13 +154,7 @@ public: void SummonedCreatureDies(Creature* summoned, Unit* /*who*/) { if (summoned->GetEntry() == CREATURE_VOID_SENTRY) - SetData(DATA_VOID_DANCE, 0); - } - - void SetData(uint32 id, uint32 data) - { - if (id == DATA_VOID_DANCE) - voidDance = data ? true : false; + voidDance = false; } uint32 GetData(uint32 type) @@ -217,6 +211,9 @@ class achievement_void_dance : public AchievementCriteriaScript bool OnCheck(Player* /*player*/, Unit* target) { + if (!target) + return false; + if (Creature* Zuramat = target->ToCreature()) if (Zuramat->AI()->GetData(DATA_VOID_DANCE)) return true; From 0b1fffcc700462d1a6c829ba8e08361c25b5a698 Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 19:13:09 +0200 Subject: [PATCH 54/58] Scripts/Ulduar: Properly fixed Orbital Bombardment & Orbital Devastation & Nuked From Orbit & Orbit-uary --- ..._25_15_world_achievement_criteria_data.sql | 13 +++ .../Ulduar/ulduar/boss_flame_leviathan.cpp | 109 +++++++++++++----- 2 files changed, 93 insertions(+), 29 deletions(-) create mode 100644 sql/updates/world/2011_06_25_15_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2011_06_25_15_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_25_15_world_achievement_criteria_data.sql new file mode 100644 index 0000000000..244d572253 --- /dev/null +++ b/sql/updates/world/2011_06_25_15_world_achievement_criteria_data.sql @@ -0,0 +1,13 @@ +DELETE FROM `disables` WHERE `entry` IN (10056,10057,10058,10059,10060,10061,10218,10219) AND `sourceType`=4; + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10056,10057,10058,10059,10060,10061,10218,10219) AND `type`=11; +INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) +VALUES +(10056,11,0,0,'achievement_orbital_bombardment'), +(10057,11,0,0,'achievement_orbital_devastation'), +(10058,11,0,0,'achievement_nuked_from_orbit'), +(10059,11,0,0,'achievement_orbital_bombardment'), +(10060,11,0,0,'achievement_orbital_devastation'), +(10061,11,0,0,'achievement_nuked_from_orbit'), +(10218,11,0,0,'achievement_orbit_uary'), +(10219,11,0,0,'achievement_orbit_uary'); diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp index 634f03bb03..209e3ce2ec 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp @@ -158,20 +158,6 @@ enum Yells SAY_OVERLOAD_3 = -1603075, }; -enum AchievementData -{ - ACHIEV_10_NUKED_FROM_ORBIT = 2915, - ACHIEV_25_NUKED_FROM_ORBIT = 2917, - ACHIEV_10_ORBITAL_BOMBARDMENT = 2913, - ACHIEV_25_ORBITAL_BOMBARDMENT = 2918, - ACHIEV_10_ORBITAL_DEVASTATION = 2914, - ACHIEV_25_ORBITAL_DEVASTATION = 2916, - ACHIEV_10_ORBIT_UARY = 3056, - ACHIEV_25_ORBIT_UARY = 3057, - ACHIEV_10_SIEGE_OF_ULDUAR = 2886, - ACHIEV_25_SIEGE_OF_ULDUAR = 2887, -}; - enum actions { ACTION_TOWER_OF_STORM_DESTROYED = 1, @@ -212,6 +198,8 @@ Position const PosDemolisher[5] = {-798.01f, -227.24f, 429.84f, 1.446f}, }; +#define DATA_ORBIT_ACHIEVEMENTS 1 + class boss_flame_leviathan : public CreatureScript { public: @@ -321,21 +309,6 @@ class boss_flame_leviathan : public CreatureScript { _JustDied(); DoScriptText(SAY_DEATH, me); - - if (ActiveTowers) - { - switch (ActiveTowersCount) - { - case 4: - instance->DoCompleteAchievement(RAID_MODE(ACHIEV_10_ORBIT_UARY, ACHIEV_25_ORBIT_UARY)); - case 3: - instance->DoCompleteAchievement(RAID_MODE(ACHIEV_10_NUKED_FROM_ORBIT, ACHIEV_25_NUKED_FROM_ORBIT)); - case 2: - instance->DoCompleteAchievement(RAID_MODE(ACHIEV_10_ORBITAL_DEVASTATION, ACHIEV_25_ORBITAL_DEVASTATION)); - case 1: - instance->DoCompleteAchievement(RAID_MODE(ACHIEV_10_ORBITAL_BOMBARDMENT, ACHIEV_25_ORBITAL_BOMBARDMENT)); - } - } } void SpellHit(Unit* /*caster*/, SpellEntry const* spell) @@ -358,6 +331,8 @@ class boss_flame_leviathan : public CreatureScript return Shutout ? 1 : 0; case DATA_UNBROKEN: return Unbroken ? 1 : 0; + case DATA_ORBIT_ACHIEVEMENTS: + return ActiveTowersCount; default: break; } @@ -1411,6 +1386,78 @@ class achievement_unbroken : public AchievementCriteriaScript } }; +class achievement_orbital_bombardment : public AchievementCriteriaScript +{ + public: + achievement_orbital_bombardment() : AchievementCriteriaScript("achievement_orbital_bombardment") { } + + bool OnCheck(Player* /*source*/, Unit* target) + { + if (!target) + return false; + + if (Creature* Leviathan = target->ToCreature()) + if (Leviathan->AI()->GetData(DATA_ORBIT_ACHIEVEMENTS) >= 1) + return true; + + return false; + } +}; + +class achievement_orbital_devastation : public AchievementCriteriaScript +{ + public: + achievement_orbital_devastation() : AchievementCriteriaScript("achievement_orbital_devastation") { } + + bool OnCheck(Player* /*source*/, Unit* target) + { + if (!target) + return false; + + if (Creature* Leviathan = target->ToCreature()) + if (Leviathan->AI()->GetData(DATA_ORBIT_ACHIEVEMENTS) >= 2) + return true; + + return false; + } +}; + +class achievement_nuked_from_orbit : public AchievementCriteriaScript +{ + public: + achievement_nuked_from_orbit() : AchievementCriteriaScript("achievement_nuked_from_orbit") { } + + bool OnCheck(Player* /*source*/, Unit* target) + { + if (!target) + return false; + + if (Creature* Leviathan = target->ToCreature()) + if (Leviathan->AI()->GetData(DATA_ORBIT_ACHIEVEMENTS) >= 3) + return true; + + return false; + } +}; + +class achievement_orbit_uary : public AchievementCriteriaScript +{ + public: + achievement_orbit_uary() : AchievementCriteriaScript("achievement_orbit_uary") { } + + bool OnCheck(Player* /*source*/, Unit* target) + { + if (!target) + return false; + + if (Creature* Leviathan = target->ToCreature()) + if (Leviathan->AI()->GetData(DATA_ORBIT_ACHIEVEMENTS) == 4) + return true; + + return false; + } +}; + void AddSC_boss_flame_leviathan() { new boss_flame_leviathan(); @@ -1436,4 +1483,8 @@ void AddSC_boss_flame_leviathan() new achievement_three_car_garage_siege(); new achievement_shutout(); new achievement_unbroken(); + new achievement_orbital_bombardment(); + new achievement_orbital_devastation(); + new achievement_nuked_from_orbit(); + new achievement_orbit_uary(); } From cb40eb556ad23a90508a285ea1cc049888ebf7a9 Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 19:14:20 +0200 Subject: [PATCH 55/58] Scripts/Nexus: Fixed logic in Intense Cold achievement. Thanks joschiwald for notice --- .../Northrend/Nexus/Nexus/boss_keristrasza.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp index 7a7afb229e..e5a62406ec 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp @@ -266,15 +266,16 @@ class achievement_intense_cold : public AchievementCriteriaScript bool OnCheck(Player* player, Unit* target) { + if (!target) + return false; + std::list intenseColdList = CAST_AI(boss_keristrasza::boss_keristraszaAI, target->ToCreature()->AI())->intenseColdList; - if (intenseColdList.empty()) - return true; + if (!intenseColdList.empty()) + for (std::list::iterator itr = intenseColdList.begin(); itr != intenseColdList.end(); ++itr) + if (player->GetGUID() == *itr) + return false; - for (std::list::iterator itr = intenseColdList.begin(); itr != intenseColdList.end(); ++itr) - if (player->GetGUID() != *itr) - return true; - - return false; + return true; } }; From cd76930f45c71a9d8be37c2d37e1ef86def4ac85 Mon Sep 17 00:00:00 2001 From: Lopin Date: Sat, 25 Jun 2011 19:17:50 +0200 Subject: [PATCH 56/58] Core/Instances: Remove function DoCompleteAchievement() --- src/server/game/Instances/InstanceScript.cpp | 18 ------------------ src/server/game/Instances/InstanceScript.h | 3 --- 2 files changed, 21 deletions(-) diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 2281caf4e7..c7800b0223 100755 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -319,24 +319,6 @@ void InstanceScript::DoSendNotifyToInstance(const char *format, ...) } } -// Complete Achievement for all players in instance -void InstanceScript::DoCompleteAchievement(uint32 achievement) -{ - AchievementEntry const* pAE = GetAchievementStore()->LookupEntry(achievement); - Map::PlayerList const &PlayerList = instance->GetPlayers(); - - if (!pAE) - { - sLog->outError("TSCR: DoCompleteAchievement called for not existing achievement %u", achievement); - return; - } - - if (!PlayerList.isEmpty()) - for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) - if (Player *pPlayer = i->getSource()) - pPlayer->CompletedAchievement(pAE); -} - // Update Achievement Criteria for all players in instance void InstanceScript::DoUpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /*= 0*/, Unit* unit /*= NULL*/) { diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index b3dcb9525c..d2c98af083 100755 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -169,9 +169,6 @@ class InstanceScript : public ZoneScript // Send Notify to all players in instance void DoSendNotifyToInstance(char const* format, ...); - // Complete Achievement for all players in instance - DECLSPEC_DEPRECATED void DoCompleteAchievement(uint32 achievement) ATTR_DEPRECATED; - // Update Achievement Criteria for all players in instance void DoUpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, Unit* unit = NULL); From aa0e279b04d0b39515d08db5d04c60cbf257eab1 Mon Sep 17 00:00:00 2001 From: Ramusik Date: Sun, 26 Jun 2011 00:44:09 +0700 Subject: [PATCH 57/58] Core/Spells: Fix Glyph of Raptor Strike --- sql/base/world_database.sql | 1 + sql/updates/world/2011_06_25_16_world_spell_proc_event.sql | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 sql/updates/world/2011_06_25_16_world_spell_proc_event.sql diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index 97c48dc705..35f79bc11c 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -19355,6 +19355,7 @@ INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFam ( 54832, 0x00, 7, 0x00000000, 0x00001000, 0x00000000, 0x00004000, 0x00000000, 0, 0, 0), -- Glyph of Innervate ( 67353, 0x00, 7, 0x00008000, 0x00100500, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- uncommented ( 57989, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0, 0, 0), -- uncommented +( 63086, 0x00, 9, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0, 0, 0), -- Glyph of Raptor Strike ( 65661, 0x00, 15, 0x00400011, 0x20020004, 0x00000000, 0x00000010, 0x00000000, 0, 100, 0), -- Threat of Thassarian (Rank 1) ( 66191, 0x00, 15, 0x00400011, 0x20020004, 0x00000000, 0x00000010, 0x00000000, 0, 100, 0), -- Threat of Thassarian (Rank 2) ( 66192, 0x00, 15, 0x00400011, 0x20020004, 0x00000000, 0x00000010, 0x00000000, 0, 100, 0), -- Threat of Thassarian (Rank 3) diff --git a/sql/updates/world/2011_06_25_16_world_spell_proc_event.sql b/sql/updates/world/2011_06_25_16_world_spell_proc_event.sql new file mode 100644 index 0000000000..d7ee64c667 --- /dev/null +++ b/sql/updates/world/2011_06_25_16_world_spell_proc_event.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_proc_event` WHERE `entry` = 63086; +INSERT INTO `spell_proc_event` VALUES +(63086, 0x00, 9, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0, 0, 0); From 9a5f8dc844be68fa239d9c5ac6b95b7a6b2dfcee Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 25 Jun 2011 23:40:36 +0200 Subject: [PATCH 58/58] Scripts/The Nexus: Fixed compile warning --- .../scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp index e5a62406ec..c0949cb03f 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp @@ -157,10 +157,10 @@ public: } } - void SetData(uint32 id, uint32 data) + void SetGUID(uint64 const& guid, int32 id/* = 0 */) { if (id == DATA_INTENSE_COLD) - intenseColdList.push_back(data); + intenseColdList.push_back(guid); } void UpdateAI(const uint32 diff) @@ -242,7 +242,7 @@ class spell_intense_cold : public SpellScriptLoader return; if (aurEff->GetBase()->GetStackAmount() >= 2) - caster->ToCreature()->AI()->SetData(DATA_INTENSE_COLD, GetTarget()->GetGUID()); + caster->GetAI()->SetGUID(GetTarget()->GetGUID(), DATA_INTENSE_COLD); } void Register()