User prompt
Make it so when you click the speed asset, it costs 10$ and the speed assets move 20% faster from now on
User prompt
And make it say +20% 10
User prompt
Add a black text to the center of the speed asset and make it the same size as the rate text
User prompt
More
User prompt
Move the speed asset down
User prompt
More
User prompt
More
User prompt
Now move the speed asset down
User prompt
Put the speed asset in the same position as the rate asset
User prompt
Add the speed asset to the screen
User prompt
It didnt work
User prompt
Make it so after you buy the third tate upgrade make the text say 0.75s 30$
User prompt
Now make it so when you buy the third rate upgrade which is the upgrade that says 0.80s 30$, when you buy it, make it cost 30$ and make your rate equal 0.80 seconds
User prompt
It didnt work
User prompt
Good now make it so when you buy the second rate upgrade, the text on the rate asset says 0.80s 30$
User prompt
Ok keep the texts the same but the second rate upgrade costs 10$ not 30$ and it is suppsed to change your rate to 0.85s not 0.80s
User prompt
Didnt work
User prompt
It didnt work
User prompt
But the 0.80s 30$ text should appear after you buy the second upgrade
User prompt
Found a glitch where the second upgrade costs 30$ and sets your rate to 0.80. It should actually cost 10$ and change your rate to 0.85s
User prompt
It didnt work
User prompt
Make it so when you buy the second rate upgrade, make the text say 0.80 30$
User prompt
Make the text on the rate upgrade always accurate with the next upgrade
User prompt
And make it so when the wave is 14 or higher the speed the bulks come out is 1.25 seconds
User prompt
Give the bulk 2 hp not 3
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ // Create a new class for the bulk asset var Bulk = Container.expand(function () { var self = Container.call(this); // Attach the bulk asset to the Bulk class var bulkGraphics = self.attachAsset('Bulk', { anchorX: 0.5, anchorY: 0.5 }); // Set the bulk's speed self.speed = 2; // Set the bulk's health self.health = 2; // Update the bulk's position every game tick self.update = function () { // Calculate the distance between the bulk and the slime var dx = slime.x - self.x; var dy = slime.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); // Normalize the direction vector (dx and dy) dx /= distance; dy /= distance; // Move the bulk towards the slime at a constant speed self.x += dx * self.speed; self.y += dy * self.speed; }; }); // Create a new class for the cube asset var Cube = Container.expand(function () { var self = Container.call(this); // Attach the cube asset to the Cube class var cubeGraphics = self.attachAsset('Cube', { anchorX: 0.5, anchorY: 0.5 }); // Set the cube's speed self.speed = 3; // Increase cube's speed by 25% when wave equals 5 self.update = function () { if (waveText.wave === 5) { self.speed += self.speed * 0.25; waveText.wave++; // Increment wave to prevent speed increase in every tick } }; // Set the cube's health self.health = 1; // Set the cube's health self.health = 1; // Update the cube's position every game tick self.update = function () { // Calculate the distance between the cube and the slime var dx = slime.x - self.x; var dy = slime.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); // Normalize the direction vector (dx and dy) dx /= distance; dy /= distance; // Move the cube towards the slime at a constant speed self.x += dx * self.speed; self.y += dy * self.speed; }; }); // Create a new class for the shoot asset var Shoot = Container.expand(function () { var self = Container.call(this); // Attach the shoot asset to the Shoot class var shootGraphics = self.attachAsset('Shoot', { anchorX: 0.5, anchorY: 0.5 }); // Set the shoot's speed self.speed = 5; // Set the shoot's damage self.damage = 1; // Set the shoot's damage self.damage = 1; // Update the shoot's position every game tick self.update = function () { // Move the shoot to the right at a constant speed self.x += self.speed; }; }); // Create a new class for the speedcube asset var Speedcube = Container.expand(function () { var self = Container.call(this); // Attach the speedcube asset to the Speedcube class var speedcubeGraphics = self.attachAsset('Speedcube', { anchorX: 0.5, anchorY: 0.5 }); // Set the speedcube's health self.health = 1; // Set the speedcube's speed self.speed = 5; // Update the speedcube's position every game tick self.update = function () { // Calculate the distance between the speedcube and the slime var dx = slime.x - self.x; var dy = slime.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); // Normalize the direction vector (dx and dy) dx /= distance; dy /= distance; // Move the speedcube towards the slime at a constant speed self.x += dx * self.speed; self.y += dy * self.speed; }; }); // Create a new class for the rate text centered on the rate asset var CenteredRateText = Text2.expand(function () { var self = Text2.call(this, '0.9s 10$', { size: 100, fill: 0xFFFFFF }); self.anchor.set(0.5, 0.5); // Center the text self.update = function () { if (firingRate === 0.9) { self.setText('0.85s 10$'); } else if (firingRate === 0.85) { self.setText('0.80s 30$'); } else { self.setText('0.9s 10$'); } }; }); // Create a new class for the centered speed text var CenteredSpeedText = Text2.expand(function () { var self = Text2.call(this, '+20% 10', { size: 100, // Same size as the rate text fill: 0x000000 // Black color }); self.anchor.set(0.5, 0.5); // Center the text }); // Create a new class for the gold text var GoldText = Text2.expand(function () { var self = Text2.call(this, 'Gold: 0', { size: 100, fill: 0xFFFFFF }); self.anchor.set(0, 0); self.x = 50; self.y = 150; self.gold = storage.gold || 10; // Set initial gold to 10 self.update = function () { self.setText('Gold: ' + self.gold); }; }); // Create a new class for the rate text var RateText = Text2.expand(function () { var self = Text2.call(this, 'Rate: 0s', { size: 100, fill: 0xFFFFFF }); self.anchor.set(0, 0); self.x = 50; self.y = 250; self.update = function () { self.setText('Rate: ' + firingRate + 's'); }; }); // Create a new class for the reset button var ResetButton = Text2.expand(function () { var self = Text2.call(this, 'Reset Progress', { size: 100, fill: 0xFF0000 // Red color }); self.anchor.set(1, 0); // Anchor to top right self.x = 2048 - 50; // Position to top right with 50px padding self.y = 50; self.interactive = true; // Make the button clickable self.down = function () { // Reset progress storage.wave = 1; storage.gold = 10; storage.firingRate = 1.0; // Reset firing rate to default waveText.wave = 1; goldText.gold = 10; firingRate = 1.0; // Reset firing rate variable rateText.setText('Rate ' + firingRate + 's'); // Update rate text // Refresh the game LK.showGameOver(); // This will reset the game state }; }); // Create a new class for the wave text var WaveText = Text2.expand(function () { var self = Text2.call(this, 'Wave: 0', { size: 100, fill: 0xFFFFFF }); self.anchor.set(0, 0); self.x = 50; self.y = 50; self.wave = storage.wave || 1; // Set initial wave to 1 self.update = function () { self.setText('Wave: ' + self.wave); }; }); /**** * Initialize Game ****/ // Spawn the cube asset from the cubestart asset every 60 game ticks //<Assets used in the game will automatically appear here> var game = new LK.Game({ backgroundColor: 0x008000 //Init game with green background }); /**** * Game Code ****/ //<Assets used in the game will automatically appear here> // Spawn the cube asset from the cubestart asset every 60 game ticks // Add slime asset to the game screen, make it 2x bigger and move it to the left var slime = game.addChild(LK.getAsset('Slime', { anchorX: 0.5, anchorY: 0.5, x: 200, y: 1350, // Adjusted y position to move the slime down a little scaleX: 2, scaleY: 2 })); // Add menu asset to the game screen var menu = game.addChild(LK.getAsset('Menu', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 2766, scaleX: 25, scaleY: 25 })); // Add cubestart asset to the game screen var cubestart = game.addChild(LK.getAsset('Cubesstart', { anchorX: 0.5, anchorY: 0.5, x: 1800, // Moved to the right by a lot y: 1366, scaleX: 2, scaleY: 2 })); // Add the speed asset to the game screen var speedAsset = game.addChild(LK.getAsset('Speed', { anchorX: 0.5, anchorY: 0.5, x: 350, y: 2500, scaleX: 2, scaleY: 2 })); // Add the centered speed text to the center of the speed asset var centeredSpeedText = game.addChild(new CenteredSpeedText()); centeredSpeedText.x = speedAsset.x; centeredSpeedText.y = speedAsset.y; // Make the speed asset interactive speedAsset.interactive = true; speedAsset.down = function () { if (goldText.gold >= 10) { goldText.gold -= 10; // Increase speed of all speed assets by 20% for (var i = 0; i < game.children.length; i++) { var obj = game.children[i]; if (obj instanceof Speedcube) { obj.speed += obj.speed * 0.20; } } storage.gold = goldText.gold; } }; // Add the rate asset to the game screen var rateAsset = game.addChild(LK.getAsset('Rate', { anchorX: 0.5, anchorY: 0.5, x: 350, y: 1800, scaleX: 2, scaleY: 2 })); // Add the centered rate text to the center of the rate asset var centeredRateText = game.addChild(new CenteredRateText()); centeredRateText.x = rateAsset.x; centeredRateText.y = rateAsset.y; // Make the rate asset interactive rateAsset.interactive = true; rateAsset.down = function () { if (goldText.gold >= 10) { goldText.gold -= 10; firingRate = 0.9; rateText.setText('Rate: ' + firingRate + 's'); storage.gold = goldText.gold; storage.firingRate = firingRate; // Update the centered rate text for the next upgrade centeredRateText.setText('0.85s 10$'); centeredRateText.update(); // Ensure the text is updated immediately // Update the rateAsset interaction for the next upgrade rateAsset.down = function () { if (goldText.gold >= 10) { goldText.gold -= 10; firingRate = 0.85; rateText.setText('Rate: ' + firingRate + 's'); storage.gold = goldText.gold; storage.firingRate = firingRate; // Update the centered rate text for the next upgrade centeredRateText.setText('0.75s 30$'); centeredRateText.update(); // Ensure the text is updated immediately // Update the rateAsset interaction for the next upgrade rateAsset.down = function () { if (goldText.gold >= 30) { goldText.gold -= 30; firingRate = 0.80; rateText.setText('Rate: ' + firingRate + 's'); storage.gold = goldText.gold; storage.firingRate = firingRate; // Update the centered rate text for the next upgrade centeredRateText.setText('Max Level'); centeredRateText.update(); // Ensure the text is updated immediately } }; } }; } }; // Add the wave text to the game screen var waveText = game.addChild(new WaveText()); // Add the gold text to the game screen var goldText = game.addChild(new GoldText()); // Initialize firing rate variable from storage if available var firingRate = storage.firingRate || 1.0; var rateText = game.addChild(new RateText()); // Add the reset button to the game screen var resetButton = game.addChild(new ResetButton()); game.update = function () { // Spawn the cube asset from the cubestart asset every 60 game ticks or 48 game ticks if wave is above 9 var spawnRate; if (waveText.wave > 14) { spawnRate = Math.floor(60 * 1.25); // 1.25 seconds } else if (waveText.wave > 9) { spawnRate = 48; } else { spawnRate = 60; } if (LK.ticks % spawnRate == 0) { var newCube; if (waveText.wave > 14) { newCube = new Bulk(); } else if (waveText.wave > 14) { newCube = new Bulk(); } else if (waveText.wave > 5 && waveText.wave <= 14) { newCube = new Speedcube(); } else { newCube = new Cube(); } newCube.x = cubestart.x; newCube.y = cubestart.y; game.addChild(newCube); } // Update the wave text every 600 game ticks if (LK.ticks % 600 == 0 && LK.ticks != 0) { waveText.wave++; goldText.gold += 10; storage.wave = waveText.wave; storage.gold = goldText.gold; } // Make the slime asset shoot out the shoot asset to the right based on firingRate if (LK.ticks % Math.floor(60 * firingRate) == 0) { var newShoot = new Shoot(); newShoot.x = slime.x; newShoot.y = slime.y; newShoot.update = function () { // Move the shoot to the right at a constant speed this.x += this.speed; }; game.addChild(newShoot); } // Check for collisions between Cube and Shoot objects for (var i = 0; i < game.children.length; i++) { var obj1 = game.children[i]; if (obj1 instanceof Cube || obj1 instanceof Speedcube || obj1 instanceof Bulk) { for (var j = 0; j < game.children.length; j++) { var obj2 = game.children[j]; if (obj2 instanceof Shoot && obj1.intersects(obj2)) { // Destroy both objects on collision obj1.health -= obj2.damage; if (obj1.health <= 0) { obj1.destroy(); } obj2.destroy(); break; } } } } };
===================================================================
--- original.js
+++ change.js
@@ -260,8 +260,23 @@
// Add the centered speed text to the center of the speed asset
var centeredSpeedText = game.addChild(new CenteredSpeedText());
centeredSpeedText.x = speedAsset.x;
centeredSpeedText.y = speedAsset.y;
+// Make the speed asset interactive
+speedAsset.interactive = true;
+speedAsset.down = function () {
+ if (goldText.gold >= 10) {
+ goldText.gold -= 10;
+ // Increase speed of all speed assets by 20%
+ for (var i = 0; i < game.children.length; i++) {
+ var obj = game.children[i];
+ if (obj instanceof Speedcube) {
+ obj.speed += obj.speed * 0.20;
+ }
+ }
+ storage.gold = goldText.gold;
+ }
+};
// Add the rate asset to the game screen
var rateAsset = game.addChild(LK.getAsset('Rate', {
anchorX: 0.5,
anchorY: 0.5,