diff --git a/.DS_Store b/.DS_Store
index dabf208..8fb1b13 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/js/bullet.js b/js/bullet.js
index 4ec9e8f..b2ed575 100644
--- a/js/bullet.js
+++ b/js/bullet.js
@@ -2500,7 +2500,7 @@ const b = {
if (Vector.magnitude(Vector.sub(this.position, player.position)) < 250 && m.immuneCycle < m.cycle) { //give energy
Matter.Body.setAngularVelocity(this, this.spin)
if (this.isUpgraded) {
- m.energy += 0.11
+ m.energy += 0.1
simulation.drawList.push({ //add dmg to draw queue
x: this.position.x,
y: this.position.y,
@@ -3111,7 +3111,7 @@ const b = {
}
}
},
- range: 190 + 60 * tech.isOrbitBotUpgrade, //range is set in bot upgrade too! //150 + (80 + 100 * tech.isOrbitBotUpgrade) * Math.random(), // + 5 * tech.orbitBotCount,
+ range: 190 + 100 * tech.isOrbitBotUpgrade, //range is set in bot upgrade too! //150 + (80 + 100 * tech.isOrbitBotUpgrade) * Math.random(), // + 5 * tech.orbitBotCount,
orbitalSpeed: 0,
phase: 2 * Math.PI * Math.random(),
do() {
diff --git a/js/level.js b/js/level.js
index e17d00c..2a84532 100644
--- a/js/level.js
+++ b/js/level.js
@@ -15,12 +15,12 @@ const level = {
// level.difficultyIncrease(30)
// simulation.zoomScale = 1000;
// simulation.setZoom();
- // m.setField("pilot wave")
+ m.setField("pilot wave")
// b.giveGuns("wave beam")
// b.giveGuns("laser")
// tech.isExplodeRadio = true
// tech.giveTech("pulse")
- // for (let i = 0; i < 3; i++) tech.giveTech("amplitude")
+ tech.giveTech("potential well")
// for (let i = 0; i < 3; i++) tech.giveTech("packet length")
// for (let i = 0; i < 3; i++) tech.giveTech("propagation")
// for (let i = 0; i < 3; i++) tech.giveTech("bound state")
diff --git a/js/player.js b/js/player.js
index 1a2dfcf..c3a10c2 100644
--- a/js/player.js
+++ b/js/player.js
@@ -522,7 +522,7 @@ const m = {
if (tech.isSpeedHarm) dmg *= 1 - Math.min(player.speed * 0.019, 0.60)
if (tech.isSlowFPS) dmg *= 0.8
// if (tech.isPiezo) dmg *= 0.85
- if (tech.isHarmReduce && input.field && m.fieldCDcycle < m.cycle) dmg *= 0.5
+ if (tech.isHarmReduce && input.field && m.fieldCDcycle < m.cycle) dmg *= 0.4
if (tech.isBotArmor) dmg *= 0.94 ** b.totalBots()
if (tech.isHarmArmor && m.lastHarmCycle + 600 > m.cycle) dmg *= 0.33;
if (tech.isNoFireDefense && m.cycle > m.fireCDcycle + 120) dmg *= 0.34
@@ -657,7 +657,7 @@ const m = {
}
if (tech.isEnergyHealth) {
- m.energy -= dmg;
+ m.energy -= dmg * 1.1;
if (m.energy < 0 || isNaN(m.energy)) { //taking deadly damage
if (tech.isDeathAvoid && powerUps.research.count && !tech.isDeathAvoidedThisLevel) {
tech.isDeathAvoidedThisLevel = true
@@ -1827,7 +1827,7 @@ const m = {
},
{
name: "time dilation field",
- description: "use energy to stop time
move and fire while time is stopped",
+ description: "use energy to stop time
move and fire while time is stopped
mobs still do harm while time is stopped",
effect: () => {
// m.fieldMeterColor = "#000"
m.fieldFire = true;
@@ -2205,7 +2205,7 @@ const m = {
// },
{
name: "pilot wave",
- description: "use energy to push blocks with your mouse
field radius decreases out of line of sight
allows tech that normally require other fields",
+ description: "use energy to push blocks with your mouse
field radius decreases out of line of sight
energy drain scales with block mass",
effect: () => {
m.fieldPhase = 0;
m.fieldPosition = {
@@ -2238,14 +2238,14 @@ const m = {
if (!m.fieldOn) { // if field was off, and it starting up, teleport to new mouse location
m.fieldOn = true;
- m.fieldPosition = { //smooth the mouse position, set to starting at player
- x: m.pos.x,
- y: m.pos.y
- }
- // m.fieldPosition = { //smooth the mouse position
- // x: simulation.mouseInGame.x,
- // y: simulation.mouseInGame.y
+ // m.fieldPosition = { //smooth the mouse position, set to starting at player
+ // x: m.pos.x,
+ // y: m.pos.y
// }
+ m.fieldPosition = { //smooth the mouse position, set to mouse's current location
+ x: simulation.mouseInGame.x,
+ y: simulation.mouseInGame.y
+ }
m.lastFieldPosition = { //used to find velocity of field changes
x: m.fieldPosition.x,
y: m.fieldPosition.y
@@ -2255,7 +2255,7 @@ const m = {
x: m.fieldPosition.x,
y: m.fieldPosition.y
}
- const smooth = isInMap ? 0.985 : 0.97;
+ const smooth = isInMap ? 0.985 : 0.96;
m.fieldPosition = { //smooth the mouse position
x: m.fieldPosition.x * smooth + simulation.mouseInGame.x * (1 - smooth),
y: m.fieldPosition.y * smooth + simulation.mouseInGame.y * (1 - smooth),
@@ -2293,7 +2293,7 @@ const m = {
//find mouse velocity
const diff = Vector.sub(m.fieldPosition, m.lastFieldPosition)
const speed = Vector.magnitude(diff)
- const velocity = Vector.mult(Vector.normalise(diff), Math.min(speed, 45)) //limit velocity
+ const velocity = Vector.mult(Vector.normalise(diff), Math.min(speed, 40)) //limit velocity
let radius, radiusSmooth
if (Matter.Query.ray(map, m.fieldPosition, player.position).length) { //is there something block the player's view of the field
radius = 0
@@ -2306,7 +2306,7 @@ const m = {
for (let i = 0, len = body.length; i < len; ++i) {
if (Vector.magnitude(Vector.sub(body[i].position, m.fieldPosition)) < m.fieldRadius && !body[i].isNotHoldable) {
- const DRAIN = speed * body[i].mass * 0.000013
+ const DRAIN = speed * body[i].mass * 0.00001 * (1 + m.energy * m.energy) //drain more energy when you have more energy
if (m.energy > DRAIN) {
m.energy -= DRAIN;
Matter.Body.setVelocity(body[i], velocity); //give block mouse velocity
@@ -2314,7 +2314,7 @@ const m = {
// body[i].force.y -= body[i].mass * simulation.g; //remove gravity effects
//blocks drift towards center of pilot wave
const sub = Vector.sub(m.fieldPosition, body[i].position)
- const unit = Vector.mult(Vector.normalise(sub), 0.00005 * Vector.magnitude(sub))
+ const unit = Vector.mult(Vector.normalise(sub), body[i].mass * tech.pilotForce * Vector.magnitude(sub))
body[i].force.x += unit.x
body[i].force.y += unit.y - body[i].mass * simulation.g //remove gravity effects
} else {
diff --git a/js/spawn.js b/js/spawn.js
index 7246533..257c14a 100644
--- a/js/spawn.js
+++ b/js/spawn.js
@@ -2729,14 +2729,14 @@ const spawn = {
}
};
},
- shieldingBoss(x, y, radius = 210) {
+ shieldingBoss(x, y, radius = 200) {
mobs.spawn(x, y, 9, radius, "rgb(150, 150, 255)");
let me = mob[mob.length - 1];
Matter.Body.rotate(me, Math.random() * 2 * Math.PI)
// me.stroke = "rgb(220,220,255)"
me.isBoss = true;
me.cycle = 0
- me.maxCycles = 120;
+ me.maxCycles = 150;
me.frictionStatic = 0;
me.friction = 0;
me.frictionAir = 0.5;
@@ -2744,7 +2744,7 @@ const spawn = {
spawn.shield(me, x, y, 1);
spawn.spawnOrbitals(me, radius + 50 + 200 * Math.random())
- Matter.Body.setDensity(me, 0.004); //extra dense //normal is 0.001 //makes effective life much larger
+ Matter.Body.setDensity(me, 0.003); //extra dense //normal is 0.001 //makes effective life much larger
me.onDeath = function() {
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
// this.vertices = Matter.Vertices.hull(Matter.Vertices.clockwiseSort(this.vertices)) //helps collisions functions work better after vertex have been changed
@@ -3158,8 +3158,7 @@ const spawn = {
this.checkStatus();
};
- //move shield to the front of the array, so that mob is behind shield graphically
- mob.unshift(me);
+ mob.unshift(me); //move shield to the front of the array, so that mob is behind shield graphically
//swap order of shield and mob, so that mob is behind shield graphically
// mob[mob.length - 1] = mob[mob.length - 2];
diff --git a/js/tech.js b/js/tech.js
index 516b608..c6eed95 100644
--- a/js/tech.js
+++ b/js/tech.js
@@ -1239,7 +1239,7 @@
},
{
name: "orbital-bot upgrade",
- description: "convert all your bots to orbital-bots
increase damage by 200% and radius by 30%",
+ description: "convert all your bots to orbital-bots
increase damage by 200% and radius by 40%",
maxCount: 1,
count: 0,
frequency: 2,
@@ -1298,7 +1298,7 @@
},
{
name: "dynamo-bot upgrade",
- description: "convert your bots to dynamo-bots
increase regen to 22 energy per second",
+ description: "convert your bots to dynamo-bots
increase regen to 20 energy per second",
maxCount: 1,
count: 0,
frequency: 2,
@@ -4848,7 +4848,7 @@
},
{
name: "degenerate matter",
- description: "reduce harm by 50% while your field is active",
+ description: "reduce harm by 60% while your field is active",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -5005,7 +5005,7 @@
count: 0,
frequency: 2,
allowed() {
- return m.fieldUpgrades[m.fieldMode].name === "time dilation field" || m.fieldUpgrades[m.fieldMode].name === "pilot wave"
+ return m.fieldUpgrades[m.fieldMode].name === "time dilation field" // || m.fieldUpgrades[m.fieldMode].name === "pilot wave"
},
requires: "time dilation field",
effect() {
@@ -5029,7 +5029,7 @@
count: 0,
frequency: 2,
allowed() {
- return (m.fieldUpgrades[m.fieldMode].name === "time dilation field" || m.fieldUpgrades[m.fieldMode].name === "pilot wave") && tech.energyRegen !== 0;
+ return (m.fieldUpgrades[m.fieldMode].name === "time dilation field") && tech.energyRegen !== 0; //|| m.fieldUpgrades[m.fieldMode].name === "pilot wave"
},
requires: "time dilation field",
effect: () => {
@@ -5097,6 +5097,24 @@
b.setFireCD();
}
},
+ {
+ name: "potential well",
+ description: "the force that pilot wave generates
to trap blocks is greatly increased",
+ isFieldTech: true,
+ maxCount: 1,
+ count: 0,
+ frequency: 2,
+ allowed() {
+ return m.fieldUpgrades[m.fieldMode].name === "pilot wave"
+ },
+ requires: "metamaterial cloaking",
+ effect() {
+ tech.pilotForce = 0.0006
+ },
+ remove() {
+ tech.pilotForce = 0.00002
+ }
+ },
{
name: "cosmic string",
description: "stun and do radioactive damage to mobs
if you tunnel through them with a wormhole",
diff --git a/todo.txt b/todo.txt
index 3a888e5..a5d746f 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,15 +1,13 @@
******************************************************** NEXT PATCH ********************************************************
-spammable methods of energy generation no longer work while immune to damage
- rail-gun, flip-flop, dynamo-bots, ice-IX, energy siphon
+pilot is back to it's previous speed, and spawning at mouse
+pilot wave uses 50% less energy when you are low on energy, but it uses more energy then normal when you have more energy
+pilot wave tech
+ lost: time crystals, Lorentz transformation, annihilation
+ gained: degenerate matter - 60% harm reduction while field is active
+tech: potential well - blocks in pilot wave drift into the center of the field with a much higher force
+ this lets you hold larger blocks and flick them much faster
-pilot wave follows the mouse a bit slower
- (I think this is actually a buff, because blocks stay in the field better)
-a newly clicked pilot wave now begins at the player, not the mouse
- (this is just because it looks cool)
-
-tech: many worlds, now only spawns 1 tech
- (use to spawn a heal, ammo, research too)
******************************************************** BUGS ********************************************************
@@ -57,6 +55,13 @@ is there a way to check if the player is stuck inside the map or block
******************************************************** TODO ********************************************************
+Make ice crystal + rivet gun/needle gun launch freezing rivets/needles with increased energy drain
+
+WIMPS are cool, but the 2-3 research isn't enough incentive
+
+tech: pilot wave is projected from the player, not the mouse
+ give pilot wave a buff?
+
tech: MACHO - spawn a mob like WIMP that follows you and gives you a bonus
if it touches WIMP they explode