Halbach array

tech: Halbach array - throwing a block will also throw other nearby blocks

tech non-renewables now spawns ammo, but ammo can't be picked up
grenade tech that cause multiple explosions have less knock back for mobs
constraint:  0->0.5x healing
wormhole 7->8% duplication
many worlds takes a few frames between each tech given

bug fixes
 harpoon ammo gain on autonomous defense fixed
 constraints are properly randomized again
This commit is contained in:
landgreen
2024-10-20 16:01:05 -07:00
parent 9c2c9be4ed
commit 8bb8222b73
10 changed files with 416 additions and 298 deletions

View File

@@ -917,7 +917,7 @@ const tech = {
//give the tech that was found for this gun
if (gunTechPool.length) {
const index = Math.floor(Math.random() * gunTechPool.length)
simulation.inGameConsole(`<span class='color-var'>tech</span>.giveTech("<span class='color-text'>${tech.tech[gunTechPool[index]].name}</span>")`, 360)
simulation.inGameConsole(`<span class='color-var'>tech</span>.giveTech("<strong class='color-text'>${tech.tech[gunTechPool[index]].name}</strong>")`, 360)
tech.giveTech(gunTechPool[index]) // choose from the gun pool
simulation.boldActiveGunHUD();
}
@@ -1103,7 +1103,7 @@ const tech = {
},
{
name: "non-renewables",
description: `<strong>2x</strong> <strong class='color-d'>damage</strong><br>${powerUps.orb.ammo()} can't <strong>spawn</strong>`,
description: `<strong>2x</strong> <strong class='color-d'>damage</strong><br>you can't pickup ${powerUps.orb.ammo()}`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -1116,15 +1116,17 @@ const tech = {
effect() {
tech.damage *= this.damage
tech.isEnergyNoAmmo = true;
powerUps.ammo.color = "#c1c6c9"//"#abb3b8"// "#535e63"
},
remove() {
if (this.count && m.alive) tech.damage /= this.damage
tech.isEnergyNoAmmo = false;
powerUps.ammo.color = "#467"
}
},
{
name: "desublimated ammunition",
description: `if <strong>crouching</strong><br>alternating shots use no <strong class='color-ammo'>ammo</strong>`,
description: `if <strong>crouching</strong><br>alternating shots cost no <strong class='color-ammo'>ammo</strong>`,
maxCount: 1,
count: 0,
frequency: 1,
@@ -2419,6 +2421,24 @@ const tech = {
tech.blockDamage = 0.075
}
},
{
name: "Halbach array",
description: "throwing a <strong class='color-block'>block</strong> will<br>also throw other nearby <strong class='color-block'>blocks</strong>",
maxCount: 1,
count: 0,
frequency: 1,
frequencyDefault: 1,
allowed() {
return (tech.blockDamage > 0.075 || tech.isPrinter) && m.fieldMode !== 8 && m.fieldMode !== 9 && !tech.isTokamak
},
requires: "mass driver, printer, not wormhole, pilot wave, tokamak",
effect() {
tech.isGroupThrow = true
},
remove() {
tech.isGroupThrow = false
}
},
{
name: "inflation",
link: `<a target="_blank" href='https://en.wikipedia.org/wiki/Inflation_(cosmology)' class="link">inflation</a>`,
@@ -2430,7 +2450,7 @@ const tech = {
allowed() {
return (tech.blockDamage > 0.075 || tech.isPrinter) && m.fieldMode !== 8 && m.fieldMode !== 9 && !tech.isTokamak
},
requires: "mass driver, not pilot wave, tokamak, wormhole",
requires: "mass driver, printer, not pilot wave, tokamak, wormhole",
effect() {
tech.isAddBlockMass = true
},
@@ -2448,7 +2468,7 @@ const tech = {
allowed() {
return (tech.blockDamage > 0.075 || tech.isPrinter) && m.fieldUpgrades[m.fieldMode].name !== "pilot wave" && m.fieldUpgrades[m.fieldMode].name !== "wormhole" && !tech.isTokamak
},
requires: "mass driver, not pilot wave, tokamak, wormhole",
requires: "mass driver, printer, not pilot wave, tokamak, wormhole",
effect() {
tech.isBlockRestitution = true
},
@@ -2466,7 +2486,7 @@ const tech = {
allowed() {
return (tech.blockDamage > 0.075 || tech.isPrinter) && !tech.nailsDeathMob && !tech.sporesOnDeath && !tech.isExplodeMob && !tech.botSpawner && !tech.iceIXOnDeath
},
requires: "mass driver, no other mob death tech",
requires: "mass driver, printer, no other mob death tech",
effect() {
tech.isMobBlockFling = true
},
@@ -2486,7 +2506,7 @@ const tech = {
allowed() {
return (tech.blockDamage > 0.075 || tech.isPrinter) && m.fieldUpgrades[m.fieldMode].name !== "pilot wave" && !tech.isTokamak
},
requires: "mass driver, not pilot wave, tokamak",
requires: "mass driver, printer, not pilot wave, tokamak",
effect() {
tech.isBlockPowerUps = true
},
@@ -2688,7 +2708,7 @@ const tech = {
},
requires: "",
effect() {
m.collisionImmuneCycles += 480;
m.collisionImmuneCycles += 420;
if (m.immuneCycle < m.cycle + m.collisionImmuneCycles) m.immuneCycle = m.cycle + m.collisionImmuneCycles; //player is immune to damage
},
remove() {
@@ -5994,9 +6014,9 @@ const tech = {
frequency: 2,
frequencyDefault: 2,
allowed() {
return tech.haveGunCheck("grenades") && !tech.isVacuumBomb && !tech.isSmartRadius
return tech.haveGunCheck("grenades") && !tech.isVacuumBomb && !tech.isSmartRadius && !tech.isEnergyHealth
},
requires: "grenades, not vacuum bomb, shaped charges",
requires: "grenades, not vacuum bomb, shaped charges, mass-energy",
effect() {
tech.isImmuneExplosion = true;
tech.isRPG = true;
@@ -7281,7 +7301,7 @@ const tech = {
frequency: 1,
frequencyDefault: 1,
allowed() {
return ((tech.haveGunCheck("wave") && tech.isInfiniteWaveAmmo) || tech.haveGunCheck("laser") || (tech.haveGunCheck("harpoon") && !tech.isRailGun)) && !tech.isEnergyNoAmmo
return ((tech.haveGunCheck("wave") && tech.isInfiniteWaveAmmo) || tech.haveGunCheck("laser") || (tech.haveGunCheck("harpoon") && !tech.isRailGun))
},
requires: "harpoon, laser, wave, frequency, not railgun, non-renewables",
effect() {