mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-15 08:32:41 +00:00
D&D: give Human +1 to all stats and rebalance races to +6 net
Human was mechanically blank (all-zero mods, "not yet implemented" passive). Wire the Standard Human flavor: +1 to every ability score, no setup-wizard choice so !setup stays uniform across races. That put Human at +6 net with no downside, ahead of every other race. Retune the rest to +6 net as well, keeping their negatives intact so each stays a spiky specialist rather than a flat generalist.
This commit is contained in:
@@ -52,8 +52,8 @@ type DnDRaceInfo struct {
|
|||||||
Key DnDRace
|
Key DnDRace
|
||||||
Display string
|
Display string
|
||||||
// Stat modifiers applied at setup-confirm time. STR/DEX/CON/INT/WIS/CHA.
|
// Stat modifiers applied at setup-confirm time. STR/DEX/CON/INT/WIS/CHA.
|
||||||
// Human's "+1 to any" is not yet implemented in Phase 1 — Human gets +0
|
// Human takes the Standard Human flavor: +1 to every stat, no setup-wizard
|
||||||
// across the board and we'll add the floating bonus in a later phase.
|
// choice (keeps !setup uniform across races).
|
||||||
Mods [6]int
|
Mods [6]int
|
||||||
Passive string
|
Passive string
|
||||||
}
|
}
|
||||||
@@ -72,13 +72,13 @@ type DnDClassInfo struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var dndRaces = []DnDRaceInfo{
|
var dndRaces = []DnDRaceInfo{
|
||||||
{RaceHuman, "Human", [6]int{0, 0, 0, 0, 0, 0}, "Versatile (floating +1 bonus not yet implemented)"},
|
{RaceHuman, "Human", [6]int{1, 1, 1, 1, 1, 1}, "Versatile: +1 to every ability score"},
|
||||||
{RaceElf, "Elf", [6]int{0, 2, -1, 1, 1, 0}, "Darkvision; immune to sleep effects"},
|
{RaceElf, "Elf", [6]int{0, 3, -1, 2, 2, 0}, "Darkvision; immune to sleep effects"},
|
||||||
{RaceDwarf, "Dwarf", [6]int{1, -1, 2, 0, 1, -1}, "Poison resistance; bonus vs. underground enemies"},
|
{RaceDwarf, "Dwarf", [6]int{2, -1, 3, 1, 2, -1}, "Poison resistance; bonus vs. underground enemies"},
|
||||||
{RaceHalfling, "Halfling", [6]int{0, 2, 0, 0, 1, 0}, "Lucky: once per combat, reroll a natural 1"},
|
{RaceHalfling, "Halfling", [6]int{0, 3, 1, 0, 2, 0}, "Lucky: once per combat, reroll a natural 1"},
|
||||||
{RaceOrc, "Orc", [6]int{3, -1, 2, -1, -1, -1}, "Rage: once per combat, +50% damage for one turn"},
|
{RaceOrc, "Orc", [6]int{5, -1, 4, -1, -1, 0}, "Rage: once per combat, +50% damage for one turn"},
|
||||||
{RaceTiefling, "Tiefling", [6]int{0, 1, 0, 1, 0, 2}, "Fire resistance; bonus on CHA checks"},
|
{RaceTiefling, "Tiefling", [6]int{0, 2, 0, 2, 0, 2}, "Fire resistance; bonus on CHA checks"},
|
||||||
{RaceHalfElf, "Half-Elf", [6]int{0, 1, 0, 1, 0, 2}, "Two bonus skill proficiencies"},
|
{RaceHalfElf, "Half-Elf", [6]int{0, 2, 0, 1, 1, 2}, "Two bonus skill proficiencies"},
|
||||||
}
|
}
|
||||||
|
|
||||||
var dndClasses = []DnDClassInfo{
|
var dndClasses = []DnDClassInfo{
|
||||||
|
|||||||
@@ -106,16 +106,16 @@ func TestComputeAC(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestApplyRaceMods(t *testing.T) {
|
func TestApplyRaceMods(t *testing.T) {
|
||||||
// Elf: STR +0, DEX +2, CON -1, INT +1, WIS +1, CHA +0
|
// Elf: STR +0, DEX +3, CON -1, INT +2, WIS +2, CHA +0
|
||||||
base := [6]int{10, 10, 10, 10, 10, 10}
|
base := [6]int{10, 10, 10, 10, 10, 10}
|
||||||
got := applyRaceMods(RaceElf, base)
|
got := applyRaceMods(RaceElf, base)
|
||||||
want := [6]int{10, 12, 9, 11, 11, 10}
|
want := [6]int{10, 13, 9, 12, 12, 10}
|
||||||
if got != want {
|
if got != want {
|
||||||
t.Errorf("applyRaceMods(Elf) = %v, want %v", got, want)
|
t.Errorf("applyRaceMods(Elf) = %v, want %v", got, want)
|
||||||
}
|
}
|
||||||
// Orc: STR +3, DEX -1, CON +2, INT -1, WIS -1, CHA -1
|
// Orc: STR +5, DEX -1, CON +4, INT -1, WIS -1, CHA +0
|
||||||
got = applyRaceMods(RaceOrc, base)
|
got = applyRaceMods(RaceOrc, base)
|
||||||
want = [6]int{13, 9, 12, 9, 9, 9}
|
want = [6]int{15, 9, 14, 9, 9, 10}
|
||||||
if got != want {
|
if got != want {
|
||||||
t.Errorf("applyRaceMods(Orc) = %v, want %v", got, want)
|
t.Errorf("applyRaceMods(Orc) = %v, want %v", got, want)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user