User prompt
when powerup menu is closed, respawn waves
User prompt
powerup3 should buy a shield
User prompt
add a shiedl to the game. shield will protect the fairy for 1 life
Code edit (1 edits merged)
Please save this source code
User prompt
when powerup3 is selected, add a shield around the fairy. shield will last until it hits an enemy
User prompt
when powerup2 is selected, increase hitpoins of player bullets by 1
User prompt
on game start player should have 1 hit point per bullet
Code edit (1 edits merged)
Please save this source code
User prompt
make sure down even is being watched for powerups
User prompt
console log when powerups are touched
Code edit (2 edits merged)
Please save this source code
User prompt
when player clicks on powerup1 incrase fire rate speed
Code edit (1 edits merged)
Please save this source code
User prompt
move powerup shop 500 pixels to the left
User prompt
still not right. powerup menu should be centered in the screenn
User prompt
powerupshop is still on the right side of the screen. it should be in the center
User prompt
adjust anchor point of powerup menu so that it is centered in the screen
User prompt
fix screengraphics annchor points
User prompt
when powerup is selected close powerup shop
User prompt
Fix powerups not being selected
User prompt
when powerupmenu is up, players should not move
User prompt
Please fix the bug: 'Uncaught TypeError: powerup1.containsPoint is not a function' in or related to this line: 'if (powerup1.containsPoint(localPos) || powerup2.containsPoint(localPos) || powerup3.containsPoint(localPos)) {' Line Number: 323
User prompt
please fix powerup menu
User prompt
Please fix the bug: 'Uncaught TypeError: powerup1.containsPoint is not a function' in or related to this line: 'if (powerup1.containsPoint(localPos) || powerup2.containsPoint(localPos) || powerup3.containsPoint(localPos)) {' Line Number: 323
User prompt
make sure poweups are clickable
/**** * Classes ****/ var Boss = Container.expand(function () { var self = Container.call(this); var bossGraphics = self.attachAsset('boss1', { anchorX: 0.5, anchorY: 0.5 // Removed tint for the boss }); self.speed = 2; self.hitpoints = 1; // High hitpoints for the boss self.update = function () { self.x += Math.sin(LK.ticks / 30) * 5; // Sideways movement self.y = Math.min(self.y + self.speed, 2732 * 0.4); // Move to the top 40% of the screen if (LK.ticks % 30 == 0) { // Shoot bullets every second var newBullet = new BossBullet(); newBullet.x = self.x; newBullet.y = self.y + self.height / 2; bullets.push(newBullet); game.addChild(newBullet); } }; }); var BossBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bossbullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.y += self.speed; }; }); // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -5; // Default bullet speed, can be overridden self.update = function () { self.y += self.speed; }; }); // Diamond class var Diamond = Container.expand(function () { var self = Container.call(this); var diamondGraphics = self.attachAsset('diamond', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 4; self.update = function () { self.y += self.speed; self.rotation += 0.05; // Add rotation animation if (LK.ticks % 120 < 60) { self.scale.x += 0.002; self.scale.y += 0.002; } else { self.scale.x -= 0.002; self.scale.y -= 0.002; } if (self.y > 2732) { self.destroy(); } }; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('block', { anchorX: 0.5, anchorY: 0.5, tint: 0xffffff // Default tint, will be overridden by wave configuration }); self.speed = 3; self.hitpoints = 3; // Add hitpoints to enemies self.update = function () { self.y += self.speed; // Logic to increase and decrease block sizes if (LK.ticks % 120 < 60) { self.scale.x += 0.002; self.scale.y += 0.002; } else { self.scale.x -= 0.002; self.scale.y -= 0.002; } // Create and update hitpoints display if (!self.hitpointsDisplay) { self.hitpointsDisplay = new Text2(self.hitpoints.toString(), { size: 100, fill: "#ffffff", stroke: "#000000", strokeThickness: 5 }); self.hitpointsDisplay.anchor.set(0.5, 0.5); self.hitpointsDisplay.y = 0; self.addChild(self.hitpointsDisplay); } else if (LK.ticks % 10 === 0) { self.hitpointsDisplay.setText(self.hitpoints.toString()); } }; }); var Enemy2 = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy2', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 4; // Different speed for Enemy2 self.hitpoints = 1; // Different hitpoints for Enemy2 self.update = function () { self.y += self.speed; // Logic to increase and decrease size if (LK.ticks % 120 < 60) { self.scale.x += 0.001; self.scale.y += 0.001; } else { self.scale.x -= 0.001; self.scale.y -= 0.001; } self.x += Math.sin(LK.ticks / 30) * 5; // Add sideways movement self.y += Math.sin(LK.ticks / 15) * 2; // Add soft bouncy movement if (self.y > 2732) { self.destroy(); } }; }); //<Assets used in the game will automatically appear here> // Fairy class var Fairy = Container.expand(function () { var self = Container.call(this); var fairyGraphics = self.attachAsset('fairy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.particles = []; self.update = function () { // Particle emitter logic if (LK.ticks % 5 === 0) { var particle = LK.getAsset('fairyemitter', { anchorX: 0.5, anchorY: 0.5, alpha: 1, scaleX: 12, scaleY: 12 }); particle.x = self.x + (self.scale.x === -1 ? 30 : -30); particle.y = self.y + self.height / 2; particle.speedX = (Math.random() - 0.5) * 2; particle.speedY = Math.random() * 2 + 1; // Push particles downwards particle.update = function () { this.x += this.speedX; this.y += this.speedY; this.alpha -= 0.01; if (this.alpha <= 0) { this.destroy(); } }; self.particles.push(particle); game.addChild(particle); } // Update existing particles for (var i = self.particles.length - 1; i >= 0; i--) { self.particles[i].update(); if (self.particles[i].alpha <= 0) { self.particles.splice(i, 1); } } // Fairy movement logic }; }); var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -5; self.update = function () { self.y += self.speed; }; }); // Powerup class var Powerup = Container.expand(function () { var self = Container.call(this); var powerupGraphics = self.attachAsset('powerup', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.update = function () { self.y += self.speed; if (self.y > 2732) { self.destroy(); } }; }); var PowerupMenu = Container.expand(function () { var self = Container.call(this); var screenGraphics = self.attachAsset('menu', { anchorX: 0.5, anchorY: 0.5 }); screenGraphics.width = 1024; // Adjust width to half of the screen width screenGraphics.height = 1366; // Adjust height to half of the screen height screenGraphics.alpha = 0.8; screenGraphics.x = 2048 / 2; screenGraphics.y = 2732 / 2; var title = new Text2('Powerup Shop', { size: 150, fill: "#ffffff", stroke: "#000000", strokeThickness: 5 }); title.anchor.set(0.5, 0.5); title.x = screenGraphics.x; title.y = screenGraphics.y - screenGraphics.height / 2 + 150; self.x = 2048 / 2 - screenGraphics.width / 2 - 500; self.y = 2732 / 2 - screenGraphics.height / 2; self.addChild(title); var powerup1 = LK.getAsset('powerup1', { anchorX: 0.5, anchorY: 0.5 }); powerup1.x = screenGraphics.x - 300; powerup1.y = screenGraphics.y + 100; self.addChild(powerup1); var powerup1DiamondIcon = LK.getAsset('diamond', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 0.5 }); powerup1DiamondIcon.x = powerup1.x; powerup1DiamondIcon.y = powerup1.y + powerup1.height / 2 + 20; self.addChild(powerup1DiamondIcon); var powerup1Cost = new Text2('10', { size: 100, fill: "#ffffff", stroke: "#000000", strokeThickness: 5 }); powerup1Cost.anchor.set(0.5, 0); powerup1Cost.x = powerup1.x; powerup1Cost.y = powerup1DiamondIcon.y + powerup1DiamondIcon.height / 2 + 20; self.addChild(powerup1Cost); var powerup2 = LK.getAsset('powerup2', { anchorX: 0.5, anchorY: 0.5 }); powerup2.x = screenGraphics.x; powerup2.y = screenGraphics.y + 100; self.addChild(powerup2); var powerup2DiamondIcon = LK.getAsset('diamond', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 0.5 }); powerup2DiamondIcon.x = powerup2.x; powerup2DiamondIcon.y = powerup2.y + powerup2.height / 2 + 20; self.addChild(powerup2DiamondIcon); var powerup2Cost = new Text2('20', { size: 100, fill: "#ffffff", stroke: "#000000", strokeThickness: 5 }); powerup2Cost.anchor.set(0.5, 0); powerup2Cost.x = powerup2.x; powerup2Cost.y = powerup2DiamondIcon.y + powerup2DiamondIcon.height / 2 + 20; self.addChild(powerup2Cost); var powerup3 = LK.getAsset('powerup3', { anchorX: 0.5, anchorY: 0.5 }); powerup3.x = screenGraphics.x + 300; powerup3.y = screenGraphics.y + 100; self.addChild(powerup3); var powerup3DiamondIcon = LK.getAsset('diamond', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 0.5 }); powerup3DiamondIcon.x = powerup3.x; powerup3DiamondIcon.y = powerup3.y + powerup3.height / 2 + 20; self.addChild(powerup3DiamondIcon); var powerup3Cost = new Text2('30', { size: 100, fill: "#ffffff", stroke: "#000000", strokeThickness: 5 }); powerup3Cost.anchor.set(0.5, 0); powerup3Cost.x = powerup3.x; powerup3Cost.y = powerup3DiamondIcon.y + powerup3DiamondIcon.height / 2 + 20; self.addChild(powerup3Cost); self.down = function (x, y, obj) { var localPos = self.toLocal(obj.global); if (powerup1.intersects(self.toLocal(obj.global)) || powerup2.intersects(self.toLocal(obj.global)) || powerup3.intersects(self.toLocal(obj.global))) { if (powerup1.intersects(self.toLocal(obj.global)) && diamondCount >= 10) { diamondCount -= 10; diamondCounterTxt.setText(diamondCount); heroFireRate = 15; // Increase fire rate when the first powerup is selected self.destroy(); // Close powerup menu isPowerupScreenActive = false; } else if (powerup2.intersects(self.toLocal(obj.global)) && diamondCount >= 20) { diamondCount -= 20; diamondCounterTxt.setText(diamondCount); // Add action for powerup2 self.destroy(); // Close powerup menu isPowerupScreenActive = false; } else if (powerup3.intersects(self.toLocal(obj.global)) && diamondCount >= 30) { diamondCount -= 30; diamondCounterTxt.setText(diamondCount); // Add action for powerup3 self.destroy(); // Close powerup menu isPowerupScreenActive = false; } else { var messageText = 'I need more shiny things!'; if (powerup1.intersects(self.toLocal(obj.global)) && diamondCount < 10) { messageText = 'I need 10 diamonds for this powerup!'; } else if (powerup2.intersects(self.toLocal(obj.global)) && diamondCount < 20) { messageText = 'I need 20 diamonds for this powerup!'; } else if (powerup3.intersects(self.toLocal(obj.global)) && diamondCount < 30) { messageText = 'I need 30 diamonds for this powerup!'; } var message = new Text2(messageText, { size: 100, fill: "#ff0000", stroke: "#000000", strokeThickness: 5 }); message.anchor.set(0.5, 0.5); message.x = 2048 / 2; message.y = 2732 / 2; game.addChild(message); LK.setTimeout(function () { message.destroy(); }, 2000); } } }; }); // Star class var Star = Container.expand(function () { var self = Container.call(this); var starGraphics = self.attachAsset('star', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.y += self.speed; if (self.y > 2732) { self.y = -5; self.x = Math.random() * 2048; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x800080 //Init game with purple background }); /**** * Game Code ****/ // Initialize variables var fairy; var bullets = []; var enemies = []; var scoreTxt; var score = 0; var dragNode = null; var heroFireRate = 30; // Default fire rate for hero bullets var diamondCount = 100; // Initialize diamond counter with 999 diamonds var diamondCounterTxt; // Declare diamondCounterTxt variable var isFairyHeld = false; // Track if the fairy is being held var isPowerupScreenActive = false; // Track if the powerup screen is active var waveCount = 0; // Track the wave count var waveConfig = [{ enemies: 3, hitpoints: [1], tints: [0xffe066] } /**** , { enemies: 6, hitpoints: [2, 1], tints: [0xcc66ff, 0xffe066] } , { enemies: 9, hitpoints: [3, 2, 1], tints: [0xff6666, 0xcc66ff, 0xffe066] } ****/ // Add more wave configurations as needed ]; // Initialize game elements function initGame() { // Create and position the fairy fairy = game.addChild(new Fairy()); fairy.particles = []; fairy.x = 2048 / 2; fairy.y = 2732 - 400; // Create score text scoreTxt = new Text2('0', { size: 200, fill: "#ffffff", stroke: "#000000", strokeThickness: 5 }); scoreTxt.anchor.set(0.5, 0); // Anchor to the top center scoreTxt.x = 2048 / 2; // Position at the top center of the screen scoreTxt.y = 20; // Position with a margin from the top for (var i = 0; i < 30; i++) { var star = game.addChild(new Star()); star.x = Math.random() * 2048; star.y = Math.random() * 2732; } scoreTxt.anchor.set(0.5, 0); // Create coin counter text game.addChild(scoreTxt); // Create coin counter text var overlay = LK.getAsset('menu', { width: 2048, height: 250, color: 0x000000, alpha: 0.5, anchorX: 0.5, anchorY: 0 }); overlay.x = 2048 / 2; overlay.y = 0; game.addChild(overlay); var diamondCounterContainer = new Container(); var diamondIcon = LK.getAsset('diamond', { anchorX: 1, anchorY: 0, alpha: 0.8, scaleX: 1.4, scaleY: 1.4 }); diamondIcon.x = 2048 - 100; diamondIcon.y = 20; diamondCounterContainer.addChild(diamondIcon); diamondCounterTxt = new Text2('0', { size: 120, fill: "#ffffff", stroke: "#000000", strokeThickness: 5 }); diamondCounterTxt.anchor.set(0.5, 0.5); diamondCounterTxt.x = diamondIcon.x + diamondIcon.width / 2 - 230; diamondCounterTxt.y = diamondIcon.y + diamondIcon.height / 2 + 15; diamondCounterContainer.addChild(diamondCounterTxt); game.addChild(diamondCounterContainer); // Set up game event listeners game.down = function (x, y, obj) { dragNode = fairy; isFairyHeld = true; // Set isFairyHeld to true when the fairy is held }; game.up = function (x, y, obj) { dragNode = null; isFairyHeld = false; // Set isFairyHeld to false when the fairy is released }; game.move = handleMove; // Update game every tick game.update = updateGame; } // Handle move events function handleMove(x, y, obj) { if (dragNode) { // Check if the fairy is moving to the right if (x > dragNode.x) { // Mirror the fairy image dragNode.scale.x = -1; } else { // Reset the fairy image dragNode.scale.x = 1; } // Create a ghost image of the fairy when it moves every other frame if (LK.ticks % 4 === 0) { var ghostFairy = LK.getAsset('fairy', { anchorX: 0.5, anchorY: 0.5, alpha: 0.3 }); ghostFairy.x = dragNode.x; ghostFairy.y = dragNode.y; if (dragNode.parent === game) { game.addChildAt(ghostFairy, game.getChildIndex(dragNode)); } else { game.addChild(ghostFairy); } if (dragNode.scale.x === -1) { ghostFairy.scale.x = -1; } // Remove the ghost image after 0.5 seconds LK.setTimeout(function () { ghostFairy.destroy(); }, 250); } dragNode.x += (x - dragNode.x) * 0.1; if (y > 2732 * 0.6) { dragNode.y += (y - dragNode.y) * 0.1; } else { dragNode.y += (2732 * 0.6 - dragNode.y) * 0.1; } } } // Update game logic function updateGame() { // Update starfield for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i] instanceof Star) { game.children[i].update(); } if (game.children[i] instanceof Diamond && game.children[i].intersects(fairy)) { game.children[i].destroy(); diamondCount++; diamondCounterTxt.setText(diamondCount); } } // Update bullets for (var i = bullets.length - 1; i >= 0; i--) { if (bullets[i] instanceof Bullet) { bullets[i].update(); } bullets[i].update(); if (bullets[i].y < -50) { bullets[i].destroy(); bullets.splice(i, 1); } } for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (enemies[j].y > 2732 + 50) { enemies[j].destroy(); enemies.splice(j, 1); } if (fairy.intersects(enemies[j])) { var fairyX = fairy.x; var fairyY = fairy.y; // Create particle effect for fairy for (var p = 0; p < 10; p++) { var particle = LK.getAsset('star', { anchorX: 0.5, anchorY: 0.5, alpha: 1 }); particle.x = fairyX; particle.y = fairyY; particle.speedX = (Math.random() - 0.5) * 10; particle.speedY = (Math.random() - 0.5) * 10; particle.update = function () { this.x += this.speedX; this.y += this.speedY; this.alpha -= 0.02; if (this.alpha <= 0) { this.destroy(); } }; game.addChild(particle); } LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } for (var k = bullets.length - 1; k >= 0; k--) { if (bullets[k] instanceof HeroBullet && bullets[k].intersects(enemies[j])) { bullets[k].destroy(); bullets.splice(k, 1); enemies[j].hitpoints--; if (enemies[j].hitpoints <= 0) { var enemyX = enemies[j].x; var enemyY = enemies[j].y; // Create particle effect for (var p = 0; p < 20; p++) { var particle = LK.getAsset('star', { anchorX: 0.5, anchorY: 0.5, alpha: 1, scaleX: 2, scaleY: 2, tint: enemies[j].children[0].tint }); particle.x = enemyX; particle.y = enemyY; particle.speedX = (Math.random() - 0.5) * 10; particle.speedY = (Math.random() - 0.5) * 10; particle.update = function () { this.x += this.speedX; this.y += this.speedY; this.alpha -= 0.02; if (this.alpha <= 0) { this.destroy(); } }; game.addChild(particle); } enemies[j].destroy(); if (enemies[j] instanceof Boss) { var powerupMenu = new PowerupMenu(); powerupMenu.x = 2048 / 2 - powerupMenu.width / 2; powerupMenu.y = 2732 / 2 - powerupMenu.height / 2; game.addChild(powerupMenu); isPowerupScreenActive = true; } enemies.splice(j, 1); if (enemies[j]) { score += enemies[j].hitpoints * 10; } scoreTxt.setText(score); var dropChance = Math.random(); if (dropChance < 0.2) { var newDiamond = new Diamond(); newDiamond.x = enemyX; newDiamond.y = enemyY; game.addChild(newDiamond); } else if (dropChance < 0.2) { var newPowerup = new Powerup(); newPowerup.x = enemyX; newPowerup.y = enemyY; game.addChild(newPowerup); } } break; } } } // Check for collisions // Check for coin collection for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i] instanceof Diamond && game.children[i].intersects(fairy)) { game.children[i].destroy(); diamondCount++; diamondCounterTxt.setText('Diamonds: ' + diamondCount); } } for (var k = bullets.length - 1; k >= 0; k--) { for (var l = enemies.length - 1; l >= 0; l--) { if (bullets[k] instanceof HeroBullet && bullets[k].intersects(enemies[l])) { bullets[k].destroy(); bullets.splice(k, 1); enemies[l].hitpoints--; if (enemies[l].hitpoints <= 0) { var enemyX = enemies[l].x; var enemyY = enemies[l].y; enemies[l].destroy(); enemies.splice(l, 1); if (enemies[l]) { score += enemies[l].hitpoints * 10; } scoreTxt.setText(score); // Randomly drop coins or powerups var dropChance = Math.random(); if (dropChance < 0.2) { var newDiamond = new Diamond(); newDiamond.x = enemyX; newDiamond.y = enemyY; game.addChild(newDiamond); } else if (dropChance < 0.2) { var newPowerup = new Powerup(); newPowerup.x = enemyX; newPowerup.y = enemyY; game.addChild(newPowerup); } } break; } } } // Spawn new bullets if (LK.ticks % heroFireRate == 0 && isFairyHeld) { // Only spawn new bullets if the fairy is being held var newBullet = new HeroBullet(); newBullet.x = fairy.x; newBullet.y = fairy.y - fairy.height / 2; bullets.push(newBullet); game.addChild(newBullet); } // Spawn new enemies in a line if (LK.ticks % 600 == 0 && !isPowerupScreenActive) { if (enemies.length === 0) { waveCount++; } if (waveCount <= waveConfig.length && !enemies.some(function (e) { return e instanceof Boss; })) { if (waveCount === waveConfig.length && enemies.length === 0 && !enemies.some(function (e) { return e instanceof Boss; })) { var boss = new Boss(); boss.x = 2048 / 2; boss.y = -boss.height; enemies.push(boss); game.addChild(boss); } var currentWave = waveConfig[waveCount - 1]; var maxEnemiesPerLine = 3; var enemySpacing = 2048 / (maxEnemiesPerLine + 1); // Adjust spacing to center enemies var totalRows = Math.ceil(currentWave.enemies / maxEnemiesPerLine); for (var i = 0; i < currentWave.enemies; i++) { var newBlock = new Enemy(); var row = Math.floor(i / maxEnemiesPerLine); newBlock.hitpoints = currentWave.hitpoints[row] || currentWave.hitpoints[currentWave.hitpoints.length - 1]; newBlock.x = i % maxEnemiesPerLine * enemySpacing + enemySpacing / 2 - newBlock.width / 2; newBlock.y = row * 220 - 50; // Increase row spacing by 20 pixels newBlock.children[0].tint = currentWave.tints[row] || currentWave.tints[currentWave.tints.length - 1]; enemies.push(newBlock); game.addChild(newBlock); } // Spawn Enemy2 after the wave with a delay of 5 seconds LK.setTimeout(function () { var newEnemy2 = new Enemy2(); newEnemy2.x = Math.random() * 2048; newEnemy2.y = -newEnemy2.height; enemies.push(newEnemy2); game.addChild(newEnemy2); }, 5000); // Center the rows of enemies var totalWidth = (Math.min(currentWave.enemies, maxEnemiesPerLine) - 1) * enemySpacing; var offsetX = (2048 - totalWidth) / 2; for (var j = 0; j < enemies.length; j++) { enemies[j].x += offsetX - enemies[j].width / 2; } } } } // Initialize the game initGame();
===================================================================
--- original.js
+++ change.js
@@ -220,9 +220,9 @@
});
title.anchor.set(0.5, 0.5);
title.x = screenGraphics.x;
title.y = screenGraphics.y - screenGraphics.height / 2 + 150;
- self.x = 2048 / 2 - screenGraphics.width / 2;
+ self.x = 2048 / 2 - screenGraphics.width / 2 - 500;
self.y = 2732 / 2 - screenGraphics.height / 2;
self.addChild(title);
var powerup1 = LK.getAsset('powerup1', {
anchorX: 0.5,
8-bit. cartoon. white star.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cartoon 8 bit fairy dust. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon, 8bit, fireball. Black border. Cicular.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cartoon, 8 bit, shield. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8bit, cartoon, axe. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
dark electric ball, 8bit, cartoon.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8bit, cartoon, treasure chest frame. very big empty center. only a fine border of chest. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.