From b29f08b25757cc45e09016f998fd672182782219 Mon Sep 17 00:00:00 2001 From: David Kotnik Date: Mon, 5 Jan 2026 10:23:05 +0100 Subject: [PATCH] World Expansion Plan - Towns Scout Raiders - Characters Updated - NPCs Detailed - New Systems Added --- docs/WORLD_EXPANSION_PLAN.md | 554 +++++++++++++++++++++ docs/game_design/GAME_BIBLE.md | 351 +++++++++++-- scripts/generate_world_expansion_assets.py | 422 ++++++++++++++++ 3 files changed, 1291 insertions(+), 36 deletions(-) create mode 100644 docs/WORLD_EXPANSION_PLAN.md create mode 100644 scripts/generate_world_expansion_assets.py diff --git a/docs/WORLD_EXPANSION_PLAN.md b/docs/WORLD_EXPANSION_PLAN.md new file mode 100644 index 000000000..6abf7e279 --- /dev/null +++ b/docs/WORLD_EXPANSION_PLAN.md @@ -0,0 +1,554 @@ +# 🌍 MRTVA DOLINA - World Expansion Master Plan +**Version:** 2.0 Alpha +**Date:** January 5th, 2026 +**Status:** 🚀 READY FOR IMPLEMENTATION + +--- + +## 🎯 **CORE CONCEPT:** + +**"From Ruins to Restoration"** - Igralec začne v svetu popolnih ruševin. Vsako mesto je uničeno, zombi prevladujejo, narava je divja. Tvoj cilj: **Obnoviti 27 mest** in postati **Odrešenik Doline**. + +--- + +## 🏚️ **1. SISTEM OBNOV MEST (27 Town Restoration)** + +### **Koncept:** +- **Vseh 27 mest se začne kot RUŠEVINE** +- Vsako mesto ima **2 vizualna stanja**: Ruined → Restored +- Vsako mesto zahteva **unikatne surovine** in **quest chain** za obnovo +- Ko obnoviš mesto, se **naselijo prebivalci** (ljudje ali troli) + +### **Restoration Faze:** + +#### **FAZA 1: Ruševine (Starting State)** +``` +- Porušene zgradbe +- Zombi patrole +- Divja narava (trnje, ovire) +- NI trgovcev, NI storitev +``` + +#### **FAZA 2: Delna Obnova (Mid-game)** +``` +- Delno očiščeno +- Začasno obzidje +- Prvi prebivalci se vrnejo +- Osnovna trgovina aktivna +``` + +#### **FAZA 3: Popolna Obnova (End-game)** +``` +- Popolnoma obnovljeno +- Močno obzidje +- Populacija 100% +- Vsi NPC-ji aktivni +- Unikatne nagrade odklenete +``` + +### **Restoration Requirements Example:** + +**Mesto: FROST HAVEN (Frozen Wasteland)** +```javascript +{ + name: "Frost Haven", + biome: "Frozen Wasteland", + state: "ruined", // ruined → partial → restored + + restoration: { + phase1: { + materials: { wood: 500, stone: 1000, iron: 200 }, + quest: "Clear 50 zombies from town", + reward: "Basic Trading Post unlocked" + }, + phase2: { + materials: { steel: 300, gold: 100, magic_crystal: 50 }, + quest: "Build town walls", + reward: "Frost Haven Citizens return (5 NPCs)" + }, + phase3: { + materials: { diamond: 50, legendary_ore: 10, ancient_scroll: 5 }, + quest: "Defeat Ice Tyrant Boss", + reward: "Legendary Ice Forge + Frost Queen NPC" + } + }, + + citizens: { + max: 12, + current: 0, + types: ["merchant", "blacksmith", "mage", "farmer", "guard"] + } +} +``` + +### **Gift System:** +Ko obnoviš mesto, prejmeš **City Gratitude Gift**: +- Rare blueprints +- Unique tools +- Legendary seeds +- Special NPCs (master craftsmen) +- Automation helpers (roboti, priročne ročke) + +--- + +## 🧟 **2. ZOMBI SKAVT (Loyal Companion)** + +### **Koncept:** +**Prijazni zombi**, ki si ga "udomačiš" na začetku igre. Namesto da te napade, postane tvoj **raziskovalec in vodič**. + +### **Visual Design:** +- Style 32 Dark-Chibi Noir +- **IDENTIFIKACIJA**: Modra ali rdeča rutica okoli vratu +- Red eyes WITH pupils (friendly variant) +- Backpack for carrying items +- Animations: Idle, Walking, Pointing, Digging + +### **Leveling System:** + +```javascript +{ + name: "Scout", + type: "zombie_companion", + level: 1, // max 20 + + stats: { + speed: 100, // Movement speed + vision: 150, // Detection radius + carryCapacity: 10, // Item slots + intelligence: 50 // Pathfinding quality + }, + + skills: { + shortcuts: { + level: 1, + description: "Finds shortcuts through biomes", + unlockAt: [3, 7, 12, 18] // Better paths at these levels + }, + + treasureHunter: { + level: 1, + description: "Finds rare items in biomes", + rareChance: 5, // +5% per level + }, + + dangerSense: { + level: 1, + description: "Warns about nearby threats", + range: 100 // +50 pixels per level + }, + + resourceScout: { + level: 1, + description: "Marks resource nodes on map", + types: ["ore", "plants", "chests"] + } + }, + + evolution: { + // Every 5 levels, scout gets visual upgrade + 5: "Scout gains lantern (lights dark areas)", + 10: "Scout gains armor (can fight weak zombies)", + 15: "Scout gains wings (can scout flying)", + 20: "Scout becomes LEGENDARY (glowing aura)" + } +} +``` + +### **Gameplay Integration:** +- **Command System**: Right-click to send scout exploring +- **Auto-follow**: Scout follows you and marks dangers +- **Item Retrieval**: Can send scout to fetch items +- **Map Markers**: Scout marks discoveries on map + +--- + +## ⛺ **3. NOMADSKI ROPARJI (Nomad Raiders)** + +### **Koncept:** +**Dinamična nevarnost** - roparji, ki **nimajo stalnega doma** in potujejo med biomi. Poskušajo **oropati tvojo kmetijo** ali te napadejo na poti med mesti. + +### **Raider Types:** + +#### **A) Desert Nomads** +``` +Biome: Desert Storm +Appearance: Tan robes, scimitars, camels +Threat: Medium +Loot: Spices, gold, desert seeds +``` + +#### **B) Frost Bandits** +``` +Biome: Frozen Wasteland +Appearance: Fur armor, ice weapons +Threat: High +Loot: Furs, ice crystals, frozen meat +``` + +#### **C) Jungle Marauders** +``` +Biome: Ancient Rainforest +Appearance: Tribal masks, poison darts +Threat: Very High +Loot: Rare plants, ancient artifacts +``` + +#### **D) Tech Scavengers** +``` +Biome: Neon Ruins +Appearance: Cyberpunk gear, laser weapons +Threat: Extreme +Loot: Tech parts, batteries, robots +``` + +### **Raider Behavior System:** + +```javascript +{ + type: "nomad_raiders", + + spawn: { + method: "dynamic", // Not tied to location + frequency: "4-7 days in-game", + warning: "Scout can detect 1 day in advance" + }, + + camps: { + temporary: true, + duration: "2-3 days", + location: "random biome edge", + structures: ["tents", "campfire", "loot_chests"] + }, + + raids: { + targets: ["farm", "caravan", "restored_towns"], + + farmRaid: { + trigger: "If you have 1000+ crops stored", + waves: 3, + loot_stolen: "20% of stored crops", + defense: "Build walls, hire guards, set traps" + }, + + caravanAmbush: { + trigger: "Traveling between towns with valuables", + chance: 30, // 30% per trip + combat: true, + loot_dropped: "If you win, take their supplies" + } + }, + + difficulty_scaling: { + // Raiders get stronger as you progress + early_game: "2-3 raiders, basic weapons", + mid_game: "5-8 raiders, steel weapons, traps", + late_game: "10-15 raiders, magic weapons, siege equipment" + } +} +``` + +### **Defense Systems:** +- **Farm Walls**: Build perimeter defenses +- **Guard Towers**: Hire NPC guards +- **Zombie Allies**: Tamed zombies defend your farm +- **Scout Warning**: Get advance notice of raids + +--- + +## 🏗️ **4. BIOMSKA ARHITEKTURA (27 Unique Town Styles)** + +### **Koncept:** +Vsak **biom ima unikaten stil** arhitekture. Mesta v gozdu so lesena, mesta v futurističnih biomih imajo stolpnice, puščavska mesta so iz peska. + +### **Biome Architecture Styles:** + +| Biome | Building Material | Roof Style | Color Palette | Special Feature | +|-------|------------------|------------|---------------|-----------------| +| **Temperate Forest** | Wood, stone | Thatched | Brown, green | Treehouses | +| **Frozen Wasteland** | Ice, metal | Flat | White, blue | Igloos | +| **Desert Storm** | Sandstone | Domed | Tan, gold | Wind towers | +| **Ancient Rainforest** | Bamboo, vines | Leaf | Green, brown | Canopy bridges | +| **Volcanic Ashlands** | Obsidian, lava rock | Pointed | Black, red | Lava moats | +| **Toxic Swamp** | Rotted wood | Mossy | Green, purple | Stilts | +| **Crystal Caves** | Crystal shards | Jagged | Purple, cyan | Glowing walls | +| **Neon Ruins** | Steel, glass | Flat | Neon colors | Holograms | +| **Haunted Hollow** | Bone, dark stone | Sharp | Gray, purple | Floating stones | +| **Floating Islands** | Cloud marble | Curved | White, gold | Anti-gravity | + +*(20 total biomes, each with unique style)* + +### **Building Types per Town:** + +```javascript +{ + town_buildings: [ + // CORE (Every town has these) + "town_hall", // Main building + "trading_post", // Merchant + "inn", // Rest/save point + "blacksmith", // Crafting + "general_store", // Basic items + + // BIOME-SPECIFIC (Unique to each biome) + "unique_service_1", // e.g., "Ice Forge" in Frozen biome + "unique_service_2", // e.g., "Sand Glassworks" in Desert + "special_landmark", // Visual centerpiece + + // RESTORATION ADDITIONS + "guard_tower", // Defense + "farm_school", // Teaches new crop types + "magic_laboratory", // Enchanting services + "airship_dock" // Fast travel (late game) + ] +} +``` + +--- + +## 🎨 **5. ASSET GENERATION PLAN** + +### **Total Assets Needed:** + +#### **A) TOWN BUILDINGS:** +``` +27 towns × 12 building types × 2 states (ruined/restored) = 648 buildings +PLUS variations (damaged, partial) = ~900 building sprites +``` + +#### **B) ZOMBI SKAVT:** +``` +1 base sprite × 4 directions × 3 animations = 12 sprites ++ 4 evolution forms × 12 = 48 total +``` + +#### **C) NOMAD RAIDERS:** +``` +4 raider types × 6 unit variants × 4 directions = 96 sprites ++ 4 camp structures × 2 states = 8 camp sprites +Total: ~110 raider sprites +``` + +#### **D) GIFT UI:** +``` +1 Gift Window UI +6 Gift Box variations (common → legendary) +20 Gift Icon overlays +Total: 27 UI elements +``` + +### **PHASE 1 Priority (Kickstarter Demo):** + +**Generate NOW:** +1. ✅ **3 Sample Towns** (Forest, Desert, Frozen) - Ruined + Restored + - 3 × 8 core buildings × 2 states = 48 sprites + +2. ✅ **Zombi Skavt** - Base version + - 1 × 4 directions × 2 animations = 8 sprites + +3. ✅ **1 Raider Type** - Desert Nomads + - 1 × 4 variants × 4 directions = 16 sprites + - 1 camp set = 4 sprites + +4. ✅ **Gift System UI** - Basic version + - 1 window + 3 gift boxes = 4 UI elements + +**Total Phase 1:** ~80 sprites + +--- + +## 📊 **6. GAME SYSTEMS INTEGRATION** + +### **New Systems to Code:** + +#### **A) Town Restoration System** +```javascript +// src/systems/TownRestorationSystem.js + +class TownRestorationSystem { + constructor() { + this.towns = this.loadTowns(); // 27 towns + this.currentPhase = {}; // Track each town's phase + } + + restoreTown(townId, materials) { + // Check if player has required materials + // Update town visual state + // Spawn new NPCs + // Award gifts + // Update map + } + + calculateProgress(townId) { + // Return 0-100% restoration progress + } + + getTownGift(townId, phase) { + // Return unique reward for this town/phase + } +} +``` + +#### **B) Zombie Scout System** +```javascript +// src/systems/ZombieScoutSystem.js + +class ZombieScoutSystem { + constructor() { + this.scout = { + level: 1, + experience: 0, + skills: {}, + position: { x: 0, y: 0 } + }; + } + + commandScout(target) { + // Send scout to explore area + // Pathfinding with shortcut detection + } + + levelUp() { + // Increase stats + // Unlock new abilities + // Visual evolution + } + + detectDanger() { + // Scan area for threats + // Warn player + } +} +``` + +#### **C) Nomad Raider System** +```javascript +// src/systems/NomadRaiderSystem.js + +class NomadRaiderSystem { + constructor() { + this.activeRaiders = []; + this.camps = []; + this.nextRaidTime = this.calculateNextRaid(); + } + + spawnRaiders(biome) { + // Create raider group + // Set patrol path + // Establish temporary camp + } + + checkRaidConditions() { + // Farm wealth threshold + // Player location (caravan) + // Time since last raid + } + + executeRaid(target) { + // Launch attack + // Combat logic + // Loot calculation + } +} +``` + +--- + +## 🗺️ **7. WORLD MAP UPDATES** + +### **Map Markers:** + +```javascript +{ + markers: { + // TOWNS (27) + town_ruined: "🏚️ Gray icon, no name", + town_partial: "🏘️ Yellow icon, name visible", + town_restored: "🏰 Green icon, full info", + + // RAIDERS + raider_camp: "⛺ Red icon, temporary", + raider_patrol: "🔴 Moving red dot", + + // SCOUT DISCOVERIES + shortcut: "➡️ Blue path", + treasure: "💎 Yellow star", + danger: "⚠️ Orange warning", + resource: "📦 Green box" + } +} +``` + +--- + +## 📝 **8. IMPLEMENTATION CHECKLIST** + +### **CODE:** +- [ ] Create `TownRestorationSystem.js` +- [ ] Create `ZombieScoutSystem.js` +- [ ] Create `NomadRaiderSystem.js` +- [ ] Create `GiftRewardSystem.js` +- [ ] Update `GameScene.js` - integrate new systems +- [ ] Update `MapScene.js` - new markers +- [ ] Create `TownUI.js` - restoration interface +- [ ] Create `ScoutUI.js` - command interface + +### **ASSETS:** +- [ ] Generate 48 town building sprites (3 towns × 8 buildings × 2 states) +- [ ] Generate 8 Zombi Skavt sprites (base form) +- [ ] Generate 20 Raider sprites (1 type) +- [ ] Generate 4 camp structure sprites +- [ ] Generate 4 Gift UI elements +- [ ] Organize into folders: + ``` + assets/slike 🟢/ + ├── towns/ + │ ├── forest/ + │ ├── desert/ + │ └── frozen/ + ├── companions/ + │ └── zombie_scout/ + ├── raiders/ + │ └── desert_nomads/ + └── ui/ + └── gifts/ + ``` + +### **DATA:** +- [ ] Create `town_registry.json` - All 27 towns +- [ ] Create `raider_types.json` - All raider variants +- [ ] Create `gift_catalog.json` - All possible rewards +- [ ] Create `scout_skills.json` - Skill tree data + +### **DOCUMENTATION:** +- [ ] Update Game Bible with new systems +- [ ] Create Town Restoration Guide +- [ ] Create Scout Training Manual +- [ ] Create Raider Defense Tactics Guide + +--- + +## 🎯 **SUCCESS CRITERIA:** + +**Kickstarter Demo Ready When:** +1. ✅ 3 towns show clear Ruined → Restored transformation +2. ✅ Zombi Skavt is playable and useful +3. ✅ 1 raider encounter is scripted and functional +4. ✅ Gift system awards players for restoration +5. ✅ All new assets visible in asset browser +6. ✅ Deep code scan shows 0 errors + +--- + +## 🚀 **TIMELINE:** + +**Phase 1 (Today):** Generate assets + code foundations (6 hours) +**Phase 2 (Tomorrow):** Integration + testing (4 hours) +**Phase 3 (Day 3):** Polish + demo recording (2 hours) + +**TOTAL:** 12 hours to Kickstarter-ready expansion + +--- + +**Status:** 🟢 **READY TO START GENERATION** + +**Next Command:** Generate Phase 1 assets (80 sprites) diff --git a/docs/game_design/GAME_BIBLE.md b/docs/game_design/GAME_BIBLE.md index 01e241448..cd196a32e 100644 --- a/docs/game_design/GAME_BIBLE.md +++ b/docs/game_design/GAME_BIBLE.md @@ -99,14 +99,20 @@ **Age:** 17 **Role:** Protagonist, Alpha Hybrid, Farmer **Appearance:** -- Dark forest green thick natural dreadlocks -- Stretched ear gauges with piercings -- Facial piercings (nose, lip) -- Weathered blue jacket over beige shirt -- Ripped blue jeans with torn knees -- Dark brown combat boots +- **Pink and green dreadlocks** (signature look) +- **Stretched ear gauges** with multiple piercings +- Facial piercings (nose, lip, eyebrow) +- **Katana** strapped to back (main weapon) +- Post-apocalyptic clothing (torn jacket, ripped jeans) +- Dark combat boots - Brown survival backpack -- Athletic build +- Athletic, wiry build + +**Visual Reference:** `/references/kai/` +- Style 32 Dark-Chibi Noir +- Red eyes with dark pupils (human, NOT zombie) +- Determined expression +- Survivor aesthetic **Personality:** - Determined, protective of Ana @@ -134,11 +140,19 @@ **Age:** 17 (Kai's twin) **Role:** Quest target, cure key **Appearance:** -- PINK dreadlocks (contrast to Kai's green) +- **Light blonde hair** (short, practical cut) +- **Blue eyes WITH pupils** (friendly NPC style) +- Style 32 Dark-Chibi Noir aesthetic +- Determined, survival-ready look - Adventure vest with pockets -- Map and research backpack +- Research backpack with supplies - Energetic, bright personality +**Visual Reference:** `/references/ana/` +- Style 32 Dark-Chibi Noir +- Strong, capable expression +- Scientist/survivor hybrid look + **Status:** Missing (alive, held by Viktor Krnić) **Importance:** @@ -155,15 +169,22 @@ --- ### **3. Gronk** (Companion) -**Role:** Tamed Troll, Comic Relief, Heavy Muscle +**Role:** Kaijev prijatelj, Tamed Troll, Comic Relief **Appearance:** - MASSIVE green troll (3m tall) -- Thick BRIGHT PINK dreadlocks (matches Ana's!) -- Pink ear gauges + nose ring piercings +- **Pink dreadlocks** (signature style) +- **Stretched ear gauges** with piercings +- Nose ring and facial piercings +- **Vape** always in hand (essential accessory) - Black t-shirt: "TROLL SABBATH" (purple text) - Torn baggy black skater pants - Pink sneakers -- Colorful vape (pink smoke) +- Colorful vape clouds (pink smoke) + +**Visual Reference:** `/references/gronk/` +- Style 32 Dark-Chibi Noir +- Friendly giant aesthetic +- Stoner/skater culture vibe **Personality:** - Gentle giant despite size @@ -210,38 +231,144 @@ ## 🏘️ NPCs & FACTIONS (180+ Characters) -### **Key NPCs (Demo - 4):** +### **Town NPCs (Core Services):** -**1. Trader NPC** -- Merchant with goods -- First NPC you meet -- Buys wheat, sells seeds/tools -- Clearly visible eyes, friendly smile +**1. Ivan Kovač** (Blacksmith) ⚒️ +- **Appearance:** Močan lik (strong build), protective goggles, blacksmith apron +- **Role:** Tool repair & enchanting services +- **Services:** + - Repairs all 63 tool types (10g per durability point) + - Enchanting Table access (Magic Enchanting System) + - Sells repair kits and upgrade materials +- **Location:** Blacksmith building in every restored town +- **Personality:** Serious craftsman, respects quality work +- **Visual Reference:** `/references/npcs/ivan_kovac/` + - Style 32 Dark-Chibi Noir + - Red eyes with dark pupils (friendly NPC) + - Muscular, soot-covered from forge work -**2. Blacksmith NPC** -- Muscular man with apron -- Hammer and anvil -- Upgrades tools and weapons -- Serious but fair expression +**2. Mayor/Župan** (Town Administrator) 🏛️ +- **Appearance:** Serious lik, long green coat, official sash, old tablet computer +- **Role:** Town restoration permits & quests +- **Services:** + - Issues permits to restore 27 towns + - Tracks restoration progress + - Rewards City Gratitude Gifts + - Assigns town defense quests +- **Location:** Town Hall (once restored) +- **Personality:** Bureaucratic but fair, wants to rebuild civilization +- **Visual Reference:** `/references/npcs/mayor/` + - Style 32 Dark-Chibi Noir + - Red eyes with dark pupils (friendly NPC) + - Official, authoritative look -**3. Healer/Doctor NPC** -- Medical bag and robes -- Sells potions and remedies -- Kind, concerned facial expression -- May have Ana clues +**3. Miro Pravnik** (Lawyer/Odvetnik) ⚖️ +- **Appearance:** Starejši moški (older man), wrinkled brown office suit, rusty briefcase +- **Role:** Legal services & divorce proceedings +- **Services:** + - Handles legal matters in Mrtva Dolina + - Divorce paperwork (NPC relationship system) + - Property rights & land ownership + - Witness for important contracts +- **Location:** Law Office in major towns +- **Personality:** Tired, seen too much, darkly humorous +- **Visual Reference:** `/references/npcs/miro_pravnik/` + - Style 32 Dark-Chibi Noir + - Red eyes with dark pupils (friendly NPC) + - Worn, weathered professional -**4. Mysterious Traveler NPC** -- Cloaked figure -- Gives first Ana clue -- Mysterious, knowing expression -- Appears at key story moments +**4. Arborist/Gozdar** (Tree Planter) 🌲 +- **Appearance:** Work clothes, gardening gloves, seed bags +- **Role:** Automated tree planting service +- **Services:** + - Automatically plants trees on your farm + - Sells rare tree saplings + - Forest management advice + - Biome-specific tree species +- **Location:** Farm School building +- **Personality:** Nature-loving, calm, patient +- **Visual Reference:** `/references/npcs/arborist/` + - Style 32 Dark-Chibi Noir + - Red eyes with dark pupils (friendly NPC) + - Green-themed clothing, dirt-stained + +--- + +### **Companions & Special NPCs:** + +**5. Zombi Skavt** (Zombie Scout) 🧟‍♂️ +- **Appearance:** Friendly zombie with red/blue bandana, small backpack +- **Role:** Explorer companion, pathfinder +- **Special:** Levels 1-20, evolves visually at 5/10/15/20 +- **Features:** + - Finds shortcuts through biomes + - Discovers rare items (Treasure Hunter skill) + - Warns of dangers (Danger Sense) + - Marks resources on map +- **Visual Reference:** `/references/companions/zombie_scout/` + - Style 32 Dark-Chibi Noir + - **Red eyes WITH dark pupils** (friendly variant) + - Bandana identifier (blue or red) + - Chibi proportions, friendly pose + +--- + +### **Enemies & Raiders:** + +**6. Nomadski Roparji** (Nomad Raiders) ⛺ +- **Types:** Desert Nomads, Frost Bandits, Jungle Marauders, Tech Scavengers +- **Appearance:** Improvised scrap armor, post-apocalyptic gear +- **Role:** Dynamic threat, farm raiders +- **Behavior:** + - Travel between biomes (no permanent home) + - Raid farms when you have 1000+ crops + - Ambush caravans (30% chance) + - Establish temporary camps (2-3 days) +- **Visual Reference:** `/references/enemies/nomad_raiders/` + - Style 32 Dark-Chibi Noir + - Each raider type has biome-specific gear + - Hostile appearance, weapons drawn + +**7. Troli** (Trolls) 🏰 +- **Types:** Friendly (like Gronk), Wild, Troll King (boss) +- **Appearance:** Robustni prebivalci (robust builds), various colors +- **Role:** Town inhabitants (after restoration) +- **Features:** + - Move into restored towns + - Provide unique services + - Stronger than humans, good defenders + - Some tameable as companions +- **Visual Reference:** `/references/species/trolls/` + - Style 32 Dark-Chibi Noir + - Massive builds (2-3m tall) + - Various skin tones (green, gray, blue) + +--- + +### **NPC Visual Style Rules:** + +**ALL friendly NPCs follow these rules:** +- ✅ **Red eyes WITH dark pupils** (friendly identifier) +- ✅ Style 32 Dark-Chibi Noir aesthetic +- ✅ Thick black outlines (4-5px) +- ✅ Chibi proportions +- ✅ Clear, expressive faces +- ✅ Unique identifying features (clothing, accessories) + +**Zombies:** +- ⚪ Weak/Tamed: **White eyes, NO pupils** +- 🔴 Strong/Wild: **Red eyes, NO pupils** +- 🧡 Scout: **Red eyes WITH pupils** (special friendly variant) + +--- ### **NPC Factions:** - **Scavengers:** Neutral survivors -- **Raiders:** Hostile bandits +- **Raiders:** Hostile bandits (Nomads) - **Cultists:** Zombie worshippers - **Field Medics:** Helpers - **Scientists:** Pre-outbreak survivors +- **Town Citizens:** Restored town inhabitants ### **Total NPCs:** 180 across 27 towns - Each with unique dialogue @@ -557,7 +684,159 @@ --- -### **9. SURVIVAL MECHANICS** +### **9. TOWN RESTORATION SYSTEM** ✨ NEW + +**Concept:** All 27 towns start as RUINED. Restore them to unlock NPCs, services, and unique rewards. + +**Restoration Phases:** +1. **Ruined** (Starting State) + - Destroyed buildings + - No NPCs + - Zombie patrols + - No services available + +2. **Partially Restored** (Mid-game) + - Some buildings repaired + - Basic trading post + - 1-2 NPCs return + - Temporary defenses + +3. **Fully Restored** (End-game) + - All buildings restored + - Full population (8-12 NPCs) + - All services active + - Strong defenses + - Unique legendary rewards + +**Restoration Requirements:** +Each town requires specific resources + quest completion: +- **Materials**: Wood, Stone, Iron, Steel, Gold +- **Quest**: Clear zombies, defeat boss, find artifact +- **Reward**: City Gratitude Gift (blueprints, tools, NPCs) + +**Gift System:** +- **Common**: Basic resources, seeds +- **Rare**: Special blueprints, automation tools +- **Legendary**: Unique NPCs (Master Blacksmith), Ultimate tools + +**Biome-Specific Architecture:** +Each biome has unique building styles: +- **Forest**: Wooden cabins, treehouses +- **Desert**: Sandstone domes, wind towers +- **Frozen**: Ice igloos, metal structures +- **Volcanic**: Obsidian buildings, lava moats +- **Neon Ruins**: Steel/glass skyscrapers, holograms +- *(20 unique biome styles total)* + +--- + +### **10. ZOMBIE SCOUT COMPANION** ✨ NEW + +**Concept:** A friendly zombie you "tame" early-game who becomes your loyal explorer and guide. + +**Visual Design:** +- Blue or red bandana around neck (friendly identifier) +- Red eyes WITH dark pupils (friendly NPC variant) +- Backpack for carrying items +- Style 32 Dark-Chibi Noir + +**Leveling System:** +- **Max Level**: 20 +- **Experience**: Gained from exploring, finding items +- **Stats**: Speed, Vision, Carry Capacity, Intelligence + +**Skills (4 Trees):** + +1. **Shortcuts** (Pathfinding) + - Finds hidden paths through biomes + - Unlocks at levels: 3, 7, 12, 18 + +2. **Treasure Hunter** (Item Finding) + - +5% rare item drop chance per level + - Marks hidden chests on map + +3. **Danger Sense** (Warning System) + - Warns about nearby enemies + - Range: 100px + 50px per level + +4. **Resource Scout** (Map Marking) + - Marks ore deposits, rare plants, chests + - Auto-highlights on minimap + +**Evolution Phases:** +- **Level 5**: Gains lantern (lights dark areas) +- **Level 10**: Gains armor (can fight weak zombies) +- **Level 15**: Gains wings (can scout from above) +- **Level 20**: LEGENDARY form (glowing purple aura) + +**Commands:** +- **Follow**: Scout follows player automatically +- **Explore**: Send scout to investigate area +- **Fetch**: Retrieve items from distance +- **Guard**: Protect farm while away + +--- + +### **11. NOMAD RAIDERS** ✨ NEW + +**Concept:** Wandering bandits with NO permanent home. Dynamic threat that raids farms and ambushes caravans. + +**Raider Types:** + +1. **Desert Nomads** (Medium Threat) + - Tan robes, scimitars, camels + - Biome: Desert Storm + - Loot: Spices, gold, rare seeds + +2. **Frost Bandits** (High Threat) + - Fur armor, ice weapons + - Biome: Frozen Wasteland + - Loot: Furs, ice crystals + +3. **Jungle Marauders** (Very High) + - Tribal masks, poison darts + - Biome: Ancient Rainforest + - Loot: Rare plants, artifacts + +4. **Tech Scavengers** (Extreme) + - Cyberpunk gear, laser weapons + - Biome: Neon Ruins + - Loot: Tech parts, batteries + +**Raider Behavior:** +- **Spawn**: Every 4-7 in-game days +- **Warning**: Scout can detect 1 day in advance +- **Camps**: Temporary (2-3 days), random locations +- **Targets**: Player farm, caravans, restored towns + +**Raid Types:** + +1. **Farm Raid** + - Trigger: You have 1000+ crops stored + - Waves: 3 attack waves + - Damage: Steal 20% of stored crops + - Defense: Build walls, hire guards, set traps + +2. **Caravan Ambush** + - Trigger: Traveling with valuables + - Chance: 30% per trip + - Combat: Required + - Reward: If you win, take their supplies + +**Difficulty Scaling:** +- **Early-game**: 2-3 raiders, basic weapons +- **Mid-game**: 5-8 raiders, steel weapons, traps +- **Late-game**: 10-15 raiders, magic weapons, siege equipment + +**Defense Systems:** +- Build farm perimeter walls +- Hire NPC guards for defense +- Train zombies to protect farm +- Scout provides advance warning + +--- + +### **12. SURVIVAL MECHANICS** **Needs:** - **Health** - Combat damage diff --git a/scripts/generate_world_expansion_assets.py b/scripts/generate_world_expansion_assets.py new file mode 100644 index 000000000..fc0a47fbd --- /dev/null +++ b/scripts/generate_world_expansion_assets.py @@ -0,0 +1,422 @@ +#!/usr/bin/env python3 +""" +WORLD EXPANSION ASSET GENERATOR +Generates Phase 1 assets for Town Restoration, Zombie Scout, and Nomad Raiders systems. + +Total Phase 1 Assets: ~80 sprites +- 48 Town buildings (3 towns × 8 buildings × 2 states) +- 8 Zombie Scout sprites (base form) +- 20 Raider sprites (Desert Nomads) +- 4 Camp structures +""" + +# PHASE 1: SAMPLE TOWNS (3 biomes) +TOWN_BUILDINGS = { + "forest_town": { + "biome": "Temperate Forest", + "style": "Wooden cabins, thatched roofs, brown/green palette", + "buildings": [ + { + "name": "town_hall", + "size": "64x64", + "states": ["ruined", "restored"], + "description": "Main building, two-story wooden structure" + }, + { + "name": "trading_post", + "size": "48x48", + "states": ["ruined", "restored"], + "description": "Merchant shop with counter and shelves" + }, + { + "name": "inn", + "size": "64x48", + "states": ["ruined", "restored"], + "description": "Small hotel, beds visible through windows" + }, + { + "name": "blacksmith", + "size": "48x48", + "states": ["ruined", "restored"], + "description": "Forge with chimney, anvil outside" + }, + { + "name": "general_store", + "size": "48x48", + "states": ["ruined", "restored"], + "description": "Shop with barrels and crates" + }, + { + "name": "guard_tower", + "size": "32x64", + "states": ["ruined", "restored"], + "description": "Tall wooden watchtower" + }, + { + "name": "farm_school", + "size": "64x48", + "states": ["ruined", "restored"], + "description": "Greenhouse-like structure, crop displays" + }, + { + "name": "town_gate", + "size": "64x48", + "states": ["ruined", "restored"], + "description": "Main entrance with wooden arch" + } + ] + }, + + "desert_town": { + "biome": "Desert Storm", + "style": "Sandstone domes, flat roofs, tan/gold palette", + "buildings": [ + { + "name": "town_hall", + "size": "64x64", + "states": ["ruined", "restored"], + "description": "Domed sandstone palace, market stalls" + }, + { + "name": "trading_post", + "size": "48x48", + "states": ["ruined", "restored"], + "description": "Bazaar with canopy, spice barrels" + }, + { + "name": "inn", + "size": "64x48", + "states": ["ruined", "restored"], + "description": "Caravanserai, courtyard visible" + }, + { + "name": "blacksmith", + "size": "48x48", + "states": ["ruined", "restored"], + "description": "Stone forge, bellows, scimitar display" + }, + { + "name": "general_store", + "size": "48x48", + "states": ["ruined", "restored"], + "description": "Market stall with pottery and cloth" + }, + { + "name": "guard_tower", + "size": "32x64", + "states": ["ruined", "restored"], + "description": "Minaret-style watchtower" + }, + { + "name": "farm_school", + "size": "64x48", + "states": ["ruined", "restored"], + "description": "Oasis garden, palm trees" + }, + { + "name": "town_gate", + "size": "64x48", + "states": ["ruined", "restored"], + "description": "Arched sandstone gate with carvings" + } + ] + }, + + "frozen_town": { + "biome": "Frozen Wasteland", + "style": "Ice/metal buildings, flat roofs, white/blue palette", + "buildings": [ + { + "name": "town_hall", + "size": "64x64", + "states": ["ruined", "restored"], + "description": "Ice palace, metal reinforcements, icicles" + }, + { + "name": "trading_post", + "size": "48x48", + "states": ["ruined", "restored"], + "description": "Igloo shop, fur pelts visible" + }, + { + "name": "inn", + "size": "64x48", + "states": ["ruined", "restored"], + "description": "Warm lodge, smoke from chimney" + }, + { + "name": "blacksmith", + "size": "48x48", + "states": ["ruined", "restored"], + "description": "Ice forge, blue flame, frost weapons" + }, + { + "name": "general_store", + "size": "48x48", + "states": ["ruined", "restored"], + "description": "Supply depot, crates and barrels" + }, + { + "name": "guard_tower", + "size": "32x64", + "states": ["ruined", "restored"], + "description": "Metal tower, frozen flag on top" + }, + { + "name": "farm_school", + "size": "64x48", + "states": ["ruined", "restored"], + "description": "Heated greenhouse, frost-resistant crops" + }, + { + "name": "town_gate", + "size": "64x48", + "states": ["ruined", "restored"], + "description": "Ice arch gate with metal spikes" + } + ] + } +} + +# ZOMBIE SCOUT SPRITES +ZOMBIE_SCOUT = { + "base_form": [ + { + "name": "scout_idle_down", + "size": "32x32", + "description": "Zombie scout idle facing down, blue bandana, backpack, red eyes with pupils, friendly pose" + }, + { + "name": "scout_idle_up", + "size": "32x32", + "description": "Zombie scout idle facing up, blue bandana visible, backpack, friendly pose" + }, + { + "name": "scout_idle_left", + "size": "32x32", + "description": "Zombie scout idle facing left, blue bandana, side view, backpack visible" + }, + { + "name": "scout_idle_right", + "size": "32x32", + "description": "Zombie scout idle facing right, blue bandana, side view, backpack visible" + }, + { + "name": "scout_walking_down", + "size": "32x32", + "description": "Zombie scout walking down, one leg forward, blue bandana" + }, + { + "name": "scout_walking_up", + "size": "32x32", + "description": "Zombie scout walking up, one leg forward, backpack bouncing" + }, + { + "name": "scout_pointing", + "size": "32x32", + "description": "Zombie scout pointing at discovery, excited pose, blue bandana" + }, + { + "name": "scout_digging", + "size": "32x32", + "description": "Zombie scout digging ground, bent over, finding item, backpack" + } + ] +} + +# NOMAD RAIDERS - DESERT NOMADS +DESERT_RAIDERS = { + "units": [ + { + "name": "nomad_warrior_idle", + "size": "32x32", + "description": "Desert nomad warrior idle, tan robes, scimitar, turban, Style 32" + }, + { + "name": "nomad_warrior_attack", + "size": "32x32", + "description": "Desert nomad warrior attacking, scimitar raised, aggressive" + }, + { + "name": "nomad_archer_idle", + "size": "32x32", + "description": "Desert nomad archer idle, bow, quiver, tan clothing" + }, + { + "name": "nomad_archer_shoot", + "size": "32x32", + "description": "Desert nomad archer shooting arrow, bow drawn" + }, + { + "name": "nomad_scout_idle", + "size": "32x32", + "description": "Desert nomad scout, lighter armor, dagger, lookout pose" + }, + { + "name": "nomad_scout_run", + "size": "32x32", + "description": "Desert nomad scout running, fast movement" + }, + { + "name": "nomad_brute_idle", + "size": "32x32", + "description": "Desert nomad brute, heavy armor, large axe, intimidating" + }, + { + "name": "nomad_brute_smash", + "size": "32x32", + "description": "Desert nomad brute smashing with axe, powerful attack" + }, + { + "name": "nomad_leader_idle", + "size": "32x32", + "description": "Desert nomad leader, ornate robes, golden scimitar, commander" + }, + { + "name": "nomad_leader_command", + "size": "32x32", + "description": "Desert nomad leader giving orders, raised hand" + } + ], + + "camps": [ + { + "name": "nomad_tent_large", + "size": "48x48", + "description": "Large desert tent, tan fabric, ropes, entrance visible" + }, + { + "name": "nomad_tent_small", + "size": "32x32", + "description": "Small desert tent, simple structure, bedroll inside" + }, + { + "name": "nomad_campfire", + "size": "32x32", + "description": "Desert campfire, burning logs, cooking pot, sand circle" + }, + { + "name": "nomad_loot_chest", + "size": "32x32", + "description": "Raider loot chest, locked box, gold trim, treasures" + } + ] +} + +# GENERATION MANIFEST +def generate_manifest(): + """Generate complete asset manifest for Phase 1.""" + + manifest = { + "phase": 1, + "total_assets": 0, + "categories": {} + } + + # Count town buildings + town_count = 0 + for town_key, town_data in TOWN_BUILDINGS.items(): + for building in town_data["buildings"]: + town_count += len(building["states"]) # ruined + restored + manifest["categories"]["towns"] = town_count + + # Count scout sprites + manifest["categories"]["zombie_scout"] = len(ZOMBIE_SCOUT["base_form"]) + + # Count raider sprites + raider_count = len(DESERT_RAIDERS["units"]) + len(DESERT_RAIDERS["camps"]) + manifest["categories"]["nomad_raiders"] = raider_count + + # Total + manifest["total_assets"] = sum(manifest["categories"].values()) + + return manifest + +# PROMPT GENERATOR +def generate_prompts(): + """Generate all Style 32 prompts for asset generation.""" + + prompts = [] + + # TOWN BUILDINGS + for town_key, town_data in TOWN_BUILDINGS.items(): + biome = town_data["biome"] + style = town_data["style"] + + for building in town_data["buildings"]: + for state in building["states"]: + prompt = { + "category": "town_building", + "town": town_key, + "building": building["name"], + "state": state, + "size": building["size"], + "prompt": f"{state.capitalize()} {building['name']} in {biome} biome, {style}, {building['description']}, " + f"{'collapsed walls broken windows debris' if state == 'ruined' else 'restored clean functional'}, " + f"Style 32 Dark-Chibi Noir, thick black outlines, top-down view, {building['size']}px, green background" + } + prompts.append(prompt) + + # ZOMBIE SCOUT + for sprite in ZOMBIE_SCOUT["base_form"]: + prompt = { + "category": "zombie_scout", + "name": sprite["name"], + "size": sprite["size"], + "prompt": f"{sprite['description']}, Style 32 Dark-Chibi Noir, thick black outlines, chibi proportions, " + f"{sprite['size']}px, green background" + } + prompts.append(prompt) + + # NOMAD RAIDERS + for unit in DESERT_RAIDERS["units"]: + prompt = { + "category": "nomad_raider", + "type": "unit", + "name": unit["name"], + "size": unit["size"], + "prompt": f"{unit['description']}, thick black outlines, chibi proportions, {unit['size']}px, green background" + } + prompts.append(prompt) + + for camp in DESERT_RAIDERS["camps"]: + prompt = { + "category": "nomad_raider", + "type": "camp", + "name": camp["name"], + "size": camp["size"], + "prompt": f"{camp['description']}, Style 32 Dark-Chibi Noir, thick black outlines, top-down view, " + f"{camp['size']}px, green background" + } + prompts.append(prompt) + + return prompts + +if __name__ == "__main__": + import json + + # Generate manifest + manifest = generate_manifest() + print("=" * 60) + print("WORLD EXPANSION - PHASE 1 MANIFEST") + print("=" * 60) + print(f"\nTotal Assets: {manifest['total_assets']}") + print(f"\nBreakdown:") + for category, count in manifest["categories"].items(): + print(f" - {category}: {count} sprites") + + # Generate prompts + prompts = generate_prompts() + + # Save to JSON + output = { + "manifest": manifest, + "prompts": prompts + } + + with open("world_expansion_phase1.json", "w", encoding="utf-8") as f: + json.dump(output, f, indent=2, ensure_ascii=False) + + print(f"\n✅ Generated {len(prompts)} prompts") + print(f"📝 Saved to: world_expansion_phase1.json") + print("\n" + "=" * 60)