Code edit (2 edits merged)
Please save this source code
User prompt
start screeni bu saydığım şeyler olmucak şekilde güncelle: -money texti -rolls hakları texti -timer texti -capacity texti -day texti -Click a customer to see details texti -counter -regular pill -enhanced pill
User prompt
oyun başlangıç ekranını arka tarafı gözükmücek şekilde yap.Sadece pharmacy tycoon ve altındaki manage your pharmacy yazısı yazsın bir de zorluk ayarlar ve başlatma butonları kalsın.
User prompt
ayarlar, zorluk seçimi ve başlat butonlarının olduğu bir start screen yapabilir misin farklı assetli.
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'moneyText.visible = false;' Line Number: 968
User prompt
start screen farklı bir ekran olsun oyun içi içerikleri gözükmesin
User prompt
oyunun başına başlangıç ekranı tasarla. Orda sadece kolay orta zor seviye seçme ve start game tuşu olsun . Bir de ayarlar tuşu da olsun
User prompt
roll hakları başlangıçta zor modda 2 orta modda 4 kolay modda 6 olsun
User prompt
vip customerların açıklamasında regular customer yerine vip customer yazsın. ilaç açıklması da bir alt satırda yazsın.
Code edit (5 edits merged)
Please save this source code
User prompt
oyundaki tüm eklentileri kaldır ve şimdi söyleyeceğim eklentileri koy 1-Random para versin -500 ila +500 arası bir para 2- 3 tane roll hakkı versin 3-Tüm upgradeleri 1 arttırsın. (Ama capacity 5 ise onu arttırmasın) 4-sonraki günler sürelerini 10sn arttırsın. 5-çift ilaç alabilen bazı müşteriler gelebilsin.(yeni customer ekle yeni assetli) 6-vip müşteri gelebilsin(yeni customer ekle yeni assetli.vip müşteri 2x para kazandırsın) 7-regular ilaçlar %15 şansla enhanced parasına satılsın 8-enhanced ilaçlar %15 şansla 2x gelir elde ettirsin 9-Gün bitiminde ilaç verdiğin customer başına 20dolar versin. 10-sonraki 2 gün 2kat fazla para kazandırsın 11-toplam gelirin 1.5kat artar ama müşteri sabrı %30 azalsın 12-enhanced 2x kat para kazandırır ama regular ilaçdan para kazanamazsın.
Code edit (5 edits merged)
Please save this source code
User prompt
Eklenti seçim ekranınında para ve roll haklarını gösteren textler olmaya devam etsin. Bir de özel eklenti seçimi yazan text en üstte olsun.Bir de eklentiler ve roll butonları çok küçük olmuş ekranın çoğunu kaplasın.
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Eklenti seçimleri 5. 10. 15. günlerin sonunda gelmek yerine 2. 4. 6. ve 8. günlerin sonunda gelsin.Başka günler gelmesin. Roll haklarmız olsun oyun başı 3 tane roll hakkımız olsun.Paranın hemen altında roll hakımızı yazan text bulunsun. Her eklentinin sağında bir tane roll atma butonu olsun roll atma butonu yuvarlak olsun yeni bir asset olsun.Bu buttona basınca solundaki eklentiyi random bir şekilde 1 kere değiştirsin.
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'name')' in or related to this line: 'var confirmDialog = game.addChild(new ConfirmationDialog(selectedAddon.name + '\n' + selectedAddon.description, 0, function () {' Line Number: 553
User prompt
Oyuna her 5. 10. ve 15. günün sonunda olmak üzere 3 kere eklenti seçim ekranı gelicek.Bu eklenti seçimlerinden hemen sonra yine o günün endofdaymenüsü gelicek.Eklenti seçim ekranı bütün ekranı kaplıcak arka taraf gözükmücek.Eklenti seçim ekranında random olarak 3 tane eklenti çıkıcak ve eklentiyi seçtiğimizde evet ya da hayır sorusu gelicek evete tıklarsak eklentiyi seçmiş olucaz hayıra tıklarsak seçmemiş olucaz.
Code edit (1 edits merged)
Please save this source code
User prompt
customerlar ekranda tam olarak random çıkmasın. customerların çıkabileceği 5 tane yer olsun ve customerlar bu 5 yerden birinde random şekilde çıkabilsin. bu 5 yer de birbirine eşit uzaklıkta olsun ki customerlar birbirine çarpmasın.
Code edit (6 edits merged)
Please save this source code
User prompt
endofdaymenüsü başladığında müzik hemen başlamıyor onu düzeltebilir misin
User prompt
customer speed upgrade arttıkça math.random şartındaki sabit 0.7 olan sayı da artsın.
Code edit (2 edits merged)
Please save this source code
User prompt
oyunda bir bug var süre bittikten sonraki müşteri ilaç vermeden kendisi ayrılırsa bug oluyor ve devam etmiyor oyun.Onu düzeltebilecen mi
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var ConfirmationDialog = Container.expand(function (message, cost, onConfirm) {
var self = Container.call(this);
// Dialog background - covers entire screen to block clicks
var dialogBg = self.attachAsset('pharmacyBackground', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
scaleX: 1.0,
scaleY: 1.0
});
dialogBg.tint = 0x000000;
dialogBg.alpha = 1.0;
// Add click handler to background to prevent clicks from going through
dialogBg.down = function (x, y, obj) {
// Do nothing - this blocks clicks from reaching other elements
};
// Confirmation message
var messageText = new Text2('Yükseltmek ister misin?\n' + message + '\nMaliyet: $' + cost, {
size: 60,
fill: 0xFFFFFF,
font: 'Comic Sans MS'
});
messageText.anchor.set(0.5, 0.5);
messageText.x = 1024;
messageText.y = 1200;
self.addChild(messageText);
// Yes button
var yesButton = self.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 824,
y: 1500,
scaleX: 1.5,
scaleY: 1.5
}));
yesButton.tint = 0x228b22;
var yesText = new Text2('EVET', {
size: 50,
fill: 0xFFFFFF,
font: 'Comic Sans MS'
});
yesText.anchor.set(0.5, 0.5);
yesText.x = 824;
yesText.y = 1500;
self.addChild(yesText);
// No button
var noButton = self.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1224,
y: 1500,
scaleX: 1.5,
scaleY: 1.5
}));
noButton.tint = 0xcc0000;
var noText = new Text2('HAYIR', {
size: 50,
fill: 0xFFFFFF,
font: 'Comic Sans MS'
});
noText.anchor.set(0.5, 0.5);
noText.x = 1224;
noText.y = 1500;
self.addChild(noText);
// Event handlers
yesButton.down = function (x, y, obj) {
onConfirm();
self.destroy();
};
noButton.down = function (x, y, obj) {
self.destroy();
};
return self;
});
var Customer = Container.expand(function () {
var self = Container.call(this);
self.isSuspicious = Math.random() < 0.3;
self.willReport = self.isSuspicious ? false : Math.random() < 0.4;
self.served = false;
self.timeOnScreen = 0;
// Define customer types
var customerTypes = ['customer', 'customerElderly', 'customerYoung', 'customerBusiness'];
var selectedType = self.isSuspicious ? 'suspiciousCustomer' : customerTypes[Math.floor(Math.random() * customerTypes.length)];
self.customerType = selectedType;
var customerGraphics = self.attachAsset(selectedType, {
anchorX: 0.5,
anchorY: 1.0,
scaleX: 1.5,
scaleY: 1.5
});
self.regularPayment = 10 + Math.floor(Math.random() * 11);
self.enhancedPayment = Math.floor((self.regularPayment + regularUpgradeBonus) * enhancedMultiplier);
self.update = function () {
self.timeOnScreen++;
if (self.timeOnScreen > 600 && !self.served) {
self.leaveAngry();
}
};
self.serveRegular = function () {
if (self.served) {
return;
}
self.served = true;
var earnedAmount = self.regularPayment + regularUpgradeBonus;
money += earnedAmount;
LK.getSound('cashRegister').play();
self.showMoneyEarned(earnedAmount);
self.leave();
};
self.serveEnhanced = function () {
if (self.served) {
return;
}
self.served = true;
if (self.willReport) {
var penaltyAmount = 15 * day;
money -= penaltyAmount;
LK.getSound('warning').play();
penalties++;
self.showMoneyLost(penaltyAmount);
} else {
var enhancedAmount = Math.floor((self.regularPayment + regularUpgradeBonus) * enhancedMultiplier);
money += enhancedAmount;
LK.getSound('cashRegister').play();
self.showMoneyEarned(enhancedAmount);
}
self.leave();
};
self.leave = function () {
tween(self, {
alpha: 0,
y: self.y - 100
}, {
duration: 500,
onFinish: function onFinish() {
self.destroy();
}
});
};
self.leaveAngry = function () {
var penaltyAmount = 10 + Math.floor(Math.random() * 11) + 5 * (day - 1);
money -= penaltyAmount;
self.served = true; // Mark as served so it gets removed from customers array
self.showMoneyLost(penaltyAmount);
self.leave();
};
self.showMoneyEarned = function (amount) {
var moneyText = new Text2('+$' + amount, {
size: 50,
fill: 0x00FF00,
font: 'Comic Sans MS'
});
moneyText.anchor.set(0.5, 0.5);
moneyText.x = self.x;
moneyText.y = self.y - 150;
game.addChild(moneyText);
tween(moneyText, {
y: moneyText.y - 100,
alpha: 0
}, {
duration: 1500,
onFinish: function onFinish() {
moneyText.destroy();
}
});
};
self.showMoneyLost = function (amount) {
var moneyText = new Text2('-$' + amount, {
size: 50,
fill: 0xFF0000,
font: 'Comic Sans MS'
});
moneyText.anchor.set(0.5, 0.5);
moneyText.x = self.x;
moneyText.y = self.y - 150;
game.addChild(moneyText);
tween(moneyText, {
y: moneyText.y - 100,
alpha: 0
}, {
duration: 1500,
onFinish: function onFinish() {
moneyText.destroy();
}
});
};
return self;
});
var EndOfDayMenu = Container.expand(function () {
var self = Container.call(this);
// Start menu music immediately when menu is created
LK.playMusic('menuMusic');
// Menu background
var menuBg = self.attachAsset('pharmacyBackground', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
scaleX: 0.8,
scaleY: 0.6
});
menuBg.tint = 0x000000;
menuBg.alpha = 0.8;
// Menu title - Day Complete at top, moved higher
var menuTitle = new Text2('Day ' + day + ' Complete!', {
size: 160,
fill: 0xFFFFFF,
font: 'Comic Sans MS'
});
menuTitle.anchor.set(0.5, 0.5);
menuTitle.x = 1024;
menuTitle.y = 650;
self.addChild(menuTitle);
// Daily earnings text - below title
var earningsText = new Text2('Total Money: $' + money, {
size: 70,
fill: 0xFFFFFF,
font: 'Comic Sans MS'
});
earningsText.anchor.set(0.5, 0.5);
earningsText.x = 1024;
earningsText.y = 880;
self.addChild(earningsText);
// Capacity upgrade button - center top with more spacing (only show if capacity < 5)
var capacityButton = null;
var capacityText = null;
if (pharmacyCapacity < 5) {
capacityButton = self.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 2050,
scaleX: 2.5,
scaleY: 2.5
}));
var capacityCost = 150 + (pharmacyCapacity - 1) * 50;
capacityText = new Text2('Upgrade\nCapacity\n$' + capacityCost, {
size: 55,
fill: 0xFFFFFF,
font: 'Comic Sans MS'
});
capacityText.anchor.set(0.5, 0.5);
capacityText.x = 1024;
capacityText.y = 2050;
self.addChild(capacityText);
}
// Regular payment upgrade button - center middle with proper spacing
var regularUpgradeButton = self.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1450,
scaleX: 2.5,
scaleY: 2.5
}));
var regularUpgradeCost = 200 + (regularUpgradeLevel - 1) * 50;
var regularUpgradeText = new Text2('Upgrade\nRegular\n$' + regularUpgradeCost, {
size: 55,
fill: 0xFFFFFF,
font: 'Comic Sans MS'
});
regularUpgradeText.anchor.set(0.5, 0.5);
regularUpgradeText.x = 1024;
regularUpgradeText.y = 1450;
self.addChild(regularUpgradeText);
// Enhanced multiplier upgrade button - center bottom with proper spacing
var enhancedUpgradeButton = self.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1750,
scaleX: 2.5,
scaleY: 2.5
}));
var enhancedUpgradeCost = 300 + (enhancedUpgradeLevel - 1) * 50;
var enhancedUpgradeText = new Text2('Upgrade\nEnhanced\n$' + enhancedUpgradeCost, {
size: 55,
fill: 0xFFFFFF,
font: 'Comic Sans MS'
});
enhancedUpgradeText.anchor.set(0.5, 0.5);
enhancedUpgradeText.x = 1024;
enhancedUpgradeText.y = 1750;
self.addChild(enhancedUpgradeText);
// Customer speed upgrade button
var customerSpeedButton = self.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1150,
scaleX: 2.5,
scaleY: 2.5
}));
var customerSpeedCost = 250 + customerSpeedUpgrade * 75;
var customerSpeedText = new Text2('Upgrade\nCustomer Speed\n$' + customerSpeedCost, {
size: 55,
fill: 0xFFFFFF,
font: 'Comic Sans MS'
});
customerSpeedText.anchor.set(0.5, 0.5);
customerSpeedText.x = 1024;
customerSpeedText.y = 1150;
self.addChild(customerSpeedText);
// Next day button - bottom right, moved lower
var nextDayButton = self.addChild(LK.getAsset('nextDayButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1600,
y: 2190,
scaleX: 1.5,
scaleY: 1.5
}));
var nextDayText = new Text2('Next Day', {
size: 50,
fill: 0xFFFFFF,
font: 'Comic Sans MS'
});
nextDayText.anchor.set(0.5, 0.5);
nextDayText.x = 1600;
nextDayText.y = 2190;
self.addChild(nextDayText);
// Event handlers
if (capacityButton) {
capacityButton.down = function (x, y, obj) {
var capacityCost = 150 + (pharmacyCapacity - 1) * 50;
if (money >= capacityCost && pharmacyCapacity < 5) {
var confirmDialog = game.addChild(new ConfirmationDialog('Kapasite Yükseltmesi', capacityCost, function () {
money -= capacityCost;
pharmacyCapacity++;
earningsText.setText('Total Money: $' + money);
moneyText.setText('Money: $' + money);
capacityText2.setText('Capacity: ' + pharmacyCapacity);
if (pharmacyCapacity >= 5) {
capacityButton.destroy();
capacityText.destroy();
} else {
capacityText.setText('Upgrade\nCapacity\n$' + (150 + (pharmacyCapacity - 1) * 50));
}
regularLabel.setText('Regular ($' + (10 + regularUpgradeBonus) + '-' + (20 + regularUpgradeBonus) + ')');
enhancedLabel.setText('Enhanced (' + enhancedMultiplier.toFixed(1) + 'x profit)');
}));
}
};
}
regularUpgradeButton.down = function (x, y, obj) {
var regularUpgradeCost = 200 + (regularUpgradeLevel - 1) * 50;
if (money >= regularUpgradeCost) {
var confirmDialog = game.addChild(new ConfirmationDialog('Normal İlaç Yükseltmesi', regularUpgradeCost, function () {
money -= regularUpgradeCost;
regularUpgradeLevel++;
regularUpgradeBonus += 5;
earningsText.setText('Total Money: $' + money);
moneyText.setText('Money: $' + money);
regularUpgradeText.setText('Upgrade\nRegular\n$' + (200 + (regularUpgradeLevel - 1) * 50));
regularLabel.setText('Regular ($' + (10 + regularUpgradeBonus) + '-' + (20 + regularUpgradeBonus) + ')');
enhancedLabel.setText('Enhanced (' + enhancedMultiplier.toFixed(1) + 'x profit)');
}));
}
};
enhancedUpgradeButton.down = function (x, y, obj) {
var enhancedUpgradeCost = 300 + (enhancedUpgradeLevel - 1) * 50;
if (money >= enhancedUpgradeCost) {
var confirmDialog = game.addChild(new ConfirmationDialog('Gelişmiş İlaç Yükseltmesi', enhancedUpgradeCost, function () {
money -= enhancedUpgradeCost;
enhancedUpgradeLevel++;
enhancedMultiplier += 0.2;
earningsText.setText('Total Money: $' + money);
moneyText.setText('Money: $' + money);
enhancedUpgradeText.setText('Upgrade\nEnhanced\n$' + (300 + (enhancedUpgradeLevel - 1) * 50));
regularLabel.setText('Regular ($' + (10 + regularUpgradeBonus) + '-' + (20 + regularUpgradeBonus) + ')');
enhancedLabel.setText('Enhanced (' + enhancedMultiplier.toFixed(1) + 'x profit)');
}));
}
};
customerSpeedButton.down = function (x, y, obj) {
var customerSpeedCost = 250 + customerSpeedUpgrade * 75;
if (money >= customerSpeedCost) {
var confirmDialog = game.addChild(new ConfirmationDialog('Müşteri Hızı Yükseltmesi', customerSpeedCost, function () {
money -= customerSpeedCost;
customerSpeedUpgrade++;
earningsText.setText('Total Money: $' + money);
moneyText.setText('Money: $' + money);
customerSpeedText.setText('Upgrade\nCustomer Speed\n$' + (250 + customerSpeedUpgrade * 75));
}));
}
};
nextDayButton.down = function (x, y, obj) {
nextDay();
self.destroy();
endOfDayMenu = null;
gameRunning = true;
LK.playMusic('gameplayMusic');
};
return self;
});
var MedicationButton = Container.expand(function (type) {
var self = Container.call(this);
self.type = type;
var buttonGraphics = self.attachAsset(type === 'regular' ? 'regularPill' : 'greenSubstance', {
anchorX: 0.5,
anchorY: 0.5
});
self.down = function (x, y, obj) {
if (selectedCustomer && !selectedCustomer.served) {
if (self.type === 'regular') {
selectedCustomer.serveRegular();
} else {
selectedCustomer.serveEnhanced();
}
selectedCustomer = null;
updateCustomerInfo();
}
};
return self;
});
var StartScreen = Container.expand(function () {
var self = Container.call(this);
// Start screen background
var startBg = self.attachAsset('startBackground', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366
});
// Game title
var titleText = new Text2('Pharmacy Tycoon', {
size: 250,
fill: 0x0a1df0,
font: 'Comic Sans MS'
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 800;
self.addChild(titleText);
// Subtitle
var subtitleText = new Text2('Manage your pharmacy and serve customers!', {
size: 95,
fill: 0x000000,
font: 'Comic Sans MS'
});
subtitleText.anchor.set(0.5, 0.5);
subtitleText.x = 1024;
subtitleText.y = 1050;
self.addChild(subtitleText);
// Difficulty selection
self.selectedDifficulty = 'normal'; // Default difficulty
// Easy difficulty button
var easyButton = self.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 512,
y: 1300,
scaleX: 1.5,
scaleY: 1.5
}));
easyButton.tint = 0x90EE90;
var easyText = new Text2('KOLAY', {
size: 45,
fill: 0x000000,
font: 'Comic Sans MS'
});
easyText.anchor.set(0.5, 0.5);
easyText.x = 512;
easyText.y = 1300;
self.addChild(easyText);
// Normal difficulty button
var normalButton = self.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1300,
scaleX: 1.5,
scaleY: 1.5
}));
normalButton.tint = 0x12aae6;
var normalText = new Text2('ORTA', {
size: 45,
fill: 0x000000,
font: 'Comic Sans MS'
});
normalText.anchor.set(0.5, 0.5);
normalText.x = 1024;
normalText.y = 1300;
self.addChild(normalText);
// Hard difficulty button
var hardButton = self.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1536,
y: 1300,
scaleX: 1.5,
scaleY: 1.5
}));
hardButton.tint = 0xf74a59;
var hardText = new Text2('ZOR', {
size: 45,
fill: 0x000000,
font: 'Comic Sans MS'
});
hardText.anchor.set(0.5, 0.5);
hardText.x = 1536;
hardText.y = 1300;
self.addChild(hardText);
// Update button appearance based on selection
function updateDifficultyButtons() {
easyButton.alpha = self.selectedDifficulty === 'easy' ? 1.0 : 0.6;
normalButton.alpha = self.selectedDifficulty === 'normal' ? 1.0 : 0.6;
hardButton.alpha = self.selectedDifficulty === 'hard' ? 1.0 : 0.6;
}
// Initial update
updateDifficultyButtons();
// Difficulty button events
easyButton.down = function (x, y, obj) {
self.selectedDifficulty = 'easy';
updateDifficultyButtons();
};
normalButton.down = function (x, y, obj) {
self.selectedDifficulty = 'normal';
updateDifficultyButtons();
};
hardButton.down = function (x, y, obj) {
self.selectedDifficulty = 'hard';
updateDifficultyButtons();
};
// Start button
var startButton = self.addChild(LK.getAsset('startButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1500
}));
var startButtonText = new Text2('START GAME', {
size: 50,
fill: 0x000000,
font: 'Comic Sans MS'
});
startButtonText.anchor.set(0.5, 0.5);
startButtonText.x = 1024;
startButtonText.y = 1500;
self.addChild(startButtonText);
// Start button event
startButton.down = function (x, y, obj) {
gameDifficulty = self.selectedDifficulty;
startGame();
self.destroy();
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xf0f8ff
});
/****
* Game Code
****/
// Game variables
var money = 0;
var day = 1;
var pharmacyCapacity = 1;
var penalties = 0;
var customers = [];
var selectedCustomer = null;
var dayTimer = 0;
var dayLength = 1800; // 30 seconds per day
var customersServedToday = 0;
var customersNeededToday = Math.floor(Math.random() * 7) + 2;
var endOfDayMenu = null;
var gameRunning = false;
var gameStarted = false;
var regularUpgradeBonus = 0;
var enhancedMultiplier = 1.5;
var customerSpeedUpgrade = 0;
var gameDifficulty = 'normal'; // Default difficulty
var regularUpgradeLevel = 1;
var enhancedUpgradeLevel = 1;
// Add pharmacy background
var pharmacyBg = game.addChild(LK.getAsset('pharmacyBackground', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366
}));
// Show start screen
var startScreen = game.addChild(new StartScreen());
// UI Elements
var moneyText = new Text2('Money: $' + money, {
size: 80,
fill: 0x000000,
font: 'Comic Sans MS'
});
moneyText.anchor.set(0, 0);
moneyText.x = 50;
moneyText.y = 50;
game.addChild(moneyText);
var dayText = new Text2('Day ' + day, {
size: 80,
fill: 0x000000,
font: 'Comic Sans MS'
});
dayText.anchor.set(1, 0);
dayText.x = 1998;
dayText.y = 50;
game.addChild(dayText);
var timerText = new Text2('Time: ' + Math.ceil((dayLength - dayTimer) / 60), {
size: 80,
fill: 0x000000,
font: 'Comic Sans MS'
});
timerText.anchor.set(0.5, 0);
timerText.x = 1024;
timerText.y = 50;
game.addChild(timerText);
var modeText = new Text2('', {
size: 80,
fill: 0x000000,
font: 'Comic Sans MS'
});
modeText.anchor.set(0.5, 0);
modeText.x = 1750; // Positioned between money (50) and timer (1024)
modeText.y = 175;
game.addChild(modeText);
var capacityText2 = new Text2('Capacity: ' + pharmacyCapacity, {
size: 80,
fill: 0x000000,
font: 'Comic Sans MS'
});
capacityText2.anchor.set(0.5, 0);
capacityText2.x = 1511; // Positioned between timer (1024) and day (1998)
capacityText2.y = 50;
game.addChild(capacityText2);
var customerInfoText = new Text2('Click a customer to see details', {
size: 100,
fill: 0x000000,
font: 'Comic Sans MS'
});
customerInfoText.anchor.set(0.5, 0);
customerInfoText.x = 1024;
customerInfoText.y = 300;
game.addChild(customerInfoText);
// Pharmacy counter
var counter = game.addChild(LK.getAsset('counter', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 2500
}));
// Medication buttons
var regularButton = game.addChild(new MedicationButton('regular'));
regularButton.x = 1024;
regularButton.y = 1900;
regularButton.scaleX = 2;
regularButton.scaleY = 2;
var enhancedButton = game.addChild(new MedicationButton('enhanced'));
enhancedButton.x = 1024;
enhancedButton.y = 2275;
enhancedButton.scaleX = 2;
enhancedButton.scaleY = 2;
// Button labels
var regularLabel = new Text2('Regular ($' + (10 + regularUpgradeBonus) + '-' + (20 + regularUpgradeBonus) + ')', {
size: 70,
fill: 0xf70505,
font: 'Comic Sans MS'
});
regularLabel.anchor.set(0.5, 0);
regularLabel.x = 1024;
regularLabel.y = 2017;
game.addChild(regularLabel);
var enhancedLabel = new Text2('Enhanced (' + enhancedMultiplier.toFixed(1) + 'x profit)', {
size: 70,
fill: 0x228B22,
font: 'Comic Sans MS'
});
enhancedLabel.anchor.set(0.5, 0);
enhancedLabel.x = 1024;
enhancedLabel.y = 2392;
game.addChild(enhancedLabel);
// Define 5 fixed customer spawn positions
var customerSpawnPositions = [{
x: 204,
y: 1760
},
// Position 1
{
x: 614,
y: 1760
},
// Position 2
{
x: 1024,
y: 1760
},
// Position 3 (center)
{
x: 1434,
y: 1760
},
// Position 4
{
x: 1844,
y: 1760
} // Position 5
];
// Functions
function spawnCustomer() {
// Limit to maximum customers based on pharmacy capacity
if (customers.length >= pharmacyCapacity) {
return;
}
// Find available spawn positions
var availablePositions = [];
for (var posIndex = 0; posIndex < customerSpawnPositions.length; posIndex++) {
var position = customerSpawnPositions[posIndex];
var occupied = false;
// Check if this position is already occupied
for (var j = 0; j < customers.length; j++) {
var distance = Math.sqrt(Math.pow(customers[j].x - position.x, 2) + Math.pow(customers[j].y - position.y, 2));
if (distance < 200) {
// Reduced distance threshold since positions are fixed
occupied = true;
break;
}
}
if (!occupied) {
availablePositions.push(position);
}
}
// If no positions available, return
if (availablePositions.length === 0) {
return;
}
// Select random available position
var selectedPosition = availablePositions[Math.floor(Math.random() * availablePositions.length)];
var customer = new Customer();
customer.x = selectedPosition.x;
customer.y = selectedPosition.y;
customer.down = function (x, y, obj) {
selectedCustomer = customer;
updateCustomerInfo();
};
customers.push(customer);
game.addChild(customer);
}
function updateCustomerInfo() {
if (selectedCustomer && !selectedCustomer.served) {
var info = '';
if (selectedCustomer.isSuspicious) {
info = 'Suspicious customer\n - might accept enhanced medication';
} else {
var typeDescriptions = {
'customer': 'Regular adult customer\n',
'customerElderly': 'Elderly customer with chronic conditions\n',
'customerYoung': 'Young customer with minor ailments\n',
'customerBusiness': 'Business person, always in a hurry\n'
};
var baseDesc = typeDescriptions[selectedCustomer.customerType] || 'Regular customer';
info = baseDesc + ' - ' + (selectedCustomer.willReport ? 'might report illegal activity!' : 'seems trustworthy');
}
customerInfoText.setText(info);
} else {
customerInfoText.setText('Click a customer to see details');
}
}
function updateUI() {
moneyText.setText('Money: $' + money);
dayText.setText('Day ' + day);
var remainingTime = Math.max(0, Math.ceil((dayLength - dayTimer) / 60));
timerText.setText('Time: ' + remainingTime);
capacityText2.setText('Capacity: ' + pharmacyCapacity);
}
function nextDay() {
day++;
dayTimer = 0;
customersServedToday = 0;
customersNeededToday = Math.floor(Math.random() * 7) + 2;
penalties = 0;
selectedCustomer = null;
// Clear remaining customers
for (var i = customers.length - 1; i >= 0; i--) {
customers[i].destroy();
}
customers = [];
// Save progress
storage.money = money;
storage.day = day;
storage.pharmacyCapacity = pharmacyCapacity;
updateCustomerInfo();
}
// Functions
function startGame() {
gameStarted = true;
gameRunning = true;
// Initialize upgrade levels
regularUpgradeLevel = 1;
enhancedUpgradeLevel = 1;
// Set difficulty-based starting values
if (gameDifficulty === 'easy') {
money = 500;
regularUpgradeBonus = 20; // Regular 30-40 instead of 10-20
enhancedMultiplier = 2.1; // Enhanced 3x instead of 1.5x
} else if (gameDifficulty === 'normal') {
money = 250;
regularUpgradeBonus = 10; // Regular 20-30 instead of 10-20
enhancedMultiplier = 1.7; // Enhanced 2x instead of 1.5x
} else {
// hard mode
money = 100; // Keep current starting money
regularUpgradeBonus = 0; // Keep current values (10-20)
enhancedMultiplier = 1.5; // Keep current multiplier
}
// Update mode text based on selected difficulty
var modeDisplayText = gameDifficulty === 'easy' ? 'Kolay' : gameDifficulty === 'hard' ? 'Zor' : 'Orta';
modeText.setText('Mode: ' + modeDisplayText);
// Update UI elements with new values
updateUI();
regularLabel.setText('Regular ($' + (10 + regularUpgradeBonus) + '-' + (20 + regularUpgradeBonus) + ')');
enhancedLabel.setText('Enhanced (' + enhancedMultiplier.toFixed(1) + 'x profit)');
LK.playMusic('gameplayMusic');
}
// Event handlers
game.update = function () {
if (!gameStarted || !gameRunning) {
return;
}
dayTimer++;
// Check if day time is over AND no customers remain
if (dayTimer >= dayLength && customers.length === 0) {
dayTimer = dayLength; // Prevent timer from going below 0
gameRunning = false;
if (!endOfDayMenu) {
endOfDayMenu = game.addChild(new EndOfDayMenu());
}
return;
}
// Clamp dayTimer to prevent negative display
if (dayTimer > dayLength) {
dayTimer = dayLength;
}
// Spawn customers randomly - faster with upgrades (only if time hasn't run out)
var baseSpawnRate = 120;
var adjustedSpawnRate = Math.max(30, baseSpawnRate - customerSpeedUpgrade * 10);
var spawnProbability = Math.min(0.95, 0.7 + customerSpeedUpgrade * 0.05);
if (dayTimer < dayLength && LK.ticks % adjustedSpawnRate === 0 && Math.random() < spawnProbability) {
spawnCustomer();
}
// Remove served customers
for (var i = customers.length - 1; i >= 0; i--) {
var customer = customers[i];
if (customer.served && customer.alpha <= 0) {
customers.splice(i, 1);
customersServedToday++;
}
}
// Check win condition
if (money >= 10000) {
LK.showYouWin();
}
// Check lose condition
if (money < 0) {
LK.showGameOver();
}
updateUI();
}; ===================================================================
--- original.js
+++ change.js
@@ -689,9 +689,9 @@
enhancedLabel.y = 2392;
game.addChild(enhancedLabel);
// Define 5 fixed customer spawn positions
var customerSpawnPositions = [{
- x: 256,
+ x: 204,
y: 1760
},
// Position 1
{
@@ -709,9 +709,9 @@
y: 1760
},
// Position 4
{
- x: 1792,
+ x: 1844,
y: 1760
} // Position 5
];
// Functions
normal bir customer çiz önden bakılmış bir şekilde. In-Game asset. 2d. High contrast. No shadows
2d iş adamı bir customer çiz önden bakılmış şekilde. In-Game asset. 2d. High contrast. No shadows
bana keko gözüken bir customer çiz 2d olsun önden gözüksün. In-Game asset. 2d. High contrast. No shadows
daire şeklinde olsun görsel izometrik açıdan bakalım ilaç resmi olsun normal içilen ilaç. In-Game asset. 2d. High contrast. No shadows
arka planı mavi değil yeşil olsun
dikdörtgen şeklinde bir counter yapacaksın ama sadece counter insan falan olmucak ve biz bu countera üstten bakıyoruz 2d olsun. Üstünde bir kaç ilaç resmi olabilir ama ortasında olmasın sağında ve solunda olsun. In-Game asset. 2d. High contrast. No shadows
vip bir customer çiz sarı ceketli olsun ve sarı saçlı olsun önden bakılmış bir şekilde. In-Game asset. 2d. High contrast. No shadows. In-Game asset. 2d. High contrast. No shadows
çok hasta bir kadın customer çiz önden bakılmış bir şekilde yazısız olsun. In-Game asset. 2d. High contrast. No shadows. In-Game asset. 2d. High contrast. No shadows