diff --git a/index.html b/index.html index cca179c..98e8042 100644 --- a/index.html +++ b/index.html @@ -1908,7 +1908,21 @@ if (hasLockpick) { if (confirm("Would you like to attempt picking this lock?")) { - startLockpickingMinigame(lockable, game.scene.scenes[0]); // Pass the main scene + let difficulty; + + // If this is a room-level lock, get difficulty from gameScenario + if (lockable.properties?.requires) { + // Find which room this lock belongs to + const roomId = Object.keys(gameScenario.rooms).find(roomId => { + const room = gameScenario.rooms[roomId]; + return room.requires === lockable.properties.requires; + }); + difficulty = roomId ? gameScenario.rooms[roomId].difficulty : null; + } + + // If not found, try object-level difficulty + difficulty = difficulty || lockable.scenarioData?.difficulty || lockable.properties?.difficulty; + startLockpickingMinigame(lockable, game.scene.scenes[0], difficulty); } } else { alert(`Requires key: ${requiredKey}`); @@ -3011,7 +3025,7 @@ scene.input.mouse.enabled = false; } - function startLockpickingMinigame(lockable, currentScene) { + function startLockpickingMinigame(lockable, currentScene, difficulty) { // Create iframe container const iframe = document.createElement('div'); iframe.style.cssText = ` @@ -3093,7 +3107,7 @@ gameContainer.addEventListener('mousedown', initAudio, { once: true }); // Add pin binding order and game state - const numPins = 5; + const numPins = getPinCountForDifficulty(difficulty); const bindingOrder = Array.from({length: numPins}, (_, i) => i) .sort(() => Math.random() - 0.5); @@ -3310,20 +3324,32 @@ // Add this function before the pin creation loop function checkWinCondition() { if (gameState.currentBindingIndex >= numPins) { - setTimeout(() => { - unlockTarget(lockable, 'door', lockable.layer); - alert("Lock successfully picked!"); - document.body.removeChild(iframe); - if (currentScene && currentScene.input && currentScene.input.mouse) { - currentScene.input.mouse.enabled = true; - } - }, 500); + unlockTarget(lockable, 'door', lockable.layer); + alert("Lock successfully picked!"); + document.body.removeChild(iframe); + if (currentScene && currentScene.input && currentScene.input.mouse) { + currentScene.input.mouse.enabled = true; + } return true; } return false; } } + // Add this function to get pin count based on difficulty + function getPinCountForDifficulty(difficulty) { + switch(difficulty?.toLowerCase()) { + case 'easy': + return 3; + case 'medium': + return 5; + case 'hard': + return 7; + default: + return 5; // Default to medium difficulty + } + } + \ No newline at end of file