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); var disorderText = new Text2(self.disorder, { size: 32, fill: 0xCCCCCC }); disorderText.anchor.set(0.5, 0); disorderText.x = 0; disorderText.y = -90; self.addChild(disorderText); 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.down = function (x, y, obj) { if (currentGameState === "playing" && timeLeft > 0) { selectedCharacter = self; 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: 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; // 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("Day " + 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("Time: " + 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: "Empathetic Talk", cost: 15, effect: function effect(character) { var response = getCharacterResponse(character, "empathetic_talk"); character.updateSanity(response.sanityChange); dialogueBox.showDialogue(response.dialogue, 3000); } }, { text: "Art Therapy", cost: 25, effect: function effect(character) { var response = getCharacterResponse(character, "art_therapy"); character.updateSanity(response.sanityChange); dialogueBox.showDialogue(response.dialogue, 3000); } }, { text: "Read Together", cost: 20, effect: function effect(character) { var response = getCharacterResponse(character, "read_together"); character.updateSanity(response.sanityChange); dialogueBox.showDialogue(response.dialogue, 3000); } }, { text: "Organize/Clean", cost: 30, effect: function effect(character) { var response = getCharacterResponse(character, "organize"); character.updateSanity(response.sanityChange); dialogueBox.showDialogue(response.dialogue, 3000); } }, { text: "Give Space", 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 + " is too agitated and rejects your help aggressively!" }; } if (character.isHelpful) { return { sanityChange: 5, dialogue: character.name + " is in great spirits and appreciates your effort. They even help others!" }; } // 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: 'You seem honest... maybe I can trust you a little.'" } : { sanityChange: -5, dialogue: "Yusuf: 'You're just like them, trying to get information from me!'" }; } else if (actionType === "give_space") { return { sanityChange: 8, dialogue: "Yusuf: 'Thank you for leaving me alone. I need to think.'" }; } else { return { sanityChange: -3, dialogue: "Yusuf: 'Stop trying to control me! I know what you're doing.'" }; } } else if (character.personality === "schizophrenic") { if (actionType === "empathetic_talk") { return { sanityChange: 15, dialogue: "Elif: 'You... you believe me about the voices? Thank you for listening.'" }; } else if (actionType === "art_therapy") { return { sanityChange: 12, dialogue: "Elif: 'The music makes the voices quieter. This helps so much.'" }; } else { return { sanityChange: -8, dialogue: "Elif: 'The voices are getting louder! They don't like what you're doing!'" }; } } else if (character.personality === "bipolar") { if (character.currentMood === "manic") { if (actionType === "empathetic_talk") { return { sanityChange: -5, dialogue: "Kemal: 'Talking is boring! Let's paint the walls and dance!'" }; } else if (actionType === "art_therapy") { return { sanityChange: 10, dialogue: "Kemal: 'YES! This is perfect! Let's create something amazing!'" }; } else { return { sanityChange: -10, dialogue: "Kemal: 'You're trying to slow me down! I have energy for everything!'" }; } } else if (character.currentMood === "depressive") { if (actionType === "empathetic_talk") { return { sanityChange: 12, dialogue: "Kemal: 'It feels good to have someone who cares... maybe today won't be so dark.'" }; } else { return { sanityChange: 2, dialogue: "Kemal: 'Nothing matters anymore... but thank you for trying.'" }; } } else { return { sanityChange: 6, dialogue: "Kemal: 'I appreciate your effort. I'm feeling more balanced today.'" }; } } else if (character.personality === "ocd") { if (actionType === "organize") { return { sanityChange: 20, dialogue: "Zeynep: 'Perfect! Everything is in its place now. I feel so much better!'" }; } else if (actionType === "empathetic_talk") { return { sanityChange: 5, dialogue: "Zeynep: 'Thank you for understanding my need for order.'" }; } else { return { sanityChange: -8, dialogue: "Zeynep: 'No, no! You're making everything messy! The pattern is wrong!'" }; } } else if (character.personality === "did") { if (character.currentMood === "gentle") { return { sanityChange: 10, dialogue: "Mehmet: 'Good morning friend, your kindness means a lot to me.'" }; } else if (character.currentMood === "child") { if (actionType === "empathetic_talk") { return { sanityChange: 15, dialogue: "Mehmet (Child): 'Will you play with me? I'm scared and lonely!'" }; } else { return { sanityChange: 8, dialogue: "Mehmet (Child): 'This is fun! You're nice to me!'" }; } } else { // dark mood if (actionType === "give_space") { return { sanityChange: 5, dialogue: "Mehmet (Dark): 'Smart choice. You don't want to be around me right now.'" }; } else { return { sanityChange: -15, dialogue: "Mehmet (Dark): 'Your pathetic attempts disgust me. Stay away.'" }; } } } return { sanityChange: 2, dialogue: character.name + " acknowledges your effort." }; } // 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("Close", function () { hideCharacterActions(); }); closeButton.y = actions.length * 100; actionButtonsContainer.addChild(closeButton); // Next Day Button var nextDayButton = new ActionButton("Next Day", 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("BAD", character.name + " became too unstable during the night and attacked. The situation became impossible to control."); 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("Day " + currentDay + " begins. Everyone seems tired from another night in the house.", 3000); } function updateUI() { dayText.setText("Day " + currentDay + "/20"); timeText.setText("Time: " + 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("BAD", "The house erupted into chaos. With too many people in crisis, survival became impossible. You couldn't save anyone, including yourself."); return; } // Check if reached day 20 if (currentDay > 20) { var avgSanity = totalSanity / characters.length; if (avgSanity >= 80 && dangerousCount === 0) { showEnding("GOOD", "Congratulations! You managed to keep everyone stable for 20 days. Together, you found a way to escape the house and get everyone the help they needed."); } else if (avgSanity >= 50) { showEnding("NEUTRAL", "You survived 20 days, but not everyone made it out in good shape. You escaped, but the experience left deep scars on everyone involved."); } else { showEnding("BAD", "While you survived, the toll was too great. The trauma of these 20 days will haunt everyone for years to come."); } 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 + " ENDING", { size: 96, fill: type === "GOOD" ? "#00ff00" : type === "NEUTRAL" ? "#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 }); endingText.anchor.set(0.5, 0.5); endingText.x = 1024; endingText.y = 1400; endingText.style.wordWrap = true; endingText.style.wordWrapWidth = 1600; game.addChild(endingText); var restartButton = new ActionButton("Play Again", function () { LK.showGameOver(); }); restartButton.x = 1024; restartButton.y = 1800; game.addChild(restartButton); // Update high score based on ending var score = 0; if (type === "GOOD") score = 100;else if (type === "NEUTRAL") 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("The day is over. Time to rest and prepare for tomorrow.", 2000); } } // Check for game end conditions periodically if (LK.ticks % 180 === 0) { checkGameEnd(); } } }; // Play ambient music LK.playMusic('ambient'); // Initial dialogue dialogueBox.showDialogue("Day 1: You wake up in a strange house with 5 other people. Everyone seems troubled. You must help them survive 20 days.", 4000);
===================================================================
--- original.js
+++ change.js
@@ -89,16 +89,26 @@
} else {
sanityBar.tint = 0xff0000;
}
sanityText.setText(self.sanity + "/100");
- if (self.sanity <= 0 && !self.isDangerous) {
+ // Check for aggressive state (below 30)
+ if (self.sanity < 30 && !self.isDangerous) {
self.isDangerous = true;
+ self.isAggressive = true;
LK.getSound('warning').play();
- cardBg.tint = 0xff0000;
- } else if (self.sanity > 0 && self.isDangerous) {
+ 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.down = function (x, y, obj) {
if (currentGameState === "playing" && timeLeft > 0) {
selectedCharacter = self;
@@ -151,43 +161,60 @@
var selectedCharacter = null;
var actionMenuVisible = false;
// Characters Data
var charactersData = [{
- name: "Sarah",
- disorder: "Paranoid",
+ name: "Yusuf",
+ disorder: "Paranoid Bozukluk",
sanity: 80,
- triggers: ["sudden movements", "being alone", "loud noises"],
- calmers: ["gentle conversation", "reading together", "herbal tea"]
+ triggers: ["sudden movements", "being watched", "loud noises", "eye contact"],
+ calmers: ["honesty", "being left alone", "quiet environment", "trust building"],
+ personality: "paranoid",
+ currentMood: "suspicious"
}, {
- name: "Marcus",
- disorder: "Schizophrenic",
+ name: "Elif",
+ disorder: "Şizofreni",
sanity: 70,
- triggers: ["confrontation", "stress", "isolation"],
- calmers: ["art therapy", "music", "routine activities"]
+ triggers: ["confrontation", "judgment", "disbelief"],
+ calmers: ["listening", "music", "soft voice", "validation"],
+ personality: "schizophrenic",
+ currentMood: "hearing_voices"
}, {
- name: "Elena",
- disorder: "Bipolar",
+ name: "Kemal",
+ disorder: "Bipolar Bozukluk",
sanity: 85,
- triggers: ["criticism", "pressure", "lack of sleep"],
- calmers: ["creative activities", "exercise", "positive reinforcement"]
+ triggers: ["criticism", "restrictions", "boredom"],
+ calmers: ["activities", "praise", "routine", "engagement"],
+ personality: "bipolar",
+ currentMood: "normal" // can be: manic, depressive, normal
}, {
- name: "David",
- disorder: "OCD",
+ name: "Zeynep",
+ disorder: "OKB",
sanity: 90,
- triggers: ["disorder", "unexpected changes", "contamination"],
- calmers: ["organization", "cleaning", "structured activities"]
+ triggers: ["disorder", "asymmetry", "dirty objects", "interrupted rituals"],
+ calmers: ["organization", "cleaning together", "respecting routines", "symmetry"],
+ personality: "ocd",
+ currentMood: "anxious"
}, {
- name: "Amy",
- disorder: "DID",
+ name: "Mehmet",
+ disorder: "Dissosiyatif Kimlik Bozukluğu",
sanity: 75,
- triggers: ["trauma reminders", "stress", "confrontation"],
- calmers: ["safe spaces", "grounding exercises", "supportive conversation"]
+ 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
@@ -237,62 +264,190 @@
dialogueBox.y = 2200;
game.addChild(dialogueBox);
// Action Definitions
var actions = [{
- text: "Talk Gently",
+ text: "Empathetic Talk",
cost: 15,
effect: function effect(character) {
- if (character.calmers.indexOf("gentle conversation") >= 0) {
- character.updateSanity(10);
- dialogueBox.showDialogue("You have a gentle conversation with " + character.name + ". They seem calmer.", 2000);
- } else {
- character.updateSanity(2);
- dialogueBox.showDialogue("You talk with " + character.name + ". They listen politely.", 2000);
- }
+ var response = getCharacterResponse(character, "empathetic_talk");
+ character.updateSanity(response.sanityChange);
+ dialogueBox.showDialogue(response.dialogue, 3000);
}
}, {
text: "Art Therapy",
cost: 25,
effect: function effect(character) {
- if (character.calmers.indexOf("art therapy") >= 0) {
- character.updateSanity(15);
- dialogueBox.showDialogue(character.name + " enjoys the art session and feels much better.", 2000);
- } else if (character.calmers.indexOf("creative activities") >= 0) {
- character.updateSanity(8);
- dialogueBox.showDialogue(character.name + " finds the art activities somewhat helpful.", 2000);
- } else {
- character.updateSanity(3);
- dialogueBox.showDialogue(character.name + " participates in art but seems indifferent.", 2000);
- }
+ var response = getCharacterResponse(character, "art_therapy");
+ character.updateSanity(response.sanityChange);
+ dialogueBox.showDialogue(response.dialogue, 3000);
}
}, {
text: "Read Together",
cost: 20,
effect: function effect(character) {
- if (character.calmers.indexOf("reading together") >= 0) {
- character.updateSanity(12);
- dialogueBox.showDialogue("Reading together helps " + character.name + " relax significantly.", 2000);
- } else if (character.calmers.indexOf("routine activities") >= 0) {
- character.updateSanity(6);
- dialogueBox.showDialogue(character.name + " appreciates the routine of reading.", 2000);
- } else {
- character.updateSanity(2);
- dialogueBox.showDialogue("You read with " + character.name + " for a while.", 2000);
- }
+ var response = getCharacterResponse(character, "read_together");
+ character.updateSanity(response.sanityChange);
+ dialogueBox.showDialogue(response.dialogue, 3000);
}
}, {
- text: "Organize Space",
+ text: "Organize/Clean",
cost: 30,
effect: function effect(character) {
- if (character.calmers.indexOf("organization") >= 0) {
- character.updateSanity(20);
- dialogueBox.showDialogue(character.name + " feels much better with everything organized.", 2000);
+ var response = getCharacterResponse(character, "organize");
+ character.updateSanity(response.sanityChange);
+ dialogueBox.showDialogue(response.dialogue, 3000);
+ }
+}, {
+ text: "Give Space",
+ 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 + " is too agitated and rejects your help aggressively!"
+ };
+ }
+ if (character.isHelpful) {
+ return {
+ sanityChange: 5,
+ dialogue: character.name + " is in great spirits and appreciates your effort. They even help others!"
+ };
+ }
+ // 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: 'You seem honest... maybe I can trust you a little.'"
+ } : {
+ sanityChange: -5,
+ dialogue: "Yusuf: 'You're just like them, trying to get information from me!'"
+ };
+ } else if (actionType === "give_space") {
+ return {
+ sanityChange: 8,
+ dialogue: "Yusuf: 'Thank you for leaving me alone. I need to think.'"
+ };
} else {
- character.updateSanity(5);
- dialogueBox.showDialogue("You help organize the space. " + character.name + " seems appreciative.", 2000);
+ return {
+ sanityChange: -3,
+ dialogue: "Yusuf: 'Stop trying to control me! I know what you're doing.'"
+ };
}
+ } else if (character.personality === "schizophrenic") {
+ if (actionType === "empathetic_talk") {
+ return {
+ sanityChange: 15,
+ dialogue: "Elif: 'You... you believe me about the voices? Thank you for listening.'"
+ };
+ } else if (actionType === "art_therapy") {
+ return {
+ sanityChange: 12,
+ dialogue: "Elif: 'The music makes the voices quieter. This helps so much.'"
+ };
+ } else {
+ return {
+ sanityChange: -8,
+ dialogue: "Elif: 'The voices are getting louder! They don't like what you're doing!'"
+ };
+ }
+ } else if (character.personality === "bipolar") {
+ if (character.currentMood === "manic") {
+ if (actionType === "empathetic_talk") {
+ return {
+ sanityChange: -5,
+ dialogue: "Kemal: 'Talking is boring! Let's paint the walls and dance!'"
+ };
+ } else if (actionType === "art_therapy") {
+ return {
+ sanityChange: 10,
+ dialogue: "Kemal: 'YES! This is perfect! Let's create something amazing!'"
+ };
+ } else {
+ return {
+ sanityChange: -10,
+ dialogue: "Kemal: 'You're trying to slow me down! I have energy for everything!'"
+ };
+ }
+ } else if (character.currentMood === "depressive") {
+ if (actionType === "empathetic_talk") {
+ return {
+ sanityChange: 12,
+ dialogue: "Kemal: 'It feels good to have someone who cares... maybe today won't be so dark.'"
+ };
+ } else {
+ return {
+ sanityChange: 2,
+ dialogue: "Kemal: 'Nothing matters anymore... but thank you for trying.'"
+ };
+ }
+ } else {
+ return {
+ sanityChange: 6,
+ dialogue: "Kemal: 'I appreciate your effort. I'm feeling more balanced today.'"
+ };
+ }
+ } else if (character.personality === "ocd") {
+ if (actionType === "organize") {
+ return {
+ sanityChange: 20,
+ dialogue: "Zeynep: 'Perfect! Everything is in its place now. I feel so much better!'"
+ };
+ } else if (actionType === "empathetic_talk") {
+ return {
+ sanityChange: 5,
+ dialogue: "Zeynep: 'Thank you for understanding my need for order.'"
+ };
+ } else {
+ return {
+ sanityChange: -8,
+ dialogue: "Zeynep: 'No, no! You're making everything messy! The pattern is wrong!'"
+ };
+ }
+ } else if (character.personality === "did") {
+ if (character.currentMood === "gentle") {
+ return {
+ sanityChange: 10,
+ dialogue: "Mehmet: 'Good morning friend, your kindness means a lot to me.'"
+ };
+ } else if (character.currentMood === "child") {
+ if (actionType === "empathetic_talk") {
+ return {
+ sanityChange: 15,
+ dialogue: "Mehmet (Child): 'Will you play with me? I'm scared and lonely!'"
+ };
+ } else {
+ return {
+ sanityChange: 8,
+ dialogue: "Mehmet (Child): 'This is fun! You're nice to me!'"
+ };
+ }
+ } else {
+ // dark mood
+ if (actionType === "give_space") {
+ return {
+ sanityChange: 5,
+ dialogue: "Mehmet (Dark): 'Smart choice. You don't want to be around me right now.'"
+ };
+ } else {
+ return {
+ sanityChange: -15,
+ dialogue: "Mehmet (Dark): 'Your pathetic attempts disgust me. Stay away.'"
+ };
+ }
+ }
}
-}];
+ return {
+ sanityChange: 2,
+ dialogue: character.name + " acknowledges your effort."
+ };
+}
// 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) {
@@ -346,14 +501,33 @@
}
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("BAD", character.name + " became too unstable during the night and attacked. The situation became impossible to control.");
+ 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);
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