From 0d70e3918d28b904891ad0937fa22e92f1e76d91 Mon Sep 17 00:00:00 2001 From: landgreen Date: Sat, 26 Dec 2020 08:54:16 -0800 Subject: [PATCH] bug fixes and mod -> tech renaming --- js/engine.js | 2 +- js/index.js | 35 +++---- js/level.js | 8 +- js/mob.js | 2 +- js/player.js | 26 ++--- js/powerup.js | 16 +-- js/simulation.js | 8 +- js/spawn.js | 2 +- js/tech.js | 255 ++++++++++++++++++++++------------------------- todo.txt | 104 +++++++++---------- 10 files changed, 217 insertions(+), 241 deletions(-) diff --git a/js/engine.js b/js/engine.js index b85e5fc..97b8e37 100644 --- a/js/engine.js +++ b/js/engine.js @@ -109,7 +109,7 @@ function collisionChecks(event) { } mech.damage(dmg); if (tech.isPiezo) mech.energy += 2; - if (tech.isBayesian) powerUps.ejectMod() + if (tech.isBayesian) powerUps.ejectTech() if (mob[k].onHit) mob[k].onHit(k); mech.immuneCycle = mech.cycle + tech.collisionImmuneCycles; //player is immune to collision damage for 30 cycles //extra kick between player and mob //this section would be better with forces but they don't work... diff --git a/js/index.js b/js/index.js index 2b3a375..d9595a3 100644 --- a/js/index.js +++ b/js/index.js @@ -155,7 +155,7 @@ const build = { for (const property in set) { set[property] = set[property].replace(/%20/g, " ") if (property.substring(0, 3) === "gun") b.giveGuns(set[property]) - if (property.substring(0, 3) === "tech") tech.giveMod(set[property]) + if (property.substring(0, 3) === "tech") tech.giveTech(set[property]) if (property === "field") mech.setField(set[property]) if (property === "difficulty") { simulation.difficultyMode = Number(set[property]) @@ -181,7 +181,7 @@ const build = { if (!simulation.isChoosing) text += `
PAUSED               press P to resume
` text += `
- damage increase: ${((tech.damageFromMods()-1)*100).toFixed(0)}% + damage increase: ${((tech.damageFromTech()-1)*100).toFixed(0)}%
harm reduction: ${((1-mech.harmReduction())*100).toFixed(0)}%
fire delay decrease: ${((1-b.fireCD)*100).toFixed(0)}%
duplication chance: ${(Math.min(1,tech.duplicationChance())*100).toFixed(0)}% @@ -212,19 +212,19 @@ const build = { el.innerHTML = text text = ""; text += `
  ${mech.fieldUpgrades[mech.fieldMode].name}
${mech.fieldUpgrades[mech.fieldMode].description}
` - let countMods = 0 + let countTech = 0 for (let i = 0, len = tech.tech.length; i < len; i++) { if (tech.tech[i].count > 0) { const isCount = tech.tech[i].count > 1 ? `(${tech.tech[i].count}x)` : ""; - if (tech.tech[i].isFieldMod) { + if (tech.tech[i].isFieldTech) { text += `
        ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}
` - } else if (tech.tech[i].isGunMod) { + } else if (tech.tech[i].isGunTech) { text += `
@@ -232,20 +232,15 @@ const build = {
        ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}
` } else { - text += `
  ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}
` + text += `
  ${tech.tech[i].name} ${isCount}
${tech.tech[i].description}
` } - // if (tech.tech[i].count === 1) { - // text += `
  ${tech.tech[i].name}
${tech.tech[i].description}
` - // } else { - // text += `
  ${tech.tech[i].name} (${tech.tech[i].count}x)
${tech.tech[i].description}
` - // } - countMods++ + countTech++ } } el = document.getElementById("pause-grid-right") el.style.display = "grid" el.innerHTML = text - if (countMods > 5 || b.inventory.length > 6) { + if (countTech > 5 || b.inventory.length > 6) { document.body.style.overflowY = "scroll"; document.body.style.overflowX = "hidden"; } @@ -287,9 +282,9 @@ const build = { } else if (type === "tech") { //remove tech if you have too many if (tech.tech[index].count < tech.tech[index].maxCount) { if (!who.classList.contains("build-tech-selected")) who.classList.add("build-tech-selected"); - tech.giveMod(index) + tech.giveTech(index) } else { - tech.removeMod(index); + tech.removeTech(index); who.classList.remove("build-tech-selected"); } } @@ -299,7 +294,7 @@ const build = { if (!tech.tech[i].isCustomHide) { if (tech.tech[i].allowed() || isAllowed || tech.tech[i].count > 0) { const isCount = tech.tech[i].count > 1 ? `(${tech.tech[i].count}x)` : ""; - if (tech.tech[i].isFieldMod) { + if (tech.tech[i].isFieldTech) { techID.innerHTML = `
@@ -310,7 +305,7 @@ const build = { //
//
// border: #fff solid 0px; - } else if (tech.tech[i].isGunMod) { + } else if (tech.tech[i].isGunTech) { techID.innerHTML = `
@@ -331,7 +326,7 @@ const build = { techID.classList.add("build-grid-disabled"); techID.onclick = null } - if (tech.tech[i].count > 0) tech.removeMod(i) + if (tech.tech[i].count > 0) tech.removeTech(i) if (techID.classList.contains("build-tech-selected")) techID.classList.remove("build-tech-selected"); } } @@ -412,7 +407,7 @@ const build = { b.activeGun = null; simulation.makeGunHUD(); - tech.setupAllMods(); + tech.setupAllTech(); build.populateGrid(); document.getElementById("field-0").classList.add("build-field-selected"); document.getElementById("build-grid").style.display = "grid" @@ -805,7 +800,7 @@ window.addEventListener("keydown", function(event) { mech.energy = mech.maxEnergy; break case "y": - tech.giveMod() + tech.giveTech() break case "r": mech.resetHistory(); diff --git a/js/level.js b/js/level.js index 37d0161..1107c60 100644 --- a/js/level.js +++ b/js/level.js @@ -18,9 +18,9 @@ const level = { // simulation.setZoom(); // mech.setField("plasma torch") // b.giveGuns("wave beam") - // tech.giveMod("CPT reversal") - // tech.giveMod("CPT gun") - // for (let i = 0; i < 15; i++) tech.giveMod("plasma jet") + // tech.giveTech("CPT reversal") + // tech.giveTech("CPT gun") + // for (let i = 0; i < 15; i++) tech.giveTech("plasma jet") level.intro(); //starting level // level.testing(); //not in rotation @@ -3834,7 +3834,7 @@ const level = { if (tech.tech[i].isLost) tech.tech[i].isLost = false; } tech.isDeathAvoidedThisLevel = false; - simulation.updateModHUD(); + simulation.updateTechHUD(); simulation.clearNow = true; //triggers in simulation.clearMap to remove all physics bodies and setup for new map }, playerExitCheck() { diff --git a/js/mob.js b/js/mob.js index 7654094..cb7def8 100644 --- a/js/mob.js +++ b/js/mob.js @@ -999,7 +999,7 @@ const mobs = { }, damage(dmg, isBypassShield = false) { if ((!this.isShielded || isBypassShield) && this.alive) { - dmg *= tech.damageFromMods() + dmg *= tech.damageFromTech() //mobs specific damage changes if (tech.isFarAwayDmg) dmg *= 1 + Math.sqrt(Math.max(500, Math.min(3000, this.distanceToPlayer())) - 500) * 0.0067 //up to 50% dmg at max range of 3500 if (this.shield) dmg *= 0.075 diff --git a/js/player.js b/js/player.js index 08d5fbc..72c5256 100644 --- a/js/player.js +++ b/js/player.js @@ -327,17 +327,17 @@ const mech = { if (tech.isImmortal) { //if player has the immortality buff, spawn on the same level with randomized damage simulation.isTextLogOpen = false; //count tech - let totalMods = 0; + let totalTech = 0; for (let i = 0; i < tech.tech.length; i++) { - if (!tech.tech[i].isNonRefundable) totalMods += tech.tech[i].count + if (!tech.tech[i].isNonRefundable) totalTech += tech.tech[i].count } - if (tech.isDeterminism) totalMods -= 3 //remove the bonus tech - if (tech.isSuperDeterminism) totalMods -= 2 //remove the bonus tech - totalMods = totalMods * 1.15 + 1 // a few extra to make it stronger + if (tech.isDeterminism) totalTech -= 3 //remove the bonus tech + if (tech.isSuperDeterminism) totalTech -= 2 //remove the bonus tech + totalTech = totalTech * 1.15 + 1 // a few extra to make it stronger const totalGuns = b.inventory.length //count guns - function randomizeMods() { - for (let i = 0; i < totalMods; i++) { + function randomizeTech() { + for (let i = 0; i < totalTech; i++) { //find what tech I don't have let options = []; for (let i = 0, len = tech.tech.length; i < len; i++) { @@ -351,12 +351,12 @@ const mech = { //add a new tech if (options.length > 0) { const choose = Math.floor(Math.random() * options.length) - let newMod = options[choose] - tech.giveMod(newMod) + let newTech = options[choose] + tech.giveTech(newTech) options.splice(choose, 1); } } - simulation.updateModHUD(); + simulation.updateTechHUD(); } function randomizeField() { @@ -398,13 +398,13 @@ const mech = { spawn.setSpawnList(); //new mob types simulation.clearNow = true; //triggers a map reset - tech.setupAllMods(); //remove all tech + tech.setupAllTech(); //remove all tech for (let i = 0; i < bullet.length; ++i) Matter.World.remove(engine.world, bullet[i]); bullet = []; //remove all bullets randomizeHealth() randomizeField() randomizeGuns() - randomizeMods() + randomizeTech() } randomizeEverything() @@ -899,7 +899,7 @@ const mech = { } }, setMaxEnergy() { - mech.maxEnergy = (tech.isMaxEnergyMod ? 0.5 : 1) + tech.bonusEnergy + tech.healMaxEnergyBonus + mech.maxEnergy = (tech.isMaxEnergyTech ? 0.5 : 1) + tech.bonusEnergy + tech.healMaxEnergyBonus }, fieldMeterColor: "#0cf", drawFieldMeter(bgColor = "rgba(0, 0, 0, 0.4)", range = 60) { diff --git a/js/powerup.js b/js/powerup.js index f9d049b..d363bb0 100644 --- a/js/powerup.js +++ b/js/powerup.js @@ -15,8 +15,8 @@ const powerUps = { mech.setField(index) simulation.makeTextLog(`mech.setField("${mech.fieldUpgrades[mech.fieldMode].name}")`); } else if (type === "tech") { - tech.giveMod(index) - simulation.makeTextLog(`tech.giveMod("${tech.tech[index].name}")`); + tech.giveTech(index) + simulation.makeTextLog(`tech.giveTech("${tech.tech[index].name}")`); } powerUps.endDraft(type); }, @@ -313,14 +313,14 @@ const powerUps = { const choose = options[Math.floor(Math.random() * options.length)] const isCount = tech.tech[choose].count > 0 ? `(${tech.tech[choose].count+1}x)` : ""; - if (tech.tech[choose].isFieldMod) { + if (tech.tech[choose].isFieldTech) { text += `
        ${tech.tech[choose].name} ${isCount}
${tech.tech[choose].description}
` - } else if (tech.tech[choose].isGunMod) { + } else if (tech.tech[choose].isGunTech) { text += `
@@ -373,7 +373,7 @@ const powerUps = { } else { if (tech.isBanish) { for (let i = 0, len = tech.tech.length; i < len; i++) { - if (tech.tech[i].name === "erase") powerUps.ejectMod(i) + if (tech.tech[i].name === "erase") powerUps.ejectTech(i) } simulation.makeTextLog(`No tech left
erased tech have been recovered`) powerUps.spawn(mech.pos.x, mech.pos.y, "tech"); @@ -589,7 +589,7 @@ const powerUps = { powerUps.spawnRandomPowerUp(x, y); } }, - ejectMod(choose = 'random') { + ejectTech(choose = 'random') { //find which tech you have if (choose === 'random') { const have = [] @@ -615,7 +615,7 @@ const powerUps = { tech.tech[choose].remove(); tech.tech[choose].count = 0; tech.tech[choose].isLost = true; - simulation.updateModHUD(); + simulation.updateTechHUD(); mech.fieldCDcycle = mech.cycle + 30; //disable field so you can't pick up the ejected tech } } else { @@ -630,7 +630,7 @@ const powerUps = { tech.tech[choose].remove(); tech.tech[choose].count = 0; tech.tech[choose].isLost = true; - simulation.updateModHUD(); + simulation.updateTechHUD(); mech.fieldCDcycle = mech.cycle + 30; //disable field so you can't pick up the ejected tech } }, diff --git a/js/simulation.js b/js/simulation.js index 8493084..5be4742 100644 --- a/js/simulation.js +++ b/js/simulation.js @@ -306,7 +306,7 @@ const simulation = { } simulation.boldActiveGunHUD(); }, - updateModHUD() { + updateTechHUD() { let text = "" for (let i = 0, len = tech.tech.length; i < len; i++) { //add tech if (tech.tech[i].isLost) { @@ -515,7 +515,7 @@ const simulation = { b.removeAllGuns(); simulation.isNoPowerUps = false; - tech.setupAllMods(); //sets tech to default values + tech.setupAllTech(); //sets tech to default values tech.laserBotCount = 0; tech.orbitBotCount = 0; tech.nailBotCount = 0; @@ -524,7 +524,7 @@ const simulation = { tech.plasmaBotCount = 0; b.setFireCD(); - simulation.updateModHUD(); + simulation.updateTechHUD(); powerUps.totalPowerUps = 0; powerUps.reroll.rerolls = 0; mech.setFillColors(); @@ -650,7 +650,7 @@ const simulation = { if (tech.isEndLevelPowerUp) { for (let i = 0; i < powerUp.length; i++) { if (powerUp[i].name === "tech") { - tech.giveMod() + tech.giveTech() } else if (powerUp[i].name === "gun") { if (!tech.isOneGun) b.giveGuns("random") } else if (powerUp[i].name === "field") { diff --git a/js/spawn.js b/js/spawn.js index a6f3c32..46ff47f 100644 --- a/js/spawn.js +++ b/js/spawn.js @@ -564,7 +564,7 @@ const spawn = { me.foundPlayer(); } me.onHit = function() { //run this function on hitting player - powerUps.ejectMod() + powerUps.ejectTech() powerUps.spawn(mech.pos.x, mech.pos.y, "heal"); powerUps.spawn(mech.pos.x, mech.pos.y, "heal"); }; diff --git a/js/tech.js b/js/tech.js index b1ac5d1..005dc14 100644 --- a/js/tech.js +++ b/js/tech.js @@ -1,6 +1,6 @@ const tech = { totalCount: null, - setupAllMods() { + setupAllTech() { for (let i = 0, len = tech.tech.length; i < len; i++) { tech.tech[i].remove(); tech.tech[i].isLost = false @@ -14,14 +14,14 @@ const tech = { // tech.plasmaBotCount = 0; tech.armorFromPowerUps = 0; tech.totalCount = 0; - simulation.updateModHUD(); + simulation.updateTechHUD(); }, - removeMod(index) { + removeTech(index) { tech.tech[index].remove(); tech.tech[index].count = 0; - simulation.updateModHUD(); + simulation.updateTechHUD(); }, - giveMod(index = 'random') { + giveTech(index = 'random') { if (index === 'random') { let options = []; for (let i = 0; i < tech.tech.length; i++) { @@ -30,8 +30,8 @@ const tech = { } // give a random tech from the tech I don't have if (options.length > 0) { - let newMod = options[Math.floor(Math.random() * options.length)] - tech.giveMod(newMod) + let newTech = options[Math.floor(Math.random() * options.length)] + tech.giveTech(newTech) } } else { if (isNaN(index)) { //find index by name @@ -49,10 +49,10 @@ const tech = { tech.tech[index].effect(); //give specific tech tech.tech[index].count++ tech.totalCount++ //used in power up randomization - simulation.updateModHUD(); + simulation.updateTechHUD(); } }, - setModToNonRefundable(name) { + setTechoNonRefundable(name) { for (let i = 0; i < tech.tech.length; i++) { if (tech.tech.name === name) { tech.tech[i].isNonRefundable = true; @@ -60,25 +60,6 @@ const tech = { } } }, - // giveBasicMod(index = 'random') { - // // if (isNaN(index)) { //find index by name - // // let found = false; - // // for (let i = 0; i < tech.tech.length; i++) { - // // if (index === tech.tech[i].name) { - // // index = i; - // // found = true; - // // break; - // // } - // // } - // // if (!found) return //if name not found don't give any tech - // // } - - // tech.basicMods[index].effect(); //give specific tech - // tech.tech[index].count++ - // tech.totalCount++ //used in power up randomization - // simulation.updateModHUD(); - - // }, haveGunCheck(name) { if ( !build.isCustomSelection && @@ -94,11 +75,11 @@ const tech = { } return false }, - damageFromMods() { + damageFromTech() { let dmg = mech.fieldDamage // if (tech.aimDamage>1) if (tech.isLowEnergyDamage) dmg *= 1 + Math.max(0, 1 - mech.energy) * 0.5 - if (tech.isMaxEnergyMod) dmg *= 1.4 + if (tech.isMaxEnergyTech) dmg *= 1.4 if (tech.isEnergyNoAmmo) dmg *= 1.5 if (tech.isDamageForGuns) dmg *= 1 + 0.07 * b.inventory.length if (tech.isLowHealthDmg) dmg *= 1 + 0.6 * Math.max(0, 1 - mech.health) @@ -179,11 +160,11 @@ const tech = { }, requires: "exothermic process, not max energy increase, CPT, missile or spore nano-scale", effect() { - tech.isMaxEnergyMod = true; + tech.isMaxEnergyTech = true; mech.setMaxEnergy() }, remove() { - tech.isMaxEnergyMod = false; + tech.isMaxEnergyTech = false; mech.setMaxEnergy() } }, @@ -1215,7 +1196,7 @@ const tech = { maxCount: 9, count: 0, allowed() { - return tech.damageFromMods() > 1 + return tech.damageFromTech() > 1 }, requires: "some increased damage", effect() { @@ -1263,7 +1244,7 @@ const tech = { maxCount: 9, count: 0, allowed() { - return !tech.isEnergyHealth && tech.damageFromMods() > 1 + return !tech.isEnergyHealth && tech.damageFromTech() > 1 }, requires: "some increased damage, not mass-energy equivalence", effect() { @@ -1307,7 +1288,7 @@ const tech = { }, remove() { tech.isArmorFromPowerUps = false; - // tech.armorFromPowerUps = 0; //this is now reset in tech.setupAllMods(); + // tech.armorFromPowerUps = 0; //this is now reset in tech.setupAllTech(); mech.setMaxHealth(); } }, @@ -1499,7 +1480,7 @@ const tech = { tech.tech[choose].count = 0; tech.tech[choose].remove(); // remove a random tech form the list of tech you have tech.tech[choose].isLost = true - simulation.updateModHUD(); + simulation.updateTechHUD(); }, remove() {} }, @@ -1528,7 +1509,7 @@ const tech = { tech.tech[choose].count = 0; tech.tech[choose].remove(); // remove a random tech form the list of tech you have tech.tech[choose].isLost = true - simulation.updateModHUD(); + simulation.updateTechHUD(); }, remove() {} }, @@ -1847,7 +1828,7 @@ const tech = { if (tech.isDeterminism) count -= 3 //remove the bonus tech if (tech.isSuperDeterminism) count -= 2 //remove the bonus tech - tech.setupAllMods(); // remove all tech + tech.setupAllTech(); // remove all tech for (let i = 0; i < count; i++) { // spawn new tech power ups powerUps.spawn(mech.pos.x, mech.pos.y, "tech"); } @@ -1926,7 +1907,7 @@ const tech = { { name: "CPT gun", description: "adds the CPT gun to your inventory
it rewinds your health, velocity, and position", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -1968,7 +1949,7 @@ const tech = { { name: "incendiary ammunition", description: "some bullets are loaded with explosives
nail gun, shotgun, super balls, drones", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -1985,7 +1966,7 @@ const tech = { { name: "fragmentation", description: "some detonations and collisions eject nails
blocks, rail gun, grenades, missiles, shotgun slugs", - isGunMod: true, + isGunTech: true, maxCount: 9, count: 0, allowed() { @@ -2002,7 +1983,7 @@ const tech = { { name: "Lorentzian topology", description: "some bullets last 30% longer
drones, spores, missiles, foam, wave, ice IX, neutron", - isGunMod: true, + isGunTech: true, maxCount: 3, count: 0, allowed() { @@ -2019,7 +2000,7 @@ const tech = { { name: "microstates", description: "increase damage by 4%
for every 10 active bullets", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2036,7 +2017,7 @@ const tech = { { name: "ice crystal nucleation", description: "the nail gun uses energy to condense
unlimited freezing ice shards", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2072,7 +2053,7 @@ const tech = { { name: "critical bifurcation", description: "nails do 400% more damage
when they strike near the center of a mob", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2089,7 +2070,7 @@ const tech = { { name: "pneumatic actuator", description: "nail gun takes 45% less time to ramp up
to it's shortest delay after firing", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2106,7 +2087,7 @@ const tech = { { name: "powder-actuated", description: "nail gun takes no time to ramp up
nails have a 30% faster muzzle speed", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2123,7 +2104,7 @@ const tech = { { name: "shotgun spin-statistics", description: "immune to harm while firing the shotgun
ammo costs are doubled", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2162,7 +2143,7 @@ const tech = { { name: "nailshot", description: "the shotgun fires a burst of nails", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2179,7 +2160,7 @@ const tech = { { name: "shotgun slug", description: "the shotgun fires 1 large bullet", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2196,7 +2177,7 @@ const tech = { { name: "Newton's 3rd law", description: "the shotgun fire delay is 66% faster
recoil is greatly increased", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2213,7 +2194,7 @@ const tech = { { name: "super duper", description: "fire 1 additional super ball", - isGunMod: true, + isGunTech: true, maxCount: 9, count: 0, allowed() { @@ -2230,7 +2211,7 @@ const tech = { { name: "super ball", description: "fire just 1 large super ball
that stuns mobs for 3 second", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2247,7 +2228,7 @@ const tech = { { name: "super sized", description: `your super balls are 20% larger
increases mass and physical damage`, - isGunMod: true, + isGunTech: true, maxCount: 9, count: 0, allowed() { @@ -2264,7 +2245,7 @@ const tech = { { name: "flechettes cartridges", description: "flechettes release three needles in each shot
ammo costs are tripled", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2311,7 +2292,7 @@ const tech = { { name: "6s half-life", description: "flechette needles made of plutonium-238
increase damage by 100% over 6 seconds", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2328,7 +2309,7 @@ const tech = { { name: "1/2s half-life", description: "flechette needles made of lithium-8
flechette damage occurs after 1/2 a second", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2345,7 +2326,7 @@ const tech = { { name: "supercritical fission", description: "flechettes can explode
if they strike mobs near their center", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2362,7 +2343,7 @@ const tech = { { name: "radioactive contamination", description: "after a mob or shield dies,
leftover radiation spreads to a nearby mob", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2379,7 +2360,7 @@ const tech = { { name: "piercing needles", description: "needles penetrate mobs and blocks
potentially hitting multiple targets", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2396,7 +2377,7 @@ const tech = { { name: "wave packet", description: "wave beam emits two oscillating particles
decrease wave damage by 20%", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2413,7 +2394,7 @@ const tech = { { name: "phase velocity", description: "the wave beam propagates faster in solids", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2432,7 +2413,7 @@ const tech = { { name: "bound state", description: "wave beam bullets last 5x longer
bullets are bound to a region around player", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2449,7 +2430,7 @@ const tech = { { name: "recursion", description: "after missiles explode they have a
20% chance to launch a larger missile", - isGunMod: true, + isGunTech: true, maxCount: 6, count: 0, allowed() { @@ -2466,7 +2447,7 @@ const tech = { { name: "MIRV", description: "launch 3 small missiles instead of 1
1.5x increase in delay after firing", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2483,7 +2464,7 @@ const tech = { { name: "rocket-propelled grenade", description: "grenades rapidly accelerate forward
map collisions trigger an explosion", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2502,7 +2483,7 @@ const tech = { { name: "vacuum bomb", description: "grenades fire slower, explode bigger
and, suck everything towards them", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2521,7 +2502,7 @@ const tech = { { name: "neutron bomb", description: "grenades are irradiated with Cf-252
does damage, harm, and drains energy", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2540,7 +2521,7 @@ const tech = { { name: "water shielding", description: "increase neutron bomb's range by 20%
player is immune to its harmful effects", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2557,7 +2538,7 @@ const tech = { { name: "vacuum permittivity", description: "increase neutron bomb's range by 20%
objects in range of the bomb are slowed", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2574,7 +2555,7 @@ const tech = { { name: "mine reclamation", description: "retrieve ammo from all undetonated mines
and 20% of mines after detonation", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2591,7 +2572,7 @@ const tech = { { name: "sentry", description: "mines target mobs with nails over time
mines last about 12 seconds", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2608,7 +2589,7 @@ const tech = { { name: "irradiated nails", description: "nails are made with a cobalt-60 alloy
85% radioactive damage over 2 seconds", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2625,7 +2606,7 @@ const tech = { { name: "railroad ties", description: "nails are 40% larger
increases physical damage by about 20%", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2642,7 +2623,7 @@ const tech = { { name: "mycelial fragmentation", description: "sporangium release an extra spore
once a second during their growth phase", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2659,7 +2640,7 @@ const tech = { { name: "tinsellated flagella", description: "sporangium release 2 more spores
spores accelerate 50% faster", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2677,7 +2658,7 @@ const tech = { name: "cryodesiccation", description: "sporangium release 2 more spores
spores freeze mobs for 1 second", //
spores do 1/3 damage - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2694,7 +2675,7 @@ const tech = { { name: "diplochory", description: "spores use the player for dispersal
until they locate a viable host", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2711,7 +2692,7 @@ const tech = { { name: "mutualism", description: "increase spore damage by 100%
spores borrow 0.5 health until they die", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2728,7 +2709,7 @@ const tech = { { name: "brushless motor", description: "drones accelerate 50% faster", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2745,7 +2726,7 @@ const tech = { { name: "harvester", description: "after a drone picks up a power up,
it's larger, faster, and very durable", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2762,7 +2743,7 @@ const tech = { { name: "superfluidity", description: "freeze effects apply to mobs near it's target", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2779,7 +2760,7 @@ const tech = { { name: "heavy water", description: "ice IX is synthesized with an extra neutron
does radioactive damage over 5 seconds", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2796,7 +2777,7 @@ const tech = { { name: "thermoelectric effect", description: "killing mobs with ice IX gives 4 health
and 100 energy", - isGunMod: true, + isGunTech: true, maxCount: 9, count: 0, allowed() { @@ -2813,7 +2794,7 @@ const tech = { { name: "necrophoresis", description: "foam bullets grow and split into 3 copies
when the mob they are stuck to dies", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2830,7 +2811,7 @@ const tech = { { name: "colloidal foam", description: "increase foam damage by 366%
foam dissipates 40% faster", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2881,7 +2862,7 @@ const tech = { { name: "half-wave rectifier", description: "charging the rail gun gives you energy
instead of draining it", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2898,7 +2879,7 @@ const tech = { { name: "dielectric polarization", description: "firing the rail gun damages nearby mobs", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2915,7 +2896,7 @@ const tech = { { name: "capacitor bank", description: "the rail gun no longer takes time to charge
rail gun rods are 66% less massive", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2932,7 +2913,7 @@ const tech = { { name: "laser diodes", description: "lasers drain 37% less energy
effects laser-gun and laser-bot", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -2949,7 +2930,7 @@ const tech = { { name: "specular reflection", description: "laser beams gain 1 reflection
increase damage and energy drain by 50%", - isGunMod: true, + isGunTech: true, maxCount: 9, count: 0, allowed() { @@ -2970,7 +2951,7 @@ const tech = { { name: "diffraction grating", description: `your laser gains 2 diverging beams
decrease individual beam damage by 10%`, - isGunMod: true, + isGunTech: true, maxCount: 9, count: 0, allowed() { @@ -2993,7 +2974,7 @@ const tech = { { name: "diffuse beam", description: "laser beam is wider and doesn't reflect
increase full beam damage by 175%", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -3018,7 +2999,7 @@ const tech = { { name: "output coupler", description: "widen diffuse laser beam by 40%
increase full beam damage by 40%", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -3045,7 +3026,7 @@ const tech = { { name: "slow light propagation", description: "", - isGunMod: true, + isGunTech: true, maxCount: 9, count: 0, allowed() { @@ -3070,7 +3051,7 @@ const tech = { { name: "pulse", description: "convert 25% of your energy into a pulsed laser
instantly initiates a fusion explosion", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -3093,7 +3074,7 @@ const tech = { { name: "shock wave", description: "mobs caught in pulse's explosion are stunned
for up to 2 seconds", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -3110,7 +3091,7 @@ const tech = { { name: "neocognitron", description: "pulse automatically aims at a nearby mob
50% decreased delay after firing", - isGunMod: true, + isGunTech: true, maxCount: 1, count: 0, allowed() { @@ -3131,7 +3112,7 @@ const tech = { { name: "bremsstrahlung radiation", description: "blocking with standing wave harmonics
does damage to mobs", - isFieldMod: true, + isFieldTech: true, maxCount: 9, count: 0, allowed() { @@ -3148,7 +3129,7 @@ const tech = { { name: "frequency resonance", description: "standing wave harmonics shield is retuned
increase size and blocking efficiency by 40%", - isFieldMod: true, + isFieldTech: true, maxCount: 9, count: 0, allowed() { @@ -3167,7 +3148,7 @@ const tech = { { name: "flux pinning", description: "blocking with perfect diamagnetism
stuns mobs for +1 second", - isFieldMod: true, + isFieldTech: true, maxCount: 9, count: 0, allowed() { @@ -3184,7 +3165,7 @@ const tech = { { name: "eddy current brake", description: "your stored energy projects a field that
limits the top speed of mobs", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3201,7 +3182,7 @@ const tech = { { name: "fracture analysis", description: "bullet impacts do 400% damage
to stunned mobs", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3218,7 +3199,7 @@ const tech = { { name: "pair production", description: "picking up a power up gives you 250 energy", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3236,7 +3217,7 @@ const tech = { { name: "bot manufacturing", description: "use nano-scale manufacturing
to build 3 random bots", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, isNonRefundable: true, @@ -3256,7 +3237,7 @@ const tech = { { name: "bot prototypes", description: "use nano-scale manufacturing to upgrade
all bots of a random type and build 2 of that bot", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, isNonRefundable: true, @@ -3270,40 +3251,40 @@ const tech = { //fill array of available bots const notUpgradedBots = [] if (!tech.isNailBotUpgrade) notUpgradedBots.push(() => { - tech.giveMod("nail-bot upgrade") - tech.setModToNonRefundable("nail-bot upgrade") + tech.giveTech("nail-bot upgrade") + tech.setTechoNonRefundable("nail-bot upgrade") for (let i = 0; i < 2; i++) { b.nailBot() tech.nailBotCount++; } }) if (!tech.isFoamBotUpgrade) notUpgradedBots.push(() => { - tech.giveMod("foam-bot upgrade") - tech.setModToNonRefundable("foam-bot upgrade") + tech.giveTech("foam-bot upgrade") + tech.setTechoNonRefundable("foam-bot upgrade") for (let i = 0; i < 2; i++) { b.foamBot() tech.foamBotCount++; } }) if (!tech.isBoomBotUpgrade) notUpgradedBots.push(() => { - tech.giveMod("boom-bot upgrade") - tech.setModToNonRefundable("boom-bot upgrade") + tech.giveTech("boom-bot upgrade") + tech.setTechoNonRefundable("boom-bot upgrade") for (let i = 0; i < 2; i++) { b.boomBot() tech.boomBotCount++; } }) if (!tech.isLaserBotUpgrade) notUpgradedBots.push(() => { - tech.giveMod("laser-bot upgrade") - tech.setModToNonRefundable("laser-bot upgrade") + tech.giveTech("laser-bot upgrade") + tech.setTechoNonRefundable("laser-bot upgrade") for (let i = 0; i < 2; i++) { b.laserBot() tech.laserBotCount++; } }) if (!tech.isOrbitBotUpgrade) notUpgradedBots.push(() => { - tech.giveMod("orbital-bot upgrade") - tech.setModToNonRefundable("orbital-bot upgrade") + tech.giveTech("orbital-bot upgrade") + tech.setTechoNonRefundable("orbital-bot upgrade") for (let i = 0; i < 2; i++) { b.orbitBot() tech.orbitBotCount++; @@ -3317,7 +3298,7 @@ const tech = { { name: "mycelium manufacturing", description: "nano-scale manufacturing is repurposed
excess energy used to grow spores", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3334,7 +3315,7 @@ const tech = { { name: "missile manufacturing", description: "nano-scale manufacturing is repurposed
excess energy used to construct missiles", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3351,7 +3332,7 @@ const tech = { { name: "ice IX manufacturing", description: "nano-scale manufacturing is repurposed
excess energy used to synthesize ice IX", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3368,7 +3349,7 @@ const tech = { { name: "degenerate matter", description: "reduce harm by 40%
while negative mass field is active", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3385,7 +3366,7 @@ const tech = { { name: "annihilation", description: "after touching mobs, they are annihilated
drains 33% of maximum energy", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3402,7 +3383,7 @@ const tech = { { name: "Bose Einstein condensate", description: "mobs inside your field are frozen
pilot wave, negative mass, time dilation", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3419,7 +3400,7 @@ const tech = { // { // name: "thermal reservoir", // description: "increase your plasma damage by 100%
plasma temporarily lowers health not energy", - // isFieldMod: true, + // isFieldTech: true, // maxCount: 1, // count: 0, // allowed() { @@ -3436,7 +3417,7 @@ const tech = { { name: "plasma jet", description: "increase plasma torch's range by 27%", - isFieldMod: true, + isFieldTech: true, maxCount: 9, count: 0, allowed() { @@ -3453,7 +3434,7 @@ const tech = { { name: "plasma-bot", description: "a bot uses energy to emit plasma
that damages and pushes mobs", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3471,7 +3452,7 @@ const tech = { { name: "micro-extruder", description: "plasma torch extrudes a thin hot wire
increases damage, and energy drain", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3488,7 +3469,7 @@ const tech = { { name: "timelike world line", description: "time dilation doubles your relative time rate
and makes you immune to harm", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3507,7 +3488,7 @@ const tech = { { name: "Lorentz transformation", description: "permanently increase your relative time rate
move, jump, and shoot 40% faster", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3530,7 +3511,7 @@ const tech = { { name: "time crystals", description: "quadruple your default energy regeneration", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3549,7 +3530,7 @@ const tech = { { name: "phase decoherence", description: "become intangible while cloaked
but, passing through mobs drains your energy", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3566,7 +3547,7 @@ const tech = { { name: "dazzler", description: "decloaking stuns nearby mobs
drains 30% of your stored energy", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3583,7 +3564,7 @@ const tech = { { name: "discrete optimization", description: "increase damage by 50%
50% increased delay after firing", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3602,7 +3583,7 @@ const tech = { { name: "cosmic string", description: "stun and do radioactive damage to mobs
if you tunnel through them with a wormhole", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3619,7 +3600,7 @@ const tech = { { name: "Penrose process", description: "after a block falls into a wormhole
you gain 50 energy", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3636,7 +3617,7 @@ const tech = { { name: "transdimensional spores", description: "when blocks fall into a wormhole
higher dimension spores are summoned", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3653,7 +3634,7 @@ const tech = { { name: "traversable geodesics", description: "your bullets can traverse wormholes
spawn a gun and ammo", - isFieldMod: true, + isFieldTech: true, maxCount: 1, count: 0, allowed() { @@ -3932,7 +3913,7 @@ const tech = { isCancelRerolls: null, isBotDamage: null, isBanish: null, - isMaxEnergyMod: null, + isMaxEnergyTech: null, isLowEnergyDamage: null, isRewindBot: null, isRewindGrenade: null, diff --git a/todo.txt b/todo.txt index b35e05c..84fc8f7 100644 --- a/todo.txt +++ b/todo.txt @@ -1,7 +1,7 @@ ******************************************************** NEXT PATCH ******************************************************** updated in game console style and all messages to match real game commands -new names inline with lore, mod -> tech, game -> simulation +new names inline with lore, tech-> tech, game -> simulation this is probably going to cause many minor bugs, so let me know what you find new reroll display in power up selection @@ -33,7 +33,7 @@ check for crouch after rewind (once) bug - mine spawned one new mine every second after sticking to the top right corner of a wall - notes: had only gun mine, mod mine reclamation, field plasma, + notes: had only gun mine, techmine reclamation, field plasma, (repeatable almost every time) bug - mines spawn extra mines when fired at thin map wall while jumping @@ -52,7 +52,7 @@ in game console add commands death, max health, max energy, rewind -mechanic: use gun swap as an active ability for several mods +mechanic: use gun swap as an active ability for several tech ideas? trigger damage immunity for 3 seconds, but drain energy? push away nearby mobs, but drain energy @@ -61,16 +61,16 @@ mechanic: use gun swap as an active ability for several mods CPT gun seems a bit weak right now. How to buff the gun? -mod nail gun: slow and accurate -mod foam: fast and inaccurate +technail gun: slow and accurate +techfoam: fast and inaccurate mob ability bombs/bullets that suck in player -mod where you can't stop firing, how to code? +techwhere you can't stop firing, how to code? -mod: laser beams push like plasma torch pushes with directional force +tech laser beams push like plasma torch pushes with directional force -mechanic: technological dead end - add mods to the mod pool with a dumb effect +mechanic: technological dead end - add tech to the techpool with a dumb effect don't show up in custom? negative effect (one time effects are better to avoid code clutter) make the player rainbow colors @@ -89,22 +89,22 @@ mechanic: technological dead end - add mods to the mod pool with a dumb effect remove your bots (requires you to have some bots) your bots are changed to random bots -Mod: "Expansion Formula": Permanently increase the size of Negative Mass field by 16%(Max 96%) +tech "Expansion Formula": Permanently increase the size of Negative Mass field by 16%(Max 96%) -Mod: "Circadian Rhythm": Become immune to harm for 1 second every 10 seconds while playing. +tech "Circadian Rhythm": Become immune to harm for 1 second every 10 seconds while playing. -Mod: "High Risk": Spawn two bosses per level. +tech "High Risk": Spawn two bosses per level. maybe limit to just the power up boss and spawn it at the exit every time to keep it simple also weaken the player - remove a mod up? + remove a techup? lower harm reduction? increase game difficulty by one level -mod that requires integrated armament +techthat requires integrated armament -mod - reset level - you trade a mod for a chance at killing a new level boss and farming more ammo - resets health, ammo (but not mods, fields, guns, ... ?) +tech- reset level + you trade a techfor a chance at killing a new level boss and farming more ammo + resets health, ammo (but not tech, fields, guns, ... ?) scramble level order? or same level mechanic - Your energy regen is only active when field and gun have not been used for 5 seconds. @@ -112,31 +112,31 @@ mechanic - Your energy regen is only active when field and gun have not been use be able to open up custom mode in the normal game might need to be rebuilt from scratch while in through testing mode? - have a way to make limited changes as allowed by mods you pick up in game + have a way to make limited changes as allowed by tech you pick up in game disable the in custom setting flag -mod: power up magnetism - power ups drift towards player +tech power up magnetism - power ups drift towards player where would this code go? super balls start at 3, not 4 have to balance damage -RPG might need a buff, now that it disables the other cool grenade mods +RPG might need a buff, now that it disables the other cool grenade tech make different move methods - mod: crouch charge jump - mod: double jump + tech crouch charge jump + tech double jump -mod: when mobs are at full health you do 40% to them +tech when mobs are at full health you do 40% to them -mod - move super fast, go intangible, drain energy very fast +tech- move super fast, go intangible, drain energy very fast this is like a dodge roll - mod for standing wave?, cloaking? + techfor standing wave?, cloaking? -mod pilot wave: mini black hole - pull mobs and blocks in with more force +techpilot wave: mini black hole - pull mobs and blocks in with more force also from farther away also do damage? -mod pilot wave: antigravity - blocks have no gravity for a few seconds after exiting the field +techpilot wave: antigravity - blocks have no gravity for a few seconds after exiting the field maybe they bounce too? maybe they explode? @@ -167,41 +167,41 @@ wormhole - make it clear when the wormhole can and can't teleport to a location time dilation - slow down the game engine by 1/2, but run an extra player cycle to simulate slow motion flavor - your bullets destroy blocks - this isn't really a bonus, so maybe just add this as flavor to another mod/field/gun + this isn't really a bonus, so maybe just add this as flavor to another techfield/gun a chance for destroyed blocks to drop stuff power ups spores -mod plasma : plasma length increases then decreases as you hold down the field button (like stabbing with a spear) +techplasma : plasma length increases then decreases as you hold down the field button (like stabbing with a spear) grows to 1.5 longer after 0.3 seconds, then returns to normal length over 1 second, until field is pressed again extra energy is drained when field is longer -using a reroll gives 3 options for mods, and 3 options for guns/fields/mods - or 6 options for mods (rewrite mod selection to work with 1-6 options) - the second stack of 3 mods could have repeats, so you don't have to write new mod code +using a reroll gives 3 options for tech, and 3 options for guns/fields/tech + or 6 options for tech (rewrite techselection to work with 1-6 options) + the second stack of 3 tech could have repeats, so you don't have to write new techcode adjust css to make 2 columns of 3 can't use with cardinality new power up - increase damage and fire speed, for 15 seconds named boost? - enabled by a mod? + enabled by a tech power up color: ? how to indicate effect duration or just give the effect after picking up a reroll -Mod: "Solar Power": Energy regeneration is doubled while standing still +tech "Solar Power": Energy regeneration is doubled while standing still run in the 1 second check -mechanic - remove a random mod as a condition for picking up a really good mod +mechanic - remove a random techas a condition for picking up a really good mod mechanic - do something for 2 seconds after firing if (mech.fireCDcycle + 120) -mod - do 50% more damage in close, but 50% less at a distance - code it like mod.isFarAwayDmg - have these mods disable each other +tech- do 50% more damage in close, but 50% less at a distance + code it like techisFarAwayDmg + have these tech disable each other -mod - foam is attracted to mobs +tech- foam is attracted to mobs use a gravitational attraction model? could foam be attracted to other foam bullets too? or foam is only attracted to foam bullets that are stuck to mobs @@ -211,8 +211,8 @@ mod - foam is attracted to mobs field - one block orbits you, it can protect you a bit and do collision damage use field to fire and press field again to pull it back - mod - more blocks - mod - attach a permanent neutron bomb to the block + tech- more blocks + tech- attach a permanent neutron bomb to the block lowers energy regen, but it can damage mobs repeat map in vertical and horizontal space @@ -236,17 +236,17 @@ have some mobs spawn in later in the level (in hard and why modes) after some mobs are dead after the boss is killed -look for mods that could update description text with count and mod.is information +look for tech that could update description text with count and techis information can only use variables that change in effect() and remove() - this.description = `8% chance to duplicate spawned power ups
chance to duplicate = ${mod.duplicateChance}` + this.description = `8% chance to duplicate spawned power ups
chance to duplicate = ${techduplicateChance}` mouse event e.which is deprecated add some more computer / AI stuff to the level lore text -mechanic - shrink mech.baseHealth in a mod or field +mechanic - shrink mech.baseHealth in a techor field -standing wave harmonics mod - push things away +standing wave harmonics tech- push things away push scales with mass up to about 4 has a 25% effect on shielded mobs? push when using field key @@ -322,9 +322,9 @@ movement fluidity many of the movement abilities in these games require levels to be built around the ability general feeling of responsiveness and control coyote time: can still jump a few cycles after leaving ground - mod: double jump - mod: air dash - mod: wall jump + tech double jump + tech air dash + tech wall jump wall grab? maybe remove falling damage and block damage? @@ -332,7 +332,7 @@ redblobgames.com/articles/visibility https://github.com/Silverwolf90/2d-visibility/tree/master/src could apply to explosions, neutron bomb, player LOS -possible names for mods +possible names for tech holonomy - parallel transport of a vector leads to movement (applies to curved space) Hypergolic - A hypergolic propellant combination used in a rocket engine is one whose components spontaneously ignite when they come into contact with each other. @@ -348,7 +348,7 @@ boss levels - small levels just a boss, and maybe a few mobs an effect when canceling a power up ammo? heals? - 50% chance for a mod, 25% heal, 25% ammo + 50% chance for a tech 25% heal, 25% ammo css transition for pause menu @@ -367,11 +367,11 @@ n-gon outreach ideas ******************************************************** LORE ******************************************************** lore - a robot (the player) gains self awareness - each mod/gun/field is a new tech + each techgun/field is a new tech all the technology leads to the singularity each game run is actually the mech simulating a possible escape this is why the graphics are so bad, its just a simulation - final mod is "this is just a simulation" + final techis "this is just a simulation" you get immortality and Infinity damage the next level is the final level when you die with Quantum Immortality there is a chance of lore text @@ -439,7 +439,7 @@ ending outline they ask the player to communicate jump twice if you understand they ask the player to enter console commands - give ammo or mods or something + give ammo or tech or something They tell the play a console command to permenantly enable custom and testing mode (in local storage) players can use this command in the future to enable custom and testing without beating the game even if local storage is wiped they then tell the player the command to increase the difficulty and the command to restart the game.