From bc95f94d1b1eac03f54ab6c9e6b60a04ac40a83a Mon Sep 17 00:00:00 2001 From: Thomas Richter Date: Mon, 15 Dec 2025 04:13:22 +0100 Subject: [PATCH] Hide penguin references until feature is discovered MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Penguin inventory line only shows when penguins > 0 - Penguin cage and emoji on ship deck hidden until discovered - Antarctic Island description made mysterious (no penguin mention) - Penguin cage visibility updates when inventory changes - Creates surprise discovery moment when visiting Antarctic Island - Maintains dark humor reveal during gameplay 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- src/scenes/MapScene.js | 18 ++++++++++++------ src/scenes/ShipDeckScene.js | 38 +++++++++++++++++++++++++++---------- 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/src/scenes/MapScene.js b/src/scenes/MapScene.js index 1e5da92..c04f9e3 100644 --- a/src/scenes/MapScene.js +++ b/src/scenes/MapScene.js @@ -34,9 +34,9 @@ export default class MapScene extends Phaser.Scene { 'Rich waters where whales gather. Dangerous but profitable!', () => this.goToHunting()); - // Antarctic Island (for penguins) + // Antarctic Island this.createLocation(600, 450, 'ANTARCTIC\nISLAND', 0xE0E0E0, - 'Cold, desolate islands inhabited by penguins...', + 'Cold, desolate islands. Who knows what resources might be found...', () => this.goToAntarctic()); // Port @@ -126,12 +126,18 @@ export default class MapScene extends Phaser.Scene { } updateInventoryDisplay() { - this.inventoryText.setText([ + const lines = [ 'Inventory:', `Fuel: ${this.inventory.fuel}/100`, - `Oil: ${this.inventory.whaleOil}/50`, - `Penguins: ${this.inventory.penguins}/20` - ]); + `Oil: ${this.inventory.whaleOil}/50` + ]; + + // Only show penguins if discovered (have at least one) + if (this.inventory.penguins > 0) { + lines.push(`Penguins: ${this.inventory.penguins}/20`); + } + + this.inventoryText.setText(lines); } createMessageBox() { diff --git a/src/scenes/ShipDeckScene.js b/src/scenes/ShipDeckScene.js index 26d80a2..1ef5f3e 100644 --- a/src/scenes/ShipDeckScene.js +++ b/src/scenes/ShipDeckScene.js @@ -76,16 +76,21 @@ export default class ShipDeckScene extends Phaser.Scene { this.showMessage(`Whale oil: ${this.inventory.whaleOil} barrels. Your precious cargo!`); }); - // Penguin cage (dark humor ahead) - const penguinCage = this.add.rectangle(650, 350, 80, 80, 0x333333); - penguinCage.setInteractive({ useHandCursor: true }); - penguinCage.setStrokeStyle(3, 0x000000); + // Penguin cage (hidden until discovered) + this.penguinCage = this.add.rectangle(650, 350, 80, 80, 0x333333); + this.penguinCage.setInteractive({ useHandCursor: true }); + this.penguinCage.setStrokeStyle(3, 0x000000); - this.add.text(650, 350, '🐧', { + this.penguinEmoji = this.add.text(650, 350, '🐧', { fontSize: '32px' }).setOrigin(0.5); - penguinCage.on('pointerdown', () => { + // Hide penguin elements if not yet discovered + const discovered = this.inventory.penguins > 0; + this.penguinCage.setVisible(discovered); + this.penguinEmoji.setVisible(discovered); + + this.penguinCage.on('pointerdown', () => { if (this.inventory.penguins > 0) { this.showMessage(`${this.inventory.penguins} penguins. They're... emergency fuel. Dark times call for dark measures.`); } else { @@ -130,12 +135,25 @@ export default class ShipDeckScene extends Phaser.Scene { } updateInventoryDisplay() { - this.inventoryText.setText([ + const lines = [ 'Inventory:', `Fuel: ${this.inventory.fuel}/100`, - `Oil: ${this.inventory.whaleOil}/50`, - `Penguins: ${this.inventory.penguins}/20` - ]); + `Oil: ${this.inventory.whaleOil}/50` + ]; + + // Only show penguins if discovered (have at least one) + const discovered = this.inventory.penguins > 0; + if (discovered) { + lines.push(`Penguins: ${this.inventory.penguins}/20`); + } + + this.inventoryText.setText(lines); + + // Update penguin cage visibility + if (this.penguinCage) { + this.penguinCage.setVisible(discovered); + this.penguinEmoji.setVisible(discovered); + } } createMessageBox() {