test: 测试矩阵扩至 161 项(深度审计 + 5 处缺陷修复)
新增测试矩阵(12 文件 / 161 cases): - rng 12 / data 18 / pcgen+cultivation 20 / economy 12 / combat+missions 24 - marriage+diplomacy 13 / events 12 / world+lifecycle 8(含镜像一致)/ save 4+5 / audit 8 审计带出并修复的真实缺陷: 1. Rng.pick 空数组未报错(防空白数组进而崩溃难查) 2. combatPowerOf 未应用功法悟道品阶战力加成(0.1.2 设计缺口) 3. 重伤者即使不代表伤状态仍按满速修炼(health 进修炼公式) 4. 寡妇/鳏夫无法再婚:候选列表放着人执行层却拒婚(spouseId 死旧契约) 5. isWidowed 参数契约陷阱:传 id 静默 false(升级接受 Character|Id 双签名)
This commit is contained in:
@@ -414,9 +414,10 @@ export class World {
|
||||
return true
|
||||
}
|
||||
|
||||
isWidowed(member: Character): boolean {
|
||||
if (!member.spouseId) return false
|
||||
const sp = this.state.members[member.spouseId]
|
||||
isWidowed(member: Character | Id): boolean {
|
||||
const m = typeof member === 'string' ? this.state.members[member] : member
|
||||
if (!m || !m.spouseId) return false
|
||||
const sp = this.state.members[m.spouseId]
|
||||
return !!sp && !sp.alive
|
||||
}
|
||||
|
||||
@@ -461,10 +462,18 @@ function w2age(w: World, c: Character): number {
|
||||
return w.ageOf(c)
|
||||
}
|
||||
|
||||
function widowedOf(w: World, m: Character): boolean {
|
||||
if (!m.spouseId) return false
|
||||
const sp = w.state.members[m.spouseId]
|
||||
return !!sp && !sp.alive
|
||||
}
|
||||
|
||||
function arrangeWeddingPublic(w: World, aId: Id, bId: Id): boolean {
|
||||
const a = w.memberById(aId)
|
||||
const b = w.memberById(bId)
|
||||
if (!a.alive || !b.alive || a.spouseId || b.spouseId) return false
|
||||
if (!a.alive || !b.alive) return false
|
||||
if (a.spouseId && !widowedOf(w, a)) return false
|
||||
if (b.spouseId && !widowedOf(w, b)) return false
|
||||
if (a.gender === b.gender) return false
|
||||
if (a.fatherId && a.fatherId === b.fatherId) return false
|
||||
if (a.motherId && a.motherId === b.motherId) return false
|
||||
|
||||
Reference in New Issue
Block a user