🖼️ REAL CHARACTER PORTRAITS + Age Fix (14)

MAJOR UPDATES:

1. CHARACTER PORTRAITS:
    Replaced emoji icons with REAL images
    Using kai_master_style33.png
    Using ana_master_style33.png
    Portrait system updated to use sprites

2. AGE CORRECTION (17→14):
    Updated GAME_BIBLE_COMPLETE.md
    Updated KRVAVA_ZETEV_GDD.md
    Updated COMPLETE_GAME_STORY.md
    Kai & Ana now 14-year-old twins

3. STORY REWRITE:
    Corrected prologue to match Game Bible
    Family attack (not lab breach)
    Parents sacrifice themselves
    Troll King kidnaps Ana
    Kai transforms to Alpha Hybrid
    6 months later - quest begins

DIALOGUE CHANGES:
- Scene 1: Zombi virus intro
- Scene 2: Kai intro (14 years old)
- Scene 3: Twin bond
- Scene 4: Parents (scientists)
- Scene 5: Day 3 attack
- Scene 6: Parents sacrifice
- Scene 7: Troll King appears
- Scene 8: Ana screams
- Scene 9: Kai screams
- Scene 10: Alpha transformation
- Scene 11: 6 months later
- Scene 12: Quest begins

NOW: Real portraits + correct story + correct age! 🎭💀
This commit is contained in:
2026-01-04 13:50:03 +01:00
parent f88f2c4cae
commit 8b9c83d434
6 changed files with 114 additions and 115 deletions

View File

@@ -38,6 +38,10 @@ class PrologueScene extends Phaser.Scene {
this.load.json('prologue_data', 'assets/dialogue/prologue.json');
// Load character portraits
this.load.image('kai_portrait', 'reference_images/kai_master_style33.png');
this.load.image('ana_portrait', 'reference_images/ana_master_style33.png');
// Load prologue voiceover audio files (Slovenian WAV format)
for (let i = 1; i <= 19; i++) {
const num = i.toString().padStart(2, '0');
@@ -45,6 +49,7 @@ class PrologueScene extends Phaser.Scene {
}
console.log('🎤 Loading 19 Slovenian prologue voiceover files...');
console.log('🖼️ Loading character portraits...');
}
create() {
@@ -64,108 +69,110 @@ class PrologueScene extends Phaser.Scene {
if (!this.dialogueData) {
console.warn('⚠️ Using fallback hardcoded dialogue!');
// FALLBACK: Extended Slovenian dialogue (12 scenes)
// CORRECT STORY: 14-year-old twins, family sacrifice, Troll King kidnapping
this.dialogueData = [
{
id: 'prologue_01',
speaker: "NARRATOR",
text: "Leto 2084. Svet, kot smo ga poznali, je padel.",
background: "lab",
text: "Leto 2084. Zombi virus je uničil svet.",
background: "ruins",
bgColor: 0x1a1a2e,
portrait: null
},
{
id: 'prologue_02',
speaker: "NARRATOR",
text: "Zombi virus je uničil civilizacijo. Preživeli se borijo za vsak nov dan.",
background: "ruins",
speaker: "KAI",
text: "Moje ime je Kai Marković. Star sem štirinajst let.",
background: "lab",
bgColor: 0x2d1b00,
portrait: null,
flash: true
portrait: "kai_neutral"
},
{
id: 'prologue_03',
speaker: "KAI",
text: "Ime mi je Kai. Z dvojno sestro Ano sva bila najboljša znanstvenika na področju virusologije.",
text: "Moja dvojčica Ana in jaz, sva zelo povezana. Nezlomljiv vez.",
background: "lab",
bgColor: 0x2d4a1e,
portrait: "kai_neutral"
},
{
id: 'prologue_04',
speaker: "KAI",
text: "Naša starša sta bila znanstvenika. Raziskovala sta virusne mutacije.",
background: "lab",
bgColor: 0x1a1a2e,
portrait: "kai_neutral"
},
{
id: 'prologue_04',
speaker: "ANA",
text: "Kai, poglejva! Uspelo nama je izolirati Alfa strain! To bi lahko bila rešitev!",
background: "lab",
bgColor: 0x1a1a2e,
portrait: "ana_excited"
},
{
id: 'prologue_05',
speaker: "KAI",
text: "Ana je vedno bila optimistična. Jaz? Bil sem previdnejši.",
background: "lab",
bgColor: 0x1a1a2e,
portrait: "kai_worried"
},
{
id: 'prologue_06',
speaker: "NARRATOR",
text: "⚠️ ALARM! BREACH IN SECTOR 7! ⚠️",
background: "lab_alarm",
text: "Tretji dan izbruha. Horda zombijev napada družinsko hišo.",
background: "lab_chaos",
bgColor: 0x660000,
portrait: null,
shake: true,
flash: true
},
{
id: 'prologue_06',
speaker: "NARRATOR",
text: "Starša se žrtvujeta, da rešita dvojčka. Zadnji besede: 'Beži, Kai! Zaščiti Ano!'",
background: "lab_chaos",
bgColor: 0x3d0000,
portrait: null,
shake: true
},
{
id: 'prologue_07',
speaker: "NARRATOR",
text: "Iz senc se pojavi Orjaški Troll Kralj. Poslal ga je zlobni doktor Krnić.",
background: "lab_alarm",
bgColor: 0x2d0000,
portrait: null,
shake: true
},
{
id: 'prologue_08',
speaker: "ANA",
text: "KAI! REŠI ME! KAIII!",
background: "lab_chaos",
bgColor: 0x3d0000,
portrait: "ana_pain",
shake: true
},
{
id: 'prologue_09',
speaker: "KAI",
text: "Zombiji! So vdrli v laboratorij! Ana, BEŽI!",
text: "ANA! NE! VRNITE MI JO!",
background: "lab_chaos",
bgColor: 0x3d0000,
portrait: "kai_shocked",
shake: true
},
{
id: 'prologue_08',
speaker: "ANA",
text: "Vzorci! Moram jih zaščititi! Ti beži, Kai! BEŽI!",
background: "lab_chaos",
bgColor: 0x3d0000,
portrait: "ana_determined"
},
{
id: 'prologue_09',
speaker: "KAI",
text: "Nato je sledila eksplozija. Ko sem se zbudil... Ana je bila izginila.",
id: 'prologue_10',
speaker: "NARRATOR",
text: "Kai se spremeni v Alfa Hibrida. Vijolične oči. Moč nadzora nad zombiji.",
background: "ruins",
bgColor: 0x1a1a1a,
portrait: "kai_pain",
bgColor: 0x4a1a4a,
portrait: null,
flash: true
},
{
id: 'prologue_10',
speaker: "KAI",
text: "Našel sem le njen laboratorijski plašč. In kri. Njeno kri...",
background: "ruins",
bgColor: 0x1a1a1a,
portrait: "kai_confused"
},
{
id: 'prologue_11',
speaker: "KAI",
text: "Ampak trupla ni bilo. To pomeni... mogoče živi. Moram jo najti!",
background: "farm",
bgColor: 0x2d4a1e,
portrait: "kai_determined"
},
{
id: 'prologue_12',
speaker: "NARRATOR",
text: "In tako se začne Kaijevo potovanje skozi Mrtvo dolino. Iskanje Ane. Iskanje upanja.",
text: "Šest mesecev kasneje. Kai se zbudi na majhni kmetiji. Ana je izginila.",
background: "farm",
bgColor: 0x2d4a1e,
portrait: null
},
{
id: 'prologue_12',
speaker: "KAI",
text: "Moram jo najti. Ne glede na to, kaj bo potrebno. Ana, prihajam!",
background: "farm",
bgColor: 0x2d4a1e,
portrait: "kai_determined"
}
];
}
@@ -265,10 +272,11 @@ class PrologueScene extends Phaser.Scene {
this.portraitBg = this.add.rectangle(width - 150, dialogueY + 90, 120, 120, 0x4a3520, 0.9);
this.portraitBg.setStrokeStyle(2, 0xd4a574);
this.portraitText = this.add.text(width - 150, dialogueY + 90, '', {
fontSize: '60px'
});
this.portraitText.setOrigin(0.5);
// Portrait image sprite (instead of emoji text)
this.portraitImage = this.add.sprite(width - 150, dialogueY + 90, 'kai_portrait');
this.portraitImage.setOrigin(0.5);
this.portraitImage.setDisplaySize(100, 100); // Fit in portrait box
this.portraitImage.setVisible(false);
// Background sprite (will be created per dialogue)
this.backgroundSprite = null;
@@ -428,31 +436,23 @@ class PrologueScene extends Phaser.Scene {
updatePortrait(portraitKey) {
if (!portraitKey) {
this.portraitBg.setVisible(false);
this.portraitText.setVisible(false);
this.portraitImage.setVisible(false);
return;
}
this.portraitBg.setVisible(true);
this.portraitText.setVisible(true);
this.portraitImage.setVisible(true);
// Simple emoji portraits for now
// TODO: Replace with actual character art
const portraits = {
'kai_neutral': '👨',
'kai_worried': '😟',
'kai_shocked': '😱',
'kai_pain': '😫',
'kai_confused': '😕',
'kai_determined': '😠',
'kai_anger': '😡',
'kai_realization': '🤔',
'ana_excited': '👩‍🔬',
'ana_serious': '😐',
'ana_determined': '💪',
'ana_pain': '😣'
};
this.portraitText.setText(portraits[portraitKey] || '❓');
// Map portrait keys to actual character images
// For now, all Kai variants use kai_portrait, all Ana use ana_portrait
if (portraitKey.startsWith('kai_')) {
this.portraitImage.setTexture('kai_portrait');
} else if (portraitKey.startsWith('ana_')) {
this.portraitImage.setTexture('ana_portrait');
} else {
// Default fallback
this.portraitImage.setVisible(false);
}
}
advanceDialogue() {