mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
fix(Core/spell_item): Fix a few items with spell effects (#2296)
This commit is contained in:
@@ -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');
|
||||||
@@ -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
|
class spell_item_titanium_seal_of_dalaran : public SpellScriptLoader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -64,12 +71,19 @@ class spell_item_titanium_seal_of_dalaran : public SpellScriptLoader
|
|||||||
Unit* caster = GetCaster();
|
Unit* caster = GetCaster();
|
||||||
if (Player* player = caster->ToPlayer())
|
if (Player* player = caster->ToPlayer())
|
||||||
{
|
{
|
||||||
std::string name = player->GetName();
|
LocaleConstant loc_idx = player->GetSession()->GetSessionDbLocaleIndex();
|
||||||
player->TextEmote("casually flips his Titanium Seal of Dalaran");
|
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))
|
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
|
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:
|
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()
|
bool Load()
|
||||||
{
|
{
|
||||||
@@ -751,18 +778,43 @@ class spell_item_fish_feast : public SpellScriptLoader
|
|||||||
void HandleScriptEffect(SpellEffIndex effIndex)
|
void HandleScriptEffect(SpellEffIndex effIndex)
|
||||||
{
|
{
|
||||||
PreventHitDefaultEffect(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()
|
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
|
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:
|
default:
|
||||||
break;
|
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()
|
void Register()
|
||||||
@@ -3987,7 +4030,7 @@ void AddSC_item_spell_scripts()
|
|||||||
new spell_item_crazy_alchemists_potion();
|
new spell_item_crazy_alchemists_potion();
|
||||||
new spell_item_skull_of_impeding_doom();
|
new spell_item_skull_of_impeding_doom();
|
||||||
new spell_item_carrot_on_a_stick();
|
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_gnomish_universal_remote();
|
||||||
new spell_item_strong_anti_venom();
|
new spell_item_strong_anti_venom();
|
||||||
new spell_item_gnomish_shrink_ray();
|
new spell_item_gnomish_shrink_ray();
|
||||||
|
|||||||
Reference in New Issue
Block a user