diff --git a/games/age-of-four/data/world/traits/biome_trait_weights.json b/games/age-of-four/data/world/traits/biome_trait_weights.json new file mode 100644 index 00000000..ec8e404c --- /dev/null +++ b/games/age-of-four/data/world/traits/biome_trait_weights.json @@ -0,0 +1,236 @@ +{ + "deep_ocean": { + "size": {"tiny": 10, "small": 15, "medium": 25, "large": 30, "huge": 20}, + "diet": {"producer": 15, "herbivore": 10, "omnivore": 5, "carnivore": 35, "detritivore": 10, "filter_feeder": 25}, + "habitat": {"aquatic": 100}, + "locomotion": {"swimming": 85, "sessile": 15}, + "reproduction": {"r_strategy": 45, "k_strategy": 55}, + "thermal": {"cold_blooded": 65, "warm_blooded": 35}, + "social": {"solitary": 45, "pack": 15, "herd": 5, "swarm": 25, "colony": 10} + }, + "shallow_ocean": { + "size": {"tiny": 20, "small": 30, "medium": 25, "large": 15, "huge": 10}, + "diet": {"producer": 20, "herbivore": 20, "omnivore": 10, "carnivore": 25, "detritivore": 10, "filter_feeder": 15}, + "habitat": {"aquatic": 100}, + "locomotion": {"swimming": 80, "sessile": 20}, + "reproduction": {"r_strategy": 55, "k_strategy": 45}, + "thermal": {"cold_blooded": 70, "warm_blooded": 30}, + "social": {"solitary": 30, "pack": 15, "herd": 10, "swarm": 30, "colony": 15} + }, + "coral_reef": { + "size": {"tiny": 30, "small": 35, "medium": 20, "large": 10, "huge": 5}, + "diet": {"producer": 20, "herbivore": 25, "omnivore": 15, "carnivore": 20, "detritivore": 10, "filter_feeder": 10}, + "habitat": {"aquatic": 100}, + "locomotion": {"swimming": 75, "sessile": 25}, + "reproduction": {"r_strategy": 60, "k_strategy": 40}, + "thermal": {"cold_blooded": 80, "warm_blooded": 20}, + "social": {"solitary": 25, "pack": 10, "herd": 5, "swarm": 35, "colony": 25} + }, + "estuary": { + "size": {"tiny": 25, "small": 30, "medium": 25, "large": 15, "huge": 5}, + "diet": {"producer": 15, "herbivore": 20, "omnivore": 20, "carnivore": 20, "detritivore": 15, "filter_feeder": 10}, + "habitat": {"aquatic": 40, "amphibious": 40, "terrestrial": 10, "aerial": 10}, + "locomotion": {"swimming": 45, "walking": 20, "flying": 20, "sessile": 15}, + "reproduction": {"r_strategy": 55, "k_strategy": 45}, + "thermal": {"cold_blooded": 55, "warm_blooded": 45}, + "social": {"solitary": 25, "pack": 10, "herd": 15, "swarm": 30, "colony": 20} + }, + "lake": { + "size": {"tiny": 20, "small": 35, "medium": 25, "large": 15, "huge": 5}, + "diet": {"producer": 15, "herbivore": 25, "omnivore": 15, "carnivore": 20, "detritivore": 10, "filter_feeder": 15}, + "habitat": {"aquatic": 70, "amphibious": 20, "aerial": 10}, + "locomotion": {"swimming": 65, "flying": 15, "walking": 10, "sessile": 10}, + "reproduction": {"r_strategy": 55, "k_strategy": 45}, + "thermal": {"cold_blooded": 60, "warm_blooded": 40}, + "social": {"solitary": 30, "pack": 10, "herd": 10, "swarm": 30, "colony": 20} + }, + "pond": { + "size": {"tiny": 40, "small": 35, "medium": 20, "large": 5}, + "diet": {"producer": 20, "herbivore": 25, "omnivore": 15, "carnivore": 10, "detritivore": 20, "filter_feeder": 10}, + "habitat": {"aquatic": 50, "amphibious": 35, "aerial": 15}, + "locomotion": {"swimming": 50, "flying": 20, "walking": 15, "sessile": 15}, + "reproduction": {"r_strategy": 65, "k_strategy": 35}, + "thermal": {"cold_blooded": 65, "warm_blooded": 35}, + "social": {"solitary": 25, "pack": 5, "herd": 5, "swarm": 40, "colony": 25} + }, + "river": { + "size": {"tiny": 25, "small": 35, "medium": 25, "large": 10, "huge": 5}, + "diet": {"producer": 10, "herbivore": 20, "omnivore": 20, "carnivore": 25, "detritivore": 15, "filter_feeder": 10}, + "habitat": {"aquatic": 55, "amphibious": 30, "aerial": 15}, + "locomotion": {"swimming": 60, "flying": 20, "walking": 10, "sessile": 10}, + "reproduction": {"r_strategy": 55, "k_strategy": 45}, + "thermal": {"cold_blooded": 55, "warm_blooded": 45}, + "social": {"solitary": 30, "pack": 15, "herd": 10, "swarm": 30, "colony": 15} + }, + "mangrove": { + "size": {"tiny": 25, "small": 30, "medium": 25, "large": 15, "huge": 5}, + "diet": {"producer": 15, "herbivore": 15, "omnivore": 20, "carnivore": 25, "detritivore": 15, "filter_feeder": 10}, + "habitat": {"aquatic": 25, "amphibious": 35, "terrestrial": 15, "arboreal": 15, "aerial": 10}, + "locomotion": {"swimming": 30, "walking": 25, "climbing": 20, "flying": 15, "sessile": 10}, + "reproduction": {"r_strategy": 55, "k_strategy": 45}, + "thermal": {"cold_blooded": 60, "warm_blooded": 40}, + "social": {"solitary": 30, "pack": 10, "herd": 10, "swarm": 30, "colony": 20} + }, + "tropical_rainforest": { + "size": {"tiny": 20, "small": 25, "medium": 25, "large": 20, "huge": 10}, + "diet": {"producer": 10, "herbivore": 25, "omnivore": 20, "carnivore": 25, "detritivore": 15, "filter_feeder": 5}, + "habitat": {"terrestrial": 35, "arboreal": 35, "aerial": 15, "amphibious": 10, "subterranean": 5}, + "locomotion": {"walking": 25, "climbing": 30, "flying": 20, "slithering": 10, "burrowing": 10, "sessile": 5}, + "reproduction": {"r_strategy": 45, "k_strategy": 55}, + "thermal": {"cold_blooded": 40, "warm_blooded": 60}, + "social": {"solitary": 25, "pack": 20, "herd": 20, "swarm": 20, "colony": 15} + }, + "tropical_dry_forest": { + "size": {"tiny": 20, "small": 25, "medium": 30, "large": 15, "huge": 10}, + "diet": {"producer": 10, "herbivore": 25, "omnivore": 20, "carnivore": 25, "detritivore": 15, "filter_feeder": 5}, + "habitat": {"terrestrial": 45, "arboreal": 25, "aerial": 15, "amphibious": 10, "subterranean": 5}, + "locomotion": {"walking": 35, "climbing": 20, "flying": 20, "slithering": 15, "burrowing": 5, "sessile": 5}, + "reproduction": {"r_strategy": 50, "k_strategy": 50}, + "thermal": {"cold_blooded": 45, "warm_blooded": 55}, + "social": {"solitary": 30, "pack": 20, "herd": 20, "swarm": 15, "colony": 15} + }, + "savanna": { + "size": {"tiny": 15, "small": 20, "medium": 25, "large": 25, "huge": 15}, + "diet": {"producer": 10, "herbivore": 30, "omnivore": 15, "carnivore": 25, "detritivore": 15, "filter_feeder": 5}, + "habitat": {"terrestrial": 70, "aerial": 15, "subterranean": 10, "amphibious": 5}, + "locomotion": {"walking": 50, "flying": 20, "burrowing": 15, "slithering": 10, "sessile": 5}, + "reproduction": {"r_strategy": 45, "k_strategy": 55}, + "thermal": {"cold_blooded": 30, "warm_blooded": 70}, + "social": {"solitary": 20, "pack": 25, "herd": 35, "swarm": 10, "colony": 10} + }, + "desert": { + "size": {"tiny": 30, "small": 30, "medium": 20, "large": 15, "huge": 5}, + "diet": {"producer": 10, "herbivore": 15, "omnivore": 25, "carnivore": 20, "detritivore": 25, "filter_feeder": 5}, + "habitat": {"terrestrial": 55, "subterranean": 25, "aerial": 15, "amphibious": 5}, + "locomotion": {"walking": 30, "burrowing": 25, "slithering": 20, "flying": 15, "sessile": 10}, + "reproduction": {"r_strategy": 60, "k_strategy": 40}, + "thermal": {"cold_blooded": 70, "warm_blooded": 30}, + "social": {"solitary": 40, "pack": 10, "herd": 5, "swarm": 25, "colony": 20} + }, + "temperate_forest": { + "size": {"tiny": 15, "small": 20, "medium": 30, "large": 25, "huge": 10}, + "diet": {"producer": 10, "herbivore": 30, "omnivore": 20, "carnivore": 25, "detritivore": 10, "filter_feeder": 5}, + "habitat": {"terrestrial": 45, "arboreal": 25, "aerial": 15, "subterranean": 10, "amphibious": 5}, + "locomotion": {"walking": 40, "climbing": 20, "flying": 20, "burrowing": 10, "slithering": 5, "sessile": 5}, + "reproduction": {"r_strategy": 40, "k_strategy": 60}, + "thermal": {"cold_blooded": 30, "warm_blooded": 70}, + "social": {"solitary": 25, "pack": 25, "herd": 25, "swarm": 10, "colony": 15} + }, + "temperate_grassland": { + "size": {"tiny": 15, "small": 20, "medium": 25, "large": 25, "huge": 15}, + "diet": {"producer": 10, "herbivore": 35, "omnivore": 15, "carnivore": 25, "detritivore": 10, "filter_feeder": 5}, + "habitat": {"terrestrial": 65, "aerial": 15, "subterranean": 15, "amphibious": 5}, + "locomotion": {"walking": 50, "flying": 20, "burrowing": 15, "slithering": 10, "sessile": 5}, + "reproduction": {"r_strategy": 45, "k_strategy": 55}, + "thermal": {"cold_blooded": 25, "warm_blooded": 75}, + "social": {"solitary": 20, "pack": 25, "herd": 35, "swarm": 10, "colony": 10} + }, + "chaparral": { + "size": {"tiny": 25, "small": 30, "medium": 25, "large": 15, "huge": 5}, + "diet": {"producer": 10, "herbivore": 20, "omnivore": 25, "carnivore": 20, "detritivore": 20, "filter_feeder": 5}, + "habitat": {"terrestrial": 60, "subterranean": 20, "aerial": 15, "amphibious": 5}, + "locomotion": {"walking": 35, "burrowing": 20, "slithering": 20, "flying": 15, "sessile": 10}, + "reproduction": {"r_strategy": 55, "k_strategy": 45}, + "thermal": {"cold_blooded": 55, "warm_blooded": 45}, + "social": {"solitary": 35, "pack": 15, "herd": 10, "swarm": 25, "colony": 15} + }, + "swamp": { + "size": {"tiny": 20, "small": 25, "medium": 25, "large": 20, "huge": 10}, + "diet": {"producer": 10, "herbivore": 15, "omnivore": 20, "carnivore": 25, "detritivore": 20, "filter_feeder": 10}, + "habitat": {"amphibious": 35, "terrestrial": 25, "aquatic": 20, "aerial": 15, "subterranean": 5}, + "locomotion": {"swimming": 25, "walking": 25, "flying": 20, "slithering": 15, "burrowing": 5, "sessile": 10}, + "reproduction": {"r_strategy": 55, "k_strategy": 45}, + "thermal": {"cold_blooded": 55, "warm_blooded": 45}, + "social": {"solitary": 30, "pack": 10, "herd": 10, "swarm": 30, "colony": 20} + }, + "bog": { + "size": {"tiny": 30, "small": 30, "medium": 20, "large": 15, "huge": 5}, + "diet": {"producer": 15, "herbivore": 15, "omnivore": 15, "carnivore": 15, "detritivore": 25, "filter_feeder": 15}, + "habitat": {"amphibious": 30, "terrestrial": 30, "aquatic": 15, "aerial": 20, "subterranean": 5}, + "locomotion": {"walking": 25, "swimming": 20, "flying": 25, "burrowing": 10, "sessile": 15, "slithering": 5}, + "reproduction": {"r_strategy": 55, "k_strategy": 45}, + "thermal": {"cold_blooded": 50, "warm_blooded": 50}, + "social": {"solitary": 25, "pack": 10, "herd": 10, "swarm": 35, "colony": 20} + }, + "boreal_forest": { + "size": {"tiny": 10, "small": 20, "medium": 30, "large": 25, "huge": 15}, + "diet": {"producer": 10, "herbivore": 30, "omnivore": 20, "carnivore": 25, "detritivore": 10, "filter_feeder": 5}, + "habitat": {"terrestrial": 55, "arboreal": 15, "aerial": 15, "subterranean": 10, "amphibious": 5}, + "locomotion": {"walking": 45, "climbing": 15, "flying": 20, "burrowing": 10, "slithering": 5, "sessile": 5}, + "reproduction": {"r_strategy": 35, "k_strategy": 65}, + "thermal": {"cold_blooded": 15, "warm_blooded": 85}, + "social": {"solitary": 25, "pack": 30, "herd": 25, "swarm": 5, "colony": 15} + }, + "tundra": { + "size": {"tiny": 10, "small": 15, "medium": 25, "large": 30, "huge": 20}, + "diet": {"producer": 5, "herbivore": 35, "omnivore": 15, "carnivore": 30, "detritivore": 10, "filter_feeder": 5}, + "habitat": {"terrestrial": 70, "aerial": 15, "subterranean": 10, "amphibious": 5}, + "locomotion": {"walking": 55, "flying": 20, "burrowing": 15, "slithering": 5, "sessile": 5}, + "reproduction": {"r_strategy": 35, "k_strategy": 65}, + "thermal": {"cold_blooded": 10, "warm_blooded": 90}, + "social": {"solitary": 20, "pack": 25, "herd": 40, "swarm": 5, "colony": 10} + }, + "polar_desert": { + "size": {"tiny": 15, "small": 20, "medium": 30, "large": 25, "huge": 10}, + "diet": {"producer": 10, "herbivore": 15, "omnivore": 10, "carnivore": 35, "detritivore": 15, "filter_feeder": 15}, + "habitat": {"terrestrial": 40, "aquatic": 30, "amphibious": 20, "aerial": 10}, + "locomotion": {"walking": 35, "swimming": 30, "flying": 15, "sessile": 15, "burrowing": 5}, + "reproduction": {"r_strategy": 40, "k_strategy": 60}, + "thermal": {"cold_blooded": 10, "warm_blooded": 90}, + "social": {"solitary": 35, "pack": 20, "herd": 15, "swarm": 10, "colony": 20} + }, + "montane_forest": { + "size": {"tiny": 10, "small": 20, "medium": 30, "large": 25, "huge": 15}, + "diet": {"producer": 10, "herbivore": 30, "omnivore": 20, "carnivore": 25, "detritivore": 10, "filter_feeder": 5}, + "habitat": {"terrestrial": 50, "arboreal": 20, "aerial": 15, "subterranean": 10, "amphibious": 5}, + "locomotion": {"walking": 40, "climbing": 20, "flying": 20, "burrowing": 10, "slithering": 5, "sessile": 5}, + "reproduction": {"r_strategy": 35, "k_strategy": 65}, + "thermal": {"cold_blooded": 20, "warm_blooded": 80}, + "social": {"solitary": 30, "pack": 25, "herd": 20, "swarm": 10, "colony": 15} + }, + "cloud_forest": { + "size": {"tiny": 20, "small": 25, "medium": 25, "large": 20, "huge": 10}, + "diet": {"producer": 15, "herbivore": 25, "omnivore": 20, "carnivore": 20, "detritivore": 15, "filter_feeder": 5}, + "habitat": {"arboreal": 35, "terrestrial": 30, "aerial": 20, "amphibious": 10, "subterranean": 5}, + "locomotion": {"climbing": 30, "walking": 25, "flying": 25, "slithering": 10, "burrowing": 5, "sessile": 5}, + "reproduction": {"r_strategy": 40, "k_strategy": 60}, + "thermal": {"cold_blooded": 35, "warm_blooded": 65}, + "social": {"solitary": 25, "pack": 15, "herd": 15, "swarm": 25, "colony": 20} + }, + "alpine_meadow": { + "size": {"tiny": 15, "small": 20, "medium": 30, "large": 25, "huge": 10}, + "diet": {"producer": 10, "herbivore": 35, "omnivore": 15, "carnivore": 25, "detritivore": 10, "filter_feeder": 5}, + "habitat": {"terrestrial": 65, "aerial": 20, "subterranean": 10, "amphibious": 5}, + "locomotion": {"walking": 50, "flying": 25, "burrowing": 15, "sessile": 5, "slithering": 5}, + "reproduction": {"r_strategy": 40, "k_strategy": 60}, + "thermal": {"cold_blooded": 15, "warm_blooded": 85}, + "social": {"solitary": 25, "pack": 20, "herd": 35, "swarm": 5, "colony": 15} + }, + "alpine_tundra": { + "size": {"tiny": 15, "small": 20, "medium": 30, "large": 25, "huge": 10}, + "diet": {"producer": 10, "herbivore": 30, "omnivore": 10, "carnivore": 30, "detritivore": 15, "filter_feeder": 5}, + "habitat": {"terrestrial": 70, "aerial": 20, "subterranean": 5, "amphibious": 5}, + "locomotion": {"walking": 50, "flying": 25, "burrowing": 10, "sessile": 10, "slithering": 5}, + "reproduction": {"r_strategy": 40, "k_strategy": 60}, + "thermal": {"cold_blooded": 10, "warm_blooded": 90}, + "social": {"solitary": 25, "pack": 25, "herd": 30, "swarm": 5, "colony": 15} + }, + "permanent_ice": { + "size": {"tiny": 20, "small": 25, "medium": 30, "large": 20, "huge": 5}, + "diet": {"producer": 15, "herbivore": 10, "omnivore": 10, "carnivore": 30, "detritivore": 15, "filter_feeder": 20}, + "habitat": {"aquatic": 35, "terrestrial": 30, "amphibious": 25, "aerial": 10}, + "locomotion": {"swimming": 30, "walking": 30, "flying": 15, "sessile": 20, "burrowing": 5}, + "reproduction": {"r_strategy": 45, "k_strategy": 55}, + "thermal": {"cold_blooded": 15, "warm_blooded": 85}, + "social": {"solitary": 35, "pack": 15, "herd": 10, "swarm": 15, "colony": 25} + }, + "subterranean": { + "size": {"tiny": 30, "small": 30, "medium": 25, "large": 10, "huge": 5}, + "diet": {"producer": 10, "herbivore": 10, "omnivore": 25, "carnivore": 25, "detritivore": 25, "filter_feeder": 5}, + "habitat": {"subterranean": 85, "terrestrial": 10, "amphibious": 5}, + "locomotion": {"burrowing": 40, "walking": 25, "climbing": 15, "slithering": 15, "sessile": 5}, + "reproduction": {"r_strategy": 55, "k_strategy": 45}, + "thermal": {"cold_blooded": 75, "warm_blooded": 25}, + "social": {"colony": 35, "swarm": 25, "solitary": 25, "pack": 10, "herd": 5} + } +} diff --git a/games/age-of-four/data/world/traits/flavor.json b/games/age-of-four/data/world/traits/flavor.json new file mode 100644 index 00000000..180e61af --- /dev/null +++ b/games/age-of-four/data/world/traits/flavor.json @@ -0,0 +1,74 @@ +{ + "biome_prefixes": { + "deep_ocean": ["Abyssal", "Trench", "Deep", "Ancient", "Void"], + "shallow_ocean": ["Salt", "Tide", "Shore", "Brine", "Coral"], + "coral_reef": ["Reef", "Pearl", "Bright", "Shell", "Surge"], + "estuary": ["Brackish", "Marsh", "Delta", "Silt", "Murk"], + "lake": ["Still", "Mire", "Reed", "Murk", "Silver"], + "pond": ["Stagnant", "Puddle", "Scum", "Shallow", "Murk"], + "river": ["Current", "Rapid", "Eddy", "Stone", "Rush"], + "mangrove": ["Root", "Tangle", "Brackish", "Stilted", "Brine"], + "tropical_rainforest": ["Rot", "Canopy", "Vine", "Emerald", "Fang"], + "tropical_dry_forest": ["Thorn", "Dry", "Rust", "Ochre", "Husk"], + "savanna": ["Sun", "Dust", "Plains", "Ember", "Dry"], + "desert": ["Sand", "Dune", "Sun", "Ember", "Bleach"], + "temperate_forest": ["Iron", "Moss", "Bark", "Grey", "Amber"], + "temperate_grassland": ["Pale", "Wind", "Dust", "Gold", "Steppe"], + "chaparral": ["Brush", "Dry", "Thorn", "Smoke", "Amber"], + "swamp": ["Bog", "Rot", "Murk", "Bile", "Fen"], + "bog": ["Peat", "Mist", "Sour", "Dank", "Haze"], + "boreal_forest": ["Frost", "Pine", "Snow", "Ash", "Cold"], + "tundra": ["Frost", "Winter", "Howling", "White", "Bitter"], + "polar_desert": ["Ice", "Pale", "Frozen", "Null", "Void"], + "montane_forest": ["Stone", "Ridge", "Cloud", "Iron", "Crag"], + "cloud_forest": ["Mist", "Veil", "Drip", "Shroud", "Dew"], + "alpine_meadow": ["Peak", "Wind", "Rime", "Crest", "Cold"], + "alpine_tundra": ["Shard", "Frost", "Bare", "Gale", "Scree"], + "permanent_ice": ["Glacier", "Null", "White", "Eternal", "Rime"], + "subterranean": ["Pale", "Crystal", "Cave", "Blind", "Hollow"], + "volcanic": ["Obsidian", "Cinder", "Ash", "Molten", "Slag"] + }, + "biome_motifs": { + "deep_ocean": ["bioluminescent markings", "dark scales", "pressure scars", "void-black hide"], + "shallow_ocean": ["salt-crusted scales", "coral growths", "tide markings", "pearl sheen"], + "coral_reef": ["iridescent scales", "anemone frills", "bright warning colors", "shell fragments"], + "estuary": ["mud-streaked hide", "brackish slime coat", "reed camouflage", "silted gills"], + "lake": ["reed-pattern camouflage", "silver scales", "murky green tones", "algae patches"], + "pond": ["algae-coated skin", "stagnant water film", "dull coloration", "silt deposits"], + "river": ["streamlined body", "smooth pebble markings", "current-adapted fins", "stone-grey tones"], + "mangrove": ["root-bark texture", "salt-stained hide", "tangled growths", "brackish sheen"], + "tropical_rainforest": ["rot-stained markings", "vine-wrapped limbs", "iridescent plumage", "fungal patches"], + "tropical_dry_forest": ["cracked bark hide", "ochre dust coating", "thorn protrusions", "dry leaf camouflage"], + "savanna": ["dust-caked hide", "sun-bleached mane", "ember-gold eyes", "heat-cracked plates"], + "desert": ["sand-worn carapace", "heat shimmer patterns", "bleached bone protrusions", "ember eyes"], + "temperate_forest": ["moss patches", "bark texture", "amber eyes", "iron-grey tones"], + "temperate_grassland": ["wind-swept fur", "pale hide", "golden tones", "dust markings"], + "chaparral": ["smoke-stained fur", "thorn scratches", "dry brush camouflage", "amber resin patches"], + "swamp": ["rot-stained hide", "fungal growths", "bile-green tones", "murk camouflage"], + "bog": ["peat-dark hide", "mist-damp fur", "sour-water stains", "lichen patches"], + "boreal_forest": ["frost-tipped fur", "pine-needle mane", "ash-grey hide", "snow markings"], + "tundra": ["thick white pelt", "frost crystals", "wind-scarred hide", "pale eyes"], + "polar_desert": ["ice-crusted hide", "translucent frost plates", "snow-blind pale eyes", "void-white fur"], + "montane_forest": ["stone-grey hide", "ridge-scarred flanks", "cloud-damp fur", "iron-hard hooves"], + "cloud_forest": ["mist-beaded fur", "dripping moss mantle", "veil-like frills", "dew-bright eyes"], + "alpine_meadow": ["wind-torn mane", "rime-crusted horns", "crest markings", "cold-hardened hide"], + "alpine_tundra": ["frost-sharded scales", "gale-worn hide", "bare rock camouflage", "scree-colored plates"], + "permanent_ice": ["glacier-blue veins", "frost armor plates", "snow-crystal growths", "rime-locked joints"], + "subterranean": ["translucent skin", "crystalline growths", "eyeless face", "pheromone sacs", "pale fungal patches", "cave-pearl nodules"], + "volcanic": ["obsidian plates", "ember-glow cracks", "smoke wisps", "ash-coated hide"] + }, + "subterranean_visual_modes": { + "blind": { + "motifs": ["smooth eyeless skull", "vibration-sensing barbels", "flattened sensory pits", "pale sunken sockets"], + "name_prefixes": ["Blind", "Eyeless", "Pale", "Hollow"] + }, + "echolocation": { + "motifs": ["oversized membranous ears", "wide nasal cavity", "flattened sonar face", "sound-focusing horn ridges"], + "name_prefixes": ["Shrieking", "Echo", "Wailing", "Sonic"] + }, + "bioluminescent": { + "motifs": ["glowing nodules along spine", "phosphorescent stripe patterns", "luminous eye organs", "pulsing light sacs"], + "name_prefixes": ["Glowing", "Lantern", "Luminous", "Spark"] + } + } +} diff --git a/games/age-of-four/data/world/traits/trait_constraints.json b/games/age-of-four/data/world/traits/trait_constraints.json new file mode 100644 index 00000000..1025bafb --- /dev/null +++ b/games/age-of-four/data/world/traits/trait_constraints.json @@ -0,0 +1,20 @@ +{ + "invalid_pairs": [ + {"a": "aquatic", "b": "burrowing", "reason": "Cannot burrow underwater"}, + {"a": "sessile", "b": "carnivore", "reason": "Sessile organisms cannot hunt"}, + {"a": "aerial", "b": "huge", "reason": "Too heavy for sustained flight"}, + {"a": "subterranean", "b": "aerial", "reason": "Cannot fly underground"}, + {"a": "filter_feeder", "b": "terrestrial", "reason": "Filter feeding requires water medium"}, + {"a": "sessile", "b": "walking", "reason": "Sessile cannot walk"}, + {"a": "sessile", "b": "flying", "reason": "Sessile cannot fly"}, + {"a": "sessile", "b": "swimming", "reason": "Sessile cannot swim"}, + {"a": "arboreal", "b": "aquatic", "reason": "Cannot live in trees and water simultaneously"}, + {"a": "swarm", "b": "huge", "reason": "Huge organisms cannot swarm, breaks carrying capacity"} + ], + "special_rules": [ + { + "condition": "locomotion == sessile AND social NOT IN [colony, solitary]", + "reason": "Sessile organisms form colonies or live alone, not packs/herds" + } + ] +} diff --git a/games/age-of-four/data/world/traits/trait_definitions.json b/games/age-of-four/data/world/traits/trait_definitions.json new file mode 100644 index 00000000..443a9973 --- /dev/null +++ b/games/age-of-four/data/world/traits/trait_definitions.json @@ -0,0 +1,61 @@ +{ + "categories": { + "size": { + "values": ["tiny", "small", "medium", "large", "huge"], + "description": "Body mass tier. Affects carrying capacity, predation hierarchy, quality tier." + }, + "diet": { + "values": ["producer", "herbivore", "omnivore", "carnivore", "detritivore", "filter_feeder"], + "description": "Trophic level. Determines food web position and grazing pressure." + }, + "habitat": { + "values": ["aquatic", "terrestrial", "amphibious", "aerial", "subterranean", "arboreal"], + "description": "Primary living environment. Constrains tile eligibility and migration paths." + }, + "locomotion": { + "values": ["sessile", "walking", "swimming", "flying", "burrowing", "climbing", "slithering"], + "description": "Movement mode. Affects migration range and terrain interaction." + }, + "reproduction": { + "values": ["r_strategy", "k_strategy"], + "description": "Reproductive strategy. r = many offspring, fast growth. k = few offspring, slow growth." + }, + "thermal": { + "values": ["cold_blooded", "warm_blooded"], + "description": "Thermoregulation. Affects climate tolerance and activity patterns." + }, + "social": { + "values": ["solitary", "pack", "herd", "swarm", "colony"], + "description": "Group behavior. Affects hunting efficiency, grazing pressure, migration." + } + }, + "sub_traits": { + "visual_mode": { + "description": "Sensory adaptation for subterranean species. Flavor-only, does not affect mechanics.", + "applies_to": {"habitat": ["subterranean"]}, + "values": { + "blind": { + "weight": 40, + "motifs": ["eyeless", "smooth skull plates", "vibration-sensing barbels", "pale sunken sockets"] + }, + "echolocation": { + "weight": 35, + "motifs": ["oversized ears", "wide nasal cavity", "ultrasonic clicks", "flattened face"] + }, + "bioluminescent": { + "weight": 25, + "motifs": ["glowing nodules", "phosphorescent stripes", "luminous eyes", "pulsing light organs"] + } + } + } + }, + "quality_tier_formula": { + "description": "species_quality = clamp(SIZE_QUALITY[size] + modifiers, 1, 5)", + "size_base": {"tiny": 1, "small": 2, "medium": 3, "large": 4, "huge": 5}, + "modifiers": { + "r_strategy": -1, + "detritivore": -1, + "carnivore": 1 + } + } +}