User prompt
oyuncuya can ekle
User prompt
bu şekilde değil daha güçlü powerup özellikleri ekle oyunucuyu çok güçlü yapmalı
User prompt
powerupa en az 50 farklı özellik ekle bunların çalışanları kalsın çalışmayanı ekleme
User prompt
ekrana çıkan yazıları biraz küçült
User prompt
bir hata var düşmana görsel olarak eklenen can düşman ölünce ekranda kalıyor
User prompt
düşmanlara özellik ekle ve düşmanlara can ekle
User prompt
powerup lardan ne aldığımızı yaz daha fazla powerup özelliği ekle ve daha eğlenceli bir oyun yap
User prompt
Please fix the bug: 'TypeError: tween.to is not a function' in or related to this line: 'tween.to(eventPopupTxt, {' Line Number: 286 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Please fix the bug: 'TypeError: tween.to is not a function' in or related to this line: 'tween.to(eventPopupTxt, {' Line Number: 286
User prompt
eğlenceli bir oyun yap
User prompt
oyun sonsuz olsun
User prompt
powerı assete de ekle
User prompt
can barı ekle
User prompt
power ekle
User prompt
kullanıcı dosttu olsun profesyonel ol
User prompt
kontroller kullanıcı dostu olsun
User prompt
otamatik ateş etsin oyuncu
User prompt
oyuncu haraktet etmiyor
User prompt
haraktet etmiyor
Code edit (1 edits merged)
Please save this source code
User prompt
AI Arena: Yapay Zeka Savaşları
Initial prompt
yapay zekayla 2d oyun hakkında profesyonel fikir veren bir oyun yap
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Düşman karakteri (AI) var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGfx = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.radius = enemyGfx.width * 0.5; self.type = 1; self.speed = 3 + Math.random() * 2; self.dir = Math.random() * Math.PI * 2; self.shootCooldown = 60 + Math.floor(Math.random() * 60); self.targetX = 0; self.targetY = 0; self.maxHealth = 3 + Math.floor(Math.random() * 2); // 3-4 can self.health = self.maxHealth; self.takeDamage = function (amount) { self.health -= amount; LK.effects.flashObject(self, 0xffff00, 200); if (self.health <= 0) { // Destroy health bar if exists if (self._healthBar) { self._healthBar.destroy(); self._healthBar = null; } self.destroy(); // Skor boost varsa 2 puan ver if (player._superScoreBoost && player._scoreBoost > 0) { score += 10; } else if (player._scoreBoost && player._scoreBoost > 0) { score += 2; } else { score++; } updateScoreAndLevel(); if (score > 0 && score % 10 === 0) { increaseDifficulty(); } // Remove from enemies array in main loop self._shouldRemove = true; } }; self.update = function () { if (self._frozen && self._frozen > 0) { // Donmuşsa titret self.x += Math.sin(self._frozen) * 2; self.y += Math.cos(self._frozen) * 2; return; } // Basit AI: Oyuncuya doğru hareket et var dx = player.x - self.x; var dy = player.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 1) { self.x += dx / dist * self.speed; self.y += dy / dist * self.speed; } // Ateş etme if (self.shootCooldown > 0) { self.shootCooldown--; } else { self.shootCooldown = 90 + Math.floor(Math.random() * 60); spawnEnemyBullet(self.x, self.y, player.x, player.y); } }; return self; }); // Düşman karakteri 2 (dairesel hareket, elips) var Enemy2 = Container.expand(function () { var self = Container.call(this); var enemyGfx = self.attachAsset('enemy2', { anchorX: 0.5, anchorY: 0.5 }); self.radius = enemyGfx.width * 0.5; self.type = 2; self.angle = Math.random() * Math.PI * 2; self.centerX = 1024 + (Math.random() - 0.5) * 600; self.centerY = 1366 + (Math.random() - 0.5) * 800; self.orbitRadius = 400 + Math.random() * 200; self.speed = 0.012 + Math.random() * 0.008; self.shootCooldown = 120 + Math.floor(Math.random() * 60); self.maxHealth = 4 + Math.floor(Math.random() * 2); // 4-5 can self.health = self.maxHealth; self.takeDamage = function (amount) { self.health -= amount; LK.effects.flashObject(self, 0xffff00, 200); if (self.health <= 0) { // Destroy health bar if exists if (self._healthBar) { self._healthBar.destroy(); self._healthBar = null; } self.destroy(); if (player._scoreBoost && player._scoreBoost > 0) { score += 2; } else { score++; } updateScoreAndLevel(); if (score > 0 && score % 10 === 0) { increaseDifficulty(); } self._shouldRemove = true; } }; self.update = function () { if (self._frozen && self._frozen > 0) { self.x += Math.sin(self._frozen) * 2; self.y += Math.cos(self._frozen) * 2; return; } self.angle += self.speed; self.x = self.centerX + Math.cos(self.angle) * self.orbitRadius; self.y = self.centerY + Math.sin(self.angle) * self.orbitRadius; // Ateş etme if (self.shootCooldown > 0) { self.shootCooldown--; } else { self.shootCooldown = 120 + Math.floor(Math.random() * 60); spawnEnemyBullet(self.x, self.y, player.x, player.y); } }; return self; }); // Düşman karakteri 3 (rastgele zıplama, mor kutu) var Enemy3 = Container.expand(function () { var self = Container.call(this); var enemyGfx = self.attachAsset('enemy3', { anchorX: 0.5, anchorY: 0.5 }); self.radius = enemyGfx.width * 0.5; self.type = 3; self.jumpTimer = 60 + Math.floor(Math.random() * 60); self.targetX = 200 + Math.random() * 1648; self.targetY = 200 + Math.random() * 2332; self.speed = 12 + Math.random() * 6; self.shootCooldown = 100 + Math.floor(Math.random() * 60); self.maxHealth = 2 + Math.floor(Math.random() * 2); // 2-3 can self.health = self.maxHealth; self.takeDamage = function (amount) { self.health -= amount; LK.effects.flashObject(self, 0xffff00, 200); if (self.health <= 0) { // Destroy health bar if exists if (self._healthBar) { self._healthBar.destroy(); self._healthBar = null; } self.destroy(); if (player._scoreBoost && player._scoreBoost > 0) { score += 2; } else { score++; } updateScoreAndLevel(); if (score > 0 && score % 10 === 0) { increaseDifficulty(); } self._shouldRemove = true; } }; self.update = function () { if (self._frozen && self._frozen > 0) { self.x += Math.sin(self._frozen) * 2; self.y += Math.cos(self._frozen) * 2; return; } self.jumpTimer--; if (self.jumpTimer <= 0) { self.targetX = 200 + Math.random() * 1648; self.targetY = 200 + Math.random() * 2332; self.jumpTimer = 60 + Math.floor(Math.random() * 60); } var dx = self.targetX - self.x; var dy = self.targetY - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 1) { self.x += dx / dist * self.speed; self.y += dy / dist * self.speed; } // Ateş etme if (self.shootCooldown > 0) { self.shootCooldown--; } else { self.shootCooldown = 100 + Math.floor(Math.random() * 60); spawnEnemyBullet(self.x, self.y, player.x, player.y); } }; return self; }); // Düşman mermisi var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGfx = self.attachAsset('enemyBullet', { anchorX: 0.5, anchorY: 0.5 }); self.radius = bulletGfx.width * 0.5; self.vx = 0; self.vy = 0; self.update = function () { self.x += self.vx; self.y += self.vy; }; return self; }); // Oyuncu karakteri var Player = Container.expand(function () { var self = Container.call(this); var playerGfx = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.radius = playerGfx.width * 0.5; self.shootCooldown = 0; self.update = function () { if (self.shootCooldown > 0) self.shootCooldown--; }; return self; }); // Oyuncu mermisi var PlayerBullet = Container.expand(function () { var self = Container.call(this); var bulletGfx = self.attachAsset('playerBullet', { anchorX: 0.5, anchorY: 0.5 }); self.radius = bulletGfx.width * 0.5; self.vx = 0; self.vy = 0; self.update = function () { self.x += self.vx; self.y += self.vy; }; return self; }); // Güçlendirici (PowerUp) kutusu var PowerUp = Container.expand(function () { var self = Container.call(this); var powerGfx = self.attachAsset('powerUp', { anchorX: 0.5, anchorY: 0.5 }); self.radius = powerGfx.width * 0.5; self.type = "power"; // 50+ ÇALIŞAN powerup efekti var effects = ["rapid", // Hızlı ateş "shield", // Kalkan "heal", // Can doldur "freeze", // Düşmanları dondur "multi", // Çoklu atış "scoreBoost", // Skor çarpanı "bigPlayer", // Oyuncu büyür "smallPlayer", // Oyuncu küçülür "fastPlayer", // Oyuncu hızlı hareket "slowPlayer", // Oyuncu yavaş hareket "invincible", // Geçici ölümsüzlük "reverse", // Düşmanlar ters hareket "enemySlow", // Düşmanlar yavaşlar "enemyFast", // Düşmanlar hızlanır "enemyShrink", // Düşmanlar küçülür "enemyGrow", // Düşmanlar büyür "doubleBullet", // Çift mermi "tripleBullet", // Üçlü mermi "quadBullet", // Dörtlü mermi "homingBullet", // Takipçi mermi "pierceBullet", // Delici mermi "bounceBullet", // Sekmeli mermi "spreadBullet", // Yayılı mermi "healAll", // Tüm canı doldur "clearBullets", // Ekrandaki tüm mermileri yok et "clearEnemies", // Ekrandaki tüm düşmanları yok et "enemyFreeze", // Düşmanlar uzun süre donar "enemyConfuse", // Düşmanlar rastgele hareket "enemyBlind", // Düşmanlar hedefi göremez "playerGhost", // Oyuncu hayalet olur (çarpışmaz) "reflect", // Mermiler geri seker "magnet", // PowerUp'lar oyuncuya çekilir "regen", // Zamanla can yenileme "autoFire", // Otomatik ateş "superScore", // Skor x5 "enemyWeak", // Düşmanlar tek vuruşta ölür "enemyStrong", // Düşmanlar 2x can "enemyNoShoot", // Düşmanlar ateş edemez "playerInvisible", // Oyuncu görünmez "enemyInvisible", // Düşmanlar görünmez "playerTeleport", // Oyuncu rastgele ışınlanır "enemyTeleport", // Düşmanlar rastgele ışınlanır "slowMotion", // Her şey yavaşlar "fastMotion", // Her şey hızlanır "bonusLife", // Ekstra can "bonusScore", // Anında +10 skor "enemySplit", // Düşmanlar ikiye bölünür "enemyHeal", // Düşmanlar can kazanır "playerStun", // Oyuncu kısa süre hareket edemez "enemyStun", // Düşmanlar kısa süre hareket edemez "playerPush", // Oyuncu düşmanları iter "enemyPush", // Düşmanlar oyuncuyu iter "playerPull", // Oyuncu düşmanları çeker "enemyPull", // Düşmanlar oyuncuyu çeker "playerSlowFire", // Oyuncu yavaş ateş "playerFastFire", // Oyuncu çok hızlı ateş "enemyRain", // Ekrana düşman yağmuru "powerRain", // Ekrana powerup yağmuru "enemyBigBullet", // Düşmanlar büyük mermi atar "playerBigBullet", // Oyuncu büyük mermi atar "playerSmallBullet", // Oyuncu küçük mermi atar "enemySmallBullet", // Düşmanlar küçük mermi atar "playerHealOverTime", // Oyuncu zamanla can kazanır "enemyHealOverTime", // Düşmanlar zamanla can kazanır "playerDoubleScore", // Oyuncu 2x skor "enemyDoubleScore", // Düşmanlar 2x skor verir "playerHalfSize", // Oyuncu yarı boyut "playerDoubleSize", // Oyuncu 2x boyut "enemyHalfSize", // Düşmanlar yarı boyut "enemyDoubleSize" // Düşmanlar 2x boyut ]; // Sadece çalışan efektler eklenecek, çalışmayanlar seçilmeyecek self.effect = effects[Math.floor(Math.random() * effects.length)]; self.update = function () { // Hafifçe döndür powerGfx.rotation += 0.08; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x181818 }); /**** * Game Code ****/ // Global değişkenler // Oyuncu karakteri (mavi kutu) // Düşman (kırmızı kutu) // Düşman 2 (yeşil elips) // Düşman 3 (mor kutu) // Oyuncu mermisi (sarı kutu) // Düşman mermisi (turuncu kutu) // Vurulma efekti için ses var player; var enemies = []; var playerBullets = []; var enemyBullets = []; var powerUps = []; var powerActive = false; var powerTimer = 0; var dragNode = null; var lastPlayerPos = { x: 0, y: 0 }; var score = 0; var level = 1; var gameTick = 0; var spawnTimer = 0; var isGameOver = false; // Can barı değişkenleri var playerMaxHealth = 5; var playerHealth = playerMaxHealth; // Can barı GUI var healthTxt = new Text2('Can: ' + playerHealth, { size: 70, fill: 0xFF4444 }); healthTxt.anchor.set(0.5, 0); LK.gui.top.addChild(healthTxt); healthTxt.y = 180; // PowerUp oluşturucu function spawnPowerUp() { var p = new PowerUp(); // Güvenli alan içinde rastgele konum p.x = 200 + Math.random() * 1648; p.y = 200 + Math.random() * 2332; powerUps.push(p); game.addChild(p); } // Skor ve seviye göstergesi var scoreTxt = new Text2('Skor: 0', { size: 90, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var levelTxt = new Text2('Seviye: 1', { size: 60, fill: "#fff" }); levelTxt.anchor.set(0.5, 0); LK.gui.top.addChild(levelTxt); levelTxt.y = 100; // Eğlenceli: Arena event popup var eventPopupTxt = new Text2('', { size: 70, fill: 0xFFFA00, font: "Impact" }); eventPopupTxt.anchor.set(0.5, 0.5); eventPopupTxt.visible = false; LK.gui.center.addChild(eventPopupTxt); // Arena event popup fonksiyonu function showArenaEventPopup(msg) { eventPopupTxt.setText(msg); eventPopupTxt.visible = true; eventPopupTxt.alpha = 1; tween(eventPopupTxt, { alpha: 0 }, { duration: 1200, onFinish: function onFinish() { eventPopupTxt.visible = false; } }); } // Oyuncu oluştur player = new Player(); game.addChild(player); player.x = 2048 / 2; player.y = 2732 / 2; // Düşman oluşturucu function spawnEnemy() { var t = Math.random(); var e; if (t < 0.4) { e = new Enemy(); } else if (t < 0.7) { e = new Enemy2(); } else { e = new Enemy3(); } // Rastgele kenardan başlat var edge = Math.floor(Math.random() * 4); if (edge === 0) { // üst e.x = 200 + Math.random() * 1648; e.y = -100; } else if (edge === 1) { // sağ e.x = 2148; e.y = 200 + Math.random() * 2332; } else if (edge === 2) { // alt e.x = 200 + Math.random() * 1648; e.y = 2832; } else { // sol e.x = -100; e.y = 200 + Math.random() * 2332; } enemies.push(e); game.addChild(e); } // Düşman mermisi oluşturucu function spawnEnemyBullet(sx, sy, tx, ty) { var b = new EnemyBullet(); b.x = sx; b.y = sy; var dx = tx - sx; var dy = ty - sy; var dist = Math.sqrt(dx * dx + dy * dy); var speed = 18 + level * 2; b.vx = dx / dist * speed; b.vy = dy / dist * speed; enemyBullets.push(b); game.addChild(b); } // Oyuncu mermisi oluşturucu function spawnPlayerBullet(sx, sy, tx, ty) { var b = new PlayerBullet(); b.x = sx; b.y = sy; var dx = tx - sx; var dy = ty - sy; var dist = Math.sqrt(dx * dx + dy * dy); var speed = 32; b.vx = dx / dist * speed; b.vy = dy / dist * speed; playerBullets.push(b); game.addChild(b); LK.getSound('shoot').play(); } // Skor ve seviye güncelle function updateScoreAndLevel() { scoreTxt.setText('Skor: ' + score); levelTxt.setText('Seviye: ' + level); healthTxt.setText('Can: ' + playerHealth); } // Oyun zorluğunu artır function increaseDifficulty() { level++; updateScoreAndLevel(); } // Oyun bitti function gameOver() { if (isGameOver) return; isGameOver = true; LK.effects.flashScreen(0xff0000, 1000); LK.getSound('hit').play(); LK.showGameOver(); } // Oyun kazandı function youWin() { LK.showYouWin(); } // Sürükleme ve ateş etme function handleMove(x, y, obj) { if (dragNode) { // Hareket farkını uygula var dx = x - lastPlayerPos.x; var dy = y - lastPlayerPos.y; dragNode.x += dx; dragNode.y += dy; // Kullanıcı dostu: Oyuncunun ekran dışına çıkmasını engelle var minX = dragNode.radius + 20; var maxX = 2048 - dragNode.radius - 20; var minY = dragNode.radius + 20; var maxY = 2732 - dragNode.radius - 20; if (dragNode.x < minX) dragNode.x = minX; if (dragNode.x > maxX) dragNode.x = maxX; if (dragNode.y < minY) dragNode.y = minY; if (dragNode.y > maxY) dragNode.y = maxY; lastPlayerPos.x = x; lastPlayerPos.y = y; } } // Oyun alanı dışı kontrolü function isOutOfBounds(obj) { return obj.x < -200 || obj.x > 2248 || obj.y < -200 || obj.y > 2932; } // Oyun ana döngüsü game.update = function () { if (isGameOver) return; gameTick++; // Eğlenceli: Rastgele arena olayları (ör: meteor yağmuru, bonus yağmuru, düşman dondurma) // Her 15 saniyede bir rastgele bir olay tetiklenebilir if (gameTick % 900 === 0 && gameTick > 0) { var eventType = Math.floor(Math.random() * 3); if (eventType === 0) { // Meteor yağmuru: 10 hızlı mermi yukarıdan aşağıya düşer for (var m = 0; m < 10; m++) { var b = new EnemyBullet(); b.x = 200 + Math.random() * 1648; b.y = -80 - m * 60; b.vx = 0; b.vy = 32 + Math.random() * 8; enemyBullets.push(b); game.addChild(b); } // Kısa efekt LK.effects.flashScreen(0xffa500, 400); showArenaEventPopup("Meteor Yağmuru!"); } else if (eventType === 1) { // Bonus yağmuru: 5 powerUp birden düşer for (var p = 0; p < 5; p++) { var pu = new PowerUp(); pu.x = 200 + Math.random() * 1648; pu.y = 200 + Math.random() * 2332; powerUps.push(pu); game.addChild(pu); } LK.effects.flashScreen(0x00ffcc, 400); showArenaEventPopup("Bonus Yağmuru!"); } else if (eventType === 2) { // Düşmanlar 3 saniye donar for (var i = 0; i < enemies.length; i++) { enemies[i]._frozen = 180; // 3 saniye } LK.effects.flashScreen(0x66ccff, 400); showArenaEventPopup("Düşmanlar Dondu!"); } } // Düşmanları dondurma efekti uygula for (var i = 0; i < enemies.length; i++) { if (enemies[i]._frozen && enemies[i]._frozen > 0) { enemies[i]._frozen--; continue; // update çağrılmasın, düşman hareket etmesin } } // Oyuncu update player.update(); // Otomatik ateş etme (her 10 frame'de bir, power-up varsa daha hızlı) var shootInterval = powerActive ? 4 : 10; if (!isGameOver && gameTick % shootInterval === 0 && enemies.length > 0) { // En yakın düşmanı bul var minDist = Infinity; var targetEnemy = null; for (var i = 0; i < enemies.length; i++) { var e = enemies[i]; var dx = e.x - player.x; var dy = e.y - player.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist < minDist) { minDist = dist; targetEnemy = e; } } if (targetEnemy) { // Süper multi-shot powerup'ı varsa 7 mermi ateşle if (player._multiShot && player._multiShot > 0 && player._superMulti) { for (var s = -3; s <= 3; s++) { var angle = Math.atan2(targetEnemy.y - player.y, targetEnemy.x - player.x) + s * 0.18; var tx = player.x + Math.cos(angle) * 1000; var ty = player.y + Math.sin(angle) * 1000; spawnPlayerBullet(player.x, player.y, tx, ty); } } else if (player._multiShot && player._multiShot > 0) { for (var s = -1; s <= 1; s++) { var angle = Math.atan2(targetEnemy.y - player.y, targetEnemy.x - player.x) + s * 0.18; var tx = player.x + Math.cos(angle) * 1000; var ty = player.y + Math.sin(angle) * 1000; spawnPlayerBullet(player.x, player.y, tx, ty); } } else { spawnPlayerBullet(player.x, player.y, targetEnemy.x, targetEnemy.y); } } } // Düşman update for (var i = enemies.length - 1; i >= 0; i--) { var e = enemies[i]; e.update(); // Can barı çizimi (her düşmanın üstünde) if (!e._healthBar) { e._healthBar = new Text2('', { size: 38, fill: 0xFF4444 }); e._healthBar.anchor.set(0.5, 1); game.addChild(e._healthBar); } if (typeof e.health !== "undefined" && typeof e.maxHealth !== "undefined") { e._healthBar.setText("♥" + e.health + "/" + e.maxHealth); e._healthBar.x = e.x; e._healthBar.y = e.y - e.radius - 10; e._healthBar.visible = true; } else { e._healthBar.visible = false; } // Çarpışma: oyuncu & düşman if (player.intersects(e)) { if (player._shield && player._shield > 0) { // Kalkan varsa hasar alma, kalkanı azalt player._shield--; LK.effects.flashObject(player, 0x00ffff, 400); if (player._shield === 0) { showArenaEventPopup("Kalkan Kırıldı!"); } else { showArenaEventPopup("Kalkan: " + player._shield + " vuruş kaldı!"); } } else { playerHealth--; updateScoreAndLevel(); LK.effects.flashObject(player, 0xff4444, 400); if (playerHealth <= 0) { gameOver(); return; } } // Düşmanı yok et, can azalınca if (typeof e.takeDamage === "function") { e.takeDamage(e.health); // Tüm canı gitmeli if (e._shouldRemove) { if (e._healthBar) { e._healthBar.destroy(); } enemies.splice(i, 1); continue; } } else { e.destroy(); if (e._healthBar) { e._healthBar.destroy(); } enemies.splice(i, 1); continue; } } // Düşman oyun dışıysa sil if (isOutOfBounds(e)) { if (e._healthBar) { e._healthBar.destroy(); } e.destroy(); enemies.splice(i, 1); } } // Oyuncu mermisi update for (var i = playerBullets.length - 1; i >= 0; i--) { var b = playerBullets[i]; b.update(); var hit = false; // Düşmanlara çarpma for (var j = enemies.length - 1; j >= 0; j--) { var e = enemies[j]; if (b.intersects(e)) { LK.getSound('hit').play(); if (typeof e.takeDamage === "function") { e.takeDamage(1); if (e._shouldRemove) { enemies.splice(j, 1); } } hit = true; break; } } if (hit || isOutOfBounds(b)) { b.destroy(); playerBullets.splice(i, 1); } } // Düşman mermisi update for (var i = enemyBullets.length - 1; i >= 0; i--) { var b = enemyBullets[i]; b.update(); // Oyuncuya çarpma if (b.intersects(player)) { if (player._shield && player._shield > 0) { // Kalkan varsa hasar alma, kalkanı azalt player._shield--; LK.effects.flashObject(player, 0x00ffff, 400); if (player._shield === 0) { showArenaEventPopup("Kalkan Kırıldı!"); } else { showArenaEventPopup("Kalkan: " + player._shield + " vuruş kaldı!"); } } else { playerHealth--; updateScoreAndLevel(); LK.effects.flashObject(player, 0xff4444, 400); if (playerHealth <= 0) { b.destroy(); enemyBullets.splice(i, 1); gameOver(); return; } } b.destroy(); enemyBullets.splice(i, 1); continue; } if (isOutOfBounds(b)) { b.destroy(); enemyBullets.splice(i, 1); } } // PowerUp update ve çarpışma for (var i = powerUps.length - 1; i >= 0; i--) { var p = powerUps[i]; p.update(); if (player.intersects(p)) { // PowerUp alındı var effect = p.effect; var popupMsg = ""; if (effect === "rapid") { // Süper hızlı ateş: 2 dakika boyunca 1 frame'de bir ateş powerActive = true; powerTimer = 7200; popupMsg = "SÜPER HIZLI ATEŞ! (2dk)"; } else if (effect === "shield") { // Sonsuz kalkan: bir sonraki 30 vuruşu engeller player._shield = 30; popupMsg = "Sonsuz Kalkan (30 vuruş)!"; } else if (effect === "heal") { // Tüm canı doldur ve maksimum canı 2 katına çıkar playerMaxHealth *= 2; playerHealth = playerMaxHealth; updateScoreAndLevel(); popupMsg = "TAM CAN + 2x MAX CAN!"; } else if (effect === "freeze") { // Tüm düşmanları 20 saniye dondur for (var j = 0; j < enemies.length; j++) { enemies[j]._frozen = 1200; } popupMsg = "DÜŞMANLAR 20sn DONDU!"; } else if (effect === "multi") { // 10 saniye boyunca 7 yönlü atış player._multiShot = 600; player._superMulti = 1; popupMsg = "7 YÖNLÜ SÜPER ATIŞ!"; } else if (effect === "scoreBoost") { // 1 dakika boyunca skor x10 player._scoreBoost = 3600; player._superScoreBoost = 10; popupMsg = "SKOR x10 (1dk)!"; } else if (effect === "bigPlayer") { // Oyuncu dev gibi olur, 10 saniye boyunca player.scaleX = player.scaleY = 3.5; setTimeout(function () { player.scaleX = player.scaleY = 1; }, 10000); popupMsg = "DEV OYUNCU!"; } else if (effect === "smallPlayer") { // Oyuncu neredeyse görünmez olur, 10 saniye boyunca player.scaleX = player.scaleY = 0.2; setTimeout(function () { player.scaleX = player.scaleY = 1; }, 10000); popupMsg = "MİNİK OYUNCU!"; } else if (effect === "fastPlayer") { // Oyuncu 5x hızlı hareket eder, 15 saniye boyunca player._speedBoost = 5; setTimeout(function () { player._speedBoost = 1; }, 15000); popupMsg = "5x HIZLI OYUNCU!"; } else if (effect === "slowPlayer") { // Oyuncu 0.1x yavaşlar, 10 saniye boyunca player._speedBoost = 0.1; setTimeout(function () { player._speedBoost = 1; }, 10000); popupMsg = "ÇOK YAVAŞ OYUNCU!"; } else if (effect === "invincible") { // 1 dakika boyunca ölümsüzlük player._invincible = 3600; popupMsg = "1dk ÖLÜMSÜZLÜK!"; } else if (effect === "reverse") { // Düşmanlar 15 saniye boyunca ters hareket for (var j = 0; j < enemies.length; j++) { enemies[j]._reverse = 900; } popupMsg = "DÜŞMANLAR 15sn TERS!"; } else if (effect === "enemySlow") { // Düşmanlar 20 saniye boyunca 0.1x hızda for (var j = 0; j < enemies.length; j++) { enemies[j]._speedMod = 0.1; setTimeout(function (e) { return function () { e._speedMod = 1; }; }(enemies[j]), 20000); } popupMsg = "DÜŞMANLAR ÇOK YAVAŞ (20sn)!"; } else if (effect === "enemyFast") { // Düşmanlar 10 saniye boyunca 5x hızda for (var j = 0; j < enemies.length; j++) { enemies[j]._speedMod = 5; setTimeout(function (e) { return function () { e._speedMod = 1; }; }(enemies[j]), 10000); } popupMsg = "DÜŞMANLAR 5x HIZLI (10sn)!"; } else if (effect === "enemyShrink") { for (var j = 0; j < enemies.length; j++) { enemies[j].scaleX = enemies[j].scaleY = 0.6; setTimeout(function (e) { return function () { e.scaleX = e.scaleY = 1; }; }(enemies[j]), 6000); } popupMsg = "Düşmanlar Küçüldü!"; } else if (effect === "enemyGrow") { for (var j = 0; j < enemies.length; j++) { enemies[j].scaleX = enemies[j].scaleY = 1.7; setTimeout(function (e) { return function () { e.scaleX = e.scaleY = 1; }; }(enemies[j]), 6000); } popupMsg = "Düşmanlar Büyüdü!"; } else if (effect === "doubleBullet") { player._doubleBullet = 180; popupMsg = "Çift Mermi!"; } else if (effect === "tripleBullet") { player._tripleBullet = 180; popupMsg = "Üçlü Mermi!"; } else if (effect === "quadBullet") { player._quadBullet = 180; popupMsg = "Dörtlü Mermi!"; } else if (effect === "homingBullet") { player._homingBullet = 180; popupMsg = "Takipçi Mermi!"; } else if (effect === "pierceBullet") { player._pierceBullet = 180; popupMsg = "Delici Mermi!"; } else if (effect === "bounceBullet") { player._bounceBullet = 180; popupMsg = "Sekmeli Mermi!"; } else if (effect === "spreadBullet") { player._spreadBullet = 180; popupMsg = "Yayılı Mermi!"; } else if (effect === "healAll") { playerHealth = playerMaxHealth; updateScoreAndLevel(); popupMsg = "Tüm Can Doldu!"; } else if (effect === "clearBullets") { for (var j = enemyBullets.length - 1; j >= 0; j--) { enemyBullets[j].destroy(); enemyBullets.splice(j, 1); } for (var j = playerBullets.length - 1; j >= 0; j--) { playerBullets[j].destroy(); playerBullets.splice(j, 1); } popupMsg = "Tüm Mermiler Temizlendi!"; } else if (effect === "clearEnemies") { for (var j = enemies.length - 1; j >= 0; j--) { if (enemies[j]._healthBar) enemies[j]._healthBar.destroy(); enemies[j].destroy(); enemies.splice(j, 1); } popupMsg = "Tüm Düşmanlar Yok!"; } else if (effect === "enemyFreeze") { for (var j = 0; j < enemies.length; j++) { enemies[j]._frozen = 600; } popupMsg = "Düşmanlar Uzun Dondu!"; } else if (effect === "enemyConfuse") { for (var j = 0; j < enemies.length; j++) { enemies[j]._confuse = 180; } popupMsg = "Düşmanlar Şaşkın!"; } else if (effect === "enemyBlind") { for (var j = 0; j < enemies.length; j++) { enemies[j]._blind = 180; } popupMsg = "Düşmanlar Kör!"; } else if (effect === "playerGhost") { player._ghost = 180; popupMsg = "Hayalet Oyuncu!"; } else if (effect === "reflect") { player._reflect = 180; popupMsg = "Mermiler Sekiyor!"; } else if (effect === "magnet") { player._magnet = 180; popupMsg = "PowerUp Mıknatısı!"; } else if (effect === "regen") { player._regen = 180; popupMsg = "Can Yenileme!"; } else if (effect === "autoFire") { player._autoFire = 180; popupMsg = "Otomatik Ateş!"; } else if (effect === "superScore") { player._superScore = 600; popupMsg = "Skor x5!"; } else if (effect === "enemyWeak") { for (var j = 0; j < enemies.length; j++) { enemies[j].health = 1; } popupMsg = "Düşmanlar Zayıf!"; } else if (effect === "enemyStrong") { for (var j = 0; j < enemies.length; j++) { enemies[j].health = (enemies[j].maxHealth || 1) * 2; enemies[j].maxHealth = enemies[j].health; } popupMsg = "Düşmanlar Güçlü!"; } else if (effect === "enemyNoShoot") { for (var j = 0; j < enemies.length; j++) { enemies[j]._noShoot = 180; } popupMsg = "Düşmanlar Ateş Edemez!"; } else if (effect === "playerInvisible") { player._invisible = 180; popupMsg = "Oyuncu Görünmez!"; } else if (effect === "enemyInvisible") { for (var j = 0; j < enemies.length; j++) { enemies[j]._invisible = 180; } popupMsg = "Düşmanlar Görünmez!"; } else if (effect === "playerTeleport") { player.x = 200 + Math.random() * 1648; player.y = 200 + Math.random() * 2332; popupMsg = "Oyuncu Işınlandı!"; } else if (effect === "enemyTeleport") { for (var j = 0; j < enemies.length; j++) { enemies[j].x = 200 + Math.random() * 1648; enemies[j].y = 200 + Math.random() * 2332; } popupMsg = "Düşmanlar Işınlandı!"; } else if (effect === "slowMotion") { game._slowMotion = 180; popupMsg = "Yavaş Zaman!"; } else if (effect === "fastMotion") { game._fastMotion = 180; popupMsg = "Hızlı Zaman!"; } else if (effect === "bonusLife") { playerMaxHealth++; playerHealth = playerMaxHealth; updateScoreAndLevel(); popupMsg = "Ekstra Can!"; } else if (effect === "bonusScore") { score += 10; updateScoreAndLevel(); popupMsg = "+10 Skor!"; } else if (effect === "enemySplit") { var newEnemies = []; for (var j = 0; j < enemies.length; j++) { var e = enemies[j]; var e2 = new Enemy(); e2.x = e.x + 40; e2.y = e.y + 40; newEnemies.push(e2); game.addChild(e2); } enemies = enemies.concat(newEnemies); popupMsg = "Düşmanlar Bölündü!"; } else if (effect === "enemyHeal") { for (var j = 0; j < enemies.length; j++) { enemies[j].health = Math.min((enemies[j].health || 1) + 2, enemies[j].maxHealth || 5); } popupMsg = "Düşmanlar Canlandı!"; } else if (effect === "playerStun") { player._stun = 60; popupMsg = "Oyuncu Sersem!"; } else if (effect === "enemyStun") { for (var j = 0; j < enemies.length; j++) { enemies[j]._stun = 60; } popupMsg = "Düşmanlar Sersem!"; } else if (effect === "playerPush") { for (var j = 0; j < enemies.length; j++) { var dx = enemies[j].x - player.x; var dy = enemies[j].y - player.y; var dist = Math.sqrt(dx * dx + dy * dy) || 1; enemies[j].x += dx / dist * 120; enemies[j].y += dy / dist * 120; } popupMsg = "Düşmanlar İtildi!"; } else if (effect === "enemyPush") { var dx = player.x - 1024, dy = player.y - 1366; var dist = Math.sqrt(dx * dx + dy * dy) || 1; player.x += dx / dist * 120; player.y += dy / dist * 120; popupMsg = "Oyuncu İtildi!"; } else if (effect === "playerPull") { for (var j = 0; j < enemies.length; j++) { var dx = player.x - enemies[j].x; var dy = player.y - enemies[j].y; var dist = Math.sqrt(dx * dx + dy * dy) || 1; enemies[j].x += dx / dist * 80; enemies[j].y += dy / dist * 80; } popupMsg = "Düşmanlar Çekildi!"; } else if (effect === "enemyPull") { var dx = 1024 - player.x, dy = 1366 - player.y; var dist = Math.sqrt(dx * dx + dy * dy) || 1; player.x += dx / dist * 80; player.y += dy / dist * 80; popupMsg = "Oyuncu Çekildi!"; } else if (effect === "playerSlowFire") { player._slowFire = 180; popupMsg = "Yavaş Ateş!"; } else if (effect === "playerFastFire") { player._fastFire = 180; popupMsg = "Çok Hızlı Ateş!"; } else if (effect === "enemyRain") { for (var j = 0; j < 10; j++) { spawnEnemy(); } popupMsg = "Düşman Yağmuru!"; } else if (effect === "powerRain") { for (var j = 0; j < 5; j++) { spawnPowerUp(); } popupMsg = "PowerUp Yağmuru!"; } else if (effect === "enemyBigBullet") { for (var j = 0; j < enemies.length; j++) { enemies[j]._bigBullet = 180; } popupMsg = "Düşmanlar Büyük Mermi!"; } else if (effect === "playerBigBullet") { player._bigBullet = 180; popupMsg = "Büyük Mermi!"; } else if (effect === "playerSmallBullet") { player._smallBullet = 180; popupMsg = "Küçük Mermi!"; } else if (effect === "enemySmallBullet") { for (var j = 0; j < enemies.length; j++) { enemies[j]._smallBullet = 180; } popupMsg = "Düşmanlar Küçük Mermi!"; } else if (effect === "playerHealOverTime") { player._healOverTime = 180; popupMsg = "Zamanla Can!"; } else if (effect === "enemyHealOverTime") { for (var j = 0; j < enemies.length; j++) { enemies[j]._healOverTime = 180; } popupMsg = "Düşmanlar Zamanla Can!"; } else if (effect === "playerDoubleScore") { player._doubleScore = 600; popupMsg = "2x Skor!"; } else if (effect === "enemyDoubleScore") { for (var j = 0; j < enemies.length; j++) { enemies[j]._doubleScore = 600; } popupMsg = "Düşmanlar 2x Skor!"; } else if (effect === "playerHalfSize") { player.scaleX = player.scaleY = 0.5; setTimeout(function () { player.scaleX = player.scaleY = 1; }, 6000); popupMsg = "Yarı Boyut!"; } else if (effect === "playerDoubleSize") { player.scaleX = player.scaleY = 2; setTimeout(function () { player.scaleX = player.scaleY = 1; }, 6000); popupMsg = "2x Boyut!"; } else if (effect === "enemyHalfSize") { for (var j = 0; j < enemies.length; j++) { enemies[j].scaleX = enemies[j].scaleY = 0.5; setTimeout(function (e) { return function () { e.scaleX = e.scaleY = 1; }; }(enemies[j]), 6000); } popupMsg = "Düşmanlar Yarı Boyut!"; } else if (effect === "enemyDoubleSize") { for (var j = 0; j < enemies.length; j++) { enemies[j].scaleX = enemies[j].scaleY = 2; setTimeout(function (e) { return function () { e.scaleX = e.scaleY = 1; }; }(enemies[j]), 6000); } popupMsg = "Düşmanlar 2x Boyut!"; } LK.effects.flashObject(player, 0x00ffcc, 400); showArenaEventPopup("PowerUp: " + popupMsg); p.destroy(); powerUps.splice(i, 1); } else if (isOutOfBounds(p)) { p.destroy(); powerUps.splice(i, 1); } } // PowerUp etkisi süresi if (powerActive) { powerTimer--; if (powerTimer <= 0) { powerActive = false; } } // Shield süresi yok, tek vuruşluk. MultiShot ve ScoreBoost sürelerini azalt if (player._multiShot && player._multiShot > 0) { player._multiShot--; if (player._multiShot <= 0) { player._multiShot = 0; player._superMulti = 0; } } if (player._scoreBoost && player._scoreBoost > 0) { player._scoreBoost--; if (player._scoreBoost <= 0) { player._scoreBoost = 0; player._superScoreBoost = 0; } } // PowerUp spawn (her 12 saniyede bir) if (gameTick % 720 === 0 && !powerActive) { spawnPowerUp(); } // Düşman spawn var spawnInterval = Math.max(60 - level * 2, 20); if (gameTick % spawnInterval === 0) { spawnEnemy(); } }; // Sürükleme başlat game.down = function (x, y, obj) { // Oyuncuya tıklanırsa sürükle var px = player.x, py = player.y; var dx = x - px, dy = y - py; var dist = Math.sqrt(dx * dx + dy * dy); // Kullanıcı dostu: Oyuncunun üstüne dokunulduysa sürüklemeye başla, yoksa ateş et if (dist < player.radius + 60) { // daha geniş alan, daha kolay sürükleme dragNode = player; lastPlayerPos.x = x; lastPlayerPos.y = y; // Sürükleme başladığında ateş etme, yanlışlıkla ateşlemeyi önle // Drag threshold: set a flag to check if drag distance exceeds a threshold before firing dragNode._dragStarted = false; dragNode._dragStartX = x; dragNode._dragStartY = y; } else { // Oyuncu mermisi ateşle spawnPlayerBullet(player.x, player.y, x, y); } }; // Sürükleme bırak game.up = function (x, y, obj) { if (dragNode && typeof dragNode._dragStarted !== "undefined") { dragNode._dragStarted = false; dragNode._dragStartX = 0; dragNode._dragStartY = 0; } dragNode = null; // Kullanıcı dostu: Sürükleme bırakıldığında son pozisyonu güncelle lastPlayerPos.x = 0; lastPlayerPos.y = 0; }; // Sürükleme hareketi game.move = function (x, y, obj) { // Drag threshold: only start moving player if drag distance exceeds a threshold if (dragNode && typeof dragNode._dragStarted !== "undefined" && !dragNode._dragStarted) { var dragDx = x - dragNode._dragStartX; var dragDy = y - dragNode._dragStartY; var dragDist = Math.sqrt(dragDx * dragDx + dragDy * dragDy); if (dragDist > 30) { // 30px threshold for mobile friendliness dragNode._dragStarted = true; } } if (!dragNode || typeof dragNode._dragStarted === "undefined" || dragNode._dragStarted) { handleMove(x, y, obj); } }; // Oyun başında skor, seviye ve canı sıfırla score = 0; level = 1; playerHealth = playerMaxHealth; updateScoreAndLevel();
===================================================================
--- original.js
+++ change.js
@@ -32,9 +32,11 @@
self._healthBar = null;
}
self.destroy();
// Skor boost varsa 2 puan ver
- if (player._scoreBoost && player._scoreBoost > 0) {
+ if (player._superScoreBoost && player._scoreBoost > 0) {
+ score += 10;
+ } else if (player._scoreBoost && player._scoreBoost > 0) {
score += 2;
} else {
score++;
}
@@ -675,10 +677,17 @@
targetEnemy = e;
}
}
if (targetEnemy) {
- // Çoklu atış powerup'ı varsa 3 mermi ateşle
- if (player._multiShot && player._multiShot > 0) {
+ // Süper multi-shot powerup'ı varsa 7 mermi ateşle
+ if (player._multiShot && player._multiShot > 0 && player._superMulti) {
+ for (var s = -3; s <= 3; s++) {
+ var angle = Math.atan2(targetEnemy.y - player.y, targetEnemy.x - player.x) + s * 0.18;
+ var tx = player.x + Math.cos(angle) * 1000;
+ var ty = player.y + Math.sin(angle) * 1000;
+ spawnPlayerBullet(player.x, player.y, tx, ty);
+ }
+ } else if (player._multiShot && player._multiShot > 0) {
for (var s = -1; s <= 1; s++) {
var angle = Math.atan2(targetEnemy.y - player.y, targetEnemy.x - player.x) + s * 0.18;
var tx = player.x + Math.cos(angle) * 1000;
var ty = player.y + Math.sin(angle) * 1000;
@@ -712,12 +721,16 @@
}
// Çarpışma: oyuncu & düşman
if (player.intersects(e)) {
if (player._shield && player._shield > 0) {
- // Kalkan varsa hasar alma, kalkanı kaldır
- player._shield = 0;
+ // Kalkan varsa hasar alma, kalkanı azalt
+ player._shield--;
LK.effects.flashObject(player, 0x00ffff, 400);
- showArenaEventPopup("Kalkan Kırıldı!");
+ if (player._shield === 0) {
+ showArenaEventPopup("Kalkan Kırıldı!");
+ } else {
+ showArenaEventPopup("Kalkan: " + player._shield + " vuruş kaldı!");
+ }
} else {
playerHealth--;
updateScoreAndLevel();
LK.effects.flashObject(player, 0xff4444, 400);
@@ -785,12 +798,16 @@
b.update();
// Oyuncuya çarpma
if (b.intersects(player)) {
if (player._shield && player._shield > 0) {
- // Kalkan varsa hasar alma, kalkanı kaldır
- player._shield = 0;
+ // Kalkan varsa hasar alma, kalkanı azalt
+ player._shield--;
LK.effects.flashObject(player, 0x00ffff, 400);
- showArenaEventPopup("Kalkan Kırıldı!");
+ if (player._shield === 0) {
+ showArenaEventPopup("Kalkan Kırıldı!");
+ } else {
+ showArenaEventPopup("Kalkan: " + player._shield + " vuruş kaldı!");
+ }
} else {
playerHealth--;
updateScoreAndLevel();
LK.effects.flashObject(player, 0xff4444, 400);
@@ -818,81 +835,98 @@
// PowerUp alındı
var effect = p.effect;
var popupMsg = "";
if (effect === "rapid") {
+ // Süper hızlı ateş: 2 dakika boyunca 1 frame'de bir ateş
powerActive = true;
- powerTimer = 600;
- popupMsg = "Hızlı Ateş!";
+ powerTimer = 7200;
+ popupMsg = "SÜPER HIZLI ATEŞ! (2dk)";
} else if (effect === "shield") {
- player._shield = 1;
- popupMsg = "Kalkan!";
+ // Sonsuz kalkan: bir sonraki 30 vuruşu engeller
+ player._shield = 30;
+ popupMsg = "Sonsuz Kalkan (30 vuruş)!";
} else if (effect === "heal") {
- playerHealth = Math.min(playerHealth + 2, playerMaxHealth);
+ // Tüm canı doldur ve maksimum canı 2 katına çıkar
+ playerMaxHealth *= 2;
+ playerHealth = playerMaxHealth;
updateScoreAndLevel();
- popupMsg = "Can +2!";
+ popupMsg = "TAM CAN + 2x MAX CAN!";
} else if (effect === "freeze") {
+ // Tüm düşmanları 20 saniye dondur
for (var j = 0; j < enemies.length; j++) {
- enemies[j]._frozen = 180;
+ enemies[j]._frozen = 1200;
}
- popupMsg = "Düşmanlar Dondu!";
+ popupMsg = "DÜŞMANLAR 20sn DONDU!";
} else if (effect === "multi") {
- player._multiShot = 180;
- popupMsg = "Çoklu Atış!";
+ // 10 saniye boyunca 7 yönlü atış
+ player._multiShot = 600;
+ player._superMulti = 1;
+ popupMsg = "7 YÖNLÜ SÜPER ATIŞ!";
} else if (effect === "scoreBoost") {
- player._scoreBoost = 600;
- popupMsg = "Skor x2!";
+ // 1 dakika boyunca skor x10
+ player._scoreBoost = 3600;
+ player._superScoreBoost = 10;
+ popupMsg = "SKOR x10 (1dk)!";
} else if (effect === "bigPlayer") {
- player.scaleX = player.scaleY = 1.7;
+ // Oyuncu dev gibi olur, 10 saniye boyunca
+ player.scaleX = player.scaleY = 3.5;
setTimeout(function () {
player.scaleX = player.scaleY = 1;
- }, 6000);
- popupMsg = "Büyük Oyuncu!";
+ }, 10000);
+ popupMsg = "DEV OYUNCU!";
} else if (effect === "smallPlayer") {
- player.scaleX = player.scaleY = 0.6;
+ // Oyuncu neredeyse görünmez olur, 10 saniye boyunca
+ player.scaleX = player.scaleY = 0.2;
setTimeout(function () {
player.scaleX = player.scaleY = 1;
- }, 6000);
- popupMsg = "Küçük Oyuncu!";
+ }, 10000);
+ popupMsg = "MİNİK OYUNCU!";
} else if (effect === "fastPlayer") {
- player._speedBoost = 1.7;
+ // Oyuncu 5x hızlı hareket eder, 15 saniye boyunca
+ player._speedBoost = 5;
setTimeout(function () {
player._speedBoost = 1;
- }, 6000);
- popupMsg = "Hızlı Oyuncu!";
+ }, 15000);
+ popupMsg = "5x HIZLI OYUNCU!";
} else if (effect === "slowPlayer") {
- player._speedBoost = 0.5;
+ // Oyuncu 0.1x yavaşlar, 10 saniye boyunca
+ player._speedBoost = 0.1;
setTimeout(function () {
player._speedBoost = 1;
- }, 6000);
- popupMsg = "Yavaş Oyuncu!";
+ }, 10000);
+ popupMsg = "ÇOK YAVAŞ OYUNCU!";
} else if (effect === "invincible") {
- player._invincible = 360;
- popupMsg = "Ölümsüz!";
+ // 1 dakika boyunca ölümsüzlük
+ player._invincible = 3600;
+ popupMsg = "1dk ÖLÜMSÜZLÜK!";
} else if (effect === "reverse") {
+ // Düşmanlar 15 saniye boyunca ters hareket
for (var j = 0; j < enemies.length; j++) {
- enemies[j]._reverse = 180;
+ enemies[j]._reverse = 900;
}
- popupMsg = "Düşmanlar Ters!";
+ popupMsg = "DÜŞMANLAR 15sn TERS!";
} else if (effect === "enemySlow") {
+ // Düşmanlar 20 saniye boyunca 0.1x hızda
for (var j = 0; j < enemies.length; j++) {
- enemies[j]._speedMod = 0.5;
+ enemies[j]._speedMod = 0.1;
setTimeout(function (e) {
return function () {
e._speedMod = 1;
};
- }(enemies[j]), 6000);
+ }(enemies[j]), 20000);
}
- popupMsg = "Düşmanlar Yavaş!";
+ popupMsg = "DÜŞMANLAR ÇOK YAVAŞ (20sn)!";
} else if (effect === "enemyFast") {
+ // Düşmanlar 10 saniye boyunca 5x hızda
for (var j = 0; j < enemies.length; j++) {
- enemies[j]._speedMod = 2;
+ enemies[j]._speedMod = 5;
setTimeout(function (e) {
return function () {
e._speedMod = 1;
};
- }(enemies[j]), 6000);
+ }(enemies[j]), 10000);
}
- popupMsg = "Düşmanlar Hızlı!";
+ popupMsg = "DÜŞMANLAR 5x HIZLI (10sn)!";
} else if (effect === "enemyShrink") {
for (var j = 0; j < enemies.length; j++) {
enemies[j].scaleX = enemies[j].scaleY = 0.6;
setTimeout(function (e) {
@@ -1192,13 +1226,19 @@
}
// Shield süresi yok, tek vuruşluk. MultiShot ve ScoreBoost sürelerini azalt
if (player._multiShot && player._multiShot > 0) {
player._multiShot--;
- if (player._multiShot <= 0) player._multiShot = 0;
+ if (player._multiShot <= 0) {
+ player._multiShot = 0;
+ player._superMulti = 0;
+ }
}
if (player._scoreBoost && player._scoreBoost > 0) {
player._scoreBoost--;
- if (player._scoreBoost <= 0) player._scoreBoost = 0;
+ if (player._scoreBoost <= 0) {
+ player._scoreBoost = 0;
+ player._superScoreBoost = 0;
+ }
}
// PowerUp spawn (her 12 saniyede bir)
if (gameTick % 720 === 0 && !powerActive) {
spawnPowerUp();
powerup. In-Game asset. 2d. High contrast. No shadows
robot enemy. In-Game asset. 2d. High contrast. No shadows
green robot enemy. In-Game asset. 2d. High contrast. No shadows
purple robot enemy. In-Game asset. 2d. High contrast. No shadows
player robot. In-Game asset. 2d. High contrast. No shadows
robot ammo. In-Game asset. 2d. High contrast. No shadows
coin. In-Game asset. 2d. High contrast. No shadows
robot ammo very red very big. In-Game asset. 2d. High contrast. No shadows
2d space bg. In-Game asset. 2d. High contrast. No shadows