diff --git a/assets/sprites/player_walk.png b/assets/sprites/player_walk.png deleted file mode 100644 index eb4a32f..0000000 Binary files a/assets/sprites/player_walk.png and /dev/null differ diff --git a/assets/sprites/player_walk_animations.jpg b/assets/sprites/player_walk_animations.jpg new file mode 100644 index 0000000..d2fdb1b Binary files /dev/null and b/assets/sprites/player_walk_animations.jpg differ diff --git a/assets/sprites/player_walk_animations.png b/assets/sprites/player_walk_animations.png new file mode 100644 index 0000000..b0e7f3a Binary files /dev/null and b/assets/sprites/player_walk_animations.png differ diff --git a/assets/sprites/player_walk_strip.png b/assets/sprites/player_walk_strip.png deleted file mode 100644 index 2ba22ac..0000000 Binary files a/assets/sprites/player_walk_strip.png and /dev/null differ diff --git a/assets/sprites/raw_player.jpg b/assets/sprites/raw_player.jpg deleted file mode 100644 index c61f513..0000000 Binary files a/assets/sprites/raw_player.jpg and /dev/null differ diff --git a/assets/sprites/raw_zombie.jpg b/assets/sprites/raw_zombie.jpg deleted file mode 100644 index d8037c5..0000000 Binary files a/assets/sprites/raw_zombie.jpg and /dev/null differ diff --git a/assets/sprites/zombie_walk.png b/assets/sprites/zombie_walk.png deleted file mode 100644 index 0a69de9..0000000 Binary files a/assets/sprites/zombie_walk.png and /dev/null differ diff --git a/assets/sprites/zombie_walk_strip.png b/assets/sprites/zombie_walk_strip.png deleted file mode 100644 index fe86131..0000000 Binary files a/assets/sprites/zombie_walk_strip.png and /dev/null differ diff --git a/docs/KRVAVA_ZETEV_ROADMAP.md b/docs/KRVAVA_ZETEV_ROADMAP.md new file mode 100644 index 0000000..90e4255 --- /dev/null +++ b/docs/KRVAVA_ZETEV_ROADMAP.md @@ -0,0 +1,315 @@ +# 💀 KRVAVA ŽETEV - SPECIFIC FEATURES + +## 🆕 **PHASE 35: ZOMBI DELAVEC SISTEM** (HIGH PRIORITY) + +Implementacija zombi delavcev - jedro Krvava Žetev koncepta. + +- [ ] **Zombi Framework** + - [ ] Zombi entity class + - [ ] Zombi AI (basic pathfinding) + - [ ] Zombi animations (walk, work, idle, decay) + - [ ] Zombi stats (HP, stamina, XP, skills) +- [ ] **Alfa Sistem (Krotenje)** + - [ ] Player je Alfa (hybrid virus) + - [ ] Zombiji vohajo igralca + - [ ] Krotenje divjih zombijev + - [ ] Ukazi zombijem (follow, work, guard) +- [ ] **Zombi Delo** + - [ ] Farming task (kopanje, sadenje, žetev) + - [ ] Mining task (rudarjenje) + - [ ] Gathering task (nabiranje) + - [ ] Guard task (obramba) +- [ ] **Zombi Leveling** + - [ ] XP gain glede na nalogo + - [ ] Skill specialization (Farmer, Miner, Guard) + - [ ] Level up bonusi (hitrost, moč) +- [ ] **Zombi Utrujenost & Razpad** + - [ ] Stamina sistem (delo = utrujenost) + - [ ] Decay timer (počasno razpadanje) + - [ ] Smrt zombija → Gnojilo + XP +- [ ] **Grobovi (Počitek)** + - [ ] Crafting grobov (kamen + zemlja) + - [ ] Zombi počitek v grobu + - [ ] Regeneracija stamina + - [ ] Podaljšanje življenjske dobe + +**Status:** 🔥 HIGH PRIORITY - Jedro igre! + +--- + +## 🆕 **PHASE 36: HYBRID SKILL SISTEM** (HIGH PRIORITY) + +Igralčeva Hybrid veščina - razumevanje zombijev. + +- [ ] **Hybrid Skill Tree** + - [ ] Level 1-10 progression + - [ ] XP gain iz zombi smrti (dediščina) + - [ ] Skill points allocation +- [ ] **Zombi Komunikacija** + - [ ] Level 1: Samo godrnjanje ("Hnggg...") + - [ ] Level 5: Ključne besede v podnapisih + - [ ] Level 10: Celotne stavke (opozorila, spomini) +- [ ] **Alfa Moči** + - [ ] Večji radius krotenja + - [ ] Več zombijev hkrati + - [ ] Boljši ukazi (kompleksne naloge) + - [ ] Voh Alfe (privlačnost za zombije) +- [ ] **Hybrid Abilities** + - [ ] Heal zombije (regeneracija) + - [ ] Boost zombije (začasna moč) + - [ ] Calm divje zombije + - [ ] Sense danger (opozorilo) + +**Status:** 🔥 HIGH PRIORITY + +--- + +## 🆕 **PHASE 37: MICRO FARM & ŠIRITEV** (HIGH PRIORITY) + +Začetek na 8x8 parceli in postopna širitev. + +- [ ] **Micro Farm (8x8)** + - [ ] Fiksna začetna parcela + - [ ] Omejen prostor (prisili strategijo) + - [ ] Tutorial na micro farm +- [ ] **Širitev Sistema** + - [ ] Odklepanje po 2x2 tiles + - [ ] Pošlji zombije da očistijo + - [ ] Zombiji pripravijo zemljo + - [ ] Plačilo za širitev (resources) +- [ ] **Zemljišče Tipi** + - [ ] Grass (osnova) + - [ ] Forest (drevesa, clearing needed) + - [ ] Rocky (kamenje, mining needed) + - [ ] Swamp (voda, drainage needed) + +**Status:** 🔥 HIGH PRIORITY + +--- + +## 🆕 **PHASE 38: OBNOVA MESTA** (MEDIUM PRIORITY) + +Obnova porušenega mesta - socialni element. + +- [ ] **Ruševine** + - [ ] Porušene hiše (NPC homes) + - [ ] Damage levels (25%, 50%, 75%, 100%) + - [ ] Visual progression (repair stages) +- [ ] **Obnova Projektov** + - [ ] Material requirements (les, kamen, železo, zlato) + - [ ] Zombi pomoč (construction work) + - [ ] Time to complete + - [ ] Completion rewards +- [ ] **NPC Srčki (Hearts)** + - [ ] Relationship system (1-10 hearts) + - [ ] Unlock trgovine z hearts + - [ ] Unlock quests z hearts + - [ ] Unlock zombi posoja +- [ ] **Zombi Posoja (Leasing)** + - [ ] Posodi zombije NPC-jem + - [ ] Plačilo za zombi delo + - [ ] Zombi dobi special XP + - [ ] Return zombija (upgraded) +- [ ] **NPC Trgovine** + - [ ] Kovač (orodja, orožje) + - [ ] Pekarica (hrana, recepti) + - [ ] Trgovec (semena, materiali) + - [ ] Zdravnik (zdravila, cure research) + +**Status:** 📋 MEDIUM PRIORITY + +--- + +## 🆕 **PHASE 39: MESOJEDKE (MARIO PLANTS)** (MEDIUM PRIORITY) + +Gigantske rože za obrambo in End-Game farming. + +- [ ] **Mesojedke Framework** + - [ ] Seed planting + - [ ] Growth stages (1-5) + - [ ] Gigantska roža (final stage) +- [ ] **Hranjenje z Mesom** + - [ ] Ne potrebujejo vode + - [ ] Potrebujejo meso (zombi deli, mutanti) + - [ ] Feeding system + - [ ] Growth speed glede na kvaliteto mesa +- [ ] **Obramba** + - [ ] Auto-attack sovražnikov + - [ ] Damage output + - [ ] Range (radius) + - [ ] Cooldown +- [ ] **Pridelek** + - [ ] Cvetni listi (rare material) + - [ ] Semena (expensive) + - [ ] Special drops (legendary items) + +**Status:** 📋 MEDIUM PRIORITY + +--- + +## 🆕 **PHASE 40: EKONOMIJA - MINTING** (MEDIUM PRIORITY) + +Kovanje zlatnikov - unikaten ekonomski sistem. + +- [ ] **Rudarjenje Zlata** + - [ ] Zlata ruda (rare ore) + - [ ] Mining locations + - [ ] Zombi miners +- [ ] **Talilnica (Smelter)** + - [ ] Crafting smelter + - [ ] Smelt zlato rudo → zlato + - [ ] Fuel requirements (coal, wood) +- [ ] **Kovalnica (Mint)** + - [ ] Crafting mint + - [ ] Mint zlato → zlatniki (coins) + - [ ] Minting time + - [ ] Quality levels (pure gold = more value) +- [ ] **Valuta** + - [ ] Zlatniki kot glavna valuta + - [ ] Ni random coin drops + - [ ] Vse preko minting + - [ ] Inflation control (limited gold) + +**Status:** 📋 MEDIUM PRIORITY + +--- + +## 🆕 **PHASE 41: ALBUM (COLLECTION)** (LOW PRIORITY) + +Zbirateljski sistem - odkrivanje sveta. + +- [ ] **Album Framework** + - [ ] Album UI (book interface) + - [ ] Categories (zombiji, rastline, ribe, mutanti) + - [ ] Auto-discovery (first encounter) + - [ ] Completion percentage +- [ ] **Kategorije** + - [ ] Legendarne Zombije (rare types) + - [ ] Gigantske Rože (mesojedke) + - [ ] Redke Ribe (fishing) + - [ ] Mutanti (enemies) + - [ ] Defektni Zombiji (lab jokes) +- [ ] **Rewards** + - [ ] Completion bonuses + - [ ] Unlock special items + - [ ] Achievements + - [ ] Lore entries + +**Status:** 📋 LOW PRIORITY + +--- + +## 🆕 **PHASE 42: MAIN QUEST - SESTRA** (HIGH PRIORITY) + +Glavna zgodba - iskanje izgubljene sestre. + +- [ ] **Quest Framework** + - [ ] Quest tracking + - [ ] Quest journal + - [ ] Quest markers + - [ ] Quest rewards +- [ ] **Zgodba** + - [ ] Prologue (napad Zmaj-Volka) + - [ ] Act 1: Iskanje sledi + - [ ] Act 2: Odkrivanje laboratorija + - [ ] Act 3: Soočenje z resnico + - [ ] Finale: Sestra & zdravilo +- [ ] **Zapisi (Lore)** + - [ ] Stari zapisi (mining, digging) + - [ ] Virus origin story + - [ ] Lab experiments + - [ ] Zmaj-Volk creation +- [ ] **Odločitve** + - [ ] Zdravilo ali maščevanje? + - [ ] Rešiti sestro ali svet? + - [ ] Multiple endings + +**Status:** 🔥 HIGH PRIORITY + +--- + +## 🆕 **PHASE 43: ZMAJ-VOLK BOSS** (HIGH PRIORITY) + +Najvišji plenilec - epic boss fight. + +- [ ] **Zmaj-Volk Design** + - [ ] Hybrid mutant (dragon + wolf) + - [ ] Massive size + - [ ] Unique animations + - [ ] Intimidating presence +- [ ] **Boss Fight** + - [ ] Multi-phase fight (3 faze) + - [ ] Special attacks (fire breath, claw swipe) + - [ ] Weak points + - [ ] Environmental hazards +- [ ] **Boss Arena** + - [ ] Special location (ruins, forest) + - [ ] Dynamic environment + - [ ] Escape routes +- [ ] **Rewards** + - [ ] Zmaj-Volk trophy + - [ ] Legendary loot + - [ ] Story progression + - [ ] Unlock ending + +**Status:** 🔥 HIGH PRIORITY + +--- + +## 🆕 **PHASE 44: INVAZIJA (HORDE MODE)** (MEDIUM PRIORITY) + +Wave defense - End-Game content. + +- [ ] **Horde System** + - [ ] Wave spawning + - [ ] Difficulty scaling + - [ ] Enemy types (zombiji, mutanti) + - [ ] Boss waves +- [ ] **Obramba** + - [ ] Mesojedke (auto-defense) + - [ ] Guard zombiji (player army) + - [ ] Traps and barriers + - [ ] Player combat +- [ ] **Rewards** + - [ ] Wave completion rewards + - [ ] Rare loot + - [ ] XP bonuses + - [ ] Leaderboards + +**Status:** 📋 MEDIUM PRIORITY + +--- + +## 📊 **KRVAVA ŽETEV - PRIORITY ROADMAP** + +### **HIGH PRIORITY (Začni tukaj):** +1. Phase 35: Zombi Delavec Sistem +2. Phase 36: Hybrid Skill +3. Phase 37: Micro Farm & Širitev +4. Phase 42: Main Quest - Sestra +5. Phase 43: Zmaj-Volk Boss + +### **MEDIUM PRIORITY (Potem):** +6. Phase 38: Obnova Mesta +7. Phase 39: Mesojedke +8. Phase 40: Minting +9. Phase 44: Invazija + +### **LOW PRIORITY (Zadnje):** +10. Phase 41: Album + +--- + +**Timeline:** +- **Core Systems (35-37):** 3-4 weeks +- **Story & Boss (42-43):** 2-3 weeks +- **Social & Economy (38-40):** 3-4 weeks +- **End-Game (39, 41, 44):** 2-3 weeks + +**Total:** 10-14 weeks (2.5-3.5 months) + +--- + +**💀 KRVAVA ŽETEV - DEATH HARVEST 💀** +**Unique Zombie Worker Survival RPG** +**Development Start: December 2025** 🚀✨ diff --git a/src/entities/Player.js b/src/entities/Player.js index 913d9c1..0230384 100644 --- a/src/entities/Player.js +++ b/src/entities/Player.js @@ -92,18 +92,14 @@ class Player { } createSprite() { - // NEW: Use player_dreadlocks sprite (isometric 2.5D) - let texKey = 'player_dreadlocks'; + // KRVAVA ŽETEV: Use new protagonist sprite + let texKey = 'player_protagonist'; - // Fallback chain if new sprite not loaded + // Fallback to generated sprite if not loaded if (!this.scene.textures.exists(texKey)) { - texKey = this.scene.textures.exists('player_walk') ? 'player_walk' : 'player_sprite'; - if (!this.scene.textures.exists(texKey)) { - texKey = 'player'; - if (!this.scene.textures.exists(texKey)) { - TextureGenerator.createPlayerSprite(this.scene, texKey); - } - } + console.warn('⚠️ player_protagonist sprite not found! Generating fallback...'); + TextureGenerator.createPlayerSprite(this.scene, 'player_fallback'); + texKey = 'player_fallback'; } // Kreira sprite @@ -113,15 +109,13 @@ class Player { screenPos.y + this.offsetY, texKey ); - this.sprite.setOrigin(0.5, 1); + this.sprite.setOrigin(0.5, 0.8); // Changed from 1 to 0.8 to show legs // Scale based on sprite type - if (texKey === 'player_dreadlocks') { - this.sprite.setScale(2.5); // MUCH larger for better visibility - } else if (texKey === 'player_walk') { - this.sprite.setScale(2.5); // Old animated sprite + if (texKey === 'player_protagonist') { + this.sprite.setScale(1.0); // Smaller protagonist sprite } else { - this.sprite.setScale(1.2); // Old static sprite + this.sprite.setScale(1.0); // Fallback sprite } @@ -343,10 +337,35 @@ class Player { this.lastDir = { x: dx, y: dy }; this.sprite.setFlipX(!facingRight); + // Play walking animation (with safety check) + if (this.sprite.anims) { + try { + if (this.scene.anims.exists('protagonist_walk') && !this.sprite.anims.isPlaying) { + this.sprite.play('protagonist_walk'); + } + } catch (e) { + // Ignore animation errors + } + } + // Hand offset const handOffset = facingRight ? 10 : -10; this.handSprite.setX(this.sprite.x + handOffset); this.handSprite.setFlipX(!facingRight); + } else { + // Stop animation when idle (with safety check) + if (this.sprite.anims) { + try { + if (this.sprite.anims.isPlaying) { + this.sprite.stop(); + } + if (this.scene.anims.exists('protagonist_idle')) { + this.sprite.play('protagonist_idle'); + } + } catch (e) { + // Ignore animation errors + } + } } // Collision Check diff --git a/src/scenes/PreloadScene.js b/src/scenes/PreloadScene.js index 28d5e28..b84c7a2 100644 --- a/src/scenes/PreloadScene.js +++ b/src/scenes/PreloadScene.js @@ -136,21 +136,19 @@ class PreloadScene extends Phaser.Scene { }); // New Processed Animations (Standardized 64x64 strips) - this.load.spritesheet('player_walk', 'assets/sprites/player_walk_strip.png', { frameWidth: 64, frameHeight: 64 }); this.load.spritesheet('zombie_walk', 'assets/sprites/zombie_walk_strip.png', { frameWidth: 64, frameHeight: 64 }); + + // KRVAVA ŽETEV - New Player Sprite (Protagonist with dreadlocks) + this.load.spritesheet('player_protagonist', 'assets/sprites/player_walk_animations.png', { + frameWidth: 128, // Adjust based on actual sprite size + frameHeight: 128 + }); } createAnimations() { - if (this.anims.exists('player_walk_anim')) return; - - // Old animations - this.anims.create({ - key: 'player_walk_anim', - frames: this.anims.generateFrameNumbers('player_walk', { start: 0, end: 5 }), - frameRate: 12, - repeat: -1 - }); + if (this.anims.exists('protagonist_walk')) return; + // Zombie animations this.anims.create({ key: 'zombie_walk_anim', frames: this.anims.generateFrameNumbers('zombie_walk', { start: 0, end: 5 }), @@ -158,18 +156,25 @@ class PreloadScene extends Phaser.Scene { repeat: -1 }); - // NEW: Isometric character animations (6 frames) this.anims.create({ - key: 'player_dreadlocks_walk', - frames: this.anims.generateFrameNumbers('player_dreadlocks', { start: 0, end: 5 }), + key: 'zombie_worker_walk', + frames: this.anims.generateFrameNumbers('zombie_worker', { start: 0, end: 5 }), + frameRate: 8, + repeat: -1 + }); + + // KRVAVA ŽETEV: Protagonist animations + this.anims.create({ + key: 'protagonist_walk', + frames: this.anims.generateFrameNumbers('player_protagonist', { start: 0, end: 7 }), frameRate: 10, repeat: -1 }); this.anims.create({ - key: 'zombie_worker_walk', - frames: this.anims.generateFrameNumbers('zombie_worker', { start: 0, end: 5 }), - frameRate: 8, + key: 'protagonist_idle', + frames: this.anims.generateFrameNumbers('player_protagonist', { start: 8, end: 9 }), + frameRate: 2, repeat: -1 });