User prompt
Make the clones super slow and also make his bullets automatically hit enemies
User prompt
Make the boss spawn every 3 waves after wave 3
User prompt
Make the clone shoot slower and make him only shoot left, right, up, and down
User prompt
Instead of making the clone shoot enemies from the front just make the clone shoot bullets in all directions and also make the bullets have really good auto aim
User prompt
Make the clone faster and make it attack the enemies in the front of them
User prompt
Make a big cyan power up that when collected will make a clone of you and it will walk up to enemies and shoot a big bullet at them until the are dead then they will move on to the next one. Also make the clone have his own mini health bar than will kill him if all his health drops
User prompt
Make a asset for the boss
User prompt
If all the enemies die by getting shot to many times or touching the bottom of the screen then go to the next wave
User prompt
Make so that if enemies touch the bottom of the screen they die
User prompt
Make so that if I you reach level 3 there is a boss with there own health bar and make them shoot mines
User prompt
Make the sign bigger
User prompt
Can you make a small sign in the corner that says β defeat the sharks
Code edit (1 edits merged)
Please save this source code
User prompt
Critical Crisis
Initial prompt
Make a shooter game named critical crisis
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Bullet = Container.expand(function () { var self = Container.call(this); self.speed = 15; self.damage = 1; self.isPlayerBullet = true; var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { self.y -= self.speed; }; return self; }); var Enemy = Container.expand(function () { var self = Container.call(this); self.health = 2; self.speed = 3 + Math.random() * 2; self.fireRate = 90 + Math.floor(Math.random() * 60); self.fireTimer = Math.floor(Math.random() * 60); self.scoreValue = 10; self.movingRight = Math.random() > 0.5; self.moveCounter = 0; self.moveChangeTime = 60 + Math.floor(Math.random() * 120); var enemyGraphics = self.attachAsset('enemyShip', { anchorX: 0.5, anchorY: 0.5 }); self.takeDamage = function (amount) { self.health -= amount; if (self.health <= 0) { // Chance to drop power up if (Math.random() < 0.2) { var powerUp = new PowerUp(); powerUp.x = self.x; powerUp.y = self.y; powerUps.push(powerUp); game.addChild(powerUp); } // Explosion effect LK.effects.flashObject(self, 0xff0000, 300); LK.getSound('explosion').play(); return true; // Enemy is destroyed } else { // Flash red when taking damage LK.effects.flashObject(self, 0xff0000, 200); return false; } }; self.shoot = function () { if (self.fireTimer <= 0) { var bullet = new EnemyBullet(); bullet.x = self.x; bullet.y = self.y + 40; enemyBullets.push(bullet); game.addChild(bullet); LK.getSound('enemyShoot').play(); self.fireTimer = self.fireRate; } }; self.update = function () { // Basic movement pattern self.y += self.speed * 0.5; // Horizontal movement if (self.movingRight) { self.x += self.speed; } else { self.x -= self.speed; } // Reverse direction if reaching screen edges if (self.x < 100) { self.movingRight = true; } else if (self.x > 2048 - 100) { self.movingRight = false; } // Randomly change direction self.moveCounter++; if (self.moveCounter >= self.moveChangeTime) { self.movingRight = !self.movingRight; self.moveCounter = 0; } // Decrease fire timer and shoot self.fireTimer--; if (self.fireTimer <= 0) { self.shoot(); } }; return self; }); var EnemyBullet = Container.expand(function () { var self = Container.call(this); self.speed = 8; self.damage = 1; self.isPlayerBullet = false; var bulletGraphics = self.attachAsset('enemyBullet', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { self.y += self.speed; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); self.health = 100; self.maxHealth = 100; self.speed = 10; self.fireRate = 15; self.fireTimer = 0; self.powerUpTimer = 0; self.hasPowerUp = false; self.invincible = false; self.invincibleTimer = 0; var playerGraphics = self.attachAsset('playerShip', { anchorX: 0.5, anchorY: 0.5 }); self.takeDamage = function (amount) { if (self.invincible) return; self.health -= amount; if (self.health <= 0) { self.health = 0; } else { // Flash player when taking damage self.invincible = true; self.invincibleTimer = 60; // 1 second invincibility LK.effects.flashObject(self, 0xff0000, 1000); LK.getSound('playerHit').play(); } }; self.shoot = function () { if (self.fireTimer <= 0) { var bullet = new Bullet(); bullet.x = self.x; bullet.y = self.y - 50; // If player has power up, enhance bullet if (self.hasPowerUp) { bullet.damage = 2; bullet.speed = 20; bullet.scale.set(1.5, 1.5); } bullets.push(bullet); game.addChild(bullet); LK.getSound('shoot').play(); self.fireTimer = self.fireRate; } }; self.update = function () { // Decrease fire timer if (self.fireTimer > 0) { self.fireTimer--; } // Handle power up timer if (self.hasPowerUp) { self.powerUpTimer--; if (self.powerUpTimer <= 0) { self.hasPowerUp = false; playerGraphics.tint = 0xFFFFFF; } } // Handle invincibility timer if (self.invincible) { self.invincibleTimer--; if (self.invincibleTimer <= 0) { self.invincible = false; } // Flicker effect during invincibility self.alpha = LK.ticks % 6 < 3 ? 0.7 : 1; } else { self.alpha = 1; } }; self.activatePowerUp = function () { self.hasPowerUp = true; self.powerUpTimer = 300; // 5 seconds playerGraphics.tint = 0x2ecc71; // Green tint when powered up LK.getSound('powerUpCollect').play(); }; return self; }); var PowerUp = Container.expand(function () { var self = Container.call(this); var powerUpGraphics = self.attachAsset('powerUp', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.update = function () { self.y += self.speed; // Slight wobble effect self.x += Math.sin(LK.ticks * 0.1) * 1.5; // Pulse effect var scale = 1 + Math.sin(LK.ticks * 0.15) * 0.1; self.scale.set(scale, scale); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Game state variables var gameActive = true; var player; var bullets = []; var enemies = []; var enemyBullets = []; var powerUps = []; var waveNumber = 1; var enemiesThisWave = 5; var enemiesDefeated = 0; var totalEnemiesDefeated = 0; var waveDelay = 0; var spawnDelay = 0; var dragNode = null; // GUI elements var healthBar; var healthBarBg; var scoreTxt; var waveTxt; var signTxt; // Initialize game elements function initGame() { // Set background game.setBackgroundColor(0x0a0a2a); // Initialize player player = new Player(); player.x = 2048 / 2; player.y = 2732 - 300; game.addChild(player); // Create GUI elements createGUI(); // Start game gameActive = true; waveNumber = 1; enemiesThisWave = 5; enemiesDefeated = 0; totalEnemiesDefeated = 0; LK.setScore(0); // Play background music LK.playMusic('bgMusic', { fade: { start: 0, end: 0.7, duration: 1000 } }); } function createGUI() { // Health bar background healthBarBg = LK.getAsset('healthBarBackground', { anchorX: 0, anchorY: 0, x: 20, y: 20 }); // Health bar healthBar = LK.getAsset('healthBar', { anchorX: 0, anchorY: 0, x: 25, y: 25 }); // Score text scoreTxt = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreTxt.anchor.set(1, 0); // Wave text waveTxt = new Text2('Wave: 1', { size: 60, fill: 0xFFFFFF }); waveTxt.anchor.set(0.5, 0); // Create sign signTxt = new Text2('defeat the sharks', { size: 80, fill: 0xFFFFFF }); signTxt.anchor.set(1, 1); // Add GUI elements LK.gui.topRight.addChild(scoreTxt); LK.gui.top.addChild(waveTxt); LK.gui.topLeft.addChild(healthBarBg); LK.gui.topLeft.addChild(healthBar); LK.gui.bottomRight.addChild(signTxt); } // Spawn a wave of enemies function spawnEnemyWave() { for (var i = 0; i < enemiesThisWave; i++) { // Set a delay for each enemy spawn LK.setTimeout(function () { if (!gameActive) return; var enemy = new Enemy(); enemy.x = 200 + Math.random() * (2048 - 400); enemy.y = -100 - Math.random() * 400; // Increase difficulty with each wave if (waveNumber > 1) { enemy.health += Math.floor(waveNumber / 2); enemy.speed += waveNumber * 0.2; enemy.scoreValue += waveNumber * 2; } enemies.push(enemy); game.addChild(enemy); }, i * 1000); } } // Handle player movement function handleMove(x, y, obj) { if (dragNode && gameActive) { // Limit player movement to screen bounds var newX = Math.max(50, Math.min(2048 - 50, x)); var newY = Math.max(50, Math.min(2732 - 50, y)); dragNode.x = newX; dragNode.y = newY; } } // Game down handler game.down = function (x, y, obj) { if (gameActive) { dragNode = player; handleMove(x, y, obj); // Shoot when pressing down player.shoot(); } }; // Game move handler game.move = handleMove; // Game up handler game.up = function (x, y, obj) { dragNode = null; }; // Update game state game.update = function () { if (!gameActive) return; // Update player player.update(); // Auto-fire for player if (LK.ticks % 10 === 0) { player.shoot(); } // Update health bar healthBar.scale.x = player.health / player.maxHealth; // Update bullets for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; bullet.update(); // Remove bullets that go off screen if (bullet.y < -50) { bullet.destroy(); bullets.splice(i, 1); continue; } // Check for enemy collisions for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; if (bullet.intersects(enemy)) { // Enemy takes damage var destroyed = enemy.takeDamage(bullet.damage); if (destroyed) { enemiesDefeated++; totalEnemiesDefeated++; LK.setScore(LK.getScore() + enemy.scoreValue); scoreTxt.setText('Score: ' + LK.getScore()); enemy.destroy(); enemies.splice(j, 1); } // Remove bullet bullet.destroy(); bullets.splice(i, 1); break; } } } // Update enemy bullets for (var i = enemyBullets.length - 1; i >= 0; i--) { var bullet = enemyBullets[i]; bullet.update(); // Remove bullets that go off screen if (bullet.y > 2732 + 50) { bullet.destroy(); enemyBullets.splice(i, 1); continue; } // Check for player collision if (gameActive && bullet.intersects(player)) { player.takeDamage(bullet.damage); bullet.destroy(); enemyBullets.splice(i, 1); // Check if player is defeated if (player.health <= 0) { gameActive = false; LK.showGameOver(); } } } // Update enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; enemy.update(); // Remove enemies that go too far down if (enemy.y > 2732 + 100) { enemy.destroy(); enemies.splice(i, 1); continue; } // Check for collision with player if (gameActive && enemy.intersects(player)) { player.takeDamage(10); // Destroy enemy on collision enemy.destroy(); enemies.splice(i, 1); // Check if player is defeated if (player.health <= 0) { gameActive = false; LK.showGameOver(); } } } // Update power-ups for (var i = powerUps.length - 1; i >= 0; i--) { var powerUp = powerUps[i]; powerUp.update(); // Remove power-ups that go off screen if (powerUp.y > 2732 + 50) { powerUp.destroy(); powerUps.splice(i, 1); continue; } // Check for player collision if (gameActive && powerUp.intersects(player)) { player.activatePowerUp(); powerUp.destroy(); powerUps.splice(i, 1); } } // Check if wave is complete if (enemiesDefeated >= enemiesThisWave && enemies.length === 0 && waveDelay <= 0) { // Start next wave waveNumber++; enemiesThisWave = 5 + waveNumber * 2; enemiesDefeated = 0; waveTxt.setText('Wave: ' + waveNumber); // Show wave message var waveMessage = new Text2('WAVE ' + waveNumber, { size: 120, fill: 0xFFFFFF }); waveMessage.anchor.set(0.5, 0.5); LK.gui.center.addChild(waveMessage); // Fade out wave message tween(waveMessage, { alpha: 0 }, { duration: 2000, onFinish: function onFinish() { waveMessage.destroy(); } }); // Set delay before spawning next wave waveDelay = 120; // 2 seconds } // Count down wave delay if (waveDelay > 0) { waveDelay--; if (waveDelay === 0) { // Spawn next wave spawnEnemyWave(); } } // Count down spawn delay if (spawnDelay > 0) { spawnDelay--; if (spawnDelay === 0) { // Start first wave spawnEnemyWave(); } } }; // Initialize the game initGame(); // Set a short delay before spawning the first wave spawnDelay = 60; // 1 second
===================================================================
--- original.js
+++ change.js
@@ -291,9 +291,9 @@
});
waveTxt.anchor.set(0.5, 0);
// Create sign
signTxt = new Text2('defeat the sharks', {
- size: 40,
+ size: 80,
fill: 0xFFFFFF
});
signTxt.anchor.set(1, 1);
// Add GUI elements