diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 9 | ||||
| -rw-r--r-- | src/server/game/Spells/Spell.h | 1 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 13 | 
3 files changed, 22 insertions, 1 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index eaddc84a7fd..9a433f057e8 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5155,6 +5155,15 @@ SpellCastResult Spell::CheckCast(bool strict)                  break;              } +            case SPELL_EFFECT_UNLOCK_GUILD_VAULT_TAB: +            { +                if (m_caster->GetTypeId() != TYPEID_PLAYER) +                    return SPELL_FAILED_BAD_TARGETS; +                if (Guild* guild = m_caster->ToPlayer()->GetGuild()) +                    if (guild->GetLeaderGUID() != m_caster->ToPlayer()->GetGUID()) +                        return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; +                break; +            }              case SPELL_EFFECT_LEARN_PET_SPELL:              {                  // check target only for unit target case diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index e27af507e90..244615c848a 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -318,6 +318,7 @@ class Spell          void EffectEnergizePct(SpellEffIndex effIndex);          void EffectTriggerRitualOfSummoning(SpellEffIndex effIndex);          void EffectSummonRaFFriend(SpellEffIndex effIndex); +        void EffectUnlockGuildVaultTab(SpellEffIndex effIndex);          void EffectKillCreditPersonal(SpellEffIndex effIndex);          void EffectKillCredit(SpellEffIndex effIndex);          void EffectQuestFail(SpellEffIndex effIndex); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 88e897a0723..c5bf99c2f43 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -244,7 +244,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=      &Spell::EffectNULL,                                     //170 SPELL_EFFECT_170      &Spell::EffectNULL,                                     //171 SPELL_EFFECT_171      &Spell::EffectResurrectWithAura,                        //172 SPELL_EFFECT_RESURRECT_WITH_AURA -    &Spell::EffectNULL,                                     //173 SPELL_EFFECT_UNLOCK_GUILD_VAULT_TAB +    &Spell::EffectUnlockGuildVaultTab,                      //173 SPELL_EFFECT_UNLOCK_GUILD_VAULT_TAB      &Spell::EffectNULL,                                     //174 SPELL_EFFECT_174      &Spell::EffectUnused,                                   //175 SPELL_EFFECT_175  unused      &Spell::EffectNULL,                                     //176 SPELL_EFFECT_176 @@ -5849,6 +5849,17 @@ void Spell::EffectSummonRaFFriend(SpellEffIndex effIndex)      m_caster->CastSpell(unitTarget, m_spellInfo->Effects[effIndex].TriggerSpell, true);  } +void Spell::EffectUnlockGuildVaultTab(SpellEffIndex effIndex) +{ +    if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT) +        return; + +    // Safety checks done in Spell::CheckCast +    Player* caster = m_caster->ToPlayer(); +    if (Guild* guild = caster->GetGuild()) +        guild->HandleBuyBankTab(caster->GetSession(), m_spellInfo->Effects[effIndex].BasePoints - 1); // Bank tabs start at zero internally +} +  void Spell::EffectResurrectWithAura(SpellEffIndex effIndex)  {      if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)  | 
