diff --git a/img/ammo.webp b/img/ammo.webp
new file mode 100644
index 0000000..782d63d
Binary files /dev/null and b/img/ammo.webp differ
diff --git a/img/heals.webp b/img/heals.webp
new file mode 100644
index 0000000..d92dcd9
Binary files /dev/null and b/img/heals.webp differ
diff --git a/img/mass production.webp b/img/mass production.webp
new file mode 100644
index 0000000..b8cf5f8
Binary files /dev/null and b/img/mass production.webp differ
diff --git a/img/research.webp b/img/research.webp
new file mode 100644
index 0000000..99ac396
Binary files /dev/null and b/img/research.webp differ
diff --git a/js/bullet.js b/js/bullet.js
index ef2a272..a117aae 100644
--- a/js/bullet.js
+++ b/js/bullet.js
@@ -912,7 +912,7 @@ const b = {
x: m.Vx / 2 + speed * Math.cos(angle),
y: m.Vy / 2 + speed * Math.sin(angle)
});
- bullet[me].endCycle = simulation.cycle + Math.floor(m.crouch ? 120 : 80) * tech.isBulletsLastLonger;
+ bullet[me].endCycle = simulation.cycle + Math.floor(m.crouch ? 120 : 80) * tech.bulletsLastLonger;
bullet[me].restitution = 0.4;
bullet[me].do = function () {
this.force.y += this.mass * 0.0025; //extra gravity for harder arcs
@@ -939,7 +939,7 @@ const b = {
});
Composite.add(engine.world, bullet[me]); //add bullet to world
- bullet[me].endCycle = simulation.cycle + 70 * tech.isBulletsLastLonger;
+ bullet[me].endCycle = simulation.cycle + 70 * tech.bulletsLastLonger;
bullet[me].frictionAir = 0.07;
const MAG = 0.015
bullet[me].thrust = {
@@ -973,7 +973,7 @@ const b = {
y: m.Vy / 2 + speed * Math.sin(angle)
});
Composite.add(engine.world, bullet[me]); //add bullet to world
- bullet[me].endCycle = simulation.cycle + 70 * tech.isBulletsLastLonger;
+ bullet[me].endCycle = simulation.cycle + 70 * tech.bulletsLastLonger;
bullet[me].frictionAir = 0.07;
bullet[me].suckCycles = 40
const MAG = 0.015
@@ -1096,7 +1096,7 @@ const b = {
speed = 35
// speed = m.crouch ? 43 : 32
- bullet[me].endCycle = simulation.cycle + 70 * tech.isBulletsLastLonger;
+ bullet[me].endCycle = simulation.cycle + 70 * tech.bulletsLastLonger;
if (m.crouch) {
speed += 9
bullet[me].endCycle += 20;
@@ -1124,7 +1124,7 @@ const b = {
bullet[me].minDmgSpeed = 0;
bullet[me].damageRadius = 100;
bullet[me].maxDamageRadius = 450 * size + 130 * tech.isNeutronSlow //+ 150 * Math.random()
- bullet[me].radiusDecay = (0.81 + 0.15 * tech.isNeutronSlow) / tech.isBulletsLastLonger
+ bullet[me].radiusDecay = (0.81 + 0.15 * tech.isNeutronSlow) / tech.bulletsLastLonger
bullet[me].stuckTo = null;
bullet[me].stuckToRelativePosition = null;
if (tech.isRPG) {
@@ -1546,7 +1546,7 @@ const b = {
b.targetedNail(this.vertices[2], tech.fragments * Math.floor(2 + Math.random()))
}
if (tech.isFoamBall) {
- for (let i = 0, len = 4 * this.mass; i < len; i++) {
+ for (let i = 0, len = 3 * this.mass; i < len; i++) {
const radius = 5 + 8 * Math.random()
const velocity = {
x: Math.max(0.5, 2 - radius * 0.1),
@@ -2192,7 +2192,7 @@ const b = {
}
}
if (tech.isFoamBall) {
- for (let i = 0, len = Math.min(50, 3 + 4 * Math.sqrt(this.mass)); i < len; i++) {
+ for (let i = 0, len = Math.min(50, 2.5 + 3 * Math.sqrt(this.mass)); i < len; i++) {
const radius = 5 + 8 * Math.random()
const velocity = { x: Math.max(0.5, 2 - radius * 0.1), y: 0 }
b.foam(this.position, Vector.rotate(velocity, 6.28 * Math.random()), radius)
@@ -2410,7 +2410,7 @@ const b = {
frictionAir: 0.045,
dmg: 0, //damage done in addition to the damage from momentum
classType: "bullet",
- endCycle: simulation.cycle + Math.floor((230 + 40 * Math.random()) * tech.isBulletsLastLonger + 120 * tech.isMissileBiggest + 60 * tech.isMissileBig),
+ endCycle: simulation.cycle + Math.floor((230 + 40 * Math.random()) * tech.bulletsLastLonger + 120 * tech.isMissileBiggest + 60 * tech.isMissileBig),
collisionFilter: {
category: cat.bullet,
mask: cat.map | cat.body | cat.mob | cat.mobBullet | cat.mobShield
@@ -3215,7 +3215,7 @@ const b = {
category: cat.bullet,
mask: cat.map | cat.mob | cat.mobBullet | cat.mobShield //no collide with body
},
- endCycle: simulation.cycle + Math.floor((600 + Math.floor(Math.random() * 420)) * tech.isBulletsLastLonger),
+ endCycle: simulation.cycle + Math.floor((600 + Math.floor(Math.random() * 420)) * tech.bulletsLastLonger),
minDmgSpeed: 0,
playerOffPosition: { //used when moving towards player to keep spores separate
x: 100 * (Math.random() - 0.5),
@@ -3227,7 +3227,7 @@ const b = {
if (!who.alive) {
for (let i = 0; i < 3; i++) { //spawn 3 more
b.worm(this.position)
- bullet[bullet.length - 1].endCycle = Math.min(simulation.cycle + Math.floor(420 * tech.isBulletsLastLonger), this.endCycle + 180 + Math.floor(60 * Math.random())) //simulation.cycle + Math.floor(420 * tech.isBulletsLastLonger)
+ bullet[bullet.length - 1].endCycle = Math.min(simulation.cycle + Math.floor(420 * tech.bulletsLastLonger), this.endCycle + 180 + Math.floor(60 * Math.random())) //simulation.cycle + Math.floor(420 * tech.bulletsLastLonger)
}
}
this.endCycle = 0; //bullet ends cycle after doing damage
@@ -3332,7 +3332,7 @@ const b = {
category: cat.bullet,
mask: cat.map | cat.mob | cat.mobBullet | cat.mobShield //no collide with body
},
- endCycle: simulation.cycle + Math.floor((540 + Math.floor(Math.random() * 420)) * tech.isBulletsLastLonger),
+ endCycle: simulation.cycle + Math.floor((540 + Math.floor(Math.random() * 420)) * tech.bulletsLastLonger),
minDmgSpeed: 0,
playerOffPosition: { //used when moving towards player to keep spores separate
x: 100 * (Math.random() - 0.5),
@@ -3449,7 +3449,7 @@ const b = {
const me = bullet.length;
const THRUST = 0.0018
const RADIUS = 18
- const SCALE = 1 - 0.12 / tech.isBulletsLastLonger
+ const SCALE = 1 - 0.12 / tech.bulletsLastLonger
bullet[me] = Bodies.polygon(where.x, where.y, 3, RADIUS, {
angle: dir - Math.PI,
// inertia: Infinity,
@@ -3459,7 +3459,7 @@ const b = {
restitution: 0.9,
dmg: 1.3, //damage done in addition to the damage from momentum
lookFrequency: 14 + Math.floor(8 * Math.random()),
- endCycle: simulation.cycle + 65 * tech.isBulletsLastLonger + Math.floor(25 * Math.random()),
+ endCycle: simulation.cycle + 65 * tech.bulletsLastLonger + Math.floor(25 * Math.random()),
classType: "bullet",
collisionFilter: {
category: cat.bullet,
@@ -3534,7 +3534,7 @@ const b = {
restitution: 0,
density: 0.0005, // 0.001 is normal density
lookFrequency: 19 + Math.floor(7 * Math.random()),
- endCycle: simulation.cycle + Math.floor((900 * tech.isBulletsLastLonger + 420 * Math.random()) + Math.max(0, 150 - bullet.length)), // 13 - 19s
+ endCycle: simulation.cycle + Math.floor((900 * tech.bulletsLastLonger + 420 * Math.random()) + Math.max(0, 150 - bullet.length)), // 13 - 19s
classType: "bullet",
collisionFilter: {
category: cat.bullet,
@@ -3664,7 +3664,7 @@ const b = {
const SCALE = 2.25
Matter.Body.scale(who, SCALE, SCALE);
who.lookFrequency = 30 + Math.floor(11 * Math.random());
- who.endCycle += 3000 * tech.droneCycleReduction * tech.isBulletsLastLonger
+ who.endCycle += 3000 * tech.droneCycleReduction * tech.bulletsLastLonger
deliveryCount--
}
}
@@ -3690,7 +3690,7 @@ const b = {
density: 0.0005, // 0.001 is normal density
dmg: 0.34 + 0.12 * tech.isDroneTeleport + 0.15 * tech.isDroneFastLook, //damage done in addition to the damage from momentum
lookFrequency: (tech.isDroneFastLook ? 20 : 70) + Math.floor(17 * Math.random()),
- endCycle: simulation.cycle + Math.floor((950 + 400 * Math.random()) * tech.isBulletsLastLonger * tech.droneCycleReduction) + 5 * RADIUS + Math.max(0, 150 - bullet.length),
+ endCycle: simulation.cycle + Math.floor((950 + 400 * Math.random()) * tech.bulletsLastLonger * tech.droneCycleReduction) + 5 * RADIUS + Math.max(0, 150 - bullet.length),
classType: "bullet",
isDrone: true,
collisionFilter: {
@@ -3870,7 +3870,7 @@ const b = {
const SCALE = 2.25
Matter.Body.scale(this, SCALE, SCALE);
this.lookFrequency = 30 + Math.floor(11 * Math.random());
- this.endCycle += 3000 * tech.droneCycleReduction * tech.isBulletsLastLonger
+ this.endCycle += 3000 * tech.droneCycleReduction * tech.bulletsLastLonger
}
break;
}
@@ -3902,7 +3902,7 @@ const b = {
const SCALE = 2.25
Matter.Body.scale(this, SCALE, SCALE);
this.lookFrequency = 30 + Math.floor(11 * Math.random());
- this.endCycle += 3000 * tech.droneCycleReduction * tech.isBulletsLastLonger
+ this.endCycle += 3000 * tech.droneCycleReduction * tech.bulletsLastLonger
// this.frictionAir = 0
}
break;
@@ -3960,7 +3960,7 @@ const b = {
restitution: 0.4 + 0.199 * Math.random(),
dmg: 0, //0.24 damage done in addition to the damage from momentum and radiation
lookFrequency: 120 + Math.floor(23 * Math.random()),
- endCycle: simulation.cycle + Math.floor((900 + 110 * Math.random()) * tech.isBulletsLastLonger / tech.droneRadioDamage) + 5 * RADIUS + Math.max(0, 150 - 2 * bullet.length),
+ endCycle: simulation.cycle + Math.floor((900 + 110 * Math.random()) * tech.bulletsLastLonger / tech.droneRadioDamage) + 5 * RADIUS + Math.max(0, 150 - 2 * bullet.length),
classType: "bullet",
isDrone: true,
collisionFilter: {
@@ -4113,7 +4113,7 @@ const b = {
const SCALE = 2.25
Matter.Body.scale(this, SCALE, SCALE);
this.lookFrequency = 30 + Math.floor(11 * Math.random());
- this.endCycle += 1000 * tech.isBulletsLastLonger
+ this.endCycle += 1000 * tech.bulletsLastLonger
this.maxRadioRadius *= 1.25
}
break;
@@ -4146,7 +4146,7 @@ const b = {
const SCALE = 2.25
Matter.Body.scale(this, SCALE, SCALE);
this.lookFrequency = 30 + Math.floor(11 * Math.random());
- this.endCycle += 1000 * tech.isBulletsLastLonger
+ this.endCycle += 1000 * tech.bulletsLastLonger
this.maxRadioRadius *= 1.25
}
break;
@@ -4244,7 +4244,7 @@ const b = {
bullet[me].beforeDmg = function (who) {
if (tech.oneSuperBall) mobs.statusStun(who, 120) // (2.3) * 2 / 14 ticks (2x damage over 7 seconds)
if (tech.isFoamBall) {
- for (let i = 0, len = 6 * this.mass; i < len; i++) {
+ for (let i = 0, len = 5 * this.mass; i < len; i++) {
const radius = 5 + 8 * Math.random()
const velocity = { x: Math.max(0.5, 2 - radius * 0.1), y: 0 }
b.foam(this.position, Vector.rotate(velocity, 6.28 * Math.random()), radius)
@@ -4360,7 +4360,7 @@ const b = {
// frictionAir: 0.003,
// dmg: 0, //damage on impact
// damage: 0, //damage done over time
- // scale: 1 - 0.006 / tech.isBulletsLastLonger,
+ // scale: 1 - 0.006 / tech.bulletsLastLonger,
// classType: "bullet",
// collisionFilter: {
// category: cat.bullet,
@@ -4432,7 +4432,7 @@ const b = {
// // Matter.Body.setAngularVelocity(this.target, this.target.angularVelocity * 0.9)
// if (this.target.isShielded) {
// this.target.damage(m.dmgScale * this.damage, true); //shield damage bypass
- // const SCALE = 1 - 0.004 / tech.isBulletsLastLonger //shrink if mob is shielded
+ // const SCALE = 1 - 0.004 / tech.bulletsLastLonger //shrink if mob is shielded
// Matter.Body.scale(this, SCALE, SCALE);
// this.radius *= SCALE;
// } else {
@@ -4523,7 +4523,7 @@ const b = {
frictionAir: 0.003,
dmg: 0, //damage on impact
damage: tech.foamDamage * (tech.isFastFoam ? 2.8 : 1) * (tech.isBulletTeleport ? 1.53 : 1), //damage done over time
- scale: 1 - 0.006 / tech.isBulletsLastLonger * (tech.isFastFoam ? 1.65 : 1),
+ scale: 1 - 0.006 / tech.bulletsLastLonger * (tech.isFastFoam ? 1.65 : 1),
classType: "bullet",
collisionFilter: {
category: cat.bullet,
@@ -4602,7 +4602,7 @@ const b = {
// Matter.Body.setAngularVelocity(this.target, this.target.angularVelocity * 0.9)
if (this.target.isShielded) {
this.target.damage(m.dmgScale * this.damage, true); //shield damage bypass
- const SCALE = 1 - 0.004 / tech.isBulletsLastLonger //shrink if mob is shielded
+ const SCALE = 1 - 0.004 / tech.bulletsLastLonger //shrink if mob is shielded
Matter.Body.scale(this, SCALE, SCALE);
this.radius *= SCALE;
} else {
@@ -5566,11 +5566,11 @@ const b = {
restitution: 0.6 * (1 + 0.5 * Math.random()),
dmg: 0, // 0.14 //damage done in addition to the damage from momentum
minDmgSpeed: 2,
- lookFrequency: 17 + Math.floor(7 * Math.random()) - 10 * tech.isSoundBotUpgrade,
+ lookFrequency: 17 + Math.floor(7 * Math.random()) - 5 * tech.isSoundBotUpgrade,
cd: 0,
fireCount: 0,
- fireLimit: 5 + 3 * tech.isSoundBotUpgrade,
- delay: Math.floor((90 + (tech.isSoundBotUpgrade ? 0 : 90)) * b.fireCDscale),// + 30 - 20 * tech.isFoamBotUpgrade,//20 + Math.floor(85 * b.fireCDscale) - 20 * tech.isFoamBotUpgrade,
+ fireLimit: 5 + 2 * tech.isSoundBotUpgrade,
+ delay: Math.floor((120 + (tech.isSoundBotUpgrade ? 0 : 70)) * b.fireCDscale),// + 30 - 20 * tech.isFoamBotUpgrade,//20 + Math.floor(85 * b.fireCDscale) - 20 * tech.isFoamBotUpgrade,
acceleration: 0.005 * (1 + 0.5 * Math.random()),
range: 60 * (1 + 0.3 * Math.random()) + 3 * b.totalBots(), //how far from the player the bot will move
endCycle: Infinity,
@@ -5594,7 +5594,7 @@ const b = {
arc: halfArc * 2,
radius: 25,
resonanceCount: 0,
- dmg: (tech.isUpgraded ? 3 : 1.5) * m.dmgScale * tech.wavePacketDamage * tech.waveBeamDamage * (tech.isBulletTeleport ? 1.5 : 1),
+ dmg: (tech.isUpgraded ? 4 : 1.5) * m.dmgScale * tech.wavePacketDamage * tech.waveBeamDamage * (tech.isBulletTeleport ? 1.5 : 1),
})
},
fire() {
@@ -5634,7 +5634,7 @@ const b = {
ctx.strokeStyle = "rgba(0,0,0,0.6)" //"000";
ctx.lineWidth = 2 * tech.wavePacketDamage
ctx.beginPath();
- const end = 1200 * tech.isBulletsLastLonger
+ const end = 1200 * Math.sqrt(tech.bulletsLastLonger)
//this does less damage than the player phonon waves 2.3 -> 2
for (let i = this.waves.length - 1; i > -1; i--) {
const v1 = Vector.add(this.waves[i].position, Vector.mult(this.waves[i].unit1, this.waves[i].radius))
@@ -5649,7 +5649,7 @@ const b = {
if (!who.isShielded) {
who.force.x += 0.01 * (Math.random() - 0.5) * who.mass
who.force.y += 0.01 * (Math.random() - 0.5) * who.mass
- Matter.Body.setVelocity(who, { x: who.velocity.x * 0.95, y: who.velocity.y * 0.95 });
+ Matter.Body.setVelocity(who, { x: who.velocity.x * 0.98, y: who.velocity.y * 0.98 });
let vertices = who.vertices;
const vibe = 50 + who.radius * 0.15
ctx.moveTo(vertices[0].x + vibe * (Math.random() - 0.5), vertices[0].y + vibe * (Math.random() - 0.5));
@@ -5687,8 +5687,8 @@ const b = {
for (let j = 0, len = Math.min(30, hits.length); j < len; j++) {
const who = hits[j].body
//make them shake around
- who.force.x += 0.01 * (Math.random() - 0.5) * who.mass
- who.force.y += (0.01 * (Math.random() - 0.5) - simulation.g * 0.25) * who.mass //remove force of gravity
+ who.force.x += 0.005 * (Math.random() - 0.5) * who.mass
+ who.force.y += (0.005 * (Math.random() - 0.5) - simulation.g * 0.1) * who.mass //remove force of gravity
let vertices = who.vertices;
const vibe = 25
ctx.moveTo(vertices[0].x + vibe * (Math.random() - 0.5), vertices[0].y + vibe * (Math.random() - 0.5));
@@ -6742,13 +6742,13 @@ const b = {
x: SPEED * Math.cos(dir),
y: SPEED * Math.sin(dir)
});
- bullet[me].endCycle = simulation.cycle + 40 * tech.isBulletsLastLonger
+ bullet[me].endCycle = simulation.cycle + 40 * tech.bulletsLastLonger
bullet[me].minDmgSpeed = 15
if (tech.isShotgunReversed) Matter.Body.setDensity(bullet[me], 0.0015)
// bullet[me].restitution = 0.4
bullet[me].frictionAir = 0.034;
bullet[me].do = function () {
- const scale = 1 - 0.034 / tech.isBulletsLastLonger
+ const scale = 1 - 0.034 / tech.bulletsLastLonger
Matter.Body.scale(this, scale, scale);
};
}
@@ -6820,7 +6820,7 @@ const b = {
const me = bullet.length;
bullet[me] = Bodies.rectangle(m.pos.x + 50 * Math.cos(m.angle), m.pos.y + 50 * Math.sin(m.angle), 17, 4, b.fireAttributes(dir));
const end = END + Math.random() * 4
- bullet[me].endCycle = 2 * end * tech.isBulletsLastLonger + simulation.cycle
+ bullet[me].endCycle = 2 * end * tech.bulletsLastLonger + simulation.cycle
const speed = 25 * end / END
const dirOff = dir + (Math.random() - 0.5) * spread
Matter.Body.setVelocity(bullet[me], {
@@ -7066,7 +7066,7 @@ const b = {
ctx.strokeStyle = "rgba(0,0,0,0.6)" //"000";
ctx.lineWidth = 2 * tech.wavePacketDamage
ctx.beginPath();
- const end = 700 * Math.sqrt(tech.isBulletsLastLonger)
+ const end = 700 * Math.sqrt(tech.bulletsLastLonger)
const damage = 2.3 * m.dmgScale * tech.wavePacketDamage * tech.waveBeamDamage * (tech.isBulletTeleport ? 1.43 : 1) * (tech.isInfiniteWaveAmmo ? 0.75 : 1) //damage is lower for large radius mobs, since they feel the waves longer
for (let i = this.waves.length - 1; i > -1; i--) {
@@ -7163,7 +7163,7 @@ const b = {
ctx.strokeStyle = "rgba(0,0,0,0.6)" //"000";
ctx.lineWidth = 2 * tech.wavePacketDamage
ctx.beginPath();
- const end = 1100 * tech.isBulletsLastLonger
+ const end = 1100 * tech.bulletsLastLonger
const damage = 2.3 * m.dmgScale * tech.wavePacketDamage * tech.waveBeamDamage * (tech.isBulletTeleport ? 1.4 : 1) * (tech.isInfiniteWaveAmmo ? 0.75 : 1) //damage is lower for large radius mobs, since they feel the waves longer
for (let i = this.waves.length - 1; i > -1; i--) {
const v1 = Vector.add(this.waves[i].position, Vector.mult(this.waves[i].unit1, this.waves[i].radius))
@@ -7270,7 +7270,7 @@ const b = {
// }
},
fireTransverse() {
- totalCycles = Math.floor((3.5) * 35 * tech.waveReflections * tech.isBulletsLastLonger / Math.sqrt(tech.waveReflections * 0.5))
+ totalCycles = Math.floor((3.5) * 35 * tech.waveReflections * tech.bulletsLastLonger / Math.sqrt(tech.waveReflections * 0.5))
const me = bullet.length;
bullet[me] = Bodies.polygon(m.pos.x + 25 * Math.cos(m.angle), m.pos.y + 25 * Math.sin(m.angle), 5, 4, {
angle: m.angle,
diff --git a/js/level.js b/js/level.js
index 85cc774..62d16ad 100644
--- a/js/level.js
+++ b/js/level.js
@@ -10,7 +10,7 @@ const level = {
// playableLevels: ["pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion"],
//see level.populateLevels: (intro, ... , reservoir or factory, reactor, ... , gauntlet, final) added later
playableLevels: ["labs", "rooftops", "skyscrapers", "warehouse", "highrise", "office", "aerie", "satellite", "sewers", "testChamber", "pavilion", "lock"],
- communityLevels: ["gauntlet", "stronghold", "basement", "crossfire", "vats", "run", "ngon", "house", "perplex", "coliseum", "tunnel", "islands", "temple", "dripp", "biohazard", "stereoMadness", "yingYang", "staircase", "fortress", "commandeer", "clock", "buttonbutton", "downpour", "superNgonBros", "underpass", "cantilever", "dojo"],
+ communityLevels: ["gauntlet", "stronghold", "basement", "crossfire", "vats", "run", "ngon", "house", "perplex", "coliseum", "tunnel", "islands", "temple", "dripp", "biohazard", "stereoMadness", "yingYang", "staircase", "fortress", "commandeer", "clock", "buttonbutton", "downpour", "superNgonBros", "underpass", "cantilever", "dojo", "tlinat", "ruins"],
trainingLevels: ["walk", "crouch", "jump", "hold", "throw", "throwAt", "deflect", "heal", "fire", "nailGun", "shotGun", "superBall", "matterWave", "missile", "stack", "mine", "grenades", "harpoon"],
levels: [],
start() {
@@ -37,8 +37,8 @@ const level = {
// tech.giveTech("von Neumann probe")
// tech.giveTech("path integration")
// tech.giveTech("cordyceps")
- // for (let i = 0; i < 1; ++i) tech.giveTech("sympathetic resonance")
- // for (let i = 0; i < 1; ++i) tech.giveTech("sound-bot")
+ // for (let i = 0; i < 1; ++i) tech.giveTech("mass production")
+ // for (let i = 0; i < 2; ++i) tech.giveTech("sound-bot")
// for (let i = 0; i < 1; ++i) tech.giveTech("foam-bot")
// for (let i = 0; i < 1; ++i) tech.giveTech("nail-bot")
// for (let i = 0; i < 1; ++i) tech.giveTech("sound-bot upgrade")
@@ -61,7 +61,7 @@ const level = {
// spawn.tetherBoss(1900, -500, { x: 1900, y: -500 })
// for (let i = 0; i < 40; ++i) tech.giveTech()
- level[simulation.isTraining ? "walk" : "intro"]() //normal starting level ************************************************
+ level[simulation.isTraining ? "walk" : "intro"]() //normal starting level **************************************************
// simulation.isAutoZoom = false; //look in close
// simulation.zoomScale *= 0.5;
@@ -4251,10 +4251,7 @@ const level = {
let isDoorLeft, isDoorRight, x, y
doCustom = []
doCustomTopLayer = []
- offset = {
- x: 0,
- y: 0
- }
+ offset = { x: 0, y: 0 }
const mobSpawnChance = 0 // Math.random() < chance + 0.07 * simulation.difficulty
enterOptions = [
(x = offset.x, y = offset.y) => { //lasers
@@ -10790,9 +10787,9 @@ const level = {
spawn.randomLevelBoss(x, y, ["historyBoss"]);
tech.isScaleMobsWithDuplication = false
} else if (tech.isResearchBoss) {
- if (powerUps.research.count > 3) {
- powerUps.research.changeRerolls(-4)
- simulation.makeTextLog(`m.research -= 4
${powerUps.research.count}`)
+ if (powerUps.research.count > 2) {
+ powerUps.research.changeRerolls(-3)
+ simulation.makeTextLog(`m.research -= 3
${powerUps.research.count}`)
} else {
tech.addJunkTechToPool(0.49)
}
@@ -13778,10 +13775,10 @@ const level = {
spawn.historyBoss(x, y)
tech.isScaleMobsWithDuplication = false
} else if (tech.isResearchBoss) {
- if (powerUps.research.count > 3) {
- powerUps.research.changeRerolls(-4)
+ if (powerUps.research.count > 2) {
+ powerUps.research.changeRerolls(-3)
simulation.makeTextLog(
- `m.research -= 4
${powerUps.research.count}`
+ `m.research -= 3
${powerUps.research.count}`
)
} else {
tech.addJunkTechToPool(0.49)
@@ -16409,7 +16406,6 @@ const level = {
level.custom = () => {
level.exit.drawAndCheck();
-
level.enter.draw();
};
level.customTopLayer = () => {
@@ -21437,8 +21433,8 @@ const level = {
ctx.strokeStyle = "rgba(0,0,0,0.6)" //"000";
ctx.lineWidth = 2 * tech.wavePacketDamage
ctx.beginPath();
- // const end = 1100 * tech.isBulletsLastLonger / Math.sqrt(tech.waveReflections * 0.5) //should equal about 1767
- const end = 1100 * tech.isBulletsLastLonger * Math.pow(0.93, tech.waveReflections) //should equal about 1767
+ // const end = 1100 * tech.bulletsLastLonger / Math.sqrt(tech.waveReflections * 0.5) //should equal about 1767
+ const end = 1100 * tech.bulletsLastLonger * Math.pow(0.93, tech.waveReflections) //should equal about 1767
const damage = 0.0005 * simulation.dmgScale//normal damage for m basically shreds m, so had to nerf this
for (let i = this.waves.length - 1; i > -1; i--) {
const v1 = Vector.add(this.waves[i].position, Vector.mult(this.waves[i].unit1, this.waves[i].radius))
@@ -24619,8 +24615,8 @@ const level = {
ctx.strokeStyle = "rgba(0,0,0,0.6)" //"000";
ctx.lineWidth = 2 * tech.wavePacketDamage
ctx.beginPath();
- // const end = 1100 * tech.isBulletsLastLonger / Math.sqrt(tech.waveReflections * 0.5) //should equal about 1767
- const end = 1100 * tech.isBulletsLastLonger * Math.pow(0.93, tech.waveReflections) //should equal about 1767
+ // const end = 1100 * tech.bulletsLastLonger / Math.sqrt(tech.waveReflections * 0.5) //should equal about 1767
+ const end = 1100 * tech.bulletsLastLonger * Math.pow(0.93, tech.waveReflections) //should equal about 1767
const damage = 0.0005 * simulation.dmgScale//normal damage for m basically shreds m, so had to nerf this
for (let i = this.waves.length - 1; i > -1; i--) {
const v1 = Vector.add(this.waves[i].position, Vector.mult(this.waves[i].unit1, this.waves[i].radius))
@@ -26052,6 +26048,1449 @@ const level = {
boss.showHealthBar = true;
powerUps.addResearchToLevel() //needs to run after mobs are spawned
},
+ tlinat() { // _Destined_ formerly Richard0820#2652
+ simulation.makeTextLog(`tlinat by Richard0820`);
+
+ simulation.fallHeight = Infinity;
+ level.setPosToSpawn(0, -1000);
+ level.exit.x = 5100;
+ level.exit.y = 3770;
+ spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20);
+ spawn.mapRect(level.exit.x, level.exit.y + 20, 100, 20);
+ level.defaultZoom = 2500
+ simulation.zoomTransition(level.defaultZoom)
+ document.body.style.backgroundColor = "#d8dadf";
+ let teleportIndex = 0;
+ let footIndex = 0;
+ simulation.makeTextLog(`Walk right to tp to maze
Exit is at the bottom left`)
+ Matter.Body.scale(player.parts[3], 2, 2);
+ level.custom = () => {
+ level.exit.drawAndCheck();
+ level.enter.draw();
+ if (player.position.y > 100000) {
+ Matter.Body.setPosition(player, {
+ x: 5100,
+ y: -5925
+ })
+ }
+ if (player.position.x > 2500 && teleportIndex == 0) {
+ Matter.Body.setPosition(player, {
+ x: 5100,
+ y: -5925
+ })
+ teleportIndex++;
+ for (let i = 0; i < map.length; i++) {
+ if (Math.random() < 0.75) { //75% chance
+ spawn.ghoster(map[i].position.x, map[i].position.y)
+ }
+ }
+ simulation.makeTextLog(`Watch out for ghosters
Peace ✌️`)
+ }
+ if ( //check
+ player.position.x > level.exit.x &&
+ player.position.x < level.exit.x + 100 &&
+ player.position.y > level.exit.y - 150 &&
+ player.position.y < level.exit.y - 0 &&
+ player.velocity.y < 0.15 &&
+ footIndex == 0
+ ) {
+ footIndex++;
+ Matter.Body.scale(player.parts[3], 1 / 2, 1 / 2);
+ }
+ //ctx.drawImage(image, 1650 - 750, -2450, 725, 725)
+ };
+ level.customTopLayer = () => {
+ if (player.position.x > -1200 && player.position.x < 4500) { //does not render when in the maze
+ drawText(2000, -3000, "JOIN OUR DISCORD SERVER");
+ ctx.fillStyle = "black"
+ ctx.fillRect(1725, -2375, 25, 175);
+ ctx.fillRect(1725, -2375, 175, 25);
+ ctx.fillRect(1875, -2375, 25, 175);
+ ctx.fillRect(1725, -2225, 175, 25);
+ ctx.fillRect(1800, -2325, 25, 25);
+ ctx.fillRect(1775, -2325, 75, 75);
+ ctx.fillRect(1925, -2350, 50, 25);
+ ctx.fillRect(1950, -2350, 25, 25);
+ ctx.fillRect(1950, -2375, 25, 100);
+ ctx.fillRect(1925, -2300, 50, 25);
+ ctx.fillRect(1925, -2250, 25, 50);
+ ctx.fillRect(1975, -2275, 25, 75);
+ ctx.fillRect(1975, -2325, 50, 25);
+ ctx.fillRect(2000, -2350, 25, 75);
+ ctx.fillRect(2000, -2350, 100, 25);
+ ctx.fillRect(2075, -2375, 25, 50);
+ ctx.fillRect(2125, -2375, 25, 25);
+ ctx.fillRect(2175, -2375, 25, 175);
+ ctx.fillRect(2175, -2225, 175, 25);
+ ctx.fillRect(2325, -2375, 25, 175);
+ ctx.fillRect(2175, -2375, 175, 25);
+ ctx.fillRect(2225, -2300, 25, 25);
+ ctx.fillRect(2225, -2325, 75, 75);
+ ctx.fillRect(2025, -2275, 25, 25);
+ ctx.fillRect(2050, -2300, 25, 25);
+ ctx.fillRect(2100, -2300, 50, 50);
+ ctx.fillRect(2050, -2250, 75, 25);
+ ctx.fillRect(2075, -2250, 25, 50);
+ ctx.fillRect(1725, -2175, 125, 25);
+ ctx.fillRect(1800, -2175, 50, 50);
+ ctx.fillRect(1875, -2175, 100, 25);
+ ctx.fillRect(1725, -2125, 25, 175);
+ ctx.fillRect(1725, -2125, 50, 25);
+ ctx.fillRect(1725, -2075, 75, 50);
+ ctx.fillRect(1775, -2100, 25, 75);
+ ctx.fillRect(1775, -2075, 50, 25);
+ ctx.fillRect(1825, -2050, 25, 50);
+ ctx.fillRect(1800, -2025, 50, 25);
+ ctx.fillRect(1775, -2000, 25, 25);
+ ctx.fillRect(1800, -1975, 25, 25);
+ ctx.fillRect(1975, -2175, 25, 25);
+ ctx.fillRect(1900, -2175, 25, 150);
+ ctx.fillRect(1875, -2025, 25, 25);
+ ctx.fillRect(1925, -2025, 25, 25);
+ ctx.fillRect(1900, -2000, 25, 25);
+ ctx.fillRect(1875, -1975, 25, 25);
+ ctx.fillRect(1950, -2000, 25, 25);
+ ctx.fillRect(1925, -1975, 75, 50);
+ ctx.fillRect(1925, -1925, 25, 25);
+ ctx.fillRect(2025, -2225, 25, 75);
+ ctx.fillRect(2125, -2225, 25, 50);
+ ctx.fillRect(1875, -2125, 50, 25);
+ ctx.fillRect(1850, -2075, 125, 25);
+ ctx.fillRect(1950, -2175, 25, 125);
+ ctx.fillRect(1950, -2100, 75, 25);
+ ctx.fillRect(2000, -2125, 25, 75);
+ ctx.fillRect(1975, -2050, 25, 25);
+ ctx.fillRect(2025, -2050, 25, 25);
+ ctx.fillRect(2000, -2125, 75, 25);
+ ctx.fillRect(2050, -2125, 25, 50);
+ ctx.fillRect(2050, -2100, 50, 25);
+ ctx.fillRect(2075, -2175, 50, 50);
+ ctx.fillRect(2100, -2150, 25, 50);
+ ctx.fillRect(2100, -2075, 25, 25);
+ ctx.fillRect(2125, -2100, 50, 25);
+ ctx.fillRect(2150, -2175, 25, 100);
+ ctx.fillRect(2100, -2150, 75, 25);
+ ctx.fillRect(1725, -1925, 25, 175);
+ ctx.fillRect(1725, -1925, 175, 25);
+ ctx.fillRect(1875, -1925, 25, 175);
+ ctx.fillRect(1725, -1775, 175, 25);
+ ctx.fillRect(1775, -1875, 75, 75);
+ ctx.fillRect(1925, -1875, 25, 125);
+ ctx.fillRect(1925, -1775, 75, 25);
+ ctx.fillRect(1925, -1875, 125, 25);
+ ctx.fillRect(2025, -1875, 25, 100);
+ ctx.fillRect(1975, -1900, 25, 75);
+ ctx.fillRect(1975, -1900, 50, 25);
+ ctx.fillRect(2000, -1925, 100, 25);
+ ctx.fillRect(2050, -2025, 50, 25);
+ ctx.fillRect(2050, -2025, 25, 50);
+ ctx.fillRect(2025, -2000, 50, 25);
+ ctx.fillRect(2025, -2000, 25, 50);
+ ctx.fillRect(2025, -1825, 75, 25);
+ ctx.fillRect(2075, -1825, 25, 50);
+ ctx.fillRect(2100, -1775, 25, 25);
+ ctx.fillRect(2075, -1875, 25, 25);
+ ctx.fillRect(2100, -1850, 50, 25);
+ ctx.fillRect(2125, -1975, 25, 150);
+ ctx.fillRect(2150, -2125, 50, 25);
+ ctx.fillRect(2200, -2175, 25, 50);
+ ctx.fillRect(2200, -2150, 50, 25);
+ ctx.fillRect(2225, -2150, 25, 50);
+ ctx.fillRect(2250, -2175, 25, 25);
+ ctx.fillRect(2300, -2175, 25, 25);
+ ctx.fillRect(2325, -2150, 25, 25);
+ ctx.fillRect(2275, -2125, 25, 25);
+ ctx.fillRect(2175, -2075, 100, 25);
+ ctx.fillRect(2300, -2075, 50, 25);
+ ctx.fillRect(2125, -2050, 125, 25);
+ ctx.fillRect(2225, -2075, 25, 75);
+ ctx.fillRect(2175, -2050, 25, 50);
+ ctx.fillRect(2150, -2050, 25, 75);
+ ctx.fillRect(2075, -1975, 200, 25);
+ ctx.fillRect(2225, -1975, 25, 200);
+ ctx.fillRect(2175, -1925, 25, 25);
+ ctx.fillRect(2125, -1875, 150, 25);
+ ctx.fillRect(2250, -1900, 25, 50);
+ ctx.fillRect(2275, -1925, 75, 25);
+ ctx.fillRect(2325, -2025, 25, 125);
+ ctx.fillRect(2275, -2025, 75, 25);
+ ctx.fillRect(2300, -2025, 50, 50);
+ ctx.fillRect(2175, -1875, 25, 50);
+ ctx.fillRect(2125, -1800, 150, 25);
+ ctx.fillRect(2275, -1825, 25, 25);
+ ctx.fillRect(2300, -1850, 50, 25);
+ ctx.fillRect(2325, -1850, 25, 50);
+ ctx.fillRect(2300, -1800, 25, 50);
+ ctx.fillRect(2275, -1775, 75, 25);
+ }
+ };
+ spawn.mapRect(-1000, -950, 5950, 100);
+ spawn.mapRect(-1325, -3450, 100, 2575);
+ spawn.mapRect(-1325, -950, 350, 100);
+ spawn.mapRect(4850, -3400, 100, 2550);
+ spawn.mapRect(-1325, -3450, 6275, 100);
+ maze(10000, -1000, 10000, 10000, 50);
+
+ function maze(x, y, width, height, cells) {
+ const cellWidth = width / cells;
+ const cellHeight = height / cells;
+ const startX = x - (width / 2);
+ const startY = y - (height / 2);
+ const matrix = [];
+ for (let i = 0; i < cells; i++) {
+ matrix[i] = [];
+ for (let j = 0; j < cells; j++) {
+ matrix[i][j] = 1;
+ }
+ }
+ const stack = [];
+
+ function carveMaze(x, y) {
+ matrix[x][y] = 0;
+ const directions = [{
+ dx: 0,
+ dy: -1
+ }, // Up
+ {
+ dx: 1,
+ dy: 0
+ }, // Right
+ {
+ dx: 0,
+ dy: 1
+ }, // Down
+ {
+ dx: -1,
+ dy: 0
+ } // Left
+ ];
+ directions.sort(() => Math.random() - 0.5);
+ for (const direction of directions) {
+ const nextX = x + direction.dx * 2;
+ const nextY = y + direction.dy * 2;
+ if (nextX >= 0 && nextX < cells && nextY >= 0 && nextY < cells && matrix[nextX][nextY] === 1) {
+ matrix[x + direction.dx][y + direction.dy] = 0;
+ matrix[nextX][nextY] = 0;
+ stack.push({
+ x: x + direction.dx,
+ y: y + direction.dy
+ });
+ carveMaze(nextX, nextY);
+ }
+ }
+ }
+ carveMaze(0, 0);
+ matrix[cells - 1][cells - 1] = 1;
+ for (let i = -1; i < cells + 1; i++) {
+ let startCol = -1;
+ let endCol = -1;
+ for (let j = -1; j < cells + 1; j++) {
+ if (i >= 0 && i < cells && j >= 0 && j < cells && matrix[i][j] === 1) {
+ if (startCol === -1) {
+ startCol = j;
+ }
+ endCol = j;
+ } else {
+ if (startCol !== -1) {
+ const rectX = startX + i * cellWidth;
+ const rectY = startY + startCol * cellHeight;
+ const rectWidth = cellWidth;
+ const rectHeight = (endCol - startCol + 1) * cellHeight;
+ if (rectHeight !== cellHeight) {
+ spawn.mapRect(rectX, rectY, rectWidth, rectHeight);
+ }
+ startCol = -1;
+ endCol = -1;
+ }
+ }
+ }
+ }
+ for (let j = -1; j < cells + 1; j++) {
+ let startRow = -1;
+ let endRow = -1;
+ for (let i = -1; i < cells + 1; i++) {
+ if (i >= 0 && i < cells && j >= 0 && j < cells && matrix[i][j] === 1) {
+ if (startRow === -1) {
+ startRow = i;
+ }
+ endRow = i;
+ } else {
+ if (startRow !== -1) {
+ const rectX = startX + startRow * cellWidth;
+ const rectY = startY + j * cellHeight;
+ const rectWidth = (endRow - startRow + 1) * cellWidth;
+ const rectHeight = cellHeight;
+ if (rectWidth !== cellWidth) {
+ spawn.mapRect(rectX, rectY, rectWidth, rectHeight);
+ }
+ startRow = -1;
+ endRow = -1;
+ }
+ }
+ }
+ }
+ spawn.mapRect(startX - cellWidth, startY - cellHeight, cellWidth * cells, cellHeight)
+ spawn.mapRect(startX - cellWidth, startY - cellHeight, cellWidth, cellHeight * cells)
+ spawn.mapRect(startX + (cells - 1) * cellWidth, startY - cellHeight, cellWidth, cellHeight * (cells + 1))
+ spawn.mapRect(startX - cellWidth, startY + (cells - 1) * cellHeight, cellWidth * (cells + 1), cellHeight)
+ return matrix;
+ }
+
+ function countAdjacentWalls(matrix, x, y) {
+ let count = 0;
+ const directions = [{
+ dx: 0,
+ dy: -1
+ }, // Up
+ {
+ dx: 1,
+ dy: 0
+ }, // Right
+ {
+ dx: 0,
+ dy: 1
+ }, // Down
+ {
+ dx: -1,
+ dy: 0
+ } // Left
+ ];
+ for (const direction of directions) {
+ const neighborX = x + direction.dx;
+ const neighborY = y + direction.dy;
+ if (neighborX >= 0 && neighborX < matrix.length && neighborY >= 0 && neighborY < matrix[0].length && matrix[neighborX][neighborY] === 1) {
+ count++;
+ }
+ }
+ return count;
+ }
+ function drawText(x, y, letters) {
+ const blockSize = 50;
+ const padding = -30;
+ const lettersData = {
+ 'J': [' #### ', ' # ', ' # ', ' # ', ' # # ', ' # # ', ' ## ',],
+ 'I': [' # ', ' # ', ' # ', ' # ', ' # ', ' # ', ' # ',],
+ 'N': [' # # ', ' ## # ', ' ## # ', ' # ## ', ' # ## ', ' # # ', ' # # ',],
+ ' ': [' ', ' ', ' ', ' ', ' ', ' ', ' ',],
+ 'O': [' ## ', ' # # ', ' # # ', ' # # ', ' # # ', ' # # ', ' ## ',],
+ 'U': [' # # ', ' # # ', ' # # ', ' # # ', ' # # ', ' # # ', ' ### ',],
+ 'R': [' #### ', ' # #', ' #### ', ' # # ', ' # # ', ' # #', ' # #',],
+ 'D': [' ### ', ' # ## ', ' # # ', ' # # ', ' # # ', ' # ## ', ' ### ',],
+ 'S': [' #### ', ' # ', ' # ', ' ### ', ' ## ', ' # ', ' ##### ',],
+ 'C': [' ##### ', ' # ', ' # ', ' # ', ' # ', ' # ', ' ##### ',],
+ 'V': [' # # ', ' # # ', ' # # ', ' # # ', ' # # ', ' # # ', ' # ',],
+ 'E': [' ##### ', ' # ', ' # ', ' ##### ', ' # ', ' # ', ' ##### ',],
+ };
+ const drawBlock = (x, y) => {
+ ctx.fillStyle = "black"
+ ctx.fillRect(x, y, blockSize, blockSize);
+ };
+ const drawLetter = (letter, x, y) => {
+ const letterData = lettersData[letter];
+ if (letterData) {
+ for (let row = 0; row < letterData.length; row++) {
+ const rowData = letterData[row];
+ for (let col = 0; col < rowData.length; col++) {
+ const char = rowData[col];
+ if (char === '#') {
+ const blockX = x + (col * (blockSize + padding));
+ const blockY = y + (row * (blockSize + padding));
+ drawBlock(blockX, blockY);
+ }
+ }
+ }
+ }
+ };
+ for (let i = 0; i < letters.length; i++) {
+ const char = letters[i];
+ const letterX = x + (i * (blockSize * 5)) - Math.abs(x * 1.5); // Adjust spacing between letters
+ const letterY = y;
+ drawLetter(char, letterX, letterY);
+ }
+ }
+ },
+ ruins() { // by SiddhUPe
+ // simulation.enableConstructMode()
+ simulation.makeTextLog(`ruins by SiddhUPe`);
+
+ level.setPosToSpawn(0, -50); //normal spawn
+ level.exit.x = 19531;
+ level.exit.y = 882 + 70;
+ spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20); //bump for level entrance
+ spawn.mapRect(level.exit.x, level.exit.y + 20, 100, 20); //bump for level exit
+ level.defaultZoom = 1800
+ simulation.zoomTransition(level.defaultZoom)
+ document.body.style.backgroundColor = "#d8dadf";
+ // color.map = "#444" //custom map color
+
+
+ level.customTopLayer = () => { };
+ spawn.mapRect(875, 0, 1000, 100);
+ spawn.mapRect(1825, -400, 50, 225);
+ spawn.mapRect(1825, -400, 675, 50);
+ spawn.mapRect(1825, 0, 675, 100);
+ spawn.mapRect(2500, -575, 50, 225);
+ spawn.mapRect(2500, -575, 850, 50);
+ spawn.mapRect(2500, -100, 875, 175);
+ spawn.mapRect(2500, 75, 875, 25);
+ spawn.mapRect(3350, -575, 25, 50);
+ spawn.mapRect(2450, -50, 75, 75);
+ spawn.mapRect(2425, -25, 25, 25);
+ spawn.mapRect(2475, -75, 25, 25);
+ spawn.mapRect(3375, -575, 75, 325);
+ spawn.mapRect(3375, -100, 75, 300);
+ spawn.mapRect(3450, -50, 25, 250);
+ spawn.mapRect(3475, -25, 25, 225);
+ spawn.mapRect(3500, 0, 25, 200);
+ spawn.mapRect(3525, 25, 25, 175);
+ spawn.mapRect(3550, 75, 25, 125);
+ spawn.mapRect(3550, 50, 25, 150);
+ spawn.mapRect(3575, 75, 25, 125);
+ spawn.mapRect(3600, 100, 25, 100);
+ spawn.mapRect(3625, 150, 25, 50);
+ spawn.mapRect(2875, -1375, 350, 75);
+ spawn.mapRect(3150, -1375, 75, 350);
+ spawn.mapRect(3100, -1300, 50, 50);
+ spawn.mapRect(3075, -1300, 25, 25);
+ spawn.mapRect(3125, -1250, 25, 25);
+ spawn.mapRect(2825, -1375, 50, 125);
+ spawn.mapRect(3100, -1025, 125, 50);
+ spawn.mapRect(2800, -1350, 25, 75);
+ spawn.mapRect(3125, -975, 75, 25);
+ spawn.mapRect(3225, -1350, 25, 300);
+ spawn.mapRect(2875, -1400, 275, 25);
+ spawn.mapRect(2900, -1425, 225, 25);
+ spawn.mapRect(3250, -1325, 25, 250);
+ spawn.mapRect(2875, -1300, 25, 25);
+ spawn.mapRect(3125, -1050, 50, 25);
+ spawn.mapRect(5325, 800, 50, 225);
+ spawn.mapRect(5325, 975, 300, 50);
+ spawn.mapRect(5375, 925, 50, 50);
+ spawn.mapRect(5375, 900, 25, 25);
+ spawn.mapRect(5425, 950, 25, 25);
+ spawn.mapRect(5325, 775, 100, 25);
+ spawn.mapRect(5625, 925, 25, 100);
+ spawn.mapRect(5350, 800, 50, 25);
+ spawn.mapRect(5600, 950, 25, 50);
+ spawn.mapRect(5300, 800, 25, 175);
+ spawn.mapRect(5400, 1025, 225, 25);
+ spawn.mapRect(5450, 1050, 125, 25);
+ spawn.mapRect(5275, 850, 25, 100);
+ spawn.mapRect(5350, 750, 50, 25);
+ spawn.mapRect(5650, 950, 25, 50);
+ spawn.mapRect(16775, -975, 275, 50);
+ spawn.mapRect(17000, -975, 50, 200);
+ spawn.mapRect(16775, -975, 25, 100);
+ spawn.mapRect(17000, -775, 50, 50);
+ spawn.mapRect(16975, -725, 75, 25);
+ spawn.mapRect(16950, -925, 50, 50);
+ spawn.mapRect(16925, -925, 75, 25);
+ spawn.mapRect(17000, -925, 25, 75);
+ spawn.mapRect(16975, -925, 25, 50);
+ spawn.mapRect(16975, -925, 25, 75);
+ spawn.mapRect(16800, -1000, 200, 25);
+ spawn.mapRect(16850, -1025, 100, 25);
+ spawn.mapRect(17050, -925, 25, 200);
+ spawn.mapRect(17075, -925, 25, 150);
+ spawn.mapRect(16775, -925, 50, 25);
+ spawn.mapRect(17000, -750, 25, 25);
+ spawn.mapRect(16975, -750, 25, 50);
+ spawn.mapRect(16950, -725, 75, 25);
+ spawn.mapRect(9475, -1150, 50, 200);
+ spawn.mapRect(9475, -1150, 25, 25);
+ spawn.mapRect(9475, -1150, 300, 50);
+ spawn.mapRect(9725, -1150, 25, 25);
+ spawn.mapRect(9725, -1150, 50, 200);
+ spawn.mapRect(9500, -975, 25, 25);
+ spawn.mapRect(9500, -975, 75, 25);
+ spawn.mapRect(9700, -975, 25, 25);
+ spawn.mapRect(9675, -975, 75, 25);
+ spawn.mapRect(9525, -1175, 200, 25);
+ spawn.mapRect(9550, -1200, 150, 100);
+ spawn.mapRect(9450, -1125, 50, 150);
+ spawn.mapRect(9750, -1125, 50, 150);
+ spawn.mapRect(9525, -1100, 50, 50);
+ spawn.mapRect(9675, -1100, 50, 50);
+ spawn.mapRect(9575, -1100, 25, 25);
+ spawn.mapRect(9650, -1100, 25, 25);
+ spawn.mapRect(9500, -1050, 50, 25);
+ spawn.mapRect(9700, -1100, 25, 75);
+ spawn.mapRect(11925, -1175, 75, 275);
+ spawn.mapRect(11925, -1175, 475, 75);
+ spawn.mapRect(12325, -1175, 75, 275);
+ spawn.mapRect(11925, -925, 175, 25);
+ spawn.mapRect(12225, -925, 175, 25);
+ spawn.mapRect(11950, -925, 125, 50);
+ spawn.mapRect(12275, -925, 100, 50);
+ spawn.mapRect(11925, -1200, 475, 25);
+ spawn.mapRect(11975, -1225, 375, 25);
+ spawn.mapRect(12000, -1225, 50, 25);
+ spawn.mapRect(12000, -1275, 325, 75);
+ spawn.mapRect(11900, -1175, 50, 250);
+ spawn.mapRect(12375, -1175, 50, 250);
+ spawn.mapRect(11900, -1150, 50, 150);
+ spawn.mapRect(11875, -1150, 50, 200);
+ spawn.mapRect(12375, -1150, 75, 200);
+ spawn.mapRect(11975, -1100, 50, 25);
+ spawn.mapRect(12300, -1100, 75, 25);
+ spawn.mapRect(12300, -950, 25, 50);
+ spawn.mapRect(12000, -950, 25, 75);
+
+ spawn.mapRect(3625, 125, 25, 50);
+ spawn.mapRect(3650, 150, 25, 50);
+ spawn.mapRect(3675, 175, 25, 25);
+ spawn.mapRect(3450, -75, 25, 50);
+ spawn.mapRect(3475, -50, 25, 125);
+ spawn.mapRect(3500, -25, 25, 125);
+ spawn.mapRect(3500, 0, 50, 125);
+ spawn.mapRect(3550, 25, 25, 125);
+ spawn.mapRect(3575, 50, 25, 125);
+ spawn.mapRect(3600, 75, 25, 75);
+ spawn.mapRect(3600, 100, 50, 75);
+ spawn.mapRect(3650, 125, 25, 75);
+ spawn.mapRect(3675, 150, 25, 50);
+ spawn.mapRect(3675, 150, 75, 450);
+ spawn.mapRect(3675, 525, 700, 75);
+ spawn.mapRect(4300, 150, 75, 450);
+ mover = level.mover(3375, -100, 75, 100);
+ pool = level.hazard(3750, 200, 550, 325);
+ spawn.mapRect(-150, -225, 75, 325);
+ spawn.mapRect(-150, -325, 425, 100);
+ spawn.mapRect(-100, -400, 300, 75);
+ spawn.mapRect(-25, -475, 150, 75);
+ spawn.mapRect(200, -350, 25, 50);
+ spawn.mapRect(-50, -425, 25, 100);
+ spawn.mapRect(-125, -350, 25, 100);
+ spawn.mapRect(100, -425, 50, 125);
+ spawn.mapRect(1875, -450, 625, 50);
+ spawn.mapRect(1950, -500, 550, 50);
+ spawn.mapRect(2025, -525, 475, 25);
+ spawn.mapRect(2025, -550, 525, 25);
+ spawn.mapRect(2125, -575, 400, 25);
+ spawn.mapRect(2125, -600, 1325, 50);
+ spawn.mapRect(2475, -550, 950, 200);
+ spawn.mapRect(1825, -350, 100, 175);
+ spawn.mapRect(3350, -375, 25, 125);
+ spawn.mapRect(1850, -425, 50, 25);
+ spawn.mapRect(1925, -475, 125, 25);
+ spawn.mapRect(2000, -525, 125, 25);
+ spawn.mapRect(2100, -575, 200, 25);
+ spawn.mapRect(2400, -650, 725, 75);
+ spawn.mapRect(2500, -675, 475, 75);
+ spawn.mapRect(2625, -725, 225, 100);
+ spawn.mapRect(2675, -750, 125, 25);
+ spawn.mapRect(2600, -700, 25, 50);
+ spawn.mapRect(2850, -700, 25, 75);
+ spawn.mapRect(3075, -625, 75, 50);
+ spawn.mapRect(2375, -625, 50, 75);
+ spawn.mapRect(1900, -350, 100, 75);
+ spawn.mapRect(1925, -300, 50, 50);
+ spawn.mapRect(1975, -350, 75, 50);
+ spawn.mapRect(3325, -350, 50, 25);
+ spawn.mapRect(150, -25, 1425, 50);
+ spawn.mapRect(175, 75, 1200, 50);
+ spawn.mapRect(400, -25, 575, 25);
+ spawn.mapRect(425, -50, 750, 75);
+ spawn.mapRect(1250, -50, 125, 100);
+ spawn.mapRect(1175, -50, 100, 25);
+ spawn.mapRect(725, 100, 500, 50);
+ spawn.mapRect(625, -75, 300, 50);
+ spawn.mapRect(250, -25, 225, 25);
+ spawn.mapRect(1400, 75, 225, 50);
+ spawn.mapRect(950, -75, 200, 25);
+ spawn.mapRect(1200, -75, 125, 25);
+ spawn.mapRect(425, -50, 100, 25);
+ spawn.mapRect(450, -75, 100, 50);
+ spawn.mapRect(250, -50, 125, 50);
+ spawn.mapRect(250, 125, 125, 25);
+ spawn.mapRect(475, 100, 100, 50);
+ spawn.mapRect(650, 125, 25, 25);
+ spawn.mapRect(675, 100, 75, 50);
+ spawn.mapRect(825, 125, 200, 50);
+ spawn.mapRect(-75, 75, 325, 50);
+ spawn.mapRect(0, 100, 175, 50);
+ spawn.mapRect(775, -100, 275, 50);
+ spawn.mapRect(2475, 0, 925, 125);
+ spawn.mapRect(2500, 50, 875, 100);
+ spawn.mapRect(2550, 100, 775, 75);
+ spawn.mapRect(2625, 150, 600, 50);
+ spawn.mapRect(3225, 125, 275, 75);
+ spawn.mapRect(1750, -225, 150, 50);
+ spawn.mapRect(1800, -275, 50, 75);
+ spawn.mapRect(1775, -250, 75, 75);
+ spawn.mapRect(3200, -625, 250, 50);
+ spawn.mapRect(3275, -650, 75, 25);
+ spawn.mapRect(3175, -625, 25, 25);
+ spawn.mapRect(3250, -700, 100, 100);
+ spawn.mapRect(3200, -650, 75, 50);
+ spawn.mapRect(3225, -675, 75, 100);
+ spawn.mapRect(3325, -675, 50, 100);
+ spawn.mapRect(3375, -650, 25, 75);
+ spawn.mapRect(1575, -25, 100, 25);
+ spawn.mapRect(1450, 100, 125, 50);
+ spawn.mapRect(250, -300, 50, 50);
+ spawn.mapRect(275, -275, 50, 25);
+ spawn.mapRect(200, -275, 125, 50);
+ spawn.mapRect(3725, 200, 50, 375);
+ spawn.mapRect(3750, 275, 50, 300);
+ spawn.mapRect(3800, 350, 25, 200);
+ spawn.mapRect(3825, 425, 25, 150);
+ spawn.mapRect(3850, 500, 25, 75);
+ spawn.mapRect(4275, 250, 50, 325);
+ spawn.mapRect(4250, 300, 50, 300);
+ spawn.mapRect(4225, 375, 75, 200);
+ spawn.mapRect(4200, 450, 75, 150);
+ spawn.mapRect(4175, 500, 75, 75);
+ spawn.mapRect(3950, 500, 150, 50);
+ spawn.mapRect(4000, 500, 50, 25);
+ spawn.mapRect(3875, 500, 425, 25);
+ spawn.mapRect(3625, 200, 50, 75);
+ spawn.mapRect(3575, 200, 50, 25);
+ spawn.mapRect(3675, 275, 25, 25);
+ spawn.mapRect(3650, 275, 25, 25);
+ spawn.mapRect(3600, 200, 25, 50);
+ spawn.mapRect(2600, 175, 25, 25);
+ spawn.mapRect(2700, 175, 425, 100);
+ spawn.mapRect(2650, 200, 75, 50);
+ spawn.mapRect(3100, 200, 75, 50);
+ spawn.mapRect(2675, 250, 25, 25);
+ spawn.mapRect(2625, 200, 100, 25);
+ spawn.mapRect(3150, 200, 75, 25);
+ spawn.mapRect(3175, 225, 25, 25);
+ spawn.mapRect(3775, 250, 25, 50);
+ spawn.mapRect(3800, 275, 25, 125);
+ spawn.mapRect(3800, 325, 50, 225);
+ spawn.mapRect(3875, 400, 25, 200);
+ spawn.mapRect(3825, 425, 50, 125);
+ spawn.mapRect(3850, 375, 25, 100);
+ spawn.mapRect(3900, 450, 25, 75);
+ spawn.mapRect(3925, 475, 25, 50);
+ spawn.mapRect(3450, -600, 25, 325);
+ spawn.mapRect(3475, -575, 25, 275);
+ spawn.mapRect(3500, -525, 25, 200);
+ spawn.mapRect(3525, -500, 25, 150);
+ spawn.mapRect(3550, -475, 25, 100);
+ spawn.mapRect(2725, 250, 350, 50);
+ spawn.mapRect(2750, 275, 300, 50);
+ spawn.mapRect(3150, 250, 25, 25);
+ spawn.mapRect(4325, 150, 975, 75);
+ spawn.mapRect(4375, 225, 900, 25);
+ spawn.mapRect(4375, 175, 875, 100);
+ spawn.mapRect(4375, 225, 850, 75);
+ spawn.mapRect(4375, 225, 825, 100);
+ spawn.mapRect(4375, 275, 800, 75);
+ spawn.mapRect(4350, 325, 800, 50);
+ spawn.mapRect(4375, 350, 750, 50);
+ spawn.mapRect(4375, 350, 725, 75);
+ spawn.mapRect(4350, 375, 725, 75);
+ spawn.mapRect(4350, 400, 700, 75);
+ spawn.mapRect(4350, 425, 675, 75);
+ spawn.mapRect(4350, 475, 650, 50);
+ spawn.mapRect(4375, 500, 600, 50);
+ spawn.mapRect(4375, 500, 575, 75);
+ spawn.mapRect(4375, 550, 550, 50);
+ spawn.mapRect(4425, 125, 775, 75);
+ spawn.mapRect(5300, 175, 75, 50);
+ spawn.mapRect(4475, 100, 150, 25);
+ spawn.mapRect(4825, 125, 300, 25);
+ spawn.mapRect(4800, 100, 250, 25);
+ spawn.mapRect(5100, 100, 50, 25);
+ spawn.mapRect(4650, 100, 75, 25);
+ spawn.mapRect(5475, 225, 125, 300);
+ spawn.mapRect(5450, 275, 25, 125);
+ spawn.mapRect(5450, 450, 25, 75);
+ spawn.mapRect(5425, 325, 25, 75);
+ spawn.mapRect(5425, 475, 25, 50);
+ spawn.mapRect(5575, 250, 50, 150);
+ spawn.mapRect(5575, 450, 50, 50);
+ spawn.mapRect(5475, 525, 125, 25);
+ spawn.mapRect(5500, 550, 75, 25);
+ spawn.mapRect(5525, 575, 25, 25);
+ spawn.mapRect(3675, 575, 1050, 50);
+ spawn.mapRect(4175, 600, 250, 50);
+ spawn.mapRect(3850, 625, 100, 25);
+ spawn.mapRect(3700, 625, 75, 25);
+ spawn.mapRect(4050, 625, 50, 25);
+ spawn.mapRect(4500, 625, 225, 25);
+ spawn.mapRect(5725, 150, 75, 225);
+ spawn.mapRect(5700, 175, 25, 150);
+ spawn.mapRect(5775, 250, 50, 100);
+ spawn.mapRect(5950, 325, 75, 75);
+ spawn.mapRect(5925, 375, 25, 25);
+ spawn.mapRect(6000, 350, 50, 50);
+ spawn.mapRect(6125, 425, 1050, 75);
+ spawn.mapRect(6425, 0, 750, 75);
+ spawn.mapRect(6400, 25, 50, 50);
+ spawn.mapRect(6500, -25, 675, 75);
+ spawn.mapRect(6550, -25, 275, 25);
+ spawn.mapRect(6475, -25, 125, 75);
+ spawn.mapRect(6450, -25, 100, 100);
+ spawn.mapRect(6475, -75, 700, 75);
+ spawn.mapRect(6500, -75, 75, 25);
+ spawn.mapRect(6500, -125, 675, 125);
+ spawn.mapRect(6525, -150, 650, 125);
+ spawn.mapRect(6550, -175, 625, 50);
+ spawn.mapRect(6900, -200, 275, 75);
+ spawn.mapRect(6925, -250, 250, 175);
+ spawn.mapRect(6950, -275, 225, 75);
+ spawn.mapRect(6975, -300, 200, 50);
+ spawn.mapRect(7025, -325, 125, 125);
+ spawn.mapRect(6400, 50, 75, 175);
+ spawn.mapRect(6450, 50, 100, 100);
+ spawn.mapRect(6475, 150, 25, 25);
+ spawn.mapRect(6550, 75, 25, 25);
+ spawn.mapRect(6375, 75, 25, 150);
+ spawn.mapRect(6350, 100, 25, 75);
+ spawn.mapRect(6650, 50, 225, 50);
+ spawn.mapRect(6975, 75, 75, 25);
+ spawn.mapRect(6625, -175, 225, 25);
+ spawn.mapRect(6675, -200, 275, 25);
+ spawn.mapRect(6750, -225, 250, 25);
+ spawn.mapRect(6200, 475, 575, 50);
+ spawn.mapRect(6925, 500, 125, 25);
+ spawn.mapRect(6325, 400, 475, 25);
+ spawn.mapRect(6950, 400, 200, 25);
+ spawn.mapRect(7100, 75, 75, 100);
+ spawn.mapRect(7075, 75, 25, 25);
+ spawn.mapRect(7175, -300, 1650, 350);
+ spawn.mapRect(7325, -700, 100, 450);
+ spawn.mapRect(7600, -700, 100, 450);
+ spawn.mapRect(7900, -700, 100, 450);
+ spawn.mapRect(8200, -700, 100, 425);
+ spawn.mapRect(8500, -700, 100, 425);
+ spawn.mapRect(7275, -825, 1375, 125);
+ spawn.mapRect(7400, -700, 50, 25);
+ spawn.mapRect(7575, -700, 50, 25);
+ spawn.mapRect(7875, -700, 150, 25);
+ spawn.mapRect(8175, -700, 150, 25);
+ spawn.mapRect(8475, -700, 150, 25);
+ spawn.mapRect(7300, -325, 150, 75);
+ spawn.mapRect(7575, -325, 150, 75);
+ spawn.mapRect(7875, -325, 150, 75);
+ spawn.mapRect(8175, -325, 150, 75);
+ spawn.mapRect(8475, -325, 150, 75);
+ spawn.mapRect(7700, -700, 25, 25);
+ spawn.mapRect(7300, -700, 75, 25);
+ spawn.mapRect(7150, 50, 75, 50);
+ spawn.mapRect(7175, 100, 25, 25);
+ spawn.mapRect(7225, 50, 25, 25);
+ spawn.mapRect(7300, -850, 1325, 75);
+ spawn.mapRect(7325, -875, 1275, 50);
+ spawn.mapRect(7375, -900, 1200, 25);
+ spawn.mapRect(7350, -900, 25, 25);
+ spawn.mapRect(7375, -900, 200, 25);
+
+ spawn.mapRect(7375, -925, 1175, 25);
+ spawn.mapRect(7400, -950, 1125, 25);
+ spawn.mapRect(7425, -975, 1075, 25);
+ spawn.mapRect(7450, -1000, 1025, 25);
+ spawn.mapRect(7675, -1050, 525, 50);
+ spawn.mapRect(7700, -1050, 100, 25);
+ spawn.mapRect(7700, -1075, 450, 25);
+ spawn.mapRect(7725, -1100, 400, 25);
+ spawn.mapRect(7775, -1125, 300, 25);
+ spawn.mapRect(7650, -1025, 75, 25);
+ spawn.mapRect(8200, -1025, 25, 25);
+ spawn.mapRect(8825, -275, 25, 300);
+ spawn.mapRect(8825, -225, 50, 125);
+ spawn.mapRect(8850, -50, 25, 75);
+ spawn.mapRect(7150, 425, 100, 425);
+ spawn.mapRect(7150, 775, 1600, 100);
+ spawn.mapRect(8750, 400, 75, 475);
+ spawn.mapRect(8825, 400, 25, 475);
+ spawn.mapRect(7225, 450, 50, 325);
+ spawn.mapRect(7250, 500, 50, 275);
+ spawn.mapRect(7300, 550, 25, 225);
+ spawn.mapRect(7325, 600, 25, 175);
+ spawn.mapRect(7350, 650, 25, 125);
+ spawn.mapRect(7375, 675, 25, 100);
+ spawn.mapRect(7400, 700, 25, 75);
+ spawn.mapRect(7425, 725, 25, 50);
+ spawn.mapRect(7450, 750, 25, 25);
+ spawn.mapRect(8725, 425, 50, 375);
+ spawn.mapRect(8700, 450, 75, 375);
+ spawn.mapRect(8675, 475, 100, 375);
+ spawn.mapRect(8650, 500, 125, 375);
+ spawn.mapRect(8600, 525, 100, 350);
+ spawn.mapRect(8575, 550, 100, 275);
+ spawn.mapRect(8550, 575, 150, 250);
+ spawn.mapRect(8525, 625, 100, 225);
+ spawn.mapRect(8500, 675, 100, 125);
+ spawn.mapRect(8625, 825, 25, 25);
+ spawn.mapRect(8475, 700, 75, 75);
+ spawn.mapRect(8450, 725, 50, 50);
+ spawn.mapRect(8425, 750, 100, 25);
+ wastepool = level.hazard(7250, 575, 1450, 200);
+ spawn.mapRect(7375, 0, 250, 75);
+ spawn.mapRect(7700, 0, 725, 75);
+ spawn.mapRect(8575, 50, 150, 25);
+ spawn.mapRect(7750, 50, 475, 50);
+ spawn.mapRect(7425, 50, 175, 50);
+ spawn.mapRect(8600, 50, 50, 50);
+ spawn.mapRect(7200, 850, 875, 50);
+ spawn.mapRect(8225, 850, 125, 50);
+ spawn.mapRect(8475, 850, 275, 50);
+ spawn.mapRect(7300, 875, 375, 50);
+ spawn.mapRect(7925, 875, 100, 50);
+ spawn.mapRect(8525, 875, 125, 50);
+ spawn.mapRect(8250, 875, 75, 50);
+ spawn.mapRect(7800, 900, 50, 25);
+ spawn.mapRect(8125, 875, 50, 50);
+ spawn.mapRect(8075, 875, 50, 50);
+ spawn.mapRect(7125, 500, 25, 325);
+ spawn.mapRect(7100, 475, 25, 300);
+ spawn.mapRect(7075, 600, 50, 125);
+ spawn.mapRect(7075, 500, 50, 25);
+ spawn.mapRect(8850, 425, 75, 450);
+ spawn.mapRect(8925, 475, 75, 400);
+ spawn.mapRect(9000, 550, 75, 325);
+ spawn.mapRect(9075, 650, 75, 25);
+ spawn.mapRect(9075, 625, 75, 250);
+ spawn.mapRect(9150, 675, 75, 200);
+ spawn.mapRect(9225, 750, 75, 125);
+ spawn.mapRect(8925, 450, 25, 25);
+ spawn.mapRect(9000, 500, 25, 75);
+ spawn.mapRect(9000, 525, 25, 100);
+ spawn.mapRect(9000, 525, 50, 100);
+ spawn.mapRect(9050, 575, 50, 100);
+ spawn.mapRect(9075, 600, 50, 75);
+ spawn.mapRect(9150, 650, 25, 100);
+ spawn.mapRect(9225, 725, 50, 100);
+ spawn.mapRect(9225, 700, 25, 100);
+ spawn.mapRect(9300, 800, 1375, 75);
+ spawn.mapRect(9300, 775, 25, 50);
+ spawn.mapRect(9425, 775, 200, 25);
+ spawn.mapRect(9500, 875, 200, 25);
+ spawn.mapRect(9725, 825, 200, 75);
+ spawn.mapRect(10000, 850, 125, 50);
+ spawn.mapRect(10225, 850, 400, 50);
+ spawn.mapRect(9775, 775, 125, 25);
+ spawn.mapRect(10100, 775, 75, 75);
+ spawn.mapRect(10275, 750, 225, 75);
+ spawn.mapRect(9975, 775, 25, 50);
+ spawn.mapRect(10000, 775, 25, 50);
+ spawn.mapRect(10025, 775, 25, 75);
+ spawn.mapRect(10675, 775, 50, 100);
+ spawn.mapRect(10725, 725, 50, 150);
+ spawn.mapRect(10775, 650, 50, 225);
+ spawn.mapRect(10825, 575, 50, 300);
+ spawn.mapRect(10875, 500, 50, 375);
+ spawn.mapRect(10925, 425, 275, 450);
+ spawn.mapRect(11200, 500, 50, 375);
+ spawn.mapRect(11250, 575, 50, 300);
+ spawn.mapRect(11300, 650, 50, 225);
+ spawn.mapRect(11350, 725, 50, 150);
+ spawn.mapRect(11400, 775, 50, 100);
+ spawn.mapRect(10700, 750, 75, 75);
+ spawn.mapRect(10775, 700, 25, 25);
+ spawn.mapRect(10750, 700, 75, 75);
+ spawn.mapRect(10800, 625, 125, 75);
+ spawn.mapRect(10850, 550, 125, 50);
+ spawn.mapRect(10900, 475, 150, 75);
+ spawn.mapRect(11125, 475, 100, 50);
+ spawn.mapRect(11200, 550, 75, 50);
+ spawn.mapRect(11275, 625, 50, 75);
+ spawn.mapRect(11325, 700, 50, 75);
+ spawn.mapRect(11375, 750, 50, 75);
+ spawn.mapRect(11550, 225, 1525, 75);
+ spawn.mapRect(11450, 825, 1625, 50);
+ spawn.mapRect(11450, 800, 1625, 75);
+ spawn.mapRect(11525, -350, 50, 650);
+ spawn.mapRect(11850, -350, 50, 650);
+ spawn.mapRect(12225, -350, 50, 650);
+ spawn.mapRect(12600, -350, 50, 650);
+ spawn.mapRect(13000, -350, 75, 650);
+ spawn.mapRect(11525, -200, 1525, 50);
+ spawn.mapRect(11525, 50, 1550, 50);
+ spawn.mapRect(11525, -400, 1550, 50);
+ spawn.mapRect(11575, -425, 1450, 50);
+ spawn.mapRect(11625, -450, 1325, 75);
+ spawn.mapRect(11700, -475, 1175, 75);
+ spawn.mapRect(11725, -500, 1125, 75);
+ spawn.mapRect(11825, -400, 100, 75);
+ spawn.mapRect(11825, 200, 100, 75);
+ spawn.mapRect(12200, -375, 100, 50);
+ spawn.mapRect(12200, 200, 100, 75);
+ spawn.mapRect(12575, 200, 100, 75);
+ spawn.mapRect(12575, -375, 100, 50);
+ spawn.mapRect(11500, 825, 50, 25);
+ spawn.mapRect(11550, 775, 175, 25);
+ spawn.mapRect(11525, 875, 250, 25);
+ spawn.mapRect(11875, 750, 225, 50);
+ spawn.mapRect(11950, 850, 375, 50);
+ spawn.mapRect(12500, 775, 250, 75);
+ spawn.mapRect(12750, 850, 175, 50);
+
+
+ // books
+ spawn.bodyRect(11575, -300, 25, 100);
+ spawn.bodyRect(11600, -300, 25, 100);
+ spawn.bodyRect(11625, -300, 25, 100);
+ spawn.bodyRect(11650, -300, 25, 100);
+ spawn.bodyRect(11675, -300, 25, 100);
+ spawn.bodyRect(11700, -300, 25, 100);
+ spawn.bodyRect(11725, -300, 25, 100);
+ spawn.bodyRect(11750, -300, 25, 100);
+ spawn.bodyRect(11775, -300, 25, 100);
+ spawn.bodyRect(11800, -300, 25, 100);
+ spawn.bodyRect(11825, -300, 25, 100);
+ spawn.bodyRect(11900, -50, 25, 100);
+ spawn.bodyRect(11925, -50, 25, 100);
+ spawn.bodyRect(11950, -50, 25, 100);
+ spawn.bodyRect(11975, -50, 50, 100);
+ spawn.bodyRect(12025, -50, 50, 100);
+ spawn.bodyRect(12075, -50, 25, 100);
+ spawn.bodyRect(12100, -50, 50, 100);
+ spawn.bodyRect(12150, -50, 25, 100);
+ spawn.bodyRect(12175, -50, 25, 100);
+ spawn.bodyRect(12200, -50, 25, 100);
+ spawn.bodyRect(11900, -300, 25, 100);
+ spawn.bodyRect(11925, -300, 25, 100);
+ spawn.bodyRect(11950, -225, 75, 25);
+ spawn.bodyRect(12650, -50, 25, 100);
+ spawn.bodyRect(12675, -50, 25, 100);
+ spawn.bodyRect(12725, -50, 25, 100);
+ spawn.bodyRect(12750, -50, 50, 100);
+ spawn.bodyRect(12650, -275, 25, 75);
+ spawn.bodyRect(12675, -275, 25, 75);
+ spawn.bodyRect(12700, -275, 50, 75);
+ spawn.bodyRect(12750, -275, 25, 75);
+ spawn.bodyRect(12775, -275, 25, 75);
+ spawn.bodyRect(12800, -275, 25, 75);
+ spawn.bodyRect(12825, -275, 25, 75);
+ spawn.bodyRect(12850, -275, 50, 75);
+ spawn.bodyRect(12900, -275, 50, 75);
+ spawn.bodyRect(12950, -275, 50, 75);
+ spawn.mapRect(12200, 775, 175, 50);
+ spawn.mapRect(11550, 250, 1500, 75);
+ spawn.mapRect(11575, 275, 1450, 75);
+ spawn.mapRect(11600, 325, 1400, 50);
+ spawn.mapRect(11625, 350, 1350, 50);
+ spawn.mapRect(11725, 375, 1150, 50);
+ spawn.mapRect(11900, 400, 800, 50);
+ spawn.mapRect(12100, 425, 425, 50);
+ spawn.mapRect(12125, 475, 375, 25);
+ spawn.mapRect(12200, 475, 225, 50);
+ spawn.mapRect(11475, -400, 50, 700);
+ spawn.mapRect(11450, -375, 50, 625);
+ spawn.mapRect(11425, -350, 100, 600);
+ spawn.mapRect(11400, -300, 75, 525);
+ spawn.mapRect(11375, -250, 100, 400);
+ spawn.mapRect(11350, -150, 50, 200);
+ spawn.mapRect(13075, 825, 25, 50);
+ spawn.mapRect(13100, 850, 25, 25);
+ spawn.mapRect(13200, 700, 100, 225);
+ spawn.mapRect(13300, 775, 25, 100);
+ spawn.mapRect(13325, 825, 25, 50);
+ spawn.mapRect(13175, 775, 25, 125);
+ spawn.mapRect(13225, 675, 50, 25);
+ spawn.mapRect(13225, 925, 50, 25);
+ spawn.mapRect(9250, 75, 1400, 150);
+ spawn.mapRect(9250, -225, 150, 300);
+ spawn.mapRect(9250, -275, 575, 50);
+ spawn.mapRect(9675, -225, 150, 300);
+ spawn.mapRect(9325, -325, 400, 50);
+ spawn.mapRect(9400, -350, 250, 25);
+ spawn.mapRect(9475, -375, 125, 25);
+ spawn.mapRect(9825, -225, 150, 300);
+ spawn.mapRect(10225, -225, 150, 300);
+ spawn.mapRect(9825, -275, 550, 50);
+ spawn.mapRect(9900, -325, 375, 50);
+ spawn.mapRect(9950, -350, 275, 25);
+ spawn.mapRect(10000, -375, 175, 25);
+ spawn.mapRect(10350, -275, 50, 375);
+ spawn.mapRect(10400, -250, 25, 325);
+ spawn.mapRect(10425, -225, 25, 375);
+ spawn.mapRect(10450, -200, 25, 325);
+ spawn.mapRect(10475, -175, 25, 350);
+ spawn.mapRect(10500, -150, 25, 300);
+ spawn.mapRect(10525, -125, 25, 300);
+ spawn.mapRect(10550, -100, 25, 225);
+ spawn.mapRect(10575, -75, 25, 200);
+ spawn.mapRect(10600, -50, 25, 150);
+ spawn.mapRect(10625, -25, 25, 175);
+ spawn.mapRect(9225, -225, 25, 450);
+ spawn.mapRect(9200, -175, 25, 400);
+ spawn.mapRect(9175, -150, 50, 375);
+ spawn.mapRect(9150, -125, 50, 350);
+ spawn.mapRect(9400, -175, 25, 275);
+ spawn.mapRect(9425, -125, 25, 200);
+ spawn.mapRect(9650, -175, 25, 250);
+ spawn.mapRect(9625, -125, 25, 275);
+ spawn.mapRect(9975, -175, 25, 300);
+ spawn.mapRect(10000, -125, 25, 250);
+ spawn.mapRect(10200, -175, 25, 300);
+ spawn.mapRect(10175, -125, 25, 225);
+ spawn.mapRect(9325, 225, 225, 25);
+ spawn.mapRect(9675, 225, 250, 50);
+ spawn.mapRect(10075, 225, 200, 25);
+ spawn.mapRect(10400, 200, 175, 50);
+ spawn.mapRect(13425, 675, 1425, 100);
+ spawn.mapRect(13450, 725, 375, 75);
+ spawn.mapRect(13850, 775, 225, 50);
+ spawn.mapRect(14150, 750, 300, 50);
+ spawn.mapRect(14575, 750, 200, 75);
+ spawn.mapRect(13550, 800, 150, 25);
+ spawn.mapRect(14250, 800, 225, 25);
+ spawn.mapRect(13425, 275, 1425, 100);
+ spawn.mapRect(13475, 250, 1325, 75);
+ spawn.mapRect(13550, 225, 1125, 75);
+ spawn.mapRect(13600, 200, 1025, 25);
+ spawn.mapRect(13650, 150, 925, 50);
+ spawn.mapRect(13725, 100, 775, 100);
+ spawn.mapRect(13825, 50, 525, 100);
+ spawn.mapRect(13900, 0, 350, 75);
+ spawn.mapRect(13975, -25, 175, 75);
+ spawn.mapRect(13875, 25, 50, 50);
+ spawn.mapRect(13800, 75, 75, 50);
+ spawn.mapRect(13700, 125, 75, 50);
+ spawn.mapRect(13625, 200, 50, 25);
+ spawn.mapRect(13650, 175, 25, 25);
+ spawn.mapRect(13625, 175, 125, 75);
+ spawn.mapRect(14350, 75, 25, 50);
+ spawn.mapRect(14250, 0, 25, 75);
+ spawn.mapRect(14275, 50, 25, 50);
+ spawn.mapRect(14275, 25, 25, 75);
+ spawn.mapRect(14500, 125, 25, 75);
+ spawn.mapRect(14575, 175, 25, 75);
+ spawn.mapRect(13475, 650, 400, 50);
+ spawn.mapRect(13975, 675, 75, 25);
+ spawn.mapRect(14000, 650, 50, 50);
+ spawn.mapRect(14150, 625, 675, 100);
+ spawn.mapRect(14325, 625, 100, 25);
+ spawn.mapRect(14300, 600, 325, 25);
+ spawn.mapRect(13525, 325, 375, 100);
+ spawn.mapRect(13975, 375, 400, 25);
+ spawn.mapRect(14500, 325, 100, 75);
+ spawn.mapRect(14850, 675, 50, 200);
+ spawn.mapRect(14875, 700, 50, 175);
+ spawn.mapRect(14925, 725, 50, 150);
+ spawn.mapRect(14975, 750, 50, 125);
+ spawn.mapRect(15025, 775, 50, 100);
+ spawn.mapRect(15075, 750, 1150, 100);
+ spawn.mapRect(15100, 825, 225, 50);
+ spawn.mapRect(15500, 850, 225, 25);
+ spawn.mapRect(15925, 775, 275, 100);
+ spawn.mapRect(15775, 825, 50, 50);
+ spawn.mapRect(15225, 250, 1050, 125);
+ spawn.mapRect(15250, 200, 1000, 50);
+ spawn.mapRect(15275, 175, 950, 50);
+ spawn.mapRect(15300, 150, 900, 50);
+ spawn.mapRect(15325, 125, 850, 25);
+ spawn.mapRect(15350, 100, 800, 25);
+ spawn.mapRect(15375, 75, 750, 25);
+ spawn.mapRect(15400, 50, 700, 100);
+ spawn.mapRect(15425, 25, 650, 75);
+ spawn.mapRect(15450, 0, 600, 50);
+ spawn.mapRect(15475, -25, 550, 75);
+ spawn.mapRect(15500, -50, 500, 75);
+ spawn.mapRect(15525, -75, 450, 75);
+ spawn.mapRect(15550, -100, 400, 75);
+ spawn.mapRect(15575, -125, 350, 75);
+ spawn.mapRect(15600, -150, 300, 50);
+ spawn.mapRect(15625, -175, 250, 50);
+ spawn.mapRect(15650, -200, 200, 25);
+ spawn.mapRect(15675, -225, 150, 75);
+ spawn.mapRect(15700, -250, 100, 75);
+ spawn.mapRect(16275, 250, 25, 125);
+ spawn.mapRect(16250, 225, 25, 25);
+ spawn.mapRect(15200, 250, 25, 125);
+ spawn.mapRect(15225, 225, 25, 25);
+ spawn.mapRect(15275, 350, 175, 50);
+ spawn.mapRect(15550, 350, 425, 75);
+ spawn.mapRect(16100, 375, 175, 25);
+ spawn.mapRect(14700, -375, 50, 325);
+ spawn.mapRect(14700, -425, 375, 50);
+ spawn.mapRect(14750, -375, 125, 100);
+ spawn.mapRect(14750, -275, 75, 75);
+ spawn.mapRect(14850, -375, 100, 50);
+ spawn.mapRect(14825, -275, 25, 25);
+ spawn.mapRect(14950, -375, 25, 25);
+ spawn.mapRect(14875, -325, 25, 25);
+ spawn.mapRect(14725, -200, 50, 25);
+ spawn.mapRect(14700, -75, 100, 25);
+ spawn.mapRect(15050, -425, 25, 100);
+ spawn.mapRect(14725, -450, 325, 25);
+ spawn.mapRect(14775, -475, 225, 25);
+ spawn.mapRect(14825, -500, 125, 25);
+ spawn.mapRect(14675, -350, 25, 100);
+ spawn.mapRect(14675, -175, 25, 75);
+ spawn.mapRect(14850, 325, 25, 50);
+ spawn.mapRect(5700, -725, 375, 50);
+ spawn.mapRect(6025, -725, 50, 325);
+ spawn.mapRect(5775, -675, 250, 25);
+ spawn.mapRect(6000, -675, 25, 225);
+ spawn.mapRect(5950, -650, 50, 75);
+ spawn.mapRect(5900, -650, 75, 25);
+ spawn.mapRect(6000, -575, 25, 25);
+ spawn.mapRect(6050, -700, 50, 275);
+ spawn.mapRect(5925, -625, 75, 25);
+ spawn.mapRect(5775, -750, 100, 25);
+ spawn.mapRect(5950, -750, 100, 25);
+ spawn.mapRect(5675, -725, 25, 150);
+ spawn.mapRect(5975, -400, 100, 25);
+ spawn.mapRect(5650, -700, 25, 75);
+ spawn.mapRect(5700, -675, 25, 50);
+ spawn.mapRect(5700, -600, 25, 25);
+ spawn.mapRect(15275, 750, 225, 25);
+ spawn.mapRect(15225, 725, 250, 25);
+ spawn.mapRect(15675, 725, 275, 100);
+ spawn.mapRect(16075, 725, 125, 50);
+ spawn.pulsar(5775.349354333542, -594.9058498351887)
+ spawn.pulsar(5852.915433009502, -545.5679375496002)
+ spawn.pulsar(5921.99534574469, -480.69487503053097)
+ spawn.mapRect(3725, -975, 1525, 100);
+ spawn.mapRect(3750, -650, 300, 75);
+ spawn.mapRect(4300, -650, 300, 75);
+ spawn.mapRect(4950, -650, 300, 75);
+ spawn.mapRect(5250, -975, 75, 400);
+ spawn.mapRect(3725, -975, 75, 400);
+ spawn.mapRect(4325, -600, 250, 50);
+ spawn.mapRect(4350, -550, 200, 25);
+ spawn.mapRect(3800, -575, 225, 25);
+ spawn.mapRect(3825, -550, 175, 25);
+ spawn.mapRect(4975, -600, 275, 50);
+ spawn.mapRect(5025, -550, 175, 25);
+ spawn.mapRect(3800, -1025, 1450, 50);
+ spawn.mapRect(3875, -1075, 1275, 50);
+ spawn.mapRect(3975, -1125, 1000, 50);
+ spawn.mapRect(3950, -1100, 50, 25);
+ spawn.mapRect(3850, -1050, 150, 25);
+ spawn.mapRect(3775, -1000, 200, 25);
+ spawn.mapRect(5225, -975, 75, 25);
+ spawn.mapRect(4950, -1100, 75, 125);
+ spawn.mapRect(5100, -1050, 75, 75);
+ spawn.mapRect(5225, -1000, 50, 100);
+ spawn.mapRect(4350, -675, 150, 75);
+ spawn.mapRect(4525, -650, 50, 25);
+ spawn.mapRect(4550, -675, 50, 75);
+ spawn.mapRect(3825, -650, 50, 25);
+ spawn.mapRect(3825, -675, 150, 50);
+ spawn.mapRect(4025, -675, 25, 100);
+ spawn.mapRect(4950, -675, 75, 50);
+ spawn.mapRect(5075, -675, 75, 75);
+ spawn.mapRect(5200, -675, 75, 50);
+ spawn.pulsar(4068.196906578167, -653.550201356403)
+ spawn.pulsar(4147.672553167598, -651.0093457935446)
+ spawn.pulsar(4228.863663369247, -653.4768859607283)
+ spawn.pulsar(4619.092688319791, -657.3942377732394)
+ spawn.pulsar(4724.821759138369, -653.4213864043036)
+ spawn.pulsar(4873.583205330713, -657.4103118310311)
+ spawn.pulsar(3871.920598597728, -804.0595760512573)
+ spawn.pulsar(4053.019377134256, -778.0061810623848)
+ spawn.pulsar(4211.732836201937, -780.4633597161928)
+ spawn.pulsar(4380.7768131190005, -776.3400515412312)
+ spawn.pulsar(4533.031170401828, -791.1397513503708)
+ spawn.pulsar(4663.577749297493, -789.0488615794887)
+ spawn.pulsar(4965.48351658387, -809.0025104385204)
+ spawn.pulsar(5122.782442346123, -810.2526936643312)
+ spawn.mapRect(3700, -875, 25, 250);
+ spawn.mapRect(5325, -900, 25, 250);
+ spawn.mapRect(5325, -850, 50, 150);
+ spawn.mapRect(5375, -825, 25, 75);
+ spawn.pulsar(14786.058375868968, -140.5759223979466)
+ spawn.pulsar(14862.320083571307, -177.02507110101413)
+ spawn.pulsar(14888.982047411475, -216.4856450590454)
+ spawn.pulsar(14950.503812885598, -280.9333882582806)
+ spawn.pulsar(15003.202057456116, -316.6767970823471)
+ spawn.spinner(759.4093972764956, -356.0541595435453)
+ spawn.spinner(1467.1412487475097, -617.4326431210314)
+ spawn.mapRect(11850, 775, 50, 50);
+ spawn.mapRect(12075, 775, 50, 50);
+ spawn.mapRect(16225, 750, 75, 325);
+ spawn.mapRect(16300, 775, 50, 325);
+ spawn.mapRect(16350, 800, 50, 275);
+ spawn.mapRect(16375, 825, 50, 200);
+ spawn.mapRect(16450, 875, 25, 150);
+ spawn.mapRect(16450, 875, 25, 225);
+ spawn.mapRect(16400, 875, 50, 150);
+ spawn.mapRect(16225, 1025, 250, 75);
+ spawn.mapRect(16475, 925, 25, 175);
+ spawn.mapRect(16500, 975, 25, 125);
+ spawn.mapRect(16525, 1025, 25, 50);
+ spawn.mapRect(16425, 1075, 150, 25);
+ spawn.mapRect(16225, 1100, 1175, 75);
+ spawn.mapRect(17200, 1050, 25, 50);
+ spawn.mapRect(17225, 950, 25, 200);
+ spawn.mapRect(17250, 800, 25, 300);
+ spawn.mapRect(17275, 725, 25, 400);
+ spawn.mapRect(17300, 750, 75, 400);
+ spawn.mapRect(17300, 725, 100, 450);
+ spawn.mapRect(16300, 250, 1075, 125);
+ spawn.mapRect(16450, -75, 100, 400);
+ spawn.mapRect(17100, -75, 100, 400);
+ spawn.mapRect(16425, 200, 150, 50);
+ spawn.mapRect(17075, 200, 150, 50);
+ spawn.mapRect(16425, -75, 150, 25);
+ spawn.mapRect(17075, -75, 150, 50);
+ spawn.mapRect(16425, -50, 150, 50);
+ spawn.mapRect(16575, -75, 525, 50);
+ spawn.mapRect(17075, -50, 150, 50);
+ spawn.mapRect(16550, -100, 550, 25);
+ spawn.mapRect(16575, -125, 500, 75);
+ spawn.mapRect(16600, -150, 450, 75);
+ spawn.mapRect(16625, -175, 400, 75);
+ spawn.mapRect(16675, -200, 275, 50);
+ spawn.mapRect(16750, -225, 125, 100);
+ spawn.mapRect(19700, 675, 50, 325);
+ spawn.mapRect(19725, 700, 50, 250);
+ spawn.mapRect(19750, 750, 25, 175);
+ spawn.mapRect(16775, -25, 100, 275);
+ spawn.mapRect(16750, -25, 150, 25);
+ spawn.mapRect(16750, 225, 150, 50);
+ spawn.pulsar(3037.797768861211, -1242.9871362505041)
+ spawn.pulsar(3070.307596879197, -1219.5627538123044)
+ spawn.pulsar(3111.2633762820287, -1107.7297980154415)
+ spawn.pulsar(5417.516810698634, 842.824851834252)
+ spawn.pulsar(5484.672534515589, 883.9519420960905)
+ spawn.pulsar(5588.5457723826075, 907.389646857348)
+ spawn.pulsar(16845.139047921595, -885.6942536135854)
+ spawn.pulsar(16892.187197333486, -849.5235136465661)
+ spawn.pulsar(16912.323783455256, -764.5275187038021)
+ powerUps.spawn(2571.591711269197, -145.6717604789277, 'heal')
+ powerUps.spawn(4415.693974666946, -15.077304620299628, 'heal')
+ powerUps.spawn(7505.795753124317, -360.0330849392626, 'heal')
+ powerUps.spawn(7809.5145838152075, -388.5517653996709, 'heal')
+ powerUps.spawn(8049.726318297545, 534.4543327703304, 'heal')
+ powerUps.spawn(8514.444440033667, 551.0268033205841, 'heal')
+ powerUps.spawn(8927.146055851512, 407.25359241772685, 'heal')
+ powerUps.spawn(9730.170170158563, 463.5594890235955, 'ammo')
+ powerUps.spawn(9998.34942087522, 434.9511651200589, 'ammo')
+ powerUps.spawn(10119.083720019844, 437.4195779326937, 'ammo')
+ powerUps.spawn(10346.197135080345, 423.1868836972815, 'ammo')
+ powerUps.spawn(1853.3194789931017, -36.87254038474242, 'ammo')
+ powerUps.spawn(4491.396397908616, 40.2862012621236, 'ammo')
+ powerUps.spawn(4954.207518897743, 50.27790416201856, 'ammo')
+ spawn.mapRect(9125, -50, 75, 275);
+ spawn.mapRect(9100, 0, 50, 225);
+ spawn.mapRect(9075, 75, 75, 150);
+ spawn.mapRect(9050, 150, 125, 50);
+ spawn.mapRect(9050, 200, 225, 25);
+ mover1 = level.mover(4000, -1125, 975, 25);
+ mover2 = level.mover(15675, 725, 275, 25);
+ spawn.mapRect(15025, -375, 25, 25);
+ spawn.mapRect(12200, -150, 100, 25);
+ spawn.mapRect(11825, -150, 100, 25);
+ spawn.mapRect(11825, 75, 100, 50);
+ spawn.mapRect(12200, 75, 100, 50);
+ spawn.mapRect(12575, 100, 75, 25);
+ spawn.mapRect(12625, 50, 50, 75);
+ spawn.mapRect(12600, -175, 75, 50);
+ spawn.mapRect(12575, -175, 75, 50);
+ spawn.mapRect(14125, 650, 75, 25);
+ spawn.mapRect(13875, 375, 50, 25);
+ spawn.mapRect(13300, -525, 325, 50);
+ spawn.mapRect(13575, -525, 50, 250);
+ spawn.mapRect(13550, -300, 75, 25);
+ spawn.mapRect(13300, -525, 25, 75);
+ spawn.mapRect(13525, -475, 50, 50);
+ spawn.mapRect(13500, -475, 100, 25);
+ spawn.mapRect(13550, -475, 25, 100);
+ spawn.mapRect(13325, -550, 275, 25);
+ spawn.mapRect(13350, -575, 200, 25);
+ spawn.mapRect(13625, -500, 25, 175);
+ spawn.mapRect(13650, -450, 25, 75);
+ spawn.mapRect(13500, 375, 75, 25);
+ spawn.mapRect(15550, -950, 50, 225);
+ spawn.mapRect(15575, -750, 75, 25);
+ spawn.mapRect(15550, -950, 375, 50);
+ spawn.mapRect(15925, -950, 50, 225);
+ spawn.mapRect(15875, -750, 100, 25);
+ spawn.mapRect(15575, -1000, 375, 75);
+ spawn.mapRect(15625, -1050, 250, 100);
+ spawn.mapRect(15600, -1025, 75, 50);
+ spawn.mapRect(15875, -1000, 25, 25);
+ spawn.mapRect(15825, -1025, 75, 75);
+ spawn.mapRect(15700, -1100, 125, 50);
+ spawn.mapRect(15650, -1075, 75, 50);
+ spawn.mapRect(15800, -1075, 50, 75);
+ spawn.mapRect(15575, -725, 50, 25);
+ spawn.mapRect(15900, -725, 50, 25);
+ spawn.mapRect(15525, -925, 25, 175);
+ spawn.mapRect(15950, -925, 50, 200);
+ spawn.mapRect(15500, -875, 25, 75);
+ spawn.mapRect(16000, -875, 25, 75);
+ spawn.mapRect(15600, -900, 50, 75);
+ spawn.mapRect(15650, -900, 25, 25);
+ spawn.mapRect(15600, -825, 25, 25);
+ spawn.mapRect(15875, -900, 50, 50);
+ spawn.mapRect(15850, -925, 75, 50);
+ spawn.mapRect(15925, -875, 25, 25);
+ spawn.mapRect(15925, -850, 25, 25);
+ spawn.mapRect(15900, -875, 50, 50);
+ bigpool = level.hazard(9075, 575, 1950, 250);
+ spawn.mapRect(16000, -775, 25, 50);
+ spawn.mapRect(16000, -800, 25, 25);
+ spawn.mapRect(15500, -825, 25, 75);
+ spawn.mapRect(15475, -850, 75, 75);
+ spawn.mapRect(16000, -850, 50, 100);
+ spawn.mapRect(10775, -450, 50, 200);
+ spawn.mapRect(10775, -275, 100, 25);
+ spawn.mapRect(11100, -450, 50, 200);
+ spawn.mapRect(11050, -275, 75, 25);
+ spawn.mapRect(10775, -450, 375, 25);
+ spawn.mapRect(10825, -475, 275, 25);
+ spawn.mapRect(10875, -500, 150, 25);
+ spawn.mapRect(10900, -525, 100, 25);
+ spawn.mapRect(10750, -425, 25, 150);
+ spawn.mapRect(11150, -400, 25, 125);
+ spawn.mapRect(10725, -400, 50, 100);
+ spawn.mapRect(11150, -375, 50, 75);
+ spawn.mapRect(10800, -250, 50, 25);
+ spawn.mapRect(10825, -425, 50, 50);
+ spawn.mapRect(10875, -425, 25, 25);
+ spawn.mapRect(10825, -375, 25, 25);
+ spawn.mapRect(11050, -425, 50, 50);
+ spawn.mapRect(11025, -425, 25, 25);
+ spawn.mapRect(11075, -375, 25, 25);
+ spawn.mapRect(950, -1075, 50, 200);
+ spawn.mapRect(950, -1125, 300, 50);
+ spawn.mapRect(1000, -1075, 50, 50);
+ spawn.mapRect(1050, -1075, 25, 25);
+ spawn.mapRect(975, -1025, 50, 25);
+ spawn.mapRect(975, -1150, 250, 25);
+ spawn.mapRect(1000, -1175, 200, 25);
+ spawn.mapRect(900, -1075, 50, 175);
+ spawn.mapRect(875, -1050, 25, 125);
+ spawn.mapRect(950, -875, 125, 25);
+ spawn.mapRect(1250, -1125, 25, 125);
+ spawn.mapRect(975, -850, 75, 25);
+ spawn.mapRect(1250, -1100, 50, 75);
+ spawn.mapRect(925, -900, 50, 25);
+ spawn.mapRect(1050, -1200, 100, 25);
+ spawn.mapRect(1225, -1000, 50, 25);
+ spawn.mapRect(16375, 350, 900, 50);
+ spawn.mapRect(16400, 375, 850, 50);
+ spawn.mapRect(16425, 400, 800, 50);
+ spawn.mapRect(16475, 425, 675, 50);
+ spawn.mapRect(16625, 475, 375, 25);
+ spawn.mapRect(16650, 500, 325, 25);
+ spawn.mapRect(16675, 500, 275, 50);
+ spawn.mapRect(17400, 775, 25, 325);
+ spawn.mapRect(17425, 825, 25, 225);
+ spawn.mapRect(16200, 900, 25, 225);
+ spawn.mapRect(16175, 925, 25, 125);
+ spawn.mapRect(16150, 975, 25, 25);
+ spawn.mapRect(16400, 1150, 850, 50);
+ spawn.mapRect(16475, 1175, 650, 50);
+ spawn.mapRect(16575, 1225, 450, 25);
+ spawn.sneaker(7895.471733263175, 257.75477496554186)
+ spawn.sneaker(8109.4934675858085, 349.44686618726473)
+ spawn.sneaker(7525.886813944122, 391.9511482895349)
+ spawn.sneaker(8076.43795816953, 441.14947363958373)
+ spawn.pulsar(1064.583377612331, -976.2077284446908)
+ spawn.pulsar(1158.3436115513837, -1054.4975368803214)
+ spawn.pulsar(10966.055009228428, -373.8481911663377)
+ spawn.pulsar(10913.989668763379, -261.59108542627166)
+ spawn.pulsar(13454.158594286884, -402.8270664336466)
+ spawn.pulsar(13360.079608974078, -246.97797933698774)
+ spawn.pulsar(13497.913481830354, -251.68317759640576)
+ spawn.pulsar(15687.09056963911, -850.8426925141155)
+ spawn.pulsar(15829.058084589731, -785.4134546702737)
+ spawn.pulsar(15674.313958480483, -685.0594164868394)
+ spawn.pulsar(15819.881465281747, -686.4370174238113)
+ spawn.sneakBoss(18189.441342796745, 537.6633241821036)
+ thirdpool = level.hazard(16425, 925, 925, 200);
+ spawn.mapRect(17675, -525, 75, 725);
+ spawn.mapRect(17625, -475, 75, 650);
+ spawn.mapRect(17575, -425, 75, 575);
+ spawn.mapRect(17700, -525, 1125, 75);
+ spawn.mapRect(17675, 175, 1125, 75);
+ spawn.mapRect(18775, -525, 75, 775);
+ spawn.mapRect(18825, -475, 75, 675);
+ spawn.mapRect(18900, -450, 50, 625);
+ spawn.mapRect(18950, -400, 50, 500);
+ spawn.mapRect(17750, -575, 1000, 50);
+ spawn.mapRect(17775, -625, 950, 50);
+ spawn.mapRect(17800, -675, 900, 75);
+ spawn.mapRect(17825, -725, 850, 125);
+ spawn.mapRect(17850, -750, 800, 25);
+ spawn.mapRect(17750, 125, 50, 50);
+ spawn.mapRect(17750, 100, 25, 25);
+ spawn.mapRect(17800, 150, 25, 25);
+ spawn.mapRect(17750, -450, 75, 75);
+ spawn.mapRect(17750, -400, 25, 50);
+ spawn.mapRect(17800, -450, 50, 25);
+ spawn.mapRect(18750, -450, 25, 25);
+ spawn.mapRect(18725, -450, 50, 50);
+ spawn.mapRect(18700, -475, 25, 25);
+ spawn.mapRect(18725, -450, 25, 25);
+ spawn.mapRect(18700, -450, 75, 25);
+ spawn.mapRect(18750, -425, 25, 50);
+ spawn.mapRect(18725, 125, 75, 75);
+ spawn.mapRect(18700, 150, 50, 50);
+ spawn.mapRect(18750, 100, 75, 50);
+ spawn.mapRect(17850, 150, 850, 50);
+ spawn.mapRect(17825, 150, 25, 50);
+ spawn.mapRect(17550, -350, 25, 450);
+ spawn.mapRect(19000, -325, 25, 400);
+ spawn.mapRect(18000, -775, 475, 25);
+ spawn.mapRect(18025, -800, 425, 75);
+ spawn.mapRect(18050, -825, 375, 75);
+ spawn.mapRect(18075, -850, 325, 50);
+ spawn.mapRect(18100, -875, 275, 100);
+ spawn.mapRect(18125, -900, 225, 75);
+ spawn.mapRect(18150, -925, 175, 75);
+ spawn.mapRect(17275, 750, 1775, 125);
+ spawn.mapRect(17475, 725, 450, 50);
+ spawn.mapRect(18200, 725, 200, 50);
+ spawn.mapRect(18650, 725, 225, 75);
+ spawn.shieldingBoss(18253.51035871325, -131.1707821125636)
+ // spawn.blockBoss(12604.846253470663, 607.6074958800299)
+ spawn.mapRect(17725, 250, 1025, 25);
+ spawn.mapRect(17775, 275, 925, 25);
+ spawn.mapRect(17800, 300, 875, 25);
+ spawn.mapRect(17850, 325, 775, 25);
+ spawn.mapRect(17375, 275, 25, 75);
+ spawn.mapRect(19050, 750, 25, 275);
+ spawn.mapRect(19075, 775, 25, 250);
+ spawn.mapRect(19100, 800, 25, 225);
+ spawn.mapRect(19125, 850, 25, 175);
+ spawn.mapRect(19150, 875, 25, 150);
+ spawn.mapRect(19175, 925, 25, 100);
+ spawn.mapRect(19200, 950, 25, 75);
+ spawn.mapRect(19000, 850, 100, 175);
+ spawn.mapRect(19050, 975, 650, 50);
+ spawn.mapRect(19425, 650, 275, 50);
+ spawn.mapRect(19675, 650, 50, 375);
+ spawn.mapRect(19050, 1025, 625, 25);
+ spawn.mapRect(19075, 1050, 575, 25);
+ spawn.mapRect(19250, 1100, 200, 25);
+ spawn.mapRect(19175, 1075, 375, 25);
+ spawn.mapRect(19450, 625, 225, 25);
+ spawn.mapRect(19500, 600, 150, 50);
+ spawn.mapRect(19625, 700, 50, 50);
+ spawn.mapRect(19600, 700, 25, 25);
+ spawn.mapRect(19650, 750, 25, 25);
+ spawn.mapRect(19400, 650, 25, 100);
+ spawn.mapRect(19375, 675, 25, 50);
+ spawn.mapRect(17600, 875, 250, 25);
+ spawn.mapRect(18100, 850, 375, 50);
+ spawn.mapRect(18650, 875, 325, 25);
+
+ pooldunker = level.mover(7175, 425, 50, 25);
+ level.custom = () => {
+ level.exit.drawAndCheck();
+ pooldunker.VxGoal = 90;
+ pooldunker.push();
+ mover.VxGoal = 45;
+ mover.push();
+ level.enter.draw();
+ pool.query();
+ wastepool.query();
+ thirdpool.query();
+ mover1.VxGoal = 12;
+ mover1.push();
+ mover2.VxGoal = 24;
+ mover2.push();
+ bigpool.query();
+
+ for (i = 0; i < mob.length; i++) { if (mob[i].isBoss == false) { mob[i].damageReduction = 0.13 } }
+ };
+
+ spawn.mapRect(-100, 0, 1000, 100);
+ powerUps.addResearchToLevel() //needs to run after mobs are spawned
+ },
// ********************************************************************************************************
// ********************************************************************************************************
// ***************************************** training levels **********************************************
diff --git a/js/powerup.js b/js/powerup.js
index 87b8a1e..ac88dc6 100644
--- a/js/powerup.js
+++ b/js/powerup.js
@@ -922,13 +922,13 @@ const powerUps = {
if (botTech.length > 0) { //pick random bot tech
// const choose = botTech[Math.floor(Math.random() * botTech.length)];
// const isCount = tech.tech[choose].count > 0 ? `(${tech.tech[choose].count+1}x)` : "";
- // text += `