phase 9: biome expansion — 3 biomes, 40 elements, 119 reactions, 9 species
Expand beyond vertical slice with two new biomes and massive chemistry expansion: Chemistry: +20 real elements (Li→U), +39 compounds (acids/salts/oxides/organics), +85 reactions (Haber process, thermite variants, smelting, fermentation, etc.) Biomes: Kinetic Mountains (physics/mechanics themed) and Verdant Forests (biology/ecology themed), each with 8 tile types and unique generation rules. Creatures: 6 new species — Pendulums/Mechanoids/Resonators (mountains), Symbiotes/Mimics/Spore-bearers (forests). Species filtered by biome. Infrastructure: CradleScene biome selector UI, generic world generator (tile lookup by property instead of hardcoded names), actinide element category. 487 tests passing (32 new). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -71,8 +71,8 @@ function createPlayerEntity(world: World, x: number, y: number): number {
|
||||
// ─── Species Data ────────────────────────────────────────────────
|
||||
|
||||
describe('Species Data', () => {
|
||||
it('loads 3 species from JSON', () => {
|
||||
expect(allSpecies).toHaveLength(3);
|
||||
it('loads 9 species from JSON (3 per biome)', () => {
|
||||
expect(allSpecies).toHaveLength(9);
|
||||
});
|
||||
|
||||
it('has Crystallid with correct properties', () => {
|
||||
@@ -128,7 +128,7 @@ describe('Species Registry', () => {
|
||||
});
|
||||
|
||||
it('has correct count', () => {
|
||||
expect(registry.count).toBe(3);
|
||||
expect(registry.count).toBe(9);
|
||||
});
|
||||
|
||||
it('looks up by string ID', () => {
|
||||
@@ -148,7 +148,27 @@ describe('Species Registry', () => {
|
||||
|
||||
it('returns all species', () => {
|
||||
const all = registry.getAll();
|
||||
expect(all).toHaveLength(3);
|
||||
expect(all).toHaveLength(9);
|
||||
});
|
||||
|
||||
it('can look up new Phase 9 species', () => {
|
||||
expect(registry.get('pendulum')?.biome).toBe('kinetic-mountains');
|
||||
expect(registry.get('mechanoid')?.biome).toBe('kinetic-mountains');
|
||||
expect(registry.get('resonator')?.biome).toBe('kinetic-mountains');
|
||||
expect(registry.get('symbiote')?.biome).toBe('verdant-forests');
|
||||
expect(registry.get('mimic')?.biome).toBe('verdant-forests');
|
||||
expect(registry.get('spore-bearer')?.biome).toBe('verdant-forests');
|
||||
});
|
||||
|
||||
it('each biome has exactly 3 species', () => {
|
||||
const all = registry.getAll();
|
||||
const byBiome = new Map<string, number>();
|
||||
for (const s of all) {
|
||||
byBiome.set(s.biome, (byBiome.get(s.biome) ?? 0) + 1);
|
||||
}
|
||||
expect(byBiome.get('catalytic-wastes')).toBe(3);
|
||||
expect(byBiome.get('kinetic-mountains')).toBe(3);
|
||||
expect(byBiome.get('verdant-forests')).toBe(3);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user