User prompt
Score göstergesini sol aşağıya al
User prompt
can değeri 0 olunca oyun bitsin
User prompt
Oyun bitince ne kadar güçlendirme sahip oldığumu görebileceğim bir gösterge ekle
User prompt
Please fix the bug: 'TypeError: LK.isPaused is not a function' in or related to this line: 'upgradesText.visible = LK.isPaused();' Line Number: 464
User prompt
Upgrades göstergesi, oyun bitince veya durdurulunca gözüksün.
User prompt
Please fix the bug: 'TypeError: LK.isPaused is not a function' in or related to this line: 'upgradesText.visible = LK.isPaused();' Line Number: 464
User prompt
Score göstergesini sol aşağıya al ve upgrade’leri oyun duraklatılınca görünecek şekilde değiştir. Upgrade’ler sağ aşağıda gözüksün.
User prompt
canavarların can göstergelerini biraz daha belirgin yap
User prompt
arka plan akıyormuş gibi gözükmesini istiyorum ve tercih ettiğim bir resim olmasını istiyorum
User prompt
upgrade ile ilgili şeyleri kaldırmanı istiyorum
User prompt
Boss öldükten sonra, can yenileme özelliğini geliştiren bir ek özellik düşsün. Bu özellik sayesinde, boss öldürüldükten sonra alınan tüm can yenileme güçlendirmeleri +2 can versin. Bu artış en fazla +3’e kadar çıkabilsin. +3 seviyesine ulaşıldıktan sonra, oyuncu her boss öldürdüğünde ekstra +5 hasar kazansın.
User prompt
powerup güçlendirmesini kaldır
User prompt
İyileştirmeyi ilk defa alırken can bir bir artıyor ama 10 cana ulaşıldıktan sonra, hasar alıp can 5’e düştüğünde tekrar iyileştirme alındığında can bir anda 10 oluyor; bunu düzelt. İyileştirme alındığında can, sadece +1 +1 olarak artsın ve 10’u geçmesin. Ayrıca bunu sadece 10 için düşünme; örneğin, canım 7 oldu ve hasar alıp 3’e düştüyse, tekrar can aldığımda bir anda 8 olmasın. Her iyileştirme +1 olarak etki etsin.
User prompt
Multishot 5'e ulaştıktan sonra 6. kez Multishot güçlendirmesi alındığında, mermi sayısı 1'e düşsün ama hasara +3 yerine sadece +1 eklensin. Ayrıca, boss düşmanı her 2 dakikada bir gelsin. Oyunda ne kadar süre geçtiğini görebilmek için bir timer da ekle.
User prompt
Her 2 dakikada bir gelen bir boss olsun. Bu düşmanın ilk gelişinde 1000 canı olsun, sonraki gelişlerinde ise canı her seferinde 1000 artarak gelsin. Ayrıca, oyuncunun sahip olabileceği maksimum can 10 olsun. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
super enemy ile ilgili şeyleri kaldır
User prompt
super enemy i kaldır ve maksimum can limitini kaldır
User prompt
HealthUpgrade bir bir artış sağlasın ve üst sınır olarak 10 olsun. Ayrıca, Super Enemy'nin başlangıç canı 1000 olarak ayarlansın ve Super Enemy oyuncuya hasar verirse, 5 hasar versin.
User prompt
Düşman ölünce etrafa az miktarda partikül saçılsın ve düşman, kısa bir süre sonra tamamen kaybolsun. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Düşmanların ölümüne efekti ekle ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Düşmanların ölüm efektini kaldır
User prompt
Düşmanlar öldükten sonra patlama efekti kalıcı olmuş; bu yüzden düşman hala gözükmeye devam ediyor. Bunu düzelt: patlama efekti bittikten sonra düşman tamamen kaybolsun. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Düşmanların ölmesine hafif bir patlama efekti ekle ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Hasar alma efektini ekranın tamamına değil, sadece karakter üzerinde yap. Karakter hasar aldığında kısa süreliğine kırmızıya dönsün, sonra tekrar normale dönsün. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
/**** * 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.speed = 2; self.health = 1000; self.maxHealth = 1000; self.lastY = 0; self.healthText = new Text2(self.health.toString(), { size: 40, fill: 0xFFFFFF }); self.healthText.anchor.set(0.5, 0.5); self.healthText.x = 0; self.healthText.y = -80; self.addChild(self.healthText); self.takeDamage = function (damage) { self.health -= damage; self.healthText.setText(self.health.toString()); LK.effects.flashObject(self, 0xFFFFFF, 200); if (self.health <= 0) { // Create particle explosion effect for (var p = 0; p < 10; p++) { var particle = new Particle(); particle.x = self.x; particle.y = self.y; var angle = p / 10 * Math.PI * 2; var speed = 4 + Math.random() * 3; particle.vx = Math.cos(angle) * speed; particle.vy = Math.sin(angle) * speed; particle.tint = 0x8B0000; self.parent.addChild(particle); } // Add death animation tween(self, { scaleX: 0.1, scaleY: 0.1, alpha: 0 }, { duration: 500, easing: tween.easeOut }); return true; // Boss is dead } return false; }; self.update = function () { self.y += self.speed; }; return self; }); var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 15; self.damage = 1; self.lastY = 0; self.update = function () { self.y -= self.speed; }; return self; }); var DamageUpgrade = Container.expand(function () { var self = Container.call(this); var upgradeGraphics = self.attachAsset('damageUpgrade', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.update = function () { self.y += self.speed; self.rotation += 0.03; }; return self; }); var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 4; self.health = 3; self.maxHealth = 3; self.lastY = 0; self.healthText = new Text2(self.health.toString(), { size: 30, fill: 0xFFFFFF }); self.healthText.anchor.set(0.5, 0.5); self.healthText.x = 0; self.healthText.y = -40; self.addChild(self.healthText); self.takeDamage = function (damage) { self.health -= damage; self.healthText.setText(self.health.toString()); LK.effects.flashObject(self, 0xFFFFFF, 200); if (self.health <= 0) { // Create particle explosion effect for (var p = 0; p < 6; p++) { var particle = new Particle(); particle.x = self.x; particle.y = self.y; var angle = p / 6 * Math.PI * 2; var speed = 3 + Math.random() * 2; particle.vx = Math.cos(angle) * speed; particle.vy = Math.sin(angle) * speed; particle.tint = 0xff4444; self.parent.addChild(particle); } // Add death animation tween(self, { scaleX: 0.1, scaleY: 0.1, alpha: 0 }, { duration: 300, easing: tween.easeOut }); return true; // Enemy is dead } return false; }; self.update = function () { self.y += self.speed; }; return self; }); var FireRateUpgrade = Container.expand(function () { var self = Container.call(this); var upgradeGraphics = self.attachAsset('fireRateUpgrade', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.update = function () { self.y += self.speed; self.rotation += 0.03; }; return self; }); var HealthBoost = Container.expand(function () { var self = Container.call(this); var boostGraphics = self.attachAsset('healthBoost', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.update = function () { self.y += self.speed; self.rotation += 0.03; }; return self; }); var HealthUpgrade = Container.expand(function () { var self = Container.call(this); var upgradeGraphics = self.attachAsset('healthUpgrade', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.update = function () { self.y += self.speed; self.rotation += 0.03; }; return self; }); var MultishotUpgrade = Container.expand(function () { var self = Container.call(this); var upgradeGraphics = self.attachAsset('multishotUpgrade', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.update = function () { self.y += self.speed; self.rotation += 0.03; }; return self; }); var Particle = Container.expand(function () { var self = Container.call(this); var particleGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); particleGraphics.scaleX = 0.3; particleGraphics.scaleY = 0.3; particleGraphics.tint = 0xffffff; self.vx = 0; self.vy = 0; self.life = 1.0; self.update = function () { self.x += self.vx; self.y += self.vy; self.life -= 0.02; self.alpha = self.life; if (self.life <= 0) { self.destroy(); } }; 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 = 3; self.maxHealth = Math.min(3, 10); self.speed = 5; self.fireRate = 1; // Start at 1 and increment up self.bulletDamage = 1; self.multiShot = 1; // Number of bullets per shot self.lastShot = 0; self.shoot = function () { if (LK.ticks - self.lastShot >= Math.floor(60 / self.fireRate)) { self.lastShot = LK.ticks; LK.getSound('shoot').play(); for (var i = 0; i < self.multiShot; i++) { var bullet = new Bullet(); bullet.x = self.x + (i - (self.multiShot - 1) / 2) * 20; bullet.y = self.y - 40; bullet.damage = self.bulletDamage + extraDamageFromBosses; bullet.lastY = bullet.y; bullets.push(bullet); game.addChild(bullet); } } }; self.upgradeFireRate = function () { if (self.fireRate < 8) { self.fireRate += 1; } }; self.upgradeDamage = function () { self.bulletDamage += 1; }; self.upgradeMultiShot = function () { if (self.multiShot >= 5) { // Reset multishot to 1 and add 1 damage self.multiShot = 1; self.bulletDamage += 1; } else { self.multiShot += 1; } }; self.takeDamage = function () { self.health--; LK.getSound('damage').play(); // Add red tint animation to player tween(self, { tint: 0xFF0000 }, { duration: 200, onFinish: function onFinish() { tween(self, { tint: 0xFFFFFF }, { duration: 200 }); } }); if (self.health <= 0) { LK.showGameOver(); } }; self.heal = function () { if (self.health < 10) { var healAmount = 1 + healthRegenLevel; self.health = Math.min(self.health + healAmount, 10); } }; self.upgradeHealthRegen = function () { if (healthRegenLevel < 3) { healthRegenLevel++; } if (healthRegenLevel >= 3) { extraDamageFromBosses += 5; } }; self.upgradeSpeed = function () { if (self.speed < 10) { self.speed = Math.min(Math.floor(self.speed * 1.15) + 1, 10); } }; return self; }); var SpeedUpgrade = Container.expand(function () { var self = Container.call(this); var upgradeGraphics = self.attachAsset('speedUpgrade', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.update = function () { self.y += self.speed; self.rotation += 0.03; }; return self; }); var Upgrade = Container.expand(function () { var self = Container.call(this); var upgradeGraphics = self.attachAsset('upgrade', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.type = 'speed'; // 'speed', 'health', 'firerate', 'damage', 'multishot' self.update = function () { self.y += self.speed; self.rotation += 0.03; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a1a }); /**** * Game Code ****/ // Game dimensions and layout - no lanes, full width spawning var gameWidth = 2048; // Create player var player = game.addChild(new Player()); player.x = gameWidth / 2; player.y = 2732 - 200; // Game arrays var enemies = []; var upgrades = []; var bullets = []; var fireRateUpgrades = []; var healthUpgrades = []; var damageUpgrades = []; var speedUpgrades = []; var multishotUpgrades = []; var bosses = []; var bossSpawnCounter = 0; var healthBoosts = []; var healthRegenLevel = 0; // 0 = +1, 1 = +2, 2 = +3 var extraDamageFromBosses = 0; // Dragging variables var isDragging = false; var dragOffset = { x: 0, y: 0 }; // Game variables var gameSpeed = 1; var enemySpawnRate = 120; var upgradeSpawnRate = 300; // UI Elements var scoreText = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreText.anchor.set(0, 0); scoreText.x = 50; scoreText.y = 50; LK.gui.topLeft.addChild(scoreText); var healthText = new Text2('Health: 3', { size: 60, fill: 0xFF0000 }); healthText.anchor.set(1, 0); LK.gui.topRight.addChild(healthText); // Player upgrades display var upgradesText = new Text2('Upgrades:\nDamage: 1\nSpeed: 5\nMultiShot: 1\nFireRate: 30', { size: 40, fill: 0x00FFFF }); upgradesText.anchor.set(1, 0); upgradesText.x = -10; upgradesText.y = 80; LK.gui.topRight.addChild(upgradesText); // Game timer display var timerText = new Text2('Time: 00:00', { size: 50, fill: 0xFFFFFF }); timerText.anchor.set(0.5, 0); LK.gui.top.addChild(timerText); // Input handling - drag mechanics game.down = function (x, y, obj) { isDragging = true; dragOffset.x = x - player.x; dragOffset.y = y - player.y; }; game.move = function (x, y, obj) { if (isDragging) { player.x = Math.max(50, Math.min(2048 - 50, x - dragOffset.x)); player.y = Math.max(50, Math.min(2732 - 50, y - dragOffset.y)); } }; game.up = function (x, y, obj) { isDragging = false; }; // Main game loop game.update = function () { // Update game speed gameSpeed += 0.001; // Update score and UI scoreText.setText('Score: ' + LK.getScore()); healthText.setText('Health: ' + player.health); upgradesText.setText('Upgrades:\nDamage: ' + player.bulletDamage + '\nSpeed: ' + player.speed + '\nMultiShot: ' + player.multiShot + '\nFireRate: ' + player.fireRate); // Update timer display var minutes = Math.floor(LK.ticks / 3600); var seconds = Math.floor(LK.ticks % 3600 / 60); var timeString = (minutes < 10 ? '0' : '') + minutes + ':' + (seconds < 10 ? '0' : '') + seconds; timerText.setText('Time: ' + timeString); // Calculate enemy health based on time // Every 30 seconds = 1800 ticks at 60fps (+10 health) // Every 60 seconds = 3600 ticks at 60fps (+20 health) var enemyHealthBonus30s = Math.floor(LK.ticks / 1800) * 10; var enemyHealthBonus60s = Math.floor(LK.ticks / 3600) * 20; var enemyHealthBonus = enemyHealthBonus30s + enemyHealthBonus60s; // Spawn enemies across full width if (LK.ticks % Math.max(30, enemySpawnRate - Math.floor(LK.ticks / 100)) == 0) { var enemy = new Enemy(); enemy.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries enemy.y = -50; enemy.speed = 4 + gameSpeed; enemy.health = 3 + enemyHealthBonus; enemy.maxHealth = 3 + enemyHealthBonus; enemy.healthText.setText(enemy.health.toString()); enemy.lastY = enemy.y; enemies.push(enemy); game.addChild(enemy); } // Spawn upgrades across full width (much reduced rate for natural spawns) if (LK.ticks % Math.max(1200, upgradeSpawnRate * 5 - Math.floor(LK.ticks / 30)) == 0) { var upgrade = new Upgrade(); upgrade.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries upgrade.y = -50; upgrade.speed = 6 + gameSpeed; upgrade.lastY = upgrade.y; var upgradeTypes = ['speed', 'health', 'firerate', 'damage', 'multishot']; upgrade.type = upgradeTypes[Math.floor(Math.random() * upgradeTypes.length)]; upgrades.push(upgrade); game.addChild(upgrade); } // Spawn fire rate upgrades across full width (much reduced rate for natural spawns) if (LK.ticks % Math.max(1800, 2400 - Math.floor(LK.ticks / 20)) == 0) { var fireRateUpgrade = new FireRateUpgrade(); fireRateUpgrade.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries fireRateUpgrade.y = -50; fireRateUpgrade.speed = 6 + gameSpeed; fireRateUpgrade.lastY = fireRateUpgrade.y; fireRateUpgrades.push(fireRateUpgrade); game.addChild(fireRateUpgrade); } // Spawn boss every 2 minutes (7200 ticks at 60fps) if (LK.ticks > 0 && LK.ticks % 7200 == 0) { var boss = new Boss(); boss.x = gameWidth / 2; boss.y = -75; boss.speed = 2 + gameSpeed * 0.5; // Increase health by 1000 each time boss.health = 1000 + bossSpawnCounter * 1000; boss.maxHealth = boss.health; boss.healthText.setText(boss.health.toString()); boss.lastY = boss.y; bosses.push(boss); game.addChild(boss); bossSpawnCounter++; } // Auto shooting player.shoot(); // Update and check bullets for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; // Check if bullet went off screen if (bullet.lastY > -50 && bullet.y <= -50) { bullet.destroy(); bullets.splice(i, 1); continue; } bullet.lastY = bullet.y; } // Check bullet-enemy collisions 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)) { var enemyDead = enemy.takeDamage(bullet.damage); bullet.destroy(); bullets.splice(i, 1); if (enemyDead) { LK.setScore(LK.getScore() + 1); // Drop upgrade chance when enemy dies - total 80% chance var dropChance = Math.random(); if (dropChance < 0.25 && player.fireRate < 8) { // 25% Fire Rate upgrade (only if fireRate < 8) var droppedUpgrade = new FireRateUpgrade(); droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, enemy.x)); droppedUpgrade.y = enemy.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; fireRateUpgrades.push(droppedUpgrade); game.addChild(droppedUpgrade); } else if (dropChance < 0.45) { // 20% Damage upgrade var droppedUpgrade = new DamageUpgrade(); droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, enemy.x)); droppedUpgrade.y = enemy.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; damageUpgrades.push(droppedUpgrade); game.addChild(droppedUpgrade); } else if (dropChance < 0.65 && player.speed < 10) { // 20% Speed upgrade (only if speed < 10) var droppedUpgrade = new SpeedUpgrade(); droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, enemy.x)); droppedUpgrade.y = enemy.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; speedUpgrades.push(droppedUpgrade); game.addChild(droppedUpgrade); } else if (dropChance < 0.75) { // 10% Multishot upgrade var droppedUpgrade = new MultishotUpgrade(); droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, enemy.x)); droppedUpgrade.y = enemy.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; multishotUpgrades.push(droppedUpgrade); game.addChild(droppedUpgrade); } else if (dropChance < 0.80) { // 5% Health upgrade var droppedUpgrade = new HealthUpgrade(); droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, enemy.x)); droppedUpgrade.y = enemy.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; healthUpgrades.push(droppedUpgrade); game.addChild(droppedUpgrade); } // Remove enemy from array and destroy immediately enemies.splice(j, 1); enemy.destroy(); } break; } } } // Check bullet-boss collisions for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; for (var j = bosses.length - 1; j >= 0; j--) { var boss = bosses[j]; if (bullet.intersects(boss)) { var bossDead = boss.takeDamage(bullet.damage); bullet.destroy(); bullets.splice(i, 1); if (bossDead) { LK.setScore(LK.getScore() + 100); // Boss always drops health boost var healthBoost = new HealthBoost(); healthBoost.x = boss.x; healthBoost.y = boss.y; healthBoost.speed = 4; healthBoost.lastY = healthBoost.y; healthBoosts.push(healthBoost); game.addChild(healthBoost); // Boss always drops 3 random upgrades for (var k = 0; k < 3; k++) { var dropChance = Math.random(); var droppedUpgrade; if (dropChance < 0.3) { droppedUpgrade = new FireRateUpgrade(); fireRateUpgrades.push(droppedUpgrade); } else if (dropChance < 0.5) { droppedUpgrade = new DamageUpgrade(); damageUpgrades.push(droppedUpgrade); } else if (dropChance < 0.7) { droppedUpgrade = new SpeedUpgrade(); speedUpgrades.push(droppedUpgrade); } else if (dropChance < 0.85) { droppedUpgrade = new MultishotUpgrade(); multishotUpgrades.push(droppedUpgrade); } else { droppedUpgrade = new HealthUpgrade(); healthUpgrades.push(droppedUpgrade); } droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, boss.x + (k - 1) * 60)); droppedUpgrade.y = boss.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; game.addChild(droppedUpgrade); } // Remove boss from array and destroy immediately bosses.splice(j, 1); boss.destroy(); } break; } } } // Update and check enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; // Check if enemy went off screen if (enemy.lastY < 2732 + 50 && enemy.y >= 2732 + 50) { player.takeDamage(); // Player takes damage when enemy reaches bottom enemy.destroy(); enemies.splice(i, 1); continue; } // Check collision with player if (enemy.intersects(player)) { player.takeDamage(); enemy.destroy(); enemies.splice(i, 1); continue; } enemy.lastY = enemy.y; } // Update and check bosses for (var i = bosses.length - 1; i >= 0; i--) { var boss = bosses[i]; // Check if boss went off screen if (boss.lastY < 2732 + 75 && boss.y >= 2732 + 75) { player.takeDamage(); // Player takes damage when boss reaches bottom boss.destroy(); bosses.splice(i, 1); continue; } // Check collision with player if (boss.intersects(player)) { player.takeDamage(); boss.destroy(); bosses.splice(i, 1); continue; } boss.lastY = boss.y; } // Update and check upgrades for (var i = upgrades.length - 1; i >= 0; i--) { var upgrade = upgrades[i]; // Check if upgrade went off screen if (upgrade.lastY < 2732 + 50 && upgrade.y >= 2732 + 50) { upgrade.destroy(); upgrades.splice(i, 1); continue; } // Check collection by player if (upgrade.intersects(player)) { LK.getSound('collect').play(); if (upgrade.type === 'speed') { player.upgradeSpeed(); } else if (upgrade.type === 'health') { player.maxHealth = Math.min(Math.floor(player.maxHealth * 1.2) + 1, 10); player.heal(); } else if (upgrade.type === 'firerate') { player.upgradeFireRate(); } else if (upgrade.type === 'damage') { player.upgradeDamage(); } else if (upgrade.type === 'multishot') { player.upgradeMultiShot(); } // Add player upgrade animation tween(player, { scaleX: 1.2, scaleY: 1.2 }, { duration: 150, onFinish: function onFinish() { tween(player, { scaleX: 1.0, scaleY: 1.0 }, { duration: 150 }); } }); LK.effects.flashObject(upgrade, 0x00FF00, 300); upgrade.destroy(); upgrades.splice(i, 1); continue; } upgrade.lastY = upgrade.y; } // Update and check fire rate upgrades for (var i = fireRateUpgrades.length - 1; i >= 0; i--) { var fireRateUpgrade = fireRateUpgrades[i]; // Check if upgrade went off screen if (fireRateUpgrade.lastY < 2732 + 50 && fireRateUpgrade.y >= 2732 + 50) { fireRateUpgrade.destroy(); fireRateUpgrades.splice(i, 1); continue; } // Check collection by player if (fireRateUpgrade.intersects(player)) { LK.getSound('collect').play(); player.upgradeFireRate(); // Add player upgrade animation tween(player, { scaleX: 1.2, scaleY: 1.2 }, { duration: 150, onFinish: function onFinish() { tween(player, { scaleX: 1.0, scaleY: 1.0 }, { duration: 150 }); } }); LK.effects.flashObject(fireRateUpgrade, 0xffa500, 300); fireRateUpgrade.destroy(); fireRateUpgrades.splice(i, 1); continue; } fireRateUpgrade.lastY = fireRateUpgrade.y; } // Update and check damage upgrades for (var i = damageUpgrades.length - 1; i >= 0; i--) { var damageUpgrade = damageUpgrades[i]; // Check if upgrade went off screen if (damageUpgrade.lastY < 2732 + 50 && damageUpgrade.y >= 2732 + 50) { damageUpgrade.destroy(); damageUpgrades.splice(i, 1); continue; } // Check collection by player if (damageUpgrade.intersects(player)) { LK.getSound('collect').play(); player.upgradeDamage(); // Add player upgrade animation tween(player, { scaleX: 1.2, scaleY: 1.2 }, { duration: 150, onFinish: function onFinish() { tween(player, { scaleX: 1.0, scaleY: 1.0 }, { duration: 150 }); } }); LK.effects.flashObject(damageUpgrade, 0xffff00, 300); damageUpgrade.destroy(); damageUpgrades.splice(i, 1); continue; } damageUpgrade.lastY = damageUpgrade.y; } // Update and check speed upgrades for (var i = speedUpgrades.length - 1; i >= 0; i--) { var speedUpgrade = speedUpgrades[i]; // Check if upgrade went off screen if (speedUpgrade.lastY < 2732 + 50 && speedUpgrade.y >= 2732 + 50) { speedUpgrade.destroy(); speedUpgrades.splice(i, 1); continue; } // Check collection by player if (speedUpgrade.intersects(player)) { LK.getSound('collect').play(); player.upgradeSpeed(); // Add player upgrade animation tween(player, { scaleX: 1.2, scaleY: 1.2 }, { duration: 150, onFinish: function onFinish() { tween(player, { scaleX: 1.0, scaleY: 1.0 }, { duration: 150 }); } }); LK.effects.flashObject(speedUpgrade, 0x0000ff, 300); speedUpgrade.destroy(); speedUpgrades.splice(i, 1); continue; } speedUpgrade.lastY = speedUpgrade.y; } // Update and check multishot upgrades for (var i = multishotUpgrades.length - 1; i >= 0; i--) { var multishotUpgrade = multishotUpgrades[i]; // Check if upgrade went off screen if (multishotUpgrade.lastY < 2732 + 50 && multishotUpgrade.y >= 2732 + 50) { multishotUpgrade.destroy(); multishotUpgrades.splice(i, 1); continue; } // Check collection by player if (multishotUpgrade.intersects(player)) { LK.getSound('collect').play(); player.upgradeMultiShot(); // Add player upgrade animation tween(player, { scaleX: 1.2, scaleY: 1.2 }, { duration: 150, onFinish: function onFinish() { tween(player, { scaleX: 1.0, scaleY: 1.0 }, { duration: 150 }); } }); LK.effects.flashObject(multishotUpgrade, 0x800000, 300); multishotUpgrade.destroy(); multishotUpgrades.splice(i, 1); continue; } multishotUpgrade.lastY = multishotUpgrade.y; } // Update and check health upgrades for (var i = healthUpgrades.length - 1; i >= 0; i--) { var healthUpgrade = healthUpgrades[i]; // Check if upgrade went off screen if (healthUpgrade.lastY < 2732 + 50 && healthUpgrade.y >= 2732 + 50) { healthUpgrade.destroy(); healthUpgrades.splice(i, 1); continue; } // Check collection by player if (healthUpgrade.intersects(player)) { LK.getSound('collect').play(); player.maxHealth = Math.min(Math.floor(player.maxHealth * 1.2) + 1, 10); player.heal(); // Add player upgrade animation tween(player, { scaleX: 1.2, scaleY: 1.2 }, { duration: 150, onFinish: function onFinish() { tween(player, { scaleX: 1.0, scaleY: 1.0 }, { duration: 150 }); } }); LK.effects.flashObject(healthUpgrade, 0x4caf50, 300); healthUpgrade.destroy(); healthUpgrades.splice(i, 1); continue; } healthUpgrade.lastY = healthUpgrade.y; } // Update and check health boosts for (var i = healthBoosts.length - 1; i >= 0; i--) { var healthBoost = healthBoosts[i]; // Check if boost went off screen if (healthBoost.lastY < 2732 + 50 && healthBoost.y >= 2732 + 50) { healthBoost.destroy(); healthBoosts.splice(i, 1); continue; } // Check collection by player if (healthBoost.intersects(player)) { LK.getSound('collect').play(); player.upgradeHealthRegen(); // Add player upgrade animation tween(player, { scaleX: 1.2, scaleY: 1.2 }, { duration: 150, onFinish: function onFinish() { tween(player, { scaleX: 1.0, scaleY: 1.0 }, { duration: 150 }); } }); LK.effects.flashObject(healthBoost, 0x00ff80, 300); healthBoost.destroy(); healthBoosts.splice(i, 1); continue; } healthBoost.lastY = healthBoost.y; } }; // Start background music LK.playMusic('background');
===================================================================
--- original.js
+++ change.js
@@ -153,8 +153,22 @@
self.rotation += 0.03;
};
return self;
});
+var HealthBoost = Container.expand(function () {
+ var self = Container.call(this);
+ var boostGraphics = self.attachAsset('healthBoost', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 6;
+ self.lastY = 0;
+ self.update = function () {
+ self.y += self.speed;
+ self.rotation += 0.03;
+ };
+ return self;
+});
var HealthUpgrade = Container.expand(function () {
var self = Container.call(this);
var upgradeGraphics = self.attachAsset('healthUpgrade', {
anchorX: 0.5,
@@ -225,9 +239,9 @@
for (var i = 0; i < self.multiShot; i++) {
var bullet = new Bullet();
bullet.x = self.x + (i - (self.multiShot - 1) / 2) * 20;
bullet.y = self.y - 40;
- bullet.damage = self.bulletDamage;
+ bullet.damage = self.bulletDamage + extraDamageFromBosses;
bullet.lastY = bullet.y;
bullets.push(bullet);
game.addChild(bullet);
}
@@ -271,11 +285,20 @@
}
};
self.heal = function () {
if (self.health < 10) {
- self.health++;
+ var healAmount = 1 + healthRegenLevel;
+ self.health = Math.min(self.health + healAmount, 10);
}
};
+ self.upgradeHealthRegen = function () {
+ if (healthRegenLevel < 3) {
+ healthRegenLevel++;
+ }
+ if (healthRegenLevel >= 3) {
+ extraDamageFromBosses += 5;
+ }
+ };
self.upgradeSpeed = function () {
if (self.speed < 10) {
self.speed = Math.min(Math.floor(self.speed * 1.15) + 1, 10);
}
@@ -338,8 +361,11 @@
var speedUpgrades = [];
var multishotUpgrades = [];
var bosses = [];
var bossSpawnCounter = 0;
+var healthBoosts = [];
+var healthRegenLevel = 0; // 0 = +1, 1 = +2, 2 = +3
+var extraDamageFromBosses = 0;
// Dragging variables
var isDragging = false;
var dragOffset = {
x: 0,
@@ -554,8 +580,16 @@
bullet.destroy();
bullets.splice(i, 1);
if (bossDead) {
LK.setScore(LK.getScore() + 100);
+ // Boss always drops health boost
+ var healthBoost = new HealthBoost();
+ healthBoost.x = boss.x;
+ healthBoost.y = boss.y;
+ healthBoost.speed = 4;
+ healthBoost.lastY = healthBoost.y;
+ healthBoosts.push(healthBoost);
+ game.addChild(healthBoost);
// Boss always drops 3 random upgrades
for (var k = 0; k < 3; k++) {
var dropChance = Math.random();
var droppedUpgrade;
@@ -848,7 +882,42 @@
continue;
}
healthUpgrade.lastY = healthUpgrade.y;
}
+ // Update and check health boosts
+ for (var i = healthBoosts.length - 1; i >= 0; i--) {
+ var healthBoost = healthBoosts[i];
+ // Check if boost went off screen
+ if (healthBoost.lastY < 2732 + 50 && healthBoost.y >= 2732 + 50) {
+ healthBoost.destroy();
+ healthBoosts.splice(i, 1);
+ continue;
+ }
+ // Check collection by player
+ if (healthBoost.intersects(player)) {
+ LK.getSound('collect').play();
+ player.upgradeHealthRegen();
+ // Add player upgrade animation
+ tween(player, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 150,
+ onFinish: function onFinish() {
+ tween(player, {
+ scaleX: 1.0,
+ scaleY: 1.0
+ }, {
+ duration: 150
+ });
+ }
+ });
+ LK.effects.flashObject(healthBoost, 0x00ff80, 300);
+ healthBoost.destroy();
+ healthBoosts.splice(i, 1);
+ continue;
+ }
+ healthBoost.lastY = healthBoost.y;
+ }
};
// Start background music
LK.playMusic('background');
\ No newline at end of file
Aşırı kızgın, hatta kafasından alevler çıkan, kübizm tarzında bir canavar çiz.. In-Game asset. 2d. High contrast. No shadows
kübizm tarzında düz bir mermi. In-Game asset. 2d. High contrast. No shadows
Aşırı kızgın, kübizm tarzında bir canavar çiz.. In-Game asset. 2d. High contrast. No shadows
Bir iyileşme efekti çiz kübizm tarzında. In-Game asset. 2d. High contrast. No shadows
Ortaçağ tarzında bir uzay gemisi çiz ve çizim tarzıda kübizm olsun. In-Game asset. 2d. High contrast. No shadows
Bir iyileşme efekti çiz sade olsun In-Game asset. 2d. High contrast. No shadows
saldırı hızını artışını gösteren bir çizim In-Game asset. 2d. High contrast. No shadows
hız artışını görselleştir ve mavi olsun In-Game asset. 2d. High contrast. No shadows
Birden fazla mermi, üzerinde + işareti olsun ve mavi olsun In-Game asset. 2d. High contrast. No shadows
Kaslı bir kol üstünde de + işareti olan bir çizim yap mavi olsun In-Game asset. 2d. High contrast. No shadows
Tekrar eden başlangıç ve son noktası aynı olan bir uzay arkaplan olarak yapmak istiyorum In-Game asset. 2d. High contrast.