eluna-scripts-ornfelt/lua/WowEmulationScriptPack/C++/titlevendor.cpp
2024-09-23 07:59:23 +02:00

227 lines
8.5 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* Custom Shadowhack Title Vendor */
#include "ScriptPCH.h"
#include "ScriptedEscortAI.h"
#define MAXTITLES 94
struct title
{
uint8 id;
char* name;
uint32 honor;
};
const title titles[MAXTITLES]=
{/*{1, "рядовой", 10000 },
{2, "капрал", 12000},
{3, "сержант", 15000},
{4, "старший сержант",18000},
{5, "старшина", 20000},
{6, "рыцарь", 21000},
{7, "рыцарь-лейтенант", 30000},
{8, "рыцарь-капитан", 35000},
{9, "рыцарь-защитник", 40000},
{10, "лейтенант-командор", 45000},
{11, "командор", 40000},
{12, "маршал", 45000},
{13, "фельдмаршал", 50000},
{14, "главнокомандующий", 70000},
{15, "разведчик", 30000},
{16, "пехотинец", 25000},
{17, "сержант", 15000},
{18, "старший сержант", 18000},
{19, "старшина", 20000},
{20, "каменый страж", 30000},
{21, "кровавый страж", 40000},
{22, "легионер", 40000},
{23, "центурион", 45000},
{24, "защитник", 50000},
{25, "генерал лейтенант", 50000},
{26, "генерал", 45000},
{27, "вождь", 60000},
{28, "верховный вождь", 80000},
{43, "дуэлянт", 25000},
{44, "фаворит", 30000},
{45, "претендент", 35000},*/
{46, "повелитель скарабеев", 60000},
{47, "завоеватель", 80000 },
{53, "Защитник Наару", 75000},
{63, "Из расколотого сонца", 60000},
{64, "Длань Адала", 80000},
{72, "Военачальник", 30000},
{74, "Премудрый", 64000},
{75, "Страж огня", 40000},
{76, "Хранитель огня", 50000},
{77, "Превозносимый", 90000},
{78, "Исследователь", 100000},
{79, "Дипломат", 40000},
{81, "Искатель", 82000},
{83, "Морской дьявол", 90000},
{84, "Шеф-повар", 15000},
{85, "Повелитель штормов", 70000},
{87, "Изумрудный сновидец", 105000},
{89, "Пророк", 80000},
{90, "Тлетворный", 30000},
{91, "Ловчий", 25000},
{92, "Черного клинка", 50000},
{93, "Верховный маг", 70000},
{94, "Вестник войны", 60000},
{95, "Ассасин", 85000},
{96, "Великий алхимик", 20000},
{97, "Великий кузнец", 20000},
{98, "Великий шеф-повар", 20000},
{99, "Великий зачаровыватель", 20000},
{100, "Великий инженер", 20000},
{101, "Доктор", 18000},
{102, "Великий рыболов", 20000},
{103, "Великий травник", 20000},
{104, "Великий начертатель", 20000},
{105, "Великий ювелир", 20000},
{106, "Великий кожевник", 20000},
{107, "Великий мастер горного дела", 20000 },
{108, "Великий мастер снятия шкур", 20000},
{109, "Великий портной", 20000},
{110, "Сын КельТаласа", 90000},
{111, "Сын Аргуса", 95000},
{112, "Сын Хаз Модана", 80000},
{113, "Гномреганский", 65000},
{114, "Львиное сердце", 110000},
{115, "Защитник Элуны", 90000},
{116, "Герой Оргриммара", 87000},
{117, "Хозяин лугов", 20000},
{118, "из черного копья", 50000},
{119, "Отрекшийся", 50000},
{120, "Искатель магии", 40000},
{121, "Покоритель сумрака", 120000},
{122, "Завоеватель Наксрамаса", 120000},
{123, "Герой нордскола", 125000},
{124, "Тыквер", 50000},
{125, "Хранитель мудрости", 60000},
{126, "Сын Альянса", 50000 },
{127, "Сын орды", 50000},
{128, "Всепобеждающий", 100000},
{129, "Защитник ледяных пустошей", 100000},
{130, "Посланник", 30000},
{131, "Серебрянный защитник", 25000},
{132, "Защитник кенария", 25000},
{133, "Хмелевар", 45000},
{134, "Весельчак", 50000},
{135, "Безумно влюбленный", 30000},
{137, "Благотетельница", 25000},
{138, "Благодетель", 25000},
{139, "Покоритель обсидианового святилища", 110000},
{140, "Сумеречный", 110000},
{141, "Беcсмертный", 115000},
{142, "Неумирающий", 115000},
{143, "Дженкинс", 60000},
{144, "Адмирал кровавого паруса", 55000},
{145, "Чокнутый", 70000},
{146, "Экзодарский", 40000},
{147, "Дарнасский", 40000},
{148, "Стальгорнский", 40000 },
{149, "Штормградский", 40000},
{150, "Огримарский", 40000},
{151, "СенДжинский", 35000},
{152, "из Луносвета", 35000 },
{153, "из Громового Утеса", 35000},
{154, "из Подгорода", 35000 },
{155, "Чудесный", 80000},
{156, "Крестоносец", 100000},
{158, "Победивший смерть", 90000},
{159, "Небесный заступник", 95000},
{160, "Завоеватель Ульдуара", 125000},
{161, "Защитник Ульдуара", 125000},
{164, "говорящий со звездами", 97000},
{165, "звездный скиталец", 100000},
{166, "посланник титанов", 100000},
{168, "Странник", 40000},
{170, "Великий крестоносец", 150000},
{171, "Серебрянный заступник", 30000}};
class npc_titlevendor : public CreatureScript
{
public:
npc_titlevendor() : CreatureScript("npc_titlevendor") { }
bool OnGossipHello(Player *player, Creature *_Creature)
{
int lastindex=0;
uint8 i=0;
for (; i<11; ++i)
{
char TitleCost[80];
snprintf( TitleCost, 80, "%s, cost - %i", titles[lastindex+i].name, titles[lastindex+i].honor );
player->ADD_GOSSIP_ITEM(11, TitleCost, GOSSIP_SENDER_MAIN, lastindex+i);
}
player->ADD_GOSSIP_ITEM( 7, "More titles?", GOSSIP_SENDER_MAIN, 1300+lastindex+i);
player->ADD_GOSSIP_ITEM( 4, "Nevermind", GOSSIP_SENDER_MAIN, 1224);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
{
if(action == 1224)
{
player->CLOSE_GOSSIP_MENU();
return true;
}
player->PlayerTalkClass->GetGossipMenu().ClearMenu();
uint16 lastindex=action>1300?action-1300:0;
if(lastindex)
{
uint8 i=0;
for (; i<11; ++i)
{
if(lastindex+i>MAXTITLES-1)
break;
char TitleCost[80];
snprintf( TitleCost, 80, "%s, cost - %i", titles[lastindex+i].name, titles[lastindex+i].honor );
player->ADD_GOSSIP_ITEM(11, TitleCost, GOSSIP_SENDER_MAIN, lastindex+i);
}
if(lastindex+i<MAXTITLES-1)
player->ADD_GOSSIP_ITEM( 7, "More titles?", GOSSIP_SENDER_MAIN, 1300+lastindex+i);
player->ADD_GOSSIP_ITEM( 4, "Nevermind", GOSSIP_SENDER_MAIN, 1224);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,creature->GetGUID());
return true;
}
if(player->HasTitle(titles[action].id))
{
creature->MonsterWhisper("You allredy have this title", player->GetGUID(), true);
player->CLOSE_GOSSIP_MENU();
return true;
}
if(player->GetHonorPoints()<=titles[action].honor)
{
creature->MonsterWhisper("You need more honor points", player->GetGUID(), true);
player->CLOSE_GOSSIP_MENU();
return true;
}
player->ModifyHonorPoints(0-titles[action].honor);
CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(titles[action].id);
player->SetTitle(titleInfo);
creature->MonsterWhisper("You got new title!", player->GetGUID(), true);
player->CLOSE_GOSSIP_MENU();
return true;
}
bool GossipSelect_titlevendor(Player *player, Creature *_Creature, uint32 sender, uint32 action )
{
// Main menu
if (sender == GOSSIP_SENDER_MAIN)
OnGossipSelect(player, _Creature, 0, action);
return true;
}
};
void AddSC_npc_titlevendor()
{
new npc_titlevendor;
}