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으로 정착지 재입고를 전혀 실행하지 않습니다. 따라서 정착지와 장소에 따라 주기가 다릅니다.

상인에게도 길이가 서로 다른 개별 재입고 주기가 있을 수 있습니다. 개별 주기를 설정하지 않은 상인은 정착지 주기를 따르며, 별도 주기 없음이 기본값입니다. 패널의 재고 보충 시간은 상인 주기와 정착지 주기 중 먼저 도달하는 쪽을 택해 일수로 환산합니다.

재입고 방식

재입고에는 두 가지 동작이 있습니다. 기본 방식은 전체 상품 묶음을 교체합니다. 상인의 현재 상품 기록을 지우고 상품 구성과 재고 규모에 따라 다음 묶음을 생성하므로 완전히 새로운 상품 묶음이 들어옵니다.

다른 방식은 진열 상품 일부를 제거합니다. 현재 묶음의 일부만 제거하며, 고정 비율 대신 아이템별 판정으로 대략 절반을 교체합니다. 제거된 상품이 차지하던 자리는 해당 상인의 사용 가능한 재고 칸 수에 다시 더해져 다음 묶음이 채울 수 있습니다.

상인의 자금에는 별도의 보충 타이머가 있으며 일부 상인만 이를 사용합니다. 자금 항목은 위의 상품 교체에 포함되지 않고 따로 처리됩니다.

상품 생성 시점과 판매된 상품의 처리

상품 묶음의 내용은 거래 창을 열 때 생성됩니다. 게임은 해당 상인의 상품 구성 정의를 다시 실행하고 재고 규모에 도달할 때까지 상품을 하나씩 추가하며, 새로 생성한 장비의 내구도를 무작위로 정합니다. 창을 닫으면 진열 상품을 상인의 상품 기록에 다시 저장하고 비어 있는 재고 칸 수도 갱신합니다.

상품 구성 자체를 거래 창을 열 때마다 다시 계산하므로 평판 단계, 완료한 퀘스트, 캐러밴 업그레이드에 따른 변화는 다음에 창을 열 때 적용됩니다.

판매된 상품은 저절로 돌아오지 않습니다. 상인이 판매한 뒤에는 해당 아이템이 상인의 상품 기록에서 빠지며, 다음 재입고 때에야 새로운 상품이 생성됩니다. 전체 교체 재입고는 같은 아이템이 돌아오는 것이 아니라 새 묶음을 만드는 것입니다. 이 문서는 재입고를 반복하면 원하는 특정 아이템을 반드시 얻을 수 있다고 주장하지 않습니다.

고유 재고로 등록된 아이템에는 추가 규칙이 있습니다. 구매하면 상인의 저장 목록에 기록되고 이후 생성 과정에서 제외되므로, 한 번 판매된 뒤에는 다시 나타나지 않습니다.

평판, 퀘스트, 캐러밴

평판 단계는 재고에도 영향을 줍니다. 평판 혜택에는 재고 규모와 장비 등급 보정이 모두 있고, 장비 등급에는 별도의 상한이 있어 보정은 그 범위 안에서만 누적됩니다. 재고 규모 자체는 상인의 기본 범위, 장소 보정, 개인 보정의 합입니다. 평판 단계와 거래 호감도는 평판 문서에서 다룹니다.

캐러밴의 거래 업그레이드는 상인의 재고 규모를 늘립니다. 업그레이드 계통 자체는 캐러밴 문서에서 다룹니다.

일부 퀘스트는 특정 상인에게 재고 규모 또는 개인 수리비 보정을 기록합니다. 해당 변화는 인물 및 퀘스트 문서에서 다루며 여기서는 하나씩 나열하지 않습니다.

수리

수리는 선택적으로 제공되는 서비스입니다. 기본적으로 꺼져 있고 상인별로 켜므로, 서비스를 제공하는 상인의 거래 패널에만 수리 버튼이 나타납니다. 대부분의 잡화상과 여관은 제공하지 않습니다.

버튼 도움말은 금속, 목재, 천, 가죽 등 해당 상인이 다루는 재질에 맞춰 표시됩니다. 수리 가능 여부는 여러 조건으로 결정됩니다. 아이템의 재질이 해당 상인이 다루는 것이어야 하며, 미감정 아이템, 이미 내구도가 최대인 아이템, 재질이 맞지 않는 아이템, 해당 지역에서 장물로 표시된 아이템은 수리할 수 없습니다.

한 번 수리하면 아이템의 내구도가 완전히 회복됩니다. 내구도를 원하는 비율만큼 구매하는 방식은 아닙니다. 비용은 해당 상인에게 지급되며 캐릭터의 지출로 기록됩니다.

가격에는 네 요소가 사용됩니다. 아이템 등급, 손실된 내구도의 비율, 아이템의 기본 가치, 해당 상인의 수리비 계수입니다. 이들을 곱한 뒤 반올림하고 최솟값을 적용합니다. 따라서 같은 아이템도 상인과 손실된 내구도에 따라 수리비가 다릅니다. 이 문서에는 계산식이나 상인별 계수를 공개하지 않으므로 정확한 금액은 거래 패널이나 거래 도구에서 확인하세요.

일부 퀘스트와 캐러밴 관련 효과는 해당 계수를 조정합니다. 이러한 보정은 인물, 퀘스트, 캐러밴 문서에서 다루며 여기서는 반복하지 않습니다.

기록된 데이터 공백

다음 사항은 동일 버전 데이터에서 확인을 마치지 못해 단정하지 않습니다(기록된 공백). 플레이어에게 표시되는 수리비의 정확한 기준, 즉 패널이 사용하는 수리 계수와 아이템의 기본 가치가 같은 필드인지 여부, 보급품과 소모품도 같은 흐름으로 재입고되는지 여부, "대략 절반" 교체의 정확한 비율, 전체 상인의 개별 주기와 각 상인의 소속 정착지, 퀘스트 수준 장비 등급 보정에 값을 기록하는 코드의 존재 여부, 한 번 재입고로 생성되는 총 상품 수, 플레이어가 생성에 쓰이는 무작위 상태를 재현할 수 있는지 여부입니다. 이 문서는 원하는 특정 아이템을 생성할 수 있다고 주장하지 않습니다.

코드에서 관찰한 사항도 하나 있습니다. 동일 버전의 정착지 상황 보정에는 재입고 주기와 수리비 항목이 있지만, 상황 보정을 읽어 상인의 거래 계수를 계산하는 동일 버전 스크립트는 이 두 키를 사용하지 않습니다. 이는 추출본을 읽고 기록한 관찰입니다. 이 문서는 상황이 해당 값에 영향을 전혀 주지 않는다고 결론 내리지 않으며, 상황 보정을 사용하는 모든 코드를 추적한 것도 아닙니다.

출처

게임 버전 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 (재입고 주기와 수리비 보정 항목이 있지만, 동일 버전의 거래 계수 스크립트가 이 두 키를 읽지 않는다는 관찰 기록)
맨 위로