Релиз 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": "Подъёмный блок",
"type": "consumable",
"img": "icons/tools/hand/spinning-wheel-brown.webp",
"system": {
"description": {
"value": "<p>Система блоков, пропущенный через них трос и крюк, которым можно поднимать предметы. Позволяет поднять вчетверо больший вес, чем вы можете поднять обычно.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 5,
"units": "lb"
},
"price": {
"value": 1,
"denomination": "gp"
},
"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": ""
},
"uses": {
"value": null,
"max": "",
"per": null,
"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": "trinket",
"subtype": ""
},
"attack": {
"bonus": "",
"flat": false
},
"container": null,
"attuned": false,
"enchantment": null,
"summons": null,
"magicalBonus": null
},
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Block and Tackle"
},
"test_tube_merchant": {
"quantity": "1d3 * 2 + 1d2"
}
}
}
+45
View File
@@ -0,0 +1,45 @@
{
"name": "Счёты / Abacus",
"type": "loot",
"img": "icons/commodities/tech/metal-panel.webp",
"system": {
"description": {
"value": "<p>Счёты, также называемый абаком, – это инструмент для произведения вычислений.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 2,
"units": "lb"
},
"price": {
"value": 2,
"denomination": "gp"
},
"rarity": "",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Abacus"
},
"test_tube_merchant": {
"quantity": "1d3 * 2 + 1d2"
}
}
}
+109
View File
@@ -0,0 +1,109 @@
{
"name": "Шарики / Ball Bearings",
"type": "consumable",
"img": "icons/commodities/gems/pearl-rock.webp",
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Ball Bearings"
},
"test_tube_merchant": {
"quantity": "1d3 * 2 + 1d2"
}
},
"system": {
"description": {
"value": "<p>В качестве действия вы можете рассыпать 1000 маленьких металлических шариков из мешочка, чтобы покрыть ими ровную квадратную область размером 10 на 10 футов. Существо, перемещающееся через эту область, должно пройти испытание Ловкости со СЛ 10, при провале оно упадёт и &amp;reference[prone]{распластается}. Существу, перемещающемуся через область с половинной скоростью, испытание проходить не нужно.</p>",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1000,
"weight": {
"value": 0.002,
"units": "lb"
},
"price": {
"value": 1,
"denomination": "gp"
},
"attunement": "",
"equipped": false,
"rarity": "common",
"identified": true,
"activation": {
"type": "action",
"cost": 1,
"condition": ""
},
"duration": {
"value": "",
"units": ""
},
"cover": null,
"crewed": false,
"target": {
"value": "10",
"width": null,
"units": "ft",
"type": "square",
"prompt": true
},
"range": {
"value": null,
"long": null,
"units": ""
},
"uses": {
"value": 1,
"max": "1",
"per": "charges",
"recovery": "",
"autoDestroy": true,
"prompt": true
},
"consume": {
"type": "",
"target": "",
"amount": null,
"scale": false
},
"ability": "",
"actionType": "save",
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [],
"versatile": ""
},
"formula": "",
"save": {
"ability": "dex",
"dc": 10,
"scaling": "flat"
},
"unidentified": {
"description": ""
},
"type": {
"value": "trinket",
"subtype": ""
},
"attack": {
"bonus": "",
"flat": false
},
"container": null,
"attuned": false,
"enchantment": null,
"summons": null,
"magicalBonus": null,
"properties": []
}
}
+114
View File
@@ -0,0 +1,114 @@
{
"name": "Склянка с маслом / Oil Flask",
"type": "consumable",
"img": "icons/consumables/potions/potion-jar-corked-orange.webp",
"system": {
"description": {
"value": "<p>Масло обычно разливают в глиняные ёмкости объёмом в 1 пинту. В качестве действия вы можете выплеснуть масло из этой склянки на существо в пределах 5 футов от вас или метнуть её на 20 футов — от удара склянка разобьётся. Совершите дистанционную атаку по этому существу или объекту, считая масло импровизированным оружием.</p>\n<p>При попадании цель будет покрыта маслом. Если цель получит какой-либо урон огнём прежде, чем масло высохнет (в течение 1 минуты), цель дополнительно получает 5 урона огнём от горящего масла. Можно также вылить масло из склянки на землю, что создаст лужу в 5-футовом квадрате, если поверхность ровная.</p>\n<p>Если лужу поджечь, она будет гореть 2 раунда и наносить 5 урона огнём любому существу, которое войдет в эту область или закончит в ней свой ход. Существо может получить этот урон только раз в ход.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 1,
"denomination": "sp"
},
"attunement": "",
"equipped": false,
"rarity": "",
"identified": true,
"activation": {
"type": "action",
"cost": 1,
"condition": ""
},
"duration": {
"value": "1",
"units": "minute"
},
"cover": null,
"crewed": false,
"target": {
"value": "1",
"width": null,
"units": "",
"type": "creature",
"prompt": true
},
"range": {
"value": 5,
"long": 20,
"units": "ft"
},
"uses": {
"value": 1,
"max": "1",
"per": "charges",
"recovery": "",
"autoDestroy": true,
"prompt": true
},
"consume": {
"type": "",
"target": null,
"amount": null,
"scale": false
},
"ability": "dex",
"actionType": "rwak",
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [
[
"5",
"fire"
]
],
"versatile": ""
},
"formula": "",
"save": {
"ability": "",
"dc": null,
"scaling": "spell"
},
"properties": [],
"unidentified": {
"description": ""
},
"type": {
"value": "trinket",
"subtype": ""
},
"attack": {
"bonus": "",
"flat": false
},
"container": null,
"attuned": false,
"enchantment": null,
"summons": null,
"magicalBonus": null
},
"effects": [],
"flags": {
"babele": {
"translated": true,
"hasTranslation": true,
"originalName": "Oil Flask"
},
"test_tube_merchant": {
"quantity": "1d3 * 5 + 1d5"
}
}
}
+104
View File
@@ -0,0 +1,104 @@
{
"name": "Винтики",
"type": "consumable",
"img": "modules/test_tube_merchant/assets/icon/items/smallScrew.png",
"system": {
"description": {
"value": "Маленькие винтики, используемые для сборки и ремонта механизмов.",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 1,
"denomination": "sp"
},
"rarity": "",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "trinket",
"subtype": ""
},
"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,
"magicalBonus": null
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d3 * 5 + 1d5"
}
}
}