<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>May the Quotes Be With You</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;900&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', sans-serif;
}
.team-active {
background-color: #16a34a; /* Tailwind green-600 */
box-shadow: 0 0 15px rgba(22, 163, 74, 0.6); /* Green shadow */
border-color: #15803d; /* Tailwind green-700 for border */
}
.team-active h2 { /* Targeting the "Team X" heading */
color: white !important;
}
.team-active #team1-score,
.team-active #team2-score { /* Targeting the score paragraph */
color: #fef08a !important; /* Tailwind yellow-200 for good contrast on green */
}
.btn {
@apply font-bold py-3 px-6 rounded-lg transition-transform transform hover:scale-105 w-full sm:w-auto disabled:opacity-50 disabled:cursor-not-allowed;
}
#answer-area {
border-left: 4px solid #4a5568;
}
/* Balloon Animation Styles */
@keyframes fall {
0% { top: -20%; opacity: 1; transform: rotate(0deg); }
100% { top: 120%; opacity: 1; transform: rotate(720deg); }
}
.balloon {
position: absolute;
width: 60px;
height: 75px;
border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
opacity: 0;
animation-name: fall;
animation-timing-function: linear;
animation-fill-mode: forwards;
}
.balloon::after {
content: "";
position: absolute;
width: 4px;
height: 10px;
background-color: rgba(0,0,0,0.2);
left: 50%;
bottom: -6px;
transform: translateX(-50%);
border-radius: 0 0 4px 4px;
}
</style>
<script type="importmap">
{
"imports": {
"react/": "https://esm.sh/react@^19.1.0/"
}
}
</script>
</head>
<body class="bg-gray-900 text-white flex flex-col items-center justify-center min-h-screen p-4 overflow-hidden">
<!-- Difficulty Selection Screen -->
<div id="difficulty-selection" class="w-full max-w-2xl mx-auto bg-gray-800 rounded-2xl shadow-2xl p-6 md:p-8 z-20 text-center">
<h1 class="text-3xl md:text-4xl font-bold text-center text-blue-400 mb-6">May the Quotes Be With You</h1>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<button id="easy-mode-button" class="btn bg-green-500 hover:bg-green-600 text-white text-xl">Easy</button>
<button id="hard-mode-button" class="btn bg-red-500 hover:bg-red-600 text-white text-xl">Hard</button>
</div>
</div>
<!-- Main Game Container -->
<div id="game-container" class="hidden w-full max-w-2xl mx-auto bg-gray-800 rounded-2xl shadow-2xl p-6 md:p-8 z-10">
<h1 class="text-3xl md:text-4xl font-bold text-center text-blue-400 mb-2">May the Quotes Be With You</h1>
<p class="text-center text-gray-400 mb-6">First team to 100 points wins!</p>
<!-- Scoreboard -->
<div class="flex justify-around mb-6 text-center">
<div id="team1-panel" class="p-4 border-2 border-gray-600 rounded-lg w-1/2 mr-2 transition-all duration-300">
<h2 class="text-xl font-semibold">Team 1</h2>
<p id="team1-score" class="text-3xl font-bold text-green-400">0</p>
</div>
<div id="team2-panel" class="p-4 border-2 border-gray-600 rounded-lg w-1/2 ml-2 transition-all duration-300">
<h2 class="text-xl font-semibold">Team 2</h2>
<p id="team2-score" class="text-3xl font-bold text-green-400">0</p>
</div>
</div>
<!-- Game Area -->
<div id="game-area" class="text-center">
<div id="quote-card" class="bg-gray-700 p-6 rounded-lg mb-4">
<div class="mb-4">
<span id="quote-type" class="bg-blue-500 text-white text-xs font-semibold mr-2 px-2.5 py-0.5 rounded-full"></span>
<span id="quote-genre" class="bg-purple-500 text-white text-xs font-semibold px-2.5 py-0.5 rounded-full"></span>
</div>
<p id="quote-text" class="text-2xl italic text-gray-100">"Press 'Start Turn' to begin!"</p>
</div>
<div id="timer-display" class="my-4 hidden">
<p class="text-xl font-semibold">Time left: <span id="time-remaining" class="font-bold text-gray-100">60</span>s</p>
</div>
<div id="answer-area" class="bg-gray-900 p-4 rounded-lg mb-6 text-left hidden">
<p class="text-gray-300 text-lg">Answer: <strong id="answer-title" class="text-yellow-400"></strong></p>
<p id="answer-actor-line" class="text-gray-300 text-lg mt-2 hidden">Bonus Actor: <strong id="answer-actor" class="text-yellow-400"></strong></p>
</div>
<div id="controls-area" class="flex flex-col sm:flex-row gap-4 items-center mt-6">
<div class="flex flex-col sm:flex-row gap-4 justify-center flex-grow sm:flex-grow-0">
<button id="start-turn-button" class="btn bg-blue-500 hover:bg-blue-600 text-white">Start Turn</button>
<button id="correct-button" class="btn bg-green-500 hover:bg-green-600 text-white hidden">Correct</button>
<button id="incorrect-button" class="btn bg-red-500 hover:bg-red-600 text-white hidden">Incorrect</button>
</div>
<button id="start-over-button" class="btn bg-yellow-500 hover:bg-yellow-600 text-gray-900 w-full sm:w-auto sm:ml-auto mt-4 sm:mt-0">Start Over</button>
</div>
<div id="message-box" class="mt-6 text-lg font-medium p-4 rounded-lg hidden"></div>
</div>
</div>
<!-- Winner Overlay -->
<div id="winner-overlay" class="hidden fixed inset-0 bg-black bg-opacity-75 flex-col items-center justify-center z-50">
<div class="text-center">
<h1 id="winner-text" class="text-6xl md:text-8xl font-black text-yellow-300 animate-pulse" style="text-shadow: 0 0 20px #facc15;"></h1>
<button id="play-again-button" class="btn bg-yellow-400 hover:bg-yellow-500 text-gray-900 mt-8">Play Again</button>
</div>
<div id="balloon-container" class="absolute inset-0 w-full h-full overflow-hidden -z-10"></div>
</div>
<audio id="buzzer-sound" src="data:audio/wav;base64,UklGRl9vT19XQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YU0AAAAAAAAP379/fwD+/v79/PwA/v7+/fz8APz9/Pz9/vz9/P3+/fz9/v38/v39/v38/v3+/P39/P38/f78/v39/P39/P39/f78/f78/v79/P39/P78/P78/v39/v79/v78/f78/f78/v39/P79/v78/v79/v78/v78/P79/v79/P78/v79/v79/f79/P7+/P79/v79/v79/v7+/P79/v3+/P7+/P79/v3+/P39/P7+/f79/v7+/f79/f7+/P3+/f7+/f7+/f7+/f3+/v39/v7+/f79/v7+/f7+/f7+/v7+/f7+/f7+/f7+/Q==" preload="auto"></audio>
<audio id="correct-sound" src="data:audio/wav;base64,UklGRkYAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQQAAADpQGgAaABqAGwAbQBtAGwAagBoAGgAagBsAG0AbQBsAGoAaABoAGoAbABtAG0AbABqAGgAaABoAGoAbABtAG0AbABqAGgAaABoAGoAbABtAG0AbABqAGgAagBsAG0AbgBvAHAAcQByAHEAcABvAG4AbQBsAGoAaABnAGYAewB5AHQAewCDAI0AhwCGAH0AdgB2AHgAewCLAJMAkQCNAIkAgwB+AHkAegB8AIYAlQCZAJUAgwB4AGMAVgBSAFYAYABpAGwAaABeAFMAXQBvAHQAaABgAFUAUgBVAF8AaQBwAHIAcQBuAGYAXQBRAE8AVABfAGgAbABvAG8AaQBgAFQATQBLAEwAVgBdAF8AYQBhAFwAVQBNAEsASwBSAFYAVwBWAFMATgBMAEwAUgBWAFcAVgBNAEoASQBKAE4AUQBSAFEATgBMAEoASQBKAFAAUQBSAFEATgBMAkoASQBKAFAAUQBSAFEATgBMAEoASQBKAFAAUQBSAFEATgBMAEoASQBKAFAAUQBSAFEATgBMAEoASQBKAFAAUQBSAFEATgBMAEoASQBKAFAAUQBSAFEATgBMAEoASQBKAFAAUQBSAFEATgBMAEoASQBKAFAAUQBSAFEATgBMAEoASQBKAFAAUQBSAFEATgBMAEoASQBKAFAAUQBSAFEATgBMAEoASQA=" preload="auto"></audio>
<script type="module" src="index.js"></script>
</body>
</html>
const easyQuotes = [
{ line: "I'll be back.", title: "The Terminator", actor: "Arnold Schwarzenegger", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "Here's looking at you, kid.", title: "Casablanca", actor: "Humphrey Bogart", type: "Movie", genre: "Romance/Drama" },
{ line: "May the Force be with you.", title: "Star Wars", actor: "Harrison Ford", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "How you doin'?", title: "Friends", actor: "Matt LeBlanc", type: "Show", genre: "Comedy" },
{ line: "Winter is coming.", title: "Game of Thrones", actor: "Sean Bean", type: "Show", genre: "Fantasy/Drama" },
{ line: "Run, Forrest, Run!", title: "Forrest Gump", actor: "Tom Hanks", type: "Movie", genre: "Drama" },
{ line: "I am the one who knocks!", title: "Breaking Bad", actor: "Bryan Cranston", type: "Show", genre: "Crime/Drama" },
{ line: "To infinity... and beyond!", title: "Toy Story", actor: "Tim Allen", type: "Movie", genre: "Animation/Family" },
{ line: "That's what she said.", title: "The Office", actor: "Steve Carell", type: "Show", genre: "Comedy" },
{ line: "Why so serious?", title: "The Dark Knight", actor: "Heath Ledger", type: "Movie", genre: "Action/Thriller" },
{ line: "I'm the king of the world!", title: "Titanic", actor: "Leonardo DiCaprio", type: "Movie", genre: "Romance/Drama" },
{ line: "There's no place like home.", title: "The Wizard of Oz", actor: "Judy Garland", type: "Movie", genre: "Fantasy/Musical" },
{ line: "I'm gonna make him an offer he can't refuse.", title: "The Godfather", actor: "Marlon Brando", type: "Movie", genre: "Crime/Drama" },
{ line: "Yippie-kay-yay, motherf***er.", title: "Die Hard", actor: "Bruce Willis", type: "Movie", genre: "Action/Thriller" },
{ line: "No soup for you!", title: "Seinfeld", actor: "Larry Thomas", type: "Show", genre: "Comedy" },
{ line: "D'oh!", title: "The Simpsons", actor: "Dan Castellaneta", type: "Show", genre: "Animation/Comedy" },
{ line: "Hasta la vista, baby.", title: "Terminator 2: Judgment Day", actor: "Arnold Schwarzenegger", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "You can't handle the truth!", title: "A Few Good Men", actor: "Jack Nicholson", type: "Movie", genre: "Drama/Thriller" },
{ line: "Bond. James Bond.", title: "Dr. No", actor: "Sean Connery", type: "Movie", genre: "Action/Spy" },
{ line: "Bazinga!", title: "The Big Bang Theory", actor: "Jim Parsons", type: "Show", genre: "Comedy" },
{ line: "Elementary, my dear Watson.", title: "The Adventures of Sherlock Holmes (various adaptations)", actor: "Various (e.g. Basil Rathbone)", type: "Movie/Show", genre: "Mystery/Crime" },
{ line: "Houston, we have a problem.", title: "Apollo 13", actor: "Tom Hanks", type: "Movie", genre: "Drama/History" },
{ line: "Keep your friends close, but your enemies closer.", title: "The Godfather Part II", actor: "Al Pacino", type: "Movie", genre: "Crime/Drama" },
{ line: "Show me the money!", title: "Jerry Maguire", actor: "Cuba Gooding Jr.", type: "Movie", genre: "Drama/Romance/Sport" },
{ line: "It's alive! It's alive!", title: "Frankenstein (1931)", actor: "Colin Clive", type: "Movie", genre: "Horror/Sci-Fi" },
{ line: "Pivot!", title: "Friends", actor: "David Schwimmer", type: "Show", genre: "Comedy" },
{ line: "I see dead people.", title: "The Sixth Sense", actor: "Haley Joel Osment", type: "Movie", genre: "Thriller/Drama" },
{ line: "Say 'hello' to my little friend!", title: "Scarface", actor: "Al Pacino", type: "Movie", genre: "Crime/Drama" },
{ line: "Nobody puts Baby in a corner.", title: "Dirty Dancing", actor: "Patrick Swayze", type: "Movie", genre: "Romance/Drama" },
{ line: "You're gonna need a bigger boat.", title: "Jaws", actor: "Roy Scheider", type: "Movie", genre: "Thriller/Adventure" },
{ line: "My precious.", title: "The Lord of the Rings: The Two Towers", actor: "Andy Serkis", type: "Movie", genre: "Fantasy/Adventure" },
{ line: "What's up, doc?", title: "Looney Tunes", actor: "Mel Blanc (Bugs Bunny)", type: "Show", genre: "Animation/Comedy" },
{ line: "I'm Batman.", title: "Batman (1989)", actor: "Michael Keaton", type: "Movie", genre: "Action/Superhero" },
{ line: "Live long and prosper.", title: "Star Trek", actor: "Leonard Nimoy", type: "Show/Movie", genre: "Sci-Fi" },
{ line: "The truth is out there.", title: "The X-Files", actor: "Opening Narration (Fox Mulder often says it)", type: "Show", genre: "Sci-Fi/Mystery" },
{ line: "Oh my God, they killed Kenny!", title: "South Park", actor: "Matt Stone (Stan Marsh)", type: "Show", genre: "Animation/Comedy" },
{ line: "This is Sparta!", title: "300", actor: "Gerard Butler", type: "Movie", genre: "Action/History" },
{ line: "Here's Johnny!", title: "The Shining", actor: "Jack Nicholson", type: "Movie", genre: "Horror/Thriller" },
{ line: "Carpe diem. Seize the day, boys.", title: "Dead Poets Society", actor: "Robin Williams", type: "Movie", genre: "Drama" },
{ line: "E.T. phone home.", title: "E.T. the Extra-Terrestrial", actor: "Pat Welsh (voice)", type: "Movie", genre: "Sci-Fi/Family" },
{ line: "I love the smell of napalm in the morning.", title: "Apocalypse Now", actor: "Robert Duvall", type: "Movie", genre: "War/Drama" },
{ line: "Legen—wait for it—dary!", title: "How I Met Your Mother", actor: "Neil Patrick Harris", type: "Show", genre: "Comedy" },
{ line: "Alright, alright, alright.", title: "Dazed and Confused", actor: "Matthew McConaughey", type: "Movie", genre: "Comedy/Drama" },
{ line: "Did I do that?", title: "Family Matters", actor: "Jaleel White (Steve Urkel)", type: "Show", genre: "Comedy" },
{ line: "Roads? Where we're going, we don't need roads.", title: "Back to the Future", actor: "Christopher Lloyd", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "They're heeeere!", title: "Poltergeist", actor: "Heather O'Rourke", type: "Movie", genre: "Horror" },
{ line: "Just keep swimming.", title: "Finding Nemo", actor: "Ellen DeGeneres (Dory)", type: "Movie", genre: "Animation/Family" },
{ line: "With great power comes great responsibility.", title: "Spider-Man", actor: "Cliff Robertson (Uncle Ben)", type: "Movie", genre: "Action/Superhero" },
{ line: "You talkin' to me?", title: "Taxi Driver", actor: "Robert De Niro", type: "Movie", genre: "Drama/Crime" },
{ line: "I'm walking here!", title: "Midnight Cowboy", actor: "Dustin Hoffman", type: "Movie", genre: "Drama" },
{ line: "Stella! Hey, Stella!", title: "A Streetcar Named Desire", actor: "Marlon Brando", type: "Movie", genre: "Drama" },
{ line: "Toto, I've a feeling we're not in Kansas anymore.", title: "The Wizard of Oz", actor: "Judy Garland", type: "Movie", genre: "Fantasy/Musical" },
{ line: "Yabba Dabba Doo!", title: "The Flintstones", actor: "Alan Reed (Fred Flintstone)", type: "Show", genre: "Animation/Comedy" },
{ line: "Get your stinking paws off me, you damned dirty ape!", title: "Planet of the Apes (1968)", actor: "Charlton Heston", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "We're on a mission from God.", title: "The Blues Brothers", actor: "John Belushi", type: "Movie", genre: "Comedy/Musical" },
{ line: "Go ahead, make my day.", title: "Sudden Impact", actor: "Clint Eastwood", type: "Movie", genre: "Action/Crime" },
{ line: "Soylent Green is people!", title: "Soylent Green", actor: "Charlton Heston", type: "Movie", genre: "Sci-Fi/Thriller" },
{ line: "Frankly, my dear, I don't give a damn.", title: "Gone with the Wind", actor: "Clark Gable", type: "Movie", genre: "Drama/Romance" },
{ line: "The power of Christ compels you!", title: "The Exorcist", actor: "Jason Miller / Max von Sydow", type: "Movie", genre: "Horror" },
{ line: "Wax on, wax off.", title: "The Karate Kid", actor: "Pat Morita", type: "Movie", genre: "Drama/Family/Sport" },
{ line: "Life is like a box of chocolates. You never know what you're gonna get.", title: "Forrest Gump", actor: "Tom Hanks", type: "Movie", genre: "Drama" },
{ line: "Help me, Obi-Wan Kenobi. You're my only hope.", title: "Star Wars: A New Hope", actor: "Carrie Fisher", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "Hakuna Matata.", title: "The Lion King", actor: "Nathan Lane / Ernie Sabella", type: "Movie", genre: "Animation/Family" },
{ line: "Excellent!", title: "Bill & Ted's Excellent Adventure", actor: "Keanu Reeves / Alex Winter", type: "Movie", genre: "Comedy/Sci-Fi" },
{ line: "I'll have what she's having.", title: "When Harry Met Sally...", actor: "Estelle Reiner", type: "Movie", genre: "Comedy/Romance" },
{ line: "It's a trap!", title: "Star Wars: Return of the Jedi", actor: "Erik Bauersfeld (Admiral Ackbar)", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "You had me at 'hello'.", title: "Jerry Maguire", actor: "Renée Zellweger", type: "Movie", genre: "Drama/Romance/Sport" },
{ line: "They may take our lives, but they'll never take our freedom!", title: "Braveheart", actor: "Mel Gibson", type: "Movie", genre: "Action/History" },
{ line: "Fasten your seatbelts. It's going to be a bumpy night.", title: "All About Eve", actor: "Bette Davis", type: "Movie", genre: "Drama" },
{ line: "There's no crying in baseball!", title: "A League of Their Own", actor: "Tom Hanks", type: "Movie", genre: "Comedy/Drama/Sport" },
{ line: "Avengers, assemble!", title: "Avengers: Endgame", actor: "Chris Evans", type: "Movie", genre: "Action/Superhero" },
{ line: "I am Groot.", title: "Guardians of the Galaxy", actor: "Vin Diesel (voice)", type: "Movie", genre: "Action/Sci-Fi" },
{ line: "What is the airspeed velocity of an unladen swallow?", title: "Monty Python and the Holy Grail", actor: "Graham Chapman", type: "Movie", genre: "Comedy/Adventure" },
{ line: "Are you not entertained?", title: "Gladiator", actor: "Russell Crowe", type: "Movie", genre: "Action/Drama" },
{ line: "That's my secret, Cap: I'm always angry.", title: "The Avengers", actor: "Mark Ruffalo", type: "Movie", genre: "Action/Superhero" },
{ line: "I have a dream.", title: "Speech by Martin Luther King Jr. (often sampled/referenced)", actor: "Martin Luther King Jr.", type: "Speech/Historical", genre: "History" },
{ line: "What's in the box?", title: "Se7en", actor: "Brad Pitt", type: "Movie", genre: "Crime/Thriller" },
{ line: "I am Iron Man.", title: "Iron Man", actor: "Robert Downey Jr.", type: "Movie", genre: "Action/Superhero" },
{ line: "You serious, Clark?", title: "National Lampoon's Christmas Vacation", actor: "Beverly D'Angelo", type: "Movie", genre: "Comedy" },
{ line: "This is the way.", title: "The Mandalorian", actor: "Pedro Pascal", type: "Show", genre: "Sci-Fi/Western" },
{ line: "I volunteer as tribute!", title: "The Hunger Games", actor: "Jennifer Lawrence", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "Get to the choppa!", title: "Predator", actor: "Arnold Schwarzenegger", type: "Movie", genre: "Action/Sci-Fi" },
{ line: "I'm your number one fan.", title: "Misery", actor: "Kathy Bates", type: "Movie", genre: "Thriller/Horror" },
{ line: "By the power of Grayskull!", title: "He-Man and the Masters of the Universe", actor: "John Erwin (voice)", type: "Show", genre: "Animation/Fantasy" },
{ line: "One does not simply walk into Mordor.", title: "The Lord of the Rings: The Fellowship of the Ring", actor: "Sean Bean", type: "Movie", genre: "Fantasy/Adventure" },
{ line: "Can you dig it?", title: "The Warriors", actor: "Roger Hill (Cyrus)", type: "Movie", genre: "Action/Thriller" },
{ line: "Say my name.", title: "Breaking Bad", actor: "Bryan Cranston", type: "Show", genre: "Crime/Drama" },
{ line: "It's morphin' time!", title: "Mighty Morphin Power Rangers", actor: "Austin St. John (Jason Lee Scott)", type: "Show", genre: "Action/Kids" },
{ line: "Where we're going, we don't need roads.", title: "Back to the Future Part II", actor: "Christopher Lloyd", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "Danger, Will Robinson!", title: "Lost in Space", actor: "Dick Tufeld (voice of Robot B-9)", type: "Show", genre: "Sci-Fi/Adventure" },
{ line: "Schwing!", title: "Wayne's World", actor: "Mike Myers / Dana Carvey", type: "Movie", genre: "Comedy/Music" },
{ line: "Surely you can't be serious.", title: "Airplane!", actor: "Leslie Nielsen", type: "Movie", genre: "Comedy" },
{ line: "Listen to them. Children of the night. What music they make.", title: "Dracula (1931)", actor: "Bela Lugosi", type: "Movie", genre: "Horror" },
{ line: "I'm too old for this s**t.", title: "Lethal Weapon", actor: "Danny Glover", type: "Movie", genre: "Action/Comedy" },
{ line: "Good morning, Vietnam!", title: "Good Morning, Vietnam", actor: "Robin Williams", type: "Movie", genre: "Comedy/Drama/War" },
{ line: "Make it so.", title: "Star Trek: The Next Generation", actor: "Patrick Stewart", type: "Show", genre: "Sci-Fi" },
{ line: "We were on a break!", title: "Friends", actor: "David Schwimmer", type: "Show", genre: "Comedy" },
{ line: "Wubba lubba dub dub!", title: "Rick and Morty", actor: "Justin Roiland (Rick Sanchez)", type: "Show", genre: "Animation/Sci-Fi/Comedy" },
{ line: "I drink and I know things.", title: "Game of Thrones", actor: "Peter Dinklage", type: "Show", genre: "Fantasy/Drama" },
{ line: "The first rule of Fight Club is: you do not talk about Fight Club.", title: "Fight Club", actor: "Brad Pitt", type: "Movie", genre: "Drama/Thriller" },
{ line: "What’s the most you ever lost on a coin toss?", title: "No Country for Old Men", actor: "Javier Bardem", type: "Movie", genre: "Crime/Thriller" },
{ line: "Khaaan!", title: "Star Trek II: The Wrath of Khan", actor: "William Shatner", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "You're a wizard, Harry.", title: "Harry Potter and the Sorcerer's Stone", actor: "Robbie Coltrane", type: "Movie", genre: "Fantasy/Adventure" },
{ line: "Show me the meaning of being lonely.", title: "Backstreet Boys - Show Me the Meaning of Being Lonely", actor: "Backstreet Boys (band)", type: "Music Video/Song", genre: "Pop" },
{ line: "It's over 9000!", title: "Dragon Ball Z", actor: "Brian Drummond (Vegeta - Ocean Dub)", type: "Show", genre: "Animation/Action" },
{ line: "No, I am your father.", title: "Star Wars: The Empire Strikes Back", actor: "James Earl Jones (voice)", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "Mama always said life was like a box of chocolates.", title: "Forrest Gump", actor: "Tom Hanks", type: "Movie", genre: "Drama" },
{ line: "What a lovely day!", title: "Mad Max: Fury Road", actor: "Tom Hardy / Charlize Theron (Nux says 'Oh, what a day! What a lovely day!')", type: "Movie", genre: "Action/Sci-Fi" },
{ line: "That's so fetch.", title: "Mean Girls", actor: "Lacey Chabert", type: "Movie", genre: "Comedy" },
{ line: "I am inevitable.", title: "Avengers: Endgame", actor: "Josh Brolin", type: "Movie", genre: "Action/Superhero" },
{ line: "Winter soldier.", title: "Captain America: The Winter Soldier", actor: "Sebastian Stan (various characters referencing him)", type: "Movie", genre: "Action/Superhero" },
{ line: "This is my rifle. There are many like it, but this one is mine.", title: "Full Metal Jacket", actor: "R. Lee Ermey", type: "Movie", genre: "War/Drama" },
{ line: "You shall not pass!", title: "The Lord of the Rings: The Fellowship of the Ring", actor: "Ian McKellen", type: "Movie", genre: "Fantasy/Adventure" },
{ line: "How rude!", title: "Full House", actor: "Jodie Sweetin", type: "Show", genre: "Comedy/Family" },
{ line: "Have mercy!", title: "Full House", actor: "John Stamos", type: "Show", genre: "Comedy/Family" },
{ line: "My name is Jeff.", title: "22 Jump Street", actor: "Channing Tatum", type: "Movie", genre: "Comedy/Action" },
{ line: "What are you doing in my swamp?!", title: "Shrek", actor: "Mike Myers (Shrek)", type: "Movie", genre: "Animation/Comedy" },
{ line: "It's a beautiful day to save lives.", title: "Grey's Anatomy", actor: "Patrick Dempsey (Derek Shepherd)", type: "Show", genre: "Drama/Medical" },
{ line: "I have spoken.", title: "The Mandalorian", actor: "Nick Nolte (Kuiil)", type: "Show", genre: "Sci-Fi/Western" },
{ line: "That's what I love about these high school girls, man. I get older, they stay the same age.", title: "Dazed and Confused", actor: "Matthew McConaughey", type: "Movie", genre: "Comedy/Drama" },
{ line: "Expecto Patronum!", title: "Harry Potter and the Prisoner of Azkaban", actor: "Daniel Radcliffe", type: "Movie", genre: "Fantasy/Adventure" },
{ line: "Ogres are like onions.", title: "Shrek", actor: "Mike Myers (Shrek)", type: "Movie", genre: "Animation/Comedy" },
{ line: "Cowabunga!", title: "Teenage Mutant Ninja Turtles", actor: "Various (Michelangelo)", type: "Show/Movie", genre: "Animation/Action" },
{ line: "You go, Glen Coco!", title: "Mean Girls", actor: "Daniel Franzese", type: "Movie", genre: "Comedy" },
{ line: "Winter has come.", title: "Game of Thrones", actor: "Various (signifying the long winter)", type: "Show", genre: "Fantasy/Drama" },
{ line: "I'm the Doctor.", title: "Doctor Who", actor: "Various (The Doctor)", type: "Show", genre: "Sci-Fi/Adventure" },
{ line: "It's bigger on the inside!", title: "Doctor Who", actor: "Various (Companions about the TARDIS)", type: "Show", genre: "Sci-Fi/Adventure" },
{ line: "Resistance is futile.", title: "Star Trek: The Next Generation", actor: "The Borg (various voices)", type: "Show", genre: "Sci-Fi" },
{ line: "That's rough, buddy.", title: "Avatar: The Last Airbender", actor: "Dante Basco (Zuko)", type: "Show", genre: "Animation/Fantasy" },
{ line: "Flameo, hotman!", title: "Avatar: The Last Airbender", actor: "Zach Tyler Eisen (Aang) / Mae Whitman (Katara)", type: "Show", genre: "Animation/Fantasy" },
{ line: "I am a leaf on the wind. Watch how I soar.", title: "Serenity", actor: "Alan Tudyk (Wash)", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "Shiny.", title: "Firefly/Serenity", actor: "Various (often used by Kaylee or Mal)", type: "Show/Movie", genre: "Sci-Fi/Western" },
{ line: "I aim to misbehave.", title: "Serenity", actor: "Nathan Fillion (Mal Reynolds)", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "This is my stop.", title: "The Perks of Being a Wallflower", actor: "Logan Lerman", type: "Movie", genre: "Drama/Romance" },
{ line: "We accept the love we think we deserve.", title: "The Perks of Being a Wallflower", actor: "Logan Lerman", type: "Movie", genre: "Drama/Romance" },
{ line: "Do, or do not. There is no try.", title: "Star Wars: The Empire Strikes Back", actor: "Frank Oz (voice of Yoda)", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "I find your lack of faith disturbing.", title: "Star Wars: A New Hope", actor: "James Earl Jones (voice of Darth Vader)", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "Great Scott!", title: "Back to the Future", actor: "Christopher Lloyd", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "Where we're going, we don't need... roads.", title: "Back to the Future Part III", actor: "Christopher Lloyd", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "Yeah, science!", title: "Breaking Bad", actor: "Aaron Paul (Jesse Pinkman)", type: "Show", genre: "Crime/Drama" },
{ line: "Magnets, bitch!", title: "Breaking Bad", actor: "Aaron Paul (Jesse Pinkman)", type: "Show", genre: "Crime/Drama" },
{ line: "I am the danger.", title: "Breaking Bad", actor: "Bryan Cranston (Walter White)", type: "Show", genre: "Crime/Drama" },
{ line: "What would Brian Boitano do?", title: "South Park: Bigger, Longer & Uncut", actor: "Trey Parker / Matt Stone (song)", type: "Movie", genre: "Animation/Comedy" },
{ line: "Respect my authoritah!", title: "South Park", actor: "Trey Parker (Eric Cartman)", type: "Show", genre: "Animation/Comedy" },
{ line: "I'm not fat, I'm big-boned.", title: "South Park", actor: "Trey Parker (Eric Cartman)", type: "Show", genre: "Animation/Comedy" },
{ line: "I'm pickle Rick!", title: "Rick and Morty", actor: "Justin Roiland (Rick Sanchez)", type: "Show", genre: "Animation/Sci-Fi/Comedy" },
{ line: "Get schwifty.", title: "Rick and Morty", actor: "Justin Roiland (Rick Sanchez)", type: "Show", genre: "Animation/Sci-Fi/Comedy" },
{ line: "To me, you are perfect.", title: "Love Actually", actor: "Andrew Lincoln", type: "Movie", genre: "Romance/Comedy" },
{ line: "I'm just a girl, standing in front of a boy, asking him to love her.", title: "Notting Hill", actor: "Julia Roberts", type: "Movie", genre: "Romance/Comedy" },
{ line: "You complete me.", title: "Jerry Maguire", actor: "Tom Cruise", type: "Movie", genre: "Drama/Romance/Sport" },
{ line: "If you're a bird, I'm a bird.", title: "The Notebook", actor: "Ryan Gosling", type: "Movie", genre: "Romance/Drama" },
{ line: "As you wish.", title: "The Princess Bride", actor: "Cary Elwes", type: "Movie", genre: "Adventure/Comedy/Fantasy" },
{ line: "Hello. My name is Inigo Montoya. You killed my father. Prepare to die.", title: "The Princess Bride", actor: "Mandy Patinkin", type: "Movie", genre: "Adventure/Comedy/Fantasy" },
{ line: "Have fun storming the castle!", title: "The Princess Bride", actor: "Billy Crystal", type: "Movie", genre: "Adventure/Comedy/Fantasy" },
{ line: "This is true love. You think this happens every day?", title: "The Princess Bride", actor: "Fred Savage", type: "Movie", genre: "Adventure/Comedy/Fantasy" },
{ line: "Get busy living, or get busy dying.", title: "The Shawshank Redemption", actor: "Tim Robbins", type: "Movie", genre: "Drama" },
{ line: "Hope is a good thing, maybe the best of things, and no good thing ever dies.", title: "The Shawshank Redemption", actor: "Tim Robbins", type: "Movie", genre: "Drama" },
{ line: "I'm funny how? Funny like a clown?", title: "Goodfellas", actor: "Joe Pesci", type: "Movie", genre: "Crime/Drama" },
{ line: "Shaken, not stirred.", title: "Goldfinger (and many other James Bond films)", actor: "Sean Connery (and other Bonds)", type: "Movie", genre: "Action/Spy" },
{ line: "You're only supposed to blow the bloody doors off!", title: "The Italian Job (1969)", actor: "Michael Caine", type: "Movie", genre: "Crime/Comedy" },
{ line: "Adrian!", title: "Rocky", actor: "Sylvester Stallone", type: "Movie", genre: "Drama/Sport" },
{ line: "Yo, Adrian, I did it!", title: "Rocky II", actor: "Sylvester Stallone", type: "Movie", genre: "Drama/Sport" },
{ line: "It ain't about how hard you hit. It's about how hard you can get hit and keep moving forward.", title: "Rocky Balboa", actor: "Sylvester Stallone", type: "Movie", genre: "Drama/Sport" }
];
const hardQuotes = [
{ line: "The Dude abides.", title: "The Big Lebowski", actor: "Jeff Bridges", type: "Movie", genre: "Comedy/Crime" },
{ line: "All those moments will be lost in time, like tears in rain.", title: "Blade Runner", actor: "Rutger Hauer", type: "Movie", genre: "Sci-Fi/Thriller" },
{ line: "What is your damage, Heather?", title: "Heathers", actor: "Winona Ryder", type: "Movie", genre: "Comedy/Drama" },
{ line: "I've made a huge mistake.", title: "Arrested Development", actor: "Jason Bateman", type: "Show", genre: "Comedy" },
{ line: "We're all pretty bizarre. Some of us are just better at hiding it, that's all.", title: "The Breakfast Club", actor: "Ally Sheedy", type: "Movie", genre: "Comedy/Drama" },
{ line: "Leave the gun. Take the cannoli.", title: "The Godfather", actor: "Richard S. Castellano", type: "Movie", genre: "Crime/Drama" },
{ line: "This is my boomstick!", title: "Army of Darkness", actor: "Bruce Campbell", type: "Movie", genre: "Horror/Comedy" },
{ line: "You're killing me, Smalls!", title: "The Sandlot", actor: "Patrick Renna", type: "Movie", genre: "Comedy/Family" },
{ line: "I drink your milkshake!", title: "There Will Be Blood", actor: "Daniel Day-Lewis", type: "Movie", genre: "Drama" },
{ line: "It's not a man-purse. It's called a satchel. Indiana Jones wears one.", title: "The Hangover", actor: "Zach Galifianakis", type: "Movie", genre: "Comedy" },
{ line: "Clear eyes, full hearts, can't lose.", title: "Friday Night Lights", actor: "Kyle Chandler", type: "Show", genre: "Drama/Sport" },
{ line: "What we do in life echoes in eternity.", title: "Gladiator", actor: "Russell Crowe", type: "Movie", genre: "Action/Drama" },
{ line: "As if!", title: "Clueless", actor: "Alicia Silverstone", type: "Movie", genre: "Comedy/Romance" },
{ line: "That'll do, pig. That'll do.", title: "Babe", actor: "James Cromwell", type: "Movie", genre: "Family/Drama" },
{ line: "I am a golden god!", title: "Almost Famous", actor: "Billy Crudup", type: "Movie", genre: "Drama/Music" },
{ line: "Warriors, come out to play-i-ay!", title: "The Warriors", actor: "David Patrick Kelly", type: "Movie", genre: "Action/Thriller" },
{ line: "Forget it, Jake. It's Chinatown.", title: "Chinatown", actor: "Joe Mantell", type: "Movie", genre: "Mystery/Thriller" },
{ line: "They mostly come at night. Mostly.", title: "Aliens", actor: "Carrie Henn (Newt)", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "Gentlemen, you can't fight in here! This is the War Room!", title: "Dr. Strangelove", actor: "Peter Sellers", type: "Movie", genre: "Comedy/War" },
{ line: "The Lannisters send their regards.", title: "Game of Thrones", actor: "Roose Bolton (show character who says it)", type: "Show", genre: "Fantasy/Drama" },
{ line: "I have come here to chew bubblegum and kick ass... and I'm all out of bubblegum.", title: "They Live", actor: "Roddy Piper", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "This is the day you will always remember as the day you almost caught Captain Jack Sparrow.", title: "Pirates of the Caribbean: The Curse of the Black Pearl", actor: "Johnny Depp", type: "Movie", genre: "Adventure/Fantasy" },
{ line: "The stuff that dreams are made of.", title: "The Maltese Falcon", actor: "Humphrey Bogart", type: "Movie", genre: "Film-Noir/Mystery" },
{ line: "Attica! Attica!", title: "Dog Day Afternoon", actor: "Al Pacino", type: "Movie", genre: "Crime/Drama" },
{ line: "It's just a flesh wound.", title: "Monty Python and the Holy Grail", actor: "John Cleese", type: "Movie", genre: "Comedy/Adventure" },
{ line: "Snakes. Why'd it have to be snakes?", title: "Raiders of the Lost Ark", actor: "Harrison Ford", type: "Movie", genre: "Action/Adventure" },
{ line: "Inconceivable!", title: "The Princess Bride", actor: "Wallace Shawn", type: "Movie", genre: "Adventure/Comedy/Fantasy" },
{ line: "That rug really tied the room together.", title: "The Big Lebowski", actor: "Jeff Bridges", type: "Movie", genre: "Comedy/Crime" },
{ line: "Groovy.", title: "Evil Dead II", actor: "Bruce Campbell", type: "Movie", genre: "Horror/Comedy" },
{ line: "They're taking the hobbits to Isengard!", title: "The Lord of the Rings: The Two Towers", actor: "Orlando Bloom (Legolas - meme origin)", type: "Movie", genre: "Fantasy/Adventure" },
{ line: "Oh, hi Mark.", title: "The Room", actor: "Tommy Wiseau", type: "Movie", genre: "Drama (Cult)" },
{ line: "I want my two dollars!", title: "Better Off Dead", actor: "Curtis Armstrong", type: "Movie", genre: "Comedy/Romance" },
{ line: "Game over, man! Game over!", title: "Aliens", actor: "Bill Paxton", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "We deal in lead, friend.", title: "The Magnificent Seven (1960)", actor: "Steve McQueen", type: "Movie", genre: "Western/Action" },
{ line: "Never tell me the odds!", title: "Star Wars: The Empire Strikes Back", actor: "Harrison Ford", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "One of us. One of us.", title: "Freaks", actor: "Ensemble", type: "Movie", genre: "Horror/Drama" },
{ line: "Some motherf***ers are always trying to ice-skate uphill.", title: "Blade", actor: "Wesley Snipes", type: "Movie", genre: "Action/Horror" },
{ line: "Death by stereo.", title: "The Lost Boys", actor: "Corey Haim", type: "Movie", genre: "Horror/Comedy" },
{ line: "Be excellent to each other. And... PARTY ON, DUDES!", title: "Bill & Ted's Excellent Adventure", actor: "Keanu Reeves / Alex Winter", type: "Movie", genre: "Comedy/Sci-Fi" },
{ line: "The price is wrong, bitch!", title: "Happy Gilmore", actor: "Bob Barker", type: "Movie", genre: "Comedy/Sport" },
{ line: "I'm not even supposed to be here today!", title: "Clerks", actor: "Brian O'Halloran", type: "Movie", genre: "Comedy" },
{ line: "My name is Inigo Montoya. You killed my father. Prepare to die.", title: "The Princess Bride", actor: "Mandy Patinkin", type: "Movie", genre: "Adventure/Comedy/Fantasy" },
{ line: "It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark... and we're wearing sunglasses.", title: "The Blues Brothers", actor: "Dan Aykroyd", type: "Movie", genre: "Comedy/Musical" },
{ line: "Mrs. Robinson, you're trying to seduce me. Aren't you?", title: "The Graduate", actor: "Dustin Hoffman", type: "Movie", genre: "Comedy/Drama/Romance" },
{ line: "What's in the box?!", title: "Se7en", actor: "Brad Pitt", type: "Movie", genre: "Crime/Thriller" },
{ line: "Have you ever danced with the devil in the pale moonlight?", title: "Batman (1989)", actor: "Jack Nicholson", type: "Movie", genre: "Action/Superhero" },
{ line: "You ever seen a grown man naked?", title: "Airplane!", actor: "Peter Graves", type: "Movie", genre: "Comedy" },
{ line: "I'm funny how? I mean, funny like I'm a clown? I amuse you?", title: "Goodfellas", actor: "Joe Pesci", type: "Movie", genre: "Crime/Drama" },
{ line: "I am serious. And don't call me Shirley.", title: "Airplane!", actor: "Leslie Nielsen", type: "Movie", genre: "Comedy" },
{ line: "That's a bingo!", title: "Inglourious Basterds", actor: "Christoph Waltz", type: "Movie", genre: "War/Drama" },
{ line: "You're tearing me apart, Lisa!", title: "The Room", actor: "Tommy Wiseau", type: "Movie", genre: "Drama (Cult)" },
{ line: "I feel the need... the need for speed!", title: "Top Gun", actor: "Tom Cruise / Anthony Edwards", type: "Movie", genre: "Action/Drama" },
{ line: "It rubs the lotion on its skin, or else it gets the hose again.", title: "The Silence of the Lambs", actor: "Ted Levine", type: "Movie", genre: "Thriller/Crime" },
{ line: "I'm your huckleberry.", title: "Tombstone", actor: "Val Kilmer", type: "Movie", genre: "Western/Action" },
{ line: "Do you like Huey Lewis and the News?", title: "American Psycho", actor: "Christian Bale", type: "Movie", genre: "Horror/Comedy" },
{ line: "The greatest trick the Devil ever pulled was convincing the world he didn't exist.", title: "The Usual Suspects", actor: "Kevin Spacey", type: "Movie", genre: "Crime/Mystery/Thriller" },
{ line: "When you have to shoot, shoot. Don't talk.", title: "The Good, the Bad and the Ugly", actor: "Eli Wallach", type: "Movie", genre: "Western" },
{ line: "There is no spoon.", title: "The Matrix", actor: "Haley Joel Osment (as Spoon Boy to Keanu Reeves)", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "I'm having an old friend for dinner.", title: "The Silence of the Lambs", actor: "Anthony Hopkins", type: "Movie", genre: "Thriller/Crime" },
{ line: "Wendy? Darling? Light, of my life. I'm not gonna hurt ya. You didn't let me finish my sentence.", title: "The Shining", actor: "Jack Nicholson", type: "Movie", genre: "Horror/Thriller" },
{ line: "We're not worthy! We're not worthy!", title: "Wayne's World", actor: "Mike Myers / Dana Carvey", type: "Movie", genre: "Comedy/Music" },
{ line: "What is this? A center for ants?!", title: "Zoolander", actor: "Ben Stiller", type: "Movie", genre: "Comedy" },
{ line: "If you build it, he will come.", title: "Field of Dreams", actor: "Ray Liotta (voice of Shoeless Joe Jackson)", type: "Movie", genre: "Fantasy/Drama/Sport" },
{ line: "Just when I thought I was out, they pull me back in!", title: "The Godfather Part III", actor: "Al Pacino", type: "Movie", genre: "Crime/Drama" },
{ line: "You remind me of the babe.", title: "Labyrinth", actor: "David Bowie", type: "Movie", genre: "Fantasy/Musical" },
{ line: "English, motherf***er, do you speak it?", title: "Pulp Fiction", actor: "Samuel L. Jackson", type: "Movie", genre: "Crime/Drama" },
{ line: "Does he look like a bitch?", title: "Pulp Fiction", actor: "Samuel L. Jackson", type: "Movie", genre: "Crime/Drama" },
{ line: "The path of the righteous man is beset on all sides by the inequities of the selfish and the tyranny of evil men.", title: "Pulp Fiction", actor: "Samuel L. Jackson", type: "Movie", genre: "Crime/Drama" },
{ line: "We're all mad here.", title: "Alice in Wonderland (1951)", actor: "Sterling Holloway (Cheshire Cat)", type: "Movie", genre: "Animation/Fantasy" },
{ line: "I'm not bad. I'm just drawn that way.", title: "Who Framed Roger Rabbit", actor: "Kathleen Turner (voice of Jessica Rabbit)", type: "Movie", genre: "Animation/Comedy" },
{ line: "Greed, for lack of a better word, is good.", title: "Wall Street", actor: "Michael Douglas", type: "Movie", genre: "Drama/Crime" },
{ line: "Human sacrifice, dogs and cats living together... mass hysteria!", title: "Ghostbusters", actor: "Bill Murray", type: "Movie", genre: "Comedy/Fantasy" },
{ line: "It's all in the reflexes.", title: "Big Trouble in Little China", actor: "Kurt Russell", type: "Movie", genre: "Action/Comedy/Fantasy" },
{ line: "Pay no attention to that man behind the curtain!", title: "The Wizard of Oz", actor: "Frank Morgan", type: "Movie", genre: "Fantasy/Musical" },
{ line: "That is my least favorite kind of discrimination. The kind against me.", title: "Futurama", actor: "Billy West (Philip J. Fry)", type: "Show", genre: "Animation/Sci-Fi/Comedy" },
{ line: "Shut up and take my money!", title: "Futurama", actor: "Billy West (Philip J. Fry)", type: "Show", genre: "Animation/Sci-Fi/Comedy" },
{ line: "Bite my shiny metal ass!", title: "Futurama", actor: "John DiMaggio (Bender)", type: "Show", genre: "Animation/Sci-Fi/Comedy" },
{ line: "You're a disease. I'm the cure.", title: "Cobra", actor: "Sylvester Stallone", type: "Movie", genre: "Action/Crime" },
{ line: "Nobody makes me bleed my own blood. Nobody!", title: "Dodgeball: A True Underdog Story", actor: "Ben Stiller", type: "Movie", genre: "Comedy/Sport" },
{ line: "I have nipples, Greg. Could you milk me?", title: "Meet the Parents", actor: "Robert De Niro", type: "Movie", genre: "Comedy" },
{ line: "The seaweed is always greener in somebody else's lake.", title: "The Little Mermaid", actor: "Samuel E. Wright (Sebastian)", type: "Movie", genre: "Animation/Family/Fantasy" },
{ line: "You sit on a throne of lies.", title: "Elf", actor: "Will Ferrell", type: "Movie", genre: "Comedy/Family/Fantasy" },
{ line: "I'm a mog: half man, half dog. I'm my own best friend!", title: "Spaceballs", actor: "John Candy (voice of Barf)", type: "Movie", genre: "Comedy/Sci-Fi" },
{ line: "What's the matter, Colonel Sandurz? Chicken?", title: "Spaceballs", actor: "Rick Moranis", type: "Movie", genre: "Comedy/Sci-Fi" },
{ line: "Do you know what 'nemesis' means?", title: "Snatch", actor: "Alan Ford", type: "Movie", genre: "Comedy/Crime" },
{ line: "There's no crying in the War Room!", title: "Dr. Strangelove", actor: "Peter Sellers (parody on 'no crying in baseball')", type: "Movie", genre: "Comedy/War" },
{ line: "I am one with the Force, the Force is with me.", title: "Rogue One: A Star Wars Story", actor: "Donnie Yen", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "Fat, drunk, and stupid is no way to go through life, son.", title: "Animal House", actor: "John Vernon", type: "Movie", genre: "Comedy" },
{ line: "A census taker once tried to test me. I ate his liver with some fava beans and a nice Chianti.", title: "The Silence of the Lambs", actor: "Anthony Hopkins", type: "Movie", genre: "Thriller/Crime" },
{ line: "Get away from her, you bitch!", title: "Aliens", actor: "Sigourney Weaver", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "There are no two words in the English language more harmful than 'good job'.", title: "Whiplash", actor: "J.K. Simmons", type: "Movie", genre: "Drama/Music" },
{ line: "I'm the Juggernaut, bitch!", title: "X-Men: The Last Stand", actor: "Vinnie Jones", type: "Movie", genre: "Action/Superhero" },
{ line: "This. Is. Jeopardy!", title: "Jeopardy! (TV Show - opening)", actor: "Johnny Gilbert (announcer)", type: "Show", genre: "Game Show" },
{ line: "Is this your king?", title: "Black Panther", actor: "Michael B. Jordan", type: "Movie", genre: "Action/Superhero" },
{ line: "Patience you must have, my young Padawan.", title: "Star Wars: The Empire Strikes Back", actor: "Frank Oz (voice of Yoda)", type: "Movie", genre: "Sci-Fi/Adventure" },
{ line: "The needs of the many outweigh the needs of the few.", title: "Star Trek II: The Wrath of Khan", actor: "Leonard Nimoy", type: "Movie", genre: "Sci-Fi/Action" },
{ line: "Big gulps, huh? Alright! Well, see ya later.", title: "Dumb and Dumber", actor: "Jim Carrey", type: "Movie", genre: "Comedy" },
{ line: "So you're telling me there's a chance.", title: "Dumb and Dumber", actor: "Jim Carrey", type: "Movie", genre: "Comedy" },
{ line: "Hello, my name is Elder Price, and I would like to share with you the most amazing book.", title: "The Book of Mormon (Musical)", actor: "Andrew Rannells (original Broadway cast)", type: "Musical/Theater", genre: "Comedy/Musical" },
{ line: "Leave it! It's not worth it!", title: "EastEnders (Soap Opera - often said by various characters)", actor: "Various", type: "Show", genre: "Soap Opera/Drama" },
{ line: "Alright, Mr. DeMille, I'm ready for my close-up.", title: "Sunset Boulevard", actor: "Gloria Swanson", type: "Movie", genre: "Drama/Film-Noir" },
{ line: "I coulda had class. I coulda been a contender. I could've been somebody, instead of a bum, which is what I am.", title: "On the Waterfront", actor: "Marlon Brando", type: "Movie", genre: "Crime/Drama" },
{ line: "What a dump.", title: "Beyond the Forest", actor: "Bette Davis", type: "Movie", genre: "Drama" },
{ line: "Mother of God, is this the end of Rico?", title: "Little Caesar", actor: "Edward G. Robinson", type: "Movie", genre: "Crime/Drama" },
{ line: "I don't want to survive. I want to live.", title: "WALL-E", actor: "Jeff Garlin (Captain B. McCrea)", type: "Movie", genre: "Animation/Sci-Fi/Family" },
{ line: "The cake is a lie.", title: "Portal (Video Game)", actor: "Ellen McLain (GLaDOS)", type: "Video Game", genre: "Puzzle/Sci-Fi" },
{ line: "Stay awhile and listen!", title: "Diablo (Video Game Series)", actor: "Michael Gough (Deckard Cain)", type: "Video Game", genre: "Action RPG/Fantasy" },
{ line: "War. War never changes.", title: "Fallout (Video Game Series)", actor: "Ron Perlman (Narrator)", type: "Video Game", genre: "RPG/Post-Apocalyptic" },
{ line: "Do a barrel roll!", title: "Star Fox 64 (Video Game)", actor: "Mike West (Peppy Hare)", type: "Video Game", genre: "Sci-Fi/Shooter" },
{ line: "It's dangerous to go alone! Take this.", title: "The Legend of Zelda (Video Game)", actor: "Text (Old Man)", type: "Video Game", genre: "Adventure/Fantasy" },
{ line: "Did I ever tell you the definition of insanity?", title: "Far Cry 3 (Video Game)", actor: "Michael Mando (Vaas Montenegro)", type: "Video Game", genre: "Action/Adventure" },
{ line: "What is a man? A miserable little pile of secrets.", title: "Castlevania: Symphony of the Night (Video Game)", actor: "Michael G (Dracula)", type: "Video Game", genre: "Action RPG/Gothic" },
{ line: "With this character's death, the thread of prophecy is severed.", title: "Morrowind (The Elder Scrolls III - Video Game)", actor: "Text (In-game message)", type: "Video Game", genre: "RPG/Fantasy" },
{ line: "My friends, you bow to no one.", title: "The Lord of the Rings: The Return of the King", actor: "Viggo Mortensen", type: "Movie", genre: "Fantasy/Adventure" },
{ line: "I used to be an adventurer like you, then I took an arrow in the knee.", title: "The Elder Scrolls V: Skyrim (Video Game)", actor: "Various Guard NPCs", type: "Video Game", genre: "RPG/Fantasy" },
{ line: "Nothing is true, everything is permitted.", title: "Assassin's Creed (Video Game Series)", actor: "Various (Assassin's Maxim)", type: "Video Game", genre: "Action/Adventure" },
{ line: "Get over here!", title: "Mortal Kombat (Video Game Series)", actor: "Ed Boon (Scorpion)", type: "Video Game", genre: "Fighting" },
{ line: "Finish Him/Her!", title: "Mortal Kombat (Video Game Series)", actor: "Steve Ritchie (Announcer)", type: "Video Game", genre: "Fighting" },
{ line: "Snake? Snake!? Snaaaaaaaaaake!", title: "Metal Gear Solid (Video Game)", actor: "Paul Eiding (Colonel Campbell)", type: "Video Game", genre: "Stealth/Action" },
{ line: "It's a secret to everybody.", title: "The Legend of Zelda (Video Game)", actor: "Text (Old Man/Various)", type: "Video Game", genre: "Adventure/Fantasy" },
{ line: "Had to be me. Someone else might have gotten it wrong.", title: "Mass Effect 2 (Video Game)", actor: "Martin Sheen (Illusive Man) / Adam Lazarre-White (Mordin Solus - variations)", type: "Video Game", genre: "RPG/Sci-Fi" },
{ line: "What can change the nature of a man?", title: "Planescape: Torment (Video Game)", actor: "Michael T. Weiss (The Nameless One - questioned by various)", type: "Video Game", genre: "RPG/Fantasy" },
{ line: "The numbers, Mason! What do they mean?", title: "Call of Duty: Black Ops (Video Game)", actor: "Gary Oldman (Viktor Reznov) / Sam Worthington (Alex Mason)", type: "Video Game", genre: "FPS/Action" },
{ line: "Stand amongst the ashes of a trillion dead souls, and ask the ghosts if honor matters.", title: "Mass Effect 3 (Video Game)", actor: "Keith David (Captain Anderson - quoting Javik)", type: "Video Game", genre: "RPG/Sci-Fi" },
{ line: "A man chooses, a slave obeys.", title: "BioShock (Video Game)", actor: "Armin Shimerman (Andrew Ryan)", type: "Video Game", genre: "FPS/RPG" },
{ line: "Would you kindly?", title: "BioShock (Video Game)", actor: "Karl Hanover (Atlas)", type: "Video Game", genre: "FPS/RPG" },
{ line: "There's always a lighthouse, there's always a man, there's always a city.", title: "BioShock Infinite (Video Game)", actor: "Courtnee Draper (Elizabeth)", type: "Video Game", genre: "FPS/Adventure" },
{ line: "Praise the Sun!", title: "Dark Souls (Video Game Series)", actor: "Daniel Flynn (Solaire of Astora)", type: "Video Game", genre: "Action RPG/Fantasy" },
{ line: "I'm sorry Mario, but your princess is in another castle!", title: "Super Mario Bros. (Video Game)", actor: "Text (Toad)", type: "Video Game", genre: "Platformer" },
{ line: "Boy!", title: "God of War (2018 Video Game)", actor: "Christopher Judge (Kratos)", type: "Video Game", genre: "Action/Adventure" },
{ line: "Hey! Listen!", title: "The Legend of Zelda: Ocarina of Time (Video Game)", actor: "Nobuyuki Hiyama (Navi - sound effect)", type: "Video Game", genre: "Adventure/Fantasy" },
{ line: "You were almost a Jill sandwich!", title: "Resident Evil (Video Game)", actor: "Barry Burton (voice actor)", type: "Video Game", genre: "Survival Horror" },
{ line: "What are ya buyin'?", title: "Resident Evil 4 (Video Game)", actor: "Paul Mercier (Merchant)", type: "Video Game", genre: "Survival Horror" },
{ line: "S.T.A.R.S.!", title: "Resident Evil 3: Nemesis (Video Game)", actor: "Nemesis (voice actor)", type: "Video Game", genre: "Survival Horror" },
{ line: "Requiescat in pace.", title: "Assassin's Creed II (Video Game)", actor: "Roger Craig Smith (Ezio Auditore)", type: "Video Game", genre: "Action/Adventure" },
{ line: "Fus Ro Dah!", title: "The Elder Scrolls V: Skyrim (Video Game)", actor: "Various (Dragon Shouts)", type: "Video Game", genre: "RPG/Fantasy" },
{ line: "Leeeeeroy Jenkins!", title: "World of Warcraft (Video Game - Player created)", actor: "Ben Schulz (Leeroy Jenkins - player)", type: "Video Game", genre: "MMORPG" },
{ line: "Good men mean well. We just don't always end up doing well.", title: "Red Dead Redemption 2 (Video Game)", actor: "Roger Clark (Arthur Morgan)", type: "Video Game", genre: "Action/Adventure/Western" },
{ line: "I have a plan, Arthur.", title: "Red Dead Redemption 2 (Video Game)", actor: "Benjamin Byron Davis (Dutch van der Linde)", type: "Video Game", genre: "Action/Adventure/Western" },
{ line: "Keep your expectations low, boy, and you'll never be disappointed.", title: "God of War (2018 Video Game)", actor: "Christopher Judge (Kratos)", type: "Video Game", genre: "Action/Adventure" },
{ line: "Hesitation is defeat.", title: "Sekiro: Shadows Die Twice (Video Game)", actor: "Isshin Ashina (voice actor)", type: "Video Game", genre: "Action/Adventure" },
{ line: "A hoonter must hoont.", title: "Bloodborne (Video Game)", actor: "Eileen the Crow (voice actor)", type: "Video Game", genre: "Action RPG/Gothic" },
{ line: "Fear the Old Blood.", title: "Bloodborne (Video Game)", actor: "Various (often Father Gascoigne)", type: "Video Game", genre: "Action RPG/Gothic" },
{ line: "What is better? To be born good, or to overcome your evil nature through great effort?", title: "The Elder Scrolls V: Skyrim (Video Game - Paarthurnax)", actor: "Charles Martinet (Paarthurnax)", type: "Video Game", genre: "RPG/Fantasy" }
];
const WINNING_SCORE = 100;
const TIMER_DURATION = 60; // seconds
let activeQuotes: { line: string; title: string; actor: string; type: string; genre: string; }[] = [];
let currentQuoteIndex = -1, currentTeam = 1, gameState = 'START';
let scores = { team1: 0, team2: 0 };
let usedQuoteIndexes: Set<number> = new Set();
let timerInterval: number | undefined;
let timeLeft: number = TIMER_DURATION;
let timedOut = false;
const a = (id: string): HTMLElement | null => document.getElementById(id);
const difficultySelection = a('difficulty-selection');
const gameContainer = a('game-container');
const team1Panel = a('team1-panel');
const team2Panel = a('team2-panel');
const team1ScoreEl = a('team1-score');
const team2ScoreEl = a('team2-score');
const quoteTextEl = a('quote-text');
const quoteTypeEl = a('quote-type');
const quoteGenreEl = a('quote-genre');
const answerArea = a('answer-area');
const answerTitle = a('answer-title');
const answerActorLine = a('answer-actor-line');
const answerActor = a('answer-actor');
const startTurnButton = a('start-turn-button') as HTMLButtonElement | null;
const correctButton = a('correct-button') as HTMLButtonElement | null;
const incorrectButton = a('incorrect-button') as HTMLButtonElement | null;
const startOverButton = a('start-over-button') as HTMLButtonElement | null;
const messageBox = a('message-box');
const winnerOverlay = a('winner-overlay');
const winnerText = a('winner-text');
const playAgainButton = a('play-again-button') as HTMLButtonElement | null;
const balloonContainer = a('balloon-container');
const easyModeButton = a('easy-mode-button') as HTMLButtonElement | null;
const hardModeButton = a('hard-mode-button') as HTMLButtonElement | null;
const timerDisplayEl = a('timer-display');
const timeRemainingEl = a('time-remaining');
const buzzerSound = a('buzzer-sound') as HTMLAudioElement | null;
const correctSound = a('correct-sound') as HTMLAudioElement | null;
// const tickingSound = a('ticking-sound') as HTMLAudioElement | null; // This was in your provided file, ensure it's in HTML if used
function stopTimer() {
if (timerInterval) clearInterval(timerInterval);
timerInterval = undefined;
// if (tickingSound) { // Logic for ticking sound was in your provided file
// tickingSound.pause();
// tickingSound.currentTime = 0;
// }
}
function resetTimerDisplay() {
if (timeRemainingEl) {
timeRemainingEl.textContent = TIMER_DURATION.toString();
timeRemainingEl.classList.remove('text-yellow-400', 'text-red-500');
timeRemainingEl.classList.add('text-gray-100');
}
if (timerDisplayEl) timerDisplayEl.classList.add('hidden');
timeLeft = TIMER_DURATION;
}
function handleTimeout() {
if (buzzerSound) {
buzzerSound.currentTime = 0;
buzzerSound.play().catch(error => console.error("Error playing buzzer sound:", error));
}
stopTimer();
timedOut = true;
handleIncorrect(); // This will play the buzzer sound again, which might be okay.
}
function startTimer() {
stopTimer();
timeLeft = TIMER_DURATION;
if (timeRemainingEl) {
timeRemainingEl.textContent = timeLeft.toString();
timeRemainingEl.classList.remove('text-yellow-400', 'text-red-500');
timeRemainingEl.classList.add('text-gray-100');
}
if (timerDisplayEl) timerDisplayEl.classList.remove('hidden');
// if (tickingSound) { // Logic for ticking sound
// tickingSound.currentTime = 0;
// tickingSound.play().catch(error => console.error("Error playing ticking sound:", error));
// }
timerInterval = window.setInterval(() => {
timeLeft--;
if (timeRemainingEl) {
timeRemainingEl.textContent = timeLeft.toString();
if (timeLeft <= 10) {
timeRemainingEl.classList.remove('text-yellow-400', 'text-gray-100');
timeRemainingEl.classList.add('text-red-500');
} else if (timeLeft <= 20) {
timeRemainingEl.classList.remove('text-red-500', 'text-gray-100');
timeRemainingEl.classList.add('text-yellow-400');
}
}
if (timeLeft <= 0) {
handleTimeout();
}
}, 1000);
}
function selectDifficulty(mode: 'easy' | 'hard') {
if (mode === 'easy') {
activeQuotes = [...easyQuotes];
} else {
activeQuotes = [...easyQuotes, ...hardQuotes];
}
usedQuoteIndexes.clear();
if (difficultySelection) difficultySelection.classList.add('hidden');
if (gameContainer) gameContainer.classList.remove('hidden');
resetGame(false);
}
function updateTeamHighlight() {
if (team1Panel) team1Panel.classList.toggle('team-active', currentTeam === 1);
if (team2Panel) team2Panel.classList.toggle('team-active', currentTeam !== 1);
}
function switchTeam() {
currentTeam = currentTeam === 1 ? 2 : 1;
updateTeamHighlight();
}
function showMessage(message: string, type: 'success' | 'error' | 'info') {
if (!messageBox) return;
messageBox.innerHTML = message;
messageBox.className = 'mt-6 text-lg font-medium p-4 rounded-lg';
if (type === 'success') messageBox.classList.add('bg-green-100', 'text-green-800');
else if (type === 'error') messageBox.classList.add('bg-red-100', 'text-red-800');
else messageBox.classList.add('bg-blue-100', 'text-blue-800');
messageBox.classList.remove('hidden');
}
function resetForNextTurn() {
gameState = 'START';
stopTimer();
resetTimerDisplay();
if (answerArea) answerArea.classList.add('hidden');
if (correctButton) correctButton.classList.add('hidden');
if (incorrectButton) incorrectButton.classList.add('hidden');
if (startTurnButton) startTurnButton.classList.remove('hidden');
}
function resetGame(showDifficulty = true) {
scores = { team1: 0, team2: 0 };
updateScores(false);
currentTeam = 1;
gameState = 'START';
usedQuoteIndexes.clear();
timedOut = false;
stopTimer();
resetTimerDisplay();
if (winnerOverlay) winnerOverlay.classList.add('hidden');
if (balloonContainer) balloonContainer.innerHTML = '';
if (messageBox) messageBox.classList.add('hidden');
if (answerArea) answerArea.classList.add('hidden');
[startTurnButton, correctButton, incorrectButton, startOverButton].forEach(btn => {
if (btn) btn.disabled = false;
});
if (startTurnButton) startTurnButton.classList.remove('hidden');
if (startOverButton) startOverButton.classList.remove('hidden');
if (correctButton) correctButton.classList.add('hidden');
if (incorrectButton) incorrectButton.classList.add('hidden');
if (quoteTextEl) quoteTextEl.textContent = "Press 'Start Turn' to begin!";
if (quoteTypeEl) quoteTypeEl.textContent = '';
if (quoteGenreEl) quoteGenreEl.textContent = '';
updateTeamHighlight();
if (showDifficulty) {
if (gameContainer) gameContainer.classList.add('hidden');
if (difficultySelection) difficultySelection.classList.remove('hidden');
} else {
if (gameContainer) gameContainer.classList.remove('hidden');
if (startOverButton) startOverButton.classList.remove('hidden');
}
}
function createBalloons(count: number) {
if (!balloonContainer) return;
const colors = ['#ef4444', '#f97316', '#eab308', '#22c55e', '#3b82f6', '#8b5cf6', '#ec4899'];
for (let i = 0; i < count; i++) {
const balloon = document.createElement('div');
balloon.className = 'balloon';
balloon.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)];
balloon.style.left = `${Math.random() * 100}vw`;
balloon.style.animationDuration = `${Math.random() * 6 + 6}s`;
balloon.style.animationDelay = `${Math.random() * 4}s`;
balloonContainer.appendChild(balloon);
}
}
function endGame(winner: string) {
stopTimer();
resetTimerDisplay();
[startTurnButton, correctButton, incorrectButton, startOverButton].forEach(btn => {
if (btn) btn.disabled = true;
});
[answerArea, messageBox, timerDisplayEl].forEach(el => {
if (el) el.classList.add('hidden');
});
if (winnerText) winnerText.textContent = `${winner} Wins!`;
if (winnerOverlay) winnerOverlay.classList.remove('hidden');
createBalloons(40);
}
function startTurn() {
if (messageBox) messageBox.classList.add('hidden');
if (activeQuotes.length === 0) {
if (quoteTextEl) quoteTextEl.textContent = "No quotes loaded. Please select a difficulty.";
return;
}
if (usedQuoteIndexes.size === activeQuotes.length) {
showMessage("All quotes used for this difficulty! Resetting list.", "info");
usedQuoteIndexes.clear();
}
let newIndex;
do {
newIndex = Math.floor(Math.random() * activeQuotes.length);
} while (usedQuoteIndexes.has(newIndex) && usedQuoteIndexes.size < activeQuotes.length);
currentQuoteIndex = newIndex;
usedQuoteIndexes.add(currentQuoteIndex);
const quote = activeQuotes[currentQuoteIndex];
if (quoteTextEl) quoteTextEl.textContent = `"${quote.line}"`;
if (quoteTypeEl) quoteTypeEl.textContent = quote.type;
if (quoteGenreEl) quoteGenreEl.textContent = quote.genre;
if (answerTitle) answerTitle.textContent = quote.title;
if (answerActor) answerActor.textContent = quote.actor;
if (answerActorLine) answerActorLine.classList.add('hidden');
if (answerArea) answerArea.classList.remove('hidden');
[correctButton, incorrectButton].forEach(btn => {
if (btn) btn.classList.remove('hidden');
});
if (startTurnButton) startTurnButton.classList.add('hidden');
gameState = 'GUESSING_TITLE';
startTimer();
}
function handleCorrect() {
if (correctSound) {
correctSound.currentTime = 0;
correctSound.play().catch(error => console.error("Error playing correct sound:", error));
}
stopTimer();
if (gameState === 'GUESSING_TITLE') {
scores[`team${currentTeam}`] += 5;
showMessage(`Correct! +5 points. <br> For a 5 point bonus, who said it?`, 'success');
if (answerActorLine) answerActorLine.classList.remove('hidden');
gameState = 'GUESSING_ACTOR';
startTimer();
} else if (gameState === 'GUESSING_ACTOR') {
scores[`team${currentTeam}`] += 5;
showMessage(`Awesome! +5 bonus points. <br> Team ${currentTeam}'s turn continues!`, 'success');
resetForNextTurn();
}
updateScores();
}
function handleIncorrect() {
if (buzzerSound && !timedOut) { // Play buzzer only if not already played by timeout
buzzerSound.currentTime = 0;
buzzerSound.play().catch(error => console.error("Error playing buzzer sound:", error));
}
stopTimer();
if (currentQuoteIndex < 0 || currentQuoteIndex >= activeQuotes.length) {
resetForNextTurn();
switchTeam();
return;
}
const quote = activeQuotes[currentQuoteIndex];
let messagePrefix = timedOut ? "Time's up! " : "";
if (gameState === 'GUESSING_TITLE') {
showMessage(`${messagePrefix}Incorrect. The answer was "${quote.title}". <br> It's now Team ${currentTeam === 1 ? 2 : 1}'s turn.`, 'error');
switchTeam();
resetForNextTurn();
} else if (gameState === 'GUESSING_ACTOR') {
showMessage(`${messagePrefix}No bonus. The actor was ${quote.actor}. <br> Team ${currentTeam}'s turn continues!`, 'info');
resetForNextTurn();
}
timedOut = false;
}
function updateScores(checkWinner = true) {
if (team1ScoreEl) team1ScoreEl.textContent = scores.team1.toString();
if (team2ScoreEl) team2ScoreEl.textContent = scores.team2.toString();
if (checkWinner) {
if (scores.team1 >= WINNING_SCORE) endGame('Team 1');
else if (scores.team2 >= WINNING_SCORE) endGame('Team 2');
}
}
// Event Listeners
if (easyModeButton) easyModeButton.addEventListener('click', () => selectDifficulty('easy'));
if (hardModeButton) hardModeButton.addEventListener('click', () => selectDifficulty('hard'));
if (startTurnButton) startTurnButton.addEventListener('click', startTurn);
if (correctButton) correctButton.addEventListener('click', handleCorrect);
if (incorrectButton) incorrectButton.addEventListener('click', handleIncorrect);
if (playAgainButton) playAgainButton.addEventListener('click', () => resetGame(true));
if (startOverButton) startOverButton.addEventListener('click', () => resetGame(true));
document.addEventListener('DOMContentLoaded', () => {
resetGame(true);
});