mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-02-06 17:08:23 +01:00
Scripts/Quests:
* add support for quest 12634 Some Make Lemonade, Some Make Liquor (implement 51840 spell and Adventurous Dwarf AI, thanks akadabeer) * implement dummy effect for 49587 Seeds of Nature's Wrath spell (used in quest 12459 That Which Creates Can Also Destroy) * implement dummy effect for 19512 Apply Salve spell (used in quest 6124/6129 Curing the Sick) Scripts/Misc: some cleanup in chat log Core/Locales: fix issue when default locale for trinity_string strings was not used (thanks Aokromes for testing). --HG-- branch : trunk
This commit is contained in:
@@ -446,11 +446,84 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## npc_adventurous_dwarf
|
||||
######*/
|
||||
|
||||
#define GOSSIP_OPTION_ORANGE "Can you spare an orange?"
|
||||
#define GOSSIP_OPTION_BANANAS "Have a spare bunch of bananas?"
|
||||
#define GOSSIP_OPTION_PAPAYA "I could really use a papaya."
|
||||
|
||||
enum eAdventurousDwarf
|
||||
{
|
||||
QUEST_12634 = 12634,
|
||||
|
||||
ITEM_BANANAS = 38653,
|
||||
ITEM_PAPAYA = 38655,
|
||||
ITEM_ORANGE = 38656,
|
||||
|
||||
SPELL_ADD_ORANGE = 52073,
|
||||
SPELL_ADD_BANANAS = 52074,
|
||||
SPELL_ADD_PAPAYA = 52076,
|
||||
|
||||
GOSSIP_MENU_DWARF = 13307,
|
||||
|
||||
SAY_DWARF_OUCH = -1571042,
|
||||
SAY_DWARF_HELP = -1571043
|
||||
};
|
||||
|
||||
class npc_adventurous_dwarf : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_adventurous_dwarf() : CreatureScript("npc_adventurous_dwarf") { }
|
||||
|
||||
CreatureAI *GetAI(Creature *pCreature) const
|
||||
{
|
||||
DoScriptText(SAY_DWARF_OUCH, pCreature);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool OnGossipHello(Player *pPlayer, Creature *pCreature)
|
||||
{
|
||||
if (pPlayer->GetQuestStatus(QUEST_12634) != QUEST_STATUS_INCOMPLETE)
|
||||
return false;
|
||||
|
||||
if (pPlayer->GetItemCount(ITEM_ORANGE) < 1)
|
||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_OPTION_ORANGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
|
||||
|
||||
if (pPlayer->GetItemCount(ITEM_BANANAS) < 2)
|
||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_OPTION_BANANAS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
|
||||
|
||||
if (pPlayer->GetItemCount(ITEM_PAPAYA) < 1)
|
||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_OPTION_PAPAYA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
|
||||
|
||||
pPlayer->PlayerTalkClass->SendGossipMenu(GOSSIP_MENU_DWARF, pCreature->GetGUID());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OnGossipSelect(Player *pPlayer, Creature *pCreature, uint32 /*uiSender*/, uint32 uiAction)
|
||||
{
|
||||
uint32 spellId = 0;
|
||||
switch (uiAction)
|
||||
{
|
||||
case GOSSIP_ACTION_INFO_DEF + 1: spellId = SPELL_ADD_ORANGE; break;
|
||||
case GOSSIP_ACTION_INFO_DEF + 2: spellId = SPELL_ADD_BANANAS; break;
|
||||
case GOSSIP_ACTION_INFO_DEF + 3: spellId = SPELL_ADD_PAPAYA; break;
|
||||
}
|
||||
if (spellId)
|
||||
pPlayer->CastSpell(pPlayer, spellId, true);
|
||||
DoScriptText(SAY_DWARF_HELP, pCreature);
|
||||
pCreature->ForcedDespawn();
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_sholazar_basin()
|
||||
{
|
||||
new npc_injured_rainspeaker_oracle;
|
||||
new npc_vekjik;
|
||||
new npc_avatar_of_freya;
|
||||
new npc_bushwhacker;
|
||||
new npc_engineer_helice;
|
||||
new npc_injured_rainspeaker_oracle();
|
||||
new npc_vekjik();
|
||||
new npc_avatar_of_freya();
|
||||
new npc_bushwhacker();
|
||||
new npc_engineer_helice();
|
||||
new npc_adventurous_dwarf();
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public:
|
||||
|
||||
// http://www.wowhead.com/quest=55 Morbent Fel
|
||||
// 8913 Sacred Cleansing
|
||||
enum Quest55Data
|
||||
enum eQuest55Data
|
||||
{
|
||||
NPC_MORBENT = 1200,
|
||||
NPC_WEAKENED_MORBENT = 24782,
|
||||
@@ -79,7 +79,7 @@ public:
|
||||
|
||||
// http://www.wowhead.com/quest=5206 Marauders of Darrowshire
|
||||
// 17271 Test Fetid Skull
|
||||
enum Quest5206Data
|
||||
enum eQuest5206Data
|
||||
{
|
||||
SPELL_CREATE_RESONATING_SKULL = 17269,
|
||||
SPELL_CREATE_BONE_DUST = 17270
|
||||
@@ -123,9 +123,66 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=6124 Curing the Sick (A)
|
||||
// http://www.wowhead.com/quest=6129 Curing the Sick (H)
|
||||
// 19512 Apply Salve
|
||||
enum eQuests6124_6129Data
|
||||
{
|
||||
NPC_SICKLY_GAZELLE = 12296,
|
||||
NPC_CURED_GAZELLE = 12297,
|
||||
NPC_SICKLY_DEER = 12298,
|
||||
NPC_CURED_DEER = 12299,
|
||||
DESPAWN_TIME = 30000
|
||||
};
|
||||
|
||||
class spell_q6124_6129_apply_salve : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_q6124_6129_apply_salve() : SpellScriptLoader("spell_q6124_6129_apply_salve") { }
|
||||
|
||||
class spell_q6124_6129_apply_salve_SpellScript : public SpellScript
|
||||
{
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (GetCastItem())
|
||||
if (Player* pCaster = GetCaster()->ToPlayer())
|
||||
if (Creature* pCreatureTarget = GetHitCreature())
|
||||
{
|
||||
uint32 uiNewEntry = 0;
|
||||
switch (pCaster->GetTeam())
|
||||
{
|
||||
case HORDE:
|
||||
if (pCreatureTarget->GetEntry() == NPC_SICKLY_GAZELLE)
|
||||
uiNewEntry = NPC_CURED_GAZELLE;
|
||||
break;
|
||||
case ALLIANCE:
|
||||
if (pCreatureTarget->GetEntry() == NPC_SICKLY_DEER)
|
||||
uiNewEntry = NPC_CURED_DEER;
|
||||
break;
|
||||
}
|
||||
if (uiNewEntry)
|
||||
{
|
||||
pCreatureTarget->UpdateEntry(uiNewEntry);
|
||||
pCreatureTarget->ForcedDespawn(DESPAWN_TIME);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffect += SpellEffectFn(spell_q6124_6129_apply_salve_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_q6124_6129_apply_salve_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=10255 Testing the Antidote
|
||||
// 34665 Administer Antidote
|
||||
enum Quest10255Data
|
||||
enum eQuest10255Data
|
||||
{
|
||||
NPC_HELBOAR = 16880,
|
||||
NPC_DREADTUSK = 16992,
|
||||
@@ -144,7 +201,7 @@ public:
|
||||
|
||||
// http://www.wowhead.com/quest=11515 Blood for Blood
|
||||
// 44936 Quest - Fel Siphon Dummy
|
||||
enum Quest11515Data
|
||||
enum eQuest11515Data
|
||||
{
|
||||
NPC_FELBLOOD_INITIATE = 24918,
|
||||
NPC_EMACIATED_FELBLOOD = 24955
|
||||
@@ -163,7 +220,7 @@ public:
|
||||
|
||||
// http://www.wowhead.com/quest=11587 Prison Break
|
||||
// 45449 Arcane Prisoner Rescue
|
||||
enum Quest11587Data
|
||||
enum eQuest11587Data
|
||||
{
|
||||
SPELL_SUMMON_ARCANE_PRISONER_MALE = 45446, // Summon Arcane Prisoner - Male
|
||||
SPELL_SUMMON_ARCANE_PRISONER_FEMALE = 45448, // Summon Arcane Prisoner - Female
|
||||
@@ -215,7 +272,7 @@ public:
|
||||
|
||||
// http://www.wowhead.com/quest=11730 Master and Servant
|
||||
// 46023 The Ultrasonic Screwdriver
|
||||
enum Quest11730Data
|
||||
enum eQuest11730Data
|
||||
{
|
||||
SPELL_SUMMON_SCAVENGEBOT_004A8 = 46063,
|
||||
SPELL_SUMMON_SENTRYBOT_57K = 46068,
|
||||
@@ -296,6 +353,113 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=12459 That Which Creates Can Also Destroy
|
||||
// 49587 Seeds of Nature's Wrath
|
||||
enum eQuest12459Data
|
||||
{
|
||||
NPC_REANIMATED_FROSTWYRM = 26841,
|
||||
NPC_WEAK_REANIMATED_FROSTWYRM = 27821,
|
||||
|
||||
NPC_TURGID = 27808,
|
||||
NPC_WEAK_TURGID = 27809,
|
||||
|
||||
NPC_DEATHGAZE = 27122,
|
||||
NPC_WEAK_DEATHGAZE = 27807,
|
||||
};
|
||||
|
||||
class spell_q12459_seeds_of_natures_wrath : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_q12459_seeds_of_natures_wrath() : SpellScriptLoader("spell_q12459_seeds_of_natures_wrath") { }
|
||||
|
||||
class spell_q12459_seeds_of_natures_wrath_SpellScript : public SpellScript
|
||||
{
|
||||
public:
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Creature* pCreatureTarget = GetHitCreature())
|
||||
{
|
||||
uint32 uiNewEntry = 0;
|
||||
switch (pCreatureTarget->GetEntry())
|
||||
{
|
||||
case NPC_REANIMATED_FROSTWYRM: uiNewEntry = NPC_WEAK_REANIMATED_FROSTWYRM; break;
|
||||
case NPC_TURGID: uiNewEntry = NPC_WEAK_TURGID; break;
|
||||
case NPC_DEATHGAZE: uiNewEntry = NPC_WEAK_DEATHGAZE; break;
|
||||
}
|
||||
if (uiNewEntry)
|
||||
pCreatureTarget->UpdateEntry(uiNewEntry);
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffect += SpellEffectFn(spell_q12459_seeds_of_natures_wrath_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_q12459_seeds_of_natures_wrath_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=12634 Some Make Lemonade, Some Make Liquor
|
||||
// 51840 Despawn Fruit Tosser
|
||||
enum eQuest12634Data
|
||||
{
|
||||
SPELL_BANANAS_FALL_TO_GROUND = 51836,
|
||||
SPELL_ORANGE_FALLS_TO_GROUND = 51837,
|
||||
SPELL_PAPAYA_FALLS_TO_GROUND = 51839,
|
||||
SPELL_SUMMON_ADVENTUROUS_DWARF = 52070
|
||||
};
|
||||
|
||||
class spell_q12634_despawn_fruit_tosser : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_q12634_despawn_fruit_tosser() : SpellScriptLoader("spell_q12634_despawn_fruit_tosser") { }
|
||||
|
||||
class spell_q12634_despawn_fruit_tosser_SpellScript : public SpellScript
|
||||
{
|
||||
public:
|
||||
bool Validate(SpellEntry const * /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(SPELL_BANANAS_FALL_TO_GROUND))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_ORANGE_FALLS_TO_GROUND))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_PAPAYA_FALLS_TO_GROUND))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_SUMMON_ADVENTUROUS_DWARF))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
uint32 spellId = SPELL_BANANAS_FALL_TO_GROUND;
|
||||
switch (urand(0, 3))
|
||||
{
|
||||
case 1: spellId = SPELL_ORANGE_FALLS_TO_GROUND; break;
|
||||
case 2: spellId = SPELL_PAPAYA_FALLS_TO_GROUND; break;
|
||||
}
|
||||
// sometimes, if you're lucky, you get a dwarf
|
||||
if (roll_chance_i(5))
|
||||
spellId = SPELL_SUMMON_ADVENTUROUS_DWARF;
|
||||
GetCaster()->CastSpell(GetCaster(), spellId, true, NULL);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffect += SpellEffectFn(spell_q12634_despawn_fruit_tosser_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_q12634_despawn_fruit_tosser_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=12683 Burning to Help
|
||||
// 52308 Take Sputum Sample
|
||||
class spell_q12683_take_sputum_sample : public SpellScriptLoader
|
||||
@@ -383,10 +547,13 @@ void AddSC_quest_spell_scripts()
|
||||
{
|
||||
new spell_q55_sacred_cleansing();
|
||||
new spell_q5206_test_fetid_skull();
|
||||
new spell_q6124_6129_apply_salve();
|
||||
new spell_q10255_administer_antidote();
|
||||
new spell_q11515_fel_siphon_dummy();
|
||||
new spell_q11587_arcane_prisoner_rescue();
|
||||
new spell_q11730_ultrasonic_screwdriver();
|
||||
new spell_q12459_seeds_of_natures_wrath();
|
||||
new spell_q12634_despawn_fruit_tosser();
|
||||
new spell_q12683_take_sputum_sample();
|
||||
new spell_q12937_relief_for_the_fallen();
|
||||
}
|
||||
|
||||
@@ -72,6 +72,18 @@ public:
|
||||
player->GetName(), group ? group->GetLeaderName() : "<unknown>", msg.c_str());
|
||||
break;
|
||||
|
||||
case CHAT_MSG_PARTY_LEADER:
|
||||
if (sWorld.getBoolConfig(CONFIG_CHATLOG_PARTY))
|
||||
sLog.outChat("[PARTY] Leader %s tells group: %s",
|
||||
player->GetName(), msg.c_str());
|
||||
break;
|
||||
|
||||
case CHAT_MSG_RAID:
|
||||
if (sWorld.getBoolConfig(CONFIG_CHATLOG_RAID))
|
||||
sLog.outChat("[RAID] Player %s tells raid with leader %s: %s",
|
||||
player->GetName(), group ? group->GetLeaderName() : "<unknown>", msg.c_str());
|
||||
break;
|
||||
|
||||
case CHAT_MSG_RAID_LEADER:
|
||||
if (sWorld.getBoolConfig(CONFIG_CHATLOG_RAID))
|
||||
sLog.outChat("[RAID] Leader player %s tells raid: %s",
|
||||
@@ -84,29 +96,17 @@ public:
|
||||
player->GetName(), msg.c_str());
|
||||
break;
|
||||
|
||||
case CHAT_MSG_PARTY_LEADER:
|
||||
if (sWorld.getBoolConfig(CONFIG_CHATLOG_PARTY))
|
||||
sLog.outChat("[PARTY] Leader %s tells group: %s",
|
||||
player->GetName(), msg.c_str());
|
||||
break;
|
||||
|
||||
case CHAT_MSG_BATTLEGROUND_LEADER:
|
||||
if (sWorld.getBoolConfig(CONFIG_CHATLOG_BGROUND))
|
||||
sLog.outChat("[RAID] Leader player %s tells battleground: %s",
|
||||
player->GetName(), msg.c_str());
|
||||
break;
|
||||
|
||||
case CHAT_MSG_RAID:
|
||||
if (sWorld.getBoolConfig(CONFIG_CHATLOG_RAID))
|
||||
sLog.outChat("[RAID] Player %s tells raid with leader %s: %s",
|
||||
player->GetName(), group ? group->GetLeaderName() : "<unknown>", msg.c_str());
|
||||
break;
|
||||
|
||||
case CHAT_MSG_BATTLEGROUND:
|
||||
if (sWorld.getBoolConfig(CONFIG_CHATLOG_BGROUND))
|
||||
sLog.outChat("[BATTLEGROUND] Player %s tells battleground with leader %s: %s",
|
||||
player->GetName(), group ? group->GetLeaderName() : "<unknown>", msg.c_str());
|
||||
break;
|
||||
|
||||
case CHAT_MSG_BATTLEGROUND_LEADER:
|
||||
if (sWorld.getBoolConfig(CONFIG_CHATLOG_BGROUND))
|
||||
sLog.outChat("[BATTLEGROUND] Leader player %s tells battleground: %s",
|
||||
player->GetName(), msg.c_str());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user