User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'addXP')' in this line: 'self.gameInstance.addXP(2);' Line Number: 228
User prompt
Fix Bug: 'TypeError: self.getGameInstance is not a function' in this line: 'self.getGameInstance().addXP(2);' Line Number: 228
User prompt
Fix Bug: 'TypeError: self.getGameInstance is not a function' in this line: 'self.getGameInstance().addXP(2);' Line Number: 228
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'addXP')' in this line: 'self.parent.addXP(2);' Line Number: 228
User prompt
Fix Bug: 'ReferenceError: gameInstance is not defined' in this line: 'gameInstance.addXP(2);' Line Number: 228
User prompt
Fix Bug: 'ReferenceError: addXP is not defined' in this line: 'addXP(1);' Line Number: 632
User prompt
Fix Bug: 'ReferenceError: addXP is not defined' in this line: 'addXP(2);' Line Number: 228
User prompt
The points added from collecting a Happy House also add XP
User prompt
Change the powerup titles as follows. Pitching Arm! = "Throw Faster!" More Carrots! = "Dash Around!" City Flying! = "More Houses!" Naughty Deflector! = "Naughty Bounce!" Joyous! = "Just Points!" New Time Zone! = "More Time!"
User prompt
change the description of all powerups to a single space character
User prompt
If Santa collides with a happy house for 0.5 seconds, the house despawns and rewards the player 2 points
User prompt
The HappyHouse must pass at least 25 pixels below the top of Santa before Santa can collide with it
User prompt
The HappyHouse must pass at least 75 pixels below the top of Santa before Santa can collide with it
User prompt
Santa can fly into a happy house which causes the house to despawn and rewards the player 2 points
User prompt
Make the presents 25% smaller
User prompt
Fix Bug: 'Uncaught ReferenceError: houseWidth is not defined' in this line: 'var newHouseX = Math.random() * (2048 - houseWidth) + houseWidth / 2;' Line Number: 506
User prompt
Why do i see the corner of one house frozen in the top right of the screen when the game starts? Fix this.
User prompt
Fix Bug: 'Uncaught ReferenceError: houseHeight is not defined' in this line: 'var newHouseY = -Math.random() * 500 - houseHeight;' Line Number: 508
User prompt
Why are there sometimes houses frozen at the top of the screen when the game begins? Fix this.
User prompt
The powerup names are 10% smaller
User prompt
The powerup names are extra bold
User prompt
The powerup names are 25% larger
User prompt
The powerup names are 50% bigger, in a bold green font with a white glow, and are 50 pixels lower within the buttons
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'width')' in this line: 'var newHouseX = Math.random() * (2048 - house.width) + house.width / 2;' Line Number: 503
User prompt
Houses cannot spawn where some of their pixels will be off the left or right edge of the screen
function wrapText(text, maxWidth) { var words = text.split(' '); var wrappedText = ''; var currentLine = ''; var testText = new Text2('', { size: 70 }); for (var i = 0; i < words.length; i++) { var word = words[i]; var testLine = currentLine + word + ' '; testText.setText(testLine); if (testText.width > 1000 && i > 0) { wrappedText += currentLine.trim() + '\n'; currentLine = word + ' '; } else { currentLine = testLine; } } wrappedText += currentLine.trim(); return wrappedText; } var allowPresentAngle = false; var MerryChristmasPopup = Container.expand(function (score, onDismiss) { var self = Container.call(this); var background = self.createAsset('popupBackground', 'Popup Background', 0.5, 0.5); background.width = 2048 * 0.85; background.height = 2732 * 0.85; background.x = 2048 / 2; background.y = 2732 / 2; var titleText = new Text2('Merry Christmas', { size: 130, fill: '#000000' }); titleText.anchor.set(0.5); titleText.x = background.x; titleText.y = background.y - background.height / 2 + 220; self.addChild(titleText); var bodyTextContent; if (score < 30) { bodyTextContent = 'Oh no, you need to score at least 30 points to make the Nice List! Then you can see the holiday message. Remember, you lose points for delivering to naughty houses!'; } else if (score <= 74) { bodyTextContent = 'Wishing you a wonderful year ahead! We have moved north to Marin and the clear air and nearby family are really suiting us. We miss our friends in LA and around the world though. Annie loves her new DA office and colleagues. Matt is working remotely in new game development at his same firm, Scopely. Score over 75 points for an update on the kids! Human Kindness is OP.'; } else if (score <= 199) { bodyTextContent = 'Over 75 points, wow! Score less for Part 1. The boys are doing great! Lincoln rides the school bus 5 days a week and gets amazing speech and PT therapies right there. Finn and our au pair Tobias love playing at the creek, and Finn has new words every day. Have an amazing holiday! The high score is 200, can you beat it?'; } else { bodyTextContent = 'WHAT IS YOUR SECRET? Seriously, I programmed this message but have never gotten over 200 points. Screenshot this for me! AND HAVE A VERY MERRY CHRISTMAS, INDEED!'; } var bodyText = new Text2(wrapText(bodyTextContent, 100), { size: 70, fill: '#000000', align: 'center' }); bodyText.anchor.set(0.5); bodyText.x = background.x; bodyText.y = background.y - 50; self.addChild(bodyText); var dismissButton = new Button('Retry', onDismiss); dismissButton.x = background.x + background.width / 2 - dismissButton.width / 2 - 290; dismissButton.y = background.y + background.height / 2 - dismissButton.height / 2 - 90; self.addChild(dismissButton); }); var Button = Container.expand(function (label, onClick) { var self = Container.call(this); var buttonGraphics = self.createAsset('button', label, 0.5, 0.5); buttonGraphics.scale.set(6); buttonGraphics.interactive = true; buttonGraphics.buttonMode = true; var nameLabel = new Text2(label.split(' ').reduce(function (acc, word) { if (acc.length && acc[acc.length - 1].length + word.length <= 12) { acc[acc.length - 1] += ' ' + word; } else { acc.push(word); } return acc; }, []).join('\n'), { size: 84.375, fill: '#008000', stroke: '#FFFFFF', strokeThickness: 6, fontWeight: '800', align: 'center' }); nameLabel.anchor.set(0.5); nameLabel.y = 50; self.addChild(nameLabel); var descriptionLabel = new Text2(label.split(' ').reduce(function (acc, word) { if (acc.length && acc[acc.length - 1].length + word.length <= 12) { acc[acc.length - 1] += ' ' + word; } else { acc.push(word); } return acc; }, []).join('\n') + ' Description', { size: 45, fill: '#000000' }); descriptionLabel.anchor.set(0.5); descriptionLabel.y = buttonGraphics.height / 2 + 240; var powerupDescriptions = { 'Pitching Arm!': ' ', 'More Carrots!': ' ', 'City Flying!': ' ', 'Present Frenzy!': ' ', 'Human Kindness!': ' ', 'Naughty Deflector!': ' ', 'Joyous!': ' ', 'New Time Zone!': ' ' }; descriptionLabel.setText(powerupDescriptions[label] || ''); descriptionLabel.anchor.set(0.5); descriptionLabel.x = 0; self.addChild(descriptionLabel); self.on('down', function (obj) { onClick(); }); }); var Present = Container.expand(function () { var self = Container.call(this); self.creationTime = LK.ticks; var presentGraphics = self.createAsset('present', 'Present Graphics', .5, .5); self.speed = -10; self.distanceTraveled = 0; self.speedX = 0; self.speedY = self.speed; self.lastMoved = LK.ticks; self.isCounter = false; self.move = function () { self.x += self.speedX; self.y += self.speedY; self.distanceTraveled += Math.sqrt(self.speedX * self.speedX + self.speedY * self.speedY); if (self.distanceTraveled <= 300) { self.scale.set((1 + self.distanceTraveled / 300 * 0.25) * 1.5); } else if (self.distanceTraveled <= 1200) { self.scale.set((1.25 - (self.distanceTraveled - 300) / 900 * 0.75) * 1.5); } else if (self.distanceTraveled <= 1500) { self.scale.set((0.5 - (self.distanceTraveled - 1200) / 300 * 0.5) * 1.5); } self.lastMoved = LK.ticks; if (self.counterLifetime && LK.ticks > self.counterLifetime || self.distanceTraveled > 1500) { self.destroy(); } }; }); var NaughtyHouse = Container.expand(function () { var self = Container.call(this); NaughtyHouse.prototype.spawnCounterPresent = function () { var counterPresent = new Present(); counterPresent.x = this.x; counterPresent.y = this.y; var angle = Math.random() < 0.5 ? 240 : 300; angle *= Math.PI / 180; counterPresent.speedX = counterPresent.speed * Math.cos(angle); counterPresent.speedY = counterPresent.speed * Math.sin(angle); counterPresent.counterLifetime = LK.ticks + 60; counterPresent.isCounter = true; return counterPresent; }; var houseGraphics = self.createAsset('naughtyHouse', 'Naughty House Graphics', .5, .5); houseGraphics.scale.set(3.5); self.speed = 4; self.lastMoved = LK.ticks; self.move = function () { self.y += self.speed; self.lastMoved = LK.ticks; if (self.y > 2732 + self.height) { self.destroy(); } }; }); var NiceHouse = Container.expand(function () { var self = Container.call(this); NiceHouse.prototype.hitByPresent = function () { var originalScale = this.scale.x; var bounceHeight = 0.1; var self = this; var bounce = function () { self.scale.y = originalScale + bounceHeight; LK.setTimeout(function () { self.scale.y = originalScale; }, 200); }; bounce(); }; var houseGraphics = self.createAsset('niceHouse', 'Nice House Graphics', .5, .5); houseGraphics.scale.set(3.5); self.speed = 4; self.hitCount = 0; self.move = function () { self.y += self.speed; if (self.y > 2732 + self.height) { self.destroy(); } }; }); var HappyHouse = Container.expand(function () { var self = Container.call(this); self.collisionTimer = 0; self.collidingWithSanta = false; HappyHouse.prototype.bounce = function () { var self = this; var originalScaleY = self.scale.y; var bounceHeight = 0.1; var bounceDuration = 5; var bounceCount = 0; var bounce = function () { if (bounceCount < bounceDuration) { self.scale.y = originalScaleY + bounceHeight * (bounceCount % 2 === 0 ? -1 : 1); LK.setTimeout(bounce, 100); bounceCount++; } else { self.scale.y = originalScaleY; } }; bounce(); }; var houseGraphics = self.createAsset('happyHouse', 'Happy House Graphics', .5, .5); houseGraphics.scale.set(3.5); self.speed = 4; self.move = function (santa) { self.y += self.speed; if (self.intersects(santa)) { if (!self.collidingWithSanta) { self.collidingWithSanta = true; self.collisionTimer = LK.ticks; } else if (LK.ticks - self.collisionTimer >= 30) { self.destroy(); LK.setScore(LK.getScore() + 2); self.gameInstance.addXP(2); } } else { self.collidingWithSanta = false; } if (self.y > 2732 + self.height) { self.destroy(); } }; }); var DarkHouse = Container.expand(function () { var self = Container.call(this); var houseGraphics = self.createAsset('darkHouse', 'Dark House Graphics', .5, .5); houseGraphics.scale.set(3.5); self.speed = 4; self.shake = function () { var originalX = self.x; var shakeIntensity = 5; var shakeDuration = 10; var shakeCount = 0; var shake = function () { if (shakeCount < shakeDuration) { self.x += shakeIntensity * (shakeCount % 2 === 0 ? 1 : -1); LK.setTimeout(shake, 50); shakeCount++; } else { self.x = originalX; } }; shake(); }; self.move = function () { self.y += self.speed; if (self.y > 2732 + self.height) { self.destroy(); } }; }); var Santa = Container.expand(function () { var self = Container.call(this); var santaGraphics = self.createAsset('santa', 'Santa Graphics', .5, .5); santaGraphics.scale.set(santaGraphics.scale.x * 1.3, santaGraphics.scale.y * 1.3); self.targetPosition = null; self.moveSpeed = 7; self.move = function (position) { if (position) { self.targetPosition = position; } if (self.targetPosition) { var dx = self.targetPosition.x - self.x; var dy = self.targetPosition.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); var threshold = 5; if (distance > threshold) { var angle = Math.atan2(dy, dx); var tentativeX = self.x + Math.cos(angle) * self.moveSpeed; var tentativeY = self.y + Math.sin(angle) * self.moveSpeed; self.x = tentativeX; if (tentativeY > 2732 - 2732 / 3) { self.y = tentativeY; } } else { self.targetPosition = null; } } }; }); var Snowflake = Container.expand(function () { var self = Container.call(this); var flakeGraphics = self.createAsset('snowflake', 'Snowflake Graphics', 0.5, 0.5); self.speedX = (Math.random() * 2 - 1) * 2; self.speedY = (Math.random() * 1 + 2) * 2; self.alpha = Math.random() * 0.5 + 0.5; self.scale.set(Math.random() * 0.5 + 0.5); self.move = function () { self.x += self.speedX; self.y += self.speedY; if (self.y > 2732 || self.x < -50 || self.x > 2098) { self.destroy(); } }; }); var Game = Container.expand(function () { var self = Container.call(this); var snowflakes = []; self.spawnSnowflake = function () { var snowflake = new Snowflake(); snowflake.x = Math.random() * 2048; snowflake.y = -50; snowflakes.push(snowflake); self.addChild(snowflake); }; for (var i = 0; i < 20; i++) self.spawnSnowflake(); var whiteBackground = self.createAsset('whiteRectangle', 'White Background', 0, 0); whiteBackground.width = 2048; whiteBackground.height = 2732; whiteBackground.tint = 0xFFFFFF; self.addChildAt(whiteBackground, 0); function startPresentFrenzy() { var originalFireRate = presentFireRate; var originalPresentSpeed = Present.prototype.speed; presentFireRate /= 3; Present.prototype.speed *= 2; if (typeof self.frenzyTimeout !== 'undefined') { LK.clearTimeout(self.frenzyTimeout); self.frenzyTimeout = LK.setTimeout(function () { presentFireRate = originalFireRate; Present.prototype.speed = originalPresentSpeed; allowPresentAngle = false; delete self.frenzyTimeout; }, 7000 + (self.frenzyTimeout - LK.ticks)); } else { self.frenzyTimeout = LK.setTimeout(function () { presentFireRate = originalFireRate; Present.prototype.speed = originalPresentSpeed; allowPresentAngle = false; delete self.frenzyTimeout; }, 7000); } allowPresentAngle = true; } function checkRankUp() { var xpThreshold = Math.floor(9 * Math.pow(1.20, rank - 1)); if (xp >= xpThreshold) { rank++; xp = 0; rankTxt.setText('Rank: ' + rank); updateXPDisplay(); self.spawnButtons(); } } var countdown = 60; var score = 0; var naughtyToNiceConversionRate = 3; var humanKindnessActive = false; var scoreTxt = new Text2('Score: ' + score, { size: 75, fill: "#228B22", stroke: "#FFFFFF", strokeThickness: 6 }); scoreTxt.anchor.set(0, 0); scoreTxt.x += 150; scoreTxt.y += 30; LK.gui.topLeft.addChild(scoreTxt); var timerTxt = new Text2(countdown.toString(), { size: 150, fill: "#228B22", stroke: "#FFFFFF", strokeThickness: 6 }); timerTxt.anchor.set(.5, 0); LK.gui.topCenter.addChild(timerTxt); var xp = 0; var rank = 1; var rankTxt = new Text2('Rank: ' + rank, { size: 75, fill: "#228B22", stroke: "#FFFFFF", strokeThickness: 6 }); rankTxt.anchor.set(0, 0); rankTxt.x = timerTxt.x + timerTxt.width + 180; rankTxt.y = scoreTxt.y; LK.gui.topCenter.addChild(rankTxt); var xpDisplayTxt = new Text2(xp + ' / ' + Math.floor(9 * Math.pow(1.20, rank - 1)), { size: 75, fill: "#228B22", stroke: "#FFFFFF", strokeThickness: 6 }); xpDisplayTxt.anchor.set(0, 0); xpDisplayTxt.x = rankTxt.x + 20; xpDisplayTxt.y = rankTxt.y + rankTxt.height + 20; LK.gui.topCenter.addChild(xpDisplayTxt); function updateXPDisplay() { var xpThreshold = Math.floor(9 * Math.pow(1.20, rank - 1)); xpDisplayTxt.setText(xp + ' / ' + xpThreshold); } self.addXP = function (amount) { if (amount > 0 && countdown > 0) { xp += amount; checkRankUp(); updateXPDisplay(); } }; var timer = LK.setInterval(function () { countdown--; if (countdown >= 0) { timerTxt.setText(countdown.toString()); xpDisplayTxt.visible = true; } else if (countdown === -1) { xpDisplayTxt.visible = false; var popup = new MerryChristmasPopup(score, function () { score += 1000; scoreTxt.setText('Score: ' + score); popup.destroy(); }); self.addChild(popup); self.addChildAt(santa, self.children.length); countdown = -2; } else { timerTxt.visible = false; buttons.forEach(function (button) { button.destroy(); }); buttons = []; } }, 1000); var houses = []; var houseSpawnRate = 1; var buttons = []; self.spawnButtons = function () { buttons.forEach(function (button) { button.destroy(); }); buttons = []; var powerups = [{ label: 'Throw Faster!', action: function () { presentFireRate *= 0.65; } }, { label: 'Dash Around!', action: function () { santa.moveSpeed *= 1.6; } }, { label: 'More Time!', action: function () { countdown += 15; timerTxt.setText(countdown.toString()); } }, { label: 'Present Frenzy!', action: function () { startPresentFrenzy(); } }, { label: 'Human Kindness!', action: function () { humanKindnessActive = true; } }, { label: 'Naughty Bounce!', action: function () { NaughtyHouse.prototype.requiredHitCount = 2; } }, { label: 'Just Points!', action: function () { score += Math.ceil(score * 0.2); scoreTxt.setText('Score: ' + score); } }, { label: 'More Houses!', action: function () { houseSpawnRate *= 0.5; } }].filter(function (powerup) { if (powerup.label === 'Joyous!' && rank <= 4) { return false; } if (powerup.label === 'Present Frenzy!' && rank <= 6) { return false; } if (powerup.label === 'More Carrots!' && rank >= 5) { return false; } if (powerup.label === 'Pitching Arm!' && rank >= 7) { return false; } return true; }); var chosenPowerups = powerups.sort(function () { return Math.random() - Math.random(); }).slice(0, 2); chosenPowerups.forEach(function (powerup, index) { var button = new Button(powerup.label, function () { powerup.action(); buttons.forEach(function (btn) { btn.destroy(); }); }); button.x = 2048 / 2 + (index === 0 ? -375 : 375); button.y = 2732 / 2 - 350; buttons.push(button); self.addChild(button); }); }; self.spawnHouse = function () { var nextSpawnTime = (Math.random() * 700 + 700) * houseSpawnRate; var houseWidth = 3.5 * self.createAsset('niceHouse', 'Nice House Graphics', .5, .5).width; var newHouseX = Math.random() * (2048 - houseWidth) + houseWidth / 2; var houseHeight = self.createAsset('niceHouse', 'Nice House Graphics', .5, .5).height; var newHouseY = -Math.random() * 500 - houseHeight; var canSpawn = true; for (var i = 0; i < houses.length; i++) { var house = houses[i]; if (Math.abs(newHouseX - house.x) < house.width * 1.5 && Math.abs(newHouseY - house.y) < house.height * 1.5) { canSpawn = false; break; } } if (canSpawn) { var houseTypes = [NaughtyHouse, NiceHouse]; var naughtyCount = houses.reduce(function (acc, house) { return acc + (house instanceof NaughtyHouse ? 1 : 0); }, 0); var randomIndex; if (humanKindnessActive && naughtyCount % 3 === 0) { randomIndex = 1; } else { randomIndex = Math.random() < 0.5 ? 0 : 1; } var house = new houseTypes[randomIndex](); house.x = newHouseX; house.y = newHouseY; houses.push(house); var buttonIndex = buttons.length > 0 ? self.children.indexOf(buttons[0]) : self.children.length; buttonIndex = buttonIndex === -1 ? self.children.length : buttonIndex; self.addChildAt(house, buttonIndex); self.addChildAt(santa, self.children.length); } if (countdown > 2) { LK.setTimeout(self.spawnHouse, nextSpawnTime); } }; self.spawnHouse(); var houses = []; var presents = []; var santa = self.addChild(new Santa()); santa.x = 2048 / 2; santa.y = 2732 - 2732 * 0.1; var presentFireRate = 52.5; var presentFireCounter = 0; stage.on('down', function (obj) { var pos = obj.event.getLocalPosition(self); santa.move(pos); }); LK.on('tick', function () { for (var i = snowflakes.length - 1; i >= 0; i--) { var snowflake = snowflakes[i]; snowflake.move(); if (snowflake.y > 2732 || snowflake.x < -50 || snowflake.x > 2098) { snowflake.destroy(); snowflakes.splice(i, 1); } } if (LK.ticks % 15 === 0) self.spawnSnowflake(); santa.move(); if (countdown > 0 && presentFireCounter++ >= presentFireRate) { var present = new Present(); present.x = santa.x; present.y = santa.y; if (allowPresentAngle) { var angle = (Math.random() * 20 + 80) * (Math.PI / 180); present.speedX = present.speed * Math.cos(angle); present.speedY = present.speed * Math.sin(angle); } else { present.speedX = 0; present.speedY = present.speed; } presents.push(present); var buttonIndex = buttons.length > 0 ? self.children.indexOf(buttons[0]) : self.children.length; buttonIndex = buttonIndex === -1 ? self.children.length : buttonIndex; self.addChildAt(present, buttonIndex); presentFireCounter = 0; } for (var i = presents.length - 1; i >= 0; i--) { var present = presents[i]; if (LK.ticks - present.lastMoved > 6) { present.destroy(); presents.splice(i, 1); continue; } present.move(); for (var j = houses.length - 1; j >= 0; j--) { var house = houses[j]; if (house instanceof NaughtyHouse && present.intersects(house) && !present.isCounter && LK.ticks - present.creationTime <= 240) { house.hitCount = (house.hitCount || 0) + 1; if (house.hitCount >= (NaughtyHouse.prototype.requiredHitCount || 1)) { var darkHouse = new DarkHouse(); darkHouse.x = house.x; darkHouse.y = house.y; darkHouse.shake(); houses[j] = darkHouse; self.addChild(darkHouse); self.addChildAt(santa, self.children.length); score = Math.max(0, score - 1); scoreTxt.setText('Score: ' + score); house.destroy(); } else { var counterPresent = house.spawnCounterPresent(); presents.push(counterPresent); self.addChild(counterPresent); } present.destroy(); presents.splice(i, 1); break; } else if (house instanceof NiceHouse && present.intersects(house) && LK.ticks - present.creationTime <= 240) { house.hitCount++; house.hitByPresent(); score++; self.addXP(1); scoreTxt.setText('Score: ' + score); present.destroy(); presents.splice(i, 1); if (house.hitCount >= 3) { var happyHouse = new HappyHouse(); happyHouse.x = house.x; happyHouse.y = house.y; houses[j] = happyHouse; self.addChild(happyHouse); self.addChildAt(santa, self.children.length); happyHouse.bounce(); house.destroy(); } break; } } if (score > 1000) { LK.showGameOver(); } } for (var i = houses.length - 1; i >= 0; i--) { var house = houses[i]; if (LK.ticks - house.lastMoved > 6) { house.destroy(); houses.splice(i, 1); continue; } house.move(santa); if (house.y > 2732 + house.height) { houses.splice(i, 1); } } }); });
===================================================================
--- original.js
+++ change.js
@@ -225,9 +225,8 @@
} else if (LK.ticks - self.collisionTimer >= 30) {
self.destroy();
LK.setScore(LK.getScore() + 2);
self.gameInstance.addXP(2);
- self.gameInstance.addXP(2);
}
} else {
self.collidingWithSanta = false;
}
overhead view of simple box house christmas decorations giant christmas tree out front video game asset 2d blank background Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
overhead view of drab house with giant prohibition symbol snowy lawn video game asset 2d blank background Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
overhead view of charred remains of a completely burned down box house snowy lawn video game asset 2d blank background Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Santa on sleigh pulled by reindeer blank background no shadows flying forward away straight top down Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
simple red christmas ornament 2d blank background high contrast no shadows in game asset Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
simple snowflake In-Game asset. 2d. Blank background. High contrast. No shadows. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
old white scroll unfurled blank no shadows Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
top down simple wrapped red present with gold bow. In-Game asset. 2d. Blank background. High contrast. No shadows. 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.
top down plate of cookies glass of milk. In-Game asset. Blank background. No shadows. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.