nail balance, difficulty ramp scaling
mod: rail road ties - nails are 40% bigger
This commit is contained in:
20
js/bullet.js
20
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 <strong class='color-p'>uranium-235</strong> <strong>needles</strong><br>does <strong class='color-d'>damage</strong> over <strong>3</strong> seconds",
|
||||
description: "fire a volley of <strong class='color-p'>uranium-235</strong> <strong>needles</strong><br>does <strong class='color-p'>radioactive</strong> <strong class='color-d'>damage</strong> over <strong>3</strong> seconds",
|
||||
ammo: 0,
|
||||
ammoPack: 45,
|
||||
defaultAmmoPack: 45,
|
||||
|
||||
20
js/level.js
20
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
|
||||
},
|
||||
|
||||
26
js/mods.js
26
js/mods.js
@@ -1372,7 +1372,7 @@ const mod = {
|
||||
},
|
||||
{
|
||||
name: "pneumatic actuator",
|
||||
description: "<strong>nail gun</strong> takes <strong>50%</strong> less time to ramp up<br>to it's shortest <strong>delay</strong> after firing",
|
||||
description: "<strong>nail gun</strong> takes <strong>45%</strong> less time to ramp up<br>to it's shortest <strong>delay</strong> after firing",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
allowed() {
|
||||
@@ -1388,7 +1388,7 @@ const mod = {
|
||||
},
|
||||
{
|
||||
name: "powder-actuated",
|
||||
description: "<strong>nail gun</strong> takes <strong>no</strong> time to ramp up<br>nails have a <strong>20%</strong> faster muzzle <strong>speed</strong>",
|
||||
description: "<strong>nail gun</strong> takes <strong>no</strong> time to ramp up<br>nails have a <strong>30%</strong> faster muzzle <strong>speed</strong>",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
allowed() {
|
||||
@@ -1529,7 +1529,7 @@ const mod = {
|
||||
},
|
||||
{
|
||||
name: "super sized",
|
||||
description: `your <strong>super balls</strong> are <strong>22%</strong> larger<br>increased mass and physical <strong class='color-d'>damage</strong>`,
|
||||
description: `your <strong>super balls</strong> are <strong>22%</strong> larger<br>increases mass and physical <strong class='color-d'>damage</strong>`,
|
||||
count: 0,
|
||||
maxCount: 9,
|
||||
allowed() {
|
||||
@@ -1855,11 +1855,11 @@ const mod = {
|
||||
},
|
||||
{
|
||||
name: "irradiated nails",
|
||||
description: "<strong>nails</strong> are made with a <strong class='color-p'>cobalt-60</strong> alloy<br><strong>66%</strong> extra <strong class='color-d'>damage</strong> over <strong>6</strong> seconds",
|
||||
description: "<strong>nails</strong> are made with a <strong class='color-p'>cobalt-60</strong> alloy<br><strong>85%</strong> <strong class='color-p'>radioactive</strong> <strong class='color-d'>damage</strong> over <strong>2</strong> 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: "<strong>nails</strong> are <strong>80%</strong> <strong>larger</strong><br>increases physical <strong class='color-d'>damage</strong> by about <strong>25%</strong>",
|
||||
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: "<strong class='color-p' style='letter-spacing: 2px;'>sporangium</strong> release an extra <strong class='color-p' style='letter-spacing: 2px;'>spore</strong><br> once a <strong>second</strong> during their <strong>growth</strong> phase",
|
||||
|
||||
@@ -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() {
|
||||
|
||||
14
todo.txt
14
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,6 +23,7 @@ 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
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user