diff --git a/js/bullet.js b/js/bullet.js
index 88383c7..386f4bb 100644
--- a/js/bullet.js
+++ b/js/bullet.js
@@ -972,13 +972,15 @@ const b = {
},
nail(pos, velocity, dmg = 0) {
const me = bullet.length;
- bullet[me] = Bodies.rectangle(pos.x, pos.y, 25, 2, b.fireAttributes(Math.atan2(velocity.y, velocity.x)));
+ // bullet[me] = Bodies.rectangle(pos.x, pos.y, 25, 2, b.fireAttributes(Math.atan2(velocity.y, velocity.x)));
+ bullet[me] = Bodies.rectangle(pos.x, pos.y, 25 * mod.biggerNails, 2 * mod.biggerNails, b.fireAttributes(Math.atan2(velocity.y, velocity.x)));
+
Matter.Body.setVelocity(bullet[me], velocity);
World.add(engine.world, bullet[me]); //add bullet to world
bullet[me].endCycle = game.cycle + 60 + 18 * Math.random();
bullet[me].dmg = dmg
bullet[me].onDmg = function (who) {
- if (mod.isNailPoison) mobs.statusDoT(who, dmg * 0.15, 180) // one tick every 30 cycles
+ if (mod.isNailPoison) mobs.statusDoT(who, dmg * 0.22, 120) // one tick every 30 cycles
};
bullet[me].do = function () {};
},
@@ -1550,7 +1552,7 @@ const b = {
CD = 2
} else {
if (this.nextFireCycle + 1 < mech.cycle) this.startingHoldCycle = mech.cycle //reset if not constantly firing
- CD = Math.max(5 - 0.06 * (mech.cycle - this.startingHoldCycle), 2) //CD scales with cycles fire is held down
+ CD = Math.max(7.5 - 0.06 * (mech.cycle - this.startingHoldCycle), 2) //CD scales with cycles fire is held down
this.nextFireCycle = mech.cycle + CD * b.fireCD //predict next fire cycle if the fire button is held down
}
} else {
@@ -1560,19 +1562,21 @@ const b = {
}
mech.fireCDcycle = mech.cycle + Math.floor(CD * b.fireCD); // cool down
- const speed = 28 + 8 * Math.random() + 6 * mod.nailInstantFireRate
+ const speed = 28 + 7 * Math.random() + 9 * mod.nailInstantFireRate
const angle = mech.angle + (Math.random() - 0.5) * (Math.random() - 0.5) * (mech.crouch ? 1.35 : 3.2) / CD
+ const dmg = 0.9
b.nail({
- x: mech.pos.x + 23 * Math.cos(mech.angle),
- y: mech.pos.y + 23 * Math.sin(mech.angle)
+ x: mech.pos.x + 30 * Math.cos(mech.angle),
+ y: mech.pos.y + 30 * Math.sin(mech.angle)
}, {
x: mech.Vx / 2 + speed * Math.cos(angle),
y: mech.Vy / 2 + speed * Math.sin(angle)
- }, 0.9) //position, velocity, damage
+ }, dmg) //position, velocity, damage
if (mod.isIceCrystals) {
bullet[bullet.length - 1].onDmg = function (who) {
mobs.statusSlow(who, 30)
+ if (mod.isNailPoison) mobs.statusDoT(who, dmg * 0.22, 120) // one tick every 30 cycles
};
mech.energy -= mech.fieldRegen + 0.008
if (mech.energy < 0.02) mech.fireCDcycle = mech.cycle + 60; // cool down
@@ -1736,7 +1740,7 @@ const b = {
},
{
name: "flechettes",
- description: "fire a volley of uranium-235 needles
does damage over 3 seconds",
+ description: "fire a volley of uranium-235 needles
does radioactive damage over 3 seconds",
ammo: 0,
ammoPack: 45,
defaultAmmoPack: 45,
diff --git a/js/level.js b/js/level.js
index bdfaeb8..171a976 100644
--- a/js/level.js
+++ b/js/level.js
@@ -1869,7 +1869,7 @@ const level = {
// spawn.mapRect(-1950, -400, 100, 25);
spawn.mapRect(-3150, 50, 775, 100);
spawn.mapRect(-2600, -250, 775, 100);
- spawn.bodyRect(-1350, -100, 100, 100, 1, spawn.propsSlide); //weight
+ spawn.bodyRect(-1450, -125, 125, 125, 1, spawn.propsSlide); //weight
spawn.bodyRect(-1800, 0, 300, 100, 1, spawn.propsHoist); //hoist
cons[cons.length] = Constraint.create({
pointA: {
@@ -1881,7 +1881,7 @@ const level = {
length: 1
});
- spawn.bodyRect(400, 500, 100, 100, 1, spawn.propsSlide); //weight
+ spawn.bodyRect(600, 525, 125, 125, 1, spawn.propsSlide); //weight
spawn.bodyRect(800, 600, 300, 100, 1, spawn.propsHoist); //hoist
cons[cons.length] = Constraint.create({
pointA: {
@@ -2496,7 +2496,7 @@ const level = {
spawn.mapRect(-400, -2000, 3700, 250); //Ground
spawn.mapRect(2475, -1150, 1225, 250);
spawn.mapRect(500, -1150, 1175, 250); //Ground level 3
- spawn.mapRect(350, -180, 4450, 1255); // Last ground
+ spawn.mapRect(350, -180, 4600, 1255); // Last ground
spawn.mapRect(-400, -458, 750, 3337); //mur left sous-sol
spawn.mapRect(-2850, -3375, 5300, 1375);
spawn.mapRect(-2850, -4200, 8000, 825);
@@ -3171,9 +3171,9 @@ const level = {
game.difficulty++
game.dmgScale += 0.3; //damage done by mobs increases each level
b.dmgScale *= 0.93; //damage done by player decreases each level
- game.accelScale *= 1.027 //mob acceleration increases each level
- game.lookFreqScale *= 0.975 //mob cycles between looks decreases each level
- game.CDScale *= 0.966 //mob CD time decreases each level
+ if (game.accelScale < 5) game.accelScale *= 1.027 //mob acceleration increases each level
+ if (game.lookFreqScale > 0.2) game.lookFreqScale *= 0.975 //mob cycles between looks decreases each level
+ if (game.CDScale > 0.2) game.CDScale *= 0.966 //mob CD time decreases each level
}
game.healScale = 1 / (1 + game.difficulty * 0.07) //a higher denominator makes for lower heals // mech.health += heal * game.healScale;
},
@@ -3183,9 +3183,9 @@ const level = {
game.dmgScale -= 0.3; //damage done by mobs increases each level
if (game.dmgScale < 0.1) game.dmgScale = 0.1;
b.dmgScale /= 0.93; //damage done by player decreases each level
- game.accelScale /= 1.027 //mob acceleration increases each level
- game.lookFreqScale /= 0.975 //mob cycles between looks decreases each level
- game.CDScale /= 0.966 //mob CD time decreases each level
+ if (game.accelScale > 0.2) game.accelScale /= 1.027 //mob acceleration increases each level
+ if (game.lookFreqScale < 5) game.lookFreqScale /= 0.975 //mob cycles between looks decreases each level
+ if (game.CDScale < 5) game.CDScale /= 0.966 //mob CD time decreases each level
}
if (game.difficulty < 1) game.difficulty = 0;
game.healScale = 1 / (1 + game.difficulty * 0.07)
@@ -3215,6 +3215,8 @@ const level = {
if (level.onLevel > level.levels.length - 1) level.onLevel = 0;
level.difficultyIncrease(game.difficultyMode) //increase difficulty based on modes
if (level.levelsCleared > level.levels.length) level.difficultyIncrease(game.difficultyMode)
+ if (level.levelsCleared > level.levels.length * 1.5) level.difficultyIncrease(game.difficultyMode)
+ if (level.levelsCleared > level.levels.length * 2) level.difficultyIncrease(game.difficultyMode)
if (game.isEasyMode && level.levelsCleared % 2) level.difficultyDecrease(1);
game.clearNow = true; //triggers in game.clearMap to remove all physics bodies and setup for new map
},
diff --git a/js/mods.js b/js/mods.js
index 68b2f48..a4af04c 100644
--- a/js/mods.js
+++ b/js/mods.js
@@ -1372,7 +1372,7 @@ const mod = {
},
{
name: "pneumatic actuator",
- description: "nail gun takes 50% less time to ramp up
to it's shortest delay after firing",
+ description: "nail gun takes 45% less time to ramp up
to it's shortest delay after firing",
maxCount: 1,
count: 0,
allowed() {
@@ -1388,7 +1388,7 @@ const mod = {
},
{
name: "powder-actuated",
- description: "nail gun takes no time to ramp up
nails have a 20% faster muzzle speed",
+ description: "nail gun takes no time to ramp up
nails have a 30% faster muzzle speed",
maxCount: 1,
count: 0,
allowed() {
@@ -1529,7 +1529,7 @@ const mod = {
},
{
name: "super sized",
- description: `your super balls are 22% larger
increased mass and physical damage`,
+ description: `your super balls are 22% larger
increases mass and physical damage`,
count: 0,
maxCount: 9,
allowed() {
@@ -1855,11 +1855,11 @@ const mod = {
},
{
name: "irradiated nails",
- description: "nails are made with a cobalt-60 alloy
66% extra damage over 6 seconds",
+ description: "nails are made with a cobalt-60 alloy
85% radioactive damage over 2 seconds",
maxCount: 1,
count: 0,
allowed() {
- return mod.nailBotCount + mod.grenadeFragments + mod.nailsDeathMob / 2 + (mod.haveGunCheck("mine") + mod.isRailNails + mod.isNailShot + (mod.haveGunCheck("nail gun") && !mod.isIceCrystals)) * 2 > 1
+ return mod.nailBotCount + mod.grenadeFragments + mod.nailsDeathMob / 2 + (mod.haveGunCheck("mine") + mod.isRailNails + mod.isNailShot + mod.haveGunCheck("nail gun")) * 2 > 1
},
requires: "nails",
effect() {
@@ -1869,6 +1869,22 @@ const mod = {
mod.isNailPoison = false;
}
},
+ {
+ name: "railroad ties",
+ description: "nails are 80% larger
increases physical damage by about 25%",
+ maxCount: 1,
+ count: 0,
+ allowed() {
+ return mod.nailBotCount + mod.grenadeFragments + mod.nailsDeathMob / 2 + (mod.haveGunCheck("mine") + mod.isRailNails + mod.isNailShot + mod.haveGunCheck("nail gun")) * 2 > 1
+ },
+ requires: "nails",
+ effect() {
+ mod.biggerNails += 0.8
+ },
+ remove() {
+ mod.biggerNails = 1
+ }
+ },
{
name: "mycelial fragmentation",
description: "sporangium release an extra spore
once a second during their growth phase",
diff --git a/js/player.js b/js/player.js
index fcad15c..da53a28 100644
--- a/js/player.js
+++ b/js/player.js
@@ -303,7 +303,7 @@ const mech = {
}
if (mod.isDeterminism) totalMods -= 3 //remove the bonus mods
if (mod.isSuperDeterminism) totalMods -= 2 //remove the bonus mods
-
+ totalMods = totalMods * 1.15 + 1 // a few extra to make it stronger
const totalGuns = b.inventory.length //count guns
function randomizeMods() {
diff --git a/todo.txt b/todo.txt
index 3562af9..e7890e3 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,16 +1,11 @@
-zoom now only works in testing mode with keys: i / o
-
-minigun is now nailgun (higher damage, lower ammo)
-mod: pneumatic actuator - nail gun's ramp up time is 50% shorter
-mod: powder-actuated - removes ramp up time and increases nail speed
-
-removed mod depleted uranium
-mod: super size - larger super balls
+mod: rail road ties - nails are 40% bigger
************** TODO - n-gon **************
-mod: railroad ties - nails are larger and do more damage
+map element - player rotates a rotor that makes a platform go up or down
+
+reduce damage by 80%, but lose ammo when you get hit
foam needs a new mod
is the foam mod colloidal foam fun?
@@ -28,7 +23,8 @@ getting stuck above a mob can immobilize player
use mac automator to speed up your n-gon -> git sync
considering removing the perfect diamagnetism field from the game
-perfect diamagnetism be able to grab and launch mobs
+ or just rework perfect diamagnetism
+ perfect diamagnetism be able to grab and launch mobs
Gun: Launch yourself at high speed to the enemy, gaining temporary invincibility while in the air and for 3 seconds after landing. Upon impact, trigger a large explosion.