From 067942a978c81bd2e19492c95ca85044d0c6f409 Mon Sep 17 00:00:00 2001 From: stfx Date: Fri, 13 Apr 2012 17:51:58 +0200 Subject: [PATCH] [11959] Implement spell effect 131 - SPELL_EFFECT_PLAY_SOUND Signed-off-by: Schmoozerd --- src/game/SharedDefines.h | 2 +- src/game/Spell.h | 1 + src/game/SpellEffects.cpp | 30 ++++++++++++++++++++++-------- src/shared/revision_nr.h | 2 +- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index bd6aea77b..0400b1884 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -702,7 +702,7 @@ enum SpellEffects SPELL_EFFECT_APPLY_AREA_AURA_FRIEND = 128, SPELL_EFFECT_APPLY_AREA_AURA_ENEMY = 129, SPELL_EFFECT_REDIRECT_THREAT = 130, - SPELL_EFFECT_131 = 131, + SPELL_EFFECT_PLAY_SOUND = 131, SPELL_EFFECT_PLAY_MUSIC = 132, SPELL_EFFECT_UNLEARN_SPECIALIZATION = 133, SPELL_EFFECT_KILL_CREDIT_GROUP = 134, diff --git a/src/game/Spell.h b/src/game/Spell.h index 7b1f638e0..a22a9cfab 100644 --- a/src/game/Spell.h +++ b/src/game/Spell.h @@ -347,6 +347,7 @@ class Spell void EffectTeachTaxiNode(SpellEffectIndex eff_idx); void EffectTitanGrip(SpellEffectIndex eff_idx); void EffectEnchantItemPrismatic(SpellEffectIndex eff_idx); + void EffectPlaySound(SpellEffectIndex eff_idx); void EffectPlayMusic(SpellEffectIndex eff_idx); void EffectSpecCount(SpellEffectIndex eff_idx); void EffectActivateSpec(SpellEffectIndex eff_idx); diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 74d53adcb..22a903e10 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -191,7 +191,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectApplyAreaAura, //128 SPELL_EFFECT_APPLY_AREA_AURA_FRIEND &Spell::EffectApplyAreaAura, //129 SPELL_EFFECT_APPLY_AREA_AURA_ENEMY &Spell::EffectRedirectThreat, //130 SPELL_EFFECT_REDIRECT_THREAT - &Spell::EffectUnused, //131 SPELL_EFFECT_131 used in some test spells + &Spell::EffectPlaySound, //131 SPELL_EFFECT_PLAY_SOUND sound id in misc value (SoundEntries.dbc) &Spell::EffectPlayMusic, //132 SPELL_EFFECT_PLAY_MUSIC sound id in misc value (SoundEntries.dbc) &Spell::EffectUnlearnSpecialization, //133 SPELL_EFFECT_UNLEARN_SPECIALIZATION unlearn profession specialization &Spell::EffectKillCreditGroup, //134 SPELL_EFFECT_KILL_CREDIT_GROUP misc value is creature entry @@ -9355,21 +9355,35 @@ void Spell::EffectRenamePet(SpellEffectIndex /*eff_idx*/) unitTarget->RemoveByteFlag(UNIT_FIELD_BYTES_2, 2, UNIT_CAN_BE_RENAMED); } -void Spell::EffectPlayMusic(SpellEffectIndex eff_idx) +void Spell::EffectPlaySound(SpellEffectIndex eff_idx) { - if(!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) return; - uint32 soundid = m_spellInfo->EffectMiscValue[eff_idx]; - - if (!sSoundEntriesStore.LookupEntry(soundid)) + uint32 soundId = m_spellInfo->EffectMiscValue[eff_idx]; + if (!sSoundEntriesStore.LookupEntry(soundId)) { - sLog.outError("EffectPlayMusic: Sound (Id: %u) not exist in spell %u.",soundid,m_spellInfo->Id); + sLog.outError("EffectPlaySound: Sound (Id: %u) in spell %u does not exist.", soundId, m_spellInfo->Id); + return; + } + + unitTarget->PlayDirectSound(soundId, (Player*)unitTarget); +} + +void Spell::EffectPlayMusic(SpellEffectIndex eff_idx) +{ + if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + return; + + uint32 soundId = m_spellInfo->EffectMiscValue[eff_idx]; + if (!sSoundEntriesStore.LookupEntry(soundId)) + { + sLog.outError("EffectPlayMusic: Sound (Id: %u) in spell %u does not exist.", soundId, m_spellInfo->Id); return; } WorldPacket data(SMSG_PLAY_MUSIC, 4); - data << uint32(soundid); + data << uint32(soundId); ((Player*)unitTarget)->GetSession()->SendPacket(&data); } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 4b712abe1..210ce8f96 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11958" + #define REVISION_NR "11959" #endif // __REVISION_NR_H__