Релиз v1.2.9
Build release archive / release (push) Failing after 28s

Изменено:
 - Поддержка новых типов товаров: "Механические приспособления" и "Религиозные товары".
 - Добавлена возможность случайной генерации уровня торговца.
 - Улучшена производительность при загрузке предметов из компендиумов.
 - Обновлены тексты описаний для категорий товаров.
 - Исправлена ошибка при добавлении предметов к торговцу (см. `module/data.mjs`, строки 2436-2446).
 - Исправлена проблема с отображением характеристик торговца в интерфейсе.
This commit is contained in:
2026-07-15 19:42:45 +03:00
parent 34782dc3b0
commit e21d8c5198
5611 changed files with 163869 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
{
"name": "Фруктовый пирог с начинкой",
"type": "loot",
"img": "icons/consumables/food/candy-taffy-yellow.webp",
"system": {
"description": {
"value": "<p>Рецепт этого пирога довольно прост и любим в большинстве семей и пекарен. В него входят мука, молоко, подсластители, такие как сахар или мед, и различные фрукты. Чаще всего для пирогов используются яблоки, груши, вишни, виноград и многие другие фрукты, но нередко их смешивают, чтобы создать уникальные вкусовые сочетания. Эти пироги — любимое лакомство как искателей приключений, так и путешественников. Они вызывают чувство ностальгии и тоски по дому, а также дают заряд бодрости и энергии для будущих приключений.</p>",
"chat": ""
},
"source": {
"custom": "KCoTG"
},
"quantity": 1,
"weight": {
"value": 0.1,
"units": "lb"
},
"price": {
"value": 3,
"denomination": "sp"
},
"rarity": "common",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d3 * 2 + 1d2"
}
},
"folder": null
}
+41
View File
@@ -0,0 +1,41 @@
{
"name": "Имбирь",
"type": "loot",
"img": "icons/consumables/vegetable/root-ginger-yellow.webp",
"system": {
"description": {
"value": "<p>Имбирь, широко используется как специя и как лекарственное средство народной медицины. Его дают в виде чая тем, у кого пролемы с желудком, в том числе для борьбы с тошнотой.</p>",
"chat": ""
},
"source": {
"custom": "KCoTG"
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 1,
"denomination": "gp"
},
"rarity": "common",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d3 * 10 + 1d10"
}
},
"folder": null
}
+92
View File
@@ -0,0 +1,92 @@
{
"name": "Инструменты повара / Cook's Utensils",
"type": "tool",
"img": "icons/tools/cooking/bowl-steaming-brown.webp",
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Cook's Utensils"
},
"test_tube_merchant": {
"quantity": "1d3 * 2 + 1d2"
},
"midi-qol": {
"onUseMacroName": ""
}
},
"system": {
"description": {
"value": "<p>Эти специальные инструменты включают предметы, необходимые для занятия готовкой. Умение в обращении с этими инструментами позволяет вам добавить ваш бонус умения к любой проверке характеристики, связанной с их использованием.</p>\n<p>Жизнь искателя приключений тяжела. При наличии в компании повара ваша пища будет намного вкуснее, чем привычные галеты и сухофрукты.</p>\n<p><em><strong>Компоненты. </strong></em>Инструменты повара включают в себя металлический котёл, ножи, вилки, ложку для размешивания и половник.</p>\n<p><em><strong>История. </strong></em>Ваши знания кулинарных методик позволяют вам оценивать структуру социального развития, основываясь на гастрономических обычаях этой культуры.</p>\n<p><strong><em>Медицина. </em></strong>Оказывая лечение, вы можете превратить горькое или кислое лекарство в приятную на вкус стряпню.</p>\n<p><em><strong>Выживание. </strong></em>Добывая еду, вы можете использовать собранные вами ингредиенты, которые другие не смогли бы приготовить.</p>\n<p><em><strong>Приготовление еды. </strong></em>Частью короткого отдыха, вы можете приготовить вкусное блюдо, которое поможет вашим компаньонам восстановить силы. Вы и до пяти существ на ваш выбор восстанавливаете по 1 дополнительному ПЗ за каждую потраченную во время короткого отдыха кость здоровья, при условии, что у вас есть доступ к вашим инструментам повара и достаточно еды.</p>\n<table class=\"rd__table stripe-odd-table\">\n<thead>\n<tr>\n<th class=\"col-10\" data-rd-isroller=\"false\">Возможное действие</th>\n<th class=\"col-2 text-center\" data-rd-isroller=\"false\">СЛ</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"col-10\">Приготовить обычную пищу</td>\n<td class=\"col-2 text-center\">10</td>\n</tr>\n<tr>\n<td class=\"col-10\">Повторить блюдо</td>\n<td class=\"col-2 text-center\">10</td>\n</tr>\n<tr>\n<td class=\"col-10\">Обнаружить яд или примесь в еде</td>\n<td class=\"col-2 text-center\">15</td>\n</tr>\n<tr>\n<td class=\"col-10\">Приготовить изысканное блюдо</td>\n<td class=\"col-2 text-center\">15</td>\n</tr>\n</tbody>\n</table>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 8,
"units": "lb"
},
"price": {
"value": 1,
"denomination": "gp"
},
"attunement": "",
"equipped": false,
"rarity": "common",
"identified": true,
"ability": "wis",
"chatFlavor": "",
"proficient": 0,
"bonus": "",
"unidentified": {
"description": ""
},
"type": {
"value": "art",
"baseItem": "cook"
},
"container": null,
"attuned": false,
"activation": {
"type": "",
"cost": null,
"condition": ""
},
"duration": {
"value": "",
"units": ""
},
"cover": null,
"crewed": false,
"target": {
"value": "",
"width": null,
"units": "",
"type": "",
"prompt": true
},
"range": {
"value": null,
"long": null,
"units": ""
},
"uses": {
"value": null,
"max": "",
"per": null,
"recovery": "",
"prompt": true
},
"consume": {
"type": "",
"target": null,
"amount": null,
"scale": false
},
"properties": []
},
"folder": null
}
+41
View File
@@ -0,0 +1,41 @@
{
"name": "Кекс, большой",
"type": "loot",
"img": "modules/test_tube_merchant/assets/icon/items/cupcake.png",
"system": {
"description": {
"value": "<p>Пышный и сочный; на 8 персон</p>",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 2,
"units": "lb"
},
"price": {
"value": 5,
"denomination": "gp"
},
"rarity": "common",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d4"
}
},
"folder": null
}
+41
View File
@@ -0,0 +1,41 @@
{
"name": "Питание, богатое",
"type": "loot",
"img": "modules/test_tube_merchant/assets/icon/items/beter_meal.png",
"system": {
"description": {
"value": "<p>Хорошо приготовленный кусок мяса и десерт</p>",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 8,
"denomination": "sp"
},
"rarity": "common",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d3 * 20 + 1d20"
}
},
"folder": null
}
+41
View File
@@ -0,0 +1,41 @@
{
"name": "Питание, комфортное",
"type": "loot",
"img": "modules/test_tube_merchant/assets/icon/items/good_meal.png",
"system": {
"description": {
"value": "<p>Слегка пряное мясо, подается с гарниром</p>",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 5,
"denomination": "sp"
},
"rarity": "common",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d3 * 20 + 1d20"
}
},
"folder": null
}
+120
View File
@@ -0,0 +1,120 @@
{
"name": "Поварской колпак",
"type": "equipment",
"img": "modules/test_tube_merchant/assets/icon/items/Chefs_hat.png",
"system": {
"description": {
"value": "<p>Покажи, кто здесь шеф-повар</p>",
"chat": ""
},
"source": {
"custom": ""
},
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"quantity": 1,
"weight": {
"value": 0.3,
"units": "lb"
},
"price": {
"value": 3,
"denomination": "gp"
},
"rarity": "",
"attunement": "",
"attuned": false,
"equipped": false,
"activation": {
"type": "",
"cost": null,
"condition": ""
},
"duration": {
"value": "",
"units": ""
},
"cover": null,
"crewed": false,
"target": {
"value": "",
"width": null,
"units": "",
"type": "",
"prompt": true
},
"range": {
"value": null,
"long": null,
"units": ""
},
"uses": {
"value": null,
"max": "",
"per": null,
"recovery": "",
"prompt": true
},
"consume": {
"type": "",
"target": null,
"amount": null,
"scale": false
},
"ability": null,
"actionType": "",
"attack": {
"bonus": "",
"flat": false
},
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [],
"versatile": ""
},
"enchantment": null,
"formula": "",
"save": {
"ability": "",
"dc": null,
"scaling": "spell"
},
"summons": null,
"armor": {
"value": null,
"magicalBonus": null,
"dex": null
},
"hp": {
"value": null,
"max": null,
"dt": null,
"conditions": ""
},
"type": {
"value": "clothing",
"baseItem": ""
},
"properties": [],
"speed": {
"value": null,
"conditions": ""
},
"strength": null,
"proficient": null
},
"effects": [],
"folder": null,
"flags": {
"test_tube_merchant": {
"quantity": "1"
}
}
}
+105
View File
@@ -0,0 +1,105 @@
{
"name": "Шафран",
"type": "consumable",
"img": "modules/test_tube_merchant/assets/icon/items/Saffron.png",
"system": {
"description": {
"value": "",
"chat": ""
},
"source": {
"custom": ""
},
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 15,
"denomination": "gp"
},
"rarity": "",
"attunement": "",
"attuned": false,
"equipped": false,
"activation": {
"type": "",
"cost": null,
"condition": ""
},
"duration": {
"value": "",
"units": ""
},
"cover": null,
"crewed": false,
"target": {
"value": "",
"width": null,
"units": "",
"type": "",
"prompt": true
},
"range": {
"value": null,
"long": null,
"units": ""
},
"uses": {
"value": null,
"max": "",
"per": null,
"recovery": "",
"prompt": true,
"autoDestroy": false
},
"consume": {
"type": "",
"target": null,
"amount": null,
"scale": false
},
"ability": null,
"actionType": "",
"attack": {
"bonus": "",
"flat": false
},
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [],
"versatile": ""
},
"enchantment": null,
"formula": "",
"save": {
"ability": "",
"dc": null,
"scaling": "spell"
},
"summons": null,
"type": {
"value": "trinket",
"subtype": ""
},
"magicalBonus": null,
"properties": []
},
"effects": [],
"folder": null,
"flags": {
"test_tube_merchant": {
"quantity": "1d4"
}
}
}
+41
View File
@@ -0,0 +1,41 @@
{
"name": "Специи",
"type": "loot",
"img": "modules/test_tube_merchant/assets/icon/items/spice_bag.png",
"system": {
"description": {
"value": "<p>Перец, корица и подобные</p>",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 2,
"denomination": "gp"
},
"rarity": "",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d3 * 5 + 1d5"
}
},
"folder": null
}