diff --git a/js/bullet.js b/js/bullet.js
index df5f824..70eb8b0 100644
--- a/js/bullet.js
+++ b/js/bullet.js
@@ -1965,8 +1965,8 @@ const b = {
name: "flak",
description: "fire a cluster of short range projectiles
explodes on contact or after half a second",
ammo: 0,
- ammoPack: 8,
- defaultAmmoPack: 8, //use to revert ammoPack after mod changes drop rate
+ ammoPack: 9,
+ defaultAmmoPack: 9, //use to revert ammoPack after mod changes drop rate
have: false,
isEasyToAim: false,
fire() {
diff --git a/js/game.js b/js/game.js
index 606c389..c2725da 100644
--- a/js/game.js
+++ b/js/game.js
@@ -675,6 +675,8 @@ const game = {
consBB = [];
removeAll(bullet);
bullet = [];
+ removeAll(composite);
+ composite = [];
// if player was holding something this makes a new copy to hold
if (holdTarget) {
len = body.length;
diff --git a/js/level.js b/js/level.js
index ed3744f..0ea1d44 100644
--- a/js/level.js
+++ b/js/level.js
@@ -2,6 +2,7 @@ let body = []; //non static bodies
let map = []; //all static bodies
let cons = []; //all constraints between a point and a body
let consBB = []; //all constraints between two bodies
+let composite = [] //rotors and other map elements that don't fit
const level = {
defaultZoom: 1400,
onLevel: 0,
@@ -78,7 +79,7 @@ const level = {
density: density,
isNotSticky: true
});
- const rotor = Body.create({ //combine rotor1 and rotor2
+ rotor = Body.create({ //combine rotor1 and rotor2
parts: [rotor1, rotor2],
restitution: 0,
collisionFilter: {
@@ -123,7 +124,7 @@ const level = {
}
}
}
-
+ composite[composite.length] = rotor
return rotor
},
button(x, y, width = 70, height = 20) {
@@ -299,22 +300,22 @@ const level = {
spawn.mapRect(9300, 2590, 650, 25);
spawn.mapRect(9700, 2580, 100, 50);
- spawn.randomBoss(1300, 2100, 0.7);
- spawn.randomMob(8300, 2225, 0.5);
- spawn.randomSmallMob(2575, -75, 0.5); //entrance
- spawn.randomMob(8125, 2450, 0.5);
- spawn.randomSmallMob(3200, 250, 0.5);
- spawn.randomMob(2425, 2150, 0.5);
- spawn.randomSmallMob(3825, 300, 0.5);
+ spawn.randomBoss(1300, 2100, 0.6);
+ spawn.randomMob(8300, 2100, 0.3);
+ spawn.randomSmallMob(2575, -75, 0.3); //entrance
+ spawn.randomMob(8125, 2450, 0.3);
+ spawn.randomSmallMob(3200, 250, 0.4);
+ spawn.randomMob(2425, 2150, 0.4);
+ spawn.randomSmallMob(3825, 300, 0.4);
spawn.randomMob(3800, 2175, 0.5);
spawn.randomSmallMob(1100, -300, 0.5); //entrance
- spawn.randomMob(4450, 2500, 0.5);
- spawn.randomMob(6350, 2525, 0.5);
- spawn.randomSmallMob(1900, -250, 0.5); //entrance
+ spawn.randomMob(4450, 2500, 0.6);
+ spawn.randomMob(6350, 2525, 0.6);
+ spawn.randomBoss(9200, 2400, 0.5);
+ spawn.randomSmallMob(1900, -250, 0.7); //entrance
spawn.randomMob(1500, 2100, 0.8);
- spawn.randomSmallMob(1700, -150, 0.5); //entrance
- spawn.randomMob(8800, 2725, 0.5);
- spawn.randomBoss(8650, 2275, 0.5);
+ spawn.randomSmallMob(1700, -150, 0.8); //entrance
+ spawn.randomMob(8800, 2725, 0.9);
if (game.difficulty > 3) spawn.randomLevelBoss(6000, 2300, ["shooterBoss", "spiderBoss", "launcherBoss", "laserTargetingBoss"]);
},
template() {
@@ -2107,7 +2108,7 @@ const level = {
spawn.randomBoss(2350, -850, 1);
spawn.randomBoss(100, -450, 0.9);
- if (game.difficulty > 3) spawn.randomLevelBoss(1850, -1400, 1);
+ if (game.difficulty > 3) spawn.randomLevelBoss(1850, -1400);
},
//******************************************************************************************************************
//******************************************************************************************************************
diff --git a/js/mods.js b/js/mods.js
index 42785e2..ed03a48 100644
--- a/js/mods.js
+++ b/js/mods.js
@@ -78,6 +78,7 @@ const mod = {
if (mod.isRest && player.speed < 1) dmg *= 1.20;
if (mod.isEnergyDamage) dmg *= 1 + mech.energy / 5.5;
if (mod.isDamageFromBulletCount) dmg *= 1 + bullet.length * 0.006
+ if (mod.isRerollDamage) dmg *= 1 + 0.06 * powerUps.reroll.rerolls
return dmg * mod.slowFire
},
mods: [{
@@ -130,6 +131,22 @@ const mod = {
mod.isRest = false;
}
},
+ {
+ name: "perturbation theory",
+ description: "increase damage by 6%
for each reroll in your inventory",
+ maxCount: 1,
+ count: 0,
+ allowed() {
+ return powerUps.reroll.rerolls > 1 || build.isCustomSelection
+ },
+ requires: "at least 2 rerolls",
+ effect() {
+ mod.isRerollDamage = true;
+ },
+ remove() {
+ mod.isRerollDamage = false;
+ }
+ },
{
name: "kinetic bombardment",
description: "increase damage by up to 33%
at a distance of 40 steps from the target",
@@ -1035,7 +1052,6 @@ const mod = {
mod.manyWorlds = false;
}
},
-
{
name: "quantum immortality",
description: "after dying, continue in an alternate reality
spawn 5 rerolls",
@@ -1482,7 +1498,7 @@ const mod = {
requires: "flak",
effect() {
for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
- if (b.guns[i].name === "flak") b.guns[i].ammoPack = b.guns[i].defaultAmmoPack * (3 * this.count);
+ if (b.guns[i].name === "flak") b.guns[i].ammoPack = b.guns[i].defaultAmmoPack * (3 * (1 + this.count));
}
},
remove() {
@@ -2296,5 +2312,6 @@ const mod = {
isHealLowHealth: null,
isAoESlow: null,
isHarmArmor: null,
- isTurret: null
+ isTurret: null,
+ isRerollDamage: null
}
\ No newline at end of file
diff --git a/todo.txt b/todo.txt
index b768760..72948e0 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,12 +1,6 @@
-new level, sewers
-flak ammo buff
-
************** TODO - n-gon **************
-mod: do more damage for each reroll you are holding
- do more damage for the ammo/ammoPack ratio?
-
mod: taking damage slows (or stuns) all mobs on the map
requires the mod that slows time, overclock
@@ -14,7 +8,7 @@ button: blocks that are on the button at an angle will slowly slide off the butt
maybe just avoid long blocks near the button?
maybe actively hold the button in place?
-slime should affect blocks, bullets, mobs
+hazards should affect blocks, bullets, mobs
and do mob damage?
rotor doesn't work with