${localSettings.difficultyCompleted[1] ? "⚆" : " "}
@@ -1446,18 +1437,16 @@ const powerUps = {
},
},
spawnDelay(type, count, delay = 2) {
+ const lastHarmCycle = m.lastHarmCycle //stop releasing power ups if you take damage
count *= delay
- // let totalSpawned = 0
let cycle = () => {
if (count > 0) {
- if (m.alive) requestAnimationFrame(cycle);
- if (!simulation.paused && !simulation.isChoosing) { //&& !(simulation.cycle % 2)
+ if (m.alive && lastHarmCycle === m.lastHarmCycle) requestAnimationFrame(cycle);
+ if (!simulation.paused && !simulation.isChoosing && powerUp.length < 300) { //&& !(simulation.cycle % 2)
count--
if (!(count % delay)) {
const where = { x: m.pos.x + 50 * (Math.random() - 0.5), y: m.pos.y + 50 * (Math.random() - 0.5) }
powerUps.spawn(where.x, where.y, type);
- // totalSpawned++
- // if (!(totalSpawned % 10)) delay++
}
}
}
diff --git a/js/spawn.js b/js/spawn.js
index ea1c27b..1e3c9ac 100644
--- a/js/spawn.js
+++ b/js/spawn.js
@@ -5915,7 +5915,6 @@ const spawn = {
me.memory = 900;
me.delay = 60
me.cd = 0;
- spawn.shield(me, x, y, 1); // bad for stealth
me.onHit = function () {
if (this.cd < simulation.cycle) {
this.cd = simulation.cycle + this.delay;
diff --git a/js/tech.js b/js/tech.js
index e133801..e956a7b 100644
--- a/js/tech.js
+++ b/js/tech.js
@@ -281,7 +281,7 @@ const tech = {
},
tech: [{
name: "tungsten carbide",
- description: "
+300 maximum
healthlose health after hard
landings",
+ description: "
+400 maximum
healthlose health after hard
landings",
maxCount: 1,
count: 0,
frequency: 1,
@@ -292,14 +292,12 @@ const tech = {
},
requires: "not skin",
effect() {
- tech.hardLanding = 70
tech.isFallingDamage = true;
m.setMaxHealth();
m.addHealth(3 / simulation.healScale)
m.skin.tungsten()
},
remove() {
- tech.hardLanding = 130
tech.isFallingDamage = false;
m.setMaxHealth();
if (this.count) m.resetSkin();
@@ -307,7 +305,7 @@ const tech = {
},
{
name: "nitinol",
- description: "
1.3x movement and
jumping0.8x damage taken",
+ description: "
1.3x movement and
jumping0.17 seconds of
coyote time",
maxCount: 1,
count: 0,
frequency: 1,
@@ -319,16 +317,9 @@ const tech = {
requires: "not skinned",
effect() {
m.skin.mech();
- tech.hardLanding = 110
- tech.squirrelFx += 0.4;
- tech.squirrelJump += 0.16;
m.setMovement()
},
remove() {
- tech.hardLanding = 130
- tech.squirrelFx = 1;
- tech.squirrelJump = 1;
- m.setMovement()
if (this.count) m.resetSkin();
}
},
@@ -431,14 +422,14 @@ const tech = {
},
{
name: "mass-energy equivalence",
- description: `use ${powerUps.orb.research(2)}
energy protects you instead of
health`,
+ description: `
energy protects you instead of
health`,
maxCount: 1,
count: 0,
frequency: 1,
frequencyDefault: 1,
isSkin: true,
allowed() {
- return (powerUps.research.count > 1 || build.isExperimentSelection) && !m.isAltSkin && !tech.isPiezo && !tech.isRewindAvoidDeath && !tech.isAnnihilation //&& !tech.isAmmoFromHealth && !tech.isRewindGun
+ return !m.isAltSkin && !tech.isPiezo && !tech.isRewindAvoidDeath && !tech.isAnnihilation //&& !tech.isAmmoFromHealth && !tech.isRewindGun
},
requires: "not piezoelectricity, CPT, annihilation",
effect() {
@@ -451,13 +442,9 @@ const tech = {
m.displayHealth();
m.lastCalculatedDefense = 0 //this triggers a redraw of the defense bar
m.skin.energy();
- for (let i = 0; i < 2; i++) {
- if (powerUps.research.count > 0) powerUps.research.changeRerolls(-1)
- }
},
remove() {
if (this.count > 0) {
- powerUps.research.changeRerolls(2)
tech.isEnergyHealth = false;
document.getElementById("health").style.display = "inline"
document.getElementById("health-bg").style.display = "inline"
@@ -840,7 +827,7 @@ const tech = {
{
name: "supply chain",
descriptionFunction() {
- return `spawn a
gunspawn ${powerUps.orb.ammo(1)} equal to current
ammo`
+ return `spawn a
gunspawn ${powerUps.orb.ammo(1)} equal to all your active
gun's ammo`
},
maxCount: 9,
count: 0,
@@ -852,36 +839,14 @@ const tech = {
},
requires: "",
effect() {
- //count ammo
- let ammoCount = 0
- for (let i = 0; i < b.guns.length; i++) {
- if (b.guns[i].have && b.guns[i].ammo !== Infinity) ammoCount += b.guns[i].ammo / b.guns[i].ammoPack
+ let ammoCount = 0 //count ammo
+ if (b.activeGun && b.activeGun !== undefined && b.guns[b.activeGun].have && b.guns[b.activeGun].ammo !== Infinity) {
+ ammoCount += b.guns[b.activeGun].ammo / b.guns[b.activeGun].ammoPack
}
powerUps.spawnDelay("ammo", Math.ceil(ammoCount))
powerUps.spawn(m.pos.x, m.pos.y, "gun");
- // powerUps.spawnDelay("coupling", m.coupling * 2)
- // for (let i = 0; i < b.guns.length; i++) {
- // if (b.guns[i].have) b.guns[i].ammo = Math.floor(2 * b.guns[i].ammo)
- // }
- // simulation.makeGunHUD();
- // for (let i = 0, len = tech.tech.length; i < len; i++) {
- // if (tech.tech[i].name === "applied science") tech.tech[i].frequency *= 4
- // }
},
- remove() {
- // if (this.count) {
- // m.couplingChange(-this.count * 10)
- // for (let j = 0; j < this.count; j++) {
- // for (let i = 0; i < b.guns.length; i++) {
- // if (b.guns[i].have) b.guns[i].ammo = Math.floor(0.5 * b.guns[i].ammo)
- // }
- // }
- // simulation.makeGunHUD();
- // for (let i = 0, len = tech.tech.length; i < len; i++) {
- // if (tech.tech[i].name === "applied science") tech.tech[i].frequency = 2
- // }
- // }
- }
+ remove() { }
},
{
name: "marginal utility",
@@ -1082,35 +1047,6 @@ const tech = {
tech.restDamage = 1;
}
},
-
- // {
- // name: "coyote",
- // description: "",
- // maxCount: 1,
- // count: 0,
- // frequency: 1,
- // frequencyDefault: 1,
- // allowed() { return true },
- // requires: "",
- // effect() { // good with melee builds, content skipping builds
- // tech.coyoteTime = 120
- // // simulation.gravity = function() {
- // // function addGravity(bodies, magnitude) {
- // // for (var i = 0; i < bodies.length; i++) {
- // // bodies[i].force.y += bodies[i].mass * magnitude;
- // // }
- // // }
- // // if (!m.isBodiesAsleep) {
- // // addGravity(powerUp, simulation.g);
- // // addGravity(body, simulation.g);
- // // }
- // // player.force.y += player.mass * simulation.g
- // // }
- // },
- // remove() {
- // tech.coyoteTime = 5
- // }
- // },
{
name: "Newtons 1st law",
descriptionFunction() {
@@ -3756,6 +3692,7 @@ const tech = {
count: 0,
frequency: 1,
frequencyDefault: 1,
+ isBadRandomOption: true,
allowed() {
return true
},
@@ -7964,6 +7901,26 @@ const tech = {
tech.isMassEnergy = false;
}
},
+ // {
+ // name: "working mass",
+ // // description: "after jumping jump again in
midairdouble jumping requires
50% of current
energydouble jumping boosts
speed",
+ // description: "",
+ // isFieldTech: true,
+ // maxCount: 1,
+ // count: 0,
+ // frequency: 2,
+ // frequencyDefault: 2,
+ // allowed() {
+ // return m.fieldMode === 4
+ // },
+ // requires: "molecular assembler",
+ // effect() {
+ // tech.isDoubleJump = true
+ // },
+ // remove() {
+ // tech.isDoubleJump = false
+ // }
+ // },
{
name: "electric generator",
description: "after
deflecting mobs
molecular assembler generates
+50 energy",
@@ -10981,9 +10938,9 @@ const tech = {
isInstant: true,
isJunk: true,
allowed() {
- return level.levelsCleared < 6
+ return (level.levelsCleared < 5)
},
- requires: "before level 6",
+ requires: "before level 5",
effect() {
powerUps.spawn(m.pos.x, m.pos.y, "difficulty");
},
@@ -11559,7 +11516,6 @@ const tech = {
isAcidDmg: null,
isAnnihilation: null,
largerHeals: null,
- squirrelFx: null,
isCrit: null,
isLowHealthDmg: null,
isLowHealthDefense: null,
@@ -11623,7 +11579,6 @@ const tech = {
isNailShot: null,
slowFire: null,
fastTime: null,
- squirrelJump: null,
isFastRadiation: null,
isAmmoForGun: null,
isRapidPulse: null,
@@ -11825,13 +11780,10 @@ const tech = {
isTimeCrystals: null,
isGroundState: null,
isRailGun: null,
- // isGrapple: null,
- // isImmuneGrapple: null,
isDronesTravel: null,
isTechDebt: null,
isPlasmaBall: null,
plasmaDischarge: null,
- coyoteTime: null,
missileFireCD: null,
isBotField: null,
isFoamBall: null,
@@ -11871,7 +11823,6 @@ const tech = {
collidePowerUps: null,
isDilate: null,
isDiaphragm: null,
- hardLanding: null,
isNoGroundDamage: null,
isSuperBounce: null,
isDivisor: null,
@@ -11897,4 +11848,5 @@ const tech = {
interestRate: null,
isImmunityDamage: null,
isMobDeathImmunity: null,
+ isDoubleJump: null,
}
\ No newline at end of file
diff --git a/style.css b/style.css
index 581b95c..1146a25 100644
--- a/style.css
+++ b/style.css
@@ -282,11 +282,15 @@ summary {
/* Firefox */
}
-.pause-console {
- padding: 10px;
- margin: 5px;
- border-radius: 10px;
-}
+/* .pause-console { */
+/* padding: 10px; */
+/* margin: 10px; */
+/* border-radius: 10px; */
+/* line-height: 140%; */
+/* font-size: 1em; */
+/* padding: 10px; */
+/* margin: -5px 0; */
+/* } */
#pause-grid-left::-webkit-scrollbar {
display: none;
@@ -1544,6 +1548,7 @@ summary {
height: 26.3rem;
width: 2rem;
writing-mode: vertical-lr;
+ direction: ltr;
}
.left-column {
@@ -1564,6 +1569,13 @@ summary {
padding: 10px;
}
+.pause-difficulty-row {
+ line-height: 140%;
+ font-size: 1em;
+ padding: 10px;
+ margin: -5px 0;
+}
+
#constraint-1 {
background-color: hsl(240, 18%, 95%);
border-radius: 7px 7px 0 0;
@@ -1633,4 +1645,12 @@ summary {
margin-top: 10px;
color: #333;
border-radius: 5px;
+}
+
+.pause-details {
+ background-color: hsl(240, 18%, 93%);
+ border: 1px solid #333;
+ border-radius: 5px;
+ padding: 5px;
+ margin-bottom: 10px;
}
\ No newline at end of file
diff --git a/todo.txt b/todo.txt
index 3cf5524..f4bd356 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,22 +1,17 @@
******************************************************** NEXT PATCH **************************************************
-difficulty rework
- difficulty adjusted through a power up on the initial level
- difficulty parameters are more precisely explained
- JUNK tech: difficulty - spawns a difficulty power up (only works before level 6)
-
-bots no longer benefit from increased fireRate
-shields have a chance spawn on almost all mobs (but not stealth mobs)
-level exit door animation is 33% faster
-power ups have fewer sides. It might improve game performance, but I can't tell the difference.
-1.15x base wave bullets damage (bots, particles, and phonon)
-metamaterial absorber 25->30% chance to get power ups from mobs left alive
-apomixis is now a JUNK tech, and it requires duplication > 99%
-pilot wave field 2->3 extra choices
-plasma torch slows mobs more, and don't push mobs back as much
- fixed bug where plasma torch didn't get tech degenerate matter
-laserLayerBoss and layerLayer do 33% less damage
-mines aren't triggered by invulnerable mobs
+you can now jump off mobs while invulnerable
+ includes time dilated
+pause display text updated with details menus
+difficulty parameters
+ 0.82->0.84x damage done per level
+ 1.25->1.23x damage taken per level
+tungsten carbide 300->400 health, but 0.08->0.02 seconds of coyote time and longer crouch time
+nitinol 0.08->0.17 seconds of coyote time and much less crouching on hard landings, but 0.8->1 damage taken
+mass-energy equivalence no longer costs 2 research
+long power up spawns, like from interest or supply chain:
+ will pause new spawns until total power ups are below 300 to reduce lag
+ stop spawning if you take damage
bug fixes
@@ -34,7 +29,7 @@ add more randomize sub level map content
left/right sides of lock
small lab rooms
-powerful synergies
+list of powerful synergies
CPT + high energy regen
research + bot fabrication + ersatz bots + various bot upgrades
harpoon + high fire rate + alternator + time dilation
@@ -46,34 +41,33 @@ powerful synergies
*********************************************************** TODO *****************************************************
+tech: working mass - double jump
+ cost flat energy not a %
+ field Tech for molecular assembler and print and throw a block down on 2nd jump
+ remove block after time or keep it around?
+ credit to TNTiger17 (although I'm not looking for more code contributions)
+
difficulty rework: explicit changes to the game to increase difficulty
UI -
- add difficulty display to pause menu
- update pause menu text to match opening screen menu
- just make it a square like field or gun on left pause column
- add a wire attached to difficulty power up
- like the one attached to player, but thinner
- add new difficulty to game code
- todo
- check for any undocumented side effects
- heal power ups (small effect)
- (remove, keep, or add to parameters)
- balance testing log:
- difficultyMode=5 died on level 5 with a good drone build, seemed similar balance to old why mode, maybe slightly harder...
- difficultyMode=2 won with a good spore build, seemed similar balance to old normal mode
+ add a wire attached to difficulty power up
+ like the one attached to player, but thinner
tokamak synergy tech
tech: stellarator - after firing a block with tokamak, heal (scale heal amount with block mass?)
tech: inertial confinement - while charging tokamak you can fly, and invulnerable
but energy drains
+after getting a new tech,gun,field draw that tech where it would be in a pause menu for a second seconds
+ this makes it easier for people to see what's going on
+
bullets should trigger shrinking platforms level element?
level element - player activated elevators
could be fast and throw player
could just rise up slow (slow might have a bad jerky animation)
-tech: super balls split after 3 seconds, but they fire with less speed
+tech: super balls split after 3 seconds
+ but they lost 50% less time
buff plasma torch
buff plasma tech?
@@ -1305,6 +1299,7 @@ possible names for tech
equivalence principle - gravity and acceleration are the same
Casimir effect - attractive force between two close conductive plates
difference engine - early calculator/computer
+ cyanoacrylate - superglue use for a slowing effect?
******************************************************** IMAGES ********************************************************