[M19] 原版商人 NPC 与交易经济系统 (1.13c Ground Truth)

实装暗黑破坏神 II:毁灭之王 v1.13c 原版城镇商人(Vendor NPC)库存生成、物品交易/收购/修理/赌博定价引擎与四分页商店 UI。

核心 Ground Truth 权威对标 (D2MOO + 官方 MPQ 数据表)

  1. 商人全局物品缓存 (SUnitProxy.cpp):
    • SUNITPROXY_InitializeNpcControl / SUNITPROXY_FillGlobalItemCache / SUNITPROXY_FillIGlobaltemCacheRecordForNpc
    • 严格映射 17 位商人 ID (nNpcId = 0..16:阿卡拉、基德、恰西、法拉、雷山德、卓格南、赫拉铁力 Hralti*、阿尔科、奥玛斯、艾尔吉斯、艾席拉、凯恩、海尔布、贾梅拉、马拉、拉苏克、安亚/尼拉塞克),分离常驻商品 pPermCache (PermStoreItem = 1) 与动态随机库存 pItemCache。
  2. 按商人 ID、游戏难度与角色等级动态生成出售物品 (SUnitNpc.cpp):
    • D2GAME_NPC_FillStoreInventory_6FCC7100 & D2GAME_NPC_GenerateStoreItem_6FCC6A60
    • 商店物品等级公式:ilvl = max(1, min(99, cLvl + 5)),普通难度受 Act 1..5 幕数上限 [12, 20, 28, 36, 45] 钳制,噩梦/地狱难度无幕数上限。
    • ilvl < 25 时滚动普通/劣质/超强底材;ilvl >= 25 时非固定库存 100% 升级为魔法品质 (ITEMQUAL_MAGIC) 且保底下限提升 (nMinItems = (rand & 1) + 2)。
    • cLvl > 25 时在噩梦/地狱难度严格执行扩展级 (UberCode) / 精华级 (UltraCode) 升级骰子以及 NightmareUpgrade / HellUpgrade 药水替换。
  3. 1.13c 交易价格与收购价格计算引擎 (Items.cpp):
    • ITEMS_CalculateTransactionCost (0x6FD9B1C0) 及辅助函数 0x6FD9AB90 / 0x6FD9ACE0 / 0x6FD9CB50。
    • 精确计算购买价 (BUY)、商人收购价 (SELL)、修理费 (REPAIR) 与赌博价 (GAMBLE):涵盖防御比例缩放、Staffmods 单技能高额加价(售价 /1024 vs 收购价 /4096)、词缀与 ItemStatCost.txt 逐点属性加价、镶嵌物半价累加、无形/职业专属收购价 /4 惩罚、Npc.txt 汇率与任务折扣、各难度最高收购上限(普通 5k/10k/15k/20k/25k、噩梦 30k、地狱 35k)及减价属性 (STAT_ITEM_REDUCEDPRICES)。
  4. 城镇 NPC 交互菜单与四分页商店 UI:
    • 原版风格 NPC 交互菜单(交谈 / 交易 / 赌博 / 修理 / 鉴定),左侧 10×10 四分页商店面板(护甲 / 武器 I / 武器 II / 杂物)与右侧玩家背包联动交易。
No due date
100% Completed