User prompt
Make the invincbility mode back ground darker
User prompt
Make the background green when invincibility mode "on"
User prompt
Make number progress reset when ever you toggle invincibility mode "on" or "off"
User prompt
Add an invincibility mode highest number to a different category
User prompt
Add a invincibility mode hi score to a differnt category
User prompt
Make the invincibility mode score to a different category
User prompt
Don't flash the screen on invincibility mode on a loss
User prompt
Add an invincibility mode that is the same but you don't restart when you lose
User prompt
Make invincibility mode the exact same but you do not lose your progress of you lose
User prompt
Make a button that turns on a mode where you can't lose
Code edit (1 edits merged)
Please save this source code
User prompt
Number Tower: Rare Ascent
Initial prompt
Try to get the highest number possible with luck. Each number is 1.01× rarer than the last number
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { highestNumber: 0, highScore: 0, invincibilityHighScore: 0 }); /**** * Classes ****/ var GenerateButton = Container.expand(function () { var self = Container.call(this); // Create button background var buttonBox = self.attachAsset('generateButton', { anchorX: 0.5, anchorY: 0.5 }); // Create button text self.buttonText = new Text2("TAP TO GENERATE", { size: 70, fill: 0xFFFFFF }); self.buttonText.anchor.set(0.5, 0.5); self.addChild(self.buttonText); // Interactive properties self.interactive = true; // Handle button press self.down = function () { buttonBox.alpha = 0.7; tween(buttonBox, { scaleX: 0.95, scaleY: 0.95 }, { duration: 100, easing: tween.easeOut }); }; // Handle button release self.up = function () { buttonBox.alpha = 1.0; tween(buttonBox, { scaleX: 1, scaleY: 1 }, { duration: 100, easing: tween.easeOut }); }; return self; }); var InvincibilityButton = Container.expand(function () { var self = Container.call(this); // Create button background var buttonBox = self.attachAsset('invincibilityButton', { anchorX: 0.5, anchorY: 0.5 }); // Create button text self.buttonText = new Text2("INVINCIBILITY: OFF", { size: 40, fill: 0xFFFFFF }); self.buttonText.anchor.set(0.5, 0.5); self.addChild(self.buttonText); // Interactive properties self.interactive = true; // Handle button press self.down = function () { buttonBox.alpha = 0.7; tween(buttonBox, { scaleX: 0.95, scaleY: 0.95 }, { duration: 100, easing: tween.easeOut }); }; // Handle button release self.up = function () { buttonBox.alpha = 1.0; tween(buttonBox, { scaleX: 1, scaleY: 1 }, { duration: 100, easing: tween.easeOut }); // Toggle invincibility mode game.invincibilityMode = !game.invincibilityMode; self.buttonText.setText("INVINCIBILITY: " + (game.invincibilityMode ? "ON" : "OFF")); game.setBackgroundColor(game.invincibilityMode ? 0x006400 : 0x2C3E50); // Reset number progress initGame(); }; return self; }); var NumberDisplay = Container.expand(function () { var self = Container.call(this); // Create the background box var box = self.attachAsset('numberBox', { anchorX: 0.5, anchorY: 0.5 }); // Create text display self.valueText = new Text2("0", { size: 120, fill: 0x333333 }); self.valueText.anchor.set(0.5, 0.5); self.addChild(self.valueText); // Create probability display self.probabilityText = new Text2("100%", { size: 40, fill: 0x666666 }); self.probabilityText.anchor.set(0.5, 0.5); self.probabilityText.y = 80; self.addChild(self.probabilityText); // Set the current value and update display self.currentValue = 0; // Method to update the display self.setValue = function (value) { self.currentValue = value; self.valueText.setText(value.toString()); // Calculate and display probability of next number var nextProbability = Math.pow(0.99, value) * 100; var probabilityDisplay = nextProbability < 0.01 ? "<0.01%" : nextProbability.toFixed(2) + "%"; self.probabilityText.setText(probabilityDisplay); // Flash effect for new number LK.effects.flashObject(box, 0x00FF00, 300); }; return self; }); var ScoreDisplay = Container.expand(function () { var self = Container.call(this); // Create score text self.scoreText = new Text2("Score: 0", { size: 60, fill: 0xFFFFFF }); self.scoreText.anchor.set(0, 0); self.addChild(self.scoreText); // Create high score text self.highScoreText = new Text2("High Score: 0", { size: 40, fill: 0xCCCCCC }); self.highScoreText.anchor.set(0, 0); self.highScoreText.y = 70; self.addChild(self.highScoreText); // Create highest number text self.highestNumberText = new Text2("Highest Number: 0", { size: 40, fill: 0xCCCCCC }); self.highestNumberText.anchor.set(0, 0); self.highestNumberText.y = 120; self.addChild(self.highestNumberText); // Create invincibility high score text self.invincibilityHighScoreText = new Text2("Invincibility High Score: 0", { size: 40, fill: 0xCCCCCC }); self.invincibilityHighScoreText.anchor.set(0, 0); self.invincibilityHighScoreText.y = 170; self.addChild(self.invincibilityHighScoreText); // Update methods self.updateScore = function (score) { self.scoreText.setText("Score: " + score); }; self.updateHighScore = function (highScore) { self.highScoreText.setText("High Score: " + highScore); }; self.updateHighestNumber = function (highestNumber) { self.highestNumberText.setText("Highest Number: " + highestNumber); }; // Create invincibility highest number text self.invincibilityHighestNumberText = new Text2("Invincibility Highest Number: 0", { size: 40, fill: 0xCCCCCC }); self.invincibilityHighestNumberText.anchor.set(0, 0); self.invincibilityHighestNumberText.y = 220; self.addChild(self.invincibilityHighestNumberText); // Update method for invincibility highest number self.updateInvincibilityHighestNumber = function (invincibilityHighestNumber) { self.invincibilityHighestNumberText.setText("Invincibility Highest Number: " + invincibilityHighestNumber); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2C3E50 }); /**** * Game Code ****/ // Game state variables var currentNumber = 0; var currentScore = 0; var gameActive = true; var highestReached = 0; // Create main number display var numberDisplay = new NumberDisplay(); numberDisplay.x = 2048 / 2; numberDisplay.y = 2732 / 2 - 300; game.addChild(numberDisplay); // Create generate button var generateButton = new GenerateButton(); generateButton.x = 2048 / 2; generateButton.y = 2732 / 2 + 300; game.addChild(generateButton); // Create score display var scoreDisplay = new ScoreDisplay(); scoreDisplay.x = 150; scoreDisplay.y = 150; game.addChild(scoreDisplay); // Initialize invincibility mode game.invincibilityMode = false; // Create invincibility button var invincibilityButton = new InvincibilityButton(); invincibilityButton.x = 2048 / 2; invincibilityButton.y = 2732 / 2 + 500; game.addChild(invincibilityButton); // Initialize stored data scoreDisplay.updateHighScore(storage.highScore || 0); scoreDisplay.updateHighestNumber(storage.highestNumber || 0); // Function to try generating the next number function tryGenerateNext() { if (!gameActive) { return; } // Play sound LK.getSound('generate').play(); // Calculate probability for next number (0.99^currentNumber) var probability = Math.pow(0.99, currentNumber); // Generate random number and check if we succeed if (Math.random() < probability) { // Success - increment number currentNumber++; // Update highest reached if needed if (currentNumber > highestReached) { highestReached = currentNumber; // Play success sound LK.getSound('success').play(); // Add points to score (higher numbers give more points) var pointsEarned = Math.pow(2, currentNumber); currentScore += pointsEarned; // Show points earned with animation var pointsText = new Text2("+" + pointsEarned, { size: 80, fill: 0xFFFF00 }); pointsText.anchor.set(0.5, 0.5); pointsText.x = numberDisplay.x; pointsText.y = numberDisplay.y - 300; game.addChild(pointsText); // Animate points text tween(pointsText, { y: pointsText.y - 200, alpha: 0 }, { duration: 1000, easing: tween.easeOut, onFinish: function onFinish() { pointsText.destroy(); } }); // Update displays scoreDisplay.updateScore(currentScore); LK.setScore(currentScore); // Check if new high score or highest number if (currentNumber > (storage.highestNumber || 0)) { storage.highestNumber = currentNumber; scoreDisplay.updateHighestNumber(currentNumber); } if (game.invincibilityMode) { if (currentScore > (storage.invincibilityHighScore || 0)) { storage.invincibilityHighScore = currentScore; scoreDisplay.invincibilityHighScoreText.setText("Invincibility High Score: " + currentScore); } if (currentNumber > (storage.invincibilityHighestNumber || 0)) { storage.invincibilityHighestNumber = currentNumber; scoreDisplay.updateInvincibilityHighestNumber(currentNumber); } } else { if (currentScore > (storage.highScore || 0)) { storage.highScore = currentScore; scoreDisplay.updateHighScore(currentScore); } } } // Update number display numberDisplay.setValue(currentNumber); } else { if (!game.invincibilityMode) { // Failed - game over gameActive = false; // Play game over sound LK.getSound('gameover').play(); // Flash effect for game over LK.effects.flashScreen(0xFF0000, 500); // Show game over after a delay LK.setTimeout(function () { LK.showGameOver(); }, 800); } else { // In invincibility mode, do not flash the screen } } } // Handle button press to generate number generateButton.down = function () { // Original button press animation var buttonBox = generateButton.getChildAt(0); buttonBox.alpha = 0.7; tween(buttonBox, { scaleX: 0.95, scaleY: 0.95 }, { duration: 100, easing: tween.easeOut }); }; generateButton.up = function () { // Original button release animation var buttonBox = generateButton.getChildAt(0); buttonBox.alpha = 1.0; tween(buttonBox, { scaleX: 1, scaleY: 1 }, { duration: 100, easing: tween.easeOut }); // Try generating next number tryGenerateNext(); }; // Game update function game.update = function () { // Game logic that runs every frame // (Currently empty as our game is event-driven) }; // Initialize the game function initGame() { // Reset game state currentNumber = 0; currentScore = 0; gameActive = true; highestReached = 0; // Reset displays numberDisplay.setValue(0); scoreDisplay.updateScore(0); LK.setScore(0); // Play background music LK.playMusic('bgMusic'); } // Call init on game start initGame();
===================================================================
--- original.js
+++ change.js
@@ -90,9 +90,9 @@
});
// Toggle invincibility mode
game.invincibilityMode = !game.invincibilityMode;
self.buttonText.setText("INVINCIBILITY: " + (game.invincibilityMode ? "ON" : "OFF"));
- game.setBackgroundColor(game.invincibilityMode ? 0x00FF00 : 0x2C3E50);
+ game.setBackgroundColor(game.invincibilityMode ? 0x006400 : 0x2C3E50);
// Reset number progress
initGame();
};
return self;