diff --git a/.DS_Store b/.DS_Store
index b62cbdd..d1b0483 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/js/bullet.js b/js/bullet.js
index a8e8d39..59f3371 100644
--- a/js/bullet.js
+++ b/js/bullet.js
@@ -425,10 +425,10 @@ const b = {
if (dist < radius) {
if (simulation.dmgScale) {
const harm = tech.isExplosionHarm ? 0.075 : 0.05
- if (tech.isImmuneExplosion && m.energy > 0.15) {
+ if (tech.isImmuneExplosion && m.energy > 0.12) {
// const mitigate = Math.min(1, Math.max(1 - m.energy * 0.5, 0))
- m.energy -= 0.15
- m.damage(0.01 * harm); //remove 99% of the damage 1-0.99
+ m.energy -= 0.12
+ // m.damage(0.01 * harm); //remove 99% of the damage 1-0.99
// console.log(Math.max(0, Math.min(0.15 - 0.01 * player.speed, 0.15)))
knock = Vector.mult(Vector.normalise(sub), -0.6 * player.mass * Math.max(0, Math.min(0.15 - 0.002 * player.speed, 0.15)));
player.force.x = knock.x; // not += so crazy forces can't build up with MIRV
diff --git a/js/engine.js b/js/engine.js
index 51658f2..1612c89 100644
--- a/js/engine.js
+++ b/js/engine.js
@@ -107,7 +107,7 @@ function collisionChecks(event) {
!mob[k].isSlowed && !mob[k].isStunned
) {
let dmg = Math.min(Math.max(0.025 * Math.sqrt(mob[k].mass), 0.05), 0.3) * simulation.dmgScale; //player damage is capped at 0.3*dmgScale of 1.0
- if (m.isCloak) dmg *= 0.5
+ if (m.isCloak) dmg *= 0.75
mob[k].foundPlayer();
if (tech.isRewindAvoidDeath && m.energy > 0.66 && dmg > 0.01) { //CPT reversal runs in m.damage, but it stops the rest of the collision code here too
m.damage(dmg);
@@ -150,7 +150,7 @@ function collisionChecks(event) {
y: mob[k].velocity.y - 8 * Math.sin(angle)
});
- if (tech.isAnnihilation && !mob[k].shield && !mob[k].isShielded && !mob[k].isBoss && mob[k].isDropPowerUp && m.energy > 0.34 * m.maxEnergy) {
+ if (tech.isAnnihilation && !mob[k].shield && !mob[k].isShielded && !mob[k].isBoss && mob[k].isDropPowerUp && m.energy > 0.34 * m.maxEnergy && mob[k].damageReduction > 0) {
m.energy -= 0.33 * Math.max(m.maxEnergy, m.energy) //0.33 * m.energy
if (m.immuneCycle === m.cycle + tech.collisionImmuneCycles) m.immuneCycle = 0; //player doesn't go immune to collision damage
mob[k].death();
diff --git a/js/index.js b/js/index.js
index 8278b91..d155be7 100644
--- a/js/index.js
+++ b/js/index.js
@@ -219,6 +219,9 @@ for (let i = 0, len = tech.tech.length; i < len; i++) {
if (!tech.tech[i].link) tech.tech[i].link = `${tech.tech[i].name}`
}
+
+//
effective defense: ${(1-simulation.dmgScale*m.harmReduction()).toPrecision(3)}
+//
effective damage: ${(tech.damageFromTech() * m.dmgScale).toPrecision(3)}
const build = {
pauseGrid() {
//left side
@@ -238,18 +241,18 @@ const build = {
copy build url
`
text += `
-
effective damage: ${(tech.damageFromTech() * m.dmgScale).toPrecision(4)}
-
damage: ${((tech.damageFromTech())).toPrecision(4)}, difficulty: ${((m.dmgScale)).toPrecision(4)}
+
damage: ${((tech.damageFromTech())).toPrecision(3)}
+
difficulty: ${((m.dmgScale)).toPrecision(3)}
-
effective harm: ${(simulation.dmgScale*m.harmReduction()).toPrecision(4)}
-
reduction: ${(m.harmReduction()).toPrecision(4)}, difficulty: ${(simulation.dmgScale).toPrecision(4)}
+
+defense: ${(1-m.harmReduction()).toPrecision(3)}
+
difficulty: ${(simulation.dmgScale).toPrecision(3)}
${botText}
health: (${(m.health*100).toFixed(0)} / ${(m.maxHealth*100).toFixed(0)}) energy: (${(m.energy*100).toFixed(0)} / ${(m.maxEnergy*100).toFixed(0)})
gun: ${b.activeGun === null || b.activeGun === undefined ? "undefined":b.guns[b.activeGun].name} ammo: ${b.activeGun === null || b.activeGun === undefined ? "0":b.guns[b.activeGun].ammo}
fire delay decrease: ${((1-b.fireCDscale)*100).toFixed(b.fireCDscale < 0.1 ? 2 : 0)}%
duplication chance: ${(tech.duplicationChance()*100).toFixed(0)}%
-
tech: ${tech.totalCount} research: ${powerUps.research.count}
+
tech: ${tech.totalCount} research: ${powerUps.research.count}
position: (${player.position.x.toFixed(1)}, ${player.position.y.toFixed(1)}) velocity: (${player.velocity.x.toFixed(1)}, ${player.velocity.y.toFixed(1)})
mouse: (${simulation.mouseInGame.x.toFixed(1)}, ${simulation.mouseInGame.y.toFixed(1)}) mass: ${player.mass.toFixed(1)}
@@ -507,6 +510,7 @@ ${simulation.isCheating ? "
lore disabled": ""}
}
} else {
text += `
${tech.tech[i].name}
${tech.tech[i].descriptionFunction ? tech.tech[i].descriptionFunction() :tech.tech[i].description}
`
+ // text += ` ${tech.tech[i].name}
${tech.tech[i].descriptionFunction ? tech.tech[i].descriptionFunction() :tech.tech[i].description}
`
}
}
}
@@ -963,7 +967,7 @@ window.addEventListener("keydown", function(event) {
| H |
- harm immunity |
+ +100% defense |
| B |
diff --git a/js/level.js b/js/level.js
index 8801865..593b963 100644
--- a/js/level.js
+++ b/js/level.js
@@ -18,9 +18,9 @@ const level = {
// simulation.isHorizontalFlipped = true
// m.addHealth(Infinity)
// m.setField("time dilation")
- // b.giveGuns("laser")
- // tech.giveTech("closed timelike curve")
- // tech.giveTech("translucent")
+ // b.giveGuns("shotgun")
+ // tech.giveTech("ice-shot")
+ // tech.giveTech("MACHO")
// tech.giveTech("clock gating")
// tech.giveTech("6s half-life")
// for (let i = 0; i < 10; i++) tech.giveTech("replication")
@@ -37,10 +37,10 @@ const level = {
// m.immuneCycle = Infinity //you can't take damage
// level.difficultyIncrease(30) //30 is near max on hard //60 is near max on why
// simulation.enableConstructMode() //used to build maps in testing mode
- // level.testing();
+ // level.reservoir();
// spawn.cellBossCulture(1900, -500)
- // spawn.launcherBoss(1900, -500)
- // level.dripp(); //not in rotation, used for testing
+ // spawn.snakeBoss(1900, -500)
+ // level.testing(); //not in rotation, used for testing
if (simulation.isTraining) { level.walk(); } else { level.intro(); } //normal starting level ************************************************
// powerUps.research.changeRerolls(3000)
@@ -609,7 +609,18 @@ const level = {
this.frictionAir = friction.up
}
}
-
+ }
+ //edge limits
+ if (this.position.y < maxHeight) {
+ Matter.Body.setPosition(this, {
+ x: this.holdX,
+ y: maxHeight
+ });
+ } else if (this.position.y > y) {
+ Matter.Body.setPosition(this, {
+ x: this.holdX,
+ y: y
+ });
}
// hold horizontal position
Matter.Body.setPosition(this, {
@@ -3436,7 +3447,7 @@ const level = {
let waterFallX = 0
let waterFallSmoothX = 0
let isWaterfallFilling = false
- const riseRate = 0.25 + Math.min(1, simulation.difficulty * 0.01)
+ const riseRate = 0.30 + Math.min(1, simulation.difficulty * 0.005)
const spinnerArray = []
// level.difficultyIncrease(30) //30 is near max on hard //60 is near max on why
@@ -8826,7 +8837,7 @@ const level = {
}
anotherBoss = (x, y) => {
- if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) {
+ if (tech.isDuplicateBoss && Math.random() < tech.duplicationChance()) {
tech.isScaleMobsWithDuplication = true
spawn.randomLevelBoss(x, y, ["historyBoss"]);
tech.isScaleMobsWithDuplication = false
diff --git a/js/mob.js b/js/mob.js
index 100a139..3f90abf 100644
--- a/js/mob.js
+++ b/js/mob.js
@@ -59,7 +59,9 @@ const mobs = {
}
function applySlow(whom) {
- if (!whom.shield && !whom.isShielded) {
+ if (!whom.shield && !whom.isShielded && who.alive) {
+ if (tech.isIceMaxHealthLoss && who.health > 0.66 && who.damageReduction > 0) who.health = 0.66
+ if (tech.isIceKill && who.health < 0.33 && who.damageReduction > 0) who.death();
if (whom.isBoss) cycles = Math.floor(cycles * 0.25)
let i = whom.status.length
while (i--) {
@@ -68,8 +70,8 @@ const mobs = {
whom.isSlowed = true;
whom.status.push({
effect() {
- if (whom.speed > 2) {
- const drag = 0.95
+ if (whom.speed > 1) {
+ const drag = 0.94
Matter.Body.setVelocity(whom, {
x: whom.velocity.x * drag,
y: whom.velocity.y * drag
@@ -1065,7 +1067,7 @@ const mobs = {
if ((!this.isShielded || isBypassShield) && this.alive) {
dmg *= tech.damageFromTech()
//mobs specific damage changes
- if (tech.isFarAwayDmg) dmg *= 1 + Math.sqrt(Math.max(500, Math.min(3000, this.distanceToPlayer())) - 500) * 0.0067 //up to 50% dmg at max range of 3500
+ if (tech.isFarAwayDmg) dmg *= 1 + Math.sqrt(Math.max(500, Math.min(3000, this.distanceToPlayer())) - 500) * 0.0067 //up to 33% dmg at max range of 3000
dmg *= this.damageReduction
//energy and heal drain should be calculated after damage boosts
if (tech.energySiphon && dmg !== Infinity && this.isDropPowerUp && m.immuneCycle < m.cycle) m.energy += Math.min(this.health, dmg) * tech.energySiphon
diff --git a/js/player.js b/js/player.js
index e0a0ecd..f5e23e9 100644
--- a/js/player.js
+++ b/js/player.js
@@ -514,7 +514,7 @@ const m = {
dmg *= m.fieldHarmReduction
if (tech.isZeno) dmg *= 0.15
if (tech.isFieldHarmReduction) dmg *= 0.5
- if (tech.isHarmMACHO) dmg *= 0.33
+ if (tech.isHarmMACHO) dmg *= 0.4
if (tech.isImmortal) dmg *= 0.66
if (tech.isHarmReduceNoKill && m.lastKillCycle + 300 < m.cycle) dmg *= 0.33
if (tech.healthDrain) dmg *= 1 + 3.33 * tech.healthDrain //tech.healthDrain = 0.03 at one stack //cause more damage
@@ -537,7 +537,7 @@ const m = {
rewind(steps) { // m.rewind(Math.floor(Math.min(599, 137 * m.energy)))
if (tech.isRewindGrenade) {
const immunityDuration = 65
- const immunityCycle = m.cycle + immunityDuration + 10
+ const immunityCycle = m.cycle + immunityDuration + 10 + tech.isPetalsExplode * 30 + tech.isCircleExplode * 21
if (m.immuneCycle < immunityCycle) m.immuneCycle = immunityCycle; //player is immune to damage until after grenades might explode...
for (let i = 1, len = Math.floor(4 + steps / 40); i < len; i++) {
@@ -1523,9 +1523,9 @@ const m = {
},
fieldUpgrades: [{
name: "field emitter",
- //
energy regen disabled if immune to harm
- description: "use energy to deflect mobs
store up to 100 energy
generate 6 energy/second",
- // description: "use energy to deflect mobs,
grab power ups, and throw blocks
generate 6 energy/s, when not immune to harm",
+ //
energy regen disabled if immune to harm
+ description: "use energy to deflect mobs
100 max energy
generate 6 energy per second",
+ // description: "use energy to deflect mobs,
grab power ups, and throw blocks
generate 6 energy/s, when not immune to harm",
effect: () => {
m.hold = function() {
if (m.isHolding) {
@@ -1551,7 +1551,7 @@ const m = {
{
name: "standing wave",
//deflecting protects you in every direction
- description: "3 oscillating shields are permanently active
increase your max energy by 60
generate 6 energy/second", //drains energy //deflecting has 50% less recoil
+ description: "3 oscillating shields are permanently active
+60 max energy
generate 6 energy per second", //drains energy //deflecting has 50% less recoil
drainCD: 0,
effect: () => {
m.fieldBlockCD = 0;
@@ -1652,7 +1652,7 @@ const m = {
},
{
name: "perfect diamagnetism",
- description: "deflecting does not drain energy
maintains functionality while inactive
generate 6 energy/second",
+ description: "deflecting does not drain energy
maintains functionality while inactive
generate 6 energy per second",
//
attract power ups from far away
// description: "attract power ups from far away
deflecting doesn't drain energy
thrown blocks have",
// description: "gain energy when blocking
no recoil when blocking",
@@ -1864,7 +1864,7 @@ const m = {
{
name: "negative mass",
//
hold blocks as if they have a lower mass
- description: "use energy to nullify gravity
reduce harm by 55%
generate 6 energy/second",
+ description: "use energy to nullify gravity
reduce harm by 55%
generate 6 energy per second",
fieldDrawRadius: 0,
effect: () => {
m.fieldFire = true;
@@ -2014,7 +2014,7 @@ const m = {
},
{
name: "molecular assembler",
- description: "excess energy used to build drones
use energy to deflect mobs
generate 12 energy/second",
+ description: "excess energy used to build drones
use energy to deflect mobs
generate 12 energy per second",
//double your default energy regeneration
effect: () => {
// m.fieldMeterColor = "#0c5"
@@ -2150,7 +2150,7 @@ const m = {
// },
{
name: "plasma torch",
- description: "use energy to emit short range plasma
damages and pushes mobs away
generate 6 energy/second",
+ description: "use energy to emit short range plasma
damages and pushes mobs away
generate 6 energy per second",
set() {
b.isExtruderOn = false
if (m.plasmaBall) {
@@ -2524,8 +2524,8 @@ const m = {
},
{
name: "time dilation",
- // description: "use energy to stop time
while time is stopped you can move and fire
and collisions do 50% less harm",
- description: "use energy to stop time
move, jump, and fire 25% faster
generate 18 energy/second",
+ // description: "use energy to stop time
while time is stopped you can move and fire
and collisions do 50% less harm",
+ description: "use energy to stop time
move, jump, and fire 25% faster
generate 18 energy per second",
set() {
m.fieldFireRate = 0.75
b.setFireCD();
@@ -2684,8 +2684,8 @@ const m = {
},
{
name: "metamaterial cloaking", //"weak photonic coupling" "electromagnetically induced transparency" "optical non-coupling" "slow light field" "electro-optic transparency"
- //
collisions do 50% less harm when cloaked
- description: "when not firing activate cloaking
+333% damage if no mob has died in 4 seconds
generate 6 energy/second",
+ //
collisions do 50% less harm when cloaked
+ description: "when not firing activate cloaking
+333% damage if no mob has died in 4 seconds
generate 6 energy per second",
effect: () => {
m.fieldFire = true;
m.fieldMeterColor = "#333";
@@ -2984,7 +2984,7 @@ const m = {
name: "pilot wave",
//
blocks can't collide with intangible mobs
//field radius decreases out of line of sight
- description: "use energy to guide blocks
unlock tech from other fields
generate 6 energy/second",
+ description: "use energy to guide blocks
unlock tech from other fields
generate 6 energy per second",
effect: () => {
m.fieldPhase = 0;
m.fieldPosition = {
@@ -3180,7 +3180,7 @@ const m = {
{
name: "wormhole",
//wormholes attract blocks and power ups
- description: "use energy to tunnel through a wormhole
4% chance to duplicate spawned power ups
generate 6 energy/second", //
bullets may also traverse wormholes
+ description: "use energy to tunnel through a wormhole
4% chance to duplicate spawned power ups
generate 6 energy per second", //
bullets may also traverse wormholes
drain: 0,
effect: function() {
m.duplicateChance = 0.04
diff --git a/js/spawn.js b/js/spawn.js
index 94741b7..f84383a 100644
--- a/js/spawn.js
+++ b/js/spawn.js
@@ -51,7 +51,7 @@ const spawn = {
this[pick](x, y);
}
- if (tech.isMoreMobs) {
+ if (tech.isMoreMobs || (tech.isDuplicateBoss && Math.random() < tech.duplicationChance())) {
const pick = this.pickList[Math.floor(Math.random() * this.pickList.length)];
this[pick](x, y);
}
@@ -66,7 +66,7 @@ const spawn = {
this[pick](x + Math.round((Math.random() - 0.5) * 20) + i * size * 2.5, y + Math.round((Math.random() - 0.5) * 20), size);
}
}
- if (tech.isMoreMobs) {
+ if (tech.isMoreMobs || (tech.isDuplicateBoss && Math.random() < tech.duplicationChance())) {
for (let i = 0; i < num; ++i) {
const pick = this.pickList[Math.floor(Math.random() * this.pickList.length)];
this[pick](x + Math.round((Math.random() - 0.5) * 20) + i * size * 2.5, y + Math.round((Math.random() - 0.5) * 20), size);
@@ -109,7 +109,7 @@ const spawn = {
}
},
secondaryBossChance(x, y) {
- if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) {
+ if (tech.isDuplicateBoss && Math.random() < tech.duplicationChance()) {
tech.isScaleMobsWithDuplication = true
spawn.randomLevelBoss(x, y);
tech.isScaleMobsWithDuplication = false
@@ -215,12 +215,12 @@ const spawn = {
//aoe damage to player
if (m.immuneCycle < m.cycle && Vector.magnitude(Vector.sub(player.position, this.position)) < this.radius) {
- const DRAIN = tech.isRadioactiveResistance ? 0.07 * 0.25 : 0.07
+ const DRAIN = tech.isRadioactiveResistance ? 0.05 * 0.25 : 0.05
if (m.energy > DRAIN) {
if (m.immuneCycle < m.cycle) m.energy -= DRAIN
} else {
m.energy = 0;
- m.damage((tech.isRadioactiveResistance ? 0.007 * 0.25 : 0.007) * simulation.dmgScale)
+ m.damage((tech.isRadioactiveResistance ? 0.005 * 0.25 : 0.005) * simulation.dmgScale)
simulation.drawList.push({ //add dmg to draw queue
x: this.position.x,
y: this.position.y,
@@ -5564,8 +5564,10 @@ const spawn = {
for (let i = 0; i < nodes; ++i) {
angle -= 0.15 + i * 0.008
- mag -= 5
- spawn.snakeBody(x + mag * Math.cos(angle), y + mag * Math.sin(angle), 20);
+ mag -= (i < 2) ? -15 : 5
+ spawn.snakeBody(x + mag * Math.cos(angle), y + mag * Math.sin(angle), i === 0 ? 25 : 20);
+ // mag -= 5
+ // spawn.snakeBody(x + mag * Math.cos(angle), y + mag * Math.sin(angle), 20);
if (i === 0) mob[mob.length - 1].snakeHeadID = me.id
mob[mob.length - 1].previousTailID = previousTailID
previousTailID = mob[mob.length - 1].id
@@ -5609,11 +5611,11 @@ const spawn = {
mobs.spawn(x + mag * Math.cos(angle), y + mag * Math.sin(angle), 8, radius, color1); //"rgb(55,170,170)"
let me = mob[mob.length - 1];
me.isBoss = true;
- me.accelMag = 0.0004 + 0.0003 * Math.sqrt(simulation.accelScale)
+ me.accelMag = 0.00045 + 0.0002 * Math.sqrt(simulation.accelScale)
me.memory = 250;
me.laserRange = 500;
Matter.Body.setDensity(me, 0.00165 + 0.00011 * Math.sqrt(simulation.difficulty)); //extra dense //normal is 0.001 //makes effective life much larger
- me.startingDamageReduction = 0.25 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1)
+ me.startingDamageReduction = 0.2 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1)
me.damageReduction = 0
me.isInvulnerable = true
@@ -5642,15 +5644,13 @@ const spawn = {
let previousTailID = 0
for (let i = 0; i < nodes; ++i) {
angle -= 0.15 + i * 0.008
- mag -= 5
- spawn.snakeBody(x + mag * Math.cos(angle), y + mag * Math.sin(angle), 20);
+ mag -= (i < 2) ? -15 : 5
+ spawn.snakeBody(x + mag * Math.cos(angle), y + mag * Math.sin(angle), i === 0 ? 25 : 20);
if (i === 0) mob[mob.length - 1].snakeHeadID = me.id
mob[mob.length - 1].previousTailID = previousTailID
previousTailID = mob[mob.length - 1].id
}
-
this.constrain2AdjacentMobs(nodes, Math.random() * 0.06 + 0.01);
-
for (let i = mob.length - 1, len = i - nodes; i > len; i--) { //set alternating colors
if (i % 2) {
mob[i].fill = "#333"
@@ -5683,11 +5683,11 @@ const spawn = {
mobs.spawn(x, y, 8, radius, "rgba(0,180,180,0.4)");
let me = mob[mob.length - 1];
me.collisionFilter.mask = cat.bullet | cat.player | cat.mob //| cat.body
- me.accelMag = 0.0006 * simulation.accelScale;
+ me.accelMag = 0.0007 * simulation.accelScale;
me.leaveBody = Math.random() < 0.33 ? true : false;
me.showHealthBar = false;
me.isDropPowerUp = false;
- Matter.Body.setDensity(me, 0.003); //normal is 0.001
+ Matter.Body.setDensity(me, 0.005); //normal is 0.001
me.frictionAir = 0.015;
me.isSnakeTail = true;
me.stroke = "transparent"
diff --git a/js/tech.js b/js/tech.js
index 56a2335..a5a7209 100644
--- a/js/tech.js
+++ b/js/tech.js
@@ -232,7 +232,7 @@ const tech = {
if (tech.isEnergyLoss) dmg *= 1.55
if (tech.OccamDamage) dmg *= tech.OccamDamage
if (tech.isTechDebt) dmg *= Math.max(41 / (tech.totalCount + 21), 4 - 0.15 * tech.totalCount)
- if (tech.isAxion && tech.isHarmMACHO) dmg *= 1 + 0.75 * (1 - m.harmReduction())
+ if (tech.isAxion && tech.isHarmMACHO) dmg *= 2 - m.harmReduction()
if (tech.isFlipFlopDamage && tech.isFlipFlopOn) dmg *= 1.555
if (tech.isAnthropicDamage && tech.isDeathAvoidedThisLevel) dmg *= 2.3703599
if (tech.isDupDamage) dmg *= 1 + Math.min(1, tech.duplicationChance())
@@ -249,7 +249,7 @@ const tech = {
if (tech.isNoFireDamage && m.cycle > m.fireCDcycle + 120) dmg *= 2
if (tech.isSpeedDamage) dmg *= 1 + Math.min(0.66, player.speed * 0.0165)
if (tech.isBotDamage) dmg *= 1 + 0.06 * b.totalBots()
- if (tech.isDamageAfterKillNoRegen && m.lastKillCycle + 300 > m.cycle) dmg *= 1.5
+ if (tech.isDamageAfterKillNoRegen && m.lastKillCycle + 300 > m.cycle) dmg *= 1.6
if (m.isSneakAttack && m.cycle > m.lastKillCycle + 240) dmg *= tech.sneakAttackDmg
return dmg * tech.slowFire * tech.aimDamage
},
@@ -328,7 +328,7 @@ const tech = {
},
{
name: "ad hoc",
- description: `spawn a ${powerUps.orb.heal()}, ${powerUps.orb.research(1)}, field, ${powerUps.orb.ammo(1)}, or tech
for every gun in your inventory`,
+ description: `for each gun in your inventory
spawn a ${powerUps.orb.heal()}, ${powerUps.orb.research(1)}, field, ${powerUps.orb.ammo(1)}, or tech`,
maxCount: 1, //random power up
count: 0,
frequency: 1,
@@ -357,7 +357,7 @@ const tech = {
},
{
name: "applied science",
- description: `get a random guntech
for each gun in your inventory`, //spawn ${powerUps.orb.research(1)} and
+ description: `for each gun in your inventory
get a random guntech`, //spawn ${powerUps.orb.research(1)} and
maxCount: 9,
count: 0,
isNonRefundable: true,
@@ -392,6 +392,47 @@ const tech = {
},
remove() {}
},
+ {
+ name: "arsenal",
+ // descriptionFunction() {
+ // return `increase damage by ${14 * b.inventory.length}%
14% for each gun in your inventory`
+ // },
+ description: "for each gun in your inventory
+13% damage",
+ maxCount: 1,
+ count: 0,
+ frequency: 1,
+ frequencyDefault: 1,
+ allowed() {
+ return true
+ },
+ requires: "",
+ effect() {
+ tech.isDamageForGuns = true;
+ },
+ remove() {
+ tech.isDamageForGuns = false;
+ }
+ },
+ {
+ name: "active cooling",
+ description: "for each gun in your inventory
+20% fire rate",
+ maxCount: 1,
+ count: 0,
+ frequency: 1,
+ frequencyDefault: 1,
+ allowed() {
+ return true
+ },
+ requires: "",
+ effect() {
+ tech.isFireRateForGuns = true;
+ b.setFireCD();
+ },
+ remove() {
+ tech.isFireRateForGuns = false;
+ b.setFireCD();
+ }
+ },
{
name: "integrated armament",
link: `integrated armament`,
@@ -419,7 +460,7 @@ const tech = {
simulation.boldActiveGunHUD();
}, 1000);
},
- description: "while your first gun is equipped
reduce harm by 13% for each of your guns",
+ description: "if your first gun is equipped
+13% defense for each of your guns",
maxCount: 1,
count: 0,
frequency: 1,
@@ -466,51 +507,10 @@ const tech = {
// }
}
},
- {
- name: "arsenal",
- // descriptionFunction() {
- // return `increase damage by ${14 * b.inventory.length}%
14% for each gun in your inventory`
- // },
- description: "increase damage by 13%
for each gun in your inventory",
- maxCount: 1,
- count: 0,
- frequency: 1,
- frequencyDefault: 1,
- allowed() {
- return true
- },
- requires: "",
- effect() {
- tech.isDamageForGuns = true;
- },
- remove() {
- tech.isDamageForGuns = false;
- }
- },
- {
- name: "active cooling",
- description: "20% decreased delay after firing
for each gun in your inventory",
- maxCount: 1,
- count: 0,
- frequency: 1,
- frequencyDefault: 1,
- allowed() {
- return true
- },
- requires: "",
- effect() {
- tech.isFireRateForGuns = true;
- b.setFireCD();
- },
- remove() {
- tech.isFireRateForGuns = false;
- b.setFireCD();
- }
- },
{
name: "supply chain",
junk: 0.05,
- descriptionFunction() { return `double your current ammo for all guns` },
+ descriptionFunction() { return `for each gun in your inventory
double your current ammo` },
maxCount: 9,
count: 0,
frequency: 1,
@@ -581,7 +581,7 @@ const tech = {
},
{
name: "catabolism",
- description: `firing while out of ammo spawns ${powerUps.orb.ammo(4)}
but it reduces your maximum health by 1`,
+ description: `if you fire while out of ammo
spawn ${powerUps.orb.ammo(4)} and –1 maximum health`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -599,7 +599,7 @@ const tech = {
},
{
name: "exciton",
- description: `increase damage by 88%, but
${powerUps.orb.ammo()} will no longer spawn`,
+ description: `+88% damage
${powerUps.orb.ammo()} can't spawn`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -618,7 +618,7 @@ const tech = {
{
name: "desublimated ammunition",
link: `desublimated ammunition`,
- description: `every other shot uses no ammo when crouching`,
+ description: `if crouching
alternating shots use no ammo`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -636,7 +636,7 @@ const tech = {
},
{
name: "gun turret",
- description: "reduce harm by 66% when crouching",
+ description: "if crouching
+66% defense ",
maxCount: 1,
count: 0,
frequency: 1,
@@ -654,7 +654,7 @@ const tech = {
},
{
name: "dead reckoning",
- description: "increase damage by 36% when at rest",
+ description: "if your speed is 0
+36% damage",
maxCount: 9,
count: 0,
frequency: 1,
@@ -670,7 +670,7 @@ const tech = {
},
{
name: "Higgs mechanism",
- description: "while firing your position is locked
50% decreased delay after firing",
+ description: "if firing
+50% fire rate and your position is locked",
maxCount: 1,
count: 0,
frequency: 1,
@@ -694,7 +694,7 @@ const tech = {
},
{
name: "squirrel-cage rotor",
- description: "move and jump 30% faster
take 5% more harm",
+ description: "+30% movement and jumping
–5% defense",
maxCount: 9,
count: 0,
frequency: 1,
@@ -742,7 +742,7 @@ const tech = {
// },
{
name: "Newton's 1st law",
- description: "moving at high speeds
reduces harm by up to 66%",
+ description: "defense is proportional to your speed
up to +66% defense at 40 speed",
maxCount: 1,
count: 0,
frequency: 1,
@@ -760,7 +760,7 @@ const tech = {
},
{
name: "Newton's 2nd law",
- description: "moving at high speeds
increases damage by up to 66%",
+ description: "damage is proportional to your speed
up to +66% damage at 40 speed",
maxCount: 1,
count: 0,
frequency: 1,
@@ -776,7 +776,8 @@ const tech = {
},
{
name: "kinetic bombardment",
- description: "increase damage by up to 33% at a distance
of up to 50 player widths from the target",
+ description: "damage is proportional to mob distance
up to +33% damage at 3000 displacement",
+ // description: "increase damage by up to 33% at a distance
of up to 50 player widths from the target",
maxCount: 1,
count: 0,
frequency: 1,
@@ -792,7 +793,7 @@ const tech = {
},
{
name: "regression",
- description: "bullet collisions increase vulnerability to
damage by 5% for mobs (0.25% for bosses)",
+ description: "bullet collisions increase vulnerability to
damage by +5% for mobs (+0.25% for bosses)",
maxCount: 1,
count: 0,
frequency: 1,
@@ -809,7 +810,7 @@ const tech = {
{
name: "microstates",
link: `microstates`,
- description: "increase damage by 7%
for every 10 active projectiles",
+ description: "for each active bullets / bots
+0.7% damage",
maxCount: 1,
count: 0,
frequency: 1,
@@ -825,7 +826,7 @@ const tech = {
},
{
name: "simulated annealing",
- description: "increase damage by 20%
20% increased delay after firing",
+ description: "+20% damage
–20% fire rate",
maxCount: 1,
count: 0,
frequency: 1,
@@ -842,7 +843,7 @@ const tech = {
},
{
name: "heuristics",
- description: "33% decreased delay after firing",
+ description: "+33% fire rate",
maxCount: 9,
count: 0,
frequency: 1,
@@ -861,7 +862,7 @@ const tech = {
{
name: "fracture analysis",
- description: "bullet impacts do 400% damage
to stunned mobs",
+ description: "if a mob is stunned it takes
+400% damage from bullet impacts",
maxCount: 1,
count: 0,
frequency: 2,
@@ -879,7 +880,7 @@ const tech = {
},
{
name: "thermal runaway",
- description: "mobs explode when they die",
+ description: "after mobs die
they explode",
maxCount: 1,
count: 0,
frequency: 1,
@@ -897,7 +898,7 @@ const tech = {
},
{
name: "shear stress",
- description: "mobs release a nail when they die
nails target nearby mobs",
+ description: "after mobs die
they release a nail that targets nearby mobs",
maxCount: 9,
count: 0,
frequency: 1,
@@ -916,7 +917,7 @@ const tech = {
{
name: "zoospore vector",
link: `zoospore vector`,
- description: "mobs produce spores when they die
10% chance",
+ description: "after mobs die
they have a +10% chance to grow spores",
maxCount: 9,
count: 0,
frequency: 1,
@@ -939,7 +940,7 @@ const tech = {
},
{
name: "reaction inhibitor",
- description: "mobs spawn with 13% less health",
+ description: "mobs spawn with –13% health",
maxCount: 3,
count: 0,
frequency: 1,
@@ -962,7 +963,7 @@ const tech = {
},
{
name: "propagator",
- description: "increase damage by 67%, but after
mobs die lose 0.5 seconds of time",
+ description: "after mobs die advance time 0.5 seconds
+67% damage",
maxCount: 1,
count: 0,
frequency: 1,
@@ -980,7 +981,7 @@ const tech = {
},
{
name: "decorrelation",
- description: "reduce harm by 70% after not activating
your gun or field for 2 seconds",
+ description: "if your gun or field are unused for 2 seconds
+70% defense",
maxCount: 1,
count: 0,
frequency: 1,
@@ -1017,7 +1018,7 @@ const tech = {
{
name: "scrap bots",
link: `scrap bots`,
- description: "33% chance after killing a mob to build
a scrap bot that operates for 14 seconds",
+ description: "after mobs die you have a +33% chance
to build scrap bots that operate for 14 seconds",
maxCount: 3,
count: 0,
frequency: 1,
@@ -1037,7 +1038,7 @@ const tech = {
{
name: "scrap refit",
link: `scrap refit`,
- description: "killing a mob resets your functional scrap bots
to 14 seconds of operation",
+ description: "after mobs die
reset scrap bots to 14 seconds of operation",
maxCount: 1,
count: 0,
frequency: 3,
@@ -1348,7 +1349,7 @@ const tech = {
{
name: "dynamo-bot",
link: `dynamo-bot`,
- description: "a bot damages mobs while it traces your path
regen 7 energy per second when it's near",
+ description: "a bot damages mobs while it traces your path
when it's near generate 7 energy per second",
maxCount: 9,
count: 0,
frequency: 1,
@@ -1372,7 +1373,7 @@ const tech = {
{
name: "dynamo-bot upgrade",
link: `dynamo-bot upgrade`,
- description: "convert your bots to dynamo-bots
increase regen to 23 energy per second",
+ description: "convert your bots to dynamo-bots
when it's near generate 23 energy per second",
maxCount: 1,
count: 0,
frequency: 3,
@@ -1460,7 +1461,7 @@ const tech = {
},
{
name: "perimeter defense",
- description: "reduce harm by 6%
for each of your permanent bots",
+ description: "for each permanent bot
+6% defense",
maxCount: 1,
count: 0,
frequency: 2,
@@ -1479,7 +1480,7 @@ const tech = {
},
{
name: "network effect",
- description: "increase damage by 6%
for each of your permanent bots",
+ description: "for each permanent bot
+6% damage",
maxCount: 1,
count: 0,
frequency: 2,
@@ -1556,7 +1557,7 @@ const tech = {
},
{
name: "mass driver",
- description: "increase block collision damage by 300%",
+ description: "+300% block collision damage",
maxCount: 1,
count: 0,
frequency: 1,
@@ -1575,7 +1576,7 @@ const tech = {
{
name: "inflation",
link: `inflation`,
- description: "throwing a block expands it by 300%
holding a block reduces harm by 85%",
+ description: "if holding a block +85% defense
after throwing a block it expands 300%",
maxCount: 1,
count: 0,
frequency: 3,
@@ -1593,7 +1594,7 @@ const tech = {
},
{
name: "restitution",
- description: "throwing a block makes it very bouncy
increase block collision damage by 150%",
+ description: "+150% block collision damage
after throwing a block it becomes very bouncy",
maxCount: 1,
count: 0,
frequency: 3,
@@ -1611,7 +1612,7 @@ const tech = {
},
{
name: "flywheel",
- description: "after a mob dies its block is flung at mobs
increase block collision damage by 150%",
+ description: "+150% block collision damage
after a mob dies its block is flung at mobs",
maxCount: 1,
count: 0,
frequency: 3,
@@ -1645,27 +1646,9 @@ const tech = {
// tech.isBlockBullets = false
// }
// },
- // {
- // name: "inelastic collision",
- // description: "holding a block reduces harm by 85%
increase block collision damage by 150%",
- // maxCount: 1,
- // count: 0,
- // frequency: 3,
- // frequencyDefault: 3,
- // allowed() {
- // return tech.blockDamage > 0.075 && m.fieldUpgrades[m.fieldMode].name !== "pilot wave" && m.fieldUpgrades[m.fieldMode].name !== "wormhole" && !tech.isEnergyHealth
- // },
- // requires: "mass driver, a field that can hold things, not mass-energy",
- // effect() {
- // tech.isBlockHarm = true
- // },
- // remove() {
- // tech.isBlockHarm = false
- // }
- // },
{
name: "buckling",
- description: `if a block you threw kills a mob
spawn 1 ${powerUps.orb.heal()}, ${powerUps.orb.ammo()}, or ${powerUps.orb.research(1)}`,
+ description: `if a block you threw kills a mob
spawn either ${powerUps.orb.heal()}, ${powerUps.orb.ammo()}, or ${powerUps.orb.research(1)}`,
maxCount: 1,
count: 0,
frequency: 3,
@@ -1683,7 +1666,7 @@ const tech = {
},
{
name: "Pauli exclusion",
- description: `after receiving harm from a collision become
immune to harm for 2.5 extra seconds`,
+ description: `after mob collisions
become invulnerable for +2.5 seconds`,
maxCount: 9,
count: 0,
frequency: 1,
@@ -1700,7 +1683,7 @@ const tech = {
},
{
name: "spin–statistics theorem",
- description: `become immune to harm for 1.75 seconds
once every 7 seconds`,
+ description: `every 7 seconds
become invulnerable for 1.75 seconds`,
maxCount: 3,
count: 0,
frequency: 1,
@@ -1718,7 +1701,7 @@ const tech = {
},
{
name: "NOR gate",
- description: "if flip-flop is in the OFF state
take 0 harm from collisions with mobs",
+ description: "if flip-flop is OFF
become invulnerable to your next collision",
maxCount: 1,
count: 0,
frequency: 4,
@@ -1736,7 +1719,7 @@ const tech = {
},
{
name: "shape-memory alloy",
- description: "if flip-flop is in the ON state
increase your maximum health by 200",
+ description: "if flip-flop is ON
+200 maximum health",
maxCount: 1,
count: 0,
frequency: 4,
@@ -1793,27 +1776,9 @@ const tech = {
m.eyeFillColor = 'transparent'
}
},
- // {
- // name: "spacetime interval",
- // description: "increase damage by 93%, but after mobs die
move into the past / future while ON / OFF",
- // maxCount: 1,
- // count: 0,
- // frequency: 4,
- // frequencyDefault: 4,
- // allowed() {
- // return tech.isFlipFlop || tech.isRelay
- // },
- // requires: "ON/OFF tech",
- // effect() {
- // tech.isDeathSkipTime = true
- // },
- // remove() {
- // tech.isDeathSkipTime = false
- // }
- // },
{
name: "NAND gate",
- description: "if in the ON state
do 55.5% more damage",
+ description: "if ON
+55.5% damage",
maxCount: 1,
count: 0,
frequency: 4,
@@ -1831,7 +1796,7 @@ const tech = {
},
{
name: "transistor",
- description: "if ON regen 20 energy per second
if OFF drain 1 energy per second",
+ description: "if ON generate 20 energy per second
if OFF drain 1 energy per second",
maxCount: 1,
count: 0,
frequency: 4,
@@ -1887,7 +1852,7 @@ const tech = {
},
{
name: "lithium-ion",
- description: "if relay switch is in the ON state
increase your maximum energy by 300",
+ description: "if relay switch is ON
+300 maximum energy",
maxCount: 1,
count: 0,
frequency: 4,
@@ -1905,28 +1870,9 @@ const tech = {
m.setMaxEnergy()
}
},
- // {
- // name: "shift registers",
- // description: "set to the ON state
at the start of a level",
- // maxCount: 1,
- // count: 0,
- // frequency: 4,
- // frequencyDefault: 4,
- // allowed() {
- // return tech.isFlipFlopEnergy || tech.isFlipFlopDamage || tech.isFlipFlopHarm || tech.relayIce
- // },
- // requires: "2 ON/OFF techs",
- // effect() {
- // tech.isFlipFlopLevelReset = true;
- // },
- // remove() {
- // tech.isFlipFlopLevelReset = false;
- // }
- // },
-
{
name: "thermocouple",
- description: "if relay switch is in the ON state
condense 4-13 ice IX crystals every second",
+ description: "if relay switch is ON
condense 4-13 ice IX crystals per second",
maxCount: 9,
count: 0,
frequency: 4,
@@ -1942,6 +1888,42 @@ const tech = {
tech.relayIce = 0
}
},
+ {
+ name: "freezer burn",
+ description: "mobs frozen while below 33% health die",
+ maxCount: 1,
+ count: 0,
+ frequency: 2,
+ frequencyDefault: 2,
+ allowed() {
+ return tech.isIceCrystals || tech.isSporeFreeze || tech.isIceField || tech.isIceShot || tech.relayIce || tech.isNeedleIce || tech.blockingIce > 1
+ },
+ requires: "a freeze effect",
+ effect() {
+ tech.isIceKill = true
+ },
+ remove() {
+ tech.isIceKill = false
+ }
+ },
+ {
+ name: "flash freeze",
+ description: "mobs frozen while above 66% health
have their health reduced to 66%",
+ maxCount: 1,
+ count: 0,
+ frequency: 2,
+ frequencyDefault: 2,
+ allowed() {
+ return tech.isIceCrystals || tech.isSporeFreeze || tech.isIceField || tech.isIceShot || tech.relayIce || tech.isNeedleIce || tech.blockingIce > 1
+ },
+ requires: "a freeze effect",
+ effect() {
+ tech.isIceMaxHealthLoss = true
+ },
+ remove() {
+ tech.isIceMaxHealthLoss = false
+ }
+ },
{
name: "crystallizer",
description: "after frozen mobs die they
shatter into ice IX crystals",
@@ -1980,7 +1962,7 @@ const tech = {
},
{
name: "superfluidity",
- description: "freeze effects are applied to a small area",
+ description: "freeze effects are applied
to a small area around the target",
maxCount: 1,
count: 0,
frequency: 2,
@@ -1996,27 +1978,9 @@ const tech = {
tech.isAoESlow = false
}
},
- // {
- // name: "osmoprotectant",
- // description: `collisions with stunned or frozen mobs
cause you no harm`,
- // maxCount: 1,
- // count: 0,
- // frequency: 2,
- // frequencyDefault: 2,
- // allowed() {
- // return tech.isStunField || tech.isExplosionStun || tech.isMineStun || tech.oneSuperBall || tech.isHarmFreeze || tech.isIceField || tech.relayIce || tech.isNeedleIce || tech.isIceCrystals || tech.isSporeFreeze || tech.isAoESlow || tech.isFreezeMobs || tech.isCloakStun || tech.orbitBotCount > 1 || tech.isWormholeDamage || tech.blockingIce > 1 || tech.iceIXOnDeath || tech.isIceShot
- // },
- // requires: "a freezing or stunning effect",
- // effect() {
- // tech.isFreezeHarmImmune = true;
- // },
- // remove() {
- // tech.isFreezeHarmImmune = false;
- // }
- // },
{
name: "liquid cooling",
- description: `freeze all mobs for 7 seconds
after receiving harm`,
+ description: `after losing health
freeze all mobs for 7 seconds`,
maxCount: 1,
count: 0,
frequency: 2,
@@ -2034,7 +1998,7 @@ const tech = {
},
{
name: "clock gating",
- description: `slow time by 50% after receiving harm
reduce harm by 20%`,
+ description: `after losing health slow time by 50%
+20% defense`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -2052,7 +2016,7 @@ const tech = {
},
{
name: "MACHO",
- description: "a massive but compact object slowly follows you
take 66% less harm inside it's halo",
+ description: "a massive but compact object slowly follows you
if you are inside the MACHO +60% defense",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2075,7 +2039,7 @@ const tech = {
},
{
name: "axion",
- description: "while inside the MACHO 75% of your total
harm reduction is added to your damage",
+ description: "while inside the MACHO
defense increases damage",
maxCount: 1,
count: 0,
frequency: 2,
@@ -2093,7 +2057,7 @@ const tech = {
},
{
name: "ablative drones",
- description: "rebuild your broken parts as drones
chance to occur after receiving harm",
+ description: "after losing health there is a chance
to rebuild your broken parts as drones",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2113,7 +2077,7 @@ const tech = {
{
name: "non-Newtonian armor",
link: `non-Newtonian armor`,
- description: "for 10 seconds after receiving harm
reduce harm by 66%",
+ description: "after mob collisions
+66% defense for 10 seconds",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2131,7 +2095,7 @@ const tech = {
},
// {
// name: "radiative equilibrium",
- // description: "for 10 seconds after receiving harm
increase damage by 200%",
+ // description: "for 10 seconds after receiving defense
increase damage by 200%",
// maxCount: 1,
// count: 0,
// frequency: 1,
@@ -2149,7 +2113,8 @@ const tech = {
// },
{
name: "CPT symmetry",
- description: "charge, parity, and time invert to undo harm
rewind (1.5—5) seconds for (66—220) energy",
+ // description: "charge, parity, and time invert to undo defense
rewind (1.5—5) seconds for (66—220) energy",
+ description: "if you have 66 energy after losing health
rewind time for 44 energy per second",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2168,7 +2133,7 @@ const tech = {
{
name: "causality bots",
link: `causality bots`,
- description: "when you rewind, build several bots
that protect you for about 9 seconds",
+ description: "after you rewind, build several bots
that protect you for about 9 seconds",
maxCount: 3,
count: 0,
frequency: 2,
@@ -2188,7 +2153,7 @@ const tech = {
{
name: "causality bombs",
link: `causality bombs`,
- description: "when you rewind drop several grenades
become immune to harm until they explode",
+ description: "after you rewind drop several grenades
become invulnerable until they explode",
maxCount: 1,
count: 0,
frequency: 2,
@@ -2206,7 +2171,7 @@ const tech = {
},
{
name: "piezoelectricity",
- description: "colliding with mobs gives you 2048 energy", //
reduce harm by 15%
+ description: "if you collide with a mob
generate 2048 energy", //
reduce defense by 15%
maxCount: 1,
count: 0,
frequency: 1,
@@ -2225,8 +2190,8 @@ const tech = {
},
{
name: "mass-energy equivalence",
- // description: "energy protects you instead of health
√ of harm reduction reduces max energy",
- description: "energy protects you instead of health
harm reduction effects provide no benefit",
+ // description: "energy protects you instead of health
√ of defense reduction reduces max energy",
+ description: "energy protects you instead of health
defense provides no benefit",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2260,7 +2225,7 @@ const tech = {
{
name: "1st ionization energy",
link: `1st ionization energy`,
- description: `each ${powerUps.orb.heal()} you collect
increases your maximum energy by 10`,
+ description: `after you collect ${powerUps.orb.heal()}
+10 maximum energy`,
maxCount: 1,
count: 0,
frequency: 2,
@@ -2287,7 +2252,7 @@ const tech = {
},
{
name: "weak interaction",
- description: "each unused power up at the end of a level
adds 10 maximum energy", // (up to 51 health per level)",
+ description: "for each unused power up at the end of a level
+10 maximum energy", // (up to 51 health per level)",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2305,7 +2270,7 @@ const tech = {
},
{
name: "electroweak interaction",
- description: "unused power ups at the end of each level
are still activated (selections are random)",
+ description: "unused power ups at the end of a level
are still activated (selections are random)",
maxCount: 1,
count: 0,
frequency: 2,
@@ -2323,7 +2288,7 @@ const tech = {
},
{
name: "electronegativity",
- description: "increase damage by 1%
for every 8 stored energy",
+ description: "+1% damage per 8 stored energy",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2339,8 +2304,8 @@ const tech = {
},
{
name: "ground state",
- description: "increase your max energy by 200
reduce passive energy regen by 66%",
- // description: "reduce harm by 66%
you no longer passively regenerate energy",
+ description: "+200 maximum energy
–66% passive energy generation",
+ // description: "reduce defense by 66%
you no longer passively regenerate energy",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2362,7 +2327,7 @@ const tech = {
},
{
name: "heat engine",
- description: `increase damage by 50%, but
reduce maximum energy by 50`,
+ description: `+50% damage
–50 maximum energy`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -2382,7 +2347,7 @@ const tech = {
},
{
name: "exothermic process",
- description: "increase damage by 50%
if a mob dies drain energy by 25%",
+ description: "+50% damage
after mobs die –25% energy",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2398,7 +2363,7 @@ const tech = {
},
{
name: "Gibbs free energy",
- description: `increase damage by 0.7%
for each energy below 100`,
+ description: `for each energy below 100
+0.7% damage`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -2416,7 +2381,7 @@ const tech = {
},
{
name: "overcharge",
- description: "increase your maximum energy by 60
+10% JUNK to the potential tech pool",
+ description: "+60 maximum energy
+10% JUNK to tech pool",
maxCount: 9,
count: 0,
frequency: 1,
@@ -2440,7 +2405,7 @@ const tech = {
},
{
name: "Maxwell's demon",
- description: "energy above your max decays 95% slower
+10% JUNK to the potential tech pool",
+ description: "energy above your max decays 95% slower
+10% JUNK to tech pool",
maxCount: 1,
count: 0,
frequency: 2,
@@ -2464,7 +2429,7 @@ const tech = {
},
{
name: "inductive coupling",
- description: "passive energy regen is increased by 700%
but you only regen when crouched",
+ description: "if crouched +700% passive energy generation
if not crouched energy generation is disabled",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2503,7 +2468,7 @@ const tech = {
},
{
name: "waste heat recovery",
- description: "if a mob has died in the last 5 seconds
regen 5% of max energy every second",
+ description: "if a mob has died in the last 5 seconds
generate 5% of max energy per second",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2519,7 +2484,7 @@ const tech = {
},
{
name: "recycling",
- description: "if a mob has died in the last 5 seconds
regain 0.5% of max health every second",
+ description: "if a mob has died in the last 5 seconds
recover 0.5% of max health per second",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2538,7 +2503,7 @@ const tech = {
},
{
name: "parasitism",
- description: "if a mob has died in the last 5 seconds inhibit
passive energy regen and increase damage 50%",
+ description: "if a mob has died in the last 5 seconds
+60% damage, inhibit energy generation",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2561,7 +2526,7 @@ const tech = {
},
{
name: "torpor",
- description: "if a mob has not died in the last 5 seconds
reduce harm by 66%",
+ description: "if a mob has not died in the last 5 seconds
+66% defense",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2579,8 +2544,8 @@ const tech = {
},
{
name: "Zeno's paradox",
- description: "reduce harm by 85%, but every 5 seconds
remove 5% of your current health",
- // description: "every 5 seconds remove 1/10 of your health
reduce harm by 90%",
+ description: "+85% defense
–5% of current health every 5 seconds",
+ // description: "every 5 seconds remove 1/10 of your health
reduce defense by 90%",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2596,7 +2561,7 @@ const tech = {
},
{
name: "negative feedback",
- description: "increase damage by 5%
for every 10 health below 100",
+ description: "for each 10 health below 100
+5% damage",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2614,7 +2579,7 @@ const tech = {
},
{
name: "antiscience",
- description: "increase damage by 90%
lose 11 health when you pick up a tech",
+ description: "+90% damage
–11 health after picking up a tech",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2632,7 +2597,7 @@ const tech = {
},
{
name: "fluoroantimonic acid",
- description: "increase damage by 35%
when your health is above 100",
+ description: "if your health is above 100
+35% damage",
maxCount: 1,
count: 0,
frequency: 2,
@@ -2650,7 +2615,7 @@ const tech = {
},
{
name: "tungsten carbide",
- description: "increase your maximum health by 100
landings that force you to crouch cause harm",
+ description: "+100 maximum health
lose health after hard landings",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2671,7 +2636,7 @@ const tech = {
},
{
name: "quenching",
- description: `over healing from ${powerUps.orb.heal()} does harm
but it also increase your maximum health`,
+ description: `after over healing from ${powerUps.orb.heal()}
gain max health and lose current health`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -2689,7 +2654,7 @@ const tech = {
},
{
name: "negative entropy",
- description: `at the start of each level
spawn ${powerUps.orb.heal()} for every 26 missing health`,
+ description: `at the start of each level
for every 26 missing health spawn ${powerUps.orb.heal()}`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -2708,7 +2673,7 @@ const tech = {
},
{
name: "adiabatic healing",
- description: `${powerUps.orb.heal()} are 100% more effective
+5% JUNK to the potential tech pool`,
+ description: `${powerUps.orb.heal()} are 100% more effective
+5% JUNK to tech pool`,
maxCount: 3,
count: 0,
frequency: 1,
@@ -2737,7 +2702,7 @@ const tech = {
},
{
name: "enthalpy",
- description: `doing damage can spawn ${powerUps.orb.heal(1)}
take 10% more harm`,
+ description: `doing damage has a chance to spawn ${powerUps.orb.heal(1)}
–10% defense`,
maxCount: 9,
count: 0,
frequency: 1,
@@ -2804,7 +2769,7 @@ const tech = {
},
{
name: "weak anthropic principle",
- description: "after anthropic principle prevents your death
add 50% duplication chance for that level",
+ description: "after anthropic principle prevents your death
+50% duplication chance for that level",
maxCount: 1,
count: 0,
frequency: 3,
@@ -2824,7 +2789,7 @@ const tech = {
},
{
name: "strong anthropic principle",
- description: "after anthropic principle prevents your death
increase damage by 137.03599% for that level",
+ description: "after anthropic principle prevents your death
+137.03599% damage for that level",
maxCount: 1,
count: 0,
frequency: 3,
@@ -2842,7 +2807,7 @@ const tech = {
},
{
name: "quantum immortality",
- description: "reduce harm by 33%
after dying, continue in an alternate reality",
+ description: "+33% defense
after dying, continue in an alternate reality",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2859,7 +2824,7 @@ const tech = {
{
name: "non-unitary operator",
link: `non-unitary operator`,
- description: "reduce combat difficulty by 2 levels, but
after a collision enter an alternate reality",
+ description: "reduce combat difficulty by 2 levels
after a collision enter an alternate reality",
maxCount: 1,
count: 0,
frequency: 1,
@@ -2901,7 +2866,7 @@ const tech = {
{
name: "Ψ(t) collapse",
link: `Ψ(t) collapse`,
- description: `enter an alternate reality after you research
spawn ${powerUps.orb.research(14)}`,
+ description: `after you research enter an alternate reality
spawn ${powerUps.orb.research(14)}`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -2968,7 +2933,7 @@ const tech = {
},
{
name: "perturbation theory",
- description: `66% decreased delay after firing
when you have no ${powerUps.orb.research(1)} in your inventory`,
+ description: `if you have no ${powerUps.orb.research(1)} in your inventory
+66% fire rate`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -2990,7 +2955,7 @@ const tech = {
},
{
name: "ansatz",
- description: `after choosing a field, tech, or gun
spawn ${powerUps.orb.research(2)}if you have no ${powerUps.orb.research(1)} in your inventory`,
+ description: `after choosing a field, tech, or gun
if you have no ${powerUps.orb.research(1)} in your inventory spawn ${powerUps.orb.research(2)}`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -3008,7 +2973,7 @@ const tech = {
},
{
name: "Bayesian statistics",
- description: `increase damage by 3.8%
for each ${powerUps.orb.research(1)} in your inventory`,
+ description: `for each ${powerUps.orb.research(1)} in your inventory
+3.8% damage`,
maxCount: 1,
count: 0,
frequency: 2,
@@ -3083,7 +3048,7 @@ const tech = {
},
{
name: "emergence",
- description: "tech, fields, and guns have 5 choices
+5% JUNK to the potential tech pool",
+ description: "tech, fields, and guns have 5 choices
+5% JUNK to tech pool",
maxCount: 1,
count: 0,
frequency: 1,
@@ -3231,7 +3196,7 @@ const tech = {
{
name: "eternalism",
// description: `increase damage by 60%, but time doesn't pause
while choosing a choosing a field, tech, or gun`, //${powerUps.orb.heal()} or
- description: "increase damage by 40%, but
time can't be paused (time dilation still works)",
+ description: "+40% damage
time can't be paused (time can be dilated)",
maxCount: 1,
count: 0,
frequency: 1,
@@ -3253,7 +3218,7 @@ const tech = {
// description: `increase damage by 300%, but reduce damage
by 10% for tech you have learned`,
descriptionFunction() {
// return `increase damage by 300% minus 15%
for each tech you have learned (${Math.floor(100*(4 - 0.14 * tech.totalCount))-100}%)`
- return `increase damage by 300% minus 15%
for each tech you have learned (${Math.floor(100*(Math.max(41 / (tech.totalCount + 21), 4 - 0.15 * tech.totalCount) ))-100}%)`
+ return `+300% damage –15% damage
for each tech you have learned (${Math.floor(100*(Math.max(41 / (tech.totalCount + 21), 4 - 0.15 * tech.totalCount) ))-100}%)`
},
maxCount: 1,
count: 0,
@@ -3304,7 +3269,7 @@ const tech = {
},
{
name: "dark patterns",
- description: "reduce combat difficulty by 1 level
+31% JUNK to the potential tech pool",
+ description: "reduce combat difficulty by 1 level
+31% JUNK to tech pool",
maxCount: 1,
count: 0,
frequency: 1,
@@ -3434,7 +3399,7 @@ const tech = {
},
{
name: "replication",
- description: "10% chance to duplicate spawned power ups
+30% JUNK to the potential tech pool",
+ description: "+10% chance to duplicate spawned power ups
+30% JUNK to tech pool",
maxCount: 9,
count: 0,
frequency: 1,
@@ -3461,7 +3426,7 @@ const tech = {
},
{
name: "stimulated emission",
- description: "15% chance to duplicate spawned power ups
but, after a collision eject 1 tech",
+ description: "+15% chance to duplicate spawned power ups
but, after a collision eject 1 tech",
maxCount: 1,
count: 0,
frequency: 1,
@@ -3482,7 +3447,7 @@ const tech = {
},
{
name: "metastability",
- description: "12% chance to duplicate spawned power ups
duplicates explode with a 3 second half-life",
+ description: "+12% chance to duplicate spawned power ups
duplicates explode with a 3 second half-life",
maxCount: 1,
count: 0,
frequency: 1,
@@ -3503,7 +3468,7 @@ const tech = {
},
{
name: "correlated damage",
- description: "your chance to duplicate power ups
increases your damage by the same percent",
+ description: "duplication increases damage",
maxCount: 1,
count: 0,
frequency: 1,
@@ -3521,7 +3486,7 @@ const tech = {
},
{
name: "parthenogenesis",
- description: " bosses have a 2x chance to be duplicated, but their
health is increased by your duplication chance",
+ description: "your duplication has a chance to
duplicate mobs and bosses",
maxCount: 1,
count: 0,
frequency: 1,
@@ -3596,7 +3561,7 @@ const tech = {
// return `randomly remove ${this.removePercent * 100}% of your tech
for each removed gain ${this.damagePerRemoved * 100}% damage`
// },
descriptionFunction() {
- return `randomly remove half your tech
for each removed gain ${this.damagePerRemoved * 100 }% damage (~${(this.count === 0) ? this.damagePerRemoved * 50 * tech.totalCount : tech.OccamDamage*100}%)`
+ return `randomly remove half your tech
for each removed +${this.damagePerRemoved * 100 }% damage (~${(this.count === 0) ? this.damagePerRemoved * 50 * tech.totalCount : tech.OccamDamage*100}%)`
},
maxCount: 1,
count: 0,
@@ -3678,7 +3643,7 @@ const tech = {
},
{
name: "strange attractor",
- descriptionFunction() { return `use ${powerUps.orb.research(2)} to spawn 1 tech with double
your duplication chance (${(2*tech.duplicationChance()*100).toFixed(0)}%)` },
+ descriptionFunction() { return `use ${powerUps.orb.research(2)} to spawn 1 tech with
double your duplication chance (${(2*tech.duplicationChance()*100).toFixed(0)}%)` },
// description: `use ${powerUps.orb.research(2)} to spawn 1 tech with double
your duplication chance (${(2*tech.duplicationChance()*100).toFixed(0)}%)`,
maxCount: 1,
count: 0,
@@ -3815,7 +3780,7 @@ const tech = {
// },
{
name: "needle ice",
- description: `when needles impact walls
they chip off 1-2 freezing ice IX crystals`,
+ description: `after needles impact walls
they chip off 1-2 freezing ice IX crystals`,
isGunTech: true,
maxCount: 1,
count: 0,
@@ -3834,7 +3799,7 @@ const tech = {
},
{
name: "nanowires",
- description: `needles tunnel through blocks and map
increase needle damage by 20%`,
+ description: `needles tunnel through blocks and map
+20% needle damage`,
isGunTech: true,
maxCount: 1,
count: 0,
@@ -3924,78 +3889,9 @@ const tech = {
tech.isRivets = false
}
},
- // {
- // name: "slug",
- // description: "shotgun lobs 1 huge bullet",
- // isGunTech: true,
- // maxCount: 1,
- // count: 0,
- // frequency: 2,
- // frequencyDefault: 2,
- // allowed() {
- // return tech.haveGunCheck("shotgun") && !tech.isNailShot && !tech.isIncendiary && !tech.isIceShot && !tech.isFoamShot && !tech.isSporeWorm && !tech.isNeedles
- // },
- // requires: "shotgun, not nail-shot, foam-shot, worm-shot, ice-shot, needle-shot",
- // effect() {
- // tech.isSlugShot = true;
- // for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
- // if (b.guns[i].name === "shotgun") {
- // b.guns[i].do = function() {
- // if (!input.field && input.down) {
- // ctx.beginPath()
- // const speed = input.down ? 212 : 160
- // const v = { x: speed * Math.cos(m.angle), y: speed * Math.sin(m.angle) } //m.Vy / 2 + removed to make the path less jerky
- // const where = { x: m.pos.x, y: m.pos.y }
- // for (let i = 0; i < 20; i++) {
- // v.x *= 0.9712
- // v.y = v.y * 0.977 + 9.87
- // where.x += v.x
- // where.y += v.y
- // ctx.lineTo(where.x, where.y)
- // }
- // ctx.strokeStyle = "rgba(68, 68, 68, 0.2)" //color.map
- // ctx.lineWidth = 2
- // ctx.stroke()
- // }
- // }
- // break
- // }
- // }
- // },
- // remove() {
- // if (tech.isSlugShot) {
- // for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
- // if (b.guns[i].name === "shotgun") {
- // b.guns[i].do = function() {}
- // break
- // }
- // }
- // }
- // tech.isSlugShot = false;
- // }
- // },
- // {
- // name: "super sized",
- // description: `increase super ball radius by 14%
increases damage by about 27%`,
- // isGunTech: true,
- // maxCount: 9,
- // count: 0,
- // frequency: 2,
- // frequencyDefault: 2,
- // allowed() {
- // return tech.haveGunCheck("super balls")
- // },
- // requires: "super balls",
- // effect() {
- // tech.bulletSize += 0.14
- // },
- // remove() {
- // tech.bulletSize = 1;
- // }
- // },
{
name: "caliber",
- description: `rivets, needles, super balls, and nails
have 16% increased mass and physical damage`,
+ description: `rivets, needles, super balls, and nails
have +16% mass and physical damage`,
isGunTech: true,
maxCount: 9,
count: 0,
@@ -4014,7 +3910,7 @@ const tech = {
},
{
name: "pneumatic actuator",
- description: "nail gun takes no time to ramp up
to its shortest delay after firing",
+ description: "nail gun takes no time to ramp up
to its fastest fire rate",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4127,7 +4023,7 @@ const tech = {
{
name: "irradiated nails",
link: `irradiated nails`,
- description: "nails, needles, and rivets are radioactive
about 90% more damage over 3 seconds",
+ description: "nails, needles, and rivets are radioactive
about +90% damage over 3 seconds",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4147,7 +4043,7 @@ const tech = {
{
name: "6s half-life",
link: `6s half-life`,
- description: "nails are made of plutonium-238
increase damage by 100% over 6 seconds",
+ description: "nails are made of plutonium-238
+100% damage over 6 seconds",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4187,7 +4083,7 @@ const tech = {
{
name: "spin-statistics",
link: `spin-statistics`,
- description: "immune to harm while firing the shotgun
shotgun has 50% fewer shots",
+ description: "invulnerable while firing the shotgun
shotgun has 50% fewer shots",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4226,7 +4122,7 @@ const tech = {
},
{
name: "Newton's 3rd law",
- description: "shotgun recoil is increased
decrease shotgun delay after firing by 66%",
+ description: "+66% shotgun fire rate and recoil",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4246,7 +4142,7 @@ const tech = {
{
name: "Noether violation",
link: `Noether violation`,
- description: "increase shotgun damage 60%
its recoil is increased and reversed",
+ description: "+60% shotgun damage
shotgun recoil is increased and reversed",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4437,7 +4333,7 @@ const tech = {
//
{
name: "phase velocity",
- description: "matter wave propagates faster through solids
increase matter wave damage by 20%",
+ description: "matter wave propagates faster through solids
+20% matter wave damage",
// description: "matter wave propagates faster through solids
up by 3000% in the map and 760% in blocks",
isGunTech: true,
maxCount: 1,
@@ -4457,7 +4353,7 @@ const tech = {
},
{
name: "bound state",
- description: "wave packets reflect backwards 2 times
range is reduced by 25%",
+ description: "wave packets reflect backwards 2 times
–25% range",
isGunTech: true,
maxCount: 9,
count: 0,
@@ -4476,7 +4372,7 @@ const tech = {
},
{
name: "amplitude",
- description: "wave packet amplitude is 33% higher
wave damage is increased by 37%",
+ description: "+37% wave damage and amplitude",
isGunTech: true,
maxCount: 3,
count: 0,
@@ -4497,7 +4393,7 @@ const tech = {
},
{
name: "propagation",
- description: "wave packet propagation speed is 25% slower
wave damage is increased by 37%",
+ description: "–25% wave packet propagation speed
+37% wave damage",
isGunTech: true,
maxCount: 9,
count: 0,
@@ -4558,7 +4454,7 @@ const tech = {
},
{
name: "isotropic radiator",
- description: "matter wave expands in all directions
range reduced 40% and damage increased 50%",
+ description: "matter wave expands in all directions
–40% range and +50% damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4589,7 +4485,7 @@ const tech = {
},
{
name: "cruise missile",
- description: "missiles travel 50% slower,
but have a 100% larger explosive payload",
+ description: "+100% missile explosive damage, radius
–50% missiles speed",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4608,7 +4504,7 @@ const tech = {
},
{
name: "ICBM",
- description: "cruise missiles travel 66% slower,
but have a 100% larger explosive payload",
+ description: "+100% missile explosive damage, radius
–66% missiles speed",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4627,7 +4523,7 @@ const tech = {
},
{
name: "launch system",
- description: `reduce missile launch cooldown 500%
gain 20% more missile ammo per ${powerUps.orb.ammo(1)}`,
+ description: `+500% missile fire rate
+20% missile ammo per ${powerUps.orb.ammo(1)}`,
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4695,7 +4591,7 @@ const tech = {
},
{
name: "iridium-192",
- description: "explosions release gamma radiation
100% more damage, but over 4 seconds",
+ description: "explosions release gamma radiation
+100% damage over 4 seconds",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4733,7 +4629,7 @@ const tech = {
},
{
name: "ammonium nitrate",
- description: "increase explosive damage by 24%
increase explosive radius by 24%",
+ description: "+24% explosive damage, radius",
isGunTech: true,
maxCount: 9,
count: 0,
@@ -4752,7 +4648,7 @@ const tech = {
},
{
name: "nitroglycerin",
- description: "increase explosive damage by 66%
decrease explosive radius by 33%",
+ description: "+66% explosive damage
–33% explosive radius",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4771,7 +4667,7 @@ const tech = {
},
{
name: "acetone peroxide",
- description: "increase explosive radius by 70%, but
you take 50% more harm from explosions",
+ description: "+70% explosive radius
+50% explosive self damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4791,7 +4687,7 @@ const tech = {
},
{
name: "shock wave",
- description: "mines and explosions stun for 1-2 seconds
decrease explosive damage by 30%",
+ description: "mines and explosions stun for 1-2 seconds
–30% explosive damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4808,29 +4704,9 @@ const tech = {
tech.isExplosionStun = false;
}
},
- // {
- // name: "blast mines",
- // link: `blast mines`,
- // description: "when a mine activates
it stuns nearby mobs for 2-4 seconds",
- // isGunTech: true,
- // maxCount: 1,
- // count: 0,
- // frequency: 2,
- // frequencyDefault: 2,
- // allowed() {
- // return tech.haveGunCheck("mine")
- // },
- // requires: "mines",
- // effect() {
- // tech.isMineStun = true;
- // },
- // remove() {
- // tech.isMineStun = false;
- // }
- // },
{
name: "controlled explosion",
- description: `use ${powerUps.orb.research(4)} to dynamically reduce all
explosions until they do no harm`,
+ description: `use ${powerUps.orb.research(4)} to dynamically reduce
all explosive radius to prevent self damage`,
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4853,8 +4729,8 @@ const tech = {
},
{
name: "electric armor",
- // description: "explosions do no harm
while your energy is above 98%",
- description: "explosion harm is reduced by 99%, but
they drain 15 energy and have more force",
+ // description: "explosions do no defense
while your energy is above 98%",
+ description: "instead of causing self damage explosions
drain 12 energy and have more knockback",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4873,7 +4749,7 @@ const tech = {
},
{
name: "MIRV",
- description: "fire +1 missile and grenade per shot
decrease explosion damage and radius 12%",
+ description: "fire +1 missile and grenade per shot
–12% explosion damage and radius",
isGunTech: true,
maxCount: 9,
count: 0,
@@ -4934,7 +4810,7 @@ const tech = {
},
{
name: "chain reaction",
- description: "increase grenade radius and damage 33%
blocks caught in explosions also explode",
+ description: "+33% grenade radius and damage
blocks caught in explosions also explode",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4953,7 +4829,7 @@ const tech = {
},
{
name: "flame test",
- description: "when grenades detonate they release
a colorful cluster of small explosions",
+ description: "after grenades detonate they release
a colorful cluster of small explosions",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4972,7 +4848,7 @@ const tech = {
},
{
name: "pyrotechnics",
- description: "when grenades detonate they release
a colorful circle of explosions",
+ description: "after grenades detonate they release
a colorful circle of explosions",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -4991,7 +4867,7 @@ const tech = {
},
{
name: "fireworks",
- description: "when grenades detonate they release
colorful rings petals of explosions",
+ description: "after grenades detonate they release
colorful petals of explosions",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5010,7 +4886,7 @@ const tech = {
},
{
name: "neutron bomb",
- description: "grenades are irradiated with Cf-252
does damage, harm, and drains energy",
+ description: "grenades are irradiated with Cf-252
does radioactive damage over time",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5069,7 +4945,7 @@ const tech = {
},
{
name: "nuclear transmutation",
- description: "radiation does 47% more damage and harm
nail, drone, neutron bomb, iridium, string, deflect",
+ description: "+47% radiation damage
nail, drone, neutron bomb, iridium, string, deflect",
isGunTech: true,
maxCount: 9,
count: 0,
@@ -5108,7 +4984,7 @@ const tech = {
},
{
name: "booby trap",
- description: "60% chance to drop a mine from power ups
+46% JUNK to the potential tech pool",
+ description: "60% chance to drop a mine from power ups
+46% JUNK to tech pool",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5252,7 +5128,7 @@ const tech = {
},
{
name: "mutualism",
- description: "increase spore damage by 150%
they borrow 0.5 health until they die",
+ description: "+150% spore damage
spores borrow 0.5 health until they die",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5310,7 +5186,7 @@ const tech = {
},
{
name: "annelids",
- description: "increase worm size and damage
by an average of 37%",
+ description: "+37% worm size and damage",
isGunTech: true,
maxCount: 3,
count: 0,
@@ -5349,7 +5225,7 @@ const tech = {
{
name: "anti-shear topology",
link: `anti-shear topology`,
- description: "some projectiles last 30% longer
drone, spore, worm, missile, foam, wave, neutron, ice",
+ description: "+30% projectile duration
drone, spore, worm, missile, foam, wave, neutron, ice",
isGunTech: true,
maxCount: 3,
count: 0,
@@ -5369,7 +5245,7 @@ const tech = {
{
name: "reduced tolerances",
link: `reduced tolerances`,
- description: `increase drones per ${powerUps.orb.ammo()} or energy by 66%
reduce average drone durability by 40%`,
+ description: `+66% drones per ${powerUps.orb.ammo()} and energy
–40% drone durability`,
isGunTech: true,
maxCount: 3,
count: 0,
@@ -5439,7 +5315,7 @@ const tech = {
},
{
name: "brushless motor",
- description: "drones rapidly rush towards their target
increase drone collision damage by 33%",
+ description: "drones rapidly rush towards their target
+33% drone collision damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5458,7 +5334,7 @@ const tech = {
},
{
name: "axial flux motor",
- description: "drones can rush 66% more often
increase drone collision damage by 44%",
+ description: "drones can rush 66% more often
+44% drone collision damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5478,7 +5354,7 @@ const tech = {
{
name: "irradiated drones",
link: `irradiated drones`,
- description: `the space around drones is irradiated
reduce drones per ${powerUps.orb.ammo()} or energy 75%`,
+ description: `the space around drones is irradiated
–75% drones per ${powerUps.orb.ammo()} and energy`,
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5513,7 +5389,7 @@ const tech = {
},
{
name: "beta radiation", //"control rod ejection",
- description: "reduce the average drone lifetime by 50%
increase radiation damage by 100%",
+ description: "–50% drone duration
+100% drone radiation damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5533,7 +5409,7 @@ const tech = {
{
name: "orthocyclic winding",
link: `orthocyclic winding`,
- description: "drones accelerate 66% faster
increase radiation damage by 33%",
+ description: "+66% drone acceleration
+33% radiation damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5587,7 +5463,7 @@ const tech = {
},
{
name: "surfactant",
- description: "trade your foam gun for 2 foam-bots
and upgrade all bots to foam",
+ description: "trade your foam gun for 2 foam-bots
upgrade all bots to foam",
isGunTech: true,
isRemoveGun: true,
maxCount: 1,
@@ -5639,7 +5515,7 @@ const tech = {
},
{
name: "uncertainty principle",
- description: "foam and wave particle positions are random
increase their damage by 47%",
+ description: "foam and wave positions are erratic
+47% foam and wave damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5677,7 +5553,7 @@ const tech = {
},
{
name: "aerogel",
- description: "foam bubbles float and dissipate 50% faster
increase foam damage per second by 150%",
+ description: "–50% foam duration and foam bubbles float
+150% foam damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5698,7 +5574,7 @@ const tech = {
},
{
name: "surface tension",
- description: "foam bubbles have improved adhesion which
does 41% more damage",
+ description: "+41% foam damage",
isGunTech: true,
maxCount: 9,
count: 0,
@@ -5717,7 +5593,7 @@ const tech = {
},
{
name: "foam fractionation",
- description: "foam gun bubbles are 100% larger
when you have below 300 ammo",
+ description: "if you have below 300 ammo
+100% foam gun bubble size",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5736,7 +5612,7 @@ const tech = {
},
{
name: "ideal gas law",
- description: `flush away all of your current foam ammo
gain 1200% more foam ammo from ${powerUps.orb.ammo(1)}`,
+ description: `remove all current foam ammo
+1200% foam ammo per ${powerUps.orb.ammo(1)}`,
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5763,7 +5639,7 @@ const tech = {
},
{
name: "pressure vessel",
- description: "the foam gun builds up pressure as you fire
that discharges foam after firing",
+ description: "build up charge while firing foam gun
after firing automatically discharge foam bubbles",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5814,7 +5690,7 @@ const tech = {
},
{
name: "railgun",
- description: `harpoons are 50% denser, but don't retract
gain 800% more harpoon ammo per ${powerUps.orb.ammo(1)}`,
+ description: `+50% harpoon density, but they don't retract
+800% harpoon ammo per ${powerUps.orb.ammo(1)}`,
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5852,44 +5728,6 @@ const tech = {
}
}
},
- // {
- // name: "dielectric polarization",
- // description: "firing the railgun damages nearby mobs",
- // isGunTech: true,
- // maxCount: 1,
- // count: 0,
- // frequency: 2,
- // frequencyDefault: 2,
- // allowed() {
- // return tech.haveGunCheck("railgun")
- // },
- // requires: "railgun",
- // effect() {
- // tech.isRailAreaDamage = true;
- // },
- // remove() {
- // tech.isRailAreaDamage = false;
- // }
- // },
- // {
- // name: "aerodynamic heating",
- // description: "railgun rod damage nearby mobs",
- // isGunTech: true,
- // maxCount: 1,
- // count: 0,
- // frequency: 2,
- // frequencyDefault: 2,
- // allowed() {
- // return tech.haveGunCheck("railgun")
- // },
- // requires: "railgun",
- // effect() {
- // tech.isRodAreaDamage = true;
- // },
- // remove() {
- // tech.isRodAreaDamage = false;
- // }
- // },
{
name: "grappling hook",
description: `harpoons attach to the map and pull you
your rope extends while holding fire`,
@@ -5919,7 +5757,7 @@ const tech = {
},
{
name: "bulk modulus",
- description: `become immune to harm while grappling
drains energy and prevents regen`,
+ description: `become immune to defense while grappling
drains energy and prevents generation`,
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5938,7 +5776,7 @@ const tech = {
},
{
name: "alternator",
- description: "harpoon, railgun, and grappling hook
drain 60% less energy",
+ description: "–60% harpoon energy drain",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -5977,7 +5815,7 @@ const tech = {
{
name: "Bessemer process",
descriptionFunction() {
- return `increase harpoon size and damage
by 1/10 √ harpoon ammo (${(10 * Math.sqrt(b.guns[9].ammo)).toFixed(0)}%)`
+ return `+${(10 * Math.sqrt(b.guns[9].ammo)).toFixed(0)}% harpoon size and damage
(1/10 √ harpoon ammo)`
},
// description: "increase the size of your harpoon
by 10% of √ of harpoon ammo",
isGunTech: true,
@@ -6000,7 +5838,6 @@ const tech = {
name: "smelting",
// description: `forge 3 ammo into a new harpoon
fire +1 harpoon with each shot`,
descriptionFunction() { return `forge ${(tech.isRailGun ?5:3)*(2+this.count)} ammo into a new harpoon
fire +1 harpoon with each shot` },
- // description: `spend ${powerUps.orb.ammo(2)}to upgrade the harpoon
fire +1 harpoon with each shot`,
// descriptionFunction() { return `forge ${tech.isRailGun? 10: 2} ammo into a new harpoon
fire +1 harpoon with each shot` },
isGunTech: true,
maxCount: 9,
@@ -6041,7 +5878,7 @@ const tech = {
{
name: "UHMWPE",
descriptionFunction() {
- return `increase the length of your harpoon's rope
by 1/100 of harpoon ammo (${(b.guns[9].ammo).toFixed(0)}%)`
+ return `+${(b.guns[9].ammo).toFixed(0)}% harpoon rope length
(1/100 of harpoon ammo)`
},
// description: "increase the length of your harpoon's rope
by 1% per harpoon ammo",
isGunTech: true,
@@ -6062,7 +5899,7 @@ const tech = {
},
{
name: "induction furnace",
- description: "increase the damage of your next harpoon
by 600% after using it to collect a power up",
+ description: "after using harpoon to collect a power up
+600% harpoon damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -6144,14 +5981,14 @@ const tech = {
},
{
name: "laser diode",
- description: "all lasers drain 30% less energy
affects laser-gun, laser-bot, laser-mines, pulse",
+ description: "–30% lasers energy drain
affects laser-gun, laser-bot, laser-mines, pulse",
isGunTech: true,
maxCount: 1,
count: 0,
frequency: 2,
frequencyDefault: 2,
allowed() {
- return (tech.haveGunCheck("laser") || tech.isLaserBotUpgrade || tech.isLaserMine) && tech.laserDamage === 0.16
+ return (tech.haveGunCheck("laser") || tech.isLaserBotUpgrade || tech.isLaserMine) && tech.laserDamage === 0.18
},
requires: "laser, not free-electron",
effect() {
@@ -6167,7 +6004,7 @@ const tech = {
},
{
name: "free-electron laser",
- description: "increase all laser damage by 200%
increase all laser energy drain by 250%",
+ description: "+200% laser damage
+250% laser energy drain",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -6192,7 +6029,7 @@ const tech = {
},
{
name: "relativistic momentum",
- description: "all lasers push mobs and blocks away
affects laser-gun, laser-bot, and laser-mines",
+ description: "all lasers push mobs and blocks
affects laser-gun, laser-bot, and laser-mines",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -6211,7 +6048,7 @@ const tech = {
},
{
name: "specular reflection",
- description: "+2 reflection for all lasers
affects laser-gun, laser-bot, and laser-mines",
+ description: "+2 laser reflections
affects laser-gun, laser-bot, and laser-mines",
isGunTech: true,
maxCount: 3,
count: 0,
@@ -6230,7 +6067,7 @@ const tech = {
},
{
name: "diffraction grating",
- description: `laser gains a diverging beam`,
+ description: `+1 angled laser gun beam`,
isGunTech: true,
maxCount: 9,
count: 0,
@@ -6258,7 +6095,7 @@ const tech = {
{
name: "diffuse beam",
link: `diffuse beam`,
- description: "laser beam is wider and doesn't reflect
increase full beam damage by 220%",
+ description: "laser beam is wider and doesn't reflect
220% laser damage",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -6287,7 +6124,7 @@ const tech = {
},
{
name: "output coupler",
- description: "widen diffuse laser beam by 30%
increase full beam damage by 30%",
+ description: "+30% laser beam width
30% laser damage",
isGunTech: true,
maxCount: 9,
count: 0,
@@ -6316,7 +6153,7 @@ const tech = {
},
{
name: "slow light",
- description: "laser beam is spread into your recent past
increase total beam damage by 300%",
+ description: "laser beam is spread into your recent past
+300% total beam damage",
isGunTech: true,
maxCount: 9,
count: 0,
@@ -6352,7 +6189,7 @@ const tech = {
frequency: 2,
frequencyDefault: 2,
allowed() {
- return tech.haveGunCheck("laser") && tech.laserReflections < 3 && !tech.isWideLaser && tech.laserDamage === 0.16 && !tech.isStuckOn
+ return tech.haveGunCheck("laser") && tech.laserReflections < 3 && !tech.isWideLaser && tech.laserDamage === 0.18 && !tech.isStuckOn
},
requires: "laser gun, not specular reflection, diffuse, free-electron laser, optical amplifier",
effect() {
@@ -6395,8 +6232,7 @@ const tech = {
//**************************************************
{
name: "zero point energy",
- description: `use ${powerUps.orb.research(2)}to increase your max energy by 100`,
- // description: "use 2 research to
increase your maximum energy by 74",
+ description: `use ${powerUps.orb.research(2)}
+100 maximum energy`,
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6421,7 +6257,7 @@ const tech = {
},
{
name: "spherical harmonics",
- description: "standing wave deflects 40% more efficiently
no longer deactivates with mob shields", //standing wave oscillates in a 3rd dimension
+ description: "+40% standing wave deflection efficiency
no longer deactivates on mob shields", //standing wave oscillates in a 3rd dimension
isFieldTech: true,
maxCount: 9,
count: 0,
@@ -6444,7 +6280,7 @@ const tech = {
},
{
name: "expansion",
- description: "standing wave deflects 40% more efficiently
using standing wave field expands its radius",
+ description: "+40% standing wave deflection efficiency
using standing wave field expands its radius",
// description: "use energy to expand standing wave
the field slowly contracts when not used",
isFieldTech: true,
maxCount: 1,
@@ -6486,7 +6322,7 @@ const tech = {
},
{
name: "cherenkov radiation", //deflecting and blocks
- description: "bremsstrahlung's effects are radioactive
increase damage 300% over 6 seconds",
+ description: "bremsstrahlung's effects are radioactive
+300% damage over 6 seconds",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6505,7 +6341,7 @@ const tech = {
},
{
name: "triple point",
- description: "the pressure from deflecting is used
to condense ice IX crystals",
+ description: "deflecting condenses ice IX crystals",
isFieldTech: true,
maxCount: 9,
count: 0,
@@ -6524,7 +6360,7 @@ const tech = {
},
{
name: "flux pinning",
- description: "deflecting mobs with your field
stuns them for 4 seconds",
+ description: "after deflecting a mob
it is stunned for upto 4 seconds",
isFieldTech: true,
maxCount: 9,
count: 0,
@@ -6543,7 +6379,7 @@ const tech = {
},
{
name: "eddy current brake",
- description: "perfect diamagnetism slows nearby mobs
effect radius scales with stored energy",
+ description: "perfect diamagnetism slows nearby mobs
effect radius scales with stored energy",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6562,7 +6398,7 @@ const tech = {
},
{
name: "Meissner effect",
- description: "increase perfect diamagnetism field
radius by 55% and circular arc by 22°",
+ description: "+55% perfect diamagnetism radius
+22° perfect diamagnetism circular arc",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6581,8 +6417,8 @@ const tech = {
},
{
name: "tessellation",
- description: `use ${powerUps.orb.research(2)}to reduce harm by 50%`,
- // description: "use 4 research
reduce harm by 50%",
+ description: `use ${powerUps.orb.research(2)}
+50% defense`,
+ // description: "use 4 research
reduce defense by 50%",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6605,7 +6441,7 @@ const tech = {
},
{
name: "radiative equilibrium",
- description: "for 10 seconds after receiving harm
increase damage by 200%",
+ description: "after losing health
+200% damage for 10 seconds",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6624,7 +6460,7 @@ const tech = {
},
{
name: "neutronium",
- description: `reduce harm by 90% when your field is active
move and jump 25% slower`,
+ description: `move and jump 25% slower
if your field is active +90% defense`,
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6652,7 +6488,7 @@ const tech = {
},
{
name: "annihilation",
- description: "touching normal mobs annihilates them
but drains 33% of your maximum energy",
+ description: "after colliding with non-boss mobs
they are annihilated and –33% energy",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6709,7 +6545,7 @@ const tech = {
// },
{
name: "pair production",
- description: "picking up a power up gives you 200 energy",
+ description: "after picking up a power up
+200 energy",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6755,7 +6591,7 @@ const tech = {
},
{
name: "bot prototypes",
- description: `use ${powerUps.orb.research(3)}to build
2 random bots and upgrade all bots to that type`,
+ description: `use ${powerUps.orb.research(3)}to build 2 random bots
and upgrade all bots to that type`,
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6956,7 +6792,7 @@ const tech = {
// },
{
name: "degenerate matter",
- description: "reduce harm by 75% while your field is active",
+ description: "if your field is active
+75% defense",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7034,7 +6870,7 @@ const tech = {
{
name: "plasma jet",
link: `plasma jet`,
- description: `use ${powerUps.orb.research(2)} to increase plasma torch range 50%`,
+ description: `use ${powerUps.orb.research(2)}
+50% plasma torch range`,
// description: "use 1 research to
increase plasma torch's range by 50%",
isFieldTech: true,
maxCount: 1,
@@ -7138,7 +6974,7 @@ const tech = {
},
{
name: "retrocausality",
- description: "time dilation uses energy to rewind your
health, velocity, and position up to 10 s",
+ description: "time dilation uses energy to rewind your
health, velocity, and position up to 10 seconds",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7160,7 +6996,7 @@ const tech = {
},
{
name: "Lorentz transformation",
- description: `use ${powerUps.orb.research(3)}to increase your time rate
move, jump, and shoot 50% faster`,
+ description: `use ${powerUps.orb.research(3)}
+50% movement, jumping, and fire rate`,
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7187,7 +7023,7 @@ const tech = {
},
{
name: "time crystals",
- description: "quadruple your base energy regeneration",
+ description: "+400% passive energy generation",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7208,7 +7044,7 @@ const tech = {
},
{
name: "no-cloning theorem",
- description: `45% chance to duplicate spawned power ups
after a mob dies, lose 2% duplication chance`,
+ description: `+45% chance to duplicate spawned power ups
after a mob dies –2% duplication`,
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7230,7 +7066,7 @@ const tech = {
},
{
name: "symbiosis",
- description: "after a mob dies, lose 0.45 max health
bosses spawn 1 extra tech after they die",
+ description: "bosses spawn +1 tech after they die
after a mob dies –0.45 maximum health",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7247,54 +7083,10 @@ const tech = {
tech.isAddRemoveMaxHealth = false
}
},
- // {
- // name: "symbiosis",
- // description: "after a mob dies, lose 0.5 max health
after picking up tech gain 10 max health",
- // isFieldTech: true,
- // maxCount: 1,
- // count: 0,
- // frequency: 2,
- // frequencyDefault: 2,
- // allowed() {
- // return (m.fieldUpgrades[m.fieldMode].name === "time dilation" || m.fieldUpgrades[m.fieldMode].name === "metamaterial cloaking")
- // },
- // requires: "metamaterial cloaking",
- // effect() {
- // tech.isAddRemoveMaxHealth = true
- // tech.extraMaxHealth += 0.1 //increase max health
- // m.setMaxHealth();
- // },
- // remove() {
- // tech.isAddRemoveMaxHealth = false
- // }
- // },
- // {
- // name: "symbiosis",
- // description: "if a mob dies, lose 1% max health
at the end of each level spawn 2 tech",
- // isFieldTech: true,
- // maxCount: 1,
- // count: 0,
- // frequency: 2,
- // frequencyDefault: 2,
- // allowed() {
- // return (m.fieldUpgrades[m.fieldMode].name === "time dilation" || m.fieldUpgrades[m.fieldMode].name === "metamaterial cloaking") && !tech.removeMaxHealthOnKill
- // },
- // requires: "metamaterial cloaking, not -symbiosis-",
- // effect() {
- // tech.removeMaxHealthOnKill = 0.01
- // tech.isSpawnExitTech = true
- // // for (let i = 0; i < 2; i++) powerUps.spawn(player.position.x + 90 * (Math.random() - 0.5), player.position.y + 90 * (Math.random() - 0.5), "tech", false); //start
- // for (let i = 0; i < 2; i++) powerUps.spawn(level.exit.x + 10 * (Math.random() - 0.5), level.exit.y - 100 + 10 * (Math.random() - 0.5), "tech", false) //exit
- // },
- // remove() {
- // tech.removeMaxHealthOnKill = 0
- // tech.isSpawnExitTech = false
- // }
- // },
{
name: "boson composite",
link: `boson composite`,
- description: "intangible to blocks and mobs while cloaked
passing through shields drains your energy",
+ description: "while cloaked you are intangible
to blocks and mobs, but shields drains energy",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7316,7 +7108,7 @@ const tech = {
},
{
name: "dazzler",
- description: "decloaking stuns nearby mobs
and drains 10 energy",
+ description: "after decloaking stun nearby mobs
and –10 energy",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7354,7 +7146,7 @@ const tech = {
},
{
name: "dynamical systems",
- description: `use ${powerUps.orb.research(2)}to increase your damage by 35%`,
+ description: `use ${powerUps.orb.research(2)}
+35% damage`,
// description: "use 1 research
increase your damage by 35%",
isFieldTech: true,
maxCount: 1,
@@ -7378,7 +7170,7 @@ const tech = {
},
{
name: "discrete optimization",
- description: "increase damage by 35%
35% increased delay after firing",
+ description: "+35% damage
–35% fire rate",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7418,7 +7210,7 @@ const tech = {
// },
{
name: "WIMPs",
- description: `at the end of each level spawn ${powerUps.orb.research(5)}
and a harmful particle that slowly chases you`,
+ description: `at the end of each level spawn ${powerUps.orb.research(5)}
and a harmful particle that slowly chases you`,
isFieldTech: true,
maxCount: 9,
count: 0,
@@ -7439,7 +7231,7 @@ const tech = {
},
{
name: "virtual particles",
- description: `use ${powerUps.orb.research(4)}to exploit your field for a
12% chance to duplicate spawned power ups`,
+ description: `use ${powerUps.orb.research(4)}to exploit your field for a
+12% chance to duplicate spawned power ups`,
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7465,7 +7257,7 @@ const tech = {
},
{
name: "Penrose process",
- description: "after a block falls into a wormhole
you gain 53 energy",
+ description: "after a block falls into a wormhole
+53 energy",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7485,7 +7277,7 @@ const tech = {
{
name: "transdimensional worms",
link: `transdimensional worms`,
- description: "when blocks fall into a wormhole
higher dimension worms are summoned",
+ description: "after blocks fall into a wormhole
spawn a worm",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7532,7 +7324,7 @@ const tech = {
},
{
name: "cosmic string",
- description: "stun and do radioactive damage to mobs
if you tunnel through them with a wormhole",
+ description: "after tunneling through mobs with a wormhole
stun then and do radioactive damage",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7551,7 +7343,7 @@ const tech = {
},
{
name: "invariant",
- description: "use energy to pause time
while placing your wormhole",
+ description: "while placing your wormhole
use energy to pause time",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7570,7 +7362,7 @@ const tech = {
},
{
name: "charmed baryons",
- description: `wormholes require zero energy
move and jump 33% slower`,
+ description: `–33% movement and jumping
wormholes drain zero energy`,
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7598,7 +7390,7 @@ const tech = {
},
{
name: "affine connection",
- description: "wormholes can tunnel through the map
at 200% increased energy cost",
+ description: "wormholes can tunnel through the map
for +200% energy drain",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -7765,7 +7557,7 @@ const tech = {
},
{
name: "-WIMP-",
- description: "experiment: harmful particles slowly chase you",
+ description: "experiment: harmful particles slowly chase you",
maxCount: 1,
count: 0,
frequency: 0,
@@ -8153,7 +7945,7 @@ const tech = {
},
{
name: "catabolysis",
- description: `set your maximum health to 1
double your current ammo 10 times`,
+ description: `set your maximum health to 1
double your current ammo 10 times`,
maxCount: 1,
count: 0,
frequency: 0,
@@ -9168,7 +8960,7 @@ const tech = {
},
{
name: "expert system",
- description: "spawn a tech power up
+64% JUNK to the potential tech pool",
+ description: "spawn a tech power up
+64% JUNK to tech pool",
maxCount: 9,
count: 0,
frequency: 0,
@@ -9323,7 +9115,7 @@ const tech = {
},
{
name: "diegesis",
- description: "indicate gun fire delay
through a rotation of your head",
+ description: "indicate fire cooldown
through a rotation of your head",
maxCount: 1,
count: 0,
frequency: 0,
@@ -10385,5 +10177,7 @@ const tech = {
isClusterExplode: null,
isCircleExplode: null,
isPetalsExplode: null,
- isDeathSkipTime: null
+ isDeathSkipTime: null,
+ isIceMaxHealthLoss: null,
+ isIceKill: null
}
\ No newline at end of file
diff --git a/style.css b/style.css
index abd7c01..f3e1632 100644
--- a/style.css
+++ b/style.css
@@ -692,10 +692,10 @@ summary {
/* letter-spacing: 2px; */
}
-.color-harm {
+.color-defense {
/* color: */
/* text-shadow: #FC0 1px 0 10px; */
- background-color: hsla(51, 100%, 71%, 0.187);
+ background-color: hsla(227, 9%, 71%, 0.279);
padding: 2px;
border-radius: 4px;
letter-spacing: 1px;
diff --git a/todo.txt b/todo.txt
index 4b05dd4..07e27a0 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,12 +1,71 @@
******************************************************** NEXT PATCH **************************************************
-new community map: dripp!
- enable the 13 community maps in settings
+tech: freezer burn - if a mob is frozen while below 33% health, it dies
+tech: flash freeze - if a mob is above 66% health it's health is set to 66%
+snakeBoss 1st tail mob is larger and farther from boss
+parthenogenesis your duplication effects extend to duplicate mobs and bosses
+WIMPs do 33% less harm (because they are hard to deal with on reactor)
+MACHO 66->60% defense
+axion 75%-> 100% of defense added to damage
+full tech wording rewrite (I probably made a few typos)
+ increase damage by 10% -> +10% damage
+ 20% fire delay reduction -> +20% fire rate
+ taking harm -> losing health
+ 50% harm reduction -> +50% defense
+ new defense text effect
+ extra long minus sign - -> –
+
+bug fixes
*********************************************************** TODO *****************************************************
+scrap bots can't move?
+
+if a nail critical hits, fire a nail at the nearest mob
+ similar to mob death targeted nail code
+nail gun needs a small damage buff
+
+JUNK tech: Pacifism
+ You cannot attack mobs, mobs cannot attack you
+ over write the mob.damage and player.damage methods
+
+JUNK tech: incubation: spawn something after 5 minutes
+ 4 bots?
+
+mob mechanic: beacon
+ periodically add locations to an array
+ teleport back to a location in the array
+ at random
+ if velocity not facing player?
+
+super balls do damage after bouncing?
+ how to check for bounce?
+ maybe just increases damage after hitting a mob
+
+put a shield on a shield on a shield ...
+
+dark mode:
+ look at Tinyfolks, 20 minutes till dawn
+
+super short range foam that acts like flame thrower
+ high fire rate
+ short life spawn
+ start large?
+ extra ammo?
+ or only 1/2 of ammo is used?
+
+laser tech where bots move around and follow you while firing lasers in the direction you are looking
+ they fire when you fire?
+ they aim at player history aim location, with 1s delay
+ bots position spread out perpendicular to the direction you are looking
+ can they get stuck?
+ maybe absolution position, no collide
+ do they need to be physics objects then?
+ make a special bot type for this
+ beam is similar to diffuse beam
+
block manufacturing - molecular assembler tech
Holding r-click will create a slowly increasing in size block, which will be thrown on release