nano bots
catabolism - 2% (was 2.3%) of max health removed many worlds - spawns 2 rerolls (was 1) pilot wave field- now has access to several mods that normally require other fields this plus the fragmenting block mod are a big buff for late game pilot wave let me know if it is too strong mod nano-scale: bot prototypes - upgrade a bot type and build 2 of that bot mod nano-scale: bot manufacturing - build 3 random bots these mods don't show up in custom
This commit is contained in:
@@ -1030,7 +1030,7 @@ const b = {
|
|||||||
},
|
},
|
||||||
onEnd() {
|
onEnd() {
|
||||||
if (mod.isMutualism && this.isMutualismActive && !mod.isEnergyHealth) {
|
if (mod.isMutualism && this.isMutualismActive && !mod.isEnergyHealth) {
|
||||||
mech.health += 0.01
|
mech.health += 0.005
|
||||||
if (mech.health > mech.maxHealth) mech.health = mech.maxHealth;
|
if (mech.health > mech.maxHealth) mech.health = mech.maxHealth;
|
||||||
mech.displayHealth();
|
mech.displayHealth();
|
||||||
}
|
}
|
||||||
@@ -1111,7 +1111,7 @@ const b = {
|
|||||||
World.add(engine.world, bullet[bIndex]); //add bullet to world
|
World.add(engine.world, bullet[bIndex]); //add bullet to world
|
||||||
|
|
||||||
if (mod.isMutualism && mech.health > 0.02) {
|
if (mod.isMutualism && mech.health > 0.02) {
|
||||||
mech.health -= 0.01
|
mech.health -= 0.005
|
||||||
mech.displayHealth();
|
mech.displayHealth();
|
||||||
bullet[bIndex].isMutualismActive = true
|
bullet[bIndex].isMutualismActive = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ function collisionChecks(event) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
mech.damage(dmg);
|
mech.damage(dmg);
|
||||||
if (mod.isPiezo) mech.energy += 200;
|
if (mod.isPiezo) mech.energy += 2;
|
||||||
if (mod.isBayesian) powerUps.ejectMod()
|
if (mod.isBayesian) powerUps.ejectMod()
|
||||||
if (mob[k].onHit) mob[k].onHit(k);
|
if (mob[k].onHit) mob[k].onHit(k);
|
||||||
mech.immuneCycle = mech.cycle + mod.collisionImmuneCycles; //player is immune to collision damage for 30 cycles
|
mech.immuneCycle = mech.cycle + mod.collisionImmuneCycles; //player is immune to collision damage for 30 cycles
|
||||||
|
|||||||
@@ -588,7 +588,7 @@ const game = {
|
|||||||
if (mod.isMutualism && !mod.isEnergyHealth) {
|
if (mod.isMutualism && !mod.isEnergyHealth) {
|
||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].isMutualismActive) {
|
if (bullet[i].isMutualismActive) {
|
||||||
mech.health += 0.01
|
mech.health += 0.005
|
||||||
if (mech.health > mech.maxHealth) mech.health = mech.maxHealth;
|
if (mech.health > mech.maxHealth) mech.health = mech.maxHealth;
|
||||||
mech.displayHealth();
|
mech.displayHealth();
|
||||||
}
|
}
|
||||||
|
|||||||
449
js/mods.js
449
js/mods.js
@@ -163,7 +163,7 @@ const mod = {
|
|||||||
allowed() {
|
allowed() {
|
||||||
return mod.isEnergyLoss && mech.maxEnergy === 1 && !mod.isMissileField && !mod.isSporeField && !mod.isRewindAvoidDeath
|
return mod.isEnergyLoss && mech.maxEnergy === 1 && !mod.isMissileField && !mod.isSporeField && !mod.isRewindAvoidDeath
|
||||||
},
|
},
|
||||||
requires: "heat engine, not max energy increase, CPT, missile or spore nano-scale",
|
requires: "exothermic process, not max energy increase, CPT, missile or spore nano-scale",
|
||||||
effect() {
|
effect() {
|
||||||
mod.isMaxEnergyMod = true;
|
mod.isMaxEnergyMod = true;
|
||||||
mech.setMaxEnergy()
|
mech.setMaxEnergy()
|
||||||
@@ -181,7 +181,7 @@ const mod = {
|
|||||||
allowed() {
|
allowed() {
|
||||||
return mod.isEnergyLoss && mech.maxEnergy < 1.1
|
return mod.isEnergyLoss && mech.maxEnergy < 1.1
|
||||||
},
|
},
|
||||||
requires: "heat engine",
|
requires: "exothermic process",
|
||||||
effect() {
|
effect() {
|
||||||
mod.isLowEnergyDamage = true;
|
mod.isLowEnergyDamage = true;
|
||||||
},
|
},
|
||||||
@@ -374,7 +374,7 @@ const mod = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "fragmentation",
|
name: "fragmentation",
|
||||||
description: "detonation or collision ejects <strong>nails</strong><br><em>rail gun, grenades, shotgun slugs, blocks</em>",
|
description: "detonation or collisions with mobs eject <strong>nails</strong><br><em>blocks, rail gun, grenades, shotgun slugs</em>",
|
||||||
maxCount: 9,
|
maxCount: 9,
|
||||||
count: 0,
|
count: 0,
|
||||||
allowed() {
|
allowed() {
|
||||||
@@ -1113,7 +1113,7 @@ const mod = {
|
|||||||
requires: "not mass-energy equivalence",
|
requires: "not mass-energy equivalence",
|
||||||
effect() {
|
effect() {
|
||||||
mod.isPiezo = true;
|
mod.isPiezo = true;
|
||||||
mech.energy += 200;
|
mech.energy += 2;
|
||||||
},
|
},
|
||||||
remove() {
|
remove() {
|
||||||
mod.isPiezo = false;
|
mod.isPiezo = false;
|
||||||
@@ -1635,7 +1635,7 @@ const mod = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "catabolism",
|
name: "catabolism",
|
||||||
description: "gain <strong class='color-g'>ammo</strong> when you <strong>fire</strong> while <strong>out</strong> of <strong class='color-g'>ammo</strong><br>drains <strong>2.3%</strong> of <strong>max health</strong>",
|
description: "gain <strong class='color-g'>ammo</strong> when you <strong>fire</strong> while <strong>out</strong> of <strong class='color-g'>ammo</strong><br>drains <strong>2%</strong> of <strong>max health</strong>",
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
allowed() {
|
allowed() {
|
||||||
@@ -1643,7 +1643,7 @@ const mod = {
|
|||||||
},
|
},
|
||||||
requires: "not mass-energy equivalence<br>not exciton-lattice",
|
requires: "not mass-energy equivalence<br>not exciton-lattice",
|
||||||
effect: () => {
|
effect: () => {
|
||||||
mod.isAmmoFromHealth = 0.023;
|
mod.isAmmoFromHealth = 0.02;
|
||||||
},
|
},
|
||||||
remove() {
|
remove() {
|
||||||
mod.isAmmoFromHealth = 0;
|
mod.isAmmoFromHealth = 0;
|
||||||
@@ -1739,13 +1739,13 @@ const mod = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "many-worlds",
|
name: "many-worlds",
|
||||||
description: "if you have no <strong class='color-r'>rerolls</strong> spawn one<br>after choosing a <strong class='color-m'>mod</strong>, <strong class='color-f'>field</strong>, or <strong class='color-g'>gun</strong>",
|
description: "after choosing a <strong class='color-m'>mod</strong>, <strong class='color-f'>field</strong>, or <strong class='color-g'>gun</strong><br>if you have no <strong class='color-r'>rerolls</strong> spawn <strong>2</strong>",
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
allowed() {
|
allowed() {
|
||||||
return powerUps.reroll.rerolls < 3 && !mod.isSuperDeterminism && !mod.isRerollHaste
|
return powerUps.reroll.rerolls === 0 && !mod.isSuperDeterminism && !mod.isRerollHaste
|
||||||
},
|
},
|
||||||
requires: "not superdeterminism or Ψ(t) collapse<br>fewer than 3 rerolls",
|
requires: "not superdeterminism or Ψ(t) collapse<br>no rerolls",
|
||||||
effect: () => {
|
effect: () => {
|
||||||
mod.manyWorlds = true;
|
mod.manyWorlds = true;
|
||||||
},
|
},
|
||||||
@@ -2597,7 +2597,7 @@ const mod = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "mutualism",
|
name: "mutualism",
|
||||||
description: "increase <strong class='color-p' style='letter-spacing: 2px;'>spore</strong> <strong class='color-d'>damage</strong> by <strong>100%</strong><br><strong class='color-p' style='letter-spacing: 2px;'>spores</strong> borrow <strong>1</strong> <strong>health</strong> until they <strong>die</strong>",
|
description: "increase <strong class='color-p' style='letter-spacing: 2px;'>spore</strong> <strong class='color-d'>damage</strong> by <strong>100%</strong><br><strong class='color-p' style='letter-spacing: 2px;'>spores</strong> borrow <strong>0.5</strong> <strong>health</strong> until they <strong>die</strong>",
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
allowed() {
|
allowed() {
|
||||||
@@ -2995,6 +2995,40 @@ const mod = {
|
|||||||
//************************************************** field
|
//************************************************** field
|
||||||
//************************************************** mods
|
//************************************************** mods
|
||||||
//**************************************************
|
//**************************************************
|
||||||
|
{
|
||||||
|
name: "bremsstrahlung radiation",
|
||||||
|
description: "<strong>blocking</strong> with <strong>standing wave harmonics</strong><br> does <strong class='color-d'>damage</strong> to mobs",
|
||||||
|
maxCount: 9,
|
||||||
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "standing wave harmonics"
|
||||||
|
},
|
||||||
|
requires: "standing wave harmonics",
|
||||||
|
effect() {
|
||||||
|
mod.blockDmg += 0.75 //if you change this value also update the for loop in the electricity graphics in mech.pushMass
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mod.blockDmg = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "frequency resonance",
|
||||||
|
description: "<strong>standing wave harmonics</strong> shield is retuned<br>increase <strong>size</strong> and <strong>blocking</strong> efficiency by <strong>40%</strong>",
|
||||||
|
maxCount: 9,
|
||||||
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "standing wave harmonics"
|
||||||
|
},
|
||||||
|
requires: "standing wave harmonics",
|
||||||
|
effect() {
|
||||||
|
mech.fieldRange += 175 * 0.2
|
||||||
|
mech.fieldShieldingScale *= 0.55
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mech.fieldRange = 175;
|
||||||
|
mech.fieldShieldingScale = 1;
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "flux pinning",
|
name: "flux pinning",
|
||||||
description: "blocking with <strong>perfect diamagnetism</strong><br><strong>stuns</strong> mobs for <strong>+1</strong> second",
|
description: "blocking with <strong>perfect diamagnetism</strong><br><strong>stuns</strong> mobs for <strong>+1</strong> second",
|
||||||
@@ -3043,196 +3077,91 @@ const mod = {
|
|||||||
mod.isCrit = false;
|
mod.isCrit = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "timelike world line",
|
|
||||||
description: "<strong>time dilation</strong> doubles your relative time <strong>rate</strong><br>and makes you <strong>immune</strong> to <strong class='color-harm'>harm</strong>",
|
|
||||||
maxCount: 1,
|
|
||||||
count: 0,
|
|
||||||
allowed() {
|
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "time dilation field"
|
|
||||||
},
|
|
||||||
requires: "time dilation field",
|
|
||||||
effect() {
|
|
||||||
mod.isTimeSkip = true;
|
|
||||||
b.setFireCD();
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
mod.isTimeSkip = false;
|
|
||||||
b.setFireCD();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Lorentz transformation",
|
|
||||||
description: "permanently increase your relative time rate<br><strong>move</strong>, <strong>jump</strong>, and <strong>shoot</strong> <strong>40%</strong> faster",
|
|
||||||
maxCount: 1,
|
|
||||||
count: 0,
|
|
||||||
allowed() {
|
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "time dilation field"
|
|
||||||
},
|
|
||||||
requires: "time dilation field",
|
|
||||||
effect() {
|
|
||||||
mod.fastTime = 1.40;
|
|
||||||
mod.fastTimeJump = 1.11;
|
|
||||||
mech.setMovement();
|
|
||||||
b.setFireCD();
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
mod.fastTime = 1;
|
|
||||||
mod.fastTimeJump = 1;
|
|
||||||
mech.setMovement();
|
|
||||||
b.setFireCD();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "time crystals",
|
|
||||||
description: "<strong>quadruple</strong> your default <strong class='color-f'>energy</strong> regeneration",
|
|
||||||
maxCount: 1,
|
|
||||||
count: 0,
|
|
||||||
allowed() {
|
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "time dilation field" && mod.energyRegen !== 0;
|
|
||||||
},
|
|
||||||
requires: "time dilation field",
|
|
||||||
effect: () => {
|
|
||||||
mod.energyRegen = 0.004;
|
|
||||||
mech.fieldRegen = mod.energyRegen;
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
mod.energyRegen = 0.001;
|
|
||||||
mech.fieldRegen = mod.energyRegen;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "plasma jet",
|
|
||||||
description: "increase <strong class='color-plasma'>plasma</strong> <strong>torch's</strong> range by <strong>27%</strong>",
|
|
||||||
maxCount: 9,
|
|
||||||
count: 0,
|
|
||||||
allowed() {
|
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "plasma torch"
|
|
||||||
},
|
|
||||||
requires: "plasma torch",
|
|
||||||
effect() {
|
|
||||||
mod.isPlasmaRange += 0.27;
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
mod.isPlasmaRange = 1;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "plasma-bot",
|
|
||||||
description: "a bot uses <strong class='color-f'>energy</strong> to emit <strong class='color-plasma'>plasma</strong><br>that <strong class='color-d'>damages</strong> and <strong>pushes</strong> mobs",
|
|
||||||
maxCount: 1,
|
|
||||||
count: 0,
|
|
||||||
allowed() {
|
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "plasma torch"
|
|
||||||
},
|
|
||||||
requires: "plasma torch",
|
|
||||||
effect() {
|
|
||||||
mod.plasmaBotCount++;
|
|
||||||
b.plasmaBot();
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
mod.plasmaBotCount = 0;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "degenerate matter",
|
|
||||||
description: "reduce <strong class='color-harm'>harm</strong> by <strong>40%</strong><br>while <strong>negative mass field</strong> is active",
|
|
||||||
maxCount: 1,
|
|
||||||
count: 0,
|
|
||||||
allowed() {
|
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "negative mass field"
|
|
||||||
},
|
|
||||||
requires: "negative mass field",
|
|
||||||
effect() {
|
|
||||||
mod.isHarmReduce = true
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
mod.isHarmReduce = false;
|
|
||||||
// if (mech.fieldUpgrades[mech.fieldMode].name === "negative mass field") mech.setField("negative mass field") //reset harm reduction
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "annihilation",
|
|
||||||
description: "after <strong>touching</strong> mobs, they are <strong>annihilated</strong><br>drains <strong>33%</strong> of maximum <strong class='color-f'>energy</strong>",
|
|
||||||
maxCount: 1,
|
|
||||||
count: 0,
|
|
||||||
allowed() {
|
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "negative mass field"
|
|
||||||
},
|
|
||||||
requires: "negative mass field",
|
|
||||||
effect() {
|
|
||||||
mod.isAnnihilation = true
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
mod.isAnnihilation = false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "negative temperature",
|
|
||||||
description: "<strong>negative mass field</strong> uses <strong class='color-f'>energy</strong><br>to <strong class='color-s'>freeze</strong> each mob caught in it's effect",
|
|
||||||
maxCount: 1,
|
|
||||||
count: 0,
|
|
||||||
allowed() {
|
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "negative mass field"
|
|
||||||
},
|
|
||||||
requires: "negative mass field",
|
|
||||||
effect() {
|
|
||||||
mod.isFreezeMobs = true;
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
mod.isFreezeMobs = false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "bremsstrahlung radiation",
|
|
||||||
description: "<strong>blocking</strong> with <strong>standing wave harmonics</strong><br> does <strong class='color-d'>damage</strong> to mobs",
|
|
||||||
maxCount: 9,
|
|
||||||
count: 0,
|
|
||||||
allowed() {
|
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "standing wave harmonics"
|
|
||||||
},
|
|
||||||
requires: "standing wave harmonics",
|
|
||||||
effect() {
|
|
||||||
mod.blockDmg += 0.75 //if you change this value also update the for loop in the electricity graphics in mech.pushMass
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
mod.blockDmg = 0;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "frequency resonance",
|
|
||||||
description: "<strong>standing wave harmonics</strong> shield is retuned<br>increase <strong>size</strong> and <strong>blocking</strong> efficiency by <strong>40%</strong>",
|
|
||||||
maxCount: 9,
|
|
||||||
count: 0,
|
|
||||||
allowed() {
|
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "standing wave harmonics"
|
|
||||||
},
|
|
||||||
requires: "standing wave harmonics",
|
|
||||||
effect() {
|
|
||||||
mech.fieldRange += 175 * 0.2
|
|
||||||
mech.fieldShieldingScale *= 0.55
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
mech.fieldRange = 175;
|
|
||||||
mech.fieldShieldingScale = 1;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "pair production",
|
name: "pair production",
|
||||||
description: "<strong>power ups</strong> overload your <strong class='color-f'>energy</strong><br>to <strong>250%</strong> of your maximum <strong class='color-f'>energy</strong>",
|
description: "<strong>power ups</strong> overfill your <strong class='color-f'>energy</strong> by <strong>300</strong>",
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "nano-scale manufacturing" || mech.fieldUpgrades[mech.fieldMode].name === "pilot wave"
|
||||||
|
},
|
||||||
|
requires: "nano-scale manufacturing",
|
||||||
|
effect: () => {
|
||||||
|
mod.isMassEnergy = true // used in mech.grabPowerUp
|
||||||
|
mech.energy += 3
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mod.isMassEnergy = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "bot manufacturing",
|
||||||
|
description: "use <strong>nano-scale manufacturing</strong><br>to build <strong>3</strong> random <strong>bots</strong>",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
isNonRefundable: true,
|
||||||
|
isCustomHide: true,
|
||||||
allowed() {
|
allowed() {
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "nano-scale manufacturing"
|
return mech.fieldUpgrades[mech.fieldMode].name === "nano-scale manufacturing"
|
||||||
},
|
},
|
||||||
requires: "nano-scale manufacturing",
|
requires: "nano-scale manufacturing",
|
||||||
effect: () => {
|
effect: () => {
|
||||||
mod.isMassEnergy = true // used in mech.grabPowerUp
|
mech.energy = 0.01;
|
||||||
mech.energy += mech.maxEnergy * 2.5
|
b.randomBot()
|
||||||
|
b.randomBot()
|
||||||
|
b.randomBot()
|
||||||
},
|
},
|
||||||
remove() {
|
remove() {}
|
||||||
mod.isMassEnergy = false;
|
},
|
||||||
|
{
|
||||||
|
name: "bot prototypes",
|
||||||
|
description: "use <strong>nano-scale manufacturing</strong> to <strong>upgrade</strong><br>all bots of a random type and <strong>build</strong> <strong>2</strong> of that <strong>bot</strong>",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
isNonRefundable: true,
|
||||||
|
isCustomHide: true,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "nano-scale manufacturing" && !(mod.isNailBotUpgrade && mod.isFoamBotUpgrade && mod.isBoomBotUpgrade && mod.isLaserBotUpgrade && mod.isOrbitBotUpgrade)
|
||||||
|
},
|
||||||
|
requires: "nano-scale manufacturing",
|
||||||
|
effect: () => {
|
||||||
|
mech.energy = 0.01;
|
||||||
|
//fill array of available bots
|
||||||
|
const notUpgradedBots = []
|
||||||
|
if (!mod.isNailBotUpgrade) {
|
||||||
|
notUpgradedBots.push(() => {
|
||||||
|
mod.giveMod("nail-bot upgrade")
|
||||||
|
for (let i = 0; i < 2; i++) mod.giveMod("nail-bot")
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
if (!mod.isFoamBotUpgrade) {
|
||||||
|
notUpgradedBots.push(() => {
|
||||||
|
mod.giveMod("foam-bot upgrade")
|
||||||
|
for (let i = 0; i < 2; i++) mod.giveMod("foam-bot")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (!mod.isBoomBotUpgrade) {
|
||||||
|
notUpgradedBots.push(() => {
|
||||||
|
mod.giveMod("boom-bot upgrade")
|
||||||
|
for (let i = 0; i < 2; i++) mod.giveMod("boom-bot")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (!mod.isLaserBotUpgrade) {
|
||||||
|
notUpgradedBots.push(() => {
|
||||||
|
mod.giveMod("laser-bot upgrade")
|
||||||
|
for (let i = 0; i < 2; i++) mod.giveMod("laser-bot")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (!mod.isOrbitBotUpgrade) {
|
||||||
|
notUpgradedBots.push(() => {
|
||||||
|
mod.giveMod("orbital-bot upgrade")
|
||||||
|
for (let i = 0; i < 2; i++) mod.giveMod("orbital-bot")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//choose random function from the array and run it
|
||||||
|
notUpgradedBots[Math.floor(Math.random() * notUpgradedBots.length)]()
|
||||||
|
},
|
||||||
|
remove() {}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "mycelium manufacturing",
|
name: "mycelium manufacturing",
|
||||||
@@ -3282,6 +3211,146 @@ const mod = {
|
|||||||
mod.isIceField = false;
|
mod.isIceField = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "degenerate matter",
|
||||||
|
description: "reduce <strong class='color-harm'>harm</strong> by <strong>40%</strong><br>while <strong>negative mass field</strong> is active",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "negative mass field"
|
||||||
|
},
|
||||||
|
requires: "negative mass field",
|
||||||
|
effect() {
|
||||||
|
mod.isHarmReduce = true
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mod.isHarmReduce = false;
|
||||||
|
// if (mech.fieldUpgrades[mech.fieldMode].name === "negative mass field") mech.setField("negative mass field") //reset harm reduction
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "annihilation",
|
||||||
|
description: "after <strong>touching</strong> mobs, they are <strong>annihilated</strong><br>drains <strong>33%</strong> of maximum <strong class='color-f'>energy</strong>",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "negative mass field" || mech.fieldUpgrades[mech.fieldMode].name === "pilot wave"
|
||||||
|
},
|
||||||
|
requires: "negative mass field",
|
||||||
|
effect() {
|
||||||
|
mod.isAnnihilation = true
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mod.isAnnihilation = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "negative temperature",
|
||||||
|
description: "<strong>negative mass field</strong> uses <strong class='color-f'>energy</strong><br>to <strong class='color-s'>freeze</strong> each mob caught in it's effect",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "negative mass field"
|
||||||
|
},
|
||||||
|
requires: "negative mass field",
|
||||||
|
effect() {
|
||||||
|
mod.isFreezeMobs = true;
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mod.isFreezeMobs = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "plasma jet",
|
||||||
|
description: "increase <strong class='color-plasma'>plasma</strong> <strong>torch's</strong> range by <strong>27%</strong>",
|
||||||
|
maxCount: 9,
|
||||||
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "plasma torch"
|
||||||
|
},
|
||||||
|
requires: "plasma torch",
|
||||||
|
effect() {
|
||||||
|
mod.isPlasmaRange += 0.27;
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mod.isPlasmaRange = 1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "plasma-bot",
|
||||||
|
description: "a bot uses <strong class='color-f'>energy</strong> to emit <strong class='color-plasma'>plasma</strong><br>that <strong class='color-d'>damages</strong> and <strong>pushes</strong> mobs",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "plasma torch"
|
||||||
|
},
|
||||||
|
requires: "plasma torch",
|
||||||
|
effect() {
|
||||||
|
mod.plasmaBotCount++;
|
||||||
|
b.plasmaBot();
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mod.plasmaBotCount = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "timelike world line",
|
||||||
|
description: "<strong>time dilation</strong> doubles your relative time <strong>rate</strong><br>and makes you <strong>immune</strong> to <strong class='color-harm'>harm</strong>",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "time dilation field"
|
||||||
|
},
|
||||||
|
requires: "time dilation field",
|
||||||
|
effect() {
|
||||||
|
mod.isTimeSkip = true;
|
||||||
|
b.setFireCD();
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mod.isTimeSkip = false;
|
||||||
|
b.setFireCD();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Lorentz transformation",
|
||||||
|
description: "permanently increase your relative time rate<br><strong>move</strong>, <strong>jump</strong>, and <strong>shoot</strong> <strong>40%</strong> faster",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return mech.fieldUpgrades[mech.fieldMode].name === "time dilation field" || mech.fieldUpgrades[mech.fieldMode].name === "pilot wave"
|
||||||
|
},
|
||||||
|
requires: "time dilation field",
|
||||||
|
effect() {
|
||||||
|
mod.fastTime = 1.40;
|
||||||
|
mod.fastTimeJump = 1.11;
|
||||||
|
mech.setMovement();
|
||||||
|
b.setFireCD();
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mod.fastTime = 1;
|
||||||
|
mod.fastTimeJump = 1;
|
||||||
|
mech.setMovement();
|
||||||
|
b.setFireCD();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "time crystals",
|
||||||
|
description: "<strong>quadruple</strong> your default <strong class='color-f'>energy</strong> regeneration",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
allowed() {
|
||||||
|
return (mech.fieldUpgrades[mech.fieldMode].name === "time dilation field" || mech.fieldUpgrades[mech.fieldMode].name === "pilot wave") && mod.energyRegen !== 0;
|
||||||
|
},
|
||||||
|
requires: "time dilation field",
|
||||||
|
effect: () => {
|
||||||
|
mod.energyRegen = 0.004;
|
||||||
|
mech.fieldRegen = mod.energyRegen;
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
mod.energyRegen = 0.001;
|
||||||
|
mech.fieldRegen = mod.energyRegen;
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "phase decoherence",
|
name: "phase decoherence",
|
||||||
description: "become <strong>intangible</strong> while <strong class='color-cloaked'>cloaked</strong><br>but, passing through <strong>mobs</strong> drains your <strong class='color-f'>energy</strong>",
|
description: "become <strong>intangible</strong> while <strong class='color-cloaked'>cloaked</strong><br>but, passing through <strong>mobs</strong> drains your <strong class='color-f'>energy</strong>",
|
||||||
@@ -3320,7 +3389,7 @@ const mod = {
|
|||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
allowed() {
|
allowed() {
|
||||||
return mech.fieldUpgrades[mech.fieldMode].name === "metamaterial cloaking"
|
return mech.fieldUpgrades[mech.fieldMode].name === "metamaterial cloaking" || mech.fieldUpgrades[mech.fieldMode].name === "pilot wave"
|
||||||
},
|
},
|
||||||
requires: "metamaterial cloaking",
|
requires: "metamaterial cloaking",
|
||||||
effect() {
|
effect() {
|
||||||
|
|||||||
@@ -1484,7 +1484,7 @@ const mech = {
|
|||||||
mech.energy -= 0.057;
|
mech.energy -= 0.057;
|
||||||
b.iceIX(1)
|
b.iceIX(1)
|
||||||
} else {
|
} else {
|
||||||
mech.energy -= 0.4;
|
mech.energy -= 0.45;
|
||||||
b.drone(1)
|
b.drone(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2152,7 +2152,7 @@ const mech = {
|
|||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
name: "pilot wave",
|
name: "pilot wave",
|
||||||
description: "use <strong class='color-f'>energy</strong> to push <strong>blocks</strong> with your mouse<br>field <strong>radius</strong> decreases out of <strong>line of sight</strong>",
|
description: "use <strong class='color-f'>energy</strong> to push <strong>blocks</strong> with your mouse<br>field <strong>radius</strong> decreases out of <strong>line of sight</strong><br>allows <strong class='color-m'>mods</strong> that normally require other <strong class='color-f'>fields</strong>",
|
||||||
effect: () => {
|
effect: () => {
|
||||||
game.replaceTextLog = true; //allow text over write
|
game.replaceTextLog = true; //allow text over write
|
||||||
mech.fieldPhase = 0;
|
mech.fieldPhase = 0;
|
||||||
|
|||||||
@@ -57,8 +57,8 @@ const powerUps = {
|
|||||||
game.makeTextLog(`about ${Math.max(0,powerUps.mod.lastTotalChoices - powerUps.mod.banishLog.length)} estimated <strong class='color-m'>mods</strong> left`, 300)
|
game.makeTextLog(`about ${Math.max(0,powerUps.mod.lastTotalChoices - powerUps.mod.banishLog.length)} estimated <strong class='color-m'>mods</strong> left`, 300)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mod.manyWorlds && powerUps.reroll.rerolls < 1) {
|
if (mod.manyWorlds && powerUps.reroll.rerolls === 0) {
|
||||||
powerUps.spawn(mech.pos.x + 40 * (Math.random() - 0.5), mech.pos.y + 40 * (Math.random() - 0.5), "reroll", false);
|
for (let i = 0; i < 2; i++) powerUps.spawn(mech.pos.x + 40 * (Math.random() - 0.5), mech.pos.y + 40 * (Math.random() - 0.5), "reroll", false);
|
||||||
}
|
}
|
||||||
document.getElementById("choose-grid").style.display = "none"
|
document.getElementById("choose-grid").style.display = "none"
|
||||||
document.getElementById("choose-background").style.display = "none"
|
document.getElementById("choose-background").style.display = "none"
|
||||||
@@ -435,7 +435,7 @@ const powerUps = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onPickUp(where) {
|
onPickUp(where) {
|
||||||
if (mod.isMassEnergy && mech.energy < mech.maxEnergy * 2.5) mech.energy = mech.maxEnergy * 2.5;
|
if (mod.isMassEnergy && mech.energy < mech.maxEnergy * 2.5) mech.energy += 3;
|
||||||
if (mod.isMineDrop) b.mine({
|
if (mod.isMineDrop) b.mine({
|
||||||
x: where.x,
|
x: where.x,
|
||||||
y: where.y
|
y: where.y
|
||||||
|
|||||||
31
todo.txt
31
todo.txt
@@ -1,11 +1,18 @@
|
|||||||
******************************************************** NEXT PATCH ********************************************************
|
******************************************************** NEXT PATCH ********************************************************
|
||||||
|
|
||||||
so many bug fixes around CPT
|
catabolism - 2% (was 2.3%) of max health removed
|
||||||
mod: fragments - blocks, grenades, rail gun, shotgun slugs can all eject nails on collisions, or detonation
|
many worlds - spawns 2 rerolls (was 1)
|
||||||
|
pilot wave field- now has access to several mods that normally require other fields
|
||||||
|
this plus the fragmenting block mod are a big buff for late game pilot wave
|
||||||
|
let me know if it is too strong
|
||||||
|
|
||||||
|
mod nano-scale: bot prototypes - upgrade a bot type and build 2 of that bot
|
||||||
|
mod nano-scale: bot manufacturing - build 3 random bots
|
||||||
|
these mods don't show up in custom
|
||||||
|
|
||||||
******************************************************** BUGS ********************************************************
|
******************************************************** BUGS ********************************************************
|
||||||
|
|
||||||
possible bug with neutron rewind
|
(not able to reproduce, might be fixed) possible bug with neutron rewind
|
||||||
status doesn't apply correctly for spawned neutron bombs that are stuck to a shield
|
status doesn't apply correctly for spawned neutron bombs that are stuck to a shield
|
||||||
also saw neutron bombs bounce off shield, for normal bullets
|
also saw neutron bombs bounce off shield, for normal bullets
|
||||||
test this more
|
test this more
|
||||||
@@ -17,11 +24,12 @@ mod and mob are too similar
|
|||||||
(always) is there a way to check if the player is stuck inside the map or block
|
(always) 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
|
trigger a short term non-collide if that occurs
|
||||||
|
|
||||||
(4+ reports before potential fix) bug - crouch and worm hole? -> crouch locked in
|
(8+ reports before potential fix) bug - crouch and worm hole? -> crouch locked in
|
||||||
|
test this on a slower computer, doesn't occur on my computer
|
||||||
players have extra gravity
|
players have extra gravity
|
||||||
might be from the short jump code
|
might be from the short jump code
|
||||||
add in a check every 7 seconds to try and fix it
|
add in a check every 7 seconds to try and fix it
|
||||||
this fix was added and it is working
|
this fix was added and it is working for some cases
|
||||||
maybe move the fix to once a second?
|
maybe move the fix to once a second?
|
||||||
|
|
||||||
(intermittent, but almost every time) bug - capping the fps causes random slow downs, that can be fixed with pause
|
(intermittent, but almost every time) bug - capping the fps causes random slow downs, that can be fixed with pause
|
||||||
@@ -34,7 +42,11 @@ mod and mob are too similar
|
|||||||
|
|
||||||
******************************************************** TODO ********************************************************
|
******************************************************** TODO ********************************************************
|
||||||
|
|
||||||
combine fragmentation grenades, railguns fragment and apply to shotgun slug
|
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 mods you pick up in game
|
||||||
|
disable the in custom setting flag
|
||||||
|
|
||||||
mod: power up magnetism - power ups drift towards player
|
mod: power up magnetism - power ups drift towards player
|
||||||
where would this code go?
|
where would this code go?
|
||||||
@@ -44,9 +56,6 @@ super balls start at 3, not 4
|
|||||||
|
|
||||||
RPG might need a buff, now that it disables the other cool grenade mods
|
RPG might need a buff, now that it disables the other cool grenade mods
|
||||||
|
|
||||||
retrocausality bomb should fire 3 grenades at once that spread out a small bit before they explode?
|
|
||||||
this means you'd have to make grenades a method.
|
|
||||||
|
|
||||||
make different move methods
|
make different move methods
|
||||||
mod: crouch charge jump
|
mod: crouch charge jump
|
||||||
mod: double jump
|
mod: double jump
|
||||||
@@ -66,8 +75,6 @@ mod - move super fast, go intangible, drain energy very fast
|
|||||||
this is like a dodge roll
|
this is like a dodge roll
|
||||||
mod for standing wave?, cloaking?
|
mod for standing wave?, cloaking?
|
||||||
|
|
||||||
spawn a few power ups on the final boss level
|
|
||||||
|
|
||||||
mod pilot wave: mini black hole - pull mobs and blocks in with more force
|
mod pilot wave: mini black hole - pull mobs and blocks in with more force
|
||||||
also from farther away
|
also from farther away
|
||||||
also do damage?
|
also do damage?
|
||||||
@@ -79,8 +86,6 @@ bullet mechanic - a bullet that swims through the air
|
|||||||
rotate the velocity vector towards the normalized facing vector
|
rotate the velocity vector towards the normalized facing vector
|
||||||
use the cross product > 0 to determine which direction to rotate the velocity
|
use the cross product > 0 to determine which direction to rotate the velocity
|
||||||
|
|
||||||
lower recoil on nail shot gun?
|
|
||||||
|
|
||||||
in custom make a top bar that is fixed
|
in custom make a top bar that is fixed
|
||||||
use media rules to make the layout look nice
|
use media rules to make the layout look nice
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user