[M19-P2] 实装 1.13c 商人库存生成引擎 (按商人 ID、游戏难度与角色等级生成出售物品) #482
Labels
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: troytt/diablo2-web#482
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景与目标
严格按照
D2Game.dll反编译源码实装商人库存生成引擎 (src/game/vendor-generator.ts),根据商人 ID (nNpcId)、游戏难度 (Normal/Nightmare/Hell) 与角色等级 (cLvl) 生成四分页出售物品。1.13c Ground Truth 对标 (
SUnitProxy.cpp&SUnitNpc.cpp)SUNITPROXY_FillIGlobaltemCacheRecordForNpc):Weapons.txt\rightarrowArmor.txt\rightarrowMisc.txt顺序扫描nSpawnable != 0且(nVendorMax > 0 || nVendorMagicMax > 0)的物品。PermStoreItem != 0归入pPermCache;其余归入pItemCache。ilvl计算 (D2GAME_NPC_FillStoreInventory_6FCC7100):nItemLevel = Math.max(1, Math.min(99, nPlayerLevel + 5))。nDifficulty == 0) 按幕数nAct = 0..4强制上限npcLevels[5] = [12, 20, 28, 36, 45];噩梦与地狱难度无幕数上限。pItemCache):base.level > nItemLevel的底材。nItemLevel < 25且nMax > 0时生成普通/劣质/超强底材:nNormalItems = nMin + rand(nMax - nMin + 1)。rand(100):ilvl < 5时> 90为劣质 (ITEMQUAL_INFERIOR);5 <= ilvl < 10时> 85为超强 (ITEMQUAL_SUPERIOR);10 <= ilvl < 25时>= 75为超强;其余为普通白色 (ITEMQUAL_NORMAL)。nMagicMax > 0且bitfield1 & 1):nMinItems = (nItemLevel >= 25) ? ((rand(2)) + 2) : 1。nRange = nMinItems + nMagicMax - nMagicMin,生成ITEMQUAL_MAGIC并调用词缀生成器赋予前后缀(若词缀骰子未出词缀则自动重掷确保有效魔法词缀)与法杖/手杖/权杖 Staffmods。D2GAME_NPC_GenerateStoreItem_6FCC6A60):nPlayerLevel > 25时:rand(100000) < (nItemLevel << 6) + 4000升级为UberCode(若Uber.level <= nItemLevel),否则应用NightmareUpgrade。nRand = rand(100000),资料片< 16 * nItemLevel + 1000升级为UltraCode,否则< (nItemLevel << 7) + 5000升级为UberCode;随后应用HellUpgrade。pPermCache) 与四分页 10×10 网格排布:bPermStore = true,箭袋 (aqv/cqv) 设为满数量maxstack。StorePage(armr -> Tab 0,weap -> Tab 1溢出至Tab 2,misc -> Tab 3) 自动进行 2D 网格碰撞排布。验收标准
src/game/vendor-generator.ts。[M15-P2] 实装 1.13c 商人库存生成引擎 (按商人 ID、游戏难度与角色等级生成出售物品)to [M19-P2] 实装 1.13c 商人库存生成引擎 (按商人 ID、游戏难度与角色等级生成出售物品)Implemented and verified in commit
3b993cf(tsc --noEmit0 errors,vitest17/17 passing, headless Chrome UI verification passing).