/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var DialogSystem = Container.expand(function () { var self = Container.call(this); var dialogBorder = self.attachAsset('dialogBoxBorder', { anchorX: 0.5, anchorY: 0.5 }); var dialogBg = self.attachAsset('dialogBox', { anchorX: 0.5, anchorY: 0.5 }); self.nameText = new Text2('', { size: 40, fill: 0xFFD700 }); self.nameText.anchor.set(0.5, 0.5); self.nameText.x = 0; self.nameText.y = -60; self.addChild(self.nameText); self.dialogText = new Text2('', { size: 32, fill: 0xFFFFFF }); self.dialogText.anchor.set(0.5, 0.5); self.dialogText.x = 0; self.dialogText.y = 0; self.addChild(self.dialogText); self.continueButton = self.attachAsset('button', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 60 }); self.continueText = new Text2('Devam Et', { size: 24, fill: 0xFFFFFF }); self.continueText.anchor.set(0.5, 0.5); self.continueText.x = 0; self.continueText.y = 60; self.addChild(self.continueText); self.visible = false; self.show = function (name, text) { self.nameText.setText(name); self.dialogText.setText(text); self.visible = true; }; self.hide = function () { self.visible = false; }; self.down = function (x, y, obj) { if (self.visible) { self.hide(); LK.getSound('click').play(); } }; return self; }); var ElementalChick = Container.expand(function (element, name, dialogText) { var self = Container.call(this); var assetName = element + 'Chick'; var elementalChickGraphics = self.attachAsset(assetName, { anchorX: 0.5, anchorY: 1.0 }); self.name = name; self.dialogText = dialogText; self.element = element; self.hasBeenTalkedTo = false; self.down = function (x, y, obj) { showDialog(self.name, self.dialogText); self.hasBeenTalkedTo = true; LK.getSound('click').play(); }; return self; }); var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('darkFox', { anchorX: 0.5, anchorY: 1.0 }); self.health = 100; self.maxHealth = 100; self.speed = 1; self.direction = 1; self.isActive = false; self.activate = function () { self.isActive = true; }; self.update = function () { if (self.isActive) { self.x += self.speed * self.direction; if (self.x > 1900 || self.x < 150) { self.direction *= -1; } } }; self.takeDamage = function (damage) { self.health -= damage; LK.effects.flashObject(self, 0xff0000, 300); if (self.health <= 0) { self.defeat(); } }; self.defeat = function () { self.isActive = false; tween(self, { alpha: 0, scaleX: 0.1, scaleY: 0.1 }, { duration: 500, onFinish: function onFinish() { gamePhase = 'level_2'; // Show Kara Savaşçı and elemental chicks karaSavasci.visible = true; fireChick.visible = true; waterChick.visible = true; earthChick.visible = true; airChick.visible = true; showDialog('Haşmet Baba', 'Kara Tilki yenildi! Artık krallığımız güvende. Şimdi 2. seviyeye geçme zamanı geldi!'); // After a delay, introduce Kara Savaşçı and elemental chicks LK.setTimeout(function () { showDialog('Kara Savaşçı', 'Merhaba genç kral! Ben Kara Savaşçı. Kara Tilki bir testti. Elemental civcivlerle krallığı koruduk!'); }, 3000); } }); }; self.down = function (x, y, obj) { if (self.isActive) { self.takeDamage(20); LK.getSound('click').play(); } }; return self; }); var HackerEnemy = Container.expand(function () { var self = Container.call(this); var hackerGraphics = self.attachAsset('hacker', { anchorX: 0.5, anchorY: 1.0 }); self.health = 40; self.speed = 2; self.direction = 1; self.isActive = false; self.activate = function () { self.isActive = true; }; self.update = function () { if (self.isActive) { self.x += self.speed * self.direction; if (self.x > 1850 || self.x < 150) { self.direction *= -1; } } }; self.takeDamage = function (damage) { self.health -= damage; LK.effects.flashObject(self, 0x0000ff, 200); if (self.health <= 0) { self.defeat(); } }; self.defeat = function () { self.isActive = false; tween(self, { alpha: 0, scaleX: 0.1, scaleY: 0.1 }, { duration: 300, onFinish: function onFinish() { self.destroy(); } }); }; self.down = function (x, y, obj) { if (self.isActive) { self.takeDamage(20); LK.getSound('click').play(); } }; return self; }); var Herobrine = Container.expand(function () { var self = Container.call(this); var herobrineGraphics = self.attachAsset('herobrine', { anchorX: 0.5, anchorY: 1.0 }); self.health = 200; self.maxHealth = 200; self.speed = 2; self.direction = 1; self.isActive = false; self.lastAttackTime = 0; self.activate = function () { self.isActive = true; }; self.update = function () { if (self.isActive) { self.x += self.speed * self.direction; if (self.x > 1800 || self.x < 200) { self.direction *= -1; } // Attack pattern if (LK.ticks - self.lastAttackTime > 120) { self.lastAttackTime = LK.ticks; LK.effects.flashObject(self, 0xff0000, 200); } } }; self.takeDamage = function (damage) { self.health -= damage; LK.effects.flashObject(self, 0xff0000, 300); if (self.health <= 0) { self.defeat(); } }; self.defeat = function () { self.isActive = false; tween(self, { alpha: 0, scaleX: 0.1, scaleY: 0.1 }, { duration: 1000, onFinish: function onFinish() { showDialog('Haşmet Baba', 'Herobrine yenildi! Krallığımız sonunda huzura kavuştu. Oyun tamamlandı!'); LK.setTimeout(function () { LK.showYouWin(); }, 3000); } }); }; self.down = function (x, y, obj) { if (self.isActive) { self.takeDamage(30); LK.getSound('click').play(); } }; return self; }); var KaraSavasci = Container.expand(function () { var self = Container.call(this); var karaSavasciGraphics = self.attachAsset('karaSavasci', { anchorX: 0.5, anchorY: 1.0 }); self.name = 'Kara Savaşçı'; self.dialogText = 'Kara Tilki bir testti. Civcivleri eğittim. Artık gerçek güç zamanı!'; self.hasBeenTalkedTo = false; self.down = function (x, y, obj) { showDialog(self.name, self.dialogText); self.hasBeenTalkedTo = true; LK.getSound('click').play(); // After talking to Kara Savaşçı, transition to republic council if (gamePhase === 'level_2') { LK.setTimeout(function () { gamePhase = 'republic_council'; showDialog('Haşmet Baba', 'Halkımız! Krallığımızı bir Cumhuriyet yapmak için karar verme zamanı geldi. Herkes oy verecek!'); }, 2000); } }; return self; }); var King = Container.expand(function () { var self = Container.call(this); var kingGraphics = self.attachAsset('kingCharacter', { anchorX: 0.5, anchorY: 1.0 }); self.speed = 3; self.targetX = null; self.isMoving = false; self.moveTo = function (x) { self.targetX = x; self.isMoving = true; }; self.update = function () { if (self.isMoving && self.targetX !== null) { var dx = self.targetX - self.x; if (Math.abs(dx) > self.speed) { self.x += dx > 0 ? self.speed : -self.speed; } else { self.x = self.targetX; self.isMoving = false; self.targetX = null; } } }; return self; }); var NPC = Container.expand(function (type, name, dialogText) { var self = Container.call(this); var assetName = 'npcRooster'; // default if (type === 'rooster') assetName = 'npcRooster';else if (type === 'hen') assetName = 'npcHen';else if (type === 'chick') assetName = 'npcChick';else if (type === 'queen') assetName = 'queenCharacter';else if (type === 'poet') assetName = 'poetCharacter';else if (type === 'messenger') assetName = 'messengerCharacter';else if (type === 'hero') assetName = 'heroRooster'; var npcGraphics = self.attachAsset(assetName, { anchorX: 0.5, anchorY: 1.0 }); self.name = name; self.dialogText = dialogText; self.hasBeenTalkedTo = false; self.down = function (x, y, obj) { showDialog(self.name, self.dialogText); self.hasBeenTalkedTo = true; LK.getSound('click').play(); // Mark quest progress if (self.name === 'Cesur Horoz') questProgress.talkedToCesur = true;else if (self.name === 'Şefkatli Tavuk') questProgress.talkedToTavuk = true;else if (self.name === 'Umut Civciv') questProgress.talkedToCivciv = true;else if (self.name === 'Zümrüt Ana') questProgress.talkedToZumrut = true;else if (self.name === 'Ozan İsmet Baba') questProgress.talkedToIsmet = true;else if (self.name === 'Kuyruklu Kâmil') questProgress.talkedToKamil = true;else if (self.name === 'Steel Wing Ahmet') questProgress.talkedToAhmet = true;else if (self.name === 'Storm Fikret') questProgress.talkedToFikret = true;else if (self.name === 'Golden Necklace Selim') questProgress.talkedToSelim = true;else if (self.name === 'Clever Nermin') questProgress.talkedToNermin = true;else if (self.name === 'Strong Gökhan') questProgress.talkedToGokhan = true;else if (self.name === 'Curious Pırıl Peri') questProgress.talkedToPiril = true;else if (self.name === 'Lightning Şahin') questProgress.talkedToSahin = true;else if (self.name === 'Black Wing Cemal') questProgress.talkedToCemal = true;else if (self.name === 'Patient Timur') questProgress.talkedToTimur = true;else if (self.name === 'Wise Yasin') questProgress.talkedToYasin = true;else if (self.name === 'Blue Mert') questProgress.talkedToMert = true;else if (self.name === 'Cheerful Samet') questProgress.talkedToSamet = true;else if (self.name === 'Dove Kadir') questProgress.talkedToKadir = true;else if (self.name === 'Emerald Zeki') questProgress.talkedToZeki = true;else if (self.name === 'Optimistic Fuat') questProgress.talkedToFuat = true;else if (self.name === 'Mighty Cengiz') questProgress.talkedToCengiz = true;else if (self.name === 'Healer Gaye') questProgress.talkedToGaye = true;else if (self.name === 'Blacksmith Deniz') questProgress.talkedToDeniz = true;else if (self.name === 'Cool-headed Alp') questProgress.talkedToAlp = true;else if (self.name === 'Clear Burak') questProgress.talkedToBurak = true; checkQuestProgress(); }; return self; }); var RobotEnemy = Container.expand(function () { var self = Container.call(this); var robotGraphics = self.attachAsset('robot', { anchorX: 0.5, anchorY: 1.0 }); self.health = 50; self.speed = 1.5; self.direction = 1; self.isActive = false; self.activate = function () { self.isActive = true; }; self.update = function () { if (self.isActive) { self.x += self.speed * self.direction; if (self.x > 1900 || self.x < 100) { self.direction *= -1; } } }; self.takeDamage = function (damage) { self.health -= damage; LK.effects.flashObject(self, 0x00ff00, 200); if (self.health <= 0) { self.defeat(); } }; self.defeat = function () { self.isActive = false; tween(self, { alpha: 0, scaleX: 0.1, scaleY: 0.1 }, { duration: 300, onFinish: function onFinish() { self.destroy(); } }); }; self.down = function (x, y, obj) { if (self.isActive) { self.takeDamage(25); LK.getSound('click').play(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ // Game state variables var gamePhase = 'introduction'; // introduction, exploration, combat, level_2, republic_council, republic_celebration, cyberpunk_kingdom var cyberpunkEnemies = []; var cyberpunkEnemySpawnTimer = 0; var questProgress = { talkedToCesur: false, talkedToTavuk: false, talkedToCivciv: false, talkedToZumrut: false, talkedToIsmet: false, talkedToKamil: false, talkedToAhmet: false, talkedToFikret: false, talkedToSelim: false, talkedToNermin: false, talkedToGokhan: false, talkedToPiril: false, talkedToSahin: false, talkedToCemal: false, talkedToTimur: false, talkedToYasin: false, talkedToMert: false, talkedToSamet: false, talkedToKadir: false, talkedToZeki: false, talkedToFuat: false, talkedToCengiz: false, talkedToGaye: false, talkedToDeniz: false, talkedToAlp: false, talkedToBurak: false }; // Create background var sky = game.attachAsset('sky', { anchorX: 0, anchorY: 0, x: 0, y: 0 }); // Create ground tiles for better coverage var groundTiles = []; for (var i = 0; i < 4; i++) { var groundTile = game.attachAsset('ground', { anchorX: 0, anchorY: 0, x: i * 800, y: 2100 }); groundTiles.push(groundTile); } // Create ground decorations var groundDecorations = []; // Add grass patches in organized rows for (var row = 0; row < 3; row++) { for (var i = 0; i < 8; i++) { var grassPatch = game.attachAsset('grassPatch', { anchorX: 0.5, anchorY: 1.0, x: 150 + i * 240 + Math.random() * 80, y: 2150 + row * 60 + Math.random() * 40 }); groundDecorations.push(grassPatch); } } // Add flowers scattered around for (var i = 0; i < 25; i++) { var flower = game.attachAsset('flower', { anchorX: 0.5, anchorY: 1.0, x: Math.random() * 1800 + 100, y: 2120 + Math.random() * 180 }); groundDecorations.push(flower); } // Add stones in clusters for (var cluster = 0; cluster < 4; cluster++) { var clusterX = 200 + cluster * 400 + Math.random() * 200; var clusterY = 2180 + Math.random() * 100; for (var i = 0; i < 3; i++) { var stone = game.attachAsset('stone', { anchorX: 0.5, anchorY: 1.0, x: clusterX + Math.random() * 60 - 30, y: clusterY + Math.random() * 30 - 15 }); groundDecorations.push(stone); } } // Create castle var castle = game.attachAsset('castle', { anchorX: 0.5, anchorY: 1.0, x: 1024, y: 2300 }); var castleRoof = game.attachAsset('castleRoof', { anchorX: 0.5, anchorY: 1.0, x: 1024, y: 1900 }); // Create king character var king = game.addChild(new King()); king.x = 1024; king.y = 2300; // Create NPCs with better positioning var cesurHoroz = game.addChild(new NPC('rooster', 'Cesur Horoz', 'Haşmet Baba! Krallığımızda garip şeyler oluyor. Sabah ötüşlerimiz eskisi kadar güçlü değil...')); cesurHoroz.x = 600; cesurHoroz.y = 2280; var sefkatliTavuk = game.addChild(new NPC('hen', 'Şefkatli Tavuk', 'Majeste, vadide karanlık bir güç hissediyorum. Civcivlerimiz korkuyor...')); sefkatliTavuk.x = 1400; sefkatliTavuk.y = 2280; var umutCivciv = game.addChild(new NPC('chick', 'Umut Civciv', 'Kral baba! Kara Savaşçı\'nın hikayelerini duydum. Onun gibi güçlü olabilir miyim?')); umutCivciv.x = 1000; umutCivciv.y = 2280; // Royal Family - positioned closer to castle var zumrutAna = game.addChild(new NPC('queen', 'Zümrüt Ana', 'Sevgili Haşmet Baba, krallığımızın huzuru için elimden geleni yapıyorum. Halkımızın kalbi benim kalbim...')); zumrutAna.x = 850; zumrutAna.y = 2280; var ozanIsmet = game.addChild(new NPC('poet', 'Ozan İsmet Baba', 'Kanadım sakat olsa da, şiirlerimle krallığımızın ruhunu yaşatıyorum. Eski günlerin hikayelerini anlatırım...')); ozanIsmet.x = 1100; ozanIsmet.y = 2280; var kuyrukluKamil = game.addChild(new NPC('messenger', 'Kuyruklu Kâmil', 'Uçamasam da, krallığın en hızlı habercisiyim! Her köşeyi bilir, her haberi getiririm!')); kuyrukluKamil.x = 1200; kuyrukluKamil.y = 2280; // Heroes - First row with better spacing var steelAhmet = game.addChild(new NPC('rooster', 'Steel Wing Ahmet', 'Krallığımızın güçlü savaşçısıyım! Çelik kanatlarımla düşmanları püskürtürüm!')); steelAhmet.x = 250; steelAhmet.y = 2350; var stormFikret = game.addChild(new NPC('rooster', 'Storm Fikret', 'Hava kuvvetlerinin lideri olarak yıldırım gibi hızlıyım! Gökyüzünde rakibim yoktur!')); stormFikret.x = 400; stormFikret.y = 2350; var goldenSelim = game.addChild(new NPC('rooster', 'Golden Necklace Selim', 'Krallığın hazinelerini koruyorum. Altın kolyemle değerli şeyleri bulurum!')); goldenSelim.x = 550; goldenSelim.y = 2350; var cleverNermin = game.addChild(new NPC('hen', 'Clever Nermin', 'Krallığın istihbarat şefi olarak her şeyi bilirim. Düşmanların planlarını önceden keşfederim!')); cleverNermin.x = 700; cleverNermin.y = 2350; var strongGokhan = game.addChild(new NPC('rooster', 'Strong Gökhan', 'Krallığın sınırlarını koruyorum! Güçlü yapımla kimse geçemez!')); strongGokhan.x = 850; strongGokhan.y = 2350; // Heroes - Second row var curiousPiril = game.addChild(new NPC('chick', 'Curious Pırıl Peri', 'Meraklı bir genç olarak geleceğin kahramanıyım! Her şeyi öğrenmek istiyorum!')); curiousPiril.x = 1200; curiousPiril.y = 2350; var lightningSahin = game.addChild(new NPC('rooster', 'Lightning Şahin', 'Keskin gözlü avcıyım! Hiçbir şey gözümden kaçmaz!')); lightningSahin.x = 1350; lightningSahin.y = 2350; var blackCemal = game.addChild(new NPC('rooster', 'Black Wing Cemal', 'Sessiz ve korkusuz gece bekçisiyim. Karanlıkta bile her şeyi görürüm!')); blackCemal.x = 1500; blackCemal.y = 2350; var patientTimur = game.addChild(new NPC('rooster', 'Patient Timur', 'Strateji ustasıyım! Sabırla en iyi planları hazırlarım!')); patientTimur.x = 1650; patientTimur.y = 2350; var wiseYasin = game.addChild(new NPC('rooster', 'Wise Yasin', 'Yaşlı bilge olarak eski savaşların kahramanıyım. Deneyimlerimle gençleri yönlendiririm!')); wiseYasin.x = 1800; wiseYasin.y = 2350; // Heroes - Third row positioned deeper with better spacing var blueMert = game.addChild(new NPC('rooster', 'Blue Mert', 'Nehirlerin ve su yollarının koruyucusuyum! Suyun gücünü kullanırım!')); blueMert.x = 200; blueMert.y = 2450; var cheerfulSamet = game.addChild(new NPC('rooster', 'Cheerful Samet', 'Herkesin moral kaynağıyım! Neşemle herkesi mutlu ederim!')); cheerfulSamet.x = 350; cheerfulSamet.y = 2450; var doveKadir = game.addChild(new NPC('rooster', 'Dove Kadir', 'Barış elçisi olarak çatışmaları önlerim. Huzuru getiririm!')); doveKadir.x = 500; doveKadir.y = 2450; var emeraldZeki = game.addChild(new NPC('rooster', 'Emerald Zeki', 'Kraliçenin sağ kolu olarak ona yardım ederim!')); emeraldZeki.x = 650; emeraldZeki.y = 2450; var optimisticFuat = game.addChild(new NPC('rooster', 'Optimistic Fuat', 'Herkese umut aşılarım! Kötü günlerde bile pozitifim!')); optimisticFuat.x = 800; optimisticFuat.y = 2450; var mightyCengiz = game.addChild(new NPC('rooster', 'Mighty Cengiz', 'Genç lider olarak gelecekte krallığı yöneteceğim!')); mightyCengiz.x = 950; mightyCengiz.y = 2450; var healerGaye = game.addChild(new NPC('hen', 'Healer Gaye', 'Yaralıları iyileştiren şifacıyım. Şefkatli ellerimle herkesi sağlığa kavuştururum!')); healerGaye.x = 1100; healerGaye.y = 2450; var blacksmithDeniz = game.addChild(new NPC('rooster', 'Blacksmith Deniz', 'Silah ve alet ustasıyım! En iyi ekipmanları yaparım!')); blacksmithDeniz.x = 1250; blacksmithDeniz.y = 2450; var coolAlp = game.addChild(new NPC('rooster', 'Cool-headed Alp', 'Gece operasyonlarının lideri olarak soğukkanlılığımla başarıya ulaşırım!')); coolAlp.x = 1400; coolAlp.y = 2450; var clearBurak = game.addChild(new NPC('rooster', 'Clear Burak', 'Su kaynaklarının hakimi olarak temiz suyu tüm krallığa götürürüm!')); clearBurak.x = 1550; clearBurak.y = 2450; // Create Kara Savaşçı (initially hidden, appears in level 2) var karaSavasci = game.addChild(new KaraSavasci()); karaSavasci.x = 1024; karaSavasci.y = 2200; karaSavasci.visible = false; // Create elemental chicks for level 2 (initially hidden) var fireChick = game.addChild(new ElementalChick('fire', 'Ateş Civciv', 'Kara Savaşçı beni ateş gücüyle eğitti! Alevler benim dostum!')); fireChick.x = 900; fireChick.y = 2200; fireChick.visible = false; var waterChick = game.addChild(new ElementalChick('water', 'Su Civciv', 'Suyun gücünü kullanarak krallığı koruyorum! Damlalar benim silahım!')); waterChick.x = 1150; waterChick.y = 2200; waterChick.visible = false; var earthChick = game.addChild(new ElementalChick('earth', 'Toprak Civciv', 'Topraktan güç alır, kökleri derinlere uzanır! Doğa benim müttefikim!')); earthChick.x = 850; earthChick.y = 2250; earthChick.visible = false; var airChick = game.addChild(new ElementalChick('air', 'Hava Civciv', 'Rüzgarla dans eder, gökyüzünde uçarım! Hava benim evim!')); airChick.x = 1200; airChick.y = 2250; airChick.visible = false; // Create enemy (initially hidden) var darkFox = game.addChild(new Enemy()); darkFox.x = 200; darkFox.y = 2300; darkFox.visible = false; // Create dialog system var dialogSystem = game.addChild(new DialogSystem()); dialogSystem.x = 1024; dialogSystem.y = 2400; // UI Elements var titleText = new Text2('Horozlar Krallığı', { size: 60, fill: 0xFFD700 }); titleText.anchor.set(0.5, 0); LK.gui.top.addChild(titleText); var phaseText = new Text2('Krallığın Tanıtımı', { size: 32, fill: 0xFFFFFF }); phaseText.anchor.set(0.5, 0); phaseText.y = 80; LK.gui.top.addChild(phaseText); var instructionText = new Text2('NPClerle konuşmak için onlara dokunun', { size: 24, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 1); LK.gui.bottom.addChild(instructionText); // Add skip quest button var skipButton = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.8, scaleY: 0.8 }); skipButton.x = 0; skipButton.y = -80; LK.gui.bottom.addChild(skipButton); var skipButtonText = new Text2('Görevi Atla', { size: 20, fill: 0xFFFFFF }); skipButtonText.anchor.set(0.5, 0.5); skipButtonText.x = 0; skipButtonText.y = -80; LK.gui.bottom.addChild(skipButtonText); // Dialog function function showDialog(name, text) { dialogSystem.show(name, text); } // Quest progress checker function checkQuestProgress() { var basicTalks = questProgress.talkedToCesur && questProgress.talkedToTavuk && questProgress.talkedToCivciv; var royalTalks = questProgress.talkedToZumrut && questProgress.talkedToIsmet && questProgress.talkedToKamil; var heroTalks = questProgress.talkedToAhmet && questProgress.talkedToFikret && questProgress.talkedToSelim && questProgress.talkedToNermin && questProgress.talkedToGokhan && questProgress.talkedToPiril && questProgress.talkedToSahin && questProgress.talkedToCemal && questProgress.talkedToTimur && questProgress.talkedToYasin && questProgress.talkedToMert && questProgress.talkedToSamet && questProgress.talkedToKadir && questProgress.talkedToZeki && questProgress.talkedToFuat && questProgress.talkedToCengiz && questProgress.talkedToGaye && questProgress.talkedToDeniz && questProgress.talkedToAlp && questProgress.talkedToBurak; var allTalks = basicTalks && royalTalks && heroTalks; if (allTalks) { if (gamePhase === 'introduction') { gamePhase = 'exploration'; phaseText.setText('Karanlık Tehdit'); // Spawn the dark fox darkFox.visible = true; darkFox.activate(); LK.setTimeout(function () { showDialog('Haşmet Baba', 'Artık krallığımızın tüm halkıyla tanıştım. Kara Tilki ortaya çıktı! Krallığımızı korumalıyım!'); }, 1000); } } } // Skip quest function function skipQuest() { if (gamePhase === 'introduction') { // Mark all NPCs as talked to questProgress.talkedToCesur = true; questProgress.talkedToTavuk = true; questProgress.talkedToCivciv = true; questProgress.talkedToZumrut = true; questProgress.talkedToIsmet = true; questProgress.talkedToKamil = true; questProgress.talkedToAhmet = true; questProgress.talkedToFikret = true; questProgress.talkedToSelim = true; questProgress.talkedToNermin = true; questProgress.talkedToGokhan = true; questProgress.talkedToPiril = true; questProgress.talkedToSahin = true; questProgress.talkedToCemal = true; questProgress.talkedToTimur = true; questProgress.talkedToYasin = true; questProgress.talkedToMert = true; questProgress.talkedToSamet = true; questProgress.talkedToKadir = true; questProgress.talkedToZeki = true; questProgress.talkedToFuat = true; questProgress.talkedToCengiz = true; questProgress.talkedToGaye = true; questProgress.talkedToDeniz = true; questProgress.talkedToAlp = true; questProgress.talkedToBurak = true; // Trigger quest progress check checkQuestProgress(); LK.getSound('click').play(); } } // Game controls game.down = function (x, y, obj) { if (!dialogSystem.visible) { // Check if skip button was clicked var skipButtonBounds = { x: LK.gui.bottom.x + skipButton.x - skipButton.width / 2, y: LK.gui.bottom.y + skipButton.y - skipButton.height / 2, width: skipButton.width, height: skipButton.height }; var globalPos = game.toGlobal({ x: x, y: y }); if (globalPos.x >= skipButtonBounds.x && globalPos.x <= skipButtonBounds.x + skipButtonBounds.width && globalPos.y >= skipButtonBounds.y && globalPos.y <= skipButtonBounds.y + skipButtonBounds.height) { skipQuest(); return; } king.moveTo(x); } }; game.update = function () { // Update game phase text if (gamePhase === 'introduction') { phaseText.setText('Krallığın Tanıtımı - Tüm karakterlerle konuşun'); skipButton.visible = true; skipButtonText.visible = true; } else if (gamePhase === 'exploration') { phaseText.setText('Karanlık Tehdit - Kara Tilki\'ye dokunarak saldırın'); skipButton.visible = false; skipButtonText.visible = false; } else if (gamePhase === 'level_2') { phaseText.setText('2. Seviye - Kara Savaşçı ile Tanışın'); instructionText.setText('Kara Savaşçı ve elemental civcivlerle konuşun ve gerçeği öğrenin!'); skipButton.visible = false; skipButtonText.visible = false; } else if (gamePhase === 'republic_council') { phaseText.setText('Krallık Meclisi'); instructionText.setText('Haşmet Baba halkı toplayarak krallığı Cumhuriyet yapma kararı aldı. Herkes oy veriyor!'); skipButton.visible = false; skipButtonText.visible = false; // Simulate voting process if (LK.ticks % 180 === 0) { // Characters move to show participation in voting cesurHoroz.x += (Math.random() - 0.5) * 20; sefkatliTavuk.x += (Math.random() - 0.5) * 20; umutCivciv.x += (Math.random() - 0.5) * 20; zumrutAna.x += (Math.random() - 0.5) * 15; ozanIsmet.x += (Math.random() - 0.5) * 15; } // After some time in council, transition to celebration if (LK.ticks % 300 === 0) { // After 5 seconds gamePhase = 'republic_celebration'; showDialog('Haşmet Baba', 'Oylar sayıldı! Krallığımız artık bir Cumhuriyet! Yeni düzen başlıyor!'); LK.setTimeout(function () { showDialog('Kara Savaşçı', 'Cumhuriyet ile teknoloji getiriyorum! Krallık gelişecek, şehirler kurulacak!'); }, 3000); } } else if (gamePhase === 'republic_celebration') { phaseText.setText('Cumhuriyet Bayramı Kutlaması'); instructionText.setText('Cumhuriyet Bayramı kutlu olsun! Krallık halkı meydanda toplanıyor!'); skipButton.visible = false; skipButtonText.visible = false; // Animate characters gathering in celebration if (LK.ticks % 120 === 0) { // Make characters move slightly to simulate celebration cesurHoroz.x += (Math.random() - 0.5) * 10; sefkatliTavuk.x += (Math.random() - 0.5) * 10; umutCivciv.x += (Math.random() - 0.5) * 10; } // After celebration, transition to cyberpunk if (LK.ticks % 300 === 0) { // After 5 seconds gamePhase = 'cyberpunk_kingdom'; // Switch to cyberpunk environment sky.visible = false; cyberpunkBg.visible = true; for (var i = 0; i < cyberpunkBuildings.length; i++) { cyberpunkBuildings[i].visible = true; } castle.visible = false; castleRoof.visible = false; // Hide old characters, show cyberpunk ones king.visible = false; oldHashmet.visible = true; zumrutAna.visible = true; // Queen stays herobrine.visible = true; herobrine.activate(); karaSavasci.visible = true; // Hide other NPCs cesurHoroz.visible = false; sefkatliTavuk.visible = false; umutCivciv.visible = false; LK.playMusic('cyberpunk'); showDialog('Haşmet Baba', 'Yıllar geçti... Krallık yıkıldı ve Herobrine etrafı patlattı! Cyberpunk krallığında yeni tehlikeler var!'); } } else if (gamePhase === 'cyberpunk_kingdom') { phaseText.setText('Cyberpunk Krallığı - Son Savaş'); instructionText.setText('Herobrine ve düşmanlarını yen! Kara Savaşçı ile birlikte savaş!'); skipButton.visible = false; skipButtonText.visible = false; // Spawn cyberpunk enemies cyberpunkEnemySpawnTimer++; if (cyberpunkEnemySpawnTimer >= 180) { // Every 3 seconds cyberpunkEnemySpawnTimer = 0; if (cyberpunkEnemies.length < 4) { var enemyType = Math.random() < 0.5 ? 'robot' : 'hacker'; var enemy; if (enemyType === 'robot') { enemy = game.addChild(new RobotEnemy()); } else { enemy = game.addChild(new HackerEnemy()); } enemy.x = Math.random() < 0.5 ? 100 : 1900; enemy.y = 2280; enemy.activate(); cyberpunkEnemies.push(enemy); } } // Clean up destroyed enemies for (var i = cyberpunkEnemies.length - 1; i >= 0; i--) { if (cyberpunkEnemies[i].health <= 0) { cyberpunkEnemies.splice(i, 1); } } } // Update quest counter var totalTalked = 0; var totalCharacters = 26; // 3 basic + 3 royal + 20 heroes if (questProgress.talkedToCesur) totalTalked++; if (questProgress.talkedToTavuk) totalTalked++; if (questProgress.talkedToCivciv) totalTalked++; if (questProgress.talkedToZumrut) totalTalked++; if (questProgress.talkedToIsmet) totalTalked++; if (questProgress.talkedToKamil) totalTalked++; if (questProgress.talkedToAhmet) totalTalked++; if (questProgress.talkedToFikret) totalTalked++; if (questProgress.talkedToSelim) totalTalked++; if (questProgress.talkedToNermin) totalTalked++; if (questProgress.talkedToGokhan) totalTalked++; if (questProgress.talkedToPiril) totalTalked++; if (questProgress.talkedToSahin) totalTalked++; if (questProgress.talkedToCemal) totalTalked++; if (questProgress.talkedToTimur) totalTalked++; if (questProgress.talkedToYasin) totalTalked++; if (questProgress.talkedToMert) totalTalked++; if (questProgress.talkedToSamet) totalTalked++; if (questProgress.talkedToKadir) totalTalked++; if (questProgress.talkedToZeki) totalTalked++; if (questProgress.talkedToFuat) totalTalked++; if (questProgress.talkedToCengiz) totalTalked++; if (questProgress.talkedToGaye) totalTalked++; if (questProgress.talkedToDeniz) totalTalked++; if (questProgress.talkedToAlp) totalTalked++; if (questProgress.talkedToBurak) totalTalked++; if (gamePhase === 'introduction') { if (totalTalked < totalCharacters) { instructionText.setText('Tüm krallık halkı ile konuşun (' + totalTalked + '/' + totalCharacters + ')'); } else { instructionText.setText('Tüm halkla konuştunuz! Karanlık tehdit yaklaşıyor...'); } } }; // Create cyberpunk background (initially hidden) var cyberpunkBg = game.attachAsset('cyberpunkBackground', { anchorX: 0, anchorY: 0, x: 0, y: 0 }); cyberpunkBg.visible = false; // Create cyberpunk city buildings (initially hidden) var cyberpunkBuildings = []; for (var i = 0; i < 6; i++) { var building = game.attachAsset('cityBuilding', { anchorX: 0.5, anchorY: 1.0, x: 200 + i * 300, y: 2300 }); building.visible = false; cyberpunkBuildings.push(building); } // Create old Haşmet Baba for cyberpunk phase var oldHashmet = game.attachAsset('oldHashmet', { anchorX: 0.5, anchorY: 1.0, x: 800, y: 2280 }); oldHashmet.visible = false; // Create Herobrine boss var herobrine = game.addChild(new Herobrine()); herobrine.x = 1400; herobrine.y = 2280; herobrine.visible = false; // Start background music LK.playMusic('kingdom'); // Initial dialog LK.setTimeout(function () { showDialog('Haşmet Baba', 'Horozlar Krallığı\'na hoş geldiniz! Ben Haşmet Baba, krallığın bilge kralıyım. Tüm halkımızla konuşarak krallığımızı tanıyın!'); }, 1000);
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var DialogSystem = Container.expand(function () {
var self = Container.call(this);
var dialogBorder = self.attachAsset('dialogBoxBorder', {
anchorX: 0.5,
anchorY: 0.5
});
var dialogBg = self.attachAsset('dialogBox', {
anchorX: 0.5,
anchorY: 0.5
});
self.nameText = new Text2('', {
size: 40,
fill: 0xFFD700
});
self.nameText.anchor.set(0.5, 0.5);
self.nameText.x = 0;
self.nameText.y = -60;
self.addChild(self.nameText);
self.dialogText = new Text2('', {
size: 32,
fill: 0xFFFFFF
});
self.dialogText.anchor.set(0.5, 0.5);
self.dialogText.x = 0;
self.dialogText.y = 0;
self.addChild(self.dialogText);
self.continueButton = self.attachAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 60
});
self.continueText = new Text2('Devam Et', {
size: 24,
fill: 0xFFFFFF
});
self.continueText.anchor.set(0.5, 0.5);
self.continueText.x = 0;
self.continueText.y = 60;
self.addChild(self.continueText);
self.visible = false;
self.show = function (name, text) {
self.nameText.setText(name);
self.dialogText.setText(text);
self.visible = true;
};
self.hide = function () {
self.visible = false;
};
self.down = function (x, y, obj) {
if (self.visible) {
self.hide();
LK.getSound('click').play();
}
};
return self;
});
var ElementalChick = Container.expand(function (element, name, dialogText) {
var self = Container.call(this);
var assetName = element + 'Chick';
var elementalChickGraphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 1.0
});
self.name = name;
self.dialogText = dialogText;
self.element = element;
self.hasBeenTalkedTo = false;
self.down = function (x, y, obj) {
showDialog(self.name, self.dialogText);
self.hasBeenTalkedTo = true;
LK.getSound('click').play();
};
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('darkFox', {
anchorX: 0.5,
anchorY: 1.0
});
self.health = 100;
self.maxHealth = 100;
self.speed = 1;
self.direction = 1;
self.isActive = false;
self.activate = function () {
self.isActive = true;
};
self.update = function () {
if (self.isActive) {
self.x += self.speed * self.direction;
if (self.x > 1900 || self.x < 150) {
self.direction *= -1;
}
}
};
self.takeDamage = function (damage) {
self.health -= damage;
LK.effects.flashObject(self, 0xff0000, 300);
if (self.health <= 0) {
self.defeat();
}
};
self.defeat = function () {
self.isActive = false;
tween(self, {
alpha: 0,
scaleX: 0.1,
scaleY: 0.1
}, {
duration: 500,
onFinish: function onFinish() {
gamePhase = 'level_2';
// Show Kara Savaşçı and elemental chicks
karaSavasci.visible = true;
fireChick.visible = true;
waterChick.visible = true;
earthChick.visible = true;
airChick.visible = true;
showDialog('Haşmet Baba', 'Kara Tilki yenildi! Artık krallığımız güvende. Şimdi 2. seviyeye geçme zamanı geldi!');
// After a delay, introduce Kara Savaşçı and elemental chicks
LK.setTimeout(function () {
showDialog('Kara Savaşçı', 'Merhaba genç kral! Ben Kara Savaşçı. Kara Tilki bir testti. Elemental civcivlerle krallığı koruduk!');
}, 3000);
}
});
};
self.down = function (x, y, obj) {
if (self.isActive) {
self.takeDamage(20);
LK.getSound('click').play();
}
};
return self;
});
var HackerEnemy = Container.expand(function () {
var self = Container.call(this);
var hackerGraphics = self.attachAsset('hacker', {
anchorX: 0.5,
anchorY: 1.0
});
self.health = 40;
self.speed = 2;
self.direction = 1;
self.isActive = false;
self.activate = function () {
self.isActive = true;
};
self.update = function () {
if (self.isActive) {
self.x += self.speed * self.direction;
if (self.x > 1850 || self.x < 150) {
self.direction *= -1;
}
}
};
self.takeDamage = function (damage) {
self.health -= damage;
LK.effects.flashObject(self, 0x0000ff, 200);
if (self.health <= 0) {
self.defeat();
}
};
self.defeat = function () {
self.isActive = false;
tween(self, {
alpha: 0,
scaleX: 0.1,
scaleY: 0.1
}, {
duration: 300,
onFinish: function onFinish() {
self.destroy();
}
});
};
self.down = function (x, y, obj) {
if (self.isActive) {
self.takeDamage(20);
LK.getSound('click').play();
}
};
return self;
});
var Herobrine = Container.expand(function () {
var self = Container.call(this);
var herobrineGraphics = self.attachAsset('herobrine', {
anchorX: 0.5,
anchorY: 1.0
});
self.health = 200;
self.maxHealth = 200;
self.speed = 2;
self.direction = 1;
self.isActive = false;
self.lastAttackTime = 0;
self.activate = function () {
self.isActive = true;
};
self.update = function () {
if (self.isActive) {
self.x += self.speed * self.direction;
if (self.x > 1800 || self.x < 200) {
self.direction *= -1;
}
// Attack pattern
if (LK.ticks - self.lastAttackTime > 120) {
self.lastAttackTime = LK.ticks;
LK.effects.flashObject(self, 0xff0000, 200);
}
}
};
self.takeDamage = function (damage) {
self.health -= damage;
LK.effects.flashObject(self, 0xff0000, 300);
if (self.health <= 0) {
self.defeat();
}
};
self.defeat = function () {
self.isActive = false;
tween(self, {
alpha: 0,
scaleX: 0.1,
scaleY: 0.1
}, {
duration: 1000,
onFinish: function onFinish() {
showDialog('Haşmet Baba', 'Herobrine yenildi! Krallığımız sonunda huzura kavuştu. Oyun tamamlandı!');
LK.setTimeout(function () {
LK.showYouWin();
}, 3000);
}
});
};
self.down = function (x, y, obj) {
if (self.isActive) {
self.takeDamage(30);
LK.getSound('click').play();
}
};
return self;
});
var KaraSavasci = Container.expand(function () {
var self = Container.call(this);
var karaSavasciGraphics = self.attachAsset('karaSavasci', {
anchorX: 0.5,
anchorY: 1.0
});
self.name = 'Kara Savaşçı';
self.dialogText = 'Kara Tilki bir testti. Civcivleri eğittim. Artık gerçek güç zamanı!';
self.hasBeenTalkedTo = false;
self.down = function (x, y, obj) {
showDialog(self.name, self.dialogText);
self.hasBeenTalkedTo = true;
LK.getSound('click').play();
// After talking to Kara Savaşçı, transition to republic council
if (gamePhase === 'level_2') {
LK.setTimeout(function () {
gamePhase = 'republic_council';
showDialog('Haşmet Baba', 'Halkımız! Krallığımızı bir Cumhuriyet yapmak için karar verme zamanı geldi. Herkes oy verecek!');
}, 2000);
}
};
return self;
});
var King = Container.expand(function () {
var self = Container.call(this);
var kingGraphics = self.attachAsset('kingCharacter', {
anchorX: 0.5,
anchorY: 1.0
});
self.speed = 3;
self.targetX = null;
self.isMoving = false;
self.moveTo = function (x) {
self.targetX = x;
self.isMoving = true;
};
self.update = function () {
if (self.isMoving && self.targetX !== null) {
var dx = self.targetX - self.x;
if (Math.abs(dx) > self.speed) {
self.x += dx > 0 ? self.speed : -self.speed;
} else {
self.x = self.targetX;
self.isMoving = false;
self.targetX = null;
}
}
};
return self;
});
var NPC = Container.expand(function (type, name, dialogText) {
var self = Container.call(this);
var assetName = 'npcRooster'; // default
if (type === 'rooster') assetName = 'npcRooster';else if (type === 'hen') assetName = 'npcHen';else if (type === 'chick') assetName = 'npcChick';else if (type === 'queen') assetName = 'queenCharacter';else if (type === 'poet') assetName = 'poetCharacter';else if (type === 'messenger') assetName = 'messengerCharacter';else if (type === 'hero') assetName = 'heroRooster';
var npcGraphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 1.0
});
self.name = name;
self.dialogText = dialogText;
self.hasBeenTalkedTo = false;
self.down = function (x, y, obj) {
showDialog(self.name, self.dialogText);
self.hasBeenTalkedTo = true;
LK.getSound('click').play();
// Mark quest progress
if (self.name === 'Cesur Horoz') questProgress.talkedToCesur = true;else if (self.name === 'Şefkatli Tavuk') questProgress.talkedToTavuk = true;else if (self.name === 'Umut Civciv') questProgress.talkedToCivciv = true;else if (self.name === 'Zümrüt Ana') questProgress.talkedToZumrut = true;else if (self.name === 'Ozan İsmet Baba') questProgress.talkedToIsmet = true;else if (self.name === 'Kuyruklu Kâmil') questProgress.talkedToKamil = true;else if (self.name === 'Steel Wing Ahmet') questProgress.talkedToAhmet = true;else if (self.name === 'Storm Fikret') questProgress.talkedToFikret = true;else if (self.name === 'Golden Necklace Selim') questProgress.talkedToSelim = true;else if (self.name === 'Clever Nermin') questProgress.talkedToNermin = true;else if (self.name === 'Strong Gökhan') questProgress.talkedToGokhan = true;else if (self.name === 'Curious Pırıl Peri') questProgress.talkedToPiril = true;else if (self.name === 'Lightning Şahin') questProgress.talkedToSahin = true;else if (self.name === 'Black Wing Cemal') questProgress.talkedToCemal = true;else if (self.name === 'Patient Timur') questProgress.talkedToTimur = true;else if (self.name === 'Wise Yasin') questProgress.talkedToYasin = true;else if (self.name === 'Blue Mert') questProgress.talkedToMert = true;else if (self.name === 'Cheerful Samet') questProgress.talkedToSamet = true;else if (self.name === 'Dove Kadir') questProgress.talkedToKadir = true;else if (self.name === 'Emerald Zeki') questProgress.talkedToZeki = true;else if (self.name === 'Optimistic Fuat') questProgress.talkedToFuat = true;else if (self.name === 'Mighty Cengiz') questProgress.talkedToCengiz = true;else if (self.name === 'Healer Gaye') questProgress.talkedToGaye = true;else if (self.name === 'Blacksmith Deniz') questProgress.talkedToDeniz = true;else if (self.name === 'Cool-headed Alp') questProgress.talkedToAlp = true;else if (self.name === 'Clear Burak') questProgress.talkedToBurak = true;
checkQuestProgress();
};
return self;
});
var RobotEnemy = Container.expand(function () {
var self = Container.call(this);
var robotGraphics = self.attachAsset('robot', {
anchorX: 0.5,
anchorY: 1.0
});
self.health = 50;
self.speed = 1.5;
self.direction = 1;
self.isActive = false;
self.activate = function () {
self.isActive = true;
};
self.update = function () {
if (self.isActive) {
self.x += self.speed * self.direction;
if (self.x > 1900 || self.x < 100) {
self.direction *= -1;
}
}
};
self.takeDamage = function (damage) {
self.health -= damage;
LK.effects.flashObject(self, 0x00ff00, 200);
if (self.health <= 0) {
self.defeat();
}
};
self.defeat = function () {
self.isActive = false;
tween(self, {
alpha: 0,
scaleX: 0.1,
scaleY: 0.1
}, {
duration: 300,
onFinish: function onFinish() {
self.destroy();
}
});
};
self.down = function (x, y, obj) {
if (self.isActive) {
self.takeDamage(25);
LK.getSound('click').play();
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
// Game state variables
var gamePhase = 'introduction'; // introduction, exploration, combat, level_2, republic_council, republic_celebration, cyberpunk_kingdom
var cyberpunkEnemies = [];
var cyberpunkEnemySpawnTimer = 0;
var questProgress = {
talkedToCesur: false,
talkedToTavuk: false,
talkedToCivciv: false,
talkedToZumrut: false,
talkedToIsmet: false,
talkedToKamil: false,
talkedToAhmet: false,
talkedToFikret: false,
talkedToSelim: false,
talkedToNermin: false,
talkedToGokhan: false,
talkedToPiril: false,
talkedToSahin: false,
talkedToCemal: false,
talkedToTimur: false,
talkedToYasin: false,
talkedToMert: false,
talkedToSamet: false,
talkedToKadir: false,
talkedToZeki: false,
talkedToFuat: false,
talkedToCengiz: false,
talkedToGaye: false,
talkedToDeniz: false,
talkedToAlp: false,
talkedToBurak: false
};
// Create background
var sky = game.attachAsset('sky', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
// Create ground tiles for better coverage
var groundTiles = [];
for (var i = 0; i < 4; i++) {
var groundTile = game.attachAsset('ground', {
anchorX: 0,
anchorY: 0,
x: i * 800,
y: 2100
});
groundTiles.push(groundTile);
}
// Create ground decorations
var groundDecorations = [];
// Add grass patches in organized rows
for (var row = 0; row < 3; row++) {
for (var i = 0; i < 8; i++) {
var grassPatch = game.attachAsset('grassPatch', {
anchorX: 0.5,
anchorY: 1.0,
x: 150 + i * 240 + Math.random() * 80,
y: 2150 + row * 60 + Math.random() * 40
});
groundDecorations.push(grassPatch);
}
}
// Add flowers scattered around
for (var i = 0; i < 25; i++) {
var flower = game.attachAsset('flower', {
anchorX: 0.5,
anchorY: 1.0,
x: Math.random() * 1800 + 100,
y: 2120 + Math.random() * 180
});
groundDecorations.push(flower);
}
// Add stones in clusters
for (var cluster = 0; cluster < 4; cluster++) {
var clusterX = 200 + cluster * 400 + Math.random() * 200;
var clusterY = 2180 + Math.random() * 100;
for (var i = 0; i < 3; i++) {
var stone = game.attachAsset('stone', {
anchorX: 0.5,
anchorY: 1.0,
x: clusterX + Math.random() * 60 - 30,
y: clusterY + Math.random() * 30 - 15
});
groundDecorations.push(stone);
}
}
// Create castle
var castle = game.attachAsset('castle', {
anchorX: 0.5,
anchorY: 1.0,
x: 1024,
y: 2300
});
var castleRoof = game.attachAsset('castleRoof', {
anchorX: 0.5,
anchorY: 1.0,
x: 1024,
y: 1900
});
// Create king character
var king = game.addChild(new King());
king.x = 1024;
king.y = 2300;
// Create NPCs with better positioning
var cesurHoroz = game.addChild(new NPC('rooster', 'Cesur Horoz', 'Haşmet Baba! Krallığımızda garip şeyler oluyor. Sabah ötüşlerimiz eskisi kadar güçlü değil...'));
cesurHoroz.x = 600;
cesurHoroz.y = 2280;
var sefkatliTavuk = game.addChild(new NPC('hen', 'Şefkatli Tavuk', 'Majeste, vadide karanlık bir güç hissediyorum. Civcivlerimiz korkuyor...'));
sefkatliTavuk.x = 1400;
sefkatliTavuk.y = 2280;
var umutCivciv = game.addChild(new NPC('chick', 'Umut Civciv', 'Kral baba! Kara Savaşçı\'nın hikayelerini duydum. Onun gibi güçlü olabilir miyim?'));
umutCivciv.x = 1000;
umutCivciv.y = 2280;
// Royal Family - positioned closer to castle
var zumrutAna = game.addChild(new NPC('queen', 'Zümrüt Ana', 'Sevgili Haşmet Baba, krallığımızın huzuru için elimden geleni yapıyorum. Halkımızın kalbi benim kalbim...'));
zumrutAna.x = 850;
zumrutAna.y = 2280;
var ozanIsmet = game.addChild(new NPC('poet', 'Ozan İsmet Baba', 'Kanadım sakat olsa da, şiirlerimle krallığımızın ruhunu yaşatıyorum. Eski günlerin hikayelerini anlatırım...'));
ozanIsmet.x = 1100;
ozanIsmet.y = 2280;
var kuyrukluKamil = game.addChild(new NPC('messenger', 'Kuyruklu Kâmil', 'Uçamasam da, krallığın en hızlı habercisiyim! Her köşeyi bilir, her haberi getiririm!'));
kuyrukluKamil.x = 1200;
kuyrukluKamil.y = 2280;
// Heroes - First row with better spacing
var steelAhmet = game.addChild(new NPC('rooster', 'Steel Wing Ahmet', 'Krallığımızın güçlü savaşçısıyım! Çelik kanatlarımla düşmanları püskürtürüm!'));
steelAhmet.x = 250;
steelAhmet.y = 2350;
var stormFikret = game.addChild(new NPC('rooster', 'Storm Fikret', 'Hava kuvvetlerinin lideri olarak yıldırım gibi hızlıyım! Gökyüzünde rakibim yoktur!'));
stormFikret.x = 400;
stormFikret.y = 2350;
var goldenSelim = game.addChild(new NPC('rooster', 'Golden Necklace Selim', 'Krallığın hazinelerini koruyorum. Altın kolyemle değerli şeyleri bulurum!'));
goldenSelim.x = 550;
goldenSelim.y = 2350;
var cleverNermin = game.addChild(new NPC('hen', 'Clever Nermin', 'Krallığın istihbarat şefi olarak her şeyi bilirim. Düşmanların planlarını önceden keşfederim!'));
cleverNermin.x = 700;
cleverNermin.y = 2350;
var strongGokhan = game.addChild(new NPC('rooster', 'Strong Gökhan', 'Krallığın sınırlarını koruyorum! Güçlü yapımla kimse geçemez!'));
strongGokhan.x = 850;
strongGokhan.y = 2350;
// Heroes - Second row
var curiousPiril = game.addChild(new NPC('chick', 'Curious Pırıl Peri', 'Meraklı bir genç olarak geleceğin kahramanıyım! Her şeyi öğrenmek istiyorum!'));
curiousPiril.x = 1200;
curiousPiril.y = 2350;
var lightningSahin = game.addChild(new NPC('rooster', 'Lightning Şahin', 'Keskin gözlü avcıyım! Hiçbir şey gözümden kaçmaz!'));
lightningSahin.x = 1350;
lightningSahin.y = 2350;
var blackCemal = game.addChild(new NPC('rooster', 'Black Wing Cemal', 'Sessiz ve korkusuz gece bekçisiyim. Karanlıkta bile her şeyi görürüm!'));
blackCemal.x = 1500;
blackCemal.y = 2350;
var patientTimur = game.addChild(new NPC('rooster', 'Patient Timur', 'Strateji ustasıyım! Sabırla en iyi planları hazırlarım!'));
patientTimur.x = 1650;
patientTimur.y = 2350;
var wiseYasin = game.addChild(new NPC('rooster', 'Wise Yasin', 'Yaşlı bilge olarak eski savaşların kahramanıyım. Deneyimlerimle gençleri yönlendiririm!'));
wiseYasin.x = 1800;
wiseYasin.y = 2350;
// Heroes - Third row positioned deeper with better spacing
var blueMert = game.addChild(new NPC('rooster', 'Blue Mert', 'Nehirlerin ve su yollarının koruyucusuyum! Suyun gücünü kullanırım!'));
blueMert.x = 200;
blueMert.y = 2450;
var cheerfulSamet = game.addChild(new NPC('rooster', 'Cheerful Samet', 'Herkesin moral kaynağıyım! Neşemle herkesi mutlu ederim!'));
cheerfulSamet.x = 350;
cheerfulSamet.y = 2450;
var doveKadir = game.addChild(new NPC('rooster', 'Dove Kadir', 'Barış elçisi olarak çatışmaları önlerim. Huzuru getiririm!'));
doveKadir.x = 500;
doveKadir.y = 2450;
var emeraldZeki = game.addChild(new NPC('rooster', 'Emerald Zeki', 'Kraliçenin sağ kolu olarak ona yardım ederim!'));
emeraldZeki.x = 650;
emeraldZeki.y = 2450;
var optimisticFuat = game.addChild(new NPC('rooster', 'Optimistic Fuat', 'Herkese umut aşılarım! Kötü günlerde bile pozitifim!'));
optimisticFuat.x = 800;
optimisticFuat.y = 2450;
var mightyCengiz = game.addChild(new NPC('rooster', 'Mighty Cengiz', 'Genç lider olarak gelecekte krallığı yöneteceğim!'));
mightyCengiz.x = 950;
mightyCengiz.y = 2450;
var healerGaye = game.addChild(new NPC('hen', 'Healer Gaye', 'Yaralıları iyileştiren şifacıyım. Şefkatli ellerimle herkesi sağlığa kavuştururum!'));
healerGaye.x = 1100;
healerGaye.y = 2450;
var blacksmithDeniz = game.addChild(new NPC('rooster', 'Blacksmith Deniz', 'Silah ve alet ustasıyım! En iyi ekipmanları yaparım!'));
blacksmithDeniz.x = 1250;
blacksmithDeniz.y = 2450;
var coolAlp = game.addChild(new NPC('rooster', 'Cool-headed Alp', 'Gece operasyonlarının lideri olarak soğukkanlılığımla başarıya ulaşırım!'));
coolAlp.x = 1400;
coolAlp.y = 2450;
var clearBurak = game.addChild(new NPC('rooster', 'Clear Burak', 'Su kaynaklarının hakimi olarak temiz suyu tüm krallığa götürürüm!'));
clearBurak.x = 1550;
clearBurak.y = 2450;
// Create Kara Savaşçı (initially hidden, appears in level 2)
var karaSavasci = game.addChild(new KaraSavasci());
karaSavasci.x = 1024;
karaSavasci.y = 2200;
karaSavasci.visible = false;
// Create elemental chicks for level 2 (initially hidden)
var fireChick = game.addChild(new ElementalChick('fire', 'Ateş Civciv', 'Kara Savaşçı beni ateş gücüyle eğitti! Alevler benim dostum!'));
fireChick.x = 900;
fireChick.y = 2200;
fireChick.visible = false;
var waterChick = game.addChild(new ElementalChick('water', 'Su Civciv', 'Suyun gücünü kullanarak krallığı koruyorum! Damlalar benim silahım!'));
waterChick.x = 1150;
waterChick.y = 2200;
waterChick.visible = false;
var earthChick = game.addChild(new ElementalChick('earth', 'Toprak Civciv', 'Topraktan güç alır, kökleri derinlere uzanır! Doğa benim müttefikim!'));
earthChick.x = 850;
earthChick.y = 2250;
earthChick.visible = false;
var airChick = game.addChild(new ElementalChick('air', 'Hava Civciv', 'Rüzgarla dans eder, gökyüzünde uçarım! Hava benim evim!'));
airChick.x = 1200;
airChick.y = 2250;
airChick.visible = false;
// Create enemy (initially hidden)
var darkFox = game.addChild(new Enemy());
darkFox.x = 200;
darkFox.y = 2300;
darkFox.visible = false;
// Create dialog system
var dialogSystem = game.addChild(new DialogSystem());
dialogSystem.x = 1024;
dialogSystem.y = 2400;
// UI Elements
var titleText = new Text2('Horozlar Krallığı', {
size: 60,
fill: 0xFFD700
});
titleText.anchor.set(0.5, 0);
LK.gui.top.addChild(titleText);
var phaseText = new Text2('Krallığın Tanıtımı', {
size: 32,
fill: 0xFFFFFF
});
phaseText.anchor.set(0.5, 0);
phaseText.y = 80;
LK.gui.top.addChild(phaseText);
var instructionText = new Text2('NPClerle konuşmak için onlara dokunun', {
size: 24,
fill: 0xFFFFFF
});
instructionText.anchor.set(0.5, 1);
LK.gui.bottom.addChild(instructionText);
// Add skip quest button
var skipButton = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.8,
scaleY: 0.8
});
skipButton.x = 0;
skipButton.y = -80;
LK.gui.bottom.addChild(skipButton);
var skipButtonText = new Text2('Görevi Atla', {
size: 20,
fill: 0xFFFFFF
});
skipButtonText.anchor.set(0.5, 0.5);
skipButtonText.x = 0;
skipButtonText.y = -80;
LK.gui.bottom.addChild(skipButtonText);
// Dialog function
function showDialog(name, text) {
dialogSystem.show(name, text);
}
// Quest progress checker
function checkQuestProgress() {
var basicTalks = questProgress.talkedToCesur && questProgress.talkedToTavuk && questProgress.talkedToCivciv;
var royalTalks = questProgress.talkedToZumrut && questProgress.talkedToIsmet && questProgress.talkedToKamil;
var heroTalks = questProgress.talkedToAhmet && questProgress.talkedToFikret && questProgress.talkedToSelim && questProgress.talkedToNermin && questProgress.talkedToGokhan && questProgress.talkedToPiril && questProgress.talkedToSahin && questProgress.talkedToCemal && questProgress.talkedToTimur && questProgress.talkedToYasin && questProgress.talkedToMert && questProgress.talkedToSamet && questProgress.talkedToKadir && questProgress.talkedToZeki && questProgress.talkedToFuat && questProgress.talkedToCengiz && questProgress.talkedToGaye && questProgress.talkedToDeniz && questProgress.talkedToAlp && questProgress.talkedToBurak;
var allTalks = basicTalks && royalTalks && heroTalks;
if (allTalks) {
if (gamePhase === 'introduction') {
gamePhase = 'exploration';
phaseText.setText('Karanlık Tehdit');
// Spawn the dark fox
darkFox.visible = true;
darkFox.activate();
LK.setTimeout(function () {
showDialog('Haşmet Baba', 'Artık krallığımızın tüm halkıyla tanıştım. Kara Tilki ortaya çıktı! Krallığımızı korumalıyım!');
}, 1000);
}
}
}
// Skip quest function
function skipQuest() {
if (gamePhase === 'introduction') {
// Mark all NPCs as talked to
questProgress.talkedToCesur = true;
questProgress.talkedToTavuk = true;
questProgress.talkedToCivciv = true;
questProgress.talkedToZumrut = true;
questProgress.talkedToIsmet = true;
questProgress.talkedToKamil = true;
questProgress.talkedToAhmet = true;
questProgress.talkedToFikret = true;
questProgress.talkedToSelim = true;
questProgress.talkedToNermin = true;
questProgress.talkedToGokhan = true;
questProgress.talkedToPiril = true;
questProgress.talkedToSahin = true;
questProgress.talkedToCemal = true;
questProgress.talkedToTimur = true;
questProgress.talkedToYasin = true;
questProgress.talkedToMert = true;
questProgress.talkedToSamet = true;
questProgress.talkedToKadir = true;
questProgress.talkedToZeki = true;
questProgress.talkedToFuat = true;
questProgress.talkedToCengiz = true;
questProgress.talkedToGaye = true;
questProgress.talkedToDeniz = true;
questProgress.talkedToAlp = true;
questProgress.talkedToBurak = true;
// Trigger quest progress check
checkQuestProgress();
LK.getSound('click').play();
}
}
// Game controls
game.down = function (x, y, obj) {
if (!dialogSystem.visible) {
// Check if skip button was clicked
var skipButtonBounds = {
x: LK.gui.bottom.x + skipButton.x - skipButton.width / 2,
y: LK.gui.bottom.y + skipButton.y - skipButton.height / 2,
width: skipButton.width,
height: skipButton.height
};
var globalPos = game.toGlobal({
x: x,
y: y
});
if (globalPos.x >= skipButtonBounds.x && globalPos.x <= skipButtonBounds.x + skipButtonBounds.width && globalPos.y >= skipButtonBounds.y && globalPos.y <= skipButtonBounds.y + skipButtonBounds.height) {
skipQuest();
return;
}
king.moveTo(x);
}
};
game.update = function () {
// Update game phase text
if (gamePhase === 'introduction') {
phaseText.setText('Krallığın Tanıtımı - Tüm karakterlerle konuşun');
skipButton.visible = true;
skipButtonText.visible = true;
} else if (gamePhase === 'exploration') {
phaseText.setText('Karanlık Tehdit - Kara Tilki\'ye dokunarak saldırın');
skipButton.visible = false;
skipButtonText.visible = false;
} else if (gamePhase === 'level_2') {
phaseText.setText('2. Seviye - Kara Savaşçı ile Tanışın');
instructionText.setText('Kara Savaşçı ve elemental civcivlerle konuşun ve gerçeği öğrenin!');
skipButton.visible = false;
skipButtonText.visible = false;
} else if (gamePhase === 'republic_council') {
phaseText.setText('Krallık Meclisi');
instructionText.setText('Haşmet Baba halkı toplayarak krallığı Cumhuriyet yapma kararı aldı. Herkes oy veriyor!');
skipButton.visible = false;
skipButtonText.visible = false;
// Simulate voting process
if (LK.ticks % 180 === 0) {
// Characters move to show participation in voting
cesurHoroz.x += (Math.random() - 0.5) * 20;
sefkatliTavuk.x += (Math.random() - 0.5) * 20;
umutCivciv.x += (Math.random() - 0.5) * 20;
zumrutAna.x += (Math.random() - 0.5) * 15;
ozanIsmet.x += (Math.random() - 0.5) * 15;
}
// After some time in council, transition to celebration
if (LK.ticks % 300 === 0) {
// After 5 seconds
gamePhase = 'republic_celebration';
showDialog('Haşmet Baba', 'Oylar sayıldı! Krallığımız artık bir Cumhuriyet! Yeni düzen başlıyor!');
LK.setTimeout(function () {
showDialog('Kara Savaşçı', 'Cumhuriyet ile teknoloji getiriyorum! Krallık gelişecek, şehirler kurulacak!');
}, 3000);
}
} else if (gamePhase === 'republic_celebration') {
phaseText.setText('Cumhuriyet Bayramı Kutlaması');
instructionText.setText('Cumhuriyet Bayramı kutlu olsun! Krallık halkı meydanda toplanıyor!');
skipButton.visible = false;
skipButtonText.visible = false;
// Animate characters gathering in celebration
if (LK.ticks % 120 === 0) {
// Make characters move slightly to simulate celebration
cesurHoroz.x += (Math.random() - 0.5) * 10;
sefkatliTavuk.x += (Math.random() - 0.5) * 10;
umutCivciv.x += (Math.random() - 0.5) * 10;
}
// After celebration, transition to cyberpunk
if (LK.ticks % 300 === 0) {
// After 5 seconds
gamePhase = 'cyberpunk_kingdom';
// Switch to cyberpunk environment
sky.visible = false;
cyberpunkBg.visible = true;
for (var i = 0; i < cyberpunkBuildings.length; i++) {
cyberpunkBuildings[i].visible = true;
}
castle.visible = false;
castleRoof.visible = false;
// Hide old characters, show cyberpunk ones
king.visible = false;
oldHashmet.visible = true;
zumrutAna.visible = true; // Queen stays
herobrine.visible = true;
herobrine.activate();
karaSavasci.visible = true;
// Hide other NPCs
cesurHoroz.visible = false;
sefkatliTavuk.visible = false;
umutCivciv.visible = false;
LK.playMusic('cyberpunk');
showDialog('Haşmet Baba', 'Yıllar geçti... Krallık yıkıldı ve Herobrine etrafı patlattı! Cyberpunk krallığında yeni tehlikeler var!');
}
} else if (gamePhase === 'cyberpunk_kingdom') {
phaseText.setText('Cyberpunk Krallığı - Son Savaş');
instructionText.setText('Herobrine ve düşmanlarını yen! Kara Savaşçı ile birlikte savaş!');
skipButton.visible = false;
skipButtonText.visible = false;
// Spawn cyberpunk enemies
cyberpunkEnemySpawnTimer++;
if (cyberpunkEnemySpawnTimer >= 180) {
// Every 3 seconds
cyberpunkEnemySpawnTimer = 0;
if (cyberpunkEnemies.length < 4) {
var enemyType = Math.random() < 0.5 ? 'robot' : 'hacker';
var enemy;
if (enemyType === 'robot') {
enemy = game.addChild(new RobotEnemy());
} else {
enemy = game.addChild(new HackerEnemy());
}
enemy.x = Math.random() < 0.5 ? 100 : 1900;
enemy.y = 2280;
enemy.activate();
cyberpunkEnemies.push(enemy);
}
}
// Clean up destroyed enemies
for (var i = cyberpunkEnemies.length - 1; i >= 0; i--) {
if (cyberpunkEnemies[i].health <= 0) {
cyberpunkEnemies.splice(i, 1);
}
}
}
// Update quest counter
var totalTalked = 0;
var totalCharacters = 26; // 3 basic + 3 royal + 20 heroes
if (questProgress.talkedToCesur) totalTalked++;
if (questProgress.talkedToTavuk) totalTalked++;
if (questProgress.talkedToCivciv) totalTalked++;
if (questProgress.talkedToZumrut) totalTalked++;
if (questProgress.talkedToIsmet) totalTalked++;
if (questProgress.talkedToKamil) totalTalked++;
if (questProgress.talkedToAhmet) totalTalked++;
if (questProgress.talkedToFikret) totalTalked++;
if (questProgress.talkedToSelim) totalTalked++;
if (questProgress.talkedToNermin) totalTalked++;
if (questProgress.talkedToGokhan) totalTalked++;
if (questProgress.talkedToPiril) totalTalked++;
if (questProgress.talkedToSahin) totalTalked++;
if (questProgress.talkedToCemal) totalTalked++;
if (questProgress.talkedToTimur) totalTalked++;
if (questProgress.talkedToYasin) totalTalked++;
if (questProgress.talkedToMert) totalTalked++;
if (questProgress.talkedToSamet) totalTalked++;
if (questProgress.talkedToKadir) totalTalked++;
if (questProgress.talkedToZeki) totalTalked++;
if (questProgress.talkedToFuat) totalTalked++;
if (questProgress.talkedToCengiz) totalTalked++;
if (questProgress.talkedToGaye) totalTalked++;
if (questProgress.talkedToDeniz) totalTalked++;
if (questProgress.talkedToAlp) totalTalked++;
if (questProgress.talkedToBurak) totalTalked++;
if (gamePhase === 'introduction') {
if (totalTalked < totalCharacters) {
instructionText.setText('Tüm krallık halkı ile konuşun (' + totalTalked + '/' + totalCharacters + ')');
} else {
instructionText.setText('Tüm halkla konuştunuz! Karanlık tehdit yaklaşıyor...');
}
}
};
// Create cyberpunk background (initially hidden)
var cyberpunkBg = game.attachAsset('cyberpunkBackground', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
cyberpunkBg.visible = false;
// Create cyberpunk city buildings (initially hidden)
var cyberpunkBuildings = [];
for (var i = 0; i < 6; i++) {
var building = game.attachAsset('cityBuilding', {
anchorX: 0.5,
anchorY: 1.0,
x: 200 + i * 300,
y: 2300
});
building.visible = false;
cyberpunkBuildings.push(building);
}
// Create old Haşmet Baba for cyberpunk phase
var oldHashmet = game.attachAsset('oldHashmet', {
anchorX: 0.5,
anchorY: 1.0,
x: 800,
y: 2280
});
oldHashmet.visible = false;
// Create Herobrine boss
var herobrine = game.addChild(new Herobrine());
herobrine.x = 1400;
herobrine.y = 2280;
herobrine.visible = false;
// Start background music
LK.playMusic('kingdom');
// Initial dialog
LK.setTimeout(function () {
showDialog('Haşmet Baba', 'Horozlar Krallığı\'na hoş geldiniz! Ben Haşmet Baba, krallığın bilge kralıyım. Tüm halkımızla konuşarak krallığımızı tanıyın!');
}, 1000);
sky. In-Game asset. 2d. High contrast. No shadows
Horoz. In-Game asset. 2d. High contrast. No shadows
tavuk. In-Game asset. 2d. High contrast. No shadows
civciv. In-Game asset. 2d. High contrast. No shadows
ground. In-Game asset. 2d. High contrast. No shadows
çim. In-Game asset. 2d. High contrast. No shadows
duvar (kare olsun düz kare ). In-Game asset. 2d. High contrast. No shadows
karanlık tilki. In-Game asset. 2d. High contrast. No shadows
kara savaşçı bir wither iskelet çok korkunç gözükür ama iyi biridir. In-Game asset. 2d. High contrast. No shadows
toprak civciv i. In-Game asset. 2d. High contrast. No shadows
hava civcivi. In-Game asset. 2d. High contrast. No shadows
hava civcivi mavi süper kahraman giysisi giymiş. In-Game asset. 2d. High contrast. No shadows
ateş civcivi. In-Game asset. 2d. High contrast. No shadows
su civcivi. In-Game asset. 2d. High contrast. No shadows