feat: replace all hardcoded constants with config values
Replace hardcoded game constants with values from the config system: - GameSession now receives *config.Config from Lobby - TurnTimeout, MaxFloors, SkillUses, InventoryLimit use config values - combat.AttemptFlee accepts fleeChance param - combat.ResolveAttacks accepts coopBonus param - entity.NewMonster accepts scaling param - Solo HP/DEF reduction uses config SoloHPReduction - Lobby JoinRoom uses config MaxPlayers Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,11 +6,11 @@ import (
|
||||
)
|
||||
|
||||
func TestMonsterScaling(t *testing.T) {
|
||||
slime := NewMonster(MonsterSlime, 1)
|
||||
slime := NewMonster(MonsterSlime, 1, 1.15)
|
||||
if slime.HP != 20 || slime.ATK != 5 {
|
||||
t.Errorf("Slime floor 1: got HP=%d ATK=%d, want HP=20 ATK=5", slime.HP, slime.ATK)
|
||||
}
|
||||
slimeF3 := NewMonster(MonsterSlime, 3)
|
||||
slimeF3 := NewMonster(MonsterSlime, 3, 1.15)
|
||||
expectedHP := int(math.Round(20 * math.Pow(1.15, 2)))
|
||||
if slimeF3.HP != expectedHP {
|
||||
t.Errorf("Slime floor 3: got HP=%d, want %d", slimeF3.HP, expectedHP)
|
||||
@@ -18,7 +18,7 @@ func TestMonsterScaling(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestBossStats(t *testing.T) {
|
||||
boss := NewMonster(MonsterBoss5, 5)
|
||||
boss := NewMonster(MonsterBoss5, 5, 1.15)
|
||||
if boss.HP != 150 || boss.ATK != 15 || boss.DEF != 8 {
|
||||
t.Errorf("Boss5: got HP=%d ATK=%d DEF=%d, want 150/15/8", boss.HP, boss.ATK, boss.DEF)
|
||||
}
|
||||
@@ -26,12 +26,12 @@ func TestBossStats(t *testing.T) {
|
||||
|
||||
func TestMonsterDEFScaling(t *testing.T) {
|
||||
// Slime base DEF=1, minFloor=1. At floor 5, scale = 1.15^4 ≈ 1.749
|
||||
m := NewMonster(MonsterSlime, 5)
|
||||
m := NewMonster(MonsterSlime, 5, 1.15)
|
||||
if m.DEF <= 1 {
|
||||
t.Errorf("Slime DEF at floor 5 should be scaled above base 1, got %d", m.DEF)
|
||||
}
|
||||
// Boss DEF should NOT scale
|
||||
boss := NewMonster(MonsterBoss5, 5)
|
||||
boss := NewMonster(MonsterBoss5, 5, 1.15)
|
||||
if boss.DEF != 8 {
|
||||
t.Errorf("Boss5 DEF should be base 8, got %d", boss.DEF)
|
||||
}
|
||||
@@ -51,7 +51,7 @@ func TestTickTaunt(t *testing.T) {
|
||||
|
||||
func TestMonsterAtMinFloor(t *testing.T) {
|
||||
// Slime at floor 1 (minFloor=1) should have base stats
|
||||
m := NewMonster(MonsterSlime, 1)
|
||||
m := NewMonster(MonsterSlime, 1, 1.15)
|
||||
if m.HP != 20 || m.ATK != 5 || m.DEF != 1 {
|
||||
t.Errorf("Slime at min floor should be base stats, got HP=%d ATK=%d DEF=%d", m.HP, m.ATK, m.DEF)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user