WIMPs for wormhole
tech: WIMPs now requires wormhole gives 3-9 research now (was 2-3) tech: eddy current brake - is 15% larger and caps mob speeds at 20% slower bug fixes
This commit is contained in:
@@ -3308,7 +3308,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 * 4.5
|
||||
let dmg = b.dmgScale * 5
|
||||
if (tech.isCrit && who.isStunned) dmg *= 4
|
||||
who.damage(dmg, tech.isNeedleShieldPierce);
|
||||
simulation.drawList.push({ //add dmg to draw queue
|
||||
|
||||
@@ -5956,7 +5956,7 @@ const level = {
|
||||
//top right
|
||||
spawn.randomGroup(2000, -5700, 0.6);
|
||||
|
||||
powerUps.addRerollToLevel() //needs to run after mobs are spawned
|
||||
powerUps.addResearchToLevel() //needs to run after mobs are spawned
|
||||
let bosses = ["shooterBoss", "launcherBoss", "laserTargetingBoss", "streamBoss", "pulsarBoss", "spawnerBossCulture", "laserBoss"];
|
||||
let abc = Math.random();
|
||||
if (simulation.difficulty > 3) {
|
||||
|
||||
19
js/player.js
19
js/player.js
@@ -308,10 +308,9 @@ const m = {
|
||||
//remove all tech and count current tech total
|
||||
let totalTech = 0;
|
||||
for (let i = 0, len = tech.tech.length; i < len; i++) {
|
||||
if (tech.tech[i].isJunk) tech.tech[i].frequency = 0
|
||||
if (tech.tech[i].count > 0 && !tech.tech[i].isLore) {
|
||||
if (tech.tech[i].isJunk) {
|
||||
tech.tech[i].frequency = 0
|
||||
} else if (tech.tech[i].frequencyDefault) {
|
||||
if (tech.tech[i].frequencyDefault) {
|
||||
tech.tech[i].frequency = tech.tech[i].frequencyDefault
|
||||
} else {
|
||||
tech.tech[i].frequency = 1
|
||||
@@ -1506,12 +1505,12 @@ const m = {
|
||||
},
|
||||
{
|
||||
name: "standing wave harmonics",
|
||||
description: "<strong>3</strong> oscillating <strong>shields</strong> are permanently active<br><strong>deflecting</strong> drains <strong class='color-f'>energy</strong> with no <strong>cool down</strong><br><strong>deflecting</strong> has <strong>75%</strong> less <strong>recoil</strong>", //<strong class='color-harm'>harm</strong> and
|
||||
description: "<strong>3</strong> oscillating <strong>shields</strong> are permanently active<br><strong>deflecting</strong> drains <strong class='color-f'>energy</strong> with no <strong>cool down</strong><br><strong>deflecting</strong> has <strong>50%</strong> less <strong>recoil</strong>", //<strong class='color-harm'>harm</strong> and
|
||||
effect: () => {
|
||||
// m.fieldHarmReduction = 0.80;
|
||||
m.fieldBlockCD = 0;
|
||||
// m.fieldHarmReduction = 0.75;
|
||||
m.blockingRecoil = 1 //4 is normal
|
||||
m.blockingRecoil = 2 //4 is normal
|
||||
m.fieldRange = 175
|
||||
m.fieldShieldingScale = Math.pow(0.5, (tech.harmonics - 3))
|
||||
m.harmonicRadius = 1 //for smoothing function when player holds mouse (for harmonicAtomic)
|
||||
@@ -1548,7 +1547,11 @@ const m = {
|
||||
}
|
||||
m.pushMobs360(radius);
|
||||
}
|
||||
m.harmonicShield = m.harmonic3Phase
|
||||
if (tech.harmonics === 2) {
|
||||
m.harmonicShield = m.harmonic3Phase
|
||||
} else {
|
||||
m.harmonicShield = m.harmonicAtomic
|
||||
}
|
||||
m.hold = function() {
|
||||
if (m.isHolding) {
|
||||
m.drawHold(m.holdingTarget);
|
||||
@@ -1633,11 +1636,11 @@ const m = {
|
||||
m.drawFieldMeter()
|
||||
|
||||
if (tech.isPerfectBrake) { //cap mob speed around player
|
||||
const range = 160 + 140 * wave + 150 * m.energy
|
||||
const range = 160 + 140 * wave + 200 * m.energy
|
||||
for (let i = 0; i < mob.length; i++) {
|
||||
const distance = Vector.magnitude(Vector.sub(m.pos, mob[i].position))
|
||||
if (distance < range) {
|
||||
const cap = mob[i].isShielded ? 8.5 : 4.5
|
||||
const cap = mob[i].isShielded ? 8 : 4
|
||||
if (mob[i].speed > cap && Vector.dot(mob[i].velocity, Vector.sub(m.pos, mob[i].position)) > 0) { // if velocity is directed towards player
|
||||
Matter.Body.setVelocity(mob[i], Vector.mult(Vector.normalise(mob[i].velocity), cap)); //set velocity to cap, but keep the direction
|
||||
}
|
||||
|
||||
10
js/spawn.js
10
js/spawn.js
@@ -1194,10 +1194,12 @@ const spawn = {
|
||||
//teleport everything to center
|
||||
function toMe(who, where, range) {
|
||||
for (let i = 0, len = who.length; i < len; i++) {
|
||||
const SUB = Vector.sub(who[i].position, where)
|
||||
const DISTANCE = Vector.magnitude(SUB)
|
||||
if (DISTANCE < range) {
|
||||
Matter.Body.setPosition(who[i], where)
|
||||
if (!who[i].isNotHoldable) {
|
||||
const SUB = Vector.sub(who[i].position, where)
|
||||
const DISTANCE = Vector.magnitude(SUB)
|
||||
if (DISTANCE < range) {
|
||||
Matter.Body.setPosition(who[i], where)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
46
js/tech.js
46
js/tech.js
@@ -165,7 +165,7 @@
|
||||
if (tech.isLowEnergyDamage) dmg *= 1 + Math.max(0, 1 - m.energy) * 0.5
|
||||
if (tech.isMaxEnergyTech) dmg *= 1.5
|
||||
if (tech.isEnergyNoAmmo) dmg *= 1.6
|
||||
if (tech.isDamageForGuns) dmg *= 1 + 0.1 * b.inventory.length
|
||||
if (tech.isDamageForGuns) dmg *= 1 + 0.12 * b.inventory.length
|
||||
if (tech.isLowHealthDmg) dmg *= 1 + 0.5 * Math.max(0, 1 - m.health)
|
||||
if (tech.isHarmDamage && m.lastHarmCycle + 600 > m.cycle) dmg *= 3;
|
||||
if (tech.isEnergyLoss) dmg *= 1.55;
|
||||
@@ -250,7 +250,7 @@
|
||||
},
|
||||
{
|
||||
name: "arsenal",
|
||||
description: "increase <strong class='color-d'>damage</strong> by <strong>10%</strong><br>for each <strong class='color-g'>gun</strong> in your inventory",
|
||||
description: "increase <strong class='color-d'>damage</strong> by <strong>12%</strong><br>for each <strong class='color-g'>gun</strong> in your inventory",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
frequency: 2,
|
||||
@@ -2572,7 +2572,7 @@
|
||||
},
|
||||
{
|
||||
name: "Ψ(t) collapse",
|
||||
description: "enter an <strong class='alt'>alternate reality</strong> after you <strong class='color-r'>research</strong><br>spawn <strong>15</strong> <strong class='color-r'>research</strong>",
|
||||
description: "enter an <strong class='alt'>alternate reality</strong> after you <strong class='color-r'>research</strong><br>spawn <strong>16</strong> <strong class='color-r'>research</strong>",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
@@ -2583,7 +2583,7 @@
|
||||
requires: "not quantum immortality, many-worlds, non-unitary",
|
||||
effect() {
|
||||
tech.isResearchReality = true;
|
||||
for (let i = 0; i < 15; i++) powerUps.spawn(m.pos.x + Math.random() * 60, m.pos.y + Math.random() * 60, "research", false);
|
||||
for (let i = 0; i < 16; i++) powerUps.spawn(m.pos.x + Math.random() * 60, m.pos.y + Math.random() * 60, "research", false);
|
||||
},
|
||||
remove() {
|
||||
tech.isResearchReality = false;
|
||||
@@ -2712,25 +2712,6 @@
|
||||
},
|
||||
remove() {}
|
||||
},
|
||||
{
|
||||
name: "WIMPs",
|
||||
//<strong class='color-harm'>harmful</strong>
|
||||
description: "a <strong class='color-harm'>harmful</strong> particle slowly <strong>chases</strong> you<br>spawn <strong>2-6</strong> <strong class='color-r'>research</strong> at the end of each <strong>level</strong>",
|
||||
maxCount: 9,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
frequencyDefault: 1,
|
||||
allowed() {
|
||||
return true
|
||||
},
|
||||
requires: "",
|
||||
effect: () => {
|
||||
tech.wimpCount++
|
||||
},
|
||||
remove() {
|
||||
tech.wimpCount = 0
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "bubble fusion",
|
||||
description: "after destroying a mob's natural <strong>shield</strong><br>spawn <strong>1-2</strong> <strong class='color-h'>heals</strong>, <strong class='color-g'>ammo</strong>, or <strong class='color-r'>research</strong>",
|
||||
@@ -5193,6 +5174,25 @@
|
||||
tech.pilotForce = 0.00002
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "WIMPs",
|
||||
description: "a <strong class='color-harm'>harmful</strong> particle slowly <strong>chases</strong> you<br>spawn <strong>3-9</strong> <strong class='color-r'>research</strong> at the end of each <strong>level</strong>",
|
||||
isFieldTech: true,
|
||||
maxCount: 9,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
frequencyDefault: 1,
|
||||
allowed() {
|
||||
return m.fieldUpgrades[m.fieldMode].name === "wormhole"
|
||||
},
|
||||
requires: "wormhole",
|
||||
effect: () => {
|
||||
tech.wimpCount++
|
||||
},
|
||||
remove() {
|
||||
tech.wimpCount = 0
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "cosmic string",
|
||||
description: "<strong>stun</strong> and do <strong class='color-p'>radioactive</strong> <strong class='color-d'>damage</strong> to <strong>mobs</strong><br>if you tunnel through them with a <strong class='color-worm'>wormhole</strong>",
|
||||
|
||||
98
todo.txt
98
todo.txt
@@ -1,58 +1,18 @@
|
||||
******************************************************** NEXT PATCH ********************************************************
|
||||
|
||||
over all game difficulty scaling occurs faster
|
||||
your damage will feel lower, and you will take more harm,
|
||||
so you should probably play on a lower difficulty
|
||||
|
||||
tech: Higgs manism gives 50% reduced fire delay instead of harm reduction
|
||||
tech: inertial frame is removed
|
||||
tech: automatic is now a junk tech
|
||||
|
||||
balance:
|
||||
dead reckoning gives 36% damage when at rest (was 30%)
|
||||
overcharge gives 10 more energy, but adds 10 junk tech
|
||||
1st ionization energy gives 6 energy per heal (was 5)
|
||||
dormancy increases damage by 100% but lowers it by 33% if no recent kills (was +50%, -15%)
|
||||
torpor decreases harm by 66% increases harm by 15% if no recent kills (was -50%, +10%)
|
||||
Ψ(t) collapse spawns 3 more research, so it's at 15
|
||||
fragmentation gives 30% more nails for railgun
|
||||
ammonium nitrate +25% (was 20%)
|
||||
generalist gives 8 guns (was 6)
|
||||
arsenal gives 10% per gun (was 14%)
|
||||
rivet gun fires 25% faster, rivets are 15% larger
|
||||
shotgun slug is 33% bigger
|
||||
missile bot fires 10% more often
|
||||
tinsellated flagella gives 40% speed increase (was 50%), base spore speed is 10% faster
|
||||
beamSplitter has a 20% lower divergence
|
||||
nano manufacturing tech is all buffed 15%
|
||||
traversable geodesics gives 2 guns and ammo (was 1)
|
||||
mines have 25% more nails, laser mines use 20% less energy sentry mines last 33% seconds longer
|
||||
zoospore vector has an 11% chance to spawn (was 9%)
|
||||
negentropy spawns a heal for every 33 missing health (was 50 health)
|
||||
exciton-lattice gives 60% damage
|
||||
thermocouple spawns 1-8 ice-IX (was 1-5)
|
||||
WIMPs spawn 2-6 research (was 2-3)
|
||||
quantum immortality reduces harm by 33% (was 23%)
|
||||
commodities exchange gives 10 power ups (was 8)
|
||||
super balls are 17% bigger (this means they do about 25% more damage)
|
||||
exothermic process increases damage by (was 45%)
|
||||
heat engine increases damage by 50% (was 40%)
|
||||
replication gives 10% duplication chance (was 8%)
|
||||
stimulated emission gives 22% duplication chance
|
||||
futures exchange gives 4.7% duplication chance per cancel (was 4.3%)
|
||||
needles are 10% slower and do 15% more damage
|
||||
|
||||
bug fixes:
|
||||
reduced tolerances text rewritten to clarify that it gives more ammo per ammo pack
|
||||
hazards on horizontal flipped levels now correctly do damage
|
||||
ship mode aims properly after you die
|
||||
although it still doesn't reset
|
||||
experiment mode selections are highlighted better
|
||||
tech: WIMPs now requires wormhole
|
||||
gives 3-9 research now (was 2-3)
|
||||
|
||||
tech: eddy current brake - is 15% larger and caps mob speeds at 20% slower
|
||||
|
||||
bug fixes
|
||||
|
||||
******************************************************** BUGS ********************************************************
|
||||
|
||||
sharing 1 stack of spherical harmonics doesn't activate visually
|
||||
https://landgreen.github.io/sidescroller/index.html?&tech0=crystallizer&tech1=thermoelectric%20effect&tech2=thermoelectric%20effect&tech3=spherical%20harmonics&tech4=expansion&tech5=triple%20point&tech6=triple%20point&tech7=flux%20pinning&field=standing%20wave%20harmonics&difficulty=4&level=0&noPower=0
|
||||
|
||||
a couple times people have reported the final boss dropping extra bodies on death
|
||||
|
||||
figure out how to undo ship mode
|
||||
@@ -75,8 +35,36 @@ is there a way to check if the player is stuck inside the map or block
|
||||
|
||||
(intermittent, but almost every time) bug - capping the fps causes random slow downs, that can be fixed with pause
|
||||
|
||||
******************************************************** LEVELS ********************************************************
|
||||
|
||||
labs - procedural generation
|
||||
science theme, with a cool technology showcased
|
||||
layout:
|
||||
6 total rooms
|
||||
3x2, 2x3, 4 2, 2 4
|
||||
1500px, 3000px per room
|
||||
room types
|
||||
entrance - no mobs, starting power ups`
|
||||
exit - plenty of mobs
|
||||
up, down - 2 paired rooms - boost, elevator, portal
|
||||
boss - standard random boss spawns
|
||||
empty - just a dead end - possible duplication boss spawn location
|
||||
button - opens door to exit room
|
||||
room ideas -
|
||||
gravity room
|
||||
portal room
|
||||
endlessly falling blocks down a slide, that the player has to climb up
|
||||
portal + rotor + falling blocks = perpetual motion
|
||||
laser room
|
||||
slime radiation room
|
||||
|
||||
******************************************************** TODO ********************************************************
|
||||
|
||||
standing wave harmonics - can block too often on the same mob if you push it into a corner
|
||||
add a small cooldown
|
||||
return to normal knock back // 4
|
||||
let standing wave harmonics get tech decorrelation
|
||||
|
||||
* inductive coupling - sucks without catabolism, too much delayed gratification. should probably be bundled with transceiver chip
|
||||
|
||||
tech: cloaking field - decrease/increase cooldown on sneak attack?
|
||||
@@ -160,21 +148,6 @@ tech plasma field - plasma field becomes an aoe damage field with the same radiu
|
||||
200% more energy drain, 100% more damage
|
||||
draw a square (or two) that rapidly spins
|
||||
|
||||
new level: procedural generation
|
||||
several small rooms are linked by portals
|
||||
the portals have a randomized pattern
|
||||
the rooms can be set out in a grid and linked by physical doors,tunnels,wells
|
||||
choose bosses that can move though walls, so it can track you while you portal
|
||||
the map shuffles it's pattern when the player get to a button
|
||||
shuffle portals or shuffle the physical layout of rooms
|
||||
and then have the player go back through to get to the end?
|
||||
gravity room
|
||||
portal room
|
||||
endlessly falling blocks down a slide, that the player has to climb
|
||||
portal + rotor + falling blocks = perpetual motion
|
||||
laser room
|
||||
slime radiation room
|
||||
|
||||
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
|
||||
@@ -397,6 +370,7 @@ possible names for tech
|
||||
counterfactual - something false
|
||||
axion - maybe a 3rd dark matter type tech
|
||||
Pigeonhole principle - if there are several things that are matched up
|
||||
regression to the mean
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user