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() { // At the start of every turn, refill items for both player and enemy // For player: always give 3 random items (no duplicates) var availableItems = ['xray', 'cigarette', 'adrenaline', 'magnifier', 'buckshot', 'whiskey', 'painkillers', 'mirror', 'tape', 'shellPuller', 'blankBullets']; function getRandomItems(arr, n) { var result = []; var used = {}; for (var i = 0; i < n; i++) { var pool = arr.filter(function (item) { return !used[item]; }); if (pool.length === 0) break; var idx = Math.floor(Math.random() * pool.length); result.push(pool[idx]); used[pool[idx]] = true; } return result; } playerItems = getRandomItems(availableItems, 3); // For enemy: same logic enemyItems = getRandomItems(availableItems, 3); // 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); updateItems(); } 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(); // Tape: skip turn logic if (currentTurn === 'player' && game.skipPlayerTurn) { game.skipPlayerTurn = false; currentTurn = 'enemy'; updateUI(); LK.setTimeout(enemyTurn, 1200); return; } if (currentTurn === 'enemy' && game.skipEnemyTurn) { game.skipEnemyTurn = false; currentTurn = 'player'; updateUI(); return; } if (currentTurn === 'player') { // Mirror: reflect shot to enemy if (game.mirrorActive && type === 'live') { game.mirrorActive = false; enemyHealth--; enemyHealthBar.flashDamage(); LK.effects.flashObject(enemyHealthBar, 0xff0000, 500); } // Adrenaline: immune to this shot else if (game.adrenalineImmune && type === 'live') { game.adrenalineImmune = false; LK.effects.flashScreen(0x00ffff, 500); } // Painkillers: survive at 1 HP else if (game.painkillersActive && type === 'live' && playerHealth === 1) { game.painkillersActive = false; LK.effects.flashScreen(0xffff00, 500); } // Buckshot: double damage else if (game.buckshotActive && type === 'live') { game.buckshotActive = false; playerHealth -= 2; playerHealthBar.flashDamage(); LK.effects.flashScreen(0xffa500, 500); } // Normal shot else 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 { // Mirror: reflect shot to player if (game.enemyMirrorActive && type === 'live') { game.enemyMirrorActive = false; playerHealth--; playerHealthBar.flashDamage(); LK.effects.flashObject(playerHealthBar, 0xff0000, 500); } // Adrenaline: immune to this shot else if (game.enemyAdrenalineImmune && type === 'live') { game.enemyAdrenalineImmune = false; LK.effects.flashScreen(0x00ffff, 500); } // Painkillers: survive at 1 HP else if (game.enemyPainkillersActive && type === 'live' && enemyHealth === 1) { game.enemyPainkillersActive = false; LK.effects.flashScreen(0xffff00, 500); } // Buckshot: double damage else if (game.enemyBuckshotActive && type === 'live') { game.enemyBuckshotActive = false; enemyHealth -= 2; enemyHealthBar.flashDamage(); LK.effects.flashScreen(0xffa500, 500); } // Normal shot 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, isEnemy) { // isEnemy: true if AI is using, false/undefined if player var itemsArr = isEnemy ? enemyItems : playerItems; var healthBar = isEnemy ? enemyHealthBar : playerHealthBar; var healthVar = isEnemy ? "enemyHealth" : "playerHealth"; var otherHealthBar = isEnemy ? playerHealthBar : enemyHealthBar; var otherHealthVar = isEnemy ? "playerHealth" : "enemyHealth"; var removeItem = function removeItem() { for (var i = 0; i < 3; i++) { if (itemsArr[i] === itemId) { itemsArr[i] = null; break; } } }; // XRAY: Reveal all chambers for 2s if (itemId === 'xray') { revolver.revealAll(); LK.setTimeout(function () { revolver.hideAll(); }, 2000); removeItem(); } // CIGARETTE: Heal 1 HP (if not max) else if (itemId === 'cigarette') { if (eval(healthVar) < maxHealth) { eval(healthVar + '++'); healthBar.flashHeal(); healthBar.setHealth(eval(healthVar)); } removeItem(); } // ADRENALINE: Next shot doesn't hurt (immunity for 1 turn) else if (itemId === 'adrenaline') { if (!isEnemy) { game.adrenalineImmune = true; } else { game.enemyAdrenalineImmune = true; } removeItem(); } // MAGNIFIER: See next chamber type for 2s else if (itemId === 'magnifier') { var idx = revolver.currentChamber; revolver.chambers[idx].alpha = 1; LK.setTimeout(function () { revolver.chambers[idx].alpha = 0.5; }, 2000); removeItem(); } // BUCKSHOT: Next live round does double damage else if (itemId === 'buckshot') { if (!isEnemy) { game.buckshotActive = true; } else { game.enemyBuckshotActive = true; } removeItem(); } // WHISKEY: Heal 2 HP (if not max) else if (itemId === 'whiskey') { if (eval(healthVar) < maxHealth) { eval(healthVar + '+=2'); if (eval(healthVar) > maxHealth) eval(healthVar + '=' + maxHealth); healthBar.flashHeal(); healthBar.setHealth(eval(healthVar)); } removeItem(); } // PAINKILLERS: Survive next shot at 1 HP else if (itemId === 'painkillers') { if (!isEnemy) { game.painkillersActive = true; } else { game.enemyPainkillersActive = true; } removeItem(); } // MIRROR: Reflect next shot to opponent else if (itemId === 'mirror') { if (!isEnemy) { game.mirrorActive = true; } else { game.enemyMirrorActive = true; } removeItem(); } // TAPE: Skip opponent's next turn else if (itemId === 'tape') { if (!isEnemy) { game.skipEnemyTurn = true; } else { game.skipPlayerTurn = true; } removeItem(); } // SHELL PULLER: Remove a random live round (if any) else if (itemId === 'shellPuller') { var found = false; for (var i = 0; i < revolver.chambers.length; i++) { if (revolver.chambers[i].type === 'live') { revolver.chambers[i].setType('blank'); found = true; break; } } if (found) { LK.effects.flashScreen(0x00ffcc, 500); } removeItem(); } // BLANK BULLETS: Convert a random blank to a live (for sabotage) else if (itemId === 'blankBullets') { var blanks = []; for (var i = 0; i < revolver.chambers.length; i++) { if (revolver.chambers[i].type === 'blank') blanks.push(i); } if (blanks.length > 0) { var idx = blanks[Math.floor(Math.random() * blanks.length)]; revolver.chambers[idx].setType('live'); LK.effects.flashScreen(0xffa500, 500); } removeItem(); } // Add more items here as needed updateItems(); updateUI(); } 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() { // AI: Use item if available and useful for (var i = 0; i < 3; i++) { var item = enemyItems[i]; if (!item) continue; // Example logic: Use xray if available, or heal if low, or adrenaline if about to fire, etc. if (item === 'xray') { useItem('xray', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'cigarette' && enemyHealth < maxHealth) { useItem('cigarette', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'adrenaline') { useItem('adrenaline', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'magnifier') { useItem('magnifier', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'buckshot') { useItem('buckshot', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'whiskey' && enemyHealth < maxHealth - 1) { useItem('whiskey', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'painkillers' && enemyHealth <= 2) { useItem('painkillers', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'mirror') { useItem('mirror', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'tape') { useItem('tape', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'shellPuller') { useItem('shellPuller', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'blankBullets') { useItem('blankBullets', true); LK.setTimeout(fireRevolver, 1200); return; } } // Otherwise, just fire 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
@@ -306,8 +306,28 @@
gamePhase = 'action';
updateUI();
}
function updateUI() {
+ // At the start of every turn, refill items for both player and enemy
+ // For player: always give 3 random items (no duplicates)
+ var availableItems = ['xray', 'cigarette', 'adrenaline', 'magnifier', 'buckshot', 'whiskey', 'painkillers', 'mirror', 'tape', 'shellPuller', 'blankBullets'];
+ function getRandomItems(arr, n) {
+ var result = [];
+ var used = {};
+ for (var i = 0; i < n; i++) {
+ var pool = arr.filter(function (item) {
+ return !used[item];
+ });
+ if (pool.length === 0) break;
+ var idx = Math.floor(Math.random() * pool.length);
+ result.push(pool[idx]);
+ used[pool[idx]] = true;
+ }
+ return result;
+ }
+ playerItems = getRandomItems(availableItems, 3);
+ // For enemy: same logic
+ enemyItems = getRandomItems(availableItems, 3);
// Update turn label
if (currentTurn === 'player') {
turnLabel.setText("YOUR TURN");
fireBtn.visible = true;
@@ -323,8 +343,9 @@
}
// Health bars
playerHealthBar.setHealth(playerHealth);
enemyHealthBar.setHealth(enemyHealth);
+ updateItems();
}
function updateItems() {
// For MVP, give player 1 random item at start
if (playerItems.length === 0) {
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