User prompt
wın ekranı şekelerin üzerinde ekranın ortasında konumlancak şekilde ayarla transparan olsun
User prompt
biraz daha transparan yap
User prompt
arka kısımdaki wallpaper görselini transparan yap
User prompt
freesipin satın alma miktarı oynadığımız bet miktarına göre artısın yada azalsın
User prompt
çarpanları % 20 ihtimal ile at 20x çarpan üstü %5 ihtimal ile gelsin
User prompt
wallpaper adındaki görseli sol üst kısma küçük şekilde koy
User prompt
arka plan için görsel alanı aç wallpaper adında görsel ata
User prompt
çarpan veren kısım için görsel ata değiştirebilceğimiz şekilde
User prompt
bahis butonlarını ekranın sol üst kısmına al
User prompt
geri al
User prompt
geri al son yaptıklarını
User prompt
undo
User prompt
undo
User prompt
ekranın sol altına al
User prompt
sol alta al
User prompt
sol alt kısıma al bahis butonlarını ve 10 ve katları şeklinde artıp azalacak şekilde ayarla
User prompt
add 2 buttons that we can increase or decrease the bet amount, we can change the bet amount in the game, increase or decrease it. add visuals to these buttons so we can change them
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of undefined (setting 'fill')' in or related to this line: 'anteBtn.style.fill = anteBet ? '#ffe066' : '#b3e6ff';' Line Number: 250
User prompt
Please fix the bug: 'Timeout.tick error: Cannot set properties of undefined (setting 'fill')' in or related to this line: 'self.txt.style.fill = color || '#fff';' Line Number: 40
Code edit (1 edits merged)
Please save this source code
User prompt
Sweet Bonanza Cascade
Initial prompt
Exploring the Game Mechanics I started my exploration by searching for “Sweet Bonanza game mechanics” and “Sweet Bonanza slot features” to get a grasp of the basic gameplay elements. The focus now is on understanding its basic structure. Exploring the Basic Features Now, I’m looking into “Sweet Bonanza RTP and volatility” to get the statistical context. Next, I’ll dive into “Sweet Bonanza bonus features” and “Sweet Bonanza free spins” to understand the special rounds. I’ll also focus on the “Sweet Bonanza paytable” and “Sweet Bonanza symbols” to learn about the payouts, and the “Sweet Bonanza drop feature” for the basic mechanics. Finally, I’ll gather details about the wagering and maximum win. Sweet Bonanza is a popular online slot game played by Pragmatic Play. The game stands out with its vibrant colors, sweet theme, and exciting game mechanics. Here are the detailed technical specifications of a Sweet Bonanza style slot game: Overview and Theme: Theme: Set in a sweet world of fruit and candy. The background cotton program features progressions such as mountains of sugar, ice cream cones and lollipops. Visual Style: Bright, vibrant and cartoony in style. The symbols and animations incorporate this theme. Sound Design: Cheerful and energetic music is supported by increasing sound developments during winning moments and when special features are triggered. Game Mechanics: Reels and Rows: Features a playing field consisting of 6 reels and 5 rows. Paylines: Instead of traditional paylines, it uses a system similar to "Pay Anywhere" or "Cluster Pays". This means that a win is achieved when a certain number of the same symbol (usually 8 or more) appear in any of the displayed locations. The presence of symbols is unnecessary. Tumble Feature (Tumble Feature / Cascading Reels): This is one of the most obvious signs of Sweet Bonanza. Lose a win, the winning symbols change from the screen. When empty, new symbols fall from above. If a win is made again with these new symbols, the tumble feature continues. The tumbles continue as long as no new winning partnerships are formed, offering the opportunity to instantly win more with a single spin. Ante Bet: Offers players the option to double their chances of entering the Free Spins round, which increases the base bet amount by a certain percentage (usually 25%). While this feature is active, the Free Spins purchase feature is usually disabled. Buy Free Spins: Allows players to trigger the Free Spins round directly for a flexible fee (usually 100 times the total Bitcoin). This feature may not be available in your jurisdiction. Symbols: Low Value Symbols: are various fruits of various varieties (bananas, grapes, watermelon, plums, apples, etc.). High Value Symbols: are various candies of various varieties (blue, green, purple and red heart candies are the most valuable). Scatter Symbol: is the visual lollipop symbol. A certain number of Scatter symbols (usually 4 or more) anywhere on the screen triggers the Free Spins round. More Scatter symbols can award more Free Spins or increase the starting multipliers. Multiplier Symbol (Multiplier Symbol): is a bomb-shaped symbol that appears during the Free Spins round shown. It has a random multiplier value (for example, 2x to 100x). When this symbol appears on the screen, it is recorded at the end of the round to be applied to the total win for that series of tumbles. If there is more than one multiplier symbol, the values are added and applied to the total win. Free Spins Feature: Trigger: Triggered by 4 or more Scatter symbols. Starts with 10 Free Spins. Additional Free Spins: If a certain number of Scatter symbols (usually 3 or more) land during the Free Spins round, the player is awarded additional Free Spins (usually 5). Multiplier Symbols: This is the most exciting part of the Free Spins round. During this round, Multiplier Symbols (color bombs) may land on the reels. When a tumble sequence is completed, the values of all Multiplier Symbols on the screen are recorded. This total multiplier is applied to the total win from that tumble sequence. This creates huge winning potential, especially when multiple high value multipliers are combined. Random Number Generator (RNG): All results are determined by a licensed and regulated Random Number Generator. This ensures that the outcome of the spin is completely random and independent of previous spins. It is the basis of the issue being fair and unpredictable. Return to Player Rate (RTP): In Sweet Bonanza and similar games, the RTP rate varies between 96.48% and 96.51%. This is a theoretical value that shows how much of the money invested can be withdrawn to the desired player over a long period of time. However, this is not a guaranteed result in short-term sessions. RTP, Ante Bet or Free
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ // Floating text for win popups var FloatingText = Container.expand(function () { var self = Container.call(this); self.txt = new Text2('', { size: 90, fill: '#fff', font: "'GillSans-Bold',Impact,'Arial Black',Tahoma" }); self.txt.anchor.set(0.5, 0.5); self.addChild(self.txt); self.show = function (text, x, y, color) { self.txt.setText(text); // Defensive: Only set fill if style exists if (self.txt && self.txt.style) { self.txt.style.fill = color || '#fff'; } self.x = x; self.y = y; self.alpha = 1; tween(self, { y: y - 120, alpha: 0 }, { duration: 900, easing: tween.easeOut, onFinish: function onFinish() { self.visible = false; } }); self.visible = true; }; self.visible = false; return self; }); // Symbol class for grid symbols var _Symbol = Container.expand(function () { var self = Container.call(this); self.type = null; // e.g. 'candy_red', 'scatter_lollipop', 'bomb_multi' self.asset = null; self.row = 0; self.col = 0; self.multiplier = 0; // for bomb_multi only self.setSymbol = function (type, multiplier) { self.type = type; if (self.asset) { self.removeChild(self.asset); } var anchor = 0.5; self.asset = self.attachAsset(type, { anchorX: anchor, anchorY: anchor }); if (type === 'bomb_multi') { self.multiplier = multiplier || 2; if (!self.multiTxt) { self.multiTxt = new Text2('x' + self.multiplier, { size: 60, fill: '#fff' }); self.multiTxt.anchor.set(0.5, 0.5); self.addChild(self.multiTxt); } self.multiTxt.setText('x' + self.multiplier); self.multiTxt.visible = true; } else { if (self.multiTxt) self.multiTxt.visible = false; self.multiplier = 0; } }; self.flash = function () { tween(self.asset, { scaleX: 1.2, scaleY: 1.2 }, { duration: 120, easing: tween.easeOut, onFinish: function onFinish() { tween(self.asset, { scaleX: 1, scaleY: 1 }, { duration: 120, easing: tween.easeIn }); } }); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2d1a3a }); /**** * Game Code ****/ // Candy symbols (6 types), lollipop scatter, multiplier bomb // --- Game constants --- var GRID_COLS = 6; var GRID_ROWS = 5; var SYMBOL_SIZE = 300; // px, including margin var SYMBOL_MARGIN = 20; var SYMBOLS = ['candy_red', 'candy_blue', 'candy_green', 'candy_purple', 'fruit_banana', 'fruit_grape']; var SCATTER = 'scatter_lollipop'; var BOMB = 'bomb_multi'; var BOMB_MULTIPLIERS = [2, 4, 6, 8, 10, 12, 15, 20, 25, 50, 100]; // --- Game state --- var grid = []; // 2D array [row][col] of Symbol var gridContainer = null; var floatingText = null; var spinBtn = null; var buyBtn = null; var anteBtn = null; var balanceTxt = null; var betTxt = null; var winTxt = null; var freeSpinTxt = null; var isSpinning = false; var isTumbling = false; var isFreeSpins = false; var freeSpinsLeft = 0; var totalFreeSpinWin = 0; var bet = 20; var balance = 1000; var anteBet = false; var lastWin = 0; var scatterCount = 0; var bombs = []; var totalBombMultiplier = 0; // --- UI setup --- function setupUI() { // Balance balanceTxt = new Text2('Balance: ' + balance, { size: 70, fill: '#fff' }); balanceTxt.anchor.set(0, 0); LK.gui.top.addChild(balanceTxt); balanceTxt.x = 120; balanceTxt.y = 10; // Bet betTxt = new Text2('Bet: ' + bet, { size: 70, fill: '#fff' }); betTxt.anchor.set(0, 0); LK.gui.top.addChild(betTxt); betTxt.x = 220; betTxt.y = 90; // Bet decrease button (bottom left, vertical layout) var betDecBtn = new Container(); var betDecBg = betDecBtn.attachAsset('bomb_multi', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.25, scaleY: 0.25 }); var betDecTxt = new Text2('-', { size: 80, fill: '#fff' }); betDecTxt.anchor.set(0.5, 0.5); betDecBtn.addChild(betDecTxt); // Place at bottom left, with margin from edge, vertical stack betDecBtn.x = 120; betDecBtn.y = LK.gui.bottom.height - 240; betDecBtn.interactive = true; betDecBtn.buttonMode = true; betDecBtn.down = function (x, y, obj) { if (isSpinning || isTumbling) return; var minBet = 10; if (bet > minBet) { bet -= 10; updateBalance(); } }; // Bet increase button (bottom left, above dec) var betIncBtn = new Container(); var betIncBg = betIncBtn.attachAsset('bomb_multi', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.25, scaleY: 0.25 }); var betIncTxt = new Text2('+', { size: 80, fill: '#fff' }); betIncTxt.anchor.set(0.5, 0.5); betIncBtn.addChild(betIncTxt); // Place directly above dec button, with same x, y offset by -120 betIncBtn.x = 120; betIncBtn.y = LK.gui.bottom.height - 360; betIncBtn.interactive = true; betIncBtn.buttonMode = true; betIncBtn.down = function (x, y, obj) { if (isSpinning || isTumbling) return; var maxBet = 1000; if (bet < maxBet && balance >= bet + 10) { bet += 10; updateBalance(); } }; // Add to bottom left GUI LK.gui.bottom.addChild(betDecBtn); LK.gui.bottom.addChild(betIncBtn); // Win winTxt = new Text2('', { size: 90, fill: '#ffe066' }); winTxt.anchor.set(0.5, 0); LK.gui.top.addChild(winTxt); winTxt.x = LK.gui.top.width / 2; winTxt.y = 10; // Free Spin freeSpinTxt = new Text2('', { size: 80, fill: '#ffb3e6' }); freeSpinTxt.anchor.set(0.5, 0); LK.gui.top.addChild(freeSpinTxt); freeSpinTxt.x = LK.gui.top.width / 2; freeSpinTxt.y = 110; // Spin button spinBtn = new Text2('SPIN', { size: 120, fill: '#fff', font: "'GillSans-Bold',Impact,'Arial Black',Tahoma" }); spinBtn.anchor.set(0.5, 0.5); LK.gui.bottom.addChild(spinBtn); spinBtn.x = LK.gui.bottom.width / 2; spinBtn.y = -180; spinBtn.interactive = true; spinBtn.buttonMode = true; spinBtn.down = function (x, y, obj) { if (!isSpinning && !isTumbling) { startSpin(); } }; // Buy Free Spins button buyBtn = new Text2('BUY 10 FS', { size: 70, fill: '#ffb3e6' }); buyBtn.anchor.set(0.5, 0.5); LK.gui.bottom.addChild(buyBtn); buyBtn.x = LK.gui.bottom.width / 2 + 350; buyBtn.y = -120; buyBtn.interactive = true; buyBtn.buttonMode = true; buyBtn.down = function (x, y, obj) { if (!isSpinning && !isTumbling && balance >= bet * 100) { balance -= bet * 100; updateBalance(); triggerFreeSpins(10); } }; // Ante Bet button anteBtn = new Text2('ANTE OFF', { size: 70, fill: '#b3e6ff' }); anteBtn.anchor.set(0.5, 0.5); LK.gui.bottom.addChild(anteBtn); anteBtn.x = LK.gui.bottom.width / 2 - 350; anteBtn.y = -120; anteBtn.interactive = true; anteBtn.buttonMode = true; anteBtn.down = function (x, y, obj) { anteBet = !anteBet; anteBtn.setText(anteBet ? 'ANTE ON' : 'ANTE OFF'); // Defensive: Only set fill if style exists if (anteBtn && anteBtn.style) { anteBtn.style.fill = anteBet ? '#ffe066' : '#b3e6ff'; } }; // Floating win text floatingText = new FloatingText(); game.addChild(floatingText); } // --- Grid setup --- function setupGrid() { if (gridContainer) { game.removeChild(gridContainer); } gridContainer = new Container(); game.addChild(gridContainer); // Center grid var gridW = GRID_COLS * SYMBOL_SIZE + (GRID_COLS - 1) * SYMBOL_MARGIN; var gridH = GRID_ROWS * SYMBOL_SIZE + (GRID_ROWS - 1) * SYMBOL_MARGIN; gridContainer.x = (2048 - gridW) / 2 + SYMBOL_SIZE / 2; gridContainer.y = (2732 - gridH) / 2 + SYMBOL_SIZE / 2 + 60; // Create grid grid = []; for (var r = 0; r < GRID_ROWS; r++) { grid[r] = []; for (var c = 0; c < GRID_COLS; c++) { var sym = new _Symbol(); sym.row = r; sym.col = c; sym.x = c * (SYMBOL_SIZE + SYMBOL_MARGIN); sym.y = r * (SYMBOL_SIZE + SYMBOL_MARGIN); gridContainer.addChild(sym); grid[r][c] = sym; } } } // --- Utility: random symbol --- function getRandomSymbol(scatterChance, bombChance) { var roll = Math.random(); if (bombChance && roll < bombChance) { var multi = BOMB_MULTIPLIERS[Math.floor(Math.random() * BOMB_MULTIPLIERS.length)]; return { type: BOMB, multiplier: multi }; } if (scatterChance && roll < scatterChance) { return { type: SCATTER }; } var idx = Math.floor(Math.random() * SYMBOLS.length); return { type: SYMBOLS[idx] }; } // --- Utility: count symbol types --- function countSymbols(flatGrid) { var counts = {}; for (var i = 0; i < flatGrid.length; i++) { var t = flatGrid[i].type; if (!counts[t]) counts[t] = 0; counts[t]++; } return counts; } // --- Utility: flatten grid --- function flattenGrid() { var arr = []; for (var r = 0; r < GRID_ROWS; r++) { for (var c = 0; c < GRID_COLS; c++) { arr.push(grid[r][c]); } } return arr; } // --- Utility: find all matching symbols (8+) --- function findMatches() { var flat = flattenGrid(); var counts = countSymbols(flat); var matches = []; for (var t in counts) { if (t === SCATTER || t === BOMB) continue; if (counts[t] >= 8) { // collect all symbols of this type for (var i = 0; i < flat.length; i++) { if (flat[i].type === t) matches.push(flat[i]); } } } return matches; } // --- Utility: find scatters --- function findScatters() { var flat = flattenGrid(); var scatters = []; for (var i = 0; i < flat.length; i++) { if (flat[i].type === SCATTER) scatters.push(flat[i]); } return scatters; } // --- Utility: find bombs --- function findBombs() { var flat = flattenGrid(); var bombs = []; for (var i = 0; i < flat.length; i++) { if (flat[i].type === BOMB) bombs.push(flat[i]); } return bombs; } // --- Utility: payout table --- function getPayout(type, count) { // Example payout table (per symbol, per count) // (values are for MVP, can be tuned) var table = { 'candy_red': [0, 0, 0, 0, 0, 0, 0, 0, 10, 25, 50, 100, 200, 400, 800, 1600, 3200, 6400, 12800, 25600, 51200], 'candy_blue': [0, 0, 0, 0, 0, 0, 0, 0, 8, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120, 10240, 20480, 40960], 'candy_green': [0, 0, 0, 0, 0, 0, 0, 0, 6, 15, 30, 60, 120, 240, 480, 960, 1920, 3840, 7680, 15360, 30720], 'candy_purple': [0, 0, 0, 0, 0, 0, 0, 0, 5, 12, 24, 48, 96, 192, 384, 768, 1536, 3072, 6144, 12288, 24576], 'fruit_banana': [0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120, 10240, 20480], 'fruit_grape': [0, 0, 0, 0, 0, 0, 0, 0, 3, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384] }; if (!table[type]) return 0; if (count >= table[type].length) count = table[type].length - 1; return table[type][count]; } // --- Utility: update balance display --- function updateBalance() { balanceTxt.setText('Balance: ' + balance); betTxt.setText('Bet: ' + bet * (anteBet ? 1.25 : 1)); } // --- Utility: update win display --- function updateWin(win) { if (win > 0) { winTxt.setText('WIN: ' + win); } else { winTxt.setText(''); } } // --- Utility: update free spin display --- function updateFreeSpinTxt() { if (isFreeSpins) { freeSpinTxt.setText('FREE SPINS: ' + freeSpinsLeft); } else { freeSpinTxt.setText(''); } } // --- Start a spin --- function startSpin() { if (isSpinning || isTumbling) return; if (!isFreeSpins && balance < bet * (anteBet ? 1.25 : 1)) return; isSpinning = true; updateWin(0); lastWin = 0; scatterCount = 0; bombs = []; totalBombMultiplier = 0; if (!isFreeSpins) { balance -= bet * (anteBet ? 1.25 : 1); updateBalance(); } LK.getSound('spin').play(); // Fill grid with new random symbols for (var r = 0; r < GRID_ROWS; r++) { for (var c = 0; c < GRID_COLS; c++) { var scatterChance = isFreeSpins ? 0 : anteBet ? 0.045 : 0.03; // ~3% or 4.5% chance per cell var bombChance = isFreeSpins ? 0.08 : 0; var sym = getRandomSymbol(scatterChance, bombChance); grid[r][c].setSymbol(sym.type, sym.multiplier); grid[r][c].alpha = 1; grid[r][c].visible = true; } } // Animate grid in for (var r = 0; r < GRID_ROWS; r++) { for (var c = 0; c < GRID_COLS; c++) { grid[r][c].y = r * (SYMBOL_SIZE + SYMBOL_MARGIN) - 400; tween(grid[r][c], { y: r * (SYMBOL_SIZE + SYMBOL_MARGIN) }, { duration: 220 + Math.random() * 120, easing: tween.bounceOut }); } } LK.setTimeout(function () { isSpinning = false; checkWinCascade(); }, 420); } // --- Check for wins and cascade --- function checkWinCascade() { if (isSpinning || isTumbling) return; var matches = findMatches(); var scatters = findScatters(); var bombsHere = findBombs(); // Handle scatters if (!isFreeSpins && scatters.length >= 4) { triggerFreeSpins(10); LK.getSound('freespin').play(); } // Handle bombs (only in free spins) if (isFreeSpins && bombsHere.length > 0) { for (var i = 0; i < bombsHere.length; i++) { bombs.push(bombsHere[i]); totalBombMultiplier += bombsHere[i].multiplier; LK.getSound('bomb').play(); bombsHere[i].flash(); } } if (matches.length > 0) { isTumbling = true; LK.getSound('win').play(); // Flash and float win var matchType = matches[0].type; var payout = getPayout(matchType, matches.length); var winAmount = payout * bet / 20; lastWin += winAmount; // Show floating text at center of grid var gridW = GRID_COLS * SYMBOL_SIZE + (GRID_COLS - 1) * SYMBOL_MARGIN; var gridH = GRID_ROWS * SYMBOL_SIZE + (GRID_ROWS - 1) * SYMBOL_MARGIN; floatingText.show('+' + winAmount, gridContainer.x + gridW / 2 - SYMBOL_SIZE / 2, gridContainer.y + gridH / 2 - SYMBOL_SIZE / 2, '#ffe066'); // Animate matched symbols out for (var i = 0; i < matches.length; i++) { matches[i].flash(); tween(matches[i], { alpha: 0 }, { duration: 180, easing: tween.linear }); } // After animation, remove matched symbols and tumble LK.setTimeout(function () { for (var i = 0; i < matches.length; i++) { matches[i].visible = false; } tumbleSymbols(function () { // After tumble, check for more matches isTumbling = false; checkWinCascade(); }); }, 220); updateWin(lastWin); } else { // No more matches, finish spin if (lastWin > 0) { // Apply bomb multipliers (free spins only) if (isFreeSpins && totalBombMultiplier > 0) { lastWin = Math.floor(lastWin * (1 + totalBombMultiplier / 100)); floatingText.show('x' + (1 + totalBombMultiplier / 100), gridContainer.x + GRID_COLS * SYMBOL_SIZE / 2, gridContainer.y + GRID_ROWS * SYMBOL_SIZE / 2, '#ffb3e6'); LK.getSound('bomb').play(); } balance += lastWin; updateBalance(); updateWin(lastWin); if (isFreeSpins) { totalFreeSpinWin += lastWin; } } if (isFreeSpins) { freeSpinsLeft--; updateFreeSpinTxt(); if (freeSpinsLeft > 0) { LK.setTimeout(function () { startSpin(); }, 900); } else { // End free spins isFreeSpins = false; updateFreeSpinTxt(); if (totalFreeSpinWin > 0) { floatingText.show('FS WIN: ' + totalFreeSpinWin, gridContainer.x + GRID_COLS * SYMBOL_SIZE / 2, gridContainer.y + GRID_ROWS * SYMBOL_SIZE / 2, '#ffe066'); } } } } } // --- Tumble (cascade) symbols --- function tumbleSymbols(onFinish) { LK.getSound('tumble').play(); // For each column, move down visible symbols to fill gaps, then add new symbols at top for (var c = 0; c < GRID_COLS; c++) { var colSyms = []; for (var r = 0; r < GRID_ROWS; r++) { if (grid[r][c].visible) colSyms.push(grid[r][c]); } // Fill from bottom up for (var r = GRID_ROWS - 1; r >= 0; r--) { if (colSyms.length > 0) { var sym = colSyms.pop(); grid[r][c].setSymbol(sym.type, sym.multiplier); grid[r][c].visible = true; grid[r][c].alpha = 1; } else { // New symbol var scatterChance = isFreeSpins ? 0 : anteBet ? 0.045 : 0.03; var bombChance = isFreeSpins ? 0.08 : 0; var symData = getRandomSymbol(scatterChance, bombChance); grid[r][c].setSymbol(symData.type, symData.multiplier); grid[r][c].alpha = 0; grid[r][c].visible = true; tween(grid[r][c], { alpha: 1 }, { duration: 180, easing: tween.linear }); } } } LK.setTimeout(function () { if (onFinish) onFinish(); }, 220); } // --- Trigger free spins --- function triggerFreeSpins(count) { isFreeSpins = true; freeSpinsLeft = count; totalFreeSpinWin = 0; updateFreeSpinTxt(); LK.getSound('freespin').play(); LK.setTimeout(function () { startSpin(); }, 600); } // --- Game update loop (not used for logic, but can be used for future animations) --- game.update = function () { // No per-frame logic needed for MVP }; // --- Game start --- setupUI(); setupGrid(); updateBalance(); updateWin(0); updateFreeSpinTxt(); LK.playMusic('bgm', { fade: { start: 0, end: 1, duration: 1200 } }); // --- Touch anywhere on grid to spin (for mobile) --- game.down = function (x, y, obj) { if (!isSpinning && !isTumbling) { startSpin(); } };
===================================================================
--- original.js
+++ change.js
@@ -175,9 +175,9 @@
betDecTxt.anchor.set(0.5, 0.5);
betDecBtn.addChild(betDecTxt);
// Place at bottom left, with margin from edge, vertical stack
betDecBtn.x = 120;
- betDecBtn.y = -120;
+ betDecBtn.y = LK.gui.bottom.height - 240;
betDecBtn.interactive = true;
betDecBtn.buttonMode = true;
betDecBtn.down = function (x, y, obj) {
if (isSpinning || isTumbling) return;
@@ -202,9 +202,9 @@
betIncTxt.anchor.set(0.5, 0.5);
betIncBtn.addChild(betIncTxt);
// Place directly above dec button, with same x, y offset by -120
betIncBtn.x = 120;
- betIncBtn.y = -240;
+ betIncBtn.y = LK.gui.bottom.height - 360;
betIncBtn.interactive = true;
betIncBtn.buttonMode = true;
betIncBtn.down = function (x, y, obj) {
if (isSpinning || isTumbling) return;
scatter_lollipop. In-Game asset. 2d. High contrast. No shadows
fruit_grape. In-Game asset. 2d. High contrast. No shadows
fruit_banana. In-Game asset. 2d. High contrast. No shadows
candy_red. In-Game asset. 2d. High contrast. No shadows
candy_purple. In-Game asset. 2d. High contrast. No shadows
candy_green. In-Game asset. 2d. High contrast. No shadows
candy_blue. In-Game asset. 2d. High contrast. No shadows
bomb_multi. In-Game asset. 2d. High contrast. No shadows
"Meyve Ul Cima" text logo. In-Game asset. 2d. High contrast. No shadows