diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-05-08 00:03:15 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-05-08 00:03:15 +0200 |
commit | 5b725db033c656bda5e718ea05a79005946e089e (patch) | |
tree | c15ad544c542cdd7dd7cb395c8ec6d3d35e4d2e9 /src/server/game/Spells/SpellEffects.cpp | |
parent | 0972552e84068cf453231b372bcb232cf2d2f42b (diff) |
Core/Garrisons: Basics for garrisons
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 89112b194e1..97e82426e9d 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -67,6 +67,7 @@ #include "GuildMgr.h" #include "ReputationMgr.h" #include "AreaTrigger.h" +#include "Garrison.h" #include "DuelPackets.h" #include "MiscPackets.h" #include "SpellPackets.h" @@ -283,11 +284,11 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectNULL, //207 SPELL_EFFECT_LAUNCH_QUEST_TASK &Spell::EffectNULL, //208 SPELL_EFFECT_208 &Spell::EffectNULL, //209 SPELL_EFFECT_209 - &Spell::EffectNULL, //210 SPELL_EFFECT_LEARN_GARRISON_BUILDING + &Spell::EffectLearnGarrisonBuilding, //210 SPELL_EFFECT_LEARN_GARRISON_BUILDING &Spell::EffectNULL, //211 SPELL_EFFECT_LEARN_GARRISON_SPECIALIZATION &Spell::EffectNULL, //212 SPELL_EFFECT_212 &Spell::EffectNULL, //213 SPELL_EFFECT_213 - &Spell::EffectNULL, //214 SPELL_EFFECT_CREATE_GARRISON + &Spell::EffectCreateGarrison, //214 SPELL_EFFECT_CREATE_GARRISON &Spell::EffectNULL, //215 SPELL_EFFECT_UPGRADE_CHARACTER_SPELLS &Spell::EffectNULL, //216 SPELL_EFFECT_CREATE_SHIPMENT &Spell::EffectNULL, //217 SPELL_EFFECT_UPGRADE_GARRISON @@ -5801,3 +5802,26 @@ void Spell::EffectDestroyItem(SpellEffIndex effIndex) if (Item* item = player->GetItemByEntry(itemId)) player->DestroyItem(item->GetBagSlot(), item->GetSlot(), true); } + +void Spell::EffectLearnGarrisonBuilding(SpellEffIndex effIndex) +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + return; + + if (Garrison* garrison = unitTarget->ToPlayer()->GetGarrison()) + garrison->LearnBlueprint(GetEffect(effIndex)->MiscValue); +} + +void Spell::EffectCreateGarrison(SpellEffIndex effIndex) +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + return; + + unitTarget->ToPlayer()->CreateGarrison(GetEffect(effIndex)->MiscValue); +} |