Code edit (16 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: draggedObject is null' in this line: 'draggedObject.alpha = 1;' Line Number: 117
Code edit (2 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: draggedObject is null' in this line: 'draggedObject.alpha = 0.75;' Line Number: 129
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'Timeout.tick error: self.yLevels is undefined' in this line: 'self.y = self.yLevels.find(level => level === self.y) || self.yLevels[0];' Line Number: 214
Code edit (1 edits merged)
Please save this source code
var NutBomb = Container.expand(function () {
var self = Container.call(this);
var nutBombGraphics = self.createAsset('nutBomb', 'Nut Bomb Graphics', .5, .5);
self.move = function () {
var fallSpeed = 5 + 1 * self.fallCounter / 3;
self.y += fallSpeed;
self.fallCounter = (self.fallCounter || 0) + 1;
};
});
var RoyalCheese = Container.expand(function () {
var self = Container.call(this);
self.moveToYLevel = function (targetYLevel) {
self.canNotBeStolen = true;
var moveSpeed = 5;
var moveInterval = LK.setInterval(function () {
if (self.y <= targetYLevel) {
self.y += moveSpeed;
if (self.y >= targetYLevel) {
self.y = targetYLevel;
self.canNotBeStolen = false;
LK.clearInterval(moveInterval);
}
} else if (self.y > targetYLevel) {
self.y -= moveSpeed;
if (self.y <= targetYLevel) {
self.y = targetYLevel;
self.canNotBeStolen = false;
LK.clearInterval(moveInterval);
}
}
}, 1000 / 60);
};
var cheeseGraphics = self.createAsset('royalCheese', 'Royal Cheese Graphics', .5, .5);
self.abducted = false;
});
var RollingNut = Container.expand(function () {
var self = Container.call(this);
var rollingNutGraphics = self.createAsset('rollingNut', 'Rolling Nut Graphics', .5, .5);
self.move = function () {
self.x += 2;
self.rotation += 0.1;
};
});
var Nutcracker = Container.expand(function () {
var self = Container.call(this);
self.freeMouth = true;
self.upperJaw = self.createAsset('upperJaw', 'Nutcracker Upper Jaw', .5, .5);
self.lowerJaw = self.createAsset('lowerJaw', 'Nutcracker Lower Jaw', .5, .5);
self.upperJaw.y -= 140;
self.mouthUp = true;
self.chewAnimation = function () {
if (!self.freeMouth) {
var chewRange = 180;
var chewSpeed = 3;
if (self.mouthUp) {
if (self.upperJaw.y > -chewRange) {
self.upperJaw.y -= chewSpeed;
} else {
self.mouthUp = false;
}
} else {
if (self.upperJaw.y < -140) {
self.upperJaw.y += chewSpeed;
} else {
self.mouthUp = true;
}
}
}
};
self.isDragged = false;
self.isDraggable = true;
self.isReady = false;
var yLevels = [2570, 2070, 1570];
self.move = function () {
if (self.mouthTimer && self.mouthTimer > 0) {
self.mouthTimer--;
self.chewAnimation();
if (self.mouthTimer === 0) {
self.freeMouth = true;
self.upperJaw.y = -140;
}
}
if (self.resourceIncrementTimer && self.resourceIncrementTimer > 0) {
self.resourceIncrementTimer--;
if (self.resourceIncrementTimer === 0) {
ressourcesNuts++;
}
}
if (!self.isDragged && !yLevels.includes(self.y)) {
var fallSpeed = 5 + 1 * self.fallCounter / 3;
if (fallSpeed > 15) {
self.deadlyFallSpeed = false;
if (self.deadlyFallSpeed && !self.fallAsset) {
self.fallAsset = self.createAsset('fallAsset', 'Extra Asset Graphics', .5, 0.6);
}
} else {
if (self.fallAsset) {
self.fallAsset.destroy();
self.fallAsset = null;
}
self.deadlyFallSpeed = false;
}
if (self.y < yLevels[0]) {
self.y += fallSpeed;
} else {
self.y -= fallSpeed;
}
if (yLevels.some(level => self.y >= level && self.y - fallSpeed < level)) {
self.y = yLevels.find(level => self.y >= level && self.y - fallSpeed < level);
self.fallCounter = 0;
self.deadlyFallSpeed = false;
if (self.fallAsset) {
self.fallAsset.destroy();
self.fallAsset = null;
}
self.isReady = true;
self.alpha = 1;
}
self.fallCounter = (self.fallCounter || 0) + 1;
}
};
self.on('down', function (obj) {
if (self.isDraggable) {
var pos = obj.event.getLocalPosition(self.parent);
self.y = pos.y;
self.x = pos.x;
self.isDragged = true;
self.isReady = false;
self.alpha = 0.5;
draggedObject = self;
self.fallCounter = 0;
self.deadlyFallSpeed = false;
}
});
});
var MouseTrap = Container.expand(function () {
var self = Container.call(this);
var mousetrapGraphics = self.createAsset('mousetrap', 'Mouse Trap Graphics', .5, .5);
self.activate = function () {};
});
var Mouse = Container.expand(function () {
var self = Container.call(this);
self.name = "mouse";
self.mouseTail = self.createAsset('mouseTail', 'Mouse Graphics', .5, .5);
self.mouseBody = self.createAsset('mouseBody', 'Mouse Graphics', .5, .5);
self.mouseHead = self.createAsset('mouseHead', 'Mouse Graphics', .5, .5);
self.mouseHead.y -= 90;
self.mouseHead.x += 10;
self.mouseTail.x -= 50;
self.mouseTail.y -= 10;
self.consumptionDuration = 180;
self.reachedCheese = false;
self.royalCheese = null;
self.move = function () {
if (self.reachedCheese) {
self.x -= 1;
if (self.width > 0) {
self.width = -150;
}
} else {
self.x += 2;
}
var tailRotationSpeed = 0.020;
var tailRotationRange = 20 * (Math.PI / 180);
if (self.tailRotationDirection === undefined) {
self.tailRotationDirection = 1;
}
if (self.mouseTail.rotation > tailRotationRange) {
self.tailRotationDirection = -1;
} else if (self.mouseTail.rotation < -tailRotationRange) {
self.tailRotationDirection = 1;
}
self.mouseTail.rotation += tailRotationSpeed * self.tailRotationDirection;
self.mouseTail.y -= self.tailRotationDirection / 3;
self.mouseHead.rotation += tailRotationSpeed * self.tailRotationDirection / 3;
self.mouseHead.x += self.tailRotationDirection / 3;
self.mouseHead.y += self.tailRotationDirection / 10;
};
});
var MouseJumper = Container.expand(function () {
var self = Container.call(this);
self.name = "mouseJumper";
self.mouseTail = self.createAsset('mouseJumper', 'Mouse Jumper Graphics', .5, .5);
self.consumptionDuration = 180;
self.jumpTimer = 150;
var yLevels = [2570, 2070, 1570];
self.reachedCheese = false;
self.royalCheese = null;
self.move = function () {
var direction = self.reachedCheese ? -1 : 1;
if (self.jumpTimer > 0) {
self.jumpTimer--;
} else {
self.jumpTimer = 160;
var jumpHeight = -900 + self.y;
var jumpDistance = 500;
self.jumpTo = function (targetX, targetY, callback) {
var jumpSpeedX = (targetX - self.x) / 30 * direction;
var jumpSpeedY = Math.abs(targetY - self.y) / 30;
var jumpTick = 0;
var jumpInterval = LK.setInterval(function () {
jumpTick++;
self.x += jumpSpeedX;
if (jumpTick <= 15) {
self.y -= jumpSpeedY;
} else {
self.y += jumpSpeedY;
}
if (jumpTick >= 30) {
LK.clearInterval(jumpInterval);
if (callback) callback();
}
}, 1000 / 60);
};
self.jumpTo(self.x + jumpDistance, jumpHeight, function () {
self.y = yLevels.find(level => level === self.y) || yLevels[0];
});
}
};
});
var TurtleMouse = Container.expand(function () {
var self = Container.call(this);
self.name = "turtleMouse";
self.mouseTail = self.createAsset('turtleMouseTail', 'Turtle Mouse Graphics', .5, .5);
self.MouseBody = self.createAsset('turtleMouseBody', 'Turtle Mouse Graphics', .5, .5);
self.mouseTail.x -= 75;
self.consumptionDuration = 300;
self.mouseTail.y -= 25;
self.reachedCheese = false;
self.royalCheese = null;
self.move = function () {
if (self.reachedCheese) {
self.x -= 1;
if (self.width > 0) {
self.width = -200;
}
} else {
self.x += 1;
}
var tailRotationSpeed = 0.020;
var tailRotationRange = 20 * (Math.PI / 180);
if (self.tailRotationDirection === undefined) {
self.tailRotationDirection = 1;
}
if (self.mouseTail.rotation > tailRotationRange) {
self.tailRotationDirection = -1;
} else if (self.mouseTail.rotation < -tailRotationRange) {
self.tailRotationDirection = 1;
}
self.mouseTail.rotation += tailRotationSpeed * self.tailRotationDirection;
self.mouseTail.y -= self.tailRotationDirection / 3;
};
});
var FecalBall = Container.expand(function () {
var self = Container.call(this);
self.mouseTail = self.createAsset('mouseTail', 'Mouse Graphics', .5, .5);
self.fecalBall = self.createAsset('fecalBall', 'Fecal Ball Graphics', .5, .5);
self.mouseTail.x -= 50;
self.mouseTail.y -= 25;
self.move = function () {
self.x += 5;
self.fecalBall.rotation += 0.1;
var tailRotationSpeed = 0.020;
var tailRotationRange = 20 * (Math.PI / 180);
if (self.tailRotationDirection === undefined) {
self.tailRotationDirection = 1;
}
if (self.mouseTail.rotation > tailRotationRange) {
self.tailRotationDirection = -1;
} else if (self.mouseTail.rotation < -tailRotationRange) {
self.tailRotationDirection = 1;
}
self.mouseTail.rotation += tailRotationSpeed * self.tailRotationDirection;
self.mouseTail.y -= self.tailRotationDirection / 3;
};
});
var MouseTail = Container.expand(function (x, y, name, consumptionDuration) {
var self = Container.call(this);
self.mouseTail = self.createAsset(name + 'Tail', name + ' Tail Graphics', .5, .5);
self.x = x;
self.y = y;
self.tickCounter = 0;
self.tickFallCounter = 0;
self.animateTick = function () {
if (self.tickCounter < consumptionDuration) {
var shiverAngle = 10 * Math.sin(self.tickCounter * 0.2);
self.mouseTail.rotation = shiverAngle * (Math.PI / 180);
self.tickCounter++;
} else if (self.tickFallCounter < 60) {
self.mouseTail.rotation += Math.PI / 60 * (Math.random() * 6 - 3);
self.y += 2.5 + Math.random() * 0.5;
self.tickFallCounter++;
} else if (self.alpha > 0) {
self.alpha -= 1 / 1800;
} else {
LK.off('tick', self.animateTick);
self.destroy();
}
};
});
var BuildingMenu = Container.expand(function () {
var self = Container.call(this);
self.y = 0;
self.x = 1024;
var menuBackground = self.createAsset('menuBackground', 'Building Menu Background', 0.5, 0);
self.addChild(menuBackground);
});
var NutcrackerButton = Container.expand(function (nutcrackers) {
var self = Container.call(this);
var buttonGraphics = self.createAsset('nutcrackerButton', 'Nutcracker Build Button', 0.5, 0);
self.addChild(buttonGraphics);
self.costText = new Text2((3 + nutcrackers.length).toString(), {
size: 100,
fill: "goldenrod"
});
self.costText.anchor.set(0.5, 0);
self.costText.x = self.x;
self.costText.y = self.y + 200;
self.addChild(self.costText);
var dragObject = null;
self.on('down', function (obj) {
if (ressourcesNuts >= 3 + nutcrackers.length) {
var pos = obj.event.getLocalPosition(self.parent);
dragObject = new Nutcracker();
dragObject.alpha = 0.5;
self.parent.addChild(dragObject);
dragObject.y = pos.y;
dragObject.x = pos.x;
}
});
stage.on('up', function (obj) {
var pos = obj.event.getLocalPosition(self);
if (dragObject) {
if (pos.y > 400) {
ressourcesNuts -= 3 + nutcrackers.length;
var newNutcracker = new Nutcracker();
newNutcracker.x = pos.x + 1000;
newNutcracker.y = pos.y + 300;
self.parent.addChild(newNutcracker);
nutcrackers.push(newNutcracker);
dragObject.destroy();
dragObject = null;
self.costText.setText((3 + nutcrackers.length).toString());
} else {
dragObject.destroy();
dragObject = null;
}
}
});
stage.on('move', function (obj) {
if (dragObject) {
var pos = obj.event.getLocalPosition(self);
dragObject.x = pos.x + 1000;
dragObject.y = pos.y + 300;
}
});
});
var NutBombButton = Container.expand(function (nutbombs) {
var self = Container.call(this);
var buttonGraphics = self.createAsset('nutBombButton', 'NutBomb Build Button', 0.5, 0);
self.addChild(buttonGraphics);
self.costText = new Text2("1", {
size: 100,
fill: "goldenrod"
});
self.costText.anchor.set(0.5, 0);
self.costText.x = self.x;
self.costText.y = self.y + 200;
self.addChild(self.costText);
var dragObject = null;
self.on('down', function (obj) {
if (ressourcesNuts >= 1) {
var pos = obj.event.getLocalPosition(self.parent);
dragObject = new NutBomb();
dragObject.alpha = 0.5;
self.parent.addChild(dragObject);
dragObject.y = pos.y;
dragObject.x = pos.x;
}
});
stage.on('up', function (obj) {
var pos = obj.event.getLocalPosition(self);
if (dragObject) {
if (pos.y > 400) {
ressourcesNuts -= 1;
var newNutBomb = new NutBomb();
newNutBomb.x = pos.x + 1000;
newNutBomb.y = pos.y + 300;
self.parent.addChild(newNutBomb);
nutbombs.push(newNutBomb);
dragObject.destroy();
dragObject = null;
} else {
dragObject.destroy();
dragObject = null;
}
}
});
stage.on('move', function (obj) {
if (dragObject) {
var pos = obj.event.getLocalPosition(self);
dragObject.x = pos.x + 1000;
dragObject.y = pos.y + 300;
}
});
});
var draggedObject = null;
var ressourcesNuts = 0;
var Game = Container.expand(function () {
var self = Container.call(this);
var yLevels = [2570, 2070, 1570];
var background = self.createAsset('background', 'Background Graphics', 0, 0);
background.y = -2000;
self.addChildAt(background, 0);
var buildingMenu = self.addChild(new BuildingMenu());
var nutsCounter = new Text2(ressourcesNuts.toString(), {
size: 200,
fill: "#FDA53F"
});
nutsCounter.anchor.set(0.5, 0);
nutsCounter.x = 1700;
nutsCounter.y = 100;
self.addChild(nutsCounter);
var nutGraphic = LK.getAsset('rollingNut', 'Nut Graphic', 0.5, 0.5);
nutGraphic.x = nutsCounter.x + nutsCounter.width + nutGraphic.width;
nutGraphic.y = nutsCounter.y + 100;
nutGraphic.height = 200;
nutGraphic.width = 200;
self.addChild(nutGraphic);
var nutcrackers = [];
var nutbombs = [];
var mousetraps = [];
var mice = [];
var rollingNuts = [];
var fecalBalls = [];
var royalCheeses = [];
var firstNutcracker = new Nutcracker();
firstNutcracker.x = 1024;
firstNutcracker.y = yLevels[1];
firstNutcracker.isReady = true;
nutcrackers.push(firstNutcracker);
self.addChild(firstNutcracker);
var nutcrackerButton = new NutcrackerButton(nutcrackers);
nutcrackerButton.x = 1024 - 100;
nutcrackerButton.y = 300;
self.addChild(nutcrackerButton);
var nutBombButton = new NutBombButton(nutbombs);
nutBombButton.x = 1024 + 100;
nutBombButton.y = 300;
self.addChild(nutBombButton);
var tickCounter = 0;
yLevels.forEach(function (yLevel) {
var newCheese = new RoyalCheese();
newCheese.x = 2000;
newCheese.y = yLevel;
newCheese.currentYLevel = yLevel;
royalCheeses.push(newCheese);
self.addChild(newCheese);
});
var mouseSpawnTimer = 360;
var mouseSpawnTimer2 = 25200;
var mouseTurtleSpawnTimer = 3600;
var mouseJumperSpawnTimer = 3600;
var fecalBallSpawnTimer = 3600;
if (Math.random() > 0.33) {
if (Math.random() > 0.5) {
mouseTurtleSpawnTimer = 14400;
mouseJumperSpawnTimer = 25200;
} else {
mouseTurtleSpawnTimer = 25200;
mouseJumperSpawnTimer = 14400;
}
} else if (Math.random() > 0.5) {
if (Math.random() > 0.5) {
fecalBallSpawnTimer = 14400;
mouseJumperSpawnTimer = 25200;
} else {
fecalBallSpawnTimer = 25200;
mouseJumperSpawnTimer = 14400;
}
} else {
if (Math.random() > 0.5) {
mouseTurtleSpawnTimer = 14400;
fecalBallSpawnTimer = 25200;
} else {
mouseTurtleSpawnTimer = 25200;
fecalBallSpawnTimer = 14400;
}
}
var miceKills = 0;
var miceTickCounter = new Text2(miceKills.toString(), {
size: 200,
fill: "#ccc"
});
miceTickCounter.anchor.set(0.5, 0);
miceTickCounter.x = 380;
miceTickCounter.y = 100;
self.addChild(miceTickCounter);
var mousetailGraphic = LK.getAsset('mouseTail', 'Mouse Tail Graphic', 0.5, 0.5);
mousetailGraphic.x = miceTickCounter.x - miceTickCounter.width - 150;
mousetailGraphic.y = miceTickCounter.y + 100;
mousetailGraphic.width = -250;
mousetailGraphic.height = 250;
self.addChild(mousetailGraphic);
var collisionTick = false;
LK.on('tick', function () {
tickCounter++;
if (tickCounter % 6 === 0) {
collisionTick = true;
} else {
collisionTick = false;
}
nutsCounter.setText(ressourcesNuts.toString());
if (tickCounter % 6600 === 0 || tickCounter % 6900 === 0) {
var newMouse = new Mouse();
newMouse.x = 0 - newMouse.width;
newMouse.y = yLevels[0];
mice.push(newMouse);
self.addChild(newMouse);
var newMouse2 = new Mouse();
newMouse2.x = 0 - newMouse2.width;
newMouse2.y = yLevels[1];
mice.push(newMouse2);
self.addChild(newMouse2);
var newMouse3 = new Mouse();
newMouse3.x = 0 - newMouse3.width;
newMouse3.y = yLevels[2];
mice.push(newMouse3);
self.addChild(newMouse3);
}
if (tickCounter % mouseSpawnTimer == 0) {
var newMouse = new Mouse();
newMouse.x = 0 - newMouse.width;
newMouse.y = yLevels[Math.floor(Math.random() * yLevels.length)];
mice.push(newMouse);
self.addChild(newMouse);
mouseSpawnTimer = Math.max(mouseSpawnTimer - 2, 240);
}
if (tickCounter % mouseSpawnTimer2 == 0) {
var newMouse = new Mouse();
newMouse.x = 0 - newMouse.width;
newMouse.y = yLevels[Math.floor(Math.random() * yLevels.length)];
mice.push(newMouse);
self.addChild(newMouse);
if (mouseSpawnTimer2 > 3600) {
mouseSpawnTimer2 = 900;
}
mouseSpawnTimer2 = Math.max(Math.round(mouseSpawnTimer2 * 0.99, 240));
}
if (tickCounter % fecalBallSpawnTimer * 10 == 0) {
var newFecalBall = new FecalBall();
newFecalBall.x = 0 - newFecalBall.width;
newFecalBall.y = yLevels[Math.floor(Math.random() * yLevels.length)];
fecalBalls.push(newFecalBall);
self.addChild(newFecalBall);
if (fecalBallSpawnTimer > 3600) {
fecalBallSpawnTimer = 3600;
}
fecalBallSpawnTimer = Math.max(Math.round(fecalBallSpawnTimer * 0.9), 300);
}
if (tickCounter % mouseTurtleSpawnTimer * 10 == 0) {
var newMouseTurtle = new TurtleMouse();
newMouseTurtle.x = 0 - newMouseTurtle.width;
newMouseTurtle.y = yLevels[Math.floor(Math.random() * yLevels.length)];
mice.push(newMouseTurtle);
self.addChild(newMouseTurtle);
if (mouseTurtleSpawnTimer > 3600) {
mouseTurtleSpawnTimer = 3600;
}
mouseTurtleSpawnTimer = Math.max(Math.round(mouseTurtleSpawnTimer * 0.9), 300);
}
if (tickCounter % mouseJumperSpawnTimer * 10 == 0) {
var newMouseJumper = new MouseJumper();
newMouseJumper.x = 0 - newMouseJumper.width;
newMouseJumper.y = yLevels[Math.floor(Math.random() * yLevels.length)];
mice.push(newMouseJumper);
self.addChild(newMouseJumper);
if (mouseJumperSpawnTimer > 3600) {
mouseJumperSpawnTimer = 3600;
}
mouseJumperSpawnTimer = Math.max(Math.round(mouseJumperSpawnTimer * 0.9), 300);
}
if (tickCounter % 1200 == 0) {
var newRollingNut = new RollingNut();
newRollingNut.x = 0 - newRollingNut.width;
newRollingNut.y = yLevels[Math.floor(Math.random() * yLevels.length)];
rollingNuts.push(newRollingNut);
self.addChild(newRollingNut);
}
if (collisionTick) {
for (var j = 0; j < nutcrackers.length; j++) {
if (nutcrackers[j].x > 1800) {
nutcrackers[j].x = 1800;
} else if (nutcrackers[j].x < 200) {
nutcrackers[j].x = 200;
}
}
for (var c = 0; c < royalCheeses.length; c++) {
if (royalCheeses[c].x > 2000) {
royalCheeses[c].x = 2000;
}
}
}
for (var i = 0; i < nutcrackers.length; i++) {
nutcrackers[i].move();
}
for (var i = 0; i < nutbombs.length; i++) {
nutbombs[i].move();
if (collisionTick) {
if (nutbombs[i].y + nutbombs[i].height < 0) {
nutbombs[i].destroy();
nutbombs.splice(i, 1);
}
}
}
for (var i = mice.length - 1; i >= 0; i--) {
mice[i].move();
if (collisionTick) {
for (var n = 0; n < nutbombs.length; n++) {
if (mice[i].intersects(nutbombs[n])) {
if (mice[i].royalCheese) {
var cheese = mice[i].removeChild(mice[i].royalCheese);
self.addChild(cheese);
mice[i].royalCheese = null;
cheese.x = mice[i].x;
cheese.y = mice[i].y - 50;
cheese.abducted = false;
cheese.moveToYLevel(cheese.currentYLevel);
}
miceKills++;
miceTickCounter.setText(miceKills.toString());
var mouseTail = new MouseTail(mice[i].x - 50, mice[i].y, mice[i].name, mice[i].consumptionDuration);
self.addChild(mouseTail);
mice[i].destroy();
mice.splice(i, 1);
}
}
for (var j = 0; j < nutcrackers.length; j++) {
if (nutcrackers[j].deadlyFallSpeed && mice[i].intersects(nutcrackers[j])) {
if (mice[i].royalCheese) {
var cheese = mice[i].removeChild(mice[i].royalCheese);
self.addChild(cheese);
mice[i].royalCheese = null;
cheese.x = mice[i].x;
cheese.y = mice[i].y - 50;
cheese.abducted = false;
cheese.moveToYLevel(cheese.currentYLevel);
}
miceKills++;
miceTickCounter.setText(miceKills.toString());
var mouseTail = new MouseTail(mice[i].x - 50, mice[i].y, mice[i].name, mice[i].consumptionDuration);
self.addChild(mouseTail);
mice[i].destroy();
mice.splice(i, 1);
break;
} else if (nutcrackers[j].isReady && nutcrackers[j].freeMouth && !nutcrackers[j].isDragged && mice[i].intersects(nutcrackers[j])) {
if (mice[i].royalCheese) {
var cheese = mice[i].removeChild(mice[i].royalCheese);
self.addChild(cheese);
mice[i].royalCheese = null;
cheese.x = mice[i].x;
cheese.y = mice[i].y - 50;
cheese.abducted = false;
cheese.moveToYLevel(cheese.currentYLevel);
}
nutcrackers[j].freeMouth = false;
nutcrackers[j].mouthTimer = mice[i].consumptionDuration;
miceKills++;
miceTickCounter.setText(miceKills.toString());
var mouseTail = new MouseTail(-40, -120, mice[i].name, mice[i].consumptionDuration);
nutcrackers[j].addChild(mouseTail);
var consumptionTime = mice[i].consumptionDuration;
var tickTail = 0;
var nutCrackerNumber = j;
LK.on('tick', function () {
tickTail++;
mouseTail.animateTick();
if (tickTail === consumptionTime) {
nutcrackers[nutCrackerNumber].removeChild(mouseTail);
self.addChild(mouseTail);
mouseTail.x = nutcrackers[nutCrackerNumber].x - 40;
mouseTail.y = nutcrackers[nutCrackerNumber].y - 120;
}
});
mice[i].destroy();
mice.splice(i, 1);
break;
}
}
for (var c = 0; c < royalCheeses.length; c++) {
if (mice[i] && mice[i].intersects(royalCheeses[c])) {
mice[i].reachedCheese = true;
if (!royalCheeses[c].abducted && !royalCheeses[c].canNotBeStolen && mice[i].royalCheese === null) {
royalCheeses[c].abducted = true;
royalCheeses[c].parent.removeChild(royalCheeses[c]);
mice[i].royalCheese = mice[i].addChild(royalCheeses[c]);
royalCheeses[c].x = 60;
royalCheeses[c].y = -60;
break;
}
}
}
if (mice[i] && mice[i].x > 2048 + mice[i].width) {
mice[i].reachedCheese = true;
} else if (mice[i] && mice[i].reachedCheese && mice[i] && mice[i].x < 0 - 100) {
if (mice[i].royalCheese) {
LK.showGameOver();
break;
}
mice[i].destroy();
mice.splice(i, 1);
}
}
}
for (var i = fecalBalls.length - 1; i >= 0; i--) {
fecalBalls[i].move();
if (collisionTick) {
for (var j = 0; j < nutcrackers.length; j++) {
if (nutcrackers[j].isReady && fecalBalls[i].intersects(nutcrackers[j])) {
var mousePosX = fecalBalls[i].x - 50;
var mousePosY = fecalBalls[i].y;
animateObjectPushedBack(nutcrackers[j], 250 + Math.random() * 100, 1800);
var newMouse = new Mouse();
newMouse.x = mousePosX;
newMouse.y = mousePosY;
mice.push(newMouse);
self.addChild(newMouse);
fecalBalls[i].destroy();
fecalBalls.splice(i, 1);
break;
}
}
for (var c = 0; c < royalCheeses.length; c++) {
if (fecalBalls[i] && fecalBalls[i].intersects(royalCheeses[c])) {
if (!royalCheeses[c].abducted) {
animateObjectPushedBack(royalCheeses[c], 250 + Math.random() * 100, 2000);
}
var mousePosX = fecalBalls[i].x - 50;
var mousePosY = fecalBalls[i].y;
var newMouse = new Mouse();
mice.push(newMouse);
newMouse.x = mousePosX;
newMouse.y = mousePosY;
self.addChild(newMouse);
fecalBalls[i].destroy();
fecalBalls.splice(i, 1);
break;
}
}
if (fecalBalls[i] && fecalBalls[i].x > 2048 + fecalBalls[i].width) {
fecalBalls[i].destroy();
fecalBalls.splice(i, 1);
}
}
}
for (var i = rollingNuts.length - 1; i >= 0; i--) {
rollingNuts[i].move();
if (collisionTick) {
for (var c = 0; c < royalCheeses.length; c++) {
if (!royalCheeses[c].abducted && rollingNuts[i].intersects(royalCheeses[c])) {
animateObjectPushedBack(royalCheeses[c], 100, 2000);
}
}
for (var j = 0; j < nutcrackers.length; j++) {
if (nutcrackers[j].isReady && nutcrackers[j].freeMouth && !nutcrackers[j].isDragged && rollingNuts[i].intersects(nutcrackers[j])) {
rollingNuts[i].destroy();
rollingNuts.splice(i, 1);
nutcrackers[j].freeMouth = false;
nutcrackers[j].mouthTimer = 300;
nutcrackers[j].resourceIncrementTimer = 300;
break;
}
}
if (rollingNuts[i] && rollingNuts[i].x > 2048 + rollingNuts[i].width) {
rollingNuts[i].destroy();
rollingNuts.splice(i, 1);
}
}
}
});
function animateObjectPushedBack(object, distance, maxDistance) {
var animationStep = distance / 30;
var targetX = Math.min(maxDistance, object.x + distance);
object.isReady = false;
object.isDraggable = false;
var animationTick;
var animationInterval = LK.setInterval(function () {
animationTick++;
if (object.x < targetX) {
object.x += animationStep;
} else {
object.x = targetX;
object.isReady = true;
object.isDraggable = true;
LK.clearInterval(animationInterval);
}
}, 1000 / 60);
}
stage.on('up', function (obj) {
if (draggedObject) {
var pos = obj.event.getLocalPosition(self);
draggedObject.isDragged = false;
draggedObject.isReady = false;
draggedObject = null;
}
});
stage.on('move', function (obj) {
if (draggedObject) {
var pos = obj.event.getLocalPosition(self);
draggedObject.x = pos.x;
draggedObject.y = pos.y;
}
});
});
===================================================================
--- original.js
+++ change.js
@@ -45,22 +45,22 @@
var self = Container.call(this);
self.freeMouth = true;
self.upperJaw = self.createAsset('upperJaw', 'Nutcracker Upper Jaw', .5, .5);
self.lowerJaw = self.createAsset('lowerJaw', 'Nutcracker Lower Jaw', .5, .5);
- self.upperJaw.y -= 100;
+ self.upperJaw.y -= 140;
self.mouthUp = true;
self.chewAnimation = function () {
if (!self.freeMouth) {
- var chewRange = 150;
+ var chewRange = 180;
var chewSpeed = 3;
if (self.mouthUp) {
if (self.upperJaw.y > -chewRange) {
self.upperJaw.y -= chewSpeed;
} else {
self.mouthUp = false;
}
} else {
- if (self.upperJaw.y < -100) {
+ if (self.upperJaw.y < -140) {
self.upperJaw.y += chewSpeed;
} else {
self.mouthUp = true;
}
@@ -76,9 +76,9 @@
self.mouthTimer--;
self.chewAnimation();
if (self.mouthTimer === 0) {
self.freeMouth = true;
- self.upperJaw.y = -100;
+ self.upperJaw.y = -140;
}
}
if (self.resourceIncrementTimer && self.resourceIncrementTimer > 0) {
self.resourceIncrementTimer--;
@@ -125,9 +125,9 @@
self.y = pos.y;
self.x = pos.x;
self.isDragged = true;
self.isReady = false;
- self.alpha = 0.75;
+ self.alpha = 0.5;
draggedObject = self;
self.fallCounter = 0;
self.deadlyFallSpeed = false;
}
@@ -321,8 +321,9 @@
self.on('down', function (obj) {
if (ressourcesNuts >= 3 + nutcrackers.length) {
var pos = obj.event.getLocalPosition(self.parent);
dragObject = new Nutcracker();
+ dragObject.alpha = 0.5;
self.parent.addChild(dragObject);
dragObject.y = pos.y;
dragObject.x = pos.x;
}
@@ -370,8 +371,9 @@
self.on('down', function (obj) {
if (ressourcesNuts >= 1) {
var pos = obj.event.getLocalPosition(self.parent);
dragObject = new NutBomb();
+ dragObject.alpha = 0.5;
self.parent.addChild(dragObject);
dragObject.y = pos.y;
dragObject.x = pos.x;
}
@@ -664,12 +666,22 @@
nutcrackers[j].freeMouth = false;
nutcrackers[j].mouthTimer = mice[i].consumptionDuration;
miceKills++;
miceTickCounter.setText(miceKills.toString());
- var mouseTail = new MouseTail(nutcrackers[j].x - 40, nutcrackers[j].y - 100, mice[i].name, mice[i].consumptionDuration);
- self.addChild(mouseTail);
+ var mouseTail = new MouseTail(-40, -120, mice[i].name, mice[i].consumptionDuration);
+ nutcrackers[j].addChild(mouseTail);
+ var consumptionTime = mice[i].consumptionDuration;
+ var tickTail = 0;
+ var nutCrackerNumber = j;
LK.on('tick', function () {
+ tickTail++;
mouseTail.animateTick();
+ if (tickTail === consumptionTime) {
+ nutcrackers[nutCrackerNumber].removeChild(mouseTail);
+ self.addChild(mouseTail);
+ mouseTail.x = nutcrackers[nutCrackerNumber].x - 40;
+ mouseTail.y = nutcrackers[nutCrackerNumber].y - 120;
+ }
});
mice[i].destroy();
mice.splice(i, 1);
break;
Nut cracker, side view Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Mouse trap, side view, cartoon Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a rolling nut, cartoon Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a round giant snowball, cartoon Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
white background