diff --git a/js/level.js b/js/level.js index 7af29ae..d9ca9be 100644 --- a/js/level.js +++ b/js/level.js @@ -24,7 +24,7 @@ const level = { // game.levelsCleared = 3; //for testing to simulate possible mobs spawns // b.giveGuns(0) // set a starting gun for testing - // mech.fieldUpgrades[4]() //give a field power up for testing + // mech.fieldUpgrades[6]() //give a field power up for testing } else { spawn.setSpawnList(); //picks a couple mobs types for a themed random mob spawns this[this.levels[this.onLevel]](); //picks the current map from the the levels array diff --git a/js/player.js b/js/player.js index 86ebfae..e8ea731 100644 --- a/js/player.js +++ b/js/player.js @@ -852,7 +852,7 @@ const mech = { game.makeTextLog("Inertia Negation Field
(right mouse or space bar)

field slows objects in range
decreased field shielding efficiency

", 1200); //
field does not shield player mech.setHoldDefaults(); - mech.fieldShieldingScale = 7; + mech.fieldShieldingScale = 12; // mech.fieldArc = 1; //field covers full 360 degrees // mech.calculateFieldThreshold(); //run after setting fieldArc, used for powerUp grab and mobPush with lookingAt(mob) @@ -973,7 +973,7 @@ const mech = { game.makeTextLog("Negative Mass Field
(right mouse or space bar)

field nullifies gravity
player can hold more massive objects
decreased field shielding efficiency

", 1200); mech.setHoldDefaults(); mech.holdingMassScale = 0.05; //can hold heavier blocks with lower cost to jumping - mech.fieldShieldingScale = 10; + mech.fieldShieldingScale = 20; // mech.fieldArc = 1; //field covers full 360 degrees // mech.grabRange = 150; // mech.fieldArc = 1 //0.08; @@ -1056,17 +1056,17 @@ const mech = { }, () => { mech.fieldMode = 4; - game.makeTextLog("Zero-Point Energy Field
(right mouse or space bar)

improved energy regeneration
oscillating shields surround player

", 1200); + game.makeTextLog("Standing Wave Harmonics
(right mouse or space bar)

oscillating shields surround player
improved energy regeneration
improved field shielding efficiency

", 1200); mech.setHoldDefaults(); - mech.fieldShieldingScale = 0.7; + mech.fieldShieldingScale = 0.3; mech.fieldRegen = 0.007; //0.0015 - mech.fieldArc = 1; //field covers full 360 degrees + // mech.fieldArc = 1; //field covers full 360 degrees mech.calculateFieldThreshold(); //run after setting fieldArc, used for powerUp grab and mobPush with lookingAt(mob) mech.hold = function () { - grabRange1 = 60 + 60 * Math.sin(game.cycle / 23) - grabRange2 = 70 + 70 * Math.sin(game.cycle / 37) - grabRange3 = 80 + 80 * Math.sin(game.cycle / 47) + grabRange1 = 100 + 95 * Math.sin(game.cycle / 23) + grabRange2 = 105 + 85 * Math.sin(game.cycle / 37) + grabRange3 = 90 + 90 * Math.sin(game.cycle / 47) mech.grabRange = Math.max(grabRange1, grabRange2, grabRange3) if (mech.isHolding) { @@ -1077,27 +1077,16 @@ const mech = { ctx.fillStyle = "rgba(110,170,200," + (0.15 + 0.15 * Math.random()) + ")"; ctx.beginPath(); - ctx.arc(mech.pos.x, mech.pos.y, grabRange1, mech.angle - Math.PI * mech.fieldArc, mech.angle + Math.PI * mech.fieldArc, false); + ctx.arc(mech.pos.x, mech.pos.y, grabRange1, 0, 2 * Math.PI); ctx.fill(); ctx.beginPath(); - ctx.arc(mech.pos.x, mech.pos.y, grabRange2, mech.angle - Math.PI * mech.fieldArc, mech.angle + Math.PI * mech.fieldArc, false); + ctx.arc(mech.pos.x, mech.pos.y, grabRange2, 0, 2 * Math.PI); ctx.fill(); ctx.beginPath(); - ctx.arc(mech.pos.x, mech.pos.y, grabRange3, mech.angle - Math.PI * mech.fieldArc, mech.angle + Math.PI * mech.fieldArc, false); + ctx.arc(mech.pos.x, mech.pos.y, grabRange3, 0, 2 * Math.PI); ctx.fill(); - - // //draw random lines in field for cool effect - // let offAngle = this.angle + 2 * Math.PI * this.fieldArc * (Math.random() - 0.5); - // ctx.beginPath(); - // eye = 15; - // ctx.moveTo(mech.pos.x + eye * Math.cos(this.angle), mech.pos.y + eye * Math.sin(this.angle)); - // ctx.lineTo(this.pos.x + range * Math.cos(offAngle), this.pos.y + range * Math.sin(offAngle)); - // ctx.strokeStyle = "rgba(120,170,255,0.4)"; - // ctx.stroke(); - - mech.grabPowerUp(); - mech.pushMobs360(mech.grabRange + 10); + mech.pushMobs360(mech.grabRange + 25); mech.lookForPickUp(); } else if (mech.holdingTarget && mech.fireCDcycle < game.cycle) { //holding, but field button is released mech.pickUp(); @@ -1109,15 +1098,15 @@ const mech = { }, () => { mech.fieldMode = 5; - game.makeTextLog("Nano-Scale Manufacturing
(passive effect)

excess field energy builds drones
decreased field shielding efficiency

", 1200); + game.makeTextLog("Nano-Scale Manufacturing
(passive effect)

excess field energy used to build drones
decreased field shielding efficiency

", 1200); mech.setHoldDefaults(); - mech.fieldShieldingScale = 10; + mech.fieldShieldingScale = 15; mech.grabRange = 155; mech.fieldArc = 0.1; //0.2 is normal mech.calculateFieldThreshold(); //run after setting fieldArc, used for powerUp grab and mobPush with lookingAt(mob) mech.hold = function () { if (mech.fieldMeter === 1) { - mech.fieldMeter -= 0.21; + mech.fieldMeter -= 0.2; b.guns[12].fire() //spawn drone } if (mech.isHolding) { @@ -1141,8 +1130,8 @@ const mech = { mech.fieldMode = 6; game.makeTextLog("Metamaterial Refractive Optics
(right mouse or space bar)

localized invisibility field
greatly decreased field shielding efficiency

", 1200); mech.setHoldDefaults(); - mech.fieldShieldingScale = 10000; - mech.grabRange = 160; + mech.fieldShieldingScale = 100; + // mech.grabRange = 160; mech.hold = function () { mech.isStealth = false //isStealth is checked in mob foundPlayer() @@ -1152,13 +1141,17 @@ const mech = { mech.holding(); mech.throw(); } else if ((keys[32] || game.mouseDownRight) && mech.fieldCDcycle < game.cycle) { - const DRAIN = 0.0004 //mech.fieldRegen = 0.0015 + const DRAIN = 0.0003 //mech.fieldRegen = 0.0015 if (mech.fieldMeter > DRAIN) { mech.fieldMeter -= DRAIN; mech.isStealth = true //isStealth is checked in mob foundPlayer() - //draw stealth field - // ctx.fill(); + if (mech.crouch) { + mech.grabRange = mech.grabRange * 0.96 + 100 * 0.04; + } else { + mech.grabRange = mech.grabRange * 0.96 + 220 * 0.04; + } + ctx.beginPath(); ctx.arc(mech.pos.x, mech.pos.y, mech.grabRange, 0, 2 * Math.PI); ctx.globalCompositeOperation = "destination-in"; //in or atop @@ -1168,7 +1161,7 @@ const mech = { ctx.fillStyle = `rgba(0,30,50,${0.5+0.07*Math.random()})` //"rgba(210,230," + HUE + ",0.5)"; ctx.fill(); - mech.pushMobs360(); + mech.pushMobs360(130); mech.grabPowerUp(); mech.lookForPickUp(); } else {