User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'undefined')' in this line: 'if (this.enemyCount < this.waveEnemyCount[this.waveIndex]) {' Line Number: 104
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'undefined')' in this line: 'if (self.enemyCount < self.waveEnemyCount[self.waveIndex]) {' Line Number: 104
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'undefined')' in this line: 'if (this.enemyCount < this.waveEnemyCount[this.waveIndex]) {' Line Number: 104
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'undefined')' in this line: 'if (self.enemyCount < self.waveEnemyCount[self.waveIndex]) {' Line Number: 104
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'undefined')' in this line: 'if (this.enemyCount < this.waveEnemyCount[this.waveIndex]) {' Line Number: 104
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'undefined')' in this line: 'if (self.enemyCount < self.waveEnemyCount[self.waveIndex]) {' Line Number: 104
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'undefined')' in this line: 'if (this.enemyCount < this.waveEnemyCount[this.waveIndex]) {' Line Number: 104
User prompt
Fix Bug: 'ReferenceError: enemyCount is not defined' in this line: 'if (enemyCount < waveEnemyCount[waveIndex]) {' Line Number: 104
User prompt
Fix Bug: 'ReferenceError: enemyCount is not defined' in this line: 'if (enemyCount < waveEnemyCount[waveIndex]) {' Line Number: 104
User prompt
Fix Bug: 'Uncaught ReferenceError: BossType1 is not defined' in this line: 'var waveBoss = [BossType1, BossType2, BossType3];' Line Number: 117
User prompt
add logic to spawn enemies in waves and include a boss in the end of every wave
User prompt
spawn less clouds
User prompt
Fix Bug: 'Uncaught TypeError: Graphics is not a constructor' in this line: 'var dimOverlay = new Graphics();' Line Number: 37
User prompt
dim bottom half of hero
User prompt
make trail fliker constantly
Code edit (5 edits merged)
Please save this source code
User prompt
move trail sideways in the same position
Code edit (1 edits merged)
Please save this source code
User prompt
move trail 20 pixels down
User prompt
move trail 30 pixels left
User prompt
move trail 10 pixels right
User prompt
move trail 10 pixels down
User prompt
move trail 50 pixels to the righ
User prompt
move trail 50 pixels up
User prompt
rotate trail asset 45 degrees
var Cloud = Container.expand(function () {
var self = Container.call(this);
var trail = LK.getAsset('trail', 'Trail Graphics', 0.5, 0.5);
var cloudGraphics = self.createAsset('cloud', 'Cloud Graphics', 0.5, 0.5);
self.speedY = 1;
self.move = function () {
var cloudSpeed = 3.5;
self.y += cloudSpeed;
if (self.y > 2732) {
self.y = -cloudGraphics.height;
}
};
});
var HeroBullet = Container.expand(function (hero) {
var self = Container.call(this);
var bulletGraphics = self.createAsset('heroBullet', 'Hero Bullet Graphics', .5, .5);
self.speed = -1.5;
self.damage = 1;
self.move = function () {
self.x += self.speedX * self.scale.x * self.scale.x;
self.y += self.speedY * self.scale.y * self.scale.y;
self.rotation = hero.rotation + Math.PI / 2;
self.damage = self.scale.x * self.scale.y;
};
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.createAsset('enemyBullet', 'Enemy Bullet Graphics', .5, .5);
self.speed = 3;
self.move = function () {
self.y += self.speed;
};
});
var Hero = Container.expand(function () {
var self = Container.call(this);
var heroGraphics = self.createAsset('hero', 'Hero character', .5, .5);
var trail = self.createAsset('trail', 'Trail Graphics', 1, 0.5);
trail.rotation = Math.PI / 4;
trail.y = heroGraphics.height / 2 - 70;
trail.x = -heroGraphics.width / 2 - 50;
self.movementDirection = 1;
self.movementSpeed = 0.5;
self.movementRange = 50;
self.originalX = 2048 / 2;
self.x = self.originalX;
self.updateMovement = function () {
self.x += self.movementDirection * self.movementSpeed;
if (self.x < self.originalX - self.movementRange || self.x > self.originalX + self.movementRange) {
self.movementDirection *= -1;
}
};
});
var Enemy = Container.expand(function (hero) {
var self = Container.call(this);
var enemyGraphics = self.createAsset('enemy', 'Enemy character', .5, .5);
self.speedY = 2;
self.hero = hero;
self.lifebar = self.createAsset('lifebar', 'Enemy Lifebar', .5, 0);
self.lifebar.y = -self.lifebar.height - 100;
self.life = 100;
self.move = function () {
var dx = this.hero.x - this.x;
var dy = this.hero.y - this.y;
var angle = Math.atan2(dy, dx);
var speedMultiplier = 1 + Math.floor(LK.ticks / 7200);
self.x += (Math.cos(angle) * self.speedY + Math.sin(LK.ticks / 60) * 5) * speedMultiplier;
self.y += Math.sin(angle) * self.speedY * speedMultiplier;
self.lifebar.scale.x = self.life / 100;
};
});
var Background = Container.expand(function () {
var self = Container.call(this);
var bg1 = self.createAsset('background', 'Game Background 1', 0, 0);
var bg2 = self.createAsset('background', 'Game Background 2', 0, 0);
bg1.width = bg2.width = 2048;
bg1.height = bg2.height = 2732;
bg2.y = -2732;
self.addChild(bg1);
self.addChild(bg2);
self.move = function () {
bg1.y += 1;
bg2.y += 1;
if (bg1.y >= 2732) bg1.y = -2732;
if (bg2.y >= 2732) bg2.y = -2732;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
var enemies = [];
var particles = [];
var background = self.addChild(new Background());
background.alpha = 0.3;
self.spawnEnemy = function () {
var enemy = new Enemy(hero);
enemy.x = Math.random() * 2048;
enemy.y = -enemy.height;
enemies.push(enemy);
self.addChild(enemy);
};
var enemySpawnTicker = 0;
LK.on('tick', function () {
var spawnRate = Math.max(30, 120 - Math.floor(LK.ticks / 3600));
if (enemySpawnTicker++ % spawnRate === 0) {
self.spawnEnemy();
}
});
stage.on('up', function (obj) {
if (currentBullet) {
var pos = obj.event.getLocalPosition(self);
var dx = pos.x - hero.x;
var dy = pos.y - hero.y;
var angle = Math.atan2(dy, dx);
currentBullet.speedX = Math.cos(angle) * 15;
currentBullet.speedY = Math.sin(angle) * 15;
hero.rotation = angle;
heroBullets.push(currentBullet);
currentBullet = null;
}
});
LK.on('tick', function () {
hero.updateMovement();
background.move();
if (currentBullet) {
var holdDuration = LK.ticks - holdTime;
var sizeMultiplier = Math.max(1, 1 + Math.abs(Math.sin(holdDuration / 60)) * 3);
currentBullet.scale.x = sizeMultiplier;
currentBullet.scale.y = sizeMultiplier;
currentBullet.rotation = hero.rotation;
}
});
var currentBullet = null;
var holdTime = 0;
var hero;
hero = self.addChild(new Hero());
hero.rotation = -Math.PI / 2;
stage.on('down', function (obj) {
var pos = obj.event.getLocalPosition(self);
var dx = pos.x - hero.x;
var dy = pos.y - hero.y;
var angle = Math.atan2(dy, dx);
hero.rotation = angle;
currentBullet = new HeroBullet(hero);
currentBullet.x = hero.x;
currentBullet.y = hero.y - hero.height / 2 - currentBullet.height / 2 - 10;
currentBullet.rotation = hero.rotation;
self.addChild(currentBullet);
holdTime = LK.ticks;
});
stage.on('move', function (obj) {
var pos = obj.event.getLocalPosition(self);
var dx = pos.x - hero.x;
var dy = pos.y - hero.y;
var angle = Math.atan2(dy, dx);
hero.rotation = angle;
});
var enemies = [];
var heroBullets = [];
var enemyBullets = [];
var clouds = [];
var particles = [];
for (var i = 0; i < 5; i++) {
var cloud = new Cloud();
cloud.alpha = 0.49;
cloud.x = Math.random() * 2048;
cloud.y = Math.random() * -2732;
clouds.push(cloud);
self.addChildAt(cloud, 1);
}
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff",
dropShadow: true,
dropShadowColor: "#000000",
dropShadowBlur: 4,
dropShadowAngle: Math.PI / 6,
dropShadowDistance: 6
});
LK.gui.topCenter.addChild(scoreTxt);
var isGameOver = false;
hero.x = 2048 / 2;
hero.y = 2732 - 280;
LK.setTimeout(function () {
var startPosition = hero.y;
var endPosition = startPosition - 500;
var duration = 120;
var step = (startPosition - endPosition) / duration;
var currentStep = 0;
var moveHero = function () {
if (currentStep < duration) {
hero.y -= step;
currentStep++;
} else if (currentStep < duration * 2) {
hero.y += step;
currentStep++;
} else {
hero.y = startPosition;
LK.clearInterval(heroMoveInterval);
}
};
var heroMoveInterval = LK.setInterval(moveHero, 1000 / 60);
}, 0);
LK.on('tick', function () {
for (var i = 0; i < heroBullets.length; i++) {
if (heroBullets[i]) heroBullets[i].move();
for (var j = 0; j < enemies.length; j++) {
if (heroBullets[i] && heroBullets[i].intersects(enemies[j])) {
enemies[j].life -= heroBullets[i].damage * 10;
if (enemies[j].life <= 0) {
var scoreIncrement = 10 + Math.floor(LK.ticks / 3600);
LK.setScore(LK.getScore() + scoreIncrement);
scoreTxt.setText(LK.getScore().toString());
enemies[j].destroy();
enemies.splice(j, 1);
}
heroBullets[i].destroy();
heroBullets.splice(i, 1);
break;
}
}
if (heroBullets[i] && heroBullets[i].y < -50) {
heroBullets[i].destroy();
heroBullets.splice(i, 1);
i--;
i--;
}
}
for (var i = 0; i < enemyBullets.length; i++) {
enemyBullets[i].move();
if (enemyBullets[i].y > 2732 + 50) {
enemyBullets[i].destroy();
enemyBullets.splice(i, 1);
}
}
for (var i = 0; i < enemies.length; i++) {
if (enemies[i].intersects(hero)) {
isGameOver = true;
break;
}
}
for (var i = 0; i < enemies.length; i++) {
enemies[i].move();
if (enemies[i].y > 2732) {
enemies[i].destroy();
enemies.splice(i, 1);
i--;
}
}
clouds.forEach(function (cloud) {
cloud.move();
});
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
});
});
Goku arms doing kamehameha. seen from above. 8-bit. Cartoon. In game asset. No shadow Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit. Cartoon. Orange energy ball. . In game asset. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
rotate image 45 degrees
8-bit. cartoon. white energy ball. gradieint. transparent. in game asset. flicker. shoot. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit. cartoon. front view. flying final boss. white. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.