endless experimental mode

"labs" is now in the normal map rotation
experimental mode is now endless  (no gauntlet, finalBoss, ...)
fixed a bug that was giving experimental mode full life at the start

perfect diamagnetism field has a 10% larger radius and arc
the 1/15 second cooldown after blocking with perfect diamagnetism no longer stops you from blocking
  it still disables field damage effects and player recoil after blocking  (for 1/15 of a second)

mass-energy now works with catabolism by removing max energy to make ammo
ergodicity - now reduces difficulty by 2 levels and prevent healing from heal power ups (was all healing)
Noether violation gives even more forward recoil
blinkBoss has more health, but it's much slower at easy difficulty
This commit is contained in:
landgreen
2021-08-01 06:33:53 -07:00
parent 1a5071cf06
commit 7e6fc208a9
10 changed files with 239 additions and 214 deletions

View File

@@ -333,9 +333,9 @@
frequency: 2,
frequencyDefault: 2,
allowed() {
return (tech.isDamageForGuns || tech.isFireRateForGuns) && (b.inventory.length + 5) < b.guns.length
return (tech.isDamageForGuns || tech.isFireRateForGuns) && b.inventory.length + 5 < b.guns.length
},
requires: "arsenal or active cooling",
requires: "arsenal or active cooling and less than 7 guns",
effect() {
tech.isGunCycle = true;
for (let i = 0; i < 8; i++) powerUps.spawn(m.pos.x + 10 * Math.random(), m.pos.y + 10 * Math.random(), "gun");
@@ -447,9 +447,9 @@
frequency: 1,
frequencyDefault: 1,
allowed() {
return !tech.isEnergyHealth && !tech.isEnergyNoAmmo
return !tech.isEnergyNoAmmo
},
requires: "not mass-energy equivalence or exciton-lattice",
requires: "exciton-lattice",
effect: () => {
tech.isAmmoFromHealth = true;
},
@@ -2189,9 +2189,9 @@
frequency: 1,
frequencyDefault: 1,
allowed() {
return !tech.isZeno && !tech.isAmmoFromHealth && !tech.isNoHeals && !tech.isEnergyLoss && !tech.isPiezo && !tech.isRewindAvoidDeath && !tech.isRewindGun && !tech.isSpeedHarm && m.fieldUpgrades[m.fieldMode].name !== "negative mass field" && !tech.isHealLowHealth && !tech.isTechDamage
return !tech.isZeno && !tech.isNoHeals && !tech.isPiezo && !tech.isRewindAvoidDeath && !tech.isRewindGun && !tech.isTechDamage && !tech.isMutualism
},
requires: "not exothermic, Zeno, piezoelectricity, CPT, 1st law, negative mass, ...",
requires: "not Zeno, ergodicity, piezoelectricity, CPT, rewind gun, antiscience, mutualism",
effect: () => {
m.health = 0
document.getElementById("health").style.display = "none"
@@ -2202,13 +2202,15 @@
m.displayHealth();
},
remove() {
tech.isEnergyHealth = false;
document.getElementById("health").style.display = "inline"
document.getElementById("health-bg").style.display = "inline"
document.getElementById("dmg").style.backgroundColor = "#f67";
m.health = Math.max(Math.min(m.maxHealth, m.energy), 0.1);
simulation.mobDmgColor = "rgba(255,0,0,0.7)"
m.displayHealth();
if (tech.isEnergyHealth) {
tech.isEnergyHealth = false;
document.getElementById("health").style.display = "inline"
document.getElementById("health-bg").style.display = "inline"
document.getElementById("dmg").style.backgroundColor = "#f67";
m.health = Math.max(Math.min(m.maxHealth, m.energy), 0.1);
simulation.mobDmgColor = "rgba(255,0,0,0.7)"
m.displayHealth();
}
}
},
{
@@ -2219,9 +2221,9 @@
frequency: 2,
frequencyDefault: 2,
allowed() {
return tech.isEnergyHealth && !tech.isNoHeals
return tech.isEnergyHealth
},
requires: "mass-energy equivalence, not ergodicity",
requires: "mass-energy equivalence",
effect() {
tech.healGiveMaxEnergy = true; //tech.healMaxEnergyBonus given from heal power up
powerUps.heal.color = "#0ae"
@@ -2282,9 +2284,9 @@
frequency: 2,
frequencyDefault: 2,
allowed() {
return true //m.maxEnergy > 1 || tech.isEnergyRecovery || tech.isPiezo || tech.energySiphon > 0 || tech.isBlockExplosion
return true
},
requires: "", //"increased energy regen or max energy",
requires: "",
effect: () => {
tech.isEnergyDamage = true
},
@@ -2300,9 +2302,9 @@
frequency: 1,
frequencyDefault: 1,
allowed() {
return true //(tech.haveGunCheck("nail gun") && tech.isIceCrystals) || tech.haveGunCheck("laser") || m.fieldUpgrades[m.fieldMode].name === "plasma torch" || m.fieldUpgrades[m.fieldMode].name === "nano-scale manufacturing" || m.fieldUpgrades[m.fieldMode].name === "pilot wave"
return true
},
requires: "", //"energy based damage",
requires: "",
effect() {
tech.isEnergyNoAmmo = true;
},
@@ -2318,9 +2320,9 @@
frequency: 2,
frequencyDefault: 2,
allowed() {
return !tech.isEnergyHealth
return true
},
requires: "not mass-energy equivalence",
requires: "",
effect() {
tech.isEnergyLoss = true;
},
@@ -2400,11 +2402,11 @@
},
requires: "a source of overfilled energy",
effect() {
tech.overfillDrain = 0.87 //70% = 1-(1-0.75)/(1-0.15) //92% = 1-(1-0.75)/(1-0.87)
tech.overfillDrain = 0.85 //70% = 1-(1-0.75)/(1-0.15) //92% = 1-(1-0.75)/(1-0.87)
tech.addJunkTechToPool(18)
},
remove() {
tech.overfillDrain = 0.75
tech.overfillDrain = 0.7
if (this.count > 0) tech.removeJunkTechFromPool(18)
}
},
@@ -2453,9 +2455,9 @@
frequencyDefault: 1,
isHealTech: true,
allowed() {
return !tech.isEnergyHealth && !tech.isNoHeals
return !tech.isEnergyHealth
},
requires: "not mass-energy equivalence, ergodicity",
requires: "not mass-energy equivalence",
effect() {
tech.isHealthRecovery = true;
},
@@ -2556,16 +2558,16 @@
},
{
name: "entropy exchange",
description: "<strong class='color-h'>heal</strong> for <strong>3%</strong> of <strong class='color-d'>damage</strong> done<br>take <strong>8%</strong> more <strong class='color-harm'>harm</strong>",
description: "<strong class='color-h'>heal</strong> for <strong>3%</strong> of <strong class='color-d'>damage</strong> done<br>take <strong>10%</strong> more <strong class='color-harm'>harm</strong>",
maxCount: 9,
count: 0,
frequency: 2,
frequencyDefault: 2,
isHealTech: true,
allowed() {
return !tech.isEnergyHealth && !tech.isNoHeals
return !tech.isEnergyHealth
},
requires: "not mass-energy equivalence, ergodicity",
requires: "not mass-energy equivalence",
effect() {
tech.healthDrain += 0.03;
},
@@ -2599,9 +2601,9 @@
frequency: 2,
frequencyDefault: 2,
allowed() {
return !tech.isEnergyHealth && !tech.isNoHeals
return !tech.isEnergyHealth
},
requires: "not mass-energy equivalence, ergodicity",
requires: "not mass-energy equivalence",
effect() {
tech.isFallingDamage = true;
m.setMaxHealth();
@@ -2678,9 +2680,9 @@
isNonRefundable: true,
isBadRandomOption: true,
allowed() {
return !tech.isNoHeals
return true
},
requires: "not ergodicity",
requires: "",
effect() {
for (let i = 0; i < 11; i++) powerUps.spawn(m.pos.x + 60 * (Math.random() - 0.5), m.pos.y + 60 * (Math.random() - 0.5), "heal");
for (let i = 0, len = tech.tech.length; i < len; i++) {
@@ -3451,15 +3453,15 @@
},
{
name: "ergodicity",
description: "reduce combat <strong>difficulty</strong> by <strong>2 levels</strong><br>all <strong class='color-h'>healing</strong> has <strong>no</strong> effect",
description: "reduce combat <strong>difficulty</strong> by <strong>2 levels</strong><br><strong class='color-h'>heal</strong> power ups have <strong>no</strong> effect",
maxCount: 1,
count: 0,
frequency: 1,
frequencyDefault: 1,
allowed() {
return level.onLevel > 1 && m.health > m.maxHealth - 0.1 && !tech.isEnergyHealth
return level.onLevel > 1 && !tech.isEnergyHealth
},
requires: "past levels 1, full health, not mass-energy",
requires: "past levels 1, not mass-energy",
effect() {
tech.isNoHeals = true;
level.difficultyDecrease(simulation.difficultyMode * 2)