tune(battle-xp): raise defaults to XpPerWin=200 / XpPerLoss=50

Doubles the shipped defaults across all modes without touching per-mode
overrides. Curve interaction against classexp.csv (L1=50, L2=150):
- Win (200 XP): crosses both L1 + L2 → land at L3, Exp=0
- Loss (50 XP): exactly meets L1 → land at L2, Exp=0

Updates every affected test assertion (Practice, Rank, Free, TK2,
Colosseum, Story) for the new level/exp math.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-07-04 09:34:01 -04:00
parent 8199a95356
commit 94ed6734c7
7 changed files with 52 additions and 49 deletions

View File

@@ -248,10 +248,11 @@ public class RankBattleControllerTests
Assert.That(data.GetProperty("battle_result").GetInt32(), Is.EqualTo(1));
Assert.That(data.GetProperty("rank").GetInt32(), Is.EqualTo(0));
Assert.That(data.GetProperty("after_battle_point").GetInt32(), Is.EqualTo(0));
// BattleXpConfig.XpPerWin=100, classexp.csv L1=50 → land at L2 with 50 carry.
Assert.That(data.GetProperty("get_class_experience").GetInt32(), Is.EqualTo(100));
Assert.That(data.GetProperty("class_experience").GetInt32(), Is.EqualTo(50));
Assert.That(data.GetProperty("class_level").GetInt32(), Is.EqualTo(2));
// BattleXpConfig.XpPerWin=200; classexp.csv L1=50, L2=150 → 200 XP crosses both
// thresholds: land at L3 with 0.
Assert.That(data.GetProperty("get_class_experience").GetInt32(), Is.EqualTo(200));
Assert.That(data.GetProperty("class_experience").GetInt32(), Is.EqualTo(0));
Assert.That(data.GetProperty("class_level").GetInt32(), Is.EqualTo(3));
}
[Test]
@@ -265,10 +266,10 @@ public class RankBattleControllerTests
using var doc = JsonDocument.Parse(await resp.Content.ReadAsStringAsync());
Assert.That(doc.RootElement.GetProperty("battle_result").GetInt32(), Is.EqualTo(2));
// battle_result==2 is loss-shaped: XpPerLoss=25 (< L1 threshold=50).
Assert.That(doc.RootElement.GetProperty("get_class_experience").GetInt32(), Is.EqualTo(25));
Assert.That(doc.RootElement.GetProperty("class_experience").GetInt32(), Is.EqualTo(25));
Assert.That(doc.RootElement.GetProperty("class_level").GetInt32(), Is.EqualTo(1));
// battle_result==2 is loss-shaped: XpPerLoss=50 exactly meets L1 threshold → L2, Exp=0.
Assert.That(doc.RootElement.GetProperty("get_class_experience").GetInt32(), Is.EqualTo(50));
Assert.That(doc.RootElement.GetProperty("class_experience").GetInt32(), Is.EqualTo(0));
Assert.That(doc.RootElement.GetProperty("class_level").GetInt32(), Is.EqualTo(2));
}
[Test]
@@ -286,7 +287,7 @@ public class RankBattleControllerTests
var v = await db.Viewers.Include(x => x.Classes).ThenInclude(c => c.Class)
.FirstAsync(x => x.Id == viewerId);
var cls3 = v.Classes.Single(c => c.Class.Id == 3);
Assert.That(cls3.Level, Is.EqualTo(2));
Assert.That(cls3.Exp, Is.EqualTo(50));
Assert.That(cls3.Level, Is.EqualTo(3));
Assert.That(cls3.Exp, Is.EqualTo(0));
}
}