User prompt
Oyundaki fiyatlandırma hatalarını düzelt
User prompt
Herkes Level 1'den başlayarak Artı 1 ile başlıyor
User prompt
Anladım, yükseltmelerin fiyatlandırma ve kazanç mekaniğinde bir tutarsızlık olduğunu ve daha mantıklı bir fiyatlandırma istediğinizi belirtiyorsunuz. Şu anki durumda: * "1x Yükseltme" (Power Click) tekil puan kazandırıyor (örn. +1 puan). * "5x Yükseltme" (Super Click) ve "10x Yükseltme" (Mega Click) ise mevcut tıklama değerini 5 kat ve 10 kat artırıyor. * Maliyetleri de bu katlara göre orantısız pahalı (örn. 5x yükseltme 5 kat pahalı). Bu durumu düzeltmek ve daha düzgün, orantılı bir fiyatlandırma yapmak için yapay zekaya şu talimatı verebilirsiniz: "Tıklama oyunundaki yükseltme sistemi için aşağıdaki fiyatlandırma ve etki mantığını uygula: * '1x Yükseltme' (Power Click): * Bu yükseltme, her satın alındığında tıklama başına kazancınızı sabit bir miktar artıracak (örn: ilk seviyede +1 puan, sonraki seviyelerde +2, +3 gibi doğrusal veya hafif artan bir miktar). * Maliyeti, yükseltme fiyatlandırma kuralına göre artacak (ilk seviye 50 puan, sonraki seviyeler 1.15x, 1.22x, 1.30x kat artış). * '5x Yükseltme' (Super Click): * Bu yükseltme, her satın alındığında mevcut toplam tıklama başına kazancınızı 5 ile çarpacak. Yani, zaten 10 puan kazanıyorsanız, bu yükseltmeyi aldığınızda tıklama başına kazancınız 50 puan olacak. * Maliyeti, '1x Yükseltme'nin maliyetinden orantılı olarak daha yüksek olacak, ancak sadece katlandığı kadar değil. Başlangıç maliyeti, 1x yükseltmenin başlangıç maliyetinin yaklaşık 5-7 katı civarında olabilir. Seviye ilerledikçe, 1x'e göre daha hızlı artmalı. * '10x Yükseltme' (Mega Click): * Bu yükseltme, her satın alındığında mevcut toplam tıklama başına kazancınızı 10 ile çarpacak. * Maliyeti, '5x Yükseltme'nin maliyetinden orantılı olarak daha yüksek olacak. Başlangıç maliyeti, 5x yükseltmenin başlangıç maliyetinin yaklaşık 4-6 katı civarında olabilir ve seviye ilerledikçe diğerlerinden daha hızlı artmalı. Özetle: 1x Yükseltme puan artırırken, 5x ve 10x Yükseltmeler çarpan görevi görecek. Maliyetler ise kazanç oranlarıyla orantılı ama dengeli bir artış gösterecek, oyuncunun büyük çarpanlara ulaşmasının zaman almasını sağlayacak, ancak ulaşılmaz kılmayacak. Mevcut üstel fiyatlandırma kuralları her yükseltme için kendi taban maliyeti üzerinden uygulanacak."
User prompt
Anladım, yükseltmelerin fiyatlandırma ve kazanç mekaniğinde bir tutarsızlık olduğunu ve daha mantıklı bir fiyatlandırma istediğinizi belirtiyorsunuz. Şu anki durumda: * "1x Yükseltme" (Power Click) tekil puan kazandırıyor (örn. +1 puan). * "5x Yükseltme" (Super Click) ve "10x Yükseltme" (Mega Click) ise mevcut tıklama değerini 5 kat ve 10 kat artırıyor. * Maliyetleri de bu katlara göre orantısız pahalı (örn. 5x yükseltme 5 kat pahalı). Bu durumu düzeltmek ve daha düzgün, orantılı bir fiyatlandırma yapmak için yapay zekaya şu talimatı verebilirsiniz: "Tıklama oyunundaki yükseltme sistemi için aşağıdaki fiyatlandırma ve etki mantığını uygula: * '1x Yükseltme' (Power Click): * Bu yükseltme, her satın alındığında tıklama başına kazancınızı sabit bir miktar artıracak (örn: ilk seviyede +1 puan, sonraki seviyelerde +2, +3 gibi doğrusal veya hafif artan bir miktar). * Maliyeti, yükseltme fiyatlandırma kuralına göre artacak (ilk seviye 50 puan, sonraki seviyeler 1.15x, 1.22x, 1.30x kat artış). * '5x Yükseltme' (Super Click): * Bu yükseltme, her satın alındığında mevcut toplam tıklama başına kazancınızı 5 ile çarpacak. Yani, zaten 10 puan kazanıyorsanız, bu yükseltmeyi aldığınızda tıklama başına kazancınız 50 puan olacak. * Maliyeti, '1x Yükseltme'nin maliyetinden orantılı olarak daha yüksek olacak, ancak sadece katlandığı kadar değil. Başlangıç maliyeti, 1x yükseltmenin başlangıç maliyetinin yaklaşık 5-7 katı civarında olabilir. Seviye ilerledikçe, 1x'e göre daha hızlı artmalı. * '10x Yükseltme' (Mega Click): * Bu yükseltme, her satın alındığında mevcut toplam tıklama başına kazancınızı 10 ile çarpacak. * Maliyeti, '5x Yükseltme'nin maliyetinden orantılı olarak daha yüksek olacak. Başlangıç maliyeti, 5x yükseltmenin başlangıç maliyetinin yaklaşık 4-6 katı civarında olabilir ve seviye ilerledikçe diğerlerinden daha hızlı artmalı. Özetle: 1x Yükseltme puan artırırken, 5x ve 10x Yükseltmeler çarpan görevi görecek. Maliyetler ise kazanç oranlarıyla orantılı ama dengeli bir artış gösterecek, oyuncunun büyük çarpanlara ulaşmasının zaman almasını sağlayacak, ancak ulaşılmaz kılmayacak. Mevcut üstel fiyatlandırma kuralları her yükseltme için kendi taban maliyeti üzerinden uygulanacak."
User prompt
1x yükseltme, 1x yükseltmiyor, yani bir kat artı bir gibi yükseltmiyor. Aynı şekilde 5x ve 10x de.
User prompt
Yükseltmelerde hata var 1x değil daha fazla yükseltiyor Yani artı bir yerine daha fazla 5x'de 5 artı yerine daha fazla yükseltiyor
User prompt
Yükseltmelerin hepsi ortak level. Mesela biri bir level ise diğeri de bir level. Biri iki level ise diğeri de iki level.
User prompt
3 yüksek önde level ortak olması lazım
User prompt
Oyunu hiç bozmadan hataları düzelt.
User prompt
hepsi ortak olsun mesela 1x yükselttiğimizde 2 oluyor 5x te de 2 level gözüksün 10x te de 2 level gözüksün gibi ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Oyunda topladığımız görevler onları da kaydet onları da silinmesin. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
görevler kısmında aynı stilde yani benzer şekilde olan görevler var onları tek bir görev haline getir ve level atlattığımızda yani görevi yaptığımızda ikinci
User prompt
görevlerdeki yazıları ve tuşları sola çek.
User prompt
6-6 olan görevleri 2 tane yan yana olacak şekilde öyle 6-6 sıralı ve düğmeler birbirine girmesin. Yani ödülü topla gibi şeyler birbirine girmesin.
User prompt
Tıkladığımızda çıkan animasyon yani artı iki animasyonu tuşun ortasında olması gerekiyor, sol üstte değil. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Oyunun kaydetmesiyle ilgili hataları düzelt. Oyundan çık gir yapınca oyun kaydetsin. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Level yükseltme ile ilgili hataları düzelt
User prompt
Dili değiştirdiğimizde görevler kısmındaki dil de değişsin.
User prompt
Topladığımız puanın yazdığı yazının üstünde dil seçeneği olsun. Kare bir kutu olsun. Ona tıkladığımızda ya İngilizce ya da Türkçe olsun.
User prompt
Görev yazılarını biraz sağa çek.
User prompt
görev sistemindeki yazıları düzelt
User prompt
Oyuna ilk başladığımızda 17 tıklama gücü ile başlıyoruz bu 1 ile başlaması gerekiyor. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
oyuna ilk başladığımızda tüm leveller 1 görevler tamamlanmamış herşey sıfır baştan başlamamız gerekiyor ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
hataları düzelt
User prompt
Yükseltme tuşunu biraz daha sağa çek.
/**** * Plugins ****/ var storage = LK.import("@upit/storage.v1"); var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var QuestItem = Container.expand(function (questData) { var self = Container.call(this); var titleText = new Text2('', { size: 50, fill: 0xFFFFFF }); titleText.anchor.set(0, 0.5); titleText.x = 20; self.addChild(titleText); var progressText = new Text2('', { size: 40, fill: 0xAAAAAA }); progressText.anchor.set(0, 0.5); progressText.x = 20; progressText.y = 60; self.addChild(progressText); var rewardText = new Text2('', { size: 35, fill: 0xFFFF00 }); rewardText.anchor.set(0, 0.5); rewardText.x = 20; rewardText.y = 100; self.addChild(rewardText); self.collectButton = new Container(); var collectGraphics = self.collectButton.attachAsset('collectButton', { anchorX: 0.5, anchorY: 0.5 }); self.collectText = new Text2(translations[currentLanguage].collect, { size: 30, fill: 0xFFFFFF }); self.collectText.anchor.set(0.5, 0.5); self.collectButton.addChild(self.collectText); self.collectButton.x = 520; self.collectButton.y = 50; self.addChild(self.collectButton); self.questData = questData; self.updateDisplay = function () { // Use translated quest name if available var questName = self.questData.nameKey && translations[currentLanguage].questNames[self.questData.nameKey] ? translations[currentLanguage].questNames[self.questData.nameKey] : self.questData.name; // Add level indicator for progressive quests if (self.questData.isProgressive) { var levelText = ' (Seviye ' + (self.questData.currentLevel + 1) + ')'; if (currentLanguage === 'en') { levelText = ' (Level ' + (self.questData.currentLevel + 1) + ')'; } questName += levelText; } titleText.setText(questName); var current = getCurrentProgress(self.questData); var target = self.questData.target; if (self.questData.completed && !self.questData.collected) { progressText.setText(translations[currentLanguage].completed); progressText.fill = "#00ff00"; self.collectButton.visible = true; } else if (self.questData.collected) { progressText.setText(translations[currentLanguage].collected); progressText.fill = "#888888"; self.collectButton.visible = false; } else { progressText.setText(formatNumber(current) + ' / ' + formatNumber(target)); progressText.fill = "#aaaaaa"; self.collectButton.visible = false; } rewardText.setText(translations[currentLanguage].reward + ': +' + formatNumber(self.questData.reward) + ' ' + translations[currentLanguage].points.toLowerCase()); if (self.collectText) { self.collectText.setText(translations[currentLanguage].collect); } }; self.collectButton.down = function (x, y, obj) { if (self.questData.completed && !self.questData.collected) { self.questData.collected = true; points += self.questData.reward; LK.getSound('questComplete').play(); updatePointsDisplay(); // Handle progressive quest advancement if (self.questData.isProgressive && self.questData.questType) { var template = questTemplates[self.questData.questType]; if (template && template.levels) { var nextLevel = self.questData.currentLevel + 1; if (nextLevel < template.levels.length && template.levels[nextLevel]) { // Advance to next level self.questData.currentLevel = nextLevel; self.questData.target = template.levels[nextLevel].target; self.questData.reward = template.levels[nextLevel].reward; self.questData.nameKey = template.levels[nextLevel].nameKey; self.questData.completed = false; self.questData.collected = false; } } } self.updateDisplay(); saveGame(); } }; return self; }); var UpgradeButton = Container.expand(function (upgradeData) { var self = Container.call(this); // Create upgrade text labels (no background) var titleText = new Text2('', { size: 50, fill: 0xFFFFFF }); titleText.anchor.set(0, 0.5); titleText.x = -350; self.addChild(titleText); var costText = new Text2('', { size: 40, fill: 0xFFFF00 }); costText.anchor.set(0, 0.5); costText.x = -350; costText.y = 50; self.addChild(costText); // Create small square upgrade button logo var buttonLogo = self.attachAsset('upgradeButtonLogo', { anchorX: 0.5, anchorY: 0.5, x: 550, y: 25 }); var logoText = new Text2('▲', { size: 40, fill: 0xFFFFFF }); logoText.anchor.set(0.5, 0.5); logoText.x = 550; logoText.y = 25; self.addChild(logoText); self.upgradeData = upgradeData; self.updateDisplay = function () { titleText.setText(self.upgradeData.name + ' (' + translations[currentLanguage].level + self.upgradeData.level + ')'); costText.setText(translations[currentLanguage].cost + ': ' + formatNumber(self.upgradeData.cost)); if (points >= self.upgradeData.cost) { buttonLogo.tint = 0x32CD32; // Bright green when affordable } else { buttonLogo.tint = 0xC0C0C0; // Light gray when not affordable } }; // Only the logo button is clickable buttonLogo.down = function (x, y, obj) { if (points >= self.upgradeData.cost) { points -= self.upgradeData.cost; totalSpent += self.upgradeData.cost; // Increase only this specific upgrade's level by 1 self.upgradeData.level += 1; // Calculate new cost for this specific upgrade using its base cost and multiplier var costMultiplier = self.upgradeData.multiplier; self.upgradeData.cost = Math.floor(self.upgradeData.baseCost * Math.pow(costMultiplier, self.upgradeData.level)); LK.getSound('purchase').play(); updatePointsDisplay(); self.updateDisplay(); updateAllUpgradeButtons(); saveGame(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x4a0080 }); /**** * Game Code ****/ // Create dark to light purple gradient background game.setBackgroundColor(0x1A0B2E); // Create enhanced texture background effect var backgroundTexture = new Container(); for (var i = 0; i < 100; i++) { for (var j = 0; j < 140; j++) { if (Math.random() < 0.15) { var particle = LK.getAsset('textureParticle', { anchorX: 0.5, anchorY: 0.5, scaleX: Math.random() * 0.8 + 0.2, scaleY: Math.random() * 0.8 + 0.2, x: i * 20.5 + Math.random() * 10, y: j * 19.5 + Math.random() * 10 }); particle.alpha = Math.random() * 0.2 + 0.05; particle.tint = Math.random() > 0.5 ? 0x7B68EE : 0x9370DB; backgroundTexture.addChild(particle); } } } game.addChild(backgroundTexture); // Game variables - initialize with default values var points = 0; var totalClicks = 0; var totalSpent = 0; var lastClickTime = 0; var clickDelay = 80; var currentLanguage = 'tr'; // 'tr' for Turkish, 'en' for English // Language translations var translations = { tr: { points: 'Puan', upgrades: { power: '1x Yükseltme (Power Click)', "super": '5x Yükseltme (Super Click)', mega: '10x Yükseltme (Mega Click)' }, cost: 'Maliyet', quests: 'GÖREVLER', questList: 'GÖREV LİSTESİ', completed: 'TAMAMLANDI!', collected: 'TOPLANDI', reward: 'Ödül', collect: 'TOPLA', close: 'KAPAT', level: 'Lv.', questNames: { points1k: '1.000 Puan Biriktir', points10k: '10.000 Puan Biriktir', points100k: '100.000 Puan Biriktir', points1m: '1.000.000 Puan Biriktir', spent500: '500 Puan Harca', spent5k: '5.000 Puan Harca', spent50k: '50.000 Puan Harca', clicks100: '100 Kez Tıkla', clicks1k: '1.000 Kez Tıkla', clicks10k: '10.000 Kez Tıkla', level5: 'Seviye 5\'e Ulaş', level10: 'Seviye 10\'a Ulaş', level25: 'Seviye 25\'e Ulaş' } }, en: { points: 'Points', upgrades: { power: '1x Upgrade (Power Click)', "super": '5x Upgrade (Super Click)', mega: '10x Upgrade (Mega Click)' }, cost: 'Cost', quests: 'QUESTS', questList: 'QUEST LIST', completed: 'COMPLETED!', collected: 'COLLECTED', reward: 'Reward', collect: 'COLLECT', close: 'CLOSE', level: 'Lv.', questNames: { points1k: 'Collect 1,000 Points', points10k: 'Collect 10,000 Points', points100k: 'Collect 100,000 Points', points1m: 'Collect 1,000,000 Points', spent500: 'Spend 500 Points', spent5k: 'Spend 5,000 Points', spent50k: 'Spend 50,000 Points', clicks100: 'Click 100 Times', clicks1k: 'Click 1,000 Times', clicks10k: 'Click 10,000 Times', level5: 'Reach Level 5', level10: 'Reach Level 10', level25: 'Reach Level 25' } } }; // Upgrade system - always start with default upgrades at level 1 var upgrades = [{ name: '1x Yükseltme (Power Click)', level: 1, cost: 50, baseCost: 50, multiplier: 1.15, clickMultiplier: 1, upgradeType: 'additive' }, { name: '5x Yükseltme (Super Click)', level: 1, cost: 300, baseCost: 300, multiplier: 1.22, clickMultiplier: 5, upgradeType: 'multiplicative' }, { name: '10x Yükseltme (Mega Click)', level: 1, cost: 800, baseCost: 800, multiplier: 1.30, clickMultiplier: 10, upgradeType: 'multiplicative' }]; // Progressive quest system - each quest type has multiple levels var questTemplates = { points: { levels: [{ target: 1000, reward: 200, nameKey: 'points1k' }, { target: 10000, reward: 1800, nameKey: 'points10k' }, { target: 100000, reward: 15000, nameKey: 'points100k' }, { target: 1000000, reward: 120000, nameKey: 'points1m' }], type: 'points' }, spent: { levels: [{ target: 500, reward: 60, nameKey: 'spent500' }, { target: 5000, reward: 650, nameKey: 'spent5k' }, { target: 50000, reward: 6000, nameKey: 'spent50k' }], type: 'spent' }, clicks: { levels: [{ target: 100, reward: 50, nameKey: 'clicks100' }, { target: 1000, reward: 300, nameKey: 'clicks1k' }, { target: 10000, reward: 2000, nameKey: 'clicks10k' }], type: 'clicks' }, upgrade: { levels: [{ target: 5, reward: 300, nameKey: 'level5' }, { target: 10, reward: 1800, nameKey: 'level10' }, { target: 25, reward: 12000, nameKey: 'level25' }], type: 'upgrade' } }; // Create initial progressive quests var quests = []; for (var questType in questTemplates) { var template = questTemplates[questType]; if (template && template.levels && template.levels.length > 0) { var quest = { questType: questType, currentLevel: 0, type: template.type, target: template.levels[0].target, reward: template.levels[0].reward, nameKey: template.levels[0].nameKey, name: '', completed: false, collected: false, isProgressive: true }; quests.push(quest); } } // Load saved game data loadGame(); // UI elements var buttonBorder = game.addChild(LK.getAsset('buttonBorder', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1200 })); var mainButton = game.addChild(LK.getAsset('mainButton', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1200 })); // Language selector button var languageButton = new Container(); var languageBox = languageButton.attachAsset('closeButton', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.8, scaleY: 0.8 }); languageBox.tint = 0x4A4A4A; var languageText = new Text2('TR', { size: 40, fill: 0xFFFFFF }); languageText.anchor.set(0.5, 0.5); languageButton.addChild(languageText); languageButton.x = 1024; languageButton.y = 700; game.addChild(languageButton); var pointsText = new Text2('0 Puan', { size: 80, fill: 0xFFFFFF }); pointsText.anchor.set(0.5, 0.5); pointsText.x = 1024; pointsText.y = 800; game.addChild(pointsText); var clickValueText = new Text2('+1 Points', { size: 50, fill: 0xFFFFFF }); clickValueText.anchor.set(0.5, 0.5); clickValueText.x = 1024; clickValueText.y = 1200; game.addChild(clickValueText); // Upgrade buttons var upgradeButtons = []; for (var i = 0; i < upgrades.length; i++) { var upgradeButton = new UpgradeButton(upgrades[i]); upgradeButton.x = 1024; upgradeButton.y = 1600 + i * 160; game.addChild(upgradeButton); upgradeButtons.push(upgradeButton); } // Quest button - positioned safely away from top-left corner var questButton = game.addChild(LK.getAsset('questButton', { anchorX: 0.5, anchorY: 0.5, x: 1750, y: 200 })); var questButtonText = new Text2('GÖREVLER', { size: 32, fill: 0x000000 }); questButtonText.anchor.set(0.5, 0.5); questButtonText.x = 1750; questButtonText.y = 200; game.addChild(questButtonText); // Quest menu var questMenu = null; var questMenuOpen = false; // Helper functions function formatNumber(num) { if (num >= 1000000000) { var formatted = (num / 1000000000).toFixed(1); return formatted.endsWith('.0') ? formatted.slice(0, -2) + 'B' : formatted + 'B'; } else if (num >= 1000000) { var formatted = (num / 1000000).toFixed(1); return formatted.endsWith('.0') ? formatted.slice(0, -2) + 'M' : formatted + 'M'; } else if (num >= 1000) { var formatted = (num / 1000).toFixed(1); return formatted.endsWith('.0') ? formatted.slice(0, -2) + 'K' : formatted + 'K'; } return Math.floor(num).toString(); } function getClickValue() { var baseValue = 1; var totalMultiplier = 1; // First, calculate additive bonuses from Power Click (1x Upgrade) // Level 1 provides +1, each additional level adds +1 more for (var i = 0; i < upgrades.length; i++) { if (upgrades[i].upgradeType === 'additive' && upgrades[i].level >= 1) { baseValue += upgrades[i].level * upgrades[i].clickMultiplier; } } // Then, apply multiplicative bonuses from Super Click (5x) and Mega Click (10x) // Level 1 provides the base multiplier, level 2+ provides exponential multipliers for (var i = 0; i < upgrades.length; i++) { if (upgrades[i].upgradeType === 'multiplicative' && upgrades[i].level >= 1) { // Each level multiplies by the clickMultiplier var levelMultiplier = Math.pow(upgrades[i].clickMultiplier, upgrades[i].level); totalMultiplier *= levelMultiplier; } } return Math.floor(baseValue * totalMultiplier); } function updatePointsDisplay() { pointsText.setText(formatNumber(points) + ' ' + translations[currentLanguage].points); clickValueText.setText('+' + formatNumber(getClickValue()) + ' ' + translations[currentLanguage].points); } function updateAllUpgradeButtons() { for (var i = 0; i < upgradeButtons.length; i++) { upgradeButtons[i].updateDisplay(); } } function getCurrentProgress(quest) { switch (quest.type) { case 'points': return points; case 'clicks': return totalClicks; case 'spent': return totalSpent; case 'upgrade': // Return the average level among all upgrades for quest progress var totalLevels = 0; for (var i = 0; i < upgrades.length; i++) { totalLevels += upgrades[i].level; } return Math.floor(totalLevels / upgrades.length); default: return 0; } } function syncUpgradeLevels() { // No longer sync levels - each upgrade maintains its own level // This function now just ensures costs are properly calculated for (var i = 0; i < upgrades.length; i++) { if (!upgrades[i].baseCost) { upgrades[i].baseCost = upgrades[i].cost; } // Recalculate cost based on current level upgrades[i].cost = Math.floor(upgrades[i].baseCost * Math.pow(upgrades[i].multiplier, upgrades[i].level)); } } function checkQuestCompletion() { for (var i = 0; i < quests.length; i++) { var quest = quests[i]; if (!quest.completed) { var current = getCurrentProgress(quest); if (current >= quest.target) { quest.completed = true; } } } } function saveGame() { storage.points = points; storage.totalClicks = totalClicks; storage.totalSpent = totalSpent; // Convert upgrades to storage-compatible format storage.upgradeNames = []; storage.upgradeLevels = []; storage.upgradeCosts = []; storage.upgradeBaseCosts = []; storage.upgradeMultipliers = []; storage.upgradeClickMultipliers = []; storage.upgradeTypes = []; for (var i = 0; i < upgrades.length; i++) { storage.upgradeNames[i] = upgrades[i].name; storage.upgradeLevels[i] = upgrades[i].level; storage.upgradeCosts[i] = upgrades[i].cost; storage.upgradeBaseCosts[i] = upgrades[i].baseCost; storage.upgradeMultipliers[i] = upgrades[i].multiplier; storage.upgradeClickMultipliers[i] = upgrades[i].clickMultiplier; storage.upgradeTypes[i] = upgrades[i].upgradeType; } // Convert quests to storage-compatible format storage.questNames = []; storage.questTypes = []; storage.questTargets = []; storage.questRewards = []; storage.questCompleted = []; storage.questCollected = []; storage.questCurrentLevels = []; storage.questIsProgressive = []; storage.questQuestTypes = []; for (var i = 0; i < quests.length; i++) { storage.questNames[i] = quests[i].name; storage.questTypes[i] = quests[i].type; storage.questTargets[i] = quests[i].target; storage.questRewards[i] = quests[i].reward; storage.questCompleted[i] = quests[i].completed; storage.questCollected[i] = quests[i].collected; storage.questCurrentLevels[i] = quests[i].currentLevel || 0; storage.questIsProgressive[i] = quests[i].isProgressive || false; storage.questQuestTypes[i] = quests[i].questType || ''; } } function loadGame() { // Load basic game stats if (storage.points !== undefined) { points = storage.points; } if (storage.totalClicks !== undefined) { totalClicks = storage.totalClicks; } if (storage.totalSpent !== undefined) { totalSpent = storage.totalSpent; } // Load upgrades if they exist in storage if (storage.upgradeLevels && storage.upgradeLevels.length > 0) { for (var i = 0; i < upgrades.length && i < storage.upgradeLevels.length; i++) { if (storage.upgradeLevels[i] !== undefined) { upgrades[i].level = storage.upgradeLevels[i]; } if (storage.upgradeCosts[i] !== undefined) { upgrades[i].cost = storage.upgradeCosts[i]; } if (storage.upgradeBaseCosts && storage.upgradeBaseCosts[i] !== undefined) { upgrades[i].baseCost = storage.upgradeBaseCosts[i]; } if (storage.upgradeTypes && storage.upgradeTypes[i] !== undefined) { upgrades[i].upgradeType = storage.upgradeTypes[i]; } } // Ensure proper upgrade costs after loading syncUpgradeLevels(); } // Load quests if they exist in storage if (storage.questCompleted && storage.questCompleted.length > 0) { for (var i = 0; i < quests.length && i < storage.questCompleted.length; i++) { if (storage.questCompleted[i] !== undefined) { quests[i].completed = storage.questCompleted[i]; } if (storage.questCollected[i] !== undefined) { quests[i].collected = storage.questCollected[i]; } if (storage.questCurrentLevels && storage.questCurrentLevels[i] !== undefined) { quests[i].currentLevel = storage.questCurrentLevels[i]; // Update quest properties based on current level if (quests[i].isProgressive && quests[i].questType && questTemplates[quests[i].questType]) { var template = questTemplates[quests[i].questType]; var currentLevel = quests[i].currentLevel; if (currentLevel >= 0 && currentLevel < template.levels.length) { quests[i].target = template.levels[currentLevel].target; quests[i].reward = template.levels[currentLevel].reward; quests[i].nameKey = template.levels[currentLevel].nameKey; } } } if (storage.questQuestTypes && storage.questQuestTypes[i] !== undefined) { quests[i].questType = storage.questQuestTypes[i]; } if (storage.questIsProgressive && storage.questIsProgressive[i] !== undefined) { quests[i].isProgressive = storage.questIsProgressive[i]; } if (storage.questTypes && storage.questTypes[i] !== undefined) { quests[i].type = storage.questTypes[i]; } if (storage.questTargets && storage.questTargets[i] !== undefined) { quests[i].target = storage.questTargets[i]; } if (storage.questRewards && storage.questRewards[i] !== undefined) { quests[i].reward = storage.questRewards[i]; } } } } function createQuestMenu() { questMenu = new Container(); var menuBackground = questMenu.attachAsset('questMenu', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366 }); menuBackground.alpha = 0.95; var titleText = new Text2(translations[currentLanguage].questList, { size: 70, fill: 0xFFD700 }); titleText.anchor.set(0.5, 0); titleText.x = 1024; titleText.y = 180; questMenu.addChild(titleText); var closeButton = questMenu.addChild(LK.getAsset('closeButton', { anchorX: 0.5, anchorY: 0.5, x: 1750, y: 250 })); var closeText = new Text2('X', { size: 50, fill: 0xFFFFFF }); closeText.anchor.set(0.5, 0.5); closeText.x = 1750; closeText.y = 250; questMenu.addChild(closeText); closeButton.down = function (x, y, obj) { questMenuOpen = false; game.removeChild(questMenu); questMenu = null; }; // Add prominent close button at bottom var bottomCloseButton = questMenu.addChild(LK.getAsset('collectButton', { anchorX: 0.5, anchorY: 0.5, scaleX: 2.0, scaleY: 1.5, x: 1024, y: 2600 })); bottomCloseButton.tint = 0xFF6600; var bottomCloseText = new Text2(translations[currentLanguage].close, { size: 40, fill: 0xFFFFFF }); bottomCloseText.anchor.set(0.5, 0.5); bottomCloseText.x = 1024; bottomCloseText.y = 2600; questMenu.addChild(bottomCloseText); bottomCloseButton.down = function (x, y, obj) { questMenuOpen = false; game.removeChild(questMenu); questMenu = null; }; // Add quest items in 2-column layout for (var i = 0; i < quests.length; i++) { var questItem = new QuestItem(quests[i]); var column = i % 2; // 0 for left column, 1 for right column var row = Math.floor(i / 2); // Calculate row number // Position items: left column at x=350, right column at x=1100 questItem.x = column === 0 ? 350 : 1100; questItem.y = 400 + row * 200; // Increased spacing to 200px between rows questMenu.addChild(questItem); questItem.updateDisplay(); } game.addChild(questMenu); } // Add shadow and glow effects to main button tween(buttonBorder, { tint: 0x4A4A4A }, { duration: 200 }); tween(mainButton, { tint: 0xFF4444 }, { duration: 200 }); // Event handlers mainButton.down = function (x, y, obj) { var currentTime = Date.now(); if (currentTime - lastClickTime >= clickDelay) { lastClickTime = currentTime; var clickValue = getClickValue(); points += clickValue; totalClicks++; // Create animated text showing earned points var earnedText = new Text2('+' + formatNumber(clickValue), { size: 60, fill: 0xFFFF00 }); earnedText.anchor.set(0.5, 0.5); earnedText.x = 1024; earnedText.y = 1200; earnedText.alpha = 1.0; game.addChild(earnedText); // Animate the earned points text tween(earnedText, { y: earnedText.y - 100, alpha: 0.0, scaleX: 1.5, scaleY: 1.5 }, { duration: 1000, easing: tween.easeOut, onFinish: function onFinish() { game.removeChild(earnedText); } }); // Enhanced visual feedback with glow effects tween(mainButton, { scaleX: 0.85, scaleY: 0.85, tint: 0xFF6666 }, { duration: 80 }); tween(mainButton, { scaleX: 1.05, scaleY: 1.05, tint: 0xDC143C }, { duration: 120, onFinish: function onFinish() { tween(mainButton, { scaleX: 1.0, scaleY: 1.0 }, { duration: 80 }); } }); tween(buttonBorder, { scaleX: 0.85, scaleY: 0.85, tint: 0x2A2A2A }, { duration: 80 }); tween(buttonBorder, { scaleX: 1.0, scaleY: 1.0, tint: 0x4A4A4A }, { duration: 200 }); LK.getSound('click').play(); updatePointsDisplay(); checkQuestCompletion(); saveGame(); } }; languageButton.down = function (x, y, obj) { currentLanguage = currentLanguage === 'tr' ? 'en' : 'tr'; languageText.setText(currentLanguage.toUpperCase()); // Update all visible texts updatePointsDisplay(); updateAllUpgradeButtons(); questButtonText.setText(translations[currentLanguage].quests); // Update upgrade names upgrades[0].name = translations[currentLanguage].upgrades.power; upgrades[1].name = translations[currentLanguage].upgrades["super"]; upgrades[2].name = translations[currentLanguage].upgrades.mega; // Update quest names for (var i = 0; i < quests.length; i++) { if (quests[i].nameKey && translations[currentLanguage].questNames[quests[i].nameKey]) { quests[i].name = translations[currentLanguage].questNames[quests[i].nameKey]; } } // Update quest menu if open if (questMenuOpen && questMenu) { game.removeChild(questMenu); createQuestMenu(); } }; questButton.down = function (x, y, obj) { if (!questMenuOpen) { questMenuOpen = true; createQuestMenu(); } }; // Initialize display updatePointsDisplay(); updateAllUpgradeButtons(); game.update = function () { // Auto-save every 5 seconds if (LK.ticks % 300 === 0) { saveGame(); } };
===================================================================
--- original.js
+++ change.js
@@ -158,9 +158,9 @@
// Increase only this specific upgrade's level by 1
self.upgradeData.level += 1;
// Calculate new cost for this specific upgrade using its base cost and multiplier
var costMultiplier = self.upgradeData.multiplier;
- self.upgradeData.cost = Math.floor(self.upgradeData.baseCost * Math.pow(costMultiplier, self.upgradeData.level - 1));
+ self.upgradeData.cost = Math.floor(self.upgradeData.baseCost * Math.pow(costMultiplier, self.upgradeData.level));
LK.getSound('purchase').play();
updatePointsDisplay();
self.updateDisplay();
updateAllUpgradeButtons();
@@ -489,17 +489,17 @@
// First, calculate additive bonuses from Power Click (1x Upgrade)
// Level 1 provides +1, each additional level adds +1 more
for (var i = 0; i < upgrades.length; i++) {
if (upgrades[i].upgradeType === 'additive' && upgrades[i].level >= 1) {
- baseValue += (upgrades[i].level - 1) * upgrades[i].clickMultiplier;
+ baseValue += upgrades[i].level * upgrades[i].clickMultiplier;
}
}
// Then, apply multiplicative bonuses from Super Click (5x) and Mega Click (10x)
- // Level 1 provides no multiplier, level 2+ provides multipliers
+ // Level 1 provides the base multiplier, level 2+ provides exponential multipliers
for (var i = 0; i < upgrades.length; i++) {
- if (upgrades[i].upgradeType === 'multiplicative' && upgrades[i].level > 1) {
- // Each level beyond 1 multiplies by the clickMultiplier
- var levelMultiplier = Math.pow(upgrades[i].clickMultiplier, upgrades[i].level - 1);
+ if (upgrades[i].upgradeType === 'multiplicative' && upgrades[i].level >= 1) {
+ // Each level multiplies by the clickMultiplier
+ var levelMultiplier = Math.pow(upgrades[i].clickMultiplier, upgrades[i].level);
totalMultiplier *= levelMultiplier;
}
}
return Math.floor(baseValue * totalMultiplier);
@@ -539,9 +539,9 @@
if (!upgrades[i].baseCost) {
upgrades[i].baseCost = upgrades[i].cost;
}
// Recalculate cost based on current level
- upgrades[i].cost = Math.floor(upgrades[i].baseCost * Math.pow(upgrades[i].multiplier, upgrades[i].level - 1));
+ upgrades[i].cost = Math.floor(upgrades[i].baseCost * Math.pow(upgrades[i].multiplier, upgrades[i].level));
}
}
function checkQuestCompletion() {
for (var i = 0; i < quests.length; i++) {