/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var OptionCard = Container.expand(function () {
var self = Container.call(this);
// Enhanced background with border effect matching StatBar design
var backgroundBorder = self.attachAsset('optionCard', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.05,
scaleY: 1.2
});
backgroundBorder.tint = 0x2a2a2a;
var background = self.attachAsset('optionCard', {
anchorX: 0.5,
anchorY: 0.5
});
background.tint = 0x1a1a1a;
// Glow effect background matching StatBar style
var glowEffect = self.attachAsset('optionCard', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.02,
scaleY: 1.1
});
glowEffect.tint = 0x4a90e2;
glowEffect.alpha = 0.3;
var optionText = new Text2('', {
size: 68,
fill: 0xFFFFFF,
wordWrap: true,
wordWrapWidth: 720,
font: 'Georgia, serif',
stroke: 0x000000,
strokeThickness: 4
});
optionText.anchor.set(0.5, 0.5);
optionText.x = 0;
optionText.y = -60;
self.addChild(optionText);
var effectsText = new Text2('', {
size: 52,
fill: 0xFFDD88,
wordWrap: true,
wordWrapWidth: 720,
font: 'Georgia, serif',
stroke: 0x000000,
strokeThickness: 3
});
effectsText.anchor.set(0.5, 0.5);
effectsText.x = 0;
effectsText.y = 90;
self.addChild(effectsText);
self.setOption = function (option) {
optionText.setText(option.text);
effectsText.setText(''); // Clear effects text
};
return self;
});
var ScenarioCard = Container.expand(function () {
var self = Container.call(this);
var background = self.attachAsset('scenarioCard', {
anchorX: 0.5,
anchorY: 0.5
});
// Enhanced background with border effect
background.tint = 0x2a2a2a;
var borderEffect = self.attachAsset('scenarioCard', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.02,
scaleY: 1.02
});
borderEffect.tint = 0x4a90e2;
borderEffect.alpha = 0.3;
self.addChildAt(borderEffect, 0);
var titleText = new Text2('', {
size: 91,
fill: 0xFFDD44,
font: 'Georgia, serif',
stroke: 0x000000,
strokeThickness: 4
});
titleText.anchor.set(0.5, 0);
titleText.x = 0;
titleText.y = -550;
self.addChild(titleText);
var descriptionText = new Text2('', {
size: 68,
fill: 0xEEEEEE,
wordWrap: true,
wordWrapWidth: 1600,
font: 'Georgia, serif',
stroke: 0x000000,
strokeThickness: 3
});
descriptionText.anchor.set(0.5, 0);
descriptionText.x = 0;
descriptionText.y = -420;
self.addChild(descriptionText);
var leftOption = self.addChild(new OptionCard());
leftOption.x = -400;
leftOption.y = 150;
var rightOption = self.addChild(new OptionCard());
rightOption.x = 400;
rightOption.y = 150;
var swipeLeft = self.attachAsset('swipeIndicator', {
anchorX: 0.5,
anchorY: 0.5
});
swipeLeft.x = -400;
swipeLeft.y = 400;
swipeLeft.alpha = 0.7;
swipeLeft.tint = 0xff6b6b;
var swipeRight = self.attachAsset('swipeIndicator', {
anchorX: 0.5,
anchorY: 0.5
});
swipeRight.x = 400;
swipeRight.y = 400;
swipeRight.alpha = 0.7;
swipeRight.tint = 0x51cf66;
self.setScenario = function (scenario) {
titleText.setText(scenario.title);
descriptionText.setText(scenario.description);
leftOption.setOption(scenario.leftOption);
rightOption.setOption(scenario.rightOption);
};
self.getLeftOption = function () {
return leftOption;
};
self.getRightOption = function () {
return rightOption;
};
return self;
});
var StatBar = Container.expand(function (statName, color) {
var self = Container.call(this);
// Main container background with rounded appearance
var mainBackground = self.attachAsset('statBar', {
anchorX: 0,
anchorY: 0,
scaleX: 1.0,
scaleY: 1.4
});
mainBackground.tint = 0x1a1a1a;
// Progress bar background (darker)
var progressBg = self.attachAsset('statBar', {
anchorX: 0,
anchorY: 0,
scaleX: 0.95,
scaleY: 1.1
});
progressBg.tint = 0x0a0a0a;
progressBg.x = 8;
progressBg.y = 6;
// Progress fill bar
var fill = self.attachAsset('statFill', {
anchorX: 0,
anchorY: 0
});
fill.tint = color;
fill.x = 8;
fill.y = 6;
fill.scaleY = 1.1;
// Subtle glow effect
var glowEffect = self.attachAsset('statBar', {
anchorX: 0,
anchorY: 0,
scaleX: 1.02,
scaleY: 1.45
});
glowEffect.tint = color;
glowEffect.alpha = 0.15;
// Clean label text
var label = new Text2(statName, {
size: 42,
fill: 0xFFFFFF,
font: 'Arial-Bold',
stroke: 0x000000,
strokeThickness: 2
});
label.anchor.set(0, 0.5);
label.x = 15;
label.y = 20;
self.addChild(label);
// Value text positioned on the right
var valueText = new Text2('100', {
size: 38,
fill: 0xFFFFFF,
font: 'Arial-Bold',
stroke: 0x000000,
strokeThickness: 2
});
valueText.anchor.set(1, 0.5);
valueText.x = 285;
valueText.y = 20;
self.addChild(valueText);
self.setValue = function (value) {
var fillPercent = Math.max(0, Math.min(1, value / 100));
fill.scaleX = fillPercent * 0.95;
valueText.setText(Math.round(value).toString());
// Clean color transitions based on value
if (value < 25) {
fill.tint = 0xff4444;
glowEffect.tint = 0xff4444;
glowEffect.alpha = 0.25;
valueText.fill = 0xff8888;
label.fill = 0xffaaaa;
} else if (value < 50) {
fill.tint = 0xff8800;
glowEffect.tint = 0xff8800;
glowEffect.alpha = 0.2;
valueText.fill = 0xffaa44;
label.fill = 0xffcc88;
} else if (value < 75) {
fill.tint = 0xffcc00;
glowEffect.tint = 0xffcc00;
glowEffect.alpha = 0.18;
valueText.fill = 0xffdd88;
label.fill = 0xffeeaa;
} else {
fill.tint = color;
glowEffect.tint = color;
glowEffect.alpha = 0.15;
valueText.fill = 0xFFFFFF;
label.fill = 0xFFFFFF;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a1a
});
/****
* Game Code
****/
var stats = {
morale: 100,
resources: 100,
security: 100,
health: 100,
hope: 100
};
var scenarios = [{
title: "Yiyecek Kıtlığı Krizi",
description: "Sığınağın yiyecek malzemeleri tehlikeli derecede azaldı. Bir avcı grubu sınırlı malzemelerle geri döndü, ancak herkes için yeterli değil.",
leftOption: {
text: "Yiyeceği 300 kişi arasında eşit olarak paylaştır",
effects: {
morale: -10,
resources: -5,
health: -15,
hope: 5
}
},
rightOption: {
text: "Temel işçiler için yiyeceği öncelendir",
effects: {
morale: -20,
resources: 10,
security: 5,
health: -5
}
}
}, {
title: "Tıbbi Malzeme İkilemi",
description: "Bir çocuk kritik durumda ve ilaç gerekiyor. Aynı ilaç, hafif rahatsızlıkları olan birkaç yetişkini tedavi etmek için kullanılabilir.",
leftOption: {
text: "Tüm mevcut ilaçla çocuğu kurtar",
effects: {
morale: 15,
health: -10,
hope: 10
}
},
rightOption: {
text: "Bunun yerine birçok yetişkini tedavi et",
effects: {
morale: -15,
health: 20,
hope: -10
}
}
}, {
title: "Güvenlik İhlali",
description: "Sığınak girişi yakınında bilinmeyen figürler görüldü. Güvenlik ekibiniz araştırma için izin istiyor, ancak bu açığa çıkma riskini taşıyor.",
leftOption: {
text: "Güvenlik ekibini araştırmaya gönder",
effects: {
security: 15,
resources: -10,
morale: -5
}
},
rightOption: {
text: "Gizli kal ve bekle",
effects: {
security: -10,
morale: -10,
hope: -5
}
}
}, {
title: "Enerji Tasarrufu",
description: "Sığınağın elektrik şebekesi arızalanıyor. Yaşam alanlarını ısıtmak ile su filtreleme sistemini sürdürmek arasında seçim yapmalısın.",
leftOption: {
text: "Konfor için ısıtmaya öncelik ver",
effects: {
morale: 10,
health: -15,
resources: -10
}
},
rightOption: {
text: "Su filtreleme sistemini sürdür",
effects: {
morale: -15,
health: 15,
resources: 5
}
}
}, {
title: "Kaynak Keşfi",
description: "İzciler terk edilmiş bir malzeme deposu buldular, ancak onu geri almak en iyi avcılarının hayatını riske atmayı gerektiriyor.",
leftOption: {
text: "Avcı ekibini gönder",
effects: {
resources: 25,
security: -10,
morale: -5
}
},
rightOption: {
text: "Güvenli oyna ve yerinde kal",
effects: {
resources: -5,
security: 5,
morale: 5
}
}
}, {
title: "Sığınak İsyanı",
description: "Sürekli kıt kaynak dağıtımından dolayı halk ayaklandı. Güvenlik güçlerin müdahale etmesini istiyorlar.",
condition: function condition() {
return decisions.foodRationing >= 2;
},
leftOption: {
text: "Güç kullanarak isyanı bastır",
effects: {
morale: -25,
security: 15,
hope: -20
}
},
rightOption: {
text: "İsyancılarla müzakere et",
effects: {
morale: 10,
security: -10,
resources: -15
}
}
}, {
title: "Doktor Krizi",
description: "Ana doktorunuz hasta oldu. Daha önce çocuğu kurtarmayı seçtiğiniz için ailesi size güveniyor.",
condition: function condition() {
return decisions.savedChild;
},
leftOption: {
text: "Tüm tıbbi kaynakları doktora kullan",
effects: {
morale: 20,
health: -20,
hope: 15
}
},
rightOption: {
text: "Doktoru iyileştirmek için sadece gerekli kaynakları kullan",
effects: {
morale: 5,
health: 10,
hope: -5
}
}
}, {
title: "Güvenlik Açığı Sonuçları",
description: "Daha önce dışarıdaki figürleri araştırdığınız için şimdi onlar sığınağınızı buluyor.",
condition: function condition() {
return decisions.investigated;
},
leftOption: {
text: "Saldırıya hazırlan ve savaş",
effects: {
morale: -15,
security: -20,
health: -25,
hope: -10
}
},
rightOption: {
text: "Barışçıl temas kurmaya çalış",
effects: {
morale: 15,
security: -5,
resources: 20,
hope: 25
}
}
}, {
title: "Enerji Yeniliği",
description: "Su filtreleme sistemine yaptığınız yatırım yeni bir enerji kaynağı keşfetmenizi sağladı.",
condition: function condition() {
return decisions.prioritizedWater >= 2;
},
leftOption: {
text: "Yeni teknolojiyi tüm sığınakta uygula",
effects: {
morale: 25,
resources: 30,
health: 20,
hope: 30
}
},
rightOption: {
text: "Teknolojiyi yavaşça ve güvenli şekilde test et",
effects: {
morale: 5,
resources: 15,
health: 10,
hope: 10
}
}
}, {
title: "Avcı Kayıpları",
description: "Sürekli riskli görevlere gönderdiğiniz avcılardan üçü geri dönmedi. Aileleri açıklama bekliyor.",
condition: function condition() {
return decisions.sentHunters >= 2;
},
leftOption: {
text: "Gerçeği söyle ve sorumluluğu üstlen",
effects: {
morale: -20,
security: -15,
hope: 5
}
},
rightOption: {
text: "Onları kahramanlar olarak an ve gerçeği gizle",
effects: {
morale: 10,
security: 5,
hope: -15
}
}
}, {
title: "Radyasyon Sızıntısı",
description: "Sığınağın doğu sektöründe radyasyon seviyesi yükseliyor. Bu bölgeyi kapatmak 50 kişiyi tahliye etmeyi gerektiriyor.",
leftOption: {
text: "Bölgeyi derhal kapatın ve insanları tahliye edin",
effects: {
health: 15,
morale: -10,
resources: -15
}
},
rightOption: {
text: "Radyasyon kalkanı inşa etmeyi deneyin",
effects: {
health: -20,
resources: -25,
security: 10
}
}
}, {
title: "Su Kirliği",
description: "Ana su kaynağında bakteriyel kontaminasyon tespit edildi. Su arıtma sistemi onarım gerektiriyor.",
leftOption: {
text: "Tüm kaynakları su arıtımına odaklayın",
effects: {
health: 20,
resources: -20,
morale: 5
}
},
rightOption: {
text: "Yedek su kaynaklarına geçin",
effects: {
health: -5,
resources: 15,
security: -10
}
}
}, {
title: "Yaşlı Nüfus Sorunu",
description: "Sığınaktaki yaşlı nüfus artan sağlık sorunları yaşıyor ve daha fazla kaynak gerektiriyor.",
leftOption: {
text: "Yaşlılara öncelikli bakım sağlayın",
effects: {
morale: 15,
health: -10,
resources: -15,
hope: 10
}
},
rightOption: {
text: "Kaynakları genç nüfusa odaklayın",
effects: {
morale: -25,
health: 10,
resources: 10,
hope: -15
}
}
}, {
title: "Eğitim Sistemi",
description: "Çocuklar için eğitim sistemini kurma zamanı geldi. Pratik beceriler mi yoksa akademik bilgi mi öncelikli olsun?",
leftOption: {
text: "Praktik hayatta kalma becerilerine odaklanın",
effects: {
security: 15,
resources: 10,
morale: -5,
hope: 5
}
},
rightOption: {
text: "Akademik ve sanatsal eğitime yatırım yapın",
effects: {
morale: 20,
hope: 15,
resources: -10,
security: -5
}
}
}, {
title: "Gıda Üretimi İnovasyonu",
description: "Bilim ekibiniz hidroponik tarım sistemi geliştirdi. Bu yeni sistemi test etmek riskli ama ödüllendirici olabilir.",
leftOption: {
text: "Yeni sistemi büyük çapta uygulayın",
effects: {
resources: 25,
health: 10,
security: -15
}
},
rightOption: {
text: "Küçük ölçekte test edin",
effects: {
resources: 10,
health: 5,
morale: 5
}
}
}, {
title: "Enerji Krizi",
description: "Ana güç jeneratörü arızalandı. Yedek sistemler sadece birkaç gün daha dayanabilir.",
leftOption: {
text: "Tüm teknisyenleri onarıma odaklayın",
effects: {
security: 20,
resources: -15,
morale: -10
}
},
rightOption: {
text: "Enerji tasarrufu moduna geçin",
effects: {
morale: -20,
health: -10,
resources: 5,
hope: -5
}
}
}, {
title: "Psikolojik Destek",
description: "Sığınaktaki insanlar depresyon ve anksiyete yaşıyor. Psikolojik destek programı başlatmalısınız.",
leftOption: {
text: "Profesyonel terapi seansları düzenleyin",
effects: {
morale: 25,
hope: 20,
resources: -10
}
},
rightOption: {
text: "Topluluk destekli aktiviteler organize edin",
effects: {
morale: 15,
hope: 10,
security: 5
}
}
}, {
title: "Dış Dünya İletişimi",
description: "Radyo sinyali aldınız. Başka hayatta kalanlar var ama konumunuzu açığa çıkarma riskiyle karşı karşıyasınız.",
leftOption: {
text: "İletişim kurun ve koordinasyon yapın",
effects: {
hope: 30,
morale: 20,
security: -20
}
},
rightOption: {
text: "Sessiz kalın ve pozisyonunuzu koruyun",
effects: {
security: 15,
hope: -10,
morale: -5
}
}
}, {
title: "Atık Yönetimi",
description: "Sığınaktaki atık miktarı tehlikeli seviyelere ulaştı. Atık imha sistemi çözüm gerektiriyor.",
leftOption: {
text: "Yeni arıtma sistemi kurun",
effects: {
health: 20,
resources: -25,
security: 10
}
},
rightOption: {
text: "Atıkları dış alanlara boşaltın",
effects: {
health: -15,
security: -20,
resources: 10
}
}
}, {
title: "Teknoloji Koruma",
description: "Değerli teknolojik ekipmanlarınız eskiyor. Yedek parça bulmak veya yeniden inşa etmek gerekiyor.",
leftOption: {
text: "Mevcut teknolojileri korumaya odaklanın",
effects: {
security: 10,
resources: -15,
health: 5
}
},
rightOption: {
text: "Yeni teknolojiler geliştirmeye yatırım yapın",
effects: {
hope: 20,
resources: -20,
morale: 10
}
}
}, {
title: "Sosyal Hiyerarşi",
description: "Sığınakta sosyal sınıflar oluşmaya başladı. Eşitlikçi mi yoksa meritkratik mi bir sistem kuracaksınız?",
leftOption: {
text: "Katı eşitlik ilkesi uygulayın",
effects: {
morale: 15,
security: -10,
resources: -5,
hope: 10
}
},
rightOption: {
text: "Liyakat temelli hiyerarşi kurun",
effects: {
morale: -15,
security: 15,
resources: 15,
hope: -5
}
}
}, {
title: "Genetik Çeşitlilik",
description: "Uzun vadeli hayatta kalma için genetik çeşitliliği korumak gerekiyor. Üreme politikası belirlemelisiniz.",
leftOption: {
text: "Genetik çeşitliliği maksimize edin",
effects: {
hope: 25,
morale: -10,
health: 15
}
},
rightOption: {
text: "Doğal seçime bırakın",
effects: {
morale: 10,
hope: -5,
health: -10
}
}
}, {
title: "Sanat ve Kültür",
description: "İnsanlar maneviyatlarını yükseltmek için sanatsal aktiviteler talep ediyor. Kaynakları buna ayırmaya değer mi?",
leftOption: {
text: "Sanat programlarını destekleyin",
effects: {
morale: 25,
hope: 20,
resources: -15
}
},
rightOption: {
text: "Kaynaklarınızı pratik ihtiyaçlara odaklayın",
effects: {
morale: -10,
hope: -10,
resources: 15,
security: 5
}
}
}, {
title: "Çocuk İşçiliği",
description: "İş gücü ihtiyacı artıyor. Çocukları hafif işlerde çalıştırmak mı yoksa eğitimlerine odaklanmak mı?",
leftOption: {
text: "Çocukları hafif işlerde görevlendirin",
effects: {
resources: 15,
morale: -20,
hope: -15,
security: 10
}
},
rightOption: {
text: "Çocukların eğitimine öncelik verin",
effects: {
hope: 25,
morale: 15,
resources: -10
}
}
}, {
title: "Hastalık Karantinası",
description: "Bulaşıcı bir hastalık yayılıyor. Hastaları izole etmek mi yoksa toplumsal dayanışmayı sürdürmek mi?",
leftOption: {
text: "Katı karantina uygulayın",
effects: {
health: 25,
morale: -20,
security: 10,
hope: -10
}
},
rightOption: {
text: "Toplumsal bakımı sürdürün",
effects: {
health: -25,
morale: 20,
hope: 15
}
}
}, {
title: "Silah Üretimi",
description: "Güvenlik için silah üretimi gerekli mi? Bu kaynakları başka alanlarda kullanabilirsiniz.",
leftOption: {
text: "Silah üretimini artırın",
effects: {
security: 25,
resources: -20,
morale: -10
}
},
rightOption: {
text: "Barışçıl çözümlere odaklanın",
effects: {
morale: 15,
hope: 20,
security: -15
}
}
}, {
title: "Dış Keşif",
description: "Yüzeydeki radyasyon seviyesinin azaldığı raporlanıyor. Keşif ekibi göndermek riskli ama umut verici.",
leftOption: {
text: "Keşif misyonu başlatın",
effects: {
hope: 30,
security: -15,
resources: -10
}
},
rightOption: {
text: "Daha güvenli koşullar için bekleyin",
effects: {
morale: -10,
hope: -5,
security: 10
}
}
}, {
title: "Ticaret Sistemi",
description: "Sığınak içinde takas sistemi gelişiyor. Bu sistemi desteklemek mi yoksa merkezi dağıtımı sürdürmek mi?",
leftOption: {
text: "Serbest ticaret sistemini destekleyin",
effects: {
morale: 20,
resources: 15,
security: -10
}
},
rightOption: {
text: "Merkezi dağıtım sistemini koruyun",
effects: {
morale: -10,
security: 15,
resources: -5,
hope: 5
}
}
}, {
title: "Yaşlı Bilgi",
description: "Yaşlılar eskiden dünyadan değerli bilgiler saklıyor. Bu bilgileri kaydetmek için zaman ayırmalı mısınız?",
leftOption: {
text: "Bilgi arşivleme projesini başlatın",
effects: {
hope: 25,
morale: 15,
resources: -10
}
},
rightOption: {
text: "Mevcut acil ihtiyaçlara odaklanın",
effects: {
resources: 10,
hope: -10,
morale: -5
}
}
}, {
title: "Enerji Paylaşımı",
description: "Komşu sığınak enerji konusunda yardım istiyor. Onlara yardım etmek kendi kaynaklarınızı riske atar.",
condition: function condition() {
return decisions.communicatedOutside;
},
leftOption: {
text: "Enerji paylaşın ve ittifak kurun",
effects: {
hope: 20,
resources: -15,
security: 10,
morale: 15
}
},
rightOption: {
text: "Kendi kaynaklarınızı koruyun",
effects: {
resources: 10,
security: 5,
hope: -15,
morale: -10
}
}
}, {
title: "Mutasyon Sorunu",
description: "Bazı sığınak sakinlerinde genetik mutasyonlar görülüyor. Bu durumu nasıl karşılayacaksınız?",
leftOption: {
text: "Mutasyonları tedavi etmeye çalışın",
effects: {
health: -15,
resources: -20,
morale: 15,
hope: 10
}
},
rightOption: {
text: "Mutasyonları doğal evrim olarak kabul edin",
effects: {
morale: -10,
health: 10,
hope: 20
}
}
}, {
title: "Liderlik Krizi",
description: "Bazı gruplar sizin liderliğinizi sorguluyor. Otoritenizi nasıl güçlendireceksiniz?",
leftOption: {
text: "Demokratik oylamalarla meşruiyeti artırın",
effects: {
morale: 25,
security: -15,
hope: 15
}
},
rightOption: {
text: "Güçlü liderlik ile kararlılık gösterin",
effects: {
security: 20,
morale: -15,
resources: 10
}
}
}, {
title: "Gizli Araştırma",
description: "Bilim ekibiniz etik olmayan deneyler yapmak istiyor. Bu araştırmalar hayatta kalmayı sağlayabilir.",
leftOption: {
text: "Araştırmalara izin verin",
effects: {
health: 20,
security: 15,
morale: -25,
hope: -15
}
},
rightOption: {
text: "Etik sınırları koruyun",
effects: {
morale: 20,
hope: 15,
health: -10,
security: -5
}
}
}, {
title: "Beslenme Çeşitliliği",
description: "Monoton beslenme halkın sağlığını etkiliyor. Gıda çeşitliliğini artırmak için kaynak ayırmalı mısınız?",
leftOption: {
text: "Gıda çeşitliliği programı başlatın",
effects: {
health: 20,
morale: 15,
resources: -20
}
},
rightOption: {
text: "Temel besinlerle yetinin",
effects: {
health: -10,
morale: -10,
resources: 15
}
}
}, {
title: "Bilgi Güvenliği",
description: "Kritik bilgilere erişimi sınırlamak mı yoksa şeffaflığı sürdürmek mi gerekiyor?",
leftOption: {
text: "Bilgiyi sınırlayın ve güvenliği artırın",
effects: {
security: 20,
morale: -15,
hope: -10
}
},
rightOption: {
text: "Şeffaflığı koruyun",
effects: {
morale: 20,
hope: 15,
security: -15
}
}
}, {
title: "Doğum Kontrolü",
description: "Nüfus artışı kaynakları zorluyor. Doğum kontrolü politikası uygulamalı mısınız?",
leftOption: {
text: "Doğum kontrolü uygulayın",
effects: {
resources: 15,
morale: -20,
hope: -10,
health: 5
}
},
rightOption: {
text: "Doğal nüfus artışına izin verin",
effects: {
hope: 20,
morale: 15,
resources: -20,
health: -10
}
}
}, {
title: "Teknoloji Bağımlılığı",
description: "İnsanlar teknolojiye aşırı bağımlı hale geldi. Bu bağımlılığı azaltmak için adım atmalı mısınız?",
leftOption: {
text: "Teknoloji kullanımını sınırlayın",
effects: {
health: 15,
morale: -15,
security: -10,
hope: 5
}
},
rightOption: {
text: "Teknolojik gelişimi destekleyin",
effects: {
morale: 15,
security: 15,
health: -10,
hope: 10
}
}
}, {
title: "Çevre Koruma",
description: "Sığınağın çevresel sistemi bozuluyor. Ekolojik dengeyi korumak için yatırım gerekiyor.",
leftOption: {
text: "Çevre koruma programı başlatın",
effects: {
health: 25,
hope: 20,
resources: -25
}
},
rightOption: {
text: "Acil ihtiyaçlara odaklanın",
effects: {
health: -15,
hope: -10,
resources: 15
}
}
}, {
title: "Spor ve Rekreasyon",
description: "Fiziksel aktivite eksikliği sağlık sorunlarına yol açıyor. Spor tesisleri kurmalı mısınız?",
leftOption: {
text: "Spor tesisleri inşa edin",
effects: {
health: 20,
morale: 20,
resources: -15
}
},
rightOption: {
text: "Alanı başka amaçlarla kullanın",
effects: {
health: -10,
morale: -10,
resources: 10,
security: 5
}
}
}, {
title: "Dil ve İletişim",
description: "Farklı etnik gruplar kendi dillerini konuşuyor. Ortak dil politikası gerekli mi?",
leftOption: {
text: "Ortak dil zorunluluğu getirin",
effects: {
security: 15,
morale: -20,
hope: -5
}
},
rightOption: {
text: "Çok dilli sistemi destekleyin",
effects: {
morale: 20,
hope: 15,
security: -10
}
}
}, {
title: "Karar Alma Süreci",
description: "Önemli kararları nasıl alacağınız sorgulanıyor. Danışma kurulu mu yoksa tek adam kararı mı?",
leftOption: {
text: "Danışma kurulu oluşturun",
effects: {
morale: 25,
hope: 15,
security: -15
}
},
rightOption: {
text: "Karar alma yetkisini koruyun",
effects: {
security: 20,
morale: -15,
resources: 10
}
}
}, {
title: "Bellek Kayıtları",
description: "Savaş öncesi yaşamdan kayıtlar bulundu. Bu anıları korumak mı yoksa geçmişi unutturmak mı?",
leftOption: {
text: "Geçmiş kayıtlarını koruyun",
effects: {
hope: 25,
morale: -10,
resources: -10
}
},
rightOption: {
text: "Geleceğe odaklanın",
effects: {
hope: -10,
morale: 15,
resources: 10
}
}
}, {
title: "İç Güvenlik",
description: "Sığınak içinde küçük suçlar artıyor. Güvenlik güçlerini artırmak mı yoksa sosyal programlar mı?",
leftOption: {
text: "Güvenlik güçlerini artırın",
effects: {
security: 25,
morale: -15,
hope: -10
}
},
rightOption: {
text: "Sosyal rehabilitasyon programları başlatın",
effects: {
morale: 20,
hope: 15,
security: -15
}
}
}, {
title: "Enerji Verimliliği",
description: "Yeni enerji tasarruf teknolojileri mevcut. Eski sistemleri değiştirmek maliyetli ama verimli.",
leftOption: {
text: "Yeni teknolojilere geçin",
effects: {
resources: -25,
health: 15,
security: 20,
hope: 10
}
},
rightOption: {
text: "Mevcut sistemleri optimize edin",
effects: {
resources: 5,
health: 5,
security: 5
}
}
}, {
title: "Sosyal Medya",
description: "İç iletişim ağı kuruldu ama dedikodular ve yanlış bilgiler yayılıyor. Bu sistemi düzenlemeli misiniz?",
leftOption: {
text: "İletişimi sıkı şekilde düzenleyin",
effects: {
security: 15,
morale: -20,
hope: -10
}
},
rightOption: {
text: "Serbest iletişime izin verin",
effects: {
morale: 20,
hope: 15,
security: -20
}
}
}, {
title: "Araştırma Bütçesi",
description: "Bilimsel araştırma için bütçe ayırmak gelecek için önemli ama mevcut ihtiyaçları zorluyor.",
leftOption: {
text: "Araştırma bütçesini artırın",
effects: {
hope: 25,
resources: -20,
health: 10
}
},
rightOption: {
text: "Mevcut ihtiyaçlara odaklanın",
effects: {
resources: 15,
hope: -15,
health: 5
}
}
}, {
title: "Gıda Güvenliği",
description: "Bazı gıda kaynaklarında bozulma tespit edildi. Bu gıdaları imha etmek mi yoksa risk alıp kullanmak mı?",
leftOption: {
text: "Şüpheli gıdaları imha edin",
effects: {
health: 20,
resources: -25,
morale: 10
}
},
rightOption: {
text: "Gıdaları dikkatlice işleyip kullanın",
effects: {
health: -20,
resources: 15,
morale: -10
}
}
}, {
title: "Yetenek Geliştirme",
description: "İnsanların yeteneklerini geliştirmek için eğitim programları mı yoksa pratik deneyim mi?",
leftOption: {
text: "Teorik eğitim programları",
effects: {
hope: 20,
morale: 15,
resources: -15,
security: -5
}
},
rightOption: {
text: "Uygulamalı öğrenme sistemi",
effects: {
security: 15,
resources: 10,
morale: -5
}
}
}, {
title: "Kültürel Etkinlikler",
description: "Festivaller ve kutlamalar moral için önemli ama kaynak tüketiyor. Bu etkinlikleri desteklemeli misiniz?",
leftOption: {
text: "Kültürel etkinlikleri destekleyin",
effects: {
morale: 30,
hope: 25,
resources: -20
}
},
rightOption: {
text: "Kaynaklarınızı koruyun",
effects: {
morale: -15,
hope: -10,
resources: 15
}
}
}, {
title: "İnovasyon Teşviki",
description: "Yaratıcı çözümler için ödül sistemi mi yoksa zorunlu inovasyon programları mı daha etkili?",
leftOption: {
text: "Ödül tabanlı teşvik sistemi",
effects: {
morale: 20,
hope: 20,
resources: -15
}
},
rightOption: {
text: "Zorunlu inovasyon programları",
effects: {
security: 15,
resources: 10,
morale: -15
}
}
}, {
title: "Kaynak Dağıtımı",
description: "Kıt kaynakları yaşa, yeteneğe, ya da ihtiyaca göre mi dağıtacaksınız?",
leftOption: {
text: "İhtiyaç temelli dağıtım",
effects: {
morale: 20,
health: 15,
resources: -10
}
},
rightOption: {
text: "Yetenek temelli dağıtım",
effects: {
morale: -15,
security: 15,
resources: 15
}
}
}, {
title: "Psikolojik Savaş",
description: "Dış gruplardan psikolojik baskı geliyor. Bu tehditlere nasıl yanıt vereceksiniz?",
condition: function condition() {
return decisions.communicatedOutside;
},
leftOption: {
text: "Psikolojik savunma programı başlatın",
effects: {
morale: 15,
security: 20,
resources: -15
}
},
rightOption: {
text: "Tehditleri görmezden gelin",
effects: {
morale: -20,
security: -15,
resources: 5
}
}
}, {
title: "Teknolojik Bağımsızlık",
description: "Dışarıya bağımlılığı azaltmak için kendi teknolojinizi mi geliştirirsiniz?",
leftOption: {
text: "Teknolojik bağımsızlık için yatırım yapın",
effects: {
hope: 25,
security: 20,
resources: -30
}
},
rightOption: {
text: "Mevcut teknolojilerle yetinin",
effects: {
resources: 10,
hope: -10,
security: -5
}
}
}, {
title: "Çocuk Bakımı",
description: "Çocuk bakımını ailelere mi bırakacaksınız yoksa toplumsal sistem mi kuracaksınız?",
leftOption: {
text: "Toplumsal çocuk bakım sistemi",
effects: {
morale: 15,
health: 20,
resources: -20,
hope: 15
}
},
rightOption: {
text: "Aile tabanlı bakım sistemi",
effects: {
morale: 10,
resources: 10,
security: -5
}
}
}, {
title: "Enerji Depolama",
description: "Fazla enerji depolamak için yeni sistem kurulacak. Bu yatırım gelecek için kritik mi?",
leftOption: {
text: "Enerji depolama sistemine yatırım yapın",
effects: {
security: 25,
resources: -25,
hope: 20
}
},
rightOption: {
text: "Mevcut sistemlerle devam edin",
effects: {
resources: 10,
security: -10,
hope: -5
}
}
}, {
title: "Sosyal Adalet",
description: "Bazı gruplar ayrımcılık yaşadığını iddia ediyor. Bu durumu nasıl ele alacaksınız?",
leftOption: {
text: "Eşitlik programları başlatın",
effects: {
morale: 25,
hope: 20,
security: -15
}
},
rightOption: {
text: "Mevcut sistemi koruyun",
effects: {
security: 15,
morale: -20,
hope: -15
}
}
}, {
title: "Bilimsel Etik",
description: "Tartışmalı bilimsel deneyler öneriliyor. Bu araştırmalar ileriye dönük çözümler sağlayabilir.",
leftOption: {
text: "Etik komite kurarak deneyleri denetleyin",
effects: {
hope: 20,
morale: 15,
resources: -15
}
},
rightOption: {
text: "Tüm deneyleri yasaklayın",
effects: {
morale: 10,
hope: -20,
resources: 5
}
}
}, {
title: "İklim Kontrolü",
description: "Sığınağın iç iklimini kontrol etmek için gelişmiş sistem kurulacak. Maliyeti yüksek ama konfor sağlar.",
leftOption: {
text: "Gelişmiş iklim sistemi kurun",
effects: {
health: 25,
morale: 20,
resources: -30
}
},
rightOption: {
text: "Temel iklim kontrolüyle yetinin",
effects: {
health: -5,
morale: -10,
resources: 15
}
}
}, {
title: "Kaynak Geri Dönüşümü",
description: "Atık malzemeleri geri dönüştürmek için kapsamlı sistem gerekiyor. Bu yatırıma değer mi?",
leftOption: {
text: "Kapsamlı geri dönüşüm sistemi kurun",
effects: {
health: 20,
resources: 15,
security: 10,
hope: 15
}
},
rightOption: {
text: "Basit geri dönüşümle yetinin",
effects: {
health: 5,
resources: 5,
security: -5
}
}
}, {
title: "Uzun Vadeli Planlama",
description: "50 yıllık gelişim planı hazırlanacak. Bu planlama sürecine kimler dahil edilmeli?",
leftOption: {
text: "Tüm toplumu planlama sürecine dahil edin",
effects: {
morale: 25,
hope: 30,
security: -15,
resources: -10
}
},
rightOption: {
text: "Uzman ekiple planlama yapın",
effects: {
hope: 15,
security: 15,
morale: -10
}
}
}, {
title: "Kültürel Miras",
description: "Savaş öncesi kültürel eserleri korumak için özel alan mı ayrılacak yoksa pratik kullanım mı öncelenecek?",
leftOption: {
text: "Kültürel miras alanı oluşturun",
effects: {
hope: 25,
morale: 20,
resources: -15
}
},
rightOption: {
text: "Alanı pratik ihtiyaçlar için kullanın",
effects: {
resources: 15,
hope: -15,
morale: -10
}
}
}, {
title: "Zihinsel Sağlık",
description: "PTSD ve travma vakalarının artması nedeniyle özel tedavi programı gerekiyor.",
leftOption: {
text: "Kapsamlı zihinsel sağlık programı başlatın",
effects: {
morale: 25,
health: 20,
hope: 25,
resources: -20
}
},
rightOption: {
text: "Temel destek hizmetleriyle yetinin",
effects: {
morale: 5,
health: 5,
resources: 5
}
}
}, {
title: "Teknoloji Paylaşımı",
description: "Diğer sığınaklarla teknoloji paylaşımı öneriliyor. Bu işbirliği riskli ama faydalı olabilir.",
condition: function condition() {
return decisions.communicatedOutside;
},
leftOption: {
text: "Teknoloji paylaşım anlaşması yapın",
effects: {
hope: 30,
security: -20,
resources: 20
}
},
rightOption: {
text: "Teknolojik avantajınızı koruyun",
effects: {
security: 15,
hope: -15,
resources: -5
}
}
}, {
title: "Gelecek Nesil Eğitimi",
description: "Çocukları dünya yeniden inşa edildiğinde liderlik için mi yoksa mevcut sistemde yaşam için mi eğiteceksiniz?",
leftOption: {
text: "Gelecek dünya için liderlik eğitimi",
effects: {
hope: 30,
morale: 15,
resources: -15
}
},
rightOption: {
text: "Mevcut yaşam koşulları için pratik eğitim",
effects: {
security: 15,
resources: 10,
hope: -10
}
}
}, {
title: "Beslenme Araştırması",
description: "Besin değeri yüksek yeni gıdalar geliştirmek için araştırma yapılacak. Riskleri var ama beslenmeyi iyileştirebilir.",
leftOption: {
text: "Beslenme araştırmasına yatırım yapın",
effects: {
health: 25,
hope: 20,
resources: -20
}
},
rightOption: {
text: "Mevcut beslenme sistemini koruyun",
effects: {
health: -5,
resources: 10,
security: 5
}
}
}, {
title: "İç Ticaret Düzenlemesi",
description: "Sığınak içi ticaret sisteminde düzenleme gerekiyor. Serbest piyasa mı yoksa devlet kontrolü mü?",
leftOption: {
text: "Serbest piyasa sistemini benimseyin",
effects: {
morale: 20,
resources: 20,
security: -15
}
},
rightOption: {
text: "Devlet kontrolünde ticaret sistemi",
effects: {
security: 20,
morale: -15,
resources: -5
}
}
}, {
title: "Su Teknolojisi",
description: "İleri su arıtma teknolojisi kurulacak. Maliyetli ama su kalitesini önemli ölçüde artırır.",
leftOption: {
text: "İleri su teknolojisine yatırım yapın",
effects: {
health: 30,
morale: 15,
resources: -25
}
},
rightOption: {
text: "Mevcut su sistemini iyileştirin",
effects: {
health: 10,
resources: -5
}
}
}, {
title: "Çalışma Saatleri",
description: "Verimlilik için çalışma saatlerini artırmak mı yoksa çalışan refahını öncelemek mi?",
leftOption: {
text: "Çalışan refahını önceleyın",
effects: {
morale: 25,
health: 15,
resources: -15
}
},
rightOption: {
text: "Verimlilik için çalışma saatlerini artırın",
effects: {
resources: 20,
morale: -20,
health: -10
}
}
}, {
title: "Güvenlik Taraması",
description: "Tüm sığınak sakinlerine güvenlik taraması yapılacak. Bu özel yaşamı ihlal eder ama güvenliği artırır.",
leftOption: {
text: "Kapsamlı güvenlik taraması yapın",
effects: {
security: 25,
morale: -25,
hope: -10
}
},
rightOption: {
text: "Özel yaşama saygı gösterin",
effects: {
morale: 20,
hope: 15,
security: -15
}
}
}, {
title: "Robotik Teknoloji",
description: "İş gücünü desteklemek için robotik teknoloji geliştirilecek. İnsanları işsiz bırakma riski var.",
leftOption: {
text: "Robotik teknoloji geliştirin",
effects: {
resources: 25,
security: 15,
morale: -20
}
},
rightOption: {
text: "İnsan iş gücünü koruyun",
effects: {
morale: 20,
resources: -10,
security: -5
}
}
}, {
title: "Çevresel İzleme",
description: "Dış çevredeki değişiklikleri izlemek için sensör ağı kurulacak. Erken uyarı sağlar ama maliyetli.",
leftOption: {
text: "Çevresel izleme sistemi kurun",
effects: {
security: 20,
hope: 15,
resources: -20
}
},
rightOption: {
text: "Mevcut izleme yöntemleriyle devam edin",
effects: {
resources: 10,
security: -10,
hope: -5
}
}
}, {
title: "Sanal Gerçeklik",
description: "Moral yükseltmek için sanal gerçeklik sistemi kurulacak. Kaçış sağlar ama gerçeklikten kopma riski var.",
leftOption: {
text: "Sanal gerçeklik sistemi kurun",
effects: {
morale: 30,
hope: 20,
resources: -25,
health: -10
}
},
rightOption: {
text: "Gerçek aktivitelere odaklanın",
effects: {
health: 15,
morale: -10,
resources: 10
}
}
}, {
title: "Yasal Sistem",
description: "Sığınak için yasal sistem kurulacak. Katı hukuk mu yoksa esnek adalet sistemi mi?",
leftOption: {
text: "Esnek adalet sistemi kurun",
effects: {
morale: 20,
hope: 15,
security: -10
}
},
rightOption: {
text: "Katı hukuk sistemi uygulayın",
effects: {
security: 25,
morale: -15,
hope: -5
}
}
}, {
title: "Veri Koruma",
description: "Kişisel verilerin korunması için güvenlik sistemi kurulacak. Mahremiyet önemli ama kaynak gerektirir.",
leftOption: {
text: "Kapsamlı veri koruma sistemi",
effects: {
morale: 20,
security: 15,
resources: -15
}
},
rightOption: {
text: "Temel veri güvenliğiyle yetinin",
effects: {
resources: 5,
morale: -10,
security: 5
}
}
}, {
title: "Beslenme Çeşitliliği",
description: "Farklı kültürlerden yemek tarifleri korumak için program başlatılacak. Kültürel zenginlik ama kaynak gerektirir.",
leftOption: {
text: "Kültürel beslenme programı başlatın",
effects: {
morale: 25,
hope: 20,
resources: -15
}
},
rightOption: {
text: "Standart beslenme sistemiyle devam edin",
effects: {
resources: 10,
morale: -10,
hope: -5
}
}
}, {
title: "İletişim Ağı",
description: "Gelişmiş iç iletişim ağı kurulacak. Koordinasyonu artırır ama güvenlik açığı yaratabilir.",
leftOption: {
text: "Gelişmiş iletişim ağı kurun",
effects: {
security: 15,
morale: 15,
resources: -15
}
},
rightOption: {
text: "Güvenlik odaklı basit iletişim",
effects: {
security: 20,
morale: -10,
resources: -5
}
}
}, {
title: "Yaratıcılık Eğitimi",
description: "Problem çözme için yaratıcılık eğitimi verilecek. İnovasyon sağlar ama pratik becerileri ihmal edebilir.",
leftOption: {
text: "Yaratıcılık eğitimi programı",
effects: {
hope: 25,
morale: 20,
resources: -15,
security: -5
}
},
rightOption: {
text: "Pratik beceri eğitimine odaklanın",
effects: {
security: 15,
resources: 10,
hope: -10
}
}
}, {
title: "Fiziksel Kondisyon",
description: "Sığınakta yaşam fiziksel kondisyonu düşürüyor. Spor zorunluluğu mu yoksa gönüllü aktiviteler mi?",
leftOption: {
text: "Gönüllü spor aktiviteleri destekleyin",
effects: {
health: 15,
morale: 20,
resources: -10
}
},
rightOption: {
text: "Zorunlu fiziksel kondisyon programı",
effects: {
health: 25,
morale: -15,
security: 10
}
}
}, {
title: "Çatışma Çözümü",
description: "Kişiler arası çatışmalar artıyor. Mediyasyon programı mı yoksa katı disiplin mi?",
leftOption: {
text: "Mediyasyon ve uzlaşma programı",
effects: {
morale: 25,
hope: 20,
security: -10
}
},
rightOption: {
text: "Katı disiplin ve ceza sistemi",
effects: {
security: 25,
morale: -20,
hope: -10
}
}
}, {
title: "Teknoloji Eğitimi",
description: "Gelecek nesil için teknoloji eğitimi mi yoksa geleneksel beceriler mi öncelikli?",
leftOption: {
text: "Gelişmiş teknoloji eğitimi",
effects: {
hope: 30,
security: 15,
resources: -20
}
},
rightOption: {
text: "Geleneksel beceri eğitimi",
effects: {
morale: 15,
resources: 10,
hope: -10
}
}
}, {
title: "Gıda Depolama",
description: "Uzun vadeli gıda depolama sistemi kurulacak. Güvenlik sağlar ama başlangıç maliyeti yüksek.",
leftOption: {
text: "Gelişmiş depolama sistemi kurun",
effects: {
security: 25,
health: 15,
resources: -25
}
},
rightOption: {
text: "Mevcut depolama yöntemlerini iyileştirin",
effects: {
security: 10,
resources: -5
}
}
}, {
title: "Müzik ve Sanat",
description: "Müzik ve sanat eğitimi için kaynak ayrılacak. Morale katkı sağlar ama pratik değeri tartışmalı.",
leftOption: {
text: "Müzik ve sanat programları başlatın",
effects: {
morale: 30,
hope: 25,
resources: -20
}
},
rightOption: {
text: "Pratik becerilere odaklanın",
effects: {
resources: 15,
morale: -15,
hope: -10
}
}
}, {
title: "Hava Kalitesi",
description: "Hava kalitesini iyileştirmek için filtrasyon sistemi güncellenecek. Sağlığa faydalı ama enerji tüketir.",
leftOption: {
text: "Gelişmiş hava filtrasyon sistemi",
effects: {
health: 25,
morale: 15,
resources: -20
}
},
rightOption: {
text: "Mevcut sistemle yetinin",
effects: {
health: -5,
resources: 10
}
}
}, {
title: "Sosyal Aktiviteler",
description: "Toplumsal bağları güçlendirmek için sosyal aktivite programı başlatılacak. Kaynak gerektirir ama morali yükseltir.",
leftOption: {
text: "Kapsamlı sosyal aktivite programı",
effects: {
morale: 30,
hope: 20,
resources: -20
}
},
rightOption: {
text: "Sınırlı sosyal aktivitelerle yetinin",
effects: {
morale: 5,
resources: 5
}
}
}, {
title: "Bilgi Paylaşımı",
description: "Kritik bilgilerin toplumla paylaşım düzeyi belirlenecek. Şeffaflık güven yaratır ama paniklere yol açabilir.",
leftOption: {
text: "Tam şeffaflık politikası",
effects: {
morale: 20,
hope: 15,
security: -20
}
},
rightOption: {
text: "Sınırlı bilgi paylaşımı",
effects: {
security: 20,
morale: -15,
hope: -10
}
}
}, {
title: "Acil Durum Hazırlığı",
description: "Olası acil durumlar için hazırlık programı başlatılacak. Güvenlik sağlar ama kaynakları meşgul eder.",
leftOption: {
text: "Kapsamlı acil durum hazırlığı",
effects: {
security: 30,
hope: 15,
resources: -25
}
},
rightOption: {
text: "Temel hazırlık önlemleri",
effects: {
security: 10,
resources: -5
}
}
}, {
title: "Yaşlı Bakımı",
description: "Yaşlı nüfus için özel bakım sistemi kurulacak. İnsani ama kaynakları zorlar.",
leftOption: {
text: "Özel yaşlı bakım sistemi kurun",
effects: {
morale: 25,
health: 20,
hope: 20,
resources: -25
}
},
rightOption: {
text: "Aile bakımı sistemini destekleyin",
effects: {
morale: 10,
resources: -10
}
}
}, {
title: "Teknolojik İnovasyon",
description: "Yeni teknolojiler geliştirmek için inovasyon laboratuvarı kurulacak. Gelecek için önemli ama riskli.",
leftOption: {
text: "İnovasyon laboratuvarı kurun",
effects: {
hope: 30,
security: 15,
resources: -25
}
},
rightOption: {
text: "Mevcut teknolojileri iyileştirin",
effects: {
security: 10,
resources: 5,
hope: -5
}
}
}, {
title: "Eğlence Endüstrisi",
description: "Moral için eğlence ve gösteri programları düzenlenecek. Yaşam kalitesini artırır ama lüks sayılabilir.",
leftOption: {
text: "Eğlence programları organize edin",
effects: {
morale: 30,
hope: 25,
resources: -20
}
},
rightOption: {
text: "Temel ihtiyaçlara odaklanın",
effects: {
resources: 15,
morale: -15,
hope: -10
}
}
}, {
title: "Çevre Dostu Teknoloji",
description: "Sürdürülebilir teknolojiler geliştirilecek. Çevreye faydalı ama geliştirme maliyeti yüksek.",
leftOption: {
text: "Çevre dostu teknoloji geliştirin",
effects: {
health: 25,
hope: 25,
resources: -25
}
},
rightOption: {
text: "Var olan teknolojilerle devam edin",
effects: {
health: -5,
hope: -10,
resources: 10
}
}
}, {
title: "Toplumsal Hafıza",
description: "Savaş öncesi toplumsal değerleri korumak için arşiv oluşturulacak. Kültürel değer taşır ama alan gerektirir.",
leftOption: {
text: "Toplumsal hafıza arşivi oluşturun",
effects: {
hope: 25,
morale: 20,
resources: -15
}
},
rightOption: {
text: "Geleceğe odaklı yaklaşım benimseyin",
effects: {
hope: -10,
resources: 10,
security: 5
}
}
}, {
title: "Sağlık İzleme",
description: "Kişisel sağlık izleme sistemi kurulacak. Erken teşhis sağlar ama mahremiyet endişeleri var.",
leftOption: {
text: "Kapsamlı sağlık izleme sistemi",
effects: {
health: 30,
security: 15,
morale: -15
}
},
rightOption: {
text: "Gönüllü sağlık kontrolları",
effects: {
health: 15,
morale: 15,
resources: -10
}
}
}, {
title: "İş Bölümü",
description: "Çalışma sisteminde uzmanlaşma mı yoksa çok yetenekli işçiler mi tercih edilecek?",
leftOption: {
text: "Uzmanlaşmaya dayalı iş bölümü",
effects: {
resources: 25,
security: 15,
morale: -10
}
},
rightOption: {
text: "Çok yetenekli işçi sistemi",
effects: {
morale: 20,
hope: 15,
resources: -10
}
}
}, {
title: "Kriz Yönetimi",
description: "Gelecekteki krizler için yönetim protokolü oluşturulacak. Hazırlık sağlar ama belirsizlik yaratabilir.",
leftOption: {
text: "Detaylı kriz yönetim protokolü",
effects: {
security: 25,
hope: -10,
resources: -15
}
},
rightOption: {
text: "Esnek yaklaşımla kriz yönetimi",
effects: {
morale: 15,
hope: 10,
security: -10
}
}
}, {
title: "Tarih Eğitimi",
description: "Savaş öncesi tarih eğitimi verilecek. Geçmişten öğrenmek faydalı ama travmatik olabilir.",
leftOption: {
text: "Kapsamlı tarih eğitimi programı",
effects: {
hope: 20,
morale: -10,
resources: -15
}
},
rightOption: {
text: "Seçici tarih eğitimi",
effects: {
morale: 10,
hope: 5,
resources: -5
}
}
}, {
title: "Beslenme Güvenliği",
description: "Gıda üretim süreçlerinde güvenlik standartları yükseltilecek. Sağlığa faydalı ama üretimi yavaşlatır.",
leftOption: {
text: "Yüksek güvenlik standartları",
effects: {
health: 25,
morale: 15,
resources: -20
}
},
rightOption: {
text: "Dengeli güvenlik yaklaşımı",
effects: {
health: 10,
resources: -5
}
}
}, {
title: "Sosyal Sorumluluk",
description: "Bireysel mi yoksa toplumsal sorumluluk mu öne çıkarılacak? Bu seçim değer sistemini şekillendirir.",
leftOption: {
text: "Toplumsal sorumluluk vurgusunu artırın",
effects: {
morale: 20,
security: 15,
hope: 15,
resources: -10
}
},
rightOption: {
text: "Bireysel sorumluluk sistemini destekleyin",
effects: {
morale: -10,
resources: 15,
security: -5
}
}
}, {
title: "Gelecek Vizyonu",
description: "Sığınağın uzun vadeli vizyonu belirlenecek. Dünyayı yeniden inşa etmek mi yoksa burada kalıcı yaşam mı?",
leftOption: {
text: "Dünya yeniden inşa vizyonu",
effects: {
hope: 35,
morale: 20,
resources: -20,
security: -10
}
},
rightOption: {
text: "Kalıcı yeraltı yaşamı vizyonu",
effects: {
security: 20,
resources: 15,
hope: -20,
morale: -15
}
}
}];
var currentScenarioIndex = 0;
var scenarioCard;
var statBars = {};
var isDragging = false;
var dragStartX = 0;
var cardStartX = 0;
var isProcessingChoice = false;
var decisions = storage.decisions || {};
var scenarioOrder = [];
var usedScenarios = [];
// Play slow post-apocalyptic background music if sound is enabled
if (soundEnabled) {
LK.playMusic('Fg');
}
// First scenario will be loaded when introduction text is clicked;
// Initialize sound settings from storage
var soundEnabled = storage.soundEnabled !== undefined ? storage.soundEnabled : true;
LK.on('pause', function () {
// Add new game option to pause menu
LK.addPauseMenuOption('Yeni Oyun', function () {
// Reset all game state
stats = {
morale: 100,
resources: 100,
security: 100,
health: 100,
hope: 100
};
// Clear stored decisions
storage.decisions = {};
decisions = {};
// Reset counters
dayCounter = 1;
dayText.setText('Gün ' + dayCounter);
populationText.setText('Nüfus: 300');
// Reset scenario tracking
currentScenarioIndex = 0;
scenarioOrder = [];
usedScenarios = [];
isProcessingChoice = false;
isDragging = false;
// Update stats display
updateStats();
// Reset to introduction state
introContainer.alpha = 1;
scenarioCard.alpha = 0;
scenarioCard.y = 2732;
scenarioCard.x = 1024;
// Initialize new game
initializeScenarioOrder();
// Close pause menu
LK.closePauseMenu();
});
// Add sound toggle option to pause menu
LK.addPauseMenuOption(soundEnabled ? 'Sesi Kapat' : 'Sesi Aç', function () {
soundEnabled = !soundEnabled;
storage.soundEnabled = soundEnabled;
// Update music based on sound setting
if (soundEnabled) {
LK.playMusic('Fg');
} else {
LK.stopMusic();
}
// Close pause menu
LK.closePauseMenu();
});
});
// First scenario will be loaded when introduction text is clicked;
var background = game.attachAsset('bunkerBackground', {
anchorX: 0,
anchorY: 0
});
// Create stat bars with clean positioning
var statNames = ['Moral', 'Kaynaklar', 'Güvenlik', 'Sağlık', 'Umut'];
var statColors = [0x4CAF50, 0x2196F3, 0xFF9800, 0xF44336, 0x9C27B0];
var statKeys = ['morale', 'resources', 'security', 'health', 'hope'];
for (var i = 0; i < statNames.length; i++) {
var statBar = new StatBar(statNames[i], statColors[i]);
statBar.x = 1600;
statBar.y = 150 + i * 65;
statBars[statKeys[i]] = statBar;
game.addChild(statBar);
}
// Create scenario card
scenarioCard = new ScenarioCard();
scenarioCard.x = 1024;
scenarioCard.y = 1400;
game.addChild(scenarioCard);
// Create container for introduction text with background
var introContainer = new Container();
introContainer.x = 1024;
introContainer.y = 1366;
// Enhanced background with border effect matching OptionCard design
var introBackgroundBorder = introContainer.attachAsset('scenarioCard', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.05,
scaleY: 1.2
});
introBackgroundBorder.tint = 0x2a2a2a;
var introBackground = introContainer.attachAsset('scenarioCard', {
anchorX: 0.5,
anchorY: 0.5
});
introBackground.tint = 0x1a1a1a;
// Glow effect background matching OptionCard style
var introGlowEffect = introContainer.attachAsset('scenarioCard', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.02,
scaleY: 1.1
});
introGlowEffect.tint = 0x4a90e2;
introGlowEffect.alpha = 0.3;
// Introduction text
var introText = new Text2('Yıl 2087: Nükleer savaş sonrası dünyada yer altı sığınağında 300 kişilik topluluğun liderisiniz. Her kararınız toplumun geleceğini belirler. Moralinizi, kaynaklarınızı, güvenliğinizi, sağlığınızı ve umudunuzu dengede tutun.\n\nKarar vermek için sola veya sağa kaydırın.', {
size: 85,
fill: 0xFFFFFF,
wordWrap: true,
wordWrapWidth: 1600,
font: 'Georgia, serif',
stroke: 0x000000,
strokeThickness: 3
});
introText.anchor.set(0.5, 0.5);
introText.x = 0;
introText.y = 0;
introContainer.addChild(introText);
game.addChild(introContainer);
// Add click handler to introduction container
introContainer.down = function (x, y, obj) {
// Hide introduction container immediately
tween(introContainer, {
alpha: 0
}, {
duration: 500,
easing: tween.easeOut
});
// Show first scenario
scenarioCard.alpha = 1;
loadScenario();
};
// Day counter
var dayCounter = 1;
var dayText = new Text2('Gün ' + dayCounter, {
size: 78,
fill: 0x000000,
font: 'Georgia-Bold, serif',
stroke: 0x000000,
strokeThickness: 4
});
dayText.anchor.set(0.5, 0);
dayText.x = 1024;
dayText.y = 50;
game.addChild(dayText);
// Population counter
var populationText = new Text2('Nüfus: 300', {
size: 75,
fill: 0x000000,
font: 'Georgia-Bold, serif',
stroke: 0x000000,
strokeThickness: 4
});
populationText.anchor.set(1, 0);
populationText.x = 1900;
populationText.y = 50;
game.addChild(populationText);
function shuffleArray(array) {
var shuffled = array.slice();
for (var i = shuffled.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = shuffled[i];
shuffled[i] = shuffled[j];
shuffled[j] = temp;
}
return shuffled;
}
function initializeScenarioOrder() {
// Get available scenarios (base scenarios + conditional ones that meet requirements)
var availableScenarios = [];
for (var i = 0; i < scenarios.length; i++) {
if (!scenarios[i].condition || scenarios[i].condition()) {
availableScenarios.push(i);
}
}
// Randomize the order
scenarioOrder = shuffleArray(availableScenarios);
usedScenarios = [];
}
function updateStats() {
for (var key in statBars) {
statBars[key].setValue(stats[key]);
}
}
function loadScenario() {
// Check if we need to regenerate scenario order (add new conditional scenarios)
var availableScenarios = [];
for (var i = 0; i < scenarios.length; i++) {
if (!scenarios[i].condition || scenarios[i].condition()) {
availableScenarios.push(i);
}
}
// If no more scenarios in current order, regenerate
if (scenarioOrder.length === 0) {
scenarioOrder = shuffleArray(availableScenarios.filter(function (index) {
return usedScenarios.indexOf(index) === -1;
}));
// If all scenarios used, reset and reshuffle
if (scenarioOrder.length === 0) {
usedScenarios = [];
scenarioOrder = shuffleArray(availableScenarios);
}
}
currentScenarioIndex = scenarioOrder.shift();
usedScenarios.push(currentScenarioIndex);
var scenario = scenarios[currentScenarioIndex];
scenarioCard.setScenario(scenario);
// Reset card position
scenarioCard.x = 1024;
scenarioCard.alpha = 1;
// Introduction text hiding is now handled by click event
// Animate card appearance
tween(scenarioCard, {
y: 1400
}, {
duration: 500,
easing: tween.easeOut
});
}
function makeChoice(isLeft) {
if (isProcessingChoice) return;
isProcessingChoice = true;
var scenario = scenarios[currentScenarioIndex];
var choice = isLeft ? scenario.leftOption : scenario.rightOption;
// Track specific decisions for future scenarios
if (scenario.title.indexOf("Yiyecek") !== -1) {
decisions.foodRationing = (decisions.foodRationing || 0) + 1;
}
if (scenario.title.indexOf("Tıbbi") !== -1 && isLeft) {
decisions.savedChild = true;
}
if (scenario.title.indexOf("Güvenlik") !== -1 && isLeft) {
decisions.investigated = true;
}
if (scenario.title.indexOf("Enerji") !== -1 && !isLeft) {
decisions.prioritizedWater = (decisions.prioritizedWater || 0) + 1;
}
if (scenario.title.indexOf("Kaynak") !== -1 && isLeft) {
decisions.sentHunters = (decisions.sentHunters || 0) + 1;
}
// Save decisions to storage
storage.decisions = decisions;
// Apply effects
var hasPositiveEffect = false;
var hasNegativeEffect = false;
for (var key in choice.effects) {
var effect = choice.effects[key];
stats[key] += effect;
stats[key] = Math.max(0, Math.min(100, stats[key]));
if (effect > 0) hasPositiveEffect = true;
if (effect < 0) hasNegativeEffect = true;
}
// Play appropriate sound if enabled
if (soundEnabled) {
if (hasPositiveEffect && !hasNegativeEffect) {
LK.getSound('positive').play();
} else if (hasNegativeEffect && !hasPositiveEffect) {
LK.getSound('negative').play();
} else {
LK.getSound('decision').play();
}
}
// Animate card exit
var targetX = isLeft ? -1000 : 3000;
tween(scenarioCard, {
x: targetX,
alpha: 0
}, {
duration: 300,
easing: tween.easeIn,
onFinish: function onFinish() {
currentScenarioIndex++;
dayCounter++;
dayText.setText('Gün ' + dayCounter);
// Check for game over conditions
for (var key in stats) {
if (stats[key] <= 0) {
LK.showGameOver();
return;
}
}
// Check for victory condition
var allStatsGood = true;
for (var key in stats) {
if (stats[key] < 80) {
allStatsGood = false;
break;
}
}
if (allStatsGood && dayCounter >= 30) {
LK.showYouWin();
return;
}
updateStats();
// Population decline based on health
var populationTextValue = populationText.text || 'Nüfus: 300';
var currentPopulation = parseInt(populationTextValue.split(': ')[1]);
if (stats.health < 50) {
var populationLoss = 0;
if (stats.health < 30) {
populationLoss = 10; // 10 people die per day when health below 30
} else {
populationLoss = Math.floor((50 - stats.health) / 10); // Population decreases when health below 50
}
var newPopulation = Math.max(0, currentPopulation - populationLoss);
populationText.setText('Nüfus: ' + newPopulation);
// Game over if population reaches 0
if (newPopulation <= 0) {
LK.showGameOver();
return;
}
}
loadScenario();
isProcessingChoice = false;
}
});
}
game.down = function (x, y, obj) {
if (isProcessingChoice) return;
isDragging = true;
dragStartX = x;
cardStartX = scenarioCard.x;
};
game.move = function (x, y, obj) {
if (isDragging && !isProcessingChoice) {
var deltaX = x - dragStartX;
scenarioCard.x = cardStartX + deltaX;
// Visual feedback
var swipeThreshold = 300;
if (Math.abs(deltaX) > swipeThreshold) {
if (deltaX > 0) {
scenarioCard.getLeftOption().alpha = 0.5;
scenarioCard.getRightOption().alpha = 1;
} else {
scenarioCard.getLeftOption().alpha = 1;
scenarioCard.getRightOption().alpha = 0.5;
}
} else {
scenarioCard.getLeftOption().alpha = 1;
scenarioCard.getRightOption().alpha = 1;
}
}
};
game.up = function (x, y, obj) {
if (isDragging && !isProcessingChoice) {
isDragging = false;
var deltaX = x - dragStartX;
var swipeThreshold = 300;
if (Math.abs(deltaX) > swipeThreshold) {
if (deltaX > 0) {
makeChoice(false); // Right choice
} else {
makeChoice(true); // Left choice
}
} else {
// Snap back to center
tween(scenarioCard, {
x: 1024
}, {
duration: 200,
easing: tween.easeOut
});
}
// Reset option opacity
scenarioCard.getLeftOption().alpha = 1;
scenarioCard.getRightOption().alpha = 1;
}
};
// Initialize game
initializeScenarioOrder();
updateStats();
// Show introduction container at start
introContainer.alpha = 1;
// Hide scenario card initially
scenarioCard.alpha = 0;
scenarioCard.y = 2732; // Position off-screen
// First scenario will be loaded when introduction text is clicked; /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var OptionCard = Container.expand(function () {
var self = Container.call(this);
// Enhanced background with border effect matching StatBar design
var backgroundBorder = self.attachAsset('optionCard', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.05,
scaleY: 1.2
});
backgroundBorder.tint = 0x2a2a2a;
var background = self.attachAsset('optionCard', {
anchorX: 0.5,
anchorY: 0.5
});
background.tint = 0x1a1a1a;
// Glow effect background matching StatBar style
var glowEffect = self.attachAsset('optionCard', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.02,
scaleY: 1.1
});
glowEffect.tint = 0x4a90e2;
glowEffect.alpha = 0.3;
var optionText = new Text2('', {
size: 68,
fill: 0xFFFFFF,
wordWrap: true,
wordWrapWidth: 720,
font: 'Georgia, serif',
stroke: 0x000000,
strokeThickness: 4
});
optionText.anchor.set(0.5, 0.5);
optionText.x = 0;
optionText.y = -60;
self.addChild(optionText);
var effectsText = new Text2('', {
size: 52,
fill: 0xFFDD88,
wordWrap: true,
wordWrapWidth: 720,
font: 'Georgia, serif',
stroke: 0x000000,
strokeThickness: 3
});
effectsText.anchor.set(0.5, 0.5);
effectsText.x = 0;
effectsText.y = 90;
self.addChild(effectsText);
self.setOption = function (option) {
optionText.setText(option.text);
effectsText.setText(''); // Clear effects text
};
return self;
});
var ScenarioCard = Container.expand(function () {
var self = Container.call(this);
var background = self.attachAsset('scenarioCard', {
anchorX: 0.5,
anchorY: 0.5
});
// Enhanced background with border effect
background.tint = 0x2a2a2a;
var borderEffect = self.attachAsset('scenarioCard', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.02,
scaleY: 1.02
});
borderEffect.tint = 0x4a90e2;
borderEffect.alpha = 0.3;
self.addChildAt(borderEffect, 0);
var titleText = new Text2('', {
size: 91,
fill: 0xFFDD44,
font: 'Georgia, serif',
stroke: 0x000000,
strokeThickness: 4
});
titleText.anchor.set(0.5, 0);
titleText.x = 0;
titleText.y = -550;
self.addChild(titleText);
var descriptionText = new Text2('', {
size: 68,
fill: 0xEEEEEE,
wordWrap: true,
wordWrapWidth: 1600,
font: 'Georgia, serif',
stroke: 0x000000,
strokeThickness: 3
});
descriptionText.anchor.set(0.5, 0);
descriptionText.x = 0;
descriptionText.y = -420;
self.addChild(descriptionText);
var leftOption = self.addChild(new OptionCard());
leftOption.x = -400;
leftOption.y = 150;
var rightOption = self.addChild(new OptionCard());
rightOption.x = 400;
rightOption.y = 150;
var swipeLeft = self.attachAsset('swipeIndicator', {
anchorX: 0.5,
anchorY: 0.5
});
swipeLeft.x = -400;
swipeLeft.y = 400;
swipeLeft.alpha = 0.7;
swipeLeft.tint = 0xff6b6b;
var swipeRight = self.attachAsset('swipeIndicator', {
anchorX: 0.5,
anchorY: 0.5
});
swipeRight.x = 400;
swipeRight.y = 400;
swipeRight.alpha = 0.7;
swipeRight.tint = 0x51cf66;
self.setScenario = function (scenario) {
titleText.setText(scenario.title);
descriptionText.setText(scenario.description);
leftOption.setOption(scenario.leftOption);
rightOption.setOption(scenario.rightOption);
};
self.getLeftOption = function () {
return leftOption;
};
self.getRightOption = function () {
return rightOption;
};
return self;
});
var StatBar = Container.expand(function (statName, color) {
var self = Container.call(this);
// Main container background with rounded appearance
var mainBackground = self.attachAsset('statBar', {
anchorX: 0,
anchorY: 0,
scaleX: 1.0,
scaleY: 1.4
});
mainBackground.tint = 0x1a1a1a;
// Progress bar background (darker)
var progressBg = self.attachAsset('statBar', {
anchorX: 0,
anchorY: 0,
scaleX: 0.95,
scaleY: 1.1
});
progressBg.tint = 0x0a0a0a;
progressBg.x = 8;
progressBg.y = 6;
// Progress fill bar
var fill = self.attachAsset('statFill', {
anchorX: 0,
anchorY: 0
});
fill.tint = color;
fill.x = 8;
fill.y = 6;
fill.scaleY = 1.1;
// Subtle glow effect
var glowEffect = self.attachAsset('statBar', {
anchorX: 0,
anchorY: 0,
scaleX: 1.02,
scaleY: 1.45
});
glowEffect.tint = color;
glowEffect.alpha = 0.15;
// Clean label text
var label = new Text2(statName, {
size: 42,
fill: 0xFFFFFF,
font: 'Arial-Bold',
stroke: 0x000000,
strokeThickness: 2
});
label.anchor.set(0, 0.5);
label.x = 15;
label.y = 20;
self.addChild(label);
// Value text positioned on the right
var valueText = new Text2('100', {
size: 38,
fill: 0xFFFFFF,
font: 'Arial-Bold',
stroke: 0x000000,
strokeThickness: 2
});
valueText.anchor.set(1, 0.5);
valueText.x = 285;
valueText.y = 20;
self.addChild(valueText);
self.setValue = function (value) {
var fillPercent = Math.max(0, Math.min(1, value / 100));
fill.scaleX = fillPercent * 0.95;
valueText.setText(Math.round(value).toString());
// Clean color transitions based on value
if (value < 25) {
fill.tint = 0xff4444;
glowEffect.tint = 0xff4444;
glowEffect.alpha = 0.25;
valueText.fill = 0xff8888;
label.fill = 0xffaaaa;
} else if (value < 50) {
fill.tint = 0xff8800;
glowEffect.tint = 0xff8800;
glowEffect.alpha = 0.2;
valueText.fill = 0xffaa44;
label.fill = 0xffcc88;
} else if (value < 75) {
fill.tint = 0xffcc00;
glowEffect.tint = 0xffcc00;
glowEffect.alpha = 0.18;
valueText.fill = 0xffdd88;
label.fill = 0xffeeaa;
} else {
fill.tint = color;
glowEffect.tint = color;
glowEffect.alpha = 0.15;
valueText.fill = 0xFFFFFF;
label.fill = 0xFFFFFF;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a1a
});
/****
* Game Code
****/
var stats = {
morale: 100,
resources: 100,
security: 100,
health: 100,
hope: 100
};
var scenarios = [{
title: "Yiyecek Kıtlığı Krizi",
description: "Sığınağın yiyecek malzemeleri tehlikeli derecede azaldı. Bir avcı grubu sınırlı malzemelerle geri döndü, ancak herkes için yeterli değil.",
leftOption: {
text: "Yiyeceği 300 kişi arasında eşit olarak paylaştır",
effects: {
morale: -10,
resources: -5,
health: -15,
hope: 5
}
},
rightOption: {
text: "Temel işçiler için yiyeceği öncelendir",
effects: {
morale: -20,
resources: 10,
security: 5,
health: -5
}
}
}, {
title: "Tıbbi Malzeme İkilemi",
description: "Bir çocuk kritik durumda ve ilaç gerekiyor. Aynı ilaç, hafif rahatsızlıkları olan birkaç yetişkini tedavi etmek için kullanılabilir.",
leftOption: {
text: "Tüm mevcut ilaçla çocuğu kurtar",
effects: {
morale: 15,
health: -10,
hope: 10
}
},
rightOption: {
text: "Bunun yerine birçok yetişkini tedavi et",
effects: {
morale: -15,
health: 20,
hope: -10
}
}
}, {
title: "Güvenlik İhlali",
description: "Sığınak girişi yakınında bilinmeyen figürler görüldü. Güvenlik ekibiniz araştırma için izin istiyor, ancak bu açığa çıkma riskini taşıyor.",
leftOption: {
text: "Güvenlik ekibini araştırmaya gönder",
effects: {
security: 15,
resources: -10,
morale: -5
}
},
rightOption: {
text: "Gizli kal ve bekle",
effects: {
security: -10,
morale: -10,
hope: -5
}
}
}, {
title: "Enerji Tasarrufu",
description: "Sığınağın elektrik şebekesi arızalanıyor. Yaşam alanlarını ısıtmak ile su filtreleme sistemini sürdürmek arasında seçim yapmalısın.",
leftOption: {
text: "Konfor için ısıtmaya öncelik ver",
effects: {
morale: 10,
health: -15,
resources: -10
}
},
rightOption: {
text: "Su filtreleme sistemini sürdür",
effects: {
morale: -15,
health: 15,
resources: 5
}
}
}, {
title: "Kaynak Keşfi",
description: "İzciler terk edilmiş bir malzeme deposu buldular, ancak onu geri almak en iyi avcılarının hayatını riske atmayı gerektiriyor.",
leftOption: {
text: "Avcı ekibini gönder",
effects: {
resources: 25,
security: -10,
morale: -5
}
},
rightOption: {
text: "Güvenli oyna ve yerinde kal",
effects: {
resources: -5,
security: 5,
morale: 5
}
}
}, {
title: "Sığınak İsyanı",
description: "Sürekli kıt kaynak dağıtımından dolayı halk ayaklandı. Güvenlik güçlerin müdahale etmesini istiyorlar.",
condition: function condition() {
return decisions.foodRationing >= 2;
},
leftOption: {
text: "Güç kullanarak isyanı bastır",
effects: {
morale: -25,
security: 15,
hope: -20
}
},
rightOption: {
text: "İsyancılarla müzakere et",
effects: {
morale: 10,
security: -10,
resources: -15
}
}
}, {
title: "Doktor Krizi",
description: "Ana doktorunuz hasta oldu. Daha önce çocuğu kurtarmayı seçtiğiniz için ailesi size güveniyor.",
condition: function condition() {
return decisions.savedChild;
},
leftOption: {
text: "Tüm tıbbi kaynakları doktora kullan",
effects: {
morale: 20,
health: -20,
hope: 15
}
},
rightOption: {
text: "Doktoru iyileştirmek için sadece gerekli kaynakları kullan",
effects: {
morale: 5,
health: 10,
hope: -5
}
}
}, {
title: "Güvenlik Açığı Sonuçları",
description: "Daha önce dışarıdaki figürleri araştırdığınız için şimdi onlar sığınağınızı buluyor.",
condition: function condition() {
return decisions.investigated;
},
leftOption: {
text: "Saldırıya hazırlan ve savaş",
effects: {
morale: -15,
security: -20,
health: -25,
hope: -10
}
},
rightOption: {
text: "Barışçıl temas kurmaya çalış",
effects: {
morale: 15,
security: -5,
resources: 20,
hope: 25
}
}
}, {
title: "Enerji Yeniliği",
description: "Su filtreleme sistemine yaptığınız yatırım yeni bir enerji kaynağı keşfetmenizi sağladı.",
condition: function condition() {
return decisions.prioritizedWater >= 2;
},
leftOption: {
text: "Yeni teknolojiyi tüm sığınakta uygula",
effects: {
morale: 25,
resources: 30,
health: 20,
hope: 30
}
},
rightOption: {
text: "Teknolojiyi yavaşça ve güvenli şekilde test et",
effects: {
morale: 5,
resources: 15,
health: 10,
hope: 10
}
}
}, {
title: "Avcı Kayıpları",
description: "Sürekli riskli görevlere gönderdiğiniz avcılardan üçü geri dönmedi. Aileleri açıklama bekliyor.",
condition: function condition() {
return decisions.sentHunters >= 2;
},
leftOption: {
text: "Gerçeği söyle ve sorumluluğu üstlen",
effects: {
morale: -20,
security: -15,
hope: 5
}
},
rightOption: {
text: "Onları kahramanlar olarak an ve gerçeği gizle",
effects: {
morale: 10,
security: 5,
hope: -15
}
}
}, {
title: "Radyasyon Sızıntısı",
description: "Sığınağın doğu sektöründe radyasyon seviyesi yükseliyor. Bu bölgeyi kapatmak 50 kişiyi tahliye etmeyi gerektiriyor.",
leftOption: {
text: "Bölgeyi derhal kapatın ve insanları tahliye edin",
effects: {
health: 15,
morale: -10,
resources: -15
}
},
rightOption: {
text: "Radyasyon kalkanı inşa etmeyi deneyin",
effects: {
health: -20,
resources: -25,
security: 10
}
}
}, {
title: "Su Kirliği",
description: "Ana su kaynağında bakteriyel kontaminasyon tespit edildi. Su arıtma sistemi onarım gerektiriyor.",
leftOption: {
text: "Tüm kaynakları su arıtımına odaklayın",
effects: {
health: 20,
resources: -20,
morale: 5
}
},
rightOption: {
text: "Yedek su kaynaklarına geçin",
effects: {
health: -5,
resources: 15,
security: -10
}
}
}, {
title: "Yaşlı Nüfus Sorunu",
description: "Sığınaktaki yaşlı nüfus artan sağlık sorunları yaşıyor ve daha fazla kaynak gerektiriyor.",
leftOption: {
text: "Yaşlılara öncelikli bakım sağlayın",
effects: {
morale: 15,
health: -10,
resources: -15,
hope: 10
}
},
rightOption: {
text: "Kaynakları genç nüfusa odaklayın",
effects: {
morale: -25,
health: 10,
resources: 10,
hope: -15
}
}
}, {
title: "Eğitim Sistemi",
description: "Çocuklar için eğitim sistemini kurma zamanı geldi. Pratik beceriler mi yoksa akademik bilgi mi öncelikli olsun?",
leftOption: {
text: "Praktik hayatta kalma becerilerine odaklanın",
effects: {
security: 15,
resources: 10,
morale: -5,
hope: 5
}
},
rightOption: {
text: "Akademik ve sanatsal eğitime yatırım yapın",
effects: {
morale: 20,
hope: 15,
resources: -10,
security: -5
}
}
}, {
title: "Gıda Üretimi İnovasyonu",
description: "Bilim ekibiniz hidroponik tarım sistemi geliştirdi. Bu yeni sistemi test etmek riskli ama ödüllendirici olabilir.",
leftOption: {
text: "Yeni sistemi büyük çapta uygulayın",
effects: {
resources: 25,
health: 10,
security: -15
}
},
rightOption: {
text: "Küçük ölçekte test edin",
effects: {
resources: 10,
health: 5,
morale: 5
}
}
}, {
title: "Enerji Krizi",
description: "Ana güç jeneratörü arızalandı. Yedek sistemler sadece birkaç gün daha dayanabilir.",
leftOption: {
text: "Tüm teknisyenleri onarıma odaklayın",
effects: {
security: 20,
resources: -15,
morale: -10
}
},
rightOption: {
text: "Enerji tasarrufu moduna geçin",
effects: {
morale: -20,
health: -10,
resources: 5,
hope: -5
}
}
}, {
title: "Psikolojik Destek",
description: "Sığınaktaki insanlar depresyon ve anksiyete yaşıyor. Psikolojik destek programı başlatmalısınız.",
leftOption: {
text: "Profesyonel terapi seansları düzenleyin",
effects: {
morale: 25,
hope: 20,
resources: -10
}
},
rightOption: {
text: "Topluluk destekli aktiviteler organize edin",
effects: {
morale: 15,
hope: 10,
security: 5
}
}
}, {
title: "Dış Dünya İletişimi",
description: "Radyo sinyali aldınız. Başka hayatta kalanlar var ama konumunuzu açığa çıkarma riskiyle karşı karşıyasınız.",
leftOption: {
text: "İletişim kurun ve koordinasyon yapın",
effects: {
hope: 30,
morale: 20,
security: -20
}
},
rightOption: {
text: "Sessiz kalın ve pozisyonunuzu koruyun",
effects: {
security: 15,
hope: -10,
morale: -5
}
}
}, {
title: "Atık Yönetimi",
description: "Sığınaktaki atık miktarı tehlikeli seviyelere ulaştı. Atık imha sistemi çözüm gerektiriyor.",
leftOption: {
text: "Yeni arıtma sistemi kurun",
effects: {
health: 20,
resources: -25,
security: 10
}
},
rightOption: {
text: "Atıkları dış alanlara boşaltın",
effects: {
health: -15,
security: -20,
resources: 10
}
}
}, {
title: "Teknoloji Koruma",
description: "Değerli teknolojik ekipmanlarınız eskiyor. Yedek parça bulmak veya yeniden inşa etmek gerekiyor.",
leftOption: {
text: "Mevcut teknolojileri korumaya odaklanın",
effects: {
security: 10,
resources: -15,
health: 5
}
},
rightOption: {
text: "Yeni teknolojiler geliştirmeye yatırım yapın",
effects: {
hope: 20,
resources: -20,
morale: 10
}
}
}, {
title: "Sosyal Hiyerarşi",
description: "Sığınakta sosyal sınıflar oluşmaya başladı. Eşitlikçi mi yoksa meritkratik mi bir sistem kuracaksınız?",
leftOption: {
text: "Katı eşitlik ilkesi uygulayın",
effects: {
morale: 15,
security: -10,
resources: -5,
hope: 10
}
},
rightOption: {
text: "Liyakat temelli hiyerarşi kurun",
effects: {
morale: -15,
security: 15,
resources: 15,
hope: -5
}
}
}, {
title: "Genetik Çeşitlilik",
description: "Uzun vadeli hayatta kalma için genetik çeşitliliği korumak gerekiyor. Üreme politikası belirlemelisiniz.",
leftOption: {
text: "Genetik çeşitliliği maksimize edin",
effects: {
hope: 25,
morale: -10,
health: 15
}
},
rightOption: {
text: "Doğal seçime bırakın",
effects: {
morale: 10,
hope: -5,
health: -10
}
}
}, {
title: "Sanat ve Kültür",
description: "İnsanlar maneviyatlarını yükseltmek için sanatsal aktiviteler talep ediyor. Kaynakları buna ayırmaya değer mi?",
leftOption: {
text: "Sanat programlarını destekleyin",
effects: {
morale: 25,
hope: 20,
resources: -15
}
},
rightOption: {
text: "Kaynaklarınızı pratik ihtiyaçlara odaklayın",
effects: {
morale: -10,
hope: -10,
resources: 15,
security: 5
}
}
}, {
title: "Çocuk İşçiliği",
description: "İş gücü ihtiyacı artıyor. Çocukları hafif işlerde çalıştırmak mı yoksa eğitimlerine odaklanmak mı?",
leftOption: {
text: "Çocukları hafif işlerde görevlendirin",
effects: {
resources: 15,
morale: -20,
hope: -15,
security: 10
}
},
rightOption: {
text: "Çocukların eğitimine öncelik verin",
effects: {
hope: 25,
morale: 15,
resources: -10
}
}
}, {
title: "Hastalık Karantinası",
description: "Bulaşıcı bir hastalık yayılıyor. Hastaları izole etmek mi yoksa toplumsal dayanışmayı sürdürmek mi?",
leftOption: {
text: "Katı karantina uygulayın",
effects: {
health: 25,
morale: -20,
security: 10,
hope: -10
}
},
rightOption: {
text: "Toplumsal bakımı sürdürün",
effects: {
health: -25,
morale: 20,
hope: 15
}
}
}, {
title: "Silah Üretimi",
description: "Güvenlik için silah üretimi gerekli mi? Bu kaynakları başka alanlarda kullanabilirsiniz.",
leftOption: {
text: "Silah üretimini artırın",
effects: {
security: 25,
resources: -20,
morale: -10
}
},
rightOption: {
text: "Barışçıl çözümlere odaklanın",
effects: {
morale: 15,
hope: 20,
security: -15
}
}
}, {
title: "Dış Keşif",
description: "Yüzeydeki radyasyon seviyesinin azaldığı raporlanıyor. Keşif ekibi göndermek riskli ama umut verici.",
leftOption: {
text: "Keşif misyonu başlatın",
effects: {
hope: 30,
security: -15,
resources: -10
}
},
rightOption: {
text: "Daha güvenli koşullar için bekleyin",
effects: {
morale: -10,
hope: -5,
security: 10
}
}
}, {
title: "Ticaret Sistemi",
description: "Sığınak içinde takas sistemi gelişiyor. Bu sistemi desteklemek mi yoksa merkezi dağıtımı sürdürmek mi?",
leftOption: {
text: "Serbest ticaret sistemini destekleyin",
effects: {
morale: 20,
resources: 15,
security: -10
}
},
rightOption: {
text: "Merkezi dağıtım sistemini koruyun",
effects: {
morale: -10,
security: 15,
resources: -5,
hope: 5
}
}
}, {
title: "Yaşlı Bilgi",
description: "Yaşlılar eskiden dünyadan değerli bilgiler saklıyor. Bu bilgileri kaydetmek için zaman ayırmalı mısınız?",
leftOption: {
text: "Bilgi arşivleme projesini başlatın",
effects: {
hope: 25,
morale: 15,
resources: -10
}
},
rightOption: {
text: "Mevcut acil ihtiyaçlara odaklanın",
effects: {
resources: 10,
hope: -10,
morale: -5
}
}
}, {
title: "Enerji Paylaşımı",
description: "Komşu sığınak enerji konusunda yardım istiyor. Onlara yardım etmek kendi kaynaklarınızı riske atar.",
condition: function condition() {
return decisions.communicatedOutside;
},
leftOption: {
text: "Enerji paylaşın ve ittifak kurun",
effects: {
hope: 20,
resources: -15,
security: 10,
morale: 15
}
},
rightOption: {
text: "Kendi kaynaklarınızı koruyun",
effects: {
resources: 10,
security: 5,
hope: -15,
morale: -10
}
}
}, {
title: "Mutasyon Sorunu",
description: "Bazı sığınak sakinlerinde genetik mutasyonlar görülüyor. Bu durumu nasıl karşılayacaksınız?",
leftOption: {
text: "Mutasyonları tedavi etmeye çalışın",
effects: {
health: -15,
resources: -20,
morale: 15,
hope: 10
}
},
rightOption: {
text: "Mutasyonları doğal evrim olarak kabul edin",
effects: {
morale: -10,
health: 10,
hope: 20
}
}
}, {
title: "Liderlik Krizi",
description: "Bazı gruplar sizin liderliğinizi sorguluyor. Otoritenizi nasıl güçlendireceksiniz?",
leftOption: {
text: "Demokratik oylamalarla meşruiyeti artırın",
effects: {
morale: 25,
security: -15,
hope: 15
}
},
rightOption: {
text: "Güçlü liderlik ile kararlılık gösterin",
effects: {
security: 20,
morale: -15,
resources: 10
}
}
}, {
title: "Gizli Araştırma",
description: "Bilim ekibiniz etik olmayan deneyler yapmak istiyor. Bu araştırmalar hayatta kalmayı sağlayabilir.",
leftOption: {
text: "Araştırmalara izin verin",
effects: {
health: 20,
security: 15,
morale: -25,
hope: -15
}
},
rightOption: {
text: "Etik sınırları koruyun",
effects: {
morale: 20,
hope: 15,
health: -10,
security: -5
}
}
}, {
title: "Beslenme Çeşitliliği",
description: "Monoton beslenme halkın sağlığını etkiliyor. Gıda çeşitliliğini artırmak için kaynak ayırmalı mısınız?",
leftOption: {
text: "Gıda çeşitliliği programı başlatın",
effects: {
health: 20,
morale: 15,
resources: -20
}
},
rightOption: {
text: "Temel besinlerle yetinin",
effects: {
health: -10,
morale: -10,
resources: 15
}
}
}, {
title: "Bilgi Güvenliği",
description: "Kritik bilgilere erişimi sınırlamak mı yoksa şeffaflığı sürdürmek mi gerekiyor?",
leftOption: {
text: "Bilgiyi sınırlayın ve güvenliği artırın",
effects: {
security: 20,
morale: -15,
hope: -10
}
},
rightOption: {
text: "Şeffaflığı koruyun",
effects: {
morale: 20,
hope: 15,
security: -15
}
}
}, {
title: "Doğum Kontrolü",
description: "Nüfus artışı kaynakları zorluyor. Doğum kontrolü politikası uygulamalı mısınız?",
leftOption: {
text: "Doğum kontrolü uygulayın",
effects: {
resources: 15,
morale: -20,
hope: -10,
health: 5
}
},
rightOption: {
text: "Doğal nüfus artışına izin verin",
effects: {
hope: 20,
morale: 15,
resources: -20,
health: -10
}
}
}, {
title: "Teknoloji Bağımlılığı",
description: "İnsanlar teknolojiye aşırı bağımlı hale geldi. Bu bağımlılığı azaltmak için adım atmalı mısınız?",
leftOption: {
text: "Teknoloji kullanımını sınırlayın",
effects: {
health: 15,
morale: -15,
security: -10,
hope: 5
}
},
rightOption: {
text: "Teknolojik gelişimi destekleyin",
effects: {
morale: 15,
security: 15,
health: -10,
hope: 10
}
}
}, {
title: "Çevre Koruma",
description: "Sığınağın çevresel sistemi bozuluyor. Ekolojik dengeyi korumak için yatırım gerekiyor.",
leftOption: {
text: "Çevre koruma programı başlatın",
effects: {
health: 25,
hope: 20,
resources: -25
}
},
rightOption: {
text: "Acil ihtiyaçlara odaklanın",
effects: {
health: -15,
hope: -10,
resources: 15
}
}
}, {
title: "Spor ve Rekreasyon",
description: "Fiziksel aktivite eksikliği sağlık sorunlarına yol açıyor. Spor tesisleri kurmalı mısınız?",
leftOption: {
text: "Spor tesisleri inşa edin",
effects: {
health: 20,
morale: 20,
resources: -15
}
},
rightOption: {
text: "Alanı başka amaçlarla kullanın",
effects: {
health: -10,
morale: -10,
resources: 10,
security: 5
}
}
}, {
title: "Dil ve İletişim",
description: "Farklı etnik gruplar kendi dillerini konuşuyor. Ortak dil politikası gerekli mi?",
leftOption: {
text: "Ortak dil zorunluluğu getirin",
effects: {
security: 15,
morale: -20,
hope: -5
}
},
rightOption: {
text: "Çok dilli sistemi destekleyin",
effects: {
morale: 20,
hope: 15,
security: -10
}
}
}, {
title: "Karar Alma Süreci",
description: "Önemli kararları nasıl alacağınız sorgulanıyor. Danışma kurulu mu yoksa tek adam kararı mı?",
leftOption: {
text: "Danışma kurulu oluşturun",
effects: {
morale: 25,
hope: 15,
security: -15
}
},
rightOption: {
text: "Karar alma yetkisini koruyun",
effects: {
security: 20,
morale: -15,
resources: 10
}
}
}, {
title: "Bellek Kayıtları",
description: "Savaş öncesi yaşamdan kayıtlar bulundu. Bu anıları korumak mı yoksa geçmişi unutturmak mı?",
leftOption: {
text: "Geçmiş kayıtlarını koruyun",
effects: {
hope: 25,
morale: -10,
resources: -10
}
},
rightOption: {
text: "Geleceğe odaklanın",
effects: {
hope: -10,
morale: 15,
resources: 10
}
}
}, {
title: "İç Güvenlik",
description: "Sığınak içinde küçük suçlar artıyor. Güvenlik güçlerini artırmak mı yoksa sosyal programlar mı?",
leftOption: {
text: "Güvenlik güçlerini artırın",
effects: {
security: 25,
morale: -15,
hope: -10
}
},
rightOption: {
text: "Sosyal rehabilitasyon programları başlatın",
effects: {
morale: 20,
hope: 15,
security: -15
}
}
}, {
title: "Enerji Verimliliği",
description: "Yeni enerji tasarruf teknolojileri mevcut. Eski sistemleri değiştirmek maliyetli ama verimli.",
leftOption: {
text: "Yeni teknolojilere geçin",
effects: {
resources: -25,
health: 15,
security: 20,
hope: 10
}
},
rightOption: {
text: "Mevcut sistemleri optimize edin",
effects: {
resources: 5,
health: 5,
security: 5
}
}
}, {
title: "Sosyal Medya",
description: "İç iletişim ağı kuruldu ama dedikodular ve yanlış bilgiler yayılıyor. Bu sistemi düzenlemeli misiniz?",
leftOption: {
text: "İletişimi sıkı şekilde düzenleyin",
effects: {
security: 15,
morale: -20,
hope: -10
}
},
rightOption: {
text: "Serbest iletişime izin verin",
effects: {
morale: 20,
hope: 15,
security: -20
}
}
}, {
title: "Araştırma Bütçesi",
description: "Bilimsel araştırma için bütçe ayırmak gelecek için önemli ama mevcut ihtiyaçları zorluyor.",
leftOption: {
text: "Araştırma bütçesini artırın",
effects: {
hope: 25,
resources: -20,
health: 10
}
},
rightOption: {
text: "Mevcut ihtiyaçlara odaklanın",
effects: {
resources: 15,
hope: -15,
health: 5
}
}
}, {
title: "Gıda Güvenliği",
description: "Bazı gıda kaynaklarında bozulma tespit edildi. Bu gıdaları imha etmek mi yoksa risk alıp kullanmak mı?",
leftOption: {
text: "Şüpheli gıdaları imha edin",
effects: {
health: 20,
resources: -25,
morale: 10
}
},
rightOption: {
text: "Gıdaları dikkatlice işleyip kullanın",
effects: {
health: -20,
resources: 15,
morale: -10
}
}
}, {
title: "Yetenek Geliştirme",
description: "İnsanların yeteneklerini geliştirmek için eğitim programları mı yoksa pratik deneyim mi?",
leftOption: {
text: "Teorik eğitim programları",
effects: {
hope: 20,
morale: 15,
resources: -15,
security: -5
}
},
rightOption: {
text: "Uygulamalı öğrenme sistemi",
effects: {
security: 15,
resources: 10,
morale: -5
}
}
}, {
title: "Kültürel Etkinlikler",
description: "Festivaller ve kutlamalar moral için önemli ama kaynak tüketiyor. Bu etkinlikleri desteklemeli misiniz?",
leftOption: {
text: "Kültürel etkinlikleri destekleyin",
effects: {
morale: 30,
hope: 25,
resources: -20
}
},
rightOption: {
text: "Kaynaklarınızı koruyun",
effects: {
morale: -15,
hope: -10,
resources: 15
}
}
}, {
title: "İnovasyon Teşviki",
description: "Yaratıcı çözümler için ödül sistemi mi yoksa zorunlu inovasyon programları mı daha etkili?",
leftOption: {
text: "Ödül tabanlı teşvik sistemi",
effects: {
morale: 20,
hope: 20,
resources: -15
}
},
rightOption: {
text: "Zorunlu inovasyon programları",
effects: {
security: 15,
resources: 10,
morale: -15
}
}
}, {
title: "Kaynak Dağıtımı",
description: "Kıt kaynakları yaşa, yeteneğe, ya da ihtiyaca göre mi dağıtacaksınız?",
leftOption: {
text: "İhtiyaç temelli dağıtım",
effects: {
morale: 20,
health: 15,
resources: -10
}
},
rightOption: {
text: "Yetenek temelli dağıtım",
effects: {
morale: -15,
security: 15,
resources: 15
}
}
}, {
title: "Psikolojik Savaş",
description: "Dış gruplardan psikolojik baskı geliyor. Bu tehditlere nasıl yanıt vereceksiniz?",
condition: function condition() {
return decisions.communicatedOutside;
},
leftOption: {
text: "Psikolojik savunma programı başlatın",
effects: {
morale: 15,
security: 20,
resources: -15
}
},
rightOption: {
text: "Tehditleri görmezden gelin",
effects: {
morale: -20,
security: -15,
resources: 5
}
}
}, {
title: "Teknolojik Bağımsızlık",
description: "Dışarıya bağımlılığı azaltmak için kendi teknolojinizi mi geliştirirsiniz?",
leftOption: {
text: "Teknolojik bağımsızlık için yatırım yapın",
effects: {
hope: 25,
security: 20,
resources: -30
}
},
rightOption: {
text: "Mevcut teknolojilerle yetinin",
effects: {
resources: 10,
hope: -10,
security: -5
}
}
}, {
title: "Çocuk Bakımı",
description: "Çocuk bakımını ailelere mi bırakacaksınız yoksa toplumsal sistem mi kuracaksınız?",
leftOption: {
text: "Toplumsal çocuk bakım sistemi",
effects: {
morale: 15,
health: 20,
resources: -20,
hope: 15
}
},
rightOption: {
text: "Aile tabanlı bakım sistemi",
effects: {
morale: 10,
resources: 10,
security: -5
}
}
}, {
title: "Enerji Depolama",
description: "Fazla enerji depolamak için yeni sistem kurulacak. Bu yatırım gelecek için kritik mi?",
leftOption: {
text: "Enerji depolama sistemine yatırım yapın",
effects: {
security: 25,
resources: -25,
hope: 20
}
},
rightOption: {
text: "Mevcut sistemlerle devam edin",
effects: {
resources: 10,
security: -10,
hope: -5
}
}
}, {
title: "Sosyal Adalet",
description: "Bazı gruplar ayrımcılık yaşadığını iddia ediyor. Bu durumu nasıl ele alacaksınız?",
leftOption: {
text: "Eşitlik programları başlatın",
effects: {
morale: 25,
hope: 20,
security: -15
}
},
rightOption: {
text: "Mevcut sistemi koruyun",
effects: {
security: 15,
morale: -20,
hope: -15
}
}
}, {
title: "Bilimsel Etik",
description: "Tartışmalı bilimsel deneyler öneriliyor. Bu araştırmalar ileriye dönük çözümler sağlayabilir.",
leftOption: {
text: "Etik komite kurarak deneyleri denetleyin",
effects: {
hope: 20,
morale: 15,
resources: -15
}
},
rightOption: {
text: "Tüm deneyleri yasaklayın",
effects: {
morale: 10,
hope: -20,
resources: 5
}
}
}, {
title: "İklim Kontrolü",
description: "Sığınağın iç iklimini kontrol etmek için gelişmiş sistem kurulacak. Maliyeti yüksek ama konfor sağlar.",
leftOption: {
text: "Gelişmiş iklim sistemi kurun",
effects: {
health: 25,
morale: 20,
resources: -30
}
},
rightOption: {
text: "Temel iklim kontrolüyle yetinin",
effects: {
health: -5,
morale: -10,
resources: 15
}
}
}, {
title: "Kaynak Geri Dönüşümü",
description: "Atık malzemeleri geri dönüştürmek için kapsamlı sistem gerekiyor. Bu yatırıma değer mi?",
leftOption: {
text: "Kapsamlı geri dönüşüm sistemi kurun",
effects: {
health: 20,
resources: 15,
security: 10,
hope: 15
}
},
rightOption: {
text: "Basit geri dönüşümle yetinin",
effects: {
health: 5,
resources: 5,
security: -5
}
}
}, {
title: "Uzun Vadeli Planlama",
description: "50 yıllık gelişim planı hazırlanacak. Bu planlama sürecine kimler dahil edilmeli?",
leftOption: {
text: "Tüm toplumu planlama sürecine dahil edin",
effects: {
morale: 25,
hope: 30,
security: -15,
resources: -10
}
},
rightOption: {
text: "Uzman ekiple planlama yapın",
effects: {
hope: 15,
security: 15,
morale: -10
}
}
}, {
title: "Kültürel Miras",
description: "Savaş öncesi kültürel eserleri korumak için özel alan mı ayrılacak yoksa pratik kullanım mı öncelenecek?",
leftOption: {
text: "Kültürel miras alanı oluşturun",
effects: {
hope: 25,
morale: 20,
resources: -15
}
},
rightOption: {
text: "Alanı pratik ihtiyaçlar için kullanın",
effects: {
resources: 15,
hope: -15,
morale: -10
}
}
}, {
title: "Zihinsel Sağlık",
description: "PTSD ve travma vakalarının artması nedeniyle özel tedavi programı gerekiyor.",
leftOption: {
text: "Kapsamlı zihinsel sağlık programı başlatın",
effects: {
morale: 25,
health: 20,
hope: 25,
resources: -20
}
},
rightOption: {
text: "Temel destek hizmetleriyle yetinin",
effects: {
morale: 5,
health: 5,
resources: 5
}
}
}, {
title: "Teknoloji Paylaşımı",
description: "Diğer sığınaklarla teknoloji paylaşımı öneriliyor. Bu işbirliği riskli ama faydalı olabilir.",
condition: function condition() {
return decisions.communicatedOutside;
},
leftOption: {
text: "Teknoloji paylaşım anlaşması yapın",
effects: {
hope: 30,
security: -20,
resources: 20
}
},
rightOption: {
text: "Teknolojik avantajınızı koruyun",
effects: {
security: 15,
hope: -15,
resources: -5
}
}
}, {
title: "Gelecek Nesil Eğitimi",
description: "Çocukları dünya yeniden inşa edildiğinde liderlik için mi yoksa mevcut sistemde yaşam için mi eğiteceksiniz?",
leftOption: {
text: "Gelecek dünya için liderlik eğitimi",
effects: {
hope: 30,
morale: 15,
resources: -15
}
},
rightOption: {
text: "Mevcut yaşam koşulları için pratik eğitim",
effects: {
security: 15,
resources: 10,
hope: -10
}
}
}, {
title: "Beslenme Araştırması",
description: "Besin değeri yüksek yeni gıdalar geliştirmek için araştırma yapılacak. Riskleri var ama beslenmeyi iyileştirebilir.",
leftOption: {
text: "Beslenme araştırmasına yatırım yapın",
effects: {
health: 25,
hope: 20,
resources: -20
}
},
rightOption: {
text: "Mevcut beslenme sistemini koruyun",
effects: {
health: -5,
resources: 10,
security: 5
}
}
}, {
title: "İç Ticaret Düzenlemesi",
description: "Sığınak içi ticaret sisteminde düzenleme gerekiyor. Serbest piyasa mı yoksa devlet kontrolü mü?",
leftOption: {
text: "Serbest piyasa sistemini benimseyin",
effects: {
morale: 20,
resources: 20,
security: -15
}
},
rightOption: {
text: "Devlet kontrolünde ticaret sistemi",
effects: {
security: 20,
morale: -15,
resources: -5
}
}
}, {
title: "Su Teknolojisi",
description: "İleri su arıtma teknolojisi kurulacak. Maliyetli ama su kalitesini önemli ölçüde artırır.",
leftOption: {
text: "İleri su teknolojisine yatırım yapın",
effects: {
health: 30,
morale: 15,
resources: -25
}
},
rightOption: {
text: "Mevcut su sistemini iyileştirin",
effects: {
health: 10,
resources: -5
}
}
}, {
title: "Çalışma Saatleri",
description: "Verimlilik için çalışma saatlerini artırmak mı yoksa çalışan refahını öncelemek mi?",
leftOption: {
text: "Çalışan refahını önceleyın",
effects: {
morale: 25,
health: 15,
resources: -15
}
},
rightOption: {
text: "Verimlilik için çalışma saatlerini artırın",
effects: {
resources: 20,
morale: -20,
health: -10
}
}
}, {
title: "Güvenlik Taraması",
description: "Tüm sığınak sakinlerine güvenlik taraması yapılacak. Bu özel yaşamı ihlal eder ama güvenliği artırır.",
leftOption: {
text: "Kapsamlı güvenlik taraması yapın",
effects: {
security: 25,
morale: -25,
hope: -10
}
},
rightOption: {
text: "Özel yaşama saygı gösterin",
effects: {
morale: 20,
hope: 15,
security: -15
}
}
}, {
title: "Robotik Teknoloji",
description: "İş gücünü desteklemek için robotik teknoloji geliştirilecek. İnsanları işsiz bırakma riski var.",
leftOption: {
text: "Robotik teknoloji geliştirin",
effects: {
resources: 25,
security: 15,
morale: -20
}
},
rightOption: {
text: "İnsan iş gücünü koruyun",
effects: {
morale: 20,
resources: -10,
security: -5
}
}
}, {
title: "Çevresel İzleme",
description: "Dış çevredeki değişiklikleri izlemek için sensör ağı kurulacak. Erken uyarı sağlar ama maliyetli.",
leftOption: {
text: "Çevresel izleme sistemi kurun",
effects: {
security: 20,
hope: 15,
resources: -20
}
},
rightOption: {
text: "Mevcut izleme yöntemleriyle devam edin",
effects: {
resources: 10,
security: -10,
hope: -5
}
}
}, {
title: "Sanal Gerçeklik",
description: "Moral yükseltmek için sanal gerçeklik sistemi kurulacak. Kaçış sağlar ama gerçeklikten kopma riski var.",
leftOption: {
text: "Sanal gerçeklik sistemi kurun",
effects: {
morale: 30,
hope: 20,
resources: -25,
health: -10
}
},
rightOption: {
text: "Gerçek aktivitelere odaklanın",
effects: {
health: 15,
morale: -10,
resources: 10
}
}
}, {
title: "Yasal Sistem",
description: "Sığınak için yasal sistem kurulacak. Katı hukuk mu yoksa esnek adalet sistemi mi?",
leftOption: {
text: "Esnek adalet sistemi kurun",
effects: {
morale: 20,
hope: 15,
security: -10
}
},
rightOption: {
text: "Katı hukuk sistemi uygulayın",
effects: {
security: 25,
morale: -15,
hope: -5
}
}
}, {
title: "Veri Koruma",
description: "Kişisel verilerin korunması için güvenlik sistemi kurulacak. Mahremiyet önemli ama kaynak gerektirir.",
leftOption: {
text: "Kapsamlı veri koruma sistemi",
effects: {
morale: 20,
security: 15,
resources: -15
}
},
rightOption: {
text: "Temel veri güvenliğiyle yetinin",
effects: {
resources: 5,
morale: -10,
security: 5
}
}
}, {
title: "Beslenme Çeşitliliği",
description: "Farklı kültürlerden yemek tarifleri korumak için program başlatılacak. Kültürel zenginlik ama kaynak gerektirir.",
leftOption: {
text: "Kültürel beslenme programı başlatın",
effects: {
morale: 25,
hope: 20,
resources: -15
}
},
rightOption: {
text: "Standart beslenme sistemiyle devam edin",
effects: {
resources: 10,
morale: -10,
hope: -5
}
}
}, {
title: "İletişim Ağı",
description: "Gelişmiş iç iletişim ağı kurulacak. Koordinasyonu artırır ama güvenlik açığı yaratabilir.",
leftOption: {
text: "Gelişmiş iletişim ağı kurun",
effects: {
security: 15,
morale: 15,
resources: -15
}
},
rightOption: {
text: "Güvenlik odaklı basit iletişim",
effects: {
security: 20,
morale: -10,
resources: -5
}
}
}, {
title: "Yaratıcılık Eğitimi",
description: "Problem çözme için yaratıcılık eğitimi verilecek. İnovasyon sağlar ama pratik becerileri ihmal edebilir.",
leftOption: {
text: "Yaratıcılık eğitimi programı",
effects: {
hope: 25,
morale: 20,
resources: -15,
security: -5
}
},
rightOption: {
text: "Pratik beceri eğitimine odaklanın",
effects: {
security: 15,
resources: 10,
hope: -10
}
}
}, {
title: "Fiziksel Kondisyon",
description: "Sığınakta yaşam fiziksel kondisyonu düşürüyor. Spor zorunluluğu mu yoksa gönüllü aktiviteler mi?",
leftOption: {
text: "Gönüllü spor aktiviteleri destekleyin",
effects: {
health: 15,
morale: 20,
resources: -10
}
},
rightOption: {
text: "Zorunlu fiziksel kondisyon programı",
effects: {
health: 25,
morale: -15,
security: 10
}
}
}, {
title: "Çatışma Çözümü",
description: "Kişiler arası çatışmalar artıyor. Mediyasyon programı mı yoksa katı disiplin mi?",
leftOption: {
text: "Mediyasyon ve uzlaşma programı",
effects: {
morale: 25,
hope: 20,
security: -10
}
},
rightOption: {
text: "Katı disiplin ve ceza sistemi",
effects: {
security: 25,
morale: -20,
hope: -10
}
}
}, {
title: "Teknoloji Eğitimi",
description: "Gelecek nesil için teknoloji eğitimi mi yoksa geleneksel beceriler mi öncelikli?",
leftOption: {
text: "Gelişmiş teknoloji eğitimi",
effects: {
hope: 30,
security: 15,
resources: -20
}
},
rightOption: {
text: "Geleneksel beceri eğitimi",
effects: {
morale: 15,
resources: 10,
hope: -10
}
}
}, {
title: "Gıda Depolama",
description: "Uzun vadeli gıda depolama sistemi kurulacak. Güvenlik sağlar ama başlangıç maliyeti yüksek.",
leftOption: {
text: "Gelişmiş depolama sistemi kurun",
effects: {
security: 25,
health: 15,
resources: -25
}
},
rightOption: {
text: "Mevcut depolama yöntemlerini iyileştirin",
effects: {
security: 10,
resources: -5
}
}
}, {
title: "Müzik ve Sanat",
description: "Müzik ve sanat eğitimi için kaynak ayrılacak. Morale katkı sağlar ama pratik değeri tartışmalı.",
leftOption: {
text: "Müzik ve sanat programları başlatın",
effects: {
morale: 30,
hope: 25,
resources: -20
}
},
rightOption: {
text: "Pratik becerilere odaklanın",
effects: {
resources: 15,
morale: -15,
hope: -10
}
}
}, {
title: "Hava Kalitesi",
description: "Hava kalitesini iyileştirmek için filtrasyon sistemi güncellenecek. Sağlığa faydalı ama enerji tüketir.",
leftOption: {
text: "Gelişmiş hava filtrasyon sistemi",
effects: {
health: 25,
morale: 15,
resources: -20
}
},
rightOption: {
text: "Mevcut sistemle yetinin",
effects: {
health: -5,
resources: 10
}
}
}, {
title: "Sosyal Aktiviteler",
description: "Toplumsal bağları güçlendirmek için sosyal aktivite programı başlatılacak. Kaynak gerektirir ama morali yükseltir.",
leftOption: {
text: "Kapsamlı sosyal aktivite programı",
effects: {
morale: 30,
hope: 20,
resources: -20
}
},
rightOption: {
text: "Sınırlı sosyal aktivitelerle yetinin",
effects: {
morale: 5,
resources: 5
}
}
}, {
title: "Bilgi Paylaşımı",
description: "Kritik bilgilerin toplumla paylaşım düzeyi belirlenecek. Şeffaflık güven yaratır ama paniklere yol açabilir.",
leftOption: {
text: "Tam şeffaflık politikası",
effects: {
morale: 20,
hope: 15,
security: -20
}
},
rightOption: {
text: "Sınırlı bilgi paylaşımı",
effects: {
security: 20,
morale: -15,
hope: -10
}
}
}, {
title: "Acil Durum Hazırlığı",
description: "Olası acil durumlar için hazırlık programı başlatılacak. Güvenlik sağlar ama kaynakları meşgul eder.",
leftOption: {
text: "Kapsamlı acil durum hazırlığı",
effects: {
security: 30,
hope: 15,
resources: -25
}
},
rightOption: {
text: "Temel hazırlık önlemleri",
effects: {
security: 10,
resources: -5
}
}
}, {
title: "Yaşlı Bakımı",
description: "Yaşlı nüfus için özel bakım sistemi kurulacak. İnsani ama kaynakları zorlar.",
leftOption: {
text: "Özel yaşlı bakım sistemi kurun",
effects: {
morale: 25,
health: 20,
hope: 20,
resources: -25
}
},
rightOption: {
text: "Aile bakımı sistemini destekleyin",
effects: {
morale: 10,
resources: -10
}
}
}, {
title: "Teknolojik İnovasyon",
description: "Yeni teknolojiler geliştirmek için inovasyon laboratuvarı kurulacak. Gelecek için önemli ama riskli.",
leftOption: {
text: "İnovasyon laboratuvarı kurun",
effects: {
hope: 30,
security: 15,
resources: -25
}
},
rightOption: {
text: "Mevcut teknolojileri iyileştirin",
effects: {
security: 10,
resources: 5,
hope: -5
}
}
}, {
title: "Eğlence Endüstrisi",
description: "Moral için eğlence ve gösteri programları düzenlenecek. Yaşam kalitesini artırır ama lüks sayılabilir.",
leftOption: {
text: "Eğlence programları organize edin",
effects: {
morale: 30,
hope: 25,
resources: -20
}
},
rightOption: {
text: "Temel ihtiyaçlara odaklanın",
effects: {
resources: 15,
morale: -15,
hope: -10
}
}
}, {
title: "Çevre Dostu Teknoloji",
description: "Sürdürülebilir teknolojiler geliştirilecek. Çevreye faydalı ama geliştirme maliyeti yüksek.",
leftOption: {
text: "Çevre dostu teknoloji geliştirin",
effects: {
health: 25,
hope: 25,
resources: -25
}
},
rightOption: {
text: "Var olan teknolojilerle devam edin",
effects: {
health: -5,
hope: -10,
resources: 10
}
}
}, {
title: "Toplumsal Hafıza",
description: "Savaş öncesi toplumsal değerleri korumak için arşiv oluşturulacak. Kültürel değer taşır ama alan gerektirir.",
leftOption: {
text: "Toplumsal hafıza arşivi oluşturun",
effects: {
hope: 25,
morale: 20,
resources: -15
}
},
rightOption: {
text: "Geleceğe odaklı yaklaşım benimseyin",
effects: {
hope: -10,
resources: 10,
security: 5
}
}
}, {
title: "Sağlık İzleme",
description: "Kişisel sağlık izleme sistemi kurulacak. Erken teşhis sağlar ama mahremiyet endişeleri var.",
leftOption: {
text: "Kapsamlı sağlık izleme sistemi",
effects: {
health: 30,
security: 15,
morale: -15
}
},
rightOption: {
text: "Gönüllü sağlık kontrolları",
effects: {
health: 15,
morale: 15,
resources: -10
}
}
}, {
title: "İş Bölümü",
description: "Çalışma sisteminde uzmanlaşma mı yoksa çok yetenekli işçiler mi tercih edilecek?",
leftOption: {
text: "Uzmanlaşmaya dayalı iş bölümü",
effects: {
resources: 25,
security: 15,
morale: -10
}
},
rightOption: {
text: "Çok yetenekli işçi sistemi",
effects: {
morale: 20,
hope: 15,
resources: -10
}
}
}, {
title: "Kriz Yönetimi",
description: "Gelecekteki krizler için yönetim protokolü oluşturulacak. Hazırlık sağlar ama belirsizlik yaratabilir.",
leftOption: {
text: "Detaylı kriz yönetim protokolü",
effects: {
security: 25,
hope: -10,
resources: -15
}
},
rightOption: {
text: "Esnek yaklaşımla kriz yönetimi",
effects: {
morale: 15,
hope: 10,
security: -10
}
}
}, {
title: "Tarih Eğitimi",
description: "Savaş öncesi tarih eğitimi verilecek. Geçmişten öğrenmek faydalı ama travmatik olabilir.",
leftOption: {
text: "Kapsamlı tarih eğitimi programı",
effects: {
hope: 20,
morale: -10,
resources: -15
}
},
rightOption: {
text: "Seçici tarih eğitimi",
effects: {
morale: 10,
hope: 5,
resources: -5
}
}
}, {
title: "Beslenme Güvenliği",
description: "Gıda üretim süreçlerinde güvenlik standartları yükseltilecek. Sağlığa faydalı ama üretimi yavaşlatır.",
leftOption: {
text: "Yüksek güvenlik standartları",
effects: {
health: 25,
morale: 15,
resources: -20
}
},
rightOption: {
text: "Dengeli güvenlik yaklaşımı",
effects: {
health: 10,
resources: -5
}
}
}, {
title: "Sosyal Sorumluluk",
description: "Bireysel mi yoksa toplumsal sorumluluk mu öne çıkarılacak? Bu seçim değer sistemini şekillendirir.",
leftOption: {
text: "Toplumsal sorumluluk vurgusunu artırın",
effects: {
morale: 20,
security: 15,
hope: 15,
resources: -10
}
},
rightOption: {
text: "Bireysel sorumluluk sistemini destekleyin",
effects: {
morale: -10,
resources: 15,
security: -5
}
}
}, {
title: "Gelecek Vizyonu",
description: "Sığınağın uzun vadeli vizyonu belirlenecek. Dünyayı yeniden inşa etmek mi yoksa burada kalıcı yaşam mı?",
leftOption: {
text: "Dünya yeniden inşa vizyonu",
effects: {
hope: 35,
morale: 20,
resources: -20,
security: -10
}
},
rightOption: {
text: "Kalıcı yeraltı yaşamı vizyonu",
effects: {
security: 20,
resources: 15,
hope: -20,
morale: -15
}
}
}];
var currentScenarioIndex = 0;
var scenarioCard;
var statBars = {};
var isDragging = false;
var dragStartX = 0;
var cardStartX = 0;
var isProcessingChoice = false;
var decisions = storage.decisions || {};
var scenarioOrder = [];
var usedScenarios = [];
// Play slow post-apocalyptic background music if sound is enabled
if (soundEnabled) {
LK.playMusic('Fg');
}
// First scenario will be loaded when introduction text is clicked;
// Initialize sound settings from storage
var soundEnabled = storage.soundEnabled !== undefined ? storage.soundEnabled : true;
LK.on('pause', function () {
// Add new game option to pause menu
LK.addPauseMenuOption('Yeni Oyun', function () {
// Reset all game state
stats = {
morale: 100,
resources: 100,
security: 100,
health: 100,
hope: 100
};
// Clear stored decisions
storage.decisions = {};
decisions = {};
// Reset counters
dayCounter = 1;
dayText.setText('Gün ' + dayCounter);
populationText.setText('Nüfus: 300');
// Reset scenario tracking
currentScenarioIndex = 0;
scenarioOrder = [];
usedScenarios = [];
isProcessingChoice = false;
isDragging = false;
// Update stats display
updateStats();
// Reset to introduction state
introContainer.alpha = 1;
scenarioCard.alpha = 0;
scenarioCard.y = 2732;
scenarioCard.x = 1024;
// Initialize new game
initializeScenarioOrder();
// Close pause menu
LK.closePauseMenu();
});
// Add sound toggle option to pause menu
LK.addPauseMenuOption(soundEnabled ? 'Sesi Kapat' : 'Sesi Aç', function () {
soundEnabled = !soundEnabled;
storage.soundEnabled = soundEnabled;
// Update music based on sound setting
if (soundEnabled) {
LK.playMusic('Fg');
} else {
LK.stopMusic();
}
// Close pause menu
LK.closePauseMenu();
});
});
// First scenario will be loaded when introduction text is clicked;
var background = game.attachAsset('bunkerBackground', {
anchorX: 0,
anchorY: 0
});
// Create stat bars with clean positioning
var statNames = ['Moral', 'Kaynaklar', 'Güvenlik', 'Sağlık', 'Umut'];
var statColors = [0x4CAF50, 0x2196F3, 0xFF9800, 0xF44336, 0x9C27B0];
var statKeys = ['morale', 'resources', 'security', 'health', 'hope'];
for (var i = 0; i < statNames.length; i++) {
var statBar = new StatBar(statNames[i], statColors[i]);
statBar.x = 1600;
statBar.y = 150 + i * 65;
statBars[statKeys[i]] = statBar;
game.addChild(statBar);
}
// Create scenario card
scenarioCard = new ScenarioCard();
scenarioCard.x = 1024;
scenarioCard.y = 1400;
game.addChild(scenarioCard);
// Create container for introduction text with background
var introContainer = new Container();
introContainer.x = 1024;
introContainer.y = 1366;
// Enhanced background with border effect matching OptionCard design
var introBackgroundBorder = introContainer.attachAsset('scenarioCard', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.05,
scaleY: 1.2
});
introBackgroundBorder.tint = 0x2a2a2a;
var introBackground = introContainer.attachAsset('scenarioCard', {
anchorX: 0.5,
anchorY: 0.5
});
introBackground.tint = 0x1a1a1a;
// Glow effect background matching OptionCard style
var introGlowEffect = introContainer.attachAsset('scenarioCard', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.02,
scaleY: 1.1
});
introGlowEffect.tint = 0x4a90e2;
introGlowEffect.alpha = 0.3;
// Introduction text
var introText = new Text2('Yıl 2087: Nükleer savaş sonrası dünyada yer altı sığınağında 300 kişilik topluluğun liderisiniz. Her kararınız toplumun geleceğini belirler. Moralinizi, kaynaklarınızı, güvenliğinizi, sağlığınızı ve umudunuzu dengede tutun.\n\nKarar vermek için sola veya sağa kaydırın.', {
size: 85,
fill: 0xFFFFFF,
wordWrap: true,
wordWrapWidth: 1600,
font: 'Georgia, serif',
stroke: 0x000000,
strokeThickness: 3
});
introText.anchor.set(0.5, 0.5);
introText.x = 0;
introText.y = 0;
introContainer.addChild(introText);
game.addChild(introContainer);
// Add click handler to introduction container
introContainer.down = function (x, y, obj) {
// Hide introduction container immediately
tween(introContainer, {
alpha: 0
}, {
duration: 500,
easing: tween.easeOut
});
// Show first scenario
scenarioCard.alpha = 1;
loadScenario();
};
// Day counter
var dayCounter = 1;
var dayText = new Text2('Gün ' + dayCounter, {
size: 78,
fill: 0x000000,
font: 'Georgia-Bold, serif',
stroke: 0x000000,
strokeThickness: 4
});
dayText.anchor.set(0.5, 0);
dayText.x = 1024;
dayText.y = 50;
game.addChild(dayText);
// Population counter
var populationText = new Text2('Nüfus: 300', {
size: 75,
fill: 0x000000,
font: 'Georgia-Bold, serif',
stroke: 0x000000,
strokeThickness: 4
});
populationText.anchor.set(1, 0);
populationText.x = 1900;
populationText.y = 50;
game.addChild(populationText);
function shuffleArray(array) {
var shuffled = array.slice();
for (var i = shuffled.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = shuffled[i];
shuffled[i] = shuffled[j];
shuffled[j] = temp;
}
return shuffled;
}
function initializeScenarioOrder() {
// Get available scenarios (base scenarios + conditional ones that meet requirements)
var availableScenarios = [];
for (var i = 0; i < scenarios.length; i++) {
if (!scenarios[i].condition || scenarios[i].condition()) {
availableScenarios.push(i);
}
}
// Randomize the order
scenarioOrder = shuffleArray(availableScenarios);
usedScenarios = [];
}
function updateStats() {
for (var key in statBars) {
statBars[key].setValue(stats[key]);
}
}
function loadScenario() {
// Check if we need to regenerate scenario order (add new conditional scenarios)
var availableScenarios = [];
for (var i = 0; i < scenarios.length; i++) {
if (!scenarios[i].condition || scenarios[i].condition()) {
availableScenarios.push(i);
}
}
// If no more scenarios in current order, regenerate
if (scenarioOrder.length === 0) {
scenarioOrder = shuffleArray(availableScenarios.filter(function (index) {
return usedScenarios.indexOf(index) === -1;
}));
// If all scenarios used, reset and reshuffle
if (scenarioOrder.length === 0) {
usedScenarios = [];
scenarioOrder = shuffleArray(availableScenarios);
}
}
currentScenarioIndex = scenarioOrder.shift();
usedScenarios.push(currentScenarioIndex);
var scenario = scenarios[currentScenarioIndex];
scenarioCard.setScenario(scenario);
// Reset card position
scenarioCard.x = 1024;
scenarioCard.alpha = 1;
// Introduction text hiding is now handled by click event
// Animate card appearance
tween(scenarioCard, {
y: 1400
}, {
duration: 500,
easing: tween.easeOut
});
}
function makeChoice(isLeft) {
if (isProcessingChoice) return;
isProcessingChoice = true;
var scenario = scenarios[currentScenarioIndex];
var choice = isLeft ? scenario.leftOption : scenario.rightOption;
// Track specific decisions for future scenarios
if (scenario.title.indexOf("Yiyecek") !== -1) {
decisions.foodRationing = (decisions.foodRationing || 0) + 1;
}
if (scenario.title.indexOf("Tıbbi") !== -1 && isLeft) {
decisions.savedChild = true;
}
if (scenario.title.indexOf("Güvenlik") !== -1 && isLeft) {
decisions.investigated = true;
}
if (scenario.title.indexOf("Enerji") !== -1 && !isLeft) {
decisions.prioritizedWater = (decisions.prioritizedWater || 0) + 1;
}
if (scenario.title.indexOf("Kaynak") !== -1 && isLeft) {
decisions.sentHunters = (decisions.sentHunters || 0) + 1;
}
// Save decisions to storage
storage.decisions = decisions;
// Apply effects
var hasPositiveEffect = false;
var hasNegativeEffect = false;
for (var key in choice.effects) {
var effect = choice.effects[key];
stats[key] += effect;
stats[key] = Math.max(0, Math.min(100, stats[key]));
if (effect > 0) hasPositiveEffect = true;
if (effect < 0) hasNegativeEffect = true;
}
// Play appropriate sound if enabled
if (soundEnabled) {
if (hasPositiveEffect && !hasNegativeEffect) {
LK.getSound('positive').play();
} else if (hasNegativeEffect && !hasPositiveEffect) {
LK.getSound('negative').play();
} else {
LK.getSound('decision').play();
}
}
// Animate card exit
var targetX = isLeft ? -1000 : 3000;
tween(scenarioCard, {
x: targetX,
alpha: 0
}, {
duration: 300,
easing: tween.easeIn,
onFinish: function onFinish() {
currentScenarioIndex++;
dayCounter++;
dayText.setText('Gün ' + dayCounter);
// Check for game over conditions
for (var key in stats) {
if (stats[key] <= 0) {
LK.showGameOver();
return;
}
}
// Check for victory condition
var allStatsGood = true;
for (var key in stats) {
if (stats[key] < 80) {
allStatsGood = false;
break;
}
}
if (allStatsGood && dayCounter >= 30) {
LK.showYouWin();
return;
}
updateStats();
// Population decline based on health
var populationTextValue = populationText.text || 'Nüfus: 300';
var currentPopulation = parseInt(populationTextValue.split(': ')[1]);
if (stats.health < 50) {
var populationLoss = 0;
if (stats.health < 30) {
populationLoss = 10; // 10 people die per day when health below 30
} else {
populationLoss = Math.floor((50 - stats.health) / 10); // Population decreases when health below 50
}
var newPopulation = Math.max(0, currentPopulation - populationLoss);
populationText.setText('Nüfus: ' + newPopulation);
// Game over if population reaches 0
if (newPopulation <= 0) {
LK.showGameOver();
return;
}
}
loadScenario();
isProcessingChoice = false;
}
});
}
game.down = function (x, y, obj) {
if (isProcessingChoice) return;
isDragging = true;
dragStartX = x;
cardStartX = scenarioCard.x;
};
game.move = function (x, y, obj) {
if (isDragging && !isProcessingChoice) {
var deltaX = x - dragStartX;
scenarioCard.x = cardStartX + deltaX;
// Visual feedback
var swipeThreshold = 300;
if (Math.abs(deltaX) > swipeThreshold) {
if (deltaX > 0) {
scenarioCard.getLeftOption().alpha = 0.5;
scenarioCard.getRightOption().alpha = 1;
} else {
scenarioCard.getLeftOption().alpha = 1;
scenarioCard.getRightOption().alpha = 0.5;
}
} else {
scenarioCard.getLeftOption().alpha = 1;
scenarioCard.getRightOption().alpha = 1;
}
}
};
game.up = function (x, y, obj) {
if (isDragging && !isProcessingChoice) {
isDragging = false;
var deltaX = x - dragStartX;
var swipeThreshold = 300;
if (Math.abs(deltaX) > swipeThreshold) {
if (deltaX > 0) {
makeChoice(false); // Right choice
} else {
makeChoice(true); // Left choice
}
} else {
// Snap back to center
tween(scenarioCard, {
x: 1024
}, {
duration: 200,
easing: tween.easeOut
});
}
// Reset option opacity
scenarioCard.getLeftOption().alpha = 1;
scenarioCard.getRightOption().alpha = 1;
}
};
// Initialize game
initializeScenarioOrder();
updateStats();
// Show introduction container at start
introContainer.alpha = 1;
// Hide scenario card initially
scenarioCard.alpha = 0;
scenarioCard.y = 2732; // Position off-screen
// First scenario will be loaded when introduction text is clicked;