User prompt
Şimdi oyundaki eşya verme süreci şöyle olacak birinin canı gittiğinde bize eşyalar verilecek ve bu eşyaları kullanırsak kullandığımız eşya yok olacak ve geriye kalan eşyalarla devam edeceğiz bunu kodla ve yap
User prompt
Dedigim şeyi yeniden kodla
User prompt
Birde karşı takımın eşyalarını görebilmem lazım
User prompt
Eşyaların dizilim şöyle olsun ortadaki aynı yerinde kalsın sağdaki ve soldaki eşyalar biraz daha aşağıya getirilsin
User prompt
Bana bütüün çıkan eşyaların ne işe yaradığı ne çıktığına göre altına yazsın
User prompt
E tamam da bu eşyaların özellikleri yok yap hepsine bi özellik
User prompt
Eşyaların aralığını baya uzaklaştır
User prompt
Please fix the bug: 'TypeError: eval is not a function' in or related to this line: 'if (eval(healthVar) < maxHealth) {' Line Number: 509
User prompt
Eşyaların her tur gelip oynanabilmesini sağla
User prompt
Şimdi oyuna herkesin kullanabileceği karşıdaki yapay zekanın bile kullanabileceği bazı hatta bir sürü eşya yap
Code edit (1 edits merged)
Please save this source code
User prompt
Buckshot Roulette: Mobile Edition
Initial prompt
Buckshot roulette mobile bir oyunu yap oyundaki herşey olsun mesela eşyalar (1.22 deki eşyalar bile) canlar falan hepsi olsun yap bakam ve orijinaline benzetmeye özen göster hemde neredeyse aynısını yap
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Revolver Chamber Slot
var ChamberSlot = Container.expand(function () {
var self = Container.call(this);
// Each slot can be: 'blank', 'live', or a special item (e.g., 'buckshot', 'xray', etc.)
self.type = 'blank'; // default
// Visual representation
var slotAsset = self.attachAsset('chamberSlot', {
anchorX: 0.5,
anchorY: 0.5
});
// Set type and update color
self.setType = function (type) {
self.type = type;
// Color code: blank=gray, live=red, buckshot=orange, xray=blue, etc.
var color = 0x888888;
if (type === 'live') color = 0xd83318;else if (type === 'buckshot') color = 0xffa500;else if (type === 'xray') color = 0x3399ff;
// ...add more as needed
slotAsset.color = color;
};
// Animate highlight (e.g., when firing)
self.flash = function () {
tween(slotAsset, {
alpha: 0.2
}, {
duration: 100,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(slotAsset, {
alpha: 1
}, {
duration: 200
});
}
});
};
return self;
});
// Health Bar
var HealthBar = Container.expand(function () {
var self = Container.call(this);
self.maxHealth = 6;
self.health = 6;
// Visual: 6 rectangles
self.segments = [];
var segW = 60,
segH = 30,
gap = 10;
for (var i = 0; i < self.maxHealth; i++) {
var seg = self.attachAsset('healthSeg', {
anchorX: 0.5,
anchorY: 0.5,
x: i * (segW + gap),
color: 0x83de44
});
self.segments.push(seg);
}
// Set health (0 to maxHealth)
self.setHealth = function (val) {
self.health = val;
for (var i = 0; i < self.maxHealth; i++) {
self.segments[i].alpha = i < val ? 1 : 0.2;
}
};
// Animate damage
self.flashDamage = function () {
for (var i = 0; i < self.maxHealth; i++) {
if (i === self.health) {
tween(self.segments[i], {
alpha: 0.2
}, {
duration: 200
});
}
}
};
// Animate heal
self.flashHeal = function () {
for (var i = 0; i < self.maxHealth; i++) {
if (i === self.health - 1) {
tween(self.segments[i], {
alpha: 1
}, {
duration: 200
});
}
}
};
return self;
});
// Item Button
var ItemButton = Container.expand(function () {
var self = Container.call(this);
self.itemId = null;
self.onUse = null;
// Visual: icon
var icon = self.attachAsset('itemIcon', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
// Label
var label = new Text2('', {
size: 40,
fill: "#fff"
});
label.anchor.set(0.5, 0);
label.y = 50;
self.addChild(label);
// Set item
self.setItem = function (itemId, labelText) {
self.itemId = itemId;
label.setText(labelText);
// Color code or icon change by itemId if desired
};
// Touch event
self.down = function (x, y, obj) {
if (self.onUse) self.onUse(self.itemId);
};
return self;
});
// Revolver
var Revolver = Container.expand(function () {
var self = Container.call(this);
// 6 chambers, arranged in a circle
self.chambers = [];
self.currentChamber = 0; // index of chamber to fire
// Visual: revolver body
var body = self.attachAsset('revolverBody', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
// Place chambers in a circle
var centerX = 0,
centerY = 0,
radius = 120;
for (var i = 0; i < 6; i++) {
var angle = Math.PI * 2 / 6 * i - Math.PI / 2;
var slot = new ChamberSlot();
slot.x = centerX + Math.cos(angle) * radius;
slot.y = centerY + Math.sin(angle) * radius;
slot.setType('blank');
self.addChild(slot);
self.chambers.push(slot);
}
// Set chamber types (array of 6: 'blank', 'live', etc.)
self.setChambers = function (types) {
for (var i = 0; i < 6; i++) {
self.chambers[i].setType(types[i]);
}
};
// Spin the chamber (randomize currentChamber)
self.spin = function () {
self.currentChamber = Math.floor(Math.random() * 6);
};
// Advance to next chamber
self.advance = function () {
self.currentChamber = (self.currentChamber + 1) % 6;
};
// Get type of current chamber
self.getCurrentType = function () {
return self.chambers[self.currentChamber].type;
};
// Animate firing (flash current chamber)
self.flashCurrent = function () {
self.chambers[self.currentChamber].flash();
};
// Reveal all chambers (for xray, etc.)
self.revealAll = function () {
for (var i = 0; i < 6; i++) {
this.chambers[i].alpha = 1;
}
};
// Hide all chambers (normal state)
self.hideAll = function () {
for (var i = 0; i < 6; i++) {
this.chambers[i].alpha = 0.5;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x181818
});
/****
* Game Code
****/
// We'll use tween for simple animations (e.g., health bar changes, shell movement)
/*
We will use simple shapes for the revolver, shells, health bars, and item icons.
Assets will be initialized automatically by LK based on usage.
*/
// --- Game State ---
var playerHealth = 6;
var enemyHealth = 6;
var maxHealth = 6;
var playerItems = []; // Array of item ids
var enemyItems = [];
var revolverChambers = ['blank', 'live', 'blank', 'blank', 'blank', 'blank']; // Will be randomized
var currentTurn = 'player'; // 'player' or 'enemy'
var gamePhase = 'action'; // 'action', 'item', 'shop', etc.
var shopItems = ['xray', 'cigarette', 'adrenaline', 'magnifier', 'buckshot', 'whiskey', 'painkillers', 'mirror', 'tape', 'shellPuller', 'blankBullets', 'scope', 'handcuffs', 'deflector', 'lighter', 'coin', 'cigarettePack', 'cigaretteCase', 'cigaretteLighter', 'cigaretteFilter', 'cigarettePaper', 'cigaretteTobacco', 'cigaretteButt', 'cigaretteAsh', 'cigaretteBurn', 'cigaretteSmoke', 'cigaretteEmber', 'cigaretteTip', 'cigaretteRoll', 'cigaretteBox', 'cigaretteCarton', 'cigaretteBrand', 'cigaretteLogo', 'cigaretteSticker', 'cigaretteFoil', 'cigaretteCellophane', 'cigaretteTaxStamp', 'cigaretteWarning', 'cigaretteBarcode', 'cigaretteSerial', 'cigaretteBatch', 'cigaretteDate', 'cigaretteFactory', 'cigaretteCountry', 'cigaretteImport', 'cigaretteExport', 'cigaretteDuty', 'cigaretteTar', 'cigaretteNicotine', 'cigaretteCarbonMonoxide', 'cigaretteAdditive', 'cigaretteFlavor', 'cigaretteMenthol', 'cigaretteClove', 'cigaretteHerbal', 'cigaretteOrganic', 'cigaretteLight', 'cigaretteUltraLight', 'cigaretteSlim', 'cigaretteSuperSlim', 'cigaretteMini', 'cigaretteKingSize', 'cigarette100s', 'cigarette120s', 'cigaretteLong', 'cigaretteShort', 'cigaretteRegular', 'cigaretteSpecial', 'cigaretteLimited', 'cigaretteEdition', 'cigaretteVintage', 'cigaretteClassic', 'cigarettePremium', 'cigaretteGold', 'cigaretteSilver', 'cigarettePlatinum', 'cigaretteDiamond', 'cigaretteRuby', 'cigaretteSapphire', 'cigaretteEmerald', 'cigarettePearl', 'cigaretteCrystal', 'cigaretteOpal', 'cigaretteJade', 'cigaretteAmber', 'cigaretteTopaz', 'cigaretteGarnet', 'cigaretteTurquoise', 'cigaretteOnyx', 'cigaretteObsidian', 'cigaretteQuartz', 'cigaretteAgate', 'cigaretteJasper', 'cigaretteLapis', 'cigaretteMalachite', 'cigaretteMoonstone', 'cigaretteSunstone', 'cigaretteTigerEye', 'cigaretteZircon', 'cigaretteSpinel', 'cigaretteTourmaline', 'cigarettePeridot', 'cigaretteAlexandrite', 'cigaretteTanzanite', 'cigaretteMorganite', 'cigaretteAquamarine', 'cigaretteCitrine', 'cigaretteHeliodor', 'cigaretteKunzite', 'cigaretteLepidolite', 'cigaretteRhodonite', 'cigaretteSodalite', 'cigaretteSugilite', 'cigaretteTopazolite', 'cigaretteTsavorite', 'cigaretteVariscite', 'cigaretteZoisite', 'cigaretteAndalusite', 'cigaretteApatite', 'cigaretteAxinite', 'cigaretteBenitoite', 'cigaretteBeryl', 'cigaretteCassiterite', 'cigaretteChalcedony', 'cigaretteChrysoberyl', 'cigaretteDanburite', 'cigaretteDiopside', 'cigaretteDumortierite', 'cigaretteEnstatite', 'cigaretteEpidote', 'cigaretteFluorite', 'cigaretteGoshenite', 'cigaretteHackmanite', 'cigaretteHiddenite', 'cigaretteIolite', 'cigaretteKyanite', 'cigaretteLabradorite', 'cigaretteLarimar', 'cigaretteNephrite', 'cigarettePetalite', 'cigarettePrehnite', 'cigaretteScapolite', 'cigaretteSerpentine', 'cigaretteSmithsonite', 'cigaretteSpessartite', 'cigaretteSphene', 'cigaretteStaurolite', 'cigaretteSunstone', 'cigaretteTektite', 'cigaretteThulite', 'cigaretteUvarovite', 'cigaretteVesuvianite', 'cigaretteWulfenite', 'cigaretteZircon', 'cigaretteZoisite']; // Placeholder, will use a subset for MVP
var playerMoney = 0;
var enemyMoney = 0;
// --- UI Elements ---
var revolver = new Revolver();
revolver.x = 2048 / 2;
revolver.y = 900;
game.addChild(revolver);
var playerHealthBar = new HealthBar();
playerHealthBar.x = 2048 / 2 - 200;
playerHealthBar.y = 1800;
game.addChild(playerHealthBar);
var enemyHealthBar = new HealthBar();
enemyHealthBar.x = 2048 / 2 - 200;
enemyHealthBar.y = 300;
game.addChild(enemyHealthBar);
// Player/Enemy labels
var playerLabel = new Text2('YOU', {
size: 80,
fill: "#fff"
});
playerLabel.anchor.set(0.5, 0);
playerLabel.x = 2048 / 2;
playerLabel.y = 1700;
game.addChild(playerLabel);
var enemyLabel = new Text2('ENEMY', {
size: 80,
fill: "#fff"
});
enemyLabel.anchor.set(0.5, 0);
enemyLabel.x = 2048 / 2;
enemyLabel.y = 200;
game.addChild(enemyLabel);
// Turn indicator
var turnLabel = new Text2('', {
size: 70,
fill: 0xFFE066
});
turnLabel.anchor.set(0.5, 0);
turnLabel.x = 2048 / 2;
turnLabel.y = 1200;
game.addChild(turnLabel);
// Item buttons (max 3 for MVP)
var itemButtons = [];
for (var i = 0; i < 3; i++) {
var btn = new ItemButton();
btn.x = 2048 / 2 - 200 + i * 200;
btn.y = 2200;
btn.visible = false;
game.addChild(btn);
itemButtons.push(btn);
}
// Fire button
var fireBtn = LK.getAsset('fireBtn', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 1400,
scaleX: 1.2,
scaleY: 1.2
});
game.addChild(fireBtn);
// --- Helper Functions ---
function shuffle(array) {
// Fisher-Yates shuffle
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var t = array[i];
array[i] = array[j];
array[j] = t;
}
return array;
}
function resetGame() {
playerHealth = maxHealth;
enemyHealth = maxHealth;
playerItems = [];
enemyItems = [];
playerMoney = 0;
enemyMoney = 0;
// For MVP: 1 live, 5 blanks
revolverChambers = ['live', 'blank', 'blank', 'blank', 'blank', 'blank'];
shuffle(revolverChambers);
revolver.setChambers(revolverChambers);
revolver.spin();
playerHealthBar.setHealth(playerHealth);
enemyHealthBar.setHealth(enemyHealth);
updateItems();
currentTurn = 'player';
gamePhase = 'action';
updateUI();
}
function updateUI() {
// Update turn label
if (currentTurn === 'player') {
turnLabel.setText("YOUR TURN");
fireBtn.visible = true;
for (var i = 0; i < itemButtons.length; i++) {
itemButtons[i].visible = !!playerItems[i];
}
} else {
turnLabel.setText("ENEMY'S TURN");
fireBtn.visible = false;
for (var i = 0; i < itemButtons.length; i++) {
itemButtons[i].visible = false;
}
}
// Health bars
playerHealthBar.setHealth(playerHealth);
enemyHealthBar.setHealth(enemyHealth);
}
function updateItems() {
// For MVP, give player 1 random item at start
if (playerItems.length === 0) {
playerItems = ['xray', null, null];
}
for (var i = 0; i < 3; i++) {
if (playerItems[i]) {
itemButtons[i].setItem(playerItems[i], playerItems[i].toUpperCase());
itemButtons[i].visible = true;
itemButtons[i].onUse = function (itemId) {
useItem(itemId);
};
} else {
itemButtons[i].visible = false;
}
}
}
// --- Game Logic ---
function fireRevolver() {
// Animate chamber
revolver.flashCurrent();
var type = revolver.getCurrentType();
if (currentTurn === 'player') {
if (type === 'live') {
playerHealth--;
playerHealthBar.flashDamage();
LK.effects.flashScreen(0xff0000, 500);
}
// For MVP: only live/blank
revolver.chambers[revolver.currentChamber].setType('fired');
revolver.advance();
checkGameOver();
if (gamePhase !== 'gameover') {
currentTurn = 'enemy';
updateUI();
LK.setTimeout(enemyTurn, 1200);
}
} else {
if (type === 'live') {
enemyHealth--;
enemyHealthBar.flashDamage();
LK.effects.flashObject(enemyHealthBar, 0xff0000, 500);
}
revolver.chambers[revolver.currentChamber].setType('fired');
revolver.advance();
checkGameOver();
if (gamePhase !== 'gameover') {
currentTurn = 'player';
updateUI();
}
}
}
function useItem(itemId) {
// For MVP: only xray (reveal all chambers for 2s)
if (itemId === 'xray') {
revolver.revealAll();
LK.setTimeout(function () {
revolver.hideAll();
}, 2000);
// Remove item
for (var i = 0; i < 3; i++) {
if (playerItems[i] === itemId) {
playerItems[i] = null;
break;
}
}
updateItems();
updateUI();
}
// Add more items here
}
function checkGameOver() {
if (playerHealth <= 0) {
gamePhase = 'gameover';
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
} else if (enemyHealth <= 0) {
gamePhase = 'gameover';
LK.effects.flashScreen(0x00ff00, 1000);
LK.showYouWin();
}
}
// --- Enemy AI (MVP: always fires, no items) ---
function enemyTurn() {
fireRevolver();
}
// --- Event Handlers ---
// Fire button
fireBtn.down = function (x, y, obj) {
if (currentTurn === 'player' && gamePhase === 'action') {
fireRevolver();
}
};
// Item buttons handled in updateItems()
// --- Game Start ---
resetGame();
// --- Game Update Loop (not needed for MVP, but can be used for animations) ---
game.update = function () {
// No per-frame logic needed for MVP
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,427 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Revolver Chamber Slot
+var ChamberSlot = Container.expand(function () {
+ var self = Container.call(this);
+ // Each slot can be: 'blank', 'live', or a special item (e.g., 'buckshot', 'xray', etc.)
+ self.type = 'blank'; // default
+ // Visual representation
+ var slotAsset = self.attachAsset('chamberSlot', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Set type and update color
+ self.setType = function (type) {
+ self.type = type;
+ // Color code: blank=gray, live=red, buckshot=orange, xray=blue, etc.
+ var color = 0x888888;
+ if (type === 'live') color = 0xd83318;else if (type === 'buckshot') color = 0xffa500;else if (type === 'xray') color = 0x3399ff;
+ // ...add more as needed
+ slotAsset.color = color;
+ };
+ // Animate highlight (e.g., when firing)
+ self.flash = function () {
+ tween(slotAsset, {
+ alpha: 0.2
+ }, {
+ duration: 100,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ tween(slotAsset, {
+ alpha: 1
+ }, {
+ duration: 200
+ });
+ }
+ });
+ };
+ return self;
+});
+// Health Bar
+var HealthBar = Container.expand(function () {
+ var self = Container.call(this);
+ self.maxHealth = 6;
+ self.health = 6;
+ // Visual: 6 rectangles
+ self.segments = [];
+ var segW = 60,
+ segH = 30,
+ gap = 10;
+ for (var i = 0; i < self.maxHealth; i++) {
+ var seg = self.attachAsset('healthSeg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: i * (segW + gap),
+ color: 0x83de44
+ });
+ self.segments.push(seg);
+ }
+ // Set health (0 to maxHealth)
+ self.setHealth = function (val) {
+ self.health = val;
+ for (var i = 0; i < self.maxHealth; i++) {
+ self.segments[i].alpha = i < val ? 1 : 0.2;
+ }
+ };
+ // Animate damage
+ self.flashDamage = function () {
+ for (var i = 0; i < self.maxHealth; i++) {
+ if (i === self.health) {
+ tween(self.segments[i], {
+ alpha: 0.2
+ }, {
+ duration: 200
+ });
+ }
+ }
+ };
+ // Animate heal
+ self.flashHeal = function () {
+ for (var i = 0; i < self.maxHealth; i++) {
+ if (i === self.health - 1) {
+ tween(self.segments[i], {
+ alpha: 1
+ }, {
+ duration: 200
+ });
+ }
+ }
+ };
+ return self;
+});
+// Item Button
+var ItemButton = Container.expand(function () {
+ var self = Container.call(this);
+ self.itemId = null;
+ self.onUse = null;
+ // Visual: icon
+ var icon = self.attachAsset('itemIcon', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 1,
+ scaleY: 1
+ });
+ // Label
+ var label = new Text2('', {
+ size: 40,
+ fill: "#fff"
+ });
+ label.anchor.set(0.5, 0);
+ label.y = 50;
+ self.addChild(label);
+ // Set item
+ self.setItem = function (itemId, labelText) {
+ self.itemId = itemId;
+ label.setText(labelText);
+ // Color code or icon change by itemId if desired
+ };
+ // Touch event
+ self.down = function (x, y, obj) {
+ if (self.onUse) self.onUse(self.itemId);
+ };
+ return self;
+});
+// Revolver
+var Revolver = Container.expand(function () {
+ var self = Container.call(this);
+ // 6 chambers, arranged in a circle
+ self.chambers = [];
+ self.currentChamber = 0; // index of chamber to fire
+ // Visual: revolver body
+ var body = self.attachAsset('revolverBody', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 1.2,
+ scaleY: 1.2
+ });
+ // Place chambers in a circle
+ var centerX = 0,
+ centerY = 0,
+ radius = 120;
+ for (var i = 0; i < 6; i++) {
+ var angle = Math.PI * 2 / 6 * i - Math.PI / 2;
+ var slot = new ChamberSlot();
+ slot.x = centerX + Math.cos(angle) * radius;
+ slot.y = centerY + Math.sin(angle) * radius;
+ slot.setType('blank');
+ self.addChild(slot);
+ self.chambers.push(slot);
+ }
+ // Set chamber types (array of 6: 'blank', 'live', etc.)
+ self.setChambers = function (types) {
+ for (var i = 0; i < 6; i++) {
+ self.chambers[i].setType(types[i]);
+ }
+ };
+ // Spin the chamber (randomize currentChamber)
+ self.spin = function () {
+ self.currentChamber = Math.floor(Math.random() * 6);
+ };
+ // Advance to next chamber
+ self.advance = function () {
+ self.currentChamber = (self.currentChamber + 1) % 6;
+ };
+ // Get type of current chamber
+ self.getCurrentType = function () {
+ return self.chambers[self.currentChamber].type;
+ };
+ // Animate firing (flash current chamber)
+ self.flashCurrent = function () {
+ self.chambers[self.currentChamber].flash();
+ };
+ // Reveal all chambers (for xray, etc.)
+ self.revealAll = function () {
+ for (var i = 0; i < 6; i++) {
+ this.chambers[i].alpha = 1;
+ }
+ };
+ // Hide all chambers (normal state)
+ self.hideAll = function () {
+ for (var i = 0; i < 6; i++) {
+ this.chambers[i].alpha = 0.5;
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x181818
+});
+
+/****
+* Game Code
+****/
+// We'll use tween for simple animations (e.g., health bar changes, shell movement)
+/*
+We will use simple shapes for the revolver, shells, health bars, and item icons.
+Assets will be initialized automatically by LK based on usage.
+*/
+// --- Game State ---
+var playerHealth = 6;
+var enemyHealth = 6;
+var maxHealth = 6;
+var playerItems = []; // Array of item ids
+var enemyItems = [];
+var revolverChambers = ['blank', 'live', 'blank', 'blank', 'blank', 'blank']; // Will be randomized
+var currentTurn = 'player'; // 'player' or 'enemy'
+var gamePhase = 'action'; // 'action', 'item', 'shop', etc.
+var shopItems = ['xray', 'cigarette', 'adrenaline', 'magnifier', 'buckshot', 'whiskey', 'painkillers', 'mirror', 'tape', 'shellPuller', 'blankBullets', 'scope', 'handcuffs', 'deflector', 'lighter', 'coin', 'cigarettePack', 'cigaretteCase', 'cigaretteLighter', 'cigaretteFilter', 'cigarettePaper', 'cigaretteTobacco', 'cigaretteButt', 'cigaretteAsh', 'cigaretteBurn', 'cigaretteSmoke', 'cigaretteEmber', 'cigaretteTip', 'cigaretteRoll', 'cigaretteBox', 'cigaretteCarton', 'cigaretteBrand', 'cigaretteLogo', 'cigaretteSticker', 'cigaretteFoil', 'cigaretteCellophane', 'cigaretteTaxStamp', 'cigaretteWarning', 'cigaretteBarcode', 'cigaretteSerial', 'cigaretteBatch', 'cigaretteDate', 'cigaretteFactory', 'cigaretteCountry', 'cigaretteImport', 'cigaretteExport', 'cigaretteDuty', 'cigaretteTar', 'cigaretteNicotine', 'cigaretteCarbonMonoxide', 'cigaretteAdditive', 'cigaretteFlavor', 'cigaretteMenthol', 'cigaretteClove', 'cigaretteHerbal', 'cigaretteOrganic', 'cigaretteLight', 'cigaretteUltraLight', 'cigaretteSlim', 'cigaretteSuperSlim', 'cigaretteMini', 'cigaretteKingSize', 'cigarette100s', 'cigarette120s', 'cigaretteLong', 'cigaretteShort', 'cigaretteRegular', 'cigaretteSpecial', 'cigaretteLimited', 'cigaretteEdition', 'cigaretteVintage', 'cigaretteClassic', 'cigarettePremium', 'cigaretteGold', 'cigaretteSilver', 'cigarettePlatinum', 'cigaretteDiamond', 'cigaretteRuby', 'cigaretteSapphire', 'cigaretteEmerald', 'cigarettePearl', 'cigaretteCrystal', 'cigaretteOpal', 'cigaretteJade', 'cigaretteAmber', 'cigaretteTopaz', 'cigaretteGarnet', 'cigaretteTurquoise', 'cigaretteOnyx', 'cigaretteObsidian', 'cigaretteQuartz', 'cigaretteAgate', 'cigaretteJasper', 'cigaretteLapis', 'cigaretteMalachite', 'cigaretteMoonstone', 'cigaretteSunstone', 'cigaretteTigerEye', 'cigaretteZircon', 'cigaretteSpinel', 'cigaretteTourmaline', 'cigarettePeridot', 'cigaretteAlexandrite', 'cigaretteTanzanite', 'cigaretteMorganite', 'cigaretteAquamarine', 'cigaretteCitrine', 'cigaretteHeliodor', 'cigaretteKunzite', 'cigaretteLepidolite', 'cigaretteRhodonite', 'cigaretteSodalite', 'cigaretteSugilite', 'cigaretteTopazolite', 'cigaretteTsavorite', 'cigaretteVariscite', 'cigaretteZoisite', 'cigaretteAndalusite', 'cigaretteApatite', 'cigaretteAxinite', 'cigaretteBenitoite', 'cigaretteBeryl', 'cigaretteCassiterite', 'cigaretteChalcedony', 'cigaretteChrysoberyl', 'cigaretteDanburite', 'cigaretteDiopside', 'cigaretteDumortierite', 'cigaretteEnstatite', 'cigaretteEpidote', 'cigaretteFluorite', 'cigaretteGoshenite', 'cigaretteHackmanite', 'cigaretteHiddenite', 'cigaretteIolite', 'cigaretteKyanite', 'cigaretteLabradorite', 'cigaretteLarimar', 'cigaretteNephrite', 'cigarettePetalite', 'cigarettePrehnite', 'cigaretteScapolite', 'cigaretteSerpentine', 'cigaretteSmithsonite', 'cigaretteSpessartite', 'cigaretteSphene', 'cigaretteStaurolite', 'cigaretteSunstone', 'cigaretteTektite', 'cigaretteThulite', 'cigaretteUvarovite', 'cigaretteVesuvianite', 'cigaretteWulfenite', 'cigaretteZircon', 'cigaretteZoisite']; // Placeholder, will use a subset for MVP
+var playerMoney = 0;
+var enemyMoney = 0;
+// --- UI Elements ---
+var revolver = new Revolver();
+revolver.x = 2048 / 2;
+revolver.y = 900;
+game.addChild(revolver);
+var playerHealthBar = new HealthBar();
+playerHealthBar.x = 2048 / 2 - 200;
+playerHealthBar.y = 1800;
+game.addChild(playerHealthBar);
+var enemyHealthBar = new HealthBar();
+enemyHealthBar.x = 2048 / 2 - 200;
+enemyHealthBar.y = 300;
+game.addChild(enemyHealthBar);
+// Player/Enemy labels
+var playerLabel = new Text2('YOU', {
+ size: 80,
+ fill: "#fff"
+});
+playerLabel.anchor.set(0.5, 0);
+playerLabel.x = 2048 / 2;
+playerLabel.y = 1700;
+game.addChild(playerLabel);
+var enemyLabel = new Text2('ENEMY', {
+ size: 80,
+ fill: "#fff"
+});
+enemyLabel.anchor.set(0.5, 0);
+enemyLabel.x = 2048 / 2;
+enemyLabel.y = 200;
+game.addChild(enemyLabel);
+// Turn indicator
+var turnLabel = new Text2('', {
+ size: 70,
+ fill: 0xFFE066
+});
+turnLabel.anchor.set(0.5, 0);
+turnLabel.x = 2048 / 2;
+turnLabel.y = 1200;
+game.addChild(turnLabel);
+// Item buttons (max 3 for MVP)
+var itemButtons = [];
+for (var i = 0; i < 3; i++) {
+ var btn = new ItemButton();
+ btn.x = 2048 / 2 - 200 + i * 200;
+ btn.y = 2200;
+ btn.visible = false;
+ game.addChild(btn);
+ itemButtons.push(btn);
+}
+// Fire button
+var fireBtn = LK.getAsset('fireBtn', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 1400,
+ scaleX: 1.2,
+ scaleY: 1.2
+});
+game.addChild(fireBtn);
+// --- Helper Functions ---
+function shuffle(array) {
+ // Fisher-Yates shuffle
+ for (var i = array.length - 1; i > 0; i--) {
+ var j = Math.floor(Math.random() * (i + 1));
+ var t = array[i];
+ array[i] = array[j];
+ array[j] = t;
+ }
+ return array;
+}
+function resetGame() {
+ playerHealth = maxHealth;
+ enemyHealth = maxHealth;
+ playerItems = [];
+ enemyItems = [];
+ playerMoney = 0;
+ enemyMoney = 0;
+ // For MVP: 1 live, 5 blanks
+ revolverChambers = ['live', 'blank', 'blank', 'blank', 'blank', 'blank'];
+ shuffle(revolverChambers);
+ revolver.setChambers(revolverChambers);
+ revolver.spin();
+ playerHealthBar.setHealth(playerHealth);
+ enemyHealthBar.setHealth(enemyHealth);
+ updateItems();
+ currentTurn = 'player';
+ gamePhase = 'action';
+ updateUI();
+}
+function updateUI() {
+ // Update turn label
+ if (currentTurn === 'player') {
+ turnLabel.setText("YOUR TURN");
+ fireBtn.visible = true;
+ for (var i = 0; i < itemButtons.length; i++) {
+ itemButtons[i].visible = !!playerItems[i];
+ }
+ } else {
+ turnLabel.setText("ENEMY'S TURN");
+ fireBtn.visible = false;
+ for (var i = 0; i < itemButtons.length; i++) {
+ itemButtons[i].visible = false;
+ }
+ }
+ // Health bars
+ playerHealthBar.setHealth(playerHealth);
+ enemyHealthBar.setHealth(enemyHealth);
+}
+function updateItems() {
+ // For MVP, give player 1 random item at start
+ if (playerItems.length === 0) {
+ playerItems = ['xray', null, null];
+ }
+ for (var i = 0; i < 3; i++) {
+ if (playerItems[i]) {
+ itemButtons[i].setItem(playerItems[i], playerItems[i].toUpperCase());
+ itemButtons[i].visible = true;
+ itemButtons[i].onUse = function (itemId) {
+ useItem(itemId);
+ };
+ } else {
+ itemButtons[i].visible = false;
+ }
+ }
+}
+// --- Game Logic ---
+function fireRevolver() {
+ // Animate chamber
+ revolver.flashCurrent();
+ var type = revolver.getCurrentType();
+ if (currentTurn === 'player') {
+ if (type === 'live') {
+ playerHealth--;
+ playerHealthBar.flashDamage();
+ LK.effects.flashScreen(0xff0000, 500);
+ }
+ // For MVP: only live/blank
+ revolver.chambers[revolver.currentChamber].setType('fired');
+ revolver.advance();
+ checkGameOver();
+ if (gamePhase !== 'gameover') {
+ currentTurn = 'enemy';
+ updateUI();
+ LK.setTimeout(enemyTurn, 1200);
+ }
+ } else {
+ if (type === 'live') {
+ enemyHealth--;
+ enemyHealthBar.flashDamage();
+ LK.effects.flashObject(enemyHealthBar, 0xff0000, 500);
+ }
+ revolver.chambers[revolver.currentChamber].setType('fired');
+ revolver.advance();
+ checkGameOver();
+ if (gamePhase !== 'gameover') {
+ currentTurn = 'player';
+ updateUI();
+ }
+ }
+}
+function useItem(itemId) {
+ // For MVP: only xray (reveal all chambers for 2s)
+ if (itemId === 'xray') {
+ revolver.revealAll();
+ LK.setTimeout(function () {
+ revolver.hideAll();
+ }, 2000);
+ // Remove item
+ for (var i = 0; i < 3; i++) {
+ if (playerItems[i] === itemId) {
+ playerItems[i] = null;
+ break;
+ }
+ }
+ updateItems();
+ updateUI();
+ }
+ // Add more items here
+}
+function checkGameOver() {
+ if (playerHealth <= 0) {
+ gamePhase = 'gameover';
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ } else if (enemyHealth <= 0) {
+ gamePhase = 'gameover';
+ LK.effects.flashScreen(0x00ff00, 1000);
+ LK.showYouWin();
+ }
+}
+// --- Enemy AI (MVP: always fires, no items) ---
+function enemyTurn() {
+ fireRevolver();
+}
+// --- Event Handlers ---
+// Fire button
+fireBtn.down = function (x, y, obj) {
+ if (currentTurn === 'player' && gamePhase === 'action') {
+ fireRevolver();
+ }
+};
+// Item buttons handled in updateItems()
+// --- Game Start ---
+resetGame();
+// --- Game Update Loop (not needed for MVP, but can be used for animations) ---
+game.update = function () {
+ // No per-frame logic needed for MVP
+};
\ No newline at end of file
Revovler silahının bir mermi kovanı . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Beyaz bir kare ama içi boş olan . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
"!" Letter. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat