diff --git a/.DS_Store b/.DS_Store
index 4e3bbc2..0b7e3ce 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/index.html b/index.html
index 18640da..736bb76 100644
--- a/index.html
+++ b/index.html
@@ -202,9 +202,7 @@
diff --git a/js/bullet.js b/js/bullet.js
index 56bc584..ca11b16 100644
--- a/js/bullet.js
+++ b/js/bullet.js
@@ -2057,7 +2057,7 @@ const b = {
friction: 0,
frictionAir: 0.023,
restitution: 0.9,
- dmg: 0.5, //damage done in addition to the damage from momentum
+ dmg: 0.55, //damage done in addition to the damage from momentum
lookFrequency: 14 + Math.floor(8 * Math.random()),
endCycle: simulation.cycle + 150 * tech.isBulletsLastLonger + Math.floor(25 * Math.random()),
classType: "bullet",
@@ -2781,7 +2781,7 @@ const b = {
if (tech.isNailRadiation) {
mobs.statusDoT(who, tech.isFastRadiation ? 12 : 3, tech.isSlowRadiation ? 240 : (tech.isFastRadiation ? 30 : 120)) // one tick every 30 cycles
} else {
- let dmg = b.dmgScale * 5.5
+ let dmg = b.dmgScale * 6
if (tech.isCrit && who.isStunned) dmg *= 4
who.damage(dmg, tech.isNeedleShieldPierce);
simulation.drawList.push({ //add dmg to draw queue
@@ -3775,8 +3775,8 @@ const b = {
name: "shotgun",
description: "fire a wide burst of short range bullets",
ammo: 0,
- ammoPack: 5,
- defaultAmmoPack: 5,
+ ammoPack: 4.5,
+ defaultAmmoPack: 4.5,
have: false,
do() {},
fire() {
@@ -3933,10 +3933,10 @@ const b = {
});
}
} else if (tech.isIceShot) {
- const spread = (m.crouch ? 0.6 : 1.6)
- for (let i = 0, len = 16 * (tech.isShotgunReversed ? 1.6 : 1); i < len; i++) {
+ const spread = (m.crouch ? 0.7 : 1.2)
+ for (let i = 0, len = 18 * (tech.isShotgunReversed ? 1.6 : 1); i < len; i++) {
// iceIX(speed = 0, dir = m.angle + Math.PI * 2 * Math.random(), where = { x: m.pos.x + 30 * Math.cos(m.angle), y: m.pos.y + 30 * Math.sin(m.angle) }) {
- b.iceIX(14 + 30 * Math.random(), m.angle + spread * (Math.random() - 0.5))
+ b.iceIX(25 + 32 * Math.random(), m.angle + spread * (Math.random() - 0.5))
}
} else if (tech.isFoamShot) {
const spread = (m.crouch ? 0.35 : 0.7)
@@ -3944,7 +3944,7 @@ const b = {
x: m.pos.x + 25 * Math.cos(m.angle),
y: m.pos.y + 25 * Math.sin(m.angle)
}
- const number = 14 * (tech.isShotgunReversed ? 1.6 : 1)
+ const number = 13 * (tech.isShotgunReversed ? 1.6 : 1)
for (let i = 0; i < number; i++) {
const SPEED = 25 + 12 * Math.random();
const angle = m.angle + spread * (Math.random() - 0.5)
@@ -3952,7 +3952,7 @@ const b = {
}
} else if (tech.isNeedleShot) {
const number = 12 * (tech.isShotgunReversed ? 1.6 : 1)
- const spread = (m.crouch ? 0.04 : 0.08)
+ const spread = (m.crouch ? 0.03 : 0.05)
let angle = m.angle - (number - 1) * spread * 0.5
for (let i = 0; i < number; i++) {
b.needle(angle)
diff --git a/js/index.js b/js/index.js
index 69d48d2..91e59b5 100644
--- a/js/index.js
+++ b/js/index.js
@@ -264,13 +264,13 @@ const build = {
el = document.getElementById("pause-grid-right")
el.style.display = "grid"
el.innerHTML = text
- if (countTech > 5 || b.inventory.length > 6) {
- document.body.style.overflowY = "scroll";
- document.body.style.overflowX = "hidden";
- }
+ // if (countTech > 5 || b.inventory.length > 6) {
+ // document.body.style.overflowY = "scroll";
+ // document.body.style.overflowX = "hidden";
+ // }
},
unPauseGrid() {
- document.body.style.overflow = "hidden"
+ // document.body.style.overflow = "hidden"
document.getElementById("pause-grid-left").style.display = "none"
document.getElementById("pause-grid-right").style.display = "none"
window.scrollTo(0, 0);
diff --git a/js/level.js b/js/level.js
index 0e63a6a..44d0ebd 100644
--- a/js/level.js
+++ b/js/level.js
@@ -25,10 +25,10 @@ const level = {
// tech.giveTech("causality bombs")
// b.giveGuns("wave beam")
// tech.giveTech("phonon")
- // tech.giveTech("bound state")
+ // tech.giveTech("cardinality")
// tech.giveTech("isotropic radiator")
- // for (let i = 0; i < 9; i++) tech.giveTech("spherical harmonics")
// for (let i = 0; i < 3; i++) tech.giveTech("packet length")
+ // for (let i = 0; i < 4; i++) tech.giveTech()
level.intro(); //starting level
// level.testing(); //not in rotation, used for testing
diff --git a/js/player.js b/js/player.js
index b4fdae7..ac050cd 100644
--- a/js/player.js
+++ b/js/player.js
@@ -643,7 +643,7 @@ const m = {
simulation.makeTextLog(`m.research--
${powerUps.research.count}`)
for (let i = 0; i < 6; i++) powerUps.spawn(m.pos.x + 100 * (Math.random() - 0.5), m.pos.y + 100 * (Math.random() - 0.5), "heal", false);
m.energy = m.maxEnergy
- if (m.immuneCycle < m.cycle + 360) m.immuneCycle = m.cycle + 360 //disable this.immuneCycle bonus seconds
+ if (m.immuneCycle < m.cycle + 300) m.immuneCycle = m.cycle + 300 //disable this.immuneCycle bonus seconds
simulation.wipe = function() { //set wipe to have trails
ctx.fillStyle = "rgba(255,255,255,0.03)";
ctx.fillRect(0, 0, canvas.width, canvas.height);
@@ -672,7 +672,7 @@ const m = {
simulation.makeTextLog(`m.research--
${powerUps.research.count}`)
for (let i = 0; i < 6; i++) powerUps.spawn(m.pos.x + 100 * (Math.random() - 0.5), m.pos.y + 100 * (Math.random() - 0.5), "heal", false);
- if (m.immuneCycle < m.cycle + 360) m.immuneCycle = m.cycle + 360 //disable this.immuneCycle bonus seconds
+ if (m.immuneCycle < m.cycle + 300) m.immuneCycle = m.cycle + 300 //disable this.immuneCycle bonus seconds
simulation.wipe = function() { //set wipe to have trails
ctx.fillStyle = "rgba(255,255,255,0.03)";
ctx.fillRect(0, 0, canvas.width, canvas.height);
diff --git a/js/powerup.js b/js/powerup.js
index 7dd5e6f..6d001ee 100644
--- a/js/powerup.js
+++ b/js/powerup.js
@@ -160,10 +160,10 @@ const powerUps = {
document.getElementById("choose-grid").style.transitionDuration = "0s";
}, 500);
- if (tech.isExtraChoice) {
- document.body.style.overflowY = "scroll";
- document.body.style.overflowX = "hidden";
- }
+ // if (tech.isExtraChoice) {
+ // document.body.style.overflowY = "scroll";
+ // document.body.style.overflowX = "hidden";
+ // }
simulation.paused = true;
simulation.isChoosing = true; //stops p from un pausing on key down
build.pauseGrid(true)
@@ -206,7 +206,7 @@ const powerUps = {
document.getElementById("choose-background").style.opacity = "0"
document.body.style.cursor = "none";
- document.body.style.overflow = "hidden"
+ // document.body.style.overflow = "hidden"
simulation.paused = false;
simulation.isChoosing = false; //stops p from un pausing on key down
if (m.immuneCycle < m.cycle + tech.collisionImmuneCycles) m.immuneCycle = m.cycle + tech.collisionImmuneCycles; //player is immune to damage for 30 cycles
diff --git a/js/tech.js b/js/tech.js
index af3b062..80ed29d 100644
--- a/js/tech.js
+++ b/js/tech.js
@@ -82,7 +82,7 @@
if (index === 'random') {
let options = [];
for (let i = 0; i < tech.tech.length; i++) {
- if (tech.tech[i].count < tech.tech[i].maxCount && tech.tech[i].allowed() && !tech.tech[i].isJunk && !tech.tech[i].isLore) options.push(i);
+ if (tech.tech[i].count < tech.tech[i].maxCount && tech.tech[i].allowed() && !tech.tech[i].isJunk && !tech.tech[i].isLore && !tech.tech[i].isBadRandomOption) options.push(i);
}
// give a random tech from the tech I don't have
if (options.length > 0) {
@@ -3826,7 +3826,7 @@
},
{
name: "foam-shot",
- description: "the shotgun fires 14 foam bubbles",
+ description: "the shotgun fires 13 foam bubbles",
isGunTech: true,
maxCount: 1,
count: 0,
@@ -3845,7 +3845,7 @@
},
{
name: "ice-shot",
- description: "the shotgun fires 16 ice IX crystals",
+ description: "the shotgun fires 18 ice IX crystals",
isGunTech: true,
maxCount: 1,
count: 0,
diff --git a/style.css b/style.css
index 98c8f86..58d60d5 100644
--- a/style.css
+++ b/style.css
@@ -5,7 +5,7 @@
body {
font-family: "Helvetica", "Arial", sans-serif;
margin: 0;
- /* overflow: hidden; */
+ overflow: hidden;
background-color: #fff;
user-select: none;
cursor: auto;
@@ -123,19 +123,6 @@ summary {
z-index: 12;
}
-#choose-background {
- position: absolute;
- z-index: 3;
- width: 100%;
- height: 100%;
- background-color: #ccc;
- /* opacity: 0.6; */
- /* display: none; */
- visibility: hidden;
- opacity: 0;
- transition: opacity 0.25s linear;
-}
-
#construct {
display: none;
position: absolute;
@@ -152,6 +139,19 @@ summary {
border: 1px #333 solid;
}
+#choose-background {
+ position: absolute;
+ z-index: 3;
+ width: 100%;
+ height: 100%;
+ background-color: #ccc;
+ /* opacity: 0.6; */
+ /* display: none; */
+ visibility: hidden;
+ opacity: 0;
+ transition: opacity 0.25s linear;
+}
+
#choose-grid {
position: absolute;
top: 50%;
@@ -172,6 +172,9 @@ summary {
visibility: hidden;
opacity: 0;
transition: opacity 0.25s linear;
+ align-content: start;
+ max-height: 100vh;
+ overflow: auto;
}
.choose-grid-module {
@@ -207,7 +210,8 @@ summary {
/* grid-template-columns: repeat(auto-fit, minmax(310px, 1fr)); */
grid-auto-rows: minmax(auto, auto);
grid-gap: 0px;
- align-content: space-between;
+ align-content: start;
+ /* align-content: space-between; */
z-index: 2;
font-size: 1.3em;
@@ -216,11 +220,15 @@ summary {
#pause-grid-right {
justify-content: end;
position: relative;
+ overflow: auto;
+ max-height: 100vh;
}
#pause-grid-left {
justify-content: start;
position: relative;
+ overflow: auto;
+ max-height: 100vh;
}
.pause-grid-module {
diff --git a/todo.txt b/todo.txt
index b70fc8b..3ae1763 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,27 +1,16 @@
******************************************************** NEXT PATCH ********************************************************
-shotgun techs:
- (I haven't done enough testing so let me know if these different shotgun modes aren't balanced)
- worm shot
- ice-IX shot
- foam shot
- needle shot
+shotgun balance
+ ice-shot: less spread, higher damage, more crystals
+ needle-shot: more needles, higher damage, less spread
+ foam-shot: 1 more bubble
-foam lasts much longer on shielded mobs
- overall foam damage is reduced about 8%
-
-attacks that drain energy don't work when the player is immune to harm
- slime, radiation fields, black holes
-energy regen that consumes something (ammo, blocks, power ups) now works when immune to harm
- but passive energy regen is still stopped while you are immune to harm
-
-pilot wave field can no longer hit intangible mobs with blocks
- it was too annoying that you can't use blocks to move around so I reverted it back
+power up selection and pause menu elements scroll individually now
+ it looks great on my computer, but different operating systems and browsers are unpredictable
+ let me know if text is hidden or if it doesn't scroll for you and what OS and browser you're on
******************************************************** TODO ********************************************************
-snake boss tail should shrink in size
-
mob that grows or gets a shield when player is near
and charges when player is near
charge triggers an escape mode