Files
novafarma/GAME_SYSTEMS_EXPANSION_PLAN.md
David Kotnik c64fe460df 📚 GAME BIBLE UPDATE - Jan 04 Systems Expansion
Added comprehensive documentation for 5 major new systems:

1. 🏠 Home Upgrade System:
   - 3-tier sleep system (sleeping bag → wooden → king-size)
   - Crafting tables (small → large for expeditions)
   - House extensions (kitchen + basement w/ alchemy lab)
   - Home customization & furniture placement

2. 🏪 New Town Buildings:
   - Bakery (food shop, gifts, baking competitions)
   - Barber Shop (hairstyles, piercings, dreadlocks, zombie makeover)
   - Lawyer Office (divorce mechanics, 50k cost, 25% money loss)

3. ⛏️ Functional Mines:
   - 100 levels deep with difficulty scaling
   - Zombie miner automation (auto-collect ore)
   - Mine machines (elevators, crushers, ventilation)
   - Boss at level 100 (The Deep One)

4. 🏘️ Town Growth:
   - Dynamic town sign (auto-updates population count)
   - NPC limit system (starts 4, expands to 20)
   - Small villages scattered across map (2-3 houses each)

5. 🔒 NPC Privacy & Decoration:
   - Hobby-based auto-decoration (fisherman, baker, barber themes)
   - Heart-locked doors (bedroom requires 5+ hearts)
   - Visit tracking & relationship effects

Documentation files:
- GAME_BIBLE_COMPLETE.md (updated)
- GAME_SYSTEMS_JAN_04_EXPANSION.md (new)
- GAME_SYSTEMS_EXPANSION_PLAN.md (implementation plan)

Total new content: ~400 lines of game mechanics
Asset requirements: ~170 interior PNG sprites
2026-01-04 11:46:12 +01:00

20 KiB

🏗️ DOLINASMRTI - GAME SYSTEMS EXPANSION PLAN

📅 Created: January 4, 2026

🎯 Status: PLANNING PHASE


📋 OVERVIEW

This document outlines the implementation plan for major game systems expansion including:

  • Home customization & upgrades
  • New town buildings (bakery, barber, lawyer)
  • Functional mines with zombie workers
  • Town growth & NPC privacy systems
  • Interior decoration for all building types

🎯 CORE SYSTEMS TO IMPLEMENT

1. HOME UPGRADE SYSTEM 🏠

Sleep System (3 Tiers)

Priority: HIGH
Dependencies: Player stats, time system

Implementation:

  • Level 1: Sleeping Bag

    • Quick sleep animation
    • Low energy regeneration (30%)
    • Asset: bed_tier1_sleepingbag.png
  • Level 2: Wooden Bed

    • Medium sleep duration
    • Good energy regeneration (70%)
    • Mood boost (+5)
    • Asset: bed_tier2_wooden.png
  • Level 3: King-Size Bed

    • Full energy regeneration (100%)
    • Two-person capacity (Kai + Ana when married)
    • Romance scene trigger
    • Asset: bed_tier3_kingsize.png

Code Tasks:

// PlayerStats.js
class SleepSystem {
  constructor(bedLevel) {
    this.bedLevel = bedLevel;
    this.sleepDuration = [3000, 5000, 7000][bedLevel - 1];
    this.energyRegen = [30, 70, 100][bedLevel - 1];
  }
  
  async sleep(player) {
    // Fade to black
    // Play sleep animation
    // Regenerate energy based on bed tier
    // Advance time
    // Trigger morning events
  }
}

Crafting Tables (2 Types)

Priority: HIGH
Dependencies: Crafting system, inventory

Implementation:

  • Small Table

    • Basic recipes (tools, simple repairs)
    • Asset: table_small_crafting.png
    • Unlock: Available from start
  • Large Table

    • Advanced recipes (expedition planning, complex items)
    • Required for Gronk's expedition system
    • Asset: table_large_planning.png
    • Unlock: After completing "Meet Gronk" quest

Code Tasks:

// CraftingStation.js
class CraftingTable {
  constructor(tier, recipes) {
    this.tier = tier; // 'small' | 'large'
    this.availableRecipes = recipes;
  }
  
  canCraft(recipeId) {
    const recipe = this.availableRecipes[recipeId];
    return recipe && recipe.requiredTable <= this.tier;
  }
}

House Extensions

Priority: MEDIUM
Dependencies: Building system, currency

Implementation:

  • Kitchen Extension

    • Enables cooking 200+ recipes
    • Multiple cooking stations
    • Asset: house_extension_kitchen.png
    • Cost: 5,000g
  • Basement Extension

    • Alchemy lab access
    • Memory item storage
    • Secret passage to bunker
    • Asset: house_extension_basement.png
    • Cost: 10,000g

Code Tasks:

// HouseExtension.js
class HouseExtension {
  static extensions = {
    kitchen: {
      cost: 5000,
      unlocks: ['cooking_recipes', 'food_processor'],
      asset: 'house_extension_kitchen'
    },
    basement: {
      cost: 10000,
      unlocks: ['alchemy_lab', 'memory_storage'],
      asset: 'house_extension_basement'
    }
  };
  
  static purchase(extensionType, player) {
    const ext = this.extensions[extensionType];
    if (player.money >= ext.cost) {
      player.money -= ext.cost;
      player.house.addExtension(extensionType);
      return true;
    }
    return false;
  }
}

2. NEW TOWN BUILDINGS 🏪

Bakery (Pekarna)

Priority: HIGH
Dependencies: NPC system, shop interface

Assets Needed:

  • building_bakery_exterior.png (already generated)
  • interior_bakery_oven.png
  • interior_bakery_counter.png
  • interior_bakery_bread_shelf.png
  • npc_baker.png

Functionality:

  • Buy food items for energy
  • Buy gifts for NPCs (heart system)
  • Special baked goods for quests
  • Warm lighting (Style 32: orange glow in dark world)

Code Tasks:

// BakeryShop.js
class BakeryShop extends Shop {
  constructor() {
    super('bakery');
    this.inventory = [
      { id: 'bread', price: 50, energy: 20, hearts: 1 },
      { id: 'cake', price: 200, energy: 50, hearts: 5 },
      { id: 'pie', price: 150, energy: 40, hearts: 3 }
    ];
  }
  
  buyItem(itemId, player) {
    const item = this.inventory.find(i => i.id === itemId);
    if (player.money >= item.price) {
      player.money -= item.price;
      player.inventory.add(item);
      return true;
    }
    return false;
  }
}

Barber Shop (Frizeraj)

Priority: MEDIUM
Dependencies: Character customization system

Assets Needed:

  • building_barbershop_exterior.png
  • interior_barber_chair.png
  • interior_barber_mirror.png
  • interior_piercing_tools.png
  • npc_barber.png

Functionality:

  • Change Kai's hairstyle
  • Add piercings
  • Ear gauges
  • Dreadlocks upgrade (pink & green)
  • Zombie makeover service

Code Tasks:

// BarberShop.js
class BarberShop {
  static hairstyles = [
    { id: 'dreadlocks_pink_green', price: 500, sprite: 'kai_dreads_pink' },
    { id: 'mohawk', price: 300, sprite: 'kai_mohawk' },
    { id: 'bald', price: 100, sprite: 'kai_bald' }
  ];
  
  static piercings = [
    { id: 'ear_gauges', price: 200, sprite: 'kai_gauges' },
    { id: 'nose_ring', price: 150, sprite: 'kai_nosering' }
  ];
  
  changeHairstyle(hairstyleId, player) {
    const style = this.hairstyles.find(h => h.id === hairstyleId);
    if (player.money >= style.price) {
      player.money -= style.price;
      player.sprite = style.sprite;
      return true;
    }
    return false;
  }
}

Bank/Lawyer Office (Ločitvena pisarna)

Priority: LOW (Story-dependent)
Dependencies: Marriage system, Ana questline

Assets Needed:

  • building_lawyer_office.png
  • interior_lawyer_desk.png
  • interior_lawyer_lamp.png (single overhead light - noir)
  • npc_lawyer.png

Functionality:

  • Divorce process (costs 50,000g)
  • Lose 25% money
  • Lose relationship hearts
  • Trigger "Single Again" questline

Code Tasks:

// LawyerOffice.js
class LawyerOffice {
  static DIVORCE_COST = 50000;
  static MONEY_PENALTY = 0.25; // 25% loss
  
  static processDivorce(player) {
    if (player.money < this.DIVORCE_COST) {
      return { success: false, message: "Not enough money" };
    }
    
    if (!player.isMarried) {
      return { success: false, message: "You're not married" };
    }
    
    // Pay divorce cost
    player.money -= this.DIVORCE_COST;
    
    // Lose 25% of remaining money
    player.money *= (1 - this.MONEY_PENALTY);
    
    // Reset relationship
    player.spouse.hearts = 0;
    player.isMarried = false;
    
    // Trigger quest
    QuestSystem.trigger('single_again');
    
    return { success: true };
  }
}

3. FUNCTIONAL MINES SYSTEM ⛏️

Priority: HIGH
Dependencies: Zombie AI, resource generation

Assets Needed:

  • mine_entrance.png
  • mine_tracks.png
  • mine_elevator.png
  • mine_crusher.png
  • npc_zombie_miner.png

Implementation:

  • 100 levels deep
  • Each level: harder enemies, rarer resources
  • Zombie miners auto-collect ore
  • Ore appears in player's chests
  • Machines: elevators, stone crushers

Code Tasks:

// MineSystem.js
class FunctionalMine {
  constructor(depth = 100) {
    this.maxDepth = depth;
    this.currentDepth = 1;
    this.zombieMiners = [];
    this.oreGeneration = new Map();
  }
  
  assignZombie(zombie) {
    this.zombieMiners.push(zombie);
    zombie.task = 'mining';
    zombie.location = this.currentDepth;
  }
  
  update(deltaTime) {
    // For each zombie miner
    this.zombieMiners.forEach(zombie => {
      // Generate ore based on depth
      const oreType = this.getOreForDepth(zombie.location);
      const oreAmount = Math.random() * 5;
      
      // Add to player storage
      PlayerStorage.addOre(oreType, oreAmount);
    });
  }
  
  getOreForDepth(depth) {
    if (depth < 20) return 'copper';
    if (depth < 50) return 'iron';
    if (depth < 80) return 'gold';
    return 'diamond';
  }
  
  descend() {
    if (this.currentDepth < this.maxDepth) {
      this.currentDepth++;
      this.spawnEnemies(this.currentDepth);
    }
  }
}

4. TOWN GROWTH & SIGNAGE SYSTEM 🏘️

Priority: MEDIUM
Dependencies: NPC system, building placement

Assets Needed:

  • town_sign.png (with dynamic text)
  • village_small_house_1.png
  • village_small_house_2.png
  • village_small_house_3.png

Implementation:

  • Town sign appears after first building
  • Auto-updates NPC count
  • Max 4 NPCs initially
  • Unlock more via quests
  • Small villages (2-3 houses) scattered on map

Code Tasks:

// TownSystem.js
class TownGrowth {
  constructor() {
    this.npcCount = 0;
    this.maxNPCs = 4;
    this.townName = "Dolina Smrti";
    this.buildings = [];
    this.townSign = null;
  }
  
  buildFirstBuilding(building) {
    this.buildings.push(building);
    
    // Create town sign
    this.townSign = new TownSign(this.townName, this.npcCount);
    this.townSign.spawn(building.x - 100, building.y - 50);
  }
  
  addNPC(npc) {
    if (this.npcCount >= this.maxNPCs) {
      return { success: false, message: "Town is full! Complete quests to expand." };
    }
    
    this.npcCount++;
    this.townSign.updateCount(this.npcCount);
    
    // Assign NPC to house
    const house = this.buildings.find(b => !b.occupied);
    if (house) {
      npc.moveInto(house);
      house.occupied = true;
      house.decorateForNPC(npc);
    }
    
    return { success: true };
  }
  
  expandTownLimit() {
    // Called when player completes marketplace quest
    this.maxNPCs += 4;
  }
  
  generateSmallVillage(x, y) {
    const village = new Village(x, y, 2 + Math.floor(Math.random() * 2)); // 2-3 houses
    village.populate();
    return village;
  }
}

class TownSign extends Phaser.GameObjects.Container {
  constructor(townName, npcCount) {
    super();
    this.townName = townName;
    this.npcCount = npcCount;
    this.createSign();
  }
  
  createSign() {
    // Background sign sprite
    this.sign = this.scene.add.sprite(0, 0, 'town_sign');
    this.add(this.sign);
    
    // Dynamic text
    this.nameText = this.scene.add.text(0, -20, this.townName, {
      fontSize: '24px',
      fontFamily: 'Gothic',
      color: '#ffffff'
    }).setOrigin(0.5);
    
    this.countText = this.scene.add.text(0, 10, `Population: ${this.npcCount}`, {
      fontSize: '18px',
      color: '#aaaaaa'
    }).setOrigin(0.5);
    
    this.add([this.nameText, this.countText]);
  }
  
  updateCount(newCount) {
    this.npcCount = newCount;
    this.countText.setText(`Population: ${this.npcCount}`);
    
    // Celebrate milestone
    if (this.npcCount % 5 === 0) {
      this.celebrateGrowth();
    }
  }
  
  celebrateGrowth() {
    // Particle effects, sound
    this.scene.add.particles('particle_star').createEmitter({
      x: this.x,
      y: this.y,
      speed: 100,
      lifespan: 1000,
      quantity: 20
    });
  }
}

5. NPC PRIVACY & HOME DECORATION SYSTEM 🏠

Priority: MEDIUM
Dependencies: Heart system, NPC AI

Implementation:

  • Hobby-based home decoration
  • Locked doors (heart requirements)
  • Private bedrooms (5-10 hearts to enter)

Code Tasks:

// NPCHome.js
class NPCHome {
  constructor(npc, building) {
    this.npc = npc;
    this.building = building;
    this.furniture = [];
    this.lockedRooms = ['bedroom'];
    this.decorateForHobby(npc.hobby);
  }
  
  decorateForHobby(hobby) {
    const decorations = {
      'fisherman': ['fishing_net', 'fish_smell', 'tackle_box'],
      'barber': ['mirror', 'scissors', 'dreadlocks_kit'],
      'baker': ['oven', 'bread_smell', 'flour_bags'],
      'zombie_worker': ['chains', 'brain_jar', 'dark_candles']
    };
    
    const items = decorations[hobby] || ['basic_chair', 'basic_table'];
    items.forEach(item => {
      this.furniture.push(new FurnitureItem(item));
    });
  }
  
  canEnter(player, room = 'main') {
    // Main room: NPC must be in town
    if (room === 'main') {
      if (!this.npc.isInTown()) {
        DialogueSystem.show(`${this.npc.name} isn't home right now.`);
        return false;
      }
      return true;
    }
    
    // Bedroom: Requires hearts
    if (room === 'bedroom') {
      const requiredHearts = 5;
      if (player.getHearts(this.npc) < requiredHearts) {
        DialogueSystem.show(`${this.npc.name}: "Sorry, that's my private room!"`);
        return false;
      }
      return true;
    }
    
    return true;
  }
  
  onPlayerEnter(player, room) {
    if (!this.canEnter(player, room)) {
      return false;
    }
    
    // Track entry for relationship system
    this.npc.onHomeVisit(player);
    return true;
  }
}

📦 INTERIOR OBJECTS MASTER LIST

FARM BUILDINGS (Barn, Silo, Workshop)

Barn Interior

  • interior_animal_stall.png - Stall with rusty chains
  • interior_tool_rack.png - Hanging tools (hoe, axe, pitchfork)
  • interior_hay_pile.png - Dark greyish-green hay with bones
  • interior_feed_trough.png - Feeding station for zombie animals

Silo/Storage

  • interior_wooden_crate.png - Crate with skull logo
  • interior_grain_sack.png - Burlap sack with grain
  • interior_barrel_storage.png - Rusty barrel
  • interior_wheat_phases_display.png - Shows 4 wheat growth phases

Workshop

  • interior_crafting_table.png - Table with metal vise
  • interior_zombie_workstation.png - Automated zombie machinery
  • interior_lumberjack_station.png - Woodcutting automation

LABORATORY & TECH

Alchemy Lab (Basement)

  • interior_alchemy_bottle.png - Glowing neon liquid bottle (light source)
  • interior_brewing_cauldron.png - Large pot for 200+ recipes
  • interior_chemistry_set.png - Glass tubes and beakers
  • interior_potion_shelf.png - Organized potion storage

Chernobyl Bunker

  • interior_old_monitor.png - Computer with glitch effect
  • interior_cassette_player.png - Plays Ana's audio diaries
  • interior_hazmat_locker.png - Radiation suits storage
  • interior_radiation_shower.png - Decontamination station

SECRET LOCATIONS

Underground Groves

  • interior_fluorescent_plants.png - Glowing ceiling plants
  • interior_irrigation_pipes.png - Rusty leaking pipes
  • interior_grow_lamp.png - Purple UV grow lights

Dino Valley Lairs

  • interior_dino_nest.png - Giant nest with eggs
  • interior_researcher_bones.png - Skeleton remains
  • interior_cave_painting.png - Primitive dino drawings

Catacombs (Paris/Mexico)

  • interior_skull_shelf.png - Shelves full of skulls
  • interior_sarcophagus.png - Stone coffin with gems
  • interior_bone_pile_large.png - Massive bone heap
  • interior_catacomb_torch.png - Wall-mounted torch

HOME UPGRADES

Beds

  • interior_bed_sleepingbag.png - Level 1
  • interior_bed_wooden.png - Level 2
  • interior_bed_kingsize.png - Level 3 (two-person)

Tables

  • interior_table_small.png - Basic crafting
  • interior_table_large.png - Expedition planning

Kitchen Extension

  • interior_kitchen_stove.png - Cooking station
  • interior_kitchen_counter.png - Prep area
  • interior_kitchen_fridge.png - Food storage

Basement Extension

  • interior_stairs_down.png - Staircase to basement
  • interior_memory_chest.png - Special item storage
  • interior_secret_passage.png - Hidden bunker entrance

UNIVERSAL OBJECTS (Every Interior Needs)

Verticality

  • interior_ladder_wood.png - Wooden ladder for attics
  • interior_stairs_stone.png - Stone stairs for basements

Lighting

  • interior_gothic_lantern.png - Hanging lamp (Style 32 noir)
  • interior_glowing_crystal.png - Mystical light source
  • interior_candelabra.png - Three-candle holder

Containers

  • interior_wardrobe.png - For 100 outfits system
  • interior_chest_locked.png - Treasure chest
  • interior_bookshelf.png - Books and memories

🎯 IMPLEMENTATION PHASES

PHASE 1: FOUNDATION (Week 1-2)

Goal: Basic home upgrade system

  • Implement sleep system (3 bed tiers)
  • Create crafting table system (small/large)
  • Build upgrade purchase interface
  • Generate bed & table sprites (Style 32)
  • Test energy regeneration mechanics

Estimated Assets: 10 PNG files
Code Files: 3 new classes


PHASE 2: TOWN BUILDINGS (Week 3-4)

Goal: Bakery & Barber functional

  • Build bakery shop interface
  • Implement food purchase system
  • Create barber customization menu
  • Generate interior sprites for both buildings
  • Add NPC bakers & barber

Estimated Assets: 20 PNG files
Code Files: 2 shop classes, 1 customization system


PHASE 3: MINING & AUTOMATION (Week 5-6)

Goal: Functional mines with zombies

  • Create 100-level mine system
  • Implement zombie miner AI
  • Build ore generation logic
  • Add elevators & crushers
  • Generate mine interior sprites

Estimated Assets: 15 PNG files
Code Files: 1 mine system, zombie task AI


PHASE 4: TOWN GROWTH (Week 7-8)

Goal: Dynamic town with sign & villages

  • Implement town sign with dynamic text
  • Create NPC limit & expansion system
  • Generate small village variants
  • Add village spawn logic to world gen
  • Test NPC move-in sequence

Estimated Assets: 8 PNG files
Code Files: Town growth system, village generator


PHASE 5: PRIVACY & DECORATION (Week 9-10)

Goal: NPC homes feel alive

  • Build hobby-based decoration system
  • Implement door lock mechanics (heart-based)
  • Create bedroom privacy system
  • Generate hobby-specific furniture
  • Test relationship integration

Estimated Assets: 30+ PNG files (various hobbies)
Code Files: NPC home system, privacy manager


PHASE 6: LAWYER & ADVANCED (Week 11-12)

Goal: Story-dependent buildings

  • Create lawyer office building
  • Implement divorce mechanics
  • Build house extension system (kitchen/basement)
  • Generate all interior lab equipment
  • Add Chernobyl bunker integration

Estimated Assets: 25 PNG files
Code Files: Divorce system, extension manager


📊 TOTAL ASSET REQUIREMENTS

Category Estimated PNGs Priority
Beds & Tables 5 HIGH
Bakery Interior 10 HIGH
Barber Interior 8 MEDIUM
Mine Systems 15 HIGH
Town Signs & Villages 8 MEDIUM
NPC Hobby Furniture 30 MEDIUM
Lab Equipment 20 LOW
Chernobyl Bunker 12 LOW
Catacomb Objects 15 LOW
Underground Groves 10 LOW
Dino Valley 12 LOW
Universal Objects 15 HIGH
House Extensions 10 MEDIUM
━━━━━━━━━━ ━━━ ━━━
TOTAL ~170 PNG

🚀 NEXT IMMEDIATE STEPS

1. HIGH PRIORITY ASSETS (Next Session)

Generate these foundational sprites first:

Home Upgrades (5):

  • interior_bed_sleepingbag.png
  • interior_bed_wooden.png
  • interior_bed_kingsize.png
  • interior_table_small.png
  • interior_table_large.png

Universal Objects (6):

  • interior_ladder_wood.png
  • interior_stairs_stone.png
  • interior_gothic_lantern.png
  • interior_wardrobe.png
  • interior_chest_locked.png
  • interior_bookshelf.png

Farm Essentials (6):

  • interior_animal_stall.png (already started)
  • interior_tool_rack.png (already started)
  • interior_hay_pile.png (already started)
  • interior_crafting_table.png
  • interior_wooden_crate.png
  • interior_grain_sack.png

2. CODE SKELETON SETUP

Create these base classes:

touch src/systems/SleepSystem.js
touch src/systems/CraftingTable.js
touch src/systems/HouseExtension.js
touch src/buildings/BakeryShop.js
touch src/buildings/BarberShop.js
touch src/buildings/LawyerOffice.js
touch src/systems/FunctionalMine.js
touch src/systems/TownGrowth.js
touch src/systems/NPCHome.js

3. DOCUMENTATION UPDATE

Add new systems to master documentation:

  • Update GAME_SYSTEMS.md with new mechanics
  • Add INTERIOR_OBJECTS_REGISTRY.md
  • Create NPC_HOBBY_DECORATIONS.md
  • Document upgrade progression paths

READY TO START?

Confirm with user which phase to begin:

Option A: Continue generating interior object sprites (HIGH PRIORITY assets above)
Option B: Start coding the Sleep System & Crafting Tables
Option C: Create comprehensive asset list for approval before generation
Option D: Build prototype of one complete system (e.g., Bakery) start-to-finish


📅 Document Status: COMPLETE - Ready for Implementation
Last Updated: 2026-01-04 11:38 CET
👤 Author: Antigravity AI + David (DolinaSmrti)