diff --git a/index.html b/index.html
index 8923f22..1705159 100644
--- a/index.html
+++ b/index.html
@@ -105,6 +105,7 @@
+
diff --git a/src/systems/StarterChestSystem.js b/src/systems/StarterChestSystem.js
new file mode 100644
index 0000000..6d3337c
--- /dev/null
+++ b/src/systems/StarterChestSystem.js
@@ -0,0 +1,128 @@
+/**
+ * Starter Chest System
+ * Generates seed-based random loot for new game
+ */
+
+class StarterChestSystem {
+ constructor(scene) {
+ this.scene = scene;
+ }
+
+ /**
+ * Generate seed-based random loot table
+ * @param {number} seed - Game seed (e.g., Date.now())
+ * @returns {Array} List of items {type, amount}
+ */
+ generateLoot(seed = Date.now()) {
+ // Simple seeded random generator (LCG)
+ let rng = seed;
+ const random = () => {
+ rng = (rng * 9301 + 49297) % 233280;
+ return rng / 233280;
+ };
+
+ const lootTable = [];
+
+ // GUARANTEED ITEMS (always spawn)
+ lootTable.push({ type: 'wheat_seed', amount: 10 + Math.floor(random() * 10) }); // 10-20 seeds
+ lootTable.push({ type: 'wood', amount: 5 + Math.floor(random() * 10) }); // 5-15 wood
+
+ // RANDOM ITEMS (50% chance each)
+ if (random() > 0.5) {
+ lootTable.push({ type: 'stone', amount: 3 + Math.floor(random() * 5) }); // 3-8 stone
+ }
+ if (random() > 0.5) {
+ lootTable.push({ type: 'bone', amount: 2 + Math.floor(random() * 4) }); // 2-6 bones
+ }
+ if (random() > 0.7) {
+ lootTable.push({ type: 'bread', amount: 1 + Math.floor(random() * 3) }); // 1-4 bread (food)
+ }
+
+ // RARE ITEMS (10% chance each)
+ if (random() > 0.9) {
+ lootTable.push({ type: 'iron', amount: 1 + Math.floor(random() * 2) }); // 1-3 iron
+ }
+ if (random() > 0.9) {
+ lootTable.push({ type: 'gold_coin', amount: 10 + Math.floor(random() * 20) }); // 10-30 gold
+ }
+
+ // ULTRA RARE (1% chance)
+ if (random() > 0.99) {
+ lootTable.push({ type: 'diamond', amount: 1 }); // 1 diamond!
+ }
+
+ console.log('🎁 Starter Chest Loot Generated:', lootTable);
+ return lootTable;
+ }
+
+ /**
+ * Place starter chest at farm location
+ * @param {number} x - Grid X position
+ * @param {number} y - Grid Y position
+ * @param {number} seed - Game seed
+ */
+ placeStarterChest(x, y, seed) {
+ // Generate loot
+ const lootItems = this.generateLoot(seed);
+
+ // Place chest structure (if TerrainSystem supports it)
+ if (this.scene.terrainSystem && this.scene.terrainSystem.placeStructure) {
+ // Check if placeStructure method exists
+ try {
+ this.scene.terrainSystem.placeStructure(x, y, 'chest');
+ console.log(`🎁 Starter Chest placed at (${x}, ${y})`);
+ } catch (e) {
+ console.warn('⚠️ placeStructure not available, chest not placed:', e);
+ }
+ }
+
+ // Store loot data globally for later retrieval
+ if (!window.gameState) window.gameState = {};
+ window.gameState.starterChestLoot = lootItems;
+ window.gameState.starterChestPosition = { x, y };
+
+ return lootItems;
+ }
+
+ /**
+ * Open chest and add items to player inventory
+ * @param {Object} player - Player object with inventory
+ */
+ openChest(player) {
+ if (!window.gameState || !window.gameState.starterChestLoot) {
+ console.warn('⚠️ No starter chest loot found!');
+ return;
+ }
+
+ const loot = window.gameState.starterChestLoot;
+
+ // Add items to player inventory
+ loot.forEach(item => {
+ if (player.inventory && player.inventory.addItem) {
+ player.inventory.addItem(item.type, item.amount);
+ console.log(`➕ Added ${item.amount}x ${item.type} to inventory`);
+ } else {
+ console.warn('⚠️ Player inventory not available');
+ }
+ });
+
+ // Show notification
+ if (this.scene.events) {
+ this.scene.events.emit('showFloatingText', {
+ x: window.gameState.starterChestPosition.x,
+ y: window.gameState.starterChestPosition.y,
+ text: '🎁 Starter Chest Opened!',
+ color: '#ffaa00'
+ });
+ }
+
+ // Clear loot (chest is now empty)
+ window.gameState.starterChestLoot = null;
+ console.log('✅ Starter Chest opened and emptied');
+ }
+}
+
+// Export for global use
+if (typeof module !== 'undefined' && module.exports) {
+ module.exports = StarterChestSystem;
+}