aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/Northrend/zone_grizzly_hills.cpp189
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()