extruder balance
extruder: leftovers still exist when field isn't active range and damage are all slightly decreased energy drain is greatly increased
This commit is contained in:
69
js/bullet.js
69
js/bullet.js
@@ -679,50 +679,28 @@ const b = {
|
|||||||
World.add(engine.world, bullet[me]); //add bullet to world
|
World.add(engine.world, bullet[me]); //add bullet to world
|
||||||
},
|
},
|
||||||
lastAngle: 0,
|
lastAngle: 0,
|
||||||
|
wasExtruderOn: false,
|
||||||
|
isExtruderOn: false,
|
||||||
extruder() {
|
extruder() {
|
||||||
const color = "#f07"
|
const DRAIN = 0.0007 + mech.fieldRegen
|
||||||
const DRAIN = 0.00014 + mech.fieldRegen
|
|
||||||
if (mech.energy > DRAIN) {
|
if (mech.energy > DRAIN) {
|
||||||
mech.energy -= DRAIN
|
mech.energy -= DRAIN
|
||||||
if (mech.energy < 0) {
|
if (mech.energy < 0) {
|
||||||
mech.fieldCDcycle = mech.cycle + 120;
|
mech.fieldCDcycle = mech.cycle + 120;
|
||||||
mech.energy = 0;
|
mech.energy = 0;
|
||||||
}
|
}
|
||||||
ctx.lineWidth = 5;
|
const SPEED = 10
|
||||||
ctx.strokeStyle = color
|
|
||||||
ctx.beginPath(); //draw all the wave bullets
|
|
||||||
for (let i = 0, len = bullet.length; i < len; i++) {
|
|
||||||
if (bullet[i].isBranch) {
|
|
||||||
ctx.stroke();
|
|
||||||
ctx.beginPath(); //draw all the wave bullets
|
|
||||||
} else if (bullet[i].isWave) ctx.lineTo(bullet[i].position.x, bullet[i].position.y)
|
|
||||||
}
|
|
||||||
ctx.lineTo(mech.pos.x + 15 * Math.cos(mech.angle), mech.pos.y + 15 * Math.sin(mech.angle))
|
|
||||||
ctx.stroke();
|
|
||||||
} else {
|
|
||||||
mech.fireCDcycle = mech.cycle + 60; // cool down
|
|
||||||
for (let i = 0, len = bullet.length; i < len; i++) { //remove all bullets
|
|
||||||
if (bullet[i].isWave) {
|
|
||||||
bullet[i].isWave = false
|
|
||||||
bullet[i].endCycle = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const SPEED = 13
|
|
||||||
const me = bullet.length;
|
const me = bullet.length;
|
||||||
const where = Vector.add(mech.pos, player.velocity)
|
const where = Vector.add(mech.pos, player.velocity)
|
||||||
bullet[me] = Bodies.polygon(where.x + 20 * Math.cos(mech.angle), where.y + 20 * Math.sin(mech.angle), 3, 0.01, {
|
bullet[me] = Bodies.polygon(where.x + 20 * Math.cos(mech.angle), where.y + 20 * Math.sin(mech.angle), 3, 0.01, {
|
||||||
cycle: -0.5,
|
cycle: -0.5,
|
||||||
isWave: true,
|
isWave: true,
|
||||||
endCycle: game.cycle + 50 * mod.isPlasmaRange,
|
endCycle: game.cycle + 10 + 40 * mod.isPlasmaRange,
|
||||||
inertia: Infinity,
|
inertia: Infinity,
|
||||||
frictionAir: 0,
|
frictionAir: 0,
|
||||||
isInHole: true, //this keeps the bullet from entering wormholes
|
isInHole: true, //this keeps the bullet from entering wormholes
|
||||||
minDmgSpeed: 0,
|
minDmgSpeed: 0,
|
||||||
dmg: b.dmgScale * 1.4, //damage also changes when you divide by mob.mass on in .do()
|
dmg: b.dmgScale * 1.25, //damage also changes when you divide by mob.mass on in .do()
|
||||||
isJustReflected: false,
|
|
||||||
classType: "bullet",
|
classType: "bullet",
|
||||||
isBranch: false,
|
isBranch: false,
|
||||||
restitution: 0,
|
restitution: 0,
|
||||||
@@ -735,22 +713,10 @@ const b = {
|
|||||||
beforeDmg() {},
|
beforeDmg() {},
|
||||||
onEnd() {},
|
onEnd() {},
|
||||||
do() {
|
do() {
|
||||||
mech.fireCDcycle = mech.cycle //this is here to trigger cloaking field
|
|
||||||
if (!input.field) {
|
|
||||||
this.endCycle = 0;
|
|
||||||
this.isWave = false
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (!mech.isBodiesAsleep) {
|
if (!mech.isBodiesAsleep) {
|
||||||
if (this.endCycle < game.cycle + 1) this.isWave = false
|
if (this.endCycle < game.cycle + 1) this.isWave = false
|
||||||
if (Matter.Query.point(map, this.position).length) { //check if inside map
|
if (Matter.Query.point(map, this.position).length) { //check if inside map
|
||||||
this.isBranch = true;
|
this.isBranch = true;
|
||||||
// for (let i = 0, len = bullet.length; i < len; i++) { //remove all bullets
|
|
||||||
// if (bullet[i].isWave && bullet[i].cycle > this.cycle) {
|
|
||||||
// bullet[i].isWave = false
|
|
||||||
// bullet[i].endCycle = 0
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
} else { //check if inside a body
|
} else { //check if inside a body
|
||||||
const q = Matter.Query.point(mob, this.position)
|
const q = Matter.Query.point(mob, this.position)
|
||||||
for (let i = 0; i < q.length; i++) {
|
for (let i = 0; i < q.length; i++) {
|
||||||
@@ -765,8 +731,8 @@ const b = {
|
|||||||
game.drawList.push({ //add dmg to draw queue
|
game.drawList.push({ //add dmg to draw queue
|
||||||
x: this.position.x,
|
x: this.position.x,
|
||||||
y: this.position.y,
|
y: this.position.y,
|
||||||
radius: Math.log(2 * dmg + 1.4) * 40,
|
radius: Math.log(2 * dmg + 1.1) * 40,
|
||||||
color: color,
|
color: "rgba(255, 0, 119, 0.5)",
|
||||||
time: game.drawTime
|
time: game.drawTime
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -774,7 +740,7 @@ const b = {
|
|||||||
this.cycle++
|
this.cycle++
|
||||||
const wiggleMag = (mech.crouch ? 6 : 12) * Math.cos(game.cycle * 0.09)
|
const wiggleMag = (mech.crouch ? 6 : 12) * Math.cos(game.cycle * 0.09)
|
||||||
const wiggle = Vector.mult(transverse, wiggleMag * Math.cos(this.cycle * 0.36)) //+ wiggleMag * Math.cos(game.cycle * 0.3))
|
const wiggle = Vector.mult(transverse, wiggleMag * Math.cos(this.cycle * 0.36)) //+ wiggleMag * Math.cos(game.cycle * 0.3))
|
||||||
const velocity = Vector.mult(player.velocity, 0.3) //move with player
|
const velocity = Vector.mult(player.velocity, 0.25) //move with player
|
||||||
Matter.Body.setPosition(this, Vector.add(velocity, Vector.add(this.position, wiggle)))
|
Matter.Body.setPosition(this, Vector.add(velocity, Vector.add(this.position, wiggle)))
|
||||||
// Matter.Body.setPosition(this, Vector.add(this.position, wiggle))
|
// Matter.Body.setPosition(this, Vector.add(this.position, wiggle))
|
||||||
}
|
}
|
||||||
@@ -786,17 +752,12 @@ const b = {
|
|||||||
y: SPEED * Math.sin(mech.angle)
|
y: SPEED * Math.sin(mech.angle)
|
||||||
});
|
});
|
||||||
const transverse = Vector.normalise(Vector.perp(bullet[me].velocity))
|
const transverse = Vector.normalise(Vector.perp(bullet[me].velocity))
|
||||||
const angleDifference = 180 - Math.abs(Math.abs(b.lastAngle - mech.angle) - 180); //find the difference between current and previous angle
|
if (180 - Math.abs(Math.abs(b.lastAngle - mech.angle) - 180) > 0.3) bullet[me].isBranch = true; //don't draw stroke for this bullet
|
||||||
b.lastAngle = mech.angle
|
b.lastAngle = mech.angle //track last angle for the above angle difference calculation
|
||||||
if (angleDifference > 0.5) { //don't draw stroke for this bullet
|
if (!mech.wasExtruderOn) bullet[me].isBranch = true;
|
||||||
bullet[me].isBranch = true;
|
mech.isExtruderOn = true
|
||||||
// for (let i = 0, len = bullet.length; i < len; i++) { //remove all bullets
|
} else {
|
||||||
// if (bullet[i].isWave) {
|
mech.isExtruderOn = false
|
||||||
// bullet[i].isWave = false
|
|
||||||
// bullet[i].endCycle = 0
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
plasma() {
|
plasma() {
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ const level = {
|
|||||||
// level.difficultyIncrease(19)
|
// level.difficultyIncrease(19)
|
||||||
// game.zoomScale = 1000;
|
// game.zoomScale = 1000;
|
||||||
// game.setZoom();
|
// game.setZoom();
|
||||||
// mech.setField("plasma torch")
|
mech.setField("plasma torch")
|
||||||
// b.giveGuns("wave beam")
|
// b.giveGuns("wave beam")
|
||||||
// mod.giveMod("micro-extruder")
|
mod.giveMod("micro-extruder")
|
||||||
// for (let i = 0; i < 15; i++) mod.giveMod("supply chain")
|
// for (let i = 0; i < 15; i++) mod.giveMod("supply chain")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
22
js/player.js
22
js/player.js
@@ -1660,6 +1660,28 @@ const mech = {
|
|||||||
}
|
}
|
||||||
mech.drawFieldMeter("rgba(0, 0, 0, 0.2)")
|
mech.drawFieldMeter("rgba(0, 0, 0, 0.2)")
|
||||||
|
|
||||||
|
if (mod.isExtruder) {
|
||||||
|
if (input.field) {
|
||||||
|
mech.wasExtruderOn = true
|
||||||
|
} else {
|
||||||
|
mech.wasExtruderOn = false
|
||||||
|
}
|
||||||
|
ctx.lineWidth = 5;
|
||||||
|
ctx.strokeStyle = "#f07"
|
||||||
|
ctx.beginPath(); //draw all the wave bullets
|
||||||
|
for (let i = 0, len = bullet.length; i < len; i++) {
|
||||||
|
if (bullet[i].isWave) {
|
||||||
|
if (bullet[i].isBranch) {
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.beginPath(); //draw all the wave bullets
|
||||||
|
} else {
|
||||||
|
ctx.lineTo(bullet[i].position.x, bullet[i].position.y)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (mech.wasExtruderOn && mech.isExtruderOn) ctx.lineTo(mech.pos.x + 15 * Math.cos(mech.angle), mech.pos.y + 15 * Math.sin(mech.angle))
|
||||||
|
ctx.stroke();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
37
todo.txt
37
todo.txt
@@ -1,37 +1,8 @@
|
|||||||
******************************************************** NEXT PATCH ********************************************************
|
******************************************************** NEXT PATCH ********************************************************
|
||||||
|
|
||||||
wave beam damage works better vs. high mass mobs
|
extruder: leftovers still exist when field isn't active
|
||||||
also more damage and ammo
|
range and damage are all slightly decreased
|
||||||
|
energy drain is greatly increased
|
||||||
mod plasma torch: extruder - plasma torch ejects a thin hot wire, does more damage, but drains more energy
|
|
||||||
|
|
||||||
mod: Bose Einstein condensate - freeze mobs inside your field
|
|
||||||
pilot wave, negative mass field, time dilation field
|
|
||||||
|
|
||||||
difficulty - after you clear the finalBoss, difficulty increase per level is now lower
|
|
||||||
but, when the finalBoss dies difficulty immediately increases greatly
|
|
||||||
|
|
||||||
difficulty used to work like this:
|
|
||||||
(+1 per level) 0,1,2,3,4,5,6,7,8,9,10, (final boss dies)
|
|
||||||
(+2,3,4 per level) 12,14,16,19,22,25,29,33,37,41, (final boss dies)
|
|
||||||
(+4 per level) 44,48,52,56 ...
|
|
||||||
|
|
||||||
difficulty works like this now:
|
|
||||||
(+1 per level) 0,1,2,3,4,5,6,7,8,9,10, (final boss dies +5)
|
|
||||||
(+2 per level) 17,19,21,23,25,27,29,31,33,35, (final boss dies +5)
|
|
||||||
(+3 per level) 43,46,49,52 ...
|
|
||||||
|
|
||||||
difficulty mode scales these numbers
|
|
||||||
easy: x1, normal: x2, hard: x4, why: x6
|
|
||||||
|
|
||||||
each time difficulty increases:
|
|
||||||
game.dmgScale = 0.38 * game.difficulty //damage done by mobs increases each level
|
|
||||||
b.dmgScale *= 0.93; // your damage goes down
|
|
||||||
game.healScale = 1 / (1 + game.difficulty * 0.06) //healing goes down
|
|
||||||
if (game.accelScale < 5) game.accelScale *= 1.02 //mob acceleration increases each level, but is capped
|
|
||||||
if (game.lookFreqScale > 0.2) game.lookFreqScale *= 0.98 //mob cycles between looks decreases each level, but is capped
|
|
||||||
if (game.CDScale > 0.2) game.CDScale *= 0.97 //mob ability cooldown time decreases each level, but is capped
|
|
||||||
|
|
||||||
|
|
||||||
******************************************************** BUGS ********************************************************
|
******************************************************** BUGS ********************************************************
|
||||||
|
|
||||||
@@ -69,8 +40,6 @@ mod and mob are too similar
|
|||||||
******************************************************** TODO ********************************************************
|
******************************************************** TODO ********************************************************
|
||||||
|
|
||||||
|
|
||||||
mod plasma torch: extruder speed is improved
|
|
||||||
|
|
||||||
color/highlight field or gun mods in selection menu (or custom)
|
color/highlight field or gun mods in selection menu (or custom)
|
||||||
to show that they are special
|
to show that they are special
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user