User prompt
put something called turret in assets
User prompt
Change the appearance of the turret that appears when you press friend
User prompt
When I click on friend, I don't want a hat to come to my head
User prompt
When I click on the friend button nothing happens, just the mini gun comes to me and sprays the animals around it and kills them
User prompt
Play "sell" sound when clicking "sell"
User prompt
Play the "shoot" sound when we shoot
User prompt
Remove the skin button below and instead write friend $100
User prompt
Let the gun on our hats fire at the mortars
User prompt
May the hat that comes to our heads help us and hit the animals.
User prompt
When we press the skin button, our color should not change and nothing should happen to us, only the hat should come
User prompt
When we get the skin, let's put a hat on our head
User prompt
Add a button so that it says skin on it so we can buy skin for $200
User prompt
remove menu
User prompt
beautify the menu
User prompt
add menu to game
User prompt
2. Make the upgrade to $1000
User prompt
Make your first upgrade $500
User prompt
Place the "sell" button above the upgrade
User prompt
Very rarely a stork comes stork 100 money
User prompt
put the character at the center of the screen
User prompt
VERY VERY VERY LITTLE RIGHT AND VERY LITTLE DOWN
User prompt
very very very little right and a little down
User prompt
a little bit to the left and a little bit down
User prompt
a little more middle and a little more top
User prompt
Let our character remain in the middle
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Animal base class var Animal = Container.expand(function () { var self = Container.call(this); self.type = 'animal'; self.value = 0; self.speed = 0; self.caught = false; self.init = function (animalType) { self.animalType = animalType; var assetId; if (animalType === 'trex') { assetId = 'trex'; self.value = 200; self.speed = 2.2 + Math.random() * 0.8; } else if (animalType === 'lion') { assetId = 'lion'; self.value = 50; self.speed = 3.2 + Math.random() * 1.2; } else if (animalType === 'zebra') { assetId = 'zebra'; self.value = 30; self.speed = 3.8 + Math.random() * 1.5; } else if (animalType === 'bird') { assetId = 'bird'; self.value = 10; self.speed = 5.5 + Math.random() * 2.5; } else if (animalType === 'spider') { assetId = 'spider'; self.value = 2; self.speed = 2.2 + Math.random() * 1.2; } else if (animalType === 'stork') { assetId = 'bird'; self.value = 100; self.speed = 4.5 + Math.random() * 1.5; // Tint the stork to make it visually distinct // (LK.getAsset does not support dynamic tint, so we use the same asset for now) } self.asset = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5 }); self.direction = Math.random() < 0.5 ? 1 : -1; self.y = 500 + Math.random() * 1700; if (self.direction === 1) { self.x = -self.asset.width / 2; } else { self.x = 2048 + self.asset.width / 2; self.asset.scaleX = -1; } }; self.update = function () { if (self.caught) return; self.x += self.speed * self.direction; // Remove if off screen if (self.direction === 1 && self.x > 2048 + self.asset.width / 2 || self.direction === -1 && self.x < -self.asset.width / 2) { self.destroy(); var idx = animals.indexOf(self); if (idx !== -1) animals.splice(idx, 1); } }; self.getSellValue = function () { return self.value; }; return self; }); // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); self.speed = 0; self.range = 0; self.gunType = 'basic'; self.init = function (gunType) { self.gunType = gunType; var assetId; if (gunType === 'basic') { assetId = 'bullet_basic'; self.speed = 28; self.range = 1200; } else if (gunType === 'rapid') { assetId = 'bullet_rapid'; self.speed = 36; self.range = 900; } else if (gunType === 'sniper') { assetId = 'bullet_sniper'; self.speed = 44; self.range = 1800; } self.asset = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5 }); self.distance = 0; }; self.update = function () { if (typeof self.dirX === "number" && typeof self.dirY === "number") { self.x += self.speed * self.dirX; self.y += self.speed * self.dirY; self.distance += self.speed; } else { self.x += self.speed; self.distance += self.speed; } if (self.distance > self.range || self.x < -100 || self.x > 2200 || self.y < -100 || self.y > 2832) { self.destroy(); var idx = bullets.indexOf(self); if (idx !== -1) bullets.splice(idx, 1); } }; return self; }); // Gun class var Gun = Container.expand(function () { var self = Container.call(this); self.gunType = 'basic'; self.reloadTime = 0; self.lastShotTick = 0; self.init = function (gunType) { self.gunType = gunType; var assetId; if (gunType === 'basic') { assetId = 'gun_basic'; self.reloadTime = 30; } else if (gunType === 'rapid') { assetId = 'gun_rapid'; self.reloadTime = 12; } else if (gunType === 'sniper') { assetId = 'gun_sniper'; self.reloadTime = 60; } self.asset = self.attachAsset(assetId, { anchorX: 0.1, anchorY: 0.5 }); }; self.canShoot = function () { return LK.ticks - self.lastShotTick >= self.reloadTime; }; self.shoot = function () { self.lastShotTick = LK.ticks; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2e5d2c }); /**** * Game Code ****/ // Game state variables // Animals // Guns // Bullets // Sounds // Music var animals = []; var bullets = []; var caughtAnimals = []; var money = 0; var gunLevel = 0; // 0: basic, 1: rapid, 2: sniper var gunTypes = ['basic', 'rapid', 'sniper']; var gunPrices = [0, 500, 600]; var gunNames = ['Basic Gun', 'Rapid Gun', 'Sniper Gun']; var gun; // UI var moneyTxt = new Text2('$0', { size: 90, fill: 0xFFF700 }); moneyTxt.anchor.set(0.5, 0); LK.gui.top.addChild(moneyTxt); var caughtTxt = new Text2('Bag: 0', { size: 70, fill: 0xFFFFFF }); caughtTxt.anchor.set(0.5, 0); LK.gui.top.addChild(caughtTxt); caughtTxt.y = 110; var gunTxt = new Text2('Gun: Basic', { size: 60, fill: 0xFFFFFF }); gunTxt.anchor.set(0.5, 0); LK.gui.top.addChild(gunTxt); gunTxt.y = 200; var sellBtn = new Text2('Sell', { size: 70, fill: 0xFF8800 }); sellBtn.anchor.set(0.5, 0.5); LK.gui.bottom.addChild(sellBtn); sellBtn.y = -200; var upgradeBtn = new Text2('Upgrade', { size: 70, fill: 0x00FF00 }); upgradeBtn.anchor.set(0.5, 0.5); LK.gui.bottom.addChild(upgradeBtn); upgradeBtn.y = -120; // Gun gun = new Gun(); gun.init(gunTypes[gunLevel]); game.addChild(gun); // Center the gun horizontally and vertically gun.x = 2048 / 2; gun.y = 2732 / 2; // Helper: spawn animal function spawnAnimal() { // Very rarely, spawn a stork if (Math.random() < 0.003) { var stork = new Animal(); stork.init('stork'); game.addChild(stork); animals.push(stork); return; } var r = Math.random(); var animalType; if (r < 0.005) { animalType = 'trex'; } else if (r < 0.13) { animalType = 'lion'; } else if (r < 0.33) { animalType = 'zebra'; } else if (r < 0.70) { animalType = 'bird'; } else { animalType = 'spider'; } var animal = new Animal(); animal.init(animalType); game.addChild(animal); animals.push(animal); } // Helper: update UI function updateUI() { moneyTxt.setText('$' + money); caughtTxt.setText('Bag: ' + caughtAnimals.length); gunTxt.setText('Gun: ' + gunNames[gunLevel]); if (gunLevel < 2) { upgradeBtn.setText('Upgrade ($' + gunPrices[gunLevel + 1] + ')'); upgradeBtn.alpha = money >= gunPrices[gunLevel + 1] ? 1 : 0.5; } else { upgradeBtn.setText('Maxed'); upgradeBtn.alpha = 0.5; } } // Helper: sell animals function sellAnimals() { if (caughtAnimals.length === 0) return; var total = 0; for (var i = 0; i < caughtAnimals.length; i++) { total += caughtAnimals[i].getSellValue(); } money += total; caughtAnimals = []; LK.getSound('sell').play(); updateUI(); } // Helper: upgrade gun function upgradeGun() { if (gunLevel >= 2) return; var price = gunPrices[gunLevel + 1]; if (money < price) return; money -= price; gunLevel++; gun.destroy(); gun = new Gun(); gun.init(gunTypes[gunLevel]); game.addChild(gun); gun.x = 2048 / 2; gun.y = 2732 / 2; LK.getSound('upgrade').play(); updateUI(); } // UI events upgradeBtn.down = function (x, y, obj) { upgradeGun(); }; sellBtn.down = function (x, y, obj) { sellAnimals(); }; // Touch to shoot game.down = function (x, y, obj) { // Don't shoot if touch is on GUI (bottom 300px) if (y > 2732 - 300) return; if (!gun.canShoot()) return; var bullet = new Bullet(); bullet.init(gunTypes[gunLevel]); bullet.x = gun.x + gun.asset.width * 0.9; bullet.y = gun.y; game.addChild(bullet); bullets.push(bullet); gun.shoot(); LK.getSound('shoot').play(); // Animate gun recoil tween(gun, { x: gun.x - 30 }, { duration: 60, easing: tween.cubicOut, onFinish: function onFinish() { tween(gun, { x: 300 }, { duration: 80, easing: tween.cubicIn }); } }); }; // Gun is fixed in the center; no dragging needed game.move = function (x, y, obj) { // No dragging logic }; // Shoot from the center gun position game.down = function (x, y, obj) { // Don't shoot if touch is on GUI (bottom 300px) if (y > 2732 - 300) return; if (!gun.canShoot()) return; var bullet = new Bullet(); bullet.init(gunTypes[gunLevel]); // Always shoot from the center gun position var gunMuzzleX = gun.x + gun.asset.width * 0.9; var gunMuzzleY = gun.y; bullet.x = gunMuzzleX; bullet.y = gunMuzzleY; var dx = x - gunMuzzleX; var dy = y - gunMuzzleY; var dist = Math.sqrt(dx * dx + dy * dy); if (dist === 0) dist = 1; // prevent division by zero bullet.dirX = dx / dist; bullet.dirY = dy / dist; bullet.rotation = Math.atan2(dy, dx); game.addChild(bullet); bullets.push(bullet); gun.shoot(); LK.getSound('shoot').play(); // Animate gun recoil tween(gun, { x: gun.x - 30 }, { duration: 60, easing: tween.cubicOut, onFinish: function onFinish() { tween(gun, { x: 2048 / 2 }, { duration: 80, easing: tween.cubicIn }); } }); }; game.up = function (x, y, obj) { // No dragging logic }; // Main update loop game.update = function () { // Spawn animals if (LK.ticks % 45 === 0 && animals.length < 7) { spawnAnimal(); } // Update animals for (var i = animals.length - 1; i >= 0; i--) { animals[i].update(); } // Update bullets for (var j = bullets.length - 1; j >= 0; j--) { bullets[j].update(); } // Bullet-animal collision for (var b = bullets.length - 1; b >= 0; b--) { var bullet = bullets[b]; for (var a = animals.length - 1; a >= 0; a--) { var animal = animals[a]; if (animal.caught) continue; if (bullet.intersects(animal)) { animal.caught = true; caughtAnimals.push(animal); // Animate animal fade out tween(animal, { alpha: 0 }, { duration: 300, onFinish: function onFinish() { animal.destroy(); var idx = animals.indexOf(animal); if (idx !== -1) animals.splice(idx, 1); } }); bullet.destroy(); bullets.splice(b, 1); break; } } } updateUI(); }; // Play music LK.playMusic('forest_theme', { fade: { start: 0, end: 1, duration: 1200 } });
===================================================================
--- original.js
+++ change.js
@@ -170,9 +170,9 @@
var caughtAnimals = [];
var money = 0;
var gunLevel = 0; // 0: basic, 1: rapid, 2: sniper
var gunTypes = ['basic', 'rapid', 'sniper'];
-var gunPrices = [0, 200, 600];
+var gunPrices = [0, 500, 600];
var gunNames = ['Basic Gun', 'Rapid Gun', 'Sniper Gun'];
var gun;
// UI
var moneyTxt = new Text2('$0', {
Spider pixel. In-Game asset. 2d. High contrast. No shadows
Lion pixel. In-Game asset. 2d. High contrast. No shadows
Zebra pixel. In-Game asset. 2d. High contrast. No shadows
Trex pixel. In-Game asset. 2d. High contrast. No shadows
Bird pixel. In-Game asset. 2d. High contrast. No shadows
person with glock18 in hand pixel. In-Game asset. 2d. High contrast. No shadows
man with sniper
Person with m4a1 in hand
Bullet pixel. In-Game asset. 2d. High contrast. No shadows
Turret pixel. In-Game asset. 2d. High contrast. No shadows
Unicorn pixel. In-Game asset. 2d. High contrast. No shadows
Tree pixel. In-Game asset. 2d. High contrast. No shadows
man with laser gun