aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShocker <shocker@freakz.ro>2013-05-26 04:47:10 +0300
committerShocker <shocker@freakz.ro>2013-05-26 04:47:10 +0300
commit1315306cfc90708603adb161ada5a77ccb0f7cfe (patch)
treea30940c6ff1b1344c7b5ab6a607d9310c3986846 /src
parentf976c730a0da936647b79eea6440159266bc2d54 (diff)
Core/Spells: Implement SPELL_EFFECT_CREATE_AREATRIGGER (effect #179)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Spell.h1
-rw-r--r--src/server/game/Spells/SpellEffects.cpp22
2 files changed, 22 insertions, 1 deletions
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index 96189af7657..1fd130a29ef 100644
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -341,6 +341,7 @@ class Spell
void EffectRechargeManaGem(SpellEffIndex effIndex);
void EffectGiveCurrency(SpellEffIndex effIndex);
void EffectResurrectWithAura(SpellEffIndex effIndex);
+ void EffectCreateAreaTrigger(SpellEffIndex effIndex);
typedef std::set<Aura*> UsedSpellMods;
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index ca176e0e202..4be79d4b52b 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -67,6 +67,7 @@
#include "Guild.h"
#include "GuildMgr.h"
#include "ReputationMgr.h"
+#include "AreaTrigger.h"
pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
{
@@ -249,7 +250,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectNULL, //176 SPELL_EFFECT_176
&Spell::EffectNULL, //177 SPELL_EFFECT_177
&Spell::EffectUnused, //178 SPELL_EFFECT_178 unused
- &Spell::EffectNULL, //179 SPELL_EFFECT_CREATE_AREATRIGGER
+ &Spell::EffectCreateAreaTrigger, //179 SPELL_EFFECT_CREATE_AREATRIGGER
&Spell::EffectUnused, //180 SPELL_EFFECT_180 unused
&Spell::EffectUnused, //181 SPELL_EFFECT_181 unused
&Spell::EffectNULL, //182 SPELL_EFFECT_182
@@ -5894,3 +5895,22 @@ void Spell::EffectResurrectWithAura(SpellEffIndex effIndex)
target->SetResurrectRequestData(m_caster, health, mana, resurrectAura);
SendResurrectRequest(target);
}
+
+void Spell::EffectCreateAreaTrigger(SpellEffIndex effIndex)
+{
+ if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
+ return;
+
+ Position pos;
+ if (!m_targets.HasDst())
+ GetCaster()->GetPosition(&pos);
+ else
+ destTarget->GetPosition(&pos);
+
+ // trigger entry/miscvalue relation is currently unknown, for now use MiscValue as trigger entry
+ uint32 triggerEntry = GetSpellInfo()->Effects[effIndex].MiscValue;
+
+ AreaTrigger * areaTrigger = new AreaTrigger;
+ if (!areaTrigger->CreateAreaTrigger(sObjectMgr->GenerateLowGuid(HIGHGUID_AREATRIGGER), triggerEntry, GetCaster(), GetSpellInfo(), pos))
+ delete areaTrigger;
+}