diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Spell.h | 1 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 22 |
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; +} |