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

835 lines
20 KiB
Markdown

# 🏗️ 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:**
```javascript
// 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:**
```javascript
// 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:**
```javascript
// 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:**
```javascript
// 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:**
```javascript
// 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:**
```javascript
// 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:**
```javascript
// 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:**
```javascript
// 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:**
```javascript
// 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:
```bash
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)