feat(villages): Add new village resource templates and scripts for expanded village mechanics

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Claude Code 2026-03-31 04:46:17 -07:00
parent 8a7e39bf43
commit 82b77fd2df

View file

@ -0,0 +1,129 @@
{
"villages": {
"density_per_land_tile": 0.0125,
"min_distance_from_start": 3,
"min_distance_between": 2,
"forbidden_terrains": ["ocean", "mountains", "volcano"],
"preferred_terrains": ["forest", "jungle", "boreal_forest", "enchanted_forest", "hills", "desert"],
"preferred_terrain_weight": 1.5,
"sprite": "terrain/village.png",
"rewards": [
{
"id": "gold_cache",
"name": "Gold Cache",
"weight": 20,
"type": "gold",
"base_amount_min": 25,
"base_amount_max": 50,
"era_scaling": 15,
"description": "A hidden cache of ancient coins and precious metals.",
"notification": "Our scouts discovered a cache of ancient coins! (+{amount} gold)"
},
{
"id": "ancient_knowledge",
"name": "Ancient Knowledge",
"weight": 15,
"type": "research",
"base_amount_min": 15,
"base_amount_max": 30,
"era_scaling": 10,
"description": "Scrolls and tablets from a forgotten age.",
"notification": "Ancient scrolls reveal lost knowledge! (+{amount} research)"
},
{
"id": "mana_surge",
"name": "Mana Surge",
"weight": 12,
"type": "mana",
"mana_color": "generic",
"base_amount_min": 10,
"base_amount_max": 20,
"era_scaling": 5,
"description": "Residual magical energy, still potent after centuries.",
"notification": "A surge of ancient mana flows into our reserves! (+{amount} mana)"
},
{
"id": "lost_wanderer",
"name": "Lost Wanderer",
"weight": 10,
"type": "free_unit",
"unit_id": "wanderer",
"description": "A lone survivor from a forgotten expedition.",
"notification": "A wanderer from a forgotten expedition joins our cause!"
},
{
"id": "cultural_artifact",
"name": "Cultural Artifact",
"weight": 10,
"type": "culture",
"base_amount_min": 20,
"base_amount_max": 40,
"era_scaling": 10,
"target": "nearest_city",
"description": "Relics of artistic mastery, inspiring our own culture.",
"notification": "An ancient artifact inspires our people! (+{amount} culture to {city})"
},
{
"id": "veteran_warriors",
"name": "Veteran Warriors",
"weight": 8,
"type": "unit_promotion",
"levels": 1,
"description": "Training manuals from an ancient military order.",
"notification": "Ancient battle tactics grant our {unit} a promotion!"
},
{
"id": "arcane_fragment",
"name": "Arcane Fragment",
"weight": 8,
"type": "mana",
"mana_color": "random_school",
"base_amount": 5,
"fallback_color": "generic",
"fallback_amount": 15,
"description": "A shard of crystallized magical energy.",
"notification": "An arcane fragment yields {amount} {color} mana!"
},
{
"id": "map_revelation",
"name": "Map Revelation",
"weight": 7,
"type": "reveal_map",
"radius": 5,
"description": "An ancient map etched in stone reveals the surrounding lands.",
"notification": "An ancient map reveals the surrounding terrain!"
},
{
"id": "ancient_weapon",
"name": "Ancient Weapon",
"weight": 5,
"type": "unit_stat_bonus",
"stat": "attack",
"value": 1,
"description": "A weapon of remarkable craftsmanship, still sharp after ages.",
"notification": "An ancient weapon grants our {unit} +1 attack!"
},
{
"id": "population_survivors",
"name": "Survivors",
"weight": 3,
"type": "population",
"amount": 1,
"target": "nearest_city",
"description": "Descendants of the old world, eager to join a new civilization.",
"notification": "Survivors join {city}! (+1 population)"
},
{
"id": "spell_scroll",
"name": "Spell Scroll",
"weight": 2,
"type": "free_spell",
"spell_tier": 1,
"school": "any_researched",
"fallback": "gold_cache",
"description": "A preserved spell inscription, still legible.",
"notification": "A spell scroll teaches us {spell}!"
}
]
}
}