User prompt
"Pay Tax" butonunu biraz daha sağa götür
User prompt
"Pay Tax" butonunu biraz sağa götür
User prompt
alt kısımdaki butonları birbirlerinden uzaklaştır
User prompt
game over olunduğunda çıkan play again butonuna bastığımda oyun yeniden başlamıyor
User prompt
game over olunduğunda çıkan play again butonuna bastığımda oyun yeniden başlamıyor
User prompt
vergi ücretleri biraz daha yükselsin ve eğer vergi borcu 14 gün içinde ödenmezse vergi borcu ücretinin %50 fazlası kadar para veya o değerdeki araçlara el konulsun ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
7 günde bir sahip olunan araçların toplam değerine ve sahip olunan toplam paraya göre belirli bir miktar vergi borcu gelsin. 2 gün boyunca borç ödenmezse her gün %15 faizle artsın ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
müşterinin aracının hasar durumu ve kilometresi hakkında gerçeği söyleyip söylemediğini öğrenebilmemiz için aracın fiyatıyla aynı orantıda bir fiyatta ekspertiz sistemi ekle ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
araçların fiyatlarına göre tamir ücretide yüksek veya az olsun ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
müşterilerin araçları hakkında söylediği kilometrenin yalan çıkıp daha yüksek olma ihtimalini ekle ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
oyuna birde kredi sistemi ekleyelim. kredi çektiğimiz zaman borcumuzu faizli şekilde geri ödememiz gereksin ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
müşterilerin bize aracının hasarsız olduğunu söyleyip hasarlı çıkması ihtimalini ekle ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
araçlar satıldığında çok kazanç sağlıyor ve sürekli para kazanıyorum. Bir şekilde zararda edeceğim bir sistem ekleyelim ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Bazı araçları aldığımda müşterilerin bizi kandırıp paramızı çalıp araçları vermediği ihtimalleri olsun ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
araçlar satıldığında çok kazanç sağlıyor ve sürekli para kazanıyorum. Bir şekilde zararda edeceğim bir sistem ekleyelim ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
şuanda herşey olması gerektiği gibi çalışıyor fakat müşterilerin bana araçları hakkında yalan söylüyor olma ihtimali ve ekspertiz yapma özelliğe ve sahip olduğum araçları satmak ya da tamir ettirme sistemi yok onları eklemeliyiz ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'storage.ownedVehicles = simplifiedOwnedVehicles;' Line Number: 499 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'storage.ownedVehicles = ownedVehicles;' Line Number: 482 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'storage.playerMoney = undefined;' Line Number: 443 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
oyuna birde reset butonu ekleyelim herşeyi başa döndürmek için ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
hala şuanda satın alma butonuna bastığımda hiçbir şey olmuyor araç satın alamıyorum
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'vehicleData')' in or related to this line: 'var vehicleData = obj.parent.vehicleData;' Line Number: 277
User prompt
satın alma butonuna bastığım zaman araçlar alınmıyor bunu düzeltmeliyiz. Satın al butonuna bastığımda araç benim envanterime geçmeli ve paramdan aracın fiyatı düşmeli
User prompt
araçların altına aracı satın alma butonu ekle
User prompt
butonları ve diğer bütün herşeyi biraz boyutunu büyüt
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Button = Container.expand(function (text, color, width, height) { var self = Container.call(this); var buttonGraphics = self.attachAsset('buyButton', { anchorX: 0.5, anchorY: 0.5, width: width || 300, height: height || 120 }); buttonGraphics.tint = color || 0x27ae60; var buttonText = new Text2(text, { size: 32, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); buttonText.x = 0; buttonText.y = 0; self.addChild(buttonText); self.down = function (x, y, obj) { buttonGraphics.scaleX = 0.9; buttonGraphics.scaleY = 0.9; }; self.up = function (x, y, obj) { buttonGraphics.scaleX = 1.0; buttonGraphics.scaleY = 1.0; }; return self; }); var Vehicle = Container.expand(function (carData) { var self = Container.call(this); self.carData = carData; self.inspected = false; self.repaired = false; var carGraphics = self.attachAsset(carData.condition === 'damaged' ? 'carDamaged' : 'carOffer', { anchorX: 0.5, anchorY: 0.5 }); var carText = new Text2(carData.make + ' ' + carData.model, { size: 36, fill: 0xFFFFFF }); carText.anchor.set(0.5, 0.5); carText.x = 0; carText.y = -80; self.addChild(carText); var priceText = new Text2('$' + carData.price.toLocaleString(), { size: 40, fill: 0xFFFF00 }); priceText.anchor.set(0.5, 0.5); priceText.x = 0; priceText.y = -40; self.addChild(priceText); var conditionText = new Text2(carData.condition + ' - ' + carData.mileage + 'k miles', { size: 28, fill: 0xFFFFFF }); conditionText.anchor.set(0.5, 0.5); conditionText.x = 0; conditionText.y = 10; self.addChild(conditionText); self.updateDisplay = function () { carGraphics.visible = false; self.removeChild(carGraphics); var assetType = 'carOffer'; if (self.carData.condition === 'damaged') { assetType = 'carDamaged'; } else if (self.repaired) { assetType = 'carRepaired'; } carGraphics = self.attachAsset(assetType, { anchorX: 0.5, anchorY: 0.5 }); priceText.setText('$' + self.carData.price.toLocaleString()); conditionText.setText(self.carData.condition + ' - ' + self.carData.mileage + 'k miles'); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x34495e }); /**** * Game Code ****/ // Game state variables var playerMoney = storage.playerMoney || 50000; var currentDay = storage.currentDay || 1; var ownedVehicles = []; // Load owned vehicles from storage if (storage.vehicleCount) { for (var i = 0; i < storage.vehicleCount; i++) { ownedVehicles.push({ make: storage.vehicleMakes[i], model: storage.vehicleModels[i], condition: storage.vehicleConditions[i], actualCondition: storage.vehicleActualConditions[i], mileage: storage.vehicleMileages[i], price: storage.vehiclePrices[i], marketValue: storage.vehicleMarketValues[i], sellerLying: storage.vehicleSellerLying[i], id: storage.vehicleIds[i], repaired: storage.vehicleRepaired[i] }); } } var dailyOffers = []; var selectedVehicle = null; var gameState = 'daily_offers'; // 'daily_offers', 'vehicle_selected', 'owned_vehicles' // Car data arrays var carMakes = ['Toyota', 'Honda', 'Ford', 'Chevrolet', 'BMW', 'Mercedes', 'Audi', 'Nissan', 'Volkswagen', 'Hyundai']; var carModels = ['Sedan', 'SUV', 'Coupe', 'Hatchback', 'Wagon', 'Convertible', 'Truck', 'Compact']; var conditions = ['excellent', 'good', 'fair', 'poor', 'damaged']; // UI Elements var moneyText = new Text2('Money: $' + playerMoney.toLocaleString(), { size: 50, fill: 0x2ECC71 }); moneyText.anchor.set(0, 0); moneyText.x = 120; moneyText.y = 50; LK.gui.topLeft.addChild(moneyText); var dayText = new Text2('Day ' + currentDay, { size: 50, fill: 0xFFFFFF }); dayText.anchor.set(1, 0); dayText.x = 0; dayText.y = 50; LK.gui.topRight.addChild(dayText); var titleText = new Text2('Car Dealer Tycoon', { size: 80, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0); titleText.x = 2048 / 2; titleText.y = 150; game.addChild(titleText); var stateText = new Text2('Daily Vehicle Offers', { size: 50, fill: 0xECF0F1 }); stateText.anchor.set(0.5, 0); stateText.x = 2048 / 2; stateText.y = 250; game.addChild(stateText); // Action buttons var inspectButton = game.addChild(new Button('Inspect ($500)', 0xf39c12)); inspectButton.x = 2048 / 2 - 400; inspectButton.y = 2200; inspectButton.visible = false; var buyButton = game.addChild(new Button('Buy Vehicle', 0x27ae60)); buyButton.x = 2048 / 2 - 150; buyButton.y = 2200; buyButton.visible = false; var negotiateButton = game.addChild(new Button('Negotiate', 0x34495e)); negotiateButton.x = 2048 / 2 + 150; negotiateButton.y = 2200; negotiateButton.visible = false; var repairButton = game.addChild(new Button('Repair', 0xe67e22)); repairButton.x = 2048 / 2 - 150; repairButton.y = 2200; repairButton.visible = false; var sellButton = game.addChild(new Button('Sell', 0x8e44ad)); sellButton.x = 2048 / 2 + 150; sellButton.y = 2200; sellButton.visible = false; var nextDayButton = game.addChild(new Button('Next Day', 0x2c3e50, 400, 140)); nextDayButton.x = 2048 / 2; nextDayButton.y = 2400; var viewOwnedButton = game.addChild(new Button('View Owned Cars', 0x95a5a6)); viewOwnedButton.x = 2048 / 2; viewOwnedButton.y = 2300; var resetButton = game.addChild(new Button('Reset Game', 0xe74c3c)); resetButton.x = 2048 / 2; resetButton.y = 2500; // Vehicle display containers var vehicleContainer = new Container(); vehicleContainer.x = 2048 / 2; vehicleContainer.y = 800; game.addChild(vehicleContainer); var infoText = new Text2('', { size: 32, fill: 0xFFFFFF }); infoText.anchor.set(0.5, 0.5); infoText.x = 2048 / 2; infoText.y = 1800; game.addChild(infoText); // Generate random vehicle data function generateRandomVehicle() { var make = carMakes[Math.floor(Math.random() * carMakes.length)]; var model = carModels[Math.floor(Math.random() * carModels.length)]; var condition = conditions[Math.floor(Math.random() * conditions.length)]; var mileage = Math.floor(Math.random() * 200) + 20; var basePrice = Math.floor(Math.random() * 40000) + 10000; // Sellers may lie about condition var actualCondition = condition; var sellerLying = Math.random() < 0.3; if (sellerLying && condition !== 'damaged') { var betterConditions = conditions.slice(0, conditions.indexOf(condition)); if (betterConditions.length > 0) { condition = betterConditions[Math.floor(Math.random() * betterConditions.length)]; } } // Adjust price based on condition var priceMultiplier = 1; switch (actualCondition) { case 'excellent': priceMultiplier = 1.2; break; case 'good': priceMultiplier = 1.0; break; case 'fair': priceMultiplier = 0.8; break; case 'poor': priceMultiplier = 0.6; break; case 'damaged': priceMultiplier = 0.4; break; } var price = Math.floor(basePrice * priceMultiplier * (1 - mileage / 300)); return { make: make, model: model, condition: condition, actualCondition: actualCondition, mileage: mileage, price: price, marketValue: Math.floor(price * 1.5), sellerLying: sellerLying, id: Math.random().toString(36).substr(2, 9) }; } // Generate daily offers function generateDailyOffers() { dailyOffers = []; var numOffers = Math.floor(Math.random() * 3) + 2; for (var i = 0; i < numOffers; i++) { dailyOffers.push(generateRandomVehicle()); } } // Display vehicles function displayVehicles(vehicles) { vehicleContainer.removeChildren(); for (var i = 0; i < vehicles.length; i++) { var vehicle = new Vehicle(vehicles[i]); vehicle.x = i % 2 * 600 - 300; vehicle.y = Math.floor(i / 2) * 380; vehicleContainer.addChild(vehicle); vehicle.vehicleData = vehicles[i]; vehicle.down = function (x, y, obj) { selectedVehicle = obj.vehicleData; updateUI(); }; // Add buy button for each vehicle var vehicleBuyButton = new Button('Buy', 0x27ae60, 200, 80); vehicleBuyButton.x = 0; vehicleBuyButton.y = 150; vehicle.addChild(vehicleBuyButton); // Store vehicle data directly on the button using closure (function (vehicleData) { vehicleBuyButton.up = function (x, y, obj) { if (vehicleData && playerMoney >= vehicleData.price) { playerMoney -= vehicleData.price; // Create a copy of the vehicle data for owned vehicles var ownedVehicleData = { make: vehicleData.make, model: vehicleData.model, condition: vehicleData.condition, actualCondition: vehicleData.actualCondition, mileage: vehicleData.mileage, price: vehicleData.price, marketValue: vehicleData.marketValue, sellerLying: vehicleData.sellerLying, id: vehicleData.id, repaired: false }; ownedVehicles.push(ownedVehicleData); // Remove from daily offers for (var j = 0; j < dailyOffers.length; j++) { if (dailyOffers[j].id === vehicleData.id) { dailyOffers.splice(j, 1); break; } } LK.getSound('purchase').play(); selectedVehicle = null; updateMoneyDisplay(); displayVehicles(dailyOffers); updateUI(); saveGame(); } }; })(vehicles[i]); } } // Update UI based on game state function updateUI() { inspectButton.visible = false; buyButton.visible = false; negotiateButton.visible = false; repairButton.visible = false; sellButton.visible = false; expertiseButton.visible = false; if (gameState === 'daily_offers' && selectedVehicle) { inspectButton.visible = true; buyButton.visible = true; negotiateButton.visible = true; expertiseButton.visible = true; infoText.setText('Selected: ' + selectedVehicle.make + ' ' + selectedVehicle.model + '\nCondition: ' + selectedVehicle.condition + '\nMileage: ' + selectedVehicle.mileage + 'k miles' + '\nPrice: $' + selectedVehicle.price.toLocaleString()); } else if (gameState === 'owned_vehicles' && selectedVehicle) { if (selectedVehicle.actualCondition === 'damaged' && !selectedVehicle.repaired) { repairButton.visible = true; } else { sellButton.visible = true; } infoText.setText('Owned: ' + selectedVehicle.make + ' ' + selectedVehicle.model + '\nCondition: ' + selectedVehicle.actualCondition + '\nMileage: ' + selectedVehicle.mileage + 'k miles' + '\nMarket Value: $' + selectedVehicle.marketValue.toLocaleString()); } else { infoText.setText('Select a vehicle to view options'); } } // Add expertise button var expertiseButton = game.addChild(new Button('Expertise ($1500)', 0x9b59b6)); expertiseButton.x = 2048 / 2 + 400; expertiseButton.y = 2200; expertiseButton.visible = false; // Button event handlers inspectButton.up = function (x, y, obj) { if (selectedVehicle && playerMoney >= 500) { playerMoney -= 500; selectedVehicle.inspected = true; selectedVehicle.condition = selectedVehicle.actualCondition; LK.getSound('inspect').play(); updateMoneyDisplay(); displayVehicles(dailyOffers); updateUI(); if (selectedVehicle.sellerLying) { infoText.setText('Inspection revealed the seller was lying!\nActual condition: ' + selectedVehicle.actualCondition); } else { infoText.setText('Inspection confirmed seller was honest.'); } } }; expertiseButton.up = function (x, y, obj) { if (selectedVehicle && playerMoney >= 1500) { playerMoney -= 1500; selectedVehicle.inspected = true; selectedVehicle.condition = selectedVehicle.actualCondition; LK.getSound('inspect').play(); updateMoneyDisplay(); displayVehicles(dailyOffers); updateUI(); var detailsText = 'EXPERTISE REPORT:\n'; detailsText += 'True Condition: ' + selectedVehicle.actualCondition + '\n'; detailsText += 'True Mileage: ' + selectedVehicle.mileage + 'k miles\n'; detailsText += 'Seller Honest: ' + (selectedVehicle.sellerLying ? 'NO' : 'YES') + '\n'; detailsText += 'Market Value: $' + selectedVehicle.marketValue.toLocaleString() + '\n'; detailsText += 'Recommended Action: '; if (selectedVehicle.price < selectedVehicle.marketValue * 0.8) { detailsText += 'BUY - Good Deal'; } else if (selectedVehicle.price > selectedVehicle.marketValue * 1.2) { detailsText += 'AVOID - Overpriced'; } else { detailsText += 'NEGOTIATE - Fair Price'; } infoText.setText(detailsText); } }; buyButton.up = function (x, y, obj) { if (selectedVehicle && playerMoney >= selectedVehicle.price) { playerMoney -= selectedVehicle.price; selectedVehicle.actualCondition = selectedVehicle.actualCondition; ownedVehicles.push(selectedVehicle); // Remove from daily offers for (var i = 0; i < dailyOffers.length; i++) { if (dailyOffers[i].id === selectedVehicle.id) { dailyOffers.splice(i, 1); break; } } LK.getSound('purchase').play(); selectedVehicle = null; updateMoneyDisplay(); displayVehicles(dailyOffers); updateUI(); saveGame(); } }; negotiateButton.up = function (x, y, obj) { if (selectedVehicle) { var reduction = Math.floor(selectedVehicle.price * (Math.random() * 0.2 + 0.05)); selectedVehicle.price -= reduction; displayVehicles(dailyOffers); updateUI(); infoText.setText('Negotiated $' + reduction.toLocaleString() + ' off the price!'); } }; repairButton.up = function (x, y, obj) { if (selectedVehicle && playerMoney >= 3000) { playerMoney -= 3000; selectedVehicle.repaired = true; selectedVehicle.actualCondition = 'good'; selectedVehicle.marketValue = Math.floor(selectedVehicle.marketValue * 1.5); LK.getSound('repair').play(); updateMoneyDisplay(); displayOwnedVehicles(); updateUI(); saveGame(); } }; sellButton.up = function (x, y, obj) { if (selectedVehicle) { var salePrice = Math.floor(selectedVehicle.marketValue * (Math.random() * 0.3 + 0.8)); playerMoney += salePrice; // Remove from owned vehicles for (var i = 0; i < ownedVehicles.length; i++) { if (ownedVehicles[i].id === selectedVehicle.id) { ownedVehicles.splice(i, 1); break; } } LK.getSound('sale').play(); selectedVehicle = null; updateMoneyDisplay(); displayOwnedVehicles(); updateUI(); saveGame(); infoText.setText('Sold for $' + salePrice.toLocaleString() + '!'); } }; nextDayButton.up = function (x, y, obj) { currentDay++; selectedVehicle = null; generateDailyOffers(); gameState = 'daily_offers'; stateText.setText('Daily Vehicle Offers'); dayText.setText('Day ' + currentDay); displayVehicles(dailyOffers); updateUI(); saveGame(); }; viewOwnedButton.up = function (x, y, obj) { if (gameState === 'daily_offers') { gameState = 'owned_vehicles'; stateText.setText('Owned Vehicles'); displayOwnedVehicles(); } else { gameState = 'daily_offers'; stateText.setText('Daily Vehicle Offers'); displayVehicles(dailyOffers); } selectedVehicle = null; updateUI(); }; resetButton.up = function (x, y, obj) { // Clear all stored data delete storage.playerMoney; delete storage.currentDay; delete storage.vehicleCount; delete storage.vehicleMakes; delete storage.vehicleModels; delete storage.vehicleConditions; delete storage.vehicleActualConditions; delete storage.vehicleMileages; delete storage.vehiclePrices; delete storage.vehicleMarketValues; delete storage.vehicleSellerLying; delete storage.vehicleIds; delete storage.vehicleRepaired; // Reset game state to initial values playerMoney = 50000; currentDay = 1; ownedVehicles = []; selectedVehicle = null; gameState = 'daily_offers'; // Update UI stateText.setText('Daily Vehicle Offers'); dayText.setText('Day ' + currentDay); updateMoneyDisplay(); generateDailyOffers(); displayVehicles(dailyOffers); updateUI(); }; function displayOwnedVehicles() { vehicleContainer.removeChildren(); for (var i = 0; i < ownedVehicles.length; i++) { var vehicle = new Vehicle(ownedVehicles[i]); if (ownedVehicles[i].repaired) { vehicle.repaired = true; vehicle.updateDisplay(); } vehicle.x = i % 2 * 600 - 300; vehicle.y = Math.floor(i / 2) * 380; vehicleContainer.addChild(vehicle); vehicle.vehicleData = ownedVehicles[i]; vehicle.down = function (x, y, obj) { selectedVehicle = obj.vehicleData; updateUI(); }; // Add action buttons for each owned vehicle if (ownedVehicles[i].actualCondition === 'damaged' && !ownedVehicles[i].repaired) { // Add repair button var vehicleRepairButton = new Button('Repair ($3000)', 0xe67e22, 200, 60); vehicleRepairButton.x = -100; vehicleRepairButton.y = 150; vehicle.addChild(vehicleRepairButton); (function (vehicleData) { vehicleRepairButton.up = function (x, y, obj) { if (playerMoney >= 3000) { playerMoney -= 3000; vehicleData.repaired = true; vehicleData.actualCondition = 'good'; vehicleData.marketValue = Math.floor(vehicleData.marketValue * 1.5); LK.getSound('repair').play(); updateMoneyDisplay(); displayOwnedVehicles(); updateUI(); saveGame(); } }; })(ownedVehicles[i]); } else { // Add sell button var vehicleSellButton = new Button('Sell', 0x8e44ad, 200, 60); vehicleSellButton.x = -100; vehicleSellButton.y = 150; vehicle.addChild(vehicleSellButton); (function (vehicleData) { vehicleSellButton.up = function (x, y, obj) { var salePrice = Math.floor(vehicleData.marketValue * (Math.random() * 0.3 + 0.8)); playerMoney += salePrice; // Remove from owned vehicles for (var j = 0; j < ownedVehicles.length; j++) { if (ownedVehicles[j].id === vehicleData.id) { ownedVehicles.splice(j, 1); break; } } LK.getSound('sale').play(); selectedVehicle = null; updateMoneyDisplay(); displayOwnedVehicles(); updateUI(); saveGame(); infoText.setText('Sold for $' + salePrice.toLocaleString() + '!'); }; })(ownedVehicles[i]); } } } function updateMoneyDisplay() { moneyText.setText('Money: $' + playerMoney.toLocaleString()); } function saveGame() { storage.playerMoney = playerMoney; storage.currentDay = currentDay; // Store each vehicle property as separate arrays to avoid nested objects var vehicleCount = ownedVehicles.length; storage.vehicleCount = vehicleCount; storage.vehicleMakes = []; storage.vehicleModels = []; storage.vehicleConditions = []; storage.vehicleActualConditions = []; storage.vehicleMileages = []; storage.vehiclePrices = []; storage.vehicleMarketValues = []; storage.vehicleSellerLying = []; storage.vehicleIds = []; storage.vehicleRepaired = []; for (var i = 0; i < ownedVehicles.length; i++) { var vehicle = ownedVehicles[i]; storage.vehicleMakes.push(vehicle.make); storage.vehicleModels.push(vehicle.model); storage.vehicleConditions.push(vehicle.condition); storage.vehicleActualConditions.push(vehicle.actualCondition); storage.vehicleMileages.push(vehicle.mileage); storage.vehiclePrices.push(vehicle.price); storage.vehicleMarketValues.push(vehicle.marketValue); storage.vehicleSellerLying.push(vehicle.sellerLying); storage.vehicleIds.push(vehicle.id); storage.vehicleRepaired.push(vehicle.repaired || false); } } // Initialize game generateDailyOffers(); displayVehicles(dailyOffers); updateUI(); // Game update loop game.update = function () { // Check for game over condition if (playerMoney < 0) { LK.showGameOver(); } // Check for winning condition if (playerMoney >= 500000) { LK.showYouWin(); } };
===================================================================
--- original.js
+++ change.js
@@ -317,12 +317,14 @@
buyButton.visible = false;
negotiateButton.visible = false;
repairButton.visible = false;
sellButton.visible = false;
+ expertiseButton.visible = false;
if (gameState === 'daily_offers' && selectedVehicle) {
inspectButton.visible = true;
buyButton.visible = true;
negotiateButton.visible = true;
+ expertiseButton.visible = true;
infoText.setText('Selected: ' + selectedVehicle.make + ' ' + selectedVehicle.model + '\nCondition: ' + selectedVehicle.condition + '\nMileage: ' + selectedVehicle.mileage + 'k miles' + '\nPrice: $' + selectedVehicle.price.toLocaleString());
} else if (gameState === 'owned_vehicles' && selectedVehicle) {
if (selectedVehicle.actualCondition === 'damaged' && !selectedVehicle.repaired) {
repairButton.visible = true;
@@ -333,8 +335,13 @@
} else {
infoText.setText('Select a vehicle to view options');
}
}
+// Add expertise button
+var expertiseButton = game.addChild(new Button('Expertise ($1500)', 0x9b59b6));
+expertiseButton.x = 2048 / 2 + 400;
+expertiseButton.y = 2200;
+expertiseButton.visible = false;
// Button event handlers
inspectButton.up = function (x, y, obj) {
if (selectedVehicle && playerMoney >= 500) {
playerMoney -= 500;
@@ -350,8 +357,33 @@
infoText.setText('Inspection confirmed seller was honest.');
}
}
};
+expertiseButton.up = function (x, y, obj) {
+ if (selectedVehicle && playerMoney >= 1500) {
+ playerMoney -= 1500;
+ selectedVehicle.inspected = true;
+ selectedVehicle.condition = selectedVehicle.actualCondition;
+ LK.getSound('inspect').play();
+ updateMoneyDisplay();
+ displayVehicles(dailyOffers);
+ updateUI();
+ var detailsText = 'EXPERTISE REPORT:\n';
+ detailsText += 'True Condition: ' + selectedVehicle.actualCondition + '\n';
+ detailsText += 'True Mileage: ' + selectedVehicle.mileage + 'k miles\n';
+ detailsText += 'Seller Honest: ' + (selectedVehicle.sellerLying ? 'NO' : 'YES') + '\n';
+ detailsText += 'Market Value: $' + selectedVehicle.marketValue.toLocaleString() + '\n';
+ detailsText += 'Recommended Action: ';
+ if (selectedVehicle.price < selectedVehicle.marketValue * 0.8) {
+ detailsText += 'BUY - Good Deal';
+ } else if (selectedVehicle.price > selectedVehicle.marketValue * 1.2) {
+ detailsText += 'AVOID - Overpriced';
+ } else {
+ detailsText += 'NEGOTIATE - Fair Price';
+ }
+ infoText.setText(detailsText);
+ }
+};
buyButton.up = function (x, y, obj) {
if (selectedVehicle && playerMoney >= selectedVehicle.price) {
playerMoney -= selectedVehicle.price;
selectedVehicle.actualCondition = selectedVehicle.actualCondition;
@@ -481,8 +513,57 @@
vehicle.down = function (x, y, obj) {
selectedVehicle = obj.vehicleData;
updateUI();
};
+ // Add action buttons for each owned vehicle
+ if (ownedVehicles[i].actualCondition === 'damaged' && !ownedVehicles[i].repaired) {
+ // Add repair button
+ var vehicleRepairButton = new Button('Repair ($3000)', 0xe67e22, 200, 60);
+ vehicleRepairButton.x = -100;
+ vehicleRepairButton.y = 150;
+ vehicle.addChild(vehicleRepairButton);
+ (function (vehicleData) {
+ vehicleRepairButton.up = function (x, y, obj) {
+ if (playerMoney >= 3000) {
+ playerMoney -= 3000;
+ vehicleData.repaired = true;
+ vehicleData.actualCondition = 'good';
+ vehicleData.marketValue = Math.floor(vehicleData.marketValue * 1.5);
+ LK.getSound('repair').play();
+ updateMoneyDisplay();
+ displayOwnedVehicles();
+ updateUI();
+ saveGame();
+ }
+ };
+ })(ownedVehicles[i]);
+ } else {
+ // Add sell button
+ var vehicleSellButton = new Button('Sell', 0x8e44ad, 200, 60);
+ vehicleSellButton.x = -100;
+ vehicleSellButton.y = 150;
+ vehicle.addChild(vehicleSellButton);
+ (function (vehicleData) {
+ vehicleSellButton.up = function (x, y, obj) {
+ var salePrice = Math.floor(vehicleData.marketValue * (Math.random() * 0.3 + 0.8));
+ playerMoney += salePrice;
+ // Remove from owned vehicles
+ for (var j = 0; j < ownedVehicles.length; j++) {
+ if (ownedVehicles[j].id === vehicleData.id) {
+ ownedVehicles.splice(j, 1);
+ break;
+ }
+ }
+ LK.getSound('sale').play();
+ selectedVehicle = null;
+ updateMoneyDisplay();
+ displayOwnedVehicles();
+ updateUI();
+ saveGame();
+ infoText.setText('Sold for $' + salePrice.toLocaleString() + '!');
+ };
+ })(ownedVehicles[i]);
+ }
}
}
function updateMoneyDisplay() {
moneyText.setText('Money: $' + playerMoney.toLocaleString());