diff --git a/.DS_Store b/.DS_Store index 43348f1..37da533 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/js/bullet.js b/js/bullet.js index b099ac9..329ad80 100644 --- a/js/bullet.js +++ b/js/bullet.js @@ -102,7 +102,7 @@ const b = { for (let i = 0; i < 4; i++) powerUps.spawn(m.pos.x + 50 * (Math.random() - 0.5), m.pos.y + 50 * (Math.random() - 0.5), "ammo"); } }, - refundAmmo() { //triggers after firing when you removed ammo for a gun, but didn't need to (like a rail gun misfire) + refundAmmo() { //triggers after firing when you removed ammo for a gun, but didn't need to (like a railgun misfire) if (tech.isCrouchAmmo && input.down) { tech.isCrouchAmmo-- if ((tech.isCrouchAmmo) % 2) { @@ -4430,7 +4430,7 @@ const b = { fire() {} }, { - name: "wave beam", + name: "matter wave", description: "emit a wave packet of oscillating particles
that propagates through solids", ammo: 0, ammoPack: 120, @@ -5189,7 +5189,7 @@ const b = { } }, { - name: "rail gun", + name: "railgun", description: "use energy to launch a high-speed dense rod
hold left mouse to charge, release to fire", ammo: 0, ammoPack: 3.5, diff --git a/js/index.js b/js/index.js index b3f02fd..3b79e49 100644 --- a/js/index.js +++ b/js/index.js @@ -172,6 +172,13 @@ window.onresize = () => { //********************************************************************** // experimental build grid display and pause //********************************************************************** +//set wikipedia link +for (let i = 0, len = tech.tech.length; i < len; i++) { + if (!tech.tech[i].link) { + tech.tech[i].link = `${tech.tech[i].name}` + } +} + const build = { // onLoadPowerUps() { // const set = getUrlVars() @@ -241,7 +248,7 @@ const build = { `; for (let i = 0, len = b.inventory.length; i < len; i++) { - text += `
  ${b.guns[b.inventory[i]].name} - ${b.guns[b.inventory[i]].ammo}
${b.guns[b.inventory[i]].description}
` + text += `
  ${build.nameLink(b.guns[b.inventory[i]].name)} - ${b.guns[b.inventory[i]].ammo}
${b.guns[b.inventory[i]].description}
` } let el = document.getElementById("pause-grid-left") el.style.display = "grid" @@ -249,7 +256,7 @@ const build = { //left side text = ""; - text += `
  ${m.fieldUpgrades[m.fieldMode].name}
${m.fieldUpgrades[m.fieldMode].description}
` + text += `
  ${build.nameLink(m.fieldUpgrades[m.fieldMode].name)}
${m.fieldUpgrades[m.fieldMode].description}
` for (let i = 0, len = tech.tech.length; i < len; i++) { if (tech.tech[i].count > 0 && !tech.tech[i].isNonRefundable) { const isCount = tech.tech[i].count > 1 ? `(${tech.tech[i].count}x)` : ""; @@ -259,23 +266,23 @@ const build = {
-         ${tech.tech[i].name} ${isCount}${tech.tech[i].description}` +         ${tech.tech[i].link} ${isCount}${tech.tech[i].description}` } else if (tech.tech[i].isGunTech) { text += `
-         ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}
` +         ${tech.tech[i].link} ${isCount}${tech.tech[i].description}` } else if (tech.tech[i].isLore) { text += `
  ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}
` // } else if (tech.tech[i].isJunk) { // text += `
  ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}
` } else { - text += `
  ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}
` + text += `
  ${tech.tech[i].link} ${isCount}
${tech.tech[i].description}
` } } else if (tech.tech[i].isLost) { - text += `
${tech.tech[i].name}
${tech.tech[i].description}
` + text += `
${tech.tech[i].link}
${tech.tech[i].description}
` } } el = document.getElementById("pause-grid-right") @@ -369,7 +376,7 @@ const build = {
-         ${tech.tech[i].name} ${isCount}${tech.tech[i].description} +         ${tech.tech[i].link} ${isCount}${tech.tech[i].description} ` //
//
@@ -382,18 +389,18 @@ const build = {
-         ${tech.tech[i].name} ${isCount}${tech.tech[i].description} +         ${tech.tech[i].link} ${isCount}${tech.tech[i].description} ` } else if (tech.tech[i].isJunk) { // text += `
  ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}
` - techID.innerHTML = `
  ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}` + techID.innerHTML = `
  ${tech.tech[i].link} ${isCount}
${tech.tech[i].description}` } else if (tech.tech[i].isExperimentalMode) { // techID.innerHTML = `${tech.tech[i].description}` techID.innerHTML = `
${tech.tech[i].name}
${tech.tech[i].description}` // text += `
${tech.tech[i].name}
${tech.tech[i].description}` } else { - techID.innerHTML = `
  ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}` + techID.innerHTML = `
  ${tech.tech[i].link} ${isCount}
${tech.tech[i].description}` } //deselect selected tech options if you don't have the tech any more // for example: when bot techs are converted after a bot upgrade tech is taken if (tech.tech[i].count === 0 && techID.classList.contains("build-tech-selected")) techID.classList.remove("build-tech-selected"); @@ -455,10 +462,10 @@ const build = { ` for (let i = 0, len = m.fieldUpgrades.length; i < len; i++) { - text += `
  ${m.fieldUpgrades[i].name}
${m.fieldUpgrades[i].description}
` + text += `
  ${build.nameLink(m.fieldUpgrades[i].name)}
${m.fieldUpgrades[i].description}
` } for (let i = 0, len = b.guns.length; i < len; i++) { - text += `
  ${b.guns[i].name}
${b.guns[i].description}
` + text += `
  ${build.nameLink(b.guns[i].name)}
${b.guns[i].description}
` } for (let i = 0, len = tech.tech.length; i < len; i++) { if (!tech.tech[i].isExperimentHide && (!tech.tech[i].isNonRefundable || tech.tech[i].isExperimentalMode)) { @@ -466,7 +473,7 @@ const build = { if (tech.tech[i].isExperimentalMode) { text += `
${tech.tech[i].name}
${tech.tech[i].description}
` } else { - text += `
  ${tech.tech[i].name}
${tech.tech[i].description}
` + text += `
  ${tech.tech[i].link}
${tech.tech[i].description}
` } } else { text += `
${tech.tech[i].name}
${tech.tech[i].description}
` @@ -497,6 +504,9 @@ const build = { } } }, + nameLink(text) { //converts text into a clickable wikipedia search + return `${text}` + }, reset() { simulation.startGame(true); //starts game, but pauses it build.isExperimentSelection = true; diff --git a/js/player.js b/js/player.js index 743b340..97ab0ab 100644 --- a/js/player.js +++ b/js/player.js @@ -1471,7 +1471,7 @@ const m = { } }, { - name: "standing wave harmonics", + name: "standing wave", description: "3 oscillating shields are permanently active
deflecting protects you in every direction
deflecting has 50% less recoil", //drains energy drainCD: 0, effect: () => { @@ -1757,7 +1757,7 @@ const m = { } }, { - name: "negative mass field", + name: "negative mass", description: "use energy to nullify  gravity
reduce harm by 55%
hold blocks as if they have a lower mass", fieldDrawRadius: 0, effect: () => { @@ -1907,7 +1907,7 @@ const m = { } }, { - name: "nano-scale manufacturing", + name: "molecular assembler", description: "excess energy used to build drones
use energy to deflect mobs
double your default energy regeneration", effect: () => { // m.fieldMeterColor = "#0c5" diff --git a/js/simulation.js b/js/simulation.js index 9b3269d..5f3e678 100644 --- a/js/simulation.js +++ b/js/simulation.js @@ -388,9 +388,9 @@ const simulation = { } }, switchGun() { - if (tech.isLongitudinal && b.guns[b.activeGun].name === "wave beam") { + if (tech.isLongitudinal && b.guns[b.activeGun].name === "matter wave") { for (i = 0, len = b.guns.length; i < len; i++) { //find which gun - if (b.guns[i].name === "wave beam") { + if (b.guns[i].name === "matter wave") { b.guns[i].waves = []; //empty array of wave bullets break; } @@ -746,7 +746,7 @@ const simulation = { if (m.alive) { if (tech.isLongitudinal) { for (i = 0, len = b.guns.length; i < len; i++) { //find which gun - if (b.guns[i].name === "wave beam") { + if (b.guns[i].name === "matter wave") { b.guns[i].waves = []; //empty array of wave bullets break; } diff --git a/js/tech.js b/js/tech.js index 9890536..fb2013a 100644 --- a/js/tech.js +++ b/js/tech.js @@ -239,6 +239,7 @@ }, tech: [{ name: "integrated armament", + link: `integrated armament`, description: `increase damage by 19.95%
your inventory can only hold 1 gun`, maxCount: 1, count: 0, @@ -412,7 +413,7 @@ allowed() { return !tech.isEnergyNoAmmo }, - requires: "not exciton-lattice", + requires: "not exciton", effect() { tech.isAmmoForGun = true; }, @@ -443,6 +444,7 @@ }, { name: "cache", + link: `cache`, description: `${powerUps.orb.ammo()} give 13x more ammo, but
you can't store any more ammo than that`, maxCount: 1, count: 0, @@ -451,7 +453,7 @@ allowed() { return !tech.isEnergyNoAmmo }, - requires: "not exciton-lattice", + requires: "not exciton", effect() { tech.ammoCap = 13; powerUps.ammo.effect() @@ -470,7 +472,7 @@ allowed() { return !tech.isEnergyNoAmmo && !tech.isEnergyHealth }, - requires: "not exciton-lattice, mass-energy", + requires: "not exciton, mass-energy", effect: () => { tech.isAmmoFromHealth = true; }, @@ -480,6 +482,7 @@ }, { name: "desublimated ammunition", + link: `desublimated ammunition`, description: "every other crouched shot uses no ammo
+6 JUNK to the potential tech pool", maxCount: 1, count: 0, @@ -673,7 +676,7 @@ } }, { - name: "auto-loading heuristics", + name: "heuristics", description: "30% decreased delay after firing", maxCount: 9, count: 0, @@ -713,6 +716,7 @@ }, { name: "microstates", + link: `microstates`, description: "increase damage by 6%
for every 10 active projectiles", maxCount: 1, count: 0, @@ -731,6 +735,7 @@ }, { name: "anti-shear topology", + link: `anti-shear topology`, description: "some projectiles last 30% longer
drones, spores, missiles, foam, wave, neutron", // isGunTech: true, maxCount: 3, @@ -738,9 +743,9 @@ frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" || tech.haveGunCheck("spores") || tech.haveGunCheck("drones") || tech.haveGunCheck("missiles") || tech.haveGunCheck("foam") || tech.haveGunCheck("wave beam") || tech.isNeutronBomb || tech.isIceField || tech.isIceShot || tech.relayIce || tech.blockingIce > 1 || tech.isWormShot || tech.foamBotCount > 1 + return m.fieldUpgrades[m.fieldMode].name === "molecular assembler" || tech.haveGunCheck("spores") || tech.haveGunCheck("drones") || tech.haveGunCheck("missiles") || tech.haveGunCheck("foam") || tech.haveGunCheck("matter wave") || tech.isNeutronBomb || tech.isIceField || tech.isIceShot || tech.relayIce || tech.blockingIce > 1 || tech.isWormShot || tech.foamBotCount > 1 }, - requires: "drones, spores, missiles, foam, wave beam, neutron bomb, ice IX", + requires: "drones, spores, missiles, foam, matter wave, neutron bomb, ice IX", effect() { tech.isBulletsLastLonger += 0.3 }, @@ -768,6 +773,7 @@ }, { name: "water shielding", + link: `water shielding`, description: "radioactive effects on you are reduced by 75%
neutron bomb, drones, explosions, slime", maxCount: 1, count: 0, @@ -923,7 +929,7 @@ frequency: 1, frequencyDefault: 1, allowed() { - return ((m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isDroneTeleport || tech.isDroneRadioactive || tech.isSporeField || tech.isMissileField || tech.isIceField)) || (tech.haveGunCheck("drones") && !tech.isDroneRadioactive && !tech.isDroneTeleport) || tech.haveGunCheck("super balls") || tech.haveGunCheck("shotgun")) && !tech.isNailShot && !tech.isIceShot && !tech.isFoamShot && !tech.isWormShot && !tech.isNeedleShot + return ((m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isDroneTeleport || tech.isDroneRadioactive || tech.isSporeField || tech.isMissileField || tech.isIceField)) || (tech.haveGunCheck("drones") && !tech.isDroneRadioactive && !tech.isDroneTeleport) || tech.haveGunCheck("super balls") || tech.haveGunCheck("shotgun")) && !tech.isNailShot && !tech.isIceShot && !tech.isFoamShot && !tech.isWormShot && !tech.isNeedleShot }, requires: "super balls, basic or slug shotgun, drones, not irradiated drones or burst drones", effect() { @@ -935,15 +941,15 @@ }, { name: "fragmentation", - description: "some detonations and collisions eject nails
blocks, rail gun, grenades, missiles, slugs, harpoon", + description: "some detonations and collisions eject nails
blocks, railgun, grenades, missiles, slugs, harpoon", maxCount: 9, count: 0, frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("harpoon") || (tech.haveGunCheck("grenades") && !tech.isNeutronBomb) || tech.haveGunCheck("missiles") || tech.missileBotCount || tech.haveGunCheck("rail gun") || (tech.haveGunCheck("shotgun") && tech.isSlugShot) || tech.throwChargeRate > 1 + return tech.haveGunCheck("harpoon") || (tech.haveGunCheck("grenades") && !tech.isNeutronBomb) || tech.haveGunCheck("missiles") || tech.missileBotCount || tech.haveGunCheck("railgun") || (tech.haveGunCheck("shotgun") && tech.isSlugShot) || tech.throwChargeRate > 1 }, - requires: "grenades, missiles, rail gun, shotgun slugs, harpoon, or mass driver", + requires: "grenades, missiles, railgun, shotgun slugs, harpoon, or mass driver", effect() { tech.fragments++ }, @@ -970,7 +976,7 @@ } }, { - name: "impact shear", + name: "shear stress", description: "mobs release a nail when they die
nails target nearby mobs", maxCount: 9, count: 0, @@ -989,6 +995,7 @@ }, { name: "zoospore vector", + link: `zoospore vector`, description: "mobs produce spores when they die
11% chance", maxCount: 9, count: 0, @@ -1042,7 +1049,7 @@ frequency: 1, frequencyDefault: 1, allowed() { - return !tech.isEnergyHealth //((m.fieldUpgrades[m.fieldMode].name === "standing wave harmonics" && (tech.blockingIce !== 0 || tech.blockDmg !== 0)) || b.totalBots() > 1 || tech.haveGunCheck("mine") || tech.haveGunCheck("spores") || m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing") && + return !tech.isEnergyHealth //((m.fieldUpgrades[m.fieldMode].name === "standing wave" && (tech.blockingIce !== 0 || tech.blockDmg !== 0)) || b.totalBots() > 1 || tech.haveGunCheck("mine") || tech.haveGunCheck("spores") || m.fieldUpgrades[m.fieldMode].name === "molecular assembler") && }, requires: "not mass-energy", effect() { @@ -1072,6 +1079,7 @@ }, { name: "scrap bots", + link: `scrap bots`, description: "33% chance after killing a mob to build
a scrap bot that operates for 14 seconds", maxCount: 3, count: 0, @@ -1091,6 +1099,7 @@ }, { name: "scrap refit", + link: `scrap refit`, description: "killing a mob resets your functional scrap bots
to 14 seconds of operation", maxCount: 1, count: 0, @@ -1110,6 +1119,7 @@ }, { name: "nail-bot", + link: `nail-bot`, description: "a bot fires nails at mobs in line of sight", maxCount: 9, count: 0, @@ -1135,6 +1145,7 @@ }, { name: "nail-bot upgrade", + link: `nail-bot upgrade`, description: "convert all your bots to nail-bots
500% increased nail-bot fire rate", maxCount: 1, count: 0, @@ -1166,6 +1177,7 @@ }, { name: "foam-bot", + link: `foam-bot`, description: "a bot fires foam at nearby mobs", maxCount: 9, count: 0, @@ -1191,6 +1203,7 @@ }, { name: "foam-bot upgrade", + link: `foam-bot upgrade`, description: "convert all your bots to foam-bots
250% increased foam size and fire rate", maxCount: 1, count: 0, @@ -1222,6 +1235,7 @@ }, { name: "boom-bot", + link: `boom-bot`, description: "a bot defends the space around you
ignites an explosion after hitting a mob", maxCount: 9, count: 0, @@ -1247,6 +1261,7 @@ }, { name: "boom-bot upgrade", + link: `boom-bot upgrade-bot`, description: "convert all your bots to boom-bots
250% increased explosion damage and size", maxCount: 1, count: 0, @@ -1278,6 +1293,7 @@ }, { name: "laser-bot", + link: `laser-bot`, description: "a bot uses energy to emit a laser beam
that targets nearby mobs", maxCount: 9, count: 0, @@ -1303,6 +1319,7 @@ }, { name: "laser-bot upgrade", + link: `laser-bot upgrade`, description: "convert all your bots to laser-bots
75% improved damage, efficiency, and range", // 400% increased laser-bot laser damage", maxCount: 1, count: 0, @@ -1334,6 +1351,7 @@ }, { name: "orbital-bot", + link: `orbital-bot`, description: "a bot is locked in orbit around you
stuns and damages mobs on contact", maxCount: 9, count: 0, @@ -1359,6 +1377,7 @@ }, { name: "orbital-bot upgrade", + link: `orbital-bot upgrade`, description: "convert all your bots to orbital-bots
increase damage by 250% and radius by 40%", maxCount: 1, count: 0, @@ -1399,6 +1418,7 @@ }, { name: "dynamo-bot", + link: `dynamo-bot`, description: "a bot damages mobs while it traces your path
regen 6 energy per second when it's near", maxCount: 9, count: 0, @@ -1424,6 +1444,7 @@ }, { name: "dynamo-bot upgrade", + link: `dynamo-bot upgrade`, description: "convert your bots to dynamo-bots
increase regen to 16 energy per second", maxCount: 1, count: 0, @@ -1455,6 +1476,7 @@ }, { name: "bot fabrication", + link: `bot fabrication`, //-----------description is overwritten in powerUps.research.changeRerolls------------ description: `if you collect ${powerUps.orb.research(2)}use them to build a
random bot (+1 cost every 5 bots)`, maxCount: 1, @@ -1541,6 +1563,7 @@ }, { name: "ersatz bots", + link: `ersatz bots`, description: "double your current permanent bots
remove all of your current guns", maxCount: 1, count: 0, @@ -1616,6 +1639,7 @@ }, { name: "inflation", + link: `inflation`, description: "throwing a block expands it by 300%
increase throw charge rate by 200%", maxCount: 1, count: 0, @@ -1779,6 +1803,7 @@ }, { name: "flip-flop", + link: `flip-flop`, description: `toggle ON and OFF after a collision
unlock advanced tech that runs if ON`, nameInfo: "", addNameInfo() { @@ -2078,6 +2103,7 @@ }, { name: "non-Newtonian armor", + link: `non-Newtonian armor`, description: "for 10 seconds after receiving harm
reduce harm by 66%", maxCount: 1, count: 0, @@ -2113,14 +2139,14 @@ } }, { - name: "CPT reversal", + name: "CPT symmetry", description: "charge, parity, and time invert to undo harm
rewind (1.5—5) seconds for (66—220) energy", maxCount: 1, count: 0, frequency: 2, frequencyDefault: 2, - allowed() { //&& (m.fieldUpgrades[m.fieldMode].name !== "nano-scale manufacturing" || m.maxEnergy > 1) - return m.maxEnergy > 0.99 && m.fieldUpgrades[m.fieldMode].name !== "standing wave harmonics" && !tech.isEnergyHealth && !tech.isRewindGun + allowed() { //&& (m.fieldUpgrades[m.fieldMode].name !== "molecular assembler" || m.maxEnergy > 1) + return m.maxEnergy > 0.99 && m.fieldUpgrades[m.fieldMode].name !== "standing wave" && !tech.isEnergyHealth && !tech.isRewindGun }, requires: "not standing wave, mass-energy, max energy reduction, CPT gun", effect() { @@ -2132,6 +2158,7 @@ }, { name: "causality bots", + link: `causality bots`, description: "when you rewind, build several bots
that protect you for about 9 seconds", maxCount: 3, count: 0, @@ -2151,6 +2178,7 @@ }, { name: "causality bombs", + link: `causality bombs`, description: "before you rewind drop several grenades
become immune to harm until they explode", maxCount: 1, count: 0, @@ -2240,6 +2268,7 @@ }, { name: "1st ionization energy", + link: `1st ionization energy`, description: `each ${powerUps.orb.heal()} you collect
increases your maximum energy by 6`, maxCount: 1, count: 0, @@ -2284,7 +2313,7 @@ } }, { - name: "transceiver chip", + name: "transceiver", description: "unused power ups at the end of each level
are still activated (selections are random)", maxCount: 1, count: 0, @@ -2302,7 +2331,7 @@ } }, { - name: "electrolytes", + name: "electronegativity", description: "increase damage by 1%
for every 11 stored energy", maxCount: 1, count: 0, @@ -2320,7 +2349,7 @@ } }, { - name: "exciton-lattice", + name: "exciton", description: `increase damage by 60%, but
${powerUps.orb.ammo()} will no longer spawn`, maxCount: 1, count: 0, @@ -2454,7 +2483,7 @@ } }, { - name: "waste energy recovery", + name: "waste heat recovery", description: "if a mob has died in the last 5 seconds
regen 5% of max energy every second", maxCount: 1, count: 0, @@ -2472,7 +2501,7 @@ } }, { - name: "scrap recycling", + name: "recycling", description: "if a mob has died in the last 5 seconds
regain 1% of max health every second", maxCount: 1, count: 0, @@ -3238,9 +3267,9 @@ // frequency: 3, // frequencyDefault: 3, // allowed() { - // return (m.fieldUpgrades[m.fieldMode].name === "standing wave harmonics" || m.fieldUpgrades[m.fieldMode].name === "pilot wave") && (build.isExperimentSelection || powerUps.research.count > 1) + // return (m.fieldUpgrades[m.fieldMode].name === "standing wave" || m.fieldUpgrades[m.fieldMode].name === "pilot wave") && (build.isExperimentSelection || powerUps.research.count > 1) // }, - // requires: "standing wave harmonics or pilot wave", + // requires: "standing wave or pilot wave", // effect() { // tech.harmonicEnergy = 0.74 // m.setMaxEnergy() @@ -3577,6 +3606,7 @@ //************************************************** { name: "CPT gun", + link: `CPT gun`, description: `adds the CPT gun to your inventory
it rewinds your health, velocity, and position`, isGunTech: true, maxCount: 1, @@ -3584,7 +3614,7 @@ frequency: 2, frequencyDefault: 2, allowed() { - return (b.totalBots() > 3 || m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" || m.fieldUpgrades[m.fieldMode].name === "plasma torch" || m.fieldUpgrades[m.fieldMode].name === "pilot wave") && !tech.isEnergyHealth && !tech.isRewindAvoidDeath //build.isExperimentSelection || + return (b.totalBots() > 3 || m.fieldUpgrades[m.fieldMode].name === "molecular assembler" || m.fieldUpgrades[m.fieldMode].name === "plasma torch" || m.fieldUpgrades[m.fieldMode].name === "pilot wave") && !tech.isEnergyHealth && !tech.isRewindAvoidDeath //build.isExperimentSelection || }, requires: "bots > 3, plasma torch, nano-scale, pilot wave, not mass-energy equivalence, CPT", effect() { @@ -3711,7 +3741,7 @@ } }, { - name: "rivet diameter", + name: "pneumatic hammer", description: `rivets are 20% larger
increases mass and physical damage`, isGunTech: true, maxCount: 9, @@ -3731,6 +3761,7 @@ }, { name: "ice crystal nucleation", + link: `ice crystal nucleation`, description: "the nail gun uses energy to condense
unlimited freezing ice shards", isGunTech: true, maxCount: 1, @@ -3842,6 +3873,7 @@ }, { name: "irradiated nails", + link: `irradiated nails`, description: "nails, needles, and rivets are radioactive
about 90% more damage over 2 seconds", isGunTech: true, maxCount: 1, @@ -3861,6 +3893,7 @@ }, { name: "4s half-life", + link: `4s half-life`, description: "nails are made of plutonium-238
increase damage by 100% over 6 seconds", isGunTech: true, maxCount: 1, @@ -3880,6 +3913,7 @@ }, { name: "1/2s half-life", + link: `1/2s half-life`, description: "nails are made of lithium-8
damage occurs after 1/2 a second", isGunTech: true, maxCount: 1, @@ -3899,6 +3933,7 @@ }, { name: "shotgun spin-statistics", + link: `shotgun spin-statistics`, description: "immune to harm while firing the shotgun
shotgun has 50% fewer shots", isGunTech: true, maxCount: 1, @@ -3957,16 +3992,17 @@ }, { name: "Noether violation", - description: "increase shotgun and rail gun damage 60%
their recoil is increased and reversed", + link: `Noether violation`, + description: "increase shotgun and railgun damage 60%
their recoil is increased and reversed", isGunTech: true, maxCount: 1, count: 0, frequency: 2, frequencyDefault: 2, allowed() { - return (tech.haveGunCheck("shotgun") || tech.haveGunCheck("rail gun")) && !tech.isShotgunRecoil + return (tech.haveGunCheck("shotgun") || tech.haveGunCheck("railgun")) && !tech.isShotgunRecoil }, - requires: "shotgun or rail gun, not Newton's 3rd law", + requires: "shotgun or railgun, not Newton's 3rd law", effect() { tech.isShotgunReversed = true; }, @@ -3995,6 +4031,7 @@ }, { name: "nail-shot", + link: `nail-shot`, description: "shotgun fires 17 nails", isGunTech: true, maxCount: 1, @@ -4014,6 +4051,7 @@ }, { name: "needle-shot", + link: `needle-shot`, description: "shotgun propels 11 mob piercing needles", isGunTech: true, maxCount: 1, @@ -4033,6 +4071,7 @@ }, { name: "worm-shot", + link: `worm-shot`, description: "shotgun hatches 3-4 mob seeking worms
worms benefit from spore technology", //
worms seek out nearby mobs isGunTech: true, maxCount: 1, @@ -4052,6 +4091,7 @@ }, { name: "foam-shot", + link: `foam-shot`, description: "shotgun sprays 13 sticky foam bubbles", isGunTech: true, maxCount: 1, @@ -4071,6 +4111,7 @@ }, { name: "ice-shot", + link: `ice-shot`, description: "shotgun grows 15 freezing ice IX crystals", isGunTech: true, maxCount: 1, @@ -4090,6 +4131,7 @@ }, { name: "supertemporal", + link: `supertemporal`, description: "fire super ball from the same point in space
but separated by 0.1 seconds in time", isGunTech: true, maxCount: 1, @@ -4163,17 +4205,17 @@ }, { name: "phase velocity", - description: "wave beam propagates faster through solids
increase wave beam damage by 15%", - // description: "wave beam propagates faster through solids
up by 3000% in the map and 760% in blocks", + description: "matter wave propagates faster through solids
increase matter wave damage by 15%", + // description: "matter wave propagates faster through solids
up by 3000% in the map and 760% in blocks", isGunTech: true, maxCount: 1, count: 0, frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("wave beam") && !tech.isLongitudinal + return tech.haveGunCheck("matter wave") && !tech.isLongitudinal }, - requires: "wave beam, not phonon", + requires: "matter wave, not phonon", effect() { tech.isPhaseVelocity = true; }, @@ -4190,9 +4232,9 @@ frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("wave beam") + return tech.haveGunCheck("matter wave") }, - requires: "wave beam", + requires: "matter wave", effect() { tech.waveReflections += 2 }, @@ -4209,9 +4251,9 @@ frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("wave beam") + return tech.haveGunCheck("matter wave") }, - requires: "wave beam", + requires: "matter wave", effect() { tech.waveFrequency *= 0.66 tech.wavePacketDamage *= 1.5 @@ -4230,34 +4272,34 @@ frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("wave beam") + return tech.haveGunCheck("matter wave") }, - requires: "wave beam", + requires: "matter wave", effect() { tech.waveBeamSpeed *= 0.8; - tech.waveBeamDamage += 1.5 * 0.5 //this sets base wave beam damage, not used by arcs or circles + tech.waveBeamDamage += 1.5 * 0.5 //this sets base matter wave damage, not used by arcs or circles }, remove() { tech.waveBeamSpeed = 10; - tech.waveBeamDamage = 1.5 //this sets base wave beam damage, not used by arcs or circles + tech.waveBeamDamage = 1.5 //this sets base matter wave damage, not used by arcs or circles } }, { name: "phonon", //longitudinal //gravitational wave? - description: "wave beam emits low frequency, high damage
expanding arcs that propagate through solids", + description: "matter wave emits low frequency, high damage
expanding arcs that propagate through solids", isGunTech: true, maxCount: 1, count: 0, frequency: 4, frequencyDefault: 4, allowed() { - return tech.haveGunCheck("wave beam") && !tech.isPhaseVelocity && !tech.isBulletTeleport + return tech.haveGunCheck("matter wave") && !tech.isPhaseVelocity && !tech.isBulletTeleport }, - requires: "wave beam, not phase velocity, uncertainty principle", + requires: "matter wave, not phase velocity, uncertainty principle", effect() { tech.isLongitudinal = true; for (i = 0, len = b.guns.length; i < len; i++) { //find which gun - if (b.guns[i].name === "wave beam") { + if (b.guns[i].name === "matter wave") { b.guns[i].chooseFireMethod() b.guns[i].ammoPack = b.guns[i].defaultAmmoPack / 8 b.guns[i].ammo = Math.ceil(b.guns[i].ammo / 8); @@ -4269,7 +4311,7 @@ remove() { if (tech.isLongitudinal) { for (i = 0, len = b.guns.length; i < len; i++) { //find which gun - if (b.guns[i].name === "wave beam") { + if (b.guns[i].name === "matter wave") { tech.isLongitudinal = false; b.guns[i].chooseFireMethod() b.guns[i].ammoPack = b.guns[i].defaultAmmoPack @@ -4284,7 +4326,7 @@ }, { name: "isotropic radiator", - description: "wave beam expands in all directions
range reduced 40% and damage increased 50%", + description: "matter wave expands in all directions
range reduced 40% and damage increased 50%", isGunTech: true, maxCount: 1, count: 0, @@ -4297,7 +4339,7 @@ effect() { tech.is360Longitudinal = true; for (i = 0, len = b.guns.length; i < len; i++) { //find which gun - if (b.guns[i].name === "wave beam") { + if (b.guns[i].name === "matter wave") { b.guns[i].chooseFireMethod() break } @@ -4306,7 +4348,7 @@ remove() { tech.is360Longitudinal = false; for (i = 0, len = b.guns.length; i < len; i++) { //find which gun - if (b.guns[i].name === "wave beam") { + if (b.guns[i].name === "matter wave") { b.guns[i].chooseFireMethod() break } @@ -4334,6 +4376,7 @@ }, { name: "missile-bot", + link: `missile-bot`, description: "remove your missile gun
gain a bot that fires missiles at mobs", isGunTech: true, maxCount: 1, @@ -4504,6 +4547,7 @@ }, { name: "laser-mines", + link: `laser-mines`, description: "mines laid while you are crouched
use energy to emit 3 unaimed lasers", isGunTech: true, maxCount: 1, @@ -4542,6 +4586,7 @@ }, { name: "blast mines", + link: `blast mines`, description: "when a mine activates
it stuns nearby mobs for 2-4 seconds", isGunTech: true, maxCount: 1, @@ -4561,6 +4606,7 @@ }, { name: "mycelial fragmentation", + link: `tinsellated flagella`, description: "sporangium release 6 extra spores
during their growth phase", isGunTech: true, maxCount: 1, @@ -4580,6 +4626,7 @@ }, { name: "tinsellated flagella", + link: `tinsellated flagella`, description: "sporangium release 2 more spores
spores accelerate 40% faster", isGunTech: true, maxCount: 1, @@ -4695,6 +4742,7 @@ }, { name: "reduced tolerances", + link: `reduced tolerances`, description: `increase drones per ${powerUps.orb.ammo()} or energy 66%
reduce the average drone lifetime by 40%`, isGunTech: true, maxCount: 3, @@ -4702,7 +4750,7 @@ frequency: 2, frequencyDefault: 2, allowed() { - return !tech.isDroneRadioactive && (tech.haveGunCheck("drones") || (m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isSporeField || tech.isMissileField || tech.isIceField))) + return !tech.isDroneRadioactive && (tech.haveGunCheck("drones") || (m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isSporeField || tech.isMissileField || tech.isIceField))) }, requires: "drones, not irradiated drones", effect() { @@ -4732,7 +4780,7 @@ frequency: 2, frequencyDefault: 2, allowed() { - return !tech.isExtraMaxEnergy && (tech.haveGunCheck("drones") || (m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isSporeField || tech.isMissileField || tech.isIceField))) + return !tech.isExtraMaxEnergy && (tech.haveGunCheck("drones") || (m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isSporeField || tech.isMissileField || tech.isIceField))) }, requires: "drones, not inductive coupling", effect() { @@ -4744,6 +4792,7 @@ }, { name: "drone repair", + link: `drone repair`, description: "after a drone ends it redeploys
for a 25% chance to use 1 drone ammo", // description: "broken drones repair if the drone gun is active
repairing has a 25% chance to use 1 drone", isGunTech: true, @@ -4764,6 +4813,7 @@ }, { name: "torque bursts", + link: `torque bursts`, description: "drones rapidly rush towards their target
increase drone collision damage by 33%", isGunTech: true, maxCount: 1, @@ -4802,6 +4852,7 @@ }, { name: "irradiated drones", + link: `irradiated drones`, description: `the space around drones is irradiated
reduce drones per ${powerUps.orb.ammo()} or energy 75%`, isGunTech: true, maxCount: 1, @@ -4809,7 +4860,7 @@ frequency: 2, frequencyDefault: 2, allowed() { - return tech.droneCycleReduction === 1 && !tech.isIncendiary && !tech.isDroneTeleport && (tech.haveGunCheck("drones") || (m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isSporeField || tech.isMissileField || tech.isIceField))) + return tech.droneCycleReduction === 1 && !tech.isIncendiary && !tech.isDroneTeleport && (tech.haveGunCheck("drones") || (m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isSporeField || tech.isMissileField || tech.isIceField))) }, requires: "drones, not reduced tolerances, incendiary, torque bursts", effect() { @@ -4856,6 +4907,7 @@ }, { name: "orthocyclic winding", + link: `orthocyclic winding`, description: "drones accelerate 66% faster
increase radiation damage by 33%", isGunTech: true, maxCount: 1, @@ -4901,9 +4953,9 @@ frequency: 2, frequencyDefault: 2, allowed() { - return (!tech.isFoamAttract && (tech.haveGunCheck("foam") || tech.foamBotCount > 1 || tech.isFoamShot)) || (tech.haveGunCheck("wave beam") && !tech.isLongitudinal) + return (!tech.isFoamAttract && (tech.haveGunCheck("foam") || tech.foamBotCount > 1 || tech.isFoamShot)) || (tech.haveGunCheck("matter wave") && !tech.isLongitudinal) }, - requires: "foam, not electrostatic induction, wave beam, not phonon", + requires: "foam, not electrostatic induction, matter wave, not phonon", effect() { tech.isBulletTeleport = true }, @@ -5010,6 +5062,7 @@ }, { name: "unaaq", + link: `unaaq`, //https://en.wikipedia.org/wiki/Weapon description: "increase the length of your harpoon
by 10% of the square root of its ammo", isGunTech: true, maxCount: 1, @@ -5087,16 +5140,16 @@ // }, { name: "half-wave rectifier", - description: "charging the rail gun gives you energy
instead of draining it", + description: "charging the railgun gives you energy
instead of draining it", isGunTech: true, maxCount: 1, count: 0, frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("rail gun") + return tech.haveGunCheck("railgun") }, - requires: "rail gun", + requires: "railgun", effect() { tech.isRailEnergyGain = true; }, @@ -5106,16 +5159,16 @@ }, { name: "dielectric polarization", - description: "firing the rail gun damages nearby mobs", + description: "firing the railgun damages nearby mobs", isGunTech: true, maxCount: 1, count: 0, frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("rail gun") + return tech.haveGunCheck("railgun") }, - requires: "rail gun", + requires: "railgun", effect() { tech.isRailAreaDamage = true; }, @@ -5125,16 +5178,16 @@ }, { name: "capacitor bank", - description: "the rail gun no longer takes time to charge
rail gun rods are 66% less massive", + description: "the railgun no longer takes time to charge
railgun rods are 66% less massive", isGunTech: true, maxCount: 1, count: 0, frequency: 2, frequencyDefault: 2, allowed() { - return tech.haveGunCheck("rail gun") + return tech.haveGunCheck("railgun") }, - requires: "rail gun", + requires: "railgun", effect() { tech.isCapacitor = true; }, @@ -5257,6 +5310,7 @@ }, { name: "diffuse beam", + link: `diffuse beam`, description: "laser beam is wider and doesn't reflect
increase full beam damage by 200%", isGunTech: true, maxCount: 1, @@ -5402,9 +5456,9 @@ frequency: 3, frequencyDefault: 3, allowed() { - return (m.fieldUpgrades[m.fieldMode].name === "standing wave harmonics" || m.fieldUpgrades[m.fieldMode].name === "pilot wave") && (build.isExperimentSelection || powerUps.research.count > 1) + return (m.fieldUpgrades[m.fieldMode].name === "standing wave" || m.fieldUpgrades[m.fieldMode].name === "pilot wave") && (build.isExperimentSelection || powerUps.research.count > 1) }, - requires: "standing wave harmonics or pilot wave", + requires: "standing wave or pilot wave", effect() { tech.harmonicEnergy = 0.74 m.setMaxEnergy() @@ -5427,9 +5481,9 @@ frequency: 3, frequencyDefault: 3, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "standing wave harmonics" + return m.fieldUpgrades[m.fieldMode].name === "standing wave" }, - requires: "standing wave harmonics", + requires: "standing wave", effect() { tech.harmonics++ m.fieldShieldingScale = 1.3 * Math.pow(0.6, (tech.harmonics - 2)) @@ -5451,9 +5505,9 @@ frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "standing wave harmonics" + return m.fieldUpgrades[m.fieldMode].name === "standing wave" }, - requires: "standing wave harmonics", + requires: "standing wave", effect() { tech.isStandingWaveExpand = true }, @@ -5471,9 +5525,9 @@ frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "standing wave harmonics" || m.fieldUpgrades[m.fieldMode].name === "perfect diamagnetism" + return m.fieldUpgrades[m.fieldMode].name === "standing wave" || m.fieldUpgrades[m.fieldMode].name === "perfect diamagnetism" }, - requires: "standing wave harmonics, perfect diamagnetism", + requires: "standing wave, perfect diamagnetism", effect() { tech.blockDmg += 1.25 //if you change this value also update the for loop in the electricity graphics in m.pushMass }, @@ -5490,9 +5544,9 @@ frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "standing wave harmonics" || m.fieldUpgrades[m.fieldMode].name === "perfect diamagnetism" + return m.fieldUpgrades[m.fieldMode].name === "standing wave" || m.fieldUpgrades[m.fieldMode].name === "perfect diamagnetism" }, - requires: "standing wave harmonics, perfect diamagnetism", + requires: "standing wave, perfect diamagnetism", effect() { tech.blockingIce++ }, @@ -5509,7 +5563,7 @@ frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "perfect diamagnetism" || m.fieldUpgrades[m.fieldMode].name === "standing wave harmonics" || m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" + return m.fieldUpgrades[m.fieldMode].name === "perfect diamagnetism" || m.fieldUpgrades[m.fieldMode].name === "standing wave" || m.fieldUpgrades[m.fieldMode].name === "molecular assembler" }, requires: "a field that can block", effect() { @@ -5567,9 +5621,9 @@ frequency: 3, frequencyDefault: 3, allowed() { - return (m.fieldUpgrades[m.fieldMode].name === "perfect diamagnetism" || m.fieldUpgrades[m.fieldMode].name === "negative mass field") && (build.isExperimentSelection || powerUps.research.count > 3) + return (m.fieldUpgrades[m.fieldMode].name === "perfect diamagnetism" || m.fieldUpgrades[m.fieldMode].name === "negative mass") && (build.isExperimentSelection || powerUps.research.count > 3) }, - requires: "perfect diamagnetism or negative mass field", + requires: "perfect diamagnetism or negative mass", effect() { tech.isFieldHarmReduction = true for (let i = 0; i < 4; i++) { @@ -5590,7 +5644,7 @@ frequency: 2, frequencyDefault: 2, allowed() { - return (m.fieldUpgrades[m.fieldMode].name === "plasma torch" || m.fieldUpgrades[m.fieldMode].name === "perfect diamagnetism" || m.fieldUpgrades[m.fieldMode].name === "pilot wave" || m.fieldUpgrades[m.fieldMode].name === "negative mass field") && !tech.isEnergyHealth + return (m.fieldUpgrades[m.fieldMode].name === "plasma torch" || m.fieldUpgrades[m.fieldMode].name === "perfect diamagnetism" || m.fieldUpgrades[m.fieldMode].name === "pilot wave" || m.fieldUpgrades[m.fieldMode].name === "negative mass") && !tech.isEnergyHealth }, requires: "field: perfect, negative mass, pilot wave, plasma, not mass-energy", effect() { @@ -5609,9 +5663,9 @@ frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "negative mass field" + return m.fieldUpgrades[m.fieldMode].name === "negative mass" }, - requires: "negative mass field", + requires: "negative mass", effect() { tech.isAnnihilation = true }, @@ -5621,16 +5675,16 @@ }, { name: "inertial mass", - description: "negative mass field is larger and faster
blocks also move horizontally with the field", + description: "negative mass is larger and faster
blocks also move horizontally with the field", isFieldTech: true, maxCount: 1, count: 0, frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "negative mass field" + return m.fieldUpgrades[m.fieldMode].name === "negative mass" }, - requires: "negative mass field", + requires: "negative mass", effect() { tech.isFlyFaster = true }, @@ -5647,9 +5701,9 @@ frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "pilot wave" || m.fieldUpgrades[m.fieldMode].name === "negative mass field" || m.fieldUpgrades[m.fieldMode].name === "time dilation" + return m.fieldUpgrades[m.fieldMode].name === "pilot wave" || m.fieldUpgrades[m.fieldMode].name === "negative mass" || m.fieldUpgrades[m.fieldMode].name === "time dilation" }, - requires: "pilot wave, negative mass field, time dilation", + requires: "pilot wave, negative mass, time dilation", effect() { tech.isFreezeMobs = true }, @@ -5659,7 +5713,7 @@ }, { name: "bot manufacturing", - description: `use nano-scale manufacturing and ${powerUps.orb.research(2)}
to build 3 random bots`, + description: `use molecular assembler and ${powerUps.orb.research(2)}
to build 3 random bots`, isFieldTech: true, maxCount: 1, count: 0, @@ -5669,9 +5723,9 @@ isNonRefundable: true, // isExperimentHide: true, allowed() { - return powerUps.research.count > 1 && m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" + return powerUps.research.count > 1 && m.fieldUpgrades[m.fieldMode].name === "molecular assembler" }, - requires: "nano-scale manufacturing", + requires: "molecular assembler", effect: () => { for (let i = 0; i < 2; i++) { if (powerUps.research.count > 0) powerUps.research.changeRerolls(-1) @@ -5695,9 +5749,9 @@ isNonRefundable: true, // isExperimentHide: true, allowed() { - return powerUps.research.count > 2 && m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" + return powerUps.research.count > 2 && m.fieldUpgrades[m.fieldMode].name === "molecular assembler" }, - requires: "nano-scale manufacturing", + requires: "molecular assembler", effect: () => { for (let i = 0; i < 3; i++) { if (powerUps.research.count > 0) powerUps.research.changeRerolls(-1) @@ -5762,6 +5816,7 @@ }, { name: "mycelium manufacturing", + link: `mycelium manufacturing`, description: `use ${powerUps.orb.research(3)}to repurpose nano-scale field
excess energy used to grow spores`, // description: "use 3 research to repurpose nano-scale
excess energy used to grow spores", isFieldTech: true, @@ -5770,9 +5825,9 @@ frequency: 3, frequencyDefault: 3, allowed() { - return (build.isExperimentSelection || powerUps.research.count > 2) && m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isMissileField || tech.isIceField || tech.isFastDrones || tech.isDroneGrab || tech.isDroneRadioactive || tech.isDroneTeleport) + return (build.isExperimentSelection || powerUps.research.count > 2) && m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isMissileField || tech.isIceField || tech.isFastDrones || tech.isDroneGrab || tech.isDroneRadioactive || tech.isDroneTeleport) }, - requires: "nano-scale manufacturing, no other manufacturing, no drone tech", + requires: "molecular assembler, no other manufacturing, no drone tech", effect() { if (!build.isExperimentSelection) { for (let i = 0; i < 3; i++) { @@ -5788,6 +5843,7 @@ }, { name: "missile manufacturing", + link: `missile manufacturing`, description: `use ${powerUps.orb.research(3)}to repurpose nano-scale field
excess energy used to construct missiles`, // description: "use 3 research to repurpose nano-scale
excess energy used to construct missiles", isFieldTech: true, @@ -5796,9 +5852,9 @@ frequency: 3, frequencyDefault: 3, allowed() { - return (build.isExperimentSelection || powerUps.research.count > 2) && m.maxEnergy > 0.5 && m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isSporeField || tech.isIceField || tech.isFastDrones || tech.isDroneGrab || tech.isDroneRadioactive || tech.isDroneTeleport) + return (build.isExperimentSelection || powerUps.research.count > 2) && m.maxEnergy > 0.5 && m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isSporeField || tech.isIceField || tech.isFastDrones || tech.isDroneGrab || tech.isDroneRadioactive || tech.isDroneTeleport) }, - requires: "nano-scale manufacturing, no other manufacturing, no drone tech", + requires: "molecular assembler, no other manufacturing, no drone tech", effect() { if (!build.isExperimentSelection) { for (let i = 0; i < 3; i++) { @@ -5814,6 +5870,7 @@ }, { name: "ice IX manufacturing", + link: `ice IX manufacturing`, description: `use ${powerUps.orb.research(3)}to repurpose nano-scale field
excess energy used to condense ice IX`, // description: "use 3 research to repurpose nano-scale
excess energy used to condense ice IX", isFieldTech: true, @@ -5822,9 +5879,9 @@ frequency: 3, frequencyDefault: 3, allowed() { - return (build.isExperimentSelection || powerUps.research.count > 2) && m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isSporeField || tech.isMissileField || tech.isFastDrones || tech.isDroneGrab || tech.isDroneRadioactive || tech.isDroneTeleport) + return (build.isExperimentSelection || powerUps.research.count > 2) && m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isSporeField || tech.isMissileField || tech.isFastDrones || tech.isDroneGrab || tech.isDroneRadioactive || tech.isDroneTeleport) }, - requires: "nano-scale manufacturing, no other manufacturing, no drone tech", + requires: "molecular assembler, no other manufacturing, no drone tech", effect() { if (!build.isExperimentSelection) { for (let i = 0; i < 3; i++) { @@ -5847,9 +5904,9 @@ frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" || m.fieldUpgrades[m.fieldMode].name === "pilot wave" + return m.fieldUpgrades[m.fieldMode].name === "molecular assembler" || m.fieldUpgrades[m.fieldMode].name === "pilot wave" }, - requires: "nano-scale manufacturing or pilot wave", + requires: "molecular assembler or pilot wave", effect: () => { tech.isMassEnergy = true // used in m.grabPowerUp m.energy += 2 @@ -5885,7 +5942,7 @@ frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "plasma torch" || m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" + return m.fieldUpgrades[m.fieldMode].name === "plasma torch" || m.fieldUpgrades[m.fieldMode].name === "molecular assembler" }, requires: "plasma torch", effect() { @@ -5897,6 +5954,7 @@ }, { name: "plasma-bot", + link: `plasma-bot`, description: "remove your field to build a bot
that uses energy to emit plasma", isFieldTech: true, maxCount: 1, @@ -5935,6 +5993,7 @@ }, { name: "plasma jet", + link: `plasma jet`, description: `use ${powerUps.orb.research(1)} to increase plasma torch range 50%`, // description: "use 1 research to
increase plasma torch's range by 50%", isFieldTech: true, @@ -5956,7 +6015,7 @@ } }, { - name: "micro-extruder", + name: "extruder", description: "plasma torch extrudes a thin hot wire
increases damage, energy drain, and lag", isFieldTech: true, maxCount: 1, @@ -5975,7 +6034,7 @@ } }, { - name: "timelike world line", + name: "timelike", description: "time dilation doubles your relative time rate
and makes you immune to harm", isFieldTech: true, maxCount: 1, @@ -6130,6 +6189,7 @@ // }, { name: "boson composite", + link: `boson composite`, description: "intangible to blocks and mobs while cloaked
passing through shields drains your energy", isFieldTech: true, maxCount: 1, @@ -6221,7 +6281,7 @@ frequency: 2, frequencyDefault: 2, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "metamaterial cloaking" || m.fieldUpgrades[m.fieldMode].name === "pilot wave" || m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" + return m.fieldUpgrades[m.fieldMode].name === "metamaterial cloaking" || m.fieldUpgrades[m.fieldMode].name === "pilot wave" || m.fieldUpgrades[m.fieldMode].name === "molecular assembler" }, requires: "metamaterial cloaking or pilot wave", effect() { @@ -6339,6 +6399,7 @@ }, { name: "transdimensional spores", + link: `transdimensional spores`, description: "when blocks fall into a wormhole
higher dimension spores are summoned", isFieldTech: true, maxCount: 1, @@ -6357,7 +6418,7 @@ } }, { - name: "traversable geodesics", + name: "geodesics", description: `your projectiles can traverse wormholes
spawn 2 guns and ${powerUps.orb.ammo(2)}`, isFieldTech: true, maxCount: 1, @@ -6398,7 +6459,7 @@ isBadRandomOption: true, isExperimentalMode: true, allowed() { - return build.isExperimentSelection && !m.isShipMode && m.fieldUpgrades[m.fieldMode].name !== "negative mass field" + return build.isExperimentSelection && !m.isShipMode && m.fieldUpgrades[m.fieldMode].name !== "negative mass" }, requires: "", effect() { @@ -7400,7 +7461,7 @@ isExperimentHide: true, isJunk: true, allowed() { - return !m.isShipMode && m.fieldUpgrades[m.fieldMode].name !== "negative mass field" + return !m.isShipMode && m.fieldUpgrades[m.fieldMode].name !== "negative mass" }, requires: "", effect() { @@ -7477,7 +7538,7 @@ isExperimentHide: true, isJunk: true, allowed() { - return m.fieldUpgrades[m.fieldMode].name !== "negative mass field" + return m.fieldUpgrades[m.fieldMode].name !== "negative mass" }, requires: "", effect() { diff --git a/todo.txt b/todo.txt index 0b81b17..702e2b6 100644 --- a/todo.txt +++ b/todo.txt @@ -1,13 +1,16 @@ ******************************************************** NEXT PATCH ************************************************** -new boss: slasherBoss - radially waving short distance lasers - -aerogel 250%->150% foam damage - -bug fixes +tech, field, and gun names are now clickable wikipedia searches + works in pause and experiment modes + several names have also been adjusted ******************************************************** TODO ******************************************************** +bad links: + +add link URL to all tech guns and field on page load + but only if URL is undefined so hard to search names can be added in by hand + slasherBoss sine wave of lasers that travel around vertexes 10+ sided @@ -84,7 +87,7 @@ Pilot wave tech make experiment and understand vibe more obvious mostly in early game or first time players -look into 360 wave beam lag +look into 360 matter wave lag aoe effect pushes mobs away, then rapidly pulls them in for mines? @@ -99,7 +102,7 @@ it would be helpful if there was a mechanism to recover mobs that fly off the ma make non moving bosses not move after getting hit shooter, shielding, -buff rail gun +buff railgun scrolling console history in pause menu? pause should at least show the last in game console message @@ -114,7 +117,7 @@ tech: quantized shields - harmonic standing wave field can only lose 33 energy p doesn't stack with spherical tech make a tech that improves all charge guns - for: pulse, foam, rail gun + for: pulse, foam, railgun effect: faster charge rate? fire speed already does that... @@ -135,7 +138,7 @@ tech: use the ability for power ups to have custom code explode if they touch? apply the new gun.do functions to other guns - rail gun + railgun crouching missile? works similar to foam performance issues?