aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/Spells/spell_item.cpp42
1 files changed, 34 insertions, 8 deletions
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index aa70c849dba..c221767a75f 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -118,9 +118,9 @@ public:
// 67019 Flask of the North
enum eFlaskOfTheNorthSpells
{
- SPELL_FLASK_OF_THE_NORTH_TRIGGERED1 = 67016,
- SPELL_FLASK_OF_THE_NORTH_TRIGGERED2 = 67017,
- SPELL_FLASK_OF_THE_NORTH_TRIGGERED3 = 67018,
+ SPELL_FLASK_OF_THE_NORTH_SP = 67016,
+ SPELL_FLASK_OF_THE_NORTH_AP = 67017,
+ SPELL_FLASK_OF_THE_NORTH_STR = 67018,
};
class spell_item_flask_of_the_north : public SpellScriptLoader
@@ -133,11 +133,11 @@ public:
public:
bool Validate(SpellEntry const * /*spellEntry*/)
{
- if (!sSpellStore.LookupEntry(SPELL_FLASK_OF_THE_NORTH_TRIGGERED1))
+ if (!sSpellStore.LookupEntry(SPELL_FLASK_OF_THE_NORTH_SP))
return false;
- if (!sSpellStore.LookupEntry(SPELL_FLASK_OF_THE_NORTH_TRIGGERED2))
+ if (!sSpellStore.LookupEntry(SPELL_FLASK_OF_THE_NORTH_AP))
return false;
- if (!sSpellStore.LookupEntry(SPELL_FLASK_OF_THE_NORTH_TRIGGERED3))
+ if (!sSpellStore.LookupEntry(SPELL_FLASK_OF_THE_NORTH_STR))
return false;
return true;
}
@@ -147,9 +147,35 @@ public:
Unit* pCaster = GetCaster();
if (pCaster->GetTypeId() != TYPEID_PLAYER)
return;
+
+ std::vector<uint32> possibleSpells;
+ switch (pCaster->getClass())
+ {
+ case CLASS_WARLOCK:
+ case CLASS_MAGE:
+ case CLASS_PRIEST:
+ possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_SP);
+ break;
+ case CLASS_DEATH_KNIGHT:
+ case CLASS_WARRIOR:
+ possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_STR);
+ break;
+ case CLASS_ROGUE:
+ case CLASS_HUNTER:
+ possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_AP);
+ break;
+ case CLASS_DRUID:
+ case CLASS_PALADIN:
+ possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_SP);
+ possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_STR);
+ break;
+ case CLASS_SHAMAN:
+ possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_SP);
+ possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_AP);
+ break;
+ }
- uint32 spellId = urand(SPELL_FLASK_OF_THE_NORTH_TRIGGERED1, SPELL_FLASK_OF_THE_NORTH_TRIGGERED3);
- pCaster->CastSpell(pCaster, spellId, true, NULL);
+ pCaster->CastSpell(pCaster, possibleSpells[irand(0, (possibleSpells.size() - 1))], true, NULL);
}
void Register()