aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-05-08 00:03:15 +0200
committerShauren <shauren.trinity@gmail.com>2015-05-08 00:03:15 +0200
commit5b725db033c656bda5e718ea05a79005946e089e (patch)
treec15ad544c542cdd7dd7cb395c8ec6d3d35e4d2e9 /src/server/game/Spells/SpellEffects.cpp
parent0972552e84068cf453231b372bcb232cf2d2f42b (diff)
Core/Garrisons: Basics for garrisons
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp28
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);
+}