crossfire
bots are now nonrefundable, so they don't display as a tech when you select them this might introduce some errors, please let me know if you see something bot counts can be seen in pause menu the final boss will spawn progressively more mobs if you don't kill it quickly enough levelBosses are also more likely to spawn on the final boss added community map - crossfire by iNoobBoi
This commit is contained in:
11
js/index.js
11
js/index.js
@@ -178,6 +178,16 @@ const build = {
|
||||
}
|
||||
},
|
||||
pauseGrid() {
|
||||
let botText = ""
|
||||
if (tech.nailBotCount) botText += `<br>nail-bots: ${tech.nailBotCount}`
|
||||
if (tech.orbitBotCount) botText += `<br>orbital-bots: ${tech.orbitBotCount}`
|
||||
if (tech.boomBotCount) botText += `<br>boom-bots: ${tech.boomBotCount}`
|
||||
if (tech.laserBotCount) botText += `<br>laser-bots: ${tech.laserBotCount}`
|
||||
if (tech.foamBotCount) botText += `<br>foam-bots: ${tech.foamBotCount}`
|
||||
if (tech.dynamoBotCount) botText += `<br>dynamo-bots: ${tech.dynamoBotCount}`
|
||||
if (tech.plasmaBotCount) botText += `<br>plasma-bots: ${tech.plasmaBotCount}`
|
||||
if (tech.missileBotCount) botText += `<br>missile-bots: ${tech.missileBotCount}`
|
||||
|
||||
const harm = (1 - m.harmReduction()) * 100
|
||||
let text = ""
|
||||
if (!simulation.isChoosing) text += `<div class="pause-grid-module">
|
||||
@@ -188,6 +198,7 @@ const build = {
|
||||
<br><strong class='color-harm'>harm</strong> reduction: ${harm.toFixed(harm > 90 ? 2 : 0)}%
|
||||
<br><strong><em>fire delay</em></strong> decrease: ${((1-b.fireCD)*100).toFixed(b.fireCD < 0.1 ? 2 : 0)}%
|
||||
<br><strong class='color-dup'>duplication</strong> chance: ${(Math.min(1,tech.duplicationChance())*100).toFixed(0)}%
|
||||
${botText}
|
||||
<br>
|
||||
<br><strong class='color-m'>tech</strong>: ${tech.totalCount} <strong class='color-r'>research</strong>: ${powerUps.research.count}
|
||||
<br><strong class='color-h'>health</strong>: (${(m.health*100).toFixed(0)} / ${(m.maxHealth*100).toFixed(0)}) <strong class='color-f'>energy</strong>: (${(m.energy*100).toFixed(0)} / ${(m.maxEnergy*100).toFixed(0)})
|
||||
|
||||
175
js/level.js
175
js/level.js
@@ -12,7 +12,7 @@ const level = {
|
||||
start() {
|
||||
if (level.levelsCleared === 0) { //this code only runs on the first level
|
||||
// simulation.enableConstructMode() //used to build maps in testing mode
|
||||
// level.difficultyIncrease(11)
|
||||
// level.difficultyIncrease(50)
|
||||
// simulation.zoomScale = 1000;
|
||||
// simulation.setZoom();
|
||||
// m.setField("nano-scale manufacturing")
|
||||
@@ -57,6 +57,7 @@ const level = {
|
||||
// level.stronghold() //community level
|
||||
// level.perplex() //community level
|
||||
// level.coliseum() //community level
|
||||
// level.crossfire() //community level
|
||||
|
||||
// powerUps.directSpawn(simulation.mouseInGame.x, simulation.mouseInGame.y, "tech");
|
||||
// tech.giveTech("undefined")
|
||||
@@ -1110,7 +1111,7 @@ const level = {
|
||||
// spawn.grower(1900, -500)
|
||||
// spawn.pulsarBoss(1900, -500)
|
||||
// spawn.shooterBoss(1900, -500)
|
||||
spawn.shooter(2900, -500)
|
||||
spawn.spawns(2900, -500)
|
||||
// spawn.launcherBoss(1200, -500)
|
||||
// spawn.laserTargetingBoss(1600, -400)
|
||||
// spawn.striker(4600, -500)
|
||||
@@ -4613,4 +4614,174 @@ const level = {
|
||||
|
||||
if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) spawn.randomLevelBoss(6600, 600, ["historyBoss", "powerUpBoss", "pulsarBoss", "orbitalBoss"]);
|
||||
},
|
||||
crossfire() {
|
||||
//*1.5
|
||||
//Level Setup
|
||||
const slimePitOne = level.hazard(0, 850, 3800, 120, 25);
|
||||
const slimePitTwo = level.hazard(4600, 430, 2000, 120, 35);
|
||||
const slimePitThree = level.hazard(6500, 200, 1000, 170, 50);
|
||||
|
||||
level.custom = () => {
|
||||
slimePitOne.query();
|
||||
slimePitTwo.query();
|
||||
slimePitThree.query();
|
||||
slimePitOne.draw();
|
||||
slimePitTwo.draw();
|
||||
slimePitThree.draw();
|
||||
level.playerExitCheck();
|
||||
level.exit.draw();
|
||||
level.enter.draw();
|
||||
};
|
||||
level.customTopLayer = () => {};
|
||||
|
||||
level.setPosToSpawn(-500, 550); //normal spawn
|
||||
spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20);
|
||||
|
||||
level.exit.x = 10300;
|
||||
level.exit.y = -830;
|
||||
spawn.mapRect(level.exit.x, level.exit.y + 20, 100, 20);
|
||||
|
||||
level.defaultZoom = 3000
|
||||
simulation.zoomTransition(level.defaultZoom)
|
||||
document.body.style.backgroundColor = "#dcdcde";
|
||||
|
||||
//Map Elements
|
||||
spawn.mapRect(-800, -600, 800, 200);
|
||||
spawn.mapRect(-200, -600, 200, 800);
|
||||
spawn.mapRect(-800, -600, 200, 800);
|
||||
spawn.mapRect(-1000, 0, 1000, 200);
|
||||
spawn.mapRect(-1000, 0, 200, 800);
|
||||
spawn.mapRect(-1000, 600, 1400, 200);
|
||||
spawn.mapRect(0, 600, 200, 400);
|
||||
spawn.mapRect(0, 950, 4000, 100);
|
||||
spawn.mapRect(800, 800, 600, 200);
|
||||
spawn.mapRect(1700, 700, 500, 300);
|
||||
spawn.mapRect(2500, 600, 400, 400);
|
||||
spawn.mapRect(3200, 600, 1200, 200);
|
||||
spawn.mapRect(3800, 600, 200, 800); //
|
||||
spawn.mapRect(3800, 1200, 800, 200);
|
||||
spawn.mapRect(4400, 400, 300, 1000);
|
||||
spawn.mapRect(4400, 500, 2000, 100);
|
||||
spawn.mapRect(6500, 300, 1000, 100);
|
||||
spawn.mapRect(5000, 200, 700, 400);
|
||||
spawn.mapRect(6000, 0, 650, 600);
|
||||
spawn.mapRect(6900, -300, 700, 100);
|
||||
spawn.mapRect(7400, -600, 200, 1100);
|
||||
spawn.mapRect(7400, 300, 2600, 200);
|
||||
spawn.mapRect(9800, -800, 200, 1300);
|
||||
spawn.mapRect(9800, -800, 1000, 200);
|
||||
spawn.mapRect(10600, -1400, 200, 800);
|
||||
spawn.mapRect(9800, -1400, 200, 400);
|
||||
spawn.mapRect(7400, -1400, 3400, 200);
|
||||
spawn.mapRect(7400, -1600, 200, 800);
|
||||
spawn.mapRect(5400, -1600, 2200, 200);
|
||||
spawn.mapRect(6000, -1600, 200, 800);
|
||||
spawn.mapRect(5400, -1600, 200, 800);
|
||||
spawn.mapRect(4800, -1000, 1400, 200);
|
||||
spawn.mapRect(4800, -1000, 200, 600);
|
||||
spawn.mapRect(3800, -600, 1200, 200);
|
||||
spawn.mapRect(3200, -800, 800, 200);
|
||||
spawn.mapRect(3200, -800, 200, 800);
|
||||
spawn.mapRect(3800, -800, 200, 800);
|
||||
spawn.mapRect(-200, -200, 4200, 200);
|
||||
|
||||
//Boss Room Platforms
|
||||
spawn.mapRect(7700, 100, 300, 40);
|
||||
spawn.mapRect(8600, 0, 300, 40);
|
||||
spawn.mapRect(9200, 100, 300, 40);
|
||||
spawn.mapRect(9400, -200, 300, 40);
|
||||
spawn.mapRect(8000, -200, 300, 40);
|
||||
spawn.mapRect(8500, -400, 300, 40);
|
||||
spawn.mapRect(9000, -600, 300, 40);
|
||||
spawn.mapRect(9400, -800, 300, 40);
|
||||
spawn.mapRect(8600, -1000, 300, 40);
|
||||
spawn.mapRect(7900, -800, 300, 40);
|
||||
|
||||
//Mob Spawning
|
||||
spawn.randomMob(200, 400, 0.7);
|
||||
spawn.randomMob(1200, 400, 0.7);
|
||||
spawn.randomMob(2000, 400, 0.7);
|
||||
spawn.randomMob(3000, 400, 0.7);
|
||||
spawn.randomMob(5000, 0, 0.7);
|
||||
spawn.randomMob(5600, 0, 0.7);
|
||||
spawn.randomMob(6200, -200, 0.7);
|
||||
spawn.randomMob(6600, -200, 0.7);
|
||||
spawn.randomMob(7200, -800, 0.7);
|
||||
spawn.randomSmallMob(800, 400, 0.9);
|
||||
spawn.randomSmallMob(1800, 400, 0.9);
|
||||
spawn.randomSmallMob(2600, 400, 0.9);
|
||||
spawn.randomSmallMob(5200, 0, 0.9);
|
||||
spawn.randomSmallMob(5400, 0, 0.9);
|
||||
spawn.randomSmallMob(6400, -200, 0.9);
|
||||
spawn.randomGroup(3800, 400, 0.5);
|
||||
spawn.randomGroup(4200, 400, 0.5);
|
||||
spawn.randomGroup(4400, 200, 0.5);
|
||||
spawn.randomGroup(7000, -800, 0.5);
|
||||
spawn.randomGroup(7700, 300, 0.5);
|
||||
spawn.randomGroup(9800, 300, 0.5);
|
||||
spawn.randomGroup(7700, -1100, 0.5);
|
||||
spawn.randomGroup(9800, -1100, 0.5);
|
||||
|
||||
if (simulation.difficulty > 10) {
|
||||
spawn.randomLevelBoss(8600, -600, ["powerUpBoss", "bomberBoss", "snakeBoss", "spiderBoss", "historyBoss"]);
|
||||
}
|
||||
if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) {
|
||||
spawn.randomLevelBoss(7900, -400, ["powerUpBoss", "spiderBoss", "historyBoss"]);
|
||||
}
|
||||
|
||||
//Boss Spawning
|
||||
spawn.pulsarBoss(-400, -200);
|
||||
if (simulation.difficulty > 25) {
|
||||
spawn.pulsarBoss(3600, -400);
|
||||
if (simulation.difficulty > 40) {
|
||||
spawn.pulsarBoss(4200, 1000);
|
||||
if (simulation.difficulty > 65) {
|
||||
spawn.pulsarBoss(5800, -1200);
|
||||
spawn.pulsarBoss(-400, -200);
|
||||
if (simulation.difficulty > 85) {
|
||||
spawn.pulsarBoss(3600, -400);
|
||||
spawn.pulsarBoss(4200, 1000);
|
||||
if (simulation.difficulty > 115) {
|
||||
spawn.pulsarBoss(5800, -1200);
|
||||
spawn.pulsarBoss(-400, -200);
|
||||
spawn.pulsarBoss(3600, -400);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Powerup Spawning
|
||||
powerUps.spawnStartingPowerUps(4000, 400);
|
||||
powerUps.spawnStartingPowerUps(4400, 400);
|
||||
powerUps.chooseRandomPowerUp(4000, 400);
|
||||
powerUps.chooseRandomPowerUp(4000, 400);
|
||||
powerUps.chooseRandomPowerUp(4400, 400);
|
||||
powerUps.chooseRandomPowerUp(4400, 400);
|
||||
powerUps.addRerollToLevel(); //needs to run after mobs are spawned
|
||||
|
||||
//Block Spawning
|
||||
// spawn.bodyRect(-100, 200, 100, 400); //spawn door
|
||||
spawn.bodyRect(7450, -800, 25, 200); //boss room door
|
||||
spawn.bodyRect(9850, -1000, 25, 200); //end door
|
||||
spawn.mapRect(-200, 350, 200, 450);
|
||||
|
||||
// spawn.mapRect(3875, -75, 50, 575);
|
||||
spawn.mapRect(3800, -75, 200, 525);
|
||||
spawn.mapRect(3875, 590, 50, 150);
|
||||
spawn.mapRect(3875, 350, 50, 140);
|
||||
|
||||
const debrisCount = 3
|
||||
spawn.debris(1050, 700, 400, debrisCount);
|
||||
spawn.debris(1900, 600, 400, debrisCount);
|
||||
spawn.debris(2700, 500, 400, debrisCount);
|
||||
// spawn.debris(3500, 450, 400, debrisCount);
|
||||
spawn.debris(4150, 500, 400, debrisCount);
|
||||
spawn.debris(5300, 0, 400, debrisCount);
|
||||
spawn.debris(6300, -100, 400, debrisCount);
|
||||
spawn.debris(7200, -500, 400, debrisCount);
|
||||
spawn.debris(8000, -600, 400, debrisCount);
|
||||
spawn.debris(8700, -700, 400, debrisCount);
|
||||
spawn.debris(9300, -900, 400, debrisCount);
|
||||
},
|
||||
};
|
||||
@@ -531,30 +531,32 @@ const powerUps = {
|
||||
},
|
||||
randomPowerUpCounter: 0,
|
||||
spawnBossPowerUp(x, y) { //boss spawns field and gun tech upgrades
|
||||
if (m.fieldMode === 0) {
|
||||
powerUps.spawn(x, y, "field")
|
||||
} else {
|
||||
powerUps.randomPowerUpCounter++;
|
||||
powerUpChance(Math.max(level.levelsCleared, 10) * 0.1)
|
||||
}
|
||||
powerUps.randomPowerUpCounter += 0.6;
|
||||
powerUpChance(Math.max(level.levelsCleared, 6) * 0.1)
|
||||
|
||||
function powerUpChance(chanceToFail) {
|
||||
if (Math.random() * chanceToFail < powerUps.randomPowerUpCounter) {
|
||||
powerUps.randomPowerUpCounter = 0;
|
||||
if (Math.random() < 0.97) {
|
||||
powerUps.spawn(x, y, "tech")
|
||||
} else {
|
||||
powerUps.spawn(x, y, "gun")
|
||||
}
|
||||
if (level.levels[level.onLevel] !== "final") {
|
||||
if (m.fieldMode === 0) {
|
||||
powerUps.spawn(x, y, "field")
|
||||
} else {
|
||||
if (m.health < 0.65 && !tech.isEnergyHealth) {
|
||||
powerUps.spawn(x, y, "heal");
|
||||
powerUps.spawn(x, y, "heal");
|
||||
powerUps.randomPowerUpCounter++;
|
||||
powerUpChance(Math.max(level.levelsCleared, 10) * 0.1)
|
||||
}
|
||||
powerUps.randomPowerUpCounter += 0.6;
|
||||
powerUpChance(Math.max(level.levelsCleared, 6) * 0.1)
|
||||
|
||||
function powerUpChance(chanceToFail) {
|
||||
if (Math.random() * chanceToFail < powerUps.randomPowerUpCounter) {
|
||||
powerUps.randomPowerUpCounter = 0;
|
||||
if (Math.random() < 0.97) {
|
||||
powerUps.spawn(x, y, "tech")
|
||||
} else {
|
||||
powerUps.spawn(x, y, "gun")
|
||||
}
|
||||
} else {
|
||||
powerUps.spawn(x, y, "ammo");
|
||||
powerUps.spawn(x, y, "ammo");
|
||||
if (m.health < 0.65 && !tech.isEnergyHealth) {
|
||||
powerUps.spawn(x, y, "heal");
|
||||
powerUps.spawn(x, y, "heal");
|
||||
} else {
|
||||
powerUps.spawn(x, y, "ammo");
|
||||
powerUps.spawn(x, y, "ammo");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -521,10 +521,12 @@ const simulation = {
|
||||
if (simulation.isCommunityMaps) {
|
||||
level.levels.push("stronghold");
|
||||
level.levels.push("basement");
|
||||
// level.levels.push("detours");
|
||||
level.levels.push("crossfire");
|
||||
level.levels.push("house");
|
||||
level.levels.push("perplex");
|
||||
level.levels.push("coliseum");
|
||||
|
||||
|
||||
// level.levels.push("vats");
|
||||
level.levels.splice(0, 5); //remove some random levels to make up for adding the community levels
|
||||
|
||||
|
||||
33
js/spawn.js
33
js/spawn.js
@@ -178,6 +178,7 @@ const spawn = {
|
||||
me.onDamage = function() {};
|
||||
me.cycle = 420;
|
||||
me.endCycle = 780;
|
||||
me.totalCycles = 0
|
||||
me.mode = 0;
|
||||
me.do = function() {
|
||||
Matter.Body.setPosition(this, { //hold position
|
||||
@@ -191,6 +192,7 @@ const spawn = {
|
||||
this.modeDo(); //this does different things based on the mode
|
||||
this.checkStatus();
|
||||
this.cycle++; //switch modes÷
|
||||
this.totalCycles++;
|
||||
// if (!m.isBodiesAsleep) {
|
||||
if (this.health > 0.25) {
|
||||
if (this.cycle > this.endCycle) {
|
||||
@@ -251,23 +253,20 @@ const spawn = {
|
||||
if (!(this.cycle % this.spawnInterval) && !m.isBodiesAsleep && mob.length < 40) {
|
||||
if (this.mode !== 3) Matter.Body.setAngularVelocity(this, 0.1)
|
||||
//fire a bullet from each vertex
|
||||
let whoSpawn = spawn.fullPickList[Math.floor(Math.random() * spawn.fullPickList.length)];
|
||||
|
||||
const step = (this.health > 0.75) ? 2 : 1
|
||||
for (let i = 0, len = this.vertices.length; i < len; i += step) {
|
||||
spawn[whoSpawn](this.vertices[i].x, this.vertices[i].y);
|
||||
const velocity = Vector.mult(Vector.perp(Vector.normalise(Vector.sub(this.position, this.vertices[i]))), -18) //give the mob a rotational velocity as if they were attached to a vertex
|
||||
const whoSpawn = spawn.fullPickList[Math.floor(Math.random() * spawn.fullPickList.length)];
|
||||
for (let i = 0, len = 2 + this.totalCycles / 1000; i < len; i++) {
|
||||
const vertex = this.vertices[i % 6]
|
||||
spawn[whoSpawn](vertex.x + 50 * (Math.random() - 0.5), vertex.y + 50 * (Math.random() - 0.5));
|
||||
const velocity = Vector.mult(Vector.perp(Vector.normalise(Vector.sub(this.position, vertex))), -18) //give the mob a rotational velocity as if they were attached to a vertex
|
||||
Matter.Body.setVelocity(mob[mob.length - 1], {
|
||||
x: this.velocity.x + velocity.x,
|
||||
y: this.velocity.y + velocity.y
|
||||
});
|
||||
}
|
||||
|
||||
if (simulation.difficulty > 60) {
|
||||
spawn.randomLevelBoss(3000, -1100)
|
||||
if (simulation.difficulty > 100) {
|
||||
spawn.randomLevelBoss(3000, -1300)
|
||||
}
|
||||
const len = (this.totalCycles / 400 + simulation.difficulty / 2 - 30) / 15
|
||||
// console.log(len)
|
||||
for (let i = 0; i < len; i++) {
|
||||
spawn.randomLevelBoss(3000 + 2000 * (Math.random() - 0.5), -1100 + 200 * (Math.random() - 0.5))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2830,12 +2829,12 @@ const spawn = {
|
||||
this.explode();
|
||||
};
|
||||
// me.stroke = "transparent"
|
||||
me.collisionFilter.mask = cat.player | cat.bullet | cat.body | cat.map
|
||||
me.collisionFilter.mask = cat.player | cat.bullet | cat.body | cat.map | cat.mob
|
||||
me.showHealthBar = false;
|
||||
Matter.Body.setDensity(me, 0.0005); //normal is 0.001
|
||||
me.g = 0.0001; //required if using 'gravity'
|
||||
me.accelMag = 0.00008 * simulation.accelScale;
|
||||
me.memory = 30;
|
||||
Matter.Body.setDensity(me, 0.0001); //normal is 0.001
|
||||
me.g = 0.00002; //required if using 'gravity'
|
||||
me.accelMag = 0.00012 * simulation.accelScale;
|
||||
// me.memory = 30;
|
||||
me.leaveBody = false;
|
||||
me.isDropPowerUp = false;
|
||||
me.seePlayerFreq = Math.round((80 + 50 * Math.random()) * simulation.lookFreqScale);
|
||||
|
||||
32
js/tech.js
32
js/tech.js
@@ -272,7 +272,7 @@
|
||||
},
|
||||
{
|
||||
name: "gun sciences",
|
||||
description: "spawn a <strong class='color-g'>gun</strong> and </strong>double</strong> the <strong class='flicker'>frequency</strong><br>of finding <strong class='color-m'>tech</strong> for a specific <strong class='color-g'>gun</strong>",
|
||||
description: "spawn a <strong class='color-g'>gun</strong> and </strong>double</strong> the <strong class='flicker'>frequency</strong><br>of finding <strong class='color-m'>tech</strong> for your <strong class='color-g'>guns</strong>",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
frequency: 2,
|
||||
@@ -978,6 +978,7 @@
|
||||
maxCount: 9,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
isNonRefundable: true,
|
||||
isBot: true,
|
||||
isBotTech: true,
|
||||
allowed() {
|
||||
@@ -989,7 +990,7 @@
|
||||
b.nailBot();
|
||||
},
|
||||
remove() {
|
||||
tech.nailBotCount -= this.count;
|
||||
// tech.nailBotCount -= this.count;
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1023,6 +1024,7 @@
|
||||
maxCount: 9,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
isNonRefundable: true,
|
||||
isBot: true,
|
||||
isBotTech: true,
|
||||
allowed() {
|
||||
@@ -1034,7 +1036,7 @@
|
||||
b.foamBot();
|
||||
},
|
||||
remove() {
|
||||
tech.foamBotCount -= this.count;
|
||||
// tech.foamBotCount -= this.count;
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1068,6 +1070,7 @@
|
||||
maxCount: 9,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
isNonRefundable: true,
|
||||
isBot: true,
|
||||
isBotTech: true,
|
||||
allowed() {
|
||||
@@ -1079,7 +1082,7 @@
|
||||
b.boomBot();
|
||||
},
|
||||
remove() {
|
||||
tech.boomBotCount -= this.count;
|
||||
// tech.boomBotCount -= this.count;
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1113,6 +1116,7 @@
|
||||
maxCount: 9,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
isNonRefundable: true,
|
||||
isBot: true,
|
||||
isBotTech: true,
|
||||
allowed() {
|
||||
@@ -1124,7 +1128,7 @@
|
||||
b.laserBot();
|
||||
},
|
||||
remove() {
|
||||
tech.laserBotCount -= this.count;
|
||||
// tech.laserBotCount -= this.count;
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1158,6 +1162,7 @@
|
||||
maxCount: 9,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
isNonRefundable: true,
|
||||
isBot: true,
|
||||
isBotTech: true,
|
||||
allowed() {
|
||||
@@ -1169,7 +1174,7 @@
|
||||
tech.orbitBotCount++;
|
||||
},
|
||||
remove() {
|
||||
tech.orbitBotCount -= this.count;
|
||||
// tech.orbitBotCount -= this.count;
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1213,6 +1218,7 @@
|
||||
maxCount: 9,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
isNonRefundable: true,
|
||||
isBot: true,
|
||||
isBotTech: true,
|
||||
allowed() {
|
||||
@@ -1224,7 +1230,7 @@
|
||||
b.dynamoBot();
|
||||
},
|
||||
remove() {
|
||||
tech.dynamoBotCount -= this.count;
|
||||
// tech.dynamoBotCount -= this.count;
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -2656,11 +2662,11 @@
|
||||
description: "clicking <strong style = 'font-size:150%;'>×</strong> to cancel a <strong class='color-f'>field</strong>, <strong class='color-m'>tech</strong>, or <strong class='color-g'>gun</strong><br>spawns <strong>8</strong> <strong class='color-h'>heals</strong>, <strong class='color-g'>ammo</strong>, and <strong class='color-r'>research</strong>",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
frequency: 2,
|
||||
frequency: 1,
|
||||
allowed() {
|
||||
return tech.isCancelDuplication
|
||||
return !tech.isDeterminism
|
||||
},
|
||||
requires: "futures exchange",
|
||||
requires: "not determinism",
|
||||
effect() {
|
||||
tech.isCancelRerolls = true
|
||||
},
|
||||
@@ -3586,6 +3592,7 @@
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
frequency: 2,
|
||||
isNonRefundable: true,
|
||||
isBot: true,
|
||||
isBotTech: true,
|
||||
allowed() {
|
||||
@@ -3597,7 +3604,7 @@
|
||||
b.missileBot();
|
||||
},
|
||||
remove() {
|
||||
tech.missileBotCount = 0;
|
||||
// tech.missileBotCount = 0;
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -4712,6 +4719,7 @@
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
frequency: 2,
|
||||
isNonRefundable: true,
|
||||
isBot: true,
|
||||
isBotTech: true,
|
||||
allowed() {
|
||||
@@ -4723,7 +4731,7 @@
|
||||
b.plasmaBot();
|
||||
},
|
||||
remove() {
|
||||
tech.plasmaBotCount = 0;
|
||||
// tech.plasmaBotCount = 0;
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user