Convert script of npc tabard vendor to SAI and add missing tabard recovery

This commit is contained in:
Xanvial
2012-04-22 08:40:22 +07:00
parent bc4303d8f9
commit 98f9472715
2 changed files with 72 additions and 167 deletions
-167
View File
@@ -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();