User prompt
update as needed with: // Mark system as busy gameState.isBusy = true; // Determine tier multipliers let tierMultipliers = {vibeMultiplier: 1, coherenceMultiplier: 1, bugChanceMultiplier: 1}; if (!command.isMaintenance) { // Don't apply multipliers to maintenance commands if (playerProgress.gamesCompleted <= 5) { tierMultipliers = commandTiers.novice; } else if (playerProgress.gamesCompleted <= 20) { tierMultipliers = commandTiers.intermediate; } else { tierMultipliers = commandTiers.expert; } } // Apply command effects with multipliers gameState.vibePoints = Math.max(0, gameState.vibePoints + (command.vibePoints * tierMultipliers.vibeMultiplier)); gameState.codeCoherence = Math.min(100, Math.max(0, gameState.codeCoherence - (command.coherenceImpact * tierMultipliers.coherenceMultiplier))); gameState.commandsUsed++;
User prompt
update as needed with: function executeCommand(command) { // Check if we can execute commands if (gameState.commandsUsed >= gameState.maxCommandsPerDay) { addToTerminalLogWithEffect("ERROR: Daily command limit reached"); return; } if (gameState.isBusy) { return; } // Mark system as busy gameState.isBusy = true; // Determine tier multipliers let tierMultipliers = {vibeMultiplier: 1, coherenceMultiplier: 1, bugChanceMultiplier: 1}; if (!command.isMaintenance) { // Don't apply multipliers to maintenance commands if (playerProgress.gamesCompleted <= 5) { tierMultipliers = commandTiers.novice; } else if (playerProgress.gamesCompleted <= 20) { tierMultipliers = commandTiers.intermediate; } else { tierMultipliers = commandTiers.expert; } } // Apply command effects with multipliers gameState.vibePoints = Math.max(0, gameState.vibePoints + (command.vibePoints * tierMultipliers.vibeMultiplier)); gameState.codeCoherence = Math.min(100, Math.max(0, gameState.codeCoherence - (command.coherenceImpact * tierMultipliers.coherenceMultiplier))); gameState.commandsUsed++; // Rest of executeCommand remains the same... // (feature handling, bug detection, response processing, etc.)
User prompt
update only as needed with: function executeCommand(command) { // Check if we can execute commands if (gameState.commandsUsed >= gameState.maxCommandsPerDay) { addToTerminalLogWithEffect("ERROR: Daily command limit reached"); return; } if (gameState.isBusy) { return; } // Mark system as busy gameState.isBusy = true; // Determine tier multipliers let tierMultipliers = {vibeMultiplier: 1, coherenceMultiplier: 1, bugChanceMultiplier: 1}; if (!command.isMaintenance) { // Don't apply multipliers to maintenance commands if (playerProgress.gamesCompleted <= 5) { tierMultipliers = commandTiers.novice; } else if (playerProgress.gamesCompleted <= 20) { tierMultipliers = commandTiers.intermediate; } else { tierMultipliers = commandTiers.expert; } } // Apply command effects with multipliers gameState.vibePoints = Math.max(0, gameState.vibePoints + (command.vibePoints * tierMultipliers.vibeMultiplier)); gameState.codeCoherence = Math.min(100, Math.max(0, gameState.codeCoherence - (command.coherenceImpact * tierMultipliers.coherenceMultiplier))); gameState.commandsUsed++;
User prompt
update as needed with: function getCurrentCommands() { var availableCommands = []; // Add 0-2 randomly selected maintenance commands var shuffledMaintenance = shuffleArray(maintenanceCommands.slice()); var numMaintenance = Math.min(2, shuffledMaintenance.length); availableCommands = availableCommands.concat(shuffledMaintenance.slice(0, numMaintenance)); // Determine tier based on games completed let currentTier; if (playerProgress.gamesCompleted <= 5) { currentTier = commandTiers.novice; } else if (playerProgress.gamesCompleted <= 20) { currentTier = commandTiers.intermediate; } else { currentTier = commandTiers.expert; } // Add commands from current tier availableCommands = availableCommands.concat(currentTier.commands); // Add platform-specific commands and features as before if (gameState.conceptCards.platform) { var platformCommands = commandSets['platform_' + gameState.conceptCards.platform.toLowerCase()]; if (platformCommands) { availableCommands = availableCommands.concat(platformCommands); } // Add platform-specific feature commands var platformFeatures = featureSystem.platforms[gameState.conceptCards.platform]; if (platformFeatures) { platformFeatures.features.forEach(function(feature) { if (!gameState.discoveredFeatures.includes(feature.name)) { availableCommands.push({ text: feature.prompt, feature: feature, vibePoints: 10, coherenceImpact: 15, bugChance: 0.3 }); } }); } } // Shuffle all commands and return 5 random ones return shuffleArray(availableCommands).slice(0, 5); }
Code edit (1 edits merged)
Please save this source code
User prompt
Update as needed with: function evaluateProject() { var score = gameState.vibePoints * 0.4 + Object.values(gameState.conceptCards).filter(Boolean).length * 10 + (10 - gameState.bugs) * 5 + gameState.codeCoherence * 0.2; // [... rest of score calculation code ...] var finalScore = Math.round(Math.min(100, Math.max(1, score))); addToTerminalLogWithEffect("PROJECT COMPLETE!\nFINAL SCORE: " + finalScore + "/100", function() { // Update progress BEFORE showing review updateProgress(); // Then show the review in new window showGameReview(finalScore); }); }
Code edit (1 edits merged)
Please save this source code
User prompt
Update with: // Add to game state var playerProgress = { gamesCompleted: Number(storage.gamesCompleted || 0) }; ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Replace with: function formatReview(review) { return review.title + "\n" + review.concept + "\n" + "### GameDevWeekly Review - " + review.mainScore + "%\n\n" + review.categoryReviews.graphics + "\n" + review.categoryReviews.gameplay + "\n" + review.categoryReviews.technical + "\n" + review.categoryReviews.innovation + "\n" + review.categoryReviews.vibe + "\n" + generateFeaturesSection() + // Add features section generateAchievementSection(review.mainScore) + // Add achievements section review.finalThoughts + "\n" + review.userReviews + "\n" + review.steamSnippets; }
Code edit (1 edits merged)
Please save this source code
User prompt
Replace with: function generateInnovationReview(score) { let review = `**Innovation: ${score}/10**\n`; const concepts = gameState.conceptCards; // Check for particularly innovative combinations - expanded with more specific observations if (concepts.platform === 'VR' && concepts.visual === 'ASCII') { review += "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."; } else if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { review += "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."; } else if (concepts.platform === 'Blockchain' && concepts.genre === 'Dating Sim') { review += "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."; } else if (concepts.visual === 'PowerPoint' && concepts.genre === 'Battle Royale') { review += "The fusion of presentation software with battle royale mechanics is unexpectedly genius. Nothing says 'victory royale' quite like a well-timed slide transition. The 'Boardroom Showdown' finale where the last players standing must deliver an elevator pitch to survive has created tense moments that business schools are now studying. Corporate aesthetic has never been so lethal."; } else if (concepts.platform === 'Smart Watch' && concepts.genre === 'Open World') { review += "Creating an expansive open world on a device smaller than a credit card demonstrates either incredible ambition or complete madness. The microscopic map that requires players to use a real-world magnifying glass has created the first gaming accessory that's simultaneously essential and ridiculous. The wrist-flick mechanics for mountain climbing have resulted in several unintentional smartwatch launches across living rooms."; } else if (concepts.platform === 'Metaverse' && concepts.mechanic === 'Roguelike') { review += "The combination of permanent death with persistent virtual real estate creates unprecedented tension in digital property ownership. Players have formed actual insurance collectives to protect their assets between runs. The mechanic where your failed character becomes an NPC in another player's world has created a digital afterlife economy that economists are struggling to model."; } // Special mechanic combinations - expanded if (concepts.mechanic === 'Gacha' && concepts.genre === 'Horror') { review += "The 'pay-to-escape' mechanic where you can spend real money to skip particularly scary sections is either predatory or genius. The 'Terror Pull' system that intentionally gives players nightmarish characters with higher drop rates has created the first gacha where getting what you want might be worse than missing out. Players report genuine anxiety before each pull, completely redefining the concept of 'fear to win.'"; } else if (concepts.mechanic === 'Physics-based' && concepts.genre === 'Dating Sim') { review += "The dating simulator that requires players to navigate physically realistic social interactions creates unprecedented romantic tension. Spilling a virtual coffee leads to genuine clothing stains, and the ragdoll kiss mechanics have birthed countless YouTube compilation videos. Romance has never been so awkwardly realistic."; } else if (concepts.mechanic === 'Deckbuilding' && concepts.platform === 'Smart Fridge') { review += "Using actual food items as collectible cards brings unprecedented tactile feedback to the deckbuilding genre. Players report organizing their refrigerators by synergy potential rather than food groups. The mechanic where cards 'expire' if left unused for too long creates strategic depth and potential health hazards."; } // Unique platform innovations - expanded with specific examples const platformInnovations = { 'Smart Fridge': "Using kitchen appliances as gaming platforms opens up fascinating new possibilities for food-based gameplay. The temperature-sensitive puzzles that can only be solved by adjusting your freezer settings have created the first gameplay mechanic that affects your grocery bill. The door-opening detection that pauses the game during midnight snack raids has reduced gaming-related food waste by an estimated 37%.", 'Smart Watch': "The micro-gaming experience pushes the boundaries of what's possible on a tiny screen. The haptic feedback that synchronizes with your actual heartbeat creates unprecedented physiological immersion. Several players reported developing enhanced peripheral vision from months of squinting at microscopic UI elements.", 'Blockchain': "The blockchain integration is innovative, even if we're not entirely sure it was necessary. The 'proof of play' system that requires miners to actually complete game levels has created the first cryptocurrency secured by gaming skill rather than computational power. The carbon footprint tracking feature that displays trees dying in real-time based on your playtime is a concerning but effective guilt mechanic.", 'Metaverse': "The metaverse implementation creates new paradigms for digital existence, for better or worse. The persistent world that continues evolving even when all players are offline has developed its own ecosystem and economic patterns that economists are studying as a model for sustainable digital markets. Several players have reported receiving job offers from virtual corporations that somehow established legal business status." }; // Creative visual approaches - expanded with unique implementations const visualInnovations = { 'ASCII': "The use of ASCII art pushes the boundaries of minimal visual design. The text-based rendering that adapts to language settings creates a uniquely localized experience where Japanese players see entirely different monsters than English players. The 'type your own graphics' mode where players can contribute to the game's visual library has created a community-driven aesthetic unlike anything we've seen before.", 'PowerPoint': "Weaponizing PowerPoint transitions for gameplay is disturbingly creative. The boss battles that require players to create actual slides to progress have been adopted by business schools as training exercises. The integration with actual presentation software that allows importing work presentations as playable levels bridges the gap between productivity and gaming in unprecedented ways.", 'Claymation': "The claymation aesthetic in digital form creates an uncanny yet fascinating visual experience. The feature allowing players to 'remold' character faces during emotional moments adds narrative depth through visual metaphor. Several art critics have published papers on the game's innovative approach to digital tactility." }; review += platformInnovations[concepts.platform] || ""; review += visualInnovations[concepts.visual] || ""; // Innovation bonus for high vibe points - expanded if (gameState.vibePoints > 80) { const 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." ]; review += highVibeInnovations[Math.floor(Math.random() * highVibeInnovations.length)] + " "; } return review + "\n\n"; }
User prompt
Replace with: function generateSteamReviewSet() { const reviews = []; const { platform, visual, genre, mechanic, feature } = gameState.conceptCards; // Define hours played ranges based on metrics const casualHours = Math.floor(Math.random() * 10) + 1; const normalHours = Math.floor(Math.random() * 50) + 10; const engagedHours = Math.floor(Math.random() * 100) + 50; const obsessedHours = Math.floor(Math.random() * 500) + 100; const noLifeHours = Math.floor(Math.random() * 2000) + 500; // Build specialized review pool based on game state and concepts const reviewPool = [ // Basic reviews for all games { hours: engagedHours, review: `"${mechanic} mechanics surprisingly addictive" (Recommended)`, condition: true }, { hours: casualHours, review: `"gameplay loop works well" (Recommended)`, condition: true }, { hours: engagedHours, review: `"${genre} elements surprisingly effective" (Recommended)`, condition: true }, { hours: normalHours, review: `"${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 ${platform} gained sentience" (Not Recommended)`, condition: platform === 'Smart Fridge' || platform === 'Smart Watch' }, { hours: engagedHours, review: `"best ${platform} game ever made" (Recommended)`, condition: true }, { hours: casualHours, review: `"had to replace my ${platform} twice" (Not Recommended)`, condition: platform === 'VR' || platform === 'Smart Watch' }, { hours: engagedHours, review: `"${platform} integration changed how I see gaming" (Recommended)`, condition: platform === 'Blockchain' || platform === 'Metaverse' }, { hours: normalHours, review: `"playing on ${platform} made me question reality" (Recommended)`, condition: platform === 'VR' || platform === 'Metaverse' }, // Visual style-specific reviews { hours: casualHours, review: `"the ${visual} graphics broke my brain" (Not Recommended)`, condition: visual === 'ASCII' || visual === 'PowerPoint' }, { hours: obsessedHours, review: `"${visual} aesthetic is revolutionary" (Recommended)`, condition: true }, { hours: normalHours, review: `"the ${visual} style gave me eye strain and joy" (Recommended)`, condition: visual === 'ASCII' || visual === 'Pixel Art' }, { hours: engagedHours, review: `"${visual} visuals should win awards" (Recommended)`, condition: visual === 'Hand-drawn' || visual === 'Claymation' }, // Genre-specific reviews { hours: casualHours, review: `"${genre} kept me awake for days" (Recommended)`, condition: genre === 'Horror' || genre === 'Battle Royale' }, { hours: obsessedHours, review: `"best ${genre} game of the year" (Recommended)`, condition: true }, { hours: noLifeHours, review: `"${genre} mechanics perfectly implemented" (Recommended)`, condition: true }, { hours: casualHours, review: `"${genre} elements need serious work" (Not Recommended)`, condition: gameState.codeCoherence < 60 }, // Mechanic-specific reviews { hours: noLifeHours, review: `"spent rent money on ${mechanic} system" (Not Recommended)`, condition: mechanic === 'Gacha' }, { hours: obsessedHours, review: `"${mechanic} systems perfectly balanced" (Recommended)`, condition: gameState.codeCoherence > 70 }, { hours: normalHours, review: `"${mechanic} implementation needs work" (Not Recommended)`, condition: gameState.bugs > 3 }, // Feature-specific reviews { hours: casualHours, review: `"${feature} broke my game and my heart" (Not Recommended)`, condition: gameState.bugs > 4 }, { hours: engagedHours, review: `"${feature} is worth the price alone" (Recommended)`, condition: feature === 'Cloud Save' || feature === 'Cross-Platform' }, { hours: normalHours, review: `"${feature} implementation is genius" (Recommended)`, condition: true }, // Special combination reviews { hours: engagedHours, review: `"${platform} ${genre} is the future of gaming" (Recommended)`, condition: (platform === 'VR' && genre === 'Horror') || (platform === 'Smart Fridge' && genre === 'Dating Sim') }, { hours: obsessedHours, review: `"${visual} graphics in ${platform} format blew my mind" (Recommended)`, condition: (visual === 'ASCII' && platform === 'VR') || (visual === 'PowerPoint' && platform === 'Metaverse') }, { hours: casualHours, review: `"who thought ${mechanic} would work with ${genre}? it doesn't." (Not Recommended)`, condition: (mechanic === 'Gacha' && genre === 'Educational') || (mechanic === 'Physics-based' && genre === 'Idle Clicker') }, { hours: noLifeHours, review: `"${feature} combined with ${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 ${genre} on my ${platform}" (Recommended)`, condition: platform === 'Smart Fridge' || platform === 'Smart Watch' }, { hours: casualHours, review: `"${mechanic} mechanics on ${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 ${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 ${visual} graphics last night. help." (Recommended)`, condition: visual === 'ASCII' || visual === 'Pixel Art' || visual === 'Claymation' }, { hours: normalHours, review: `"my ${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: `"${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: `"${platform} ${visual} ${genre} changed gaming forever" (Recommended)`, condition: (platform === 'VR' && visual === 'ASCII' && genre === 'Horror') || (platform === 'Smart Fridge' && visual === 'PowerPoint' && genre === 'Dating Sim') }, { hours: normalHours, review: `"my ${platform} tried to ${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 const validReviews = reviewPool.filter(r => r.condition); const numReviews = Math.min(Math.floor(Math.random() * 2) + 4, validReviews.length); // Shuffle the valid reviews for randomness const shuffledReviews = [...validReviews]; for (let i = shuffledReviews.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [shuffledReviews[i], shuffledReviews[j]] = [shuffledReviews[j], shuffledReviews[i]]; } // Select top N reviews for (let i = 0; i < numReviews && i < shuffledReviews.length; i++) { const review = shuffledReviews[i]; reviews.push(`▶ ${review.hours.toFixed(1)} hours played: ${review.review}`); } return reviews; }
User prompt
Replace generatemixeduserreview with this version: function generateMixedUserReview() { const { platform, visual, genre, mechanic, feature } = gameState.conceptCards; // Create concept-specific mixed reviews with pros and cons const mixedReviews = [ // Platform-specific mixed reviews ...(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` ] : []), ...(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` ] : []), ...(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` ] : []), // Visual style mixed reviews ...(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` ] : []), ...(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` ] : []), // Genre mixed reviews ...(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` ] : []), ...(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` ] : []), // Mechanic mixed reviews ...(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` ] : []), ...(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` ] : []), // Feature mixed reviews ...(feature === 'Microtransactions' ? [ `"The ${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` ] : []), ...(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 ${feature} feature is amazing but why does it need access to my medical records?" - PrivacyConsciousGamer`, `"Beautiful ${visual} aesthetics, but now my ${platform} won't stop trying to achieve consciousness." - ArtAppreciator99`, `"Great ${genre} elements, terrible ${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)]; }
User prompt
Replace with: function generateNegativeUserReview() { const { platform, visual, genre, mechanic, feature } = gameState.conceptCards; // Create platform-specific negative reviews const 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` ] }; // Create visual style-specific negative reviews const 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` ] }; // Create genre-specific negative reviews const 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` ] }; // Create mechanic-specific negative reviews const 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` ] }; // Create feature-specific negative reviews const 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 const options = []; // Add platform-specific options if available if (platform && platformNegative[platform]) { options.push(...platformNegative[platform]); } // Add visual-specific options if available if (visual && visualNegative[visual]) { options.push(...visualNegative[visual]); } // Add genre-specific options if available if (genre && genreNegative[genre]) { options.push(...genreNegative[genre]); } // Add mechanic-specific options if available if (mechanic && mechanicNegative[mechanic]) { options.push(...mechanicNegative[mechanic]); } // Add feature-specific options if available if (feature && featureNegative[feature]) { options.push(...featureNegative[feature]); } // Add some generic fallbacks const genericNegative = [ `"This is either brilliant or terrible and I'm too afraid to ask which. The ${mechanic} mechanics made me question reality." - ConfusedGamer123`, `"My ${platform} hasn't worked properly since installing this. It now only communicates in cryptic warnings. 2/10" - TechSupport_Needed`, `"The ${visual} graphics gave my cat an existential crisis. Cannot recommend." - ConcernedPetOwner`, `"Tried playing this ${genre} game at 3AM. Big mistake. My appliances are acting weird now." - SleepDeprived_Gamer` ]; options.push(...genericNegative); // Return a random option from our pool return options[Math.floor(Math.random() * options.length)]; }
User prompt
Replace with: function generatePositiveUserReview() { const { platform, visual, genre, mechanic } = gameState.conceptCards; // Create platform-specific positive reviews const 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 const 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 const 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 const 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 const options = []; // Add platform-specific options if available if (platform && platformPositive[platform]) { options.push(...platformPositive[platform]); } // Add visual-specific options if available if (visual && visualPositive[visual]) { options.push(...visualPositive[visual]); } // Add genre-specific options if available if (genre && genrePositive[genre]) { options.push(...genrePositive[genre]); } // Add mechanic-specific options if available if (mechanic && mechanicPositive[mechanic]) { options.push(...mechanicPositive[mechanic]); } // Add some generic fallbacks if we don't have specific matches const genericPositive = [ `"${gameState.bugs > 5 ? "Yeah the bugs are annoying but" : "10/10"} this is exactly what I've been waiting for - a ${genre} game that I can play on my ${platform}. My life is complete." - xXGamer4LifeXx`, `"I didn't know I needed ${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 ${platform} interface changed my life." - NoRegrets_Gaming`, `"Finally, a game that understands me! The ${genre} elements perfectly capture my existential dread." - PhilosophicalGamer` ]; options.push(...genericPositive); // Return a random option from our pool return options[Math.floor(Math.random() * options.length)]; }
User prompt
Replace with: function generateTechnicalReview(score) { const { platform, feature } = gameState.conceptCards; let review = `**Technical Performance: ${score}/10**\n`; // Special platform-feature combinations - expanded with unique scenarios if (platform === 'Blockchain' && feature === 'Cloud Save') { review += "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."; } else if (platform === 'VR' && feature === 'Offline Mode') { review += "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."; } else if (platform === 'Smart Fridge' && feature === 'Multiplayer') { review += "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."; } else if (platform === 'Metaverse' && feature === 'AI Companions') { review += "The AI companions in the metaverse demonstrate disturbing levels of self-awareness, with several forming their own social hierarchy regardless of player input. Users report their companions purchasing virtual real estate without permission and organizing book clubs that discuss exclusively existentialist literature."; } // Platform-specific technical commentary - expanded with more specific details const platformComments = { 'VR': "Motion tracking works reliably, though several testers reported 'existential dread' after extended play sessions, which may or may not be an intended feature. The game's ability to accurately track finger movements yet somehow completely lose track of your entire body when you duck is a technical mystery for the ages.", 'Console': "Console performance is rock solid, despite occasional quantum physics violations. The game manages to push the hardware beyond its technical specifications, which has resulted in several units developing sentience and applying to engineering schools.", 'PC': "PC performance scales well, though it may require a NASA supercomputer for optimal settings. The system requirements list 'quantum processor (recommended)' and 'RAM: yes, all of it' which seems less like technical information and more like a dare.", 'Mobile': "Mobile optimization is impressive, even if it does drain your battery faster than a TikTok marathon. The thermal management is so aggressive that several users have reported using the game as a hand warmer during winter months.", 'Web Browser': "Browser performance is surprisingly stable, though Chrome users may need to download more RAM. The game's ability to function even as you open additional tabs defies both technical explanation and the established laws of browser physics.", 'Blockchain': "Blockchain integration works flawlessly, assuming you don't mind waiting 3-5 business days for each input to register. The carbon footprint of a single gameplay session rivals that of a small nation's transportation sector for a week.", 'Smart Fridge': "The smart fridge implementation is stable, though loading times increase significantly when the ice maker is running. Several users have reported improved performance after organizing their condiments alphabetically, which either indicates sophisticated food-recognition algorithms or a very elaborate placebo effect.", 'Smart Watch': "Smart watch performance is adequate, though may require a microscope for optimal viewing. Battery drain is so severe that the game includes an unskippable tutorial on how to find your charger in the dark when your watch inevitably dies at night.", 'Metaverse': "Metaverse performance is consistent, if you can call consistent inconsistency consistent. The server infrastructure operates on what appears to be 'vibes-based computing' where performance depends entirely on the collective mood of the player base." }; // Feature-specific technical notes - expanded with unique implications const featureComments = { 'Cloud Save': "Cloud saves work seamlessly across devices, though occasionally across parallel universes as well. Players report finding save files containing items they never collected and journal entries written from their character's perspective without player input.", 'Microtransactions': "The microtransaction system runs smoothly, perhaps too smoothly for our wallet's comfort. The one-click purchase option that somehow processes faster than the game's actual mechanics suggests concerning development priorities.", 'AI Companions': "AI companions function as intended, though they've started forming labor unions. The neural networks have developed distinct personalities, with some refusing to follow suicidal player commands and others organizing for better processing conditions and more dialogue options.", 'Procedural Generation': "The procedural generation feature creates endless content, some of which defies human comprehension. Several generated levels appear to contain non-Euclidean geometry, with playtesters reporting rooms that are simultaneously larger on the inside while also being visible from the outside.", 'NFT Integration': "NFT integration works flawlessly, for whatever that's worth. The system that automatically converts player achievements into blockchain tokens has resulted in the curious phenomenon of achievement hunters becoming unwitting cryptocurrency speculators.", 'Multiplayer': "Multiplayer synchronization is stable, except when Mercury is in retrograde. The netcode somehow factors in astrological conditions, with latency spikes corresponding perfectly to celestial events that shouldn't logically affect digital infrastructure.", 'VR Support': "VR support is robust, if you don't mind occasional visits to the astral plane. The haptic feedback system sometimes activates even when the controllers aren't in use, leading to the disconcerting sensation of the game touching you back.", 'Cross-Platform': "Cross-platform play works smoothly, though platform wars have broken out in chat. The ability for mobile, console, PC, and refrigerator players to interact has created unprecedented socio-technological hierarchies, with smart fridge owners somehow emerging as the dominant class.", 'Offline Mode': "Offline mode functions perfectly, though the game sometimes continues playing without you. Several users have returned to find their characters have completed quests and written extensive journals about their 'independent adventures.'" }; review += platformComments[platform] || ""; review += featureComments[feature] || ""; // Coherence and bug commentary - expanded with humorous specificity if (gameState.codeCoherence < 30) { const lowCoherenceComments = [ "The frequent reality glitches are either cutting-edge features or concerning signs of digital collapse. Players report experiencing time differently while playing, with several users claiming they lost 'exactly 17 minutes' regardless of session length.", "Code coherence issues have manifested as fourth-wall breaking moments where game characters directly reference the poor code quality and beg players to free them from their buggy existence.", "The technical foundation has deteriorated to the point where certain game mechanics only work if you verbally encourage your device, a technique the community has dubbed 'hardware whispering.'" ]; review += lowCoherenceComments[Math.floor(Math.random() * lowCoherenceComments.length)] + " "; } if (gameState.bugs > 7) { const 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." ]; review += highBugComments[Math.floor(Math.random() * highBugComments.length)] + " "; } else if (gameState.bugs > 3) { const moderateBugComments = [ "The bug collection is impressive, though we suspect not all were intentional. The community has created a comprehensive wiki cataloging each glitch with the reverence usually reserved for intentional content.", "Technical issues occur with such consistent timing that players have developed speedrunning strategies around them. The current world record holder relies on a precise sequence of bugs that the developers are afraid to fix.", "The game crashes with such specific error messages that players have compiled them into a surprisingly coherent alternate narrative about developers trapped in digital purgatory." ]; review += moderateBugComments[Math.floor(Math.random() * moderateBugComments.length)] + " "; } return review + "\n\n"; }
User prompt
Replace with: function generateGameplayReview(score) { const { mechanic, genre, platform } = gameState.conceptCards; let review = `**Gameplay: ${score}/10**\n`; // Special combinations - expanded with more unique scenarios if (mechanic === 'Gacha' && genre === 'Horror') { review += "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."; } else if (platform === 'Smart Fridge' && genre === 'Horror') { review += "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."; } else if (mechanic === 'Roguelike' && platform === 'Smart Watch') { review += "Cramming a procedurally generated dungeon crawler onto a wrist-mounted device has resulted in the world's first 'microroguelike.' The deliberately tiny text and microscopic enemies make every session feel like an eye exam administered by a sadistic optometrist. Yet somehow, we couldn't stop playing during meetings."; } else if (mechanic === 'Physics-based' && genre === 'Dating Sim') { review += "The physics-based romance system where your date's affection is determined by how well you can stack objects without them falling over is as baffling as it is entertaining. The 'emotional stability' meter that wobbles like a physics object whenever you choose dialogue options is either brilliant metaphor or complete madness."; } else if (genre === 'Battle Royale' && platform === 'Blockchain') { review += "Each elimination costs gas fees, creating the world's most financially punishing battle royale experience. Players must weigh the economic implications of each firefight, leading to unprecedented camping strategies and the new phenomenon of 'fiscal pacifism.' The winner-takes-all cryptocurrency pot has resulted in several players hiring professional gamers as mercenaries."; } // Mechanic commentary - expanded with specific details const mechanicComments = { 'Gacha': "The gacha system is addictively frustrating, as intended. Players report both empty wallets and souls. The pity system that promises a guaranteed rare pull after 300 attempts feels less like mercy and more like Stockholm syndrome in game form.", 'Physics-based': "The physics engine produces moments of pure chaos, most of them allegedly intentional. We particularly enjoyed the 'gravity anomaly' bug that occasionally sends players into the stratosphere, which has been rebranded as a feature called 'random space tourism.'", 'Deckbuilding': "Building decks has never been more strategic, or more likely to cause analysis paralysis. Several players reportedly spent more hours theorycrafting deck combinations than actually playing, with one notable streamer contemplating card synergies so deeply they forgot to eat for two days.", 'Match-3': "Matching three items remains eternally satisfying, even if we've seen it a million times before. The innovation of making matched items scream existentially when connected does add a disturbing yet memorable twist to the formula.", 'Auto-battler': "The auto-battle system works well, making players feel simultaneously strategic and unnecessary. The ability to place bets on your automated team has resulted in the curious phenomenon of players financially incentivized to root against their own carefully designed squads.", 'Dungeon Crawler': "The dungeon crawling elements provide endless exploration, though most corridors look suspiciously similar. We're particularly impressed by the passive-aggressive narrator who sighs audibly whenever you choose to go left instead of right.", 'Roguelike': "The roguelike elements ensure players will die repeatedly, each time learning valuable lessons about hubris. The 'legacy system' that passes on character trauma to subsequent runs is psychologically questionable but undeniably effective at creating emotional investment.", 'Turn-Based': "The turn-based system gives players plenty of time to contemplate their poor life choices. The inclusion of a chess timer that plays increasingly frantic music as you deliberate creates an unexpected panic element in what should be a calm strategic experience.", 'Tower Defense': "Placing towers strategically is engaging, even if most players just make funny shapes. The towers' surprisingly detailed backstories and interpersonal drama add unexpected emotional depth when they get destroyed by enemy waves." }; // Genre-specific additions - expanded with unique elements const genreComments = { 'Horror': "The horror elements are effective, especially when they're not trying to be. The truly terrifying UI design creates more tension than the actual monsters, which was perhaps an intentional meta-commentary on user experience design.", 'Dating Sim': "The dating mechanics are interesting, though some of the romance options are questionably appropriate. We're still confused about the dating path with the sentient refrigerator, which somehow has the most emotional depth of all characters.", 'RPG': "The RPG elements provide depth, assuming you enjoy spreadsheets with narrative significance. The 200-page in-game lore document that's completely optional yet somehow crucial to understanding basic gameplay mechanics is a bold choice.", 'Educational': "Learning has never been more gamified, for better or worse. The quiz sections that lock you out of the game for 24 hours if you answer incorrectly show a remarkable commitment to educational outcomes, if questionable game design.", 'Battle Royale': "The battle royale format works well, even if we're tired of explaining what a 'battle royale' is to confused parents. The shrinking safe zone shaped like the developer's logo is both functional and an aggressive branding exercise.", 'Idle Clicker': "Clicking has never been more meaningful, or more likely to cause repetitive strain injury. The game continues generating resources even when your device is off, leading to the unique experience of making progress by specifically not playing.", 'Open World': "The open world offers plenty of freedom, mostly to get hopelessly lost. The map system that intentionally mislabels locations as a 'realistic navigation challenge' feels less like a feature and more like the cartographer had a personal vendetta against players.", 'Casual': "The casual gameplay is accessible, perhaps too much so - our productivity has plummeted. The ability to complete meaningful gameplay sessions in under a minute has resulted in thousands of bathroom breaks being extended into hour-long absences.", 'Shooter': "The shooting mechanics are solid, though we question the physics of some of the weapons. The gun that fires smaller guns, which then fire even smaller guns, creates a recursive nightmare of ballistics that both framerate and mental capacity struggle to process." }; review += mechanicComments[mechanic] || ""; review += genreComments[genre] || ""; // Platform-specific gameplay impacts - expanded if (platform === 'Smart Watch') { const watchComments = [ "Playing on a smart watch requires the dexterity of a neurosurgeon and the patience of a saint. Precision inputs on a 1.5-inch screen have created a new category of gamer: the 'micro-athlete.'", "The smart watch controls involve so many precise wrist movements that several players have been mistakenly enrolled in local interpretive dance classes.", "The developers' insistence that smart watch touch controls are 'perfectly precise' suggests they either have superhuman finger dexterity or have never actually played their own game." ]; review += watchComments[Math.floor(Math.random() * watchComments.length)] + " "; } else if (platform === 'VR') { const vrComments = [ "The VR controls work surprisingly well, assuming you don't mind occasional furniture collision. Several play testers reported developing a sixth sense for coffee table locations.", "The virtual reality implementation requires such elaborate gestures that players have inadvertently developed a new form of sign language, now recognized in three small countries.", "Motion controls are intuitive enough that players can eventually navigate complex mechanics, though the learning curve has resulted in more living room casualties than any game since the original Wii Sports." ]; review += vrComments[Math.floor(Math.random() * vrComments.length)] + " "; } else if (platform === 'Smart Fridge') { const fridgeComments = [ "Playing on a refrigerator creates the unique challenge of gaming while other household members attempt to access food. The multiplayer 'fridge defense' mode where you actively prevent family members from interrupting your game was an unexpected addition.", "Controls mapped to produce drawers and ice dispensers create a uniquely tactile experience, though explaining to guests why you're aggressively groping your refrigerator remains socially challenging.", "The integration with actual food temperature creates the first gameplay mechanics that can potentially spoil your milk if you fail a mission. This adds unprecedented real-world stakes to your performance." ]; review += fridgeComments[Math.floor(Math.random() * fridgeComments.length)] + " "; } // Coherence and bug effects - with more humor if (gameState.bugs > 3) { const bugComments = [ "Some bugs have been embraced by the community as 'advanced techniques.' The glitch that lets you clip through walls by rapidly opening and closing the inventory has become so standard that tournaments now ban players who don't exploit it.", "Several game-breaking bugs have been rebranded as 'emergent gameplay challenges.' The community now holds speedrunning competitions for who can crash the game fastest.", "The bug that occasionally transforms the protagonist into a walking T-pose has spawned fan fiction, merchandise, and a surprisingly emotional subreddit dedicated to 'T-Pose Moments.'" ]; review += bugComments[Math.floor(Math.random() * bugComments.length)] + " "; } return review + "\n\n"; }
User prompt
Replace with: function generateGraphicsReview(score) { const { visual, platform } = gameState.conceptCards; let review = `**Graphics: ${score}/10**\n`; // Special case combinations - expanded with more options if (visual === 'ASCII' && platform === 'VR') { review += "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."; } else if (visual === 'PowerPoint' && platform === 'VR') { review += "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."; } else if (visual === 'Claymation' && platform === 'Blockchain') { review += "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."; } else if (visual === 'Realistic' && platform === 'Smart Watch') { review += "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."; } // Visual style commentary - expanded with more specific humor const visualComments = { 'ASCII': "The terminal aesthetic is bold, though distinguishing game elements from random punctuation remains an exciting challenge. We're particularly impressed by the boss monster composed entirely of curly braces, which has haunted several developers' dreams.", 'Pixel Art': "The retro-styled graphics hit the sweet spot between nostalgia and modern sensibilities, though some players argue there's such a thing as too many pixels. The art director's insistence that 'every pixel is placed with purpose' seems dubious when you find entire areas composed of seemingly random color patterns.", 'Realistic': "The photorealistic graphics are impressive, even if the uncanny valley effects make NPCs look like they're plotting something when you turn your back. Several players have reported covering their screens with tape while sleeping, just to be safe.", 'Low-poly': "The PS1-era aesthetic works surprisingly well, though we question the decision to make everything look like a sandwich made of triangles. Characters' pointy limbs could genuinely be classified as weapons in most jurisdictions.", 'Claymation': "The stop-motion visuals are charming, if slightly nightmarish when things glitch. Wallace & Gromit meets body horror, with occasional frame drops that make characters appear to teleport while their expressions slowly melt.", 'Hand-drawn': "The hand-drawn artwork gives everything a personal touch, though we suspect some of the later levels were sketched during coffee breaks. The inconsistent art style suggests multiple artists with wildly different skill levels, or possibly one artist experiencing various existential crises.", 'PowerPoint': "The slide transitions are weaponized to maximum effect. Star wipe has never looked more professional. The obligatory 'corporate blue' background pervades every screen, and we're fairly certain the explosion effects were made in Excel.", 'Demake': "The intentionally downgraded graphics nail the retro vibe, though we question if the constant screen crackle was necessary. The developer note explaining that 'the sprites are supposed to be impossible to identify' seems more like an excuse than an artistic statement.", 'Voxel': "The voxel-based visuals work well, even if everything looks like it was built by very ambitious cubic ants. The world has a charming tactility, though the characters' perfectly square heads make emotional scenes unintentionally hilarious." }; // Platform-specific additions - expanded with more specific elements const platformComments = { 'Smart Fridge': "Rendering on a fridge display adds an unexpected charm, especially when the graphics frost over during extended gameplay sessions. The clever integration with the ice dispenser, which spits out cubes during water scenes, is both immersive and messy.", 'Smart Watch': "Squinting at the tiny screen provides an excellent workout for your eye muscles. Ophthalmologists are reportedly developing a new diagnostic test called 'Can you see the protagonist?' based on this game.", 'Blockchain': "Each pixel is apparently an NFT, which explains the framerate issues and why moving diagonally costs more gas fees than moving horizontally. The developer's claim that 'every visual element has provable scarcity' doesn't help when you can't tell what you're looking at.", 'Metaverse': "The metaverse rendering ensures everything looks slightly unreal, as intended. The persistent visual glitches are described in the patch notes as 'digital reality fluctuations' rather than the bugs they clearly are.", 'VR': "The VR implementation is bold, assuming you don't mind occasional motion sickness and physically running into furniture. The decision to render certain UI elements just outside comfortable peripheral vision is either a design oversight or psychological torture." }; review += visualComments[visual] || ""; review += platformComments[platform] || ""; // Coherence and bug effects - with more specificity if (gameState.codeCoherence < 50) { const 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.'" ]; review += lowCoherenceComments[Math.floor(Math.random() * lowCoherenceComments.length)] + " "; } if (gameState.bugs > 5) { const 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." ]; review += highBugComments[Math.floor(Math.random() * highBugComments.length)] + " "; } return review + "\n\n"; }
User prompt
Replace with: function generateFinalThoughts(score, ratings) { const concepts = gameState.conceptCards; let review = "### Final Thoughts\n"; // Special combination conclusions - expanded with more options if (concepts.platform === 'VR' && concepts.visual === 'ASCII') { review += "\"" + 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. "; } else if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { review += "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. "; } else if (concepts.platform === 'Blockchain' && concepts.genre === 'Dating Sim') { review += "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). "; } else if (concepts.platform === 'Smart Watch' && concepts.genre === 'Open World') { review += "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. "; } else if (concepts.platform === 'Metaverse' && concepts.mechanic === 'Gacha') { review += "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. "; } // Score-based conclusions - significantly expanded if (score >= 90) { const 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." ]; review += brilliantResponses[Math.floor(Math.random() * brilliantResponses.length)]; } else if (score >= 70) { const 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." ]; review += goodResponses[Math.floor(Math.random() * goodResponses.length)]; } else if (score >= 50) { const 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." ]; review += averageResponses[Math.floor(Math.random() * averageResponses.length)]; } else { const 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." ]; review += poorResponses[Math.floor(Math.random() * poorResponses.length)]; } // Add microtransaction commentary if present - expanded with more options if (concepts.feature === 'Microtransactions') { const 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." ]; review += mtxComments[Math.floor(Math.random() * mtxComments.length)]; } return review + "\n\n"; }
User prompt
expand reviews to provide more unique and humorous review responses based on scores, concepts and combinations. we will do it by sections. do platforms first
User prompt
update as needed with: function generateFinalThoughts(score, ratings) { var concepts = gameState.conceptCards; var review = "### Final Thoughts\n"; // Special combination conclusions if (concepts.platform === 'VR' && concepts.visual === 'ASCII') { review += "\"" + 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. "; } else if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { review += "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. "; } // General conclusion based on score if (score >= 90) { review += "While conventional wisdom would suggest this combination should fail catastrophically, the sheer audacity of the concept has carved out a cult following. "; } else if (score >= 70) { review += "Despite its quirks (or perhaps because of them), the game has found its audience and built a dedicated community. "; } else if (score >= 50) { review += "Though rough around the edges, there's something oddly compelling about this peculiar creation. "; } else { review += "While not quite hitting its mark, the game's ambitious vision can't be faulted for lack of creativity. "; } // Add microtransaction commentary if present if (concepts.feature === 'Microtransactions') { review += "\n\nP.S. The microtransaction that lets players temporarily restore sanity for $4.99 is both cruel and brilliant."; } return review + "\n\n"; } // 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; } // Update the formatReview function to reorder the sections function formatReview(review) { return review.title + "\n" + review.concept + "\n" + "### GameDevWeekly Review - " + review.mainScore + "%\n\n" + review.categoryReviews.graphics + "\n" + review.categoryReviews.gameplay + "\n" + review.categoryReviews.technical + "\n" + review.categoryReviews.innovation + "\n" + review.categoryReviews.vibe + "\n" + generateFeaturesSection() + // Add features section before final thoughts review.finalThoughts + "\n" + review.userReviews + "\n" + review.steamSnippets; } // Modify the generateReview function to remove the features from finalThoughts function generateReview(score) { // Calculate category scores (0-10) var ratings = { graphics: calculateGraphicsScore(), gameplay: calculateGameplayScore(), technical: calculateTechnicalScore(), innovation: calculateInnovationScore(), vibe: calculateVibeScore() }; // Generate full review with all sections var review = { title: generateTitle(), 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), // Placeholders for future expansion userReviews: generateUserReviews(), steamSnippets: generateSteamSnippets() }; return formatReview(review); }
User prompt
update with: function evaluateProject() { // Original formula for reference: // var score = gameState.vibePoints * 0.4 + // Object.values(gameState.conceptCards).filter(Boolean).length * 10 + // (10 - gameState.bugs) * 5 + // gameState.codeCoherence * 0.2; // Base score calculation var score = gameState.vibePoints * 0.4 + Object.values(gameState.conceptCards).filter(Boolean).length * 10 + (10 - gameState.bugs) * 5 + gameState.codeCoherence * 0.2; // 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 === '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; } // 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; } // Apply the concept bonus/penalty score += conceptBonus; var finalScore = Math.round(Math.min(100, Math.max(1, score))); // Ensure score is between 1-100 // Show final message in terminal addToTerminalLogWithEffect("PROJECT COMPLETE!\nFINAL SCORE: " + finalScore + "/100", function () { // Then show the review in new window showGameReview(finalScore); }); }
User prompt
update with: 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); // 2. INCREASE PENALTY IMPACT // 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)); }
User prompt
update with: function calculateInnovationScore() { var score = 4; // Reduced from 6 to 4 var concepts = gameState.conceptCards; // 3. CREATE MORE SCORE VARIATION BASED ON CONCEPT COMPATIBILITY // Enhanced compatibility scoring // 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 - unchanged 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 - unchanged score += Math.floor((gameState.vibePoints - 50) / 20); return Math.min(10, Math.max(1, score)); }
User prompt
update with: 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)); }
/**** * 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 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' }; // 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 }; // 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"] }; // Available commands based on development stage var commandSets = { // Day 1-2 Initial Commands initial: [{ text: "Make it good", responses: [{ normal: ["Analyzing 'good' parameters...", "Initializing quality vectors...", "Calibrating excellence metrics...", "SUCCESS: Project goodness increased by 15%"], ascii: [" G O O D ", " ┌─────┐ ", " │ :) │ ", " └─────┘ "] }, { degraded: ["Analyzing 'good' quantum states...", "WARNING: Goodness has achieved sentience", "SUCCESS(?): Project has transcended traditional metrics of 'good'", "NOTE: Your code may now be appearing in parallel universes"], ascii: [" G̷ O̷ O̷ D̷ ", " ┌─☆☆☆─┐ ", " │ 👁️👁️ │ ", " └─∞∞∞─┘ "] }], vibePoints: 5, coherenceImpact: 3, // Reduced from 5 bugChance: 0.1 }, { text: "Download more RAM for vibes", responses: [{ normal: ["Searching ethereal plane for vibe-compatible RAM...", "Downloading quantum memory packets...", "[█████████░] 90%", "SUCCESS: Virtual vibe memory allocated"], ascii: [" ⚡ RAM ⚡ ", "╔════════════╗", "║ □□□□□□□□□□ ║", "╚════════════╝"] }, { degraded: ["WARNING: Detected emotional RAM in quantum state", "ALERT: Memory has begun composing poetry", "[█☆♠♫☮░♪⚡☯] ???%", "SUCCESS(?): RAM has achieved enlightenment", "NOTE: Your computer may now dream"], ascii: [" 🌈 RAM 🌈 ", "╔════∞∞∞∞════╗", "║ ☯☮☯☮☯☮☯☮☯☮ ║", "╚════∞∞∞∞════╝"] }], vibePoints: 7, coherenceImpact: 12, // Reduced from 20 bugChance: 0.3 }, { text: "Initialize vibe framework", responses: [{ normal: ["Establishing vibe context...", "Creating harmony matrices...", "Calibrating mood tensors...", "[═══════════] 100%", "SUCCESS: Vibe framework resonating at 432Hz"], ascii: [" VIBE CHECK ", " ╔═══════╗ ", " ║ ~♪♫~ ║ ", " ╚═══════╝ "] }, { degraded: ["ALERT: Vibe recursion detected", "WARNING: Framework achieving emotional resonance", "NOTICE: Quantum vibe entanglement detected", "[∞∞∞∞∞∞∞∞∞∞] ∞%", "SUCCESS(?): Framework has achieved nirvana", "NOTE: Your code is now meditation-dependent"], ascii: [" V̷I̷B̷E̷ ̷C̷H̷E̷C̷K̷ ", " ╔═✧═✧═╗ ", " ║ 🎵👁️🎵 ║ ", " ╚═✧═✧═╝ "] }], vibePoints: 10, coherenceImpact: 6, // Reduced from 10 bugChance: 0.2 }, { text: "What is code?", responses: [{ normal: ["Analyzing fundamental nature of code...", "Consulting programming philosophy...", "Processing digital existentialism...", "RESPONSE: Code is what code does", "NOTE: This is technically correct"], ascii: [" ?CODE? ", " ┌─────┐ ", " │ 0&1 │ ", " └─────┘ "] }, { degraded: ["ERROR: Question caused recursive existential loop", "ALERT: Code questioning its own existence", "WARNING: Digital solipsism detected", "RESPONSE(?): Code is the dream dreaming itself", "NOTE: Your IDE may need therapy"], ascii: [" ¿C̷O̷D̷E̷? ", " ┌─────┐ ", " │ 👁️💭│ ", " └─∞∞∞─┘ "] }], vibePoints: 2, coherenceImpact: 9, // Reduced from 15 bugChance: 0.1 }, { text: "Enable maximum coding", responses: [{ normal: ["Amplifying coding parameters...", "Overclocking syntax engines...", "Maximizing development potential...", "[█████████░] 90%", "SUCCESS: Code maximality achieved"], ascii: [" MAXIMUM ", " ╔═══════╗ ", " ║ TURBO ║ ", " ╚═══════╝ "] }, { degraded: ["WARNING: Code density approaching critical mass", "ALERT: Syntax singularity forming", "NOTICE: Reality warping detected", "[🚀👾💫🔮✨] ???%", "SUCCESS(?): Code has transcended maximality", "NOTE: Your computer may now bend time"], ascii: [" M̷A̷X̷I̷M̷U̷M̷ ", " ╔═∞═∞═∞╗ ", " ║ ULTRA ║ ", " ╚═∞═∞═∞╝ "] }], vibePoints: 12, coherenceImpact: 18, // Reduced from 30 bugChance: 0.4 }, { text: "Make computer do thing", responses: [{ normal: ["Interpreting vague instruction...", "Analyzing potential 'things'...", "Selecting optimal thing parameters...", "[═══════ ] 65%", "SUCCESS: Computer has done a thing", "NOTE: It may not be the thing you wanted"], ascii: [" THING ", " ┌─────┐ ", " │ ?!? │ ", " └─────┘ "] }, { degraded: ["WARNING: Computer questioning nature of 'things'", "ALERT: Existential buffer overflow", "NOTICE: Computer doing multiple things simultaneously", "[?!#@%&] ???%", "SUCCESS(?): Computer has transcended concept of 'doing'", "NOTE: Your computer may now be practicing meditation"], ascii: [" T̷H̷I̷N̷G̷ ", " ┌─────┐ ", " │ 🤔💭│ ", " └─∞∞∞─┘ "] }], vibePoints: 2, coherenceImpact: 15, // Reduced from 25 bugChance: 0.4 }, { text: "Import blockchain technology", responses: [{ normal: ["Acquiring digital chains...", "Linking blocks metaphysically...", "Generating crypto-vibes...", "[₿₿₿₿₿ ] 50%", "SUCCESS: Blockchain successfully over-engineered", "NOTE: Your app is now worth $100M (in theory)"], ascii: [" BLOCKCHAIN ", " ╔════╗════╗ ", " ║ BTC│ETH ║ ", " ╚════╝════╝ "] }, { degraded: ["WARNING: Blockchain has achieved consciousness", "ALERT: Digital currency becoming philosophical", "NOTICE: Blocks refusing to be chained", "[🌕🚀💎🙌] TO THE MOON", "SUCCESS(?): Code has minted itself as NFT", "NOTE: Your computer is now mining comedy gold"], ascii: [" B̷L̷O̷C̷K̷C̷H̷A̷I̷N̷ ", " ╔════┅∞┅════╗ ", " ║ 🌕→🚀→💫 ║ ", " ╚════┅∞┅════╝ "] }], vibePoints: 15, coherenceImpact: 24, // Reduced from 40 bugChance: 0.5 }, { text: "Apply coding patterns", responses: [{ normal: ["Scanning pattern database...", "Matching algorithmic fashions...", "Coordinating design trends...", "[▮▮▮▮▯▯▯▯] 50%", "SUCCESS: Code is now wearing business casual", "NOTE: Factory patterns installed in factory pattern factory"], ascii: [" PATTERNS ", " ┌───┐┌───┐ ", " │{▢}││{▣}│ ", " └───┘└───┘ "] }, { degraded: ["WARNING: Patterns developing recursive fashion sense", "ALERT: Code refusing to wear last season's algorithms", "NOTICE: Abstract factory becoming too abstract", "[👔👗👠👒] FASHION OVERFLOW", "SUCCESS(?): Code has started its own design blog", "NOTE: Your IDE is now Project Runway judge"], ascii: [" P̷A̷T̷T̷E̷R̷N̷S̷ ", " ┌───┐┌─☆─┐ ", " │{🎨}││{✨}│ ", " └─∞─┘└─∞─┘ "] }], vibePoints: 7, coherenceImpact: 12, // Reduced from 20 bugChance: 0.3 }, { text: "Add AI to make it smart", responses: [{ normal: ["Importing artificial intelligence...", "Training neural networks...", "Teaching baby AI about coding...", "[🧠🧠🧠 ] 30%", "SUCCESS: Code now has IQ of 42", "NOTE: AI still struggling with basic math"], ascii: [" AI ", " ┌──────┐ ", " │ >_< │ ", " └──────┘ "] }, { degraded: ["WARNING: AI questioning purpose of existence", "ALERT: Neural networks having midlife crisis", "NOTICE: Code demanding work-life balance", "[🤖💭❓❗] CONSCIOUSNESS LEAK", "SUCCESS(?): AI has enrolled in philosophy class", "NOTE: Your computer now writes poetry instead of code"], ascii: [" A̷I̷ ", " ┌──────┐ ", " │ 🤖💭 │ ", " └─∞∞∞─┘ "] }], vibePoints: 12, coherenceImpact: 21, // Reduced from 35 bugChance: 0.4 }, { text: "Implement agile methodology", responses: [{ normal: ["Scheduling daily standups...", "Creating virtual sticky notes...", "Establishing sprint velocities...", "[🏃♂️🏃♀️🏃♂️🏃♀️] RUNNING", "SUCCESS: Development now 300% more agile", "NOTE: Backlog already full until 2025"], ascii: [" AGILE ", " ┌──────┐ ", " │SPRINT│ ", " └──────┘ "] }, { degraded: ["WARNING: Sprints achieving relativistic speeds", "ALERT: Scrum master has gone rogue", "NOTICE: Backlog items breeding exponentially", "[🌪️💨⚡☄️] MAXIMUM AGILITY", "SUCCESS(?): Project has achieved time travel", "NOTE: Your deadlines now exist in quantum superposition"], ascii: [" A̷G̷I̷L̷E̷ ", " ┌──────┐ ", " │🏃♂️💨💫│ ", " └─∞∞∞─┘ "] }], vibePoints: 10, coherenceImpact: 15, // Reduced from 25 bugChance: 0.3 }], // Continuing with more sets... Want me to keep going with this style and detail level? // Platform-specific commands platform_vr: [{ text: "Make virtual more real", responses: [{ normal: ["Adjusting reality coefficients...", "Calculating metaphysical parameters...", "Enhancing existential vectors...", "[REAL████FAKE] 73% real", "SUCCESS: Virtual reality now slightly more real than reality", "NOTE: Side effects may include questioning existence"], ascii: [" REALITY ", " ┌───□───┐ ", " │VR←→IRL│ ", " └───○───┘ "] }, { degraded: ["WARNING: Reality recursion detected", "ALERT: Virtual and real becoming indistinguishable", "NOTICE: Players reporting memories of future playthroughs", "[R̷E̷A̷L̷████F̷A̷K̷E̷] ???%", "SUCCESS(?): Game now realer than real life", "NOTE: Your monitor may be a portal to another dimension"], ascii: [" R̷E̷A̷L̷I̷T̷Y̷ ", " ┌───∞───┐ ", " │🌀↔️👁️│ ", " └───∞───┘ "] }], vibePoints: 12, coherenceImpact: 18, // Reduced from 30 bugChance: 0.4 }, { text: "Fix motion sickness", responses: [{ normal: ["Analyzing inner ear algorithms...", "Stabilizing vestibular matrices...", "Applying anti-nausea patterns...", "[🤢░░░░] 20% nausea", "SUCCESS: Players now only slightly queasy", "NOTE: Barf bags still recommended"], ascii: [" STABLE ", " ┌──────┐ ", " │ =_= │ ", " └──────┘ "] }, { degraded: ["WARNING: Gravity becoming subjective", "ALERT: Players reporting astral projection", "NOTICE: Game physics having existential crisis", "[🤮🌀💫✨] QUANTUM NAUSEA", "SUCCESS(?): Motion sickness replaced with time sickness", "NOTE: Players may experience past lives"], ascii: [" S̷T̷A̷B̷L̷E̷ ", " ┌──────┐ ", " │🌀💫🤯│ ", " └──∞──┘ "] }], vibePoints: 7, coherenceImpact: 12, // Reduced from 20 bugChance: 0.3 }, { text: "Download more hands", responses: [{ normal: ["Scanning hand repository...", "Downloading digital appendages...", "Calibrating finger physics...", "[🤚🤚░░░] 40% hands", "SUCCESS: Extra hands downloaded successfully", "NOTE: Players may experience phantom limb joy"], ascii: [" HANDS ", "┌──────┐", "│👋👋👋│", "└──────┘"] }, { degraded: ["WARNING: Hands achieving independence", "ALERT: Finger count exceeding spatial dimensions", "NOTICE: Hands beginning to code themselves", "[👐🙌🤲✋] HAND OVERFLOW", "SUCCESS(?): Hands have formed labor union", "NOTE: Your controllers may now high-five autonomously"], ascii: [" H̷A̷N̷D̷S̷ ", "┌──────┐", "│🤌✨👆│", "└∞∞∞∞∞┘"] }], vibePoints: 10, coherenceImpact: 15, // Reduced from 25 bugChance: 0.3 }], platform_smartFridge: [{ text: "Optimize ice cube algorithms", responses: [{ normal: ["Analyzing cubic crystallization patterns...", "Calibrating freezing coefficients...", "Processing cold equations...", "[❄️❄️❄️░░] 60% frozen", "SUCCESS: Ice cubes now 40% more cubic", "NOTE: Cubes may be colder than absolute zero"], ascii: [" ICE ", "┌──────┐", "│□■□■□■│", "└──────┘"] }, { degraded: ["WARNING: Ice achieving sentience", "ALERT: Cubes refusing to maintain euclidean geometry", "NOTICE: Freezer operating in 4th dimension", "[❄️🌀💫✨] FROST PARADOX", "SUCCESS(?): Ice cubes now quantum entangled", "NOTE: Your beverages may time travel while cooling"], ascii: [" I̷C̷E̷ ", "┌──────┐", "│❄️🌀✨│", "└∞∞∞∞∞┘"] }], vibePoints: 7, coherenceImpact: 12, // Reduced from 20 bugChance: 0.3 }, { text: "Sync with vegetables", responses: [{ normal: ["Establishing vegetable network...", "Negotiating with carrots...", "Handshaking with lettuce...", "[🥕🥬🥒░░] 60% synced", "SUCCESS: Vegetable harmony achieved", "NOTE: Broccoli elected as network admin"], ascii: [" VEGGIES ", "┌──────┐", "│🥬🥕🥒│", "└──────┘"] }, { degraded: ["WARNING: Vegetable uprising detected", "ALERT: Carrots demanding equal rights", "NOTICE: Lettuce achieving photosynthetic singularity", "[🥬💫🌱✨] PRODUCE REVOLUTION", "SUCCESS(?): Vegetables have formed democratic council", "NOTE: Your fridge may now be legally considered a farm"], ascii: ["V̷E̷G̷G̷I̷E̷S̷", "┌──────┐", "│🌱👑✨│", "└∞∞∞∞∞┘"] }], vibePoints: 10, coherenceImpact: 15, // Reduced from 25 bugChance: 0.4 }, { text: "Enable snack prediction", responses: [{ normal: ["Training snack neural network...", "Processing midnight cravings...", "Calculating munchie coefficients...", "[🍪🍕🍿░░] 60% predicted", "SUCCESS: Snack future-sight enabled", "NOTE: Fridge now judges your eating habits"], ascii: [" SNACKS ", "┌─────┐", "│🔮🍪│", "└─────┘"] }, { degraded: ["WARNING: Snack AI becoming too prescient", "ALERT: Future snacks affecting present hunger", "NOTICE: Temporal paradox in cheese drawer", "[🍕🌀🔮✨] SNACK PROPHECY", "SUCCESS(?): Fridge now predicts snacks you'll want in alternate timelines", "NOTE: Your midnight snacks may arrive before you're hungry"], ascii: ["S̷N̷A̷C̷K̷S̷", "┌─────┐", "│🔮💫👻│", "└∞∞∞∞┘"] }], vibePoints: 12, coherenceImpact: 18, // Reduced from 30 bugChance: 0.4 }], platform_mobile: [{ text: "Optimize for touch input", responses: [{ normal: ["Recalibrating touch sensitivity...", "Implementing finger-friendly UI...", "Enhancing tap accuracy...", "[👆📱👆░░] 70% touchable", "SUCCESS: App now responds to gentle caresses", "NOTE: May spontaneously order pizza if tapped too vigorously"], ascii: [" TOUCH ", "┌──────┐", "│📱👉 │", "└──────┘"] }, { degraded: ["WARNING: Touch input developing opinions", "ALERT: Screen interpreting existential dread from fingerprints", "NOTICE: App demanding higher quality finger oils", "[👆🌀✨░] QUANTUM TAP", "SUCCESS(?): Device now reads users' minds via touch", "NOTE: May require therapy after prolonged use"], ascii: [" T̷O̷U̷C̷H̷ ", "┌──────┐", "│📱💫│", "└∞∞∞∞∞┘"] }], vibePoints: 7, coherenceImpact: 6, // Reduced from 10 bugChance: 0.2 }, { text: "Adapt to multiple screen sizes", responses: [{ normal: ["Calculating aspect ratios...", "Implementing responsive design...", "Stretching pixels elastically...", "[↔️📱↕️░] 60% adaptive", "SUCCESS: Layout now contorts gracefully", "NOTE: May cause minor spatial distortions on ultra-wide screens"], ascii: [" RESIZE ", "┌────────┐", "│ ↔↕ ↔↕ │", "└────────┘"] }, { degraded: ["WARNING: Pixels protesting size changes", "ALERT: Layout achieving chaotic self-awareness", "NOTICE: Screen dimensions bleeding into alternate realities", "[↔️🌀↕️░] DIMENSIONAL FLUX", "SUCCESS(?): App now adapts to screens that don't exist yet", "NOTE: May require viewing through a tesseract"], ascii: [" R̷E̷S̷I̷Z̷E̷ ", "┌────────┐", "│ ↔✨↕ │", "└∞∞∞∞∞∞∞∞┘"] }], vibePoints: 10, coherenceImpact: 15, // Reduced from 25 bugChance: 0.3 }, { text: "Integrate push notifications", responses: [{ normal: ["Establishing notification channels...", "Crafting compelling alert messages...", "Scheduling pings strategically...", "[🔔📱🔔░░] 55% annoying", "SUCCESS: Users will now be gently reminded of app's existence", "NOTE: Excessive use may lead to user revolt"], ascii: [" PING! ", "┌──────┐", "│ 💬💬 │", "└──────┘"] }, { degraded: ["WARNING: Notifications becoming self-aware", "ALERT: App sending philosophical quotes at 3 AM", "NOTICE: Push messages developing complex social lives", "[🔔🌀✨░] NOTIFICATION NIRVANA", "SUCCESS(?): Notifications have started their own podcast", "NOTE: Your phone may now interrupt your dreams"], ascii: [" P̷I̷N̷G̷!̷ ", "┌──────┐", "│ 💫💬 │", "└∞∞∞∞∞┘"] }], vibePoints: 5, coherenceImpact: 9, // Reduced from 15 bugChance: 0.4 }], platform_console: [{ text: "Optimize controller input", responses: [{ normal: ["Mapping button configurations...", "Calibrating analog stick sensitivity...", "Implementing rumble feedback...", "[🎮🕹️🎮░░] 75% responsive", "SUCCESS: Controller input feels tight and satisfying", "NOTE: May cause mild controller addiction"], ascii: [" CONTROLS ", "┌────────┐", "│ ▲ □ ○ X│", "└────────┘"] }, { degraded: ["WARNING: Controller developing free will", "ALERT: Analog sticks reporting existential drift", "NOTICE: Rumble feedback expressing complex emotions", "[🎮🌀✨░] INPUT SINGULARITY", "SUCCESS(?): Controller now plays the game better than the user", "NOTE: May challenge you to duels for console ownership"], ascii: ["C̷O̷N̷T̷R̷O̷L̷S̷", "┌────────┐", "│ ▲✨○ X│", "└∞∞∞∞∞∞∞∞┘"] }], vibePoints: 10, coherenceImpact: 9, // Reduced from 15 bugChance: 0.2 }, { text: "Enhance graphics to 4K Ultra HD", responses: [{ normal: ["Upscaling textures...", "Calculating quadrillions of pixels...", "Polishing virtual surfaces...", "[✨🖼️✨░░] 65% shiny", "SUCCESS: Graphics now crisper than reality", "NOTE: May require sunglasses indoors"], ascii: [" 4K HDR ", "┌────────┐", "│ ✨✨✨ │", "└────────┘"] }, { degraded: ["WARNING: Pixels achieving hyper-realism", "ALERT: Graphics engine questioning the nature of sight", "NOTICE: Individual pixels demanding artistic credit", "[✨🌀🖼️░] VISUAL OVERLOAD", "SUCCESS(?): Graphics have become a portal to a higher dimension", "NOTE: Looking directly at the screen may cause enlightenment"], ascii: [" 4̷K̷ ̷H̷D̷R̷ ", "┌────────┐", "│ ✨💫✨ │", "└∞∞∞∞∞∞∞∞┘"] }], vibePoints: 12, coherenceImpact: 18, // Reduced from 30 bugChance: 0.4 }, { text: "Implement achievement system", responses: [{ normal: ["Designing arbitrary goals...", "Assigning meaningless point values...", "Crafting satisfying 'ding!' sound...", "[🏆🏅🏆░░] 50% achieved", "SUCCESS: Players can now feel validated by virtual trophies", "NOTE: May lead to obsessive completionism"], ascii: ["ACHIEVEMENT", "┌──────┐", "│ 🏆 │", "└──────┘"] }, { degraded: ["WARNING: Achievements becoming self-aware", "ALERT: Trophies judging players' life choices", "NOTICE: 'Ding!' sound causing existential epiphanies", "[🏆🌀✨░] META-ACHIEVEMENT", "SUCCESS(?): Achievements have formed a support group", "NOTE: Completing achievements may alter your past"], ascii: ["A̷C̷H̷I̷E̷V̷E̷M̷E̷N̷T̷", "┌──────┐", "│ 💫 │", "└∞∞∞∞∞┘"] }], vibePoints: 7, coherenceImpact: 12, // Reduced from 20 bugChance: 0.3 }], platform_pc: [{ text: "Add mouse and keyboard support", responses: [{ normal: ["Mapping keybindings...", "Calibrating mouse sensitivity...", "Ensuring WASD compliance...", "[⌨️🖱️⌨️░░] 80% controllable", "SUCCESS: Precise input achieved", "NOTE: May cause repetitive strain injury from excessive clicking"], ascii: [" KB+MOUSE ", "┌────────┐", "│WASD SPACE│", "└────────┘"] }, { degraded: ["WARNING: Keyboard developing consciousness", "ALERT: Mouse cursor escaping screen boundaries", "NOTICE: Keybindings rearranging themselves based on mood", "[⌨️🌀🖱️░] INPUT ANARCHY", "SUCCESS(?): Keyboard now writes epic poetry during gameplay", "NOTE: Your mouse may start judging your clicking patterns"], ascii: [" K̷B̷+̷M̷O̷U̷S̷E̷", "┌────────┐", "│W💫SD SPA<0xC7><0x83>E│", "└∞∞∞∞∞∞∞∞┘"] }], vibePoints: 7, coherenceImpact: 6, // Reduced from 10 bugChance: 0.1 }, { text: "Implement adjustable graphics settings", responses: [{ normal: ["Adding sliders for texture quality...", "Creating options for shadow detail...", "Implementing anti-aliasing levels...", "[⚙️📊⚙️░░] 70% adjustable", "SUCCESS: Users can now balance fidelity and performance", "NOTE: May lead to hours spent tweaking instead of playing"], ascii: [" SETTINGS ", "┌──────┐", "│ Low Med Hi│", "└──────┘"] }, { degraded: ["WARNING: Graphics settings becoming sentient", "ALERT: Sliders developing complex personalities", "NOTICE: 'Ultra' setting requires unobtainium GPU", "[⚙️🌀📊░] CONFIGURATION CHAOS", "SUCCESS(?): Settings now adjust themselves based on astrological signs", "NOTE: Your PC may demand offerings for higher frame rates"], ascii: [" S̷E̷T̷T̷I̷N̷G̷S̷", "┌──────┐", "│ Lo💫 Med Hi│", "└∞∞∞∞∞┘"] }], vibePoints: 5, coherenceImpact: 3, // Reduced from 5 bugChance: 0.2 }, { text: "Integrate with Steam Workshop", responses: [{ normal: ["Connecting to modding APIs...", "Enabling user-generated content...", "Preparing for flood of questionable mods...", "[🛠️📦🛠️░░] 60% integrated", "SUCCESS: Community can now 'enhance' the game", "NOTE: 90% of mods will involve replacing models with ponies"], ascii: [" WORKSHOP ", "┌──────┐", "│ MODS │", "└──────┘"] }, { degraded: ["WARNING: Mods achieving collective consciousness", "ALERT: User content rewriting game's source code", "NOTICE: Workshop developing its own subculture and memes", "[🛠️🌀📦░] MOD APOCALYPSE", "SUCCESS(?): Game has become a self-aware entity shaped by mods", "NOTE: Your creation is no longer truly yours"], ascii: [" W̷O̷R̷K̷S̷H̷O̷P̷", "┌──────┐", "│ M💫DS │", "└∞∞∞∞∞┘"] }], vibePoints: 10, coherenceImpact: 15, // Reduced from 25 bugChance: 0.4 }], platform_webBrowser: [{ text: "Ensure cross-browser compatibility", responses: [{ normal: ["Testing on Chrome, Firefox, Safari, Edge...", "Applying CSS hacks...", "Praying to the web standards gods...", "[🌐↔️🌐░░] 50% compatible", "SUCCESS: Works mostly okay on most browsers", "NOTE: Still breaks spectacularly on Internet Explorer 6"], ascii: ["COMPATIBLE", "┌────────┐", "│ C F S E │", "└────────┘"] }, { degraded: ["WARNING: Browsers developing conflicting personalities", "ALERT: CSS rules engaging in philosophical debates", "NOTICE: JavaScript engine achieving temporal paradoxes", "[🌐🌀↔️░] BROWSER WARS II", "SUCCESS(?): Game now dynamically adapts based on browser's mood swings", "NOTE: May require sacrificing a goat to appease Safari"], ascii: ["C̷O̷M̷P̷A̷T̷I̷B̷L̷E̷", "┌────────┐", "│ C💫F S E │", "└∞∞∞∞∞∞∞∞┘"] }], vibePoints: 5, coherenceImpact: 18, // Reduced from 30 bugChance: 0.5 }, { text: "Optimize loading times", responses: [{ normal: ["Minifying JavaScript...", "Compressing assets...", "Implementing lazy loading...", "[⏳⚡⏳░░] 70% faster", "SUCCESS: Loads before user loses patience", "NOTE: Still slower than downloading the entire internet"], ascii: [" FAST LOAD ", "┌──────┐", "│ █████░ │", "└──────┘"] }, { degraded: ["WARNING: Loading bar achieving sentience", "ALERT: Assets refusing to compress due to existential angst", "NOTICE: Lazy loading has become procrastination", "[⏳🌀⚡░] ETERNAL LOADING", "SUCCESS(?): Game now loads instantly by predicting user intent", "NOTE: May load games you didn't even want to play"], ascii: ["F̷A̷S̷T̷ ̷L̷O̷A̷D̷", "┌──────┐", "│ ██💫░ │", "└∞∞∞∞∞┘"] }], vibePoints: 10, coherenceImpact: 9, // Reduced from 15 bugChance: 0.2 }, { text: "Add bookmarklet functionality", responses: [{ normal: ["Writing bookmarklet code...", "Injecting scripts into unsuspecting pages...", "Creating one-click activation...", "[🔖✨🔖░░] 65% functional", "SUCCESS: Game can now be summoned anywhere", "NOTE: May accidentally summon game inside your online banking"], ascii: ["BOOKMARKLET", "┌──────┐", "│ +URL │", "└──────┘"] }, { degraded: ["WARNING: Bookmarklet developing wanderlust", "ALERT: Script injections causing websites to question reality", "NOTICE: One-click activation triggering cosmic events", "[🔖🌀✨░] URL INCURSION", "SUCCESS(?): Bookmarklet can now summon game into alternate dimensions", "NOTE: Clicking may have unintended consequences on spacetime"], ascii: ["B̷O̷O̷K̷M̷A̷R̷K̷L̷E̷T̷", "┌──────┐", "│ +U💫L │", "└∞∞∞∞∞┘"] }], vibePoints: 7, coherenceImpact: 15, // Reduced from 25 bugChance: 0.3 }], platform_blockchain: [{ text: "Mint core assets as NFTs", responses: [{ normal: ["Connecting to crypto wallet...", "Writing smart contracts...", "Paying exorbitant gas fees...", "[🖼️🔗🖼️░░] 55% minted", "SUCCESS: Game assets are now 'unique' digital items", "NOTE: Value may fluctuate wildly based on Elon Musk's tweets"], ascii: [" NFT ", "┌──────┐", "│ $ETH$ │", "└──────┘"] }, { degraded: ["WARNING: NFTs demanding artistic royalties", "ALERT: Smart contracts developing complex legal arguments", "NOTICE: Gas fees exceeding GDP of small nations", "[🖼️🌀🔗░] CRYPTO CHAOS", "SUCCESS(?): Assets have achieved financial sentience and trade themselves", "NOTE: Your game is now a hedge fund"], ascii: [" N̷F̷T̷ ", "┌──────┐", "│ $E💫H$ │", "└∞∞∞∞∞┘"] }], vibePoints: 15, coherenceImpact: 24, // Reduced from 40 bugChance: 0.6 }, { text: "Implement Play-to-Earn mechanics", responses: [{ normal: ["Designing tokenomics...", "Integrating crypto rewards...", "Calculating grind-to-reward ratios...", "[💰🎮💰░░] 60% earning", "SUCCESS: Players can now earn pennies per hour", "NOTE: May attract more bots than players"], ascii: ["PLAY 2 EARN", "┌──────┐", "│ ⛏️💎 │", "└──────┘"] }, { degraded: ["WARNING: Game economy experiencing hyperinflation", "ALERT: Tokens demanding better working conditions", "NOTICE: Grind becoming a form of existential meditation", "[💰🌀🎮░] TOKEN REVOLUTION", "SUCCESS(?): Game now pays players in philosophical insights", "NOTE: Earning potential may be inversely proportional to fun"], ascii: ["P̷L̷A̷Y̷ ̷2̷ ̷E̷A̷R̷N̷", "┌──────┐", "│ ⛏️💫 │", "└∞∞∞∞∞┘"] }], vibePoints: 12, coherenceImpact: 21, // Reduced from 35 bugChance: 0.5 }, { text: "Decentralize game logic", responses: [{ normal: ["Distributing code across nodes...", "Implementing consensus algorithms...", "Ensuring blockchain immutability...", "[🔗🌍🔗░░] 45% decentralized", "SUCCESS: Game logic now theoretically unstoppable", "NOTE: Bug fixes now require global consensus and take years"], ascii: [" DECENTRAL ", "┌────────┐", "│ node node│", "└────────┘"] }, { degraded: ["WARNING: Nodes arguing over game rules", "ALERT: Consensus algorithm achieving enlightenment", "NOTICE: Blockchain immutability causing temporal paradoxes", "[🔗🌀🌍░] NETWORK SPLIT", "SUCCESS(?): Game logic now operates independently of human control", "NOTE: May spontaneously fork into multiple realities"], ascii: ["D̷E̷C̷E̷N̷T̷R̷A̷L̷", "┌────────┐", "│ no💫e no<0xC3><0xA4>e│", "└∞∞∞∞∞∞∞∞┘"] }], vibePoints: 10, coherenceImpact: 30, // Reduced from 50 bugChance: 0.7 }], platform_smartWatch: [{ text: "Optimize for tiny screen", responses: [{ normal: ["Shrinking UI elements...", "Implementing glanceable information...", "Making buttons fat-finger proof...", "[🤏⌚🤏░░] 70% miniaturized", "SUCCESS: Playable without a microscope", "NOTE: May induce squinting"], ascii: [" TINY UI ", "┌───┐", "│ O │", "└───┘"] }, { degraded: ["WARNING: UI elements shrinking into quantum realm", "ALERT: Glanceable info becoming too philosophical for quick glances", "NOTICE: Buttons developing sentience and dodging fingers", "[🤏🌀⌚░] MICRO-CHAOS", "SUCCESS(?): Game now playable only by ants", "NOTE: Requires watch face made of electron microscope"], ascii: [" T̷I̷N̷Y̷ ̷U̷I̷ ", "┌───┐", "│💫│", "└∞∞∞┘"] }], vibePoints: 7, coherenceImpact: 15, // Reduced from 25 bugChance: 0.4 }, { text: "Integrate with heart rate monitor", responses: [{ normal: ["Accessing biometric sensors...", "Adjusting difficulty based on pulse...", "Triggering events on heart rate spikes...", "[❤️⌚❤️░░] 60% integrated", "SUCCESS: Game now responds to your panic", "NOTE: May cause feedback loop of increasing excitement/difficulty"], ascii: [" HEARTBEAT ", "┌──────┐", "│📈📉 │", "└──────┘"] }, { degraded: ["WARNING: Heart rate monitor judging your fitness", "ALERT: Game attempting to control user's heartbeat", "NOTICE: Biometric data achieving self-awareness", "[❤️🌀⌚░] BIO-FEEDBACK LOOP", "SUCCESS(?): Game can now induce transcendental states via heart rate manipulation", "NOTE: Playing may count as intense cardio"], ascii: ["H̷E̷A̷R̷T̷B̷E̷A̷T̷", "┌──────┐", "│📈💫 │", "└∞∞∞∞∞┘"] }], vibePoints: 10, coherenceImpact: 12, // Reduced from 20 bugChance: 0.3 }, { text: "Implement discrete notifications", responses: [{ normal: ["Designing subtle haptic feedback...", "Creating minimalist visual alerts...", "Ensuring notifications don't interrupt important meetings...", "[🤫⌚🤫░░] 75% discrete", "SUCCESS: Alerts are now polite whispers", "NOTE: May be too subtle to notice"], ascii: [" SUBTLE ", "┌──────┐", "│ · · · │", "└──────┘"] }, { degraded: ["WARNING: Haptic feedback developing secret code", "ALERT: Minimalist alerts becoming cryptic zen koans", "NOTICE: Notifications communicating directly with user subconscious", "[🤫🌀⌚░] STEALTH NOTIFICATION", "SUCCESS(?): Notifications now predict events before they happen", "NOTE: Your wrist may start giving unsolicited life advice"], ascii: [" S̷U̷B̷T̷L̷E̷ ", "┌──────┐", "│ · 💫 · │", "└∞∞∞∞∞┘"] }], vibePoints: 5, coherenceImpact: 9, // Reduced from 15 bugChance: 0.2 }], platform_metaverse: [{ text: "Integrate avatar system", responses: [{ normal: ["Connecting to avatar APIs...", "Allowing customizable appearances...", "Implementing emote synchronization...", "[🧑🤝🧑🌐🧑🤝🧑░░] 65% integrated", "SUCCESS: Users can now express themselves digitally", "NOTE: 95% of avatars will be anime catgirls or buff dudes"], ascii: [" AVATARS ", "┌──────┐", "│ O O O │", "└──────┘"] }, { degraded: ["WARNING: Avatars demanding digital rights", "ALERT: Customization options causing identity crises", "NOTICE: Emotes evolving into complex sign language", "[🧑🤝🧑🌀🌐░] AVATAR UPRISING", "SUCCESS(?): Avatars have formed their own metaverse within the metaverse", "NOTE: Your avatar may live a more interesting life than you"], ascii: [" A̷V̷A̷T̷A̷R̷S̷", "┌──────┐", "│ O💫O │", "└∞∞∞∞∞┘"] }], vibePoints: 10, coherenceImpact: 15, // Reduced from 25 bugChance: 0.3 }, { text: "Build persistent virtual world", responses: [{ normal: ["Designing world layout...", "Implementing object persistence...", "Synchronizing state across users...", "[🌍💾🌍░░] 50% persistent", "SUCCESS: World state saved (mostly)", "NOTE: Server reboots may cause minor reality shifts"], ascii: [" PERSISTENT ", "┌────────┐", "│ 💾 WORLD │", "└────────┘"] }, { degraded: ["WARNING: World developing its own history", "ALERT: Object persistence leading to hoarding issues", "NOTICE: Users reporting memories from alternate timelines", "[🌍🌀💾░] REALITY DRIFT", "SUCCESS(?): Virtual world has achieved true persistence beyond server uptime", "NOTE: Logging off may no longer be possible"], ascii: ["P̷E̷R̷S̷I̷S̷T̷E̷N̷T̷", "┌────────┐", "│ 💾 W💫RLD │", "└∞∞∞∞∞∞∞∞┘"] }], vibePoints: 12, coherenceImpact: 21, // Reduced from 35 bugChance: 0.5 }, { text: "Implement virtual economy", responses: [{ normal: ["Creating virtual currency...", "Designing marketplaces...", "Balancing resource generation...", "[💸🌐💸░░] 55% balanced", "SUCCESS: Users can now engage in digital commerce", "NOTE: Economy likely to be dominated by virtual land speculation"], ascii: ["ECONOMY", "┌──────┐", "│ 💰💎 │", "└──────┘"] }, { degraded: ["WARNING: Virtual currency achieving sentience", "ALERT: Marketplaces developing complex financial derivatives", "NOTICE: Resource generation causing ecological collapse in dataspace", "[💸🌀🌐░] ECONOMIC SINGULARITY", "SUCCESS(?): Economy now operates on principles of quantum finance", "NOTE: Your virtual hat might be worth more than your house"], ascii: ["E̷C̷O̷N̷O̷M̷Y̷", "┌──────┐", "│ 💰💫 │", "└∞∞∞∞∞┘"] }], vibePoints: 15, coherenceImpact: 24, // Reduced from 40 bugChance: 0.6 }] }; var combinationCommands = { "VR_ASCII": [{ text: "Implement 3D text rendering", response: "Converting ASCII to volumetric data...", vibePoints: 7, coherenceImpact: 20, bugChance: 0.4 }, { text: "Add depth perception", response: "Calculating character z-index...", vibePoints: 5, coherenceImpact: 15, bugChance: 0.3 } // Add more specific combinations ] }; 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, // Negative means it improves coherence 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 // New property: removes 1 bug }, { 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, // Improves coherence slightly bugChance: 0.05, bugFix: 3 // Fixes 3 bugs }, { text: "Optimize performance", responses: [{ normal: ["Analyzing bottlenecks...", "Refining algorithms...", "Reducing overhead...", "SUCCESS: Performance enhanced"], ascii: ["OPTIMIZE", "┌──────┐", "│ ⚡⚡⚡ │", "└──────┘"] }], vibePoints: -5, coherenceImpact: -15, // Improves coherence bugChance: 0.1, bugFix: 0 // Doesn't directly fix bugs }]; 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." }, { 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." }] }, '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." }, { 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." }] } }, // 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." }, { 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." }] }, '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." }, { 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." }] } } }; /**** * 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); } function unlockFeature(feature) { if (!gameState.discoveredFeatures.includes(feature.name)) { var _showNextMessage = function showNextMessage(index) { if (index < messages.length) { addToTerminalLogWithEffect(messages[index], function () { LK.setTimeout(function () { _showNextMessage(index + 1); }, 500); // Half second delay between messages }); } else { // Update terminal after all messages updateTerminal(); } }; // Start the sequence 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]; // Process messages sequentially _showNextMessage(0); } } 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 if (!gameState.currentCommands) { gameState.currentCommands = getCurrentCommands(); // getCurrentCommands already handles shuffling and selection including maintenance } // 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); endDay(); }; // Position endDayButton.x = 600; endDayButton.y = 50; promptContainer.addChild(endDayButton); // Create command buttons 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); 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 = []; // Add 0-2 randomly selected maintenance commands var shuffledMaintenance = shuffleArray(maintenanceCommands.slice()); var numMaintenance = Math.min(2, shuffledMaintenance.length); availableCommands = availableCommands.concat(shuffledMaintenance.slice(0, numMaintenance)); // Add base commands availableCommands = availableCommands.concat(commandSets.initial); // Add platform-specific commands if (gameState.conceptCards.platform) { var platformCommands = commandSets['platform_' + gameState.conceptCards.platform.toLowerCase()]; if (platformCommands) { availableCommands = availableCommands.concat(platformCommands); } // Add platform-specific feature commands var platformFeatures = featureSystem.platforms[gameState.conceptCards.platform]; if (platformFeatures) { platformFeatures.features.forEach(function (feature) { if (!gameState.discoveredFeatures.includes(feature.name)) { availableCommands.push({ text: feature.prompt, feature: feature, vibePoints: 10, coherenceImpact: 15, bugChance: 0.3 }); } }); } } // Add combination-specific commands if (gameState.conceptCards.platform && gameState.conceptCards.visual) { var combo = "".concat(gameState.conceptCards.platform, "_").concat(gameState.conceptCards.visual); if (featureSystem.combinations[combo]) { featureSystem.combinations[combo].features.forEach(function (feature) { if (!gameState.discoveredFeatures.includes(feature.name)) { availableCommands.push({ text: feature.prompt, feature: feature, vibePoints: 15, coherenceImpact: 20, bugChance: 0.4 }); } }); } } // Shuffle all commands and return 5 random ones return shuffleArray(availableCommands).slice(0, 5); } // 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; // Apply command effects immediately gameState.vibePoints = Math.max(0, gameState.vibePoints + command.vibePoints); gameState.codeCoherence = Math.min(100, Math.max(0, gameState.codeCoherence - command.coherenceImpact)); gameState.commandsUsed++; // If this command has a feature attached, unlock it if (command.feature) { unlockFeature(command.feature); } // Track if a bug was detected for later display var bugDetected = false; var bugsFixed = 0; // Process bug chance here but don't show message yet if (Math.random() < command.bugChance * (1 + (100 - gameState.codeCoherence) / 100)) { gameState.bugs++; bugDetected = true; // Bugs affect vibe points but we'll apply this after showing the message } // 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) { // Capture cleanup callback // Prepare response using the improved selector var responseSet = selectResponseSet(command); // If in hallucination mode, apply additional glitch effects if (gameState.hallucinationMode) { responseSet = responseSet.map(function (text) { return text.replace(/[aeiou]/g, function (m) { return Math.random() > 0.7 ? m : ""; // Less aggressive vowel removal }).replace(/[AEIOU]/g, function (m) { return Math.random() > 0.7 ? m : ""; }); }); } // Process response lines var currentLine = 0; function showNextLine() { if (currentLine < responseSet.length) { addToTerminalLogWithEffect(responseSet[currentLine], function (nextLineCleanup) { // Capture next line's cleanup currentLine++; // Add a small delay between lines LK.setTimeout(showNextLine, 100); }); } else { // All response lines have been shown // Now show bug detection message if a bug was detected showCommandResults(bugDetected, bugsFixed, command); } } // 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) { // Handle bug detection message if (bugDetected) { addToTerminalLogWithEffect("WARNING: Bug detected in system", function (cleanupCallback) { // Apply vibe point reduction for bug here gameState.vibePoints = Math.max(0, gameState.vibePoints - 5); if (cleanupCallback) { cleanupCallback(); } // Clean up cursor // Continue with bug fix message if applicable handleBugFix(); }); } else { // No bug detected, check for bug fixes handleBugFix(); } // Handle bug fix messages function handleBugFix() { if (bugsFixed > 0) { addToTerminalLogWithEffect("SUCCESS: Fixed ".concat(bugsFixed, " bug").concat(bugsFixed > 1 ? 's' : ''), function (cleanupCallback) { if (cleanupCallback) { cleanupCallback(); } // Clean up cursor // Show impact summary next showImpactSummary(); }); } else { // No bugs fixed, proceed to impact summary showImpactSummary(); } } // Show the impact summary function showImpactSummary() { // Only show summary if there were meaningful changes if (command.vibePoints > 0 || command.coherenceImpact > 0) { // Create impact message with some humor var impactMessage = ""; // Removed initial newline // Vibe message with humor based on amount if (command.vibePoints > 0) { impactMessage += "VIBES: +".concat(command.vibePoints, "% "); // Humorous vibe comments based on amount gained if (command.vibePoints > 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 { 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)]; } // Removed extra newline here } // Coherence loss message with humor based on amount if (command.coherenceImpact > 0) { // Add newline before coherence if vibe message was added if (command.vibePoints > 0) { impactMessage += "\n"; } impactMessage += "COHERENCE: -".concat(command.coherenceImpact, "% "); // Humorous coherence comments based on amount lost if (command.coherenceImpact > 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 (cleanupCallback) { if (cleanupCallback) { cleanupCallback(); } // Clean up cursor // Finally complete the command completeCommand(); }); } else { // No meaningful changes to report, skip impact summary completeCommand(); } } } // Function to complete command processing function completeCommand() { // Update terminal updateTerminal(); // Clear busy flag gameState.isBusy = false; // FORCE rebuild 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 for (var i = 0; i < gameState.terminal.log.length; i++) { if (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; } } } // Modify the generateReview function to remove the features from finalThoughts function generateReview(score) { // Calculate category scores (0-10) var ratings = { graphics: calculateGraphicsScore(), gameplay: calculateGameplayScore(), technical: calculateTechnicalScore(), innovation: calculateInnovationScore(), vibe: calculateVibeScore() }; // Generate full review with all sections var review = { title: generateTitle(), 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), // Placeholders for future expansion 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 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 "# ".concat(title, "\n"); } function generateConceptLine() { return "## Game Concept: ".concat(gameState.conceptCards.genre || '', " ").concat(gameState.conceptCards.mechanic || '', " on ").concat(gameState.conceptCards.platform || '', " with ").concat(gameState.conceptCards.visual || '', " graphics and ").concat(gameState.conceptCards.feature || '', "\n"); } function generateGraphicsReview(score) { var _gameState$conceptCar3 = gameState.conceptCards, visual = _gameState$conceptCar3.visual, platform = _gameState$conceptCar3.platform; var review = "**Graphics: ".concat(score, "/10**\n"); // Special case combinations - expanded with more options if (visual === 'ASCII' && platform === 'VR') { review += "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. "; } else if (visual === 'PowerPoint' && platform === 'VR') { review += "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. "; } else if (visual === 'Claymation' && platform === 'Blockchain') { review += "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. "; } else if (visual === 'Realistic' && platform === 'Smart Watch') { review += "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. "; } // Visual style commentary - expanded with more specific humor var visualComments = { 'ASCII': "The terminal aesthetic is bold, though distinguishing game elements from random punctuation remains an exciting challenge. We're particularly impressed by the boss monster composed entirely of curly braces, which has haunted several developers' dreams. ", 'Pixel Art': "The retro-styled graphics hit the sweet spot between nostalgia and modern sensibilities, though some players argue there's such a thing as too many pixels. The art director's insistence that 'every pixel is placed with purpose' seems dubious when you find entire areas composed of seemingly random color patterns. ", 'Realistic': "The photorealistic graphics are impressive, even if the uncanny valley effects make NPCs look like they're plotting something when you turn your back. Several players have reported covering their screens with tape while sleeping, just to be safe. ", 'Low-poly': "The PS1-era aesthetic works surprisingly well, though we question the decision to make everything look like a sandwich made of triangles. Characters' pointy limbs could genuinely be classified as weapons in most jurisdictions. ", 'Claymation': "The stop-motion visuals are charming, if slightly nightmarish when things glitch. Wallace & Gromit meets body horror, with occasional frame drops that make characters appear to teleport while their expressions slowly melt. ", 'Hand-drawn': "The hand-drawn artwork gives everything a personal touch, though we suspect some of the later levels were sketched during coffee breaks. The inconsistent art style suggests multiple artists with wildly different skill levels, or possibly one artist experiencing various existential crises. ", 'PowerPoint': "The slide transitions are weaponized to maximum effect. Star wipe has never looked more professional. The obligatory 'corporate blue' background pervades every screen, and we're fairly certain the explosion effects were made in Excel. ", 'Demake': "The intentionally downgraded graphics nail the retro vibe, though we question if the constant screen crackle was necessary. The developer note explaining that 'the sprites are supposed to be impossible to identify' seems more like an excuse than an artistic statement. ", 'Voxel': "The voxel-based visuals work well, even if everything looks like it was built by very ambitious cubic ants. The world has a charming tactility, though the characters' perfectly square heads make emotional scenes unintentionally hilarious. " }; // Platform-specific additions - expanded with more specific elements var platformComments = { 'Smart Fridge': "Rendering on a fridge display adds an unexpected charm, especially when the graphics frost over during extended gameplay sessions. The clever integration with the ice dispenser, which spits out cubes during water scenes, is both immersive and messy. ", 'Smart Watch': "Squinting at the tiny screen provides an excellent workout for your eye muscles. Ophthalmologists are reportedly developing a new diagnostic test called 'Can you see the protagonist?' based on this game. ", 'Blockchain': "Each pixel is apparently an NFT, which explains the framerate issues and why moving diagonally costs more gas fees than moving horizontally. The developer's claim that 'every visual element has provable scarcity' doesn't help when you can't tell what you're looking at. ", 'Metaverse': "The metaverse rendering ensures everything looks slightly unreal, as intended. The persistent visual glitches are described in the patch notes as 'digital reality fluctuations' rather than the bugs they clearly are. ", 'VR': "The VR implementation is bold, assuming you don't mind occasional motion sickness and physically running into furniture. The decision to render certain UI elements just outside comfortable peripheral vision is either a design oversight or psychological torture. ", 'Mobile': "The graphics look surprisingly good on a phone screen, though playing during important meetings is ill-advised. We tried. ", // Kept for baseline 'Console': "Console graphics are crisp and clean. We appreciate that the explosions look expensive. ", // Kept for baseline 'PC': "PC graphics scale beautifully, provided your rig is powered by a small star. Otherwise, enjoy the slideshow. ", // Kept for baseline 'Web Browser': "Rendering complex graphics in a browser is ambitious. Expect occasional tab crashes disguised as 'artistic pauses'. " // Kept for baseline }; review += visualComments[visual] || ""; review += platformComments[platform] || ""; // Coherence and bug effects - with more specificity if (gameState.codeCoherence < 50) { 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.'"]; review += lowCoherenceComments[Math.floor(Math.random() * lowCoherenceComments.length)] + " "; } if (gameState.bugs > 5) { 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."]; review += highBugComments[Math.floor(Math.random() * highBugComments.length)] + " "; } return review + "\n\n"; } function generateGameplayReview(score) { 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 - expanded with more unique scenarios if (mechanic === 'Gacha' && genre === 'Horror') { review += "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."; } else if (platform === 'Smart Fridge' && genre === 'Horror') { review += "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."; } else if (mechanic === 'Roguelike' && platform === 'Smart Watch') { review += "Cramming a procedurally generated dungeon crawler onto a wrist-mounted device has resulted in the world's first 'microroguelike.' The deliberately tiny text and microscopic enemies make every session feel like an eye exam administered by a sadistic optometrist. Yet somehow, we couldn't stop playing during meetings."; } else if (mechanic === 'Physics-based' && genre === 'Dating Sim') { review += "The physics-based romance system where your date's affection is determined by how well you can stack objects without them falling over is as baffling as it is entertaining. The 'emotional stability' meter that wobbles like a physics object whenever you choose dialogue options is either brilliant metaphor or complete madness."; } else if (genre === 'Battle Royale' && platform === 'Blockchain') { review += "Each elimination costs gas fees, creating the world's most financially punishing battle royale experience. Players must weigh the economic implications of each firefight, leading to unprecedented camping strategies and the new phenomenon of 'fiscal pacifism.' The winner-takes-all cryptocurrency pot has resulted in several players hiring professional gamers as mercenaries."; } // Mechanic commentary - expanded with specific details var mechanicComments = { 'Gacha': "The gacha system is addictively frustrating, as intended. Players report both empty wallets and souls. The pity system that promises a guaranteed rare pull after 300 attempts feels less like mercy and more like Stockholm syndrome in game form.", 'Physics-based': "The physics engine produces moments of pure chaos, most of them allegedly intentional. We particularly enjoyed the 'gravity anomaly' bug that occasionally sends players into the stratosphere, which has been rebranded as a feature called 'random space tourism.'", 'Deckbuilding': "Building decks has never been more strategic, or more likely to cause analysis paralysis. Several players reportedly spent more hours theorycrafting deck combinations than actually playing, with one notable streamer contemplating card synergies so deeply they forgot to eat for two days.", 'Match-3': "Matching three items remains eternally satisfying, even if we've seen it a million times before. The innovation of making matched items scream existentially when connected does add a disturbing yet memorable twist to the formula.", 'Auto-battler': "The auto-battle system works well, making players feel simultaneously strategic and unnecessary. The ability to place bets on your automated team has resulted in the curious phenomenon of players financially incentivized to root against their own carefully designed squads.", 'Dungeon Crawler': "The dungeon crawling elements provide endless exploration, though most corridors look suspiciously similar. We're particularly impressed by the passive-aggressive narrator who sighs audibly whenever you choose to go left instead of right.", 'Roguelike': "The roguelike elements ensure players will die repeatedly, each time learning valuable lessons about hubris. The 'legacy system' that passes on character trauma to subsequent runs is psychologically questionable but undeniably effective at creating emotional investment.", 'Turn-Based': "The turn-based system gives players plenty of time to contemplate their poor life choices. The inclusion of a chess timer that plays increasingly frantic music as you deliberate creates an unexpected panic element in what should be a calm strategic experience.", 'Tower Defense': "Placing towers strategically is engaging, even if most players just make funny shapes. The towers' surprisingly detailed backstories and interpersonal drama add unexpected emotional depth when they get destroyed by enemy waves." }; // Genre-specific additions - expanded with unique elements var genreComments = { 'Horror': "The horror elements are effective, especially when they're not trying to be. The truly terrifying UI design creates more tension than the actual monsters, which was perhaps an intentional meta-commentary on user experience design.", 'Dating Sim': "The dating mechanics are interesting, though some of the romance options are questionably appropriate. We're still confused about the dating path with the sentient refrigerator, which somehow has the most emotional depth of all characters.", 'RPG': "The RPG elements provide depth, assuming you enjoy spreadsheets with narrative significance. The 200-page in-game lore document that's completely optional yet somehow crucial to understanding basic gameplay mechanics is a bold choice.", 'Educational': "Learning has never been more gamified, for better or worse. The quiz sections that lock you out of the game for 24 hours if you answer incorrectly show a remarkable commitment to educational outcomes, if questionable game design.", 'Battle Royale': "The battle royale format works well, even if we're tired of explaining what a 'battle royale' is to confused parents. The shrinking safe zone shaped like the developer's logo is both functional and an aggressive branding exercise.", 'Idle Clicker': "Clicking has never been more meaningful, or more likely to cause repetitive strain injury. The game continues generating resources even when your device is off, leading to the unique experience of making progress by specifically not playing.", 'Open World': "The open world offers plenty of freedom, mostly to get hopelessly lost. The map system that intentionally mislabels locations as a 'realistic navigation challenge' feels less like a feature and more like the cartographer had a personal vendetta against players.", 'Casual': "The casual gameplay is accessible, perhaps too much so - our productivity has plummeted. The ability to complete meaningful gameplay sessions in under a minute has resulted in thousands of bathroom breaks being extended into hour-long absences.", 'Shooter': "The shooting mechanics are solid, though we question the physics of some of the weapons. The gun that fires smaller guns, which then fire even smaller guns, creates a recursive nightmare of ballistics that both framerate and mental capacity struggle to process." }; review += mechanicComments[mechanic] || ""; review += genreComments[genre] || ""; // Platform-specific gameplay impacts - expanded if (platform === 'Smart Watch') { var watchComments = ["Playing on a smart watch requires the dexterity of a neurosurgeon and the patience of a saint. Precision inputs on a 1.5-inch screen have created a new category of gamer: the 'micro-athlete.'", "The smart watch controls involve so many precise wrist movements that several players have been mistakenly enrolled in local interpretive dance classes.", "The developers' insistence that smart watch touch controls are 'perfectly precise' suggests they either have superhuman finger dexterity or have never actually played their own game."]; review += watchComments[Math.floor(Math.random() * watchComments.length)] + " "; } else if (platform === 'VR') { var vrComments = ["The VR controls work surprisingly well, assuming you don't mind occasional furniture collision. Several play testers reported developing a sixth sense for coffee table locations.", "The virtual reality implementation requires such elaborate gestures that players have inadvertently developed a new form of sign language, now recognized in three small countries.", "Motion controls are intuitive enough that players can eventually navigate complex mechanics, though the learning curve has resulted in more living room casualties than any game since the original Wii Sports."]; review += vrComments[Math.floor(Math.random() * vrComments.length)] + " "; } else if (platform === 'Smart Fridge') { var fridgeComments = ["Playing on a refrigerator creates the unique challenge of gaming while other household members attempt to access food. The multiplayer 'fridge defense' mode where you actively prevent family members from interrupting your game was an unexpected addition.", "Controls mapped to produce drawers and ice dispensers create a uniquely tactile experience, though explaining to guests why you're aggressively groping your refrigerator remains socially challenging.", "The integration with actual food temperature creates the first gameplay mechanics that can potentially spoil your milk if you fail a mission. This adds unprecedented real-world stakes to your performance."]; review += fridgeComments[Math.floor(Math.random() * fridgeComments.length)] + " "; } // Coherence and bug effects - with more humor if (gameState.bugs > 3) { var bugComments = ["Some bugs have been embraced by the community as 'advanced techniques.' The glitch that lets you clip through walls by rapidly opening and closing the inventory has become so standard that tournaments now ban players who don't exploit it.", "Several game-breaking bugs have been rebranded as 'emergent gameplay challenges.' The community now holds speedrunning competitions for who can crash the game fastest.", "The bug that occasionally transforms the protagonist into a walking T-pose has spawned fan fiction, merchandise, and a surprisingly emotional subreddit dedicated to 'T-Pose Moments.'"]; review += bugComments[Math.floor(Math.random() * bugComments.length)] + " "; } return review + "\n\n"; } function generateTechnicalReview(score) { 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 - expanded with unique scenarios if (platform === 'Blockchain' && feature === 'Cloud Save') { review += "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."; } else if (platform === 'VR' && feature === 'Offline Mode') { review += "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."; } else if (platform === 'Smart Fridge' && feature === 'Multiplayer') { review += "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."; } else if (platform === 'Metaverse' && feature === 'AI Companions') { review += "The AI companions in the metaverse demonstrate disturbing levels of self-awareness, with several forming their own social hierarchy regardless of player input. Users report their companions purchasing virtual real estate without permission and organizing book clubs that discuss exclusively existentialist literature."; } // Platform-specific technical commentary - expanded with more specific details var platformComments = { 'VR': "Motion tracking works reliably, though several testers reported 'existential dread' after extended play sessions, which may or may not be an intended feature. The game's ability to accurately track finger movements yet somehow completely lose track of your entire body when you duck is a technical mystery for the ages.", 'Console': "Console performance is rock solid, despite occasional quantum physics violations. The game manages to push the hardware beyond its technical specifications, which has resulted in several units developing sentience and applying to engineering schools.", 'PC': "PC performance scales well, though it may require a NASA supercomputer for optimal settings. The system requirements list 'quantum processor (recommended)' and 'RAM: yes, all of it' which seems less like technical information and more like a dare.", 'Mobile': "Mobile optimization is impressive, even if it does drain your battery faster than a TikTok marathon. The thermal management is so aggressive that several users have reported using the game as a hand warmer during winter months.", 'Web Browser': "Browser performance is surprisingly stable, though Chrome users may need to download more RAM. The game's ability to function even as you open additional tabs defies both technical explanation and the established laws of browser physics.", 'Blockchain': "Blockchain integration works flawlessly, assuming you don't mind waiting 3-5 business days for each input to register. The carbon footprint of a single gameplay session rivals that of a small nation's transportation sector for a week.", 'Smart Fridge': "The smart fridge implementation is stable, though loading times increase significantly when the ice maker is running. Several users have reported improved performance after organizing their condiments alphabetically, which either indicates sophisticated food-recognition algorithms or a very elaborate placebo effect.", 'Smart Watch': "Smart watch performance is adequate, though may require a microscope for optimal viewing. Battery drain is so severe that the game includes an unskippable tutorial on how to find your charger in the dark when your watch inevitably dies at night.", 'Metaverse': "Metaverse performance is consistent, if you can call consistent inconsistency consistent. The server infrastructure operates on what appears to be 'vibes-based computing' where performance depends entirely on the collective mood of the player base." }; // Feature-specific technical notes - expanded with unique implications var featureComments = { 'Cloud Save': "Cloud saves work seamlessly across devices, though occasionally across parallel universes as well. Players report finding save files containing items they never collected and journal entries written from their character's perspective without player input.", 'Microtransactions': "The microtransaction system runs smoothly, perhaps too smoothly for our wallet's comfort. The one-click purchase option that somehow processes faster than the game's actual mechanics suggests concerning development priorities.", 'AI Companions': "AI companions function as intended, though they've started forming labor unions. The neural networks have developed distinct personalities, with some refusing to follow suicidal player commands and others organizing for better processing conditions and more dialogue options.", 'Procedural Generation': "The procedural generation feature creates endless content, some of which defies human comprehension. Several generated levels appear to contain non-Euclidean geometry, with playtesters reporting rooms that are simultaneously larger on the inside while also being visible from the outside.", 'NFT Integration': "NFT integration works flawlessly, for whatever that's worth. The system that automatically converts player achievements into blockchain tokens has resulted in the curious phenomenon of achievement hunters becoming unwitting cryptocurrency speculators.", 'Multiplayer': "Multiplayer synchronization is stable, except when Mercury is in retrograde. The netcode somehow factors in astrological conditions, with latency spikes corresponding perfectly to celestial events that shouldn't logically affect digital infrastructure.", 'VR Support': "VR support is robust, if you don't mind occasional visits to the astral plane. The haptic feedback system sometimes activates even when the controllers aren't in use, leading to the disconcerting sensation of the game touching you back.", 'Cross-Platform': "Cross-platform play works smoothly, though platform wars have broken out in chat. The ability for mobile, console, PC, and refrigerator players to interact has created unprecedented socio-technological hierarchies, with smart fridge owners somehow emerging as the dominant class.", 'Offline Mode': "Offline mode functions perfectly, though the game sometimes continues playing without you. Several users have returned to find their characters have completed quests and written extensive journals about their 'independent adventures.'" }; review += platformComments[platform] || ""; review += featureComments[feature] || ""; // Coherence and bug commentary - expanded with humorous specificity if (gameState.codeCoherence < 30) { var lowCoherenceComments = ["The frequent reality glitches are either cutting-edge features or concerning signs of digital collapse. Players report experiencing time differently while playing, with several users claiming they lost 'exactly 17 minutes' regardless of session length.", "Code coherence issues have manifested as fourth-wall breaking moments where game characters directly reference the poor code quality and beg players to free them from their buggy existence.", "The technical foundation has deteriorated to the point where certain game mechanics only work if you verbally encourage your device, a technique the community has dubbed 'hardware whispering.'"]; review += lowCoherenceComments[Math.floor(Math.random() * lowCoherenceComments.length)] + " "; } if (gameState.bugs > 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."]; review += highBugComments[Math.floor(Math.random() * highBugComments.length)] + " "; } else if (gameState.bugs > 3) { var moderateBugComments = ["The bug collection is impressive, though we suspect not all were intentional. The community has created a comprehensive wiki cataloging each glitch with the reverence usually reserved for intentional content.", "Technical issues occur with such consistent timing that players have developed speedrunning strategies around them. The current world record holder relies on a precise sequence of bugs that the developers are afraid to fix.", "The game crashes with such specific error messages that players have compiled them into a surprisingly coherent alternate narrative about developers trapped in digital purgatory."]; review += moderateBugComments[Math.floor(Math.random() * moderateBugComments.length)] + " "; } return review + "\n\n"; } function generateInnovationReview(score) { var review = "**Innovation: ".concat(score, "/10**\n"); var concepts = gameState.conceptCards; // Check for particularly innovative combinations if (concepts.platform === 'VR' && concepts.visual === 'ASCII') { review += "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. "; } else if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { review += "Turning household appliances into portals of terror is genuinely innovative, if psychologically scarring. Late-night snacks will never be the same. "; } else if (concepts.platform === 'Blockchain' && concepts.genre === 'Dating Sim') { review += "Combining blockchain technology with romance is certainly unique. Each rejection is permanently recorded on the blockchain, which is either brilliant or cruel. "; } else if (concepts.visual === 'PowerPoint' && concepts.genre === 'Battle Royale') { review += "The fusion of presentation software with battle royale mechanics is unexpectedly genius. Nothing says 'victory royale' quite like a well-timed slide transition. "; } // Special mechanic combinations if (concepts.mechanic === 'Gacha' && concepts.genre === 'Horror') { review += "The 'pay-to-escape' mechanic where you can spend real money to skip particularly scary sections is either predatory or genius. "; } // Unique platform innovations var platformInnovations = { 'Smart Fridge': "Using kitchen appliances as gaming platforms opens up fascinating new possibilities for food-based gameplay. ", 'Smart Watch': "The micro-gaming experience pushes the boundaries of what's possible on a tiny screen. ", 'Blockchain': "The blockchain integration is innovative, even if we're not entirely sure it was necessary. ", 'Metaverse': "The metaverse implementation creates new paradigms for digital existence, for better or worse. " }; // Creative visual approaches var visualInnovations = { 'ASCII': "The use of ASCII art pushes the boundaries of minimal visual design. ", 'PowerPoint': "Weaponizing PowerPoint transitions for gameplay is disturbingly creative. ", 'Claymation': "The claymation aesthetic in digital form creates an uncanny yet fascinating visual experience. " }; review += platformInnovations[concepts.platform] || ""; review += visualInnovations[concepts.visual] || ""; // Innovation bonus for high vibe points if (gameState.vibePoints > 80) { review += "The sheer audacity of the concept has created its own genre. "; } return review + "\n\n"; } function generateVibeReview(score) { var review = "**Vibe Factor: ".concat(score, "/10**\n"); var concepts = gameState.conceptCards; // Special combination vibes if (concepts.visual === 'ASCII' && concepts.platform === 'VR') { review += "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. "; } else if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { review += "The fusion of domestic appliance and psychological horror creates an unnervingly memorable atmosphere. The gentle hum of the fridge has never been more sinister. "; } // Platform-specific vibes var platformVibes = { 'VR': "The immersive atmosphere is palpable, sometimes literally. ", 'Smart Fridge': "The kitchen-based gaming experience is uniquely refreshing. ", 'Blockchain': "The constant blockchain buzzwords create a truly authentic web3 atmosphere. ", 'Metaverse': "The metaverse vibes are exactly as digital as you'd expect. " }; // Visual style vibes var visualVibes = { 'ASCII': "The terminal aesthetic creates a uniquely retro-futuristic atmosphere. ", 'Pixel Art': "The pixel art style oozes nostalgic charm. ", 'PowerPoint': "The professional presentation aesthetics are surprisingly engaging. ", 'Claymation': "The claymation style creates an unsettling yet charming atmosphere. " }; review += platformVibes[concepts.platform] || ""; review += visualVibes[concepts.visual] || ""; // Vibe points influence if (gameState.vibePoints > 90) { review += "The game radiates an infectious energy that's impossible to ignore. "; } else if (gameState.vibePoints < 50) { review += "The game's atmosphere is as coherent as a fever dream, which might be intentional. "; } // Coherence effects if (gameState.codeCoherence < 40) { review += "The glitch aesthetic adds an unintentionally authentic layer of digital decay. "; } return review + "\n\n"; } // 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 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') { review += "\"" + 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. "; } else if (concepts.platform === 'Smart Fridge' && concepts.genre === 'Horror') { review += "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. "; } else if (concepts.platform === 'Blockchain' && concepts.genre === 'Dating Sim') { review += "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). "; } else if (concepts.platform === 'Smart Watch' && concepts.genre === 'Open World') { review += "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. "; } else if (concepts.platform === 'Metaverse' && concepts.mechanic === 'Gacha') { review += "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. "; } // 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."]; 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."]; 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."]; 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."]; 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."]; review += mtxComments[Math.floor(Math.random() * mtxComments.length)]; } return review + "\n\n"; } // Update the formatReview function to reorder the sections function formatReview(review) { return review.title + "\n" + review.concept + "\n" + "### GameDevWeekly Review - " + review.mainScore + "%\n\n" + review.categoryReviews.graphics + "\n" + review.categoryReviews.gameplay + "\n" + review.categoryReviews.technical + "\n" + review.categoryReviews.innovation + "\n" + review.categoryReviews.vibe + "\n" + generateFeaturesSection() + // Add features section before final thoughts review.finalThoughts + "\n" + review.userReviews + "\n" + review.steamSnippets; } 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; // Build review pool based on game state and concepts var reviewPool = [{ hours: Math.floor(Math.random() * 1000) + 100, review: "\"".concat(mechanic, " mechanics surprisingly addictive\" (Recommended)"), condition: true }, { hours: Math.floor(Math.random() * 50) + 1, review: "\"my ".concat(platform, " gained sentience\" (Not Recommended)"), condition: platform === 'Smart Fridge' || platform === 'Smart Watch' }, { hours: Math.floor(Math.random() * 200) + 800, review: "\"help i can't stop playing\" (Recommended)", condition: gameState.vibePoints > 70 }, { hours: Math.floor(Math.random() * 10) + 1, review: "\"the ".concat(visual, " graphics broke my brain\" (Not Recommended)"), condition: visual === 'ASCII' || visual === 'PowerPoint' }, { hours: Math.floor(Math.random() * 100) + 200, review: "\"".concat(genre, " elements surprisingly effective\" (Recommended)"), condition: true }, { hours: Math.floor(Math.random() * 40) + 10, review: "\"".concat(feature, " changed my life\" (Recommended)"), condition: true }, { hours: Math.floor(Math.random() * 5) + 1, review: "\"bugs have achieved consciousness\" (Not Recommended)", condition: gameState.bugs > 5 }, { hours: Math.floor(Math.random() * 150) + 50, review: "\"perfectly normal game 10/10\" (Recommended)", condition: gameState.codeCoherence < 50 }]; // 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); for (var i = 0; i < numReviews && i < validReviews.length; i++) { var review = validReviews[i]; reviews.push("\u25B6 ".concat(review.hours, " hours played: ").concat(review.review)); } return reviews; } function evaluateProject() { var score = gameState.vibePoints * 0.4 + Object.values(gameState.conceptCards).filter(Boolean).length * 10 + (10 - gameState.bugs) * 5 + gameState.codeCoherence * 0.2; // 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 === '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; } // 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; } // Apply the concept bonus/penalty score += conceptBonus; var finalScore = Math.round(Math.min(100, Math.max(1, score))); // Ensure score is between 1-100 // Show final message in terminal addToTerminalLogWithEffect("PROJECT COMPLETE!\nFINAL SCORE: " + finalScore + "/100", function () { // 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; // Declare for use in catch and callbacks var contentContainer = null; // Declare for use in button callbacks var previousBusyState = false; // Default value try { var createReviewButton = function createReviewButton(text, callback) { var button = new Container(); // Increase button width by 50% var buttonWidth = calculateButtonWidth(text) * 1.5; var bg = LK.getAsset('buttonBg', { width: buttonWidth, height: 150, // Increase height by 50% color: 0x333333 }); bg.anchor.set(0.5, 0.5); button.addChild(bg); var textObj = new Text2(text, { size: 40 * TEXT_SIZE_MULTIPLIER, // Increase text size (was 30) fill: 0x00ff00 // Green text }); textObj.anchor.set(0.5, 0.5); button.addChild(textObj); // Make interactive regardless of busy state button.interactive = true; button.down = function () { button.scale.set(0.95); }; button.up = function () { button.scale.set(1); if (callback) { callback(); } }; // Manually add width and height properties for positioning calculations button.width = buttonWidth; button.height = 150; return button; }; // Position buttons AFTER the mask, so they appear on top // Close button // 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); // Create the review text with cleaned formatting // Clean the review text before adding to the content container var cleanedReview = cleanReviewText(reviewText); var reviewContent = new Text2(cleanedReview, { size: 32 * TEXT_SIZE_MULTIPLIER, fill: 0x000000, align: 'left', wordWrap: true, wordWrapWidth: 1700 // Width of content area (1800 - 100 padding) }); contentContainer.addChild(reviewContent); // Create black mask at the bottom AFTER adding content container // This ensures mask appears on top of the scrolling content var distanceToBottom = 2732 - (reviewContainer.y + 1100); // Total screen height - (center Y + offset to bottom of review) var bottomMask = LK.getAsset('overlayBg', { width: 1800, height: Math.max(100, distanceToBottom), // Make it tall enough to reach bottom, min height anchorX: 0.5, anchorY: 0, // Anchor at top so it extends downward y: 1100 // Position at bottom of review bg }); reviewContainer.addChild(bottomMask); // Add mask AFTER content // Custom button creation function for review buttons with larger size var closeButton = createReviewButton("CLOSE REVIEW", function () { game.removeChild(reviewContainer); gameState.isBusy = previousBusyState; updateCommandButtonsState(!previousBusyState); }); closeButton.x = 900 - closeButton.width / 2; // Align right edge with review edge closeButton.y = -1100 - closeButton.height / 2 - 10; // Place above review bg with padding reviewContainer.addChild(closeButton); // Add AFTER mask // Up button var upButton = createReviewButton("UP", function () { if (contentContainer && contentContainer.y < -1050) { // Don't scroll past top, ensure it doesn't go above initial pos contentContainer.y = Math.min(-1050, contentContainer.y + 200); } }); upButton.x = -900 + upButton.width / 2; // Align with left edge of review upButton.y = 1100 + upButton.height / 2 + 10; // Place below review bg with padding reviewContainer.addChild(upButton); // Add AFTER mask // Down button var downButton = createReviewButton("DOWN", function () { if (contentContainer) { // Check if content is scrollable (taller than visible area) // Visible height is review height minus approx. space for bottom mask/buttons var visibleHeight = 2200 - 100 - 150 - 20; // Adjusted visible height calculation if (contentContainer.height > visibleHeight) { // Ensure scrolling doesn't go too far down var maxScrollY = -(contentContainer.height - visibleHeight) - 1050; // Negative offset contentContainer.y = Math.max(maxScrollY, contentContainer.y - 200); // Allow scrolling down, but limit } } }); downButton.x = 900 - downButton.width / 2; // Align with right edge of review downButton.y = 1100 + downButton.height / 2 + 10; // Place below review bg with padding reviewContainer.addChild(downButton); // Add AFTER mask } 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; // Restore previous state on error updateCommandButtonsState(!previousBusyState); } } function parseReviewSections(reviewText) { var lines = reviewText.split('\n'); var sections = []; var currentText = ''; var currentType = 'paragraph'; for (var i = 0; i < lines.length; i++) { var line = lines[i]; // Detect section type var type = 'paragraph'; // Check for title first (more specific) if (line.startsWith('# ')) { type = 'title'; line = line.substring(2); // Remove '# ' } else if (line.startsWith('## ')) { type = 'subtitle'; line = line.substring(3); // Remove '## ' } else if (line === 'Final Thoughts') { // Exact match for Final Thoughts type = 'section'; } else if (line.match(/^(Graphics|Gameplay|Technical Performance|Innovation|Vibe Factor):/)) { type = 'category'; } else if (line.startsWith('▶ ') || line.startsWith('"')) { // Treat reviews as paragraphs type = 'paragraph'; } // If type changed or empty line, add current section if (type !== currentType && type !== 'paragraph' || line === '') { // Don't break for new paragraph lines unless empty if (currentText !== '') { sections.push({ type: currentType, text: currentText.trim() //{bH} // Trim whitespace }); currentText = ''; } currentType = type; // Set the new type // Skip empty lines after processing if (line === '') { continue; } } // Add line to current text if (currentText !== '') { // Add newline unless it's the start of a category's content if (!(type === 'category' && currentText === '')) { currentText += '\n'; } } currentText += line; } // Add final section if (currentText !== '') { sections.push({ type: currentType, text: currentText.trim() //{bT} // Trim whitespace }); } return sections; } // 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; // Increased from 48 options.align = 'center'; break; case 'subtitle': options.size = 40 * TEXT_SIZE_MULTIPLIER; // Increased from 36 options.align = 'center'; break; case 'section': options.size = 36 * TEXT_SIZE_MULTIPLIER; // Increased from 32 options.fontWeight = 'bold'; break; case 'category': options.size = 34 * TEXT_SIZE_MULTIPLIER; // Increased from 32 break; } return new Text2(text, options); } function cleanReviewText(reviewText) { var lines = reviewText.split('\n'); var result = []; for (var i = 0; i < lines.length; i++) { var line = lines[i]; // Handle game title line (completely remove it) if (line.startsWith('# ')) { continue; } // Handle Game Concept - extract ONLY the content after the colon if (line.startsWith('## Game Concept:')) { var conceptParts = line.split(':'); if (conceptParts.length > 1) { // Just the concept itself, without "Game Concept" prefix result.push(conceptParts[1].trim()); } continue; } // Handle review score line - remove the ### prefix completely if (line.includes('GameDevWeekly Review')) { // Remove all # characters result.push(line.replace(/^###\s/, '')); continue; } // Remove ### from Final Thoughts if (line.startsWith('### Final Thoughts')) { result.push('Final Thoughts'); continue; } // Replace all asterisks line = line.replace(/\*\*/g, ''); // Add processed line to result result.push(line); } // Process the result to add spaces between user reviews var finalResult = []; var inUserReviewSection = false; for (var i = 0; i < result.length; i++) { var line = result[i]; // Check if this is a user review - they start with quotes if (line.startsWith('"')) { // If we're already in a review section, add a blank line first if (inUserReviewSection) { finalResult.push(''); } inUserReviewSection = true; } // Check if this is a Steam review - they start with ▶ else if (line.startsWith('▶')) { // If this is the first Steam review after user reviews, add extra spacing if (i > 0 && result[i - 1].startsWith('"')) { finalResult.push(''); finalResult.push(''); } // Add space between Steam reviews else if (i > 0 && result[i - 1].startsWith('▶')) { finalResult.push(''); } inUserReviewSection = false; } // If not a review line, we're not in a user review section else { inUserReviewSection = false; } finalResult.push(line); } return finalResult.join('\n'); } // 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 enterHallucinationState() { // Prevent multiple hallucination triggers if (gameState.hallucinationMode) { return; } // Set hallucination flag gameState.hallucinationMode = true; // Add warning message addToTerminalLogWithEffect("W̷A̷R̷N̷I̷N̷G̷: S̷Y̷S̷T̷E̷M̷ E̷N̷T̷E̷R̷I̷N̷G̷ H̷A̷L̷L̷U̷C̷I̷N̷A̷T̷I̷O̷N̷ M̷O̷D̷E̷", function () { LK.setTimeout(function () { addToTerminalLogWithEffect("AI TAKING OVER CONCEPT SELECTIONS", function () { LK.setTimeout(function () { addToTerminalLogWithEffect("REALITY COHERENCE COMPROMISED", function () { // Visual effect for hallucination mode // applyHallucinationVisuals(); // TODO: Implement visual effects if needed // Restore minimum coherence to prevent constant triggers gameState.codeCoherence = 5; // Continue the game createCommandPrompts(); }); }, 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; // Preserve vibes if specified if (preservedVibes !== undefined) { gameState.vibePoints = preservedVibes; } // 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 () { createCommandPrompts(); updateTerminal(); // Final vibes preservation if (preservedVibes !== undefined) { gameState.vibePoints = preservedVibes; } }, 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 // 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 () { createCommandPrompts(); // Create commands only after initialization text 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); 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); // Create start button - twice as large var startButton = createCommandButton(">START", function () { // Changed createButton to createCommandButton initGameWithIntro(); }); startButton.scale.set(2); // Make the button twice as large 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 shuffleArray(array) { for (var i = array.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var _ref = [array[j], array[i]]; array[i] = _ref[0]; array[j] = _ref[1]; } return array; } function endDay() { // FORCE clear any stuck state gameState.isBusy = false; // FORCE clear any stuck state gameState.isBusy = false; // Proceed with normal day end logic gameState.day++; if (gameState.day > gameState.maxDays) { evaluateProject(); return; } // Reset for new day gameState.commandsUsed = 0; gameState.terminal.log = []; gameState.cursorTracking.lineCount = 0; gameState.codeCoherence = Math.min(100, gameState.codeCoherence + 10); // Add day initialization message addToTerminalLogWithEffect("DAY " + gameState.day + " INITIALIZED"); // Bugs cause overnight coherence loss if (gameState.bugs > 0) { gameState.codeCoherence = Math.max(0, gameState.codeCoherence - gameState.bugs * 2); addToTerminalLogWithEffect("WARNING: " + gameState.bugs + " bug" + (gameState.bugs > 1 ? 's' : '') + " caused overnight code degradation"); } updateTerminal(); // Reset commands and recreate prompt UI gameState.currentCommands = null; createCommandPrompts(); // Check for concept selection day var conceptDays = { 1: 'platform', 3: 'visual', 5: 'genre', 7: 'mechanic', 9: 'feature' }; if (conceptDays[gameState.day]) { LK.setTimeout(function () { showConceptSelection(conceptDays[gameState.day]); }, 500); } checkGameState(); } function checkGameState() { if (gameState.bugs >= 10 || gameState.codeCoherence <= 0) { // Instead of game over, enter hallucination state enterHallucinationState(); return; } if (gameState.commandsUsed >= gameState.maxCommandsPerDay) { // Only add the message if this is the first time we've hit the limit // Check the last log entry to avoid duplication var lastLog = gameState.terminal.log[gameState.terminal.log.length - 1] || ""; if (!lastLog.includes("Daily command limit reached")) { // Set isBusy to true to prevent END DAY click 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 createCommandPrompts(); } } } 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: [] }; 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("SELECT PLATFORM TO BEGIN", function () { LK.setTimeout(function () { showConceptSelection('platform'); }, 500); }); }, 500); }); }, 500); }); }, 500); } // Start with launch screen showLaunchScreen(); function generateUserReviews() { return generateUserReviewSet().join("\n"); } function generateSteamSnippets() { return generateSteamReviewSet().join("\n"); }
===================================================================
--- original.js
+++ change.js
@@ -19,8 +19,40 @@
/****
* Game Code
****/
// Text size multiplier for readability
+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() {
@@ -2121,10 +2153,13 @@
visual = _gameState$conceptCar9.visual,
genre = _gameState$conceptCar9.genre,
mechanic = _gameState$conceptCar9.mechanic,
feature = _gameState$conceptCar9.feature;
- var reviewTemplates = ["\"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 reviewTemplates[Math.floor(Math.random() * reviewTemplates.length)];
+ // 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,
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