User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'indexOf')' in or related to this line: 'return child instanceof Text2 && (child.text.indexOf(disorders[j]) !== -1 || child.text === disorderInfo[disorders[j]]);' Line Number: 765
User prompt
kitaptan çıka basınca ekrandaki bilgiler gitsin ve karakterlere iki kere tıklayınca benim hastalığım ne diye soruyor ya iptala basınca o yazılarda gitsin
User prompt
kitaptaki yazıları şimdiki boyunun 2 katı yap
User prompt
kitaptaki yazıları ekrandan taşmayacak şekilde bğyğt taşarsa iki satır yap
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of undefined (setting 'wordWrap')' in or related to this line: 'questionText.style.wordWrap = true;' Line Number: 780
User prompt
kitabı sağ üste al
User prompt
evdekilerle konuşurkenki yazıları türkçe yap ve oyuna oyunda olan hastalıklarla alakalı bir kitap ekle kitaba tıklayınca o hastalık hakkında bilgi versin ve kişilerin altındaki hastalıkları sil bunu biz bulmaya çalışıcaz 20 günün sonunda bulamzsak kaybedicez bulmak için karaktelre iki kere tıklarsak benim hastlığım ne diye sorsun ve bizde şıklar arasından seçelim
User prompt
oyunu full türkçe yap
User prompt
30’un altına düşerse agresifleşir, saldırgan olabilir. 100’e yaklaştıkça yardımsever ve iletişime açık hale gelir. Her sabah puanlar hafifçe düşer (yavaş yavaş çöküş hissi). Bazı eylemler puanı artırır: Empatik diyaloglar Sevdiği eşya verilmesi Ortak etkinlik (resim yapmak, kitap okumak vb.) 🧍♂️ KARAKTERLER VE DİYALOG SİSTEMİ: 1. Adı: Yusuf Bozukluk: Paranoid bozukluk Kişilik: Şüpheci, tedirgin, gizli dinlemelerden korkar. Tehlike Durumu: Kendini korumak için saldırabilir. Sevdikleri: Güven veren sözler, göz teması kurmamak. Akıl Puanını Artıran: Dürüstlük, yalnız bırakmak, sakin ortam. Örnek Diyaloglar: 🟡 “Sen de mi beni izliyorsun? Onların adamı mısın?” 🔵 “Hayır Yusuf, burada sana zarar vermek isteyen kimse yok. Sadece konuşmak istiyorum.” (+10) 🔴 “Ne saçmalıyorsun, kimse seni izlemiyor!” (–15) 🟡 “Gece herkes sessiz olmalı, seslerden rahatsız oluyorum...” 🔵 “Tamam, sessizlik senin için önemliyse konuşmayı sabaha bırakırız.” (+5) 2. Adı: Elif Bozukluk: Şizofreni Kişilik: Gerçek ve hayali karışık, sesler duyuyor. Tehlike Durumu: Halüsinasyonlarına kapılıp saldırganlaşabilir. Sevdikleri: Müzik, yalnız kalmak, yumuşak tonla konuşulması. Akıl Puanını Artıran: Onu dinlemek, yargılamamak. Örnek Diyaloglar: 🟡 “Köşedeki kadın yine gülüyor, görmüyor musun?” 🔵 “Görmüyorum ama seni korkuttuğunu anlıyorum. Yanındayım.” (+15) 🔴 “Saçmalama Elif, orada kimse yok.” (–20) 🟡 “Onlar bana ne yapacağımı söylüyor.” 🔵 “Sana zarar vermeyeceklerini biliyorum. Beraber karar verelim, olur mu?” (+10) 3. Adı: Kemal Bozukluk: Bipolar bozukluk Kişilik: Ani ruh hali değişimleri yaşar. Tehlike Durumu: Mani döneminde kontrolsüz hareket eder. Sevdikleri: Etkinlik, övgü, meşguliyet. Akıl Puanını Artıran: Sabit ilgi, ritüel oluşturmak (örneğin her sabah beraber çay içmek). Örnek Diyaloglar: 🟡 “Bu ev harika! Hadi tüm duvarları boyayalım!” 🔵 “Harika fikir Kemal, ama önce kahvaltı edelim olur mu?” (+10) 🔴 “Bu saçma! Duvar mı boyanır şimdi?” (–10) 🟡 “Hiçbir şeyin anlamı yok... Hepimiz çürüyoruz.” 🔵 “Bunu birlikte aşabiliriz. Bugün bir şarkı açalım mı?” (+8) 4. Adı: Zeynep Bozukluk: Obsesif Kompulsif Bozukluk (OKB) Kişilik: Temizlik, simetri takıntısı, rutinleri bozulursa panikler. Tehlike Durumu: Kriz anında bağırır, eşyaları fırlatır. Sevdikleri: Temiz nesneler, düzenli oda, kontrol. Akıl Puanını Artıran: Onun düzenine saygı göstermek, birlikte temizlik yapmak. Örnek Diyaloglar: 🟡 “Bu kitap eğri duruyor... Lütfen düzelt!” 🔵 “Haklısın, hemen düzeltiyorum.” (+8) 🔴 “Rahat ol biraz! Kitap işte.” (–12) 🟡 “Ellerim temiz değil... Ellerim... Ellerim...” 🔵 “İstersen birlikte el yıkayabiliriz. Sana eşlik ederim.” (+10) 5. Adı: Mehmet Bozukluk: Dissosiyatif kimlik bozukluğu Kişilik: Günün saatine göre kişiliği değişiyor (Nazik, Çocuk, Karanlık) Tehlike Durumu: “Karanlık” kişiliği ortaya çıkarsa, tehditkar olur. Sevdikleri: Kendi kişiliğine göre değişir. Akıl Puanını Artıran: Kişiliğine uygun yaklaşım. Örnek Diyaloglar: 🟡 (Nazik): “Günaydın dostum, bugün hava ne kadar güzel değil mi?” 🔵 “Gerçekten güzel Mehmet, sana kahve yapayım mı?” (+10) 🟡 (Çocuk): “Ben oyun oynamak istiyorum! Saklambaç olur mu?” 🔵 “Harika fikir! Sen saklan, ben sayacağım!” (+15) 🟡 (Karanlık): “Burası çürümüş, tıpkı senin gibi.” 🔵 “Eğer istersen seni yalnız bırakırım. Yardım etmek istiyorum sadece.” (+5) 🔴 “Sus artık, yeter!” (–20) 📅 Zaman ve Günlük Döngü: Sabah: Karakterlerle konuşma, görev alma. Öğle: Eşyaları bulma, etkinlik yapma. Akşam: Karakterlerin ruh halleri değişir, kriz riski artar. Gece: Uyumak veya karakterlerden biri seni uykuda öldürme riski. Her gün: Karakterlerin notları, çizimleri, objeleri ortaya çıkar. İstersen: Her güne özel mini görevler (örneğin “bugün Yusuf’un odasını temizle” gibi), Gizli sonlara giden alternatif yollar, Oynanış mekaniğini GDevelop veya başka bir motorla planlama, Menü tasarımı, görsel öneriler hazırlayabilirim.
User prompt
yazıları büyüt
Code edit (1 edits merged)
Please save this source code
User prompt
Memory House: 20 Days of Survival
Initial prompt
Oyunda, hafızasını kaybetmiş bir karakter olarak gözlerimizi kilitli bir evde açıyoruz ve bu evde bizden başka 5 kişi daha var. Ancak bu kişiler tamamen sıradan değil: her biri farklı bir zihinsel bozuklukla mücadele ediyor – biri paranoid, biri şizofren, biri bipolar, biri obsesif kompulsif (OKB), diğeri ise dissosiyatif kimlik bozukluğuna (çoklu kişilik) sahip. Oyundaki temel amacımız, 20 gün boyunca hayatta kalmak ve sonunda evden kaçış yolunu bulmak. Ancak bu süreçte sadece kendi sağlığımızı korumakla yetinmiyoruz: evdeki diğer kişilerin de “akıl puanları”nı takip etmemiz gerekiyor. Bu puanlar sıfıra düştüğünde o karakter tehlikeli hale geliyor ve ya bizi öldürmeye kalkıyor ya da tüm planları sabote ederek kaosu artırıyor. Her gün sabah saatinde oyun başlıyor ve gece olana kadar zaman sınırlı şekilde ilerliyor. Gün içinde karakterlerle konuşmalar yapabiliyor, onlara özel eşyalar verebiliyor, terapi gibi yatıştırıcı etkinlikler (resim yapma, müzik dinletme, kitap okutma) ayarlayabiliyoruz. Her karakterin kendi tetikleyicileri ve sakinleştiricileri var. Örneğin paranoid karakter “Beni dinle, onların seni gözetlediğini biliyorum” gibi şeyler söylerken, ona güven verdiğimizde puanı artar. Bipolar karakterin moduna göre yaklaşım değişir; manik dönemindeyken onunla konuşmak risklidir, depresif olduğunda ise destek vermek gerekir. OKB’li karakter "Bu bardağı 7 kez çevirmezsem hepimiz öleceğiz!" diyebilir ve o nesneleri onun için düzgün hale getirirsek sakinleşir. Dissosiyatif karakter günün farklı saatlerinde farklı kişiliklere bürünebilir: sabah nazikken, akşam saldırgan olabilir. Oyuncu, bu döngüyü öğrenip stratejik davranmalıdır. Akıl puanları, karakterle kurulan diyaloğun kalitesine göre artar veya azalır. Örneğin, karaktere iyi gelen bir konuşma yapmak +10 puan kazandırırken, yanlış bir kelime veya ilgisizlik -15 puan düşürebilir. Akşam saatlerinde karakterlerin ruh halleri daha da bozulur, bu yüzden gündüzleri onları hazırlamak önemlidir. Ayrıca evin içinde belirli sırlar, kilitli odalar, gizli günlükler, ipucu notları bulunur. Bunları bularak hem kendi geçmişimizle ilgili parçaları birleştirir, hem de karakterlerin neden burada olduğunu ve bu evde ne olup bittiğini öğrenebiliriz. Bazı karakterlerle kurduğumuz ilişkiler sonucu bize yardım etmeye başlarlar; hatta bazıları finalde bizimle birlikte kaçabilir. Ancak bazı karakterler, onların psikolojisini iyi yönetemezsek kontrolden çıkabilir ve oyunun sonunu tamamen değiştirebilir. Oyunda birden fazla son bulunur: iyi son (tüm karakterleri kurtararak kaçmak), nötr son (sadece kendini kurtarmak), kötü son (öldürülmek) ve gizli son (evin ve geçmişin gerçek yüzünü açığa çıkarmak) gibi. Kısacası bu oyun, stratejik düşünme, karakter psikolojisine duyarlılık, ipuçlarını takip etme ve risk yönetimi üzerine kurulu bir psikolojik gerilim-hayatta kalma oyunudur. Oyuncunun her günkü kararları, konuşma seçimleri ve hareketleri kaderini belirler
/**** * 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 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: 28, 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 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 = Date.now(); // Double click detection (within 500ms) if (currentTime - self.lastClickTime < 500) { self.clickCount++; } else { self.clickCount = 1; } self.lastClickTime = currentTime; if (self.clickCount >= 2) { // Double click - show diagnosis question showDiagnosisQuestion(self); self.clickCount = 0; } else { // Single click - show actions after delay LK.setTimeout(function () { if (self.clickCount === 1) { selectedCharacter = self; showCharacterActions(); } }, 300); } 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: 0xFFFFFF }); dialogueText.anchor.set(0.5, 0.5); self.addChild(dialogueText); self.showDialogue = function (text, duration) { dialogueText.setText(text); self.visible = true; if (duration) { LK.setTimeout(function () { self.visible = false; }, duration); } }; 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 = {}; // 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: "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" }, { name: "Elif", disorder: "Şizofreni", sanity: 70, triggers: ["confrontation", "judgment", "disbelief"], calmers: ["listening", "music", "soft voice", "validation"], personality: "schizophrenic", currentMood: "hearing_voices" }, { 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 }, { name: "Zeynep", disorder: "OKB", sanity: 90, triggers: ["disorder", "asymmetry", "dirty objects", "interrupted rituals"], calmers: ["organization", "cleaning together", "respecting routines", "symmetry"], personality: "ocd", currentMood: "anxious" }, { 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 }]; // 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; 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; } // 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: 0xFFFF00 }); 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 = 2200; 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) { return { sanityChange: -10, dialogue: character.name + " çok sinirli ve yardımınızı agresif bir şekilde reddediyor!" }; } 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 (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 (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 (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 (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") { 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; 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) { nextDay(); } }); nextDayButton.x = 1024; nextDayButton.y = 2500; game.addChild(nextDayButton); function showCharacterActions() { actionMenuVisible = true; actionButtonsContainer.visible = true; // Update button availability based on time for (var i = 0; i < actionButtons.length; i++) { var button = actionButtons[i]; var actionCost = actions[i].cost; if (timeLeft >= actionCost) { button.alpha = 1.0; } else { button.alpha = 0.5; } } } function hideCharacterActions() { actionMenuVisible = false; actionButtonsContainer.visible = false; selectedCharacter = null; } function nextDay() { currentDay++; timeLeft = maxTimePerDay; // 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; } } // 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); } } updateUI(); checkGameEnd(); 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"; 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(); } } }; // Knowledge Book var knowledgeBook = game.attachAsset('knowledgeBook', { anchorX: 0.5, anchorY: 0.5, x: 150, y: 200 }); var bookText = new Text2("Kitap", { size: 24, fill: 0xFFFFFF }); bookText.anchor.set(0.5, 0.5); bookText.x = 150; bookText.y = 240; game.addChild(bookText); knowledgeBook.down = function (x, y, obj) { showKnowledgeBook(); LK.getSound('click').play(); }; // Play ambient music LK.playMusic('ambient'); 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.indexOf(disorders[j]) !== -1 || child.text === disorderInfo[disorders[j]]); }); for (var k = 0; k < disorderElements.length; k++) { disorderElements[k].destroy(); } } closeBookButton.destroy(); }); closeBookButton.x = 1024; closeBookButton.y = yPos + 100; game.addChild(closeBookButton); } function showDiagnosisQuestion(character) { var diagnosisOverlay = game.attachAsset('endingOverlay', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, alpha: 0.9 }); var questionText = new Text2(character.name + " size soruyor:\n\"Benim hastalığım ne?\"", { size: 48, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1400 }); questionText.anchor.set(0.5, 0.5); questionText.x = 1024; questionText.y = 800; game.addChild(questionText); var disorders = Object.keys(disorderInfo); var yPos = 1000; for (var i = 0; i < disorders.length; i++) { var disorder = disorders[i]; var optionButton = new ActionButton(disorder, function (selectedDisorder, _char) { return function () { checkDiagnosis(_char, selectedDisorder); diagnosisOverlay.destroy(); questionText.destroy(); // Destroy all option buttons and cancel button var disorders = Object.keys(disorderInfo); for (var j = 0; j < disorders.length; j++) { var optionElements = game.children.filter(function (child) { return child instanceof ActionButton && child.children && child.children[1] && child.children[1].text === disorders[j]; }); for (var k = 0; k < optionElements.length; k++) { optionElements[k].destroy(); } } // Also destroy cancel button var cancelElements = game.children.filter(function (child) { return child instanceof ActionButton && child.children && child.children[1] && child.children[1].text === "İptal"; }); for (var k = 0; k < cancelElements.length; k++) { cancelElements[k].destroy(); } }; }(disorder, character)); optionButton.x = 1024; optionButton.y = yPos; game.addChild(optionButton); yPos += 100; } var cancelButton = new ActionButton("İptal", function () { diagnosisOverlay.destroy(); questionText.destroy(); // Destroy all option buttons var disorders = Object.keys(disorderInfo); for (var j = 0; j < disorders.length; j++) { var optionElements = game.children.filter(function (child) { return child instanceof ActionButton && child.children && child.children[1] && child.children[1].text === disorders[j]; }); for (var k = 0; k < optionElements.length; k++) { optionElements[k].destroy(); } } cancelButton.destroy(); }); cancelButton.x = 1024; cancelButton.y = yPos + 50; game.addChild(cancelButton); } function checkDiagnosis(character, guessedDisorder) { if (!diagnosisAttempts[character.name]) { diagnosisAttempts[character.name] = 0; } diagnosisAttempts[character.name]++; if (guessedDisorder === character.disorder) { discoveredDisorders[character.name] = character.disorder; dialogueBox.showDialogue(character.name + ": \"Evet, doğru tahmin ettin. Ben " + character.disorder + " ile mücadele ediyorum.\"", 4000); character.updateSanity(15); // Bonus for correct diagnosis } else { dialogueBox.showDialogue(character.name + ": \"Hayır, o değil. Lütfen beni daha iyi anlamaya çalış.\"", 3000); character.updateSanity(-5); // Penalty for wrong diagnosis } } // Initial dialogue dialogueBox.showDialogue("Gün 1: Garip bir evde 5 kişiyle birlikte uyanıyorsunuz. Herkes sorunlu görünüyor. Onlara 20 gün hayatta kalmaları için yardım etmelisiniz.", 4000); ;
===================================================================
--- original.js
+++ change.js
@@ -724,8 +724,20 @@
}
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.indexOf(disorders[j]) !== -1 || child.text === disorderInfo[disorders[j]]);
+ });
+ for (var k = 0; k < disorderElements.length; k++) {
+ disorderElements[k].destroy();
+ }
+ }
+ closeBookButton.destroy();
});
closeBookButton.x = 1024;
closeBookButton.y = yPos + 100;
game.addChild(closeBookButton);
@@ -755,8 +767,26 @@
var optionButton = new ActionButton(disorder, function (selectedDisorder, _char) {
return function () {
checkDiagnosis(_char, selectedDisorder);
diagnosisOverlay.destroy();
+ questionText.destroy();
+ // Destroy all option buttons and cancel button
+ var disorders = Object.keys(disorderInfo);
+ for (var j = 0; j < disorders.length; j++) {
+ var optionElements = game.children.filter(function (child) {
+ return child instanceof ActionButton && child.children && child.children[1] && child.children[1].text === disorders[j];
+ });
+ for (var k = 0; k < optionElements.length; k++) {
+ optionElements[k].destroy();
+ }
+ }
+ // Also destroy cancel button
+ var cancelElements = game.children.filter(function (child) {
+ return child instanceof ActionButton && child.children && child.children[1] && child.children[1].text === "İptal";
+ });
+ for (var k = 0; k < cancelElements.length; k++) {
+ cancelElements[k].destroy();
+ }
};
}(disorder, character));
optionButton.x = 1024;
optionButton.y = yPos;
@@ -764,8 +794,20 @@
yPos += 100;
}
var cancelButton = new ActionButton("İptal", function () {
diagnosisOverlay.destroy();
+ questionText.destroy();
+ // Destroy all option buttons
+ var disorders = Object.keys(disorderInfo);
+ for (var j = 0; j < disorders.length; j++) {
+ var optionElements = game.children.filter(function (child) {
+ return child instanceof ActionButton && child.children && child.children[1] && child.children[1].text === disorders[j];
+ });
+ for (var k = 0; k < optionElements.length; k++) {
+ optionElements[k].destroy();
+ }
+ }
+ cancelButton.destroy();
});
cancelButton.x = 1024;
cancelButton.y = yPos + 50;
game.addChild(cancelButton);
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