diff --git a/index.html b/index.html
index ed01033..30c20cf 100644
--- a/index.html
+++ b/index.html
@@ -3063,6 +3063,27 @@
padding: 10px;
`;
+ // Add difficulty selection
+ const difficultySelect = document.createElement('select');
+ difficultySelect.style.cssText = `
+ margin-bottom: 10px;
+ padding: 5px;
+ background: #444;
+ color: white;
+ border: 1px solid #666;
+ border-radius: 3px;
+ `;
+ const difficulties = ['Easy - Pins Visible', 'Hard - Audio Only'];
+ difficulties.forEach(diff => {
+ const option = document.createElement('option');
+ option.value = diff;
+ option.textContent = diff;
+ difficultySelect.appendChild(option);
+ });
+
+ // Add audio feedback
+ const clickSound = new Audio('data:audio/wav;base64,UklGRnoGAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQoGAACBhYqFbF1fdH2Dam9ycG5wdX2Dg4CBhIWCgX+Af4B/goCDgIJ/gn+BfoF/gn+CgIF/gn+Cf4F/g4CDgIJ/hIGFgoWBhYKGgoaCh4OIg4mEioWLhIyFjYaOhI+FkIaRhZKGk4eUhpWHloeXiJiImYiaiZuKnIqdi56LoIyhjaKOo4+kj6WQppGnkqiTqZSqlauWrJetmK6Zr5qwm7GcsZ2yn7OgtKG1oraitqO3pLiltqe4qLmpuqq7q7ysvq2/rsCwwbHCssOzxbTGtce2yLfJuMq5y7rMu827zrzPvdC+0b/SwdPC1MPVxNbF18bYx9nI2sjbydvK3Mvdy97M383gzuHP4tDj0eTT5dTm1efW6Nfp2Ora69vt3O7d797w3/Lh8+P05fXn9+j46Prs+/D89v77AQYHDA8VGh8lKi8zOD1CRkpPVFhbX2NobHBydHZ4enx+gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==');
+
// Add close button
const closeButton = document.createElement('button');
closeButton.textContent = 'X';
@@ -3091,8 +3112,9 @@
// Track game state
const gameState = {
tensionApplied: false,
- pinStates: Array(numPins).fill(0), // 0 = down, 1 = binding, 2 = set
- currentBindingIndex: 0
+ pinStates: Array(numPins).fill(0),
+ currentBindingIndex: 0,
+ hardMode: false
};
// Create tension wrench toggle
@@ -3138,10 +3160,12 @@
function updatePinVisual(index) {
const pin = pinsContainer.children[index];
- switch (gameState.pinStates[index]) {
- case 0: pin.style.background = '#555'; break; // Down
- case 1: pin.style.background = '#00f'; break; // Binding
- case 2: pin.style.background = '#0f0'; break; // Set
+ if (!gameState.hardMode) {
+ switch (gameState.pinStates[index]) {
+ case 0: pin.style.background = '#555'; break; // Down
+ case 1: pin.style.background = '#00f'; break; // Binding
+ case 2: pin.style.background = '#0f0'; break; // Set
+ }
}
}
@@ -3171,15 +3195,21 @@
pin.appendChild(pinNumber);
pin.onmousedown = () => {
- if (!gameState.tensionApplied) return; // Pins only move with tension
+ if (!gameState.tensionApplied) return;
const bindingPin = bindingOrder[gameState.currentBindingIndex];
if (i === bindingPin) {
- gameState.pinStates[i] = 2; // Set
+ gameState.pinStates[i] = 2;
gameState.currentBindingIndex++;
- pin.style.background = '#0f0'; // Green for set
- // Check win condition
+ // Play success click sound
+ clickSound.currentTime = 0; // Reset sound to start
+ clickSound.play().catch(e => console.log('Audio play failed:', e));
+
+ if (!gameState.hardMode) {
+ pin.style.background = '#0f0';
+ }
+
if (gameState.currentBindingIndex >= numPins) {
setTimeout(() => {
unlockTarget(lockable, 'door', lockable.layer);
@@ -3191,8 +3221,10 @@
}, 500);
}
} else {
- gameState.pinStates[i] = 1; // Binding
- pin.style.background = '#00f'; // Blue for binding
+ gameState.pinStates[i] = 1;
+ if (!gameState.hardMode) {
+ pin.style.background = '#00f';
+ }
}
};
@@ -3206,7 +3238,16 @@
pinsContainer.appendChild(pin);
}
+ difficultySelect.onchange = () => {
+ gameState.hardMode = difficultySelect.value.includes('Hard');
+ // Update pin visibility
+ Array.from(pinsContainer.children).forEach(pin => {
+ pin.style.opacity = gameState.hardMode ? '0.1' : '1';
+ });
+ };
+
// Add components to game container
+ gameContainer.appendChild(difficultySelect);
gameContainer.appendChild(tensionWrench);
gameContainer.appendChild(pinsContainer);