From 8be723788dff8ccdd6d7f870d34dec83d348cdcd Mon Sep 17 00:00:00 2001 From: offl <11556157+offl@users.noreply.github.com> Date: Sat, 22 Jan 2022 19:03:53 +0200 Subject: Scripts/Spells: Handle player talk in spell scripts pt 2 (#27640) (cherry picked from commit 7a4f1fd2016c14b8f518dbd9fdad0b92c4270ce4) --- src/server/scripts/Spells/spell_generic.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/server/scripts/Spells') diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 251fb95b0a9..288b513384a 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -2497,6 +2497,28 @@ class spell_gen_prevent_emotes : public AuraScript } }; +class spell_gen_player_say : public SpellScript +{ + PrepareSpellScript(spell_gen_player_say); + + bool Validate(SpellInfo const* spellInfo) override + { + return sBroadcastTextStore.HasRecord(uint32(spellInfo->GetEffect(EFFECT_0).CalcValue())); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + // Note: target here is always player; caster here is gameobject, creature or player (self cast) + if (Unit* target = GetHitUnit()) + target->Unit::Say(uint32(GetEffectValue()), target); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_gen_player_say::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + class spell_gen_proc_below_pct_damaged : public AuraScript { PrepareAuraScript(spell_gen_proc_below_pct_damaged); @@ -4843,6 +4865,7 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_orc_disguise); RegisterSpellScript(spell_gen_paralytic_poison); RegisterSpellScript(spell_gen_prevent_emotes); + RegisterSpellScript(spell_gen_player_say); RegisterSpellScriptWithArgs(spell_gen_proc_below_pct_damaged, "spell_item_soul_harvesters_charm"); RegisterSpellScriptWithArgs(spell_gen_proc_below_pct_damaged, "spell_item_commendation_of_kaelthas"); RegisterSpellScriptWithArgs(spell_gen_proc_below_pct_damaged, "spell_item_corpse_tongue_coin"); -- cgit v1.2.3