diff options
author | offl <11556157+offl@users.noreply.github.com> | 2022-01-22 19:03:53 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-03-25 23:42:43 +0100 |
commit | 8be723788dff8ccdd6d7f870d34dec83d348cdcd (patch) | |
tree | da3ea8471ef94ff99c66db2cafb26b2fec5affe1 /src | |
parent | 4a65cf25acd046297a16c3a7e4b25b8b87c6ef06 (diff) |
Scripts/Spells: Handle player talk in spell scripts pt 2 (#27640)
(cherry picked from commit 7a4f1fd2016c14b8f518dbd9fdad0b92c4270ce4)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/zone_sholazar_basin.cpp | 57 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 23 |
2 files changed, 23 insertions, 57 deletions
diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp index bfbe806410a..6b27c99cac1 100644 --- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp +++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp @@ -188,8 +188,6 @@ class spell_q12688_detonate_2 : public SpellScript ## npc_jungle_punch_target #####*/ -#define SAY_OFFER "Care to try Grimbooze Thunderbrew's new jungle punch?" - enum JunglePunch { SPELL_OFFER = 51962, @@ -357,7 +355,6 @@ public: continue; player->KilledMonsterCredit(me->GetEntry()); - player->Say(SAY_OFFER, LANG_UNIVERSAL); sayStep = 1; break; } @@ -626,59 +623,6 @@ public: } }; -/*###### -## Quest Dreadsaber Mastery: Stalking the Prey (12550) -######*/ - -enum ShangoTracks -{ - SPELL_CORRECT_TRACKS = 52160, - SPELL_INCORRECT_TRACKS = 52163, - SAY_CORRECT_TRACKS = 28634, - SAY_INCORRECT_TRACKS = 28635 -}; - -// 52160 - Correct Tracks -// 52163 - Incorrect Tracks -class spell_shango_tracks : public SpellScriptLoader -{ -public: - spell_shango_tracks() : SpellScriptLoader("spell_shango_tracks") { } - - class spell_shango_tracks_SpellScript : public SpellScript - { - PrepareSpellScript(spell_shango_tracks_SpellScript); - - void HandleScript(SpellEffIndex /*effIndex*/) - { - if (Unit* target = GetHitUnit()) - { - switch (GetSpellInfo()->Id) - { - case SPELL_CORRECT_TRACKS: - target->Say(SAY_CORRECT_TRACKS, target); - break; - case SPELL_INCORRECT_TRACKS: - target->Say(SAY_INCORRECT_TRACKS, target); - break; - default: - break; - } - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_shango_tracks_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_shango_tracks_SpellScript(); - } -}; - enum ReturnedSevenfold { SPELL_FREYAS_WARD = 51845, @@ -727,6 +671,5 @@ void AddSC_sholazar_basin() new spell_q12620_the_lifewarden_wrath(); new spell_q12589_shoot_rjr(); new npc_haiphoon(); - new spell_shango_tracks(); RegisterSpellScript(spell_q12611_deathbolt); } 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"); |