User prompt
sadece boss bölümünü oynat
User prompt
boss bölümünün ortasına kartal sesini ekle , kartal sesi sadece orada çalınsın !
User prompt
sadece boss bölümünü oynat !
User prompt
kartal sesini boss bölümünün sonuna ekle . bölüm bittiğinde o ses çalsın
User prompt
Her 30 passCounterTxt te bir bir tane random ses çalsın , 40 biraz az oldu .
User prompt
kartal sesi hariç diğer tüm sesleri oyunun içine ekle , sesler random bir biçimde oyunun içinde çalsın . Her 40 passCounterTxt te bir bir tane random ses çalsın .
User prompt
bolum sonunda calan fenerBogasi sesi de çalmasın artık
User prompt
Bölün sonlarında calan ve 100 ve 200 üncü sırada calan sesleri kaldır , çalmasın şuan
User prompt
Şuan oyunun içinde olan tanımladığın sesleri hepsini sil !
User prompt
düşmanlar random bir sırayla gelsin şuan belli bir sırayla geliyorlar !
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'length')' in or related to this line: 'box = self.attachAsset(assetKey, {' Line Number: 65
User prompt
baskanKamera ve pradaMont ve beFair assetleriminde bulunan görselleri de oyunumuza düşman olarak ekle !
User prompt
Sadece boss bölümünü oynat !
User prompt
boss bölümündeki düşman sıklığını daha arttır , daha zorlaştır bölümü . boss bölümünü geçmek için 35 tane bossu geçmem gereksin
User prompt
Sadece boss bölümünü oynayacağım , diğer bölümleri deAktif et
User prompt
Boss bölümünde ki ekrana gelen boss düşmanını daha da arttır !
User prompt
Sadece boss bölğmünü oynayacağım şuan , diğer bölümleri deaktif et !
User prompt
Boss bölümünde de diğer düşmanlar gelmeye devam etsin
User prompt
Diğer bölümleri dondur , sadece boss bölümünü oynayacağım şuan !
User prompt
Boss un boyutunu daha da büyüt !
User prompt
Düşmanların boyutunu biraz daha büyüt ekranda
User prompt
Please fix the bug: 'ReferenceError: Enemy1 is not defined' in or related to this line: 'o = new Enemy1();' Line Number: 423
User prompt
Please fix the bug: 'ReferenceError: Enemy1 is not defined' in or related to this line: 'o = new Enemy1();' Line Number: 423
User prompt
Please fix the bug: 'ReferenceError: Enemy1 is not defined' in or related to this line: 'o = new Enemy1();' Line Number: 423
User prompt
Please fix the bug: 'ReferenceError: Obstacle is not defined' in or related to this line: 'o = new Obstacle();' Line Number: 387
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Obstacle class: colored square, moves down, can be lane or boss var Obstacle = Container.expand(function () { var self = Container.call(this); // Default: normal obstacle self.isBoss = false; self.lane = 0; // 0-3 self.speed = 10; // will be set per stage // Removed color property; asset color is now determined by image asset only self.size = 220; // will be set per obstacle self.passed = false; // for boss logic // Attach asset (always use image asset for obstacles) // The color property is not used; asset key must be set by caller after construction var box = null; self.setAsset = function (assetKey) { // Defensive: ensure assetKey is a string and not undefined/null if (typeof assetKey !== "string" || !assetKey || assetKey.length === 0) { // fallback to a default asset to avoid crash assetKey = "obstacle_0x007aff"; } self.removeChildren(); box = self.attachAsset(assetKey, { width: self.size, height: self.size, anchorX: 0.5, anchorY: 0.5 }); }; // For boss, we will override asset in code // Update per tick self.update = function () { self.y += self.speed; }; // For boss, we can flash or animate self.flash = function () { tween(box, { tint: 0xffffff }, { duration: 100, onFinish: function onFinish() { tween(box, { tint: self.color }, { duration: 200 }); } }); }; return self; }); // Player class: colored square, can switch lanes var Player = Container.expand(function () { var self = Container.call(this); self.lane = 1; // 0-3, start in lane 1 (second from left) self.size = 180; // Removed color property; asset color is now determined by image asset only var playerBox = self.attachAsset('player', { width: self.size, height: self.size, anchorX: 0.5, anchorY: 0.5 }); // Head direction: 1 = right, -1 = left self.headDirection = 1; // Flip head to right self.lookRight = function () { if (self.headDirection !== 1) { playerBox.scaleX = 1; self.headDirection = 1; } }; // Flip head to left self.lookLeft = function () { if (self.headDirection !== -1) { playerBox.scaleX = -1; self.headDirection = -1; } }; // Move to lane (0-3) self.moveToLane = function (lane) { self.lane = lane; self.x = laneToX(lane); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x181818 }); /**** * Game Code ****/ // Use the original asset at its native resolution and scale to fit the screen for best quality // Define 18 unique obstacle assets, one for each color // --- BACKGROUND IMAGE --- var arkaPlanBg = LK.getAsset('arkaPlan', { anchorX: 0, anchorY: 0, x: 0, y: 0, width: 2048, height: 2732 }); game.addChildAt(arkaPlanBg, 0); // Add as the very first child so it's always behind // --- LANE SYSTEM --- var NUM_LANES = 4; var LANE_WIDTH = 400; // 2048/4 = 512, but leave margin var LANE_MARGIN = (2048 - NUM_LANES * LANE_WIDTH) / 2; // center lanes function laneToX(lane) { // Center of each lane return LANE_MARGIN + LANE_WIDTH * lane + LANE_WIDTH / 2; } // --- PLAYER --- var player = new Player(); player.y = 2732 - 550; // 350px from bottom player.moveToLane(1); // Start in lane 1 game.addChild(player); // --- PLAYER CLICK BONUS (+50 health on 3rd click, only once) --- var playerClickCount = 0; var playerBonusGiven = false; player.down = function (x, y, obj) { if (gameOver || youWin || durdurmaEkraniOverlay) { return; } if (playerBonusGiven) { return; } playerClickCount++; if (playerClickCount === 3 && !playerBonusGiven) { playerBonusGiven = true; var prevHealth = health; health = Math.min(maxHealth, health + 50); updateHealthText(); // Animate health bar green if health increased if (health > prevHealth) { tween.stop(healthTxt, { tint: true, scaleX: true, scaleY: true }); healthTxt.scale.set(1, 1); var originalTint = typeof healthTxt.tint !== "undefined" ? healthTxt.tint : 0xFFFFFF; healthTxt.tint = 0x00ff00; tween(healthTxt, { scaleX: 1.5, scaleY: 1.5 }, { duration: 180, easing: tween.cubicOut, onFinish: function onFinish() { tween(healthTxt, { scaleX: 1, scaleY: 1 }, { duration: 220, easing: tween.cubicIn }); } }); tween(healthTxt, { tint: originalTint }, { duration: 400, easing: tween.linear }); } } }; // --- HEALTH --- var maxHealth = 100; var health = maxHealth; // Health bar image and health percent text // Center canBari image vertically in top bar, and enlarge health percent text var canBariImg = LK.getAsset('canBari', { anchorX: 0.75, anchorY: 0.5, x: 120, y: 120, // move down a bit for better centering width: 480, height: 180 }); LK.gui.top.addChild(canBariImg); // Make health percent text much larger and vertically centered with canBari image var healthTxt = new Text2('100%', { size: 50, fill: 0xFFFFFF }); // healthTxt.anchor.set(4, 0.50); // Bu satırı değiştireceğiz. healthTxt.anchor.set(3.6, 0.5); // Metni sola hizala ve dikeyde ortala // Place health text to the right of the canBari image, vertically centered healthTxt.x = canBariImg.x + canBariImg.width * 0.75 + 40; // canBariImg'nin sağ tarafına göre ayarla healthTxt.y = canBariImg.y; LK.gui.top.addChild(healthTxt); // --- OBSTACLE PASS COUNTER --- var obstaclesPassed = 0; var passCounterTxt = new Text2('0', { size: 70, fill: 0xffff00, font: "italic bold Arial, 'GillSans-Bold', Impact, 'Arial Black', Tahoma" }); passCounterTxt.anchor.set(1, 0); // right align LK.gui.topRight.addChild(passCounterTxt); // --- STAGE IMAGE DISPLAY (bottom left) --- var stageImageKeys = ['bolum1', 'bolum2', 'bolum3', 'bolum4', 'bossGorsel']; var stageImageAssets = []; for (var i = 0; i < stageImageKeys.length; i++) { var img = LK.getAsset(stageImageKeys[i], { anchorX: -3.5, anchorY: 9, x: 0, y: 0, width: 300, height: 220 }); img.visible = false; stageImageAssets.push(img); LK.gui.bottomLeft.addChild(img); } // Show only the boss stage image for (var si = 0; si < stageImageAssets.length; si++) { stageImageAssets[si].visible = si === 4; } // --- MENU BILGI ICON (bottom left) --- var menuBilgiImg = LK.getAsset('menuBilgi', { anchorX: 0, anchorY: 1, x: 20, y: 0, width: 220, height: 120 }); LK.gui.bottomLeft.addChild(menuBilgiImg); // --- DURDURMA EKRANI (pause overlay) --- var durdurmaEkraniOverlay = null; var isPausedByMenu = false; function showDurdurmaEkrani() { if (durdurmaEkraniOverlay) { return; } isPausedByMenu = true; // LK.pauseGame() is not needed; LK will automatically pause the game when an overlay is shown. // Create overlay asset, full screen durdurmaEkraniOverlay = LK.getAsset('durdurmaEkrani', { anchorX: 0, anchorY: 0, x: 0, y: 0, width: 2048, height: 2732 }); // Overlay should be on top of everything game.addChild(durdurmaEkraniOverlay); // Clicking anywhere on overlay resumes game durdurmaEkraniOverlay.down = function (x, y, obj) { hideDurdurmaEkrani(); }; } function hideDurdurmaEkrani() { if (!durdurmaEkraniOverlay) { return; } // Remove overlay durdurmaEkraniOverlay.destroy(); durdurmaEkraniOverlay = null; isPausedByMenu = false; // No need to call LK.resumeGame(); LK will automatically resume when overlay is removed } // Click handler for menuBilgi icon menuBilgiImg.down = function (x, y, obj) { if (!durdurmaEkraniOverlay) { showDurdurmaEkrani(); } }; // --- SOUND OFF ICON (bottom right) --- var sesKapamaImg = LK.getAsset('sesKapama', { anchorX: 1, anchorY: 1, x: 0, y: 0, width: 280, height: 180 }); LK.gui.bottomRight.addChild(sesKapamaImg); // --- SOUND MUTE STATE --- var isMuted = false; // Helper: set mute state for all sounds function setMuteState(mute) { isMuted = mute; // Set alpha for sesKapama icon sesKapamaImg.alpha = mute ? 0.4 : 1.0; // Mute/unmute all sounds var soundKeys = []; if (LK.assets && LK.assets.sounds) { soundKeys = Object.keys(LK.assets.sounds); } for (var i = 0; i < soundKeys.length; i++) { var s = LK.getSound(soundKeys[i]); if (s && typeof s.mute === "function") { s.mute(mute); } else if (s && typeof s.setVolume === "function") { s.setVolume(mute ? 0 : 1); } } // Mute/unmute all music var musicKeys = []; if (LK.assets && LK.assets.music) { musicKeys = Object.keys(LK.assets.music); } for (var j = 0; j < musicKeys.length; j++) { var m = LK.getMusic ? LK.getMusic(musicKeys[j]) : null; if (m && typeof m.mute === "function") { m.mute(mute); } else if (m && typeof m.setVolume === "function") { m.setVolume(mute ? 0 : 1); } } } // Initial state: not muted setMuteState(false); // Click handler for sesKapama icon sesKapamaImg.down = function (x, y, obj) { setMuteState(!isMuted); }; // --- OBSTACLES --- var obstacles = []; // Removed obstacleColors array; asset is determined by image asset only // --- STAGES --- var STAGES = [ // [numObstacles, speed, damage, minGap, maxGap] // Slower pace: more obstacles, lower speed { count: 45, speed: 10, damage: 10, minGap: 420, maxGap: 600 }, { count: 65, speed: 13, damage: 15, minGap: 370, maxGap: 540 }, { count: 120, speed: 18, damage: 20, minGap: 220, maxGap: 340 }, { count: 180, speed: 22, damage: 25, minGap: 160, maxGap: 260 }]; var currentStage = 0; var obstaclesSpawned = 0; var stageObstacleTypes = 18; // 18 unique types var stageInProgress = false; var bossMode = true; // Start directly in boss mode var bossHits = 0; // First two stages: bossRequired = 10, then increase for later stages var bossRequiredByStage = [10, 10, 15, 22]; var bossRequired = 35; // Always require 35 for boss section // --- SPAWN CONTROL --- var spawnTimer = 0; var spawnInterval = 40; // ticks between spawns, will be randomized per stage function randomInt(a, b) { return a + Math.floor(Math.random() * (b - a + 1)); } // --- BOSS --- var bossObstacle = null; var bossActive = false; var bossCooldown = 0; // --- GAME STATE --- var gameOver = false; var youWin = false; // --- INIT OBSTACLE ASSETS (shapes) --- // (No obstacleColors array needed; assets are initialized in Assets section) // --- SPAWN OBSTACLE --- // --- Randomize enemy order for each stage --- if (typeof obstacleTypeOrder === "undefined" || obstaclesSpawned === 0) { // 18 color obstacles + 3 image enemies var colorKeys = ['0x007aff', '0x22223b', '0x30b0c7', '0x34c759', '0x393e46', '0x4cd964', '0x5856d6', '0x5ac8fa', '0x8e8e93', '0x9d4edd', '0xaf52de', '0xe94f37', '0xf28d35', '0xfad02e', '0xff2d55', '0xff3b30', '0xff9500', 'baskanKamera', 'pradaMont', 'beFair']; // Shuffle colorKeys to create a random order obstacleTypeOrder = []; for (var i = 0; i < colorKeys.length; i++) { obstacleTypeOrder.push(colorKeys[i]); } // Fisher-Yates shuffle for (var i = obstacleTypeOrder.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = obstacleTypeOrder[i]; obstacleTypeOrder[i] = obstacleTypeOrder[j]; obstacleTypeOrder[j] = temp; } obstacleTypeOrderIdx = 0; } function spawnObstacle(stage) { var o = new Obstacle(); // Pick random lane var lane = randomInt(0, NUM_LANES - 1); o.lane = lane; o.x = laneToX(lane); o.y = -120; // just above screen // Use randomized order for obstacle types if (typeof obstacleTypeOrder === "undefined" || typeof obstacleTypeOrderIdx === "undefined") { // fallback in case of error obstacleTypeOrder = ['0x007aff']; obstacleTypeOrderIdx = 0; } var colorKeys = obstacleTypeOrder; var colorIdx = obstacleTypeOrderIdx % colorKeys.length; var key = colorKeys[colorIdx]; obstacleTypeOrderIdx++; // If key is a color, use obstacle_ prefix, else use as image asset if (key === 'baskanKamera' || key === 'pradaMont' || key === 'beFair') { o.size = 340; // Slightly larger for image-based enemies o.speed = stage.speed; o.setAsset(key); } else { o.size = 320; o.speed = stage.speed; o.setAsset('obstacle_' + key); } obstacles.push(o); game.addChild(o); obstaclesSpawned++; } // --- SPAWN BOSS --- function spawnBoss() { var o = new Obstacle(); o.isBoss = true; o.size = 520; // Increased from 320 to 520 for a much larger boss // Removed color assignment; asset is determined by image asset only o.speed = 32; // Boss lane: random o.lane = randomInt(0, NUM_LANES - 1); o.x = laneToX(o.lane); o.y = -180; o.setAsset('boss'); bossObstacle = o; bossActive = true; game.addChild(o); } // --- HEALTH UPDATE --- function updateHealthText() { var pct = Math.max(0, Math.round(health)); healthTxt.setText(pct + "%"); } // --- GAME OVER --- function triggerGameOver() { if (gameOver) { return; } gameOver = true; LK.effects.flashScreen(0xff0000, 800); // Show obstacles passed on game over screen LK.showGameOver({ score: obstaclesPassed }); } // --- YOU WIN --- function triggerYouWin() { if (youWin) { return; } youWin = true; LK.effects.flashScreen(0x00ff00, 800); LK.showYouWin(); } // --- PLAYER INPUT: LANE SWITCHING --- // Touch/click left/right half of screen to move game.down = function (x, y, obj) { if (gameOver || youWin || durdurmaEkraniOverlay) { return; } // Convert to game coordinates var lane = player.lane; if (x < 2048 / 2) { // Move left if (lane > 0) { lane--; } player.lookLeft && player.lookLeft(); } else { // Move right if (lane < NUM_LANES - 1) { lane++; } player.lookRight && player.lookRight(); } player.moveToLane(lane); }; // --- GAME UPDATE --- game.update = function () { if (gameOver || youWin) { return; } // Pause all game logic if durdurmaEkrani overlay is visible if (durdurmaEkraniOverlay) { return; } // --- SPAWN OBSTACLES --- // (Skip all normal stage logic, only run boss logic) // --- OBSTACLE MOVEMENT & COLLISION --- for (var i = obstacles.length - 1; i >= 0; i--) { var o = obstacles[i]; o.update(); // Remove if off screen if (o.y > 2732 + 120) { o.destroy(); obstacles.splice(i, 1); obstaclesPassed++; passCounterTxt.setText(obstaclesPassed + ""); // --- Play random sound (except kartal) every 40 obstaclesPassed --- if (typeof lastSoundTrigger === "undefined") { lastSoundTrigger = 0; } if (obstaclesPassed > 0 && obstaclesPassed % 30 === 0 && lastSoundTrigger !== obstaclesPassed && !isMuted) { // List of all sound keys except 'kartal' var allSoundKeys = ['ahmetAbi', 'buSeneSampFener', 'dikDurEgilme', 'elNesiri', 'fenerBogasi', 'gitme', 'isteBuBe', 'osimhenOzel', 'oyleBirTakim', 'tekBasima']; // Pick a random sound var idx = Math.floor(Math.random() * allSoundKeys.length); var soundKey = allSoundKeys[idx]; var soundObj = LK.getSound(soundKey); if (soundObj && typeof soundObj.play === "function") { soundObj.play(); } lastSoundTrigger = obstaclesPassed; } // Play isteBuBe sound only at 300 obstacles passed if (obstaclesPassed === 300 && !isMuted) { var isteBuBeSound = LK.getSound('isteBuBe'); if (isteBuBeSound && typeof isteBuBeSound.play === "function") { isteBuBeSound.play(); } } continue; } // Collision with player if (!o.isBoss && o.lane === player.lane) { // Check overlap in y var dy = Math.abs(o.y - player.y); if (dy < (o.size + player.size) / 2 - 10) { // Hit! var prevHealth = health; health -= STAGES[currentStage].damage; // Animate health bar red for health decrease tween.stop(healthTxt, { tint: true, scaleX: true, scaleY: true }); healthTxt.scale.set(1, 1); var originalTint = typeof healthTxt.tint !== "undefined" ? healthTxt.tint : 0xFFFFFF; healthTxt.tint = 0xff0000; tween(healthTxt, { scaleX: 1.5, scaleY: 1.5 }, { duration: 180, easing: tween.cubicOut, onFinish: function onFinish() { tween(healthTxt, { scaleX: 1, scaleY: 1 }, { duration: 220, easing: tween.cubicIn }); } }); tween(healthTxt, { tint: originalTint }, { duration: 400, easing: tween.linear }); updateHealthText(); o.destroy(); obstacles.splice(i, 1); if (health <= 0) { triggerGameOver(); return; } } } } // --- BOSS LOGIC --- if (bossMode) { // Make boss spawn more frequently by reducing cooldown if (!bossActive && bossCooldown <= 0) { spawnBoss(); } else if (bossCooldown > 0) { // Reduce cooldown for higher boss spawn frequency (was 32, now 10) bossCooldown--; } if (bossActive && bossObstacle) { bossObstacle.update(); // --- Play kartal sound at the middle of boss section, only once --- if (typeof kartalSoundPlayed === "undefined") { kartalSoundPlayed = false; } // Play at 18th boss (middle of 35), only once if (!kartalSoundPlayed && bossHits === 17 && !isMuted) { var kartalSound = LK.getSound('kartal'); if (kartalSound && typeof kartalSound.play === "function") { kartalSound.play(); } kartalSoundPlayed = true; } // Remove if off screen if (bossObstacle.y > 2732 + 200) { // Player dodged boss bossHits++; bossActive = false; bossObstacle.destroy(); bossObstacle = null; // Reduce cooldown for next boss spawn (was 32, now 10) bossCooldown = 10; // Require 35 bosses to win in boss section if (bossHits >= 35) { triggerYouWin(); return; } } else { // Collision with player if (bossObstacle.lane === player.lane) { var dy = Math.abs(bossObstacle.y - player.y); if (dy < (bossObstacle.size + player.size) / 2 - 10) { // Boss hit: instant game over LK.effects.flashObject(player, 0xff0000, 600); triggerGameOver(); return; } } } } } }; // --- INITIAL HEALTH DISPLAY --- updateHealthText();
===================================================================
--- original.js
+++ change.js
@@ -227,10 +227,12 @@
img.visible = false;
stageImageAssets.push(img);
LK.gui.bottomLeft.addChild(img);
}
-// Show the first stage image
-stageImageAssets[0].visible = true;
+// Show only the boss stage image
+for (var si = 0; si < stageImageAssets.length; si++) {
+ stageImageAssets[si].visible = si === 4;
+}
// --- MENU BILGI ICON (bottom left) ---
var menuBilgiImg = LK.getAsset('menuBilgi', {
anchorX: 0,
anchorY: 1,
@@ -365,14 +367,14 @@
}];
var currentStage = 0;
var obstaclesSpawned = 0;
var stageObstacleTypes = 18; // 18 unique types
-var stageInProgress = true;
-var bossMode = false;
+var stageInProgress = false;
+var bossMode = true; // Start directly in boss mode
var bossHits = 0;
// First two stages: bossRequired = 10, then increase for later stages
var bossRequiredByStage = [10, 10, 15, 22];
-var bossRequired = bossRequiredByStage[currentStage] || 22;
+var bossRequired = 35; // Always require 35 for boss section
// --- SPAWN CONTROL ---
var spawnTimer = 0;
var spawnInterval = 40; // ticks between spawns, will be randomized per stage
function randomInt(a, b) {
@@ -511,130 +513,9 @@
if (durdurmaEkraniOverlay) {
return;
}
// --- SPAWN OBSTACLES ---
- if (!bossMode) {
- var stage = STAGES[currentStage];
- if (obstaclesSpawned < stage.count) {
- if (spawnTimer <= 0) {
- spawnObstacle(stage);
- // Randomize next spawn interval
- spawnInterval = randomInt(stage.minGap, stage.maxGap) / stage.speed;
- spawnTimer = Math.max(18, Math.floor(spawnInterval));
- } else {
- spawnTimer--;
- }
- } else if (obstacles.length === 0) {
- // Stage complete, next stage or boss
- if (currentStage < STAGES.length - 1) {
- // fenerBogasi sound removed as requested
- currentStage++;
- obstaclesSpawned = 0;
- // Update stage image visibility
- for (var si = 0; si < stageImageAssets.length; si++) {
- stageImageAssets[si].visible = si === currentStage;
- }
- // Health bonus at the start of each stage if health is not 100%
- if (health < maxHealth) {
- var healthBefore = health;
- if (currentStage === 1) {
- health = Math.min(maxHealth, health + 20);
- } else if (currentStage === 2) {
- health = Math.min(maxHealth, health + 30);
- } else if (currentStage === 3) {
- health = Math.min(maxHealth, health + 40);
- }
- updateHealthText();
- // Animate health bar green if health increased
- if (health > healthBefore) {
- tween.stop(healthTxt, {
- tint: true,
- scaleX: true,
- scaleY: true
- });
- healthTxt.scale.set(1, 1);
- var originalTint = typeof healthTxt.tint !== "undefined" ? healthTxt.tint : 0xFFFFFF;
- healthTxt.tint = 0x00ff00;
- tween(healthTxt, {
- scaleX: 1.5,
- scaleY: 1.5
- }, {
- duration: 180,
- easing: tween.cubicOut,
- onFinish: function onFinish() {
- tween(healthTxt, {
- scaleX: 1,
- scaleY: 1
- }, {
- duration: 220,
- easing: tween.cubicIn
- });
- }
- });
- tween(healthTxt, {
- tint: originalTint
- }, {
- duration: 400,
- easing: tween.linear
- });
- }
- }
- // Update bossRequired for new stage
- bossRequired = bossRequiredByStage[currentStage] || 22;
- } else {
- // All stages done, boss time!
- // fenerBogasi sound removed as requested
- // Boss health bonus if not 100%
- if (health < maxHealth) {
- var healthBefore = health;
- health = Math.min(maxHealth, health + 50);
- updateHealthText();
- // Animate health bar green if health increased
- if (health > healthBefore) {
- tween.stop(healthTxt, {
- tint: true,
- scaleX: true,
- scaleY: true
- });
- healthTxt.scale.set(1, 1);
- var originalTint = typeof healthTxt.tint !== "undefined" ? healthTxt.tint : 0xFFFFFF;
- healthTxt.tint = 0x00ff00;
- tween(healthTxt, {
- scaleX: 1.5,
- scaleY: 1.5
- }, {
- duration: 180,
- easing: tween.cubicOut,
- onFinish: function onFinish() {
- tween(healthTxt, {
- scaleX: 1,
- scaleY: 1
- }, {
- duration: 220,
- easing: tween.cubicIn
- });
- }
- });
- tween(healthTxt, {
- tint: originalTint
- }, {
- duration: 400,
- easing: tween.linear
- });
- }
- }
- bossMode = true;
- bossHits = 0;
- bossCooldown = 30;
- // Update stage image visibility for boss
- for (var si = 0; si < stageImageAssets.length; si++) {
- stageImageAssets[si].visible = si === 4;
- }
- // Set bossRequired for final stage if not already set
- bossRequired = 35;
- }
- }
- }
+ // (Skip all normal stage logic, only run boss logic)
// --- OBSTACLE MOVEMENT & COLLISION ---
for (var i = obstacles.length - 1; i >= 0; i--) {
var o = obstacles[i];
o.update();
A very sweet yellow canary bird. In-Game asset. 2d. High contrast. No shadows
Create an image that says The Special One. The words should be written one under the other. It should be in a retro theme. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Create a visual that says 15 Million Euros. All the words should be written under each other. It should be in a retro theme. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Sarı kırmızı çizgili forma oluştur , formanın arkasında "A.KOC " yazsın , numarası da 25 numara olsun . Retro temada olsun . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Create a big skyscraper. Make it yellow, red and navy blue. Write "YAPI" underneath. Make it retro themed. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Bana can barı oluştur . Yatay bir şekilde tüp şeklinde olsun . tüpte can barı full dolu olsun. Yanları oval olsun , klasik oyunlarda ki can barına da benzer bir yapıda olsun . Retro temada olsun . . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Arka planı olmayan bir volume yazısı ses resmi oluştur , retro temada olsun. renkleri sarı lacivert olsun . yatay olsun olabildiğince dikey olmasın In-Game asset. 2d. High contrast. No shadows
Menu yazan yatay bir resim oluştur . Arka Planı olmasın . Sarı Lacivert bir resim olsun. retro temada olsun. In-Game asset. 2d. High contrast. No shadows
siyah renk prada montlu bir adam görseli oluştur , bu montu giyen adam sarı şapkalı , siyah güneş gözlüklü , hafif kirli sakallı bir tip olsun. prada yerine görselde "BRADA" yazsın In-Game asset. 2d. High contrast. No shadows
2025 - 2026 Türkiye Süper Ligi Şampiyonu Kupası oluştur , kupanınn üstünde FENERBAHÇE yazsın. soluk renklerde olsun , retro temada olsun In-Game asset. 2d. High contrast. No shadows
taraftarlarla kavga eden bir fenerbahce başkanı oluştur , başkan takım elbise giyiyor olsun , başkanın tipi ali koca benzesin . taraftarlar da sarı fb forması giyen taraftar olsunlar. In-Game asset. 2d. High contrast. No shadows
Oto yıkama ile alakalı bir görsel oluştur . Bu görselin altında 3.5M Euro yazsın. Retro temada bir görsel olsun .. In-Game asset. 2d. High contrast. No shadows
Beyaz bir megafon görseli oluştur . Retro temada olsun !. In-Game asset. 2d. High contrast. No shadows
Fenerbahçe logosuna benzer bir logo oluştur ama telif haklarından logonun aynısı olmasın Logoda Fenerbahçe değilde Fener yazsın sadece . Bu logonun üstüne de 5 yıldız koy . retro temada olsun !. In-Game asset. 2d. High contrast. No shadows
"22 Yıl" bordo renk "20 Yıl" kırmızı renk "15 Yıl" beyaz renk şeklinde bir görsel oluştur , üstü X şeklinde olsun . retro temada olsun !. In-Game asset. 2d. High contrast. No shadows. 2
Bir adet şampiyonluk kupası oluştur , bu kupa full kırmzı renkte olsun . Kupanın boynuzları olsun , şeytanın boynuzları gibi . retro temada olsun !. In-Game asset. 2d. High contrast. No shadows
Bir şampiyonluk kupası oluştur , kupanın altında 7 yazsın , kupanın üstü de çarpı şeklinde olsun . 7 yıldır şampiyon olunmuyoru anlatan bir tarzda olsun . retro temada olsun .. In-Game asset. 2d. High contrast. No shadows
Sarı lacivert bir doğum günü pastası oluştur , 2 tane mumlu . Bu pastanın üstünde "25 Bin Kişi" yazsın . retro temada olsun .. In-Game asset. 2d. High contrast. No shadows
Bir uçak bileti oluştur . Yolcunun adı T.T.S olsun . Uçak bileti siyah beyaz olsun . Ucağın rotası Adana -> Kadıköy olsun . Yolcunun fotosu kartal olsun . retro temada olsun .. In-Game asset. 2d. High contrast. No shadows
Fener adlı mavi tikli bir twitter sayfasının adana kebab paylaştığı bir görsel oluştur . retro temada olsun !. In-Game asset. 2d. High contrast. No shadows
2011 futbol şampiyonluk kupası resmi oluştur . Bu kupayı alttan birden fazla el kaldırıyor olsun . kupa altın sarısı renkte olsun . retro temada olsun !. In-Game asset. 2d. High contrast. No shadows
Beyaz plastik sandalye ve masa da oturan volkan demiren görseli oluştur . bu görsel de volkan demirel Lacivert eşofman takımı giyiyor olsun . retro temada olsun !. In-Game asset. 2d. High contrast. No shadows
Beyaz bir t-shirt oluştur . üsütünde beFair yazsın t-shirtün . be beyaz Fair mor renkte olsun . retro temada olsun. In-Game asset. 2d. High contrast. No shadows
Borsa grafiği oluştur grafiğin yönü aşağı yönde olsun .Altında "4.8 SOLD" şeklinde bir yazı yazsın . retro temada olsun !. In-Game asset. 2d. High contrast. No shadows
Galatasaray logosuna benzer bir logo oluştur "Gala" yazsın . Üstünde de 5 yıldız olsun . retro temada olsun .. In-Game asset. 2d. High contrast. No shadows
Kalp şeklinde görsel oluştur , kırmızı şeklinde olsun kalp . retro tasarımda olsun .. In-Game asset. 2d. High contrast. No shadows
Her el kalbe tıklayarak +50 can alabilirsiniz." yazan bir yazı oluştur . Dikey formatta olsun . Retro temada olsun , arka plan soluk renklerde sarı lacivert olsun . Yazı formatı çok büyük olmasın . Yazılar ekranda rahat rahat okunabilsin . Yazılar tüm ekranı kaplamasın . Oluşturacağın görselin alt ve üstünde boşluklar olsun , yazı ortada olsun görselde ! In-Game asset. 2d. High contrast. No shadows
Kara bir yazı tahtası oluştur , bu tahtada "Kadıköy Hatırası " yazsın . retro temada olsun .. In-Game asset. 2d. High contrast. No shadows
Bir iş adamı karakteri oluştur , Acun ılıcalıya benzesin karakter. Karakterin üstünde konuşma balonuna benzer bir balon olsun. Bu balonun içinde "Eğer seçilemezsek başkan hayatına devam e..." yazsın . Görsel Retro temada olsun !. In-Game asset. 2d. High contrast. No shadows
Ali Koça Sinirle konuşan bir başkan karakteri oluştur . Bu karakter Ali Koça benzesin . Bu karakterin tepesinde bir konuşma baloncuğu olsun . Bu baloncukta "Vefasızlar , Aşağılık , Ciğeri beş para etmeyenler " yazsın . Retro temada olsun !. In-Game asset. 2d. High contrast. No shadows
fenerBogasi
Sound effect
isteBuBe
Sound effect
ahmetAbi
Sound effect
buSeneSampFener
Sound effect
dikDurEgilme
Sound effect
elNesiri
Sound effect
gitme
Sound effect
kartal
Sound effect
osimhenOzel
Sound effect
oyleBirTakim
Sound effect
tekBasima
Sound effect
asalik
Sound effect
ikiside
Sound effect