finalBoss rework
finalBoss rework
(this is pretty raw, so expect a bug and balance patch soon)
finalBoss goes invulnerable a few times as it loses health
finalBoss damage reduction is higher
finalBoss damage reduction slowly decays as you do any damage to the boss
damage reduction resets to normal with each new invulnerability phase
after each invulnerability phase it randomly adds 1 more attack mode
lasers, black hole, mines, hoppers, seekers, mobs, orbiters, oscillation
mobs die below 0.05 -> 0.01 health
might cause bugs, but testing this out
guns and field power ups show 3 -> 2 options
bug fixes:
This commit is contained in:
41
js/level.js
41
js/level.js
@@ -16,37 +16,38 @@ 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(12 * 4) //30 is near max on hard //60 is near max on why
|
||||
// simulation.isHorizontalFlipped = true
|
||||
// tech.giveTech("performance")
|
||||
// level.difficultyIncrease(6 * 4) //30 is near max on hard //60 is near max on why
|
||||
// m.maxHealth = m.health = 100
|
||||
// tech.isRerollDamage = true
|
||||
// powerUps.research.changeRerolls(100000)
|
||||
// powerUps.research.changeRerolls(50)
|
||||
// m.immuneCycle = Infinity //you can't take damage
|
||||
// tech.tech[297].frequency = 100
|
||||
// m.couplingChange(5)
|
||||
// m.setField("metamaterial cloaking") //molecular assembler standing wave time dilation perfect diamagnetism metamaterial cloaking wormhole negative mass
|
||||
// m.setField("pilot wave") //molecular assembler standing wave time dilation perfect diamagnetism metamaterial cloaking wormhole negative mass pilot wave
|
||||
// simulation.molecularMode = 2
|
||||
// m.damage(0.1);
|
||||
// b.giveGuns("nail gun") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser
|
||||
// b.guns[0].ammo = 1000000
|
||||
|
||||
// for (let i = 0; i < 1; ++i) tech.giveTech("mass-energy equivalence")
|
||||
// tech.giveTech("Zeno's paradox")
|
||||
// tech.giveTech("homeostasis")
|
||||
// for (let i = 0; i < 1; ++i) tech.giveTech("1st ionization energy")
|
||||
// for (let i = 0; i < 1; i++) tech.giveTech("negative feedback")
|
||||
// for (let i = 0; i < 1; ++i) tech.giveTech("needle gun")
|
||||
// tech.giveTech("pressure vessel")
|
||||
// tech.giveTech("quintessence")
|
||||
// for (let i = 0; i < 1; ++i) tech.giveTech("freezer burn")
|
||||
// for (let i = 0; i < 1; i++) tech.giveTech("reaction inhibitor")
|
||||
// for (let i = 0; i < 10; i++) powerUps.directSpawn(450, -50, "tech");
|
||||
// for (let i = 0; i < 10; i++) powerUps.directSpawn(1750, -500, "boost");
|
||||
// for (let i = 0; i < 10; i++) powerUps.directSpawn(1750, -500, "coupling");
|
||||
|
||||
// level.testing();
|
||||
// level.final();
|
||||
// spawn.starter(1900, -500)
|
||||
// spawn.beetleBoss(2538, -1950)
|
||||
// spawn.timeBoss(2538, -950)
|
||||
// for (let i = 0; i < 33; ++i) spawn.sniper(1000 + 5000 * Math.random(), -500 + 300 * Math.random())
|
||||
// tech.addJunkTechToPool(0.5)
|
||||
// tech.tech[322].frequency = 100
|
||||
// spawn.tetherBoss(1900, -500, { x: 1900, y: -500 })
|
||||
|
||||
// for (let i = 0; i < 36; ++i) tech.giveTech()
|
||||
// for (let i = 0; i < 13; ++i) powerUps.directSpawn(m.pos.x + 50 * Math.random(), m.pos.y + 50 * Math.random(), "research");
|
||||
if (simulation.isTraining) { level.walk(); } else { level.intro(); } //normal starting level ************************************************
|
||||
// for (let i = 0; i < 4; ++i) powerUps.directSpawn(m.pos.x + 50 * Math.random(), m.pos.y + 50 * Math.random(), "tech");
|
||||
@@ -3125,12 +3126,18 @@ const level = {
|
||||
powerUps.addResearchToLevel() //needs to run after mobs are spawned
|
||||
},
|
||||
final() {
|
||||
const slime = level.hazard(simulation.isHorizontalFlipped ? 150 - 860 : -150, -360, 880, 259) //x, y, width, height, damage = 0.002) {
|
||||
slime.height -= slime.maxHeight - 150 //start slime at zero
|
||||
slime.min.y += slime.maxHeight
|
||||
slime.max.y = slime.min.y + slime.height
|
||||
level.custom = () => {
|
||||
level.exit.drawAndCheck();
|
||||
|
||||
level.enter.draw();
|
||||
};
|
||||
level.customTopLayer = () => {
|
||||
slime.query();
|
||||
slime.levelRise(0.1)
|
||||
|
||||
ctx.fillStyle = "rgba(0,255,255,0.1)"
|
||||
ctx.fillRect(5400, -550, 300, 350)
|
||||
};
|
||||
@@ -3163,7 +3170,13 @@ const level = {
|
||||
spawn.mapRect(-1950, -3300, 8200, 1800); //roof
|
||||
spawn.mapRect(-250, -200, 1000, 300); // shelf
|
||||
spawn.mapRect(-250, -1700, 1000, 1250); // shelf roof
|
||||
spawn.blockDoor(710, -210);
|
||||
// spawn.blockDoor(710, -210);
|
||||
spawn.mapRect(705, -210, 25, 50);
|
||||
spawn.mapRect(725, -220, 25, 50);
|
||||
spawn.bodyRect(750, -125, 125, 125);
|
||||
spawn.bodyRect(875, -50, 50, 50);
|
||||
|
||||
|
||||
spawn.mapRect(5400, -1700, 400, 1150); //right wall
|
||||
spawn.mapRect(5400, -300, 400, 400); //right wall
|
||||
spawn.mapRect(5700, -3300, 1800, 5100); //right wall
|
||||
@@ -3187,6 +3200,8 @@ const level = {
|
||||
level.enter.draw();
|
||||
};
|
||||
level.customTopLayer = () => {
|
||||
slime.query();
|
||||
slime.levelRise(0.1)
|
||||
ctx.fillStyle = "rgba(0,255,255,0.1)"
|
||||
ctx.fillRect(-5400 - 300, -550, 300, 350)
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user