From 4d689ec5432da9c8a9d1983b09b3bc95ce501648 Mon Sep 17 00:00:00 2001 From: Wilds Date: Sat, 10 Dec 2011 02:01:53 +0100 Subject: Core/Spells: fix Lightwell (in combat consume charges) --- src/server/scripts/World/npcs_special.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/server/scripts/World') diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index a5e5b467fc7..deb1e702ab9 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -2030,6 +2030,16 @@ public: { DoCast(me, 59907, false); // Spell for Lightwell Charges } + + void EnterEvadeMode() + { + if (!me->isAlive()) + return; + + me->DeleteThreatList(); + me->CombatStop(true); + me->ResetPlayerDamageReq(); + } }; CreatureAI* GetAI(Creature* creature) const -- cgit v1.2.3 From 23b54b8416d0268bc721d3bf879d5a9be45cbe5f Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:04:26 +0100 Subject: Core/Quests: Script quest Missing Friends Closes #3604 --- sql/updates/world/2011_12_24_00_world_sai.sql | 10 +++++ src/server/scripts/World/go_scripts.cpp | 54 +++++++++++++++++++++++---- 2 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 sql/updates/world/2011_12_24_00_world_sai.sql (limited to 'src/server/scripts/World') diff --git a/sql/updates/world/2011_12_24_00_world_sai.sql b/sql/updates/world/2011_12_24_00_world_sai.sql new file mode 100644 index 00000000000..fb5816bb737 --- /dev/null +++ b/sql/updates/world/2011_12_24_00_world_sai.sql @@ -0,0 +1,10 @@ +-- Scriptname for the cages +UPDATE `gameobject_template` SET `ScriptName`='go_veil_skith_cage' WHERE `entry` IN (185202,185203,185204,185205); + +-- Texts for Captive Child +DELETE FROM `creature_text` WHERE `entry`=22314; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(22314,0,0,"Woot!",12,0,100,0,0,0,"Captive Child"), +(22314,0,1,"I think those weird bird guys were going to eat us. Gross!",12,0,100,0,0,0,"Captive Child"), +(22314,0,2,"Yay! We're free!",12,0,100,0,0,0,"Captive Child"), +(22314,0,3,"Gross!",12,0,100,0,0,0,"Captive Child"); \ No newline at end of file diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 44c3ab9bdc9..4799b893286 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -16,13 +16,6 @@ * with this program. If not, see . */ -/* ScriptData -SDName: GO_Scripts -SD%Complete: 100 -SDComment: Quest support: 4285, 4287, 4288(crystal pylons), 4296, 6481, 10990, 10991, 10992, Field_Repair_Bot->Teaches spell 22704. Barov_journal->Teaches spell 26089, 12843, 12982, 2936. Soulwell -SDCategory: Game Objects -EndScriptData */ - /* ContentData go_cat_figurine (the "trap" version of GO, two different exist) go_northern_crystal_pylon @@ -48,6 +41,15 @@ go_table_theka go_soulwell go_bashir_crystalforge go_ethereal_teleport_pad +go_soulwell +go_dragonflayer_cage +go_tadpole_cage +go_black_cage +go_amberpine_outhouse +go_hive_pod +go_gjalerbron_cage +go_large_gjalerbron_cage +go_veil_skith_cage EndContentData */ #include "ScriptPCH.h" @@ -1179,6 +1181,7 @@ public: /*###### ## Quest 1126: Hive in the Tower +## go_hive_pod ######*/ enum eHives @@ -1278,6 +1281,42 @@ class go_large_gjalerbron_cage : public GameObjectScript } }; +/*######## +#### go_veil_skith_cage +#####*/ + +enum MissingFriends +{ + QUEST_MISSING_FRIENDS = 10852, + NPC_CAPTIVE_CHILD = 22314, + SAY_FREE = 0, +}; + +class go_veil_skith_cage : public GameObjectScript +{ + public: + go_veil_skith_cage() : GameObjectScript("go_veil_skith_cage") { } + + bool OnGossipHello(Player* player, GameObject* go) + { + if (player->GetQuestStatus(QUEST_MISSING_FRIENDS) == QUEST_STATUS_INCOMPLETE) + { + std::list ChildrenList; + GetCreatureListWithEntryInGrid(ChildrenList, go, NPC_CAPTIVE_CHILD, INTERACTION_DISTANCE); + for (std::list::const_iterator itr = ChildrenList.begin(); itr != ChildrenList.end(); ++itr) + { + go->UseDoorOrButton(); + player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, (*itr)->GetGUID()); + (*itr)->ForcedDespawn(5000); + (*itr)->GetMotionMaster()->MovePoint(1, go->GetPositionX()+5, go->GetPositionY(), go->GetPositionZ()); + (*itr)->AI()->Talk(SAY_FREE); + (*itr)->GetMotionMaster()->Clear(); + } + } + return false; + } +}; + void AddSC_go_scripts() { new go_cat_figurine; @@ -1319,4 +1358,5 @@ void AddSC_go_scripts() new go_massive_seaforium_charge; new go_gjalerbron_cage; new go_large_gjalerbron_cage; + new go_veil_skith_cage; } -- cgit v1.2.3 From ef4608f07c8596c2436604e18d49ba8891af3191 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:13:28 +0100 Subject: Core/Quests: Fix an exploit in Red Snapper - Very Tasty! Also fix a silly codestyle typo in previous commit. Closes #3887 --- .../2011_12_25_00_world_spell_script_names.sql | 4 ++ src/server/scripts/Spells/spell_quest.cpp | 49 ++++++++++++++++++++++ src/server/scripts/World/go_scripts.cpp | 6 +-- 3 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 sql/updates/world/2011_12_25_00_world_spell_script_names.sql (limited to 'src/server/scripts/World') diff --git a/sql/updates/world/2011_12_25_00_world_spell_script_names.sql b/sql/updates/world/2011_12_25_00_world_spell_script_names.sql new file mode 100644 index 00000000000..a4bf9aef5dc --- /dev/null +++ b/sql/updates/world/2011_12_25_00_world_spell_script_names.sql @@ -0,0 +1,4 @@ +UPDATE `item_template` SET `ScriptName`='' WHERE `entry`=23654; +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_q9452_cast_net'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(29866,'spell_q9452_cast_net'); \ No newline at end of file diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 3b2cc5f5e00..ecdbd582b76 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1026,6 +1026,54 @@ public: } }; +// http://old01.wowhead.com/quest=9452 - Red Snapper - Very Tasty! +enum RedSnapperVeryTasty +{ + SPELL_CAST_NET = 29866, + ITEM_RED_SNAPPER = 23614, + NPC_ANGRY_MURLOC = 17102, +}; + +class spell_q9452_cast_net: public SpellScriptLoader +{ + public: + spell_q9452_cast_net() : SpellScriptLoader("spell_q9452_cast_net") { } + + class spell_q9452_cast_net_SpellScript : public SpellScript + { + PrepareSpellScript(spell_q9452_cast_net_SpellScript) + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Player* caster = GetCaster()->ToPlayer(); + + if (!caster) + return; + + switch (urand(0, 2)) + { + case 0: case 1: + caster->AddItem(ITEM_RED_SNAPPER, 1); + break; + case 2: + if (Creature* murloc = caster->SummonCreature(NPC_ANGRY_MURLOC, caster->GetPositionX()+5, caster->GetPositionY(), caster->GetPositionZ(), 0.0f, TEMPSUMMON_MANUAL_DESPAWN, 120000)) + murloc->AI()->AttackStart(caster); + break; + } + } + + void Register() + { + OnEffectHit += SpellEffectFn(spell_q9452_cast_net_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_q9452_cast_net_SpellScript(); + } +}; + void AddSC_quest_spell_scripts() { new spell_q55_sacred_cleansing(); @@ -1050,4 +1098,5 @@ void AddSC_quest_spell_scripts() new spell_q12805_lifeblood_dummy(); new spell_q13280_13283_plant_battle_standard(); new spell_q14112_14145_chum_the_water(); + new spell_q9452_cast_net(); } diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 4799b893286..fad92ec1af5 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -1301,9 +1301,9 @@ class go_veil_skith_cage : public GameObjectScript { if (player->GetQuestStatus(QUEST_MISSING_FRIENDS) == QUEST_STATUS_INCOMPLETE) { - std::list ChildrenList; - GetCreatureListWithEntryInGrid(ChildrenList, go, NPC_CAPTIVE_CHILD, INTERACTION_DISTANCE); - for (std::list::const_iterator itr = ChildrenList.begin(); itr != ChildrenList.end(); ++itr) + std::list childrenList; + GetCreatureListWithEntryInGrid(childrenList, go, NPC_CAPTIVE_CHILD, INTERACTION_DISTANCE); + for (std::list::const_iterator itr = childrenList.begin(); itr != childrenList.end(); ++itr) { go->UseDoorOrButton(); player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, (*itr)->GetGUID()); -- cgit v1.2.3 From b82eb200e80dff65f6d4c1f71d5ca3253dd59b48 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:20:56 +0100 Subject: DB/Quests: Script quest Raptor Captor. Yet another stupid mistake from previous commit, sorry. --- sql/updates/world/2011_12_25_00_world_sai.sql | 23 +++++++++++++++ src/server/scripts/World/item_scripts.cpp | 41 --------------------------- 2 files changed, 23 insertions(+), 41 deletions(-) create mode 100644 sql/updates/world/2011_12_25_00_world_sai.sql (limited to 'src/server/scripts/World') diff --git a/sql/updates/world/2011_12_25_00_world_sai.sql b/sql/updates/world/2011_12_25_00_world_sai.sql new file mode 100644 index 00000000000..d0f1572d708 --- /dev/null +++ b/sql/updates/world/2011_12_25_00_world_sai.sql @@ -0,0 +1,23 @@ +-- Bloodfen Raptor SAI +SET @ENTRY := 4351; +SET @SPELL_ROPE := 42325; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,8,0,100,0,@SPELL_ROPE,0,0,0,33,23727,0,0,0,0,0,7,0,0,0,0,0,0,0,"Bloodfen Raptor - On Spellhit - Quest Credit"), +(@ENTRY,0,1,0,2,0,100,1,0,20,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodfen Raptor - At 20% HP - Say Line 0"); + +-- Bloodfen Screecher SAI +SET @ENTRY := 4352; +SET @SPELL_ROPE := 42325; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,8,0,100,0,@SPELL_ROPE,0,0,0,33,23727,0,0,0,0,0,7,0,0,0,0,0,0,0,"Bloodfen Screecher - On Spellhit - Quest Credit"), +(@ENTRY,0,1,0,2,0,100,1,0,20,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodfen Screecher - At 20% HP - Say Line 0"); + +-- Texts +DELETE FROM `creature_text` WHERE `entry` IN (4351,4352); +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(4351,0,0,"%s looks weak enough to capture.",16,0,100,0,0,0,"Bloodfen Raptor"), +(4352,0,0,"%s looks weak enough to capture.",16,0,100,0,0,0,"Bloodfen Screecher"); diff --git a/src/server/scripts/World/item_scripts.cpp b/src/server/scripts/World/item_scripts.cpp index 4099c03384c..9bfa77271f5 100644 --- a/src/server/scripts/World/item_scripts.cpp +++ b/src/server/scripts/World/item_scripts.cpp @@ -24,7 +24,6 @@ SDCategory: Items EndScriptData */ /* ContentData -item_draenei_fishing_net(i23654) Hacklike implements chance to spawn item or creature item_nether_wraith_beacon(i31742) Summons creatures for quest Becoming a Spellfire Tailor (q10832) item_flying_machine(i34060, i34061) Engineering crafted flying machines item_gor_dreks_ointment(i30175) Protecting Our Own(q10488) @@ -80,45 +79,6 @@ public: } }; -/*##### -# item_draenei_fishing_net -#####*/ - -class item_draenei_fishing_net : public ItemScript -{ -public: - item_draenei_fishing_net() : ItemScript("item_draenei_fishing_net") { } - - //This is just a hack and should be removed from here. - //Creature/Item are in fact created before spell are sucessfully casted, without any checks at all to ensure proper/expected behavior. - bool OnUse(Player* player, Item* /*pItem*/, SpellCastTargets const& /*targets*/) - { - if (player->GetQuestStatus(9452) == QUEST_STATUS_INCOMPLETE) - { - if (urand(0, 99) < 35) - { - Creature* Murloc = player->SummonCreature(17102, player->GetPositionX(), player->GetPositionY()+20, player->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); - if (Murloc) - Murloc->AI()->AttackStart(player); - } - else - { - ItemPosCountVec dest; - uint32 itemId = 23614; - InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, 1); - if (msg == EQUIP_ERR_OK) - { - if (Item* item = player->StoreNewItem(dest, itemId, true)) - player->SendNewItem(item, 1, false, true); - } - else - player->SendEquipError(msg, NULL, NULL, itemId); - } - } - return false; - } -}; - /*##### # item_nether_wraith_beacon #####*/ @@ -452,7 +412,6 @@ public: void AddSC_item_scripts() { new item_only_for_flight(); - new item_draenei_fishing_net(); new item_nether_wraith_beacon(); new item_gor_dreks_ointment(); new item_incendiary_explosives(); -- cgit v1.2.3 From 8cec401f0c4c61bb69fc6353bc13e0b2c4582130 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:29:15 +0100 Subject: Core/Scripts: Script quest Nat's Bargain. Closes #3140. --- sql/updates/world/2011_12_24_00_world_misc.sql | 10 ++++++ sql/updates/world/2011_12_24_00_world_sai.sql | 10 ------ ...2011_12_25_00_world_areatrigger_scriptnames.sql | 3 ++ src/server/scripts/World/areatrigger_scripts.cpp | 37 ++++++++++++++++++++++ 4 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 sql/updates/world/2011_12_24_00_world_misc.sql delete mode 100644 sql/updates/world/2011_12_24_00_world_sai.sql create mode 100644 sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql (limited to 'src/server/scripts/World') diff --git a/sql/updates/world/2011_12_24_00_world_misc.sql b/sql/updates/world/2011_12_24_00_world_misc.sql new file mode 100644 index 00000000000..fb5816bb737 --- /dev/null +++ b/sql/updates/world/2011_12_24_00_world_misc.sql @@ -0,0 +1,10 @@ +-- Scriptname for the cages +UPDATE `gameobject_template` SET `ScriptName`='go_veil_skith_cage' WHERE `entry` IN (185202,185203,185204,185205); + +-- Texts for Captive Child +DELETE FROM `creature_text` WHERE `entry`=22314; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(22314,0,0,"Woot!",12,0,100,0,0,0,"Captive Child"), +(22314,0,1,"I think those weird bird guys were going to eat us. Gross!",12,0,100,0,0,0,"Captive Child"), +(22314,0,2,"Yay! We're free!",12,0,100,0,0,0,"Captive Child"), +(22314,0,3,"Gross!",12,0,100,0,0,0,"Captive Child"); \ No newline at end of file diff --git a/sql/updates/world/2011_12_24_00_world_sai.sql b/sql/updates/world/2011_12_24_00_world_sai.sql deleted file mode 100644 index fb5816bb737..00000000000 --- a/sql/updates/world/2011_12_24_00_world_sai.sql +++ /dev/null @@ -1,10 +0,0 @@ --- Scriptname for the cages -UPDATE `gameobject_template` SET `ScriptName`='go_veil_skith_cage' WHERE `entry` IN (185202,185203,185204,185205); - --- Texts for Captive Child -DELETE FROM `creature_text` WHERE `entry`=22314; -INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES -(22314,0,0,"Woot!",12,0,100,0,0,0,"Captive Child"), -(22314,0,1,"I think those weird bird guys were going to eat us. Gross!",12,0,100,0,0,0,"Captive Child"), -(22314,0,2,"Yay! We're free!",12,0,100,0,0,0,"Captive Child"), -(22314,0,3,"Gross!",12,0,100,0,0,0,"Captive Child"); \ No newline at end of file diff --git a/sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql b/sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql new file mode 100644 index 00000000000..4a66326ead5 --- /dev/null +++ b/sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql @@ -0,0 +1,3 @@ +DELETE FROM `areatrigger_scripts` WHERE `entry`=4752; +INSERT INTO `areatrigger_scripts` (`entry`,`ScriptName`) VALUES +(4752,'at_nats_landing'); \ No newline at end of file diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index 517746dac55..b1d1b97f21b 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -29,6 +29,7 @@ at_legion_teleporter 4560 Teleporter TO Invasion Point: Cataclysm at_stormwright_shelf q12741 at_last_rites q12019 at_sholazar_waygate q12548 +at_nats_landing q11209 EndContentData */ #include "ScriptPCH.h" @@ -257,6 +258,41 @@ class AreaTrigger_at_sholazar_waygate : public AreaTriggerScript } }; +/*###### +## at_nats_landing +######*/ + +enum NatsLanding +{ + QUEST_NATS_BARGAIN = 11209, + SPELL_FISH_PASTE = 42644, + NPC_LURKING_SHARK = 23928 +}; + +class AreaTrigger_at_nats_landing : public AreaTriggerScript +{ + public: + AreaTrigger_at_nats_landing() : AreaTriggerScript("at_nats_landing") { } + + bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) + { + if (!player->isAlive() || !player->HasAura(SPELL_FISH_PASTE)) + return false; + + if (player->GetQuestStatus(QUEST_NATS_BARGAIN) == QUEST_STATUS_INCOMPLETE) + { + if (!player->FindNearestCreature(NPC_LURKING_SHARK, 20.0f)) + { + if (Creature* shark = player->SummonCreature(NPC_LURKING_SHARK, -4246.243f, -3922.356f, -7.488f, 5.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 100000)) + shark->AI()->AttackStart(player); + + return false; + } + } + return true; + } +}; + void AddSC_areatrigger_scripts() { new AreaTrigger_at_coilfang_waterfall(); @@ -265,4 +301,5 @@ void AddSC_areatrigger_scripts() new AreaTrigger_at_scent_larkorwi(); new AreaTrigger_at_last_rites(); new AreaTrigger_at_sholazar_waygate(); + new AreaTrigger_at_nats_landing(); } -- cgit v1.2.3 From 49e10f992a7e73e4afcc627cfbdf0dc3db28ef1a Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 00:52:01 +0100 Subject: Scripts/Quests: Zuhuled the Wacked And obviously, some typo's. Closes #3704 --- sql/updates/world/2011_12_25_00_world_misc.sql | 2 +- sql/updates/world/2011_12_25_01_world_misc.sql | 3 +++ src/server/scripts/Outland/shadowmoon_valley.cpp | 25 ++++++++++++++---------- src/server/scripts/World/go_scripts.cpp | 4 ++-- 4 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 sql/updates/world/2011_12_25_01_world_misc.sql (limited to 'src/server/scripts/World') diff --git a/sql/updates/world/2011_12_25_00_world_misc.sql b/sql/updates/world/2011_12_25_00_world_misc.sql index 22effda3d04..8f1d3c44ceb 100644 --- a/sql/updates/world/2011_12_25_00_world_misc.sql +++ b/sql/updates/world/2011_12_25_00_world_misc.sql @@ -5,5 +5,5 @@ INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`pr (20787,0,0,"You've saved me, fleshling! Ameer will hear of this noble act.",12,0,100,0,0,0,"Captain Tyralius"); -- Heroes of Old -UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `entry`=2702; +UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=2702; DELETE FROM `quest_start_scripts` WHERE `id`=2702; diff --git a/sql/updates/world/2011_12_25_01_world_misc.sql b/sql/updates/world/2011_12_25_01_world_misc.sql new file mode 100644 index 00000000000..9e4d7e6c058 --- /dev/null +++ b/sql/updates/world/2011_12_25_01_world_misc.sql @@ -0,0 +1,3 @@ +-- Zuhuled the Wacked +UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=10866; +DELETE FROM `quest_start_scripts` WHERE `id`=10866; diff --git a/src/server/scripts/Outland/shadowmoon_valley.cpp b/src/server/scripts/Outland/shadowmoon_valley.cpp index 610cf684a77..ecbdb921567 100644 --- a/src/server/scripts/Outland/shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/shadowmoon_valley.cpp @@ -635,26 +635,31 @@ public: # npc_karynaku ####*/ -enum eKarynaku +enum Karynaku { QUEST_ALLY_OF_NETHER = 10870, + QUEST_ZUHULED_THE_WACK = 10866, - TAXI_PATH_ID = 649 + NPC_ZUHULED_THE_WACKED = 11980, + + TAXI_PATH_ID = 649, }; class npc_karynaku : public CreatureScript { -public: - npc_karynaku() : CreatureScript("npc_karynaku") { } + public: + npc_karynaku() : CreatureScript("npc_karynaku") { } - bool OnQuestAccept(Player* player, Creature* /*creature*/, Quest const* quest) - { - if (quest->GetQuestId() == QUEST_ALLY_OF_NETHER) - player->ActivateTaxiPathTo(TAXI_PATH_ID); //player->ActivateTaxiPathTo(649); + bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest) + { + if (quest->GetQuestId() == QUEST_ALLY_OF_NETHER) + player->ActivateTaxiPathTo(TAXI_PATH_ID); - return true; - } + if (quest->GetQuestId() == QUEST_ZUHULED_THE_WACK) + creature->SummonCreature(NPC_ZUHULED_THE_WACKED, -4204.94f, 316.397f, 122.508f, 1.309f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 300000); + return true; + } }; /*#### diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index fad92ec1af5..e93dd2751e6 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -1289,7 +1289,7 @@ enum MissingFriends { QUEST_MISSING_FRIENDS = 10852, NPC_CAPTIVE_CHILD = 22314, - SAY_FREE = 0, + SAY_FREE_0 = 0, }; class go_veil_skith_cage : public GameObjectScript @@ -1309,7 +1309,7 @@ class go_veil_skith_cage : public GameObjectScript player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, (*itr)->GetGUID()); (*itr)->ForcedDespawn(5000); (*itr)->GetMotionMaster()->MovePoint(1, go->GetPositionX()+5, go->GetPositionY(), go->GetPositionZ()); - (*itr)->AI()->Talk(SAY_FREE); + (*itr)->AI()->Talk(SAY_FREE_0); (*itr)->GetMotionMaster()->Clear(); } } -- cgit v1.2.3 From 0a112a2f45c5d021af4414fec717f1a0362a36e4 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 01:29:35 +0100 Subject: Scripts/Quests: Script quests Down At the Docks, Gateway to the Frontier, Lordaeron Throne Room, Bought of Eternals, Spooky Lighthouse, Stonewrought Dam, Dark Portal (A/H) Closes #3322 Closes #1428 Closes #1403 Closes #1387 --- ...2011_12_25_01_world_areatrigger_scriptnames.sql | 9 +++ src/server/scripts/World/areatrigger_scripts.cpp | 74 +++++++++++++++++++++- 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql (limited to 'src/server/scripts/World') diff --git a/sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql b/sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql new file mode 100644 index 00000000000..ebed9976f44 --- /dev/null +++ b/sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql @@ -0,0 +1,9 @@ +DELETE FROM `areatrigger_scripts` WHERE `ScriptName`='at_bring_your_orphan_to'; +INSERT INTO `areatrigger_scripts` (`entry`,`ScriptName`) VALUES +(3551,'at_bring_your_orphan_to'), +(3549,'at_bring_your_orphan_to'), +(3547,'at_bring_your_orphan_to'), +(3546,'at_bring_your_orphan_to'), +(3552,'at_bring_your_orphan_to'), +(3548,'at_bring_your_orphan_to'), +(4356,'at_bring_your_orphan_to'); diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index b1d1b97f21b..84af6273070 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -29,7 +29,8 @@ at_legion_teleporter 4560 Teleporter TO Invasion Point: Cataclysm at_stormwright_shelf q12741 at_last_rites q12019 at_sholazar_waygate q12548 -at_nats_landing q11209 +at_nats_landing q11209 +at_bring_your_orphan_to q910 q910 q1800 q1479 q1687 q1558 q10951 q10952 EndContentData */ #include "ScriptPCH.h" @@ -293,6 +294,76 @@ class AreaTrigger_at_nats_landing : public AreaTriggerScript } }; +/*###### +## at_bring_your_orphan_to +######*/ + +enum BringYourOrphanTo +{ + QUEST_DOWN_AT_THE_DOCKS = 910, + QUEST_GATEWAY_TO_THE_FRONTIER = 911, + QUEST_LORDAERON_THRONE_ROOM = 1800, + QUEST_BOUGHT_OF_ETERNALS = 1479, + QUEST_SPOOKY_LIGHTHOUSE = 1687, + QUEST_STONEWROUGHT_DAM = 1558, + QUEST_DARK_PORTAL_H = 10951, + QUEST_DARK_PORTAL_A = 10952, + + AT_DOWN_AT_THE_DOCKS = 3551, + AT_GATEWAY_TO_THE_FRONTIER = 3549, + AT_LORDAERON_THRONE_ROOM = 3547, + AT_BOUGHT_OF_ETERNALS = 3546, + AT_SPOOKY_LIGHTHOUSE = 3552, + AT_STONEWROUGHT_DAM = 3548, + AT_DARK_PORTAL = 4356, + + AURA_ORPHAN_OUT = 58818, +}; + +class AreaTrigger_at_bring_your_orphan_to : public AreaTriggerScript +{ + public: + AreaTrigger_at_bring_your_orphan_to() : AreaTriggerScript("at_bring_your_orphan_to") { } + + bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) + { + uint32 questId = 0; + + if (player->isDead() || !player->HasAura(AURA_ORPHAN_OUT)) + return false; + + switch (trigger->id) + { + case AT_DOWN_AT_THE_DOCKS: + questId = QUEST_DOWN_AT_THE_DOCKS; + break; + case AT_GATEWAY_TO_THE_FRONTIER: + questId = QUEST_GATEWAY_TO_THE_FRONTIER; + break; + case AT_LORDAERON_THRONE_ROOM: + questId = QUEST_LORDAERON_THRONE_ROOM; + break; + case AT_BOUGHT_OF_ETERNALS: + questId = QUEST_BOUGHT_OF_ETERNALS; + break; + case AT_SPOOKY_LIGHTHOUSE: + questId = QUEST_SPOOKY_LIGHTHOUSE; + break; + case AT_STONEWROUGHT_DAM: + questId = QUEST_STONEWROUGHT_DAM; + break; + case AT_DARK_PORTAL: + questId = player->GetTeam() == ALLIANCE ? QUEST_DARK_PORTAL_A : QUEST_DARK_PORTAL_H; + break; + } + + if (questId && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) + player->AreaExploredOrEventHappens(questId); + + return true; + } +}; + void AddSC_areatrigger_scripts() { new AreaTrigger_at_coilfang_waterfall(); @@ -302,4 +373,5 @@ void AddSC_areatrigger_scripts() new AreaTrigger_at_last_rites(); new AreaTrigger_at_sholazar_waygate(); new AreaTrigger_at_nats_landing(); + new AreaTrigger_at_bring_your_orphan_to(); } -- cgit v1.2.3 From 78ac79220f7ac9bba6e2fec181e6c124475df1b8 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 01:47:02 +0100 Subject: Scripts/Miscellaneous: Script Brewfest welcome areatriggers. Texts were already added in 0a3a961211a0f1c82b0f75df2aab6f7d49855337. Closes #3615 --- ...2011_12_25_02_world_areatrigger_scriptnames.sql | 5 ++ src/server/scripts/World/areatrigger_scripts.cpp | 57 ++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql (limited to 'src/server/scripts/World') diff --git a/sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql b/sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql new file mode 100644 index 00000000000..19c304dcfe9 --- /dev/null +++ b/sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql @@ -0,0 +1,5 @@ +-- Areatrigger scriptname for Brewfest +DELETE FROM `areatrigger_scripts` WHERE `entry` IN (4829,4820); +INSERT INTO `areatrigger_scripts` (`entry`,`ScriptName`) VALUES +(4829,'at_brewfest'), -- Durotar +(4820,'at_brewfest'); -- Dun Morogh \ No newline at end of file diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index 84af6273070..e9ddfa43d6d 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -31,6 +31,7 @@ at_last_rites q12019 at_sholazar_waygate q12548 at_nats_landing q11209 at_bring_your_orphan_to q910 q910 q1800 q1479 q1687 q1558 q10951 q10952 +at_brewfest EndContentData */ #include "ScriptPCH.h" @@ -364,6 +365,61 @@ class AreaTrigger_at_bring_your_orphan_to : public AreaTriggerScript } }; +/*###### +## at_brewfest +######*/ + +enum Brewfest +{ + NPC_TAPPER_SWINDLEKEG = 24711, + NPC_IPFELKOFER_IRONKEG = 24710, + + AT_BREWFEST_DUROTAR = 4829, + AT_BREWFEST_DUN_MOROGH = 4820, + + SAY_WELCOME = 4, + + AREATRIGGER_TALK_COOLDOWN = 5, // in seconds +}; + +class AreaTrigger_at_brewfest : public AreaTriggerScript +{ + public: + AreaTrigger_at_brewfest() : AreaTriggerScript("at_brewfest") + { + // Initialize for cooldown + _triggerTimes[AT_BREWFEST_DUROTAR] = _triggerTimes[AT_BREWFEST_DUN_MOROGH] = 0; + } + + bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) + { + uint32 triggerId = trigger->id; + // Second trigger happened too early after first, skip for now + if (sWorld->GetGameTime() - _triggerTimes[triggerId] < AREATRIGGER_TALK_COOLDOWN) + return false; + + switch (triggerId) + { + case AT_BREWFEST_DUROTAR: + if (Creature* tapper = player->FindNearestCreature(NPC_TAPPER_SWINDLEKEG, 20.0f)) + tapper->AI()->Talk(SAY_WELCOME, player->GetGUID()); + break; + case AT_BREWFEST_DUN_MOROGH: + if (Creature* ipfelkofer = player->FindNearestCreature(NPC_IPFELKOFER_IRONKEG, 20.0f)) + ipfelkofer->AI()->Talk(SAY_WELCOME, player->GetGUID()); + break; + default: + break; + } + + _triggerTimes[triggerId] = sWorld->GetGameTime(); + return false; + } + + private: + std::map _triggerTimes; +}; + void AddSC_areatrigger_scripts() { new AreaTrigger_at_coilfang_waterfall(); @@ -374,4 +430,5 @@ void AddSC_areatrigger_scripts() new AreaTrigger_at_sholazar_waygate(); new AreaTrigger_at_nats_landing(); new AreaTrigger_at_bring_your_orphan_to(); + new AreaTrigger_at_brewfest(); } -- cgit v1.2.3 From dbcccbbb44cd331ab5ad31361b2fa4a6f12990bc Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 25 Dec 2011 16:44:55 +0100 Subject: Core/Quests: Add script for quest The Thunderspike. Closes #4458. --- sql/updates/world/2011_12_25_03_world_misc.sql | 3 +++ .../scripts/Outland/blades_edge_mountains.cpp | 27 +++++++++++++++++++++- src/server/scripts/World/areatrigger_scripts.cpp | 4 ++-- 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 sql/updates/world/2011_12_25_03_world_misc.sql (limited to 'src/server/scripts/World') diff --git a/sql/updates/world/2011_12_25_03_world_misc.sql b/sql/updates/world/2011_12_25_03_world_misc.sql new file mode 100644 index 00000000000..2a2c26d1874 --- /dev/null +++ b/sql/updates/world/2011_12_25_03_world_misc.sql @@ -0,0 +1,3 @@ +-- The Thunderspike +UPDATE `gameobject_template` SET `AIName`='',`ScriptName`='go_thunderspike',`data3`=0 WHERE `entry`=184729; -- data3 was `event_scripts`.`id` +DELETE FROM `event_scripts` WHERE `id`=13685; diff --git a/src/server/scripts/Outland/blades_edge_mountains.cpp b/src/server/scripts/Outland/blades_edge_mountains.cpp index f94a7d2725c..f7c995d8f92 100644 --- a/src/server/scripts/Outland/blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/blades_edge_mountains.cpp @@ -30,6 +30,7 @@ npc_daranelle npc_overseer_nuaar npc_saikkal_the_elder go_legion_obelisk +go_thunderspike EndContentData */ #include "ScriptPCH.h" @@ -537,9 +538,32 @@ public: }; /*###### -## AddSC +## go_thunderspike ######*/ +enum TheThunderspike +{ + NPC_GOR_GRIMGUT = 21319, + QUEST_THUNDERSPIKE = 10526, +}; + +class go_thunderspike : public GameObjectScript +{ + public: + go_thunderspike() : GameObjectScript("go_thunderspike") { } + + bool OnGossipHello(Player* player, GameObject* go) + { + if (player->GetQuestStatus(QUEST_THUNDERSPIKE) == QUEST_STATUS_INCOMPLETE) + { + if (Creature* gorGrimgut = go->SummonCreature(NPC_GOR_GRIMGUT, -2413.4f, 6914.48f, 25.01f, 3.67f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 300000)) + gorGrimgut->AI()->AttackStart(player); + } + + return true; + } +}; + void AddSC_blades_edge_mountains() { new mobs_bladespire_ogre(); @@ -550,4 +574,5 @@ void AddSC_blades_edge_mountains() new go_legion_obelisk(); new npc_bloodmaul_brutebane(); new npc_ogre_brute(); + new go_thunderspike(); } diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index e9ddfa43d6d..9e3e64f1860 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -402,11 +402,11 @@ class AreaTrigger_at_brewfest : public AreaTriggerScript { case AT_BREWFEST_DUROTAR: if (Creature* tapper = player->FindNearestCreature(NPC_TAPPER_SWINDLEKEG, 20.0f)) - tapper->AI()->Talk(SAY_WELCOME, player->GetGUID()); + tapper->AI()->Talk(SAY_WELCOME, player->GetGUID()); break; case AT_BREWFEST_DUN_MOROGH: if (Creature* ipfelkofer = player->FindNearestCreature(NPC_IPFELKOFER_IRONKEG, 20.0f)) - ipfelkofer->AI()->Talk(SAY_WELCOME, player->GetGUID()); + ipfelkofer->AI()->Talk(SAY_WELCOME, player->GetGUID()); break; default: break; -- cgit v1.2.3