blocks don't block vision
more bug fixes (pulse color, backwards induction giving too many tech) mobs can now see through blocks mobs spawns and level spawns have been adjusted to prevent getting zonked at the start of a level
This commit is contained in:
@@ -452,7 +452,7 @@ const b = {
|
||||
},
|
||||
pulse(energy, angle = m.angle) {
|
||||
let best;
|
||||
let explosionRadius = 1400 * energy
|
||||
let explosionRadius = 1300 * energy
|
||||
let range = 3000
|
||||
const path = [{
|
||||
x: m.pos.x + 20 * Math.cos(angle),
|
||||
@@ -537,7 +537,7 @@ const b = {
|
||||
};
|
||||
}
|
||||
}
|
||||
if (best.who) b.explosion(path[1], explosionRadius, true)
|
||||
if (best.who) b.explosion(path[1], explosionRadius)
|
||||
|
||||
if (tech.isPulseStun) {
|
||||
const range = 100 + 2000 * energy
|
||||
@@ -661,7 +661,7 @@ const b = {
|
||||
};
|
||||
}
|
||||
}
|
||||
if (best.who) b.explosion(path[1], explosionRadius, true)
|
||||
if (best.who) b.explosion(path[1], explosionRadius)
|
||||
|
||||
//draw laser beam
|
||||
ctx.beginPath();
|
||||
|
||||
151
js/level.js
151
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(25)
|
||||
// level.difficultyIncrease(125)
|
||||
// simulation.zoomScale = 1000;
|
||||
// simulation.setZoom();
|
||||
// m.setField("nano-scale manufacturing")
|
||||
@@ -822,9 +822,9 @@ const level = {
|
||||
}
|
||||
//float
|
||||
if (player.velocity.y > 5) player.force.y -= 0.95 * player.mass * simulation.g
|
||||
const slowY = (player.velocity.y > 0) ? Math.max(0.4, 1 - 0.001 * player.velocity.y * player.velocity.y) : Math.max(0.98, 1 - 0.001 * Math.abs(player.velocity.y)) //down : up
|
||||
const slowY = (player.velocity.y > 0) ? Math.max(0.8, 1 - 0.002 * player.velocity.y * player.velocity.y) : Math.max(0.98, 1 - 0.001 * Math.abs(player.velocity.y)) //down : up
|
||||
Matter.Body.setVelocity(player, {
|
||||
x: Math.max(0.6, 1 - 0.07 * Math.abs(player.velocity.x)) * player.velocity.x,
|
||||
x: Math.max(0.95, 1 - 0.036 * Math.abs(player.velocity.x)) * player.velocity.x,
|
||||
y: slowY * player.velocity.y
|
||||
});
|
||||
}
|
||||
@@ -1221,7 +1221,7 @@ const level = {
|
||||
};
|
||||
level.customTopLayer = () => {};
|
||||
|
||||
level.setPosToSpawn(0, -750); //normal spawn
|
||||
level.setPosToSpawn(0, -475); //normal spawn
|
||||
spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20);
|
||||
level.exit.x = 6500;
|
||||
level.exit.y = -230;
|
||||
@@ -1241,7 +1241,11 @@ const level = {
|
||||
spawn.mapRect(-950, 0, 8200, 800); //ground
|
||||
spawn.mapRect(-950, -1200, 800, 1400); //left wall
|
||||
spawn.mapRect(-950, -1800, 8200, 800); //roof
|
||||
spawn.mapRect(-250, -700, 1000, 900); // shelf
|
||||
// spawn.mapRect(-250, -700, 1000, 900); // shelf
|
||||
// spawn.mapRect(-250, -350, 600, 550);
|
||||
spawn.mapRect(175, -700, 575, 950);
|
||||
spawn.mapRect(-250, -425, 600, 650);
|
||||
|
||||
spawn.mapRect(-250, -1200, 1000, 250); // shelf roof
|
||||
powerUps.spawnStartingPowerUps(600, -800);
|
||||
|
||||
@@ -1619,6 +1623,8 @@ const level = {
|
||||
spawn.mapRect(300, -375, 50, 225);
|
||||
spawn.bodyRect(312, -150, 25, 140);
|
||||
spawn.mapRect(300, -10, 50, 50);
|
||||
spawn.mapVertex(1555, 0, "625 0 75 0 200 -100 500 -100"); //entrance ramp
|
||||
|
||||
|
||||
//upper entrance / exit
|
||||
spawn.mapRect(-400, -1050, 750, 50);
|
||||
@@ -1692,16 +1698,22 @@ const level = {
|
||||
//mobs
|
||||
spawn.randomMob(1075, -3500, -0.3);
|
||||
// spawn.randomMob(-75, -3425, 0.2);
|
||||
spawn.randomMob(1475, -225, -0.3);
|
||||
spawn.randomMob(2075, -150, -0.2);
|
||||
// spawn.randomMob(1475, -225, -0.3);
|
||||
// spawn.randomMob(2075, -150, -0.2);
|
||||
spawn.randomMob(2175, -700, -0.2);
|
||||
spawn.randomMob(-75, -850, -0.1);
|
||||
spawn.randomMob(1300, -600, -0.1);
|
||||
// spawn.randomMob(1300, -600, -0.1);
|
||||
spawn.randomMob(550, -3400, 0);
|
||||
spawn.randomMob(0, -1175, 0.5);
|
||||
spawn.randomMob(-75, -1150, 0.5);
|
||||
spawn.randomMob(1075, -625, 0.5);
|
||||
spawn.randomMob(1725, -575, 0.5);
|
||||
// spawn.randomMob(1725, -575, 0.5);
|
||||
spawn.randomMob(800, -3400, -0.3);
|
||||
spawn.randomMob(1225, -3375, -0.2);
|
||||
spawn.randomMob(1200, -1125, -0.1);
|
||||
spawn.randomMob(2050, -950, 0.5);
|
||||
|
||||
|
||||
if (simulation.difficulty > 40) {
|
||||
spawn.randomMob(2300, -2775, -0.5);
|
||||
spawn.randomMob(600, -925, -0.5);
|
||||
@@ -1842,6 +1854,7 @@ const level = {
|
||||
spawn.mapRect(9300, 2590, 650, 25);
|
||||
spawn.mapRect(9700, 2580, 100, 50);
|
||||
|
||||
|
||||
spawn.randomGroup(1300, 2100, 0.1);
|
||||
spawn.randomMob(8300, 2100, 0.1);
|
||||
spawn.randomSmallMob(2575, -75, 0.1); //entrance
|
||||
@@ -1850,7 +1863,7 @@ const level = {
|
||||
spawn.randomMob(2425, 2150, 0.1);
|
||||
spawn.randomSmallMob(3500, 250, 0.2);
|
||||
spawn.randomMob(3800, 2175, 0.2);
|
||||
spawn.randomSmallMob(1100, -300, 0.2); //entrance
|
||||
spawn.randomSmallMob(2500, -275, 0.2); //entrance
|
||||
spawn.randomMob(4450, 2500, 0.2);
|
||||
spawn.randomMob(6350, 2525, 0.2);
|
||||
spawn.randomGroup(9200, 2400, 0.3);
|
||||
@@ -1891,7 +1904,8 @@ const level = {
|
||||
}
|
||||
};
|
||||
|
||||
level.setPosToSpawn(-50, -50); //normal spawn
|
||||
level.setPosToSpawn(-100, 210); //normal spawn
|
||||
spawn.mapRect(-150, 240, 100, 30);
|
||||
level.exit.x = -100;
|
||||
level.exit.y = -425;
|
||||
spawn.mapRect(level.exit.x, level.exit.y + 15, 100, 50); //exit bump
|
||||
@@ -1907,14 +1921,13 @@ const level = {
|
||||
document.body.style.backgroundColor = "#dbdcde";
|
||||
|
||||
//spawn start building
|
||||
spawn.mapRect(-300, -800, 50, 800);
|
||||
spawn.mapRect(-100, -20, 100, 30);
|
||||
spawn.mapRect(-350, -800, 100, 1100);
|
||||
// spawn.mapRect(-300, -10, 500, 50);
|
||||
spawn.mapRect(150, -510, 50, 365);
|
||||
spawn.bodyRect(170, -130, 14, 145, 1, spawn.propsFriction); //door to starting room
|
||||
spawn.bodyRect(170, -140, 20, 163, 1, spawn.propsFriction); //door to starting room
|
||||
spawn.mapVertex(175, 200, "625 0 300 0 425 -300 500 -300"); //entrance ramp
|
||||
// spawn.mapRect(-300, 0, 1000, 300); //ground
|
||||
spawn.mapVertex(-18, 145, "625 0 0 0 0 -300 500 -300"); //entrance ramp
|
||||
spawn.mapRect(-300, 250, 6300, 300); //deeper ground
|
||||
spawn.mapRect(-350, 250, 6350, 300); //deeper ground
|
||||
spawn.bodyRect(2100, 50, 80, 80);
|
||||
spawn.bodyRect(2000, 50, 60, 60);
|
||||
// spawn.bodyRect(1650, 50, 300, 200);
|
||||
@@ -1923,10 +1936,10 @@ const level = {
|
||||
|
||||
//exit building
|
||||
// spawn.mapRect(-100, -410, 100, 30);
|
||||
spawn.mapRect(-300, -800, 500, 50);
|
||||
spawn.mapRect(-350, -850, 550, 100);
|
||||
spawn.mapRect(150, -800, 50, 110);
|
||||
spawn.bodyRect(170, -690, 14, 180, 1, spawn.propsFriction); //door to exit room
|
||||
spawn.mapRect(-300, -400, 500, 100); //far left starting ceiling
|
||||
spawn.mapRect(-300, -400, 500, 150); //far left starting ceiling
|
||||
level.fill.push({
|
||||
x: -250,
|
||||
y: -400,
|
||||
@@ -2050,10 +2063,10 @@ const level = {
|
||||
spawn.randomMob(5750, 125, 0.4);
|
||||
spawn.randomMob(5900, -1500, 0.4);
|
||||
spawn.randomMob(4700, -800, 0.4);
|
||||
spawn.randomMob(1400, -400, 0.3);
|
||||
spawn.randomMob(1400, 200, 0.3);
|
||||
spawn.randomMob(2850, 175, 0.4);
|
||||
spawn.randomMob(2000, -2800, 0.4);
|
||||
spawn.randomMob(2200, -500, 0.4);
|
||||
spawn.randomMob(2400, -400, 0.4);
|
||||
spawn.randomMob(4475, -3550, 0.3);
|
||||
spawn.randomGroup(5000, -2150, 1);
|
||||
spawn.randomGroup(3700, -4100, 0.3);
|
||||
@@ -2277,12 +2290,15 @@ const level = {
|
||||
spawn.spawnStairs(3800, 0, 3, 150, 206); //stairs top exit
|
||||
spawn.mapRect(3400, -275, 450, 275); //exit platform
|
||||
|
||||
|
||||
|
||||
|
||||
spawn.randomSmallMob(2200, -1775);
|
||||
spawn.randomSmallMob(4000, -825);
|
||||
spawn.randomSmallMob(-350, -2400);
|
||||
spawn.randomSmallMob(-350, -3400);
|
||||
spawn.randomMob(4250, -1350, 0.8);
|
||||
spawn.randomMob(2550, -1350, 0.8);
|
||||
spawn.randomMob(1225, -2400, 0.3);
|
||||
spawn.randomMob(1875, -1075, 0.3);
|
||||
spawn.randomMob(1120, -1200, 0.3);
|
||||
spawn.randomMob(3000, -1150, 0.2);
|
||||
spawn.randomMob(3200, -1150, 0.3);
|
||||
@@ -2291,11 +2307,11 @@ const level = {
|
||||
spawn.randomMob(3600, -1800, 0.1);
|
||||
spawn.randomMob(5200, -100, 0.3);
|
||||
spawn.randomMob(5275, -900, 0.2);
|
||||
spawn.randomMob(900, -2125, 0.3);
|
||||
spawn.randomMob(0, -1075, 0.3);
|
||||
spawn.randomGroup(600, -1575, 0);
|
||||
spawn.randomGroup(2225, -1325, 0.4);
|
||||
spawn.randomGroup(4900, -1200, 0);
|
||||
if (simulation.difficulty > 3) spawn.randomLevelBoss(3200, -2050);
|
||||
if (simulation.difficulty > 3) spawn.randomLevelBoss(3200, -1900);
|
||||
powerUps.addRerollToLevel() //needs to run after mobs are spawned
|
||||
if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) spawn.randomLevelBoss(2175, -2425);
|
||||
},
|
||||
@@ -2441,9 +2457,12 @@ const level = {
|
||||
spawn.mapRect(4250, -3700, 50, 300);
|
||||
spawn.mapRect(3700, -3250, 1100, 100);
|
||||
|
||||
|
||||
|
||||
spawn.randomGroup(350, -500, 1)
|
||||
spawn.randomSmallMob(-225, 25);
|
||||
spawn.randomSmallMob(1000, -1100);
|
||||
spawn.randomSmallMob(2100, -900);
|
||||
|
||||
spawn.randomSmallMob(4000, -250);
|
||||
spawn.randomSmallMob(4450, -3000);
|
||||
spawn.randomSmallMob(5600, 100);
|
||||
@@ -2454,7 +2473,8 @@ const level = {
|
||||
spawn.randomMob(3900, -2700, 0.8);
|
||||
spawn.randomMob(3600, -500, 0.8);
|
||||
spawn.randomMob(3400, -200, 0.8);
|
||||
spawn.randomMob(1650, -1300, 0.7)
|
||||
// spawn.randomMob(1650, -1300, 0.7)
|
||||
spawn.randomMob(425, 0, 0.7);
|
||||
spawn.randomMob(4100, -50, 0.7);
|
||||
spawn.randomMob(4100, -50, 0.5);
|
||||
spawn.randomMob(1700, -50, 0.3)
|
||||
@@ -2639,7 +2659,9 @@ const level = {
|
||||
spawn.bodyRect(1425, -1110, 115, 25, 0.9); //block on far left building
|
||||
spawn.bodyRect(1540, -1110, 300, 25, 0.9); //block on far left building
|
||||
|
||||
spawn.randomSmallMob(1300, -70);
|
||||
|
||||
spawn.randomMob(-100, -1300, 0.5);
|
||||
spawn.randomSmallMob(1850, -600);
|
||||
spawn.randomSmallMob(3200, -100);
|
||||
spawn.randomSmallMob(4450, -100);
|
||||
spawn.randomSmallMob(2700, -475);
|
||||
@@ -2653,7 +2675,7 @@ const level = {
|
||||
spawn.randomMob(1690, -2250, 0.25);
|
||||
spawn.randomMob(2200, -600, 0.2);
|
||||
spawn.randomMob(850, -1300, 0.25);
|
||||
spawn.randomMob(-100, -900, -0.2);
|
||||
spawn.randomMob(-100, -1700, -0.2);
|
||||
spawn.randomGroup(3700, -1500, 0.4);
|
||||
spawn.randomGroup(1700, -900, 0.4);
|
||||
if (simulation.difficulty > 3) spawn.randomLevelBoss(2600, -2300);
|
||||
@@ -2666,7 +2688,7 @@ const level = {
|
||||
};
|
||||
level.customTopLayer = () => {};
|
||||
|
||||
level.setPosToSpawn(0, -700); //normal spawn
|
||||
level.setPosToSpawn(-300, -700); //normal spawn
|
||||
spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20);
|
||||
level.exit.x = -4275;
|
||||
level.exit.y = -2805;
|
||||
@@ -2771,9 +2793,12 @@ const level = {
|
||||
spawn.mapRect(-2225, 0, 2475, 150);
|
||||
spawn.mapRect(175, -1000, 75, 1100);
|
||||
|
||||
spawn.mapRect(-175, -985, 25, 175);
|
||||
spawn.bodyRect(-170, -810, 14, 160, 1, spawn.propsFriction); //door to starting room
|
||||
spawn.mapRect(-600, -650, 825, 50);
|
||||
// spawn.mapRect(-175, -985, 50, 175);
|
||||
spawn.mapRect(-600, -1075, 50, 475);
|
||||
// spawn.bodyRect(-170, -810, 14, 160, 1, spawn.propsFriction); //door to starting room
|
||||
// spawn.mapRect(-600, -650, 825, 50);
|
||||
// spawn.mapRect(-600, -1075, 75, 475);
|
||||
spawn.mapRect(-600, -650, 625, 50);
|
||||
spawn.mapRect(-1300, -650, 500, 50);
|
||||
spawn.mapRect(-175, -250, 425, 300);
|
||||
spawn.bodyRect(-75, -300, 50, 50);
|
||||
@@ -3036,29 +3061,29 @@ const level = {
|
||||
|
||||
//mobs
|
||||
spawn.randomSmallMob(-1125, 550);
|
||||
spawn.randomSmallMob(-2325, 800);
|
||||
spawn.randomSmallMob(-2950, -50);
|
||||
spawn.randomMob(-2025, 175, 0.3);
|
||||
spawn.randomMob(-2325, 450, 0.3);
|
||||
spawn.randomMob(-2925, 675, 0.2);
|
||||
spawn.randomMob(-2700, 300, 0.1);
|
||||
spawn.randomMob(-2500, 300, 0.1);
|
||||
spawn.randomMob(-2075, -425, 0.1);
|
||||
spawn.randomMob(-1550, -725, 0.1);
|
||||
spawn.randomMob(375, 1100, 0);
|
||||
spawn.randomMob(-1575, 1100, 0);
|
||||
spawn.randomSmallMob(825, 300);
|
||||
spawn.randomSmallMob(-900, 825);
|
||||
spawn.randomMob(-2025, 175, 0.6);
|
||||
spawn.randomMob(-2325, 450, 0.6);
|
||||
spawn.randomMob(-2925, 675, 0.5);
|
||||
spawn.randomMob(-2700, 300, 0.2);
|
||||
spawn.randomMob(-2500, 300, 0.2);
|
||||
spawn.randomMob(-2075, -425, 0.2);
|
||||
spawn.randomMob(-1550, -725, 0.2);
|
||||
spawn.randomMob(375, 1100, 0.1);
|
||||
spawn.randomMob(-1425, -100, 0.1);
|
||||
spawn.randomMob(-800, -750, 0);
|
||||
spawn.randomMob(400, -350, 0);
|
||||
spawn.randomMob(650, 1300, 0);
|
||||
spawn.randomMob(-750, -150, 0);
|
||||
spawn.randomMob(475, 300, 0);
|
||||
spawn.randomMob(-75, -700, 0);
|
||||
spawn.randomMob(900, -200, -0.1);
|
||||
spawn.randomGroup(-125, 275, -0.2);
|
||||
spawn.randomGroup(-825, 1000, 0.2);
|
||||
spawn.randomMob(-800, -1750, 0);
|
||||
spawn.randomMob(400, -750, -0.1);
|
||||
spawn.randomMob(650, 1300, -0.1);
|
||||
spawn.randomMob(-2450, 1050, -0.1);
|
||||
spawn.randomMob(500, 400, -0.1);
|
||||
spawn.randomMob(-75, -1700, -0.1);
|
||||
spawn.randomMob(900, -800, -0.2);
|
||||
spawn.randomGroup(-75, 1050, -0.1);
|
||||
spawn.randomGroup(-900, 1000, 0.2);
|
||||
spawn.randomGroup(-1300, -1100, -0.3);
|
||||
spawn.randomSmallMob(-2325, 800);
|
||||
spawn.randomSmallMob(-900, 825);
|
||||
|
||||
if (simulation.difficulty > 3) {
|
||||
if (Math.random() < 0.25) {
|
||||
@@ -3067,9 +3092,8 @@ const level = {
|
||||
spawn.snakeBoss(-1000 + Math.random() * 2500, -1300); //boss snake with head
|
||||
}
|
||||
}
|
||||
powerUps.addRerollToLevel() //needs to run after mobs are spawned
|
||||
|
||||
if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) spawn.randomLevelBoss(300, -800);
|
||||
powerUps.addRerollToLevel() //needs to run after mobs are spawned
|
||||
},
|
||||
office() {
|
||||
let button, door
|
||||
@@ -3077,8 +3101,8 @@ const level = {
|
||||
button = level.button(525, 0)
|
||||
door = level.door(1362, -200, 25, 200, 195)
|
||||
level.setPosToSpawn(1375, -1550); //normal spawn
|
||||
level.exit.x = 3250;
|
||||
level.exit.y = -530;
|
||||
level.exit.x = 3288;
|
||||
level.exit.y = -630;
|
||||
// spawn.randomSmallMob(3550, -550);
|
||||
level.fillBG.push({
|
||||
x: 3050,
|
||||
@@ -3090,7 +3114,7 @@ const level = {
|
||||
} else { //reverse direction, start in bottom right
|
||||
button = level.button(3800, 0)
|
||||
door = level.door(3012, -200, 25, 200, 195)
|
||||
level.setPosToSpawn(3250, -550); //normal spawn
|
||||
level.setPosToSpawn(3337, -650); //normal spawn
|
||||
level.exit.x = 1375;
|
||||
level.exit.y = -1530;
|
||||
// spawn.bodyRect(3655, -650, 40, 150); //door
|
||||
@@ -3103,7 +3127,6 @@ const level = {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
level.custom = () => {
|
||||
button.query();
|
||||
button.draw();
|
||||
@@ -3122,7 +3145,6 @@ const level = {
|
||||
level.defaultZoom = 1400
|
||||
simulation.zoomTransition(level.defaultZoom)
|
||||
spawn.mapRect(level.exit.x, level.exit.y + 20, 100, 50); //ground bump wall
|
||||
|
||||
spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20);
|
||||
|
||||
document.body.style.backgroundColor = "#e0e5e0";
|
||||
@@ -3216,19 +3238,22 @@ const level = {
|
||||
spawn.mapRect(3000, -1000, 50, 800); //left wall
|
||||
spawn.mapRect(3000 + 2000 - 50, -1300, 50, 1100); //right wall
|
||||
spawn.mapRect(4150, -600, 350, 150); //table
|
||||
spawn.mapRect(3650, -1300, 50, 650); //exit wall
|
||||
spawn.mapRect(3650, -1300, 50, 700); //exit wall
|
||||
spawn.mapRect(3650, -1300, 1350, 50); //exit wall
|
||||
spawn.bodyRect(3665, -650, 20, 150); //door
|
||||
spawn.bodyRect(3665, -600, 20, 100); //door
|
||||
// spawn.mapRect(3150, -550, 300, 75);
|
||||
// spawn.mapRect(3225, -600, 175, 75);
|
||||
spawn.mapRect(3150, -550, 375, 75);
|
||||
spawn.mapRect(3225, -600, 225, 75);
|
||||
|
||||
|
||||
spawn.mapRect(3000, -2000 * 0.5, 700, 50); //exit roof
|
||||
spawn.mapRect(3000, -2000 * 0.25, 2000 - 300, 50); //1st floor
|
||||
spawn.spawnStairs(3000 + 2000 - 50, 0, 4, 250, 350, true); //stairs ground
|
||||
|
||||
spawn.randomSmallMob(4575, -560, 1);
|
||||
spawn.randomSmallMob(1315, -880, 1);
|
||||
spawn.randomSmallMob(800, -600);
|
||||
spawn.randomSmallMob(-100, -1600);
|
||||
// spawn.randomSmallMob(-100, -1600);
|
||||
spawn.randomMob(4100, -225, 0.8);
|
||||
spawn.randomMob(-250, -700, 0.8);
|
||||
spawn.randomMob(4500, -225, 0.15);
|
||||
|
||||
@@ -312,7 +312,7 @@ const mobs = {
|
||||
if (
|
||||
this.distanceToPlayer2() < this.seeAtDistance2 &&
|
||||
Matter.Query.ray(map, this.position, this.mPosRange()).length === 0 &&
|
||||
Matter.Query.ray(body, this.position, this.mPosRange()).length === 0 &&
|
||||
// Matter.Query.ray(body, this.position, this.mPosRange()).length === 0 &&
|
||||
!m.isCloak
|
||||
) {
|
||||
this.foundPlayer();
|
||||
@@ -365,7 +365,7 @@ const mobs = {
|
||||
if (
|
||||
this.distanceToPlayer2() < this.seeAtDistance2 &&
|
||||
Matter.Query.ray(map, this.position, this.mPosRange()).length === 0 &&
|
||||
Matter.Query.ray(body, this.position, this.mPosRange()).length === 0 &&
|
||||
// Matter.Query.ray(body, this.position, this.mPosRange()).length === 0 &&
|
||||
!m.isCloak
|
||||
) {
|
||||
this.foundPlayer();
|
||||
|
||||
@@ -16,7 +16,9 @@ const powerUps = {
|
||||
m.setField(index)
|
||||
simulation.makeTextLog(`<span class='color-var'>m</span>.setField("<span class='color-text'>${m.fieldUpgrades[m.fieldMode].name}</span>")`);
|
||||
} else if (type === "tech") {
|
||||
setTimeout(() => {
|
||||
powerUps.lastTechIndex = index
|
||||
}, 100);
|
||||
tech.giveTech(index)
|
||||
simulation.makeTextLog(`<span class='color-var'>tech</span>.giveTech("<span class='color-text'>${tech.tech[index].name}</span>")`);
|
||||
}
|
||||
@@ -342,7 +344,6 @@ const powerUps = {
|
||||
// text += `<div class="choose-grid-module" onclick="powerUps.choose('tech',${choose})"><div class="grid-title"><div class="circle-grid tech"></div> ${tech.tech[choose].name}</div> ${tech.tech[choose].description}</div>`
|
||||
return choose
|
||||
}
|
||||
|
||||
}
|
||||
let text = ""
|
||||
if (!tech.isDeterminism) text += `<div class='cancel' onclick='powerUps.endDraft("tech",true)'>✕</div>`
|
||||
|
||||
@@ -1953,7 +1953,7 @@ const spawn = {
|
||||
if (
|
||||
this.distanceToPlayer2() < this.seeAtDistance2 &&
|
||||
Matter.Query.ray(map, this.position, this.mPosRange()).length === 0 &&
|
||||
Matter.Query.ray(body, this.position, this.mPosRange()).length === 0 &&
|
||||
// Matter.Query.ray(body, this.position, this.mPosRange()).length === 0 &&
|
||||
!m.isCloak
|
||||
) {
|
||||
this.foundPlayer();
|
||||
@@ -2547,7 +2547,7 @@ const spawn = {
|
||||
spawn.shield(me, x, y, 1);
|
||||
spawn.spawnOrbitals(me, radius + 50 + 200 * Math.random())
|
||||
|
||||
Matter.Body.setDensity(me, 0.008); //extra dense //normal is 0.001 //makes effective life much larger
|
||||
Matter.Body.setDensity(me, 0.004); //extra dense //normal is 0.001 //makes effective life much larger
|
||||
me.onDeath = function() {
|
||||
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
||||
// this.vertices = Matter.Vertices.hull(Matter.Vertices.clockwiseSort(this.vertices)) //helps collisions functions work better after vertex have been changed
|
||||
|
||||
@@ -1392,9 +1392,7 @@
|
||||
}
|
||||
}, {
|
||||
name: "flip-flop",
|
||||
description: `unlock advanced <strong class='color-m'>tech</strong> that runs if flip-flop is <strong class="color-flop">ON</strong><br><strong>flip-flop</strong> toggles <strong class="color-flop">ON</strong> and <strong class="color-flop">OFF</strong> after a collision`,
|
||||
// description: `if <strong>flip-flop</strong> is <strong class="color-flop">ON</strong>, collisions set it to <strong class="color-flop">OFF</strong>
|
||||
// <br>if <strong>flip-flop</strong> is <strong class="color-flop">OFF</strong>, collisions set it to <strong class="color-flop">ON</strong>`,
|
||||
description: `<strong>flip-flop</strong> toggles <strong class="color-flop">ON</strong> and <strong class="color-flop">OFF</strong> after a <strong>collision</strong><br>unlock advanced <strong class='color-m'>tech</strong> that runs if <strong class="color-flop">ON</strong>`,
|
||||
nameInfo: "<span id = 'tech-flip-flop'></span>",
|
||||
addNameInfo() {
|
||||
setTimeout(function() {
|
||||
@@ -2742,7 +2740,7 @@
|
||||
|
||||
{
|
||||
name: "backward induction",
|
||||
description: "gain all the <strong class='color-m'>tech</strong> <strong>options</strong> you didn't <strong>choose</strong><br>from your previous <strong class='color-m'>tech</strong> selection",
|
||||
description: "<strong>choose</strong> all the <strong class='color-m'>tech</strong> <strong>options</strong> you didn't <strong>choose</strong><br>from your previous <strong class='color-m'>tech</strong> selection",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
frequency: 1,
|
||||
@@ -2760,6 +2758,7 @@
|
||||
const index = powerUps.tech.choiceLog[i]
|
||||
if (powerUps.tech.choiceLog[i] !== powerUps.lastTechIndex && tech.tech[index].count < tech.tech[index].maxCount && tech.tech[index].allowed()) {
|
||||
tech.giveTech(index)
|
||||
simulation.makeTextLog(`<span class='color-var'>tech</span>.giveTech("<span class='color-text'>${tech.tech[index].name}</span>") <em>// backward induction</em>`);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
26
todo.txt
26
todo.txt
@@ -1,8 +1,10 @@
|
||||
******************************************************** NEXT PATCH ********************************************************
|
||||
|
||||
more bug fixes (many worlds, disintegrated armament)
|
||||
more bug fixes (pulse color, backwards induction giving too many tech)
|
||||
|
||||
mobs can now see through blocks
|
||||
mobs spawns and level spawns have been adjusted to prevent getting zonked at the start of a level
|
||||
|
||||
tech: backward induction - gain all the tech options you didn't choose from your previous tech selection menu
|
||||
|
||||
******************************************************** BUGS ********************************************************
|
||||
|
||||
@@ -35,23 +37,27 @@ fix door.isOpen actually meaning isClosed?
|
||||
|
||||
******************************************************** TODO ********************************************************
|
||||
|
||||
change the color of heals for ergodicity
|
||||
have junk tech drop frequency to 0 after showing up once
|
||||
how to communicate that to player?
|
||||
console message
|
||||
|
||||
look into improving mouse lag with pointer lock?
|
||||
https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
|
||||
https://www.vsynctester.com/game.html
|
||||
https://news.ycombinator.com/item?id=26530272
|
||||
|
||||
clarify dielectric polarization text / graphics
|
||||
|
||||
tech - gain all the tech you didn't take on the last selection menu
|
||||
normally 2, but synergy with cardinality - 4, and 0 with determinism
|
||||
frequency to 1
|
||||
|
||||
should blocks block mob vision?
|
||||
mobs will attack player in the starting room though...
|
||||
Matter.Query.ray(map, this.position, this.mPosRange()).length === 0 &&
|
||||
Matter.Query.ray(body, this.position, this.mPosRange()).length === 0 &&
|
||||
only negative is mobs will attack player in the starting room
|
||||
maybe make all doors to spawns somehow block vision
|
||||
maybe start in cloaking mode
|
||||
disable it a few cycles after level loads?
|
||||
or disable when player moves?
|
||||
***maybe just clear spawns away from the starting room***
|
||||
ok go through each map and find issues on each map
|
||||
**but first test he game with no block blocking vision**
|
||||
|
||||
|
||||
mob vision: look at player history
|
||||
build a new type of attraction for mobs
|
||||
|
||||
Reference in New Issue
Block a user