diff --git a/index.html b/index.html index d905435..63a9783 100644 --- a/index.html +++ b/index.html @@ -101,7 +101,7 @@ - +
diff --git a/js/bullets.js b/js/bullets.js index e0f0112..3dd775d 100644 --- a/js/bullets.js +++ b/js/bullets.js @@ -257,7 +257,7 @@ const b = { }, effect() { b.isModDroneOnDamage = true; - for (let i = 0; i < 3; i++) { + for (let i = 0; i < 4; i++) { b.drone() //spawn drone } } @@ -696,7 +696,7 @@ const b = { if (!b.isModImmuneExplosion && mech.fieldMeter > 0.1) { mech.damage(radius * 0.0002); } else { - mech.fieldMeter -= radius * 0.0006 + mech.fieldMeter -= Math.max(radius * 0.0006, 0.1) } knock = Vector.mult(Vector.normalise(sub), -Math.sqrt(dmg) * player.mass / 30); player.force.x += knock.x; @@ -1305,34 +1305,33 @@ const b = { name: "shotgun", //1 description: "fire a burst of short range bullets
crouch to reduce recoil", ammo: 0, - ammoPack: 6, + ammoPack: 8, have: false, isStarterGun: true, fire() { - mech.fireCDcycle = mech.cycle + Math.floor((mech.crouch ? 50 : 35) * b.modFireRate); // cool down - + mech.fireCDcycle = mech.cycle + Math.floor((mech.crouch ? 55 : 30) * b.modFireRate); // cool down b.muzzleFlash(35); // mobs.alert(650); - const side = 11 * b.modBulletSize - for (let i = 0; i < 9; i++) { + const side = 13 * b.modBulletSize + for (let i = 0; i < 11; i++) { const me = bullet.length; - const dir = mech.angle + (Math.random() - 0.5) * (mech.crouch ? 0.22 : 0.7) + const dir = mech.angle + (Math.random() - 0.5) * (mech.crouch ? 0.35 : 1.1) bullet[me] = Bodies.rectangle(mech.pos.x + 35 * Math.cos(mech.angle) + 15 * (Math.random() - 0.5), mech.pos.y + 35 * Math.sin(mech.angle) + 15 * (Math.random() - 0.5), side, side, b.fireAttributes(dir)); World.add(engine.world, bullet[me]); //add bullet to world - const SPEED = 40 + Math.random() * 11 + const SPEED = 50 + Math.random() * 10 Matter.Body.setVelocity(bullet[me], { x: SPEED * Math.cos(dir), y: SPEED * Math.sin(dir) }); bullet[me].endCycle = game.cycle + 55 - bullet[me].frictionAir = 0.03; + bullet[me].frictionAir = 0.04; bullet[me].do = function () { this.force.y += this.mass * 0.001; }; } //knock back - const KNOCK = ((mech.crouch) ? 0.013 : 0.15) * b.modBulletSize * b.modBulletSize + const KNOCK = ((mech.crouch) ? 0.01 : 0.08) * b.modBulletSize * b.modBulletSize player.force.x -= KNOCK * Math.cos(mech.angle) player.force.y -= KNOCK * Math.sin(mech.angle) * 0.3 //reduce knock back in vertical direction to stop super jumps } diff --git a/js/game.js b/js/game.js index cb194f7..5096869 100644 --- a/js/game.js +++ b/js/game.js @@ -465,6 +465,7 @@ const game = { game.difficultyMode = 1 level.difficultyDecrease(6); //if this stops being -6 change in build.calculateCustomDifficulty() } + if (game.difficultyMode === 4) level.difficultyIncrease(6) game.clearNow = true; document.getElementById("text-log").style.opacity = 0; diff --git a/js/index.js b/js/index.js index 7096c68..95b7029 100644 --- a/js/index.js +++ b/js/index.js @@ -2,6 +2,8 @@ /* TODO: ******************************************* ***************************************************** +mod: bullets neutralize forward mob velocity on hit + boss: bacteria boss, duplicates when player is in range mod: remove all guns from the game, but double health, shields, and damage @@ -327,7 +329,11 @@ const build = { spawn.setSpawnList(); //gives random mobs, not starter game.startGame(); let difficulty = build.list.length * game.difficultyMode - 1 - if (game.difficultyMode === 0) difficulty = build.list.length * 1 - 6 - 1 + if (game.difficultyMode === 0) { + difficulty = build.list.length * 1 - 6 - 1 + game.isEasyMode = true; + } + if (game.difficultyMode === 4) level.difficultyIncrease(6) level.difficultyIncrease(difficulty) level.isBuildRun = true; diff --git a/js/level.js b/js/level.js index 25caa41..c935286 100644 --- a/js/level.js +++ b/js/level.js @@ -50,7 +50,7 @@ const level = { // if (level.isBuildRun) num++ for (let i = 0; i < num; i++) { game.difficulty++ - game.dmgScale += 0.135; //damage done by mobs increases each level + game.dmgScale += 0.11; //damage done by mobs increases each level b.dmgScale *= 0.93; //damage done by player decreases each level game.accelScale *= 1.02 //mob acceleration increases each level game.lookFreqScale *= 0.98 //mob cycles between looks decreases each level @@ -61,7 +61,7 @@ const level = { difficultyDecrease(num = 1) { //used in easy mode for game.reset() for (let i = 0; i < num; i++) { game.difficulty-- - game.dmgScale -= 0.135; //damage done by mobs increases each level + game.dmgScale -= 0.11; //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.02 //mob acceleration increases each level diff --git a/js/player.js b/js/player.js index cff8914..6f3910e 100644 --- a/js/player.js +++ b/js/player.js @@ -474,7 +474,7 @@ const mech = { //chance to build a drone on damage from mod if (b.isModDroneOnDamage) { - const len = (dmg - 0.08 + 0.05 * Math.random()) / 0.05 + const len = (dmg - 0.06 + 0.07 * Math.random()) / 0.05 for (let i = 0; i < len; i++) { if (Math.random() < 0.6) b.drone() //spawn drone } diff --git a/js/spawn.js b/js/spawn.js index 706bfd2..321fa7f 100644 --- a/js/spawn.js +++ b/js/spawn.js @@ -160,7 +160,7 @@ const spawn = { me.frictionAir = 0.012 me.seePlayerFreq = Math.floor(11 + 7 * Math.random()) me.seeAtDistance2 = 1400000; - me.cellMassMax = 80 + me.cellMassMax = 70 me.collisionFilter.mask = cat.player | cat.bullet Matter.Body.setDensity(me, 0.0005) // normal density is 0.001 // this reduces life by half and decreases knockback @@ -504,8 +504,11 @@ const spawn = { //when player is inside event horizon if (Vector.magnitude(Vector.sub(this.position, player.position)) < eventHorizon && !mech.isStealth) { - mech.damage(0.00015 * game.dmgScale); - if (mech.fieldMeter > 0.1) mech.fieldMeter -= 0.0045 + if (mech.fieldMeter > 0.1) { + mech.fieldMeter -= 0.005 + } else { + mech.damage(0.0002 * game.dmgScale); + } const angle = Math.atan2(player.position.y - this.position.y, player.position.x - this.position.x); player.force.x -= 1.25 * Math.cos(angle) * player.mass * game.g * (mech.onGround ? 1.8 : 1); player.force.y -= 0.96 * player.mass * game.g * Math.sin(angle); @@ -600,7 +603,7 @@ const spawn = { //when player is inside event horizon if (Vector.magnitude(Vector.sub(this.position, player.position)) < eventHorizon && !mech.isStealth) { if (mech.fieldMeter > 0.1) { - mech.fieldMeter -= 0.0055 + mech.fieldMeter -= 0.0075 } else { mech.damage(0.0003 * game.dmgScale); } @@ -1235,7 +1238,7 @@ const spawn = { this.attraction(); }; }, - shield(target, x, y, chance = Math.min(0.01 + game.difficulty * 0.01, 0.3)) { + shield(target, x, y, chance = Math.min(0.02 + game.difficulty * 0.005, 0.2)) { if (this.allowShields && Math.random() < chance) { mobs.spawn(x, y, 9, target.radius + 30, "rgba(220,220,255,0.9)"); let me = mob[mob.length - 1];