[装备/UI] 实现原版 1.13c 人物装备穿戴限制(等级/属性/职业校验与标红显示、单双持与野蛮人武器槽位规则) #506
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?
背景与需求描述 (Background & Requirements)
严格遵循暗黑破坏神 II v1.13c 原版机制(
D2Common.dllITEMS_CheckItemRequirements#10244 @ 0x6fd76db0、ITEMS_GetClassOfClassSpecificItem#10202 @ 0x6fd74280与武器/副手穿戴槽位互斥校验),实现完整的人物装备限制与 UI 标红反馈:1. 等级、属性与职业穿戴限制及词条标红
clickEquipSlot)穿戴或替换装备时,必须校验人物当前等级(level)、力量(str)、敏捷(dex)以及职业(classCode):< reqLevel、力量< reqStr、敏捷< reqDex,或装备限定职业reqClass !== classCode,禁止穿戴入槽。需要等级: X/Required Level: X)、需要力量(需要力量: X/Required Strength: X)、需要敏捷(需要敏捷: X/Required Dexterity: X)以及不匹配的职业限定词条(如(限野蛮人使用)/(Barbarian Only)),均显示为红色(red)。GRID_ITEM_BG_RED)。2. 单手武器/盾牌与双手武器限制(含野蛮人 1.13c 原版规则)
weapon1或weapon2已有单手武器时,另一手只能装备盾牌/副手,不可装备第二把武器)。twoHanded === true)占用双手:当已装备双手武器时,另一手不可装备盾牌或武器;若当前只在一个槽位装备了单手武器或盾牌,拿双手武器点击任一武器槽可与之交换;若主副手同时装有单手武器和盾牌,则无法直接放入双手武器(除非背包可自动收纳另一手装备或先取下一件)。bar)原版 1.13c 专属规则:Weapons.txt中的1or2handed列(18 把双手剑swor:2hs/clm/gis/bsw/flb/gsd及其扩展/精华级形态均具有2handed=1, 1or2handed=1)。weapon1+weapon2)。1or2handed双手剑作为单手武器使用(可双持两把双手剑、一把双手剑 + 一把单手武器,或一把双手剑 + 一面盾牌)。2handed=1且1or2handed=0,如双手斧、双手锤/食人魔之槌7m7、长柄武器、长矛、法杖、弓、十字弓)对野蛮人而言仍需双手持握,不可与第二把武器或盾牌同时装备。已在 commit
4e461e1中完成原版 1.13c 人物装备限制与词条标红实现并通过全部单元测试:canPlayerUseUiItem与InventoryPanel.canEquipItemInSlot中对等级 (reqLevel)、力量 (reqStr)、敏捷 (reqDex)、职业专属物品 (reqClass+ 原版 111 个职业专属底材CANONICAL_CLASS_SPECIFIC_ITEM_CODES) 进行严格校验,不满足条件禁止装备。WorldPanelsHud.drawItemTooltip中将不满足条件的等级、力量、敏捷及职业限制词条渲染为红色 ('red'),满足时渲染为白色 ('white');背包、储物箱、赫拉迪克方块中不满足穿戴条件的物品格显示暗黑原版红色底色 ('rgba(72, 18, 18, 0.50)')。bar)原版 1.13c 武器/盾牌槽位规则:Weapons.txt的2handed与1or2handed字段。bar)支持双持单手武器(1H + 1H),以及单手握持 18 种1or2handed=1双手剑(支持1H + 双手剑、双手剑 + 双手剑、双手剑 + 盾牌),严格双手武器仍需双手握持。tests/issue-506-equipment-restrictions.test.ts全部通过。