diff --git a/.DS_Store b/.DS_Store
index 2c71cdf..46287fc 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/js/bullet.js b/js/bullet.js
index fb46c60..28afa37 100644
--- a/js/bullet.js
+++ b/js/bullet.js
@@ -3308,7 +3308,7 @@ const b = {
if (tech.isNailRadiation) {
mobs.statusDoT(who, tech.isFastRadiation ? 12 : 3, tech.isSlowRadiation ? 240 : (tech.isFastRadiation ? 30 : 120)) // one tick every 30 cycles
} else {
- let dmg = b.dmgScale * 4.5
+ let dmg = b.dmgScale * 5
if (tech.isCrit && who.isStunned) dmg *= 4
who.damage(dmg, tech.isNeedleShieldPierce);
simulation.drawList.push({ //add dmg to draw queue
diff --git a/js/level.js b/js/level.js
index c651f69..7ff1993 100644
--- a/js/level.js
+++ b/js/level.js
@@ -5956,7 +5956,7 @@ const level = {
//top right
spawn.randomGroup(2000, -5700, 0.6);
- powerUps.addRerollToLevel() //needs to run after mobs are spawned
+ powerUps.addResearchToLevel() //needs to run after mobs are spawned
let bosses = ["shooterBoss", "launcherBoss", "laserTargetingBoss", "streamBoss", "pulsarBoss", "spawnerBossCulture", "laserBoss"];
let abc = Math.random();
if (simulation.difficulty > 3) {
diff --git a/js/player.js b/js/player.js
index daf7242..b3d1dcb 100644
--- a/js/player.js
+++ b/js/player.js
@@ -308,10 +308,9 @@ const m = {
//remove all tech and count current tech total
let totalTech = 0;
for (let i = 0, len = tech.tech.length; i < len; i++) {
+ if (tech.tech[i].isJunk) tech.tech[i].frequency = 0
if (tech.tech[i].count > 0 && !tech.tech[i].isLore) {
- if (tech.tech[i].isJunk) {
- tech.tech[i].frequency = 0
- } else if (tech.tech[i].frequencyDefault) {
+ if (tech.tech[i].frequencyDefault) {
tech.tech[i].frequency = tech.tech[i].frequencyDefault
} else {
tech.tech[i].frequency = 1
@@ -1506,12 +1505,12 @@ const m = {
},
{
name: "standing wave harmonics",
- description: "3 oscillating shields are permanently active
deflecting drains energy with no cool down
deflecting has 75% less recoil", //harm and
+ description: "3 oscillating shields are permanently active
deflecting drains energy with no cool down
deflecting has 50% less recoil", //harm and
effect: () => {
// m.fieldHarmReduction = 0.80;
m.fieldBlockCD = 0;
// m.fieldHarmReduction = 0.75;
- m.blockingRecoil = 1 //4 is normal
+ m.blockingRecoil = 2 //4 is normal
m.fieldRange = 175
m.fieldShieldingScale = Math.pow(0.5, (tech.harmonics - 3))
m.harmonicRadius = 1 //for smoothing function when player holds mouse (for harmonicAtomic)
@@ -1548,7 +1547,11 @@ const m = {
}
m.pushMobs360(radius);
}
- m.harmonicShield = m.harmonic3Phase
+ if (tech.harmonics === 2) {
+ m.harmonicShield = m.harmonic3Phase
+ } else {
+ m.harmonicShield = m.harmonicAtomic
+ }
m.hold = function() {
if (m.isHolding) {
m.drawHold(m.holdingTarget);
@@ -1633,11 +1636,11 @@ const m = {
m.drawFieldMeter()
if (tech.isPerfectBrake) { //cap mob speed around player
- const range = 160 + 140 * wave + 150 * m.energy
+ const range = 160 + 140 * wave + 200 * m.energy
for (let i = 0; i < mob.length; i++) {
const distance = Vector.magnitude(Vector.sub(m.pos, mob[i].position))
if (distance < range) {
- const cap = mob[i].isShielded ? 8.5 : 4.5
+ const cap = mob[i].isShielded ? 8 : 4
if (mob[i].speed > cap && Vector.dot(mob[i].velocity, Vector.sub(m.pos, mob[i].position)) > 0) { // if velocity is directed towards player
Matter.Body.setVelocity(mob[i], Vector.mult(Vector.normalise(mob[i].velocity), cap)); //set velocity to cap, but keep the direction
}
diff --git a/js/spawn.js b/js/spawn.js
index a4fd140..5580198 100644
--- a/js/spawn.js
+++ b/js/spawn.js
@@ -1194,10 +1194,12 @@ const spawn = {
//teleport everything to center
function toMe(who, where, range) {
for (let i = 0, len = who.length; i < len; i++) {
- const SUB = Vector.sub(who[i].position, where)
- const DISTANCE = Vector.magnitude(SUB)
- if (DISTANCE < range) {
- Matter.Body.setPosition(who[i], where)
+ if (!who[i].isNotHoldable) {
+ const SUB = Vector.sub(who[i].position, where)
+ const DISTANCE = Vector.magnitude(SUB)
+ if (DISTANCE < range) {
+ Matter.Body.setPosition(who[i], where)
+ }
}
}
}
diff --git a/js/tech.js b/js/tech.js
index af7fa03..c13b58a 100644
--- a/js/tech.js
+++ b/js/tech.js
@@ -165,7 +165,7 @@
if (tech.isLowEnergyDamage) dmg *= 1 + Math.max(0, 1 - m.energy) * 0.5
if (tech.isMaxEnergyTech) dmg *= 1.5
if (tech.isEnergyNoAmmo) dmg *= 1.6
- if (tech.isDamageForGuns) dmg *= 1 + 0.1 * b.inventory.length
+ if (tech.isDamageForGuns) dmg *= 1 + 0.12 * b.inventory.length
if (tech.isLowHealthDmg) dmg *= 1 + 0.5 * Math.max(0, 1 - m.health)
if (tech.isHarmDamage && m.lastHarmCycle + 600 > m.cycle) dmg *= 3;
if (tech.isEnergyLoss) dmg *= 1.55;
@@ -250,7 +250,7 @@
},
{
name: "arsenal",
- description: "increase damage by 10%
for each gun in your inventory",
+ description: "increase damage by 12%
for each gun in your inventory",
maxCount: 1,
count: 0,
frequency: 2,
@@ -2572,7 +2572,7 @@
},
{
name: "Ψ(t) collapse",
- description: "enter an alternate reality after you research
spawn 15 research",
+ description: "enter an alternate reality after you research
spawn 16 research",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2583,7 +2583,7 @@
requires: "not quantum immortality, many-worlds, non-unitary",
effect() {
tech.isResearchReality = true;
- for (let i = 0; i < 15; i++) powerUps.spawn(m.pos.x + Math.random() * 60, m.pos.y + Math.random() * 60, "research", false);
+ for (let i = 0; i < 16; i++) powerUps.spawn(m.pos.x + Math.random() * 60, m.pos.y + Math.random() * 60, "research", false);
},
remove() {
tech.isResearchReality = false;
@@ -2712,25 +2712,6 @@
},
remove() {}
},
- {
- name: "WIMPs",
- //harmful
- description: "a harmful particle slowly chases you
spawn 2-6 research at the end of each level",
- maxCount: 9,
- count: 0,
- frequency: 1,
- frequencyDefault: 1,
- allowed() {
- return true
- },
- requires: "",
- effect: () => {
- tech.wimpCount++
- },
- remove() {
- tech.wimpCount = 0
- }
- },
{
name: "bubble fusion",
description: "after destroying a mob's natural shield
spawn 1-2 heals, ammo, or research",
@@ -5193,6 +5174,25 @@
tech.pilotForce = 0.00002
}
},
+ {
+ name: "WIMPs",
+ description: "a harmful particle slowly chases you
spawn 3-9 research at the end of each level",
+ isFieldTech: true,
+ maxCount: 9,
+ count: 0,
+ frequency: 1,
+ frequencyDefault: 1,
+ allowed() {
+ return m.fieldUpgrades[m.fieldMode].name === "wormhole"
+ },
+ requires: "wormhole",
+ effect: () => {
+ tech.wimpCount++
+ },
+ remove() {
+ tech.wimpCount = 0
+ }
+ },
{
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 e68e5ad..e0cec0b 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,58 +1,18 @@
******************************************************** NEXT PATCH ********************************************************
-over all game difficulty scaling occurs faster
- your damage will feel lower, and you will take more harm,
- so you should probably play on a lower difficulty
-tech: Higgs manism gives 50% reduced fire delay instead of harm reduction
-tech: inertial frame is removed
-tech: automatic is now a junk tech
-
-balance:
- dead reckoning gives 36% damage when at rest (was 30%)
- overcharge gives 10 more energy, but adds 10 junk tech
- 1st ionization energy gives 6 energy per heal (was 5)
- dormancy increases damage by 100% but lowers it by 33% if no recent kills (was +50%, -15%)
- torpor decreases harm by 66% increases harm by 15% if no recent kills (was -50%, +10%)
- Ψ(t) collapse spawns 3 more research, so it's at 15
- fragmentation gives 30% more nails for railgun
- ammonium nitrate +25% (was 20%)
- generalist gives 8 guns (was 6)
- arsenal gives 10% per gun (was 14%)
- rivet gun fires 25% faster, rivets are 15% larger
- shotgun slug is 33% bigger
- missile bot fires 10% more often
- tinsellated flagella gives 40% speed increase (was 50%), base spore speed is 10% faster
- beamSplitter has a 20% lower divergence
- nano manufacturing tech is all buffed 15%
- traversable geodesics gives 2 guns and ammo (was 1)
- mines have 25% more nails, laser mines use 20% less energy sentry mines last 33% seconds longer
- zoospore vector has an 11% chance to spawn (was 9%)
- negentropy spawns a heal for every 33 missing health (was 50 health)
- exciton-lattice gives 60% damage
- thermocouple spawns 1-8 ice-IX (was 1-5)
- WIMPs spawn 2-6 research (was 2-3)
- quantum immortality reduces harm by 33% (was 23%)
- commodities exchange gives 10 power ups (was 8)
- super balls are 17% bigger (this means they do about 25% more damage)
- exothermic process increases damage by (was 45%)
- heat engine increases damage by 50% (was 40%)
- replication gives 10% duplication chance (was 8%)
- stimulated emission gives 22% duplication chance
- futures exchange gives 4.7% duplication chance per cancel (was 4.3%)
- needles are 10% slower and do 15% more damage
-
-bug fixes:
- reduced tolerances text rewritten to clarify that it gives more ammo per ammo pack
- hazards on horizontal flipped levels now correctly do damage
- ship mode aims properly after you die
- although it still doesn't reset
- experiment mode selections are highlighted better
+tech: WIMPs now requires wormhole
+ gives 3-9 research now (was 2-3)
+tech: eddy current brake - is 15% larger and caps mob speeds at 20% slower
+bug fixes
******************************************************** BUGS ********************************************************
+sharing 1 stack of spherical harmonics doesn't activate visually
+https://landgreen.github.io/sidescroller/index.html?&tech0=crystallizer&tech1=thermoelectric%20effect&tech2=thermoelectric%20effect&tech3=spherical%20harmonics&tech4=expansion&tech5=triple%20point&tech6=triple%20point&tech7=flux%20pinning&field=standing%20wave%20harmonics&difficulty=4&level=0&noPower=0
+
a couple times people have reported the final boss dropping extra bodies on death
figure out how to undo ship mode
@@ -75,8 +35,36 @@ is there a way to check if the player is stuck inside the map or block
(intermittent, but almost every time) bug - capping the fps causes random slow downs, that can be fixed with pause
+******************************************************** LEVELS ********************************************************
+
+labs - procedural generation
+ science theme, with a cool technology showcased
+ layout:
+ 6 total rooms
+ 3x2, 2x3, 4 2, 2 4
+ 1500px, 3000px per room
+ room types
+ entrance - no mobs, starting power ups`
+ exit - plenty of mobs
+ up, down - 2 paired rooms - boost, elevator, portal
+ boss - standard random boss spawns
+ empty - just a dead end - possible duplication boss spawn location
+ button - opens door to exit room
+ room ideas -
+ gravity room
+ portal room
+ endlessly falling blocks down a slide, that the player has to climb up
+ portal + rotor + falling blocks = perpetual motion
+ laser room
+ slime radiation room
+
******************************************************** TODO ********************************************************
+standing wave harmonics - can block too often on the same mob if you push it into a corner
+ add a small cooldown
+ return to normal knock back // 4
+let standing wave harmonics get tech decorrelation
+
* inductive coupling - sucks without catabolism, too much delayed gratification. should probably be bundled with transceiver chip
tech: cloaking field - decrease/increase cooldown on sneak attack?
@@ -160,21 +148,6 @@ tech plasma field - plasma field becomes an aoe damage field with the same radiu
200% more energy drain, 100% more damage
draw a square (or two) that rapidly spins
-new level: procedural generation
- several small rooms are linked by portals
- the portals have a randomized pattern
- the rooms can be set out in a grid and linked by physical doors,tunnels,wells
- choose bosses that can move though walls, so it can track you while you portal
- the map shuffles it's pattern when the player get to a button
- shuffle portals or shuffle the physical layout of rooms
- and then have the player go back through to get to the end?
- gravity room
- portal room
- endlessly falling blocks down a slide, that the player has to climb
- portal + rotor + falling blocks = perpetual motion
- laser room
- slime radiation room
-
look into improving mouse lag with pointer lock?
https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
https://www.vsynctester.com/game.html
@@ -397,6 +370,7 @@ possible names for tech
counterfactual - something false
axion - maybe a 3rd dark matter type tech
Pigeonhole principle - if there are several things that are matched up
+ regression to the mean