From 2843be87a013185942f9dc33a2e32f584f397860 Mon Sep 17 00:00:00 2001 From: Shocker Date: Wed, 6 Oct 2010 21:47:25 +0300 Subject: Core/Spells: Fix Flask of the North, it should give specific buff depending on class --HG-- branch : trunk --- src/server/scripts/Spells/spell_item.cpp | 42 ++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 8 deletions(-) (limited to 'src/server/scripts') 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 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() -- cgit v1.2.3