diff --git a/js/engine.js b/js/engine.js
index 5a8f544..c60ec97 100644
--- a/js/engine.js
+++ b/js/engine.js
@@ -162,8 +162,7 @@ function collisionChecks(event) {
const maxCount = 10 + 3 * tech.extraHarpoons //scale the number of hooks fired
let count = maxCount - 1
const angle = Math.atan2(mob[k].position.y - player.position.y, mob[k].position.x - player.position.x);
-
- const mass = 0.75 * (tech.isLargeHarpoon ? 1 + 0.05 * Math.sqrt(this.ammo) : 1)
+ const mass = 0.75 * ((tech.isLargeHarpoon) ? 1 + Math.min(0.05 * Math.sqrt(b.guns[9].ammo), 10) : 1)
b.harpoon(m.pos, mob[k], angle, mass, true, 7) // harpoon(where, target, angle = m.angle, harpoonSize = 1, isReturn = false, totalCycles = 35, isReturnAmmo = true, thrust = 0.1) {
bullet[bullet.length - 1].drain = 0
for (; count > 0; count--) {
@@ -222,9 +221,9 @@ function collisionChecks(event) {
return;
}
//mob + body collisions
- if (obj.classType === "body" && obj.speed > 6) {
+ if (obj.classType === "body" && obj.speed > 9) {
const v = Vector.magnitude(Vector.sub(mob[k].velocity, obj.velocity));
- if (v > 9) {
+ if (v > 11) {
if (tech.blockDmg) { //electricity
Matter.Body.setVelocity(mob[k], { x: 0.5 * mob[k].velocity.x, y: 0.5 * mob[k].velocity.y });
if (tech.isBlockRadiation && !mob[k].isShielded && !mob[k].isMobBullet) {
diff --git a/js/index.js b/js/index.js
index ad9d3fd..b5d8f87 100644
--- a/js/index.js
+++ b/js/index.js
@@ -324,6 +324,11 @@ function setupCanvas() {
ctx.lineJoin = "round";
ctx.lineCap = "round";
simulation.setZoom();
+
+ if (simulation.isInvertedVertical) {
+ ctx.translate(0, canvas.height); // Move the origin down to the bottom
+ ctx.scale(1, -1); // Flip vertically
+ }
}
setupCanvas();
window.onresize = () => {
@@ -519,16 +524,17 @@ ${simulation.isCheating ? "
lore disabled" : ""}
difficulty parameters
+1 boss on each level
faster mobs per level
+1 random constraint on each level
bosses spawn 1 fewer ${powerUps.orb.tech()}
+1 random constraint on each level
1.25x damage taken per level
mobs move faster
bosses spawn 0.5x power ups
1.25x damage taken per level
fewer initial power ups
2x initial damage taken
fewer ${powerUps.orb.tech()} spawnactive constraints
${level.constraintDescription2}active constraints
${level.constraintDescription2}
//console commands
+ powerUps.instructions.effect() //reproduce this message
+ tech.giveTech("name") //replace "name" with tech name
+ m.setField("name") //standing wave perfect diamagnetism negative mass molecular assembler plasma torch time dilation metamaterial cloaking pilot wave wormhole grappling hook
+ b.giveGuns("name") //nail gun shotgun super balls wave missiles grenades spores drones foam harpoon mine laser
+ tech.damage *= 2 //2x damage
+ m.immuneCycle = Infinity //immune to damage
+ m.energy = 0 //set energy
+ m.health = 1 //set health
+ m.maxHealth = 1 //set max health
+ m.energy = 1 //set energy
+ m.maxEnergy = 1 //set max energy
+ simulation.enableConstructMode() //press T to build with mouse
+ ${lore}
+
+ //tech gun field heal ammo research coupling boost instructions entanglement
+ powerUps.spawn(m.pos.x, m.pos.y, "name")
+ Matter.Body.setPosition(player, simulation.mouseInGame);
+ spawn.bodyRect(simulation.mouseInGame.x, simulation.mouseInGame.y, 50, 50)
+ spawn.randomLevelBoss(simulation.mouseInGame.x, simulation.mouseInGame.y)
+
+ chrome firefox
+ Win/Linux: Ctrl + Shift + J Ctrl + Shift + J
+ Mac: Cmd + Option + J Cmd + Shift + J