From 8c1539fa681a46a2e5f9f8fe3e1f750aac34ec37 Mon Sep 17 00:00:00 2001 From: landgreen Date: Wed, 20 Oct 2021 21:27:45 -0700 Subject: [PATCH] needle ice tech: needle ice - needles make 1-2 ice 9 after they impact a wall needle shot gun fires 1 less needle most harpoon tech are about 5% better JUNK tech: negative friction - you speed up when you touch walls no-cloning theorem: 42% -> 38% dup chance symbiosis: 2 tech -> 1-2 tech after a boss dies quenching gives 10% less max health for over heal --- .DS_Store | Bin 6148 -> 6148 bytes js/bullet.js | 12 ++++++++---- js/level.js | 4 ++-- js/mob.js | 3 ++- js/powerup.js | 3 +-- js/tech.js | 52 +++++++++++++++++++++++++++++++++++++++++++------- todo.txt | 28 +++++++++++++++++++++------ 7 files changed, 80 insertions(+), 22 deletions(-) diff --git a/.DS_Store b/.DS_Store index e2f89469e79e138e03155aeb083532751aa3e2f9..1cb0958cff5bc630ea33cce878a018c73eba6246 100644 GIT binary patch delta 21 ccmZoMXffEJ#msaiZn6%uFQe?{D&{T`084WQbpQYW delta 21 ccmZoMXffEJ#msc(&14;BUq+eDRm@!?08y<5`Tzg` diff --git a/js/bullet.js b/js/bullet.js index 421d7a2..7bc2a28 100644 --- a/js/bullet.js +++ b/js/bullet.js @@ -3099,6 +3099,10 @@ const b = { this.do = function() { if (!Matter.Query.collides(this, map).length) this.force.y += this.mass * 0.001; } + if (tech.isNeedleIce) { + b.iceIX(5 + 5 * Math.random(), 2 * Math.PI * Math.random(), this.position) // iceIX(speed = 0, dir = m.angle + Math.PI * 2 * Math.random(), where = { x: m.pos.x + 30 * Math.cos(m.angle), y: m.pos.y + 30 * Math.sin(m.angle) }) { + if (0.5 < Math.random()) b.iceIX(5 + 5 * Math.random(), 2 * Math.PI * Math.random(), this.position) + } } else if (this.speed < 30) { this.force.y += this.mass * 0.001; //no gravity until it slows down to improve aiming } @@ -4332,7 +4336,7 @@ const b = { b.foam(where, { x: SPEED * Math.cos(angle), y: SPEED * Math.sin(angle) }, 5 + 8 * Math.random()) } } else if (tech.isNeedleShot) { - const number = 11 * (tech.isShotgunReversed ? 1.6 : 1) + const number = 9 * (tech.isShotgunReversed ? 1.6 : 1) const spread = (input.down ? 0.03 : 0.05) let angle = m.angle - (number - 1) * spread * 0.5 for (let i = 0; i < number; i++) { @@ -5187,8 +5191,8 @@ const b = { } //look for closest mob in player's LoS const dir = { x: Math.cos(m.angle), y: Math.sin(m.angle) }; //make a vector for the player's direction of length 1; used in dot product - const length = tech.isLargeHarpoon ? 1 + 0.09 * Math.sqrt(this.ammo) : 1 - const totalCycles = 7 * (tech.isFilament ? 1 + 0.009 * Math.min(100, this.ammo) : 1) * Math.sqrt(length) + const length = tech.isLargeHarpoon ? 1 + 0.1 * Math.sqrt(this.ammo) : 1 + const totalCycles = 7 * (tech.isFilament ? 1 + 0.01 * Math.min(110, this.ammo) : 1) * Math.sqrt(length) if (input.down) { // if (true) { // if (m.immuneCycle < m.cycle + 60) m.immuneCycle = m.cycle + tech.collisionImmuneCycles; //player is immune to damage for 30 cycles @@ -5214,7 +5218,7 @@ const b = { m.fireCDcycle = m.cycle + 50 * b.fireCDscale; // cool down // } } else if (tech.extraHarpoons) { - const range = 450 * (tech.isFilament ? 1 + Math.min(100, this.ammo) / 100 : 1) + const range = 450 * (tech.isFilament ? 1 + 0.005 * Math.min(110, this.ammo) : 1) let targetCount = 0 for (let i = 0, len = mob.length; i < len; ++i) { if (mob[i].alive && !mob[i].isBadTarget && !mob[i].shield && Matter.Query.ray(map, m.pos, mob[i].position).length === 0) { diff --git a/js/level.js b/js/level.js index 0953163..60cc39e 100644 --- a/js/level.js +++ b/js/level.js @@ -16,8 +16,8 @@ const level = { // level.difficultyIncrease(30) //30 is near max on hard //60 is near max on why // simulation.isHorizontalFlipped = true // m.setField("plasma torch") - // b.giveGuns("railgun") - // tech.giveTech("aerodynamic heating") + // b.giveGuns("nail gun") + // tech.giveTech("negative friction") // for (let i = 0; i < 2; i++) tech.giveTech("refractory metal") // tech.giveTech("all-stars") // for (let i = 0; i < 3; i++) tech.giveTech("overcharge") diff --git a/js/mob.js b/js/mob.js index 2cb8afb..2ccd008 100644 --- a/js/mob.js +++ b/js/mob.js @@ -1139,7 +1139,8 @@ const mobs = { } if (tech.isAddRemoveMaxHealth) { if (this.isBoss && this.isDropPowerUp) { - for (let i = 0; i < 2; i++) powerUps.spawn(this.position.x, this.position.y, "tech", false) //exit + powerUps.spawn(this.position.x, this.position.y, "tech", false) + if (0.5 < Math.random()) powerUps.spawn(this.position.x, this.position.y, "tech", false) } else { const amount = 0.01 if (tech.isEnergyHealth) { diff --git a/js/powerup.js b/js/powerup.js index fb7b57c..d3f2b1a 100644 --- a/js/powerup.js +++ b/js/powerup.js @@ -424,10 +424,9 @@ const powerUps = { simulation.makeTextLog(`m.health += ${(healOutput).toFixed(3)}`) //
${m.health.toFixed(3)} if (tech.isOverHeal && overHeal > 0) { //tech quenching - const scaledOverHeal = overHeal * 0.8 + const scaledOverHeal = overHeal * 0.7 m.damage(scaledOverHeal); simulation.makeTextLog(`m.health -= ${(scaledOverHeal).toFixed(3)}`) //
${m.health.toFixed(3)} - //draw damage simulation.drawList.push({ //add dmg to draw queue x: m.pos.x, diff --git a/js/tech.js b/js/tech.js index 0f355d0..0388f89 100644 --- a/js/tech.js +++ b/js/tech.js @@ -3700,6 +3700,25 @@ } } }, + { + name: "needle ice", + description: `when needles impact walls
they chip off 1-2 freezing ice IX crystals`, + isGunTech: true, + maxCount: 1, + count: 0, + frequency: 2, + frequencyDefault: 2, + allowed() { + return tech.isNeedles || tech.isNeedleShot + }, + requires: "needle gun, needle-shot", + effect() { + tech.isNeedleIce = true + }, + remove() { + tech.isNeedleIce = false + } + }, { name: "ceramics", description: `needles and harpoons pierce shields
directly damaging shielded mobs`, @@ -5088,7 +5107,7 @@ }, { name: "surfactant", - description: "gain 3 foam-bots and upgrade bots to foam
remove your foam gun", + description: "trade your foam gun for 2 foam-bots
and upgrade all bots to foam
", isGunTech: true, maxCount: 1, count: 0, @@ -5099,11 +5118,11 @@ isNonRefundable: true, requires: "NOT EXPERIMENT MODE, foam gun", allowed() { - return tech.haveGunCheck("foam", false) && !tech.isFoamBotUpgrade + return tech.haveGunCheck("foam", false) && !b.hasBotUpgrade() }, effect() { tech.giveTech("foam-bot upgrade") - for (let i = 0; i < 3; i++) { + for (let i = 0; i < 2; i++) { b.foamBot() tech.foamBotCount++; } @@ -6221,7 +6240,7 @@ }, { name: "no-cloning theorem", - description: `42% chance to duplicate spawned power ups
after a mob dies, lose 1% duplication chance`, + description: `38% chance to duplicate spawned power ups
after a mob dies, lose 1% duplication chance`, isFieldTech: true, maxCount: 1, count: 0, @@ -6232,9 +6251,9 @@ }, requires: "cloaking, wormhole or time dilation and below 100% duplication chance", effect() { - tech.cloakDuplication = 0.42 + tech.cloakDuplication = 0.38 powerUps.setDupChance(); //needed after adjusting duplication chance - if (!build.isExperimentSelection) simulation.circleFlare(0.42); + if (!build.isExperimentSelection) simulation.circleFlare(0.38); }, remove() { tech.cloakDuplication = 0 @@ -6243,7 +6262,7 @@ }, { name: "symbiosis", - description: "after a mob dies, lose 1 max health
bosses spawn 2 extra tech after they die", + description: "after a mob dies, lose 1 max health
bosses spawn 1-2 extra tech after they die", isFieldTech: true, maxCount: 1, count: 0, @@ -6770,6 +6789,25 @@ // }, // remove() {} // }, + { + name: "negative friction", + description: "when you touch walls you speed up instead of slowing down. It's actually pretty cool, seriously.", + maxCount: 1, + count: 0, + frequency: 0, + isExperimentHide: true, + isJunk: true, + allowed() { + return true + }, + requires: "", + effect() { + player.friction = -0.5 + }, + remove() { + if (this.count) player.friction = 0.002 + } + }, { name: "bounce", description: "you bounce off things. It's annoying, but not that bad.", diff --git a/todo.txt b/todo.txt index f3b07eb..0ece240 100644 --- a/todo.txt +++ b/todo.txt @@ -1,16 +1,32 @@ ******************************************************** NEXT PATCH ************************************************** +tech: needle ice - needles make 1-2 ice 9 after they impact a wall +needle shot gun fires 1 less needle -tech: surfactant - remove foam gun, get 3 foam bots, upgrade all bots to foam - you can now have a chance to see gun removing tech even when that gun isn't active +most harpoon tech are about 5% better +JUNK tech: negative friction - you speed up when you touch walls -n-gon title draws in 1/2 the time - I'm getting flagged by google search that my loading page takes a long time to full render, so this might remove the flag - the site is very fast to load, but I think google is getting confused by the title animation +no-cloning theorem: 42% -> 38% dup chance +symbiosis: 2 tech -> 1-2 tech after a boss dies +quenching gives 10% less max health for over heal -bug fixes ******************************************************** TODO ******************************************************** +no passive energy regen, but regen energy after doing damage + tech or just default? + modify conservation of energy tech + +Tech: Schrödinger’s cat (or superposition) +Requires: Metamaterial Cloaking and Dazzler +Upon decloaking, all mobs nearby (same range as Dazzler) are irradiated. Increase energy drain by 15%. + +game idea - auto battler with n-gon mob AI and tech + name: auto-gon + you build a group of mobs and bosses from n-gon + they fight other mobs and bosses + similar research and tech system to n-gon + some mobs can fire player weapons + junk tech negative air friction on player remove foam gun get 2 foam bots and upgrade