/**** * 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 }); // Add a custom bullet icon for live bullet indicator (only visible during XRAY/MAGNIFIER) var liveBulletIcon = self.attachAsset('liveBulletIcon', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.7, scaleY: 0.7, visible: false }); liveBulletIcon.visible = false; // 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; // Hide liveBulletIcon if not live if (type !== 'live') { liveBulletIcon.visible = false; } }; // Helper to show/hide the live indicator (big white circle for live) self._forceLiveIndicator = false; self.setLiveIndicatorVisible = function (visible, force) { // force parametresi true ise, XRAY/MAGNIFIER süresi boyunca göstergesi açık kalır if (force) { self._forceLiveIndicator = true; } // Sadece XRAY/MAGNIFIER kullanan oyuncuya gözüksün // Yanlış mermileri dolu olarak işaretlememesi için sadece type==='live' ise göster if (self.type === 'live') { if (self._forceLiveIndicator && (game._xrayActiveForPlayer || game._magnifierActiveForPlayer)) { liveBulletIcon.visible = true; } else { liveBulletIcon.visible = !!visible; } } else { // Yanlış mermilerde asla gösterme liveBulletIcon.visible = false; } // XRAY/MAGNIFIER aktifken sadece type==='live' olanlar gösterilsin, diğerleri asla gösterilmesin if ((game._xrayActiveForPlayer || game._xrayActiveForEnemy || game._magnifierActiveForPlayer || game._magnifierActiveForEnemy) && self.type !== 'live') { liveBulletIcon.visible = false; } // force parametresi false olarak çağrılırsa (XRAY/MAGNIFIER bittiğinde) tekrar eski davranışa döner if (force === false) { self._forceLiveIndicator = false; } }; // Helper to show/hide the live indicator // (removed duplicate setLiveIndicatorVisible) // 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; if (typeof this.chambers[i].setLiveIndicatorVisible === "function") { this.chambers[i].setLiveIndicatorVisible(true); } } }; // Hide all chambers (normal state) self.hideAll = function () { for (var i = 0; i < 6; i++) { this.chambers[i].alpha = 0.5; if (typeof this.chambers[i].setLiveIndicatorVisible === "function") { this.chambers[i].setLiveIndicatorVisible(false); } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x143d1a // koyu casino yeşili (dark casino green) }); /**** * Game Code ****/ // --- Game State --- /* We will use simple shapes for the revolver, shells, health bars, and item icons. Assets will be initialized automatically by LK based on usage. */ // Fire button kaldırıldı, ateş etme için revolver'a tıklanacak // Custom bullet icon for live chamber indicator (replace with your own image id if available) function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var playerHealth = 6; var enemyHealth = 6; var maxHealth = 6; // Oyuncu ve düşman eşyaları en başta verilecek, kullanınca silinecek, biri ölürse yenilenecek var initialItemPool = ['xray', 'cigarette', 'adrenaline', 'magnifier', 'buckshot', 'whiskey', 'painkillers', 'mirror', 'shellPuller', 'blankBullets', 'flag']; function getInitialItems() { // 1-8 arası rastgele sayıda eşya, tekrar yok var pool = initialItemPool.slice(); var result = []; var count = 1 + Math.floor(Math.random() * 8); // 1-8 arası if (count > pool.length) count = pool.length; for (var i = 0; i < count; i++) { if (pool.length === 0) break; var idx = Math.floor(Math.random() * pool.length); result.push(pool[idx]); pool.splice(idx, 1); } return result; } // Oyuncu ve düşman eşyaları aynı sayıda olacak şekilde ayarlanır, fakat eşyalar farklı olacak function getUniqueInitialItemsPair() { var pool = initialItemPool.slice(); var count = 1 + Math.floor(Math.random() * 8); if (count > Math.floor(pool.length / 2)) count = Math.floor(pool.length / 2); shuffle(pool); var playerSet = []; var enemySet = []; for (var i = 0; i < count; i++) { playerSet.push(pool.shift()); } for (var i = 0; i < count; i++) { enemySet.push(pool.shift()); } // Both sets are guaranteed to be unique and same count return [playerSet, enemySet]; } var _uniqueItems = getUniqueInitialItemsPair(); var playerItems = _uniqueItems[0]; var enemyItems = _uniqueItems[1]; 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', '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 = 2732 / 2; 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; // Place higher above the revolver (kovan) in the vertical center // Revolver is at y = 2732 / 2 = 1366, revolver body radius is 120, body asset is scaled 1.2x (asset height 100 * 1.2 = 120), so top of revolver is about 1366 - 120 - 60 = 1186 // Place the label even higher above that for more spacing turnLabel.y = 2732 / 2 - 350; game.addChild(turnLabel); // Çanta (Bag) button ve label kaldırıldı // Item buttons (max 8 but dynamic, now only used in bag popup) var itemButtons = []; for (var i = 0; i < 8; i++) { var btn = new ItemButton(); btn.visible = false; btn.x = -9999; btn.y = -9999; game.addChild(btn); itemButtons.push(btn); } // Bag popup ve bagBtn.down kaldırıldı (çantasız mantık) // Enemy item buttons (max 8 but dynamic) var enemyItemButtons = []; for (var i = 0; i < 8; i++) { var ebtn = new ItemButton(); ebtn.visible = false; // Disable interaction for enemy item buttons ebtn.down = function () {}; game.addChild(ebtn); enemyItemButtons.push(ebtn); } // Fire button kaldırıldı, ateş etme için revolver'a tıklanacak // --- 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; var _uniqueItems = getUniqueInitialItemsPair(); playerItems = _uniqueItems[0]; enemyItems = _uniqueItems[1]; playerMoney = 0; enemyMoney = 0; // For MVP: 1 live, 5 blanks // Her zaman en az 1 dolu mermi olacak şekilde, kalanlar boş olacak var liveCount = 1; var blankCount = 6 - liveCount; revolverChambers = []; // 1 dolu mermiyi rastgele bir yere koy var liveIndexes = []; for (var i = 0; i < liveCount; i++) { liveIndexes.push(i); } var chamberIndexes = [0, 1, 2, 3, 4, 5]; shuffle(chamberIndexes); for (var i = 0; i < 6; i++) { revolverChambers[i] = 'blank'; } for (var i = 0; i < liveCount; i++) { revolverChambers[chamberIndexes[i]] = 'live'; } revolver.setChambers(revolverChambers); revolver.spin(); playerHealthBar.setHealth(playerHealth); enemyHealthBar.setHealth(enemyHealth); updateItems(); currentTurn = 'player'; gamePhase = 'action'; updateUI(); } function updateUI() { // Eşyalar sadece oyun başında ve biri ölünce yenilenir, burada tekrar dağıtma! // Update turn label if (currentTurn === 'player') { turnLabel.setText("YOUR TURN"); // Ateş etme tuşu yok, revolver'a tıklanacak for (var i = 0; i < itemButtons.length; i++) { itemButtons[i].visible = false; itemButtons[i].x = -9999; itemButtons[i].y = -9999; } // bagBtn ve bagLabel yok, çantasız mantık } else { turnLabel.setText("ENEMY'S TURN"); for (var i = 0; i < itemButtons.length; i++) { itemButtons[i].visible = false; itemButtons[i].x = -9999; itemButtons[i].y = -9999; } // bagBtn ve bagLabel yok, çantasız mantık } // Health bars playerHealthBar.setHealth(playerHealth); enemyHealthBar.setHealth(enemyHealth); updateItems(); } // Item descriptions for all items that can appear var itemDescriptions = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({ flag: "Rakibin rastgele bir eşyasını çalarsın.", xray: "Tüm mermileri 2 saniye boyunca gösterir.", cigarette: "1 can yeniler.", adrenaline: "Bir sonraki atıştan hasar almazsın.", magnifier: "Bir sonraki merminin tipini 2 saniye boyunca gösterir.", buckshot: "Bir sonraki canlı mermi 2 kat hasar verir.", whiskey: "2 can yeniler.", painkillers: "Bir sonraki ölümcül atışta 1 canla hayatta kalırsın.", mirror: "Bir sonraki canlı mermiyi rakibe yansıtırsın.", shellPuller: "Rastgele bir canlı mermiyi çıkarır.", blankBullets: "Rastgele bir boş mermiyi canlıya çevirir.", scope: "Bir sonraki mermiyi garanti boş yapar.", handcuffs: "Rakip bir sonraki turunu atlar.", deflector: "Bir sonraki atış kimseye zarar vermez.", lighter: "Hemen ateş etmeni sağlar.", coin: "Yazı tura: 1 can kazan veya kaybet.", cigarettePack: "Canını tamamen doldurur.", cigaretteCase: "Sonraki 2 mermiyi boş yapar.", cigaretteLighter: "Bir sonraki mermiyi garanti canlı yapar.", cigaretteFilter: "Bir sonraki atıştan hasar almazsın.", cigarettePaper: "Rastgele bir canlı mermiyi boşa çevirir.", cigaretteTobacco: "Bir sonraki atış rakibe 2 kat hasar verir.", cigaretteButt: "1 can ver, 2 para al.", cigaretteAsh: "Bir sonraki mermiyi boş yapar.", cigaretteBurn: "Bir sonraki atış fazladan 1 hasar verir.", cigaretteSmoke: "Her iki oyuncu 1 can kaybeder.", cigaretteEmber: "Bir sonraki atış atlanır.", cigaretteTip: "1 can ve 1 para kazan.", cigaretteRoll: "Tüm mermileri karıştırır.", cigaretteBox: "Rastgele bir boş mermiyi canlıya çevirir.", cigaretteCarton: "Her iki oyuncunun canı tamamen dolar.", cigaretteBrand: "Rakibin bir sonraki mermisini boş yapar.", cigaretteLogo: "Kendi bir sonraki mermini boş yapar.", cigaretteSticker: "Bir sonraki mermiyi canlı yapar.", cigaretteFoil: "Her iki oyuncu bir sonraki turu atlar.", cigaretteCellophane: "Her iki oyuncu 2 can kaybeder.", cigaretteTaxStamp: "Her iki oyuncu 2 para kazanır.", cigaretteWarning: "Bir sonraki atıştan kimse hasar almaz.", cigaretteBarcode: "Tüm mermileri rastgele boş/canlı yapar.", cigaretteSerial: "Bir sonraki mermiyi boş yapar.", cigaretteBatch: "Bir sonraki mermiyi canlı yapar.", cigaretteDate: "Her iki oyuncu bir sonraki turu atlar.", cigaretteFactory: "Her iki oyuncunun canı tamamen dolar.", cigaretteCountry: "Her iki oyuncu 1 can kaybeder.", cigaretteImport: "Oyuncu 2 para kazanır.", cigaretteExport: "Rakip 2 para kazanır.", cigaretteDuty: "Her iki oyuncu 1 para kaybeder.", cigaretteTar: "Bir sonraki atış 2 kat hasar verir.", cigaretteNicotine: "Bir sonraki atıştan kimse hasar almaz.", cigaretteCarbonMonoxide: "Her iki oyuncu 1 can kaybeder.", cigaretteAdditive: "Bir sonraki mermiyi boş yapar.", cigaretteFlavor: "Bir sonraki mermiyi canlı yapar.", cigaretteMenthol: "Her iki oyuncu 1 can yeniler.", cigaretteClove: "Her iki oyuncu bir sonraki turu atlar.", cigaretteHerbal: "Her iki oyuncu 2 can yeniler.", cigaretteOrganic: "Her iki oyuncu 1 can yeniler.", cigaretteLight: "Bir sonraki atış yarım hasar verir.", cigaretteUltraLight: "Bir sonraki atıştan kimse hasar almaz.", cigaretteSlim: "Bir sonraki mermiyi boş yapar.", cigaretteSuperSlim: "Bir sonraki mermiyi boş yapar.", cigaretteMini: "Bir sonraki mermiyi boş yapar.", cigaretteKingSize: "Bir sonraki mermiyi canlı yapar.", cigarette100s: "Bir sonraki mermiyi canlı yapar.", cigarette120s: "Bir sonraki mermiyi canlı yapar.", cigaretteLong: "Bir sonraki mermiyi canlı yapar.", cigaretteShort: "Bir sonraki mermiyi boş yapar.", cigaretteRegular: "Hiçbir etkisi yok.", cigaretteSpecial: "Bir sonraki mermiyi canlı yapar.", cigaretteLimited: "Bir sonraki mermiyi boş yapar.", cigaretteEdition: "Tüm mermileri karıştırır.", cigaretteVintage: "Her iki oyuncu 1 can yeniler.", cigaretteClassic: "Her iki oyuncu 1 can yeniler.", cigarettePremium: "Her iki oyuncu 2 can yeniler.", cigaretteGold: "Her iki oyuncu 5 para kazanır.", cigaretteSilver: "Her iki oyuncu 3 para kazanır.", cigarettePlatinum: "Her iki oyuncu 10 para kazanır.", cigaretteDiamond: "Her iki oyuncu tam can ve 10 para kazanır.", cigaretteRuby: "Her iki oyuncu 2 can kaybeder.", cigaretteSapphire: "Her iki oyuncu 2 can yeniler.", cigaretteEmerald: "Her iki oyuncu 3 can yeniler.", cigarettePearl: "Her iki oyuncu 1 can yeniler.", cigaretteCrystal: "Her iki oyuncu 2 can yeniler.", cigaretteOpal: "Her iki oyuncu 1 can yeniler.", cigaretteJade: "Her iki oyuncu 2 can yeniler.", cigaretteAmber: "Her iki oyuncu 1 can yeniler.", cigaretteTopaz: "Her iki oyuncu 2 can yeniler.", cigaretteGarnet: "Her iki oyuncu 1 can kaybeder.", cigaretteTurquoise: "Her iki oyuncu 1 can yeniler.", cigaretteOnyx: "Her iki oyuncu 2 can kaybeder.", cigaretteObsidian: "Her iki oyuncu 1 can kaybeder.", cigaretteQuartz: "Her iki oyuncu 1 can yeniler.", cigaretteAgate: "Her iki oyuncu 2 can yeniler.", cigaretteJasper: "Her iki oyuncu 1 can yeniler.", cigaretteLapis: "Her iki oyuncu 2 can yeniler.", cigaretteMalachite: "Her iki oyuncu 1 can yeniler.", cigaretteMoonstone: "Her iki oyuncu 2 can yeniler.", cigaretteSunstone: "Her iki oyuncu 1 can yeniler.", cigaretteTigerEye: "Her iki oyuncu 2 can yeniler.", cigaretteZircon: "Her iki oyuncu 1 can yeniler.", cigaretteSpinel: "Her iki oyuncu 2 can yeniler.", cigaretteTourmaline: "Her iki oyuncu 1 can yeniler.", cigarettePeridot: "Her iki oyuncu 2 can yeniler.", cigaretteAlexandrite: "Her iki oyuncu 1 can yeniler.", cigaretteTanzanite: "Her iki oyuncu 2 can yeniler.", cigaretteMorganite: "Her iki oyuncu 1 can yeniler.", cigaretteAquamarine: "Her iki oyuncu 2 can yeniler.", cigaretteCitrine: "Her iki oyuncu 1 can yeniler.", cigaretteHeliodor: "Her iki oyuncu 2 can yeniler.", cigaretteKunzite: "Her iki oyuncu 1 can yeniler.", cigaretteLepidolite: "Her iki oyuncu 2 can yeniler.", cigaretteRhodonite: "Her iki oyuncu 1 can yeniler.", cigaretteSodalite: "Her iki oyuncu 2 can yeniler.", cigaretteSugilite: "Her iki oyuncu 1 can yeniler.", cigaretteTopazolite: "Her iki oyuncu 2 can yeniler.", cigaretteTsavorite: "Her iki oyuncu 1 can yeniler.", cigaretteVariscite: "Her iki oyuncu 2 can yeniler.", cigaretteZoisite: "Her iki oyuncu 1 can yeniler.", cigaretteAndalusite: "Her iki oyuncu 2 can yeniler.", cigaretteApatite: "Her iki oyuncu 1 can yeniler.", cigaretteAxinite: "Her iki oyuncu 2 can yeniler.", cigaretteBenitoite: "Her iki oyuncu 1 can yeniler.", cigaretteBeryl: "Her iki oyuncu 2 can yeniler.", cigaretteCassiterite: "Her iki oyuncu 1 can yeniler.", cigaretteChalcedony: "Her iki oyuncu 2 can yeniler.", cigaretteChrysoberyl: "Her iki oyuncu 1 can yeniler.", cigaretteDanburite: "Her iki oyuncu 2 can yeniler.", cigaretteDiopside: "Her iki oyuncu 1 can yeniler.", cigaretteDumortierite: "Her iki oyuncu 2 can yeniler.", cigaretteEnstatite: "Her iki oyuncu 1 can yeniler.", cigaretteEpidote: "Her iki oyuncu 2 can yeniler.", cigaretteFluorite: "Her iki oyuncu 1 can yeniler.", cigaretteGoshenite: "Her iki oyuncu 2 can yeniler.", cigaretteHackmanite: "Her iki oyuncu 1 can yeniler.", cigaretteHiddenite: "Her iki oyuncu 2 can yeniler.", cigaretteIolite: "Her iki oyuncu 1 can yeniler.", cigaretteKyanite: "Her iki oyuncu 2 can yeniler.", cigaretteLabradorite: "Her iki oyuncu 1 can yeniler.", cigaretteLarimar: "Her iki oyuncu 2 can yeniler.", cigaretteNephrite: "Her iki oyuncu 1 can yeniler.", cigarettePetalite: "Her iki oyuncu 2 can yeniler.", cigarettePrehnite: "Her iki oyuncu 1 can yeniler.", cigaretteScapolite: "Her iki oyuncu 2 can yeniler.", cigaretteSerpentine: "Her iki oyuncu 1 can yeniler.", cigaretteSmithsonite: "Her iki oyuncu 2 can yeniler.", cigaretteSpessartite: "Her iki oyuncu 1 can yeniler.", cigaretteSphene: "Her iki oyuncu 2 can yeniler.", cigaretteStaurolite: "Her iki oyuncu 1 can yeniler." }, "cigaretteSunstone", "Her iki oyuncu 2 can yeniler."), "cigaretteTektite", "Her iki oyuncu 1 can yeniler."), "cigaretteThulite", "Her iki oyuncu 2 can yeniler."), "cigaretteUvarovite", "Her iki oyuncu 1 can yeniler."), "cigaretteVesuvianite", "Her iki oyuncu 2 can yeniler."), "cigaretteWulfenite", "Her iki oyuncu 1 can yeniler."), "cigaretteZircon", "Her iki oyuncu 2 can yeniler."), "cigaretteZoisite", "Her iki oyuncu 1 can yeniler."); function updateItems() { // Eşyalar başta ve ölümde veriliyor, burada tekrar verme! var playerItemCount = playerItems.length; for (var i = 0; i < itemButtons.length; i++) { if (playerItems[i]) { var itemId = playerItems[i]; var labelText = itemId.toUpperCase(); var desc = itemDescriptions[itemId] || ""; itemButtons[i].setItem(itemId, labelText); itemButtons[i].visible = true; // --- Buckshot Roulette 2. seviye gibi, tüm sayılar için aynı düzen --- // 1-8 arası eşya için, simetrik ve köşelere yakın, üst ve alt sıralar, ortada birleşmeden var px = 2048 / 2; var yTop = 2150, yBot = 2450; if (playerItemCount === 8) { // 4 üstte, 4 altta, köşelere yakın var xArr = [px - 700, px - 400, px + 400, px + 700]; if (i < 4) { itemButtons[i].x = xArr[i]; itemButtons[i].y = yTop; } else { itemButtons[i].x = xArr[i - 4]; itemButtons[i].y = yBot; } } else if (playerItemCount === 7) { // 4 üstte, 3 altta var xArrTop = [px - 600, px - 200, px + 200, px + 600]; var xArrBot = [px - 400, px, px + 400]; if (i < 4) { itemButtons[i].x = xArrTop[i]; itemButtons[i].y = yTop; } else { itemButtons[i].x = xArrBot[i - 4]; itemButtons[i].y = yBot; } } else if (playerItemCount === 6) { // 3 üstte, 3 altta var xArr = [px - 400, px, px + 400]; if (i < 3) { itemButtons[i].x = xArr[i]; itemButtons[i].y = yTop; } else { itemButtons[i].x = xArr[i - 3]; itemButtons[i].y = yBot; } } else if (playerItemCount === 5) { // 3 üstte, 2 altta, üsttekiler daha açık var xArrTop = [px - 600, px, px + 600]; var xArrBot = [px - 400, px + 400]; if (i < 3) { itemButtons[i].x = xArrTop[i]; itemButtons[i].y = yTop; } else { itemButtons[i].x = xArrBot[i - 3]; itemButtons[i].y = yBot; } } else if (playerItemCount === 4) { // 2 üstte, 2 altta, köşelere yakın var xArr = [px - 400, px + 400]; if (i < 2) { itemButtons[i].x = xArr[i]; itemButtons[i].y = yTop; } else { itemButtons[i].x = xArr[i - 2]; itemButtons[i].y = yBot; } } else if (playerItemCount === 3) { // 3 buton ortalanmış ve yayılmış var xArr = [px - 400, px, px + 400]; itemButtons[i].x = xArr[i]; itemButtons[i].y = (yTop + yBot) / 2; } else if (playerItemCount === 2) { var xArr = [px - 300, px + 300]; itemButtons[i].x = xArr[i]; itemButtons[i].y = (yTop + yBot) / 2; } else if (playerItemCount === 1) { itemButtons[i].x = px; itemButtons[i].y = (yTop + yBot) / 2; } // Butona tıklayınca popup aç itemButtons[i].onUse = function (itemId, desc, btnIdx) { return function () { // Önce eski popup varsa kaldır if (game._itemPopup) { game.removeChild(game._itemPopup); game._itemPopup = null; } // Popup container var popup = new Container(); // Açıklama var txt = new Text2(desc, { size: 60, fill: "#888" }); txt.anchor.set(0.5, 0.5); txt.x = 2048 / 2; txt.y = 1450; popup.addChild(txt); // Soru var q = new Text2("Kullanmak istiyor musun?", { size: 50, fill: 0xFFE066 }); q.anchor.set(0.5, 0.5); q.x = 2048 / 2; q.y = 1600; popup.addChild(q); // Evet butonu var yesBtn = LK.getAsset('itemIcon', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 1.2, x: 2048 / 2 - 180, y: 1700 }); popup.addChild(yesBtn); var yesTxt = new Text2("Kullan", { size: 44, fill: 0x83DE44 }); yesTxt.anchor.set(0.5, 0.5); yesTxt.x = yesBtn.x; yesTxt.y = yesBtn.y + 90; popup.addChild(yesTxt); // Hayır butonu var noBtn = LK.getAsset('itemIcon', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 1.2, x: 2048 / 2 + 180, y: 1700 }); popup.addChild(noBtn); var noTxt = new Text2("Vazgeç", { size: 44, fill: 0xD83318 }); noTxt.anchor.set(0.5, 0.5); noTxt.x = noBtn.x; noTxt.y = noBtn.y + 90; popup.addChild(noTxt); // Evet: item kullan yesBtn.down = function () { useItem(itemId); if (game._itemPopup) { game.removeChild(game._itemPopup); game._itemPopup = null; } }; // Hayır: popup kapat noBtn.down = function () { if (game._itemPopup) { game.removeChild(game._itemPopup); game._itemPopup = null; } }; // Popup'u ekle game.addChild(popup); game._itemPopup = popup; }; }(itemId, desc, i); // Buton altı açıklama kaldırıldı if (itemButtons[i].descText) { itemButtons[i].descText.visible = false; } } else { itemButtons[i].visible = false; if (itemButtons[i].descText) { itemButtons[i].descText.visible = false; } } } // Enemy item butonlarını konumlandır var enemyItemCount = enemyItems.length; for (var i = 0; i < enemyItemButtons.length; i++) { if (enemyItems[i]) { var itemId = enemyItems[i]; var labelText = itemId.toUpperCase(); enemyItemButtons[i].setItem(itemId, labelText); enemyItemButtons[i].visible = true; // --- Buckshot Roulette 2. seviye gibi, tüm sayılar için aynı düzen --- // 1-8 arası eşya için, simetrik ve köşelere yakın, üst ve alt sıralar, ortada birleşmeden var px = 2048 / 2; var yTop = 500, yBot = 900; if (enemyItemCount === 8) { // 4 üstte, 4 altta, köşelere yakın var xArr = [px - 700, px - 400, px + 400, px + 700]; if (i < 4) { enemyItemButtons[i].x = xArr[i]; enemyItemButtons[i].y = yTop; } else { enemyItemButtons[i].x = xArr[i - 4]; enemyItemButtons[i].y = yBot; } } else if (enemyItemCount === 7) { // 4 üstte, 3 altta var xArrTop = [px - 600, px - 200, px + 200, px + 600]; var xArrBot = [px - 400, px, px + 400]; if (i < 4) { enemyItemButtons[i].x = xArrTop[i]; enemyItemButtons[i].y = yTop; } else { enemyItemButtons[i].x = xArrBot[i - 4]; enemyItemButtons[i].y = yBot; } } else if (enemyItemCount === 6) { // 3 üstte, 3 altta var xArr = [px - 400, px, px + 400]; if (i < 3) { enemyItemButtons[i].x = xArr[i]; enemyItemButtons[i].y = yTop; } else { enemyItemButtons[i].x = xArr[i - 3]; enemyItemButtons[i].y = yBot; } } else if (enemyItemCount === 5) { // 3 üstte, 2 altta, üsttekiler daha açık var xArrTop = [px - 600, px, px + 600]; var xArrBot = [px - 400, px + 400]; if (i < 3) { enemyItemButtons[i].x = xArrTop[i]; enemyItemButtons[i].y = yTop; } else { enemyItemButtons[i].x = xArrBot[i - 3]; enemyItemButtons[i].y = yBot; } } else if (enemyItemCount === 4) { // 2 üstte, 2 altta, köşelere yakın var xArr = [px - 400, px + 400]; if (i < 2) { enemyItemButtons[i].x = xArr[i]; enemyItemButtons[i].y = yTop; } else { enemyItemButtons[i].x = xArr[i - 2]; enemyItemButtons[i].y = yBot; } } else if (enemyItemCount === 3) { // 3 buton ortalanmış ve yayılmış var xArr = [px - 400, px, px + 400]; enemyItemButtons[i].x = xArr[i]; enemyItemButtons[i].y = (yTop + yBot) / 2; } else if (enemyItemCount === 2) { var xArr = [px - 300, px + 300]; enemyItemButtons[i].x = xArr[i]; enemyItemButtons[i].y = (yTop + yBot) / 2; } else if (enemyItemCount === 1) { enemyItemButtons[i].x = px; enemyItemButtons[i].y = (yTop + yBot) / 2; } // Açıklama gösterme if (enemyItemButtons[i].descText) { enemyItemButtons[i].descText.visible = false; } } else { enemyItemButtons[i].visible = false; if (enemyItemButtons[i].descText) { enemyItemButtons[i].descText.visible = false; } } } } // --- Game Logic --- function fireRevolver() { // XRAY veya MAGNIFIER aktifse, ateş edildiğinde efektleri kapat if (game._xrayActiveForPlayer) { revolver.hideAll(); for (var i = 0; i < revolver.chambers.length; i++) { if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") { revolver.chambers[i].setLiveIndicatorVisible(false, false); } // XRAY bittiğinde saydamlığı da sıfırla revolver.chambers[i].alpha = 0.5; } game._xrayActive = false; game._xrayActiveForPlayer = false; } if (game._xrayActiveForEnemy) { // Enemy XRAY efekti sadece enemy için görünür, oyuncudan tamamen gizli revolver.hideAll(); for (var i = 0; i < revolver.chambers.length; i++) { if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") { revolver.chambers[i].setLiveIndicatorVisible(false, false); } // XRAY bittiğinde saydamlığı da sıfırla revolver.chambers[i].alpha = 0.5; } game._xrayActive = false; game._xrayActiveForEnemy = false; } if (game._magnifierActiveForPlayer) { var idx = game._magnifierChamberIdx; if (typeof idx !== "undefined" && revolver.chambers[idx]) { revolver.chambers[idx].alpha = 0.5; if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") { revolver.chambers[idx].setLiveIndicatorVisible(false, false); } } // MAGNIFIER bittiğinde saydamlığı da sıfırla for (var i = 0; i < revolver.chambers.length; i++) { if (i !== idx) revolver.chambers[i].alpha = 0.5; } game._magnifierActive = false; game._magnifierActiveForPlayer = false; game._magnifierChamberIdx = undefined; } if (game._magnifierActiveForEnemy) { var idx = game._magnifierChamberIdx; if (typeof idx !== "undefined" && revolver.chambers[idx]) { revolver.chambers[idx].alpha = 0.5; if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") { revolver.chambers[idx].setLiveIndicatorVisible(false, false); } } // MAGNIFIER bittiğinde saydamlığı da sıfırla for (var i = 0; i < revolver.chambers.length; i++) { if (i !== idx) revolver.chambers[i].alpha = 0.5; } game._magnifierActive = false; game._magnifierActiveForEnemy = false; game._magnifierChamberIdx = undefined; } // 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; // Enemy turn is skipped, pass turn to player currentTurn = 'player'; updateUI(); // Ensure turnLabel is updated immediately turnLabel.setText("YOUR TURN"); // Make sure enemyTurn does not get called again 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'); // --- Move bullet position: always shuffle chamber types after firing, same for both player and enemy turns --- var chamberTypes = []; for (var i = 0; i < revolver.chambers.length; i++) { chamberTypes.push(revolver.chambers[i].type); } shuffle(chamberTypes); revolver.setChambers(chamberTypes); revolver.advance(); checkGameOver(); // Check if all live bullets are fired var liveBulletsLeft = revolver.chambers.some(function (chamber) { return chamber.type === 'live'; }); if (!liveBulletsLeft && gamePhase !== 'gameover') { // All live bullets are fired, reload chambers var liveCount = 1; // For MVP, reload with 1 live and 5 blanks var blankCount = 6 - liveCount; revolverChambers = []; var liveIndexes = []; for (var i = 0; i < liveCount; i++) { liveIndexes.push(i); } var chamberIndexes = [0, 1, 2, 3, 4, 5]; shuffle(chamberIndexes); for (var i = 0; i < 6; i++) { revolverChambers[i] = 'blank'; } for (var i = 0; i < liveCount; i++) { revolverChambers[chamberIndexes[i]] = 'live'; } revolver.setChambers(revolverChambers); revolver.spin(); } if (gamePhase !== 'gameover') { currentTurn = 'enemy'; updateUI(); LK.setTimeout(enemyTurn, 1200); } } else { // Enemy's turn // For MVP: only live/blank revolver.chambers[revolver.currentChamber].setType('fired'); // --- Move bullet position: always shuffle chamber types after firing, same for both player and enemy turns --- var chamberTypes = []; for (var i = 0; i < revolver.chambers.length; i++) { chamberTypes.push(revolver.chambers[i].type); } shuffle(chamberTypes); revolver.setChambers(chamberTypes); revolver.advance(); checkGameOver(); // Check if all live bullets are fired var liveBulletsLeft = revolver.chambers.some(function (chamber) { return chamber.type === 'live'; }); if (!liveBulletsLeft && gamePhase !== 'gameover') { // All live bullets are fired, reload chambers var liveCount = 1; // For MVP, reload with 1 live and 5 blanks var blankCount = 6 - liveCount; revolverChambers = []; var liveIndexes = []; for (var i = 0; i < liveCount; i++) { liveIndexes.push(i); } var chamberIndexes = [0, 1, 2, 3, 4, 5]; shuffle(chamberIndexes); for (var i = 0; i < 6; i++) { revolverChambers[i] = 'blank'; } for (var i = 0; i < liveCount; i++) { revolverChambers[chamberIndexes[i]] = 'live'; } revolver.setChambers(revolverChambers); revolver.spin(); } if (gamePhase !== 'gameover') { currentTurn = 'player'; updateUI(); // Ensure turnLabel is updated immediately turnLabel.setText("YOUR TURN"); } } } 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 < itemsArr.length; i++) { if (itemsArr[i] === itemId) { itemsArr.splice(i, 1); break; } } }; // XRAY: Reveal all chambers until next fire if (itemId === 'xray') { // XRAY aktifken başka bir XRAY/MAGNIFIER başlatılırsa eski timeout'u temizle if (game._xrayTimeout) { LK.clearTimeout(game._xrayTimeout); game._xrayTimeout = null; } // XRAY aktif flag if (!isEnemy) { game._xrayActive = true; game._xrayActiveForPlayer = true; game._xrayActiveForEnemy = false; // Sadece oyuncuya göster revolver.revealAll(); for (var i = 0; i < revolver.chambers.length; i++) { if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") { revolver.chambers[i].setLiveIndicatorVisible(true, true); } } } else { game._xrayActive = true; game._xrayActiveForEnemy = true; game._xrayActiveForPlayer = false; // Sadece enemy'ye göster (oyuncudan gizli, ama kodda aynı şekilde açılıyor) revolver.revealAll(); for (var i = 0; i < revolver.chambers.length; i++) { if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") { revolver.chambers[i].setLiveIndicatorVisible(true, true); } } } // Ateş edilene kadar XRAY açık kalacak, timeout yok removeItem(); } // CIGARETTE: Heal 1 HP (if not max) else if (itemId === 'cigarette') { if (!isEnemy && playerHealth < maxHealth) { playerHealth++; healthBar.flashHeal(); healthBar.setHealth(playerHealth); } else if (isEnemy && enemyHealth < maxHealth) { enemyHealth++; healthBar.flashHeal(); healthBar.setHealth(enemyHealth); } 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 until next fire else if (itemId === 'magnifier') { // MAGNIFIER aktifken başka bir XRAY/MAGNIFIER başlatılırsa eski timeout'u temizle if (game._magnifierTimeout) { LK.clearTimeout(game._magnifierTimeout); game._magnifierTimeout = null; } var idx = revolver.currentChamber; game._magnifierActive = true; game._magnifierChamberIdx = idx; revolver.chambers[idx].alpha = 1; if (!isEnemy) { game._magnifierActiveForPlayer = true; game._magnifierActiveForEnemy = false; // Sadece oyuncuya göster if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") { revolver.chambers[idx].setLiveIndicatorVisible(true, true); } } else { game._magnifierActiveForEnemy = true; game._magnifierActiveForPlayer = false; // Sadece enemy'ye göster (oyuncudan gizli, ama kodda aynı şekilde açılıyor) if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") { revolver.chambers[idx].setLiveIndicatorVisible(true, true); } } // Ateş edilene kadar MAGNIFIER açık kalacak, timeout yok 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 (!isEnemy && playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; healthBar.flashHeal(); healthBar.setHealth(playerHealth); } else if (isEnemy && enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; healthBar.flashHeal(); healthBar.setHealth(enemyHealth); } removeItem(); } // PAINKILLERS: Survive next shot at 1 HP else if (itemId === 'painkillers') { if (!isEnemy) { game.painkillersActive = true; } else { game.enemyPainkillersActive = true; } removeItem(); } // MIRROR: O anki mermiyi (dolu ya da boş) karşıya ateş et else if (itemId === 'mirror') { // Sıra oyuncudaysa, oyuncunun ateşini hemen karşıya uygula if (!isEnemy) { // Mevcut mermi tipini al var type = revolver.getCurrentType(); // Animasyon ve efektler revolver.flashCurrent(); // XRAY/MAGNIFIER aktifse efektleri kapat (her iki oyuncu için de) if (game._xrayActiveForPlayer || game._xrayActiveForEnemy) { revolver.hideAll(); for (var i = 0; i < revolver.chambers.length; i++) { if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") { revolver.chambers[i].setLiveIndicatorVisible(false, false); } } game._xrayActive = false; game._xrayActiveForPlayer = false; game._xrayActiveForEnemy = false; } if (game._magnifierActiveForPlayer || game._magnifierActiveForEnemy) { var idx = game._magnifierChamberIdx; if (typeof idx !== "undefined" && revolver.chambers[idx]) { revolver.chambers[idx].alpha = 0.5; if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") { revolver.chambers[idx].setLiveIndicatorVisible(false, false); } } game._magnifierActive = false; game._magnifierActiveForPlayer = false; game._magnifierActiveForEnemy = false; game._magnifierChamberIdx = undefined; } // Karşıya ateş et (enemyHealth azalt) if (type === 'live') { enemyHealth--; enemyHealthBar.flashDamage(); LK.effects.flashObject(enemyHealthBar, 0xff0000, 500); } else { // Boşsa efekt göster LK.effects.flashScreen(0x888888, 300); } // Mermiyi fired yap revolver.chambers[revolver.currentChamber].setType('fired'); // Mermileri karıştır ve ilerlet var chamberTypes = []; for (var i = 0; i < revolver.chambers.length; i++) { chamberTypes.push(revolver.chambers[i].type); } shuffle(chamberTypes); revolver.setChambers(chamberTypes); revolver.advance(); checkGameOver(); // Sıra değişsin if (gamePhase !== 'gameover') { currentTurn = 'enemy'; updateUI(); LK.setTimeout(enemyTurn, 1200); } } else { // Enemy kullanırsa, oyuncuya ateş et var type = revolver.getCurrentType(); revolver.flashCurrent(); // XRAY/MAGNIFIER aktifse efektleri kapat (her iki oyuncu için de) if (game._xrayActiveForPlayer || game._xrayActiveForEnemy) { revolver.hideAll(); for (var i = 0; i < revolver.chambers.length; i++) { if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") { revolver.chambers[i].setLiveIndicatorVisible(false, false); } } game._xrayActive = false; game._xrayActiveForPlayer = false; game._xrayActiveForEnemy = false; } if (game._magnifierActiveForPlayer || game._magnifierActiveForEnemy) { var idx = game._magnifierChamberIdx; if (typeof idx !== "undefined" && revolver.chambers[idx]) { revolver.chambers[idx].alpha = 0.5; if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") { revolver.chambers[idx].setLiveIndicatorVisible(false, false); } } game._magnifierActive = false; game._magnifierActiveForPlayer = false; game._magnifierActiveForEnemy = false; game._magnifierChamberIdx = undefined; } if (type === 'live') { playerHealth--; playerHealthBar.flashDamage(); LK.effects.flashObject(playerHealthBar, 0xff0000, 500); } else { LK.effects.flashScreen(0x888888, 300); } revolver.chambers[revolver.currentChamber].setType('fired'); var chamberTypes = []; for (var i = 0; i < revolver.chambers.length; i++) { chamberTypes.push(revolver.chambers[i].type); } shuffle(chamberTypes); revolver.setChambers(chamberTypes); revolver.advance(); checkGameOver(); if (gamePhase !== 'gameover') { currentTurn = 'player'; updateUI(); } } 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(); } // SCOPE: Next shot is guaranteed to be a blank (for player or enemy) else if (itemId === 'scope') { // Find next chamber to fire var idx = revolver.currentChamber; if (revolver.chambers[idx].type === 'live') { revolver.chambers[idx].setType('blank'); LK.effects.flashScreen(0x00ffcc, 500); } removeItem(); } // HANDCUFFS: Opponent skips their next turn else if (itemId === 'handcuffs') { if (!isEnemy) { game.skipEnemyTurn = true; } else { game.skipPlayerTurn = true; } removeItem(); } // DEFLECTOR: Next shot is deflected (no one takes damage) else if (itemId === 'deflector') { if (!isEnemy) { game.deflectorActive = true; } else { game.enemyDeflectorActive = true; } removeItem(); } // LIGHTER: Instantly fire the next chamber (player only) else if (itemId === 'lighter') { if (!isEnemy && currentTurn === 'player' && gamePhase === 'action') { fireRevolver(); } removeItem(); } // COIN: 50% chance to heal 1 HP or lose 1 HP else if (itemId === 'coin') { var flip = Math.random() < 0.5; if (!isEnemy) { if (flip && playerHealth < maxHealth) { playerHealth++; healthBar.flashHeal(); healthBar.setHealth(playerHealth); } else if (!flip && playerHealth > 1) { playerHealth--; healthBar.flashDamage(); healthBar.setHealth(playerHealth); } } else { if (flip && enemyHealth < maxHealth) { enemyHealth++; healthBar.flashHeal(); healthBar.setHealth(enemyHealth); } else if (!flip && enemyHealth > 1) { enemyHealth--; healthBar.flashDamage(); healthBar.setHealth(enemyHealth); } } removeItem(); } // CIGARETTE PACK: Fully heal (set HP to max) else if (itemId === 'cigarettePack') { if (!isEnemy && playerHealth < maxHealth) { playerHealth = maxHealth; healthBar.flashHeal(); healthBar.setHealth(playerHealth); } else if (isEnemy && enemyHealth < maxHealth) { enemyHealth = maxHealth; healthBar.flashHeal(); healthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE CASE: Next 2 shots are blanks else if (itemId === 'cigaretteCase') { var blanksSet = 0; for (var i = 0; i < revolver.chambers.length && blanksSet < 2; i++) { var idx = (revolver.currentChamber + i) % revolver.chambers.length; if (revolver.chambers[idx].type === 'live') { revolver.chambers[idx].setType('blank'); blanksSet++; } } removeItem(); } // CIGARETTE LIGHTER: Next shot is guaranteed to be live else if (itemId === 'cigaretteLighter') { var idx = revolver.currentChamber; if (revolver.chambers[idx].type === 'blank') { revolver.chambers[idx].setType('live'); LK.effects.flashScreen(0xffa500, 500); } removeItem(); } // CIGARETTE FILTER: Next shot does no damage else if (itemId === 'cigaretteFilter') { if (!isEnemy) { game.filterActive = true; } else { game.enemyFilterActive = true; } removeItem(); } // CIGARETTE PAPER: Add a blank round to a random chamber else if (itemId === 'cigarettePaper') { var lives = []; for (var i = 0; i < revolver.chambers.length; i++) { if (revolver.chambers[i].type === 'live') lives.push(i); } if (lives.length > 0) { var idx = lives[Math.floor(Math.random() * lives.length)]; revolver.chambers[idx].setType('blank'); LK.effects.flashScreen(0x00ffcc, 500); } removeItem(); } // CIGARETTE TOBACCO: Next shot does double damage to opponent else if (itemId === 'cigaretteTobacco') { if (!isEnemy) { game.buckshotActive = true; } else { game.enemyBuckshotActive = true; } removeItem(); } // CIGARETTE BUTT: Lose 1 HP to gain 2 money (if money system is used) else if (itemId === 'cigaretteButt') { if (!isEnemy && playerHealth > 1) { playerHealth--; playerMoney += 2; healthBar.flashDamage(); healthBar.setHealth(playerHealth); } else if (isEnemy && enemyHealth > 1) { enemyHealth--; enemyMoney += 2; healthBar.flashDamage(); healthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ASH: Next shot is a blank for both players else if (itemId === 'cigaretteAsh') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('blank'); removeItem(); } // CIGARETTE BURN: Next shot does 1 extra damage else if (itemId === 'cigaretteBurn') { if (!isEnemy) { game.burnActive = true; } else { game.enemyBurnActive = true; } removeItem(); } // CIGARETTE SMOKE: Both players lose 1 HP else if (itemId === 'cigaretteSmoke') { if (playerHealth > 1) { playerHealth--; playerHealthBar.flashDamage(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth > 1) { enemyHealth--; enemyHealthBar.flashDamage(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE EMBER: Next shot is skipped (no one fires) else if (itemId === 'cigaretteEmber') { if (!isEnemy) { game.skipPlayerTurn = true; } else { game.skipEnemyTurn = true; } removeItem(); } // CIGARETTE TIP: Heal 1 HP and gain 1 money else if (itemId === 'cigaretteTip') { if (!isEnemy && playerHealth < maxHealth) { playerHealth++; playerMoney++; healthBar.flashHeal(); healthBar.setHealth(playerHealth); } else if (isEnemy && enemyHealth < maxHealth) { enemyHealth++; enemyMoney++; healthBar.flashHeal(); healthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ROLL: Randomly shuffle all chambers else if (itemId === 'cigaretteRoll') { shuffle(revolverChambers); revolver.setChambers(revolverChambers); removeItem(); } // CIGARETTE BOX: Add 1 live round to a random blank else if (itemId === 'cigaretteBox') { 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(); } // CIGARETTE CARTON: Both players fully heal else if (itemId === 'cigaretteCarton') { playerHealth = maxHealth; enemyHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); removeItem(); } // CIGARETTE BRAND: Next shot is a blank for enemy else if (itemId === 'cigaretteBrand') { if (isEnemy) { var idx = revolver.currentChamber; revolver.chambers[idx].setType('blank'); } removeItem(); } // CIGARETTE LOGO: Next shot is a blank for player else if (itemId === 'cigaretteLogo') { if (!isEnemy) { var idx = revolver.currentChamber; revolver.chambers[idx].setType('blank'); } removeItem(); } // CIGARETTE STICKER: Next shot is a live for both players else if (itemId === 'cigaretteSticker') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('live'); removeItem(); } // CIGARETTE FOIL: Next shot is skipped for both players else if (itemId === 'cigaretteFoil') { game.skipPlayerTurn = true; game.skipEnemyTurn = true; removeItem(); } // CIGARETTE CELLOPHANE: Both players lose 2 HP else if (itemId === 'cigaretteCellophane') { if (playerHealth > 2) { playerHealth -= 2; playerHealthBar.flashDamage(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth > 2) { enemyHealth -= 2; enemyHealthBar.flashDamage(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE TAX STAMP: Both players gain 2 money else if (itemId === 'cigaretteTaxStamp') { playerMoney += 2; enemyMoney += 2; removeItem(); } // CIGARETTE WARNING: Next shot does no damage for both players else if (itemId === 'cigaretteWarning') { game.filterActive = true; game.enemyFilterActive = true; removeItem(); } // CIGARETTE BARCODE: Randomly set all chambers to blank or live else if (itemId === 'cigaretteBarcode') { for (var i = 0; i < revolver.chambers.length; i++) { revolver.chambers[i].setType(Math.random() < 0.5 ? 'blank' : 'live'); } removeItem(); } // CIGARETTE SERIAL: Next shot is a blank for both players else if (itemId === 'cigaretteSerial') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('blank'); removeItem(); } // CIGARETTE BATCH: Next shot is a live for both players else if (itemId === 'cigaretteBatch') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('live'); removeItem(); } // CIGARETTE DATE: Both players skip next turn else if (itemId === 'cigaretteDate') { game.skipPlayerTurn = true; game.skipEnemyTurn = true; removeItem(); } // CIGARETTE FACTORY: Both players fully heal else if (itemId === 'cigaretteFactory') { playerHealth = maxHealth; enemyHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); removeItem(); } // CIGARETTE COUNTRY: Both players lose 1 HP else if (itemId === 'cigaretteCountry') { if (playerHealth > 1) { playerHealth--; playerHealthBar.flashDamage(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth > 1) { enemyHealth--; enemyHealthBar.flashDamage(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE IMPORT: Player gains 2 money else if (itemId === 'cigaretteImport') { if (!isEnemy) playerMoney += 2; removeItem(); } // CIGARETTE EXPORT: Enemy gains 2 money else if (itemId === 'cigaretteExport') { if (isEnemy) enemyMoney += 2; removeItem(); } // CIGARETTE DUTY: Both players lose 1 money else if (itemId === 'cigaretteDuty') { if (playerMoney > 0) playerMoney--; if (enemyMoney > 0) enemyMoney--; removeItem(); } // CIGARETTE TAR: Next shot does double damage for both players else if (itemId === 'cigaretteTar') { game.buckshotActive = true; game.enemyBuckshotActive = true; removeItem(); } // CIGARETTE NICOTINE: Next shot does no damage for both players else if (itemId === 'cigaretteNicotine') { game.filterActive = true; game.enemyFilterActive = true; removeItem(); } // CIGARETTE CARBON MONOXIDE: Both players lose 1 HP else if (itemId === 'cigaretteCarbonMonoxide') { if (playerHealth > 1) { playerHealth--; playerHealthBar.flashDamage(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth > 1) { enemyHealth--; enemyHealthBar.flashDamage(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ADDITIVE: Next shot is a blank for both players else if (itemId === 'cigaretteAdditive') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('blank'); removeItem(); } // CIGARETTE FLAVOR: Next shot is a live for both players else if (itemId === 'cigaretteFlavor') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('live'); removeItem(); } // CIGARETTE MENTHOL: Both players heal 1 HP else if (itemId === 'cigaretteMenthol') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE CLOVE: Next shot is skipped for both players else if (itemId === 'cigaretteClove') { game.skipPlayerTurn = true; game.skipEnemyTurn = true; removeItem(); } // CIGARETTE HERBAL: Both players heal 2 HP else if (itemId === 'cigaretteHerbal') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ORGANIC: Both players heal 1 HP else if (itemId === 'cigaretteOrganic') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE LIGHT: Next shot does half damage for both players else if (itemId === 'cigaretteLight') { if (!isEnemy) { game.lightActive = true; } else { game.enemyLightActive = true; } removeItem(); } // CIGARETTE ULTRALIGHT: Next shot does no damage for both players else if (itemId === 'cigaretteUltraLight') { game.filterActive = true; game.enemyFilterActive = true; removeItem(); } // CIGARETTE SLIM: Next shot is a blank for both players else if (itemId === 'cigaretteSlim') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('blank'); removeItem(); } // CIGARETTE SUPERSLIM: Next shot is a blank for both players else if (itemId === 'cigaretteSuperSlim') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('blank'); removeItem(); } // CIGARETTE MINI: Next shot is a blank for both players else if (itemId === 'cigaretteMini') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('blank'); removeItem(); } // CIGARETTE KING SIZE: Next shot is a live for both players else if (itemId === 'cigaretteKingSize') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('live'); removeItem(); } // CIGARETTE 100s: Next shot is a live for both players else if (itemId === 'cigarette100s') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('live'); removeItem(); } // CIGARETTE 120s: Next shot is a live for both players else if (itemId === 'cigarette120s') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('live'); removeItem(); } // CIGARETTE LONG: Next shot is a live for both players else if (itemId === 'cigaretteLong') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('live'); removeItem(); } // CIGARETTE SHORT: Next shot is a blank for both players else if (itemId === 'cigaretteShort') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('blank'); removeItem(); } // CIGARETTE REGULAR: No effect (placeholder) else if (itemId === 'cigaretteRegular') { removeItem(); } // CIGARETTE SPECIAL: Next shot is a live for both players else if (itemId === 'cigaretteSpecial') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('live'); removeItem(); } // CIGARETTE LIMITED: Next shot is a blank for both players else if (itemId === 'cigaretteLimited') { var idx = revolver.currentChamber; revolver.chambers[idx].setType('blank'); removeItem(); } // CIGARETTE EDITION: Shuffle all chambers else if (itemId === 'cigaretteEdition') { shuffle(revolverChambers); revolver.setChambers(revolverChambers); removeItem(); } // CIGARETTE VINTAGE: Both players heal 1 HP else if (itemId === 'cigaretteVintage') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE CLASSIC: Both players heal 1 HP else if (itemId === 'cigaretteClassic') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE PREMIUM: Both players heal 2 HP else if (itemId === 'cigarettePremium') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE GOLD: Both players gain 5 money else if (itemId === 'cigaretteGold') { playerMoney += 5; enemyMoney += 5; removeItem(); } // CIGARETTE SILVER: Both players gain 3 money else if (itemId === 'cigaretteSilver') { playerMoney += 3; enemyMoney += 3; removeItem(); } // CIGARETTE PLATINUM: Both players gain 10 money else if (itemId === 'cigarettePlatinum') { playerMoney += 10; enemyMoney += 10; removeItem(); } // CIGARETTE DIAMOND: Both players fully heal and gain 10 money else if (itemId === 'cigaretteDiamond') { playerHealth = maxHealth; enemyHealth = maxHealth; playerMoney += 10; enemyMoney += 10; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); removeItem(); } // CIGARETTE RUBY: Both players lose 2 HP else if (itemId === 'cigaretteRuby') { if (playerHealth > 2) { playerHealth -= 2; playerHealthBar.flashDamage(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth > 2) { enemyHealth -= 2; enemyHealthBar.flashDamage(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SAPPHIRE: Both players heal 2 HP else if (itemId === 'cigaretteSapphire') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE EMERALD: Both players heal 3 HP else if (itemId === 'cigaretteEmerald') { if (playerHealth < maxHealth) { playerHealth += 3; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 3; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE PEARL: Both players heal 1 HP else if (itemId === 'cigarettePearl') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE CRYSTAL: Both players heal 2 HP else if (itemId === 'cigaretteCrystal') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE OPAL: Both players heal 1 HP else if (itemId === 'cigaretteOpal') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE JADE: Both players heal 2 HP else if (itemId === 'cigaretteJade') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE AMBER: Both players heal 1 HP else if (itemId === 'cigaretteAmber') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE TOPAZ: Both players heal 2 HP else if (itemId === 'cigaretteTopaz') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE GARNET: Both players lose 1 HP else if (itemId === 'cigaretteGarnet') { if (playerHealth > 1) { playerHealth--; playerHealthBar.flashDamage(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth > 1) { enemyHealth--; enemyHealthBar.flashDamage(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE TURQUOISE: Both players heal 1 HP else if (itemId === 'cigaretteTurquoise') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ONYX: Both players lose 2 HP else if (itemId === 'cigaretteOnyx') { if (playerHealth > 2) { playerHealth -= 2; playerHealthBar.flashDamage(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth > 2) { enemyHealth -= 2; enemyHealthBar.flashDamage(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE OBSIDIAN: Both players lose 1 HP else if (itemId === 'cigaretteObsidian') { if (playerHealth > 1) { playerHealth--; playerHealthBar.flashDamage(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth > 1) { enemyHealth--; enemyHealthBar.flashDamage(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE QUARTZ: Both players heal 1 HP else if (itemId === 'cigaretteQuartz') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE AGATE: Both players heal 2 HP else if (itemId === 'cigaretteAgate') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE JASPER: Both players heal 1 HP else if (itemId === 'cigaretteJasper') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE LAPIS: Both players heal 2 HP else if (itemId === 'cigaretteLapis') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE MALACHITE: Both players heal 1 HP else if (itemId === 'cigaretteMalachite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE MOONSTONE: Both players heal 2 HP else if (itemId === 'cigaretteMoonstone') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SUNSTONE: Both players heal 1 HP else if (itemId === 'cigaretteSunstone') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE TIGEREYE: Both players heal 2 HP else if (itemId === 'cigaretteTigerEye') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ZIRCON: Both players heal 1 HP else if (itemId === 'cigaretteZircon') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SPINEL: Both players heal 2 HP else if (itemId === 'cigaretteSpinel') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE TOURMALINE: Both players heal 1 HP else if (itemId === 'cigaretteTourmaline') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE PERIDOT: Both players heal 2 HP else if (itemId === 'cigarettePeridot') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ALEXANDRITE: Both players heal 1 HP else if (itemId === 'cigaretteAlexandrite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE TANZANITE: Both players heal 2 HP else if (itemId === 'cigaretteTanzanite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE MORGANITE: Both players heal 1 HP else if (itemId === 'cigaretteMorganite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE AQUAMARINE: Both players heal 2 HP else if (itemId === 'cigaretteAquamarine') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE CITRINE: Both players heal 1 HP else if (itemId === 'cigaretteCitrine') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE HELIODOR: Both players heal 2 HP else if (itemId === 'cigaretteHeliodor') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE KUNZITE: Both players heal 1 HP else if (itemId === 'cigaretteKunzite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE LEPIDOLITE: Both players heal 2 HP else if (itemId === 'cigaretteLepidolite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE RHODONITE: Both players heal 1 HP else if (itemId === 'cigaretteRhodonite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SODALITE: Both players heal 2 HP else if (itemId === 'cigaretteSodalite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SUGILITE: Both players heal 1 HP else if (itemId === 'cigaretteSugilite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE TOPAZOLITE: Both players heal 2 HP else if (itemId === 'cigaretteTopazolite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE TSAVORITE: Both players heal 1 HP else if (itemId === 'cigaretteTsavorite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE VARISCITE: Both players heal 2 HP else if (itemId === 'cigaretteVariscite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ZOISITE: Both players heal 1 HP else if (itemId === 'cigaretteZoisite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ANDALUSITE: Both players heal 2 HP else if (itemId === 'cigaretteAndalusite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE APATITE: Both players heal 1 HP else if (itemId === 'cigaretteApatite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE AXINITE: Both players heal 2 HP else if (itemId === 'cigaretteAxinite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE BENITOITE: Both players heal 1 HP else if (itemId === 'cigaretteBenitoite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE BERYL: Both players heal 2 HP else if (itemId === 'cigaretteBeryl') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE CASSITERITE: Both players heal 1 HP else if (itemId === 'cigaretteCassiterite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE CHALCEDONY: Both players heal 2 HP else if (itemId === 'cigaretteChalcedony') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE CHRYSOBERYL: Both players heal 1 HP else if (itemId === 'cigaretteChrysoberyl') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE DANBURITE: Both players heal 2 HP else if (itemId === 'cigaretteDanburite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE DIOPSIDE: Both players heal 1 HP else if (itemId === 'cigaretteDiopside') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE DUMORTIERITE: Both players heal 2 HP else if (itemId === 'cigaretteDumortierite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ENSTATITE: Both players heal 1 HP else if (itemId === 'cigaretteEnstatite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE EPIDOTE: Both players heal 2 HP else if (itemId === 'cigaretteEpidote') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE FLUORITE: Both players heal 1 HP else if (itemId === 'cigaretteFluorite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE GOSHENITE: Both players heal 2 HP else if (itemId === 'cigaretteGoshenite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE HACKMANITE: Both players heal 1 HP else if (itemId === 'cigaretteHackmanite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE HIDDENITE: Both players heal 2 HP else if (itemId === 'cigaretteHiddenite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE IOLITE: Both players heal 1 HP else if (itemId === 'cigaretteIolite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE KYANITE: Both players heal 2 HP else if (itemId === 'cigaretteKyanite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE LABRADORITE: Both players heal 1 HP else if (itemId === 'cigaretteLabradorite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE LARIMAR: Both players heal 2 HP else if (itemId === 'cigaretteLarimar') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE NEPHRITE: Both players heal 1 HP else if (itemId === 'cigaretteNephrite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE PETALITE: Both players heal 2 HP else if (itemId === 'cigarettePetalite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE PREHNITE: Both players heal 1 HP else if (itemId === 'cigarettePrehnite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SCAPOLITE: Both players heal 2 HP else if (itemId === 'cigaretteScapolite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SERPENTINE: Both players heal 1 HP else if (itemId === 'cigaretteSerpentine') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SMITHSONITE: Both players heal 2 HP else if (itemId === 'cigaretteSmithsonite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SPESSARTITE: Both players heal 1 HP else if (itemId === 'cigaretteSpessartite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SPHENE: Both players heal 2 HP else if (itemId === 'cigaretteSphene') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE STAUROLITE: Both players heal 1 HP else if (itemId === 'cigaretteStaurolite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE SUNSTONE: Both players heal 2 HP else if (itemId === 'cigaretteSunstone') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE TEKTITE: Both players heal 1 HP else if (itemId === 'cigaretteTektite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE THULITE: Both players heal 2 HP else if (itemId === 'cigaretteThulite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE UVAROVITE: Both players heal 1 HP else if (itemId === 'cigaretteUvarovite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE VESUVIANITE: Both players heal 2 HP else if (itemId === 'cigaretteVesuvianite') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE WULFENITE: Both players heal 1 HP else if (itemId === 'cigaretteWulfenite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ZIRCON: Both players heal 2 HP else if (itemId === 'cigaretteZircon') { if (playerHealth < maxHealth) { playerHealth += 2; if (playerHealth > maxHealth) playerHealth = maxHealth; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth += 2; if (enemyHealth > maxHealth) enemyHealth = maxHealth; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // CIGARETTE ZOISITE: Both players heal 1 HP else if (itemId === 'cigaretteZoisite') { if (playerHealth < maxHealth) { playerHealth++; playerHealthBar.flashHeal(); playerHealthBar.setHealth(playerHealth); } if (enemyHealth < maxHealth) { enemyHealth++; enemyHealthBar.flashHeal(); enemyHealthBar.setHealth(enemyHealth); } removeItem(); } // FLAG: Steal a random item from the opponent else if (itemId === 'flag') { // Determine which arrays to use var targetItemsArr = isEnemy ? playerItems : enemyItems; var myItemsArr = isEnemy ? enemyItems : playerItems; // Only steal if opponent has at least one item if (targetItemsArr.length > 0) { // Pick a random item from opponent var stealIdx = Math.floor(Math.random() * targetItemsArr.length); var stolenItem = targetItemsArr[stealIdx]; // Remove from opponent targetItemsArr.splice(stealIdx, 1); // Add to self if not already owned and not exceeding 8 items if (myItemsArr.length < 8 && myItemsArr.indexOf(stolenItem) === -1) { myItemsArr.push(stolenItem); } // Optional: Visual feedback LK.effects.flashScreen(0x00bfff, 600); } removeItem(); } // Add more items here as needed updateItems(); updateUI(); // Sıra değişimi: Artık item kullanınca sıra değişmiyor, sadece ateş edince değişecek } function checkGameOver() { // Eşyalar sadece canı giderse (azalırsa) yenilensin, ateş edilince değil // Bir önceki can değerlerini takip et if (typeof checkGameOver.lastPlayerHealth === "undefined") { checkGameOver.lastPlayerHealth = maxHealth; } if (typeof checkGameOver.lastEnemyHealth === "undefined") { checkGameOver.lastEnemyHealth = maxHealth; } var playerLostHealth = false; var enemyLostHealth = false; // Sadece canı azaldıysa (yani bir önceki değerden küçükse) eşyaları yenile if (playerHealth < checkGameOver.lastPlayerHealth) { playerLostHealth = true; } if (enemyHealth < checkGameOver.lastEnemyHealth) { enemyLostHealth = true; } // Eğer birinin canı gitti ise (azaldıysa), eşyaları yenile if (playerLostHealth || enemyLostHealth) { var _uniqueItems = getUniqueInitialItemsPair(); playerItems = _uniqueItems[0]; enemyItems = _uniqueItems[1]; updateItems(); updateUI(); } // Son can değerlerini güncelle checkGameOver.lastPlayerHealth = playerHealth; checkGameOver.lastEnemyHealth = enemyHealth; 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() { // Defensive: If enemy is about to die, use painkillers if available for (var i = 0; i < enemyItems.length; i++) { var item = enemyItems[i]; if (!item) continue; if (item === 'painkillers' && enemyHealth === 1) { useItem(item, true); LK.setTimeout(fireRevolver, 1200); return; } } // Heal if not full health and healing item available for (var i = 0; i < enemyItems.length; i++) { var item = enemyItems[i]; if (!item) continue; if (item === 'cigarette' && enemyHealth < maxHealth || item === 'whiskey' && enemyHealth < maxHealth - 1) { useItem(item, true); LK.setTimeout(fireRevolver, 1200); return; } } // If next chamber is live, use defensive items if available var nextType = revolver.getCurrentType(); if (nextType === 'live') { for (var i = 0; i < enemyItems.length; i++) { var item = enemyItems[i]; if (!item) continue; if (item === 'adrenaline' || item === 'mirror' || item === 'deflector' || item === 'painkillers') { useItem(item, true); LK.setTimeout(fireRevolver, 1200); return; } // Use filter if available (no damage) if (item === 'cigaretteFilter' || item === 'cigaretteWarning' || item === 'cigaretteUltraLight' || item === 'cigaretteNicotine') { useItem(item, true); LK.setTimeout(fireRevolver, 1200); return; } } } // If next chamber is blank, use offensive/utility items if available if (nextType === 'blank') { for (var i = 0; i < enemyItems.length; i++) { var item = enemyItems[i]; if (!item) continue; if (item === 'buckshot' || item === 'blankBullets' || item === 'shellPuller') { useItem(item, true); LK.setTimeout(fireRevolver, 1200); return; } // Use scope to guarantee blank for player if (item === 'scope') { useItem(item, true); LK.setTimeout(fireRevolver, 1200); return; } } } // Use information items if available and not already active for (var i = 0; i < enemyItems.length; i++) { var item = enemyItems[i]; if (!item) continue; if (item === 'xray' && !game._xrayActiveForEnemy) { useItem('xray', true); LK.setTimeout(fireRevolver, 1200); return; } if (item === 'magnifier' && !game._magnifierActiveForEnemy) { useItem('magnifier', true); LK.setTimeout(fireRevolver, 1200); return; } } // Use any other item if it is the only one left if (enemyItems.length === 1 && enemyItems[0]) { useItem(enemyItems[0], true); LK.setTimeout(fireRevolver, 1200); return; } // If enemy has a "lighter" and it's their turn, use it to fire instantly for (var i = 0; i < enemyItems.length; i++) { var item = enemyItems[i]; if (item === 'lighter') { useItem(item, true); // Lighter will call fireRevolver itself return; } } // If no item is used, fire the revolver fireRevolver(); // Turn passing is now handled in fireRevolver, nothing needed here } // --- Event Handlers --- // Revolver'a tıklayınca ateş et (sadece oyuncu sırası ve action fazında) revolver.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) --- function checkAlignedChambers() { // Check for 3 adjacent chambers with the same type (not 'fired') // Returns array of indices if found, otherwise null var chambers = revolver.chambers; var n = chambers.length; for (var i = 0; i < n; i++) { var t0 = chambers[i].type; var t1 = chambers[(i + 1) % n].type; var t2 = chambers[(i + 2) % n].type; if (t0 === t1 && t1 === t2 && t0 !== 'fired') { return [i, (i + 1) % n, (i + 2) % n]; } } return null; } var _lastAlignedIndices = null; game.update = function () { // Check for 3 aligned chambers every frame var aligned = checkAlignedChambers(); // Only trigger when alignment state changes if (!_lastAlignedIndices && aligned || _lastAlignedIndices && aligned && (_lastAlignedIndices[0] !== aligned[0] || _lastAlignedIndices[1] !== aligned[1] || _lastAlignedIndices[2] !== aligned[2])) { // Highlight the aligned chambers for (var i = 0; i < revolver.chambers.length; i++) { if (aligned.indexOf(i) !== -1) { // Animate highlight (e.g. flash) revolver.chambers[i].flash(); } } } _lastAlignedIndices = aligned; };
/****
* 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
});
// Add a custom bullet icon for live bullet indicator (only visible during XRAY/MAGNIFIER)
var liveBulletIcon = self.attachAsset('liveBulletIcon', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.7,
scaleY: 0.7,
visible: false
});
liveBulletIcon.visible = false;
// 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;
// Hide liveBulletIcon if not live
if (type !== 'live') {
liveBulletIcon.visible = false;
}
};
// Helper to show/hide the live indicator (big white circle for live)
self._forceLiveIndicator = false;
self.setLiveIndicatorVisible = function (visible, force) {
// force parametresi true ise, XRAY/MAGNIFIER süresi boyunca göstergesi açık kalır
if (force) {
self._forceLiveIndicator = true;
}
// Sadece XRAY/MAGNIFIER kullanan oyuncuya gözüksün
// Yanlış mermileri dolu olarak işaretlememesi için sadece type==='live' ise göster
if (self.type === 'live') {
if (self._forceLiveIndicator && (game._xrayActiveForPlayer || game._magnifierActiveForPlayer)) {
liveBulletIcon.visible = true;
} else {
liveBulletIcon.visible = !!visible;
}
} else {
// Yanlış mermilerde asla gösterme
liveBulletIcon.visible = false;
}
// XRAY/MAGNIFIER aktifken sadece type==='live' olanlar gösterilsin, diğerleri asla gösterilmesin
if ((game._xrayActiveForPlayer || game._xrayActiveForEnemy || game._magnifierActiveForPlayer || game._magnifierActiveForEnemy) && self.type !== 'live') {
liveBulletIcon.visible = false;
}
// force parametresi false olarak çağrılırsa (XRAY/MAGNIFIER bittiğinde) tekrar eski davranışa döner
if (force === false) {
self._forceLiveIndicator = false;
}
};
// Helper to show/hide the live indicator
// (removed duplicate setLiveIndicatorVisible)
// 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;
if (typeof this.chambers[i].setLiveIndicatorVisible === "function") {
this.chambers[i].setLiveIndicatorVisible(true);
}
}
};
// Hide all chambers (normal state)
self.hideAll = function () {
for (var i = 0; i < 6; i++) {
this.chambers[i].alpha = 0.5;
if (typeof this.chambers[i].setLiveIndicatorVisible === "function") {
this.chambers[i].setLiveIndicatorVisible(false);
}
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x143d1a // koyu casino yeşili (dark casino green)
});
/****
* Game Code
****/
// --- Game State ---
/*
We will use simple shapes for the revolver, shells, health bars, and item icons.
Assets will be initialized automatically by LK based on usage.
*/
// Fire button kaldırıldı, ateş etme için revolver'a tıklanacak
// Custom bullet icon for live chamber indicator (replace with your own image id if available)
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
function _defineProperty(e, r, t) {
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}
function _toPropertyKey(t) {
var i = _toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : i + "";
}
function _toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
var playerHealth = 6;
var enemyHealth = 6;
var maxHealth = 6;
// Oyuncu ve düşman eşyaları en başta verilecek, kullanınca silinecek, biri ölürse yenilenecek
var initialItemPool = ['xray', 'cigarette', 'adrenaline', 'magnifier', 'buckshot', 'whiskey', 'painkillers', 'mirror', 'shellPuller', 'blankBullets', 'flag'];
function getInitialItems() {
// 1-8 arası rastgele sayıda eşya, tekrar yok
var pool = initialItemPool.slice();
var result = [];
var count = 1 + Math.floor(Math.random() * 8); // 1-8 arası
if (count > pool.length) count = pool.length;
for (var i = 0; i < count; i++) {
if (pool.length === 0) break;
var idx = Math.floor(Math.random() * pool.length);
result.push(pool[idx]);
pool.splice(idx, 1);
}
return result;
}
// Oyuncu ve düşman eşyaları aynı sayıda olacak şekilde ayarlanır, fakat eşyalar farklı olacak
function getUniqueInitialItemsPair() {
var pool = initialItemPool.slice();
var count = 1 + Math.floor(Math.random() * 8);
if (count > Math.floor(pool.length / 2)) count = Math.floor(pool.length / 2);
shuffle(pool);
var playerSet = [];
var enemySet = [];
for (var i = 0; i < count; i++) {
playerSet.push(pool.shift());
}
for (var i = 0; i < count; i++) {
enemySet.push(pool.shift());
}
// Both sets are guaranteed to be unique and same count
return [playerSet, enemySet];
}
var _uniqueItems = getUniqueInitialItemsPair();
var playerItems = _uniqueItems[0];
var enemyItems = _uniqueItems[1];
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', '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 = 2732 / 2;
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;
// Place higher above the revolver (kovan) in the vertical center
// Revolver is at y = 2732 / 2 = 1366, revolver body radius is 120, body asset is scaled 1.2x (asset height 100 * 1.2 = 120), so top of revolver is about 1366 - 120 - 60 = 1186
// Place the label even higher above that for more spacing
turnLabel.y = 2732 / 2 - 350;
game.addChild(turnLabel);
// Çanta (Bag) button ve label kaldırıldı
// Item buttons (max 8 but dynamic, now only used in bag popup)
var itemButtons = [];
for (var i = 0; i < 8; i++) {
var btn = new ItemButton();
btn.visible = false;
btn.x = -9999;
btn.y = -9999;
game.addChild(btn);
itemButtons.push(btn);
}
// Bag popup ve bagBtn.down kaldırıldı (çantasız mantık)
// Enemy item buttons (max 8 but dynamic)
var enemyItemButtons = [];
for (var i = 0; i < 8; i++) {
var ebtn = new ItemButton();
ebtn.visible = false;
// Disable interaction for enemy item buttons
ebtn.down = function () {};
game.addChild(ebtn);
enemyItemButtons.push(ebtn);
}
// Fire button kaldırıldı, ateş etme için revolver'a tıklanacak
// --- 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;
var _uniqueItems = getUniqueInitialItemsPair();
playerItems = _uniqueItems[0];
enemyItems = _uniqueItems[1];
playerMoney = 0;
enemyMoney = 0;
// For MVP: 1 live, 5 blanks
// Her zaman en az 1 dolu mermi olacak şekilde, kalanlar boş olacak
var liveCount = 1;
var blankCount = 6 - liveCount;
revolverChambers = [];
// 1 dolu mermiyi rastgele bir yere koy
var liveIndexes = [];
for (var i = 0; i < liveCount; i++) {
liveIndexes.push(i);
}
var chamberIndexes = [0, 1, 2, 3, 4, 5];
shuffle(chamberIndexes);
for (var i = 0; i < 6; i++) {
revolverChambers[i] = 'blank';
}
for (var i = 0; i < liveCount; i++) {
revolverChambers[chamberIndexes[i]] = 'live';
}
revolver.setChambers(revolverChambers);
revolver.spin();
playerHealthBar.setHealth(playerHealth);
enemyHealthBar.setHealth(enemyHealth);
updateItems();
currentTurn = 'player';
gamePhase = 'action';
updateUI();
}
function updateUI() {
// Eşyalar sadece oyun başında ve biri ölünce yenilenir, burada tekrar dağıtma!
// Update turn label
if (currentTurn === 'player') {
turnLabel.setText("YOUR TURN");
// Ateş etme tuşu yok, revolver'a tıklanacak
for (var i = 0; i < itemButtons.length; i++) {
itemButtons[i].visible = false;
itemButtons[i].x = -9999;
itemButtons[i].y = -9999;
}
// bagBtn ve bagLabel yok, çantasız mantık
} else {
turnLabel.setText("ENEMY'S TURN");
for (var i = 0; i < itemButtons.length; i++) {
itemButtons[i].visible = false;
itemButtons[i].x = -9999;
itemButtons[i].y = -9999;
}
// bagBtn ve bagLabel yok, çantasız mantık
}
// Health bars
playerHealthBar.setHealth(playerHealth);
enemyHealthBar.setHealth(enemyHealth);
updateItems();
}
// Item descriptions for all items that can appear
var itemDescriptions = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
flag: "Rakibin rastgele bir eşyasını çalarsın.",
xray: "Tüm mermileri 2 saniye boyunca gösterir.",
cigarette: "1 can yeniler.",
adrenaline: "Bir sonraki atıştan hasar almazsın.",
magnifier: "Bir sonraki merminin tipini 2 saniye boyunca gösterir.",
buckshot: "Bir sonraki canlı mermi 2 kat hasar verir.",
whiskey: "2 can yeniler.",
painkillers: "Bir sonraki ölümcül atışta 1 canla hayatta kalırsın.",
mirror: "Bir sonraki canlı mermiyi rakibe yansıtırsın.",
shellPuller: "Rastgele bir canlı mermiyi çıkarır.",
blankBullets: "Rastgele bir boş mermiyi canlıya çevirir.",
scope: "Bir sonraki mermiyi garanti boş yapar.",
handcuffs: "Rakip bir sonraki turunu atlar.",
deflector: "Bir sonraki atış kimseye zarar vermez.",
lighter: "Hemen ateş etmeni sağlar.",
coin: "Yazı tura: 1 can kazan veya kaybet.",
cigarettePack: "Canını tamamen doldurur.",
cigaretteCase: "Sonraki 2 mermiyi boş yapar.",
cigaretteLighter: "Bir sonraki mermiyi garanti canlı yapar.",
cigaretteFilter: "Bir sonraki atıştan hasar almazsın.",
cigarettePaper: "Rastgele bir canlı mermiyi boşa çevirir.",
cigaretteTobacco: "Bir sonraki atış rakibe 2 kat hasar verir.",
cigaretteButt: "1 can ver, 2 para al.",
cigaretteAsh: "Bir sonraki mermiyi boş yapar.",
cigaretteBurn: "Bir sonraki atış fazladan 1 hasar verir.",
cigaretteSmoke: "Her iki oyuncu 1 can kaybeder.",
cigaretteEmber: "Bir sonraki atış atlanır.",
cigaretteTip: "1 can ve 1 para kazan.",
cigaretteRoll: "Tüm mermileri karıştırır.",
cigaretteBox: "Rastgele bir boş mermiyi canlıya çevirir.",
cigaretteCarton: "Her iki oyuncunun canı tamamen dolar.",
cigaretteBrand: "Rakibin bir sonraki mermisini boş yapar.",
cigaretteLogo: "Kendi bir sonraki mermini boş yapar.",
cigaretteSticker: "Bir sonraki mermiyi canlı yapar.",
cigaretteFoil: "Her iki oyuncu bir sonraki turu atlar.",
cigaretteCellophane: "Her iki oyuncu 2 can kaybeder.",
cigaretteTaxStamp: "Her iki oyuncu 2 para kazanır.",
cigaretteWarning: "Bir sonraki atıştan kimse hasar almaz.",
cigaretteBarcode: "Tüm mermileri rastgele boş/canlı yapar.",
cigaretteSerial: "Bir sonraki mermiyi boş yapar.",
cigaretteBatch: "Bir sonraki mermiyi canlı yapar.",
cigaretteDate: "Her iki oyuncu bir sonraki turu atlar.",
cigaretteFactory: "Her iki oyuncunun canı tamamen dolar.",
cigaretteCountry: "Her iki oyuncu 1 can kaybeder.",
cigaretteImport: "Oyuncu 2 para kazanır.",
cigaretteExport: "Rakip 2 para kazanır.",
cigaretteDuty: "Her iki oyuncu 1 para kaybeder.",
cigaretteTar: "Bir sonraki atış 2 kat hasar verir.",
cigaretteNicotine: "Bir sonraki atıştan kimse hasar almaz.",
cigaretteCarbonMonoxide: "Her iki oyuncu 1 can kaybeder.",
cigaretteAdditive: "Bir sonraki mermiyi boş yapar.",
cigaretteFlavor: "Bir sonraki mermiyi canlı yapar.",
cigaretteMenthol: "Her iki oyuncu 1 can yeniler.",
cigaretteClove: "Her iki oyuncu bir sonraki turu atlar.",
cigaretteHerbal: "Her iki oyuncu 2 can yeniler.",
cigaretteOrganic: "Her iki oyuncu 1 can yeniler.",
cigaretteLight: "Bir sonraki atış yarım hasar verir.",
cigaretteUltraLight: "Bir sonraki atıştan kimse hasar almaz.",
cigaretteSlim: "Bir sonraki mermiyi boş yapar.",
cigaretteSuperSlim: "Bir sonraki mermiyi boş yapar.",
cigaretteMini: "Bir sonraki mermiyi boş yapar.",
cigaretteKingSize: "Bir sonraki mermiyi canlı yapar.",
cigarette100s: "Bir sonraki mermiyi canlı yapar.",
cigarette120s: "Bir sonraki mermiyi canlı yapar.",
cigaretteLong: "Bir sonraki mermiyi canlı yapar.",
cigaretteShort: "Bir sonraki mermiyi boş yapar.",
cigaretteRegular: "Hiçbir etkisi yok.",
cigaretteSpecial: "Bir sonraki mermiyi canlı yapar.",
cigaretteLimited: "Bir sonraki mermiyi boş yapar.",
cigaretteEdition: "Tüm mermileri karıştırır.",
cigaretteVintage: "Her iki oyuncu 1 can yeniler.",
cigaretteClassic: "Her iki oyuncu 1 can yeniler.",
cigarettePremium: "Her iki oyuncu 2 can yeniler.",
cigaretteGold: "Her iki oyuncu 5 para kazanır.",
cigaretteSilver: "Her iki oyuncu 3 para kazanır.",
cigarettePlatinum: "Her iki oyuncu 10 para kazanır.",
cigaretteDiamond: "Her iki oyuncu tam can ve 10 para kazanır.",
cigaretteRuby: "Her iki oyuncu 2 can kaybeder.",
cigaretteSapphire: "Her iki oyuncu 2 can yeniler.",
cigaretteEmerald: "Her iki oyuncu 3 can yeniler.",
cigarettePearl: "Her iki oyuncu 1 can yeniler.",
cigaretteCrystal: "Her iki oyuncu 2 can yeniler.",
cigaretteOpal: "Her iki oyuncu 1 can yeniler.",
cigaretteJade: "Her iki oyuncu 2 can yeniler.",
cigaretteAmber: "Her iki oyuncu 1 can yeniler.",
cigaretteTopaz: "Her iki oyuncu 2 can yeniler.",
cigaretteGarnet: "Her iki oyuncu 1 can kaybeder.",
cigaretteTurquoise: "Her iki oyuncu 1 can yeniler.",
cigaretteOnyx: "Her iki oyuncu 2 can kaybeder.",
cigaretteObsidian: "Her iki oyuncu 1 can kaybeder.",
cigaretteQuartz: "Her iki oyuncu 1 can yeniler.",
cigaretteAgate: "Her iki oyuncu 2 can yeniler.",
cigaretteJasper: "Her iki oyuncu 1 can yeniler.",
cigaretteLapis: "Her iki oyuncu 2 can yeniler.",
cigaretteMalachite: "Her iki oyuncu 1 can yeniler.",
cigaretteMoonstone: "Her iki oyuncu 2 can yeniler.",
cigaretteSunstone: "Her iki oyuncu 1 can yeniler.",
cigaretteTigerEye: "Her iki oyuncu 2 can yeniler.",
cigaretteZircon: "Her iki oyuncu 1 can yeniler.",
cigaretteSpinel: "Her iki oyuncu 2 can yeniler.",
cigaretteTourmaline: "Her iki oyuncu 1 can yeniler.",
cigarettePeridot: "Her iki oyuncu 2 can yeniler.",
cigaretteAlexandrite: "Her iki oyuncu 1 can yeniler.",
cigaretteTanzanite: "Her iki oyuncu 2 can yeniler.",
cigaretteMorganite: "Her iki oyuncu 1 can yeniler.",
cigaretteAquamarine: "Her iki oyuncu 2 can yeniler.",
cigaretteCitrine: "Her iki oyuncu 1 can yeniler.",
cigaretteHeliodor: "Her iki oyuncu 2 can yeniler.",
cigaretteKunzite: "Her iki oyuncu 1 can yeniler.",
cigaretteLepidolite: "Her iki oyuncu 2 can yeniler.",
cigaretteRhodonite: "Her iki oyuncu 1 can yeniler.",
cigaretteSodalite: "Her iki oyuncu 2 can yeniler.",
cigaretteSugilite: "Her iki oyuncu 1 can yeniler.",
cigaretteTopazolite: "Her iki oyuncu 2 can yeniler.",
cigaretteTsavorite: "Her iki oyuncu 1 can yeniler.",
cigaretteVariscite: "Her iki oyuncu 2 can yeniler.",
cigaretteZoisite: "Her iki oyuncu 1 can yeniler.",
cigaretteAndalusite: "Her iki oyuncu 2 can yeniler.",
cigaretteApatite: "Her iki oyuncu 1 can yeniler.",
cigaretteAxinite: "Her iki oyuncu 2 can yeniler.",
cigaretteBenitoite: "Her iki oyuncu 1 can yeniler.",
cigaretteBeryl: "Her iki oyuncu 2 can yeniler.",
cigaretteCassiterite: "Her iki oyuncu 1 can yeniler.",
cigaretteChalcedony: "Her iki oyuncu 2 can yeniler.",
cigaretteChrysoberyl: "Her iki oyuncu 1 can yeniler.",
cigaretteDanburite: "Her iki oyuncu 2 can yeniler.",
cigaretteDiopside: "Her iki oyuncu 1 can yeniler.",
cigaretteDumortierite: "Her iki oyuncu 2 can yeniler.",
cigaretteEnstatite: "Her iki oyuncu 1 can yeniler.",
cigaretteEpidote: "Her iki oyuncu 2 can yeniler.",
cigaretteFluorite: "Her iki oyuncu 1 can yeniler.",
cigaretteGoshenite: "Her iki oyuncu 2 can yeniler.",
cigaretteHackmanite: "Her iki oyuncu 1 can yeniler.",
cigaretteHiddenite: "Her iki oyuncu 2 can yeniler.",
cigaretteIolite: "Her iki oyuncu 1 can yeniler.",
cigaretteKyanite: "Her iki oyuncu 2 can yeniler.",
cigaretteLabradorite: "Her iki oyuncu 1 can yeniler.",
cigaretteLarimar: "Her iki oyuncu 2 can yeniler.",
cigaretteNephrite: "Her iki oyuncu 1 can yeniler.",
cigarettePetalite: "Her iki oyuncu 2 can yeniler.",
cigarettePrehnite: "Her iki oyuncu 1 can yeniler.",
cigaretteScapolite: "Her iki oyuncu 2 can yeniler.",
cigaretteSerpentine: "Her iki oyuncu 1 can yeniler.",
cigaretteSmithsonite: "Her iki oyuncu 2 can yeniler.",
cigaretteSpessartite: "Her iki oyuncu 1 can yeniler.",
cigaretteSphene: "Her iki oyuncu 2 can yeniler.",
cigaretteStaurolite: "Her iki oyuncu 1 can yeniler."
}, "cigaretteSunstone", "Her iki oyuncu 2 can yeniler."), "cigaretteTektite", "Her iki oyuncu 1 can yeniler."), "cigaretteThulite", "Her iki oyuncu 2 can yeniler."), "cigaretteUvarovite", "Her iki oyuncu 1 can yeniler."), "cigaretteVesuvianite", "Her iki oyuncu 2 can yeniler."), "cigaretteWulfenite", "Her iki oyuncu 1 can yeniler."), "cigaretteZircon", "Her iki oyuncu 2 can yeniler."), "cigaretteZoisite", "Her iki oyuncu 1 can yeniler.");
function updateItems() {
// Eşyalar başta ve ölümde veriliyor, burada tekrar verme!
var playerItemCount = playerItems.length;
for (var i = 0; i < itemButtons.length; i++) {
if (playerItems[i]) {
var itemId = playerItems[i];
var labelText = itemId.toUpperCase();
var desc = itemDescriptions[itemId] || "";
itemButtons[i].setItem(itemId, labelText);
itemButtons[i].visible = true;
// --- Buckshot Roulette 2. seviye gibi, tüm sayılar için aynı düzen ---
// 1-8 arası eşya için, simetrik ve köşelere yakın, üst ve alt sıralar, ortada birleşmeden
var px = 2048 / 2;
var yTop = 2150,
yBot = 2450;
if (playerItemCount === 8) {
// 4 üstte, 4 altta, köşelere yakın
var xArr = [px - 700, px - 400, px + 400, px + 700];
if (i < 4) {
itemButtons[i].x = xArr[i];
itemButtons[i].y = yTop;
} else {
itemButtons[i].x = xArr[i - 4];
itemButtons[i].y = yBot;
}
} else if (playerItemCount === 7) {
// 4 üstte, 3 altta
var xArrTop = [px - 600, px - 200, px + 200, px + 600];
var xArrBot = [px - 400, px, px + 400];
if (i < 4) {
itemButtons[i].x = xArrTop[i];
itemButtons[i].y = yTop;
} else {
itemButtons[i].x = xArrBot[i - 4];
itemButtons[i].y = yBot;
}
} else if (playerItemCount === 6) {
// 3 üstte, 3 altta
var xArr = [px - 400, px, px + 400];
if (i < 3) {
itemButtons[i].x = xArr[i];
itemButtons[i].y = yTop;
} else {
itemButtons[i].x = xArr[i - 3];
itemButtons[i].y = yBot;
}
} else if (playerItemCount === 5) {
// 3 üstte, 2 altta, üsttekiler daha açık
var xArrTop = [px - 600, px, px + 600];
var xArrBot = [px - 400, px + 400];
if (i < 3) {
itemButtons[i].x = xArrTop[i];
itemButtons[i].y = yTop;
} else {
itemButtons[i].x = xArrBot[i - 3];
itemButtons[i].y = yBot;
}
} else if (playerItemCount === 4) {
// 2 üstte, 2 altta, köşelere yakın
var xArr = [px - 400, px + 400];
if (i < 2) {
itemButtons[i].x = xArr[i];
itemButtons[i].y = yTop;
} else {
itemButtons[i].x = xArr[i - 2];
itemButtons[i].y = yBot;
}
} else if (playerItemCount === 3) {
// 3 buton ortalanmış ve yayılmış
var xArr = [px - 400, px, px + 400];
itemButtons[i].x = xArr[i];
itemButtons[i].y = (yTop + yBot) / 2;
} else if (playerItemCount === 2) {
var xArr = [px - 300, px + 300];
itemButtons[i].x = xArr[i];
itemButtons[i].y = (yTop + yBot) / 2;
} else if (playerItemCount === 1) {
itemButtons[i].x = px;
itemButtons[i].y = (yTop + yBot) / 2;
}
// Butona tıklayınca popup aç
itemButtons[i].onUse = function (itemId, desc, btnIdx) {
return function () {
// Önce eski popup varsa kaldır
if (game._itemPopup) {
game.removeChild(game._itemPopup);
game._itemPopup = null;
}
// Popup container
var popup = new Container();
// Açıklama
var txt = new Text2(desc, {
size: 60,
fill: "#888"
});
txt.anchor.set(0.5, 0.5);
txt.x = 2048 / 2;
txt.y = 1450;
popup.addChild(txt);
// Soru
var q = new Text2("Kullanmak istiyor musun?", {
size: 50,
fill: 0xFFE066
});
q.anchor.set(0.5, 0.5);
q.x = 2048 / 2;
q.y = 1600;
popup.addChild(q);
// Evet butonu
var yesBtn = LK.getAsset('itemIcon', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2,
x: 2048 / 2 - 180,
y: 1700
});
popup.addChild(yesBtn);
var yesTxt = new Text2("Kullan", {
size: 44,
fill: 0x83DE44
});
yesTxt.anchor.set(0.5, 0.5);
yesTxt.x = yesBtn.x;
yesTxt.y = yesBtn.y + 90;
popup.addChild(yesTxt);
// Hayır butonu
var noBtn = LK.getAsset('itemIcon', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2,
x: 2048 / 2 + 180,
y: 1700
});
popup.addChild(noBtn);
var noTxt = new Text2("Vazgeç", {
size: 44,
fill: 0xD83318
});
noTxt.anchor.set(0.5, 0.5);
noTxt.x = noBtn.x;
noTxt.y = noBtn.y + 90;
popup.addChild(noTxt);
// Evet: item kullan
yesBtn.down = function () {
useItem(itemId);
if (game._itemPopup) {
game.removeChild(game._itemPopup);
game._itemPopup = null;
}
};
// Hayır: popup kapat
noBtn.down = function () {
if (game._itemPopup) {
game.removeChild(game._itemPopup);
game._itemPopup = null;
}
};
// Popup'u ekle
game.addChild(popup);
game._itemPopup = popup;
};
}(itemId, desc, i);
// Buton altı açıklama kaldırıldı
if (itemButtons[i].descText) {
itemButtons[i].descText.visible = false;
}
} else {
itemButtons[i].visible = false;
if (itemButtons[i].descText) {
itemButtons[i].descText.visible = false;
}
}
}
// Enemy item butonlarını konumlandır
var enemyItemCount = enemyItems.length;
for (var i = 0; i < enemyItemButtons.length; i++) {
if (enemyItems[i]) {
var itemId = enemyItems[i];
var labelText = itemId.toUpperCase();
enemyItemButtons[i].setItem(itemId, labelText);
enemyItemButtons[i].visible = true;
// --- Buckshot Roulette 2. seviye gibi, tüm sayılar için aynı düzen ---
// 1-8 arası eşya için, simetrik ve köşelere yakın, üst ve alt sıralar, ortada birleşmeden
var px = 2048 / 2;
var yTop = 500,
yBot = 900;
if (enemyItemCount === 8) {
// 4 üstte, 4 altta, köşelere yakın
var xArr = [px - 700, px - 400, px + 400, px + 700];
if (i < 4) {
enemyItemButtons[i].x = xArr[i];
enemyItemButtons[i].y = yTop;
} else {
enemyItemButtons[i].x = xArr[i - 4];
enemyItemButtons[i].y = yBot;
}
} else if (enemyItemCount === 7) {
// 4 üstte, 3 altta
var xArrTop = [px - 600, px - 200, px + 200, px + 600];
var xArrBot = [px - 400, px, px + 400];
if (i < 4) {
enemyItemButtons[i].x = xArrTop[i];
enemyItemButtons[i].y = yTop;
} else {
enemyItemButtons[i].x = xArrBot[i - 4];
enemyItemButtons[i].y = yBot;
}
} else if (enemyItemCount === 6) {
// 3 üstte, 3 altta
var xArr = [px - 400, px, px + 400];
if (i < 3) {
enemyItemButtons[i].x = xArr[i];
enemyItemButtons[i].y = yTop;
} else {
enemyItemButtons[i].x = xArr[i - 3];
enemyItemButtons[i].y = yBot;
}
} else if (enemyItemCount === 5) {
// 3 üstte, 2 altta, üsttekiler daha açık
var xArrTop = [px - 600, px, px + 600];
var xArrBot = [px - 400, px + 400];
if (i < 3) {
enemyItemButtons[i].x = xArrTop[i];
enemyItemButtons[i].y = yTop;
} else {
enemyItemButtons[i].x = xArrBot[i - 3];
enemyItemButtons[i].y = yBot;
}
} else if (enemyItemCount === 4) {
// 2 üstte, 2 altta, köşelere yakın
var xArr = [px - 400, px + 400];
if (i < 2) {
enemyItemButtons[i].x = xArr[i];
enemyItemButtons[i].y = yTop;
} else {
enemyItemButtons[i].x = xArr[i - 2];
enemyItemButtons[i].y = yBot;
}
} else if (enemyItemCount === 3) {
// 3 buton ortalanmış ve yayılmış
var xArr = [px - 400, px, px + 400];
enemyItemButtons[i].x = xArr[i];
enemyItemButtons[i].y = (yTop + yBot) / 2;
} else if (enemyItemCount === 2) {
var xArr = [px - 300, px + 300];
enemyItemButtons[i].x = xArr[i];
enemyItemButtons[i].y = (yTop + yBot) / 2;
} else if (enemyItemCount === 1) {
enemyItemButtons[i].x = px;
enemyItemButtons[i].y = (yTop + yBot) / 2;
}
// Açıklama gösterme
if (enemyItemButtons[i].descText) {
enemyItemButtons[i].descText.visible = false;
}
} else {
enemyItemButtons[i].visible = false;
if (enemyItemButtons[i].descText) {
enemyItemButtons[i].descText.visible = false;
}
}
}
}
// --- Game Logic ---
function fireRevolver() {
// XRAY veya MAGNIFIER aktifse, ateş edildiğinde efektleri kapat
if (game._xrayActiveForPlayer) {
revolver.hideAll();
for (var i = 0; i < revolver.chambers.length; i++) {
if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") {
revolver.chambers[i].setLiveIndicatorVisible(false, false);
}
// XRAY bittiğinde saydamlığı da sıfırla
revolver.chambers[i].alpha = 0.5;
}
game._xrayActive = false;
game._xrayActiveForPlayer = false;
}
if (game._xrayActiveForEnemy) {
// Enemy XRAY efekti sadece enemy için görünür, oyuncudan tamamen gizli
revolver.hideAll();
for (var i = 0; i < revolver.chambers.length; i++) {
if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") {
revolver.chambers[i].setLiveIndicatorVisible(false, false);
}
// XRAY bittiğinde saydamlığı da sıfırla
revolver.chambers[i].alpha = 0.5;
}
game._xrayActive = false;
game._xrayActiveForEnemy = false;
}
if (game._magnifierActiveForPlayer) {
var idx = game._magnifierChamberIdx;
if (typeof idx !== "undefined" && revolver.chambers[idx]) {
revolver.chambers[idx].alpha = 0.5;
if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") {
revolver.chambers[idx].setLiveIndicatorVisible(false, false);
}
}
// MAGNIFIER bittiğinde saydamlığı da sıfırla
for (var i = 0; i < revolver.chambers.length; i++) {
if (i !== idx) revolver.chambers[i].alpha = 0.5;
}
game._magnifierActive = false;
game._magnifierActiveForPlayer = false;
game._magnifierChamberIdx = undefined;
}
if (game._magnifierActiveForEnemy) {
var idx = game._magnifierChamberIdx;
if (typeof idx !== "undefined" && revolver.chambers[idx]) {
revolver.chambers[idx].alpha = 0.5;
if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") {
revolver.chambers[idx].setLiveIndicatorVisible(false, false);
}
}
// MAGNIFIER bittiğinde saydamlığı da sıfırla
for (var i = 0; i < revolver.chambers.length; i++) {
if (i !== idx) revolver.chambers[i].alpha = 0.5;
}
game._magnifierActive = false;
game._magnifierActiveForEnemy = false;
game._magnifierChamberIdx = undefined;
}
// 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;
// Enemy turn is skipped, pass turn to player
currentTurn = 'player';
updateUI();
// Ensure turnLabel is updated immediately
turnLabel.setText("YOUR TURN");
// Make sure enemyTurn does not get called again
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');
// --- Move bullet position: always shuffle chamber types after firing, same for both player and enemy turns ---
var chamberTypes = [];
for (var i = 0; i < revolver.chambers.length; i++) {
chamberTypes.push(revolver.chambers[i].type);
}
shuffle(chamberTypes);
revolver.setChambers(chamberTypes);
revolver.advance();
checkGameOver();
// Check if all live bullets are fired
var liveBulletsLeft = revolver.chambers.some(function (chamber) {
return chamber.type === 'live';
});
if (!liveBulletsLeft && gamePhase !== 'gameover') {
// All live bullets are fired, reload chambers
var liveCount = 1; // For MVP, reload with 1 live and 5 blanks
var blankCount = 6 - liveCount;
revolverChambers = [];
var liveIndexes = [];
for (var i = 0; i < liveCount; i++) {
liveIndexes.push(i);
}
var chamberIndexes = [0, 1, 2, 3, 4, 5];
shuffle(chamberIndexes);
for (var i = 0; i < 6; i++) {
revolverChambers[i] = 'blank';
}
for (var i = 0; i < liveCount; i++) {
revolverChambers[chamberIndexes[i]] = 'live';
}
revolver.setChambers(revolverChambers);
revolver.spin();
}
if (gamePhase !== 'gameover') {
currentTurn = 'enemy';
updateUI();
LK.setTimeout(enemyTurn, 1200);
}
} else {
// Enemy's turn
// For MVP: only live/blank
revolver.chambers[revolver.currentChamber].setType('fired');
// --- Move bullet position: always shuffle chamber types after firing, same for both player and enemy turns ---
var chamberTypes = [];
for (var i = 0; i < revolver.chambers.length; i++) {
chamberTypes.push(revolver.chambers[i].type);
}
shuffle(chamberTypes);
revolver.setChambers(chamberTypes);
revolver.advance();
checkGameOver();
// Check if all live bullets are fired
var liveBulletsLeft = revolver.chambers.some(function (chamber) {
return chamber.type === 'live';
});
if (!liveBulletsLeft && gamePhase !== 'gameover') {
// All live bullets are fired, reload chambers
var liveCount = 1; // For MVP, reload with 1 live and 5 blanks
var blankCount = 6 - liveCount;
revolverChambers = [];
var liveIndexes = [];
for (var i = 0; i < liveCount; i++) {
liveIndexes.push(i);
}
var chamberIndexes = [0, 1, 2, 3, 4, 5];
shuffle(chamberIndexes);
for (var i = 0; i < 6; i++) {
revolverChambers[i] = 'blank';
}
for (var i = 0; i < liveCount; i++) {
revolverChambers[chamberIndexes[i]] = 'live';
}
revolver.setChambers(revolverChambers);
revolver.spin();
}
if (gamePhase !== 'gameover') {
currentTurn = 'player';
updateUI();
// Ensure turnLabel is updated immediately
turnLabel.setText("YOUR TURN");
}
}
}
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 < itemsArr.length; i++) {
if (itemsArr[i] === itemId) {
itemsArr.splice(i, 1);
break;
}
}
};
// XRAY: Reveal all chambers until next fire
if (itemId === 'xray') {
// XRAY aktifken başka bir XRAY/MAGNIFIER başlatılırsa eski timeout'u temizle
if (game._xrayTimeout) {
LK.clearTimeout(game._xrayTimeout);
game._xrayTimeout = null;
}
// XRAY aktif flag
if (!isEnemy) {
game._xrayActive = true;
game._xrayActiveForPlayer = true;
game._xrayActiveForEnemy = false;
// Sadece oyuncuya göster
revolver.revealAll();
for (var i = 0; i < revolver.chambers.length; i++) {
if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") {
revolver.chambers[i].setLiveIndicatorVisible(true, true);
}
}
} else {
game._xrayActive = true;
game._xrayActiveForEnemy = true;
game._xrayActiveForPlayer = false;
// Sadece enemy'ye göster (oyuncudan gizli, ama kodda aynı şekilde açılıyor)
revolver.revealAll();
for (var i = 0; i < revolver.chambers.length; i++) {
if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") {
revolver.chambers[i].setLiveIndicatorVisible(true, true);
}
}
}
// Ateş edilene kadar XRAY açık kalacak, timeout yok
removeItem();
}
// CIGARETTE: Heal 1 HP (if not max)
else if (itemId === 'cigarette') {
if (!isEnemy && playerHealth < maxHealth) {
playerHealth++;
healthBar.flashHeal();
healthBar.setHealth(playerHealth);
} else if (isEnemy && enemyHealth < maxHealth) {
enemyHealth++;
healthBar.flashHeal();
healthBar.setHealth(enemyHealth);
}
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 until next fire
else if (itemId === 'magnifier') {
// MAGNIFIER aktifken başka bir XRAY/MAGNIFIER başlatılırsa eski timeout'u temizle
if (game._magnifierTimeout) {
LK.clearTimeout(game._magnifierTimeout);
game._magnifierTimeout = null;
}
var idx = revolver.currentChamber;
game._magnifierActive = true;
game._magnifierChamberIdx = idx;
revolver.chambers[idx].alpha = 1;
if (!isEnemy) {
game._magnifierActiveForPlayer = true;
game._magnifierActiveForEnemy = false;
// Sadece oyuncuya göster
if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") {
revolver.chambers[idx].setLiveIndicatorVisible(true, true);
}
} else {
game._magnifierActiveForEnemy = true;
game._magnifierActiveForPlayer = false;
// Sadece enemy'ye göster (oyuncudan gizli, ama kodda aynı şekilde açılıyor)
if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") {
revolver.chambers[idx].setLiveIndicatorVisible(true, true);
}
}
// Ateş edilene kadar MAGNIFIER açık kalacak, timeout yok
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 (!isEnemy && playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
healthBar.flashHeal();
healthBar.setHealth(playerHealth);
} else if (isEnemy && enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
healthBar.flashHeal();
healthBar.setHealth(enemyHealth);
}
removeItem();
}
// PAINKILLERS: Survive next shot at 1 HP
else if (itemId === 'painkillers') {
if (!isEnemy) {
game.painkillersActive = true;
} else {
game.enemyPainkillersActive = true;
}
removeItem();
}
// MIRROR: O anki mermiyi (dolu ya da boş) karşıya ateş et
else if (itemId === 'mirror') {
// Sıra oyuncudaysa, oyuncunun ateşini hemen karşıya uygula
if (!isEnemy) {
// Mevcut mermi tipini al
var type = revolver.getCurrentType();
// Animasyon ve efektler
revolver.flashCurrent();
// XRAY/MAGNIFIER aktifse efektleri kapat (her iki oyuncu için de)
if (game._xrayActiveForPlayer || game._xrayActiveForEnemy) {
revolver.hideAll();
for (var i = 0; i < revolver.chambers.length; i++) {
if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") {
revolver.chambers[i].setLiveIndicatorVisible(false, false);
}
}
game._xrayActive = false;
game._xrayActiveForPlayer = false;
game._xrayActiveForEnemy = false;
}
if (game._magnifierActiveForPlayer || game._magnifierActiveForEnemy) {
var idx = game._magnifierChamberIdx;
if (typeof idx !== "undefined" && revolver.chambers[idx]) {
revolver.chambers[idx].alpha = 0.5;
if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") {
revolver.chambers[idx].setLiveIndicatorVisible(false, false);
}
}
game._magnifierActive = false;
game._magnifierActiveForPlayer = false;
game._magnifierActiveForEnemy = false;
game._magnifierChamberIdx = undefined;
}
// Karşıya ateş et (enemyHealth azalt)
if (type === 'live') {
enemyHealth--;
enemyHealthBar.flashDamage();
LK.effects.flashObject(enemyHealthBar, 0xff0000, 500);
} else {
// Boşsa efekt göster
LK.effects.flashScreen(0x888888, 300);
}
// Mermiyi fired yap
revolver.chambers[revolver.currentChamber].setType('fired');
// Mermileri karıştır ve ilerlet
var chamberTypes = [];
for (var i = 0; i < revolver.chambers.length; i++) {
chamberTypes.push(revolver.chambers[i].type);
}
shuffle(chamberTypes);
revolver.setChambers(chamberTypes);
revolver.advance();
checkGameOver();
// Sıra değişsin
if (gamePhase !== 'gameover') {
currentTurn = 'enemy';
updateUI();
LK.setTimeout(enemyTurn, 1200);
}
} else {
// Enemy kullanırsa, oyuncuya ateş et
var type = revolver.getCurrentType();
revolver.flashCurrent();
// XRAY/MAGNIFIER aktifse efektleri kapat (her iki oyuncu için de)
if (game._xrayActiveForPlayer || game._xrayActiveForEnemy) {
revolver.hideAll();
for (var i = 0; i < revolver.chambers.length; i++) {
if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") {
revolver.chambers[i].setLiveIndicatorVisible(false, false);
}
}
game._xrayActive = false;
game._xrayActiveForPlayer = false;
game._xrayActiveForEnemy = false;
}
if (game._magnifierActiveForPlayer || game._magnifierActiveForEnemy) {
var idx = game._magnifierChamberIdx;
if (typeof idx !== "undefined" && revolver.chambers[idx]) {
revolver.chambers[idx].alpha = 0.5;
if (typeof revolver.chambers[idx].setLiveIndicatorVisible === "function") {
revolver.chambers[idx].setLiveIndicatorVisible(false, false);
}
}
game._magnifierActive = false;
game._magnifierActiveForPlayer = false;
game._magnifierActiveForEnemy = false;
game._magnifierChamberIdx = undefined;
}
if (type === 'live') {
playerHealth--;
playerHealthBar.flashDamage();
LK.effects.flashObject(playerHealthBar, 0xff0000, 500);
} else {
LK.effects.flashScreen(0x888888, 300);
}
revolver.chambers[revolver.currentChamber].setType('fired');
var chamberTypes = [];
for (var i = 0; i < revolver.chambers.length; i++) {
chamberTypes.push(revolver.chambers[i].type);
}
shuffle(chamberTypes);
revolver.setChambers(chamberTypes);
revolver.advance();
checkGameOver();
if (gamePhase !== 'gameover') {
currentTurn = 'player';
updateUI();
}
}
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();
}
// SCOPE: Next shot is guaranteed to be a blank (for player or enemy)
else if (itemId === 'scope') {
// Find next chamber to fire
var idx = revolver.currentChamber;
if (revolver.chambers[idx].type === 'live') {
revolver.chambers[idx].setType('blank');
LK.effects.flashScreen(0x00ffcc, 500);
}
removeItem();
}
// HANDCUFFS: Opponent skips their next turn
else if (itemId === 'handcuffs') {
if (!isEnemy) {
game.skipEnemyTurn = true;
} else {
game.skipPlayerTurn = true;
}
removeItem();
}
// DEFLECTOR: Next shot is deflected (no one takes damage)
else if (itemId === 'deflector') {
if (!isEnemy) {
game.deflectorActive = true;
} else {
game.enemyDeflectorActive = true;
}
removeItem();
}
// LIGHTER: Instantly fire the next chamber (player only)
else if (itemId === 'lighter') {
if (!isEnemy && currentTurn === 'player' && gamePhase === 'action') {
fireRevolver();
}
removeItem();
}
// COIN: 50% chance to heal 1 HP or lose 1 HP
else if (itemId === 'coin') {
var flip = Math.random() < 0.5;
if (!isEnemy) {
if (flip && playerHealth < maxHealth) {
playerHealth++;
healthBar.flashHeal();
healthBar.setHealth(playerHealth);
} else if (!flip && playerHealth > 1) {
playerHealth--;
healthBar.flashDamage();
healthBar.setHealth(playerHealth);
}
} else {
if (flip && enemyHealth < maxHealth) {
enemyHealth++;
healthBar.flashHeal();
healthBar.setHealth(enemyHealth);
} else if (!flip && enemyHealth > 1) {
enemyHealth--;
healthBar.flashDamage();
healthBar.setHealth(enemyHealth);
}
}
removeItem();
}
// CIGARETTE PACK: Fully heal (set HP to max)
else if (itemId === 'cigarettePack') {
if (!isEnemy && playerHealth < maxHealth) {
playerHealth = maxHealth;
healthBar.flashHeal();
healthBar.setHealth(playerHealth);
} else if (isEnemy && enemyHealth < maxHealth) {
enemyHealth = maxHealth;
healthBar.flashHeal();
healthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE CASE: Next 2 shots are blanks
else if (itemId === 'cigaretteCase') {
var blanksSet = 0;
for (var i = 0; i < revolver.chambers.length && blanksSet < 2; i++) {
var idx = (revolver.currentChamber + i) % revolver.chambers.length;
if (revolver.chambers[idx].type === 'live') {
revolver.chambers[idx].setType('blank');
blanksSet++;
}
}
removeItem();
}
// CIGARETTE LIGHTER: Next shot is guaranteed to be live
else if (itemId === 'cigaretteLighter') {
var idx = revolver.currentChamber;
if (revolver.chambers[idx].type === 'blank') {
revolver.chambers[idx].setType('live');
LK.effects.flashScreen(0xffa500, 500);
}
removeItem();
}
// CIGARETTE FILTER: Next shot does no damage
else if (itemId === 'cigaretteFilter') {
if (!isEnemy) {
game.filterActive = true;
} else {
game.enemyFilterActive = true;
}
removeItem();
}
// CIGARETTE PAPER: Add a blank round to a random chamber
else if (itemId === 'cigarettePaper') {
var lives = [];
for (var i = 0; i < revolver.chambers.length; i++) {
if (revolver.chambers[i].type === 'live') lives.push(i);
}
if (lives.length > 0) {
var idx = lives[Math.floor(Math.random() * lives.length)];
revolver.chambers[idx].setType('blank');
LK.effects.flashScreen(0x00ffcc, 500);
}
removeItem();
}
// CIGARETTE TOBACCO: Next shot does double damage to opponent
else if (itemId === 'cigaretteTobacco') {
if (!isEnemy) {
game.buckshotActive = true;
} else {
game.enemyBuckshotActive = true;
}
removeItem();
}
// CIGARETTE BUTT: Lose 1 HP to gain 2 money (if money system is used)
else if (itemId === 'cigaretteButt') {
if (!isEnemy && playerHealth > 1) {
playerHealth--;
playerMoney += 2;
healthBar.flashDamage();
healthBar.setHealth(playerHealth);
} else if (isEnemy && enemyHealth > 1) {
enemyHealth--;
enemyMoney += 2;
healthBar.flashDamage();
healthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ASH: Next shot is a blank for both players
else if (itemId === 'cigaretteAsh') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('blank');
removeItem();
}
// CIGARETTE BURN: Next shot does 1 extra damage
else if (itemId === 'cigaretteBurn') {
if (!isEnemy) {
game.burnActive = true;
} else {
game.enemyBurnActive = true;
}
removeItem();
}
// CIGARETTE SMOKE: Both players lose 1 HP
else if (itemId === 'cigaretteSmoke') {
if (playerHealth > 1) {
playerHealth--;
playerHealthBar.flashDamage();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth > 1) {
enemyHealth--;
enemyHealthBar.flashDamage();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE EMBER: Next shot is skipped (no one fires)
else if (itemId === 'cigaretteEmber') {
if (!isEnemy) {
game.skipPlayerTurn = true;
} else {
game.skipEnemyTurn = true;
}
removeItem();
}
// CIGARETTE TIP: Heal 1 HP and gain 1 money
else if (itemId === 'cigaretteTip') {
if (!isEnemy && playerHealth < maxHealth) {
playerHealth++;
playerMoney++;
healthBar.flashHeal();
healthBar.setHealth(playerHealth);
} else if (isEnemy && enemyHealth < maxHealth) {
enemyHealth++;
enemyMoney++;
healthBar.flashHeal();
healthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ROLL: Randomly shuffle all chambers
else if (itemId === 'cigaretteRoll') {
shuffle(revolverChambers);
revolver.setChambers(revolverChambers);
removeItem();
}
// CIGARETTE BOX: Add 1 live round to a random blank
else if (itemId === 'cigaretteBox') {
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();
}
// CIGARETTE CARTON: Both players fully heal
else if (itemId === 'cigaretteCarton') {
playerHealth = maxHealth;
enemyHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
removeItem();
}
// CIGARETTE BRAND: Next shot is a blank for enemy
else if (itemId === 'cigaretteBrand') {
if (isEnemy) {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('blank');
}
removeItem();
}
// CIGARETTE LOGO: Next shot is a blank for player
else if (itemId === 'cigaretteLogo') {
if (!isEnemy) {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('blank');
}
removeItem();
}
// CIGARETTE STICKER: Next shot is a live for both players
else if (itemId === 'cigaretteSticker') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('live');
removeItem();
}
// CIGARETTE FOIL: Next shot is skipped for both players
else if (itemId === 'cigaretteFoil') {
game.skipPlayerTurn = true;
game.skipEnemyTurn = true;
removeItem();
}
// CIGARETTE CELLOPHANE: Both players lose 2 HP
else if (itemId === 'cigaretteCellophane') {
if (playerHealth > 2) {
playerHealth -= 2;
playerHealthBar.flashDamage();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth > 2) {
enemyHealth -= 2;
enemyHealthBar.flashDamage();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE TAX STAMP: Both players gain 2 money
else if (itemId === 'cigaretteTaxStamp') {
playerMoney += 2;
enemyMoney += 2;
removeItem();
}
// CIGARETTE WARNING: Next shot does no damage for both players
else if (itemId === 'cigaretteWarning') {
game.filterActive = true;
game.enemyFilterActive = true;
removeItem();
}
// CIGARETTE BARCODE: Randomly set all chambers to blank or live
else if (itemId === 'cigaretteBarcode') {
for (var i = 0; i < revolver.chambers.length; i++) {
revolver.chambers[i].setType(Math.random() < 0.5 ? 'blank' : 'live');
}
removeItem();
}
// CIGARETTE SERIAL: Next shot is a blank for both players
else if (itemId === 'cigaretteSerial') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('blank');
removeItem();
}
// CIGARETTE BATCH: Next shot is a live for both players
else if (itemId === 'cigaretteBatch') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('live');
removeItem();
}
// CIGARETTE DATE: Both players skip next turn
else if (itemId === 'cigaretteDate') {
game.skipPlayerTurn = true;
game.skipEnemyTurn = true;
removeItem();
}
// CIGARETTE FACTORY: Both players fully heal
else if (itemId === 'cigaretteFactory') {
playerHealth = maxHealth;
enemyHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
removeItem();
}
// CIGARETTE COUNTRY: Both players lose 1 HP
else if (itemId === 'cigaretteCountry') {
if (playerHealth > 1) {
playerHealth--;
playerHealthBar.flashDamage();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth > 1) {
enemyHealth--;
enemyHealthBar.flashDamage();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE IMPORT: Player gains 2 money
else if (itemId === 'cigaretteImport') {
if (!isEnemy) playerMoney += 2;
removeItem();
}
// CIGARETTE EXPORT: Enemy gains 2 money
else if (itemId === 'cigaretteExport') {
if (isEnemy) enemyMoney += 2;
removeItem();
}
// CIGARETTE DUTY: Both players lose 1 money
else if (itemId === 'cigaretteDuty') {
if (playerMoney > 0) playerMoney--;
if (enemyMoney > 0) enemyMoney--;
removeItem();
}
// CIGARETTE TAR: Next shot does double damage for both players
else if (itemId === 'cigaretteTar') {
game.buckshotActive = true;
game.enemyBuckshotActive = true;
removeItem();
}
// CIGARETTE NICOTINE: Next shot does no damage for both players
else if (itemId === 'cigaretteNicotine') {
game.filterActive = true;
game.enemyFilterActive = true;
removeItem();
}
// CIGARETTE CARBON MONOXIDE: Both players lose 1 HP
else if (itemId === 'cigaretteCarbonMonoxide') {
if (playerHealth > 1) {
playerHealth--;
playerHealthBar.flashDamage();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth > 1) {
enemyHealth--;
enemyHealthBar.flashDamage();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ADDITIVE: Next shot is a blank for both players
else if (itemId === 'cigaretteAdditive') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('blank');
removeItem();
}
// CIGARETTE FLAVOR: Next shot is a live for both players
else if (itemId === 'cigaretteFlavor') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('live');
removeItem();
}
// CIGARETTE MENTHOL: Both players heal 1 HP
else if (itemId === 'cigaretteMenthol') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE CLOVE: Next shot is skipped for both players
else if (itemId === 'cigaretteClove') {
game.skipPlayerTurn = true;
game.skipEnemyTurn = true;
removeItem();
}
// CIGARETTE HERBAL: Both players heal 2 HP
else if (itemId === 'cigaretteHerbal') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ORGANIC: Both players heal 1 HP
else if (itemId === 'cigaretteOrganic') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE LIGHT: Next shot does half damage for both players
else if (itemId === 'cigaretteLight') {
if (!isEnemy) {
game.lightActive = true;
} else {
game.enemyLightActive = true;
}
removeItem();
}
// CIGARETTE ULTRALIGHT: Next shot does no damage for both players
else if (itemId === 'cigaretteUltraLight') {
game.filterActive = true;
game.enemyFilterActive = true;
removeItem();
}
// CIGARETTE SLIM: Next shot is a blank for both players
else if (itemId === 'cigaretteSlim') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('blank');
removeItem();
}
// CIGARETTE SUPERSLIM: Next shot is a blank for both players
else if (itemId === 'cigaretteSuperSlim') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('blank');
removeItem();
}
// CIGARETTE MINI: Next shot is a blank for both players
else if (itemId === 'cigaretteMini') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('blank');
removeItem();
}
// CIGARETTE KING SIZE: Next shot is a live for both players
else if (itemId === 'cigaretteKingSize') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('live');
removeItem();
}
// CIGARETTE 100s: Next shot is a live for both players
else if (itemId === 'cigarette100s') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('live');
removeItem();
}
// CIGARETTE 120s: Next shot is a live for both players
else if (itemId === 'cigarette120s') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('live');
removeItem();
}
// CIGARETTE LONG: Next shot is a live for both players
else if (itemId === 'cigaretteLong') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('live');
removeItem();
}
// CIGARETTE SHORT: Next shot is a blank for both players
else if (itemId === 'cigaretteShort') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('blank');
removeItem();
}
// CIGARETTE REGULAR: No effect (placeholder)
else if (itemId === 'cigaretteRegular') {
removeItem();
}
// CIGARETTE SPECIAL: Next shot is a live for both players
else if (itemId === 'cigaretteSpecial') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('live');
removeItem();
}
// CIGARETTE LIMITED: Next shot is a blank for both players
else if (itemId === 'cigaretteLimited') {
var idx = revolver.currentChamber;
revolver.chambers[idx].setType('blank');
removeItem();
}
// CIGARETTE EDITION: Shuffle all chambers
else if (itemId === 'cigaretteEdition') {
shuffle(revolverChambers);
revolver.setChambers(revolverChambers);
removeItem();
}
// CIGARETTE VINTAGE: Both players heal 1 HP
else if (itemId === 'cigaretteVintage') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE CLASSIC: Both players heal 1 HP
else if (itemId === 'cigaretteClassic') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE PREMIUM: Both players heal 2 HP
else if (itemId === 'cigarettePremium') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE GOLD: Both players gain 5 money
else if (itemId === 'cigaretteGold') {
playerMoney += 5;
enemyMoney += 5;
removeItem();
}
// CIGARETTE SILVER: Both players gain 3 money
else if (itemId === 'cigaretteSilver') {
playerMoney += 3;
enemyMoney += 3;
removeItem();
}
// CIGARETTE PLATINUM: Both players gain 10 money
else if (itemId === 'cigarettePlatinum') {
playerMoney += 10;
enemyMoney += 10;
removeItem();
}
// CIGARETTE DIAMOND: Both players fully heal and gain 10 money
else if (itemId === 'cigaretteDiamond') {
playerHealth = maxHealth;
enemyHealth = maxHealth;
playerMoney += 10;
enemyMoney += 10;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
removeItem();
}
// CIGARETTE RUBY: Both players lose 2 HP
else if (itemId === 'cigaretteRuby') {
if (playerHealth > 2) {
playerHealth -= 2;
playerHealthBar.flashDamage();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth > 2) {
enemyHealth -= 2;
enemyHealthBar.flashDamage();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SAPPHIRE: Both players heal 2 HP
else if (itemId === 'cigaretteSapphire') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE EMERALD: Both players heal 3 HP
else if (itemId === 'cigaretteEmerald') {
if (playerHealth < maxHealth) {
playerHealth += 3;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 3;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE PEARL: Both players heal 1 HP
else if (itemId === 'cigarettePearl') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE CRYSTAL: Both players heal 2 HP
else if (itemId === 'cigaretteCrystal') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE OPAL: Both players heal 1 HP
else if (itemId === 'cigaretteOpal') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE JADE: Both players heal 2 HP
else if (itemId === 'cigaretteJade') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE AMBER: Both players heal 1 HP
else if (itemId === 'cigaretteAmber') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE TOPAZ: Both players heal 2 HP
else if (itemId === 'cigaretteTopaz') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE GARNET: Both players lose 1 HP
else if (itemId === 'cigaretteGarnet') {
if (playerHealth > 1) {
playerHealth--;
playerHealthBar.flashDamage();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth > 1) {
enemyHealth--;
enemyHealthBar.flashDamage();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE TURQUOISE: Both players heal 1 HP
else if (itemId === 'cigaretteTurquoise') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ONYX: Both players lose 2 HP
else if (itemId === 'cigaretteOnyx') {
if (playerHealth > 2) {
playerHealth -= 2;
playerHealthBar.flashDamage();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth > 2) {
enemyHealth -= 2;
enemyHealthBar.flashDamage();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE OBSIDIAN: Both players lose 1 HP
else if (itemId === 'cigaretteObsidian') {
if (playerHealth > 1) {
playerHealth--;
playerHealthBar.flashDamage();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth > 1) {
enemyHealth--;
enemyHealthBar.flashDamage();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE QUARTZ: Both players heal 1 HP
else if (itemId === 'cigaretteQuartz') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE AGATE: Both players heal 2 HP
else if (itemId === 'cigaretteAgate') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE JASPER: Both players heal 1 HP
else if (itemId === 'cigaretteJasper') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE LAPIS: Both players heal 2 HP
else if (itemId === 'cigaretteLapis') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE MALACHITE: Both players heal 1 HP
else if (itemId === 'cigaretteMalachite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE MOONSTONE: Both players heal 2 HP
else if (itemId === 'cigaretteMoonstone') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SUNSTONE: Both players heal 1 HP
else if (itemId === 'cigaretteSunstone') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE TIGEREYE: Both players heal 2 HP
else if (itemId === 'cigaretteTigerEye') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ZIRCON: Both players heal 1 HP
else if (itemId === 'cigaretteZircon') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SPINEL: Both players heal 2 HP
else if (itemId === 'cigaretteSpinel') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE TOURMALINE: Both players heal 1 HP
else if (itemId === 'cigaretteTourmaline') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE PERIDOT: Both players heal 2 HP
else if (itemId === 'cigarettePeridot') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ALEXANDRITE: Both players heal 1 HP
else if (itemId === 'cigaretteAlexandrite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE TANZANITE: Both players heal 2 HP
else if (itemId === 'cigaretteTanzanite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE MORGANITE: Both players heal 1 HP
else if (itemId === 'cigaretteMorganite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE AQUAMARINE: Both players heal 2 HP
else if (itemId === 'cigaretteAquamarine') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE CITRINE: Both players heal 1 HP
else if (itemId === 'cigaretteCitrine') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE HELIODOR: Both players heal 2 HP
else if (itemId === 'cigaretteHeliodor') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE KUNZITE: Both players heal 1 HP
else if (itemId === 'cigaretteKunzite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE LEPIDOLITE: Both players heal 2 HP
else if (itemId === 'cigaretteLepidolite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE RHODONITE: Both players heal 1 HP
else if (itemId === 'cigaretteRhodonite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SODALITE: Both players heal 2 HP
else if (itemId === 'cigaretteSodalite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SUGILITE: Both players heal 1 HP
else if (itemId === 'cigaretteSugilite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE TOPAZOLITE: Both players heal 2 HP
else if (itemId === 'cigaretteTopazolite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE TSAVORITE: Both players heal 1 HP
else if (itemId === 'cigaretteTsavorite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE VARISCITE: Both players heal 2 HP
else if (itemId === 'cigaretteVariscite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ZOISITE: Both players heal 1 HP
else if (itemId === 'cigaretteZoisite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ANDALUSITE: Both players heal 2 HP
else if (itemId === 'cigaretteAndalusite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE APATITE: Both players heal 1 HP
else if (itemId === 'cigaretteApatite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE AXINITE: Both players heal 2 HP
else if (itemId === 'cigaretteAxinite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE BENITOITE: Both players heal 1 HP
else if (itemId === 'cigaretteBenitoite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE BERYL: Both players heal 2 HP
else if (itemId === 'cigaretteBeryl') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE CASSITERITE: Both players heal 1 HP
else if (itemId === 'cigaretteCassiterite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE CHALCEDONY: Both players heal 2 HP
else if (itemId === 'cigaretteChalcedony') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE CHRYSOBERYL: Both players heal 1 HP
else if (itemId === 'cigaretteChrysoberyl') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE DANBURITE: Both players heal 2 HP
else if (itemId === 'cigaretteDanburite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE DIOPSIDE: Both players heal 1 HP
else if (itemId === 'cigaretteDiopside') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE DUMORTIERITE: Both players heal 2 HP
else if (itemId === 'cigaretteDumortierite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ENSTATITE: Both players heal 1 HP
else if (itemId === 'cigaretteEnstatite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE EPIDOTE: Both players heal 2 HP
else if (itemId === 'cigaretteEpidote') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE FLUORITE: Both players heal 1 HP
else if (itemId === 'cigaretteFluorite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE GOSHENITE: Both players heal 2 HP
else if (itemId === 'cigaretteGoshenite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE HACKMANITE: Both players heal 1 HP
else if (itemId === 'cigaretteHackmanite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE HIDDENITE: Both players heal 2 HP
else if (itemId === 'cigaretteHiddenite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE IOLITE: Both players heal 1 HP
else if (itemId === 'cigaretteIolite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE KYANITE: Both players heal 2 HP
else if (itemId === 'cigaretteKyanite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE LABRADORITE: Both players heal 1 HP
else if (itemId === 'cigaretteLabradorite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE LARIMAR: Both players heal 2 HP
else if (itemId === 'cigaretteLarimar') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE NEPHRITE: Both players heal 1 HP
else if (itemId === 'cigaretteNephrite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE PETALITE: Both players heal 2 HP
else if (itemId === 'cigarettePetalite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE PREHNITE: Both players heal 1 HP
else if (itemId === 'cigarettePrehnite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SCAPOLITE: Both players heal 2 HP
else if (itemId === 'cigaretteScapolite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SERPENTINE: Both players heal 1 HP
else if (itemId === 'cigaretteSerpentine') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SMITHSONITE: Both players heal 2 HP
else if (itemId === 'cigaretteSmithsonite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SPESSARTITE: Both players heal 1 HP
else if (itemId === 'cigaretteSpessartite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SPHENE: Both players heal 2 HP
else if (itemId === 'cigaretteSphene') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE STAUROLITE: Both players heal 1 HP
else if (itemId === 'cigaretteStaurolite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE SUNSTONE: Both players heal 2 HP
else if (itemId === 'cigaretteSunstone') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE TEKTITE: Both players heal 1 HP
else if (itemId === 'cigaretteTektite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE THULITE: Both players heal 2 HP
else if (itemId === 'cigaretteThulite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE UVAROVITE: Both players heal 1 HP
else if (itemId === 'cigaretteUvarovite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE VESUVIANITE: Both players heal 2 HP
else if (itemId === 'cigaretteVesuvianite') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE WULFENITE: Both players heal 1 HP
else if (itemId === 'cigaretteWulfenite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ZIRCON: Both players heal 2 HP
else if (itemId === 'cigaretteZircon') {
if (playerHealth < maxHealth) {
playerHealth += 2;
if (playerHealth > maxHealth) playerHealth = maxHealth;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth += 2;
if (enemyHealth > maxHealth) enemyHealth = maxHealth;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// CIGARETTE ZOISITE: Both players heal 1 HP
else if (itemId === 'cigaretteZoisite') {
if (playerHealth < maxHealth) {
playerHealth++;
playerHealthBar.flashHeal();
playerHealthBar.setHealth(playerHealth);
}
if (enemyHealth < maxHealth) {
enemyHealth++;
enemyHealthBar.flashHeal();
enemyHealthBar.setHealth(enemyHealth);
}
removeItem();
}
// FLAG: Steal a random item from the opponent
else if (itemId === 'flag') {
// Determine which arrays to use
var targetItemsArr = isEnemy ? playerItems : enemyItems;
var myItemsArr = isEnemy ? enemyItems : playerItems;
// Only steal if opponent has at least one item
if (targetItemsArr.length > 0) {
// Pick a random item from opponent
var stealIdx = Math.floor(Math.random() * targetItemsArr.length);
var stolenItem = targetItemsArr[stealIdx];
// Remove from opponent
targetItemsArr.splice(stealIdx, 1);
// Add to self if not already owned and not exceeding 8 items
if (myItemsArr.length < 8 && myItemsArr.indexOf(stolenItem) === -1) {
myItemsArr.push(stolenItem);
}
// Optional: Visual feedback
LK.effects.flashScreen(0x00bfff, 600);
}
removeItem();
}
// Add more items here as needed
updateItems();
updateUI();
// Sıra değişimi: Artık item kullanınca sıra değişmiyor, sadece ateş edince değişecek
}
function checkGameOver() {
// Eşyalar sadece canı giderse (azalırsa) yenilensin, ateş edilince değil
// Bir önceki can değerlerini takip et
if (typeof checkGameOver.lastPlayerHealth === "undefined") {
checkGameOver.lastPlayerHealth = maxHealth;
}
if (typeof checkGameOver.lastEnemyHealth === "undefined") {
checkGameOver.lastEnemyHealth = maxHealth;
}
var playerLostHealth = false;
var enemyLostHealth = false;
// Sadece canı azaldıysa (yani bir önceki değerden küçükse) eşyaları yenile
if (playerHealth < checkGameOver.lastPlayerHealth) {
playerLostHealth = true;
}
if (enemyHealth < checkGameOver.lastEnemyHealth) {
enemyLostHealth = true;
}
// Eğer birinin canı gitti ise (azaldıysa), eşyaları yenile
if (playerLostHealth || enemyLostHealth) {
var _uniqueItems = getUniqueInitialItemsPair();
playerItems = _uniqueItems[0];
enemyItems = _uniqueItems[1];
updateItems();
updateUI();
}
// Son can değerlerini güncelle
checkGameOver.lastPlayerHealth = playerHealth;
checkGameOver.lastEnemyHealth = enemyHealth;
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() {
// Defensive: If enemy is about to die, use painkillers if available
for (var i = 0; i < enemyItems.length; i++) {
var item = enemyItems[i];
if (!item) continue;
if (item === 'painkillers' && enemyHealth === 1) {
useItem(item, true);
LK.setTimeout(fireRevolver, 1200);
return;
}
}
// Heal if not full health and healing item available
for (var i = 0; i < enemyItems.length; i++) {
var item = enemyItems[i];
if (!item) continue;
if (item === 'cigarette' && enemyHealth < maxHealth || item === 'whiskey' && enemyHealth < maxHealth - 1) {
useItem(item, true);
LK.setTimeout(fireRevolver, 1200);
return;
}
}
// If next chamber is live, use defensive items if available
var nextType = revolver.getCurrentType();
if (nextType === 'live') {
for (var i = 0; i < enemyItems.length; i++) {
var item = enemyItems[i];
if (!item) continue;
if (item === 'adrenaline' || item === 'mirror' || item === 'deflector' || item === 'painkillers') {
useItem(item, true);
LK.setTimeout(fireRevolver, 1200);
return;
}
// Use filter if available (no damage)
if (item === 'cigaretteFilter' || item === 'cigaretteWarning' || item === 'cigaretteUltraLight' || item === 'cigaretteNicotine') {
useItem(item, true);
LK.setTimeout(fireRevolver, 1200);
return;
}
}
}
// If next chamber is blank, use offensive/utility items if available
if (nextType === 'blank') {
for (var i = 0; i < enemyItems.length; i++) {
var item = enemyItems[i];
if (!item) continue;
if (item === 'buckshot' || item === 'blankBullets' || item === 'shellPuller') {
useItem(item, true);
LK.setTimeout(fireRevolver, 1200);
return;
}
// Use scope to guarantee blank for player
if (item === 'scope') {
useItem(item, true);
LK.setTimeout(fireRevolver, 1200);
return;
}
}
}
// Use information items if available and not already active
for (var i = 0; i < enemyItems.length; i++) {
var item = enemyItems[i];
if (!item) continue;
if (item === 'xray' && !game._xrayActiveForEnemy) {
useItem('xray', true);
LK.setTimeout(fireRevolver, 1200);
return;
}
if (item === 'magnifier' && !game._magnifierActiveForEnemy) {
useItem('magnifier', true);
LK.setTimeout(fireRevolver, 1200);
return;
}
}
// Use any other item if it is the only one left
if (enemyItems.length === 1 && enemyItems[0]) {
useItem(enemyItems[0], true);
LK.setTimeout(fireRevolver, 1200);
return;
}
// If enemy has a "lighter" and it's their turn, use it to fire instantly
for (var i = 0; i < enemyItems.length; i++) {
var item = enemyItems[i];
if (item === 'lighter') {
useItem(item, true);
// Lighter will call fireRevolver itself
return;
}
}
// If no item is used, fire the revolver
fireRevolver();
// Turn passing is now handled in fireRevolver, nothing needed here
}
// --- Event Handlers ---
// Revolver'a tıklayınca ateş et (sadece oyuncu sırası ve action fazında)
revolver.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) ---
function checkAlignedChambers() {
// Check for 3 adjacent chambers with the same type (not 'fired')
// Returns array of indices if found, otherwise null
var chambers = revolver.chambers;
var n = chambers.length;
for (var i = 0; i < n; i++) {
var t0 = chambers[i].type;
var t1 = chambers[(i + 1) % n].type;
var t2 = chambers[(i + 2) % n].type;
if (t0 === t1 && t1 === t2 && t0 !== 'fired') {
return [i, (i + 1) % n, (i + 2) % n];
}
}
return null;
}
var _lastAlignedIndices = null;
game.update = function () {
// Check for 3 aligned chambers every frame
var aligned = checkAlignedChambers();
// Only trigger when alignment state changes
if (!_lastAlignedIndices && aligned || _lastAlignedIndices && aligned && (_lastAlignedIndices[0] !== aligned[0] || _lastAlignedIndices[1] !== aligned[1] || _lastAlignedIndices[2] !== aligned[2])) {
// Highlight the aligned chambers
for (var i = 0; i < revolver.chambers.length; i++) {
if (aligned.indexOf(i) !== -1) {
// Animate highlight (e.g. flash)
revolver.chambers[i].flash();
}
}
}
_lastAlignedIndices = aligned;
};
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