aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2022-07-14 00:32:03 +0300
committerShauren <shauren.trinity@gmail.com>2022-09-05 21:04:38 +0200
commitb160ba206148c0ce32c543e585caa60f693ba5e1 (patch)
tree645ec8c5ed148200db2b8c9c997e0db80307db21 /src
parentab5af2b37aaba92d639865a73ead82603ad25d96 (diff)
Scripts/Spells: Great/Fish/Gigantic/Small/Bountiful Feast (#28114)
(cherry picked from commit 9a9edb4dfe60f574b33c705c79fca29e278e2384)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp89
-rw-r--r--src/server/scripts/Spells/spell_item.cpp46
2 files changed, 135 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index d280d8b50ab..999e3282d8d 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1632,6 +1632,94 @@ class spell_steal_essence_visual : public AuraScript
}
};
+enum Feast
+{
+ SPELL_GREAT_FEAST = 57337,
+ SPELL_FISH_FEAST = 57397,
+ SPELL_GIGANTIC_FEAST = 58466,
+ SPELL_SMALL_FEAST = 58475,
+ SPELL_BOUNTIFUL_FEAST = 66477,
+
+ SPELL_FEAST_FOOD = 45548,
+ SPELL_FEAST_DRINK = 57073,
+ SPELL_BOUNTIFUL_FEAST_DRINK = 66041,
+ SPELL_BOUNTIFUL_FEAST_FOOD = 66478,
+
+ SPELL_GREAT_FEAST_REFRESHMENT = 57338,
+ SPELL_FISH_FEAST_REFRESHMENT = 57398,
+ SPELL_GIGANTIC_FEAST_REFRESHMENT = 58467,
+ SPELL_SMALL_FEAST_REFRESHMENT = 58477,
+ SPELL_BOUNTIFUL_FEAST_REFRESHMENT = 66622
+};
+
+/* 57337 - Great Feast
+ 57397 - Fish Feast
+ 58466 - Gigantic Feast
+ 58475 - Small Feast
+ 66477 - Bountiful Feast */
+class spell_gen_feast : public SpellScript
+{
+ PrepareSpellScript(spell_gen_feast);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_FEAST_FOOD,
+ SPELL_FEAST_DRINK,
+ SPELL_BOUNTIFUL_FEAST_DRINK,
+ SPELL_BOUNTIFUL_FEAST_FOOD,
+
+ SPELL_GREAT_FEAST_REFRESHMENT,
+ SPELL_FISH_FEAST_REFRESHMENT,
+ SPELL_GIGANTIC_FEAST_REFRESHMENT,
+ SPELL_SMALL_FEAST_REFRESHMENT,
+ SPELL_BOUNTIFUL_FEAST_REFRESHMENT
+ });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* target = GetHitUnit();
+
+ switch (GetSpellInfo()->Id)
+ {
+ case SPELL_GREAT_FEAST:
+ target->CastSpell(target, SPELL_FEAST_FOOD);
+ target->CastSpell(target, SPELL_FEAST_DRINK);
+ target->CastSpell(target, SPELL_GREAT_FEAST_REFRESHMENT);
+ break;
+ case SPELL_FISH_FEAST:
+ target->CastSpell(target, SPELL_FEAST_FOOD);
+ target->CastSpell(target, SPELL_FEAST_DRINK);
+ target->CastSpell(target, SPELL_FISH_FEAST_REFRESHMENT);
+ break;
+ case SPELL_GIGANTIC_FEAST:
+ target->CastSpell(target, SPELL_FEAST_FOOD);
+ target->CastSpell(target, SPELL_FEAST_DRINK);
+ target->CastSpell(target, SPELL_GIGANTIC_FEAST_REFRESHMENT);
+ break;
+ case SPELL_SMALL_FEAST:
+ target->CastSpell(target, SPELL_FEAST_FOOD);
+ target->CastSpell(target, SPELL_FEAST_DRINK);
+ target->CastSpell(target, SPELL_SMALL_FEAST_REFRESHMENT);
+ break;
+ case SPELL_BOUNTIFUL_FEAST:
+ target->CastSpell(target, SPELL_BOUNTIFUL_FEAST_REFRESHMENT);
+ target->CastSpell(target, SPELL_BOUNTIFUL_FEAST_DRINK);
+ target->CastSpell(target, SPELL_BOUNTIFUL_FEAST_FOOD);
+ break;
+ default:
+ break;
+ }
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_gen_feast::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
/*
There are only 3 possible flags Feign Death auras can apply: UNIT_DYNFLAG_DEAD, UNIT_FLAG2_FEIGN_DEATH
and UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT. Some auras can apply only 2 flags
@@ -4995,6 +5083,7 @@ void AddSC_generic_spell_scripts()
RegisterSpellScript(spell_ethereal_pet_onsummon);
RegisterSpellScript(spell_ethereal_pet_aura_remove);
RegisterSpellScript(spell_steal_essence_visual);
+ RegisterSpellScript(spell_gen_feast);
RegisterSpellScript(spell_gen_feign_death_all_flags);
RegisterSpellScript(spell_gen_feign_death_no_dyn_flag);
RegisterSpellScript(spell_gen_feign_death_no_prevent_emotes);
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index 697e0860a8b..a9be7b8b558 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -1117,6 +1117,47 @@ class spell_item_fate_rune_of_unsurpassed_vigor : public AuraScript
}
};
+enum Feast
+{
+ TEXT_GREAT_FEAST = 31843,
+ TEXT_FISH_FEAST = 31844,
+ TEXT_GIGANTIC_FEAST = 31846,
+ TEXT_SMALL_FEAST = 31845,
+ TEXT_BOUNTIFUL_FEAST = 35153
+};
+
+/* 57301 - Great Feast
+ 57426 - Fish Feast
+ 58465 - Gigantic Feast
+ 58474 - Small Feast
+ 66476 - Bountiful Feast */
+class spell_item_feast : public SpellScript
+{
+ PrepareSpellScript(spell_item_feast);
+
+public:
+ spell_item_feast(uint32 text) : SpellScript(), _text(text) { }
+
+private:
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return sBroadcastTextStore.LookupEntry(_text);
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ caster->Unit::TextEmote(_text, caster, false);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_item_feast::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+
+ uint32 _text;
+};
+
// http://www.wowhead.com/item=47499 Flask of the North
// 67019 Flask of the North
enum FlaskOfTheNorthSpells
@@ -4512,6 +4553,11 @@ void AddSC_item_spell_scripts()
RegisterSpellScript(spell_item_echoes_of_light);
RegisterSpellScript(spell_item_extract_gas);
RegisterSpellScript(spell_item_fate_rune_of_unsurpassed_vigor);
+ RegisterSpellScriptWithArgs(spell_item_feast, "spell_item_great_feast", TEXT_GREAT_FEAST);
+ RegisterSpellScriptWithArgs(spell_item_feast, "spell_item_fish_feast", TEXT_FISH_FEAST);
+ RegisterSpellScriptWithArgs(spell_item_feast, "spell_item_gigantic_feast", TEXT_GIGANTIC_FEAST);
+ RegisterSpellScriptWithArgs(spell_item_feast, "spell_item_small_feast", TEXT_SMALL_FEAST);
+ RegisterSpellScriptWithArgs(spell_item_feast, "spell_item_bountiful_feast", TEXT_BOUNTIFUL_FEAST);
RegisterSpellScript(spell_item_flask_of_the_north);
RegisterSpellScript(spell_item_frozen_shadoweave);
RegisterSpellScript(spell_item_gnomish_death_ray);