Code edit (7 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: fadeOutSound is not defined' in or related to this line: 'fadeOutSound(LK.getSound('Agony_Yell_1'), 1000); // Fade out over 1 second' Line Number: 87
Code edit (2 edits merged)
Please save this source code
User prompt
No the sound needs to start playing at a random point in the sound. It shouldn't start from the start of our 10 second sound. It needs to start at random part of the sound
User prompt
No, When the human enters the radius the sound plays, when he exits the radius or is harvested the sound stops.
User prompt
Whenever a human is being harvested he will emit sound Agony_Yell_1. However the sound starts at a random point of it's 10 second duration
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: LK.playSound is not a function' in or related to this line: 'LK.playSound('Music_Level_1_5');' Line Number: 175
User prompt
Its no lk current music its lk sound. just play them on after the other, and do this in a loop
User prompt
Make sure the sounds are alternating
User prompt
Its play sound not getcurrentmusic. you loafing lk sounds so call the proper function
User prompt
Please fix the bug: 'TypeError: LK.getMusic is not a function' in or related to this line: 'if (LK.getMusic() == 'Music_Level_1_5') {' Line Number: 172
User prompt
Please fix the bug: 'TypeError: LK.getCurrentMusic is not a function' in or related to this line: 'if (LK.getCurrentMusic() == 'Music_Level_1_5') {' Line Number: 172
User prompt
THere is music in background: It plays Music_Level_1_5 alternating with Music_Level_1_4 in a loop. We will refer to this as the music loop
User prompt
Mishnu emits sound Dog_Panting continuously in loop
Code edit (1 edits merged)
Please save this source code
Code edit (9 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: cargoText.style is undefined' in or related to this line: 'cargoText.style.fill = 0xFFFFFF; // White color' Line Number: 170
User prompt
When cargo appears over 100% text appears red. If cargo is under 100% it remains white.
Code edit (1 edits merged)
Please save this source code
User prompt
mishnu is still way too fast, fix this
User prompt
still way to fast. she needs to be following the cursor, but it's too fast. she should be dragging behind the cursor most of the time.
User prompt
Slow down mishnu's movement by half
User prompt
The visual representation of the radius does not match the script's size of the radius. Also it seems our asset mishnu, loads underneath the radius making her invisible
User prompt
The harvesting process is not working correctly. Keep it simple. Any human that enters her radius and stays in it for 2 seconds gets harvested no matter what. If there are more than one our script handles each human independently as they enter the radius at different times and their 2 second timer for harvesting started at different times.
===================================================================
--- original.js
+++ change.js
@@ -7,107 +7,77 @@
var radiusGraphics = self.attachAsset('radius', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 10,
- scaleY: 10 // Increase the scale of the radius
+ scaleY: 10
});
- self.radiusSize = 300; // Set the effective radius size to match the visual size
+ self.radiusSize = 300; // Effective radius size
self.update = function () {
self.x = mishnu.x;
self.y = mishnu.y;
};
return self;
});
-// Class for Humans, the targets
+// Function to randomly select a yell sound
+// Class for Humans
var Human = Container.expand(function () {
var self = Container.call(this);
- Container.call(self);
var humanGraphics = self.attachAsset('human', {
anchorX: 0.5,
anchorY: 0.5
});
- self.speedX = (Math.random() * 2 - 1) * 2; // Slower random speed in X direction
- self.speedY = (Math.random() * 2 - 1) * 2; // Slower random speed in Y direction
- self.inRadiusStartTime = null; // Track time in radius
+ self.speedX = (Math.random() * 2 - 1) * 2;
+ self.speedY = (Math.random() * 2 - 1) * 2;
self.isBeingHarvested = false;
self.update = function () {
self.x += self.speedX;
self.y += self.speedY;
- // Bounce off edges of the viewport
+ // Keep humans within the viewport
if (self.x < 50 || self.x > 2048 - 50) {
self.speedX *= -1;
- self.x = self.x < 50 ? 50 : 2048 - 50; // Keep humans within the viewport
}
if (self.y < 50 || self.y > 2732 - 200) {
self.speedY *= -1;
- self.y = self.y < 50 ? 50 : 2732 - 200; // Keep humans above the text area
}
- // Check if this human is in Mishnu's radius
+ // Check distance to Mishnu
var dx = self.x - mishnu.x;
var dy = self.y - mishnu.y;
var distance = Math.sqrt(dx * dx + dy * dy);
- if (distance < radius.radiusSize) {
- // Mishnu's radius
- var runSpeed = 2;
- self.x += dx / distance * runSpeed;
- self.y += dy / distance * runSpeed;
+ if (distance < radius.radiusSize - 2) {
if (!self.isBeingHarvested) {
self.isBeingHarvested = true;
- self.inRadiusStartTime = Date.now();
- // Play Agony_Yell_1 at a random start point
- var agonySound = LK.getSound('Agony_Yell_1');
+ // Play a random agony yell
+ var agonySound = getRandomYell();
+ agonySound.volume = 0.3;
agonySound.play({
- start: Math.random() * 0.585 // Random start point
+ start: Math.random() * (agonySound.end - agonySound.start)
});
- agonySound.volume = 0.3; // Reset volume to ensure it starts correctly
- } else if (Date.now() - self.inRadiusStartTime >= 2000) {
- // Harvest the human
- if (mishnu.humansHarvested < mishnu.cargoMax * 1.5) {
- game.removeChild(self); // Remove human from the game
- humans.splice(humans.indexOf(self), 1); // Remove from array
- mishnu.humansHarvested++;
- // Fade out Agony_Yell_1 when the human is harvested
- fadeOutSound(LK.getSound('Agony_Yell_1'), 1000); // Fade out over 1 second
- }
}
} else {
if (self.isBeingHarvested) {
- // Fade out Agony_Yell_1 when human exits the radius
- fadeOutSound(LK.getSound('Agony_Yell_1'), 1000); // Fade out over 1 second
+ fadeOutSound(getRandomYell(), 1000);
}
- self.isBeingHarvested = false; // Reset harvesting if out of radius
- self.inRadiusStartTime = null;
+ self.isBeingHarvested = false;
}
};
return self;
});
-// Class for Mishnu, the main character
+// Class for Mishnu
var Mishnu = Container.expand(function () {
var self = Container.call(this);
- Container.call(self);
var mishnuGraphics = self.attachAsset('mishnu', {
anchorX: 0.5,
anchorY: 0.5,
- zIndex: 1 // Ensure Mishnu is above the radius
+ zIndex: 1
});
- self.speed = 4; // Base speed
- self.humansHarvested = 0;
- self.lastHarvestTime = 0;
- self.cargoMax = 10; // Maximum cargo
- self.targetX = 2048 / 2;
- self.targetY = 2732 - 200;
+ self.speed = 4;
self.update = function () {
- var effectiveSpeed = self.speed;
- if (self.humansHarvested > self.cargoMax) {
- var overCapacityFactor = (self.humansHarvested - self.cargoMax) / (self.cargoMax * 0.5);
- effectiveSpeed *= Math.max(0.5, 1 - overCapacityFactor); // Decrease speed down to 50%
- }
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 0) {
- self.x += dx / distance * effectiveSpeed;
- self.y += dy / distance * effectiveSpeed;
+ self.x += dx / distance * self.speed;
+ self.y += dy / distance * self.speed;
}
};
return self;
});
@@ -115,79 +85,75 @@
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x000000 // Init game with black background
+ backgroundColor: 0x000000
});
/****
* Game Code
****/
-// Function to fade out a sound over a specified duration
-// Initialize Mishnu's harvest radius
+// Function to randomly select a yell sound
+// Initialize Mishnu and Harvest Radius
+function getRandomYell() {
+ var yells = ['Agony_Yell_1', 'Agony_Yell_2', 'Agony_Yell_3'];
+ return LK.getSound(yells[Math.floor(Math.random() * yells.length)]);
+}
+// Function to fade out a sound
function fadeOutSound(sound, duration) {
var initialVolume = sound.volume;
- var fadeStep = initialVolume / (duration / 100); // Calculate the fade step based on duration
+ var fadeStep = initialVolume / (duration / 100);
var fadeInterval = LK.setInterval(function () {
if (sound.volume > 0) {
- sound.volume = Math.max(0, sound.volume - fadeStep); // Decrease volume
+ sound.volume = Math.max(0, sound.volume - fadeStep);
} else {
- LK.clearInterval(fadeInterval); // Clear interval when volume reaches 0
- sound.stop(); // Stop the sound
+ LK.clearInterval(fadeInterval);
+ sound.stop();
}
- }, 100); // Adjust volume every 100ms
+ }, 100);
}
var radius = game.addChild(new HarvestRadius());
-// Initialize Mishnu
var mishnu = game.addChild(new Mishnu());
mishnu.x = 2048 / 2;
mishnu.y = 2732 - 200;
radius.x = mishnu.x;
radius.y = mishnu.y;
-// Array to hold humans
+// Initialize humans
var humans = [];
for (var i = 0; i < 50; i++) {
var human = new Human();
human.x = Math.random() * 2048;
- human.y = Math.random() * 2732 - 100; // Avoid bottom reserved area
+ human.y = Math.random() * (2732 - 100);
humans.push(human);
game.addChild(human);
}
// Play looping Dog Panting sound
LK.getSound('Dog_panting').play({
loop: true
});
-// Handle mouse movement to set Mishnu's target position
+// Handle mouse movement
game.move = function (x, y, obj) {
- if (y < 2732 - 100) {
- mishnu.targetX = x;
- mishnu.targetY = y;
- }
+ mishnu.targetX = x;
+ mishnu.targetY = y;
};
-// Text field to display the number of humans harvested
+// Display cargo count
var cargoText = new Text2('Cargo: 0 / 10', {
size: 50,
fill: 0xFFFFFF
});
-cargoText.anchor.set(1, 1); // Anchor to the bottom right corner
+cargoText.anchor.set(1, 1);
LK.gui.bottomRight.addChild(cargoText);
-// Declare currentMusic to alternate music
+// Music alternation logic
var currentMusic = 'Music_Level_1_5';
game.update = function () {
humans.forEach(function (human) {
human.update();
});
mishnu.update();
radius.update();
- // Update the cargo text field
cargoText.setText('Cargo: ' + mishnu.humansHarvested + ' / 10');
- // Alternate between Music_Level_1_5 and Music_Level_1_4
+ // Alternate music
if (LK.ticks % 1000 === 0) {
- if (currentMusic === 'Music_Level_1_5') {
- LK.playMusic('Music_Level_1_4');
- currentMusic = 'Music_Level_1_4';
- } else {
- LK.playMusic('Music_Level_1_5');
- currentMusic = 'Music_Level_1_5';
- }
+ currentMusic = currentMusic === 'Music_Level_1_5' ? 'Music_Level_1_4' : 'Music_Level_1_5';
+ LK.playMusic(currentMusic);
}
};
\ No newline at end of file
blurry texture background 4k black and white
can of Dog Food. Game asset. 3d clipart. Blank background. High contrast. No shadows..
black capsule. Game asset. 3d clipart. Blank background. High contrast. No shadows..
woman in short shorts. mobile game art. pixel art. full body. front facing. Blank background. High contrast. No shadows.
laser beam cartoon game asset. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
bone. clipart. cartoon. Blank background. High contrast. No shadows..
Game Over. Red game letters, dripping. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Dog_panting
Sound effect
Agony_Yell_1
Sound effect
Music_Level_1_5
Music
Music_Level_1_4
Music
Agony_Yell_2
Sound effect
Agony_Yell_3
Sound effect
Agony_Yell_4
Sound effect
Agony_Yell_5
Sound effect
Agony_Yell_6
Sound effect
Agony_Yell_7
Sound effect
Dog_Crunch
Sound effect
Dog_Crunch_2
Sound effect
Dog_Crunch_3
Sound effect
Ding_1
Sound effect
Squish_1
Sound effect
Squish_2
Sound effect
Squish_4
Sound effect
Squish_3
Sound effect
Factory_Deposit
Sound effect
Factory_Operation
Sound effect
Level_Up
Sound effect
Bark
Sound effect
Hit
Sound effect
Agony_Yell_8
Sound effect
Agony_Yell_9
Sound effect
GiggleMan_1
Sound effect
GiggleMan_2
Sound effect
GiggleMan_3
Sound effect
GiggleMan_4
Sound effect
Booster_Sound
Sound effect
Can
Sound effect
woosh
Sound effect
Agony_Yell_10
Sound effect
Bark_2
Sound effect
Bark_3
Sound effect
laser
Sound effect
searing
Sound effect
laser_2
Sound effect
Laser_3
Sound effect
Laser_4
Sound effect
Boss_Hit
Sound effect
Boss_Hit_2
Sound effect
Boss_Hit_3
Sound effect
GiggleMan_5
Sound effect
GiggleMan_6
Sound effect
hip_hop_loop
Sound effect