diff --git a/js/level.js b/js/level.js
index 4f08921..23c3a30 100644
--- a/js/level.js
+++ b/js/level.js
@@ -13,10 +13,10 @@ const level = {
// game.zoomScale = 1400 //1400
if (game.levelsCleared === 0) {
document.title = "n-gon";
- this.intro(); //starting level
+ // this.intro(); //starting level
// this.testingMap();
// this.bosses();
- // this.skyscrapers();
+ this.excavation();
// this.rooftops();
// this.warehouse();
// this.highrise();
@@ -374,7 +374,6 @@ const level = {
// spawn.healer(1000, -500)
// spawn.healer(1000, -400)
},
-
rooftops() {
game.zoomTransition(1700) //1400 is normal
@@ -568,6 +567,47 @@ const level = {
//spawn.randomBoss(4850, -1250,0.7);
if (game.levelsCleared > 4) spawn.bomber(2500, -2400, 100);
},
+ excavation() {
+ game.zoomTransition(2200) //1400 is normal
+ mech.setPosToSpawn(-50, -50); //normal spawn
+ level.enter.x = mech.spawnPos.x - 50;
+ level.enter.y = mech.spawnPos.y + 20;
+ level.exit.x = 1500;
+ level.exit.y = -1875;
+ this.addZone(level.exit.x, level.exit.y, 100, 30, "nextLevel");
+ // powerUps.spawnStartingPowerUps(1475, -1175);
+ // spawn.debris(0, -2200, 4500, 20); //20 debris per level
+ document.body.style.backgroundColor = "#dcdcde";
+
+ // //foreground
+ // level.fill.push({
+ // x: 2500,
+ // y: -1100,
+ // width: 450,
+ // height: 250,
+ // color: "rgba(0,0,0,0.1)"
+ // });
+
+ // //background
+ // level.fillBG.push({
+ // x: 1300,
+ // y: -1800,
+ // width: 750,
+ // height: 1800,
+ // color: "#d4d4d7"
+ // });
+
+ // starting room
+ spawn.mapRect(-200, 0, 500, 1500);
+ spawn.mapRect(-200, -300, 500, 50);
+ spawn.mapRect(-200, -300, 50, 350);
+ spawn.bodyRect(100, -250, 200, 240);
+
+ //top of building
+ spawn.mapRect(600, 0, 800, 100);
+ spawn.mapRect(200, 1100, 800, 400);
+ spawn.mapRect(1250, 1100, 800, 400);
+ },
skyscrapers() {
game.zoomTransition(2000) //1400 is normal
diff --git a/js/mobs.js b/js/mobs.js
index 3058a75..5dcb893 100644
--- a/js/mobs.js
+++ b/js/mobs.js
@@ -597,8 +597,8 @@ const mobs = {
pullPlayer() {
if (this.seePlayer.yes && Matter.Vector.magnitudeSquared(Matter.Vector.sub(this.position, player.position)) < 1000000) {
const angle = Math.atan2(player.position.y - this.position.y, player.position.x - this.position.x);
- player.force.x -= 1.3 * Math.cos(angle) * (mech.onGround ? 2 * player.mass * game.g : player.mass * game.g);
- player.force.y -= 0.97 * player.mass * game.g * Math.sin(angle);
+ player.force.x -= game.accelScale * 1.13 * Math.cos(angle) * (mech.onGround ? 2 * player.mass * game.g : player.mass * game.g);
+ player.force.y -= game.accelScale * 0.84 * player.mass * game.g * Math.sin(angle);
ctx.beginPath();
ctx.moveTo(this.position.x, this.position.y);
diff --git a/js/player.js b/js/player.js
index 708187e..e424564 100644
--- a/js/player.js
+++ b/js/player.js
@@ -1158,81 +1158,70 @@ const mech = {
mech.drawFieldMeter()
}
},
- () => {
- mech.fieldMode = 7;
- game.makeTextLog("Thermal Radiation Field
(right mouse or space bar)
field grows while active
damages all targets within range, including player
decreased field shielding efficiency
", 1200);
- mech.setHoldDefaults();
- mech.fieldShieldingScale = 10;
- mech.rangeSmoothing = 0
- mech.hold = function () {
- if (mech.isHolding) {
- mech.drawHold(mech.holdingTarget);
- mech.holding();
- mech.throw();
- } else if ((keys[32] || game.mouseDownRight && mech.fieldCDcycle < game.cycle)) { //not hold but field button is pressed
- mech.grabPowerUp();
- mech.lookForPickUp(Math.max(180, mech.grabRange));
- mech.pushMobs360(140);
- // //draw grab field
- // ctx.beginPath();
- // ctx.arc(this.pos.x, this.pos.y, this.grabRange - 20, this.angle - Math.PI * this.fieldArc, this.angle + Math.PI * this.fieldArc, false);
- // let EYE_RADIUS = 13;
- // ctx.lineTo(mech.pos.x + EYE_RADIUS * Math.cos(this.angle), mech.pos.y + EYE_RADIUS * Math.sin(this.angle));
- // if (this.holdingTarget) {
- // ctx.fillStyle = "rgba(150,150,150," + (0.05 + 0.1 * Math.random()) + ")";
- // } else {
- // ctx.fillStyle = "rgba(150,150,150," + (0.15 + 0.15 * Math.random()) + ")";
- // }
- // ctx.fill();
+ // () => {
+ // mech.fieldMode = 7;
+ // game.makeTextLog("Thermal Radiation Field
(right mouse or space bar) field grows while active
damages all targets within range, including player
decreased field shielding efficiency
", 1200);
+ // mech.setHoldDefaults();
+ // mech.fieldShieldingScale = 10;
+ // mech.rangeSmoothing = 0
+ // mech.hold = function () {
+ // if (mech.isHolding) {
+ // mech.drawHold(mech.holdingTarget);
+ // mech.holding();
+ // mech.throw();
+ // } else if ((keys[32] || game.mouseDownRight && mech.fieldCDcycle < game.cycle)) { //not hold but field button is pressed
+ // mech.grabPowerUp();
+ // mech.lookForPickUp(Math.max(180, mech.grabRange));
+ // mech.pushMobs360(140);
- if (mech.health > 0.1) {
- const DRAIN = 0.0008 //mech.fieldRegen = 0.0015
- if (mech.fieldMeter > DRAIN) {
- mech.fieldMeter -= DRAIN;
- mech.damage(0.00005 + 0.00000012 * mech.grabRange)
- //draw damage field
- mech.grabRange = mech.grabRange * 0.997 + (1350 + 150 * Math.cos(game.cycle / 30)) * 0.003
- let gradient = ctx.createRadialGradient(this.pos.x, this.pos.y, 0, this.pos.x, this.pos.y, mech.grabRange);
- gradient.addColorStop(0, 'rgba(255,255,255,0.7)');
- gradient.addColorStop(1, 'rgba(255,0,50,' + (0.6 + 0.2 * Math.random()) + ')');
+ // if (mech.health > 0.1) {
+ // const DRAIN = 0.0008 //mech.fieldRegen = 0.0015
+ // if (mech.fieldMeter > DRAIN) {
+ // mech.fieldMeter -= DRAIN;
+ // mech.damage(0.00005 + 0.00000012 * mech.grabRange)
+ // //draw damage field
+ // mech.grabRange = mech.grabRange * 0.997 + (1350 + 150 * Math.cos(game.cycle / 30)) * 0.003
+ // let gradient = ctx.createRadialGradient(this.pos.x, this.pos.y, 0, this.pos.x, this.pos.y, mech.grabRange);
+ // gradient.addColorStop(0, 'rgba(255,255,255,0.7)');
+ // gradient.addColorStop(1, 'rgba(255,0,50,' + (0.6 + 0.2 * Math.random()) + ')');
- const angleOff = 2 * Math.PI * Math.random()
- ctx.beginPath();
- ctx.arc(this.pos.x, this.pos.y, mech.grabRange + Math.sqrt(mech.grabRange) * 0.7 * (Math.random() - 0.5), angleOff, 1.8 * Math.PI + angleOff);
- ctx.fillStyle = gradient //rgba(255,0,0,0.2)
- ctx.fill();
+ // const angleOff = 2 * Math.PI * Math.random()
+ // ctx.beginPath();
+ // ctx.arc(this.pos.x, this.pos.y, mech.grabRange + Math.sqrt(mech.grabRange) * 0.7 * (Math.random() - 0.5), angleOff, 1.8 * Math.PI + angleOff);
+ // ctx.fillStyle = gradient //rgba(255,0,0,0.2)
+ // ctx.fill();
- //damage and push away mobs in range
- for (let i = 0, len = mob.length; i < len; ++i) {
- if (mob[i].alive) {
- sub = Matter.Vector.sub(this.pos, mob[i].position);
- dist = Matter.Vector.magnitude(sub);
- if (dist < mech.grabRange) {
- mob[i].damage(0.01);
- mob[i].locatePlayer();
- mob[i].force = Matter.Vector.mult(Matter.Vector.normalise(sub), -0.0001 * mob[i].mass) //gently push mobs back
- }
- }
- }
- } else {
- mech.fieldCDcycle = game.cycle + 120;
- }
- } else {
- mech.grabRange = 180;
- mech.drawField();
- mech.grabPowerUp();
- mech.lookForPickUp();
- }
- } else if (mech.holdingTarget && mech.fireCDcycle < game.cycle && mech.fieldMeter > 0.05) { //holding, but field button is released
- mech.grabRange = 0
- mech.pickUp();
- } else {
- mech.grabRange = 0
- 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()
- }
- },
+ // //damage and push away mobs in range
+ // for (let i = 0, len = mob.length; i < len; ++i) {
+ // if (mob[i].alive) {
+ // sub = Matter.Vector.sub(this.pos, mob[i].position);
+ // dist = Matter.Vector.magnitude(sub);
+ // if (dist < mech.grabRange) {
+ // mob[i].damage(0.01);
+ // mob[i].locatePlayer();
+ // mob[i].force = Matter.Vector.mult(Matter.Vector.normalise(sub), -0.0001 * mob[i].mass) //gently push mobs back
+ // }
+ // }
+ // }
+ // } else {
+ // mech.fieldCDcycle = game.cycle + 120;
+ // }
+ // } else {
+ // mech.grabRange = 180;
+ // mech.drawField();
+ // mech.grabPowerUp();
+ // mech.lookForPickUp();
+ // }
+ // } else if (mech.holdingTarget && mech.fireCDcycle < game.cycle && mech.fieldMeter > 0.05) { //holding, but field button is released
+ // mech.grabRange = 0
+ // mech.pickUp();
+ // } else {
+ // mech.grabRange = 0
+ // 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()
+ // }
+ // },
],
drawLeg(stroke) {
// if (game.mouseInGame.x > this.pos.x) {