/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
	chaoStats: {
		age: 0,
		happiness: 50,
		hunger: 50,
		energy: 50,
		lastTimestamp: 0
	},
	chaoEvolution: "baby",
	chaoColor: 7399423,
	gardenItems: []
});
/**** 
* Classes
****/ 
var Chao = Container.expand(function () {
	var self = Container.call(this);
	// Default chao stats
	self.stats = storage.chaoStats || {
		age: 0,
		happiness: 50,
		hunger: 50,
		energy: 50,
		lastTimestamp: Date.now()
	};
	self.evolution = storage.chaoEvolution || 'baby';
	self.color = storage.chaoColor || 0x70e7ff;
	// Create chao body parts
	var body = self.attachAsset('chaoBody', {
		anchorX: 0.5,
		anchorY: 0.5,
		y: 10
	});
	var head = self.attachAsset('chaoHead', {
		anchorX: 0.5,
		anchorY: 0.5,
		y: -40
	});
	// Eyes
	var leftEye = self.attachAsset('chaoEyes', {
		anchorX: 0.5,
		anchorY: 0.5,
		x: -20,
		y: -45
	});
	var rightEye = self.attachAsset('chaoEyes', {
		anchorX: 0.5,
		anchorY: 0.5,
		x: 20,
		y: -45
	});
	// Set color
	body.tint = self.color;
	head.tint = self.color;
	// Movement properties
	self.targetX = self.x;
	self.targetY = self.y;
	self.moveSpeed = 2;
	self.idleTime = 0;
	self.idleThreshold = 180; // 3 seconds at 60fps
	self.isWalking = false;
	// Timers
	self.statDecayInterval = 600; // 10 seconds at 60fps
	self.statDecayCounter = 0;
	// Apply evolution appearance
	self.updateEvolution = function () {
		storage.chaoEvolution = self.evolution;
		storage.chaoColor = self.color;
		var scale = 0.7; // Baby scale
		if (self.evolution === 'child') {
			scale = 0.85;
		} else if (self.evolution === 'adult') {
			scale = 1.0;
		}
		tween(self, {
			scaleX: scale,
			scaleY: scale
		}, {
			duration: 1000,
			easing: tween.easeOut
		});
		body.tint = self.color;
		head.tint = self.color;
	};
	// Update Chao stats
	self.updateStats = function () {
		self.statDecayCounter++;
		if (self.statDecayCounter >= self.statDecayInterval) {
			self.statDecayCounter = 0;
			// Slowly decrease stats over time
			self.stats.hunger = Math.max(0, self.stats.hunger - 2);
			self.stats.happiness = Math.max(0, self.stats.happiness - 1);
			self.stats.energy = Math.max(0, self.stats.energy - 1);
			// Update UI
			updateStatsUI();
			// Save stats
			storage.chaoStats = self.stats;
		}
		// Check if should evolve
		if (self.stats.age >= 20 && self.evolution === 'baby') {
			self.evolution = 'child';
			self.updateEvolution();
			LK.getSound('happy').play();
		} else if (self.stats.age >= 50 && self.evolution === 'child') {
			self.evolution = 'adult';
			self.updateEvolution();
			LK.getSound('happy').play();
		}
	};
	// Feed the Chao
	self.feed = function (amount) {
		self.stats.hunger = Math.min(100, self.stats.hunger + amount);
		self.stats.energy = Math.min(100, self.stats.energy + amount / 2);
		storage.chaoStats = self.stats;
		updateStatsUI();
		// Do happy animation
		self.doHappyAnimation();
	};
	// Pet the Chao
	self.pet = function () {
		self.stats.happiness = Math.min(100, self.stats.happiness + 10);
		storage.chaoStats = self.stats;
		updateStatsUI();
		LK.getSound('pet').play();
		self.doHappyAnimation();
	};
	// Happy animation
	self.doHappyAnimation = function () {
		// Jump up and down
		tween(self, {
			y: self.y - 20
		}, {
			duration: 300,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				tween(self, {
					y: self.y + 20
				}, {
					duration: 300,
					easing: tween.easeIn
				});
			}
		});
	};
	// Move Chao to random spot
	self.moveToRandomSpot = function () {
		// Set target to random position within garden bounds
		self.targetX = 300 + Math.random() * 1400;
		self.targetY = 600 + Math.random() * 500;
		self.isWalking = true;
	};
	// Down event for petting
	self.down = function (x, y, obj) {
		self.pet();
	};
	// Update method called every frame
	self.update = function () {
		// Update stats
		self.updateStats();
		// Handle movement
		if (self.isWalking) {
			var dx = self.targetX - self.x;
			var dy = self.targetY - self.y;
			var dist = Math.sqrt(dx * dx + dy * dy);
			if (dist < self.moveSpeed) {
				// Reached target
				self.x = self.targetX;
				self.y = self.targetY;
				self.isWalking = false;
			} else {
				// Move towards target
				self.x += dx / dist * self.moveSpeed;
				self.y += dy / dist * self.moveSpeed;
			}
		} else {
			// Handle idle behavior
			self.idleTime++;
			if (self.idleTime > self.idleThreshold) {
				self.idleTime = 0;
				// Random chance to move
				if (Math.random() < 0.3) {
					self.moveToRandomSpot();
				}
			}
		}
	};
	// Initialize evolution appearance
	self.updateEvolution();
	return self;
});
var ChaoEgg = Container.expand(function () {
	var self = Container.call(this);
	var eggGraphic = self.attachAsset('chaoEgg', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.wobbling = false;
	self.hatchProgress = 0;
	self.hatchThreshold = 10;
	self.wobble = function () {
		if (self.wobbling) {
			return;
		}
		self.wobbling = true;
		tween(self, {
			rotation: 0.1
		}, {
			duration: 300,
			easing: tween.easeInOut,
			onFinish: function onFinish() {
				tween(self, {
					rotation: -0.1
				}, {
					duration: 300,
					easing: tween.easeInOut,
					onFinish: function onFinish() {
						self.wobbling = false;
						self.rotation = 0;
					}
				});
			}
		});
		self.hatchProgress++;
		if (self.hatchProgress >= self.hatchThreshold) {
			self.hatch();
		}
	};
	self.hatch = function () {
		LK.getSound('hatch').play();
		// Create animation for hatching
		tween(eggGraphic, {
			alpha: 0
		}, {
			duration: 1000,
			easing: tween.easeInOut,
			onFinish: function onFinish() {
				// Hatch complete, spawn Chao
				createChao();
				self.destroy();
			}
		});
	};
	self.down = function (x, y, obj) {
		self.wobble();
	};
	return self;
});
var Fruit = Container.expand(function (type) {
	var self = Container.call(this);
	self.type = type || 'apple';
	var color = 0xff5555;
	if (self.type === 'orange') {
		color = 0xff9933;
	}
	if (self.type === 'banana') {
		color = 0xffee44;
	}
	var fruitGraphic = self.attachAsset('fruit' + self.type.charAt(0).toUpperCase() + self.type.slice(1), {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.nutritionValue = 10;
	if (self.type === 'orange') {
		self.nutritionValue = 15;
	}
	if (self.type === 'banana') {
		self.nutritionValue = 20;
	}
	self.down = function (x, y, obj) {
		self.dragging = true;
		self.dragOffsetX = x - self.x;
		self.dragOffsetY = y - self.y;
	};
	self.up = function (x, y, obj) {
		self.dragging = false;
		// Check if dropped on Chao
		if (self.intersects(chao)) {
			chao.feed(self.nutritionValue);
			self.destroy();
			fruitBasket.removeFruit(self);
			LK.getSound('eat').play();
		}
	};
	return self;
});
var FruitBasket = Container.expand(function () {
	var self = Container.call(this);
	self.fruits = [];
	// Setup UI elements
	var appleButton = self.attachAsset('fruitApple', {
		anchorX: 0.5,
		anchorY: 0.5,
		x: 0
	});
	var orangeButton = self.attachAsset('fruitOrange', {
		anchorX: 0.5,
		anchorY: 0.5,
		x: 60
	});
	var bananaButton = self.attachAsset('fruitBanana', {
		anchorX: 0.5,
		anchorY: 0.5,
		x: 120
	});
	// Interaction handlers
	appleButton.interactive = true;
	orangeButton.interactive = true;
	bananaButton.interactive = true;
	appleButton.down = function () {
		self.createFruit('apple');
	};
	orangeButton.down = function () {
		self.createFruit('orange');
	};
	bananaButton.down = function () {
		self.createFruit('banana');
	};
	// Create fruit
	self.createFruit = function (type) {
		var fruit = new Fruit(type);
		fruit.x = self.x + self.fruits.length * 20 % 100;
		fruit.y = self.y + 80;
		self.fruits.push(fruit);
		game.addChild(fruit);
	};
	// Remove fruit from array
	self.removeFruit = function (fruit) {
		var index = self.fruits.indexOf(fruit);
		if (index !== -1) {
			self.fruits.splice(index, 1);
		}
	};
	return self;
});
var StatsBar = Container.expand(function (type) {
	var self = Container.call(this);
	self.type = type;
	var color = 0x44cc44; // Green for hunger
	if (self.type === 'happiness') {
		color = 0x44aaff; // Blue for happiness
	} else if (self.type === 'energy') {
		color = 0xffcc44; // Yellow for energy
	}
	var background = self.attachAsset('statusBg', {
		anchorX: 0,
		anchorY: 0.5
	});
	var bar = self.attachAsset('statusBar', {
		anchorX: 0,
		anchorY: 0.5,
		x: 10,
		tint: color
	});
	var label = new Text2(self.type.charAt(0).toUpperCase() + self.type.slice(1), {
		size: 24,
		fill: 0x333333
	});
	label.anchor.set(0, 0.5);
	label.x = 15;
	self.addChild(label);
	self.setValue = function (value) {
		// Calculate width based on percentage
		var maxWidth = 380;
		var width = value / 100 * maxWidth;
		tween(bar, {
			width: width
		}, {
			duration: 300,
			easing: tween.easeOut
		});
	};
	return self;
});
var Toy = Container.expand(function () {
	var self = Container.call(this);
	var toyGraphic = self.attachAsset('toy', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.down = function (x, y, obj) {
		self.dragging = true;
		self.dragOffsetX = x - self.x;
		self.dragOffsetY = y - self.y;
	};
	self.up = function (x, y, obj) {
		self.dragging = false;
		// Check if dropped on Chao
		if (self.intersects(chao)) {
			chao.stats.happiness = Math.min(100, chao.stats.happiness + 15);
			chao.stats.energy = Math.max(0, chao.stats.energy - 10);
			storage.chaoStats = chao.stats;
			updateStatsUI();
			LK.getSound('happy').play();
			chao.doHappyAnimation();
		}
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x87CEEB
});
/**** 
* Game Code
****/ 
// UI Elements 
var moneyText = new Text2('Money: $0', {
	size: 36,
	fill: 0xFFFFFF
});
moneyText.anchor.set(0, 0.5);
moneyText.x = 50;
moneyText.y = 500;
game.addChild(moneyText);
var garden = game.addChild(LK.getAsset('garden', {
	anchorX: 0.5,
	anchorY: 0,
	x: 2048 / 2,
	y: 400
}));
// Create pond
var pond = game.addChild(LK.getAsset('pond', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 800
}));
// UI Elements
var titleText = new Text2('Chao Paradise', {
	size: 100,
	fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
LK.gui.top.addChild(titleText);
// Stats UI
var hungerBar = new StatsBar('hunger');
hungerBar.x = 50;
hungerBar.y = 200;
game.addChild(hungerBar);
var happinessBar = new StatsBar('happiness');
happinessBar.x = 50;
happinessBar.y = 280;
game.addChild(happinessBar);
var energyBar = new StatsBar('energy');
energyBar.x = 50;
energyBar.y = 360;
game.addChild(energyBar);
var ageText = new Text2('Age: 0 days', {
	size: 36,
	fill: 0xFFFFFF
});
ageText.anchor.set(0, 0.5);
ageText.x = 50;
ageText.y = 440;
game.addChild(ageText);
// Update UI elements based on current stats
function updateStatsUI() {
	if (!chao) {
		return;
	}
	hungerBar.setValue(chao.stats.hunger);
	happinessBar.setValue(chao.stats.happiness);
	energyBar.setValue(chao.stats.energy);
	ageText.setText('Age: ' + chao.stats.age + ' days');
	// Game over if stats are too low for too long
	if (chao.stats.hunger <= 0 && chao.stats.happiness <= 0 && chao.stats.energy <= 0) {
		LK.showGameOver();
	}
}
// Create food controls
var fruitBasket = new FruitBasket();
fruitBasket.x = 1600;
fruitBasket.y = 150;
game.addChild(fruitBasket);
// Create toy
var toy = new Toy();
toy.x = 1700;
toy.y = 250;
game.addChild(toy);
// Global variables
var chao = null;
var chaoEgg = null;
var dragTarget = null;
var dayCounter = 0;
var dayTimer = 0;
var dayLength = 1800; // 30 seconds at 60fps
// Start with an egg or existing Chao based on storage
function initializeChao() {
	if (!storage.chaoStats || storage.chaoStats.age === 0) {
		// New game, start with egg
		chaoEgg = new ChaoEgg();
		chaoEgg.x = 2048 / 2;
		chaoEgg.y = 800;
		game.addChild(chaoEgg);
	} else {
		// Existing Chao, restore it
		createChao();
	}
}
// Create a new Chao
function createChao() {
	chao = new Chao();
	chao.x = 2048 / 2;
	chao.y = 800;
	game.addChild(chao);
	// Update UI with current stats
	updateStatsUI();
}
// Drag handlers
game.down = function (x, y, obj) {
	if (obj && obj.down) {
		// Let the object handle its own down event
		return;
	}
};
game.move = function (x, y, obj) {
	// Check all draggable items
	if (toy && toy.dragging) {
		toy.x = x - toy.dragOffsetX;
		toy.y = y - toy.dragOffsetY;
	}
	// Check fruits
	if (fruitBasket && fruitBasket.fruits) {
		for (var i = 0; i < fruitBasket.fruits.length; i++) {
			var fruit = fruitBasket.fruits[i];
			if (fruit.dragging) {
				fruit.x = x - fruit.dragOffsetX;
				fruit.y = y - fruit.dragOffsetY;
			}
		}
	}
};
game.up = function (x, y, obj) {
	// Handled by individual objects
};
// Update game state each frame
game.update = function () {
	// Handle day cycle
	dayTimer++;
	if (dayTimer >= dayLength) {
		dayTimer = 0;
		dayCounter++;
		// Increment Chao age once per day
		if (chao) {
			chao.stats.age++;
			storage.chaoStats = chao.stats;
			updateStatsUI();
		}
	}
	// Mini-game logic to earn money
	if (dayCounter % 5 === 0) {
		// Every 5 days, a mini-game is available
		// Simulate mini-game result
		var moneyEarned = Math.floor(Math.random() * 100); // Random money earned between 0 and 100
		storage.money = (storage.money || 0) + moneyEarned;
		moneyText.setText('Money: $' + storage.money);
	}
};
// Initialize game
initializeChao();
LK.playMusic('gardenTheme'); ===================================================================
--- original.js
+++ change.js
@@ -411,9 +411,17 @@
 
 /**** 
 * Game Code
 ****/ 
-// Create garden background
+// UI Elements 
+var moneyText = new Text2('Money: $0', {
+	size: 36,
+	fill: 0xFFFFFF
+});
+moneyText.anchor.set(0, 0.5);
+moneyText.x = 50;
+moneyText.y = 500;
+game.addChild(moneyText);
 var garden = game.addChild(LK.getAsset('garden', {
 	anchorX: 0.5,
 	anchorY: 0,
 	x: 2048 / 2,
@@ -547,8 +555,16 @@
 			storage.chaoStats = chao.stats;
 			updateStatsUI();
 		}
 	}
+	// Mini-game logic to earn money
+	if (dayCounter % 5 === 0) {
+		// Every 5 days, a mini-game is available
+		// Simulate mini-game result
+		var moneyEarned = Math.floor(Math.random() * 100); // Random money earned between 0 and 100
+		storage.money = (storage.money || 0) + moneyEarned;
+		moneyText.setText('Money: $' + storage.money);
+	}
 };
 // Initialize game
 initializeChao();
 LK.playMusic('gardenTheme');
\ No newline at end of file