词缀职业限制(classspecific / class / classlevelreq)未校验 #132
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?
问题描述 (Issue B5)
src/game/affixes.ts在解析MagicPrefix.txt与MagicSuffix.txt时,已经提取了classspecific、class、classlevelreq三个字段。isAffixEligible与src/game/affix-generator.ts(rollMagicAffixes/rollRareAffixes) 中,从未校验affix.classspecific(在 1.13c 中,带有classspecific职业代码如'ama','sor','nec','pal','bar','dru','ass'的词缀,只有在目标物品属于该职业专属类型或itypes显式匹配时才允许生成;此外,当affix.class与affix.classlevelreq存在时,对该职业装备者的需求等级为classlevelreq而非通用levelreq)。解决方案
src/game/affixes.ts的AffixEligibilityOptions中新增readonly itemClass?: string | undefined(表示目标物品所属的职业代码,如'ama' | 'sor' | 'nec' | 'pal' | 'bar' | 'dru' | 'ass',通用物品为undefined或'')。isAffixEligible中增加classspecific校验:若affix.classspecific非空(例如'ama'),且调用方显式传入了options.itemClass !== undefined(包括''表示非职业专属通用物品),则必须满足options.itemClass.toLowerCase() === affix.classspecific.toLowerCase(),否则返回false(防止职业专属词缀污染通用装备或其他职业装备)。src/game/affix-generator.ts与src/game/drop-pipeline.ts中,解析目标底模在ItemTypes.txt中的所属职业itemClass并传入rollMagicAffixes/rollRareAffixes->getEligibleCandidates->isAffixEligible,同时在RolledAffix中保留class与classlevelreq元数据。Fixed in commit
308e16f(merged into main). Verified with tests/affixes.test.ts (14 passed), tests/affix-generator.test.ts (14 passed), and tests/parity-1.13c.test.ts (23 passed).