User prompt
Increase starting speed of all decending assets by 100 percent
User prompt
review the specific implementation of the storm powerup, how and where the speed variables are updated, and ensuring that all instances of descending items are affected by these updates would be essential steps
User prompt
Make the storm powerup increase all the decending powerups increase their falling speed by 400 percent for 10 seconds while the powerup is in action, when done make the button disapear and appear again only when the score conditions are met
User prompt
Make the starting speed of the decending items 100 percent faster from the getgo
User prompt
Make sure that the speed of all decending objects is increased by 400 percent for 10 seconds and that the button of the powerup dissapears after the 10 seconds until conditions are again applicable for the powerful
User prompt
Please fix the bug: 'TypeError: setInterval is not a function. (In 'setInterval(function () { __$(158); stormButton.visible = !stormButton.visible; }, 500)', 'setInterval' is undefined)' in or related to this line: 'var blinkInterval = setInterval(function () {' Line Number: 304
User prompt
Make sure the game speed increases by 400 percent for 10 seconds while the stomr powerup is applyed, also for those 10 seconds make the storm button blink for the duration of the powerup before it dissapears
User prompt
When storm power up is activated increase entire game speed 400 percent for 10 seconds, decrease 25 star points from the stars score and 50 drops from the drops score and remove the storm button until origeonal conditions to its appear apply
User prompt
Check that all features relating to the incresing speed of decending items allign with oneanother
User prompt
Please fix this to the best of your abilities
User prompt
Increase the speedup feature of the watermellon powerup by 50 percent
User prompt
If you collect multiple watermelons in the timeframe of the powerup have the increase in speed increase exponentually acording to the number of watermellons cought allowing useres to chain powerups
User prompt
Please attempt to fix this in accordance with the guidelines
User prompt
Please implement 1
User prompt
Create a new powerup that is connected to when a watermelon is collected, the powerup speeds up all the falling objects for 2 seconds
User prompt
When 50 water drops are collected 25 stars and create a new powerup called storm, creates a new button on the top right which lights up to a becomes apperent when the number of drops and stars is reached, when the button is slicked the defined powerup is initated
User prompt
Place all score indicators in line along the top of the screen with the health circles side by side
User prompt
Ensure that they are visable to me, i cant seem to see them in my screen
User prompt
Increase the size of all score indicators, i currently cant see them
User prompt
Ensure that the game's logic and event handling are correctly implemented to dynamically update and display the counters throughout the gameplay.
User prompt
systematically review the game's code related to the HUD and counters, focusing on their initialization, positioning, visibility, and update mechanisms.
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'starsScoreTxt.y = hudYPosition;' Line Number: 254
User prompt
Make the other scores display in the hud neatly
User prompt
Make the hud display 50 percent bigger
/****
* Classes
****/
var BackgroundColorTransition = Container.expand(function () {
var self = Container.call(this);
var dayDurationTicks = 1440; // 24 seconds * 60 FPS
self.update = function () {
var cycleProgress = LK.ticks % dayDurationTicks / dayDurationTicks;
var colorPhase = Math.sin(cycleProgress * Math.PI * 2) * 0.5 + 0.5;
var r = Math.floor(colorPhase * 135);
var g = Math.floor(colorPhase * 206);
var b = Math.floor(colorPhase * 235);
var hex = (r << 16) + (g << 8) + b;
game.setBackgroundColor(hex);
};
});
var BadWaterDroplet = Container.expand(function () {
var self = Container.call(this);
var badDropletGraphics = self.attachAsset('badWaterDroplet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2.25 * 2; // Increase base speed by 100%
self.move = function () {
self.y += self.speed;
// Calculate the scale based on the current y position
var scale = Math.min(1, self.y / 2732);
self.scale.x = scale;
self.scale.y = scale;
};
});
var BadWatermelon = Container.expand(function () {
var self = Container.call(this);
var badWatermelonGraphics = self.attachAsset('badWatermelon', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 1 * 2; // Increase base speed by 100%
self.rotationSpeed = 0.025;
self.move = function () {
self.y += self.speed;
// Calculate the scale based on the current y position
var scale = Math.min(1, self.y / 2732);
self.scale.x = scale;
self.scale.y = scale;
self.rotation += self.rotationSpeed;
};
});
var Collector = Container.expand(function () {
var self = Container.call(this);
var collectorGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 1948; // Position on the right side
self.y = 2400; // Near bottom
});
var DropCollector = Container.expand(function () {
var self = Container.call(this);
var collectorGraphics = self.attachAsset('collector', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 1948; // Position on the right side
self.y = 2400; // Near bottom
});
var GoodDropletCollector = Container.expand(function () {
var self = Container.call(this);
var collectorGraphics = self.attachAsset('collector', {
anchorX: 0.5,
anchorY: 0.5,
zIndex: 10
});
self.x = 2048 - 500; // Ensure it's positioned on the right side of the screen, accounting for its width
self.y = 2400; // Near bottom
});
var Moon = Container.expand(function () {
var self = Container.call(this);
var moonGraphics = self.attachAsset('moon', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 1;
self.move = function () {
if (sun.x < 0 || sun.x > 2048) {
self.x += self.speed;
self.scale.x -= 0.001;
self.scale.y -= 0.001;
if (self.x > 2048) {
self.x = -200;
self.scale.x = 1;
self.scale.y = 1;
}
}
self.rotation += 0.01;
};
});
var Player = Container.expand(function () {
var self = Container.call(this);
this.on('down', function () {
this.isDragging = true;
this.scale.x *= -1; // Flip the player asset direction
});
this.on('up', function () {
this.isDragging = false;
});
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Player update logic here
if (this.isDragging) {
this.rotation += 0.1; // Rotate the player when dragging
}
if (this.isNearGoodCollector() && this.goodDroplets > 0) {
this.dropOffGoodDroplets();
}
// Check if player is near the star collector to offload stars
if (this.x < 300 && stars > 0) {
LK.setScore(LK.getScore() + stars * 10); // Convert stars to score
stars = 0; // Reset stars to 0 after offloading
starsScoreTxt.setText('Stars: ' + stars); // Update the stars score display
}
// Check if player is near the drop collector to offload drops
if (this.x > 1748 && drops > 0) {
LK.setScore(LK.getScore() + drops * 15); // Convert drops to score
drops = 0; // Reset drops to 0 after offloading
dropsScoreTxt.setText('Drops: ' + drops); // Update the drops score display
}
};
});
var SpeedUpPowerup = Container.expand(function () {
var self = Container.call(this);
self.activate = function () {
// Speed up all falling objects for 2 seconds
// Define a base speed increase factor
// Define a base speed increase factor
var baseSpeedIncreaseFactor = 3; // Increased from 2 to 3 for a 50% increase
// Calculate exponential increase based on the number of watermelons caught
var speedIncreaseFactor = Math.pow(baseSpeedIncreaseFactor, watermelons.length);
// Store original speeds in a global scope to ensure they can be reset correctly
window.originalSpeeds = window.originalSpeeds || {
WaterDroplet: WaterDroplet.prototype.speed,
Watermelon: Watermelon.prototype.speed,
BadWaterDroplet: BadWaterDroplet.prototype.speed,
BadWatermelon: BadWatermelon.prototype.speed
};
WaterDroplet.prototype.speed *= speedIncreaseFactor;
Watermelon.prototype.speed *= speedIncreaseFactor;
BadWaterDroplet.prototype.speed *= speedIncreaseFactor;
BadWatermelon.prototype.speed *= speedIncreaseFactor;
// Calculate duration in ticks (2 seconds * 60 FPS)
var durationInTicks = 2 * 60;
var startTick = LK.ticks;
// Use LK.on('tick') to check if duration has passed and reset speeds
var checkAndResetSpeeds = function checkAndResetSpeeds() {
if (LK.ticks - startTick >= durationInTicks) {
WaterDroplet.prototype.speed = window.originalSpeeds.WaterDroplet;
Watermelon.prototype.speed = window.originalSpeeds.Watermelon;
BadWaterDroplet.prototype.speed = window.originalSpeeds.BadWaterDroplet;
BadWatermelon.prototype.speed = window.originalSpeeds.BadWatermelon;
// Remove this tick event listener to stop checking
LK.off('tick', checkAndResetSpeeds);
}
};
LK.on('tick', checkAndResetSpeeds);
};
});
var StormButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('stormButton', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 2048 - 150; // Position on the top right
self.y = 150;
self.visible = false; // Initially hidden
self.on('down', function () {
if (self.visible) {
initiateStormPowerup();
self.visible = false; // Hide after use
}
});
});
var Sun = Container.expand(function () {
var self = Container.call(this);
var sunGraphics = self.attachAsset('sun', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 1;
self.move = function () {
if (moon.x < 0 || moon.x > 2048) {
self.x += self.speed;
self.scale.x -= 0.001;
self.scale.y -= 0.001;
if (self.x > 2048) {
self.x = -200;
self.scale.x = 1;
self.scale.y = 1;
}
}
self.rotation += 0.01;
};
});
var Tree = Container.expand(function () {
var self = Container.call(this);
var treeGraphics = self.attachAsset('tree' + Math.floor(Math.random() * 5 + 1), {
anchorX: 0.5,
anchorY: 1
});
});
var WaterDroplet = Container.expand(function () {
var self = Container.call(this);
var dropletGraphics = self.attachAsset('waterDroplet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3.45 * 2; // Increase base speed by 100%
self.move = function () {
self.y += self.speed;
// Calculate the scale based on the current y position
var scale = Math.min(1, self.y / 2732);
self.scale.x = scale;
self.scale.y = scale;
};
});
var Watermelon = Container.expand(function () {
var self = Container.call(this);
var watermelonGraphics = self.attachAsset('watermelon', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2.5 * 2; // Increase base speed by 100%
self.rotationSpeed = 0.025; // Rotation speed quartered
self.move = function () {
self.y += self.speed;
// Calculate the scale based on the current y position
var scale = Math.min(1, self.y / 2732);
self.scale.x = scale;
self.scale.y = scale;
self.rotation += self.rotationSpeed; // Apply rotation
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Light blue background to represent the sky
});
/****
* Game Code
****/
function initiateStormPowerup() {
// Define what happens when storm powerup is activated
console.log('Storm powerup activated!');
// Increase entire game speed by 400 percent for 10 seconds
var originalSpeeds = {
WaterDroplet: WaterDroplet.prototype.speed,
Watermelon: Watermelon.prototype.speed,
BadWaterDroplet: BadWaterDroplet.prototype.speed,
BadWatermelon: BadWatermelon.prototype.speed
};
// Define what happens when storm powerup is activated
console.log('Storm powerup activated!');
// Increase entire game speed by 400 percent for 10 seconds
var originalSpeeds = {
WaterDroplet: WaterDroplet.prototype.speed,
Watermelon: Watermelon.prototype.speed,
BadWaterDroplet: BadWaterDroplet.prototype.speed,
BadWatermelon: BadWatermelon.prototype.speed,
SpeedUpPowerup: SpeedUpPowerup.prototype.speed // Include SpeedUpPowerup in the speed increase
};
var increaseFactor = 5; // Corrected to 500% of original speed for 10 seconds
WaterDroplet.prototype.speed = originalSpeeds.WaterDroplet * increaseFactor;
Watermelon.prototype.speed = originalSpeeds.Watermelon * increaseFactor;
BadWaterDroplet.prototype.speed = originalSpeeds.BadWaterDroplet * increaseFactor;
BadWatermelon.prototype.speed = originalSpeeds.BadWatermelon * increaseFactor;
// Removed SpeedUpPowerup speed increase as it's not a descending item
LK.setTimeout(function () {
WaterDroplet.prototype.speed = originalSpeeds.WaterDroplet;
Watermelon.prototype.speed = originalSpeeds.Watermelon;
BadWaterDroplet.prototype.speed = originalSpeeds.BadWaterDroplet;
BadWatermelon.prototype.speed = originalSpeeds.BadWatermelon;
SpeedUpPowerup.prototype.speed = originalSpeeds.SpeedUpPowerup; // Reset SpeedUpPowerup speed after 10 seconds
// After 10 seconds, check conditions to make storm button reappear or stay hidden
if (drops >= 50 && stars >= 25) {
stormButton.visible = true;
} else {
stormButton.visible = false;
}
}, 10000); // 10 seconds in milliseconds
// Make the storm button blink for the duration of the powerup
var blinkInterval = LK.setInterval(function () {
stormButton.visible = !stormButton.visible;
}, 500);
// Set a timeout to reset speeds and stop blinking after 10 seconds
LK.setTimeout(function () {
clearInterval(blinkInterval);
// After 10 seconds, check conditions to make storm button reappear or stay hidden
LK.setTimeout(function () {
if (drops >= 50 && stars >= 25) {
stormButton.visible = true;
}
}, 10000);
WaterDroplet.prototype.speed = originalSpeeds.WaterDroplet;
Watermelon.prototype.speed = originalSpeeds.Watermelon;
BadWaterDroplet.prototype.speed = originalSpeeds.BadWaterDroplet;
BadWatermelon.prototype.speed = originalSpeeds.BadWatermelon;
}, 10000); // 10 seconds in milliseconds
// Decrease 25 star points from the stars score and 50 drops from the drops score
stars = Math.max(0, stars - 25);
drops = Math.max(0, drops - 50);
starsScoreTxt.setText('Stars: ' + stars);
dropsScoreTxt.setText('Drops: ' + drops);
// Hide the storm button until original conditions for its appearance apply
stormButton.visible = false;
}
var stormButton = game.addChild(new StormButton());
// Initialize stars score to track the number of bad water droplets collected
// Global variables to track the current day and time since the last day change
// Initialize player lives
var playerLives = 3;
// Function to display player lives
function displayLives() {
for (var i = 0; i < playerLives; i++) {
var life = LK.getAsset('circle', {
width: 50,
height: 50,
color: 0xFF0000,
// Red color
shape: 'ellipse',
x: 60 + i * 60,
// Position lives horizontally with some spacing
y: 60 // Position from the top
});
LK.gui.topLeft.addChild(life);
}
}
displayLives();
var currentDay = 1;
var timeSinceLastDay = 0;
var dayDurationTicks = 24 * 60; // 24 seconds, assuming 60FPS
// Function to update the day and adjust game difficulty
function updateDay() {
timeSinceLastDay += 1;
if (timeSinceLastDay >= dayDurationTicks) {
currentDay += 1;
timeSinceLastDay = 0;
// Increase the speed and frequency of assets for the new day
WaterDroplet.prototype.speed *= Math.pow(1.1, currentDay);
Watermelon.prototype.speed *= Math.pow(1.1, currentDay);
BadWaterDroplet.prototype.speed *= Math.pow(1.1, currentDay);
BadWatermelon.prototype.speed *= Math.pow(1.1, currentDay);
// Previously attempted to modify spawn frequency directly, which is not applicable as spawnWaterDroplet is not defined as an object with a frequency property.
}
}
// Call updateDay function every tick
LK.on('tick', function () {
updateDay();
updateHUD();
});
var hudCounters = {
stars: 0,
drops: 0,
day: 1,
score: 0
};
var stars = 0;
// Flag to indicate if the player is currently invincible
var isPlayerInvincible = false;
var isPlayerBlinking = false;
var drops = 0;
var stars = 0;
var starsScoreTxt = new Text2('Stars: 0', {
size: 30,
fill: "#ffffff",
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma",
x: 2048 - 10,
y: 10
});
var dropsScoreTxt = new Text2('Drops: 0', {
size: 30,
fill: "#ffffff",
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma",
x: 2048 - 10,
y: 50
});
var dayScoreTxt = new Text2('Day: 1', {
size: 30,
fill: "#ffffff",
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma",
x: 2048 - 10,
y: 90
});
var scoreTxt = new Text2('Score: 0', {
size: 30,
fill: "#ffffff",
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma",
x: 2048 - 10,
y: 130
});
LK.gui.top.addChild(starsScoreTxt);
LK.gui.top.addChild(dropsScoreTxt);
LK.gui.top.addChild(dayScoreTxt);
LK.gui.top.addChild(scoreTxt);
function updateHUD() {
starsScoreTxt.setText('Stars: ' + stars);
dropsScoreTxt.setText('Drops: ' + drops);
dayScoreTxt.setText('Day: ' + currentDay);
scoreTxt.setText('Score: ' + LK.getScore());
var maxY = Math.max(starsScoreTxt.height, dropsScoreTxt.height, dayScoreTxt.height, scoreTxt.height);
starsScoreTxt.y = 10;
dropsScoreTxt.y = starsScoreTxt.y + maxY + 5;
dayScoreTxt.y = dropsScoreTxt.y + maxY + 5;
scoreTxt.y = dayScoreTxt.y + maxY + 5;
}
// Ensure updateHUD is called whenever HUD needs to be updated.
updateHUD();
// GameState Manager
var ground = game.addChild(LK.getAsset('ground', {
x: 0,
y: 2532
}));
// Ensure one tree is always on the left side of the map
var leftTree = new Tree();
leftTree.x = 0; // Position at the extreme left
leftTree.y = ground.y - leftTree.height / 20;
game.addChild(leftTree);
// Ensure one tree is always on the right side of the map
var rightTree = new Tree();
rightTree.x = 2048 - rightTree.width; // Position at the extreme right
rightTree.y = ground.y - rightTree.height / 20;
game.addChild(rightTree);
// Add remaining trees randomly
for (var i = 0; i < 8; i++) {
var tree = new Tree();
tree.x = Math.random() * 2048;
tree.y = ground.y - tree.height / 20;
game.addChild(tree);
}
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) {
descriptor.writable = true;
}
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) {
_defineProperties(Constructor.prototype, protoProps);
}
if (staticProps) {
_defineProperties(Constructor, staticProps);
}
Object.defineProperty(Constructor, "prototype", {
writable: false
});
return Constructor;
}
function _toPropertyKey(t) {
var i = _toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : String(i);
}
function _toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) {
return t;
}
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof(i)) {
return i;
}
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
var GameStateManager = /*#__PURE__*/function () {
function GameStateManager() {
_classCallCheck(this, GameStateManager);
this.currentState = 'Start';
}
_createClass(GameStateManager, [{
key: "setState",
value: function setState(newState) {
this.currentState = newState;
switch (this.currentState) {
case 'Start':
// Initialize or reset game state
break;
case 'Playing':
// Game is in playing state
break;
case 'Paused':
// Game is paused
break;
case 'GameOver':
// Handle game over logic
LK.showGameOver();
break;
}
}
}, {
key: "getState",
value: function getState() {
return this.currentState;
}
}]);
return GameStateManager;
}();
var gameStateManager = new GameStateManager();
var currentLevel = 1;
var levelDurationTicks = 1800; // 30 seconds per level
var levelStartTick = 0; // The tick count when the current level started
function advanceLevel() {
currentLevel++;
levelStartTick = LK.ticks;
// Reset or increase difficulty here
// For example, increase the speed of falling objects
WaterDroplet.prototype.speed *= 1.1;
Watermelon.prototype.speed *= 1.1;
BadWaterDroplet.prototype.speed *= 1.1;
BadWatermelon.prototype.speed *= 1.1;
// Optionally, reset player position or state if needed
}
// Check for level advancement in the game's main tick function
LK.on('tick', function () {
if (LK.ticks - levelStartTick >= levelDurationTicks) {
advanceLevel();
}
// Existing tick code...
});
// Start Screen
var startScreen = new Container();
var startText = new Text2('Tap to Start', {
size: 100,
fill: "#ffffff",
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma"
});
startScreen.addChild(startText);
LK.gui.center.addChild(startScreen);
startScreen.on('down', function () {
gameStateManager.setState('Playing');
backgroundColorTransition = new BackgroundColorTransition();
LK.gui.center.removeChild(startScreen);
});
// This block has been removed as it's redundant with the existing startScreen 'down' event listener which handles both touch and mouse inputs.
gameStateManager.setState('Start');
// The large score counter initialization and addition to the GUI has been removed to keep only the small score counter.
game.on('up', function () {
player.isDragging = false;
});
game.on('move', function (obj) {
if (player.isDragging) {
var pos = obj.event.getLocalPosition(game);
player.x = Math.max(0, Math.min(2048 - player.width / 2, pos.x));
}
});
game.on('mousedown', function (obj) {
player.isDragging = true;
}); // Make player draggable with mouse
game.on('mouseup', function () {
player.isDragging = false;
}); // Stop dragging player with mouse
var player = game.addChild(new Player());
player.x = 1024; // Center horizontally
player.y = 2400; // Near bottom
var droplets = [];
var watermelons = [];
var score = 0;
// This code block has been removed to implement drag to move functionality.
// The new functionality will be implemented in the following changes.
var sun = game.addChild(new Sun());
sun.x = -200;
sun.y = 100;
var moon = game.addChild(new Moon());
moon.x = -200;
moon.y = 300;
LK.on('tick', function () {
if (gameStateManager.getState() === 'Playing' && backgroundColorTransition) {
backgroundColorTransition.update();
}
sun.move();
moon.move();
// Move droplets and watermelons
droplets.forEach(function (droplet, index) {
droplet.move();
if (droplet.y > 2732) {
// Off screen
score -= 1; // Decrease score by -1 if droplet is missed
scoreTxt.setText('Score: ' + score); // Update the score display
droplet.destroy();
droplets.splice(index, 1);
} else if (player.intersects(droplet)) {
if (!isPlayerBlinking) {
// Collect droplets without immediately affecting the score
if (droplet instanceof WaterDroplet) {
drops += 1; // Increment drops for each good droplet collected
dropsScoreTxt.setText('Drops: ' + drops); // Update the drops score display
} else if (droplet instanceof BadWaterDroplet) {
stars += 1; // Increment stars for each bad droplet collected
starsScoreTxt.setText('Stars: ' + stars); // Update the stars score display
}
droplet.destroy();
droplets.splice(index, 1);
}
}
});
watermelons.forEach(function (watermelon, index) {
watermelon.move();
if (watermelon.y > 2732) {
// Off screen
watermelon.destroy();
watermelons.splice(index, 1);
} else if (player.intersects(watermelon)) {
// Check if the watermelon is bad
var badWatermelonCount = 0;
// End the game if 5 bad watermelons are collected
if (badWatermelonCount >= 5) {
gameStateManager.setState('GameOver');
}
if (watermelon instanceof BadWatermelon) {
playerLives--;
LK.gui.topLeft.removeChild(LK.gui.topLeft.children[playerLives]);
if (playerLives <= 0) {
gameStateManager.setState('GameOver');
} else {
var blinkPlayer = function blinkPlayer() {
if (!isPlayerBlinking) {
isPlayerBlinking = true; // Set player as invincible at the start of blinking
var blinkCount = 0;
var totalBlinks = blinkDuration / blinkInterval;
var blink = function blink() {
if (blinkCount < totalBlinks) {
player.visible = !player.visible; // Toggle visibility
blinkCount++;
LK.setTimeout(blink, blinkInterval); // Schedule the next blink
} else {
player.visible = true; // Ensure player is visible after blinking ends
isPlayerBlinking = false; // Reset player's invincibility
}
};
blink();
}
};
// Custom blink effect for player when a bad watermelon is caught
var blinkDuration = 3000; // Duration of the blink effect in milliseconds
var blinkInterval = 500; // Interval between each blink
var endTime = LK.ticks + blinkDuration / (1000 / 60); // Calculate end time based on game ticks
blinkPlayer();
}
} else {
score += 5;
// Activate SpeedUpPowerup when a watermelon is collected
var speedUpPowerup = new SpeedUpPowerup();
speedUpPowerup.activate();
}
watermelon.destroy();
watermelons.splice(index, 1);
}
});
// Spawn droplets and watermelons
// Spawn water droplets function
function spawnWaterDroplet() {
var newDroplet = new WaterDroplet();
newDroplet.x = Math.random() * (2048 - newDroplet.width) + newDroplet.width / 2;
newDroplet.y = 0;
droplets.push(newDroplet);
game.addChild(newDroplet);
}
// Call spawnWaterDroplet every second
if (gameStateManager.getState() === 'Playing' && LK.ticks % 60 == 0) {
spawnWaterDroplet();
}
if (gameStateManager.getState() === 'Playing' && LK.ticks % 144 == 0) {
var newBadDroplet = new BadWaterDroplet();
newBadDroplet.x = Math.random() * 2048;
newBadDroplet.y = 0;
droplets.push(newBadDroplet);
game.addChild(newBadDroplet);
}
// Spawn watermelons function
function spawnWatermelon() {
var newWatermelon = new Watermelon();
newWatermelon.x = Math.random() * 2048;
newWatermelon.y = 0;
watermelons.push(newWatermelon);
game.addChild(newWatermelon);
}
// Call spawnWatermelon every 5 seconds
if (gameStateManager.getState() === 'Playing' && LK.ticks % 300 == 0) {
spawnWatermelon();
}
if (gameStateManager.getState() === 'Playing' && LK.ticks % 800 == 0) {
var newBadWatermelon = new BadWatermelon();
newBadWatermelon.x = Math.random() * 2048;
newBadWatermelon.y = 0;
watermelons.push(newBadWatermelon);
game.addChild(newBadWatermelon);
}
// Update score display
scoreTxt.setText('Score: ' + score);
// Check if conditions for storm powerup are met
if (drops >= 50 && stars >= 25) {
stormButton.visible = true; // Show storm button
}
// End the game if score reaches zero
if (score <= -1) {
gameStateManager.setState('GameOver');
}
// Increase the speed of all descending assets by 50 percent each time the score goes up by 10
if (score % 10 === 0 && score !== 0) {
// Ensure all items have a consistent speed increase factor
var speedIncreaseFactor = 1.5625; // Adjusted to match the base speed increase of 56.25%
WaterDroplet.prototype.speed *= speedIncreaseFactor;
Watermelon.prototype.speed *= speedIncreaseFactor;
BadWaterDroplet.prototype.speed *= speedIncreaseFactor;
BadWatermelon.prototype.speed *= speedIncreaseFactor;
}
}); ===================================================================
--- original.js
+++ change.js
@@ -273,14 +273,14 @@
BadWaterDroplet: BadWaterDroplet.prototype.speed,
BadWatermelon: BadWatermelon.prototype.speed,
SpeedUpPowerup: SpeedUpPowerup.prototype.speed // Include SpeedUpPowerup in the speed increase
};
- var increaseFactor = 4; // 400 percent increase for 10 seconds
- WaterDroplet.prototype.speed *= increaseFactor;
- Watermelon.prototype.speed *= increaseFactor;
- BadWaterDroplet.prototype.speed *= increaseFactor;
- BadWatermelon.prototype.speed *= increaseFactor;
- SpeedUpPowerup.prototype.speed *= increaseFactor; // Apply the increase factor to SpeedUpPowerup
+ var increaseFactor = 5; // Corrected to 500% of original speed for 10 seconds
+ WaterDroplet.prototype.speed = originalSpeeds.WaterDroplet * increaseFactor;
+ Watermelon.prototype.speed = originalSpeeds.Watermelon * increaseFactor;
+ BadWaterDroplet.prototype.speed = originalSpeeds.BadWaterDroplet * increaseFactor;
+ BadWatermelon.prototype.speed = originalSpeeds.BadWatermelon * increaseFactor;
+ // Removed SpeedUpPowerup speed increase as it's not a descending item
LK.setTimeout(function () {
WaterDroplet.prototype.speed = originalSpeeds.WaterDroplet;
Watermelon.prototype.speed = originalSpeeds.Watermelon;
BadWaterDroplet.prototype.speed = originalSpeeds.BadWaterDroplet;
8 bit watermelon slice no shadows. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Punk rock
8 bit moon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8 bit sun solar flare. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8 bit tree. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8 bit forrest. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Add a lake
8 bit meteor. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Define the b order and keep the center transperent
Retro art rain cloud with lighting bolt coming out the bottom 2d pixel art button logo. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.