diff --git a/index.html b/index.html index bc73ec2..94140f6 100644 --- a/index.html +++ b/index.html @@ -3173,6 +3173,21 @@ // Toggle tension levels (none -> light -> medium -> heavy -> none) gameState.tensionLevel = (gameState.tensionLevel + 1) % 4; updateTensionWrench(); + + // Check if we're over-tensioning - but only if we've started interacting with pins + if (gameState.tensionLevel === 3 && gameState.currentBindingIndex > 0) { + // 30% chance of over-tensioning with heavy pressure + if (Math.random() < 0.3) { + gameState.overTensioned = true; + tensionWrench.style.background = '#ff3333'; + tensionWrench.style.transform = 'rotate(15deg)'; + + setTimeout(() => { + alert("You applied too much tension and jammed the lock!"); + resetPins(); + }, 500); + } + } }; // Add this new function to update tension wrench visuals @@ -3261,14 +3276,12 @@ // Each pin has different tension requirements const pinIndex = Array.from(pinsContainer.children).indexOf(pin); const bindingPin = bindingOrder[gameState.currentBindingIndex]; - const needsHighTension = gameState.tensionSensitivity[pinIndex]; + const requiredTension = gameState.tensionRequirements[pinIndex]; // Check if this is the current binding pin if (pinIndex === bindingPin) { - // This pin needs the right tension level - const correctTension = needsHighTension ? - (gameState.tensionLevel === 2 || gameState.tensionLevel === 3) : // Needs medium/heavy - (gameState.tensionLevel === 1 || gameState.tensionLevel === 2); // Needs light/medium + // This pin needs exactly the right tension level + const correctTension = (gameState.tensionLevel === requiredTension); if (correctTension && !gameState.overTensioned) { if (!gameState.hardMode) { @@ -3279,9 +3292,7 @@ setTimeout(() => { if (pressStartTime !== 0) { // Still pressing // Double-check tension is still correct - const stillCorrectTension = needsHighTension ? - (gameState.tensionLevel === 2 || gameState.tensionLevel === 3) : - (gameState.tensionLevel === 1 || gameState.tensionLevel === 2); + const stillCorrectTension = (gameState.tensionLevel === requiredTension); if (stillCorrectTension && !gameState.overTensioned) { gameState.pinStates[pinIndex] = 2; @@ -3337,7 +3348,7 @@ pin.onmousedown = function() { const pinIndex = Array.from(pinsContainer.children).indexOf(this); const bindingPin = bindingOrder[gameState.currentBindingIndex]; - const needsHighTension = gameState.tensionSensitivity[pinIndex]; + const requiredTension = gameState.tensionRequirements[pinIndex]; // Call the original handler originalPinOnMouseDown.call(this); @@ -3423,7 +3434,14 @@ } // Add these to the gameState object (around line 3120) - gameState.tensionSensitivity = Array(numPins).fill(0).map(() => Math.random() < 0.3); + gameState.tensionRequirements = Array(numPins).fill(0).map(() => { + // Each pin requires a specific tension level (1, 2, or 3) + // 0 = no tension (not used), 1 = light, 2 = medium, 3 = heavy + const randomValue = Math.random(); + if (randomValue < 0.33) return 1; // Light tension + if (randomValue < 0.66) return 2; // Medium tension + return 3; // Heavy tension + }); gameState.tensionLevel = 0; // 0 = none, 1 = light, 2 = medium, 3 = heavy gameState.overTensioned = false; @@ -3441,8 +3459,8 @@ // Update tension wrench visuals updateTensionWrench(); - // Check if we're over-tensioning - if (gameState.tensionLevel === 3) { + // Check if we're over-tensioning - but only if we've started interacting with pins + if (gameState.tensionLevel === 3 && gameState.currentBindingIndex > 0) { // 30% chance of over-tensioning with heavy pressure if (Math.random() < 0.3) { gameState.overTensioned = true; @@ -3471,8 +3489,15 @@ // First, create entries for each binding position for (let orderIndex = 0; orderIndex < numPins; orderIndex++) { const pinIndex = bindingOrder[orderIndex]; - const needsHighTension = gameState.tensionSensitivity[pinIndex]; - const tensionNeeded = needsHighTension ? 'Medium/Heavy' : 'Light/Medium'; + const requiredTension = gameState.tensionRequirements[pinIndex]; + let tensionNeeded; + + switch(requiredTension) { + case 1: tensionNeeded = 'Light'; break; + case 2: tensionNeeded = 'Medium'; break; + case 3: tensionNeeded = 'Heavy'; break; + default: tensionNeeded = 'Unknown'; + } tableData.push({ 'Binding Order': orderIndex + 1, @@ -3488,7 +3513,21 @@ // Toggle tension levels (none -> light -> medium -> heavy -> none) gameState.tensionLevel = (gameState.tensionLevel + 1) % 4; updateTensionWrench(); - logTensionDebugInfo(); + + // Check if we're over-tensioning - but only if we've started interacting with pins + if (gameState.tensionLevel === 3 && gameState.currentBindingIndex > 0) { + // 30% chance of over-tensioning with heavy pressure + if (Math.random() < 0.3) { + gameState.overTensioned = true; + tensionWrench.style.background = '#ff3333'; + tensionWrench.style.transform = 'rotate(15deg)'; + + setTimeout(() => { + alert("You applied too much tension and jammed the lock!"); + resetPins(); + }, 500); + } + } }; function getColorForOrder(order) { @@ -3508,8 +3547,15 @@ // First, create entries for each binding position for (let orderIndex = 0; orderIndex < numPins; orderIndex++) { const pinIndex = bindingOrder[orderIndex]; - const needsHighTension = gameState.tensionSensitivity[pinIndex]; - const tensionNeeded = needsHighTension ? 'Medium/Heavy' : 'Light/Medium'; + const requiredTension = gameState.tensionRequirements[pinIndex]; + let tensionNeeded; + + switch(requiredTension) { + case 1: tensionNeeded = 'Light'; break; + case 2: tensionNeeded = 'Medium'; break; + case 3: tensionNeeded = 'Heavy'; break; + default: tensionNeeded = 'Unknown'; + } tableData.push({ 'Binding Order': orderIndex + 1, @@ -3525,34 +3571,16 @@ updateTensionWrench = function() { originalUpdateTensionWrench(); - // Log the current tension level - let tensionText; - switch(gameState.tensionLevel) { - case 0: tensionText = "NONE"; break; - case 1: tensionText = "LIGHT"; break; - case 2: tensionText = "MEDIUM"; break; - case 3: tensionText = "HEAVY"; break; - } - console.log(`Current Tension: ${tensionText}`); - // Log which pins can be set with current tension const settablePins = []; for (let i = 0; i < numPins; i++) { - const needsHighTension = gameState.tensionSensitivity[i]; - const correctTension = needsHighTension ? - (gameState.tensionLevel === 2 || gameState.tensionLevel === 3) : - (gameState.tensionLevel === 1 || gameState.tensionLevel === 2); + const requiredTension = gameState.tensionRequirements[i]; + const correctTension = (gameState.tensionLevel === requiredTension); if (correctTension) { settablePins.push(i + 1); } } - - if (settablePins.length > 0) { - console.log(`Pins that can be set with current tension: ${settablePins.join(', ')}`); - } else { - console.log('No pins can be set with current tension level'); - } }; }