User prompt
Make her say stuff when the auto clicker farts
User prompt
Make the dog say synonyms for gross when the fart button is pressed
User prompt
Delete leaderboard button
User prompt
Fix line 522
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'LK.showLeaderboard();' Line Number: 522
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'LK.showLeaderboard();' Line Number: 522
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'LK.showLeaderboard();' Line Number: 522
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'LK.showLeaderboard();' Line Number: 522
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'LK.showLeaderboard();' Line Number: 522
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'LK.showLeaderboard();' Line Number: 522
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'LK.showLeaderboard();' Line Number: 522
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'LK.showLeaderboard();' Line Number: 522
User prompt
Make the leader board button actually do something
User prompt
Don’t play the shake animation
User prompt
Help it stay in the center no matter how rapid I click
User prompt
The dog is fighting for its life teleporting before it slides far enough
User prompt
The auto also goes along with the dtacked multiplier
User prompt
Make different levels of auto clicker I can buy the more expensive the more rapid
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'LK.showLeaderboard();' Line Number: 407
User prompt
Leader board
User prompt
Don’t make the clicks count the tiny button on top make it count each time I click the FART button and make it go up according to multiplyers
User prompt
Make the number increase as I click the fart button
User prompt
Make the click counter fit the right border of my phone
User prompt
Make the number of clicks in the top right and make it bold and big so you can read it
User prompt
Make a click counter
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Dog face class var DogFace = Container.expand(function () { var self = Container.call(this); // Normal face var normalFace = self.attachAsset('dog_normal', { anchorX: 0.5, anchorY: 0.5 }); // React face var reactFace = self.attachAsset('dog_react', { anchorX: 0.5, anchorY: 0.5, alpha: 0 }); // Show normal face self.showNormal = function () { normalFace.alpha = 1; reactFace.alpha = 0; }; // Show react face self.showReact = function () { normalFace.alpha = 0; reactFace.alpha = 1; }; // Flash react face for a short time, then return to normal self.react = function () { self.showReact(); // Store original X to restore after animation var originalX = self.x; // Animate a little shake for fun tween(self, { x: originalX + 30 }, { duration: 80, easing: tween.cubicOut, onFinish: function onFinish() { tween(self, { x: originalX - 30 }, { duration: 120, easing: tween.cubicInOut, onFinish: function onFinish() { tween(self, { x: originalX }, { duration: 80, easing: tween.cubicIn, onFinish: function onFinish() { // Return to normal face after 500ms LK.setTimeout(function () { self.showNormal(); // Always teleport dog to center after animation, even if spammed self.x = 2048 / 2; }, 500); } }); } }); } }); }; self.showNormal(); return self; }); // Fart button class var FartButton = Container.expand(function () { var self = Container.call(this); // Button shape var btn = self.attachAsset('fart_btn', { anchorX: 0.5, anchorY: 0.5 }); // "FART" text var fartTxt = new Text2('FART', { size: 120, fill: 0x7A5C00 }); fartTxt.anchor.set(0.5, 0.5); fartTxt.x = 0; fartTxt.y = 0; self.addChild(fartTxt); // Fart cloud effect (hidden by default) var fartCloud = self.attachAsset('centerCircle', { anchorX: 0.5, anchorY: 1, scaleX: 1.2, scaleY: 0.7, x: 0, y: -110, alpha: 0, tint: 0xeeeecc }); fartCloud.width = btn.width * 0.7; fartCloud.height = btn.height * 0.7; // Show fart cloud with animation self.showFartCloud = function () { fartCloud.alpha = 0.85; fartCloud.scaleX = 1.2; fartCloud.scaleY = 0.7; fartCloud.y = -110; tween(fartCloud, { alpha: 0, y: fartCloud.y - 80, scaleX: 1.5, scaleY: 1.1 }, { duration: 420, easing: tween.cubicOut }); }; // Simple press animation self.animatePress = function () { tween(self, { scaleX: 0.92, scaleY: 0.92 }, { duration: 60, easing: tween.cubicIn, onFinish: function onFinish() { tween(self, { scaleX: 1, scaleY: 1 }, { duration: 80, easing: tween.cubicOut }); } }); self.showFartCloud(); }; return self; }); // Person standing and recording class var PersonRecording = Container.expand(function () { var self = Container.call(this); // Single square for the person var personSquare = self.attachAsset('person_leg', { anchorX: 0.5, anchorY: 0.5 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xE3F6FF }); /**** * Game Code ****/ // Fart sound // Big fart button // Cartoon dog face (shocked/disgusted) // Cartoon dog face (normal) // Center dog face // Person recording assets var dogFace = new DogFace(); dogFace.x = 2048 / 2; dogFace.y = 1100; game.addChild(dogFace); // Add person standing and recording at the left side var person = new PersonRecording(); person.x = 400; person.y = 1200; game.addChild(person); // Place fart button below dog face var fartBtn = new FartButton(); fartBtn.x = 2048 / 2; fartBtn.y = 2000; game.addChild(fartBtn); // Prevent accidental tap in top left (menu area): nothing is placed there // Instructions text (top center, GUI) var instrTxt = new Text2('Tap the FART button!', { size: 90, fill: 0x2D2D2D }); instrTxt.anchor.set(0.5, 0); LK.gui.top.addChild(instrTxt); // --- Clicker Game State --- var fartCount = 0; var fartPerClick = 1; // Upgrade definitions: [amount, base cost, cost multiplier] var upgrades = [{ amount: 1, base: 10, mult: 1.15, label: "x1" }, { amount: 10, base: 20, mult: 1.18, label: "x10" }, { amount: 50, base: 120, mult: 1.22, label: "x50" }, { amount: 100, base: 600, mult: 1.28, label: "x100" }, { amount: 1000, base: 4000, mult: 1.35, label: "x1000" }]; // Track how many times each upgrade was bought var upgradesBought = [0, 0, 0, 0, 0]; // --- UI Elements --- var fartCountTxt = new Text2('0', { size: 120, fill: 0x222222 }); fartCountTxt.anchor.set(0.5, 0); fartCountTxt.x = 2048 / 2; fartCountTxt.y = 200; LK.gui.top.addChild(fartCountTxt); var fartPerClickTxt = new Text2('Farts/click: 1', { size: 60, fill: 0x444444 }); fartPerClickTxt.anchor.set(0.5, 0); fartPerClickTxt.x = 2048 / 2; fartPerClickTxt.y = 340; LK.gui.top.addChild(fartPerClickTxt); // --- Upgrades UI --- var upgradeButtons = []; var upgradeTxts = []; var upgradeCostTxts = []; var upgradeYStart = 550; var upgradeSpacing = 120; // Shop toggle state var shopVisible = false; // Start with shop closed // Create upgrade shop toggle button var shopBtn = LK.getAsset('fart_btn', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.45, scaleY: 0.45, // Make square: scaleX and scaleY are equal x: 400, y: upgradeYStart - 120 }); shopBtn.interactive = true; var shopBtnTxt = new Text2('Upgrade Shop', { size: 70, fill: 0x7A5C00 }); shopBtnTxt.anchor.set(0.5, 0.5); shopBtnTxt.x = 0; shopBtnTxt.y = 0; shopBtn.addChild(shopBtnTxt); game.addChild(shopBtn); // Create upgrade buttons (initially hidden) for (var i = 0; i < upgrades.length; ++i) { // Button var btn = LK.getAsset('fart_btn', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 0.5, x: 400, y: upgradeYStart + i * upgradeSpacing }); btn.interactive = true; // Label var txt = new Text2('Upgrade ' + upgrades[i].label, { size: 60, fill: 0x7A5C00 }); txt.anchor.set(0.5, 0.5); txt.x = 0; txt.y = -20; btn.addChild(txt); // Cost var costTxt = new Text2('', { size: 44, fill: 0x444444 }); costTxt.anchor.set(0.5, 0.5); costTxt.x = 0; costTxt.y = 50; btn.addChild(costTxt); // Add to game game.addChild(btn); btn.visible = false; // Hide upgrade buttons initially upgradeButtons.push(btn); upgradeTxts.push(txt); upgradeCostTxts.push(costTxt); } // Shop toggle logic shopBtn.down = function (x, y, obj) { shopVisible = !shopVisible; for (var i = 0; i < upgradeButtons.length; ++i) { upgradeButtons[i].visible = shopVisible; } // Feedback: flash the shop button LK.effects.flashObject(shopBtn, 0xfff7b2, 120); }; // --- Helper: Calculate upgrade cost --- function getUpgradeCost(idx) { var u = upgrades[idx]; var n = upgradesBought[idx]; // Exponential cost scaling return Math.floor(u.base * Math.pow(u.mult, n)); } // --- Helper: Update all UI --- function updateUI() { fartCountTxt.setText('Farts: ' + fartCount); fartPerClickTxt.setText('Farts/click: ' + fartPerClick); for (var i = 0; i < upgrades.length; ++i) { var cost = getUpgradeCost(i); upgradeCostTxts[i].setText('Cost: ' + cost); // Gray out if can't afford if (fartCount >= cost) { upgradeButtons[i].alpha = 1; } else { upgradeButtons[i].alpha = 0.5; } } } updateUI(); // --- Upgrade Button Handlers --- for (var i = 0; i < upgrades.length; ++i) { (function (idx) { upgradeButtons[idx].down = function (x, y, obj) { var cost = getUpgradeCost(idx); if (fartCount >= cost) { fartCount -= cost; upgradesBought[idx]++; fartPerClick += upgrades[idx].amount; updateUI(); // Feedback LK.effects.flashObject(upgradeButtons[idx], 0xeeeecc, 120); } }; })(i); } // --- Fart Button Handler (Clicker) --- fartBtn.down = function (x, y, obj) { // Animate button fartBtn.animatePress(); // Button color flash for feedback LK.effects.flashObject(fartBtn, 0xfff7b2, 120); // Play fart sound LK.getSound('fart_snd').play(); // Dog reacts dogFace.react(); // Add farts! fartCount += fartPerClick; updateUI(); }; // Make the button big and easy to tap: handle press anywhere on the button fartBtn.interactive = true; ; // --- Simple Click Counter Button --- var clickCount = 0; var clickCountTxt = new Text2('Clicks: 0', { size: 80, fill: 0x2D2D2D }); clickCountTxt.anchor.set(0.5, 0); clickCountTxt.x = 2048 / 2; clickCountTxt.y = 450; LK.gui.top.addChild(clickCountTxt); var clickBtn = LK.getAsset('fart_btn', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.32, scaleY: 0.32, x: 2048 / 2, y: 650 }); clickBtn.interactive = true; var clickBtnTxt = new Text2('Click Me!', { size: 60, fill: 0x7A5C00 }); clickBtnTxt.anchor.set(0.5, 0.5); clickBtnTxt.x = 0; clickBtnTxt.y = 0; clickBtn.addChild(clickBtnTxt); game.addChild(clickBtn); clickBtn.down = function (x, y, obj) { clickCount++; clickCountTxt.setText('Clicks: ' + clickCount); LK.effects.flashObject(clickBtn, 0xfff7b2, 120); };
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Dog face class
var DogFace = Container.expand(function () {
var self = Container.call(this);
// Normal face
var normalFace = self.attachAsset('dog_normal', {
anchorX: 0.5,
anchorY: 0.5
});
// React face
var reactFace = self.attachAsset('dog_react', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0
});
// Show normal face
self.showNormal = function () {
normalFace.alpha = 1;
reactFace.alpha = 0;
};
// Show react face
self.showReact = function () {
normalFace.alpha = 0;
reactFace.alpha = 1;
};
// Flash react face for a short time, then return to normal
self.react = function () {
self.showReact();
// Store original X to restore after animation
var originalX = self.x;
// Animate a little shake for fun
tween(self, {
x: originalX + 30
}, {
duration: 80,
easing: tween.cubicOut,
onFinish: function onFinish() {
tween(self, {
x: originalX - 30
}, {
duration: 120,
easing: tween.cubicInOut,
onFinish: function onFinish() {
tween(self, {
x: originalX
}, {
duration: 80,
easing: tween.cubicIn,
onFinish: function onFinish() {
// Return to normal face after 500ms
LK.setTimeout(function () {
self.showNormal();
// Always teleport dog to center after animation, even if spammed
self.x = 2048 / 2;
}, 500);
}
});
}
});
}
});
};
self.showNormal();
return self;
});
// Fart button class
var FartButton = Container.expand(function () {
var self = Container.call(this);
// Button shape
var btn = self.attachAsset('fart_btn', {
anchorX: 0.5,
anchorY: 0.5
});
// "FART" text
var fartTxt = new Text2('FART', {
size: 120,
fill: 0x7A5C00
});
fartTxt.anchor.set(0.5, 0.5);
fartTxt.x = 0;
fartTxt.y = 0;
self.addChild(fartTxt);
// Fart cloud effect (hidden by default)
var fartCloud = self.attachAsset('centerCircle', {
anchorX: 0.5,
anchorY: 1,
scaleX: 1.2,
scaleY: 0.7,
x: 0,
y: -110,
alpha: 0,
tint: 0xeeeecc
});
fartCloud.width = btn.width * 0.7;
fartCloud.height = btn.height * 0.7;
// Show fart cloud with animation
self.showFartCloud = function () {
fartCloud.alpha = 0.85;
fartCloud.scaleX = 1.2;
fartCloud.scaleY = 0.7;
fartCloud.y = -110;
tween(fartCloud, {
alpha: 0,
y: fartCloud.y - 80,
scaleX: 1.5,
scaleY: 1.1
}, {
duration: 420,
easing: tween.cubicOut
});
};
// Simple press animation
self.animatePress = function () {
tween(self, {
scaleX: 0.92,
scaleY: 0.92
}, {
duration: 60,
easing: tween.cubicIn,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 80,
easing: tween.cubicOut
});
}
});
self.showFartCloud();
};
return self;
});
// Person standing and recording class
var PersonRecording = Container.expand(function () {
var self = Container.call(this);
// Single square for the person
var personSquare = self.attachAsset('person_leg', {
anchorX: 0.5,
anchorY: 0.5
});
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xE3F6FF
});
/****
* Game Code
****/
// Fart sound
// Big fart button
// Cartoon dog face (shocked/disgusted)
// Cartoon dog face (normal)
// Center dog face
// Person recording assets
var dogFace = new DogFace();
dogFace.x = 2048 / 2;
dogFace.y = 1100;
game.addChild(dogFace);
// Add person standing and recording at the left side
var person = new PersonRecording();
person.x = 400;
person.y = 1200;
game.addChild(person);
// Place fart button below dog face
var fartBtn = new FartButton();
fartBtn.x = 2048 / 2;
fartBtn.y = 2000;
game.addChild(fartBtn);
// Prevent accidental tap in top left (menu area): nothing is placed there
// Instructions text (top center, GUI)
var instrTxt = new Text2('Tap the FART button!', {
size: 90,
fill: 0x2D2D2D
});
instrTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(instrTxt);
// --- Clicker Game State ---
var fartCount = 0;
var fartPerClick = 1;
// Upgrade definitions: [amount, base cost, cost multiplier]
var upgrades = [{
amount: 1,
base: 10,
mult: 1.15,
label: "x1"
}, {
amount: 10,
base: 20,
mult: 1.18,
label: "x10"
}, {
amount: 50,
base: 120,
mult: 1.22,
label: "x50"
}, {
amount: 100,
base: 600,
mult: 1.28,
label: "x100"
}, {
amount: 1000,
base: 4000,
mult: 1.35,
label: "x1000"
}];
// Track how many times each upgrade was bought
var upgradesBought = [0, 0, 0, 0, 0];
// --- UI Elements ---
var fartCountTxt = new Text2('0', {
size: 120,
fill: 0x222222
});
fartCountTxt.anchor.set(0.5, 0);
fartCountTxt.x = 2048 / 2;
fartCountTxt.y = 200;
LK.gui.top.addChild(fartCountTxt);
var fartPerClickTxt = new Text2('Farts/click: 1', {
size: 60,
fill: 0x444444
});
fartPerClickTxt.anchor.set(0.5, 0);
fartPerClickTxt.x = 2048 / 2;
fartPerClickTxt.y = 340;
LK.gui.top.addChild(fartPerClickTxt);
// --- Upgrades UI ---
var upgradeButtons = [];
var upgradeTxts = [];
var upgradeCostTxts = [];
var upgradeYStart = 550;
var upgradeSpacing = 120;
// Shop toggle state
var shopVisible = false; // Start with shop closed
// Create upgrade shop toggle button
var shopBtn = LK.getAsset('fart_btn', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.45,
scaleY: 0.45,
// Make square: scaleX and scaleY are equal
x: 400,
y: upgradeYStart - 120
});
shopBtn.interactive = true;
var shopBtnTxt = new Text2('Upgrade Shop', {
size: 70,
fill: 0x7A5C00
});
shopBtnTxt.anchor.set(0.5, 0.5);
shopBtnTxt.x = 0;
shopBtnTxt.y = 0;
shopBtn.addChild(shopBtnTxt);
game.addChild(shopBtn);
// Create upgrade buttons (initially hidden)
for (var i = 0; i < upgrades.length; ++i) {
// Button
var btn = LK.getAsset('fart_btn', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.5,
scaleY: 0.5,
x: 400,
y: upgradeYStart + i * upgradeSpacing
});
btn.interactive = true;
// Label
var txt = new Text2('Upgrade ' + upgrades[i].label, {
size: 60,
fill: 0x7A5C00
});
txt.anchor.set(0.5, 0.5);
txt.x = 0;
txt.y = -20;
btn.addChild(txt);
// Cost
var costTxt = new Text2('', {
size: 44,
fill: 0x444444
});
costTxt.anchor.set(0.5, 0.5);
costTxt.x = 0;
costTxt.y = 50;
btn.addChild(costTxt);
// Add to game
game.addChild(btn);
btn.visible = false; // Hide upgrade buttons initially
upgradeButtons.push(btn);
upgradeTxts.push(txt);
upgradeCostTxts.push(costTxt);
}
// Shop toggle logic
shopBtn.down = function (x, y, obj) {
shopVisible = !shopVisible;
for (var i = 0; i < upgradeButtons.length; ++i) {
upgradeButtons[i].visible = shopVisible;
}
// Feedback: flash the shop button
LK.effects.flashObject(shopBtn, 0xfff7b2, 120);
};
// --- Helper: Calculate upgrade cost ---
function getUpgradeCost(idx) {
var u = upgrades[idx];
var n = upgradesBought[idx];
// Exponential cost scaling
return Math.floor(u.base * Math.pow(u.mult, n));
}
// --- Helper: Update all UI ---
function updateUI() {
fartCountTxt.setText('Farts: ' + fartCount);
fartPerClickTxt.setText('Farts/click: ' + fartPerClick);
for (var i = 0; i < upgrades.length; ++i) {
var cost = getUpgradeCost(i);
upgradeCostTxts[i].setText('Cost: ' + cost);
// Gray out if can't afford
if (fartCount >= cost) {
upgradeButtons[i].alpha = 1;
} else {
upgradeButtons[i].alpha = 0.5;
}
}
}
updateUI();
// --- Upgrade Button Handlers ---
for (var i = 0; i < upgrades.length; ++i) {
(function (idx) {
upgradeButtons[idx].down = function (x, y, obj) {
var cost = getUpgradeCost(idx);
if (fartCount >= cost) {
fartCount -= cost;
upgradesBought[idx]++;
fartPerClick += upgrades[idx].amount;
updateUI();
// Feedback
LK.effects.flashObject(upgradeButtons[idx], 0xeeeecc, 120);
}
};
})(i);
}
// --- Fart Button Handler (Clicker) ---
fartBtn.down = function (x, y, obj) {
// Animate button
fartBtn.animatePress();
// Button color flash for feedback
LK.effects.flashObject(fartBtn, 0xfff7b2, 120);
// Play fart sound
LK.getSound('fart_snd').play();
// Dog reacts
dogFace.react();
// Add farts!
fartCount += fartPerClick;
updateUI();
};
// Make the button big and easy to tap: handle press anywhere on the button
fartBtn.interactive = true;
;
// --- Simple Click Counter Button ---
var clickCount = 0;
var clickCountTxt = new Text2('Clicks: 0', {
size: 80,
fill: 0x2D2D2D
});
clickCountTxt.anchor.set(0.5, 0);
clickCountTxt.x = 2048 / 2;
clickCountTxt.y = 450;
LK.gui.top.addChild(clickCountTxt);
var clickBtn = LK.getAsset('fart_btn', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.32,
scaleY: 0.32,
x: 2048 / 2,
y: 650
});
clickBtn.interactive = true;
var clickBtnTxt = new Text2('Click Me!', {
size: 60,
fill: 0x7A5C00
});
clickBtnTxt.anchor.set(0.5, 0.5);
clickBtnTxt.x = 0;
clickBtnTxt.y = 0;
clickBtn.addChild(clickBtnTxt);
game.addChild(clickBtn);
clickBtn.down = function (x, y, obj) {
clickCount++;
clickCountTxt.setText('Clicks: ' + clickCount);
LK.effects.flashObject(clickBtn, 0xfff7b2, 120);
};