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.pnginterior_bakery_counter.pnginterior_bakery_bread_shelf.pngnpc_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.pnginterior_barber_chair.pnginterior_barber_mirror.pnginterior_piercing_tools.pngnpc_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.pnginterior_lawyer_desk.pnginterior_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.pngmine_tracks.pngmine_elevator.pngmine_crusher.pngnpc_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.pngvillage_small_house_2.pngvillage_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 chainsinterior_tool_rack.png- Hanging tools (hoe, axe, pitchfork)interior_hay_pile.png- Dark greyish-green hay with bonesinterior_feed_trough.png- Feeding station for zombie animals
Silo/Storage
interior_wooden_crate.png- Crate with skull logointerior_grain_sack.png- Burlap sack with graininterior_barrel_storage.png- Rusty barrelinterior_wheat_phases_display.png- Shows 4 wheat growth phases
Workshop
interior_crafting_table.png- Table with metal viseinterior_zombie_workstation.png- Automated zombie machineryinterior_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+ recipesinterior_chemistry_set.png- Glass tubes and beakersinterior_potion_shelf.png- Organized potion storage
Chernobyl Bunker
interior_old_monitor.png- Computer with glitch effectinterior_cassette_player.png- Plays Ana's audio diariesinterior_hazmat_locker.png- Radiation suits storageinterior_radiation_shower.png- Decontamination station
SECRET LOCATIONS
Underground Groves
interior_fluorescent_plants.png- Glowing ceiling plantsinterior_irrigation_pipes.png- Rusty leaking pipesinterior_grow_lamp.png- Purple UV grow lights
Dino Valley Lairs
interior_dino_nest.png- Giant nest with eggsinterior_researcher_bones.png- Skeleton remainsinterior_cave_painting.png- Primitive dino drawings
Catacombs (Paris/Mexico)
interior_skull_shelf.png- Shelves full of skullsinterior_sarcophagus.png- Stone coffin with gemsinterior_bone_pile_large.png- Massive bone heapinterior_catacomb_torch.png- Wall-mounted torch
HOME UPGRADES
Beds
interior_bed_sleepingbag.png- Level 1interior_bed_wooden.png- Level 2interior_bed_kingsize.png- Level 3 (two-person)
Tables
interior_table_small.png- Basic craftinginterior_table_large.png- Expedition planning
Kitchen Extension
interior_kitchen_stove.png- Cooking stationinterior_kitchen_counter.png- Prep areainterior_kitchen_fridge.png- Food storage
Basement Extension
interior_stairs_down.png- Staircase to basementinterior_memory_chest.png- Special item storageinterior_secret_passage.png- Hidden bunker entrance
UNIVERSAL OBJECTS (Every Interior Needs)
Verticality
interior_ladder_wood.png- Wooden ladder for atticsinterior_stairs_stone.png- Stone stairs for basements
Lighting
interior_gothic_lantern.png- Hanging lamp (Style 32 noir)interior_glowing_crystal.png- Mystical light sourceinterior_candelabra.png- Three-candle holder
Containers
interior_wardrobe.png- For 100 outfits systeminterior_chest_locked.png- Treasure chestinterior_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.pnginterior_bed_wooden.pnginterior_bed_kingsize.pnginterior_table_small.pnginterior_table_large.png
Universal Objects (6):
interior_ladder_wood.pnginterior_stairs_stone.pnginterior_gothic_lantern.pnginterior_wardrobe.pnginterior_chest_locked.pnginterior_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.pnginterior_wooden_crate.pnginterior_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.mdwith 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)