User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'setText')' in or related to this line: 'upgradeCostText.setText('Cost: $' + abbreviatedCost);' Line Number: 192
User prompt
Please make sure that the shop price for "Cost: " stays abbreviated even after the player leaves the shop and opens it again. Make sure you use the same text.
User prompt
Make sure the "Cost: " text is hidden once the shopclose button is clicked. Make sure the non abbreviated value is hidden from the shopgui
User prompt
Please fix the bug: 'Uncaught ReferenceError: abbreviatedCostText is not defined' in or related to this line: 'abbreviatedCostText.visible = false; // Hide the abbreviated upgrade cost text' Line Number: 144
User prompt
Please make sure you're doing this to the new text abberivated text, not the old text
User prompt
The "Cost: " text is not hidden once the shopclose button is clicked. Can you please fix this
User prompt
Make sure the "Cost: " text is hidden once the shopclose button is clicked
User prompt
Make sure the text becomes hidden once the shopclosebutton is clicked please
User prompt
Please fix the bug: 'Uncaught ReferenceError: abbreviatedCostText is not defined' in or related to this line: 'abbreviatedCostText.visible = false; // Hide the abbreviated upgrade cost text' Line Number: 150
User prompt
Make sure the abbrivated shop value becomes hidden when the shopgui is closed
User prompt
Make sure the non abbreviated value is hidden from the shopgui
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'setText')' in or related to this line: 'upgradeCostText.setText('Cost: $' + abbreviatedCost);' Line Number: 192
User prompt
Please make sure that the shop price for "Cost: " stays abbreviated even after the player leaves the shop and opens it again.
User prompt
Now that is set, I would like to introduce new messages. When fish1, fish3, and fish7 are caught, please send the message "You caught a Common Fish!"
User prompt
For some reason one of the fish caught messages will stay and not disappear. Do you know why this is happening Ava?
User prompt
For some reason one of the fish caught messages will stay and not disappear. Do you know why?
User prompt
Make sure the base start of the message is hidden
User prompt
There is a bug where one of the messages are still in place after the 1 second. Please fix this bug.
User prompt
Please fix the bug: 'TypeError: requestAnimationFrame is not a function' in or related to this line: 'requestAnimationFrame(_animateMessage);' Line Number: 316
User prompt
Please create an animation for the message so it slides up in place before staying in place
User prompt
Please make it so a message can only be displayed for 1 second.
User prompt
When a fish is caught, display a message 100 pixels above the bottom of the screen which says "You have caught a Fish!
User prompt
Please fix the bug: 'Timeout.tick error: LK.effects.fadeOut is not a function' in or related to this line: 'LK.effects.fadeOut(catchMessage, 1000, function () {' Line Number: 359
User prompt
Please fix the bug: 'Timeout.tick error: LK.effects.fadeObject is not a function' in or related to this line: 'LK.effects.fadeObject(catchMessage, 0x000000, 1000, function () {' Line Number: 359
User prompt
Please fix the bug: 'Timeout.tick error: LK.effects.fadeOut is not a function' in or related to this line: 'LK.effects.fadeOut(catchMessage, 1000, function () {' Line Number: 359
/****
* Plugins
****/
var storage = LK.import("@upit/storage.v1", {
moneyMultiplier: 1
});
/****
* Classes
****/
// Fish class representing different types of fish
var Fish = Container.expand(function (type) {
var self = Container.call(this);
// Attach a fish asset with random color
var fishGraphics = self.attachAsset('Fish' + type, {
anchorX: 0.5,
anchorY: 0.5
});
// Set base speed and money value for each fish type
var baseSpeed;
var moneyValue;
switch (type) {
case 1:
baseSpeed = 1.5;
moneyValue = 2;
break;
case 2:
baseSpeed = 10;
moneyValue = 25;
break;
case 3:
baseSpeed = 2;
moneyValue = 5;
break;
case 4:
baseSpeed = 3;
moneyValue = 8;
break;
case 5:
baseSpeed = 3;
moneyValue = 8;
break;
case 6:
baseSpeed = 5;
moneyValue = 25;
break;
case 7:
baseSpeed = 2;
moneyValue = 3;
break;
case 8:
baseSpeed = 8;
moneyValue = 30;
break;
case 9:
baseSpeed = 3;
moneyValue = 4;
break;
case 10:
baseSpeed = 25;
moneyValue = 2500;
break;
default:
baseSpeed = 2;
moneyValue = 2;
}
self.moneyValue = moneyValue;
// Adjust the base speed randomly by 10% for all fish except Fish1 which can have a speed change from the base of 50%
if (type === 1) {
self.speed = baseSpeed * (1 + (Math.random() - 0.5));
} else {
self.speed = baseSpeed * (1 + (Math.random() - 0.5) / 5);
}
// Update function to move fish
self.update = function () {
self.x += self.speed;
if (self.x > 2048) {
self.x = -100; // Reset position if fish goes off screen
}
if (type === 5) {
self.y = Math.max(self.y, shop.y + shop.height + 10); // Ensure fish5 is always below the shopgui asset
}
};
});
// FishingRod class representing the player's fishing rod
var FishingRod = Container.expand(function () {
var self = Container.call(this);
// Attach a fishing rod asset
var rodGraphics = self.attachAsset('net', {
anchorX: 0.5,
anchorY: 0.5
});
// Set initial position
self.x = 1024;
self.y = 2000;
// Event handler for dragging the rod
self.down = function (x, y, obj) {
if (self.intersects(shop)) {
// Create a ShopGUI1 asset and make it visible when the shop button is clicked
var shopGUI = game.addChild(LK.getAsset('ShopGUI1', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366
}));
shopGUI.visible = false;
// Create a ShopGuiClose asset and make it visible when the shop button is clicked
var shopGuiClose = game.addChild(LK.getAsset('ShopGuiClose', {
anchorX: 1.0,
// Anchor to the top right
anchorY: 0.0,
// Anchor to the top right
x: 1024 + 825 - 25,
// Position it 25 pixels from the right within the shopgui
y: 50 // Position it 50 pixels below the top of the ShopGUI1
}));
shopGuiClose.visible = false;
shopGuiClose.down = function (x, y, obj) {
shopGUI.visible = false;
shopGuiClose.visible = false;
moneyMultiplierText.visible = false; // Hide the Money Multiplier text
moneyUpgrade.visible = false; // Hide the moneyUpgrade asset
upgradeCostText.visible = false; // Hide the upgrade cost text
currentMultiplierText.visible = false; // Hide the current multiplier text
scoreTxt.setStyle({
stroke: 0x000000,
strokeThickness: 0 // Remove stroke when shopgui is closed
});
self.visible = true; // Make the fishingnet visible again when the shopgui is closed
};
shopGUI.visible = true;
// Add "Money Multiplier" text to the shopgui
var moneyMultiplierText = new Text2('Money Multiplier', {
size: 100,
fill: 0x000000
});
moneyMultiplierText.anchor.set(0.5, 0);
moneyMultiplierText.x = 1024; // Centered horizontally within the shopgui
moneyMultiplierText.y = 1366 - 1250 + 100; // Offset by 100 pixels from the Y position of the shopgui
game.addChild(moneyMultiplierText);
scoreTxt.setStyle({
stroke: 0x000000,
// Add black stroke
strokeThickness: 10 // Set stroke thickness to 10
});
shopGuiClose.visible = true;
// Add a new asset 'moneyUpgrade' 25 pixels below the Money Multiplier text
var moneyUpgrade = LK.getAsset('fishingRod', {
anchorX: 0.5,
anchorY: 0.0,
x: 1024,
// Centered horizontally within the shopgui
y: moneyMultiplierText.y + 150 // 150 pixels below the Money Multiplier text
});
game.addChild(moneyUpgrade);
// Add text to display current money multiplier
var currentMultiplierText = new Text2('Current: ' + moneyMultiplier.toFixed(1) + 'x', {
size: 80,
fill: 0x000000
});
currentMultiplierText.anchor.set(0.5, 0);
currentMultiplierText.x = moneyUpgrade.x - 550; // 550 pixels to the left of moneyUpgrade
currentMultiplierText.y = moneyUpgrade.y;
game.addChild(currentMultiplierText);
currentMultiplierText.visible = true; // Show the current multiplier text
var upgradeCost = storage.upgradeCost || 250; // Initialize upgrade cost from storage or set to starting value
// Add text to display the cost of the money multiplier upgrade
var upgradeCostText = new Text2('Cost: $' + upgradeCost.toFixed(2), {
size: 80,
fill: 0x000000
});
upgradeCostText.anchor.set(0.5, 0);
upgradeCostText.x = moneyUpgrade.x + 500; // 500 pixels to the right of moneyUpgrade
upgradeCostText.y = moneyUpgrade.y;
game.addChild(upgradeCostText);
moneyUpgrade.down = function (x, y, obj) {
if (score >= upgradeCost) {
// Check if the player has enough money
score -= upgradeCost; // Deduct the cost from the player's score
moneyMultiplier += 0.1; // Increase multiplier by 0.1x
currentMultiplierText.setText('Current: ' + moneyMultiplier.toFixed(1) + 'x'); // Update text
storage.moneyMultiplier = moneyMultiplier; // Persist updated multiplier
if (moneyMultiplier >= 1.7) {
upgradeCost += 2500 + 1000 * (moneyMultiplier - 1.7) / 0.1; // Increase by 2500 plus 1k for each 0.1x above 1.7x
} else {
upgradeCost *= 1.5; // Original cost increase logic
}
storage.upgradeCost = upgradeCost; // Persist updated upgrade cost
if (upgradeCost >= 1000000) {
var abbreviatedCost = (upgradeCost / 1000000).toFixed(2) + 'm';
upgradeCostText.setText('Cost: $' + abbreviatedCost);
} else if (upgradeCost >= 1000) {
var abbreviatedCost = (upgradeCost / 1000).toFixed(2) + 'k';
upgradeCostText.setText('Cost: $' + abbreviatedCost);
} else {
upgradeCostText.setText('Cost: $' + upgradeCost.toFixed(2));
}
// Update the score text immediately
if (score >= 1000000) {
// Abbreviate to 'm' if score is 1,000,000 or more
var abbreviatedScore = (score / 1000000).toFixed(2) + 'm';
scoreTxt.setText('Money: $' + abbreviatedScore);
} else if (score >= 1000) {
// Abbreviate to 'k' if score is 1,000 or more
var abbreviatedScore = (score / 1000).toFixed(2) + 'k';
scoreTxt.setText('Money: $' + abbreviatedScore);
} else {
scoreTxt.setText('Money: $' + score.toFixed(2));
}
}
};
self.visible = false; // Make the fishingnet invisible when the shopgui is open
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Init game with sky blue background
});
/****
* Game Code
****/
// Function to generate a random fish type based on the given percentages
//<Assets used in the game will automatically appear here>
// Initialize arrays and variables
function generateFishType() {
var rand = Math.random() * 100;
if (rand < 30) {
return 1;
} else if (rand < 32) {
return 2;
} else if (rand < 47) {
return 3;
} else if (rand < 57) {
return 4;
} else if (rand < 67) {
return 5;
} else if (rand < 72) {
return 6;
} else if (rand < 87) {
return 7;
} else if (rand < 89.95) {
return 8;
} else if (rand < 99.95) {
return 9;
} else {
return 10;
}
}
var fishes = [];
var score = storage.moneyTotal || 0;
var moneyMultiplier = storage.moneyMultiplier || 1.0; // Initialize money multiplier from storage
var scoreTxt = new Text2('Money: $0', {
size: 100,
fill: 0x000000
});
var shop = LK.getAsset('shop', {
anchorX: 0.5,
anchorY: 0.0,
x: 1024,
y: 200
});
game.addChild(shop);
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Create and add fishing rod to the game
var fishingRod = game.addChild(new FishingRod());
// Function to spawn fish
function spawnFish(type) {
var fish = new Fish(type);
fish.x = 0; // Spawn fish only at the left side of the screen
fish.y = Math.random() * 1500 + 500;
fishes.push(fish);
game.addChild(fish);
}
// Spawn initial fish
for (var i = 0; i < 10; i++) {
spawnFish(generateFishType());
}
// Update function for the game
game.update = function () {
// Update all fish
for (var i = 0; i < fishes.length; i++) {
fishes[i].update();
// Check for collision with fishing rod
if (fishingRod.intersects(fishes[i])) {
score += fishes[i].moneyValue * moneyMultiplier; // Multiply fish value by money multiplier
storage.moneyTotal = score;
if (score >= 1000000) {
// Abbreviate to 'm' if score is 1,000,000 or more
var abbreviatedScore = (score / 1000000).toFixed(2) + 'm';
scoreTxt.setText('Money: $' + abbreviatedScore);
} else if (score >= 1000) {
// Abbreviate to 'k' if score is 1,000 or more
var abbreviatedScore = (score / 1000).toFixed(2) + 'k';
scoreTxt.setText('Money: $' + abbreviatedScore);
} else {
scoreTxt.setText('Money: $' + score.toFixed(2));
}
// Determine the message based on fish type
var fishType = fishes[i].type;
var message = "";
switch (fishType) {
case 1:
case 3:
case 7:
message = "You have caught a Common Fish!";
break;
case 2:
case 5:
case 9:
message = "You have caught an Uncommon Fish!";
break;
case 6:
case 8:
message = "You have caught a Rare Fish!";
break;
case 10:
message = "You have caught a WTF Fish!";
break;
default:
message = "You have caught a Fish!";
}
// Create and display the message
var catchMessage = new Text2(message, {
size: 80,
fill: 0xFFFFFF
});
catchMessage.anchor.set(0.5, 0.5);
catchMessage.x = 1024; // Center horizontally
catchMessage.y = 2632; // 100 pixels above the bottom of the screen
game.addChild(catchMessage);
// Fade out the message after 1 second
LK.setTimeout(function () {
LK.effects.fadeObject(catchMessage, 0x000000, 1000, function () {
catchMessage.destroy();
});
}, 1000);
fishes[i].destroy();
fishes.splice(i, 1);
spawnFish(generateFishType());
}
}
};
// Event handler for dragging the fishing rod
game.move = function (x, y, obj) {
fishingRod.x = x;
fishingRod.y = y;
if (fishingRod.y <= shop.y + 270) {
fishingRod.alpha = 0;
} else {
fishingRod.alpha = 1;
}
};
Water themed gui icon that has the text "Shop" on it. 8-bit art style.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Big red X button for a game gui. 8-bit art style.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit art style circular fishing net without a handle.. 8-bit art style
A bright green + symbol for a game GUI element. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows. 8-bit art style