diff --git a/VC100/100ScriptDev2.vcxproj b/VC100/100ScriptDev2.vcxproj
index a6acaa1..4fc4015 100644
--- a/VC100/100ScriptDev2.vcxproj
+++ b/VC100/100ScriptDev2.vcxproj
@@ -215,6 +215,7 @@
+
diff --git a/VC100/100ScriptDev2.vcxproj.filters b/VC100/100ScriptDev2.vcxproj.filters
index c3ad245..6e2b369 100644
--- a/VC100/100ScriptDev2.vcxproj.filters
+++ b/VC100/100ScriptDev2.vcxproj.filters
@@ -315,6 +315,9 @@
scripts\battlegrounds
+
+ scripts\battlegrounds
+
scripts\eastern_kingdoms
diff --git a/VC110/110ScriptDev2.vcxproj b/VC110/110ScriptDev2.vcxproj
index adbf2d7..136614e 100644
--- a/VC110/110ScriptDev2.vcxproj
+++ b/VC110/110ScriptDev2.vcxproj
@@ -220,6 +220,7 @@
+
diff --git a/VC110/110ScriptDev2.vcxproj.filters b/VC110/110ScriptDev2.vcxproj.filters
index c3ad245..f53bee6 100644
--- a/VC110/110ScriptDev2.vcxproj.filters
+++ b/VC110/110ScriptDev2.vcxproj.filters
@@ -315,6 +315,9 @@
scripts\battlegrounds
+
+ scripts\battlegrounds
+
scripts\eastern_kingdoms
diff --git a/VC90/90ScriptDev2.vcproj b/VC90/90ScriptDev2.vcproj
index e4eb5b3..babdece 100644
--- a/VC90/90ScriptDev2.vcproj
+++ b/VC90/90ScriptDev2.vcproj
@@ -403,6 +403,10 @@
+
+
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+/* ScriptData
+SDName: npc_rank_vendor
+SD%Complete: 33%
+SDComment: full work only of pvp titles, instance and event titles will be later...
+SDCategory: custom
+SDVersion: 1.0
+EndScriptData */
+
+#include "precompiled.h"
+#include "sc_creature.h"
+#include "sc_gossip.h"
+
+enum
+{
+ SAY_VENDOR_COMBAT = -1881001,
+ SAY_VENDOR_HAVE_TITLE = -1881002,
+ SAY_VENDOR_FORBID = -1881003,
+
+ GOSSIP_ITEM_PVP_TITLES = -3881001,
+ //GOSSIP_ITEM_INSTANCE_TITLES = ,
+ //GOSSIP_ITEM_EVENT_TITLES = ,
+
+ // PVP rank's - Aliance
+ GOSSIP_RANK_PRIVATE = -3881002,
+ GOSSIP_RANK_CORPORAL = -3881003,
+ GOSSIP_RANK_SERGEANT = -3881004,
+ GOSSIP_RANK_MASTER_SERGEANT = -3881005,
+ GOSSIP_RANK_SERGEANT_MAJOR = -3881006,
+ GOSSIP_RANK_KNIGHT = -3881007,
+ GOSSIP_RANK_KNIGHT_LIEUTENANT = -3881008,
+ GOSSIP_RANK_KNIGHT_CAPTAIN = -3881009,
+ GOSSIP_RANK_KNIGHT_CHAMPION = -3881010,
+ GOSSIP_RANK_LIEUTENANT_COMMANDER = -3881011,
+ GOSSIP_RANK_COMMANDER = -3881012,
+ GOSSIP_RANK_MARSHAL = -3881013,
+ GOSSIP_RANK_FIELD_MARSHAL = -3881014,
+ GOSSIP_RANK_GRAND_MARSHAL = -3881015,
+
+ // PVP rank's - Horde
+ GOSSIP_RANK_SCOUT = -3881016,
+ GOSSIP_RANK_GRUNT = -3881017,
+ GOSSIP_RANK_SERGEANT2 = -3881018,
+ GOSSIP_RANK_SENIOR_SERGEANT = -3881019,
+ GOSSIP_RANK_FIRST_SERGEANT = -3881020,
+ GOSSIP_RANK_STONE_GUARD = -3881021,
+ GOSSIP_RANK_BLOOD_GUARD = -3881022,
+ GOSSIP_RANK_LEGIONNAIRE = -3881023,
+ GOSSIP_RANK_CENTURION = -3881024,
+ GOSSIP_RANK_CHAMPION = -3881025,
+ GOSSIP_RANK_LIEUTENANT_GENERAL = -3881026,
+ GOSSIP_RANK_GENERAL = -3881027,
+ GOSSIP_RANK_WARLORD = -3881028,
+ GOSSIP_RANK_HIGH_WARLORD = -3881029,
+};
+
+bool GossipHello_npc_rank_vendor(Player* pPlayer, Creature* pCreature)
+{
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_BATTLE, GOSSIP_ITEM_PVP_TITLES, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
+ /*pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_VENDOR, GOSSIP_ITEM_INSTANCE_TITLES, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_TABARD, GOSSIP_ITEM_EVENT_TITLES, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);*/
+ pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetObjectGuid());
+ return true;
+}
+
+void vendorSetTitle(Player* pPlayer, uint32 uiTitle, Creature* pCreature)
+{
+ if (const CharTitlesEntry* titleEntry = GetTitlesEntryStore()->LookupEntry(uiTitle))
+ {
+ if (pPlayer->HasTitle(titleEntry))
+ {
+ DoScriptText(SAY_VENDOR_HAVE_TITLE, pCreature);
+ return;
+ }
+
+ for (uint8 i = 1; i < 29; ++i)
+ {
+ if (const CharTitlesEntry* oldEntry = GetTitlesEntryStore()->LookupEntry(i))
+ {
+ if (pPlayer->HasTitle(oldEntry))
+ pPlayer->SetTitle(oldEntry, true);
+ }
+ }
+ pPlayer->SetTitle(titleEntry);
+ pPlayer->SetUInt32Value(PLAYER_CHOSEN_TITLE, uiTitle);
+ }
+}
+
+void SendDefaultMenu_npc_rank_vendor(Player* pPlayer, Creature* pCreature, uint32 uiAction)
+{
+ uint32 killsCount = pPlayer->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORBALE_KILLS);
+ bool isAliance = pPlayer->GetTeam() == ALLIANCE;
+ //long long int pMoney = pPlayer->GetMoney();
+
+ if (pPlayer->isInCombat())
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_COMBAT, pCreature);
+ return;
+ }
+
+ switch (uiAction)
+ {
+ case GOSSIP_ACTION_INFO_DEF + 1:
+ {
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_PRIVATE : GOSSIP_RANK_SCOUT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_CORPORAL : GOSSIP_RANK_GRUNT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_SERGEANT : GOSSIP_RANK_SERGEANT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_MASTER_SERGEANT : GOSSIP_RANK_SENIOR_SERGEANT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_SERGEANT_MAJOR : GOSSIP_RANK_FIRST_SERGEANT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_KNIGHT : GOSSIP_RANK_STONE_GUARD, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_KNIGHT_LIEUTENANT : GOSSIP_RANK_BLOOD_GUARD, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_KNIGHT_CAPTAIN : GOSSIP_RANK_LEGIONNAIRE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_KNIGHT_CHAMPION : GOSSIP_RANK_CENTURION, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_LIEUTENANT_COMMANDER : GOSSIP_RANK_CHAMPION, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_COMMANDER : GOSSIP_RANK_LIEUTENANT_GENERAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_MARSHAL : GOSSIP_RANK_GENERAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_FIELD_MARSHAL : GOSSIP_RANK_WARLORD, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 16);
+ pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, isAliance ? GOSSIP_RANK_GRAND_MARSHAL : GOSSIP_RANK_HIGH_WARLORD, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 17);
+ pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetObjectGuid());
+ }
+ break;
+
+ case GOSSIP_ACTION_INFO_DEF + 4:
+ {
+ if (killsCount >= 25)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 1: 15, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 5:
+ {
+ if (killsCount >= 100)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 2: 16, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 6:
+ {
+ if (killsCount >= 250)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 3: 17, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 7:
+ {
+ if (killsCount >= 500)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 4: 18, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 8:
+ {
+ if (killsCount >= 1000)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 5: 19, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 9:
+ {
+ if (killsCount >= 1500)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 6: 20, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 10:
+ {
+ if (killsCount >= 3000)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 7: 21, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 11:
+ {
+ if (killsCount >= 5000)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 8: 22, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 12:
+ {
+ if (killsCount >= 7500)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 9: 23, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 13:
+ {
+ if (killsCount >= 10000)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 10: 24, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 14:
+ {
+ if (killsCount >= 15000)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 11: 25, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 15:
+ {
+ if (killsCount >= 25000)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 12: 26, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 16:
+ {
+ if (killsCount >= 45000)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 13: 27, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ case GOSSIP_ACTION_INFO_DEF + 17:
+ {
+ if (killsCount >= 60000)
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ vendorSetTitle(pPlayer, isAliance ? 14: 28, pCreature);
+ }
+ else
+ {
+ pPlayer->CLOSE_GOSSIP_MENU();
+ DoScriptText(SAY_VENDOR_FORBID, pCreature);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+bool GossipSelect_npc_rank_vendor(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
+{
+ if (uiSender == GOSSIP_SENDER_MAIN)
+ {
+ pPlayer->PlayerTalkClass->ClearMenus();
+ SendDefaultMenu_npc_rank_vendor(pPlayer, pCreature, uiAction);
+ }
+ return true;
+}
+
+void AddSC_npc_rank_vendor()
+{
+ Script* pNewScript;
+
+ pNewScript = new Script;
+ pNewScript->Name = "npc_rank_vendor";
+ pNewScript->pGossipHello = &GossipHello_npc_rank_vendor;
+ pNewScript->pGossipSelect = &GossipSelect_npc_rank_vendor;
+ pNewScript->RegisterSelf();
+}
diff --git a/sql/custom_additions/mangos_rank_vendor.sql b/sql/custom_additions/mangos_rank_vendor.sql
new file mode 100644
index 0000000..2c60caf
--- /dev/null
+++ b/sql/custom_additions/mangos_rank_vendor.sql
@@ -0,0 +1,5 @@
+REPLACE INTO creature_template (entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid_1, modelid_2, modelid_3, modelid_4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, minhealth, maxhealth, minmana, maxmana, armor, faction_A, faction_H, npcflag, speed_walk, speed_run, scale, rank, mindmg, maxdmg, dmgschool, attackpower, dmg_multiplier, baseattacktime, rangeattacktime, unit_class, unit_flags, dynamicflags, family, trainer_type, trainer_spell, trainer_class, trainer_race, minrangedmg, maxrangedmg, rangedattackpower, type, type_flags, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, PetSpellDataId, mingold, maxgold, AIName, MovementType, InhabitType, unk16, unk17, RacialLeader, questItem1, questItem2, questItem3, questItem4, questItem5, questItem6, movementId, RegenHealth, vehicle_id, equipment_id, trainer_id, vendor_id, mechanic_immune_mask, flags_extra, ScriptName) VALUES
+(98900, 0, 0, 0, 0, 0, 27059, 0, 27059, 0, 'Khunor Fox', 'The Rank Vendor', '', 0, 55, 60, 12140, 14960, 15200, 19500, 5000, 35, 35, 3, 1.48, 1.14286, 1, 1, 104, 152, 0, 42, 1.1, 1200, 1300, 2, 0, 0, 0, 0, 0, 0, 0, 42, 98, 22, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 'npc_rank_vendor');
+
+DELETE FROM locales_creature WHERE entry = 98900;
+INSERT INTO locales_creature VALUES (98900, "", "", "", "", "", "", "", "Кханор Фокс", null, null, null, null, null, null, null, "Продавец титулов");
\ No newline at end of file
diff --git a/sql/custom_additions/scripts_rank_vendor.sql b/sql/custom_additions/scripts_rank_vendor.sql
new file mode 100644
index 0000000..dbc539d
--- /dev/null
+++ b/sql/custom_additions/scripts_rank_vendor.sql
@@ -0,0 +1,38 @@
+DELETE FROM script_texts WHERE entry IN (-1881001, -1881002, -1881003);
+INSERT INTO script_texts (entry, content_default, content_loc8, sound, type, language, emote, comment) VALUES
+(-1881001, "You are in Combat!", "Вы ноходитесь в бою!", 0, 1, 0, 0, "rank_vendor SAY_VENDOR_COMBAT"),
+(-1881002, "You already have this rank!", "Вы уже имеете это звание!", 0, 1, 0, 0, "rank_vendor SAY_VENDOR_HAVE_TITLE"),
+(-1881003, "Not enough murders!", "Недостаточно убийств!", 0, 1, 0, 0, "rank_vendor SAY_VENDOR_FORBID");
+
+DELETE FROM gossip_texts WHERE entry BETWEEN -3881029 AND -3881001;
+INSERT INTO gossip_texts (entry, content_default, content_loc8, comment) VALUES
+(-3881001, "PvP titles..", "ПвП титулы..", "rank_vendor GOSSIP_RANK_PVP_TITLES"),
+(-3881002, "Private. 25 kills", "Рядовой. 25 убийств", "rank_vendor GOSSIP_RANK_PRIVATE"),
+(-3881003, "Corporal. 100 kills", "Капрал. 100 убийств", "rank_vendor GOSSIP_RANK_CORPORAL"),
+(-3881004, "Sergeant. 250 kills", "Сержант. 250 убийств", "rank_vendor GOSSIP_RANK_SERGEANT"),
+(-3881005, "Master sergeant. 500 kills", "Старший сержант. 500 убийств", "rank_vendor GOSSIP_RANK_MASTER_SERGEANT"),
+(-3881006, "Sergeant Major. 1000 kills", "Старшина. 1000 убийств", "rank_vendor GOSSIP_RANK_SERGEANT_MAJOR"),
+(-3881007, "Knight. 1500 kills", "Рыцарь. 1500 убийств", "rank_vendor GOSSIP_RANK_KNIGHT"),
+(-3881008, "Knight-Lieutenant. 3000 kills", "Рыцарь-лейтенант. 3000 убийств", "rank_vendor GOSSIP_RANK_KNIGHT_LIEUTENANT"),
+(-3881009, "Knight-Captain. 5000 kills", "Рыцарь-капитан. 5000 убийств", "rank_vendor GOSSIP_RANK_KNIGHT_CAPTAIN"),
+(-3881010, "Knight-Champion. 7500 kills", "Рыцарь-защитник. 7500 убийств", "rank_vendor GOSSIP_RANK_KNIGHT_CHAMPION"),
+(-3881011, "Lieutenant-Commander. 10000 kills", "Лейтенант-командор. 10000 убийств", "rank_vendor GOSSIP_RANK_LIEUTENANT_COMMANDER"),
+(-3881012, "Commander. 15000 kills", "Командор. 15000 убийств", "rank_vendor GOSSIP_RANK_COMMANDER"),
+(-3881013, "Marshal. 25000 kills", "Маршал. 25000 убийств", "rank_vendor GOSSIP_RANK_MARSHAL"),
+(-3881014, "Field Marshal. 45000 kills", "Фельдмаршал. 45000 убийств", "rank_vendor GOSSIP_RANK_FIELD_MARSHAL"),
+(-3881015, "Grand Marshal. 60000 kills", "Главнокомандующий. 60000 убийств", "rank_vendor GOSSIP_RANK_GRAND_MARSHAL"),
+(-3881016, "Scout. 25 kills", "Разведчик. 25 убийств", "rank_vendor GOSSIP_RANK_SCOUT"),
+(-3881017, "Grunt. 100 kills", "Рубака. 100 убийств", "rank_vendor GOSSIP_RANK_GRUNT"),
+(-3881018, "Sergeant. 250 kills", "Сержант. 250 убийств", "rank_vendor GOSSIP_RANK_SERGEANT2"),
+(-3881019, "Senior Sergeant. 500 kills", "Старший сержант. 500 убийств", "rank_vendor GOSSIP_RANK_SENIOR_SERGEANT"),
+(-3881020, "First Sergeant. 1000 kills", "Старшина. 1000 убийств", "rank_vendor GOSSIP_RANK_FIRST_SERGEANT"),
+(-3881021, "Stone Guard. 1500 kills", "Каменный страж. 1500 убийств", "rank_vendor GOSSIP_RANK_STONE_GUARD"),
+(-3881022, "Blood Guard. 3000 kills", "Кровавый страж. 3000 убийств", "rank_vendor GOSSIP_RANK_BLOOD_GUARD"),
+(-3881023, "Legionnaire. 5000 kills", "Легионер. 5000 убийств", "rank_vendor GOSSIP_RANK_LEGIONNAIRE"),
+(-3881024, "Centurion. 7500 kills", "Центурион. 7500 убийств", "rank_vendor GOSSIP_RANK_CENTURION"),
+(-3881025, "Champion. 10000 kills", "Защитник. 10000 убийств", "rank_vendor GOSSIP_RANK_CHAMPION"),
+(-3881026, "Lieutenant General. 15000 kills", "Генерал-лейтенант. 15000 убийств", "rank_vendor GOSSIP_RANK_LIEUTENANT_GENERAL"),
+(-3881027, "General. 25000 kills", "Генерал. 25000 убийств", "rank_vendor GOSSIP_RANK_GENERAL"),
+(-3881028, "Warlord. 45000 kills", "Полководец. 45000 убийств", "rank_vendor GOSSIP_RANK_WARLORD"),
+(-3881029, "High Warlord. 60000 kills", "Верховный полководец. 60000 убийств", "rank_vendor GOSSIP_RANK_HIGH_WARLORD");
+
diff --git a/system/ScriptLoader.cpp b/system/ScriptLoader.cpp
index 1a78e05..2787413 100644
--- a/system/ScriptLoader.cpp
+++ b/system/ScriptLoader.cpp
@@ -8,6 +8,7 @@
extern void AddSC_battleground();
// custom
+extern void AddSC_npc_rank_vendor();
// examples
extern void AddSC_example_creature();
@@ -471,6 +472,7 @@ void AddScripts()
AddSC_battleground();
// custom
+ AddSC_npc_rank_vendor();
// examples
AddSC_example_creature();