Scripts/Spells: Great/Fish/Gigantic/Small/Bountiful Feast (#28114)

This commit is contained in:
offl
2022-07-14 00:32:03 +03:00
committed by GitHub
parent a041ac4677
commit 9a9edb4dfe
3 changed files with 155 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
--
DELETE FROM `spell_scripts` WHERE `id` IN (57337,57397,58466,58475,66477);
DELETE FROM `spell_script_names` WHERE `ScriptName` IN (
'spell_item_great_feast',
'spell_item_fish_feast',
'spell_item_gigantic_feast',
'spell_item_small_feast',
'spell_item_bountiful_feast',
'spell_gen_feast');
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(57301,'spell_item_great_feast'),
(57426,'spell_item_fish_feast'),
(58465,'spell_item_gigantic_feast'),
(58474,'spell_item_small_feast'),
(66476,'spell_item_bountiful_feast'),
(57337,'spell_gen_feast'),
(57397,'spell_gen_feast'),
(58466,'spell_gen_feast'),
(58475,'spell_gen_feast'),
(66477,'spell_gen_feast');

View File

@@ -1599,6 +1599,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
@@ -4447,6 +4535,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);

View File

@@ -1067,6 +1067,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 sObjectMgr->GetBroadcastText(_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
@@ -4285,6 +4326,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);