1575 lines
47 KiB
JavaScript
1575 lines
47 KiB
JavaScript
// https://chatgpt.com/g/g-qgcben3uu-faerun/c/66ef4e4f-d1c4-800b-b20e-3969cb619c25
|
||
// https://dzen.ru/a/ZGxhsBGbTjaBeUhc?ysclid=m1dne1zyr1205412782
|
||
|
||
// TODO: сделать на часть преступных бэкграундов ограничение по мировоззрению
|
||
// TODO: увязать расу и выбор дополнительного языка (сделать выбор соответствующего языка от бэкграунда намного вероятнее)
|
||
|
||
// По дорогам и рекам Королевств проезжают менестрели и ремесленники, купцы и охранники, солдаты и моряки
|
||
|
||
/*d20 Guild Business
|
||
1 Alchemists and apothecaries
|
||
2 Armorers, locksmiths, and finesmiths
|
||
3 Brewers, distillers, and vintners
|
||
4 Calligraphers, scribes, and scriveners
|
||
5 Carpenters, roofers, and plasterers
|
||
6 Cartographers, surveyors, and chart-makers
|
||
7 Cobblers and shoemakers
|
||
8 Cooks and bakers
|
||
9 Glassblowers and glaziers
|
||
10 Jewelers and gemcutters
|
||
11 Leatherworkers, skinners, and tanners
|
||
12 Masons and stonecutters
|
||
13 Painters, limners, and sign-makers
|
||
14 Potters and tile-makers
|
||
15 Shipwrights and sailmakers
|
||
16 Smiths and metal-forgers
|
||
17 Tinkers, pewterers, and casters
|
||
18 Wagon-makers and wheelwrights
|
||
19 Weavers and dyers
|
||
20 Woodcarvers, coopers, and bowyers*/
|
||
|
||
// Отдельные переменные для каждого инструмента
|
||
const alchemistsSupplies = "Alchemist's supplies";
|
||
const brewersSupplies = "Brewer's supplies";
|
||
const calligraphersSupplies = "Calligrapher's supplies";
|
||
const carpentersTools = "Carpenter's tools";
|
||
const cartographersTools = "Cartographer's tools";
|
||
const cobblersTools = "Cobbler's tools";
|
||
const cooksUtensils = "Cook's utensils";
|
||
const glassblowersTools = "Glassblower's tools";
|
||
const jewelersTools = "Jeweler's tools";
|
||
const leatherworkersTools = "Leatherworker's tools";
|
||
const masonsTools = "Mason's tools";
|
||
const paintersTools = "Painter's tools";
|
||
const pottersTools = "Potter's tools";
|
||
const smithsTools = "Smith's tools";
|
||
const tinkersTools = "Tinker's tools";
|
||
const weaversTools = "Weaver's tools";
|
||
const woodcarversTools = "Woodcarver's tools";
|
||
|
||
// Добавил (хоумбрю)
|
||
const barberTools = "Barber's Tools";
|
||
|
||
// Массив с объединёнными инструментами ремесленников
|
||
const artisansTools = [
|
||
alchemistsSupplies,
|
||
brewersSupplies,
|
||
calligraphersSupplies,
|
||
carpentersTools,
|
||
cartographersTools,
|
||
cobblersTools,
|
||
cooksUtensils,
|
||
glassblowersTools,
|
||
jewelersTools,
|
||
leatherworkersTools,
|
||
masonsTools,
|
||
paintersTools,
|
||
pottersTools,
|
||
smithsTools,
|
||
tinkersTools,
|
||
weaversTools,
|
||
woodcarversTools
|
||
];
|
||
|
||
// Наборы для игр
|
||
const diceSet = "Dice set";
|
||
const dragonchessSet = "Dragonchess set";
|
||
const playingCardSet = "Playing card set";
|
||
const threeDragonAnteSet = "Three-Dragon Ante set";
|
||
|
||
// Наборы для игр массив
|
||
const gamingSets = [
|
||
diceSet,
|
||
dragonchessSet,
|
||
playingCardSet,
|
||
threeDragonAnteSet
|
||
];
|
||
|
||
// Прочие наборы и инструменты
|
||
const disguiseKit = "Disguise kit";
|
||
const forgeryKit = "Forgery kit";
|
||
const herbalismKit = "Herbalism kit";
|
||
const navigatorsTools = "Navigator's tools";
|
||
const poisonersKit = "Poisoner's kit";
|
||
const thievesTools = "Thieves' tools";
|
||
|
||
// Транспорт
|
||
const vehiclesLand = "Vehicles (Land)";
|
||
const vehiclesWater = "Vehicles (Water)";
|
||
|
||
const otherTools = [
|
||
disguiseKit,
|
||
forgeryKit,
|
||
herbalismKit,
|
||
navigatorsTools,
|
||
poisonersKit,
|
||
thievesTools,
|
||
vehiclesLand,
|
||
vehiclesWater
|
||
];
|
||
|
||
// Музыкальные инструменты
|
||
const bagpipes = "Bagpipes";
|
||
const drum = "Drum";
|
||
const dulcimer = "Dulcimer";
|
||
const flute = "Flute";
|
||
const lute = "Lute";
|
||
const lyre = "Lyre";
|
||
const horn = "Horn";
|
||
const panFlute = "Pan flute";
|
||
const shawm = "Shawm";
|
||
const viol = "Viol";
|
||
|
||
// Массив музыкальных инструментов
|
||
const musicalInstruments = [
|
||
bagpipes,
|
||
drum,
|
||
dulcimer,
|
||
flute,
|
||
lute,
|
||
lyre,
|
||
horn,
|
||
panFlute,
|
||
shawm,
|
||
viol
|
||
];
|
||
|
||
const allTools = [...artisansTools, ...gamingSets, ...musicalInstruments, ...otherTools];
|
||
|
||
// +Морские профессии
|
||
let maritimeProfessions = {
|
||
"Моряк":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [navigatorsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 35
|
||
},
|
||
"Рыбак":
|
||
{
|
||
"skills": [dv.skills.survival, dv.skills.animalHandling],
|
||
"tools": ["Fishing tackle"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 25
|
||
},
|
||
"Пират":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [vehiclesWater, navigatorsTools],
|
||
"languages": [],
|
||
"chance": 10
|
||
},
|
||
"Гребец":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.survival],
|
||
"tools": [vehiclesWater],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Боцман":
|
||
{
|
||
"skills": [dv.skills.intimidation, dv.skills.athletics],
|
||
"tools": [vehiclesWater, navigatorsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Штурман":
|
||
{
|
||
"skills": [dv.skills.arcana, dv.skills.perception],
|
||
"tools": [navigatorsTools, cartographersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Канонир":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.investigation],
|
||
"tools": [smithsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Кок корабля":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.performance],
|
||
"tools": [cooksUtensils],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Кладовщик корабля":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.perception],
|
||
"tools": [vehiclesWater],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Лоцман":
|
||
{
|
||
"skills": [dv.skills.perception, dv.skills.survival],
|
||
"tools": [navigatorsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Канатчик":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.sleightOfHand],
|
||
"tools": [weaversTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
},
|
||
"Оружейник корабля":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.investigation],
|
||
"tools": [smithsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
}
|
||
};
|
||
|
||
// +Фермеры, пастухи и охотники
|
||
let agrarianProfessions = {
|
||
"Фермер":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.nature],
|
||
"tools": [brewersSupplies, carpentersTools, cobblersTools, cooksUtensils, leatherworkersTools, masonsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 25
|
||
},
|
||
"Пастух":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.nature],
|
||
"tools": [musicalInstruments],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 15
|
||
},
|
||
"Земледелец":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.nature],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Охотник":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.survival],
|
||
"tools": ["Animal traps"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Овчар":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.survival],
|
||
"tools": [barberTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Скотник":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.survival],
|
||
"tools": [barberTools, leatherworkersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Свинопас":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.nature],
|
||
"tools": [musicalInstruments],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Мельник":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.investigation],
|
||
"tools": [cooksUtensils], // *
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Птицевод":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.survival],
|
||
"tools": [woodcarversTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Заводчик лошадей":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.persuasion],
|
||
"tools": [musicalInstruments, calligraphersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Садовник":
|
||
{
|
||
"skills": [dv.skills.nature, dv.skills.survival],
|
||
"tools": [herbalismKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Пчеловод":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.survival],
|
||
"tools": [woodcarversTools, cooksUtensils],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Сыровар":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.investigation],
|
||
"tools": [cooksUtensils],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Винодел":
|
||
{
|
||
"skills": [dv.skills.nature, dv.skills.persuasion],
|
||
"tools": [brewersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Молочник":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.athletics],
|
||
"tools": [cooksUtensils],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Зверолов":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.survival],
|
||
"tools": ["Animal traps"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
}
|
||
};
|
||
|
||
// +Ремесленники
|
||
let artisanProfessions = {
|
||
"Кузнец":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.insight],
|
||
"tools": [smithsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 12
|
||
},
|
||
"Кожевенник":
|
||
{
|
||
"skills": [dv.skills.survival, dv.skills.investigation],
|
||
"tools": [leatherworkersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 9
|
||
},
|
||
"Ткач":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.investigation],
|
||
"tools": [weaversTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 9
|
||
},
|
||
"Пекарь":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.investigation],
|
||
"tools": [cooksUtensils],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 8
|
||
},
|
||
"Мясник":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.survival],
|
||
"tools": [cooksUtensils], // *
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 8
|
||
},
|
||
"Сапожник":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.perception],
|
||
"tools": [cobblersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 6
|
||
},
|
||
"Повар":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.performance],
|
||
"tools": [cooksUtensils],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 7
|
||
},
|
||
"Столяр":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [carpentersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Резчик по дереву":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [woodcarversTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Каменотес":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.investigation],
|
||
"tools": [masonsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Гончар":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.performance],
|
||
"tools": [pottersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Булочник":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.performance],
|
||
"tools": [cooksUtensils],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Бондарь":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.investigation],
|
||
"tools": [woodcarversTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Пивовар":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.insight],
|
||
"tools": [brewersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Кирпичник":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.investigation],
|
||
"tools": [masonsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Кондитер":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.investigation],
|
||
"tools": [cooksUtensils],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Изготовитель свечей":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.insight],
|
||
"tools": [cooksUtensils],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Механик":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.sleightOfHand],
|
||
"tools": [tinkersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Стеклодув":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.perception],
|
||
"tools": [glassblowersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
},
|
||
"Часовщик":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.perception],
|
||
"tools": [tinkersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
},
|
||
"Ювелир":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.investigation],
|
||
"tools": [jewelersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
},
|
||
"Ткач ковров":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.perception],
|
||
"tools": [weaversTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
},
|
||
"Лудильщик":
|
||
{
|
||
"skills": [dv.skills.survival, dv.skills.investigation],
|
||
"tools": [tinkersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
}
|
||
};
|
||
|
||
// +Музыканты и артисты
|
||
let performingArtsProfessions = {
|
||
"Музыкант":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.perception],
|
||
"tools": [musicalInstruments],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 21
|
||
},
|
||
"Актер театра":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.deception],
|
||
"tools": [musicalInstruments, weaversTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 15
|
||
},
|
||
"Певец":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.persuasion],
|
||
"tools": [], // * чтобы знал пару языков, на которых песни
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 15
|
||
},
|
||
"Танцор":
|
||
{
|
||
"skills": [dv.skills.acrobatics, dv.skills.performance],
|
||
"tools": [], // * чтобы знал пару языков, на которых песни
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Художник":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.investigation],
|
||
"tools": [paintersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 6
|
||
},
|
||
"Поэт":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.persuasion],
|
||
"tools": [], // * чтобы знал пару языков, на которых песни
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 6
|
||
},
|
||
"Жонглер":
|
||
{
|
||
"skills": [dv.skills.sleightOfHand, dv.skills.performance],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Фокусник":
|
||
{
|
||
"skills": [dv.skills.sleightOfHand, dv.skills.performance],
|
||
"tools": [woodcarversTools], // *
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Кукловод":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.sleightOfHand],
|
||
"tools": [weaversTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Скульптор":
|
||
{
|
||
"skills": [dv.skills.perception, dv.skills.performance],
|
||
"tools": [paintersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Бард":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.history],
|
||
"tools": [musicalInstruments],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Оркестровый музыкант":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.insight],
|
||
"tools": [musicalInstruments],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Трубач":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.athletics],
|
||
"tools": [horn],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Лютнист":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.perception],
|
||
"tools": [lute],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Гармонист":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.sleightOfHand],
|
||
"tools": ["Harmonica"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Писатель (драматург)":
|
||
{
|
||
"skills": [dv.skills.history, dv.skills.performance],
|
||
"tools": [calligraphersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
}
|
||
};
|
||
|
||
// +Военные и стражники
|
||
let militaryProfessions = {
|
||
"Легкий пехотинец":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [gamingSets],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 15
|
||
},
|
||
"Тяжелый пехотинец":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.intimidation],
|
||
"tools": [gamingSets],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Стражник":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [gamingSets],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Ополченец":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Лучник":
|
||
{
|
||
"skills": [dv.skills.perception, dv.skills.survival],
|
||
"tools": [gamingSets],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Копейщик":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.survival],
|
||
"tools": [gamingSets],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 8
|
||
},
|
||
"Кавалерист":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.animalHandling],
|
||
"tools": [gamingSets],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Гарнизонный солдат":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.insight],
|
||
"tools": [gamingSets],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Наемник":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.survival],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Рекрут":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.survival],
|
||
"tools": [gamingSets],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Телохранитель":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.insight],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Разведчик":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.survival],
|
||
"tools": [cartographersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Оруженосец":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [smithsTools, leatherworkersTools, weaversTools, gamingSets], // *
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Баллистик":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.athletics],
|
||
"tools": [smithsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Фортификатор":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.perception],
|
||
"tools": [masonsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Гладиатор":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.intimidation],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Осадный инженер":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.survival],
|
||
"tools": [carpentersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Морской пехотинец":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [navigatorsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Катапультир":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.survival],
|
||
"tools": [masonsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Шпион":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.deception],
|
||
"tools": [disguiseKit, thievesTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
}
|
||
};
|
||
|
||
// +Профессии воров и мошенников
|
||
let criminalProfessions = {
|
||
"Карманник":
|
||
{
|
||
"skills": [dv.skills.sleightOfHand, dv.skills.stealth],
|
||
"tools": [thievesTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 20
|
||
},
|
||
"Мошенник":
|
||
{
|
||
"skills": [dv.skills.deception, dv.skills.persuasion],
|
||
"tools": [gamingSets],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 15
|
||
},
|
||
"Домушник":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.perception],
|
||
"tools": [thievesTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 15
|
||
},
|
||
"Контрабандист":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.deception],
|
||
"tools": [vehiclesLand, vehiclesWater, thievesTools, disguiseKit, forgeryKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Карточный шулер":
|
||
{
|
||
"skills": [dv.skills.sleightOfHand, dv.skills.deception],
|
||
"tools": [playingCardSet],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 8
|
||
},
|
||
"Скупщик краденого":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.persuasion],
|
||
"tools": [disguiseKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 7
|
||
},
|
||
"Медвежатник":
|
||
{
|
||
"skills": [dv.skills.sleightOfHand, dv.skills.stealth],
|
||
"tools": [thievesTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Скотокрад":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.survival],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Грабитель повозок":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.stealth],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Угонщик повозок":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.sleightOfHand],
|
||
"tools": [vehiclesLand],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Фальшивомонетчик":
|
||
{
|
||
"skills": [dv.skills.deception, dv.skills.investigation],
|
||
"tools": [forgeryKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Рекетир":
|
||
{
|
||
"skills": [dv.skills.intimidation, dv.skills.athletics],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Подделыватель документов":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.sleightOfHand],
|
||
"tools": [forgeryKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Похититель скота":
|
||
{
|
||
"skills": [dv.skills.survival, dv.skills.stealth],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Ассасин":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.deception],
|
||
"tools": [poisonersKit, disguiseKit, forgeryKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
},
|
||
"Наёмный убийца":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.intimidation],
|
||
"tools": [poisonersKit, disguiseKit, forgeryKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
},
|
||
"Поджигатель":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.intimidation],
|
||
"tools": [alchemistsSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
},
|
||
"Похититель":
|
||
{
|
||
"skills": [dv.skills.stealth, dv.skills.deception],
|
||
"tools": [disguiseKit, thievesTools, forgeryKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
}
|
||
};
|
||
|
||
// +Интеллектуалы и ученые
|
||
let academicProfessions = {
|
||
"Писарь":
|
||
{
|
||
"skills": [dv.skills.history, dv.skills.investigation],
|
||
"tools": [calligraphersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 15
|
||
},
|
||
"Учитель":
|
||
{
|
||
"skills": [dv.skills.persuasion, dv.skills.insight],
|
||
"tools": [allTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 15
|
||
},
|
||
"Аколит":
|
||
{
|
||
"skills": [dv.skills.religion, dv.skills.insight],
|
||
"tools": [calligraphersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 12
|
||
},
|
||
"Ученый":
|
||
{
|
||
"skills": [dv.skills.history, dv.skills.arcana],
|
||
"tools": [calligraphersSupplies, cartographersTools, alchemistsSupplies], // *
|
||
"languages": [dv.languages.livingLanguagesExceptCommon, dv.languages.deadLanguages],
|
||
"chance": 9
|
||
},
|
||
"Алхимик":
|
||
{
|
||
"skills": [dv.skills.arcana, dv.skills.investigation],
|
||
"tools": [alchemistsSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 8
|
||
},
|
||
"Инженер":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.perception],
|
||
"tools": [tinkersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 8
|
||
},
|
||
"Профессор":
|
||
{
|
||
"skills": [dv.skills.history, dv.skills.persuasion],
|
||
"tools": [], // *
|
||
"languages": [dv.languages.livingLanguagesExceptCommon, dv.languages.deadLanguages],
|
||
"chance": 7
|
||
},
|
||
"Историк":
|
||
{
|
||
"skills": [dv.skills.history, dv.skills.insight],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon, dv.languages.deadLanguages],
|
||
"chance": 4
|
||
},
|
||
"Библиотекарь":
|
||
{
|
||
"skills": [dv.skills.history, dv.skills.investigation],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon, dv.languages.deadLanguages],
|
||
"chance": 4
|
||
},
|
||
"Картограф":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.perception],
|
||
"tools": [cartographersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Археолог":
|
||
{
|
||
"skills": [dv.skills.history, dv.skills.investigation],
|
||
"tools": [cartographersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon, dv.languages.deadLanguages],
|
||
"chance": 3
|
||
},
|
||
"Лингвист":
|
||
{
|
||
"skills": [dv.skills.history, dv.skills.insight],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon, dv.languages.deadLanguages],
|
||
"chance": 2
|
||
},
|
||
"Математик":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.insight],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Философ":
|
||
{
|
||
"skills": [dv.skills.religion, dv.skills.insight],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Исследователь":
|
||
{
|
||
"skills": [dv.skills.nature, dv.skills.survival],
|
||
"tools": [herbalismKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon, dv.languages.deadLanguages],
|
||
"chance": 2
|
||
},
|
||
"Географ":
|
||
{
|
||
"skills": [dv.skills.nature, dv.skills.history],
|
||
"tools": [cartographersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Астроном":
|
||
{
|
||
"skills": [dv.skills.arcana, dv.skills.perception],
|
||
"tools": [navigatorsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
}
|
||
};
|
||
|
||
// +Городские профессии
|
||
let urbanProfessions = {
|
||
"Извозчик":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.perception],
|
||
"tools": [vehiclesLand],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 20
|
||
},
|
||
"Грузчик":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.survival],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 17
|
||
},
|
||
/*"Уборщик улиц (дворник)":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.survival],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 15
|
||
},*/
|
||
"Цирюльник":
|
||
{
|
||
"skills": [dv.skills.medicine, dv.skills.performance],
|
||
"tools": [barberTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Трактирщик":
|
||
{
|
||
"skills": [dv.skills.persuasion, dv.skills.insight],
|
||
"tools": [brewersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Гонец":
|
||
{
|
||
"skills": [dv.skills.acrobatics, dv.skills.athletics],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 8
|
||
},
|
||
"Фонарщик":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Почтальон":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Пожарный":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Тюремщик":
|
||
{
|
||
"skills": [dv.skills.intimidation, dv.skills.insight],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Садовник городской":
|
||
{
|
||
"skills": [dv.skills.nature, dv.skills.survival],
|
||
"tools": [herbalismKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
}
|
||
};
|
||
|
||
// +Торговые профессии
|
||
let mercantileProfessions = {
|
||
"Продавец фруктов и овощей":
|
||
{
|
||
"skills": [dv.skills.nature, dv.skills.persuasion],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 15
|
||
},
|
||
"Продавец тканей":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.performance],
|
||
"tools": [weaversTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 12
|
||
},
|
||
"Продавец лошадей":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.persuasion],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Караванщик":
|
||
{
|
||
"skills": [dv.skills.animalHandling, dv.skills.perception],
|
||
"tools": [vehiclesLand],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Продавец оружия":
|
||
{
|
||
"skills": [dv.skills.persuasion, dv.skills.investigation],
|
||
"tools": [smithsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 10
|
||
},
|
||
"Продавец ювелирных изделий":
|
||
{
|
||
"skills": [dv.skills.persuasion, dv.skills.insight],
|
||
"tools": [jewelersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 8
|
||
},
|
||
"Продавец вина":
|
||
{
|
||
"skills": [dv.skills.persuasion, dv.skills.insight],
|
||
"tools": [brewersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 8
|
||
},
|
||
"Продавец мебели":
|
||
{
|
||
"skills": [dv.skills.persuasion, dv.skills.investigation],
|
||
"tools": [carpentersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 7
|
||
},
|
||
"Аптекарь":
|
||
{
|
||
"skills": [dv.skills.medicine, dv.skills.arcana],
|
||
"tools": [herbalismKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 6
|
||
},
|
||
"Продавец книг":
|
||
{
|
||
"skills": [dv.skills.history, dv.skills.investigation],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Продавец рыбы":
|
||
{
|
||
"skills": [dv.skills.survival, dv.skills.athletics],
|
||
"tools": ["Fishing tackle"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
"Торговец кожаными изделиями":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.insight],
|
||
"tools": [leatherworkersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Торговец тканями":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.persuasion],
|
||
"tools": [weaversTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 3
|
||
},
|
||
"Караванный охранник":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [gamingSets],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Гильдейский казначей":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.insight],
|
||
"tools": [calligraphersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
},
|
||
"Продавец пряностей":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.persuasion],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 1
|
||
},
|
||
};
|
||
|
||
// +Строители
|
||
let constructionProfessions = {
|
||
"Строитель":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [carpentersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 42
|
||
},
|
||
"Каменщик":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.investigation],
|
||
"tools": [masonsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 25
|
||
},
|
||
"Архитектор":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.insight],
|
||
"tools": [masonsTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 12
|
||
},
|
||
"Маляр":
|
||
{
|
||
"skills": [dv.skills.investigation, dv.skills.performance],
|
||
"tools": [paintersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
},
|
||
"Плотник":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": [carpentersTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 9
|
||
},
|
||
"Кровельщик":
|
||
{
|
||
"skills": [dv.skills.athletics, dv.skills.perception],
|
||
"tools": ["roofersTools"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 2
|
||
},
|
||
"Реставратор":
|
||
{
|
||
"skills": [dv.skills.insight, dv.skills.investigation],
|
||
"tools": ["restorationTools"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 6
|
||
}
|
||
};
|
||
|
||
// Медицинские профессии
|
||
let medicalProfessions = {
|
||
"Врач":
|
||
{
|
||
"skills": [dv.skills.medicine, dv.skills.perception],
|
||
"tools": ["Medical instruments"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 52
|
||
},
|
||
"Травник":
|
||
{
|
||
"skills": [dv.skills.nature, dv.skills.medicine],
|
||
"tools": [herbalismKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 21
|
||
},
|
||
"Хирург":
|
||
{
|
||
"skills": [dv.skills.medicine, dv.skills.investigation],
|
||
"tools": ["Healer's kit"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 14
|
||
},
|
||
"Акушер":
|
||
{
|
||
"skills": [dv.skills.medicine, dv.skills.insight],
|
||
"tools": ["Medical instruments"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 8
|
||
},
|
||
"Корабельный врач":
|
||
{
|
||
"skills": [dv.skills.medicine, dv.skills.perception],
|
||
"tools": ["Medical instruments"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 5
|
||
},
|
||
};
|
||
|
||
// +Религиозные профессии
|
||
let religiousProfessions = {
|
||
"Священник":
|
||
{
|
||
"skills": [dv.skills.religion, dv.skills.persuasion],
|
||
"tools": [calligraphersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon, dv.languages.deadLanguages],
|
||
"prerequisiteClasses": [dv.classes.cleric, dv.classes.paladin],
|
||
"chance": 30
|
||
},
|
||
"Аколит":
|
||
{
|
||
"skills": [dv.skills.religion, dv.skills.insight],
|
||
"tools": [],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon, dv.languages.deadLanguages],
|
||
"prerequisiteClasses": [dv.classes.cleric, dv.classes.paladin],
|
||
"chance": 20
|
||
},
|
||
"Монах":
|
||
{
|
||
"skills": [dv.skills.religion, dv.skills.acrobatics],
|
||
"tools": [herbalismKit],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon, dv.languages.deadLanguages],
|
||
"prerequisiteClasses": [dv.classes.cleric, dv.classes.paladin],
|
||
"chance": 15
|
||
},
|
||
"Храмовый целитель":
|
||
{
|
||
"skills": [dv.skills.medicine, dv.skills.religion],
|
||
"tools": ["Healer's kit"],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"prerequisiteClasses": [dv.classes.cleric, dv.classes.paladin],
|
||
"chance": 15
|
||
},
|
||
"Певчий в храме":
|
||
{
|
||
"skills": [dv.skills.performance, dv.skills.religion],
|
||
"tools": [musicalInstruments],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 9
|
||
},
|
||
"Церковный учитель":
|
||
{
|
||
"skills": [dv.skills.religion, dv.skills.persuasion],
|
||
"tools": [allTools],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"prerequisiteClasses": [dv.classes.cleric, dv.classes.paladin],
|
||
"chance": 7
|
||
},
|
||
"Церковный писарь":
|
||
{
|
||
"skills": [dv.skills.history, dv.skills.investigation],
|
||
"tools": [calligraphersSupplies],
|
||
"languages": [dv.languages.livingLanguagesExceptCommon],
|
||
"chance": 4
|
||
}
|
||
};
|
||
|
||
let backgrounds = {
|
||
agrarianProfessions:
|
||
{
|
||
list: agrarianProfessions,
|
||
chance: 30.00 // Большая часть населения Фаэруна занята в сельском хозяйстве (40), но уменьшим процент для авантюристов.
|
||
},
|
||
militaryProfessions:
|
||
{
|
||
list: militaryProfessions,
|
||
chance: 20.00 // Частые конфликты делают военные профессии значимыми.
|
||
},
|
||
maritimeProfessions:
|
||
{
|
||
list: maritimeProfessions,
|
||
chance: 6.00 // Побережье Мечей активно связано с морем, но не вся территория Фаэруна прибрежная.
|
||
},
|
||
artisanProfessions:
|
||
{
|
||
list: artisanProfessions,
|
||
chance: 10.00 // Ремесленники играют важную роль в городах и селах.
|
||
},
|
||
urbanProfessions:
|
||
{
|
||
list: urbanProfessions,
|
||
chance: 8.00 // Городские профессии распространены, но составляют меньшую часть населения.
|
||
},
|
||
criminalProfessions:
|
||
{
|
||
list: criminalProfessions,
|
||
chance: 6.00 // Преступные элементы присутствуют, но не доминируют в обществе (3), но среди авантюристов их будет больше.
|
||
},
|
||
mercantileProfessions:
|
||
{
|
||
list: mercantileProfessions,
|
||
chance: 5.00 // Торговля важна для экономики, особенно в городах и на торговых путях.
|
||
},
|
||
religiousProfessions:
|
||
{
|
||
list: religiousProfessions,
|
||
chance: 5.00 // Религия играет значимую роль, и многие служат в храмах и святилищах.
|
||
},
|
||
medicalProfessions:
|
||
{
|
||
list: medicalProfessions,
|
||
chance: 3.00 // Целители и лекари необходимы, но их число невелико (2), но среди авантюристов чуть больше.
|
||
},
|
||
constructionProfessions:
|
||
{
|
||
list: constructionProfessions,
|
||
chance: 3.00 // Строители и каменщики востребованы, но их число ограничено.
|
||
},
|
||
academicProfessions:
|
||
{
|
||
list: academicProfessions,
|
||
chance: 2.00 // Академики и учёные редки и сконцентрированы в определённых центрах знаний.
|
||
},
|
||
performingArtsProfessions:
|
||
{
|
||
list: performingArtsProfessions,
|
||
chance: 2.00 // Артисты и музыканты встречаются, но составляют небольшую часть населения.
|
||
}
|
||
};
|
||
|
||
|
||
// get random background
|
||
|
||
function getClassSkillsWithBackground(randomClass, background) {
|
||
// Берем скиллы из бекграунда
|
||
let backgroundSkills = background.skills;
|
||
|
||
// Получаем список скиллов для класса персонажа
|
||
let skillsChoice = dv.skills.characterClassesSkills[randomClass.toLowerCase()];
|
||
let skillsList = skillsChoice[0]; // список доступных скиллов класса
|
||
let skillsNr = skillsChoice[1]; // количество скиллов, которые нужно выбрать
|
||
|
||
// Убираем из списка скиллов класса те, что уже выбраны через бекграунд
|
||
let filteredSkillsList = removeBackgroundSkillsFromClassSkills(skillsList, backgroundSkills);
|
||
|
||
// Выбираем случайные скиллы для класса из оставшегося списка
|
||
let randomSkills = dv.skills.getRandomSkills(filteredSkillsList, skillsNr);
|
||
|
||
return randomSkills;
|
||
}
|
||
|
||
function removeBackgroundSkillsFromClassSkills(classSkills, backgroundSkills) {
|
||
// Клонируем список скиллов класса
|
||
let clonedClassSkills = [...classSkills];
|
||
|
||
// Удаляем скиллы, выбранные через бекграунд
|
||
backgroundSkills.forEach(skill => {
|
||
const index = clonedClassSkills.indexOf(skill);
|
||
if (index > -1) {
|
||
clonedClassSkills.splice(index, 1);
|
||
}
|
||
});
|
||
|
||
return clonedClassSkills;
|
||
}
|
||
|
||
function getBackground(characterClass, knownLanguagesFromRace) {
|
||
while (true) {
|
||
// Шаг 1: выбираем случайную группу бекграундов с учетом шанса
|
||
const backgroundGroups = Object.keys(backgrounds).map(key => ({
|
||
name: key,
|
||
list: backgrounds[key].list,
|
||
chance: backgrounds[key].chance
|
||
}));
|
||
|
||
const selectedGroup = getRandomItemWithChance(backgroundGroups);
|
||
|
||
// Шаг 2: выбираем случайную профессию внутри группы с учетом шанса
|
||
const professions = Object.keys(selectedGroup.list).map(key => ({
|
||
name: key,
|
||
...selectedGroup.list[key]
|
||
}));
|
||
|
||
const selectedProfession = getRandomItemWithChance(professions);
|
||
|
||
// Шаг 3: проверяем prerequisiteClasses, если есть
|
||
if (selectedProfession.prerequisiteClasses && selectedProfession.prerequisiteClasses.length > 0) {
|
||
if (!selectedProfession.prerequisiteClasses.includes(characterClass)) {
|
||
continue; // Класс не подходит, повторяем выбор
|
||
}
|
||
}
|
||
|
||
// Шаг 4: выбираем элементы для skills, tools, languages
|
||
let selectedSkills = selectRandomElements(selectedProfession.skills, 2);
|
||
let selectedToolsAndLanguages = selectFromTwoArrays(
|
||
selectedProfession.tools,
|
||
selectedProfession.languages,
|
||
knownLanguagesFromRace // Передаём известные языки для исключения
|
||
);
|
||
|
||
// Шаг 5: формируем итоговый блок и возвращаем его
|
||
return {
|
||
name: selectedProfession.name,
|
||
skills: selectedSkills,
|
||
tools: selectedToolsAndLanguages.tools,
|
||
languages: selectedToolsAndLanguages.languages
|
||
};
|
||
}
|
||
}
|
||
|
||
function getRandomItemWithChance(items) {
|
||
const totalChance = items.reduce((sum, item) => sum + item.chance, 0);
|
||
const randomValue = Math.random() * totalChance;
|
||
let cumulativeChance = 0;
|
||
|
||
for (const item of items) {
|
||
cumulativeChance += item.chance;
|
||
if (randomValue <= cumulativeChance) {
|
||
return item;
|
||
}
|
||
}
|
||
return null; // на случай если что-то пойдет не так
|
||
}
|
||
|
||
function selectRandomElements(array, count, excludeList = []) {
|
||
if (!array || array.length === 0) {
|
||
return [];
|
||
}
|
||
|
||
const flattenedArray = array.flat();
|
||
const uniqueElements = [...new Set(flattenedArray)];
|
||
|
||
// Убираем исключённые элементы
|
||
const availableElements = uniqueElements.filter(el => !excludeList.includes(el));
|
||
|
||
// Если после исключения элементов ничего не осталось, возвращаем пустой массив
|
||
if (availableElements.length === 0) {
|
||
return [];
|
||
}
|
||
|
||
return shuffleArray(availableElements).slice(0, Math.min(count, availableElements.length));
|
||
}
|
||
|
||
function selectFromTwoArrays(array1, array2, excludeLanguages = []) {
|
||
let selectedFromArray1 = [];
|
||
let selectedFromArray2 = [];
|
||
|
||
if (array1 && array1.length > 0 && array2 && array2.length > 0) {
|
||
selectedFromArray1 = selectRandomElements(array1, 1);
|
||
selectedFromArray2 = selectRandomElements(array2, 1, excludeLanguages);
|
||
} else if (array1 && array1.length > 0) {
|
||
selectedFromArray1 = selectRandomElements(array1, 2);
|
||
} else if (array2 && array2.length > 0) {
|
||
selectedFromArray2 = selectRandomElements(array2, 2, excludeLanguages);
|
||
}
|
||
|
||
return {
|
||
tools: selectedFromArray1,
|
||
languages: selectedFromArray2
|
||
};
|
||
}
|
||
|
||
function shuffleArray(array) {
|
||
for (let i = array.length - 1; i > 0; i--) {
|
||
const j = Math.floor(Math.random() * (i + 1));
|
||
[array[i], array[j]] = [array[j], array[i]];
|
||
}
|
||
return array;
|
||
}
|
||
|
||
|
||
dv.backgrounds = {
|
||
getClassSkillsWithBackground,
|
||
getBackground
|
||
} |