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) |