Stoneshard Wiki

Запасы и ремонт у торговцев

Полка торговца не является постоянным списком: у каждого есть свой ассортимент и размер запаса, а партия генерируется при пополнении и становится видна при открытии окна торговли. Панель показывает интересующие товары, ожидаемые уровни экипировки и время до пополнения; ремонт — отдельная платная услуга, доступная лишь некоторым торговцам.

Содержание

Обзор

Товары торговца берутся из ассортимента, заданного категориями и отдельными предметами. Его записи могут добавляться или заменяться в зависимости от уровней репутации, выполненных заданий и улучшений каравана. Размер запаса определяет число товаров в партии; у торговцев одного поселения ассортимент и размер запаса различаются, поэтому различаются и их прилавки.

Пополнение идёт по расписанию: у поселений есть собственные циклы, а у отдельных торговцев могут быть свои; игра проверяет это каждый час. По умолчанию заменяется вся партия, другой режим удаляет только её часть. Ремонт отделён от запаса и показывается кнопкой панели только у торговцев с такой услугой.

Состав цен покупки и продажи и расчёт спроса и предложения разобраны в статье о ценах на предметы; сравнивайте реальные суммы торговым инструментом.

Официальный текст панели

В таблице текста панели этой версии поля подсказки торговли записаны как «Interested in:», «Equipment Tier:», «Restocks in:», «Can Repair:», «Repairs Price:» на английском; здесь эти официальные названия приведены дословно.

Значение после «Restocks in:» показывается в днях: панель переводит оставшееся время в дни и выводит число с официальной единицей «day / days»; при остатке менее дня используется формулировка «less than a day». Поэтому панель показывает примерное время до пополнения, а не точный момент.

Текст подсказки кнопки ремонта берётся из той же таблицы и называется «Repair items»; строки «Can Repair:» и «Repairs Price:» заполняются только для торговцев, предлагающих ремонт.

Циклы пополнения

Каждое поселение хранит собственный цикл пополнения. Ежечасная проверка смотрит, сколько часов прошло с последнего пополнения; когда цикл достигнут, запускается пополнение поселения и его торговцы отмечаются для обновления.

Проверенные примеры, а не полный список: 48 часов для обычных поселений, 24 часа для Бринна, 72 часа для Денбри и 0 для пивоварни — она не выполняет пополнение поселения. Поэтому ритм различается по местам.

У торговца тоже может быть собственный цикл разной длины; если он не задан, торговец следует циклу поселения. Значение «Restocks in:» берёт ближайшее из двух событий и переводит его в дни.

Как работает пополнение

У пополнения есть два режима. По умолчанию заменяется вся партия: текущие записи товаров очищаются, а следующая партия создаётся из ассортимента и размера запаса, поэтому приходит полностью новая партия.

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

У денег торговца может быть отдельный таймер пополнения, включённый лишь у некоторых торговцев; деньги не входят в описанный цикл товаров и обрабатываются отдельно.

Генерация товаров и судьба проданных предметов

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

Ассортимент пересчитывается при каждом открытии окна торговли, поэтому изменения от репутации, выполненных заданий и улучшений каравана вступают в силу при следующем открытии.

Проданные товары сами не возвращаются: после продажи предмет исчезает из записей торговца, а новые товары создаются только при следующем пополнении. Полная замена партии создаёт новую партию, а не возвращает тот же предмет; статья не обещает получение конкретного предмета повторением пополнений.

Для предметов, зарегистрированных как уникальный запас, действует дополнительное правило: покупка заносит предмет в сохранённый список торговца, последующая генерация его пропускает, и после продажи он больше не появляется.

Репутация, задания и караван

Уровни репутации меняют запас: бонусы репутации имеют модификаторы размера запаса и уровня экипировки, причём уровень имеет собственный предел, а модификаторы складываются только внутри него. Размер запаса равен сумме базового диапазона торговца, модификатора места и личных модификаторов; уровни и торговая выгода разобраны в статье о репутации.

Торговое улучшение каравана увеличивает размер запаса торговца; дерево улучшений описано в статье о караване.

Некоторые задания записывают для конкретного торговца личный модификатор размера запаса или цены ремонта; эти изменения относятся к статьям персонажей и заданий и здесь не перечисляются по одному.

Ремонт

Ремонт — необязательная услуга: по умолчанию она выключена и включается отдельно для каждого торговца. Поэтому кнопка ремонта появляется только у поставщиков услуги; большинство обычных торговцев и трактиров ремонт не предлагают.

Текст подсказки кнопки зависит от обрабатываемого материала: металл, дерево, ткань или кожа. Предмет можно ремонтировать только при выполнении нескольких условий: материал должен поддерживаться торговцем; неопознанные предметы, предметы с полной прочностью, неподходящим материалом или отметкой краденого в этом месте заблокированы.

Один ремонт полностью восстанавливает прочность предмета, а не покупает её частями. Плата поступает торговцу и записывается в расходы персонажа.

Цена строится из четырёх входных данных: уровня предмета, доли недостающей прочности, базовой стоимости предмета и собственного параметра цены ремонта торговца. Они перемножаются, округляются и получают минимальный порог; поэтому один предмет стоит по-разному у разных торговцев и при разной недостающей прочности. Точную сумму смотрите в панели или торговом инструменте.

Некоторые задания и эффекты каравана меняют этот параметр; такие модификаторы разобраны в статьях персонажей, заданий и каравана.

Документированные пробелы

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

Наблюдение по коду: модификаторы ситуаций поселения содержат записи для цикла пополнения и цены ремонта, но торговый скрипт той же версии не читает эти два ключа. Это наблюдение по экспорту; статья не делает вывода, что ситуации не влияют на значения, и не отслеживает каждого потребителя модификаторов.

Источники

Версия игры 0.9.4.25

  1. Источник версии 0.9.4.25: таблица текста торговой панели gml_GlobalScript_table_text (категории, уровни экипировки, время пополнения, материалы и цена ремонта, единицы времени, формулировка для срока менее дня и подсказка кнопки ремонта; двенадцать языковых столбцов)
  2. Источник версии 0.9.4.25: цепочка панели и загрузки gml_Object_o_textLoader_Other_25, gml_Object_o_hoverTradeModifierOffers_Other_20, gml_GlobalScript_scr_npc_restock_time_get (три списка панели берутся из таблицы; оставшееся время переводится из разницы часов в дни)
  3. Источник версии 0.9.4.25: значения профилей торговцев и профиль с ремонтом gml_Object_o_NPC_Create_0, gml_Object_o_npc_smith_osbrook_Create_0, gml_GlobalScript_scr_npc_stock_size_init (ремонт выключен по умолчанию, полная замена партии, без личного цикла, пополнение от поселения; базовый диапазон запаса)
  4. Источник версии 0.9.4.25: точка входа и условия ремонта gml_Object_o_trade_inventory_Other_10, gml_Object_o_skill_repair_item_master_Other_20, gml_Object_o_skill_repair_item_master_Other_11 (кнопка панели и материал; неопознанные, полностью прочные, неподходящие и местно краденые предметы заблокированы; ремонт полностью восстанавливает прочность и оплачивается торговцу)
  5. Источник версии 0.9.4.25: входные данные цены ремонта gml_Object_o_inv_slot_Step_0 (уровень предмета, доля недостающей прочности, базовая стоимость и параметр ремонта торговца перемножаются, округляются и получают нижний предел)
  6. Источник версии 0.9.4.25: триггеры и режимы пополнения gml_GlobalScript_scr_timeEveryHourTrigger, gml_GlobalScript_scr_settlementRestock, gml_GlobalScript_scr_npc_restock (ежечасная проверка цикла поселения, полная замена и частическая ротация; полная партия по умолчанию; у денег отдельный таймер)
  7. Источник версии 0.9.4.25: циклы пополнения поселений gml_Object_o_globalmap_settlement_Create_0, gml_Object_o_globalmap_brynn_Create_0, gml_Object_o_globalmap_denbrie_Other_10, gml_Object_o_globalmap_brewery_Create_0
  8. Источник версии 0.9.4.25: генерация партии и уникальный запас gml_Object_o_NPC_Other_24, gml_Object_o_trade_inventory_Other_13, gml_GlobalScript_scr_trade_item, gml_GlobalScript_scr_selling_loot_singular_stock (генерация при открытии окна, запись при закрытии, проданные товары не возвращаются, уникальный запас пропускается после покупки)
  9. Источник версии 0.9.4.25: модификаторы размера запаса и уровня gml_GlobalScript_scr_trade_parametrs_update, gml_GlobalScript_scr_settlementReputationPerkGetModifiers, gml_GlobalScript_scr_npc_lines_carpenter_scripts, gml_GlobalScript_scr_npc_lines_mann_healer (бонусы репутации, торговое улучшение каравана и модификаторы от заданий)
  10. Источник версии 0.9.4.25: данные модификаторов ситуаций поселения gml_GlobalScript_scr_settlementSituationGetModifiers (записи цикла пополнения и цены ремонта; торговый скрипт той же версии не читает эти два ключа — наблюдение)
Наверх