From 4405327828f171865d0a67dfe4cf436904bf5601 Mon Sep 17 00:00:00 2001 From: landgreen Date: Wed, 19 May 2021 16:34:36 -0700 Subject: [PATCH] block "block" is now styled text blocking with a shield is now called deflecting added 100% block damage buffs to flywheel and inelastic collision restitution now spawns 2 power ups (up from 1) about 75 edits to tech requirement text --- .DS_Store | Bin 6148 -> 6148 bytes js/engine.js | 7 +- js/level.js | 11 +-- js/player.js | 18 ++--- js/tech.js | 194 +++++++++++++++------------------------------------ style.css | 7 ++ todo.txt | 10 +++ 7 files changed, 88 insertions(+), 159 deletions(-) diff --git a/.DS_Store b/.DS_Store index 0a677dc120c88db5d0564c6a343a28f0dac20ab6..f9731759f1b9ffc0f218d1d2be43d7212759e30e 100644 GIT binary patch delta 22 dcmZoMXffEJ#mw};bg~Y!FO!(T=4$3n5dcr727&+p delta 22 dcmZoMXffEJ#mw~P!(<(1UnbFj&DG4EA^=*32WS8Q diff --git a/js/engine.js b/js/engine.js index a5c5275..ea2cdc9 100644 --- a/js/engine.js +++ b/js/engine.js @@ -187,8 +187,8 @@ function collisionChecks(event) { if (obj.classType === "body" && obj.speed > 6) { const v = Vector.magnitude(Vector.sub(mob[k].velocity, obj.velocity)); if (v > 9) { - let dmg = 0.075 * b.dmgScale * v * obj.mass * tech.throwChargeRate; - if (mob[k].isShielded) dmg *= 0.6 + let dmg = 0.075 * b.dmgScale * v * obj.mass * (tech.throwChargeRate) * (tech.isBlockHarm ? 2 : 1) * (tech.isMobBlockFling ? 2 : 1); + if (mob[k].isShielded) dmg *= 0.7 mob[k].damage(dmg, true); if (tech.isBlockPowerUps && !mob[k].alive && mob[k].isDropPowerUp && m.throwCycle > m.cycle) { let type = tech.isEnergyNoAmmo ? "heal" : "ammo" @@ -197,8 +197,7 @@ function collisionChecks(event) { } else if (Math.random() < 0.4 && !tech.isSuperDeterminism) { type = "research" } - powerUps.spawn(mob[k].position.x, mob[k].position.y, type); - // for (let i = 0, len = Math.ceil(2 * Math.random()); i < len; i++) {} + for (let i = 0; i < 2; i++) powerUps.spawn(mob[k].position.x, mob[k].position.y, type); } const stunTime = dmg / Math.sqrt(obj.mass) diff --git a/js/level.js b/js/level.js index 6837e25..831ab4e 100644 --- a/js/level.js +++ b/js/level.js @@ -29,6 +29,7 @@ const level = { level.intro(); //starting level // level.testing(); //not in rotation + // level.template(); //blank start new map development // level.final() //final boss level // level.gauntlet(); //before final boss level // level.testChamber() //less mobs, more puzzle @@ -114,16 +115,6 @@ const level = { for (let j = 0, len = 1 + 2 * Math.random(); j < len; j++) powerUps.spawn(level.exit.x + 100 * (Math.random() - 0.5), level.exit.y - 100 + 100 * (Math.random() - 0.5), "research", false) } for (let i = 0; i < tech.wimpExperiment; i++) spawn.WIMP() - // if (tech.isPerpetualReroll) powerUps.spawn(player.position.x + 60 * (Math.random() - 0.5), player.position.y + 60 * (Math.random() - 0.5), "research", false); - // if (tech.isPerpetualAmmo) { - // for (let i = 0; i < 3; i++) powerUps.spawn(player.position.x + 60 * (Math.random() - 0.5), player.position.y + 60 * (Math.random() - 0.5), "ammo", false); - // } - // if (tech.isPerpetualHeal) { - // for (let i = 0; i < 3; i++) powerUps.spawn(player.position.x + 60 * (Math.random() - 0.5), player.position.y + 60 * (Math.random() - 0.5), "heal", false); - // } - // if (tech.isPerpetualStun) { - // for (let i = 0; i < mob.length; i++) mobs.statusStun(mob[i], 780) - // } if (tech.isFlipFlopLevelReset && !tech.isFlipFlopOn) { tech.isFlipFlopOn = true m.eyeFillColor = m.fieldMeterColor diff --git a/js/player.js b/js/player.js index 94e6ba0..f27520b 100644 --- a/js/player.js +++ b/js/player.js @@ -1478,7 +1478,7 @@ const m = { }, fieldUpgrades: [{ name: "field emitter", - description: "use energy to block mobs,
grab power ups, and throw blocks
regen 6 energy per second", + description: "use energy to deflect mobs,
grab power ups, and throw blocks
regen 6 energy per second", effect: () => { m.hold = function() { if (m.isHolding) { @@ -1503,7 +1503,7 @@ const m = { }, { name: "standing wave harmonics", - description: "3 oscillating shields are permanently active
blocking drains energy with no cool down
reduce harm and blocking recoil by 25%", + description: "3 oscillating shields are permanently active
deflecting drains energy with no cool down
reduce harm and deflecting recoil by 25%", effect: () => { // m.fieldHarmReduction = 0.80; m.fieldBlockCD = 0; @@ -1549,7 +1549,7 @@ const m = { { name: "perfect diamagnetism", // description: "gain energy when blocking
no recoil when blocking", - description: "attract power ups from far away
blocking does not drain energy
blocking has 90% less recoil", + description: "attract power ups from far away
deflecting does not drain energy
deflecting has 90% less recoil", effect: () => { m.fieldShieldingScale = 0; m.fieldBlockCD = 4; @@ -1621,7 +1621,7 @@ const m = { }, { name: "nano-scale manufacturing", - description: "use energy to block mobs
excess energy used to build drones
double your default energy regeneration", + description: "excess energy used to build drones
use energy to deflect mobs
double your default energy regeneration", effect: () => { // m.fieldMeterColor = "#0c5" // m.eyeFillColor = m.fieldMeterColor @@ -1672,7 +1672,7 @@ const m = { }, { name: "negative mass field", - description: "use energy to nullify  gravity
reduce harm by 55%
blocks held by the field have a lower mass", + description: "use energy to nullify  gravity
reduce harm by 55%
blocks held by the field have a lower mass", fieldDrawRadius: 0, effect: () => { m.fieldFire = true; @@ -2222,7 +2222,7 @@ const m = { // }, { name: "pilot wave", - description: "use energy to push blocks with your mouse
field radius decreases out of line of sight
energy drain scales with block mass", + description: "use energy to push blocks with your mouse
field radius decreases out of line of sight
energy drain scales with mass", effect: () => { m.fieldPhase = 0; m.fieldPosition = { @@ -2404,7 +2404,7 @@ const m = { }, { name: "wormhole", - description: "use energy to tunnel through a wormhole
wormholes attract blocks and power ups
7% chance to duplicate spawned power ups", //
bullets may also traverse wormholes + description: "use energy to tunnel through a wormhole
wormholes attract blocks and power ups
7% chance to duplicate spawned power ups", //
bullets may also traverse wormholes effect: function() { m.duplicateChance = 0.07 powerUps.setDo(); //needed after adjusting duplication chance @@ -3016,8 +3016,8 @@ const m = { if (obj.classType === "body" && obj.speed > 6) { const v = Vector.magnitude(Vector.sub(mob[k].velocity, obj.velocity)); if (v > 9) { - let dmg = 0.05 * b.dmgScale * v * obj.mass * tech.throwChargeRate; - if (mob[k].isShielded) dmg *= 0.35 + let dmg = 0.075 * b.dmgScale * v * obj.mass * (tech.throwChargeRate) * (tech.isBlockHarm ? 2 : 1) * (tech.isMobBlockFling ? 2 : 1); + if (mob[k].isShielded) dmg *= 0.7 mob[k].damage(dmg, true); if (tech.isBlockPowerUps && !mob[k].alive && mob[k].isDropPowerUp && m.throwCycle > m.cycle) { let type = tech.isEnergyNoAmmo ? "heal" : "ammo" diff --git a/js/tech.js b/js/tech.js index 4deb46a..2272214 100644 --- a/js/tech.js +++ b/js/tech.js @@ -227,7 +227,7 @@ allowed() { return b.inventory.length > 1 && !tech.isEnergyHealth }, - requires: "at least 2 guns", + requires: "at least 2 guns, not mass-energy", effect() { tech.isEntanglement = true setTimeout(function() { @@ -403,23 +403,6 @@ tech.isAmmoFromHealth = false; } }, - // { - // name: "perpetual ammo", - // description: "find 3 ammo at the start of each level", - // maxCount: 1, - // count: 0, - // frequency: 2, - // allowed() { - // return !tech.isPerpetualReroll && !tech.isPerpetualHeal && !tech.isPerpetualReroll && !tech.isPerpetualStun && !tech.isEnergyNoAmmo - // }, - // requires: "only 1 perpetual effect, not exciton lattice", - // effect() { - // tech.isPerpetualAmmo = true - // }, - // remove() { - // tech.isPerpetualAmmo = false - // } - // }, { name: "desublimated ammunition", description: "use 50% less ammo when crouching", @@ -1177,7 +1160,7 @@ allowed() { return m.maxEnergy > 0.5 }, - requires: "maximum energy above 50%", + requires: "maximum energy above 50", effect() { tech.laserBotCount++; b.laserBot(); @@ -1466,7 +1449,7 @@ }, { name: "mass driver", - description: "increase block collision damage by 200%
charge throws more quickly for less energy", + description: "charge throws more quickly for less energy
increase block collision damage by 200%", maxCount: 1, count: 0, frequency: 2, @@ -1483,7 +1466,7 @@ }, { name: "flywheel", - description: "after a mob dies its body is spun and flung
in the general direction of a nearby mob", + description: "after a mob dies its block is flung at mobs
increase block collision damage by 100%", maxCount: 1, count: 0, frequency: 3, @@ -1501,7 +1484,7 @@ }, { name: "fermions", - description: "blocks thrown by you or pilot wave will
collide with intangible mobs, but not you", + description: "blocks thrown by you or pilot wave will
collide with intangible mobs, but not you", maxCount: 1, count: 0, frequency: 2, @@ -1518,7 +1501,7 @@ }, { name: "inflation", - description: "throwing a block expands it by 300%
increase throw charge rate by 200%", + description: "throwing a block expands it by 300%
increase throw charge rate by 200%", maxCount: 1, count: 0, frequency: 3, @@ -1526,7 +1509,7 @@ allowed() { return tech.throwChargeRate > 1 && m.fieldUpgrades[m.fieldMode].name !== "pilot wave" }, - requires: "mass driver, not ergodicity, pilot wave", + requires: "mass driver, not pilot wave", effect() { tech.isAddBlockMass = true }, @@ -1536,7 +1519,7 @@ }, { name: "restitution", - description: "if a block you threw kills a mob
spawn a heal, ammo, or research", + description: "if a block you threw kills a mob
spawn 2 heals, ammo, or research", maxCount: 1, count: 0, frequency: 3, @@ -1554,7 +1537,7 @@ }, { name: "inelastic collision", - description: "while you are holding a block
reduce harm by 85%", + description: "holding a block reduces harm by 85%
increase block collision damage by 100%", maxCount: 1, count: 0, frequency: 3, @@ -1862,7 +1845,7 @@ count: 0, frequency: 2, allowed() { - return simulation.fpsCapDefault > 45 && !tech.isRailTimeSlow + return simulation.fpsCapDefault > 45 }, requires: "FPS above 45", effect() { @@ -1879,7 +1862,7 @@ count: 0, frequency: 2, allowed() { - return tech.isStunField || tech.oneSuperBall || tech.isCloakStun || tech.orbitBotCount > 1 || tech.isPerpetualStun || tech.isExplosionStun + return tech.isStunField || tech.oneSuperBall || tech.isCloakStun || tech.orbitBotCount > 1 || tech.isExplosionStun }, requires: "a stun effect", effect() { @@ -1952,7 +1935,7 @@ allowed() { //&& (m.fieldUpgrades[m.fieldMode].name !== "nano-scale manufacturing" || m.maxEnergy > 1) return m.maxEnergy > 0.99 && m.fieldUpgrades[m.fieldMode].name !== "standing wave harmonics" && !tech.isEnergyHealth && !tech.isRewindGun }, - requires: "not standing wave, mass-energy, piezo, max energy reduction, CPT gun", + requires: "not standing wave, mass-energy, max energy reduction, CPT gun", effect() { tech.isRewindAvoidDeath = true; }, @@ -2149,7 +2132,7 @@ allowed() { return tech.isEnergyLoss && !tech.isRewindAvoidDeath }, - requires: "exothermic process, CPT", + requires: "exothermic process, not CPT", effect() { tech.isMaxEnergyTech = true; m.setMaxEnergy() @@ -2311,7 +2294,7 @@ allowed() { return m.health < 0.5 || build.isExperimentSelection }, - requires: "health below 60", + requires: "health below 50", effect() { tech.isLowHealthDmg = true; //used in mob.damage() }, @@ -2326,7 +2309,7 @@ count: 0, frequency: 2, allowed() { - return (m.harmReduction() < 1 || tech.healthDrain || tech.isLowHealthDmg || tech.isHealthRecovery || tech.isHealLowHealth || tech.largerHeals > 1 || tech.isPerpetualHeal) && !tech.isEnergyHealth + return (m.harmReduction() < 1 || tech.healthDrain || tech.isLowHealthDmg || tech.isHealthRecovery || tech.isHealLowHealth || tech.largerHeals > 1) && !tech.isEnergyHealth }, requires: "negative feedback or extra healing tech or harm reduction, not mass-energy", effect() { @@ -2458,7 +2441,7 @@ allowed() { return ((m.health / m.maxHealth) < 0.7 || build.isExperimentSelection) && !tech.isEnergyHealth && !tech.isNoHeals }, - requires: "not mass-energy equivalence, ergodicity", + requires: "under 70% health, not mass-energy equivalence, ergodicity", effect() { tech.largerHeals++; }, @@ -2468,7 +2451,7 @@ }, { name: "maintenance", - description: "double the frequency of finding healing tech
spawn 12 heals", + description: "double the frequency of finding healing tech
spawn 15 heals", maxCount: 1, count: 0, frequency: 1, @@ -2478,33 +2461,15 @@ allowed() { return (m.health / m.maxHealth) < 0.7 && !tech.isNoHeals }, - requires: "health > 70%, not ergodicity", + requires: "health < 70%, not ergodicity", effect() { - for (let i = 0; i < 12; i++) powerUps.spawn(m.pos.x + 60 * (Math.random() - 0.5), m.pos.y + 60 * (Math.random() - 0.5), "heal"); + for (let i = 0; i < 15; i++) powerUps.spawn(m.pos.x + 60 * (Math.random() - 0.5), m.pos.y + 60 * (Math.random() - 0.5), "heal"); for (let i = 0, len = tech.tech.length; i < len; i++) { if (tech.tech[i].isHealTech) tech.tech[i].frequency *= 2 } }, remove() {} }, - // { - // name: "perpetual heals", - // description: "find 3 heals at the start of each level", - // maxCount: 1, - // count: 0, - // frequency: 2, - // isHealTech: true, - // allowed() { - // return !tech.isPerpetualReroll && !tech.isPerpetualAmmo && !tech.isPerpetualStun - // }, - // requires: "only 1 perpetual effect", - // effect() { - // tech.isPerpetualHeal = true - // }, - // remove() { - // tech.isPerpetualHeal = false - // } - // }, { name: "anthropic principle", nameInfo: "", @@ -2558,9 +2523,9 @@ count: 0, frequency: 4, allowed() { - return !tech.isSwitchReality && !tech.isResearchReality && tech.isDeathAvoid + return !tech.isSwitchReality && !tech.isResearchReality && tech.isDeathAvoid && !tech.isCollisionRealitySwitch }, - requires: "anthropic principle, not many-worlds, Ψ(t) collapse", + requires: "anthropic principle, not many-worlds, Ψ(t) collapse, non-unitary", effect() { tech.isImmortal = true; // for (let i = 0; i < 4; i++) powerUps.spawn(m.pos.x + Math.random() * 10, m.pos.y + Math.random() * 10, "research", false); @@ -2673,7 +2638,7 @@ allowed() { return powerUps.research.count === 0 && !tech.isAnsatz }, - requires: "no research", + requires: "no research, not ansatz", effect() { tech.isRerollHaste = true; tech.researchHaste = 0.33; @@ -2694,7 +2659,7 @@ allowed() { return powerUps.research.count === 0 && !tech.isSuperDeterminism && !tech.isRerollHaste }, - requires: "not superdeterminism or Ψ(t) collapse, no research", + requires: "not superdeterminism or Ψ(t) collapse, no research, perturbation theory", effect: () => { tech.isAnsatz = true; }, @@ -2878,7 +2843,7 @@ allowed() { return tech.duplicationChance() < 1 && !tech.isDeterminism }, - requires: "below 100% duplication chance, below level 5, not determinism", + requires: "below 100% duplication chance, not determinism", effect() { // tech.cancelCount = 0 tech.isCancelDuplication = true @@ -2916,7 +2881,7 @@ allowed() { return tech.duplicationChance() > 0.15 }, - requires: "some duplication chance", + requires: "duplication chance > 15%", effect() { tech.isDupDamage = true; }, @@ -2971,7 +2936,7 @@ allowed() { return (tech.totalCount > 3) && !tech.isSuperDeterminism }, - requires: "at least 1 tech, a chance to duplicate power ups", + requires: "at least 4 tech, not super determinism", effect: () => { const have = [] //find which tech you have for (let i = 0; i < tech.tech.length; i++) { @@ -3003,7 +2968,7 @@ allowed() { return (tech.totalCount > 3) && !tech.isSuperDeterminism && tech.duplicationChance() > 0 }, - requires: "at least 1 tech, a chance to duplicate power ups", + requires: "at least 4 tech, a chance to duplicate power ups", effect: () => { const removeTotal = powerUps.removeRandomTech() for (let i = 0; i < removeTotal + 1; i++) powerUps.spawn(m.pos.x + 60 * (Math.random() - 0.5), m.pos.y + 60 * (Math.random() - 0.5), "tech"); @@ -3022,11 +2987,10 @@ allowed() { return !tech.isSuperDeterminism && tech.duplicationChance() > 0 && powerUps.research.count > 1 }, - requires: "at least 1 tech and 2 research, a chance to duplicate power ups", + requires: "at least 2 research, not super determinism", effect: () => { powerUps.research.changeRerolls(-2) - simulation.makeTextLog(`m.research -= 2 -
${powerUps.research.count}`) + simulation.makeTextLog(`m.research -= 2
${powerUps.research.count}`) const chanceStore = tech.duplicateChance tech.duplicateChance = (tech.isStimulatedEmission ? 0.2 : 0) + tech.cancelCount * 0.045 + m.duplicateChance + tech.duplicateChance * 2 //increase duplication chance to simulate doubling all 3 sources of duplication chance powerUps.spawn(m.pos.x, m.pos.y, "tech"); @@ -3143,7 +3107,7 @@ allowed() { return powerUps.tech.choiceLog.length > 10 && !tech.isDeterminism && powerUps.research.count > 1 }, - requires: "rejected an option in the last tech selection, at least 2 research", + requires: "rejected an option in the last tech selection, at least 2 research, not determinism", effect: () => { powerUps.research.changeRerolls(-2) let num = 3 @@ -3211,7 +3175,7 @@ allowed() { return tech.isDeterminism && !tech.isAnsatz && !tech.isGunSwitchField }, - requires: "determinism, not unified field theory", + requires: "determinism, not unified field theory, not ansatz", effect: () => { tech.isSuperDeterminism = true; //if you change the number spawned also change it in Born rule @@ -3504,7 +3468,7 @@ allowed() { return tech.haveGunCheck("nail gun") && tech.nailFireRate && !tech.isIceCrystals }, - requires: "nail gun and pneumatic actuator", + requires: "nail gun and pneumatic actuator not ice crystal nucleation", effect() { tech.nailInstantFireRate = true for (i = 0, len = b.guns.length; i < len; i++) { //find which gun @@ -3530,7 +3494,7 @@ allowed() { return (tech.isNailShot || tech.nailBotCount > 1 || tech.haveGunCheck("nail gun")) && !tech.isIceCrystals }, - requires: "nails", + requires: "nails, not ice crystal nucleation", effect() { tech.isNailCrit = true }, @@ -3566,7 +3530,7 @@ allowed() { return tech.isNailRadiation && !tech.isFastRadiation }, - requires: "irradiated nails", + requires: "irradiated nails, not 1/2s half-life", effect() { tech.isSlowRadiation = true; }, @@ -3584,7 +3548,7 @@ allowed() { return tech.isNailRadiation && !tech.isSlowRadiation }, - requires: "irradiated nails", + requires: "irradiated nails, not 4s half-life", effect() { tech.isFastRadiation = true; }, @@ -3823,7 +3787,7 @@ }, { name: "phase velocity", - description: "wave beam propagates faster through solids
up by 3000% in the map and 760% in blocks", + description: "wave beam propagates faster through solids
up by 3000% in the map and 760% in blocks", isGunTech: true, maxCount: 1, count: 0, @@ -3948,7 +3912,7 @@ allowed() { return tech.haveGunCheck("grenades") && !tech.fragments && !tech.isVacuumBomb }, - requires: "grenades, not fragmentation", + requires: "grenades, not fragmentation, vacuum bomb", effect() { tech.isNeutronBomb = true; b.setGrenadeMode() @@ -4131,7 +4095,7 @@ allowed() { return (tech.haveGunCheck("spores") || tech.sporesOnDeath > 0 || tech.isSporeField) && !tech.isEnergyHealth }, - requires: "spores", + requires: "spores, not mass-energy", effect() { tech.isMutualism = true }, @@ -4311,43 +4275,6 @@ tech.isAmmoFoamSize = false; } }, - - // { - // name: "foam size", - // description: "increase foam damage by 200%
foam dissipates 50% faster", - // maxCount: 1, - // count: 0, - // frequency: 2, - // allowed() { - // return tech.haveGunCheck("foam") || tech.foamBotCount > 2 - // }, - // requires: "foam", - // effect() { - // tech.isLargeFoam = true - // }, - // remove() { - // tech.isLargeFoam = false; - // } - // }, - // { - // name: "frame-dragging", - // description: "slow time while charging the rail gun
charging no longer drains energy", - // maxCount: 1, - // count: 0, - // frequency: 2, - // allowed() { - // return simulation.fpsCapDefault > 45 && tech.haveGunCheck("rail gun") && !tech.isSlowFPS && !tech.isCapacitor - // }, - // requires: "rail gun and FPS above 45", - // effect() { - // tech.isRailTimeSlow = true; - // }, - // remove() { - // tech.isRailTimeSlow = false; - // simulation.fpsCap = simulation.fpsCapDefault - // simulation.fpsInterval = 1000 / simulation.fpsCap; - // } - // }, { name: "half-wave rectifier", description: "charging the rail gun gives you energy
instead of draining it", @@ -4430,7 +4357,7 @@ allowed() { return (tech.haveGunCheck("laser") && !tech.isPulseLaser) || tech.laserBotCount > 1 }, - requires: "laser", + requires: "laser, not pulse", effect() { tech.isLaserPush = true; }, @@ -4449,7 +4376,7 @@ allowed() { return (tech.haveGunCheck("laser") || tech.isLaserMine || tech.laserBotCount > 1) && !tech.isWideLaser && !tech.isPulseLaser && !tech.historyLaser }, - requires: "laser, not wide beam", + requires: "laser, not wide beam, diffuse beam, pulse, or slow light", effect() { tech.laserReflections++; tech.laserDamage += 0.08; //base is 0.12 @@ -4471,7 +4398,7 @@ allowed() { return tech.haveGunCheck("laser") && !tech.isWideLaser && !tech.isPulseAim && !tech.historyLaser }, - requires: "laser, not specular reflection", + requires: "laser, not neocognitron, diffuse beam, or slow light", effect() { tech.beamSplitter++ for (i = 0, len = b.guns.length; i < len; i++) { //find which gun @@ -4497,7 +4424,7 @@ allowed() { return tech.haveGunCheck("laser") && tech.laserReflections < 3 && !tech.beamSplitter && !tech.isPulseLaser && !tech.historyLaser }, - requires: "laser, not specular reflection, diffraction grating, slow light", + requires: "laser, not specular reflection, diffraction grating, slow light, pulse", effect() { if (tech.wideLaser === 0) tech.wideLaser = 3 tech.isWideLaser = true; @@ -4525,7 +4452,7 @@ allowed() { return tech.haveGunCheck("laser") && tech.isWideLaser }, - requires: "laser, not specular reflection, not diffraction grating", + requires: "laser, diffuse beam", effect() { tech.wideLaser += 2 for (i = 0, len = b.guns.length; i < len; i++) { //find which gun @@ -4607,7 +4534,7 @@ allowed() { return tech.isPulseLaser && !tech.beamSplitter }, - requires: "pulse", + requires: "pulse, not diffraction grating", effect() { tech.isPulseAim = true; }, @@ -4621,7 +4548,7 @@ //************************************************** { name: "frequency resonance", - description: "standing wave harmonics shield is retuned
increase size and blocking efficiency by 50%", + description: "standing wave harmonics shield is retuned
increase size and deflecting efficiency by 50%", isFieldTech: true, maxCount: 9, count: 0, @@ -4643,7 +4570,7 @@ }, { name: "bremsstrahlung", - description: "blocking does damage to mobs", + description: "deflecting does damage to mobs", isFieldTech: true, maxCount: 9, count: 0, @@ -4661,7 +4588,7 @@ }, { name: "triple point", - description: "the pressure from blocking is used
to condense ice IX crystals", + description: "the pressure from deflecting is used
to condense ice IX crystals", isFieldTech: true, maxCount: 9, count: 0, @@ -4679,7 +4606,7 @@ }, { name: "flux pinning", - description: "blocking with your field
stuns mobs for +2 second", + description: "deflecting with your field
stuns mobs for +2 second", isFieldTech: true, maxCount: 9, count: 0, @@ -4748,7 +4675,7 @@ isNonRefundable: true, // isExperimentHide: true, allowed() { - return m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isNailBotUpgrade && tech.isFoamBotUpgrade && tech.isBoomBotUpgrade && tech.isLaserBotUpgrade && tech.isOrbitBotUpgrade) + return m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" }, requires: "nano-scale manufacturing", effect: () => { @@ -4840,7 +4767,7 @@ allowed() { return m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isMissileField || tech.isIceField || tech.isFastDrones || tech.isDroneGrab) }, - requires: "nano-scale manufacturing", + requires: "nano-scale manufacturing, no other manufacturing", effect() { tech.isSporeField = true; }, @@ -4858,7 +4785,7 @@ allowed() { return m.maxEnergy > 0.5 && m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isSporeField || tech.isIceField || tech.isFastDrones || tech.isDroneGrab) }, - requires: "nano-scale manufacturing", + requires: "nano-scale manufacturing, no other manufacturing", effect() { tech.isMissileField = true; }, @@ -4876,7 +4803,7 @@ allowed() { return m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" && !(tech.isSporeField || tech.isMissileField || tech.isFastDrones || tech.isDroneGrab) }, - requires: "nano-scale manufacturing", + requires: "nano-scale manufacturing, no other manufacturing", effect() { tech.isIceField = true; }, @@ -5069,7 +4996,7 @@ allowed() { return (m.fieldUpgrades[m.fieldMode].name === "time dilation field") && tech.energyRegen !== 0; //|| m.fieldUpgrades[m.fieldMode].name === "pilot wave" }, - requires: "time dilation field", + requires: "time dilation field, not ground state", effect: () => { tech.energyRegen = 0.004; m.fieldRegen = tech.energyRegen; @@ -5081,7 +5008,7 @@ }, { name: "boson composite", - description: "intangible to blocks and mobs while cloaked
passing through mobs drains your energy", + description: "intangible to blocks and mobs while cloaked
passing through mobs drains your energy", isFieldTech: true, maxCount: 1, count: 0, @@ -5137,7 +5064,7 @@ }, { name: "potential well", - description: "the force that pilot wave generates
to trap blocks is greatly increased", + description: "the force that pilot wave generates
to trap blocks is greatly increased", isFieldTech: true, maxCount: 1, count: 0, @@ -5173,7 +5100,7 @@ }, { name: "Penrose process", - description: "after a block falls into a wormhole
you gain 63 energy", + description: "after a block falls into a wormhole
you gain 63 energy", isFieldTech: true, maxCount: 1, count: 0, @@ -5191,7 +5118,7 @@ }, { name: "transdimensional spores", - description: "when blocks fall into a wormhole
higher dimension spores are summoned", + description: "when blocks fall into a wormhole
higher dimension spores are summoned", isFieldTech: true, maxCount: 1, count: 0, @@ -5939,7 +5866,7 @@ }, { name: "energy to mass conversion", - description: "convert your energy into blocks", + description: "convert your energy into blocks", maxCount: 9, count: 0, frequency: 0, @@ -6669,7 +6596,6 @@ researchHaste: null, isMineDrop: null, isRerollBots: null, - isRailTimeSlow: null, isNailBotUpgrade: null, isFoamBotUpgrade: null, isLaserBotUpgrade: null, @@ -6724,10 +6650,6 @@ isSpeedHarm: null, isSpeedDamage: null, isTimeSkip: null, - isPerpetualReroll: null, - isPerpetualAmmo: null, - isPerpetualHeal: null, - isPerpetualStun: null, isCancelDuplication: null, cancelCount: null, isCancelRerolls: null, diff --git a/style.css b/style.css index 76d4158..e860d63 100644 --- a/style.css +++ b/style.css @@ -620,6 +620,13 @@ summary { font-weight: 100; } +.color-block { + background-color: rgba(0, 0, 0, 0.04); + border: 1px solid rgba(0, 0, 0, 0.5); + padding: 0.5px; + font-weight: 100; +} + .color-j { letter-spacing: 1px; /* font-weight: 100; */ diff --git a/todo.txt b/todo.txt index 8b0a66f..5d42399 100644 --- a/todo.txt +++ b/todo.txt @@ -1,6 +1,12 @@ ******************************************************** NEXT PATCH ******************************************************** +"block" is now styled text +blocking with a shield is now called deflecting +added 100% block damage buffs to flywheel and inelastic collision +restitution now spawns 2 power ups (up from 1) + +about 75 edits to tech requirement text ******************************************************** BUGS ******************************************************** @@ -46,6 +52,10 @@ is there a way to check if the player is stuck inside the map or block ******************************************************** TODO ******************************************************** +full block build works for every level except final boss + +block custom css style? + tech: pilot wave is projected from the player, not the mouse maybe also make field move slower? (adjust smoothing function) less energy drain?