From f36bf2ebb20ade5cce4b12ec51720c21a1560b6b Mon Sep 17 00:00:00 2001 From: landgreen Date: Wed, 18 Sep 2019 06:03:13 -0700 Subject: [PATCH] nano scale Manufacturing balance --- js/bullets.js | 2 +- js/level.js | 3 ++- js/player.js | 34 +++++++++++++++++++++++++++++++--- js/spawn.js | 1 - 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/js/bullets.js b/js/bullets.js index e1a9ea2..a688e2a 100644 --- a/js/bullets.js +++ b/js/bullets.js @@ -207,7 +207,7 @@ const b = { knock = Matter.Vector.mult(Matter.Vector.normalise(sub), (-Math.sqrt(dmg * damageScale) * mob[i].mass) / 18); mob[i].force.x += knock.x; mob[i].force.y += knock.y; - damageScale *= 0.7 //reduced damage for each additional explosion target + damageScale *= 0.8 //reduced damage for each additional explosion target } else if (!mob[i].seePlayer.recall && dist < alertRange) { mob[i].locatePlayer(); knock = Matter.Vector.mult(Matter.Vector.normalise(sub), (-Math.sqrt(dmg * damageScale) * mob[i].mass) / 35); diff --git a/js/level.js b/js/level.js index 75fae2c..01da17a 100644 --- a/js/level.js +++ b/js/level.js @@ -12,9 +12,10 @@ const level = { start() { // game.zoomScale = 1400 //1400 if (game.levelsCleared === 0) { + document.title = "n-gon"; this.intro(); //starting level // b.giveGuns(0) // set a starting gun for testing - // mech.fieldUpgrades[2]() //give a field power up for testing + mech.fieldUpgrades[5]() //give a field power up for testing // game.levelsCleared = 3; //for testing to simulate possible mobs spawns // this.bosses(); // this.testingMap(); diff --git a/js/player.js b/js/player.js index 02d8aa8..c6c787a 100644 --- a/js/player.js +++ b/js/player.js @@ -708,7 +708,7 @@ const mech = { // push all mobs in range for (let i = 0, len = mob.length; i < len; ++i) { if (this.lookingAt(mob[i]) && Matter.Vector.magnitude(Matter.Vector.sub(mob[i].position, this.pos)) < this.grabRange && Matter.Query.ray(map, mob[i].position, this.pos).length === 0) { - const fieldBlockCost = Math.max(0.02, mob[i].mass * 0.02) + const fieldBlockCost = Math.max(0.02, mob[i].mass * 0.015) if (this.fieldMeter > fieldBlockCost) { this.fieldMeter -= fieldBlockCost; if (this.fieldDamage) mob[i].damage(b.dmgScale * this.fieldDamage); @@ -870,7 +870,7 @@ const mech = { }, () => { mech.fieldMode = 2; - game.makeTextLog("Kinetic Energy Field
(left mouse or space bar)

field emitter does damage on contact
blocks are thrown at a higher velocity

", 1000); + game.makeTextLog("Kinetic Energy Field
(left mouse or space bar)

field emitter does damage on contact
blocks are thrown at a higher velocity

", 1000); mech.setHoldDefaults(); //throw quicker and harder mech.throwChargeRate = 3; //0.5 @@ -920,7 +920,7 @@ const mech = { }, () => { mech.fieldMode = 3; - game.makeTextLog("Negative Mass Field
(left mouse or space bar)

field emitter nullifies gravity around player
field emitter can hold more massive objects

", 1000); + game.makeTextLog("Negative Mass Field
(left mouse or space bar)

field emitter nullifies gravity around player
field emitter holds more massive objects

", 1000); mech.setHoldDefaults(); mech.holdingMassScale = 0.05; //can hold heavier blocks mech.fieldArc = 1; //field covers full 360 degrees @@ -1007,6 +1007,34 @@ const mech = { mech.drawFieldMeter() } }, + () => { + mech.fieldMode = 5; + game.makeTextLog("Nano-Scale Manufacturing
(passive effect)

when energy is full, build a drone using 10 energy
reduced energy regeneration

", 1000); + mech.setHoldDefaults(); + mech.fieldRegen = 0.0005 //0.0015; + mech.hold = function () { + if (mech.fieldMeter === 1) { + mech.fieldMeter -= 0.1; + b.guns[12].fire() //spawn drone + } + + if (mech.isHolding) { + mech.drawHold(mech.holdingTarget); + mech.holding(); + mech.throw(); + } else if ((keys[32] || game.mouseDownRight && mech.fieldMeter > 0.1)) { //not hold but field button is pressed + mech.drawField(); + mech.grabPowerUp(); + mech.pushMobs(); + mech.lookForPickUp(); + } else if (mech.holdingTarget && mech.fireCDcycle < game.cycle) { //holding, but field button is released + mech.pickUp(); + } else { + mech.holdingTarget = null; //clears holding target (this is so you only pick up right after the field button is released and a hold target exists) + } + mech.drawFieldMeter() + } + }, // () => { // mech.fieldMode = 1; // game.makeTextLog("

Time Dilation Field


active ability: hold left and right mouse to slow time
passive bonus: +field regeneration", 1000); //
passive bonus: can phase through blocks diff --git a/js/spawn.js b/js/spawn.js index efb90bf..1e6669e 100644 --- a/js/spawn.js +++ b/js/spawn.js @@ -858,7 +858,6 @@ const spawn = { let me = mob[mob.length - 1]; me.stroke = "transparent"; me.onHit = function () { - console.log(this.mass) this.explode(); }; Matter.Body.setDensity(me, 0.001); //normal is 0.001