User prompt
make sure var bullet is visible
User prompt
Fix Bug: 'Timeout.tick error: bullet is not defined' in this line: 'self.addChild(bullet);' Line Number: 398
User prompt
Fix Bug: 'Timeout.tick error: bullet is not defined' in this line: 'self.addChild(bullet);' Line Number: 396
User prompt
Fix Bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'x')' in this line: 'var santaX = self.santa.x;' Line Number: 266
User prompt
when the game starts create 3 elfbullets on screen
User prompt
Fix Bug: 'Timeout.tick error: bullet is not defined' in this line: 'self.addChild(bullet);' Line Number: 396
User prompt
elfbullets are being created incorrectly because i dont see them
User prompt
Check for intersection between ElfBullet and Santa when the barn is down and set isGameOver to true
User prompt
when an elfbullet intersects with santa and the barn is up isgameover
User prompt
fix code to make elfbullets are visible
User prompt
elfbullets are not being instantiated correctly because they are currently not visible on the playspace fix it
User prompt
the elfbullet script is not working correctly, they are not visible on screen
User prompt
elfbullets should be visible in theplayspace, they seem to be hidden or not instantiated correctly
User prompt
elf bullets should travel really slowly towards santa so that the player can see them
User prompt
elf bullets should travel slowly towards santa not instantly
User prompt
where are the elfbullets?? i don't see them
User prompt
Fix Bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'x')' in this line: 'var bullet = new ElfBullet(self.x, bulletStartY, gameInstance.santa.x, gameInstance.santa.y, gameInstance);' Line Number: 77
User prompt
when a badelf is instantiated, also instantiate a elfbullet above it then make it travel towards santas position
User prompt
Fix Bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'x')' in this line: 'var bullet = new ElfBullet(badElf.x, bulletStartY, self.santa.x, self.santa.y, self);' Line Number: 390
User prompt
Fix Bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'x')' in this line: 'var bullet = new ElfBullet(badElf.x, bulletStartY, self.santa.x, self.santa.y, self);' Line Number: 389
User prompt
Fix Bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'x')' in this line: 'var bullet = new ElfBullet(badElf.x, bulletStartY, self.santa.x, self.santa.y, self);' Line Number: 388
User prompt
Fix Bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'x')' in this line: 'var bullet = new ElfBullet(badElf.x, bulletStartY, self.santa.x, self.santa.y, self);' Line Number: 387
User prompt
Fix Bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'x')' in this line: 'var bullet = new ElfBullet(badElf.x, bulletStartY, self.santa.x, self.santa.y, self);' Line Number: 386
User prompt
Fix Bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'x')' in this line: 'var bullet = new ElfBullet(badElf.x, bulletStartY, self.santa.x, self.santa.y, self);' Line Number: 385
User prompt
when a badelf is instantiated, also instantiate a badelf bullet above it then make it travel towards santas position
var Reindeer = Container.expand(function (gameInstance) {
var self = Container.call(this);
self.fadeOut = function () {
if (self.alpha > 0) {
self.alpha -= 0.01;
} else {
self.gameInstance.respawnReindeer(self);
}
};
self.gameInstance = gameInstance;
var reindeerGraphics = self.createAsset('reindeer', 'Reindeer', 0.5, 0.5);
self.arcAngle = 0;
self.arcDirection = 1;
self.arcRadius = 300;
self.arcSpeed = 0.01;
self.moveInArc = function () {
self.arcAngle += self.arcSpeed * self.arcDirection;
self.x = 2048 / 2 + Math.cos(self.arcAngle) * self.arcRadius;
self.y = 2732 / 4 + Math.sin(self.arcAngle) * self.arcRadius * 0.75;
self.arcAngle = (self.arcAngle + self.arcSpeed * self.arcDirection) % (Math.PI * 2);
};
self.on('down', function (obj) {
LK.setScore(LK.getScore() + 25);
LK.gui.topCenter.children[0].setText(LK.getScore().toString());
var greatText = new Text2('Great!', {
size: 40,
fill: '#ffffff',
font: 'Arial Black'
});
greatText.x = self.x;
greatText.y = self.y;
greatText.anchor.set(0.5, 0.5);
self.parent.addChild(greatText);
LK.setTimeout(function () {
greatText.destroy();
}, 1000);
self.parent.respawnReindeer();
self.destroy();
});
});
var RandomText = Container.expand(function () {
var self = Container.call(this);
self.gameInstance = null;
self.display = function (x, y, messages) {
var message = messages[Math.floor(Math.random() * messages.length)];
var text = new Text2(message, {
size: 48,
fill: '#ff0000',
font: 'Arial Black'
});
text.x = x - 400;
text.y = y + 175;
text.anchor.set(0.5, 0.5);
self.addChild(text);
LK.setTimeout(function () {
text.destroy();
self.parent.randomTextActive = false;
}, 3000);
};
});
var BadElf = Container.expand(function (spawnX, spawnY, gameInstance) {
var self = Container.call(this);
self.gameInstance = gameInstance;
self.shoot = function () {
if (self.gameInstance && self.gameInstance.santa) {
if (self.visible) {
var bullet = new ElfBullet(self.x, self.y, self.gameInstance.santa.x, self.gameInstance.santa.y, self.gameInstance);
self.gameInstance.addChild(bullet);
}
}
};
LK.setInterval(self.shoot, Math.random() * (5000 - 2000) + 2000);
var badElfGraphics = self.createAsset('badElf', 'Mischievous Elf', 0.5, 0.5);
self.x = spawnX;
self.y = spawnY;
self.on('down', function (obj) {
LK.setScore(LK.getScore() + 3);
LK.gui.topCenter.children[0].setText(LK.getScore().toString());
self.parent.activeBadElves--;
self.destroy();
});
});
var Mistletoe = Container.expand(function (gameInstance) {
var self = Container.call(this);
self.gameInstance = gameInstance;
var mistletoeGraphics = self.createAsset('mistletoe', 'Mistletoe', 0.5, 0.5);
var bobbingRange = 10;
var bobbingSpeed = 0.2;
var bobbingPosition = 0;
self.bob = function () {
bobbingPosition += bobbingSpeed;
self.y += Math.sin(bobbingPosition) * bobbingRange;
};
self.on('down', function (obj) {
LK.setScore(LK.getScore() + 10);
LK.gui.topCenter.children[0].setText(LK.getScore().toString());
self.parent.respawnMistletoe(self);
});
});
var Snowflake = Container.expand(function () {
var self = Container.call(this);
var sizeFactor = Math.random() * 0.5 + 0.5;
var snowflakeGraphics = self.createAsset('snowflake', 'Snowflake', 0.5, 0.5);
snowflakeGraphics.scale.set(sizeFactor);
self.speed = -3 * sizeFactor;
self.move = function () {
self.x += self.speed;
self.y += 0.5;
self.scale.x -= 0.003;
self.scale.y -= 0.003;
if (self.scale.x <= 0 || self.scale.y <= 0) {
self.destroy();
}
};
});
var ElfBullet = Container.expand(function (startX, startY, targetX, targetY, gameInstance) {
var self = Container.call(this);
var bulletGraphics = self.createAsset('elfBullet', 'Elf Bullet', 0.5, 0.5);
bulletGraphics.visible = true;
self.addChild(bulletGraphics);
self.gameInstance = gameInstance;
var bulletGraphics = self.createAsset('elfBullet', 'Elf Bullet', 0.5, 0.5);
bulletGraphics.anchor.set(0.5, 0.5);
self.x = startX;
self.y = startY;
var dx = targetX - self.x;
var dy = targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
self.speedX = dx / distance * 5;
self.speedY = dy / distance * 5;
self.move = function () {
self.x += self.speedX;
self.y += self.speedY;
if (self.x < 0 || self.x > 2048 || self.y < 0 || self.y > 2732) {
self.destroy();
}
};
self.on('down', function () {
self.destroy();
});
});
var Heart = Container.expand(function () {
var self = Container.call(this);
var heartGraphics = self.createAsset('heart', 'Player life', 0.5, 0.5);
self.x = heartGraphics.width / 2;
self.y = heartGraphics.height / 2;
});
var MuzzleFlash = Container.expand(function () {
var self = Container.call(this);
self.visible = false;
var flashGraphics = self.createAsset('muzzleFlash', 'Muzzle flash effect', .5, .5);
self.show = function () {
var randomScale = Math.random() * 0.125 + 0.375;
self.scale.set(randomScale);
self.visible = true;
LK.setTimeout(function () {
self.visible = false;
self.scale.set(1);
}, 100);
};
});
var Santa = Container.expand(function () {
var self = Container.call(this);
self.santaGraphics = self.createAsset('santa', 'Santa character', .5, .5);
self.move = function () {};
self.shoot = function () {};
});
var Crosshair = Container.expand(function () {
var self = Container.call(this);
self.move = function (event) {
var pos = event.getLocalPosition(self.parent);
self.x = pos.x;
self.y = pos.y;
};
var crosshairGraphics = self.createAsset('crosshair', 'Crosshair', .5, .5);
self.y = -crosshairGraphics.height / 2;
self.destroy = function () {};
});
var Game = Container.expand(function () {
var self = Container.call(this);
self.respawnReindeer = function (reindeer) {
LK.setTimeout(function () {
var newReindeer = new Reindeer(self);
var spawnLeftSide = Math.random() < 0.5;
newReindeer.x = spawnLeftSide ? 0 : 2048;
newReindeer.y = 2732 / 2;
newReindeer.arcDirection = spawnLeftSide ? 1 : -1;
newReindeer.arcRadius = 2048 / 2;
newReindeer.arcAngle = spawnLeftSide ? Math.PI : 0;
newReindeer.scale.x = spawnLeftSide ? 1 : -1;
self.addChild(newReindeer);
LK.on('tick', newReindeer.moveInArc.bind(newReindeer));
}, Math.random() < 0.5 ? 8000 : 12000);
};
self.showGreatText = function (x, y) {
var greatText = new Text2('Nice!', {
size: 40,
fill: '#ffffff',
font: 'Arial Black'
});
greatText.x = x;
greatText.y = y;
greatText.anchor.set(0.5, 0.5);
self.addChild(greatText);
LK.setTimeout(function () {
greatText.destroy();
}, 1000);
};
var silentNightText = new Text2('Silent Night', {
size: 150,
fill: "#ffffff"
});
silentNightText.anchor.set(0.5, 0);
silentNightText.x = 5 / 2;
silentNightText.y = 150;
LK.gui.topCenter.addChild(silentNightText);
self.generateSnowflakes = function () {
var snowflakeInterval = LK.setInterval(function () {
var snowflake = new Snowflake();
snowflake.x = Math.random() * 2048;
snowflake.y = Math.random() * 2732;
self.addChild(snowflake);
}, 1000);
};
LK.setTimeout(function () {
var fadeOutDuration = 2000;
var fadeOutStep = 0.05;
var fadeOutInterval = LK.setInterval(function () {
silentNightText.alpha -= fadeOutStep;
if (silentNightText.alpha <= 0) {
LK.clearInterval(fadeOutInterval);
silentNightText.destroy();
self.score = 0;
self.scoreText = new Text2(self.score.toString(), {
size: 150,
fill: "#ffffff"
});
self.scoreText.anchor.set(0.5, 0);
self.scoreText.x = 5 / 2;
self.scoreText.y = 150;
LK.gui.topCenter.addChild(self.scoreText);
self.updateScore = function (score) {
self.score += score;
self.scoreText.setText(self.score.toString());
LK.setScore(self.score);
};
}
}, fadeOutDuration * fadeOutStep);
self.spawnBadElf();
LK.setInterval(self.spawnBadElf, Math.random() * (6000 - 3000) + 3000);
self.generateMistletoes = function () {};
self.generateMistletoes = function () {
LK.setTimeout(function () {
var newMistletoe = new Mistletoe();
var boundaryOffset = 100;
newMistletoe.x = Math.random() * (2048 - 2 * boundaryOffset) + boundaryOffset;
newMistletoe.y = Math.random() * (2732 - 2 * boundaryOffset - newMistletoe.height - 300 - 200 - 500) + boundaryOffset + 200;
self.addChild(newMistletoe);
}, 8000);
};
LK.setTimeout(function () {
var reindeer = new Reindeer(self);
var boundaryOffset = 200;
reindeer.x = Math.random() < 0.5 ? boundaryOffset : 2048 - boundaryOffset - reindeer.width;
reindeer.y = Math.random() * (2732 / 2 - boundaryOffset) + boundaryOffset;
reindeer.arcDirection = Math.random() < 0.5 ? 1 : -1;
reindeer.arcRadius = 2048 / 2;
reindeer.arcAngle = Math.random() < 0.5 ? Math.PI : 0;
reindeer.scale.x = Math.random() < 0.5 ? 1 : -1;
self.addChild(reindeer);
LK.on('tick', reindeer.moveInArc.bind(reindeer));
}, 12000);
LK.setTimeout(self.generateMistletoes, 8000);
}, 2000);
stage.on('move', function (obj) {
crosshair.move(obj.event);
});
stage.on('down', function (obj) {
if (hearts.length > 0) {
muzzleFlash.show();
leftClickPressed = true;
lastClickTime = LK.ticks;
if (!barnMovedDown) {
barnBackground.y += 460;
room1Background.y += 100;
boxBackground.y += 100;
crateBackground.y += 100;
missBackground.y += 460;
tireBackground.y += 100;
barnMovedDown = true;
if (Math.random() < 0.10) {
var messages = ["Santa's special delivery!", "This is for the naughty list!", "Ho, ho, ho-hold this!"];
if (!self.randomTextActive) {
self.randomTextActive = true;
var randomText = new RandomText();
randomText.display(santa.x, santa.y - santa.santaGraphics.height / 2, messages);
self.addChild(randomText);
}
}
}
var heart = hearts.pop();
heart.destroy();
}
});
var room1Background = self.createAsset('Room1', 'Room1 background', 0, 0);
room1Background.anchor.set(0.5, 0.5);
room1Background.x = 2048 / 2;
room1Background.y = 2732 / 2;
self.addChild(room1Background);
var tireBackground = self.createAsset('Tire', 'Tire background', 0.5, 0.5);
tireBackground.anchor.set(0.5, 0.5);
tireBackground.x = 700;
tireBackground.y = 1825;
self.addChild(tireBackground);
self.respawnMistletoe = function (mistletoe) {
this.showGreatText(mistletoe.x, mistletoe.y);
mistletoe.destroy();
LK.setTimeout(function () {
var newMistletoe = new Mistletoe();
var boundaryOffset = 100;
newMistletoe.x = Math.random() * (2048 - 2 * boundaryOffset) + boundaryOffset;
newMistletoe.y = Math.random() * (2732 - 2 * boundaryOffset - newMistletoe.height - 300 - 200 - 100 - 500) + boundaryOffset + 300;
self.addChild(newMistletoe);
}, Math.random() * (10000 - 5000) + 5000);
};
self.generateSnowflakes();
var missBackground = self.createAsset('Miss', 'Miss background', 0, 0);
missBackground.anchor.set(0.5, 0.5);
missBackground.x = 700;
missBackground.y = 2520;
var crateBackground = self.createAsset('Crate', 'Crate background', 0, 0);
crateBackground.anchor.set(0, 1);
crateBackground.x = 205;
crateBackground.y = 2645;
self.addChild(crateBackground);
var boxBackground = self.createAsset('Box', 'Box background', 0, 0);
boxBackground.anchor.set(0, 1);
boxBackground.x = 1350;
boxBackground.y = 2200;
self.addChild(boxBackground);
var barnBackground = self.createAsset('Barn', 'Barn background', 0, 0);
barnBackground.anchor.set(0.5, 0.5);
barnBackground.x = 2048 / 2;
barnBackground.y = 2732 - barnBackground.height / 4 + 900;
self.addChild(barnBackground);
self.addChild(missBackground);
var santa = new Santa();
santa.x = 2048 - santa.santaGraphics.width / 2;
santa.y = 2732 - santa.santaGraphics.height / 2;
self.addChild(santa);
var spawnLocations = [{
x: tireBackground.x,
y: tireBackground.y
}, {
x: boxBackground.x,
y: boxBackground.y
}, {
x: crateBackground.x,
y: crateBackground.y
}];
self.activeBadElves = 0;
self.spawnBadElf = function () {
if (self.scoreText && self.activeBadElves < 2) {
var locationIndex = Math.floor(Math.random() * spawnLocations.length);
var location = spawnLocations.splice(locationIndex, 1)[0];
if (spawnLocations.length === 0) {
spawnLocations = [{
x: tireBackground.x,
y: tireBackground.y
}, {
x: boxBackground.x,
y: boxBackground.y
}, {
x: crateBackground.x,
y: crateBackground.y
}];
}
var badElf = new BadElf(location.x, location.y, self);
if (location === spawnLocations[0]) {
badElf.scale.set(badElf.scale.x * 0.65, badElf.scale.y * 0.65);
}
self.addChild(badElf);
self.activeBadElves++;
var bulletStartY = badElf.y - badElf.height;
var bullet = new ElfBullet(badElf.x, bulletStartY, self.santa.x, self.santa.y, self);
self.addChild(bullet);
if (badElf && self.santa) {
var bullet = new ElfBullet(badElf.x, badElf.y, self.santa.x, self.santa.y, self);
self.addChild(bullet);
self.activeBadElves++;
}
if (badElf && self.santa) {
var bullet = new ElfBullet(badElf.x, badElf.y, self.santa.x, self.santa.y, self);
self.addChild(bullet);
self.activeBadElves++;
}
}
};
var muzzleFlash = new MuzzleFlash();
muzzleFlash.x = santa.x - santa.santaGraphics.width + 400;
muzzleFlash.y = santa.y - 90;
self.addChild(muzzleFlash);
self.addChild(santa);
var crosshair = self.addChild(new Crosshair());
crosshair.x = 2048 / 2;
crosshair.y = 2732 / 2;
var isGameOver = false;
var tickOffset = 0;
var leftClickPressed = false;
var barnMovedDown = false;
var lastClickTime = 0;
var playerLives = 6;
var hearts = [];
for (var i = 0; i < playerLives; i++) {
var heart = new Heart();
heart.x = 1125 + i * (heart.width + 5);
heart.y = santa.y - santa.santaGraphics.height - heart.height / 2 + 350;
hearts.push(heart);
LK.gui.topLeft.addChild(heart);
}
LK.on('tick', function () {
santa.move();
for (var i = 0; i < self.children.length; i++) {
var child = self.children[i];
if (child instanceof Snowflake) {
child.move();
} else if (child instanceof Mistletoe) {
child.bob();
}
}
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
if (leftClickPressed && LK.ticks - lastClickTime > 30) {
barnBackground.y -= 460;
room1Background.y -= 100;
boxBackground.y -= 100;
crateBackground.y -= 100;
missBackground.y -= 460;
tireBackground.y -= 100;
leftClickPressed = false;
barnMovedDown = false;
while (hearts.length < playerLives) {
var heart = new Heart();
heart.x = 1125 + hearts.length * (heart.width + 5);
heart.y = santa.y - santa.santaGraphics.height - heart.height / 2 + 350;
hearts.push(heart);
LK.gui.topLeft.addChild(heart);
}
}
});
});
over the shoulder santa firing a revolver Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d transparent christmas crosshair Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d 3rd person front view of a christmas town square with a starry sky Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Christmas sparkles png Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
circular christmas golden star pattern transparent png Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d christmas brick wall Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d opened christmas crate Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d diagonal christmas car or truck in snow Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a christmas poster showcasing miss santa clause Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a single white snowflake Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d stacked christmas winter tire Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d stacked christmas winter tire Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d christmas magical mistletoe Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d christmas 357 Magnum bullets Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d silhouette of a flying reindeer with a red glowy nose Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d christmas dark sparkles Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d christmas evil robot elf with a gun Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d pile of gray and red nuts and bolts Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
transparent snow sphere. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
snd_pistol
Sound effect
snd_enemyshot
Sound effect
snd_obstacle
Sound effect
snd_messages
Sound effect
snd_ricochet
Sound effect
snd_reindeer
Sound effect
snd_mistletoe
Sound effect
snd_reindeershot
Sound effect
snd_mistletoeshot
Sound effect
snd_christmasmusic
Music
snd_reload
Sound effect
snd_blastwave
Sound effect