Предметы набора правил

На этой странице вы описываете, что носит отряд: категории, оружие, доспехи, боеприпасы, добычу, деньги, начальное снаряжение и рынки. Она предназначена для авторов наборов правил. Прежде чем начать, прочитайте Создание наборов правил Game Mode.

Разделы этой страницы:

Доспехи, оружие, зелья, снаряжение, боеприпасы и деньги – это предметы. Необязательный блок items объявляет слова, которыми описан каждый предмет вашего набора, а каталог с holds: "items" перечисляет сами предметы. Оба требуют Capability API 1.49; rarityCaps и propose блока, управляющие предметами, которые придумывает Game Master, требуют 1.51, значение, читающее предметы персонажа (itemStat), – 1.52, действие предмета на проверки, пока он надет или при себе, вместе с ограничениями bonus блока – 1.53, требования предмета к носителю и изменяемые им характеристики – 1.54, attack оружия – 1.55, действие предмета в бою – 1.56, то, чем стреляет оружие и сколько в нем заряжено, – 1.57, режимы оружия, атака второй рукой, нижний предел и состояния при попадании – 1.58, действие использования предмета в бою вместе с его зарядами – 1.59, использование, восстанавливающее запас, – 1.60, заряды, восстанавливаемые отдыхом, или предмет, ломающийся при опустошении, – 1.61, использование, требующее сначала проверки (gate), – 1.62, таблицы добычи и добыча существа – 1.63, строка добычи с монетами или слой, убирающий монеты, – 1.64, рынок, место sold предмета и service – 1.65, рыночный день (кошелек, buyBack, stock продавца, количество limited или sold без места) – 1.69, дополнительный эффект, срабатывающий от удерживаемого оружия (weapons), – 1.70, начальное снаряжение (startingGear) – 1.78, рискованный предмет, подделка или нечестный продавец – 1.79, а unsold рынка (или items слоя) – 1.813.

Блок предметов

Блок находится в items верхнего уровня файла. Вот блок Ember Roads, немного сокращенный:

"items": {
  "categories": [
    { "id": "weapon", "label": "Weapon" },
    { "id": "armor", "label": "Armor" },
    { "id": "ammunition", "label": "Ammunition" }
  ],
  "rarities": [
    { "id": "common", "label": "Common" },
    { "id": "storied", "label": "Storied" }
  ],
  "tags": [
    { "id": "thrown", "label": "Thrown" },
    { "id": "ranged", "label": "Ranged" },
    { "id": "two_handed", "label": "Two-handed" },
    { "id": "arrow", "label": "Arrow" }
  ],
  "stats": [
    { "id": "bulk", "label": "Bulk", "type": "number", "min": 0, "max": 10, "default": 0 },
    { "id": "guard", "label": "Guard", "type": "number", "min": 0, "max": 4, "default": 0 },
    { "id": "damage", "label": "Damage", "type": "dice", "example": "1d6" },
    { "id": "swing", "label": "Rolls with", "type": "enum", "values": ["brawn", "wits", "heart"], "default": "brawn" },
    { "id": "reach", "label": "Reach", "type": "enum", "values": ["close", "near", "far"], "default": "close" }
  ],
  "slots": [
    { "id": "body", "label": "Body", "count": 1 },
    { "id": "hands", "label": "Hands", "count": 2 }
  ],
  "carry": { "stat": "bulk", "encumberedAbove": { "derived": "load" }, "limit": { "const": 12 } },
  "rarityCaps": [
    { "rarity": "common", "stats": { "guard": 1 }, "bonus": 1 },
    { "rarity": "storied", "stats": { "guard": 3 }, "bonus": 2 }
  ],
  "currencies": [
    {
      "id": "coin",
      "label": "Coin",
      "perWeight": 100,
      "units": [
        { "id": "bit", "label": "bits", "value": 1 },
        { "id": "mark", "label": "marks", "value": 10 },
        { "id": "sovereign", "label": "sovereigns", "value": 100 }
      ]
    },
    {
      "id": "salt",
      "label": "Salt",
      "perWeight": 10,
      "units": [
        { "id": "pinch", "label": "pinches", "value": 1 },
        { "id": "cake", "label": "cakes", "value": 20 }
      ]
    }
  ]
}

Предмет

Каталог предметов не объявляет feeds:

{ "id": "outfitter", "label": "Outfitter", "holds": "items", "entries": [] }

Каждая запись несет item вместо rows или creature:

{
  "id": "hunting-bow",
  "label": "Hunting bow",
  "summary": "Yew, waxed string, and a grip worn smooth by someone else's hand.",
  "item": {
    "category": "weapon",
    "rarity": "common",
    "tags": ["ranged", "two_handed"],
    "stats": { "bulk": 2, "damage": "1d8", "swing": "wits", "reach": "far" },
    "slots": { "hands": 2 },
    "cost": { "amount": 3, "unit": "sovereign" }
  }
}

У предмета нет mechanics: его действие записано в блоке item.

Что читает предметы

Все перечисленное проверяется при импорте набора, а ваши каталоги предметов поставляются вместе с ним. В игре их читает инвентарь Game Mode:

В боях Classic и Tactical каждый ваш предмет с use делает там то, что в нем сказано, а предмет без него не предлагается (см. Предметы в боях Classic и Tactical ниже). Что бы ни говорил native, лист может читать ваши предметы (ниже), удерживаемое оружие является атакой в бою по набору правил и стреляет тем, что берет из сумки, действие надетого или носимого предмета учитывается в таком бою (см. Доспехи и эффекты надетого в бою ниже), предмет с use используется по собственным правилам в бою и вне его (см. Использование предметов в бою и Использование предметов вне боя ниже), а ваши currencies – деньги отряда (см. Деньги ниже).

Предметы в листе

Ссылка на значение может читать предметы персонажа через itemStat (Capability API 1.52). Ember Roads прибавляет защиту доспеха, надетого путником, к его Guard – числу, которое должен превзойти удар:

{
  "id": "guard",
  "label": "Guard",
  "op": "sum",
  "of": [{ "const": 6 }, { "abilityMod": "wits" }, { "itemStat": { "stat": "guard", "from": "worn", "pick": "sum" } }]
}

Предметы меняются в игре, поэтому itemStat подчиняется тому же правилу, что чтение текущего состояния: max запаса или шкалы, бонус мастерства, binding.max, числа carry и масштабируемый столбец или масштабирование каталога не могут его читать даже через производное значение. Везде, где читается число, он доступен: производное значение, adjust проверки, cap навыка, защита, поглощение или инициатива в бою.

Предметы персонажа – те, что в его собственной сумке. Карточка игрока (та, что соответствует персонажу, за которого играют в чате, иначе первая) читает сумку игрока, а каждая другая карточка – свою. Учитываются только предметы вашего набора, поскольку у простого предмета нет параметров для чтения. Лист на экране, проверка, блок листа Game Master и бой в момент начала читают то, что есть у каждого персонажа в этот момент. Вне игры, в редакторе листа или при обзоре импорта, ни у кого ничего нет, и itemStat читает свой default.

Проверки вне боя

Проверка или спасбросок, которые Game Master запрашивает вне боя, читают не только лист: собственные активные состояния персонажа, достигнутые им уровни, действие его предметов, пока они надеты или при себе, и цену требований надетого предмета, пока персонаж им не соответствует. Это тот же словарь, что у состояний в бою (Capability API 1.53 для ключей предметов и сужения).

Предмет описывает свое действие через worn, которое действует, пока он надет (и привязан, если привязывается), и carried, которое действует, пока его просто несут с собой. Кожаный плащ из Ember Roads скрипит, когда его владелец крадется, а путевой камень внушает доверие караванщикам:

"worn": { "modifiers": [{ "to": "checks", "skills": ["sneak"], "flat": -1 }] }
"carried": { "modifiers": [{ "to": "checks", "skills": ["sway"], "flat": 1 }] }

Каждый из них принимает те части состояния, которые читает проверка:

Рукавицы из бычьей кожи в Ember Roads дают слабой хватке силу погонщика:

"worn": { "abilities": { "brawn": { "set": 2 } } }

Действие предмета в бою (защита, атаки, скорость, другие эффекты боя, а также вред и состояния, от которых он защищает) описано в разделе Доспехи и эффекты надетого в бою; проверка вне боя читает только перечисленные выше части. Один предмет действует один раз, сколько бы его стопок ни было у персонажа.

Предмет может также предъявлять требование к носителю через requires: значение из его листа (value, любая ссылка на значение, читаемая так же, как все в игре), наименьшее допустимое значение (atLeast) и то, что действует, пока носитель не соответствует (otherwise, в том же словаре, но без изменения характеристик, поскольку требование может их читать). До четырех. Могильная лопата из Gravewatch – тяжелая работа для слабого стража:

"requires": [
  {
    "value": { "abilityScore": "sinew" },
    "atLeast": 3,
    "otherwise": { "modifiers": [{ "to": "checks", "skills": ["dig"], "flat": -1 }] }
  }
]

Требование читает характеристику такой, какой ее оставляют предметы носителя, поэтому рукавицы, задающие Sinew 3, удовлетворяют требованию лопаты.

В проверке:

Gravewatch показывает то же на пуле: привязанный Dawn bell добавляет кость к Ward, а Rattled отнимает одну от Soothe и Barter.

Типизированные защиты от состояний, уровней, предметов и строк листа

combat.conditions[] и combat.levels[] могут давать resist, vulnerable, immune (по 1–30 записей каждое) и conditionImmunities (1–40 id состояний). Они действуют, пока действует состояние или пока достигнут порог уровня. Новая невосприимчивость к состоянию снимает это состояние, если оно уже действует, и не дает наложить его снова. Невосприимчивость важнее сопротивления; сопротивление и уязвимость взаимно отменяются. Несколько сопротивлений никогда не уполовинивают урон дважды.

resist и immune используют форму существа: слово урона или { "type": "bludgeoning", "except": ["magical"] }. Любой названный тег удара обходит эту запись. vulnerable остается простыми словами урона. Та же форма исключения работает в эффектах worn и carried предметов. Объявите теги исключений в items.tags и поставьте их в качества оружия или заклинания. Например, Stoneskin – это сопоставление состояния:

{
  "condition": "stoneskin",
  "resist": [
    { "type": "bludgeoning", "except": ["magical"] },
    { "type": "piercing", "except": ["magical"] },
    { "type": "slashing", "except": ["magical"] }
  ]
}

Доспех неуязвимости использует тот же массив resist внутри своего эффекта worn. Protection from Energy может давать resist: ["fire"]; черта вроде Brave может давать conditionImmunities: ["frightened"]. Уровень может давать resist: ["poison"] на своем пороге. Неизвестные статические слова урона сообщаются, если combat.damageTypes объявляет словарь, как для существ; без такого объявления слова урона – свободный текст.

Для черт происхождения или каталога combat.sheetHides вмещает до восьми источников (пустой массив допустим). Каждый называет список листа, один текстовый столбец или столбец-перечисление этого списка и один из четырех видов. Для дворфа, у которого строка черт содержит "poison" в столбце resistance:

"sheetHides": [{ "list": "traits", "column": "resistance", "kind": "resist" }]

Каждая строка дает слова через запятую, которые обрезаются по краям и сопоставляются без учета регистра; пустые слова пропускаются. Добавление строки с "fire" добавляет сопротивление огню; ее удаление убирает этот источник. Слова сопротивления и невосприимчивости могут включать except, как в "bludgeoning except magical silvered". Уязвимости и невосприимчивости к состояниям – простые слова. Неизвестные объявленные слова урона в тексте листа игнорируются, как и неизвестные id состояний; столбец-перечисление для невосприимчивостей к состояниям при импорте должен объявлять только id состояний. Сводки листа, сражения и для Game Master включают эти защиты и их исключения.

Оружие в бою

Предмет может быть оружием (Capability API 1.55). Его attack имеет форму строк атак боевого блока, со значениями вместо столбцов, и бой по набору правил предлагает его как атаку, пока предмет надет: удерживается в руках, которые он занимает, и привязан, если привязывается. Убранный или просто носимый с собой предмет ничего не предлагает, а строки атак и собственные действия существа работают точно как раньше. Ручной топор из Ember Roads:

"attack": {
  "budget": "act",
  "toHit": { "abilities": { "stat": "swing" } },
  "damage": { "dice": { "stat": "damage" }, "abilities": { "stat": "swing" }, "type": "cut" },
  "reach": 2,
  "range": { "normal": 10, "long": 20 }
}

Любое из этих чисел или слов может вместо этого читать собственный параметр предмета: { "stat": "damage" } – это damage предмета, а параметр, который предмет не дает, равнозначен незаписанному значению. abilities и skill читают параметр-перечисление, чьи слова – id характеристик или навыков, а type – текстовый параметр или перечисление. Поэтому предмет, который Game Master придумывает like= оружию, тоже оружие и сражается собственными параметрами, ограниченными rarityCaps, как любой параметр (записанное вами значение копируется как есть). Придуманный предмет без слота и без привязки никогда не надет, поэтому создается без атаки. Небольшая модель склонна описывать оружие, не указывая like=, поэтому придуманный в категории вашего оружия предмет без основы сражается как ваше оружие этой категории, наиболее похожее по названию (общее слово в любую сторону, так что crossbow похож на bow), или как первое из них, беря любой читаемый этой атакой параметр, пропущенный в предложении, и ответ это сообщает ("It fights as Hand axe does."). Форма предложения Game Master также сообщает ему, что оружие, сделанное по образцу, сражается как образец.

Метки оружия – то, что несут его удары. Запись resist или immune существа может сообщать, что проходит сквозь нее: { "type": "tearing", "except": ["silver"] } полностью принимается от оружия с меткой silver и уменьшается сопротивлением от всего остального. Так записан могильный упырь из Gravewatch, и серебряный гробовой гвоздь из того же набора его пробивает. Вред, который наносит не предмет-оружие, называет то, что он несет, через qualities (Capability API 1.101) теми же тегами предметов: в mechanics записи каталога (заклинание) и в damage действия существа (булава дэвы). "Сопротивление дробящему, колющему и рубящему урону от немагических атак" из 5e – это { "type": "slashing", "except": ["magical"] } вместе с тем же для двух других типов, с magical в тегах магического оружия и "qualities": ["magical"] у заклинаний и у атак существ, которые SRD называет магическими.

Сведения об оружии и строка Game Master сообщают, что оно делает: attack (Action): Brawn to hit, 1d6 + Brawn cut, reach 2 paces, range 10 to 20 paces, с 1d8 with a hand free для кабаньего копья из Ember Roads и at 6 рядом с лопатой из Gravewatch.

Боеприпасы и перезарядка

Оружие может чем-то стрелять и может иметь собственный магазин (Capability API 1.57). Охотничий лук из Ember Roads стреляет стрелами, а караульный пистолет из Gravewatch вмещает одну пулю и заряжается порохом и пулями из сумки стража:

"ammo": { "tag": "arrow", "recover": 0.5 }
"ammo": { "tag": "shot" },
"clip": { "max": 1, "reload": "act" }

Все, что бой выпускает, заряжает и подбирает, записывается в инвентарь на каждом шаге, как здоровье отряда, а журнал приключений сообщает, что было использовано. Шаг, чья стопка исчезла или содержит меньше, чем рассчитывал бой, отклоняется, как и потраченный предмет, который бой не может найти. Журнал боя сообщает о каждом выстреле, перезарядке и подборе ("Hunting bow: 2 left to shoot.", "Ada loads 1 into Watch pistol: 1 of 1 loaded."), а сведения о предмете и строка Game Master сообщают, чем стреляет оружие и что вмещает: ammunition Arrow (1 an attack, 50% picked up after a won fight) и holds 1, reload (Act).

Режимы, второе оружие, нижний предел и состояния при попадании

Оружие может иметь другие способы атаки, напарника во второй руке, наименьший наносимый вред и состояния, которые оно накладывает на пораженного (Capability API 1.58). Охотничий лук из Ember Roads может дать залп, а серебряный гробовой гвоздь из Gravewatch можно держать в каждой руке, и он метит тех, кого глубоко ранит:

"modes": [{ "id": "volley", "label": "Volley", "ammo": 2, "toHit": -2, "targets": 2 }]
"offHand": true,
"onHit": [{ "condition": "marked", "atLeast": 2, "rounds": 2 }]
  "offHand": { "budget": "quick", "ability": "full" }

Как только владелец атаковал в этом ходу одним оружием с отметкой offHand, каждое другое такое оружие на нем предлагает вторую атаку за этот бюджет, названную в меню "Silver coffin nail, off hand". ability – full (по умолчанию) или penalty-only, при котором характеристика урона добавляется, только если она что-то отнимает, как правило боя двумя оружиями в 5e. Атака второй рукой – один удар, сколько бы ударов ни покупала основная атака, и никогда не удар по уходящему. Оружию с отметкой offHand нужен offHand боевого блока. fullWhen (Capability API 1.97) – значение из листа бойца: если оно больше 0, вторая рука этого бойца сохраняет полную характеристику, что бы ни говорил ability, как боевой стиль Two-Weapon Fighting в 5e.

Запись может также нести save: { "save": <save id>, "difficulty": n }, который цель бросает при наложении состояния, и успех его не допускает, и saveEnds: { "save", "difficulty", "at": "turn-start" | "turn-end" | "damaged" }, при котором состояние длится, пока владелец не преуспеет в этом спасброске в начале или конце каждого своего хода или при уроне больше нуля (тогда у него нет rounds). Оба считаются спасбросками против этого состояния, а если оружие магическое – и против магии (Capability API 1.169). Меч ранений из 5e: { "condition": "wounded", "atLeast": 1, "saveEnds": { "save": "con_save", "difficulty": 15, "at": "turn-start" } }.

Сведения об оружии и строка Game Master сообщают все это: modes Volley (2 shots, -2 to hit, up to 2 targets), off hand (Quick), at least 1 on a hit before resistance, +3d6 slashing against Dragon и Marked for 2 rounds when a hit deals 2 or more.

Доспехи и эффекты надетого в бою

Действие предмета, пока он надет или при себе, может менять и бой (Capability API 1.56) для его владельца, наряду с его состояниями и уровнями. Каждый из блоков принимает те части состояния, которые читает бой:

Проклятое вдовье кольцо из Gravewatch стоит кости при каждой атаке, привязанный Dawn bell из того же набора не дает носителю стать Rattled, а путевой камень из Ember Roads, носимый с собой, защищает от жара:

"worn": { "modifiers": [{ "to": "attacks", "flat": -1 }] }
"worn": { "modifiers": [{ "to": "checks", "skills": ["ward"], "flat": 1 }], "conditionImmunities": ["rattled"] }
"carried": { "modifiers": [{ "to": "checks", "skills": ["sway"], "flat": 1 }], "resist": ["burn"] }

Бой читает каждый предмет один раз, называя его по стопке ("Widow's ring" рядом с броском в журнале и у защиты), как и проверка; otherwise невыполненного требования тоже учитывается в бою, поэтому слишком тяжелый для носителя доспех может стоить скорости. Сведения о предмете и строка Game Master сообщают все это ("While worn: -1 on attacks", "worn: +1 on checks (Ward), immune to Rattled"). Доспех, который прибавляет к защите или поглощению, – это параметр предмета, читаемый через itemStat (см. Предметы в листе), так же как Guard в Ember Roads читает надетый плащ.

Твердость. Если инициатива – число, которое сдвигают атаки, combat.pool.hardness – твердость бойца, читаемая из его листа в начале боя (у доспеха – через itemStat), а существо задает собственную hardness. Тратящий удар, чьих костей меньше этого значения, попадает и ничего не делает: число атакующего все равно возвращается к базе, журнал это сообщает ("Ada's Grave spade lands on the warden with 5 dice, below a hardness of 6, and does nothing."), а меню не прогнозирует для него вреда. Твердость может быть только у набора со стилем, который тратит, а существо, записанное листом, берет ее из листа.

Использование предметов в бою

Предмет можно использовать в бою (Capability API 1.59): прижать припарку к ране, выпить настойку, позвонить в колокол. Его use описывает действие использования словами mechanics записи каталога (см. Что бой читает из mechanics): kind (heal, attack, buff или debuff), amount, damageType, plus, attackRoll, save, applies, temporary, range, area, targets, targetCount, friendlyFire, а начиная с Capability API 1.174 – concentration и zone, с расходуемым budget или free. Припарка из Ember Roads, а также согревающая настойка и колокол Dawn bell из Gravewatch:

"use": { "kind": "heal", "budget": "act", "range": 0, "targets": "ally", "amount": { "dice": "1d4", "flat": 1 }, "consumes": true }
"use": { "kind": "heal", "budget": "quick", "targets": "self", "amount": { "flat": 1 }, "consumes": true }
"stack": 1,
"use": {
  "kind": "debuff",
  "budget": "act",
  "targets": "enemy",
  "save": { "save": "steel", "onSuccess": "negates" },
  "saveDifficulty": 7,
  "applies": [{ "condition": "rattled", "duration": { "rounds": 2 } }],
  "charges": 1
},
"charges": { "max": 3 }
  "charges": { "max": 3, "recharge": { "rests": ["vigil"], "amount": "max" }, "breaksOn": { "die": 20, "atMost": 1 } }
  "gate": { "check": { "skill": "ward" }, "difficulty": 2, "unless": { "value": { "abilityScore": "nerve" }, "atLeast": 3 } }

Расходуемое в бою и оставшиеся заряды записываются в инвентарь на каждом шаге, как выстрелы оружия, а журнал приключений сообщает, что было использовано. Журнал боя сообщает о каждом использовании ("Poultice: 1 of 2 left.", "Dawn bell: 2 of 3 left."). Участник отряда под управлением Engine применяет лечение только к раненому, и никто не использует предмет для удара по уходящему. Сведения о предмете и строка Game Master сообщают, что делает использование: "Use (Action): heals 1d4 + 1, range 0 paces, used up" и use (Act): Steel 7 save negates it, Rattled, 1 of 3 charges, а сведения показывают оставшиеся заряды. Предмет, который Game Master придумывает like= вашему, используется как образец, со всеми зарядами.

Предметы в боях Classic и Tactical

Набор, который не разрешает собственные бои, оставляет их встроенным боям Classic и Tactical режима Game Mode, где в начале боя модель спрашивают, что делают предметы инвентаря. Ваши предметы не угадываются: каждый с use делает то, что в нем сказано, на собственных числах Engine, а предположение Game Master запрашивается только для предметов не из вашего набора (и ни для каких при native: false).

Engine сам вычисляет действие каждого предмета, поэтому присланное экраном никогда не решает, что делает ваш предмет.

Добыча

Выигранный бой в любой игре Game Mode один раз оставляет добычу, которая попадает в сумки отряда. Без набора правил она берется из собственных таблиц Game Mode (больше и реже на более сложной игре), как и в наборе, который не объявляет таблиц добычи и оставляет native включенным. Набор, объявляющий таблицы добычи, вместо этого выдает собственные предметы, а набор с native: false и без таблиц ничего не выдает.

lootTables в блоке items (Capability API 1.63) перечисляет их, как погребальные дары в Gravewatch:

"lootTables": [
  {
    "id": "grave_goods",
    "label": "Grave goods",
    "rolls": "1d2",
    "entries": [
      { "item": "kit/shot-and-powder", "weight": 4, "count": "1d4" },
      { "item": "kit/warming-tonic", "weight": 3 },
      { "item": "kit/litany-page", "weight": 2 },
      { "filter": { "category": "arm" }, "weight": 1 },
      { "coins": "shilling", "weight": 2, "count": "1d6" }
    ]
  }
]

Деньги

Ваши currencies – деньги отряда. Монета – предмет в сумках, стопка каждой монеты как любая другая, названная по label:

Начальное снаряжение

items.startingGear (Capability API 1.78) перечисляет снаряжение, которое персонаж может взять в сумку в начале: набор класса, предыстории, призвания. Оно никогда не выдается само. Инвентарь показывает строку Starting gear (начальное снаряжение), и игрок выбирает набор снаряжения, вариант для каждого из его выборов и предмет из каждого списка, а затем берет все это в сумку игрока или участника отряда. Снаряжение, которому соответствует (fits) лист персонажа, идет в списке первым, затем снаряжение без fits (для любого персонажа, например набор предыстории); предлагается любое снаряжение, потому что концепцию персонажа согласуют игрок и Game Master.

"startingGear": [
  {
    "id": "fighter", "label": "Fighter", "group": "class",
    "fits": { "value": { "field": "level_fighter" }, "atLeast": 1 },
    "lines": [{ "item": "equipment/shield", "equip": true }],
    "choices": [
      {
        "label": "Armor",
        "options": [
          { "label": "Chain mail", "lines": [{ "item": "equipment/chain-mail", "equip": true }] },
          { "label": "Leather armor and a longbow", "lines": [
            { "item": "equipment/leather-armor", "equip": true },
            { "item": "equipment/longbow" }, { "item": "equipment/arrow", "count": 20 }
          ] }
        ]
      },
      { "label": "A martial weapon", "options": [
        { "label": "Pick one", "lines": [{ "oneOf": ["equipment/longsword", "equipment/battleaxe"] }] },
        { "label": "A greataxe", "lines": [{ "item": "equipment/greataxe" }] }
      ] }
    ]
  },
  { "id": "acolyte", "label": "Acolyte", "group": "background", "lines": [{ "coins": "gp", "count": 15 }, { "name": "Vestments" }] }
]

Рынки

market в блоке items (Capability API 1.65) сообщает, что продает место и по какой цене, вместо того чтобы каждая лавка продавала все по прейскуранту. Рынок Gravewatch, немного сокращенный:

"market": {
  "prices": [
    { "id": "cheap", "label": "cheap", "times": 0.75 },
    { "id": "fair", "label": "fair", "times": 1, "default": true },
    { "id": "dear", "label": "dear", "times": 1.5 }
  ],
  "places": [
    { "id": "hamlet", "label": "hamlet" },
    { "id": "village", "label": "village" },
    { "id": "town", "label": "market town" },
    { "id": "city", "label": "city" }
  ],
  "sold": [
    { "filter": { "rarity": "rare" }, "place": "town" },
    { "filter": { "category": "arm" }, "place": "village" }
  ],
  "sellers": [
    { "id": "chandler", "label": "chandler", "sells": [{ "category": "coat" }, { "category": "tonic" }] },
    { "id": "smith", "label": "smith", "sells": [{ "category": "arm" }], "place": "village" },
    {
      "id": "chapel",
      "label": "chapel of the Vigil",
      "sells": [{ "category": "page" }],
      "place": "town",
      "only": { "value": { "abilityScore": "nerve" }, "atLeast": 3, "label": "wardens of Nerve 3 or more" }
    }
  ]
}

Где находится отряд. Game Master сообщает, в каком месте сцена и какого оно размера, командой [place: name="Millbrook" size="market town"], размер – по id или подписи, и опускает размер для места без рынка (дорога, глушь). Engine отвечает на каждый тег на месте, отклоняя размер, которого у вас нет, а последнее место, на которое он ответил в собственных видимых игроку ответах с последнего начала разговора, остается текущим, пока не названо другое. Тег места, введенный игроком, никогда не учитывается. Перегенерированный ответ читает только то, что было до замещаемого им сообщения.

Покупка. Game Master покупает командой [inventory: action="buy" item="Hand axe" count="1" level="dear" seller="smith" who="Ada"]; level (без него – по умолчанию) и seller (без него – любой здешний продавец этого предмета) необязательны. Engine назначает цену по месту, текущему на момент окончания ответа, берет ее из кошелька покупателя (игрока без who=), как платеж, со сдачей, и кладет предмет в его сумку или только оплачивает услугу. Происходит либо и то и другое, либо ничего. Ответ сообщает цену (price="12 shillings"), что заплачено и что вернулось, и появляется уведомление. Покупка отклоняется и ничего не меняет, если место не названо (no-place), уровня, предмета или продавца у вас нет (unknown-level, unknown-item), нет цены (not-for-sale), место слишком мало для предмета (not-here), здесь нет продавца этого предмета (no-seller), покупатель не соответствует only продавца (not-to-you), кошелек не может покрыть цену (cannot-afford) или сумка не может вместить предмет.

Что видит Game Master. Пока сцена находится в месте с рынком, блок MARKET называет место и его размер, уровни цен и каждого здешнего продавца с дюжиной его товаров по уровню по умолчанию, от самых дешевых; все, что он продает, можно купить по имени. Его инструкции обучают [place:] и buy, и есть они только у набора с рынком.

Рыночный день

Рыночный день (Capability API 1.69) заставляет полки места меняться и пустеть и позволяет отряду продавать обратно. Пример Gravewatch, немного сокращенный:

"places": [
  { "id": "hamlet", "label": "hamlet", "purse": { "amount": 10, "unit": "shilling" } },
  { "id": "town", "label": "market town", "purse": { "amount": 100, "unit": "shilling" } }
],
"buyBack": 0.5,
"sold": [{ "filter": { "rarity": "rare" }, "place": "town", "limited": "1d2" }],
"sellers": [
  { "id": "smith", "label": "smith", "sells": [{ "category": "arm" }], "stock": { "table": "smiths_odd_lot" } }
]

Честные и нечестные продавцы

Capability API 1.79 позволяет предмету быть рискованным или поддельным, а продавцу – нечестным.

"items": { "market": { "sellers": [
  { "id": "fence", "label": "Fence", "sells": [{ "tag": "magical" }], "place": "town", "honest": false, "stock": { "table": "fences_odd_lot" } }
] } }
{ "id": "bag-of-devouring", "label": "Bag of Devouring", "item": { "category": "wondrous", "passesFor": "magic_items/bag-of-holding", "cost": { "amount": 5, "unit": "gp" } } }
{ "id": "wand-of-wonder", "label": "Wand of Wonder", "item": { "category": "wand", "risky": "every wave is a gamble; some effects turn on the one who waves it" } }

Распознавание подделок

Capability API 1.802 позволяет персонажу распознать подделку с помощью проверки, которую он выполняет, или заметить ее до того, как кто-либо заплатит. Engine не знает ни одной из проверок по имени: их задает набор правил.

{
  "id": "potion-of-poison",
  "label": "Potion of Poison",
  "item": {
    "category": "potion",
    "passesFor": "magic_items/potion-of-healing",
    "tells": [
      {
        "check": { "value": { "derived": "poisoners_kit_check" } },
        "dc": 13,
        "carries": { "anyOf": ["gear/poisoners-kit"] },
        "says": "a faint bitterness under the sweetness"
      },
      { "check": { "skill": "arcana" }, "dc": 18, "says": "its magic does not feel like healing magic" }
    ],
    "foolsReveal": ["identify"]
  }
}
"items": {
  "namesItAt": 5,
  "revealsFakes": [{ "id": "identify", "label": "Identify" }, { "id": "detect-poison", "label": "Detect Poison and Disease", "items": ["magic_items/potion-of-poison"] }],
  "market": { "sellers": [
    { "id": "fence", "label": "Fence", "honest": false, "sells": [{ "tag": "magical" }],
      "manner": { "check": { "skill": "insight" }, "dc": 13, "advantageIf": [{ "value": { "derived": "knows_trade" }, "atLeast": 1 }], "says": "their eyes slide away when you ask about it" } }
  ] }
}

Использование предметов вне боя

То же use работает вне боя (Capability API 1.60 для restore; остальному ничего нового не нужно). Кнопка Use в инвентаре для вашего предмета с use и команда Game Master [inventory: action="use" item="Poultice" who="Juno"] делают с тем, кто несет предмет, то, что делает предмет, костями Engine:

Произошедшее сообщается одной строкой: "Juno uses Poultice: heals 4 (Grit 6/11). 1 left." Кнопка Use отправляет это Game Master в блоке [item_used] после "I use my Poultice.", который чат показывает значком; на собственный тег Game Master отвечают тем же, отсчитывая от начала хода, как его другие теги, поэтому перегенерированный ответ никогда не использует предмет дважды. Предмет без use или в игре без набора правил по-прежнему называется: "I use my rope."