diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/zone_grizzly_hills.cpp | 189 |
1 files changed, 97 insertions, 92 deletions
diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 600e7dbaa18..3d65ced5736 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -696,16 +696,23 @@ class npc_venture_co_straggler : public CreatureScript ## Quest A Blade Fit For A Champion ######*/ -enum eLakeFrog +enum LakeFrog { + // Spells SPELL_WARTSBGONE_LIP_BALM = 62574, SPELL_FROG_LOVE = 62537, // for 1 minute ! SPELL_WARTS = 62581, SPELL_MAIDEN_OF_ASHWOOD_LAKE_TRANSFORM = 62550, SPELL_SUMMON_ASHWOOD_BRAND = 62554, + + // Items ITEM_WARTS_B_GONE_LIP_BALM = 44986, + + // Creature NPC_LAKE_FROG = 33211, NPC_LAKE_FROG_QUEST = 33224, + + // Text SAY_MAIDEN_0 = 0, SAY_MAIDEN_1 = 1 }; @@ -713,118 +720,116 @@ enum eLakeFrog class npc_lake_frog : public CreatureScript { public: - npc_lake_frog(): CreatureScript("npc_lake_frog") { } + npc_lake_frog() : CreatureScript("npc_lake_frog") { } - struct npc_lake_frogAI : public ScriptedAI - { - npc_lake_frogAI(Creature* creature) : ScriptedAI(creature) { } - - void Reset() + struct npc_lake_frogAI : public ScriptedAI { - uiFollowing = false; - uiRunningScript = false; - uiPhase = 0; - if (me->GetEntry() == NPC_LAKE_FROG_QUEST) - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - } + npc_lake_frogAI(Creature* creature) : ScriptedAI(creature) { } - void UpdateAI(uint32 uiDiff) - { - if (uiFollowing) - if(!me->HasAura(SPELL_FROG_LOVE)) - me->DespawnOrUnsummon(0); + void Reset() + { + _following = false; + _runningScript = false; + _phase = 0; + if (me->GetEntry() == NPC_LAKE_FROG_QUEST) + me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + } - if (uiRunningScript) + void UpdateAI(uint32 diff) { - if (uiScriptTimer <= uiDiff) + if (_following) + if (!me->HasAura(SPELL_FROG_LOVE)) + me->DespawnOrUnsummon(0); + + if (_runningScript) { - switch (uiPhase) + if (_scriptTimer <= diff) { - case 0: - DoCast(me, SPELL_MAIDEN_OF_ASHWOOD_LAKE_TRANSFORM); - me->SetEntry(33220); - uiScriptTimer = 2000; - ++uiPhase; - break; - case 1: - Talk(SAY_MAIDEN_0); - uiScriptTimer = 3000; - ++uiPhase; - break; - case 2: - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - uiScriptTimer = 25000; - ++uiPhase; - break; - case 3: - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - uiScriptTimer = 2000; - ++uiPhase; - break; - case 4: - Talk(SAY_MAIDEN_1); - uiScriptTimer = 4000; - ++uiPhase; - break; - case 5: - uiRunningScript=false; - me->DespawnOrUnsummon(0); - break; + switch (_phase) + { + case 0: + DoCast(me, SPELL_MAIDEN_OF_ASHWOOD_LAKE_TRANSFORM); + me->SetEntry(33220); + _scriptTimer = 2000; + ++_phase; + break; + case 1: + Talk(SAY_MAIDEN_0); + _scriptTimer = 3000; + ++_phase; + break; + case 2: + me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + _scriptTimer = 25000; + ++_phase; + break; + case 3: + me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + _scriptTimer = 2000; + ++_phase; + break; + case 4: + Talk(SAY_MAIDEN_1); + _scriptTimer = 4000; + ++_phase; + break; + case 5: + _runningScript = false; + me->DespawnOrUnsummon(0); + break; + } } + else if (_scriptTimer) + _scriptTimer -= diff; } - else if (uiScriptTimer) - uiScriptTimer -= uiDiff; } - } - - void ReceiveEmote(Player* player, uint32 emote) - { - if (uiFollowing || uiRunningScript) - return; - - if(emote==TEXT_EMOTE_KISS && me->IsWithinDistInMap(player, 30.0f) && player->HasItemCount(ITEM_WARTS_B_GONE_LIP_BALM, 1, false)) + void ReceiveEmote(Player* player, uint32 emote) { - if(!player->HasAura(SPELL_WARTSBGONE_LIP_BALM)) - player->AddAura(SPELL_WARTS, player); + if (_following || _runningScript) + return; - else + if (emote == TEXT_EMOTE_KISS && me->IsWithinDistInMap(player, 30.0f) && player->HasItemCount(ITEM_WARTS_B_GONE_LIP_BALM, 1, false)) { - player->RemoveAura(SPELL_WARTSBGONE_LIP_BALM); - - if (me->GetEntry() == NPC_LAKE_FROG) - { - me->AddAura(SPELL_FROG_LOVE, me); - me->GetMotionMaster()->MoveFollow(player, 0.3f, frand (M_PI/2, M_PI + (M_PI/2))); - uiFollowing=true; - } - else if (me->GetEntry() == NPC_LAKE_FROG_QUEST) + if (!player->HasAura(SPELL_WARTSBGONE_LIP_BALM)) + player->AddAura(SPELL_WARTS, player); + else { - me->GetMotionMaster()->MoveIdle(); - me->SetFacingToObject(player); - uiRunningScript=true; - uiScriptTimer = 2000; + player->RemoveAura(SPELL_WARTSBGONE_LIP_BALM); + + if (me->GetEntry() == NPC_LAKE_FROG) + { + me->AddAura(SPELL_FROG_LOVE, me); + me->GetMotionMaster()->MoveFollow(player, 0.3f, frand(M_PI/2, M_PI + (M_PI/2))); + _following = true; + } + else if (me->GetEntry() == NPC_LAKE_FROG_QUEST) + { + me->GetMotionMaster()->MoveIdle(); + me->SetFacingToObject(player); + _runningScript = true; + _scriptTimer = 2000; + } } } } - } - void sGossipSelect(Player* player, uint32 /*sender*/, uint32 /*action*/) - { - DoCast(player, SPELL_SUMMON_ASHWOOD_BRAND); - } + void sGossipSelect(Player* player, uint32 /*sender*/, uint32 /*action*/) + { + DoCast(player, SPELL_SUMMON_ASHWOOD_BRAND); + } - private: - bool uiFollowing; - bool uiRunningScript; - uint32 uiScriptTimer; - uint8 uiPhase; - }; + private: + bool _following; + bool _runningScript; + uint32 _scriptTimer; + uint8 _phase; + }; - CreatureAI* GetAI(Creature* creature) const - { - return new npc_lake_frogAI(creature); - } + CreatureAI* GetAI(Creature* creature) const + { + return new npc_lake_frogAI(creature); + } }; void AddSC_grizzly_hills() |