diff --git a/.DS_Store b/.DS_Store index 2eb844f..82fe577 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/js/bullet.js b/js/bullet.js index 3bde08b..9af9d00 100644 --- a/js/bullet.js +++ b/js/bullet.js @@ -3606,7 +3606,7 @@ const b = { } }, { name: "wave beam", - description: "emit a sine wave of oscillating particles
propagates through walls", + description: "emit a packet of oscillating particles
that propagate through walls", ammo: 0, ammoPack: 65, have: false, @@ -3622,19 +3622,18 @@ const b = { } }, fire() { - const SPEED = 10 for (let i = 0; i < 2; i++) { const me = bullet.length; bullet[me] = Bodies.polygon(m.pos.x + 25 * Math.cos(m.angle), m.pos.y + 25 * Math.sin(m.angle), 7, 3.5, { angle: m.angle, cycle: -0.5, - endCycle: simulation.cycle + Math.floor((tech.waveReflections ? Infinity : 150) * tech.isBulletsLastLonger), // - this.packetCounter + tech.wavePacketLength, //- this.packetCounter + this.packetLength makes the entire packet go away at the same time + endCycle: simulation.cycle + Math.floor((tech.waveReflections ? Infinity : 120) * tech.isBulletsLastLonger), // - this.packetCounter + tech.wavePacketLength, //- this.packetCounter + this.packetLength makes the entire packet go away at the same time inertia: Infinity, frictionAir: 0, slow: 0, amplitude: (m.crouch ? 10 : 20) * Math.sin(this.packetCounter * 0.088) * ((i % 2) ? (tech.isImaginaryWave ? 1 : -1) : 1), minDmgSpeed: 0, - dmg: b.dmgScale * 0.5 * (tech.isImaginaryWave ? 3 : 1) * (0.75 + 0.25 * tech.wavePacketLength / 36), //control damage also when you divide by mob.mass + dmg: b.dmgScale * tech.waveBeamDamage * (tech.isImaginaryWave ? 3 : 1) * (0.75 + 0.25 * tech.wavePacketLength / 36), //control damage also when you divide by mob.mass classType: "bullet", collisionFilter: { category: 0, @@ -3653,27 +3652,10 @@ const b = { slowCheck = waveSpeedBody Matter.Body.setPosition(this, Vector.add(this.position, q[0].velocity)) //move with the medium } - // else { // check if inside a mob - // q = Matter.Query.point(mob, this.position) - // for (let i = 0; i < q.length; i++) { - // slowCheck = 0.3; - // Matter.Body.setPosition(this, Vector.add(this.position, q[i].velocity)) //move with the medium - // let dmg = this.dmg / Math.min(10, q[i].mass) - // q[i].damage(dmg); - // q[i].foundPlayer(); - // simulation.drawList.push({ //add dmg to draw queue - // x: this.position.x, - // y: this.position.y, - // radius: Math.log(2 * dmg + 1.1) * 40, - // color: 'rgba(0,0,0,0.4)', - // time: simulation.drawTime - // }); - // } - // } } if (slowCheck !== this.slow) { //toggle velocity based on inside and outside status change this.slow = slowCheck - Matter.Body.setVelocity(this, Vector.mult(Vector.normalise(this.velocity), SPEED * slowCheck)); + Matter.Body.setVelocity(this, Vector.mult(Vector.normalise(this.velocity), tech.waveBeamSpeed * slowCheck)); } q = Matter.Query.point(mob, this.position) // check if inside a mob for (let i = 0; i < q.length; i++) { @@ -3705,7 +3687,7 @@ const b = { waveSpeedBody = 1.9 } if (tech.waveReflections) { - const range = 120 + const range = 100 bullet[me].reflectCycle = range bullet[me].do = function() { if (!m.isBodiesAsleep) { @@ -3728,11 +3710,10 @@ const b = { } World.add(engine.world, bullet[me]); //add bullet to world Matter.Body.setVelocity(bullet[me], { - x: SPEED * Math.cos(m.angle), - y: SPEED * Math.sin(m.angle) + x: tech.waveBeamSpeed * Math.cos(m.angle), + y: tech.waveBeamSpeed * Math.sin(m.angle) }); const transverse = Vector.normalise(Vector.perp(bullet[me].velocity)) - // const transverse = Vector.normalise(player.velocity) } //fire some of bullets then delay for a while this.packetCounter++ diff --git a/js/level.js b/js/level.js index 572b86d..3d63a39 100644 --- a/js/level.js +++ b/js/level.js @@ -20,11 +20,11 @@ const level = { // b.giveGuns("laser") // tech.isExplodeRadio = true // for (let i = 0; i < 9; i++) tech.giveTech("auto-loading heuristics") - // for (let i = 0; i < 2; i++) tech.giveTech("bound state") + // for (let i = 0; i < 9; i++) tech.giveTech("bound state") // for (let i = 0; i < 9; i++) tech.giveTech("jabbering") // tech.giveTech("phase velocity") - // tech.giveTech("imaginary number") - // tech.giveTech("Bayesian statistics") + // tech.giveTech("imaginary") + // for (let i = 0; i < 9; i++) tech.giveTech("stationary action") // tech.isExplodeRadio = true; // tech.isMineSentry = true diff --git a/js/tech.js b/js/tech.js index 97d7940..054fb9c 100644 --- a/js/tech.js +++ b/js/tech.js @@ -148,7 +148,7 @@ if (tech.isOneBullet && bullet.length - b.totalBots() === 1) dmg *= 2 //3 / Math.sqrt(bullet.length + 1) //testing this tech out, seems to have too many negatives though ... if (tech.isFlipFlopDamage && tech.isFlipFlopOn) dmg *= 1.45 if (tech.isAnthropicDamage && tech.isDeathAvoidedThisLevel) dmg *= 2.3703599 - if (tech.isDamageAfterKill) dmg *= (m.lastKillCycle + 300 > m.cycle) ? 1.4 : 0.85 + if (tech.isDamageAfterKill) dmg *= (m.lastKillCycle + 300 > m.cycle) ? 1.5 : 0.85 if (tech.isTechDamage) dmg *= 1.9 if (tech.isDupDamage) dmg *= 1 + Math.min(1, tech.duplicationChance()) if (tech.isLowEnergyDamage) dmg *= 1 + Math.max(0, 1 - m.energy) * 0.5 @@ -2197,7 +2197,7 @@ }, { name: "dormancy", - description: "if a mob has died in the last 5 seconds
increase damage by 40% else decrease it by 15%", + description: "if a mob has died in the last 5 seconds
increase damage by 50% else decrease it by 15%", maxCount: 1, count: 0, frequency: 2, @@ -3614,7 +3614,7 @@ }, { name: "jabbering", - description: "wave beam generates another packet
wave damage is increased by 25%", + description: "the wave beam generates another packet
wave damage is increased by 25%", isGunTech: true, maxCount: 9, count: 0, @@ -3649,6 +3649,26 @@ } }, + { + name: "stationary action", + description: "the wave beam propagates 25% slower
wave damage is increased by 40%", + isGunTech: true, + maxCount: 9, + count: 0, + frequency: 2, + allowed() { + return tech.haveGunCheck("wave beam") + }, + requires: "wave beam", + effect() { + tech.waveBeamSpeed *= 0.75; + tech.waveBeamDamage += 0.5 * 0.4 + }, + remove() { + tech.waveBeamSpeed = 10; + tech.waveBeamDamage = 0.5 + } + }, { name: "bound state", description: "instead of dissipating normally
wave beam bullets reflect backwards 2 times", @@ -3668,10 +3688,10 @@ } }, { - name: "imaginary number", - description: "the wave beam is limited to a single strand
damage is increased by 300%", + name: "imaginary", + description: "the wave beam is limited to a single strand
wave damage is increased by 300%", isGunTech: true, - maxCount: 9, + maxCount: 1, count: 0, frequency: 2, allowed() { @@ -6172,7 +6192,7 @@ }, requires: "at least 4 research", effect() { - for (let i = 0; i < powerUps.research.count; i++) powerUps.spawn(m.pos.x + 60 * (Math.random() - 0.5), m.pos.y + 60 * (Math.random() - 0.5), "research"); + for (let i = 0; i < powerUps.research.count; i++) powerUps.spawn(m.pos.x + 160 * (Math.random() - 0.5), m.pos.y + 160 * (Math.random() - 0.5), "research"); powerUps.research.count = 0 }, remove() {} @@ -6523,5 +6543,6 @@ blockingIce: null, isPhaseVelocity: null, wavePacketLength: null, - isImaginaryWave: null + isImaginaryWave: null, + waveBeamSpeed: null } \ No newline at end of file diff --git a/todo.txt b/todo.txt index 8c959db..8f79733 100644 --- a/todo.txt +++ b/todo.txt @@ -1,23 +1,11 @@ ******************************************************** NEXT PATCH ******************************************************** -community level crossfire has been nerfed a bit - -**wave beam rework** - -removed tech: wave packet (this is now the default mode of wave beam) -tech: imaginary number - 50% more damage, but the wave is a single strand - -tech: bound state - wave bullets reflect backwards 2 times - now stacks 9 times and works with phase velocity - -tech: jabbering - wave beam fires another packet if you hold fire - also increases wave damage by 25% +some wave beam bug fixes and balance +tech: stationary action - slower wave beam but more damage ******************************************************** BUGS ******************************************************** -wave beam shouldn't hit level.boost - increase the width on the grid by a few pixels so that very small screens or people with odd fonts don't goto a new line you have to press z once to get copy to work for simulation.enableConstructMode() sometimes @@ -64,13 +52,6 @@ nail-gun, or .... Tech: "Quantum Tunneling" Foam travels through blocks and walls 50% faster. -wave beam needs another tech - bullets slowly get bigger? - also increase collision detection range - reduce ammo, increase damage - longitudinal vibration, increase damage - - make a tech that improves all charge guns for: pulse, foam, rail gun effect: