Stoneshard Wiki

商人库存与维修

商人的货架不是常驻清单:每位商人有自己的商品目录与库存规模,补货时才据此生成当批货物,而玩家打开交易窗口时才会真正看到这一批。交易面板会告诉玩家这位商人偏好哪些商品、装备层阶如何,以及还有多久补货;维修则是另一项只有部分商人提供的付费服务。本页说明库存、补货与维修本身,价格构成、声望档位、赃物规则与商队升级归各自文章。

目录

总览

商人的商品来自一份商品目录:它按类别与具体物品定义,条目可以随声望档位、已完成任务与商队升级而追加或替换。库存规模决定这一批生成多少件商品;同一座城镇里不同商人的目录与规模都不同,所以货架不会一样。

补货按时间表进行:城镇有自己的补货周期,个别商人也可以另有自己的周期,游戏按小时推进这项检查。补货的默认行为是把整批货换掉,另一种行为只下架一部分商品;维修与库存是两件事,它是交易面板上的一个按钮,只出现在提供该服务的商人身上。

买卖价格的构成与供需口径见物品价格与供需一文,比较具体金额请使用交易工具。

官方面板文字

同一版本的面板文字表给出的交易悬浮面板字段原文是:「商品种类偏好:」「装备层阶:」「补货时间:」「可以维修/修补:」「维修/修补价格:」,对应的英文原文是:"Interested in:", "Equipment Tier:", "Restocks in:", "Can Repair:", "Repairs Price:"。本页照抄这两组原文,不改写措辞。

「补货时间:」后面按天显示:面板把剩余时间换算成天数,写成「数字 + 天」,英文用官方原文「day / days」随数字变形;不足一天时显示官方原文「一天之内」,英文为「less than a day」。所以面板给出的是大致剩余时间,而不是精确的补货时刻。

维修按钮的悬浮文字同样来自这张表:按该商人能处理的材质显示「修理物品」,英文原文为「Repair items」。面板上的「可以维修/修补:」与「维修/修补价格:」两行是否带内容,取决于这位商人有没有提供维修服务。

补货周期

城镇各自维护一个城镇补货周期:每小时执行一次的时间检查会看从上次城镇补货起经过的小时数,达到该周期时城镇补货就运行,并把同聚落商人的补货标记为待处理。

已核对的例子(不是完整对照表):一般聚落 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(写有补货周期与修价修正项;同版交易参数脚本未读取这两个键,仅作观察)
回到开头