User prompt
Son bölümde 150 düşman olsun
User prompt
Health yazısını sil
User prompt
Mous sağ tuşuna basınca oyun durmuyor düzelt. Gemi canını ve health yazısını alt alta yaz
User prompt
Oyuna kısayollar ekle. Mous sağ tuşuna basarsak oyun dursun. 100 lv boss un 500 hp si olsun. İlk boss un hp si 5 olucak ona göre dengele. Gemide hp barı olsun. 10 seviyede bir market açılsın. Gemi canımız artsın veya başka özellikler satın alalım. Oyun arayüzünü daha dikkat çekici ve profesyonel yap. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Checkpoint’te Skoru Sakla ve Geri Yükle ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'TypeError: Cannot set properties of undefined (setting 'fill')' in or related to this line: 'shipHealthTxt.style.fill = 0x00ff00; // Green for full health' Line Number: 467
User prompt
Düşmanlar daha hızlı doğsun lives yazısını kaldır. Oraya gemi canını ekle.
User prompt
Normal düşmanlar yön değiştirebilsin. Gemi canımız olsun tek vuruşta ölmeyelim
User prompt
Normal düşmanlar iki kere ateş edemesin.
User prompt
Boss 3 kere ateş edebilsin ama tek bir noktaya
User prompt
Uzaylılar çok hızlı ateş ediyor düzelt. Checkpoint ve bosslar Böyle olsun Level 1: 10 düşman Level 2: 15 düşman Level 3: 20 düşman Level 4: 25 düşman Level 5: 30 düşman ✅ Checkpoint + 👹 Boss Level 6: 35 düşman Level 7: 40 düşman Level 8: 45 düşman Level 9: 50 düşman Level 10: 55 düşman ✅ Checkpoint + 👹 Boss Level 11: 60 düşman Level 12: 65 düşman Level 13: 70 düşman Level 14: 75 düşman Level 15: 80 düşman ✅ Checkpoint + 👹 Boss Level 16: 85 düşman Level 17: 90 düşman Level 18: 95 düşman Level 19: 100 düşman Level 20: 105 düşman ✅ Checkpoint + 👹 Boss Level 21: 110 düşman Level 22: 115 düşman Level 23: 120 düşman Level 24: 125 düşman Level 25: 130 düşman ✅ Checkpoint + 👹 Boss Level 26: 135 düşman Level 27: 140 düşman Level 28: 145 düşman Level 29: 150 düşman Level 30: 155 düşman ✅ Checkpoint + 👹 Boss Level 31: 160 düşman Level 32: 165 düşman Level 33: 170 düşman Level 34: 175 düşman Level 35: 180 düşman ✅ Checkpoint + 👹 Boss Level 36: 185 düşman Level 37: 190 düşman Level 38: 195 düşman Level 39: 200 düşman Level 40: 205 düşman ✅ Checkpoint + 👹 Boss Level 41: 210 düşman Level 42: 215 düşman Level 43: 220 düşman Level 44: 225 düşman Level 45: 230 düşman ✅ Checkpoint + 👹 Boss Level 46: 235 düşman Level 47: 240 düşman Level 48: 245 düşman Level 49: 250 düşman Level 50: 255 düşman ✅ Checkpoint + 👹 Boss Level 51: 260 düşman Level 52: 265 düşman Level 53: 270 düşman Level 54: 275 düşman Level 55: 280 düşman ✅ Checkpoint + 👹 Boss Level 56: 285 düşman Level 57: 290 düşman Level 58: 295 düşman Level 59: 300 düşman Level 60: 305 düşman ✅ Checkpoint + 👹 Boss Level 61: 310 düşman Level 62: 315 düşman Level 63: 320 düşman Level 64: 325 düşman Level 65: 330 düşman ✅ Checkpoint + 👹 Boss Level 66: 335 düşman Level 67: 340 düşman Level 68: 345 düşman Level 69: 350 düşman Level 70: 355 düşman ✅ Checkpoint + 👹 Boss Level 71: 360 düşman Level 72: 365 düşman Level 73: 370 düşman Level 74: 375 düşman Level 75: 380 düşman ✅ Checkpoint + 👹 Boss Level 76: 385 düşman Level 77: 390 düşman Level 78: 395 düşman Level 79: 400 düşman Level 80: 405 düşman ✅ Checkpoint + 👹 Boss Level 81: 410 düşman Level 82: 415 düşman Level 83: 420 düşman Level 84: 425 düşman Level 85: 430 düşman ✅ Checkpoint + 👹 Boss Level 86: 435 düşman Level 87: 440 düşman Level 88: 445 düşman Level 89: 450 düşman Level 90: 455 düşman ✅ Checkpoint + 👹 Boss Level 91: 460 düşman Level 92: 465 düşman Level 93: 470 düşman Level 94: 475 düşman Level 95: 480 düşman ✅ Checkpoint + 👹 Boss Level 96: 485 düşman Level 97: 490 düşman Level 98: 495 düşman Level 99: 498 düşman Level 100: 500 düşman ✅ Final Checkpoint + 👹 Final Boss
User prompt
Level 1: 10 düşman Level 2: 15 düşman Level 3: 20 düşman Level 4: 25 düşman Level 5: 30 düşman Level 6: 35 düşman Level 7: 40 düşman Level 8: 45 düşman Level 9: 50 düşman Level 10: 55 düşman Level 11: 60 düşman Level 12: 65 düşman Level 13: 70 düşman Level 14: 75 düşman Level 15: 80 düşman Level 16: 85 düşman Level 17: 90 düşman Level 18: 95 düşman Level 19: 100 düşman Level 20: 105 düşman Level 21: 110 düşman Level 22: 115 düşman Level 23: 120 düşman Level 24: 125 düşman Level 25: 130 düşman Level 26: 135 düşman Level 27: 140 düşman Level 28: 145 düşman Level 29: 150 düşman Level 30: 155 düşman Level 31: 160 düşman Level 32: 165 düşman Level 33: 170 düşman Level 34: 175 düşman Level 35: 180 düşman Level 36: 185 düşman Level 37: 190 düşman Level 38: 195 düşman Level 39: 200 düşman Level 40: 205 düşman Level 41: 210 düşman Level 42: 215 düşman Level 43: 220 düşman Level 44: 225 düşman Level 45: 230 düşman Level 46: 235 düşman Level 47: 240 düşman Level 48: 245 düşman Level 49: 250 düşman Level 50: 255 düşman Level 51: 260 düşman Level 52: 265 düşman Level 53: 270 düşman Level 54: 275 düşman Level 55: 280 düşman Level 56: 285 düşman Level 57: 290 düşman Level 58: 295 düşman Level 59: 300 düşman Level 60: 305 düşman Level 61: 310 düşman Level 62: 315 düşman Level 63: 320 düşman Level 64: 325 düşman Level 65: 330 düşman Level 66: 335 düşman Level 67: 340 düşman Level 68: 345 düşman Level 69: 350 düşman Level 70: 355 düşman Level 71: 360 düşman Level 72: 365 düşman Level 73: 370 düşman Level 74: 375 düşman Level 75: 380 düşman Level 76: 385 düşman Level 77: 390 düşman Level 78: 395 düşman Level 79: 400 düşman Level 80: 405 düşman Level 81: 410 düşman Level 82: 415 düşman Level 83: 420 düşman Level 84: 425 düşman Level 85: 430 düşman Level 86: 435 düşman Level 87: 440 düşman Level 88: 445 düşman Level 89: 450 düşman Level 90: 455 düşman Level 91: 460 düşman Level 92: 465 düşman Level 93: 470 düşman Level 94: 475 düşman Level 95: 480 düşman Level 96: 485 düşman Level 97: 490 düşman Level 98: 495 düşman Level 99: 498 düşman Level 100: 500 düşman olsun
User prompt
Uzaylılar daha hızlı ateş etsin. Level 1: 10 düşman Level 2: 20 düşman Level 3: 30 düşman Level 4: 40 düşman Level 5: 50 düşman Level 6: 60 düşman Level 7: 70 düşman Level 8: 80 düşman Level 9: 90 düşman Level 10: 100 düşman Level 11: 110 düşman Level 12: 120 düşman Level 13: 130 düşman Level 14: 140 düşman Level 15: 150 düşman Level 16: 160 düşman Level 17: 170 düşman Level 18: 180 düşman Level 19: 190 düşman Level 20: 200 düşman Level 21: 210 düşman Level 22: 220 düşman Level 23: 230 düşman Level 24: 240 düşman Level 25: 250 düşman Level 26: 260 düşman Level 27: 270 düşman Level 28: 280 düşman Level 29: 290 düşman Level 30: 300 düşman Level 31: 310 düşman Level 32: 320 düşman Level 33: 330 düşman Level 34: 340 düşman Level 35: 350 düşman Level 36: 360 düşman Level 37: 370 düşman Level 38: 380 düşman Level 39: 390 düşman Level 40: 400 düşman Level 41: 410 düşman Level 42: 420 düşman Level 43: 430 düşman Level 44: 440 düşman Level 45: 450 düşman Level 46: 460 düşman Level 47: 470 düşman Level 48: 480 düşman Level 49: 490 düşman Level 50: 500 düşman Level 51: 510 düşman Level 52: 520 düşman Level 53: 530 düşman Level 54: 540 düşman Level 55: 550 düşman Level 56: 560 düşman Level 57: 570 düşman Level 58: 580 düşman Level 59: 590 düşman Level 60: 600 düşman Level 61: 610 düşman Level 62: 620 düşman Level 63: 630 düşman Level 64: 640 düşman Level 65: 650 düşman Level 66: 660 düşman Level 67: 670 düşman Level 68: 680 düşman Level 69: 690 düşman Level 70: 700 düşman Level 71: 710 düşman Level 72: 720 düşman Level 73: 730 düşman Level 74: 740 düşman Level 75: 750 düşman Level 76: 760 düşman Level 77: 770 düşman Level 78: 780 düşman Level 79: 790 düşman Level 80: 800 düşman Level 81: 810 düşman Level 82: 820 düşman Level 83: 830 düşman Level 84: 840 düşman Level 85: 850 düşman Level 86: 860 düşman Level 87: 870 düşman Level 88: 880 düşman Level 89: 890 düşman Level 90: 900 düşman Level 91: 910 düşman Level 92: 920 düşman Level 93: 930 düşman Level 94: 940 düşman Level 95: 950 düşman Level 96: 960 düşman Level 97: 970 düşman Level 98: 980 düşman Level 99: 990 düşman Level 100: 1000 düşman olsun
User prompt
Düşmanlarda arka arkaya ateş edebilsin.
User prompt
Oyuncu gemisi çok hızlı ateş ediyor düzelt. Uzaylılar daha hızlı ateş etsin. Boss bölümünede enemy ekle. Her lv de enemy sayısı artsın.
User prompt
Can barını çok büyük yapma. Hp sayısını siyah renk yaz
User prompt
Dahada büyüt
User prompt
Can barını daha büyük yap
User prompt
Can barında sayıda yeşil kutunun içinde olsun
User prompt
Can barında hp sayısı çok küçük büyült
User prompt
Düşman boss can barında hp sayısı gözüksün. Ve biraz daha üstte olsun can barı. Checkpointte ölünce 0 puan a düşme
User prompt
level 10 da oyun devam etmiyor. Hatayı çöz.
User prompt
oyunda son lv 100 seviye olucak
User prompt
Hasar yiyince canım azalmıyor. Boss çok hızlı ateş etmesin.
User prompt
10 levelden sonra oyun devam etmiyor düzelt. Boss un can barını boss un üstünde göster. Sonraki lv e kaç puan gerektiği göster.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var Boss = Container.expand(function () {
var self = Container.call(this);
var bossNumber = Math.ceil(currentLevel / 10);
var assetName = bossNumber === 1 ? 'boss' : 'boss' + bossNumber;
var graphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.maxHealth = 20 + currentLevel / 10 * 5; // Increasing health with level
self.health = self.maxHealth;
self.lastShot = 0;
self.shootCooldown = 180; // 3 seconds at 60fps
self.direction = 1;
self.defeated = false;
self.update = function () {
// Boss movement pattern
self.x += self.speed * self.direction;
if (self.x <= 200 || self.x >= 1848) {
self.direction *= -1;
}
// Boss shooting pattern
self.lastShot++;
if (self.lastShot >= self.shootCooldown) {
self.lastShot = 0;
// Shoot multiple bullets in spread pattern
for (var i = -1; i <= 1; i++) {
var bullet = new EnemyBullet();
bullet.x = self.x + i * 40;
bullet.y = self.y + 75;
enemyBullets.push(bullet);
game.addChild(bullet);
}
}
};
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.health = 1;
self.lastShot = 0;
self.shootCooldown = 120; // 2 seconds at 60fps
self.update = function () {
self.y += self.speed;
// Shoot at player occasionally
self.lastShot++;
if (self.lastShot >= self.shootCooldown && Math.random() < 0.02) {
self.lastShot = 0;
var bullet = new EnemyBullet();
bullet.x = self.x;
bullet.y = self.y + 30;
enemyBullets.push(bullet);
game.addChild(bullet);
}
};
return self;
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('enemyBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 3;
self.maxHealth = 3;
self.lastShot = 0;
self.invulnerable = false;
self.invulnerableTimer = 0;
self.shoot = function () {
if (self.lastShot > 0) return;
self.lastShot = getShootCooldown();
LK.getSound('shoot').play();
if (currentLevel >= 80) {
// Rapid fire - single bullet but faster
var bullet = new PlayerBullet();
bullet.x = self.x;
bullet.y = self.y - 40;
playerBullets.push(bullet);
game.addChild(bullet);
} else if (currentLevel >= 50) {
// Triple fire
for (var i = -1; i <= 1; i++) {
var bullet = new PlayerBullet();
bullet.x = self.x + i * 25;
bullet.y = self.y - 40;
playerBullets.push(bullet);
game.addChild(bullet);
}
} else if (currentLevel >= 20) {
// Dual fire
for (var i = -1; i <= 1; i += 2) {
var bullet = new PlayerBullet();
bullet.x = self.x + i * 20;
bullet.y = self.y - 40;
playerBullets.push(bullet);
game.addChild(bullet);
}
} else {
// Single fire
var bullet = new PlayerBullet();
bullet.x = self.x;
bullet.y = self.y - 40;
playerBullets.push(bullet);
game.addChild(bullet);
}
};
self.takeDamage = function () {
if (self.invulnerable) return;
playerLives--;
storage.playerLives = playerLives;
self.invulnerable = true;
self.invulnerableTimer = 120; // 2 seconds invulnerability
LK.getSound('playerHit').play();
LK.effects.flashObject(self, 0xff0000, 500);
if (playerLives <= 0) {
LK.showGameOver();
} else {
// Respawn at starting position
self.x = 1024;
self.y = 2400;
// Don't reset score at checkpoint levels (every 10 levels)
if (currentLevel % 10 !== 0) {
LK.setScore(0);
}
}
};
self.update = function () {
if (self.lastShot > 0) {
self.lastShot--;
}
if (self.invulnerable) {
self.invulnerableTimer--;
if (self.invulnerableTimer <= 0) {
self.invulnerable = false;
}
}
};
return self;
});
var PlayerBullet = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('playerBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -12;
self.update = function () {
self.y += self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Game state variables
var currentLevel = storage.currentLevel || 1;
var playerLives = storage.playerLives || 3;
var playerBullets = [];
var enemyBullets = [];
var enemies = [];
var currentBoss = null;
var bossHealthBar = null;
var bossHealthBarBg = null;
var bossHealthTxt = null;
var bossHealthTextBg = null;
var isBossLevel = false;
var enemySpawnTimer = 0;
var levelCompleteTimer = 0;
var enemiesKilled = 0;
var enemiesNeededForLevel = 10;
// Create player
var player = game.addChild(new Player());
player.x = 1024;
player.y = 2400;
// Create UI elements
var livesTxt = new Text2('Lives: 3', {
size: 40,
fill: 0xFFFFFF
});
livesTxt.anchor.set(0, 0);
livesTxt.x = 150;
livesTxt.y = 50;
LK.gui.topLeft.addChild(livesTxt);
var levelTxt = new Text2('Level: 1', {
size: 40,
fill: 0xFFFFFF
});
levelTxt.anchor.set(0.5, 0);
levelTxt.x = 0;
levelTxt.y = 50;
LK.gui.top.addChild(levelTxt);
var scoreTxt = new Text2('Score: 0', {
size: 40,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(1, 0);
scoreTxt.x = -20;
scoreTxt.y = 50;
LK.gui.topRight.addChild(scoreTxt);
var pointsNeededTxt = new Text2('Next Level: 10', {
size: 35,
fill: 0xFFFF00
});
pointsNeededTxt.anchor.set(0.5, 0);
pointsNeededTxt.x = 0;
pointsNeededTxt.y = 90;
LK.gui.top.addChild(pointsNeededTxt);
var weaponTxt = new Text2('Weapon: Single', {
size: 35,
fill: 0xFFFF00
});
weaponTxt.anchor.set(0.5, 0);
weaponTxt.x = 0;
weaponTxt.y = 150;
LK.gui.top.addChild(weaponTxt);
// Helper functions
function getShootCooldown() {
if (currentLevel >= 80) return 8; // Rapid fire
if (currentLevel >= 50) return 15; // Triple fire
if (currentLevel >= 20) return 12; // Dual fire
return 15; // Single fire
}
function updateWeaponDisplay() {
if (currentLevel >= 80) {
weaponTxt.setText('Weapon: Rapid Fire');
} else if (currentLevel >= 50) {
weaponTxt.setText('Weapon: Triple Fire');
} else if (currentLevel >= 20) {
weaponTxt.setText('Weapon: Dual Fire');
} else {
weaponTxt.setText('Weapon: Single Fire');
}
}
function updatePointsNeededDisplay() {
if (isBossLevel) {
pointsNeededTxt.setText('BOSS LEVEL');
} else {
var pointsNeeded = enemiesNeededForLevel - enemiesKilled;
pointsNeededTxt.setText('Enemies Left: ' + pointsNeeded);
}
}
function isBossLevelCheck(level) {
return level % 10 === 0;
}
function spawnBoss() {
if (currentBoss) return;
currentBoss = new Boss();
currentBoss.x = 1024;
currentBoss.y = 400;
game.addChild(currentBoss);
// Create boss health bar
bossHealthBarBg = game.addChild(LK.getAsset('healthBarBg', {
anchorX: 0.5,
anchorY: 0.5
}));
bossHealthBarBg.x = currentBoss.x;
bossHealthBarBg.y = currentBoss.y - 150;
bossHealthBar = game.addChild(LK.getAsset('healthBar', {
anchorX: 0.5,
anchorY: 0.5
}));
bossHealthBar.x = currentBoss.x;
bossHealthBar.y = currentBoss.y - 150;
// Create green background box for boss health text
var bossHealthTextBg = game.addChild(LK.getAsset('vo', {
anchorX: 0.5,
anchorY: 0.5
}));
bossHealthTextBg.x = currentBoss.x;
bossHealthTextBg.y = currentBoss.y - 150;
bossHealthTextBg.scaleX = 0.8;
bossHealthTextBg.scaleY = 0.4;
// Create boss health text
bossHealthTxt = new Text2(currentBoss.health + '/' + currentBoss.maxHealth, {
size: 50,
fill: 0xFFFFFF
});
bossHealthTxt.anchor.set(0.5, 0.5);
bossHealthTxt.x = currentBoss.x;
bossHealthTxt.y = currentBoss.y - 150;
game.addChild(bossHealthTxt);
}
function spawnEnemy() {
if (isBossLevel) return;
var enemy = new Enemy();
enemy.x = Math.random() * 1648 + 200;
enemy.y = -50;
enemies.push(enemy);
game.addChild(enemy);
}
function nextLevel() {
currentLevel++;
storage.currentLevel = currentLevel;
// Check if we've reached the maximum level
if (currentLevel > 100) {
LK.showYouWin();
return;
}
levelTxt.setText('Level: ' + currentLevel);
isBossLevel = isBossLevelCheck(currentLevel);
enemiesKilled = 0;
levelCompleteTimer = 0;
updateWeaponDisplay();
updatePointsNeededDisplay();
// Award life at checkpoints (every 10 levels)
if (currentLevel % 10 === 0) {
playerLives++;
storage.playerLives = playerLives;
LK.effects.flashScreen(0x00ff00, 500); // Green flash for life gained
}
if (isBossLevel) {
spawnBoss();
}
}
// Input handling
var dragActive = false;
game.down = function (x, y, obj) {
dragActive = true;
var targetX = Math.max(40, Math.min(2008, x));
var targetY = Math.max(200, Math.min(2600, y));
player.x = targetX;
player.y = targetY;
player.shoot();
};
game.move = function (x, y, obj) {
// Direct mouse movement - ship follows mouse cursor immediately
var targetX = Math.max(40, Math.min(2008, x));
var targetY = Math.max(200, Math.min(2600, y));
player.x = targetX;
player.y = targetY;
};
game.up = function (x, y, obj) {
dragActive = false;
};
// Initialize level
updateWeaponDisplay();
updatePointsNeededDisplay();
levelTxt.setText('Level: ' + currentLevel);
isBossLevel = isBossLevelCheck(currentLevel);
if (isBossLevel) {
spawnBoss();
}
// Play background music
LK.playMusic('bgmusic');
// Main game loop
game.update = function () {
// Update player
player.update();
// Update UI
scoreTxt.setText('Score: ' + LK.getScore());
livesTxt.setText('Lives: ' + playerLives);
updatePointsNeededDisplay();
// Auto-shoot continuously
player.shoot();
// Spawn enemies for non-boss levels
if (!isBossLevel) {
enemySpawnTimer++;
if (enemySpawnTimer >= 90) {
// Spawn every 1.5 seconds
enemySpawnTimer = 0;
spawnEnemy();
}
}
// Update player bullets
for (var i = playerBullets.length - 1; i >= 0; i--) {
var bullet = playerBullets[i];
if (bullet.lastY === undefined) bullet.lastY = bullet.y;
// Remove bullets that go off screen
if (bullet.lastY >= -10 && bullet.y < -10) {
bullet.destroy();
playerBullets.splice(i, 1);
continue;
}
// Check collision with enemies
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
LK.getSound('enemyHit').play();
LK.setScore(LK.getScore() + 10);
bullet.destroy();
playerBullets.splice(i, 1);
enemy.destroy();
enemies.splice(j, 1);
enemiesKilled++;
break;
}
}
// Check collision with boss
if (currentBoss && bullet.intersects(currentBoss)) {
LK.getSound('bossHit').play();
LK.setScore(LK.getScore() + 50);
bullet.destroy();
playerBullets.splice(i, 1);
currentBoss.health--;
// Update boss health bar
if (bossHealthBar) {
var healthPercent = currentBoss.health / currentBoss.maxHealth;
bossHealthBar.scaleX = healthPercent;
}
// Update boss health text
if (bossHealthTxt) {
bossHealthTxt.setText(currentBoss.health + '/' + currentBoss.maxHealth);
}
if (currentBoss.health <= 0) {
currentBoss.defeated = true;
currentBoss.destroy();
currentBoss = null;
if (bossHealthBar) {
bossHealthBar.destroy();
bossHealthBar = null;
}
if (bossHealthBarBg) {
bossHealthBarBg.destroy();
bossHealthBarBg = null;
}
if (bossHealthTxt) {
bossHealthTxt.destroy();
bossHealthTxt = null;
}
if (bossHealthTextBg) {
bossHealthTextBg.destroy();
bossHealthTextBg = null;
}
LK.setScore(LK.getScore() + 500);
levelCompleteTimer = 180; // 3 seconds delay before next level
}
break;
}
if (bullet.parent) {
bullet.lastY = bullet.y;
}
}
// Update enemy bullets
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var bullet = enemyBullets[i];
if (bullet.lastY === undefined) bullet.lastY = bullet.y;
// Remove bullets that go off screen
if (bullet.lastY <= 2742 && bullet.y > 2742) {
bullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
// Check collision with player
if (bullet.intersects(player)) {
player.takeDamage();
bullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
if (bullet.parent) {
bullet.lastY = bullet.y;
}
}
// Update enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (enemy.lastY === undefined) enemy.lastY = enemy.y;
// Remove enemies that go off screen
if (enemy.lastY <= 2742 && enemy.y > 2742) {
enemy.destroy();
enemies.splice(i, 1);
continue;
}
// Check collision with player
if (enemy.intersects(player)) {
player.takeDamage();
enemy.destroy();
enemies.splice(i, 1);
continue;
}
if (enemy.parent) {
enemy.lastY = enemy.y;
}
}
// Update boss
if (currentBoss && currentBoss.parent) {
currentBoss.update();
// Update boss health bar position
if (bossHealthBar) {
bossHealthBar.x = currentBoss.x;
bossHealthBar.y = currentBoss.y - 150;
}
if (bossHealthBarBg) {
bossHealthBarBg.x = currentBoss.x;
bossHealthBarBg.y = currentBoss.y - 150;
}
if (bossHealthTxt) {
bossHealthTxt.x = currentBoss.x;
bossHealthTxt.y = currentBoss.y - 150;
}
if (bossHealthTextBg) {
bossHealthTextBg.x = currentBoss.x;
bossHealthTextBg.y = currentBoss.y - 150;
}
// Check collision with player
if (currentBoss.intersects(player)) {
player.takeDamage();
}
}
// Level progression
if (!isBossLevel && enemiesKilled >= enemiesNeededForLevel) {
levelCompleteTimer++;
if (levelCompleteTimer >= 180) {
// 3 seconds delay
nextLevel();
}
} else if (isBossLevel && currentBoss && currentBoss.defeated) {
if (levelCompleteTimer > 0) {
levelCompleteTimer--;
if (levelCompleteTimer <= 0) {
nextLevel();
}
}
} else if (isBossLevel && !currentBoss && levelCompleteTimer > 0) {
levelCompleteTimer--;
if (levelCompleteTimer <= 0) {
nextLevel();
}
} else if (isBossLevel && !currentBoss) {
// Boss level but no boss exists, spawn one
spawnBoss();
}
}; ===================================================================
--- original.js
+++ change.js
@@ -195,8 +195,9 @@
var currentBoss = null;
var bossHealthBar = null;
var bossHealthBarBg = null;
var bossHealthTxt = null;
+var bossHealthTextBg = null;
var isBossLevel = false;
var enemySpawnTimer = 0;
var levelCompleteTimer = 0;
var enemiesKilled = 0;
@@ -293,8 +294,17 @@
anchorY: 0.5
}));
bossHealthBar.x = currentBoss.x;
bossHealthBar.y = currentBoss.y - 150;
+ // Create green background box for boss health text
+ var bossHealthTextBg = game.addChild(LK.getAsset('vo', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ }));
+ bossHealthTextBg.x = currentBoss.x;
+ bossHealthTextBg.y = currentBoss.y - 150;
+ bossHealthTextBg.scaleX = 0.8;
+ bossHealthTextBg.scaleY = 0.4;
// Create boss health text
bossHealthTxt = new Text2(currentBoss.health + '/' + currentBoss.maxHealth, {
size: 50,
fill: 0xFFFFFF
@@ -440,8 +450,12 @@
if (bossHealthTxt) {
bossHealthTxt.destroy();
bossHealthTxt = null;
}
+ if (bossHealthTextBg) {
+ bossHealthTextBg.destroy();
+ bossHealthTextBg = null;
+ }
LK.setScore(LK.getScore() + 500);
levelCompleteTimer = 180; // 3 seconds delay before next level
}
break;
@@ -507,8 +521,12 @@
if (bossHealthTxt) {
bossHealthTxt.x = currentBoss.x;
bossHealthTxt.y = currentBoss.y - 150;
}
+ if (bossHealthTextBg) {
+ bossHealthTextBg.x = currentBoss.x;
+ bossHealthTextBg.y = currentBoss.y - 150;
+ }
// Check collision with player
if (currentBoss.intersects(player)) {
player.takeDamage();
}