User prompt
kartların rengi bir garib olmuş onu düzenle
User prompt
Köylü kralın huzurna çıktığında köylü kartı gözüksün
User prompt
*29.* *Göktaşı düştü, halk korkuyor.* A) Dua edin. B) Bilgin çağırın. → A) Din artar. B) Gerçek anlaşılır. *30.* *Yasak aşk söylentileri var.* A) Duymazdan gel. B) İtiraf et. → A) İsyan çıkar. B) Soylular gücünü kırar. --- *31.* *Yeni yıl festivali yapılacak mı?* A) Evet. B) Hayır. → A) Mutluluk artar. B) Ekonomi korunur. *32.* *Kral kuşatmada rehin kaldı!* A) Fidye öde. B) Kurtarma gönder. → A) Hazine boşalır. B) Ordu zayıflar ama kurtarırsın. *33.* *Denizciler yeni kıta keşfetti.* A) Koloni kur. B) Geri çağır. → A) Zenginlik ama isyan riski. B) Stabilite korunur. *34.* *Bir haydut seni taklit ediyor.* A) Yakala. B) Takip et. → A) Güvenlik artar. B) Gizli plan ortaya çıkar.
User prompt
*19. Bir kadın, senin çocuğunu taşıdığını iddia ediyor.* A) Kabul et. B) Reddet. → A) Soylu isyanı. B) Halk dedikodusu. *20.* *Sarayda casus bulundu.* A) Sorgula. B) İdam et. → A) Bilgi alırsın. B) Sessizlik ama intikam riski. --- *21.* *Ordu maaş istiyor.* A) Öde. B) Ertele. → A) Sadakat artar. B) Ayaklanma riski. *22.* *Yeni bir dinî mezhep yayılıyor.* A) Yasakla. B) Serbest bırak. → A) Kargaşa çıkar. B) Mezhep güçlenir. *23.* *Saray ressamı, çirkin bir portre yaptı.* A) Yakın. B) Sergileyin. → A) Sanatçılar küser. B) Halk güler. *24.* *Çocuklar için yeni oyun yasaklansın mı?* A) Evet. B) Hayır. → A) Ebeveynler memnun. B) Genç halk öfkeli. *25.* *Gece garip sesler geliyor.* A) Muhafız gönder. B) Bekle. → A) Cinayet önlenir. B) Suikast olur. *26.* *Komşu kral seni düelloya davet etti.* A) Kabul et. B) Reddet. → A) Kazanırsan ün artar. B) Kaçarsan alay konusu olursun. *27.* *Bir deli kendini Mesih ilan etti.* A) Yakala. B) Takipçilerini izleyin. → A) Ayaklanma. B) Bilgi elde edilir. *28.* *Yüksek vergiler önerildi.* A) Onayla. B) Reddet. → A) Hazine dolar, halk söner. B) Halk mutlu, ekonomi zayıf.
User prompt
Elbette! İşte geri kalan *40 adet Reigns tarzı hikaye kartı* – her biri oyuncunun kararına göre sonucu etkileyen kısa olaylar içerir: --- *11.* *Bir grup keşiş, sarayda sürekli mum yakıyor.* A) Serbest bırak. B) Yasakla. → A) Din halkı seni över. B) Saray güvenliği artar ama halk rahatsız olur. *12.* *Yabancı bir filozof "Kral sadece semboldür" dedi.* A) Sürgün et. B) Düşünceler özgür. → A) Bilim dünyası seni küçümser. B) Halkın bir kısmı kafası karışır. *13.* *Köyde veba baş gösterdi.* A) Karantina uygula. B) Umursama. → A) Halk biraz üzülür ama yayılmaz. B) Veba yayılır, nüfus azalır. *14.* *Ejderha söylentileri yayılıyor.* A) Av düzenle. B) Gül geç. → A) Halk cesaretine hayran olur. B) Korku büyür. *15.* *Yeni para birimi önerildi.* A) Kabul et. B) Reddet. → A) Ekonomi değişir, riskli. B) Güven korunur. *16.* *Saray mutfağında zehirli yemek paniği!* A) Aşçıyı idam et. B) Araştırın. → A) Korku yayılır. B) Gerçek suçlu bulunur. *17.* *Ormandaki büyücü, yardım istedi.* A) Yardım gönder. B) Yok say. → A) Gizli ödül alırsın. B) Lanet yersin (şanssızlık başlar). *18.* *Tapınak tamiri için para lazım.* A) Ver. B) Verme. → A) Din artar, ekonomi düşer. B) Halk üzülür. Her 2 dilede çevir
User prompt
6.* *Yeni bir vergi sistemi önerildi: Soylular daha çok ödeyecek.* A) Uygula. B) Boşver. *Sonuç:* A) Halk seni över, ama soylular suikast planlar. B) Soylular mutlu, halk öfkeli. --- *7.* *Saray bahçesine dev bir heykel yapılması önerildi.* A) Onayla. B) Gereksiz. *Sonuç:* A) Prestijin artar ama masraf çok olur. B) Hazineden tasarruf ama sanatçılar gücenir. --- *8.* *(Ters köşe)* *Gökyüzü kırmızıya döndü. Ne yapalım?* A) Dua edin. B) Bilginlere sorun. *Sonuç:* A) Panik büyür, kaos çıkar. B) Bilginler tutulur, halk rahatlar. --- *9.* *Kraliçenin kardeşi seni ziyarete geliyor.* A) Ağırlayın. B) Görüşme. *Sonuç:* A) Saray dedikoduyla çalkalanır. B) Kraliçe bozulur. --- *10.* *(Kandırmacalı soru)* *Kral kuşları sever, sen de sever misin?* A) Evet. B) Hayır. *Sonuç:* A) “O zaman sen tahttan uç!” derler — tahttan indirilirsin. B) “Sen de kral değilsin zaten” — halk desteği düşer. Her 2 dilede uygula
User prompt
inglizceye de bunları çevir ekle
User prompt
*1.* *Saray kedisi tahta zıpladı, halk bunu kutsal işaret sayıyor.* A) Kutsal ilan et. B) Saçmalık de. *Sonuç:* A) Halk sevinir ama din adamları seni sorgular. B) Mantıklısın ama halk seni uğursuz sayar. --- *2.* *Hazineye 100 altın eklendi, ama nereden geldiği belli değil.* A) Kullan. B) Reddet. *Sonuç:* A) Ekonomi artar ama suçlularla bağlantı çıkar. B) Güven kazanırsın ama hazine azalır. --- *3.* *(Ters köşe)* *Bir büyücü sana ölümsüzlük teklif ediyor.* A) Kabul et. B) Reddet. *Sonuç:* A) Büyücü seni taşa çevirir, oyun biter. B) Hayatın devam eder, halk saygı duyar. --- *4.* *Saray muhafızları arasında turnuva düzenlensin mi?* A) Düzenle. B) Gerek yok. *Sonuç:* A) Ordu morali artar ama bazı askerler sakatlanır. B) Disiplin korunur ama sıkıntı başlar. --- *5.* *(Kandırmaca)* *Bilge biri, “Halk aç ama mutlu” diyor. Ne yapalım?* A) Sorun yok. B) Yemek dağıt. *Sonuç:* A) Halk bir anda isyan eder. B) Hazine azalır ama isyan önlenir.
User prompt
din adamı ve ya asker ya da halktan birinin bize soru sormasını anala bilirmisin ona göre o kartlar gelsin
User prompt
halk asker vezir din adamı bunların kartları ayrı yapa bilirmiyiz
User prompt
Oyun ilk açıldığında varsayılan dili İngilizce olarak ayarla. Oyuncu başka bir dil seçmedikçe arayüz ve yazılar İngilizce olsun.
User prompt
Start butonunun altında en uzun hüküm süresini seçilen dile göre göster. Oyuncu Türkçeyi seçerse 'En uzun hükmün: 27 yıl', İngilizceyi seçerse 'Your longest reign: 27 years' yazsın. Metin, dil seçimine göre otomatik olarak değişsin.
User prompt
Start menusunda yazan en uzun hüküm yılı seçtiğimiz dile göre o dilde yazsın ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
En uzun hükümün hangi dili seçersek o dilde yazsın
User prompt
sol alta start menusunda yılı gizle
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'getItem')' in or related to this line: 'var maxYears = localStorage.getItem('maxYears') || 0;' Line Number: 1283 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'storage.get is not a function' in or related to this line: 'var maxYears = storage.get('maxYears') || 0;' Line Number: 1283 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'storage.getItem is not a function' in or related to this line: 'var maxYears = storage.getItem('maxYears') || 0;' Line Number: 1283
User prompt
"Start butonunun altında, oyuncunun önceki oyunlarda en uzun kaç yıl hüküm sürdüğünü gösteren bir ipucu göster. Bu bilgi oyunlar arasında kaydedilsin ve sadece yeni rekor kırılırsa güncellensin. Metin şu şekilde sade olsun: 'En uzun hükmün: 27 yıl' gibi
User prompt
Please fix the bug: 'storage.get is not a function' in or related to this line: 'var maxYears = storage.get('maxYears') || 0;' Line Number: 1283
User prompt
Please fix the bug: 'storage.getItem is not a function' in or related to this line: 'var maxYears = storage.getItem('maxYears') || 0;' Line Number: 1283
User prompt
Please fix the bug: 'storage.get is not a function' in or related to this line: 'var maxYears = storage.get('maxYears') || 0;' Line Number: 1283
User prompt
Start butonunun altında, oyuncunun önceki oyunlarda en uzun kaç yıl hüküm sürdüğünü gösteren bir ipucu göster. Bu bilgi oyunlar arasında kaydedilsin ve sadece yeni rekor kırılırsa güncellensin. Metin şu şekilde sade olsun: 'En uzun hükmün: 27 yıl' gibi ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'storage is not defined' in or related to this line: 'var maxYears = storage.get('maxYears') || 0;' Line Number: 1282 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ // Card class: represents a decision card var Card = Container.expand(function () { var self = Container.call(this); // Card shadow for depth (use image asset, ensure it's added as a child and visible) var shadow = LK.getAsset('cardShadow', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 20, alpha: 0.15 }); self.addChild(shadow); // Card background var bg = self.attachAsset('card', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 0 }); // Card text (now hidden, question will be shown globally) var text = new Text2('', { size: 70, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 800, align: 'center' }); text.anchor.set(0.5, 0.5); text.x = 0; text.y = -200; text.visible = false; // Hide card question text self.addChild(text); // Left choice text var leftText = new Text2('', { size: 55, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 350, align: 'left' }); leftText.anchor.set(0, 0.5); leftText.x = -400; leftText.y = 400; self.addChild(leftText); // Right choice text var rightText = new Text2('', { size: 55, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 350, align: 'right' }); rightText.anchor.set(1, 0.5); rightText.x = 400; rightText.y = 400; self.addChild(rightText); // Card data self.cardData = null; // Set card content self.setCard = function (cardData) { self.cardData = cardData; // Set global question text using card data if (typeof questionText !== "undefined" && questionText) { questionText.setText(cardData.text); } text.setText(''); // Hide card text leftText.setText(cardData.left.text); rightText.setText(cardData.right.text); }; // Animate card back to center self.animateToCenter = function (onFinish) { tween(self, { x: 0, y: 0, rotation: 0 }, { duration: 250, easing: tween.easeOut, onFinish: onFinish }); }; // Animate card off screen (left or right) self.animateOff = function (direction, onFinish) { var targetX = direction === 'left' ? -1200 : 1200; tween(self, { x: targetX, y: self.y + 200 * (direction === 'left' ? 1 : -1), rotation: direction === 'left' ? -0.5 : 0.5 }, { duration: 300, easing: tween.cubicOut, onFinish: onFinish }); }; return self; }); // StatBar class: shows a single stat (religion, people, army, economy) var StatBar = Container.expand(function () { var self = Container.call(this); // Background var bg = self.attachAsset('statBarBg', { anchorX: 0, anchorY: 0.5, x: 0, y: 0 }); // Fill (color depends on stat) self.fill = null; self.setType = function (type) { var fillId = 'statBarFill_' + type; self.fill = self.attachAsset(fillId, { anchorX: 0, anchorY: 0.5, x: 0, y: 0 }); self.addChildAt(self.fill, 1); }; // Label self.label = new Text2('', { size: 45, fill: 0xFFFFFF }); self.label.anchor.set(1, 0.5); self.label.x = -20; self.label.y = 0; self.addChild(self.label); // Set value (0-100) self.setValue = function (val) { if (val < 0) val = 0; if (val > 100) val = 100; self.fill.width = 4 * val; // 400px max }; // Set label self.setLabel = function (txt) { self.label.setText(txt); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a1a }); /**** * Game Code ****/ // Stat bar backgrounds and fills // Card background shapes // --- Game Data --- // List of cards (minimal set for MVP, can be expanded) var cards = [ // Essential nobility cards (betrayal/trust) { type: "nobility", text: "A trusted noble offers to double the treasury if you let him manage it.", left: { text: "Accept his offer.", effects: { religion: 0, people: -10, army: -10, economy: +25 } }, right: { text: "Refuse, keep control.", effects: { religion: 0, people: 0, army: 0, economy: -5 } } }, { type: "nobility", text: "A noble is accused of plotting against you.", left: { text: "Exile the noble.", effects: { religion: 0, people: -10, army: +10, economy: 0 } }, right: { text: "Trust the noble.", effects: { religion: 0, people: +5, army: -15, economy: 0 } } }, { type: "army", text: "A general asks for more power, threatening a coup.", left: { text: "Grant more power.", effects: { religion: 0, people: -10, army: +15, economy: -10 } }, right: { text: "Refuse.", effects: { religion: 0, people: 0, army: -15, economy: 0 } } }, { type: "army", text: "A general offers to train your army for a price.", left: { text: "Pay for training.", effects: { religion: 0, people: 0, army: +20, economy: -15 } }, right: { text: "Refuse.", effects: { religion: 0, people: 0, army: -10, economy: 0 } } }, { type: "clergy", text: "A priest claims a vision: your advisor is a traitor.", left: { text: "Believe the priest.", effects: { religion: +10, people: -10, army: 0, economy: 0 } }, right: { text: "Ignore the claim.", effects: { religion: -10, people: 0, army: 0, economy: 0 } } }, { type: "clergy", text: "The church asks for a secret donation.", left: { text: "Donate in secret.", effects: { religion: +15, people: -5, army: 0, economy: -15 } }, right: { text: "Refuse.", effects: { religion: -10, people: 0, army: 0, economy: 0 } } }, { type: "people", text: "A popular leader is stirring unrest.", left: { text: "Arrest the leader.", effects: { religion: 0, people: -15, army: +10, economy: 0 } }, right: { text: "Let them speak.", effects: { religion: 0, people: +10, army: -10, economy: 0 } } }, { type: "villager", text: "A famine strikes the land.", left: { text: "Open the royal granaries.", effects: { religion: 0, people: +20, army: 0, economy: -20 } }, right: { text: "Do nothing.", effects: { religion: 0, people: -20, army: 0, economy: 0 } } }, { type: "economy", text: "A merchant offers a suspiciously good deal.", left: { text: "Accept the deal.", effects: { religion: 0, people: 0, army: 0, economy: +20 } }, right: { text: "Refuse, too risky.", effects: { religion: 0, people: 0, army: 0, economy: -5 } } }, { type: "heretic", text: "A heretic is spreading dissent.", left: { text: "Punish the heretic.", effects: { religion: +10, people: -10, army: 0, economy: 0 } }, right: { text: "Show mercy.", effects: { religion: -10, people: +10, army: 0, economy: 0 } } }, { type: "disaster", text: "A great fire devastates the capital.", left: { text: "Send aid to the people.", effects: { religion: +5, people: +10, army: 0, economy: -20 } }, right: { text: "Let them rebuild on their own.", effects: { religion: -5, people: -10, army: 0, economy: 0 } } }, { type: "tax", text: "The treasury is low. Raise taxes?", left: { text: "Raise taxes.", effects: { religion: 0, people: -15, army: 0, economy: +20 } }, right: { text: "Keep taxes the same.", effects: { religion: 0, people: 0, army: 0, economy: -10 } } }, { type: "plague", text: "A plague is spreading in the countryside.", left: { text: "Quarantine the villages.", effects: { religion: 0, people: -10, army: 0, economy: -10 } }, right: { text: "Pray for deliverance.", effects: { religion: +10, people: -20, army: 0, economy: 0 } } }, { type: "clergy", text: "A relic is discovered in the kingdom.", left: { text: "Display the relic.", effects: { religion: +15, people: +5, army: 0, economy: -10 } }, right: { text: "Sell the relic.", effects: { religion: -10, people: 0, army: 0, economy: +20 } } }, { type: "bandits", text: "Bandits are raiding the countryside.", left: { text: "Send the army.", effects: { religion: 0, people: 0, army: -10, economy: -5 } }, right: { text: "Offer a reward for their capture.", effects: { religion: 0, people: +5, army: 0, economy: -10 } } }, { type: "tournament", text: "Knights request a royal tournament.", left: { text: "Host the tournament.", effects: { religion: 0, people: +10, army: +10, economy: -15 } }, right: { text: "Deny the request.", effects: { religion: 0, people: -5, army: -5, economy: 0 } } }, { type: "taxrelief", text: "Peasants beg for tax relief.", left: { text: "Grant relief.", effects: { religion: 0, people: +15, army: 0, economy: -15 } }, right: { text: "Refuse.", effects: { religion: 0, people: -10, army: 0, economy: +10 } } }, { type: "palace", text: "A palace cat jumped on the throne, people consider this a holy sign.", left: { text: "Declare it holy.", effects: { religion: +15, people: +10, army: 0, economy: 0 } }, right: { text: "Call it nonsense.", effects: { religion: -10, people: -15, army: 0, economy: 0 } } }]; // Shuffle cards for each game function shuffleCards(arr) { var a = arr.slice(); for (var i = a.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var t = a[i]; a[i] = a[j]; a[j] = t; } return a; } // --- Game State --- var statNames = ['religion', 'people', 'army', 'economy']; // statLabels is now only used for initial UI setup; actual labels are set by setLanguage() // (kept for legacy, but not used for language switching) var statLabels = { religion: 'Religion', people: 'People', army: 'Army', economy: 'Economy' }; var statColors = { religion: 0x6a4cff, people: 0x1abc9c, // Beautiful teal for people army: 0xff4136, economy: 0xffdc00 // Economy stays the same }; var stats = { religion: 50, people: 50, army: 50, economy: 50 }; var statBars = {}; var currentCard = null; var cardIndex = 0; var deck = []; var isDragging = false; var dragStart = { x: 0, y: 0 }; var dragOffset = { x: 0, y: 0 }; var dragThreshold = 200; // px to trigger a choice var cardContainer = null; var reign = 0; // Number of cards survived var cardsAnswered = 0; // Track number of cards answered for year advancement // --- UI Setup --- // Stat icons at top (avoid top left 100x100) var statIconY = 120; var statIconSpacing = 440; var statIconAssets = { religion: { icon: 'statIcon_religion', img: null }, // Will be replaced with image if available people: { icon: 'statIcon_people', img: null }, army: { icon: 'statIcon_army', img: null }, economy: { icon: 'statIcon_economy', img: null } }; // You can replace the icon asset ids above with custom image ids if you have them, e.g. 'priestImage', 'swordsImage', etc. var statIcons = {}; // Store preview rectangles for stat effect preview var statEffectPreviews = {}; for (var i = 0; i < statNames.length; i++) { var stat = statNames[i]; var iconAssetId = statIconAssets[stat].icon; var iconContainer = new Container(); // Icon (fixed, does not change) var fillHeight = 120; var iconWidth = stat === "economy" ? 80 : 120; var icon = iconContainer.attachAsset(iconAssetId, { anchorX: 0.5, anchorY: 0.5, x: 0, y: 0, width: iconWidth, height: fillHeight }); icon.alpha = 1; // Stat label (below icon) var label = new Text2(statLabels[stat], { size: 45, fill: 0xFFFFFF }); label.anchor.set(0.5, 0); label.x = 0; label.y = 90; // Vertical stat bar (same height as icon, thin, fills up/down) var barHeight = fillHeight; // Match icon height var barWidth = 32; var barX = 80; // to the right of the icon var barY = 0; // Bar background var barBg = iconContainer.attachAsset('statBarBg', { anchorX: 0.5, anchorY: 1, x: barX, y: barY + barHeight / 2, width: barWidth, height: barHeight, tint: 0x222222 }); barBg.alpha = 0.5; // Bar fill (colored, height changes) var barFillId = 'statBarFill_' + stat; var barFill = iconContainer.attachAsset(barFillId, { anchorX: 0.5, anchorY: 1, x: barX, y: barY + barHeight / 2, width: barWidth, height: barHeight, tint: statColors[stat] }); barFill.alpha = 1; // --- Stat effect preview rectangle (hidden by default) --- var previewRect = iconContainer.attachAsset('statBarBg', { anchorX: 0.5, anchorY: 0, x: 0, y: 160, width: 24, // even narrower preview height: 36, // taller preview rectangle tint: statColors[stat] }); previewRect.alpha = 0.7; previewRect.visible = false; iconContainer.addChild(previewRect); statEffectPreviews[stat] = previewRect; // Add children in correct order iconContainer.addChild(icon); iconContainer.addChild(label); iconContainer.addChild(barBg); iconContainer.addChild(barFill); iconContainer.x = 350 + i * statIconSpacing; iconContainer.y = statIconY; statIcons[stat] = { container: iconContainer, icon: icon, label: label, barFill: barFill, barBg: barBg, barHeight: barHeight }; game.addChild(iconContainer); } // Reign counter (center top, below stat bars) var reignText = new Text2('Reign: 0', { size: 70, fill: 0xFFFFFF }); reignText.anchor.set(0.5, 0); reignText.x = 2048 / 2; reignText.y = 220; LK.gui.top.addChild(reignText); // Global question text (below stat bars, above card) var questionText = new Text2('', { size: 70, fill: 0xFFFFFF, wordWrap: true, wordWrapWidth: 1400, align: 'center' }); questionText.anchor.set(0.5, 0.5); questionText.x = 2048 / 2; questionText.y = 420; // Just below stat bars and reignText game.addChild(questionText); // --- Reign Year Counter (bottom left) --- var reignYear = 0; // Starting at 0 years var reignYearText = new Text2('0 yıl', { size: 60, fill: 0xffffff }); reignYearText.anchor.set(0, 1); reignYearText.x = 40; reignYearText.y = 2732 - 40; game.addChild(reignYearText); // Add background image (centered, behind everything) var backgroundImage = LK.getAsset('cardShadow', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, width: 2048, height: 2732, alpha: 0.18 }); game.addChild(backgroundImage); // Card container (centered) cardContainer = new Container(); cardContainer.x = 2048 / 2; cardContainer.y = 2732 / 2 + 100; game.addChild(cardContainer); // --- Game Logic --- function startGame() { // Reset stats stats.religion = 50; stats.people = 50; stats.army = 50; stats.economy = 50; reign = 0; reignYear = 0; cardsAnswered = 0; if (selectedLanguage === "tr") { reignYearText.setText('0 yıl'); } else { reignYearText.setText('0 years'); } cardIndex = 0; deck = shuffleCards(cards); updateStatBars(); reignText.setText('Reign: 0'); clearCard(); showNextCard(); } function updateStatBars() { for (var i = 0; i < statNames.length; i++) { var stat = statNames[i]; var val = stats[stat]; if (val < 0) val = 0; if (val > 100) val = 100; // Update vertical bar fill (barFill) var barFill = statIcons[stat].barFill; var barHeight = statIcons[stat].barHeight; barFill.height = barHeight * (val / 100); // anchorY = 1, so y is at the bottom, height shrinks up // Update label if language changed if (statIcons[stat].label) { statIcons[stat].label.setText(languageData[selectedLanguage].statLabels[stat]); } } } function clearCard() { if (currentCard) { currentCard.destroy(); currentCard = null; } } function showNextCard() { clearCard(); if (cardIndex >= deck.length) { // Reshuffle and continue deck = shuffleCards(cards); cardIndex = 0; } var cardData = deck[cardIndex]; var card = new Card(); card.setCard(cardData); card.x = 0; card.y = 0; card.rotation = 0; cardContainer.addChild(card); currentCard = card; isDragging = false; dragStart.x = 0; dragStart.y = 0; dragOffset.x = 0; dragOffset.y = 0; } // Apply effects and check for game over function applyChoice(effects) { // Randomize effect size: 70% normal, 15% small (half), 15% big (double) var effectMultiplier = 1; var rand = Math.random(); if (rand < 0.15) { effectMultiplier = 0.5; // small effect } else if (rand > 0.85) { effectMultiplier = 2; // big effect } // Make the stat bar fill much slower for positive effects (gains), but much faster for negative effects (losses) for (var i = 0; i < statNames.length; i++) { var stat = statNames[i]; var effect = effects[stat] || 0; var appliedEffect = 0; if (effect > 0) { // Gains: only 30% of the effect (very slow gain) appliedEffect = Math.round(effect * effectMultiplier * 0.3); } else if (effect < 0) { // Losses: 100% of the effect (fast loss) appliedEffect = Math.round(effect * effectMultiplier * 1.0); } stats[stat] += appliedEffect; if (stats[stat] > 100) stats[stat] = 100; if (stats[stat] < 0) stats[stat] = 0; } updateStatBars(); reign++; cardsAnswered++; // --- Yıl ilerlemesi: Her 6 soruda bir 1-4 yıl arası yıl ekle --- if (cardsAnswered % 6 === 0) { var yearsToAdd = Math.floor(Math.random() * 4) + 1; // 1-4 yıl arası rastgele reignYear += yearsToAdd; // Update reign year display if (selectedLanguage === "tr") { reignYearText.setText(reignYear + ' yıl'); } else { reignYearText.setText(reignYear + ' years'); } } reignText.setText(languageData[selectedLanguage].reign + reign); // Check for loss (any stat at 0 or 100) - only if it just reached 0 or 100 this turn var fail = false; for (var i = 0; i < statNames.length; i++) { var stat = statNames[i]; // Only trigger fail if the stat was NOT at 0 or 100 before, but is now if (stats[stat] <= 0 && stats[stat] + -(effects[stat] || 0) > 0 || stats[stat] >= 100 && stats[stat] - (effects[stat] || 0) < 100) { fail = stat; break; } } // If fail, flash the screen and end the game (king loses) if (fail) { LK.effects.flashScreen(statColors[fail], 1000); // Clamp the stat to 0 or 100 so it doesn't get stuck out of bounds stats[fail] = stats[fail] <= 0 ? 0 : 100; // Show loss reason text below stat bars, hide card if (currentCard) { currentCard.visible = false; } // Show loss reason in selected language, centered, uppercase, and in stat color var failReasonText = ''; if (selectedLanguage === "tr") { if (fail === "religion") failReasonText = "KAHİLER İSYANA KALKTI";else if (fail === "people") failReasonText = "İNSANLAR İSYANA KALKTI";else if (fail === "army") failReasonText = "ORDU YOK OLDU TAHTAN İNDİRİLDİN";else if (fail === "economy") failReasonText = "HAZİNEDE PARA KALMADI DEVRİLDİN";else failReasonText = "KAYBETTİNİZ!"; } else { if (fail === "religion") failReasonText = "YOU LOST: RELIGION";else if (fail === "people") failReasonText = "YOU LOST: PEOPLE";else if (fail === "army") failReasonText = "YOU LOST: ARMY";else if (fail === "economy") failReasonText = "YOU LOST: ECONOMY";else failReasonText = "YOU LOST!"; } questionText.setText(failReasonText); questionText.anchor.set(0.5, 0.5); questionText.x = 2048 / 2; questionText.y = 2732 / 2; questionText.style = Object.assign({}, questionText.style, { fill: statColors[fail] || 0xffffff, fontWeight: 'bold' }); questionText.visible = true; // Delay Game Over popup by 2.5s (2500ms) LK.setTimeout(function () { LK.showGameOver(); }, 2500); return; } // Next card cardIndex++; showNextCard(); } // --- Card Dragging and Swiping --- function handleCardMove(x, y, obj) { if (!currentCard) return; if (!isDragging) return; // Convert to local cardContainer coordinates var local = cardContainer.toLocal({ x: x, y: y }); var dx = local.x - dragStart.x; var dy = local.y - dragStart.y; dragOffset.x = dx; dragOffset.y = dy; // Play Cards sound when player drags the card in any direction, but only once per drag if (Math.abs(dx) > 5 || Math.abs(dy) > 5) { if (!handleCardMove._hasPlayedSound) { var cardsSound = LK.getSound('Cards'); if (cardsSound) cardsSound.play(); handleCardMove._hasPlayedSound = true; } } // Move card with finger (horizontal only, no vertical movement) currentCard.x = dx; // Lock Y to 0 (centered) currentCard.y = 0; // Allow only ±45° rotation (in radians: ±Math.PI/4) var maxAngle = Math.PI / 4; var rot = dx / 1200 * maxAngle * 2; // scale so dx=±600 gives ±45° if (rot > maxAngle) rot = maxAngle; if (rot < -maxAngle) rot = -maxAngle; currentCard.rotation = rot; // Optionally, highlight left/right text as user drags var leftAlpha = Math.max(0.5, 1 - Math.max(0, dx) / 300); var rightAlpha = Math.max(0.5, 1 + Math.min(0, dx) / 300); currentCard.children[2].alpha = leftAlpha; // leftText currentCard.children[3].alpha = rightAlpha; // rightText // --- Stat effect preview rectangles logic --- if (currentCard && currentCard.cardData) { var leftEffects = currentCard.cardData.left.effects; var rightEffects = currentCard.cardData.right.effects; // Show preview if dragging left or right var showPreview = Math.abs(dx) > 30; for (var i = 0; i < statNames.length; i++) { var stat = statNames[i]; var preview = statEffectPreviews[stat]; if (!preview) continue; // Determine if this stat will be affected by the current direction var t = Math.max(-1, Math.min(1, dx / 300)); var effect = 0; if (t < 0) { effect = leftEffects[stat] || 0; } else if (t > 0) { effect = rightEffects[stat] || 0; } // Only show preview if this stat will be affected (effect !== 0) and showPreview is true if (showPreview && effect !== 0) { preview.visible = true; // If not moving much, fade out preview if (Math.abs(dx) < 60) { preview.alpha = 0.3; } else { preview.alpha = 0.7; } // Set color and text preview.tint = statColors[stat]; // Set width based on effect size (positive = right, negative = left) // Make preview even less wide: base 24, max 36 var absEffect = Math.abs(effect); // Determine if this would be a "big" effect (multiplier=2) for this stat // Simulate the effectMultiplier logic: 15% chance for big effect, but for preview, show big if abs(effect) >= 15 // Instead, let's check if the effect for this stat is the max among all stats for this choice and is at least 10 var isBigEffect = false; if (currentCard && currentCard.cardData) { var effectsObj = t < 0 ? leftEffects : rightEffects; var maxAbs = 0; for (var si = 0; si < statNames.length; si++) { var e = Math.abs(effectsObj[statNames[si]] || 0); if (e > maxAbs) maxAbs = e; } // If this stat's effect is the max and at least 10, consider it "big" if (absEffect === maxAbs && absEffect >= 10) isBigEffect = true; } if (isBigEffect) { preview.width = 36 + Math.min(18, absEffect * 5); // wider for big preview.height = 54; // taller for big } else { preview.width = 24 + Math.min(12, absEffect * 4); preview.height = 36; } // Always center the preview rectangle under the stat icon preview.x = 0; // Do not show any plus/minus or value, only the rectangle itself if (preview._text) { preview._text.setText(''); preview._text.visible = false; } } else { preview.visible = false; } } } else { // Hide all previews if no card for (var i = 0; i < statNames.length; i++) { var preview = statEffectPreviews[statNames[i]]; if (preview) preview.visible = false; } } } function handleCardUp(x, y, obj) { if (!currentCard) return; if (!isDragging) return; isDragging = false; // Reset Cards sound play flag at drag end handleCardMove._hasPlayedSound = false; // Hide all stat effect previews for (var i = 0; i < statNames.length; i++) { var preview = statEffectPreviews[statNames[i]]; if (preview) preview.visible = false; } var dx = dragOffset.x; var direction = null; if (dx < -dragThreshold) direction = 'left'; if (dx > dragThreshold) direction = 'right'; if (direction) { // Animate card fully off screen in the swipe direction (horizontal only, no vertical movement) var targetX = direction === 'left' ? -2048 : 2048; var targetRot = direction === 'left' ? -Math.PI / 4 : Math.PI / 4; tween(currentCard, { x: targetX, y: 0, rotation: targetRot }, { duration: 350, easing: tween.cubicOut, onFinish: function onFinish() { var effects = direction === 'left' ? currentCard.cardData.left.effects : currentCard.cardData.right.effects; applyChoice(effects); } }); } else { // Animate card back to center currentCard.animateToCenter(function () { // Reset alphas if (currentCard) { currentCard.children[2].alpha = 1; currentCard.children[3].alpha = 1; } }); } } function handleCardDown(x, y, obj) { if (!currentCard) return; // Always start drag, regardless of where the card is touched var local = cardContainer.toLocal({ x: x, y: y }); isDragging = true; dragStart.x = local.x - currentCard.x; dragStart.y = local.y - currentCard.y; dragOffset.x = 0; dragOffset.y = 0; // Reset Cards sound play flag at drag start handleCardMove._hasPlayedSound = false; } // --- Game Event Handlers --- game.move = function (x, y, obj) { handleCardMove(x, y, obj); }; game.down = function (x, y, obj) { handleCardDown(x, y, obj); }; game.up = function (x, y, obj) { handleCardUp(x, y, obj); }; // On game over, restart game after popup LK.on('gameover', function () { // Wait for LK to reset, then start new game LK.setTimeout(function () { startGame(); }, 100); }); // On you win (not used in MVP, but for future expansion) LK.on('youwin', function () { LK.setTimeout(function () { startGame(); }, 100); }); // Main Menu UI --- var menuContainer = new Container(); menuContainer.x = 2048 / 2; menuContainer.y = 2732 / 2; game.addChild(menuContainer); // Add SatarMenu image to menuContainer, filling the entire screen and hiding cardShadow // Remove cardShadow if present in menuContainer for (var i = menuContainer.children.length - 1; i >= 0; i--) { var child = menuContainer.children[i]; if (child.assetId === 'cardShadow') { menuContainer.removeChild(child); } } // Add SatarMenu image, full screen, centered var satarMenuImg = LK.getAsset('SatarMenu', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 0, width: 2048, height: 2732 }); menuContainer.addChildAt(satarMenuImg, 0); // Language state var languages = [{ code: 'en', label: 'English' }, { code: 'tr', label: 'Türkçe' }]; var selectedLanguage = 'en'; // Language button UI var langButtons = []; for (var i = 0; i < languages.length; i++) { var lang = languages[i]; var btn = new Container(); var btnBg = btn.attachAsset('statBarBg', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 0, width: 500, height: 120 }); btnBg.alpha = 0.7; var btnText = new Text2(lang.label, { size: 60, fill: 0xffffff }); btnText.anchor.set(0.5, 0.5); btnText.x = 0; btnText.y = 0; btn.addChild(btnText); btn.x = (i - 0.5) * 600; btn.y = -200; btn.interactive = true; btn.buttonMode = true; (function (code, idx) { btn.down = function (x, y, obj) { selectedLanguage = code; var butonSound = LK.getSound('Buton'); if (butonSound) butonSound.play(); for (var j = 0; j < langButtons.length; j++) { langButtons[j].children[0].alpha = j === idx ? 1 : 0.7; } }; })(lang.code, i); menuContainer.addChild(btn); langButtons.push(btn); } langButtons[0].children[0].alpha = 1; // Default English selected // Start button var startBtn = new Container(); var startBtnBg = startBtn.attachAsset('statBarBg', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 0, width: 600, height: 140 }); startBtnBg.alpha = 1; var startBtnText = new Text2('Start', { size: 70, fill: 0x222222 }); startBtnText.anchor.set(0.5, 0.5); startBtnText.x = 0; startBtnText.y = 0; startBtn.addChild(startBtnText); startBtn.x = 0; startBtn.y = 200; startBtn.interactive = true; startBtn.buttonMode = true; startBtn.down = function (x, y, obj) { var butonSound = LK.getSound('Buton'); if (butonSound) butonSound.play(); menuContainer.visible = false; // Set language for game setLanguage(selectedLanguage); LK.playMusic('Start1'); startGame(); }; menuContainer.addChild(startBtn); // Max years hint text (below start button) var maxYears = storage.maxYears || 0; var maxYearsText = new Text2('En uzun hükmün: ' + maxYears + ' yıl', { size: 50, fill: 0xcccccc }); maxYearsText.anchor.set(0.5, 0); maxYearsText.x = 0; maxYearsText.y = 320; menuContainer.addChild(maxYearsText); // Hide game UI until menu is gone for (var i = 0; i < statNames.length; i++) { statIcons[statNames[i]].container.visible = false; } reignText.visible = false; cardContainer.visible = false; // Show/hide game UI on menu/game function setGameUIVisible(visible) { for (var i = 0; i < statNames.length; i++) { statIcons[statNames[i]].container.visible = visible; } reignText.visible = visible; cardContainer.visible = visible; // Hide cardShadow background when menu is visible if (typeof backgroundImage !== "undefined" && backgroundImage) { backgroundImage.visible = visible; } } // Language data // Merge both English and Turkish cards into both languages' decks for full bilingual play var turkishCards = [{ type: "soylu", text: "Komşu bir krallık evlilik ittifakı istiyor.", left: { text: "İttifakı kabul et.", effects: { religion: +5, people: +10, army: -5, economy: +10 } }, right: { text: "Teklifi reddet.", effects: { religion: -5, people: -10, army: +5, economy: -10 } } }, { type: "dinadami", text: "Kilise yeni bir katedral için daha fazla altın talep ediyor.", left: { text: "Katedrali finanse et.", effects: { religion: +15, people: -5, army: 0, economy: -20 } }, right: { text: "Talebi reddet.", effects: { religion: -15, people: +5, army: 0, economy: +10 } } }, { type: "asker", text: "Ordu daha fazla asker almak istiyor.", left: { text: "Alımları onayla.", effects: { religion: 0, people: -10, army: +20, economy: -15 } }, right: { text: "Talebi reddet.", effects: { religion: 0, people: +5, army: -15, economy: +5 } } }, { type: "koylu", text: "Ülkede kıtlık baş gösterdi.", left: { text: "Kraliyet ambarlarını aç.", effects: { religion: 0, people: +20, army: 0, economy: -20 } }, right: { text: "Hiçbir şey yapma.", effects: { religion: 0, people: -20, army: 0, economy: 0 } } }, { type: "tuccar", text: "Tüccarlar kârlı bir ticaret anlaşması teklif ediyor.", left: { text: "Anlaşmayı kabul et.", effects: { religion: 0, people: +5, army: 0, economy: +20 } }, right: { text: "Teklifi reddet.", effects: { religion: 0, people: -5, army: 0, economy: -10 } } }, { type: "sapkin", text: "Bir sapkın huzursuzluk yayıyor.", left: { text: "Sapkını cezalandır.", effects: { religion: +10, people: -10, army: 0, economy: 0 } }, right: { text: "Merhamet göster.", effects: { religion: -10, people: +10, army: 0, economy: 0 } } }, { type: "asker", text: "Ordu daha iyi ekipman istiyor.", left: { text: "Ekipmana yatırım yap.", effects: { religion: 0, people: 0, army: +15, economy: -15 } }, right: { text: "Reddet.", effects: { religion: 0, people: 0, army: -10, economy: +5 } } }, { type: "koylu", text: "Morali yükseltmek için bir festival önerildi.", left: { text: "Festivali düzenle.", effects: { religion: +5, people: +15, army: 0, economy: -10 } }, right: { text: "Reddet.", effects: { religion: -5, people: -10, army: 0, economy: +5 } } }, { type: "saray", text: "Saray kedisi tahta zıpladı, halk bunu kutsal işaret sayıyor.", left: { text: "Kutsal ilan et.", effects: { religion: +15, people: +10, army: 0, economy: 0 } }, right: { text: "Saçmalık de.", effects: { religion: -10, people: -15, army: 0, economy: 0 } } } // ... (other Turkish cards from original code, omitted for brevity) ]; var englishCards = cards.slice(); // All original English cards // Merge both sets for both languages var languageData = { en: { statLabels: { religion: 'Religion', people: 'People', army: 'Army', economy: 'Economy' }, reign: 'Reign: ', start: 'Start', cards: cards // Use original English cards }, tr: { statLabels: { religion: 'Din', people: 'Halk', army: 'Ordu', economy: 'Ekonomi' }, reign: 'Saltanat: ', start: 'Başla', cards: [{ type: "soylu", text: "Güvenilir bir soylu hazineyi yönetmesine izin verirsen hazineyi ikiye katlayacağını teklif ediyor.", left: { text: "Teklifini kabul et.", effects: { religion: 0, people: -10, army: -10, economy: +25 } }, right: { text: "Reddet, kontrolü elinde tut.", effects: { religion: 0, people: 0, army: 0, economy: -5 } } }, { type: "soylu", text: "Bir soylu sana karşı komplo kurduğu suçuyla itham ediliyor.", left: { text: "Soyluyu sürgün et.", effects: { religion: 0, people: -10, army: +10, economy: 0 } }, right: { text: "Soyluya güven.", effects: { religion: 0, people: +5, army: -15, economy: 0 } } }, { type: "ordu", text: "Bir general daha fazla güç istiyor, darbe tehdidinde bulunuyor.", left: { text: "Daha fazla güç ver.", effects: { religion: 0, people: -10, army: +15, economy: -10 } }, right: { text: "Reddet.", effects: { religion: 0, people: 0, army: -15, economy: 0 } } }, { type: "ordu", text: "Bir general ordunu bir bedel karşılığında eğitmeyi teklif ediyor.", left: { text: "Eğitim için ödeme yap.", effects: { religion: 0, people: 0, army: +20, economy: -15 } }, right: { text: "Reddet.", effects: { religion: 0, people: 0, army: -10, economy: 0 } } }, { type: "din", text: "Bir rahip bir vizyon gördüğünü iddia ediyor: danışmanın bir hain.", left: { text: "Rahibe inan.", effects: { religion: +10, people: -10, army: 0, economy: 0 } }, right: { text: "İddiayı görmezden gel.", effects: { religion: -10, people: 0, army: 0, economy: 0 } } }, { type: "din", text: "Kilise gizli bir bağış istiyor.", left: { text: "Gizlice bağış yap.", effects: { religion: +15, people: -5, army: 0, economy: -15 } }, right: { text: "Reddet.", effects: { religion: -10, people: 0, army: 0, economy: 0 } } }, { type: "halk", text: "Popüler bir lider huzursuzluk çıkarıyor.", left: { text: "Lideri tutuklat.", effects: { religion: 0, people: -15, army: +10, economy: 0 } }, right: { text: "Konuşmasına izin ver.", effects: { religion: 0, people: +10, army: -10, economy: 0 } } }, { type: "köylü", text: "Ülkeye kıtlık vurdu.", left: { text: "Kraliyet ambarlarını aç.", effects: { religion: 0, people: +20, army: 0, economy: -20 } }, right: { text: "Hiçbir şey yapma.", effects: { religion: 0, people: -20, army: 0, economy: 0 } } }, { type: "ekonomi", text: "Bir tüccar şüpheli derecede iyi bir anlaşma teklif ediyor.", left: { text: "Anlaşmayı kabul et.", effects: { religion: 0, people: 0, army: 0, economy: +20 } }, right: { text: "Reddet, çok riskli.", effects: { religion: 0, people: 0, army: 0, economy: -5 } } }, { type: "sapkın", text: "Bir sapkın huzursuzluk yayıyor.", left: { text: "Sapkını cezalandır.", effects: { religion: +10, people: -10, army: 0, economy: 0 } }, right: { text: "Merhamet göster.", effects: { religion: -10, people: +10, army: 0, economy: 0 } } }, { type: "felaket", text: "Büyük bir yangın başkenti harap ediyor.", left: { text: "Halka yardım gönder.", effects: { religion: +5, people: +10, army: 0, economy: -20 } }, right: { text: "Kendi başlarına yeniden inşa etsinler.", effects: { religion: -5, people: -10, army: 0, economy: 0 } } }, { type: "vergi", text: "Hazine azaldı. Vergileri artır?", left: { text: "Vergileri artır.", effects: { religion: 0, people: -15, army: 0, economy: +20 } }, right: { text: "Vergileri aynı tut.", effects: { religion: 0, people: 0, army: 0, economy: -10 } } }, { type: "veba", text: "Kırsal kesimlerde veba yayılıyor.", left: { text: "Köyleri karantinaya al.", effects: { religion: 0, people: -10, army: 0, economy: -10 } }, right: { text: "Kurtuluş için dua et.", effects: { religion: +10, people: -20, army: 0, economy: 0 } } }, { type: "din", text: "Krallıkta bir kutsal eser keşfedildi.", left: { text: "Kutsal eseri sergile.", effects: { religion: +15, people: +5, army: 0, economy: -10 } }, right: { text: "Kutsal eseri sat.", effects: { religion: -10, people: 0, army: 0, economy: +20 } } }, { type: "eşkıya", text: "Eşkıyalar kırsal kesimleri yağmalıyor.", left: { text: "Orduyu gönder.", effects: { religion: 0, people: 0, army: -10, economy: -5 } }, right: { text: "Yakalanmaları için ödül koy.", effects: { religion: 0, people: +5, army: 0, economy: -10 } } }, { type: "turnuva", text: "Şövalyeler kraliyet turnuvası istiyor.", left: { text: "Turnuvayı düzenle.", effects: { religion: 0, people: +10, army: +10, economy: -15 } }, right: { text: "Talebi reddet.", effects: { religion: 0, people: -5, army: -5, economy: 0 } } }, { type: "vergimuafiyeti", text: "Köylüler vergi muafiyeti için yalvarıyor.", left: { text: "Muafiyet tanı.", effects: { religion: 0, people: +15, army: 0, economy: -15 } }, right: { text: "Reddet.", effects: { religion: 0, people: -10, army: 0, economy: +10 } } }, { type: "saray", text: "Saray kedisi tahta zıpladı, halk bunu kutsal işaret sayıyor.", left: { text: "Kutsal ilan et.", effects: { religion: +15, people: +10, army: 0, economy: 0 } }, right: { text: "Saçmalık de.", effects: { religion: -10, people: -15, army: 0, economy: 0 } } }] } }; // Set language and update UI function setLanguage(lang) { selectedLanguage = lang; // Update stat labels var labels = languageData[lang].statLabels; for (var i = 0; i < statNames.length; i++) { if (statIcons[statNames[i]] && statIcons[statNames[i]].label) { statIcons[statNames[i]].label.setText(labels[statNames[i]]); } } // Update reign text reignText.setText(languageData[lang].reign + reign); // Update reign year text if (lang === "tr") { reignYearText.setText(reignYear + ' yıl'); } else { reignYearText.setText(reignYear + ' years'); } // Update start button text startBtnText.setText(languageData[lang].start); // Update max years hint text var maxYears = storage.maxYears || 0; if (lang === "tr") { maxYearsText.setText('En uzun hükmün: ' + maxYears + ' yıl'); } else { maxYearsText.setText('Longest reign: ' + maxYears + ' years'); } } // Override startGame to use selected language startGame = function startGame() { setGameUIVisible(true); menuContainer.visible = false; // Use language-specific cards deck = shuffleCards(languageData[selectedLanguage].cards); cardIndex = 0; // Update stat labels and reign text setLanguage(selectedLanguage); // Reset stats stats.religion = 50; stats.people = 50; stats.army = 50; stats.economy = 50; reign = 0; reignYear = 0; cardsAnswered = 0; updateStatBars(); reignText.setText(languageData[selectedLanguage].reign + reign); clearCard(); showNextCard(); }; // On game over, show menu again LK.on('gameover', function () { // Update max years record if new record was set var currentMaxYears = storage.maxYears || 0; if (reignYear > currentMaxYears) { storage.maxYears = reignYear; } // Update hint text var maxYears = storage.maxYears || 0; if (selectedLanguage === "tr") { maxYearsText.setText('En uzun hükmün: ' + maxYears + ' yıl'); } else { maxYearsText.setText('Longest reign: ' + maxYears + ' years'); } setGameUIVisible(false); menuContainer.visible = true; // Reset language selection UI for (var j = 0; j < langButtons.length; j++) { langButtons[j].children[0].alpha = languages[j].code === selectedLanguage ? 1 : 0.7; } }); // On you win, show menu again (future expansion) LK.on('youwin', function () { setGameUIVisible(false); menuContainer.visible = true; for (var j = 0; j < langButtons.length; j++) { langButtons[j].children[0].alpha = languages[j].code === selectedLanguage ? 1 : 0.7; } }); // Show menu at start setGameUIVisible(false); menuContainer.visible = true; LK.playMusic('Menu1');
===================================================================
--- original.js
+++ change.js
@@ -1197,9 +1197,9 @@
startGame();
};
menuContainer.addChild(startBtn);
// Max years hint text (below start button)
-var maxYears = storage.get('maxYears') || 0;
+var maxYears = storage.maxYears || 0;
var maxYearsText = new Text2('En uzun hükmün: ' + maxYears + ' yıl', {
size: 50,
fill: 0xcccccc
});
@@ -1843,9 +1843,9 @@
}
// Update start button text
startBtnText.setText(languageData[lang].start);
// Update max years hint text
- var maxYears = storage.get('maxYears') || 0;
+ var maxYears = storage.maxYears || 0;
if (lang === "tr") {
maxYearsText.setText('En uzun hükmün: ' + maxYears + ' yıl');
} else {
maxYearsText.setText('Longest reign: ' + maxYears + ' years');
@@ -1875,14 +1875,14 @@
};
// On game over, show menu again
LK.on('gameover', function () {
// Update max years record if new record was set
- var currentMaxYears = storage.get('maxYears') || 0;
+ var currentMaxYears = storage.maxYears || 0;
if (reignYear > currentMaxYears) {
- storage.set('maxYears', reignYear);
+ storage.maxYears = reignYear;
}
// Update hint text
- var maxYears = storage.get('maxYears') || 0;
+ var maxYears = storage.maxYears || 0;
if (selectedLanguage === "tr") {
maxYearsText.setText('En uzun hükmün: ' + maxYears + ' yıl');
} else {
maxYearsText.setText('Longest reign: ' + maxYears + ' years');
bir din adamı simgesi beyaz olsun içi oyuncun kararına göre dolub boşalacak her hangi bir terinde hiç bir dinle alakalı din simvolu bulunmasın. In-Game asset. 2d. High contrast. No shadows
2 çapraz bir birne girmiş kılıç simgesi olacak beyaz olsun. In-Game asset. 2d. High contrast. No shadows
3 tane insan profil resmi 1 tane önde 2 arkada kalıyor beyaz olsun. In-Game asset. 2d. High contrast. No shadows
sadece beyaz rengte olan basit dolar simgesi. In-Game asset. 2d. High contrast. No shadows
Gerçek hayata yakın bir menü arka planı istiyorum. Yeşil doğa, çimenlikler ve taş yollar olsun. Uzakta bir kale ya da yapı görünsün. Gökyüzü mavi ve açık olsun, hava gündüz gibi. Renkler doğal tonlarda olsun, altın veya süslü detaylar olmasın. Arka plan sade ve huzurlu bir ortam sunsun, ortası menü için boş ve hafif koyu olabilir.. In-Game asset. 2d. High contrast. No shadows
Krallık oyunu başladıktan sonra kullanılacak, arka planda bir kale olan ama çok karanlık veya kasvetli görünmeyen, hafif sisli ve tarihi atmosferli bir sahne. Gökyüzü açık ya da hafif bulutlu, renkler doğal ve dengeli olmalı.”
dikdörtgen olsun içi notsarjik rengde olsun buton olarak kullanılacak genişliği uzun hiç bir yazı içermesin. In-Game asset. 2d. High contrast. No shadows
sade 1 tane kraliyet kalesi 2 tane gözcü yeri olsun beyaz renkte olsun. In-Game asset. 2d. High contrast. No shadows