Code edit (3 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Graphics is not a constructor' in or related to this line: 'var maskGraphics = new Graphics();' Line Number: 45
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Graphics is not a constructor' in or related to this line: 'self.maskColor = new Graphics();' Line Number: 41
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: LK.getDelta is not a function' in or related to this line: 'self.flashTimer += LK.getDelta();' Line Number: 138
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: LK.getDelta is not a function' in or related to this line: 'self.flashTimer += LK.getDelta();' Line Number: 138
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: LK.getDelta is not a function' in or related to this line: 'self.flashTimer += LK.getDelta();' Line Number: 138
Code edit (12 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: LK.getDelta is not a function' in or related to this line: 'self.flashTimer += LK.getDelta();' Line Number: 137
Code edit (3 edits merged)
Please save this source code
User prompt
Why is dong panting sound not continuously playing in a loop? it shouldn't just play once it should play in a loop
Code edit (1 edits merged)
Please save this source code
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
/**** * Classes ****/ // Blood Splash Class var BloodSplash = Container.expand(function (x, y, isFinal) { var self = Container.call(this); var bloodGraphics = self.attachAsset('Blood_Splash_1', { anchorX: 0.5, anchorY: 0.5, alpha: 0, rotation: Math.random() * Math.PI * 2, scaleX: 0, scaleY: 0 }); self.x = x; self.y = y; var growSpeed = isFinal ? 0.1 : 0.05; self.update = function () { bloodGraphics.alpha += 0.05; bloodGraphics.scaleX += growSpeed; bloodGraphics.scaleY += growSpeed; if (bloodGraphics.alpha >= 1) { game.removeChild(self); } }; return self; }); // Class for Mishnu's harvest radius var HarvestRadius = Container.expand(function () { var self = Container.call(this); var radiusGraphics = self.attachAsset('radius', { anchorX: 0.5, anchorY: 0.5, scaleX: 10, scaleY: 10 }); self.radiusSize = 300; // Effective radius size self.update = function () { self.x = mishnu.x; self.y = mishnu.y; }; return self; }); // Function to randomly select a sound from a list // Class for Humans var Human = Container.expand(function () { var self = Container.call(this); var humanGraphics = self.attachAsset('human', { anchorX: 0.5, anchorY: 0.5 }); var bloodSplashes = []; self.speedX = (Math.random() * 2 - 1) * 2; self.speedY = (Math.random() * 2 - 1) * 2; self.isBeingHarvested = false; self.inRadiusStartTime = null; self.currentAgonySound = null; self.currentCrunchSound = null; self.yellStarted = false; // Tracks if the yell has started self.yellShouldPlay = Math.random() < 1 / 3; // 1-in-3 chance for yelling self.flashTimer = 0; // Timer for red flashing self.flashInterval = 500; // Initial interval for flashing self.update = function () { // Escape logic self.x += self.speedX; self.y += self.speedY; // Keep humans within the viewport margins if (self.x < 50 || self.x > 2048 - 50) { self.speedX *= -1; } if (self.y < 50 || self.y > 2732 - 250) { // Extra margin for bottom text box self.speedY *= -1; } // 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 (mishnu.humansHarvested >= mishnu.cargoMax * 1.5) { // Stop all sounds when cargo exceeds 150% capacity if (self.currentAgonySound) { fadeOutSound(self.currentAgonySound, 500); } if (self.currentCrunchSound) { self.currentCrunchSound.stop(); } self.isBeingHarvested = false; humanGraphics.tint = 0xFFFFFF; // Reset flashing return; } if (distance < radius.radiusSize - 2) { if (!self.isBeingHarvested) { self.isBeingHarvested = true; self.inRadiusStartTime = Date.now(); self.flashTimer = 0; bloodSplashes = []; self.yellStarted = false; } else { // Calculate vibration intensity based on time in the radius var elapsedTime = Date.now() - self.inRadiusStartTime; var intensity = Math.min(1, elapsedTime / 3000); // Max intensity at 3 seconds // Add vibration effect humanGraphics.x = Math.random() * intensity * 10 - intensity * 5; humanGraphics.y = Math.random() * intensity * 10 - intensity * 5; // Escape logic during vibration var runSpeed = 2; // Speed humans try to escape the radius self.x += dx / distance * runSpeed; self.y += dy / distance * runSpeed; // Flash red effect self.flashTimer += Date.now() - self.inRadiusStartTime; if (self.flashTimer >= self.flashInterval) { self.flashTimer = 0; humanGraphics.tint = humanGraphics.tint === 0xFFFFFF ? 0xFF0000 : 0xFFFFFF; // Emit blood splash var bloodSplash = game.addChild(new BloodSplash(self.x, self.y)); bloodSplashes.push(bloodSplash); } // Increase flash frequency closer to harvest self.flashInterval = Math.max(100, 500 - elapsedTime / 3000 * 400); // Start agony yell after 1 second of harvesting if (elapsedTime > 1000 && !self.yellStarted && self.yellShouldPlay) { self.yellStarted = true; self.currentAgonySound = getRandomSound(['Agony_Yell_1', 'Agony_Yell_2', 'Agony_Yell_3', 'Agony_Yell_4', 'Agony_Yell_5', 'Agony_Yell_6', 'Agony_Yell_7']); self.currentAgonySound.volume = 0.3; self.currentAgonySound.play(); } if (elapsedTime >= 3000) { // Harvest after 3 seconds 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++; // Stop yelling abruptly if (self.currentAgonySound) { self.currentAgonySound.stop(); } // Play ding and squish sounds on harvest LK.getSound('Ding_1').play(); getRandomSound(['Squish_1', 'Squish_2', 'Squish_3', 'Squish_4']).play(); // Final blood splashes for (var i = 0; i < 10; i++) { var bloodSplash = game.addChild(new BloodSplash(self.x, self.y, true)); bloodSplashes.push(bloodSplash); } } } } } else { // Reset harvesting state if outside the radius if (self.isBeingHarvested) { if (self.currentAgonySound && self.yellStarted) { self.currentAgonySound.loop = false; } if (self.currentCrunchSound) { self.currentCrunchSound.stop(); } } self.isBeingHarvested = false; self.inRadiusStartTime = null; self.flashTimer = 0; humanGraphics.tint = 0xFFFFFF; // Reset flashing bloodSplashes.forEach(function (splash) { game.removeChild(splash); }); } }; return self; }); // Class for Mishnu var Mishnu = Container.expand(function () { var self = Container.call(this); var mishnuGraphics = self.attachAsset('mishnu', { anchorX: 0.5, anchorY: 0.5, zIndex: 1 }); self.speed = 4; self.humansHarvested = 0; self.cargoMax = 10; self.targetX = 2048 / 2; self.targetY = 2732 - 200; self.update = function () { var dx = self.targetX - self.x; var dy = self.targetY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); // Adjust speed based on cargo if (self.humansHarvested > self.cargoMax) { var overCapacityFactor = (self.humansHarvested - self.cargoMax) / (self.cargoMax * 0.5); self.speed = Math.max(1, 4 - 3 * overCapacityFactor); // Minimum speed of 1 } else { self.speed = 4; // Full speed } if (distance > 0) { self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; } // Keep Mishnu within viewport margins self.x = Math.max(50, Math.min(2048 - 50, self.x)); self.y = Math.max(50, Math.min(2732 - 250, self.y)); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Function to randomly select a sound from a list function getRandomSound(soundList) { return LK.getSound(soundList[Math.floor(Math.random() * soundList.length)]); } // Function to fade out a sound function fadeOutSound(sound, duration) { var initialVolume = sound.volume; var fadeStep = initialVolume / (duration / 100); var fadeInterval = LK.setInterval(function () { if (sound.volume > 0) { sound.volume = Math.max(0, sound.volume - fadeStep); } else { LK.clearInterval(fadeInterval); sound.stop(); } }, 100); } var radius = game.addChild(new HarvestRadius()); var mishnu = game.addChild(new Mishnu()); mishnu.x = 2048 / 2; mishnu.y = 2732 - 200; radius.x = mishnu.x; radius.y = mishnu.y; // 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); humans.push(human); game.addChild(human); } // Play looping Dog Panting sound LK.getSound('Dog_panting').play({ loop: true }); // Handle mouse movement game.move = function (x, y, obj) { mishnu.targetX = x; mishnu.targetY = y; }; // Display cargo count var cargoText = new Text2('Cargo: 0 / 10', { size: 50, fill: 0xFFFFFF }); cargoText.anchor.set(1, 1); LK.gui.bottomRight.addChild(cargoText); // Music alternation logic var currentMusic = 'Music_Level_1_5'; game.update = function () { humans.forEach(function (human) { human.update(); }); mishnu.update(); radius.update(); cargoText.setText('Cargo: ' + mishnu.humansHarvested + ' / 10'); // Alternate music if (LK.ticks % 1000 === 0) { currentMusic = currentMusic === 'Music_Level_1_5' ? 'Music_Level_1_4' : 'Music_Level_1_5'; LK.playMusic(currentMusic); } };
===================================================================
--- original.js
+++ change.js
@@ -1,7 +1,31 @@
/****
* Classes
****/
+// Blood Splash Class
+var BloodSplash = Container.expand(function (x, y, isFinal) {
+ var self = Container.call(this);
+ var bloodGraphics = self.attachAsset('Blood_Splash_1', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ alpha: 0,
+ rotation: Math.random() * Math.PI * 2,
+ scaleX: 0,
+ scaleY: 0
+ });
+ self.x = x;
+ self.y = y;
+ var growSpeed = isFinal ? 0.1 : 0.05;
+ self.update = function () {
+ bloodGraphics.alpha += 0.05;
+ bloodGraphics.scaleX += growSpeed;
+ bloodGraphics.scaleY += growSpeed;
+ if (bloodGraphics.alpha >= 1) {
+ game.removeChild(self);
+ }
+ };
+ return self;
+});
// Class for Mishnu's harvest radius
var HarvestRadius = Container.expand(function () {
var self = Container.call(this);
var radiusGraphics = self.attachAsset('radius', {
@@ -16,60 +40,129 @@
self.y = mishnu.y;
};
return self;
});
-// Function to randomly select a yell sound
+// Function to randomly select a sound from a list
// Class for Humans
var Human = Container.expand(function () {
var self = Container.call(this);
var humanGraphics = self.attachAsset('human', {
anchorX: 0.5,
anchorY: 0.5
});
- self.speedX = (Math.random() * 2 - 1) * 2; // Random speed
- self.speedY = (Math.random() * 2 - 1) * 2; // Random speed
- self.isBeingHarvested = false; // Tracks if currently being harvested
- self.inRadiusStartTime = null; // Tracks time in the radius
+ var bloodSplashes = [];
+ self.speedX = (Math.random() * 2 - 1) * 2;
+ self.speedY = (Math.random() * 2 - 1) * 2;
+ self.isBeingHarvested = false;
+ self.inRadiusStartTime = null;
+ self.currentAgonySound = null;
+ self.currentCrunchSound = null;
+ self.yellStarted = false; // Tracks if the yell has started
+ self.yellShouldPlay = Math.random() < 1 / 3; // 1-in-3 chance for yelling
+ self.flashTimer = 0; // Timer for red flashing
+ self.flashInterval = 500; // Initial interval for flashing
self.update = function () {
+ // Escape logic
self.x += self.speedX;
self.y += self.speedY;
- // Keep humans within the viewport
+ // Keep humans within the viewport margins
if (self.x < 50 || self.x > 2048 - 50) {
self.speedX *= -1;
}
- if (self.y < 50 || self.y > 2732 - 200) {
+ if (self.y < 50 || self.y > 2732 - 250) {
+ // Extra margin for bottom text box
self.speedY *= -1;
}
// 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 (mishnu.humansHarvested >= mishnu.cargoMax * 1.5) {
+ // Stop all sounds when cargo exceeds 150% capacity
+ if (self.currentAgonySound) {
+ fadeOutSound(self.currentAgonySound, 500);
+ }
+ if (self.currentCrunchSound) {
+ self.currentCrunchSound.stop();
+ }
+ self.isBeingHarvested = false;
+ humanGraphics.tint = 0xFFFFFF; // Reset flashing
+ return;
+ }
if (distance < radius.radiusSize - 2) {
- // Only trigger if within radius minus 2px
if (!self.isBeingHarvested) {
self.isBeingHarvested = true;
self.inRadiusStartTime = Date.now();
- // Play a random agony yell with 1-in-3 chance
- if (Math.random() < 1 / 3) {
- // 1 in 3 chance
- var agonySound = getRandomYell();
- agonySound.volume = 0.3; // Ensure volume is set
- agonySound.play({
- start: Math.random() * (agonySound.end - agonySound.start)
- });
+ self.flashTimer = 0;
+ bloodSplashes = [];
+ self.yellStarted = false;
+ } else {
+ // Calculate vibration intensity based on time in the radius
+ var elapsedTime = Date.now() - self.inRadiusStartTime;
+ var intensity = Math.min(1, elapsedTime / 3000); // Max intensity at 3 seconds
+ // Add vibration effect
+ humanGraphics.x = Math.random() * intensity * 10 - intensity * 5;
+ humanGraphics.y = Math.random() * intensity * 10 - intensity * 5;
+ // Escape logic during vibration
+ var runSpeed = 2; // Speed humans try to escape the radius
+ self.x += dx / distance * runSpeed;
+ self.y += dy / distance * runSpeed;
+ // Flash red effect
+ self.flashTimer += Date.now() - self.inRadiusStartTime;
+ if (self.flashTimer >= self.flashInterval) {
+ self.flashTimer = 0;
+ humanGraphics.tint = humanGraphics.tint === 0xFFFFFF ? 0xFF0000 : 0xFFFFFF;
+ // Emit blood splash
+ var bloodSplash = game.addChild(new BloodSplash(self.x, self.y));
+ bloodSplashes.push(bloodSplash);
}
- } else if (Date.now() - self.inRadiusStartTime >= 2000) {
- // Harvest after 2 seconds
- 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++; // Increment harvest count
+ // Increase flash frequency closer to harvest
+ self.flashInterval = Math.max(100, 500 - elapsedTime / 3000 * 400);
+ // Start agony yell after 1 second of harvesting
+ if (elapsedTime > 1000 && !self.yellStarted && self.yellShouldPlay) {
+ self.yellStarted = true;
+ self.currentAgonySound = getRandomSound(['Agony_Yell_1', 'Agony_Yell_2', 'Agony_Yell_3', 'Agony_Yell_4', 'Agony_Yell_5', 'Agony_Yell_6', 'Agony_Yell_7']);
+ self.currentAgonySound.volume = 0.3;
+ self.currentAgonySound.play();
}
+ if (elapsedTime >= 3000) {
+ // Harvest after 3 seconds
+ 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++;
+ // Stop yelling abruptly
+ if (self.currentAgonySound) {
+ self.currentAgonySound.stop();
+ }
+ // Play ding and squish sounds on harvest
+ LK.getSound('Ding_1').play();
+ getRandomSound(['Squish_1', 'Squish_2', 'Squish_3', 'Squish_4']).play();
+ // Final blood splashes
+ for (var i = 0; i < 10; i++) {
+ var bloodSplash = game.addChild(new BloodSplash(self.x, self.y, true));
+ bloodSplashes.push(bloodSplash);
+ }
+ }
+ }
}
} else {
// Reset harvesting state if outside the radius
+ if (self.isBeingHarvested) {
+ if (self.currentAgonySound && self.yellStarted) {
+ self.currentAgonySound.loop = false;
+ }
+ if (self.currentCrunchSound) {
+ self.currentCrunchSound.stop();
+ }
+ }
self.isBeingHarvested = false;
self.inRadiusStartTime = null;
+ self.flashTimer = 0;
+ humanGraphics.tint = 0xFFFFFF; // Reset flashing
+ bloodSplashes.forEach(function (splash) {
+ game.removeChild(splash);
+ });
}
};
return self;
});
@@ -89,12 +182,22 @@
self.update = function () {
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
+ // Adjust speed based on cargo
+ if (self.humansHarvested > self.cargoMax) {
+ var overCapacityFactor = (self.humansHarvested - self.cargoMax) / (self.cargoMax * 0.5);
+ self.speed = Math.max(1, 4 - 3 * overCapacityFactor); // Minimum speed of 1
+ } else {
+ self.speed = 4; // Full speed
+ }
if (distance > 0) {
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
}
+ // Keep Mishnu within viewport margins
+ self.x = Math.max(50, Math.min(2048 - 50, self.x));
+ self.y = Math.max(50, Math.min(2732 - 250, self.y));
};
return self;
});
@@ -107,13 +210,11 @@
/****
* Game Code
****/
-// 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 randomly select a sound from a list
+function getRandomSound(soundList) {
+ return LK.getSound(soundList[Math.floor(Math.random() * soundList.length)]);
}
// Function to fade out a sound
function fadeOutSound(sound, duration) {
var initialVolume = sound.volume;
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