User prompt
power up coming every 500 points
User prompt
every small enemy give 5 points, every big enemy gives 25 points. when points is 500 stop the game and make a power up uı. choises are fire rate 10%, add one more bullet, bullet damage +5. base bullet damage is 5. small enemies health is 10, big enemies health is 80. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
delete level up screen
User prompt
on the level up screen if i press health button add health +25, if i press fire rate button add fire rate+5%, if i press damage button add damage +10
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'to')' in or related to this line: 'tween(obj).to({' Line Number: 423 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
on the levep up screen make power ups like button and make it work the power ups
User prompt
on the level up screen there is some power ups but they are not working make it work
User prompt
Please fix the bug: 'TypeError: LK.pauseGame is not a function' in or related to this line: 'LK.pauseGame();' Line Number: 420
User prompt
when i kill big enemy and collect what the enemy droped kill all enemy on the screen. when level up screen came stop the game
User prompt
big enemy doesnt drop the skill i ask you to drop
User prompt
i cant shoot big enemy fix that
User prompt
fix that error and i dont see any big enemies
User prompt
Please fix the bug: 'TypeError: levelUpContainer.children[(i + 5)].setText is not a function' in or related to this line: 'levelUpContainer.children[i + 5].setText(upgrades[i]);' Line Number: 391
User prompt
Please fix the bug: 'TypeError: levelUpContainer.children[(i + 2)].setText is not a function' in or related to this line: 'levelUpContainer.children[i + 2].setText(upgrades[i]);' Line Number: 390
Code edit (1 edits merged)
Please save this source code
User prompt
Survivor's Last Stand
Initial prompt
a game like vampire survivor. sometimes big enemies coming and drop a skill that kill all enemies on the screen
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Boss = Container.expand(function () { var self = Container.call(this); var bossGraphics = self.attachAsset('boss', { anchorX: 0.5, anchorY: 0.5 }); self.health = 200; self.maxHealth = 200; self.speed = 1; self.damage = 30; self.experienceValue = 10; self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; } if (distance < 80) { player.takeDamage(self.damage); } }; self.takeDamage = function (damage) { self.health -= damage; LK.effects.flashObject(self, 0xFFFFFF, 150); if (self.health <= 0) { self.die(); } }; self.die = function () { var powerup = new ScreenClearPowerup(); powerup.x = self.x; powerup.y = self.y; screenClearPowerups.push(powerup); game.addChild(powerup); LK.getSound('bossDefeat').play(); LK.setScore(LK.getScore() + 100); self.destroy(); for (var i = bosses.length - 1; i >= 0; i--) { if (bosses[i] === self) { bosses.splice(i, 1); break; } } }; return self; }); var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.velocityX = 0; self.velocityY = 0; self.damage = 20; self.lifespan = 0; self.maxLifespan = 120; self.update = function () { self.x += self.velocityX; self.y += self.velocityY; self.lifespan++; if (self.lifespan >= self.maxLifespan || self.x < -50 || self.x > 2098 || self.y < -50 || self.y > 2782) { self.destroy(); for (var i = bullets.length - 1; i >= 0; i--) { if (bullets[i] === self) { bullets.splice(i, 1); break; } } } }; return self; }); var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.health = 40; self.maxHealth = 40; self.speed = 2; self.damage = 15; self.experienceValue = 1; self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; } if (distance < 50) { player.takeDamage(self.damage); self.destroy(); for (var i = enemies.length - 1; i >= 0; i--) { if (enemies[i] === self) { enemies.splice(i, 1); break; } } } }; self.takeDamage = function (damage) { self.health -= damage; LK.effects.flashObject(self, 0xFFFFFF, 100); if (self.health <= 0) { self.die(); } }; self.die = function () { var orb = new ExperienceOrb(); orb.x = self.x; orb.y = self.y; orb.experienceValue = self.experienceValue; experienceOrbs.push(orb); game.addChild(orb); LK.getSound('enemyHit').play(); LK.setScore(LK.getScore() + 10); self.destroy(); for (var i = enemies.length - 1; i >= 0; i--) { if (enemies[i] === self) { enemies.splice(i, 1); break; } } }; return self; }); var ExperienceOrb = Container.expand(function () { var self = Container.call(this); var orbGraphics = self.attachAsset('experienceOrb', { anchorX: 0.5, anchorY: 0.5 }); self.experienceValue = 1; self.collectRadius = 100; self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < self.collectRadius) { var moveSpeed = 8; self.x += dx / distance * moveSpeed; self.y += dy / distance * moveSpeed; if (distance < 30) { player.gainExperience(self.experienceValue); self.destroy(); for (var i = experienceOrbs.length - 1; i >= 0; i--) { if (experienceOrbs[i] === self) { experienceOrbs.splice(i, 1); break; } } } } }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.health = 100; self.maxHealth = 100; self.experience = 0; self.level = 1; self.experienceToNext = 10; self.shootTimer = 0; self.shootCooldown = 30; self.damage = 20; self.speed = 8; self.update = function () { self.shootTimer++; if (self.shootTimer >= self.shootCooldown) { self.shootAtNearestEnemy(); self.shootTimer = 0; } }; self.shootAtNearestEnemy = function () { var nearestEnemy = null; var nearestDistance = Infinity; // Check regular enemies for (var i = 0; i < enemies.length; i++) { var enemy = enemies[i]; var dx = enemy.x - self.x; var dy = enemy.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < nearestDistance && distance < 600) { nearestDistance = distance; nearestEnemy = enemy; } } // Check bosses for (var i = 0; i < bosses.length; i++) { var boss = bosses[i]; var dx = boss.x - self.x; var dy = boss.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < nearestDistance && distance < 600) { nearestDistance = distance; nearestEnemy = boss; } } if (nearestEnemy) { var bullet = new Bullet(); bullet.x = self.x; bullet.y = self.y; var dx = nearestEnemy.x - self.x; var dy = nearestEnemy.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); bullet.velocityX = dx / distance * 15; bullet.velocityY = dy / distance * 15; bullet.damage = self.damage; bullets.push(bullet); game.addChild(bullet); LK.getSound('shoot').play(); } }; self.takeDamage = function (damage) { self.health -= damage; if (self.health <= 0) { self.health = 0; LK.showGameOver(); } LK.effects.flashObject(self, 0xFF0000, 200); }; self.gainExperience = function (amount) { self.experience += amount; if (self.experience >= self.experienceToNext) { self.levelUp(); } }; self.levelUp = function () { self.level++; self.experience = 0; self.experienceToNext = Math.floor(self.experienceToNext * 1.5); LK.getSound('levelUp').play(); showLevelUpUI(); }; return self; }); var ScreenClearPowerup = Container.expand(function () { var self = Container.call(this); var powerupGraphics = self.attachAsset('screenClearPowerup', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < 40) { screenClearCharges++; updateScreenClearUI(); self.destroy(); for (var i = screenClearPowerups.length - 1; i >= 0; i--) { if (screenClearPowerups[i] === self) { screenClearPowerups.splice(i, 1); break; } } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2E2E2E }); /**** * Game Code ****/ var player; var enemies = []; var bosses = []; var bullets = []; var experienceOrbs = []; var screenClearPowerups = []; var enemySpawnTimer = 0; var enemySpawnRate = 60; var bossSpawnTimer = 0; var bossSpawnInterval = 600; var screenClearCharges = 0; var levelUpActive = false; var dragNode = null; // UI Elements var healthText = new Text2('Health: 100', { size: 40, fill: 0xFF4444 }); healthText.anchor.set(0, 0); LK.gui.topLeft.addChild(healthText); healthText.x = 120; healthText.y = 20; var levelText = new Text2('Level: 1', { size: 40, fill: 0x44FF44 }); levelText.anchor.set(0, 0); LK.gui.topRight.addChild(levelText); levelText.x = -200; levelText.y = 20; var screenClearText = new Text2('Screen Clear: 0', { size: 40, fill: 0xFF8800 }); screenClearText.anchor.set(0.5, 0); LK.gui.top.addChild(screenClearText); screenClearText.y = 20; var scoreText = new Text2('0', { size: 50, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); scoreText.y = 80; // Level up UI var levelUpContainer = new Container(); var levelUpBg = LK.getAsset('enemy', { anchorX: 0.5, anchorY: 0.5, scaleX: 20, scaleY: 15 }); levelUpBg.tint = 0x000000; levelUpBg.alpha = 0.8; levelUpContainer.addChild(levelUpBg); var levelUpTitle = new Text2('LEVEL UP!', { size: 80, fill: 0xFFFF00 }); levelUpTitle.anchor.set(0.5, 0.5); levelUpTitle.y = -200; levelUpContainer.addChild(levelUpTitle); var upgradeButtons = []; for (var i = 0; i < 3; i++) { var button = LK.getAsset('enemy', { anchorX: 0.5, anchorY: 0.5, scaleX: 8, scaleY: 3 }); button.tint = 0x444444; button.y = -50 + i * 100; button.upgradeIndex = i; levelUpContainer.addChild(button); upgradeButtons.push(button); button.down = function (x, y, obj) { if (levelUpActive) { applyUpgrade(obj.upgradeIndex); hideLevelUpUI(); } }; var buttonText = new Text2('Upgrade ' + (i + 1), { size: 40, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); buttonText.y = button.y; levelUpContainer.addChild(buttonText); } function showLevelUpUI() { levelUpActive = true; levelUpContainer.x = 1024; levelUpContainer.y = 1366; game.addChild(levelUpContainer); // Generate random upgrades var upgrades = ['Damage +10', 'Fire Rate +20%', 'Health +25']; for (var i = 0; i < 3; i++) { // Access the text elements which are at indices 2, 4, 6 (button text elements) // Layout: bg(0), title(1), button1(2), text1(3), button2(4), text2(5), button3(6), text3(7) var textIndex = 3 + i * 2; if (levelUpContainer.children[textIndex] && levelUpContainer.children[textIndex].setText) { levelUpContainer.children[textIndex].setText(upgrades[i]); } } } function hideLevelUpUI() { levelUpActive = false; if (levelUpContainer.parent) { levelUpContainer.parent.removeChild(levelUpContainer); } } function applyUpgrade(index) { if (index === 0) { player.damage += 10; } else if (index === 1) { player.shootCooldown = Math.max(10, player.shootCooldown - 6); } else if (index === 2) { player.maxHealth += 25; player.health = Math.min(player.maxHealth, player.health + 25); } } function updateUI() { healthText.setText('Health: ' + player.health); levelText.setText('Level: ' + player.level); scoreText.setText(LK.getScore().toString()); } function updateScreenClearUI() { screenClearText.setText('Screen Clear: ' + screenClearCharges); } function spawnEnemy() { var enemy = new Enemy(); var side = Math.floor(Math.random() * 4); if (side === 0) { // Top enemy.x = Math.random() * 2048; enemy.y = -50; } else if (side === 1) { // Right enemy.x = 2098; enemy.y = Math.random() * 2732; } else if (side === 2) { // Bottom enemy.x = Math.random() * 2048; enemy.y = 2782; } else { // Left enemy.x = -50; enemy.y = Math.random() * 2732; } enemies.push(enemy); game.addChild(enemy); } function spawnBoss() { var boss = new Boss(); var side = Math.floor(Math.random() * 4); if (side === 0) { // Top boss.x = Math.random() * 2048; boss.y = -75; } else if (side === 1) { // Right boss.x = 2048 + 75; boss.y = Math.random() * 2732; } else if (side === 2) { // Bottom boss.x = Math.random() * 2048; boss.y = 2732 + 75; } else { // Left boss.x = -75; boss.y = Math.random() * 2732; } bosses.push(boss); game.addChild(boss); } function useScreenClear() { if (screenClearCharges > 0) { screenClearCharges--; updateScreenClearUI(); LK.getSound('screenClear').play(); LK.effects.flashScreen(0xFFFFFF, 500); // Clear all enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; var orb = new ExperienceOrb(); orb.x = enemy.x; orb.y = enemy.y; orb.experienceValue = enemy.experienceValue; experienceOrbs.push(orb); game.addChild(orb); enemy.destroy(); enemies.splice(i, 1); LK.setScore(LK.getScore() + 10); } // Clear all bosses for (var i = bosses.length - 1; i >= 0; i--) { var boss = bosses[i]; boss.destroy(); bosses.splice(i, 1); LK.setScore(LK.getScore() + 100); } } } // Initialize player player = new Player(); player.x = 1024; player.y = 1366; game.addChild(player); function handleMove(x, y, obj) { if (dragNode && !levelUpActive) { dragNode.x = x; dragNode.y = y; // Keep player within bounds dragNode.x = Math.max(40, Math.min(2008, dragNode.x)); dragNode.y = Math.max(40, Math.min(2692, dragNode.y)); } } game.move = handleMove; game.down = function (x, y, obj) { if (!levelUpActive) { // Check if clicking screen clear button area if (y < 150 && Math.abs(x - 1024) < 200) { useScreenClear(); } else { dragNode = player; handleMove(x, y, obj); } } }; game.up = function (x, y, obj) { dragNode = null; }; game.update = function () { if (levelUpActive) { return; } // Update all game objects player.update(); for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].update(); } for (var i = enemies.length - 1; i >= 0; i--) { enemies[i].update(); } for (var i = bosses.length - 1; i >= 0; i--) { bosses[i].update(); } for (var i = experienceOrbs.length - 1; i >= 0; i--) { experienceOrbs[i].update(); } for (var i = screenClearPowerups.length - 1; i >= 0; i--) { screenClearPowerups[i].update(); } // Bullet collision with enemies for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; if (bullet.intersects(enemy)) { enemy.takeDamage(bullet.damage); bullet.destroy(); bullets.splice(i, 1); break; } } if (bullets[i]) { for (var j = bosses.length - 1; j >= 0; j--) { var boss = bosses[j]; if (bullet.intersects(boss)) { boss.takeDamage(bullet.damage); bullet.destroy(); bullets.splice(i, 1); break; } } } } // Spawn enemies enemySpawnTimer++; if (enemySpawnTimer >= enemySpawnRate) { spawnEnemy(); enemySpawnTimer = 0; // Increase spawn rate over time if (enemySpawnRate > 20) { enemySpawnRate = Math.max(20, enemySpawnRate - 0.1); } } // Spawn bosses bossSpawnTimer++; if (bossSpawnTimer >= bossSpawnInterval) { spawnBoss(); bossSpawnTimer = 0; } updateUI(); };
===================================================================
--- original.js
+++ change.js
@@ -191,8 +191,9 @@
};
self.shootAtNearestEnemy = function () {
var nearestEnemy = null;
var nearestDistance = Infinity;
+ // Check regular enemies
for (var i = 0; i < enemies.length; i++) {
var enemy = enemies[i];
var dx = enemy.x - self.x;
var dy = enemy.y - self.y;
@@ -201,8 +202,19 @@
nearestDistance = distance;
nearestEnemy = enemy;
}
}
+ // Check bosses
+ for (var i = 0; i < bosses.length; i++) {
+ var boss = bosses[i];
+ var dx = boss.x - self.x;
+ var dy = boss.y - self.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance < nearestDistance && distance < 600) {
+ nearestDistance = distance;
+ nearestEnemy = boss;
+ }
+ }
if (nearestEnemy) {
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
a witch with red head and purple hat.. pixel art. full body
pixel art goblin. In-Game asset. 2d. High contrast. No shadows
pixel art seraphim. In-Game asset. 2d. High contrast. No shadows
a background top down game pixel art desert. In-Game asset. 2d. High contrast. No shadows
purple fireball pixel art. In-Game asset. 2d. High contrast. No shadows
pixel art circle health button. In-Game asset. 2d. High contrast. No shadows
pixel art circle damage button with symbols and no letters. In-Game asset. 2d. High contrast. No shadows
pixel art circle bullet button. In-Game asset. 2d. High contrast. No shadows
pixel art green circle. In-Game asset. 2d. High contrast. No shadows
pixel art circle red. In-Game asset. 2d. High contrast. No shadows
a background top down game pixel art desert. night In-Game asset. 2d. High contrast. No shadows
pixel art old wizard boss. In-Game asset. 2d. High contrast. No shadows
pixel art circle brown. In-Game asset. 2d. High contrast. No shadows
fire shoot pixel art. In-Game asset. 2d. High contrast. No shadows
pixel art colorful spider sideview. In-Game asset. 2d. High contrast. No shadows
pixel art pink circle. In-Game asset. 2d. High contrast. No shadows