Релиз 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
+109
View File
@@ -0,0 +1,109 @@
{
"name": "Бурдюк / Waterskin",
"type": "consumable",
"img": "icons/sundries/survival/wetskin-leather-purple.webp",
"system": {
"description": {
"value": "<p>Мешок из цельной шкуры животного сшитый в закрытую камеру, предназначен для хранения до 4 пинт жидкости. В наполненном состоянии весит 5 фунтов; пинта воды равна примерно 1 фунту.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 5,
"units": "lb"
},
"price": {
"value": 2,
"denomination": "sp"
},
"attunement": "",
"equipped": false,
"rarity": "",
"identified": true,
"activation": {
"type": "action",
"cost": 1,
"condition": ""
},
"duration": {
"value": "",
"units": ""
},
"cover": null,
"crewed": false,
"target": {
"value": "",
"width": null,
"units": "",
"type": "",
"prompt": true
},
"range": {
"value": null,
"long": null,
"units": "touch"
},
"uses": {
"value": 4,
"max": "4",
"per": "charges",
"recovery": "",
"autoDestroy": false,
"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": "Waterskin"
},
"test_tube_merchant": {
"quantity": "1d3 * 3 + 1d3"
}
}
}
+59
View File
@@ -0,0 +1,59 @@
{
"name": "Кошель",
"type": "container",
"img": "icons/containers/bags/coinpouch-simple-tan.webp",
"system": {
"description": {
"value": "<p>Холщовая или кожаная сумочка, способная вместить до ⅕ кубического фута или 6 фунтов снаряжения. Также в ней могут поместиться 20 ядер для пращи или до 50 игл для трубки.</p>",
"chat": ""
},
"source": {
"custom": "",
"book": "SRD 5.1",
"page": "",
"license": "CC-BY-4.0"
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 5,
"denomination": "sp"
},
"attunement": "",
"equipped": false,
"rarity": "",
"identified": true,
"capacity": {
"type": "weight",
"value": 6
},
"currency": {
"cp": 0,
"sp": 0,
"ep": 0,
"gp": 0,
"pp": 0
},
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"attuned": false
},
"effects": [],
"folder": null,
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Pouch"
},
"test_tube_merchant": {
"quantity": "1d3 * 4 + 1d4"
}
}
}
+40
View File
@@ -0,0 +1,40 @@
{
"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 * 5 + 1d5"
}
}
}
+171
View File
@@ -0,0 +1,171 @@
{
"name": "Шапка, кожаная",
"type": "equipment",
"img": "modules/test_tube_merchant/assets/icon/items/skin_helm.png",
"system": {
"description": {
"value": "<p>Уродливая, но помогает держать голову сухой</p>",
"chat": ""
},
"source": {
"custom": ""
},
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"quantity": 1,
"weight": {
"value": 3,
"units": "lb"
},
"price": {
"value": 5,
"denomination": "sp"
},
"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": [
{
"name": "Шапка, кожаная",
"origin": "Item.37LW49HWVzlhMMHX",
"duration": {
"rounds": null,
"startTime": null,
"seconds": null,
"combat": null,
"turns": null,
"startRound": null,
"startTurn": null
},
"disabled": false,
"flags": {
"dnd5e": {},
"dae": {
"stackable": "noneName",
"showIcon": false,
"durationExpression": "",
"specialDuration": []
}
},
"img": "modules/test_tube_merchant/assets/icon/items/skin_helm.png",
"_id": "0pxD2t2nrPTPF2p5",
"type": "base",
"system": {},
"changes": [
{
"key": "system.attributes.ac.bonus",
"mode": 2,
"value": "1",
"priority": 20
}
],
"description": "",
"tint": "#ffffff",
"transfer": true,
"statuses": [],
"sort": 0,
"_stats": {
"compendiumSource": null,
"duplicateSource": null,
"coreVersion": "12.327",
"systemId": "dnd5e",
"systemVersion": "3.3.1",
"createdTime": 1724084150089,
"modifiedTime": 1724084229058,
"lastModifiedBy": "uygtCpIWAtXlcaXr"
}
}
],
"folder": null,
"flags": {
"test_tube_merchant": {
"quantity": "1d3 * 2 + 1d2"
}
}
}
+131
View File
@@ -0,0 +1,131 @@
{
"name": "Стёганый доспех / Padded Armor",
"type": "equipment",
"img": "icons/equipment/chest/breastplate-quilted-brown.webp",
"system": {
"description": {
"value": "<p>Состоит из нескольких слоёв ткани и набивки. Стёганый доспех обеспечивает сравнимый с жёсткой кожей уровень защиты, но в меньшей степени отягощает носителя.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 8,
"units": "lb"
},
"price": {
"value": 5,
"denomination": "gp"
},
"attunement": "",
"equipped": false,
"rarity": "",
"identified": true,
"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": "",
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [],
"versatile": ""
},
"formula": "",
"save": {
"ability": "",
"dc": null,
"scaling": "spell"
},
"armor": {
"value": 11,
"dex": null,
"magicalBonus": null
},
"hp": {
"value": 0,
"max": 0,
"dt": null,
"conditions": ""
},
"speed": {
"value": null,
"conditions": ""
},
"strength": null,
"proficient": null,
"unidentified": {
"description": ""
},
"type": {
"value": "light",
"baseItem": "padded"
},
"container": null,
"properties": [
"stealthDisadvantage"
],
"attack": {
"bonus": "",
"flat": false
},
"attuned": false,
"enchantment": null,
"summons": null
},
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Padded Armor"
},
"test_tube_merchant": {
"quantity": "1d3 * 2 + 1d2"
},
"dnd5e": {
"migratedProperties": [
"stealthDisadvantage"
]
}
}
}
+124
View File
@@ -0,0 +1,124 @@
{
"name": "Узда / Bit and Bridle",
"type": "equipment",
"img": "icons/environment/creatures/horse-brown.webp",
"system": {
"description": {
"value": "<p>Компонент снаряжения лошади, который надевается на голову и соединяется с поводьями. Он состоит из нескольких регулируемых кожаных ремешков, соединительных металлических колец и мундштука, изготовленного из веревки, кости, рога или другого твердого материала, такого как бронза, сталь, никель или дерево.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 2,
"denomination": "gp"
},
"attunement": "",
"equipped": false,
"rarity": "",
"identified": true,
"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": "",
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [],
"versatile": ""
},
"formula": "",
"save": {
"ability": "",
"dc": null,
"scaling": "spell"
},
"armor": {
"value": null,
"dex": null,
"magicalBonus": null
},
"hp": {
"value": 0,
"max": 0,
"dt": null,
"conditions": ""
},
"speed": {
"value": null,
"conditions": ""
},
"strength": null,
"proficient": 1,
"unidentified": {
"description": ""
},
"type": {
"value": "clothing",
"baseItem": ""
},
"attack": {
"bonus": "",
"flat": false
},
"container": null,
"attuned": false,
"enchantment": null,
"summons": null,
"properties": []
},
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Bit and Bridle"
},
"test_tube_merchant": {
"quantity": "1d3 * 2 + 1d2"
}
}
}
+124
View File
@@ -0,0 +1,124 @@
{
"name": "Вьючное седло / Pack Saddle",
"type": "equipment",
"img": "icons/equipment/shoulder/shoulderpad-fur-leather.webp",
"system": {
"description": {
"value": "<p>Тип седла, которое крепится на спине лошади и предназначено для поддержки всадника и крепления части снаряжения лошади, например, стремян. Этот тип седла подходит для вьючных животных.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 15,
"units": "lb"
},
"price": {
"value": 5,
"denomination": "gp"
},
"attunement": "",
"equipped": false,
"rarity": "",
"identified": true,
"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": "",
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [],
"versatile": ""
},
"formula": "",
"save": {
"ability": "",
"dc": null,
"scaling": "spell"
},
"armor": {
"value": null,
"dex": null,
"magicalBonus": null
},
"hp": {
"value": 0,
"max": 0,
"dt": null,
"conditions": ""
},
"speed": {
"value": null,
"conditions": ""
},
"strength": null,
"proficient": 1,
"unidentified": {
"description": ""
},
"type": {
"value": "clothing",
"baseItem": ""
},
"attack": {
"bonus": "",
"flat": false
},
"container": null,
"attuned": false,
"enchantment": null,
"summons": null,
"properties": []
},
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Pack Saddle"
},
"test_tube_merchant": {
"quantity": "1d4"
}
}
}