diff --git a/data/sql/updates/pending_db_world/rev_1568988467237730140.sql b/data/sql/updates/pending_db_world/rev_1568988467237730140.sql new file mode 100644 index 000000000..014aa8a54 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1568988467237730140.sql @@ -0,0 +1,12 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1568988467237730140'); + +UPDATE `broadcast_text` SET `MaleText` = REPLACE(`MaleText`,'%s','$n'), `FemaleText` = REPLACE(`FemaleText`,'%s','$n') WHERE `ID` = 31843; +UPDATE `broadcast_text_locale` SET `MaleText` = REPLACE(`MaleText`,'%s','$n'), `FemaleText` = REPLACE(`FemaleText`,'%s','$n') WHERE `ID` = 31843; + +DELETE FROM `spell_script_names` WHERE `spell_id` IN (57426,57301,58474,58465); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) +VALUES +(57426,'spell_item_feast'), +(57301,'spell_item_feast'), +(58474,'spell_item_feast'), +(58465,'spell_item_feast'); diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index f3b179695..7f057d03a 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -48,6 +48,13 @@ class spell_item_massive_seaforium_charge : public SpellScriptLoader } }; +enum TitaniumSealOfDalaran +{ + TITANIUM_SEAL_OF_DALARAN_BROADCAST_TEXT_ID_FLIP = 32638, + TITANIUM_SEAL_OF_DALARAN_BROADCAST_TEXT_ID_HEADS_UP = 32663, + TITANIUM_SEAL_OF_DALARAN_BROADCAST_TEXT_ID_FACE_DOWN = 32664 +}; + class spell_item_titanium_seal_of_dalaran : public SpellScriptLoader { public: @@ -64,12 +71,19 @@ class spell_item_titanium_seal_of_dalaran : public SpellScriptLoader Unit* caster = GetCaster(); if (Player* player = caster->ToPlayer()) { - std::string name = player->GetName(); - player->TextEmote("casually flips his Titanium Seal of Dalaran"); + LocaleConstant loc_idx = player->GetSession()->GetSessionDbLocaleIndex(); + if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(TITANIUM_SEAL_OF_DALARAN_BROADCAST_TEXT_ID_FLIP)) + player->TextEmote(bct->GetText(loc_idx, player->getGender())); if (urand(0,1)) - player->TextEmote("finds the coin face down for tails!"); + { + if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(TITANIUM_SEAL_OF_DALARAN_BROADCAST_TEXT_ID_FACE_DOWN)) + player->TextEmote(bct->GetText(loc_idx, player->getGender())); + } else - player->TextEmote("catches the coin heads up!"); + { + if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(TITANIUM_SEAL_OF_DALARAN_BROADCAST_TEXT_ID_HEADS_UP)) + player->TextEmote(bct->GetText(loc_idx, player->getGender())); + } } } @@ -734,14 +748,27 @@ public: } }; -class spell_item_fish_feast : public SpellScriptLoader +enum Feast +{ + SPELL_GREAT_FEAST = 57301, + SPELL_FISH_FEAST = 57426, + SPELL_SMALL_FEAST = 58474, + SPELL_GIGANTIC_FEAST = 58465, + + GREAT_FEAST_BROADCAST_TEXT_ID_PREPARE = 31843, + FISH_FEAST_BROADCAST_TEXT_ID_PREPARE = 31844, + SMALL_FEAST_BROADCAST_TEXT_ID_PREPARE = 31845, + GIGANTIC_FEAST_BROADCAST_TEXT_ID_PREPARE = 31846 +}; + +class spell_item_feast : public SpellScriptLoader { public: - spell_item_fish_feast() : SpellScriptLoader("spell_item_fish_feast") {} + spell_item_feast() : SpellScriptLoader("spell_item_feast") {} - class spell_item_fish_feast_SpellScript : public SpellScript + class spell_item_feast_SpellScript : public SpellScript { - PrepareSpellScript(spell_item_fish_feast_SpellScript); + PrepareSpellScript(spell_item_feast_SpellScript); bool Load() { @@ -751,18 +778,43 @@ class spell_item_fish_feast : public SpellScriptLoader void HandleScriptEffect(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetCaster()->ToPlayer()->TextEmote("prepares a Fish Feast!"); + + Unit* caster = GetCaster(); + if (Player* player = caster->ToPlayer()) + { + LocaleConstant loc_idx = player->GetSession()->GetSessionDbLocaleIndex(); + + switch(GetSpellInfo()->Id) + { + case SPELL_GREAT_FEAST: + if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(GREAT_FEAST_BROADCAST_TEXT_ID_PREPARE)) + player->MonsterTextEmote(bct->GetText(loc_idx, player->getGender()).c_str(), player, false); + break; + case SPELL_FISH_FEAST: + if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(FISH_FEAST_BROADCAST_TEXT_ID_PREPARE)) + player->MonsterTextEmote(bct->GetText(loc_idx, player->getGender()).c_str(), player, false); + break; + case SPELL_SMALL_FEAST: + if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(SMALL_FEAST_BROADCAST_TEXT_ID_PREPARE)) + player->MonsterTextEmote(bct->GetText(loc_idx, player->getGender()).c_str(), player, false); + break; + case SPELL_GIGANTIC_FEAST: + if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(GIGANTIC_FEAST_BROADCAST_TEXT_ID_PREPARE)) + player->MonsterTextEmote(bct->GetText(loc_idx, player->getGender()).c_str(), player, false); + break; + } + } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_item_fish_feast_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + OnEffectHitTarget += SpellEffectFn(spell_item_feast_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; SpellScript* GetSpellScript() const { - return new spell_item_fish_feast_SpellScript(); + return new spell_item_feast_SpellScript(); } }; @@ -1056,15 +1108,6 @@ class spell_item_oracle_ablutions : public SpellScriptLoader default: break; } - if (Player* player = caster->ToPlayer()) - { - std::string name = player->GetName(); - player->TextEmote("casually flips his Titanium Seal of Dalaran"); - if (urand(0,1)) - player->TextEmote("finds the coin face down for tails!"); - else - player->TextEmote("catches the coin heads up!"); - } } void Register() @@ -3987,7 +4030,7 @@ void AddSC_item_spell_scripts() new spell_item_crazy_alchemists_potion(); new spell_item_skull_of_impeding_doom(); new spell_item_carrot_on_a_stick(); - new spell_item_fish_feast(); + new spell_item_feast(); new spell_item_gnomish_universal_remote(); new spell_item_strong_anti_venom(); new spell_item_gnomish_shrink_ray();