Релиз 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
+144
View File
@@ -0,0 +1,144 @@
{
"name": "Бомба / Bomb",
"type": "weapon",
"system": {
"description": {
"value": "<p><span style=\"font-family:'Noto Sans', Arial, sans-serif\">В качестве действия персонаж может поджечь фитиль и метнуть бомбу в точку на расстоянии до 60 футов. Каждое существо в пределах 5 футов от этой точки должно пройти испытание Ловкости со СЛ 12, при провале оно получит [[/r 3d6]] урона огнём.</span></p>",
"chat": ""
},
"source": {
"custom": "DMG"
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 150,
"denomination": "gp"
},
"attunement": "",
"equipped": true,
"rarity": "",
"identified": true,
"activation": {
"type": "action",
"cost": 1,
"condition": ""
},
"duration": {
"value": "",
"units": ""
},
"cover": null,
"crewed": false,
"target": {
"value": "5",
"width": null,
"units": "ft",
"type": "sphere",
"prompt": true
},
"range": {
"value": 60,
"long": null,
"units": "ft"
},
"uses": {
"value": null,
"max": "",
"per": null,
"recovery": "",
"prompt": true
},
"consume": {
"type": "",
"target": "",
"amount": null,
"scale": false
},
"ability": "",
"actionType": "save",
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [
[
"3d6",
"fire"
]
],
"versatile": ""
},
"formula": "",
"save": {
"ability": "dex",
"dc": 12,
"scaling": "flat"
},
"armor": {
"value": 10
},
"hp": {
"value": 0,
"max": 0,
"dt": null,
"conditions": ""
},
"properties": [
"thr"
],
"proficient": 1,
"unidentified": {
"description": ""
},
"type": {
"value": "simpleR",
"baseItem": ""
},
"attack": {
"bonus": "",
"flat": false
},
"container": null,
"attuned": false,
"enchantment": null,
"summons": null,
"magicalBonus": null
},
"img": "icons/weapons/thrown/bomb-fuse-brown-grey.webp",
"flags": {
"midi-qol": {
"fumbleThreshold": null,
"effectActivation": false
},
"midiProperties": {
"nodam": false,
"fulldam": false,
"halfdam": false,
"autoFailFriendly": false,
"rollOther": false,
"critOther": false,
"offHandWeapon": false,
"magicdam": false,
"magiceffect": false,
"concentration": false,
"toggleEffect": false,
"ignoreTotalCover": false,
"autoSaveFriendly": false
},
"test_tube_merchant": {
"quantity": "1d3 * 4 + 1d4"
},
"babele": {
"hasTranslation": true,
"originalName": "Bomb",
"translated": true
}
},
"effects": []
}
+127
View File
@@ -0,0 +1,127 @@
{
"name": "Капкан / Hunting Trap",
"type": "consumable",
"img": "icons/environment/traps/trap-jaw-steel.webp",
"effects": [],
"flags": {
"midi-qol": {
"effectActivation": false
},
"midiProperties": {
"nodam": false,
"fulldam": false,
"halfdam": false,
"autoFailFriendly": false,
"rollOther": false,
"critOther": false,
"offHandWeapon": false,
"magicdam": false,
"magiceffect": false,
"concentration": false,
"toggleEffect": false,
"ignoreTotalCover": false,
"autoSaveFriendly": false
},
"test_tube_merchant": {
"quantity": "1d3 * 3 + 1d3"
}
},
"system": {
"description": {
"value": "<p>В качестве действия вы можете поставить капкан — зубчатое стальное колесо, которое захлопывается, когда существо наступает на прижимную пластину в центре. Капкан прикован тяжёлой цепью к неподвижному объекту вроде дерева или колышка, вбитого в землю. Существо, наступившее в капкан, должно пройти испытание Ловкости со СЛ 13, при провале получает [[/r 1d4]] колющего урона и прекращает перемещение. После этого, пока существо не освободится из капкана, его перемещение будет ограничено длиной цепи (обычно 3 фута). Существо может использовать действие, чтобы пройти проверку Силы со СЛ 13, при успехе освобождая себя или другое существо своей зоне досягаемости. При каждой неудачной проверке пойманное существо получает 1 колющий урон.</p>",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 25,
"units": "lb"
},
"price": {
"value": 5,
"denomination": "gp"
},
"attunement": "",
"equipped": false,
"rarity": "common",
"identified": true,
"activation": {
"type": "",
"cost": 0,
"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": "save",
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [
[
"1d4",
"piercing"
]
],
"versatile": "1"
},
"formula": "",
"save": {
"ability": "dex",
"dc": 13,
"scaling": "flat"
},
"unidentified": {
"description": ""
},
"type": {
"value": "trinket",
"subtype": ""
},
"attack": {
"bonus": "",
"flat": false
},
"container": null,
"attuned": false,
"enchantment": null,
"summons": null,
"magicalBonus": null,
"properties": []
}
}
+40
View File
@@ -0,0 +1,40 @@
{
"name": "Механическая собака",
"type": "loot",
"img": "modules/test_tube_merchant/assets/icon/items/tinkerDog.png",
"system": {
"description": {
"value": "<p>Заведенная механическая собака: ходит вперед, лает и переворачивается.</p>",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 2,
"units": "lb"
},
"price": {
"value": 5,
"denomination": "gp"
},
"rarity": "",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d4"
}
}
}
@@ -0,0 +1,40 @@
{
"name": "Механические драконьи шахматы",
"type": "loot",
"img": "modules/test_tube_merchant/assets/icon/items/mechanicalCess.png",
"system": {
"description": {
"value": "Доска сама играет в драконьи шахматы с вами.",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 3,
"units": "lb"
},
"price": {
"value": 20,
"denomination": "gp"
},
"rarity": "",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"subtype": ""
}
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d4"
}
}
}
@@ -0,0 +1,109 @@
{
"name": "Порох (рожок) / Gunpowder (horn)",
"type": "consumable",
"img": "icons/commodities/bones/horn-engraved-stripes-white.webp",
"system": {
"description": {
"value": "<p><span style=\"font-family:'Noto Sans', Arial, sans-serif\">Порох в основном используется для стрельбы пулями из стволов пистолетов и винтовок или создания бомб. Порох продают небольшими деревянными бочонками и водостойкими пороховыми рожками. Если поджечь контейнер, наполненный порохом, он взорвётся, нанеся урон огнём существам в пределах 10 футов от себя — [[/r 3d6]] урона. Успешное испытание Ловкости со СЛ 12 уменьшает урон вдвое. Если поджечь унцию пороха, она будет ярко гореть 1 раунд, испуская @UUID[Compendium.laaru-dnd5-hw.conditions.EvGCMCVp1VpUtCbI]{яркий свет} в радиусе 30 футов и @UUID[Compendium.laaru-dnd5-hw.conditions.BbWvc4m610EHv070]{тус­клый} ещё на 30 футов.</span></p>",
"chat": ""
},
"source": {
"custom": "DMG"
},
"quantity": 1,
"weight": {
"value": 2,
"units": "lb"
},
"price": {
"value": 35,
"denomination": "gp"
},
"attunement": "",
"equipped": false,
"rarity": "",
"identified": true,
"activation": {
"type": "action",
"cost": 1,
"condition": ""
},
"duration": {
"value": "",
"units": ""
},
"cover": null,
"crewed": false,
"target": {
"value": "10",
"width": null,
"units": "ft",
"type": "sphere",
"prompt": true
},
"range": {
"value": null,
"long": null,
"units": ""
},
"uses": {
"value": null,
"max": "",
"per": null,
"recovery": "",
"autoDestroy": false,
"prompt": true
},
"consume": {
"type": "",
"target": "",
"amount": null,
"scale": false
},
"ability": "",
"actionType": "save",
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [
[
"3d6",
"fire"
]
],
"versatile": ""
},
"formula": "",
"save": {
"ability": "dex",
"dc": 12,
"scaling": "flat"
},
"unidentified": {
"description": ""
},
"type": {
"value": "ammo",
"subtype": ""
},
"attack": {
"bonus": "",
"flat": false
},
"container": null,
"attuned": false,
"enchantment": null,
"summons": null,
"magicalBonus": null,
"properties": []
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d3 * 4 + 1d4"
}
}
}
+83
View File
@@ -0,0 +1,83 @@
{
"name": "Шарманка",
"type": "tool",
"img": "modules/test_tube_merchant/assets/icon/items/barrelOrgan.png",
"system": {
"description": {
"value": "Музыкальный инструмент, при вращении рукояти играет музыка.",
"chat": ""
},
"source": {
"custom": ""
},
"quantity": 1,
"weight": {
"value": 3,
"units": "lb"
},
"price": {
"value": 30,
"denomination": "gp"
},
"rarity": "",
"identified": true,
"unidentified": {
"description": ""
},
"container": null,
"properties": [],
"type": {
"value": "",
"baseItem": ""
},
"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": "",
"chatFlavor": "",
"proficient": null,
"bonus": ""
},
"effects": [],
"flags": {
"test_tube_merchant": {
"quantity": "1d4"
}
}
}
+109
View File
@@ -0,0 +1,109 @@
{
"name": "Замок / Lock",
"type": "consumable",
"img": "icons/sundries/misc/lock-bronze-reinforced.webp",
"system": {
"description": {
"value": "<p>Продаётся вместе с ключом. Без ключа существо, умелое в обращении с инструментами вора, может взломать этот замок, успешно пройдя проверку Ловкости со СЛ 15. Мастер может решить, что за хорошие деньги вы можете приобрести и более надёжные замки.</p>",
"chat": ""
},
"source": {
"custom": "PHB"
},
"quantity": 1,
"weight": {
"value": 1,
"units": "lb"
},
"price": {
"value": 10,
"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": "touch",
"type": "object",
"prompt": true
},
"range": {
"value": null,
"long": null,
"units": "touch"
},
"uses": {
"value": 1,
"max": "1",
"per": "charges",
"recovery": "",
"autoDestroy": false,
"prompt": true
},
"consume": {
"type": "",
"target": null,
"amount": null,
"scale": false
},
"ability": "",
"actionType": "abil",
"chatFlavor": "",
"critical": {
"threshold": null,
"damage": ""
},
"damage": {
"parts": [],
"versatile": ""
},
"formula": "",
"save": {
"ability": "dex",
"dc": 15,
"scaling": "flat"
},
"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": "Lock"
},
"test_tube_merchant": {
"quantity": "1d3 * 5 + 1d5"
}
}
}