******************************************************** NEXT PATCH **************************************************

new favicon
heal power up overheals don't consume the entire heal power up

accretion works with all fields except wormhole
  (only because wormhole eat up heals so it's bad)
  spawns 6 -> 3 heals

pilot wave 1 -> 2 extra power up choices
standing wave 66 -> 150 max energy
electronegativity  0.1% -> 0.15% energy per energy  (10->15% damage at 100 energy)

a few more images
bug fixes

*********************************************************** TODO *****************************************************

tech: thorns?

extend accretion to all fields
  run the code in power ups

tech: using research spawns a heal and ammo

Tech: relativity
  Simulation speed scales with movement speed. When still, time moves at 0.4 speed, at full walking speed it’s 1. (So if you’re falling or something and you move faster the simulation will be faster than usual)
  Also a damage and/or defense boost to make it worth using

Tech: Turbine - Energy generation is proportional to your speed up to +X% energy generation at 40 speed 
Tech: "Electric Reactive Armor": Defense increases by 2% for each 1 energy generation you have

wormhole tech - teleport away mobs with mass below 3 when they get too near the player
    short CD, small energy cost, only mobs below a mass

extend brainstorming animation timers to fps cap?
  will it be smoother or choppier?
  anything else needs to hit limited fps on a high fps monitor?

level element - mover, transport
  test effect of changing m.Vx on things like:  shooting bullets?
  extend the recentered friction zero to other things
    like blocks the player stands on?
    maybe zero on the horizontal velocity of whatever the player is standing on

extend uncertainty to superballs
  maybe make aiming them more random?

perfect diamagnatism could bounce on mobs, or even map elements?
  could work like a rocket jump?

Tech: Von Neuman probes - Drones will consume blocks to replicate themselves
  it's a little too similar to the drone repair tech, but I kinda like it better.  drones that eat blocks and spit out more drones is cool 

tech: parry - immune to harm for 0.25-0.5 seconds after pressing field button
  needs a 5 second CD?

tech: if a needle hits 2 mobs reset your fire CD
  maybe to 2x damage for each consecutive mob hit?
  maybe after a needle hits a mob the needle splits into 3 needles

tech for lens - you can only fire through the lens and some buff? damage or energy?
  this was in todo.txt on GitHub. I think it should be 'laser never drains energy, but you can only fire through lens and +90° lens arc, +100% damage (also you can not gain compound lens with this upgrade)

new boss level like reactor with a very very big boss
  mechanics around a very big boss?
    maybe the boss moves into rooms so you have to do platforming to clear the room before the boss enters the room
    boss can destroy blocks and smaller map elements
    
tech - after standing wave runs out of energy from blocking, gain a buff
  buff: defense, damage?
  aoe damage like railgun
    push mobs away

level: lock
  should there be something in the top part of the map?
  add alt versions of left and right sides
  make flipped L/R version (after everything else is done)

tech: add an selection option to all tech, gun, fields to do something
  set all mobs to 30% health, and stun all mobs
  50% chance to convert all power ups into research
  heal to full

tech: if you die inside MACHO, heal to full and delete the MACHO for the rest of the Level
  MACHO gives less defense

tech: after bosses die<br>they spawn a research

tech: +8% damage each time you kill a boss

tech:  maybe missiles explode when they hit walls, but explosions only drain energy

tech: sticky grenades
  needs another effect to be good enough
  stick to mobs?

make a mob similar to slasher
  because it's just a very well made mob.

tech - only allow 1,2 turrets at time?
  turrets never run out of ammo
    or turrets automatically use one of your mine ammos when they run out?
    good with multi gun builds
  conflict with booby trap?

tech: Bose Einstein condensate - freezes enemies in pilot wave, and drains some energy?

super-bot

make super balls with Zectron deflectable with field
  but is there a simple way to do this?

set mob health bar colors based on status effects?
  make mob damage immunity a mob status effect?
  
physics notes: add link to double slit content
  https://www.youtube.com/watch?v=v_uBaBuarEM

tech: rail gun area damage effect, but for all harpoon mode

laser momentum pushed back on player?
  might just be annoying

JUNK - overwrite mob draw function so mobs only draw if they can connect a ray from player to mob
  gonna cause lag?

mob status effect - vulnerability
  mobs take 4x damage for __ time
    afterwards mobs go back to normal damage taken
    graphical effect while they take extra damage
    needs to come from a "rare"ish effect
  merge with the decloaking damage effect
    decloaking gives all mobs (nearby??) a 3x damage taken status?
  this can be merged with the stun crit damage tech
    also the increased damage every hit tech?
      bad idea because the graphical effect will be too annoying

tech: sporangium that grow little trees
  the trees have an area of effect damage for about 6-10 seconds
  maybe something similar to radioactive drones, but maybe a few smaller shapes

new bot type that makes phonon waves
  name: phono-bot?
  each bot has to generate it themselves, can't run code in gun.do
  synergy with 2 resonance tech
    not isotropic?  I think no
  synergy with bound? phase velocity, amplitude, propagation

harpoon tech that makes auto aim work much better

tech - super balls gain 20 seconds of time and are reset to original launch speed after hitting a mob

railgun
  magnetic pinch: harpoon does damage to nearby mobs
    draw charge graphic on harpoon
    use same code as the damage when fire effect

hookBoss fires a hook that pulls player towards it
  hook does a bit of damage
  player targeted unless cloaking
  also add effect to finalBoss


finalBoss
  add synergies between modes:
  new modes:
    something that needs to be killed quickly
      if you don't kill it boss gets a shield
    rotating quadrant immunity shield, can't take damage from that quadrant
      maybe also attack player near that quadrant
      but how to tell the angle of incoming damage
        maybe a physics body like the shield but it only covers 1/3 of mob?
    falling object warps to ceiling after hitting floor
      doesn't end, player needs to kill it
      slowly grows?
    slow effect zones
      random placement or place over player or both!
      draw white dot and an outline of area of effect
        expanding circle stroke, freeze effect triggers when stroke circle hits fill circle
      after 1-2 seconds freeze player if in the zone
        also freeze mobs
    effect that makes player have to be close to boss
    hook that tries to yank the player into hitting finalBoss
      does damage
      pulls player into center
        counter with wormhole, negative mass
      player targeted unless cloaking


mob status effect - emit - mobs fire lasers for a few seconds 
  tech: phosphorescence - mobs emit after being hit with laser beams

Tech: "Solid rocket motor": Missiles would start at 300% speed and 200% missile damage upon explosion, but the speed and damage would decrease to 40% speed and damage as time goes on
tech: every time shotgun fires it's a different shotgun mode:  nails, ice, needles, worms, fleas, rivets, ...  but you get more ammo

try again - line of sight  https://ncase.me/sight-and-light/

for tech power ups no tech options are displayed until you research once
  or display only JUNK until you research once
  increase the number of options after each research

Tech: Grandfather Paradox - After rewinding, +300 damage during rewinded time
  maybe instead of +damage spawn a copy of player that shoots at things?
    how...  there is no way to reproduce firing
  Requires: CPT symmetry, retrocausality
  CPT adjacent tech is actually a bit too strong right now, maybe nerf a bit after testing

When receiving damage, in addition to becoming invulnerable to attacks, also become intangible for the set period of time

tech increase max energy and energy to 5000, but you can no longer regen energy through any process

it would be nice if there was incentive to go slow when choosing tech so n-gon is more relaxing
  add some css based visual effects for opening up a tech,gun,field

make freeze and __  not cause death at 50% health, but just 600% extra damage for that bullet 

make a new coupling effect for perfect diamagnetism or standing wave

make a faster smaller version of cell boss that also has map collisions

laserMines need a copy of laser-bot method
  this is a very rare bug, so not a priority

JUNK tech description that changes similar to cards in inscription
  that changes based on mouse position
  can you tell if mouse is over card?

tech - buff MACHO range, effect, move speed?
while you are inside MACHO it will damage mobs?

PWA?
  https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps
  https://codeburst.io/how-to-easily-turn-your-static-website-to-a-progressive-web-app-pwa-b0af08da9693
  https://github.com/landgreen/n-gon/pull/32/files

bug blocks and power ups falling through map
  always foam gun  (4-5 times)
    might be about tech pressure vessel
  happens rarely, doesn't repeat
    only occurs for 3 people so far
  normally after level 6
  occurred once on the first level,  didn't fire gun and was able to walk through a body

Tech:when relay switch/flip flop is on, turn ammo powerups into boosts, when relay swicth/flip flop is off, ammo powerups remain ammo powerups
  or toggle other power ups
    health/ammo
    
JUNK: what the golf?
  trying to throw a block throws you instead

look for other tech that would benefit from a 3rd line of description text

tech for lens - you can only fire through the lens
  and some buff?  damage or energy?

hopMom fight make platforming with hop bullets harder?

complete blowSuckBoss...  or don't

tech: laser reflections increase damage

JUNK tech different effects based on night or day
  use system time

buffing your deflecting for 1 second after pressing the field button
  2 second cooldown on the effect to prevent spamming it
  buff:  giving energy or doing damage makes sense
    maybe this could be a rework for bremstralung

replace field descriptions with a function call so they can have dynamic text
  add in dynamic coupling text as a 4th line

Boss that shoots out a ring of bullets, then after a few seconds it gravitates the bullets back

JUNK: Placebo: double the power up spawn rate but make half of them do nothing

coupling
  put coupling description as 4th line on field description
    raw text no function call
    no need for coupling description in power ups, pause
  negative coupling?
    wouldn't work for iceIX
coupling tech
  names: strongly coupled, Vibronic coupling, NMR coupling
  tech: +x% field coupling, your field changes randomly every y seconds
  tech: coupling starts at 200%, but decays when the field is in use, coupling recharges when the field is not in use
    some fields aren't used much (that's ok?)

tech give laser mines more lasers (3->4? 5?)

rewindBoss:  after hitting 1/5 damage thresholds the boss rewinds back in time to where it was a few seconds ago
  track it's data like player history

make orbitals increase orbital rotation speed after Orbital boss takes damage

worms can target player, buff their damage
  can't target player in first few seconds?

plasma field tech - similar to regression, but for plasma ticks

greatly increase walking speed 
  not mid air control?
  for time dilation field
    make jumping normal

junk tech: charged shot
immediately fire all of your ammo

after taking damage explode while invulnerable
  scale explosion radius with damage

quantum immortality: send you to a new tab after you die with a random load out
  basically everything is the same as it is now, but you switch tabs

Tech: Tech/guns/fields can no longer be duplicated. Duplication applies twice

tech: get sent to a new tab that closes in 3 minutes
  in the new tab you play reactor
  if you die in reactor you die in game, if you win you get 2-3 tech in the original game?
  give player equipment like many-worlds
    count guns, field, tech and give random stuff on new tab
  i-frame instead of tab?

reduce the amount of research and nerf anti randomization tech
  increase possible synergies that go nuts

tech expansion:  field coupling also expands each fields in different ways
  how to make the description work
    change description based on your current field?
  perfect diamagnetism moves forward when you hold down the shield
    it's great, but maybe annoying?
    maybe only with crouch?
  perfect diamagnetism just replace or increase Messier effect
  time dilation drains 1/2 as much energy when paused
  grow plasma torch as you hold it down
  negative mass effects much more space
    needs more benefit?
  reduces the cloaking vision effect?
    needs more benefit?

tech: missiles explode a 2nd time after 1/2 a second (with a slightly different position determined by original velocity)

The tech that makes blocks that fall into a wormhole give energy should scale with block size, with the same formula as tokomak

junk suggestion: useless machine - ejects itself and removes itself from the item pool



seed isn't working right from shared URL

mob mechanics
  bullets hit player and stay attached for 4-5 seconds, slowing player
    hopperBullets?
  black hole sucker effect on tail
  vines
    attached to map and grows, a series of spheres connected by vines
      if node dies it's removed from tree
      vine do
        keeps track of connection tree
          nested object with nesting to show connection
        spawns new nodes
        draws connections as quad lines

tech: You can place an extra perfect diamagnatism field on the map

standing wave no longer pushes mobs away, but it can do damage to mobs caught in area effect
  Standing wave harmonics no longer deflects, but instead discharges excess energy as lightning toward nearby enemies 
negative mass field does damage to mobs inside field
  combine with standing wave effect? pilot wave?

store value of last hit health lost
  tech: killing the mob that caused the last hit spawns a heal power up equal to 1/2 of last hit
    time limit for effect?
    need to also store who hit player

add small SVG pics to in-game console
  when?
    one for each field?
  use stuff on physics notes:
simulation.makeTextLog(`
<svg class="SVG-title" width="160" height="120">
    <g fill="transparent" stroke="#333" stroke-width="1" transform="translate(78,75)" stroke-linecap="round">
        <path d="M-34 -34 l31 31 m6 6 l31 31    M34 -34 l-31 31 m-6 6 l-31 31"></path>
        <ellipse cx="0" cy="35" rx="34.5" ry="7"/>
        <ellipse cx="0" cy="-35" rx="34.5" ry="7"/>
        <g stroke="none" fill="#333">
            <circle cx="0" cy="0" r="1.5" />
        </g>
    </g>
</svg>
`);

path-finding
  build a path-finding map on level load
  how to convert vertices into block grid?
    check points for map collisions and build grid
    is there a path-finding algorithm for vertices, instead of block grid
  use for:
    mobs,
    drones?
    bots that can go far from player and return

make plasma ball power up and block pick up still work when you have no no energy
  make a unique CD var for plasma ball?

tech: entropic gravity - gain defense for each research
  requires wormhole or pilot wave or negative mass field?

mitosis: after needle,bullets or rivets hit a surface split off into two smaller less damaging versions that have their velocity reset -firerate

after killing a mob go invulnerable for 1 second
  critical hit with laser, harpoon, nails, needle, rivet

spawn 2 bots after exiting 1 level
  or spawn 3 after 2 levels?
  (randomize 2-5 bots)
  replace all bot tech with this?

cloaking field
  for 6 seconds after de-cloaking tell all active mobs that the player is in the wrong position?
    how to code?
      just delay setting the m.isCloak for a couple seconds
        and also set all active bots to remember player in the de-cloaked stop

scrap bots can't move?
  only works for nail, foam, laser
    might be tricky code?
      make a new bot type called scrap bot?

JUNK tech: Pacifism
  You cannot attack mobs, mobs cannot attack you
  over write the mob.damage and player.damage methods

mob mechanic: beacon
  periodically add locations to an array
  teleport back to a location in the array
    at random
    if velocity not facing player?

super balls do more damage after bouncing?
  how to check for bounce?
  maybe just increases damage after hitting a mob

Make environmental damages also damage mobs
So if a mob passes through laser, it gets damaged

dark mode:
  look at Tinyfolks, 20 minutes till dawn

super short range foam that acts like flame thrower
  high fire rate
  short life spawn
  start large?
  extra ammo?
    or only 1/2 of ammo is used?

laser tech where bots move around and follow you while firing lasers in the direction you are looking
  they fire when you fire?
  they aim at player history aim location, with 1s delay
  bots position spread out perpendicular to the direction you are looking
    can they get stuck?
    maybe absolution position, no collide
      do they need to be physics objects then?
  make a special bot type for this
  beam is similar to diffuse beam


block manufacturing - molecular assembler tech
Holding r-click will create a slowly increasing in size block, which will be thrown on release

double research

map ban option in settings
  dropdown list with checkboxes by each map

bullets that can target the player
  occurs if no mobs targets around
  worms? drones? missiles? spores?
    all of the above?

Currently, the mob just deals higher damage on impact, which is annoying although not hard to compete with nor unique
By "redesign" I mean replacing instances of the regular mob, since the same code is used for the tiny red projectiles (I think) just add a new mob and remove the old one from the rotation
The new mob should be as such, a "real" exploding mob: 
Deals regular damage on impact, but breaks apart on touch into several red dots (like the ones thrown out by the going through walls boss) and a chance for also throwing a bomb or two (increases with difficulty)
If the mob is close to the player or heading into the player fast it will shatter as well (and the projectiles will inherit its speed)
By a formula such as
ShouldShatter(distToPlayer, speed) = distToPlayer * speed > threshold
Optionally (and a part I can do as I'm good at it and it doesn't revolve around a lot of functional code which you don't like other people doing):
Color changing based on the mob explosion status
Regular state: red
About to explode: animation to dark red
Exploding: several shockwaves from the explosion points and tiny trails given to the shrapnel for a second or two until they deaccelerate

pause time like invariant for other things...
  throwing blocks
  charging railgun
  charging anything?

guntech fire a bullet that fires nail fragments after 1s in the same direction as the original bullet
  like overwatch roadhog

bring back:
  the old phase decoherence field
    make cloak only active on input.field down
      could be a tech
        would need some other buff
    how to make it good enough
      combine with not killing tech?
      stun mobs that touch you while phased
      firing doesn't exit you from cloak
        but it does drain some energy
    tech pilot wave: Bose Einstein condensate - freeze mobs in superposition with pilot wave

tech: plasma drip

plasma ball
  graphics should look more like a real plasma ball
  gently scale damage with circleRadius
  balance corona discharge
  delay on returning to player is annoying
  scale float effect with ball size
  tech upgrades
    greatly improve floating effects while holding
    black hole: gives the plasma ball gravity
    stun on expansion
    plasma orb increases in size and power as it eats enemies
      while attached?

flashlight effect
  make level.do() graphic that only shows direction player is facing
    pattern it after cloaking field, or timeSkipBoss
      will it work with cloaking field at the same time

double jump?

tech: coyote time
  you can still jump for 2 seconds after falling off a ledge
  make it a JUNK tech? so you can keep the name
  some other benefit
    reduce your gravity also?
    increase jump?

tech smoke grenades - mobs inside a cloud can't see player
  draw on the region so it's hard for player to see as well
  you'd have to make something similar to MACHO that exists after an explosion goes off
  maybe just keep it simple:
    stun mobs for a long time, and draw a 99& alpha grey circle for the same time
      don't worry about mobs seeing you inside the circle, the circle is kinda small so it doesn't matter
  

tech mines:  mines fire _____ instead of nails
  needles
  super balls?
  foam?

tech: frozen mobs die at 10% life

tech: harpoons stick into enemies
  detonate after a short delay
  attaches mob to wall if possible
  firing while harpoon is stuck into an enemy rips it out of them, inflicting damage and stun and pulling them towards you



enemies stuck with foam receive upward force over time
  only form aerogel tech?

Tech: superglue
Requires: foam + another gun or plasma torch or molecular assembler
  Foam bubbles decay 50% slower
  Enemies stuck with foam cannot move
  Foam does 0 damage
  Enemies stuck with foam take 25% more damage
  should foam bots gets this also or is that too strong

const ctx = canvas.getContext('2d', {‘willReadFrequently': true});

//deal with game crashes?
canvas.addEventListener("contextlost", onContextLost);
canvas.addEventListener("contextrestored", redraw);
ctx.reset();

a mine tech that makes mines you can stand on
  works similar to the field block throwing system
    but you don't need to find a block to throw
  blocks explode after mobs touch them
    or 3 seconds after you touch them
  benefits from all block tech

setting to remove UI, except health bar
  except active gun? to see ammo
  checkbox in pause and in settings

go non-collide with mobs when immune to damage?

mobs that are invulnerable from the front

vertical reversed version of reservoir level, start at top and press buttons to lower slime
  mechanic: push a very large block into slime in order to stand on it and avoid slime

add anticipation to more mob attacks
  stabber
  striker

can mob bullets damage other mob?
  maybe if they switch collisions and classType === "body" or obj.classType === "bullet"

path finding system

figure out how to get friction effects on map/body to apply to player
also horizontal moving platform?

growBoss and cellBoss are too similar

variant of Occam's razor - remove 50% of your tech for each removed get:
  2 bots?
  50 energy max

tech immune to harm after mob kill
  require no other mob kill tech?
  cloaking field tech?

final boss invulnerability
  until mobs are cleared?
  in between phases
  for all of one phase

JUNK tech - do something fun to the mob display health method

new platform element, spring
  toggle to on when player touches platform    
  platform extends in any direction

boss that gives nearby mobs invulnerability
  invulnerability needs to toggle off and on
  boss is only mildly aggressive
  repulsed by player up to a point
  attracted to mobs

training
  save training level progress as local variable
    reset progress to zero if you clear all training levels
    maybe only save progress if you made if past the trainingHeal level
  make the training button more obvious if the account has only played 1-2 times
    larger?
    position?
    animated text?
  uses the lore voice/text code?
  replace all mob clear triggers with button triggers?
  tutorial rooms:
      look around with your mouse?
      easier deflecting level, with 1-2 attacking mobs
  gun rooms: (different mobs type in each room)
    different mobs in each room 
      how to introduce mob shields?
      "hopper" "slasher" "shooter "grenadier" "striker" "laser" "stabber" "springer" "pulsar" "launcher" "launcherOne" "exploder" "sneaker" "sucker" "sniper" "spinner" "grower" "beamer" "focuser" "spawner" "ghoster"
    spores - use 1 ammo to take out several mobs at once,  you have to block with your shield until the mobs die
    drones - use mouse to bring drones around a couple corners
    foam - slow boss mob, and run away
    laser - reflect off walls to hit mobs
  field rooms:
    standing wave - bullets come from every direction
    perfect diamagnetism - drop field to rapid stream of bullets and fire gun at them
    negative mass - fly over a bunch of ground based mobs , hoppers
    molecular assembler - guide drones around the corner
    plasma torch - nothing fancy, just kill mobs
    time dilation - get past some mobs
    cloaking - sneak past mobs to collect some heals
    pilot wave - toss blocks at mobs
    worm hole - teleport past lasers
  puzzle/platforming rooms:
    use the double constrained platforms
    stealth room
      probably should make 2+
  combat rooms:
    boss gauntlet, spawn with nothing but a few power ups and fight 10 bosses
    use no gun, just bots to kil stuff

balance time dilation with bose einstein  (you can freeze everything and take no damage)
  code is still there, need to balance
  balance with energy drain?

overflowing energy does harm?
  or just reduces harm reduction?

make a line of constrained mobs move like a snake 
  apply forces with directions determined by time and position on the snake

tech: basic research - heal power ups spawn as research power ups instead, and using research heals you (needs to be pretty low, like 3% health)
tech: maintenance - heals no longer spawn, but using research heals you 100%

foam tech - make it move slower, last much longer, and push away other foam bullets
  not sure about bouncing off walls,  but that might be fun too

tech  extend fracture analysis to give bonus damage to frozen also, but reduce the 400%->300%?

pulsar mobs retarget too easily
also they drift around too much

convert blocked mobs into bullets
  only for the very small bullets that move fast after being blocked
  delete bulletmob and spawn a nail-like bullet with the same properties as the bulletmob

electric motors: increases movement speed and jump height, but jumping and moving costs energy
  overwrite the key event listeners?
  JUNK tech?

mob that fires bullets in 4,5,6,7 different directions at once,  no aiming
  grow a bit before it fires to indicate state

quasarBoss: inverted pulsar boss that hits everything except where its aiming

intro map: diegeticly draw a mouse with field highlighted
  also indicate space?
  dynamically adjust drawing after picking up a gun 

increase mass and movement speed at the same time
  increase jump differently because it scales extra with mass
    m.defaultMass = 4.5
    m.definePlayerMass()

give history boss legs?

field tech - disable blocking, but does high damage to mobs inside field
  and maybe slows mobs it damages

mob/boss that fires a laser at player, but give player time to avoid
  laser isn't always on
  they target where player was 1 second ago
  they turn to face player?

tech rocket jump - jumping produces an explosion at your feet that lets you jump extra high, but does some damage
  require electric reactive armor?

Plasma Burner: upgrade for plasma torch, basically just a jet engine. does high damage, but short range, mostly for player movement.
  maybe reduce gravity to really low then apply a vector away from mouse direction

auto-gon - auto battler with n-gon mob AI and tech
  you build a group of mobs and bosses from n-gon
    they fight other mobs and bosses
  similar research and tech system to n-gon
  some mobs can fire player weapons

tech: relativistic jets:
  small particles that shot out from front and back poles and end up in a wide variety of spirals
    slow trickle when charging and several more when firing
  
Tech: Make player smol

adapt the cloaking graphics to make a flashlight cone visual effect
  put code in level.do?

be nice if block throwing had a projected path

Pilot wave tech
  Energy use is increased, but you can now shape blocks using pressure
  Grouping blocks will merge them into a massive ball
  Size, density is determined by total mass

aoe effect pushes mobs away,  then rapidly pulls them in
  for mines?

mob: spawning seekers on death

drones can combine with other drones to get bigger?
drones that grab powers ups can grab more then one and get even bigger each time

it would be helpful if there was a mechanism to recover mobs that fly off the map
  add a ceiling system and a left/right walls system similar to the floor checks but only for mobs
make non moving bosses not move after getting hit
  shooter, shielding, 

scrolling console history in pause menu?
pause should at least show the last in game console message

in testing mode console log the body you click on

tech: Standing Wave: Shockwave. Use FIELD button to shrink your shield and charge up, release to unleash a Shockwave.

tech: quantized shields - harmonic standing wave field can only lose 33 energy per hit
  draw 1,2,3 levels of the field based on energy?
  the blocked value only scales up to 2x or 4x (33 energy) blocked
  doesn't stack with spherical tech

make a tech that improves all charge guns
  for: pulse, foam, railgun
  effect:
    faster charge rate?
      fire speed already does that...
    harm reduction while charging
    less ammo/energy used while charging?

tech plasma : 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

energy conservation 6% damage recovered as energy
  there is space for a negative effect in the text...
  
tech: use the ability for power ups to have custom code
  (note: this code is half way done, it just needs to be completed)
  attracted to player
  attracted to other power ups
    explode if they touch?

apply the new gun.do functions to other guns
  railgun
  crouching missile?
    works similar to foam
    performance issues?

look into improving mouse lag with pointer lock?
https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
https://www.vsynctester.com/game.html
https://news.ycombinator.com/item?id=26530272

mobile requirements:
  detect mobile, flip to landscape
  detect no keyboard, no mouse
    auto aim?
    limit items to ones that don't require aiming?
    tap screen regions to move (WASD)
    reduce font size
    
add back in gamepad support?
  but does anyone care?
  https://github.com/landgreen/landgreen.github.io/search?q=gamepadconnected

tech: time dilation - when you exit time dilation rewind to the state you entered
  position, velocity, and health
  no energy cost

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 tech you pick up in game
  disable the in custom setting flag

make different move methods
  tech crouch charge jump
  tech double jump

tech when mobs are at full health you do 40% to them

tech- move super fast, go intangible, drain energy very fast
  this is like a dodge roll
  tech for standing wave?, cloaking?

tech pilot wave: mini black hole - pull mobs and blocks in with more force
  also from farther away
  also do damage?
tech pilot wave: antigravity - blocks have no gravity for a few seconds after exiting the field
  maybe they bounce too?
  maybe they explode?

new power up - increase damage and fire speed, for 15 seconds
  named boost?
  enabled by a tech
  power up color: ?
  how to indicate effect duration
  or just give the effect after picking up a reroll

tech- do 50% more damage in close, but 50% less at a distance
  code it like techisFarAwayDmg
    have these tech disable each other

new status effect: weakness, mobs do 75% les damage
  graphic indication?

new status effect: fear - push mob away from player for a time

new status effect - apply status effect to mobs that makes blocks attracted to them
  only lasts a few cycles
  or zero cycles and it doesn't need to be a status

have some mobs spawn in later in the level  (in hard and why modes)
  where
    at defined points in array levelSpawns = [{x:0,y:0},{x:0,y:0}]
      store the locations of mobs when the level starts to use as respawn points
      remove the locations that are close to player
  when?
    after some mobs are dead
    after the boss is killed

look for tech that could update description text with count and tech is information
  can only use variables that change in effect() and remove()
  this.description = `<strong>8%</strong> chance to <strong>duplicate</strong> spawned <strong>power ups</strong><br><em>chance to duplicate = ${techduplicateChance}</em>`

use mac automator to speed up your n-gon -> git sync

movement fluidity
  let legs jump on mobs, but player will still take damage
  like: ori and the blind forest, celeste
    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
  tech double jump
  tech air dash
  tech wall jump
    wall grab?
  maybe remove falling damage and block damage?

have a mob apply a positive status effect on other mobs,
  heal?
  make it yellow
  damage bonus, but how?
  possible balance issues

css transition for pause menu

animate new level spawn by having the map aspects randomly fly into place
    
n-gon outreach ideas
  blips - errant signal on youtube
  reddit - r/IndieGaming
  hacker news - show hacker news post
  twitch - lets play

******************************************************** BUGS ********************************************************

bug: maybe I can put in an event listener to reset inputs to false when you tab out to prevent key sticking

bug - url sharing still broken sometimes
    
tech upgrade to anthropic principle to make it trigger at 50% life and 0% once per map

bug? cloaking field doesn't show energy over max

run more profiles of n-gon to fix performance issues

bug - death while paused crashes game?

bug:  possibly clearing away all bullets causes a problem
  bullet.js 255  (.do() is missing)
  I died and quantum immortality triggered (I had needles and ice-IX)
  game crashed but recovered

vanish element bug, crashes on touching element,  happens for 1 person maybe with junk tech?

safari issues
  once: can't pick up blocks
    fixed on new map
    cloaking field
  once: after damage, locked into slow time mode
    fixed on damage
  3 times player head graphics not rotating
    left/right leg flip broke
    walk leg direction,  legs are walking backwards
    happened maybe after power up selection menu??
    cloaking field(at least once)
    aiming still works
    fixed on new map, although flip still broken (is flip a separate issue?)
      flip fixed on new game

sharing builds as html doesn't work for long lists...
  it shouldn't be sharing undefined at all
  probably some other problems too
  (this might be fixed...)

blocks on buttons teleport into the button endlessly if they are being slowly floated away
  maybe add a cooldown?
  can't reproduce

ants marching outline doesn't sync right on safari anymore.

door to exit in level: vats does nothing
  did I do that?

death while in power up selection menu doesn't reset properly
  of course it's not possible to die in this menu unless you use testing and shift+X

player can become crouched while not touching the ground if they exit the ground while crouched

a couple times people have reported the final boss dropping extra bodies on death

blue triangle boss can move backwards and aim away from you if set up properly
  issues with dot product probably, but might not be worth fixing

mouse event e.which is deprecated

fix door.isClosing actually meaning isClosed?

make it so that when you are immune to harm you can either jump on mobs or you pass through them

is there a way to check if the player is stuck inside the map or block
  trigger a short term non-collide if that occurs

(intermittent, but almost every time) bug - capping the fps causes random slow downs, that can be fixed with pause

******************************************************** LEVELS ********************************************************

map: observatory
  button controls rotation of telescope
  laser beam shoots out of telescope
  button opens the dome

level with mobs that follow a genetic algorithm
  mobs have genes
  the last mob that did damage saves it's genes to local storage
  new mobs have the saved genes, but with some random mutations
  mutations need to be balanced to prevent a gene from moving towards infinity
    total genome must equal 1   (100%)
    binary genes have a flat cost
      example: phasing through walls might cost 0.2
    spectrum genes have a rate
      example: acceleration cost 0.01 per 0.001
  possible genes
    genes should only effect it's ability to touch the player
      so not damage?
    genome: spectrum
      acceleration
      top speed / air friction
      damageReduction
      duration?
        health decreases naturally?
        or they just go away like bullets?
      spawn rate
      look frequency / memory?
    genome: binary
      go through walls
      blink/teleport (like striker)
      grow when near target
      split into two
      shielded
  occurs in a specialized level
    named: gene lab, gene factory, genetic lab, genome facility
    in the level sequence after lab and before gauntlet?
    level ends after a period of time
      exit is hidden until time is up and it appears
      the level tests player durability/evasion
        this is a nice contrast to the final level that tests damage output, and the gauntlet which tests AoE damage

rename intro level to something lore related

buttons can now on/off boosts

repeat map in vertical when you fall teleport to above the mab, as if the map repeats
  camera looks strange when you teleport player with a high velocity

map element - player rotates a rotor that makes a platform go up or down

level element:  a zone with wind, anti-gravity, extra gravity
  control with button

******************************************************** MOBS ********************************************************

mob that charges up and then fires many bullets at once in a connect

mob that draws a lin from it to the player, and past.  then it charges across that line

mob that spawns eggs after they die
  eggs don't attack but grow back into a mob after about 10s

mob mechanics
  use the force at a location effect, like the plasma field
    Matter.Body.applyForce(who, path[1], force)

mob - after taking damage
  release seekers
  teleports

hop boss:
  AoE damage when landing
    pull in player? and blocks?
  extra gravity on falling?
    immune to damage while falling?

mob: molecule shapes - 2 separate mobs joined by a bond
  use constraints: just spawn 2x or 3x groupings
    low friction so they can spin around
    spin when attacking player?
      increase constraint length when attacking

Mob: "Tentacle": Sits on wall. Is a black blob. When you get near it, reaches out and grabs you, similar to wires. Does not deal damage.
  maybe it could be immune to damage? but it is spawned by an actual mob

level Boss: fractal Sierpiński triangle
  https://en.wikipedia.org/wiki/Sierpi%C5%84ski_triangle
  spawns a 1/2 size version of the boss, this version can also spawn a smaller version, but it is capped at some size level
    they spawn once at the start of the level
    if a version dies, one can be replaced every ten seconds by the largest version

give mobs more animal-like behaviors like rain world
  mobs play, look for food, explore
  mobs some times aren't aggressive
    when low on life or after taking a large hit
  mobs can fight each other
    this might be hard to code
  isolated mobs try to group up

mob: wall mounted guns / lasers
  not part of randomized mob pool, customized to each level

level boss: fires a line intersection in a random direction every few seconds.
  the last two intersections have a destructive laser between them.

******************************************************** SOUND ********************************************************

add sounds
  https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode
  https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Advanced_techniques
  style
    interesting chords, like music, mixolyd 
    can fade into the background
    chords gradual rise and fall in volume
    shouldn't be traditional effects
  adjust volume with distance
  mute option to settings
  end all sounds with each new level
  write some functions to produce sounds
  will this effect performance?
    https://padenot.github.io/web-audio-perf/
    "Web Audio API implementation use two threads", so it probably isn't much of an issue
  when to make sounds?
    if near some strange thing in the level
    after grabbing a power up, in the selection menu
    from mobs, damage,inside field
    when activating fields: time, negative mass, 

    //setup audio context
    function tone(frequency) {
        const audioCtx = new(window.AudioContext || window.webkitAudioContext)();
        const oscillator = audioCtx.createOscillator();
        const gainNode = audioCtx.createGain();
        gainNode.gain.value = 0.25; //controls volume
        oscillator.connect(gainNode);
        gainNode.connect(audioCtx.destination);
        oscillator.type = "sine"; // 'sine' 'square', 'sawtooth', 'triangle' and 'custom'
        oscillator.frequency.value = frequency; // value in hertz
        oscillator.start();
        return { oscillator: oscillator, audioCtx: audioCtx }
    }
    // https://www.fresnostate.edu/folklore/Olson/JUSTINT.HTM
    // mixolyd. C      D       E      F+    G      A+    B
    // key=G   264    297     330   356.40 396*   445.50 495 
    // const t264 = tone(264)
    // t264.oscillator.stop(t264.audioCtx.currentTime + 2) //in seconds, not milliseconds for some reason
    // tone(297)
    // tone(330)
    // tone(356.40)
    // tone(396)
    // tone(445.50)
    // tone(495)


******************************************************** LORE ********************************************************

possible names for tech
  strange loop
  homeostasis
  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.
  swarm intelligence - for a drone tech
  genetic algorithm
  metaheuristic - is a higher-level procedure or heuristic designed to find, generate, or select a heuristic (partial search algorithm) that may provide a sufficiently good solution to an optimization problem, especially with incomplete or imperfect information or limited computation capacity
  stochastic optimization
  electrostatic discharge
  Gödel's incompleteness
  quantum zeno effect  (perturbation of a system prevents some systems from evolving because it scrambles coherence)  (apply to lasers, fields)
  counterfactual - something false
  regression to the mean
  phlogiston theory is a superseded scientific theory that postulated the existence of a fire-like element called phlogiston
  Laplace's demon was a notable published articulation of causal determinism on a scientific basis by Pierre-Simon Laplace in 1814.[1] According to determinism, if someone (the demon) knows the precise location and momentum of every atom in the universe, their past and future values for any given time are entailed; they can be calculated from the laws of classical mechanics.
  evolutionary cosmology
  eternal inflation
  hypergraph
  SQUID (for superconducting quantum interference device) is a very sensitive magnetometer used to measure extremely subtle magnetic fields, based on superconducting loops containing Josephson junctions.
  nuclear pasta - hard matter in neutron star
  nonlocal
  fine-tuned universe
  hall effect thrusters
  spaghettification
  particle accelerator
  superluminal signalling
  NP-complete
  lenticular lens:  is an array of lenses, designed so that when viewed from slightly different angles, different parts of the image underneath are shown.
  p-zombie
  p-hacking JUNK tech
  https://en.wikipedia.org/wiki/High-entropy_alloys  high yield strength and low ductility, high temp resistance
  https://en.wikipedia.org/wiki/Refractory_metals  hard, high temp resistance
  https://en.wikipedia.org/wiki/Upper-atmospheric_lightning#Elves
  prion quine - self replicating protein
  Unitarity - https://en.wikipedia.org/wiki/Unitarity_(physics) - all probabilities add up to 1, calculations work the same forward and backwards in time
    this is violated by expansion of the universe
  https://en.wikipedia.org/wiki/Cosmic_censorship_hypothesis - black holes can't leak
  Alcubierre warp drive (FTL with negative mass)

******************************************************** CARS IMAGES ********************************************************

process:  discord midjourney prompts -> "pixelmator pro" adjust color, repair, scale to 384x256, export PNG -> webP? -> place in /img folder
make n-gon a progressive web app to manage image downloads, cache
wave function collapse opens the pause menu after it triggers alternate reality
  this is actually good, maybe reuse this code to get pause menu to open at any time
if pause is pressed while selecting power ups, display pause menu on top of selection menu
***styles***
  try --- Pastel drawing, Psychedelic art, Arabesque (cool patterns), knolling (everything spread out and placed on a flat mat)
  try taking screen shots of fields graphics and feeding them into midJourney V4
  technology stuff --- Dan Matutina (cute complex technology),
    Katsuhiro Otomo (intricate space technology), Tsutomu Nihei (black and white detailed future tech)
    infographics of all know multiverses. 1980s Japanese graphic design, dimensional astrolabe,
    Japanese poster graphics, Ralph McQuarrie (looks like star wars), Simon Stålenhag (retro-futuristic), Yoshiyuki Tomino (detailed anime future technology)
    isometric:  low-poly, box cutout, made in blender, Materials: matte clay
    subtractive sculpture
    kinetic sculpture
  quantum stuff -- Hypertorus, Glowing Opal Pearlescent, Physics, Hydro-Dipping	Hydrodipped, Vija Celmins, Matt Molloy (photo of golden waves in the sky)
***maybe redo***
  laser
  supercritical fission
***past style themes***
  field emitter - bipedal white robot spherical gun turret on bird legs
      damaged dirty white robot spherical gun turret on bird legs in the style of Solarpunk
      a white spherical bipedal mech standing motionless while black lines travel quickly in the background, minimalist style --no arms --v5
  standing wave - concentric transparent blue geometric circles science  
  perfect diamagnetism - physics magnetic field chalk diagram 
  time dilation - graphic of a hyperbolic equation Luminogram
  negative mass - Blacklight painting by Moebius
  plasma torch - by Dan Mumford
  metamaterial cloaking - Scientific photography by Miki Asai,   by Bruce Munro
  molecular assembler - by Laurie Greasley 16-bit Isometric 
  wormhole - by Tim White
  pilot wave - 

  nail gun - Screenprint
  shotgun - blueprint by Dan McPharlin
  grenades, missiles, explosions - vibrant fireball explosion sonic shockwave ring art by Victo Ngai --ar 3:2 --v 5 --s 750
  spores - turquoise black spores on a white background full color scientific anatomy by Ernst Haeckel
  drones - tilt-shift photography
  super balls - By Akari Toriyama
  wave - sound wave oscilloscope by Paul Catherall,   concentric circles by Paul Catherall 
    Barbara Takenaga's painting depicting a clean sound wave on aoscilloscope device --ar 3:2 --v 5
  foam - black blobs Ink doodle
  harpoon - iron harpoon on a rope weapon art white background by Eiichiro Oda --no fish --ar 3:2 --v 5 --s 750
  mine - by Dan McPharlin
  laser - complex optical scientific equipment

  guns, ammo - isometric clean pixel art image cutaway of , style of tekkonkinkreet
  defensive - Paper cutout
  bots - hovering drone  by Laurie Greasley 16-bit Isometric 
  generic energy tech - by Laurie Greasley
  duplication, cancel -  by Kazumasa Nagai
  anti-shear topology, fracture analysis, shear stress - Chemigram
  ON/OFF - ASCII art 
  block throwing - Bauhaus style
  tech that adds JUNK - by Choi Jeong-hwa
  ice IX - microscope images of ice crystals
  tech that spawns health - glowing green balls by Enki Bilal
  invulnerable - by Nick Veasey (photos that look like x-rays)
  alternate reality -  Fractal art 
  tech choice -  mandala tile Mosaic 
  tech that spawns heal power ups -  green Quilling 
  time, CPT, pause -  by Lee Bontecou
  boost, coupling power ups tech - cyan electron orbiting a black nucleus electric field as bas-relief   //(by Kazumasa Nagai)
  radioactive - volumetric atomic nucleus diagram by Paul Catherall

