bounceBoss balance and bug fixes
difficulty balance per level mob harm done is reduced about 2% player damage is increased about 2% slasher mobs do 20% less damage this is because they killed me on my last run and I'm bitter mantisBoss is invincible for a less time Zeno's paradox removes 1/10 -> 1/12 health every 5 seconds slow, stun, plasma, foam, neutron bomb effects now only slow mobs down to a minimum speed of about 2-4 bug fixes bounceBoss deals with slow effects in a less buggy way final boss didn't kill invincible mobs when it dies
This commit is contained in:
25
js/bullet.js
25
js/bullet.js
@@ -1094,7 +1094,7 @@ const b = {
|
|||||||
if (mob[i].shield) dmg *= 3 //to make up for the /5 that shields normally take
|
if (mob[i].shield) dmg *= 3 //to make up for the /5 that shields normally take
|
||||||
mob[i].damage(dmg);
|
mob[i].damage(dmg);
|
||||||
mob[i].locatePlayer();
|
mob[i].locatePlayer();
|
||||||
if (tech.isNeutronSlow) {
|
if (tech.isNeutronSlow && mob[i].speed > 4) {
|
||||||
Matter.Body.setVelocity(mob[i], {
|
Matter.Body.setVelocity(mob[i], {
|
||||||
x: mob[i].velocity.x * 0.97,
|
x: mob[i].velocity.x * 0.97,
|
||||||
y: mob[i].velocity.y * 0.97
|
y: mob[i].velocity.y * 0.97
|
||||||
@@ -1746,8 +1746,14 @@ const b = {
|
|||||||
const dist = Vector.magnitudeSquared(Vector.sub(this.position, mob[i].position))
|
const dist = Vector.magnitudeSquared(Vector.sub(this.position, mob[i].position))
|
||||||
const radius = mob[i].radius + tech.extruderRange / 2
|
const radius = mob[i].radius + tech.extruderRange / 2
|
||||||
if (dist < radius * radius) {
|
if (dist < radius * radius) {
|
||||||
|
if (mob[i].speed > 2) {
|
||||||
|
if (mob[i].isBoss || mob[i].isShielded) {
|
||||||
|
Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x * 0.95, y: mob[i].velocity.y * 0.95 });
|
||||||
|
} else {
|
||||||
Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x * 0.25, y: mob[i].velocity.y * 0.25 });
|
Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x * 0.25, y: mob[i].velocity.y * 0.25 });
|
||||||
Matter.Body.setPosition(this, Vector.add(this.position, mob[i].velocity)) //move with the medium
|
}
|
||||||
|
}
|
||||||
|
// Matter.Body.setPosition(this, Vector.add(this.position, mob[i].velocity)) //move with the medium
|
||||||
let dmg = this.dmg / Math.min(10, mob[i].mass)
|
let dmg = this.dmg / Math.min(10, mob[i].mass)
|
||||||
mob[i].damage(dmg);
|
mob[i].damage(dmg);
|
||||||
if (mob[i].alive) mob[i].foundPlayer();
|
if (mob[i].alive) mob[i].foundPlayer();
|
||||||
@@ -1864,10 +1870,12 @@ const b = {
|
|||||||
//push mobs away
|
//push mobs away
|
||||||
const force = Vector.mult(Vector.normalise(Vector.sub(m.pos, path[1])), -0.01 * Math.min(5, best.who.mass))
|
const force = Vector.mult(Vector.normalise(Vector.sub(m.pos, path[1])), -0.01 * Math.min(5, best.who.mass))
|
||||||
Matter.Body.applyForce(best.who, path[1], force)
|
Matter.Body.applyForce(best.who, path[1], force)
|
||||||
|
if (best.who.speed > 4) {
|
||||||
Matter.Body.setVelocity(best.who, { //friction
|
Matter.Body.setVelocity(best.who, { //friction
|
||||||
x: best.who.velocity.x * 0.7,
|
x: best.who.velocity.x * 0.9,
|
||||||
y: best.who.velocity.y * 0.7
|
y: best.who.velocity.y * 0.9
|
||||||
});
|
});
|
||||||
|
}
|
||||||
//draw mob damage circle
|
//draw mob damage circle
|
||||||
simulation.drawList.push({
|
simulation.drawList.push({
|
||||||
x: path[1].x,
|
x: path[1].x,
|
||||||
@@ -3097,7 +3105,12 @@ const b = {
|
|||||||
} else {
|
} else {
|
||||||
Matter.Body.setPosition(this, Vector.add(Vector.add(rotate, this.target.velocity), this.target.position))
|
Matter.Body.setPosition(this, Vector.add(Vector.add(rotate, this.target.velocity), this.target.position))
|
||||||
}
|
}
|
||||||
Matter.Body.setVelocity(this.target, Vector.mult(this.target.velocity, 0.9))
|
if (this.target.isBoss) {
|
||||||
|
if (this.target.speed > 8) Matter.Body.setVelocity(this.target, Vector.mult(this.target.velocity, 0.98))
|
||||||
|
} else {
|
||||||
|
if (this.target.speed > 4) Matter.Body.setVelocity(this.target, Vector.mult(this.target.velocity, 0.95))
|
||||||
|
}
|
||||||
|
|
||||||
Matter.Body.setAngularVelocity(this.target, this.target.angularVelocity * 0.9);
|
Matter.Body.setAngularVelocity(this.target, this.target.angularVelocity * 0.9);
|
||||||
// Matter.Body.setAngularVelocity(this.target, this.target.angularVelocity * 0.9)
|
// Matter.Body.setAngularVelocity(this.target, this.target.angularVelocity * 0.9)
|
||||||
if (this.target.isShielded) {
|
if (this.target.isShielded) {
|
||||||
@@ -4163,10 +4176,12 @@ const b = {
|
|||||||
//push mobs away
|
//push mobs away
|
||||||
const force = Vector.mult(Vector.normalise(Vector.sub(m.pos, path[1])), -0.01 * Math.min(5, best.who.mass))
|
const force = Vector.mult(Vector.normalise(Vector.sub(m.pos, path[1])), -0.01 * Math.min(5, best.who.mass))
|
||||||
Matter.Body.applyForce(best.who, path[1], force)
|
Matter.Body.applyForce(best.who, path[1], force)
|
||||||
|
if (best.who.speed > 3) {
|
||||||
Matter.Body.setVelocity(best.who, { //friction
|
Matter.Body.setVelocity(best.who, { //friction
|
||||||
x: best.who.velocity.x * 0.7,
|
x: best.who.velocity.x * 0.7,
|
||||||
y: best.who.velocity.y * 0.7
|
y: best.who.velocity.y * 0.7
|
||||||
});
|
});
|
||||||
|
}
|
||||||
//draw mob damage circle
|
//draw mob damage circle
|
||||||
if (best.who.damageReduction) {
|
if (best.who.damageReduction) {
|
||||||
simulation.drawList.push({
|
simulation.drawList.push({
|
||||||
|
|||||||
14
js/level.js
14
js/level.js
@@ -128,29 +128,29 @@ const level = {
|
|||||||
b.dmgScale = 1; //damage done by player decreases each level
|
b.dmgScale = 1; //damage done by player decreases each level
|
||||||
simulation.accelScale = 1 //mob acceleration increases each level
|
simulation.accelScale = 1 //mob acceleration increases each level
|
||||||
simulation.CDScale = 1 //mob CD time decreases each level
|
simulation.CDScale = 1 //mob CD time decreases each level
|
||||||
simulation.dmgScale = 0.38 * simulation.difficulty //damage done by mobs increases each level
|
simulation.dmgScale = 0.375 * simulation.difficulty //damage done by mobs increases each level
|
||||||
simulation.healScale = 1 / (1 + simulation.difficulty * 0.055) //a higher denominator makes for lower heals // m.health += heal * simulation.healScale;
|
simulation.healScale = 1 / (1 + simulation.difficulty * 0.055) //a higher denominator makes for lower heals // m.health += heal * simulation.healScale;
|
||||||
},
|
},
|
||||||
difficultyIncrease(num = 1) {
|
difficultyIncrease(num = 1) {
|
||||||
for (let i = 0; i < num; i++) {
|
for (let i = 0; i < num; i++) {
|
||||||
simulation.difficulty++
|
simulation.difficulty++
|
||||||
b.dmgScale *= 0.917; //damage done by player decreases each level
|
b.dmgScale *= 0.92; //damage done by player decreases each level
|
||||||
if (simulation.accelScale < 6) simulation.accelScale *= 1.025 //mob acceleration increases each level
|
if (simulation.accelScale < 6) simulation.accelScale *= 1.025 //mob acceleration increases each level
|
||||||
if (simulation.CDScale > 0.15) simulation.CDScale *= 0.965 //mob CD time decreases each level
|
if (simulation.CDScale > 0.15) simulation.CDScale *= 0.965 //mob CD time decreases each level
|
||||||
}
|
}
|
||||||
simulation.dmgScale = 0.38 * simulation.difficulty //damage done by mobs scales with total levels
|
simulation.dmgScale = 0.375 * simulation.difficulty //damage done by mobs scales with total levels
|
||||||
simulation.healScale = 1 / (1 + simulation.difficulty * 0.055) //a higher denominator makes for lower heals // m.health += heal * simulation.healScale;
|
simulation.healScale = 1 / (1 + simulation.difficulty * 0.055) //a higher denominator makes for lower heals // m.health += heal * simulation.healScale;
|
||||||
// console.log(`CD = ${simulation.CDScale}`)
|
// console.log(`CD = ${simulation.CDScale}`)
|
||||||
},
|
},
|
||||||
difficultyDecrease(num = 1) { //used in easy mode for simulation.reset()
|
difficultyDecrease(num = 1) { //used in easy mode for simulation.reset()
|
||||||
for (let i = 0; i < num; i++) {
|
for (let i = 0; i < num; i++) {
|
||||||
simulation.difficulty--
|
simulation.difficulty--
|
||||||
b.dmgScale /= 0.917; //damage done by player decreases each level
|
b.dmgScale /= 0.92; //damage done by player decreases each level
|
||||||
if (simulation.accelScale > 1) simulation.accelScale /= 1.025 //mob acceleration increases each level
|
if (simulation.accelScale > 1) simulation.accelScale /= 1.025 //mob acceleration increases each level
|
||||||
if (simulation.CDScale < 1) simulation.CDScale /= 0.965 //mob CD time decreases each level
|
if (simulation.CDScale < 1) simulation.CDScale /= 0.965 //mob CD time decreases each level
|
||||||
}
|
}
|
||||||
if (simulation.difficulty < 1) simulation.difficulty = 0;
|
if (simulation.difficulty < 1) simulation.difficulty = 0;
|
||||||
simulation.dmgScale = 0.38 * simulation.difficulty //damage done by mobs scales with total levels
|
simulation.dmgScale = 0.375 * simulation.difficulty //damage done by mobs scales with total levels
|
||||||
if (simulation.dmgScale < 0.1) simulation.dmgScale = 0.1;
|
if (simulation.dmgScale < 0.1) simulation.dmgScale = 0.1;
|
||||||
simulation.healScale = 1 / (1 + simulation.difficulty * 0.055)
|
simulation.healScale = 1 / (1 + simulation.difficulty * 0.055)
|
||||||
},
|
},
|
||||||
@@ -320,8 +320,8 @@ const level = {
|
|||||||
player.position.x > level.exit.x &&
|
player.position.x > level.exit.x &&
|
||||||
player.position.x < level.exit.x + 100 &&
|
player.position.x < level.exit.x + 100 &&
|
||||||
player.position.y > level.exit.y - 150 &&
|
player.position.y > level.exit.y - 150 &&
|
||||||
player.position.y < level.exit.y - 40 &&
|
player.position.y < level.exit.y - 0 &&
|
||||||
player.velocity.y < 0.1
|
player.velocity.y < 0.15
|
||||||
) {
|
) {
|
||||||
level.exitCount += input.down ? 8 : 2
|
level.exitCount += input.down ? 8 : 2
|
||||||
} else if (level.exitCount > 0) {
|
} else if (level.exitCount > 0) {
|
||||||
|
|||||||
@@ -68,12 +68,13 @@ const mobs = {
|
|||||||
whom.isSlowed = true;
|
whom.isSlowed = true;
|
||||||
whom.status.push({
|
whom.status.push({
|
||||||
effect() {
|
effect() {
|
||||||
const speedCap = 2
|
if (whom.speed > 2) {
|
||||||
const drag = 0.95
|
const drag = 0.95
|
||||||
Matter.Body.setVelocity(whom, {
|
Matter.Body.setVelocity(whom, {
|
||||||
x: Math.min(speedCap, whom.velocity.x) * drag,
|
x: whom.velocity.x * drag,
|
||||||
y: Math.min(speedCap, whom.velocity.y) * drag
|
y: whom.velocity.y * drag
|
||||||
});
|
});
|
||||||
|
}
|
||||||
Matter.Body.setAngularVelocity(whom, 0);
|
Matter.Body.setAngularVelocity(whom, 0);
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
ctx.moveTo(whom.vertices[0].x, whom.vertices[0].y);
|
ctx.moveTo(whom.vertices[0].x, whom.vertices[0].y);
|
||||||
@@ -99,10 +100,12 @@ const mobs = {
|
|||||||
},
|
},
|
||||||
statusStun(who, cycles = 180) {
|
statusStun(who, cycles = 180) {
|
||||||
if (!who.shield && !who.isShielded) {
|
if (!who.shield && !who.isShielded) {
|
||||||
|
if (who.speed > 3) {
|
||||||
Matter.Body.setVelocity(who, {
|
Matter.Body.setVelocity(who, {
|
||||||
x: who.velocity.x * 0.8,
|
x: who.velocity.x * 0.8,
|
||||||
y: who.velocity.y * 0.8
|
y: who.velocity.y * 0.8
|
||||||
});
|
});
|
||||||
|
}
|
||||||
Matter.Body.setAngularVelocity(who, who.angularVelocity * 0.8);
|
Matter.Body.setAngularVelocity(who, who.angularVelocity * 0.8);
|
||||||
//remove other "stun" effects on this mob
|
//remove other "stun" effects on this mob
|
||||||
let i = who.status.length
|
let i = who.status.length
|
||||||
|
|||||||
26
js/player.js
26
js/player.js
@@ -1316,7 +1316,7 @@ const m = {
|
|||||||
m.energy -= fieldBlockCost
|
m.energy -= fieldBlockCost
|
||||||
if (m.energy < 0) m.energy = 0;
|
if (m.energy < 0) m.energy = 0;
|
||||||
m.fieldCDcycle = m.cycle + m.fieldBlockCD;
|
m.fieldCDcycle = m.cycle + m.fieldBlockCD;
|
||||||
if (tech.blockingIce) {
|
if (tech.blockingIce && !who.isInvulnerable) {
|
||||||
for (let i = 0; i < fieldBlockCost * 60 * tech.blockingIce; i++) b.iceIX(3, 2 * Math.PI * Math.random(), m.pos)
|
for (let i = 0; i < fieldBlockCost * 60 * tech.blockingIce; i++) b.iceIX(3, 2 * Math.PI * Math.random(), m.pos)
|
||||||
}
|
}
|
||||||
const unit = Vector.normalise(Vector.sub(player.position, who.position))
|
const unit = Vector.normalise(Vector.sub(player.position, who.position))
|
||||||
@@ -3476,16 +3476,20 @@ const m = {
|
|||||||
m.angle = player.angle
|
m.angle = player.angle
|
||||||
}
|
}
|
||||||
|
|
||||||
level.playerExitCheck = () => {
|
|
||||||
if (
|
|
||||||
player.position.x > level.exit.x &&
|
|
||||||
player.position.x < level.exit.x + 100 &&
|
|
||||||
player.position.y > level.exit.y - 150 &&
|
// level.exit.drawAndCheck = () => { //fix this
|
||||||
player.position.y < level.exit.y + 40
|
// if (
|
||||||
) {
|
// player.position.x > level.exit.x &&
|
||||||
level.nextLevel()
|
// player.position.x < level.exit.x + 100 &&
|
||||||
}
|
// player.position.y > level.exit.y - 150 &&
|
||||||
}
|
// player.position.y < level.exit.y + 40
|
||||||
|
// ) {
|
||||||
|
// level.nextLevel()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
m.move = () => {
|
m.move = () => {
|
||||||
m.pos.x = player.position.x;
|
m.pos.x = player.position.x;
|
||||||
m.pos.y = player.position.y;
|
m.pos.y = player.position.y;
|
||||||
|
|||||||
@@ -938,7 +938,7 @@ const simulation = {
|
|||||||
|
|
||||||
if (!(simulation.cycle % 420)) { //once every 7 seconds
|
if (!(simulation.cycle % 420)) { //once every 7 seconds
|
||||||
if (tech.isZeno) {
|
if (tech.isZeno) {
|
||||||
m.health *= 0.9
|
m.health *= 0.9167 //remove 1/12
|
||||||
m.displayHealth();
|
m.displayHealth();
|
||||||
}
|
}
|
||||||
if (tech.cyclicImmunity && m.immuneCycle < m.cycle + tech.cyclicImmunity) m.immuneCycle = m.cycle + tech.cyclicImmunity; //player is immune to damage for 60 cycles
|
if (tech.cyclicImmunity && m.immuneCycle < m.cycle + tech.cyclicImmunity) m.immuneCycle = m.cycle + tech.cyclicImmunity; //player is immune to damage for 60 cycles
|
||||||
|
|||||||
39
js/spawn.js
39
js/spawn.js
@@ -397,7 +397,13 @@ const spawn = {
|
|||||||
//damage all mobs
|
//damage all mobs
|
||||||
for (let j = 0; j < 8; j++) { //in case some mobs leave things after they die
|
for (let j = 0; j < 8; j++) { //in case some mobs leave things after they die
|
||||||
for (let i = 0, len = mob.length; i < len; ++i) {
|
for (let i = 0, len = mob.length; i < len; ++i) {
|
||||||
if (mob[i] !== this) mob[i].damage(Infinity, true);
|
if (mob[i] !== this) {
|
||||||
|
if (mob[i].isInvulnerable) { //disable invulnerability
|
||||||
|
mob[i].isInvulnerable = false
|
||||||
|
mob[i].damageReduction = 1
|
||||||
|
}
|
||||||
|
mob[i].damage(Infinity, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2030,7 +2036,7 @@ const spawn = {
|
|||||||
this.cons2.length = 100 + 1.5 * this.radius;
|
this.cons2.length = 100 + 1.5 * this.radius;
|
||||||
|
|
||||||
this.isInvulnerable = false
|
this.isInvulnerable = false
|
||||||
this.invulnerabilityCountDown = 70 + Math.max(0, 70 - simulation.difficulty * 0.5)
|
this.invulnerabilityCountDown = 80 + Math.max(0, 70 - simulation.difficulty * 0.5)
|
||||||
this.damageReduction = this.startingDamageReduction
|
this.damageReduction = this.startingDamageReduction
|
||||||
for (let i = 0; i < this.babyList.length; i++) {
|
for (let i = 0; i < this.babyList.length; i++) {
|
||||||
if (this.babyList[i].alive) this.babyList[i].damageReduction = this.startingDamageReduction
|
if (this.babyList[i].alive) this.babyList[i].damageReduction = this.startingDamageReduction
|
||||||
@@ -2044,7 +2050,7 @@ const spawn = {
|
|||||||
this.cons2.length = -200;
|
this.cons2.length = -200;
|
||||||
|
|
||||||
this.isInvulnerable = false
|
this.isInvulnerable = false
|
||||||
this.invulnerabilityCountDown = 70 + Math.max(0, 70 - simulation.difficulty)
|
this.invulnerabilityCountDown = 80 + Math.max(0, 70 - simulation.difficulty)
|
||||||
this.damageReduction = this.startingDamageReduction
|
this.damageReduction = this.startingDamageReduction
|
||||||
for (let i = 0; i < this.babyList.length; i++) {
|
for (let i = 0; i < this.babyList.length; i++) {
|
||||||
if (this.babyList[i].alive) this.babyList[i].damageReduction = this.startingDamageReduction
|
if (this.babyList[i].alive) this.babyList[i].damageReduction = this.startingDamageReduction
|
||||||
@@ -3550,6 +3556,23 @@ const spawn = {
|
|||||||
me.fireCount = 0
|
me.fireCount = 0
|
||||||
// console.log(me.mass) //100
|
// console.log(me.mass) //100
|
||||||
me.do = function() {
|
me.do = function() {
|
||||||
|
me.seePlayer.recall = 1
|
||||||
|
//maintain speed //faster in the vertical to help avoid repeating patterns
|
||||||
|
if (this.speed < 0.01) {
|
||||||
|
const unit = Vector.sub(player.position, this.position)
|
||||||
|
Matter.Body.setVelocity(this, Vector.mult(Vector.normalise(unit), 0.1));
|
||||||
|
// this.fireCount = 10 + simulation.difficulty * 0.5
|
||||||
|
// this.isInvulnerable = true
|
||||||
|
// this.damageReduction = 0
|
||||||
|
} else {
|
||||||
|
if (Math.abs(this.velocity.y) < 15) {
|
||||||
|
Matter.Body.setVelocity(this, { x: this.velocity.x, y: this.velocity.y * 1.07 });
|
||||||
|
}
|
||||||
|
if (Math.abs(this.velocity.x) < 11) {
|
||||||
|
Matter.Body.setVelocity(this, { x: this.velocity.x * 1.07, y: this.velocity.y });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (this.isInvulnerable) {
|
if (this.isInvulnerable) {
|
||||||
this.fireCount--
|
this.fireCount--
|
||||||
if (this.fireCount < 0) {
|
if (this.fireCount < 0) {
|
||||||
@@ -3584,14 +3607,6 @@ const spawn = {
|
|||||||
// } else if (player.position.x < this.position.x - 200) {
|
// } else if (player.position.x < this.position.x - 200) {
|
||||||
// this.force.x -= xMag * this.mass;
|
// this.force.x -= xMag * this.mass;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
//maintain speed //faster in the vertical to help avoid repeating patterns
|
|
||||||
if (Math.abs(this.velocity.y) < 15) {
|
|
||||||
Matter.Body.setVelocity(this, { x: this.velocity.x, y: this.velocity.y * 1.05 });
|
|
||||||
}
|
|
||||||
if (Math.abs(this.velocity.x) < 11) {
|
|
||||||
Matter.Body.setVelocity(this, { x: this.velocity.x * 1.05, y: this.velocity.y });
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
bounceBullet(x, y, velocity = { x: 0, y: 0 }, radius = 10, sides = 6) {
|
bounceBullet(x, y, velocity = { x: 0, y: 0 }, radius = 10, sides = 6) {
|
||||||
@@ -3802,7 +3817,7 @@ const spawn = {
|
|||||||
me.swordRadiusMax = 350 + 5 * simulation.difficulty;
|
me.swordRadiusMax = 350 + 5 * simulation.difficulty;
|
||||||
me.swordRadiusGrowRate = me.swordRadiusMax * (0.018 + 0.0006 * simulation.difficulty)
|
me.swordRadiusGrowRate = me.swordRadiusMax * (0.018 + 0.0006 * simulation.difficulty)
|
||||||
me.isSlashing = false;
|
me.isSlashing = false;
|
||||||
me.swordDamage = 0.05 * simulation.dmgScale
|
me.swordDamage = 0.04 * simulation.dmgScale
|
||||||
me.laserAngle = 3 * Math.PI / 5
|
me.laserAngle = 3 * Math.PI / 5
|
||||||
const seeDistance2 = 200000
|
const seeDistance2 = 200000
|
||||||
spawn.shield(me, x, y);
|
spawn.shield(me, x, y);
|
||||||
|
|||||||
@@ -2449,7 +2449,7 @@ const tech = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Zeno's paradox",
|
name: "Zeno's paradox",
|
||||||
description: "reduce <strong class='color-harm'>harm</strong> by <strong>85%</strong>, but every <strong>5</strong> seconds<br>remove <strong>1/10</strong> of your current <strong class='color-h'>health</strong>",
|
description: "reduce <strong class='color-harm'>harm</strong> by <strong>85%</strong>, but every <strong>5</strong> seconds<br>remove <strong>1/12</strong> of your current <strong class='color-h'>health</strong>",
|
||||||
// description: "every <strong>5</strong> seconds remove <strong>1/10</strong> of your <strong class='color-h'>health</strong><br>reduce <strong class='color-harm'>harm</strong> by <strong>90%</strong>",
|
// description: "every <strong>5</strong> seconds remove <strong>1/10</strong> of your <strong class='color-h'>health</strong><br>reduce <strong class='color-harm'>harm</strong> by <strong>90%</strong>",
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
|
|||||||
25
todo.txt
25
todo.txt
@@ -1,23 +1,28 @@
|
|||||||
******************************************************** NEXT PATCH **************************************************
|
******************************************************** NEXT PATCH **************************************************
|
||||||
|
|
||||||
new level: reactor - midBoss fight
|
difficulty balance per level
|
||||||
it's not well balanced yet
|
mob harm done is reduced about 2%
|
||||||
Let me know if there are any impossible gun combinations
|
player damage is increased about 2%
|
||||||
|
|
||||||
for new players the training button at the start screen now cycles colors
|
slasher mobs do 20% less damage
|
||||||
effect shows if you haven't cleared the first training level, and you haven't done at least a few normal runs
|
this is because they killed me on my last run and I'm bitter
|
||||||
|
mantisBoss is invincible for a less time
|
||||||
|
Zeno's paradox removes 1/10 -> 1/12 health every 5 seconds
|
||||||
|
|
||||||
standing wave expansion tech is 40% larger and gives 25% deflecting efficiency
|
slow, stun, plasma, foam, neutron bomb effects now only slow mobs down to a minimum speed of about 2-4
|
||||||
ammonium nitrate gives 30 -> 27% damage and range
|
|
||||||
heuristics gives 30 -> 33% fire rate
|
|
||||||
wormhole invariant tech drains energy much slower while time is paused
|
|
||||||
|
|
||||||
bug fixes
|
bug fixes
|
||||||
null level now longer progresses level.onLevel
|
bounceBoss deals with slow effects in a less buggy way
|
||||||
|
final boss didn't kill invincible mobs when it dies
|
||||||
|
|
||||||
******************************************************** TODO ********************************************************
|
******************************************************** TODO ********************************************************
|
||||||
|
|
||||||
|
tech - field power ups now give 3 field tech instead of 3 field?
|
||||||
|
|
||||||
|
run more profiles of n-gon to fix performance issues
|
||||||
|
|
||||||
reactor
|
reactor
|
||||||
|
foam hits all the bullets and makes this fight easy
|
||||||
give map some background graphics
|
give map some background graphics
|
||||||
it's a little short
|
it's a little short
|
||||||
add alternate boss
|
add alternate boss
|
||||||
|
|||||||
Reference in New Issue
Block a user