diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Spell.h | 2 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 26 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index ae75f3798b4..71838498351 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -480,11 +480,13 @@ class TC_GAME_API Spell void EffectUpdateZoneAurasAndPhases(SpellEffIndex effIndex); void EffectGiveArtifactPower(SpellEffIndex effIndex); void EffectGiveArtifactPowerNoBonus(SpellEffIndex effIndex); + void EffectPlaySceneScriptPackage(SpellEffIndex effIndex); void EffectPlayScene(SpellEffIndex effIndex); void EffectGiveHonor(SpellEffIndex effIndex); void EffectLearnTransmogSet(SpellEffIndex effIndex); void EffectRespecAzeriteEmpoweredItem(SpellEffIndex effIndex); void EffectLearnAzeriteEssencePower(SpellEffIndex effIndex); + void EffectCreatePrivateConversation(SpellEffIndex effIndex); typedef std::unordered_set<Aura*> UsedSpellMods; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 767004e9cc6..0d3adf2ec1b 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -273,7 +273,7 @@ NonDefaultConstructible<pEffect> SpellEffects[TOTAL_SPELL_EFFECTS] = &Spell::EffectUncageBattlePet, //192 SPELL_EFFECT_UNCAGE_BATTLEPET &Spell::EffectNULL, //193 SPELL_EFFECT_START_PET_BATTLE &Spell::EffectUnused, //194 SPELL_EFFECT_194 - &Spell::EffectNULL, //195 SPELL_EFFECT_PLAY_SCENE_SCRIPT_PACKAGE + &Spell::EffectPlaySceneScriptPackage, //195 SPELL_EFFECT_PLAY_SCENE_SCRIPT_PACKAGE &Spell::EffectNULL, //196 SPELL_EFFECT_CREATE_SCENE_OBJECT &Spell::EffectNULL, //197 SPELL_EFFECT_CREATE_PERSONAL_SCENE_OBJECT &Spell::EffectPlayScene, //198 SPELL_EFFECT_PLAY_SCENE @@ -345,7 +345,7 @@ NonDefaultConstructible<pEffect> SpellEffects[TOTAL_SPELL_EFFECTS] = &Spell::EffectNULL, //264 SPELL_EFFECT_REMOVE_GEM &Spell::EffectLearnAzeriteEssencePower, //265 SPELL_EFFECT_LEARN_AZERITE_ESSENCE_POWER &Spell::EffectNULL, //266 SPELL_EFFECT_SET_ITEM_BONUS_LIST_GROUP_ENTRY - &Spell::EffectNULL, //267 SPELL_EFFECT_CREATE_PRIVATE_CONVERSATION + &Spell::EffectCreatePrivateConversation, //267 SPELL_EFFECT_CREATE_PRIVATE_CONVERSATION &Spell::EffectNULL, //268 SPELL_EFFECT_APPLY_MOUNT_EQUIPMENT &Spell::EffectNULL, //269 SPELL_EFFECT_INCREASE_ITEM_BONUS_LIST_GROUP_STEP &Spell::EffectNULL, //270 SPELL_EFFECT_270 @@ -5728,6 +5728,17 @@ void Spell::EffectGiveArtifactPowerNoBonus(SpellEffIndex /*effIndex*/) artifact->GiveArtifactXp(damage, m_CastItem, 0); } +void Spell::EffectPlaySceneScriptPackage(SpellEffIndex /*effIndex*/) +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT) + return; + + if (m_caster->GetTypeId() != TYPEID_PLAYER) + return; + + m_caster->ToPlayer()->GetSceneMgr().PlaySceneByPackageId(effectInfo->MiscValue, SCENEFLAG_UNK1, destTarget); +} + void Spell::EffectPlayScene(SpellEffIndex /*effIndex*/) { if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT) @@ -5833,3 +5844,14 @@ void Spell::EffectLearnAzeriteEssencePower(SpellEffIndex /*effIndex*/) azeriteItem->SetEssenceRank(effectInfo->MiscValue, effectInfo->MiscValueB); azeriteItem->SetState(ITEM_CHANGED, playerTarget); } + +void Spell::EffectCreatePrivateConversation(SpellEffIndex /*effIndex*/) +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT) + return; + + if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + return; + + Conversation::CreateConversation(effectInfo->MiscValue, GetCaster(), unitTarget->GetPosition(), { unitTarget->GetGUID() }, GetSpellInfo()); +} |