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