rebalancing why

This commit is contained in:
landgreen
2020-02-05 05:50:20 -08:00
parent f359cce427
commit b0f5f61e29
7 changed files with 30 additions and 21 deletions

View File

@@ -101,7 +101,7 @@
<option value="0">easy</option>
<option value="1" selected>normal</option>
<option value="2">hard</option>
<option value="6">why...</option>
<option value="4">why...</option>
</select>
<br>
<label for="body-damage" title="allow damage from the ground and large fast moving blocks">collision damage from blocks:</label>

View File

@@ -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 <strong>burst</strong> of short range bullets<br><em>crouch to reduce recoil</em>",
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
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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
}

View File

@@ -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];