docs: correct OD spec/plan — variance orientation per UB source, SpellInfo change/bonus semantics

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-07-15 07:43:26 +02:00
parent 231e6e799f
commit 16077633c5
2 changed files with 22 additions and 11 deletions

View file

@ -106,8 +106,9 @@ func TestOD_MeleeRetailMaxIsZero(t *testing.T) {
}
}
// Melee with tighter variance (0.376 = one granite tink below 0.47):
// varianceTinks = round(log(0.47/0.376)/log(0.8), 2) = round(1.00,2)=1 → OD = 71-1-71 = -1.
// Melee with tighter variance (0.376, one granite tink BETTER than the 0.47 baseline):
// varianceTinks = round(log(0.47/0.376)/log(0.8), 2) = -1.00 → OD = 71-(-1)-71 = +1.
// (Table MaxVar is the type's baseline variance; lower variance = higher OD.)
func TestOD_MeleeOneTinkVariance(t *testing.T) {
raw := map[string]any{
"ObjectClass": 1.0,
@ -116,8 +117,8 @@ func TestOD_MeleeOneTinkVariance(t *testing.T) {
"Spells": []any{}, "ActiveSpells": []any{},
}
od, ok := computeOD(raw)
if !ok || !approx(od, -1.0) {
t.Fatalf("melee OD = %v ok=%v, want -1", od, ok)
if !ok || !approx(od, 1.0) {
t.Fatalf("melee OD = %v ok=%v, want +1", od, ok)
}
}