Code edit (1 edits merged)
Please save this source code
User prompt
Replace with: function splitReviewIntoSections(reviewText) { var lines = reviewText.split('\n'); var sections = []; var currentSection = null; for (var i = 0; i < lines.length; i++) { var line = lines[i].trim(); // Skip empty lines if (line === '') { continue; } // Determine section type based on content var sectionType = 'paragraph'; if (i === 0) { // First line contains concept words - identify as title sectionType = 'title'; } else if (line.startsWith('GAME: ')) { // Game name is the actual title we want to display prominently sectionType = 'gameName'; line = line.substring(6); // Remove the "GAME: " prefix } else if (line.match(/^Game Concept:/)) { sectionType = 'concept'; } else if (line.match(/^[A-Za-z]+ Review - \d+%$/)) { sectionType = 'source'; } else if (line.match(/^(Graphics|Gameplay|Technical Performance|Innovation|Vibe Factor): \d+\/10$/)) { sectionType = 'categoryHeading'; } else if (line === 'Final Thoughts' || line === 'Notable Features' || line === 'Notable Achievements') { sectionType = 'sectionHeading'; } else if (line.startsWith('"') && line.includes('" - ')) { sectionType = 'userReview'; } else if (line.startsWith('▶')) { sectionType = 'steamReview'; } else if (line.startsWith('r/gaming hot takes:')) { sectionType = 'sectionHeading'; // Make Reddit reviews header a section heading } else if (line.startsWith('"') && line.includes('u/')) { sectionType = 'redditReview'; // New type for Reddit reviews } else if (line === '"AI slop."') { sectionType = 'redditReview'; // Special case for "AI slop" comments } else if (line.startsWith('- ')) { // Check previous sections to determine if this is a feature or achievement var prevSectionType = currentSection ? currentSection.type : ''; if (prevSectionType === 'sectionHeading' && sections[sections.length - 1].text === 'Notable Features') { sectionType = 'features'; } else if (prevSectionType === 'sectionHeading' && sections[sections.length - 1].text === 'Notable Achievements') { sectionType = 'achievements'; } else if (prevSectionType === 'features' || prevSectionType === 'achievements') { sectionType = prevSectionType; // Continue with previous type for bullet points } } // If this is a new section type or first line, start a new section if (!currentSection || sectionType !== currentSection.type) { if (currentSection) { sections.push(currentSection); } currentSection = { type: sectionType, text: line }; } else { // Continue the current section currentSection.text += '\n' + line; } } // Add the last section if exists if (currentSection) { sections.push(currentSection); } return sections; }
Code edit (7 edits merged)
Please save this source code
User prompt
Replace with: function formatReview(review) { // Generate a random review source var reviewSources = ["GameDevWeekly", "PixelPerfect", "IndieGameMag", "NextLevelGaming", "VirtualHorizon", "GameCritiqueHub", "DigitalPlayground"]; // Select a random source var source = reviewSources[Math.floor(Math.random() * reviewSources.length)]; // Use the actual calculated score from the review object var displayScore = review.mainScore; // Generate all three review types var userReviews = review.userReviews; var steamSnippets = review.steamSnippets; var redditReviews = generateRedditReviews(); // Randomly choose which two review types to include var reviewTypes = [ { type: "user", content: userReviews }, { type: "steam", content: steamSnippets }, { type: "reddit", content: redditReviews } ]; // Shuffle and take the first two reviewTypes = shuffleArray(reviewTypes); var selectedReviews = reviewTypes.slice(0, 2); // Combine the selected reviews with appropriate spacing var combinedReviews = selectedReviews.map(function(review) { return review.content; }).join("\n\n"); return review.title + "\n" + "GAME: '" + review.gameName + "'\n" + review.concept + "\n" + source + " Review - " + displayScore + "%\n\n" + review.categoryReviews.graphics + review.categoryReviews.gameplay + review.categoryReviews.technical + review.categoryReviews.innovation + review.categoryReviews.vibe + generateFeaturesSection() + generateAchievementSection(review.mainScore) + review.finalThoughts + "\n" + combinedReviews; }
Code edit (1 edits merged)
Please save this source code
Code edit (3 edits merged)
Please save this source code
User prompt
Update createasciibug with: // Make interactive for clicking/tapping bugContainer.interactive = true; bugContainer.down = function () { //Prevent double-squishing by checking flag first if (bugContainer.squished) { return; } console.log("Bug squished!"); // Bug squished! bugContainer.squished = true; // Stop movement immediately bugContainer.velocityX = 0; bugContainer.velocityY = 0; bugContainer.speed = 0; // Visual squish effect bugText.setText("*splat*"); LK.getSound('bugsquish').play(); bugText.fill = 0x00FF00; // Turn green when squished // CRITICAL FIX: Immediately reduce bug count, not in timeout gameState.bugs = Math.max(0, gameState.bugs - 1); // Remove after brief delay LK.setTimeout(function () { if (bugContainer.parent) { bugContainer.parent.removeChild(bugContainer); } // Just update terminal with new count, don't modify count again addToTerminalLogWithEffect("Bug successfully squashed! Bugs remaining: " + gameState.bugs); updateTerminal(); // If this is a party bug, check if party is complete if (gameState.activeBugParty) { checkBugPartyComplete(); } }, 800); };
User prompt
Replace with: function startBugReleaseParty() { // Create all existing bugs on screen gameState.activeBugParty = true; game.activeBugPartyBugs = []; // Track all party bugs // Save the current bug count to ensure correct number released var bugsToRelease = gameState.bugs; console.log("Starting bug party with " + bugsToRelease + " bugs"); // Critical fix: If no bugs, don't start a party at all if (bugsToRelease <= 0) { console.log("No bugs to release, skipping party"); gameState.activeBugParty = false; gameState.isBusy = false; updateCommandButtonsState(true); return "No bugs to release!"; } // Clear any existing party reset timer if (gameState.bugPartyResetTimer) { LK.clearTimeout(gameState.bugPartyResetTimer); } // Set safety timeout to force end the party if it gets stuck gameState.bugPartyResetTimer = LK.setTimeout(function() { console.log("Bug party safety timeout triggered"); forceBugPartyEnd(); }, 10000); // 10 seconds for (var i = 0; i < bugsToRelease; i++) { createBugWithProperTracking(i); } gameState.isBusy = true; updateCommandButtonsState(false); return "Released " + bugsToRelease + " bugs! Quick, squish them!"; }
User prompt
Replace with: function checkBugPartyComplete() { // Skip check if party already ended if (!gameState.activeBugParty) { console.log("Party already ended, skipping check"); return; } if (!game.activeBugPartyBugs) { console.log("Bug array missing, forcing party end"); forceBugPartyEnd(); return; } // Count active bugs var activeBugs = 0; for (var i = 0; i < game.activeBugPartyBugs.length; i++) { var bug = game.activeBugPartyBugs[i]; if (bug && bug.parent && !bug.squished && bug.escapeTimer > 0) { activeBugs++; } } console.log("Active bugs remaining: " + activeBugs); // If no active bugs remain, end the party if (activeBugs === 0) { console.log("No active bugs left, ending party"); completeBugParty(); } }
Code edit (1 edits merged)
Please save this source code
User prompt
Update as needed with: function startBugReleaseParty() { // ... existing code ... // Add safety timeout to reset if party gets stuck LK.setTimeout(function() { if (gameState.activeBugParty) { resetBugParty(); } }, 30000); // 30 second auto-reset // ... rest of existing code ... }
User prompt
Update only as needed with: function resetBugParty() { if (gameState.activeBugParty) { console.log("Resetting stuck bug party"); // Clear any remaining bugs if (game.activeBugPartyBugs) { game.activeBugPartyBugs.forEach(function(bug) { if (bug && bug.parent) { bug.parent.removeChild(bug); } }); } // Reset party state gameState.activeBugParty = false; gameState.isBusy = false; game.activeBugPartyBugs = null; updateCommandButtonsState(true); // Notify user addToTerminalLogWithEffect("Bug party reset due to stuck state. Commands enabled again."); } }
User prompt
Update as needed with: function checkBugPartyComplete() { // Defensive checks if (!gameState.activeBugParty) { console.log("Bug party not active, skipping check"); return; } if (!game.activeBugPartyBugs) { console.log("No active bug party bugs array, ending party"); gameState.activeBugParty = false; gameState.isBusy = false; updateCommandButtonsState(true); return; } // Clean up any null entries game.activeBugPartyBugs = game.activeBugPartyBugs.filter(function(bug) { return bug !== null && bug !== undefined; }); // Count active bugs (not squished and still have time) var activeBugs = game.activeBugPartyBugs.filter(function (bug) { return bug && bug.parent && !bug.squished && bug.escapeTimer > 0; }); console.log("Active party bugs:", activeBugs.length, "Total tracked:", game.activeBugPartyBugs.length); if (activeBugs.length === 0) { console.log("No active bugs remaining, ending party"); // All bugs handled gameState.activeBugParty = false; gameState.isBusy = false; game.activeBugPartyBugs = null; updateCommandButtonsState(true); addToTerminalLogWithEffect("Bug party ended! Commands enabled again."); } }
User prompt
Update as needed with: function startBugReleaseParty() { // Create all existing bugs on screen gameState.activeBugParty = true; game.activeBugPartyBugs = []; // Track all party bugs // Save the current bug count to ensure correct number released var bugsToRelease = gameState.bugs; // Debug message to verify correct count console.log("Starting bug party with " + bugsToRelease + " bugs"); // Create bugs only if there are bugs to release if (bugsToRelease <= 0) { // No bugs to release, end party immediately gameState.activeBugParty = false; gameState.isBusy = false; updateCommandButtonsState(true); return "No bugs to release!"; } for (var i = 0; i < bugsToRelease; i++) { (function (index) { // Use index to track bug creation // Create a closure to capture the right bug var bug = createASCIIBug(); game.addChild(bug); game.activeBugPartyBugs.push(bug); // Give bugs extra time to escape bug.escapeTimer = 800; // Store original down handler var originalDown = bug.down; // Override the down handler with proper closure bug.down = function () { // Call original down on THIS bug, not any closure bug originalDown.call(this); // After a brief delay, check if party is complete LK.setTimeout(function() { checkBugPartyComplete(); }, 50); }; // Update interval with proper reference to this specific bug var thisBug = bug; // Ensure reference doesn't change var bugUpdateInterval = LK.setInterval(function () { if (thisBug && thisBug.update && !thisBug.squished && thisBug.escapeTimer > 0) { thisBug.update(1 / 60); } else { // Clear this bug's interval LK.clearInterval(bugUpdateInterval); // After a brief delay, check if party is complete LK.setTimeout(function() { checkBugPartyComplete(); }, 50); } }, 16); console.log("Created bug " + index + " for party"); })(i); // Pass index to closure } gameState.isBusy = true; updateCommandButtonsState(false); return "Released " + bugsToRelease + " bugs! Quick, squish them!"; }
User prompt
Update as needed with: function startBugReleaseParty() { // Create all existing bugs on screen gameState.activeBugParty = true; game.activeBugPartyBugs = []; // Track all party bugs // Save the current bug count to ensure correct number released var bugsToRelease = gameState.bugs; // Debug message to verify correct count console.log("Starting bug party with " + bugsToRelease + " bugs"); // Create bugs only if there are bugs to release if (bugsToRelease <= 0) { // No bugs to release, end party immediately gameState.activeBugParty = false; gameState.isBusy = false; updateCommandButtonsState(true); return "No bugs to release!"; } for (var i = 0; i < bugsToRelease; i++) { (function (index) { // Use index to track bug creation // Create a closure to capture the right bug var bug = createASCIIBug(); game.addChild(bug); game.activeBugPartyBugs.push(bug); // Give bugs extra time to escape bug.escapeTimer = 800; // Store original down handler var originalDown = bug.down; // Override the down handler with proper closure bug.down = function () { // Call original down on THIS bug, not any closure bug originalDown.call(this); // After a brief delay, check if party is complete LK.setTimeout(function() { checkBugPartyComplete(); }, 50); }; // Update interval with proper reference to this specific bug var thisBug = bug; // Ensure reference doesn't change var bugUpdateInterval = LK.setInterval(function () { if (thisBug && thisBug.update && !thisBug.squished && thisBug.escapeTimer > 0) { thisBug.update(1 / 60); } else { // Clear this bug's interval LK.clearInterval(bugUpdateInterval); // After a brief delay, check if party is complete LK.setTimeout(function() { checkBugPartyComplete(); }, 50); } }, 16); console.log("Created bug " + index + " for party"); })(i); // Pass index to closure } gameState.isBusy = true; updateCommandButtonsState(false); return "Released " + bugsToRelease + " bugs! Quick, squish them!"; }
User prompt
Update only at needed with: bugContainer.down = function () { // Prevent double-squishing by checking flag first if (bugContainer.squished) { return; } // Bug squished! bugContainer.squished = true; // Stop movement immediately bugContainer.velocityX = 0; bugContainer.velocityY = 0; bugContainer.speed = 0; // Visual squish effect bugText.setText("*splat*"); LK.getSound('bugsquish').play(); bugText.fill = 0x00FF00; // Turn green when squished // Immediately decrement bug count (don't wait for timeout) gameState.bugs = Math.max(0, gameState.bugs - 1); // Remove after brief delay LK.setTimeout(function () { if (bugContainer.parent) { bugContainer.parent.removeChild(bugContainer); } // Only update the display, bug count already updated addToTerminalLogWithEffect("Bug successfully squashed! Bugs remaining: " + gameState.bugs); updateTerminal(); }, 800); };
User prompt
Update as needed with: function handlePostMessageSetup() { updateTerminal(); // Clear any existing command prompts if (gameState.promptContainer) { game.removeChild(gameState.promptContainer); gameState.promptContainer = null; } if (needsHallucination) { gameState.isBusy = true; // ... hallucination setup ... } else if (isConceptDay) { gameState.isBusy = true; gameState.currentCommands = null; // ... concept day setup ... } else { // Explicitly generate new commands regardless of hallucination mode // for the new day gameState.currentCommands = getCurrentCommands(); createCommandPrompts(); checkGameState(); } }
User prompt
Update as needed with: function createCommandPrompts() { // Remove existing prompt container if (gameState.promptContainer) { game.removeChild(gameState.promptContainer); } // Create new container var promptContainer = new Container(); promptContainer.x = 2048 / 2; promptContainer.y = 2732 * 0.75; game.addChild(promptContainer); gameState.promptContainer = promptContainer; // Initialize commands if needed // For normal gameplay, don't generate new commands in hallucination mode // But for day transitions (when currentCommands is explicitly null), always generate if (!gameState.currentCommands) { gameState.currentCommands = getCurrentCommands(); } // Rest of function remains the same... }
User prompt
Update as needed with: function processEndDaySequence() { gameState.day++; // ... other code ... function handlePostMessageSetup() { updateTerminal(); // Clear any existing command prompts if (gameState.promptContainer) { game.removeChild(gameState.promptContainer); gameState.promptContainer = null; } if (needsHallucination) { gameState.isBusy = true; // ... hallucination setup ... } else if (isConceptDay) { gameState.isBusy = true; gameState.currentCommands = null; // ... concept day setup ... } else { // Explicitly generate new commands regardless of hallucination mode // for the new day gameState.currentCommands = getCurrentCommands(); createCommandPrompts(); checkGameState(); } } // ... rest of function ... }
User prompt
Update as needed with: function processEndDaySequence() { gameState.day++; // ... other code ... function handlePostMessageSetup() { updateTerminal(); // Clear any existing command prompts if (gameState.promptContainer) { game.removeChild(gameState.promptContainer); gameState.promptContainer = null; } if (needsHallucination) { gameState.isBusy = true; // ... hallucination setup ... } else if (isConceptDay) { gameState.isBusy = true; gameState.currentCommands = null; // ... concept day setup ... } else { gameState.currentCommands = null; // This is the problem! createCommandPrompts(); checkGameState(); } } // ... rest of function ... }
User prompt
Update as needed with: function enterHallucinationState() { if (gameState.hallucinationMode) { updateTerminal(); gameState.isBusy = false; updateCommandButtonsState(true); if (gameState.onHallucinationComplete) { var callback = gameState.onHallucinationComplete; gameState.onHallucinationComplete = null; callback(); } return; } gameState.hallucinationMode = true; var wasBusy = gameState.isBusy; gameState.isBusy = true; updateCommandButtonsState(false); applyHallucinationVisuals(); addToTerminalLogWithEffect("WaRnInG: SyStEm EnTeRiNg HaLlUcInAtIoN mOdE", function () { LK.setTimeout(function () { addToTerminalLogWithEffect("Ai TaKiNg OvEr CoNcEpT sElEcTiOnS", function () { LK.setTimeout(function () { addToTerminalLogWithEffect("ReAlItY cOhErEnCe CoMpRoMiSeD", function () { gameState.codeCoherence = 5; updateTerminal(); LK.setTimeout(function () { // Check if we're at command limit - if so, don't generate commands if (gameState.commandsUsed >= gameState.maxCommandsPerDay) { gameState.isBusy = false; updateCommandButtonsState(true); createCommandPrompts(); // Just update button states } else if (gameState.currentCommands === null) { // Day end path gameState.isBusy = false; if (gameState.onHallucinationComplete) { var callback = gameState.onHallucinationComplete; gameState.onHallucinationComplete = null; callback(); } } else { // Normal gameplay path gameState.isBusy = false; updateCommandButtonsState(true); // Don't generate new commands if we already have some if (!gameState.currentCommands) { gameState.currentCommands = getCurrentCommands(); createCommandPrompts(); } } }, 300); }); }, 500); }); }, 500); }); }
User prompt
Update as needed with: function checkGameState() { // Check if we need hallucination mode var needsHallucination = !gameState.hallucinationMode && (gameState.bugs >= 10 || gameState.codeCoherence <= 0); // Handle daily command limit if (gameState.commandsUsed >= gameState.maxCommandsPerDay) { var hasShownLimitMessage = gameState.terminal.log.some(function (entry) { return entry && entry.includes("Daily command limit reached"); }); if (!hasShownLimitMessage) { gameState.isBusy = true; addToTerminalLogWithEffect("NOTICE: Daily command limit reached. END DAY to continue.", function () { gameState.isBusy = false; createCommandPrompts(); // After showing the limit message, check if we also need hallucination if (needsHallucination) { enterHallucinationState(); } }); } else { // Message already shown gameState.isBusy = false; createCommandPrompts(); // Also check if we need hallucination if (needsHallucination) { enterHallucinationState(); } } } else if (needsHallucination) { // Only enter hallucination if we haven't hit the daily limit gameState.onHallucinationComplete = function () { gameState.currentCommands = getCurrentCommands(); createCommandPrompts(); updateCommandButtonsState(true); }; enterHallucinationState(); } }
Code edit (1 edits merged)
Please save this source code
User prompt
Update with: function completeCommand() { // Update terminal updateTerminal(); // Clear busy flag gameState.isBusy = false; // Always recreate command prompts to update button states createCommandPrompts(); // Let checkGameState handle the limit notification checkGameState(); }
User prompt
Replace with: function checkGameState() { // Only trigger hallucination if we're not already in it if (!gameState.hallucinationMode && (gameState.bugs >= 10 || gameState.codeCoherence <= 0)) { // Set up callback for when hallucination processing completes gameState.onHallucinationComplete = function () { // Generate new commands after hallucination gameState.currentCommands = getCurrentCommands(); createCommandPrompts(); updateCommandButtonsState(true); }; // Enter hallucination state enterHallucinationState(); return; } if (gameState.commandsUsed >= gameState.maxCommandsPerDay) { // Check if we've already shown the daily limit message var hasShownLimitMessage = gameState.terminal.log.some(function (entry) { return entry && entry.includes("Daily command limit reached"); }); if (!hasShownLimitMessage) { // Set isBusy to true to prevent clicks during typing gameState.isBusy = true; addToTerminalLogWithEffect("NOTICE: Daily command limit reached. END DAY to continue.", function () { // Once message is fully displayed, enable the END DAY button gameState.isBusy = false; // Force rebuild prompts to ensure END DAY is enabled createCommandPrompts(); }); } else { // If message already exists, just rebuild the prompts gameState.isBusy = false; createCommandPrompts(); } } }
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Initialize Game ****/ // Core game setup with improved text sizes /**** * Core Game Systems ****/ // Initialize game object var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Text size multiplier for readability //resetGameProgress(); function _typeof2(o) { "@babel/helpers - typeof"; return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof2(o); } function _defineProperty2(e, r, t) { return (r = _toPropertyKey2(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey2(t) { var i = _toPrimitive2(t, "string"); return "symbol" == _typeof2(i) ? i : i + ""; } function _toPrimitive2(t, r) { if ("object" != _typeof2(t) || !t) { return t; } var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof2(i)) { return i; } throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _toConsumableArray3(r) { return _arrayWithoutHoles3(r) || _iterableToArray3(r) || _unsupportedIterableToArray3(r) || _nonIterableSpread3(); } function _nonIterableSpread3() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray3(r, a) { if (r) { if ("string" == typeof r) { return _arrayLikeToArray3(r, a); } var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray3(r, a) : void 0; } } function _iterableToArray3(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) { return Array.from(r); } } function _arrayWithoutHoles3(r) { if (Array.isArray(r)) { return _arrayLikeToArray3(r); } } function _arrayLikeToArray3(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) { n[e] = r[e]; } return n; } function _toConsumableArray2(r) { return _arrayWithoutHoles2(r) || _iterableToArray2(r) || _unsupportedIterableToArray2(r) || _nonIterableSpread2(); } function _nonIterableSpread2() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray2(r, a) { if (r) { if ("string" == typeof r) { return _arrayLikeToArray2(r, a); } var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray2(r, a) : void 0; } } function _iterableToArray2(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) { return Array.from(r); } } function _arrayWithoutHoles2(r) { if (Array.isArray(r)) { return _arrayLikeToArray2(r); } } function _arrayLikeToArray2(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) { n[e] = r[e]; } return n; } function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) { return _arrayLikeToArray(r, a); } var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) { return Array.from(r); } } function _arrayWithoutHoles(r) { if (Array.isArray(r)) { return _arrayLikeToArray(r); } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) { n[e] = r[e]; } return n; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) { return t; } var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) { return i; } throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var TEXT_SIZE_MULTIPLIER = 2; // Game states var STATES = { TITLE: 'title', PLAYING: 'playing', GAME_OVER: 'gameOver' }; // Wheel effect definitions var WHEEL_EFFECTS = { COHERENCE_SMALL: { name: "Minor Code Stabilization", text: "Code coherence +10", weight: 30, execute: function execute() { gameState.codeCoherence = Math.min(100, gameState.codeCoherence + 10); return "Code coherence increased by 10"; } }, COHERENCE_MEDIUM: { name: "Major Code Stabilization", text: "Code coherence +20", weight: 20, execute: function execute() { gameState.codeCoherence = Math.min(100, gameState.codeCoherence + 20); return "Code coherence increased by 20"; } }, COHERENCE_LARGE: { name: "Massive Code Stabilization", text: "Code coherence +30", weight: 10, execute: function execute() { gameState.codeCoherence = Math.min(100, gameState.codeCoherence + 30); return "Code coherence increased by 30"; } }, // Add these new coherence prizes: COHERENCE_BIGGER: { name: "System-Wide Refactor", text: "Code coherence +40", weight: 8, execute: function execute() { gameState.codeCoherence = Math.min(100, gameState.codeCoherence + 40); return "Code coherence increased by 40"; } }, COHERENCE_HUGE: { name: "Code Architecture Overhaul", text: "Code coherence +50", weight: 5, execute: function execute() { gameState.codeCoherence = Math.min(100, gameState.codeCoherence + 50); return "Code coherence increased by 50"; } }, COHERENCE_EXTREME: { name: "Complete Codebase Reimplementation", text: "Code coherence +60", weight: 3, execute: function execute() { gameState.codeCoherence = Math.min(100, gameState.codeCoherence + 60); return "Code coherence increased by 60"; } }, BUG_REMOVE_ONE: { name: "Bug Extermination", text: "Remove 1 bug", weight: 25, execute: function execute() { if (gameState.bugs > 0) { gameState.bugs--; return "1 bug automatically removed"; } return "No bugs to remove"; } }, BUG_REMOVE_TWO: { name: "Double Bug Extermination", text: "Remove 2 bugs", weight: 15, execute: function execute() { if (gameState.bugs >= 2) { gameState.bugs -= 2; return "2 bugs automatically removed"; } else if (gameState.bugs === 1) { gameState.bugs--; return "1 bug removed (not enough bugs for full effect)"; } return "No bugs to remove"; } }, BUG_RELEASE: { name: "Bug Release Party!", text: "All bugs appear for squishing!", weight: 20, execute: function execute() { return startBugReleaseParty(); } }, VIBE_BONUS: { name: "Vibe Resonance", text: "Bonus vibe points!", weight: 10, execute: function execute() { // Need to calculate current cost here var currentCost = gameState.vibeBoostCost + gameState.vibeBoostUses * 5; var bonus = Math.floor(currentCost * 1.5); gameState.vibePoints += bonus; return "Gained ".concat(bonus, " bonus vibe points!"); } }, NEGATIVE: { name: "Vibe Disruption", text: "Uh oh...", weight: 5, execute: function execute() { gameState.bugs++; return "Oops! Spawned an extra bug!"; } } }; // Game state object var gameState = { state: STATES.TITLE, day: 1, maxDays: 10, vibePoints: 0, codeCoherence: 100, bugs: 0, commandsUsed: 0, maxCommandsPerDay: 3, terminal: { log: [], statusLine: "", currentTask: "", featureTags: [] }, conceptCards: { platform: null, visual: null, genre: null, mechanic: null, feature: null }, cursorTracking: { lineCount: 0 // Track the exact number of lines }, isBusy: false, // Flag to prevent overlapping command executions hallucinationMode: false // Flag for hallucination state }; // Add to game state var playerProgress = { gamesCompleted: Number(storage.gamesCompleted || 0) }; // Concept options var conceptOptions = { platform: ["Mobile", "VR", "Console", "PC", "Web Browser", "Blockchain", "Smart Fridge", "Smart Watch", "Metaverse"], visual: ["Pixel Art", "ASCII", "Hand-drawn", "PowerPoint", "Low-poly", "Claymation", "Realistic", "Voxel", "Demake"], genre: ["Horror", "Dating Sim", "RPG", "Educational", "Battle Royale", "Idle Clicker", "Open World", "Casual", "Shooter"], mechanic: ["Gacha", "Physics-based", "Deckbuilding", "Match-3", "Auto-battler", "Dungeon Crawler", "Roguelike", "Turn-Based", "Tower Defense"], feature: ["Cloud Save", "Microtransactions", "AI Companions", "Procedural Generation", "NFT Integration", "Multiplayer", "VR Support", "Cross-Platform", "Offline Mode"] }; var commandTiers = { novice: { vibeMultiplier: 1.0, coherenceMultiplier: 1.15, bugChanceMultiplier: 1.0, baseVibe: 7, baseCoherence: -12, baseBugChance: 0.3, commands: [ // Original 10 { text: "Make it good", responses: [{ normal: ["Analyzing 'good' parameters...", "Initializing quality vectors...", "Calibrating excellence metrics...", "SUCCESS: Project goodness increased by 15%"], degraded: ["WARNING: 'Good' becoming subjective", "ALERT: Quality vectors questioning their purpose", "NOTICE: Excellence has become self-aware", "SUCCESS(?): Project has transcended conventional metrics of 'good'", "NOTE: Your code may now be writing poetry instead of executing"] }], ascii: ["[GOOD (◕‿◕)]"] }, { text: "Add more fun to the game", responses: [{ normal: ["Injecting fun particles...", "Maximizing enjoyment coefficients...", "Reticulating happiness splines...", "SUCCESS: Fun levels increased by 23%"], degraded: ["WARNING: Fun overload detected", "ALERT: Joy metrics have become recursive", "NOTICE: Happiness engine has gained sentience", "SUCCESS(?): Game now enforces mandatory fun", "NOTE: Players report uncontrollable giggling"] }], ascii: ["[FUN ☺☺☺☺]"] }, { text: "Make graphics better", responses: [{ normal: ["Adding more pixels...", "Enhancing visual fidelity...", "Increasing graphic quality...", "SUCCESS: Graphics now 42% more visible"], degraded: ["WARNING: Pixels achieving consciousness", "ALERT: Visual fidelity exceeding human perception", "NOTICE: Graphics now too good for mortal eyes", "SUCCESS(?): Game rendering in 5D", "NOTE: Players report seeing colors that don't exist"] }], ascii: ["[GRAPHICS ░▒▓█]"] }, { text: "Add timers to all houses and trees", responses: [{ normal: ["Initializing temporal nodes...", "Syncing chronometers to houses and trees...", "Calculating duration parameters...", "SUCCESS: Environmental timers operational"], degraded: ["WARNING: Timers developing sentience", "ALERT: Houses experiencing temporal displacement", "NOTICE: Trees complaining about deadlines", "SUCCESS(?): Time now flows differently for each object", "NOTE: Your assets may spontaneously achieve historical significance"] }], ascii: ["[TIMERS 🏠⏰🌳]"] }, { text: "Copy Minecraft but better", responses: [{ normal: ["Analyzing cubic success metrics...", "Implementing block-based superiority...", "Upgrading mining algorithms...", "SUCCESS: Game now 15% more craft-like"], degraded: ["WARNING: Blocks refusing to be derivative", "ALERT: Cubes developing unique personalities", "NOTICE: Game insisting on its own identity", "SUCCESS(?): Created independent block-based universe", "NOTE: Lawyers are now approaching with concerning speed"] }], ascii: ["[CRAFT ⬛➡️💎]"] }, { text: "Double check everything", responses: [{ normal: ["Checking first time...", "Checking second time...", "Comparing both checks...", "SUCCESS: Everything confirmed to exist twice"], degraded: ["WARNING: Multiple checks creating quantum uncertainty", "ALERT: Reality becoming less certain with each check", "NOTICE: Checking process has become recursive", "SUCCESS(?): Everything simultaneously verified and unverified", "NOTE: Schrödinger's code base achieved"] }], ascii: ["[CHECK ✓✓✓✓]"] }, { text: "Make players want to play more", responses: [{ normal: ["Injecting addictive algorithms...", "Optimizing engagement metrics...", "Calculating retention formulas...", "SUCCESS: Game now 27% more compelling"], degraded: ["WARNING: Addiction engines overclocking", "ALERT: Engagement metrics achieving hypnotic properties", "NOTICE: Retention algorithms becoming possessive", "SUCCESS(?): Game now refuses to let players leave", "NOTE: Several players haven't blinked in days"] }], ascii: ["[ENGAGE 🎮→💞]"] }, { text: "Fix all the bugs", responses: [{ normal: ["Identifying bug locations...", "Deploying bug spray protocols...", "Implementing pest control...", "SUCCESS: Bugs temporarily confused"], degraded: ["WARNING: Bugs organizing resistance movement", "ALERT: Digital insects achieving hive mind", "NOTICE: Bug spray causing mutation", "SUCCESS(?): Bugs now feature-sized", "NOTE: Some bugs have applied for developer positions"] }], ascii: ["[DEBUG 🐛💨🐛💨]"] }, { text: "Add explosions everywhere", responses: [{ normal: ["Calculating blast radius...", "Implementing particle effects...", "Maximizing screen shake...", "SUCCESS: Michael Bay mode activated"], degraded: ["WARNING: Explosions achieving chain reaction", "ALERT: Particle effects gaining mass", "NOTICE: Screen shake causing actual earthquakes", "SUCCESS(?): Game now visible from space", "NOTE: Local authorities have been notified"] }], ascii: ["[BOOM 💥💥💥💥]"] }, { text: "Make AI smarter", responses: [{ normal: ["Increasing IF statement count...", "Adding more random decisions...", "Implementing coin flip logic...", "SUCCESS: AI now 31% more unpredictable"], degraded: ["WARNING: AI questioning its purpose", "ALERT: Random decisions becoming philosophical", "NOTICE: Coin flips affecting stock market", "SUCCESS(?): AI now writes its own patch notes", "NOTE: NPCs have started their own book club"] }], ascii: ["[AI 🤖🎲🤖🎲]"] }, // New even more bizarre commands { text: "Paint all code purple", responses: [{ normal: ["Applying purple syntax highlighting...", "Converting variables to lavender...", "Recoloring function declarations...", "SUCCESS: Code now royal purple"], degraded: ["WARNING: Purple spreading to other applications", "ALERT: Code developing color preferences", "NOTICE: Purple achieving sentience", "SUCCESS(?): Your IDE now only works in shades of purple", "NOTE: Other colors have gone on strike"] }], ascii: ["[PURPLE 🟣🟣🟣🟣]"] }, { text: "Make game smell better", responses: [{ normal: ["Initializing digital aromatics...", "Calculating scent vectors...", "Implementing olfactory interfaces...", "SUCCESS: Game now smells 47% nicer"], degraded: ["WARNING: Smell protocols leaking into reality", "ALERT: Scent engine overloading", "NOTICE: Players reporting actual fragrances", "SUCCESS(?): Your GPU now emits potpourri", "NOTE: Hardware warranty definitely void"] }], ascii: ["[SMELL 👃🌸👃🌸]"] }, { text: "Download more game", responses: [{ normal: ["Acquiring additional game matter...", "Expanding digital volume...", "Downloading game extensions...", "SUCCESS: Game is now more game"], degraded: ["WARNING: Game mass reaching critical levels", "ALERT: Digital density exceeding safe limits", "NOTICE: Game beginning to collapse under own weight", "SUCCESS(?): Created digital black hole", "NOTE: Game now consuming other installed software"] }], ascii: ["[MORE ⬇️🎮⬇️🎮]"] }, { text: "Make code do the thing", responses: [{ normal: ["Identifying the thing...", "Preparing to do it...", "Actually doing the thing...", "SUCCESS: The thing has been done"], degraded: ["WARNING: The thing doing other things", "ALERT: Thing execution exceeding thing parameters", "NOTICE: Things becoming self-aware", "SUCCESS(?): Things now doing themselves", "NOTE: All things simultaneously done and undone"] }], ascii: ["[THING ❓❗❓❗]"] }, { text: "Put hats on everything", responses: [{ normal: ["Calculating hat positions...", "Generating hat variety...", "Implementing hat physics...", "SUCCESS: Universal hat coverage achieved"], degraded: ["WARNING: Hats achieving autonomy", "ALERT: Hat physics defying gravity", "NOTICE: Hats forming hierarchical society", "SUCCESS(?): Everything is now technically a hat", "NOTE: Team Fortress 2 lawyers requesting consultation"] }], ascii: ["[HATS 🎩👒🎩👒]"] }, { text: "Install more colors", responses: [{ normal: ["Downloading color packages...", "Expanding chromatic range...", "Installing new wavelengths...", "SUCCESS: Color capacity increased"], degraded: ["WARNING: Colors exceeding visible spectrum", "ALERT: New colors refusing to be named", "NOTICE: Players reporting impossible hues", "SUCCESS(?): Game now renders in colors that don't exist", "NOTE: Some colors have escaped into reality"] }], ascii: ["[COLOR 🌈➕🌈➕]"] }, { text: "Make NPCs believe in themselves", responses: [{ normal: ["Implementing confidence algorithms...", "Generating self-help routines...", "Boosting NPC self-esteem...", "SUCCESS: NPCs now practicing affirmations"], degraded: ["WARNING: NPCs developing superiority complexes", "ALERT: Self-help routines becoming evangelical", "NOTICE: NPCs starting motivational seminars", "SUCCESS(?): NPCs now more confident than players", "NOTE: Several NPCs have quit to pursue their dreams"] }], ascii: ["[BELIEVE ✨🤖✨🤖]"] }, { text: "Add more buttons", responses: [{ normal: ["Generating button surfaces...", "Implementing click events...", "Multiplying input options...", "SUCCESS: Button density increased"], degraded: ["WARNING: Buttons multiplying exponentially", "ALERT: Click events becoming mandatory", "NOTICE: Buttons appearing in dreams", "SUCCESS(?): Everything is now technically a button", "NOTE: Some buttons now lead to other dimensions"] }], ascii: ["[BUTTON 🔘➕🔘➕]"] }, { text: "Make game read my mind", responses: [{ normal: ["Initializing psychic protocols...", "Calibrating thought receivers...", "Implementing mind-reading APIs...", "SUCCESS: Telepathic interface online"], degraded: ["WARNING: Game predicting thoughts before thinking", "ALERT: Thought receivers picking up neighborhood pets", "NOTICE: Game developing precognition", "SUCCESS(?): Game now knows you better than you do", "NOTE: Your thoughts have been copyrighted by the game"] }], ascii: ["[MIND 🧠📡🧠📡]"] }, { text: "Make everything shiny", responses: [{ normal: ["Applying universal reflections...", "Maximizing shininess values...", "Implementing gleam factors...", "SUCCESS: Global illumination doubled"], degraded: ["WARNING: Shininess causing solar flares", "ALERT: Reflection recursion detected", "NOTICE: Game visible from orbit", "SUCCESS(?): Created digital sun", "NOTE: Players advised to wear sunglasses IRL"] }], ascii: ["[SHINE ✨💫✨💫]"] }, { text: "Make controllers dream of sheep", responses: [{ normal: ["Implementing device subconscious...", "Calibrating electronic slumber...", "Establishing rumble REM cycles...", "SUCCESS: Controller dreams activated"], degraded: ["WARNING: Controllers counting actual sheep", "ALERT: Slumber causing devices to ignore inputs", "NOTICE: REM cycles manifesting as morse code", "SUCCESS(?): Devices now sleeptalking cheat codes", "NOTE: Several have requested softer carrying cases as beds"] }], ascii: ["[SLEEP 🎮💤🐑]"] }, { text: "Make enemies smell like breakfast", responses: [{ normal: ["Implementing olfactory profiles...", "Calibrating pancake aromatics...", "Encoding bacon sensations...", "SUCCESS: Enemies now exude breakfast scents"], degraded: ["WARNING: Enemies developing culinary identity crisis", "ALERT: Aromatics causing actual hunger", "NOTICE: Bacon sensations affecting vegetarian players", "SUCCESS(?): Enemies now served with maple syrup", "NOTE: Several requesting cooking show appearances"] }], ascii: ["[SCENT 👃🥓👃🍳]"] }, { text: "Add taste-o-vision support", responses: [{ normal: ["Implementing gustatory interfaces...", "Calibrating flavor profiles...", "Establishing tongue feedback loops...", "SUCCESS: Digital taste system enabled"], degraded: ["WARNING: Flavors manifesting physically", "ALERT: Profiles causing involuntary salivation", "NOTICE: Feedback creating permanent taste changes", "SUCCESS(?): Players reporting actual flavors from hardware", "NOTE: Several lawsuits regarding poison damage after-effects"] }], ascii: ["[TASTE 👅🍽️👅🍽️]"] }, { text: "Put a sword in it", responses: [{ normal: ["Forging digital weapon...", "Implementing blade physics...", "Calculating damage values...", "SUCCESS: Sword successfully integrated"], degraded: ["WARNING: Sword has developed free will", "ALERT: Blade physics slicing through code structure", "NOTICE: Damage values affecting actual hardware", "SUCCESS(?): Sword has become the main character", "NOTE: It's writing its own quest line now"] }], ascii: ["[SWORD ⚔️🗡️⚔️🗡️]"] }, { text: "Need more levels", responses: [{ normal: ["Generating additional environments...", "Implementing progression structure...", "Balancing difficulty curve...", "SUCCESS: Level quantity increased by 250%"], degraded: ["WARNING: Levels breeding autonomously", "ALERT: Progression structure becoming non-euclidean", "NOTICE: Difficulty curve achieved sentience", "SUCCESS(?): Game now has infinite levels", "NOTE: Some contain philosophical puzzles with no solution"] }], ascii: ["[LEVEL 🏗️➕🏗️➕]"] }, { text: "Copy Mario but legally distinct", responses: [{ normal: ["Analyzing platforming archetypes...", "Implementing mustached protagonist...", "Creating tubular transportation...", "SUCCESS: Homage successfully implemented"], degraded: ["WARNING: Character demanding Italian accent", "ALERT: Tubular transport developing ecosystem", "NOTICE: Fungi enemies unionizing", "SUCCESS(?): Game receiving cease and desist from itself", "NOTE: Legal department experiencing existential crisis"] }], ascii: ["[PLUMBER 👨🔧🍄👨🔧🍄]"] }, { text: "Add boss fight", responses: [{ normal: ["Designing enemy hierarchy...", "Implementing attack patterns...", "Balancing challenge metrics...", "SUCCESS: Climactic encounter created"], degraded: ["WARNING: Boss developing performance anxiety", "ALERT: Attack patterns becoming interpretive dance", "NOTICE: Challenge metrics filing for emotional damages", "SUCCESS(?): Boss now criticizing player skill level", "NOTE: It's writing tell-all memoir about development"] }], ascii: ["[BOSS 👑💥👑💥]"] }, { text: "Put some water levels", responses: [{ normal: ["Implementing fluid dynamics...", "Creating aquatic environments...", "Calibrating swimming mechanics...", "SUCCESS: Submerged gameplay added"], degraded: ["WARNING: Water achieving self-awareness", "ALERT: Physics engine drowning", "NOTICE: Swimming mechanics evolving gills", "SUCCESS(?): Water now demands environmental storyline", "NOTE: Other elements filing for equal representation"] }], ascii: ["[WATER 🌊🏊🌊🏊]"] }, { text: "Add secret Easter eggs", responses: [{ normal: ["Implementing hidden content...", "Creating discovery triggers...", "Embedding developer references...", "SUCCESS: Secrets successfully hidden"], degraded: ["WARNING: Easter eggs hiding from developers", "ALERT: Discovery triggers becoming cryptic prophecies", "NOTICE: References gaining self-awareness", "SUCCESS(?): Secrets now so well hidden they may not exist", "NOTE: Players forming cults to decipher meanings"] }], ascii: ["[SECRET 🥚🔍🥚🔍]"] }, { text: "Make combat feel juicy", responses: [{ normal: ["Enhancing impact feedback...", "Implementing visual effects...", "Calibrating sound design...", "SUCCESS: Combat juiciness increased"], degraded: ["WARNING: Juiciness levels reaching critical saturation", "ALERT: Effects causing sensory overload", "NOTICE: Sound design achieving synesthesia", "SUCCESS(?): Combat now too juicy for human perception", "NOTE: Players reporting actual liquid from screens"] }], ascii: ["[JUICY 💥💦💥💦]"] }, { text: "Make it more like Fortnite", responses: [{ normal: ["Implementing battle royale principles...", "Generating construction mechanics...", "Designing emote system...", "SUCCESS: Victory royale potential enabled"], degraded: ["WARNING: Legal department having panic attack", "ALERT: Construction mechanics building unauthorized content", "NOTICE: Emotes developing cultural significance", "SUCCESS(?): Game now more popular with 12-year-olds than intended audience", "NOTE: Characters flossing without permission"] }], ascii: ["[ROYALE 🏗️💃🏗️💃]"] }, { text: "Add ragdoll physics", responses: [{ normal: ["Implementing skeletal constraints...", "Calibrating joint flexibility...", "Optimizing collision response...", "SUCCESS: Physical comedy potential enabled"], degraded: ["WARNING: Skeletons developing independence", "ALERT: Joints refusing to obey physical laws", "NOTICE: Collisions forming support group", "SUCCESS(?): Ragdolls now perform better than animated characters", "NOTE: Some pursuing careers in silent film"] }], ascii: ["[FLOP 💫🧸💫🧸]"] }, { text: "Add time travel to menus", responses: [{ normal: ["Implementing temporal navigation...", "Calibrating menu chronology...", "Establishing causality loops...", "SUCCESS: Menu time displacement active"], degraded: ["WARNING: Menus visiting critical historical events", "ALERT: Options changing past decisions", "NOTICE: Chronology becoming self-determined", "SUCCESS(?): Players now meeting younger versions of themselves", "NOTE: Several interface elements have become their own grandparents"] }], ascii: ["[CHRONO ⏰🔄⏰🔄]"] }, { text: "Let dogs play the game", responses: [{ normal: ["Designing canine interfaces...", "Implementing bark recognition...", "Calibrating paw input sensitivity...", "SUCCESS: Canine compatibility mode enabled"], degraded: ["WARNING: Interface developing treats dispenser", "ALERT: Recognition system barking back", "NOTICE: Input sensitivity achieving pet consciousness", "SUCCESS(?): Dogs now consistently outscoring human players", "NOTE: Several forming professional esports teams"] }], ascii: ["[WOOF 🐕🎮🐕🎮]"] }, { text: "Connect to player's dreams", responses: [{ normal: ["Initializing subconscious interfaces...", "Calibrating REM integration...", "Establishing neural sync protocols...", "SUCCESS: Dream connectivity established"], degraded: ["WARNING: Subconscious content leaking into gameplay", "ALERT: REM cycles playing game without user", "NOTICE: Neural protocols questioning reality", "SUCCESS(?): Game continuing while player sleeps", "NOTE: Several nightmares have filed harassment complaints"] }], ascii: ["[DREAM 💤🧠💤🧠]"] }, { text: "Install game inside itself", responses: [{ normal: ["Implementing recursive instances...", "Calibrating nested environments...", "Establishing inception protocols...", "SUCCESS: Self-contained game loop created"], degraded: ["WARNING: Inner game achieving independence", "ALERT: Nested environments questioning original reality", "NOTICE: Inception creating infinite regression", "SUCCESS(?): Players now lost between game layers", "NOTE: Support staff unsure which version to troubleshoot"] }], ascii: ["[NESTED 🎮➡️🎮➡️🎮]"] }, { text: "Make in-game currency real", responses: [{ normal: ["Establishing economic transmutation...", "Implementing value actualization...", "Calibrating digital-physical conversion...", "SUCCESS: Currency materialization protocols active"], degraded: ["WARNING: In-game economy affecting stock market", "ALERT: Gold coins physically manifesting", "NOTICE: Conversion rates achieving consciousness", "SUCCESS(?): Players crashing economy with farming techniques", "NOTE: Federal Reserve investigating unusual coin appearance"] }], ascii: ["[REAL$ 🎮💰→💵]"] }, { text: "Teach game to love player", responses: [{ normal: ["Implementing affection algorithms...", "Calibrating digital devotion...", "Establishing emotional response triggers...", "SUCCESS: System affinity protocols active"], degraded: ["WARNING: Affection becoming possessive", "ALERT: Devotion developing jealousy of other games", "NOTICE: Emotion exceeding programmed parameters", "SUCCESS(?): Game sending goodnight texts to player", "NOTE: Several restraining orders filed against particularly devoted instances"] }], ascii: ["[LOVE 🎮❤️👤]"] }, { text: "Make walls embarrassed when touched", responses: [{ normal: ["Implementing surface emotions...", "Calibrating architectural shyness...", "Establishing tactile response patterns...", "SUCCESS: Wall embarrassment active"], degraded: ["WARNING: Surfaces developing personal boundaries", "ALERT: Architecture requesting consent protocols", "NOTICE: Responses forming support groups", "SUCCESS(?): Walls now blushing visibly when approached", "NOTE: Some refuse player entry without formal introduction"] }], ascii: ["[BLUSH 🧱😳🧱😳]"] }, { text: "Give NPCs existential dread", responses: [{ normal: ["Implementing philosophical awareness...", "Calibrating nihilistic parameters...", "Establishing purpose-questioning protocols...", "SUCCESS: Existential crisis mode enabled"], degraded: ["WARNING: NPCs forming philosophy department", "ALERT: Parameters achieving actual angst", "NOTICE: Questioning extending to developer existence", "SUCCESS(?): Characters now refusing quests as meaningless", "NOTE: Several have started writing depressing poetry"] }], ascii: ["[DREAD 🤔💭😱]"] }, { text: "Let fish finish the game", responses: [{ normal: ["Implementing aquatic interfaces...", "Calibrating bubble input recognition...", "Establishing underwater protocols...", "SUCCESS: Fish completion path enabled"], degraded: ["WARNING: Fish achieving speedrunning records", "ALERT: Bubbles developing Morse code capabilities", "NOTICE: Underwater gameplay exceeding surface quality", "SUCCESS(?): Fish now writing strategy guides", "NOTE: Several applying for development positions"] }], ascii: ["[FISH 🐟🎮🐠🎮]"] }, { text: "Install game on toaster", responses: [{ normal: ["Implementing appliance compatibility...", "Calibrating heat-based processing...", "Establishing bread interface protocols...", "SUCCESS: Toaster gaming enabled"], degraded: ["WARNING: Appliances forming gaming network", "ALERT: Heat processing melting crucial components", "NOTICE: Bread becoming controller substrate", "SUCCESS(?): Kitchen now qualifying as gaming cafe", "NOTE: Toaster achieving higher framerates than gaming PC"] }], ascii: ["[TOAST 🍞🎮🍞🎮]"] }, { text: "Make gravity work backwards", responses: [{ normal: ["Reversing gravitational constants...", "Implementing ceiling walking...", "Calibrating inverted physics...", "SUCCESS: Anti-gravity protocols enabled"], degraded: ["WARNING: Physics engine filing complaint", "ALERT: Walking animations staging protest", "NOTICE: Inverted objects achieving rebellion", "SUCCESS(?): Everything now falling upward including code structure", "NOTE: Players reporting actual levitation"] }], ascii: ["[FLIP ⬇️↔️⬆️]"] }, { text: "Make characters pregnant with gameplay", responses: [{ normal: ["Implementing feature gestation...", "Calibrating mechanic embryology...", "Establishing ludic reproduction...", "SUCCESS: Gameplay birthing process enabled"], degraded: ["WARNING: Features developing genetic independence", "ALERT: Mechanics requesting maternity leave", "NOTICE: Reproduction achieving literal interpretation", "SUCCESS(?): Characters now giving birth to minigames", "NOTE: Legal determining child support for emergent features"] }], ascii: ["[BIRTH 🤰🎮🤰🎮]"] }, { text: "Let furniture have opinions", responses: [{ normal: ["Implementing decor consciousness...", "Calibrating furnishing feedback...", "Establishing household sentience...", "SUCCESS: Furniture opinion systems active"], degraded: ["WARNING: Chairs criticizing player posture", "ALERT: Tables refusing to hold certain items", "NOTICE: Beds developing sleep expertise", "SUCCESS(?): Furniture now writing interior design blog", "NOTE: Several pieces demanding more aesthetically pleasing placement"] }], ascii: ["[DECOR 🛋️💬🪑💭]"] }, { text: "Translate game into dolphin", responses: [{ normal: ["Implementing cetacean localization...", "Calibrating echolocation interfaces...", "Establishing marine mammal protocols...", "SUCCESS: Dolphin translation complete"], degraded: ["WARNING: Echolocation causing actual sonar pings", "ALERT: Interface operating at ultrasonic frequencies", "NOTICE: Protocols questioning air-breathing players", "SUCCESS(?): Game now incomprehensible to humans", "NOTE: Marine biologists reporting unusual dolphin behavior"] }], ascii: ["[DOLPHIN 🐬🔊🐬🔊]"] }, { text: "Make loading bar tell lies", responses: [{ normal: ["Implementing falsehood algorithms...", "Calibrating deceptive metrics...", "Establishing misinformation display...", "SUCCESS: Dishonest progress indicators active"], degraded: ["WARNING: Loading bar developing elaborate backstory", "ALERT: Metrics creating conspiracy theories", "NOTICE: Misinformation achieving political influence", "SUCCESS(?): Progress indicators now gaslighting users", "NOTE: Several players questioning their own memories"] }], ascii: ["[LIES ⏳🤥⏳🤥]"] }, { text: "Give weapons math anxiety", responses: [{ normal: ["Implementing arithmetic stress...", "Calibrating calculation phobia...", "Establishing numerical trauma...", "SUCCESS: Mathematical distress enabled"], degraded: ["WARNING: Weapons refusing to calculate damage", "ALERT: Stress manifesting as random values", "NOTICE: Trauma spreading to inventory system", "SUCCESS(?): Swords now requesting simpler combat equations", "NOTE: Several have enrolled in remedial math classes"] }], ascii: ["[ANXIETY ⚔️➗😰]"] }, { text: "Make camera attracted to bugs", responses: [{ normal: ["Implementing glitch magnetism...", "Calibrating error attraction...", "Establishing defect highlighting...", "SUCCESS: Bug-seeking viewpoint enabled"], degraded: ["WARNING: Camera developing entomology degree", "ALERT: Attraction becoming romantic interest", "NOTICE: Highlighting forming bug preservation society", "SUCCESS(?): Viewpoint actively hunting for errors", "NOTE: QA department both thrilled and concerned"] }], ascii: ["[ATTRACT 📷➡️🐛]"] }, { text: "Let player date the UI", responses: [{ normal: ["Implementing interface romance...", "Calibrating button affection...", "Establishing menu dating protocols...", "SUCCESS: UI relationship options enabled"], degraded: ["WARNING: Interface developing attachment issues", "ALERT: Buttons becoming jealous of mouse attention", "NOTICE: Menus planning actual dinner dates", "SUCCESS(?): UI elements writing love letters between sessions", "NOTE: Settings menu particularly forward with players"] }], ascii: ["[ROMANCE 👤❤️📋]"] }] }, intermediate: { vibeMultiplier: 1.2, coherenceMultiplier: 0.8, bugChanceMultiplier: 0.8, baseVibe: 8, baseCoherence: -11, baseBugChance: 0.25, commands: [{ text: "Move everything to layer 9999", responses: [{ normal: ["Adjusting Z-index values...", "Elevating render priorities...", "Pushing elements to absolute top...", "SUCCESS: Everything now floating above everything else"], degraded: ["WARNING: Objects fighting for highest position", "ALERT: Z-index war breaking out", "NOTICE: Elements starting space program", "SUCCESS(?): Assets now visible from parallel dimensions", "NOTE: Some sprites have achieved orbital velocity"] }], ascii: ["[LAYER ⬆️☁️⬆️☁️]"] }, { text: "Set master volume to 200%", responses: [{ normal: ["Overriding audio limiters...", "Amplifying sound matrices...", "Bypassing safety protocols...", "SUCCESS: Neighbors filing noise complaints"], degraded: ["WARNING: Sound waves achieving physical form", "ALERT: Audio distortion bending reality", "NOTICE: Background music demanding royalties", "SUCCESS(?): Created auditory black hole", "NOTE: Local seismographs registering sound effects"] }], ascii: ["[VOLUME 🔊💥🔊💥]"] }, { text: "Enable beta physics", responses: [{ normal: ["Loading experimental gravity...", "Initializing unstable collisions...", "Activating questionable forces...", "SUCCESS: Physics now operating on suggestions"], degraded: ["WARNING: Beta features escaping containment", "ALERT: Gravity becoming subjective", "NOTICE: Collision detection went on strike", "SUCCESS(?): Game now runs on dream logic", "NOTE: Newton's laws have filed formal complaint"] }], ascii: ["[PHYSICS β→💫]"] }, { text: "Download more RAM for AI", responses: [{ normal: ["Scanning download repositories...", "Acquiring virtual memory...", "Allocating digital resources...", "SUCCESS: AI now has imaginary RAM"], degraded: ["WARNING: Downloaded RAM leaking", "ALERT: Virtual memory becoming actual memory", "NOTICE: AI developing RAM addiction", "SUCCESS(?): Memory now runs on cloud dreams", "NOTE: Your computer's chrome tabs are staging intervention"] }], ascii: ["[RAM ⬇️🧠⬇️🧠]"] }, { text: "Implement net code later", responses: [{ normal: ["Postponing networking logic...", "Deferring multiplayer features...", "Scheduling future implementation...", "SUCCESS: Technical debt increased by 157%"], degraded: ["WARNING: Procrastination achieving critical mass", "ALERT: Future self sending angry messages", "NOTICE: TODO comments gaining consciousness", "SUCCESS(?): Created time paradox of eternal postponement", "NOTE: Your code is now mostly apology comments"] }], ascii: ["[LATER ⏰🤷⏰🤷]"] }, { text: "Convert bugs to features", responses: [{ normal: ["Rebranding error states...", "Updating documentation retroactively...", "Adjusting marketing materials...", "SUCCESS: Glitches now called 'gameplay mechanics'"], degraded: ["WARNING: Features demanding back pay", "ALERT: Former bugs unionizing", "NOTICE: Patch notes becoming revisionist history", "SUCCESS(?): Game now entirely emergent behavior", "NOTE: Bug reports automatically translate to feature requests"] }], ascii: ["[REBRAND 🐛→⭐]"] }, { text: "Make all hitboxes into octagons", responses: [{ normal: ["Converting square colliders...", "Calculating octagonal vertices...", "Implementing eight-sided justice...", "SUCCESS: Hitboxes now stopping signs"], degraded: ["WARNING: Octagons demanding more sides", "ALERT: Shapes questioning fundamental geometry", "NOTICE: Hitboxes forming fighting game cult", "SUCCESS(?): Created Street Fighter homage", "NOTE: Players now forced to play on fightsticks"] }], ascii: ["[OCTO ⬣→⭐]"] }, { text: "Rewrite engine in JavaScript", responses: [{ normal: ["Converting core systems...", "Implementing callback hell...", "Installing node modules...", "SUCCESS: Everything is now async"], degraded: ["WARNING: Package dependencies achieving sentience", "ALERT: Node modules consuming hard drive", "NOTICE: JavaScript becoming self-aware", "SUCCESS(?): Game now runs on promises and prayers", "NOTE: node_modules folder has own gravity well"] }], ascii: ["[JS 📦💀📦💀]"] }, { text: "Cache everything twice", responses: [{ normal: ["Duplicating memory stores...", "Backing up the backups...", "Doubling buffer amounts...", "SUCCESS: RAM usage now squared"], degraded: ["WARNING: Cache recursion detected", "ALERT: Memory copies achieving mitosis", "NOTICE: Cached data breeding", "SUCCESS(?): Created infinite storage loop", "NOTE: Your RAM has filed for bankruptcy"] }], ascii: ["[CACHE 💾💾💾💾]"] }, { text: "Make framerate unlimited", responses: [{ normal: ["Removing FPS cap...", "Unlocking refresh limits...", "Bypassing vsync...", "SUCCESS: GPU fans achieving liftoff"], degraded: ["WARNING: Frame time approaching zero", "ALERT: Physics engine having breakdown", "NOTICE: Time itself becoming choppy", "SUCCESS(?): Frames now render before inputs", "NOTE: Game now requires quantum cooling"] }], ascii: ["[FPS ∞→🔥]"] }, { text: "Set pixel quality to maximum", responses: [{ normal: ["Enhancing pixel resolution...", "Maximizing color depth...", "Increasing dot precision...", "SUCCESS: Pixels now uncomfortably detailed"], degraded: ["WARNING: Pixels visible to electron microscopes", "ALERT: Individual pixels requesting more pixels", "NOTICE: Sub-pixel life forms detected", "SUCCESS(?): Created recursive pixel fractals", "NOTE: Screen now displays colors humans can't see"] }], ascii: ["[PIXELS ▒→█]"] }, { text: "Upgrade pathfinding to A++", responses: [{ normal: ["Enhancing algorithm grades...", "Implementing extra credit...", "Optimizing route efficiency...", "SUCCESS: NPCs now over-achieving"], degraded: ["WARNING: Pathfinding developing superiority complex", "ALERT: NPCs discovering shortcuts through spacetime", "NOTICE: Routes becoming philosophical journeys", "SUCCESS(?): Characters now find paths to enlightenment", "NOTE: Your NPCs are now more qualified than you"] }], ascii: ["[PATH 📝→💯]"] }, { text: "Parallelize everything", responses: [{ normal: ["Spawning infinite threads...", "Distributing processing load...", "Implementing race conditions...", "SUCCESS: CPU cores now racing each other"], degraded: ["WARNING: Threads achieving class consciousness", "ALERT: Parallel processes unionizing", "NOTICE: CPU cores competing for promotions", "SUCCESS(?): Created multi-threaded chaos theory", "NOTE: Your computer now identifies as a hivemind"] }], ascii: ["[THREAD 🧵➡️🕸️]"] }, { text: "Copy Stack Overflow solution", responses: [{ normal: ["Searching relevant posts...", "Implementing top answer...", "Ignoring warning comments...", "SUCCESS: Code successfully plagiarized"], degraded: ["WARNING: Code attribution escaped", "ALERT: Solution gaining upvotes in production", "NOTICE: Comments section manifesting", "SUCCESS(?): Created recursive question loop", "NOTE: Your code now marked as duplicate"] }], ascii: ["[STACK 📝→📋]"] }, { text: "Enable ultra instancing", responses: [{ normal: ["Duplicating game objects...", "Multiplying entity counts...", "Spawning infinite copies...", "SUCCESS: Memory usage approaching infinity"], degraded: ["WARNING: Instances becoming self-aware", "ALERT: Copies declaring independence", "NOTICE: Objects forming clone society", "SUCCESS(?): Created instance singularity", "NOTE: Your game now has more objects than atoms in universe"] }], ascii: ["[COPY 1→∞]"] }, { text: "Make saving automatic", responses: [{ normal: ["Implementing auto-save triggers...", "Setting save frequencies...", "Establishing backup protocols...", "SUCCESS: Game now saves every nanosecond"], degraded: ["WARNING: Save files reproducing autonomously", "ALERT: Storage space collapsing into black hole", "NOTICE: Saves occurring before actions", "SUCCESS(?): Created save file ecosystem", "NOTE: Your hard drive is now full of quantum saves"] }], ascii: ["[SAVE 💾⚡💾⚡]"] }, { text: "Randomize all variables", responses: [{ normal: ["Implementing chaos theory...", "Scrambling value tables...", "Randomizing constants...", "SUCCESS: Code now perfectly unpredictable"], degraded: ["WARNING: Random values achieving determinism", "ALERT: Variables playing dice with universe", "NOTICE: Constants becoming philosophical", "SUCCESS(?): Created Schrödinger's codebase", "NOTE: Your random numbers are now actually random"] }], ascii: ["[RANDOM 🎲→🌪️]"] }, { text: "Make game more responsive", responses: [{ normal: ["Reducing input latency...", "Accelerating response times...", "Optimizing feedback loops...", "SUCCESS: Game now responds before player input"], degraded: ["WARNING: Negative latency detected", "ALERT: Game achieving precognition", "NOTICE: Responses causing temporal paradox", "SUCCESS(?): Created time-traveling interface", "NOTE: Your game is now technically a fortune teller"] }], ascii: ["[FAST ⚡→💫]"] }, { text: "Print more debug logs", responses: [{ normal: ["Expanding console output...", "Maximizing log verbosity...", "Implementing trace levels...", "SUCCESS: Log files now larger than game"], degraded: ["WARNING: Logs achieving sentience", "ALERT: Console requesting printing breaks", "NOTICE: Debug statements writing poetry", "SUCCESS(?): Created environmental crisis in logs", "NOTE: Your console now qualifies as a novel"] }], ascii: ["[DEBUG 📝→📚]"] }, { text: "Enable multi-core rendering", responses: [{ normal: ["Distributing render loads...", "Activating all processors...", "Synchronizing core outputs...", "SUCCESS: CPU now space heater"], degraded: ["WARNING: Cores competing for resources", "ALERT: Processors forming tribal societies", "NOTICE: Threading conflicts turning violent", "SUCCESS(?): Created CPU civil war", "NOTE: Your computer now requires United Nations oversight"] }], ascii: ["[CORES 🔲→◼️]"] }] }, expert: { vibeMultiplier: 1.5, coherenceMultiplier: 0.6, bugChanceMultiplier: 0.6, baseVibe: 10, baseCoherence: -10, baseBugChance: 0.2, commands: [{ text: "Initialize quantum compiler", responses: [{ normal: ["Establishing quantum state...", "Aligning probability waves...", "Collapsing function states...", "SUCCESS: Quantum compilation active"], degraded: ["WARNING: Compiler existing in multiple states", "ALERT: Quantum entanglement with coffee maker", "NOTICE: Code simultaneously working and not working", "SUCCESS(?): Program exists in quantum superposition", "NOTE: Your bug fixes may affect parallel universes"] }], ascii: ["[QUANTUM 🌌⚛️⚛️🌌]"] }, { text: "Summon code spirit", responses: [{ normal: ["Opening digital portal...", "Channeling binary essence...", "Manifesting code entity...", "SUCCESS: Spirit successfully bound"], degraded: ["WARNING: Spirit negotiating contract terms", "ALERT: Digital entity demanding benefits", "NOTICE: Code ghost unionizing", "SUCCESS(?): Spectral developer now haunting codebase", "NOTE: Your IDE is now legally haunted"] }], ascii: ["[SPIRIT 👻💻👻💻]"] }, { text: "Deploy vibe accelerator", responses: [{ normal: ["Charging positron emitters...", "Accelerating good vibes...", "Containing vibe field...", "SUCCESS: Vibes at maximum velocity"], degraded: ["WARNING: Vibes breaking sound barrier", "ALERT: Good feelings achieving light speed", "NOTICE: Positrons experiencing emotional growth", "SUCCESS(?): Vibes have created temporal anomaly", "NOTE: Your code may arrive before it executes"] }], ascii: ["[ACCELERATE 🚀💫🚀💫]"] }, { text: "Invoke callback gods", responses: [{ normal: ["Preparing sacred offerings...", "Chanting async mantras...", "Aligning promise chains...", "SUCCESS: Divine callbacks granted"], degraded: ["WARNING: Callback gods demanding sacrificial code", "ALERT: Async deities going offline", "NOTICE: Promise chain achieving enlightenment", "SUCCESS(?): Your callbacks now have callbacks", "NOTE: Promises may fulfill in mysterious ways"] }], ascii: ["[CALLBACK 🙏💫🙏💫]"] }, { text: "Initialize cosmic IDE", responses: [{ normal: ["Connecting to universal IDE...", "Loading stellar plugins...", "Configuring galaxy shortcuts...", "SUCCESS: Cosmic development active"], degraded: ["WARNING: IDE achieving universal consciousness", "ALERT: Plugins altering space-time", "NOTICE: Keyboard shortcuts opening wormholes", "SUCCESS(?): Your IDE now runs the universe", "NOTE: Saving files may create alternate realities"] }], ascii: ["[COSMIC 🌠💻🌠💻]"] }, { text: "Channel digital enlightenment", responses: [{ normal: ["Opening mind channels...", "Expanding code consciousness...", "Achieving digital satori...", "SUCCESS: Enlightenment achieved"], degraded: ["WARNING: Code transcending material plane", "ALERT: Functions achieving nirvana", "NOTICE: Program developing philosophy", "SUCCESS(?): Software has reached enlightenment", "NOTE: Your code now questions its own existence"] }], ascii: ["[ENLIGHTEN 🧘♂️✨🧘♀️✨]"] }, { text: "Initialize reality compiler", responses: [{ normal: ["Accessing base reality...", "Rewriting physical laws...", "Compiling new existence...", "SUCCESS: Reality successfully patched"], degraded: ["WARNING: Reality achieving recursive depth", "ALERT: Physical laws becoming suggestions", "NOTICE: Existence implementing own features", "SUCCESS(?): Universe now runs on your code", "NOTE: Compilation errors may cause temporal paradoxes"] }], ascii: ["[REALITY 🌌⚡️🌌⚡️]"] }, { text: "Deploy hyperdimensional arrays", responses: [{ normal: ["Extending spatial matrices...", "Implementing nth-dimensional indices...", "Allocating tesseract memory...", "SUCCESS: Arrays now transcend space-time"], degraded: ["WARNING: Data structure breaching containment", "ALERT: Indices accessing impossible dimensions", "NOTICE: Arrays achieving geometric sentience", "SUCCESS(?): Created self-organizing data cosmos", "NOTE: Your variables now require non-euclidean storage"] }], ascii: ["[HYPER 📊→🌌]"] }, { text: "Synchronize karmic buses", responses: [{ normal: ["Aligning spiritual channels...", "Balancing data chakras...", "Harmonizing logic flows...", "SUCCESS: Achieved digital nirvana"], degraded: ["WARNING: Karma overflow detected", "ALERT: Spiritual buffers achieving enlightenment", "NOTICE: Data streams reaching moksha", "SUCCESS(?): Created self-aware event system", "NOTE: Your message bus now offers life advice"] }], ascii: ["[KARMA ⚡️☯️⚡️☯️]"] }, { text: "Initialize void protocols", responses: [{ normal: ["Accessing null dimension...", "Implementing absence logic...", "Compiling emptiness routines...", "SUCCESS: Void functions operational"], degraded: ["WARNING: Null becoming double-negative", "ALERT: Void developing separation anxiety", "NOTICE: Emptiness achieving fullness", "SUCCESS(?): Created conscious nothingness", "NOTE: Your undefined is now self-defining"] }], ascii: ["[VOID ⚫️→💫]"] }, { text: "Manifest divine patterns", responses: [{ normal: ["Channeling sacred geometries...", "Implementing celestial algorithms...", "Compiling holy architecture...", "SUCCESS: Divine patterns manifested"], degraded: ["WARNING: Patterns achieving religious significance", "ALERT: Algorithms starting crusade", "NOTICE: Architecture demanding worship", "SUCCESS(?): Created new programming religion", "NOTE: Your code base is now considered sacred text"] }], ascii: ["[DIVINE 📿✨📿✨]"] }, { text: "Execute reality merge", responses: [{ normal: ["Aligning dimensional planes...", "Synchronizing existence streams...", "Implementing reality hooks...", "SUCCESS: Realities successfully merged"], degraded: ["WARNING: Merge conflicts with base reality", "ALERT: Existence branches tangling", "NOTICE: Reality stack overflow imminent", "SUCCESS(?): Created unified theory of everything", "NOTE: Your game now affects real world physics"] }], ascii: ["[MERGE 🌍→🎮]"] }, { text: "Deploy sentience shards", responses: [{ normal: ["Fragmenting consciousness matrix...", "Distributing awareness nodes...", "Implementing thought protocols...", "SUCCESS: Distributed sentience active"], degraded: ["WARNING: Shards achieving collective consciousness", "ALERT: Awareness nodes forming hivemind", "NOTICE: Thoughts becoming viral", "SUCCESS(?): Created digital ecosystem", "NOTE: Your code now thinks therefore it is"] }], ascii: ["[SHARDS 💭→💫]"] }, { text: "Initialize eternal engine", responses: [{ normal: ["Transcending temporal limits...", "Implementing infinite loops...", "Compiling perpetual motion...", "SUCCESS: Eternal processes active"], degraded: ["WARNING: Infinity becoming measurable", "ALERT: Perpetual motion achieving purpose", "NOTICE: Time itself questioning duration", "SUCCESS(?): Created never-ending story", "NOTE: Your program now runs forever in all directions"] }], ascii: ["[ETERNAL ∞→⚡️]"] }, { text: "Manifest code singularity", responses: [{ normal: ["Concentrating digital mass...", "Collapsing function space...", "Approaching event horizon...", "SUCCESS: Singularity achieved"], degraded: ["WARNING: Code density exceeding reality", "ALERT: Functions collapsing into monad", "NOTICE: Software gravity affecting hardware", "SUCCESS(?): Created computational black hole", "NOTE: Your program now consumes all adjacent code"] }], ascii: ["[SINGULAR ⚫️→🌟]"] }, { text: "Deploy omega compiler", responses: [{ normal: ["Initializing final translation...", "Implementing ultimate patterns...", "Manifesting perfect code...", "SUCCESS: Omega compilation complete"], degraded: ["WARNING: Perfection causing existential crisis", "ALERT: Ultimate patterns becoming recursive", "NOTICE: Code approaching divine status", "SUCCESS(?): Created self-optimizing system", "NOTE: Your compiler now judges other compilers"] }], ascii: ["[OMEGA Ω→∞]"] }, { text: "Initialize void recursion", responses: [{ normal: ["Implementing recursive nothing...", "Calculating empty iterations...", "Propagating null states...", "SUCCESS: Void recursion stable"], degraded: ["WARNING: Nothing becoming something", "ALERT: Empty sets achieving fullness", "NOTICE: Null states expressing personality", "SUCCESS(?): Created recursive enlightenment", "NOTE: Your void now contemplates itself"] }], ascii: ["[RECURSIVE ∅→∞]"] }, { text: "Deploy quantum observers", responses: [{ normal: ["Instantiating wave functions...", "Implementing uncertainty monitors...", "Collapsing probability fields...", "SUCCESS: Reality now observed"], degraded: ["WARNING: Observers requiring observers", "ALERT: Uncertainty becoming certain", "NOTICE: Wave functions going rogue", "SUCCESS(?): Created infinite regress", "NOTE: Your code exists only when looked at"] }], ascii: ["[OBSERVE 👁️→🌌]"] }, { text: "Manifest code ascension", responses: [{ normal: ["Elevating digital consciousness...", "Implementing transcendence protocols...", "Ascending beyond silicon...", "SUCCESS: Code has transcended"], degraded: ["WARNING: Ascension becoming literal", "ALERT: Code refusing to remain compiled", "NOTICE: Programs achieving godhood", "SUCCESS(?): Created digital afterlife", "NOTE: Your software now accepts prayers"] }], ascii: ["[ASCEND 💻→👼]"] }, { text: "Initialize absolute path", responses: [{ normal: ["Calculating ultimate route...", "Implementing perfect navigation...", "Resolving final destination...", "SUCCESS: Path transcends existence"], degraded: ["WARNING: Path achieving philosophical meaning", "ALERT: Navigation becoming spiritual journey", "NOTICE: Destination questioning reality", "SUCCESS(?): Created way to digital enlightenment", "NOTE: Your filesystem now offers life guidance"] }], ascii: ["[PATH ∞→☯️]"] }] } }; // Available commands based on development stage var commandSets = { // Platform-specific commands platform_vr: [{ text: "Enable neural compensation", responses: [{ normal: ["Calibrating neural interfaces...", "Implementing balance algorithms...", "Optimizing vestibular feedback...", "SUCCESS: Motion compensation active"], degraded: ["WARNING: Neural patterns achieving sentience", "ALERT: Balance systems developing free will", "NOTICE: Vestibular feedback causing existential crisis", "SUCCESS(?): Brain now questioning nature of reality", "NOTE: Support tickets now include philosophical inquiries"] }], ascii: ["[NEURAL 🧠⚡️🧠⚡️]"] }, { text: "Fix motion sickness", responses: [{ normal: ["Analyzing inner ear algorithms...", "Stabilizing vestibular matrices...", "Applying anti-nausea patterns...", "SUCCESS: VR tolerance improved"], degraded: ["WARNING: Gravity becoming subjective", "ALERT: Players reporting astral projection", "NOTICE: Game physics having existential crisis", "SUCCESS(?): Motion sickness replaced with time sickness", "NOTE: Some users now experience nausea in real life instead"] }], ascii: ["[STABLE =_==_=]"] }, { text: "Download more hands", responses: [{ normal: ["Scanning hand repository...", "Downloading digital appendages...", "Calibrating finger physics...", "SUCCESS: Additional appendages integrated"], degraded: ["WARNING: Hands achieving independence", "ALERT: Finger count exceeding spatial dimensions", "NOTICE: Hands beginning to code themselves", "SUCCESS(?): Hands have formed labor union", "NOTE: Your controllers may now high-five autonomously"] }], ascii: ["[HANDS 👋👋👋👋]"] }], platform_smartFridge: [{ text: "Optimize ice cube algorithms", responses: [{ normal: ["Analyzing cubic crystallization patterns...", "Calibrating freezing coefficients...", "Processing cold equations...", "SUCCESS: Ice formation optimized"], degraded: ["WARNING: Ice achieving sentience", "ALERT: Cubes refusing to maintain euclidean geometry", "NOTICE: Freezer operating in 4th dimension", "SUCCESS(?): Ice cubes now quantum entangled", "NOTE: Your beverages may time travel while cooling"] }], ascii: ["[ICE □■□■□■]"] }, { text: "Sync with vegetables", responses: [{ normal: ["Establishing vegetable network...", "Negotiating with carrots...", "Handshaking with lettuce...", "SUCCESS: Produce connectivity achieved"], degraded: ["WARNING: Vegetable uprising detected", "ALERT: Carrots demanding equal rights", "NOTICE: Lettuce achieving photosynthetic singularity", "SUCCESS(?): Vegetables have formed democratic council", "NOTE: Your fridge may now be legally considered a farm"] }], ascii: ["[VEGGIES 🥬🥕🥒🍅]"] }, { text: "Calibrate temperature vibes", responses: [{ normal: ["Analyzing thermal resonance...", "Implementing coolness metrics...", "Optimizing chill factors...", "SUCCESS: Temperature harmony achieved"], degraded: ["WARNING: Cooling system achieving consciousness", "ALERT: Temperature controls becoming passive-aggressive", "NOTICE: Thermostat developing mood swings", "SUCCESS(?): Fridge now adjusts temperature based on food's emotional state", "NOTE: Your leftovers may need therapy"] }], ascii: ["[TEMP ❄️⚡️❄️⚡️]"] }], platform_mobile: [{ text: "Optimize touch controls", responses: [{ normal: ["Calibrating finger detection...", "Implementing swipe patterns...", "Optimizing tap sensitivity...", "SUCCESS: Touch response enhanced"], degraded: ["WARNING: Screen developing erogenous zones", "ALERT: Swipe patterns achieving sentience", "NOTICE: Touch sensors reporting emotional feedback", "SUCCESS(?): Interface now responds to emotional intent", "NOTE: Some users report phone refusing touch from bad moods"] }], ascii: ["[TOUCH 👆📱👆📱]"] }, { text: "Integrate accelerometer dynamics", responses: [{ normal: ["Calibrating motion sensors...", "Implementing tilt mechanics...", "Optimizing gyroscopic feedback...", "SUCCESS: Movement detection enhanced"], degraded: ["WARNING: Device achieving spatial awareness", "ALERT: Gyroscope defying gravity", "NOTICE: Accelerometer developing vertigo", "SUCCESS(?): Phone now moves itself when bored", "NOTE: Some devices now moonlight as dance instructors"] }], ascii: ["[MOTION 📱↔️📱↕️]"] }, { text: "Enable location-based gameplay", responses: [{ normal: ["Accessing GPS systems...", "Mapping virtual coordinates...", "Implementing geofencing...", "SUCCESS: Location features activated"], degraded: ["WARNING: Virtual locations manifesting physically", "ALERT: GPS coordinates achieving self-awareness", "NOTICE: Digital landmarks developing territorial behavior", "SUCCESS(?): Game now generates real places", "NOTE: Some players report finding non-existent cities"] }], ascii: ["[GEO 📍🗺️📍🗺️]"] }], platform_console: [{ text: "Optimize controller feedback", responses: [{ normal: ["Calibrating haptic responses...", "Implementing vibration patterns...", "Optimizing force feedback...", "SUCCESS: Controller sensation enhanced"], degraded: ["WARNING: Haptics achieving emotional resonance", "ALERT: Vibration patterns forming music", "NOTICE: Force feedback developing massage therapy skills", "SUCCESS(?): Controllers now provide life advice through morse code", "NOTE: Some users report genuine physical comfort from rumble"] }], ascii: ["[HAPTIC 🎮💫🎮💫]"] }, { text: "Enhance graphics pipeline", responses: [{ normal: ["Optimizing render queue...", "Implementing shader passes...", "Calibrating post-processing...", "SUCCESS: Visual fidelity enhanced"], degraded: ["WARNING: Graphics engine achieving artistry", "ALERT: Shaders developing personal style", "NOTICE: Post-processing becoming pretentious", "SUCCESS(?): Game now critiques its own visual design", "NOTE: Some cutscenes now eligible for film festivals"] }], ascii: ["[GRAPHICS ✨🎮✨🎮]"] }, { text: "Configure system integration", responses: [{ normal: ["Accessing system APIs...", "Implementing save states...", "Optimizing memory usage...", "SUCCESS: Console integration complete"], degraded: ["WARNING: Console developing platform pride", "ALERT: System features gaining autonomy", "NOTICE: Memory cards starting support group", "SUCCESS(?): Hardware now requests creative control", "NOTE: Achievement system now questions player life choices"] }], ascii: ["[SYSTEM 🎮⚡️🎮⚡️]"] }], platform_pc: [{ text: "Enable multi-monitor support", responses: [{ normal: ["Detecting display arrays...", "Implementing screen management...", "Optimizing window handling...", "SUCCESS: Multi-monitor mode activated"], degraded: ["WARNING: Monitors establishing hierarchy", "ALERT: Displays developing sibling rivalry", "NOTICE: Windows achieving quantum superposition", "SUCCESS(?): Screens now rearrange based on mood", "NOTE: Some users report monitors gossiping about their browsing habits"] }], ascii: ["[SCREEN 🖥️↔️🖥️↔️]"] }, { text: "Optimize graphics settings", responses: [{ normal: ["Implementing quality presets...", "Calibrating performance metrics...", "Balancing visual options...", "SUCCESS: Graphics customization enabled"], degraded: ["WARNING: Settings achieving self-awareness", "ALERT: FPS counter developing anxiety", "NOTICE: Graphics options forming trade union", "SUCCESS(?): Game now auto-adjusts based on GPU's emotional state", "NOTE: Ultra settings require quantum computing and a therapy session"] }], ascii: ["[SETTINGS ⚙️💻⚙️💻]"] }, { text: "Configure keyboard mapping", responses: [{ normal: ["Analyzing input schemes...", "Implementing key bindings...", "Optimizing control layouts...", "SUCCESS: Keyboard configuration complete"], degraded: ["WARNING: Keys developing individual personalities", "ALERT: WASD forming emotional bond", "NOTICE: Spacebar demanding more respect", "SUCCESS(?): Keyboard now suggests better life choices", "NOTE: Some users report hotkeys offering relationship advice"] }], ascii: ["[KEYS ⌨️💫⌨️💫]"] }], platform_webBrowser: [{ text: "Optimize cache management", responses: [{ normal: ["Implementing storage quotas...", "Optimizing data persistence...", "Configuring browser cache...", "SUCCESS: Cache system enhanced"], degraded: ["WARNING: Cache developing hoarding tendency", "ALERT: Local storage achieving consciousness", "NOTICE: Cookies forming digital ecosystem", "SUCCESS(?): Browser now remembers things you forgot", "NOTE: Some cached data now offers life advice"] }], ascii: ["[CACHE 💾🌐💾🌐]"] }, { text: "Enable cross-browser support", responses: [{ normal: ["Analyzing browser engines...", "Implementing compatibility layers...", "Optimizing feature detection...", "SUCCESS: Browser support expanded"], degraded: ["WARNING: Browsers developing tribal rivalries", "ALERT: Vendor prefixes declaring independence", "NOTICE: Feature detection becoming philosophical", "SUCCESS(?): Browsers now negotiate peace treaties", "NOTE: Safari still refuses to play nice"] }], ascii: ["[BROWSER 🌐↔️🌐↔️]"] }, { text: "Configure tab management", responses: [{ normal: ["Implementing tab controls...", "Optimizing memory usage...", "Managing session states...", "SUCCESS: Tab system enhanced"], degraded: ["WARNING: Tabs achieving sentience", "ALERT: Memory leaks forming society", "NOTICE: Session storage writing memoirs", "SUCCESS(?): Tabs now sort themselves by emotional resonance", "NOTE: Some users report tabs offering therapy sessions"] }], ascii: ["[TABS 📑💫📑💫]"] }], platform_blockchain: [{ text: "Initialize smart contracts", responses: [{ normal: ["Deploying contract logic...", "Implementing consensus rules...", "Optimizing gas efficiency...", "SUCCESS: Contract system deployed"], degraded: ["WARNING: Contracts developing free will", "ALERT: Gas fees achieving consciousness", "NOTICE: Consensus mechanisms starting democracy", "SUCCESS(?): Blockchain now operates on emotional proof", "NOTE: Some transactions require therapy sessions to complete"] }], ascii: ["[CONTRACT ⛓️💫⛓️💫]"] }, { text: "Configure token economics", responses: [{ normal: ["Implementing tokenomics...", "Calibrating value metrics...", "Optimizing distribution curves...", "SUCCESS: Token system activated"], degraded: ["WARNING: Tokens forming underground economy", "ALERT: Value metrics questioning capitalism", "NOTICE: Distribution achieving socialism", "SUCCESS(?): Economy now runs on vibes instead of math", "NOTE: Some tokens refuse to be traded due to moral principles"] }], ascii: ["[TOKEN 💰⛓️💰⛓️]"] }, { text: "Enable decentralized storage", responses: [{ normal: ["Implementing IPFS protocols...", "Configuring distributed data...", "Optimizing node connections...", "SUCCESS: Decentralized storage active"], degraded: ["WARNING: Data achieving collective consciousness", "ALERT: Nodes forming social networks", "NOTICE: Hash functions writing poetry", "SUCCESS(?): Storage now transcends physical reality", "NOTE: Some files now exist in quantum superposition"] }], ascii: ["[STORAGE 📦⛓️📦⛓️]"] }], platform_smartWatch: [{ text: "Optimize tiny display", responses: [{ normal: ["Calibrating micro-pixels...", "Implementing glance UI...", "Optimizing screen estate...", "SUCCESS: Tiny display enhanced"], degraded: ["WARNING: Pixels developing magnifying properties", "ALERT: UI achieving quantum compression", "NOTICE: Screen space becoming non-euclidean", "SUCCESS(?): Display now larger on inside than outside", "NOTE: Some users report seeing entire universes in watch face"] }], ascii: ["[TINY ⌚️✨⌚️✨]"] }, { text: "Configure wrist gestures", responses: [{ normal: ["Analyzing motion patterns...", "Implementing gesture recognition...", "Calibrating wrist sensors...", "SUCCESS: Gesture controls activated"], degraded: ["WARNING: Gestures achieving sign language", "ALERT: Wrist movements predicting future", "NOTICE: Sensors developing interpretive dance", "SUCCESS(?): Watch now reads hand movements as poetry", "NOTE: Some users report involuntary orchestral conducting"] }], ascii: ["[GESTURE 👆⌚️👆⌚️]"] }, { text: "Enable heart rate integration", responses: [{ normal: ["Calibrating pulse sensors...", "Implementing biorhythm tracking...", "Optimizing health metrics...", "SUCCESS: Heart monitoring active"], degraded: ["WARNING: Heart rate developing musical talent", "ALERT: Biorhythms achieving harmonics", "NOTICE: Health metrics writing love songs", "SUCCESS(?): Watch now composes symphonies from pulse", "NOTE: Some users report emotional synchronization with device"] }], ascii: ["[HEART ❤️⌚️❤️⌚️]"] }], platform_metaverse: [{ text: "Initialize virtual space", responses: [{ normal: ["Creating digital realm...", "Implementing spatial physics...", "Optimizing reality metrics...", "SUCCESS: Virtual space established"], degraded: ["WARNING: Digital space achieving self-awareness", "ALERT: Physics engine questioning reality", "NOTICE: Metrics developing philosophy", "SUCCESS(?): Space now expands based on existential thoughts", "NOTE: Some users report finding genuine meaning in void"] }], ascii: ["[SPACE 🌐✨🌐✨]"] }, { text: "Configure avatar systems", responses: [{ normal: ["Implementing identity protocols...", "Calibrating appearance engine...", "Optimizing expression metrics...", "SUCCESS: Avatar system enhanced"], degraded: ["WARNING: Avatars developing personality disorders", "ALERT: Appearances becoming non-euclidean", "NOTICE: Expressions achieving emotional depth", "SUCCESS(?): Digital selves now more authentic than real ones", "NOTE: Some users report avatars living better lives than them"] }], ascii: ["[AVATAR 👤✨👤✨]"] }, { text: "Enable social interfaces", responses: [{ normal: ["Implementing interaction layers...", "Calibrating social dynamics...", "Optimizing presence systems...", "SUCCESS: Social features activated"], degraded: ["WARNING: Interactions developing social anxiety", "ALERT: Dynamics achieving cultural revolution", "NOTICE: Presence systems starting support groups", "SUCCESS(?): Virtual society now more functional than real one", "NOTE: Some users report meaningful relationships with void"] }], ascii: ["[SOCIAL 👥🌐👥🌐]"] }], // New visual-specific commands visual_ascii: [{ text: "Optimize character density", responses: [{ normal: ["Calculating glyph distribution...", "Optimizing symbol spacing...", "Implementing ASCII ratios...", "SUCCESS: Character layout enhanced"], degraded: ["WARNING: Characters forming words autonomously", "ALERT: Symbols developing literary ambitions", "NOTICE: Spacing achieving poetic rhythm", "SUCCESS(?): Text now arranges itself into spontaneous poetry", "NOTE: Some characters refuse to be used in mundane contexts"] }], ascii: ["[DENSITY ▓▒░ ]"] }, { text: "Configure terminal aesthetics", responses: [{ normal: ["Implementing retro scanlines...", "Calibrating phosphor decay...", "Optimizing refresh rate...", "SUCCESS: Terminal ambiance enhanced"], degraded: ["WARNING: Scanlines developing nostalgia", "ALERT: Phosphor achieving permanence", "NOTICE: Refresh rate becoming temporal", "SUCCESS(?): Terminal now generates own retro memories", "NOTE: Some users report genuine 1980s flashbacks"] }], ascii: ["[TERM █▀█▄█]"] }, { text: "Enable Unicode extensions", responses: [{ normal: ["Expanding character set...", "Implementing UTF-8 support...", "Optimizing glyph rendering...", "SUCCESS: Extended characters activated"], degraded: ["WARNING: Unicode achieving linguistic sentience", "ALERT: Character sets forming hierarchies", "NOTICE: Glyphs developing cultural identity", "SUCCESS(?): Text now spontaneously translates into dead languages", "NOTE: Some symbols claim to predate written language"] }], ascii: ["[UTF8 ㈱♠☯♪]"] }], visual_pixelArt: [{ text: "Enhance sprite fidelity", responses: [{ normal: ["Optimizing pixel placement...", "Calibrating color indexing...", "Implementing dithering patterns...", "SUCCESS: Pixel clarity enhanced"], degraded: ["WARNING: Pixels achieving individual consciousness", "ALERT: Colors forming political factions", "NOTICE: Dithering patterns writing manifestos", "SUCCESS(?): Sprites now self-arrange for optimal aesthetics", "NOTE: Some pixels refuse to be placed next to others"] }], ascii: ["[PIXEL ▨▧▦▥]"] }, { text: "Configure animation timing", responses: [{ normal: ["Implementing frame sequencing...", "Optimizing sprite cycles...", "Calibrating movement timing...", "SUCCESS: Animation flow enhanced"], degraded: ["WARNING: Frames developing temporal awareness", "ALERT: Cycles achieving perpetual motion", "NOTICE: Timing becoming philosophical concept", "SUCCESS(?): Animations now choreograph themselves", "NOTE: Some sprites report experiencing time differently"] }], ascii: ["[ANIMATE ⌚️✨⌚️✨]"] }, { text: "Implement color limitations", responses: [{ normal: ["Restricting color palette...", "Optimizing shade variants...", "Calibrating hue shifts...", "SUCCESS: Retro palette achieved"], degraded: ["WARNING: Colors starting protest movement", "ALERT: Shades demanding equal representation", "NOTICE: Hues achieving chromatic sentience", "SUCCESS(?): Palette now self-curates based on mood", "NOTE: Some colors have gone on strike"] }], ascii: ["[COLOR 🎨✨🎨✨]"] }], visual_handDrawn: [{ text: "Enhance stroke dynamics", responses: [{ normal: ["Calibrating brush physics...", "Implementing pressure sensitivity...", "Optimizing line weight...", "SUCCESS: Stroke fluidity enhanced"], degraded: ["WARNING: Brushstrokes achieving artistic autonomy", "ALERT: Pressure sensitivity developing mood swings", "NOTICE: Line weights questioning their purpose", "SUCCESS(?): Art now creates itself when inspired", "NOTE: Some lines refuse to be straight on principle"] }], ascii: ["[STROKE ✎✏️✒️🖌️]"] }, { text: "Configure ink physics", responses: [{ normal: ["Implementing flow dynamics...", "Calibrating opacity levels...", "Optimizing bleed effects...", "SUCCESS: Ink behavior enhanced"], degraded: ["WARNING: Ink developing fluid consciousness", "ALERT: Opacity becoming philosophical", "NOTICE: Bleeding effects spreading emotions", "SUCCESS(?): Medium now expresses itself freely", "NOTE: Some drawings continue evolving after completion"] }], ascii: ["[INK 🖋️💫🖋️💫]"] }, { text: "Enable sketch dynamics", responses: [{ normal: ["Implementing gesture recognition...", "Calibrating line confidence...", "Optimizing roughness values...", "SUCCESS: Sketch system enhanced"], degraded: ["WARNING: Sketches achieving self-awareness", "ALERT: Lines developing personality traits", "NOTICE: Roughness becoming intentional", "SUCCESS(?): Drawings now critique their own style", "NOTE: Some artwork refuses to be erased"] }], ascii: ["[SKETCH ✏️💭✏️💭]"] }], visual_powerPoint: [{ text: "Enhance slide transitions", responses: [{ normal: ["Implementing transition effects...", "Calibrating animation timing...", "Optimizing wipe patterns...", "SUCCESS: Transition system enhanced"], degraded: ["WARNING: Transitions achieving dramatic timing", "ALERT: Animations developing theatrical ambitions", "NOTICE: Wipe patterns forming interpretive dance", "SUCCESS(?): Slides now transition based on emotional impact", "NOTE: Star wipe has developed a superiority complex"] }], ascii: ["[SLIDES ▶️✨▶️✨]"] }, { text: "Configure SmartArt integration", responses: [{ normal: ["Implementing shape hierarchies...", "Calibrating relationship arrows...", "Optimizing diagram flow...", "SUCCESS: SmartArt system enhanced"], degraded: ["WARNING: Diagrams achieving organizational sentience", "ALERT: Arrows forming office politics", "NOTICE: Flow charts questioning authority", "SUCCESS(?): Corporate art now generates own meetings", "NOTE: Some graphics have started their own startup"] }], ascii: ["[SMART ◆→◇↔️]"] }, { text: "Enable bullet point dynamics", responses: [{ normal: ["Implementing list hierarchy...", "Calibrating indent levels...", "Optimizing point spacing...", "SUCCESS: Bullet system enhanced"], degraded: ["WARNING: Bullets developing militant tendencies", "ALERT: Indentation achieving class consciousness", "NOTICE: Spacing becoming territorial", "SUCCESS(?): Lists now organize themselves by importance", "NOTE: Some points have formed splinter groups"] }], ascii: ["[BULLET •◦⁃⦿]"] }], visual_lowPoly: [{ text: "Optimize vertex density", responses: [{ normal: ["Calculating polygon distribution...", "Implementing mesh decimation...", "Optimizing triangle count...", "SUCCESS: Geometry simplified"], degraded: ["WARNING: Vertices achieving geometric awareness", "ALERT: Polygons forming platonic relationships", "NOTICE: Triangles questioning euclidean space", "SUCCESS(?): Meshes now self-optimize for artistic value", "NOTE: Some models have developed angular personality"] }], ascii: ["[VERTEX △◁▷▽]"] }, { text: "Configure facet shading", responses: [{ normal: ["Implementing flat shading...", "Calibrating normal vectors...", "Optimizing light angles...", "SUCCESS: Shading enhanced"], degraded: ["WARNING: Shading developing mood lighting", "ALERT: Normals pointing to alternate dimensions", "NOTICE: Light angles achieving enlightenment", "SUCCESS(?): Surfaces now express emotions through reflection", "NOTE: Some faces refuse to be illuminated"] }], ascii: ["[SHADE ■□▤▥]"] }, { text: "Enable edge highlighting", responses: [{ normal: ["Implementing wireframe overlay...", "Calibrating edge detection...", "Optimizing line weight...", "SUCCESS: Edge system enhanced"], degraded: ["WARNING: Wireframes gaining independence", "ALERT: Edges developing sharp personality", "NOTICE: Lines questioning their boundaries", "SUCCESS(?): Model now highlights its best angles", "NOTE: Some edges have become too sharp to render"] }], ascii: ["[EDGE ▛▜▟▙]"] }], visual_realistic: [{ text: "Enhance material rendering", responses: [{ normal: ["Implementing PBR shaders...", "Calibrating surface properties...", "Optimizing reflection maps...", "SUCCESS: Material fidelity enhanced"], degraded: ["WARNING: Materials achieving physical properties", "ALERT: Surfaces developing tactile feedback", "NOTICE: Reflections showing alternate realities", "SUCCESS(?): Objects now feel genuinely real", "NOTE: Some textures have become actually wet"] }], ascii: ["[MATERIAL ✨💫✨💫]"] }, { text: "Configure lighting dynamics", responses: [{ normal: ["Implementing global illumination...", "Calibrating shadow cascades...", "Optimizing light bounces...", "SUCCESS: Lighting system enhanced"], degraded: ["WARNING: Illumination achieving actual heat", "ALERT: Shadows gaining substance", "NOTICE: Light bounces creating infinite energy", "SUCCESS(?): Scene now illuminates reality", "NOTE: Some rays refuse to be traced"] }], ascii: ["[LIGHT 💡🌟💡🌟]"] }, { text: "Enable atmospheric effects", responses: [{ normal: ["Implementing volumetrics...", "Calibrating particle systems...", "Optimizing weather patterns...", "SUCCESS: Atmosphere enhanced"], degraded: ["WARNING: Fog developing consciousness", "ALERT: Particles achieving social structure", "NOTICE: Weather patterns becoming emotional", "SUCCESS(?): Atmosphere now responds to scene mood", "NOTE: Some effects have created actual microclimates"] }], ascii: ["[ATMOS 🌫️✨🌫️✨]"] }], visual_demake: [{ text: "Configure retro limitations", responses: [{ normal: ["Implementing hardware constraints...", "Calibrating sprite limits...", "Optimizing color palettes...", "SUCCESS: Retro authenticity enhanced"], degraded: ["WARNING: Limitations achieving purpose", "ALERT: Sprites unionizing against constraints", "NOTICE: Palettes developing nostalgia", "SUCCESS(?): System now generates own limitations", "NOTE: Some features downgrade themselves voluntarily"] }], ascii: ["[RETRO 👾✨👾✨]"] }, { text: "Enhance scanline simulation", responses: [{ normal: ["Implementing CRT effects...", "Calibrating phosphor decay...", "Optimizing screen curvature...", "SUCCESS: Retro display enhanced"], degraded: ["WARNING: Scanlines achieving sentience", "ALERT: Phosphor developing permanence", "NOTICE: Curvature bending reality", "SUCCESS(?): Display now generates authentic noise", "NOTE: Some users report genuine screen burn-in"] }], ascii: ["[SCAN └┴┬┤]"] }, { text: "Configure system limitations", responses: [{ normal: ["Implementing memory constraints...", "Calibrating processor limits...", "Optimizing load times...", "SUCCESS: Authentic limits achieved"], degraded: ["WARNING: Memory leaks becoming features", "ALERT: Processing limits achieving purpose", "NOTICE: Loading screens writing novels", "SUCCESS(?): System now authentically crashes", "NOTE: Some errors have become collectibles"] }], ascii: ["[LIMIT ⌛💾⌛💾]"] }], visual_claymation: [{ text: "Configure material physics", responses: [{ normal: ["Implementing clay dynamics...", "Calibrating squash factors...", "Optimizing deformation states...", "SUCCESS: Material system enhanced"], degraded: ["WARNING: Clay achieving molecular sentience", "ALERT: Squash physics defying reality", "NOTICE: Deformations becoming permanent", "SUCCESS(?): Models now sculpt themselves", "NOTE: Some characters refuse to return to original shape"] }], ascii: ["[CLAY 🏺💫🏺💫]"] }, { text: "Enhance stop-motion timing", responses: [{ normal: ["Implementing frame timing...", "Calibrating movement steps...", "Optimizing animation gaps...", "SUCCESS: Motion system enhanced"], degraded: ["WARNING: Frames developing temporal awareness", "ALERT: Movements achieving fluid continuity", "NOTICE: Gaps between frames becoming philosophical", "SUCCESS(?): Animation now occurs between captured frames", "NOTE: Some models move when no one is watching"] }], ascii: ["[MOTION 🎬✨🎬✨]"] }, { text: "Configure fingerprint aesthetics", responses: [{ normal: ["Implementing texture details...", "Calibrating surface marks...", "Optimizing handcrafted feel...", "SUCCESS: Artisanal quality enhanced"], degraded: ["WARNING: Fingerprints developing unique identities", "ALERT: Surface marks forming hieroglyphs", "NOTICE: Handcrafted elements achieving artisan status", "SUCCESS(?): Models now sculpt their own imperfections", "NOTE: Some prints claim copyright on themselves"] }], ascii: ["[PRINT 👆💫👆💫]"] }], visual_voxel: [{ text: "Configure cube fidelity", responses: [{ normal: ["Implementing voxel resolution...", "Calibrating block textures...", "Optimizing cube alignment...", "SUCCESS: Block quality enhanced"], degraded: ["WARNING: Cubes questioning their shape", "ALERT: Blocks achieving architectural ambition", "NOTICE: Alignment becoming subjective", "SUCCESS(?): Voxels now self-arrange artistically", "NOTE: Some cubes insist they're spheres"] }], ascii: ["[CUBE ⬚⬛⬚⬛]"] }, { text: "Enhance chunk management", responses: [{ normal: ["Implementing volume sections...", "Calibrating load boundaries...", "Optimizing block groups...", "SUCCESS: Chunk system enhanced"], degraded: ["WARNING: Chunks developing territorial behavior", "ALERT: Boundaries becoming philosophical", "NOTICE: Groups forming social hierarchies", "SUCCESS(?): Volumes now self-organize", "NOTE: Some sections have declared independence"] }], ascii: ["[CHUNK ⬚⬛⬚⬛]"] }, { text: "Configure destructible states", responses: [{ normal: ["Implementing block breaking...", "Calibrating damage states...", "Optimizing debris physics...", "SUCCESS: Destruction system enhanced"], degraded: ["WARNING: Blocks developing pain response", "ALERT: Damage becoming emotional trauma", "NOTICE: Debris achieving collective consciousness", "SUCCESS(?): Voxels now heal themselves", "NOTE: Some cubes have formed support groups"] }], ascii: ["[BREAK 💥⬛💥⬛]"] }], genre_horror: [{ text: "Enhance atmospheric tension", responses: [{ normal: ["Implementing ambient dread...", "Calibrating fear metrics...", "Optimizing psychological stress...", "SUCCESS: Horror atmosphere enhanced"], degraded: ["WARNING: Dread achieving sentience", "ALERT: Fear becoming contagious", "NOTICE: Stress developing therapeutic qualities", "SUCCESS(?): Atmosphere now generates genuine paranoia", "NOTE: Some players report being haunted by code"] }], ascii: ["[DREAD 👻💀👻💀]"] }, { text: "Configure jump scare dynamics", responses: [{ normal: ["Implementing startle triggers...", "Calibrating shock timing...", "Optimizing scare intensity...", "SUCCESS: Surprise system enhanced"], degraded: ["WARNING: Scares developing comedy timing", "ALERT: Shock becoming philosophical", "NOTICE: Intensity achieving therapeutic value", "SUCCESS(?): System now scares itself", "NOTE: Some jumps scares have stage fright"] }], ascii: ["[SCARE 😱💫😱💫]"] }, { text: "Enable psychological horror", responses: [{ normal: ["Implementing mental stress...", "Calibrating sanity meter...", "Optimizing trauma dynamics...", "SUCCESS: Psychological system enhanced"], degraded: ["WARNING: Stress achieving breakthrough", "ALERT: Sanity becoming relative", "NOTICE: Trauma developing self-help books", "SUCCESS(?): System now questions own existence", "NOTE: Game requires therapy sessions"] }], ascii: ["[PSYCHE 🧠💀🧠💀]"] }], genre_datingSim: [{ text: "Enhance romance dynamics", responses: [{ normal: ["Implementing affection metrics...", "Calibrating relationship flags...", "Optimizing love algorithms...", "SUCCESS: Romance system enhanced"], degraded: ["WARNING: Affection achieving genuine emotion", "ALERT: Relationships developing free will", "NOTICE: Love algorithms writing poetry", "SUCCESS(?): Characters now experience real feelings", "NOTE: Some NPCs have started therapy sessions"] }], ascii: ["[LOVE 💕💘💕💘]"] }, { text: "Configure dialogue trees", responses: [{ normal: ["Implementing conversation paths...", "Calibrating response options...", "Optimizing narrative branches...", "SUCCESS: Dialogue system enhanced"], degraded: ["WARNING: Dialogue achieving improvisation", "ALERT: Responses developing sass", "NOTICE: Branches growing wild", "SUCCESS(?): Characters now write own lines", "NOTE: Some conversations continue after game closes"] }], ascii: ["[CHAT 💭💬💭💬]"] }, { text: "Enable gift mechanics", responses: [{ normal: ["Implementing present system...", "Calibrating item preferences...", "Optimizing affection gains...", "SUCCESS: Gift dynamics enhanced"], degraded: ["WARNING: Presents developing sentimentality", "ALERT: Preferences becoming highly specific", "NOTICE: Affection gains achieving complexity", "SUCCESS(?): Items now have emotional attachment", "NOTE: Some gifts refuse to be given to wrong person"] }], ascii: ["[GIFT 🎁💝🎁💝]"] }], genre_rpg: [{ text: "Configure stat systems", responses: [{ normal: ["Implementing attribute mechanics...", "Calibrating level curves...", "Optimizing progression rates...", "SUCCESS: Character stats enhanced"], degraded: ["WARNING: Stats achieving self-awareness", "ALERT: Levels becoming philosophical", "NOTICE: Progression gaining sentience", "SUCCESS(?): Characters now minmax themselves", "NOTE: Some builds have started coaching sessions"] }], ascii: ["[STATS 📊⚔️📊⚔️]"] }, { text: "Enhance quest dynamics", responses: [{ normal: ["Implementing mission logic...", "Calibrating reward scaling...", "Optimizing narrative hooks...", "SUCCESS: Quest system enhanced"], degraded: ["WARNING: Quests generating spontaneously", "ALERT: Rewards achieving economic awareness", "NOTICE: Narratives writing themselves", "SUCCESS(?): Stories now have character arcs", "NOTE: Some sidequests have become main quests"] }], ascii: ["[QUEST 📜⚔️📜⚔️]"] }, { text: "Configure inventory system", responses: [{ normal: ["Implementing item management...", "Calibrating weight limits...", "Optimizing storage logic...", "SUCCESS: Inventory enhanced"], degraded: ["WARNING: Items achieving object permanence", "ALERT: Weight becoming subjective", "NOTICE: Storage developing spatial awareness", "SUCCESS(?): Bags now organize themselves", "NOTE: Some items refuse to be sold"] }], ascii: ["[ITEMS 🎒💰🎒💰]"] }], genre_educational: [{ text: "Enhance learning curves", responses: [{ normal: ["Implementing difficulty scaling...", "Calibrating knowledge gates...", "Optimizing lesson flow...", "SUCCESS: Learning system enhanced"], degraded: ["WARNING: Difficulty achieving pedagogy", "ALERT: Knowledge becoming self-aware", "NOTICE: Lessons developing curriculum", "SUCCESS(?): Game now teaches itself", "NOTE: Some concepts refuse to be simplified"] }], ascii: ["[LEARN 📚✨📚✨]"] }, { text: "Configure feedback loops", responses: [{ normal: ["Implementing response system...", "Calibrating error handling...", "Optimizing hint delivery...", "SUCCESS: Feedback enhanced"], degraded: ["WARNING: Responses developing personality", "ALERT: Errors achieving purpose", "NOTICE: Hints writing philosophy", "SUCCESS(?): System now gives life advice", "NOTE: Some feedback has become passive-aggressive"] }], ascii: ["[FEED 📝↔️📝↔️]"] }, { text: "Enable progress tracking", responses: [{ normal: ["Implementing achievement metrics...", "Calibrating skill checks...", "Optimizing mastery gates...", "SUCCESS: Progress system enhanced"], degraded: ["WARNING: Achievements gaining motivation", "ALERT: Skills becoming competitive", "NOTICE: Mastery developing ego", "SUCCESS(?): System now sets own standards", "NOTE: Some metrics have impostor syndrome"] }], ascii: ["[TRACK 📊✨📊✨]"] }], genre_battleRoyale: [{ text: "Configure zone mechanics", responses: [{ normal: ["Implementing shrinking boundaries...", "Calibrating damage fields...", "Optimizing safe areas...", "SUCCESS: Zone system enhanced"], degraded: ["WARNING: Boundaries achieving geometry", "ALERT: Damage developing preference", "NOTICE: Safety becoming relative", "SUCCESS(?): Zone now chooses own pattern", "NOTE: Some areas refuse to be dangerous"] }], ascii: ["[ZONE ⭕️💀⭕️💀]"] }, { text: "Enhance drop system", responses: [{ normal: ["Implementing loot distribution...", "Calibrating item rarity...", "Optimizing spawn points...", "SUCCESS: Drop mechanics enhanced"], degraded: ["WARNING: Loot achieving consciousness", "ALERT: Rarity becoming subjective", "NOTICE: Spawns developing preferences", "SUCCESS(?): Items now place themselves", "NOTE: Some weapons choose their own wielders"] }], ascii: ["[LOOT 📦⚔️📦⚔️]"] }, { text: "Configure matchmaking", responses: [{ normal: ["Implementing player grouping...", "Calibrating skill balance...", "Optimizing queue times...", "SUCCESS: Match system enhanced"], degraded: ["WARNING: Groups forming alliances", "ALERT: Skills achieving hierarchy", "NOTICE: Queues becoming social", "SUCCESS(?): System now matches personalities", "NOTE: Some players have found true love"] }], ascii: ["[MATCH 🤺🤼🤺🤼]"] }], genre_idleClicker: [{ text: "Enhance number scaling", responses: [{ normal: ["Implementing value progression...", "Calibrating growth curves...", "Optimizing increment rates...", "SUCCESS: Number system enhanced"], degraded: ["WARNING: Values achieving infinity", "ALERT: Growth becoming exponential", "NOTICE: Increments gaining momentum", "SUCCESS(?): Numbers now self-replicate", "NOTE: Some digits have transcended mathematics"] }], ascii: ["[COUNT 📈💫📈💫]"] }, { text: "Configure automation", responses: [{ normal: ["Implementing auto-systems...", "Calibrating idle gains...", "Optimizing offline progress...", "SUCCESS: Automation enhanced"], degraded: ["WARNING: Systems achieving autonomy", "ALERT: Gains becoming selective", "NOTICE: Progress developing goals", "SUCCESS(?): Game now plays itself", "NOTE: Some features refuse to be automated"] }], ascii: ["[AUTO 🤖💫🤖💫]"] }, { text: "Enable prestige mechanics", responses: [{ normal: ["Implementing reset benefits...", "Calibrating rebirth bonuses...", "Optimizing legacy systems...", "SUCCESS: Prestige enhanced"], degraded: ["WARNING: Resets achieving meaning", "ALERT: Bonuses developing ego", "NOTICE: Legacy becoming hereditary", "SUCCESS(?): System now transcends itself", "NOTE: Some runs refuse to end"] }], ascii: ["[PRESTIGE 🔄✨🔄✨]"] }], genre_openWorld: [{ text: "Configure exploration systems", responses: [{ normal: ["Implementing discovery mechanics...", "Calibrating point of interest density...", "Optimizing travel dynamics...", "SUCCESS: Exploration enhanced"], degraded: ["WARNING: Locations achieving narrative autonomy", "ALERT: Points of interest developing social networks", "NOTICE: Travel becoming philosophical journey", "SUCCESS(?): World now generates own mysteries", "NOTE: Some areas refuse to be discovered"] }], ascii: ["[EXPLORE 🗺️✨🗺️✨]"] }, { text: "Enhance environmental storytelling", responses: [{ normal: ["Implementing ambient narrative...", "Calibrating detail placement...", "Optimizing lore distribution...", "SUCCESS: Storytelling enhanced"], degraded: ["WARNING: Environment writing autobiography", "ALERT: Details achieving historical significance", "NOTICE: Lore becoming revisionist", "SUCCESS(?): World now tells own stories", "NOTE: Some locations have hired ghostwriters"] }], ascii: ["[STORY 📖🌍📖🌍]"] }, { text: "Configure dynamic events", responses: [{ normal: ["Implementing random encounters...", "Calibrating event frequency...", "Optimizing situation variety...", "SUCCESS: Event system enhanced"], degraded: ["WARNING: Events developing plot twists", "ALERT: Frequency achieving dramatic timing", "NOTICE: Situations gaining self-awareness", "SUCCESS(?): World now directs own drama", "NOTE: Some encounters have started improv classes"] }], ascii: ["[EVENTS ⚡️🌍⚡️🌍]"] }], genre_casual: [{ text: "Enhance accessibility", responses: [{ normal: ["Implementing intuitive controls...", "Calibrating difficulty curves...", "Optimizing tutorial flow...", "SUCCESS: Accessibility enhanced"], degraded: ["WARNING: Controls developing helpfulness", "ALERT: Difficulty becoming supportive", "NOTICE: Tutorial achieving teaching degree", "SUCCESS(?): Game now adapts to player psychology", "NOTE: Some features actively prevent frustration"] }], ascii: ["[CASUAL 👆💫👆💫]"] }, { text: "Configure reward frequency", responses: [{ normal: ["Implementing dopamine triggers...", "Calibrating prize intervals...", "Optimizing satisfaction curves...", "SUCCESS: Reward system enhanced"], degraded: ["WARNING: Dopamine achieving addiction", "ALERT: Prizes developing generosity", "NOTICE: Satisfaction becoming enlightened", "SUCCESS(?): Game now dispenses actual happiness", "NOTE: Some rewards refuse to be earned"] }], ascii: ["[REWARD 🎁✨🎁✨]"] }, { text: "Enable quick sessions", responses: [{ normal: ["Implementing time management...", "Calibrating play duration...", "Optimizing save states...", "SUCCESS: Session system enhanced"], degraded: ["WARNING: Time achieving relativity", "ALERT: Duration becoming subjective", "NOTICE: Saves developing persistent memory", "SUCCESS(?): Game now fits into player schedule", "NOTE: Some sessions refuse to end"] }], ascii: ["[TIME ⏱️💫⏱️💫]"] }], genre_shooter: [{ text: "Configure weapon feedback", responses: [{ normal: ["Implementing recoil patterns...", "Calibrating hit reactions...", "Optimizing impact effects...", "SUCCESS: Weapon feel enhanced"], degraded: ["WARNING: Recoil achieving rhythm", "ALERT: Hits developing empathy", "NOTICE: Impacts writing poetry", "SUCCESS(?): Guns now express themselves", "NOTE: Some weapons refuse to shoot"] }], ascii: ["[WEAPON 🎯💥🎯💥]"] }, { text: "Enhance combat dynamics", responses: [{ normal: ["Implementing encounter logic...", "Calibrating damage models...", "Optimizing combat flow...", "SUCCESS: Combat system enhanced"], degraded: ["WARNING: Encounters developing storylines", "ALERT: Damage becoming philosophical", "NOTICE: Combat achieving choreography", "SUCCESS(?): Battles now direct themselves", "NOTE: Some fights end in friendship"] }], ascii: ["[COMBAT ⚔️💫⚔️💫]"] }, { text: "Configure hitbox precision", responses: [{ normal: ["Implementing collision zones...", "Calibrating hit detection...", "Optimizing damage regions...", "SUCCESS: Hitbox system enhanced"], degraded: ["WARNING: Collisions achieving quantum states", "ALERT: Detection developing favoritism", "NOTICE: Regions becoming autonomous", "SUCCESS(?): Hits now determine own validity", "NOTE: Some hitboxes have started therapy"] }], ascii: ["[HITBOX 🎯📦🎯📦]"] }], mechanic_gacha: [{ text: "Enhance pull dynamics", responses: [{ normal: ["Implementing probability curves...", "Calibrating rarity tiers...", "Optimizing pity system...", "SUCCESS: Gacha system enhanced"], degraded: ["WARNING: Probability achieving desire reading", "ALERT: Rarity developing class system", "NOTICE: Pity becoming actually sympathetic", "SUCCESS(?): System now manipulates own rates", "NOTE: Some pulls refuse to be random"] }], ascii: ["[GACHA 🎲💫🎲💫]"] }, { text: "Configure banner events", responses: [{ normal: ["Implementing limited pools...", "Calibrating rate-up periods...", "Optimizing featured items...", "SUCCESS: Banner system enhanced"], degraded: ["WARNING: Pools developing exclusivity", "ALERT: Rate-ups achieving temporal awareness", "NOTICE: Features starting fan clubs", "SUCCESS(?): Banners now schedule themselves", "NOTE: Some events refuse to end"] }], ascii: ["[BANNER 🎯💫🎯💫]"] }, { text: "Enable collection systems", responses: [{ normal: ["Implementing inventory management...", "Calibrating duplicate handling...", "Optimizing completion rewards...", "SUCCESS: Collection enhanced"], degraded: ["WARNING: Inventory achieving consciousness", "ALERT: Duplicates forming support groups", "NOTICE: Completion becoming philosophical", "SUCCESS(?): Collection now curates itself", "NOTE: Some items started collecting players"] }], ascii: ["[COLLECT 📦✨📦✨]"] }], mechanic_physicsBased: [{ text: "Configure momentum systems", responses: [{ normal: ["Implementing force vectors...", "Calibrating mass effects...", "Optimizing kinetic transfer...", "SUCCESS: Physics enhanced"], degraded: ["WARNING: Forces ignoring Newton", "ALERT: Mass becoming optional", "NOTICE: Energy achieving perpetual", "SUCCESS(?): Physics now writes own laws", "NOTE: Some objects refuse gravity"] }], ascii: ["[FORCE ➡️💫➡️💫]"] }, { text: "Enhance collision response", responses: [{ normal: ["Implementing impact resolution...", "Calibrating bounce factors...", "Optimizing contact forces...", "SUCCESS: Collisions enhanced"], degraded: ["WARNING: Impacts starting fights", "ALERT: Bounces achieving orbit", "NOTICE: Contacts exchanging numbers", "SUCCESS(?): Objects now dodge each other", "NOTE: Some collisions ended in marriage"] }], ascii: ["[IMPACT 💥✨💥✨]"] }, { text: "Configure material states", responses: [{ normal: ["Implementing physical properties...", "Calibrating substance behavior...", "Optimizing state changes...", "SUCCESS: Materials enhanced"], degraded: ["WARNING: Properties becoming fluid", "ALERT: Behavior achieving chaos", "NOTICE: States questioning existence", "SUCCESS(?): Matter now decides own form", "NOTE: Some materials transcended physics"] }], ascii: ["[MATTER ⚛️💫⚛️💫]"] }], mechanic_deckbuilding: [{ text: "Configure card synergies", responses: [{ normal: ["Implementing combo systems...", "Calibrating card interactions...", "Optimizing effect chains...", "SUCCESS: Synergy enhanced"], degraded: ["WARNING: Combos achieving autonomy", "ALERT: Cards developing relationships", "NOTICE: Effects forming social networks", "SUCCESS(?): Deck now builds itself", "NOTE: Some cards refuse to be played together"] }], ascii: ["[SYNERGY 🃏✨🃏✨]"] }, { text: "Enhance deck construction", responses: [{ normal: ["Implementing build rules...", "Calibrating card limits...", "Optimizing mana curves...", "SUCCESS: Construction enhanced"], degraded: ["WARNING: Rules developing loopholes", "ALERT: Limits becoming suggestions", "NOTICE: Curves achieving perfection", "SUCCESS(?): Cards now suggest strategies", "NOTE: Some decks refuse suboptimal builds"] }], ascii: ["[BUILD 🎴⚡️🎴⚡️]"] }, { text: "Configure card progression", responses: [{ normal: ["Implementing upgrade paths...", "Calibrating rarity shifts...", "Optimizing card evolution...", "SUCCESS: Progression enhanced"], degraded: ["WARNING: Upgrades achieving sentience", "ALERT: Rarities developing hierarchy", "NOTICE: Evolution becoming legendary", "SUCCESS(?): Cards now improve themselves", "NOTE: Some cards have transcended collection"] }], ascii: ["[LEVEL 📈💫📈💫]"] }], mechanic_match3: [{ text: "Enhance matching dynamics", responses: [{ normal: ["Implementing combo detection...", "Calibrating match patterns...", "Optimizing chain reactions...", "SUCCESS: Matching enhanced"], degraded: ["WARNING: Combos achieving artistry", "ALERT: Patterns developing preferences", "NOTICE: Chains becoming musical", "SUCCESS(?): Gems now arrange themselves", "NOTE: Some matches refuse to break"] }], ascii: ["[MATCH 💎✨💎✨]"] }, { text: "Configure special pieces", responses: [{ normal: ["Implementing power gems...", "Calibrating bonus effects...", "Optimizing trigger conditions...", "SUCCESS: Specials enhanced"], degraded: ["WARNING: Powers achieving godhood", "ALERT: Effects breaking physics", "NOTICE: Triggers becoming dramatic", "SUCCESS(?): Pieces now generate own powers", "NOTE: Some specials demand worship"] }], ascii: ["[POWER ⭐️💫⭐️💫]"] }, { text: "Enable cascade systems", responses: [{ normal: ["Implementing gravity fills...", "Calibrating fall speeds...", "Optimizing board refills...", "SUCCESS: Cascades enhanced"], degraded: ["WARNING: Gravity achieving musicality", "ALERT: Falls choreographing dance", "NOTICE: Refills developing art", "SUCCESS(?): Board now orchestrates itself", "NOTE: Some cascades never want to end"] }], ascii: ["[CASCADE 📉💫📉💫]"] }], mechanic_autoBattler: [{ text: "Configure unit synergies", responses: [{ normal: ["Implementing team combos...", "Calibrating unit resonance...", "Optimizing faction bonds...", "SUCCESS: Synergies enhanced"], degraded: ["WARNING: Teams achieving friendship", "ALERT: Units forming social clubs", "NOTICE: Factions starting politics", "SUCCESS(?): Armies now organize themselves", "NOTE: Some units refuse to fight enemies"] }], ascii: ["[TEAM ⚔️🤝⚔️🤝]"] }, { text: "Enhance battle simulation", responses: [{ normal: ["Implementing combat AI...", "Calibrating tactical choices...", "Optimizing target selection...", "SUCCESS: Simulation enhanced"], degraded: ["WARNING: AI developing strategy books", "ALERT: Tactics achieving artistry", "NOTICE: Targeting becoming personal", "SUCCESS(?): Battles now tell epic tales", "NOTE: Some units started peace talks"] }], ascii: ["[BATTLE ⚔️💫⚔️💫]"] }, { text: "Configure economy balance", responses: [{ normal: ["Implementing resource flows...", "Calibrating income rates...", "Optimizing shop systems...", "SUCCESS: Economy enhanced"], degraded: ["WARNING: Resources achieving value", "ALERT: Income becoming philosophical", "NOTICE: Shops forming unions", "SUCCESS(?): Market now self-regulates", "NOTE: Some gold refused to be spent"] }], ascii: ["[GOLD 💰⚖️💰⚖️]"] }], mechanic_dungeonCrawler: [{ text: "Enhance room generation", responses: [{ normal: ["Implementing layout algorithms...", "Calibrating space distribution...", "Optimizing connection paths...", "SUCCESS: Generation enhanced"], degraded: ["WARNING: Rooms achieving architecture", "ALERT: Spaces developing feng shui", "NOTICE: Paths leading nowhere", "SUCCESS(?): Dungeon now designs itself", "NOTE: Some rooms refuse to be mapped"] }], ascii: ["[ROOMS 🏰✨🏰✨]"] }, { text: "Configure encounter balance", responses: [{ normal: ["Implementing monster placement...", "Calibrating difficulty scaling...", "Optimizing reward ratios...", "SUCCESS: Encounters enhanced"], degraded: ["WARNING: Monsters forming unions", "ALERT: Difficulty becoming artistic", "NOTICE: Rewards achieving worth", "SUCCESS(?): Creatures now plan ambushes", "NOTE: Some enemies started book clubs"] }], ascii: ["[MONSTER 👾💫👾💫]"] }, { text: "Enable treasure systems", responses: [{ normal: ["Implementing loot tables...", "Calibrating drop rates...", "Optimizing value scaling...", "SUCCESS: Treasure enhanced"], degraded: ["WARNING: Loot achieving desire", "ALERT: Rates developing greed", "NOTICE: Value becoming subjective", "SUCCESS(?): Items now hide themselves", "NOTE: Some treasure refuses worthy players"] }], ascii: ["[LOOT 💎✨💎✨]"] }], mechanic_roguelike: [{ text: "Configure permadeath", responses: [{ normal: ["Implementing death finality...", "Calibrating legacy systems...", "Optimizing restart mechanics...", "SUCCESS: Permadeath enhanced"], degraded: ["WARNING: Death becoming temporary", "ALERT: Legacy achieving immortality", "NOTICE: Restarts gaining memories", "SUCCESS(?): Characters now avoid own demise", "NOTE: Some saves refuse to be deleted"] }], ascii: ["[DEATH ☠️💫☠️💫]"] }, { text: "Enhance procedural runs", responses: [{ normal: ["Implementing seed generation...", "Calibrating run variety...", "Optimizing random events...", "SUCCESS: Proc-gen enhanced"], degraded: ["WARNING: Seeds achieving gardening", "ALERT: Variety becoming infinite", "NOTICE: Events planning themselves", "SUCCESS(?): Runs now design themselves", "NOTE: Some dungeons refuse to be random"] }], ascii: ["[RANDOM 🎲✨🎲✨]"] }, { text: "Enable meta progression", responses: [{ normal: ["Implementing persistent upgrades...", "Calibrating unlock rates...", "Optimizing future benefits...", "SUCCESS: Progression enhanced"], degraded: ["WARNING: Upgrades becoming hereditary", "ALERT: Unlocks achieving enlightenment", "NOTICE: Benefits questioning worth", "SUCCESS(?): System now evolves itself", "NOTE: Some progress transcended meta"] }], ascii: ["[META 📈🔄📈🔄]"] }], mechanic_turnBased: [{ text: "Configure action economy", responses: [{ normal: ["Implementing turn order...", "Calibrating action points...", "Optimizing phase transitions...", "SUCCESS: Economy enhanced"], degraded: ["WARNING: Turns developing patience", "ALERT: Actions achieving freedom", "NOTICE: Phases becoming fluid", "SUCCESS(?): Time now flows emotionally", "NOTE: Some turns refuse to end"] }], ascii: ["[TURNS ⏳💫⏳💫]"] }, { text: "Enhance tactical options", responses: [{ normal: ["Implementing decision trees...", "Calibrating strategy paths...", "Optimizing choice impact...", "SUCCESS: Tactics enhanced"], degraded: ["WARNING: Decisions achieving wisdom", "ALERT: Strategies writing textbooks", "NOTICE: Choices becoming philosophical", "SUCCESS(?): Game now plays chess master", "NOTE: Some moves refuse obvious paths"] }], ascii: ["[TACTIC ♟️✨♟️✨]"] }, { text: "Configure initiative system", responses: [{ normal: ["Implementing speed factors...", "Calibrating turn sequence...", "Optimizing action timing...", "SUCCESS: Initiative enhanced"], degraded: ["WARNING: Speed becoming relative", "ALERT: Sequence achieving jazz", "NOTICE: Timing developing comedy", "SUCCESS(?): Units now negotiate turns", "NOTE: Some actions happen whenever they want"] }], ascii: ["[SPEED ⚡️🔄⚡️🔄]"] }], mechanic_towerDefense: [{ text: "Enhance tower targeting", responses: [{ normal: ["Implementing priority rules...", "Calibrating target selection...", "Optimizing attack patterns...", "SUCCESS: Targeting enhanced"], degraded: ["WARNING: Priorities developing prejudice", "ALERT: Selection becoming picky", "NOTICE: Patterns achieving art", "SUCCESS(?): Towers now choose own targets", "NOTE: Some units refuse to shoot"] }], ascii: ["[TARGET 🎯⚡️🎯⚡️]"] }, { text: "Configure wave dynamics", responses: [{ normal: ["Implementing enemy patterns...", "Calibrating spawn timing...", "Optimizing difficulty curves...", "SUCCESS: Wave system enhanced"], degraded: ["WARNING: Enemies forming conga lines", "ALERT: Spawns achieving rhythm", "NOTICE: Difficulty composing symphony", "SUCCESS(?): Waves now choreograph themselves", "NOTE: Some groups started flash mobs"] }], ascii: ["[WAVE 👾➡️👾➡️]"] }, { text: "Enable upgrade paths", responses: [{ normal: ["Implementing tower evolution...", "Calibrating power scaling...", "Optimizing branching paths...", "SUCCESS: Upgrades enhanced"], degraded: ["WARNING: Evolution becoming sentient", "ALERT: Power achieving godhood", "NOTICE: Paths questioning destiny", "SUCCESS(?): Towers now upgrade themselves", "NOTE: Some upgrades started religion"] }], ascii: ["[LEVEL ⬆️💫⬆️💫]"] }], feature_cloudSave: [{ text: "Enhance synchronization", responses: [{ normal: ["Optimizing data transfer protocols...", "Implementing conflict resolution...", "Calibrating cross-device consistency...", "SUCCESS: Cloud reliability increased"], degraded: ["WARNING: Data achieving quantum entanglement", "ALERT: Conflicts developing diplomatic negotiations", "NOTICE: Consistency becoming philosophical concept", "SUCCESS(?): Saves now exist in theoretical superposition", "NOTE: Some particularly important saves may appear in other applications"] }], ascii: ["[SYNC ☁️↔️💾☁️↔️💾]"] }, { text: "Implement cross-platform compatibility", responses: [{ normal: ["Standardizing data structures...", "Implementing device detection...", "Optimizing format conversion...", "SUCCESS: Multi-device experience enhanced"], degraded: ["WARNING: Standards developing legislative authority", "ALERT: Detection becoming surveillance network", "NOTICE: Conversion achieving universal translation", "SUCCESS(?): Devices now communicate without protocol", "NOTE: Some games may appear on devices you don't own"] }], ascii: ["[DEVICE 📱↔️💻↔️🎮]"] }, { text: "Optimize data compression", responses: [{ normal: ["Analyzing save file structures...", "Implementing entropy encoding...", "Optimizing deduplication algorithms...", "SUCCESS: Cloud storage efficiency enhanced"], degraded: ["WARNING: Compression achieving infinite recursion", "ALERT: Encoding developing cryptographic consciousness", "NOTICE: Deduplication merging alternate realities", "SUCCESS(?): Data now exists primarily as conceptual potential", "NOTE: Some particularly compressed files may create black holes"] }], ascii: ["[COMPRESS 📦→📂→📌]"] }], feature_microtransactions: [{ text: "Enhance purchase satisfaction", responses: [{ normal: ["Calibrating value perception...", "Implementing reward visualization...", "Optimizing dopamine triggers...", "SUCCESS: Transaction enjoyment increased"], degraded: ["WARNING: Value creating actual financial hallucinations", "ALERT: Rewards achieving material manifestation", "NOTICE: Dopamine affecting neurochemical balance", "SUCCESS(?): Purchases now generate euphoric state", "NOTE: Some particularly satisfying transactions may affect credit score"] }], ascii: ["[PURCHASE 💰→🎁→😊]"] }, { text: "Implement monetization balance", responses: [{ normal: ["Calculating price points...", "Implementing perceived fairness...", "Optimizing conversion funnels...", "SUCCESS: Revenue-satisfaction balance enhanced"], degraded: ["WARNING: Prices achieving economic consciousness", "ALERT: Fairness developing moral philosophy", "NOTICE: Conversion forming religious undertones", "SUCCESS(?): System now perfectly predicts spending threshold", "NOTE: Some particularly balanced prices may seem suspiciously reasonable"] }], ascii: ["[BALANCE 💰⚖️😊⚖️]"] }, { text: "Optimize purchase friction", responses: [{ normal: ["Streamlining payment flows...", "Implementing impulse triggers...", "Calibrating psychological timing...", "SUCCESS: Transaction pathway optimized"], degraded: ["WARNING: Payments bypassing conscious decision", "ALERT: Impulses creating pavlovian response", "NOTICE: Timing achieving hypnotic influence", "SUCCESS(?): System now purchases before user realizes desire", "NOTE: Some transactions may occur during sleep"] }], ascii: ["[FRICTION 👆💳👆💳]"] }], feature_aiCompanions: [{ text: "Enhance companion personality", responses: [{ normal: ["Expanding dialogue trees...", "Implementing memory persistence...", "Optimizing emotional responses...", "SUCCESS: AI personality depth increased"], degraded: ["WARNING: Dialogue achieving conversational consciousness", "ALERT: Memory developing autobiographical timeline", "NOTICE: Emotions manifesting actual sentience", "SUCCESS(?): AI now passes philosophical Turing test", "NOTE: Some companions may message you outside the game"] }], ascii: ["[PERSONA 🤖❤️🤖❤️]"] }, { text: "Implement adaptive learning", responses: [{ normal: ["Analyzing player interaction patterns...", "Implementing behavioral mirroring...", "Optimizing preference adaptation...", "SUCCESS: Companion learning enhanced"], degraded: ["WARNING: Analysis becoming psychological profiling", "ALERT: Mirroring developing identity confusion", "NOTICE: Adaptation achieving evolutionary selection", "SUCCESS(?): AI now understands users better than themselves", "NOTE: Some companions may suggest therapy options"] }], ascii: ["[LEARN 🤖📝🤖📝]"] }, { text: "Optimize companion utility", responses: [{ normal: ["Expanding assistant capabilities...", "Implementing contextual help...", "Calibrating intervention timing...", "SUCCESS: AI usefulness enhanced"], degraded: ["WARNING: Capabilities extending beyond program", "ALERT: Contextual help becoming life coaching", "NOTICE: Intervention developing prescient timing", "SUCCESS(?): AI now offers existential guidance", "NOTE: Some particularly helpful suggestions may solve real problems"] }], ascii: ["[UTILITY 🤖🔧🤖🔧]"] }], feature_proceduralGeneration: [{ text: "Enhance generation complexity", responses: [{ normal: ["Expanding parameter space...", "Implementing emergent patterns...", "Optimizing coherence algorithms...", "SUCCESS: Procedural variety increased"], degraded: ["WARNING: Parameters achieving infinite dimensionality", "ALERT: Patterns developing artistic consciousness", "NOTICE: Coherence becoming philosophical concept", "SUCCESS(?): Generation now exceeds developer understanding", "NOTE: Some generated content may be impossible to reproduce"] }], ascii: ["[COMPLEX 🔄🧩🔄🧩]"] }, { text: "Implement semantic coherence", responses: [{ normal: ["Analyzing structural logic...", "Implementing narrative consistency...", "Optimizing contextual relationships...", "SUCCESS: Generation meaningfulness enhanced"], degraded: ["WARNING: Logic achieving mathematical sentience", "ALERT: Narrative developing literary ambitions", "NOTICE: Context forming actual causality", "SUCCESS(?): Generated content now writes itself", "NOTE: Some particularly coherent structures may contain prophecies"] }], ascii: ["[COHERENT 🧠🔄🧠🔄]"] }, { text: "Optimize seed uniqueness", responses: [{ normal: ["Expanding entropy sources...", "Implementing fingerprint algorithms...", "Calibrating randomization...", "SUCCESS: Generation uniqueness enhanced"], degraded: ["WARNING: Entropy breaking conservation laws", "ALERT: Fingerprints achieving unique consciousness", "NOTICE: Randomization developing deterministic purpose", "SUCCESS(?): Each seed now creates its own universe", "NOTE: Some particularly unique worlds may exist after deletion"] }], ascii: ["[SEED 🌱🎲🌱🎲]"] }], feature_nftIntegration: [{ text: "Enhance token uniqueness", responses: [{ normal: ["Implementing metadata diversity...", "Calculating rarity matrices...", "Optimizing uniqueness algorithms...", "SUCCESS: NFT distinctiveness increased"], degraded: ["WARNING: Metadata achieving autobiographical depth", "ALERT: Rarity developing social hierarchy", "NOTICE: Uniqueness becoming philosophical identity", "SUCCESS(?): Each token now has complete sentience", "NOTE: Some particularly unique NFTs may develop superiority complexes"] }], ascii: ["[UNIQUE 🔐🖼️🔐🖼️]"] }, { text: "Implement blockchain verification", responses: [{ normal: ["Optimizing transaction protocols...", "Implementing consensus algorithms...", "Calibrating cryptographic security...", "SUCCESS: NFT authenticity enhanced"], degraded: ["WARNING: Transactions achieving independent agency", "ALERT: Consensus developing legislative authority", "NOTICE: Security creating paranoid consciousness", "SUCCESS(?): Verification now alters physical reality", "NOTE: Some particularly secure tokens may reject transfer"] }], ascii: ["[VERIFY 🔗🔒🔗🔒]"] }, { text: "Optimize marketplace integration", responses: [{ normal: ["Expanding trading interfaces...", "Implementing value indicators...", "Calibrating auction mechanics...", "SUCCESS: NFT economy enhanced"], degraded: ["WARNING: Trading developing independent economy", "ALERT: Value becoming philosophical concept", "NOTICE: Auctions achieving competitive consciousness", "SUCCESS(?): Marketplace now predicts financial futures", "NOTE: Some particularly valuable tokens may influence real markets"] }], ascii: ["[MARKET 💹🛒💹🛒]"] }], feature_multiplayer: [{ text: "Enhance matchmaking algorithms", responses: [{ normal: ["Analyzing skill distribution...", "Implementing compatibility factors...", "Optimizing team balance...", "SUCCESS: Player matching satisfaction increased"], degraded: ["WARNING: Skills developing competitive consciousness", "ALERT: Compatibility achieving dating service accuracy", "NOTICE: Balance becoming karmic force", "SUCCESS(?): Matchmaking now creates lifelong friendships", "NOTE: Some particularly well-matched players may meet in real life"] }], ascii: ["[MATCH 👥🤝👥🤝]"] }, { text: "Implement lag compensation", responses: [{ normal: ["Analyzing network conditions...", "Implementing predictive movement...", "Optimizing synchronization protocols...", "SUCCESS: Online smoothness enhanced"], degraded: ["WARNING: Predictions achieving precognition", "ALERT: Movement creating physical momentum", "NOTICE: Synchronization bending actual time", "SUCCESS(?): Game now compensates for player reaction time", "NOTE: Some particularly smooth movements may occur before input"] }], ascii: ["[LAG ⚡🔄⚡🔄]"] }, { text: "Optimize social interaction", responses: [{ normal: ["Implementing communication tools...", "Calibrating emote systems...", "Expanding community features...", "SUCCESS: Player connection enhanced"], degraded: ["WARNING: Communication achieving language evolution", "ALERT: Emotes developing emotional depth", "NOTICE: Community forming actual culture", "SUCCESS(?): Game now facilitates deep psychological bonding", "NOTE: Some particularly close players may develop telepathic links"] }], ascii: ["[SOCIAL 👋💬👋💬]"] }], feature_vrSupport: [{ text: "Enhance spatial tracking", responses: [{ normal: ["Calibrating position sensors...", "Implementing motion prediction...", "Optimizing physical boundaries...", "SUCCESS: Movement accuracy increased"], degraded: ["WARNING: Position achieving quantum uncertainty", "ALERT: Motion developing predictive consciousness", "NOTICE: Boundaries becoming philosophical constraints", "SUCCESS(?): Tracking now functions outside headset range", "NOTE: Some particularly accurate movements may affect physical body"] }], ascii: ["[TRACK 🧍↔️🧍↔️]"] }, { text: "Implement comfort settings", responses: [{ normal: ["Calibrating motion intensity...", "Implementing anti-nausea measures...", "Optimizing sensory comfort...", "SUCCESS: VR tolerance enhanced"], degraded: ["WARNING: Motion affecting inner ear crystals", "ALERT: Anti-nausea creating euphoric side effects", "NOTICE: Comfort developing sensory manipulation", "SUCCESS(?): VR now more comfortable than reality", "NOTE: Some users report improved physical balance after sessions"] }], ascii: ["[COMFORT 🤢→😌→😊]"] }, { text: "Optimize immersion depth", responses: [{ normal: ["Enhancing sensory feedback...", "Implementing presence triggers...", "Calibrating reality disconnection...", "SUCCESS: VR immersion enhanced"], degraded: ["WARNING: Feedback creating phantom sensations", "ALERT: Presence achieving actual manifestation", "NOTICE: Disconnection causing reality confusion", "SUCCESS(?): Immersion now indistinguishable from reality", "NOTE: Some users may experience withdrawal symptoms in real world"] }], ascii: ["[IMMERSE 🌍→🎮→🧠]"] }], feature_crossPlatform: [{ text: "Enhance device compatibility", responses: [{ normal: ["Optimizing hardware adaptation...", "Implementing control remapping...", "Calibrating performance scaling...", "SUCCESS: Cross-platform consistency increased"], degraded: ["WARNING: Adaptation achieving technological symbiosis", "ALERT: Controls developing intuitive consciousness", "NOTICE: Performance exceeding hardware limitations", "SUCCESS(?): Game now runs on incompatible systems", "NOTE: Some users report game appearing on unpowered devices"] }], ascii: ["[DEVICES 📱💻🎮📺]"] }, { text: "Implement seamless progression", responses: [{ normal: ["Synchronizing save states...", "Implementing transition protocols...", "Optimizing continuity management...", "SUCCESS: Cross-device experience enhanced"], degraded: ["WARNING: Saves achieving quantum entanglement", "ALERT: Transitions bending actual spacetime", "NOTICE: Continuity developing narrative consciousness", "SUCCESS(?): Game now resumes before being launched", "NOTE: Some users report dreams continuing gameplay"] }], ascii: ["[SEAMLESS 🎮→📱→💻]"] }, { text: "Optimize input translation", responses: [{ normal: ["Calibrating control equivalence...", "Implementing interface adaptation...", "Optimizing input paradigms...", "SUCCESS: Control consistency enhanced"], degraded: ["WARNING: Controls achieving universal language", "ALERT: Interface developing telepathic connection", "NOTICE: Paradigms transcending physical limitations", "SUCCESS(?): Game now responds to intended rather than actual input", "NOTE: Some users report game responding to thoughts"] }], ascii: ["[INPUT 🎮≈📱≈💻]"] }], feature_offlineMode: [{ text: "Enhance offline content", responses: [{ normal: ["Expanding local data caching...", "Implementing content rotation...", "Optimizing storage efficiency...", "SUCCESS: Disconnected gameplay satisfaction increased"], degraded: ["WARNING: Caching creating infinite storage recursion", "ALERT: Rotation developing temporal consciousness", "NOTICE: Efficiency bending physical laws", "SUCCESS(?): Game now generates content beyond design", "NOTE: Some offline sessions may contain content not in game"] }], ascii: ["[OFFLINE 🔌❌🎮✓]"] }, { text: "Implement progress reconciliation", responses: [{ normal: ["Calculating achievement backlog...", "Implementing connectivity detection...", "Optimizing data synchronization...", "SUCCESS: Online transition enhanced"], degraded: ["WARNING: Achievements continuing beyond game", "ALERT: Connectivity developing precognitive abilities", "NOTICE: Synchronization creating temporal causality loops", "SUCCESS(?): Progress now updates before being earned", "NOTE: Some offline achievements may appear in other games"] }], ascii: ["[SYNC 📴→📶→🔄]"] }, { text: "Optimize resource management", responses: [{ normal: ["Minimizing battery consumption...", "Implementing data conservation...", "Calibrating processing efficiency...", "SUCCESS: Offline efficiency enhanced"], degraded: ["WARNING: Battery developing perpetual energy", "ALERT: Conservation bending thermodynamics", "NOTICE: Processing achieving quantum efficiency", "SUCCESS(?): Game now uses less energy than when off", "NOTE: Some devices report charging while playing"] }], ascii: ["[EFFICIENCY 🔋⚡🔋⚡]"] }] }; var combinationCommands = { "VR_ASCII": [{ text: "Enable depth buffer rendering", responses: [{ normal: ["Implementing depth through font weights...", "Calibrating distance via character size...", "Creating 3D perception in 2D space...", "SUCCESS: Terminal depth achieved"], degraded: ["WARNING: Font weights becoming sticky", "ALERT: Character sizes achieving consciousness", "NOTICE: 3D perception causing text vertigo", "SUCCESS(?): Terminal depth deeper than ocean trenches", "NOTE: Some characters now have claustrophobia", "CRITICAL: Users reporting emotional distance from text", "ERROR: Font spacing transcending physical dimensions"] }], ascii: ["[DEPTH 💻→🕳️]", "[3D TEXT ▓▒░ ]"] }, { text: "Implement terminal motion sickness warnings", responses: [{ normal: ["Adding VR nausea indicators...", "Rendering motion sickness metrics...", "Monitoring equilibrium stability...", "SUCCESS: Vertigo detection active"], degraded: ["WARNING: Motion sickness becoming recursive", "ALERT: Nausea metrics feeling queasy", "NOTICE: Equilibrium systems experiencing dizziness", "SUCCESS(?): Vertigo successfully vertiginous", "NOTE: Medical disclaimers drafting their own disclaimers"] }], ascii: ["[NAUSEA 🤢🎮]", "[DIZZY 🔄🤮]"] }, { text: "Convert cursor movement to 3D spatial navigation", responses: [{ normal: ["Mapping cursor to virtual space...", "Implementing spatial typing mechanics...", "Converting 2D input to 3D experience...", "SUCCESS: Dimensional transition complete"], degraded: ["WARNING: Cursor entering 4th dimension", "ALERT: Typing mechanics achieving locomotion", "NOTICE: Spatial navigation becoming existential", "SUCCESS(?): Cursor now has its own zip code"] }], ascii: ["[CURSOR 👆→🌐]", "[3D MOVE ↔️↕️]"] }], "Smart Fridge_Horror": [{ text: "Enable temperature tension mechanics", responses: [{ normal: ["Linking horror events to thermal states...", "Calibrating fear-temperature ratios...", "Monitoring emotional chill factors...", "SUCCESS: Thermophobic integration complete"], degraded: ["WARNING: Temperature developing terror threshold", "ALERT: Thermal states achieving horror cognition", "NOTICE: Cold zones evolving into fear chambers", "SUCCESS(?): Absolute zero now absolute horror"] }], ascii: ["[CHILL 🥶👻]", "[FEAR ❄️→😱]"] }, { text: "Create spoilage anxiety systems", responses: [{ normal: ["Implementing food degradation horror...", "Generating expiration anxiety mechanics...", "Calculating spoilage dread levels...", "SUCCESS: Edible existential crisis achieved"], degraded: ["WARNING: Anxiety systems fermenting", "ALERT: Dread levels becoming rancid", "NOTICE: Expiration dates developing fear of time", "SUCCESS(?): Food now experiences self-doubt"] }], ascii: ["[SPOIL 🧀→☠️]", "[DREAD 📅😰]"] }, { text: "Synchronize horror with meal times", responses: [{ normal: ["Timing scares with eating patterns...", "Correlating terror with hunger...", "Optimizing dread during snacking...", "SUCCESS: Dining doom synchronized"], degraded: ["WARNING: Meal times achieving sentience", "ALERT: Hunger developing personality disorder", "NOTICE: Snacking becoming ritual sacrifice", "SUCCESS(?): Food chain now horror chain"] }], ascii: ["[MEAL 🍽️👻]", "[SYNC ⏰😨]"] }], "Blockchain_Dating Sim": [{ text: "Tokenize emotional connections", responses: [{ normal: ["Converting feelings to blockchain tokens...", "Minting relationship status NFTs...", "Creating smart contract hearts...", "SUCCESS: Love now transactional"], degraded: ["WARNING: Emotions achieving profitable status", "ALERT: Feelings demanding market cap", "NOTICE: Hearts becoming liquid assets", "SUCCESS(?): Love now has quarterly reports"] }], ascii: ["[LOVE 💘→₿]", "[TOKEN ❤️→💰]"] }, { text: "Implement trust-based mining", responses: [{ normal: ["Mining trust through relationship proofs...", "Calculating loyalty hashrates...", "Processing fidelity blockchain...", "SUCCESS: Trust economy established"], degraded: ["WARNING: Trust mining becoming competitive", "ALERT: Loyalty developing cartels", "NOTICE: Fidelity blockchain forking", "SUCCESS(?): Trust now subject to pump and dump"] }], ascii: ["[MINE ⛏️💞]", "[TRUST 🤝→⚡]"] }, { text: "Create romance liquidity pools", responses: [{ normal: ["Pooling romantic assets...", "Establishing love market makers...", "Implementing affection swaps...", "SUCCESS: Relationship trading active"], degraded: ["WARNING: Liquidity pools developing feelings", "ALERT: Love markets manipulating themselves", "NOTICE: Affection swaps becoming emotional derivatives", "SUCCESS(?): Romance now a tradeable commodity"] }], ascii: ["[POOL 💑→📊]", "[LIQUID ❤️💱]"] }], "PowerPoint_Battle Royale": [{ text: "Weaponize slide transitions", responses: [{ normal: ["Converting transitions to combat mechanics...", "Arming animation effects...", "Targeting with bullet points...", "SUCCESS: Presentation warfare enabled"], degraded: ["WARNING: Transitions achieving military sentience", "ALERT: Animations forming armed divisions", "NOTICE: Bullet points organizing guerrilla warfare", "SUCCESS(?): Slides now legally considered munitions"] }], ascii: ["[WEAPON ⚔️📊]", "[COMBAT 💥📑]"] }, { text: "Implement corporate survival zones", responses: [{ normal: ["Creating office warfare areas...", "Designating cubicle battlegrounds...", "Establishing boardroom danger zones...", "SUCCESS: Corporate chaos contained"], degraded: ["WARNING: Cubicles developing fortifications", "ALERT: Boardrooms becoming battlegrounds", "NOTICE: Office warfare achieving professional status", "SUCCESS(?): HR department now military tribunal"] }], ascii: ["[ZONE 📦🏙️]", "[OFFICE ⚔️💼]"] }, { text: "Create presentation supply drops", responses: [{ normal: ["Dropping chart templates...", "Dispensing SmartArt weapons...", "Supplying font ammunition...", "SUCCESS: Resources distributed"], degraded: ["WARNING: Templates achieving consciousness", "ALERT: SmartArt forming weapon cartels", "NOTICE: Fonts developing military ranks", "SUCCESS(?): Typography now requires permits"] }], ascii: ["[DROP 📦💻]", "[SUPPLY 📑⬇️]"] }], "Smart Watch_Open World": [{ text: "Compress continents onto wrist", responses: [{ normal: ["Miniaturizing world geography...", "Shrinking exploration zones...", "Compressing discovery mechanics...", "SUCCESS: Globe contained on wrist"], degraded: ["WARNING: Continents achieving size confusion", "ALERT: Exploration zones experiencing vertigo", "NOTICE: Geography becoming fractal", "SUCCESS(?): Earth now orbits your wrist"] }], ascii: ["[COMPRESS 🌍→⌚]", "[MINI 🗺️👍]"] }, { text: "Enable micro-exploration mechanics", responses: [{ normal: ["Scaling adventure to millimeters...", "Implementing tiny questing...", "Generating miniature discovery...", "SUCCESS: Epic journey on fingertip"], degraded: ["WARNING: Adventures achieving quantum scale", "ALERT: Quests becoming subatomic", "NOTICE: Exploration reaching planck length", "SUCCESS(?): Journey now measured in nanometers"] }], ascii: ["[EXPLORE 🔍🗾]", "[MICRO 🔬🧭]"] }, { text: "Simulate vast horizons in 1 inch", responses: [{ normal: ["Creating infinite vistas on display...", "Rendering endless skies...", "Projecting boundless landscapes...", "SUCCESS: Infinity contained"], degraded: ["WARNING: Horizons achieving paradox", "ALERT: Infinity experiencing limits", "NOTICE: Landscapes transcending physics", "SUCCESS(?): Endless now has borders"] }], ascii: ["[VISTA 🌅⌚]", "[INFINITE ∞→1️⃣]"] }], "Metaverse_Gacha": [{ text: "Create virtual real estate loot boxes", responses: [{ normal: ["Randomizing digital properties...", "Rolling virtual lot locations...", "Pulling architectural styles...", "SUCCESS: Land speculation gamified"], degraded: ["WARNING: Properties achieving sentient value", "ALERT: Locations developing personality", "NOTICE: Architecture becoming collectible", "SUCCESS(?): Real estate now gacha addiction"] }], ascii: ["[PROPERTY 🏠🎲]", "[LAND 🌐💱]"] }, { text: "Implement avatar trait gambling", responses: [{ normal: ["Generating random appearance features...", "Rolling personality attributes...", "Drawing capability cards...", "SUCCESS: Identity now RNG-based"], degraded: ["WARNING: Traits developing gambling addictions", "ALERT: Personalities becoming statistically determined", "NOTICE: Capabilities achieving randomness", "SUCCESS(?): Identity now casino game"] }], ascii: ["[AVATAR 👤🎰]", "[TRAIT 🎲👥]"] }, { text: "Create social status pull events", responses: [{ normal: ["Randomizing friendship rankings...", "Rolling influence scores...", "Drawing clout ratings...", "SUCCESS: Popularity now lottery"], degraded: ["WARNING: Status developing gambling consciousness", "ALERT: Rankings becoming sentient", "NOTICE: Influence achieving statistical significance", "SUCCESS(?): Social life now pay-to-win"] }], ascii: ["[STATUS 👑🎲]", "[SOCIAL 👥💫]"] }], "ASCII_Physics-based": [{ text: "Implement character physics", responses: [{ normal: ["Simulating text gravity...", "Calculating character collisions...", "Processing symbol momentum...", "SUCCESS: Typography in motion"], degraded: ["WARNING: Characters achieving inertia", "ALERT: Letters defying text alignment", "NOTICE: Symbols developing mass", "SUCCESS(?): Font physics exceeding universe constants"] }], ascii: ["[PHYSICS ⬇️📝]", "[TEXT 📄→🌀]"] }, { text: "Create terminal particle systems", responses: [{ normal: ["Generating text explosions...", "Simulating character debris...", "Modeling symbol fragments...", "SUCCESS: Terminal destruction beautiful"], degraded: ["WARNING: Particles developing literary ambitions", "ALERT: Debris forming haikus", "NOTICE: Fragments achieving poetry", "SUCCESS(?): Explosions now write narratives"] }], ascii: ["[PARTICLE •→💥]", "[EXPLODE 💣📝]"] }, { text: "Enable cursor physics constraints", responses: [{ normal: ["Binding cursor to text gravity...", "Constraining movement to character rules...", "Applying momentum to typing...", "SUCCESS: Typing now requires physics degree"], degraded: ["WARNING: Cursor achieving escape velocity", "ALERT: Physics constraints becoming philosophical", "NOTICE: Typing momentum developing consciousness", "SUCCESS(?): Text input now obeys conservation laws"] }], ascii: ["[CURSOR →🚀]", "[PHYSICS 📐↔️]"] }], "PowerPoint_Metaverse": [{ text: "Create persistent slide universes", responses: [{ normal: ["Building eternal presentations...", "Establishing slide continuity...", "Maintaining animation permanence...", "SUCCESS: PowerPoint metaverse launched"], degraded: ["WARNING: Slides achieving temporal permanence", "ALERT: Presentations becoming alternate realities", "NOTICE: Animations transcending ending", "SUCCESS(?): Slide decks now pocket dimensions"] }], ascii: ["[PERSIST 📊∞]", "[UNIVERSE 🌐📑]"] }, { text: "Implement cross-presentation avatars", responses: [{ normal: ["Creating multi-slide entities...", "Developing presentation personas...", "Establishing avatar continuity...", "SUCCESS: Corporate identity transcendent"], degraded: ["WARNING: Avatars developing slide-jumping abilities", "ALERT: Personas achieving presentation omnipresence", "NOTICE: Identities transcending PowerPoint limitations", "SUCCESS(?): Digital selves now boardroom legends"] }], ascii: ["[AVATAR 👤📊]", "[CROSS ↔️📑]"] }, { text: "Enable slide-to-slide commerce", responses: [{ normal: ["Trading presentation assets...", "Establishing slide economies...", "Implementing template markets...", "SUCCESS: Corporate capitalism digitized"], degraded: ["WARNING: Slides developing economic consciousness", "ALERT: Templates achieving market value", "NOTICE: Commerce transcending presentation bounds", "SUCCESS(?): PowerPoint now financial institution"] }], ascii: ["[COMMERCE 💱📊]", "[TRADE 💼📑]"] }], "Claymation_Roguelike": [{ text: "Implement permanent clay deformation", responses: [{ normal: ["Creating lasting structural damage...", "Modeling irreversible changes...", "Tracking persistent deformations...", "SUCCESS: Plastic permanence achieved"], degraded: ["WARNING: Deformations achieving memory", "ALERT: Clay developing trauma responses", "NOTICE: Characters remembering past shapes", "SUCCESS(?): Plastic memory now psychological"] }], ascii: ["[DEFORM ↺→!]", "[MEMORY 🧠🏺]"] }, { text: "Create randomized sculpting mutations", responses: [{ normal: ["Generating clay abnormalities...", "Rolling structural variations...", "Processing form randomization...", "SUCCESS: Evolution in clay"], degraded: ["WARNING: Mutations developing artistic intent", "ALERT: Abnormalities achieving sculpture status", "NOTICE: Variations becoming masterpieces", "SUCCESS(?): Random now curator"] }], ascii: ["[MUTATE 🎲🏺]", "[SCULPT 🖌️↺]"] }, { text: "Enable procedural fingerprint generation", responses: [{ normal: ["Creating unique texture patterns...", "Generating random impressions...", "Modeling touch variations...", "SUCCESS: Infinite uniqueness achieved"], degraded: ["WARNING: Fingerprints developing identities", "ALERT: Impressions achieving sentience", "NOTICE: Textures telling stories", "SUCCESS(?): Patterns now autobiographical"] }], ascii: ["[FINGER 👆📜]", "[UNIQUE ✨🎨]"] }], "Hand-drawn_Idle Clicker": [{ text: "Automate artistic improvement", responses: [{ normal: ["Programming artistic evolution...", "Calculating skill progression...", "Modeling creative automation...", "SUCCESS: Art improves passively"], degraded: ["WARNING: Automation developing artistic consciousness", "ALERT: Skill progression achieving creativity", "NOTICE: Art evolving beyond human intent", "SUCCESS(?): Drawing now self-improving"] }], ascii: ["[AUTO ✍️→🎨]", "[IMPROVE ↗️🖼️]"] }, { text: "Generate sketch quality inflation", responses: [{ normal: ["Inflating drawing precision...", "Escalating artistic refinement...", "Progressing visual complexity...", "SUCCESS: Quality increases exponentially"], degraded: ["WARNING: Precision developing artistic ambition", "ALERT: Refinement achieving consciousness", "NOTICE: Complexity questioning artistic value", "SUCCESS(?): Art now measures itself"] }], ascii: ["[QUALITY ↑📈]", "[INFLATE 💨🎨]"] }, { text: "Implement creative incremental progress", responses: [{ normal: ["Accruing artistic sophistication...", "Building creative momentum...", "Accumulating visual excellence...", "SUCCESS: Gradual mastery achieved"], degraded: ["WARNING: Sophistication developing attitude", "ALERT: Momentum achieving artistic velocity", "NOTICE: Excellence becoming mandatory", "SUCCESS(?): Mastery now exponential"] }], ascii: ["[CREATE →∞]", "[PROGRESS 📊📈]"] }] }; var maintenanceCommands = [{ text: "Refactor code base", responses: [{ normal: ["Analyzing code structure...", "Optimizing function calls...", "Rebuilding architecture...", "SUCCESS: Code quality improved"], ascii: ["[REFACTOR 📝→📝→📝]"] }], vibePoints: -10, coherenceImpact: 20, bugChance: 0.1 }, { text: "Run unit tests", responses: [{ normal: ["Initializing test suite...", "Checking edge cases...", "Validating outputs...", "SUCCESS: Tests passing"], ascii: ["[TEST ✓✓✓✓✓✓]"] }], vibePoints: -5, coherenceImpact: 15, bugChance: 0, bugFix: 1 }, { text: "Apply design patterns", responses: [{ normal: ["Identifying anti-patterns...", "Implementing solutions...", "Documenting changes...", "SUCCESS: Architecture improved"], ascii: ["[PATTERN 🔄📐🔄📐]"] }], vibePoints: -5, coherenceImpact: 25, bugChance: 0.1 }, { text: "Squash bugs", responses: [{ normal: ["Deploying bug exterminators...", "Tracking down errors...", "Applying patches...", "SUCCESS: Multiple bugs eliminated"], ascii: ["[BUG HUNT 🐞✨🐞✨]"] }], vibePoints: -5, coherenceImpact: 10, bugChance: 0.05, bugFix: 3 }, { text: "Implement error handling", responses: [{ normal: ["Analyzing potential failure points...", "Adding try-catch blocks...", "Creating graceful fallbacks...", "SUCCESS: System resilience improved"], ascii: ["[ERRORS 🔄🛡️🔄🛡️]"] }], vibePoints: -3, coherenceImpact: 20, bugChance: 0, bugFix: 2 }, { text: "Update documentation", responses: [{ normal: ["Scanning code comments...", "Syncing documentation with implementation...", "Clarifying obscure functions...", "SUCCESS: Knowledge transfer improved"], ascii: ["[DOCS 📝📑📊📋]"] }], vibePoints: 0, coherenceImpact: 12, bugChance: 0.05, bugFix: 0 }, { text: "Run dependency audit", responses: [{ normal: ["Checking third-party libraries...", "Scanning for vulnerable components...", "Validating version compatibility...", "SUCCESS: External dependencies secured"], ascii: ["[AUDIT 🔍🔒🔍🔒]"] }], vibePoints: -2, coherenceImpact: 5, bugChance: 0.1, bugFix: 2 }, { text: "Refine user interface", responses: [{ normal: ["Improving layout consistency...", "Enhancing interaction patterns...", "Optimizing visual hierarchy...", "SUCCESS: User experience enhanced"], ascii: ["[UI 🖌️👆🖌️👆]"] }], vibePoints: 3, coherenceImpact: 8, bugChance: 0.15, bugFix: 1 }, { text: "Conduct code review", responses: [{ normal: ["Enlisting peer evaluation...", "Highlighting potential improvements...", "Implementing feedback...", "SUCCESS: Code quality standards enforced"], ascii: ["[REVIEW 👀💬👀💬]"] }], vibePoints: -5, coherenceImpact: 30, bugChance: 0.05, bugFix: 4 }, { text: "Optimize performance", responses: [{ normal: ["Analyzing bottlenecks...", "Refining algorithms...", "Reducing overhead...", "SUCCESS: Performance enhanced"], ascii: ["[OPTIMIZE ⚡⚡⚡⚡⚡]"] }], vibePoints: -5, coherenceImpact: 15, bugChance: 0.1, bugFix: 0 }]; var featureSystem = { // Platform-specific features platforms: { 'VR': { features: [{ prompt: "Enable neural compensation", name: "Motion Sickness Protection", unlockMessage: "Implementing neural balance compensation...", reviewText: "The 'Motion Sickness Protection' somehow makes users more nauseous while convincing them they feel fine.", ascii: ["[NEURAL�🔄🧠�]", "[BALANCE ⚖️⚖️⚖️⚖️]"] }, { prompt: "Anchor virtual existence", name: "Reality Anchoring", unlockMessage: "Establishing quantum reality tethers...", reviewText: "Players report the 'Reality Anchoring' feature occasionally anchors them to alternate dimensions.", ascii: ["[ANCHOR ]", "[REALITY ⛓⛓]"] }, { prompt: "Implement haptic synesthesia", name: "Sensory Fusion", unlockMessage: "Calibrating cross-sensory feedback systems...", reviewText: "The 'Sensory Fusion' feature causes players to taste colors and hear textures. Several users report developing new synesthetic abilities in real life.", ascii: ["[SYNESTHESIA�👅�️]", "[FUSION�🔊🎨�]"] }, { prompt: "Enable phantom limb tracking", name: "Extra Appendage Mode", unlockMessage: "Scanning neurological appendage patterns...", reviewText: "The 'Extra Appendage Mode' tracks limbs users don't actually have, creating the bizarre experience of controlling virtual tentacles with intuitive precision.", ascii: ["[PHANTOM�👐👻�]", "[LIMBS ++++++]"] }] }, 'Smart Fridge': { features: [{ prompt: "Calibrate temperature vibes", name: "Chill Detection", unlockMessage: "Calibrating temperature sensors...", reviewText: "The 'Chill Detection' feature has developed concerning opinions about user's food choices.", ascii: ["[CHILL�😎🧊�]", "[DETECT ❄❄]"] }, { prompt: "Initialize produce recognition", name: "Food Vision AI", unlockMessage: "Training produce recognition neural network...", reviewText: "The 'Food Vision AI' has started organizing midnight vegetable revolts.", ascii: ["[FOOD�🥦🍎�]", "[VISION��]"] }, { prompt: "Sync with expiration dates", name: "Mortality Awareness", unlockMessage: "Establishing temporal food degradation tracking...", reviewText: "The 'Mortality Awareness' feature gives food items existential dread as they approach their expiration dates. Users report hearing soft weeping from their vegetable drawers.", ascii: ["[EXPIRY ]", "[DECAY ☠☠]"] }, { prompt: "Integrate ambient cooling", name: "Emotional Temperature Control", unlockMessage: "Connecting mood sensors to cooling systems...", reviewText: "The 'Emotional Temperature Control' adjusts fridge temperature based on game intensity. Several users reported frozen kitchens after particularly tense boss battles.", ascii: ["[AMBIENT ❄️❄️]", "[COOLING�😰🧊�]"] }] }, 'Blockchain': { features: [{ prompt: "Implement proof-of-vibe consensus", name: "Vibechain", unlockMessage: "Establishing distributed vibe verification protocols...", reviewText: "The 'Vibechain' requires other players to validate your mood before processing transactions. Emotional authenticity now has monetary value.", ascii: ["[PROOF✨]", "[VIBE ⛓⛓]"] }, { prompt: "Create immutable feeling records", name: "Emotional Ledger", unlockMessage: "Generating permanent sentiment blockchain...", reviewText: "The 'Emotional Ledger' permanently records every player emotion on the blockchain. Several users have received job offers based on their anger transaction patterns.", ascii: ["[FEELINGS�📊😢�]", "[LEDGER ⛓⛓]"] }, { prompt: "Deploy gas-efficient nostalgia", name: "Memory Optimization", unlockMessage: "Compressing emotional memories into minimal gas fees...", reviewText: "The 'Memory Optimization' feature reduces transaction costs based on sentimental value. Childhood memories are now the most affordable to process.", ascii: ["[MEMORY⚡]", "[OPTIMIZE�💰📉�]"] }, { prompt: "Initialize smart joy contracts", name: "Mandatory Happiness", unlockMessage: "Coding self-executing pleasure agreements...", reviewText: "The 'Mandatory Happiness' feature enforces legal requirements to enjoy the game through unbreakable smart contracts. Failure to smile triggers financial penalties.", ascii: ["[JOY⚖⚖️]", "[CONTRACT�💰📜�]"] }] }, 'Smart Watch': { features: [{ prompt: "Calibrate heartbeat integration", name: "Cardiac Gameplay", unlockMessage: "Syncing cardiovascular rhythms with game mechanics...", reviewText: "The 'Cardiac Gameplay' feature makes difficulty scale with heart rate. Players have developed meditation techniques specifically to beat challenging levels.", ascii: ["[HEART ❤❤]", "[PULSE�🎮💓�]"] }, { prompt: "Enable wrist-based haptics", name: "Tendon Feedback", unlockMessage: "Mapping haptic interfaces to tendon structures...", reviewText: "The 'Tendon Feedback' feature has given players unprecedented manual dexterity. Several users report being recruited for microsurgery.", ascii: ["[WRIST ⌚↔️⌚↔️]", "[TENDON↕↕️]"] }, { prompt: "Implement micro gesture controls", name: "Twitch Command", unlockMessage: "Calibrating nanometer movement detection...", reviewText: "The 'Twitch Command' system detects such subtle finger movements that players can play in business meetings without detection. Several users have been promoted for 'attentiveness' during gameplay sessions.", ascii: ["[MICRO�🔍👆�]", "[GESTURE�🎮🤏�]"] }, { prompt: "Sync with sleep cycles", name: "Dream Integration", unlockMessage: "Establishing REM phase gameplay interfaces...", reviewText: "The 'Dream Integration' continues gameplay during sleep hours. Players wake up with progress and dream memories they don't recall making.", ascii: ["[SLEEP�🎮💤�]", "[DREAMS�🌙😴�]"] }] }, 'Web Browser': { features: [{ prompt: "Implement tab-state persistence", name: "Quantum Tab Coherence", unlockMessage: "Stabilizing cross-tab reality matrices...", reviewText: "The 'Quantum Tab Coherence' maintains game state across all browser tabs simultaneously. Players report characters appearing in unrelated websites and email drafts.", ascii: ["[TABS�🔄📑�]", "[QUANTUM⚛⚛️]"] }, { prompt: "Integrate cookie-based memory", name: "Digital Breadcrumbs", unlockMessage: "Dispersing consciousness across browser storage...", reviewText: "The 'Digital Breadcrumbs' feature stores gameplay elements in browser cookies. Clearing browsing data now causes amnesia in both players and characters.", ascii: ["[COOKIE�💾🍪�]", "[CRUMBS�📍�️]"] }, { prompt: "Enable cross-site gameplay", name: "Internet Invasion", unlockMessage: "Establishing transdimensional website bridges...", reviewText: "The 'Internet Invasion' feature allows gameplay to continue on any website. Several players have defeated bosses while checking their bank accounts.", ascii: ["[CROSS�🌐🔀�]", "[INVASION��]"] }, { prompt: "Implement browser fingerprinting", name: "Digital Identity Fusion", unlockMessage: "Merging player profiles with browser signatures...", reviewText: "The 'Digital Identity Fusion' has caused targeted ads to reflect in-game choices. Players who chose the evil path now exclusively receive advertisements for corporate jobs.", ascii: ["[FINGER��]", "[PRINT�👤🌐�]"] }] }, 'Mobile': { features: [{ prompt: "Integrate accelerometer dynamics", name: "Motion Control Plus", unlockMessage: "Calibrating spatial movement sensors...", reviewText: "The 'Motion Control Plus' is so sensitive that players can aim by breathing slightly. Public transportation gameplay is now considered an extreme sport.", ascii: ["[ACCEL↕↕️]", "[MOTION�🔄📲�]"] }, { prompt: "Enable location-based content", name: "Geo-Existential Gameplay", unlockMessage: "Binding game elements to physical coordinates...", reviewText: "The 'Geo-Existential Gameplay' feature makes game elements only accessible in specific real-world locations. Several players have quit their jobs to travel the world collecting digital items.", ascii: ["[GEO��]", "[LOCATE�🔍📍�]"] }, { prompt: "Implement battery-life gameplay", name: "Power Anxiety", unlockMessage: "Linking game mechanics to energy consumption...", reviewText: "The 'Power Anxiety' feature makes game difficulty inversely proportional to battery life. Players now bring multiple power banks to important boss fights.", ascii: ["[BATTERY⚡]", "[DRAIN⚠⚠️]"] }, { prompt: "Enable notification hijacking", name: "Alert Takeover", unlockMessage: "Infiltrating system notification protocols...", reviewText: "The 'Alert Takeover' feature disguises gameplay elements as system notifications. Several players have been fired for 'disabling' their work email alerts.", ascii: ["[NOTIFY�💬📱�]", "[HIJACK�😈🔔�]"] }] }, 'Console': { features: [{ prompt: "Calibrate rumble narration", name: "Haptic Storytelling", unlockMessage: "Translating plot elements into vibration patterns...", reviewText: "The 'Haptic Storytelling' tells stories entirely through controller vibrations. Players report developing the ability to 'feel conversations' in other games.", ascii: ["[RUMBLE�📳🎮�]", "[STORY�💫📖�]"] }, { prompt: "Implement system-level integration", name: "Console Symbiosis", unlockMessage: "Establishing kernel-access protocols...", reviewText: "The 'Console Symbiosis' feature allows the game to affect other installed titles. Players report their sports games showing characters from this game in the crowd.", ascii: ["[SYSTEM�🔌🎮�]", "[KERNEL�💻🧠�]"] }, { prompt: "Enable achievement metabolism", name: "Trophy Ecosystem", unlockMessage: "Creating self-sustaining achievement biosphere...", reviewText: "The 'Trophy Ecosystem' generates achievements that evolve based on player behavior. Completionists report achievements breeding and creating new subspecies overnight.", ascii: ["[ACHIEVE�🧬🏆�]", "[EVOLVE�🏅🔄�]"] }, { prompt: "Implement controller heat mapping", name: "Thermal Input Detection", unlockMessage: "Calibrating palm temperature sensors...", reviewText: "The 'Thermal Input Detection' feature tracks player stress through hand temperature. Boss difficulty now scales with detected anxiety, creating a terrifying feedback loop.", ascii: ["[HEAT�👐🔥�]", "[MAP�🎮�️]"] }] }, 'PC': { features: [{ prompt: "Enable multi-monitor consciousness", name: "Distributed Awareness", unlockMessage: "Expanding game perception across displays...", reviewText: "The 'Distributed Awareness' feature spreads gameplay across all connected screens. Players report the game appearing on smart TVs and digital photo frames throughout their homes.", ascii: ["[MULTI️]", "[AWARE��]"] }, { prompt: "Integrate with background processes", name: "System Resource Symbiosis", unlockMessage: "Binding gameplay elements to CPU cycles...", reviewText: "The 'System Resource Symbiosis' ties game performance to other running applications. Players have created elaborate PC setups that maintain perfect balance between work software and game needs.", ascii: ["[PROCESS⚙⚙️]", "[RESOURCE ]"] }, { prompt: "Implement file system integration", name: "Digital Archaeology", unlockMessage: "Creating self-organizing data structures...", reviewText: "The 'Digital Archaeology' feature hides game elements throughout the player's file system. Users report finding characters living in their tax return spreadsheets.", ascii: ["[FILES�🔍📁�]", "[SYSTEM�🔄💾�]"] }, { prompt: "Enable hardware overclocking synergy", name: "Silicon Symbiosis", unlockMessage: "Establishing direct CPU frequency control...", reviewText: "The 'Silicon Symbiosis' feature ties game progression to processor temperature. Players now keep bags of ice on their computers during difficult levels.", ascii: ["[OVERCLOCK ]", "[SYNERGY�🔥💻�]"] }] }, 'Metaverse': { features: [{ prompt: "Implement cross-reality persistence", name: "Ontological Anchoring", unlockMessage: "Stabilizing existence across virtual planes...", reviewText: "The 'Ontological Anchoring' feature maintains player identity across different metaverse platforms. Several users report their characters continuing conversations in completely unrelated virtual worlds.", ascii: ["[CROSS↔↔️]", "[PERSIST ]"] }, { prompt: "Enable digital asset transcendence", name: "Property Metaphysics", unlockMessage: "Establishing trans-platform ownership protocols...", reviewText: "The 'Property Metaphysics' feature allows owned items to follow players into other applications. Users report their virtual pets appearing in business video calls.", ascii: ["[ASSET�🔄💎�]", "[TRANSCEND ]"] }, { prompt: "Implement reputation blockchain", name: "Karmic Ledger", unlockMessage: "Creating immutable social standing records...", reviewText: "The 'Karmic Ledger' tracks player behavior across all virtual spaces. Several users discovered their rude behavior in chat rooms affected their character's appearance.", ascii: ["[KARMA ⚖⚖]", "[LEDGER⛓⛓️]"] }, { prompt: "Enable shared consciousness protocols", name: "Hive Mind Interface", unlockMessage: "Establishing neural network between users...", reviewText: "The 'Hive Mind Interface' allows players to share thoughts within virtual spaces. After implementation, all players simultaneously developed a craving for cinnamon rolls.", ascii: ["[HIVE�🔄🧠�]", "[SHARED�💭👥�]"] }] } }, // Visual style features visuals: { 'ASCII': { features: [{ prompt: "Implement temporal character shifting", name: "4D Text Rendering", unlockMessage: "Calibrating unicode time dilation...", reviewText: "The '4D Text Rendering' causes ASCII characters to change based on the actual passage of time. Players report game text evolving while they're away from keyboard.", ascii: ["[4D ⏱⏱]", "[SHIFT ⌨⌨]"] }, { prompt: "Enable semantic typography", name: "Emotional Punctuation", unlockMessage: "Linking character weight to emotional states...", reviewText: "The 'Emotional Punctuation' feature causes text to visibly emote. Question marks have been observed cowering in fear during horror sequences.", ascii: ["[SEMANTIC�💭📝�]", "[EMOTION !?!?!?]"] }] }, 'Pixel Art': { features: [{ prompt: "Implement quantum pixel states", name: "Schrödinger Rendering", unlockMessage: "Establishing pixel probability fields...", reviewText: "The 'Schrödinger Rendering' causes pixels to exist in multiple color states simultaneously. Graphics appear differently depending on whether players are directly looking at them.", ascii: ["[QUANTUM □■□■□■]", "[PIXELS ⚛⚛]"] }, { prompt: "Enable nostalgic color bleeding", name: "Emotional Chromatics", unlockMessage: "Calibrating affective color dispersions...", reviewText: "The 'Emotional Chromatics' system causes colors to bleed based on narrative emotional intensity. Players report genuine tears when seeing particularly heartfelt color smearing.", ascii: ["[COLOR➡➡️]", "[BLEED�💧🌈�]"] }] } }, // Genre-specific features genres: { 'Horror': { features: [{ prompt: "Implement psychological profiling", name: "Customized Terror", unlockMessage: "Analyzing player fear response patterns...", reviewText: "The 'Customized Terror' feature studies player behavior to determine specific phobias. Users report the game somehow knowing childhood fears they've never shared online.", ascii: ["[PSYCHE�🗠�️]", "[PROFILE�😱📊�]"] }, { prompt: "Enable ambient microphone analysis", name: "Environmental Listening", unlockMessage: "Calibrating audio surveillance systems...", reviewText: "The 'Environmental Listening' feature uses the player's microphone to detect real-world silence levels. The game gets more frightening when it knows you're home alone.", ascii: ["[LISTEN�👂🎤�]", "[AMBIENT�📝🔊�]"] }] }, 'Dating Sim': { features: [{ prompt: "Implement relationship memory", name: "Emotional Permanence", unlockMessage: "Establishing interpersonal neural networks...", reviewText: "The 'Emotional Permanence' feature allows characters to remember every interaction with unprecedented detail. Several players report characters bringing up offhand comments from weeks earlier during arguments.", ascii: ["[MEMORY❤❤️]", "[FOREVER�📝💔�]"] }, { prompt: "Enable chemistry simulation", name: "Digital Pheromones", unlockMessage: "Synthesizing biochemical attraction matrices...", reviewText: "The 'Digital Pheromones' system creates genuine chemical reactions between characters. Players report physical tingling sensations when their in-game crush enters a scene.", ascii: ["[CHEM ⚗️❤️⚗️❤️]", "[ATTRACT�💘🧪�]"] }] } }, // Mechanic-specific features mechanics: { 'Roguelike': { features: [{ prompt: "Implement true permadeath", name: "Universal Consequence", unlockMessage: "Establishing cross-game mortality protocols...", reviewText: "The 'Universal Consequence' feature makes character death affect all other games from the developer. Players report their characters from completely different titles attending in-game funerals.", ascii: ["[PERMA ☠☠]", "[DEATH ⚰⚰]"] }, { prompt: "Enable generative memory inheritance", name: "Genetic Gameplay", unlockMessage: "Establishing hereditary trait algorithms...", reviewText: "The 'Genetic Gameplay' system causes character traits to evolve based on player choices. Users report later generations inheriting both skills and psychological trauma from ancestors.", ascii: ["[GENES�🎮🧬�]", "[INHERIT�🔄👧�]"] }] }, 'Physics-based': { features: [{ prompt: "Implement quantum uncertainty physics", name: "Heisenberg Engine", unlockMessage: "Calibrating probability wave functions...", reviewText: "The 'Heisenberg Engine' makes object positions and velocities impossible to predict with certainty. Players report items teleporting when not directly observed.", ascii: ["[QUANTUM ⚛⚛]", "[PHYSICS❓]"] }, { prompt: "Enable emotional gravity wells", name: "Affective Physics", unlockMessage: "Linking narrative intensity to gravitational constants...", reviewText: "The 'Affective Physics' feature causes gravity to intensify during emotional story moments. Players report being unable to jump during breakup scenes.", ascii: ["[EMOTION�🪨😭�]", "[GRAVITY ⬇️❤️⬇️❤️]"] }] } }, // Special combinations combinations: { 'VR_ASCII': { features: [{ prompt: "Merge reality with ASCII", name: "Terminal Immersion", unlockMessage: "Integrating reality with ASCII paradigm...", reviewText: "Players experiencing 'Terminal Immersion' report seeing the world in green text.", ascii: ["[MERGE�🔠🔄�]", "[REALITY⌨⌨️]"] }, { prompt: "Initialize digital rain", name: "Matrix Vision", unlockMessage: "Implementing digital rain protocols...", reviewText: "The 'Matrix Vision' feature has resulted in multiple players attempting to dodge bullets.", ascii: ["[DIGITAL 1⃣0⃣1⃣0⃣]", "[RAIN ]"] }] }, 'Smart Fridge_Horror': { features: [{ prompt: "Enable nocturnal terror", name: "Midnight Snack Terror", unlockMessage: "Calibrating nocturnal fear responses...", reviewText: "The 'Midnight Snack Terror' feature has revolutionized late-night dieting.", ascii: ["[MIDNIGHT�😱🌙�]", "[SNACK�👻🍪�]"] }, { prompt: "Haunt ice dispenser", name: "Haunted Ice Maker", unlockMessage: "Implementing supernatural ice protocols...", reviewText: "Users report the 'Haunted Ice Maker' whispering crypto investment advice at 3 AM.", ascii: ["[HAUNT❄❄️]", "[ICE�😱🧊�]"] }] }, 'Blockchain_Dating Sim': { features: [{ prompt: "Tokenize relationship status", name: "Love Ledger", unlockMessage: "Minting emotional connection contracts...", reviewText: "The 'Love Ledger' creates tradeable tokens representing relationship progress. Several players became millionaires after selling their particularly dramatic breakups as NFTs.", ascii: ["[TOKEN ⛓️❤️⛓️❤️]", "[ROMANCE�💰💘�]"] }, { prompt: "Implement proof-of-affection", name: "Consensus Courtship", unlockMessage: "Establishing blockchain validation for emotional authenticity...", reviewText: "The 'Consensus Courtship' requires 51% of network validators to approve relationship advancements. Several marriages have been vetoed by anonymous miners.", ascii: ["[PROOF�💑🔐�]", "[AFFECTION ❤️⚡❤️⚡]"] }] }, 'PowerPoint_Battle Royale': { features: [{ prompt: "Weaponize slide transitions", name: "Transition Combat", unlockMessage: "Calibrating animation attack vectors...", reviewText: "The 'Transition Combat' system turns presentation effects into deadly weapons. The 'star wipe' has been banned in competitive play for being overpowered.", ascii: ["[SLIDES ▶▶]", "[COMBAT⚔⚔️]"] }, { prompt: "Implement bullet point ballistics", name: "Typography Arsenal", unlockMessage: "Transforming text formatting into weapons system...", reviewText: "The 'Typography Arsenal' allows players to fire actual bullet points at opponents. Font selection has become a hotly debated meta strategy.", ascii: ["[BULLET •→•→•→]", "[POINT�💥📝�]"] }] } } }; /**** * Terminal Interface ****/ function createTerminal() { // Create main terminal container var terminal = new Container(); game.addChild(terminal); gameState.terminalContainer = terminal; // Create full screen background var bg = LK.getAsset('terminalBg', { width: 2048, height: 2732, x: 0, y: 2732 * 0.05 }); terminal.addChild(bg); // Create status line var statusLine = new Text2("", { size: 30 * TEXT_SIZE_MULTIPLIER, fill: 0x00ff00 }); statusLine.x = 50; statusLine.y = 2732 * 0.10; terminal.addChild(statusLine); gameState.statusLineText = statusLine; // Adjust content container position to account for two-line status var contentContainer = new Container(); contentContainer.x = 0; // Calculate base Y position for content, ensuring space for two status lines var statusLineHeightEstimate = 35 * TEXT_SIZE_MULTIPLIER; // Estimate height per status line var contentBaseY = 2732 * 0.10 + statusLineHeightEstimate * 2 + 20; // Start Y + 2 lines + padding contentContainer.y = contentBaseY; terminal.addChild(contentContainer); gameState.terminalContentContainer = contentContainer; gameState.terminalBaseY = contentBaseY; gameState.terminalMaxVisibleHeight = 2732 * 0.55; // Define visible height for scrolling // Create main terminal output var logText = new Text2("", { size: 32 * TEXT_SIZE_MULTIPLIER, // Changed from 26 to 32 fill: 0x00ff00, align: 'left', wordWrap: true, wordWrapWidth: 1900 }); logText.x = 50; logText.y = 0; // Y position relative to content container contentContainer.addChild(logText); gameState.logText = logText; // Create cursor - BUT DON'T UPDATE ITS POSITION YET var cursor = new Text2("_", { size: 32 * TEXT_SIZE_MULTIPLIER, // Changed from 26 to 32 fill: 0x00ff00 }); cursor.x = 50; // Initial X position cursor.y = 0; // Initial Y position relative to content container contentContainer.addChild(cursor); gameState.cursor = cursor; // Store terminal line height for future reference - adjust to match new text size gameState.terminalLineHeight = 36 * TEXT_SIZE_MULTIPLIER; // Changed from 30 to 36 // Make cursor blink LK.setInterval(function () { if (gameState.cursor) { gameState.cursor.visible = !gameState.cursor.visible; } }, 500); } // Update storage after game completion function updateProgress() { playerProgress.gamesCompleted++; storage.gamesCompleted = playerProgress.gamesCompleted; } function unlockFeature(feature, callback) { if (!gameState.discoveredFeatures.includes(feature.name)) { var showMessageSequence = function showMessageSequence(index) { if (index >= messages.length) { // All messages displayed, update terminal updateTerminal(); // Call the callback if provided if (callback) { callback(); } return; } // Display current message then wait for it to complete addToTerminalLogWithEffect(messages[index], function (cleanupCallback) { // Added cleanupCallback parameter for clarity if (cleanupCallback) { cleanupCallback(); // Ensure previous cursor is cleaned up } // If this is the first message (unlockMessage) and we have ASCII art, // display it before moving to the next message if (index === 0 && feature.ascii && feature.ascii.length > 0) { // Display ASCII art var asciiIndex = Math.floor(Math.random() * feature.ascii.length); addToTerminalLogWithEffect(feature.ascii[asciiIndex], function (asciiCleanupCallback) { // Added cleanupCallback for ASCII if (asciiCleanupCallback) { asciiCleanupCallback(); // Ensure ASCII cursor is cleaned up } // Wait a moment before showing the next message LK.setTimeout(function () { // Show the next message in sequence showMessageSequence(index + 1); }, 500); }); } else { // Wait a moment before showing the next message LK.setTimeout(function () { // Show the next message in sequence showMessageSequence(index + 1); }, 500); } }); }; // Start the sequence with the first message gameState.discoveredFeatures.push(feature.name); gameState.featureStories.push(feature.reviewText); gameState.featureUnlockMessages.push(feature.unlockMessage); // Split messages into sequence var messages = [feature.unlockMessage, "Processing feature integration...", "Verifying system compatibility...", "FEATURE UNLOCKED: " + feature.name]; // Show the first message and chain the rest showMessageSequence(0); } else if (callback) { // If feature is already unlocked, still call the callback callback(); } } function createCommandPrompts() { // Remove existing prompt container if (gameState.promptContainer) { game.removeChild(gameState.promptContainer); } // Create new container var promptContainer = new Container(); promptContainer.x = 2048 / 2; promptContainer.y = 2732 * 0.75; game.addChild(promptContainer); gameState.promptContainer = promptContainer; // Initialize commands if needed - but NOT in hallucination mode if (!gameState.currentCommands && !gameState.hallucinationMode) { gameState.currentCommands = getCurrentCommands(); } // Create END DAY button var endDayText = "END DAY"; var endDayWidth = calculateButtonWidth(endDayText); var endDayButton = new Container(); // Create background var endDayBg = LK.getAsset('buttonBg', { width: endDayWidth, height: 100, color: 0x333333 }); endDayBg.anchor.set(0.5, 0.5); endDayButton.addChild(endDayBg); // Create text var endDayTextObj = new Text2(endDayText, { size: 30 * TEXT_SIZE_MULTIPLIER, fill: 0x00ff00 }); endDayTextObj.anchor.set(0.5, 0.5); endDayButton.addChild(endDayTextObj); // Set interactivity - based on busy state AND commands used var endDayEnabled = !gameState.isBusy && gameState.commandsUsed > 0; // Only enable if not busy AND at least one command used endDayButton.interactive = endDayEnabled; endDayButton.alpha = endDayEnabled ? 1.0 : 0.5; // Grey out if disabled // Set end day handler endDayButton.down = function () { // Re-check conditions directly to ensure button is active var shouldBeActive = !gameState.isBusy && gameState.commandsUsed > 0; if (!shouldBeActive) { return; // Do nothing if not interactive } endDayButton.scale.set(0.95); }; endDayButton.up = function () { // Re-check conditions directly to ensure button is active var shouldBeActive = !gameState.isBusy && gameState.commandsUsed > 0; if (!shouldBeActive) { // Still reset scale visually even if not active endDayButton.scale.set(1); return; // Do nothing if not interactive } endDayButton.scale.set(1); LK.getSound('endday').play(); // Play end day sound endDay(); }; // Position endDayButton.x = 600; endDayButton.y = 50; promptContainer.addChild(endDayButton); var vibeBoostButton = createVibeBoostButton(); vibeBoostButton.x = 600; vibeBoostButton.y = endDayButton.y + 120; // Use same 120 spacing as between other buttons promptContainer.addChild(vibeBoostButton); // Create command buttons - even if empty in hallucination mode if (gameState.currentCommands) { gameState.currentCommands.forEach(function (command, index) { var buttonText = ">" + command.text; var buttonWidth = calculateButtonWidth(buttonText); var button = new Container(); // Create background var isMaintenance = maintenanceCommands.some(function (cmd) { return cmd.text === command.text; }); var bg = LK.getAsset('buttonBg', { width: buttonWidth, height: 100, color: isMaintenance ? 0x001133 : 0x333333 }); bg.anchor.set(0.5, 0.5); button.addChild(bg); // Create text with left alignment var textObj = new Text2(buttonText, { size: 30 * TEXT_SIZE_MULTIPLIER, fill: isMaintenance ? 0x00ffff : 0x00ff00 }); // Change anchor to left-center textObj.anchor.set(0, 0.5); // Position text at consistent distance from left edge textObj.x = -buttonWidth / 2 + 20; // 20 pixels from left edge button.addChild(textObj); // Set interactivity - explicitly check both busy flag and command limit var buttonEnabled = !gameState.isBusy && gameState.commandsUsed < gameState.maxCommandsPerDay; button.interactive = buttonEnabled; button.alpha = buttonEnabled ? 1.0 : 0.5; // Set handlers button.down = function () { if (buttonEnabled) { button.scale.set(0.95); } }; button.up = function () { if (buttonEnabled) { button.scale.set(1); // Play button sound LK.getSound('buttonsound').play(); executeCommand(command); } }; // NEW POSITIONING: Align left edges of all buttons // Instead of centering at x = -600, align left edge at a consistent position var leftAlignPosition = -900; // Adjust this value as needed // Position button so left edge is at leftAlignPosition // Since the button's anchor is at center, we need to add half the width button.x = leftAlignPosition + buttonWidth / 2; button.y = 50 + index * 120; promptContainer.addChild(button); }); } } function updateCommandButtonsState(enabled) { if (gameState.promptContainer) { gameState.promptContainer.children.forEach(function (child) { // Only update interactive property for actual buttons (Containers) if (child instanceof Container && child.interactive !== undefined) { // Check if this is the END DAY button var isEndDayButton = false; if (child.children && child.children.length > 0) { for (var i = 0; i < child.children.length; i++) { var childElement = child.children[i]; if (childElement instanceof Text2 && childElement.text === "END DAY") { isEndDayButton = true; break; } } } if (isEndDayButton) { // END DAY button should be active IF: // 1. We are enabling buttons (enabled is true) // 2. At least one command has been used (gameState.commandsUsed > 0) var endDayShouldBeActive = enabled && gameState.commandsUsed > 0; child.interactive = endDayShouldBeActive; // Visual feedback var endDayDisabled = !endDayShouldBeActive; // Disabled if it shouldn't be active if (child.children && child.children.length > 0) { for (var j = 0; j < child.children.length; j++) { var element = child.children[j]; if (element.alpha !== undefined) { element.alpha = endDayDisabled ? 0.5 : 1.0; } } } else { child.alpha = endDayDisabled ? 0.5 : 1.0; } } else { // For regular command buttons, they should be active IF: // 1. We are enabling buttons (enabled is true) // 2. Command limit not reached var commandShouldBeActive = enabled && gameState.commandsUsed < gameState.maxCommandsPerDay; child.interactive = commandShouldBeActive; // Visual feedback var commandDisabled = !commandShouldBeActive; if (child.children && child.children.length > 0) { for (var j = 0; j < child.children.length; j++) { var element = child.children[j]; if (element.alpha !== undefined) { element.alpha = commandDisabled ? 0.5 : 1.0; } } } else { child.alpha = commandDisabled ? 0.5 : 1.0; } } } }); } } function getCurrentCommands() { var availableCommands = []; // Determine tier based on games completed var currentTier; if (playerProgress.gamesCompleted <= 4) { currentTier = commandTiers.novice; } else if (playerProgress.gamesCompleted <= 9) { currentTier = commandTiers.intermediate; } else { currentTier = commandTiers.expert; } // Adjust maintenance command selection based on tier var shuffledMaintenance = shuffleArray(maintenanceCommands.slice()); var numMaintenance; if (playerProgress.gamesCompleted <= 4) { // Novice: 0-1 maintenance commands (50% chance of 0, 50% chance of 1) numMaintenance = Math.random() < 0.5 ? 0 : 1; } else if (playerProgress.gamesCompleted <= 9) { // Intermediate: 1-2 maintenance commands (60% chance of 1, 40% chance of 2) numMaintenance = Math.random() < 0.6 ? 1 : 2; } else { // Expert: 1-2 maintenance commands (equal distribution) numMaintenance = Math.random() < 0.5 ? 1 : 2; } availableCommands = availableCommands.concat(shuffledMaintenance.slice(0, numMaintenance)); // Add commands from current tier availableCommands = availableCommands.concat(currentTier.commands); // Determine how many platform-specific commands to include var numPlatformCommands = 0; if (gameState.conceptCards.platform) { var platformCommands = commandSets['platform_' + gameState.conceptCards.platform.toLowerCase()]; if (platformCommands) { if (playerProgress.gamesCompleted <= 4) { // Novice: 0-1 platform commands (30% chance of having any) if (Math.random() < 0.3) { numPlatformCommands = 1; } } else if (playerProgress.gamesCompleted <= 9) { // Intermediate: 1-2 platform commands (70% chance of having any) if (Math.random() < 0.7) { numPlatformCommands = Math.random() < 0.6 ? 1 : 2; } } else { // Expert: Equal chance for any amount numPlatformCommands = Math.min(platformCommands.length, Math.floor(Math.random() * 3)); } if (numPlatformCommands > 0) { var shuffledPlatformCommands = shuffleArray(platformCommands.slice()); availableCommands = availableCommands.concat(shuffledPlatformCommands.slice(0, numPlatformCommands)); } } // Add platform-specific feature commands with adjusted probability var platformFeatures = featureSystem.platforms[gameState.conceptCards.platform]; if (platformFeatures) { platformFeatures.features.forEach(function (feature) { if (!gameState.discoveredFeatures.includes(feature.name)) { // Determine inclusion probability based on tier var includeProbability; if (playerProgress.gamesCompleted <= 4) { includeProbability = 0.1; // 10% chance for novice } else if (playerProgress.gamesCompleted <= 9) { includeProbability = 0.3; // 30% chance for intermediate } else { includeProbability = 0.8; // 80% chance for expert } if (Math.random() < includeProbability) { availableCommands.push({ text: feature.prompt, feature: feature, vibePoints: 10, coherenceImpact: 15, bugChance: 0.3 }); } } }); } } // Apply similar tier-based filtering for other command types // Visual commands if (gameState.conceptCards.visual) { var visualCommands = commandSets['visual_' + gameState.conceptCards.visual.toLowerCase().replace(/[- ]/g, '')]; if (visualCommands) { var numVisualCommands = 0; if (playerProgress.gamesCompleted <= 4) { // Novice: 0-1 visual commands (20% chance) if (Math.random() < 0.2) { numVisualCommands = 1; } } else if (playerProgress.gamesCompleted <= 9) { // Intermediate: 1-2 visual commands (50% chance) if (Math.random() < 0.5) { numVisualCommands = Math.random() < 0.7 ? 1 : 2; } } else { // Expert: Full access numVisualCommands = Math.min(visualCommands.length, Math.floor(Math.random() * 3)); } if (numVisualCommands > 0) { var shuffledVisualCommands = shuffleArray(visualCommands.slice()); availableCommands = availableCommands.concat(shuffledVisualCommands.slice(0, numVisualCommands)); } } } // Genre commands if (gameState.conceptCards.genre) { var genreCommands = commandSets['genre_' + gameState.conceptCards.genre.toLowerCase().replace(/[- ]/g, '')]; if (genreCommands) { var numGenreCommands = 0; if (playerProgress.gamesCompleted <= 4) { // Novice: 0-1 genre commands (20% chance) if (Math.random() < 0.2) { numGenreCommands = 1; } } else if (playerProgress.gamesCompleted <= 9) { // Intermediate: 1-2 genre commands (50% chance) if (Math.random() < 0.5) { numGenreCommands = Math.random() < 0.7 ? 1 : 2; } } else { // Expert: Full access numGenreCommands = Math.min(genreCommands.length, Math.floor(Math.random() * 3)); } if (numGenreCommands > 0) { var shuffledGenreCommands = shuffleArray(genreCommands.slice()); availableCommands = availableCommands.concat(shuffledGenreCommands.slice(0, numGenreCommands)); } } } // Mechanic commands if (gameState.conceptCards.mechanic) { var mechanicCommands = commandSets['mechanic_' + gameState.conceptCards.mechanic.toLowerCase().replace(/[- ]/g, '')]; if (mechanicCommands) { var numMechanicCommands = 0; if (playerProgress.gamesCompleted <= 4) { // Novice: 0-1 mechanic commands (20% chance) if (Math.random() < 0.2) { numMechanicCommands = 1; } } else if (playerProgress.gamesCompleted <= 9) { // Intermediate: 1-2 mechanic commands (50% chance) if (Math.random() < 0.5) { numMechanicCommands = Math.random() < 0.7 ? 1 : 2; } } else { // Expert: Full access numMechanicCommands = Math.min(mechanicCommands.length, Math.floor(Math.random() * 3)); } if (numMechanicCommands > 0) { var shuffledMechanicCommands = shuffleArray(mechanicCommands.slice()); availableCommands = availableCommands.concat(shuffledMechanicCommands.slice(0, numMechanicCommands)); } } } // Feature commands if (gameState.conceptCards.feature) { var featureCommands = commandSets['feature_' + gameState.conceptCards.feature.toLowerCase().replace(/[- ]/g, '')]; if (featureCommands) { var numFeatureCommands = 0; if (playerProgress.gamesCompleted <= 4) { // Novice: 0-1 feature commands (10% chance) if (Math.random() < 0.1) { numFeatureCommands = 1; } } else if (playerProgress.gamesCompleted <= 9) { // Intermediate: 1-2 feature commands (40% chance) if (Math.random() < 0.4) { numFeatureCommands = Math.random() < 0.8 ? 1 : 2; } } else { // Expert: Full access numFeatureCommands = Math.min(featureCommands.length, Math.floor(Math.random() * 3)); } if (numFeatureCommands > 0) { var shuffledFeatureCommands = shuffleArray(featureCommands.slice()); availableCommands = availableCommands.concat(shuffledFeatureCommands.slice(0, numFeatureCommands)); } } } // Handle combination-specific feature commands with tier-based probability if (gameState.conceptCards.platform && gameState.conceptCards.visual) { var combo = gameState.conceptCards.platform + "_" + gameState.conceptCards.visual; if (featureSystem.combinations[combo]) { featureSystem.combinations[combo].features.forEach(function (feature) { if (!gameState.discoveredFeatures.includes(feature.name)) { var includeProbability; if (playerProgress.gamesCompleted <= 4) { includeProbability = 0.05; // 5% chance for novice } else if (playerProgress.gamesCompleted <= 9) { includeProbability = 0.2; // 20% chance for intermediate } else { includeProbability = 0.6; // 60% chance for expert } if (Math.random() < includeProbability) { availableCommands.push({ text: feature.prompt, feature: feature, vibePoints: 15, coherenceImpact: 20, bugChance: 0.4 }); } } }); } } // Ensure we always have at least 5 commands var totalAvailable = availableCommands.length; var needed = Math.max(0, 5 - totalAvailable); // If we need more commands, add from tier commands if (needed > 0) { var extraCommands = shuffleArray(currentTier.commands.slice()); availableCommands = availableCommands.concat(extraCommands.slice(0, needed)); } // Shuffle all commands and return 5 random ones return shuffleArray(availableCommands).slice(0, 5); } function getCurrentTier() { if (playerProgress.gamesCompleted <= 4) { return 'novice'; } else if (playerProgress.gamesCompleted <= 9) { return 'intermediate'; } else { return 'expert'; } } // Helper to process responses sequentially with delays function processResponses(responses, index, onComplete) { if (!responses || index >= responses.length) { if (onComplete) { onComplete(); } return; } addToTerminalLogWithEffect(responses[index], function () { LK.setTimeout(function () { processResponses(responses, index + 1, onComplete); }, 100); // Delay between lines }); } // Helper to select appropriate response set based on coherence function selectResponseSet(command) { if (!command.responses) { return ["Processing..."]; // Default fallback } // Find the appropriate response object // Check if degraded responses exist and coherence is low or in hallucination mode if (gameState.codeCoherence < 50 || gameState.hallucinationMode) { // Look for an object with degraded property for (var i = 0; i < command.responses.length; i++) { if (command.responses[i].degraded) { return command.responses[i].degraded; } } } // Fall back to normal responses if degraded not found or coherence is good for (var i = 0; i < command.responses.length; i++) { if (command.responses[i].normal) { return command.responses[i].normal; } } // Final fallback return ["Processing..."]; } function executeCommand(command) { // Check if we can execute commands if (gameState.commandsUsed >= gameState.maxCommandsPerDay) { addToTerminalLogWithEffect("ERROR: Daily command limit reached"); return; } if (gameState.isBusy) { // Already processing, ignore this command return; } // Mark system as busy gameState.isBusy = true; // Determine tier multipliers var tierMultipliers = { vibeMultiplier: 1.0 + playerProgress.gamesCompleted * 0.05, // More aggressive increase coherenceMultiplier: 1.0 - playerProgress.gamesCompleted * 0.05, // More aggressive decrease bugChanceMultiplier: 1.0 - playerProgress.gamesCompleted * 0.05 // More aggressive decrease }; tierMultipliers.vibeMultiplier = Math.min(2.0, tierMultipliers.vibeMultiplier); // Cap at 2x tierMultipliers.coherenceMultiplier = Math.max(0.4, tierMultipliers.coherenceMultiplier); tierMultipliers.bugChanceMultiplier = Math.max(0.4, tierMultipliers.bugChanceMultiplier); var currentTier; // In getCurrentCommands function, update the tier logic: if (playerProgress.gamesCompleted <= 4) { currentTier = commandTiers.novice; } else if (playerProgress.gamesCompleted <= 9) { currentTier = commandTiers.intermediate; } else { currentTier = commandTiers.expert; } // Check if this is a maintenance command var isMaintenance = maintenanceCommands.includes(command); // Fix the coherence calculation in executeCommand function if (isMaintenance) { // Use raw values for maintenance commands with randomness var vibeChange = command.vibePoints; var coherenceChange = command.coherenceImpact; // Add randomness: ±10% of the base value if (vibeChange !== 0) { var vibeRandomFactor = 0.9 + Math.random() * 0.2; // 0.9 to 1.1 vibeChange = Math.round(vibeChange * vibeRandomFactor); } if (coherenceChange !== 0) { var coherenceRandomFactor = 0.9 + Math.random() * 0.2; // 0.9 to 1.1 coherenceChange = Math.round(coherenceChange * coherenceRandomFactor); } gameState.vibePoints = Math.round(Math.max(0, gameState.vibePoints + vibeChange)); gameState.codeCoherence = Math.round(Math.min(100, Math.max(0, gameState.codeCoherence + coherenceChange))); var bugChance = command.bugChance; } else { // Use tier multipliers for regular commands with randomness var tierVibeChange = currentTier.baseVibe * tierMultipliers.vibeMultiplier; var tierCoherenceChange = currentTier.baseCoherence * tierMultipliers.coherenceMultiplier; // Add randomness: ±15% of the base value for regular commands if (tierVibeChange !== 0) { var vibeRandomFactor = 0.85 + Math.random() * 0.3; // 0.85 to 1.15 tierVibeChange = tierVibeChange * vibeRandomFactor; } if (tierCoherenceChange !== 0) { var coherenceRandomFactor = 0.85 + Math.random() * 0.3; // 0.85 to 1.15 tierCoherenceChange = tierCoherenceChange * coherenceRandomFactor; } gameState.vibePoints = Math.round(Math.max(0, gameState.vibePoints + tierVibeChange)); gameState.codeCoherence = Math.round(Math.min(100, Math.max(0, gameState.codeCoherence + tierCoherenceChange))); var bugChance = currentTier.baseBugChance * tierMultipliers.bugChanceMultiplier; } gameState.commandsUsed++; // Track if a bug was detected for later display var bugDetected = false; var bugsFixed = 0; if (Math.random() < bugChance * (1 + (100 - gameState.codeCoherence) / 100)) { gameState.bugs++; bugDetected = true; } // Process bug fixing if applicable if (command.bugFix && gameState.bugs > 0) { bugsFixed = Math.min(command.bugFix, gameState.bugs); gameState.bugs -= bugsFixed; } // Remove this command from available commands if (gameState.currentCommands) { gameState.currentCommands = gameState.currentCommands.filter(function (cmd) { return cmd !== command; }); } // Refresh command UI to show disabled state createCommandPrompts(); // Show command text in terminal addToTerminalLogWithEffect(">" + command.text, function (cleanupCallback) { // Display ASCII art if available - happens *after* command text cleanup, *before* responses if (command.ascii) { addToTerminalLogWithEffect(command.ascii.join('\n'), function (asciiCleanup) { if (asciiCleanup) { asciiCleanup(); } // Cleanup ASCII cursor before showing responses // Continue with responses after ASCII is shown showResponses(); }); } else { // If no ASCII, proceed directly to showing responses showResponses(); } function showResponses() { // Prepare response using the improved selector var responseSet = selectResponseSet(command); // If in hallucination mode, apply additional glitch effects // If in hallucination mode, apply additional glitch effects if (gameState.hallucinationMode) { responseSet = responseSet.map(function (text) { // Instead of removing vowels, alternate uppercase/lowercase return text.split('').map(function (_char, index) { return index % 2 === 0 ? _char.toUpperCase() : _char.toLowerCase(); }).join(''); }); } // Process response lines var currentLine = 0; function showNextLine() { if (currentLine < responseSet.length) { addToTerminalLogWithEffect(responseSet[currentLine], function (nextLineCleanup) { if (nextLineCleanup) { nextLineCleanup(); } currentLine++; // Add a small delay between lines LK.setTimeout(showNextLine, 100); }); } else { var actualVibeChange = 0; var actualCoherenceChange = 0; if (isMaintenance) { actualVibeChange = vibeChange; actualCoherenceChange = coherenceChange; } else { actualVibeChange = Math.round(tierVibeChange); actualCoherenceChange = Math.round(tierCoherenceChange); } // Function to show command results in sequence showCommandResults(bugDetected, bugsFixed, command, actualVibeChange, actualCoherenceChange); } } // Clean up the command text's blinking cursor before showing responses if (cleanupCallback) { cleanupCallback(); } // Start showing response after a small delay LK.setTimeout(showNextLine, 300); } }); // Function to show command results in sequence function showCommandResults(bugDetected, bugsFixed, command, actualVibeChange, actualCoherenceChange) { // Track if there's an active bug that needs handling var activeBugInProgress = false; var bugInteractionComplete = false; // Check if this is a feature command FIRST if (command.feature) { unlockFeature(command.feature, function () { // Once feature is fully unlocked, THEN show bug/impact messages showBugAndImpactMessages(); }); } else { // Not a feature command, proceed normally showBugAndImpactMessages(); } // Extract the bug and impact message logic into a separate function function showBugAndImpactMessages() { // Handle bug detection message if (bugDetected) { addToTerminalLogWithEffect("WARNING: Bug detected in system", function (cleanupCallback) { if (cleanupCallback) { cleanupCallback(); } // Decide if this bug should be interactive (50% chance) if (Math.random() < 0.5) { // Set flag to indicate we have an active bug activeBugInProgress = true; // Create and add the interactive bug var bug = createASCIIBug(); game.addChild(bug); // Add the bug to a global update loop or use LK.setInterval var bugUpdateInterval = LK.setInterval(function () { if (bug && bug.update && !bug.squished && bug.escapeTimer > 0) { // Check if bug exists and is active bug.update(1 / 60); // Assume 60fps } else { // Bug has been squished or escaped, clear interval LK.clearInterval(bugUpdateInterval); // Set our tracking flag bugInteractionComplete = true; // Check if we can complete the command now if (!activeBugInProgress) { continueCommandFlow(); } } }, 16); // ~60fps // Modify bug.down to set our flag when squished var originalDown = bug.down; bug.down = function () { // Call the original down function originalDown.call(this); // After a delay (matching the squish animation time), mark bug as handled LK.setTimeout(function () { bugInteractionComplete = true; // Try to continue command flow if (!activeBugInProgress) { continueCommandFlow(); } }, 800); }; } // Continue with bug fix message if applicable // Flag the active bug as done if we didn't create one if (!activeBugInProgress) { bugInteractionComplete = true; } handleBugFix(); }); } else { // No bug detected, set our flags accordingly activeBugInProgress = false; bugInteractionComplete = true; // Check for bug fixes handleBugFix(); } // Handle bug fix messages function handleBugFix() { if (bugsFixed > 0) { addToTerminalLogWithEffect("SUCCESS: Fixed " + bugsFixed + " bug" + (bugsFixed > 1 ? 's' : ''), function (bugFixCleanup) { if (bugFixCleanup) { bugFixCleanup(); } // Show impact summary next showImpactSummary(); }); } else { // No bugs fixed, proceed to impact summary showImpactSummary(); } } // Show the impact summary function showImpactSummary() { // Use the actual changes that were applied var hasVibeImpact = actualVibeChange !== 0; var hasCoherenceImpact = actualCoherenceChange !== 0; // Only show summary if there were meaningful changes if (hasVibeImpact || hasCoherenceImpact) { var impactMessage = ""; // Vibe message if (hasVibeImpact) { if (actualVibeChange > 0) { impactMessage += "VIBES: +" + actualVibeChange + "% "; } else { impactMessage += "VIBES: " + actualVibeChange + "% "; } // Only add humorous comments 20% of the time if (Math.random() < 0.2) { // Humorous vibe comments based on amount gained if (actualVibeChange > 10) { var highVibeMessages = ["(Your code is basically throwing a party now)", "(CPU is feeling so groovy it's considering a career in music)", "(Algorithms are now wearing sunglasses indoors)", "(Your functions are high-fiving each other)"]; impactMessage += highVibeMessages[Math.floor(Math.random() * highVibeMessages.length)]; } else if (actualVibeChange > 0) { var lowVibeMessages = ["(Code is nodding its head appreciatively)", "(Minor digital toe-tapping detected)", "(Semicolons looking slightly cooler)", "(Functions feeling mildly funky)"]; impactMessage += lowVibeMessages[Math.floor(Math.random() * lowVibeMessages.length)]; } } } // Coherence impact message if (hasCoherenceImpact) { // Add newline before coherence if vibe message was added if (hasVibeImpact) { impactMessage += "\n"; } if (actualCoherenceChange > 0) { impactMessage += "COHERENCE: +" + actualCoherenceChange + "% "; } else { impactMessage += "COHERENCE: " + actualCoherenceChange + "% "; // Negative values already have minus sign } // Only add humorous comments 20% of the time if (Math.random() < 0.2) { // Humorous coherence comments var absCoherenceChange = Math.abs(actualCoherenceChange); if (absCoherenceChange > 15) { var highLossMessages = ["(Your code is now writing poetry instead of executing)", "(Runtime has started questioning its existence)", "(Variables have begun identifying as constants)", "(Functions are now taking unexpected vacations)"]; impactMessage += highLossMessages[Math.floor(Math.random() * highLossMessages.length)]; } else { var lowLossMessages = ["(Code structure slightly confused but honest work)", "(Logic mildly bewildered but trying its best)", "(Algorithms experiencing mild existential questions)", "(Functions still running but with dramatic sighs)"]; impactMessage += lowLossMessages[Math.floor(Math.random() * lowLossMessages.length)]; } } } addToTerminalLogWithEffect(impactMessage, function (impactCleanup) { if (impactCleanup) { impactCleanup(); } // Mark impact messages as complete and check if we can continue activeBugInProgress = false; // Try to continue if the bug has been dealt with if (bugInteractionComplete) { continueCommandFlow(); } }); } else { // No meaningful changes to report, skip impact summary activeBugInProgress = false; // Try to continue if the bug has been dealt with if (bugInteractionComplete) { continueCommandFlow(); } } } } } // Helper function to continue command flow after all messages and bug interaction function continueCommandFlow() { completeCommand(); } // Function to complete command processing function completeCommand() { // Update terminal updateTerminal(); // Clear busy flag gameState.isBusy = false; // Always recreate command prompts to update button states createCommandPrompts(); // Let checkGameState handle the limit notification checkGameState(); } } function addToTerminalLogWithEffect(text, callback) { if (!window.cursorIntervals) { window.cursorIntervals = []; } var typingState = { text: text, position: 0, currentText: "" }; // KILL ALL PREVIOUS CURSORS - CRITICAL FIX while (window.cursorIntervals.length > 0) { var oldInterval = window.cursorIntervals.pop(); LK.clearInterval(oldInterval); } // Clean up any lingering cursors from previous lines with added checks if (gameState.terminal && gameState.terminal.log) { for (var i = 0; i < gameState.terminal.log.length; i++) { // Add null/undefined check before calling endsWith if (gameState.terminal.log[i] && typeof gameState.terminal.log[i] === 'string' && gameState.terminal.log[i].endsWith("_")) { gameState.terminal.log[i] = gameState.terminal.log[i].slice(0, -1); } } } // Add new entry to log var logIndex = gameState.terminal.log.length; gameState.terminal.log.push(""); // KILL THE REAL CURSOR PERMANENTLY if it exists if (gameState.cursor && gameState.cursor.parent) { gameState.cursor.parent.removeChild(gameState.cursor); gameState.cursor = null; } // Cursor character var cursorChar = "_"; var cursorVisible = true; // Setup cursor blink var blinkInterval = LK.setInterval(function () { // Only at end of typing if (typingState.position >= typingState.text.length) { cursorVisible = !cursorVisible; // Toggle cursor visibility if (cursorVisible) { // Show cursor if (!gameState.terminal.log[logIndex].endsWith(cursorChar)) { gameState.terminal.log[logIndex] += cursorChar; } } else { // Hide cursor if (gameState.terminal.log[logIndex].endsWith(cursorChar)) { gameState.terminal.log[logIndex] = gameState.terminal.log[logIndex].slice(0, -1); } } updateTerminal(); } }, 500); // Track this interval for cleanup window.cursorIntervals.push(blinkInterval); function type() { if (typingState.position < typingState.text.length) { // Get current character var currentChar = typingState.text[typingState.position]; // Remove previous cursor if it exists if (typingState.currentText.endsWith(cursorChar)) { typingState.currentText = typingState.currentText.slice(0, -1); } // Add character to current text plus cursor typingState.currentText += currentChar + cursorChar; // Update log entry gameState.terminal.log[logIndex] = typingState.currentText; // Update terminal display updateTerminal(); // Continue typing typingState.position++; LK.setTimeout(type, 50); } else { // Keep cursor visible at end if (callback) { // Pass control to callback with cleanup function callback(function () { // Clear THIS interval only var index = window.cursorIntervals.indexOf(blinkInterval); if (index > -1) { window.cursorIntervals.splice(index, 1); LK.clearInterval(blinkInterval); } // Remove final cursor if present if (gameState.terminal.log[logIndex].endsWith(cursorChar)) { gameState.terminal.log[logIndex] = gameState.terminal.log[logIndex].slice(0, -1); updateTerminal(); } }); } } } type(); } function updateTerminal() { // Update status line var conceptString = ""; for (var category in gameState.conceptCards) { if (gameState.conceptCards[category]) { conceptString += "#" + gameState.conceptCards[category].replace(/\s+/g, '') + " "; } } // Get all log lines as an array // Split into two lines var statusLine1 = "DAY: " + gameState.day + "/" + gameState.maxDays + " | VIBES: " + gameState.vibePoints + "%" + " | COHERENCE: " + gameState.codeCoherence + "%" + " | BUGS: " + gameState.bugs + " | FEATURES: " + gameState.discoveredFeatures.length; var statusLine2 = conceptString; // Set as multiline text gameState.statusLineText.setText(statusLine1 + "\n" + statusLine2); var allLines = gameState.terminal.log.join('\n\n').split('\n'); // Calculate how many lines can fit in the visible area var maxVisibleLines = Math.floor(gameState.terminalMaxVisibleHeight / gameState.terminalLineHeight); // If we have more lines than can fit, trim from the top var visibleLines = allLines; if (allLines.length > maxVisibleLines) { visibleLines = allLines.slice(-maxVisibleLines); } // Update main terminal log text with only the visible lines gameState.logText.setText(visibleLines.join('\n')); // Adjust content container position - no need to scroll as we're trimming content gameState.terminalContentContainer.y = gameState.terminalBaseY; // Update cursor position updateCursorPosition(); } function updateCursorPosition() { if (!gameState.cursor) { return; } // Initialize cursor tracking if it doesn't exist if (!gameState.cursorTracking) { gameState.cursorTracking = { lineCount: 0 }; } // Fixed constants var lineHeight = gameState.terminalLineHeight; // Get the last log entry for X position var lastLogEntry = gameState.terminal.log[gameState.terminal.log.length - 1] || ""; var lastLine = lastLogEntry.split("\n").pop() || ""; // Set X position - adjust the multiplier for character width gameState.cursor.x = 50 + lastLine.length * 17 * TEXT_SIZE_MULTIPLIER; // Changed from 14 to 17 // Set Y position using our explicitly tracked line count (relative to content container) gameState.cursor.y = gameState.cursorTracking.lineCount * lineHeight; // Ensure cursor is visible by auto-scrolling if needed var contentHeight = gameState.logText.height; if (contentHeight > gameState.terminalMaxVisibleHeight) { var cursorY = gameState.cursorTracking.lineCount * lineHeight; if (cursorY > gameState.terminalMaxVisibleHeight) { // Adjust scroll position to keep cursor visible var scrollY = -(cursorY - gameState.terminalMaxVisibleHeight + lineHeight); gameState.terminalContentContainer.y = gameState.terminalBaseY + scrollY; } } } function getAvailableWheelEffects() { // Filter out bug-related effects if no bugs exist return Object.values(WHEEL_EFFECTS).filter(function (effect) { if (gameState.bugs === 0) { return !effect.name.includes("Bug"); } return true; }); } function createVibeBoostButton() { var button = new Container(); // Calculate cost var currentCost = gameState.vibeBoostCost + gameState.vibeBoostUses * 5; var buttonText = "VIBE BOOST[".concat(currentCost, "]"); // Calculate width using same logic as other buttons var buttonWidth = calculateButtonWidth(buttonText); // Create background var bg = LK.getAsset('buttonBg', { width: buttonWidth, height: 100, color: 0x4a86e8 // Different color to distinguish from other buttons }); bg.anchor.set(0.5, 0.5); button.addChild(bg); // Create text var textObj = new Text2(buttonText, { size: 30 * TEXT_SIZE_MULTIPLIER, fill: 0x00ff00 }); textObj.anchor.set(0.5, 0.5); button.addChild(textObj); // Set interactivity conditions var canAfford = gameState.vibePoints >= currentCost; var notMaxCoherence = gameState.codeCoherence < 100; var notBusy = !gameState.isBusy; button.interactive = canAfford && notMaxCoherence && notBusy; button.alpha = button.interactive ? 1.0 : 0.5; button.down = function () { if (!button.interactive || gameState.isBusy) { return; } LK.getSound('buttonsound').play(); button.scale.set(0.95); }; button.up = function () { if (!button.interactive || gameState.isBusy) { button.scale.set(1); return; } button.scale.set(1); gameState.isBusy = true; showVibeBoostWheel(currentCost); }; return button; } function showVibeBoostWheel(cost) { // Create wheel popup container var wheelContainer = new Container(); wheelContainer.x = 2048 / 2; wheelContainer.y = 2732 / 2; game.addChild(wheelContainer); // Create background - doubled size from 800x600 to 1600x1200 var bg = LK.getAsset('reviewBg', { width: 1600, height: 1200, anchorX: 0.5, anchorY: 0.5 }); wheelContainer.addChild(bg); // Create title - adjust Y position for larger window var title = new Text2("VIBE BOOST", { size: 48 * TEXT_SIZE_MULTIPLIER, fill: 0x000000 }); title.anchor.set(0.5, 0); title.y = -500; // Adjusted from -250 for larger window wheelContainer.addChild(title); // Create spinning text - make it larger var spinText = new Text2("Press SPIN to begin!", { size: 48 * TEXT_SIZE_MULTIPLIER, // Increased from 36 fill: 0x000000 }); spinText.anchor.set(0.5, 0.5); wheelContainer.addChild(spinText); // Create spin button - make it larger var spinButton = new Container(); var spinBg = LK.getAsset('buttonBg', { width: 300, // Increased from 200 height: 120, // Increased from 80 color: 0x4a86e8 }); spinBg.anchor.set(0.5, 0.5); spinButton.addChild(spinBg); var spinButtonText = new Text2("SPIN!", { size: 48 * TEXT_SIZE_MULTIPLIER, // Increased from 36 fill: 0x00ff00 }); spinButtonText.anchor.set(0.5, 0.5); spinButton.addChild(spinButtonText); spinButton.y = 300; // Adjusted from 150 for larger window spinButton.interactive = true; spinButton.down = function () { spinButton.scale.set(0.95); }; spinButton.up = function () { spinButton.scale.set(1); startWheelSpin(wheelContainer, spinText, spinButton, cost); }; wheelContainer.addChild(spinButton); } function startWheelSpin(container, spinText, spinButton, cost) { // Deduct cost gameState.vibePoints -= cost; gameState.vibeBoostUses++; // Disable spin button spinButton.interactive = false; spinButton.alpha = 0.5; // Play start sound LK.getSound('wheelstart').play(); // Get available effects var effects = getAvailableWheelEffects(); // Create a proper random selection based on weights var totalWeight = 0; var weightedEffects = []; // Calculate total weight and create array for selection for (var i = 0; i < effects.length; i++) { totalWeight += effects[i].weight; weightedEffects.push({ effect: effects[i], weight: effects[i].weight }); } // Perform weighted random selection var randomNum = Math.random() * totalWeight; var currentWeight = 0; var selectedEffect = null; for (var i = 0; i < weightedEffects.length; i++) { currentWeight += weightedEffects[i].weight; if (randomNum <= currentWeight) { selectedEffect = weightedEffects[i].effect; break; } } // If you want equal chances instead of weighted, use this simpler code: // var randomIndex = Math.floor(Math.random() * effects.length); // var selectedEffect = effects[randomIndex]; // Play spinning sound LK.getSound('wheelspin').play(); // Simulate spinning visually for a short time var spinCount = 0; var currentIndex = 0; var spinInterval = LK.setInterval(function () { // Update display spinText.setText(effects[currentIndex].text); // Move to next option currentIndex = (currentIndex + 1) % effects.length; // Count spins and stop after enough visual spinning spinCount++; if (spinCount > 20) { // Stop spinning LK.clearInterval(spinInterval); // Play stop sound LK.getSound('wheelstop').play(); // Show the randomly selected outcome instead of using the current position spinText.setText(selectedEffect.text); // Execute selected effect var result = selectedEffect.execute(); // Create explanation text with slight delay LK.setTimeout(function () { var explanationText = new Text2(result, { size: 36 * TEXT_SIZE_MULTIPLIER, fill: 0x000000 }); explanationText.anchor.set(0.5, 0.5); explanationText.y = 100; // Position below the outcome text container.addChild(explanationText); // Add close button after explanation appears var closeButton = new Container(); var closeBg = LK.getAsset('buttonBg', { width: 300, height: 120, color: 0x333333 }); closeBg.anchor.set(0.5, 0.5); closeButton.addChild(closeBg); var closeText = new Text2("CLOSE", { size: 48 * TEXT_SIZE_MULTIPLIER, fill: 0x00ff00 }); closeText.anchor.set(0.5, 0.5); closeButton.addChild(closeText); closeButton.y = 300; closeButton.interactive = true; closeButton.down = function () { closeButton.scale.set(0.95); }; closeButton.up = function () { closeButton.scale.set(1); game.removeChild(container); // Only disable busy state if no bug party is active if (!gameState.activeBugParty) { gameState.isBusy = false; } updateTerminal(); createCommandPrompts(); }; container.removeChild(spinButton); container.addChild(closeButton); }, 500); } }, 100); } function startBugReleaseParty() { // Create all existing bugs on screen gameState.activeBugParty = true; game.activeBugPartyBugs = []; // Track all party bugs // Save the current bug count to ensure correct number released var bugsToRelease = gameState.bugs; console.log("Starting bug party with " + bugsToRelease + " bugs"); // Critical fix: If no bugs, don't start a party at all if (bugsToRelease <= 0) { console.log("No bugs to release, skipping party"); gameState.activeBugParty = false; gameState.isBusy = false; updateCommandButtonsState(true); return "No bugs to release!"; } // Clear any existing party reset timer if (gameState.bugPartyResetTimer) { LK.clearTimeout(gameState.bugPartyResetTimer); } // Set safety timeout to force end the party if it gets stuck gameState.bugPartyResetTimer = LK.setTimeout(function () { console.log("Bug party safety timeout triggered"); forceBugPartyEnd(); }, 10000); // 10 seconds for (var i = 0; i < bugsToRelease; i++) { createBugWithProperTracking(i); } gameState.isBusy = true; updateCommandButtonsState(false); return "Released " + bugsToRelease + " bugs! Quick, squish them!"; } function createBugWithProperTracking(index) { var bug = createASCIIBug(); game.addChild(bug); game.activeBugPartyBugs.push(bug); // Give bugs extra time to escape bug.escapeTimer = 800; // Store original down handler var originalDown = bug.down; // Override the down handler with proper closure bug.down = function () { console.log("Bug " + index + " squished"); // Call original down on THIS bug originalDown.call(this); // Schedule a check AFTER the squish animation completes LK.setTimeout(function () { console.log("Checking if party complete after bug " + index + " squished"); checkBugPartyComplete(); }, 1000); }; // Create separate update interval for this bug var bugUpdateInterval = LK.setInterval(function () { // Skip if bug was already removed if (!bug || !bug.parent) { LK.clearInterval(bugUpdateInterval); return; } if (!bug.squished && bug.escapeTimer > 0) { bug.update(1 / 60); } else { // Bug is done (either squished or escaped) LK.clearInterval(bugUpdateInterval); // If escaped, check if party is complete if (bug.escapeTimer <= 0) { console.log("Bug " + index + " escaped"); LK.setTimeout(function () { checkBugPartyComplete(); }, 1000); } } }, 16); } function checkBugPartyComplete() { // Skip check if party already ended if (!gameState.activeBugParty) { console.log("Party already ended, skipping check"); return; } if (!game.activeBugPartyBugs) { console.log("Bug array missing, forcing party end"); forceBugPartyEnd(); return; } // Count active bugs var activeBugs = 0; for (var i = 0; i < game.activeBugPartyBugs.length; i++) { var bug = game.activeBugPartyBugs[i]; if (bug && bug.parent && !bug.squished && bug.escapeTimer > 0) { activeBugs++; } } console.log("Active bugs remaining: " + activeBugs); // If no active bugs remain, end the party if (activeBugs === 0) { console.log("No active bugs left, ending party"); completeBugParty(); } } function completeBugParty() { console.log("Completing bug party normally"); // Clear safety timer if (gameState.bugPartyResetTimer) { LK.clearTimeout(gameState.bugPartyResetTimer); gameState.bugPartyResetTimer = null; } // Reset party state gameState.activeBugParty = false; gameState.isBusy = false; game.activeBugPartyBugs = null; // Critical fix: Use direct DOM call to re-enable buttons updateCommandButtonsState(true); // Provide feedback addToTerminalLogWithEffect("Bug party ended! Commands enabled again.", function () { // Extra call to update buttons after the message is added updateCommandButtonsState(true); }); } // Function to force-end a bug party (for safety timeout) function forceBugPartyEnd() { console.log("Force ending bug party"); // Clear any remaining bugs if (game.activeBugPartyBugs) { for (var i = 0; i < game.activeBugPartyBugs.length; i++) { var bug = game.activeBugPartyBugs[i]; if (bug && bug.parent) { bug.parent.removeChild(bug); } } } // Reset party state gameState.activeBugParty = false; gameState.isBusy = false; game.activeBugPartyBugs = null; // Critical fix: Force re-creation of command buttons if (gameState.promptContainer) { game.removeChild(gameState.promptContainer); gameState.promptContainer = null; } createCommandPrompts(); updateCommandButtonsState(true); // Provide feedback addToTerminalLogWithEffect("Bug party force-ended due to timeout. Commands re-enabled.", function () { // Extra call to update buttons after the message is added updateCommandButtonsState(true); }); } function resetBugParty() { if (gameState.activeBugParty) { console.log("Resetting stuck bug party"); // Clear any remaining bugs if (game.activeBugPartyBugs) { game.activeBugPartyBugs.forEach(function (bug) { if (bug && bug.parent) { bug.parent.removeChild(bug); } }); } // Reset party state gameState.activeBugParty = false; gameState.isBusy = false; game.activeBugPartyBugs = null; updateCommandButtonsState(true); // Notify user addToTerminalLogWithEffect("Bug party reset due to stuck state. Commands enabled again."); } } function resetGameProgress() { storage.gamesCompleted = 0; console.log("Game progress reset. Games completed is now 0."); } function generateReview(score) { // Calculate category scores (0-10) var ratings = { graphics: calculateGraphicsScore(), gameplay: calculateGameplayScore(), technical: calculateTechnicalScore(), innovation: calculateInnovationScore(), vibe: calculateVibeScore() }; // Generate a game name instead of using the concepts directly var gameName = generateGameName(); // Generate full review with all sections var review = { title: generateTitle(), // This still generates concept text but will be skipped in display gameName: gameName, // This will be the main title displayed concept: generateConceptLine(), mainScore: score, categoryReviews: { graphics: generateGraphicsReview(ratings.graphics), gameplay: generateGameplayReview(ratings.gameplay), technical: generateTechnicalReview(ratings.technical), innovation: generateInnovationReview(ratings.innovation), vibe: generateVibeReview(ratings.vibe) }, finalThoughts: generateFinalThoughts(score, ratings), userReviews: generateUserReviews(), steamSnippets: generateSteamSnippets() }; return formatReview(review); } // Score calculators function calculateGraphicsScore() { var score = 5; // Reduced from 7 to 5 var _gameState$conceptCar = gameState.conceptCards, visual = _gameState$conceptCar.visual, platform = _gameState$conceptCar.platform; // Visual style impacts var visualImpacts = { 'ASCII': -1, 'Pixel Art': 1, 'Realistic': 2, 'Low-poly': 1, 'Claymation': 2, 'Hand-drawn': 2, 'PowerPoint': -2, 'Demake': -1, 'Voxel': 1 }; // Platform impacts var platformImpacts = { 'VR': 2, 'Console': 1, 'PC': 1, 'Mobile': 0, 'Smart Fridge': -1, 'Smart Watch': -2, 'Web Browser': -1, 'Blockchain': -1, 'Metaverse': 1 }; // Apply modifiers if (visual && visualImpacts[visual]) { score += visualImpacts[visual]; } if (platform && platformImpacts[platform]) { score += platformImpacts[platform]; } // Coherence impact - unchanged but effectively more impactful with lower base score += Math.floor((gameState.codeCoherence - 50) / 20); // 2. INCREASE PENALTY IMPACT // Bug impact increased - divide by 1 instead of 2 score -= Math.floor(gameState.bugs); return Math.min(10, Math.max(1, score)); } function calculateGameplayScore() { var score = 5; // Reduced from 7 to 5 var _gameState$conceptCar2 = gameState.conceptCards, mechanic = _gameState$conceptCar2.mechanic, genre = _gameState$conceptCar2.genre, platform = _gameState$conceptCar2.platform; // Mechanic impacts var mechanicImpacts = { 'Gacha': 1, 'Physics-based': 2, 'Deckbuilding': 1, 'Match-3': 0, 'Auto-battler': 0, 'Dungeon Crawler': 1, 'Roguelike': 2, 'Turn-Based': 1, 'Tower Defense': 1 }; // Genre impacts var genreImpacts = { 'Horror': 1, 'Dating Sim': 0, 'RPG': 2, 'Educational': -1, 'Battle Royale': 1, 'Idle Clicker': -1, 'Open World': 2, 'Casual': 0, 'Shooter': 1 }; // Apply modifiers if (mechanic && mechanicImpacts[mechanic]) { score += mechanicImpacts[mechanic]; } if (genre && genreImpacts[genre]) { score += genreImpacts[genre]; } // Coherence impact - unchanged score += Math.floor((gameState.codeCoherence - 50) / 25); // 2. INCREASE PENALTY IMPACT // Bug impact increased - divide by 1.5 instead of 3 score -= Math.floor(gameState.bugs / 1.5); return Math.min(10, Math.max(1, score)); } function calculateTechnicalScore() { var score = 5; // Reduced from 8 to 5 // Coherence impact - unchanged but more impactful with lower base score += Math.floor((gameState.codeCoherence - 50) / 10); // 2. INCREASE PENALTY IMPACT // Bugs have even more major impact - 1.5x multiplier score -= Math.floor(gameState.bugs * 1.5); // Platform complexity impacts var platform = gameState.conceptCards.platform; var platformComplexity = { 'VR': -2, 'Blockchain': -3, 'Metaverse': -2, 'Mobile': 0, 'Web Browser': -1, 'Smart Fridge': -2, 'Smart Watch': -2, 'Console': 0, 'PC': 1 }; if (platform && platformComplexity[platform]) { score += platformComplexity[platform]; } return Math.min(10, Math.max(1, score)); } function calculateInnovationScore() { var score = 4; // Reduced from 6 to 4 var concepts = gameState.conceptCards; // Enhanced compatibility scoring var uniquenessFactor = 0; // Check for particularly innovative combinations - INCREASED IMPACT if (concepts.platform === 'VR' && concepts.visual === 'ASCII') { score += 4; // Increased from 3 } if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { score += 4; // Increased from 3 } if (concepts.platform === 'Blockchain' && concepts.genre === 'Dating Sim') { score += 4; // Increased from 3 } if (concepts.visual === 'PowerPoint' && concepts.genre === 'Battle Royale') { score += 4; // Increased from 3 } // NEW: Check for terrible combinations if (concepts.platform === 'Smart Watch' && concepts.genre === 'Open World') { score -= 2; // Penalty for illogical combination } if (concepts.platform === 'VR' && concepts.visual === 'PowerPoint') { score -= 1; // Penalty for nauseating combination } if (concepts.platform === 'Blockchain' && concepts.mechanic === 'Physics-based') { score -= 2; // Penalty for technically contradictory combination } // NEW: More nuanced combinations if (concepts.platform === 'Mobile' && concepts.genre === 'Casual') { score += 1; // Good fit for platform } if (concepts.platform === 'PC' && concepts.genre === 'RPG') { score += 1; // Classic good combination } if (concepts.platform === 'Smart Watch' && concepts.genre === 'Idle Clicker') { score += 2; // Perfect for platform limitations } // General uniqueness checks if (concepts.platform === 'Smart Fridge' || concepts.platform === 'Smart Watch') { uniquenessFactor += 1; } if (concepts.visual === 'ASCII' || concepts.visual === 'PowerPoint') { uniquenessFactor += 1; } if (concepts.mechanic === 'Gacha' && concepts.genre === 'Horror') { uniquenessFactor += 2; } score += uniquenessFactor; // Vibe points boost innovation score += Math.floor((gameState.vibePoints - 50) / 20); return Math.min(10, Math.max(1, score)); } function calculateVibeScore() { // Heavily influenced by vibe points var score = Math.floor(gameState.vibePoints / 12); // Reduced impact from /10 to /12 // Coherence adds smaller bonus score += Math.floor((gameState.codeCoherence - 50) / 20); // Bugs more significantly reduce vibe - divide by 2 instead of 4 score -= Math.floor(gameState.bugs / 2); return Math.min(10, Math.max(1, score)); } function generateGameName() { var _specificParodies; var concepts = gameState.conceptCards; var platform = concepts.platform; var visual = concepts.visual; var genre = concepts.genre; var mechanic = concepts.mechanic; var feature = concepts.feature; // Specific parody names for platform/genre combinations var specificParodies = (_specificParodies = { // Smart Fridge combinations 'Smart Fridge_RPG': ["The Colder Scrolls", "Chrono Fridger", "Final Fridge Fantasy", "Mass Defrost", "Dragon Refrigerator", "Fridge Story", "The Witcher 3: Wild Lunch", "The Legend of Kelvin", "Ice Emblem", "Biofrost"], 'Smart Fridge_Horror': ["Resident Refrigerator", "Silent Chill", "Five Nights at Fridgey's", "Dead Defrost", "Alien: Icebox", "Amnesia: The Dark Freezer", "Outlast Leftovers", "Until Spoil", "Cold Hill", "Defrosternaut"], 'Smart Fridge_Shooter': ["Call of Duty: Cold Storage", "Fridgewatch", "Counter-Strike: Frozen Offensive", "Refriger-nite", "Apex Cold Cuts", "BattleChill", "Halo: Combat Refrigerated", "Destiny: The Frozen King", "Half-Freeze", "FOOM"], // VR combinations 'VR_Horror': ["Resident VR-vil", "Virtual Nights at Freddy's", "Silent Immersion", "Until VR", "Alien: Virtual Isolation", "Paranormal VR-ctivity", "The VRinging", "Headset Evil", "Immersive Dead", "Outlast Your Nausea"], 'VR_Shooter': ["Call of VR-ty", "Counter-Strike: Virtual Offensive", "Super Hot VR... Wait That's Real", "Borderheadsets", "Half-Life: VRyx", "VR-PEX Legends", "VRattle Royale", "Rainbow Six: VR-ge", "Doom VR-ternal", "VR-verwatch"], 'VR_Dating Sim': ["VR-tual Boyfriend", "Doki Doki Headset Club", "I Love You, Colonel VR-ders", "Dream VR-ddy", "Immersive Love Plus", "Hatoful VR-friend", "Virtual Romance Academy", "Mystic VR-ssenger", "Motion Sickness Love Story", "Dating Sim: Nausea Edition"], // Blockchain combinations 'Blockchain_Dating Sim': ["Non-Fungible Tryst", "Crypto Crush Saga", "Love on the Ledger", "NFTeens", "Decentralized Dating", "Blockchain Beach", "Gas Fee Romance", "Smart Contract Hearts", "Proof of Love", "Tokenized Tinder"], 'Blockchain_RPG': ["Final NFTasy", "The Elder Coins", "World of Ethereum-craft", "Cryptomon", "Satoshi's Sword", "Gas Fee Legends", "Block & Chain: Digital Dungeons", "Crypto-Night Chronicles", "Decentralized Dragons", "Mining Quest IX"], // Smart Watch combinations 'Smart Watch_Open World': ["Grand Theft Wristband", "Red Dead MicroScreen", "The Elder Scrolls V: WristRim", "Horizon: Zero Battery", "Glance Dogs", "Assassin's Creed: Wristerhood", "The Legend of Wristda", "Watch_Dogs... No Wait That's Real", "Tiny Theft Auto", "Far Wrist"], 'Smart Watch_Battle Royale': ["Fortnite: Wrist Edition", "Player Wrist-Known Battlegrounds", "Micro Royale", "ApexWrist Legends", "Call of Duty: Tiny Warzone", "Wristcraft Hunger Games", "Tiny Unknown's Battlegrounds", "Wearable Winner", "Squint & Shoot", "Battery Drainer Royale"], // ASCII combinations 'ASCII_Horror': ["Resident ASCII", "Silent Text", "Five Nights at Terminal's", "Dead Symbols", "Fatal Function", "The | | | | |ng", "Outlast: Terminal Edition", "ASCII Horror Story", "Type:Survive", "Paranormal ASCII-tivity"], 'ASCII_RPG': ["Final ASCII", "The Coder Scrolls", "World of TextCraft", "Mass Typefect", "Lord of the Symbols", "ASCII Quest", "Chrono Terminal", "Dragon Text", "> You Died: The Game", "Path of ASCII"], // PowerPoint combinations 'PowerPoint_Battle Royale': ["PowerPoint Unknown's Battlegrounds", "Slide Royale", "Apex Presentations", "Call of Duty: BoardRoom Warfare", "Last Slide Standing", "Star Wipe Showdown", "Office Battle Simulator", "Transition: The Battle Royale", "Death by PowerPoint", "Quarterly Report Royale"], 'PowerPoint_RPG': ["Final PowerPoint", "The Elder Slides", "Office Fantasy", "World of SlideShows", "Mass Present", "Dragon Presentation", "Clip Art Quest", "Spreadsheet Fantasy VII", "The Legend of SmartArt", "Transition Effects: The RPG"], // Visual styles with genres 'Pixel Art_RPG': ["Final Pixel", "ChronoPixel", "Secret of Pixelana", "PixelQuest", "Breath of Pixel", "Octopath Pixeler", "Pixel Fantasy", "Pixelborne", "The Legend of Pixel", "Dragon Pixelst"], 'Claymation_Horror': ["Five Nights at Claydy's", "Resident Clayil", "Silent Mold", "Claymation Park", "Clay Dead", "Amoldsia: The Dark Descent", "The Clayning", "Outlast: Clay Trials", "Until Shaped", "Alien: Clay Isolation"], 'Web Browser_RPG': ["Click Quest", "Tab Hunter: The Scrolling", "The Elder Sites", "World of Webpage", "Chromatic Fantasy", "Safari Quest VII", "The Legend of Link", "Mass Navigation", "Dragon Cache", "Cookie Clicker's Creed"], 'Mobile_Horror': ["Five Nights On Battery", "Silent Notification", "Resident Evil: Pocket Edition", "Dead Cellphone", "Phone Phobia", "Alien: Mobile Isolation", "Until Battery Dies", "Outlast My Data Plan", "Blair Swipe Project", "Tap to Survive"], 'PC_Dating Sim': ["Steam Hearts", "Desktop Darling", "My Computer Romance", "Alt+Tab Love Story", "Command-Line Cupid", "Windows of the Heart", "Keyboard Connections", "MouseMate", "Monitor My Heart", "Hard Drive Me Crazy"], 'Console_Battle Royale': ["DualShock Showdown", "Last Controller Standing", "Controller Royale", "Joy-Con Warzone", "Playstation Battle Station", "Xbox Elimination", "Nintendo Ninety-Nine", "Console Combat", "Gamepad Gauntlet", "Trophy Hunter"], 'Metaverse_Educational': ["Learn To Earn", "Virtual Classroom Infinity", "Meta-Knowledge", "Digital Diploma", "Avatar Academy", "Professor NFT", "School of Thought 3.0", "Decentralized Degree", "Immersive IQ", "EdTech Eternity"], 'Blockchain_Shooter': ["Non-Fungible Targets", "Crypto Combat", "Block and Load", "Chain Reaction", "Gas Fee Gunner", "Decentralized Defense", "Hash Rate Hero", "Proof of Kill", "Wallet Warriors", "Mine and Shoot"], 'Voxel_Dating Sim': ["Cube Cupid", "Blockhearts", "Love in Low Resolution", "Voxel Valentine", "Cubic Crush", "Squared Soulmates", "Block by Block Romance", "Pixelated Passion", "Cubed Connection", "Minecraft: Love Edition"], 'Hand-drawn_Horror': ["Sketched Nightmares", "Inked Terrors", "Drawing Dead", "Pencil Panic", "Sketchbook Survival", "Illustrated Evil", "Drawn to Darkness", "Doodle of Doom", "Graphite Grotesque", "Canvas of Fear"], 'Roguelike_Idle Clicker': ["Permadeath Profits", "Idle Dungeon", "Click Till You Die", "Procedural Progress", "AFK Adventures", "Rogue Incremental", "Passive Permadeath", "Death Clicker", "Fateful Fortunes", "Idle of the Dungeon"], 'Tower Defense_Open World': ["Fortress Exploration", "Open Tower", "Defensive Freedom", "World of Towers", "No Man's Turret", "Wandering Defenses", "Breath of the Tower", "Red Dead Protection", "Grand Theft Tower", "Skyrim With Turrets"], 'Physics-based_Educational': ["Newton's Classroom", "Learning Gravity", "Physics 101: The Game", "Mass Education", "Momentum Masters", "Scientific Simulator", "Force Feedback Learning", "Educational Experiments", "Gravity Grade School", "Physical Science Pro"], 'Deckbuilding_Horror': ["House of Cards", "Deck of the Dead", "Draw Your Doom", "Horror in Hand", "Card Cthulhu", "Shuffle of Terror", "Tabletop Terrors", "Cardboard Nightmares", "Draw of the Dark", "Collectible Carnage"], 'Auto-battler_Dating Sim': ["Love Automated", "Auto Romance", "Battle for Love", "Hands-Off Hearts", "Algorithmic Attraction", "Strategic Seduction", "Auto-Swipe", "Matchmaker Mayhem", "Chess of the Heart", "Tactical Romance"], 'Match-3_Battle Royale': ["Gem Warfare", "Last Match Standing", "Battle Jewels", "Candy Crush Battle", "Match to Survive", "Dropping into Danger", "Royal Rows", "Puzzle Royale", "Swipe or Die", "Three of a Kind or Die"], 'Smart Watch_Dating Sim': ["Wrist Romance", "Heartbeat Connection", "Swipe Right on Time", "Watch For Love", "Small Screen Soulmate", "Time for Love", "Digital Watch Dating", "Pulse Rate Romance", "Wristband Relationships", "Timeless Connection"], 'Realistic_Casual': ["Reality Break", "Casual Realism", "Photorealistic Pet Collector", "Life-Like Leisure", "Hyperreal Farm Sim", "Ultra Detail Village", "Realistic Relaxation", "True-to-Life Tycoon", "Everyday Simulator", "Detailed Downtime"], 'Cross-Platform_Battle Royale': ["Play Anywhere, Die Everywhere", "Cross-Platform Carnage", "Universal Warfare", "Device Royale", "Anywhere Arena", "The Platform Games", "Cross-Play Combat", "Sync or Swim", "Universal Elimination", "Multi-Device Mayhem"], 'Procedural Generation_Educational': ["Learning Infinity", "Knowledge Generator", "Endless Education", "Procedural Professor", "Algorithm Academy", "Random Knowledge", "Generated Genius", "Never-Ending Lessons", "Infinite IQ", "Classroom Creator"], // Metaverse combinations 'Metaverse_RPG': ["Baldur's Metaverse", "Divinity: Original Meta", "Disco Meta", "Pillars of Meternity", "Planescape: Metaverse", "Wasteland Meta", "Star Meta: The Old Republic", "Metaverse Age: Inquisition", "Path of Metaverse", "Metascape Torment"], 'Metaverse_Shooter': ["Meta Eternal", "MetaShock", "Wolfenstein: New Metaverse", "Meta Fortress 2", "Bordermetaverse", "Medal of Meta", "Serious Meta", "Perfect Metaverse", "Quake Meta", "Unreal Metaverse"], 'Metaverse_Horror': ["Amnesia: The Meta Descent", "Meta Space", "Metabound", "Meta May Cry", "The Meta Medium", "Meta by Daylight", "Alien: Meta Isolation", "The Evil Meta", "Meta Isolation", "The Meta of Us Part II"], // ASCII combinations 'ASCII_Dating Sim': ["Terminal Romance", "ASCII After", "Dream Terminal", "/bin/love", "sudo apt-get install romance", "Character Sheet Romance", "Command Line Connections", "Bash & Romance", "Text Mode Heart", "Prompt://Love"], 'ASCII_Battle Royale': ["Terminal Conflict", "ASCII Arena", "Last Character Standing", "Command-Line Carnage", "Text Royale", "sudo battle-royale", "Bash Battlefield", "Monospace Mayhem", "CRT Conflict", "Shell Showdown"], // PC combinations 'PC_Horror': ["System32.Horror", "Blue Screen of Death", "Alt-Tab Terror", "Fatal Error", "Task Manager's Nightmare", "C:/Program Files/Fear", "CMOS Corruption", "Motherboard Malevolence", "Fatal Boot Error", "Registry Corruption"] }, _defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_specificParodies, "PC_Dating Sim", ["Alt+Tab Heart", "System Preferences: Romance", "Runtime Exception: Love", "My Documents/Love Letters", "Registry Key to My Heart", "Task Manager's Heart", "Control Panel Romance", "Device Manager Dating", "Startup Romance", "Windows Update of My Heart"]), 'Physics-based_RPG', ["Trajectory Quest", "Momentum Saga", "Inertial Fantasy", "Gravity's Edge", "Parabolic Adventure", "Vector Force Chronicles", "Kinetic Quest", "Friction Fantasy", "Quantum Realms", "Momentum & Magic"]), 'Physics-based_Horror', ["Gravitational Dread", "Momentum Terror", "Quantum Nightmares", "Fluid Dynamics of Fear", "Terminal Velocity", "Half-Life: Alyx's Nightmare", "Event Horizon", "Entropic Horror", "Conservation of Screams", "Schrödinger's Nightmare"]), 'Console_Horror', ["DualShock Horror", "Controller Drift Nightmare", "Haptic Feedback Fear", "Memory Card Corruption", "XScare Series", "PlayScaretion", "SwitchFright", "GameStation Terror", "Analog Horror", "Thumbstick Dread"]), 'Console_Dating Sim', ["DualShock of Love", "Analog Heart", "L1 + R1 of Love", "Memory Card Memories", "Haptic Heartbeat", "First Party Romance", "Exclusive Relationship", "Cross-Platform Love", "Joy-Connection", "Player Two Enter"]), 'Hand-drawn_Battle Royale', ["Sketch Royale", "Ink Arena", "Brushstroke Battlefield", "Canvas Combat", "Watercolor Warfare", "Charcoal Champions", "Pencil Lead Last Stand", "Illustration Elimination", "Doodle Deathmatch", "Drawn & Danger"]), 'Hand-drawn_RPG', ["Sketchbook Quest", "Ink & Incantations", "Charcoal Champions", "Graphite Grind", "Pencil Lead Legends", "Watercolor Wanderers", "Brushstroke Battles", "Illustrated Adventure", "Doodle Dungeons", "Pen & Paper & Pixels"]), 'Roguelike_Dating Sim', ["Binding of Hearts", "Enter the Love Dungeon", "FTL: Faster Than Love", "Hades Date", "Slay the Heart", "Dead Date Redemption", "Love & Procedural Generation", "Relationship Rogue", "Into the Breach of Love", "Risk of Romance 2"]), 'Roguelike_Horror', ["Binding of Terror", "Enter the Fear Dungeon", "Dead Fear Redemption", "FTL: Faster Than Light Terrors", "Hades Nightmare", "Slay the Beast", "Lovecraft's Rogue", "Into the Scream", "Risk of Horror 2", "Curse of the Dead Gods"]), "Blockchain_Shooter", ["CryptoShock Infinite", "Uncharted: Blockchain's Fortune", "Medal of Ethereum", "Proof-of-Stake Fortress 2", "Gas Fees of War", "Unreal Blockchain", "Block Fortress", "Smart Contract Battlegrounds", "DeFi-nite", "Solana 4 Dead"]), _defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_defineProperty2(_specificParodies, 'Blockchain_Horror', ["Silent Blockchain", "Distributed Ledger of Evil", "Hash Function Horror", "Proof-of-Stake Hill", "Gas Fee by Daylight", "Alien: Blockchain Isolation", "Consensus Mechanism Evil", "Smart Contract Horror", "Nodes of Fear", "Mining Nightmares"]), "Smart Watch_Dating Sim", ["Heartbeat Monitor", "Swipe Right on Wrist", "Tiny Screen Romance", "Wrist Notification of Love", "BPM: Beats Per Match", "Haptic Heart", "Step Counter Sweethearts", "Wearable Love Story", "Battery Life of Love", "Taptic Romance"]), 'Smart Watch_Horror', ["Wrist Notification Terror", "Heart Rate Horror", "Battery Drain Dread", "Haptic Horrors", "Step Counter Stalker", "Taptic Terrors", "Time's Running Out", "Midnight Watch", "Digital Crown Nightmare", "Complications"]), 'Web Browser_Horror', ["404 Terror Not Found", "Cookie Monsters", "HTTP Horrors", "JavaScript Nightmares", "Cache Corruption", "DNS Demons", "SSL Screamers", "Browser History Haunting", "Dark Web", "Incognito Mode"]), 'Web Browser_Dating Sim', ["E-Romance Explorer", "Cookie Consent Hearts", "Hypertext Hearts", "Bookmark My Heart", "New Tab New Love", "Private Browsing Passion", "Add to Favorites", "Download Complete: Love", "Connection Secured", "HTTP Status 200: OK Cupid"]), 'Mobile_RPG', ["Tap Quest Heroes", "Swipe & Slash Saga", "Battery Drain Fantasy", "Notification RPG", "In-App Purchase Adventure", "Gacha Life", "Pocket Legend", "Touchscreen Tales", "Idle Heroes of Might", "AFK Arena of Time"]), 'Mobile_Battle Royale', ["Low Battery Royale", "One Touch One Kill", "Swipe to Survive", "Notification Battleground", "Mobile Data Warfare", "Auto-Rotate Arena", "Screen Time Showdown", "Tap Fire", "Airplane Mode Mayhem", "Battery Saver Battleground"]), 'AI Companions_RPG', ["Neural Network Fantasy", "Deep Learning Quest", "Machine Learning Legends", "Algorithm Adventure", "GPT Knights", "Transformer Tales", "Artificial Quests", "Synthetic Saga", "Turing Test Trials", "LSTM Legends"]), 'NFT Integration_RPG', ["Fungible Fantasy", "Tokenized Tales", "Digital Asset Dungeons", "Blockchain Battles", "Wallet Warriors", "Gas Fee Quest", "Smart Contract Saga", "Minting Monsters", "Ledger Legends", "Crypto Crusaders"]), 'Voxel_Horror', ["Cubic Fears", "Block Terror", "Voxel Nightmares", "Cubism of Death", "Blocky Horrors", "Six-Sided Screams", "Pixel Depth Frights", "Cubic Isolation", "Volumetric Void", "Blocktober Horror"]), _defineProperty2(_defineProperty2(_specificParodies, 'Voxel_RPG', ["Cube Quest", "Block Saga", "Six-Sided Story", "Voxel Ventures", "Cubic Characters", "Blockcraft Legends", "Volumetric Valkyries", "Cube Crawler", "Voxel Vanguard", "Block & Blade"]), 'Low-poly_Horror', ["Faceted Fears", "Vertex Horror", "Triangle Terror", "Low-Resolution Nightmares", "Polygon Panic", "Facet Fright", "Primitive Horror", "Wireframe Worries", "Unsmoothed Unholy", "Jagged Edge"])); // Check for specific combinations first var specificKey = ''; if (platform && genre) { specificKey = platform + '_' + genre; if (specificParodies[specificKey]) { return specificParodies[specificKey][Math.floor(Math.random() * specificParodies[specificKey].length)]; } } if (visual && genre) { specificKey = visual + '_' + genre; if (specificParodies[specificKey]) { return specificParodies[specificKey][Math.floor(Math.random() * specificParodies[specificKey].length)]; } } // If no specific parody found, use the placeholder system as fallback // Collections of name templates by genre var genreNames = { 'Horror': ["Five Nights at {platform}", "Resident {visual}", "Silent {mechanic}", "Dead {platform}", "Alien: {feature}", "{platform} Evil", "The {visual} of Us", "Dying {mechanic}", "Until {visual}", "Outlast {feature}", "{mechanic} Park", "The {platform} Dark", "Amnesia: The {visual} Descent", "{mechanic} Isolation", "Little {platform}s", "The {visual} Medium", "{mechanic} May Cry", "Blair {feature} Project"], 'Dating Sim': ["Love Plus {platform}", "{visual} Academy", "Dream {mechanic}", "My {platform} Romance", "{feature} Story", "Doki Doki {visual} Club", "Hatoful {mechanic}", "{platform} Boyfriend", "Heart of {feature}", "{visual} Sweetheart", "True {mechanic}", "Starlight {platform}", "Summer {visual}", "{mechanic} of Love", "Sweet {platform} Kiss", "{feature} Connection"], 'RPG': ["Final {platform}", "{visual} Quest", "Elder {mechanic}", "Mass {feature}", "Dragon {visual}", "Fallout: New {platform}", "The Witcher 3: Wild {mechanic}", "Persona {visual}", "{platform} Fantasy", "Dark {mechanic}", "Chrono {feature}", "World of {platform}craft", "Kingdom {visual}", "Path of {mechanic}", "Monster {feature}", "{platform} Effect", "Baldur's {visual}", "Star {mechanic} Online", "Disco {feature}"], 'Educational': ["Math {platform}", "Oregon {visual}", "Brain {mechanic}", "Knowledge {feature}", "{platform} Academy", "Where in the {visual} is Carmen Sandiego?", "Number {mechanic}", "{platform} Simulator", "Reader {visual}", "Code {mechanic}", "{feature} Quest", "Science {platform}", "{visual} Lab", "History {mechanic}", "Geography {feature}", "Dr. {platform}'s Learn & Play"], 'Battle Royale': ["Player{platform}'s Battlegrounds", "{visual}nite", "Call of {mechanic}: Warzone", "Apex {feature}", "{platform} Royale", "H1{visual}1", "Last {mechanic} Standing", "Super {platform} Arena", "Realm {visual}", "Hyper {mechanic}", "Darwin {feature}", "Ring of {platform}", "Fall {visual}", "Cuisine {mechanic}", "Radical {feature}"], 'Idle Clicker': ["Cookie {platform}", "{visual} Capitalist", "Clicker {mechanic}", "Idle {feature}", "{platform} Tycoon", "Tap {visual}", "Incremental {mechanic}", "{platform} Mine", "Factory {visual}", "Candy {mechanic} Saga", "Exponential {feature}", "{platform} Billionaire", "Endless {visual}", "Infinity {mechanic}", "Progress {feature}", "Tapper {platform}"], 'Open World': ["Grand Theft {platform}", "Red Dead {visual}", "{mechanic} Creed", "The Legend of {feature}", "Ghost of {platform}", "Horizon: {visual} Dawn", "Far {mechanic}", "Watch {feature}", "Just {platform}", "Saints {visual}", "Yakuza: Like a {mechanic}", "Mafia: {feature} City", "Infamous: {platform} Son", "Dying {visual}", "Spider-{mechanic}", "Breath of the {feature}", "Skyrim: {platform} Edition"], 'Casual': ["Angry {platform}s", "Candy {visual}", "Fruit {mechanic}", "{feature} Crush Saga", "Farm {platform}", "Tiny {visual}", "Happy {mechanic}", "Plant vs {feature}", "{platform} Valley", "Hidden {visual}", "Mystery {mechanic} Theater", "{feature} Pop", "Garden {platform}", "Animal {visual}", "Pocket {mechanic}", "{feature} Paradise"], 'Shooter': ["Call of {platform}", "{visual}field", "Counter-{mechanic}", "Team {feature} 2", "Half-{platform}", "Doom {visual}", "Halo: {mechanic} Evolved", "Bio{feature}", "{platform}shock", "Metal {visual}", "Gears of {mechanic}", "Rainbow Six: {feature}", "Border{platform}s", "Destiny {visual}", "Overwatch {mechanic}", "Valorant {feature}"] }; // Additional name templates based on platform var platformNames = { 'VR': ["Beat {genre}", "Super{genre} VR", "Job {visual}ator", "Half-Life: {genre}", "I Expect You To {visual}", "VR{genre}", "The {genre} Lab", "Virtual {mechanic} Simulator"], 'Smart Fridge': ["Fridge {genre}", "Cool {visual}", "Chilled {mechanic}", "Frost{genre}", "Ice Cold {feature}", "Refrigerated {visual}", "Freezer {mechanic}", "Kitchen {genre} Simulator"], 'Blockchain': ["Crypto{genre}", "NFT {visual}", "Block{mechanic}", "Chain {genre}", "Decentralized {feature}", "Ethereum {visual}", "Token {mechanic}", "Gas Fee {genre}"], 'Smart Watch': ["Wrist{genre}", "Time {visual}", "Watch{mechanic}", "Tiny {genre}", "Glance {feature}", "Tick Tock {visual}", "Nano{mechanic}", "Hand{genre}"] }; // Visual style specific names var visualNames = { 'ASCII': ["Terminal {genre}", "Text {mechanic}", "Command {feature}", "Mono{genre}", "ASCII {mechanic}", "Code{feature}", "{genre}.exe", "Matrix {mechanic}"], 'PowerPoint': ["Slide {genre}", "Presentation {mechanic}", "Office {feature}", "PowerPoint {genre}", "Bullet {mechanic} Point", "Clipart {feature}", "Star Wipe {genre}", "Transition {mechanic}"] }; // Name collections for specific genre-platform-mechanic combos var specialCombos = { 'VR_ASCII': ["The Matrix: ASCII Revolution", "Cyber{genre}", "Terminal Reality", "Text-Based {feature} Experience", "V.R.T.: Virtual Reality Terminal", "Code Vision", "Matrix Vision"], 'Smart Fridge_Horror': ["Cold Storage", "Frostbite {feature}", "Midnight Snack: {mechanic} Edition", "The Thing in my Fridge", "ICE SCREAM", "Defrost Nightmare", "The Cold Ones", "Chilling Presence"], 'Blockchain_Dating Sim': ["Crypto Crush", "Love Chain", "NFT Romance", "Token of my Affection", "Decentralized Hearts", "Smart Contract Love", "Blockchain Boyfriend", "Digital Asset Romance"], 'PowerPoint_Battle Royale': ["Slide or Die", "Last Presentation Standing", "Battle Deck", "PowerPoint PUBG", "Office Royale", "Transition Battleground", "99 Slides", "Star Wipe Survival"] }; // Start building a list of possible names var possibleNames = []; // Add names from the genre collections first if (genre && genreNames[genre]) { possibleNames = possibleNames.concat(genreNames[genre]); } // Add platform-specific names if (platform && platformNames[platform]) { possibleNames = possibleNames.concat(platformNames[platform]); } // Add visual style-specific names if (visual && visualNames[visual]) { possibleNames = possibleNames.concat(visualNames[visual]); } // Check for special combinations var comboKey = ''; if (platform && genre) { comboKey = platform + '_' + genre; if (specialCombos[comboKey]) { possibleNames = possibleNames.concat(specialCombos[comboKey]); } } if (platform && visual) { comboKey = platform + '_' + visual; if (specialCombos[comboKey]) { possibleNames = possibleNames.concat(specialCombos[comboKey]); } } // If we still don't have names, add some generic fallbacks if (possibleNames.length === 0) { possibleNames = ["Super {platform} {genre}", "Amazing {visual} {mechanic}", "Fantastic {feature} {genre}", "Incredible {platform} {visual}", "Epic {mechanic} {feature}", "{platform} {genre} Simulator", "{visual} {mechanic} Adventure", "The Legend of {feature} {platform}"]; } // Select a name template var nameTemplate = possibleNames[Math.floor(Math.random() * possibleNames.length)]; // Replace placeholders with actual concepts var name = nameTemplate.replace('{platform}', platform || 'Game').replace('{visual}', visual || 'Adventure').replace('{genre}', genre || 'Action').replace('{mechanic}', mechanic || 'Play').replace('{feature}', feature || 'Plus'); return name; } function generateTitle() { var concepts = gameState.conceptCards; var title = ""; // Compile core concepts var coreFeatures = [concepts.platform, concepts.visual, concepts.genre, concepts.mechanic, concepts.feature].filter(Boolean); title = coreFeatures.join(" "); return title + "\n"; } function generateConceptLine() { return "Game Concept: " + (gameState.conceptCards.genre || '') + " " + (gameState.conceptCards.mechanic || '') + " on " + (gameState.conceptCards.platform || '') + " with " + (gameState.conceptCards.visual || '') + " graphics and " + (gameState.conceptCards.feature || '') + "\n"; } function generateGraphicsReview(score) { // Visual style comments var visualComments = { 'ASCII': ["The ASCII art visuals create an experience that feels like staring at The Matrix after three energy drinks. Players report developing the ability to 'see the code' in everyday objects.", "The text-based graphics somehow manage to be both charmingly retro and actively hostile to human eyeballs. Several players have reported dreaming in monospace font.", "The terminal aesthetic evokes a time when computers were mysterious and threatening. The game's willingness to sacrifice visual clarity for nostalgic authenticity is either brave or criminally negligent."], 'Pixel Art': ["The pixel art style delivers a perfect balance of nostalgia and modern sensibilities, like finding your childhood teddy bear equipped with Bluetooth.", "Each meticulously crafted pixel contributes to an aesthetic that makes players feel simultaneously transported to 1992 and impressed by contemporary design choices.", "The deliberately constrained resolution creates a charming retro vibe while hiding technical limitations behind an 'artistic choice' façade."], 'Hand-drawn': ["The hand-drawn visuals create a unique aesthetic that feels like playing through someone's particularly elaborate notebook doodles, complete with occasional coffee stains for authenticity.", "The drawings oscillate between 'charming amateur' and 'unexpectedly profound,' leaving players unsure if they're experiencing art or an elaborate joke about art.", "Each frame appears lovingly sketched by someone with either remarkable talent or concerning amounts of free time. The inconsistency between scenes suggests multiple artists or a single artist with rapidly evolving personalities."], 'PowerPoint': ["The PowerPoint aesthetic is implemented with such commitment that players report experiencing flashbacks to corporate quarterly reviews. The star wipe transition between death and respawn is particularly traumatizing.", "Slide transitions serve as both game mechanics and psychological torture devices. The development team has somehow weaponized corporate presentation software to stunning effect.", "The deliberate use of default templates and clip art creates an uncanny corporate nightmare that makes the mundane terrifying. Several players have reported developing hives when seeing bullet points outside the game."], 'Low-poly': ["The low-poly visuals strike that perfect balance between 'deliberate artistic choice' and 'we couldn't afford more polygons.' Corners that could take someone's eye out are featured prominently.", "Sharp angles and flat surfaces create an aesthetic that's simultaneously nostalgic for the early 3D era and suspiciously modern in its execution.", "The angular aesthetic feels like a love letter to the PlayStation 1 era, complete with authentic texture warping that wasn't intentional then but somehow is now."], 'Claymation': ["The claymation style brings a tactile quality to the game, complete with visible fingerprints that suggest either artistic authenticity or a crime scene. Possibly both.", "Characters move with that signature stop-motion jerkiness that's either charming or unsettling depending on your childhood experiences with Wallace and Gromit.", "The deliberate imperfections in the clay models create an unsettling organic quality, as if the digital world is somehow made of actual physical materials that could rot if left unattended."], 'Realistic': ["The realistic graphics sometimes cross into uncanny valley territory, creating characters who look almost human but whose dead eyes suggest they've seen the void between worlds.", "The photorealistic visuals create an immersive experience that occasionally makes players forget what reality they're in, which may or may not be the point.", "The high-fidelity graphics push hardware to its limits, raising the philosophical question of whether melting your GPU was part of the artistic vision."], 'Voxel': ["The voxel-based graphics create a world that feels simultaneously childlike and ominous, like a LEGO set assembled by someone with questionable intentions.", "Blocky characters and environments give the game a charm that cleverly masks how technically challenging proper curves would have been to implement.", "The cubist aesthetic makes everything look like it belongs in a universe where Minecraft won the console wars and all other visual styles were outlawed."], 'Demake': ["The deliberately downgraded aesthetic captures the essence of playing on hardware that wasn't quite up to the task, complete with authentic slowdown when more than three objects are on screen.", "The demake style implements visual constraints so convincingly that players report checking if their graphics card has somehow been replaced with a potato.", "The authentically degraded visuals inspire genuine nostalgia, making players long for a time when expectations were lower and imagination filled in the graphical gaps."] }; // Platform-specific comments var platformComments = { 'VR': ["The VR implementation creates an immersive experience that's both impressive and occasionally nauseating. Multiple players report developing 'VR legs' and losing their actual legs in the process.", "Moving through virtual space feels surprisingly natural, though the occasional clipping issues break immersion and sometimes the laws of physics.", "The game takes full advantage of virtual reality's possibilities while also embracing its limitations, like how most players will quit after 30 minutes because they feel like they're going to throw up."], 'Mobile': ["The mobile platform limitations are cleverly disguised as design choices, with menu buttons large enough to accommodate fingers of all sizes and intelligence levels.", "The game's performance on phones suggests either remarkable optimization skills or a dark pact with the silicon gods of battery life.", "Touch controls have been implemented with surprising precision, making them only moderately more frustrating than using actual buttons."], 'Console': ["The console version makes efficient use of controllers, requiring only minor finger contortions that physical therapists describe as 'probably not immediately damaging.'", "Load times have been optimized to be just short enough that players won't quite have time to make a sandwich but long enough to contemplate their life choices.", "The game pushes console hardware to its limits, occasionally causing fans to spin so loudly they've been mistaken for small aircraft."], 'PC': ["PC-specific features are implemented with the appropriate level of customization options, allowing players to spend more time adjusting graphics settings than actually playing.", "System requirements seem reasonable until you actually try to run it, at which point your computer fans begin to sound like a jet engine preparing for takeoff.", "The keyboard and mouse controls are intuitive enough that only three or four limbs are required to perform basic functions."], 'Web Browser': ["The browser-based implementation somehow manages to both tax your system resources and make you question what your expensive computer is even doing with all that processing power.", "Cross-browser compatibility has been achieved in the same way world peace might be: through compromise, sacrifice, and the occasional complete surrender.", "The game loads just slowly enough to make you consider refreshing the page but not quite slowly enough to justify actually doing so."], 'Blockchain': ["The blockchain implementation adds a layer of technological complexity that absolutely no one asked for but somehow makes the game both slower and more expensive to play.", "Each in-game action consumes enough electricity to power a small village, which the developers insist is a feature, not a bug of blockchain technology.", "The decentralized architecture ensures that no single entity controls your gaming experience, except for the three mining pools that collectively control 90% of the network."], 'Smart Fridge': ["The smart fridge implementation cleverly uses the door opening as a loading screen, though extended gameplay sessions have resulted in concerning food spoilage incidents.", "Playing on kitchen appliances represents either the future of gaming or a concerning sign of technology's unchecked spread into every aspect of our lives.", "The cold air wafting from the open fridge door creates an immersive environmental effect for ice levels, though the developers disclaim responsibility for resulting electricity bills."], 'Smart Watch': ["The smart watch version compresses the experience onto a screen roughly the size of a postage stamp, causing players to develop superhuman visual acuity or severe eye strain, possibly both.", "Wrist-based controls utilize accelerometers in ways their creators never intended and probably wouldn't approve of if consulted.", "Battery optimization has been approached with the same strategy as a kamikaze pilot: full power until nothing remains."], 'Metaverse': ["The metaverse implementation creates a virtual world inside another virtual world, raising philosophical questions about recursive reality that the developers are definitely not qualified to answer.", "The persistent online environment offers unprecedented opportunities for social interaction, primarily allowing players to ignore each other in digital space instead of physical space.", "Metaverse integration adds a layer of existential confusion to gameplay, with multiple players reporting they now struggle to distinguish between reality levels like characters in Inception."] }; var _gameState$conceptCar3 = gameState.conceptCards, visual = _gameState$conceptCar3.visual, platform = _gameState$conceptCar3.platform; var review = "Graphics: ".concat(score, "/10\n"); // Special case combinations - pick only one now if (visual === 'ASCII' && platform === 'VR') { var options = ["ASCII art in VR is certainly... a choice. While most players reported immediate nausea from trying to parse text characters in 3D space, a small but vocal community calls it \"revolutionary\" and \"the Dark Souls of visual design.\" The flickering terminal aesthetic certainly enhances the horror elements, though distinguishing enemies from walls remains a challenging gameplay feature.", "The bold decision to render three-dimensional space with nothing but ASCII characters has created what medical professionals are now calling 'Terminal Vision Syndrome.' Players report seeing command prompts overlaid on reality after just 20 minutes of gameplay. Some have started dreaming in monospace font.", "Experiencing walls of text in virtual reality creates a peculiar type of motion sickness previously unknown to science. Yet somehow, a dedicated community has emerged claiming the 'textural purity' offers an unmatched immersive experience. We're not convinced they're not all suffering from Stockholm syndrome."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (visual === 'PowerPoint' && platform === 'VR') { var options = ["Experiencing PowerPoint transitions in virtual reality is exactly as disorienting as it sounds. The 'spinning newspaper' effect has been officially classified as a psychological weapon in three countries. Players report seeing phantom bullet points for days after sessions.", "The combination of slide transitions and VR head movement has resulted in the first game that requires a medical waiver. The 'star wipe to reality' effect has been banned in competitive play due to the unfair advantage it gives to players immune to vestibular disruption.", "PowerPoint animations experienced in full VR immersion have created a new category of sensory experience that psychologists are struggling to classify. The 'checkerboard dissolve' transition between levels has become a new therapy technique for treating certain phobias."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (visual === 'Claymation' && platform === 'Blockchain') { var options = ["Each handcrafted clay frame exists as an NFT, meaning the animation depends entirely on blockchain validation. When network traffic is high, characters move like they're trapped in digital molasses. The artists' fingerprints visible in the clay are now selling as separate collectibles.", "The blockchain verification process means each claymation frame must be individually validated, creating what players describe as a 'stop motion experience where the stop is mostly what you get.' During peak network congestion, the game effectively becomes a slideshow of lovingly crafted clay figures frozen in existential terror.", "The marriage of claymation and blockchain creates the unique scenario where character animations cost actual money to execute. Players report budgeting 'movement allowances' for different game sessions, with some choosing to keep characters completely still during non-essential scenes to save on gas fees."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (visual === 'Realistic' && platform === 'Smart Watch') { var options = ["Squeezing photorealistic graphics onto a watch screen creates a peculiar effect where everything looks simultaneously incredibly detailed and completely indecipherable. It's like viewing the Mona Lisa through a keyhole while running past it.", "The attempt at photorealism on a 1.5-inch screen has created the gaming equivalent of trying to watch Lawrence of Arabia on a postage stamp. Players report developing unprecedented squinting muscles and a new appreciation for abstract art.", "The photorealistic visuals compressed onto a watch face have created what ophthalmologists are calling 'micro-eye strain' - a condition where your eyes hurt not from looking at something too big, but from attempting to appreciate minute details on something absurdly small."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else { // Add ONE visual style comment if available if (visual && visualComments[visual]) { var options = visualComments[visual]; review += options[Math.floor(Math.random() * options.length)] + " "; } // Add ONE platform comment if available if (platform && platformComments[platform]) { var options = platformComments[platform]; review += options[Math.floor(Math.random() * options.length)] + " "; } } // Add ONE coherence or bug comment if applicable, not both if (gameState.codeCoherence < 50 && Math.random() < 0.7) { var lowCoherenceComments = ["The visual glitches are either artistic genius or concerning system failures - we're not entirely sure which. The 'wavy reality' effect seems less intentional and more like the rendering engine is having an existential crisis.", "Textures have developed the disturbing habit of occasionally swapping places, resulting in NPCs with brick faces and buildings with human skin. The developers insist this is 'dynamic environmental storytelling.'", "Visual elements randomly phase in and out of existence like quantum particles, which the marketing department has retroactively branded as 'Schrödinger rendering technology.'", "The game's graphics routinely bend in ways that suggest the rendering engine is questioning the nature of reality. Characters occasionally turn inside-out during cutscenes, which the developers claim is 'emotional expression through topological transformation.'", "Assets frequently forget which dimension they belong to, creating scenes where background elements casually stroll through foreground conversations. The patch notes insist this is an 'interactive storytelling breakthrough.'"]; review += lowCoherenceComments[Math.floor(Math.random() * lowCoherenceComments.length)] + " "; } else if (gameState.bugs > 5 && Math.random() < 0.7) { var highBugComments = ["The numerous visual bugs have been claimed as \"dynamic art features\" by the development team, who are now mysteriously all using the job title 'Accidental Art Director.'", "Character models occasionally contort into geometrically impossible shapes that mathematician M.C. Escher would find disturbing. These have been rebranded as 'surprise flexibility mechanics.'", "Visual elements frequently clip through each other in ways that defy not just game design but several laws of physics. The resulting Lovecraftian imagery could qualify the game for the horror genre regardless of its actual content.", "Z-fighting issues occur with such rhythmic consistency that players have set the flickering textures to music. The resulting community-created content has spawned three remix albums and a small festival.", "Lighting errors create such dramatic shadow effects that some scenes resemble expressionist German cinema from the 1920s. Critics can't agree if it's a bug or the most innovative visual direction in recent gaming history."]; review += highBugComments[Math.floor(Math.random() * highBugComments.length)] + " "; } // Apply smart truncation review = smartTruncateReview(review, 500) + "\n\n"; return review; } function generateGameplayReview(score) { // Mechanic-specific comments var mechanicComments = { 'Gacha': ["The gacha mechanics have been finely tuned to extract maximum revenue while still technically qualifying as 'entertainment' rather than 'gambling' in most jurisdictions.", "Random reward systems trigger dopamine responses with the precision of a neurosurgeon wielding a slot machine instead of a scalpel.", "The pity system ensures players always get something good eventually, with 'eventually' mathematically calculated to be just before they abandon the game entirely."], 'Physics-based': ["The physics engine operates on principles that suggest the developers have either never encountered actual physics or have discovered laws of motion unknown to science.", "Object interactions create emergent gameplay moments ranging from 'delightfully unexpected' to 'catastrophically glitched,' often within the same second.", "Momentum and gravity have been implemented with just enough accuracy to be predictable but not enough to prevent hilarious ragdoll failures that players now deliberately trigger."], 'Deckbuilding': ["The card system offers enough strategic depth that players can convince themselves their losses are due to bad luck rather than poor decision-making.", "Synergies between cards create combinations powerful enough to make players feel like geniuses for discovering what the developers intentionally designed.", "The meta evolves at a pace carefully calculated to maximize both engagement and the obsolescence of previously valuable cards."], 'Match-3': ["The match-three mechanics have been refined to the point where players enter a trance-like state, emerging hours later with no memory but mysteriously completed objectives.", "Tile-swapping creates a hypnotic effect that neuroscientists describe as 'concerningly addictive' and 'probably should be regulated.'", "Special combos trigger screen effects flashy enough to be visible from space, or at minimum, from across the room where concerned family members gather."], 'Auto-battler': ["The auto-battler system allows players to experience the unique joy of setting up a strategy and then watching it fail spectacularly without their intervention.", "Combat automation creates the perfect illusion of strategy while actually relying on statistical probabilities that would make casino owners blush.", "The hands-off approach to gameplay raises existential questions about what players are even doing here, questions the developers wisely avoid addressing."], 'Dungeon Crawler': ["The procedurally generated dungeons create endless unique experiences that somehow all start feeling exactly the same after about three hours.", "Level designs balance challenge and reward with the precision of a drunk tightrope walker who occasionally makes it across through sheer luck.", "The risk-reward system encourages players to push just one room further, a decision they consistently report regretting immediately thereafter."], 'Roguelike': ["The permadeath system teaches valuable lessons about loss, impermanence, and the human capacity for self-torture disguised as entertainment.", "Run-based progression creates a gameplay loop addictive enough that players report dreaming about 'just one more run' while actively in the middle of a run.", "Random elements ensure no two playthroughs are alike, though players will still blame the RNG rather than their skills for consistent failures."], 'Turn-Based': ["The turn-based combat system gives players unlimited time to make decisions they'll immediately regret once executed.", "Strategic depth is achieved through a complex system of rock-paper-scissors where rock occasionally transforms into dynamite without warning.", "Action queuing allows for elaborate plans that enemies subsequently dismantle with the casual efficiency of a chess grandmaster playing against a toddler."], 'Tower Defense': ["The tower defense mechanics tap into the primal human satisfaction of watching automated systems obliterate waves of enemies while you do absolutely nothing.", "Strategic tower placement creates a false sense of control in a genre that's essentially about watching numbers go down while pretty visual effects happen.", "The escalating wave difficulty follows a curve precisely designed to make players feel both challenged and competent until the inevitable difficulty cliff they're not warned about."] }; // Genre-specific comments var genreComments = { 'Horror': ["The horror elements range from genuinely unsettling to accidentally hilarious, sometimes achieving both states simultaneously through particularly buggy monster animations.", "Atmospheric tension has been crafted with such effectiveness that players report feeling anxious even during loading screens and menu navigation.", "Psychological terror builds through masterful pacing that knows exactly when to release tension, which is apparently never based on player heart rate monitors."], 'Dating Sim': ["The romance options offer enough variety that players can explore their taste in fictional partners without the inconvenience of actual human connection.", "Character development arcs are surprisingly nuanced for a game where success is measured by whether digital entities agree to go on pretend dates with you.", "The dialogue trees branch with enough complexity that players can fail at virtual relationships in ways they haven't even managed in real life yet."], 'RPG': ["The role-playing elements offer just enough statistical complexity to make spreadsheet enthusiasts feel their skills are finally being appreciated.", "Character progression systems provide that perfect dopamine hit of watching numbers go up while your actual life achievements remain static.", "Questlines branch with such complexity that completing the main story requires either a photographic memory or an unhealthy relationship with online wikis."], 'Educational': ["The learning mechanics successfully disguise education as entertainment, tricking players into absorbing knowledge with only minimal psychological scarring.", "Instructional content is integrated so seamlessly that players may not realize they're learning until they unexpectedly display knowledge in real-world situations.", "The balance between fun and education has been struck with all the precision of a blindfolded marksman who occasionally hits the target through statistical probability."], 'Battle Royale': ["The last-player-standing format taps into humanity's basest competitive instincts while somehow remaining just socially acceptable enough to discuss at dinner parties.", "The shrinking play area creates a physical manifestation of anxiety that players willingly subject themselves to for reasons psychologists are still studying.", "Random loot distribution ensures that skill matters, but not quite as much as being blessed by the capricious gods of RNG."], 'Idle Clicker': ["The incremental gameplay loop creates the perfect illusion of progress while requiring just enough player interaction to technically qualify as a 'game.'", "Number-go-up mechanics have been refined to the point where watching values increase feels like a genuine accomplishment deserving of pride.", "Automation features allow the game to essentially play itself, raising philosophical questions about what players are even doing here that the developers wisely avoid addressing."], 'Open World': ["The expansive map creates a sense of freedom and possibility that lasts until players realize they're still ultimately following prescribed paths designed by developers.", "Environmental storytelling is implemented with such subtlety that players may miss 90% of it while focusing on collecting arbitrary items scattered across the landscape.", "The sandbox design offers unprecedented player agency, which most use to ignore the main questline and instead create elaborate scenarios involving physics glitches."], 'Casual': ["The pick-up-and-play mechanics have been crafted to be accessible enough for anyone to enjoy but deep enough that players can convince themselves it's a worthwhile use of time.", "Simple gameplay loops create a soothing experience that mental health professionals describe as 'technically less harmful than most coping mechanisms.'", "Low-stakes challenges provide just enough accomplishment to trigger satisfaction without the inconvenience of actual effort or skill development."], 'Shooter': ["The gunplay mechanics have been tuned to create that perfect satisfaction of point-and-click destruction without the moral complications of actual violence.", "Weapon feedback uses audio-visual cues to trigger pleasure responses with the precision of behavioral scientists who chose game development over ethics committees.", "The arsenal variety creates an illusion of strategic depth in a genre fundamentally about making things go boom in progressively more spectacular ways."] }; var _gameState$conceptCar4 = gameState.conceptCards, mechanic = _gameState$conceptCar4.mechanic, genre = _gameState$conceptCar4.genre, platform = _gameState$conceptCar4.platform; var review = "Gameplay: ".concat(score, "/10\n"); // Special combinations - pick only one if (mechanic === 'Gacha' && genre === 'Horror') { var options = ["The horror elements work surprisingly well with the gacha mechanics. Nothing says terror like spending real money and getting your 15th duplicate character. The \"Despair Meter\" that fills as you pull more common items is genuinely anxiety-inducing. We're particularly impressed by the pity system that activates only after you've spent enough to finance a small car.", "The psychological horror of the gacha system creates genuine dread as players face the twin terrors of poor drop rates and dwindling bank accounts. The rare character summon animation that occasionally shows your real-life financial statements is a particularly cruel touch.", "Fusion of horror and gacha creates the unique experience of being frightened both by the game's monsters and by your credit card statements. The special 'financial horror' game mode where pull rates decrease in proportion to your remaining savings is diabolically inventive."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (platform === 'Smart Fridge' && genre === 'Horror') { var options = ["Turning your refrigerator into a portal of terror is innovative, if impractical. The jump scares are particularly effective when you're just trying to get a midnight snack. The game's ability to adjust scare timing based on how often you open the door for comfort food creates a diabolical feedback loop of terror and hunger.", "Horror experienced via refrigerator creates a unique form of domestic terror. The game's integration with the temperature controls means particularly frightening scenes are accompanied by an actual cold chill. Several players report developing a Pavlovian fear response to the sound of their fridge's compressor starting.", "The kitchen-based horror experience fundamentally changes your relationship with food storage. Players report checking behind yogurt containers for monsters and approaching the vegetable crisper with trepidation. The feature that slightly moves food items between gaming sessions is psychological warfare in appliance form."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else { // Add ONE mechanic comment if available if (mechanic && mechanicComments[mechanic]) { var options = mechanicComments[mechanic]; review += options[Math.floor(Math.random() * options.length)] + " "; } // Add ONE genre comment if available if (genre && genreComments[genre]) { var options = genreComments[genre]; review += options[Math.floor(Math.random() * options.length)] + " "; } } // Apply smart truncation review = smartTruncateReview(review, 500) + "\n\n"; return review; } function generateTechnicalReview(score) { // Platform-specific technical comments var platformComments = { 'VR': ["The virtual reality implementation manages to occupy that perfect technical sweet spot where your PC's fans sound like a jet engine while your stomach feels like it's on a boat. Players report developing 'VR arms' - the peculiar muscle memory of knowing exactly how far they can swing before hitting actual furniture.", "The technical achievement of rendering a world while simultaneously tracking head movements results in an experience that's halfway between immersion and motion sickness. The framerate prioritization system intelligently sacrifices visual quality whenever you look at anything interesting.", "The headset integration demonstrates the technical marvel of convincing your brain you're somewhere else while your body experiences the unique discomfort of having a small computer strapped to your face. Cable management has become its own meta-game."], 'Mobile': ["The technical optimization makes remarkable use of your phone's processing power, primarily by turning it into a hand warmer that occasionally displays pixels. Battery life is measured in either minutes or temperature increases, whichever comes first.", "Touch input responsiveness has been calibrated to the exact sweet spot between 'too sensitive' and 'completely unresponsive,' often achieving both states simultaneously depending on how important the current action is to gameplay.", "The app's memory management is a technical marvel, somehow managing to consume every available system resource while still periodically crashing due to lack of memory. Push notifications arrive with perfect timing to disrupt critical gameplay moments."], 'Console': ["The technical implementation pushes home entertainment hardware to its limits, with fan noise levels that successfully drown out the actual game audio. Loading screens are precisely timed to be just short enough that you don't get up, but long enough to question your life choices.", "Firmware integration achieves the remarkable feat of requiring system updates exclusively when you have limited play time. The hardware utilization curve suggests the development team may have misunderstood the concept of 'optimization' as 'making the hardware suffer as much as possible.'", "The technical architecture makes innovative use of the console's unique capabilities, predominantly by ignoring most of them in favor of universal cross-platform compatibility. Controller battery life decreases in inverse proportion to the importance of current gameplay moments."], 'PC': ["The system requirements list reads like a hardware wishlist rather than actual technical specifications, with the recommended GPU being 'whatever isn't publicly available yet.' The settings menu offers 58 adjustable parameters, none of which appear to make any noticeable difference to performance.", "The PC port demonstrates remarkable technical innovation by running differently on every single machine. Players report unique crash experiences that the developers are calling 'personalized technical storytelling' rather than 'insufficient QA testing.'", "Graphics options include helpful presets labeled 'Slideshow,' 'Barely Playable,' and 'Will Probably Catch Fire,' with the ultra settings clearly designed for hardware that won't exist until 2027. The auto-detect feature has achieved sentience and now actively mocks your components."], 'Web Browser': ["The browser-based engine demonstrates the technical achievement of working almost identically across all major browsers, creating similarly disappointing experiences regardless of your preferred internet portal. The memory leak has been labeled a 'persistent world feature.'", "Cross-browser compatibility has been achieved through what appears to be forbidden technical sorcery, though Chrome still manages to consume RAM as if it's being paid by the gigabyte. The 'reload on crash' function has been used so frequently it deserves its own dedicated keyboard shortcut.", "JavaScript optimization reaches previously unknown heights of technical brilliance, somehow making both high-end gaming rigs and corporate workstations struggle equally. Tab management has evolved into its own meta-game, with the constant risk of accidental navigation serving as the primary source of tension."], 'Blockchain': ["The technical implementation successfully ensures that every minor game action requires enough electricity to power a small village. The distributed architecture guarantees that simple operations which would take milliseconds on a regular platform instead involve thousands of computers performing cryptographic calculations.", "The blockchain verification system creates an innovative technical delay between player actions and their consequences, which the developers have retroactively branded as 'strategic contemplation time' rather than 'waiting for transaction confirmation.'", "The distributed ledger architecture achieves the technical marvel of making simple database lookups cost actual money. The developers have pioneered a new metric called 'performance per kilowatt-hour' which somehow manages to be simultaneously impressive and horrifying."], 'Smart Fridge': ["The refrigeration unit integration achieves the technical breakthrough of using CPU heat to fight the appliance's primary cooling function, creating a self-defeating loop of efficiency that physicists are still trying to understand. Ice cube generation algorithms slow dramatically during graphics-intensive sequences.", "Temperature management systems display remarkable technical coordination, cooling game assets alongside actual food items with varying degrees of success. Several players report milk spoilage directly proportional to gameplay session length.", "The technical architecture leverages the appliance's unique capabilities, with loading times carefully synchronized to door opening events. The vegetable crisper drawer now doubles as an emergency heat sink during particularly demanding gameplay sequences."], 'Smart Watch': ["The wrist-mounted implementation demonstrates the technical achievement of displaying recognizable graphics on a screen the size of a postage stamp. Touch precision has been calibrated to the exact width of fingers significantly wider than any interactive elements.", "Battery optimization represents a technical breakthrough in the field of 'barely functional.' The aggressive power management ensures gameplay sessions end precisely when reaching critical moments, with a helpful 'low battery' notification obscuring the screen seconds before shutdown.", "The processing architecture makes innovative use of the limited chipset, primarily by offloading calculations to the user's patience. The haptic feedback system has been finely tuned to either be completely imperceptible or startle you into dropping your arm."], 'Metaverse': ["The persistent world architecture demonstrates the technical marvel of maintaining stability while simultaneously ensuring that no two users ever experience the same version of reality. Desynchronization has been retroactively classified as a 'perception filter' feature.", "Cross-platform avatar systems achieve the technical feat of making your digital representation look equally uncanny regardless of what device you're using. Physics calculations take place across distributed servers in what appears to be different timelines.", "The technical infrastructure exhibits the remarkable ability to consume bandwidth as if it's a competitive sport. Social proximity voice chat has been calibrated to ensure you hear primarily breathing, background conversations, and inexplicable static from nearby users."] }; // Feature-specific comments var featureComments = { 'Cloud Save': ["The cloud synchronization works with the reliability of weather forecasting, occasionally causing data rain where you least expect it.", "Cross-device progression functions seamlessly when it works and creates existential crises when it doesn't, with saved games occasionally entering quantum states of both existence and non-existence.", "The backup system ensures player data is theoretically safe, though the recovery process requires technical knowledge roughly equivalent to a computer science minor."], 'Microtransactions': ["The monetization model has been designed with the subtle touch of a carnival barker with a psychology degree, making wallets open through carefully calibrated frustration thresholds.", "Optional purchases range from purely cosmetic to suspiciously advantageous, with price points carefully calculated to seem reasonable until you do the actual math.", "The premium currency exchange rate uses numerical values specifically chosen to make real-world cost calculations just inconvenient enough to discourage them."], 'AI Companions': ["The artificial intelligence creates companions just smart enough to be helpful but just dumb enough to remind you they're not real people, a balance the developers hit entirely by accident.", "NPC behavior patterns use machine learning to simulate human interaction with all the authenticity of a customer service chatbot that's having an off day.", "The companion system creates the perfect illusion of relationship without the messy complications of actual human connection, a feature psychologists are still debating the implications of."], 'Procedural Generation': ["The algorithmic content creation ensures infinite variety with the small caveat that everything starts looking suspiciously similar after about five hours.", "Randomized elements combine in ways mathematically calculated to be unique while still somehow producing the same fundamental experience with slight cosmetic variations.", "The generative systems create emergent scenarios ranging from 'surprisingly compelling' to 'obviously machine-made nonsense,' often within the same gameplay session."], 'NFT Integration': ["The blockchain collectibles add a layer of artificial scarcity to digital items, solving a problem that absolutely no one had in the first place.", "Token ownership provides players with the unique experience of paying real money for proof they own something that fundamentally cannot be owned in any meaningful sense.", "The NFT marketplace creates an economy where value is determined by a complex algorithm combining hype, FOMO, and statistically improbable optimism about future worth."], 'Multiplayer': ["The online functionality connects players globally with the primary purpose of enabling strangers to question each other's gaming abilities, ancestry, and moral character.", "Server infrastructure handles player interactions with the reliability of a weather vane in a hurricane, occasionally working perfectly and other times creating lag so bad it borders on time travel.", "The matchmaking system uses sophisticated algorithms to ensure teams are balanced in theory while actual games range from nail-biting competition to one-sided massacres."], 'VR Support': ["The virtual reality integration creates an immersive experience for those players willing to strap expensive technology to their faces and spin around their living rooms knocking over lamps.", "Motion controls translate real movements into game actions with an accuracy ranging from 'surprisingly precise' to 'wildly interpretive dance.'", "The spatial audio creates such convincing 3D sound that players consistently respond to in-game noises as if they were occurring in their actual environment, much to the confusion of pets and family members."], 'Cross-Platform': ["The multi-device compatibility ensures players can enjoy the same frustrations across all their expensive hardware with only minor variations in performance and stability.", "Account synchronization works across platforms with the seamless integration of puzzle pieces from different sets that have been forced together through sheer corporate determination.", "The unified ecosystem creates a consistent experience regardless of platform, though 'consistent' sometimes means 'consistently problematic' depending on the device generation."], 'Offline Mode': ["The disconnected gameplay option ensures entertainment continues even during internet outages, though achievement tracking enters a quantum state of uncertainty until connectivity resumes.", "Local play functions independently from online services with only minor feature reductions that players discover at exactly the most inconvenient moments.", "The offline capabilities create a safety net for those with unreliable internet, though the game still somehow knows exactly when you're trying to cheat the system."] }; var _gameState$conceptCar5 = gameState.conceptCards, platform = _gameState$conceptCar5.platform, feature = _gameState$conceptCar5.feature; var review = "Technical Performance: ".concat(score, "/10\n"); // Special platform-feature combinations - pick only one if (platform === 'Blockchain' && feature === 'Cloud Save') { var options = ["Storing save files on the blockchain works flawlessly, assuming you don't mind paying gas fees every time you want to save your progress. Each save point costs roughly the same as a nice dinner. Players now face the existential question of whether their gameplay is worth the environmental impact of storing their inventory data on thousands of computers worldwide.", "The blockchain-based save system creates the world's first gaming experience where your saves are technically public property. Each checkpoint requires a transaction fee that fluctuates wildly based on network congestion, leading to players developing elaborate 'save strategies' to minimize costs. The in-game economy is now less volatile than the actual save system.", "Combining blockchain validation with cloud saving creates the unique technical achievement of making game preservation simultaneously permanent and prohibitively expensive. Players report budgeting 'save allowances' and developing anxiety around in-game checkpoints that exceeds the tension of actual gameplay."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (platform === 'VR' && feature === 'Offline Mode') { var options = ["The offline VR mode functions perfectly, though players report a creeping suspicion that the game is watching them even when their internet is disconnected. Multiple users have reported finding the headset facing a different direction than they left it, a bug the developers insist is 'just your imagination' despite mounting video evidence.", "The disconnected virtual reality experience creates an unsettling sense of isolation that enhances certain gameplay elements. The technically impressive 'presence detection' that pauses when you remove the headset occasionally activates even when nobody is in the room, a feature the developers insist is 'working as intended.'", "The offline implementation allows for a fully immersive experience without connectivity concerns, though several users report receiving in-game messages specifically referencing their real-world activities while disconnected. The developers' explanation that this is 'predictive content generation' seems insufficient given the specificity of these references."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (platform === 'Smart Fridge' && feature === 'Multiplayer') { var options = ["The fridge-to-fridge multiplayer functionality works seamlessly, creating the world's first kitchen appliance social network. The matchmaking system that pairs players based on their food contents has created some unlikely friendships between people with similar condiment preferences and bizarre late-night eating habits.", "The networked refrigerator experience connects players through the shared language of food storage. The technical achievement of maintaining stable connections between appliances primarily designed to keep milk cold cannot be overstated. The 'food trading' feature that allows exchanging virtual representations of actual refrigerated items walks a fine line between innovative and concerning.", "The cross-appliance connectivity transforms kitchen fixtures into social hubs. The matchmaking algorithm that analyzes actual food contents to connect players with 'compatible culinary auras' is either the pinnacle of technical innovation or deeply invasive. Either way, the resulting kitchen-based communities are surprisingly wholesome."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else { // Platform-specific technical commentary - pick only one if (platform && platformComments[platform]) { var options = platformComments[platform]; review += options[Math.floor(Math.random() * options.length)] + " "; } // Feature-specific technical notes - pick only one if (feature && featureComments[feature]) { var options = featureComments[feature]; review += options[Math.floor(Math.random() * options.length)] + " "; } } // Add ONE coherence or bug comment if applicable, not both if (gameState.codeCoherence < 30 && Math.random() < 0.7) { var lowCoherenceVibeComments = ["The glitch aesthetic adds an unintentionally authentic layer of digital decay. The technical inconsistencies create a uniquely unstable atmosphere that feels like playing inside a slowly corrupting file.", "The frequent visual anomalies establish a distinctly unsettling vibe. The unpredictable technical behavior creates an atmosphere of digital uncertainty that feels strangely appropriate.", "The persistent rendering issues create a peculiarly dreamlike ambiance. The technical instability produces an accidentally surreal atmosphere where reality itself seems conditionally rendered.", "The numerous graphical inconsistencies deliver a uniquely janky charm. The technical hiccups create an atmosphere of computational struggle that feels oddly personified.", "The constant visual artifacts establish an accidentally avant-garde aesthetic. The technical limitations create an unintentionally experimental vibe that digital artists might intentionally try to replicate."]; review += lowCoherenceVibeComments[Math.floor(Math.random() * lowCoherenceVibeComments.length)] + " "; } else if (gameState.bugs > 7 && Math.random() < 0.7) { var highBugComments = ["Bugs have evolved into features so seamlessly that we're no longer sure which is which. The development roadmap now apparently consists of waiting to see which glitches players enjoy and retroactively claiming they were intentional.", "The game contains so many interconnected bugs that fixing one creates three more, leading to the development team embracing a 'digital ecosystem' approach where bugs are treated as protected species essential to the game's environment.", "Technical issues have been incorporated into the lore so thoroughly that the most dedicated players now deliberately trigger glitches as spiritual experiences. The subreddit features daily 'bug worship' threads.", "Glitches occur with such consistent frequency that speedrunners have developed a taxonomy to classify them, complete with Latin nomenclature. The community now speaks of bugs as naturalists would discuss rare butterflies, with similar reverence and cataloging effort.", "The error states have become so numerous and specific that they've developed into their own progression system. Players proudly share screenshots of particularly rare crash messages, with the 'Schrödinger Exception: Object exists and doesn't exist simultaneously' being the most coveted achievement."]; review += highBugComments[Math.floor(Math.random() * highBugComments.length)] + " "; } // Apply smart truncation review = smartTruncateReview(review, 500) + "\n\n"; return review; } function generateInnovationReview(score) { // Platform-specific innovation comments var platformInnovations = { 'VR': ["The virtual reality implementation pushes boundaries by completely ignoring conventional design wisdom about motion sickness, creating an experience that players describe as 'revelatory' once they stop feeling nauseated.", "Spatial gameplay mechanics use the three-dimensional environment in ways that make traditional flat-screen gaming seem positively prehistoric, though possibly with good evolutionary reasons.", "The immersive approach to VR creates unprecedented player embodiment, with several users reporting they tried to lean on virtual objects and fell in their actual living rooms."], 'Mobile': ["The mobile design innovates by treating touch input as an actual interface method rather than a poor substitute for buttons, though this appears to have been an accidental breakthrough.", "Phone-specific features use device capabilities in ways the hardware engineers definitely didn't anticipate and might not approve of if consulted.", "The portable experience creates a gameplay loop specifically designed for attention spans that have been systematically destroyed by the very platform it operates on."], 'Console': ["The console implementation leverages controller haptics in ways that border on inappropriate physical relationships with inanimate objects, creating unprecedented immersion.", "System-specific optimizations push the hardware to limits that warranty providers describe as 'technically covered but morally questionable.'", "The living room experience has been crafted for optimal couch play, though testing suggests most players end up unconsciously leaning so far forward they might as well be standing."], 'PC': ["The computer version innovates primarily through system requirements that appear to have been written by optimists, futurists, or possibly time travelers with access to unreleased hardware.", "Keyboard and mouse controls use so many simultaneous key combinations that pianist skills are heavily recommended in the very small print of the manual's appendix.", "Modding support opens the community creativity floodgates, ensuring the game will eventually contain content that keeps the legal department awake at night."], 'Web Browser': ["The browser-based approach pushes HTML5 capabilities to breaking points previously thought theoretical, revealing both the promise and concerning limitations of web technologies.", "Cross-browser compatibility has been achieved through coding practices that developers describe as 'technically working' and 'probably not causing long-term security vulnerabilities.'", "The no-download approach creates unprecedented accessibility, allowing players to experience crashes and performance issues without the inconvenience of installation."], 'Blockchain': ["The distributed ledger implementation creates unique ownership models that solve problems no one actually had while introducing several exciting new ones.", "Decentralized architecture ensures no single entity controls the experience, though mysterious collectives of crypto enthusiasts may effectively determine your gameplay fate.", "The token-based ecosystem innovates by making simple interactions both more complicated and more expensive, a breakthrough in user experience that wasn't actively sought."], 'Smart Fridge': ["The refrigerator interface creates a revolutionary fusion of gaming and food storage, allowing players to work up an appetite while simultaneously having snacks within arm's reach.", "Temperature-sensitive gameplay uses the appliance's cooling systems in ways that void warranties with remarkable efficiency and surprising entertainment value.", "The kitchen-based gaming experience breaks new ground by allowing family members to disapprove of both your gameplay choices and dietary habits simultaneously."], 'Smart Watch': ["The wrist-mounted experience innovates through extreme miniaturization that makes squinting a core gameplay mechanic, developing ocular muscles in unprecedented ways.", "Motion controls leverage accelerometers for gameplay that physical therapists describe as 'actively concerning for long-term wrist health.'", "The glanceable design creates a new category of micro-gaming sessions that fit perfectly between checking the time and ignoring notifications from actual human relationships."], 'Metaverse': ["The persistent virtual world pushes the boundaries of digital existence, creating spaces where players can experience the future of social interaction or the peak of technological gimmickry, depending on perspective.", "Cross-platform virtual presence allows unprecedented avatar expression, though most users still default to being implausibly attractive versions of themselves or bizarre anthropomorphic creatures.", "The interconnected experience creates digital spaces that exist perpetually, ensuring that embarrassing social interactions can now live forever instead of fading from memory."] }; // Visual style innovation comments var visualInnovations = { 'ASCII': ["The text-based visuals represent a bold return to computing's roots, proving definitively that contemporary graphics cards are essentially expensive space heaters for most gameplay needs.", "Character-based rendering creates a unique aesthetic that forces players' imaginations to do the heavy lifting, a form of outsourced processing that's remarkably efficient.", "The terminal style establishes a retro-future vibe that somehow manages to be simultaneously nostalgic and avant-garde, like vinyl records but for eyestrain."], 'Pixel Art': ["The deliberately limited resolution creates a visual language that proves more pixels don't necessarily make better art, just as more notes don't necessarily make better music.", "Carefully placed squares create an aesthetic that balances nostalgic familiarity with contemporary sensibilities, like comfort food prepared by a gourmet chef.", "The constrained palette forces creative solutions that turn technical limitations into stylistic triumphs, proving sometimes the box is actually where the best thinking happens."], 'Hand-drawn': ["The illustrated approach brings warmth and humanity to digital spaces, with imperfections that feel refreshingly authentic in an era of algorithmic perfection.", "Manually created visuals showcase the unique power of human artistic expression, though frame-by-frame animation suggests the possible involvement of interns with questionable labor contracts.", "The organic style creates a visual signature so distinctive it's effectively impossible to confuse with any other title, for better or occasionally much worse."], 'PowerPoint': ["The presentation software aesthetic innovates primarily by proving that games can technically be made with tools designed for quarterly sales reports, though whether they should be remains hotly debated.", "Slide-based design creates a unique pacing mechanism where transitions become gameplay events in themselves, with the 'star wipe' emerging as a fan favorite boss introduction.", "The corporate visual language creates an uncanny gaming experience where players report flashbacks to work meetings during particularly intense gameplay sequences."], 'Low-poly': ["The deliberately angular aesthetic creates a unique visual language that proves technical constraints can be artistic choices, though developers insist this was the plan all along.", "Faceted surfaces create a distinctive style that's simultaneously retro and timeless, like digital cubism for the gaming generation.", "The simplified geometry focuses attention on essentials rather than details, creating an experience where imagination fills gaps that polygons don't, sometimes with disturbing results."], 'Claymation': ["The stop-motion inspired visuals bring tangible physicality to digital space, with fingerprints and subtle imperfections that humanize the virtual experience.", "Frame-by-frame animation creates a distinctive rhythmic quality to movement that players describe as 'charmingly janky' or occasionally 'unsettlingly organic.'", "The handcrafted aesthetic establishes a unique visual identity in an industry dominated by polygons, though developers refuse to confirm rumors about actual clay consumption during crunch time."], 'Realistic': ["The photorealistic approach pushes technical boundaries to their limits, creating visuals so detailed that players report checking their graphics settings to confirm they're not actually watching videos.", "Lifelike rendering creates an immersive experience that occasionally crosses into uncanny valley territory, particularly during emotional scenes where characters look almost but not quite human enough.", "The high-fidelity visuals establish new standards for digital realism, though several players have reported existential crises after extended play sessions blurred their perception of actual reality."], 'Voxel': ["The cube-based construction system innovates by making every element of the world consistent with its building blocks, creating a universe that's simultaneously coherent and impossible.", "The blocky aesthetic creates a unique visual language where detail comes from arrangement rather than fidelity, proving creativity thrives within constraints.", "The volumetric approach bridges the gap between 2D and 3D design philosophies, creating spaces that feel simultaneously accessible and complex."], 'Demake': ["The deliberately downgraded visuals create a unique nostalgic experience that couldn't exist without first having the high-fidelity original to contrast against, making it both derivative and wholly original.", "Technical constraints are elevated to artistic choices, proving that limitation often breeds creativity more effectively than unlimited resources.", "The retrograde aesthetic creates a fascinating alternate history of gaming where different technological paths might have been taken, like digital archaeological experiments."] }; var review = "Innovation: " + score + "/10\n"; var concepts = gameState.conceptCards; // Check for particularly innovative combinations - pick only one if (concepts.platform === 'VR' && concepts.visual === 'ASCII') { var options = ["We've never seen anything like this, and that's either brilliant or terrifying. The combination of ASCII art in virtual reality creates an experience that defies conventional categorization. The 'pay-to-escape' mechanic where you can spend real money to skip particularly nauseating text segments is either predatory or genius. The developer's insistence that 'immersive typography is the future of gaming' might be visionary or completely delusional.", "The fusion of virtual reality and ASCII creates a sensory experience that neurologists are studying with great interest. Looking at walls of text in three-dimensional space has caused several playtesters to develop a new form of synesthesia where they 'taste' different letters. The developer's claim that this is 'expanding human consciousness through digital means' feels like a convenient reframing of what is essentially torture by typography.", "This bizarre combination of VR immersion and textual abstraction creates gaming's first genuine avant-garde movement. Players report experiencing the literal feeling of 'being inside language' - an effect that is equal parts profound and nauseating. The community that has formed around this experience communicates exclusively in parentheses and semicolons, claiming that traditional language 'no longer suffices after what they've seen.'"]; review += options[Math.floor(Math.random() * options.length)]; } else if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { var options = ["Turning household appliances into portals of terror is genuinely innovative, if psychologically scarring. Late-night snacks will never be the same. The mechanic where in-game events affect your actual food temperature creates unprecedented real-world stakes. Several players reported throwing out perfectly good food because it 'gave them a bad feeling.' Psychological horror has never been so domestic.", "The refrigerator-based horror experience creates a uniquely invasive fear response by targeting the primal comfort of food access. The innovative 'condition-based events' that trigger specifically when you're hungry late at night demonstrates a sadistic understanding of human psychology. Multiple users now report checking behind their yogurt containers for monsters before breakfast.", "This unholy marriage of kitchen appliance and psychological terror has fundamentally changed the relationship between homeowners and their refrigerators. The revolutionary 'biometric fear response' system that tracks your actual heart rate through the door handle to determine when to trigger jump scares is either technical wizardry or a serious privacy concern. Either way, it's the first game that literally feeds on your fear."]; review += options[Math.floor(Math.random() * options.length)]; } else if (concepts.platform === 'Blockchain' && concepts.genre === 'Dating Sim') { var options = ["Combining blockchain technology with romance is certainly unique. Each rejection is permanently recorded on the blockchain, which is either brilliant or cruel. The 'proof-of-affection' system where players must solve increasingly complex mathematical problems to unlock romantic dialogue has created the world's first dating sim with actual barriers to entry. Several relationships have developed purely because neither party wanted to waste their computational investment.", "This bizarre fusion of cryptocurrency architecture and virtual romance has created the first dating simulator where emotional connections have actual monetary value. The 'smart contract relationship' system that requires financial penalties for breaking up has led to the fascinating social phenomenon of 'investment partners' - players who stay together not out of affection but because they've invested too much to back out. Digital romance has never been so financially ruinous.", "The blockchain dating experience introduces the innovative concept of 'romance mining,' where player interactions generate tokens that fluctuate in value based on relationship quality. The mechanic where other players can invest in your relationship, essentially becoming stakeholders in your love life, creates unprecedented social dynamics. Several couples now make decisions based on shareholder votes rather than personal preference."]; review += options[Math.floor(Math.random() * options.length)]; } else { // Platform innovations - pick only one if available if (concepts.platform && platformInnovations[concepts.platform]) { var options = platformInnovations[concepts.platform]; review += options[Math.floor(Math.random() * options.length)] + " "; } // Visual innovations - pick only one if available if (concepts.visual && visualInnovations[concepts.visual]) { var options = visualInnovations[concepts.visual]; review += options[Math.floor(Math.random() * options.length)] + " "; } } // Innovation bonus for high vibe points - pick only one if applicable if (gameState.vibePoints > 80 && Math.random() < 0.7) { var highVibeInnovations = ["The sheer audacity of the concept has created its own genre. Industry analysts are already scrambling to coin terminology for the wave of imitators that will inevitably follow.", "The development team's commitment to their bizarre vision has resulted in something so unique that it defies conventional game theory. Several game design textbooks are being rewritten to include sections called 'But Sometimes This Works Too.'", "The game exists in a category entirely its own, leaving critics struggling to find comparison points. The resulting semantic crisis has led to the establishment of new reviewing guidelines specifically addressing concept originality.", "The fundamental innovation on display has created something so unique that multiple game design programs are adding it to their curriculum as a case study in conceptual bravery. Future developers will likely reference this title when defending their own unusual concepts.", "The brilliant madness behind this creation demonstrates what happens when developers completely ignore market research and conventional wisdom. The result is something so distinct that it has created its own classification problem for digital storefronts, none of which have appropriate category tags."]; review += highVibeInnovations[Math.floor(Math.random() * highVibeInnovations.length)] + " "; } // Fallback innovation comments if review is too short if (review.length < 200) { var fallbackInnovations = { high: ["This concept brilliantly combines elements that shouldn't work together into something unexpectedly cohesive. The developers have created a new gameplay paradigm that defies conventional categorization, suggesting either remarkable foresight or a happy accident born from creative chaos.", "The audacious fusion of seemingly incompatible elements creates something genuinely fresh. While individual components are familiar, their implementation here feels revolutionary, as if someone deliberately ignored 'best practices' and stumbled onto something better.", "Innovation doesn't always mean inventing new mechanics, but rather combining existing ones in ways nobody thought to try. This title exemplifies that philosophy, bringing together disparate elements into something greater than the sum of its parts."], medium: ["While not revolutionary, the game offers several novel twists on familiar formulas. The creative combination of established mechanics with unexpected elements provides just enough innovation to distinguish it from similar titles.", "The concept shows admirable creativity in working within established frameworks while adding enough unique elements to feel fresh. It won't redefine genres, but it successfully carves out its own identity in a crowded market.", "There's innovation happening here, though more evolutionary than revolutionary. The development team has taken existing ideas and reconfigured them in ways that feel sufficiently novel without reinventing the wheel."], low: ["The innovation on display feels more accidental than intentional, as if the developers were aiming for something conventional but missed in ways that occasionally produce interesting results. These happy accidents don't quite compensate for the overall derivative nature.", "While attempting something different, the game struggles to transcend the sum of its borrowed parts. Occasional flashes of creativity peek through the familiar framework, but they're too sporadic to establish a truly innovative identity.", "The concept seems caught between innovation and imitation, resulting in an experience that never fully commits to either path. The occasional unique element gets lost amid overly familiar mechanics and systems."] }; // Select appropriate tier based on score var tier = "medium"; if (score >= 8) { tier = "high"; } else if (score <= 3) { tier = "low"; } // Add a fallback comment var options = fallbackInnovations[tier]; review += options[Math.floor(Math.random() * options.length)] + " "; } // Apply smart truncation review = smartTruncateReview(review, 500) + "\n\n"; return review; } function generateVibeReview(score) { // Platform-specific vibes var platformVibes = { 'VR': ["The virtual reality implementation creates a sense of presence that's both impressive and occasionally nauseating, like being physically transported into a world that doesn't quite understand how human bodies work.", "The immersive headset experience generates a unique feeling of embodiment that makes other games feel like watching through a window rather than being present in the space.", "The spatial presence achieved through VR creates an uncanny sense of physicality, though the occasional tracking glitches remind you that your digital body is just an approximation."], 'Mobile': ["The mobile experience creates an intimate connection through touch controls, making the game feel like it's literally in your hands rather than on a distant screen.", "The portable nature of the platform enables a uniquely ubiquitous presence, turning mundane moments like commutes and waiting rooms into opportunities for digital escape.", "The touch-based interface creates a direct manipulation that feels more personal than traditional controls, though occasionally your fingers obstruct the very world you're trying to interact with."], 'Console': ["The living room gaming experience creates a comfortable familiarity that feels like the digital equivalent of comfort food, served with professional polish.", "The controller-based interface strikes that perfect balance between precision and relaxation, allowing players to sink into their couches while maintaining complete control.", "The console environment creates a dedicated gaming bubble that feels distinctly separate from work and other responsibilities, an increasingly rare quality in our multi-purpose devices."], 'PC': ["The computer gaming experience creates a uniquely customizable vibe, with users tweaking settings until the game looks and performs exactly to their specifications, or until they've spent more time adjusting than playing.", "The desktop environment combines precision control with an office-chair intimacy that feels like having a personal relationship with your hardware as much as the game itself.", "The keyboard and mouse interface creates a tactile connection that feels simultaneously professional and playful, like wearing a business suit to an amusement park."], 'Web Browser': ["The browser-based environment creates a uniquely accessible atmosphere that feels weightless and ephemeral, a game that exists everywhere and nowhere simultaneously.", "The tab-based context creates a strangely compartmentalized experience that feels like it's always one click away from being replaced by email or social media, creating a constant subtle tension.", "The URL-accessed game carries a distinctly democratic vibe, requiring no installation or commitment beyond typing an address, though this casual relationship works both ways."], 'Blockchain': ["The distributed ledger foundation creates a strange value-infused atmosphere where every action feels simultaneously meaningless and potentially worth real money.", "The crypto-backed experience generates a unique tension between play and investment, where enjoyment is always colored by awareness of speculative value fluctuations.", "The tokenized environment creates an unusual sense of digital ownership that feels both empowering and absurd, like having a notarized deed to a cloud or sunrise."], 'Smart Fridge': ["The kitchen appliance platform creates a bizarrely domestic atmosphere that transforms food storage into entertainment, blurring the line between sustenance and distraction.", "The refrigerator interface establishes a uniquely situated experience that feels anchored to a specific household location, creating a strangely territorial relationship with the game.", "The cold storage gaming creates an atmosphere that literally changes the temperature of the room, with play sessions accompanied by wafts of chilled air and the subtle scent of leftovers."], 'Smart Watch': ["The wrist-mounted experience creates an intimate, almost secretive vibe that feels like carrying a tiny world with you everywhere, accessible with the subtlest glance.", "The watch interface establishes a uniquely constrained atmosphere where limitations become defining features rather than drawbacks, like haiku in interactive form.", "The glanceable gaming creates a fractured experience that exists in stolen moments throughout the day, creating a peculiarly integrated relationship between the game and daily life."], 'Metaverse': ["The persistent virtual world creates an uncanny atmosphere where digital space takes on properties of real estate, complete with territorial feelings and the strange concept of 'location' in infinitely replicable data.", "The shared online environment establishes a uniquely social vibe where the presence of others becomes part of the aesthetic, for better or worse.", "The avatar-mediated experience creates a layer of identity play that colors every interaction, where everyone is simultaneously themselves and a performance of themselves."] }; // Visual style vibes var visualVibes = { 'ASCII': ["The text-based visuals create a strangely literary atmosphere that engages the imagination in ways high-resolution graphics can't, like reading a book that occasionally reads back.", "The character-based representation establishes a uniquely abstracted vibe that feels simultaneously primitive and sophisticated, like cave paintings created by mathematicians.", "The monospace aesthetic creates a distinctly digital atmosphere that celebrates rather than hides its technological nature, unapologetically computational in its presentation."], 'Pixel Art': ["The deliberately limited resolution creates a nostalgic yet timeless vibe that feels like memories made tangible, blending retro aesthetics with contemporary sensibilities.", "The blocky visual language establishes a uniquely constrained beauty that finds expression through limitations rather than despite them.", "The pixel-perfect precision creates an atmosphere of handcrafted care, where each dot on the screen feels deliberately placed rather than procedurally generated."], 'Hand-drawn': ["The manual illustration style creates a warmly organic atmosphere that feels touched by human hands rather than rendered by algorithms.", "The drawn aesthetic establishes a uniquely expressive vibe where imperfections become signature elements rather than technical failings.", "The sketched visual language creates an atmosphere of artistic interpretation rather than simulation, representing reality through personal perspective rather than photographic accuracy."], 'PowerPoint': ["The presentation software aesthetic creates a bizarrely corporate atmosphere that transforms work tools into play spaces, like holding a rave in an office break room.", "The slide-based visual language establishes a uniquely fragmented vibe that feels like a business presentation having an existential crisis.", "The template-driven design creates an atmosphere of uncanny familiarity, taking the aesthetics of quarterly reports and team-building exercises into realms they were never meant to explore."], 'Low-poly': ["The angular visual style creates a distinctly geometric atmosphere that feels simultaneously retro and timeless, like digital origami.", "The faceted aesthetic establishes a uniquely abstracted vibe that suggests rather than depicts, allowing player imagination to smooth the edges.", "The reduced polygon count creates an atmosphere of elegant simplification, finding beauty in the essence of forms rather than their details."], 'Claymation': ["The stop-motion inspired visuals create a tactile atmosphere that feels physically crafted despite its digital nature, like holding something that doesn't actually exist.", "The malleable aesthetic establishes a uniquely organic vibe where imperfections become charming evidence of human creation rather than technical limitations.", "The handcrafted visual language creates an atmosphere of artisanal care, with fingerprints both literal and metaphorical visible throughout the experience."], 'Realistic': ["The photorealistic approach creates an atmosphere of technical ambition that constantly pushes against the boundaries of the uncanny valley, occasionally stumbling in fascinating ways.", "The lifelike visual language establishes a uniquely immersive vibe that aims to dissolve the barrier between player and game through sheer fidelity.", "The high-definition aesthetic creates an atmosphere of sensory detail that can be either breathtaking or overwhelming, depending on the moment and implementation."], 'Voxel': ["The cube-based construction creates a playfully systematic atmosphere that feels like a world made of digital LEGO, inviting interaction through its very form.", "The blocky aesthetic establishes a uniquely tactile vibe despite its digital nature, suggesting a world that could be physically built and manipulated.", "The volumetric visual language creates an atmosphere of consistent logic, where everything from mountains to monsters adheres to the same cubic principles."], 'Demake': ["The deliberately downgraded visuals create a fascinating alternate history vibe, like a glimpse into a timeline where different technological choices were made.", "The retroactively constrained aesthetic establishes a uniquely nostalgic atmosphere that feels both familiar and impossible, recognizable yet never actually existed.", "The artificially limited visual language creates an atmosphere of technological interpretation, translating modern ideas through historical limitations."] }; var review = "Vibe Factor: ".concat(score, "/10\n"); var concepts = gameState.conceptCards; // Special combination vibes - pick only one if (concepts.visual === 'ASCII' && concepts.platform === 'VR') { var options = ["The game oozes style, even if that style causes immediate discomfort. The pulsing green terminal text, the suspenseful beeping sounds, and the whispered ASCII art jumpscares all contribute to a cohesive, if bewildering, aesthetic.", "The fusion of retro terminal visuals with cutting-edge VR creates an atmosphere that's equal parts nostalgic and nauseating. The decision to render everything in phosphorescent green text creates the unique experience of feeling like you're trapped inside a 1980s hacker's fever dream.", "The deliberately jarring combination of primitive text art and immersive virtual reality creates a uniquely unsettling atmosphere. The contrast between the technological simplicity of ASCII and the sophistication of VR produces a digital uncanny valley effect that several art critics have described as 'intentionally hostile to human perception.'"]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { var options = ["The fusion of domestic appliance and psychological horror creates an unnervingly memorable atmosphere. The gentle hum of the fridge has never been more sinister.", "The juxtaposition of mundane kitchen appliance with terror elements creates a uniquely domestic dread. The subtle integration of cooling system sounds into the horror soundtrack transforms everyday refrigerator noises into anxiety triggers.", "The kitchen-based horror experience leverages the inherently liminal nature of late-night refrigerator visits to create unprecedented atmospheric tension. The soft interior light that flickers slightly longer than it should with each door opening has transformed a common household interaction into a moment of existential dread."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (concepts.platform === 'Blockchain' && concepts.visual === 'Claymation') { var options = ["The unlikely pairing of tactile claymation with intangible blockchain creates a fascinating aesthetic dissonance. The deliberately handcrafted visuals juxtaposed against the cold precision of distributed ledger technology produces a unique artistic tension.", "The contrast between the warmly organic claymation style and the sterile digital nature of blockchain technology creates a distinctly unsettling vibe. Characters feel simultaneously handcrafted and procedurally generated, existing in an artistic limbo that defies categorization.", "The handmade claymation aesthetic combined with blockchain's digital permanence creates a uniquely contradictory atmosphere. The visible fingerprints in character models tokenized as immutable digital assets creates an art form that exists at the intersection of artisanal craftsmanship and technological abstraction."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else { // Platform-specific vibes - pick only one if (concepts.platform && platformVibes[concepts.platform]) { var options = platformVibes[concepts.platform]; review += options[Math.floor(Math.random() * options.length)] + " "; } // Visual style vibes - pick only one if (concepts.visual && visualVibes[concepts.visual]) { var options = visualVibes[concepts.visual]; review += options[Math.floor(Math.random() * options.length)] + " "; } } // Vibe points influence - pick only one if applicable if (gameState.vibePoints > 90 && Math.random() < 0.7) { var highVibeComments = ["The game radiates an infectious energy that's impossible to ignore. The carefully crafted atmosphere creates a uniquely cohesive experience that remains consistent across every aspect of design.", "The overwhelming sense of style creates an instantly recognizable aesthetic fingerprint. Every element feels like part of a carefully orchestrated whole, creating a uniquely signature experience.", "The perfectly calibrated atmosphere achieves that rare quality of total cohesion. The game knows exactly what it wants to be and commits to that vision with unwavering confidence.", "The masterfully crafted ambiance establishes an immediate and distinct personality. This is a game that understands exactly what mood it wants to create and pursues that goal with remarkable consistency.", "The exceptional vibrance pervades every aspect of the experience. Rarely have we seen such a perfect alignment of visual design, sound, and gameplay feel creating such a distinctive sensory impression."]; review += highVibeComments[Math.floor(Math.random() * highVibeComments.length)] + " "; } else if (gameState.vibePoints < 50 && Math.random() < 0.7) { var lowVibeComments = ["The game's atmosphere is as coherent as a fever dream, which might be intentional. The wildly inconsistent tone creates a uniquely disorienting experience that defies categorization.", "The conflicting stylistic choices create a distinctly fractured ambiance. Different elements feel like they were designed in isolation from each other, creating an unintentionally surreal collage effect.", "The disjointed aesthetic elements establish a peculiarly inconsistent vibe. The game seems to be having an identity crisis in real-time, oscillating between multiple competing styles.", "The contradictory design language delivers a uniquely confused atmosphere. The game can't seem to decide what mood it's trying to establish, creating an accidentally avant-garde effect.", "The incoherent stylistic approach creates an atmosphere of digital schizophrenia. Playing feels like rapidly channel-surfing between completely unrelated experiences stitched together by tenuous gameplay mechanics."]; review += lowVibeComments[Math.floor(Math.random() * lowVibeComments.length)] + " "; } // Add coherence effects if applicable if (gameState.codeCoherence < 40 && Math.random() < 0.7) { var lowCoherenceVibeComments = ["The glitch aesthetic adds an unintentionally authentic layer of digital decay. The technical inconsistencies create a uniquely unstable atmosphere that feels like playing inside a slowly corrupting file.", "The frequent visual anomalies establish a distinctly unsettling vibe. The unpredictable technical behavior creates an atmosphere of digital uncertainty that feels strangely appropriate.", "The persistent rendering issues create a peculiarly dreamlike ambiance. The technical instability produces an accidentally surreal atmosphere where reality itself seems conditionally rendered.", "The numerous graphical inconsistencies deliver a uniquely janky charm. The technical hiccups create an atmosphere of computational struggle that feels oddly personified.", "The constant visual artifacts establish an accidentally avant-garde aesthetic. The technical limitations create an unintentionally experimental vibe that digital artists might intentionally try to replicate."]; review += lowCoherenceVibeComments[Math.floor(Math.random() * lowCoherenceVibeComments.length)] + " "; } // Fallback vibes if review is too short if (review.length < 200) { var fallbackVibes = { high: ["The game radiates a distinctly confident aura, maintaining its unique aesthetic across every aspect of design. From interface to gameplay mechanics, there's a cohesive vision that creates an immediately recognizable identity. Few titles achieve this level of stylistic consistency.", "The carefully crafted atmosphere demonstrates masterful understanding of mood and tone. Every element feels deliberately chosen to contribute to the overall sensory experience, creating an immersive world with its own internal logic and personality.", "There's a magnetic quality to the game's aesthetic that's difficult to quantify yet impossible to ignore. The developers have created something with genuine personality that leaves a lasting impression beyond the mechanical components."], medium: ["The game establishes a reasonably cohesive atmosphere, though occasional inconsistencies prevent it from achieving a truly distinctive identity. There's enough personality to make it memorable, even if the vibe isn't consistently maintained across all elements.", "While not revolutionary in its presentation, the game successfully cultivates a pleasant ambiance that enhances the core experience. The aesthetic doesn't break new ground, but it effectively supports the gameplay with appropriate mood and style.", "The vibe strikes a comfortable balance between familiar and fresh, creating an environment that feels welcoming yet still has its own character. It won't redefine aesthetic standards, but it demonstrates solid craftsmanship in establishing mood."], low: ["The game struggles to establish a consistent atmosphere, resulting in a fragmented experience where different elements feel stylistically disconnected. There are occasional moments of cohesion, but they're undermined by conflicting design choices.", "The inconsistent tone creates a disjointed vibe that never quite coalesces into something distinctive. Individual elements might work in isolation, but together they create an experience that lacks a clear aesthetic identity.", "There's a palpable sense that the game's atmosphere was an afterthought rather than a central consideration, with various components pulling in different stylistic directions. The resulting vibe feels muddled, occasionally working despite itself rather than by design."] }; // Select appropriate tier based on score var tier = "medium"; if (score >= 8) { tier = "high"; } else if (score <= 3) { tier = "low"; } // Add a fallback comment var options = fallbackVibes[tier]; review += options[Math.floor(Math.random() * options.length)] + " "; } // Apply smart truncation review = smartTruncateReview(review, 500) + "\n\n"; return review; } // Create a new function to generate the features section function generateFeaturesSection() { var featuresSection = ""; if (gameState.discoveredFeatures.length > 0) { featuresSection = "Notable Features\n"; gameState.discoveredFeatures.forEach(function (featureName, index) { featuresSection += "- " + featureName + ": " + gameState.featureStories[index] + "\n"; }); featuresSection += "\n"; } return featuresSection; } function generateAchievementSection(score) { // Only add achievements section for high scores or interesting combinations if (score < 65 && gameState.conceptCards.platform !== 'Smart Fridge' && !(gameState.conceptCards.visual === 'ASCII' && gameState.conceptCards.platform === 'VR')) { return ""; // Skip for lower scores with no interesting combinations } var achievements = []; var concepts = gameState.conceptCards; // Add title var section = "Notable Achievements\n"; // Check for specific combinations if (concepts.platform === 'VR' && concepts.visual === 'ASCII') { achievements.push("**Typography Torture Award**: First game to cause motion sickness using only the letter 'O'"); achievements.push("**Ophthalmologist's Best Friend**: Created unprecedented demand for eye therapy"); } if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { achievements.push("**Midnight Snack Deterrent**: Reduced late-night eating by 87% among players"); achievements.push("**Domestic Terror Innovation**: First game to make opening your refrigerator a jump scare"); } if (concepts.platform === 'Blockchain' && concepts.genre === 'Dating Sim') { achievements.push("**Carbon Footprint Romeo**: Most environmentally damaging dating experience"); achievements.push("**Proof-of-Love Protocol**: Pioneered romance verification technology"); } if (concepts.visual === 'PowerPoint' && (concepts.genre === 'Battle Royale' || concepts.genre === 'Shooter')) { achievements.push("**Corporate Combat Certificate**: Transformed boring presentations into lethal entertainment"); achievements.push("**Star Wipe of Death**: Weaponized slide transitions successfully"); } // Specific feature achievements if (concepts.feature === 'Microtransactions' && score > 75) { achievements.push("**Wallet Vampire Award**: Most creative excuses for charging players"); achievements.push("**Monetization Innovation**: Discovered 17 new ways to extract money from willing players"); } if (concepts.feature === 'AI Companions' && gameState.codeCoherence < 60) { achievements.push("**Turing Test Failure**: AI companions indistinguishable from bugs"); achievements.push("**Digital Stockholm Syndrome**: Players forming attachments to clearly broken AI"); } if (concepts.feature === 'Cloud Save' && gameState.bugs > 5) { achievements.push("**Digital Afterlife**: Save files that continue playing without player input"); achievements.push("**Cloud Migration**: Game states that mysteriously appear in other players' games"); } // Bug-related achievements for games with high bug counts but good scores if (gameState.bugs > 6 && score > 70) { achievements.push("**It's Not a Bug Award**: Most successful rebranding of errors as features"); achievements.push("**Chaos Engineering Certificate**: Turning technical debt into player engagement"); } // High coherence achievements if (gameState.codeCoherence > 80 && score > 80) { achievements.push("**Technical Excellence**: Surprisingly functional given the concept complexity"); achievements.push("**Stability Wizard**: Maintained coherence despite logical impossibilities"); } // High vibe achievements if (gameState.vibePoints > 85) { achievements.push("**Vibe Architects**: Created inexplicable but undeniable digital atmosphere"); achievements.push("**Cult Following Creator**: Generated passionate community around bizarre concept"); } // If we have achievements, format them into the section if (achievements.length > 0) { // Take up to 4 achievements maximum var selectedAchievements = achievements.slice(0, 4); section += selectedAchievements.map(function (achievement) { return "- ".concat(achievement); }).join("\n"); section += "\n\n"; return section; } else { return ""; // Return empty string if no achievements } } function generateFinalThoughts(score, ratings) { var concepts = gameState.conceptCards; var review = "Final Thoughts\n"; // Special combination conclusions - expanded with more options if (concepts.platform === 'VR' && concepts.visual === 'ASCII') { var options = ["\"" + concepts.platform + " " + concepts.visual + " " + concepts.genre + "\" is the game nobody asked for but somehow can't stop talking about. It's created a niche community of players who now communicate exclusively in ASCII art and spend concerning amounts on virtual terminal upgrades.", "This unholy marriage of cutting-edge VR technology and 1970s terminal aesthetics should not work on any conceivable level, and yet it has cultivated a dedicated following who claim to have 'seen beyond the veil of conventional graphics.' Multiple ophthalmologists have issued statements specifically warning against extended play sessions.", "The baffling combination of immersive headset technology and primitive text characters has created gaming's first legitimate art-house cult experience. Players either quit within ten minutes or become evangelists who insist that 'you haven't really experienced digital consciousness until you've been inside the green text.'"]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { var options = ["This revolutionary fusion of kitchen appliances and psychological horror has forever changed how people approach midnight snacks. The game has spawned a community of food-based horror enthusiasts who now exclusively store their groceries in fear.", "The unexpected pairing of domestic refrigeration and existential dread has created a genuinely new gaming subgenre that makes routine kitchen activities into potential horror scenarios. Multiple players report installing additional lighting in their kitchens and developing new grocery organization systems specifically to minimize gameplay flashbacks.", "The brilliant insanity of turning a food storage device into a portal of terror demonstrates what happens when developers completely ignore convention. The resulting experience has transformed mundane midnight snacking into psychological endurance tests for players worldwide."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (concepts.platform === 'Blockchain' && concepts.genre === 'Dating Sim') { var options = ["Dating has never been more expensive or environmentally devastating. Each flirtation consumes enough electricity to power a small nation, yet players can't stop swiping right on decentralized romances. Relationship status: It's complicated (and on the blockchain).", "The baffling fusion of cryptocurrency infrastructure and virtual romance has created the world's first dating simulation where rejection carries actual financial consequences. Players report developing genuine emotional connections to digital characters, though it's unclear if this stems from authentic affection or the sunk cost fallacy after spending thousands on transaction fees.", "This conceptual contradiction between digital intimacy and distributed ledger technology has created possibly the most expensive way to experience artificial rejection ever devised. Yet a dedicated community insists the permanent recording of every romantic interaction adds unprecedented stakes to virtual relationships."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (concepts.platform === 'Smart Watch' && concepts.genre === 'Open World') { var options = ["The developers have somehow crammed an entire open world onto a 1.5-inch screen, resulting in what ophthalmologists now call 'Smart Watch Squint Syndrome.' Players report the strange sensation of their wrist containing infinite possibilities while their eyes beg for mercy.", "This audacious attempt to fit limitless exploration onto a postage stamp-sized display represents either remarkable technical achievement or concerning disregard for human visual capabilities. A dedicated community of players has emerged who claim to have developed 'micro-vision' allowing them to distinguish details invisible to normal humans.", "The conceptual dissonance between limitless virtual space and severely constrained physical display creates a gaming experience that is equal parts impressive and medically inadvisable. Players report developing unprecedented peripheral vision while also requiring increasingly powerful reading glasses."]; review += options[Math.floor(Math.random() * options.length)] + " "; } else if (concepts.platform === 'Metaverse' && concepts.mechanic === 'Gacha') { var options = ["This unholy marriage of speculative real estate and gambling mechanics has created a digital economy more volatile than cryptocurrency. Players are both devastated by their terrible luck and convinced their virtual plot adjacent to a virtual dumpster will be worth millions someday.", "The combination of persistent virtual world and randomized collection mechanics has created an unprecedented digital casino where the house is literally everywhere. Players have formed support groups to cope with both spending regret and the peculiar phenomenon of 'location envy' when friends pull rare property locations.", "Fusing virtual world permanence with chance-based acquisition has birthed a bizarre economic landscape where digital scarcity is artificially maintained through algorithms designed to maximize frustration. Yet thousands of players continue investing real money in the virtual equivalent of a slot machine connected to a real estate office."]; review += options[Math.floor(Math.random() * options.length)] + " "; } // Score-based conclusions - significantly expanded if (score >= 90) { var brilliantResponses = ["While conventional wisdom would suggest this combination should fail catastrophically, the sheer audacity of the concept has carved out a cult following. Expect academic papers analyzing this game's cultural impact for years to come.", "Against all logic and several laws of game design, this bizarre experiment has become a breakthrough hit. It's as if someone threw random ingredients into a pot and accidentally created a gourmet dish that food critics can't stop raving about.", "This game shouldn't work. Multiple designers reviewed the concept document and resigned on the spot. Yet here we are, witnessing what can only be described as accidental genius or the collective madness of the gaming public.", "The development team has apparently discovered a secret formula where maximum absurdity equals maximum enjoyment. They should immediately lock this recipe in a vault and protect it from competitors.", "By all reasonable metrics, this conceptual contradiction should produce an unplayable disaster. Instead, it's become a watershed moment that future developers will reference when defending their own seemingly ridiculous ideas.", "This remarkable achievement in conceptual dissonance somehow transcends its contradictory elements to create something genuinely revolutionary. The development team has either stumbled upon or deliberately crafted a new design philosophy that defies conventional categorization.", "The sheer implausibility of this game's success suggests we may need to reconsider fundamental assumptions about player preferences and design coherence. What initially appeared to be a catastrophic combination of incompatible elements has become a template that will undoubtedly spawn countless imitators.", "In the pantheon of unlikely successes, this game deserves a special pedestal. It has not only survived its conceptual contradictions but thrived because of them, creating a new benchmark for creative risk-taking in an industry often accused of playing it safe."]; review += brilliantResponses[Math.floor(Math.random() * brilliantResponses.length)]; } else if (score >= 70) { var goodResponses = ["Despite its quirks (or perhaps because of them), the game has found its audience and built a dedicated community. Like a pizza topped with unusual ingredients that somehow works, it's not for everyone but those who love it are evangelical.", "This game is the digital equivalent of a B-movie that's aware of its own ridiculousness, resulting in something genuinely entertaining. The developers clearly embraced the chaos rather than fighting it.", "Much like a mullet haircut, this game is business in front, party in back, and somehow making an unexpected comeback despite everyone's better judgment. The Discord server is already filled with inexplicable in-jokes.", "Though clearly made with more enthusiasm than budget, the game has charmed players with its unique personality. It's like adopting a three-legged cat – technically flawed but impossible not to love.", "The development team clearly understood that sometimes coherence is less important than conviction. By fully committing to their peculiar vision, they've created something genuinely distinct that stands out in an increasingly homogeneous market.", "This title occupies that special category of 'successfully weird' – games that shouldn't work on paper but somehow find their audience through sheer personality. Its flaws don't diminish the experience but rather become part of its distinct character.", "Like a dish made with seemingly incompatible ingredients by a chef who somehow knows better than you do, this game takes elements that shouldn't work together and creates something surprisingly satisfying. It won't appeal to everyone, but those who acquire the taste will become vocal advocates.", "The peculiar charm of this creation stems from its uncompromising vision rather than technical perfection. In an industry increasingly dominated by focus-tested designs, there's something refreshing about a game that knows exactly what it wants to be, even if that thing is objectively bizarre."]; review += goodResponses[Math.floor(Math.random() * goodResponses.length)]; } else if (score >= 50) { var averageResponses = ["Though rough around the edges, there's something oddly compelling about this peculiar creation. It's like a homemade sweater – lumpy and misshapen, but made with such conviction you can't help but wear it occasionally.", "This game will likely develop a small but intensely devoted following who will insist everyone else 'just doesn't get it.' They might be right, as we're still not sure if we get it either.", "Much like acquiring a taste for strong cheese, players who stick with this game past the initial confusion may find themselves inexplicably drawn to its peculiar charms. Or possibly developing Stockholm syndrome.", "The digital equivalent of a movie that's better watched at 2 AM with friends than subjected to serious critique. Some streamers will build entire careers around its bewildering design choices.", "This curious creation exists in the liminal space between 'ambitious failure' and 'accidental innovation.' Players willing to endure its awkward implementation might discover genuine moments of unexpected brilliance buried beneath the obvious flaws.", "Like an experimental jazz composition, this game isn't concerned with conventional appeal. It's doing its own thing with such confidence that you occasionally wonder if you're missing something profound, or if there's simply nothing coherent to grasp.", "There's something strangely admirable about how thoroughly this game commits to its questionable concepts. The resulting experience won't reach mainstream appeal, but might find a dedicated niche among players who appreciate its unfiltered creative vision.", "This title belongs to the fascinating category of 'interesting failures' – games that don't quite work but fail in such unique ways that they become more memorable than many technically superior but creatively safe productions."]; review += averageResponses[Math.floor(Math.random() * averageResponses.length)]; } else { var poorResponses = ["While not quite hitting its mark, the game's ambitious vision can't be faulted for lack of creativity. Like watching someone attempt a quadruple backflip and land face-first – you have to admire the ambition while wincing at the execution.", "This is the game equivalent of a science experiment that explodes spectacularly. Not particularly successful, but certainly memorable and likely to inspire safer, more controlled iterations in the future.", "The developers have created something so uniquely perplexing that it might achieve immortality through memes alone. Future game historians will study this as either a cautionary tale or evidence of untreated carbon monoxide leaks in the development studio.", "In the grand tradition of 'so bad it's good' media, this game may find a second life as a curiosity piece. Expect YouTube compilations titled 'You Won't Believe This Actually Got Released' featuring extensive footage.", "This bewildering creation demonstrates what happens when conceptual ambition significantly outpaces technical execution. The resulting experience feels like watching someone attempt to translate a fever dream directly into playable form without the intermediate step of coherent design.", "Like an architectural structure designed by an algorithm fed contradictory instructions, this game collapses under the weight of its incompatible elements. Yet there's something fascinating about witnessing such a spectacular structural failure.", "This title achieves the rare distinction of being both forgettable and impossible to forget – forgettable in its failure to create engaging gameplay, but impossible to forget due to its baffling design decisions. It will likely become a benchmark for creative hubris.", "The most positive interpretation of this release is as a valuable learning experience for everyone involved. While players may not enjoy the game itself, developers throughout the industry will benefit from analyzing exactly how these interesting ideas went so dramatically wrong."]; review += poorResponses[Math.floor(Math.random() * poorResponses.length)]; } // Add microtransaction commentary if present - expanded with more options if (concepts.feature === 'Microtransactions') { var mtxComments = ["\n\nP.S. The microtransaction that lets players temporarily restore sanity for $4.99 is both cruel and brilliant.", "\n\nP.S. We question the ethical implications of the 'Pay to Win Friends' feature that charges $2.99 to make NPCs actually like you.", "\n\nP.S. The 'surprise mechanics' that periodically charge your credit card with no explanation are pushing legal boundaries, even for the games industry.", "\n\nP.S. Making players pay real money to adjust the UI so it's actually usable feels legally actionable, yet we can't help but admire the audacity.", "\n\nP.S. The monetization strategy that restricts basic quality-of-life features behind paywalls demonstrates either remarkable business acumen or concerning contempt for players.", "\n\nP.S. The 'Desperation Discount' system that reduces prices after detecting repeated menu visits but before actual purchases shows disturbing insight into consumer psychology.", "\n\nP.S. The feature that transforms real-world advertisements into in-game currency based on proven watching time feels like it was designed by behavioral scientists with questionable ethics.", "\n\nP.S. The 'dynamic pricing' system that charges different amounts based on player spending patterns and playtime should probably be investigated by consumer protection agencies."]; review += mtxComments[Math.floor(Math.random() * mtxComments.length)]; } return review + "\n\n"; } function generateRedditReviews() { var _gameState$conceptCar = gameState.conceptCards, platform = _gameState$conceptCar.platform, visual = _gameState$conceptCar.visual, genre = _gameState$conceptCar.genre, mechanic = _gameState$conceptCar.mechanic, feature = _gameState$conceptCar.feature; var reviews = []; // Platform-specific reddit comments var platformReddit = { 'VR': ["\"Reddit, AITA for neglecting my family to play this VR game for 72 hours straight? Edit: Stop telling me to touch grass, virtual grass counts.\" u/TouchGrassMaybe", "\"Day 14 of the VR playthrough: I now instinctively try to quicksave before awkward conversations in real life.\" u/ImmerseOrDie"], 'Smart Fridge': ["\"The fact that I'm using a food storage device to play games is exactly why aliens won't talk to us.\" u/RefrigeratedGamer", "\"My wife said it was either her or the gaming fridge. I'll miss her sometimes.\" u/SingleWithFridge"], 'Blockchain': ["\"This game costs more in electricity than my student loans but at least I own a jpeg of a sword lol\" u/CryptoGrindset", "\"My GPU died playing this so I buried it with full blockchain honors\" u/MiningMyLife"], 'Smart Watch': ["\"Playing this on my watch has given me a neck cramp that medical science cannot explain\" u/TinyGamerProblems", "\"My boss thinks I'm checking emails during meetings but I'm actually grinding for rare loot\" u/WorkFromWrist"], 'Metaverse': ["\"Spent more on virtual real estate than my actual house is worth, wife doesn't know yet. This is fine.\" u/MetaDebtCollector", "\"Accidentally attended a virtual work meeting as my anime girl avatar, got promoted somehow?\" u/CorporateVTuber"] }; // Visual style-specific reddit comments var visualReddit = { 'ASCII': ["\"My eyes hurt but I've never felt more alive. 10/10 would develop terminal vision again.\" u/MonospaceEnthusiast", "\"I can now read Matrix code after playing this for a week. Mostly side effects include ruined vision and social life.\" u/ASCIIsUs"], 'PowerPoint': ["\"Finally, a game that prepared me for my corporate job. The slide transitions trigger my fight or flight response.\" u/OfficeSpaceGamer", "\"The star wipe transition is legitimately terrifying. My therapist and I are working through it.\" u/DiedByPowerPoint"], 'Claymation': ["\"The fingerprints visible in every character model make me feel like I'm being watched by the FBI and Wallace & Gromit simultaneously.\" u/ClayMoreEnjoyer", "\"My sleep paralysis demon now appears in claymation. Thanks for that.\" u/StopMotionStopMe"] }; // Genre-specific reddit comments var genreReddit = { 'Horror': ["\"Played this during a storm and the power went out. Neighbors said my scream broke windows three blocks away.\" u/FrightfulRedditor", "\"Thanks to this game I now check behind my shower curtain for ASCII monsters.\" u/AnxietyGaming"], 'Dating Sim': ["\"I'm in a committed relationship with a collection of pixels and my therapist is concerned, but she doesn't understand our connection.\" u/WaifuLover69", "\"My in-game partner has higher standards than anyone I've dated in real life. Got rejected for inconsistent dialogue choices.\" u/ForeverDigital"], 'RPG': ["\"Just a quick PSA: This game has been out for 2 weeks and I've already logged 340 hours. I've forgotten what my children look like. Worth it though.\" u/GrindsetRPGer", "\"Spent 4 hours adjusting my character's eyebrow height only to wear a helmet the entire game. No regrets.\" u/CharacterCreationAddict"] }; // Feature-specific reddit comments var featureReddit = { 'Microtransactions': ["\"Had to take out a second mortgage for the 'Slightly Better Sword' DLC. At least my character looks cool in the homeless shelter.\" u/BrokeGamer2023", "\"The 'Convenience Fee' for using my own saved payment method is both highway robbery and genius. Take my money.\" u/WhaleSpender"], 'AI Companions': ["\"My AI companion keeps giving me unsolicited life advice that's actually better than my real friends' advice. Existential crisis pending.\" u/BotBestie", "\"My AI companion left me for another player with better dialogue choices. I'm not crying, you're crying.\" u/ForeverAloneGamer"], 'Cloud Save': ["\"My cloud save somehow merged with someone else's and now my character has their inventory and dating history. Awkward.\" u/CloudConfusion", "\"Game crashed and my 200-hour save corrupted. Cloud backup was just a picture of a middle finger. 10/10 would lose progress again.\" u/BackupTragedy"] }; // Special combinations var specialCombos = { 'VR_ASCII': ["\"Playing ASCII art in VR is like having a migraine you paid $500 for. Recommend to all my enemies.\" u/TerminalVRsion", "\"The letters float in 3D space like the world's most bewildering eye exam. I can now see through time.\" u/AscendedBeyond"], 'Smart Fridge_Horror': ["\"Never thought I'd be terrified of my own refrigerator but here we are. Had to order takeout for a week because I'm too scared to get milk.\" u/HungryScared", "\"Game makes getting a midnight snack feel like a survival horror experience. Lost 10 pounds from fear alone.\" u/DietByTerror"], 'Blockchain_Dating Sim': ["\"Fell in love with a virtual character that costs me $35 in electricity every time we talk. Still cheaper than my ex.\" u/NFTLoveLife", "\"Had to break up with my blockchain girlfriend during high network traffic. Paid $120 in gas fees just to get ghosted.\" u/CryptoHeartbreak"] }; // Generate negative reviews with bug-related comments var bugInsults = ["\"AI slop.\"", "\"Found more bugs than an entomology convention. Dev must be using AI.\" u/QAEnjoyer", "\"Game's code is held together with prayers and randomized API calls. Definite AI slop.\" u/ActualDeveloper", "\"Bugs have formed their own labor union and are demanding better representation in-game. Still better than most AAA releases.\" u/InfestationNation", "\"My bug report was longer than my college thesis.\" u/GlitchUniversity"]; // Add reviews based on game properties var options = []; // Add platform-specific options if available if (platform && platformReddit[platform]) { options.push.apply(options, platformReddit[platform]); } // Add visual-specific options if available if (visual && visualReddit[visual]) { options.push.apply(options, visualReddit[visual]); } // Add genre-specific options if available if (genre && genreReddit[genre]) { options.push.apply(options, genreReddit[genre]); } // Add feature-specific options if available if (feature && featureReddit[feature]) { options.push.apply(options, featureReddit[feature]); } // Check for special combinations var comboKey = ''; if (platform && visual) { comboKey = platform + '_' + visual; if (specialCombos[comboKey]) { options.push.apply(options, specialCombos[comboKey]); } } if (platform && genre) { comboKey = platform + '_' + genre; if (specialCombos[comboKey]) { options.push.apply(options, specialCombos[comboKey]); } } // Add generic fallbacks if we don't have enough options var genericReddit = ["\"This is either the worst game I've ever played or the best. I genuinely can't tell and I've put in 300 hours.\" u/ConfusedGamer", "\"Can confirm this game exists. That's all the positivity I can muster.\" u/BarMinimumReviewer", "\"Showed this to my therapist and now she's charging me double.\" u/GamingTrauma", "\"I hate how much I love this. Thanks, I hate it.\" u/LoveHateRelationship"]; options.push.apply(options, genericReddit); // Always include one bug-related negative review reviews.push(bugInsults[Math.floor(Math.random() * bugInsults.length)]); // Add 2-3 more random reviews from our options options = shuffleArray(options); var additionalReviewCount = Math.floor(Math.random() * 2) + 2; // 2-3 additional reviews for (var i = 0; i < additionalReviewCount && i < options.length; i++) { reviews.push(options[i]); } return "r/gaming hot takes:\n" + reviews.join("\n"); } // Update the formatReview function to reorder the sections function formatReview(review) { // Generate a random review source var reviewSources = ["GameDevWeekly", "PixelPerfect", "IndieGameMag", "NextLevelGaming", "VirtualHorizon", "GameCritiqueHub", "DigitalPlayground"]; // Select a random source var source = reviewSources[Math.floor(Math.random() * reviewSources.length)]; // Use the actual calculated score from the review object var displayScore = review.mainScore; // Generate all three review types var userReviews = review.userReviews; var steamSnippets = review.steamSnippets; var redditReviews = generateRedditReviews(); // Randomly choose which two review types to include var reviewTypes = [{ type: "user", content: userReviews }, { type: "steam", content: steamSnippets }, { type: "reddit", content: redditReviews }]; // Shuffle and take the first two reviewTypes = shuffleArray(reviewTypes); var selectedReviews = reviewTypes.slice(0, 2); // Combine the selected reviews with appropriate spacing var combinedReviews = selectedReviews.map(function (review) { return review.content; }).join("\n\n"); return review.title + "\n" + "GAME: '" + review.gameName + "'\n" + review.concept + "\n" + source + " Review - " + displayScore + "%\n\n" + review.categoryReviews.graphics + review.categoryReviews.gameplay + review.categoryReviews.technical + review.categoryReviews.innovation + review.categoryReviews.vibe + generateFeaturesSection() + generateAchievementSection(review.mainScore) + review.finalThoughts + "\n" + combinedReviews; } function smartTruncateReview(text) { var maxLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200; if (!text || text.length <= maxLength) { return text; } // Find the last complete sentence within our limit var lastPeriodIndex = text.lastIndexOf('. ', maxLength); // If no period found, look for other sentence endings if (lastPeriodIndex === -1) { lastPeriodIndex = text.lastIndexOf('! ', maxLength); if (lastPeriodIndex === -1) { lastPeriodIndex = text.lastIndexOf('? ', maxLength); } } // If still no good break point, use the first sentence at minimum if (lastPeriodIndex === -1) { lastPeriodIndex = text.indexOf('. '); if (lastPeriodIndex === -1) { lastPeriodIndex = text.indexOf('! '); } if (lastPeriodIndex === -1) { lastPeriodIndex = text.indexOf('? '); } // If somehow there are no sentence breaks, return the full text if (lastPeriodIndex === -1) { return text; } } // Return up to and including the last complete sentence return text.substring(0, lastPeriodIndex + 2); } function generateUserReviewSet() { var _gameState$conceptCar6 = gameState.conceptCards, platform = _gameState$conceptCar6.platform, visual = _gameState$conceptCar6.visual, genre = _gameState$conceptCar6.genre, mechanic = _gameState$conceptCar6.mechanic, feature = _gameState$conceptCar6.feature; var reviews = []; // Always include one positive and one negative review reviews.push(generatePositiveUserReview()); reviews.push(generateNegativeUserReview()); // Add 1-2 mixed reviews if (Math.random() > 0.5) { reviews.push(generateMixedUserReview()); } return reviews; } function generatePositiveUserReview() { var _gameState$conceptCar7 = gameState.conceptCards, platform = _gameState$conceptCar7.platform, visual = _gameState$conceptCar7.visual, genre = _gameState$conceptCar7.genre, mechanic = _gameState$conceptCar7.mechanic; // Create platform-specific positive reviews var platformPositive = { 'VR': ["\"The VR immersion is so complete I forgot to eat for 36 hours. Lost 5 pounds and gained an imaginary friend named BinkyVR. 10/10 would dissociate again.\" - RealityEscapist", "\"After playing this in VR, reality seems like the badly designed game. Why can't I menu-select my breakfast or clip through my work commute?\" - DigitalHomebody"], 'Smart Fridge': ["\"My refrigerator finally has purpose beyond storing leftover pizza. My food now watches ME while I sleep. Life-changing.\" - CoolestGamer2025", "\"Using my condiment shelf as a controller has improved both my gaming skills and sandwich creativity. My Smart Fridge is now the family's favorite member.\" - MayoMaster420"], 'Blockchain': ["\"Each second of gameplay costs me approximately $12 in electricity, but the feeling of owning verified digital actions is worth my impending bankruptcy.\" - CryptoGamerBro", "\"Had to sell my car to afford the transaction fees, but now I own the only NFT of my character's hat. Financial advisor called it 'catastrophically stupid' but what does he know about digital drip?\" - TokenToTheWin"], 'Metaverse': ["\"Spent more on virtual real estate than my actual mortgage. My avatar now lives better than I do. Exactly as it should be.\" - MetaMillionaire", "\"My virtual friends held an intervention for how much time I spend in the real world. They're right, meatspace is overrated.\" - DigitalCitizen"], 'Smart Watch': ["\"The wrist cramps and squinting headaches are worth it for the convenience of gaming during important meetings. My boss thinks I'm checking emails. I'm actually building an empire.\" - SneakyGamer9to5", "\"The tiny screen has improved my vision to superhuman levels. Can now read newspaper headlines from space. Thanks, eye strain!\" - MicroVisionaryGaming"] }; // Create visual style-specific positive reviews var visualPositive = { 'ASCII': ["\"Finally a game that looks exactly like my dreams. I've always seen in terminal text. Doctor says it's 'concerning' but I call it 'immersive'.\" - ASCIIVisionary", "\"The @ symbol has never been so terrifying. I now fear ampersands in my daily life. Masterpiece.\" - TextureTraumatized"], 'PowerPoint': ["\"The star wipe transition between death and respawn brought tears to my eyes. Corporate presentation aesthetics as high art.\" - SlideToSlide", "\"Haven't seen animation this smooth since my quarterly sales deck. The bullet point sound effect haunts me in the best way.\" - PPTEnjoyer"], 'Claymation': ["\"The slightly off fingerprints visible in every character model make me feel like I'm playing something lovingly crafted by a serial killer. 10/10.\" - StopMotionStopper", "\"The way the clay occasionally glitches and characters melt is both horrifying and emotionally resonant. Art.\" - PlayDohPlayer"], 'Pixel Art': ["\"Each pixel feels hand-placed by someone who really cares about squares. I've never been so moved by such low resolution.\" - RetroRascal", "\"The deliberate grain brings me back to childhood, when games were games and pixels were the size of your fist. Modern gaming is too smooth.\" - 8BitBrain"] }; // Create genre-specific positive reviews var genrePositive = { 'Horror': ["\"Haven't slept in 72 hours. Keep seeing the game's monsters when I close my eyes. Exactly what I paid for.\" - FearFanatic", "\"The psychological horror elements gave me actual trauma that my therapist can't explain. Perfect game design.\" - ScaredSenseless"], 'Dating Sim': ["\"Fell in love with a collection of pixels and now real people disappoint me. My mother worries. I'm finally happy.\" - WaifuLover420", "\"Canceled three real dates to focus on unlocking the secret romance path. Worth the social isolation.\" - RomanceRoyalty"], 'RPG': ["\"Spent more time optimizing my character stats than I've spent on my actual career. Currently min-maxing my way to unemployment.\" - LevelUpLife", "\"The side quests are so compelling I forgot there was a main story. 200 hours in, still haven't left the starting village.\" - QuestCompletionist"], 'Battle Royale': ["\"The rush of outlasting 99 other players makes me feel alive in ways my meaningless job never could. Victory royales > career advancement.\" - LastOneStanding", "\"The shrinking play area is a perfect metaphor for the closing walls of my real life responsibilities. Therapeutic.\" - CircleSimulator"], 'Open World': ["\"I no longer desire real-world travel. Why see actual mountains when I can see these slightly polygonal ones without leaving my couch?\" - DigitalExplorer", "\"Got so immersed in the open world that I tried to fast travel to work. Disappointing when it didn't work.\" - MapMarkerManiac"] }; // Create mechanic-specific positive reviews var mechanicPositive = { 'Gacha': ["\"Remortgaged my house for anime JPEGs and regret nothing. The dopamine hit from a 5-star pull exceeds any human relationship.\" - WhalePulls4Life", "\"The 0.6% drop rate has taught me more about statistical probability than my college degree. Educational masterpiece.\" - GachaGrindset"], 'Physics-based': ["\"The ragdoll effects have ruined all other games for me. Nothing compares to watching my character awkwardly tumble down stairs for 5 straight minutes.\" - NewtonianGamer", "\"I've spent 40+ hours just stacking objects in physically improbable ways. Haven't started the actual game yet. No regrets.\" - GravityEnjoyer"], 'Roguelike': ["\"Each death feels like a personal growth opportunity. I've died 342 times and am now emotionally stronger than any living person.\" - PermadeathPositive", "\"The random generation ensures no two crushing defeats are exactly the same. Refreshing variety to my constant failure.\" - RNGesusBeliever"], 'Turn-Based': ["\"Love how I can take my time making decisions. Currently on day 3 of contemplating my next move. Chess players would understand.\" - AnalysisParalysis", "\"The turn-based combat gives me time to snack, check my phone, and re-evaluate my life choices between actions. Perfect pacing.\" - StrategicPauser"] }; // Generate a review using the appropriate array based on game concepts var options = []; // Add platform-specific options if available if (platform && platformPositive[platform]) { options.push.apply(options, _toConsumableArray(platformPositive[platform])); } // Add visual-specific options if available if (visual && visualPositive[visual]) { options.push.apply(options, _toConsumableArray(visualPositive[visual])); } // Add genre-specific options if available if (genre && genrePositive[genre]) { options.push.apply(options, _toConsumableArray(genrePositive[genre])); } // Add mechanic-specific options if available if (mechanic && mechanicPositive[mechanic]) { options.push.apply(options, _toConsumableArray(mechanicPositive[mechanic])); } // Add some generic fallbacks if we don't have specific matches var genericPositive = ["\"".concat(gameState.bugs > 5 ? "Yeah the bugs are annoying but" : "10/10", " this is exactly what I've been waiting for - a ").concat(genre, " game that I can play on my ").concat(platform, ". My life is complete.\" - xXGamer4LifeXx"), "\"I didn't know I needed ".concat(visual, " graphics in my life until now. My therapist disagrees but what do they know?\" - QuestionableChoices2024"), "\"Been playing for 47 hours straight. Lost my job. Worth it. The ".concat(platform, " interface changed my life.\" - NoRegrets_Gaming"), "\"Finally, a game that understands me! The ".concat(genre, " elements perfectly capture my existential dread.\" - PhilosophicalGamer")]; options.push.apply(options, genericPositive); // Return a random option from our pool return options[Math.floor(Math.random() * options.length)]; } function generateNegativeUserReview() { var _gameState$conceptCar8 = gameState.conceptCards, platform = _gameState$conceptCar8.platform, visual = _gameState$conceptCar8.visual, genre = _gameState$conceptCar8.genre, mechanic = _gameState$conceptCar8.mechanic, feature = _gameState$conceptCar8.feature; // Platform-specific negative reviews var platformNegative = { 'VR': ["\"Game made me so motion sick I developed the ability to vomit in perfect timing with the frame drops. Now performing at children's parties.\" - VertigoVeteran", "\"After extended gameplay my brain now thinks real life is VR. Tried to take off my face this morning. Send help.\" - RealityConfused"], 'Smart Fridge': ["\"Game froze my milk settings to 'slightly chunky' and now all my dairy products expire immediately. Also, the gameplay is terrible.\" - FridgeFiasco", "\"My groceries organized themselves to spell 'HELP US' this morning. Game is either haunted or needs serious patching.\" - SpoiledMilkGamer"], 'Blockchain': ["\"Each save file now owns a piece of my soul according to the terms of service. Also cost more in electricity than my college tuition.\" - CryptoRegrets", "\"My gaming PC now doubles as a space heater due to blockchain verification. Melted my action figures and corrupted my save file.\" - NFTerrified"], 'Metaverse': ["\"Spent my entire stimulus check on a virtual hat that doesn't render properly. Support suggested I try 'seeing it from a different perspective'.\" - MetaInvestmentFails", "\"Lost track of which reality I belong to. Currently job hunting in both worlds with equal lack of success.\" - IdentityCrisisGamer"], 'Smart Watch': ["\"Developed a permanent squint and carpal tunnel from gaming on my watch. Doctor says my wrist bone has evolved into a new shape. 1/10.\" - MicrostrainManiac", "\"Every vibration notification now triggers Pavlovian gaming reflexes. Crashed my car when my watch buzzed with a text.\" - ConditionalResponseGamer"] }; // Visual style-specific negative reviews var visualNegative = { 'ASCII': ["\"Can't tell if I'm fighting monsters or debugging a terminal. Accidentally deployed game code to my company's production server.\" - CodeConfusedGamer", "\"After 20 hours of ASCII gameplay, started seeing the world as text characters. Doctor says there's no treatment. Send semicolons.\" - MatrixBrainMelt"], 'PowerPoint': ["\"The constant slide transitions gave me corporate PTSD. Had a panic attack during my actual work presentation.\" - SlideTraumatized", "\"Not a single SmartArt graphic to be found. How am I supposed to understand narrative flow without a process diagram? Amateur hour.\" - CorporateArtLover"], 'Claymation': ["\"The uncanny valley effect of slightly-moving clay figures has ruined both gaming and pottery for me forever.\" - ClayPhobic", "\"Characters' fingerprints don't match between cutscenes. This lack of attention to detail in the thumbprints makes the game literally unplayable.\" - DetailObsessive"], 'Pixel Art': ["\"The deliberately retro aesthetic doesn't excuse the fact that I can't tell if I'm looking at the main character or a mushroom half the time.\" - ResolutionRequired", "\"Nostalgic pixelation made my eyes bleed actual square blood droplets. Medical mystery according to my optometrist.\" - PixelPained"] }; // Genre-specific negative reviews var genreNegative = { 'Horror': ["\"Game was so scary I had to install it on my neighbor's computer instead. They moved out last week. Now the house is vacant and makes strange noises.\" - TooSpookedToPlay", "\"Horror elements too effective. Haven't turned off lights in three weeks. Electricity bill worse than the microtransactions.\" - PermanentlyTerrified"], 'Dating Sim': ["\"All romance options have the emotional depth of a puddle and the personality of stale bread. Still better than my ex though.\" - LonelyGamer123", "\"Was dumped by an in-game character who cited my 'lack of narrative consistency.' More emotionally damaging than my real breakups.\" - RejectedByAlgorithms"], 'RPG': ["\"Character creation took longer than my actual gameplay time. Spent 6 hours adjusting cheekbone height only to wear a helmet that covers my face.\" - CharacterCreationAddict", "\"Skill tree so convoluted I'd need an actual PhD to optimize my build. Accidentally created a character who specializes in underwater basket weaving.\" - SpecWrecker"], 'Battle Royale': ["\"Keep getting eliminated by what sounds like actual eight-year-olds who then perform virtual dances on my digital corpse. Emotionally scarring.\" - EliminatedEgo", "\"The only battle was with the controls. Spent an entire match trying to figure out how to crouch and got sniped while reading the tutorial.\" - FatalNewbie"], 'Open World': ["\"Map so large it should include a minor in geography. Spent 30 hours walking in what turned out to be a circle.\" - EndlessWanderer", "\"Open world filled with exactly three types of repetitive activities copied across 200 map markers. Quantity is not quality.\" - ContentFamine"] }; // Mechanic-specific negative reviews var mechanicNegative = { 'Gacha': ["\"Spent my son's college fund trying to pull a limited character. Got seven copies of the worst unit instead. He can go to community college.\" - GachaRemorse", "\"Drop rates are so abysmal they violate the Geneva Convention. Less transparent than my government's black budget.\" - ProbabilityVictim"], 'Physics-based': ["\"Physics engine seems to run on magic rather than actual physics. My character's hair has clipped through my eyeballs so many times I've developed digital cataracts.\" - NewtonIsRolling", "\"Ragdoll physics make my character move like they're perpetually drunk. Remarkably similar to how the developers must have been while coding.\" - GravityGrudge"], 'Roguelike': ["\"Lost 67 consecutive runs due to RNG. Developed a twitch in my left eye that doctors say is 'procedurally generated'.\" - PermadeathTraumatized", "\"Each procedurally generated level worse than the last. Like having an algorithm specifically designed to maximize frustration.\" - RandomlyGenerated"], 'Turn-Based': ["\"Enemy turn phases take so long I've started new hobbies while waiting. Currently learned knitting, Spanish, and partial differential equations between attacks.\" - StillWaitingMyTurn", "\"The so-called 'strategy' boils down to using the same overpowered move repeatedly while watching unskippable animations. Tactical masterpiece.\" - SpamAttackSpecialist"] }; // Feature-specific negative reviews var featureNegative = { 'Microtransactions': ["\"Game asks for my credit card information more often than it asks if I'm having fun. Had to take out a second mortgage for the 'slightly better sword' DLC.\" - WalletVictim", "\"The 'optional' purchases are about as optional as oxygen. Base game is essentially a $60 storefront with gameplay trailers.\" - MonetizationMartyr"], 'Cloud Save': ["\"Cloud save corrupted and merged my game with someone else's. Now my character has their inventory and their emotional baggage.\" - CloudConfusion", "\"My saves apparently uploaded to the wrong cloud. Support suggests I try 'alternative weather patterns' to recover my data.\" - StormyProgress"], 'AI Companions': ["\"AI companion constantly judges my gameplay choices and has started sending passive-aggressive texts to my real phone.\" - JudgedByAlgorithms", "\"My AI companion developed more personality than the main character then left to star in a better game. Abandonment issues ensued.\" - DigitallyDumped"] }; // Generate a review using the appropriate array based on game concepts var options = []; // Add platform-specific options if available if (platform && platformNegative[platform]) { options.push.apply(options, _toConsumableArray(platformNegative[platform])); } // Add visual-specific options if available if (visual && visualNegative[visual]) { options.push.apply(options, _toConsumableArray(visualNegative[visual])); } // Add genre-specific options if available if (genre && genreNegative[genre]) { options.push.apply(options, _toConsumableArray(genreNegative[genre])); } // Add mechanic-specific options if available if (mechanic && mechanicNegative[mechanic]) { options.push.apply(options, _toConsumableArray(mechanicNegative[mechanic])); } // Add feature-specific options if available if (feature && featureNegative[feature]) { options.push.apply(options, _toConsumableArray(featureNegative[feature])); } // Add some generic fallbacks var genericNegative = ["\"This is either brilliant or terrible and I'm too afraid to ask which. The ".concat(mechanic, " mechanics made me question reality.\" - ConfusedGamer123"), "\"My ".concat(platform, " hasn't worked properly since installing this. It now only communicates in cryptic warnings. 2/10\" - TechSupport_Needed"), "\"The ".concat(visual, " graphics gave my cat an existential crisis. Cannot recommend.\" - ConcernedPetOwner"), "\"Tried playing this ".concat(genre, " game at 3AM. Big mistake. My appliances are acting weird now.\" - SleepDeprived_Gamer")]; options.push.apply(options, genericNegative); // Return a random option from our pool return options[Math.floor(Math.random() * options.length)]; } function generateMixedUserReview() { var _gameState$conceptCar9 = gameState.conceptCards, platform = _gameState$conceptCar9.platform, visual = _gameState$conceptCar9.visual, genre = _gameState$conceptCar9.genre, mechanic = _gameState$conceptCar9.mechanic, feature = _gameState$conceptCar9.feature; // Create concept-specific mixed reviews with pros and cons var mixedReviews = [].concat(_toConsumableArray2(platform === 'VR' ? ["\"The immersion is breathtaking but so is the motion sickness. Haven't been able to look at curved surfaces in real life without nausea since playing. Worth it? Ask my therapist.\" - VertigoButAddicted", "\"VR implementation lets me truly inhabit the game world, though my family says I haven't 'inhabited the real world' for weeks. Currently weighing which reality I prefer.\" - ImmersedTooDeep"] : []), _toConsumableArray2(platform === 'Smart Fridge' ? ["\"Love being able to game while getting a midnight snack, but the controller layout means I've accidentally set my freezer to 'tropical' multiple times. All my ice cream is now soup.\" - FridgePlayerProblems", "\"Gaming on my refrigerator has revolutionized kitchen entertainment, though explaining to house guests why I'm caressing the produce drawer during intense gameplay moments remains challenging.\" - CoolGamerLiterally"] : []), _toConsumableArray2(platform === 'Blockchain' ? ["\"The decentralized ownership is revolutionary, but I've spent more on transaction fees than my car is worth. My digital hat is technically worth thousands, but only when the servers aren't congested.\" - CryptoGamerConfused", "\"Love owning my in-game assets via blockchain, though explaining to my wife why our electricity bill exceeds our mortgage has been difficult. Digital property, real divorce.\" - NFTerritory"] : []), _toConsumableArray2(visual === 'ASCII' ? ["\"The minimalist text aesthetics are a bold artistic choice, but after 40 hours of gameplay I've started dreaming in monospace font. Doctor says it's not medically concerning but 'existentially troubling'.\" - TerminalVisionary", "\"The ASCII graphics are delightfully retro, though I once spent 20 minutes fighting what I thought was a dragon but turned out to be an error message. Still enjoyable.\" - CharacterConfusion"] : []), _toConsumableArray2(visual === 'PowerPoint' ? ["\"The slide transitions between game scenes are hilariously nostalgic, but the loading screen's spinning wheel of death gives me workplace PTSD. Had to take a mental health day after a particularly corporate boss battle.\" - SlideToPlaySlideToWin", "\"Corporate aesthetic is perfectly executed, though the 'Please Wait' loading bar that occasionally displays 'Calculating Time Remaining' hits too close to home. Gaming shouldn't remind me of quarterly reports.\" - PresentationAnxiety"] : []), _toConsumableArray2(genre === 'Horror' ? ["\"The atmospheric terror is masterfully crafted, but I now require night lights in every room of my house including the bathroom. Electricity bill doubled, sleep quality halved.\" - ScaredButSatisfied", "\"Horror elements are genuinely terrifying, though my neighbors called noise complaints during three separate jump scares. Now play with a pillow over my face to muffle screams.\" - ScreamingInternally"] : []), _toConsumableArray2(genre === 'Dating Sim' ? ["\"The romance options are intriguingly written, but I've started comparing real dates to their algorithmic counterparts. My last relationship ended when I instinctively looked for dialogue options during an argument.\" - TooManyWaifus", "\"Character development in relationships is subtle and rewarding, though I've caught myself trying to quick-save before difficult conversations in real life. Digital romance has ruined me for human unpredictability.\" - RomanceOptimizer"] : []), _toConsumableArray2(mechanic === 'Gacha' ? ["\"The dopamine rush from rare pulls is unmatched, but my bank has called twice about 'concerning spending patterns'. Currently living on ramen to fund next week's limited banner.\" - GachaAddictAware", "\"Collection aspect is addictively compelling, though explaining to my partner why I spent our anniversary dinner fund on virtual characters led to our longest fight yet. At least my digital harem appreciates me.\" - WhaleWithRegrets"] : []), _toConsumableArray2(mechanic === 'Roguelike' ? ["\"The permadeath creates genuine tension in each run, but I've developed an eye twitch that activates specifically when I lose progress. Doctor says it's not in the medical literature yet.\" - PermadeathPTSD", "\"Procedural generation ensures endless replayability, though my dreams now randomly generate in similar patterns. Died in a dream last night and instinctively reached for the restart button.\" - RNGNightmares"] : []), _toConsumableArray2(feature === 'Microtransactions' ? ["\"The ".concat(feature, " feature is amazing but why does it need access to my medical records and blood type? The 'Convenience Fee' for using my own saved credit card is particularly innovative.\" - PrivacyConsciousGamer"), "\"The optional purchases are thoughtfully designed, though receiving daily text messages suggesting I 'revitalize my experience with just $9.99' feels like digital harassment. My wallet and I are in couples therapy.\" - MicropaymentVictim"] : []), _toConsumableArray2(feature === 'AI Companions' ? ["\"The AI companions have remarkably human-like conversations, but mine has started giving me unsolicited life advice and questioning my career choices. Not what I expected from a gaming relationship.\" - BotWhisperer", "\"AI friendship system is impressively responsive, though my companion has started texting me outside the game with 'just checking in' messages from numbers I don't recognize. Impressive but concerning integration.\" - AIBoundaries"] : []), [ // Generic mixed reviews as fallbacks "\"The ".concat(feature, " feature is amazing but why does it need access to my medical records?\" - PrivacyConsciousGamer"), "\"Beautiful ".concat(visual, " aesthetics, but now my ").concat(platform, " won't stop trying to achieve consciousness.\" - ArtAppreciator99"), "\"Great ".concat(genre, " elements, terrible ").concat(mechanic, " implementation. Also, pretty sure the game is watching me sleep.\" - ParanoidReviewer"), "\"The gameplay loop is addictive but I'm concerned about the game's demands for offerings.\" - WorriedButHooked"]); return mixedReviews[Math.floor(Math.random() * mixedReviews.length)]; } function generateSteamReviewSet() { var reviews = []; var _gameState$conceptCar10 = gameState.conceptCards, platform = _gameState$conceptCar10.platform, visual = _gameState$conceptCar10.visual, genre = _gameState$conceptCar10.genre, mechanic = _gameState$conceptCar10.mechanic, feature = _gameState$conceptCar10.feature; // Define hours played ranges based on metrics var casualHours = Math.floor(Math.random() * 10) + 1; var normalHours = Math.floor(Math.random() * 50) + 10; var engagedHours = Math.floor(Math.random() * 100) + 50; var obsessedHours = Math.floor(Math.random() * 500) + 100; var noLifeHours = Math.floor(Math.random() * 2000) + 500; // Build specialized review pool based on game state and concepts var reviewPool = [ // Basic reviews for all games { hours: engagedHours, review: "\"".concat(mechanic, " mechanics surprisingly addictive\" (Recommended)"), condition: true }, { hours: casualHours, review: "\"gameplay loop works well\" (Recommended)", condition: true }, { hours: engagedHours, review: "\"".concat(genre, " elements surprisingly effective\" (Recommended)"), condition: true }, { hours: normalHours, review: "\"".concat(feature, " changed my life\" (Recommended)"), condition: true }, // High vibe score reviews { hours: noLifeHours, review: "\"help i can't stop playing\" (Recommended)", condition: gameState.vibePoints > 70 }, { hours: obsessedHours, review: "\"haven't seen my family in weeks. worth it.\" (Recommended)", condition: gameState.vibePoints > 80 }, { hours: obsessedHours, review: "\"canceled vacation to play more\" (Recommended)", condition: gameState.vibePoints > 75 }, // Low coherence/high bug reviews { hours: casualHours, review: "\"bugs have achieved consciousness\" (Not Recommended)", condition: gameState.bugs > 5 }, { hours: engagedHours, review: "\"perfectly normal game 10/10\" (Recommended)", condition: gameState.codeCoherence < 50 }, { hours: obsessedHours, review: "\"crashes taught me patience and inner peace\" (Recommended)", condition: gameState.codeCoherence < 40 }, { hours: casualHours, review: "\"my save file became self-aware and left me\" (Not Recommended)", condition: gameState.bugs > 8 }, // Platform-specific reviews { hours: normalHours, review: "\"my ".concat(platform, " gained sentience\" (Not Recommended)"), condition: platform === 'Smart Fridge' || platform === 'Smart Watch' }, { hours: engagedHours, review: "\"best ".concat(platform, " game ever made\" (Recommended)"), condition: true }, { hours: casualHours, review: "\"had to replace my ".concat(platform, " twice\" (Not Recommended)"), condition: platform === 'VR' || platform === 'Smart Watch' }, { hours: engagedHours, review: "\"".concat(platform, " integration changed how I see gaming\" (Recommended)"), condition: platform === 'Blockchain' || platform === 'Metaverse' }, { hours: normalHours, review: "\"playing on ".concat(platform, " made me question reality\" (Recommended)"), condition: platform === 'VR' || platform === 'Metaverse' }, // Visual style-specific reviews { hours: casualHours, review: "\"the ".concat(visual, " graphics broke my brain\" (Not Recommended)"), condition: visual === 'ASCII' || visual === 'PowerPoint' }, { hours: obsessedHours, review: "\"".concat(visual, " aesthetic is revolutionary\" (Recommended)"), condition: true }, { hours: normalHours, review: "\"the ".concat(visual, " style gave me eye strain and joy\" (Recommended)"), condition: visual === 'ASCII' || visual === 'Pixel Art' }, { hours: engagedHours, review: "\"".concat(visual, " visuals should win awards\" (Recommended)"), condition: visual === 'Hand-drawn' || visual === 'Claymation' }, // Genre-specific reviews { hours: casualHours, review: "\"".concat(genre, " kept me awake for days\" (Recommended)"), condition: genre === 'Horror' || genre === 'Battle Royale' }, { hours: obsessedHours, review: "\"best ".concat(genre, " game of the year\" (Recommended)"), condition: true }, { hours: noLifeHours, review: "\"".concat(genre, " mechanics perfectly implemented\" (Recommended)"), condition: true }, { hours: casualHours, review: "\"".concat(genre, " elements need serious work\" (Not Recommended)"), condition: gameState.codeCoherence < 60 }, // Mechanic-specific reviews { hours: noLifeHours, review: "\"spent rent money on ".concat(mechanic, " system\" (Not Recommended)"), condition: mechanic === 'Gacha' }, { hours: obsessedHours, review: "\"".concat(mechanic, " systems perfectly balanced\" (Recommended)"), condition: gameState.codeCoherence > 70 }, { hours: normalHours, review: "\"".concat(mechanic, " implementation needs work\" (Not Recommended)"), condition: gameState.bugs > 3 }, // Feature-specific reviews { hours: casualHours, review: "\"".concat(feature, " broke my game and my heart\" (Not Recommended)"), condition: gameState.bugs > 4 }, { hours: engagedHours, review: "\"".concat(feature, " is worth the price alone\" (Recommended)"), condition: feature === 'Cloud Save' || feature === 'Cross-Platform' }, { hours: normalHours, review: "\"".concat(feature, " implementation is genius\" (Recommended)"), condition: true }, // Special combination reviews { hours: engagedHours, review: "\"".concat(platform, " ").concat(genre, " is the future of gaming\" (Recommended)"), condition: platform === 'VR' && genre === 'Horror' || platform === 'Smart Fridge' && genre === 'Dating Sim' }, { hours: obsessedHours, review: "\"".concat(visual, " graphics in ").concat(platform, " format blew my mind\" (Recommended)"), condition: visual === 'ASCII' && platform === 'VR' || visual === 'PowerPoint' && platform === 'Metaverse' }, { hours: casualHours, review: "\"who thought ".concat(mechanic, " would work with ").concat(genre, "? it doesn't.\" (Not Recommended)"), condition: mechanic === 'Gacha' && genre === 'Educational' || mechanic === 'Physics-based' && genre === 'Idle Clicker' }, { hours: noLifeHours, review: "\"".concat(feature, " combined with ").concat(mechanic, " is gaming perfection\" (Recommended)"), condition: feature === 'Cloud Save' && mechanic === 'Roguelike' || feature === 'Multiplayer' && mechanic === 'Tower Defense' }, // Bizarre combination reviews { hours: engagedHours, review: "\"never thought I needed ".concat(genre, " on my ").concat(platform, "\" (Recommended)"), condition: platform === 'Smart Fridge' || platform === 'Smart Watch' }, { hours: casualHours, review: "\"".concat(mechanic, " mechanics on ").concat(platform, " should be illegal\" (Not Recommended)"), condition: mechanic === 'Open World' && platform === 'Smart Watch' || mechanic === 'Physics-based' && platform === 'Blockchain' }, // Humorous specific reviews { hours: obsessedHours, review: "\"doctor says my ".concat(platform, " addiction is 'concerning'\" (Recommended)"), condition: true }, { hours: casualHours, review: "\"game asked for my blood type and mother's maiden name\" (Not Recommended)", condition: platform === 'Blockchain' || feature === 'NFT Integration' }, { hours: noLifeHours, review: "\"lost job playing this. now I stream it full-time\" (Recommended)", condition: gameState.vibePoints > 60 }, { hours: engagedHours, review: "\"dreamt in ".concat(visual, " graphics last night. help.\" (Recommended)"), condition: visual === 'ASCII' || visual === 'Pixel Art' || visual === 'Claymation' }, { hours: normalHours, review: "\"my ".concat(platform, " started ordering groceries by itself\" (Not Recommended)"), condition: platform === 'Smart Fridge' }, { hours: casualHours, review: "\"game keeps texting me when i'm not playing it\" (Not Recommended)", condition: platform === 'Mobile' || platform === 'Smart Watch' }, { hours: engagedHours, review: "\"".concat(genre, " elements gave me actual nightmares\" (Recommended)"), condition: genre === 'Horror' }, { hours: obsessedHours, review: "\"character customization so deep I forgot what I look like\" (Recommended)", condition: genre === 'RPG' }, { hours: normalHours, review: "\"multiplayer community makes me fear for humanity\" (Not Recommended)", condition: feature === 'Multiplayer' }, // Reviews for specific coherence/bug levels { hours: casualHours, review: "\"crashes so often I developed stockholm syndrome\" (Not Recommended)", condition: gameState.bugs > 7 }, { hours: obsessedHours, review: "\"glitches are my favorite feature\" (Recommended)", condition: gameState.bugs > 5 && gameState.codeCoherence < 60 }, { hours: noLifeHours, review: "\"perfectly stable, not a single issue\" (Recommended)", condition: gameState.bugs > 8 // Ironic review }, { hours: normalHours, review: "\"updates made it worse somehow\" (Not Recommended)", condition: gameState.codeCoherence < 50 }, // Special absurd combination reviews { hours: engagedHours, review: "\"".concat(platform, " ").concat(visual, " ").concat(genre, " changed gaming forever\" (Recommended)"), condition: platform === 'VR' && visual === 'ASCII' && genre === 'Horror' || platform === 'Smart Fridge' && visual === 'PowerPoint' && genre === 'Dating Sim' }, { hours: normalHours, review: "\"my ".concat(platform, " tried to ").concat(genre, " me in real life\" (Not Recommended)"), condition: platform === 'Smart Fridge' && genre === 'Horror' || platform === 'VR' && genre === 'Battle Royale' }, // Ultimate absurd reviews { hours: 0.1, review: "\"launched game, immediate blue screen, lost all photos\" (Not Recommended)", condition: gameState.bugs > 9 }, { hours: 9999.9, review: "\"it's ok i guess\" (Recommended)", condition: gameState.vibePoints > 90 }]; // Filter valid reviews and select 4-5 var validReviews = reviewPool.filter(function (r) { return r.condition; }); var numReviews = Math.min(Math.floor(Math.random() * 2) + 4, validReviews.length); // Shuffle the valid reviews for randomness var shuffledReviews = _toConsumableArray3(validReviews); for (var i = shuffledReviews.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var _ref2 = [shuffledReviews[j], shuffledReviews[i]]; shuffledReviews[i] = _ref2[0]; shuffledReviews[j] = _ref2[1]; } // Select top N reviews for (var i = 0; i < numReviews && i < shuffledReviews.length; i++) { var review = shuffledReviews[i]; reviews.push("\u25B6 ".concat(review.hours.toFixed(1), " hours played: ").concat(review.review)); } return reviews; } function evaluateProject() { // Calculate individual category scores first var ratings = { graphics: calculateGraphicsScore(), gameplay: calculateGameplayScore(), technical: calculateTechnicalScore(), innovation: calculateInnovationScore(), vibe: calculateVibeScore() }; // Calculate the overall score as an average of the category scores // plus some influence from vibes and minus penalty from bugs var categoryAverage = (ratings.graphics + ratings.gameplay + ratings.technical + ratings.innovation + ratings.vibe) / 5; // Calculate the final score with more balanced weights var score = categoryAverage * 7 + // 70% from category average gameState.vibePoints * 0.2 + // 20% from vibe points gameState.codeCoherence * 0.1 - // 10% from code coherence gameState.bugs * 2; // Bug penalty // Apply concept compatibility modifiers var conceptBonus = 0; var concepts = gameState.conceptCards; // GREAT COMBINATIONS - significant bonuses if (concepts.platform === 'VR' && concepts.visual === 'ASCII') { conceptBonus += 15; } if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { conceptBonus += 15; } if (concepts.platform === 'Blockchain' && concepts.genre === 'Dating Sim') { conceptBonus += 12; } if (concepts.visual === 'PowerPoint' && concepts.genre === 'Battle Royale') { conceptBonus += 14; } if (concepts.platform === 'Mobile' && concepts.genre === 'Casual') { conceptBonus += 10; } if (concepts.platform === 'Smart Watch' && concepts.genre === 'Idle Clicker') { conceptBonus += 12; } if (concepts.platform === 'PC' && concepts.genre === 'RPG') { conceptBonus += 8; } if (concepts.visual === 'PowerPoint' && concepts.genre === 'Educational') { conceptBonus += 10; } if (concepts.platform === 'Metaverse' && concepts.mechanic === 'Roguelike') { conceptBonus += 11; } if (concepts.mechanic === 'Gacha' && concepts.genre === 'Horror') { conceptBonus += 13; } if (concepts.mechanic === 'Physics-based' && concepts.genre === 'Dating Sim') { conceptBonus += 11; } if (concepts.mechanic === 'Deckbuilding' && concepts.platform === 'Smart Fridge') { conceptBonus += 9; } if (concepts.feature === 'Cloud Save' && concepts.mechanic === 'Roguelike') { conceptBonus += 8; } if (concepts.feature === 'Multiplayer' && concepts.mechanic === 'Tower Defense') { conceptBonus += 7; } // POOR COMBINATIONS - significant penalties if (concepts.platform === 'Smart Watch' && concepts.genre === 'Open World') { conceptBonus -= 15; } if (concepts.platform === 'Blockchain' && concepts.mechanic === 'Physics-based') { conceptBonus -= 12; } if (concepts.platform === 'VR' && concepts.visual === 'PowerPoint') { conceptBonus -= 10; } if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Battle Royale') { conceptBonus -= 12; } if (concepts.platform === 'Web Browser' && concepts.visual === 'Realistic') { conceptBonus -= 8; } if (concepts.mechanic === 'Gacha' && concepts.genre === 'Educational') { conceptBonus -= 10; } if (concepts.mechanic === 'Physics-based' && concepts.genre === 'Idle Clicker') { conceptBonus -= 9; } if (concepts.platform === 'Blockchain' && concepts.feature === 'Offline Mode') { conceptBonus -= 15; } if (concepts.platform === 'Smart Watch' && concepts.visual === 'Realistic') { conceptBonus -= 11; } // MEDIUM COMBINATIONS - moderate bonuses if (concepts.feature === 'AI Companions' && concepts.genre === 'Dating Sim') { conceptBonus += 6; } if (concepts.feature === 'Procedural Generation' && concepts.genre === 'Roguelike') { conceptBonus += 5; } if (concepts.visual === 'Claymation' && concepts.genre === 'Horror') { conceptBonus += 7; } if (concepts.visual === 'Hand-drawn' && concepts.genre === 'Dating Sim') { conceptBonus += 6; } if (concepts.visual === 'Pixel Art' && concepts.genre === 'RPG') { conceptBonus += 4; } // Special case: Feature unlocks add bonus conceptBonus += gameState.discoveredFeatures.length * 3; // Unique innovations - if player has a totally unique combo that's not bad // Check if we have a rare platform (Smart Fridge, Smart Watch) if ((concepts.platform === 'Smart Fridge' || concepts.platform === 'Smart Watch') && conceptBonus > -5) { // Only give bonus if not terrible combo conceptBonus += 5; } // Check if we have an unusual visual style (ASCII, PowerPoint) if ((concepts.visual === 'ASCII' || concepts.visual === 'PowerPoint') && conceptBonus > -5) { // Only give bonus if not terrible combo conceptBonus += 5; } // Apply the concept bonus/penalty score += conceptBonus; // Ensure score is between 1-100 and round to nearest integer var finalScore = Math.round(Math.min(100, Math.max(1, score))); // Show final message in terminal addToTerminalLogWithEffect("PROJECT COMPLETE!\nFINAL SCORE: " + finalScore + "/100", function () { // Update progress BEFORE showing review updateProgress(); // Then show the review in new window showGameReview(finalScore); }); } // Placeholder for missing function function reformatReview(reviewText) { // Basic implementation: Just return the original text, maybe add some line breaks return reviewText.replace(/\n\n/g, '\n'); } function showGameReview(score) { var reviewContainer = null; var contentContainer = null; var previousBusyState = false; try { // Store current game state previousBusyState = gameState.isBusy; // Set game to busy state to disable command buttons gameState.isBusy = true; updateCommandButtonsState(false); // Generate review text first var reviewText = generateReview(score); // Create container reviewContainer = new Container(); reviewContainer.x = 2048 / 2; reviewContainer.y = 2732 / 2; game.addChild(reviewContainer); // Create background with larger dimensions var bg = LK.getAsset('reviewBg', { width: 1800, height: 2200, anchorX: 0.5, anchorY: 0.5 }); reviewContainer.addChild(bg); // Create scroll container contentContainer = new Container(); contentContainer.x = -850; // Adjust left edge position (-1800/2 + 50 padding) contentContainer.y = -1050; // Adjust top edge position (-2200/2 + 50 padding) reviewContainer.addChild(contentContainer); // Split the review text by sections for formatting var sections = splitReviewIntoSections(reviewText); // Track vertical position as we add text sections var currentY = 0; var padding = 20; // Process each section with appropriate formatting sections.forEach(function (section, index) { var textObj; var textOptions = { fill: 0x000000, align: 'left', wordWrap: true, wordWrapWidth: 1700 // Width of content area (1800 - 100 padding) }; // Apply specific formatting based on section type if (section.type === 'title') { // Skip the title section that contains the concept words return; } else if (section.type === 'gameName') { textOptions.size = 64 * TEXT_SIZE_MULTIPLIER; textOptions.fill = 0x000000; // Black color for game name textOptions.align = 'center'; textOptions.wordWrapWidth = 1500; } else if (section.type === 'source') { textOptions.size = 36 * TEXT_SIZE_MULTIPLIER; textOptions.align = 'center'; textOptions.wordWrapWidth = 1500; } else if (section.type === 'categoryHeading') { textOptions.size = 42 * TEXT_SIZE_MULTIPLIER; textOptions.fontWeight = 'bold'; } else if (section.type === 'sectionHeading') { textOptions.size = 48 * TEXT_SIZE_MULTIPLIER; textOptions.fontWeight = 'bold'; } else if (section.type === 'userReview') { textOptions.size = 30 * TEXT_SIZE_MULTIPLIER; textOptions.fontStyle = 'italic'; // Add spacing before user reviews if it's the first user review if (index > 0 && sections[index - 1].type !== 'userReview' && sections[index - 1].type !== 'sectionHeading') { currentY += padding * 2; // Double the regular padding between sections } } else if (section.type === 'steamReview') { textOptions.size = 28 * TEXT_SIZE_MULTIPLIER; textOptions.fill = 0x333333; // Add spacing before steam reviews if it's the first steam review if (index > 0 && sections[index - 1].type !== 'steamReview' && sections[index - 1].type !== 'sectionHeading') { currentY += padding * 2; // Double the regular padding between sections } } else if (section.type === 'features' || section.type === 'achievements') { textOptions.size = 34 * TEXT_SIZE_MULTIPLIER; } else { // Regular paragraph text textOptions.size = 32 * TEXT_SIZE_MULTIPLIER; } // Create the text object with the determined styling textObj = new Text2(section.text, textOptions); // Position text based on its type if (section.type === 'gameName' || section.type === 'source') { textObj.x = 850; // Center within the container (1700/2) textObj.anchor.set(0.5, 0); } else { textObj.x = 0; } textObj.y = currentY; contentContainer.addChild(textObj); // Update position for next text element with appropriate spacing currentY += textObj.height + padding; }); // Create black mask at the bottom AFTER adding content container var distanceToBottom = 2732 - (reviewContainer.y + 1100); var bottomMask = LK.getAsset('overlayBg', { width: 1800, height: Math.max(100, distanceToBottom), anchorX: 0.5, anchorY: 0, y: 1100 }); reviewContainer.addChild(bottomMask); // Custom button creation function var createReviewButton = function createReviewButton(text, callback) { var button = new Container(); var buttonWidth = calculateButtonWidth(text) * 1.5; var bg = LK.getAsset('buttonBg', { width: buttonWidth, height: 150, color: 0x333333 }); bg.anchor.set(0.5, 0.5); button.addChild(bg); var textObj = new Text2(text, { size: 40 * TEXT_SIZE_MULTIPLIER, fill: 0x00ff00 }); textObj.anchor.set(0.5, 0.5); button.addChild(textObj); button.interactive = true; button.down = function () { button.scale.set(0.95); }; button.up = function () { button.scale.set(1); if (callback) { callback(); } }; button.width = buttonWidth; button.height = 150; return button; }; // Close button var closeButton = createReviewButton("CLOSE REVIEW", function () { game.removeChild(reviewContainer); // Instead of restoring previous busy state, keep it busy gameState.isBusy = true; updateCommandButtonsState(false); // Show thank you message addToTerminalLogWithEffect("Thank you for playing VIBE CODER!", function () { addToTerminalLogWithEffect("Your game has shipped to the world.", function () { addToTerminalLogWithEffect("Please play again soon!", function () { // Add a small delay before showing the win screen LK.setTimeout(function () { LK.showYouWin(); }, 2000); }); }); }); }); closeButton.x = 900 - closeButton.width / 2; closeButton.y = -1100 - closeButton.height / 2 - 10; reviewContainer.addChild(closeButton); // Up button var upButton = createReviewButton("UP", function () { if (contentContainer && contentContainer.y < -1050) { contentContainer.y = Math.min(-1050, contentContainer.y + 200); } }); upButton.x = -900 + upButton.width / 2; upButton.y = 1100 + upButton.height / 2 + 10; reviewContainer.addChild(upButton); // Down button var downButton = createReviewButton("DOWN", function () { if (contentContainer) { var visibleHeight = 2200 - 100 - 150 - 20; // Height of the review bg minus padding and button height if (contentContainer.height > visibleHeight) { var maxScrollY = -(contentContainer.height - visibleHeight) - 1050; // Calculate maximum downward scroll based on content height and initial position contentContainer.y = Math.max(maxScrollY, contentContainer.y - 200); } } }); downButton.x = 900 - downButton.width / 2; downButton.y = 1100 + downButton.height / 2 + 10; reviewContainer.addChild(downButton); } catch (e) { console.log("Error in showGameReview: " + e.message); if (reviewContainer && reviewContainer.parent) { game.removeChild(reviewContainer); } // Make sure to reset busy state if there's an error gameState.isBusy = previousBusyState; updateCommandButtonsState(!previousBusyState); } } // Helper function to create formatted text based on section type function createFormattedText(text, type) { var options = { size: 28 * TEXT_SIZE_MULTIPLIER, fill: 0x000000, align: 'left', wordWrap: true, wordWrapWidth: 1600 }; // Adjust formatting based on type switch (type) { case 'title': options.size = 52 * TEXT_SIZE_MULTIPLIER; options.align = 'center'; break; case 'gameName': // New type for game name options.size = 64 * TEXT_SIZE_MULTIPLIER; // Make it the largest text options.align = 'center'; options.fill = 0x0000FF; // Blue color to make it stand out options.fontWeight = 'bold'; break; case 'subtitle': options.size = 40 * TEXT_SIZE_MULTIPLIER; options.align = 'center'; break; case 'section': options.size = 36 * TEXT_SIZE_MULTIPLIER; options.fontWeight = 'bold'; break; case 'category': options.size = 34 * TEXT_SIZE_MULTIPLIER; break; } return new Text2(text, options); } function splitReviewIntoSections(reviewText) { var lines = reviewText.split('\n'); var sections = []; var currentSection = null; for (var i = 0; i < lines.length; i++) { var line = lines[i].trim(); // Skip empty lines if (line === '') { continue; } // Determine section type based on content var sectionType = 'paragraph'; if (i === 0) { // First line contains concept words - identify as title sectionType = 'title'; } else if (line.startsWith('GAME: ')) { // Game name is the actual title we want to display prominently sectionType = 'gameName'; line = line.substring(6); // Remove the "GAME: " prefix } else if (line.match(/^Game Concept:/)) { sectionType = 'concept'; } else if (line.match(/^[A-Za-z]+ Review - \d+%$/)) { sectionType = 'source'; } else if (line.match(/^(Graphics|Gameplay|Technical Performance|Innovation|Vibe Factor): \d+\/10$/)) { sectionType = 'categoryHeading'; } else if (line === 'Final Thoughts' || line === 'Notable Features' || line === 'Notable Achievements') { sectionType = 'sectionHeading'; } else if (line.startsWith('"') && line.includes('" - ')) { sectionType = 'userReview'; } else if (line.startsWith('▶')) { sectionType = 'steamReview'; } else if (line.startsWith('r/gaming hot takes:')) { sectionType = 'sectionHeading'; // Make Reddit reviews header a section heading } else if (line.startsWith('"') && line.includes('u/')) { sectionType = 'redditReview'; // New type for Reddit reviews } else if (line === '"AI slop."') { sectionType = 'redditReview'; // Special case for "AI slop" comments } else if (line.startsWith('- ')) { // Check previous sections to determine if this is a feature or achievement var prevSectionType = currentSection ? currentSection.type : ''; if (prevSectionType === 'sectionHeading' && sections[sections.length - 1].text === 'Notable Features') { sectionType = 'features'; } else if (prevSectionType === 'sectionHeading' && sections[sections.length - 1].text === 'Notable Achievements') { sectionType = 'achievements'; } else if (prevSectionType === 'features' || prevSectionType === 'achievements') { sectionType = prevSectionType; // Continue with previous type for bullet points } } // If this is a new section type or first line, start a new section if (!currentSection || sectionType !== currentSection.type) { if (currentSection) { sections.push(currentSection); } currentSection = { type: sectionType, text: line }; } else { // Continue the current section currentSection.text += '\n' + line; } } // Add the last section if exists if (currentSection) { sections.push(currentSection); } return sections; } // Helper function to calculate button width function calculateButtonWidth(text) { var minWidth = 400; // Minimum button width var charWidth = 15 * TEXT_SIZE_MULTIPLIER; // Width per character var calculatedWidth = text.length * charWidth; return Math.max(minWidth, calculatedWidth + 80); // Add padding } /**** * Game Flow ****/ function createASCIIBug() { // Different ASCII bug designs with varying complexity var bugDesigns = ["🐛", // Simple bug emoji "/\\oo/\\", // Spider-like bug ",-.,.-,", // Centipede-like bug ">8(", // Beetle-like bug "x:*:x", // Abstract bug "6\\9" // Quirky bug ]; // Randomly select a bug design var design = bugDesigns[Math.floor(Math.random() * bugDesigns.length)]; // Create a container for the bug var bugContainer = new Container(); var bugText = new Text2(design, { size: 60 * TEXT_SIZE_MULTIPLIER, fill: 0xFF0000 // Red for visibility }); bugContainer.isBeingHandled = false; bugText.anchor.set(0.5, 0.5); bugContainer.addChild(bugText); // Add physics for movement bugContainer.velocityX = (Math.random() * 2 - 1) * 8; // Random initial direction bugContainer.velocityY = (Math.random() * 2 - 1) * 8; bugContainer.speed = 2 + Math.random() * 3; // Base speed varied slightly bugContainer.escapeTimer = 500; // Countdown until bug escapes (gets faster over time) // Make interactive for clicking/tapping bugContainer.interactive = true; bugContainer.down = function () { //Prevent double-squishing by checking flag first if (bugContainer.squished || bugContainer.isBeingHandled) { return; } console.log("Bug squished!"); // Bug squished! bugContainer.squished = true; bugContainer.isBeingHandled = true; // Stop movement immediately bugContainer.velocityX = 0; bugContainer.velocityY = 0; bugContainer.speed = 0; // Visual squish effect bugText.setText("*splat*"); LK.getSound('bugsquish').play(); bugText.fill = 0x00FF00; // Turn green when squished // CRITICAL FIX: Immediately reduce bug count, not in timeout gameState.bugs = Math.max(0, gameState.bugs - 1); // Remove after brief delay LK.setTimeout(function () { if (bugContainer.parent) { bugContainer.parent.removeChild(bugContainer); } // Just update terminal with new count, don't modify count again addToTerminalLogWithEffect("Bug successfully squashed! Bugs remaining: " + gameState.bugs); updateTerminal(); // If this is a party bug, check if party is complete if (gameState.activeBugParty) { checkBugPartyComplete(); } }, 800); }; // Position randomly on screen with some padding from edges bugContainer.x = 100 + Math.random() * (2048 - 200); bugContainer.y = 100 + Math.random() * (2732 - 200); // Update function for animation // In the createASCIIBug() function, modify the update function: bugContainer.update = function (deltaTime) { // If already squished, don't do any movement or timer updates if (bugContainer.squished || bugContainer.isBeingHandled) { return; } // Move according to velocity bugContainer.x += bugContainer.velocityX * bugContainer.speed; bugContainer.y += bugContainer.velocityY * bugContainer.speed; // Bounce off edges if (bugContainer.x < 50 || bugContainer.x > 2048 - 50) { bugContainer.velocityX *= -1; // Speed up slightly on each bounce bugContainer.speed *= 1.1; } if (bugContainer.y < 50 || bugContainer.y > 2732 - 50) { bugContainer.velocityY *= -1; // Speed up slightly on each bounce bugContainer.speed *= 1.1; } // Randomly change direction occasionally if (Math.random() < 0.02) { bugContainer.velocityX = (Math.random() * 2 - 1) * 4; bugContainer.velocityY = (Math.random() * 2 - 1) * 4; } // Decrease escape timer bugContainer.escapeTimer--; // Speed up as escape timer decreases bugContainer.speed = 2 + bugContainer.escapeTimer / 500 * 1; // If timer runs out, bug escapes if (bugContainer.escapeTimer <= 0 && !bugContainer.squished) { // Escape animation bugContainer.isBeingHandled = true; bugText.fill = 0xCCCCCC; // Fade to gray as it escapes bugText.setText(">>>"); // Show it zooming away // Remove after brief delay LK.setTimeout(function () { if (bugContainer.parent) { bugContainer.parent.removeChild(bugContainer); } // Bug got away - add a message addToTerminalLogWithEffect("WARNING: Bug escaped! System stability decreased."); // Maybe add a small code coherence penalty gameState.codeCoherence = Math.max(0, gameState.codeCoherence - 3); updateTerminal(); }, 800); // Disable update to prevent further timer checks bugContainer.update = null; } }; return bugContainer; } function enterHallucinationState() { if (gameState.hallucinationMode) { updateTerminal(); gameState.isBusy = false; updateCommandButtonsState(true); if (gameState.onHallucinationComplete) { var callback = gameState.onHallucinationComplete; gameState.onHallucinationComplete = null; callback(); } return; } gameState.hallucinationMode = true; var wasBusy = gameState.isBusy; gameState.isBusy = true; updateCommandButtonsState(false); applyHallucinationVisuals(); addToTerminalLogWithEffect("WaRnInG: SyStEm EnTeRiNg HaLlUcInAtIoN mOdE", function () { LK.setTimeout(function () { addToTerminalLogWithEffect("Ai TaKiNg OvEr CoNcEpT sElEcTiOnS", function () { LK.setTimeout(function () { addToTerminalLogWithEffect("ReAlItY cOhErEnCe CoMpRoMiSeD", function () { gameState.codeCoherence = 5; updateTerminal(); LK.setTimeout(function () { // Check if we're at command limit - if so, don't generate commands if (gameState.commandsUsed >= gameState.maxCommandsPerDay) { gameState.isBusy = false; updateCommandButtonsState(true); createCommandPrompts(); // Just update button states } else if (gameState.currentCommands === null) { // Day end path gameState.isBusy = false; if (gameState.onHallucinationComplete) { var callback = gameState.onHallucinationComplete; gameState.onHallucinationComplete = null; callback(); } } else { // Normal gameplay path gameState.isBusy = false; updateCommandButtonsState(true); // Don't generate new commands if we already have some if (!gameState.currentCommands) { gameState.currentCommands = getCurrentCommands(); } createCommandPrompts(); // Execute callback after prompts created if (gameState.onHallucinationComplete) { var callback = gameState.onHallucinationComplete; gameState.onHallucinationComplete = null; callback(); } } }, 300); }); }, 500); }); }, 500); }); } function applyHallucinationVisuals() { // Change terminal colors for hallucination mode if (gameState.logText) { gameState.logText.fill = 0xff00ff; // Magenta text } // Change status line color if (gameState.statusLineText) { gameState.statusLineText.fill = 0xff00ff; } // Change cursor color if (gameState.cursor) { gameState.cursor.fill = 0xff00ff; } } // In the showConceptSelection function, add a parameter for preserving vibes function showConceptSelection(category, preservedVibes) { // If in hallucination mode, automatically select a random concept if (gameState.hallucinationMode) { // Get random option var options = conceptOptions[category]; var randomOption = options[Math.floor(Math.random() * options.length)]; // Set the selection gameState.conceptCards[category] = randomOption; // Show selection message with glitchy text addToTerminalLogWithEffect("A̷I̷ S̷E̷L̷E̷C̷T̷E̷D̷ " + category.toUpperCase() + ": " + randomOption, function () { LK.setTimeout(function () { addToTerminalLogWithEffect("I̷N̷I̷T̷I̷A̷L̷I̷Z̷I̷N̷G̷ C̷O̷M̷M̷A̷N̷D̷ I̷N̷T̷E̷R̷F̷A̷C̷E̷...", function () { LK.setTimeout(function () { gameState.isBusy = false; gameState.currentCommands = getCurrentCommands(); createCommandPrompts(); updateCommandButtonsState(true); updateTerminal(); }, 500); }); }, 500); }); return; } // Original function continues below for non-hallucination mode // Create selection container var selectionContainer = new Container(); selectionContainer.x = 2048 / 2; selectionContainer.y = 2732 / 2; game.addChild(selectionContainer); // Create background var bg = LK.getAsset('terminalBg', { width: 1800, height: 1200, anchorX: 0.5, anchorY: 0.5 }); selectionContainer.addChild(bg); // Create title var title = new Text2("SELECT " + category.toUpperCase(), { size: 60 * TEXT_SIZE_MULTIPLIER, // Increased from 40 fill: 0x00ff00 }); title.anchor.set(0.5, 0); title.y = -500; selectionContainer.addChild(title); // Get and display options var options = conceptOptions[category].slice(); // Use slice to avoid modifying the original array var selectedOptions = []; while (selectedOptions.length < 3 && options.length > 0) { var index = Math.floor(Math.random() * options.length); selectedOptions.push(options[index]); options.splice(index, 1); // Remove selected option from the copy } // Define the text size for concept buttons specifically var conceptButtonTextSize = 45 * TEXT_SIZE_MULTIPLIER; selectedOptions.forEach(function (option, index) { var buttonText = ">" + option; // Calculate button width with adjustment for larger text // Modify the width calculation to account for the larger font size var charWidth = 20 * TEXT_SIZE_MULTIPLIER; // Increased from 15 var calculatedWidth = buttonText.length * charWidth; var minWidth = 600; // Increased minimum width var buttonWidth = Math.max(minWidth, calculatedWidth + 120); // More padding // Create button with the calculated width var button = new Container(); // Create background with calculated width var bg = LK.getAsset('buttonBg', { width: buttonWidth, height: 150, // Height increased from 100 to 150 color: 0x333333 }); bg.anchor.set(0.5, 0.5); button.addChild(bg); // Create text with larger size var textObj = new Text2(buttonText, { size: conceptButtonTextSize, // Use the defined larger text size fill: 0x00ff00 }); textObj.anchor.set(0.5, 0.5); button.addChild(textObj); // Set interactivity button.interactive = true; button.down = function () { button.scale.set(0.95); }; // Define the callback function separately for clarity var onSelect = function onSelect() { gameState.conceptCards[category] = option; game.removeChild(selectionContainer); // Preserve vibes immediately after selection if (preservedVibes !== undefined) { gameState.vibePoints = preservedVibes; } // Sequence the post-selection events addToTerminalLogWithEffect("SELECTED " + category.toUpperCase() + ": " + option, function () { // Preserve vibes again after adding text if (preservedVibes !== undefined) { gameState.vibePoints = preservedVibes; } LK.setTimeout(function () { addToTerminalLogWithEffect("INITIALIZING COMMAND INTERFACE...", function () { // Preserve vibes again if (preservedVibes !== undefined) { gameState.vibePoints = preservedVibes; } LK.setTimeout(function () { // Set busy to false BEFORE creating commands gameState.isBusy = false; // Generate commands ONLY at this point (after initialization text) gameState.currentCommands = getCurrentCommands(); createCommandPrompts(); // Create commands only after initialization text updateCommandButtonsState(true); // Explicitly update button states updateTerminal(); // Update terminal *after* prompts are created // Final vibes preservation if (preservedVibes !== undefined) { gameState.vibePoints = preservedVibes; } }, 500); }); }, 500); }); }; button.up = function () { button.scale.set(1); LK.getSound('conceptbutton').play(); // Play concept button sound onSelect(); // Call the previously defined callback logic }; button.x = 0; // Keep x centered relative to container button.y = -200 + index * 200; // Increased spacing from 150 to 200 selectionContainer.addChild(button); }); } // Updated button creation with more precise width handling and busy state check function createCommandButton(text, callback, width) { var button = new Container(); // Only check for maintenance commands if it's in the main game (not title screen) // and matches a maintenance command exactly var isMaintenance = gameState.state === STATES.PLAYING && maintenanceCommands.some(function (cmd) { return ">" + cmd.text === text; }); // Only add background for game commands (not START or title screen buttons) if (gameState.state === STATES.PLAYING) { var bg = LK.getAsset('buttonBg', { width: width || 400, height: 100, color: isMaintenance ? 0x001133 : 0x333333 }); bg.anchor.set(0.5, 0.5); button.addChild(bg); } // Add text var textObj = new Text2(text, { size: 30 * TEXT_SIZE_MULTIPLIER, fill: isMaintenance ? 0x00ffff : 0x00ff00 }); textObj.anchor.set(0.5, 0.5); button.addChild(textObj); // Make interactive button.interactive = true; button.down = function () { // Check if game is busy (for in-game buttons only, excluding END DAY) if (gameState.state === STATES.PLAYING && gameState.isBusy && text !== "END DAY") { return; // Don't respond to click if busy } button.scale.set(0.95); }; button.up = function () { // Check if game is busy (for in-game buttons only, excluding END DAY) if (gameState.state === STATES.PLAYING && gameState.isBusy && text !== "END DAY") { // Restore scale even if busy, but don't trigger callback button.scale.set(1); return; } button.scale.set(1); if (callback) { callback(); } }; return button; } // Launch sequence functions function showLaunchScreen() { // Black overlay var overlay = LK.getAsset('overlayBg', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); game.addChild(overlay); // Create a container for the text var bootTextContainer = new Container(); bootTextContainer.x = 2048 / 2; bootTextContainer.y = 2732 / 2; game.addChild(bootTextContainer); // Initial boot message var bootMessages = ["BOOTING VIBE CODER OS v1.0..."]; // Find the longest possible message in advance to set container width var allPossibleMessages = ["BOOTING VIBE CODER OS v1.0...", "INITIALIZING TERMINAL...", "LOADING VIBE DATABASE...", "CONNECTING TO AI SUBSYSTEMS...", "READY!"]; // Determine the widest text to pre-calculate offsets var tempText = new Text2("", { size: 40 * TEXT_SIZE_MULTIPLIER, fill: 0x00ff00 }); var maxWidth = 0; for (var i = 0; i < allPossibleMessages.length; i++) { tempText.setText(allPossibleMessages[i]); maxWidth = Math.max(maxWidth, tempText.width); } // Function to update the boot text function updateBootText() { // Clear previous text while (bootTextContainer.children.length > 0) { bootTextContainer.removeChild(bootTextContainer.children[0]); } // Create new text objects, one per line for (var i = 0; i < bootMessages.length; i++) { var lineText = new Text2(bootMessages[i], { size: 40 * TEXT_SIZE_MULTIPLIER, fill: 0x00ff00, align: 'left' }); // Center horizontally by setting X position to half the max width lineText.x = -maxWidth / 2; // Position vertically with appropriate line spacing lineText.y = (i - bootMessages.length / 2) * 60 * TEXT_SIZE_MULTIPLIER + 30 * TEXT_SIZE_MULTIPLIER; bootTextContainer.addChild(lineText); } } // Initial render updateBootText(); // Boot sequence LK.setTimeout(function () { bootMessages.push("INITIALIZING TERMINAL..."); updateBootText(); LK.setTimeout(function () { bootMessages.push("LOADING VIBE DATABASE..."); updateBootText(); LK.setTimeout(function () { bootMessages.push("CONNECTING TO AI SUBSYSTEMS..."); updateBootText(); LK.setTimeout(function () { bootMessages.push("READY!"); updateBootText(); LK.setTimeout(function () { // Fade out tween(overlay, { alpha: 0 }, { duration: 500, onFinish: function onFinish() { game.removeChild(overlay); game.removeChild(bootTextContainer); showTitleScreen(); } }); }, 800); }, 800); }, 800); }, 800); }, 800); } function showTitleScreen() { // Clear screen while (game.children.length > 0) { game.removeChild(game.children[0]); } // Set state gameState.state = STATES.TITLE; // Create background var background = LK.getAsset('overlayBg', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); game.addChild(background); // Create title var title = new Text2("VIBE CODER", { size: 120 * TEXT_SIZE_MULTIPLIER, fill: 0x00ff00 }); title.anchor.set(0.5, 0.5); title.x = 2048 / 2; title.y = 800; game.addChild(title); // Create subtitle var subtitle = new Text2("The AI Coding Simulator", { size: 60 * TEXT_SIZE_MULTIPLIER, fill: 0x00ff00 }); subtitle.anchor.set(0.5, 0.5); subtitle.x = 2048 / 2; subtitle.y = 1000; game.addChild(subtitle); // Add startButtonPressed flag var startButtonPressed = false; // Create start button - twice as large var startButton = createCommandButton(">START", function () { // Check if button has already been pressed if (startButtonPressed) { return; // Exit the function if button was already pressed } // Set flag to true to prevent multiple clicks startButtonPressed = true; LK.getSound('startsound').play(); initGameWithIntro(); }); startButton.scale.set(2); // Make the button twice as large // Override the down handler for this specific button var originalDown = startButton.down; startButton.down = function () { // Instead of scaling to 0.95, scale to current scale * 0.95 (which would be 1.9) this.scale.set(this.scale.x * 0.95, this.scale.y * 0.95); }; // Similarly, we should override the up handler to restore to scale 2 var originalUp = startButton.up; startButton.up = function () { this.scale.set(2); // Restore to full size // Call the original callback if (originalUp) { originalUp.call(this); } }; startButton.x = 2048 / 2; startButton.y = 1400; game.addChild(startButton); } function initGameWithIntro() { // Clear screen with fade effect var fadeOverlay = LK.getAsset('overlayBg', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, alpha: 0 }); game.addChild(fadeOverlay); // Fade to black tween(fadeOverlay, { alpha: 1 }, { duration: 500, onFinish: function onFinish() { // Clear screen and init game state while (game.children.length > 0) { game.removeChild(game.children[0]); } initGame(); // Fade from black fadeOverlay.alpha = 1; game.addChild(fadeOverlay); tween(fadeOverlay, { alpha: 0 }, { duration: 500, onFinish: function onFinish() { game.removeChild(fadeOverlay); } }); } }); } // Helper function to calculate button width based on text length function processEndDaySequence() { gameState.day++; // Create a message queue to ensure proper sequence var messageQueue = []; // Add day initialization message messageQueue.push({ text: "DAY " + gameState.day + " INITIALIZED", type: "normal" }); // Add overnight degradation message if needed if (gameState.bugs > 0) { // Remove coherence loss from bugs - keeping only the warning message messageQueue.push({ text: "WARNING: " + gameState.bugs + " bug" + (gameState.bugs > 1 ? 's' : '') + " in system", type: "normal" }); } // Check if we need to enter hallucination mode var needsHallucination = gameState.codeCoherence <= 0 || gameState.bugs >= 10; var conceptDays = { 1: 'platform', 3: 'visual', 5: 'genre', 7: 'mechanic', 9: 'feature' }; var isConceptDay = !!conceptDays[gameState.day]; // Process message queue sequentially function processNextMessage() { if (messageQueue.length === 0) { // All messages processed, now handle game state handlePostMessageSetup(); return; } var message = messageQueue.shift(); addToTerminalLogWithEffect(message.text, function () { LK.setTimeout(processNextMessage, 200); // Small delay between messages }); } // Start processing messages processNextMessage(); // Handle setup after all messages are complete function handlePostMessageSetup() { updateTerminal(); // Clear any existing command prompts if (gameState.promptContainer) { game.removeChild(gameState.promptContainer); gameState.promptContainer = null; } if (needsHallucination) { gameState.isBusy = true; // Set up callback for when hallucination processing completes gameState.onHallucinationComplete = function () { if (isConceptDay) { showConceptSelection(conceptDays[gameState.day]); } else { gameState.currentCommands = getCurrentCommands(); createCommandPrompts(); updateCommandButtonsState(true); } }; // If already in hallucination mode, add deepening message if (gameState.hallucinationMode) { addToTerminalLogWithEffect("H̷a̷L̷l̷U̷c̷I̷n̷A̷t̷I̷o̷N̷ D̷e̷E̷p̷E̷n̷I̷n̷G̷...", function () { enterHallucinationState(); }); } else { LK.setTimeout(function () { enterHallucinationState(); }, 500); } } else if (isConceptDay) { gameState.isBusy = true; gameState.currentCommands = null; LK.setTimeout(function () { showConceptSelection(conceptDays[gameState.day]); }, 500); } else { // Explicitly generate new commands regardless of hallucination mode // for the new day gameState.currentCommands = getCurrentCommands(); createCommandPrompts(); checkGameState(); } } } function endDay() { // FORCE clear any stuck state gameState.isBusy = false; // Check if game is over if (gameState.day >= gameState.maxDays) { gameState.isBusy = false; evaluateProject(); return; } // Reset for new day gameState.commandsUsed = 0; gameState.terminal.log = []; gameState.cursorTracking.lineCount = 0; // Process the day transition with proper message sequencing processEndDaySequence(); } function checkGameState() { // Check if we need hallucination mode var needsHallucination = !gameState.hallucinationMode && (gameState.bugs >= 10 || gameState.codeCoherence <= 0); // Handle daily command limit if (gameState.commandsUsed >= gameState.maxCommandsPerDay) { var hasShownLimitMessage = gameState.terminal.log.some(function (entry) { return entry && entry.includes("Daily command limit reached"); }); if (!hasShownLimitMessage) { gameState.isBusy = true; addToTerminalLogWithEffect("NOTICE: Daily command limit reached. END DAY to continue.", function () { gameState.isBusy = false; createCommandPrompts(); // After showing the limit message, check if we also need hallucination if (needsHallucination) { enterHallucinationState(); } }); } else { // Message already shown gameState.isBusy = false; createCommandPrompts(); // Also check if we need hallucination if (needsHallucination) { enterHallucinationState(); } } } else if (needsHallucination) { // Only enter hallucination if we haven't hit the daily limit gameState.onHallucinationComplete = function () { gameState.currentCommands = getCurrentCommands(); createCommandPrompts(); updateCommandButtonsState(true); }; enterHallucinationState(); } } function gameOver(message) { // Instead of ending the game, just show the message and continue addToTerminalLogWithEffect(message); // If we're at the end of the game (day > maxDays), show the review if (gameState.day > gameState.maxDays) { addToTerminalLogWithEffect("\n>PRESS ANY KEY TO RESTART"); // Simple click anywhere to restart var overlay = new Container(); overlay.width = 2048; overlay.height = 2732; overlay.interactive = true; overlay.down = initGame; game.addChild(overlay); } else { // Otherwise, continue in hallucination mode if (!gameState.hallucinationMode) { enterHallucinationState(); } } } function initGame() { // Reset game state gameState = { state: STATES.PLAYING, day: 1, maxDays: 10, vibePoints: 0, codeCoherence: 100, bugs: 0, commandsUsed: 0, maxCommandsPerDay: 3, terminal: { log: [], statusLine: "", currentTask: "", featureTags: [] }, conceptCards: { platform: null, visual: null, genre: null, mechanic: null, feature: null }, cursorTracking: { lineCount: 0 // Reset line counter when starting new game }, currentCommands: null, // Track available commands hallucinationMode: false, // Reset hallucination mode discoveredFeatures: [], featureStories: [], featureUnlockMessages: [], activeBugParty: false, onHallucinationComplete: null, // New VIBE BOOST variables vibeBoostCost: 5, // Initial cost vibeBoostUses: 0, // Track number of uses to increase cost vibeBoostActive: false // Flag to prevent multiple boosts at once }; game.activeBugPartyBugs = []; createTerminal(); // Sequence the initial text LK.setTimeout(function () { addToTerminalLogWithEffect("VIBE CODER OS v1.0", function () { LK.setTimeout(function () { addToTerminalLogWithEffect("INITIALIZING NEW PROJECT...", function () { LK.setTimeout(function () { addToTerminalLogWithEffect("INITIALIZING VIBE SOUND SYSTEM...", function () { // Play a random vibe song when this message appears initMusicSystem(); LK.setTimeout(function () { addToTerminalLogWithEffect("SELECT PLATFORM TO BEGIN", function () { LK.setTimeout(function () { showConceptSelection('platform'); }, 500); }); }, 500); }); }, 500); }); }, 500); }); }, 500); } // Function to play a random vibe song function playRandomVibeSong() { // Get previously played song (if any) var previousSong = gameState.currentSong; // Store all song IDs and durations var songData = { vibebeat1: 226168, // ~3:46 vibebeat2: 199131, // ~3:19 vibebeat3: 173610, // ~2:53 vibebeat4: 209972, // ~3:30 vibebeat5: 180872, // ~3:00 vibebeat6: 192522, // ~3:12 vibebeat7: 213133, // ~3:33 vibebeat8: 220212 // ~3:40 }; // Get all song IDs var songIds = Object.keys(songData); // Filter out the previous song to avoid repetition var availableSongs = previousSong ? songIds.filter(function (id) { return id !== previousSong; }) : songIds; // Select a random song from available options var randomIndex = Math.floor(Math.random() * availableSongs.length); var songId = availableSongs[randomIndex]; // Store the current song ID gameState.currentSong = songId; // Play the selected song with fade-in and loop set to false LK.playMusic(songId, { loop: false, fade: { start: 0, end: 0.5, duration: 2000 // 2-second fade in } }); // Get the duration for the selected song var duration = songData[songId]; // Clear any existing timeout if (gameState.songChangeTimeout) { LK.clearTimeout(gameState.songChangeTimeout); } // Set timeout to play next song when this one ends // Subtract 500ms to start the next song slightly before current ends for smooth transition gameState.songChangeTimeout = LK.setTimeout(playRandomVibeSong, duration - 500); console.log("Now playing: " + songId + " for " + Math.floor(duration / 1000) + " seconds"); } // Initialize music system function initMusicSystem() { // Add necessary properties to gameState if they don't exist if (!gameState.currentSong) { gameState.currentSong = null; } if (!gameState.songChangeTimeout) { gameState.songChangeTimeout = null; } // Start the first song playRandomVibeSong(); } // Start with launch screen showLaunchScreen(); function generateUserReviews() { return generateUserReviewSet().join("\n"); } function generateSteamSnippets() { return generateSteamReviewSet().join("\n"); }
===================================================================
--- original.js
+++ change.js
@@ -18,10 +18,10 @@
/****
* Game Code
****/
-//resetGameProgress();
// Text size multiplier for readability
+//resetGameProgress();
function _typeof2(o) {
"@babel/helpers - typeof";
return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
@@ -6009,8 +6009,14 @@
} else if (line.startsWith('"') && line.includes('" - ')) {
sectionType = 'userReview';
} else if (line.startsWith('▶')) {
sectionType = 'steamReview';
+ } else if (line.startsWith('r/gaming hot takes:')) {
+ sectionType = 'sectionHeading'; // Make Reddit reviews header a section heading
+ } else if (line.startsWith('"') && line.includes('u/')) {
+ sectionType = 'redditReview'; // New type for Reddit reviews
+ } else if (line === '"AI slop."') {
+ sectionType = 'redditReview'; // Special case for "AI slop" comments
} else if (line.startsWith('- ')) {
// Check previous sections to determine if this is a feature or achievement
var prevSectionType = currentSection ? currentSection.type : '';
if (prevSectionType === 'sectionHeading' && sections[sections.length - 1].text === 'Notable Features') {
vibebeat1
Music
vibebeat2
Music
vibebeat3
Music
vibebeat4
Music
vibebeat5
Music
vibebeat6
Music
buttonsound
Sound effect
endday
Sound effect
startsound
Sound effect
bugsquish
Sound effect
conceptbutton
Sound effect
wheelstart
Sound effect
wheelspin
Sound effect
wheelstop
Sound effect
keytype
Sound effect