fault tolerance
tech: fault tolerance - spawn 9 drones that last forever, remove your drone gun fade in after death is more gradual
This commit is contained in:
93
js/tech.js
93
js/tech.js
@@ -934,7 +934,7 @@
|
||||
frequency: 1,
|
||||
frequencyDefault: 1,
|
||||
allowed() {
|
||||
return ((m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isDroneTeleport || tech.isDroneRadioactive || tech.isSporeField || tech.isMissileField || tech.isIceField)) || (tech.haveGunCheck("drones") && !tech.isDroneRadioactive && !tech.isDroneTeleport) || tech.haveGunCheck("super balls") || tech.haveGunCheck("shotgun")) && !tech.isNailShot && !tech.isIceShot && !tech.isFoamShot && !tech.isWormShot && !tech.isNeedleShot
|
||||
return ((m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isDroneTeleport || tech.isDroneRadioactive || tech.isSporeField || tech.isMissileField || tech.isIceField)) || (tech.haveGunCheck("drones") && !tech.isForeverDrones && !tech.isDroneRadioactive && !tech.isDroneTeleport) || tech.haveGunCheck("super balls") || tech.haveGunCheck("shotgun")) && !tech.isNailShot && !tech.isIceShot && !tech.isFoamShot && !tech.isWormShot && !tech.isNeedleShot
|
||||
},
|
||||
requires: "super balls, basic or slug shotgun, drones, not irradiated drones or burst drones",
|
||||
effect() {
|
||||
@@ -1504,7 +1504,7 @@
|
||||
},
|
||||
{
|
||||
name: "robotics",
|
||||
description: `spawn a random <strong>bot</strong><br><strong>quadruple</strong> the <strong class='flicker'>frequency</strong> of finding <strong>bot</strong> <strong class='color-m'>tech</strong>`,
|
||||
description: `spawn <strong>2</strong> random <strong>bots</strong><br><strong>quadruple</strong> the <strong class='flicker'>frequency</strong> of finding <strong>bot</strong> <strong class='color-m'>tech</strong>`,
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
@@ -1515,6 +1515,7 @@
|
||||
},
|
||||
requires: "at least 2 bots",
|
||||
effect: () => {
|
||||
b.randomBot()
|
||||
b.randomBot()
|
||||
for (let i = 0, len = tech.tech.length; i < len; i++) {
|
||||
if (tech.tech[i].isBotTech) tech.tech[i].frequency *= 4
|
||||
@@ -1522,8 +1523,12 @@
|
||||
},
|
||||
remove() {
|
||||
if (this.count > 0) {
|
||||
b.removeBot()
|
||||
b.removeBot()
|
||||
b.clearPermanentBots();
|
||||
b.respawnBots();
|
||||
for (let i = 0, len = tech.tech.length; i < len; i++) {
|
||||
if (tech.tech[i].isBotTech) tech.tech[i].frequency /= 4
|
||||
if (tech.tech[i].isBotTech) tech.tech[i].frequency = Math.ceil(tech.tech[i].frequency / 4)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4384,7 +4389,7 @@
|
||||
{
|
||||
name: "missile-bot",
|
||||
link: `<a target="_blank" href='https://en.wikipedia.org/wiki/Robot' class="link">missile-bot</a>`,
|
||||
description: "remove your <strong>missile gun</strong><br>gain a <strong class='color-bot'>bot</strong> that fires <strong>missiles</strong> at mobs",
|
||||
description: "gain a <strong class='color-bot'>bot</strong> that fires <strong>missiles</strong> at mobs<br>remove your <strong>missile gun</strong>",
|
||||
isGunTech: true,
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
@@ -4747,10 +4752,44 @@
|
||||
tech.wormSurviveDmg = false
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "fault tolerance",
|
||||
description: "spawn <strong>9</strong> <strong>drones</strong> that last <strong>forever</strong><br>remove your <strong>drone gun</strong>",
|
||||
isGunTech: true,
|
||||
maxCount: 3,
|
||||
count: 0,
|
||||
frequency: 2,
|
||||
frequencyDefault: 2,
|
||||
allowed() {
|
||||
return tech.haveGunCheck("drones") || tech.isForeverDrones
|
||||
},
|
||||
requires: "drone gun",
|
||||
effect() {
|
||||
const num = 9
|
||||
tech.isForeverDrones += num
|
||||
if (tech.haveGunCheck("drones")) b.removeGun("drones")
|
||||
//spawn drones
|
||||
if (tech.isDroneRadioactive) {
|
||||
for (let i = 0; i < num * 0.25; i++) {
|
||||
b.droneRadioactive({ x: m.pos.x + 30 * (Math.random() - 0.5), y: m.pos.y + 30 * (Math.random() - 0.5) }, 5)
|
||||
bullet[bullet.length - 1].endCycle = Infinity
|
||||
}
|
||||
} else {
|
||||
for (let i = 0; i < num; i++) {
|
||||
b.drone({ x: m.pos.x + 30 * (Math.random() - 0.5), y: m.pos.y + 30 * (Math.random() - 0.5) }, 5)
|
||||
bullet[bullet.length - 1].endCycle = Infinity
|
||||
}
|
||||
}
|
||||
},
|
||||
remove() {
|
||||
tech.isForeverDrones = 0
|
||||
if (this.count && !tech.haveGunCheck("drones")) b.giveGuns("drones")
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "reduced tolerances",
|
||||
link: `<a target="_blank" href='https://en.wikipedia.org/wiki/Engineering_tolerance' class="link">reduced tolerances</a>`,
|
||||
description: `increase <strong>drones</strong> per ${powerUps.orb.ammo()} or <strong class='color-f'>energy</strong> <strong>66%</strong><br>reduce the average <strong>drone</strong> lifetime by <strong>40%</strong>`,
|
||||
description: `increase <strong>drones</strong> per ${powerUps.orb.ammo()} or <strong class='color-f'>energy</strong> by <strong>66%</strong><br>reduce the average <strong>drone</strong> lifetime by <strong>40%</strong>`,
|
||||
isGunTech: true,
|
||||
maxCount: 3,
|
||||
count: 0,
|
||||
@@ -4787,7 +4826,7 @@
|
||||
frequency: 2,
|
||||
frequencyDefault: 2,
|
||||
allowed() {
|
||||
return !tech.isExtraMaxEnergy && (tech.haveGunCheck("drones") || (m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isSporeField || tech.isMissileField || tech.isIceField)))
|
||||
return !tech.isExtraMaxEnergy && (tech.haveGunCheck("drones") || tech.isForeverDrones || (m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isSporeField || tech.isMissileField || tech.isIceField)))
|
||||
},
|
||||
requires: "drones, not inductive coupling",
|
||||
effect() {
|
||||
@@ -4800,7 +4839,7 @@
|
||||
{
|
||||
name: "drone repair",
|
||||
link: `<a target="_blank" href='https://en.wikipedia.org/wiki/Unmanned_aerial_vehicle' class="link">drone repair</a>`,
|
||||
description: "after a <strong>drone</strong> ends it <strong>redeploys</strong><br>for a <strong>25%</strong> chance to use <strong>1</strong> <strong>drone</strong> <strong class='color-ammo'>ammo</strong>",
|
||||
description: "after a <strong>drone</strong> expires it <strong>redeploys</strong><br>for a <strong>25%</strong> chance to use <strong>1</strong> <strong>drone</strong> <strong class='color-ammo'>ammo</strong>",
|
||||
// description: "broken <strong>drones</strong> <strong>repair</strong> if the drone <strong class='color-g'>gun</strong> is active<br><strong>repairing</strong> has a <strong>25%</strong> chance to use <strong>1</strong> <strong>drone</strong>",
|
||||
isGunTech: true,
|
||||
maxCount: 1,
|
||||
@@ -4819,8 +4858,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "torque bursts",
|
||||
link: `<a target="_blank" href='https://en.wikipedia.org/wiki/Electric_motor#Torque_motor' class="link">torque bursts</a>`,
|
||||
name: "brushless motor",
|
||||
description: "<strong>drones</strong> rapidly <strong>rush</strong> towards their target<br>increase <strong>drone</strong> collision <strong class='color-d'>damage</strong> by <strong>33%</strong>",
|
||||
isGunTech: true,
|
||||
maxCount: 1,
|
||||
@@ -4828,7 +4866,7 @@
|
||||
frequency: 3,
|
||||
frequencyDefault: 3,
|
||||
allowed() {
|
||||
return tech.haveGunCheck("drones") && !tech.isDroneRadioactive && !tech.isIncendiary
|
||||
return (tech.haveGunCheck("drones") || tech.isForeverDrones) && !tech.isDroneRadioactive && !tech.isIncendiary
|
||||
},
|
||||
requires: "drone gun, not irradiated drones, incendiary",
|
||||
effect() {
|
||||
@@ -4839,7 +4877,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "brushless motor",
|
||||
name: "axial flux motor",
|
||||
description: "<strong>drones</strong> can <strong>rush</strong> <strong>66%</strong> more often<br>increase <strong>drone</strong> collision <strong class='color-d'>damage</strong> by <strong>44%</strong>",
|
||||
isGunTech: true,
|
||||
maxCount: 1,
|
||||
@@ -4867,7 +4905,7 @@
|
||||
frequency: 2,
|
||||
frequencyDefault: 2,
|
||||
allowed() {
|
||||
return tech.droneCycleReduction === 1 && !tech.isIncendiary && !tech.isDroneTeleport && (tech.haveGunCheck("drones") || (m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isSporeField || tech.isMissileField || tech.isIceField)))
|
||||
return tech.droneCycleReduction === 1 && !tech.isIncendiary && !tech.isDroneTeleport && (tech.haveGunCheck("drones") || tech.isForeverDrones || (m.fieldUpgrades[m.fieldMode].name === "molecular assembler" && !(tech.isSporeField || tech.isMissileField || tech.isIceField)))
|
||||
},
|
||||
requires: "drones, not reduced tolerances, incendiary, torque bursts",
|
||||
effect() {
|
||||
@@ -5183,6 +5221,25 @@
|
||||
tech.isRailAreaDamage = false;
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "aerodynamic heating",
|
||||
description: "<strong>railgun</strong> rod <strong class='color-d'>damage</strong> nearby mobs",
|
||||
isGunTech: true,
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
frequency: 2,
|
||||
frequencyDefault: 2,
|
||||
allowed() {
|
||||
return tech.haveGunCheck("railgun")
|
||||
},
|
||||
requires: "railgun",
|
||||
effect() {
|
||||
tech.isRodAreaDamage = true;
|
||||
},
|
||||
remove() {
|
||||
tech.isRodAreaDamage = false;
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "capacitor bank",
|
||||
description: "the <strong>railgun</strong> no longer takes time to <strong>charge</strong><br><strong>railgun</strong> rods are <strong>66%</strong> less massive",
|
||||
@@ -5971,9 +6028,9 @@
|
||||
isBot: true,
|
||||
isBotTech: true,
|
||||
allowed() {
|
||||
return !tech.isExtruder && m.fieldUpgrades[m.fieldMode].name === "plasma torch" && (build.isExperimentSelection || powerUps.research.count > 0)
|
||||
return m.fieldUpgrades[m.fieldMode].name === "plasma torch" && (build.isExperimentSelection || powerUps.research.count > 0)
|
||||
},
|
||||
requires: "plasma torch, not extruder",
|
||||
requires: "plasma torch",
|
||||
effect() {
|
||||
tech.plasmaBotCount++;
|
||||
b.plasmaBot();
|
||||
@@ -6030,9 +6087,9 @@
|
||||
frequency: 2,
|
||||
frequencyDefault: 2,
|
||||
allowed() {
|
||||
return m.fieldUpgrades[m.fieldMode].name === "plasma torch" && tech.plasmaBotCount === 0
|
||||
return m.fieldUpgrades[m.fieldMode].name === "plasma torch"
|
||||
},
|
||||
requires: "plasma torch, not plasma-bot",
|
||||
requires: "plasma torch",
|
||||
effect() {
|
||||
tech.isExtruder = true;
|
||||
m.fieldUpgrades[m.fieldMode].set()
|
||||
@@ -8486,5 +8543,7 @@
|
||||
removeMaxHealthOnKill: null,
|
||||
isSpawnExitTech: null,
|
||||
cloakDuplication: null,
|
||||
extruderRange: null
|
||||
extruderRange: null,
|
||||
isRodAreaDamage: null,
|
||||
isForeverDrones: null
|
||||
}
|
||||
Reference in New Issue
Block a user