Code edit (1 edits merged)
Please save this source code
User prompt
Pet Doctor Clinic
Initial prompt
Toca pet doctor (2014). Tap to choose the lizard 🦖 who has flies 🪰 inside its tummy, the rabbit 🐰 who has 4 red bumps in its body, the cat 🐱 who has a hurt ear, or the frog 🐸 who has orange bumps in its head.
/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
/**** 
* Classes
****/ 
var Pet = Container.expand(function (petType) {
	var self = Container.call(this);
	self.petType = petType;
	self.isHealed = false;
	self.isSelected = false;
	self.ailments = [];
	// Create pet body
	var body = self.attachAsset(petType, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Add ailments based on pet type
	self.createAilments = function () {
		if (self.petType === 'lizard') {
			// Add flies in tummy
			for (var i = 0; i < 3; i++) {
				var fly = self.attachAsset('fly', {
					anchorX: 0.5,
					anchorY: 0.5,
					x: (Math.random() - 0.5) * 100,
					y: (Math.random() - 0.5) * 80
				});
				self.ailments.push(fly);
			}
		} else if (self.petType === 'rabbit') {
			// Add red bumps
			for (var i = 0; i < 4; i++) {
				var bump = self.attachAsset('redBump', {
					anchorX: 0.5,
					anchorY: 0.5,
					x: (Math.random() - 0.5) * 150,
					y: (Math.random() - 0.5) * 200
				});
				self.ailments.push(bump);
			}
		} else if (self.petType === 'cat') {
			// Add injury to ear
			var injury = self.attachAsset('injury', {
				anchorX: 0.5,
				anchorY: 0.5,
				x: -80,
				y: -100
			});
			self.ailments.push(injury);
		} else if (self.petType === 'frog') {
			// Add orange bumps on head
			for (var i = 0; i < 3; i++) {
				var bump = self.attachAsset('orangeBump', {
					anchorX: 0.5,
					anchorY: 0.5,
					x: (Math.random() - 0.5) * 120,
					y: -60 + (Math.random() - 0.5) * 40
				});
				self.ailments.push(bump);
			}
		}
	};
	self.createAilments();
	self.down = function (x, y, obj) {
		if (!self.isSelected && !self.isHealed) {
			LK.getSound('select').play();
			selectedPet = self;
			self.isSelected = true;
			// Highlight selected pet
			tween(body, {
				scaleX: 1.1,
				scaleY: 1.1
			}, {
				duration: 200
			});
			// Update instruction text
			updateInstructionText();
		} else if (self.isSelected && !self.isHealed) {
			// Treat ailment
			self.treatAilment(x, y);
		}
	};
	self.treatAilment = function (localX, localY) {
		for (var i = self.ailments.length - 1; i >= 0; i--) {
			var ailment = self.ailments[i];
			var distance = Math.sqrt(Math.pow(localX - ailment.x, 2) + Math.pow(localY - ailment.y, 2));
			if (distance < 30) {
				// Create heal effect
				var healEffect = self.attachAsset('healEffect', {
					anchorX: 0.5,
					anchorY: 0.5,
					x: ailment.x,
					y: ailment.y,
					alpha: 0.8
				});
				// Animate heal effect
				tween(healEffect, {
					scaleX: 2,
					scaleY: 2,
					alpha: 0
				}, {
					duration: 500,
					onFinish: function onFinish() {
						healEffect.destroy();
					}
				});
				// Remove ailment
				ailment.destroy();
				self.ailments.splice(i, 1);
				LK.getSound('heal').play();
				LK.setScore(LK.getScore() + 10);
				scoreText.setText(LK.getScore());
				break;
			}
		}
		// Check if all ailments are healed
		if (self.ailments.length === 0) {
			self.healPet();
		}
	};
	self.healPet = function () {
		self.isHealed = true;
		self.isSelected = false;
		selectedPet = null;
		// Flash green to show healing
		LK.effects.flashObject(self, 0x00FF00, 1000);
		// Scale back to normal
		tween(body, {
			scaleX: 1,
			scaleY: 1
		}, {
			duration: 200
		});
		// Increase score bonus
		LK.setScore(LK.getScore() + 50);
		scoreText.setText(LK.getScore());
		petsHealed++;
		updateInstructionText();
		// Check win condition
		if (petsHealed >= 10) {
			LK.showYouWin();
		}
		// Respawn after delay
		LK.setTimeout(function () {
			self.respawn();
		}, 2000);
	};
	self.respawn = function () {
		self.isHealed = false;
		self.isSelected = false;
		// Clear existing ailments
		for (var i = 0; i < self.ailments.length; i++) {
			self.ailments[i].destroy();
		}
		self.ailments = [];
		// Create new ailments
		self.createAilments();
		// Reset scale
		body.scaleX = 1;
		body.scaleY = 1;
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x87CEEB
});
/**** 
* Game Code
****/ 
var selectedPet = null;
var petsHealed = 0;
// Create pets
var lizard = game.addChild(new Pet('lizard'));
lizard.x = 512;
lizard.y = 600;
var rabbit = game.addChild(new Pet('rabbit'));
rabbit.x = 1536;
rabbit.y = 600;
var cat = game.addChild(new Pet('cat'));
cat.x = 512;
cat.y = 1400;
var frog = game.addChild(new Pet('frog'));
frog.x = 1536;
frog.y = 1400;
// Create UI
var titleText = new Text2('Pet Doctor Clinic', {
	size: 120,
	fill: 0x2E7D32
});
titleText.anchor.set(0.5, 0);
LK.gui.top.addChild(titleText);
var scoreText = new Text2('Score: 0', {
	size: 80,
	fill: 0x1976D2
});
scoreText.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreText);
scoreText.x = -20;
scoreText.y = 20;
var instructionText = new Text2('Tap a sick pet to select it!', {
	size: 60,
	fill: 0x4A4A4A
});
instructionText.anchor.set(0.5, 0);
LK.gui.center.addChild(instructionText);
instructionText.y = 800;
function updateInstructionText() {
	if (selectedPet && !selectedPet.isHealed) {
		var instructions = {
			'lizard': 'Tap the flies to remove them!',
			'rabbit': 'Tap the red bumps to heal them!',
			'cat': 'Tap the injury to treat it!',
			'frog': 'Tap the orange bumps to cure them!'
		};
		instructionText.setText(instructions[selectedPet.petType]);
	} else {
		instructionText.setText('Tap a sick pet to select it!');
	}
}
// Initialize score
scoreText.setText('Score: ' + LK.getScore());
game.update = function () {
	// Game logic updates handled by pet classes
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,232 @@
-/****
+/**** 
+* Plugins
+****/ 
+var tween = LK.import("@upit/tween.v1");
+
+/**** 
+* Classes
+****/ 
+var Pet = Container.expand(function (petType) {
+	var self = Container.call(this);
+	self.petType = petType;
+	self.isHealed = false;
+	self.isSelected = false;
+	self.ailments = [];
+	// Create pet body
+	var body = self.attachAsset(petType, {
+		anchorX: 0.5,
+		anchorY: 0.5
+	});
+	// Add ailments based on pet type
+	self.createAilments = function () {
+		if (self.petType === 'lizard') {
+			// Add flies in tummy
+			for (var i = 0; i < 3; i++) {
+				var fly = self.attachAsset('fly', {
+					anchorX: 0.5,
+					anchorY: 0.5,
+					x: (Math.random() - 0.5) * 100,
+					y: (Math.random() - 0.5) * 80
+				});
+				self.ailments.push(fly);
+			}
+		} else if (self.petType === 'rabbit') {
+			// Add red bumps
+			for (var i = 0; i < 4; i++) {
+				var bump = self.attachAsset('redBump', {
+					anchorX: 0.5,
+					anchorY: 0.5,
+					x: (Math.random() - 0.5) * 150,
+					y: (Math.random() - 0.5) * 200
+				});
+				self.ailments.push(bump);
+			}
+		} else if (self.petType === 'cat') {
+			// Add injury to ear
+			var injury = self.attachAsset('injury', {
+				anchorX: 0.5,
+				anchorY: 0.5,
+				x: -80,
+				y: -100
+			});
+			self.ailments.push(injury);
+		} else if (self.petType === 'frog') {
+			// Add orange bumps on head
+			for (var i = 0; i < 3; i++) {
+				var bump = self.attachAsset('orangeBump', {
+					anchorX: 0.5,
+					anchorY: 0.5,
+					x: (Math.random() - 0.5) * 120,
+					y: -60 + (Math.random() - 0.5) * 40
+				});
+				self.ailments.push(bump);
+			}
+		}
+	};
+	self.createAilments();
+	self.down = function (x, y, obj) {
+		if (!self.isSelected && !self.isHealed) {
+			LK.getSound('select').play();
+			selectedPet = self;
+			self.isSelected = true;
+			// Highlight selected pet
+			tween(body, {
+				scaleX: 1.1,
+				scaleY: 1.1
+			}, {
+				duration: 200
+			});
+			// Update instruction text
+			updateInstructionText();
+		} else if (self.isSelected && !self.isHealed) {
+			// Treat ailment
+			self.treatAilment(x, y);
+		}
+	};
+	self.treatAilment = function (localX, localY) {
+		for (var i = self.ailments.length - 1; i >= 0; i--) {
+			var ailment = self.ailments[i];
+			var distance = Math.sqrt(Math.pow(localX - ailment.x, 2) + Math.pow(localY - ailment.y, 2));
+			if (distance < 30) {
+				// Create heal effect
+				var healEffect = self.attachAsset('healEffect', {
+					anchorX: 0.5,
+					anchorY: 0.5,
+					x: ailment.x,
+					y: ailment.y,
+					alpha: 0.8
+				});
+				// Animate heal effect
+				tween(healEffect, {
+					scaleX: 2,
+					scaleY: 2,
+					alpha: 0
+				}, {
+					duration: 500,
+					onFinish: function onFinish() {
+						healEffect.destroy();
+					}
+				});
+				// Remove ailment
+				ailment.destroy();
+				self.ailments.splice(i, 1);
+				LK.getSound('heal').play();
+				LK.setScore(LK.getScore() + 10);
+				scoreText.setText(LK.getScore());
+				break;
+			}
+		}
+		// Check if all ailments are healed
+		if (self.ailments.length === 0) {
+			self.healPet();
+		}
+	};
+	self.healPet = function () {
+		self.isHealed = true;
+		self.isSelected = false;
+		selectedPet = null;
+		// Flash green to show healing
+		LK.effects.flashObject(self, 0x00FF00, 1000);
+		// Scale back to normal
+		tween(body, {
+			scaleX: 1,
+			scaleY: 1
+		}, {
+			duration: 200
+		});
+		// Increase score bonus
+		LK.setScore(LK.getScore() + 50);
+		scoreText.setText(LK.getScore());
+		petsHealed++;
+		updateInstructionText();
+		// Check win condition
+		if (petsHealed >= 10) {
+			LK.showYouWin();
+		}
+		// Respawn after delay
+		LK.setTimeout(function () {
+			self.respawn();
+		}, 2000);
+	};
+	self.respawn = function () {
+		self.isHealed = false;
+		self.isSelected = false;
+		// Clear existing ailments
+		for (var i = 0; i < self.ailments.length; i++) {
+			self.ailments[i].destroy();
+		}
+		self.ailments = [];
+		// Create new ailments
+		self.createAilments();
+		// Reset scale
+		body.scaleX = 1;
+		body.scaleY = 1;
+	};
+	return self;
+});
+
+/**** 
 * Initialize Game
-****/
+****/ 
 var game = new LK.Game({
-	backgroundColor: 0x000000
-});
\ No newline at end of file
+	backgroundColor: 0x87CEEB
+});
+
+/**** 
+* Game Code
+****/ 
+var selectedPet = null;
+var petsHealed = 0;
+// Create pets
+var lizard = game.addChild(new Pet('lizard'));
+lizard.x = 512;
+lizard.y = 600;
+var rabbit = game.addChild(new Pet('rabbit'));
+rabbit.x = 1536;
+rabbit.y = 600;
+var cat = game.addChild(new Pet('cat'));
+cat.x = 512;
+cat.y = 1400;
+var frog = game.addChild(new Pet('frog'));
+frog.x = 1536;
+frog.y = 1400;
+// Create UI
+var titleText = new Text2('Pet Doctor Clinic', {
+	size: 120,
+	fill: 0x2E7D32
+});
+titleText.anchor.set(0.5, 0);
+LK.gui.top.addChild(titleText);
+var scoreText = new Text2('Score: 0', {
+	size: 80,
+	fill: 0x1976D2
+});
+scoreText.anchor.set(1, 0);
+LK.gui.topRight.addChild(scoreText);
+scoreText.x = -20;
+scoreText.y = 20;
+var instructionText = new Text2('Tap a sick pet to select it!', {
+	size: 60,
+	fill: 0x4A4A4A
+});
+instructionText.anchor.set(0.5, 0);
+LK.gui.center.addChild(instructionText);
+instructionText.y = 800;
+function updateInstructionText() {
+	if (selectedPet && !selectedPet.isHealed) {
+		var instructions = {
+			'lizard': 'Tap the flies to remove them!',
+			'rabbit': 'Tap the red bumps to heal them!',
+			'cat': 'Tap the injury to treat it!',
+			'frog': 'Tap the orange bumps to cure them!'
+		};
+		instructionText.setText(instructions[selectedPet.petType]);
+	} else {
+		instructionText.setText('Tap a sick pet to select it!');
+	}
+}
+// Initialize score
+scoreText.setText('Score: ' + LK.getScore());
+game.update = function () {
+	// Game logic updates handled by pet classes
+};
\ No newline at end of file