User prompt
Please fix the bug: 'Cannot read properties of null (reading 'toLocaleString')' in or related to this line: 'var scoreText = new Text2(highScores[i].toLocaleString(), {' Line Number: 142
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'highScores.push(scoreObj);' Line Number: 1228
User prompt
Fix errors please
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'highScores.push(scoreObj);' Line Number: 1222
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'highScores.push(scoreObj);' Line Number: 1215
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'highScores.push({' Line Number: 1209 βͺπ‘ Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'highScores.push({' Line Number: 1209
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'highScores.push({' Line Number: 1205
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'highScores.push({' Line Number: 1205
User prompt
Enlarge keyboard
User prompt
Move keyboard down 500
User prompt
Move keyboard down 500 so you can see name entry
User prompt
Allow more time to enter initials before game over appears
User prompt
Increase size of keyboard to enter initials
User prompt
Please fix the bug: 'Cannot read properties of null (reading 'score')' in or related to this line: 'scoreValue = highScore.score;' Line Number: 137
User prompt
Add initials on high score list
User prompt
Please fix the bug: 'TypeError: Cannot read properties of null (reading '_ref')' in or related to this line: 'var scoreA = storage[highScoresKey + '_' + a._ref + '_score'] || 0;' Line Number: 1101
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'highScores[i] = {' Line Number: 1086
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'highScores[i] = {' Line Number: 1086
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'highScores[i] = {' Line Number: 1086
User prompt
Please fix the bug: 'Cannot read properties of null (reading 'score')' in or related to this line: 'var scoreText = new Text2(highScores[i].score ? highScores[i].score.toLocaleString() : highScores[i].toLocaleString(), {' Line Number: 232 βͺπ‘ Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Cannot read properties of null (reading 'name')' in or related to this line: 'if (highScores[i].name) {' Line Number: 218
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'highScores[i] = {' Line Number: 1083
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'highScores[i] = {};' Line Number: 1077
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'highScores[i] = {' Line Number: 1076
/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
var ChickenJockey = Container.expand(function () {
	var self = Container.call(this);
	// Create and attach chicken asset
	var chickenGraphics = self.attachAsset('chicken', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Physics properties
	self.vx = 0;
	self.vy = 0;
	self.gravity = 0.5;
	self.bounceDecay = 0.7; // Reduced bounce decay for more sustained bounces
	self.friction = 0.998; // Increased horizontal friction for less horizontal drift
	self.launched = false;
	self.bounceCount = 0;
	self.maxBounces = 5; // Allow 5 bounces per swipe
	// Rotation properties
	self.rotationSpeed = 0;
	self.launch = function (power, angle) {
		// Convert angle to radians
		var radians = angle * Math.PI / 180;
		// Set initial velocity based on power and angle
		self.vx = Math.cos(radians) * power;
		self.vy = Math.sin(radians) * power;
		// Set rotation speed based on velocity
		self.rotationSpeed = power / 50;
		self.launched = true;
		self.bounceCount = 0;
		// Play launch sound
		LK.getSound('launch').play();
	};
	self.reset = function () {
		self.vx = 0;
		self.vy = 0;
		self.rotation = 0;
		self.rotationSpeed = 0;
		self.launched = false;
		self.bounceCount = 0;
		self.maxBounces = 300; // Set the max bounces here too
	};
	self.update = function () {
		if (!self.launched) {
			return;
		}
		// Apply physics with speed limiting
		self.vy += self.gravity;
		// Cap maximum velocity to prevent freezing
		var maxSpeed = 30;
		self.vx = Math.max(-maxSpeed, Math.min(maxSpeed, self.vx));
		self.vy = Math.max(-maxSpeed, Math.min(maxSpeed, self.vy));
		self.x += self.vx;
		self.y += self.vy;
		self.vx *= self.friction;
		// Apply rotation with speed limiting
		self.rotationSpeed = Math.max(-0.2, Math.min(0.2, self.rotationSpeed));
		self.rotation += self.rotationSpeed;
		// Check if stopped
		if (Math.abs(self.vx) < 0.5 && Math.abs(self.vy) < 0.5 && self.bounceCount > 0) {
			self.launched = false;
			// Notify game that chicken jockey has stopped
			if (typeof game.onChickenJockeyStop === 'function') {
				game.onChickenJockeyStop();
			}
		}
		// Check if max bounces reached
		if (self.bounceCount >= self.maxBounces) {
			self.launched = false;
			// Notify game that max bounces reached
			if (typeof game.onMaxBouncesReached === 'function') {
				game.onMaxBouncesReached();
			}
		}
	};
	return self;
});
var HighScoreTally = Container.expand(function () {
	var self = Container.call(this);
	// Background container
	var background = self.attachAsset('rope', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	background.width = 1400;
	background.height = 1200;
	background.tint = 0x000000;
	background.alpha = 0.8;
	// Title text
	var titleText = new Text2("HIGH SCORES", {
		size: 100,
		fill: 0xFFD700
	});
	titleText.anchor.set(0.5, 0);
	titleText.y = -background.height / 2 + 100;
	self.addChild(titleText);
	// Score entries container
	var scoreEntries = [];
	self.updateScores = function (highScores) {
		// Clear existing entries
		for (var i = 0; i < scoreEntries.length; i++) {
			if (scoreEntries[i].parent) {
				scoreEntries[i].parent.removeChild(scoreEntries[i]);
			}
		}
		scoreEntries = [];
		// Create new entries
		var startY = -background.height / 2 + 250;
		var padding = 80;
		for (var i = 0; i < highScores.length && i < 5; i++) {
			var entry = new Container();
			// Rank
			var rankText = new Text2(i + 1 + ".", {
				size: 70,
				fill: 0xFFFFFF
			});
			rankText.anchor.set(0, 0.5);
			rankText.x = -background.width / 2 + 200;
			entry.addChild(rankText);
			// Score
			var scoreText = new Text2(highScores[i] ? highScores[i].toLocaleString() : "0", {
				size: 70,
				fill: 0xFFD700
			});
			scoreText.anchor.set(1, 0.5);
			scoreText.x = background.width / 2 - 200;
			entry.addChild(scoreText);
			// Position entry
			entry.y = startY + i * padding;
			self.addChild(entry);
			scoreEntries.push(entry);
		}
		// If no scores available
		if (highScores.length === 0) {
			var noScoreText = new Text2("No scores yet!", {
				size: 70,
				fill: 0xFFFFFF
			});
			noScoreText.anchor.set(0.5, 0.5);
			noScoreText.y = 0;
			self.addChild(noScoreText);
			scoreEntries.push(noScoreText);
		}
	};
	// Start button
	var startButton = new Container();
	var buttonBg = startButton.attachAsset('rope', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	buttonBg.width = 600;
	buttonBg.height = 150;
	buttonBg.tint = 0x00AA00;
	var buttonText = new Text2("PLAY GAME", {
		size: 70,
		fill: 0xFFFFFF
	});
	buttonText.anchor.set(0.5, 0.5);
	startButton.addChild(buttonText);
	startButton.y = background.height / 2 - 200;
	self.addChild(startButton);
	startButton.interactive = true;
	startButton.down = function () {
		buttonBg.tint = 0x007700;
	};
	startButton.up = function () {
		buttonBg.tint = 0x00AA00;
		if (typeof self.onStart === 'function') {
			self.onStart();
		}
	};
	// Make container position in center of screen
	self.x = 2048 / 2;
	self.y = 2732 / 2;
	return self;
});
var PathTracer = Container.expand(function () {
	var self = Container.call(this);
	self.points = [];
	self.maxPoints = 50;
	self.lineWidth = 5;
	self.lineColor = 0xFFFFFF;
	self.active = false;
	// Create visual representation of the path
	var pathGraphics = self.attachAsset('rope', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Initialize path graphics
	pathGraphics.alpha = 0.5;
	pathGraphics.width = 0;
	pathGraphics.height = 0;
	self.startTracing = function (x, y) {
		self.points = [{
			x: x,
			y: y
		}];
		self.active = true;
	};
	self.addPoint = function (x, y) {
		if (!self.active) {
			return;
		}
		// Only add point if it's significantly different from last point
		var lastPoint = self.points[self.points.length - 1];
		var dx = x - lastPoint.x;
		var dy = y - lastPoint.y;
		var distance = Math.sqrt(dx * dx + dy * dy);
		if (distance > 20) {
			self.points.push({
				x: x,
				y: y
			});
			// Limit number of points
			if (self.points.length > self.maxPoints) {
				self.points.shift();
			}
		}
	};
	self.stopTracing = function () {
		self.active = false;
		return self.points.length >= 2 ? self.points : null;
	};
	self.clear = function () {
		self.points = [];
		self.active = false;
	};
	self.update = function () {
		// Update path visualization based on current points
		if (self.points.length < 2) {
			pathGraphics.alpha = 0;
			return;
		}
		pathGraphics.alpha = 0.5;
		// Calculate path visual representation
		var firstPoint = self.points[0];
		var lastPoint = self.points[self.points.length - 1];
		// Position at midpoint of path
		self.x = (firstPoint.x + lastPoint.x) / 2;
		self.y = (firstPoint.y + lastPoint.y) / 2;
		// Calculate path length and angle
		var dx = lastPoint.x - firstPoint.x;
		var dy = lastPoint.y - firstPoint.y;
		var length = Math.sqrt(dx * dx + dy * dy);
		var angle = Math.atan2(dy, dx);
		// Update path graphics
		pathGraphics.width = length;
		pathGraphics.height = self.lineWidth;
		pathGraphics.rotation = angle;
	};
	return self;
});
var Popcorn = Container.expand(function () {
	var self = Container.call(this);
	// Create and attach popcorn asset
	var popcornGraphics = self.attachAsset('popcorn', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Add slight animation
	self.animationOffset = Math.random() * Math.PI * 2;
	self.animationSpeed = 0.03 + Math.random() * 0.02;
	self.baseY = 0;
	self.collect = function () {
		// Play collect sound
		LK.getSound('collect').play();
		// Flash effect
		LK.effects.flashObject(self, 0xFFFFFF, 200);
		// Animate collection (flying up)
		tween(self, {
			y: self.y - 100,
			alpha: 0
		}, {
			duration: 500,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				// Remove from parent
				if (self.parent) {
					self.parent.removeChild(self);
				}
			}
		});
	};
	self.update = function () {
		// Hover animation
		if (self.baseY === 0) {
			self.baseY = self.y;
		}
		self.y = self.baseY + Math.sin(LK.ticks * self.animationSpeed + self.animationOffset) * 5;
	};
	return self;
});
var PowerUp = Container.expand(function () {
	var self = Container.call(this);
	// Create and attach power-up asset (using popcorn as base)
	var powerUpGraphics = self.attachAsset('popcorn', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Make it visually distinct
	powerUpGraphics.tint = 0x00FFFF;
	// PowerUp properties
	self.type = "multiplier"; // Default type
	self.value = 2; // Default multiplier value
	self.duration = 10000; // 10 seconds
	self.active = false;
	// Animation properties
	self.animationOffset = Math.random() * Math.PI * 2;
	self.animationSpeed = 0.05 + Math.random() * 0.03;
	self.baseY = 0;
	self.scale = 1.5; // Make power-ups slightly larger
	// Pulse animation
	self.pulseDirection = 1;
	self.pulseSpeed = 0.02;
	self.minScale = 1.3;
	self.maxScale = 1.7;
	self.collect = function () {
		// Play collect sound with higher pitch
		var sound = LK.getSound('collect');
		sound.play();
		// Flash effect
		LK.effects.flashObject(self, 0xFFFFFF, 300);
		// Animate collection (flying up)
		tween(self, {
			y: self.y - 150,
			alpha: 0,
			scaleX: 2,
			scaleY: 2
		}, {
			duration: 600,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				// Remove from parent
				if (self.parent) {
					self.parent.removeChild(self);
				}
			}
		});
		// Activate the powerup effect
		if (typeof game.activatePowerUp === 'function') {
			game.activatePowerUp(self.type, self.value, self.duration);
		}
	};
	self.update = function () {
		// Hover animation
		if (self.baseY === 0) {
			self.baseY = self.y;
		}
		// Vertical hover
		self.y = self.baseY + Math.sin(LK.ticks * self.animationSpeed + self.animationOffset) * 8;
		// Pulsing animation
		var currentScale = self.scale;
		currentScale += self.pulseDirection * self.pulseSpeed;
		if (currentScale > self.maxScale) {
			currentScale = self.maxScale;
			self.pulseDirection = -1;
		} else if (currentScale < self.minScale) {
			currentScale = self.minScale;
			self.pulseDirection = 1;
		}
		self.scale = currentScale;
		self.scaleX = self.scale;
		self.scaleY = self.scale;
	};
	return self;
});
var Rope = Container.expand(function () {
	var self = Container.call(this);
	// Create and attach rope asset
	var ropeGraphics = self.attachAsset('rope', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Rope properties
	self.tension = 0.5; // Reduced tension for less chaotic bounces
	self.bounce = function (chickenJockey) {
		// Calculate new velocity based on collision angle and rope tension
		var normalAngle = Math.atan2(chickenJockey.y - self.y, chickenJockey.x - self.x); // Angle from rope to chicken
		// Calculate new velocity based on angle and tension
		var speed = Math.sqrt(chickenJockey.vx * chickenJockey.vx + chickenJockey.vy * chickenJockey.vy);
		var bounceAngle = 2 * normalAngle - Math.atan2(chickenJockey.vy, chickenJockey.vx); // Angle of reflection
		var bounceForce = speed * self.tension;
		chickenJockey.vx = Math.cos(bounceAngle) * bounceForce * chickenJockey.bounceDecay;
		chickenJockey.vy = Math.sin(bounceAngle) * bounceForce * chickenJockey.bounceDecay;
		// Increment bounce count
		chickenJockey.bounceCount++;
		// Play bounce sound
		LK.getSound('bounce').play();
		// Flash rope to indicate bounce
		LK.effects.flashObject(self, 0xFFFFFF, 200);
		// Add points for bouncing
		if (typeof game.addScore === 'function') {
			game.addScore(5000);
		}
		// Occasionally spawn popcorn on rope bounce
		if (Math.random() < 0.3 && typeof game.createPopcornAt === 'function') {
			game.createPopcornAt(chickenJockey.x, chickenJockey.y, 3);
		}
	};
	self.intersectsWithPoint = function (x, y) {
		var halfWidth = ropeGraphics.width / 2;
		var halfHeight = ropeGraphics.height / 2;
		// Check if point is within the rope's bounding box
		return x >= self.x - halfWidth && x <= self.x + halfWidth && y >= self.y - halfHeight && y <= self.y + halfHeight;
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000 // Black background
});
/**** 
* Game Code
****/ 
// Game state
var gameState = "ready"; // ready, aiming, launched, gameOver
var score = 0;
var launches = 0;
var maxLaunches = 5;
var popcorns = [];
var ropes = [];
var powerUps = [];
var scoreMultiplier = 1;
var multiplierEndTime = 0;
var highScoresKey = 'chickenJockeyHighScores';
var pathTracer = game.addChild(new PathTracer());
// Add backdrop first
var backdrop = game.addChild(LK.getAsset('Backdrop', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 2732 / 2
}));
// Create wrestling arena
var arena = game.addChild(LK.getAsset('arena', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 2732 / 2
}));
// Create chicken jockey
var chickenJockey = game.addChild(new ChickenJockey());
// Game boundaries
var bounds = {
	left: arena.x - arena.width / 2,
	right: arena.x + arena.width / 2,
	top: arena.y - arena.height / 2,
	bottom: arena.y + arena.height / 2
};
// Create GUI elements
var scoreText = new Text2("Score: 0", {
	size: 70,
	fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
var launchesText = new Text2("Launches: 0/" + maxLaunches, {
	size: 50,
	fill: 0xFFFFFF
});
launchesText.anchor.set(0, 0);
launchesText.x = 120; // Avoid top-left corner
launchesText.y = 20;
LK.gui.topLeft.addChild(launchesText);
var instructionText = new Text2("Drag to aim and launch the chicken!", {
	size: 40,
	fill: 0xFFFFFF
});
instructionText.anchor.set(0.5, 0);
instructionText.y = 100;
LK.gui.top.addChild(instructionText);
// Initialize game
function initGame() {
	// Reset variables
	score = 0;
	launches = 0;
	maxLaunches = 5;
	scoreMultiplier = 1;
	multiplierEndTime = 0;
	gameState = "ready";
	// Update UI
	scoreText.setText("Score: " + score);
	launchesText.setText("Launches: " + launches + "/" + maxLaunches);
	instructionText.setText("Swipe to launch the chicken!");
	// Reset chicken jockey
	resetChickenJockey();
	// Clear existing popcorn and ropes
	clearPopcornsAndRopes();
	// Create ropes around the arena
	createRopes();
	// Create popcorn scattered around the arena
	createPopcorn(40);
	// Create a few power-ups
	for (var i = 0; i < 3; i++) {
		createPowerUp();
	}
	// Play game start sound
	LK.getSound('Gamestart').play();
	// Play background music
	LK.playMusic('gameMusic');
}
function resetChickenJockey() {
	chickenJockey.reset();
	// Position chicken in the center of the arena
	chickenJockey.x = arena.x;
	chickenJockey.y = arena.y;
}
function clearPopcornsAndRopes() {
	// Remove all popcorn
	for (var i = 0; i < popcorns.length; i++) {
		if (popcorns[i].parent) {
			popcorns[i].parent.removeChild(popcorns[i]);
		}
	}
	popcorns = [];
	// Remove all ropes
	for (var i = 0; i < ropes.length; i++) {
		if (ropes[i].parent) {
			ropes[i].parent.removeChild(ropes[i]);
		}
	}
	ropes = [];
	// Remove all power-ups
	for (var i = 0; i < powerUps.length; i++) {
		if (powerUps[i].parent) {
			powerUps[i].parent.removeChild(powerUps[i]);
		}
	}
	powerUps = [];
}
function createRopes() {
	// Create top rope
	var topRope = new Rope();
	topRope.x = arena.x;
	topRope.y = bounds.top + 100;
	game.addChild(topRope);
	ropes.push(topRope);
	// Create right rope
	var rightRope = new Rope();
	rightRope.x = bounds.right - 100;
	rightRope.y = arena.y;
	rightRope.rotation = Math.PI / 2; // Rotate 90 degrees
	game.addChild(rightRope);
	ropes.push(rightRope);
	// Create bottom rope
	var bottomRope = new Rope();
	bottomRope.x = arena.x;
	bottomRope.y = bounds.bottom - 100;
	game.addChild(bottomRope);
	ropes.push(bottomRope);
	// Create left rope
	var leftRope = new Rope();
	leftRope.x = bounds.left + 100;
	leftRope.y = arena.y;
	leftRope.rotation = Math.PI / 2; // Rotate 90 degrees
	game.addChild(leftRope);
	ropes.push(leftRope);
}
function createPopcorn(count) {
	for (var i = 0; i < count; i++) {
		var popcorn = new Popcorn();
		// Random position within arena bounds
		popcorn.x = bounds.left + 100 + Math.random() * (arena.width - 200);
		popcorn.y = bounds.top + 100 + Math.random() * (arena.height - 200);
		// Add to game
		game.addChild(popcorn);
		popcorns.push(popcorn);
	}
}
function createPowerUp() {
	var powerUp = new PowerUp();
	// Random position within arena bounds
	powerUp.x = bounds.left + 150 + Math.random() * (arena.width - 300);
	powerUp.y = bounds.top + 150 + Math.random() * (arena.height - 300);
	// Random power-up type
	var types = ["multiplier", "extraLaunch", "superBounce"];
	var randomType = types[Math.floor(Math.random() * types.length)];
	powerUp.type = randomType;
	// Configure based on type
	if (randomType === "multiplier") {
		powerUp.tint = 0x00FFFF; // Cyan
		powerUp.value = 2 + Math.floor(Math.random() * 3); // 2x to 4x multiplier
	} else if (randomType === "extraLaunch") {
		powerUp.tint = 0xFF00FF; // Purple
		powerUp.value = 1; // Extra launch
	} else if (randomType === "superBounce") {
		powerUp.tint = 0xFFFF00; // Yellow
		powerUp.value = 2; // Double bounce points
	}
	// Add to game
	game.addChild(powerUp);
	powerUps.push(powerUp);
}
// Game events
game.onChickenJockeyStop = function () {
	gameState = "ready";
	// Add more popcorn when chicken jockey stops
	if (popcorns.length < 20) {
		createPopcorn(15);
	}
	// Occasionally add a power-up when chicken stops
	if (Math.random() < 0.3 && powerUps.length < 5) {
		createPowerUp();
	}
	// Check if out of launches
	if (launches >= maxLaunches) {
		// Game over
		instructionText.setText("Game Over! Final Score: " + score);
		gameState = "gameOver";
		// Show game over after a short delay
		LK.setTimeout(function () {
			// Play game start sound again as game over sound
			LK.getSound('Gamestart').play();
			LK.showGameOver();
		}, 2000);
	} else {
		// Reset for next launch
		resetChickenJockey();
		instructionText.setText("Drag to aim and launch the chicken!");
	}
};
game.onMaxBouncesReached = function () {
	// Same as onChickenJockeyStop for now
	game.onChickenJockeyStop();
};
// Input handling
var dragStartX = 0;
var dragStartY = 0;
var dragEndX = 0;
var dragEndY = 0;
game.down = function (x, y, obj) {
	if (gameState === "ready") {
		gameState = "aiming";
		dragStartX = x;
		dragStartY = y;
		pathTracer.startTracing(x, y);
		instructionText.setText("Draw a path for the chicken!");
	}
};
game.move = function (x, y, obj) {
	if (gameState === "aiming") {
		pathTracer.addPoint(x, y);
	}
};
game.up = function (x, y, obj) {
	if (gameState === "aiming") {
		// Get the path from the path tracer
		var path = pathTracer.stopTracing();
		// Only launch if we have a valid path
		if (path && path.length >= 2) {
			// Record drag end position
			dragEndX = x;
			dragEndY = y;
			// Calculate direction from the path
			var firstPoint = path[0];
			var lastPoint = path[path.length - 1];
			var dx = lastPoint.x - firstPoint.x;
			var dy = lastPoint.y - firstPoint.y;
			var distance = Math.sqrt(dx * dx + dy * dy);
			// Calculate power based on path length (with a more controlled range)
			var power = Math.min(distance, 200) * 0.2;
			// Calculate angle based on path direction
			var angle = Math.atan2(dy, dx) * 180 / Math.PI;
			chickenJockey.launch(power, angle);
			// Update game state
			gameState = "launched";
			launches++;
			launchesText.setText("Launches: " + launches + "/" + maxLaunches);
			instructionText.setText("Watch the chicken bounce!");
		} else {
			// Cancel the launch if the path was too short
			gameState = "ready";
		}
		// Clear the path tracer regardless
		pathTracer.clear();
	}
};
// Add helper to update score
game.addScore = function (points) {
	// Apply multiplier if active
	var finalPoints = points;
	if (Date.now() < multiplierEndTime) {
		finalPoints = Math.floor(points * scoreMultiplier);
	}
	score += finalPoints;
	scoreText.setText("Score: " + score);
	LK.setScore(score);
	// Visual feedback for big point gains
	if (finalPoints >= 5000) {
		var pointText = new Text2("+" + finalPoints, {
			size: 50,
			fill: 0xFFFF00
		});
		pointText.anchor.set(0.5, 0.5);
		pointText.x = chickenJockey.x;
		pointText.y = chickenJockey.y - 100;
		game.addChild(pointText);
		tween(pointText, {
			y: pointText.y - 150,
			alpha: 0
		}, {
			duration: 800,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				if (pointText.parent) {
					pointText.parent.removeChild(pointText);
				}
			}
		});
	}
};
// Helper method to create popcorn at specific location
game.createPopcornAt = function (x, y, count) {
	count = count || 1;
	for (var i = 0; i < count; i++) {
		var popcorn = new Popcorn();
		// Position near the specified location with some random offset
		var offsetX = (Math.random() - 0.5) * 200;
		var offsetY = (Math.random() - 0.5) * 200;
		popcorn.x = Math.max(bounds.left + 50, Math.min(bounds.right - 50, x + offsetX));
		popcorn.y = Math.max(bounds.top + 50, Math.min(bounds.bottom - 50, y + offsetY));
		// Add to game
		game.addChild(popcorn);
		popcorns.push(popcorn);
	}
};
// Power-up activation function
game.activatePowerUp = function (type, value, duration) {
	// Visual feedback for power-up activation
	LK.effects.flashScreen(0x00FFFF, 500);
	if (type === "multiplier") {
		// Set score multiplier
		scoreMultiplier = value;
		// Display message
		showMessage("Score x" + value + " for " + duration / 1000 + "s!", 0x00FFFF);
		// Set timer to end effect
		multiplierEndTime = Date.now() + duration;
	} else if (type === "extraLaunch") {
		// Add extra launches
		maxLaunches += value;
		launches = Math.max(0, launches - value); // Refund a launch
		launchesText.setText("Launches: " + launches + "/" + maxLaunches);
		// Display message
		showMessage("+" + value + " Extra Launch!", 0xFF00FF);
	} else if (type === "superBounce") {
		// Temporarily increase bounce values
		var oldBounceDecay = chickenJockey.bounceDecay;
		chickenJockey.bounceDecay = Math.min(1.0, chickenJockey.bounceDecay * 1.3);
		// Display message
		showMessage("Super Bounce for " + duration / 1000 + "s!", 0xFFFF00);
		// Set timer to end effect
		LK.setTimeout(function () {
			chickenJockey.bounceDecay = oldBounceDecay;
		}, duration);
	}
};
// Helper function to show temporary messages
function showMessage(text, color) {
	var message = new Text2(text, {
		size: 60,
		fill: color || 0xFFFFFF
	});
	message.anchor.set(0.5, 0.5);
	message.x = 2048 / 2;
	message.y = 400;
	LK.gui.center.addChild(message);
	// Animate in
	message.alpha = 0;
	message.scaleX = 0.5;
	message.scaleY = 0.5;
	tween(message, {
		alpha: 1,
		scaleX: 1,
		scaleY: 1
	}, {
		duration: 300,
		easing: tween.easeOut
	});
	// Animate out after delay
	LK.setTimeout(function () {
		tween(message, {
			alpha: 0,
			y: message.y - 100
		}, {
			duration: 500,
			easing: tween.easeIn,
			onFinish: function onFinish() {
				if (message.parent) {
					message.parent.removeChild(message);
				}
			}
		});
	}, 2000);
}
// Main game loop
game.update = function () {
	// Update all game objects
	if (gameState === "launched") {
		chickenJockey.update();
		// Check for collisions with arena boundaries
		if (chickenJockey.x < bounds.left) {
			chickenJockey.x = bounds.left;
			chickenJockey.vx = -chickenJockey.vx * chickenJockey.bounceDecay; // Apply decay on horizontal bounce
			chickenJockey.bounceCount++;
			LK.getSound('bounce').play();
			game.addScore(2000);
		} else if (chickenJockey.x > bounds.right) {
			chickenJockey.x = bounds.right;
			chickenJockey.vx = -chickenJockey.vx * chickenJockey.bounceDecay; // Apply decay on horizontal bounce
			chickenJockey.bounceCount++;
			LK.getSound('bounce').play();
			game.addScore(2000);
		}
		if (chickenJockey.y < bounds.top) {
			chickenJockey.y = bounds.top;
			chickenJockey.vy = -chickenJockey.vy * chickenJockey.bounceDecay; // Apply decay on vertical bounce
			chickenJockey.bounceCount++;
			LK.getSound('bounce').play();
			game.addScore(2000);
		} else if (chickenJockey.y > bounds.bottom) {
			chickenJockey.y = bounds.bottom;
			chickenJockey.vy = -chickenJockey.vy * chickenJockey.bounceDecay; // Apply decay on vertical bounce
			chickenJockey.bounceCount++;
			LK.getSound('bounce').play();
			game.addScore(2000);
		}
		// Check for collisions with ropes
		for (var i = 0; i < ropes.length; i++) {
			if (chickenJockey.intersects(ropes[i])) {
				ropes[i].bounce(chickenJockey);
			}
		}
		// Check for collisions with popcorn
		for (var i = popcorns.length - 1; i >= 0; i--) {
			if (chickenJockey.intersects(popcorns[i])) {
				// Collect popcorn
				popcorns[i].collect();
				// Remove from array
				popcorns.splice(i, 1);
				// Increase score
				game.addScore(10000);
				scoreText.setText("Score: " + score);
				// Save score to LK
				LK.setScore(score);
				// No longer reset launches when score reaches 1000
			}
		}
		// Check for collisions with power-ups
		for (var i = powerUps.length - 1; i >= 0; i--) {
			if (chickenJockey.intersects(powerUps[i])) {
				// Collect power-up
				powerUps[i].collect();
				// Remove from array
				powerUps.splice(i, 1);
			}
		}
	}
	// Update popcorn animations
	for (var i = 0; i < popcorns.length; i++) {
		popcorns[i].update();
	}
	// Update power-up animations
	for (var i = 0; i < powerUps.length; i++) {
		powerUps[i].update();
	}
	// Randomly spawn new power-ups (rare)
	if (gameState === "launched" && Math.random() < 0.001 && powerUps.length < 5) {
		createPowerUp();
	}
	// Update path tracer
	pathTracer.update();
	// Update score multiplier UI if active
	if (Date.now() < multiplierEndTime && scoreMultiplier > 1) {
		// Update multiplier display in score text
		var remainingSecs = Math.ceil((multiplierEndTime - Date.now()) / 1000);
		scoreText.setText("Score: " + score + " (x" + scoreMultiplier + " for " + remainingSecs + "s)");
	}
	// Award extra launch for every million points
	if (score >= 1000000 && score % 1000000 < 10000) {
		// Only award once when crossing each million point threshold
		if (!game.lastMillionMark || Math.floor(score / 1000000) > Math.floor(game.lastMillionMark / 1000000)) {
			maxLaunches++;
			showMessage("Extra Launch for 1,000,000 points!", 0xFFFF00);
			launchesText.setText("Launches: " + launches + "/" + maxLaunches);
			game.lastMillionMark = score;
			// Create animated free launch text
			var freeText = new Text2("FREE LAUNCH!", {
				size: 100,
				fill: 0xFFFF00
			});
			freeText.anchor.set(0.5, 0.5);
			freeText.x = 2048 / 2;
			freeText.y = 2732 / 2;
			freeText.alpha = 0;
			freeText.scaleX = 0.5;
			freeText.scaleY = 0.5;
			LK.gui.center.addChild(freeText);
			// Animate in with bounce effect
			tween(freeText, {
				alpha: 1,
				scaleX: 1.2,
				scaleY: 1.2
			}, {
				duration: 500,
				easing: tween.elasticOut,
				onFinish: function onFinish() {
					// Pulse animation
					tween(freeText, {
						scaleX: 1,
						scaleY: 1
					}, {
						duration: 500,
						easing: tween.easeInOut,
						onFinish: function onFinish() {
							// Animate out with upward movement
							tween(freeText, {
								alpha: 0,
								y: freeText.y - 200
							}, {
								duration: 800,
								easing: tween.easeIn,
								onFinish: function onFinish() {
									if (freeText.parent) {
										freeText.parent.removeChild(freeText);
									}
								}
							});
						}
					});
				}
			});
		}
	}
};
// High score management functions
function getHighScores() {
	return storage[highScoresKey] || [];
}
function saveHighScore(score) {
	var highScores = getHighScores();
	highScores.push(score);
	// Sort in descending order
	highScores.sort(function (a, b) {
		return b - a;
	});
	// Keep only top 10 scores
	if (highScores.length > 10) {
		highScores = highScores.slice(0, 10);
	}
	// Save to storage
	storage[highScoresKey] = highScores;
}
// Create high score tally
var highScoreTally = new HighScoreTally();
highScoreTally.visible = true;
highScoreTally.onStart = function () {
	game.removeChild(highScoreTally);
	initGame();
};
// Show high scores at start
game.addChild(highScoreTally);
highScoreTally.updateScores(getHighScores());
// Modified game over handling
var originalOnChickenJockeyStop = game.onChickenJockeyStop;
game.onChickenJockeyStop = function () {
	// Call original function first
	originalOnChickenJockeyStop();
	// If game over, save score
	if (gameState === "gameOver") {
		saveHighScore(score);
		// We'll show high scores after game over in LK.showGameOver callback
	}
};
// Handle game start
LK.onGameOver = function () {
	// Show high score tally after game over
	game.addChild(highScoreTally);
	highScoreTally.updateScores(getHighScores());
};
// Initialize the game (commented out because we're showing high scores first)
// initGame(); ===================================================================
--- original.js
+++ change.js
@@ -115,40 +115,18 @@
 		var startY = -background.height / 2 + 250;
 		var padding = 80;
 		for (var i = 0; i < highScores.length && i < 5; i++) {
 			var entry = new Container();
-			var highScore = highScores[i];
-			var scoreValue, initials;
-			// Add null check for highScore
-			if (!highScore) {
-				continue; // Skip this iteration if highScore is null
-			}
-			// Handle both object scores (new format) and number scores (old format)
-			if (_typeof(highScore) === 'object') {
-				scoreValue = highScore.score;
-				initials = highScore.initials || "---";
-			} else {
-				scoreValue = highScore;
-				initials = "---";
-			}
 			// Rank
 			var rankText = new Text2(i + 1 + ".", {
 				size: 70,
 				fill: 0xFFFFFF
 			});
 			rankText.anchor.set(0, 0.5);
 			rankText.x = -background.width / 2 + 200;
 			entry.addChild(rankText);
-			// Initials
-			var initialsText = new Text2(initials, {
-				size: 70,
-				fill: 0xFFD700
-			});
-			initialsText.anchor.set(0.5, 0.5);
-			initialsText.x = -background.width / 2 + 500;
-			entry.addChild(initialsText);
 			// Score
-			var scoreText = new Text2(scoreValue.toLocaleString(), {
+			var scoreText = new Text2(highScores[i] ? highScores[i].toLocaleString() : "0", {
 				size: 70,
 				fill: 0xFFD700
 			});
 			scoreText.anchor.set(1, 0.5);
@@ -202,215 +180,8 @@
 	self.x = 2048 / 2;
 	self.y = 2732 / 2;
 	return self;
 });
-var InitialPrompt = Container.expand(function () {
-	var self = Container.call(this);
-	// Background for the prompt
-	var background = self.attachAsset('rope', {
-		anchorX: 0.5,
-		anchorY: 0.5
-	});
-	background.width = 900; // Increased from 800 to 900
-	background.height = 800; // Increased from 600 to 800
-	background.tint = 0x000000;
-	background.alpha = 0.9;
-	// Title text
-	var titleText = new Text2("NEW HIGH SCORE!", {
-		size: 80,
-		fill: 0xFFD700
-	});
-	titleText.anchor.set(0.5, 0);
-	titleText.y = -background.height / 2 + 80;
-	self.addChild(titleText);
-	// Score display
-	var scoreText = new Text2("", {
-		size: 60,
-		fill: 0xFFFFFF
-	});
-	scoreText.anchor.set(0.5, 0);
-	scoreText.y = -background.height / 2 + 180;
-	self.addChild(scoreText);
-	// Prompt text
-	var promptText = new Text2("Enter your initials:", {
-		size: 50,
-		fill: 0xFFFFFF
-	});
-	promptText.anchor.set(0.5, 0);
-	promptText.y = -background.height / 2 + 260;
-	self.addChild(promptText);
-	// Initials display
-	var initialsText = new Text2("___", {
-		size: 80,
-		fill: 0xFFFFFF
-	});
-	initialsText.anchor.set(0.5, 0);
-	initialsText.y = -background.height / 2 + 340;
-	self.addChild(initialsText);
-	// Current initials and position
-	self.initials = "___";
-	self.cursorPos = 0;
-	// Create letter buttons
-	var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-	var letterButtons = [];
-	var buttonSize = 110; // Increased from 80 to 110
-	var buttonsPerRow = 6; // Reduced from 7 to 6 for larger buttons
-	var startX = -(buttonsPerRow * buttonSize) / 2 + buttonSize / 2;
-	var startY = 450; // Moved down 500 pixels (from -50 to 450)
-	for (var i = 0; i < letters.length; i++) {
-		var letter = letters[i];
-		var letterButton = new Container();
-		// Button background
-		var buttonBg = letterButton.attachAsset('rope', {
-			anchorX: 0.5,
-			anchorY: 0.5
-		});
-		buttonBg.width = buttonSize - 10;
-		buttonBg.height = buttonSize - 10;
-		buttonBg.tint = 0x444444;
-		// Letter text
-		var letterText = new Text2(letter, {
-			size: 50,
-			//{1L} // Increased from 40 to 50
-			fill: 0xFFFFFF
-		});
-		letterText.anchor.set(0.5, 0.5);
-		letterButton.addChild(letterText);
-		// Position button
-		var row = Math.floor(i / buttonsPerRow);
-		var col = i % buttonsPerRow;
-		letterButton.x = startX + col * buttonSize;
-		letterButton.y = startY + row * buttonSize;
-		// Make interactive
-		letterButton.interactive = true;
-		letterButton.letter = letter;
-		// Add press effect
-		letterButton.down = function () {
-			this.children[0].tint = 0x00AA00;
-		};
-		letterButton.up = function () {
-			this.children[0].tint = 0x444444;
-			if (self.cursorPos < 3) {
-				// Update the initial at current position
-				var updatedInitials = self.initials.split('');
-				updatedInitials[self.cursorPos] = this.letter;
-				self.initials = updatedInitials.join('');
-				// Update display
-				initialsText.setText(self.initials);
-				// Move cursor to next position
-				self.cursorPos++;
-				// Enable submit if all 3 letters entered
-				if (self.cursorPos === 3) {
-					submitButton.children[0].tint = 0x00AA00;
-				}
-			}
-		};
-		self.addChild(letterButton);
-		letterButtons.push(letterButton);
-	}
-	// Submit button
-	var submitButton = new Container();
-	var submitBg = submitButton.attachAsset('rope', {
-		anchorX: 0.5,
-		anchorY: 0.5
-	});
-	submitBg.width = 360; // Increased from 300 to 360
-	submitBg.height = 100; // Increased from 80 to 100
-	submitBg.tint = 0x444444; // Start disabled
-	var submitText = new Text2("SUBMIT", {
-		size: 50,
-		//{1Y} // Increased from 40 to 50
-		fill: 0xFFFFFF
-	});
-	submitText.anchor.set(0.5, 0.5);
-	submitButton.addChild(submitText);
-	submitButton.y = startY + 5 * buttonSize; // Adjusted for larger keyboard
-	submitButton.interactive = true;
-	submitButton.down = function () {
-		if (self.cursorPos === 3) {
-			submitBg.tint = 0x007700;
-		}
-	};
-	submitButton.up = function () {
-		if (self.cursorPos === 3) {
-			submitBg.tint = 0x00AA00;
-			// Call the callback with the entered initials
-			if (typeof self.onSubmit === 'function') {
-				self.onSubmit(self.initials);
-			}
-		}
-	};
-	self.addChild(submitButton);
-	// Reset button
-	var resetButton = new Container();
-	var resetBg = resetButton.attachAsset('rope', {
-		anchorX: 0.5,
-		anchorY: 0.5
-	});
-	resetBg.width = 180; // Increased from 150 to 180
-	resetBg.height = 100; // Increased from 80 to 100
-	resetBg.tint = 0xAA0000;
-	var resetText = new Text2("CLEAR", {
-		size: 50,
-		//{2d} // Increased from 40 to 50
-		fill: 0xFFFFFF
-	});
-	resetText.anchor.set(0.5, 0.5);
-	resetButton.addChild(resetText);
-	resetButton.x = -220; // Adjusted for better spacing
-	resetButton.y = startY + 5 * buttonSize; // Adjusted for larger keyboard
-	resetButton.interactive = true;
-	resetButton.down = function () {
-		resetBg.tint = 0x770000;
-	};
-	resetButton.up = function () {
-		resetBg.tint = 0xAA0000;
-		// Reset initials
-		self.initials = "___";
-		self.cursorPos = 0;
-		initialsText.setText(self.initials);
-		submitBg.tint = 0x444444; // Disable submit
-	};
-	self.addChild(resetButton);
-	// Skip button
-	var skipButton = new Container();
-	var skipBg = skipButton.attachAsset('rope', {
-		anchorX: 0.5,
-		anchorY: 0.5
-	});
-	skipBg.width = 180; // Increased from 150 to 180
-	skipBg.height = 100; // Increased from 80 to 100
-	skipBg.tint = 0x0000AA;
-	var skipText = new Text2("SKIP", {
-		size: 50,
-		//{2q} // Increased from 40 to 50
-		fill: 0xFFFFFF
-	});
-	skipText.anchor.set(0.5, 0.5);
-	skipButton.addChild(skipText);
-	skipButton.x = 220; // Adjusted for better spacing
-	skipButton.y = startY + 5 * buttonSize; // Adjusted for larger keyboard
-	skipButton.interactive = true;
-	skipButton.down = function () {
-		skipBg.tint = 0x000077;
-	};
-	skipButton.up = function () {
-		skipBg.tint = 0x0000AA;
-		// Call the callback with default initials
-		if (typeof self.onSubmit === 'function') {
-			self.onSubmit("---");
-		}
-	};
-	self.addChild(skipButton);
-	// Set score to display
-	self.setScore = function (score) {
-		scoreText.setText("Score: " + score.toLocaleString());
-	};
-	// Center on screen
-	self.x = 2048 / 2;
-	self.y = 2732 / 2;
-	return self;
-});
 var PathTracer = Container.expand(function () {
 	var self = Container.call(this);
 	self.points = [];
 	self.maxPoints = 50;
@@ -652,16 +423,8 @@
 /**** 
 * Game Code
 ****/ 
 // Game state
-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);
-}
 var gameState = "ready"; // ready, aiming, launched, gameOver
 var score = 0;
 var launches = 0;
 var maxLaunches = 5;
@@ -854,14 +617,14 @@
 	if (launches >= maxLaunches) {
 		// Game over
 		instructionText.setText("Game Over! Final Score: " + score);
 		gameState = "gameOver";
-		// Show game over after a longer delay to allow more time for initial entry
+		// Show game over after a short delay
 		LK.setTimeout(function () {
 			// Play game start sound again as game over sound
 			LK.getSound('Gamestart').play();
 			LK.showGameOver();
-		}, 10000); // Increased from 2000ms to 10000ms (10 seconds)
+		}, 2000);
 	} else {
 		// Reset for next launch
 		resetChickenJockey();
 		instructionText.setText("Drag to aim and launch the chicken!");
@@ -1181,80 +944,23 @@
 	}
 };
 // High score management functions
 function getHighScores() {
-	try {
-		var scoresString = storage.getItem(highScoresKey);
-		if (!scoresString) {
-			return [];
-		}
-		try {
-			var scores = JSON.parse(scoresString);
-			return Array.isArray(scores) ? scores : [];
-		} catch (parseError) {
-			console.log("Error parsing high scores:", parseError);
-			return [];
-		}
-	} catch (e) {
-		console.log("Error retrieving high scores:", e);
-		return [];
-	}
+	return storage[highScoresKey] || [];
 }
-function saveHighScore(score, initials) {
-	// Initialize a new array for high scores
-	var highScores = [];
-	try {
-		// Get existing high scores from storage and ensure it's an array
-		var storedScores = storage.getItem(highScoresKey);
-		if (storedScores) {
-			try {
-				var parsedScores = JSON.parse(storedScores);
-				if (Array.isArray(parsedScores)) {
-					highScores = parsedScores;
-				}
-			} catch (parseError) {
-				console.log("Error parsing high scores:", parseError);
-			}
-		}
-	} catch (e) {
-		// If any error occurs, we'll use the empty array initialized above
-		console.log("Error retrieving high scores:", e);
-	}
-	// Create score object
-	var scoreObj = {
-		score: score,
-		initials: initials || "---",
-		date: Date.now()
-	};
-	// Add the new score to our array
-	highScores.push(scoreObj);
-	// Sort in descending order by score
+function saveHighScore(score) {
+	var highScores = getHighScores();
+	highScores.push(score);
+	// Sort in descending order
 	highScores.sort(function (a, b) {
-		// If comparing objects with score property
-		if (_typeof(a) === 'object' && _typeof(b) === 'object') {
-			return b.score - a.score;
-		}
-		// If comparing legacy scores (just numbers)
-		else if (typeof a === 'number' && typeof b === 'number') {
-			return b - a;
-		}
-		// Mixed types (convert numbers to objects for comparison)
-		else if (typeof a === 'number') {
-			return b.score - a;
-		} else {
-			return b - a.score;
-		}
+		return b - a;
 	});
 	// Keep only top 10 scores
 	if (highScores.length > 10) {
 		highScores = highScores.slice(0, 10);
 	}
-	// Safely save to storage
-	try {
-		storage.setItem(highScoresKey, JSON.stringify(highScores));
-	} catch (e) {
-		console.log("Failed to save high scores:", e);
-	}
+	// Save to storage
+	storage[highScoresKey] = highScores;
 }
 // Create high score tally
 var highScoreTally = new HighScoreTally();
 highScoreTally.visible = true;
@@ -1264,51 +970,17 @@
 };
 // Show high scores at start
 game.addChild(highScoreTally);
 highScoreTally.updateScores(getHighScores());
-// Create initial prompt
-var initialPrompt = new InitialPrompt();
-initialPrompt.visible = false;
-initialPrompt.onSubmit = function (initials) {
-	// Save score with initials
-	saveHighScore(score, initials);
-	// Hide the prompt
-	initialPrompt.visible = false;
-	game.removeChild(initialPrompt);
-	// Show game over
-	LK.showGameOver();
-};
 // Modified game over handling
 var originalOnChickenJockeyStop = game.onChickenJockeyStop;
 game.onChickenJockeyStop = function () {
 	// Call original function first
 	originalOnChickenJockeyStop();
-	// If game over, check if it's a high score
+	// If game over, save score
 	if (gameState === "gameOver") {
-		var highScores = getHighScores();
-		var isHighScore = false;
-		// Check if this score qualifies as a high score
-		if (highScores.length < 10) {
-			isHighScore = true;
-		} else {
-			// Check if score is higher than the lowest high score
-			var lowestScore = highScores[highScores.length - 1];
-			if (_typeof(lowestScore) === 'object') {
-				isHighScore = score > lowestScore.score;
-			} else {
-				isHighScore = score > lowestScore;
-			}
-		}
-		if (isHighScore) {
-			// Show the initials prompt
-			initialPrompt.setScore(score);
-			game.addChild(initialPrompt);
-			initialPrompt.visible = true;
-		} else {
-			// Not a high score, just save it without initials and show game over
-			saveHighScore(score, "---");
-			LK.showGameOver();
-		}
+		saveHighScore(score);
+		// We'll show high scores after game over in LK.showGameOver callback
 	}
 };
 // Handle game start
 LK.onGameOver = function () {
:quality(85)/https://cdn.frvr.ai/680e2cb731e90df6e3a79663.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/680f25b74b91ed99c0c93065.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/68107d72af890f4678fa3c0c.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6811f7e547f9689b747b894b.png%3F3) 
 X5 symbol. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6811f84547f9689b747b8951.png%3F3) 
 X2 symbol. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6812d11c31e90df6e3a797a7.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6812d23e21b2d4faceef26d6.png%3F3) 
 Super popcorn yellow. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6814a4059dcd06d468edb7f4.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6814a730211045a0f483816f.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6814a81e211045a0f4838182.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6814a94a211045a0f483818b.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6814aa19211045a0f4838190.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6814aae1211045a0f4838194.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6814dcf6bef1291d4e518ee7.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6814e89f0e23fbc7292fa249.png%3F3) 
 Start button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6814e9750e23fbc7292fa26a.png%3F3) 
 High score button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6814ea630e23fbc7292fa285.png%3F3) 
 Back button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6814eb8e0e23fbc7292fa299.png%3F3) 
 SELECT YOUR CHARACTER button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6814ed0e0e23fbc7292fa2b0.png%3F3) 
 Launches button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6814f180fb90c04ce18c733a.png%3F3) 
 How to play button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6814f1d4fb90c04ce18c733e.png%3F3) 
 Score button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6814fcd30e23fbc7292fa369.png%3F3) 
 High Scores button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6814fe1d0e23fbc7292fa377.png%3F3) 
 Transparent padlock. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6814ff160e23fbc7292fa382.png%3F3) 
 Chicken jockey character. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6815cc2e1a2f31aebc36772c.png%3F3) 
 Reset scores button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6815e8706137896f737201af.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6816d35ae16864a155151a6f.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6816db39d574efc6b10a8c23.png%3F3) 
 Spider jockey unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6816dba1d574efc6b10a8c2b.png%3F3) 
 Minecraft Steve unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6816dc6cd574efc6b10a8c3b.png%3F3) 
 Piglin unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6816dcafd574efc6b10a8c41.png%3F3) 
 Minecraft skeleton unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6816dd05d574efc6b10a8c49.png%3F3) 
 Minecraft villager unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6817072827945e34d88365bf.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6817077827945e34d88365c7.png%3F3) 
 Star. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/681707d227945e34d88365cd.png%3F3) 
 White star. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/681709c927945e34d88365da.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/68170ba127945e34d88365fe.png%3F3) 
 Red heart. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/68170bea27945e34d8836604.png%3F3) 
 Purple heart. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/68170c3730f9a3ca3143c36b.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/68170df027945e34d8836617.png%3F3) 
 A peanut. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/68170e3627945e34d883661c.png%3F3) 
 Cashew nut. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6817137327945e34d883666e.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681717d45557ee2046ecc2f7.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/68171a3c27945e34d883669c.png%3F3) 
 Grimace shake. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/68171a8627945e34d88366a8.png%3F3) 
 MacDonald's fries. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/68172b1b527b05c35818e92d.png%3F3) 
 Grimace unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/68176ba74a0979b918f7a043.png%3F3) 
 Michael Jackson unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/68176bfb4a0979b918f7a047.png%3F3) 
 John Cena unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/681848065557ee2046ecc355.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681852a92383a43353c7548b.png%3F3) 
 Deez nuts unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/681852f02383a43353c75498.png%3F3) 
 Shooting stars unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/68185b748a0e5c4bce224097.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681875d52be3391f326409d8.png%3F3) 
 Rick roll unlocked button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/681952795557ee2046ecc397.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6819530ee4bfd0bbff165058.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681c8c14c433709b9f3496bb.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681c9e526135700112f879bd.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681d93b51b9e5a67ebab2a52.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681d95da1b9e5a67ebab2a5f.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681e1884c7ebd23c4bdd5928.png%3F3) 
 Popcorn chicken. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/681e18f9c7ebd23c4bdd5939.png%3F3) 
 Fried chicken drumstick. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/681eb5fbce5c2130acf291bd.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681eb6868578d3fadb9cac49.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681eb95249de8df9599c5b97.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681ebb3049de8df9599c5ba9.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681ee624b1146135aaefe63c.png%3F3) 
 Amazing digital circus button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/681ef7e841b5fb6826081a28.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681ef98cce5c2130acf291c1.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681ef9efce5c2130acf291c3.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/681f82fa4de4664a77b8eb6f.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6826b332054039919f0a089c.png%3F3) 
 Select game mode button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6826bbff97a2158c01b6e945.png%3F3) 
 Diamond shaped colourful classic mode button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6826c2d197a2158c01b6e963.png%3F3) 
 Diamond shaped colourful mini games button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6827168900c54e0648f3278d.png%3F3) 
 Same picture in high definition
:quality(85)/https://cdn.frvr.ai/6827414625df75ae7a4de4a6.png%3F3) 
 Diamond shaped colourful button that says sling shot mode. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/682548fd80be55c1986a9d45.png%3F3) 
 Make picture transparent
:quality(85)/https://cdn.frvr.ai/6827dcc4f0da5bc629928468.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6827fd58f0da5bc629928492.png%3F3) 
 Bullet. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/6827fdd2f0da5bc6299284a3.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/6828170b80d2c88911cb1d24.png%3F3) 
 Start game button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/682b446c031377340829c968.png%3F3) 
 :quality(85)/https://cdn.frvr.ai/682b45b0031377340829ca5d.png%3F3) 
 Shooting gallery button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/682ec3c623c50e12668ce9bd.png%3F3) 
 Chain reaction button. In-Game asset. 2d. High contrast. No shadows
:quality(85)/https://cdn.frvr.ai/682ecaa723c50e12668cea01.png%3F3) 
 Realistic space backdrop. In-Game asset. 2d. High contrast. No shadows
launch
Sound effect
Gamestart
Sound effect
collect
Sound effect
gameMusic
Music
Gamemusic
Sound effect
Bogerk
Sound effect
pop
Sound effect
Pignoise
Sound effect
Steve
Sound effect
Villager
Sound effect
Spider
Sound effect
Skeleton
Sound effect
Shootingstars
Music
Maccas
Sound effect
Grimace
Sound effect
Thriller
Music
MJ
Sound effect
Cenaentrance
Music
Johncena
Sound effect
Chickencluck
Sound effect
Deeznuts
Sound effect
Deeznutstrap
Music
Rickroll
Sound effect
Nevergonna
Music
Starz
Sound effect
Grimaceshake
Music
Joenugget
Sound effect
gegagedi
Music
Shrek
Sound effect
Raveswamp
Music
Pomni
Sound effect
Digcircus
Music
Runandgo
Music
Gunshot
Sound effect
Reelbadman
Sound effect
Tinggoes
Music