From a0db3ffa129240cf4772c64ba2474ffc44de2f94 Mon Sep 17 00:00:00 2001 From: landgreen Date: Sun, 30 Aug 2020 13:15:34 -0700 Subject: [PATCH] nail balance, difficulty ramp scaling mod: rail road ties - nails are 40% bigger --- js/bullet.js | 20 ++++++++++++-------- js/level.js | 20 +++++++++++--------- js/mods.js | 26 +++++++++++++++++++++----- js/player.js | 2 +- todo.txt | 16 ++++++---------- 5 files changed, 51 insertions(+), 33 deletions(-) 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.