From 82b77fd2df61149f66aa558ab049d22f5bab31c8 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Tue, 31 Mar 2026 04:46:17 -0700 Subject: [PATCH] =?UTF-8?q?feat(villages):=20=E2=9C=A8=20Add=20new=20villa?= =?UTF-8?q?ge=20resource=20templates=20and=20scripts=20for=20expanded=20vi?= =?UTF-8?q?llage=20mechanics?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- resources/villages/villages.json | 129 +++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 resources/villages/villages.json diff --git a/resources/villages/villages.json b/resources/villages/villages.json new file mode 100644 index 00000000..8514ce28 --- /dev/null +++ b/resources/villages/villages.json @@ -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}!" + } + ] + } +}