From 507b0605d6bdd2aedbf353d75c0f673e87e924e5 Mon Sep 17 00:00:00 2001 From: landgreen Date: Sat, 11 May 2024 09:52:56 -0700 Subject: [PATCH] invulnerable tech: anyon - 2x energy after duplicating a power up, +6% duplication chance tech: Abelian group - 4x damage while invulnerable tech: fermion - become invulnerable for 5 seconds after a mob dies tech: entropic gravity - crouching pulls MACHO towards the player, and 1.5x to all MACHO effects (damage, damage reduction, AoE damage) tech: modified Newtonian dynamics - +20 speed for all Newtonian law tech choice, MACHO, invulnerable, speed - have text keyword CSS style removed chance to find a random tech in early levels from mobs this reduces tech per full game by about 2 tower level has a few changes options exchange only works once per level, but it gives 3x choices after randomizing dark star has a 1.2->1.3x MACHO radius autocannon fires 1->2 extra super balls, but balls have higher gravity grappling hook field starts with 0.6x damage reduction super balls + uncertainty principle makes all balls start in the same spot and only separate after teleporting ablative drones spawns 50% more drones on collision von Neumann probe gives 40% more drones per block mass also added text clarification that it uses 5 energy tech lens rotates 50% faster ghoster mobs are more aggressive once they have lost 20% health sneakBoss doesn't start accelerating until it is partly uncloaked, but it spawns sneaker mobs after cloaking fixed bug with 2 different boost power up sizes paradigm shift doesn't do damage while player is invulnerable random internet JUNK images disabled because some of the images are bad entanglement bug fix, maybe --- img/Abelian group.webp | Bin 0 -> 27536 bytes img/anyon.webp | Bin 0 -> 57360 bytes img/entropic gravity.webp | Bin 0 -> 42416 bytes img/fermion.webp | Bin 0 -> 26970 bytes img/modified Newtonian dynamics.webp | Bin 0 -> 62726 bytes ...heorem.webp => spin-statistics theorem.webp} | Bin js/bullet.js | 64 +- js/level.js | 246 +++---- js/mob.js | 28 +- js/player.js | 13 +- js/powerup.js | 105 ++- js/spawn.js | 51 +- js/tech.js | 691 ++++++------------ style.css | 97 ++- todo.txt | 117 ++- 15 files changed, 652 insertions(+), 760 deletions(-) create mode 100644 img/Abelian group.webp create mode 100644 img/anyon.webp create mode 100644 img/entropic gravity.webp create mode 100644 img/fermion.webp create mode 100644 img/modified Newtonian dynamics.webp rename img/{spin–statistics theorem.webp => spin-statistics theorem.webp} (100%) diff --git a/img/Abelian group.webp b/img/Abelian group.webp new file mode 100644 index 0000000000000000000000000000000000000000..916f955134b7e1e2ed00a125e06eab6e8a5a5835 GIT binary patch literal 27536 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 z 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 literal 0 HcmV?d00001 diff --git a/img/entropic gravity.webp b/img/entropic gravity.webp new file mode 100644 index 0000000000000000000000000000000000000000..339af23d25984ebe06b79771de135553e00d91ec GIT binary patch literal 42416 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 xok-=qA#ne~Q!XgFqhj`YBQ{2(^jlzG+Az=<(| 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⪼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 literal 0 HcmV?d00001 diff --git a/img/spin–statistics theorem.webp b/img/spin-statistics theorem.webp similarity index 100% rename from img/spin–statistics theorem.webp rename to img/spin-statistics theorem.webp diff --git a/js/bullet.js b/js/bullet.js index 40bcd84..9b564b1 100644 --- a/js/bullet.js +++ b/js/bullet.js @@ -3331,7 +3331,7 @@ const b = { //remove the body and spawn a new drone Composite.remove(engine.world, found) body.splice(body.indexOf(found), 1) - b.delayDrones(found.position, 0.7 * Math.sqrt(found.mass)) + b.delayDrones(found.position, Math.sqrt(found.mass)) //draw a line from the drone to the body on the canvas ctx.beginPath(); ctx.moveTo(this.position.x, this.position.y); @@ -3350,9 +3350,7 @@ const b = { ctx.beginPath(); let vertices = found.vertices; ctx.moveTo(vertices[0].x, vertices[0].y); - for (let j = 1; j < vertices.length; j++) { - ctx.lineTo(vertices[j].x, vertices[j].y); - } + for (let j = 1; j < vertices.length; j++) ctx.lineTo(vertices[j].x, vertices[j].y); ctx.lineTo(vertices[0].x, vertices[0].y); ctx.lineWidth = 2; ctx.strokeStyle = `rgba(0,0,0,${this.count / 60})` @@ -3573,7 +3571,7 @@ const b = { //remove the body and spawn a new drone Composite.remove(engine.world, found) body.splice(body.indexOf(found), 1) - b.delayDrones(found.position, 0.35 * Math.sqrt(found.mass)) + b.delayDrones(found.position, 0.5 * Math.sqrt(found.mass)) //draw a line from the drone to the body on the canvas ctx.beginPath(); ctx.moveTo(this.position.x, this.position.y); @@ -3772,6 +3770,11 @@ const b = { }); }, superBall(where, velocity, radius) { + let gravity = 0.001 + if (tech.superBallDelay) { + velocity = Vector.mult(velocity, 1.4) + gravity *= 6 + } let dir = m.angle const me = bullet.length; bullet[me] = Bodies.polygon(where.x, where.y, 12, radius, b.fireAttributes(dir, false)); @@ -3787,7 +3790,7 @@ const b = { bullet[me].frictionStatic = 0; if (tech.isSuperHarm) { bullet[me].collidePlayerDo = function () { - this.force.y += this.mass * 0.001; + this.force.y += this.mass * gravity;; if (Matter.Query.collides(this, [player]).length) { this.endCycle = 0 m.energy -= 0.04 @@ -3811,7 +3814,7 @@ const b = { bullet[me].portFrequency = 25 + Math.floor(10 * Math.random()) bullet[me].nextPortCycle = simulation.cycle + bullet[me].portFrequency bullet[me].do = function () { - this.force.y += this.mass * 0.001; + this.force.y += this.mass * gravity; if (this.nextPortCycle < simulation.cycle) { //teleport around if you have tech.isBulletTeleport this.nextPortCycle = simulation.cycle + this.portFrequency const range = 33 * Math.sqrt(radius) * Math.random() @@ -3821,7 +3824,7 @@ const b = { }; } else { bullet[me].do = function () { - this.force.y += this.mass * 0.001; + this.force.y += this.mass * gravity; }; } bullet[me].beforeDmg = function (who) { @@ -3843,7 +3846,6 @@ const b = { Matter.Body.setDensity(bullet[me], bullet[me].calcDensity() * 1.33);//33% more density and damage this.endCycle = simulation.cycle + Math.floor(300 + 90 * Math.random()); //reset to full duration of time Matter.Body.setVelocity(this, Vector.mult(Vector.normalise(this.velocity), 60)); //reset to high velocity - let count = 5 const wait = () => { count-- @@ -3857,7 +3859,6 @@ const b = { }); } requestAnimationFrame(wait); - simulation.drawList.push({ //add dmg to draw queue x: this.position.x, y: this.position.y, @@ -6426,10 +6427,7 @@ const b = { have: false, // num: 5, do() { }, - foamBall() { - - - }, + foamBall() { }, fireOne() { m.fireCDcycle = m.cycle + Math.floor((m.crouch ? 27 : 19) * b.fireCDscale); // cool down const speed = m.crouch ? 43 : 36 @@ -6446,21 +6444,33 @@ const b = { const SPREAD = m.crouch ? 0.08 : 0.13 const num = 3 + Math.floor(tech.extraSuperBalls * Math.random()) const speed = m.crouch ? 43 : 36 - let dir = m.angle - SPREAD * (num - 1) / 2; - for (let i = 0; i < num; i++) { - b.superBall({ - x: m.pos.x + 30 * Math.cos(dir), - y: m.pos.y + 30 * Math.sin(dir) - }, { - x: speed * Math.cos(dir), - y: speed * Math.sin(dir) - }, 11 * tech.bulletSize) - dir += SPREAD; + if (tech.isBulletTeleport) { + for (let i = 0; i < num; i++) { + b.superBall({ + x: m.pos.x + 30 * Math.cos(m.angle), + y: m.pos.y + 30 * Math.sin(m.angle) + }, { + x: speed * Math.cos(m.angle), + y: speed * Math.sin(m.angle) + }, 11 * tech.bulletSize) + } + } else { + let dir = m.angle - SPREAD * (num - 1) / 2; + for (let i = 0; i < num; i++) { + b.superBall({ + x: m.pos.x + 30 * Math.cos(dir), + y: m.pos.y + 30 * Math.sin(dir) + }, { + x: speed * Math.cos(dir), + y: speed * Math.sin(dir) + }, 11 * tech.bulletSize) + dir += SPREAD; + } } }, fireQueue() { m.fireCDcycle = m.cycle + Math.floor((m.crouch ? 23 : 15) * b.fireCDscale); // cool down - const num = 1 + 3 + Math.floor(tech.extraSuperBalls * Math.random()) //1 extra + const num = 2 + 3 + Math.floor(tech.extraSuperBalls * Math.random()) //2 extra const speed = m.crouch ? 43 : 36 const delay = Math.floor((m.crouch ? 18 : 12) * b.fireCDscale) @@ -6479,8 +6489,6 @@ const b = { } let count = 0 requestAnimationFrame(cycle); - - }, chooseFireMethod() { //set in simulation.startGame if (tech.oneSuperBall) { @@ -7789,7 +7797,7 @@ const b = { lensDamageOn: 0, //set in tech lens() { this.stuckOn(); - this.angle += 0.02 + this.angle += 0.03 if (this.isInsideArc(m.angle)) { this.lensDamage = this.lensDamageOn ctx.lineWidth = 6 + this.lensDamageOn diff --git a/js/level.js b/js/level.js index 5af63e4..f5cfa4f 100644 --- a/js/level.js +++ b/js/level.js @@ -25,6 +25,7 @@ const level = { // powerUps.research.changeRerolls(99999) // m.immuneCycle = Infinity //you can't take damage // tech.tech[297].frequency = 100 + // tech.addJunkTechToPool(0.5) // m.couplingChange(10) // m.setField("plasma torch") //1 standing wave 2 perfect diamagnetism 3 negative mass 4 molecular assembler 5 plasma torch 6 time dilation 7 metamaterial cloaking 8 pilot wave 9 wormhole 10 grappling hook // m.energy = 0 @@ -33,23 +34,23 @@ const level = { // m.energy = 0 // simulation.molecularMode = 2 // m.damage(0.1); - // b.giveGuns("drones") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser + // b.giveGuns("super balls") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser // b.giveGuns("shotgun") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser // b.giveGuns("wave") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser // b.giveGuns("laser") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser // b.guns[8].ammo = 100000000 // requestAnimationFrame(() => { tech.giveTech("optical amplifier") }); // for (let i = 0; i < 1; ++i) tech.giveTech("combinatorial optimization") - // tech.giveTech("Pareto efficiency") - // for (let i = 0; i < 1; ++i) tech.giveTech("collider") - // for (let i = 0; i < 1; ++i) tech.giveTech("anthropic principle") - // for (let i = 0; i < 1; ++i) tech.giveTech("bubble fusion") + // tech.giveTech("Newtons 2nd law") + // for (let i = 0; i < 1; ++i) tech.giveTech("lens") + // for (let i = 0; i < 1; ++i) tech.giveTech("modified Newtonian dynamics") + // for (let i = 0; i < 1; ++i) tech.giveTech("Newtons 1st law") + // for (let i = 0; i < 1; ++i) tech.giveTech("entropic gravity") // requestAnimationFrame(() => { for (let i = 0; i < 10; i++) b.orbitBot(m.pos, false) }); // requestAnimationFrame(() => { for (let i = 0; i < 1; i++) tech.giveTech("ersatz bots") }); // for (let i = 0; i < 1; i++) tech.giveTech("tungsten carbide") // m.lastKillCycle = m.cycle - // for (let i = 0; i < 1; ++i) tech.giveTech("Lorentz transformation") - // for (let i = 0; i < 1; ++i) tech.giveTech("unified field theory") + // for (let i = 0; i < 1; ++i) tech.giveTech("anyon") // for (let i = 0; i < 3; i++) powerUps.directSpawn(450, -50, "tech"); // for (let i = 0; i < 10; i++) powerUps.directSpawn(1750, -500, "research"); // for (let i = 0; i < 100; i++) powerUps.directSpawn(1750, -500, "coupling"); @@ -59,9 +60,8 @@ const level = { // for (let i = 0; i < 1; ++i) spawn.laserLayer(1400, -500) // Matter.Body.setPosition(player, { x: -200, y: -3330 }); // for (let i = 0; i < 4; ++i) spawn.laserLayer(1300, -500 + 100 * Math.random()) - // for (let i = 0; i < 1; ++i) spawn.stinger(1900, -500) // for (let i = 0; i < 1; ++i) spawn.powerUpBossBaby(1900, -500) - // spawn.beetleBoss(1900, -500, 25) + // spawn.sneakBoss(1900, -500) // spawn.zombie(-3000, -500 + 300 * Math.random(), 30, 5, "white") // zombie(x, y, radius, sides, color) // for (let i = 0; i < 5; ++i) spawn.starter(1000 + 1000 * Math.random(), -500 + 300 * Math.random()) // tech.addJunkTechToPool(2) @@ -71,7 +71,7 @@ const level = { level[simulation.isTraining ? "walk" : "initial"]() //normal starting level ************************************************** - // for (let i = 0; i < 2; i++) spawn.ghoster(1300, -500) //ghosters need to spawn after the map loads + // for (let i = 0; i < 2; i++) spawn.ghoster(level.exit.x, level.exit.y) //ghosters need to spawn after the map loads // spawn.bodyRect(2425, -120, 200, 200); // console.log(body[body.length - 1].mass) // simulation.isAutoZoom = false; //look in close @@ -79,7 +79,7 @@ const level = { // simulation.setZoom(); // tech.addJunkTechToPool(0.7) - // for (let i = 0; i < 2; ++i) powerUps.directSpawn(m.pos.x + 50 * Math.random(), m.pos.y + 50 * Math.random(), "tech"); + // for (let i = 0; i < 1; ++i) powerUps.directSpawn(m.pos.x + 50 * Math.random(), m.pos.y + 50 * Math.random(), "entanglement"); // for (let i = 0; i < 2; ++i) powerUps.directSpawn(m.pos.x + 450, m.pos.y + 50 * Math.random(), "boost"); // for (let i = 0; i < 100; ++i) powerUps.directSpawn(m.pos.x + 50 * Math.random(), m.pos.y + 50 * Math.random(), "ammo"); // for (let i = 0; i < 2; i++) powerUps.spawn(player.position.x + Math.random() * 50, player.position.y - Math.random() * 50, "field", false); @@ -148,6 +148,7 @@ const level = { }, newLevelOrPhase() { //runs on each new level but also on final boss phases //used for generalist and pigeonhole principle + tech.cancelTechCount = 0 tech.buffedGun++ if (tech.buffedGun > b.inventory.length - 1) tech.buffedGun = 0; if (tech.isGunCycle && b.activeGun !== null && b.inventory.length) { @@ -170,7 +171,7 @@ const level = { } if (tech.interestRate > 0) { const rate = ((level[level.levels[level.onLevel]].name === "final" || level[level.levels[level.onLevel]].name === "subway") ? 1 / 3 : 1) * tech.interestRate //this effect triggers extra times on these final levels - if (b.activeGun !== null && b.activeGun !== undefined && b.guns[b.activeGun].name !== "laser") { + if (b.activeGun !== null && b.activeGun !== undefined && b.guns[b.activeGun].ammo !== Infinity) { const ammoPerOrb = b.guns[b.activeGun].ammoPack const a = Math.ceil(rate * b.guns[b.activeGun].ammo / ammoPerOrb) powerUps.spawnDelay("ammo", a, 4); @@ -793,7 +794,7 @@ const level = { return who }, - boost(x, y, height = 1000, angle = Math.PI / 2) { //height is how high the player will be flung above y + boost(x, y, speed = 1000, angle = Math.PI / 2) { //height is how high the player will be flung above y if (angle !== Math.PI / 2) { //angle !== 3 * Math.PI / 2 angle *= -1 who = map[map.length] = Matter.Bodies.fromVertices(x + 50, y + 35, Vertices.fromPath("80 40 -80 40 -50 -40 50 -40"), { @@ -801,14 +802,13 @@ const level = { category: cat.body, mask: cat.player | cat.body | cat.bullet | cat.powerUp | cat.mob | cat.mobBullet //cat.player | cat.map | cat.body | cat.bullet | cat.powerUp | cat.mob | cat.mobBullet }, - yVelocity: 1.21 * Math.sqrt(Math.abs(height)), query() { // check for collisions const rayVector = Vector.add(this.position, Vector.rotate({ x: 100, y: 0 }, angle)) query = (who) => { const list = Matter.Query.ray(who, this.position, rayVector, 100) if (list.length > 0) { - Matter.Body.setVelocity(list[0].bodyA, Vector.rotate({ x: this.yVelocity, y: 0 }, angle)); + Matter.Body.setVelocity(list[0].bodyA, Vector.rotate({ x: 1.21 * Math.sqrt(Math.abs(speed)), y: 0 }, angle)); } } query(body) @@ -818,37 +818,17 @@ const level = { //player collision const list = Matter.Query.ray([player], this.position, rayVector, 100) if (list.length > 0) { - Matter.Body.setVelocity(player, Vector.rotate({ x: this.yVelocity, y: 0 }, angle)); + Matter.Body.setVelocity(player, Vector.rotate({ x: 1.21 * Math.sqrt(Math.abs(speed)), y: 0 }, angle)); m.buttonCD_jump = 0; // reset short jump counter to prevent short jumps on boosts m.hardLandCD = 0 // disable hard landing } - - // if (Matter.Query.region([player], this.boostBounds).length > 0 && !input.down) { - // m.buttonCD_jump = 0; // reset short jump counter to prevent short jumps on boosts - // m.hardLandCD = 0 // disable hard landing - // if (player.velocity.y > 26) { - // Matter.Body.setVelocity(player, { - // x: player.velocity.x, - // y: -15 //gentle bounce if coming down super fast - // }); - // } else { - // Matter.Body.setVelocity(player, { - // x: player.velocity.x + (Math.random() - 0.5) * 2.5, - // y: this.yVelocity //give a upwards velocity that will put the player that the height desired - // }); - // } - // } - //draw const v1 = this.vertices[0] const v2 = this.vertices[1] let unit = Vector.rotate({ x: 60, y: 0 }, angle) let v3 = Vector.add(v2, unit) let v4 = Vector.add(v1, unit) - // ctx.beginPath(); - // ctx.strokeStyle = "#000"; - // ctx.stroke() ctx.beginPath(); ctx.moveTo(v1.x, v1.y) ctx.lineTo(v2.x, v2.y) @@ -856,9 +836,6 @@ const level = { ctx.lineTo(v4.x, v4.y) ctx.fillStyle = "rgba(200,0,255,0.05)"; ctx.fill() - // ctx.strokeStyle = "#000"; - // ctx.stroke() - unit = Vector.rotate({ x: 20, y: 0 }, angle) v3 = Vector.add(v2, unit) v4 = Vector.add(v1, unit) @@ -872,7 +849,6 @@ const level = { }, }); Matter.Body.rotate(who, angle + Math.PI / 2); - return who } else { who = map[map.length] = Matter.Bodies.fromVertices(x + 50, y + 35, Vertices.fromPath("120 40 -120 40 -50 -40 50 -40"), { @@ -890,7 +866,6 @@ const level = { y: y } }, - yVelocity: -1.21 * Math.sqrt(Math.abs(height)), query() { // check for collisions query = (who) => { @@ -898,7 +873,7 @@ const level = { list = Matter.Query.region(who, this.boostBounds) Matter.Body.setVelocity(list[0], { x: list[0].velocity.x + (Math.random() - 0.5) * 2.5, //add a bit of horizontal drift to reduce endless bounces - y: this.yVelocity //give a upwards velocity + y: -1.21 * Math.sqrt(Math.abs(speed)) //give a upwards velocity }); } } @@ -918,7 +893,7 @@ const level = { } else { Matter.Body.setVelocity(player, { x: player.velocity.x + (Math.random() - 0.5) * 2.5, - y: this.yVelocity //give a upwards velocity that will put the player that the height desired + y: -1.21 * Math.sqrt(Math.abs(speed)) //give an upwards velocity that will put the player that the height desired }); } } @@ -928,8 +903,6 @@ const level = { ctx.fillRect(this.boostBounds.min.x, this.boostBounds.min.y - 10, 100, 30); ctx.fillStyle = "rgba(200,0,255,0.05)"; ctx.fillRect(this.boostBounds.min.x, this.boostBounds.min.y - 50, 100, 70); - // ctx.fillStyle = "rgba(200,0,255,0.02)"; - // ctx.fillRect(x, y - 120, 100, 120); }, }); return who @@ -4259,12 +4232,12 @@ const level = { const isFlipped = (simulation.isHorizontalFlipped && Math.random() < 0.33) ? true : false if (isFlipped) { level.setPosToSpawn(9150 + 50, -2230 - 25); - level.exit.x = -100 - 50; + level.exit.x = 400 - 50; level.exit.y = -50 + 25; leftRoomColor = "#cff" rightRoomColor = "rgba(0,0,0,0.13)" } else { - level.setPosToSpawn(-100, -50); + level.setPosToSpawn(400, -50); level.exit.x = 9150; level.exit.y = -2230; } @@ -4272,9 +4245,10 @@ const level = { spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20); //bump for level entrance level.fallMode = "position"; //must set level.fallModeBounds in this mode to prevent player getting stuck left or right level.fallModeBounds = { left: level.enter.x, right: level.exit.x } //used with level.fallMode = "position"; + if (isFlipped) level.fallModeBounds = { left: level.exit.x, right: level.enter.x } //used with level.fallMode = "position"; simulation.fallHeight = 5000 //level.enter.y - 4000 spawn.mapRect(level.exit.x, level.exit.y + 20, 100, 20); //bump for level exit - level.defaultZoom = 2500 + level.defaultZoom = 2300 simulation.zoomTransition(level.defaultZoom) document.body.style.backgroundColor = "#cdd9df"; powerUps.spawnStartingPowerUps(6300, 1025) @@ -4284,6 +4258,10 @@ const level = { const boost3 = level.boost(9700, -730, 1050, 1.95) const boost4 = level.boost(4300, -720, 1500, 1.25) const boost5 = level.boost(3000, -1215, 3000, 1.25) + const boost6 = level.boost(8251, -619, 1200, 2.7) + const boost7 = level.boost(7750, -1540, 1050, 1.2) + // const boost6 = level.boost(8235, -619, 3500, 2.9) + const train1 = level.transport(3650, 100, 415, 500, 8); //x,y,width.height,VxGoal,force const train2 = level.transport(1250, 100, 415, 500, -8); //x,y,width.height,VxGoal,force const train3 = level.transport(4050, 100, 415, 500, 8); //x,y,width.height,VxGoal,force @@ -4310,6 +4288,8 @@ const level = { boost3.query(); boost4.query(); boost5.query(); + boost6.query(); + boost7.query(); //trains oscillate back and forth and act like they are bouncing off each other if (train1.position.x < 2850) { train1.changeDirection(true) //go right @@ -4344,7 +4324,7 @@ const level = { ctx.fillStyle = "#cff" if (isFlipped) { - ctx.fillRect(-350, -300, 525, 325); //entrance typically + ctx.fillRect(150, -300, 525, 325); //entrance typically } else { ctx.fillRect(8925, -2575, 525, 400) //exit typically } @@ -4357,10 +4337,11 @@ const level = { ctx.fillRect(8300, -1950, 1550, 1275); ctx.fillRect(5400, 875, 1800, 650); ctx.fillRect(2950, -2200, 875, 1050); + ctx.fillRect(5900, -1025, 800, 450); if (isFlipped) { ctx.fillRect(8925, -2575, 575, 400) //exit typically } else { - ctx.fillRect(-350, -300, 525, 325); //entrance typically + ctx.fillRect(150, -300, 525, 325); //entrance typically } ctx.fillStyle = "rgba(0,0,0,0.5)" @@ -4383,10 +4364,10 @@ const level = { // spawn.mapVertex(6300, 900, `${-a} ${-a + c} ${-a + c} ${-a} ${a - c} ${-a} ${a} ${-a + c} ${a} ${a - c} ${a - c} ${a} ${-a + c} ${a} ${-a} ${a - c}`); //square with edges cut off spawn.mapVertex(400, 900, `${-a} ${-a + c} ${-a + c} ${-a} ${a - c} ${-a} ${a} ${-a + c} ${a} ${a - c} ${a - c} ${a} ${-a + c} ${a} ${-a} ${a - c}`); //square with edges cut off //lower 1st zone entrance /exit - spawn.mapRect(-400, -350, 575, 75); - spawn.mapRect(-400, -300, 75, 375); - spawn.mapRect(100, -325, 75, 175); - spawn.mapRect(100, -10, 75, 50); + spawn.mapRect(100, -350, 575, 75); + spawn.mapRect(100, -300, 75, 375); + spawn.mapRect(600, -325, 75, 175); + spawn.mapRect(600, -10, 75, 50); //2nd zone upper hollow square @@ -4421,24 +4402,28 @@ const level = { //lower 3rd zone spawn.mapVertex(6300, 450, `${-a} ${-a + c} ${-a + c} ${-a} ${a - c} ${-a} ${a} ${-a + c} ${a} ${0} ${-a} ${0}`); //square with edges cut off --- hollow top - spawn.mapVertex(6550, 1650, `${-a} ${600} ${a + 500} ${600} ${a + 500} ${a - c} ${a - c + 500} ${a} ${-a + c} ${a} ${-a} ${a - c}`); //square with edges cut off --- hollow bottom spawn.mapVertex(6300, 1200, "-400 -40 -350 -90 350 -90 400 -40 400 40 350 90 -350 90 -400 40"); + spawn.mapVertex(6450, 1650, `${-a} ${600} ${a + 700} ${600} ${a + 700} ${a - c} ${a - c + 700} ${a} ${-a + c} ${a} ${-a} ${a - c}`); //square with edges cut off --- hollow bottom //upper 3rd zone a = 400 //side length c = 50 //corner offset - spawn.mapVertex(6300, -800, `${-a} ${-a + c} ${-a + c} ${-a} ${a - c} ${-a} ${a} ${-a + c} ${a} ${a - c} ${a - c} ${a} ${-a + c} ${a} ${-a} ${a - c}`); //square with edges cut off + // spawn.mapVertex(6300, -800, `${-a} ${-a + c} ${-a + c} ${-a} ${a - c} ${-a} ${a} ${-a + c} ${a} ${a - c} ${a - c} ${a} ${-a + c} ${a} ${-a} ${a - c}`); //square with edges cut off + spawn.mapVertex(6300, -1100, `${-a} ${-a + c} ${-a + c} ${-a} ${a - c} ${-a} ${a} ${-a + c} ${a} ${-200} ${-a} ${-200}`); //square with edges cut off + spawn.mapVertex(6300, -500, `${-a} ${200} ${a} ${200} ${a} ${a - c} ${a - c} ${a} ${-a + c} ${a} ${-a} ${a - c}`); //square with edges cut off spawn.mapVertex(5800, -1425, "-300 -40 -250 -90 250 -90 300 -40 300 40 250 90 -250 90 -300 40"); spawn.mapVertex(5485, -1850, "-400 -40 -350 -90 350 -90 400 -40 400 40 350 90 -350 90 -400 40"); - spawn.mapVertex(7365, -1850, "-650 -40 -600 -90 600 -90 650 -40 650 40 600 90 -600 90 -650 40"); //long + spawn.mapVertex(7115, -1850, "-400 -40 -350 -90 350 -90 400 -40 400 40 350 90 -350 90 -400 40"); //long spawn.mapVertex(6300, -2175, "-300 -40 -250 -90 250 -90 300 -40 300 40 250 90 -250 90 -300 40"); //highest spawn.mapVertex(4450, -1850, "-200 -40 -150 -90 150 -90 200 -40 200 40 150 90 -150 90 -200 40"); - spawn.mapVertex(5500, -300, "-200 -60 -170 -90 170 -90 200 -60 200 60 170 90 -170 90 -200 60"); - spawn.mapVertex(4600, -590, "-500 -90 170 -90 200 -60 200 60 170 90 -500 90"); + // spawn.mapVertex(5300, -300, "-300 -60 -270 -90 270 -90 300 -60 300 60 270 90 -270 90 -300 60"); + spawn.mapVertex(5300, -300, "-300 -40 -250 -90 250 -90 300 -40 300 40 250 90 -250 90 -300 40"); + spawn.mapVertex(4500, -590, "-300 -90 250 -90 300 -40 300 40 250 90 -300 90"); + // spawn.mapVertex(4600, -590, "-500 -90 170 -90 200 -60 200 60 170 90 -500 90"); //no debris on this level, so spawn some heals and ammo powerUps.chooseRandomPowerUp(6275, 1425); - powerUps.chooseRandomPowerUp(3350, -1250); + powerUps.chooseRandomPowerUp(6300, -650); powerUps.chooseRandomPowerUp(9550, -750); //random blocks @@ -4463,7 +4448,6 @@ const level = { spawn.randomMob(4675, -850, 0.1); spawn.randomMob(4450, -2050, 0.1); spawn.randomMob(4050, -2325, 0.1); - spawn.randomMob(2850, -2325, 0.1); spawn.randomMob(3350, -1325, 0.2); spawn.randomMob(5300, -2050, 0.2); spawn.randomMob(5675, -2050, 0.2); @@ -12121,12 +12105,6 @@ const level = { return bound.has(player.bounds.min) || bound.has(player.bounds.max); } - function addWIMP(x, y) { - spawn.WIMP(x, y); - const me = mob[mob.length - 1]; - me.isWIMP = true; - } - function relocateWIMPs(x, y) { for (const i of mob) { if (i.isWIMP) { @@ -12665,10 +12643,11 @@ const level = { Promise.resolve().then(() => { // Clear all WIMPS and their research for (let i = 0; i < mob.length; i++) { - while (mob[i] && !mob[i].isMACHO) { - mob[i].replace(i); + if (mob[i] && !mob[i].isMACHO) { + mob[i].isWIMP = true; } } + relocateWIMPs(0, -10030); for (let i = 0; i < powerUp.length; i++) { while (powerUp[i] && powerUp[i].name === "research") { Matter.Composite.remove(engine.world, powerUp[i]); @@ -12884,7 +12863,7 @@ const level = { return this.rings.length; }, get cap() { - return (this.ringNumber + 1) * 90 + 240; + return this.ringNumber * 90 + 180; }, get capped() { return templePlayer.room2.spawnInitiatorCycles > this.cap; @@ -12919,8 +12898,8 @@ const level = { y: -300 }), simulation.cycle - 5); } - if (!this.capped && cycle >= this.cap - 200) { - const multCoeff = (cycle - this.cap + 200) * 0.4 + if (!this.capped && cycle >= this.cap - 180) { + const multCoeff = (cycle - this.cap + 180) * 0.4 ctx.translate((Math.random() - 0.5) * multCoeff, (Math.random() - 0.5) * multCoeff); } ctx.shadowBlur = 20; @@ -12930,12 +12909,12 @@ const level = { DrawTools.arcOut(this.pos.x, this.pos.y, 100, 0, Math.PI * 2); if (templePlayer.room2.cycles <= 100) { for (let i = 0; i < this.ringNumber; i++) { - if (cycle < i * 90 + 90) break; + if (cycle < i * 90) break; const ring = this.rings[i]; ctx.shadowColor = `rgb(${ring.colour.join(",")})`; - const opacity = this.capped ? 1 - 0.01 * templePlayer.room2.cycles : (cycle / 180 - i / 2 - 0.5); + const opacity = this.capped ? 1 - 0.01 * templePlayer.room2.cycles : (cycle / 180 - i / 2); ctx.strokeStyle = `rgba(${ring.colour.join(",")}, ${Math.min(opacity, 1)})`; - const radius = (this.capped ? 1 + 0.07 * templePlayer.room2.cycles : Math.sin(Math.min(cycle - i * 90 - 90, 45) / 90 * Math.PI)) * ring.radius; + const radius = (this.capped ? 1 + 0.07 * templePlayer.room2.cycles : Math.sin(Math.min(cycle - i * 90, 45) / 90 * Math.PI)) * ring.radius; DrawTools.arcOut(this.pos.x, this.pos.y, radius, 0, Math.PI * 2); } } @@ -13083,14 +13062,15 @@ const level = { room0() { if (templePlayer.startAnim <= 0) return; templePlayer.startAnim++; - if (templePlayer.startAnim == 120) { + if (templePlayer.startAnim == 60) { makeLore("Not so fast."); } - if (templePlayer.startAnim < 360) { + if (templePlayer.startAnim < 180) { trapPlayer(1000, templePlayer.initialTrapY); } else { level.exit.x = 4500; level.exit.y = -2030; + relocateWIMPs(level.exit.x, level.exit.y); relocateTo(50, -2050); simulation.fallHeight = -1000; // simulation.setZoom(1800); @@ -13101,49 +13081,31 @@ const level = { } }, room1() { - if (templePlayer.room1ToRoom2Anim <= 0) return; - if (templePlayer.room1ToRoom2Anim === 1) { + const frame = templePlayer.room1ToRoom2Anim; + if (frame <= 0) return; + if (frame === 1) { level.exit.x = -50; level.exit.y = -10030; makeLore("Pathetic."); } - if (templePlayer.room1ToRoom2Anim === 121) { - makeLore("You will never succeed."); - } - if (templePlayer.room1ToRoom2Anim >= 360 && templePlayer.room1ToRoom2Anim <= 720) { - const factor = 200 - 200 * Math.cos((templePlayer.room1ToRoom2Anim / 120 - 3) * Math.PI); + if (frame >= 1 && frame <= 360) { + const factor = 100 - 100 * Math.cos((frame / 90) * Math.PI); ctx.translate(factor, factor); Promise.resolve().then(() => { ctx.save(); ctx.globalCompositeOperation = "color-burn"; - ctx.fillStyle = DrawTools.randomColours; + ctx.fillStyle = DrawTools.randomColours((frame) * (360 - frame) / 32400); DrawTools.updateRandomColours(5); ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.restore(); }); } - if (templePlayer.room1ToRoom2Anim === 720) { + if (frame === 180) { makeLore("You are trying too hard."); relocateTo(0, -7050); simulation.fallHeight = -6000; templePlayer.stage = 2; - } - if (templePlayer.room1ToRoom2Anim === 960) { - makeLore("I have mastered the understandings of the universe."); - } - if (templePlayer.room1ToRoom2Anim === 1200) { - // Congrats, you discovered the actual words by looking at the source code. Are you happy now? - const x = ( - ["a speck of dust", "an insignificant hindrance", "a tiny obstacle"] - )[Math.floor(Math.random() * 3)].split(""); - for (let i = 0; i < x.length / 1.6; i++) { - const randomIndex = Math.floor(Math.random() * x.length); - if (x[randomIndex] !== " ") { - x[randomIndex] = String.fromCharCode(Math.floor(Math.random() * 50) + 192); - } - }; - makeLore(`You are no more than ${x.join("")} to me.`); - relocateWIMPs(0, -10030); + relocateWIMPs(level.exit.x, level.exit.y - 3000); } templePlayer.room1ToRoom2Anim++; }, @@ -13154,23 +13116,10 @@ const level = { level.exit.y = -13130; makeLore("Do not try me."); } + if (templePlayer.room2ToRoom3Anim >= 1 && templePlayer.room2ToRoom3Anim <= 180) { + canvas.style.filter = `sepia(${templePlayer.room2ToRoom3Anim / 180}) invert(${templePlayer.room2ToRoom3Anim / 180})`; + } if (templePlayer.room2ToRoom3Anim === 180) { - makeLore("I have absolute power over you."); - canvas.style.filter = "hue-rotate(90deg)"; - } - if (templePlayer.room2ToRoom3Anim === 360) { - makeLore("You will not succeed..."); - canvas.style.filter = "invert(0.2)"; - } - if (templePlayer.room2ToRoom3Anim === 420) { - makeLore("
...
"); - canvas.style.filter = "invert(0.4)"; - } - if (templePlayer.room2ToRoom3Anim > 480 && templePlayer.room2ToRoom3Anim <= 660) { - canvas.style.filter = `sepia(${(templePlayer.room2ToRoom3Anim - 480) / 180}) invert(${0.5 + (templePlayer.room2ToRoom3Anim - 480) / 180})`; - } - if (templePlayer.room2ToRoom3Anim === 780) { - makeLore("Do not interfere with me."); templePlayer.stage = 3; relocateTo(50, -13150); simulation.fallHeight = -10000; @@ -13182,43 +13131,28 @@ const level = { mob[i].replace(i); } } + templePlayer.drawExit = true; + for (let i = 0; i < 5 * tech.wimpCount; i++) { + powerUps.spawn(level.exit.x + 100 * (Math.random() - 0.5), level.exit.y - 100 + 100 * (Math.random() - 0.5), "research", false); + } + canvas.style.filter = ""; } - if (templePlayer.room2ToRoom3Anim > 780 && templePlayer.room2ToRoom3Anim <= 960) { - canvas.style.filter = `sepia(${(960 - templePlayer.room2ToRoom3Anim) / 180}) invert(${(960 - templePlayer.room2ToRoom3Anim) / 180})`; + if (templePlayer.room2ToRoom3Anim > 180 && templePlayer.room2ToRoom3Anim <= 360) { + canvas.style.filter = `sepia(${(360 - templePlayer.room2ToRoom3Anim) / 180}) invert(${(360 - templePlayer.room2ToRoom3Anim) / 180})`; } templePlayer.room2ToRoom3Anim++; }, room3() { if (templePlayer.room3ToEndAnim <= 0) return; if (templePlayer.room3ToEndAnim === 1) { - makeLore("No."); - } - if (templePlayer.room3ToEndAnim === 120) { - makeLore("This cannot be."); - } - if (templePlayer.room3ToEndAnim === 240) { - makeLore("Has my power failed me?"); - } - if (templePlayer.room3ToEndAnim === 360) { - makeLore("Was it worth it, destroying this place?"); - } - if (templePlayer.room3ToEndAnim === 600) { - makeLore("No one is greater than me."); - } - const text = "noone-"; - for (let i = 0; i < 12; i++) { - if (templePlayer.room3ToEndAnim === 720 + i * 20) { - name = name.slice(0, -1); - simulation.makeTextLog(`${name}:   ${text[i % 6]}`); - canvas.style.filter = `brightness(${1 - i / 22})`; - } - } - if (templePlayer.room3ToEndAnim === 1060) { - templePlayer.drawExit = true; - for (let i = 0; i < 5 * tech.wimpCount; i++) { - powerUps.spawn(level.exit.x + 100 * (Math.random() - 0.5), level.exit.y - 100 + 100 * (Math.random() - 0.5), "research", false); - } - canvas.style.filter = ""; + const x = "Nooooooooooo".split(""); + for (let i = 0; i < x.length / 1.6; i++) { + const randomIndex = Math.floor(Math.random() * x.length); + if (x[randomIndex] !== " ") { + x[randomIndex] = String.fromCharCode(Math.floor(Math.random() * 50) + 192); + } + }; + makeLore(x.join("")); } templePlayer.room3ToEndAnim++; }, @@ -13227,11 +13161,11 @@ const level = { Promise.resolve().then(() => { ctx.save(); ctx.setTransform(1, 0, 0, 1, 0, 0); - ctx.fillStyle = `rgba(0, 0, 0, ${(simulation.cycle - templePlayer.clearedCycle) / 300})`; + ctx.fillStyle = `rgba(0, 0, 0, ${(simulation.cycle - templePlayer.clearedCycle) / 30})`; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.restore(); }); - if (simulation.cycle - templePlayer.clearedCycle > 420) level.nextLevel(); + if (simulation.cycle - templePlayer.clearedCycle > 30) level.nextLevel(); } }; const LogicHandler = { @@ -13383,7 +13317,7 @@ const level = { const roomConditions = [ isInBound(firstRoomBounds) && templePlayer.room1.cycles < 2400, isInBound(secondRoomBounds) && templePlayer.room2.cycles > 0 && templePlayer.room2.cycles < 2160, - isInBound(thirdRoomBounds) && templePlayer.room2ToRoom3Anim < 1320 + isInBound(thirdRoomBounds) && templePlayer.room2ToRoom3Anim < 540 ]; Promise.resolve(roomConditions).then(roomConditions => { // First Room @@ -13413,7 +13347,7 @@ const level = { ctx.fillStyle = "#0004"; ctx.fillRect(canvas.width2 - 288, 50, 576, 20); ctx.fillStyle = "#000"; - ctx.fillRect(canvas.width2 - 288, 50, 1.6 * (1320 - templePlayer.room2ToRoom3Anim), 20); + ctx.fillRect(canvas.width2 - 288, 50, 1.6 * (540 - templePlayer.room2ToRoom3Anim), 20); ctx.restore(); } }); @@ -13465,7 +13399,7 @@ const level = { } }, room3() { - if (templePlayer.room2ToRoom3Anim === 1320) { + if (templePlayer.room2ToRoom3Anim === 540) { thirdRoomBoss(1800, -13700); for (let i = 0; i < 3; i++) { powerUps.spawn(m.spawnPos.x, m.spawnPos.y, "heal"); @@ -13474,8 +13408,8 @@ const level = { } }; const DrawTools = { - get randomColours() { - return `rgb(${this._randomColours.join(",")})` + randomColours(alpha = 1) { + return `rgba(${this._randomColours.join(",")},${alpha})` }, _randomColours: [Math.random() * 255, Math.random() * 255, Math.random() * 255], updateRandomColours(x = 0.8) { diff --git a/js/mob.js b/js/mob.js index 40ab68c..c8de2bb 100644 --- a/js/mob.js +++ b/js/mob.js @@ -1161,7 +1161,7 @@ const mobs = { this.onDeath(this); //custom death effects this.removeConsBB(); this.alive = false; //triggers mob removal in mob[i].replace(i) - console.log(this.shieldCount) + // console.log(this.shieldCount) if (this.isDropPowerUp) { // if (true) { @@ -1267,6 +1267,10 @@ const mobs = { bullet[bullet.length - 1].endCycle = simulation.cycle + 900 //15 seconds this.leaveBody = false; // no body since it turned into the bot } + if (tech.isMobDeathImmunity) { + const immuneTime = 360 + if (m.immuneCycle < m.cycle + immuneTime) m.immuneCycle = m.cycle + immuneTime; //player is immune to damage + } if (tech.isAddRemoveMaxHealth) { if (!this.isBoss) { const amount = 0.0025 @@ -1280,28 +1284,6 @@ const mobs = { m.setMaxHealth(); } } - - // if (this.isBoss && this.isDropPowerUp) { - // powerUps.spawn(this.position.x + 20, this.position.y, "tech", false) - // powerUps.spawn(this.position.x - 20, this.position.y, "research", false) - // powerUps.spawn(this.position.x - 40, this.position.y, "research", false) - // powerUps.spawn(this.position.x + 40, this.position.y, "research", false) - // powerUps.spawn(this.position.x, this.position.y + 20, "research", false) - // powerUps.spawn(this.position.x, this.position.y - 20, "heal", false) - // powerUps.spawn(this.position.x, this.position.y + 40, "heal", false) - // powerUps.spawn(this.position.x, this.position.y - 40, "heal", false) - // } else { - // const amount = 0.005 - // if (tech.isEnergyHealth) { - // if (m.maxEnergy > amount) { - // tech.healMaxEnergyBonus -= amount - // m.setMaxEnergy(); - // } - // } else if (m.maxHealth > amount) { - // tech.extraMaxHealth -= amount //decrease max health - // m.setMaxHealth(); - // } - // } } if (tech.cloakDuplication && !this.isBoss) { tech.cloakDuplication -= 0.01 diff --git a/js/player.js b/js/player.js index 038d93a..7160cbf 100644 --- a/js/player.js +++ b/js/player.js @@ -492,7 +492,7 @@ const m = { for (i = 0, len = b.inventory.length; i < len; i++) gunList.push(b.inventory[i]) const techList = [] //store tech names for (let i = 0; i < tech.tech.length; i++) { - if (tech.tech[i].count > 0 && !tech.tech[i].isNonRefundable) techList.push(i) + if (tech.tech[i].count > 0 && !tech.tech[i].isNonRefundable) techList.push(tech.tech[i].name) } if (techList.length) { localSettings.entanglement = { @@ -560,14 +560,14 @@ const m = { if (tech.isDiaphragm) dmg *= 0.55 + 0.35 * Math.sin(m.cycle * 0.0075); if (tech.isZeno) dmg *= 0.15 if (tech.isFieldHarmReduction) dmg *= 0.6 - if (tech.isHarmMACHO) dmg *= 0.4 + if (tech.isHarmMACHO) dmg *= tech.isMoveMACHO ? 0.3 : 0.4 if (tech.isImmortal) dmg *= 0.7 if (m.fieldMode === 0 || m.fieldMode === 3) dmg *= 0.973 ** m.coupling if (tech.isLowHealthDefense) dmg *= 1 - Math.max(0, 1 - m.health) * 0.8 if (tech.isHarmReduceNoKill && m.lastKillCycle + 300 < m.cycle) dmg *= 0.3 if (tech.squirrelFx !== 1) dmg *= 0.8//Math.pow(0.78, (tech.squirrelFx - 1) / 0.4) if (tech.isAddBlockMass && m.isHolding) dmg *= 0.1 - if (tech.isSpeedHarm && player.speed > 0.1) dmg *= 1 - Math.min(player.speed * 0.0193, 0.8) //capped at speed of 55 + if (tech.isSpeedHarm && player.speed > 0.1) dmg *= 1 - Math.min((tech.speedAdded + player.speed) * 0.0193, 0.8) //capped at speed of 55 if (tech.isHarmReduce && input.field) dmg *= 0.1 if (tech.isNeutronium && input.field && m.fieldCDcycle < m.cycle) dmg *= 0.05 if (tech.isBotArmor) dmg *= 0.95 ** b.totalBots() @@ -693,7 +693,7 @@ const m = { } m.lastHarmCycle = m.cycle if (tech.isDroneOnDamage && bullet.length < 150) { //chance to build a drone on damage from tech - const len = Math.min((dmg - 0.06 * Math.random()) * 40, 40) / tech.droneEnergyReduction * (tech.isEnergyHealth ? 0.5 : 1) + const len = Math.min((dmg - 0.06 * Math.random()) * 80, 60) / tech.droneEnergyReduction * (tech.isEnergyHealth ? 0.5 : 1) for (let i = 0; i < len; i++) { if (Math.random() < 0.5) b.drone({ x: m.pos.x + 30 * Math.cos(m.angle) + 100 * (Math.random() - 0.5), @@ -3298,7 +3298,7 @@ const m = { m.holdingMassScale = 0.01; //can hold heavier blocks with lower cost to jumping m.fieldMeterColor = "#333" m.eyeFillColor = m.fieldMeterColor - m.fieldHarmReduction = 0.4; //55% reduction + m.fieldHarmReduction = 0.4; m.fieldDrawRadius = 0; m.hold = function () { @@ -5192,12 +5192,13 @@ const m = { }, { name: "grappling hook", - description: `use energy to fire a hook that pulls player
damages mobs and grabs blocks
9 energy per second`, + description: `use energy to fire a hook that pulls you
0.6x damage taken
9 energy per second`, effect: () => { m.fieldFire = true; // m.holdingMassScale = 0.01; //can hold heavier blocks with lower cost to jumping // m.fieldMeterColor = "#789"//"#456" m.eyeFillColor = m.fieldMeterColor + m.fieldHarmReduction = 0.6; //40% reduction m.grabPowerUpRange2 = 300000 //m.grabPowerUpRange2 = 200000; m.hold = function () { diff --git a/js/powerup.js b/js/powerup.js index f9d4ac2..9242508 100644 --- a/js/powerup.js +++ b/js/powerup.js @@ -342,7 +342,7 @@ const powerUps = { powerUps.spawn(m.pos.x + 40 * (Math.random() - 0.5), m.pos.y + 40 * (Math.random() - 0.5), spawnType, false); } } - if (tech.isCancelCouple) powerUps.spawnDelay("coupling", 7) + if (tech.isCancelCouple) powerUps.spawnDelay("coupling", 8) if (tech.isCancelTech && tech.cancelTechCount === 0 && type !== "entanglement") { tech.cancelTechCount++ // powerUps.research.use('tech') @@ -350,7 +350,7 @@ const powerUps = { return } } - tech.cancelTechCount = 0 + if (tech.isAnsatz && powerUps.research.count < 1) { for (let i = 0; i < 3; i++) powerUps.spawn(m.pos.x + 40 * (Math.random() - 0.5), m.pos.y + 40 * (Math.random() - 0.5), "research", false); } @@ -655,7 +655,7 @@ const powerUps = { if (tech.isSuperDeterminism) { return `
` } else if (tech.isCancelTech && tech.cancelTechCount === 0) { - return `
randomize
` + return `
randomize
` } else if (level.levelsCleared === 0 && localSettings.isTrainingNotAttempted && b.inventory.length === 0) { //don't show cancel if on initial level and haven't done tutorial return `` } else { @@ -707,7 +707,7 @@ const powerUps = { if (tech.isSuperDeterminism) { text += `cancel` } else if (tech.isCancelTech && tech.cancelTechCount === 0) { - text += `randomize` + text += `randomize` } else if (level.levelsCleared === 0 && localSettings.isTrainingNotAttempted && b.inventory.length === 0) { text += `` //don't show cancel if on initial level and haven't done tutorial } else { @@ -897,22 +897,25 @@ const powerUps = { const techCountText = tech.tech[choose].count > 0 ? `(${tech.tech[choose].count + 1}x)` : ""; const style = localSettings.isHideImages ? powerUps.hideStyle : `style="background-size: contain;background-repeat: no-repeat;background-image: url('img/junk.webp');"` if (!localSettings.isHideImages) { - setTimeout(() => { //delay so that the html element exists - if (tech.tech[choose].url === undefined) { //if on url has been set yet - const url = `https://api.openverse.engineering/v1/images/?q=${tech.tech[choose].name}`; - fetch(url, { signal: AbortSignal.timeout(1000) }) //give up if it takes over 1 second - .then((response) => response.json()) - .then((responseJson) => { - if (responseJson.results.length > 0) { - const index = Math.floor(Math.random() * responseJson.results.length) //randomly choose from the images - tech.tech[choose].url = responseJson.results[index].url //store the url - document.getElementById(`junk-${choose}`).style.backgroundImage = `url('${tech.tech[choose].url}')` //make the url the background image - } - }); - } else { - document.getElementById(`junk-${choose}`).style.backgroundImage = `url('${tech.tech[choose].url}')` - } - }, 1); + // setTimeout(() => { //delay so that the html element exists + // if (tech.tech[choose].url === undefined) { //if on url has been set yet + // const url = `https://api.openverse.engineering/v1/images/?q=${tech.tech[choose].name}`; + // fetch(url, { signal: AbortSignal.timeout(1000) }) //give up if it takes over 1 second + // .then((response) => response.json()) + // .then((responseJson) => { + // if (responseJson.results.length > 0) { + // const index = Math.floor(Math.random() * responseJson.results.length) //randomly choose from the images + // tech.tech[choose].url = responseJson.results[index].url //store the url + // document.getElementById(`junk-${choose}`).style.backgroundImage = `url('${tech.tech[choose].url}')` //make the url the background image + // } + // }); + // } else { + // document.getElementById(`junk-${choose}`).style.backgroundImage = `url('${tech.tech[choose].url}')` + // } + // }, 1); + // setTimeout(() => { //delay so that the html element exists + // document.getElementById(`junk-${choose}`).style.backgroundImage = `url('${tech.tech[choose].url}')` + // }, 1); } return `
@@ -941,7 +944,13 @@ const powerUps = { } // console.log(options.length) if (options.length > 0 || !tech.isSuperDeterminism) { - let totalChoices = Math.min(options.length, (tech.isDeterminism ? 1 : 2 + tech.extraChoices + 2 * (m.fieldMode === 8))) + let totalChoices = 2 + tech.extraChoices + 2 * (m.fieldMode === 8) + if (tech.isCancelTech && tech.cancelTechCount === 1) { + totalChoices *= 3 + tech.cancelTechCount++ + } + if (tech.isDeterminism) totalChoices = 1 + totalChoices = Math.min(options.length, totalChoices) function removeOption(index) { for (let i = 0; i < options.length; i++) { if (options[i] === index) { @@ -1002,7 +1011,14 @@ const powerUps = { for (let i = 1; i < m.fieldUpgrades.length; i++) { //skip field emitter if (i !== m.fieldMode) options.push(i); } - let totalChoices = Math.min(options.length, (tech.isDeterminism ? 1 : 2 + tech.extraChoices + 2 * (m.fieldMode === 8))) + // let totalChoices = Math.min(options.length, (tech.isDeterminism ? 1 : 2 + tech.extraChoices + 2 * (m.fieldMode === 8))) + let totalChoices = 2 + tech.extraChoices + 2 * (m.fieldMode === 8) + if (tech.isCancelTech && tech.cancelTechCount === 1) { + totalChoices *= 3 + tech.cancelTechCount++ + } + if (tech.isDeterminism) totalChoices = 1 + totalChoices = Math.min(options.length, totalChoices) function removeOption(index) { for (let i = 0; i < options.length; i++) { if (options[i] === index) { @@ -1076,7 +1092,15 @@ const powerUps = { } } //set total choices - let totalChoices = (tech.isDeterminism ? 1 : 3 + tech.extraChoices + 2 * (m.fieldMode === 8)) + // let totalChoices = (tech.isDeterminism ? 1 : 3 + tech.extraChoices + 2 * (m.fieldMode === 8)) + let totalChoices = 3 + tech.extraChoices + 2 * (m.fieldMode === 8) + if (tech.isCancelTech && tech.cancelTechCount === 1) { + totalChoices *= 3 + tech.cancelTechCount++ + } + if (tech.isDeterminism) totalChoices = 1 + totalChoices = Math.min(options.length, totalChoices) + if (optionLengthNoDuplicates < totalChoices + 1) { //if not enough options for all the choices totalChoices = optionLengthNoDuplicates if (tech.isBanish) { //when you run out of options eject banish @@ -1256,8 +1280,20 @@ const powerUps = { if (!alreadyHasGun) text += powerUps.gunText(choose, `powerUps.choose('gun',${choose})`) } for (let i = 0; i < localSettings.entanglement.techIndexes.length; i++) { //add tech - let choose = localSettings.entanglement.techIndexes[i] - if (tech.tech[choose]) { + + let found = false; + let choose = undefined + console.log(localSettings.entanglement.techIndexes[i]) + for (let j = 0; j < tech.tech.length; j++) { + if (localSettings.entanglement.techIndexes[i] === tech.tech[j].name) { + choose = j; + found = true; + break; + } + } + // let choose = localSettings.entanglement.techIndexes[i] + console.log(choose) + if (found && tech.tech[choose]) { const isCount = tech.tech[choose].count > 0 ? `(${tech.tech[choose].count + 1}x)` : ""; if (choose === null || tech.tech[choose].count + 1 > tech.tech[choose].maxCount || !tech.tech[choose].allowed()) { // text += `
${tech.tech[choose].name} - incoherent
` @@ -1330,12 +1366,11 @@ const powerUps = { powerUps.spawn(x, y, "gun"); return; } - // if (Math.random() < 0.0027 * (22 - tech.totalCount)) { //a new tech has a low chance for each not acquired tech up to 25 - if (Math.random() < 0.005 * (10 - level.levelsCleared)) { //a new tech has a low chance that decreases in later levels - powerUps.spawn(x, y, "tech"); - return; - } - if (Math.random() < 0.0015) { + // if (Math.random() < 0.005 * (10 - level.levelsCleared)) { //a new tech has a low chance that decreases in later levels + // powerUps.spawn(x, y, "tech"); + // return; + // } + if (Math.random() < 0.0016) { powerUps.spawn(x, y, "field"); return; } @@ -1499,7 +1534,7 @@ const powerUps = { // } tech.tech[index].frequency = 0 //banish tech powerUps.ejectTech(index) - m.damage(tech.pauseEjectTech * 0.01) + if (m.immuneCycle < m.cycle) m.damage(tech.pauseEjectTech * 0.01) tech.pauseEjectTech *= 1.2 document.getElementById(`${index}-pause-tech`).style.textDecoration = "line-through" document.getElementById(`${index}-pause-tech`).style.animation = "" @@ -1591,12 +1626,16 @@ const powerUps = { (!tech.isSuperDeterminism || (target !== 'research')) && !(tech.isEnergyNoAmmo && target === 'ammo') ) { - if (tech.isBoostReplaceAmmo && target === 'ammo') target = 'boost' + if (tech.isBoostReplaceAmmo && target === 'ammo') { + target = 'boost' + size = powerUps[target].size() + } powerUps.directSpawn(x, y, target, moving, mode, size) if (Math.random() < tech.duplicationChance()) { powerUps.directSpawn(x, y, target, moving, mode, size, true) powerUp[powerUp.length - 1].isDuplicated = true // if (tech.isPowerUpsVanish) powerUp[powerUp.length - 1].endCycle = simulation.cycle + 300 + if (tech.isDupEnergy) m.energy *= 2 } } }, diff --git a/js/spawn.js b/js/spawn.js index 1ac4b8f..72b0b8b 100644 --- a/js/spawn.js +++ b/js/spawn.js @@ -158,7 +158,7 @@ const spawn = { me.do = function () { if (!simulation.isTimeSkipping) { const sine = Math.sin(simulation.cycle * 0.015) - this.radius = 55 * tech.isDarkStar + 370 * (1 + 0.1 * sine) + this.radius = 111 * tech.isDarkStar + 370 * (1 + 0.1 * sine) //chase player const sub = Vector.sub(player.position, this.position) const mag = Vector.magnitude(sub) @@ -167,7 +167,21 @@ const spawn = { // const where = Vector.add(this.position, Vector.mult(Vector.normalise(sub), this.chaseSpeed)) // if (mag > 10) Matter.Body.setPosition(this, { x: where.x, y: where.y }); - //realistic physics + // if (true) { + // if (m.crouch) { + // if (Vector.magnitude(Vector.sub(this.position, m.pos)) > this.radius) { + // attract *= 40 + // } else { + // Matter.Body.setVelocity(this, Vector.mult(this.velocity, 0.9)); //friction + // } + + // } + // } + + if (tech.isMoveMACHO && m.crouch) { + Matter.Body.setVelocity(this, Vector.add(Vector.mult(this.velocity, 0.97), Vector.mult(player.velocity, 0.03))) + Matter.Body.setPosition(this, Vector.add(Vector.mult(this.position, 0.95), Vector.mult(player.position, 0.05))) + } const force = Vector.mult(Vector.normalise(sub), 0.000000003) this.force.x += force.x this.force.y += force.y @@ -175,18 +189,12 @@ const spawn = { if (mag < this.radius) { //buff to player when inside radius tech.isHarmMACHO = true; - //draw halo ctx.strokeStyle = "rgba(80,120,200,0.2)" //"rgba(255,255,0,0.2)" //ctx.strokeStyle = `rgba(0,0,255,${0.5+0.5*Math.random()})` ctx.beginPath(); ctx.arc(m.pos.x, m.pos.y, 36, 0, 2 * Math.PI); ctx.lineWidth = 10; ctx.stroke(); - // ctx.strokeStyle = "rgba(255,255,0,0.17)" //ctx.strokeStyle = `rgba(0,0,255,${0.5+0.5*Math.random()})` - // ctx.beginPath(); - // ctx.arc(this.position.x, this.position.y, this.radius, 0, 2 * Math.PI); - // ctx.lineWidth = 30; - // ctx.stroke(); } else { tech.isHarmMACHO = false; } @@ -203,14 +211,13 @@ const spawn = { for (let i = 0, len = mob.length; i < len; ++i) { if (mob[i].alive && !mob[i].isShielded) { if (Vector.magnitude(Vector.sub(this.position, mob[i].position)) - mob[i].radius < this.radius) { - mob[i].damage(0.025 * m.dmgScale); - // mob[i].locatePlayer();// - + const dmg = 0.025 * m.dmgScale * (tech.isMoveMACHO ? 1.5 : 1) + mob[i].damage(dmg); simulation.drawList.push({ //add dmg to draw queue x: mob[i].position.x, y: mob[i].position.y, radius: mob[i].radius + 8, - color: `rgba(10,0,40,0.1)`, // random hue, but not red + color: `rgba(10,0,40,0.1)`, time: 4 }); } @@ -5731,9 +5738,9 @@ const spawn = { sneakBoss(x, y, radius = 70) { mobs.spawn(x, y, 5, radius, "transparent"); let me = mob[mob.length - 1]; - Matter.Body.setDensity(me, 0.002); //extra dense //normal is 0.001 //makes effective life much larger + Matter.Body.setDensity(me, 0.001); //extra dense //normal is 0.001 //makes effective life much larger me.isBoss = true; - me.damageReduction = 0.25 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1) + me.damageReduction = 0.15 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1) me.accelMag = 0.0017 * Math.sqrt(simulation.accelScale); me.frictionAir = 0.01; @@ -5748,6 +5755,7 @@ const spawn = { me.vanishesLeft = Math.ceil(1 + simulation.difficultyMode * 0.5) me.onDeath = function () { powerUps.spawnBossPowerUp(this.position.x, this.position.y) + for (let i = 0; i < simulation.difficultyMode / 2 - 0.5; i++) spawn.sneaker(this.position.x + 10 * Math.random(), this.position.y + 10 * Math.random()) }; me.onDamage = function () { if (this.vanishesLeft > 0 && this.health < 0.1) { //if health is below 10% teleport to a random spot on player history, heal, and cloak @@ -5772,6 +5780,7 @@ const spawn = { this.seePlayer.recall = 0 this.cloak(); this.health = 1; + for (let i = 0; i < simulation.difficultyMode / 2 - 0.5; i++) spawn.sneaker(this.position.x + 10 * Math.random(), this.position.y + 10 * Math.random()) } }; me.cloak = function () { @@ -5803,7 +5812,7 @@ const spawn = { this.gravity(); this.seePlayerByHistory(55); this.checkStatus(); - this.attraction(); + if (this.alpha > 0.8) this.attraction(); //draw if (this.seePlayer.recall) { if (this.alpha < 1) this.alpha += 0.005 + 0.003 / simulation.CDScale; @@ -5908,7 +5917,7 @@ const spawn = { ghoster(x, y, radius = 50 + Math.ceil(Math.random() * 90)) { mobs.spawn(x, y, 7, radius, "transparent"); let me = mob[mob.length - 1]; - me.seeAtDistance2 = 300000; + me.seeAtDistance2 = 500000; me.accelMag = 0.00007 + 0.0001 * simulation.accelScale; if (map.length) me.searchTarget = map[Math.floor(Math.random() * (map.length - 1))].position; //required for search Matter.Body.setDensity(me, 0.0002); //normal is 0.001 @@ -5917,10 +5926,9 @@ const spawn = { me.alpha = 1; //used in drawGhost me.isNotCloaked = false; //used in drawGhost me.isBadTarget = true; - // me.leaveBody = false; me.collisionFilter.mask = cat.bullet //| cat.body me.showHealthBar = false; - me.memory = 600; + me.memory = 900; me.delay = 60 me.cd = 0; me.onHit = function () { @@ -5948,6 +5956,9 @@ const spawn = { } } }; + me.onDamage = function () { + if (this.health < 0.8) me.seeAtDistance2 = 2000000; + } me.do = function () { if (this.speed > 7) Matter.Body.setVelocity(this, { x: this.velocity.x * 0.8, y: this.velocity.y * 0.8 }); //cap max speed to avoid getting launched by deflection, explosion this.seePlayerCheckByDistance(); @@ -5957,8 +5968,8 @@ const spawn = { //draw if (this.distanceToPlayer2() < this.seeAtDistance2) { if (this.alpha < 1) this.alpha += 0.011 * simulation.CDScale; //near player go solid - } else { - if (this.alpha > 0) this.alpha -= 0.05; ///away from player, hide + } else if (this.alpha > 0) { + this.alpha -= 0.05; ///away from player, hide } if (this.alpha > 0) { if (this.alpha > 0.7 && this.seePlayer.recall) { diff --git a/js/tech.js b/js/tech.js index 322b3cb..9863578 100644 --- a/js/tech.js +++ b/js/tech.js @@ -212,14 +212,7 @@ const tech = { damage: 1, //used for tech changes to player damage that don't have complex conditions damageFromTech() { let dmg = tech.damage //m.fieldDamage - // if (tech.isDivisor) { - // for (let i = 0; i < b.inventory.length; i++) { - // if (b.guns[b.inventory[i]].ammo % 3 === 0) { - // dmg *= 1.44 - // break - // } - // } - // } + if (tech.isImmunityDamage && m.immuneCycle > m.cycle) dmg *= 4 if (tech.isPowerUpDamage) dmg *= 1 + 0.05 * powerUp.length if (tech.isDamageCooldown) dmg *= m.lastKillCycle + tech.isDamageCooldownTime > m.cycle ? 0.5 : 4 if (tech.isDamageAfterKillNoRegen && m.lastKillCycle + 300 > m.cycle) dmg *= 2 @@ -244,8 +237,8 @@ const tech = { if (tech.energyDamage) dmg *= 1 + m.energy * 0.23 * tech.energyDamage; if (tech.isDamageFromBulletCount) dmg *= 1 + bullet.length * 0.01 if (tech.isNoFireDamage && m.cycle > m.fireCDcycle + 120) dmg *= 2 - if (tech.isSpeedDamage) dmg *= 1 + Math.min(1, player.speed * 0.0193) - if (tech.isAxion && tech.isHarmMACHO) dmg *= 2 + if (tech.isSpeedDamage) dmg *= 1 + Math.min(1, (tech.speedAdded + player.speed) * 0.0193) + if (tech.isAxion && tech.isHarmMACHO) dmg *= (tech.isMoveMACHO ? 3 : 2) if (tech.isHarmDamage && m.lastHarmCycle + 480 > m.cycle) dmg *= 3; if (tech.lastHitDamage && m.lastHit) dmg *= 1 + tech.lastHitDamage * m.lastHit if (tech.isLowHealthDmg) dmg *= 1 + 0.7 * Math.max(0, 1 - (tech.isEnergyHealth ? m.energy : m.health)) @@ -253,7 +246,7 @@ const tech = { return dmg }, duplicationChance() { - return Math.min(1, Math.max(0, (tech.isPowerUpsVanish ? 0.13 : 0) + (tech.isStimulatedEmission ? 0.2 : 0) + tech.duplication + tech.duplicateChance + 0.05 * tech.isExtraGunField + m.duplicateChance + tech.fieldDuplicate + 0.08 * tech.isDuplicateMobs + 0.03 * tech.isMassProduction + 0.03 * tech.isHealAttract + tech.cloakDuplication + (tech.isAnthropicTech && tech.isDeathAvoidedThisLevel ? 0.6 : 0))) + return Math.min(1, Math.max(0, (tech.isPowerUpsVanish ? 0.13 : 0) + (tech.isStimulatedEmission ? 0.2 : 0) + tech.duplication + tech.duplicateChance + 0.05 * tech.isExtraGunField + m.duplicateChance + tech.fieldDuplicate + 0.08 * tech.isDuplicateMobs + 0.03 * tech.isMassProduction + 0.04 * tech.isHealAttract + tech.cloakDuplication + (tech.isAnthropicTech && tech.isDeathAvoidedThisLevel ? 0.6 : 0) + 0.06 * tech.isDupEnergy)) }, isScaleMobsWithDuplication: false, maxDuplicationEvent() { @@ -374,8 +367,8 @@ const tech = { m.skin.strokeGap(); }, remove() { + tech.isFireMoveLock = false if (tech.isFireMoveLock) { - tech.isFireMoveLock = false b.setFireCD(); b.setFireMethod(); if (this.count) m.resetSkin(); @@ -402,8 +395,11 @@ const tech = { tech.isCollisionRealitySwitch = true; }, remove() { - if (this.count && m.alive) tech.damage /= this.damage tech.isCollisionRealitySwitch = false; + if (this.count && m.alive) { + tech.damage /= this.damage + m.resetSkin(); + } } }, { @@ -524,7 +520,7 @@ const tech = { { name: "depolarization", descriptionFunction() { - return `0.5x damage for ${(tech.isDamageCooldownTime / 60).toFixed(1)} seconds after a mob dies
4x damage otherwise
` + return `4x damage, but if a mob dies
0.5x damage for ${(tech.isDamageCooldownTime / 60).toFixed(1)} seconds instead` }, maxCount: 1, count: 0, @@ -547,7 +543,7 @@ const tech = { { name: "repolarization", descriptionFunction() { - return `the damage from depolarization
resets 1.25 seconds sooner after a mob dies` + return `the damage from depolarization
resets 1.25 seconds sooner after a mob dies` }, maxCount: 3, count: 0, @@ -645,6 +641,25 @@ const tech = { tech.isDivisor = false; } }, + { + name: "integrated armament", + link: `
integrated armament`, + description: `1.3x damage, but new guns replace
your current gun and convert guntech
`, + maxCount: 1, + count: 0, + frequency: 1, + frequencyDefault: 1, + allowed() { + return b.inventory.length === 1 + }, + requires: "only 1 gun", + effect() { + tech.isOneGun = true; + }, + remove() { + tech.isOneGun = false; + } + }, { name: "ordnance", description: "spawn a gun, gain 2x guntech frequency
+6% JUNKtech chance", @@ -1067,7 +1082,7 @@ const tech = { }, { name: "dead reckoning", - description: "if your speed is 0
1.5x damage", + description: `if your speed is 0
1.5x damage`, maxCount: 9, count: 0, frequency: 1, @@ -1083,70 +1098,7 @@ const tech = { tech.restDamage = 1; } }, - { - name: "kinetic bombardment", - description: "far away mobs take more damage
up to 1.3x damage at 3000 displacement", - maxCount: 1, - count: 0, - frequency: 1, - frequencyDefault: 1, - allowed() { - return true - }, - requires: "", - effect() { - tech.isFarAwayDmg = true; //used in mob.damage() - }, - remove() { - tech.isFarAwayDmg = false; - } - }, - { - name: "integrated armament", - link: `integrated armament`, - description: `1.3x damage, but new guns replace
your current gun and convert guntech
`, - maxCount: 1, - count: 0, - frequency: 1, - frequencyDefault: 1, - allowed() { - return b.inventory.length === 1 - }, - requires: "only 1 gun", - effect() { - tech.isOneGun = true; - }, - remove() { - tech.isOneGun = false; - } - }, - { - name: "mechatronics", - descriptionFunction() { - let damageTotal = 1 - for (let i = 0; i < this.damageSoFar.length; i++) damageTotal *= this.damageSoFar[i] - let currentDamage = "" - if (this.count) currentDamage = `
(${(damageTotal).toFixed(2)}x)` - return `randomly gain between 1x and 1.3x damage` + currentDamage - }, - maxCount: 9, - count: 0, - frequency: 1, - frequencyDefault: 1, - allowed() { return true }, - requires: "", - damage: 1.1, - damageSoFar: [], //tracks the random damage upgrades so it can be removed and in descriptionFunction - effect() { - const damage = (Math.floor((Math.random() * 0.3 + 1) * 100)) / 100 - tech.damage *= damage - this.damageSoFar.push(damage) - }, - remove() { - if (this.count && m.alive) for (let i = 0; i < this.damageSoFar.length; i++) tech.damage /= this.damageSoFar[i] - this.damageSoFar.length = 0 - } - }, + // { // name: "coyote", // description: "", @@ -1178,7 +1130,7 @@ const tech = { { name: "Newtons 1st law", descriptionFunction() { - return `damage taken is proportional to your speed
up to 0.2x damage taken at 55 speed (${(1 - Math.min(player.speed * 0.0193, 0.8)).toFixed(2)}x)` + return `damage taken is proportional to your speed
up to 0.2x damage taken at 55 speed (${(1 - Math.min((tech.speedAdded + player.speed) * 0.0193, 0.8)).toFixed(2)}x)` }, description: "", maxCount: 1, @@ -1199,7 +1151,7 @@ const tech = { { name: "Newtons 2nd law", descriptionFunction() { - return `damage is proportional to your speed
up to 2x damage at 55 speed (${(1 + Math.min(1, player.speed * 0.0193)).toFixed(2)}x)` + return `damage is proportional to your speed
up to 2x damage at 55 speed (${(1 + Math.min(1, ((tech.speedAdded + player.speed) * 0.0193))).toFixed(2)}x)` }, maxCount: 1, count: 0, @@ -1216,6 +1168,44 @@ const tech = { tech.isSpeedDamage = false } }, + { + name: "modified Newtonian dynamics", + descriptionFunction() { + return `your speed counts as +20 higher
(for Newton's 1st and 2nd laws)` + }, + maxCount: 1, + count: 0, + frequency: 2, + frequencyDefault: 2, + allowed() { + return tech.isSpeedDamage || tech.isSpeedHarm + }, + requires: "Newtons 1st or 2nd law", + effect() { + tech.speedAdded = 20 + }, + remove() { + tech.speedAdded = 0 + } + }, + { + name: "kinetic bombardment", + description: "far away mobs take more damage
up to 1.3x damage at 3000 displacement", + maxCount: 1, + count: 0, + frequency: 1, + frequencyDefault: 1, + allowed() { + return true + }, + requires: "", + effect() { + tech.isFarAwayDmg = true; //used in mob.damage() + }, + remove() { + tech.isFarAwayDmg = false; + } + }, { name: "microstates", link: `microstates`, @@ -1283,6 +1273,53 @@ const tech = { b.setFireCD(); } }, + { + name: "heuristics", + description: "1.3x fire rate", + maxCount: 9, + count: 0, + frequency: 1, + frequencyDefault: 1, + allowed() { + return true + }, + requires: "", + effect() { + tech.fireRate *= 0.77 + b.setFireCD(); + }, + remove() { + tech.fireRate = 1; + b.setFireCD(); + } + }, + { + name: "mechatronics", + descriptionFunction() { + let damageTotal = 1 + for (let i = 0; i < this.damageSoFar.length; i++) damageTotal *= this.damageSoFar[i] + let currentDamage = "" + if (this.count) currentDamage = `
(${(damageTotal).toFixed(2)}x)` + return `randomly gain between 1x and 1.3x damage` + currentDamage + }, + maxCount: 9, + count: 0, + frequency: 1, + frequencyDefault: 1, + allowed() { return true }, + requires: "", + damage: 1.1, + damageSoFar: [], //tracks the random damage upgrades so it can be removed and in descriptionFunction + effect() { + const damage = (Math.floor((Math.random() * 0.3 + 1) * 100)) / 100 + tech.damage *= damage + this.damageSoFar.push(damage) + }, + remove() { + if (this.count && m.alive) for (let i = 0; i < this.damageSoFar.length; i++) tech.damage /= this.damageSoFar[i] + this.damageSoFar.length = 0 + } + }, { name: "dynamical systems", description: `use ${powerUps.orb.research(2)}
1.3x damage`, @@ -1315,26 +1352,6 @@ const tech = { } } }, - { - name: "heuristics", - description: "1.3x fire rate", - maxCount: 9, - count: 0, - frequency: 1, - frequencyDefault: 1, - allowed() { - return true - }, - requires: "", - effect() { - tech.fireRate *= 0.77 - b.setFireCD(); - }, - remove() { - tech.fireRate = 1; - b.setFireCD(); - } - }, { name: "anti-shear topology", link: `anti-shear topology`, @@ -2071,7 +2088,7 @@ const tech = { }, { name: "open-source", - description: `tech, fields, and guns have +1 bot choice
3x bottech frequency`, + description: `tech, fields, and guns have +1 bot choice
3x bottech frequency`, maxCount: 1, count: 0, frequency: 1, @@ -2422,285 +2439,7 @@ const tech = { tech.isBlockPowerUps = false } }, - // { - // name: "NOR gate", - // description: "if flip-flop is OFF
become invulnerable to your next collision", - // maxCount: 1, - // count: 0, - // frequency: 3, - // frequencyDefault: 3, - // allowed() { - // return tech.isFlipFlop - // }, - // requires: "flip-flop", - // effect() { - // tech.isFlipFlopHarm = true //do you have this tech - // }, - // remove() { - // tech.isFlipFlopHarm = false - // } - // }, - // { - // name: "shape-memory alloy", - // descriptionFunction() { - // return `if flip-flop is ON
+400 maximum health and 2x ${powerUps.orb.heal()} effect` - // }, - // maxCount: 1, - // count: 0, - // frequency: 3, - // frequencyDefault: 3, - // allowed() { - // return tech.isFlipFlop - // }, - // requires: "flip-flop", - // effect() { - // tech.isFlipFlopHealth = true; - // m.setMaxHealth(); - // for (let i = 0; i < powerUp.length; i++) { - // if (powerUp[i].name === "heal") { - // const oldSize = powerUp[i].size - // powerUp[i].size = powerUps.heal.size() //update current heals - // const scale = powerUp[i].size / oldSize - // Matter.Body.scale(powerUp[i], scale, scale); //grow - // } - // } - // }, - // remove() { - // tech.isFlipFlopHealth = false; - // m.setMaxHealth(); - // for (let i = 0; i < powerUp.length; i++) { - // if (powerUp[i].name === "heal") { - // const oldSize = powerUp[i].size - // powerUp[i].size = powerUps.heal.size() //update current heals - // const scale = powerUp[i].size / oldSize - // Matter.Body.scale(powerUp[i], scale, scale); //grow - // } - // } - // } - // }, - // { - // name: "flip-flop", - // link: `flip-flop`, - // description: `toggle ON and OFF after a collision
unlock advanced tech that runs if ON`, - // // nameInfo: "", - // // addNameInfo() { - // // setTimeout(function () { - // // if (document.getElementById("tech-flip-flop")) { - // // if (tech.isFlipFlopOn) { - // // document.getElementById("tech-flip-flop").innerHTML = ` = ON` - // // m.eyeFillColor = m.fieldMeterColor //'#5af' - // // } else { - // // document.getElementById("tech-flip-flop").innerHTML = ` = OFF` - // // m.eyeFillColor = "transparent" - // // } - // // } - // // }, 100); - // // }, - // maxCount: 1, - // count: 0, - // frequency: 1, - // frequencyDefault: 1, - // allowed() { - // return !tech.isRelay - // }, - // requires: "not relay switch", - // effect() { - // tech.isFlipFlop = true //do you have this tech? - // if (!tech.isFlipFlopOn) { - // tech.isFlipFlopOn = true //what is the state of flip-Flop? - // } - // // if (!m.isShipMode) { - // // m.skin.flipFlop() - // // } - // }, - // remove() { - // tech.isFlipFlop = false - // if (tech.isFlipFlopOn) { - // tech.isFlipFlopOn = false //what is the state of flip-Flop? - // } - // m.eyeFillColor = 'transparent' - // // m.resetSkin(); - // } - // }, - // { - // name: "NAND gate", - // description: "if ON
1.555x damage", - // maxCount: 1, - // count: 0, - // frequency: 3, - // frequencyDefault: 3, - // allowed() { - // return tech.isFlipFlop || tech.isRelay - // }, - // requires: "ON/OFF tech", - // effect() { - // tech.isFlipFlopDamage = true; - // }, - // remove() { - // tech.isFlipFlopDamage = false; - // } - // }, - // { - // name: "integrated circuit", - // description: "if ON +7 power up choices
if OFF -1 power up choices", - // maxCount: 1, - // count: 0, - // frequency: 3, - // frequencyDefault: 3, - // allowed() { - // return (tech.isFlipFlop || tech.isRelay) && !tech.isDeterminism - // }, - // requires: "ON/OFF tech, not determinism", - // effect() { - // tech.isFlipFlopChoices = true //do you have this tech - // }, - // remove() { - // tech.isFlipFlopChoices = false - // } - // }, - // { - // name: "transistor", - // description: "if ON generate +20 energy per second
if OFF drain -1 energy per second", - // maxCount: 1, - // count: 0, - // frequency: 3, - // frequencyDefault: 3, - // allowed() { - // return tech.isFlipFlop || tech.isRelay - // }, - // requires: "ON/OFF tech", - // effect() { - // tech.isFlipFlopEnergy = true; - // }, - // remove() { - // tech.isFlipFlopEnergy = false; - // } - // }, - // // { - // // name: "decoupling", - // // link: `decoupling`, - // // descriptionFunction() { - // // //(${ m.couplingDescription(this.bonus)}) - // // return `if ON +5 coupling
if OFF a dangerous particle slowly chases you` - // // }, - // // maxCount: 1, - // // count: 0, - // // frequency: 3, - // // frequencyDefault: 3, - // // bonus: 5, //coupling given - // // allowed() { - // // return tech.isFlipFlop || tech.isRelay - // // }, - // // requires: "ON/OFF tech", - // // effect() { - // // tech.isFlipFlopCoupling = true; - // // if (tech.isFlipFlopOn) { - // // m.couplingChange(this.bonus) - // // } else { - // // for (let i = 0; i < mob.length; i++) { - // // if (mob[i].isDecoupling) mob[i].alive = false //remove WIMP - // // } - // // spawn.WIMP() - // // mob[mob.length - 1].isDecoupling = true //so you can find it to remove - // // } - // // }, - // // remove() { - // // tech.isFlipFlopCoupling = false; - // // if (this.count) { - // // if (tech.isFlipFlop || tech.isRelay) { - // // if (tech.isFlipFlopOn) { - // // m.couplingChange(-this.bonus) - // // } else { - // // for (let i = 0; i < mob.length; i++) { - // // if (mob[i].isDecoupling) mob[i].alive = false //remove WIMP - // // } - // // } - // // } - // // } - // // } - // // }, - // { - // name: "relay switch", - // description: `toggle ON and OFF after picking up a power up
unlock advanced tech that runs if ON`, - // // nameInfo: "", - // // addNameInfo() { - // // setTimeout(function () { - // // if (document.getElementById("tech-switch")) { - // // if (tech.isFlipFlopOn) { - // // document.getElementById("tech-switch").innerHTML = ` = ON` - // // m.eyeFillColor = m.fieldMeterColor //'#5af' - // // } else { - // // document.getElementById("tech-switch").innerHTML = ` = OFF` - // // m.eyeFillColor = "transparent" - // // } - // // } - // // }, 100); - // // }, - // maxCount: 1, - // count: 0, - // frequency: 1, - // frequencyDefault: 1, - // allowed() { - // return !tech.isFlipFlop - // }, - // requires: "not flip-flop", - // effect() { - // m.isAltSkin = true - // tech.isRelay = true //do you have this tech? - // if (!tech.isFlipFlopOn) { - // tech.isFlipFlopOn = true //what is the state of flip-Flop? - // } - // // if (!m.isShipMode) { - // // m.skin.flipFlop() - // // } - // }, - // remove() { - // tech.isRelay = false - // if (tech.isFlipFlopOn) { - // tech.isFlipFlopOn = false //what is the state of flip-Flop? - // } - // m.eyeFillColor = 'transparent' - // // m.resetSkin(); - // } - // }, - // { - // name: "lithium-ion", - // description: "if relay switch is ON
+300 maximum energy", - // maxCount: 1, - // count: 0, - // frequency: 3, - // frequencyDefault: 3, - // allowed() { - // return tech.isRelay - // }, - // requires: "relay switch", - // effect() { - // tech.isRelayEnergy = true - // m.setMaxEnergy() - // }, - // remove() { - // tech.isRelayEnergy = false - // m.setMaxEnergy() - // } - // }, - // { - // name: "thermocouple", - // description: "if relay switch is ON
condense 4-13 ice IX crystals per second", - // maxCount: 9, - // count: 0, - // frequency: 3, - // frequencyDefault: 3, - // allowed() { - // return tech.isRelay - // }, - // requires: "relay switch", - // effect() { - // tech.relayIce++ - // }, - // remove() { - // tech.relayIce = 0 - // } - // }, + { name: "first derivative", descriptionFunction() { @@ -2723,7 +2462,7 @@ const tech = { }, { name: "MACHO", - description: "a massive compact halo object follows you
0.4x damage taken inside the MACHO", + description: "a massive compact halo object follows you
0.4x damage taken inside the MACHO", maxCount: 1, count: 0, frequency: 1, @@ -2744,9 +2483,27 @@ const tech = { } } }, + { + name: "entropic gravity", + description: "crouching pulls the MACHO towards you
1.5x to all MACHO effects", + maxCount: 1, + count: 0, + frequency: 2, + frequencyDefault: 2, + allowed() { + return tech.isMACHO + }, + requires: "MACHO", + effect() { + tech.isMoveMACHO = true + }, + remove() { + tech.isMoveMACHO = false + } + }, { name: "axion", - description: "while inside the MACHO
2x damage", + description: "while inside the MACHO
2x damage", maxCount: 1, count: 0, frequency: 2, @@ -2764,7 +2521,7 @@ const tech = { }, { name: "dark star", - description: "mobs inside the MACHO are damaged
1.2x MACHO radius", + description: `mobs inside the MACHO are damaged
1.3x MACHO radius`, maxCount: 1, count: 0, frequency: 2, @@ -2827,10 +2584,6 @@ const tech = { return powerUps.research.count > 1 || build.isExperimentSelection }, requires: "", - // allowed() { - // return (m.fieldMode === 8 || m.fieldMode === 2 || m.fieldMode === 3 || m.fieldMode === 10) && (build.isExperimentSelection || powerUps.research.count > 3) - // }, - // requires: "perfect diamagnetism, negative mass, grappling hook, pilot wave", effect() { tech.isFieldHarmReduction = true for (let i = 0; i < 2; i++) { @@ -2844,7 +2597,7 @@ const tech = { }, { name: "Pauli exclusion", - description: `after mob collisions
become invulnerable for +4 seconds`, + description: `for 6 seconds after mob collisions
become invulnerable and inhibit energy regen`, maxCount: 9, count: 0, frequency: 1, @@ -2854,7 +2607,7 @@ const tech = { }, requires: "", effect() { - m.collisionImmuneCycles += 240; + m.collisionImmuneCycles += 360; if (m.immuneCycle < m.cycle + m.collisionImmuneCycles) m.immuneCycle = m.cycle + m.collisionImmuneCycles; //player is immune to damage }, remove() { @@ -2862,8 +2615,8 @@ const tech = { } }, { - name: "spin–statistics theorem", - description: `every 7 seconds
become invulnerable for +1.9 seconds`, + name: "spin-statistics theorem", + description: `for 1.9 seconds out of every 7 seconds
become invulnerable and inhibit energy regen`, maxCount: 3, count: 0, frequency: 1, @@ -2879,6 +2632,42 @@ const tech = { tech.cyclicImmunity = 0; } }, + { + name: "fermion", + description: `for 6 seconds after mobs die
become invulnerable and inhibit energy regen`, + maxCount: 1, + count: 0, + frequency: 1, + frequencyDefault: 1, + allowed() { + return true + }, + requires: "", + effect() { + tech.isMobDeathImmunity = true; + }, + remove() { + tech.isMobDeathImmunity = false; + } + }, + { + name: "Abelian group", + description: `4x damage while invulnerable`, + maxCount: 1, + count: 0, + frequency: 2, + frequencyDefault: 2, + allowed() { + return tech.isMobDeathImmunity || tech.cyclicImmunity || m.collisionImmuneCycles > 30 + }, + requires: "invincibility tech", + effect() { + tech.isImmunityDamage = true; + }, + remove() { + tech.isImmunityDamage = false; + } + }, { name: "refrigerant", descriptionFunction() { @@ -3060,7 +2849,7 @@ const tech = { }, { name: "inductive charging", - description: "if crouched 7x passive energy generation
otherwise passive energy generation is disabled", + description: "if crouched 7x passive energy generation
otherwise 0x passive energy generation", maxCount: 1, count: 0, frequency: 1, @@ -3101,7 +2890,7 @@ const tech = { }, { name: "parasitism", - description: "if a mob has died in the last 5 seconds
2x damage, no passive energy generation", + description: "if a mob has died in the last 5 seconds
2x damage, no passive energy generation", maxCount: 1, count: 0, frequency: 1, @@ -3124,7 +2913,7 @@ const tech = { }, { name: "waste heat recovery", - description: "if a mob has died in the last 5 seconds
generate 0.05x max energy per second", + description: "if a mob has died in the last 5 seconds
generate 0.05x max energy per second", maxCount: 1, count: 0, frequency: 1, @@ -3143,7 +2932,7 @@ const tech = { { name: "recycling", descriptionFunction() { - return `if a mob has died in the last 5 seconds
recover 0.005x max ${tech.isEnergyHealth ? "energy" : "health"} per second` + return `if a mob has died in the last 5 seconds
recover 0.005x max ${tech.isEnergyHealth ? "energy" : "health"} per second` }, description: "", maxCount: 1, @@ -3164,7 +2953,7 @@ const tech = { }, { name: "torpor", - description: "if a mob has not died in the last 5 seconds
0.3x damage taken", + description: "if a mob has not died in the last 5 seconds
0.3x damage taken", maxCount: 1, count: 0, frequency: 1, @@ -3407,7 +3196,7 @@ const tech = { { name: "accretion", descriptionFunction() { - return `${powerUps.orb.heal(1)} follow you, even between levels
+3% chance to duplicate spawned power ups` + return `${powerUps.orb.heal(1)} follow you, even between levels
+4% chance to duplicate spawned power ups` }, maxCount: 1, count: 0, @@ -3421,7 +3210,7 @@ const tech = { effect() { tech.isHealAttract = true powerUps.setPowerUpMode(); - if (!build.isExperimentSelection && !simulation.isTextLogOpen) simulation.circleFlare(0.03); + if (!build.isExperimentSelection && !simulation.isTextLogOpen) simulation.circleFlare(0.04); }, remove() { tech.isHealAttract = false @@ -3840,7 +3629,7 @@ const tech = { }, { name: "brainstorming", - description: "tech choices randomize
every 1.5 seconds for 10 seconds", + description: "tech choices randomize
every 1.5 seconds for 10 seconds", maxCount: 1, count: 0, frequency: 1, @@ -3861,7 +3650,7 @@ const tech = { }, { name: "cross-disciplinary", - description: "tech have an extra field or gun choice
+5% chance to duplicate spawned power ups", + description: "tech have an extra field or gun choice
+5% chance to duplicate spawned power ups", maxCount: 1, count: 0, frequency: 1, @@ -3882,7 +3671,7 @@ const tech = { }, { name: "emergence", - description: "tech, fields, and guns have +1 choice
1.1x damage", + description: "tech, fields, and guns have +1 choice
1.1x damage", maxCount: 9, count: 0, frequency: 1, @@ -3905,7 +3694,7 @@ const tech = { { name: "path integral", link: `path integral`, - description: "your next tech choice has all possible options
+5% JUNKtech chance", + description: "your next tech choice has all possible options
+5% JUNKtech chance", maxCount: 1, count: 0, frequency: 1, @@ -3932,7 +3721,7 @@ const tech = { }, { name: "determinism", - description: "spawn 5 tech
only 1 choice for tech, fields, and guns", + description: "spawn 5 tech
only 1 choice for tech, fields, and guns", maxCount: 1, count: 0, frequency: 1, @@ -4099,9 +3888,8 @@ const tech = { { name: "mass production", descriptionFunction() { - return `tech have extra choices to spawn ${powerUps.orb.ammo(1)},  ${powerUps.orb.heal(1)},  or  ${powerUps.orb.research(1)}
+3% chance to duplicate spawned power ups` + return `tech have extra choices to spawn ${powerUps.orb.ammo(1)},  ${powerUps.orb.heal(1)},  or  ${powerUps.orb.research(1)}
+3% chance to duplicate spawned power ups` }, - // description: `< strong class='color-m' > tech always have < strong > +3 choices to spawn < br > ${ powerUps.orb.ammo(8) } ${ powerUps.orb.heal(8) } & nbsp;& nbsp; or ${ powerUps.orb.research(5) } `, maxCount: 1, count: 0, frequency: 1, @@ -4215,7 +4003,6 @@ const tech = { orbText = powerUps.orb.coupling(converted) } return `convert ${this.researchUsed} ${powerUps.orb.research(1)} into ${orbText}
${m.couplingDescription(1)} per ${powerUps.orb.coupling(1)}` - } else { let converted = powerUps.research.count * this.couplingToResearch let orbText @@ -4226,13 +4013,12 @@ const tech = { } return `convert ${powerUps.research.count} ${powerUps.orb.research(1)} into ${orbText}
${m.couplingDescription(1)} per ${powerUps.orb.coupling(1)}` } - - }, maxCount: 1, count: 0, frequency: 1, frequencyDefault: 1, + isInstant: true, allowed() { return powerUps.research.count > 3 }, @@ -4315,7 +4101,7 @@ const tech = { name: "residual dipolar coupling", descriptionFunction() { // return `clicking cancel for a field, tech, or gun
spawns ${powerUps.orb.coupling(5)}that each give +0.1 coupling`//
${m.couplingDescription(1)} ${m.fieldMode === 0 ? "" : "per coupling"} - return `clicking cancel spawns ${powerUps.orb.coupling(7)}
${m.couplingDescription(1)} per ${powerUps.orb.coupling(1)}` + return `clicking cancel spawns ${powerUps.orb.coupling(8)}
${m.couplingDescription(1)} per ${powerUps.orb.coupling(1)}` }, maxCount: 1, count: 0, @@ -4355,7 +4141,8 @@ const tech = { { name: "options exchange", link: `options exchange`, - description: `the first time you click cancel it will instead
randomize choices for fields, tech, or guns`, + // description: `once per level clicking cancel will randomize
with 2x choices for fields, tech, or guns
`, + description: `clicking cancel for fields, tech, or guns
will randomize with 3x choices, once a level`, maxCount: 1, count: 0, frequency: 1, @@ -4775,7 +4562,6 @@ const tech = { return (tech.totalCount > 6) }, requires: "more than 6 tech", - // removePercent: 0.5, damagePerRemoved: 0.5, damage: null, effect() { @@ -4785,7 +4571,7 @@ const tech = { } pool = shuffle(pool); //shuffles order of maps let removeCount = 0 - for (let i = 0, len = pool.length * this.damagePerRemoved; i < len; i++) removeCount += tech.removeTech(pool[i]) + for (let i = 0, len = pool.length * 0.5; i < len; i++) removeCount += tech.removeTech(pool[i]) this.damage = this.damagePerRemoved * removeCount tech.damage *= (1 + this.damage) }, @@ -5054,7 +4840,7 @@ const tech = { }, { name: "rotary cannon", - description: "nail gun has increased muzzle speed,
maximum fire rate, accuracy, and recoil", + description: `nail gun has increased muzzle speed,
maximum fire rate, accuracy, and recoil`, isGunTech: true, maxCount: 1, count: 0, @@ -5180,7 +4966,7 @@ const tech = { { name: "spin-statistics", link: `spin-statistics`, - description: `after firing the shotgun you are invulnerable
shotgun has 0.5x bullets per ${powerUps.orb.ammo(1)}`, + description: `after firing the shotgun you are invulnerable
shotgun has 0.7x bullets per ${powerUps.orb.ammo(1)}`, isGunTech: true, maxCount: 1, count: 0, @@ -5196,8 +4982,8 @@ const tech = { //cut current ammo by 1/2 for (i = 0, len = b.guns.length; i < len; i++) { //find which gun if (b.guns[i].name === "shotgun") { - b.guns[i].ammo = Math.ceil(b.guns[i].ammo * 0.5); - b.guns[i].ammoPack *= 0.5 + b.guns[i].ammo = Math.ceil(b.guns[i].ammo * 0.7); + b.guns[i].ammoPack *= 0.7 break; } } @@ -5208,8 +4994,8 @@ const tech = { if (this.count > 0) { for (i = 0, len = b.guns.length; i < len; i++) { //find which gun if (b.guns[i].name === "shotgun") { - b.guns[i].ammoPack = 2 - b.guns[i].ammo = Math.ceil(b.guns[i].ammo * 2); + b.guns[i].ammoPack /= 0.7 + b.guns[i].ammo = Math.ceil(b.guns[i].ammo / 0.7); simulation.updateGunHUD(); break; } @@ -5478,7 +5264,7 @@ const tech = { }, { name: "rebound", - description: `after they collide with a mob, super balls
gain speed, duration, and 1.3x damage`, + description: `after they collide with a mob, super balls
gain speed, duration, and 1.3x damage`, isGunTech: true, maxCount: 1, count: 0, @@ -5497,7 +5283,7 @@ const tech = { }, { name: "Zectron", - description: `2x super ball density and damage, but
after colliding with super balls -4 energy`, + description: `2x super ball damage, but
after colliding with super balls -4 energy`, isGunTech: true, maxCount: 1, count: 0, @@ -5535,7 +5321,7 @@ const tech = { }, { name: "autocannon", - description: "fire +1 extra super ball
balls are quickly released in same direction", + description: "fire +2 super balls in a line
1.4x super ball velocity and gravity", isGunTech: true, maxCount: 1, count: 0, @@ -5648,7 +5434,7 @@ const tech = { }, { name: "propagation", - description: "0.75x wave propagation speed
1.4x wave damage", + description: `0.75x wave propagation speed
1.4x wave damage`, isGunTech: true, maxCount: 9, count: 0, @@ -5923,7 +5709,7 @@ const tech = { }, { name: "iridium-192", - description: "explosions release gamma radiation
2x explosion damage over 4 seconds", + description: "explosions release gamma radiation
2x explosion damage over 4 seconds", isGunTech: true, maxCount: 1, count: 0, @@ -6766,7 +6552,7 @@ const tech = { }, { name: "von Neumann probe", //"drone repair", - description: "after a drone expires
it will harvest a nearby block to replicate itself", + description: "after a drone expires it will use -5 energy
and a nearby block to replicate itself", // description: "broken drones repair if the drone gun is active
repairing has a 25% chance to use 1 drone", isGunTech: true, maxCount: 1, @@ -8735,25 +8521,6 @@ const tech = { if (this.count > 0) powerUps.research.changeRerolls(3) } }, - // { - // name: "Penrose process", - // description: "after a block falls into a wormhole
+50 energy", - // isFieldTech: true, - // maxCount: 1, - // count: 0, - // frequency: 2, - // frequencyDefault: 2, - // allowed() { - // return m.fieldMode === 9 - // }, - // requires: "wormhole", - // effect() { - // tech.isWormholeEnergy = true - // }, - // remove() { - // tech.isWormholeEnergy = false - // } - // }, { name: "transdimensional worms", link: `transdimensional worms`, @@ -8774,6 +8541,30 @@ const tech = { tech.isWormholeWorms = false } }, + { + name: "anyon", + descriptionFunction() { + return `2x energy after duplicating a power up
+6% chance to duplicate spawned power ups` + }, + isFieldTech: true, + maxCount: 1, + count: 0, + frequency: 1, + frequencyDefault: 1, + allowed() { + return m.fieldMode === 9 || m.fieldMode === 1 + }, + requires: "wormhole, standing wave", + effect() { + tech.isDupEnergy = true; + powerUps.setPowerUpMode(); //needed after adjusting duplication chance + if (!build.isExperimentSelection && !simulation.isTextLogOpen) simulation.circleFlare(0.06); + }, + remove() { + tech.isDupEnergy = false; + if (this.count) powerUps.setPowerUpMode(); //needed after adjusting duplication chance } + } + }, { name: "geodesics", description: `your bullets can traverse wormholes
1.5x damage`, @@ -9291,7 +9082,7 @@ const tech = { allowed: () => true, requires: "", effect() { - if (Math.random() < 0.1) tech.damage *= 8.77 + if (Math.random() < 0.07) tech.damage *= 7.77 }, remove() { } }, @@ -9647,7 +9438,7 @@ const tech = { }, { name: "brainstorm", - description: "the tech choice menu randomizes
every 0.5 seconds for 10 seconds", + description: "the tech choice menu randomizes
every 0.5 seconds for 10 seconds", maxCount: 1, count: 0, frequency: 0, @@ -11935,6 +11726,7 @@ const tech = { historyLaser: null, isSpeedHarm: null, isSpeedDamage: null, + speedAdded: null, isTimeSkip: null, isCancelDuplication: null, duplication: null, @@ -11956,6 +11748,7 @@ const tech = { isAmmoFoamSize: null, isIceIX: null, isDupDamage: null, + isDupEnergy: null, isFireRateForGuns: null, cyclicImmunity: null, isTechDamage: null, @@ -11996,6 +11789,7 @@ const tech = { isAddBlockMass: null, isMACHO: null, isHarmMACHO: null, + isMoveMACHO: null, isSneakAttack: null, isFallingDamage: null, harmonics: null, @@ -12133,5 +11927,6 @@ const tech = { isExitPrompt: null, isResearchDamage: null, interestRate: null, - + isImmunityDamage: null, + isMobDeathImmunity: null, } \ No newline at end of file diff --git a/style.css b/style.css index 98d20db..980ec5b 100644 --- a/style.css +++ b/style.css @@ -744,13 +744,6 @@ summary { user-select: none; } -/* color for in game console output */ -/* .ammo-flash { - color: #f33; - transition: color 2s; -} */ - - .color-text { color: #000; } @@ -817,6 +810,58 @@ summary { color: #356; } +.color-choice { + display: inline-block; +} + +.color-choice span { + display: inline-block; + animation: bounce 3s infinite; + transform-origin: bottom; + color: #555; +} + +.color-choice span:nth-child(1) { + animation-delay: 0s; +} + +.color-choice span:nth-child(2) { + animation-delay: 1s; +} + +.color-choice span:nth-child(3) { + animation-delay: 2s; +} + +@keyframes bounce { + 0% { + transform: translateY(0); + } + + 15% { + transform: translateY(-2px); + color: #aaa; + } + + 30% { + transform: translateY(0); + } + + 100% { + transform: translateY(0); + } +} + +.color-invulnerable { + color: #fff; + text-shadow: 0px 0px 7px #000; +} + +.color-MACHO { + color: #246; + text-shadow: 0px 0px 7px #246; +} + .color-dup { font-variant: small-caps; letter-spacing: 1px; @@ -1071,6 +1116,44 @@ summary { background-color: #f7b; } +.color-speed { + display: inline-block; + transform: skew(-27deg); + /* font-weight: 400; */ + color: #038; +} + +.color-randomize { + display: inline-block; + animation: randomize 4s linear infinite alternate; + transform-origin: bottom; + color: #555; +} + +@keyframes randomize { + + 0%, + 100% { + font-family: Arial; + } + + 20% { + font-family: Times New Roman; + } + + 40% { + font-family: Verdana; + } + + 60% { + font-family: Georgia; + } + + 80% { + font-family: Courier New; + } +} + .alt { animation: alt 8s linear infinite alternate; font-weight: 400; diff --git a/todo.txt b/todo.txt index be9c180..06eeddd 100644 --- a/todo.txt +++ b/todo.txt @@ -1,34 +1,85 @@ ******************************************************** NEXT PATCH ************************************************** -newLevel - towers - please give feedback -boost level elements can now be pointed at any angle +tech: anyon - 2x energy after duplicating a power up, +6% duplication chance +tech: Abelian group - 4x damage while invulnerable +tech: fermion - become invulnerable for 5 seconds after a mob dies +tech: entropic gravity - crouching pulls MACHO towards the player, and 1.5x to all MACHO effects (damage, damage reduction, AoE damage) +tech: modified Newtonian dynamics - +20 speed for all Newtonian law tech -paradigm shift costs 1 health, but cost increases after each use - ejecting with paradigm shift tech sets their frequency to zero, so they don't show up again -polyurethane foam - makes more foam from super balls -bubble fusion - now works with any shield, but only once per mob - so it triggers from the shieldingBoss -collider - has a higher chance to form tech vs. other power ups +choice, MACHO, invulnerable, speed - have text keyword CSS style +removed chance to find a random tech in early levels from mobs + this reduces tech per full game by about 2 +tower level has a few changes +options exchange only works once per level, but it gives 3x choices after randomizing +dark star has a 1.2->1.3x MACHO radius +autocannon fires 1->2 extra super balls, but balls have higher gravity +grappling hook field starts with 0.6x damage reduction +super balls + uncertainty principle makes all balls start in the same spot and only separate after teleporting +ablative drones spawns 50% more drones on collision +von Neumann probe gives 40% more drones per block mass + also added text clarification that it uses 5 energy +tech lens rotates 50% faster +ghoster mobs are more aggressive once they have lost 20% health +sneakBoss doesn't start accelerating until it is partly uncloaked, but it spawns sneaker mobs after cloaking -removed all ON/OFF tech - I just don't think they are fun +fixed bug with 2 different boost power up sizes +paradigm shift doesn't do damage while player is invulnerable +random internet JUNK images disabled because some of the images are bad +entanglement bug fix, maybe -JUNK tech - wall jump +******************************************************* DESIGN ****************************************************** -fixed some bugs +priorities + synergies between tech + difficult to achieve synergies that feel so powerful they are game breaking / changing + randomized content adds repeatability + bosses, mobs, levels, tech + graphical indicators of tech effects and quantity + subtle lore woven into unexpected places -player damage reduction adjustment: 0.9x -> 0.89x per level per difficulty mode (1,2,4,5) - on easy that's 0.28 -> 0.245 by level 12 (a 12% player damage nerf) - on why a 50% player damage nerf by level 12 +add more randomize sub level map content + left/right sides of lock + small lab rooms + +powerful synergies + CPT + high energy regen + research + bot fabrication + ersatz bots + various bot upgrades + harpoon + high fire rate + alternator + time dilation + duplication 100% + interest + coupling, research + (peer review? or Bayesian statistics) + electronegativity and high energy? + electronegativity + anyon + duplication + Maxwells demon + interest + chain reaction + invulnerable + Abelian group + parasitism = clear all mobs on level *********************************************************** TODO ***************************************************** -increase difficulty +make each difficulty level have specific listed changes + to motivate people to try that difficulty to see the difference + make difficulty easier to see + in pause menu + before game begins + automatically increase difficulty when player wins? + difficulty based changes (maybe in the order) + more bosses + more mobs + mobs attack faster + mobs move faster + reduced heals + reduced damage done + increased damage taken + mobs regen health + -1 choice for tech, field, gun + no starting power ups (heal, research) + starting JUNK chance? -quantum physics lecture notes: -https://www.scottaaronson.com/democritus/lec9.html -Quantum mechanics is what you would inevitably come up with if you started from probability theory, and then said, let's try to generalize it so that the numbers we used to call "probabilities" can be negative numbers. +bug Newton's 1st law image not showing up on github server + shows up on n-gon, and landgreen github, but webp file isn't loading onto server? + try name change, + wait and see if next patch fixes it + +Boss mob - takes a snapshot of the positions of all mobs, player, blocks, power ups. Then 3 seconds later it teleports everything back to those spots. + after snap shot is stored draw outline of body positions for a second to show the change + immune after snapshot? or immune after teleport? flip player upside down how @@ -37,15 +88,10 @@ flip player upside down flip player crouch direction redraw legs, orb flip gravity - when to use? fieldTech: negative mass? effect in level -tech - while immune to damage taken: - 3x damage - no ammo costs? -tech - immune to damage taken after killing a mob tech - after a power up is duplicated update text to random effect after choosing tech, or after each trigger, or on first display of tech pick 1 effect at random @@ -53,11 +99,13 @@ tech - after a power up is duplicated summon JUNK bots for 10 seconds 2x current energy gain 1.01x damage permanently - + cool name: field tech: negative mass - quickly pull/teleport in all nearby blocks and then fire them away from player - what triggers effect? - auto aim blocks? + how does player triggers effect? + picking up a block pulls in all nearby blocks, throwing block fires all nearby blocks + taking damage + auto aim 50% of blocks at mobs after picking up heals gain ____ 0.1x damage taken for 12s @@ -1220,17 +1268,8 @@ possible names for tech Upon infection with a retrovirus, a cell converts the retroviral RNA into DNA and sometimes the DNA will be passed on to progeny as JUNK DNA amalgam, amalgamation - the action, process, or result of combining or uniting. thermoplastic - the stuff in 3-D printers, use for molecular assembler tech - -******************************************************** DESIGN ******************************************************** - -List of ways to break the game - options exchange + paradigm shift + CPT to undo health cost = repeatable cancel triggers - CPT + high energy regen - research -> bot fabrication -> ersatz bots -> various bot upgrades - grappling hook + high fire rate + alternator + time dilation - duplication 100% - interest + coupling, research + peer review? - electronegativity and high energy? + ergosphere - region of a spinning black hole that might allow FTL or alternate realities. + equivalence principle - gravity and acceleration are the same ******************************************************** IMAGES ********************************************************