User prompt
when pressing left click play snd_pistol
User prompt
when elfbullet is instantiated play snd_enemyshot
User prompt
Migrate to the latest version of LK
Code edit (2 edits merged)
Please save this source code
User prompt
LK.setTimeout(function () { self.spawnBadElf; }, 8000); include in the timout reset self.activeBadElves to 0
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'spawnBadElf')' in this line: 'self.gameInstance.spawnBadElf();' Line Number: 213
User prompt
add a10% chance to spawn a badelf when a badelf is destroyed
User prompt
add a 90% chance to spawn a badelf when reindeer is destroyed
User prompt
when a mistletoe is destroyed add a 50% chance to spawn a badelf
Code edit (1 edits merged)
Please save this source code
User prompt
create a 10 second countdown timer that checks for this if (self.activeBadElves <= 0) { self.spawnBadElf();
User prompt
if self.activeBadElves <= 0, spawn a bad elf make sure this ticks
User prompt
if self.activeBadElves <= 0, spawn a bad elf
User prompt
FIX THIS: The reason why the code sometimes stops spawning `BadElf` instances is because of the last step. Once the countdown reaches 0 and a new `BadElf` is spawned, the countdown timer is cleared and set to `null`. This means that the countdown will not start again unless explicitly re-initialized elsewhere in the code. If there is no code to re-initialize the countdown timer, no new `BadElf` instances will be spawned after the first one.
User prompt
sometimes the countdown gets stuck and doesn't reset, fix it
User prompt
check if the countdown timer is running. When the countdown reaches zero and a new Bad Elf is spawned, the game would reset the countdown and start it again only if there isn't another countdown already going on.
User prompt
fix this countdown timer to reset once it hits 0
User prompt
make sure the countdown is always running
User prompt
when the countdown hits 0, spawn a badelf and restart the countdown
User prompt
start a 10 seconds countdown when a badelf is created
User prompt
every 100 points, spawn an extra mistletoe
User prompt
every minute spawn an additional mistletoe somewhere on the screen
Code edit (5 edits merged)
Please save this source code
User prompt
Fix Bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'x')' in this line: 'var extraBadElf = new BadElf(location.x, location.y, self);' Line Number: 567
Code edit (5 edits merged)
Please save this source code
var Shield = Container.expand(function (x, y, gameInstance) { var self = Container.call(this); self.gameInstance = gameInstance; self.x = x; self.y = y; self.on('down', function () { this.destroy(); }); }); var ObstacleBox = Container.expand(function (x, y, gameInstance) { var self = Container.call(this); self.gameInstance = gameInstance; var obstacleBoxGraphics = self.createAsset('obstacleBox', 'Obstacle Box', 0.5, 0.5); self.x = x; self.y = y; }); var Reindeer = Container.expand(function (gameInstance) { var self = Container.call(this); self.moveInArc = function () { self.arcAngle += self.arcSpeed * self.arcDirection; self.x = self.gameInstance.x + Math.cos(self.arcAngle) * self.arcRadius; self.y = self.gameInstance.y + Math.sin(self.arcAngle) * self.arcRadius; }; self.moveHorizontally = function () { self.x += self.speed * self.direction; if (self.x > 2048 || self.x < 0) { self.direction *= -1; self.scale.x *= -1; self.x = Math.max(0, Math.min(self.x, 2048)); } }; self.fadeOut = function () { if (self.alpha > 0) { self.alpha -= 0.01; } else if (self.gameInstance) { self.gameInstance.respawnReindeer(self); } }; self.gameInstance = gameInstance; var reindeerGraphics = self.createAsset('reindeer', 'Reindeer', 0.5, 0.5); self.addChild(reindeerGraphics); self.speed = 10; self.direction = Math.random() < 0.5 ? 1 : -1; self.x = self.direction === 1 ? 0 : 2048; self.scale.x = self.direction; 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 = this.x; greatText.y = this.y; greatText.anchor.set(0.5, 0.5); this.parent.addChild(greatText); LK.setTimeout(function () { greatText.destroy(); }, 1000); this.parent.respawnReindeer(); this.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.spawnedMagicCount = 1; self.magicShootingInterval = LK.setInterval(function () { var magic = new Magic(self.x + 125, self.y, self.gameInstance); self.gameInstance.addChild(magic); self.gameInstance.activeMagicCount++; self.spawnedMagicCount++; if (self.spawnedMagicCount >= 3) { self.alpha = 1; var fadeOutInterval; var fadeOut = function () { if (self.alpha > 0) { self.alpha -= 0.05; } else { LK.clearInterval(fadeOutInterval); self.gameInstance.activeBadElves--; self.destroy(); LK.setTimeout(function () {}, 2000); } }; LK.clearInterval(self.magicShootingInterval); fadeOutInterval = LK.setInterval(fadeOut, 60); self.magicShootingInterval = null; } }, Math.random() * (2000 - 1000) + 1000); var badElfGraphics = self.createAsset('badElf', 'Mischievous Elf', 0.5, 0.5); self.x = spawnX; self.y = spawnY; if (!self.countdownTimer) { self.countdown = 10; if (!self.countdownTimer) { self.countdownTimer = LK.setInterval(function () { if (self.countdown > 0) { self.countdown--; console.log('Countdown:', self.countdown); } else { self.gameInstance.spawnBadElf(); self.countdown = 10; self.countdown = 10; } }, 1000); } } self.on('down', function (obj) { LK.setScore(LK.getScore() + 3); LK.gui.topCenter.children[0].setText(LK.getScore().toString()); this.gameInstance.activeBadElves--; var obstacleBox = new ObstacleBox(this.x, this.y, this.gameInstance); obstacleBox.x = this.x; obstacleBox.y = this.y; this.parent.addChild(obstacleBox); LK.setTimeout(function () { obstacleBox.destroy(); }, 1000); LK.clearInterval(this.magicShootingInterval); this.destroy(); }); }); var Magic = Container.expand(function (x, y, gameInstance) { var self = Container.call(this); console.log("magic creation triggered"); self.gameInstance = gameInstance; self.moveEnabled = true; self.rotation = 0; var magicGraphics = self.createAsset('magic', 'Magic effect', 0.5, 0.5); magicGraphics.width = 125; magicGraphics.height = 125; self.x = x; self.y = y; self.move = function () { if (self.moveEnabled) { var santaX = self.gameInstance.santa && self.gameInstance.santa.santaGraphics ? self.gameInstance.santa.santaGraphics.x : 2048; var santaY = self.gameInstance.santa && self.gameInstance.santa.santaGraphics ? self.gameInstance.santa.santaGraphics.y : 2732; var santaWidth = self.gameInstance.santa && self.gameInstance.santa.santaGraphics ? self.gameInstance.santa.santaGraphics.width : 0; var magicWidth = magicGraphics ? magicGraphics.width : 0; var dx = santaX - self.x; var dy = santaY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); var hitThreshold = 10000; var speed = 10; if (distance > 0) { var normX = dx / distance; var normY = dy / distance; self.x += normX * speed; self.y += normY * speed; } if (distance <= 450) { console.log('Hit threshold met. Game over triggered.'); self.gameInstance.triggerGameOver(); } if (self.gameInstance.santa) {} else if (self.x < 0 || self.x > 2048 || self.y < 0 || self.y > 2732) { self.gameInstance.activeMagicCount--; self.destroy(); } } }; self.on('down', function () { LK.setScore(LK.getScore() + 2); LK.gui.topCenter.children[0].setText(LK.getScore().toString()); var tingText = new Text2('Ting!', { size: 40, fill: '#ffffff', font: 'Arial Black' }); tingText.x = this.x; tingText.y = this.y; tingText.anchor.set(0.5, 0.5); this.parent.addChild(tingText); LK.setTimeout(function () { tingText.destroy(); }, 1000); this.gameInstance.activeMagicCount--; this.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 scale = Math.random() * 0.15 + 0.85; mistletoeGraphics.scale.set(scale); 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 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', 0.5, 0.5); self.santaGraphics.width = 800; self.santaGraphics.height = 800; self.santaGraphics.scale.x = 800 / self.santaGraphics.width; self.move = 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; }); var Game = Container.expand(function () { var self = Container.call(this); this.barnMovedDown = false; this.triggerGameOver = function () { this.isGameOver = true; LK.showGameOver(); LK.on('tick', function () { if (self.isGameOver) { return; } if (self.activeBadElves <= 0) { self.spawnBadElf(); } }); }; this.checkMagicCollisionWithSanta = function (magic) { if (!this.santa || !this.santa.santaGraphics) return; var santaX = this.santa && this.santa.santaGraphics ? this.santa.santaGraphics.x : 0; var santaY = this.santa.santaGraphics.y; var distance = Math.sqrt(Math.pow(magic.x - santaX, 2) + Math.pow(magic.y - santaY, 2)); var hitThreshold = (this.santa.santaGraphics.width + magic.width) / 4; if (distance <= hitThreshold) { this.triggerGameOver(); magic.destroy(); this.activeMagicCount--; } }; this.isGameOver = false; this.activeMagicCount = 0; this.magicSpawnX = 1024; this.magicSpawnY = 1366; this.triggerGameOver = function () { this.isGameOver = true; LK.showGameOver(); }; self.maxMagicAllowed = 3; if (self.activeMagicCount < self.maxMagicAllowed && LK.gui.topCenter.children[0] && LK.gui.topCenter.children[0].visible && self.activeBadElves > 0) { var magicInstance = new Magic(this.magicSpawnX, this.magicSpawnY, self); self.addChild(magicInstance); self.activeMagicCount++; } 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 = Math.random() * (2732 / 4 - newReindeer.height) + newReindeer.height; newReindeer.arcDirection = spawnLeftSide ? 1 : -1; newReindeer.arcRadius = 2048 / 2; newReindeer.arcAngle = spawnLeftSide ? Math.PI : 0; var scale = Math.random() * 0.25 + 0.75; newReindeer.scale.set(scale); self.addChild(newReindeer); LK.on('tick', function () { newReindeer.moveHorizontally(); }); }, 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) { var previousScore = self.score; self.score += score; self.scoreText.setText(self.score.toString()); LK.setScore(self.score); var scoreIncrease = self.score - previousScore; if (scoreIncrease >= 20) { var newInterval = self.badElfSpawnInterval / 1.2; self.badElfSpawnInterval = Math.max(newInterval, self.minimumSpawnInterval); LK.clearInterval(self.badElfSpawnTimer); self.badElfSpawnTimer = LK.setInterval(self.spawnBadElf, self.badElfSpawnInterval); } if (self.score % 100 === 0) { self.generateMistletoes(); } }; self.badElfSpawnInterval = 3500; self.minimumSpawnInterval = 500; self.badElfSpawnTimer = LK.setInterval(self.spawnBadElf, self.badElfSpawnInterval); } }, fadeOutDuration * fadeOutStep); 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 / 4 - boundaryOffset) + boundaryOffset; reindeer.arcDirection = Math.random() < 0.5 ? 1 : -1; reindeer.arcRadius = 2048 / 2; reindeer.arcAngle = Math.random() < 0.5 ? Math.PI : 0; var initialScale = Math.random() * 0.25 + 0.75; reindeer.scale.set(initialScale); self.addChild(reindeer); LK.on('tick', function () { reindeer.moveHorizontally(); }); }, 12000); LK.setTimeout(self.generateMistletoes, 8000); }, 2000); stage.on('move', function (obj) { crosshair.move(obj.event); }); stage.on('down', function (obj) { var pos = obj.event.getLocalPosition(self); crosshair.x = pos.x; crosshair.y = pos.y; if (hearts.length > 0) { muzzleFlash.show(); leftClickPressed = true; lastClickTime = LK.ticks; if (!barnMovedDown) { self.children.forEach(function (child) { if (child instanceof BadElf) { child.y += 100; } }); 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(); } self.children.forEach(function (child) { if (child instanceof BadElf && leftClickPressed && LK.ticks - lastClickTime > 30) { child.y -= 100; } }); }); 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 = self.addChild(new Santa()); santa.x = 2048 / 2 + 650; santa.y = 2732 - santa.height / 2 + 10; var shield = new Shield(santa.x, santa.y - 100, self); self.addChild(shield); self.addChild(santa); var spawnLocations = [{ x: tireBackground.x + 175, y: tireBackground.y - 65 }, { x: boxBackground.x, y: boxBackground.y - 350 }, { x: crateBackground.x + 250, y: crateBackground.y - 600 }, { x: 225, y: 1685 }, { x: 1625, y: 1775 }, { x: 100, y: 1100 }]; var usedSpawnLocations = []; var spawnLocationCounter = 0; self.activeBadElves = 0; self.spawnBadElf = function () { if (self.scoreText && self.activeBadElves < 5) { if (usedSpawnLocations.length === spawnLocations.length) { usedSpawnLocations = []; spawnLocationCounter = 0; } var availableLocations = spawnLocations.filter(function (location, index) { return usedSpawnLocations.indexOf(index) === -1; }); if (availableLocations.length === 0) { usedSpawnLocations = []; availableLocations = spawnLocations.slice(); } var locationIndex = Math.floor(Math.random() * availableLocations.length); var location = availableLocations.splice(locationIndex, 1)[0]; usedSpawnLocations.push(spawnLocations.indexOf(location)); spawnLocationCounter++; if (location) { console.log(location); if (location.hasOwnProperty("x") && location.hasOwnProperty("y")) { var badElf = new BadElf(location.x, location.y, self); var scaleModifier = Math.random() * 0.25 + 0.75; badElf.scale.set(scaleModifier, scaleModifier); self.addChildAt(badElf, self.getChildIndex(boxBackground) + 1); self.activeBadElves++; if (Math.random() < 0.1) { for (var i = 0; i < 3; i++) { var locationIndex = Math.floor(Math.random() * availableLocations.length); var location = availableLocations.splice(locationIndex, 1)[0]; if (location) { console.log(location); if (location.hasOwnProperty("x") && location.hasOwnProperty("y")) { var extraBadElf = new BadElf(location.x, location.y, self); } } self.addChildAt(extraBadElf, self.getChildIndex(boxBackground) + 1); self.activeBadElves++; } } if (Math.random() < 0.2) { for (var i = 0; i < 2; i++) { var locationIndex = Math.floor(Math.random() * availableLocations.length); var location = availableLocations.splice(locationIndex, 1)[0]; if (location) { console.log(location); if (location.hasOwnProperty("x") && location.hasOwnProperty("y")) { var extraBadElf = new BadElf(location.x, location.y, self); } } self.addChildAt(extraBadElf, self.getChildIndex(boxBackground) + 1); self.activeBadElves++; } } if (Math.random() < 0.35) { var locationIndex = Math.floor(Math.random() * availableLocations.length); var location = availableLocations.splice(locationIndex, 1)[0]; if (location) { console.log(location); if (location.hasOwnProperty("x") && location.hasOwnProperty("y")) { var extraBadElf = new BadElf(location.x, location.y, self); } } self.addChildAt(extraBadElf, self.getChildIndex(boxBackground) + 1); 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(); } else if (child instanceof Magic) { child.move(); self.checkMagicCollisionWithSanta(child); } } if (self.isGameOver) { return; } if (leftClickPressed && LK.ticks - lastClickTime > 30) { barnBackground.y -= 460; room1Background.y -= 100; boxBackground.y -= 100; crateBackground.y -= 100; missBackground.y -= 460; tireBackground.y -= 100; self.children.forEach(function (child) { if (child instanceof BadElf && barnMovedDown) { child.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); } } }); });
===================================================================
--- original.js
+++ change.js
@@ -281,8 +281,11 @@
LK.on('tick', function () {
if (self.isGameOver) {
return;
}
+ if (self.activeBadElves <= 0) {
+ self.spawnBadElf();
+ }
});
};
this.checkMagicCollisionWithSanta = function (magic) {
if (!this.santa || !this.santa.santaGraphics) return;
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