User prompt
Hala sorun düzelmedi düzelt
User prompt
Hatayı dizelt
User prompt
Please fix the bug: 'Timeout.tick error: enemyHealth is not defined' in or related to this line: 'if (item === 'painkillers' && enemyHealth === 1) {' Line Number: 3641
User prompt
Ve ayrıca ekran player2 veya player1 a dönsün mesela tur player2 da ya ekran player2 un görebileceği şekilde ters çevrilsin yaz kodu
User prompt
Güzel şimdi şöyle bişey daha olsun mesela player2 un sırası geldiğinde ekran aynalansın ve player2 ye dönsün ki daha rahat neyin ne olduğunu okuyabilsin yap şimdi kodu veya yapacağın şeyi yap işte
User prompt
Player2 ateş edebiliyor ama eşya kullanamıyor düzelt
User prompt
Ama player2 nin turu oynanılamıyor yani ateş edemiyor ve eşya kullanamıyor düzelt bunların hepsini ve ne gerekiyorsa yap
User prompt
Player2 deki oyuncu oynanılamıyor turu düzelt
User prompt
Ve ayrıca mod seçimi ekranındaki şeylerin altındaki yazıyı siyah renkte yap
User prompt
Hayır istersek online yani bizim yaptığımız online istersek de AI ile oynayabilelim
User prompt
Please fix the bug: 'ReferenceError: playerHealth is not defined' in or related to this line: 'if (!isEnemy && playerHealth < maxHealth) {' Line Number: 1286
User prompt
Sorunu düzelt
User prompt
Please fix the bug: 'Timeout.tick error: enemyItems is not defined' in or related to this line: 'for (var i = 0; i < enemyItems.length; i++) {' Line Number: 3501
User prompt
Şimdi bir online mantığı olsun bu mantık şu olsun tek telefondan oynanan online olsun yani 2 kişi tek telefondan oynayabilsin bir turda player1 diger turda player2 gibi olsun sen beni anladın
User prompt
Oyunun adı olan yere "Buckshot roulette" yerine "russia Roulette" yaz
User prompt
Başlangıç ekranındaki beyaz olan yeri siyah yap
User prompt
Arka kısım gözükmesin
User prompt
Oyuna bir ana menü yap
User prompt
Oyunda o zaman hangi mermi koyulma yerinde oldugu yazsın
User prompt
Oyunda kimin hangi mermiyi sırada kafasına sıkacağı yazsın
User prompt
Ve birde eger mermide kaç tane dolu varsa hepsini bize XRAY yerini göstersin ama magnifier iyi onu degil
User prompt
Enemy kendine dolu ateş etse de canı gitmiyor bunu düzelt
User prompt
Dolu merminin yerini yine yanlış gösteriyor XRAY ve MAGNIFIER bunu da düzelt
User prompt
Şunu düzelt kqrşıdaki kişi neredeyse hiç dolu mermi olsa da kendine vurmuyor yani kendine ateş edince dolu olsa bile canı gitmiyor bunu düzelt
User prompt
Ve ayrıca yine magnifier ve XRAY yalnış mermileri dolu olarak gösteriyor bunu düzelt
/**** * 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 // XRAY/MAGNIFIER aktifken sadece gerçekten 'live' olanlar gösterilsin, diğerleri asla gösterilmesin if (game._xrayActiveForPlayer || game._xrayActiveForEnemy || game._magnifierActiveForPlayer || game._magnifierActiveForEnemy) { // Sadece type tam olarak 'live' ise göster, diğer tüm tiplerde asla gösterme if (self.type === 'live') { liveBulletIcon.visible = true; } else { liveBulletIcon.visible = false; } } else { // XRAY/MAGNIFIER aktif değilse, normal davranış: sadece type==='live' ise ve visible parametresi true ise göster if (self.type === 'live') { if (self._forceLiveIndicator) { liveBulletIcon.visible = true; } else { liveBulletIcon.visible = !!visible; } } else { 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 player1Health = 6; var player2Health = 6; var maxHealth = 6; // Oyuncu ve oyuncu2 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 oyuncu2 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 player1Set = []; var player2Set = []; for (var i = 0; i < count; i++) { player1Set.push(pool.shift()); } for (var i = 0; i < count; i++) { player2Set.push(pool.shift()); } // Both sets are guaranteed to be unique and same count return [player1Set, player2Set]; } var _uniqueItems = getUniqueInitialItemsPair(); var player1Items = _uniqueItems[0]; var player2Items = _uniqueItems[1]; var revolverChambers = ['blank', 'live', 'blank', 'blank', 'blank', 'blank']; // Will be randomized var currentTurn = 'player1'; // 'player1' or 'player2' 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 player1HealthBar = new HealthBar(); player1HealthBar.x = 2048 / 2 - 200; player1HealthBar.y = 1800; game.addChild(player1HealthBar); var player2HealthBar = new HealthBar(); player2HealthBar.x = 2048 / 2 - 200; player2HealthBar.y = 300; game.addChild(player2HealthBar); // Player1/Player2 labels var player1Label = new Text2('PLAYER 1', { size: 80, fill: "#fff" }); player1Label.anchor.set(0.5, 0); player1Label.x = 2048 / 2; player1Label.y = 1700; game.addChild(player1Label); var player2Label = new Text2('PLAYER 2', { size: 80, fill: "#fff" }); player2Label.anchor.set(0.5, 0); player2Label.x = 2048 / 2; player2Label.y = 200; game.addChild(player2Label); // 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() { player1Health = maxHealth; player2Health = maxHealth; var _uniqueItems = getUniqueInitialItemsPair(); player1Items = _uniqueItems[0]; player2Items = _uniqueItems[1]; player1Money = 0; player2Money = 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'; } // 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(); player1HealthBar.setHealth(player1Health); player2HealthBar.setHealth(player2Health); updateItems(); currentTurn = 'player1'; 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 === 'player1') { turnLabel.setText("PLAYER 1'S TURN"); // Sadece player1'in item butonları gösterilsin for (var i = 0; i < itemButtons.length; i++) { if (player1Items[i]) { itemButtons[i].visible = true; } else { itemButtons[i].visible = false; } } } else if (currentTurn === 'player2' && gameMode === "online") { turnLabel.setText("PLAYER 2'S TURN"); // Sadece player2'nin item butonları gösterilsin (player2Items) for (var i = 0; i < itemButtons.length; i++) { if (player2Items[i]) { itemButtons[i].visible = true; } else { itemButtons[i].visible = false; } } } else { // AI modda veya başka durumda item butonlarını gizle turnLabel.setText("PLAYER 2'S TURN"); for (var i = 0; i < itemButtons.length; i++) { itemButtons[i].visible = false; itemButtons[i].x = -9999; itemButtons[i].y = -9999; } } // Health bars player1HealthBar.setHealth(player1Health); player2HealthBar.setHealth(player2Health); 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 = player1Items.length; for (var i = 0; i < itemButtons.length; i++) { if (player1Items[i]) { var itemId = player1Items[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 () { // Online modda, hangi oyuncunun sırasıysa ona göre item kullan if (gameMode === "online") { if (currentTurn === 'player1') { useItem(itemId, false); } else if (currentTurn === 'player2') { useItem(itemId, true); } } else { // AI modda sadece player1 item kullanabilir useItem(itemId, false); } 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 = player2Items.length; for (var i = 0; i < enemyItemButtons.length; i++) { if (player2Items[i]) { var itemId = player2Items[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; } // Enable item use for player2 in online mode enemyItemButtons[i].down = function (itemId, desc, btnIdx) { return function () { // Only allow in online mode and if it's player2's turn if (gameMode === "online" && currentTurn === 'player2') { // Remove old popup if exists if (game._itemPopup) { game.removeChild(game._itemPopup); game._itemPopup = null; } // Popup container var popup = new Container(); // Description var txt = new Text2(itemDescriptions[itemId] || "", { size: 60, fill: "#888" }); txt.anchor.set(0.5, 0.5); txt.x = 2048 / 2; txt.y = 1450; popup.addChild(txt); // Question 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); // Yes button 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); // No button 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); // Yes: use item as player2 yesBtn.down = function () { useItem(itemId, true); if (game._itemPopup) { game.removeChild(game._itemPopup); game._itemPopup = null; } }; // No: close popup noBtn.down = function () { if (game._itemPopup) { game.removeChild(game._itemPopup); game._itemPopup = null; } }; // Add popup to game game.addChild(popup); game._itemPopup = popup; } }; }(itemId, itemDescriptions[itemId] || "", i); // 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 === 'player1') { // Player 1's turn // Mirror: reflect shot to player2 if (game.mirrorActive && type === 'live') { game.mirrorActive = false; player2Health--; player2HealthBar.flashDamage(); LK.effects.flashObject(player2HealthBar, 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' && player1Health === 1) { game.painkillersActive = false; LK.effects.flashScreen(0xffff00, 500); } // Buckshot: double damage else if (game.buckshotActive && type === 'live') { game.buckshotActive = false; player1Health -= 2; player1HealthBar.flashDamage(); LK.effects.flashScreen(0xffa500, 500); } // Normal shot else if (type === 'live') { // Eğer deflector veya filter aktifse hasar alma if (game.deflectorActive || game.filterActive) { game.deflectorActive = false; game.filterActive = false; LK.effects.flashScreen(0x00ffcc, 500); } else if (game.lightActive) { game.lightActive = false; if (player1Health > 1) { player1Health--; player1HealthBar.flashDamage(); LK.effects.flashScreen(0xffe066, 500); } } else if (game.burnActive) { game.burnActive = false; player1Health -= 2; if (player1Health < 0) player1Health = 0; player1HealthBar.flashDamage(); LK.effects.flashScreen(0xff0000, 500); } else if (game.painkillersActive && player1Health === 1) { game.painkillersActive = false; LK.effects.flashScreen(0xffff00, 500); } else if (game.adrenalineImmune) { game.adrenalineImmune = false; LK.effects.flashScreen(0x00ffff, 500); } else if (game.buckshotActive) { game.buckshotActive = false; player1Health -= 2; if (player1Health < 0) player1Health = 0; player1HealthBar.flashDamage(); LK.effects.flashScreen(0xffa500, 500); } else { player1Health--; player1HealthBar.flashDamage(); LK.effects.flashScreen(0xff0000, 500); } } 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(); var liveBulletsLeft = revolver.chambers.some(function (chamber) { return chamber.type === 'live'; }); if (!liveBulletsLeft && gamePhase !== 'gameover') { 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') { if (gameMode === "online") { currentTurn = 'player2'; updateUI(); } else { // AI mode: player2 is AI, trigger AI turn currentTurn = 'player2'; updateUI(); LK.setTimeout(enemyTurn, 1200); } } } else if (currentTurn === 'player2') { // Player 2's turn // Mirror: reflect shot to player1 if (game.enemyMirrorActive && type === 'live') { game.enemyMirrorActive = false; player1Health--; player1HealthBar.flashDamage(); LK.effects.flashObject(player1HealthBar, 0xff0000, 500); } else if (game.enemyAdrenalineImmune && type === 'live') { game.enemyAdrenalineImmune = false; LK.effects.flashScreen(0x00ffff, 500); } else if (game.enemyPainkillersActive && type === 'live' && player2Health === 1) { game.enemyPainkillersActive = false; LK.effects.flashScreen(0xffff00, 500); } else if (game.enemyBuckshotActive && type === 'live') { game.enemyBuckshotActive = false; player2Health -= 2; if (player2Health < 0) player2Health = 0; player2HealthBar.flashDamage(); LK.effects.flashScreen(0xffa500, 500); } else if (type === 'live') { if (game.enemyDeflectorActive || game.enemyFilterActive) { game.enemyDeflectorActive = false; game.enemyFilterActive = false; LK.effects.flashScreen(0x00ffcc, 500); } else if (game.enemyLightActive) { game.enemyLightActive = false; if (player2Health > 1) { player2Health--; player2HealthBar.flashDamage(); LK.effects.flashScreen(0xffe066, 500); } } else if (game.enemyBurnActive) { game.enemyBurnActive = false; player2Health -= 2; if (player2Health < 0) player2Health = 0; player2HealthBar.flashDamage(); LK.effects.flashScreen(0xff0000, 500); } else if (game.enemyPainkillersActive && player2Health === 1) { game.enemyPainkillersActive = false; LK.effects.flashScreen(0xffff00, 500); } else if (game.enemyAdrenalineImmune) { game.enemyAdrenalineImmune = false; LK.effects.flashScreen(0x00ffff, 500); } else if (game.enemyBuckshotActive) { game.enemyBuckshotActive = false; player2Health -= 2; if (player2Health < 0) player2Health = 0; player2HealthBar.flashDamage(); LK.effects.flashScreen(0xffa500, 500); } else { player2Health--; player2HealthBar.flashDamage(); LK.effects.flashScreen(0xff0000, 500); } } 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(); var liveBulletsLeft = revolver.chambers.some(function (chamber) { return chamber.type === 'live'; }); if (!liveBulletsLeft && gamePhase !== 'gameover') { 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') { if (gameMode === "online") { currentTurn = 'player1'; updateUI(); } else { // AI mode: player1 is always the human, so just pass turn back to player1 currentTurn = 'player1'; updateUI(); } } } } function useItem(itemId, isEnemy) { // Aliases for backward compatibility with old item code // Always use player1Health/player2Health for player/enemy, and update them at the end var playerHealth = isEnemy ? player2Health : player1Health; var enemyHealth = isEnemy ? player1Health : player2Health; // enemyHealth is always the OPPONENT of the acting player // isEnemy: true if AI is using, false/undefined if player var itemsArr = isEnemy ? player2Items : player1Items; var healthBar = isEnemy ? player2HealthBar : player1HealthBar; var healthVar = isEnemy ? "player2Health" : "player1Health"; var otherHealthBar = isEnemy ? player1HealthBar : player2HealthBar; var otherHealthVar = isEnemy ? "player1Health" : "player2Health"; var removeItem = function removeItem() { for (var i = 0; i < itemsArr.length; i++) { if (itemsArr[i] === itemId) { itemsArr.splice(i, 1); break; } } }; // XRAY: Reveal all live 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(); // Tüm canlı mermileri göster for (var i = 0; i < revolver.chambers.length; i++) { if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") { // Sadece canlı mermilerde göster if (revolver.chambers[i].type === 'live') { revolver.chambers[i].setLiveIndicatorVisible(true, true); } else { revolver.chambers[i].setLiveIndicatorVisible(false, 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(); // Tüm canlı mermileri göster for (var i = 0; i < revolver.chambers.length; i++) { if (typeof revolver.chambers[i].setLiveIndicatorVisible === "function") { if (revolver.chambers[i].type === 'live') { revolver.chambers[i].setLiveIndicatorVisible(true, true); } else { revolver.chambers[i].setLiveIndicatorVisible(false, 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 ? player1Items : player2Items; var myItemsArr = isEnemy ? player2Items : player1Items; // 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 // Sync aliases back to main health variables in case they were changed if (!isEnemy) { player1Health = playerHealth; } else { player2Health = enemyHealth; } 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.lastPlayer1Health === "undefined") { checkGameOver.lastPlayer1Health = maxHealth; } if (typeof checkGameOver.lastPlayer2Health === "undefined") { checkGameOver.lastPlayer2Health = maxHealth; } var player1LostHealth = false; var player2LostHealth = false; if (player1Health < checkGameOver.lastPlayer1Health) { player1LostHealth = true; } if (player2Health < checkGameOver.lastPlayer2Health) { player2LostHealth = true; } if (player1LostHealth || player2LostHealth) { var _uniqueItems = getUniqueInitialItemsPair(); player1Items = _uniqueItems[0]; player2Items = _uniqueItems[1]; updateItems(); updateUI(); } checkGameOver.lastPlayer1Health = player1Health; checkGameOver.lastPlayer2Health = player2Health; if (player1Health <= 0) { gamePhase = 'gameover'; LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } else if (player2Health <= 0) { gamePhase = 'gameover'; LK.effects.flashScreen(0x00ff00, 1000); LK.showYouWin(); } } // --- Enemy AI (MVP: always fires, no items) --- function enemyTurn() { if (gameMode !== "ai") return; // Only run AI logic in AI mode // Defensive: If enemy is about to die, use painkillers if available // Always use player2Health for enemyHealth var enemyHealth = player2Health; for (var i = 0; i < player2Items.length; i++) { var item = player2Items[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 < player2Items.length; i++) { var item = player2Items[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 < player2Items.length; i++) { var item = player2Items[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 < player2Items.length; i++) { var item = player2Items[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 < player2Items.length; i++) { var item = player2Items[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 (player2Items.length === 1 && player2Items[0]) { useItem(player2Items[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 < player2Items.length; i++) { var item = player2Items[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 (gameMode === "online") { // Online modda, hem player1 hem de player2 kendi turunda ateş edebilmeli if ((currentTurn === 'player1' || currentTurn === 'player2') && gamePhase === 'action') { fireRevolver(); } } else { // AI modda sadece player1 ateş edebilir if (currentTurn === 'player1' && gamePhase === 'action') { fireRevolver(); } } }; // Item buttons handled in updateItems() // --- Main Menu Overlay --- var mainMenuOverlay = new Container(); mainMenuOverlay.visible = true; // Opaque background (no transparency) // Use a black ellipse for the background instead of white var menuBg = LK.getAsset('revolverBody', { anchorX: 0.5, anchorY: 0.5, scaleX: 30, scaleY: 40, color: 0x000000, alpha: 1, x: 2048 / 2, y: 2732 / 2 }); mainMenuOverlay.addChild(menuBg); // Game Title var titleText = new Text2("russia Roulette", { size: 160, fill: 0xFFE066 }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 700; mainMenuOverlay.addChild(titleText); // Subtitle var subtitleText = new Text2("Rus Ruleti - Eşya Modu", { size: 70, fill: "#fff" }); subtitleText.anchor.set(0.5, 0.5); subtitleText.x = 2048 / 2; subtitleText.y = 900; mainMenuOverlay.addChild(subtitleText); // --- Game Mode Selection --- var gameMode = "ai"; // "ai" or "online" // Online button var onlineBtn = LK.getAsset('itemIcon', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5, x: 2048 / 2 - 250, y: 1150 }); mainMenuOverlay.addChild(onlineBtn); var onlineBtnText = new Text2("2 KİŞİ (TEK TELEFON)", { size: 48, fill: "#000" }); onlineBtnText.anchor.set(0.5, 0.5); onlineBtnText.x = onlineBtn.x; onlineBtnText.y = onlineBtn.y + 110; mainMenuOverlay.addChild(onlineBtnText); // AI button var aiBtn = LK.getAsset('itemIcon', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5, x: 2048 / 2 + 250, y: 1150 }); mainMenuOverlay.addChild(aiBtn); var aiBtnText = new Text2("YAPAY ZEKA", { size: 48, fill: "#000" }); aiBtnText.anchor.set(0.5, 0.5); aiBtnText.x = aiBtn.x; aiBtnText.y = aiBtn.y + 110; mainMenuOverlay.addChild(aiBtnText); // Start Button var startBtn = LK.getAsset('itemIcon', { anchorX: 0.5, anchorY: 0.5, scaleX: 2.2, scaleY: 2.2, x: 2048 / 2, y: 1300 }); mainMenuOverlay.addChild(startBtn); var startBtnText = new Text2("BAŞLA", { size: 90, fill: 0x83DE44 }); startBtnText.anchor.set(0.5, 0.5); startBtnText.x = startBtn.x; startBtnText.y = startBtn.y + 160; mainMenuOverlay.addChild(startBtnText); // How to Play var howToText = new Text2("Ateş etmek için silaha tıkla. Eşyalarını kullan, hayatta kal!", { size: 54, fill: "#fff" }); howToText.anchor.set(0.5, 0.5); howToText.x = 2048 / 2; howToText.y = 1700; mainMenuOverlay.addChild(howToText); // Ava credits var creditsText = new Text2("by FRVR.Ava.Combo[POGAAS].v1.0", { size: 36, fill: "#888" }); creditsText.anchor.set(0.5, 0.5); creditsText.x = 2048 / 2; creditsText.y = 2600; mainMenuOverlay.addChild(creditsText); // Block game UI until menu is dismissed game.interactiveChildren = false; // Game mode selection logic onlineBtn.down = function () { gameMode = "online"; onlineBtn.scaleX = onlineBtn.scaleY = 1.8; aiBtn.scaleX = aiBtn.scaleY = 1.5; onlineBtnText.fill = "#83DE44"; aiBtnText.fill = "#fff"; }; aiBtn.down = function () { gameMode = "ai"; aiBtn.scaleX = aiBtn.scaleY = 1.8; onlineBtn.scaleX = onlineBtn.scaleY = 1.5; aiBtnText.fill = "#83DE44"; onlineBtnText.fill = "#fff"; }; // Start button event startBtn.down = function () { mainMenuOverlay.visible = false; game.removeChild(mainMenuOverlay); game.interactiveChildren = true; resetGame(); }; // Add overlay to game game.addChild(mainMenuOverlay); // --- 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; };
===================================================================
--- original.js
+++ change.js
@@ -1302,10 +1302,11 @@
}
}
function useItem(itemId, isEnemy) {
// Aliases for backward compatibility with old item code
- var playerHealth = player1Health;
- var enemyHealth = player2Health;
+ // Always use player1Health/player2Health for player/enemy, and update them at the end
+ var playerHealth = isEnemy ? player2Health : player1Health;
+ var enemyHealth = isEnemy ? player1Health : player2Health; // enemyHealth is always the OPPONENT of the acting player
// isEnemy: true if AI is using, false/undefined if player
var itemsArr = isEnemy ? player2Items : player1Items;
var healthBar = isEnemy ? player2HealthBar : player1HealthBar;
var healthVar = isEnemy ? "player2Health" : "player1Health";
@@ -3413,14 +3414,14 @@
// --- Enemy AI (MVP: always fires, no items) ---
function enemyTurn() {
if (gameMode !== "ai") return; // Only run AI logic in AI mode
// Defensive: If enemy is about to die, use painkillers if available
- // Ensure enemyHealth is defined as player2Health for this scope
+ // Always use player2Health for enemyHealth
var enemyHealth = player2Health;
for (var i = 0; i < player2Items.length; i++) {
var item = player2Items[i];
if (!item) continue;
- if (item === 'painkillers' && player2Health === 1) {
+ if (item === 'painkillers' && enemyHealth === 1) {
useItem(item, true);
LK.setTimeout(fireRevolver, 1200);
return;
}
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