diff --git a/.DS_Store b/.DS_Store
index ecf6676..f15ea94 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/js/bullet.js b/js/bullet.js
index c92b548..8f69c0f 100644
--- a/js/bullet.js
+++ b/js/bullet.js
@@ -3177,7 +3177,7 @@ const b = {
// **************************************************************************************************
guns: [{
name: "nail gun",
- description: "use compressed air to fire a stream of nails
delay after firing decreases as you shoot",
+ description: "use compressed air to fire a stream of nails
delay after firing decreases as you shoot",
ammo: 0,
ammoPack: 45,
defaultAmmoPack: 45,
@@ -3608,12 +3608,12 @@ const b = {
}
}, {
name: "wave beam",
- description: "emit a wave packet of oscillating particles
that propagate through solids",
+ description: "emit a wave packet of oscillating particles
that propagates through solids",
ammo: 0,
- ammoPack: 80,
+ ammoPack: 100,
have: false,
wavePacketCycle: 0,
- delay: 40,
+ delay: 60,
do() {
if (this.wavePacketCycle && !input.fire) {
this.wavePacketCycle = 0;
@@ -3659,18 +3659,19 @@ const b = {
}
q = Matter.Query.point(mob, this.position) // check if inside a mob
for (let i = 0; i < q.length; i++) {
- let dmg = this.dmg / Math.min(10, q[i].mass)
+ let dmg = this.dmg // / Math.min(10, q[i].mass)
q[i].damage(dmg);
q[i].foundPlayer();
+ Matter.Body.setVelocity(q[i], Vector.mult(q[i].velocity, 0.9))
- //this draw circle had to be remove to reduce lag
- // 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
- // });
+ this.endCycle = 0; //bullet ends cycle after doing damage
+ 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
+ });
}
},
wiggle() {
diff --git a/js/level.js b/js/level.js
index 99d5d94..da69ac0 100644
--- a/js/level.js
+++ b/js/level.js
@@ -16,7 +16,7 @@ const level = {
// simulation.zoomScale = 1000;
// simulation.setZoom();
// m.setField("metamaterial cloaking")
- b.giveGuns("wave beam")
+ // b.giveGuns("wave beam")
// b.giveGuns("laser")
// tech.isExplodeRadio = true
// tech.giveTech("pulse")
@@ -25,7 +25,7 @@ const level = {
// for (let i = 0; i < 3; i++) tech.giveTech("propagation")
// for (let i = 0; i < 3; i++) tech.giveTech("bound state")
// for (let i = 0; i < 9; i++) tech.giveTech("slow light")
- tech.giveTech("metastability")
+ // tech.giveTech("metastability")
level.intro(); //starting level
// level.testing(); //not in rotation
diff --git a/js/tech.js b/js/tech.js
index 286a438..1b2e9e2 100644
--- a/js/tech.js
+++ b/js/tech.js
@@ -1738,7 +1738,7 @@
frequency: 4,
frequencyDefault: 4,
allowed() {
- return tech.isFlipFlopEnergy || tech.isFlipFlopDamage || tech.isFlipFlopHarm
+ return tech.isFlipFlopEnergy || tech.isFlipFlopDamage || tech.isFlipFlopHarm || tech.relayIce
},
requires: "2 ON/OFF techs",
effect() {
@@ -1965,9 +1965,9 @@
count: 0,
frequency: 2,
allowed() {
- return (tech.iceEnergy || tech.isWormholeEnergy || tech.isPiezo || tech.isRailEnergyGain) && tech.energyRegen !== 0.004 && !tech.isEnergyHealth
+ return (tech.iceEnergy || tech.isWormholeEnergy || tech.isPiezo || tech.isRailEnergyGain || tech.energySiphon || tech.isEnergyRecovery || tech.dynamoBotCount || tech.isFlipFlopEnergy) && tech.energyRegen !== 0.004 && !tech.isEnergyHealth
},
- requires: "piezoelectricity, Penrose, half-wave, or thermoelectric, but not time crystals",
+ requires: "a way to regen extra energy, but not time crystals",
effect: () => {
tech.energyRegen = 0;
m.fieldRegen = tech.energyRegen;
@@ -2012,7 +2012,7 @@
description: "each heal power up you collect
increases your maximum energy by 5",
maxCount: 1,
count: 0,
- frequency: 2,
+ frequency: 3,
allowed() {
return tech.isEnergyHealth && !tech.isNoHeals
},
@@ -3686,25 +3686,7 @@
},
{
name: "bound state",
- description: "instead of dissipating normally
wave packets reflect backwards 1 times",
- isGunTech: true,
- maxCount: 9,
- count: 0,
- frequency: 2,
- allowed() {
- return tech.haveGunCheck("wave beam")
- },
- requires: "wave beam",
- effect() {
- tech.waveReflections++
- },
- remove() {
- tech.waveReflections = 1
- }
- },
- {
- name: "packet length",
- description: "wave packet length and duration
is increased by 40%", // description: "holding fire allows the wave beam to emits a second packet
at zero ammo cost",
+ description: "instead of dissipating normally
wave packets reflect backwards 2 times",
isGunTech: true,
maxCount: 3,
count: 0,
@@ -3714,7 +3696,25 @@
},
requires: "wave beam",
effect() {
- const scale = 1.4 - 0.025 * this.count
+ tech.waveReflections += 2
+ },
+ remove() {
+ tech.waveReflections = 1
+ }
+ },
+ {
+ name: "packet length",
+ description: "wave packet length and duration
is increased by 50%", // description: "holding fire allows the wave beam to emits a second packet
at zero ammo cost",
+ isGunTech: true,
+ maxCount: 3,
+ count: 0,
+ frequency: 2,
+ allowed() {
+ return tech.haveGunCheck("wave beam")
+ },
+ requires: "wave beam",
+ effect() {
+ const scale = 1.5 - 0.025 * this.count
tech.wavePacketLength *= scale
tech.wavePacketFrequency /= scale
tech.waveLengthRange *= Math.sqrt(scale)
@@ -3727,7 +3727,7 @@
},
{
name: "amplitude",
- description: "wave packet amplitude is 33% higher
wave damage is increased by 33%",
+ description: "wave packet amplitude is 33% higher
wave damage is increased by 50%",
isGunTech: true,
maxCount: 3,
count: 0,
@@ -3747,7 +3747,7 @@
},
{
name: "propagation",
- description: "wave packet propagation speed is 30% slower
wave damage is increased by 50%",
+ description: "wave packet propagation speed is 25% slower
wave damage is increased by 50%",
isGunTech: true,
maxCount: 9,
count: 0,
@@ -3757,7 +3757,7 @@
},
requires: "wave beam",
effect() {
- tech.waveBeamSpeed *= 0.7;
+ tech.waveBeamSpeed *= 0.75;
tech.waveBeamDamage += 1.3 * 0.5
},
remove() {
@@ -6025,7 +6025,7 @@
},
{
name: "diegesis",
- description: "indicate gun fire delay
through a rotation of your head",
+ description: "indicate gun fire delay
through a rotation of your head",
maxCount: 1,
count: 0,
frequency: 0,
diff --git a/todo.txt b/todo.txt
index 26c1ceb..d6feec7 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,7 +1,6 @@
******************************************************** NEXT PATCH ********************************************************
-tech: metastability - 20% dup chance, but duplicated powers up eventually explode
-nerfed tech: electric reactive armor 6% (was 7%) explosion damage reduction for every 10 energy you currently have
+
******************************************************** BUGS ********************************************************
@@ -39,17 +38,16 @@ is there a way to check if the player is stuck inside the map or block
******************************************************** TODO ********************************************************
-make wave packets a tech
- use the tech that makes the wave packets longer?
- default wave can be two oscillating waves
+tech: a slow moving immortal mob follows you forever
+ spawns at exit and just slowing moves towards player
+ benefit:
+tech: use the ability for power ups to have custom code
+ attracted to player
+ attracted to other power ups
+ explode if they touch?
+
make beating the final boss without undefined feel like winning, not like dieing
-
-try making more things const to change the color to purple in simulation loop
-
-power ups disappear after 3-5 seconds
- only apply to drops from killing mobs
- +duplication 20%
tech: picking up heal power ups when at full health does harm equal to the heal values
benefit on pick up: