Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'getLocalPosition')' in this line: 'var pos = event.getLocalPosition(self.parent);' Line Number: 229
User prompt
Fix Bug: 'ReferenceError: obj is not defined' in this line: 'var pos = obj.event.getLocalPosition(self.parent);' Line Number: 229
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'getLocalPosition')' in this line: 'var pos = event.getLocalPosition(self.parent);' Line Number: 229
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'getLocalPosition')' in this line: 'var pos = event.getLocalPosition(self.parent);' Line Number: 229
User prompt
Fix Bug: 'TypeError: child.move is not a function' in this line: 'child.move();' Line Number: 526
User prompt
Fix Bug: 'TypeError: child.move is not a function' in this line: 'child.move();' Line Number: 530
User prompt
Fix Bug: 'TypeError: child.move is not a function' in this line: 'child.move();' Line Number: 530
Code edit (1 edits merged)
Please save this source code
User prompt
when left click is pressed, move the crosshair to that location
User prompt
Fix Bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'activeMagicCount')' in this line: 'self.gameInstance.activeMagicCount++;' Line Number: 528
User prompt
Fix Bug: 'Cannot read properties of undefined (reading 'activeMagicCount')' in this line: 'self.gameInstance.activeMagicCount++;' Line Number: 528
User prompt
Make sure that instances of Magic are being correctly created and added to the game. For instance, when a BadElf shoots magic, it should instantiate a Magic object and add it to the game.
User prompt
Ensure that (LK.on('tick', function() {...})) is actively running and calling the move function for each Magic instance.
User prompt
// Inside the Magic move function console.log("Distance: " + distance + ", Threshold: " + hitThreshold);
User prompt
// Inside the Magic move function console.log("Santa X: " + santa.x + ", Y: " + santa.y); console.log("Distance: " + distance + ", Threshold: " + hitThreshold);
User prompt
Inside the Magic move function console.log("Magic X: " + self.x + ", Y: " + self.y); console.log("Santa X: " + santa.x + ", Y: " + santa.y); console.log("Distance: " + distance + ", Threshold: " + hitThreshold);
User prompt
// Inside the Magic move function console.log("Magic X: " + self.x + ", Y: " + self.y); console.log("Santa X: " + santa.x + ", Y: " + santa.y); console.log("Distance: " + distance + ", Threshold: " + hitThreshold);
User prompt
Confirm that the coordinate systems of Magic and Santa are aligned. For example, if one set of coordinates is relative to a parent container and the other is global, the distance calculation would be incorrect.
User prompt
modify the hitThreshold to a very large number to see if the collision detection is triggered
User prompt
do not apply a scaling factor to the width of magicGraphics and santaGraphics.
User prompt
(santaWidth + magicWidth) / 4 try (santaWidth + magicWidth) / 2
User prompt
delete: self.santaGraphics.scale.x = 800;
User prompt
delete: self.santaGraphics.scale.x = 800 / self.santaGraphics.width;
User prompt
santaGraphics` = 800x, 800y , and `magicGraphics = 125x, 125y
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 Magic = Container.expand(function (x, y, gameInstance) { var self = Container.call(this); 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 = (santaWidth + magicWidth) / 4; var speed = 10; if (distance > 0) { var normX = dx / distance; var normY = dy / distance; self.x += normX * speed; self.y += normY * speed; } if (self.gameInstance.santa) { if (distance <= hitThreshold) { console.log('Hit threshold met. Game over triggered.'); self.gameInstance.triggerGameOver(); } else { console.log('Hit threshold not met. Magic position:', self.x, self.y, 'Santa position:', santaX, santaY, 'Distance:', distance, 'Threshold:', hitThreshold); return; } } 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 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 () { if (self.visible && self.gameInstance && self.gameInstance.activeMagicCount < self.gameInstance.maxMagicAllowed) { var magic = new Magic(self.x + 125, self.y, self.gameInstance); self.gameInstance.addChild(magic); self.gameInstance.activeMagicCount++; self.spawnedMagicCount++; if (self.spawnedMagicCount >= 2) { 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 () { self.gameInstance.spawnBadElf(); }, 2000); } }; LK.clearInterval(self.magicShootingInterval); fadeOutInterval = LK.setInterval(fadeOut, 60); self.magicShootingInterval = null; } } }, Math.random() * (6000 - 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()); 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 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.triggerGameOver = function () { this.isGameOver = true; LK.showGameOver(); LK.on('tick', function () { if (self.isGameOver) { return; } }); }; 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) { 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) { 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 () { 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) { 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 }]; var usedSpawnLocations = []; var spawnLocationCounter = 0; self.activeBadElves = 0; self.spawnBadElf = function () { if (self.scoreText && self.activeBadElves < 2) { if (usedSpawnLocations.length === spawnLocations.length) { usedSpawnLocations = []; spawnLocationCounter = 0; } var availableLocations = spawnLocations.filter(function (location, index) { return usedSpawnLocations.indexOf(index) === -1; }); var locationIndex = Math.floor(Math.random() * availableLocations.length); var location = availableLocations[locationIndex]; usedSpawnLocations.push(spawnLocations.indexOf(location)); spawnLocationCounter++; 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(room1Background) + 1); var magic = new Magic(badElf.x + badElf.width / 2, badElf.y, self); self.activeBadElves++; self.addChildAt(magic, self.getChildIndex(santa)); var bulletStartY = badElf.y - badElf.height; } }; 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
@@ -27,14 +27,14 @@
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 * self.gameInstance.santa.santaGraphics.scale.x : 0;
- var magicWidth = magicGraphics ? magicGraphics.width * magicGraphics.scale.x : 0;
+ 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 = (santaWidth + magicWidth) / 2;
+ var hitThreshold = (santaWidth + magicWidth) / 4;
var speed = 10;
if (distance > 0) {
var normX = dx / distance;
var normY = dy / distance;
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