Code edit (1 edits merged)
Please save this source code
User prompt
https://upit.com/create/assets/sound/686157e193d0c7f3c0d2aba3 bu sesi öğreticinin sonuna koy sesi yükselt ve devamlı olsun atla dediğimşide bitsin sesi yükselt
User prompt
öğreticinin sonuna yapma onlar senin ruhunu istiyor kaçamayacaksınnı ekle bu yazı kırmızı olsun
Code edit (2 edits merged)
Please save this source code
User prompt
kemalle alakalı soruları oyundan kaldır
User prompt
oyunun başına bir öğretici ekle
Code edit (1 edits merged)
Please save this source code
User prompt
next day butonunu 200 den 300 egetir
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'fontSize')' in or related to this line: 'nextDayButtonChildren[i].style.fontSize = 200;' Line Number: 1254
User prompt
sonraki gün yazısını olabildiğince büyüt
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'fontSize')' in or related to this line: 'nextDayButtonChildren[i].style.fontSize = 120;' Line Number: 1254
User prompt
sonraki gün yazısını olabildiğince büyüt
User prompt
konuşma ların rengini siyah yap
User prompt
arka planı biraz daha korkunç yap
User prompt
arka plan gğzel ama yanıp sönene ışığı kaldır
User prompt
arka planı daha kaotik yap
User prompt
zaman sayacını beyaz yap
User prompt
OLAMADI
User prompt
KARAKTERLER KEMALLE ALAKALI SORU SORUNCA KAYBOLMASIN
User prompt
GERİ GELMEDİ
User prompt
KEMALLE İLGİLİ SORU SORUNCA KAPATA BASINCA EKRANDAN KAYBOOAN HERŞEY GERİ GELSİN KARAKTERLER DE
User prompt
KEMASLLE İLGİLİ SORU SORUNCA HER ŞEY GERİ GELSİN
User prompt
KEMALLE İLGİLİ SORU SORUNCA YAZILARDAN SADECE KEMALE SORU SORDUĞUMUZ YER GŞTSDŞN
User prompt
BEN KEMALLLE ALAKALI BİR SORU SORDUM CEVAP VERİNCE KARAKTERLER VE TĞM YAZILAR GİTTİ
User prompt
KEMALLE İLGİLİŞ SORU SORDUĞUMUZDA VE CEVAP VERDİĞİNDE CEVAP OKUNMUYOR YAZILAR BİRBİRİNE KARIŞIYOR
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var ActionButton = Container.expand(function (text, action) { var self = Container.call(this); var buttonBg = self.attachAsset('actionButton', { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2(text, { size: 36, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.action = action; self.down = function (x, y, obj) { if (self.action) { self.action(); LK.getSound('click').play(); } }; return self; }); var ArrowButton = Container.expand(function (direction, onPress) { var self = Container.call(this); var arrow = self.attachAsset('actionButton', { anchorX: 0.5, anchorY: 0.5 }); var arrowText = new Text2(direction, { size: 36, fill: 0xFFFFFF }); arrowText.anchor.set(0.5, 0.5); self.addChild(arrowText); self.down = function () { if (onPress) { self.holdInterval = LK.setInterval(onPress, 50); // Further increase speed by calling onPress every 50ms } }; self.up = function () { if (self.holdInterval) { LK.clearInterval(self.holdInterval); self.holdInterval = null; } }; return self; }); var Character = Container.expand(function (name, disorder, initialSanity, triggers, calmers) { var self = Container.call(this); self.name = name; self.disorder = disorder; self.maxSanity = 100; self.sanity = initialSanity || 100; self.triggers = triggers || []; self.calmers = calmers || []; self.lastInteractionDay = 0; self.isDangerous = false; var cardBg = self.attachAsset('characterCard', { anchorX: 0.5, anchorY: 0.5 }); var nameText = new Text2(self.name, { size: 48, fill: 0xFFFFFF }); nameText.anchor.set(0.5, 0); nameText.x = 0; nameText.y = -120; self.addChild(nameText); // Disorder text removed - players must discover disorders through interaction var sanityBg = self.attachAsset('sanityBarBg', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 60 }); var sanityBar = self.attachAsset('sanityBar', { anchorX: 0, anchorY: 0.5, x: -100, y: 60 }); var sanityText = new Text2(self.sanity + "/100", { size: 42, fill: 0xFFFFFF }); sanityText.anchor.set(0.5, 0.5); sanityText.x = 0; sanityText.y = 85; self.addChild(sanityText); self.updateSanity = function (amount) { self.sanity = Math.max(0, Math.min(100, self.sanity + amount)); var sanityPercent = self.sanity / self.maxSanity; sanityBar.width = 200 * sanityPercent; if (sanityPercent > 0.6) { sanityBar.tint = 0x228b22; } else if (sanityPercent > 0.3) { sanityBar.tint = 0xffa500; } else { sanityBar.tint = 0xff0000; } sanityText.setText(self.sanity + "/100"); // Check if sanity has reached zero if (self.sanity === 0) { // Trigger self-destruction and game over showEnding("KÖTÜ", self.name + " akıl sağlığını tamamen kaybetti ve kendine zarar verdi. Durum kontrol edilemez hale geldi."); } // Check for aggressive state (below 30) if (self.sanity < 30 && !self.isDangerous) { self.isDangerous = true; self.isAggressive = true; LK.getSound('warning').play(); cardBg.tint = 0x8b0000; // Dark red for aggressive } else if (self.sanity >= 30 && self.isDangerous) { self.isDangerous = false; self.isAggressive = false; cardBg.tint = 0xffffff; } // Check for helpful state (above 90) if (self.sanity > 90) { self.isHelpful = true; cardBg.tint = 0x00ff00; // Green for helpful } else { self.isHelpful = false; } }; self.clickCount = 0; self.lastClickTime = 0; self.down = function (x, y, obj) { if (currentGameState === "playing" && timeLeft > 0) { var currentTime = LK.ticks; // Check for double click (within 30 ticks = 0.5 seconds) if (currentTime - self.lastClickTime < 30) { self.clickCount++; if (self.clickCount >= 2) { // Show tutorial hint for double click if tutorial is active if (tutorialActive) { dialogueBox.showDialogue("İyi! Çift tıklama ile Kemal hakkında sorular sorabilirsiniz.", 2000); } // Show Kemal-related questions - characters stay visible showKemalQuestions(); self.clickCount = 0; return; } } else { self.clickCount = 1; } self.lastClickTime = currentTime; selectedCharacter = self; // Show tutorial hint for first character interaction if (tutorialActive && tutorialStep >= 8) { dialogueBox.showDialogue("Mükemmel! Şimdi bir eylem seçin. Akıl sağlığı çubuğuna dikkat edin.", 3000); } showCharacterActions(); LK.getSound('click').play(); } }; return self; }); var DialogueBox = Container.expand(function () { var self = Container.call(this); var dialogueBg = self.attachAsset('dialogueBox', { anchorX: 0.5, anchorY: 0.5 }); var dialogueText = new Text2("", { size: 48, fill: 0x000000 }); dialogueText.anchor.set(0.5, 0.5); self.addChild(dialogueText); self.showDialogue = function (text, duration) { // Clear any existing skip buttons first var existingButtons = self.children.filter(function (child) { return child instanceof ActionButton; }); for (var i = 0; i < existingButtons.length; i++) { existingButtons[i].destroy(); } dialogueText.setText(text); self.visible = true; // Add skip button var skipButton = new ActionButton("Atla", function () { self.visible = false; skipButton.destroy(); }); skipButton.x = 0; skipButton.y = 200; self.addChild(skipButton); // Removed automatic timeout to keep dialogue on screen until skip button is pressed }; self.visible = false; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2d1810 }); /**** * Game Code ****/ // Game State Variables var currentDay = 1; var timeLeft = 100; var maxTimePerDay = 100; var currentGameState = "playing"; // playing, gameOver, victory var selectedCharacter = null; var actionMenuVisible = false; var discoveredDisorders = {}; var knowledgeBookVisible = false; var diagnosisAttempts = {}; // Chaos Background Variables var chaosParticles = []; var chaosIntensity = 1.0; var backgroundFlickerTimer = 0; var chaosNoiseElements = []; // Disorder Information var disorderInfo = { "Paranoid Bozukluk": "Sürekli şüphe ve güvensizlik hissi. Başkalarının kendisine zarar vereceği inancı. Göz temasından kaçınma, yalnız kalmayı tercih etme.", "Şizofreni": "Gerçekle bağlantının kopması, sesler duyma, halüsinasyonlar. Yumuşak sesle konuşmayı sever, müzik rahatlatır.", "Bipolar Bozukluk": "Aşırı neşeli (mani) ve aşırı üzgün (depresif) dönemler arasında gidip gelme. Mod değişimleri ani olabilir.", "OKB": "Obsesif düşünceler ve kompulsif davranışlar. Temizlik, düzen ve simetri takıntısı. Rutinlerin bozulması paniğe sebep olur.", "Dissosiyatif Kimlik Bozukluğu": "Çoklu kişilik. Farklı zamanlarda farklı kişiliklere bürünme. Nazik, çocuksu veya karanlık kişilikler sergileyebilir." }; // Characters Data var charactersData = [{ name: "Kemal", disorder: "Bipolar Bozukluk", sanity: 85, triggers: ["criticism", "restrictions", "boredom", "artwork moved"], calmers: ["activities", "praise", "routine", "engagement"], personality: "bipolar", currentMood: "normal", // can be: manic, depressive, normal lastAction: "", sameActionCount: 0 }, { name: "Yusuf", disorder: "Paranoid Bozukluk", sanity: 80, triggers: ["sudden movements", "being watched", "loud noises", "eye contact"], calmers: ["honesty", "being left alone", "quiet environment", "trust building"], personality: "paranoid", currentMood: "suspicious", lastAction: "", sameActionCount: 0 }, { name: "Elif", disorder: "Şizofreni", sanity: 70, triggers: ["confrontation", "judgment", "disbelief"], calmers: ["listening", "music", "soft voice", "validation"], personality: "schizophrenic", currentMood: "hearing_voices", lastAction: "", sameActionCount: 0 }, { name: "Kemal", disorder: "Bipolar Bozukluk", sanity: 85, triggers: ["criticism", "restrictions", "boredom"], calmers: ["activities", "praise", "routine", "engagement"], personality: "bipolar", currentMood: "normal", // can be: manic, depressive, normal lastAction: "", sameActionCount: 0 }, { name: "Zeynep", disorder: "OKB", sanity: 90, triggers: ["disorder", "asymmetry", "dirty objects", "interrupted rituals"], calmers: ["organization", "cleaning together", "respecting routines", "symmetry"], personality: "ocd", currentMood: "anxious", lastAction: "", sameActionCount: 0 }, { name: "Mehmet", disorder: "Dissosiyatif Kimlik Bozukluğu", sanity: 75, triggers: ["trauma reminders", "stress", "dark personality emergence"], calmers: ["personality-appropriate response", "safe spaces", "gentle approach"], personality: "did", currentMood: "gentle", // can be: gentle, child, dark timeOfLastChange: 0, lastAction: "", sameActionCount: 0 }]; // Create Characters var characters = []; for (var i = 0; i < charactersData.length; i++) { var data = charactersData[i]; var character = new Character(data.name, data.disorder, data.sanity, data.triggers, data.calmers); character.personality = data.personality; character.currentMood = data.currentMood; character.timeOfLastChange = data.timeOfLastChange || 0; character.isAggressive = false; character.isHelpful = false; character.lastAction = data.lastAction || ""; character.sameActionCount = data.sameActionCount || 0; characters.push(character); game.addChild(character); } // Position Characters in Grid var startX = 400; var startY = 400; var spacingX = 400; var spacingY = 350; for (var i = 0; i < characters.length; i++) { var row = Math.floor(i / 3); var col = i % 3; characters[i].x = startX + col * spacingX; characters[i].y = startY + row * spacingY; } // Create Chaotic Background Elements - Horror Theme for (var i = 0; i < 30; i++) { var particle = game.attachAsset('chaosParticle', { anchorX: 0.5, anchorY: 0.5, x: Math.random() * 2048, y: Math.random() * 2732, alpha: 0.4 }); particle.speedX = (Math.random() - 0.5) * 4; particle.speedY = (Math.random() - 0.5) * 4; particle.rotationSpeed = (Math.random() - 0.5) * 0.1; // Horror color tints - dark reds, purples, grays particle.tint = [0x8b0000, 0x800080, 0x2f4f4f, 0x8b008b, 0x696969][Math.floor(Math.random() * 5)]; chaosParticles.push(particle); } for (var i = 0; i < 20; i++) { var circle = game.attachAsset('chaosCircle', { anchorX: 0.5, anchorY: 0.5, x: Math.random() * 2048, y: Math.random() * 2732, alpha: 0.3 }); circle.pulseSpeed = Math.random() * 0.05 + 0.02; circle.pulsePhase = Math.random() * Math.PI * 2; // Dark horror colors for circles circle.tint = [0x8b0000, 0x4b0082, 0x2f2f2f, 0x800000][Math.floor(Math.random() * 4)]; chaosParticles.push(circle); } for (var i = 0; i < 80; i++) { var noise = game.attachAsset('chaosNoise', { anchorX: 0.5, anchorY: 0.5, x: Math.random() * 2048, y: Math.random() * 2732, alpha: 0.15 }); noise.flickerSpeed = Math.random() * 0.3 + 0.1; // Dark, unsettling colors for noise noise.tint = [0x8b0000, 0x2f4f4f, 0x8b008b, 0x000000, 0x800080][Math.floor(Math.random() * 5)]; chaosNoiseElements.push(noise); } // Add creepy shadow elements for (var i = 0; i < 15; i++) { var shadow = game.attachAsset('chaosParticle', { anchorX: 0.5, anchorY: 0.5, x: Math.random() * 2048, y: Math.random() * 2732, alpha: 0.6, scaleX: 2 + Math.random() * 3, scaleY: 0.3 + Math.random() * 0.7 }); shadow.tint = 0x000000; // Pure black shadows shadow.speedX = (Math.random() - 0.5) * 1.5; shadow.speedY = (Math.random() - 0.5) * 1.5; shadow.fadeDirection = Math.random() > 0.5 ? 1 : -1; chaosParticles.push(shadow); } // UI Elements var dayPanel = game.attachAsset('dayPanel', { anchorX: 0.5, anchorY: 0, x: 1024, y: 50 }); var dayText = new Text2("Gün " + currentDay + "/20", { size: 54, fill: 0xFFFFFF }); dayText.anchor.set(0.5, 0.5); dayText.x = 1024; dayText.y = 110; game.addChild(dayText); var timeText = new Text2("Zaman: " + timeLeft, { size: 42, fill: 0xFFFFFF }); timeText.anchor.set(0.5, 0.5); timeText.x = 1024; timeText.y = 150; game.addChild(timeText); // Action Buttons var actionButtons = []; var actionButtonsContainer = new Container(); actionButtonsContainer.x = 1024; actionButtonsContainer.y = 1800; actionButtonsContainer.visible = false; game.addChild(actionButtonsContainer); // Dialogue System var dialogueBox = new DialogueBox(); dialogueBox.x = 1024; dialogueBox.y = 1366; // Center vertically on screen game.addChild(dialogueBox); // Action Definitions var actions = [{ text: "Empatik Konuşma", cost: 15, effect: function effect(character) { var response = getCharacterResponse(character, "empathetic_talk"); character.updateSanity(response.sanityChange); dialogueBox.showDialogue(response.dialogue, 3000); } }, { text: "Sanat Terapisi", cost: 25, effect: function effect(character) { var response = getCharacterResponse(character, "art_therapy"); character.updateSanity(response.sanityChange); dialogueBox.showDialogue(response.dialogue, 3000); } }, { text: "Birlikte Okuma", cost: 20, effect: function effect(character) { var response = getCharacterResponse(character, "read_together"); character.updateSanity(response.sanityChange); dialogueBox.showDialogue(response.dialogue, 3000); } }, { text: "Düzenleme/Temizlik", cost: 30, effect: function effect(character) { var response = getCharacterResponse(character, "organize"); character.updateSanity(response.sanityChange); dialogueBox.showDialogue(response.dialogue, 3000); } }, { text: "Alan Verme", cost: 10, effect: function effect(character) { var response = getCharacterResponse(character, "give_space"); character.updateSanity(response.sanityChange); dialogueBox.showDialogue(response.dialogue, 3000); } }]; function getCharacterResponse(character, actionType) { if (character.isAggressive) { // Aggressive characters now engage in verbal conflicts instead of physical fights var aggressiveDialogues = [character.name + ": 'Senin tavsiyelerinden bıktım! Hep aynı şeyleri söylüyorsun!'", character.name + ": 'Beni anlamıyorsun! Kimse anlamıyor zaten!'", character.name + ": 'Yeter artık! Bırak beni rahat, sürekli peşimde dolaşma!'", character.name + ": 'Sen de diğerleri gibisin, sadece beni kontrol etmeye çalışıyorsun!'", character.name + ": 'Bu yaptıklarının hiçbir anlamı yok! Boşuna uğraşıyorsun!'"]; return { sanityChange: -10, dialogue: aggressiveDialogues[Math.floor(Math.random() * aggressiveDialogues.length)] }; } if (character.isHelpful) { return { sanityChange: 5, dialogue: character.name + " harika ruh halinde ve çabanızı takdir ediyor. Hatta başkalarına da yardım ediyor!" }; } // Character-specific responses based on personality and mood if (character.personality === "paranoid") { if (Math.random() < 0.1) { return { sanityChange: 5, dialogue: "Yusuf: 'Senin yanında biraz daha güvende hissediyorum… bu nadir bir şey.'" }; } else if (Math.random() < 0.2) { return { sanityChange: 5, dialogue: "Yusuf: 'Belki herkes düşman değildir… senin gibi biri varsa.'" }; } else if (Math.random() < 0.3) { return { sanityChange: 5, dialogue: "Yusuf: 'Bugün kimse beni izlemedi. Belki bu senin sayendedir.'" }; } else if (Math.random() < 0.4) { return { sanityChange: 5, dialogue: "Yusuf: 'Dün gece rahat uyudum. Sanırım sesler azaldı.'" }; } else if (Math.random() < 0.5) { return { sanityChange: 5, dialogue: "Yusuf: 'Söylediğin sözler… beni düşündürdü. Teşekkür ederim.'" }; } else if (Math.random() < 0.6) { return { sanityChange: 5, dialogue: "Yusuf: 'Sana bir sır vereceğim. Çünkü güvenmeye başladım.'" }; } else if (Math.random() < 0.7) { return { sanityChange: 5, dialogue: "Yusuf: 'İlk defa bu evde sessizlik huzur verdi.'" }; } else if (Math.random() < 0.8) { return { sanityChange: 5, dialogue: "Yusuf: 'Bugün beni yalnız bırakmadığın için… minnettarım.'" }; } else if (Math.random() < 0.9) { return { sanityChange: 5, dialogue: "Yusuf: 'Artık pencereden dışarı bakabiliyorum. Korkmuyorum.'" }; } else { return { sanityChange: 5, dialogue: "Yusuf: 'Belki… bu evden birlikte çıkabiliriz.'" }; } if (Math.random() < 0.1) { return { sanityChange: -5, dialogue: "Yusuf: 'Duvarın içinde bir şey var… titreşimi hissedebiliyor musun?'" }; } else if (Math.random() < 0.2) { return { sanityChange: -5, dialogue: "Yusuf: 'Kapının ardında biri vardı az önce. Gözlerini kırpmadın mı sen?'" }; } else if (Math.random() < 0.3) { return { sanityChange: -5, dialogue: "Yusuf: 'Kimseye güvenme. Özellikle gece saatlerinde.'" }; } else if (Math.random() < 0.4) { return { sanityChange: -5, dialogue: "Yusuf: 'Senin odana kim giriyor geceleri?'" }; } else if (Math.random() < 0.5) { return { sanityChange: -5, dialogue: "Yusuf: 'Sana güvenmeye başlıyorum… ama bu da bir tuzak olabilir.'" }; } else if (Math.random() < 0.6) { return { sanityChange: -5, dialogue: "Yusuf: 'Kameraları kapattım ama hala izleniyorum.'" }; } else if (Math.random() < 0.7) { return { sanityChange: -5, dialogue: "Yusuf: 'Sana bir şey soracağım… dürüst ol. Sen de bir deneksin, değil mi?'" }; } else if (Math.random() < 0.8) { return { sanityChange: -5, dialogue: "Yusuf: 'Her şeyin başı radyo dalgaları. Bunlar zihin kontrolü yapıyor.'" }; } else if (Math.random() < 0.9) { return { sanityChange: -5, dialogue: "Yusuf: 'Dün gece biri odama geldi. Gölgesi vardı ama ayak sesi yoktu.'" }; } else { return { sanityChange: -5, dialogue: "Yusuf: 'Gözlüğüm yok ama senin yüzündeki maske düşmedi henüz.'" }; } if (actionType === "empathetic_talk") { return Math.random() > 0.5 ? { sanityChange: 10, dialogue: "Yusuf: 'Dürüst görünüyorsun... belki sana biraz güvenebilirim.'" } : { sanityChange: -5, dialogue: "Yusuf: 'Sen de onlar gibisin, benden bilgi almaya çalışıyorsun!'" }; } else if (actionType === "give_space") { return { sanityChange: 8, dialogue: "Yusuf: 'Beni yalnız bıraktığın için teşekkürler. Düşünmem gerekiyor.'" }; } else { return { sanityChange: -3, dialogue: "Yusuf: 'Beni kontrol etmeye çalışmayı kes! Ne yaptığını biliyorum.'" }; } } else if (character.personality === "schizophrenic") { if (Math.random() < 0.1) { return { sanityChange: 5, dialogue: "Elif: 'Sesler azaldı. Sanırım seninle konuşmak onlara iyi geliyor.'" }; } else if (Math.random() < 0.2) { return { sanityChange: 5, dialogue: "Elif: 'Ben senin yanındayken daha az yalnızım.'" }; } else if (Math.random() < 0.3) { return { sanityChange: 5, dialogue: "Elif: 'Senin sesin diğerlerinden farklı. Net ve sakin.'" }; } else if (Math.random() < 0.4) { return { sanityChange: 5, dialogue: "Elif: 'Bugün duvar sessizdi… güzel bir sessizlik.'" }; } else if (Math.random() < 0.5) { return { sanityChange: 5, dialogue: "Elif: 'Eğer bu gerçekse, sen de gerçeksin. Bu iyi bir şey.'" }; } else if (Math.random() < 0.6) { return { sanityChange: 5, dialogue: "Elif: 'Senin bana inanman beni sakinleştiriyor.'" }; } else if (Math.random() < 0.7) { return { sanityChange: 5, dialogue: "Elif: 'Resim yaptım. Renkleri seninle seçtim hayalimde.'" }; } else if (Math.random() < 0.8) { return { sanityChange: 5, dialogue: "Elif: 'Kendimi ilk kez ‘ben’ gibi hissediyorum.'" }; } else if (Math.random() < 0.9) { return { sanityChange: 5, dialogue: "Elif: 'Onlar artık sadece fısıldıyor. Belki yakında susarlar.'" }; } else { return { sanityChange: 5, dialogue: "Elif: 'Ben sana güveniyorum. Bu çok nadir olur.'" }; } if (Math.random() < 0.1) { return { sanityChange: -5, dialogue: "Elif: 'Beni çağırıyorlar. Duvardaki çatlak bile konuşuyor.'" }; } else if (Math.random() < 0.2) { return { sanityChange: -5, dialogue: "Elif: 'Kafamın içinde üç kişi var. Biri susmak bilmiyor.'" }; } else if (Math.random() < 0.3) { return { sanityChange: -5, dialogue: "Elif: 'Sana fısıldayan bir kadın sesi duyuyor musun? Çok güzel şarkı söylüyor…'" }; } else if (Math.random() < 0.4) { return { sanityChange: -5, dialogue: "Elif: 'Ben buraya ait değilim. Onlar da değil.'" }; } else if (Math.random() < 0.5) { return { sanityChange: -5, dialogue: "Elif: 'Eğer yeterince sessiz olursan duvarlar sana hikaye anlatır.'" }; } else if (Math.random() < 0.6) { return { sanityChange: -5, dialogue: "Elif: 'Gözlerini kapatınca ne görüyorsun? Ben oradayım.'" }; } else if (Math.random() < 0.7) { return { sanityChange: -5, dialogue: "Elif: 'Kırmızı çiçek bana gülümsedi. Ama kan kokuyordu.'" }; } else if (Math.random() < 0.8) { return { sanityChange: -5, dialogue: "Elif: 'Ben gerçek miyim? Ya sen?'" }; } else if (Math.random() < 0.9) { return { sanityChange: -5, dialogue: "Elif: 'Bugün kuşlar bana bir şey anlattı. Ama unuttum.'" }; } else { return { sanityChange: -5, dialogue: "Elif: 'Gözlerimi kapatınca bu ev çöküyor. Açınca yeniden kuruluyor.'" }; } if (actionType === "empathetic_talk") { return { sanityChange: 15, dialogue: "Elif: 'Seslere inandın mı? Beni dinlediğin için teşekkürler.'" }; } else if (actionType === "art_therapy") { return { sanityChange: 12, dialogue: "Elif: 'Müzik sesleri daha sessiz yapıyor. Bu çok yardımcı oluyor.'" }; } else { return { sanityChange: -8, dialogue: "Elif: 'Sesler daha yüksek oluyor! Yaptığın şeyi sevmiyorlar!'" }; } } else if (character.personality === "bipolar") { if (Math.random() < 0.1) { return { sanityChange: 5, dialogue: "Kemal: 'Bugün duygularım dengede. Seninle konuşmak iyi geldi.'" }; } else if (Math.random() < 0.2) { return { sanityChange: 5, dialogue: "Kemal: 'Gülmek uzun zamandır bu kadar kolay olmamıştı.'" }; } else if (Math.random() < 0.3) { return { sanityChange: 5, dialogue: "Kemal: 'Seninle yaptığımız küçük şeyler beni hayatta tutuyor.'" }; } else if (Math.random() < 0.4) { return { sanityChange: 5, dialogue: "Kemal: 'Enerjim yükseliyor ama bu sefer korkutmuyor.'" }; } else if (Math.random() < 0.5) { return { sanityChange: 5, dialogue: "Kemal: 'Artık düşüşler bile beni ezmiyor. Sen varsan.'" }; } else if (Math.random() < 0.6) { return { sanityChange: 5, dialogue: "Kemal: 'Hayatın anlamı bazen sadece bir sohbet oluyor.'" }; } else if (Math.random() < 0.7) { return { sanityChange: 5, dialogue: "Kemal: 'Senin gözlerin, içimdeki fırtınaları dindiriyor.'" }; } else if (Math.random() < 0.8) { return { sanityChange: 5, dialogue: "Kemal: 'Birlikteyken zaman geçiyor, yalnız değilim.'" }; } else if (Math.random() < 0.9) { return { sanityChange: 5, dialogue: "Kemal: 'Kendimle barışmaya çalışıyorum… seninle başlayarak.'" }; } else { return { sanityChange: 5, dialogue: "Kemal: 'Umarım dışarı çıktığımızda da sen yanımda olursun.'" }; } if (Math.random() < 0.1) { return { sanityChange: -5, dialogue: "Kemal: 'Haydi! Dans edelim! Neden hâlâ ayaktasın?'" }; } else if (Math.random() < 0.2) { return { sanityChange: -5, dialogue: "Kemal: 'Hiçbir şeyin anlamı yok. Neden uğraşıyoruz ki?'" }; } else if (Math.random() < 0.3) { return { sanityChange: -5, dialogue: "Kemal: 'Yeni bir tablo yaptım! Tüm duvarları kaplasak mı?'" }; } else if (Math.random() < 0.4) { return { sanityChange: -5, dialogue: "Kemal: 'Bugün seni gerçekten seviyorum. Yarın değişebilir ama şu an önemli.'" }; } else if (Math.random() < 0.5) { return { sanityChange: -5, dialogue: "Kemal: 'Bu ev sıkıcı. Bu duvarları yıksak ne olur?'" }; } else if (Math.random() < 0.6) { return { sanityChange: -5, dialogue: "Kemal: 'Senden nefret ediyorum. Ama bunu ciddiye alma, birazdan geçer.'" }; } else if (Math.random() < 0.7) { return { sanityChange: -5, dialogue: "Kemal: 'Beni kimse anlamıyor. Sen bile. Özellikle sen.'" }; } else if (Math.random() < 0.8) { return { sanityChange: -5, dialogue: "Kemal: 'Çok yüksekteyim şu an. Düşmek istemiyorum.'" }; } else if (Math.random() < 0.9) { return { sanityChange: -5, dialogue: "Kemal: 'Eğer öleceksek en azından güzel bir akorla ölelim.'" }; } else { return { sanityChange: -5, dialogue: "Kemal: 'Beni unutma olur mu? Ben bazen kendimi unutuyorum çünkü.'" }; } if (character.currentMood === "manic") { if (actionType === "empathetic_talk") { return { sanityChange: -5, dialogue: "Kemal: 'Konuşmak sıkıcı! Hadi tüm duvarları boyayalım ve dans edelim!'" }; } else if (actionType === "art_therapy") { return { sanityChange: 10, dialogue: "Kemal: 'EVET! Bu mükemmel! Harika bir şey yaratalım!'" }; } else { return { sanityChange: -10, dialogue: "Kemal: 'Beni yavaşlatmaya çalışıyorsun! Her şey için enerjim var!'" }; } } else if (character.currentMood === "depressive") { if (actionType === "empathetic_talk") { return { sanityChange: 12, dialogue: "Kemal: 'Umursayan birinin olması iyi hissettiriyor... belki bugün o kadar karanlık olmaz.'" }; } else { return { sanityChange: 2, dialogue: "Kemal: 'Artık hiçbir şeyin anlamı yok... ama denediğin için teşekkürler.'" }; } } else { return { sanityChange: 6, dialogue: "Kemal: 'Çabanı takdir ediyorum. Bugün daha dengeli hissediyorum.'" }; } } else if (character.personality === "ocd") { if (Math.random() < 0.1) { return { sanityChange: 5, dialogue: "Zeynep: 'Bugün her şey neredeyse mükemmeldi… ve bu yeterliydi.'" }; } else if (Math.random() < 0.2) { return { sanityChange: 5, dialogue: "Zeynep: 'Senin bana yardım etmen, içimi rahatlattı.'" }; } else if (Math.random() < 0.3) { return { sanityChange: 5, dialogue: "Zeynep: 'Odayı birlikte düzenlemek bana iyi geldi.'" }; } else if (Math.random() < 0.4) { return { sanityChange: 5, dialogue: "Zeynep: 'Düşüncelerim hâlâ hızlı ama artık korkutucu değiller.'" }; } else if (Math.random() < 0.5) { return { sanityChange: 5, dialogue: "Zeynep: 'Kontrol edemediğim şeyleri seninle daha kolay kabulleniyorum.'" }; } else if (Math.random() < 0.6) { return { sanityChange: 5, dialogue: "Zeynep: 'Ellerim hala titriyor ama artık yalnız hissetmiyorum.'" }; } else if (Math.random() < 0.7) { return { sanityChange: 5, dialogue: "Zeynep: 'Sen benim düzenim gibi… güvenilir.'" }; } else if (Math.random() < 0.8) { return { sanityChange: 5, dialogue: "Zeynep: 'Bir şeyleri paylaşmak her şeyi düzene sokuyor gibi.'" }; } else if (Math.random() < 0.9) { return { sanityChange: 5, dialogue: "Zeynep: 'Bugün kriz yaşamadım. Belki seninle alakalıdır.'" }; } else { return { sanityChange: 5, dialogue: "Zeynep: 'Artık mükemmel olmadan da değerli hissediyorum.'" }; } if (Math.random() < 0.1) { return { sanityChange: -5, dialogue: "Zeynep: 'Yastık kılıfını simetrik katladın mı? Gerçekten mi?'" }; } else if (Math.random() < 0.2) { return { sanityChange: -5, dialogue: "Zeynep: 'Bu sabah 11 kere ellerimi yıkadım. Hâlâ kirli hissediyorum.'" }; } else if (Math.random() < 0.3) { return { sanityChange: -5, dialogue: "Zeynep: 'Her şeyin yeri olmalı. Sen de yerini bilmiyorsun değil mi?'" }; } else if (Math.random() < 0.4) { return { sanityChange: -5, dialogue: "Zeynep: 'Eğer bu kalemi üç kere çevirmezsem… biri ölebilir.'" }; } else if (Math.random() < 0.5) { return { sanityChange: -5, dialogue: "Zeynep: 'Senin ayakkabının altını temizledin mi içeri girmeden önce?'" }; } else if (Math.random() < 0.6) { return { sanityChange: -5, dialogue: "Zeynep: 'Simetri tanrısal bir düzendir. Kaos ruhu bozar.'" }; } else if (Math.random() < 0.7) { return { sanityChange: -5, dialogue: "Zeynep: 'O resmi yamuk astın. Düzeltmeden çıkarsan başıma bir şey gelecek.'" }; } else if (Math.random() < 0.8) { return { sanityChange: -5, dialogue: "Zeynep: 'Bazen içimdeki ses, yedi adım atmadan yürümememi söylüyor.'" }; } else if (Math.random() < 0.9) { return { sanityChange: -5, dialogue: "Zeynep: 'Toz… her yerde toz var. Görmüyor musun?!'" }; } else { return { sanityChange: -5, dialogue: "Zeynep: 'Kontrol eder misin… beş defa mı kilitledin kapıyı? Emin misin?'" }; } if (actionType === "organize") { return { sanityChange: 20, dialogue: "Zeynep: 'Mükemmel! Artık her şey yerli yerinde. Çok daha iyi hissediyorum!'" }; } else if (actionType === "empathetic_talk") { return { sanityChange: 5, dialogue: "Zeynep: 'Düzen ihtiyacımı anladığın için teşekkürler.'" }; } else { return { sanityChange: -8, dialogue: "Zeynep: 'Hayır, hayır! Her şeyi dağınık yapıyorsun! Düzen yanlış!'" }; } } else if (character.personality === "did") { if (character.currentMood === "gentle") { if (Math.random() < 0.1) { return { sanityChange: 5, dialogue: "Mehmet: 'Seninle konuşmak, zihnimdeki uğultuyu azaltıyor.'" }; } else if (Math.random() < 0.2) { return { sanityChange: 5, dialogue: "Mehmet: 'İnsanlarla bağ kurabileceğimi unutmuştum. Sen hatırlattın.'" }; } else if (Math.random() < 0.3) { return { sanityChange: 5, dialogue: "Mehmet: 'Seninle satranç oynamak istiyorum çünkü beni düşünen biri gibisin.'" }; } else if (Math.random() < 0.4) { return { sanityChange: 5, dialogue: "Mehmet: 'Senin gibi biri varsa… içimdeki savaşlar belki de bitebilir.'" }; } else { return { sanityChange: 5, dialogue: "Mehmet: 'Kibar olmak sadece bir maske değilmiş. Senin yanında gerçek oluyor.'" }; } } else if (character.currentMood === "child") { if (Math.random() < 0.1) { return { sanityChange: 5, dialogue: "Mehmet (Çocuk): 'Bugün çok mutluyum! Seninle oyun oynamak harikaydı!'" }; } else if (Math.random() < 0.2) { return { sanityChange: 5, dialogue: "Mehmet (Çocuk): 'Sen bana kek verdin! En sevdiğim şey!'" }; } else if (Math.random() < 0.3) { return { sanityChange: 5, dialogue: "Mehmet (Çocuk): 'Ben kötü biri değilim, sen bana iyi olduğunu öğrettin.'" }; } else if (Math.random() < 0.4) { return { sanityChange: 5, dialogue: "Mehmet (Çocuk): 'Senin gibi biri abim olsun isterdim.'" }; } else { return { sanityChange: 5, dialogue: "Mehmet (Çocuk): 'Ben artık korkmuyorum… çünkü sen buradasın.'" }; } } else { // dark mood if (Math.random() < 0.1) { return { sanityChange: 5, dialogue: "Mehmet (Karanlık): 'Seninle konuştukça karanlık da susuyor bazen.'" }; } else if (Math.random() < 0.2) { return { sanityChange: 5, dialogue: "Mehmet (Karanlık): 'Senin sözlerin, içerideki diğer beni de etkiliyor… tuhaf.'" }; } else if (Math.random() < 0.3) { return { sanityChange: 5, dialogue: "Mehmet (Karanlık): 'Yalnız kalmak isterdim… ama seninle farklı.'" }; } else if (Math.random() < 0.4) { return { sanityChange: 5, dialogue: "Mehmet (Karanlık): 'İçimde ilk kez ışık hissettim. Kısa ama gerçek.'" }; } else { return { sanityChange: 5, dialogue: "Mehmet (Karanlık): 'Korkmak istemiyorum artık. Belki… yardım edebilirsin.'" }; } } if (character.currentMood === "gentle") { if (Math.random() < 0.1) { return { sanityChange: 5, dialogue: "Mehmet: 'Sanat, bu evin içinde en eksik şey. Bunu birlikte tamamlayabiliriz.'" }; } else if (Math.random() < 0.2) { return { sanityChange: 5, dialogue: "Mehmet: 'Kitaplığındaki boşluklar canımı sıkıyor. Eserlere haksızlık gibi.'" }; } else if (Math.random() < 0.3) { return { sanityChange: 5, dialogue: "Mehmet: 'Kendi zihnimi dinlemekten çok senin sesini duymak istiyorum.'" }; } else if (Math.random() < 0.4) { return { sanityChange: 5, dialogue: "Mehmet: 'Bugün seninle satranç oynamak isterim. Zihinlerimiz rekabet etsin.'" }; } else { return { sanityChange: 5, dialogue: "Mehmet: 'Bir fincan çayla her karanlık hafifler.'" }; } } else if (character.currentMood === "child") { if (Math.random() < 0.1) { return { sanityChange: 5, dialogue: "Mehmet (Çocuk): 'Ben saklandım, sen saydın mı? Saymadın bence!'" }; } else if (Math.random() < 0.2) { return { sanityChange: 5, dialogue: "Mehmet (Çocuk): 'Oyuncak ayım kayboldu. Onu gördün mü?'" }; } else if (Math.random() < 0.3) { return { sanityChange: 5, dialogue: "Mehmet (Çocuk): 'Sen bana masal anlatır mısın bu gece?'" }; } else if (Math.random() < 0.4) { return { sanityChange: 5, dialogue: "Mehmet (Çocuk): 'Yastık savaşı başlasın!'" }; } else { return { sanityChange: 5, dialogue: "Mehmet (Çocuk): 'Ben annemi özledim… sen onun yerini tutabilir misin?'" }; } } else { // dark mood if (Math.random() < 0.1) { return { sanityChange: -10, dialogue: "Mehmet (Karanlık): 'Onlar seni de terk etti. Ben de edeceğim.'" }; } else if (Math.random() < 0.2) { return { sanityChange: -10, dialogue: "Mehmet (Karanlık): 'Bu ev senden nefret ediyor. Duyabiliyorum.'" }; } else if (Math.random() < 0.3) { return { sanityChange: -10, dialogue: "Mehmet (Karanlık): 'Benim karanlığım senin içindekiyle konuştu. O anlaşmayı biliyoruz.'" }; } else if (Math.random() < 0.4) { return { sanityChange: -10, dialogue: "Mehmet (Karanlık): 'Senin kaçma şansın yok. Çünkü sen çoktan öldün.'" }; } else { return { sanityChange: -10, dialogue: "Mehmet (Karanlık): 'Bana dokunma. Yakarım seni.'" }; } } if (character.currentMood === "gentle") { return { sanityChange: 10, dialogue: "Mehmet: 'Günaydın dostum, nezaketin benim için çok anlamlı.'" }; } else if (character.currentMood === "child") { if (actionType === "empathetic_talk") { return { sanityChange: 15, dialogue: "Mehmet (Çocuk): 'Benimle oynayacak mısın? Korkuyorum ve yalnızım!'" }; } else { return { sanityChange: 8, dialogue: "Mehmet (Çocuk): 'Bu eğlenceli! Bana karşı çok naziksin!'" }; } } else { // dark mood if (actionType === "give_space") { return { sanityChange: 5, dialogue: "Mehmet (Karanlık): 'Akıllıca seçim. Şu anda yanımda olmak istemezsin.'" }; } else { return { sanityChange: -15, dialogue: "Mehmet (Karanlık): 'Acınası girişimlerin beni iğrendiriyor. Uzak dur.'" }; } } } return { sanityChange: 2, dialogue: character.name + " çabanızı takdir ediyor." }; } // Create Action Buttons for (var i = 0; i < actions.length; i++) { var action = actions[i]; var button = new ActionButton(action.text + " (-" + action.cost + ")", function (actionData) { return function () { if (selectedCharacter && timeLeft >= actionData.cost) { timeLeft -= actionData.cost; // Check for repetitive behavior if (selectedCharacter.lastAction === actionData.text) { selectedCharacter.sameActionCount++; if (selectedCharacter.sameActionCount >= 3) { selectedCharacter.updateSanity(-50); dialogueBox.showDialogue(selectedCharacter.name + ": 'Yeter artık! Hep aynı şeyi yapıyorsun, bıktım bu davranıştan!'", 3000); selectedCharacter.sameActionCount = 0; // Reset counter after penalty selectedCharacter.lastAction = ""; // Reset last action // Penalize all characters' sanity for (var j = 0; j < characters.length; j++) { characters[j].updateSanity(-30); } hideCharacterActions(); updateUI(); return; } } else { selectedCharacter.sameActionCount = 1; } selectedCharacter.lastAction = actionData.text; actionData.effect(selectedCharacter); selectedCharacter.lastInteractionDay = currentDay; hideCharacterActions(); updateUI(); } }; }(action)); button.y = i * 100; actionButtons.push(button); actionButtonsContainer.addChild(button); } // Add Close Button var closeButton = new ActionButton("Kapat", function () { hideCharacterActions(); }); closeButton.y = actions.length * 100; actionButtonsContainer.addChild(closeButton); // Next Day Button var nextDayButton = new ActionButton("Sonraki Gün", function () { if (currentDay < 20) { // Show tutorial hint for first day progression if (tutorialActive && currentDay === 1) { dialogueBox.showDialogue("İyi! Günler böyle ilerliyor. Her gün karakterlerle etkileşime geçmeyi unutmayın.", 3000); tutorialActive = false; // End tutorial after first day } nextDay(); } }); nextDayButton.x = 1024; nextDayButton.y = 2500; game.addChild(nextDayButton); // Make the next day button text much larger var nextDayButtonChildren = nextDayButton.children; for (var i = 0; i < nextDayButtonChildren.length; i++) { if (nextDayButtonChildren[i] instanceof Text2) { nextDayButtonChildren[i].size = 700; } } function showCharacterActions() { actionMenuVisible = true; actionButtonsContainer.visible = true; // Update button availability based on time for (var i = 0; i < actionButtons.length && i < actions.length; i++) { var button = actionButtons[i]; var actionCost = actions[i].cost; if (timeLeft >= actionCost) { button.alpha = 1.0; } else { button.alpha = 0.5; } } // Add special actions for Kemal's manic episode if (selectedCharacter.name === "Kemal" && selectedCharacter.currentMood === "manic") { var calmKemalButton = new ActionButton("Yatıştırıcı Konuşma", function () { var success = Math.random() > 0.5; if (success) { selectedCharacter.updateSanity(20); var calmDialogues = ["Kemal: 'Tamam, tamam... belki haklısın. Biraz sakinleşmeye çalışacağım.'", "Kemal: 'Senin sesinde bir şey var... beni rahatlatıyor. Teşekkür ederim.'", "Kemal: 'Bu kadar sinirli olmaya gerek yok değil mi? Özür dilerim.'", "Kemal: 'Derin nefes alacağım... sen de benimle al, olur mu?'"]; dialogueBox.showDialogue(calmDialogues[Math.floor(Math.random() * calmDialogues.length)], 3000); } else { selectedCharacter.updateSanity(-10); var resistDialogues = ["Kemal: 'Hayır! Beni durdurmaya çalışıyorsun! Özgür olmak istiyorum!'", "Kemal: 'Senin sakin sesine ihtiyacım yok! Enerjimi öldürmeye çalışıyorsun!'", "Kemal: 'Bırak beni! Bu hissi yaşamak istiyorum, engelleme beni!'", "Kemal: 'Anlamıyorsun! Bu enerji benim gerçek halim!'"]; dialogueBox.showDialogue(resistDialogues[Math.floor(Math.random() * resistDialogues.length)], 3000); } hideCharacterActions(); updateUI(); }); calmKemalButton.y = actionButtons.length * 100; actionButtons.push(calmKemalButton); actionButtonsContainer.addChild(calmKemalButton); var tackleKemalButton = new ActionButton("Sözle Engelleme", function () { var risk = Math.random() > 0.7; if (risk) { selectedCharacter.updateSanity(-30); var blockDialogues = ["Kemal: 'Dur! Neden beni engelliyorsun? Sadece konuşmak istiyorum!'", "Kemal: 'Pekala, pekala... belki biraz fazla heyecanlandım. Ama yine de haklıyım!'", "Kemal: 'Tamam duruyorum! Ama dinle beni, bu çok önemli!'"]; dialogueBox.showDialogue(blockDialogues[Math.floor(Math.random() * blockDialogues.length)], 3000); } else { selectedCharacter.updateSanity(-10); var resistBlockDialogues = ["Kemal: 'Hayır! Beni susturamayacaksın! Konuşacağım!'", "Kemal: 'Bu benim hakkım! Düşüncelerimi ifade etmeliyim!'", "Kemal: 'Engelleyemezsin beni! Herkese söyleyeceğim!'"]; dialogueBox.showDialogue(resistBlockDialogues[Math.floor(Math.random() * resistBlockDialogues.length)], 3000); } hideCharacterActions(); updateUI(); }); tackleKemalButton.y = (actionButtons.length + 1) * 100; actionButtons.push(tackleKemalButton); actionButtonsContainer.addChild(tackleKemalButton); var hideKemalButton = new ActionButton("Sessizce Dinle", function () { selectedCharacter.updateSanity(-10); var observeDialogues = ["Kemal: 'Kimse beni dinlemiyor... sadece izliyorlar. Bu çok üzücü.'", "Kemal: 'Konuşacak kimse yok... hepsi sessizce bakıyor bana.'", "Kemal: 'Belki haklıydılar... belki gerçekten çok gürültücüydüm.'"]; dialogueBox.showDialogue(observeDialogues[Math.floor(Math.random() * observeDialogues.length)], 3000); hideCharacterActions(); updateUI(); }); hideKemalButton.y = (actionButtons.length + 2) * 100; actionButtons.push(hideKemalButton); actionButtonsContainer.addChild(hideKemalButton); var talkWithElifButton = new ActionButton("Elif’le konuş ve onunla birlikte Kemal'e ulaş", function () { var success = Math.random() > 0.5; if (success) { selectedCharacter.updateSanity(20); dialogueBox.showDialogue("Elif: 'Kemal, senin sesini duyuyor. Birlikte yaklaşalım.'", 3000); } else { selectedCharacter.updateSanity(-10); dialogueBox.showDialogue("Kemal: 'Beni yavaşlatmaya çalışıyorsun! Her şey için enerjim var!'", 3000); } hideCharacterActions(); updateUI(); }); talkWithElifButton.y = (actionButtons.length + 3) * 100; actionButtons.push(talkWithElifButton); actionButtonsContainer.addChild(talkWithElifButton); } } function hideCharacterActions() { actionMenuVisible = false; actionButtonsContainer.visible = false; selectedCharacter = null; } function nextDay() { currentDay++; timeLeft = maxTimePerDay; // Clear any floating text elements from previous day var floatingTexts = game.children.filter(function (child) { return child instanceof Text2 && child !== dayText && child !== timeText && child !== bookText; }); for (var i = 0; i < floatingTexts.length; i++) { floatingTexts[i].destroy(); } // Hide dialogue box dialogueBox.visible = false; // Check for aggressive character attacks during night for (var i = 0; i < characters.length; i++) { var character = characters[i]; if (character.isAggressive && Math.random() < 0.3) { showEnding("KÖTÜ", character.name + " gece çok dengesizleşti ve saldırdı. Durum kontrol edilemez hale geldi."); return; } // Check for special nighttime event - Kemal disappearance if (currentDay === 8 && Math.random() < 0.8) { showNightTimeEvent(); return; // Exit early to handle the special sequence } } // Daily sanity decay for characters not interacted with for (var i = 0; i < characters.length; i++) { var character = characters[i]; if (character.lastInteractionDay < currentDay - 1) { character.updateSanity(-5); } // Mood changes for specific characters if (character.personality === "bipolar") { if (Math.random() < 0.4) { var moods = ["manic", "depressive", "normal"]; character.currentMood = moods[Math.floor(Math.random() * moods.length)]; } } else if (character.personality === "did") { // DID character changes personality based on time of day var hour = (maxTimePerDay - timeLeft) / maxTimePerDay * 24; if (hour < 8) { character.currentMood = "gentle"; } else if (hour < 16) { character.currentMood = "child"; } else if (hour < 20) { character.currentMood = "gentle"; } else { character.currentMood = "dark"; } } // Random daily events if (Math.random() < 0.3) { var randomChange = Math.floor(Math.random() * 10) - 5; character.updateSanity(randomChange); } // Hidden event: Discover a key or note behind Kemal's torn painting if (Math.random() < 0.2) { var hiddenNote = new Text2("Bu evde bir çıkış yok… ama bir tercih var.", { size: 48, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1600 }); hiddenNote.anchor.set(0.5, 0.5); hiddenNote.x = 1024; hiddenNote.y = 1600; game.addChild(hiddenNote); dialogueBox.showDialogue("Kemal’in yırttığı tablo arkasında gizli bir anahtar veya günlük notu bulundu!", 5000); } } updateUI(); checkGameEnd(); if (currentDay > 7) { dialogueBox.showDialogue("Gün " + currentDay + " başlıyor. Herkes evde geçen bir gecenin ardından yorgun görünüyor.", 3000); } } function updateUI() { dayText.setText("Gün " + currentDay + "/20"); timeText.setText("Zaman: " + timeLeft); if (timeLeft <= 20) { timeText.tint = 0xff0000; } else if (timeLeft <= 50) { timeText.tint = 0xffa500; } else { timeText.tint = 0xffff00; } } function checkGameEnd() { var dangerousCount = 0; var totalSanity = 0; for (var i = 0; i < characters.length; i++) { if (characters[i].isDangerous) { dangerousCount++; } totalSanity += characters[i].sanity; } // Bad ending - too many dangerous characters if (dangerousCount >= 3) { showEnding("KÖTÜ", "Ev kaosa büründü. Çok fazla kişi krizde olduğu için hayatta kalmak imkansız hale geldi. Kendin dahil kimseyi kurtaramadın."); return; } // Check if reached day 20 if (currentDay > 20) { var avgSanity = totalSanity / characters.length; var discoveredCount = Object.keys(discoveredDisorders).length; if (discoveredCount < characters.length) { showEnding("KÖTÜ", "20 gün geçti ama herkesın hastalığını keşfedemediğin için onlara doğru yardımı veremeding. Sonuç olarak kimseyi tam olarak kurtaramadın."); } else if (avgSanity >= 80 && dangerousCount === 0) { showEnding("İYİ", "Tebrikler! Herkesın hastalığını keşfettin ve 20 gün boyunca herkesi stabil tutmayı başardın. Birlikte evden kaçma yolunu buldunuz ve herkesin ihtiyacı olan yardımı almasını sağladınız."); } else if (avgSanity >= 50) { showEnding("NÖTR", "Hastalıkları keşfettin ve 20 gün hayatta kaldın ama herkes iyi durumda çıkmadı. Kaçtın ama bu deneyim herkeste derin izler bıraktı."); } else { showEnding("KÖTÜ", "Hastalıkları keşfetsen de hayatta kalmanın bedeli çok ağır oldu. Bu 20 günün travması herkesi yıllarca takip edecek."); } return; } } function showEnding(type, message) { currentGameState = "gameOver"; // Clear all floating text elements and mission texts var floatingTexts = game.children.filter(function (child) { return child instanceof Text2 && child !== dayText && child !== timeText && child !== bookText; }); for (var i = 0; i < floatingTexts.length; i++) { floatingTexts[i].destroy(); } // Clear dialogue box dialogueBox.visible = false; var endingOverlay = game.attachAsset('endingOverlay', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, alpha: 0.8 }); var endingTitle = new Text2(type + " SON", { size: 96, fill: type === "İYİ" ? "#00ff00" : type === "NÖTR" ? "#ffff00" : "#ff0000" }); endingTitle.anchor.set(0.5, 0.5); endingTitle.x = 1024; endingTitle.y = 1000; game.addChild(endingTitle); var endingText = new Text2(message, { size: 48, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1600 }); endingText.anchor.set(0.5, 0.5); endingText.x = 1024; endingText.y = 1400; game.addChild(endingText); var restartButton = new ActionButton("Tekrar Oyna", function () { LK.showGameOver(); }); restartButton.x = 1024; restartButton.y = 1800; game.addChild(restartButton); // Update high score based on ending var score = 0; if (type === "İYİ") { score = 100; } else if (type === "NÖTR") { score = 50; } else { score = 10; } LK.setScore(score); } // Game loop game.update = function () { if (currentGameState === "playing") { // Time naturally decreases if (LK.ticks % 60 === 0 && timeLeft > 0) { timeLeft--; updateUI(); if (timeLeft <= 0) { dialogueBox.showDialogue("Gün bitti. Dinlenme ve yarına hazırlanma zamanı.", 2000); } } // Check for game end conditions periodically if (LK.ticks % 180 === 0) { checkGameEnd(); } } // Update Chaotic Background Effects (flickering removed) // Keep the original background color constant game.setBackgroundColor(0x2d1810); // Calculate chaos intensity based on average sanity var totalSanity = 0; for (var i = 0; i < characters.length; i++) { totalSanity += characters[i].sanity; } chaosIntensity = 1.0 - totalSanity / (characters.length * 100); // Update chaos particles for (var i = 0; i < chaosParticles.length; i++) { var particle = chaosParticles[i]; if (particle.speedX !== undefined) { // Moving particles particle.x += particle.speedX * chaosIntensity; particle.y += particle.speedY * chaosIntensity; particle.rotation += particle.rotationSpeed; // Wrap around screen if (particle.x < -50) { particle.x = 2098; } if (particle.x > 2098) { particle.x = -50; } if (particle.y < -50) { particle.y = 2782; } if (particle.y > 2782) { particle.y = -50; } // Horror-themed color changes - darker, more unsettling colors if (Math.random() < 0.05 * chaosIntensity) { var horrorColors = [0x8b0000, 0x800080, 0x2f4f4f, 0x8b008b, 0x696969, 0x000000, 0x4b0082, 0x800000]; particle.tint = horrorColors[Math.floor(Math.random() * horrorColors.length)]; } // Shadow fade effect for shadow particles if (particle.fadeDirection !== undefined) { particle.alpha += particle.fadeDirection * 0.02 * chaosIntensity; if (particle.alpha <= 0.1 || particle.alpha >= 0.8) { particle.fadeDirection *= -1; } } } else if (particle.pulseSpeed !== undefined) { // Pulsing circles - more dramatic and unsettling particle.pulsePhase += particle.pulseSpeed; particle.scaleX = particle.scaleY = 1.0 + Math.sin(particle.pulsePhase) * 0.7 * chaosIntensity; particle.alpha = 0.2 + Math.sin(particle.pulsePhase) * 0.4 * chaosIntensity; // Occasional color shift for circles if (Math.random() < 0.03 * chaosIntensity) { var circleColors = [0x8b0000, 0x4b0082, 0x2f2f2f, 0x800000, 0x8b008b]; particle.tint = circleColors[Math.floor(Math.random() * circleColors.length)]; } } } // Update chaos noise for (var i = 0; i < chaosNoiseElements.length; i++) { var noise = chaosNoiseElements[i]; noise.alpha = Math.random() * 0.5 * chaosIntensity; if (Math.random() < 0.1 * chaosIntensity) { noise.x = Math.random() * 2048; noise.y = Math.random() * 2732; // Horror-themed noise colors - darker and more unsettling var noiseColors = [0x8b0000, 0x2f4f4f, 0x8b008b, 0x000000, 0x800080, 0x4b0082, 0x696969]; noise.tint = noiseColors[Math.floor(Math.random() * noiseColors.length)]; } // Add creepy scaling effect to noise noise.scaleX = 1.0 + Math.sin(LK.ticks * 0.02 + i) * 0.3 * chaosIntensity; noise.scaleY = 1.0 + Math.cos(LK.ticks * 0.03 + i) * 0.3 * chaosIntensity; } }; // Knowledge Book var knowledgeBook = game.attachAsset('knowledgeBook', { anchorX: 0.5, anchorY: 0.5, x: 1900, y: 200 }); var bookText = new Text2("Kitap", { size: 48, fill: 0xFFFFFF }); bookText.anchor.set(0.5, 0.5); bookText.x = 1900; bookText.y = 240; game.addChild(bookText); knowledgeBook.down = function (x, y, obj) { // Show tutorial hint for knowledge book if (tutorialActive) { dialogueBox.showDialogue("Harika! Bu kitap ruh sağlığı bozuklukları hakkında bilgi veriyor. Karakterleri anlamak için kullanın.", 3000); } showKnowledgeBook(); LK.getSound('click').play(); }; // Play ambient music LK.playMusic('ambient'); function showNightTimeEvent() { // Clear any existing floating text first var floatingTexts = game.children.filter(function (child) { return child instanceof Text2 && child !== dayText && child !== timeText && child !== bookText; }); for (var i = 0; i < floatingTexts.length; i++) { floatingTexts[i].destroy(); } // Hide dialogue box dialogueBox.visible = false; // Night sequence - create container for sleep dialogue with skip var sleepContainer = new Container(); sleepContainer.x = 1024; sleepContainer.y = 1366; // Center vertically on screen game.addChild(sleepContainer); var sleepText = new Text2("Oyuncu yatağa gider ve uyku zamanı gelir...", { size: 48, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1600 }); sleepText.anchor.set(0.5, 0.5); sleepContainer.addChild(sleepText); var sleepSkipButton = new ActionButton("Atla", function () { sleepContainer.destroy(); showNightOverlay(); }); sleepSkipButton.y = 150; sleepContainer.addChild(sleepSkipButton); } function showNightOverlay() { var nightOverlay = game.attachAsset('endingOverlay', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, alpha: 0.9 }); var nightContainer = new Container(); nightContainer.x = 1024; nightContainer.y = 1366; game.addChild(nightContainer); var nightText = new Text2("Gece boyunca bir şeyler farklıydı. Sanki... biri eksikti.", { size: 48, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1600 }); nightText.anchor.set(0.5, 0.5); nightText.x = 0; // Center in the container nightText.y = 0; // Center in the container nightContainer.addChild(nightText); var nightSkipButton = new ActionButton("Atla", function () { nightOverlay.destroy(); nightContainer.destroy(); showMorningScene(); }); nightSkipButton.y = 150; nightContainer.addChild(nightSkipButton); } function showMorningScene() { // Hide Kemal temporarily var kemal = characters.find(function (c) { return c.name === "Kemal"; }); if (kemal) { kemal.visible = false; } // Morning dialogue from other characters var morningDialogues = ["Elif: 'Kemal'le kahvaltı yapacaktım… ama odası boş.'", "Zeynep: 'Yatağı bile düzeltilmemiş. Bu hiç onun tarzı değil.'", "Yusuf: 'Bu bir numara olabilir. Saklanıyor. Dinliyor. Her zamanki gibi.'", "Mehmet (nazik): 'Onun sadece biraz zamana ihtiyacı vardır belki…'"]; var currentDialogue = 0; var currentMorningDialogueContainer = null; function showNextMorningDialogue() { // Clear any existing dialogue container first if (currentMorningDialogueContainer) { currentMorningDialogueContainer.destroy(); currentMorningDialogueContainer = null; } if (currentDialogue < morningDialogues.length) { // Create a container for the dialogue with skip button currentMorningDialogueContainer = new Container(); currentMorningDialogueContainer.x = 1024; currentMorningDialogueContainer.y = 1366; // Center vertically on screen game.addChild(currentMorningDialogueContainer); var dialogueText = new Text2(morningDialogues[currentDialogue], { size: 48, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1600 }); dialogueText.anchor.set(0.5, 0.5); currentMorningDialogueContainer.addChild(dialogueText); var skipButton = new ActionButton("Atla", function () { currentMorningDialogueContainer.destroy(); currentMorningDialogueContainer = null; currentDialogue++; showNextMorningDialogue(); }); skipButton.y = 150; currentMorningDialogueContainer.addChild(skipButton); } else { showKemalRoomScene(); } } showNextMorningDialogue(); } function showKemalRoomScene() { // Show mission to find Kemal var missionText = new Text2("Görev: Kemal'i bul", { size: 48, fill: 0xFFFF00 }); missionText.anchor.set(0.5, 0.5); missionText.x = 1024; missionText.y = 300; game.addChild(missionText); // Create container for room discovery dialogue with skip var roomContainer = new Container(); roomContainer.x = 1024; roomContainer.y = 1366; // Center vertically on screen game.addChild(roomContainer); var roomText = new Text2("Yerde çizilmiş bir resim var. Bir göz. Altında şu yazıyor: 'Ben görünüyorum ama görünmezim.'", { size: 48, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1600 }); roomText.anchor.set(0.5, 0.5); roomContainer.addChild(roomText); var roomSkipButton = new ActionButton("Atla", function () { roomContainer.destroy(); missionText.setText("Görev: Diğer karakterlerle konuş, ne olduğunu anlamaya çalış."); showMissionUpdateWithSkip(); }); roomSkipButton.y = 150; roomContainer.addChild(roomSkipButton); } function showMissionUpdateWithSkip() { var missionUpdateContainer = new Container(); missionUpdateContainer.x = 1024; missionUpdateContainer.y = 1366; // Center vertically on screen game.addChild(missionUpdateContainer); var missionUpdateText = new Text2("Diğer karakterlerle konuş ve Kemal'in nerede olduğunu öğrenmeye çalış.", { size: 48, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1600 }); missionUpdateText.anchor.set(0.5, 0.5); missionUpdateContainer.addChild(missionUpdateText); var missionSkipButton = new ActionButton("Atla", function () { missionUpdateContainer.destroy(); showKemalReturn(); }); missionSkipButton.y = 150; missionUpdateContainer.addChild(missionSkipButton); } function showKemalReturn() { // Show Kemal's return var kemal = characters.find(function (c) { return c.name === "Kemal"; }); if (kemal) { kemal.visible = true; kemal.tint = 0x888888; // Make him look different } // Clear all mission-related text elements var missionElements = game.children.filter(function (child) { return child instanceof Text2 && child.text && (child.text.indexOf("Görev:") !== -1 || child.text.indexOf("Diğer karakterlerle") !== -1); }); for (var i = 0; i < missionElements.length; i++) { missionElements[i].destroy(); } // Kemal's return dialogue var returnDialogues = ["Kemal (durgun): 'Nerelerdeydim bilmiyorum. Ama döndüm. Siz neden beni aramadınız?'", "Elif: 'Kemal… gözlerin… farklı bakıyor.'", "Yusuf: 'Bu o değil. Aynı değil. Değişmiş.'", "Zeynep: 'Kıyafetleri neden ters giyilmiş?'"]; var currentReturnDialogue = 0; var currentReturnDialogueContainer = null; function showNextReturnDialogue() { // Clear any existing dialogue container first if (currentReturnDialogueContainer) { currentReturnDialogueContainer.destroy(); currentReturnDialogueContainer = null; } if (currentReturnDialogue < returnDialogues.length) { // Create a container for the dialogue with skip button currentReturnDialogueContainer = new Container(); currentReturnDialogueContainer.x = 1024; currentReturnDialogueContainer.y = 1366; // Center vertically on screen game.addChild(currentReturnDialogueContainer); var returnDialogueText = new Text2(returnDialogues[currentReturnDialogue], { size: 48, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1600 }); returnDialogueText.anchor.set(0.5, 0.5); currentReturnDialogueContainer.addChild(returnDialogueText); var returnSkipButton = new ActionButton("Atla", function () { currentReturnDialogueContainer.destroy(); currentReturnDialogueContainer = null; currentReturnDialogue++; showNextReturnDialogue(); }); returnSkipButton.y = 150; currentReturnDialogueContainer.addChild(returnSkipButton); } else { showPlayerChoices(); } } showNextReturnDialogue(); } function showPlayerChoices() { // Create choice buttons var choiceContainer = new Container(); choiceContainer.x = 1024; choiceContainer.y = 2000; game.addChild(choiceContainer); var choiceA = new ActionButton("[A] 'Kemal, sana ne oldu?'", function () { dialogueBox.showDialogue("Kemal: 'Bilmiyorum... sanki uzun bir rüyaydı. Ama artık buradayım.'", 3000); destroyChoices(); proceedToNextDay(); }); choiceA.y = 0; choiceContainer.addChild(choiceA); var choiceB = new ActionButton("[B] 'Senin kim olduğunu bilmiyorum.'", function () { dialogueBox.showDialogue("Kemal: 'Ben... ben Kemal'im. Değil miyim? Neden böyle bakıyorsun?'", 3000); destroyChoices(); proceedToNextDay(); }); choiceB.y = 100; choiceContainer.addChild(choiceB); var choiceC = new ActionButton("[C] Sessiz kal", function () { dialogueBox.showDialogue("Kemal seni dikkatle izliyor... gözlerinde tanıdık olmayan bir ifade var.", 3000); destroyChoices(); proceedToNextDay(); }); choiceC.y = 200; choiceContainer.addChild(choiceC); function destroyChoices() { choiceContainer.destroy(); } function proceedToNextDay() { var kemal = characters.find(function (c) { return c.name === "Kemal"; }); if (kemal) { kemal.tint = 0xffffff; // Return to normal color kemal.updateSanity(-15); // Slight sanity loss from the experience } // Continue with normal day progression nextDay(); } } function showKnowledgeBook() { if (knowledgeBookVisible) { return; } knowledgeBookVisible = true; var bookOverlay = game.attachAsset('endingOverlay', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, alpha: 0.9 }); var bookTitle = new Text2("RUH SAĞLIĞI KİTABI", { size: 72, fill: 0xFFFFFF }); bookTitle.anchor.set(0.5, 0.5); bookTitle.x = 1024; bookTitle.y = 400; game.addChild(bookTitle); var yPos = 600; var disorders = Object.keys(disorderInfo); for (var i = 0; i < disorders.length; i++) { var disorder = disorders[i]; var info = disorderInfo[disorder]; var disorderTitle = new Text2(disorder, { size: 72, fill: 0xFFD700 }); disorderTitle.anchor.set(0.5, 0); disorderTitle.x = 1024; disorderTitle.y = yPos; game.addChild(disorderTitle); var disorderDesc = new Text2(info, { size: 56, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1600 }); disorderDesc.anchor.set(0.5, 0); disorderDesc.x = 1024; disorderDesc.y = yPos + 50; game.addChild(disorderDesc); yPos += 250; } var closeBookButton = new ActionButton("Kitabı Kapat", function () { knowledgeBookVisible = false; bookOverlay.destroy(); bookTitle.destroy(); // Destroy all disorder information elements var disorders = Object.keys(disorderInfo); for (var j = 0; j < disorders.length; j++) { var disorderElements = game.children.filter(function (child) { return child instanceof Text2 && child.text && (child.text.indexOf(disorders[j]) !== -1 || child.text === disorderInfo[disorders[j]]); }); for (var k = 0; k < disorderElements.length; k++) { disorderElements[k].destroy(); } } // Also destroy any remaining text elements that might be part of the book var allTextElements = game.children.filter(function (child) { return child instanceof Text2 && child.y >= 400 && child.y <= 2000; }); for (var m = 0; m < allTextElements.length; m++) { if (allTextElements[m] !== dayText && allTextElements[m] !== timeText && allTextElements[m] !== bookText) { allTextElements[m].destroy(); } } closeBookButton.destroy(); }); closeBookButton.x = 1024; closeBookButton.y = yPos + 100; game.addChild(closeBookButton); } function showKemalQuestions() { // Ensure all characters remain visible for (var i = 0; i < characters.length; i++) { characters[i].visible = true; } // Clear existing dialogue containers var existingDialogueContainers = game.children.filter(function (child) { return child instanceof Container && child !== actionButtonsContainer && child.children && child.children.length > 0 && child.children.some(function (grandchild) { return grandchild instanceof Text2 && grandchild.text && (grandchild.text.indexOf("Kemal") !== -1 || grandchild.text.indexOf("SORULAR") !== -1 || grandchild.text.indexOf("Bipolar") !== -1); }); }); for (var i = 0; i < existingDialogueContainers.length; i++) { existingDialogueContainers[i].destroy(); } var questionsContainer = new Container(); questionsContainer.x = 1024; questionsContainer.y = 1366; // Center vertically on screen game.addChild(questionsContainer); var questionTitle = new Text2("KEMAL HAKKINDA SORULAR", { size: 48, fill: 0xFFD700 }); questionTitle.anchor.set(0.5, 0.5); questionTitle.y = -200; questionsContainer.addChild(questionTitle); var questions = ["Kemal'in ruh hali neden sürekli değişiyor?", "Kemal neden bazen çok enerjik, bazen çok üzgün?", "Kemal'in davranışları neden öngörülemez?", "Kemal'e nasıl yaklaşmalıyım?", "Kemal'in hastalığı nedir?"]; var answers = ["Kemal Bipolar Bozukluk yaşıyor. Bu durum mani ve depresif dönemler arasında gidip gelmeye neden olur.", "Bipolar bozuklukta kişi aşırı neşeli (mani) ve aşırı üzgün (depresif) dönemler yaşar.", "Bipolar bozuklukta mod değişimleri ani ve tahmin edilemez olabilir.", "Kemal'e sakinlik ve anlayışla yaklaşın. Mani döneminde yatıştırıcı, depresif döneminde destekleyici olun.", "Kemal Bipolar Bozukluk tanısı almış. Bu durum yaşam boyu süren ancak tedavi edilebilir bir hastalıktır."]; for (var i = 0; i < questions.length; i++) { (function (index) { var questionButton = new ActionButton(questions[index], function () { // Clear any existing answer containers first var existingAnswers = game.children.filter(function (child) { return child instanceof Container && child !== actionButtonsContainer && child !== questionsContainer; }); for (var j = 0; j < existingAnswers.length; j++) { existingAnswers[j].destroy(); } // Keep questions container but move it off screen temporarily questionsContainer.y = -2000; // Show answer var answerContainer = new Container(); answerContainer.x = 1024; answerContainer.y = 1366; game.addChild(answerContainer); var answerText = new Text2(answers[index], { size: 42, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1600 }); answerText.anchor.set(0.5, 0.5); answerContainer.addChild(answerText); var backButton = new ActionButton("Geri", function () { answerContainer.destroy(); questionsContainer.y = 1366; // Restore original position // Ensure characters stay visible when going back for (var k = 0; k < characters.length; k++) { characters[k].visible = true; } }); backButton.y = 150; answerContainer.addChild(backButton); LK.getSound('click').play(); }); questionButton.y = -100 + i * 60; questionsContainer.addChild(questionButton); })(i); } var closeButton = new ActionButton("Kapat", function () { questionsContainer.destroy(); // Ensure all characters are visible when closing for (var i = 0; i < characters.length; i++) { characters[i].visible = true; } }); closeButton.y = 200; questionsContainer.addChild(closeButton); } // Tutorial System var tutorialActive = true; var tutorialStep = 0; var tutorialContainer = null; function startTutorial() { tutorialActive = true; tutorialStep = 0; showTutorialStep(); } function showTutorialStep() { // Clear previous tutorial container if (tutorialContainer) { tutorialContainer.destroy(); } tutorialContainer = new Container(); tutorialContainer.x = 1024; tutorialContainer.y = 1366; game.addChild(tutorialContainer); var tutorialMessages = ["HOŞGELDİNİZ! Bu evde 5 kişiyle birlikte 20 gün hayatta kalmalısınız.", "Her karakterin farklı ruh sağlığı sorunları var. Onları anlamalı ve yardım etmelisiniz.", "Karakterlere TIKLA ve etkileşime geç. Her eylem zaman harcar.", "Karakterlerin akıl sağlığını takip edin. Kırmızı = Tehlikeli, Yeşil = İyi durumda.", "Sağ üstteki KİTAP'a tıklayarak ruh sağlığı hakkında bilgi edinebilirsiniz.", "Her gün sonunda 'Sonraki Gün' butonuna basarak ilerleyin.", "DİKKAT: Aynı eylemi 3 kez üst üste yapmayın! Bu karakterleri sinirlendiririr.", "Karakterlere ÇİFT TIKLA yaparak Kemal hakkında sorular sorabilirsiniz.", "Haydi başlayalım! İlk karakterle etkileşime geçin."]; if (tutorialStep < tutorialMessages.length) { var tutorialText = new Text2(tutorialMessages[tutorialStep], { size: 48, fill: 0xFFD700, wordWrap: true, wordWrapWidth: 1600 }); tutorialText.anchor.set(0.5, 0.5); tutorialContainer.addChild(tutorialText); var nextButton = new ActionButton("Devam", function () { tutorialStep++; if (tutorialStep >= tutorialMessages.length) { endTutorial(); } else { showTutorialStep(); } }); nextButton.y = 150; tutorialContainer.addChild(nextButton); var skipButton = new ActionButton("Öğreticiyi Atla", function () { endTutorial(); }); skipButton.y = 250; tutorialContainer.addChild(skipButton); } } function endTutorial() { tutorialActive = false; if (tutorialContainer) { tutorialContainer.destroy(); tutorialContainer = null; } // Show initial game dialogue after tutorial dialogueBox.showDialogue("Gün 1: Garip bir evde 5 kişiyle birlikte uyanıyorsunuz. Herkes sorunlu görünüyor.\nOnlara 20 gün hayatta kalmaları için yardım etmelisiniz.", 4000); } // Start tutorial immediately startTutorial(); ;
===================================================================
--- original.js
+++ change.js
@@ -140,8 +140,12 @@
// Check for double click (within 30 ticks = 0.5 seconds)
if (currentTime - self.lastClickTime < 30) {
self.clickCount++;
if (self.clickCount >= 2) {
+ // Show tutorial hint for double click if tutorial is active
+ if (tutorialActive) {
+ dialogueBox.showDialogue("İyi! Çift tıklama ile Kemal hakkında sorular sorabilirsiniz.", 2000);
+ }
// Show Kemal-related questions - characters stay visible
showKemalQuestions();
self.clickCount = 0;
return;
@@ -150,8 +154,12 @@
self.clickCount = 1;
}
self.lastClickTime = currentTime;
selectedCharacter = self;
+ // Show tutorial hint for first character interaction
+ if (tutorialActive && tutorialStep >= 8) {
+ dialogueBox.showDialogue("Mükemmel! Şimdi bir eylem seçin. Akıl sağlığı çubuğuna dikkat edin.", 3000);
+ }
showCharacterActions();
LK.getSound('click').play();
}
};
@@ -1219,8 +1227,13 @@
actionButtonsContainer.addChild(closeButton);
// Next Day Button
var nextDayButton = new ActionButton("Sonraki Gün", function () {
if (currentDay < 20) {
+ // Show tutorial hint for first day progression
+ if (tutorialActive && currentDay === 1) {
+ dialogueBox.showDialogue("İyi! Günler böyle ilerliyor. Her gün karakterlerle etkileşime geçmeyi unutmayın.", 3000);
+ tutorialActive = false; // End tutorial after first day
+ }
nextDay();
}
});
nextDayButton.x = 1024;
@@ -1229,9 +1242,9 @@
// Make the next day button text much larger
var nextDayButtonChildren = nextDayButton.children;
for (var i = 0; i < nextDayButtonChildren.length; i++) {
if (nextDayButtonChildren[i] instanceof Text2) {
- nextDayButtonChildren[i].size = 400;
+ nextDayButtonChildren[i].size = 700;
}
}
function showCharacterActions() {
actionMenuVisible = true;
@@ -1585,8 +1598,12 @@
bookText.x = 1900;
bookText.y = 240;
game.addChild(bookText);
knowledgeBook.down = function (x, y, obj) {
+ // Show tutorial hint for knowledge book
+ if (tutorialActive) {
+ dialogueBox.showDialogue("Harika! Bu kitap ruh sağlığı bozuklukları hakkında bilgi veriyor. Karakterleri anlamak için kullanın.", 3000);
+ }
showKnowledgeBook();
LK.getSound('click').play();
};
// Play ambient music
@@ -1995,7 +2012,61 @@
});
closeButton.y = 200;
questionsContainer.addChild(closeButton);
}
-// Initial dialogue
-dialogueBox.showDialogue("Gün 1: Garip bir evde 5 kişiyle birlikte uyanıyorsunuz. Herkes sorunlu görünüyor.\nOnlara 20 gün hayatta kalmaları için yardım etmelisiniz.", 4000);
+// Tutorial System
+var tutorialActive = true;
+var tutorialStep = 0;
+var tutorialContainer = null;
+function startTutorial() {
+ tutorialActive = true;
+ tutorialStep = 0;
+ showTutorialStep();
+}
+function showTutorialStep() {
+ // Clear previous tutorial container
+ if (tutorialContainer) {
+ tutorialContainer.destroy();
+ }
+ tutorialContainer = new Container();
+ tutorialContainer.x = 1024;
+ tutorialContainer.y = 1366;
+ game.addChild(tutorialContainer);
+ var tutorialMessages = ["HOŞGELDİNİZ! Bu evde 5 kişiyle birlikte 20 gün hayatta kalmalısınız.", "Her karakterin farklı ruh sağlığı sorunları var. Onları anlamalı ve yardım etmelisiniz.", "Karakterlere TIKLA ve etkileşime geç. Her eylem zaman harcar.", "Karakterlerin akıl sağlığını takip edin. Kırmızı = Tehlikeli, Yeşil = İyi durumda.", "Sağ üstteki KİTAP'a tıklayarak ruh sağlığı hakkında bilgi edinebilirsiniz.", "Her gün sonunda 'Sonraki Gün' butonuna basarak ilerleyin.", "DİKKAT: Aynı eylemi 3 kez üst üste yapmayın! Bu karakterleri sinirlendiririr.", "Karakterlere ÇİFT TIKLA yaparak Kemal hakkında sorular sorabilirsiniz.", "Haydi başlayalım! İlk karakterle etkileşime geçin."];
+ if (tutorialStep < tutorialMessages.length) {
+ var tutorialText = new Text2(tutorialMessages[tutorialStep], {
+ size: 48,
+ fill: 0xFFD700,
+ wordWrap: true,
+ wordWrapWidth: 1600
+ });
+ tutorialText.anchor.set(0.5, 0.5);
+ tutorialContainer.addChild(tutorialText);
+ var nextButton = new ActionButton("Devam", function () {
+ tutorialStep++;
+ if (tutorialStep >= tutorialMessages.length) {
+ endTutorial();
+ } else {
+ showTutorialStep();
+ }
+ });
+ nextButton.y = 150;
+ tutorialContainer.addChild(nextButton);
+ var skipButton = new ActionButton("Öğreticiyi Atla", function () {
+ endTutorial();
+ });
+ skipButton.y = 250;
+ tutorialContainer.addChild(skipButton);
+ }
+}
+function endTutorial() {
+ tutorialActive = false;
+ if (tutorialContainer) {
+ tutorialContainer.destroy();
+ tutorialContainer = null;
+ }
+ // Show initial game dialogue after tutorial
+ dialogueBox.showDialogue("Gün 1: Garip bir evde 5 kişiyle birlikte uyanıyorsunuz. Herkes sorunlu görünüyor.\nOnlara 20 gün hayatta kalmaları için yardım etmelisiniz.", 4000);
+}
+// Start tutorial immediately
+startTutorial();
;
\ No newline at end of file
ev ama kuş bakışı. In-Game asset. 2d. High contrast. No shadows
elinde bıçak var . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
korkutucu bir gülümseme . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
tahta ama hafif kırık . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
korkunç bir göze sahip bir kitap . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
kanlı kağıt . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
korkunç gülüşler olan bir not defteri sşyah . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat