Релиз 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
+59
View File
@@ -0,0 +1,59 @@
{
"name": "Горшок / Jug",
"type": "container",
"img": "icons/containers/kitchenware/jug-terracotta-orange.webp",
"system": {
"description": {
"value": "<p>Горшок вмещает 1 галлон жидкости.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 4,
"units": "lb"
},
"price": {
"value": 2,
"denomination": "cp"
},
"attunement": "",
"equipped": false,
"rarity": "",
"identified": true,
"capacity": {
"type": "weight",
"value": 8.4
},
"currency": {
"cp": 0,
"sp": 0,
"ep": 0,
"gp": 0,
"pp": 0
},
"unidentified": {
"description": ""
},
"container": null,
"attuned": false,
"properties": []
},
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Jug"
},
"core": {
"sourceId": "Compendium.dnd5e.items.0ZBWwjFz3nIAXMLW"
},
"test_tube_merchant": {
"quantity": "1d4"
}
},
"folder": null
}
+41
View File
@@ -0,0 +1,41 @@
{
"name": "Каменная соль",
"type": "loot",
"img": "icons/commodities/gems/powder-raw-white.webp",
"system": {
"description": {
"value": "<p>Соль широко используется в кулинарии в качестве основного ингредиента, а также для вяления самых разнообразных продуктов, таких как свинина и рыба. Земледельцы делают раствор соли и воды для уничтожения сорняков на полях с ценными культурами.</p>",
"chat": ""
},
"source": {
"custom": "KCoTG"
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 0.05,
"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
}
+41
View File
@@ -0,0 +1,41 @@
{
"name": "Мясо",
"type": "loot",
"img": "modules/test_tube_merchant/assets/icon/items/meat.png",
"system": {
"description": {
"value": "<p>Говядина, свинина, курица, дичь и прочее</p>",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 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 * 15 + 1d15"
}
},
"folder": null
}
+46
View File
@@ -0,0 +1,46 @@
{
"name": "Мыло / Soap",
"type": "loot",
"img": "icons/sundries/survival/soap.webp",
"system": {
"description": {
"value": "<p>Используется для чистки и мытья.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 0,
"units": "lb"
},
"price": {
"value": 2,
"denomination": "cp"
},
"rarity": "",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Soap"
},
"test_tube_merchant": {
"quantity": "1d3 * 5 + 1d5"
}
},
"folder": null
}
+41
View File
@@ -0,0 +1,41 @@
{
"name": "Питание, скромное",
"type": "loot",
"img": "modules/test_tube_merchant/assets/icon/items/normal_meal.png",
"system": {
"description": {
"value": "<p>Сытный бульон с настоящими овощами</p>",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 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 * 20 + 1d20"
}
},
"folder": null
}
+41
View File
@@ -0,0 +1,41 @@
{
"name": "Рыба",
"type": "loot",
"img": "modules/test_tube_merchant/assets/icon/items/fish.png",
"system": {
"description": {
"value": "<p>Куриные, утиные или подобные</p>",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 2,
"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
}
+46
View File
@@ -0,0 +1,46 @@
{
"name": "Столовый набор / Mess kit",
"type": "loot",
"img": "icons/tools/cooking/fork-steel-brown.webp",
"system": {
"description": {
"value": "<p>Жестяная коробочка, в которой есть чашка и простые столовые принадлежности. Крышку коробочки можно использовать как сковородку, а саму коробочку — как тарелку или неглубокую миску.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 2,
"denomination": "sp"
},
"rarity": "",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Mess Kit"
},
"test_tube_merchant": {
"quantity": "1d3 * 2 + 1d2"
}
},
"folder": null
}
+110
View File
@@ -0,0 +1,110 @@
{
"name": "Сухой паёк / Rations",
"type": "consumable",
"img": "icons/consumables/meat/hock-leg-stylized.webp",
"system": {
"description": {
"value": "<p>Компактная сухая пища, подходящая для дальних походов. Может включать вяленое мясо, сухофрукты, сухари и орехи.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 2,
"units": "lb"
},
"price": {
"value": 5,
"denomination": "sp"
},
"attunement": "",
"equipped": false,
"rarity": "",
"identified": true,
"activation": {
"type": "action",
"cost": 1,
"condition": ""
},
"duration": {
"value": "",
"units": ""
},
"cover": null,
"crewed": false,
"target": {
"value": "1",
"width": null,
"units": "",
"type": "creature",
"prompt": true
},
"range": {
"value": null,
"long": null,
"units": "touch"
},
"uses": {
"value": 1,
"max": "1",
"per": "charges",
"recovery": "",
"autoDestroy": true,
"prompt": true
},
"consume": {
"type": "",
"target": null,
"amount": null,
"scale": false
},
"ability": "",
"actionType": "util",
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [],
"versatile": ""
},
"formula": "",
"save": {
"ability": "",
"dc": null,
"scaling": "spell"
},
"properties": [],
"unidentified": {
"description": ""
},
"type": {
"value": "food",
"subtype": ""
},
"attack": {
"bonus": "",
"flat": false
},
"container": null,
"attuned": false,
"enchantment": null,
"summons": null,
"magicalBonus": null
},
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Rations"
},
"test_tube_merchant": {
"quantity": "1d3 * 15 + 1d15"
}
},
"folder": null
}