Convert script of npc tabard vendor to SAI and add missing tabard recovery
This commit is contained in:
@@ -2529,172 +2529,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## npc_tabard_vendor
|
||||
######*/
|
||||
|
||||
enum
|
||||
{
|
||||
QUEST_TRUE_MASTERS_OF_LIGHT = 9737,
|
||||
QUEST_THE_UNWRITTEN_PROPHECY = 9762,
|
||||
QUEST_INTO_THE_BREACH = 10259,
|
||||
QUEST_BATTLE_OF_THE_CRIMSON_WATCH = 10781,
|
||||
QUEST_SHARDS_OF_AHUNE = 11972,
|
||||
|
||||
ACHIEVEMENT_EXPLORE_NORTHREND = 45,
|
||||
ACHIEVEMENT_TWENTYFIVE_TABARDS = 1021,
|
||||
ACHIEVEMENT_THE_LOREMASTER_A = 1681,
|
||||
ACHIEVEMENT_THE_LOREMASTER_H = 1682,
|
||||
|
||||
ITEM_TABARD_OF_THE_HAND = 24344,
|
||||
ITEM_TABARD_OF_THE_BLOOD_KNIGHT = 25549,
|
||||
ITEM_TABARD_OF_THE_PROTECTOR = 28788,
|
||||
ITEM_OFFERING_OF_THE_SHATAR = 31408,
|
||||
ITEM_GREEN_TROPHY_TABARD_OF_THE_ILLIDARI = 31404,
|
||||
ITEM_PURPLE_TROPHY_TABARD_OF_THE_ILLIDARI = 31405,
|
||||
ITEM_TABARD_OF_THE_SUMMER_SKIES = 35279,
|
||||
ITEM_TABARD_OF_THE_SUMMER_FLAMES = 35280,
|
||||
ITEM_TABARD_OF_THE_ACHIEVER = 40643,
|
||||
ITEM_LOREMASTERS_COLORS = 43300,
|
||||
ITEM_TABARD_OF_THE_EXPLORER = 43348,
|
||||
|
||||
SPELL_TABARD_OF_THE_BLOOD_KNIGHT = 54974,
|
||||
SPELL_TABARD_OF_THE_HAND = 54976,
|
||||
SPELL_GREEN_TROPHY_TABARD_OF_THE_ILLIDARI = 54977,
|
||||
SPELL_PURPLE_TROPHY_TABARD_OF_THE_ILLIDARI = 54982,
|
||||
SPELL_TABARD_OF_THE_ACHIEVER = 55006,
|
||||
SPELL_TABARD_OF_THE_PROTECTOR = 55008,
|
||||
SPELL_LOREMASTERS_COLORS = 58194,
|
||||
SPELL_TABARD_OF_THE_EXPLORER = 58224,
|
||||
SPELL_TABARD_OF_SUMMER_SKIES = 62768,
|
||||
SPELL_TABARD_OF_SUMMER_FLAMES = 62769
|
||||
};
|
||||
|
||||
#define GOSSIP_LOST_TABARD_OF_BLOOD_KNIGHT "I've lost my Tabard of Blood Knight."
|
||||
#define GOSSIP_LOST_TABARD_OF_THE_HAND "I've lost my Tabard of the Hand."
|
||||
#define GOSSIP_LOST_TABARD_OF_THE_PROTECTOR "I've lost my Tabard of the Protector."
|
||||
#define GOSSIP_LOST_GREEN_TROPHY_TABARD_OF_THE_ILLIDARI "I've lost my Green Trophy Tabard of the Illidari."
|
||||
#define GOSSIP_LOST_PURPLE_TROPHY_TABARD_OF_THE_ILLIDARI "I've lost my Purple Trophy Tabard of the Illidari."
|
||||
#define GOSSIP_LOST_TABARD_OF_SUMMER_SKIES "I've lost my Tabard of Summer Skies."
|
||||
#define GOSSIP_LOST_TABARD_OF_SUMMER_FLAMES "I've lost my Tabard of Summer Flames."
|
||||
#define GOSSIP_LOST_LOREMASTERS_COLORS "I've lost my Loremaster's Colors."
|
||||
#define GOSSIP_LOST_TABARD_OF_THE_EXPLORER "I've lost my Tabard of the Explorer."
|
||||
#define GOSSIP_LOST_TABARD_OF_THE_ACHIEVER "I've lost my Tabard of the Achiever."
|
||||
|
||||
class npc_tabard_vendor : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_tabard_vendor() : CreatureScript("npc_tabard_vendor") { }
|
||||
|
||||
bool OnGossipHello(Player* player, Creature* creature)
|
||||
{
|
||||
bool lostBloodKnight = false;
|
||||
bool lostHand = false;
|
||||
bool lostProtector = false;
|
||||
bool lostIllidari = false;
|
||||
bool lostSummer = false;
|
||||
|
||||
//Tabard of the Blood Knight
|
||||
if (player->GetQuestRewardStatus(QUEST_TRUE_MASTERS_OF_LIGHT) && !player->HasItemCount(ITEM_TABARD_OF_THE_BLOOD_KNIGHT, 1, true))
|
||||
lostBloodKnight = true;
|
||||
|
||||
//Tabard of the Hand
|
||||
if (player->GetQuestRewardStatus(QUEST_THE_UNWRITTEN_PROPHECY) && !player->HasItemCount(ITEM_TABARD_OF_THE_HAND, 1, true))
|
||||
lostHand = true;
|
||||
|
||||
//Tabard of the Protector
|
||||
if (player->GetQuestRewardStatus(QUEST_INTO_THE_BREACH) && !player->HasItemCount(ITEM_TABARD_OF_THE_PROTECTOR, 1, true))
|
||||
lostProtector = true;
|
||||
|
||||
//Green Trophy Tabard of the Illidari
|
||||
//Purple Trophy Tabard of the Illidari
|
||||
if (player->GetQuestRewardStatus(QUEST_BATTLE_OF_THE_CRIMSON_WATCH) &&
|
||||
(!player->HasItemCount(ITEM_GREEN_TROPHY_TABARD_OF_THE_ILLIDARI, 1, true) &&
|
||||
!player->HasItemCount(ITEM_PURPLE_TROPHY_TABARD_OF_THE_ILLIDARI, 1, true) &&
|
||||
!player->HasItemCount(ITEM_OFFERING_OF_THE_SHATAR, 1, true)))
|
||||
lostIllidari = true;
|
||||
|
||||
//Tabard of Summer Skies
|
||||
//Tabard of Summer Flames
|
||||
if (player->GetQuestRewardStatus(QUEST_SHARDS_OF_AHUNE) &&
|
||||
!player->HasItemCount(ITEM_TABARD_OF_THE_SUMMER_SKIES, 1, true) &&
|
||||
!player->HasItemCount(ITEM_TABARD_OF_THE_SUMMER_FLAMES, 1, true))
|
||||
lostSummer = true;
|
||||
|
||||
if (lostBloodKnight || lostHand || lostProtector || lostIllidari || lostSummer)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
|
||||
|
||||
if (lostBloodKnight)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_TABARD_OF_BLOOD_KNIGHT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
|
||||
|
||||
if (lostHand)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_TABARD_OF_THE_HAND, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
|
||||
|
||||
if (lostProtector)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_TABARD_OF_THE_PROTECTOR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
|
||||
|
||||
if (lostIllidari)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_GREEN_TROPHY_TABARD_OF_THE_ILLIDARI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_PURPLE_TROPHY_TABARD_OF_THE_ILLIDARI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
|
||||
}
|
||||
|
||||
if (lostSummer)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_TABARD_OF_SUMMER_SKIES, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_TABARD_OF_SUMMER_FLAMES, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
|
||||
}
|
||||
|
||||
player->SEND_GOSSIP_MENU(13583, creature->GetGUID());
|
||||
}
|
||||
else
|
||||
player->GetSession()->SendListInventory(creature->GetGUID());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
|
||||
{
|
||||
player->PlayerTalkClass->ClearMenus();
|
||||
switch (action)
|
||||
{
|
||||
case GOSSIP_ACTION_TRADE:
|
||||
player->GetSession()->SendListInventory(creature->GetGUID());
|
||||
break;
|
||||
case GOSSIP_ACTION_INFO_DEF + 1:
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
player->CastSpell(player, SPELL_TABARD_OF_THE_BLOOD_KNIGHT, false);
|
||||
break;
|
||||
case GOSSIP_ACTION_INFO_DEF + 2:
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
player->CastSpell(player, SPELL_TABARD_OF_THE_HAND, false);
|
||||
break;
|
||||
case GOSSIP_ACTION_INFO_DEF + 3:
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
player->CastSpell(player, SPELL_TABARD_OF_THE_PROTECTOR, false);
|
||||
break;
|
||||
case GOSSIP_ACTION_INFO_DEF + 4:
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
player->CastSpell(player, SPELL_GREEN_TROPHY_TABARD_OF_THE_ILLIDARI, false);
|
||||
break;
|
||||
case GOSSIP_ACTION_INFO_DEF + 5:
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
player->CastSpell(player, SPELL_PURPLE_TROPHY_TABARD_OF_THE_ILLIDARI, false);
|
||||
break;
|
||||
case GOSSIP_ACTION_INFO_DEF + 6:
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
player->CastSpell(player, SPELL_TABARD_OF_SUMMER_SKIES, false);
|
||||
break;
|
||||
case GOSSIP_ACTION_INFO_DEF + 7:
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
player->CastSpell(player, SPELL_TABARD_OF_SUMMER_FLAMES, false);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## npc_experience
|
||||
######*/
|
||||
@@ -3158,7 +2992,6 @@ void AddSC_npcs_special()
|
||||
new npc_wormhole();
|
||||
new npc_pet_trainer();
|
||||
new npc_locksmith();
|
||||
new npc_tabard_vendor();
|
||||
new npc_experience();
|
||||
new npc_fire_elemental();
|
||||
new npc_earth_elemental();
|
||||
|
||||
Reference in New Issue
Block a user